亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

存取快閃存儲器中儲存單元的方法以及使用該方法的裝置與流程

文檔序號:11286036閱讀:206來源:國知局
本申請是申請?zhí)枮椤?01410322424.x”、申請日為2014年7月8日、題為“存取快閃存儲器中儲存單元的方法以及使用該方法的裝置”的專利申請的分案申請。本發(fā)明關連于一種快閃存儲器裝置,特別是一種存取快閃存儲器中儲存單元的方法以及使用該方法的裝置。
背景技術
::快閃存儲器(flashmemory)中的存儲單元(memorycells)可能于多次的存取后失效。此外,亦可能于生產(chǎn)過程中,會因為粉塵或是光罩問題,使得儲存單元中的一整列(column)的數(shù)據(jù)都無法正確存取。因此,本發(fā)明提出一種存取快閃存儲單元的方法以及使用該方法的裝置,用以保護快閃存儲器中儲存的數(shù)據(jù)。技術實現(xiàn)要素:本發(fā)明的實施例提出一種存取快閃存儲器中儲存單元的方法,由處理單元執(zhí)行,包含下列步驟。接收到區(qū)段中的訊息無法使用此區(qū)段中的水平錯誤修正碼進行回復的通知后,決定屬于相同獨立磁盤冗余陣列群組中的其他區(qū)段地址。指示區(qū)段解碼單元以及磁盤陣列解碼單元有關垂直修正程序已經(jīng)啟動的訊息。接著,指示多個儲存單元存取接口讀取決定的其他區(qū)段地址的內(nèi)容,從而使磁盤陣列解碼單元使用讀取的內(nèi)容來回復區(qū)段中的訊息。本發(fā)明的實施例提出一種存取快閃存儲器中的儲存單元的裝置,包含區(qū)段解碼單元、磁盤陣列解碼單元以及處理單元。處理單元,耦接于區(qū)段解碼單元以及磁盤陣列解碼單元,接收到區(qū)段中的訊息無法使用此區(qū)段中的水平錯誤修正碼進行回復的通知后,決定屬于相同獨立磁盤冗余陣列群組中的其他區(qū)段地址;指示區(qū)段解碼單元以及磁盤陣列解碼單元有關垂直修正程序已經(jīng)啟動的訊息;以及指示多個儲存單元存取接口讀取決定的其他區(qū)段地址的內(nèi)容,從而使磁盤陣列解碼單元使用讀取的內(nèi)容來回復區(qū)段中的訊息。附圖說明圖1是依據(jù)本發(fā)明實施例的快閃存儲器中的儲存單元示意圖。圖2是依據(jù)本發(fā)明實施例的快閃存儲器的系統(tǒng)架構(gòu)示意圖。圖3是依據(jù)本發(fā)明實施例的快閃存儲器的存取接口示意圖。圖4是依據(jù)本發(fā)明實施例的邏輯數(shù)據(jù)儲存示意圖。圖5a是依據(jù)本發(fā)明實施例應用于每一區(qū)段的數(shù)據(jù)儲存示意圖。圖5b是依據(jù)本發(fā)明實施例的二維錯誤修正碼示意圖。圖6是依據(jù)本發(fā)明實施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。圖7a及圖7b是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的數(shù)據(jù)寫入方法流程圖。圖8是依據(jù)本發(fā)明實施例的執(zhí)行于儲存單元存取接口中的數(shù)據(jù)寫入方法流程圖。圖9是依據(jù)本發(fā)明實施例的用以執(zhí)行讀取作業(yè)的系統(tǒng)方塊圖。圖10是依據(jù)本發(fā)明實施例的執(zhí)行于區(qū)段解碼單元中的數(shù)據(jù)讀取方法流程圖。圖11是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的數(shù)據(jù)讀取方法流程圖。圖12是依據(jù)本發(fā)明實施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。圖13是依據(jù)本發(fā)明實施例的一個儲存單元中的三層式單元區(qū)塊的示意圖。圖14是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的寫入方法流程圖。圖15是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的寫入方法流程圖。圖16a是依據(jù)本發(fā)明實施例的眾多單層式單元的臨界電壓分布示意圖。圖16b是依據(jù)本發(fā)明實施例的眾多多層式單元的臨界電壓分布示意圖。圖16c是依據(jù)本發(fā)明實施例的眾多三層式單元的臨界電壓分布示意圖。圖17a至圖17c是顯示依據(jù)本發(fā)明實施例的經(jīng)三次寫入操作后的一個字符線上的眾多單層式單元的臨界電壓分布示意圖。圖18a是依據(jù)本發(fā)明實施例的使用rs(48,45)垂直錯誤修正碼的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖。圖18b是依據(jù)本發(fā)明實施例的使用rs(96,93)垂直錯誤修正碼的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖。圖19a至圖19b是依據(jù)本發(fā)明實施例的數(shù)據(jù)寫入時序圖。圖20a至圖20d是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的寫入數(shù)據(jù)方法流程圖。圖21是依據(jù)本發(fā)明實施例的字符線寫入順序示意圖?!靖綀D標記說明】10儲存單元;110存儲器單元陣列;120行解碼單元;130列編碼單元;140地址單元;150數(shù)據(jù)緩存器;20快閃存儲器的系統(tǒng)架構(gòu);200控制器;210控制單元;230儲存單元存取接口;250處理單元存取接口;300快閃儲存裝置;10[0][0]~10[j][i]儲存單元;310[0][0]~310[j][i]電子信號;230[0]~230[j]儲存單元存取接口;410[0][0][0]~410[j][i][k]區(qū)段數(shù)據(jù);510訊息;530水平錯誤修正碼;510[0][0][0]~510[j][i][0]訊息;530[0][0][0]~530[j][i][0]水平錯誤修正碼;610處理單元;620動態(tài)隨機存取存儲器;621、623直接存儲器存取控制器;630磁盤陣列編碼單元;640多工器;650緩存器;660仲裁單元;s711~s751方法步驟;s811~s831方法步驟;910處理單元;930磁盤陣列解碼單元;950緩存器;960區(qū)段解碼單元;s1010~s1070方法步驟;s1110~s1170方法步驟;1210處理單元;1220、1230直接存儲器存取控制器;1240動態(tài)隨機存取存儲器;1250緩存器;1300三層式單元區(qū)塊;pg0~pg191頁面;wl0~wl63字符線:s1410~s1470方法步驟;s1510~s1550方法步驟;lsb最低比特;csb中間比特;msb最高比特;10[0][0]~10[3][3]儲存單元;ch0~ch3通道;ce0~ce3連接至特定通道的儲存單元;s2011~s2087方法步驟;2100字符線寫入順序查找表。具體實施方式本發(fā)明實施例提出一種存取快閃存儲器中儲存單元的方法以及使用該方法的裝置,用以編碼即將儲存至儲存單元的數(shù)據(jù),以及解碼從儲存單元中讀取的數(shù)據(jù)。圖1是依據(jù)本發(fā)明實施例的快閃存儲器中的儲存單元示意圖。儲存單元10包含由mxn個存儲器單元(memorycells)組成的陣列(array)110,而每一個存儲器單元儲存至少一個比特(bit)的信息??扉W存儲器可以是nor型快閃存儲器(norflashmemory)、nand型快閃存儲器,或其他種類的快閃存儲器。為了正確存取信息,行解碼單元120用以選擇存儲器單元陣列110中指定的行,而列編碼單元130用以選擇指定行中一定數(shù)量的字節(jié)的數(shù)據(jù)作為輸出。地址單元140提供行信息給行解碼器120,其中定義了選擇存儲器單元陣列110中的那些行。相似地,列解碼器130則根據(jù)地址單元140提供的列信息,選擇存儲器單元陣列110的指定行中一定數(shù)量的列進行讀取或?qū)懭氩僮?。行可稱為為字符線(wordline),列可稱為比特線(bitline)。數(shù)據(jù)緩存器(databuffer)150可處存從存儲器單元陣列110讀取出的數(shù)據(jù),或欲寫入存儲器單元陣列110中的數(shù)據(jù)。存儲器單元可為單層式單元(single-levelcells,slcs)、多層式單元(multi-levelcells,mlcs)或三層式單元(triple-levelcells,tlcs)。一個單層式單元中可表示兩個狀態(tài),其中之一為于浮柵(floatinggate)中擁有零電荷(zerocharge)以及抹除后尚未寫入的狀態(tài)(通常定義為“1”的狀態(tài)),而另一則為于浮柵中擁有一些數(shù)量的負電荷(negativecharge)的狀態(tài)(通常定義為“0”的狀態(tài))。擁有負電荷的柵會讓此單元中的晶體管的臨界電壓(thresholdvoltage)增加,亦即是當施加此電壓至晶體管的控制柵(controlgate)時可造成晶體管導通。一種可行的讀取儲存比特方式為檢查此單元中的臨界電壓。如果此臨界電壓處于較高的狀態(tài),則比特值為“0”。如果此臨界電壓處于較低的狀態(tài),則比特值為“1”。圖16a是依據(jù)本發(fā)明實施例的眾多單層式單元的臨界電壓分布示意圖。因為快閃存儲器中的存儲器單元間的特性及操作結(jié)果并不會完全一致(例如,因為雜質(zhì)濃度的微小變異或硅結(jié)構(gòu)上的缺陷),雖然使用相同的寫入作業(yè)至所有的存儲器單元,卻不能讓所有的存儲器單元擁有完全一致的臨界電壓。因此,臨界電壓的分布如圖16a所示。狀態(tài)“1”的單層式單元通常擁有負臨界電壓,使得大部分的單元擁有接近于左峰的中心電壓,而少部分的單元則擁有較高或較低于左峰中心電壓的臨界電壓。相似地,狀態(tài)“0”的單層式單元通常擁有正臨界電壓,使得大部分的單元擁有接近于右峰的中心電壓,而少部分的單元擁有較高或較低于右峰中心電壓的臨界電壓。雖然多層式單元從字面上表示為擁有多于二個電壓位準的狀態(tài),亦即是,每個單元可表示多于一個比特的信息,但目前大多的多層式單元只表示二個比特的信息,從而提供如下所示的范例。單一個多層式單元使用四個不同狀態(tài)中的一者來儲存二個比特的信息,其中的一個比特稱為最低比特(leastsignificantbit,lsb),另一個比特則稱為最高比特(mostsignificantbit,msb)。由于一個存儲器單元的狀態(tài)是使用臨界電壓來表示,多層式單元的臨界電壓會有四個不同的有效區(qū)間。圖16b是依據(jù)本發(fā)明實施例的眾多多層式單元的臨界電壓分布示意圖。預期的分布擁有四個峰,每一者相應于一個狀態(tài)。相似地,單一個三層式單元使用八個不同狀態(tài)中的一者來儲存三個比特的信息,其中的一個比特稱為最低比特,另一個比特稱為中間比特(centersignificantbit,csb),而最后一個比特稱為最高比特。三層式單元的臨界電壓會有八個不同的有效區(qū)間。圖16c是依據(jù)本發(fā)明實施例的眾多三層式單元的臨界電壓分布示意圖。預期的分布擁有八個峰,每一者相應于一個狀態(tài)。需注意的是,本發(fā)明也可應用在每個存儲器單元支援超過三個比特的快閃存儲器裝置中。圖2是依據(jù)本發(fā)明實施例的快閃存儲器的系統(tǒng)架構(gòu)示意圖。快閃存儲器的系統(tǒng)架構(gòu)20中包含控制器200,用以寫入數(shù)據(jù)到儲存單元10中的指定地址,以及從儲存單元10中的指定地址讀取數(shù)據(jù)。詳細來說,控制單元210通過儲存單元存取接口230寫入數(shù)據(jù)到儲存單元10中的指定地址,以及從儲存單元10中的指定地址讀取數(shù)據(jù)。系統(tǒng)架構(gòu)20使用數(shù)個電子信號來協(xié)調(diào)控制器200與儲存單元10間的數(shù)據(jù)與命令傳遞,包含數(shù)據(jù)線(dataline)、時脈信號(clocksignal)與控制信號(controlsignal)。數(shù)據(jù)線可用以傳遞命令、地址、讀出及寫入的數(shù)據(jù);控制信號線可用以傳遞芯片致能(chipenable,ce)、地址提取致能(addresslatchenable,ale)、命令提取致能(commandlatchenable,cle)、寫入致能(writeenable,we)等控制信號。儲存單元存取接口230可采用雙倍數(shù)據(jù)率(doubledatarate,ddr)通訊協(xié)定與儲存單元10溝通,例如,開放nand快閃(opennandflashinterface,onfi)、雙倍數(shù)據(jù)率開關(ddrtoggle)或其他接口??刂茊卧?10另可使用處理單元存取接口250通過指定通訊協(xié)定與其他電子裝置進行溝通,例如,通用序列總線(universalserialbus,usb)、先進技術附著(advancedtechnologyattachment,ata)、序列先進技術附著(serialadvancedtechnologyattachment,sata)、快速周邊元件互聯(lián)(peripheralcomponentinterconnectexpress,pci-e)或其他接口。一個快閃儲存裝置(flashstorage)可包含多個儲存單元10,每一個儲存單元實施于一個管芯(die)上,具有各自獨立的接口與儲存單元存取接口230溝通。于存取大量數(shù)據(jù)時,這些存取儲存單元的操作(例如,讀取或?qū)懭氩僮?可以被管線化(pipelined),提升存取效率。圖3是依據(jù)本發(fā)明實施例的快閃存儲器的存取接口示意圖??扉W儲存裝置300可包含j+1個通道(channel),每一個通道包含i+1個儲存單元。換句話說,i+1個儲存單元分享同一個通道。例如,當快閃儲存裝置300包含8個通道(j=7)且每一個通道包含8個儲存單元(i=7)時,快閃儲存裝置300一共擁有64個儲存單元10[0..j][0..i]??扉W存儲器的控制單元可使用快閃儲存裝置300所提供的電子信號310[0..j][0..i]中的一者,將數(shù)據(jù)儲存至指定的儲存單元,以及/或從指定的儲存單元讀取數(shù)據(jù)。每個儲存單元擁有獨立的芯片致能(ce)控制信號。換句話說,當欲對指定儲存單元存取接口(又可稱為通道)所連接的指定儲存單元進行數(shù)據(jù)存取時,需要致能相應的芯片致能控制信號。熟習此技藝人士可在快閃儲存裝置300中使用任意數(shù)目的通道,而每一通道可包含任意數(shù)目的儲存單元,本發(fā)明并不因此而受限。為了確保儲存訊息(message)的正確性,可加上儲存二維的錯誤修正碼(two-dimensionalerrorcorrectioncode,ecc)來保護。圖4是依據(jù)本發(fā)明實施例的邏輯數(shù)據(jù)儲存示意圖。(j+1)x(i+1)個儲存單元中可包含用以儲存錯誤修正碼的l個(例如,l=1、2或3個)儲存單元,其中所儲存的碼又可稱為垂直錯誤修正碼(verticalecc)。每一個垂直錯誤修正碼是根據(jù)其他(j+1)x(i+1)-l個儲存單元中相應地址的值產(chǎn)生。垂直錯誤修正碼可以是單同比特修正碼(singleparitycorrection,spc)、rs碼(reed-solomoncode)或其他可提供修正錯誤功能的碼。例如,當i=7,j=7且l=1時,儲存單元10[7][7]可儲存spc(64,63)的錯誤修正碼。當i=7,j=7且l=2時,儲存單元10[7][6]及10[7][7]可儲存rs(64,62)的錯誤修正碼。當i=7,j=7且l=3時,儲存單元10[7][5]、10[7][6]及10[7][7]可儲存rs(64,61)的錯誤修正碼。垂直錯誤修正碼用來提供儲存單元層次的保護,亦即是,當其中的一個儲存單元失效時,使用垂直錯誤修正碼以及其他儲存單元中所儲存正確的值可回復儲存于失效的儲存單元中的所有的值。其他不儲存垂直錯誤修正碼的儲存單元中,除了儲存訊息外,更儲存水平錯誤修正碼(horizontalecc)。每一個儲存單元中的每條字符線可儲存k+1(例如k=31)個區(qū)段(sector)的數(shù)據(jù)。以上所述的k+1個區(qū)段又可統(tǒng)稱為一個頁面(page)。例如,針對指定一條字符線,儲存單元10[0][0]可儲存區(qū)段410[0][0][0]至區(qū)段410[0][0][k]的數(shù)據(jù),儲存單元10[0][i]可儲存區(qū)段410[0][i][0]至區(qū)段410[0][i][k]的數(shù)據(jù),儲存單元10[j][i]可儲存區(qū)段410[j][i][0]至區(qū)段410[j][i][k]的數(shù)據(jù)。區(qū)段410[0][0][0]至區(qū)段410[0][0][k]、區(qū)段410[0][i][0]至區(qū)段410[0][i][k]或410[j][i][0]至區(qū)段410[j][i][k]又可稱為一個芯片致能區(qū)段(cesector)。圖5a是依據(jù)本發(fā)明實施例應用于每一區(qū)段的數(shù)據(jù)儲存示意圖。區(qū)段410[0..j][0..i][0..k]中的任一者可包含訊息510與水平錯誤修正碼530。訊息長度是固定的,例如1k字節(jié)(bytes)。水平錯誤修正碼530是根據(jù)訊息510中的值產(chǎn)生。水平錯誤修正碼可以是單同比特修正碼、rs碼或其他可提供修正錯誤功能的碼。水平錯誤修正碼是提供區(qū)段層次的保護,亦即是,當訊息中有可容許數(shù)量個值發(fā)生錯誤時,使用水平錯誤修正碼以及同一區(qū)段中所儲存其他正確的訊息值可還原這些錯誤的值。圖5b是依據(jù)本發(fā)明實施例的二維錯誤修正碼示意圖。其中,每一個區(qū)段中包含了訊息及水平錯誤修正碼,例如,區(qū)段410[0][0][0]中包含了訊息510[0][0][0]以及用來修正訊息中的錯誤的水平錯誤修正碼530[0][0][0]。假設l=1,亦即是僅使用一個儲存單元來儲存垂直錯誤修正碼。區(qū)塊510[j][i][0]儲存用以修正訊息510[0][0][0]至訊息510[j-1][i][0]中的錯誤比特的垂直修正碼,而區(qū)塊530[j][i][0]儲存用以修正水平錯誤修正碼530[0][0][0]至水平錯誤修正碼530[j-1][i][0]中的錯誤比特的垂直錯誤修正碼。當一個區(qū)塊中的錯誤比特太多或者是儲存單元發(fā)生硬件錯誤而造成水平錯誤修正碼無法還原此區(qū)塊中的訊息時,則可使用垂直錯誤修正碼加上其他區(qū)塊中正確的訊息來嘗試還原此區(qū)塊中的訊息。以上所述區(qū)塊加上用來保護區(qū)塊中的值的垂直錯誤修正碼可稱為一個獨立磁盤冗余陣列群組(redundantarrayofindependentdisk,raidgroup)。圖6是依據(jù)本發(fā)明實施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。處理單元610可使用多種方式實施,例如以專用硬件電路或通用硬件(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),并且在執(zhí)行程序碼或軟件時,提供之后所描述的功能。從其他電子裝置所接收的欲寫入至指定儲存單元的訊息,會由處理單元存取接口250通過直接存儲器存取(dma,directmemoryaccess)控制器623儲存至動態(tài)隨機存取存儲器620。儲存單元10[0][0]至10[j][i]中的任一者可包含多個單層式單元。多工器640可預設為耦接動態(tài)隨機存取存儲器620以及緩存器650。當處理單元610檢測到動態(tài)隨機存取存儲器(dram-dynamicrandomaccessmemory)620已儲存一定長度的訊息時,例如,32k字節(jié),指示直接存儲器存取控制器621將動態(tài)隨機存取存儲器620中儲存的訊息經(jīng)由多工器640儲存至緩存器650,并同時儲存至磁盤陣列編碼單元630中的緩存器(未顯示)。磁盤陣列編碼單元630可使用已知的錯誤修正碼編碼方法依據(jù)目前的儲存結(jié)果以及新接收到的訊息來產(chǎn)生垂直錯誤修正碼,例如spc(64,63)、rs(64,62)、rs(64,61)的錯誤修正碼。處理單元610可包含兩個計數(shù)器(counter),一為訊息計數(shù)器用以數(shù)算已經(jīng)輸出的訊息次數(shù),另一為錯誤修正碼計數(shù)器用以數(shù)算已經(jīng)輸出的垂直錯誤修正碼次數(shù)。當處理單元610中的訊息計數(shù)器數(shù)算到已輸出的訊息次數(shù)到達一個閥值時,控制多工器640用以將磁盤陣列編碼單元630耦接上緩存器650,并且指示磁盤陣列編碼單元630將編碼完成的垂直錯誤修正碼以一或多個批次輸出至緩存器650。當處理單元610中的錯誤修正碼計數(shù)器數(shù)算到已輸出的次數(shù)到達一個閥值時,控制多工器640用以將動態(tài)隨機存取存儲器620耦接上緩存器650,用以繼續(xù)后續(xù)的訊息儲存作業(yè)。例如,當使用rs(64,61)的錯誤修正碼時,處理單元610會在訊息計數(shù)器數(shù)算已輸出訊息的次數(shù)達到61次時,控制多工器640用以將磁盤陣列編碼單元630耦接上緩存器650,并將訊息計數(shù)器重設為0;接著,處理單元610會在錯誤修正碼計數(shù)器數(shù)算已輸出錯誤修正碼的次數(shù)達到3次時,控制多工器640用以將動態(tài)隨機存取存儲器620耦接上緩存器650,并將錯誤修正碼計數(shù)器重設為0。于每次控制動態(tài)隨機存取存儲器620或磁盤陣列編碼單元630的數(shù)據(jù)輸出后,處理單元610控制仲裁單元660讀取緩存器650中的區(qū)段或垂直錯誤修正碼的值并通過適當?shù)膬Υ鎲卧嫒〗涌?例如,儲存單元存取接口230[0]至230[j]中的一者)寫入讀取的值至相應的儲存單元(例如,儲存單元10[0][0]至10[j][i]中的一者)。仲裁單元660可拉起(activate)適當?shù)膬Υ鎲卧嫒〗涌谥邢鄳獌Υ鎲卧男酒履苄盘?,并且通過儲存單元存取接口中的數(shù)據(jù)線將讀取的值及寫入地址傳給相應的儲存單元。每一個儲存單元存取接口(例如,儲存單元存取接口230[0]至230[j])另包含水平錯誤修正碼電路,用以分批次地讀取緩存器650中的數(shù)據(jù)(可能為訊息或垂直錯誤修正碼),并據(jù)以產(chǎn)生水平錯誤修正碼。詳細而言,當儲存單元存取接口每次從緩存器650讀取指定長度的訊息后,例如1k字節(jié),依據(jù)讀取的訊息510產(chǎn)生水平錯誤修正碼530。儲存單元存取接口接著將訊息510以及產(chǎn)生的水平錯誤修正碼530寫入至指定的儲存單元中的指定地址。圖7a及圖7b是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的數(shù)據(jù)寫入方法流程圖。于一個獨立磁盤冗余陣列群組的寫入作業(yè)中,處理單元610首先將訊息計數(shù)器以及錯誤修正碼計數(shù)器設為0(步驟s711),以及控制多工器640以耦接動態(tài)隨機存取存儲器620至緩存器650(步驟s713)。接著,反復執(zhí)行一個包含步驟s721至s731的回圈直到一個獨立磁盤冗余陣列群組中的訊息都寫入到指定的儲存單元中,例如,儲存單元10[0][0]至10[j][i-l]。詳細而言,處理單元610于檢測到動態(tài)隨機存取存儲器620已儲存指定長度的新訊息后,例如,32k字節(jié)(步驟s721),指示直接存儲器存取控制器621將動態(tài)隨機存取存儲器620中儲存的訊息經(jīng)由多工器640儲存至緩存器650,并同時儲存至磁盤陣列編碼單元630中的緩存器(未顯示)(步驟s723)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值并通過適當?shù)膬Υ鎲卧嫒〗涌?例如,儲存單元存取接口230[0]至230[j]中的一者)寫入讀取的值至相應的儲存單元(例如,儲存單元10[0][0]至10[j][i]中的一者)(步驟s725)。處理單元610將訊息計數(shù)器加一后(步驟s727),判斷訊息計數(shù)器的值是否超過閥值,例如,(j+1)x(i+1)-l-1(步驟s731)。若是,則繼續(xù)執(zhí)行步驟s733至s751,用以寫入獨立磁盤冗余陣列群組中的垂直錯誤修正碼;否則,回到步驟s721,用以寫入獨立磁盤冗余陣列群組中未完成的訊息。為寫入獨立磁盤冗余陣列群組中的垂直錯誤修正碼,處理單元610控制多工器640以耦接磁盤陣列編碼單元630至緩存器650(步驟s733)。接著,反復執(zhí)行一個包含步驟s741至s751的回圈直到獨立磁盤冗余陣列群組中的垂直錯誤修正碼都寫入到指定的儲存單元中,例如,儲存單元10[j][i-l+1]至10[j][i]。詳而言之,處理單元610指示磁盤陣列編碼單元630將指定長度(例如,32k字節(jié))的垂直錯誤修正碼經(jīng)由多工器640輸出至緩存器650(步驟s741)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值并通過適當?shù)膬Υ鎲卧嫒〗涌?例如,儲存單元存取接口230[j])寫入讀取的值至相應的儲存單元中的指定地址(例如,儲存單元10[j][i-l+1]至10[j][i]中的一者)(步驟s743)。處理單元610將錯誤修正碼計數(shù)器加一后(步驟s745),判斷錯誤修正碼計數(shù)器的值是否超過閥值,例如,l-1(步驟s751)。若是,則回到步驟s711繼續(xù)下一個獨立磁盤冗余陣列群組的寫入作業(yè);否則,回到步驟s741,用以寫入獨立磁盤冗余陣列群組中未完成的垂直錯誤修正碼。圖8是依據(jù)本發(fā)明實施例的執(zhí)行于儲存單元存取接口中的數(shù)據(jù)寫入方法流程圖。此方法可應用于儲存單元存取接口230[0]至230[j]中的一者。當儲存單元存取接口由仲裁單元660接收到將特定長度的訊息(例如,32k字節(jié)的訊息)寫入儲存單元的指示后(步驟s811),反復執(zhí)行一個包含步驟s821至s831的數(shù)據(jù)寫入回圈直到完成所有的寫入作業(yè)。詳細來說,針對每一回合的寫入作業(yè),儲存單元存取接口從仲裁單元660取得指定長度的訊息(例如,1k字節(jié)的訊息)(步驟s821),依據(jù)取得的訊息產(chǎn)生水平錯誤修正碼(步驟s823),以及將訊息及產(chǎn)生的水平錯誤修正碼寫入指定儲存單元中的指定字符線的下一個區(qū)段的地址(步驟s825)。于此須注意的是,于步驟s825中,若為第一回合的寫入作業(yè),則將讀取的訊息及產(chǎn)生的水平錯誤修正碼寫入指定字符線的第一個區(qū)段的地址。接著,儲存單元存取接口判斷是否完成所有的寫入作業(yè)(步驟s831)。若是,則結(jié)束整個流程;否則,回到步驟s821用以進行下一回合的寫入作業(yè)。圖19a是依據(jù)本發(fā)明實施例的數(shù)據(jù)寫入時序圖。儲存單元存取接口230[0]至230[3]分別以通道ch0至ch3表示,而連接至每個儲存單元存取接口的儲存單元分別以ce0至ce3表示。圖19a是寫入一個頁面pg0的數(shù)據(jù)(包含訊息及水平錯誤修正碼,或者是垂直錯誤修正碼)至所有儲存單元10[0][0]至10[3][3]中的第一個字符線wl0的例子。仲裁單元660通過通道ch0至ch3依序?qū)㈨撁鎝g0的數(shù)據(jù)傳送到每個通道所連接的第一個儲存單元ce0中的緩存器(未顯示),接著,發(fā)送寫入命令給所有連接的儲存單元ce0,用以開始實際的寫入作業(yè)。當儲存單元ce0中的任一者接收到寫入命令后,隨即進入忙碌狀態(tài)(busystate)來將緩存器中的頁面pg0的數(shù)據(jù)寫入到字符線wl0中的單層式單元。當所有儲存單元ce0開始實際的數(shù)據(jù)寫入作業(yè)時,通道ch0至ch3處于可用狀態(tài),使得仲裁單元660可利用通道ch0至ch3依序?qū)㈨撁鎝g0的數(shù)據(jù)傳送到每個通道所連接的第二個儲存單元ce1中的緩存器(未顯示)。熟習此技藝人士可觀察到由于使用以上的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放方式,使得通道ch0至ch3具有較少的閑置時間,并得以有效利用來傳送數(shù)據(jù)至儲存單元。圖9是依據(jù)本發(fā)明實施例的用以執(zhí)行讀取作業(yè)的系統(tǒng)方塊圖。處理單元910可使用多種方式實施,例如以專用硬件電路或通用硬件(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),并且在執(zhí)行程序碼或軟件時,提供之后所描述的功能。儲存單元10[0][0]至10[j][i]中的任一者可包含多個單層式單元。儲存單元存取接口(230[0]至230[j]中的一者)讀取相應的儲存單元中一個區(qū)段的值后,會將讀取的內(nèi)容傳到區(qū)段解碼單元960。區(qū)段解碼單元960首先利用其中的水平錯誤修正碼檢查其中的訊息是否有錯誤,若是,則嘗試使用其中的水平錯誤修正碼進行修正。當訊息內(nèi)容正確或已經(jīng)修正成功后,區(qū)段解碼單元960舍棄水平錯誤修正碼,將訊息內(nèi)容儲存至緩存器950中,使得其他電子裝置可經(jīng)由處理單元存取接口250讀取解碼后的訊息。當區(qū)段解碼單元960使用其中的水平錯誤修正碼還沒辦法修正訊息中的錯誤時,會發(fā)訊息通知處理單元910,訊息中包含發(fā)生錯誤但無法復原的區(qū)段地址等信息。接著,處理單元910會啟動垂直修正程序。于垂直修正程序中,處理單元910先取得此區(qū)段地址所屬的獨立磁盤冗余陣列群組的信息,并找出可用來復原此錯誤區(qū)段地址中的訊息的所有其他區(qū)段地址(包含儲存垂直錯誤修正碼的區(qū)段地址)。例如,請參考圖5b,假設區(qū)段410[0][0][0]中的訊息510[0][0][0]包含了即使使用水平錯誤修正碼530[0][0][0]還無法修正的錯誤時,其他可用來嘗試進行修正的區(qū)段為410[0][1][0]至410[j][i][0]。接著,處理單元910指示區(qū)段解碼單元960垂直修正程序已啟動,決定相應于無法修正的區(qū)段的其他區(qū)段,并且指示儲存單元存取接口230[0]至230[j]讀取指定的其他區(qū)段的值。當垂直修正程序啟動時,區(qū)段解碼單元960會通過儲存單元存取接口230[0]至230[j]依序獲得指定區(qū)段的值,并在解碼完成后傳送給磁盤陣列解碼單元930。磁盤陣列解碼單元930可使用所有所需區(qū)段的數(shù)據(jù)(包含原始訊息以及垂直錯誤修正碼)來復原先前無法修正的錯誤,并將復原的結(jié)果傳送至緩存器950,使得其他電子裝置可經(jīng)由處理單元存取接口250讀取修正后的訊息。須注意的是,圖9的處理單元910與圖6的處理單元610可為同一個處理單元,本發(fā)明并不因此受限。圖10是依據(jù)本發(fā)明實施例的執(zhí)行于區(qū)段解碼單元中的數(shù)據(jù)讀取方法流程圖。區(qū)段解碼單元960從儲存單元存取接口230[0]至230[j]中的一者獲得一個區(qū)段的值后(步驟s1010),使用其中的水平錯誤修正碼檢查其中的訊息是否正確(步驟s1020)。若正確(步驟s1020中“是”的路徑),則將原始的訊息儲存于緩存器950中(步驟s1070);否則(步驟s1020中“否”的路徑),嘗試使用其中的水平錯誤修正碼修正訊息中存在的錯誤(步驟s1030)。接著,區(qū)段解碼單元960決定是否修正成功(步驟s1040)。若成功(步驟s1040中“是”的路徑),則將修正后的訊息儲存于緩存器950中(步驟s1070);否則(步驟s1040中“否”的路徑),發(fā)訊息給處理單元910用以通知此區(qū)段的錯誤無法使用水平錯誤修正碼回復(步驟s1050)。圖11是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的數(shù)據(jù)讀取方法流程圖。處理單元910從區(qū)段解碼單元接收指定區(qū)段無法使用水平錯誤修正碼回復的通知后(步驟s1110),決定屬于相同獨立磁盤冗余陣列群組中的其他區(qū)段地址(步驟s1120)。例如,請參考圖5b,當區(qū)段410[0][0][0]無法使用其中的水平錯誤修正碼510[0][0][0]回復時,處理單元910決定屬于相同獨立磁盤冗余陣列群組中的其他區(qū)段為410[0][1][0]至410[j][i][0]。指示區(qū)段解碼單元960及磁盤陣列解碼單元930垂直修正程序已經(jīng)啟動(步驟s1130)。當區(qū)段解碼單元960接收到指示后,會將由儲存單元存取接口230[0]至230[j]中的一者所讀取的指定的值解碼完成,并且輸出至磁盤陣列解碼單元930,而非儲存于緩存器950中。接著,處理單元910反復地執(zhí)行一個區(qū)段內(nèi)容讀取的回圈,用以指示儲存單元存取接口230[0]至230[j]讀取上述指定區(qū)段的內(nèi)容。于回圈中,處理單元910指示指定的儲存單元存取接口讀取下一個區(qū)段的內(nèi)容(步驟s1140)。受指示的儲存單元存取接口會將讀取的結(jié)果傳送至區(qū)段解碼單元960。區(qū)段解碼單元960解碼出其中的訊息后,傳送至磁盤陣列解碼單元930,而磁盤陣列解碼單元930則根據(jù)先前的解碼結(jié)果以及新接收到的訊息產(chǎn)生一個新的解碼結(jié)果。當處理單元910從受指示的儲存單元存取接口或區(qū)段解碼單元960接收到讀取完成的通知后(步驟s1150),決定是否完成屬于相同獨立磁盤冗余陣列群組中所有其他區(qū)段的訊息讀取作業(yè)(步驟s1160)。若是(步驟s1160中“是”的路徑),則結(jié)束回圈;否則(步驟s1160中“否”的路徑),指示指定的儲存單元存取接口繼續(xù)讀取下一個區(qū)段的內(nèi)容(步驟s1140)。當回圈結(jié)束時,處理單元910指示區(qū)段解碼單元960及磁盤陣列解碼單元930垂直修正程序已經(jīng)結(jié)束(步驟s1170)。當區(qū)段解碼單元960接收到垂直修正程序已經(jīng)結(jié)束的指示后,會將之后完成解碼的值儲存于緩存器950中,而非輸出至磁盤陣列解碼單元930。另一方面,當磁盤陣列解碼單元930接收到指示后,將目前的解碼結(jié)果儲存于緩存器950,作為指定區(qū)段的回復結(jié)果。圖12是依據(jù)本發(fā)明實施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。處理單元1210可使用多種方式實施,例如以專用硬件電路或通用硬件(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),并且在執(zhí)行程序碼或軟件時,提供之后所描述的功能。儲存單元10[0][0]至10[j][i]中的任一者可包含多個存儲單元,而每一個存儲單元可以三層式單元實施。處理單元1210可控制儲存單元存取接口230用以將儲存于緩存器1250中的值寫入至儲存單元10[0][0]至10[j][i]中的一者。針對每一個儲存單元,處理單元1210可逐字符線(wordline)寫入值,其中,一個字符線上可儲存多頁(pages)的值。雖然以下以一個字符線包含三頁的值為例,但熟習此技藝人士亦可修改為于一個字符線上寫入更多或更少頁的值,本發(fā)明并不以此受限。一頁可包含8k、16k、32k或64k字節(jié)(bytes)的訊息。由于三層式單元會被鄰近字符線的寫入操作影響而使得原先儲存的電荷泄漏,或吸入更多的電荷,造成臨界電壓改變,所以,需要重復數(shù)次的寫入操作以避免因以上問題造成單元中代表的儲存值發(fā)生變化。以下說明的技術方案亦可稱為粗略至細致(f&f,foggyandfind)的寫入方法。圖17a至圖17c是顯示依據(jù)本發(fā)明實施例的經(jīng)三次寫入操作后的一個字符線上的眾多單層式單元的臨界電壓分布示意圖。經(jīng)過第一次寫入操作后,臨界電壓分布如圖17a中的實線所示。從圖17a中可觀察出經(jīng)過第一次粗略的寫入作業(yè)后,臨界電壓分布無法產(chǎn)生具區(qū)別性的八個狀態(tài)。而接著,當鄰近的字符線進行寫入操作時,將影響此字符線上的三層式單元原先儲存的電荷,讓臨界電壓分布變得更糟。影響后的臨界電壓分布如圖17a中的虛線所示。為了讓三層式單元中實際儲存的電荷數(shù)目更接近理想值,進行第二次寫入操作,而第二次寫入操作后的臨界電壓分布如圖17b中的實線所示。從圖17b中可觀察出經(jīng)過第二次的寫入作業(yè)后,臨界電壓分布可以產(chǎn)出稍具區(qū)別性的八個狀態(tài)。但是,當受到鄰近字符線的后續(xù)寫入操作影響時,此臨界電壓分布中的八個狀態(tài)間又產(chǎn)生些許重疊。影響后的臨界電壓分布如圖17b中的虛線所示。為了再次調(diào)整受到影響的結(jié)果,此字符線會再進行第三次的寫入作業(yè),讓臨界電壓分布中的八個狀態(tài)間可擁有較寬的間隔。經(jīng)過第三次寫入作業(yè)后的臨界電壓分布請參考圖17c。參考回圖12,于此架構(gòu)中,假設緩存器1250的容量可儲存三個頁面的值,因此需要動態(tài)隨機存取存儲器1240先暫存通過處理單元存取接口250從其他電子裝置傳來的九個頁面的值。處理單元1210可指示直接存儲器存取控制器(directmemoryaccess,dmacontroller)1220將處理單元存取接口250上的值儲存至動態(tài)隨機存取存儲器1240中的指定地址,而新接收的一個頁面的值會覆寫掉其中最早儲存的頁面的值。需注意的是,被覆寫掉的頁面的值已經(jīng)經(jīng)過三次寫入后穩(wěn)定地被儲存于指定的儲存單元中。動態(tài)隨機存取存儲器1240可整合至包含元件230[0..j]、250、1210、1230及1250的系統(tǒng)單芯片中(systemonchip,soc),或者是實施于獨立的芯片。于實際的寫入作業(yè)中,處理單元1210可指示直接存儲器存取控制器1230從動態(tài)隨機存取存儲器1240讀取三個頁面的值并儲存至緩存器1250中,接著通過儲存單元存取接口230[0]至230[j]中的一者,將緩存器1250中的值寫入指定儲存單元中的指定字符線上的三層式單元。圖13是依據(jù)本發(fā)明實施例的一個儲存單元中的三層式單元區(qū)塊(tlcblock)的示意圖。三層式單元區(qū)塊1300可包含總數(shù)為192個頁面的值,頁面標號為pg0至pg191。每個字符線上可儲存三個頁面的值,字符線標號為wl0至wl63。請參考圖16c,每個字符線上的所有三層式單元中指示的最低比特,集合起來成為一個頁面的值。類似地,所有三層式單元中指示的中間比特以及最高比特,分別集合起來成為另二個頁面的值。為了讓儲存的值能夠穩(wěn)定,處理單元1210除了要將動態(tài)隨機存取存儲器1240中最近接收到的三個頁面的值寫入三層式單元區(qū)塊1300以外,還需要使用兩個批次從動態(tài)隨機存取存儲器1240讀取之前曾經(jīng)寫入過的六個頁面的值至緩存器250,并使用指定的儲存單元存取接口寫入到指定儲存單元中的指定字符線上的三層式單元。例如,寫入頁面pg6至pg8至字符線wl2上的三層式單元后,處理單元1210更指示直接存儲器存取控制器1230從動態(tài)隨機存取存儲器1240讀取頁面pg0至pg2的值并儲存至緩存器250中,并使用儲存單元存取接口230將緩存器250中的值寫入字符線wl0上的存儲單元,接著,指示直接存儲器存取控制器1230從動態(tài)隨機存取存儲器1240讀取頁面pg3至pg5的值并儲存至緩存器250中,并使用儲存單元存取接口230將緩存器250中的值寫入字符線wl1上的存儲單元。圖21是依據(jù)本發(fā)明實施例的字符線寫入順序示意圖。此針對單一儲存單元的寫入順序可記錄于查找表(lookuptable)2100中,用以讓處理單元1210據(jù)以決定每次欲寫入的字符線或頁面。查找表中包含三欄,分別記錄每一個字符線wl0至wl63于第一次、第二次及第三次寫入間的順序。由于三層式單元中的值需要重復寫入數(shù)次后才會穩(wěn)定,因此當處理單元1210通過處理單元存取接口250接收到其他電子裝置發(fā)出的數(shù)據(jù)讀取命令時,需要先判斷儲存單元中儲存的值是否已經(jīng)穩(wěn)定。若是,則通過指定的儲存單元存取接口230[0]至230[j]中的一者讀取指定儲存單元中的指定地址的值,并回復給請求的電子裝置;若否,則從動態(tài)隨機存取存儲器1240中讀取欲儲存至指定儲存單元中的指定地址的值,并回復給請求的電子裝置。于此須注意的是,關于動態(tài)隨機存取存儲器1240所暫存的值將儲存于何儲存單元中的何地址的信息可儲存于動態(tài)隨機存取存儲器1240或寄存器(register,未顯示)中,并且處理單元1210可通過此信息來判斷其他電子裝置欲讀取的值是否已穩(wěn)定地儲存于指定的儲存單元中。詳而言之,如果動態(tài)隨機存取存儲器1240或寄存器中儲存的信息中指出動態(tài)隨機存取存儲器1240所暫存一部分的值將儲存于讀取地址,則代表欲讀取的值尚未穩(wěn)定地儲存于儲存單元中。圖14是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的寫入方法流程圖。當處理單元1210通過處理單元存取接口250接收到其他電子裝置發(fā)出的寫入命令及寫入地址后(步驟s1410),指示直接存儲器存取控制器1220將欲寫入的值由處理單元存取接口250搬至動態(tài)隨機存取存儲器1240(步驟s1420)。判斷是否已經(jīng)接收完指定數(shù)目的頁面的值(步驟s1430),例如,第n至n+2頁的值,若是,進行實際的寫入作業(yè)(步驟s1440至步驟s1470);否則,繼續(xù)通過處理單元存取接口250接收尚未傳送完的值(步驟s1410至步驟s1420)。于實際的寫入作業(yè)中,處理單元1210指示直接存儲器存取控制器1230將最近暫存于動態(tài)隨機存取存儲器1240中指定數(shù)目的頁面的值儲存至緩存器1250(步驟s1440),指示儲存單元存取接口230將緩存器1250中的值寫入指定儲存單元中的指定字符線上的三層式單元(步驟s1450)。接著,為了讓先前已寫入的值避免受到這次寫入作業(yè)的影響,處理單元1210更使用二個的批次來指示直接存儲器存取控制器1230將暫存于動態(tài)隨機存取存儲器1240中最近已寫入至儲存單元的六個頁面的值再次儲存至緩存器1250。詳而言之,處理單元1210指示直接存儲器存取控制器1230將暫存于動態(tài)隨機存取存儲器1240中之前第三至第一頁的值儲存至緩存器1250,例如,第n-3至n-1頁的值,并指示指定的儲存單元存取接口將緩存器1250中的值再次寫入指定儲存單元中的指定字符線上的三層式單元(步驟s1460),以及,處理單元1210指示直接存儲器存取控制器1230將暫存于動態(tài)隨機存取存儲器1240中之前第六至第四頁的值儲存至緩存器1250,例如,第n-3至n-1頁的值,并指示指定的儲存單元存取接口將緩存器1250中的值再次寫入指定儲存單元中的指定字符線上的三層式單元(步驟s1470)。圖15是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的寫入方法流程圖。當處理單元1210通過處理單元存取接口250接收到其他電子裝置發(fā)出的讀取命令及讀取地址后(步驟s1510),判斷欲讀取地址的值是否尚未穩(wěn)定地儲存于儲存單元中(步驟s1520)。若是,指示直接存儲器存取控制器1220從動態(tài)隨機存取存儲器1240讀取請求的值并通過處理單元存取接口250回復給請求的電子裝置(步驟s1530);否則,通過儲存單元存取接口從儲存單元讀出指定地址的值(步驟s1540),并且將讀出的值通過處理單元存取接口250回復給請求的電子裝置(步驟s1550)。為了保護三層式單元中所儲存的數(shù)據(jù)(包含訊息及水平錯誤修正碼),可更儲存垂直錯誤修正碼而形成二維錯誤修正碼的保護。為了提升寫入數(shù)據(jù)的效率,本發(fā)明實施例提出一種新的訊息以及錯誤修正碼的擺放方式。第18a圖是依據(jù)本發(fā)明實施例的使用rs(48,45)垂直錯誤修正碼的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖。假設i=3,j=3且每條字符線可儲存三個頁面的訊息及水平錯誤修正碼,或三個頁面的垂直錯誤修正碼??偣?6個儲存單元10[0][0]至10[3][3]中的第一條字符線wl0中所儲存48個頁面,可以形成一個獨立磁盤冗余陣列群組。其中,于儲存單元10[3][3]中的第一條字符線wl0(陰影部分)中儲存3個頁面的垂直錯誤修正碼。圖18b是依據(jù)本發(fā)明實施例的使用rs(96,93)垂直錯誤修正碼的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖??偣?6個儲存單元10[0][0]至10[3][3]中的第一及第二條字符線wl0及wl1中所儲存96個頁面,可以形成一個獨立磁盤冗余陣列群組。其中,于儲存單元10[3][3]中的第二條字符線wl1(陰影部分)中儲存三個頁面的垂直錯誤修正碼。由于一個獨立磁盤冗余陣列群組中的各頁面數(shù)據(jù)被分開擺放在不同的實體儲存單元中,可避免當其中的一個儲存單元發(fā)生不可回復的硬件錯誤時所造成數(shù)據(jù)不可回復的情形。此外,以上所述的擺放方式也可提升數(shù)據(jù)寫入的效率。請參考圖6。處理單元610可指示仲裁單元660以事先定義的順序?qū)?shù)據(jù)寫入每個儲存單元中的第一條字符線。圖19b是依據(jù)本發(fā)明實施例的數(shù)據(jù)寫入時序圖。儲存單元存取接口230[0]至230[3]分別以通道ch0至ch3表示,而連接至每個儲存單元存取接口的儲存單元分別以ce0至ce3表示。圖19b是一個寫入三個頁面pg0、pg1及pg2的數(shù)據(jù)(包含訊息及水平錯誤修正碼,或者是垂直錯誤修正碼)至所有儲存單元10[0][0]至10[3][3]中的第一個字符線wl0的例子。仲裁單元660通過通道ch0至ch3依序?qū)⑷齻€頁面pg0、pg1及pg2的數(shù)據(jù)傳送到每個通道所連接的第一個儲存單元ce0中的緩存器(未顯示),接著,發(fā)送寫入命令給所有連接的儲存單元ce0,用以開始實際的寫入作業(yè)。當儲存單元ce0中的任一者接收到寫入命令后,隨即進入忙碌狀態(tài)(busystate)來將緩存器中三個頁面pg0、pg1及pg2的數(shù)據(jù)寫入到字符線wl0中的三層式單元。當所有儲存單元ce0開始實際的數(shù)據(jù)寫入作業(yè)時,通道ch0至ch3處于可用狀態(tài),使得仲裁單元660可利用通道ch0至ch3依序?qū)⑷齻€頁面pg0、pg1及pg2的數(shù)據(jù)傳送到每個通道所連接的第二個儲存單元ce1。熟習此技藝人士可觀察到由于使用以上的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放方式,使得通道ch0至ch3具有較少的閑置時間,并得以有效利用來傳送數(shù)據(jù)至儲存單元。圖6所示架構(gòu)中的儲存單元10[0][0]至10[j][i]亦可以修改為包含多個三層式單元。圖20a至圖20d是依據(jù)本發(fā)明實施例的執(zhí)行于處理單元中的寫入數(shù)據(jù)方法流程圖。于一個獨立磁盤冗余陣列群組的寫入作業(yè)中,處理單元610首先將訊息計數(shù)器以及錯誤修正碼計數(shù)器設為0(步驟s2011),以及控制多工器640以耦接動態(tài)隨機存取存儲器620至緩存器650(步驟s2013)。接著,反復執(zhí)行一個包含步驟s2021至s2087的回圈直到一個獨立磁盤冗余陣列群組中的訊息都寫入到指定的儲存單元中,例如,圖18a所示的儲存單元10[0][0]至10[3][3]的字符線wl0,或者,圖18b所示的儲存單元10[0][0]至10[3][3]的字符線wl0及wl1。步驟s2021至步驟s2031為寫入數(shù)據(jù)至所有儲存單元中的特定字符線的準備步驟。處理單元610使用變數(shù)q來決定此次寫入所使用的儲存單元存取接口為哪一個,以及使用變數(shù)p來決定寫入至此儲存單元存取接口中的第幾個儲存單元。為了讓儲存于三層式單元中的值能夠穩(wěn)定,可以參考如圖14所描述的字符線寫入方法,讓每個字符線都能夠反復且交錯地寫入三次。于每一個字符線的第一個儲存單元寫入作業(yè)中,設變數(shù)p=0及q=0(步驟s2021)。針對儲存單元10[q][p],處理單元610決定欲寫入的字符線或頁面,例如,字符線wl0或頁面pg0至pg2(步驟s2023)。處理單元610可參考如圖21所示的寫入順序以決定欲寫入的字符線或頁面。接著,選擇性地將訊息計數(shù)器維持為0或maxixmaxjxn,以及將錯誤修正碼計數(shù)器設為0,其中常數(shù)maxj代表儲存單元存取接口的總數(shù),常數(shù)maxi代表連結(jié)于每一個儲存單元存取接口的儲存單元總數(shù),變數(shù)n則代表已經(jīng)完成的字符線總數(shù)(步驟s2025)。以圖18b所示的使用rs(96,93)錯誤修正碼的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放為例,當這次寫入作業(yè)關聯(lián)于字符線wl0時,則將訊息計數(shù)器維持為0。當這次寫入作業(yè)關聯(lián)于字符線wl1時,則將訊息計數(shù)器設為4x4x1=16。步驟s2031至s2035則用來寫入訊息及水平錯誤修正碼至指定的儲存單元10[q][p]。處理單元610指示直接存儲器存取控制器621將動態(tài)隨機存取存儲器620中儲存的三個頁面訊息經(jīng)由多工器640儲存至緩存器650,并同時儲存至磁盤陣列編碼單元630中的緩存器(未顯示)(步驟s2031)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值并指示儲存單元存取接口230[q]寫入至儲存單元10[q][p](步驟s2033)。接著,處理單元610將訊息計數(shù)器加三(步驟s2035)。針對所有儲存單元的寫入時序可參考圖19的說明。步驟s2041、s2081至s2087用以決定下一次寫入作業(yè)是針對哪一個儲存單元存取接口及儲存單元。當處理單元610判斷訊息計數(shù)器的值小于閥值后(步驟s2041中“否”的路徑),將變數(shù)q加一(步驟s2081)。以圖18b所示的使用rs(96,93)錯誤修正碼的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放為例,訊息計數(shù)器的值小過閥值(如93)則代表一個獨立磁盤冗余陣列群組中的訊息尚未全部寫完。接著,判斷變數(shù)q是否大于或等于常數(shù)maxj(步驟s2083),若否,則此流程繼續(xù)進行至步驟s2031;若是,則將變數(shù)p加一并將變數(shù)q設為0(步驟s2085),并接著判斷變數(shù)p是否大于或等于常數(shù)maxi(步驟s2087)。當變數(shù)p大于或等于常數(shù)maxi時(步驟s2087中“是”的路徑),代表所有的儲存單元中的指定字符線已經(jīng)寫入完成,流程繼續(xù)進行至步驟s2021,用以繼續(xù)下一個字符線的寫入作業(yè)。否則(步驟s2087中“否”的路徑),流程繼續(xù)進行至步驟s2031。由于垂直錯誤修正碼亦要被寫入三次才會穩(wěn)定,本發(fā)明實施例提出一種程序,用以暫存第一次產(chǎn)生的垂直錯誤修正碼于動態(tài)隨機存取存儲器620中,并且于后續(xù)重新寫入時直接從動態(tài)隨機存取存儲器620中取得已經(jīng)產(chǎn)生的垂直錯誤修正碼,而不需要重新計算。以圖18b所示的使用rs(96,93)錯誤修正碼的獨立磁盤冗余陣列群組的數(shù)據(jù)擺放為例,另一種實施方式,當磁盤陣列編碼單元630要產(chǎn)生相應于儲存單元10[3][3]的字符線wl1的垂直錯誤修正碼時,可從動態(tài)隨機存取存儲器620重新載入欲儲存于16個儲存單元中的字符線wl0及wl1中的值來產(chǎn)生垂直錯誤修正碼,然而,這將耗費大量的時間。步驟s2051至s2079是用以寫入垂直錯誤修正碼至指定的儲存單元10[q][p]。當處理單元610判斷訊息計數(shù)器的值大于或等于閥值后(步驟s2041中“是”的路徑),將變數(shù)p加一(步驟s2051)。接著,判斷此獨立磁盤冗余陣列群組的垂直錯誤修正碼是否已產(chǎn)生過(步驟s2053),是則讓儲存單元存取接口230[q]取得動態(tài)隨機存取存儲器620中暫存的先前計算結(jié)果,并寫入至儲存單元10[q][p](步驟s2061至s2068);否則,讓儲存單元存取接口230[q]取得磁盤陣列編碼單元630的編碼結(jié)果,并寫入至儲存單元10[q][p](步驟s2071至s2079)。如步驟s2071至s2079所示的回圈會反復執(zhí)行直到所有由磁盤陣列編碼單元630所產(chǎn)生的垂直錯誤修正碼都寫入至指定的儲存單元中。詳細而言,處理單元610控制多工器640用以耦接磁盤陣列編碼單元630與緩存器650(步驟s2071),并指示磁盤陣列編碼單元630將三頁的垂直錯誤修正碼經(jīng)由多工器640輸出至緩存器650,并且指示直接存儲器存取控制器621將磁盤陣列編碼單元630中的緩存器(未顯示)的計算結(jié)果儲存至動態(tài)隨機存取存儲器620中(步驟s2073)。接著,處理單元610控制仲裁單元660以讀取緩存器650中的值并指示儲存單元存取接口230[q]寫入至儲存單元10[q][p]中的指定字符線(步驟s2075)。處理單元610將錯誤修正碼計數(shù)器加三后(步驟s2076),判斷錯誤修正碼計數(shù)器的值是否大于或等于閥值,例如,常數(shù)l(步驟s2077)。若是,則繼續(xù)進行步驟s2069;否則,將變數(shù)p加一后(步驟s2079),回到步驟s2073,用以寫入獨立磁盤冗余陣列群組中未完成的垂直錯誤修正碼。如步驟s2061至s2068所示的回圈會反復執(zhí)行直到所有于動態(tài)隨機存取存儲器620所暫存的垂直錯誤修正碼都寫入至指定的儲存單元中。詳細而言,處理單元610指示直接存儲器存取控制器621將動態(tài)隨機存取存儲器620中暫存的三頁垂直錯誤修正碼經(jīng)由多工器640儲存至緩存器650(步驟s2061)。接著,處理單元610控制仲裁單元660以指示儲存單元存取接口230[q]讀取緩存器650中的值并寫入至儲存單元10[q][p]中的指定字符線(步驟s2063)。處理單元610將錯誤修正碼計數(shù)器加三后(步驟s2065),判斷錯誤修正碼計數(shù)器的值是否大于或等于閥值,例如,l(步驟s2067)。若是,則繼續(xù)進行步驟s2069;否則,將變數(shù)p加一后(步驟s2068),回到步驟s2061,用以寫入獨立磁盤冗余陣列群組中未完成的垂直錯誤修正碼。最后,處理器單元610判斷是否完成所有的寫入作業(yè)(步驟s2069),是則結(jié)束整個數(shù)據(jù)寫入處理;否則控制多工器640用以耦接動態(tài)隨機存取存儲器620與緩存器650后(步驟s2080),回到步驟s2021,用以繼續(xù)進行下一個獨立磁盤冗余陣列群組的數(shù)據(jù)寫入作業(yè)。步驟s2033、s2063與s2075的技術細節(jié)可參考圖8的說明。雖然圖1至圖3、圖6、圖9及圖12中包含了以上描述的元件,但不排除在不違反發(fā)明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖7a至圖7b、圖8、圖10至圖11、圖14至圖15以及圖20a至圖20d的流程圖采用指定的順序來執(zhí)行,但是在不違法發(fā)明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發(fā)明并不局限于僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執(zhí)行更多步驟,本發(fā)明亦不因此而局限。雖然本發(fā)明使用以上實施例進行說明,但需要注意的是,這些描述并非用以限縮本發(fā)明。相反地,此發(fā)明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求范圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。當前第1頁12當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1