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