專利名稱:數據處理方法、裝置及系統的制作方法
技術領域:
本發明實施例涉及計算機技術領域,尤其是一種數據處理方法、裝置及系統。
背景技術:
在容錯計算機領域,數據可靠性對整個系統的性能至關重要,系統運行時的數據都存儲于動態隨機訪問存儲器(Dynamic Random Access Memory,簡稱DRAM)中,由于DRAM 存儲數據易出錯,所以內存的錯誤檢查和糾正是容錯計算機領域一項非常重要的可靠性技術。現在Intel處理器一個高速緩沖存儲器(Cache)行的大小為64Byte或128Byte, 對于帶錯誤糾正碼(Error Correction Code,簡稱ECC)的雙列直插式存儲模塊(Dual In-line Memory Module,簡稱DIMM),目前的糾錯方案都是以32Byte數據加32bit ECC來實現對一個DRAM顆粒內容失效的糾正。在X4DRAM顆粒組成的DIMM上,一個32Byte數據加32bit校驗的ECC字在DMM上的數據布局如圖1所示,圖1中虛線表示省略的DRAM顆粒,也稱為Device,及其對應的數據data。如圖1所示,DRAM顆粒DeviceO 15存儲數據 data, DRAM顆粒Devicel6 17存儲ECC。假設一個DRAM顆粒Device4損壞,將導致一個 ECC字上的16個bit出錯,檢測到錯誤后,將啟動ECC完成這16個bit的錯誤糾正,并且將糾正后的數據寫回到內存中。在上述現有技術方案中,ECC字只能檢測到兩個DRAM顆粒失效的錯誤,也就是最多檢測到兩個DRAM顆粒失效時所對應的32bit錯誤,存在錯誤檢測能力不強的問題。
發明內容
本發明實施例提供一種數據處理方法、裝置及系統,用以解決現有技術中ECC錯誤檢測能力不強的問題。一方面,本發明實施例提供了一種數據處理方法,包括接收主控裝置發送的讀命令,所述讀命令中包含第一地址;根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一循環冗余校驗CRC碼和第一 ECC ;根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤,則根據所述第一 ECC對所述第一數據進行錯誤糾正。另一方面,本發明實施例提供了一種數據處理方法,包括接收主控裝置發送的寫命令,所述寫命令包含第五數據和第五地址;對所述第五數據進行循環冗余校驗CRC編碼和錯誤冗余碼ECC編碼,生成第五CRC 碼和第五ECC ;將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置。另一方面,本發明實施例提供了一種數據處理裝置,包括接收模塊,用于接收主控裝置發送的讀命令,所述讀命令中包含第一地址;
讀取模塊,用于根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一循環冗余校驗CRC碼和ECC ;檢糾錯模塊,用于根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤,則根據所述第一 ECC對所述第一數據進行錯誤糾正。另一方面,本發明實施例提供了一種數據處理裝置,包括接收模塊,用于接收主控裝置發送的寫命令,所述寫命令包含第五數據和第五地址;編碼模塊,用于對所述第五數據進行循環冗余校驗CRC編碼和錯誤冗余碼ECC編碼,生成第五CRC碼和第五ECC ;寫入模塊,用于將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置。再一方面,本發明實施例提供了一種數據處理系統,包括依次連接的主控裝置、 控制器和存儲器,所述主控裝置用于,向所述控制器發送讀命令;所述控制器包括如上所述的數據處理裝置;所述存儲器,用于存儲第一數據和與所述第一數據對應的第一循環冗余校驗CRC 碼和第一 ECC。本發明實施例采用了錯誤檢測能力更強的循環冗余碼CRC碼對從存儲器中讀取的數據進行錯誤檢測,若檢測到錯誤再用ECC對讀取的數據進行錯誤糾正的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為現有技術的DIMM數據布局示意圖。圖2為本發明實施例的一種應用示意圖。圖3為本發明實施例提供的一種數據處理方法實施例一的流程示意圖。圖4為圖3所示實施例的DIMM數據布局示意圖。圖5為本發明實施例提供的一種數據處理方法實施例二的流程示意圖。圖6為圖5所示實施例的DIMM數據布局示意圖。圖7為圖5所示實施例的沖突處理過程的流程示意圖。圖8為本發明實施例提供的一種數據處理方法實施例三的流程示意圖。圖9為本發明實施例提供的一種數據處理裝置實施例一的結構示意圖。圖10為本發明實施例提供的一種數據處理裝置實施例二的結構示意圖。圖11為本發明實施例提供的一種數據處理裝置實施例三的結構示意圖。圖12為本發明實施例提供的一種數據處理裝置實施例四的結構示意圖。圖13為本發明實施例提供的一種數據處理系統實施例的結構示意圖。
具體實施例方式為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。為了對本發明實施例的方案進行清楚詳細的解釋,此處先對本發明實施例的應用架構做一些介紹。圖2為本發明實施例的一種應用示意圖。如圖2所示,雙倍數據率(Dual Data Rate,簡稱DDR)控制器22通過系統接口 221連接到主控裝置21,主控裝置21是可以向DDR控制器22發起命令的裝置,如CPU等。DDR控制器22接收主控裝置21發出的讀 /寫命令,并交付從存儲器M中讀取的讀數據給主控裝置21,存儲器M可以是DIMM等存儲器;通常寫命令中還包含寫數據,除了讀/寫命令,還有部分寫命令,DDR控制器22對部分寫命令的處理相當于對一個讀命令加一個寫命令的處理;為了描述方便,本發明實施例僅以讀/寫命令為例,但并不限于此,本領域技術人員能夠根據本發明實施例公開的內容很容易地得到部分寫命令的處理過程。地址解碼模塊222負責將讀/寫命令中的系統地址譯碼到存儲器M的物理地址,包括組(Bank)、行、列地址,最終完成存儲器M上的尋址;通常一個存儲顆粒會分為多個Bank。命令隊列模塊2 負責根據命令類型、優先級等特性完成對命令隊列的調度處理。DDR執行模塊2M負責將命令隊列中的命令按照DDR協議進行處理,并生成滿足DDR時序的最終控制命令通過物理接口模塊2 發送給DDR物理層(DDR PHY) 23,并控制編碼模塊225生成的編碼后的數據進入物理接口模塊226的時間和順序; DDR PHY23連接存儲器M。編碼模塊225和解碼模塊227分別完成寫數據的檢糾錯編碼生成和讀數據的檢查及糾錯。當讀數據檢查時發現可糾正錯誤時,擦寫控制器(Scrubbing Controller) 228將向命令隊列模塊223發出一個寫命令,把解碼模塊227糾正錯誤后的正確數據寫回到存儲器M中,以防止錯誤隨著時間的積累變成不可糾正錯誤。圖3為本發明實施例提供的一種數據處理方法實施例一的流程示意圖。如圖3所示,該實施例300包括步驟301、接收主控裝置發送的讀命令,所述讀命令包含第一地址;舉例來說,DDR控制器接收CPU發送的讀命令。所述第一地址即為讀命令地址,也稱為系統地址。步驟302、根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一循環冗余校驗(Cyclic Redundancy Checks,簡稱CRC)碼和第一 ECC ;這里,可以采用現有技術先將讀命令中的系統地址轉換成存儲器的物理地址,然后再從存儲器中該物理地址對應的位置讀取第一數據,本實施例對此不作限定。為了描述方便,本說明書中不區分主控裝置發送的讀/寫命令中的系統地址和該系統地址經轉換后得到的存儲器的物理地址,統一以系統地址來表示。步驟303、根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤,則根據所述第一 ECC對所述第一數據進行錯誤糾正。這里的錯誤檢測和錯誤糾正都可以采用現有技術中的方法完成。若未檢測到錯誤,則可以按照現有技術中的方法處理,比如將所述第一數據返回給主控裝置。錯誤糾正完
8成后,可以按照現有技術中的流程將糾正后的正確數據回寫到存儲器中,本實施例對此不作限定。具體地,結合圖1來說,本發明實施例對圖1所示的32Byte數據加32bitECC進行優化,采用32Byte數據加16bit CRC碼加16bit ECC的方案,對應的DI匪數據布局如圖4 所示。當然根據實際存儲器的數據布局情況,CRC碼和ECC的比特數也可以不同,CRC碼和 ECC在數據布局中的位置,即占用哪個存儲顆粒,也可以不同,本實施例對此不做限定。結合圖2來說,現有技術中的解碼模塊227進行讀數據的ECC檢錯及ECC糾錯,而本實施例利用解碼模塊227進行CRC碼檢錯,檢測到錯誤后再進行ECC糾錯。其中,CRC碼運算速度快且具有更高的錯誤檢測能力,具體的CRC算法可以采用現有技術中的算法。若采用CRC-16算法,碼字長度η = 288bit,信息字段長度k = 256bit,其錯誤檢測能力如下1)突發長度<=n-k的突發錯誤;2)大部分突發長度=η-k+l的錯誤,不可檢測的這類錯誤只占2_ (n-k-l);3)大部分突發長度> η-k+l的錯誤,不可檢測的這類錯誤只占2_ (n_k);4)所有奇數個隨機錯誤。本發明實施例采用了錯誤檢測能力更強的CRC碼對從存儲器中讀取的數據進行錯誤檢測,若檢測到錯誤再用錯誤糾正碼ECC對讀取的數據進行錯誤糾正的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能。圖5是本發明實施例提供的一種數據處理方法實施例二的流程示意圖。如圖5所示,該實施例500包括步驟501、接收主控裝置發送的讀命令,所述讀命令包含第一地址;步驟502、根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一 CRC碼和第一 ECC ;具體地,結合圖4來說,假設讀命令指示讀取圖4所示的4組內容,其中存儲顆粒 DeviceO 15中存儲的為第一數據,Deviceie中存儲的為與所述第一數據對應的第一 CRC 碼,Devicel7中存儲的為與所述第一數據對應的第一 ECC。步驟503、根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測出錯誤,根據所述第一 ECC對所述第一數據進行錯誤糾正;步驟504、確定所述第一數據中對應第一存儲顆粒的第一子數據錯誤;具體地,在錯誤糾正過程中根據出錯數據的位置確定出錯數據對應的存儲顆粒。 實際應用中,也可能多個存儲顆粒對應的子數據都存在錯誤,這種情況的處理方式跟下述一個存儲顆粒對應的子數據錯誤的處理方式類似,本實施例對此不作限定。這里,假設第一存儲顆粒為DeviCe4,Device4對應的子數據存在錯誤。步驟505、若所述錯誤可糾正,將所述第一存儲顆粒對應的糾錯計數值加1 ;若所述錯誤不可糾正,則按現有技術中的流程處理,如通知上層操作系統出錯等, 本實施例對此不作限定。步驟506、判斷所述第一存儲顆粒對應的糾錯計數值是否超過預設的閾值,是則執行步驟508,否則執行步驟507 ;這里的閾值可以根據經驗值設置。假設閾值設置為3,表示若一個存儲顆粒發生了超過3次的可糾正錯誤,則認為該存儲顆粒失效(failed),需要對該失效的存儲顆粒進行隔離操作。步驟507、根據所述第一 ECC對所述第一數據進行錯誤糾正,生成糾正后的第二數據,將所述第二數據寫入所述存儲器中所述第一數據的位置;若第一數據中僅第一子數據出錯,則根據所述第一 ECC對所述第一子數據進行錯誤糾正,第一數據中除所述第一子數據之外的數據不變,得到糾正后的第二數據。這里,可以按照現有技術中的寫操作將第二數據寫入所述存儲器中所述第一數據的位置,這樣相當于將存儲器中出錯的第一數據擦除,對應位置上存儲糾正后的第二數據。步驟結束。步驟508、讀取所述第一存儲顆粒所屬的存儲器Rank中存儲的第三數據和與所述第三數據對應的第三ECC;對于X4DRAM來說,Rank就是能產生72比特數據的存儲顆粒的集合,也就是18 個存儲顆粒的集合。通常一個存儲器包含至少一個Rank。若第一存儲顆粒屬于存儲器的 Rankl,則這里將Rankl中的所有數據讀取出來,第三數據即Rankl中存儲的所有數據,舉例來說,第三數據包括DeviceO 15中的所有數據,包括但不限于圖4所示的4組數據,與所述第三數據對應的第三ECC即DeviceH中存儲的所有ECC。這里,在讀取第三數據和第三 ECC的同時通常還讀取與所述第三數據對應的第三CRC碼,如Deviceie中存儲的所有CRC 碼。具體地,確認所述第一存儲顆粒所屬的存儲器Rank對應的起始地址和結束地址,從起始地址開始讀取數據。步驟509、根據所述第三ECC對所述第三數據中對應所述第一存儲顆粒的第三子數據進行錯誤糾正,將糾正后的第三子數據搬移到對應其他存儲顆粒的位置上,生成糾正后的第四數據,將所述第四數據寫入到所述存儲器Rank中。這里的其他存儲顆粒可以未存儲數據的存儲顆粒,若該存儲器Rank中沒有未存儲數據的存儲顆粒,也可以將糾正后的第三子數據搬移到對應所述第三ECC的存儲顆粒, 如圖4中Device^,搬移后的數據布圖如圖6所示。另外需要說明的是,若將糾正后的第三子數據搬移到對應所述第三ECC的存儲顆粒,則無需對第四數據進行CRC和ECC編碼,可以將第四數據和與第三數據對應的CRC寫入所述存儲器Rank ;若將糾正后的第三子數據搬移到其他存儲顆粒,則還需對第四數據進行CRC和ECC編碼,生成第四CRC和第四ECC,將第四數據、第四CRC、第四ECC寫入所述存儲器Rank。步驟508 509為對失效的第一存儲顆粒的隔離操作,進行隔離操作后,第一存儲顆粒將不再用于存放任何數據。現有技術中每次檢測到錯誤后都會進行錯誤糾正,而錯誤糾正需要多個周期才能完成,且糾正后的數據需要啟動一個回寫操作寫回存儲器中。如果存儲器上一個內存顆粒出現了故障,那么每次讀操作都需要啟動ECC糾錯和回寫操作。以DDR3內存為例,在DDR3 內存中讀寫操作所需要的時序基本相等,而一般的應用中內存讀操作的頻率遠大于寫操作,這種情況下,系統將損失至少一半的性能來完成回寫操作,嚴重影響系統性能。進一步地,在DRAM顆粒物理失效的情況下,每一次讀取都將產生糾正和回寫操作,且即便進行回寫操作也無法將正確的數據寫回到存儲器中,嚴重影響系統性能。本發明實施例通過對出錯存儲顆粒的出錯次數進行統計,判斷存儲顆粒是否失效,以確定是否進行糾正和回寫操作。進一步地,采用對失效的存儲顆粒進行標記的方法,在啟動隔離后,將失效的存儲顆粒上的數據搬移到其他存儲顆粒上。若是將失效的第一存儲顆粒上的數據搬移到存儲ECC的
10存儲顆粒上,這樣系統將不再具有糾錯能力,但是仍然具有CRC碼所提供的錯誤檢測能力。 由于隔離了已知失效存儲顆粒DeviCe4對數據的影響,后續讀操作將不再產生錯誤,也不需再調用糾錯算法和擦除回寫操作。從而消除了已知失效存儲顆粒產生的多余操作,與不出錯的正常讀操作相比,系統不會有任何性能損失,相比現有技術方案在有失效存儲顆粒存在的情況下,大幅度提升了系統性能。在隔離操作過程,即步驟508 509執行過程中,主控裝置可能對第一存儲顆粒所屬的存儲器RANK發起讀/寫命令,由于該存儲器RANK有一部分在DIMM中已替換成如圖6 所示的新的數據布局,而未完成隔離操作的部分數據仍是如圖4所示的原有的數據布局, 所以此時對該存儲器RANK地址區域的訪問可能引起沖突,或交給系統的數據出錯。為解決地址沖突的問題,需要在隔離操作過程中,記錄已讀取的數據地址作為第二地址,也稱為隔離讀地址,記錄完成回寫操作的數據地址為第三地址,也稱為隔離寫地址。通過隔離讀地址、隔離寫地址與讀/寫命令中的第四地址,也稱為系統地址的比較進行沖突處理,采用不同的數據布局完成讀/寫操作。上述沖突處理過程700的流程示意圖如圖7所示,包括步驟701、判斷所述讀/寫命令是否命中所述第一存儲顆粒,若是則執行步驟702, 若否則執行步驟707 ;具體地,判斷所述讀/寫命令中的系統地址是否在所述存儲器RANK的起始地址和結束地址之間,若是則命中,若否則未命中。步驟702、判斷隔離操作是否結束,若是則執行步驟708,若否則執行步驟703 ;具體地,可以在啟動隔離操作時設置一個隔離標識位,該隔離標識位用來標識隔離操作是否結束。這里可以通過隔離標識位判斷隔離操作是否結束。步驟703、判斷所述讀/寫命令中的系統地址是否不大于所述隔離寫地址,若是則執行步驟708,若否則執行步驟704 ;步驟704、判斷所述讀/寫命令中的系統地址是否大于所述隔離讀地址,若是則執行步驟707,若否則執行步驟705 ;步驟705、判斷所述讀/寫命令是否為寫命令,若是則執行步驟706,若否則執行步驟 707 ;步驟706、將所述隔離讀地址設置為小于所述系統地址;這樣,下次隔離操作時將讀出此次寫入的數據,進行糾錯后回寫到新的數據布局中。具體地,為了減少下次隔離操作時回寫的數據量,可以將隔離讀地址設置為系統地址減 1。這里不妨詳細介紹一下隔離操作中隔離讀/寫操作的具體過程雖然隔離操作需要將整個Rank中的數據讀出,但由于每次隔離讀操作能夠讀取的數據量有限,因此需要分為多個隔離讀操作來完成,每次完成隔離讀操作時,將此次已讀取數據的最大地址記錄為隔離讀地址,每次啟動隔離讀操作時,從隔離讀地址指示的地址加1開始執行隔離讀操作;隔離寫操作的過程類似,每次完成隔離寫操作時,將此次已寫入數據的最大地址記錄為隔離寫地址,每次啟動隔離寫操作時,從隔離寫地址指示的地址加1開始執行隔離寫操作。步驟707、按照原有的數據布局進行讀/寫操作;這里的原有的數據布局為所述隔離操作前的數據布局,若該Rank之前未進行過隔離操作,則所述隔離操作前的數據布局也就是該Rank的初始數據布局。
步驟708、按照新的數據布局進行讀/寫操作。這里的新的數據布局為所述隔離操作后的當前數據布局。本發明實施例采用了錯誤檢測能力更強的CRC碼對從存儲器中讀取的數據進行錯誤檢測,若檢測到錯誤再用錯誤糾正碼ECC對讀取的數據進行錯誤糾正,在錯誤糾正過程中確定出錯數據對應的存儲顆粒,累計各存儲顆粒的出錯次數,若出錯次數超過預設的閾值,則認為該存儲顆粒失效并對該存儲顆粒進行隔離操作的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能,并且有效避免存儲顆粒失效后對系統性能的影響。更進一步地,本發明實施例提出了失效存儲顆粒隔離操作期間與讀/ 寫命令的系統地址沖突的解決機制,有效地避免了對失效存儲顆粒所屬的RANK區域的訪問可能引起的沖突,或返回的數據出錯的問題。圖8為本發明實施例提供的一種數據處理方法實施例三的流程示意圖。如圖8所示,該實施例800包括步驟801、接收主控裝置發送的寫命令,所述寫命令包含第五數據和第五地址;舉例來說,DDR控制器接收CPU發送的寫命令。所述第五地址為寫命令地址,也稱為系統地址。所述第五數據為要寫入存儲器的數據。步驟802、對所述第五數據進行CRC編碼和ECC編碼,生成第五CRC碼和第五ECC ;步驟803、將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置。這里,可以采用現有技術先將所述第五地址轉換成存儲器的物理地址,然后將數據寫入存儲器中該物理地址對應的位置,本實施例對此不作限定。另外,所述第五數據通常包含多組寫數據,每組寫數據可以對應如圖1所示的 DIMM中第一到四組的data,也就是256bit,步驟802中可以對每組寫數據分別進行CRC編碼和ECC編碼,生成每組寫數據的第五CRC碼和第五ECC,步驟803中可以將每組寫數據及其第五CRC碼和第五ECC依次寫入存儲器。在本發明的一個可選的實施例中,所述第五地址對應的存儲器Rank進行過隔離操作。這種場景下,步驟802之前還可以包括若所述第五地址對應的存儲器Rank進行過隔離操作且所述隔離操作已完成,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;步驟802具體可以包括對所述第六數據進行CRC編碼和ECC編碼,生成所述第五CRC碼和第五ECC ;步驟803具體可以包括按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器對應所述第五地址的位置。具體地,可以針對每個存儲器Rank設置一個隔離標識位,該隔離標識位用來標識所述Rank是否進行過隔離操作以及隔離操作是否結束。另外,在每次隔離操作結束后,還需記錄本次隔離操作完成后的當前數據布局。舉例來說,當前數據布局可以如圖6所示。在本發明的又一可選的實施例中,所述第五地址對應的存儲器Rank正在進行隔離操作。這種場景下,步驟802之前還可以包括若所述第五地址對應的存儲器Rank正在進行隔離操作,讀取第二地址和第三地址,所述第二地址為所述隔離操作已讀取數據的地址,所述第三地址為所述隔離操作已寫入數據的地址;若所述第五地址不大于所述第三地址,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;步驟802具體可以包括對所述第六數據進行CRC編碼和ECC編碼,生成第六CRC碼和第六ECC ;步驟803具體可以包括按照所述當前數據布局將所述第六CRC碼、第六ECC和所述第六數據寫入所述存儲器對應所述第五地址的位置。在本發明的又一可選的實施例中,所述第五地址對應的存儲器Rank未進行隔離操作。這種場景下,步驟802之前還可以包括若所述第五地址對應的存儲器Rank未進行過隔離操作,則按照初始數據布局重新排列所述第五數據,生成重排后的第六數據;步驟802具體可以包括對所述第六數據進行CRC編碼和ECC編碼,生成所述第五CRC碼和第五ECC ;步驟803具體可以包括按照所述初始數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器對應所述第五地址的位置。這里的初始數據布局即該存儲器Rank的默認數據布局。舉例來說,初始數據布局可以如圖4所示。需要說明的是,應用中,主控裝置和存儲器可以設置相同的初始數據布局,也就是說主控裝置發送的寫命令中包含的第五數據本身的數據布局與該存儲器Rank的初始數據布局一樣,這樣的話若該存儲器Rank未進行過隔離操作,也可以無需重新排列第五數據, 直接執行步驟802和803。本發明實施例采用對要寫入存儲器的第五數據進行CRC編碼和ECC編碼后,第五數據、CRC碼和ECC —起寫入存儲器的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能。圖9為本發明實施例提供的一種數據處理裝置實施例一的結構示意圖。如圖9所示,該實施例900包括接收模塊91,用于接收主控裝置發送的讀命令,所述讀命令中包含第一地址;讀取模塊92,用于根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一 CRC碼和第一 ECC ;檢糾錯模塊93,用于根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤,則根據所述第一 ECC對所述第一數據進行錯誤糾正。本實施例的具體實現參照本發明提供的一種數據處理方法實施例一。本發明實施例采用了錯誤檢測能力更強的CRC碼對從存儲器中讀取的數據進行錯誤檢測,若檢測到錯誤再用錯誤糾正碼ECC對讀取的數據進行錯誤糾正的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能。圖10為本發明實施例提供的一種數據處理裝置實施例二的結構示意圖。如圖10所示,該實施例100包括接收模塊101,用于接收主控裝置發送的讀命令,所述讀命令中包含第一地址;讀取模塊102,用于根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一 CRC碼和第一 ECC ;檢糾錯模塊103,用于根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤,則根據所述第一 ECC對所述第一數據進行錯誤糾正,生成糾正后的第二數據;擦寫模塊104,用于將所述第二數據寫入所述存儲器中所述第一數據的位置。進一步地,檢糾錯模塊103具體用于,確定所述第一數據中對應第一存儲顆粒的第一子數據錯誤;本實施例還包括計數模塊105,用于若所述第一子數據的錯誤可糾正,則將所述第一存儲顆粒對應的糾錯計數值加1 ;檢糾錯模塊103具體用于,若所述第一存儲顆粒對應的糾錯計數值未超過預設的閾值,根據所述第一 ECC對所述第一子數據進行錯誤糾正,生成糾正后的第二數據。進一步地,還包括隔離模塊106,用于若所述第一存儲顆粒對應的糾錯計數值超過預設的閾值,則對所述第一存儲顆粒進行隔離操作。進一步地,隔離模塊106具體用于,控制讀取模塊102讀取所述第一存儲顆粒所屬的存儲器Rank中存儲的第三數據和與所述第三數據對應的第三ECC ;控制檢糾錯模塊103 根據所述第三ECC對所述第三數據中對應所述第一存儲顆粒的第三子數據進行錯誤糾正, 將糾正后的第三子數據搬移到對應其他存儲顆粒的位置上,生成糾正后的第四數據;并將所述第四數據寫入到所述存儲器Rank中。進一步地,隔離模塊106具體用于,控制檢糾錯模塊103將所述糾正后的第三子數據搬移到對應所述第三ECC的存儲顆粒的位置上。進一步地,隔離模塊106具體用于,在控制讀取模塊102讀取所述第一存儲顆粒所屬的存儲器Rank中存儲的第三數據和與所述第三數據對應的第三ECC時,將已讀取數據的地址記錄為第二地址;在將所述第四數據寫入到所述存儲器Rank中時,將已寫入數據的地址記錄為第三地址。進一步地,接收模塊101還用于,接收寫命令,所述寫命令包含第四地址,所述第四地址在所述存儲器Rank的地址區間內;隔離模塊106具體用于,若所述第四地址不大于所述第二地址且大于所述第三地址,則根據所述寫命令進行寫操作后,將所述第二地址設置為小于所述第四地址。本實施例的具體實現參照本發明提供的一種數據處理方法實施例二。本發明實施例采用了錯誤檢測能力更強的CRC碼對從存儲器中讀取的數據進行錯誤檢測,若檢測到錯誤再用錯誤糾正碼ECC對讀取的數據進行錯誤糾正,在錯誤糾正過程中確定出錯數據對應的存儲顆粒,累計各存儲顆粒的出錯次數,若出錯次數超過預設的閾值,則認為該存儲顆粒失效并對該存儲顆粒進行隔離操作的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能,并且有效避免存儲顆粒失效后對系統性能的影響。更進一步地,本發明實施例提出了失效存儲顆粒隔離操作期間與讀/寫命令的系統地址沖突的解決機制,有效地避免了對失效存儲顆粒所屬的RANK區域的訪問可能引起的沖突,或返回的數據出錯的問題。
圖11為本發明實施例提供的一種數據處理裝置實施例三的結構示意圖。如圖11 所示,該實施例200包括接收模塊31,用于接收主控裝置發送的寫命令,所述寫命令包含第五數據和第五地址;編碼模塊32,用于對所述第五數據進行CRC編碼和ECC編碼,生成第五CRC碼和第五 ECC ;寫入模塊33,用于將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置。本發明的一個可選的實施例中,還包括重排模塊,用于若所述第五地址對應的存儲器Rank進行過隔離操作且所述隔離操作已完成,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;編碼模塊32具體用于,對所述第六數據進行CRC編碼和ECC編碼,生成所述第五 CRC碼和第五ECC ;寫入模塊33具體用于,按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器Rank中對應所述第五地址的位置。本發明的又一可選的實施例中,還包括重排模塊,用于若所述第五地址對應的存儲器Rank正在進行隔離操作,讀取第二地址和第三地址,所述第二地址為所述隔離操作已讀取數據的地址,所述第三地址為所述隔離操作已寫入數據的地址;若所述第五地址不大于所述第三地址,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;編碼模塊33具體用于,對所述第六數據進行CRC編碼和ECC編碼,生成所述第五 CRC碼和第五ECC ;寫入模塊32具體用于,按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器Rank中對應所述第五地址的位置。本發明的又一可選的實施例中,還包括重排模塊,用于若所述第五地址對應的存儲器Rank未進行過隔離操作,則按照初始數據布局重新排列所述第五數據,生成重排后的第六數據;編碼模塊32具體用于,對所述第六數據進行CRC編碼和ECC編碼,生成所述第五 CRC碼和第五ECC ;寫入模塊33具體用于,按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器Rank中對應所述第五地址的位置。本實施例的具體實現參照本發明實施例提供的一種數據處理方法實施例三。本發明實施例采用對要寫入存儲器的第五數據進行CRC編碼和ECC編碼后,第五數據、CRC碼和 ECC —起寫入存儲器的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能。圖12為本發明實施例提供的一種數據處理裝置實施例四的結構示意圖。如圖12 所示,該實施例400包括系統接口 401,用于接收主控裝置發送的讀/寫命令,所述讀/寫命令包含系統地
15址;地址解碼模塊402,用于將所述系統地址譯碼到存儲器的物理地址;命令隊列模塊403,用于根據命令類型、優先級等特性完成對命令隊列的調度處理;DDR執行模塊404,用于將命令隊列中的命令按照DDR協議進行處理,生成滿足DDR 時序的最終控制命令,并控制CRC與ECC編碼模塊405生成的編碼后的數據進入物理接口模塊406的時間和順序;CRC與ECC編碼模塊405,用于對寫命令中的寫數據進行CRC與ECC編碼;物理接口模塊406,用于將DDR執行模塊404生成的最終控制命令和/或CRC與 ECC編碼模塊405編碼完成的寫數據、與所述寫數據對應的CRC碼和ECC發送給DDR PHY ; 接收DDR PHY發送的從存儲器讀取的讀數據和與所述讀數據對應的CRC碼和ECC ;CRC與ECC解碼模塊407,用于根據與所述讀數據對應的CRC碼和ECC對所述讀數據進行錯誤檢測和錯誤糾正;計數模塊409,用于若CRC與ECC解碼模塊407檢測到所述讀數據中對應第一存儲顆粒的子數據錯誤且該錯誤可糾正,則將所述第一存儲顆粒的糾錯計數加1 ;隔離模塊410,用于若所述第一存儲顆粒的糾錯計數未超過預設的閾值,則控制擦寫控制器408將CRC與ECC解碼模塊407糾正后的讀數據寫回存儲器,若所述第一存儲顆粒的糾錯計數超過預設的閾值,則對所述第一存儲顆粒進行隔離操作;擦寫控制器408,用于根據隔離模塊410的指示將CRC與ECC解碼模塊407糾正后的讀數據寫回存儲器。具體地,若所述第一存儲顆粒的糾錯計數超過預設的閾值,隔離模塊410向命令隊列模塊403發出讀命令,指示讀出存儲器中第一存儲顆粒所屬的RANK中的全部數據,稱為第三數據;CRC與ECC解碼模塊407根據和所述第三數據一并讀出的第三數據對應的ECC 對第三數據進行錯誤糾正,具體地是對第三數據中與第一存儲顆粒對應的第三子數據進行錯誤糾正;隔離模塊410將糾正后的第三數據封裝在寫命令中發給命令隊列模塊403,并指示CRC與ECC編碼模塊405將糾正后的第三數據重新編排,以使對應第一存儲顆粒的位置上不排放數據;CRC與ECC編碼模塊405重新編排數據后,進行CRC與ECC編碼;后續過程與現有技術中的寫操作過程類似,此處不再贅述。本實施例的具體實現參照本發明提供的一種數據處理方法實施例二。本實施例的具體實現參照本發明提供的一種數據處理方法實施例二。本發明實施例采用了錯誤檢測能力更強的CRC碼對從存儲器中讀取的數據進行錯誤檢測,若檢測到錯誤再用錯誤糾正碼 ECC對讀取的數據進行錯誤糾正,在錯誤糾正過程中確定出錯數據對應的存儲顆粒,累計各存儲顆粒的出錯次數,若出錯次數超過預設的閾值,則認為該存儲顆粒失效并對該存儲顆粒進行隔離操作的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能,并且有效避免存儲顆粒失效后對系統性能的影響。圖13為本發明實施例提供的一種數據處理系統實施例的結構示意圖。如圖13所示,該實施例600包括依次連接的主控裝置51、控制器52和存儲器53,主控裝置51用于,向控制器52發送讀命令;控制器52,包括如本發明實施例提供的一種數據處理裝置實施例一或二所述的裝置;存儲器53,用于存儲第一數據和與所述第一數據對應的第一循環冗余校驗CRC碼和第一錯誤糾正碼ECC。本發明的一個可選的實施例中,控制器52還包括如本發明實施例提供的一種數據處理裝置實施例三所述的數據處理裝置;主控裝置51還用于,向控制器52發送寫命令。應用中,存儲器53包含至少一個存儲器Rank,每個存儲器Rank包含多個存儲顆粒,所述多個存儲顆粒中至少一個存儲顆粒存儲數據,另外至少兩個存儲顆粒分別存儲與該數據對應的CRC碼和ECC。在本發明的又一可選的實施例中,還包括DDR物理層,控制器52和存儲器53通過DDR物理層連接。在本發明的又一可選的實施例中,控制器52,包括如本發明實施例提供的一種數據處理裝置實施例四所述的裝置;主控裝置51用于,向控制器52發送讀/寫命令。本發明實施例采用了錯誤檢測能力更強的CRC碼對從存儲器中讀取的數據進行錯誤檢測,若檢測到錯誤再用ECC對讀取的數據進行錯誤糾正的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能。本領域普通技術人員可以理解實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。最后應說明的是以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。本領域普通技術人員可以理解實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。最后應說明的是以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。
權利要求
1.一種數據處理方法,其特征在于,包括接收主控裝置發送的讀命令,所述讀命令包含第一地址;根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一循環冗余校驗CRC碼和第一錯誤糾正碼ECC ;根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤,則根據所述第一 ECC對所述第一數據進行錯誤糾正。
2.根據權利要求1所述的方法,其特征在于,所述若檢測到錯誤,則根據所述第一ECC 對所述第一數據進行錯誤糾正具體包括根據所述第一 ECC對所述第一數據進行錯誤糾正,生成糾正后的第二數據,將所述第二數據寫入所述存儲器中所述第一數據的位置。
3.根據權利要求1或2所述的方法,其特征在于,所述根據所述第一ECC對所述第一數據進行錯誤糾正具體包括確定所述第一數據中對應第一存儲顆粒的第一子數據錯誤,將所述第一存儲顆粒對應的糾錯計數值加1 ;若所述第一存儲顆粒對應的糾錯計數值未超過預設的閾值,根據所述第一 ECC對所述第一子數據進行錯誤糾正。
4.根據權利要求3所述的方法,其特征在于,還包括若所述第一存儲顆粒對應的糾錯計數值超過所述閾值,對所述第一存儲顆粒進行隔離操作。
5.根據權利要求4所述的方法,其特征在于,所述對所述第一存儲顆粒進行隔離操作具體包括讀取所述第一存儲顆粒所屬的存儲器Rank中存儲的第三數據和與所述第三數據對應的第三ECC ;根據所述第三ECC對所述第三數據中對應所述第一存儲顆粒的第三子數據進行錯誤糾正,將糾正后的第三子數據搬移到對應其他存儲顆粒的位置上,生成糾正后的第四數據, 將所述第四數據寫入到所述存儲器Rank中。
6.根據權利要求5所述的方法,其特征在于,所述將糾正后的第三數據搬移到對應其他存儲顆粒的位置上具體包括將糾正后的第三子數據搬移到對應所述第三ECC的存儲顆粒位置上。
7.根據權利要求5所述的方法,其特征在于,所述讀取所述第一存儲顆粒所屬的存儲器Rank中存儲的第三數據和與所述第三數據對應的第三ECC具體包括將已讀取數據的地址記錄為第二地址;所述將所述第四數據寫入到所述存儲器Rank中具體包括將已寫入數據的地址記錄為第三地址。
8.根據權利要求7所述的方法,其特征在于,還包括接收寫命令,所述寫命令包含第四地址,所述第四地址在所述存儲器Rank的地址區間內;若所述第四地址不大于所述第二地址且大于所述第三地址,則根據所述寫命令進行寫操作后,將所述第二地址設置為小于所述第四地址。
9.一種數據處理方法,其特征在于,包括接收主控裝置發送的寫命令,所述寫命令包含第五數據和第五地址; 對所述第五數據進行循環冗余校驗CRC編碼和錯誤冗余碼ECC編碼,生成第五CRC碼和第五ECC ;將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置。
10.根據權利要求9所述的方法,其特征在于,所述對所述第五數據進行循環冗余校驗 CRC編碼和錯誤冗余碼ECC編碼之前包括若所述第五地址對應的存儲器Rank進行過隔離操作且所述隔離操作已完成,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;所述對所述第五數據進行循環冗余校驗CRC編碼和錯誤冗余碼ECC編碼,生成第五CRC 碼和第五ECC具體包括對所述第六數據進行CRC編碼和ECC編碼,生成所述第五CRC碼和第五ECC ; 所述將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置具體包括按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器 Rank中對應所述第五地址的位置。
11.根據權利要求9所述的方法,其特征在于,所述對所述第五數據進行循環冗余校驗 CRC編碼和錯誤冗余碼ECC編碼之前包括若所述第五地址對應的存儲器Rank正在進行隔離操作,讀取第二地址和第三地址,所述第二地址為所述隔離操作已讀取數據的地址,所述第三地址為所述隔離操作已寫入數據的地址;若所述第五地址不大于所述第三地址,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;所述對所述第五數據進行循環冗余校驗CRC編碼和錯誤冗余碼ECC編碼,生成第五CRC 碼和第五ECC具體包括對所述第六數據進行CRC編碼和ECC編碼,生成第六CRC碼和第六ECC ; 所述將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置具體包括按照所述當前數據布局將所述第六CRC碼、第六ECC和所述第六數據寫入所述存儲器 Rank中對應所述第五地址的位置。
12.根據權利要求9所述的方法,其特征在于,所述對所述第五數據進行循環冗余校驗 CRC編碼和錯誤冗余碼ECC編碼之前包括若所述第五地址對應的存儲器Rank未進行過隔離操作,則按照初始數據布局重新排列所述第五數據,生成重排后的第六數據;所述對所述第五數據進行循環冗余校驗CRC編碼和錯誤冗余碼ECC編碼,生成第五CRC 碼和第五ECC具體包括對所述第六數據進行CRC編碼和ECC編碼,生成所述第五CRC碼和第五ECC ; 所述將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置具體包括按照所述初始數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器 Rank中對應所述第五地址的位置。
13.一種數據處理裝置,其特征在于,包括接收模塊,用于接收主控裝置發送的讀命令,所述讀命令包含第一地址; 讀取模塊,用于根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一循環冗余校驗CRC碼和第一錯誤糾正碼ECC ;檢糾錯模塊,用于根據所述第一 CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤, 則根據所述第一 ECC對所述第一數據進行錯誤糾正。
14.根據權利要求13所述的裝置,其特征在于,所述檢糾錯模塊具體用于, 根據所述第一 ECC對所述第一數據進行錯誤糾正,生成糾正后的第二數據; 還包括擦寫模塊,用于將所述第二數據寫入所述存儲器中所述第一數據的位置。
15.根據權利要求13或14所述的裝置,其特征在于,所述檢糾錯模塊具體用于,確定所述第一數據中對應第一存儲顆粒的第一子數據錯誤;還包括計數模塊,用于將所述第一存儲顆粒對應的糾錯計數值加1 ; 所述檢糾錯模塊具體用于,若所述第一存儲顆粒對應的糾錯計數值未超過預設的閾值,根據所述第一 ECC對所述第一子數據進行錯誤糾正。
16.根據權利要求15所述的裝置,其特征在于,還包括隔離模塊,用于若所述第一存儲顆粒對應的糾錯計數值超過所述閾值,則對所述第一存儲顆粒進行隔離操作。
17.根據權利要求16所述的裝置,其特征在于,所述隔離模塊具體用于,控制所述讀取模塊讀取所述第一存儲顆粒所屬的存儲器Rank中存儲的第三數據和與所述第三數據對應的第三ECC ;控制所述檢糾錯模塊根據所述第三ECC對所述第三數據中對應所述第一存儲顆粒的第三子數據進行錯誤糾正,將糾正后的第三子數據搬移到對應其他存儲顆粒的位置上,生成糾正后的第四數據;并將所述第四數據寫入到所述存儲器Rank 中。
18.根據權利要求17所述的裝置,其特征在于,所述隔離模塊具體用于,控制所述檢糾錯模塊將所述糾正后的第三子數據搬移到對應所述第三ECC的存儲顆粒的位置上。
19.根據權利要求17所述的裝置,其特征在于,所述隔離模塊具體用于,在控制所述讀取模塊讀取所述第一存儲顆粒所屬的存儲器Rank中存儲的第三數據和與所述第三數據對應的第三ECC時,將已讀取數據的地址記錄為第二地址;在將所述第四數據寫入到所述存儲器Rank中時,將已寫入數據的地址記錄為第三地址。
20.根據權利要求19所述的裝置,其特征在于,所述接收模塊還用于,接收寫命令,所述寫命令包含第四地址,所述第四地址在所述存儲器Rank的地址區間內;所述隔離模塊具體用于,若所述第四地址不大于所述第二地址且大于所述第三地址,則根據所述寫命令進行寫操作后,將所述第二地址設置為小于所述第四地址。
21.一種數據處理裝置,其特征在于,包括接收模塊,用于接收主控裝置發送的寫命令,所述寫命令包含第五數據和第五地址;編碼模塊,用于對所述第五數據進行循環冗余校驗CRC編碼和錯誤冗余碼ECC編碼,生成第五CRC碼和第五ECC ;寫入模塊,用于將所述第五CRC碼、第五ECC和第五數據寫入存儲器中對應所述第五地址的位置。
22.根據權利要求21所述的裝置,其特征在于,還包括重排模塊,用于若所述第五地址對應的存儲器Rank進行過隔離操作且所述隔離操作已完成,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;所述編碼模塊具體用于,對所述第六數據進行CRC編碼和ECC編碼,生成所述第五CRC 碼和第五ECC ;所述寫入模塊具體用于,按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器Rank中對應所述第五地址的位置。
23.根據權利要求21所述的裝置,其特征在于,還包括重排模塊,用于若所述第五地址對應的存儲器Rank正在進行隔離操作,讀取第二地址和第三地址,所述第二地址為所述隔離操作已讀取數據的地址,所述第三地址為所述隔離操作已寫入數據的地址;若所述第五地址不大于所述第三地址,則按照所述隔離操作后的當前數據布局重新排列所述第五數據,生成重排后的第六數據;所述編碼模塊具體用于,對所述第六數據進行CRC編碼和ECC編碼,生成所述第五CRC 碼和第五ECC ;所述寫入模塊具體用于,按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器Rank中對應所述第五地址的位置。
24.根據權利要求21所述的裝置,其特征在于,還包括重排模塊,用于若所述第五地址對應的存儲器Rank未進行過隔離操作,則按照初始數據布局重新排列所述第五數據,生成重排后的第六數據;所述編碼模塊具體用于,對所述第六數據進行CRC編碼和ECC編碼,生成所述第五CRC 碼和第五ECC ;所述寫入模塊具體用于,按照所述當前數據布局將所述第五CRC碼、第五ECC和所述第六數據寫入所述存儲器Rank中對應所述第五地址的位置。
25.一種數據處理系統,其特征在于,包括依次連接的主控裝置、控制器和存儲器,所述主控裝置,用于向所述控制器發送讀命令;所述控制器包括如權利要求13 20任一所述的數據處理裝置;所述存儲器,用于存儲第一數據和與所述第一數據對應的第一循環冗余校驗CRC碼和第一錯誤糾正碼ECC。
26.根據權利要求25所述的系統,其特征在于,所述控制器還包括如權利要求21 M 任一所述的數據處理裝置;所述主控裝置還用于,向所述控制器發送寫命令。
全文摘要
本發明實施例提供一種數據處理方法、裝置及系統。方法包括接收主控裝置發送的讀命令,所述讀命令包含第一地址;根據所述第一地址從存儲器中讀取第一數據和與所述第一數據對應的第一CRC碼和第一ECC;根據所述第一CRC碼對所述第一數據進行錯誤檢測,若檢測到錯誤,則根據所述第一ECC對所述第一數據進行錯誤糾正。本發明實施例采用了錯誤檢測能力更強的CRC碼對數據進行錯誤檢測,若檢測到錯誤再用ECC對數據進行錯誤糾正的技術手段,克服了現有技術中ECC錯誤檢測能力不強的問題,進而提高了系統的性能。
文檔編號G06F11/10GK102203740SQ201180000623
公開日2011年9月28日 申請日期2011年5月27日 優先權日2011年5月27日
發明者蘭可嘉, 程永波, 賀成洪 申請人:華為技術有限公司