国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于NAND Flash 固態(tài)硬盤的壞塊管理方法

2022-12-01 06:00李中周加誼曹睿
電子設(shè)計(jì)工程 2022年23期
關(guān)鍵詞:結(jié)構(gòu)圖基準(zhǔn)線固態(tài)

李中,周加誼,曹睿

(中國兵器裝備集團(tuán)自動(dòng)化研究所有限公司,四川 綿陽 621000)

在大數(shù)據(jù)時(shí)代的今天,數(shù)據(jù)傳輸量越來越大,數(shù)據(jù)傳輸速度要求越來越高,機(jī)械硬盤的傳輸速度已經(jīng)不能滿足現(xiàn)狀,固態(tài)硬盤迎來了發(fā)展機(jī)會(huì),使用場景越來越多。固態(tài)硬盤存儲(chǔ)介質(zhì)NAND Flash 與傳統(tǒng)磁性存儲(chǔ)介質(zhì)相比,具有低功耗、抗震動(dòng)、無噪聲的特點(diǎn)。但是NAND Flash 存在擦除壽命限制,當(dāng)擦除次數(shù)超過閾值時(shí),NAND Flash 變得不可靠;MLC NAND Flash 的Block 最大擦除次數(shù)僅3 000 次,TLCNAND Flash Block 擦除壽命只有1 000 次;同時(shí)由于制造工藝和使用環(huán)境等因素,NAND Flash 出廠時(shí)就存在壞塊,隨著使用過程中擦除Block 次數(shù)的增加,產(chǎn)生了新的壞塊,導(dǎo)致壞塊不斷增加。這些壞塊不能可靠存放數(shù)據(jù),因此在使用時(shí)需要先對(duì)壞塊進(jìn)行管理。

1 固態(tài)硬盤結(jié)構(gòu)

從固態(tài)硬盤結(jié)構(gòu)圖可知,固態(tài)硬盤(solid state disk)[1]由控制單元(主控芯片)和存儲(chǔ)單元(NAND Flash)組成,主控芯片和NAND Flash 之間一般采用多通道(channel)連接,數(shù)據(jù)最終存放在NAND Flash顆粒中。固態(tài)硬盤存儲(chǔ)數(shù)據(jù),在NAND Flash 顆粒上體現(xiàn)為電荷的存儲(chǔ)。固態(tài)硬盤對(duì)數(shù)據(jù)的讀、寫、擦操作,其最終在NAND Flash 顆粒上表現(xiàn)為顆粒單元的充電放電;而顆粒單元不斷的充電放電會(huì)導(dǎo)致顆粒單元絕緣層被擊穿,不能可靠存儲(chǔ)電荷,從而出現(xiàn)壞塊。壞塊不能可靠地存儲(chǔ)數(shù)據(jù),需要進(jìn)行管理。為避免數(shù)據(jù)存儲(chǔ)在壞塊中,該文提出NAND Flash 壞塊管理算法,通過在固態(tài)硬盤主控芯片內(nèi)部RAM 中分配空間,采用1 位信息與一個(gè)Block 對(duì)應(yīng)(“0”表示好塊,“1”表示壞塊),建立壞塊表標(biāo)記所有Block 狀態(tài)的方法,對(duì)固態(tài)硬盤的高速傳輸、多通道傳輸進(jìn)行了改進(jìn)和優(yōu)化,可以避免在讀寫過程中操作到壞塊。固態(tài)硬盤結(jié)構(gòu)圖如圖1 所示。

圖1 固態(tài)硬盤結(jié)構(gòu)圖

2 NAND Flash物理結(jié)構(gòu)

圖2 所示是鎂光一款NAND Flash 顆粒結(jié)構(gòu)圖,以此為基礎(chǔ)簡單介紹NAND Flash,僅用作參考,不同型號(hào)的NAND Flash 顆粒存在差異[2]。

圖2 NAND Flash 顆粒結(jié)構(gòu)圖

