快閃記憶體轉換層
快閃記憶體轉換層(Flash Translation Layer),是對快閃記憶體檔案系統讀、寫、抹除操作的管理。
快閃記憶體的硬體特性
[編輯]快閃記憶體(Flash Memory)具有以下的硬體特性:
- 一個記憶單元經過寫入(program),將可由邏輯1變成邏輯0,但無法再經由寫入將此單元回復到邏輯1,需經過抹除(erase)才可回復邏輯1。
- 一般快閃記憶體中抹除的最小單位稱為塊,讀取(read)和寫入的最小單位稱為區,一個塊的大小遠大於一個區。
- 抹除的操作時間一般大於讀取和寫入的操作時間。
因為以上的硬體特性,快閃記憶體的寫入往往需要耗費大量的時間在抹除操作上。因此在快閃記憶體檔案系統中,會經由快閃記憶體轉換層(Flash Translation Layer)來進行對讀、寫、抹除操作的管理。
一般快閃記憶體轉換層需要包含的功能有:
- 邏輯位址到實體位址的對映
- 斷電回復(Power-off recovery)
- 耗損平均(Wear-leveling)
快閃記憶體轉換層(Flash Translation Layer)中最核心的部分,是邏輯位址到實體位址的對映表。由快閃記憶體的硬體特性可知,一個已寫入的區,需經過抹除後,方可再寫入(reprogram)新的資料。然而,抹除的最小單位塊卻遠大於寫入的最小單位區,即使只是想要更新一個塊當中某一個區的資料,我們仍需要做整個塊的抹除。此時,若想要儲存此塊中其他區的資料,則需要在抹除前事先搬移到其他塊,假設有n次搬移需進行,則將再花費n次讀取以及n次寫入的操作,耗費相當多的時間。
因此,快閃記憶體轉換層中運用了邏輯位址到實體位址的對映表,當某個邏輯區所對應到的物理區中已寫入資料時,FTL會將此寫入資料導向到另外一個空的物理區當中,並將此logical與物理區的對應關係,更新到對映表當中。若要讀取此邏輯區的資料時,FTL會根據對映表當中的資訊,找到所對應的物理區。
在實作上,邏輯位址到實體位址的對映的設計將決定對快閃記憶體的操作效率。其中,若抹除的次數越多,則快閃記憶體檔案系統的效能將會越差。另外,在嵌入式的應用中,許多設計是將對映表存放在RAM中,因此對映表的大小也是在設計時的考量重點。
依照位址對映設計方式的不同,可分成以下三大類:
- 區對映
在區對映的方式中,每一個邏輯,都可以對應到一個物理區。此方式具有最好的快閃記憶體存取效率,但缺點是對映表的大小將會很大。對於嵌入式的應用而言,RAM是昂貴的資源,越大的對映表,將導致越高的成本。
- 塊對映
在塊對映的方式中,每一個邏輯塊對應到一個物理塊。在塊對映方式中,對映表只記錄了邏輯塊和物理塊的對應資訊,因此對映表的大小減少很多。而要找到一個邏輯區所對應到的物理區時,只要找到在對應的物理塊中同樣偏移量的位置即可。
- 混合對映
在混合對映的方式中,同時使用了塊對映與區對映的方式。
- ^ A survey of Flash Translation Layer, Tae-Sun Chung,Dong-Joo Park, Sangwon Parkc, Dong-Ho Lee, Sang-Won Lee, Ha-Joo Song, Journal of Systems Architecture 55 (2009) 332–343] (PDF). Journal of Systems Architecture. 2009. (原始內容 (PDF)存檔於2020-09-21).