• 沒有找到結果。

Chapter 2 RELATED WORK

2.2 FTL

Block 0 Block 1

… NAND Flash Memory

DATA AREA

Page

SPARE AREA

圖(1) flash geometry

2.2 FTL

由於快閃記憶體是採用 out place update ,一筆資料真正位置會隨著更新而一直 變動,所以原本常用於一般硬碟的上的檔案系統,例如 NTFS 或是 FAT32 並沒 有辦法直接使用在快閃記憶體上,所以必須透過 flash translation layer(FTL)[7,8]

5

來將快閃記憶體儲存裝置模擬成與硬碟相容的裝置,讓使用者可以在上面運行硬 碟常用的檔案系統,如圖(2)。FTL 最主要的兩個功能即為位置的轉換和 Garbage collection。

Operation System

File System

Flash Memory

Application 0 Application 1 Application n

Flash Translation Layer

Address Translation Garbage Collection

MTD

Host

Device

圖(2)系統架構

由於快閃記憶體寫入的單位是 page,而 erase 的單位是 block,所以也衍生出了 page level 和 block level 兩種不同的位置轉換對應。Page level 的對應是屬於 fine grain 的對應方式如[9][10]就採用此對應方式,它可以充分的使用快閃記憶體的 空間,可將一個由 host 端傳來的 logical address 對應到任何一個快閃記憶體的實 體 page 上,但是它必須記錄每個 page 對應的位置,所以 page level 對應的 mapping table 需要很大的空間 ,見圖(3.a),所以 page level 對應比較少用在實際的產品 上。

6 Page-level

Mapping Table

Block 0

Block 1 0 , 3

1 , 2

1 , 1

0 , 0

Block-level Mapping Table

Block 0

Block 1

Block 2 0

2 1

圖(3.a) page level mapping 圖(3.b) block level mapping

為了解決 page level 對應所使用的 mapping table 太大的問題,我們需要 coarse grain 的對應方式,block level 對應即是以 block 為單位來對應,大幅縮小的 mapping table 的大小,見圖(3.b)。block level 對應會將 logical address 切割成兩 部分,一個是 logical block address,另一個是 block offset。Logical block address 會 對應到一個快閃記憶體的實體 block,該 block 稱為 data block,而 block offset 會指出要將該 address 對應到 data block 的哪一個 page。如果寫入 data block 時已 經有 data,這時會配置對應的 log block 來提供更新資料的寫入同樣的 block offset 位置。但是 block level 的對應當有較小資料寫入時,會有空間碎裂和區塊使用率 低落的問題。

因此還有結合 block level 和 page level 對應的 hybrid 的對應方式。在 data block 上的對應是採 block level 的對應,而更新 data block 的資料時則會採用 page level 對應的方式,來改善 log block 使用率低的問題。另外也有其他的更具彈性 data log block 對應的方式,可自由調整 data block 和 log block 的對應比例[11][12]。

本篇論文中所使用的 FTL Block Chain [5],FAST[13],NK[14]都是 hybrid 的對應 方式,原始資料和 data block 的對應皆是採用 Block level 的對應方式,而更新 的資料則會以 page level 的對應方式儲存在 log block 上,他們的不同之處就在於 data block 和 log block 的對應比例。Block Chain 為一個 log block 只能接受一個 data block 的更新資料,一個 data block 可擁有固定數量的 log block 來存放更新 資料。FAST 則是所有讓所有的 data block 共用所有的 log block,一個 log block 可接受來自各個 data block 的更新資料。而 NK 則可以有彈性的調整 data block 和 log block 的對應關係為 N:K。

7

相關文件