• 沒有找到結果。

Flash Translation Layer

在文檔中 固態硬碟結構偵測方法 (頁 17-20)

2. BACKGROUND

2.3  Flash Translation Layer

由於 NAND flash memory 與磁碟截然不同的物理特性:

erase-before-write,且其 erase 運算必須一次 erase 整個 block 而 write 運算 卻以較小的 page 為基本單位。因此無法直接採用與磁碟一樣的 in-place update,即被更新的資料不能於原來的記憶體位置上直接寫入,所以一般 常用於磁碟上的區塊裝置檔案系統無法直接使用在 NAND flash memory 上,如常見的 NTFS 檔案系統與 FAT32 檔案系統等。因此以 NAND flash memory 為基礎的儲存裝置會採用 out-of-place update,並透過 flash translation layer (FTL)來將 NAND flash memory 儲存裝置模擬為與硬碟相 容的區塊裝置,讓使用者可以在上面運行常見的磁碟檔案系統。其中,

FTL 最主要的二項功能分別為 address translation 與 garbage collection。

由於 out-place update 的方式下,隨著檔案不斷的被更新,資料在 NAND flash memory 中的儲存位置會不斷的改變,所以 FTL 採用固定的 logical address 來定址,並採用 address translation 機制進行 logical address 與 physical address 之間的轉換,如下圖所示,FTL 會將 host 端所傳來的 logical address 進行 address translation 以得到真正對應於 NAND flash memory 中的 physical address,接下來才能對 SSD 底層的 NAND flash memory 實際進行讀取或寫入資料的動作。而根據 address translation 的管 理單位,可分為 page-level mapping 與 block-level mapping 二種,而以 page-level mapping 的方式中,FTL 以最小的存取單位進行 address translation,雖然擁有非常彈性的空間管理方式,但是卻需要非常大量的 RAM 來存放 address translation 時所用的 mapping table。由於成本與耗電 量考量,page-level mapping 較少被應用於實際產品中。

圖表 3 : FTL

在 block-level mapping 的機制中,FTL 以 erase 運算的基本單位做為其

address translation 的基本單位。因此 logical address 會被進一步切割為 logical block number 以及 logical page number,並在 mapping table 中以 block 為基本單位進行對應;一個 logical block 可以對應到 flash memory 中的一個 physical block,我們稱此 physical block 為 data block。但與 page-level mapping 彈性的管理方式不同,block-level mapping 中一個 data block 內部的 pages 必須依照 logical address 循序的被儲存。而由於

block-level mapping 的管理單位較大,可以明顯降低 mapping table 的大 小,並解決 RAM 空間需求量過大的問題,因此目前被廣泛使用在各種 NAND flash memory 儲存系統的 FTL 中。在接下來對 SSD 的測試中也將 以 block-level mapping 的產品為主。

另外 block-level mapping 的 FTL 根據其 data block 與 log block 的對應關 係,大致上可分為 one-to-one mapping 與 many-to-one mapping 二種方式。

如下圖所示,在 one-to-one mapping 的方式中,一個 log block 只能儲存 一個 data block 的資料,也就是說每一個被更新的 data block 都會有自己 專屬的 log block 用來暫存更新資料。而 many-to-one mapping 的方式中,

則是全部的 data block 對應到同一個 log block,因此對任何 data block 寫 入的資料都將先被暫存於共用的 log block 中。

圖表 4 Mapping Scheme

由於以 out-of-place update 的方式寫入資料,許多已經無效的資料會散布 於各個 data block 與 log block 內,因此便需要 garbage collection 來回收這 些被佔用的可用空間。而 garbage collection 會挑選適當的 block 來進行 erase,以回收此 block 內部被無效資料佔據的空間,而當要被 erase 的 block 內部還有有效資料時,便需要 merge operation 來將這些有效資料在 block 被進行 erase 之前先搬移到別的 block 中,以免在 erase 之後有效資料遺 失。

而在 block-level mapping 的 FTL 中,通常 FTL 會選擇一個 log block 與其 對應的 data block 進行 merge operation,並將其內部分散的有效資料還原 為以邏輯位置循序儲存並皆為有效資料的新 data block。根據進行 merge operation 之情況,一般將其回收方式分為 full merge、partial merge 與

switch merge 三類,其中 full merge 如下圖(a)所示,FTL 會將 log block 與 data block 內部的有效資料以邏輯順序複製到一個 free block 中,接著便 對 data block 與 log block 進行 erase,在所有的有效資料都被複製之後 free block 即成為新的 data block,而 full merge 之成本為讀取並寫入整個 logical block 內所包含的 pages,並進行二次的 erase 運算,才能回收到一 個 block 的空間。

(b) Partial Merge

Page 0

(c) Switch Merge Eras

而 partial merge 則如圖(b)所示,若 data block 內的資料是由第一個 page 開始被更新時,此時只需要簡單的先將 data block 內剩餘的 pages 循序的 複製到 log block 內,log block 便成為新的 data block,接著對 data block 進行 erase 運算。而 partial merge 之成本為複製 data block 內存有有效資 料的 pages,並只要進行一次 erase 運算就可以回收一個 block 的空間。

如圖(c)所示,switch merge 為最理想的 merge operation,當 data block 內 的資料完全以循序方式更新時,此時 data block 內部完全為無效資料因此 可以直接進行 erase 運算,而 log block 也可以直接作為新的 data block,

因此不用進行任何資料複製即可回收到一個 block 的空間。

對於 SSD 等 NAND flash memory 儲存裝置而言,其造成讀取或寫入效能 明顯降低的主要原因,即為 merge operation 時進行有效資料複製的讀取 與寫入成本,以及耗時的 erase 運算。

在文檔中 固態硬碟結構偵測方法 (頁 17-20)