簡單聊聊固態硬盤的物理結構


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

SSD的組成結構

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

file

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

file

每個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,如下圖:

file

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

最底層的閃存單元

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

file

在SLC里,一個單元的電壓只分成高低兩種狀態,所以只能表示1bit數據。到了MLC,硬是把一個單元里的電壓按照高低分成了四種狀態,所以可以表示2bit。到了TLC,直接一個單元應拆分成8個電壓高低不同的狀態,為了表示3bit。由於TLC在數據讀寫需要八種不同電壓狀態,而施加不同的電壓狀態、 就需要更精確,也就需要更長的時間才能得以實現。另外由於電壓狀態多,出錯的可能性也會更大。所以,以上三種閃存單元對比:從性能和穩定性角度來看,SLC最好。從容量角度看,TLC最大。這就是為什么日常我們看到的工業級的SSD要比筆記本SSD要貴很多,其中一個很重要的原因就是工業級的盤往往采用的閃存單元是SLC或MLC,而我們家用的筆記本一般都是TCL,因為便宜嘛。我們從用表格再對它們直觀對比一下:

閃存類型 單cell電壓變化 單cell表示bit數 速度 擦寫次數 價格
SLC(Single-Level Cell) 兩種 1bit 約10W次
MLC(Multi-Level Cell) 四種 2bit 一般 約3K次 一般
TLC(Trinary-Level Cell) 八種 3bit 約1K次 便宜

目前個人PC上消費用的主流閃存類型大部分都是TLC的,因為價格便宜,容量大。

思考

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

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

file

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


file


開發內功修煉之硬盤篇專輯:


我的公眾號是「開發內功修煉」,在這里我不是單純介紹技術理論,也不只介紹實踐經驗。而是把理論與實踐結合起來,用實踐加深對理論的理解、用理論提高你的技術實踐能力。歡迎你來關注我的公眾號,也請分享給你的好友~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM