SSD之FTL技術(shù)

FTL是個啥?

??FTL指Flash Translation Layer(閃存轉(zhuǎn)換層)固惯,這玩意兒的本職工作是完成Host的邏輯地址到Flash的物理地址的轉(zhuǎn)換厂抽。
??controller每把一筆數(shù)據(jù)寫入Flash中時,便會記錄下該數(shù)據(jù)的邏輯地址到物理地址的映射關(guān)系狈惫,這樣當(dāng)Host想要讀取這筆數(shù)據(jù)時就會根據(jù)這個映射讀取到真實的數(shù)據(jù)狭归。

首先說明一下閃存的特性:

 1.  閃存塊需要先擦除才能寫入夭坪,不能覆蓋寫。
 2.  閃存塊是有壽命的过椎。每擦除一次壽命便會減少一點室梅。
 3.  閃存塊的讀取次數(shù)是有限的。讀的次數(shù)多了會造成讀干擾問題疚宇。
 4.  閃存的數(shù)據(jù)保持是有時限的亡鼠。高溫時數(shù)據(jù)保持時間會縮短。
 5.  閃存天生就會有壞塊敷待。使用過程中會產(chǎn)生新的壞塊间涵。
 6.  MLC和TLC 會有 lower page corruption的問題。

??針對閃存的以上特性榜揖,F(xiàn)TL在完成本職工作邏輯地址到物理地址轉(zhuǎn)換的同時浑厚,還要具有十八般武藝:
??垃圾回收(Garbage Collection)股耽,磨損平衡(Ware Leveling)根盒,壞塊管理钳幅,讀干擾處理,數(shù)據(jù)保持處理等事情炎滞。

FTL十八般武藝之本質(zhì)工作---映射管理

??映射有基于塊映射敢艰、基于頁映射和混合映射。
??基于塊映射Host在讀寫小尺寸數(shù)據(jù)(隨機性能)時性能較差册赛,一般用在U盤中(ps:不要驚訝钠导,U盤中也用到FTL的),所以U盤不適合裝系統(tǒng)森瘪,適合用來讀寫大尺寸數(shù)據(jù)的數(shù)據(jù)傳輸用牡属。
??基于頁映射對小尺寸數(shù)據(jù)(隨機性能)有很好的性能,但是由于閃存的頁要比閃存塊多的多扼睬,需要更多的空間來存放映射表逮栅。為了追求更好的隨機性能(操作系統(tǒng)對這個很在意)所以SSD都采用頁映射。
??混合映射的性能介于上邊二者之間窗宇,當(dāng)然存放映射表所用的空間也介于二者之間措伐。
SSD內(nèi)部FW維護(hù)了一張邏輯地址到物理地址的映射表(Map Table)。用戶每寫入一個邏輯頁就需要更改一次MT军俊;當(dāng)讀取一個邏輯頁時侥加,SSD會查找映射表中該邏輯頁對應(yīng)的物理頁,然后再訪問Flash讀取所要的數(shù)據(jù)粪躬。
??一般映射的邏輯頁的大小為4KB担败,物理地址的大小為4Byte,那么一個256GB的SSD的映射表大小為:256GB/4KB*4B = 256MB镰官,也就是說映射表的大小是SSD容量的1/1024提前。
??為了存放這個映射表,SSD一般有兩種設(shè)計方案:DRAM(帶DRAM的)和DRAM-less(不帶DRAM的)朋魔。帶DRAM的一般會把緩沖數(shù)據(jù)和映射表統(tǒng)統(tǒng)存放在DRAM中岖研,優(yōu)點是查找更新映射表迅速,性能較好警检,劣勢是多了一個DRAM孙援,成本和功耗上升,當(dāng)前的主流SSD是該方案扇雕;DRAM-less的會將少部分的映射表放在片內(nèi)的SRAM上拓售,其余部分的映射表則會放在Flash中,這種方案好處是節(jié)省了DRAM的成本和功耗镶奉,但是讀寫Flash要比讀寫DRAM要慢得多础淤,所以速度上不如DRAM方案崭放,性能較差,當(dāng)前入門級的SSD多采用這種方案鸽凶。
??一個小問題:我們都知道DRAM掉電數(shù)據(jù)是會丟失的币砂,那么數(shù)據(jù)表怎么辦?
答案是在SSD掉電之前玻侥,它會把映射表寫入到Flash中去的决摧,下次上電初始化時需要重新把映射表讀出來放在DRAM或SRAM中。也就是說不管DRAM或DRAM-less凑兰,F(xiàn)lash中都需要儲存映射表的掌桩。

