Super blocks are the main units of allocation used within the SEF API. By default, super blocks span all the dies within a single virtual device. However, the size of the super block may be changed prior to creating any QoS Domains. The number of super pages in a super block is fixed and is the same as the number of pages in a flash die. The size of a super block, however, is dependent on the configuration of the virtual device that it resides in. A super block can only be a member of a single QoS domain at any point in time. A super block can only be assigned to a different QoS domain after it has been released.
When an erase or allocation occurs within a QoS domain, it is performed in units of super blocks.
Super Block Management Commands
Super block management commands consist of three functions:
Super block data commands consist of the commands
Copy. Each command affects
state conditions of the super block. Figure 6 shows the state
transitions regarding super blocks.
Super blocks are allocated either explicitly by the
Allocate command, or implicitly by the
command. When the reserved flash memory address SEFAutoAllocate
is specified in a
Write command, SEF will check if a super block has been allocated for the
corresponding placement ID; if not and the QoS domain has not exceeded its capacity limit, a
new super block will automatically be allocated and assigned to the placement ID. When a
command with the reserved flash memory address extends past the end of the current automatically
opened super block, a new super block will be allocated (assuming the capacity limit is not exceeded)
once the current super block is filled.
The host does not need to erase super blocks. When the defect strategy is packed or fragmented, the apparent size of the super block may shrink after it is erased. This affects SEFWriteWithoutPhysicalAddress, SEFGetSuperBlockInfo and SEFAllocateSuperBlock The number of available ADUs may also shrink as the super block is programmed.
Figure 6: Super Block State Transitions
Free is the initial state for super blocks.
Free super blocks belong to the free pool owned by a
Closed super blocks transit to
Free upon the Release command.
This is the state of super blocks in the middle of being programmed.
Free super blocks transit to
Open by either the Allocate or Write Without Physical Address command.
There are two sub-states of the
Open for Write Without Physical Address: A super block dedicated to SEFWriteWithoutPhysicalAddress. The su- per block transits to this state via a Nameless Write command without explicit super block ID. The number of super blocks that can exist in this state is determined by the
placementIDparameter at the time of creation for a QoS domain.
Open by Erase: A super block opened by the super block management command SEFAllocateSuperBlock. This super block can be used as a destination for Nameless copy and by Nameless Write by specifying an explicit super block ID. This is the only way to write to a pSLC super block.
This is the state of super blocks which retain effective data after all Super Pages have been
Open super blocks transit to
Closed by either a Nameless Write command, a
Nameless Copy command, an explicit Close command, an explicit Flush command or a device-
initiated automatic flush or close.