Electronic – Why does the QUAD INPUT PAGE PROGRAM OPERATION command exist

flashspi

While reading the datasheet for the IS25LP512M series of Flash devices from ISSI I came across this weird command, 32h/38h called "QUAD INPUT PAGE PROGRAM OPERATION" (in section 8.11) with the following timing diagram:

32h/38h Diagram

This command seems very odd as it only uses the least significant bit of the data bus to transfer in the command and address, in contrast to all the other QSPI commands (as far as I can tell) like 02h, "Page Program Sequence In SPI Mode" which transfers the command and the address over all the data lines at the same time:

02h Diagram

It seems like it would a pain to implement this command on the Flash device and on the Master side.

Googling "32h flash memory" and looking through the results it seems like there are a number of other chips that implement this command, GD5F4GQ4UAYIG, S25FL-S, W25M321AV ect… So I assume it is from some kind of standard. (though it looks like the JEDIC Common Flash Memory Interface standard does not cover commands).

Where did this command come from? Who uses it? Why does it exist?

Best Answer

Those Flash ROMs can be operated in a number of ways: single, dual and quad data lines. The more lines you use, the faster is the reading or writing process for a larger amount of data. There are even more modes available, this specific device supports 27 (at least if I counted correctly) different read commands, all with their special number of address bytes, speeds and number of outputs.

Typically, the devices start up in the simplemost mode, which is single input/output and have to be configured to use any of the other modes. There are two ways how this can be accomplished:

First, the device can be switched to e.g. quad line mode, and then all subsequent commands and data are transmitted in parallel on four lines. Obviously, this is the fastest possible mode, but also requires a complex controller - it has to start in single line mode, configure the device to quad line (QPI mode) and then send commands on four lines.

This is the point where the commands 32h and 6bh come into play: Here all commands are transmitted as one line, and only data is transmitted on four lines. This allows for a simple controller: All commands are always sent on a single line and there is no need to switch modes. Data, on the other hand, is transmitted on all lines. This allows the device to reach almost the same speed as in QPI mode - the actual difference is small, as e.g. reading requires several dummy cycles until data is available.