來自公眾號:開發(fā)內(nèi)功修煉
前面幾篇文章,主要圍繞的是機(jī)械硬盤來說的。目前ssd目前應(yīng)用也越來越廣了,值得我們花精力琢磨琢磨。SSD硬盤是地地道道電子技術(shù)下的產(chǎn)品,因?yàn)椴幌駲C(jī)械硬盤IO時依賴兩個耗時的機(jī)械軸行為:磁盤旋轉(zhuǎn),以及磁道尋道,SSD硬盤的訪問延遲要比機(jī)械硬盤要低的多,在隨機(jī)IO下的表現(xiàn)尤其明顯。我們今天從最底層出發(fā),看看SSD的幾個內(nèi)部機(jī)理。
機(jī)械硬盤和ssd雖然都同為硬盤,但底層實(shí)現(xiàn)技術(shù)卻完全不一樣,機(jī)械硬盤使用的是磁性材料記憶,而SSD用的是類似u盤的閃存技術(shù)。實(shí)現(xiàn)技術(shù)的不同,必然在硬盤內(nèi)部結(jié)構(gòu)上他們就有天壤之別。他們的果照對比如下圖所示:
不像機(jī)械硬盤里的一摞子圓形碟片,SSD是由一些電路和黑色的存儲顆粒構(gòu)成。SSD硬盤是基于NAND Flash存儲技術(shù)的,屬于非易失性存儲設(shè)備,換成人話說,就是掉電了數(shù)據(jù)不會丟。其中每一個黑色的存儲顆粒也叫做一個Die。我們“拆開”一個Die來看一下
每個Die有若干個Plane,每個Plane有若干個Block,每個Block有若干個Page。Page是磁盤進(jìn)行讀寫的最小單位,一般為2KB/4KB/8KB/16KB等。
前面我們介紹機(jī)械硬盤的時候,說到由于歷史原因,操作系統(tǒng)等軟件里,512KB扇區(qū)的概念是“根深蒂固”。新的機(jī)械硬盤雖然把物理扇區(qū)已經(jīng)做到4KB的了,但為了兼容老系統(tǒng)還得整出個邏輯扇區(qū)的概念來適配。到了SSD里也一樣,雖然每一個物理Page的大小為2K到16K不等,但是為了兼容性,也必須得整出個邏輯扇區(qū)才行。
SSD控制器在邏輯上會把整個磁盤再重新劃分成一個個的“扇區(qū)”,采用和新機(jī)械硬盤一樣的LBA方式來進(jìn)行編址(整個磁盤的扇區(qū)從0到某個最大值方式排列,并連成一條線)。當(dāng)需要讀取某幾個'扇區(qū)'上數(shù)據(jù)的時候,SSD控制器通過訪問這個LBA MapTable,再來找到要實(shí)際訪問的物理Page,如下圖:
不過SSD最小的讀寫單位就是Page,他是沒辦法只扇區(qū)來進(jìn)行讀寫的。
上面我們看到SSD是由一個個的Page組成。而在每一個Page里,又包含了許許多多的閃存單元?,F(xiàn)代的閃存單元有多種類型,目前主流的主要分為SLC、MLC和TLC。
在SLC里,一個單元的電壓只分成高低兩種狀態(tài),所以只能表示1bit數(shù)據(jù)。到了MLC,硬是把一個單元里的電壓按照高低分成了四種狀態(tài),所以可以表示2bit。到了TLC,直接一個單元應(yīng)拆分成8個電壓高低不同的狀態(tài),為了表示3bit。由于TLC在數(shù)據(jù)讀寫需要八種不同電壓狀態(tài),而施加不同的電壓狀態(tài)、 就需要更精確,也就需要更長的時間才能得以實(shí)現(xiàn)。另外由于電壓狀態(tài)多,出錯的可能性也會更大。
以上三種閃存單元對比:從性能和穩(wěn)定性角度來看,SLC最好。從容量角度看,TLC最大。這就是為什么日常我們看到的工業(yè)級的SSD要比筆記本SSD要貴很多,其中一個很重要的原因就是工業(yè)級的盤往往采用的閃存單元是SLC或MLC,而我們家用的筆記本一般都是TCL,因?yàn)楸阋寺?。我們用表格再對它們直觀對比一下:
目前主流閃存類型TLC居多,因?yàn)閮r格便宜,容量大。
假設(shè)某SSD的Page大小是4KB,一個文件是16KB。那么該文件是存在一個黑色的存儲顆粒里,還是多個顆粒里?
我們先把SSD的邏輯結(jié)構(gòu)用個直觀一點(diǎn)的圖來看:
假設(shè)只寫在一個顆粒里,那么對該文件進(jìn)行讀取的時候,就只能用到一條Flash通道,這樣速度就會比較慢。如果存在相鄰的4個顆粒里,每個寫入4KB。這樣多個Flash通道的帶寬會充分發(fā)揮出來,傳輸速度也更快。所以,實(shí)際中是分散在多個。
聯(lián)系客服