SSD通俗原理簡介

SSD通俗原理簡介

來自專欄 Distributed Things4 人贊了文章

1. 什麼是SSD

SSD是Solid State Drive,即固態硬碟的縮寫。目前主流的SSD是使用半導體快閃記憶體(Flash)作為介質的存儲設備,SSD有別於HDD(Hard Disk Drive)機械硬碟。

SSD誕生於上世紀70年代,最早的SSD使用RAM,RAM掉電數據就會丟失,價格也特別貴。後來出現了基於快閃記憶體的SSD,快閃記憶體掉電之後數據不丟失,flash SSD慢慢取代了RAM SSD。此時HDD盤已佔據了大部分的存儲市場。到本世紀初,由於工藝的不斷進步,SSD贏來了大發展,容量和性能不斷提升,價格也不斷下降。HDD的在工藝和技術上已經很難有突破性的進展,SSD在性能和容量上還在不斷突破,相對於HDD市場的萎縮,無論是企業級市場還是消費級市場SSD的快速普及,SSD市場份額一直在擴大。相信不久的將來,SSD在在線存儲領域會取代HDD成為主流的存儲設備,成為軟體定義存儲的主流設備。

在工作方式上,HDD使用磁碟,即磁性介質作為數據存儲介質,在數據讀取和寫入上,使用磁頭+馬達的方式進行機械定址。因為機械硬碟靠機械驅動讀寫數據的限制,導致機械硬碟的性能提升遇到了瓶頸。特別是HDD盤的隨機讀寫能力,受其機械特性的限制,是一個巨大的瓶頸。SSD使用Flash作為存儲介質,數據讀取寫入通過SSD控制器進行定址,不需要機械操作,有著優秀的隨機訪問能力。

下圖分別是HDD和SSD的組成。HDD使用機械SSD由主控、快閃記憶體、DRAM(可選)、PCB(電源晶元、電阻、電容等)、介面(SATA、SAS、PCIe等)。

SSD分為前端、中間、後端。前端是介面和相關的協議模塊(STAT/SAS/PCIe等),中間是FTL(Flash Transhlation Layer)模塊,後端是和快閃記憶體通信模塊(快閃記憶體遵循ONFI或者Toggle協議)。

2. SSD的工作原理

2.1 SSD的存儲單元

Flash的基本存儲單元是 - 浮柵晶體管

上圖是浮柵晶體管的結構,最下面的是襯底,源極和漏極。襯底之上,有隧道氧化層、Floating Gate(浮柵層)、氧化層、控制柵極。中間的Floating Gate被絕緣層包圍著,電子易進難出,通過對Floating Gate充放電子,來對晶體管進行寫入和擦除。

在源極( Source)和漏極( Drain)之間電流單向傳導的半導體上形成存儲電子的浮柵,浮柵上下被絕緣層包圍,存儲在裡面的電子不會因為掉電而消失,所以快閃記憶體是非易失性存儲器。

下圖是浮柵晶體管的寫和擦除的原理。

寫操作如左圖,是在上面的控制柵極加正電壓Vpp,使電子通過絕緣層進入浮柵。擦除操作正好相反 ,如右圖,是在襯底加正電壓Vpp,把電子從浮柵中吸出來 。寫入的過程是充電子的過程,如果寫入的page之前已經寫過,在寫入之前,必須先對flash進行擦除0,清除浮柵中的電子。

數據是以0和1二進位進行保存的,根據浮柵中有沒有電子兩種狀態,可以表示數據的0和1,這樣就可以進行數據的存儲。一般把有電子的狀態記為0,沒有電子的狀態記為1。

2.2 快閃記憶體的分類

根據製作工藝,快閃記憶體存儲器可以分為NOR型和NAND型。

NOR型是為了替代EEPROM而設計,可以按位或者按位元組進行訪問,NOR型快閃記憶體晶元具有可靠性高、隨機讀取速度快的優勢,但擦除和編程速度較慢,容量小,主要用於存儲可執行的成都代碼。

NAND快閃記憶體容量大,按頁進行讀寫,容量大,適合進行數據存儲。本文介紹都是基於NAND flash。

