原校驗(yàn)碼及該原始數(shù)據(jù)在具有與原校驗(yàn)碼一致的校驗(yàn)碼的全部數(shù)據(jù)中 所處位置的原位置信息。
[0044] 其中,原始數(shù)據(jù)與指定數(shù)據(jù)是相互對應(yīng)的數(shù)據(jù),即原始數(shù)據(jù)為存儲至指定區(qū)域的 數(shù)據(jù),而指定數(shù)據(jù)為由指定區(qū)域讀取中的數(shù)據(jù),或者說,如果指定數(shù)據(jù)不存在錯誤,則指定 數(shù)據(jù)也就是原始數(shù)據(jù)。另外,現(xiàn)有技術(shù)中還存在保證數(shù)據(jù)可靠性的另一種方式-數(shù)據(jù)備份, 即在存儲的數(shù)據(jù)出現(xiàn)錯誤時,由備份的數(shù)據(jù)中恢復(fù)對應(yīng)數(shù)據(jù)的方式,且通過ECC校驗(yàn)算法 生成的校驗(yàn)碼確定數(shù)據(jù)的對應(yīng)關(guān)系,但是,運(yùn)種方式需要大幅度增加忍片的面積用于存儲 數(shù)據(jù)的備份,而本申請?zhí)峁┑纳鲜黾夹g(shù)方案中,獲取的原異或信息、原校驗(yàn)碼、原位置信息 及原始數(shù)據(jù)的位數(shù)和小于原始數(shù)據(jù)與原校驗(yàn)碼的位數(shù)和的兩倍,因此,相對于上述數(shù)據(jù)備 份的方式,本申請?zhí)峁┑募夹g(shù)方案能夠在一定程度上減少需要增加的忍片面積,降低了忍 片的制造成本。
[0045] S12 :生成與原異或信息對應(yīng)的N個初選數(shù)據(jù),并按照指定算法計算每個初選數(shù)據(jù) 的目標(biāo)校驗(yàn)碼。
[0046] 生成與原異或信息對應(yīng)的N個初選數(shù)據(jù)即為按照原異或信息倒推出能夠?qū)ζ渲?定位進(jìn)行異或后得到原異或信息的全部數(shù)據(jù),即,原異或信息的位數(shù)小于原始數(shù)據(jù)的位數(shù), 因此,一個原異或信息可對應(yīng)多個數(shù)據(jù)。
[0047] S13 :確定與原校驗(yàn)碼一致的目標(biāo)校驗(yàn)碼對應(yīng)的初選數(shù)據(jù)為終選數(shù)據(jù),并確定終選 數(shù)據(jù)在具有與原校驗(yàn)碼一致的校驗(yàn)碼的全部數(shù)據(jù)中所處的位置為目標(biāo)位置信息。
[0048] 原校驗(yàn)碼的位數(shù)小于原始數(shù)據(jù)的位數(shù),因此,一個原校驗(yàn)碼可對應(yīng)多個數(shù)據(jù),也因 此,確定出的與原校驗(yàn)碼一致的目標(biāo)校驗(yàn)碼對應(yīng)的初選數(shù)據(jù)可能為多個。
[0049] S14 :確定與原位置信息一致的目標(biāo)位置信息對應(yīng)的終選數(shù)據(jù)為原始數(shù)據(jù)。
[0050] 在具有同樣的校驗(yàn)碼的數(shù)據(jù)組成的數(shù)據(jù)池中具有同一位置的數(shù)據(jù)肯定是相同的, 因此,通過上述步驟能夠有效且準(zhǔn)確的對原始數(shù)據(jù)進(jìn)行恢復(fù)。
[0051] 本申請中當(dāng)讀取到的指定數(shù)據(jù)存在錯誤時,利用與原始數(shù)據(jù)對應(yīng)的原異或信息得 到N個初選數(shù)據(jù),進(jìn)而確定驗(yàn)證碼與原始數(shù)據(jù)的原驗(yàn)證碼匹配的初選數(shù)據(jù)為終選數(shù)據(jù),最 后確定位置信息與原始數(shù)據(jù)的原位置信息匹配的終選數(shù)據(jù)為原始數(shù)據(jù),由此,無論指定數(shù) 據(jù)中出現(xiàn)錯誤的位數(shù)為幾位,均可W基于原異或信息、原校驗(yàn)碼及原位置信息確定出正確 的原始數(shù)據(jù),通過運(yùn)種由上述信息反推得到正確的原始數(shù)據(jù)的糾錯方式,實(shí)現(xiàn)了任意錯誤 數(shù)據(jù)的完全可修復(fù),保證了數(shù)據(jù)可靠性,解決了現(xiàn)有技術(shù)對RAM存儲的數(shù)據(jù)進(jìn)行糾錯的技 術(shù)方案中存在的可靠性較低的問題,進(jìn)一步提高了RAM的RAS性能及忍片可靠性。
[0052] 上述實(shí)施例提供的一種數(shù)據(jù)恢復(fù)方法中,對原始數(shù)據(jù)的指定位進(jìn)行異或得到原異 或信息,可W包括:
[0053] 對原始數(shù)據(jù)中相鄰的兩位數(shù)據(jù)進(jìn)行異或,得到其長度等于原始數(shù)據(jù)長度的一半的 原異或信息。
[0054] 需要說明的是,對原始數(shù)據(jù)中指定位進(jìn)行異或時,指定位可W根據(jù)實(shí)際需要進(jìn)行 確定,如第一位和最后一位,第二位和倒數(shù)第二位,W此類推,也可W根據(jù)實(shí)際需要僅僅對 原始數(shù)據(jù)中的部分?jǐn)?shù)據(jù)位進(jìn)行異或,均在本發(fā)明的保護(hù)范圍之內(nèi)。優(yōu)選的,可對原始數(shù)據(jù)中 相鄰的兩位數(shù)據(jù)進(jìn)行異或,如對于8位的原始數(shù)據(jù),將第一位和第二位進(jìn)行異或,第Ξ位和 第四位進(jìn)行異或,第五位和第六位進(jìn)行異或,第屯位和第八位進(jìn)行異或,并將異或得到的數(shù) 據(jù)依次排列,組成4位的原異或信息,此時,對原異或信息進(jìn)行反推,可得到2的4次方個數(shù) 據(jù)。而異或的運(yùn)算法則為:a弟b=戶a八b)V(a八寸),如果a、b兩個值不相同,則異 或結(jié)果為1,如果a、b兩個值相同,則異或結(jié)果為0。在得到原始數(shù)據(jù)的原異或信息后,可W將原異或信息存儲至對應(yīng)位置,W供讀取。 陽化5] 而按照指定算法對原始數(shù)據(jù)進(jìn)行計算得到原校驗(yàn)碼,可W包括:
[0056] 利用ECC校驗(yàn)算法對原始數(shù)據(jù)進(jìn)行計算,得到原校驗(yàn)碼。
[0057] 其中,ECC校驗(yàn)算法即為現(xiàn)有技術(shù)中的經(jīng)典算法,在此不再寶述。通過ECC校驗(yàn)算 法對原始數(shù)據(jù)進(jìn)行計算,可得到對應(yīng)的原校驗(yàn)碼,如對8位的數(shù)據(jù)進(jìn)行計算,可得到5位的 校驗(yàn)碼,數(shù)據(jù)位數(shù)每增加一倍,校驗(yàn)碼位數(shù)僅僅增加一位,即對16位的數(shù)據(jù)進(jìn)行計算,可得 到6位的校驗(yàn)碼,W此類推。在得到原始數(shù)據(jù)的原校驗(yàn)碼后,可將原校驗(yàn)碼與原始數(shù)據(jù)一同 寫入RAM中,W供讀取。
[005引另外,確定原始數(shù)據(jù)的位置信息可W包括:
[0059] 將具有與原校驗(yàn)碼一致的校驗(yàn)碼的全部數(shù)據(jù)按照預(yù)設(shè)規(guī)律進(jìn)行排序,得到數(shù)據(jù)序 列,并確定原始數(shù)據(jù)在數(shù)據(jù)序列中所處的位置為原位置信息。
[0060] 由于原校驗(yàn)碼的位數(shù)小于原始數(shù)據(jù)的位數(shù),因此,一個原校驗(yàn)碼可對應(yīng)多個數(shù)據(jù), 如原始數(shù)據(jù)是8位時,5位的校驗(yàn)碼可對應(yīng)2725個數(shù)據(jù),而原始數(shù)據(jù)僅僅為其中一個,因此 對運(yùn)些數(shù)據(jù)按照預(yù)設(shè)規(guī)律,可W是按照數(shù)據(jù)的大小,也可W是隨機(jī)排序等,形成數(shù)據(jù)序列, 確定原始數(shù)據(jù)在數(shù)據(jù)序列中的位置為原位置信息,原位置信息的位數(shù)與數(shù)據(jù)的個數(shù)相關(guān), 當(dāng)數(shù)據(jù)的個數(shù)不大于10個時,原位置信息的位數(shù)僅需1位,當(dāng)數(shù)據(jù)的個數(shù)大于10個時,原 位置信息的位數(shù)需2位,W此類推。如原始數(shù)據(jù)為8位時,其原位置信息為1位,原始數(shù)據(jù) 為16位時,其位置信息為2位。在得到原位置信息后,可將原位置信息存儲至對應(yīng)位置,W 供讀取。
[0061] 上述實(shí)施例提供的一種數(shù)據(jù)恢復(fù)方法中,如圖2所示,還可W包括W下步驟:
[0062] S21 :由指定區(qū)域中讀取到指定數(shù)據(jù),并利用ECC校驗(yàn)算法判斷指定數(shù)據(jù)中是否存 在錯誤數(shù)據(jù)位,如果是,則執(zhí)行步驟S22,如果否,則執(zhí)行步驟S23。
[0063] 需要說明的是,利用ECC校驗(yàn)算法判斷指定數(shù)據(jù)中是否存在錯位數(shù)據(jù)位為現(xiàn)有技 術(shù)中的經(jīng)典方法,在此不再寶述。
[0064] S22 :判斷錯誤數(shù)據(jù)位是否為1位,如果是,則執(zhí)行步驟S24,如果否,則執(zhí)行步驟 S25。
[00化]S23 :確定指定數(shù)據(jù)即為正確的原始數(shù)據(jù)。
[0066] S24 :按照ECC校驗(yàn)算法得到原始數(shù)據(jù)。
[0067] 由于ECC校驗(yàn)算法可對1位的數(shù)據(jù)錯位進(jìn)行糾錯,因此,當(dāng)判斷出指定數(shù)據(jù)中存在 1位的數(shù)據(jù)錯誤位時,即該錯誤為可糾正的錯誤,此時僅需利用ECC校驗(yàn)算法對其進(jìn)行糾錯 即可,至于利用ECC校驗(yàn)算法進(jìn)行1位數(shù)據(jù)錯誤糾錯的過程為現(xiàn)有技術(shù)中的經(jīng)典方法,在此 不再寶述。
[0068] S25 :獲取原異或信息、原校驗(yàn)碼及原位置信息。
[0069] 如果指定數(shù)據(jù)中存在的錯誤的數(shù)據(jù)位數(shù)大于1位,即該錯誤位不可糾正的錯誤, 此時,則需要利用本發(fā)明實(shí)施例提供的一種數(shù)據(jù)恢復(fù)方法得到原始數(shù)據(jù),由此,能夠?qū)CC校驗(yàn)算法與本申請?zhí)峁┑囊环N數(shù)據(jù)恢復(fù)方法相結(jié)合,根據(jù)數(shù)據(jù)位數(shù)的不同采用不同的方案 恢復(fù)原始數(shù)據(jù),在節(jié)省邏輯資源的基礎(chǔ)上實(shí)現(xiàn)了原始數(shù)據(jù)的完全恢復(fù),保證了數(shù)據(jù)可靠性。 陽070] W8位寬的RAM為例,介紹本發(fā)明實(shí)施例提供的一種數(shù)據(jù)恢復(fù)方法的實(shí)施過程:
[0071] 寫入RAM操作:利用ECC校驗(yàn)算法生成與8位原始數(shù)據(jù)對應(yīng)的5位原校驗(yàn)碼,并將 原始數(shù)據(jù)及原校驗(yàn)碼存入RAM中,采用相鄰兩位異或的方式生成與原始數(shù)據(jù)對應(yīng)的4位原 異或信息,利用原校驗(yàn)碼確定原始數(shù)據(jù)的1位原位置信息,并將原異或信息及原位置信息 存入單獨(dú)的RAM中; 陽0巧讀取RAM操作:讀取RAM中的指定數(shù)據(jù),并利用ECC校驗(yàn)算法判斷指定數(shù)據(jù)是否存 在錯誤,如果不存在,則直接對獲取的指定數(shù)據(jù)進(jìn)行發(fā)送等處理,如果存在,則判斷錯誤數(shù) 據(jù)的位數(shù),如果是1位,則直接利用ECC校驗(yàn)算法恢復(fù)原始數(shù)據(jù),否則,則觸發(fā)獲取原異或信 息、原位置信息及原校驗(yàn)碼,并按照本發(fā)明中公開的上述方案恢復(fù)原始數(shù)據(jù)。
[0073] 與上述方法實(shí)施例相對應(yīng),本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)恢復(fù)裝置,如圖3所 示,可W包括:
[0074] 讀取模塊31,用于如果由指定區(qū)域讀取到的指定數(shù)據(jù)存在錯誤,則讀取原異或信 息、原校驗(yàn)碼及原位置信息;
[0075] 異或模塊32,用于預(yù)先將原始數(shù)據(jù)存儲至指定區(qū)域時對該原始數(shù)據(jù)的指定位進(jìn)行 異或得到原異或信息;
[0076] 校驗(yàn)碼模塊33,用于預(yù)先將原始數(shù)據(jù)存儲至指定區(qū)域時按照指定算法對該原始數(shù) 據(jù)進(jìn)行計算得到原校驗(yàn)碼;
[0077] 位置模塊34,用于預(yù)