一種存儲單元失效糾錯的方法及存儲器的制造方法
【技術領域】
[0001 ]本申請涉及存儲領域,尤其涉及一種存儲單元失效糾錯的方法及存儲器。
【背景技術】
[0002]任何系統的實現都需要硬件設備的支持,硬件設備中常用的設備為具有存儲功能的芯片,芯片需要對接收到的數據存儲時,需要進行寫入過程,當需要輸出芯片中的數據時,則對芯片中所存儲的數據進行輸出讀取過程。然而,在進行寫入過程或者讀取過程中,均無法避免可能造成的寫入出錯以及讀取出錯。對于寫入出錯或讀取出錯體現為兩種情況,一種是比特(bit)硬失效,另一種是比特軟失效,比特硬失效指的的是芯片中的硬件設備存儲器中某個用于存放比特的位置出現硬件損壞,導致該位置只能存儲一種比特,比如只能存儲為“I”的比特,而對于需要寫入為“O”的比特,也存儲為“I”。比特軟失效指的是在對芯片中的存儲器進行寫入或讀取的過程中,由于數據在傳輸過程中由于波動跳變導致的比特出錯。比特硬失效只能通過對硬件存儲器修復來進行糾錯,而比特軟失效,則可以通過設計糾錯方法來進行糾錯,目前所提出的糾錯方法中主要是針對比特軟失效的情況。
[0003]當前具有存儲功能的芯片內部所采用的糾錯檢錯方案都是錯誤檢查和糾正(英文全稱:Error Correcting Code,英文縮寫:ECC)方案,而ECC方案都是線形的存儲,考慮功耗和面積的問題,該方案只能對讀寫的數據中單個比特進行糾錯,如果碰到讀寫中造成的多bit失效或錯誤,目前所使用的ECC方案無法進行糾錯,使得糾錯成功率較低。
【發明內容】
[0004]本申請提供了一種存儲單元失效糾錯的方法,可實現提高存儲器內存儲單元失效糾錯的成功率,本申請還提供了相關的存儲器。
[0005]第一方面提供一種存儲單元失效糾錯的方法,應用于存儲器,
[0006]存儲器內設置有N個存儲單元,每個存儲單元用于存儲一個比特數,M個存儲器單元所存儲的比特數組成第一數據集合;
[0007]在對M個存儲單元進行寫入比特數或讀取比特數時,S卩對M個存儲單元寫入或讀取第一數據集合時,相應地生成用于校驗M個存儲單元內第一數據集合的校驗碼;通過該校驗碼檢測該M個存儲單元內是否有錯誤比特,當第一數據集合內出現錯誤比特時,再通過該校驗碼對該錯誤比特進行第一次糾錯;
[0008]若第一次糾錯失敗,則確定與第一數據集合存在關聯關系的的第二數據集合,第二數據集合是由Y個存儲單元所存儲的比特數組成的,其中,所述第二數據集合內包含所述錯誤比特,第一數據集合與第二數據集合的關聯關系可以通過一個關聯比特實現;第二數據集合有對應的用于校驗第二數據集合的校驗碼,則能夠通過校驗第二數據集合的校驗碼對所述錯誤比特進行糾錯。這樣,一個數據集合內即使出現了多個錯誤的比特,導致該數據集合的校驗碼無法進行糾錯時,也能夠通過另外的同樣包含有該錯誤比特的數據集合的校驗碼對該錯誤比特進行一一糾錯,提高了糾錯的成功率。
[0009]一種可能的實現方式中,校驗第一數據集合的校驗碼以及校驗第二數據集合的校驗碼均由所述存儲器的芯片獨立生成。
[0010]通過對存儲器的芯片進行電路設計,使得當存儲器在存儲單元內寫入或讀取數據時,自動生成對應的校驗碼,這樣,校驗碼的生成不用通過處理器進行調度校驗碼函數計算生成,提高了校驗碼的生成效率,也提高了校驗碼的查錯糾錯效率。
[0011]另一種可能的實現方式中,校驗所述第一數據集合的校驗碼由存儲器的芯片獨立生成,校驗第二數據集合的校驗碼由處理器通過調用校驗碼函數生成。
[0012]由于存儲器在生產廠商對存儲器進行生成時,可能固定了存儲器的芯片只能對第一數據集合的校驗碼進行獨立生成,為了使得已經生產的存儲器適用于本申請所提供的糾錯方法,所以對于第二數據集合的校驗碼,可以通過處理器通過調用校驗碼函數計算生成,即無需對存儲器的芯片進行改動,提高了產品的兼容性。
[0013]第二方面提供一種存儲器,所述存儲器存儲有第一數據集合和第二數據集合,所述存儲器包括糾錯單元和確定單元;
[0014]所述糾錯單元用于:當所述第一數據集合內出現錯誤比特時,通過校驗所述第一數據集合的校驗碼對所述錯誤比特進行糾錯;
[0015]所述確定單元用于:若無法通過校驗所述第一數據集合的校驗碼對所述錯誤比特進行糾錯,確定所述存儲器內的第二數據集合,所述第一數據集合與所述第二數據集合存在預設關聯關系,所述第二數據集合內包含所述錯誤比特;
[0016]所述糾錯單元還用于:通過校驗所述第二數據集合的校驗碼對所述錯誤比特進行糾錯。
[0017]另一種可能的實現方式中,存儲器包括I/O接口、控制器、緩存以及存儲介質,所述I/O接口與所述控制器連接,所述控制器與所述緩存連接,所述緩存與所述存儲介質連接;所述存儲介質內存儲有第一數據集合和第二數據集合,所述控制器用于實現以下方法:
[0018]當所述存儲介質內的第一數據集合內出現錯誤比特時,通過校驗所述第一數據集合的校驗碼對所述錯誤比特進行糾錯;
[0019]若無法通過校驗所述第一數據集合的校驗碼對所述錯誤比特進行糾錯,確定所述存儲介質內的第二數據集合,所述第一數據集合與所述第二數據集合存在預設關聯關系,所述第二數據集合內包含所述錯誤比特;
[0020]通過校驗所述第二數據集合的校驗碼對所述錯誤比特進行糾錯。
【附圖說明】
[0021]圖1為本申請中一種存儲單元失效糾錯的方法的示意圖;
[0022]圖2為本申請中第一數據集合與第二數據集合的關聯關系的一個示意圖;
[0023]圖3為本申請中第一數據集合與第二數據集合的關聯關系的另一示意圖;
[0024]圖4為本申請中一種存儲器的示意圖;
[0025]圖5為本申請中另一種存儲器的示意圖。
【具體實施方式】
[0026]本申請提供了一種存儲單元失效糾錯的方法及存儲器,用于提高對存儲器內存儲單元失效糾錯的成功率。
[0027]下面將結合本申請中的附圖,對本申請中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0028]參照圖1所示,本申請提供一種存儲單元失效糾錯的方法,應用于存儲器,包括以下步驟:
[0029]101、所述存儲器存儲有第一數據集合;當所述第一數據集合內出現錯誤比特時,通過校驗所述第一數據集合的校驗碼對所述錯誤比特進行糾錯;
[0030]存儲器內所存儲的數據均是以二進制數的比特形式存儲的,一個比特具有“O”或“I”的表現形式,一串有序的比特用于表示該數據的具體內容。存儲器對比特的存儲均是通過線性存儲的,而對于一段線性存儲的比特可以形成一個數據集合。由于在對比特進行存儲時,可能會造成某個比特出現錯誤,使得數據內容有誤,所以存儲器內需生成有用于校驗數據集合的校驗碼。
[0031]校驗碼具有查錯和糾錯能力,存儲器內生成有用于校驗所述第一數據集合的校驗碼,當檢測到第一數據集合內出現錯誤比特時,則能夠通過校驗所述第一數據集合的校驗碼對所述錯誤比特進行糾錯,將錯誤的比特改為正確。
[0032]102、若通過校驗所述第一數據集合的校驗碼對所述錯誤比特進行糾錯失敗,則確定所述存儲器內的第二數據集合,所述第一數據集合與所述第二數據集合存在預設關聯關系,所述第二數據集合內包含所述錯誤比特;
[0033]由于目前的校驗碼糾錯方案,只能對一段線性比特進行一個比特的糾錯和兩個比特的查錯,而當一段線性比特中出現兩個或兩個以上的錯誤比特時,目前的校驗碼方案無法進行糾錯,也不能保證能檢測出錯。所以在校驗所述第一數據集合的校驗碼對所述第一數據集合進行糾錯時,可能會出現糾錯失敗的情況。此時表明所述第一數據集合內出現的錯誤比特包括兩個或兩個以上,為了對所述第一數據集合內出現的兩個或兩個以上的錯誤比特進行糾錯,本申請提供一種二維糾錯方法,本方法中需先確定與所述第一數據集合關聯的第二數據集合,所述第二數據集合內包含所述錯誤比特。如圖2所示,若把存儲器的存儲邏輯當做一個存儲面,且第一數據集合為存儲面中的行,而第二數據集合則可以為存儲面中的列,第一數據集合與第二數據集合存在關聯,使得第一數據集合與第二數據集合存在重合的比特。當第一數據集合內出現兩個或兩個以上的錯誤比特時,則可以確定錯誤比特所在列中的第二數據集合。
[0034]103、通過校驗所述第二數據集合的校驗碼對所述錯誤比特進行糾錯;
[0035]如圖2所示,第二數據集合,即圖2中的列也有對應的校驗碼對第二數據集合進行糾錯和查錯,當校驗第一數據集合的校驗碼糾錯失敗時,則通過校驗第二數據集合的校驗碼對錯誤比特進行糾錯,以實現對一個數據集合中出現兩個或兩個以上的錯誤比特進行糾錯,提高了數據的準確性。
[0036]當校驗所述第二數據集合的校驗碼對所述錯誤比特進行糾錯失敗時,則表示第二數據集合內還出現了另外一個或多個錯誤比特,這種情況下,同樣可以使用本申請所提供的二維糾錯方法對第二數據集合內出現的另外的錯誤比特進行糾錯,即,確定所述另外的錯誤比特所屬的另外的數據集合,再通過對另外的數據集合進行糾錯以對該另外的錯誤比特進行糾錯,對所述另外的錯誤比特糾錯成功后,再通過校驗所述第二數據集合的校驗碼對所述第二數據集合進行糾錯,這樣,多個數據集合內所出現的錯誤比特均能夠對其進行糾錯處理。
[0037]例如,參照圖3所示,將存儲器內的存儲邏輯設為一個存儲面,第一數據集合包括I至8行,第二數據集合包括I至8列。對于第I行出現了第一錯誤比特301,則通過第I行所對應的校驗碼對所述第一錯誤比特301進行糾錯;對于第2行出現的第二錯誤比特302以及第三錯誤比特303,則通過第2列所對應的校驗碼對第二錯誤比特302進行糾錯;通過第4列所對應的校驗碼對第三錯誤比特303進行糾錯,由于第4列還出現了第四錯誤比特304,則通過第3行所對應的校驗碼對第四錯誤比特304進行糾錯,糾錯成功后,再通過第4列所對應的校驗碼對第三錯誤比特303進行糾錯;另一