What kind of applications can be used for simultaneous Read/Write of flash memory?
The Cypress Simultaneous Read/Write flash parts – the JL-J, PL-J, CD-J and CL-J families – contain multiple flash banks that enable code execution from one bank while programming or erasing is in progress on another bank. This enables systems to be designed with minimal RAM density to support heap and stack, while the ROM-able code can execute in place (XiP) from flash. While XiP is also possible from single-bank flash, multi-bank flash allows simultaneous data storage to happen easily and efficiently on another bank without impacting the availability of the primary application.
A flash bank is a group of sectors that become busy when an embedded operation – specifically a flash program or erase operation – is in progress on that bank. While the array contents can be read from the flash before the embedded operation starts, the array contents are no longer visible once the embedded operation starts and the flash becomes “busy”; in this case, flash reads return “status” data instead of flash data. This means XiP code running from a single-bank flash must stop and execution control must be passed to RAM-resident code while the flash bank is busy. Normally, this means the RAM-resident code is waiting for the embedded operation to complete – 100s of microseconds for flash program or milliseconds for flash erase – while the primary application is not running. A multi-bank flash solves this problem by allowing the XiP code to run from one bank, while flash operations are in progress on another bank. This means that the primary application is available 100% of the time, even if data storage operations are in progress.
Most Cypress flash memory products contain a single flash bank. The following table lists the Cypress Simultaneous Read/Write flash parts, shows how many flash banks are present and lists the allowed operations on each bank:
Allowed Simultaneous Operations
2; One small, one large
Read from the large bank while the small bank is busy
Read from any non-busy bank while up to two banks are busy