SSD FTL设计:
首先这里讲的是ALL-Dram的一种GC设计, 我们采用L2P+P2L的模式去collect valid data。
这里吧GC分成几个步骤:
1. select src(一般情况是找到valid data 最少的Block)。
2. Load/rebulid P2L (这里采用P2L设计,自然要先Load P2L)。
3. Collect valid data (通过对比L2P和P2L去找到Valid data)。
4. Program valid data (把valid data写到dest open)。
5. Updata L2P (更新dest open data addr)。
6. Search L2P (是否有Uecc,需要search,这个步骤可能没有)。
7. release src blk (释放所有的src)。
下面依次展示每个步骤:
1):
这里有三个Block,分别是BLK0、BLK1、BLK2,它们的Valid Data分别是5、2、8,显然需要选择BLK1当成Src BLK。
2):这里假设每个Page是4个4K单元组成,那么把Page0~Page255的addr存放在Page 255的倒数第二个4K单元,刚刚合适。