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