新四季網

固態硬碟壞塊管理機制

2023-07-05 02:05:51

  壞塊是如何產生的,SSD又是通過什麼樣的手段來發現和管理壞塊,廠商建議的壞塊管理策略存在什麼樣的問題,什麼樣的管理方法會更優,格式化硬碟會不對導致壞塊表丟失,SSD返修後產生哪些安全隱患,本文逐一進行闡述。

  概述

  壞塊管理設計理念,關係到SSD可靠性和效率。一些Nand Flash廠商給出的壞塊管理做法未必非常合理,在進行產品設計時,如果對一些異常條件考慮的不足夠周全的話,常常會導致一些預料之外的壞塊產生。

  例如,工業固態硬碟廠商瑞耐斯在測試多家不同主控SSD後發現因異常掉電而產生新增壞塊的問題非常普遍,用搜尋引擎搜索「異常掉電產生壞塊」或者類似的關鍵詞,會發現這個問題不僅僅存在於測試過程中,實際發生在終端用戶身上的問題也非常之多。

  誰來管理壞塊

  對於沒有專門快閃記憶體文件系統的主控來說,壞塊可以通過SSD controller的固件來管理,對於專門的快閃記憶體文件系統來說,通過專門的快閃記憶體文件系統來或Driver來管理壞塊。

  壞塊(Bad Block)分為三種:

  1、出廠壞塊,或初始壞塊,即出廠時因不符合廠商標準或廠商抽測過無法達到廠商公布標準的塊,在出廠時已經被廠商標識為壞塊;有些出廠壞塊可以被Erase,有些不可以被Erase;

  2、使用過程中因為磨損造成的新增壞塊或使用壞塊;

  3、因異常掉電等原因被主控誤判的假性壞塊;

  新增壞塊並非全部是因磨損造成的,如果SSD沒有異常掉電保護功能,因異常掉電可能會導致主控誤判壞塊或者真正的新增壞塊產生。在沒有異常掉電保護的情況下,如果Lower page已經編程成功,而在Upper page編程過程中突然掉電,必然會導致Lower page中的數據發送錯誤,如果數據錯誤數量超過SSD ECC糾錯能力,那麼就會在讀取時出現錯誤,Block會被主控判為「Bad Block」並標識到bad block table中。

  新增的壞塊有些是可以被Erase的,而且,新增壞塊被Erase後重新進行數據讀寫擦操作未必會再次出錯,因為出錯與否與寫入數據的pattern也有關係,使用某種pattern出錯,更換另一種pattern有可能不會出錯。

  出廠壞塊在整個Device中所佔的比率

  諮詢過幾家Nand Flash原廠,給出比較通用的說法是:出廠壞塊的比率不超過2%,並且廠商會留一部分的餘量,確保即使在達到廠商承諾的P/E 次數最大限度時,仍然有不超過2%的壞塊比率,好像保證2%並非一件很容易的事情,瑞耐斯拿到某家新樣品時的壞塊比率超過了2%,實際測試為2.55%

  壞塊的判定方法

  1、出廠壞塊的判斷方法

  壞塊的掃描基本都是掃描廠商指定地址所對應的byte是否有FFh標誌,沒有FFh則為壞塊。

  壞塊標識的位置每個廠商大致相同,對於SLC和MLC來說,位置不同,以Micron為例:

  1.1 對於小頁(528Byte)的SLC來說,每個Block的第一個page的spare area中的第六個Byte是否有FFh標誌,如果沒有就是壞塊;

  1.2 對於大頁(大於等於2112Byte)的SLC來說,每個Block的第一個page的spare area的第一個和第六個Byte是否有FFh標誌,如果沒有就是壞塊;

  1.3 對於MLC來說,出廠壞塊是通過掃描每個Block的第一個page和最後一個page的spare area區域的第一個或第二個Byte是否為0xFF標誌,是0xFF,就是好快,沒有0xFF就是壞塊。

  借用Hynix datasheet中的一張圖來說明:

  壞塊裡面是什麼數據?全0還是全1?瑞耐斯測試看到的結果如下圖示,當然,這未必是真相,出廠壞塊可能真實如此,但新增壞塊就未必了,否則通過「壞塊」做數據隱藏豈不是無法實現:

  出廠壞塊能否擦除掉

  有些是「可以」擦除掉,有些則被廠商禁止擦除,所謂的「可以」擦除僅僅是指可以通過發送擦除命令將壞塊標識改掉,而不是建議可以使用壞塊。

  廠商強烈建議是不要擦除壞塊,壞塊標誌一旦被擦除,是無法「恢復」回來的,在壞塊上寫入數據是有風險的。

  2、使用過程中,新增壞塊的判定方法

  新增壞塊是通過狀態寄存器的反饋結果來判斷對Nand Flash的操作是否成功,當Program或者Erase時,如果狀態寄存器反饋為fail,則SSD主控會將此Block列為壞塊。

  具體來說:

  2.1、當執行擦除指令時出錯;

  2.2、當執行寫命令時出錯;

  2.3、當執行讀取命令時出錯;當執行讀取命令時,如果bit的錯誤數超過了ECC的糾錯能力,該Block將被判為壞塊。

  壞塊管理的方法

  壞塊是通過建立和更新壞塊表(Bad Block Table:BBT)來進行管理的。壞塊表的做法並沒有統一的規範和做法,有些工程師用一個表來管理出廠壞塊和新增壞塊,有些工程師則會把兩個表分開管理,有些工程師則把初始壞塊作為單獨的表,出廠壞塊加新增壞塊作為另外一個表。

  對於壞塊表的內容,表達方式也不盡一致,有些會表達的比較粗略,例如:使用0表示好快,用1表示壞塊或者反之。而有些工程師則會使用更詳細的描述方式,如:使用00表示出廠壞塊,01表示Program失敗時的壞塊,10表示Read失敗時產生的壞塊,11表示Erase失敗時產生的壞塊。

  壞塊表一般會在獨立的區域進行保存(如:Block0,page0和Block1,page1),每次通電後直接讀取BBT,效率比較高,考慮到Nand Flash本身也會損壞,有可能導致BBT的丟失,因此,通常會將BBT做備份處理,備份多少份每家也不同,有人備份2份,也有人備份8份,通常情況下,可以藉助概率論的表決系統進行計算,不管怎樣,最起碼也要2份以上吧。

  壞塊管理策略一般包括:壞塊跳過策略和壞塊替換策略;

  壞塊跳過策略

  1、對於初始壞塊,壞塊跳過會通過BBT將對應的壞塊跳過,直接將數據存入下一個好塊。

  2、對於新增的壞塊,將此壞塊更新到BBT中,將壞塊中的有效數據轉存到下一個好塊中,以後每次再做相應的Read、Program或者Erse時直接跳過此壞塊。

  壞塊替換策略(某Nand Flash廠商建議的做法)

  壞塊替換,是指使用預留區中的好塊來替換使用過程中產生的壞塊。假設,在program時,第n個page出現錯誤,那麼在壞塊替換策略下,會將page0到page(n-1)中的數據拷貝到預留區的空閒Block(例如Block D)的相同位置,然後將數據寄存器中第n個page的數據寫入Block D中的page n。

  廠商的建議的做法是將整個數據區域劃分為兩部分,一部分是用戶可見區域,用於用戶正常的數據操作,另一部分為替換壞塊專門準備的備用區域,用於存儲替換壞塊的數據以及保存壞塊表,備用區域的比例為整個容量的2%。

  當有壞塊產生時,FTL會將Bad Block地址重新映射到保留區好塊地址,而不是直接跳過壞塊到下一個好塊,在每次對邏輯地址寫操作之前,都會先計算哪些物理地址可以寫,哪些地址是壞塊,如果是壞塊,就將數據寫入對應保留區的地址。

  瑞耐斯工程師沒有看到關於2%的預留區域是否需要包含在OP區域之內還是額外的區域之類的建議,也沒有看到2%的保留區域是動態還是靜態的描述,加入是獨立的區域且是靜態區域,那麼這種做法會有如下弊端:

  1、直接保留2%的區域留作壞塊替換,會造成可用容量的減少,浪費了空間,同時,由於可用塊數量少,加快了可用壞的平均磨損次數;2、假設可用區域壞塊超過2%時,也就是說預留替換的區域全部被替換完,再產生的壞塊將無法處理,SSD將因此而面臨壽命終結。

  壞塊替換策略(部分SSD廠商的做法)

  事實上,在真正的產品設計中,很少見到有單獨預留2%比率作為壞塊替換區域的做法,一般情況下,會使用OP(Over Provison)區free block來替代在使用過程中新增的壞塊,以垃圾回收為例,當垃圾回收機制運行時,先將需要回收的Block中的有效page數據搬遷到free Block中,然後對此Block進行Erase操作,假設此時Erase狀態寄存器反饋Erase失敗,則壞塊管理機制會將此Block地址更新到新增壞塊列表中,同時,將壞塊中的有效數據頁寫入到OP區的Free Block中,更新壞塊管理表,下次寫入數據時,直接跳過壞塊到下一個可用塊。

  OP大小不同廠商的設定是不同的,應用場景不同,對可靠性要求不同,OP大小也會不同,OP和穩定性之間存在取捨關係,OP越大,在持續寫入的過程中,垃圾回收可用空間越大,性能就越穩定,表現出的性能曲線就越平滑,反之,OP越小,性能穩定性就越差,當然,用戶可用空間就越大,可用空間大就意味著成本更低。

  一般而言,OP可以設定為5%-50%,7%的OP是常見的比例,與廠商建議的2%固定的區塊不同的是,7%並不是固定的某些Block做OP,而是動態分布於所有的Block中,這樣更加有利於磨損平衡策略。

  SSD維修的後患

  對於大多數沒有擁有主控技術的SSD廠商而言,如果產品返修,通常的做法是更換故障器件後進行重新量產操作,此時,新增壞塊列表將會丟失,丟失新增壞塊表就意味著沒有更換的Nand Flash中其實已經存在壞塊,作業系統或者敏感數據有可能會被寫入到壞塊區域,很有可能造成用戶作業系統崩潰。即使對於有主控的廠商而言,是否會替用戶保存已經存在的壞塊列表,要看廠商面對的用戶的態度了。

  壞塊產是否會影響SSD的讀寫速度和穩定性

  出廠壞塊在bitline上會被獨立出來,因此不會影響其他Block的擦寫速度,但是,如果整個SSD的新增壞塊足夠多的話,整盤可用Block減少,會導致垃圾回收次數增加,同時,OP容量減少,會嚴重影響垃圾回收效率,因此,壞塊增加到一定級別會對SSD的性能穩定性產生影響,尤其是在持續對SSD進行寫入操作時,因為系統進行垃圾回收,會導致性能下降,SSD性能曲線會出現較大幅度波動。

同类文章
三星或在明年回歸為蘋果供應NAND快閃記憶體

三星或在明年回歸為蘋果供應NAND快閃記憶體

    蘋果在早期的iPhone中使用了三星的不少半導體器件,但隨著iPhone與三星的手機構成直接競爭後,蘋果便在手機中去三星化,包括處理器和快閃記憶體都取消三星作為供應商,但去年蘋果重新與三星合作,交部分A9訂單給三星代工,近日有消息稱在NAND快閃記憶體方面,三星也將在2017年再次為蘋果供貨
進軍SSD市場 索泰首款固態硬碟發布

進軍SSD市場 索泰首款固態硬碟發布

    索泰在其8周年生日之際,隆重推出了其下第一款SSD產品,容量只有120GB一款,型號命名:索泰 雷霆SPEED 120 SSD,單從SSD的外觀來看,似乎極為低調樸實,全黑色的外觀,合金外殼,磨砂設計,質量極輕,正面雷射鐳雕簡單的ZOTAC logo,背面產品標籤。    SSD即將成為DI
中芯主導 國產DRAM內存晶片廠落戶武漢

中芯主導 國產DRAM內存晶片廠落戶武漢

    國內廠商現在處理器市場已經獲得了一席之地,華為海思、瑞芯微、展訊、瑞迪科已經是其中的佼佼者,不過整個半導體產業中國內的力量還是很弱的,國內廠商還不到自滿的時候,下一個目標看起來就是DRAM內存晶片了,現在本土的DRAM廠已經確定落戶武漢市了,新廠將由中芯國際的高管主導。    與移動處理器市
PC雖疲軟 但金士頓帶領內存廠商大賺

PC雖疲軟 但金士頓帶領內存廠商大賺

    最新不斷有消息傳出,內存將迎來降價,雖然不大可能回到2012年的水平,但市場需求略顯疲軟也是不爭的事實。今天,專注於內存調研資訊的機構DRAMeXchange給出了去年全球內存上上的營收情況數據,我們也有機會再次看一看廠商們的座次。    從圖中可以看到,金士頓以59%的市場份額牢牢佔據第一
2TB固態硬碟到來 機械硬碟真要被淘汰?

2TB固態硬碟到來 機械硬碟真要被淘汰?

    對於固態硬碟來說,容量一直都沒有機械硬碟來的給力,不過三星已經在用實際行動改變這個局面了,。    之前的調查曾顯示,固態硬碟將會全面取消機械硬碟,目前還有兩個問題要解決,一個是價格,而另外一個就是容量,比較可喜的是,最近一兩年,固態硬碟價格明顯下滑,市面上已經出現了一大批配置256GB或5
進軍DRAM!國產內存公司將募集240億美元

進軍DRAM!國產內存公司將募集240億美元

    在微處理器市場之外,國產晶片廠商下一個目標就是進軍DRAM內存產業了,本土DRAM公司已經確定落戶武漢,這家公司不僅會有國內大基金的投資,中芯國際、湖北基金及其他投資公司也會投資,計劃募集資金高達240億美元,未來也不是只產DRAM內存,3D NAND快閃記憶體及NOR快閃記憶體都是國產內存