由圖2 NAND Flash 結(jié)構(gòu)圖可知,NAND Flash 由Logic Unit(LUN)、plane、Block、page 組成。page:對(duì)于固態(tài)硬盤,page 是讀和寫操作的最小單位,一個(gè)page 大小等于4 K 加224 byte;224 byte 數(shù)據(jù)空間又名spare data 區(qū)域,用于存放ECC 校驗(yàn)數(shù)據(jù)和固態(tài)硬盤算法信息,同時(shí)標(biāo)記NAND Flash 的出廠壞塊信息和使用過程中該Block 的屬性;Block:NAND Flash擦除是以Block 為單位,一個(gè)Block 中存放著256 個(gè)page;固態(tài)硬盤軟件算法采用邏輯Block 和物理Block 映射,能夠解決NAND Flash 讀寫單位和擦除單位不對(duì)稱的問題,同時(shí)也能提高固態(tài)硬盤的讀寫性能。plane:是將LUN 中所有Block 分為兩個(gè)部分,1 plane 有2 048 個(gè)Block,偶數(shù)部分為plane0,奇數(shù)部分為plane1;plane 通過“乒乓操作”原理,提高NAND Flash 接口的讀寫性能;LUN:是Logic Unit NAND Flash 的一個(gè)邏輯單元,一個(gè)LUN 有4 096 個(gè)Block,一個(gè)NAND Flash 有多個(gè)LUN。

3 壞塊管理

固態(tài)硬盤對(duì)讀寫速度的要求,使得固態(tài)硬盤主控芯片都支持多通道(Channel)操作,可以提高讀寫性能。但是壞塊的出現(xiàn)會(huì)影響固態(tài)硬盤的讀寫性能和數(shù)據(jù)的一致性。多通道操作實(shí)際上是操作RaidBlock,提高接口數(shù)據(jù)的并發(fā)能力。該文提出的固態(tài)硬盤壞塊管理方法,主要針對(duì)多通道、多NAND Flash 的壞塊管理,致力于減少壞塊出現(xiàn)對(duì)讀寫性能的影響和保護(hù)硬盤數(shù)據(jù)的一致性。該文提出的壞塊管理方法主要包括四個(gè)部分:出廠壞塊的統(tǒng)計(jì)、壞塊表的建立和RaidBlock 的建立、RaidBlock 更新和壞塊表的更新。

3.1 出廠壞塊統(tǒng)計(jì)

NAND Flash 的壞塊包括出廠壞塊和使用過程中新增的壞塊。出廠壞塊由NAND Flash 廠商標(biāo)記。不同的NAND Flash 廠商存放的位置可能存在差異。對(duì)于Micron MT29F32G08CBABB 顆粒,是用每個(gè)Block 的第一個(gè)page spare 區(qū)域的第一個(gè)byte 來表示該Block 是壞塊還是好塊,00 表示該Block 是壞塊,0xFF 表示該Block 是好塊。對(duì)于使用過程中新增壞塊有三個(gè)產(chǎn)生源頭:1)編程(program)過程中發(fā)生錯(cuò)誤;2)擦除(erase)過程中發(fā)生錯(cuò)誤;3)讀(read)過程中出現(xiàn)ECC 無法糾正的錯(cuò)誤[3-5]。

3.2 壞塊表和RaidBlock的建立

初始化壞塊表的建立是在固態(tài)硬盤量產(chǎn)時(shí),通過掃描全盤Block 的方法實(shí)現(xiàn)的;初始化壞塊表建立之后,固態(tài)硬盤在使用過程中,新增的壞塊采用增量方式,向初始化壞塊表進(jìn)行添加。固態(tài)硬盤完成上電后,壞塊表會(huì)讀取到主控芯片內(nèi)存,當(dāng)壞塊表更新時(shí),先更新主控芯片內(nèi)存中的壞塊表,再把內(nèi)存中的壞塊表備份到NAND Flash 顆粒的固定位置;這種策略可以保證壞塊表的準(zhǔn)確性和實(shí)時(shí)性不受固態(tài)硬盤上、下電的影響,不用每次都采用掃描全盤來建立壞塊表。壞塊表建立流程圖如圖3 所示。

圖3 壞塊表建立流程圖

