拆解固態硬盤結構

前面幾篇文章,主要圍繞的是機械硬盤來說的。目前ssd目前應用也越來越廣了,值得我們花精力琢磨琢磨。SSD硬盤是地地道道電子技術下的產品,因為不像機械硬盤IO時依賴兩個耗時的機械軸行為:磁盤旋轉,以及磁道尋道,SSD硬盤的訪問延遲要比機械硬盤要低的多,在隨機IO下的表現尤其明顯。我們今天從最底層出發,看看SSD的幾個內部機理。

SSD的組成結構

機械硬盤和ssd雖然都同為硬盤,但底層實現技術卻完全不一樣,機械硬盤使用的是磁性材料記憶,而SSD用的是類似u盤的閃存技術。實現技術的不同,必然在硬盤內部結構上他們就有天壤之別。他們的果照對比如下圖所示:

拆解固態硬盤結構

圖1 機械硬盤與SSD對比

不像機械硬盤裡的一摞子圓形碟片,SSD是由一些電路和黑色的存儲顆粒構成。SSD硬盤是基於NAND Flash存儲技術的,屬於非易失性存儲設備,換成人話說,就是掉電了數據不會丟。其中每一個黑色的存儲顆粒也叫做一個Die。 我們“拆開”一個Die來看一下

拆解固態硬盤結構

圖2 SSD硬盤存儲顆粒內部結構

每個Die有若干個Plane,每個Plane有若干個Block,每個Block有若干個Page。Page是磁盤進行讀寫的最小單位,一般為2KB/4KB/8KB/16KB等。

SSD裡的扇區

前面我們介紹機械硬盤的時候,說到由於歷史原因,操作系統等軟件裡,512KB扇區的概念是“根深蒂固”。新的機械硬盤雖然把物理扇區已經做到4KB的了,但為了兼容老系統還得整出個邏輯扇區的概念來適配。到了SSD裡也一樣,雖然每一個物理Page的大小為2K到16K不等,但是為了兼容性,也必須得整出個邏輯扇區才行。

SSD控制器在邏輯上會把整個磁盤再重新劃分成一個個的“扇區”,採用和新機械硬盤一樣的LBA方式來進行編址(整個磁盤的扇區從0到某個最大值方式排列,並連成一條線)。當需要讀取某幾個"扇區"上數據的時候,SSD控制器通過訪問這個LBA MapTable,再來找到要實際訪問的物理Page,如下圖:

拆解固態硬盤結構

圖3 扇區地址與物理Page映射

不過SSD最小的讀寫單位就是Page,他是沒辦法只扇區來進行讀寫的。

最底層的閃存單元

上面我們看到SSD是由一個個的Page組成。而在每一個Page裡,又包含了許許多多的閃存單元。。現代的閃存單元有多種類型,目前主流的主要分為SLC、MLC和TLC。

拆解固態硬盤結構

圖4 閃存單元類型

在SLC裡,一個單元的電壓只分成高低兩種狀態,所以只能表示1bit數據。到了MLC,硬是把一個單元裡的電壓按照高低分成了四種狀態,所以可以表示2bit。到了TLC,直接一個單元應拆分成8個電壓高低不同的狀態,為了表示3bit。由於TLC在數據讀寫需要八種不同電壓狀態,而施加不同的電壓狀態、 就需要更精確,也就需要更長的時間才能得以實現。另外由於電壓狀態多,出錯的可能性也會更大。

以上三種閃存單元對比:從性能和穩定性角度來看,SLC最好。從容量角度看,TLC最大。這就是為什麼日常我們看到的工業級的SSD要比筆記本SSD要貴很多,其中一個很重要的原因就是工業級的盤往往採用的閃存單元是SLC或MLC,而我們家用的筆記本一般都是TCL,因為便宜嘛。我們從用表格再對它們直觀對比一下:

拆解固態硬盤結構

表1 閃存單元對比


目前主流閃存類型TLC居多,因為價格便宜,容量大。

思考

  • 假設某SSD的Page大小是4KB,一個文件是16KB。那麼該文件是存在一個黑色的存儲顆粒裡,還是多個?

我們先把SSD的邏輯結構用個直觀一點的圖來看:

拆解固態硬盤結構

圖5 16K文件在SSD中分佈示意

假設只寫在一個顆粒裡,那麼對該文件進行讀取的時候,就只能用到一條Flash通道,這樣速度就會比較慢。如果存在相鄰的4個顆粒裡,每個寫入4KB。這樣多個Flash通道的帶寬會充分發揮出來,傳輸速度也更快。所以,實際中是分散在多個。

歡迎搜索微信公眾號kfngxl。



分享到:


相關文章: