現在的位置: 首頁 > 技術文章 > 硬件與存儲 > 正文

全面理解SSD和NAND Flash

2019年04月12日 硬件與存儲 ⁄ 共 4270字 ⁄ 字號 全面理解SSD和NAND Flash已關閉評論

Flash Memory又叫做閃存,是一種非易失性存儲器。非易失性是指斷電之后數據不會丟失,這里就涉及到斷電保護(后面詳細講解)。

總體思路

1、前言:HDD和SSD的比較引出Flash。

2、Flash的分類:NAND Flash和NOR Flash。

3、NAND Flash規則介紹。

4、SSD固件(Firmware,FW)包括:映射表(Mapping Table)、垃圾回收(Garbage Collection)、磨損平衡(Wear Leveling,WL)等。

5、補充概念:寫入放大(Write Application)、預留空間(Over Provisioning)、Flash壽命(Program/Erase Count,P/E)等。

6、斷電保護機制。 

7、對SSD的評價標準:穩定性、性能、壽命。

1、前言

(1)HDD

  HDD是指機械硬盤,是傳統普通的硬盤。

  介質:采用磁性碟片來存儲。

  包括:盤片、磁頭、磁盤旋轉軸及控制電機、磁頭控制器、數據轉接器、接口、緩存。

機械式硬盤最大速率約為100MB/s,由于容易發熱等原因已經無法再進一步提升速度,所以引入了固態硬盤

(2)SSD

  SSD(Solid State Drives)是固態硬盤。

  介質:采用閃存顆粒來存儲。

  包括:控制單元、存儲單元(DRAM芯片/FLASH芯片)。

(3)性能&外觀區別

  HDD是機械式尋找數據,所以防震遠低于SSD,數據尋找時間也遠低于SSD。SSD(左圖)和HDD(右圖)的模樣區別如下:

(圖片來自百度)

2、Flash的分類

Flash又分NAND Flash和NOR Flash,NOR型存儲內容以編碼為主,其功能多與運算相關;NAND型主要功能是存儲資料,如數碼相機中所用的記憶卡。

  現在大部分的SSD都是用來存儲不易丟失的資料,所以SSD存儲單元會選擇NAND Flash芯片。這里我們講的就是SSD中的NAND Flash芯片。

(1)Nor Flash:主要用來執行片上程序

  優點:具有很好的讀寫性能和隨機訪問性能,因此它先得到廣泛的應用;

  缺點:單片容量較小且寫入速度較慢,決定了其應用范圍較窄。

(2)NAND Flash:主要用在大容量存儲場合

  優點:優秀的讀寫性能、較大的存儲容量和性價比,因此在大容量存儲領域得到了廣泛的應用;

  缺點:不具備隨機訪問性能。

3、NAND Flash的規則

(1)Flash都不支持覆蓋,即寫入操作只能在空或已擦除的單元內進行。

  更改數據時,將整頁拷貝到緩存(Cache)中修改對應頁,再把更改后的數據挪到新的頁中保存,將原來位置的頁標記為無效頁;

指定在已有無效數據的位置寫入時,需要先擦除無效頁才能在該位置寫入新數據。

(2)以page為單位寫入,以Block為單位擦除;擦除Block前需要先對里面的有效頁進行搬遷。

(3)每個Block都有擦除次數限制(有壽命),擦除次數過多會成為壞塊(bad block)。

?4、SSD固件內容

(1)映射表 Mapping Table

  邏輯地址:用戶程序中使用的相對地址;

  物理地址:實際存儲單元的絕對地址;

  所以,映射表里面存儲的內容是邏輯地址到物理地址的映射信息,利用邏輯地址查詢映射表,找到對應的物理地址,再對實際存儲單元做讀寫訪問。

  SSD內部就維護了一張映射表;一般SSD內部會板載DRAM,用于存儲程序運行的臨時數據,斷電會丟失;映射表存放在SDRAM中(方便快速訪問),同時NAND Flash中會存儲幾份映射表(防止斷電后映射關系丟失),而且會定期對NAND Flash中的映射便進行更新。

(2)垃圾回收 Garbage Collection

  垃圾回收就是把幾個Block中的有效數據集中搬移到新的Block上去, 然后再把這幾個Block擦除掉。

  垃圾回收機制有很多,都是根據不同的側重點提出的,所以沒有最優的算法,就像伴侶一樣只有適不適合之說。如:Greedy算法,每次選擇包含最少有效頁的Block來回收,也就是對垃圾的貪心,每次盡可能回收最多的垃圾。還有Cost-Benefit算法(考慮Block的擦除次數)、Cat回收算法、CICL算法等。

另外有兩種回收策略:

  • 被動回收策略:當有寫入請求的時候,首先判斷當前可用空間大小與臨界值大小的比較;如果空間足夠,直接寫入空閑空間;如果空間不夠了,首先啟用垃圾回收,再往空閑區域完成寫入請求。
    • 不足之處:當空間不夠的時候寫請求會被延遲。
  • 主動回收策略:通過固件設定周期性任務,定時檢查可用空間大小,如果需要就執行垃圾回收。
    • 巧妙之處:利用空閑時間提前進行垃圾回收,避免對請求造成不必要的延時。
    • 不足之處:倘若系統一直沒有空閑時間,垃圾回收依舊無法有效執行。

(3)磨損平衡 Wear Leveling

  每個Block都是有壽命(Program/Erase Count,P/E值)的,他們的擦除次數是有限的。NAND Flash的壽命類似“木桶原理”,取決于所有Block中的最小壽命。如果拼命對某一塊進行擦除,NAND Flash的壽命將會被縮減到最小。所以引入了磨損平衡,平衡所有Block的擦除次數。

  有很多不同的磨損平衡機制,大體可以分為兩大類:動態WL、靜態WL。

  • 動態WL:使用Block進行擦寫時,優先挑選P/E值低的Block。
  • 靜態WL:把P/E值低的Block中的數據挪到P/E值高的Block中存放。

