// 아직 작성중..
DFTL
DFTL은 hybrid mapping의 단점을 극복하기 위해서 등장하였습니다. Hybrid mapping에 해당하는 FAST와 BAST는 full-merge를 수행해야하는데, full merge는 erase 작업을 반드시 수반하게 됩니다. 그렇기 때문에 DFTL은 page-level mapping을 사용하되, page-level mapping이 페이지 테이블이 메모리를 많이 차지하는 단점을 해결하기 위해 NAND Flash에 페이지 테이블을 저장하고 자주 액세스 되는 매핑 정보만 SRAM에 캐싱하여 요청이 올때마다 load/unload를 수행합니다. 이는 저장장치에 들어오는 요청은 결국 같은 요청이 반복되는 temporal locality가 높기 떄문에 이러한 방식을 사용합니다.
Architecture
DFTL은 Cached Mapping Table (CMT)와 Global Translaion Directory(GTD)로 구성됩니다. CMT는 매핑 테이블 중 SRAM에 저장한 부분이며, GTD는 플래시에 translation page의 주소를 저장하는 부분입니다. 요청된 매핑정보가 CMT에 존재하는 경우, 그 정보를 이용해 바로 redad/write을 수행합니다. 하지만 SRAM에 저장되지 않은 경우 translation page에 저장되어있는 매핑 정보를 CMT로 fetch합니다. 이를 위해 CMT내의 매핑정보를 victim으로 설정 후 제거합니다.
Example
먼저 'Read D_LPN 1280'라는 요청이 있다면, LPN 1280이 CMT내에 존재하는 지 확인합니다. 위의 예시에 CMT내에 존재하지 않기 때문에 가장 오래된 매핑 정보를 victim으로 선정합니다. 그 후 해당되는 translation pge M_ppn 21을 업데이트하기 위해 free translation page에 write후 GTD를 수정합니다. (M_VPN = D_LPN / 512 = 0이므로 M_VPN 0의 21을 업데이트하며, 이때 각 페이지는 512개의 map entry를 포함합니다.)
업데이트를 완료했다면 victim으로 선정했던 매핑정보를 삭제하며 원래 요청이었던 D_LPN 1280은
Garbage Collection
Performance
DFTL의 성능은 workload에 따라 다른 모습을 보입니다.
random write workloads: pure page-level FTL > DFTL > FAST
read dominant workloads: FAST > DFTL
'Storage' 카테고리의 다른 글
[FTL] BAST, FAST (0) | 2022.01.10 |
---|---|
FTL (0) | 2022.01.09 |
Data Deduplication (0) | 2021.12.21 |
Wear Leveling (WL) (0) | 2021.11.27 |
댓글