由圖3 壞塊表的建立流程可知,通過掃描固態(tài)硬盤所有的Block,讀取每個(gè)Block 第一個(gè)page 的spare data 區(qū)域的第一個(gè)byte 的值與0xFF 進(jìn)行比較;從而確定該Block 是好塊還是壞塊,并建立壞塊表[6-8]。壞塊表以byte 數(shù)組形式進(jìn)行保存,數(shù)組的每一個(gè)元素表示相鄰的8 個(gè)Block,每個(gè)Block 塊屬性用一個(gè)bit表示,bit 值1 表示該Block 是壞塊,bit 值0 表示該Block 是好塊;這樣一個(gè)byte 可以對(duì)應(yīng)8 個(gè)Block,采用每個(gè)bit 來映射一個(gè)Block,可以減小壞塊表的大小,節(jié)約存儲(chǔ)資源。

RaidBlock 是由每個(gè)通道(channel)、每個(gè)CE 的Block 共同組成的邏輯Block 層,是一個(gè)抽象的Block[9-10]。由圖4 RaidBlock 與物理Block 映射圖可知,該固態(tài)硬盤有兩個(gè)通道,每個(gè)通道連接的NAND Flash 有4 個(gè)CE,每個(gè)CE 有8 196 個(gè)Block。因此一個(gè)RaidBlock 組成元素有{Block(0,0),Block(0,1),Block(0,2),Block(0,3),Block(1,0),Block(1,1),Block(1,2),Block(1,3)},其中Block(0,1)表示通道0的CE 1 的Block,元素0 表示通道,元素1 表示CE。在實(shí)際使用時(shí),RaidBlock 表存儲(chǔ)的是不規(guī)則的RaidBlock 元素,規(guī)則的RaidBlock 元素不作記錄,可以減少RaidBlock 表大小,節(jié)約內(nèi)存空間。同時(shí)RaidBlock 命名通常都是以Channel 0 和CE 0 的Block 為基準(zhǔn)。如RaidBlock 表中存在如下內(nèi)容:{3,3,100,3,3,3,3,235},該內(nèi)容表示RaidBlock 3 中Block3(0,2)和Block3(1,3)的Block 都是壞塊,分別采用各自Block100(0,2)和Block235(1,3)來替換。在固態(tài)硬盤向RaidBlock3 讀寫數(shù)據(jù)時(shí),先查詢RaidBlock 表,再對(duì)應(yīng)RaidBlock 表操作Block100(0,2)和Block235(1,3),然后讀寫數(shù)據(jù);RaidBlock 構(gòu)建的原理是依據(jù)NAND Flash 各個(gè)通道和各個(gè)CE 之間讀寫數(shù)據(jù)相對(duì)獨(dú)立互不干擾,同時(shí)還能最大程度地提高通道并發(fā)能力,提高固態(tài)硬盤的讀寫性能,不受壞塊影響。

RaidBlock 的建立是在固態(tài)硬盤量產(chǎn)時(shí)和壞塊表建立同時(shí)完成的[11]。先將所有通道和CE 沒有壞塊的組建成RaidBlock,并統(tǒng)計(jì)所有存在壞塊的通道和CE,以數(shù)組形式進(jìn)行保存;找到壞塊最多的通道和CE,確定最多組成RaidBlock 的個(gè)數(shù);以通道0 和CE 0 為基準(zhǔn),建立RaidBlock表[12-13],如圖5 RaidBlock結(jié)構(gòu)圖所示。從行上看,有5 個(gè)行存在壞塊,分別分布在不同CE 與通道上。從列上看,通道0 與CE 2 上存在最多壞塊,個(gè)數(shù)為3;通過計(jì)算可知,最多形成8 193(8 196-3)個(gè)RaidBlock;其中8 191(8 196-5)個(gè)RaidBlock 是默認(rèn)狀態(tài),不需要保存到RaidBlock 表,僅兩個(gè)RaidBlock 需要建立RaidBlock 表,表中數(shù)據(jù)如{3,3,2,3,3,3,3,3}{200,200,895,200,200,200,200,895}。

