專利名稱:應用于nandflash存儲設備的快速讀寫方法
技術領域:
本發(fā)明涉及一種nandflash存儲設備讀寫方法,具體涉及一種應用于nandflash存儲設備的快速讀寫方法。
背景技術:
現(xiàn)在市場上新出的nandflash許多都要求存儲類控制器支持以Ik字節(jié)為單位的ECC校驗,以一個物理頁大小為4k的nandflash為例,通常用戶數(shù)據(jù)在一個實際物理頁的存放方式為如附圖1所示,nandflash內存由若干物理塊組成,物理塊包含若干個物理頁,物理頁包括管理字節(jié)區(qū)、若干個由至少兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)和若干個分別與所述用戶數(shù)據(jù)區(qū)一一對應的錯誤校驗區(qū)(ECC),每個錯誤校驗區(qū)(ECC)用于校驗并糾錯其負責的用戶數(shù)據(jù)區(qū)的錯誤代碼,所述管理字節(jié)區(qū)用來建立邏輯頁與物理頁之間或者建立邏輯塊與物理塊之間的對應關系。管理理字節(jié)一般是存儲控制器廠家根據(jù)自己的管理算法定義的幾個字節(jié),在實際應用中需要單獨讀取這部分數(shù)據(jù)用來建立邏輯頁與物理頁之間或者建立邏輯塊與物理塊之間的對應關系和提供其它用戶管理信息。Ik用戶數(shù)據(jù)包含用戶數(shù)據(jù)兩個扇區(qū)的數(shù)據(jù)。LBA: logical block address,邏輯塊地址對應于用戶一個扇區(qū)(512個字節(jié))的數(shù)據(jù),PC主端與存儲類設備通信是以一個扇區(qū)(512個字節(jié))為單位進行讀寫的。ECC: error correction code,錯誤校驗(代碼)。nandflash物理特性上使得其數(shù)據(jù)讀寫過程中會發(fā)生一定幾率的錯誤,需要有個對應的錯誤檢驗和糾正的機制,所以存儲控制器一般都提供ECC用于用戶數(shù)據(jù)的檢測和糾正.Nandflash的ECC,常見的算法有BCH和海明碼;
當用戶只需要Ik用戶數(shù)據(jù)中前一個扇區(qū)或后一個扇區(qū)的數(shù)據(jù),如果將整個Ik的數(shù)據(jù)都加載到存儲控制器緩存中,勢必存儲控制器緩存需要多增加一個扇區(qū)大小的容量;另外本來只需要對一個扇區(qū)進行糾錯,如果對整個Ik用戶數(shù)據(jù)都進行糾錯的話,必然降低了對nandflash的讀速度。因此如何提高了對nandflash存儲設備的讀寫速度,成為本領域技術人員努力的方向。
發(fā)明內容
本發(fā)明目的是提供一種應用于nandflash存儲設備的快速讀寫方法,該方法,提高了對nandflash存儲設備的讀寫速度,且保證了讀寫信息準確性且硬件利用率高。為達到上述目的,本發(fā)明采用的技術方案是一種應用于nandflash存儲設備的快速讀寫方法,所述nandflash存儲器由若干物理塊組成,物理塊包含若干個物理頁,物理頁包括管理字節(jié)區(qū)、若干個由左、右兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)和若干個分別與所述用戶數(shù)據(jù)區(qū)一一對應的具有糾錯功能的錯誤校驗區(qū)(ECC),每個錯誤校驗區(qū)(ECC)用于校驗并糾錯其負責的用戶數(shù)據(jù)區(qū)中錯誤代碼,所述管理字節(jié)區(qū)用來建立邏輯頁與物理頁之間的對應關系或者建立邏輯塊與物理塊之間的對應關系;
還包括一組ECC控制寄存器用于對管理字節(jié)區(qū)、用戶數(shù)據(jù)區(qū)及錯誤校驗區(qū)分別控制是否進行糾錯,此ECC控制寄存器包括
管理字節(jié)使能位,用于控制是否對所述管理字節(jié)區(qū)進行糾錯;
左扇區(qū)數(shù)據(jù)使能位,用于控制是否對所述用戶數(shù)據(jù)區(qū)中一個扇區(qū)進行糾錯處理; 右扇區(qū)數(shù)據(jù)使能位,用于控制是否對所述用戶數(shù)據(jù)區(qū)中另一個扇區(qū)進行糾錯處理;
錯誤校驗使能位,用于控制是否對所述錯誤校驗區(qū)(ECC)進行糾錯處理;
管理字節(jié)長度控制位,用于配置管理字節(jié)的長度,從而控制對物理頁中使能的區(qū)域進行糾錯,而對物理頁中關閉的區(qū)域不進行糾錯;
所述用戶數(shù)據(jù)區(qū)包括一個第一用戶數(shù)據(jù)區(qū)和至少一個第二用戶數(shù)據(jù)區(qū),所述錯誤校驗區(qū)(ECC)包括一個第一錯誤校驗區(qū)(ECC)和至少一個第二錯誤校驗區(qū)(ECC),所述第一錯誤校驗區(qū)(ECC)用于將其相應的第一用戶數(shù)據(jù)區(qū)和管理字節(jié)區(qū)合在一起進行校驗糾錯編碼;在對nandflash進行讀操作時當在邏輯上讀用戶數(shù)據(jù)區(qū)中左扇區(qū)時,則使能ECC控制寄存器中左扇區(qū)數(shù)據(jù)使能位,如果左扇區(qū)位于第一用戶數(shù)據(jù)區(qū)內,則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將左扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,再將右扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器緩存中,否則,發(fā)送讀命令將左扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,再將右扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器的緩存中;
當在邏輯上讀用戶數(shù)據(jù)區(qū)中右扇區(qū)時,則使能ECC控制寄存器中右扇區(qū)數(shù)據(jù)使能位,如果右扇區(qū)位于第一用戶數(shù)據(jù)區(qū)內,則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息和左扇區(qū)數(shù)據(jù)讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將右扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,否貝U,發(fā)送讀命令將左扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器的緩存中,將扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯;
當在邏輯上讀一個由左、右兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)時,則使能ECC控制寄存器中左、右扇區(qū)數(shù)據(jù)使能位,如果用戶數(shù)據(jù)區(qū)為第一用戶數(shù)據(jù)區(qū),則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將用戶數(shù)據(jù)區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,否則,發(fā)送讀命令將用戶數(shù)據(jù)區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯;
在對nandflash進行寫操作時當對第一用戶數(shù)據(jù)區(qū)中寫數(shù)據(jù)時,將用戶管理信息與待寫入第一用戶數(shù)據(jù)區(qū)的數(shù)據(jù)經BCH模塊進行編碼生成BCH碼,再將用戶管理信息、待寫入第一用戶數(shù)據(jù)區(qū)的數(shù)據(jù)和BCH碼分別寫入用戶管理信息區(qū)、第一用戶數(shù)據(jù)區(qū)和第一錯誤校驗區(qū)(ECC);
當對第二用戶數(shù)據(jù)區(qū)中寫數(shù)據(jù)時,則管理字節(jié)長度控制位無效,再將待寫入第二用戶數(shù)據(jù)區(qū)的數(shù)據(jù)經BCH模塊進行編碼生成BCH碼,再將待寫入第二用戶數(shù)據(jù)區(qū)的數(shù)據(jù)和BCH碼分別寫入第二用戶數(shù)據(jù)區(qū)和第二錯誤校驗區(qū)(ECC)。上述技術方案中的進一步改進方案如下1.上述方案中,所述物理頁包括4個用戶數(shù)據(jù)區(qū),4個錯誤校驗區(qū)(ECC)。2.上述方案中,所述用戶管理信息區(qū)長度為8個字節(jié),包括4個字節(jié)的管理字節(jié)和4個字節(jié)的CRC校驗碼。由于上述技術方案運用,本發(fā)明與現(xiàn)有技術相比具有下列優(yōu)點和效果
本發(fā)明應用于nandflash存儲設備的快速讀寫方法,其硬件在ECC控制寄存器提供了一個機制去使能或關閉相關區(qū)域數(shù)據(jù)是否需要糾錯,所以如果我們只需要讀取前一個扇區(qū)數(shù)據(jù)到存儲控制器緩存中時,我們可以只使能左扇區(qū)數(shù)據(jù)區(qū)域,讓整個Ik數(shù)據(jù)+BCH碼需要經過ECC通道進行查錯,但只需要讀左扇區(qū)數(shù)據(jù)到存儲控制器緩存中進行糾錯;基于上面同樣的原因,我們在實際讀取數(shù)據(jù)時,可能只需要讀取右扇區(qū)數(shù)據(jù)到存儲控制器緩存中,而且存儲控制器緩存就只能提供一個扇區(qū)的容量可用(多讀出的數(shù)據(jù)會覆蓋掉前面的有用數(shù)據(jù)),因此,我們在只需要讀取后一個扇區(qū)數(shù)據(jù)到存儲控制器緩存中時,可以配置ECC控制寄存器,只使能右扇區(qū)數(shù)據(jù)區(qū)域,將整個Ik數(shù)據(jù)+BCH碼經過ECC通道進行查錯,但只讀右扇區(qū)數(shù)據(jù)到存儲控制器緩存中進行糾錯;又提高了對nandflash存儲設備的讀寫速度。
附圖1為現(xiàn)有技術nandflash存儲器結構示意 附圖2為本發(fā)明nandflash存儲器結構示意 附圖3為本發(fā)明管理字節(jié)讀操作流程 附圖4為本發(fā)明ECC控制寄存器結構示意 附圖5為本發(fā)明用戶數(shù)據(jù)讀操作流程 附圖6為本發(fā)明用戶數(shù)據(jù)寫操作流程圖。
具體實施例方式下面結合附圖及實施例對本發(fā)明作進一步描述
實施例一種應用于nandflash存儲設備的快速讀寫方法,所述nandflash存儲器由若干物理塊組成,物理塊包含若干個物理頁,物理頁包括管理字節(jié)區(qū)、若干個由左、右兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)和若干個分別與所述用戶數(shù)據(jù)區(qū)一一對應的具有糾錯功能的錯誤校驗區(qū)(ECC),每個錯誤校驗區(qū)(ECC)用于校驗并糾錯其負責的用戶數(shù)據(jù)區(qū)中錯誤代碼,所述管理字節(jié)區(qū)用來建立邏輯頁與物理頁之間的對應關系或者建立邏輯塊與物理塊之間的對應關系;
還包括一組ECC控制寄存器用于對管理字節(jié)區(qū)、用戶數(shù)據(jù)區(qū)及錯誤校驗區(qū)分別控制是否進行糾錯,此ECC控制寄存器包括
管理字節(jié)使能位,用于控制是否對所述管理字節(jié)區(qū)進行糾錯;
左扇區(qū)數(shù)據(jù)使能位,用于控制是否對所述用戶數(shù)據(jù)區(qū)中一個扇區(qū)進行糾錯處理; 右扇區(qū)數(shù)據(jù)使能位,用于控制是否對所述用戶數(shù)據(jù)區(qū)中另一個扇區(qū)進行糾錯處理;
錯誤校驗使能位,用于控制是否對所述錯誤校驗區(qū)(ECC)進行糾錯處理;
管理字節(jié)長度控制位,用于配置管理字節(jié)的長度,從而控制對物理頁中使能的區(qū)域進行糾錯,而對物理頁中關閉的區(qū)域不進行糾錯;
所述用戶數(shù)據(jù)區(qū)包括一個第一用戶數(shù)據(jù)區(qū)和至少一個第二用戶數(shù)據(jù)區(qū),所述錯誤校驗區(qū)(ECC)包括一個第一錯誤校驗區(qū)(ECC)和至少一個第二錯誤校驗區(qū)(ECC),所述第一錯誤校驗區(qū)(ECC)用于將其相應的第一用戶數(shù)據(jù)區(qū)和管理字節(jié)區(qū)合在一起進行校驗糾錯編碼;在對nandflash進行讀操作時當在邏輯上讀用戶數(shù)據(jù)區(qū)中左扇區(qū)時,則使能ECC控制寄存器中左扇區(qū)數(shù)據(jù)使能位,如果左扇區(qū)位于第一用戶數(shù)據(jù)區(qū)內,則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將左扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,再將右扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器緩存中,否則,發(fā)送讀命令將左扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,再將右扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器的緩存中;
當在邏輯上讀用戶數(shù)據(jù)區(qū)中右扇區(qū)時,則使能ECC控制寄存器中右扇區(qū)數(shù)據(jù)使能位,如果右扇區(qū)位于第一用戶數(shù)據(jù)區(qū)內,則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息和左扇區(qū)數(shù)據(jù)讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將右扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,否貝U,發(fā)送讀命令將左扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器的緩存中,將扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯;
當在邏輯上讀一個由左、右兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)時,則使能ECC控制寄存器中左、右扇區(qū)數(shù)據(jù)使能位,如果用戶·數(shù)據(jù)區(qū)為第一用戶數(shù)據(jù)區(qū),則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將用戶數(shù)據(jù)區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,否則,發(fā)送讀命令將用戶數(shù)據(jù)區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯;
在對nandflash進行寫操作時當對第一用戶數(shù)據(jù)區(qū)中寫數(shù)據(jù)時,將用戶管理信息與待寫入第一用戶數(shù)據(jù)區(qū)的數(shù)據(jù)經BCH模塊進行編碼生成BCH碼,再將用戶管理信息、待寫入第一用戶數(shù)據(jù)區(qū)的數(shù)據(jù)和BCH碼分別寫入用戶管理信息區(qū)、第一用戶數(shù)據(jù)區(qū)和第一錯誤校驗區(qū)(ECC);
當對第二用戶數(shù)據(jù)區(qū)中寫數(shù)據(jù)時,則管理字節(jié)長度控制位無效,再將待寫入第二用戶數(shù)據(jù)區(qū)的數(shù)據(jù)經BCH模塊進行編碼生成BCH碼,再將待寫入第二用戶數(shù)據(jù)區(qū)的數(shù)據(jù)和BCH碼分別寫入第二用戶數(shù)據(jù)區(qū)和第二錯誤校驗區(qū)(ECC)。上述物理頁包括4個用戶數(shù)據(jù)區(qū),4個錯誤校驗區(qū)(ECC),上述用戶管理字節(jié)為4個字節(jié),CRC校驗碼長度為4個字節(jié)。上述內容進一步闡述如下。對管理字節(jié)會單獨采用一個查錯糾錯算法
從實際分析和測試的情況來看,絕大多數(shù)nandflash的絕大部分物理頁這幾個字節(jié)都沒有錯,只有極少數(shù)物理頁有錯。我們只采用一個簡單的查錯算法,只判定有沒有錯,如有錯,則采用將管理字節(jié)和后面的Ik數(shù)據(jù)作為一個整體,利用原有的ECC模塊進行糾錯,如沒錯,系統(tǒng)就直接獲取管理字節(jié)數(shù)據(jù)。用戶只需要讀一個扇區(qū)的數(shù)據(jù)
我們將實際存放的每一個最小讀寫單位數(shù)據(jù)分成4個區(qū)域,如表I所示
表I¥戶管理信息丨左扇區(qū)(512個字節(jié))數(shù)據(jù)丨右扇區(qū)(512個字節(jié))數(shù)據(jù) jCRCCode結合相關的硬件,使每一個區(qū)域都可以單獨控制要不要進行糾錯,另外每次管理字節(jié)的長度是可配置的,從而可以控制只對使能的區(qū)域進行糾錯,而對關閉的區(qū)域不進行糾錯。本發(fā)明設計相關的硬件機制,再結合軟件算法實現(xiàn)相關功能。以一個長度為8個字節(jié)的管理信息,采用BCH糾錯算法的一個實際應用為例,進行以下詳細設計說明。1. ECC control register 如附圖 4 所不。Ctrl_MIEn, Ctrl_LeftEn, Ctrl_RightEn 及 ECC_En:這些控制位用于控制相關區(qū)域要不要糾錯。我們數(shù)據(jù)的存放順序為8個字節(jié)(管理信息)+左扇區(qū)(512個字節(jié))數(shù)據(jù)+右扇區(qū)(512個字節(jié))+ BCHCode,根據(jù)系統(tǒng)的設計需要,使能相應的控制位(設置為“ I”)表示相應的部分數(shù)據(jù)需要糾錯,關閉相應的控制位(設置為“O”)表示相應的部分數(shù)據(jù)不需要糾錯。MI[3:0]:選擇管理字節(jié)的長度,如表2所示
表2
Μ [3:0] I管理信息數(shù)據(jù)長度
權利要求
1.一種應用于nandflash存儲設備的快速讀寫方法,所述nandflash存儲器由若干物理塊組成,物理塊包含若干個物理頁,物理頁包括管理字節(jié)區(qū)、若干個由左、右兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)和若干個分別與所述用戶數(shù)據(jù)區(qū)一一對應的具有糾錯功能的錯誤校驗區(qū)(ECC),每個錯誤校驗區(qū)(ECC)用于校驗并糾錯其負責的用戶數(shù)據(jù)區(qū)中錯誤代碼,所述管理字節(jié)區(qū)用來建立邏輯頁與物理頁之間的對應關系或者建立邏輯塊與物理塊之間的對應關系;其特征在于 還包括一組ECC控制寄存器用于對管理字節(jié)區(qū)、用戶數(shù)據(jù)區(qū)及錯誤校驗區(qū)分別控制是否進行糾錯,此ECC控制寄存器包括 管理字節(jié)使能位,用于控制是否對所述管理字節(jié)區(qū)進行糾錯; 左扇區(qū)數(shù)據(jù)使能位,用于控制是否對所述用戶數(shù)據(jù)區(qū)中一個扇區(qū)進行糾錯處理; 右扇區(qū)數(shù)據(jù)使能位,用于控制是否對所述用戶數(shù)據(jù)區(qū)中另一個扇區(qū)進行糾錯處理; 錯誤校驗使能位,用于控制是否對所述錯誤校驗區(qū)(ECC)進行糾錯處理; 管理字節(jié)長度控制位,用于配置管理字節(jié)的長度,從而控制對物理頁中使能的區(qū)域進行糾錯,而對物理頁中關閉的區(qū)域不進行糾錯; 所述用戶數(shù)據(jù)區(qū)包括一個第一用戶數(shù)據(jù)區(qū)和至少一個第二用戶數(shù)據(jù)區(qū),所述錯誤校驗區(qū)(ECC)包括一個第一錯誤校驗區(qū)(ECC)和至少一個第二錯誤校驗區(qū)(ECC),所述第一錯誤校驗區(qū)(ECC)用于將其相應的第一用戶數(shù)據(jù)區(qū)和管理字節(jié)區(qū)合在一起進行校驗糾錯編碼;在對nandflash進行讀操作時當在邏輯上讀用戶數(shù)據(jù)區(qū)中左扇區(qū)時,則使能ECC控制寄存器中左扇區(qū)數(shù)據(jù)使能位,如果左扇區(qū)位于第一用戶數(shù)據(jù)區(qū)內,則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將左扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,再將右扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器緩存中,否則,發(fā)送讀命令將左扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,再將右扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器的緩存中; 當在邏輯上讀用戶數(shù)據(jù)區(qū)中右扇區(qū)時,則使能ECC控制寄存器中右扇區(qū)數(shù)據(jù)使能位,如果右扇區(qū)位于第一用戶數(shù)據(jù)區(qū)內,則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息和左扇區(qū)數(shù)據(jù)讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將右扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,否貝U,發(fā)送讀命令將左扇區(qū)讀到BCH模塊解碼查錯,但不加載到控制器的緩存中,將扇區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯; 當在邏輯上讀一個由左、右兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)時,則使能ECC控制寄存器中左、右扇區(qū)數(shù)據(jù)使能位,如果用戶數(shù)據(jù)區(qū)為第一用戶數(shù)據(jù)區(qū),則配置ECC控制寄存器中管理字節(jié)長度控制位有效(長度為8),發(fā)送讀命令將用戶管理信息讀入BCH模塊解碼查錯,但不加載到控制器緩存中,將用戶數(shù)據(jù)區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯,否則,發(fā)送讀命令將用戶數(shù)據(jù)區(qū)數(shù)據(jù)讀到BCH模塊解碼查錯,并加載到控制器緩存中進行糾錯; 在對nandflash進行寫操作時當對第一用戶數(shù)據(jù)區(qū)中寫數(shù)據(jù)時,將用戶管理信息與待寫入第一用戶數(shù)據(jù)區(qū)的數(shù)據(jù)經BCH模塊進行編碼生成BCH碼,再將用戶管理信息、待寫入第一用戶數(shù)據(jù)區(qū)的數(shù)據(jù)和BCH碼分別寫入用戶管理信息區(qū)、第一用戶數(shù)據(jù)區(qū)和第一錯誤校驗區(qū)(ECC); 當對第二用戶數(shù)據(jù)區(qū)中寫數(shù)據(jù)時,則管理字節(jié)長度控制位無效,再將待寫入第二用戶數(shù)據(jù)區(qū)的數(shù)據(jù)經BCH模塊進行編碼生成BCH碼,再將待寫入第二用戶數(shù)據(jù)區(qū)的數(shù)據(jù)和BCH碼分別寫入第二用戶數(shù)據(jù)區(qū)和第二錯誤校驗區(qū)(ECC)。
2.根據(jù)權利要求1所述的快速讀寫方法,其特征在于所述物理頁包括4個用戶數(shù)據(jù)區(qū),4個錯誤校驗區(qū)(ECC)。
3.根據(jù)權利要求1所述的快速讀寫方法,其特征在于所述用戶管理信息區(qū)長度為8個字節(jié),包括4個字節(jié)的管理字節(jié)和4個字節(jié)的CRC校驗碼。
全文摘要
本發(fā)明提供一種應用于nandflash存儲設備的快速讀寫方法,包括一ECC控制寄存器和用于對管理字節(jié)區(qū)查錯的管理查錯分區(qū),此ECC控制寄存器包括管理字節(jié)使能位、左扇區(qū)數(shù)據(jù)使能位、右扇區(qū)數(shù)據(jù)使能位、錯誤校驗使能位、管理字節(jié)長度控制位;讀用戶數(shù)據(jù)區(qū)中左扇區(qū)時,則使能ECC控制寄存器中左扇區(qū)數(shù)據(jù)使能位,如果左扇區(qū)位于第一用戶數(shù)據(jù)區(qū)內,則配置ECC控制寄存器中管理字節(jié)長度控制位有效;讀一個由左、右兩個扇區(qū)組成的用戶數(shù)據(jù)區(qū)時,則使能ECC控制寄存器中左、右扇區(qū)數(shù)據(jù)使能位,如果用戶數(shù)據(jù)區(qū)為第一用戶數(shù)據(jù)區(qū),則配置ECC控制寄存器中管理字節(jié)長度控制位有效。本發(fā)明提高了對nandflash存儲設備的讀寫速度,又保證了加載信息準確性且硬件利用率。
文檔編號G06F11/10GK103064640SQ20121059154
公開日2013年4月24日 申請日期2012年12月31日 優(yōu)先權日2012年12月31日
發(fā)明者鄭茳, 肖佐楠, 匡啟和, 王廷平, 薛毅 申請人:蘇州國芯科技有限公司