FTL算法的好壞,直接決定了SSD在性能(Performance)、可靠性(Reliability)、耐用性(Endurance)等方面的好壞,F(xiàn)TL可以說是SSD固件的核心組成。
大家天天在說FTL,也知道FTL的重要性,那么什么是FTL?FTL是Flash Translation Layer的縮寫,完成主機(jī)(或者用戶,Host)邏輯地址空間到閃存(Flash)物理地址空間的翻譯(Translation),或者說是映射(Mapping)。SSD每把一筆用戶邏輯數(shù)據(jù)寫入到閃存地址空間,便記錄下該邏輯地址到物理地址的映射關(guān)系,下次主機(jī)想讀取該數(shù)據(jù),SSD根據(jù)這個映射,便能從閃存上把這筆數(shù)據(jù)讀上來然后返回給用戶。
完成邏輯地址空間到物理地址空間的映射,這是FTL最原始也是最基本的功能。事實上,現(xiàn)在SSD中的FTL,要做的事情還有很多。SSD使用的存儲介質(zhì)一般是NAND Flash。
SSD的存儲介質(zhì)除了Flash,還有RAM,還有3D XPoint等新型存儲介質(zhì)。如無特別說明,后面說的SSD存儲介質(zhì)都是指NAND Flash,翻譯為“閃存”。
閃存有一些特性,比如:
l 閃存塊(block)需先擦除才能寫入,不能覆蓋寫(Update in place);
由于不能覆蓋寫,當(dāng)寫入一筆新的數(shù)據(jù),不能直接在老地方直接更改(閃存不允許在一個閃存頁(page)上重復(fù)寫入,一次擦除只能寫入一次),必須寫到一個新的位置,因此,F(xiàn)W(Firmware,固件)需要維護(hù)一張邏輯地址到物理地址的映射表;另外,往一個新的位置寫入數(shù)據(jù),會導(dǎo)致老位置上的數(shù)據(jù)變成無效,這些數(shù)據(jù)就是垃圾數(shù)據(jù)。垃圾數(shù)據(jù)會占用閃存空間,當(dāng)閃存可用空間不夠時,F(xiàn)TL需要做垃圾回收,即把若干個閃存塊上的有效數(shù)據(jù)搬出寫到某個新的閃存塊,然后把這些閃存塊擦除,得到可用的閃存塊。這就是GC(Garbage Collection,垃圾回收),是FTL需要做的一件重要事情。
l 閃存塊都是有一定壽命的;
每擦除一次閃存塊,都會對閃存塊有磨損,因此閃存塊都是有壽命的,用PE(Program/Erase Count)數(shù)衡量。我們不能集中往某幾個閃存塊上寫數(shù)據(jù),不然這幾個塊很快就會因PE耗盡而死亡,這不是我們想看到的。我們期望所有閃存塊都來均攤數(shù)據(jù)的寫入,而不是有些塊累死,而其他塊眼瞅著那些閃存塊死亡而無動于衷;FTL需要做Wear Leveling,讓數(shù)據(jù)寫入均攤到每個閃存塊上,即讓每個塊磨損都差不多,從而保證SSD具有最大的數(shù)據(jù)寫入量。
l 每個閃存塊讀的次數(shù)也是有限的,讀的太多了,上面的數(shù)據(jù)也是會出錯,也就是讀干擾(Read Disturb)的問題;
FTL需要處理讀干擾問題,當(dāng)某個閃存塊讀的次數(shù)快達(dá)到一定閾值時,F(xiàn)TL需要把這些數(shù)據(jù)從該閃存塊上搬走,從而避免數(shù)據(jù)出錯。
l 還有就是閃存的數(shù)據(jù)保持(Data Retention)問題;
由于電荷的流失,存儲在閃存上的數(shù)據(jù)會丟失。這個時間長則十多年,短則幾年甚至幾月,甚至更短。(這是在常溫下,如果高溫的話,電荷流失速度會加快,數(shù)據(jù)保存的時間就更短了。)
如果SSD不上電,F(xiàn)TL對此也是毫無辦法,有勁使不出呀(根本沒有運行機(jī)會)。但一旦上電,F(xiàn)TL就需要對此做點什么,比如掃描閃存,發(fā)現(xiàn)是否存在數(shù)據(jù)保持問題,如果存在,則需要搬動數(shù)據(jù),防患于未然。好的FTL,就需要有處理數(shù)據(jù)保持問題的能力。
l 閃存天生就有壞塊,另外,隨著SSD的使用,也會產(chǎn)生新的壞塊;
壞塊的癥狀是擦寫失敗,或者讀失?。‥CC不能糾正數(shù)據(jù)錯誤)。壞塊管理也是FTL的一大任務(wù)。
l 對MLC或者TLC來說,存在Lower Page corruption的問題;
即在對Upper Page/Extra Page (和Lower Page共享存儲單元的閃存頁)寫入時,如果發(fā)生異常掉電,也會把之前Lower Page上成功寫入的數(shù)據(jù)破壞掉。好的FTL,應(yīng)該有機(jī)制盡可能避免這個問題;
l MLC或者TLC的讀寫速度都不如SLC,但它們都可以配成SLC模式來使用。
好的FTL,會利用這個特性,去改善SSD的性能和可靠性。
上面說的這些問題是閃存的共性,對不同的閃存,還有其自身的問題。FTL除了完成基本的地址映射,還需要幫閃存擦屁股,去做垃圾回收(GC)、磨損平衡(Wear Leveling)、壞塊管理、讀干擾(Read Disturb)處理、數(shù)據(jù)保持(Data Retention)處理等事情。隨著閃存質(zhì)量變差,F(xiàn)TL除了完成上述的常規(guī)處理,還需要針對具體閃存特性,去做一些特殊處理以獲得好的性能和高的可靠性。
FTL有Host Based和Device Based兩種:
Host Based的意思是說,F(xiàn)TL的實現(xiàn)是在Host(主機(jī))端的,用的是你計算機(jī)的CPU和內(nèi)存資源。
除了大名鼎鼎的Fusion-IO使用Host Based FTL,據(jù)我所知,業(yè)界還有方一信息科技、寶存、CNEXLabs等公司在做Host Based FTL。
相反,Device Based的意思是說FTL是在Device(設(shè)備)端實現(xiàn)的,用的是SSD上的控制器和RAM資源。
-
閃存
+關(guān)注
關(guān)注
16文章
1789瀏覽量
114949 -
存儲介質(zhì)
+關(guān)注
關(guān)注
0文章
25瀏覽量
11930 -
SSD
+關(guān)注
關(guān)注
21文章
2863瀏覽量
117459
原文標(biāo)題:SSD核心技術(shù):FTL
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論