FTL十八般武藝之重要內(nèi)功---收垃圾(Garbage Collection)

??這年頭收垃圾也成特色技能了,還是重要內(nèi)功姑食。波岛。。哈哈
??垃圾回收音半,就是把某一個閃存塊上的有效數(shù)據(jù)讀出來则拷,寫入另一個數(shù)據(jù)塊中,然后擦除原來的閃存塊祟剔,使之可用隔躲。
??也許你會問,數(shù)據(jù)在原來的閃存塊上待的好好的物延,為什么要費事吧連的讀出來寫入另外的塊中呢宣旱?原因是原來閃存塊上的垃圾(無效數(shù)據(jù))太多了!如前文講道叛薯,閃存塊需要先擦除才能寫入浑吟,不能覆蓋寫。如果一個塊上只有一點點有效數(shù)據(jù)占著整個數(shù)據(jù)塊耗溜,那么就需要把有效數(shù)據(jù)搬移出來组力,把這個塊擦除掉使之變成可用狀態(tài),從而提高塊的使用率抖拴。
??也許你又會問燎字,為啥子數(shù)據(jù)會無效呢?原因還是因為閃存的特性導(dǎo)致的阿宅,為了延長每個閃存塊的壽命候衍,就需要均衡每個數(shù)據(jù)塊的擦除次數(shù),為了均衡每個數(shù)據(jù)塊的擦除次數(shù)洒放,數(shù)據(jù)寫入時候就需要均衡的寫入每個塊蛉鹿,而不能照著一個塊往死了寫。當(dāng)用戶空間里的數(shù)據(jù)寫滿后往湿,就需要把數(shù)據(jù)寫備用空間(SSD的實際容量都比標(biāo)稱容量大妖异,多出來的部分就是備用空間)惋戏,因為備用空間對操作系統(tǒng)是不可見的,那么每往備用空間寫一筆數(shù)據(jù)就會在用戶空間產(chǎn)生一筆無效數(shù)據(jù)(垃圾)他膳。
??江湖傳言:SSD越用速度越慢响逢。很不幸,這是真的矩乐,而且是有依據(jù)的龄句。新盤沒有垃圾可收,所以速度快散罕!用久了產(chǎn)生的垃圾就多了,就需要用內(nèi)功把垃圾逼出來傀蓉,當(dāng)然速度就慢下來了欧漱。

FTL十八般武藝之---磨損平衡(Ware Leveling)

