determined by checking the states of all pages updated
by the transaction. But, it is costly to track the state of
each page because it requires the tracking metadata to
be updated when the page is updated.
Instead of using such costly page-level tracking,
LightTx tracks the transaction state at the block-level.
LightTx tracks the states of blocks, and then identifies the
state of each page to determine the state of a transaction.
In traditional flash-based SSDs, flash blocks have three
different states: free, available and used. A free block has
all pages clean. An available block is currently used for
allocation. A used block has all pages written and cannot
be used for allocation before it is erased. To differentiate
the transactional states of pages, the used blocks are
further divided into unavailable and checkpointed blocks
in LightTx. All pages in a checkpointed block belong
to dead transactions. The pages in an unavailable block
belong to dead, checkpointing or active transactions.
States of these pages are further identified using the
commit protocol. In this way, the states of transactions
can be determined by tracking the states of blocks and
identifying the states of pages using the block states.
3.3.2 Block Zones and Zone Sliding
To further reduce the tracking cost, LightTx tracks different
flash blocks using different zones. A zone is a logical
group that indicates the addresses of its flash blocks.
Block Zones. The observation that motivates us to use
block zones to reduce the tracking cost is the out-of-place
update property of flash-based storage. In flash-based
storage, a new write causes an out-of-place update: the
data is written to a new physical page in a free flash
block (i.e., one that has free pages), and the page containing
the old block is invalidated in the FTL mapping
table. Since new pages are sequentially allocated from
free blocks, it is possible to track the recently updated
data by tracking the recently allocated flash blocks. Since
transactions have birth and death as shown in Figure 1,
live transactions (see Figure 1) are more likely to reside
in recently allocated flash blocks.We use this observation
to keep the states of flash blocks in the FTL in a way that
assists the identification of the states of transactions.
A challenge is that one flash block may contain transactions
of different states because different transactions
may update pages in the same flash block (this is a
consequence of designing the system so that we can
maximize the internal parallelism of the SSD). As a result
of this, there is not a one-to-one correspondence between
the state of a block and the state of its transactions.
In order to differentiate blocks, we divide blocks into
different zones based on each block’s state. The flash
blocks in our system can be in one of the four states
(zones):