RaidBlock 的個(gè)數(shù)會(huì)隨著使用過程中壞塊的增加而減少,但是存在一個(gè)閾值,當(dāng)RaidBlock 個(gè)數(shù)小于這個(gè)閾值時(shí),固態(tài)硬盤不能正常工作。該閾值一般由固態(tài)硬盤容量決定,超出閾值的RaidBlock 可以稱作spare RaidBlock,該類Block主要用于提高固態(tài)硬盤垃圾回收(Garbage Collection)和磨損均衡(Wear-Leveling)效率。由圖5 可知,基準(zhǔn)線一的RaidBlock閾值是16,表示RaidBlock 總個(gè)數(shù)不能小于8 180(8 196-16)個(gè),剩余的是spare RaidBlock 和壞塊;基準(zhǔn)線二表示該固態(tài)硬盤的某個(gè)通道和CE 存在最大的壞塊數(shù);基準(zhǔn)線二的閾值是3,表示在通道0、CE 2上存在三個(gè)壞塊。隨著固態(tài)硬盤的使用,壞塊增加基準(zhǔn)線二逐漸向基準(zhǔn)線一靠擾,當(dāng)二者重合時(shí),表示該固態(tài)硬盤已經(jīng)不能正常使用。

圖5 RaidBlock結(jié)構(gòu)圖

3.3 壞塊表和RaidBlock表的更新

固態(tài)硬盤在使用過程中,新增壞塊可以分為以下三種情況[14-15]:

1)當(dāng)操作NAND Flash 出現(xiàn)page program 操作失敗時(shí),先把有效數(shù)據(jù)轉(zhuǎn)移到spare RaidBlock,然后進(jìn)行erase RaidBlock,若在erase 操作過程中出現(xiàn)錯(cuò)誤,找到擦除失敗的Block,記錄好通道數(shù)和CE 數(shù),標(biāo)記為壞塊;若擦除RaidBlock 完成,表示該RaidBlock 不存在壞塊;

2)當(dāng)操作NAND Flash 出現(xiàn)erase RaidBlock 失敗時(shí),找到擦除失敗的Block,記錄好通道數(shù)和CE 數(shù),標(biāo)記為壞塊;

3)當(dāng)read 操作出現(xiàn)ECC 無法糾正的錯(cuò)誤,先把RaidBlock 有效數(shù)據(jù)轉(zhuǎn)移到spare RaidBlock,然后進(jìn)行erase RaidBlock,再進(jìn)行program 數(shù)據(jù)并校驗(yàn),若操作過程中出現(xiàn)失敗,表示RaidBlock 存在壞塊,再擦除RaidBlock,找到擦除失敗的Block,標(biāo)記為壞塊;若操作成功,表示該RaidBlock 不存在壞塊

當(dāng)確定某個(gè)Block是壞塊時(shí),先標(biāo)記壞塊,更新壞塊表;然后確認(rèn)Block 所在的通道和CE,并確認(rèn)通道和CE 的壞塊數(shù);如果大于最大通道和CE 的壞塊數(shù),則最大通道和CE 的壞塊數(shù)增加1,spare RaidBlock 減少1;如果小于最大通道和CE 的壞塊數(shù),則更新Raid Block 表;最后將更新的表同步到NAND Flash[16]。

4 結(jié)束語

該文提出的壞塊處理方法主要針對(duì)于主控芯片連接多通道NAND Flash 架構(gòu)的固態(tài)硬盤。依據(jù)壞塊表區(qū)分壞塊和好塊,達(dá)到管理Block 的目的。通過RaidBlock 的操作,可以確保在不操作到壞塊的前提下,滿足固態(tài)硬盤數(shù)據(jù)的并發(fā)需求,提高固態(tài)硬盤的讀寫效率。壞塊表和RaidBlock 表的相互配合可以到達(dá)壞塊管理的基本要求,確保數(shù)據(jù)的可靠性。

猜你喜歡
結(jié)構(gòu)圖基準(zhǔn)線固態(tài)
中國共產(chǎn)黨第二十屆中央組織結(jié)構(gòu)圖
碳交易市場體系中的碳排放基準(zhǔn)線:應(yīng)用實(shí)踐、研究進(jìn)展與展望
PCle 4.0平臺(tái)的性價(jià)比之選!WD_BLACK SN770固態(tài)硬盤
Sn摻雜石榴石型Li7La3Zr2O12固態(tài)電解質(zhì)的制備
透明陶瓷在固態(tài)照明中的應(yīng)用進(jìn)展
L波段kw級(jí)固態(tài)功放測試技術(shù)
P-3C“奧利安”反潛機(jī)結(jié)構(gòu)圖
中產(chǎn)直九型多用途直升機(jī)結(jié)構(gòu)圖
卡-60輕型突擊運(yùn)輸直升機(jī)結(jié)構(gòu)圖