??其實在垃圾回收的時候已經(jīng)提到磨損平衡的原因了:為了延長每個閃存塊的壽命,就需要均衡每個數(shù)據(jù)塊的擦除次數(shù)葬燎,為了均衡每個數(shù)據(jù)塊的擦除次數(shù)误甚,數(shù)據(jù)寫入時候就需要均衡的寫入每個塊,而不能照著一個塊往死了寫谱净。
那么窑邦,一個閃存塊的壽命有多長呢?
SLC:10萬次
MLC:1~10千次
TLC:幾百次~2千次
QLC:< TLC
3D:< QLC
所以壕探,磨損平衡很重要冈钦!接下來幾個概念:
冷數(shù)據(jù)(Cold Data),熱數(shù)據(jù)(Hot Data)
年老塊(Old Block)李请,年輕塊(Young Block)
??所謂冷數(shù)據(jù)就是用戶不常更新的數(shù)據(jù)瞧筛,比如音視頻,只讀數(shù)據(jù)等导盅;相反熱數(shù)據(jù)就是頻繁更新的數(shù)據(jù)较幌,比如軟件使用等,會產(chǎn)生很多垃圾白翻。
??所謂年老塊是指擦寫次數(shù)比較多的塊乍炉;相反年輕塊則指擦寫次數(shù)比較少的塊。ps:每個塊都有EC(Erase Count)滤馍,年輕還是年老SSD一下就可以看出來岛琼。
??SSD一般有兩種(Ware Leveling)算法:動態(tài)磨損平衡(Dynamic WL)和靜態(tài)磨損平衡(Static WL)。動態(tài)磨損平衡算法基本原理是把熱數(shù)據(jù)寫到年輕塊上纪蜒;靜態(tài)磨損平衡的基本思想是把冷數(shù)據(jù)寫到年老塊上衷恭。這里可以停下來先品味一下這樣的做的原因。
DWL好理解:寫數(shù)據(jù)時找年輕的塊寫纯续,避免往老年塊上寫數(shù)據(jù)随珠,各個塊就能保持一個比較均衡的值灭袁。
SWL呢?冷數(shù)據(jù)基本不更新窗看,它所占用的塊擦寫次數(shù)就不會增加茸歧,而其他塊會被經(jīng)常寫入數(shù)據(jù),塊擦寫次數(shù)是會增加显沈,這樣就導(dǎo)致了擦除不均衡软瞎,SSD最不喜歡這個了。所以需要把冷數(shù)據(jù)搬到老年塊上拉讯,讓年輕塊替代老年塊的工作涤浇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市魔慷,隨后出現(xiàn)的幾起案子只锭,更是在濱河造成了極大的恐慌,老刑警劉巖院尔,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜻展,死亡現(xiàn)場離奇詭異,居然都是意外死亡邀摆,警方通過查閱死者的電腦和手機纵顾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栋盹,“玉大人施逾,你說我怎么就攤上這事≌甓ⅲ” “怎么了音念?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長躏敢。 經(jīng)常有香客問我闷愤,道長,這世上最難降的妖魔是什么件余? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任讥脐,我火速辦了婚禮,結(jié)果婚禮上啼器,老公的妹妹穿的比我還像新娘旬渠。我一直安慰自己,他們只是感情好端壳,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布告丢。 她就那樣靜靜地躺著,像睡著了一般损谦。 火紅的嫁衣襯著肌膚如雪岖免。 梳的紋絲不亂的頭發(fā)上岳颇,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音颅湘,去河邊找鬼话侧。 笑死,一個胖子當(dāng)著我的面吹牛闯参,可吹牛的內(nèi)容都是我干的瞻鹏。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼鹿寨,長吁一口氣:“原來是場噩夢啊……” “哼新博!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起释移,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤叭披,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后玩讳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嚼贡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年熏纯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粤策。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡樟澜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叮盘,到底是詐尸還是另有隱情秩贰,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布柔吼,位于F島的核電站毒费,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏愈魏。R本人自食惡果不足惜觅玻,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望培漏。 院中可真熱鬧溪厘,春花似錦、人聲如沸牌柄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽珊佣。三九已至蹋宦,卻和暖如春披粟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妆档。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工僻爽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贾惦。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓胸梆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親须板。 傳聞我的和親對象是個殘疾皇子碰镜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 簡介 SSD(Solid State Drives),俗稱固態(tài)硬盤习瑰,相對原來主軸旋轉(zhuǎn)绪颖,并無機械部分,主要由SS...
    mysia閱讀 4,966評論 0 10
  • Flag Commit:Supporting Efficient Transaction Recovery in ...
    hyfine閱讀 598評論 0 0
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,914評論 2 89
  • 1.超靈做夢甜奄,夢見幾十萬個個體靈 柠横,個體靈做夢,夢見真我课兄,真我做夢就有了我們的人生牍氛。 2.我們的人生是真我投射的。...
    李恩億的書屋閱讀 300評論 1 1
  • 現(xiàn)在的我們還小烟阐,沒有更大的力量讓所有的魚兒都像他們一樣能夠自由自在搬俊,無憂無慮,但我們相信:我們的行動只要能喚醒一個...
    乄鎭鈊愛妳_d484閱讀 185評論 0 0