全球內存市場:中國記憶科技高居第二

全球內存市場:中國記憶科技高居第二

    TrendForce旗下內存行業調查機構DRAMeXchange近日公布了2014年全球內存條市場統計報告,並對十大廠商進行了座次排位,第二名恐怕會出乎很多人的意料。    2014年,全球內存條行業總銷售額88億美元,同比猛增21%。這主要得益於PC DRAM內存顆粒價格的穩定,以及現匯貿
壕專屬!海盜船DDR4-128GB套裝即將開售

壕專屬!海盜船DDR4-128GB套裝即將開售

    海盜船在臺北電腦展上推出了數款DDR4內存新品,當中包括了容量高達128GB的統治者鉑金系列套裝,還有兩款運行頻率高達3400MHz套裝。這些DDR4內存晶片將會在7月中旬登陸國內市場,壕們準備好了嗎?    統治者鉑金系列內存採用了可調節高度的鋁製散熱片。具有可靠耐用性、高穩定性、終生保固
開價230億美元!傳中國紫光要收購美光

開價230億美元!傳中國紫光要收購美光

    在連續收購展訊及瑞迪科之後,清華校辦企業紫光集團已經成為國內最大的微處理器公司,不過這顯然不會成為美光收購大業的終點,他們下一個目標是美光公司——就是那個大家都熟悉的內存、快閃記憶體及SSD公司,紫光公司已經發出總額230億美元的收購提議,就看美光股東及美國政府的表態了。    集成電路是國
浦科特自曝首款TLC固態硬碟:稱增壽1倍

浦科特自曝首款TLC固態硬碟:稱增壽1倍

    在固態硬碟領域沉默了好一段時間的浦科特重新出山了,展示了多款新品,尤其是其第一款TLC固態硬碟「M7V」(以前叫M6V)。    浦科特表示,正在細緻調教它的固件,希望能榨乾每一分性能潛力,更重要的是確保高可靠性和持久性。    浦科特宣稱,通過固件優化,M7V使用的15nm TLC快閃記憶