本發(fā)明涉及一種閃存錯誤控制電路及其方法,尤其是涉及一種應(yīng)用多核心做解碼平行化計(jì)算與應(yīng)用數(shù)據(jù)再利用概念的閃存錯誤控制電路及其方法。
背景技術(shù):
閃存隨著覆寫次數(shù)的增加,位錯誤率會上升,因此需要有錯誤更正解碼的技術(shù)來更正數(shù)據(jù)的錯誤。錯誤更正的技術(shù)一般分為硬式解碼(hard-decisiondecode)與軟式解碼(soft-decisiondecode)。硬式解碼單純利用數(shù)據(jù)所對應(yīng)的錯誤更正碼來進(jìn)行錯誤檢查與更正。而軟式解碼更利用了數(shù)據(jù)的錯誤率信息來對數(shù)據(jù)內(nèi)容進(jìn)行適應(yīng)性修正,再以錯誤更正碼來進(jìn)行錯誤檢查與更正。
硬式解碼的好處是快速、算法簡單,然而硬式解碼的錯誤更正能力極為有限,以1024字節(jié)的數(shù)據(jù)搭配80字節(jié)檢查碼的bch碼為例,僅能提供最多45位的錯誤更正能力。相對地,軟式解碼的好處是具有相對于硬式解碼而言更高的錯誤更正能力,然而軟式解碼的算法復(fù)雜,且所花費(fèi)的時間遠(yuǎn)長于硬式解碼。
因此,如何提供一個兼顧效率與錯誤更正能力的錯誤更正技術(shù),是個有待克服的課題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的不足提供一種閃存數(shù)據(jù)的錯誤修正方法與實(shí)作此方法的閃存錯誤控制電路。
本發(fā)明所要解決的技術(shù)問題是通過如下技術(shù)方案實(shí)現(xiàn)的:
依據(jù)本發(fā)明一實(shí)施例的閃存數(shù)據(jù)的錯誤修正方法,包括:讀取一儲存數(shù)據(jù)與對應(yīng)該儲存數(shù)據(jù)的一檢查碼。以儲存數(shù)據(jù)與檢查碼決定第一待解碼信息。以一第一算法對第一待解碼信息進(jìn)行錯誤修正,以產(chǎn)生一輸出數(shù)據(jù)。判斷以該第一算法執(zhí)行的錯誤修正是否成功。當(dāng)該第一算法執(zhí)行的錯誤修正成功,輸出該已解碼數(shù)據(jù)。當(dāng)錯誤修正不成功,依據(jù)一錯誤率信息,以一第二算法修正該第一待解碼信息以得到一第二待解碼信息,并對該第二待解碼信息進(jìn)行錯誤修正,以產(chǎn)生該輸出數(shù)據(jù)。
依據(jù)本發(fā)明一實(shí)施例的閃存控制電路,第一算法與第二算法所使用的錯誤更正碼可為bch碼或rs碼。
依據(jù)本發(fā)明一實(shí)施例的閃存錯誤控制電路,包括主儲存媒介與多個處理單元。每個處理單元包括高速緩存與多個處理核心。每個處理核心均電性連接該主儲存媒介與該高速緩存,用來從該主儲存媒介取得一待解碼信息,并執(zhí)行一第一算法依據(jù)該待解碼信息,并行計(jì)算該待解碼信息的所有特征值,將多個所述特征值儲存于高速緩存中,再執(zhí)行一第一算法依據(jù)多個所述特征值計(jì)算關(guān)于該待解碼信息的一錯誤位置多項(xiàng)式,將該錯誤位置多項(xiàng)式的多個系數(shù)儲存于該高速緩存中,以該錯誤位置多項(xiàng)式的多個所述系數(shù)用秦式搜尋法(chiensearch)以對該待解碼信息進(jìn)行解碼。
換句話說,本發(fā)明提供一種閃存數(shù)據(jù)的錯誤修正方法,包括:從一閃存讀取一儲存數(shù)據(jù)與對應(yīng)該儲存數(shù)據(jù)的一檢查碼;依據(jù)該儲存數(shù)據(jù)與該檢查碼,取得對應(yīng)的多筆第一待解碼信息;以及運(yùn)行一軟件以執(zhí)行下列步驟:以一第一算法,平行地對多筆所述第一待解碼信息進(jìn)行錯誤修正,以產(chǎn)生多筆輸出數(shù)據(jù);判斷多筆輸出數(shù)據(jù)以該第一算法執(zhí)行的錯誤修正是否成功;當(dāng)任一第一待解碼信息以該第一算法執(zhí)行的錯誤修正成功,輸出該輸出數(shù)據(jù);以及當(dāng)任一第一待解碼信息錯誤修正不成功,依據(jù)一錯誤率信息,以一第二算法修正該第一待解碼信息以得到一第二待解碼信息,并對該第二待解碼信息進(jìn)行錯誤修正,以產(chǎn)生該輸出數(shù)據(jù)。
優(yōu)選的,于以該第一算法,平行地對多筆所述第一待解碼信息進(jìn)行錯誤修正,以產(chǎn)生多筆輸出數(shù)據(jù)的步驟中,對每一該第一待解碼信息,執(zhí)行的步驟包括:計(jì)算關(guān)于該第一待解碼信息的所有特征值;依據(jù)多個所述特征值對該第一待解碼信息進(jìn)行一關(guān)鍵方程式運(yùn)算;以及對執(zhí)行該關(guān)鍵方程式的結(jié)果執(zhí)行一秦氏搜尋法以判斷是否產(chǎn)生該輸出數(shù)據(jù)。
優(yōu)選的,于以該第二算法對該第二待解碼信息進(jìn)行錯誤修正的步驟中,重復(fù)使用多個所述特征值。
優(yōu)選的,所述的方法更包括:判斷以該第二算法執(zhí)行的錯誤修正是否成功;當(dāng)該第二算法執(zhí)行的錯誤修正成功,輸出該輸出數(shù)據(jù);以及當(dāng)錯誤修正不成功,依據(jù)該錯誤率信息,以一第三算法修正該第一待解碼信息以得到一第三待解碼信息,并對該第三待解碼信息進(jìn)行錯誤修正,以產(chǎn)生該輸出數(shù)據(jù)。
優(yōu)選的,該第三算法的復(fù)雜度高于該第二算法的復(fù)雜度。
優(yōu)選的,該錯誤率信息從該閃存取得。
優(yōu)選的,當(dāng)錯誤修正不成功時,所述的方法更包括傳送一錯誤信息報告給該閃存控制器,使該閃存控制器依據(jù)該錯誤信息報告對儲存該儲存數(shù)據(jù)的區(qū)塊進(jìn)行配置。
優(yōu)選的,于以該第一算法,平行地對多筆所述第一待解碼信息進(jìn)行錯誤修正,以產(chǎn)生多筆輸出數(shù)據(jù)的步驟中,對每一該第一待解碼信息執(zhí)行的步驟包括:計(jì)算關(guān)于該第一待解碼信息的所有特征值;以該第一算法依據(jù)多個所述特征值計(jì)算關(guān)于該第一待解碼信息的一錯誤位置多項(xiàng)式;以及用秦式搜尋法對該第一待解碼信息進(jìn)行解碼以得到該輸出數(shù)據(jù)。
優(yōu)選的,于計(jì)算該特征值的步驟中,調(diào)用一乘法函數(shù),迭代計(jì)算出多次方場元素;其中于錯誤位置多項(xiàng)式的步驟中,調(diào)用該乘法函數(shù)去計(jì)算任意兩個場元素的乘法;其中于秦式搜尋法的步驟中,調(diào)用該乘法函數(shù),迭代計(jì)算出多次方場元素;解碼中所有步驟的有限場乘法使用一宏乘法函數(shù)進(jìn)行計(jì)算,而非使用查表方式。
優(yōu)選的,于以該第一算法,平行地對多筆所述第一待解碼信息進(jìn)行錯誤修正,以產(chǎn)生多筆輸出數(shù)據(jù)的步驟中,以多個處理單元對多筆第一待解碼信息平行地執(zhí)行該第一算法,以對多筆所述第一待解碼信息進(jìn)行錯誤修正。
本發(fā)明還提供一種閃存錯誤控制電路,包括:一主儲存媒介;以及多個處理單元,每一該處理單元包括:一高速緩存;以及多個處理核心,電性連接該主儲存媒介與該高速緩存,用來從該主儲存媒介取得一待解碼信息,并運(yùn)行一軟件程序以執(zhí)行下列步驟:計(jì)算關(guān)于該待解碼信息的所有特征值,將多個所述特征值儲存于該高速緩存中;執(zhí)行一第一算法依據(jù)該高速緩存中的多個所述特征值計(jì)算關(guān)于該待解碼信息的一錯誤位置多項(xiàng)式,將該錯誤位置多項(xiàng)式的多個系數(shù)儲存于該高速緩存中;以及以該錯誤位置多項(xiàng)式的多個所述系數(shù)用秦式搜尋法以對該待解碼信息進(jìn)行解碼。
優(yōu)選的,每一該處理單元的處理核心調(diào)用一宏乘法函數(shù)去進(jìn)行場元素的乘法。
優(yōu)選的,每一該處理單元的所有處理核心更判斷對該待解碼信息的解碼是否成功,當(dāng)解碼失敗時,處理核心更依據(jù)一錯誤率信息修正該待解碼信息以得到一第二待解碼信息,并執(zhí)行一第二算法依據(jù)該高速緩存中的多個所述特征值計(jì)算關(guān)于該第二待解碼信息的一第一多項(xiàng)式,將該第一多項(xiàng)式的多個系數(shù)儲存于該高速緩存中,以該第一多項(xiàng)式的多個所述系數(shù)用秦式搜尋法以對該待解碼信息進(jìn)行解碼。
優(yōu)選的,該主儲存媒介儲存有從一閃存取得的多筆待解碼信息。
優(yōu)選的,當(dāng)該閃存錯誤控制電路運(yùn)行時,多個所述處理單元的每一處理單元分別平行處理多筆所述待解碼信息其中之一。
優(yōu)選的,多個所述處理單元對主儲存媒介的數(shù)據(jù)存取為異步的傳輸。
依據(jù)本發(fā)明的方法,在錯誤檢查流程中先單獨(dú)依據(jù)錯誤更正碼執(zhí)行硬式解碼(hard-decisiondecode),在硬式解碼無法解碼的狀況下才進(jìn)一步利用錯誤率信息執(zhí)行軟式解碼(soft-decisiondecode)。從而在提高解碼成功率的基礎(chǔ)上,降低了平均解碼時間。
而依據(jù)本發(fā)明的電路,實(shí)現(xiàn)了多處理單元多核心平行多任務(wù)解碼。并減少了對于主儲存媒介(globalmemory)的存取次數(shù),從而降低了處理單元等待主儲存媒介回傳數(shù)據(jù)的時間,提高了處理的效率。多個處理單元可以同時平行處理多個待解碼信息。單一個處理單元也包含多個處理核心,可以平行處理解碼運(yùn)算。
以上的關(guān)于本公開內(nèi)容的說明及以下的實(shí)施方式的說明用來示范與解釋本發(fā)明的精神與原理,并且提供本發(fā)明的專利申請范圍更進(jìn)一步的解釋。
附圖說明
圖1a為依據(jù)本發(fā)明一實(shí)施例的閃存錯誤控制電路架構(gòu)示意圖;
圖1b為依據(jù)本發(fā)明一實(shí)施例的閃存錯誤控制電路運(yùn)作示意圖;
圖2為依據(jù)本發(fā)明一實(shí)施例的閃存數(shù)據(jù)的錯誤修正方法流程圖。
【附圖標(biāo)記說明】
1000閃存錯誤控制電路
1100~1800處理單元
1110高速緩存
1120~1190處理核心
cw1~cwn待解碼信息
a1~a2t場元素
s1~s2t特征值
sr1~srn搜尋結(jié)果
f0~ft錯誤位置多項(xiàng)式系數(shù)
mem主儲存媒介
s110~s140、s210~s250步驟
具體實(shí)施方式
以下在實(shí)施方式中詳細(xì)敘述本發(fā)明的詳細(xì)特征以及優(yōu)點(diǎn),其內(nèi)容足以使本領(lǐng)域技術(shù)人員了解本發(fā)明的技術(shù)內(nèi)容并加以實(shí)施,且根據(jù)本說明書所公開的內(nèi)容、保護(hù)范圍及附圖,本領(lǐng)域技術(shù)人員可輕易地理解本發(fā)明相關(guān)的目的及優(yōu)點(diǎn)。以下的實(shí)施例為進(jìn)一步詳細(xì)說明本發(fā)明的觀點(diǎn),并非以任何觀點(diǎn)限制本發(fā)明的保護(hù)范圍。
請參照圖1a,其為依據(jù)本發(fā)明一實(shí)施例的閃存錯誤控制電路架構(gòu)示意圖。如圖1a所示,依據(jù)本發(fā)明一實(shí)施例的閃存錯誤控制電路1000,包括主儲存媒介mem與多個處理單元1100至1800。每個處理單元包括高速緩存與處理核心。以處理單元1100為例,處理單元1100具有高速緩存1110與多個處理核心1120至1190。處理核心1120至1190均電性連接主儲存媒介mem與高速緩存1110。以下以處理單元1100的處理流程為例,其他的處理單元與處理單元1100以相同或相似的流程,平行地對所取得的數(shù)據(jù)進(jìn)行處理,因此不再贅述。
當(dāng)閃存的數(shù)據(jù)與對應(yīng)的檢查碼被擷取之后,數(shù)據(jù)與檢查碼被以碼字(codeword)的形式儲存在主儲存媒介mem。具體來說,主儲存媒介mem中儲存有多個碼字(后稱第一待解碼信息)。于本發(fā)明中的主儲存媒介mem例如是揮發(fā)性儲存媒介或是非揮發(fā)性儲存媒介,本發(fā)明不加以限制。
處理單元1100的處理核心1120至1190用來從主儲存媒介mem取得一筆第一待解碼信息。當(dāng)取得第一待解碼信息后,處理核心1120至1190以第一線程分別計(jì)算關(guān)于第一待解碼信息的所有特征值其中的一部份,并將所有特征值都儲存于高速緩存1110。接著處理核心1120至1190以第二線程執(zhí)行第一算法依據(jù)儲存在高速緩存1110中的特征值決定關(guān)于第一待解碼信息的錯誤位置多項(xiàng)式,并將錯誤位置多項(xiàng)式的多個系數(shù)再次儲存于高速緩存1110。接著處理核心1120至1190以第三線程用秦式搜尋法(chiensearch)檢查錯誤位置多項(xiàng)式以對第一待解碼信息進(jìn)行解碼。解碼成功后,處理核心1120至1190將關(guān)于第一待解碼信息的解碼結(jié)果回存至主儲存媒介mem,處理單元1100會再由主儲存媒介mem取得下一筆第一待解碼信息進(jìn)行處理。
具體來說,在解碼的過程中,處理單元1100的處理核心1120至1190僅一開始對主儲存媒介mem要求第一待解碼信息與多個有限場元素(finitefieldelements,ffe),并在解碼成功后,將解碼結(jié)果儲存到主儲存媒介mem。因此八個處理單元針對八筆第一待解碼信息,一共只對主儲存媒介mem進(jìn)行了16次的數(shù)據(jù)收發(fā)。在解碼的過程中,處理核心1120至1190僅僅對高速緩存1110進(jìn)行數(shù)據(jù)存取。借此,得以實(shí)現(xiàn)多核心多處理單元平行地對閃存的數(shù)據(jù)進(jìn)行錯誤檢查與更正的技術(shù)效果。此外,各處理單元對于主儲存媒介mem的存取為異步的存取。具體來說,也就是每個處理單元可以個別依照需求來對主儲存媒介mem進(jìn)行存取。
于一實(shí)施例中,在計(jì)算特征值時,處理核心1120首先由主儲存媒介mem取得一個基本場元素a,處理核心1130由主儲存媒介mem取得二次方場元素a2…處理核心1190由主儲存媒介mem取得八次方場元素a8。接著處理核心1120調(diào)用一個宏乘法函數(shù),產(chǎn)生一個二次方場元素a2,依序迭代計(jì)算得到一次方基本場元素a乃至于n-1次方場元素an-1,依據(jù)這些場元素,處理核心1120可以計(jì)算出待解碼信息的一個特征值。同理,處理核心1130利用a2可以迭代出二次方場元素a2乃至2(n-1)次方場元素a2(n-1),依據(jù)這些場元素,處理核心1130可以計(jì)算出另一個特征值,依此類推,各個處理核心都進(jìn)行相應(yīng)的運(yùn)算。并且所有的特征值都存在高速緩存1110中。并且依據(jù)這些特征值,處理核心1120至1190計(jì)算錯誤位置多項(xiàng)式。因此,相較于現(xiàn)有以查表方式得到特征值的方式,本實(shí)施例提出的方法不用占用大量的內(nèi)存空間,而可以用處理核心1120至1190搭配高速緩存1110而完成。
具體來說,請參照圖1b,其為依據(jù)本發(fā)明一實(shí)施例的閃存錯誤控制電路運(yùn)作示意圖。如圖1b所示,多筆待解碼信息cw1至cwn儲存在主儲存媒介mem中。處理單元1100的處理核心1120將待解碼信息cw1至cwk依序加載至高速緩存1110(步驟110),當(dāng)一筆待解碼信息cwi完成錯誤修正才會加載下一筆信息,以及節(jié)省高速緩存的空間。每個處理核心會利用數(shù)個場元素各計(jì)算出一部份的特征值,并將特征植寫入高速緩存1110(步驟120)。處理核心1120至1190運(yùn)行第一線程產(chǎn)生特征值s1,s2,…,s2t。接著八個處理核心一起運(yùn)行第二線程,依照所得到的特征值來決定錯誤位置多項(xiàng)式,并將各次系數(shù)(f0,f1,...,ft)寫入高速緩存1110(步驟130)。處理核心1120至1190再一起運(yùn)行第三線程來以秦式搜尋法的搜尋結(jié)果sr1至srn來決定解碼是否成功(步驟140)。當(dāng)解碼成功則將解得的碼字寫回主儲存媒介mem。具體來說,第一線程至第三線程,均為同一軟件程序(kernel)的不同功能函數(shù)。而任一處理核心1120至1190例如為多核心中央處理器的一個核心(core),或是多核心圖像處理器的一個核心(core)。因此第一處理單元1100解碼時,不再需要持續(xù)的與主儲存媒介mem溝通,從而得以實(shí)現(xiàn)真正的實(shí)時(real-time)分布式解碼。
此外,處理核心1120至1190更檢查解碼是否成功。具體來說,在以秦式搜尋法完成整個待解碼信息的錯誤搜尋后,處理核心1120至1190將錯誤位個數(shù)與錯誤位置多項(xiàng)式的最高次項(xiàng)進(jìn)行比對,以決定解碼是否成功。當(dāng)解碼成功時如上述將解碼結(jié)果回存至主儲存媒介mem。另一方面,當(dāng)解碼失敗時,表示當(dāng)前待解碼信息無法解碼,也就是說以第一算法(硬式解碼)無法完全地更正待解碼信息中的錯誤位數(shù)據(jù)。于一實(shí)施例中,當(dāng)錯誤檢查不成功時,表示閃存有部分儲存區(qū)塊的位錯誤率過高,因此處理單元1100傳送錯誤報告給閃存控制器。從而使閃存控制器依據(jù)錯誤報告針對相應(yīng)的區(qū)塊進(jìn)行配置與管理。
此時,處理單元1100改采用第二算法來進(jìn)行解碼。具體來說,處理單元1100更向主儲存媒介mem取得關(guān)于待解碼信息的錯誤率信息。處理核心1120至1190依照錯誤率信息,將高速緩存1110中儲存的第一待解碼信息修正為第二待解碼信息。具體來說,將第一待解碼信息中,錯誤率高的一個或多個位的位值轉(zhuǎn)換。若原本的位值為0,則轉(zhuǎn)換為1,若原本的位值為1,則轉(zhuǎn)換為0。換句話說,在第二算法中,是默認(rèn)第一待解碼信息中有部分位的位值是錯的,先將之進(jìn)行位值轉(zhuǎn)換后,再開始進(jìn)行前述解碼的流程。其流程于此不再贅述。
于一實(shí)施例中,處理單元1100執(zhí)行第二算法時不再重新決定特征值。于此實(shí)施例中,由于處理核心1120至1190執(zhí)行第一算法時決定的特征值已經(jīng)儲存在高速緩存1110中,因此第二算法重復(fù)利用儲存在高速緩存1110中的多個特征值。利用多個所述特征值去計(jì)算出關(guān)于第二待解碼信息的特征值。如此可以節(jié)省許多重復(fù)的計(jì)算。
綜上所述,依據(jù)本發(fā)明一實(shí)施例的閃存數(shù)據(jù)的錯誤修正方法請參照圖2,其為依據(jù)本發(fā)明一實(shí)施例的閃存數(shù)據(jù)的錯誤修正方法流程圖。如步驟210所示,閃存錯誤控制電路1000讀取儲存數(shù)據(jù)與對應(yīng)儲存數(shù)據(jù)的檢查碼。如步驟220所示,閃存錯誤控制電路1000以第一算法,使用多核心處理單元對儲存數(shù)據(jù)及對應(yīng)該數(shù)據(jù)的檢查碼進(jìn)行平行化解碼,以產(chǎn)生輸出數(shù)據(jù)。具體來說,此步驟就是執(zhí)行硬式解碼(hard-decisiondecode)。如步驟230所示,閃存錯誤控制電路1000判斷以第一算法執(zhí)行的錯誤修正是否成功。當(dāng)錯誤修正成功時,如步驟240所示,閃存錯誤控制電路1000將解碼結(jié)果輸出為輸出數(shù)據(jù)。當(dāng)錯誤修正失敗時,如步驟250所示,閃存錯誤控制電路1000依據(jù)錯誤率信息,以第二算法修正儲存數(shù)據(jù)及檢查碼以得到第二待解碼信息,并對第二待解碼信息進(jìn)行錯誤修正,以產(chǎn)生更正結(jié)果作為輸出數(shù)據(jù)。換句話說,當(dāng)硬式解碼失敗時,則進(jìn)行第二算法,也就是軟式解碼(soft-decisiondecode)。
于一實(shí)施例中,當(dāng)閃存控制檢查電路1000以第二算法產(chǎn)生解碼結(jié)果時,閃存錯誤控制電路1000會再次的判斷第二算法執(zhí)行的錯誤修正是否成功。如果第二算法執(zhí)行的錯誤修正也失敗,則閃存錯誤控制電路1000換用復(fù)雜度比第二算法更高、錯誤更正能力比第二算法更好的第三算法來進(jìn)行軟式解碼。具體來說,若閃存錯誤控制電路1000存有多種軟式解碼的算法,則可以一一使用,直到成功地完成正確解碼,或是直到所有算法都無法成功修正錯誤信息。
綜上所述,依據(jù)本發(fā)明的閃存錯誤控制電路及其方法,先以硬式解碼的方式對閃存的數(shù)據(jù)進(jìn)行錯誤修正。當(dāng)硬式解碼失敗才以軟式解碼進(jìn)行錯誤修正。因此當(dāng)數(shù)據(jù)的位錯誤率低的時候,本發(fā)明所提出的電路與方法具有相當(dāng)于硬式解碼的效率。而當(dāng)數(shù)據(jù)的位錯誤率高的時候,所述電路與方法具有相當(dāng)于軟式解碼的錯誤更正能力。