2.3 NAND flash的擦除、讀、寫

  • 擦除,在襯底施加電壓足夠長的時間,把電子從浮柵中吸出來,擦除之後,整個block的數據都變成了1。由於一個block共用一個襯底,所以在擦除時,一次擦除一個block,即擦除的單位為block。
  • 寫,寫的過程是對浮柵充電子,也稱為編程。寫之前需要先進行擦除,由於擦除之後,數據都變成了1,所以需要對要寫入0的浮柵進行充電。
  • 讀,讀取的時候,對晶體管施加一個低電壓,如果浮柵中沒有電子,那麼管子就是導通的,讀到1;如果浮柵中有電子,管子不導通,讀到0。讀取數據時,因為是否有電子會影響到管子的導通性,所以可以利用電流感應浮柵里電子捕獲量的多寡,靠感應強度轉換成二進位的0與1。

2.4 快閃記憶體的內部組織架構

如下圖的快閃記憶體的內部組織架構:

  • 1個Chip/Device -> 多個DIE或者LUN
  • 1個DIE/LUN -> 多個Planes
  • DIE/LUN是接收和執行快閃記憶體命令的基本單元
  • 1個Plane -> 上千個Blocks
  • 每個Plane有獨立的register,一個Page register,一個Cache register
  • 1個Block -> 上百個Pages
  • Block是擦除的基本單位
  • 1個Page -> 一般是4KB 或者 8 KB + 幾百個位元組的隱藏空間
  • Page是讀或者寫的基本單位
  • Cells -> flash存儲信息的基本單位,根據每個cell可以保存1bit, 2bit, 3bit可以分為SLC, MLC, TLC

2.5 3D NAND FLASH

傳統的Flash,是以二維的方式組成的,主要由word line(WL)和bit line(BL)組成,如下圖。一條word line代表一個page,在讀寫的時候,bit line控制word line上的每一個bit。這樣的word line和bit line交叉,組成了一個block。block平鋪組成了flash。

隨著快閃記憶體技術製造工藝的發展,二維快閃記憶體的尺寸不斷縮小,單元間的干擾隨尺寸的縮小不斷變大。3D Nand Flash技術的出現,有效的解決了單元干擾的問題。

下圖是一種3D快閃記憶體的立體圖,在這種三維快閃記憶體中,flash堆疊了起來。如果2D Nand Flash比作平房,那麼3D Nand Flash可以看做是樓房,3D Nand Flash可以通過提高flash的層數在單位面積上堆更多的晶體管。3D Nand Flash在單位面積堆更多的存儲單元,在降低每bit成本上很有優勢。

3. SSD的特性?

3.1 讀寫不平衡

讀的速度很快;寫入數據時,因為需要通過加壓的方式對存儲單元進行電子填充,所以速度略慢;擦除速度最慢,擦除塊的時間在ms級。在使用SSD的時,需要考慮到SSD的讀寫不平衡的特性。

3.2 先擦後寫

Nand Flash的寫入以page為單位,擦除以block為單位。在Page頁寫入之前,必須要將page頁所在的block塊擦除。這個是由Nand Flash的工作原理決定的。

3.3 塊擦頁寫

一個Wordline對應著一個或若干個Page,具體是多少取決於是SLC、 MLC或者TLC。對SLC來說,一個Word line對應一個Page; MLC則對應2個Page,這兩個Page是一對( Lower Page和Upper Page); TLC對應3個Page( Lower Page、 Upper Page和Extra Page,不同快閃記憶體廠家叫法不一樣)。一個Page有多大,那麼Wordline上面就有多少個存儲單元,就有多少個Bitline。寫入以頁為單位。

一個Block當中的所有這些存儲單元都是共用一個襯底的。當對襯底施加強電壓,上面所有浮柵級的電子都會被吸出來。所以擦除是以塊為單位的。

3.4 壽命有限

每個NAND Block都有擦寫次數的限制,當超過這個次數時,該Block可能就不能用了:浮柵極充不進電子(寫失敗),或者浮柵極的電子很容易就跑出來(比特翻轉,0->1),或者浮柵極裡面的電子跑不出來(擦除失敗)。這個最大擦寫次數按SLC,MLC,TLC依次遞減:SLC的擦寫次數可達十萬次,MLC一般為幾千到幾萬,TLC降到幾百到幾千。

