有关EMMC、Nandflash、SSD、HDD的科普类说明
帶著疑問,查了一些資料,梳理了一下思路。
閃存的更新換代速度特別快,電腦端從機械硬盤HDD到固態硬盤SSD,手機端從eMMC到UFS3.0,同步存在的蘋果的nvme,一直在完善協議,各大廠家都在追求更流暢的體驗和更優質的質量。
目前的主要配置:手機存儲用eMMC,筆記本電腦用SSD,臺式機SSD與HDD組合使用
=======================================第一部分:文章出處:https://www.cnblogs.com/Christal-R/p/7230304.html============================================
全面理解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://zhuanlan.zhihu.com/p/148770953=====================================================
最近做車聯網中車載行業平臺的方案涉及到服務器的配單
接下來將我總結的內容分享給大家
以下會從容量、價格、速度、寫入次數、工作噪音、防震能力、數據恢復等幾個角度去做區分
固態硬盤和機械硬盤的對比
0、前置知識
如圖所示,需要知道計算機存儲的工作原理:
所以對于計算機而言,硬盤的讀取速度決定著平臺的啟動速度,而不是CPU以及內存條。
計算機傳輸計算的工作原理
一:容量
固態硬盤存儲容量較小,機械硬盤存儲容量較大;
涉及原理不同:
固態硬盤的原理:半導體存儲;數據直接存在閃存顆粒中,并且由主控單元記錄數據存儲位置和數據操作。
每一個閃存顆粒的存儲容量是有限的
固態硬盤內部機構
機械硬盤的原理:電磁存儲;機械硬盤在盤面上寫數據、磁盤轉動,機械臂移動,也是比較原始的數據讀寫方式[1],就像近現代的留聲機發聲原理一樣。
機械硬盤內部結構
硬盤扇區的基礎知識
那么對應任意一塊硬盤,他所能容納的容量是
磁頭數 × 磁道(柱面)數 × 每道扇區數 × 每扇區字節數
當磁盤高速旋轉,去讀取相應位置的二進制碼(比如0000011111××)之后,對相應的01碼進行解析,就能得出相應的數據內容
二:價格
目前市場上,同容量大小,固態硬盤價格差不多是機械硬盤的3倍。截止2020年6月16日
三、讀取速度
如果你想要快速開機,有快速啟動大型游戲的需求,可以將主程序裝載在固態硬盤中
如果有照片、電影這種對讀取速度沒顯性需求的數據,當然首選機械硬盤,便宜又大碗
四、寫入次數[3]
但其實,無需擔心固態硬盤的讀寫次數限制,比如市面上一款120GB的固態硬盤是,按照1000次的P/E寫入次數計算,這塊硬盤的寫入總量應該是120×1000=120000GB,也就是你需要寫入至少120TB的文件才會損壞,如果是每天寫滿120GB,要寫1000天,也就是2.7年。而且,這個數據是個保底數據,就是說到了這個次數也不一定會壞,就算壞也不是馬上就壞,可能會繼續堅挺下去。
五、工作噪音
六、防震能力
七、數據恢復能力
?
總結
以上是生活随笔為你收集整理的有关EMMC、Nandflash、SSD、HDD的科普类说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux C 串口属性设置
- 下一篇: 浅谈 SSD,eMMC,UFS