例的流程圖。在一些實(shí)施例中,如所示的來執(zhí)行圖8中的步驟808。一般來講,如 果行(列)解碼正被執(zhí)行(例如,在圖8中),那么圖9與對行(列)碼字索引的更新(如 所需/如果需要)相關(guān)聯(lián)。 陽077] 在900處,基于對TPC碼字的一個或更多個改變來產(chǎn)生對儲存在正被處理的組件 碼字索引中的組件校驗(yàn)子的一個或更多個改變。例如,如果行解碼正被執(zhí)行,則行解碼器可W輸出誤差矢量,該誤差矢量要被與行碼字異或狂OR)W產(chǎn)生被更新的行碼字。誤差矢量 可W被用來產(chǎn)生對儲存在正被處理的行碼字索引中的行校驗(yàn)子的一個或更多個改變(例 如,也要被異或)。例如,要與圖6中的第二行碼字化00)異或的改變將被用來產(chǎn)生要與圖 7中的第二行碼字索引(702)中的S。和S2來異或的改變。
[0078] 在902處,提交對儲存在正被處理的組件碼字索引中的組件校驗(yàn)子的改變。例如, 可W關(guān)于圖7中的第二行碼字索引(702)中的S。校驗(yàn)子和Sz校驗(yàn)子來執(zhí)行讀取序列、異或 序列和寫入序列。注意,對校驗(yàn)子的改變(通常)在符號級。如果校驗(yàn)子為m位長,則改變 也是m位長。新的校驗(yàn)子為舊的校驗(yàn)子與改變的按位化it-wise)異或。此外,在一些應(yīng)用 中,不可能在緩沖器中尋址單獨(dú)的位。如果如此,則改變基于緩沖器的尋址能力(例如,1字 節(jié)、2字節(jié)或4字節(jié)),且改變可W關(guān)于使用按位異或操作來更新(如上所述)。
[0079] 在904處,判定被更新的組件校驗(yàn)子是否全都為0。例如,如果儲存在第二行碼字 索引中的被更新的S。校驗(yàn)子和S2校驗(yàn)子全都為0,那么904處的判定為是。如果運(yùn)樣,貝U 在906處將正被處理的組件碼字索引中的無錯位設(shè)置為1。例如,圖7中的第二行碼字索 引(702)中的無錯位將被設(shè)置為1。注意,無錯位的默認(rèn)值或已經(jīng)被儲存的值可W為0,因 此步驟904處的"否"路徑可W將無錯位值維持為0。
[0080] 盡管在圖9中未示出,但在第一組件緩沖器中的所有組件碼字索引都已經(jīng)被處理 之后,過程可W在第一組件緩沖器中將所有被修改位設(shè)置為0。例如,如果行(列)解碼正 被執(zhí)行,則在所有行(列)解碼已經(jīng)完成之后但列(行)解碼開始之前,行(列)校驗(yàn)子緩 沖器中的所有被修改位可W被設(shè)置為0。
[0081] 圖10是圖示用于在第二組件校驗(yàn)子緩沖器中更新與正被處理的組件碼字索引相 關(guān)的一個或更多個組件碼字索引的過程的實(shí)施例的流程圖。在一些實(shí)施例中,如所示的來 執(zhí)行圖8中的步驟810。一般來講,如果行(列)解碼正被執(zhí)行(例如,在圖8中),那么圖 10與對相關(guān)的列(行)碼字索引的更新(如所需的/如果需要)相關(guān)聯(lián)。如果兩個或更多 個列(行)碼字與單個行(列)碼字相關(guān),那么圖10中的過程可W被重復(fù)所需要的那么多 次。例如,第十列碼字和第十四碼字與圖6中的第二行碼字相關(guān)。圖10中的過程將被執(zhí)行 兩次:一次用來更新第十列碼字索引,第二次用來更新第十四列碼字索引。
[0082] 在1000處,基于對TPC碼字的一個或更多個改變來產(chǎn)生對儲存在相關(guān)的組件碼字 索引中的組件校驗(yàn)子的一個或更多個改變。為了從W上來繼續(xù)該示例,要與圖6中的第二 行碼字化00)異或的改變可W被用來產(chǎn)生要與圖7中的第十列碼字索引或第十四列碼字索 引中的校驗(yàn)子異或的改變。
[0083] 在1002處,提交對儲存在相關(guān)的組件碼字索引中的組件校驗(yàn)子的改變。如上所 述,可W使用讀取過程、異或過程和寫入過程。
[0084] 在1003處,將相關(guān)的組件碼字索引中的被修改位設(shè)置為1。注意,圖9不具有將被 修改位設(shè)置為1的相應(yīng)步驟。運(yùn)是因?yàn)樵诮o定組件校驗(yàn)子緩沖器中的被修改位由其他組件 解碼器來評估(例如,設(shè)置為1)。例如,行(列)解碼器負(fù)責(zé)評估列(行)校驗(yàn)子緩沖器中 的被修改位。運(yùn)使得在緊接前的迭代中列(行)解碼器能夠知道由行(列)解碼器來更新 什么校驗(yàn)子。 陽0財在1004處,判定被更新的組件校驗(yàn)子是否全都為0。如果是,則在1006處將相關(guān) 組件碼字索引中的無錯位設(shè)置為1。如果否,則在1008處將相關(guān)的組件碼字索引中的無錯 位設(shè)置為0。注意,關(guān)于將無錯位設(shè)置為0的必要性,在圖9與圖10之間存在(細(xì)微的)差 異。在圖9中,無錯位已經(jīng)被設(shè)置為0。運(yùn)是因?yàn)閮H如果無錯位被設(shè)置為0,組件碼字才被 處理(見,例如圖8中的步驟800,其中,圖9示出步驟808的一個實(shí)施例)。因此,在圖9 中的步驟904處沒必要做任何事,因?yàn)闊o錯位已經(jīng)被設(shè)置為0。然而,在圖10中,相關(guān)的組 件碼字可W將無錯位設(shè)置為或者0或者1。因此,在圖10中,無錯位在步驟1008處被明確 地設(shè)置為〇(因?yàn)槠淇蒞為1)。
[0086] 下面描述圖8到圖10在被應(yīng)用到圖7時的處理。在下面的示例中,行解碼器執(zhí)行 行解碼,行校驗(yàn)子緩沖器700中的記錄從頂部到底部。
[0087] 行碼字索引1(701):在該記錄中的行校驗(yàn)子不被處理,因?yàn)闊o錯位被設(shè)置為0,表 示相關(guān)聯(lián)的行碼字不包含錯誤且不需要進(jìn)一步的校正。
[0088] 行碼字索引2(702):在該記錄中的行校驗(yàn)子被處理,因?yàn)楸恍薷奈槐辉O(shè)置為1且 無錯位被設(shè)置為0。行解碼關(guān)于被包含在第二行碼字索引(702)中的行校驗(yàn)子來執(zhí)行,且在 該特定情形中的行解碼成功。由于在該情況下行(列)解碼成功,故行(列)解碼結(jié)果被 允許傳遞下去。相反地,如果行(列)解碼還未成功,則行(列)解碼結(jié)果將不被允許傳遞 下去。成功的行(列)解碼引起若干過程W開始和/或?qū)π行r?yàn)子緩沖器700和/或列校 驗(yàn)子緩沖器710的更新,包括:
[0089] ?更新第十列碼字索引(716)和第十四列碼字索引(712)中的列校驗(yàn)子。在該示 例性TPC碼構(gòu)造中,第二行碼字被捆綁至第十列碼字和第十四列碼字,因此新的列校驗(yàn)子 被產(chǎn)生W用于第十列碼字索引和第十四列碼字索引,并被提交至列校驗(yàn)子緩沖器710。
[0090] ?第十列碼字索引(716)和第十四列碼字索引(712)中的被修改位被設(shè)置為1。運(yùn) 使得列解碼器知道(在下一次迭代處)行解碼器已經(jīng)更新第十列碼字索引(716)和第十四 列碼字索引(712)中的列校驗(yàn)子。在該特定情況下,運(yùn)是一個爭論點(diǎn),因?yàn)槌跏蓟^程已經(jīng) 將列校驗(yàn)子緩沖器710中的所有被修改位設(shè)置為1,但在其他解碼迭代中,被修改位被清除 或被重置為0。
[0091] 在該特定情形中,產(chǎn)生的用于第十四列碼字索引(712)的被更新的列校驗(yàn)子全都 為0,因此第十四列碼字可W被認(rèn)為是無錯的:
[0092] ?第十四列碼字索引(712)中的無錯位被設(shè)置為1。
[0093] 由于第二行碼字現(xiàn)在可W被認(rèn)為是無錯的:
[0094] ?第二行碼字索引(702)中的行校驗(yàn)子被設(shè)置為全都為0,第二行碼字索引(702) 中的無錯位被設(shè)置為1。
[0095] 行碼字索引3(703)和行碼字索引4(704)不被處理,因?yàn)闊o錯位被設(shè)置為1。
[0096] 行碼字索引5(705):在該記錄中的行校驗(yàn)子被處理,因?yàn)楸恍薷奈槐辉O(shè)置為I而 無錯位被設(shè)置為0。在該特定情形中,行解碼不成功(例如,由行解碼器或列解碼器評估失 敗信號)。運(yùn)樣,對第五行碼字索引(705)不作出改變。所產(chǎn)生的任何更新都被舍棄且不被 提交(例如,至TPC緩沖器、至行校驗(yàn)子緩沖器、至列校驗(yàn)子緩沖器等)。
[0097] 行碼字索引6(706):在該記錄中的行校驗(yàn)子不被處理,因?yàn)闊o錯位被設(shè)置為1。
[0098] 行碼字索引7(707):在該記錄中的行校驗(yàn)子被處理,因?yàn)楸恍薷奈槐辉O(shè)置為1,而 無錯位被設(shè)置為0。在該情形中行解碼成功,從而下面的更新和過程被執(zhí)行。
[0099] ?更新第十S列碼字索引(714)中的一個或更多個列校驗(yàn)子。在該示例中,第屯 行碼字與第十=列碼字有關(guān),因此被更新的列校驗(yàn)子被產(chǎn)生用于第十=列碼字索引(714), 并被儲存于其中。 陽100] ?第十=列碼字索引(714)中的被修改位被設(shè)置為1。運(yùn)使得在下一次迭代期間 列解碼器知道行解碼器更新了儲存在第十=列碼字索引(714)中的一個或更多個碼字。 陽101] ?第十=列碼字索引(714)中的無錯位被設(shè)置為1。在該特定情形中,被產(chǎn)生用于 第十=列碼字索引的被更新的列校驗(yàn)子全都為0,因此第十=列碼字被成功地解碼。 陽102] ?第屯行碼字索引(707)中的無錯位被設(shè)置為1而用于第屯行碼字索引(707)的 行校驗(yàn)子被設(shè)置為0。運(yùn)使得在下一次迭代處(如果需要的話)行解碼器知道進(jìn)一步解碼 是不必要的。 陽103] 在行校驗(yàn)子緩沖器700中的所有的記錄都已經(jīng)被評估和處理(如果需要)之后, 行校驗(yàn)子緩沖器700中的被修改位全都被設(shè)置為0。運(yùn)將被修改位重置,使得在行解碼的第 二次迭代期間,僅行校驗(yàn)子緩沖器700中的在即將到來的列解碼期間被更新的那些記錄將 被處理。 陽104] 下面的圖示出在上述的處理已經(jīng)被執(zhí)行之后的圖7。
[01化]圖11是圖示在行解碼的第一次迭代之后但在列解碼的第一次迭代之前的行校驗(yàn) 子緩沖器和列校驗(yàn)子緩沖器的實(shí)施例的示圖。圖11繼續(xù)圖7中的示例。在所示示例中,用 星號(*)來指示圖7與圖11之間已經(jīng)改變的域。為了簡潔,在此處未示出校驗(yàn)子域。
[0106] 在行校驗(yàn)子緩沖器1100中,所有的被修改位都已經(jīng)被從1改變?yōu)?。如上所述,運(yùn) 將行校驗(yàn)子緩沖器1100重置,使得行解碼器(在下一次行解碼迭代期間)知道由列解碼器 來修改哪條記錄,從而哪個行校驗(yàn)子應(yīng)當(dāng)被處理(如果需要的話)。 陽107] 在第二行碼字索引(1102)和第屯行碼字索引(1104)中,無錯位已經(jīng)被從0改變 為1,因?yàn)榻獯a對于那些行碼字是成功的。注意,第五行碼字索引(1106)中的無錯位未被改 變而維持為0,因?yàn)樾薪獯a不成功(如上所述)。
[0108] 在列校驗(yàn)子緩沖器1110中,第十S列碼字索引(1123)和第十四列碼字索引 (1124)中的列校驗(yàn)子和無錯位已經(jīng)被更新。更具體地,那些記錄中的儲存的列校驗(yàn)子全都 為0,而無錯位被設(shè)置為1。
[0109] 使用列校驗(yàn)子緩沖器1110中示出的信息,列解碼器執(zhí)行列解碼的第一次迭代。下 面描述在第一次列解碼迭代期間由列解碼器在圖11上執(zhí)行的圖8到圖10的處理。
[0110] 列碼字索引1(1111)和列碼字索引(1112)不被處理,因?yàn)闊o錯位被設(shè)置為1。
[0111] 列碼字索引3(1113):關(guān)于第S列碼字索引(1113)中的列校驗(yàn)子來執(zhí)行列解碼, 且解碼成功。由于所有的錯誤都已經(jīng)從第=列碼字移除,
[0112] ?第S列碼字索引(1113)中的無錯位被設(shè)置為1,用于第S列碼字索引的列校驗(yàn) 子被設(shè)置為全為0。
[0113] 在該特定示例中,不存在相關(guān)的行碼字,因?yàn)閮H第一個屯位的列碼字具有相關(guān)聯(lián) 的行碼字。在不具有相關(guān)聯(lián)的行碼字的位13中出現(xiàn)錯誤,因此不對行校驗(yàn)子緩沖器1100 進(jìn)行更新。
[0114] 列碼字索引4(1114)、列碼字索引5(1115)和列碼字索引6(1116)不被處理,因?yàn)?無錯位被設(shè)置為1。
[0115] 列碼字索引7(1117):關(guān)于第屯列碼字索引(1117)中的列校驗(yàn)子來執(zhí)行列解碼, 且解碼成功。
[0116] ?更新第五行碼字索引(1106)中的行校驗(yàn)子。在該示例中,第屯列碼字與第五行 碼字相關(guān),因此新的列校驗(yàn)子被產(chǎn)生用于第五行碼字索引(1106)并被儲存于其中。
[0117] ?第五行碼字索引(1106)中的被修改位被設(shè)置為1。運(yùn)用來將如下情況指示給行 解碼器,即,列解碼器更新了第五行碼字索引(1106)中的校驗(yàn)子。
[0118] 由于所有的錯誤都已從第屯列碼字移除,
[0119] ?第屯列碼字索引(1117)中的無錯位被設(shè)置為1,用于第屯列碼字的列校驗(yàn)子被 設(shè)置為全為0。
[0120] 在該示例中,被產(chǎn)生用于第五行碼字索引(1106)并被保存到第五行碼字索引 (1106)的被更新的行校驗(yàn)子不全為0,因此第五行碼字索引(1106)中的無錯位被設(shè)置為0。 如上所述,無錯位可W或者為0或者為1,因此無錯位可W被明確地設(shè)置為正確的值,因?yàn)?不能關(guān)于該值做出假設(shè)。 陽121] 列碼字索引8(1118):關(guān)于第八列碼字索引(1118)中的列校驗(yàn)子來執(zhí)行列解碼, 且解碼成功。由于所有的錯誤都已從第八列碼字移除, 陽122] ?第八列碼字