專利名稱:存儲器模塊的錯誤檢查與校正系統(tǒng)以及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及錯誤檢查與校正(error checking and correcting, ECC)技術(shù),特別是涉及適用于存儲器模塊的錯誤檢查與校正系統(tǒng)及方法。
背景技術(shù):
錯誤檢查與校正(error checking and correcting, ECC)技術(shù)或錯誤校正碼 (error correction code)檢查是一種可用于存儲器模塊上的數(shù)據(jù)檢查與除錯的技術(shù),用來檢查傳送到存儲器模塊的數(shù)據(jù)是否正確并可用于校正數(shù)據(jù)的錯誤。當(dāng)數(shù)據(jù)出現(xiàn)錯誤時, 錯誤校正碼檢查能自行更正錯誤,或要求系統(tǒng)重新傳送數(shù)據(jù)。這樣可確保系統(tǒng)正常運作而不會因數(shù)據(jù)錯誤而導(dǎo)致死機。所傳輸?shù)臄?shù)據(jù)于傳輸端傳送前經(jīng)常事先被編碼為錯誤校正碼 (可包含數(shù)據(jù)訊息、冗余信息及同位數(shù)據(jù))。當(dāng)接收端收到錯誤校正碼數(shù)據(jù)時,即使數(shù)據(jù)于傳輸過程中遭受損毀而產(chǎn)生隨機錯誤,亦可藉解碼錯誤校正碼而回復(fù)正確的數(shù)據(jù)。同樣的, 數(shù)據(jù)儲存系統(tǒng)亦經(jīng)常在儲存數(shù)據(jù)前將所儲存的數(shù)據(jù)編碼為錯誤校正碼。當(dāng)數(shù)據(jù)于儲存過程中遭受損毀而產(chǎn)生隨機錯誤時,亦可藉解碼錯誤校正碼而回復(fù)正確的數(shù)據(jù)。常見的錯誤校正碼如 BCH 碼(Bose, Ray-Chaudhuri, and Hocquenghem code)及 RS 碼(Reed-Solomon code)。BCH碼常用于快閃存儲器數(shù)據(jù)的儲存,而RS碼常用于光盤數(shù)據(jù)的儲存。一般而言,為了提升整體效能,系統(tǒng)的控制器可能會采用多個通道結(jié)構(gòu)例如多個快閃存儲器芯片來幫助運算,其中每個通道各自配有一個錯誤校正模塊以對其傳輸數(shù)據(jù)進行自動錯誤校正。然而,一般的錯誤校正模塊僅具有有限能力的自動錯誤校正能力,例如 數(shù)據(jù)容錯數(shù)量為6位的錯誤校正碼只能對錯誤的位數(shù)目為小于或等于6位的錯誤進行校正,若錯誤的位數(shù)目大于6位時,錯誤校正模塊不僅無法校正錯誤,甚至可能會使數(shù)據(jù)發(fā)生的錯誤增加。因此,為了提供更好的錯誤校正效能,可對每個通道配上一個具有較高數(shù)據(jù)容錯數(shù)量的錯誤校正模塊來進行錯誤校正。然而,具有較高數(shù)據(jù)容錯數(shù)量的錯誤校正模塊通常較占面積且成本較高,不僅會增加硬件成本及復(fù)雜度,也不適合大量使用。
發(fā)明內(nèi)容
本發(fā)明的一實施例提供了一種存儲器模塊的錯誤檢查與校正(Error Checking and Correcting, ECC)方法,該存儲器模塊包括至少一存儲器單元,上述方法包括以下流程步驟接收來自該存儲器單元的一輸入數(shù)據(jù);通過一第一校正模塊對該輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作,并產(chǎn)生一解碼結(jié)果,其中該解碼結(jié)果用以表示是否解碼失??;以及依據(jù)該解碼結(jié)果,決定是否啟動一第二校正模塊對該輸入數(shù)據(jù)執(zhí)行一第二錯誤校正操作。其中,該第一校正模塊以及該第二校正模塊分別采用一第一方法以及一第二方法且該第一方法是以一第一容錯數(shù)量的錯誤校正碼進行錯誤校正,該第二方法是以一第二容錯數(shù)量的錯誤校正碼進行錯誤校正,且該第二容錯數(shù)量大于該第一容錯數(shù)量。本發(fā)明的另一實施例提供了一種存儲器模塊的錯誤檢查與校正系統(tǒng),其中該存儲器模塊包括多個存儲器單元。存儲器模塊的錯誤檢查與校正系統(tǒng)至少包括多個第一校正模塊、一第二校正模塊、以及一仲裁模塊。所述第一校正模塊對應(yīng)耦接至所述存儲器單元,其中每一所述第一校正模塊對應(yīng)所述存儲器單元的其中一個且用以接收該對應(yīng)存儲器單元的一輸入數(shù)據(jù)并對該輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作,并產(chǎn)生一解碼結(jié)果。第二校正模塊用以于被啟動時執(zhí)行一第二錯誤校正操作,其中該第一校正模塊是以一第一容錯數(shù)量的錯誤校正碼進行錯誤校正,該第二校正模塊是以一第二容錯數(shù)量的錯誤校正碼進行錯誤校正且該第二容錯數(shù)量大于該第一容錯數(shù)量。仲裁模塊耦接于所述第一校正模塊以及該第二校正模塊之間,其中該仲裁模塊依據(jù)所述第一校正模塊產(chǎn)生的所述解碼結(jié)果決定是否啟動該第二校正模塊。其中該仲裁模塊于所述解碼結(jié)果的任一個表示解碼失敗時,啟動該第二校正模塊以對該輸入數(shù)據(jù)執(zhí)行該第二錯誤校正操作。關(guān)于本發(fā)明其他附加的特征與優(yōu)點,本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍的前提下,可根據(jù)本發(fā)明的實施方法中所揭示的數(shù)據(jù)處理方法做些許的更動與潤飾而得到。
圖1顯示依據(jù)本發(fā)明實施例的存儲器模塊的錯誤檢查與校正(ECC)系統(tǒng)的示意圖。圖2是根據(jù)本發(fā)明一實施例所述的存儲器模塊的錯誤檢查與校正方法。圖3是顯示依據(jù)本發(fā)明另一實施例的存儲器模塊的錯誤檢查與校正系統(tǒng)的示意圖。圖4為依據(jù)本發(fā)明一實施例的已編碼數(shù)據(jù)示意圖。圖5為依據(jù)本發(fā)明一實施例的錯誤校正碼編碼器的區(qū)塊圖。圖6為依據(jù)本發(fā)明一實施例的錯誤校正碼解碼器的區(qū)塊圖。附圖符號說明100、100’ 存儲器模塊的錯誤檢查與校正系統(tǒng);110 第一校正模塊;120 仲裁模塊;130 第二校正模塊;140 儲存單元;141 訊息數(shù)據(jù)儲存單元;142 冗余數(shù)據(jù)儲存單元;
143 同位數(shù)據(jù)儲存單元;150 編碼器;152 第一編碼單元;154 第二編碼單元;160 第一解碼器;162 第一錯誤檢測單元;164 第一錯誤校正單元;170 第二解碼器;172 第二錯誤檢測單元;
174 第二錯誤校正單元;200、200, 存儲器模塊;210,211-218 存儲器單元;S202-S212 步驟;400 已編碼數(shù)據(jù);500 錯誤校正碼編碼器;502 第一編碼單元;504 第二編碼單元;600 錯誤校正碼解碼器;602 癥狀碼計算單元;604 錯誤多項式計算單元;606 秦式搜尋單元;608 控制電路;610 第二錯誤檢測單元。
具體實施例方式下面所敘述的是實施本發(fā)明的范例,以下范例是結(jié)合
,且若未特別指出, 則在不同附圖中所使用到的相同標(biāo)號用以指示相同或類似的元件。然而,以下實施例僅為實施本發(fā)明的代表范例,并非代表實施本發(fā)明的所有方式,本發(fā)明的保護范圍是以本發(fā)明的權(quán)利要求為準(zhǔn)。圖1顯示依據(jù)本發(fā)明實施例的存儲器模塊的錯誤檢查與校正(ECC)系統(tǒng)的示意圖。如圖1所示,存儲器模塊的錯誤檢查與校正系統(tǒng)100用以對一存儲器模塊200進行錯誤檢查與校正,其中存儲器模塊200包括一個或多個存儲器單元210。于一實施例中,每一存儲器單元210可為一塊獨立的快閃存儲器芯片。需提醒的是,于本發(fā)明中,每個存儲器單元210又稱為一個通道(channel)。也就是說,本發(fā)明于一實施例是以一塊快閃存儲器芯片為一個通道的單位,則存儲器模塊200由多個快閃存儲器芯片構(gòu)成,但本發(fā)明并不限于此。存儲器模塊的錯誤檢查與校正系統(tǒng)100至少包括一第一校正模塊(error correction module) 110、一仲裁模塊(arbitrator) 120、一第二校正模塊130以及一儲存單元140,其中第一校正模塊110耦接至存儲器模塊200中的存儲器單元210且用以接收/讀取存儲器單元210的一輸入數(shù)據(jù)并對此輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作產(chǎn)生一解碼結(jié)果。其中,第一校正模塊110采用一第一方法且第一方法是以一第一容錯數(shù)量的錯誤校正碼進行錯誤校正。舉例來說,第一校正模塊110是以一容錯數(shù)量為6位的錯誤校正碼進行錯誤校正,亦即,第一錯誤校正操作可用以自動檢查并校正6個位以下的錯誤。解碼結(jié)果用以表示解碼是否成功或失敗,也就是說第一校正模塊110是否可自動更正所有的錯誤。當(dāng)?shù)谝恍UK110利用第一容錯數(shù)量的錯誤校正碼對輸入數(shù)據(jù)執(zhí)行第一錯誤校正操作時,若可自動校正所有的錯誤(亦即錯誤的位長度低于第一容錯數(shù)量),解碼結(jié)果將表示解碼成功(decode sucess),而若無法自動校正所有的錯誤時,解碼結(jié)果將表示解碼失敗(decode fail)。儲存單元140用以儲存錯誤校正操作時所需的各項數(shù)據(jù),例如儲存原始訊息數(shù)據(jù)、 冗余數(shù)據(jù)以及同位數(shù)據(jù)(parity data)。需提醒的是,第一校正模塊110執(zhí)行第一錯誤校正操作時只會針對所儲存的訊息數(shù)據(jù)以及所儲存的冗余數(shù)據(jù)進行錯誤校正。之后,存儲器單元210的第一校正模塊110所產(chǎn)生的解碼結(jié)果將會被送至仲裁模塊120進行仲裁。仲裁模塊120耦接于第一校正模塊110以及第二校正模塊130之間,其中,仲裁模塊120依據(jù)第一校正模塊110產(chǎn)生的解碼結(jié)果決定是否啟動或關(guān)閉第二校正模塊130。當(dāng)解碼結(jié)果表示解碼成功時,表示所有錯誤都已自動校正,仲裁模塊120便關(guān)閉第二校正模塊130。當(dāng)解碼結(jié)果表示解碼失敗時,表示仍有一些錯誤無法自動校正,仲裁模塊 120便啟動第二校正模塊130。第二校正模塊130用以于被仲裁模塊120啟動時執(zhí)行一第二錯誤校正操作。其中,第二校正模塊130采用一第二方法且第二方法是以一第二容錯數(shù)量的錯誤校正碼進行錯誤校正且第二容錯數(shù)量大于第一容錯數(shù)量。舉例來說,于一實施例中,第一校正模塊110是以一容錯數(shù)量為6位的錯誤校正碼進行錯誤校正,而第二校正模塊 130是以一容錯數(shù)量為36位的錯誤校正碼進行錯誤校正,因此,第一錯誤校正操作可用以自動檢查并校正6個位以下的錯誤,而第二錯誤校正操作可用以自動檢查并校正36個位以下的錯誤。由于發(fā)生超過6位錯誤的機率非常低,因此第二校正模塊130不會頻繁地被啟動,可提升錯誤檢查與校正操作的效能的同時也節(jié)省了第二校正模塊130所消耗的電力。另外,第一校正模塊110可還包括一編碼器150以及一第一解碼器160,編碼器 150用以產(chǎn)生錯誤校正碼編碼,第一解碼器160用以執(zhí)行第一錯誤校正操作。編碼器150包括一第一編碼單元152以及一第二編碼單元154,其中編碼器150可于數(shù)據(jù)寫入操作時接收欲寫入至存儲器單元210的一數(shù)據(jù),再分別通過第一編碼法以及第二編碼法,依據(jù)該數(shù)據(jù)產(chǎn)生相應(yīng)對應(yīng)于第一方法以及第二方法的一第一同位數(shù)據(jù)(parity data)以及一第二同位數(shù)據(jù),再依據(jù)該數(shù)據(jù)、第一同位數(shù)據(jù)以及第二同位數(shù)據(jù),產(chǎn)生一編碼數(shù)據(jù),最后將該編碼數(shù)據(jù)寫入至存儲器單元210。舉例來說,第一編碼單元152可產(chǎn)生容錯數(shù)量為6位的錯誤校正碼對應(yīng)的同位數(shù)據(jù),而第二編碼單元巧4可產(chǎn)生容錯數(shù)量為36位的錯誤校正碼對應(yīng)的同位數(shù)據(jù)。關(guān)于編碼器150的細節(jié)及運作請參見以下圖5的說明。第一解碼器160可還包括一第一錯誤檢測單元162以及一第一錯誤校正單元164。 第一錯誤檢測單元162可于數(shù)據(jù)讀取操作時,對輸入數(shù)據(jù)進行一錯誤檢測操作,產(chǎn)生一檢錯結(jié)果,其中檢錯結(jié)果用以表示輸入數(shù)據(jù)是否有錯誤。第一錯誤校正單元164耦接至第一錯誤檢測單元162,用以于檢錯結(jié)果表示輸入數(shù)據(jù)有錯誤時,執(zhí)行第一錯誤校正操作并產(chǎn)生相應(yīng)的解碼結(jié)果至仲裁模塊120。關(guān)于第一解碼器160的細節(jié)及運作請參見以下圖6的說明。類似地,第二校正模塊130耦接于仲裁模塊120,其中第二校正模塊130是于接收到來自仲裁模塊120的一啟動訊號才啟動,當(dāng)被啟動時,第二校正模塊130可用以執(zhí)行第二錯誤校正操作。仲裁模塊120是于檢測到第一校正模塊110所產(chǎn)生的解碼結(jié)果表示解碼失敗時產(chǎn)生此啟動訊號,以啟動第二校正模塊130執(zhí)行第二錯誤校正操作。第二校正模塊130 可還包括一第二解碼器170,其可還包括一第二錯誤檢測單元172以及一第二錯誤校正單元174。第二錯誤檢測單元172可于數(shù)據(jù)讀取操作時,對輸入數(shù)據(jù)進行一錯誤檢測操作,產(chǎn)生一檢錯結(jié)果,其中檢錯結(jié)果用以表示輸入數(shù)據(jù)是否有錯誤。第二錯誤校正單元174耦接至第二錯誤檢測單元172,用以執(zhí)行第二錯誤校正操作以進行錯誤校正。舉例來說,而第二校正模塊130是以一容錯數(shù)量為36位的錯誤校正碼進行錯誤校正,因此,第二錯誤校正單元174是使用此容錯數(shù)量為36位的錯誤校正碼來進行第二錯誤校正操作以自動檢查并校正36個位以下的錯誤。由于第二校正模塊130只會在第一校正模塊110解碼失敗時才會啟動,說明此前第一校正模塊110已經(jīng)檢測到輸入數(shù)據(jù)的確有錯誤發(fā)生,因此在本發(fā)明另一實施例中,第二校正模塊130可以省略第二錯誤檢測單元172,當(dāng)?shù)谝恍UK110所產(chǎn)生的解碼結(jié)果表示解碼失敗時,直接由第二錯誤校正單元174進行錯誤校正。第二錯誤校正單元174的校正對象可以是原始的輸入數(shù)據(jù),也可以是經(jīng)由第一錯誤校正單元164校正后的數(shù)據(jù)。儲存單元140耦接至第一校正模塊110,第二校正模塊130及存儲器模塊200,儲存單元140接收并儲存自存儲器單元210讀取的輸入數(shù)據(jù),供第一校正模塊110與第二校正模塊130讀取以進行錯誤校正;儲存單元140還接收并儲存第一校正模塊110在解碼成功時輸出的校正后數(shù)據(jù),或第一校正模塊110在解碼失敗時第二校正模塊130輸出的校正后數(shù)據(jù),以供主機(未繪示)讀取。儲存單元140在本發(fā)明一實施例中,儲存單元140進一步包括訊息數(shù)據(jù)儲存單元141,冗余數(shù)據(jù)儲存單元142,以及同位數(shù)據(jù)(parity data)儲存單元143,分別用以儲存訊息數(shù)據(jù),冗余數(shù)據(jù)以及同位數(shù)據(jù)。其中同位數(shù)據(jù)儲存單元143儲存的同位數(shù)據(jù)包括應(yīng)于第一方法以及第二方法的一第一同位數(shù)據(jù)(parity data)以及一第二同位數(shù)據(jù)。在本發(fā)明一實施例中,儲存單元140可以以一靜態(tài)隨機存取存儲器(SRAM)實現(xiàn)。圖2是根據(jù)本發(fā)明一實施例所述的存儲器模塊的錯誤檢查與校正方法。依據(jù)本發(fā)明的存儲器模塊的錯誤檢查與校正方法可適用于圖1所示的存儲器模塊的錯誤檢查與校正100上,用以對存儲器模塊200的存儲器單元210進行自動錯誤檢查與校正操作。于本實施例中,存儲器模塊200中至少包括一存儲器單元210且存儲器單元210為一塊快閃存儲器芯片。首先,如步驟S202,第一校正模塊110通過第一解碼器160接收來自存儲器單元 210的一輸入數(shù)據(jù)。接著,如步驟S204,通過一第一校正模塊110對輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作,并產(chǎn)生一解碼結(jié)果,其中解碼結(jié)果用以表示是否解碼失敗。具體來說,第一校正模塊110內(nèi)的第一解碼器160通過一第一錯誤檢測單元162對輸入數(shù)據(jù)進行一錯誤檢測操作,產(chǎn)生一檢錯結(jié)果。其中,檢錯結(jié)果用以表示此輸入數(shù)據(jù)是否有錯誤。若否,則流程結(jié)束。若是,第一解碼器160執(zhí)行一第一錯誤校正操作。舉例而言,第一校正模塊110是以一第一容錯數(shù)量例如容錯數(shù)量為6位的錯誤校正碼進行錯誤校正。當(dāng)?shù)谝恍UK110利用第一容錯數(shù)量的錯誤校正碼對輸入數(shù)據(jù)執(zhí)行第一錯誤校正操作時,若可自動校正所有的錯誤,解碼結(jié)果將表示解碼成功,而若無法自動校正所有的錯誤時,解碼結(jié)果將表示解碼失敗。接著,如步驟S206,仲裁模塊120將依據(jù)解碼結(jié)果,決定是否通過第二校正模塊 130對輸入數(shù)據(jù)執(zhí)行一第二錯誤校正操作。其中,第二校正模塊130是以一第二容錯數(shù)量的錯誤校正碼進行錯誤校正且第二容錯數(shù)量大于第一校正模塊110所使用的第一容錯數(shù)量, 例如第一容錯數(shù)量為6位,第二容錯數(shù)量為36/60位。當(dāng)解碼結(jié)果表示解碼成功時(步驟 S206的否),表示所有錯誤均已被第一校正模塊110自動校正,因此無需啟動第二層的第二校正模塊130,仲裁模塊120決定不啟動第二校正模塊130。也就是說,仲裁模塊120于解碼結(jié)果表示解碼成功時,不會通過第二校正模塊130執(zhí)行第二錯誤校正操作。反之,當(dāng)解碼結(jié)果表示解碼失敗時(步驟S206的是),表示有些錯誤無法被第一校正模塊110自動校正,仲裁模塊120將啟動第二校正模塊130,以通過第二校正模塊130對輸入數(shù)據(jù)執(zhí)行第二錯誤校正操作(步驟S208)。由于目前存儲器模塊中發(fā)生較少位以下的錯誤的情形約占了所有可能錯誤概率的90%以上,因此本發(fā)明的第一層錯誤校正所執(zhí)行的第一錯誤校正操作可花很少時間來進行錯誤校正,可以解決大約所有的錯誤。即便少數(shù)的較多位的錯誤的情形發(fā)生時,也可通過本發(fā)明的第二層錯誤校正所執(zhí)行的第二錯誤校正操作來更正所有的錯誤,更能確保數(shù)據(jù)的正確性。于一些實施例中,當(dāng)存儲器模塊200的多個存儲器單元210的解碼結(jié)果均表示解碼失敗時,仲裁模塊120可更進一步?jīng)Q定所述解碼失敗的存儲器單元210的第二錯誤校正操作的執(zhí)行順序。假設(shè)同時有多個存儲器單元210都解碼失敗時,仲裁單元120會以一既定仲裁規(guī)則例如輪詢仲裁(Round-Robin arbitration)的方式來服務(wù)所述解碼失敗的存儲器單元210。舉例來說,仲裁單元120會依序從存儲器單元0至存儲器單元7進行輪詢來決定。于一些實施例中,每個存儲器單元可包括一個優(yōu)先權(quán),優(yōu)先權(quán)愈高者將優(yōu)先被執(zhí)行,且已服務(wù)過的優(yōu)先權(quán)將變?yōu)樽畹停我粋€順位的存儲器單元的優(yōu)先權(quán)將變?yōu)樽罡?,以便于下次進行服務(wù)。舉例來說,若存儲器單元0與存儲器單元1同時需要啟動第二層錯誤校正時,因輪詢順序為先詢問存儲器單元0接著才詢問存儲器單元1,因此存儲器單元0將會優(yōu)先執(zhí)行第二層錯誤校正,且存儲器單元0的優(yōu)先權(quán)將會設(shè)為最低,而存儲器單元1的優(yōu)先權(quán)將會設(shè)為最高,因此,存儲器單元1將會接著執(zhí)行。圖3顯示依據(jù)本發(fā)明另一實施例的存儲器模塊的錯誤檢查與校正系統(tǒng)的示意圖。 如圖3所示,存儲器模塊的錯誤檢查與校正系統(tǒng)100 ’用以對存儲器模塊200,進行錯誤檢查與校正,其中存儲器模塊200’包括多個存儲器單元211-218。于本實施例中,每一存儲器單元211-218可為一塊快閃存儲器芯片,存儲器模塊200’由多塊快閃存儲器芯片構(gòu)成。存儲器模塊的錯誤檢查與校正系統(tǒng)100’至少包括多個第一校正模塊110、一仲裁模塊120、以及一第二校正模塊130,其中每個第一校正模塊110耦接至存儲器模塊的存儲器單元211-218 中的其中一個對應(yīng)存儲器單元且用以接收/讀取其對應(yīng)存儲器單元的一輸入數(shù)據(jù)并對此輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作產(chǎn)生一解碼結(jié)果。其中第一校正模塊110是以一第一容錯數(shù)量例如容錯數(shù)量為6位的錯誤校正碼進行錯誤校正。類似地,當(dāng)?shù)谝恍UK110利用第一容錯數(shù)量的錯誤校正碼對輸入數(shù)據(jù)執(zhí)行第一錯誤校正操作時,若可自動校正所有的錯誤(亦即錯誤的位長度低于第一容錯數(shù)量),解碼結(jié)果將表示解碼成功,而若無法自動校正所有的錯誤時,解碼結(jié)果將表示解碼失敗。每個存儲器單元211-218對應(yīng)的第一校正模塊110的解碼結(jié)果均會被送至仲裁模塊120進行仲裁。仲裁模塊120耦接于所有第一校正模塊110以及第二校正模塊130之間, 其中,仲裁模塊120依據(jù)所有第一校正模塊110產(chǎn)生的解碼結(jié)果決定是否啟動或關(guān)閉第二校正模塊130。當(dāng)所有解碼結(jié)果均表示解碼成功時,表示所有錯誤都已自動校正,無須啟動第二層錯誤校正,仲裁模塊120便關(guān)閉第二校正模塊130。當(dāng)解碼結(jié)果的任一個表示解碼失敗時,表示仍有一些錯誤無法自動校正,仲裁模塊120便啟動第二校正模塊130。舉例來說, 假設(shè)有八個存儲器單元共同耦接至仲裁單元120時,只要八個存儲器單元中的任一個的第一錯誤校正檢查的解碼結(jié)果表示解碼失敗時,便會啟動第二層錯誤校正。第二校正模塊130 用以于被仲裁模塊120啟動時執(zhí)行一第二錯誤校正操作。其中,第二校正模塊130是以一第二容錯數(shù)量的錯誤校正碼進行第二錯誤校正操作且第二容錯數(shù)量大于第一容錯數(shù)量。舉例來說,于一實施例中,第一校正模塊110是以一容錯數(shù)量為6位的錯誤校正碼進行第一錯誤校正操作,因此第一錯誤校正操作最多可糾正IOM字節(jié)中發(fā)生的6位的錯誤,而第二校正模塊130是以一容錯數(shù)量為36/60位的錯誤校正碼進行第二錯誤校正操作第二層錯誤校正,因此第二錯誤校正操作最多可糾正IOM字節(jié)中的36/60位的錯誤。舉例來說,于一實施例中,當(dāng)?shù)谝淮鎯ζ鲉卧?例如存儲器單元211)的解碼結(jié)果以及第二存儲器單元(例如存儲器單元21 的解碼結(jié)果均表示解碼失敗時,仲裁模塊 120可依照一既定輪詢順序以一輪詢方式依序利用第二校正模塊130對第一存儲器單元以及第二存儲器單元執(zhí)行第二錯誤校正操作。于另一實施例中,第一存儲器單元以及第二存儲器單元可分別包括一優(yōu)先權(quán)數(shù)據(jù),并且第一存儲器單元以及第二存儲器單元是依據(jù)所述優(yōu)先權(quán)依序執(zhí)行該第二錯誤校正操作。仲裁模塊120可依照每個存儲器單元210對應(yīng)的優(yōu)先權(quán)數(shù)據(jù)由高到低依序利用第二校正模塊130對對應(yīng)的存儲器單元執(zhí)行第二錯誤校正操作。于一些實施例中,由于一般情形只會發(fā)生較少位(例如4位)以下的錯誤,所以第二層錯誤校正很少會啟用,因此可配置專門的寄存器以供使用者根據(jù)實際需求來選擇只允許啟用第一層錯誤校正而不允許啟動第二層錯誤校正以進一步節(jié)省電力,或者兩層錯誤校正都允許啟用(前述實施方式即兩層錯誤校正均允許啟用的情形)。于一些實施例中,可進一步提供一種以上的不同錯誤校正能力的第三錯誤校正單元,再依據(jù)實際需求,通過專門的寄存器來設(shè)定僅啟用第一層錯誤校正、僅啟用第二層錯誤校正的第二錯誤校正單元或第三錯誤校正單元或同時啟用第一層錯誤校正以及第二層錯誤校正以進一步增加其錯誤校正能力。此外,因為本案有可能用到兩層錯誤校正,因此于執(zhí)行數(shù)據(jù)寫入操作時,第一校正模塊110中的編碼器150必須同時產(chǎn)生對應(yīng)兩層錯誤校正的同位數(shù)據(jù)。編碼器150可接收一欲寫入數(shù)據(jù),并利用編碼器150中的第一編碼單元152以及第二編碼單元IM分別產(chǎn)生一第一同位數(shù)據(jù)以及一第二同位數(shù)據(jù),再依據(jù)欲寫入數(shù)據(jù)、第一同位數(shù)據(jù)以及第二同位數(shù)據(jù),產(chǎn)生一已編碼數(shù)據(jù)(encoded data),最后再將所產(chǎn)生的已編碼數(shù)據(jù)寫入至對應(yīng)的存儲器單元。舉例來說,主機(未繪示)欲寫入的數(shù)據(jù)會寄存至一動態(tài)隨機存取存儲器DRAM(未繪示)中,從DRAM所讀出的IOM字節(jié)的訊息數(shù)據(jù)將儲存在存儲器單元例如NAND型快閃存儲器的數(shù)據(jù)區(qū)域(data area),同位數(shù)據(jù)將儲存在存儲器單元的備份區(qū)域(spare area)以供后續(xù)數(shù)據(jù)讀出操作時使用。圖4為依據(jù)本發(fā)明一實施例的已編碼數(shù)據(jù)示意圖。如圖4所示,已編碼數(shù)據(jù)400至少包括三個部分,亦即原始訊息數(shù)據(jù)、第一同位數(shù)據(jù)以及第二同位數(shù)據(jù),其中,第一同位數(shù)據(jù)以及第二同位數(shù)據(jù)的數(shù)據(jù)長度取決于所使用的錯誤校正碼的容錯數(shù)量。于一些實施例中,原始訊息數(shù)據(jù)也可還包含對應(yīng)于錯誤校正的冗余信息。在本發(fā)明一實施例中,錯誤校正碼的編碼方法以BCH碼(Bose-Chaudhuri-Hocquenham,BCH)為例,錯誤校正碼的長度是根據(jù)容錯數(shù)量在伽羅瓦域(Galois Feild)GF(2m)中決定,例如,當(dāng)m = 14, 則IOM字節(jié)的原始訊信息數(shù)據(jù)(message data)需要11字節(jié)的同位數(shù)據(jù)(parity data), 以自動檢查并校正6個位以下的錯誤。再舉例而言,如果原始訊息數(shù)據(jù)包括冗余數(shù)據(jù),該冗余數(shù)據(jù)可以是對錯誤校正來說的一些冗余信息,則IOM字節(jié)的原始訊信息數(shù)據(jù)(message data)+16字節(jié)的冗余數(shù)據(jù)(redundant data)需要11字節(jié)的同位數(shù)據(jù)(parity data),則上述錯誤校正碼的容錯數(shù)量也是6位。再舉例而言,如果錯誤校正碼的容錯數(shù)量也是36位, 則IOM字節(jié)的原始訊信息數(shù)據(jù)(message data)需要63字節(jié)的同位數(shù)據(jù)(parity data); 如果錯誤校正碼的容錯數(shù)量也是60位,則10 字節(jié)的原始訊信息數(shù)據(jù)(message data)需要105字節(jié)的同位數(shù)據(jù)(parity data)。在一實施例中,第一同位數(shù)據(jù)以及第二同位數(shù)據(jù)均儲存于儲存單元140的同位數(shù)據(jù)儲存單元143中。以下列舉一些實施例,用以輔助說明依據(jù)本發(fā)明的錯誤校正碼編碼器與錯誤校正碼解碼器細節(jié),但本發(fā)明并不限于此。于以下實施例中是以錯誤校正碼為BCH碼 (Bose-Chaudhuri-Hocquenham,BCH)為例進行說明,但本發(fā)明并不限于此。舉例來說, 錯誤校正碼的編碼演算法包括漢明碼(Hamming code)、里德所羅門碼(Reed-Solomon code)、里德米勒碼(Reed-Muller code)、二次元格雷碼(Binary Golay code)、回旋碼 (convolutional code)、及渦輪碼(turbo code)等等,均適用于本發(fā)明。圖5為依據(jù)本發(fā)明一實施例的錯誤校正碼編碼器500的區(qū)塊圖。于本實施例中, 錯誤校正碼編碼器500包括一第一編碼單元502以及一第二編碼單元504。其中,錯誤校正碼編碼器500可為圖1中的編碼器150,其中,第一編碼單元502對應(yīng)第一編碼單元152,第二編碼單元504對應(yīng)第二編碼單元154。如前述,于執(zhí)行數(shù)據(jù)寫入操作時,錯誤校正碼編碼器500必須同時產(chǎn)生對應(yīng)兩層錯誤校正的同位數(shù)據(jù)。如圖5所示,于執(zhí)行數(shù)據(jù)寫入操作時, DMA控制器(DMA controller)首先從DRAM(未繪示)中取出一原始訊息數(shù)據(jù),之后,取出的原始訊息數(shù)據(jù)先儲存于儲存單元(該儲存單元可以是對應(yīng)于圖1中的儲存單元140,也可以是其它儲存單元)中并送至錯誤校正碼編碼器500中的第一編碼單元502與第二編碼單元 504中分別算出對應(yīng)于容錯數(shù)量為6位錯誤校正碼與容錯數(shù)量為36位錯誤校正碼的第一同位數(shù)據(jù)以及第二同位數(shù)據(jù),再將算出的兩個同位數(shù)據(jù)連同存入儲存單元的原始訊息數(shù)據(jù)通過存儲器控制器例如進階型快閃存儲器控制器(Advanced Nand Flash Controller)寫入特定的存儲器單元。于一些實施例中,錯誤校正碼編碼器500也可依據(jù)欲寫入的原始訊息數(shù)據(jù)、第一同位數(shù)據(jù)以及第二同位數(shù)據(jù),產(chǎn)生一已編碼數(shù)據(jù)(如圖4所示),之后再將所產(chǎn)生的已編碼數(shù)據(jù)寫入至對應(yīng)的存儲器單元。圖6為依據(jù)本發(fā)明一實施例的錯誤校正碼解碼器600的區(qū)塊圖。于本實施例中, 錯誤校正碼解碼器600包括癥狀碼(syndrome)計算單元602 (SCBlock)、錯誤多項式計算單元604 (KES)、秦式搜尋單元606 (CSEE)、以及控制電路608 (Main Control)。其中,錯誤校正碼解碼器600可為圖1中的第一解碼器160或第二解碼器170。舉例來說,若錯誤校正碼解碼器600為圖1中的第一解碼器160時,癥狀碼計算單元602對應(yīng)于第一錯誤檢測單元 162,而錯誤多項式計算單元604、秦式搜尋單元606、以及控制電路608對應(yīng)于第一錯誤校正單元164。于將數(shù)據(jù)從存儲器單元取出的數(shù)據(jù)讀取操作中,所取出的為編碼后的錯誤校正碼,因此在數(shù)據(jù)使用前必須先解碼錯誤校正碼,以還原為原始數(shù)據(jù)。當(dāng)錯誤校正碼解碼器 600收到錯誤校正碼(例如BCH碼)時,錯誤校正碼解碼器600自該錯誤校正碼取出其所包含的訊息及同位數(shù)據(jù)。首先,癥狀碼計算單元602依據(jù)錯誤校正碼的同位數(shù)據(jù)計算多個癥狀碼S1, S2,... , &。錯誤校正碼解碼器600檢查是否癥狀碼S1, S2,... ,Sk皆為零。若癥狀碼S1, S2, . . . , Sk為零,表示錯誤校正碼沒有發(fā)生錯誤,因此不需進一步的校正。反之,若癥狀碼S1, S2,...,&有其中之一不為零,表示錯誤校正碼有錯誤發(fā)生,因此必須對錯誤校正碼進行校正。于是,癥狀碼計算單元602產(chǎn)生一表示有錯誤發(fā)生的檢測結(jié)果ECC ERR至錯誤多項式計算單元604,使其開始執(zhí)行一錯誤校正操作。接著,錯誤多項式計算單元604依據(jù)所計算出的癥狀碼Si,S2,. . .,SK計算出一錯誤多項式(error location polynomial) 的多個系數(shù),并判斷該錯誤多項式的根個數(shù),例如錯誤多項式的系數(shù)不為0的最高次冪為多少次冪,則錯誤多項式計算單元604會判斷該錯誤位置多項式具有多少個根。秦式搜尋單元606用以進行一秦式搜尋(Chien search)找出該錯誤多項式的多個根,以確定錯誤發(fā)生的位的位置,以供進行錯誤校正。由于錯誤多項式的根指示錯誤校正碼中發(fā)生錯誤的位的位置,因此錯誤校正碼解碼器600的控制電路608便可依據(jù)錯誤多項式的根校正錯誤校正碼,例如,校正即是對發(fā)生錯誤的位取反,從而得到一校正后數(shù)據(jù)。控制電路608將持續(xù)檢查癥狀碼Si,S2,. . .,SK是否為零,并于所述癥狀碼Si,S2,. . .,SK皆為零時停止錯誤多項式計算單元604對錯誤多項式的系數(shù)的計算,并停止秦式搜尋單元606對錯誤多項式的根的搜尋。假設(shè)錯誤校正碼解碼器600為第一校正模塊110中的第一解碼器160時,可進一步于執(zhí)行前述錯誤校正操作之后,依據(jù)秦式搜尋單元606所找出的錯誤多項式的根的數(shù)目是否等于錯誤多項式計算單元604所確定的錯誤多項式的根的數(shù)目來判斷解碼是否成功。 若秦式搜尋單元606所找出的錯誤多項式的根的數(shù)目等于錯誤多項式計算單元604所確定的根的數(shù)目,則表示校正成功。反之,若不相等,表示校正失敗,因此便產(chǎn)生一解碼結(jié)果 decode_fail至仲裁模塊120,表示第一層的錯誤校正操作校正失敗。仲裁模塊120接收到此解碼結(jié)果deCOde_fail表示第一層的錯誤校正操作校正失敗之后,便啟動第二錯誤校正碼解碼器130來進行第二層的錯誤校正操作。在某些實際應(yīng)用中,為了提高校正精度,即便秦式搜尋單元606所找出的錯誤多項式的根的數(shù)目等于錯誤多項式計算單元604所確定的根的數(shù)目,即不產(chǎn)生deCOde_fail訊號時,也不能確定校正一定成功,在本發(fā)明另一實施例中,當(dāng)錯誤校正碼解碼器600為第一解碼器160時,錯誤校正碼解碼器600進一步包括一第二錯誤檢測單元610,耦接第一錯誤校正單元164 (包括圖6的錯誤多項式計算單元604、 秦式搜尋單元606、以及控制電路608),其對第一錯誤校正單元164輸出的校正后數(shù)據(jù)再進行一第二錯誤檢測操作,產(chǎn)生該解碼結(jié)果,其中該解碼結(jié)果用以表示第一錯誤校正單元164 輸出的校正后數(shù)據(jù)是否有錯誤。若無錯誤,則表示校正成功,則控制電路608將校正后數(shù)據(jù)儲存至儲存單元140以供主機host (未繪示)讀取。若有錯誤,則表示校正失敗,第二錯誤檢測單元610將該解碼結(jié)果至仲裁模塊120,表示第一層的錯誤校正操作校正失敗。在本實施例中,第二錯誤檢測單元610是對第一錯誤校正單元164輸出的校正后數(shù)據(jù)進行檢錯,而非對原始的輸入數(shù)據(jù)進行檢錯,此外,其是將第二錯誤檢測單元610的檢錯結(jié)果作為解碼結(jié)果送至仲裁模塊120,并非將deCOde_fail信號作為解碼結(jié)果送至仲裁模塊120。綜上所述,依據(jù)本發(fā)明的存儲器模塊的錯誤檢查及校正系統(tǒng)提供兩層錯誤校正結(jié)構(gòu),兩層錯誤校正各自具有不同的數(shù)據(jù)容錯能力(例如第一層錯誤校正最多可糾正IK字節(jié)中發(fā)生的6位的錯誤,而第二層錯誤校正最多可糾正IK字節(jié)中的36/60位的錯誤),其中存儲器模塊中每個存儲器單元有自己的具有較小容錯數(shù)量的第一層錯誤校正,而多個存儲器單元共用一個具有較大容錯數(shù)量的第二層錯誤校正,可在保持系統(tǒng)效能的要求下有效減少硬件成本。此外,本發(fā)明的仲裁模塊可依據(jù)共用的各個存儲器單元的第一層錯誤校正錯誤操作校正是否出錯來選擇性啟動第二層錯誤校正,由于發(fā)生較小位的錯誤的機率占大多數(shù),且只有在發(fā)現(xiàn)第一層錯誤校正操作校正出錯時才會啟動第二層錯誤校正,因此可提供更佳的錯誤校正效能。再者,依據(jù)本發(fā)明的存儲器模塊的錯誤校正系統(tǒng)可通過一配置寄存器來選擇開啟/關(guān)閉第二層錯誤校正功能,提高使用上的彈性應(yīng)用。本發(fā)明的方法,或特定型態(tài)或其部份,可以以程序碼的型態(tài)包含于實體媒體,如軟盤、光盤片、硬盤、或是任何其他機器可讀取(如計算機可讀取)儲存媒體,其中,當(dāng)程序碼被機器,如計算機載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。本發(fā)明的方法與裝置也可以以程序碼型態(tài)通過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態(tài)進行傳送,其中,當(dāng)程序碼被機器,如計算機接收、載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。當(dāng)在一般用途處理器實作時,程序碼結(jié)合處理器提供一操作類似于應(yīng)用特定邏輯電路的獨特裝置。本發(fā)明雖以各種實施例揭示如上,然而其僅為范例參考而非用以限定本發(fā)明的范圍,本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍的前提下,當(dāng)可做若干的更動與潤飾。因此上述實施例并非用以限定本發(fā)明的范圍,本發(fā)明的保護范圍是以本發(fā)明的權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種存儲器模塊的錯誤檢查與校正方法,該存儲器模塊包括至少一存儲器單元,包括下列步驟接收來自該存儲器單元的一輸入數(shù)據(jù);通過一第一校正模塊對該輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作,并產(chǎn)生一解碼結(jié)果,其中該解碼結(jié)果用以表示是否解碼失?。灰约耙罁?jù)該解碼結(jié)果,決定是否啟動一第二校正模塊對該輸入數(shù)據(jù)執(zhí)行一第二錯誤校正操作,其中該第一校正模塊以及該第二校正模塊分別采用一第一方法以及一第二方法且該第一方法是以一第一容錯數(shù)量的錯誤校正碼進行錯誤校正,該第二方法是以一第二容錯數(shù)量的錯誤校正碼進行錯誤校正,且該第二容錯數(shù)量大于該第一容錯數(shù)量。
2.如權(quán)利要求1所述的存儲器模塊的錯誤檢查與校正方法,還包括下列步驟通過一錯誤檢測單元對該輸入數(shù)據(jù)進行一錯誤檢測操作,產(chǎn)生一檢錯結(jié)果,其中該檢錯結(jié)果用以表示該輸入數(shù)據(jù)是否有錯誤;以及于該檢錯結(jié)果表示該輸入數(shù)據(jù)有錯誤時,通過該第一校正模塊對該輸入數(shù)據(jù)執(zhí)行該第一錯誤校正操作。
3.如權(quán)利要求1所述的存儲器模塊的錯誤檢查與校正方法,其中該依據(jù)該解碼結(jié)果, 決定是否啟動該第二校正模塊對該輸入數(shù)據(jù)執(zhí)行該第二錯誤校正操作的步驟還包括當(dāng)該解碼結(jié)果表示解碼成功時,不啟動該第二校正模塊執(zhí)行該第二錯誤校正操作;以及當(dāng)該解碼結(jié)果表示解碼失敗時,啟動該第二校正模塊對該輸入數(shù)據(jù)執(zhí)行該第二錯誤校正操作。
4.如權(quán)利要求1所述的存儲器模塊的錯誤檢查與校正方法,其中該至少一存儲器單元包括一第一存儲器單元以及一第二存儲器單元,且該依據(jù)該解碼結(jié)果,決定是否啟動該第二校正模塊對該輸入數(shù)據(jù)執(zhí)行該第二錯誤校正操作的步驟還包括于該第一存儲器單元以及該第二存儲器單元的其中任一個的該解碼結(jié)果表示解碼失敗時,啟動該第二校正模塊執(zhí)行該第二錯誤校正操作。
5.如權(quán)利要求4所述的存儲器模塊的錯誤檢查與校正方法,其中當(dāng)該第一存儲器單元的該解碼結(jié)果以及該第二存儲器單元的該解碼結(jié)果均表示解碼失敗時,該第一存儲器單元以及該第二存儲器單元是以一輪詢方式依序通過該第二校正模塊執(zhí)行該第二錯誤校正操作。
6.如權(quán)利要求4所述的存儲器模塊的錯誤檢查與校正方法,其中該第一存儲器單元以及該第二存儲器單元分別包括一優(yōu)先權(quán),并且該第一存儲器單元以及該第二存儲器單元依據(jù)所述優(yōu)先權(quán)依序通過該第二校正模塊執(zhí)行該第二錯誤校正操作。
7.如權(quán)利要求1所述的存儲器模塊的錯誤檢查與校正方法,還包括 接收欲寫入至該存儲器單元的一數(shù)據(jù);分別通過一第一編碼法以及一第二編碼法,依據(jù)該數(shù)據(jù)產(chǎn)生相應(yīng)對應(yīng)于該第一方法以及該第二方法的一第一同位數(shù)據(jù)以及一第二同位數(shù)據(jù);依據(jù)該數(shù)據(jù)、該第一同位數(shù)據(jù)以及該第二同位數(shù)據(jù),產(chǎn)生一編碼數(shù)據(jù);以及將該編碼數(shù)據(jù)寫入至該存儲器單元。
8.如權(quán)利要求1所述的存儲器模塊的錯誤檢查與校正方法,還包括提供一寄存器,用以設(shè)定是否允許啟動該第二校正模塊執(zhí)行該第二錯誤校正操作。
9.如權(quán)利要求1所述的存儲器模塊的錯誤檢查與校正方法,其中該存儲器單元為一快閃存儲器芯片。
10.一種存儲器模塊的錯誤檢查與校正系統(tǒng),其中該存儲器模塊包括多個存儲器單元, 包括多個第一校正模塊對應(yīng)耦接至所述存儲器單元,每一所述第一校正模塊對應(yīng)所述存儲器單元的其中一個且用以接收該對應(yīng)存儲器單元的一輸入數(shù)據(jù)并對該輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作,并產(chǎn)生一解碼結(jié)果;一第二校正模塊,用以于被啟動時執(zhí)行一第二錯誤校正操作,其中該第一校正模塊是以一第一容錯數(shù)量的錯誤校正碼進行錯誤校正,該第二校正模塊是以一第二容錯數(shù)量的錯誤校正碼進行錯誤校正且該第二容錯數(shù)量大于該第一容錯數(shù)量;以及一仲裁模塊,耦接于所述第一校正模塊以及該第二校正模塊之間,其中該仲裁模塊是依據(jù)所述第一校正模塊產(chǎn)生的所述解碼結(jié)果決定是否啟動該第二校正模塊,其中該仲裁模塊是于所述解碼結(jié)果的任一個表示解碼失敗時,啟動該第二校正模塊以對該輸入數(shù)據(jù)執(zhí)行該第二錯誤校正操作。
11.如權(quán)利要求10所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中該第一校正模塊還包括一第一錯誤檢測單元,用以于一數(shù)據(jù)讀取操作時,對該輸入數(shù)據(jù)進行一第一錯誤檢測操作,產(chǎn)生一第一檢錯結(jié)果,其中該第一檢錯結(jié)果用以表示該輸入數(shù)據(jù)是否有錯誤;以及一第一錯誤校正單元,耦接至該第一錯誤檢測單元,用以于該第一檢錯結(jié)果表示該輸入數(shù)據(jù)有錯誤時,執(zhí)行該第一錯誤校正操作,并產(chǎn)生該解碼結(jié)果至該仲裁器。
12.如權(quán)利要求10所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中該第一校正模塊還包括一第一錯誤檢測單元,用以于一數(shù)據(jù)讀取操作時,對該輸入數(shù)據(jù)進行一第一錯誤檢測操作,產(chǎn)生一檢錯結(jié)果,其中該檢錯結(jié)果用以表示該輸入數(shù)據(jù)是否有錯誤;以及一第一錯誤校正單元,耦接至該第一錯誤檢測單元,用以于該檢錯結(jié)果表示該輸入數(shù)據(jù)有錯誤時,執(zhí)行該第一錯誤校正操作,并輸出一校正后數(shù)據(jù);以及一第二錯誤檢測單元,耦接至該第一錯誤校正單元,對該校正后數(shù)據(jù)再進行一第二錯誤檢測操作,產(chǎn)生該解碼結(jié)果至該仲裁器。
13.如權(quán)利要求10所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中該第一校正模塊還包括一編碼器,其具有一第一編碼單元及一第二編碼單元,用以于一數(shù)據(jù)寫入操作時,接收欲寫入至一存儲器單元的一數(shù)據(jù),其中該第一編碼單元以及該第二編碼單元依據(jù)該數(shù)據(jù)分別產(chǎn)生相應(yīng)對應(yīng)于該第一容錯數(shù)量的錯誤校正碼以及該第二容錯數(shù)量的錯誤校正碼的一第一同位數(shù)據(jù)以及一第二同位數(shù)據(jù),該編碼器依據(jù)該數(shù)據(jù)、該第一同位數(shù)據(jù)以及該第二同位數(shù)據(jù),產(chǎn)生一已編碼數(shù)據(jù),并將該已編碼數(shù)據(jù)寫入至該存儲器單元。
14.如權(quán)利要求10所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中該第二校正模塊還包括一第二錯誤校正單元,用以于所述解碼結(jié)果的任一個表示解碼失敗時時,執(zhí)行該第二錯誤校正操作。
15.如權(quán)利要求14所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中該第二校正模塊還包括一第二錯誤檢測單元,耦接至該第二錯誤校正單元,用以于一數(shù)據(jù)讀取操作時,對該輸入數(shù)據(jù)進行一第二錯誤檢測操作,產(chǎn)生一第二檢錯結(jié)果,其中該第二檢錯結(jié)果用以表示該輸入數(shù)據(jù)是否有錯誤。
16.如權(quán)利要求10所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中所述存儲器單元至少包括一第一存儲器單元以及一第二存儲器單元且當(dāng)該第一存儲器單元的該解碼結(jié)果以及該第二存儲器單元的該解碼結(jié)果均表示解碼失敗時,該仲裁器是以一輪詢方式依序?qū)υ摰谝淮鎯ζ鲉卧约霸摰诙鎯ζ鲉卧獔?zhí)行該第二錯誤校正操作。
17.如權(quán)利要求16所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中該第一存儲器單元以及該第二存儲器單元分別包括一優(yōu)先權(quán),并且該仲裁器依據(jù)所述優(yōu)先權(quán)依序?qū)υ摰谝淮鎯ζ鲉卧约霸摰诙鎯ζ鲉卧獔?zhí)行該第二錯誤校正操作。
18.如權(quán)利要求10所述的存儲器模塊的錯誤檢查與校正系統(tǒng),還包括一寄存器,用以設(shè)定是否允許啟動該第二校正模塊執(zhí)行該第二錯誤校正操作。
19.如權(quán)利要求10所述的存儲器模塊的錯誤檢查與校正系統(tǒng),其中所述存儲器單元分別為一快閃存儲器芯片,該存儲器模塊由多個快閃存儲器芯片構(gòu)成。
全文摘要
本發(fā)明提供了一種存儲器模塊的錯誤檢查與校正系統(tǒng)以及方法。對于該存儲器模塊的錯誤檢查與校正方法,該存儲器模塊包括至少一存儲器單元,該方法包括以下流程步驟接收來自該存儲器單元的一輸入數(shù)據(jù);通過一第一校正模塊對該輸入數(shù)據(jù)執(zhí)行一第一錯誤校正操作并產(chǎn)生一解碼結(jié)果,其中該解碼結(jié)果用以表示是否解碼失?。灰约耙罁?jù)該解碼結(jié)果,決定是否啟動一第二校正模塊對該輸入數(shù)據(jù)執(zhí)行一第二錯誤校正操作。其中,該第一校正模塊以及該第二校正模塊分別采用一第一方法以及一第二方法且該第一方法是以一第一容錯數(shù)量的錯誤校正碼進行錯誤校正,該第二方法是以一第二容錯數(shù)量的錯誤校正碼進行錯誤校正,且該第二容錯數(shù)量大于該第一容錯數(shù)量。
文檔編號G06F11/10GK102567134SQ20121000392
公開日2012年7月11日 申請日期2012年1月6日 優(yōu)先權(quán)日2012年1月6日
發(fā)明者沈力, 王為, 董一鳴, 鐘戟 申請人:威盛電子股份有限公司