本申請(qǐng)要求于2015年12月8日提交的標(biāo)題為“用于與非閃存的渦輪乘積碼”(“TURBO PRODUCT CODES FOR NAND FLASH”)的第14/962,818號(hào)美國(guó)非臨時(shí)申請(qǐng)的優(yōu)先權(quán),其全部?jī)?nèi)容通過(guò)引用合并于此。
技術(shù)領(lǐng)域
本公開(kāi)的示例性實(shí)施例涉及一種信號(hào)處理和編碼技術(shù)。
背景技術(shù):
磁性儲(chǔ)存技術(shù)最常用于儲(chǔ)存數(shù)據(jù),但對(duì)當(dāng)前電子設(shè)備來(lái)說(shuō),更小的重量和更快的讀取/寫(xiě)入操作需求使得磁性儲(chǔ)存技術(shù)不夠理想。基于NAND的技術(shù)能夠滿足對(duì)高密度數(shù)據(jù)儲(chǔ)存設(shè)備的要求,但這種技術(shù)很昂貴。存在降低基于NAND的技術(shù)的成本同時(shí)維持性能水平的需要。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的方面包括一種對(duì)數(shù)據(jù)塊中的數(shù)據(jù)進(jìn)行編碼的方法。該方法可以包括:從對(duì)數(shù)據(jù)塊中的所有數(shù)據(jù)位的XOR以及對(duì)數(shù)據(jù)塊中除最后一行以外的所有行的所有行奇偶校驗(yàn)位的XOR來(lái)產(chǎn)生第一XOR奇偶校驗(yàn)位;將第一XOR奇偶校驗(yàn)位儲(chǔ)存在最后一行中;以及從對(duì)數(shù)據(jù)塊中的所有列的所有列奇偶校驗(yàn)位的XOR以及對(duì)最后一行的奇偶校驗(yàn)位的XOR來(lái)產(chǎn)生第二XOR奇偶校驗(yàn)位。
本發(fā)明的進(jìn)一步的方面包括一種用于對(duì)數(shù)據(jù)塊中的數(shù)據(jù)進(jìn)行編碼的裝置。該裝置可以包括編碼器,該編碼器被配置為:從對(duì)數(shù)據(jù)塊中的所有數(shù)據(jù)位的XOR以及對(duì)數(shù)據(jù)塊中除最后一行以外的所有行的所有行奇偶校驗(yàn)位的XOR來(lái)產(chǎn)生第一XOR奇偶校驗(yàn)位;將第一XOR奇偶校驗(yàn)位儲(chǔ)存在最后一行中;以及從對(duì)數(shù)據(jù)塊中的所有列的所有列奇偶校驗(yàn)位的XOR以及對(duì)最后一行的奇偶校驗(yàn)位的XOR來(lái)產(chǎn)生第二XOR奇偶校驗(yàn)位。
附圖說(shuō)明
圖1圖示了包括應(yīng)用了本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng)的數(shù)據(jù)處理系統(tǒng)。
圖2是根據(jù)本發(fā)明的實(shí)施例的包括編碼器和解碼器的存儲(chǔ)系統(tǒng)的框圖。
圖3是圖示根據(jù)本發(fā)明的方面的編碼處理的示圖。
圖4是表示根據(jù)本發(fā)明的方面的編碼處理的示圖。
圖5、圖6、圖7、圖8、圖9A、圖9B和圖10是圖示根據(jù)本發(fā)明的方面的受阻錯(cuò)誤圖樣的示圖。
圖11是圖示根據(jù)本發(fā)明的方面的編碼和解碼方案的性能的圖。
具體實(shí)施方式
以下將參照附圖來(lái)更詳細(xì)地描述各種實(shí)施例。然而,本公開(kāi)可以以不同的形式實(shí)施,而不應(yīng)當(dāng)被解釋為局限于所陳述的實(shí)施例。相反地,這些實(shí)施例被提供使得本公開(kāi)將是徹底且完整的,并且將本發(fā)明的范圍充分傳達(dá)給本領(lǐng)域技術(shù)人員。貫穿本公開(kāi),相同的附圖標(biāo)記在本發(fā)明的各種附圖和實(shí)施例中指相同的部分。
本發(fā)明可以以很多方式來(lái)實(shí)施,包括作為:過(guò)程;裝置;系統(tǒng);物的組合;在計(jì)算機(jī)可讀儲(chǔ)存媒介上實(shí)施的計(jì)算機(jī)程序產(chǎn)品;和/或處理器(諸如被配置用來(lái)運(yùn)行儲(chǔ)存在耦接至處理器的存儲(chǔ)器上的指令和/或由耦接至處理器的存儲(chǔ)器提供的指令的處理器)。在此說(shuō)明書(shū)中,這些實(shí)施方式或本發(fā)明可以采用的任何其他形式可以被稱作技術(shù)。一般地,可以在本發(fā)明的范圍之內(nèi)改變所公開(kāi)的過(guò)程中的步驟的次序。除非另外說(shuō)明,否則被描述為被配置用來(lái)執(zhí)行任務(wù)的組件(諸如處理器或存儲(chǔ)器)可以被實(shí)施為暫時(shí)被配置用來(lái)在給定時(shí)間執(zhí)行該任務(wù)的常規(guī)組件或被制造用來(lái)執(zhí)行該任務(wù)的特定組件。如本文中所使用的,術(shù)語(yǔ)“處理器”指被配置用來(lái)處理數(shù)據(jù)(諸如計(jì)算機(jī)程序指令)的一種或更多種器件、電路和/或處理核心。
一種降低基于NAND的技術(shù)的成本的方法包含縮減工藝,但縮減工藝降低性能??梢酝ㄟ^(guò)使用高級(jí)信號(hào)處理和編碼技術(shù)來(lái)補(bǔ)償這種性能損失。博斯-查德胡里-霍昆格母(BCH,Bose-Chaudhuri-Hocquenghem)碼和低密度奇偶校驗(yàn)(LDPC)碼已經(jīng)被用來(lái)保證數(shù)據(jù)完整性。對(duì)于BCH碼,主要缺點(diǎn)在于它們不能用于軟判決解碼,這使得這些編碼不理想。LDPC碼提供良好的硬判決解碼性能和軟判決解碼性能。然而,LDPC解碼器的復(fù)雜度相當(dāng)高,這使得此解決方案對(duì)于硬件實(shí)施而言太昂貴。下面公開(kāi)和描述了高級(jí)編碼技術(shù),其可以利用較低硬件復(fù)雜度來(lái)提供高性能收益。
渦輪乘積碼(TPC)被認(rèn)為是可以以比LDPC碼低得多的硬件復(fù)雜度來(lái)提供顯著收益的高級(jí)編碼技術(shù)。在硬判決解碼中,相比于BCH碼和LDPC碼,TPC給出顯著的性能收益。在軟判決解碼中,TPC實(shí)現(xiàn)接近于LDPC碼的性能收益。
TPC被認(rèn)為是以比LDPC碼低得多的硬件復(fù)雜度來(lái)提供顯著收益的高級(jí)編碼技術(shù)。在硬判決解碼中,相比于BCH碼和LDPC碼,TPC給出顯著的性能收益。在軟判決解碼中,TPC實(shí)現(xiàn)接近于LDPC碼的性能收益。
因此,在使用渦輪乘積碼的系統(tǒng)中,需要高級(jí)編碼技術(shù)來(lái)提供性能和吞吐量(throughput)方面的收益。
在一些實(shí)施例中,本發(fā)明將被應(yīng)用至圖1中所示的數(shù)據(jù)處理系統(tǒng)。
圖1圖示了包括應(yīng)用了本發(fā)明的實(shí)施例的存儲(chǔ)系統(tǒng)的數(shù)據(jù)處理系統(tǒng)100。圖1中所示的數(shù)據(jù)處理系統(tǒng)100僅用于說(shuō)明。在不脫離本公開(kāi)的范圍的情況下,可以使用數(shù)據(jù)處理系統(tǒng)100的其他結(jié)構(gòu)。雖然圖1圖示了數(shù)據(jù)處理系統(tǒng)100的一個(gè)示例,但可以對(duì)圖1作出各種改變。例如,在任何合適的布置中,數(shù)據(jù)處理系統(tǒng)100可以包括任何元件,或者可以不包括任何元件。
參見(jiàn)圖1,數(shù)據(jù)處理系統(tǒng)100可以包括主機(jī)102和存儲(chǔ)系統(tǒng)110。
主機(jī)102可以包括例如:諸如移動(dòng)電話、MP3播放器和膝上型電腦的便攜式電子設(shè)備或諸如臺(tái)式電腦、游戲機(jī)、TV和投影儀的電子設(shè)備。
存儲(chǔ)系統(tǒng)110可以響應(yīng)于來(lái)自主機(jī)102的請(qǐng)求來(lái)操作,具體地,儲(chǔ)存要由主機(jī)102訪問(wèn)的數(shù)據(jù)。換言之,存儲(chǔ)系統(tǒng)110可以用作主機(jī)102的主存儲(chǔ)系統(tǒng)或輔助存儲(chǔ)系統(tǒng)。存儲(chǔ)系統(tǒng)110可以根據(jù)要與主機(jī)102電耦接的主機(jī)接口的協(xié)議來(lái)用各種類型的儲(chǔ)存設(shè)備中的任意一種來(lái)實(shí)施。存儲(chǔ)系統(tǒng)110可以用各種類型的儲(chǔ)存設(shè)備(諸如固態(tài)驅(qū)動(dòng)器(SSD)、多媒體卡(MMC)、嵌入式MMC(eMMC)、縮減尺寸MMC(RS-MMC)和微型MMC、安全數(shù)字(SD)卡、迷你SD和微型SD、通用串行總線(USB)儲(chǔ)存設(shè)備、通用快閃儲(chǔ)存(UFS)設(shè)備、緊湊式閃存(CF)卡、智能媒體(SM)卡和記憶棒等)中的任意一種來(lái)實(shí)施。
用于存儲(chǔ)系統(tǒng)110的儲(chǔ)存設(shè)備可以用易失性存儲(chǔ)器件(諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))或非易失性存儲(chǔ)器件(諸如只讀存儲(chǔ)器(ROM)、掩膜ROM(MROM)、可編程ROM(PROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、鐵電隨機(jī)存取存儲(chǔ)器(FRAM)、相變RAM(PRAM)、磁阻RAM(MRAM)和電阻式RAM(RRAM))來(lái)實(shí)施。
存儲(chǔ)系統(tǒng)110可以包括存儲(chǔ)器件150和控制器130,存儲(chǔ)器件150儲(chǔ)存要由主機(jī)102訪問(wèn)的數(shù)據(jù),控制器130控制將數(shù)據(jù)儲(chǔ)存在存儲(chǔ)器件150中。
控制器130和存儲(chǔ)器件150可以被集成至一個(gè)半導(dǎo)體器件中。例如,控制器130和存儲(chǔ)器件150可以被集成至一個(gè)半導(dǎo)體器件中,并配置固態(tài)驅(qū)動(dòng)器(SSD)。當(dāng)存儲(chǔ)系統(tǒng)110用作SSD時(shí),可以顯著增加與存儲(chǔ)系統(tǒng)110電耦接的主機(jī)102的操作速度。
控制器130和存儲(chǔ)器件150可以被集成至一個(gè)半導(dǎo)體器件中,并配置存儲(chǔ)卡??刂破?30和存儲(chǔ)器件150可以被集成至一個(gè)半導(dǎo)體器件中,并配置諸如個(gè)人計(jì)算機(jī)存儲(chǔ)卡國(guó)際協(xié)會(huì)(PCMCIA)卡、緊湊式閃存(CF)卡、智能媒體(SM)卡(SMC)、記憶棒、多媒體卡(MMC)、RS-MMC和微型MMC、安全數(shù)字(SD)卡、迷你SD、微型SD和SDHC以及通用快閃儲(chǔ)存(UFS)器件的存儲(chǔ)卡。
又例如,存儲(chǔ)系統(tǒng)110可以配置計(jì)算機(jī)、超移動(dòng)PC(UMPC)、工作站、上網(wǎng)本、個(gè)人數(shù)字助理(PDA)、便攜式計(jì)算機(jī)、網(wǎng)絡(luò)平板、平板電腦、無(wú)線電話、移動(dòng)電話、智能電話、電子書(shū)、便攜式多媒體播放器(PMP)、便攜式游戲機(jī)、導(dǎo)航儀、黑匣子、數(shù)字相機(jī)、數(shù)字多媒體廣播(DMB)播放器、三維(3D)電視、智能電視、數(shù)字錄音機(jī)、數(shù)字音頻播放器、數(shù)字圖片記錄器、數(shù)字圖片播放器、數(shù)字錄像機(jī)、數(shù)字視頻播放器、配置數(shù)據(jù)中心的儲(chǔ)存器、能夠在無(wú)線環(huán)境下收發(fā)信息的設(shè)備、配置家庭網(wǎng)絡(luò)的各種電子設(shè)備中的一種、配置計(jì)算機(jī)網(wǎng)絡(luò)的各種電子設(shè)備中的一種、配置遠(yuǎn)程信息處理的各種電子設(shè)備中的一種、RFID設(shè)備或者配置計(jì)算系統(tǒng)的各種組成元件中的一種。
存儲(chǔ)系統(tǒng)110的存儲(chǔ)器件150可以在電源被中斷時(shí)保持儲(chǔ)存的數(shù)據(jù),具體地,在寫(xiě)入操作期間儲(chǔ)存從主機(jī)102提供的數(shù)據(jù),以及在讀取操作期間將儲(chǔ)存的數(shù)據(jù)提供給主機(jī)102。存儲(chǔ)器件150可以包括多個(gè)存儲(chǔ)塊152、154和156。存儲(chǔ)塊152、154和156中的每個(gè)可以包括多個(gè)頁(yè)。頁(yè)中的每個(gè)可以包括電耦接了多個(gè)字線(WL)的多個(gè)存儲(chǔ)單元。存儲(chǔ)器件150可以為非易失性存儲(chǔ)器件,例如,快閃存儲(chǔ)器??扉W存儲(chǔ)器可以具有三維(3D)層疊結(jié)構(gòu)。
存儲(chǔ)系統(tǒng)110的控制器130可以響應(yīng)于來(lái)自主機(jī)102的請(qǐng)求來(lái)控制存儲(chǔ)器件150??刂破?30可以將從存儲(chǔ)器件150讀取的數(shù)據(jù)提供給主機(jī)102,以及將從主機(jī)102提供的數(shù)據(jù)儲(chǔ)存在存儲(chǔ)器件150中。為此,控制器130可以控制存儲(chǔ)器件150的總體操作,諸如讀取操作、寫(xiě)入操作、編程操作和擦除操作。
詳細(xì)地,控制器130可以包括主機(jī)接口單元132、處理器134、錯(cuò)誤校正碼(ECC)單元138、電源管理單元(PMU)140、存儲(chǔ)器控制器(MC)142和存儲(chǔ)器144。
主機(jī)接口單元132可以處理從主機(jī)102提供的命令和數(shù)據(jù),且可以通過(guò)下面的各種接口協(xié)議中的至少一種來(lái)與主機(jī)102通信:諸如通用串行總線(USB)、多媒體卡(MMC)、外圍組件互連-快速(PCI-E)、串行連接SCSI(SAS)、串行高級(jí)技術(shù)附件(SATA)、并行高級(jí)技術(shù)附件(PATA)、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、增強(qiáng)型小盤(pán)接口(ESDI)和集成驅(qū)動(dòng)電路(IDE)。
ECC單元138可以在讀取操作期間檢測(cè)并校正從存儲(chǔ)器件150讀取的數(shù)據(jù)中的錯(cuò) 誤。當(dāng)錯(cuò)誤位的數(shù)量大于或等于可校正錯(cuò)誤位的閾值數(shù)量時(shí),ECC單元138不能校正錯(cuò)誤位,且可以輸出指示校正錯(cuò)誤位失敗的錯(cuò)誤校正失敗信號(hào)。
ECC單元138可以基于下面的編碼調(diào)制來(lái)執(zhí)行錯(cuò)誤校正操作:諸如低密度奇偶校驗(yàn)(LDPC)碼、博斯-查德胡里-霍昆格母(BCH,Bose-Chaudhuri-Hocquenghem)碼、渦輪碼、渦輪乘積碼(TPC)、里德-索羅門(RS,Reed-Solomon)碼、卷積碼、遞歸系統(tǒng)碼(RSC)、格碼調(diào)制(TCM)和塊碼調(diào)制(BCM)等。ECC單元可以包括用于錯(cuò)誤校正操作的所有電路、系統(tǒng)或器件。
PMU 140可以提供并管理用于控制器130的電源,即,用于控制器130中包括的組成元件的電源。
MC 142可以用作控制器130與存儲(chǔ)器件150之間的存儲(chǔ)器接口以允許控制器130響應(yīng)于來(lái)自主機(jī)102的請(qǐng)求來(lái)控制存儲(chǔ)器件150。MC 142可以產(chǎn)生針對(duì)存儲(chǔ)器件150的控制信號(hào),并在處理器134的控制下處理數(shù)據(jù)。當(dāng)存儲(chǔ)器件150是諸如NAND快閃存儲(chǔ)器的快閃存儲(chǔ)器時(shí),MC 142可以產(chǎn)生針對(duì)NAND快閃存儲(chǔ)器150的控制信號(hào),并在處理器134的控制下處理數(shù)據(jù)。
存儲(chǔ)器144可以用作存儲(chǔ)系統(tǒng)110和控制器130的工作存儲(chǔ)器,并儲(chǔ)存用于驅(qū)動(dòng)存儲(chǔ)系統(tǒng)110和控制器130的數(shù)據(jù)??刂破?30可以響應(yīng)于來(lái)自主機(jī)102的請(qǐng)求來(lái)控制存儲(chǔ)器件150。例如,控制器130可以將從存儲(chǔ)器件150讀取的數(shù)據(jù)提供給主機(jī)102,以及將從主機(jī)102提供的數(shù)據(jù)儲(chǔ)存在存儲(chǔ)器件150中。當(dāng)控制器130控制存儲(chǔ)器件150的操作時(shí),存儲(chǔ)器144可以儲(chǔ)存由控制器130和存儲(chǔ)器件150使用的數(shù)據(jù)以用于諸如讀取操作、寫(xiě)入操作、編程操作和擦除操作的操作。
存儲(chǔ)器144可以用易失性存儲(chǔ)器來(lái)實(shí)施。存儲(chǔ)器144可以用靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)或動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)來(lái)實(shí)施。如上所述,存儲(chǔ)器144可以儲(chǔ)存由主機(jī)102和存儲(chǔ)器件150使用的數(shù)據(jù)以用于讀取操作和寫(xiě)入操作。為了儲(chǔ)存該數(shù)據(jù),存儲(chǔ)器144可以包括程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、寫(xiě)入緩沖器、讀取緩沖器和映射緩沖器等。
處理器134可以控制存儲(chǔ)系統(tǒng)110的常規(guī)操作,以及響應(yīng)于來(lái)自主機(jī)102的寫(xiě)入請(qǐng)求或讀取請(qǐng)求來(lái)控制針對(duì)存儲(chǔ)器件150的寫(xiě)入操作或讀取操作。處理器134可以驅(qū)動(dòng)被稱作閃存轉(zhuǎn)換層(FTL)的固件來(lái)控制存儲(chǔ)系統(tǒng)110的常規(guī)操作。處理器134可以用微處理器或中央處理單元(CPU)來(lái)實(shí)施。
管理單元(未示出)可以被包括在處理器134中,且可以執(zhí)行對(duì)存儲(chǔ)器件150的壞 塊管理。管理單元可以找出存儲(chǔ)器件150中包括的壞存儲(chǔ)塊(其不滿足進(jìn)一步使用的條件),并對(duì)該壞存儲(chǔ)塊執(zhí)行壞塊管理。當(dāng)存儲(chǔ)器件150是快閃存儲(chǔ)器(例如,NAND快閃存儲(chǔ)器)時(shí),在寫(xiě)入操作期間(例如,在編程操作期間)可能因NAND邏輯功能的特性而出現(xiàn)編程失敗。在壞塊管理期間,編程失敗的存儲(chǔ)塊或壞存儲(chǔ)塊中的數(shù)據(jù)可以被編程至新的存儲(chǔ)塊中。此外,因編程失敗而導(dǎo)致的壞塊嚴(yán)重降低具有3D層疊結(jié)構(gòu)的存儲(chǔ)器件150的利用效率和存儲(chǔ)系統(tǒng)110的可靠性,從而需要可靠的壞塊管理。
圖2是根據(jù)本發(fā)明的實(shí)施例的包括編碼器和解碼器的存儲(chǔ)系統(tǒng)200的框圖。例如,存儲(chǔ)系統(tǒng)200對(duì)應(yīng)于圖1中所示的存儲(chǔ)系統(tǒng)110。為了清楚,此處未示出圖1中的與本發(fā)明的實(shí)施例直接相關(guān)的組件。
參見(jiàn)圖2,存儲(chǔ)系統(tǒng)200包括儲(chǔ)存器210、寫(xiě)入控制器220和讀取控制器230。例如,儲(chǔ)存器210對(duì)應(yīng)于圖1中所示的存儲(chǔ)器件150,以及寫(xiě)入控制器220和讀取控制器230對(duì)應(yīng)于圖1中所示的ECC單元138。
儲(chǔ)存器210可以包括諸如NAND閃存的固態(tài)儲(chǔ)存器。寫(xiě)入控制器220從圖1中的主機(jī)102接收數(shù)據(jù),并處理儲(chǔ)存器210上的數(shù)據(jù)。讀取控制器230讀取儲(chǔ)存器210上的數(shù)據(jù),并處理該數(shù)據(jù)。分別地,寫(xiě)入控制器220包括TPC編碼器222,以及讀取控制器230包括TPC解碼器232,作為用于TPC方案的組件。
如此處所述,TPC碼包括Nr個(gè)行碼和Nc個(gè)列碼。它們?nèi)慷际蔷哂幸韵聟?shù)的BCH碼:
行碼:(nr,kr,Tr,mr);
列碼:(nc,kc,Tc,mc);
XOR碼:(nx,kx,Tx,mx);
其中,n表示編碼的長(zhǎng)度,k表示編碼的維度,T表示編碼的錯(cuò)誤校正容量,以及m表示編碼的有限域大小(finite field-size)。被組合用來(lái)產(chǎn)生列奇偶校驗(yàn)位的列數(shù)通過(guò)C#來(lái)指定,其中,C#是被組合的列數(shù)。
圖3是圖示根據(jù)本發(fā)明的一個(gè)實(shí)施例的TPC編碼方案的流程圖。
圖4是表示矩形數(shù)據(jù)塊的示例的示圖。
下面參照?qǐng)D3和圖4來(lái)描述編碼方案。
數(shù)據(jù)300可以布置在矩形塊中(見(jiàn)圖4)。數(shù)據(jù)300包括行數(shù)據(jù)和列數(shù)據(jù)??梢杂梅至看a(constituent code)來(lái)對(duì)第一行(行1至行R-1)編碼。在一個(gè)實(shí)施例中,可以使用BCH作為分量碼來(lái)對(duì)第一行編碼,盡管本領(lǐng)域技術(shù)人員將明白,本發(fā)明不局限于對(duì)分量碼的這種選擇。
產(chǎn)生行1至行R-1的行奇偶校驗(yàn)位302,以及對(duì)所有的數(shù)據(jù)位和所有的行奇偶校驗(yàn)位(即,就此而言,所有的行奇偶校驗(yàn)位包括行1至行(R-1)的奇偶校驗(yàn)位)進(jìn)行異或(XOR)。XOR位的數(shù)量通過(guò)C#來(lái)給出。由于行奇偶校驗(yàn)位將包含Tr*mr,且Tr*mr將不是C#的整數(shù)倍,因此可以對(duì)行奇偶校驗(yàn)位進(jìn)行零填充(zero pad)以使得它們是C#的整數(shù)倍。例如,如果行奇偶校驗(yàn)位長(zhǎng)度是42且C#給定為24,則可以對(duì)6個(gè)位進(jìn)行零填充以使得行奇偶校驗(yàn)位是48位長(zhǎng),且可以從行奇偶校驗(yàn)位構(gòu)建長(zhǎng)度為24的兩個(gè)塊。
對(duì)數(shù)據(jù)300和行奇偶校驗(yàn)位302進(jìn)行XOR,且該XOR將被包括在數(shù)據(jù)的最后一行406中??梢詫⒋薠OR認(rèn)作XOR奇偶校驗(yàn)位1(306,450)。XOR奇偶校驗(yàn)位1(306,450)將具有長(zhǎng)度C#。
XOR奇偶校驗(yàn)位1(306,450)被包括在數(shù)據(jù)的最后一行406(即,行R)中,以及產(chǎn)生最后一行奇偶校驗(yàn)位(308,460)。值得注意的是,包括XOR奇偶校驗(yàn)位1(306,450)的最后一行奇偶校驗(yàn)位(308,460)被產(chǎn)生。
通過(guò)對(duì)列進(jìn)行組合來(lái)產(chǎn)生列奇偶校驗(yàn)位304。對(duì)于給定的列數(shù)C(例如,C#),列奇偶校驗(yàn)位可以包括列奇偶校驗(yàn)位1 440、列奇偶校驗(yàn)位2 442、列奇偶校驗(yàn)位(C-1)444和列奇偶校驗(yàn)位C 446。在此方案的示例中,在包括XOR奇偶校驗(yàn)位1(450)的情況下產(chǎn)生列奇偶校驗(yàn)位(C-1)444,以及在包括行奇偶校驗(yàn)位中的每個(gè)的情況下產(chǎn)生列奇偶校驗(yàn)位C 446(其包括行R奇偶校驗(yàn)位460,且如上所述,行R奇偶校驗(yàn)位在包括XOR奇偶校驗(yàn)位1 450的情況下產(chǎn)生)。假設(shè)對(duì)于行奇偶校驗(yàn)位和列奇偶校驗(yàn)位,校正容量(T)和伽羅瓦域(Galois field)(m)相同。
可以通過(guò)對(duì)所有的列奇偶校驗(yàn)位和最后一行奇偶校驗(yàn)位進(jìn)行XOR來(lái)產(chǎn)生XOR奇偶校驗(yàn)位2(310,470)。XOR奇偶校驗(yàn)位2(310,470)的長(zhǎng)度被給定為Tr*mr(=Tc*mc)。為了簡(jiǎn)化,假設(shè)Tr*mr=Tc*mc。如果Tr*mr≠Tc*mc,則可以使用零填充來(lái)產(chǎn)生XOR奇偶校驗(yàn)位2(310,470)。
可以將另一分量碼應(yīng)用至XOR奇偶校驗(yàn)位2(310,470)(例如,對(duì)XOR奇偶校驗(yàn)位2(312,480)的奇偶校驗(yàn)位),XOR奇偶校驗(yàn)位2(310,470)的編碼參數(shù)被給定為(nx,kx,Tx,mx)??傮w而言,用于XOR奇偶校驗(yàn)位2的此BCH碼的伽羅瓦域相當(dāng)小,因此該編碼的編碼/解碼的復(fù)雜度最小。應(yīng)當(dāng)注意的是,對(duì)XOR奇偶校驗(yàn)位2的此奇偶校 驗(yàn)位僅被寫(xiě)入至NAND。在這種方法中,可以通過(guò)不寫(xiě)入XOR奇偶校驗(yàn)位2來(lái)節(jié)約奇偶校驗(yàn)位。此方案的奇偶校驗(yàn)位開(kāi)銷(overhead)被給定為:
所提出的方案的總的奇偶校驗(yàn)位=Tr*mr+Tc*mc+C#+Tx*mx
相比于先前實(shí)施的方案,除行奇偶校驗(yàn)位和列奇偶校驗(yàn)位以外的XOR奇偶校驗(yàn)位開(kāi)銷(C#+Tx*mx)相當(dāng)小。因此,此方案相比于其他方案具有顯著的性能收益。
參見(jiàn)圖5至圖10,描述了針對(duì)以上所公開(kāi)的編碼方案的各種解碼處理。解碼程序類似于規(guī)則TPC解碼,在規(guī)則TPC解碼中,列解碼以迭代循環(huán)接著行解碼,直到數(shù)據(jù)被成功解碼或者迭代次數(shù)超過(guò)最大迭代次數(shù)為止。存在特定的錯(cuò)誤圖樣,即使該錯(cuò)誤圖樣的權(quán)重(weight)小,該錯(cuò)誤圖樣也將在解碼中受阻。
在圖5至圖8中,示出了(1,1)受阻錯(cuò)誤圖樣(stuck error pattern)。(1,1)受阻錯(cuò)誤圖樣是在其中正好存在一行和一列故障的受阻錯(cuò)誤圖樣。在圖9A和圖9B中,示出了(2,2)受阻錯(cuò)誤圖樣,其中,存在兩行和兩列故障。在圖10中,示出了(0,2)受阻錯(cuò)誤圖樣。
在圖5中,示出了數(shù)據(jù)中的可能在解碼中受阻的錯(cuò)誤圖樣500。在此示例中,假設(shè)行編碼和列編碼的錯(cuò)誤校正容量等于2。盡管錯(cuò)誤圖樣500的權(quán)重是4,但其將在解碼中受阻??梢允褂肵OR奇偶校驗(yàn)位1 450來(lái)校正錯(cuò)誤圖樣500。因?yàn)楣收闲泻凸收狭惺且阎?,所以?列相交部分是已知的。首先,對(duì)除故障的行/列相交部分之外的所有數(shù)據(jù)、行奇偶校驗(yàn)位和XOR奇偶校驗(yàn)位1進(jìn)行XOR。此產(chǎn)生的XOR奇偶校驗(yàn)位可以取代故障的行/列相交部,這將校正行/列相交部分中的所有錯(cuò)誤位。
類似地,在圖6中,示出了受阻錯(cuò)誤圖樣。受阻錯(cuò)誤圖樣600存在于行奇偶校驗(yàn)位部分中。使用以上參照?qǐng)D5所描述的解碼處理,也可以校正受阻錯(cuò)誤圖樣600。
在圖7中,示出了存在于第R行奇偶校驗(yàn)位中的受阻錯(cuò)誤圖樣700。為了校正此圖樣700,可以在解碼端處產(chǎn)生XOR奇偶校驗(yàn)位2,通過(guò)對(duì)第R行奇偶校驗(yàn)位和所有的列奇偶校驗(yàn)位進(jìn)行XOR來(lái)獲得XOR奇偶校驗(yàn)位2。在此XOR奇偶校驗(yàn)位2上運(yùn)行BCH解碼,該BCH解碼將校正所有的錯(cuò)誤,因?yàn)閷?duì)XOR奇偶校驗(yàn)位2的BCH具有大的校正容量。一旦獲得了正確的XOR奇偶校驗(yàn)位2,此奇偶校驗(yàn)位就可以用來(lái)校正受阻圖樣700。
在圖8中,示出了在列奇偶校驗(yàn)部分中的受阻錯(cuò)誤圖樣800,該受阻圖樣800可以通過(guò)以上參照?qǐng)D7所描述的處理來(lái)校正。這樣,在解碼程序中存在的所有(1,1)受阻錯(cuò)誤圖樣都可以被解碼。
接下來(lái)參見(jiàn)圖9A,示出了(2,2)受阻錯(cuò)誤圖樣。即,數(shù)據(jù)包括錯(cuò)誤圖樣900和錯(cuò)誤圖樣902。XOR奇偶校驗(yàn)位1和XOR奇偶校驗(yàn)位2不能用來(lái)校正這種受阻錯(cuò)誤圖樣900、902。在圖9A中,為了簡(jiǎn)單而示出了C#等于6的示例。目標(biāo)是通過(guò)識(shí)別最可能的錯(cuò)誤位置來(lái)校正這種受阻錯(cuò)誤圖樣900、902。一旦錯(cuò)誤位置已知,就可以使用簡(jiǎn)單的翻轉(zhuǎn)算法來(lái)校正這種受阻錯(cuò)誤圖樣900、902。在圖9A中,受阻錯(cuò)誤圖樣具有出現(xiàn)在行和列相交部分中的不同位置處的6個(gè)錯(cuò)誤。
由于正確的XOR奇偶校驗(yàn)位1已知,因此可以找到對(duì)所有數(shù)據(jù)和行奇偶校驗(yàn)位(行1至行(R-1))的XOR,并將其與XOR奇偶校驗(yàn)位1進(jìn)行比較。在至多6個(gè)位置處XOR奇偶校驗(yàn)位1與這些計(jì)算出的XOR奇偶校驗(yàn)位不同?,F(xiàn)在,錯(cuò)誤的位置已知,然而錯(cuò)誤在行/列相交部分中的準(zhǔn)確位置未知。
如圖9B中所示,在(2,2)受阻錯(cuò)誤圖樣中,存在可能具有錯(cuò)誤的4個(gè)行/列相交部分(910,912,914,916)??梢允褂梦环D(zhuǎn)處理(例如,Chase解碼),在位翻轉(zhuǎn)處理中,在通過(guò)XOR奇偶校驗(yàn)位1確定的錯(cuò)誤位位置處的位被翻轉(zhuǎn)。在Chase解碼中,將嘗試所有的2^翻轉(zhuǎn)位(flip_bits),其中翻轉(zhuǎn)位(flip_bits)是從儲(chǔ)存的xor或數(shù)據(jù)計(jì)算的xor檢測(cè)到的翻轉(zhuǎn)的位的數(shù)量。
在本發(fā)明的另一示例中,將從翻轉(zhuǎn)位選擇一個(gè)位(例如,nchoosek(翻轉(zhuǎn)位,1)),將在所有故障的n*m個(gè)受阻錯(cuò)誤相交部分處嘗試這種位翻轉(zhuǎn),然后嘗試解碼。接下來(lái),將對(duì)n*m個(gè)故障的受阻錯(cuò)誤圖樣嘗試nchoosek(翻轉(zhuǎn)位,2),且將對(duì)所有的n*m個(gè)故障的受阻錯(cuò)誤圖樣重復(fù)此處理(例如,nchoosek(翻轉(zhuǎn)位,翻轉(zhuǎn)位))。必須在故障的相交部分內(nèi)部作出所有的校正,以避免在錯(cuò)誤相交部分外部引入更多的錯(cuò)誤。
在第一次運(yùn)行中,可以對(duì)所有的4個(gè)行/列故障相交部分(910,912,914,916)的6個(gè)錯(cuò)誤位置位中的單個(gè)位進(jìn)行翻轉(zhuǎn)。在一個(gè)位翻轉(zhuǎn)之后,可以對(duì)故障的行/列解碼使用規(guī)則解碼。在解碼時(shí),保證在BCH解碼期間解碼的位必須位于行/列故障相交部分中。按照這種方式,不會(huì)在TPC結(jié)構(gòu)中引入誤校正。
在圖9A中所示的錯(cuò)誤圖樣中,第一行/列相交部分中的一個(gè)位翻轉(zhuǎn)是不夠的。然后利用一個(gè)位翻轉(zhuǎn)來(lái)處理第二行/列相交部分,這將對(duì)該行編碼進(jìn)行解碼并滿足列編碼。一旦一個(gè)行/列相交部分中的錯(cuò)誤被校正,受阻錯(cuò)誤圖樣就變成(1,1)錯(cuò)誤圖樣,該(1,1)錯(cuò)誤圖樣可以通過(guò)使用XOR奇偶校驗(yàn)位1來(lái)容易地校正。
如果通過(guò)在所有故障的行/列相交部分中嘗試所有的單個(gè)位翻轉(zhuǎn)而圖樣未被解碼,則此圖樣通常通過(guò)單個(gè)位翻轉(zhuǎn)而得到解碼??梢詫?duì)故障的行/列相交部分嘗試兩個(gè)位或更多個(gè)位翻轉(zhuǎn)。
在圖9A和圖9B中,C#的值等于6。然而,在規(guī)則TPC碼設(shè)計(jì)中,C#的值更大。在那些類型的情況中,相比于隨機(jī)位翻轉(zhuǎn)處理,來(lái)自所公開(kāi)的位翻轉(zhuǎn)算法的優(yōu)勢(shì)將是實(shí)質(zhì)性的。與隨機(jī)位翻轉(zhuǎn)不同的是,通過(guò)XOR奇偶校驗(yàn)位1和XOR奇偶校驗(yàn)位2的幫助,最可能的錯(cuò)誤位置是已知的,這顯著降低了整合所提出的方案的復(fù)雜度。以上所公開(kāi)的方案可以容易地推廣為(n,n)受阻錯(cuò)誤圖樣,在(n,n)受阻錯(cuò)誤圖樣中,n行和n列有故障。然而,如果n的值大,則復(fù)雜度將增大。因此,在硬件復(fù)雜度之內(nèi)的圖樣使用這種提出的方案來(lái)校正。
接下來(lái)參見(jiàn)圖10,示出了(0,2)的備選錯(cuò)誤圖樣。為了簡(jiǎn)化解碼,也可以進(jìn)行對(duì)(0,k)受阻錯(cuò)誤圖樣解碼的備選方法。在(0,k)受阻錯(cuò)誤圖樣(例如,1000,1002)中,所有的行是正確的,而k個(gè)列是故障的。這種圖樣可以使用正確的數(shù)據(jù)來(lái)校正。數(shù)據(jù)的正確性通過(guò)XOR奇偶校驗(yàn)位1和行奇偶校驗(yàn)位來(lái)驗(yàn)證??梢酝ㄟ^(guò)數(shù)據(jù)來(lái)產(chǎn)生(k-1)個(gè)列奇偶校驗(yàn)位,以及可以通過(guò)XOR奇偶校驗(yàn)位2來(lái)產(chǎn)生最后故障的列奇偶校驗(yàn)位。被校正的第k列奇偶校驗(yàn)位可以從第k列數(shù)據(jù)來(lái)驗(yàn)證。如果第k列數(shù)據(jù)的奇偶校驗(yàn)位與被校正的第k奇偶校驗(yàn)位匹配,則宣布TPC被成功解碼。XOR奇偶校驗(yàn)位2的校正容量不是很大,因此可以應(yīng)用該程序來(lái)對(duì)(0,k)受阻錯(cuò)誤圖樣解碼。圖10中所示的受阻錯(cuò)誤圖樣1000、1002可以通過(guò)上述方案來(lái)校正。一般而言,(0,k)出現(xiàn)的可能性相當(dāng)?shù)?,所以在解碼中很少使用所提出的方案。
雖然公開(kāi)了對(duì)(n,n)和(0,k)的錯(cuò)誤碼圖樣的解碼,但本文中所描述的處理也可以用來(lái)對(duì)(n,m)、(m,n)等的錯(cuò)誤碼圖樣進(jìn)行解碼。
作為進(jìn)一步描述,對(duì)(n,m)故障圖樣(其中,n行和m列有故障)的解碼可以執(zhí)行如下。首先,計(jì)算對(duì)所有數(shù)據(jù)和行奇偶校驗(yàn)位的XOR,并將其與儲(chǔ)存的奇偶校驗(yàn)位(例如,XOR_data)進(jìn)行比較。一旦接收到XOR_data,就將其與XOR_stored進(jìn)行比較以找出錯(cuò)誤位位置?,F(xiàn)在錯(cuò)誤位位置是已知的,但是需要確定這些錯(cuò)誤位于n*m個(gè)故障相交部分中的何處。這樣,采用從上述比較中找到的錯(cuò)誤位,并在所有的n*m個(gè)故障相交部分中的特定位置處的這些位被翻轉(zhuǎn)。如果分量碼字得到解碼,且所有的校正都在故障的分量碼字之內(nèi)做出,則校正被應(yīng)用。如果任意一行碼字通過(guò)嘗試校正對(duì)應(yīng)的列碼字經(jīng)由對(duì)位進(jìn)行翻轉(zhuǎn)而被校正,則可以執(zhí)行進(jìn)一步的檢查,以及在故障的相交部分中做出所有的校正??梢愿鶕?jù)來(lái)自XOR_data與XOR_stored的不匹配的位數(shù)量而同時(shí)對(duì)1個(gè)錯(cuò)誤位、2個(gè)錯(cuò)誤位、3個(gè)錯(cuò)誤位等進(jìn)行這些位翻轉(zhuǎn)。
此外,對(duì)于(0,k)錯(cuò)誤圖樣,解碼處理可以執(zhí)行如下。如果所有的行合格,且XOR_stored與對(duì)數(shù)據(jù)和行奇偶校驗(yàn)位計(jì)算出的XOR匹配,則k個(gè)故障的列碼字被編碼以得到對(duì)應(yīng)的k個(gè)列奇偶校驗(yàn)位。在這種情況下,所有的錯(cuò)誤位于奇偶校驗(yàn)位中,以及 可以通過(guò)XOR奇偶校驗(yàn)位2來(lái)確定以此方式產(chǎn)生的奇偶校驗(yàn)位的正確性。
測(cè)試以上所公開(kāi)的方案的性能,并與2K BCH碼進(jìn)行比較?;谝陨纤_(kāi)的方案構(gòu)建的TPC碼的值被測(cè)試為:
數(shù)據(jù)長(zhǎng)度=32864。
允許的奇偶校驗(yàn)位=308字節(jié)。
行編碼:(nr,kr,Tr,mr)=(1310,1266,4,11)。
列編碼:(nc,kc,Tc,mc)=(1318,1274,4,11)。
Nr=26,Nc=27,以及C#=49。
XOR奇偶校驗(yàn)位2上的編碼:(nx,kx,Tx,mx)=(121,44,11,7)。
該性能在圖11中示出。圖11中的圖1100示出2k BCH的性能1102和如上所述的方案的性能1104。編碼設(shè)計(jì)中的發(fā)現(xiàn):具有伽羅瓦域(m)和等于(11,4)的校正容量(T)的編碼通過(guò)顯著縮短的位而已經(jīng)合適。更大的校正容量降低誤校正容量,以及縮短的位可以用于誤校正檢測(cè)。如果在BCH解碼期間在縮短的位中存在翻轉(zhuǎn)的位,則知道BCH解碼器已經(jīng)誤校正了碼字,而在TPC解碼中可以避免這種誤校正。
雖然已經(jīng)參照本發(fā)明的示例性實(shí)施例而特別地示出和描述了本發(fā)明,但本領(lǐng)域技術(shù)人員將理解的是,在不脫離由所附權(quán)利要求書(shū)中所限定的本發(fā)明的精神和范圍的情況下,在其中可以作出形式和細(xì)節(jié)上的各種改變。因此,前述內(nèi)容僅作為示例,而非意在進(jìn)行限制。例如,本文中所示出并描述的元件的任何數(shù)目?jī)H作為示例。本發(fā)明僅由所附權(quán)利要求及其等價(jià)物來(lái)限定。