Conventional file systems like FAT, UFS, HFS, ext 2 and NTFS were originally designed for magnetic strips and as such rewrite data repeatedly to the same area. However, a solid-state Compact Flash (CF) card can be put through a limited number of erase cycles before becoming unreliable. This is usually around 3,000/100,000(MLC/SLC) cycles. Wear levelling works around these limitations by spreading erasures and re-writes across multiple blocks. In this way, no single block is subjected to constant read/writes.
In this white paper we will present the wear levelling process for prolonging the lifespan of the OEM grade CF card used within Solid State Disks Ltd’s (SSDL’s) SCSIFlash™ solid-state drive to assist in preventing read disturbance.
How the SCSIFLASH™ CF card Wear Levelling architecture and technology prolongs SSD lifespan and prevents read disturbance
The SCSIFlash™ drive uses CF cards which use a combination of two types of wear levelling – dynamic and static – to distribute write cycling across the memory blocks. Both types of wear levelling use a map to link Logical Block Address (LBAs) from the operating system (OS) to the physical Flash memory. Static wear levelling, however, differs in that static blocks that do not change are periodically moved so that low usage cells are able to be used by other data.
System Buffer Blocks and Dynamic Wear Levelling
Because Flash blocks can’t be overwritten, some spare blocks need to be reserved for temporary data buffering. These spare blocks can be used for other firmware purposes. In this white paper, we shall refer to these as ‘system buffer blocks’.
The simplest way to perform wear levelling is to recycle the programmed block (Block N in Figure 1) with the blocks in the system buffer block list. If the host wants to overwrite Block N, the first block in the system buffer block would be used to replace Block N. Block N would be erased and put into the system buffer block list.
In the worst-case scenario, the host keeps writing data to Block N while the system buffer blocks are used frequently, and the other data blocks are not used at all. All system buffer blocks would be worn out after a period that can be approximated by the following formula:
((# of system buffer blocks + 1) * Endurance).
This type of process is referred to as Dynamic Wear Levelling. It is not sufficient to only use dynamic wear levelling for solid-state drives as some operating systems run continuous background data swaps. The erase count would increase significantly in a short period of time. Accordingly, static wear levelling must be added to the architecture.
Static Wear Levelling
An innovative technology is adopted within the static wear levelling process to spread the program/erase count evenly on all blocks. Wear levelling performance frequency can be configured by customers in the .INI file. The variable name is Wear Level Frequency.
The wear levelling is run in the background. The internal microcontroller increments a wear levelling counter whenever a block-erase is done. If the counter hits the defined wear levelling frequency, the controller initiates block swapping. See Figure 2.
The controller checks if the erase count on the block indicated by the pointer is less than the average erase count. If it is less, it means the block is a less frequently used. It is therefore suitable to swap the block with a system buffer block, as system buffer blocks are generally more frequently used. If the erase count of the checked block is higher than average, the controller will move the pointer and check the next block. It will keep doing this until an eligible block is found. See figure 3.
This is an anomaly of Flash IC and occurs when one or more bits are changed during a read operation. Read disturbance errors occur within the block being read, but on a page or pages other than the page being read. Performing a very high number (thousands or millions) of read accesses on individual pages before an erase command for the block containing those pages can exacerbate this error.
The firmware of the industrial grade CF cards used within the SCSIFlash drive is designed to resolve this issue by wear levelling and refresh (re-charges).
The wear levelling feature not only spreads the program/erase count evenly on all blocks, but it can also reduce the read access frequency to prevent read disturbance, by reprogramming the data to different block. Alternatively, Error Correcting Code (ECC) can detect and fix the data where the electrical properties may have been altered by refresh. When error bits in a block reach a threshold of say 17 error bits out of 24 bits, the block is automatically refreshed. i.e., the data is deleted and re-written. This stops the controller from constantly reading blocks with too many error bits and thus prevents read disturbance.
The Industrial grade CF cards used within the SCSIFlash drive wear levelling architecture and technology delivers an innovative method of spreading write/erase operations on a solid-state CF card evenly across blocks.
By using system buffer blocks along with sophisticated block swapping and a configurable wear levelling performance frequency setting the life of the CF card can be prolonged and read disturbances prevented.
The industrial grade Compact Flash cards used within the SCSIFlash drive support wear levelling architecture and are a solution for read disturbance.
Download the pdf version of this white paper here