5、補充概念

(1)寫入放大 Write Application

  • 寫放大原理

  寫入放大倍數 = 閃存寫入數據量 / 主控寫入數據量 = 實際寫入數據量 / 要求寫入數據量

  例如,現在有一個寫入一頁的請求;即主控寫入數據量為1;

然而這個一頁請求觸發了垃圾回收,當前的寫請求會被延遲,直到垃圾回收完畢后再執行寫入操作;

如果垃圾回收只挪了5頁有效數據,那么實際的寫入量應該為6頁(1頁寫請求,5頁挪動);即閃存寫入數據量為6;

所以寫放大為6/1 = 6。

  理想的寫放大為1,但是Sandforce的數據寫入時會進行壓縮寫入,最優情況下,寫放大可以為0.5,打破了Intel的“寫放大不可能小于1”之說。

  • 壓縮寫入

  三大好處:減少待存儲數量,節約存儲空間;減小待存儲數據翻轉可能性,增加NAND Flash的壽命和減少能耗;獲得較小NAND Flash的寫放大,提高讀寫速度。

  壓縮寫入方法又分為有損壓縮和無損壓縮。

  有損壓縮:存在信息丟失,無法100%的保存原始信息。

  無損壓縮:不允許精度損失,能100%恢復原始信息;無損壓縮的壓縮和解碼復雜度較高,往往會大大的降低了NAND Flash的讀寫速度上的優勢。

  現如今,數據壓縮編碼算法還不夠強大,所以大部分廠家都不會采用壓縮寫入。Sandforce除外。

(2)預留空間 Over Provisioning

  • OP介紹

  通過垃圾回收的過程,不難知道,垃圾回收的前提是要提供空閑區域來拷貝,如果連空閑區域都沒有,垃圾回收將無法執行,這時將不再支持任何數據的寫入。為了避免這種情況的發生,提出了預留空間。

  預留空間不僅僅只是用來保證垃圾回收的正常完成,還存儲著SSD內部的系統數據(包括:出廠壞塊信息、SSD固件、Mapping Table等)。

  所以如果說明存儲大小為256GB,實際上的存儲空間可能只有238GB(一般預留空間為7%)。

  另外,OP越大,垃圾回收就會越快,相應寫放大會變小,所以讀寫性能就會越好;但用戶能使用的空間會被縮小。

  • OP與SA區別

  Over Provisioning(OP,預留空間)不僅僅只是用來保證垃圾回收的正常完成,還存儲著SSD內部的系統數據(包括:出廠壞塊信息、SSD固件、Mapping Table等)。是基于SSD的概念。

  Spare Area(SA區)一般用來標記壞塊,和保存對main區數據的ECC校驗碼。是基于NAND Flash中一個Block的概念。

(3)Flash壽命 Program/Erase Count

  前面也已經提及到了,每個Block都是有擦除次數限制的,所以引入了壽命這個說法。

6、斷電保護機制

為了提升讀寫性能,通常使用SDRAM做緩存,如果在讀寫過程中遭遇異常掉電,SDRAM中的數據可能來不及寫進Nand Flash導致數據丟失,或者更新的映射表來不及寫進Nand Flash導致映射表丟失。

  中控里板載的SDRAM是易失性存儲器,斷電之后數據會丟失,這個時候SDRAM中的數據主要包括:用戶數據、映射表;

  如果沒有斷電保護機制,再次上電時,先去NAND Flash中找上次更新時的映射表,這時拿到的信息并不是最新的,是上次更新NAND Flash中映射表時的數據信息,所以發生了大部分數據丟失。

  因此SSD板上會加上鉭電容或者超級電容,當檢測到非法斷電時,首先停止數據操作,鉭電容或超級電容開始放電,以保證SDRAM中的數據能夠寫入到NAND Flash中。

  至于是用鉭電容還是超級電容,得看具體要保護的數據量;不是電容的容量越大越好,因為只要電容開始放電,就要等待它的電放完之后才可以進行其他操作。假如電容容量過大,用戶只是點了個電腦重啟,這時候SSD的電容會開始放電,放電還沒完成的時候,電腦已經重新上電,這時無法認盤。所以電容電量應該選最時候的。

  基于SDRAM中的內容,斷電保護機制主要分為3種:

(1)保存SDRAM中所有數據

  再次上電后,相當于斷電前的操作被中斷,重新上電后就可立馬進入待命狀態。

(2)只保存SDRAM中的用戶數據

  再次上電后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,再將保存的用戶數據提取出來,兩者結合更新映射信息,更新完之后才進入待命狀態。

(3)只保存SDRAM中的映射表

  再次上電后,需要先把上次NAND Flash中保存的映射表提取到SDRAM中,只是丟掉了用戶斷電前正在操作的數據,無法更新。

7、SSD的評價標準

(1)穩定性:SSD是否穩定,最大的影響因素是垃圾回收機制的選擇,恰當的垃圾回收可以提供穩定的讀寫速率;例如主動垃圾回收機制,在空閑的時候做垃圾回收,讀寫速度不會因為延時而波動不定。

(2)性能:預留空間的大小主要決定了SSD的性能,OP大,垃圾回收快,相應寫放大小,讀寫性能就越好。

(3)壽命:所有Block的P/E值越趨近于均衡,SSD的壽命就越趨近于最佳。

轉載自 : https://www.cnblogs.com/Christal-R/p/7230304.html

二八杠讨论心得
×