專利名稱:一種自動(dòng)糾錯(cuò)系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別是涉及一種自動(dòng)糾錯(cuò)系統(tǒng)及方法。
背景技術(shù):
隨著數(shù)字科技的發(fā)展,使得日常生活的數(shù)據(jù)慢慢轉(zhuǎn)變成為以數(shù)字?jǐn)?shù)據(jù)的方 式進(jìn)行存儲(chǔ),并可通過各種不同的接口進(jìn)行數(shù)字?jǐn)?shù)據(jù)的備份與傳輸,從而有利 于提高數(shù)據(jù)存儲(chǔ)的便利性和正確性。然而,在進(jìn)行數(shù)據(jù)傳輸或存儲(chǔ)的過程中, 難免會(huì)出現(xiàn)數(shù)據(jù)傳輸或存儲(chǔ)錯(cuò)誤的情形,目前普遍是利用錯(cuò)誤檢査修正碼
(Error Checking and Correcting, ECC)對(duì)傳輸或存儲(chǔ)的數(shù)據(jù)進(jìn)行檢測(cè)及 糾正,以檢査和糾正數(shù)據(jù)在傳輸或存儲(chǔ)過程中是否有出現(xiàn)錯(cuò)誤的情形。
圖1是現(xiàn)有技術(shù)中的一種ECC糾錯(cuò)系統(tǒng)的結(jié)構(gòu)示意圖,通過它可以說明現(xiàn) 有技術(shù)中ECC算法的運(yùn)算原理。這種ECC糾錯(cuò)系統(tǒng)以預(yù)先確定的具有固定位數(shù) 的數(shù)據(jù)包(本實(shí)施例中為64位)為工作對(duì)象。來自原始數(shù)據(jù)包的被選位被發(fā) 送到多個(gè)奇偶校驗(yàn)樹(本實(shí)施例中為8個(gè)),用于計(jì)算不同數(shù)據(jù)子集的奇偶性。 每個(gè)數(shù)據(jù)子集大約由數(shù)據(jù)包數(shù)據(jù)位的一半組成,而且每個(gè)子集當(dāng)中的數(shù)據(jù)都與 其他子集當(dāng)中的數(shù)據(jù)存在部分重疊。最后得出來的奇偶校驗(yàn)位(也稱為糾錯(cuò)碼 位)將與原始數(shù)據(jù)一起被傳輸或存儲(chǔ)。由于采用這樣的形勢(shì)來選擇數(shù)據(jù)子集, 因而當(dāng)在數(shù)據(jù)傳輸過程中有錯(cuò)誤被引入到原始數(shù)據(jù)中時(shí)可以通過比較由同樣 奇偶計(jì)算方法計(jì)算得到的奇偶校驗(yàn)位與初始糾錯(cuò)碼位來識(shí)別錯(cuò)誤位。盡管此種 ECC糾錯(cuò)系統(tǒng)能夠?yàn)閿?shù)據(jù)完整性提供優(yōu)良的保護(hù),但是奇偶計(jì)算需要復(fù)雜的布 線,從而導(dǎo)致ECC糾錯(cuò)系統(tǒng)不僅速度慢而且十分復(fù)雜;另外,如果數(shù)據(jù)包的大 小發(fā)生改變,就需要重新設(shè)計(jì)ECC糾錯(cuò)系統(tǒng),而且當(dāng)數(shù)據(jù)包大小增加時(shí),ECC 糾錯(cuò)系統(tǒng)的運(yùn)算速度往往會(huì)產(chǎn)生明顯下降。
另外,目前一些發(fā)明專利大多是通過不同的方式實(shí)現(xiàn)產(chǎn)生ECC的功能,但 在糾正錯(cuò)誤位的問題上仍然需要人工進(jìn)行修改,不能實(shí)現(xiàn)自動(dòng)糾正讀寫錯(cuò)誤功
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種自動(dòng)糾錯(cuò)系統(tǒng)及方法,以實(shí)現(xiàn)自動(dòng)糾正存儲(chǔ)介 質(zhì)中的讀寫錯(cuò)誤。
為實(shí)現(xiàn)本發(fā)明的目的而提供的一種自動(dòng)糾錯(cuò)系統(tǒng),設(shè)置在讀寫請(qǐng)求總線和 結(jié)果輸出總線之間,用于實(shí)現(xiàn)在產(chǎn)生錯(cuò)誤檢査修正碼功能的同時(shí)自動(dòng)糾正讀寫 錯(cuò)誤的功能,所述自動(dòng)糾錯(cuò)系統(tǒng)包括存儲(chǔ)介質(zhì)輸入模塊、存儲(chǔ)介質(zhì)存儲(chǔ)模塊、 錯(cuò)誤檢査修正碼產(chǎn)生模塊以及存儲(chǔ)介質(zhì)輸出模塊,其中
所述存儲(chǔ)介質(zhì)輸入模塊,用于向存儲(chǔ)介質(zhì)輸入數(shù)據(jù),和接受錯(cuò)誤檢查修正 碼糾錯(cuò)請(qǐng)求;
所述錯(cuò)誤檢查修正碼產(chǎn)生模塊,用于根據(jù)輸入數(shù)據(jù)或讀出數(shù)據(jù)產(chǎn)生錯(cuò)誤檢 査修正碼;
所述存儲(chǔ)介質(zhì)存儲(chǔ)模塊,用于存儲(chǔ)輸入數(shù)據(jù)以及根據(jù)輸入數(shù)據(jù)編碼產(chǎn)生的 錯(cuò)誤檢查修正碼;
所述存儲(chǔ)介質(zhì)輸出模塊,用于根據(jù)輸入數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢查修正碼和讀出 數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢査修正碼進(jìn)行比較,査找并糾正錯(cuò)誤數(shù)據(jù)位;并將糾錯(cuò)后的 數(shù)據(jù)和錯(cuò)誤檢査修正碼糾錯(cuò)請(qǐng)求發(fā)送給所述存儲(chǔ)介質(zhì)輸入模塊,同時(shí)發(fā)出重新 讀出數(shù)據(jù)請(qǐng)求。
所述存儲(chǔ)介質(zhì)輸出模塊,包括錯(cuò)誤檢査修正碼對(duì)比模塊、錯(cuò)誤檢查修正 碼糾錯(cuò)模塊和請(qǐng)求發(fā)送模塊,其中
所述錯(cuò)誤檢査修正碼對(duì)比模塊,用于根據(jù)輸入數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢査修正碼 和讀出數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢査修正碼進(jìn)行比較,査找錯(cuò)誤數(shù)據(jù)位;
所述錯(cuò)誤檢査修正碼糾錯(cuò)模塊,用于糾正錯(cuò)誤數(shù)據(jù)位;
所述請(qǐng)求發(fā)送模塊,用于將糾錯(cuò)后的數(shù)據(jù)和錯(cuò)誤檢査修正碼糾錯(cuò)請(qǐng)求發(fā)送 給所述存儲(chǔ)介質(zhì)輸入模塊,同時(shí)發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
為實(shí)現(xiàn)本發(fā)明的目的還提供一種自動(dòng)糾錯(cuò)方法,用于自動(dòng)糾正存儲(chǔ)介質(zhì)中 的讀寫錯(cuò)誤,所述方法包括下列步驟
步驟ioo.根據(jù)輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢査修正碼編碼,并將所述根據(jù)輸入數(shù)
據(jù)進(jìn)行編碼得到的錯(cuò)誤檢査修正碼和所述輸入數(shù)據(jù)一并存儲(chǔ);
步驟200.根據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢查修正碼編碼,同時(shí)將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢査修正碼與所述根據(jù)讀出數(shù)據(jù)進(jìn)行編 碼得到的錯(cuò)誤檢查修正碼進(jìn)行對(duì)比,查找錯(cuò)誤數(shù)據(jù)位;
步驟300.根據(jù)所述錯(cuò)誤數(shù)據(jù)位對(duì)讀出數(shù)據(jù)進(jìn)行糾正,并將糾正后的數(shù)據(jù)
輸入存儲(chǔ)介質(zhì),同時(shí)將包括所述錯(cuò)誤數(shù)據(jù)位的信息發(fā)送出去并發(fā)出重新讀出數(shù) 據(jù)請(qǐng)求。
所述步驟ioo,包括下列步驟-
步驟110.根據(jù)輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢査修正碼編碼;
步驟120.將所述錯(cuò)誤檢査修正碼和輸入數(shù)據(jù)一并存儲(chǔ)。
所述步驟IIO,包括下列步驟
步驟111.根據(jù)輸入數(shù)據(jù),對(duì)標(biāo)簽信息進(jìn)行錯(cuò)誤檢查修正碼編碼; 步驟112.根據(jù)輸入數(shù)據(jù),對(duì)數(shù)據(jù)信息進(jìn)行錯(cuò)誤檢査修正碼編碼。 所述對(duì)標(biāo)簽信息進(jìn)行錯(cuò)誤檢查修正碼編碼,是根據(jù)標(biāo)簽信息的位數(shù),對(duì)標(biāo)
簽信息高位加n位零,合并為64位數(shù)據(jù)進(jìn)行編碼。
所述步驟112,包括下列步驟
步驟112a.將N位輸入數(shù)據(jù)分成M (M=N/64)個(gè)64位數(shù)據(jù)data—in;
步驟112b.為第m(m二l )個(gè)64位數(shù)據(jù)data—in,產(chǎn)生8個(gè)64位密鎖Cx, CO, Cl, C2, C4, C8, C16, C32;
步驟112c.將所述8個(gè)64位密鎖Cx, CO, Cl, C2, C4, C8, C16, C32分 別與所述64位數(shù)據(jù)進(jìn)行運(yùn)算,得到8位錯(cuò)誤檢查修正碼
data_ecc
= " (data—in & Cx)
data—ecc[l]二 ~ (~(data—in & CO))
data一ecc[2]二 ' (data—in & Cl)
data_ecc[3]= "(data—in & C2)
data_ecc[4]= ^(data—in & C4)
data_ecc[5]= ("(data—in & C8))
data—ecc[6]二 "(data—in & C16)
data_ecc[7]= "(data—in & C32)
步驟112d.令m=m+l,判斷m是否小于或等于M,若是則返回步驟112b; 否則結(jié)束錯(cuò)誤檢查修正碼編碼。 所述步驟200,包括下列步驟步驟210.根據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢査修正碼編碼;
步驟220.將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢査修正碼與所述根
據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢查修正碼進(jìn)行對(duì)比,査找錯(cuò)誤數(shù)據(jù)位。
所述步驟210,包括下列步驟-
步驟211.根據(jù)讀出的所述輸入數(shù)據(jù),對(duì)標(biāo)簽信息進(jìn)行錯(cuò)誤檢査修正碼編
碼;
步驟212.根據(jù)讀出的所述輸入數(shù)據(jù),對(duì)數(shù)據(jù)信息進(jìn)行錯(cuò)誤檢查修正碼編碼。
所述步驟220,包括下列步驟
步驟221.對(duì)比所述輸入數(shù)據(jù)的標(biāo)簽信息的錯(cuò)誤檢査修正碼與讀出數(shù)據(jù)的 標(biāo)簽信息的錯(cuò)誤檢查修正碼,查找錯(cuò)誤標(biāo)簽信息位;
步驟222.對(duì)比所述輸入數(shù)據(jù)的數(shù)據(jù)信息的錯(cuò)誤檢査修正碼與讀出數(shù)據(jù)的 數(shù)據(jù)信息的錯(cuò)誤檢査修正碼,查找錯(cuò)誤數(shù)據(jù)信息位。
所述步驟300,包括下列步驟
步驟310.根據(jù)所述錯(cuò)誤數(shù)據(jù)位對(duì)讀出的所述輸入數(shù)據(jù)進(jìn)行糾正,對(duì)錯(cuò)誤 數(shù)據(jù)位取反;
步驟320.發(fā)送錯(cuò)誤檢査修正碼糾錯(cuò)請(qǐng)求,并將糾正后的數(shù)據(jù)重新輸入存 儲(chǔ)介質(zhì);
步驟330.將包括所述錯(cuò)誤數(shù)據(jù)位的信息發(fā)送出去并發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
所述步驟330,包括下列步驟
步驟331.將錯(cuò)誤數(shù)據(jù)位的信息組成緩存內(nèi)部錯(cuò)誤檢査修正碼校驗(yàn)結(jié)果總 線發(fā)送出去;
步驟332.將緩存訪問結(jié)果輸出總線中的scacheres—ecc信息發(fā)送出去, 報(bào)告出現(xiàn)錯(cuò)誤檢查修正碼錯(cuò)誤,提醒進(jìn)行重新讀出數(shù)據(jù)。 本發(fā)明的有益效果在于
1. 本發(fā)明的自動(dòng)糾錯(cuò)系統(tǒng)布線簡(jiǎn)單,節(jié)省原材料,運(yùn)算速度快;
2. 本發(fā)明的自動(dòng)糾錯(cuò)系統(tǒng)能夠一次檢測(cè)出多位讀寫錯(cuò)誤,提高糾錯(cuò)效率;
3. 本發(fā)明的自動(dòng)糾錯(cuò)系統(tǒng)不需要人工進(jìn)行修改,能夠?qū)崿F(xiàn)自動(dòng)糾正讀寫錯(cuò)
9誤功能。
圖1是現(xiàn)有技術(shù)中的一種ECC糾錯(cuò)系統(tǒng)的結(jié)構(gòu)示意圖2是本發(fā)明一種自動(dòng)糾錯(cuò)系統(tǒng)的結(jié)構(gòu)示意圖3是本發(fā)明一種自動(dòng)糾錯(cuò)方法的流程圖4是本發(fā)明中對(duì)數(shù)據(jù)進(jìn)行ECC編碼并存儲(chǔ)的流程圖5是本發(fā)明中對(duì)比數(shù)據(jù)輸入前后的ECC進(jìn)行錯(cuò)誤査找的流程圖6是本發(fā)明中根據(jù)錯(cuò)誤信息自動(dòng)糾正讀寫錯(cuò)誤的方法的流程圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí) 施例,對(duì)本發(fā)明的一種自動(dòng)糾錯(cuò)系統(tǒng)及方法進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解, 此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明的一種自動(dòng)糾錯(cuò)系統(tǒng)及方法,是通過自動(dòng)對(duì)寫入Cache的數(shù)據(jù)產(chǎn)生 一份錯(cuò)誤檢査修正碼(Error Checking and Correcting, ECC)并一起存入 Cache中;在讀出數(shù)據(jù)時(shí)再次對(duì)數(shù)據(jù)產(chǎn)生新的ECC,并將新的ECC與原ECC進(jìn) 行比較,得出錯(cuò)誤位信息;自動(dòng)糾正錯(cuò)誤位并通過總線發(fā)送錯(cuò)誤信息,并讓系 統(tǒng)重新讀取糾錯(cuò)后的信息,同時(shí)將糾錯(cuò)后的數(shù)據(jù)存入Cache實(shí)現(xiàn)自動(dòng)糾正存儲(chǔ) 介質(zhì)讀寫錯(cuò)誤。
下面結(jié)合上述目標(biāo)詳細(xì)介紹本發(fā)明一種自動(dòng)糾錯(cuò)系統(tǒng)。圖2是本發(fā)明一種 自動(dòng)糾錯(cuò)系統(tǒng)的結(jié)構(gòu)示意圖,如圖2所示,所述自動(dòng)糾錯(cuò)系統(tǒng)位于讀寫請(qǐng)求總 線和結(jié)果輸出總線之間,包括存儲(chǔ)介質(zhì)輸入模塊l、 ECC產(chǎn)生模塊2、存儲(chǔ) 介質(zhì)存儲(chǔ)模塊3以及存儲(chǔ)介質(zhì)輸出模塊4,其中
所述存儲(chǔ)介質(zhì)輸入模塊1,用于向存儲(chǔ)介質(zhì)輸入數(shù)據(jù)和接受ECC糾錯(cuò)請(qǐng)求;
所述存儲(chǔ)介質(zhì)輸入模塊1,根據(jù)從讀緩存請(qǐng)求總線(Scacheref)和寫緩 存請(qǐng)求總線(Scachewrite)接收到的數(shù)據(jù),向存儲(chǔ)介質(zhì)輸入數(shù)據(jù);同時(shí)接收 通過緩存內(nèi)部ECC校驗(yàn)結(jié)果總線(Scorrect)傳輸?shù)腅CC糾錯(cuò)請(qǐng)求。
所述ECC產(chǎn)生模塊2,用于根據(jù)輸入數(shù)據(jù)或讀出數(shù)據(jù)產(chǎn)生ECC;
較佳地,作為一種可實(shí)施方式,對(duì)64位的輸入數(shù)據(jù)產(chǎn)生ECC。所述存儲(chǔ)介質(zhì)存儲(chǔ)模塊3,用于存儲(chǔ)輸入數(shù)據(jù)以及根據(jù)輸入數(shù)據(jù)編碼產(chǎn)生
的ECC;
所述存儲(chǔ)介質(zhì)存儲(chǔ)模塊3,接收通過緩存內(nèi)部存儲(chǔ)器輸入總線傳輸?shù)臄?shù)據(jù) 并存儲(chǔ)。
所述存儲(chǔ)介質(zhì)輸出模塊4,用于根據(jù)輸入數(shù)據(jù)產(chǎn)生的ECC和讀出數(shù)據(jù)產(chǎn)生 的ECC進(jìn)行比較,査找并糾正錯(cuò)誤數(shù)據(jù)位;并將糾錯(cuò)后的數(shù)據(jù)和ECC糾錯(cuò)請(qǐng)求 發(fā)送給所述存儲(chǔ)介質(zhì)輸入模塊1 ,同時(shí)發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
所述存儲(chǔ)介質(zhì)輸出模塊4,對(duì)通過緩存內(nèi)部存儲(chǔ)器輸出總線(Sramout) 傳輸?shù)臄?shù)據(jù)進(jìn)行處理,對(duì)于沒有錯(cuò)誤的數(shù)據(jù),通過緩存訪問結(jié)果輸出總線和緩 存對(duì)外寫數(shù)據(jù)總線輸出數(shù)據(jù);對(duì)于有錯(cuò)誤的數(shù)據(jù),通過緩存內(nèi)部ECC校驗(yàn)結(jié)果 總線(Scorrect)發(fā)出包括重新讀出數(shù)據(jù)請(qǐng)求的ECC糾錯(cuò)請(qǐng)求。
所述存儲(chǔ)介質(zhì)輸出模塊4,包括ECC對(duì)比模塊41、 ECC糾錯(cuò)模塊42和請(qǐng) 求發(fā)送模塊43,其中
所述ECC對(duì)比模塊41,用于根據(jù)輸入數(shù)據(jù)產(chǎn)生的ECC和讀出數(shù)據(jù)產(chǎn)生的 ECC進(jìn)行比較,查找錯(cuò)誤數(shù)據(jù)位;
所述ECC糾錯(cuò)模塊42,用于糾正所述錯(cuò)誤數(shù)據(jù)位;
所述請(qǐng)求發(fā)送模塊43,用于將糾錯(cuò)后的數(shù)據(jù)和ECC糾錯(cuò)請(qǐng)求發(fā)送給所述 存儲(chǔ)介質(zhì)輸入模塊,同時(shí)發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
所述重新讀出數(shù)據(jù)請(qǐng)求,是通過緩存內(nèi)部ECC校驗(yàn)結(jié)果總線(Scorrect) 發(fā)到存儲(chǔ)介質(zhì)輸入模塊。
相應(yīng)于本發(fā)明的一種自動(dòng)糾錯(cuò)系統(tǒng),本發(fā)明還提供一種自動(dòng)糾錯(cuò)方法,用 于實(shí)現(xiàn)在產(chǎn)生錯(cuò)誤檢査修正碼功能的同時(shí)自動(dòng)糾正讀寫錯(cuò)誤的功能。
圖3是本發(fā)明一種自動(dòng)糾錯(cuò)方法的流程圖,如圖3所示,所述方法包括下 列步驟
步驟100.根據(jù)輸入數(shù)據(jù)進(jìn)行ECC編碼,并將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼 得到的ECC和所述輸入數(shù)據(jù)一并存儲(chǔ);
圖4是本發(fā)明中對(duì)數(shù)據(jù)進(jìn)行ECC編碼并存儲(chǔ)的流程圖,如圖4所示,所述 步驟IOO,包括下列步驟
步驟110.根據(jù)輸入數(shù)據(jù)進(jìn)行ECC編碼;
所述ECC編碼的方法,是現(xiàn)有技術(shù)中一種公開的方法,是根據(jù)需要編碼的
ii位數(shù)不同,相應(yīng)密鎖有不同。在此不再一一贅述。
步驟111.根據(jù)輸入數(shù)據(jù),對(duì)標(biāo)簽信息進(jìn)行ECC編碼;
對(duì)標(biāo)簽信息進(jìn)行ECC編碼的方法是根據(jù)tag信息的位數(shù),對(duì)tag信息高 位加n位零,合并為64位數(shù)據(jù)進(jìn)行編碼。
作為一種可實(shí)施方式,對(duì)于一個(gè)需要存儲(chǔ)的cache行,其中包括256位數(shù) 據(jù)信息和40位標(biāo)簽(tag)信息。
針對(duì)40位標(biāo)簽(tag)信息進(jìn)行ECC編碼,得到tag—ecc[7:0]是(24' b0, tag[39:0]〉的ECC,其中{24, b0, tag[39:0])表示高24位為0,低40位為tag 信息的64位數(shù)據(jù)。
步驟112.根據(jù)輸入數(shù)據(jù),對(duì)數(shù)據(jù)信息進(jìn)行ECC編碼;
步驟112a,將N位輸入數(shù)據(jù)分成M (M=N/64)個(gè)64位數(shù)據(jù)data_in;
步驟112b.為第m(m=l )個(gè)64位數(shù)據(jù)data_in,產(chǎn)生8個(gè)64位密鎖Cx, CO, Cl, C2, C4, C8, C16, C32;
所述64位密鎖對(duì)相應(yīng)的ECC來說是固定的,查詢相應(yīng)ECC算法即能得到, 是一種現(xiàn)有技術(shù),在此不再一一贅述。
步驟112c.將所述8個(gè)64位密鎖Cx, CO, Cl, C2, C4, C8, C16, C32分 別與所述64位數(shù)據(jù)進(jìn)行運(yùn)算,得到8位ECC: data—ecc[O]、 data—ecc[l]、 data—ecc[2] 、 data一ecc[3] 、 data一ecc[4] 、 data_ecc[5]、 data一ecc[6]、 data_ecc[7],所述64位數(shù)據(jù)data_in、64位密鎖與ECC的對(duì)應(yīng)關(guān)系如下(其 中,"&"為二元邏輯與操作;"'"為異或操作,當(dāng)只有一個(gè)操作數(shù)的時(shí)候, "一"表示對(duì)這個(gè)數(shù)所有位,按位進(jìn)行異或,當(dāng)有兩個(gè)操作數(shù)的時(shí)候,"""表 示對(duì)兩個(gè)數(shù)之間相同的位進(jìn)行異或;" "為邏輯非操作。)
data_ecc
= " (data—in & Cx)
data—ecc[l]= (T (data—in & CO))
data—ecc[2]= " (data—in & Cl)
data_ecc[3]= 一(data—in & C2)
data一ecc[4]二 ~(data—in & C4)
data_ecc[5]= ("(data—in & C8))
data_ecc[6]= "(data—in & C16)
data_ecc[7]= "(data—in & C32)作為一種可實(shí)施方式,根據(jù)上述實(shí)施例,針對(duì)256位數(shù)據(jù)信息進(jìn)行ECC 編碼,將256位數(shù)據(jù)信息分成4個(gè)64位數(shù)據(jù)分別進(jìn)行ECC編碼,得到32位 data—ecc信息,8位tag—ecc信息。data—ecc信息是寫入時(shí)對(duì)數(shù)據(jù)進(jìn)行的ECC 編碼結(jié)果data—ecc[7:0]位是data[63:0]位的ECC, data_ecc[15:8]位是 data[127:64]位的ECC, data—ecc[23:16]位是data[191:128]位的ECC, data—ecc [31:24]位是data[255:192]位的ECC。
步驟112d.令HFm+l,判斷m是否小于或等于M,若是則返回步驟112b; 否則結(jié)束ECC編碼。
步驟120.將所述ECC和輸入數(shù)據(jù)一并存儲(chǔ)。
根據(jù)上述假設(shè),將所述40位tag信息的8位ECC和40位tag信息,256
位數(shù)據(jù)信息的32位ECC和256位數(shù)據(jù)信息一起存儲(chǔ)到cache 。
步驟200.對(duì)讀出的所述輸入數(shù)據(jù)再次進(jìn)行ECC編碼,同時(shí)將所述根據(jù)輸
入數(shù)據(jù)進(jìn)行編碼得到的ECC與所述根據(jù)讀出數(shù)據(jù)進(jìn)行編碼得到的ECC進(jìn)行對(duì)
比,査找錯(cuò)誤數(shù)據(jù)位;
讀取存儲(chǔ)的數(shù)據(jù),對(duì)于讀出的數(shù)據(jù)生成新的ECC,同時(shí)根據(jù)隨數(shù)據(jù)一起讀
出的舊ECC,進(jìn)行對(duì)比,査找錯(cuò)誤數(shù)據(jù)位。
圖5是本發(fā)明中對(duì)比數(shù)據(jù)輸入前后的ECC進(jìn)行錯(cuò)誤査找的流程圖,如圖5
所示,所述步驟200,包括下列步驟
步驟210.根據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行ECC編碼;
步驟211.根據(jù)讀出的所述輸入數(shù)據(jù),對(duì)其標(biāo)簽信息進(jìn)行ECC編碼;
步驟212.根據(jù)讀出的所述輸入數(shù)據(jù),對(duì)其數(shù)據(jù)信息進(jìn)行ECC編碼。
步驟210中所述ECC編碼方法與步驟110的編碼方法完全一致,在此不再
--贅述o
作為一種可實(shí)施方式,根據(jù)上述假設(shè),對(duì)讀出的data, tag信息重新進(jìn)行 編碼,產(chǎn)生data_chk, tag一chk信息,其中data—chk [7:0]位是data[63:0] 位的新的ECC, data—chk[15:8]位是data[127:64]位的新的ECC , data—chk[23:16]位是data[191:128]位的新的ECC, data_chk[31:24]位是 data[255:192]位的新的ECC; tag—chk[7:0]是{24, b0, tag[39:0]}的新的 ECC,其中{24, bO,tag[39:0])表示高24位為0,低40位為tag信息的64位
、jl i r~i數(shù)據(jù)。
13步驟220.將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼得到的ECC與所述根據(jù)讀出的所 述輸入數(shù)據(jù)進(jìn)行編碼得到的ECC進(jìn)行對(duì)比,査找錯(cuò)誤數(shù)據(jù)位;
根據(jù)ECC算法,將新舊校驗(yàn)碼進(jìn)行異或操作,得到一個(gè)8位的值,這8 位的值根據(jù)ECC算法提供的表進(jìn)行比較,如果是64種不同值中的一種,則表 示64位數(shù)據(jù)相應(yīng)位出錯(cuò),如果是0,表示沒有錯(cuò)誤,如果是其他,表示出現(xiàn) 了不可糾正的錯(cuò)誤。此方法為現(xiàn)有技術(shù),在此不再一一贅述。
步驟221.對(duì)比所述輸入數(shù)據(jù)的標(biāo)簽信息的ECC與讀出數(shù)據(jù)的標(biāo)簽信息的 ECC,査找錯(cuò)誤標(biāo)簽信息位;
步驟222.對(duì)比所述輸入數(shù)據(jù)的數(shù)據(jù)信息的ECC與讀出數(shù)據(jù)的數(shù)據(jù)信息的 ECC,查找錯(cuò)誤數(shù)據(jù)信息位;
作為一種可實(shí)施方式,根據(jù)上述實(shí)施例,對(duì)輸入的data一ecc和data_chk、 tag—ecc和tag—chk信息,以及ECC校驗(yàn)有效信息refvec—ecc, tag位有效信 息tag—valid,進(jìn)行查錯(cuò)。生成data—error, data—fatal, tag—error, tag_fatal 信息。具體過程如下
對(duì)于新舊校驗(yàn)碼data—ecc[7:0]和data—chk[7:0],進(jìn)行"""操作,得到 中間變量syndrome, syndrome = data—ecc data一chk, data一error二i syndrome; data一fatel二data—error && err—syndrome, 其中err—syndrome表示錯(cuò)誤不可 糾正。
對(duì)于新舊校驗(yàn)碼tag—ecc[7:0]和tag—chk[7.'0],進(jìn)行"'"操作,得到中 間變量syndrome, syndrome = data—ecc data_chk, tag—error =| syndrome tag—fatal=tag_error && err—syndrome, 其中err—syndrome表示錯(cuò)誤不可纟4 正。
步驟220中的對(duì)比方法,不同于現(xiàn)有技術(shù)中的奇偶檢驗(yàn)法,它能夠一次檢 測(cè)出多位錯(cuò)誤數(shù)據(jù)。
步驟300.根據(jù)所述錯(cuò)誤數(shù)據(jù)位對(duì)讀出數(shù)據(jù)進(jìn)行糾正,并將糾正后的數(shù)據(jù) 輸入存儲(chǔ)介質(zhì),同時(shí)將包括所述錯(cuò)誤數(shù)據(jù)位的信息發(fā)送出去并發(fā)出重新讀出數(shù) 據(jù)請(qǐng)求。
作為一種可實(shí)施方式,對(duì)于64位數(shù)據(jù)輸入:data—in, 8位舊ECC: data—ecc, 8位新ECC: data_chk,產(chǎn)生64位糾正的數(shù)據(jù)輸出data—out,
圖6是本發(fā)明中根據(jù)錯(cuò)誤信息自動(dòng)糾正讀寫錯(cuò)誤的方法的流程圖,如圖6
14所示,所述步驟300,包括下列步驟-
步驟310.根據(jù)所述錯(cuò)誤數(shù)據(jù)位對(duì)讀出的所述輸入數(shù)據(jù)進(jìn)行糾正,對(duì)錯(cuò)誤 數(shù)據(jù)位取反;
在步驟220中,已經(jīng)査找到錯(cuò)誤數(shù)據(jù)位后,對(duì)錯(cuò)誤位糾錯(cuò)采用機(jī)器糾錯(cuò), 糾錯(cuò)后的正確數(shù)據(jù)的每一位,是根據(jù)這一位是否錯(cuò)誤,來選擇是用數(shù)據(jù),還是 取反。
作為一種可實(shí)施方式,例如某一位原來數(shù)據(jù)是data[4],它的固有錯(cuò)誤標(biāo) 記是syndrome4 ,檢査得到的syndrome等于syndrome4,則正確數(shù)據(jù) new一data[4] = (syndrome 二二 syndrome4) 7 ! data [4] : data [4], 這個(gè)表達(dá) 式表示該位錯(cuò)誤則取反,正確則取原值。
步驟320.發(fā)送ECC糾錯(cuò)請(qǐng)求,將糾正后的數(shù)據(jù)重新輸入存儲(chǔ)介質(zhì); 發(fā)送ECC糾錯(cuò)請(qǐng)求,將由二級(jí)緩存發(fā)出的scachewrite—allow信號(hào)(目的 是告訴上級(jí)模塊,二級(jí)緩存是否做好了準(zhǔn)備接受寫數(shù)據(jù)請(qǐng)求)置為0,不再允 許外部的寫請(qǐng)求,而優(yōu)先將來自scorrect的正確的糾正信息通過sramin總線 (sramin總線是scache內(nèi)部的信號(hào),作用是將寫入的信息送入存儲(chǔ)器中)寫 入存儲(chǔ)器。
作為一種可實(shí)施方式,當(dāng)error為1時(shí),如果ECC校驗(yàn)有效(表示檢測(cè)到 ECC錯(cuò)誤),并且tag—error或者data—error為1 (表示tag或者data有 錯(cuò),而非不可糾正錯(cuò)誤),那么表示取出的數(shù)據(jù)有錯(cuò),需要進(jìn)行糾正。cache 輸出模塊里用信號(hào) scacheres一ecc = sramout一ecccheck & (tag—error | data—error)來向系統(tǒng)發(fā)出是否有ECC錯(cuò)誤的信息。
步驟330.將包括所述錯(cuò)誤數(shù)據(jù)位的信息發(fā)送出去并發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
所述步驟330,包括下列步驟
步驟331.將錯(cuò)誤數(shù)據(jù)位的信息組成scorrect總線發(fā)送出去; 緩存內(nèi)部ECC校驗(yàn)結(jié)果(scorrect)總線,表示如下 scorrect [O]二scorrect一valid; scorrect [2 1] =scorrect—scseti; scorrect[15:3]=scorrect—scindex; scorrect[16:16]=scorrect—wen;scorrect [56 17] =scorrect—tag', scorrect[312:57]=scorrect—data;
其中
scorrect—valid,表示是否需要進(jìn)行ECC糾錯(cuò),置1表示需要進(jìn)行ECC 糾錯(cuò);置O表示不需要進(jìn)行ECC糾錯(cuò);
SCOrreCt_SCSeti,根據(jù)判斷出哪一組數(shù)據(jù)出錯(cuò)得到,表示出錯(cuò)數(shù)據(jù)組編
號(hào);
scorrect_scindex,包含讀請(qǐng)求的索弓l信息;
所述索引信息的位數(shù)表示的是scache中索引塊的數(shù)量,不同的scache 可能定義的長(zhǎng)度會(huì)有不同,這里13位表示2的13次方種映射可能,如果每個(gè) 索引塊大小是64個(gè)字節(jié),那么這個(gè)scache就是8k * 64B 二 512KB大小。
SCOrrect_wen,表示是否要將正確數(shù)據(jù)寫入存儲(chǔ)器,置1表示要將正確數(shù) 據(jù)寫入存儲(chǔ)器;置0表示不要將正確數(shù)據(jù)寫入存儲(chǔ)器;
對(duì)cache來說,讀出里面數(shù)據(jù)有很多種情況,如果是一個(gè)置換操作,讀的 目的是將舊的數(shù)據(jù)寫出去,寫到內(nèi)存中去,同時(shí)將新的數(shù)據(jù)寫入這個(gè)被置換的 位置。此時(shí)如果糾錯(cuò),需要將正確數(shù)據(jù)寫出去,而不是寫入cache,因?yàn)樵瓉?位置已經(jīng)被新的數(shù)據(jù)代替了.這種情況下,正確數(shù)據(jù)重新在cache里走了一遍, 然后輸出,而不需要再寫入存儲(chǔ)器。
scorrect_tag,表示經(jīng)過校驗(yàn)后得到的正確tag信息; scorrect—data,表示經(jīng)過校驗(yàn)后得到的正確數(shù)據(jù)信息。 通過設(shè)置scorrect總線中的參數(shù),發(fā)出所述錯(cuò)誤數(shù)據(jù)位的信息。 步驟332.將緩存訪問結(jié)果輸出(scacheres)總線(scacheres總線是 scache模塊的輸出信號(hào),將讀取出來的數(shù)據(jù)和信息傳送出去)中的 scacheres—ecc信息發(fā)送出去,報(bào)告出現(xiàn)ECC錯(cuò)誤,提醒進(jìn)行重新讀出數(shù)據(jù)。 步驟330中,發(fā)出重新讀出數(shù)據(jù)請(qǐng)求,使得正確的數(shù)據(jù)被重新讀取,不必 人工進(jìn)行查找再加以改動(dòng),實(shí)現(xiàn)了自動(dòng)糾錯(cuò)。 本發(fā)明的有益效果在于
1. 本發(fā)明的自動(dòng)糾錯(cuò)系統(tǒng)布線簡(jiǎn)單,節(jié)省原材料,運(yùn)算速度快;
2. 本發(fā)明的自動(dòng)糾錯(cuò)系統(tǒng)能夠一次檢測(cè)出多位讀寫錯(cuò)誤,提高糾錯(cuò)效率;
3. 本發(fā)明的自動(dòng)糾錯(cuò)系統(tǒng)不需要人工進(jìn)行修改,能夠?qū)崿F(xiàn)自動(dòng)糾正讀寫錯(cuò)誤功能。
通過結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的描述,本發(fā)明的其它方面及特征對(duì)本 領(lǐng)域的技術(shù)人員而言是顯而易見的。
以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述和說明,這些實(shí)施例應(yīng)被認(rèn)為其只 是示例性的,并不用于對(duì)本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行 解釋。
權(quán)利要求
1. 一種自動(dòng)糾錯(cuò)系統(tǒng),設(shè)置在讀寫請(qǐng)求總線和結(jié)果輸出總線之間,其特征在于,所述自動(dòng)糾錯(cuò)系統(tǒng)包括存儲(chǔ)介質(zhì)輸入模塊、存儲(chǔ)介質(zhì)存儲(chǔ)模塊、錯(cuò)誤檢查修正碼產(chǎn)生模塊以及存儲(chǔ)介質(zhì)輸出模塊,其中所述存儲(chǔ)介質(zhì)輸入模塊,用于向存儲(chǔ)介質(zhì)輸入數(shù)據(jù),和接受錯(cuò)誤檢查修正碼糾錯(cuò)請(qǐng)求;所述錯(cuò)誤檢查修正碼產(chǎn)生模塊,用于根據(jù)輸入數(shù)據(jù)或讀出數(shù)據(jù)產(chǎn)生錯(cuò)誤檢查修正碼;所述存儲(chǔ)介質(zhì)存儲(chǔ)模塊,用于存儲(chǔ)輸入數(shù)據(jù)以及根據(jù)輸入數(shù)據(jù)編碼產(chǎn)生的錯(cuò)誤檢查修正碼;所述存儲(chǔ)介質(zhì)輸出模塊,用于對(duì)根據(jù)輸入數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢查修正碼和讀出數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢查修正碼進(jìn)行比較,查找并糾正錯(cuò)誤數(shù)據(jù)位;并將糾錯(cuò)后的數(shù)據(jù)和錯(cuò)誤檢查修正碼糾錯(cuò)請(qǐng)求發(fā)送給所述存儲(chǔ)介質(zhì)輸入模塊,同時(shí)發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
2. 根據(jù)權(quán)利要求1所述的自動(dòng)糾錯(cuò)系統(tǒng),其特征在于,所述存儲(chǔ)介質(zhì)輸出 模塊,包括錯(cuò)誤檢查修正碼對(duì)比模塊、錯(cuò)誤檢査修正碼糾錯(cuò)模塊和請(qǐng)求發(fā)送 模塊,其中所述錯(cuò)誤檢査修正碼對(duì)比模塊,用于根據(jù)輸入數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢査修正碼 和讀出數(shù)據(jù)產(chǎn)生的錯(cuò)誤檢查修正碼進(jìn)行比較,查找錯(cuò)誤數(shù)據(jù)位; 所述錯(cuò)誤檢査修正碼糾錯(cuò)模塊,用于糾正錯(cuò)誤數(shù)據(jù)位;所述請(qǐng)求發(fā)送模塊,用于將糾錯(cuò)后的數(shù)據(jù)和錯(cuò)誤檢査修正碼糾錯(cuò)請(qǐng)求發(fā)送 給所述存儲(chǔ)介質(zhì)輸入模塊,同時(shí)發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
3. —種自動(dòng)糾錯(cuò)誤方法,用于實(shí)現(xiàn)在產(chǎn)生錯(cuò)誤檢查修正碼功能的同時(shí)自動(dòng) 糾正讀寫錯(cuò)誤的功能,其特征在于,所述方法包括下列步驟步驟100.根據(jù)輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢査修正碼編碼,并將所述根據(jù)輸入數(shù) 據(jù)進(jìn)行編碼得到的錯(cuò)誤檢查修正碼和所述輸入數(shù)據(jù)一并存儲(chǔ);步驟200.根據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢查修正碼編碼,同時(shí)將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢查修正碼與所述根據(jù)讀出數(shù)據(jù)進(jìn)行編 碼得到的錯(cuò)誤檢查修正碼進(jìn)行對(duì)比,査找錯(cuò)誤數(shù)據(jù)位;步驟300.根據(jù)所述錯(cuò)誤數(shù)據(jù)位對(duì)讀出數(shù)據(jù)進(jìn)行糾正,并將糾正后的數(shù)據(jù) 輸入存儲(chǔ)介質(zhì),同時(shí)將包括所述錯(cuò)誤數(shù)據(jù)位的信息發(fā)送出去并發(fā)出重新讀出數(shù) 據(jù)請(qǐng)求。
4. 根據(jù)權(quán)利要求3所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟IOO,包 括下列步驟步驟110.根據(jù)輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢査修正碼編碼;步驟120.將所述錯(cuò)誤檢査修正碼和輸入數(shù)據(jù)一并存儲(chǔ)。
5. 根據(jù)權(quán)利要求4所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟IIO,包 括下列步驟-步驟111.根據(jù)輸入數(shù)據(jù),對(duì)標(biāo)簽信息進(jìn)行錯(cuò)誤檢査修正碼編碼; 步驟112.根據(jù)輸入數(shù)據(jù),對(duì)數(shù)據(jù)信息進(jìn)行錯(cuò)誤檢查修正碼編碼。
6. 根據(jù)權(quán)利要求5所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述對(duì)標(biāo)簽信息進(jìn) 行錯(cuò)誤檢査修正碼編碼,是根據(jù)標(biāo)簽信息的位數(shù),對(duì)標(biāo)簽信息高位加n位零, 合并為64位數(shù)據(jù)進(jìn)行編碼。
7. 根據(jù)權(quán)利要求5所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟112,包 括下列步驟步驟112a.將N位輸入數(shù)據(jù)分成M (M=N/64)個(gè)64位數(shù)據(jù)data_in;步驟112b.為第m(m二l )個(gè)64位數(shù)據(jù)data_in,產(chǎn)生8個(gè)64位密鎖Cx, CO, Cl, C2, C4, C8, C16, C32;步驟112c.將所述8個(gè)64位密鎖Cx, C0, Cl, C2, C4, C8, C16, C32分 別與所述64位數(shù)據(jù)進(jìn)行運(yùn)算,得到8位錯(cuò)誤檢査修正碼data—ecc
二 ' (data_in & Cx)data—ecc[l]= (一(data—in & CO))data_ecc[2]= — (data—in & Cl)data—ecc[3]= "(data—in & C2)data_ecc[4]= '(data—in & C4)data—ecc[5]二 ("(data—in & C8))data—ecc[6]二 —(data_in & C16)data—ecc[7]= —(data—in & C32)步驟112d.令npm+l,判斷m是否小于或等于M,若是則返回步驟112b;否則結(jié)束錯(cuò)誤檢查修正碼編碼。
8. 根據(jù)權(quán)利要求3所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟200,包 括下列步驟步驟210.根據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢査修正碼編碼;步驟220.將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢査修正碼與所述根 據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢査修正碼進(jìn)行對(duì)比,査找錯(cuò)誤數(shù) 據(jù)位。
9. 根據(jù)權(quán)利要求8所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟210,包 括下列步驟步驟211.根據(jù)讀出的所述輸入數(shù)據(jù),對(duì)標(biāo)簽信息進(jìn)行錯(cuò)誤檢査修正碼編碼;步驟212.根據(jù)讀出的所述輸入數(shù)據(jù),對(duì)數(shù)據(jù)信息進(jìn)行錯(cuò)誤檢査修正碼編碼。
10. 根據(jù)權(quán)利要求8所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟220, 包括下列步驟步驟221.對(duì)比所述輸入數(shù)據(jù)的標(biāo)簽信息的錯(cuò)誤檢查修正碼與讀出數(shù)據(jù)的 標(biāo)簽信息的錯(cuò)誤檢査修正碼,査找錯(cuò)誤標(biāo)簽信息位;步驟222.對(duì)比所述輸入數(shù)據(jù)的數(shù)據(jù)信息的錯(cuò)誤檢査修正碼與讀出數(shù)據(jù)的 數(shù)據(jù)信息的錯(cuò)誤檢查修正碼,查找錯(cuò)誤數(shù)據(jù)信息位。
11. 根據(jù)權(quán)利要求3所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟300, 包括下列步驟步驟310.根據(jù)所述錯(cuò)誤數(shù)據(jù)位對(duì)讀出的所述輸入數(shù)據(jù)進(jìn)行糾正,對(duì)錯(cuò)誤 數(shù)據(jù)位取反;步驟320.發(fā)送錯(cuò)誤檢査修正碼糾錯(cuò)請(qǐng)求,并將糾正后的數(shù)據(jù)重新輸入存 儲(chǔ)介質(zhì);步驟330.將包括所述錯(cuò)誤數(shù)據(jù)位的信息發(fā)送出去并發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。
12. 根據(jù)權(quán)利要求11所述的自動(dòng)糾錯(cuò)方法,其特征在于,所述步驟330, 包括下列步驟步驟331.將錯(cuò)誤數(shù)據(jù)位的信息組成緩存內(nèi)部錯(cuò)誤檢査修正碼校驗(yàn)結(jié)果總線發(fā)送出去;步驟332.將緩存訪問結(jié)果輸出總線中的scacheres—ecc信息發(fā)送出去, 報(bào)告出現(xiàn)錯(cuò)誤檢査修正碼錯(cuò)誤,提醒進(jìn)行重新讀出數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種自動(dòng)糾錯(cuò)系統(tǒng)及方法。該方法包括下列步驟根據(jù)輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢查修正碼編碼,并將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢查修正碼和所述輸入數(shù)據(jù)一并存儲(chǔ);根據(jù)讀出的所述輸入數(shù)據(jù)進(jìn)行錯(cuò)誤檢查修正碼編碼,同時(shí)將所述根據(jù)輸入數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢查修正碼與所述根據(jù)讀出數(shù)據(jù)進(jìn)行編碼得到的錯(cuò)誤檢查修正碼進(jìn)行對(duì)比,查找錯(cuò)誤數(shù)據(jù)位;根據(jù)所述錯(cuò)誤數(shù)據(jù)位對(duì)讀出數(shù)據(jù)進(jìn)行糾正,并將糾正后的數(shù)據(jù)輸入存儲(chǔ)介質(zhì),同時(shí)將包括所述錯(cuò)誤數(shù)據(jù)位的信息發(fā)送出去并發(fā)出重新讀出數(shù)據(jù)請(qǐng)求。其能夠?qū)崿F(xiàn)自動(dòng)糾正存儲(chǔ)介質(zhì)中的讀寫錯(cuò)誤。
文檔編號(hào)G06F11/10GK101477481SQ20091007799
公開日2009年7月8日 申請(qǐng)日期2009年2月6日 優(yōu)先權(quán)日2009年2月6日
發(fā)明者胡偉武, 誠(chéng) 錢, 陳云霽 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所