Jump to content

Flash memory controller

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Music Sorter (talk | contribs) at 09:25, 10 August 2010 (Initial creation of page). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

A Flash memory controller (or Flash controller) manages the data stored on Flash memory and communicates with a computer or electronic device. Flash memory controllers can be designed for operating in low duty-cycle environments like SD cards, CompactFlash cards, or other similar media for use in digital cameras, PDAs, mobile phones, etc. USB Flash drives use Flash memory controllers designed to communicate with personal computers through the USB port at a low duty-cycle. Flash controllers can also be designed for higher duty-cycle environments like Solid-state disks used as data storage for laptop computer systems clear up to mission-critical enterprise storage arrays.[1]

Initial setup

After a Flash storage device is initially manufactured, the Flash controller is first put to work formatting the Flash memory. This ensures the device is operating properly, it maps out bad Flash memory cells so they are not used to prevent any data loss, and it allocates spare cells to be substituted for future failed cells. Some part of the spare cells is also used to hold the firmware which operates the controller and other special features for a particular storage device. A directory structure is created to allow the controller to convert requests for logical sectors into the physical locations on the actual Flash memory chips.[1]

Reading, writing, & erasing

When the system or device needs to read data from or write data to the Flash memory it will communicate with the Flash memory controller. Simpler devices like SD cards and USB Flash drives typically have a small number of Flash memory die connected simultaneously. Operations are limited to the speed of the individual flash memory die. In contrast, a high-performance Solid-state drive will have as many as 100 or more die organized in a matrix with parallel communication paths to enable speeds at many times faster than is possible to a single Flash die.[citation needed]

Wear-leveling & block picking

If a particular Flash memory block were programmed and erased repeatedly without writing to any other blocks, the one block would wear out before all the other blocks thereby prematurely ending the life of the SSD. For this reason Flash controllers use a technique called wear leveling to distribute writes as evenly as possible across all the flash blocks in the SSD. In a perfect scenario this would enable every block to be written to its maximum life so they all fail at the same time.[2]

Garbage collecting

Once every block of an SSD has been written one time, the SSD controller will need to return to some of the initial blocks which no longer have current data (also called stale blocks). The data in these blocks were replaced with newly written blocks and now they are waiting to be erased so that new data can be written into them. This is a process called garbage collection (GC). All SSDs will include some level of garbage collection. The only question is when and how fast it will operate.[3]

References

  1. ^ a b "Flash Memory Guide" (PDF). kingston.com. Retrieved 10 August 2010.
  2. ^ Chang, Li-Pin (2007-03-11). "On Efficient Wear Leveling for Large Scale Flash Memory Storage Systems". National ChiaoTung University, HsinChu, Taiwan. Retrieved 2010-05-31.
  3. ^ "SSDs - Write Amplification, TRIM and GC" (PDF). OCZ Technology. Retrieved 2010-05-31.