專利名稱:一種大規(guī)模flash存儲(chǔ)陣列的多層次數(shù)據(jù)冗余方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種FLASH存儲(chǔ)器的數(shù)據(jù)可靠存儲(chǔ)方法,特別涉及一種適用 于大規(guī)模FLASH存儲(chǔ)陣列數(shù)據(jù)可靠存儲(chǔ)的多層次數(shù)據(jù)冗余方法。
背景技術(shù):
隨著科學(xué)技術(shù)的進(jìn)步,F(xiàn)LASH存儲(chǔ)器逐步成為目前性能價(jià)格比最高的固 態(tài)非易失存儲(chǔ)器。在一些領(lǐng)域,比如在航天工程中,存在著許多有可能在短時(shí) 間內(nèi)產(chǎn)生大量數(shù)據(jù)的任務(wù),比如照相機(jī),各種實(shí)時(shí)傳感器等等;由于與地面接 收站的交互時(shí)間窗口所限,這些數(shù)據(jù)必須先存儲(chǔ)下來(lái)等待回傳地面,與此同時(shí), 由于空間環(huán)境非常惡劣,大溫差、宇宙射線等很多因素都有可能導(dǎo)致數(shù)據(jù)的損 壞或丟失,這就對(duì)存儲(chǔ)器的容量和可靠性提出了很高的要求。
一般情況下,由于FLASH存儲(chǔ)器的應(yīng)用規(guī)模較小,而且應(yīng)用環(huán)境較好, 因此對(duì)于FLASH存儲(chǔ)器的可靠性要求不是很高。為了降低成本,F(xiàn)LASH存儲(chǔ) 器廠商并不保證出廠的FLASH芯片內(nèi)部存儲(chǔ)區(qū)域完全可用,而是存在著一定 比例的壞塊,在出廠時(shí)這些壞塊被廠家標(biāo)記出來(lái),在使用中也有可能產(chǎn)生新的 壞塊,這些新產(chǎn)生的壞塊需要用戶自行管理。在可靠性方面,廠家一般在 FLASH存儲(chǔ)器內(nèi)部提供了一定數(shù)量的冗余空間以存儲(chǔ)一定數(shù)量的校驗(yàn)碼。所 以現(xiàn)有的有關(guān)FLASH存儲(chǔ)器及其控制器的研究重點(diǎn)大多放在小規(guī)模應(yīng)用時(shí)的 壞塊管理以及合適的校驗(yàn)碼的研究或者大規(guī)模應(yīng)用時(shí)利用并行性和流水線技 術(shù)提高存取速率等方面,而對(duì)大規(guī)模應(yīng)用時(shí)的數(shù)據(jù)可靠存儲(chǔ)策略關(guān)注不夠。
中國(guó)專利公開號(hào)為CN101320592A的專利公開了一種大容量FLASH固存 控制器,解決了壞塊管理問(wèn)題以及FLASH芯片頁(yè)內(nèi)數(shù)據(jù)的校驗(yàn)與糾錯(cuò)問(wèn)題, 但對(duì)于因塊損壞或者FLASH芯片損壞而導(dǎo)致的數(shù)據(jù)丟失問(wèn)題并沒(méi)有涉及。
再比如,西安電子科技大學(xué)的李超在2007年3月《火控雷達(dá)技術(shù)》第36 巻發(fā)表的"高速大容量FLASH存儲(chǔ)系統(tǒng)設(shè)計(jì)" 一文中,對(duì)各個(gè)FLASH芯片 進(jìn)行頁(yè)內(nèi)循環(huán)校驗(yàn)編碼并將編碼結(jié)果存入頁(yè)內(nèi)預(yù)留的冗余區(qū),同時(shí)對(duì)同一組的
416塊FLASH芯片進(jìn)行奇偶校驗(yàn)編碼并將編碼結(jié)果存入同一組的第17塊 FLASH芯片,這種數(shù)據(jù)冗余方式在一定程度上加強(qiáng)了數(shù)據(jù)存儲(chǔ)的可靠性,但 是由于是并行操作,所以若同組內(nèi)有兩個(gè)及以上的FLASH相應(yīng)位置的塊發(fā)生 損壞或者有兩個(gè)及以上的FLASHFLASH芯片發(fā)生損壞時(shí),這種方案就無(wú)能為 力了。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種大規(guī)模FLASH存儲(chǔ)陣列的多層次數(shù)據(jù)冗余方 法,克服現(xiàn)有技術(shù)的不足,針對(duì)FLASH存儲(chǔ)器的大規(guī)模、高可靠的應(yīng)用需求, 實(shí)現(xiàn)數(shù)據(jù)的高可靠存儲(chǔ)。
本發(fā)明所解決的技術(shù)問(wèn)題可以采用以下技術(shù)方案來(lái)實(shí)現(xiàn)
一種大規(guī)模FLASH存儲(chǔ)陣列的多層次數(shù)據(jù)冗余方法,其特征在于,將大 規(guī)模FLASH存儲(chǔ)陣列的存儲(chǔ)單元分為頁(yè)級(jí)、FLASH芯片級(jí)、FLASH芯片組 級(jí)三個(gè)層次,根據(jù)所劃分的層次以及所需的容錯(cuò)等級(jí)選擇不同的冗余編碼存入 大規(guī)模FLASH存儲(chǔ)陣列中預(yù)留的數(shù)據(jù)冗余空間中;當(dāng)出現(xiàn)錯(cuò)誤時(shí),利用數(shù)據(jù) 冗余空間中的冗余編碼即時(shí)糾正錯(cuò)誤。
在本發(fā)明的一個(gè)實(shí)施例中,對(duì)于大規(guī)模FLASH存儲(chǔ)陣列中頁(yè)級(jí)的存儲(chǔ)單 元,所述冗余編碼采用漢明(HAMMING)碼或者RS (Reed-Solomon)碼, 冗余編碼存入大規(guī)模FLASH存儲(chǔ)陣列中預(yù)留的數(shù)據(jù)冗余空間中,當(dāng)頁(yè)級(jí)存儲(chǔ) 單元中的數(shù)據(jù)出現(xiàn)錯(cuò)誤個(gè)數(shù)時(shí),利用冗余編碼即時(shí)糾正錯(cuò)誤。
進(jìn)一步,當(dāng)頁(yè)級(jí)存儲(chǔ)單元中的數(shù)據(jù)出現(xiàn)的錯(cuò)誤超出糾錯(cuò)范圍,則利用 FLASH芯片級(jí)的冗余編碼糾錯(cuò)。
在本發(fā)明的一個(gè)實(shí)施例中,對(duì)于大規(guī)模FLASH存儲(chǔ)陣列中FLASH芯片 級(jí)的存儲(chǔ)單元,將N塊FLASH芯片作為一組并行操作,有效存儲(chǔ)空間為N-2 塊FLASH芯片的容量,其余的FLASH芯片容量作為數(shù)據(jù)冗余空間;將每組 FLASH芯片中的數(shù)據(jù)產(chǎn)生兩組不相關(guān)的奇偶校驗(yàn)碼與Reed-Solomon碼相結(jié)合 作為冗余編碼,所述冗余編碼分別存儲(chǔ)在每組FLASH芯片的數(shù)據(jù)冗余空間中; 當(dāng)發(fā)生小于等于兩個(gè)的FLASH芯片級(jí)故障時(shí),通過(guò)所述冗余編碼從仍能正常 工作的其余N-2塊FLASH芯片可完整恢復(fù)數(shù)據(jù)。進(jìn)一步,所述冗余編碼的存儲(chǔ)位置按一定的策略分布在每組FLASH芯片 內(nèi)的每個(gè)FLASH芯片中。
進(jìn)一步,根據(jù)可靠性以及系統(tǒng)存取速度的需求,每組FLASH芯片內(nèi)用于 存儲(chǔ)數(shù)據(jù)的FLASH芯片數(shù)量可以大于N-2塊以增加并行度和容量。
在本發(fā)明的一個(gè)實(shí)施例中,對(duì)于大規(guī)模FLASH存儲(chǔ)陣列中FLASH芯片 組級(jí)的存儲(chǔ)單元,所述冗余編碼采用將各個(gè)FLASH芯片組中相應(yīng)位置的 FLASH芯片中的每個(gè)比特進(jìn)行奇偶運(yùn)算得到的奇偶校驗(yàn)碼,額外增加一個(gè) FLASH芯片組作為數(shù)據(jù)冗余空間,并將所述冗余編碼存入額外增加的FLASH 芯片組中;當(dāng)存儲(chǔ)數(shù)據(jù)的FLASH芯片組發(fā)生大于兩個(gè)FLASH芯片乃至整組 FLASH芯片損壞時(shí),可通過(guò)所述冗余編碼利用其它FLASH芯片組的FLASH 芯片完整恢復(fù)數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,考慮到對(duì)FLASH芯片組讀寫性能的影響,對(duì) 存儲(chǔ)所述奇偶校驗(yàn)碼的校驗(yàn)位的FLASH芯片組的IO獨(dú)立控制。
進(jìn)一步,由于存儲(chǔ)所述奇偶校驗(yàn)碼的校驗(yàn)位的FLASH芯片組的讀寫比較 頻繁,在較大規(guī)模應(yīng)用以及長(zhǎng)壽命應(yīng)用時(shí)應(yīng)當(dāng)適當(dāng)增加備份組。
在本發(fā)明的一個(gè)實(shí)施例中,在數(shù)據(jù)寫入時(shí),應(yīng)當(dāng)先給出地址,在數(shù)據(jù)寫入 緩存的同時(shí)讀出將要覆蓋的數(shù)據(jù)以及校驗(yàn)碼,之后在寫入數(shù)據(jù)的同時(shí)寫入三者 運(yùn)算所產(chǎn)生的新校驗(yàn)位。
本發(fā)明的一種大規(guī)模FLASH存儲(chǔ)陣列的多層次數(shù)據(jù)冗余方法,與現(xiàn)有技 術(shù)相比,針對(duì)大規(guī)模FLASH陣列應(yīng)用,在不同的層次采取不同的冗余策略, 極大地提高了數(shù)據(jù)存儲(chǔ)的可靠性,充分利用硬件的并行運(yùn)算能力,極大地減少 了加入數(shù)據(jù)冗余校驗(yàn)位而引起的IO性能下降,縮短了損壞數(shù)據(jù)重建的時(shí)間代 價(jià),并且系統(tǒng)的可靠性和冗余策略可由用戶根據(jù)實(shí)際情況確定,配置靈活、方 便,實(shí)現(xiàn)本發(fā)明的目的。
圖1為本發(fā)明的整體方案框圖2為本發(fā)明的各級(jí)分層結(jié)構(gòu)及數(shù)據(jù)冗余策略示意圖3為本發(fā)明的頁(yè)級(jí)數(shù)據(jù)冗余編碼設(shè)計(jì)RS (255, 249)編碼方案數(shù)據(jù)劃分示意圖4為本發(fā)明的頁(yè)級(jí)數(shù)據(jù)冗余編碼設(shè)計(jì)RS (255, 249)編碼器示意圖; 圖5為本發(fā)明的FLASH芯片組級(jí)數(shù)據(jù)冗余編碼過(guò)程示意圖; 圖6為本發(fā)明的FLASH芯片級(jí)數(shù)據(jù)冗余編碼過(guò)程示意圖。
具體實(shí)施例方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解, 下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。
如圖1所示, 一種大規(guī)模FLASH存儲(chǔ)陣列的整體方案框圖,整個(gè)大規(guī)模 FLASH存儲(chǔ)陣列采用可靈活配置的高性能FPGA控制,針對(duì)應(yīng)用的不同需求 可采取不同的方案。
如果數(shù)據(jù)的分組大小為塊(Block)級(jí)或以上,則可在FPGA外部配置一 塊RAM作為數(shù)據(jù)緩存。在數(shù)據(jù)分組寫入RAM之前,先將其地址寫入。在數(shù) 據(jù)分組寫入RAM的同時(shí)將該地址的數(shù)據(jù)以及相應(yīng)位置的校驗(yàn)數(shù)據(jù)從FLASH 存儲(chǔ)陣列中讀入RAM,之后將數(shù)據(jù)分組寫入該地址,與此同時(shí)運(yùn)算產(chǎn)生新的 校驗(yàn)數(shù)據(jù)并寫入校驗(yàn)FLASH芯片組。
如果數(shù)據(jù)的分組大小為頁(yè)(Page)級(jí),則無(wú)需配置外部數(shù)據(jù)緩存,利用 FPGA內(nèi)部提供的RAM作為緩存即可。對(duì)數(shù)據(jù)的操作與上類似,這種情況適 用于大規(guī)模數(shù)據(jù)的順序連續(xù)寫入。這是由于FLASH存儲(chǔ)陣列的讀寫單元與擦 除單元并不匹配讀寫的最小單元為頁(yè),而擦除的最小單元為塊。此時(shí)可以在 FPGA中開辟一個(gè)大小為塊的緩存區(qū)暫存校驗(yàn)數(shù)據(jù),當(dāng)寫滿一個(gè)塊的緩沖區(qū)時(shí) 再將數(shù)據(jù)寫入相應(yīng)的校驗(yàn)FLASH芯片。
本發(fā)明的一種大規(guī)模FLASH存儲(chǔ)陣列的多層次數(shù)據(jù)冗余方法,將大規(guī)模 FLASH存儲(chǔ)陣列的存儲(chǔ)單元分為頁(yè)級(jí)、FLASH芯片級(jí)、FLASH芯片組級(jí)三個(gè) 層次,根據(jù)所劃分的層次以及所需的容錯(cuò)等級(jí)選擇不同的冗余編碼存入大規(guī)模 FLASH存儲(chǔ)陣列中預(yù)留的數(shù)據(jù)冗余空間中;當(dāng)出現(xiàn)錯(cuò)誤時(shí),利用數(shù)據(jù)冗余空 間中的冗余編碼即時(shí)糾正錯(cuò)誤。
如圖2所示,本發(fā)明的各級(jí)分層結(jié)構(gòu)及數(shù)據(jù)冗余策略從頂層向底層逐步說(shuō) 明如下整個(gè)FLASH存儲(chǔ)陣列以N個(gè)FLASH芯片為一組,組的數(shù)量和N的大小根據(jù)系統(tǒng)規(guī)模的需求而定。各組共享數(shù)據(jù)及控制總線,在同一時(shí)刻只能有
一個(gè)組工作,組內(nèi)的N個(gè)FLASH芯片并行操作,冗余編碼采用奇偶校驗(yàn)碼, 用于整個(gè)陣列的奇偶校驗(yàn)的FLASH芯片組的數(shù)據(jù)及控制接口被獨(dú)立出來(lái),可 以與其它FLASH芯片組并行操作。當(dāng)有數(shù)據(jù)需要寫入存儲(chǔ)陣列時(shí),需要先讀 出該數(shù)據(jù)要寫入的地址的原數(shù)據(jù)以及相應(yīng)位置的校驗(yàn)數(shù)據(jù)以用來(lái)運(yùn)算產(chǎn)生新 的校驗(yàn)數(shù)據(jù),具體操作方式前文己分析。
FLASH存儲(chǔ)陣列中每個(gè)組有N塊FLASHFLASH芯片,其中N-2塊FLASH 芯片的容量用來(lái)存儲(chǔ)數(shù)據(jù),兩塊FLASH芯片的容量用來(lái)存儲(chǔ)冗余的校驗(yàn)數(shù)據(jù)。 存儲(chǔ)方式按照輸入數(shù)據(jù)分組的大小將每個(gè)FLASH芯片分為大小均等的條(最 小單位是頁(yè)),將數(shù)據(jù)組寫入其中的四塊FLASH芯片,與此同時(shí)計(jì)算得出兩組 不相關(guān)的校驗(yàn)數(shù)據(jù)寫入其余的兩個(gè)FLASH芯片。校驗(yàn)數(shù)據(jù)寫入的FLASH芯 片按照?qǐng)D2所示的方式輪換。兩組校驗(yàn)數(shù)據(jù)的產(chǎn)生分別采用奇偶校驗(yàn)碼和 Reed-Solomon碼作為冗余編碼。如果可靠性要求較低,則每個(gè)FLASH芯片組 可以使用超過(guò)N-2塊FLASH芯片作為數(shù)據(jù)存儲(chǔ)芯,這樣可以增加并行度以提 高存儲(chǔ)陣列的讀寫速度同時(shí)增加系統(tǒng)容量。
每個(gè)FLASHFLASH芯片根據(jù)容量由數(shù)量不等的塊(Block)組成,每個(gè) 塊由64頁(yè)(Page)組成,每一頁(yè)由2048Byte的數(shù)據(jù)存儲(chǔ)區(qū)和64Byte的冗余存 儲(chǔ)區(qū)組成。根據(jù)可靠性以及性能需求,對(duì)2048Byte的數(shù)據(jù)可以采用HAMMING 碼編碼方案或者RS (Reed-Solomon)作為冗余編碼;實(shí)施時(shí),首先將2048Byte 的數(shù)據(jù)劃分成合適大小的塊,然后對(duì)每一塊進(jìn)行編碼,產(chǎn)生的校驗(yàn)數(shù)據(jù)存入 64Byte的冗余數(shù)據(jù)區(qū)即可。
實(shí)施例
下面給出一個(gè)具體的例子進(jìn)一步說(shuō)明本發(fā)明方法的原理。其中,頁(yè)級(jí)存儲(chǔ) 單元的冗余編碼采取Reed-Solomon碼,F(xiàn)LASH芯片級(jí)存儲(chǔ)單元的冗余編碼采 用奇偶校驗(yàn)碼與Reed-Solomon碼相結(jié)合,F(xiàn)LASH芯片組級(jí)存儲(chǔ)單元的冗余編 碼采用奇偶校驗(yàn)碼。每個(gè)組有6塊FLASH芯片,其中4塊FLASH芯片的容 量用于存儲(chǔ)數(shù)據(jù),其余兩塊FLASH芯片的容量用于作為存儲(chǔ)校驗(yàn)數(shù)據(jù)的數(shù)據(jù) 冗余空間。原始數(shù)據(jù)分組為以4個(gè)塊為單位,外接一塊RAM作為數(shù)據(jù)緩存和地址命令寄存器。
如圖3、圖4所示,F(xiàn)LASH存儲(chǔ)陣列頁(yè)級(jí)數(shù)據(jù)冗余編碼方案,可以糾正3 個(gè)Byte的數(shù)據(jù)錯(cuò)誤,冗余編碼可以采用漢明(HAMMING)碼或者RS (Reed-Solomon)碼。
如圖3所示,將2048Byte的數(shù)據(jù)劃分成每249Byte—組,共9組,其中 第9組為56Byte,不足249Byte,在運(yùn)算過(guò)程中全部補(bǔ)0或1即可。每組數(shù)據(jù) 經(jīng)運(yùn)算后將產(chǎn)生6Byte的冗余校驗(yàn)數(shù)據(jù),共計(jì)54Byte,而頁(yè)內(nèi)數(shù)據(jù)冗余空間為 64Byte,完全夠用;當(dāng)頁(yè)級(jí)存儲(chǔ)單元中的數(shù)據(jù)出現(xiàn)錯(cuò)誤個(gè)數(shù)時(shí),利用冗余編碼 即時(shí)糾正錯(cuò)誤。
圖4為FLASH存儲(chǔ)陣列頁(yè)級(jí)數(shù)據(jù)冗余編碼的RS (255, 249)編碼器示意 圖,g為RS編碼生成多項(xiàng)式系數(shù)。在前249個(gè)時(shí)鐘周期,開關(guān)SW1閉合,開 關(guān)SW2向下閉合,輸入在直接輸出的同時(shí)被送入編碼器進(jìn)行運(yùn)算;在后6個(gè) 時(shí)鐘周期,開關(guān)SW1斷開,開關(guān)SW2向上閉合,輸出編碼器運(yùn)算結(jié)果,即輸 出移位寄存器的余項(xiàng)。至此,數(shù)據(jù)完成各級(jí)冗余編碼,最終送入各 FLASHFLASH芯片存放。
當(dāng)頁(yè)級(jí)存儲(chǔ)單元中的數(shù)據(jù)出現(xiàn)的錯(cuò)誤超出糾錯(cuò)范圍,則利用FLASH芯片 級(jí)的冗余編碼糾錯(cuò)。
如圖5所示,F(xiàn)LASH存儲(chǔ)陣列FLASH芯片級(jí)數(shù)據(jù)冗余編碼過(guò)程示意圖, 采用奇偶校驗(yàn)碼與Reed-Solomon碼相結(jié)合作為冗余編碼,其中模塊E為奇偶 校驗(yàn)計(jì)算單元,主要進(jìn)行異或運(yùn)算;模塊F為Reed-Solomon編碼計(jì)算單元,F(xiàn) 中的系數(shù)g為RS編碼的生成多項(xiàng)式系數(shù);模塊G對(duì)過(guò)來(lái)的數(shù)據(jù)DO到D3進(jìn) 行頁(yè)級(jí)數(shù)據(jù)冗余編碼后將編碼后的數(shù)據(jù)以及模塊E、F分別產(chǎn)生的校驗(yàn)數(shù)據(jù)PI 、 P2以輪換的方式(如圖2所示)放入數(shù)據(jù)FLASH芯片組的6塊FLASH芯片 中。
N塊FLASH芯片作為一組并行操作,有效存儲(chǔ)空間為N-2塊FLASH芯 片的容量,其余的FLASH芯片容量作為數(shù)據(jù)冗余空間,在本實(shí)施例中,每個(gè) 組有6塊FLASH芯片,其中4塊FLASH芯片的容量用于存儲(chǔ)數(shù)據(jù),其余兩 塊FLASH芯片的容量用于作為存儲(chǔ)校驗(yàn)數(shù)據(jù)的數(shù)據(jù)冗余空間;將每組FLASH 芯片中的數(shù)據(jù)產(chǎn)生兩組不相關(guān)的校驗(yàn)碼作為冗余編碼,所述冗余編碼分別存儲(chǔ)在每組FLASH芯片的數(shù)據(jù)冗余空間中;當(dāng)發(fā)生小于等于兩個(gè)的FLASH芯片 級(jí)故障時(shí),通過(guò)所述冗余編碼從仍能正常工作的其余FLASH芯片可完整恢復(fù) 數(shù)據(jù)。
所述冗余編碼的存儲(chǔ)位置按一定的策略分布在每組FLASH芯片內(nèi)的每個(gè) FLASH芯片中。
根據(jù)可靠性以及系統(tǒng)存取速度的需求,每組FLASH芯片內(nèi)用于存儲(chǔ)數(shù)據(jù) 的FLASH芯片數(shù)量可以大于N-2塊以增加并行度和容量。
如圖6所示,F(xiàn)LASH存儲(chǔ)陣列FLASH芯片組級(jí)數(shù)據(jù)冗余編碼過(guò)程示意 圖,采用奇偶校驗(yàn)碼作為冗余編碼,其中模塊A為奇偶校驗(yàn)計(jì)算單元,將各個(gè) FLASH芯片組中相應(yīng)位置的FLASH芯片中的每個(gè)比特進(jìn)行奇偶運(yùn)算得到的奇 偶校驗(yàn)碼;B為外接RAM; C為圖6所代表的整個(gè)模塊,即FLASH芯片級(jí)冗 余編碼模塊;C-'為c的逆模塊,即FLASH芯片級(jí)冗余解碼模塊。
額外增加一個(gè)FLASH芯片組作為數(shù)據(jù)冗余空間,并將所述冗余編碼存入 額外增加的FLASH芯片組中;在新數(shù)據(jù)化^被寫入RAM之前,先將其所要 存儲(chǔ)的地址寫入RAM中的地址寄存器,之后在D,'寫入的同時(shí)將此地址所存 放的舊數(shù)據(jù)D。"以及校驗(yàn)FLASH芯片組中相應(yīng)的舊的校驗(yàn)數(shù)據(jù)^讀出,經(jīng)過(guò) 模塊C—'運(yùn)算后寫入RAM,接下來(lái)將新來(lái)的數(shù)據(jù)",'經(jīng)過(guò)模塊C后寫入指定的 位置,與此同時(shí),RAM中的三份數(shù)據(jù)運(yùn)算得到新的校驗(yàn)數(shù)據(jù)經(jīng)過(guò)模塊C后寫 入校驗(yàn)FLASH芯片組,如此循環(huán)進(jìn)行操作。
當(dāng)存儲(chǔ)數(shù)據(jù)的FLASH芯片組發(fā)生大于兩個(gè)FLASH芯片乃至整組FLASH 芯片損壞時(shí),可通過(guò)所述冗余編碼利用其它FLASH芯片組的FLASH芯片完 整恢復(fù)數(shù)據(jù)。
考慮到對(duì)FLASH芯片組讀寫性能的影響,對(duì)存儲(chǔ)所述奇偶校驗(yàn)碼的校驗(yàn) 位的FLASH芯片組的10獨(dú)立控制;由于存儲(chǔ)所述奇偶校驗(yàn)碼的校驗(yàn)位的 FLASH芯片組的讀寫比較頻繁,在較大規(guī)模應(yīng)用以及長(zhǎng)壽命應(yīng)用時(shí)應(yīng)當(dāng)適當(dāng) 增加備份組。
在數(shù)據(jù)寫入時(shí),應(yīng)當(dāng)先給出地址,在數(shù)據(jù)寫入緩存的同時(shí)讀出將要覆蓋的 數(shù)據(jù)以及校驗(yàn)碼,之后在寫入數(shù)據(jù)的同時(shí)寫入三者運(yùn)算所產(chǎn)生的新校驗(yàn)位。 以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書中 描述的只是說(shuō)明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明 還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi),本 發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。
權(quán)利要求
1、一種大規(guī)模FLASH存儲(chǔ)陣列的多層次數(shù)據(jù)冗余方法,其特征在于,將大規(guī)模FLASH存儲(chǔ)陣列的存儲(chǔ)單元分為頁(yè)級(jí)、FLASH芯片級(jí)、FLASH芯片組級(jí)三個(gè)層次,根據(jù)所劃分的層次以及所需的容錯(cuò)等級(jí)選擇不同的冗余編碼存入大規(guī)模FLASH存儲(chǔ)陣列中預(yù)留的數(shù)據(jù)冗余空間中;當(dāng)出現(xiàn)錯(cuò)誤時(shí),利用數(shù)據(jù)冗余空間中的冗余編碼即時(shí)糾正錯(cuò)誤。
2、 如權(quán)利要求1所述的多層次數(shù)據(jù)冗余方法,其特征在于,對(duì)于大規(guī)模 FLASH存儲(chǔ)陣列中頁(yè)級(jí)的存儲(chǔ)單元,所述冗余編碼采用漢明(HAMMING) 碼或者RS (Reed-Solomon)碼,冗余編碼存入大規(guī)模FLASH存儲(chǔ)陣列中預(yù)留 的數(shù)據(jù)冗余空間中,當(dāng)頁(yè)級(jí)存儲(chǔ)單元中的數(shù)據(jù)出現(xiàn)錯(cuò)誤個(gè)數(shù)時(shí),利用冗余編碼 即時(shí)糾正錯(cuò)誤。
3、 如權(quán)利要求2所述的多層次數(shù)據(jù)冗余方法,其特征在于,當(dāng)頁(yè)級(jí)存儲(chǔ) 單元中的數(shù)據(jù)出現(xiàn)的錯(cuò)誤超出糾錯(cuò)范圍,則利用FLASH芯片級(jí)的冗余編碼糾 錯(cuò)。
4、 如權(quán)利要求1所述的多層次數(shù)據(jù)冗余方法,其特征在于,對(duì)于大規(guī)模 FLASH存儲(chǔ)陣列中FLASH芯片級(jí)的存儲(chǔ)單元,將N塊FLASH芯片作為一組 并行操作,有效存儲(chǔ)空間為N-2塊FLASH芯片的容量,其余的FLASH芯片 容量作為數(shù)據(jù)冗余空間;將每組FLASH芯片中的數(shù)據(jù)產(chǎn)生兩組不相關(guān)的奇偶 校驗(yàn)碼與Reed-Solomon碼相結(jié)合作為冗余編碼,所述冗余編碼分別存儲(chǔ)在每 組FLASH芯片的數(shù)據(jù)冗余空間中;當(dāng)發(fā)生小于等于兩個(gè)的FLASH芯片級(jí)故 障時(shí),通過(guò)所述冗余編碼從仍能正常工作的其余N-2塊FLASH芯片可完整恢 復(fù)數(shù)據(jù)。
5、 如權(quán)利要求4所述的多層次數(shù)據(jù)冗余方法,其特征在于,所述冗余編 碼的存儲(chǔ)位置按一定的策略分布在每組FLASH芯片內(nèi)的每個(gè)FLASH芯片中。
6、 如權(quán)利要求4所述的多層次數(shù)據(jù)冗余方法,其特征在于,根據(jù)可靠性 以及系統(tǒng)存取速度的需求,每組FLASH芯片內(nèi)用于存儲(chǔ)數(shù)據(jù)的FLASH芯片 數(shù)量可以大于N-2塊以增加并行度和容量。
7、 如權(quán)利要求1所述的多層次數(shù)據(jù)冗余方法,其特征在于,對(duì)于大規(guī)模 FLASH存儲(chǔ)陣列中FLASH芯片組級(jí)的存儲(chǔ)單元,所述冗余編碼采用將各個(gè)FLASH芯片組中相應(yīng)位置的FLASH芯片中的每個(gè)比特進(jìn)行奇偶運(yùn)算得到的奇 偶校驗(yàn)碼,額外增加一個(gè)FLASH芯片組作為數(shù)據(jù)冗余空間,并將所述冗余編 碼存入額外增加的FLASH芯片組中;當(dāng)存儲(chǔ)數(shù)據(jù)的FLASH芯片組發(fā)生大于 兩個(gè)FLASH芯片乃至整組FLASH芯片損壞時(shí),可通過(guò)所述冗余編碼利用其 它FLASH芯片組的FLASH芯片完整恢復(fù)數(shù)據(jù)。
8、 如權(quán)利要求7所述的多層次數(shù)據(jù)冗余方法,其特征在于,考慮到對(duì) FLASH芯片組讀寫性能的影響,對(duì)存儲(chǔ)所述奇偶校驗(yàn)碼的校驗(yàn)位的FLASH芯 片組的IO獨(dú)立控制。
9、 如權(quán)利要求8所述的多層次數(shù)據(jù)冗余方法,其特征在于,由于存儲(chǔ)所 述奇偶校驗(yàn)碼的校驗(yàn)位的FLASH芯片組的讀寫比較頻繁,在較大規(guī)模應(yīng)用以 及長(zhǎng)壽命應(yīng)用時(shí)應(yīng)當(dāng)適當(dāng)增加備份組。
10、 如權(quán)利要求7所述的多層次數(shù)據(jù)冗余方法,其特征在于,在數(shù)據(jù)寫入 時(shí),應(yīng)當(dāng)先給出地址,在數(shù)據(jù)寫入緩存的同時(shí)讀出將要覆蓋的數(shù)據(jù)以及校驗(yàn)碼, 之后在寫入數(shù)據(jù)的同時(shí)寫入三者運(yùn)算所產(chǎn)生的新校驗(yàn)位。
全文摘要
本發(fā)明提供一種大規(guī)模FLASH存儲(chǔ)陣列的多層次數(shù)據(jù)冗余方法,將大規(guī)模FLASH存儲(chǔ)陣列的存儲(chǔ)單元分為頁(yè)級(jí)、FLASH芯片級(jí)、FLASH芯片組級(jí)三個(gè)層次,根據(jù)所劃分的層次以及所需的容錯(cuò)等級(jí)選擇不同的冗余編碼存入大規(guī)模FLASH存儲(chǔ)陣列中預(yù)留的數(shù)據(jù)冗余空間中;當(dāng)出現(xiàn)錯(cuò)誤時(shí),利用數(shù)據(jù)冗余空間中的冗余編碼即時(shí)糾正錯(cuò)誤;與現(xiàn)有技術(shù)相比,針對(duì)大規(guī)模FLASH陣列應(yīng)用,在不同的層次采取不同的冗余策略,極大地提高了數(shù)據(jù)存儲(chǔ)的可靠性,充分利用硬件的并行運(yùn)算能力,極大地減少了加入數(shù)據(jù)冗余校驗(yàn)位而引起的IO性能下降,縮短了損壞數(shù)據(jù)重建的時(shí)間代價(jià),并且系統(tǒng)的可靠性和冗余策略可由用戶根據(jù)實(shí)際情況確定,配置靈活、方便,實(shí)現(xiàn)本發(fā)明的目的。
文檔編號(hào)G11C29/04GK101587744SQ200910053399
公開日2009年11月25日 申請(qǐng)日期2009年6月19日 優(yōu)先權(quán)日2009年6月19日
發(fā)明者亮 常, 李華旺, 凱 楊 申請(qǐng)人:上海微小衛(wèi)星工程中心