3.5 SLC/MLC/TLC

根據一個存儲單元可以存儲多少bit的數據,快閃記憶體單元可以分為SLC(Single Level Cell)、MLC(Multiple Level Cell)、TLC(Triple Level Cell)。

上圖是快閃記憶體晶元裡面存儲單元的閾值電壓分布函數,橫值是閾值電壓,縱軸是存儲單元數量。

一個存儲單元電子劃分得越多,那麼在寫入的時候,控制進入浮柵極的電子個數就要越精細,所以寫耗費的時間就越長;同樣的,讀的時候,需要嘗試用不同的參考電壓去讀取,一定程度上加長了讀取時間。在性能上, TLC不如MLC, MLC不如SLC。 在壽命上,SLC > MLC > TLC。在價格上 SLC > MLC > TLC。下表是SLC、MLC、TLC的一些參數比較,數據比較舊了,但是對比趨勢不變。現在還出現了一種QLC,一個快閃記憶體單元可以儲存4個bit的數據。

快閃記憶體類型SLCMLCTLC每單元bit數123每單元表示的狀態248擦除次數(k)10031讀取時間(us)305075寫入時間(us)3006001000擦除時間(us)150030004500

4. SSD的FTL

FTL是Flash Translation Layer的縮寫,是SSD的一個重要組成部分,實現了以下功能:

  • Interface Adapter: 在內部FTL中主要關聯eMMC/SCSI/SATA/PCIe/NVMe等介面,而在外部FTL中主要關聯Linux Block Device。
  • Address Translation: 地址映射,也可以叫做mapping,負責邏輯地址和物理地址之間的映射,多技術模塊都以該機製為核心進行。眾所周知,Nand Flash具有寫時擦除的特性,因此寫入數據時不得不異地更新。
  • Garbage Collection: 垃圾回收,簡稱GC,回收異地更新產生的臟數據所佔空間的回收工作。
  • Wear Leveling: 磨損均衡,簡稱WL,避免某一個Nand Block很快壞去,使所有Block的PE Cycle均衡發展。因為flash的擦寫次數是有限制的,如果不進行磨損均衡,整個SSD的有些block可能擦寫次數不平衡很快壞去。
  • Power off Recovery: 掉電恢復,簡稱POR。正常掉電,SSD會把緩存中的數據刷新到快閃記憶體,重新載入保存的數據即可。如果是異常掉電,因為某些人為或自然外力的原因導致數據沒有成功寫入到Nand中,掉電恢復要恢復到掉電前的安全狀態,比如恢復RAM中的數據和Address Translation中的映射表。
  • Parallelization and Load Balancing: 在前面的2.4小節的快閃記憶體的內部組織架構介紹中,可以知道SSD中存在的一定的並發性,利用這些並發性可以提供SSD的並發請求處理能力,提高其性能。
  • Cache Manager: Cache不僅可以存放用戶數據,也可以存放FTL Metadata,對系統的整體性能有著天然的優勢。
  • Error Handler: 處理讀寫操作中遇到的Fatal Error或ECC Error狀況,以及Bad Block或Weak Block的管理。

在下一篇文章《帶你了解SSD(2)-FTL》中,會詳細的介紹FTL的各功能。

Notes

作者:網易存儲團隊攻城獅 陳威

如有理解和描述上有疏漏或者錯誤的地方,歡迎共同交流;參考已經在參考文獻中註明,但仍有可能有疏漏的地方,有任何侵權或者不明確的地方,歡迎指出,必定及時更正或者刪除;文章供於學習交流,轉載註明出處

5 參考文獻

[1] SSDFans.深入淺出SSD:固態存儲核心技術、原理與實戰[M].北京:機械工業出版社,2018.6.

[2] codecapsule.com/2014/02

[3] ssdfans.com/blog/2018/0那些事(0)之寫在前面的話/

推薦閱讀:

銘瑄M.2固態讀寫速度飛起 不換系統換固態升級
簡單談下我國的固態硬碟業
固態硬碟SSD,越大越好?
HP EX900 250G實測----小身板有大智慧!
地表最強吃雞裝備竟然是SSD

TAG:固態硬碟 | 雲存儲 | 數據存儲技術 |