本公開一般涉及電子器件的領(lǐng)域。更特別地,本發(fā)明的一些實(shí)施例一般地涉及用于電子設(shè)備的存儲器中的恢復(fù)算法。
背景技術(shù):
許多電子設(shè)備包括可以使用經(jīng)常體現(xiàn)為非易失性存儲器(例如閃速存儲器等)的本地、快速訪問存儲器實(shí)現(xiàn)的存儲器系統(tǒng)。在一些示例中,糾錯碼(ECC)可以用于保護(hù)數(shù)據(jù)以防原始位錯誤(RBER)。為了得到RBER多樣性優(yōu)點(diǎn),ECC碼字可以在多個管芯之上散布。ECC碼字的示例可以包括BCH碼、里德-所羅門碼、低密度奇偶校驗(yàn)(LDPC)、卷積碼、漢明碼等。為了提供對管芯故障的彈性,RAID機(jī)制可以用于存儲所有管芯的內(nèi)容的XOR。
相應(yīng)地,改進(jìn)經(jīng)加密的存儲器中的RBER性能的技術(shù)可以例如在用于電子設(shè)備的存儲器系統(tǒng)中找到實(shí)用性。
附圖說明
參照隨附各圖來提供詳細(xì)描述。在不同圖中使用相同參考數(shù)字指示類似或等同的項(xiàng)目。
圖1是依照本文所討論的各種示例的實(shí)現(xiàn)非易失性存儲器中的恢復(fù)算法的裝置的組件的示意性框圖圖示。
圖2-3是依照本文所討論的各種示例的實(shí)現(xiàn)非易失性存儲器中的寫入操作中的恢復(fù)算法的存儲器架構(gòu)的示意性框圖圖示。
圖4-5是圖示了依照本文所討論的各種實(shí)施例的實(shí)現(xiàn)非易失性存儲器中的讀取操作中的恢復(fù)算法的方法中的操作的流程圖。
圖6-10是可以適配成實(shí)現(xiàn)依照本文所討論的各種實(shí)施例的存儲器恢復(fù)管理的電子設(shè)備的示意性框圖圖示。
具體實(shí)施方式
在以下描述中,闡述眾多具體細(xì)節(jié)以便提供對各種實(shí)施例的透徹理解。然而,本發(fā)明的各種實(shí)施例可以在沒有所述具體細(xì)節(jié)的情況下實(shí)踐。在其它實(shí)例中,并未詳細(xì)描述公知的方法、過程、組件和電路以免使本發(fā)明的特定實(shí)施例模糊。另外,本發(fā)明的實(shí)施例的各種方面可以使用各種構(gòu)件來執(zhí)行,諸如集成半導(dǎo)體電路(“硬件”)、組織成一個或多個程序的計(jì)算機(jī)可讀指令(“軟件”)或硬件和軟件的某種組合。出于本公開的目的,對“邏輯”的引用應(yīng)當(dāng)意味著硬件、軟件或其某種組合。
圖1是依照本文所討論的各種示例的實(shí)現(xiàn)存儲器中的恢復(fù)算法的裝置的組件的示意性框圖圖示。參照圖1,在一些實(shí)施例中,可以包括一個或多個處理器110的中央處理單元(CPU)封裝100耦合到控制中樞120和本地存儲器130??刂浦袠?20包括存儲器控制器122和存儲器接口124。
存儲器接口124通過通信總線160耦合到遠(yuǎn)程存儲器140。在一些示例中,通信總線160可以實(shí)現(xiàn)為印刷電路板上的跡線、具有銅導(dǎo)線的線纜、光纖線纜、連接插座或以上的組合。存儲器140可以包括控制器142和一個或多個存儲器設(shè)備150。在各種實(shí)施例中,存儲器設(shè)備150中的至少一些可以使用以下來實(shí)現(xiàn):易失性存儲器,例如靜態(tài)隨機(jī)存取存儲器(SRAM)、動態(tài)隨機(jī)存取存儲器(DRAM);或非易失性存儲器,例如相變存儲器、NAND(閃速)存儲器、鐵電隨機(jī)存取存儲器(FeRAM)、基于納米線的非易失性存儲器、合并憶阻器技術(shù)的存儲器、三維(3D)交叉點(diǎn)存儲器(諸如相變存儲器(PCM))、自旋轉(zhuǎn)移力矩存儲器(STT-RAM)、磁阻隨機(jī)存取存儲器(MRAM)或NAND閃速存儲器。存儲器140中的(一個或多個)存儲器設(shè)備150的具體配置不是關(guān)鍵的。
在其中數(shù)據(jù)跨存儲器140中的存儲器設(shè)備150中的多個管芯存儲的一些示例中,ECC碼字可以類似地跨多個管芯存儲。在圖2中描繪的示例中,數(shù)據(jù)可以跨存儲器中的數(shù)個(N個)管芯拆分并且ECC碼字的部分可以存儲在每一個管芯中。N+1管芯可以用于存儲N個管芯的內(nèi)容的異或(XOR)。
存儲器中的管芯的特定數(shù)目N不是關(guān)鍵的。取決于存儲器配置,數(shù)目N可以在2和30之間變化。在一個示例中,存儲器可以配置有數(shù)目N等于18個管芯以持有數(shù)據(jù),并且288字節(jié)BCH碼字可以跨18個管芯散布,其中每個管芯存儲16字節(jié)(B)的突發(fā)(burst)。第19個管芯存儲18個管芯的內(nèi)容的XOR。通過獲取單個BCH碼字的288字節(jié)的XOR來獲取存儲在XOR管芯中的16B突發(fā)。
圖4描繪了實(shí)現(xiàn)存儲器中的恢復(fù)算法的方法的第一方面中的操作。在一些示例中,圖4中所描繪的操作可以單獨(dú)或與CPU封裝100中的存儲器控制器122中的邏輯組合地通過控制器142中的邏輯來實(shí)現(xiàn)。現(xiàn)在參照圖4,在操作410處控制器142從主機(jī)設(shè)備接收讀取請求,例如從存儲器控制器122。讀取請求可以包括針對存儲在(一個或多個)存儲器設(shè)備150中的數(shù)據(jù)塊的邏輯地址。控制器142可以將與讀取請求一起接收到的邏輯地址翻譯成(一個或多個)存儲器設(shè)備150中的物理地址,并且在操作415處可以從存儲器檢索數(shù)據(jù)。
如果在操作420處不存在針對檢索數(shù)據(jù)的讀取錯誤,則控制傳遞到操作425并且控制器142返回從存儲器檢索到的數(shù)據(jù)。相比之下,如果在操作420處存在讀取錯誤,則控制傳遞到操作430并且控制器142實(shí)現(xiàn)ECC例程以嘗試校正讀取錯誤。
如果在操作435處,ECC例程在校正讀取錯誤中成功,則控制傳遞到操作440并且控制器142返回從存儲器檢索到的數(shù)據(jù)。相比之下,如果在操作435處ECC例程在校正讀取錯誤中不成功,則控制傳遞到操作445并且控制器142實(shí)現(xiàn)恢復(fù)算法。
將參照圖3和5來描述恢復(fù)算法的一個示例。參照圖5,在操作510處計(jì)算第二XOR。在一個示例中,階段“第二XOR”應(yīng)當(dāng)是指計(jì)算來自(一個或多個)存儲器設(shè)備150中的N個管芯和XOR管芯的16字節(jié)突發(fā)的XOR。參照圖2-3,在包括用于數(shù)據(jù)的N個管芯和包含數(shù)據(jù)的XOR的附加管芯(N+1)的存儲器設(shè)備150中,通過取從指示為310A、310B到310(N)的相應(yīng)管芯讀取的數(shù)據(jù)突發(fā)和來自指示為圖3中的310(N+1)的XOR管芯的突發(fā)的XOR來確定第二XOR。
如果在操作515處第二XOR為零,其指示不存在讀取錯誤,則控制傳遞到操作520并且從(一個或多個)設(shè)備150讀取的數(shù)據(jù)被返回到發(fā)起請求的主機(jī)設(shè)備。相比之下,如果在操作515處第二XOR包括任何個1,其指示數(shù)據(jù)中存在錯誤,則控制傳遞到操作525。
如果每一個管芯中的錯誤在不同的位置處,第二XOR將包含對應(yīng)位置中的一。因此,為了試圖校正錯誤,恢復(fù)算法實(shí)現(xiàn)這樣的過程,所述過程后續(xù)翻轉(zhuǎn)對應(yīng)于第二XOR中的一的位置的數(shù)據(jù)突發(fā)中對應(yīng)位置中的位,然后重新計(jì)算第二XOR。該過程可以在第二XOR的任一端處開始并且定位第二XOR中的下一個一的位置??刂迫缓髠鬟f到操作530,并且循環(huán)發(fā)起,所述循環(huán)遍歷突發(fā)數(shù)據(jù)并且翻轉(zhuǎn)突發(fā)數(shù)據(jù)中的對應(yīng)位置處的位(操作535)。在操作540處,重新計(jì)算第二XOR。
如果在操作545處第二XOR為零,其指示不存在讀取錯誤,則控制傳遞到操作520并且將從(一個或多個)存儲器設(shè)備150讀取的數(shù)據(jù)返回到發(fā)起請求的主機(jī)設(shè)備。相比之下,如果在操作545處第二XOR包括任何個1,其指示數(shù)據(jù)中存在錯誤,則控制傳遞到操作550并且計(jì)數(shù)器的值(i)遞增。
如果在操作555處計(jì)數(shù)器的值(i)還未達(dá)到管芯的數(shù)目(N),則控制傳遞回到操作535。相比之下,如果在操作555處計(jì)數(shù)器的值(i)已達(dá)到管芯的數(shù)目(N),其指示循環(huán)已經(jīng)循環(huán)通過存儲器設(shè)備中的所有管芯,則控制傳遞到操作560。
如果在操作560處第二XOR中存在更多的一,則控制傳遞回到操作525,并且定位第二XOR中的下一個一的位置。因此,操作525到560限定按照其定位第二XOR中的每一個一的循環(huán),并且由操作535至555限定的嵌套循環(huán)限定按照其重新計(jì)算對應(yīng)于第二XOR中的一的位置處的數(shù)據(jù)突發(fā)中的位和第二XOR的循環(huán)。相比之下,如果在操作560處第二XOR中不存在更多的一,則控制傳遞到操作565并且返回錯誤。
如以上所描述的,在一些實(shí)施例中,電子設(shè)備可以體現(xiàn)為計(jì)算機(jī)系統(tǒng)。圖6圖示了依照本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)600的框圖。計(jì)算系統(tǒng)600可以包括經(jīng)由互連網(wǎng)絡(luò)(或總線)604通信的一個或多個中央處理單元(CPU)602或處理器。處理器602可以包括通用處理器、網(wǎng)絡(luò)處理器(其處理通過計(jì)算機(jī)網(wǎng)絡(luò)603傳送的數(shù)據(jù)),或其它類型的處理器(包括精簡指令集計(jì)算機(jī)(RISC)處理器或復(fù)雜指令集計(jì)算機(jī)(CISC))。而且,處理器602可以具有單核或多核設(shè)計(jì)。具有多核設(shè)計(jì)的處理器602可以在相同的集成電路(IC)管芯上集成不同類型的處理器核。而且,具有多核設(shè)計(jì)的處理器602可以實(shí)現(xiàn)為對稱或非對稱多處理器。在實(shí)施例中,一個或多個處理器602可以與圖1的處理器102相同或類似。例如,一個或多個處理器602可以包括參照圖1-3討論的控制單元120。而且,參照圖3-5討論的操作可以由系統(tǒng)600的一個或多個組件執(zhí)行。
芯片組606還可以與互連網(wǎng)絡(luò)604通信。芯片組606可以包括存儲器控制中樞(MCH)608。MCH 608可以包括與存儲器612(其可以與圖1的存儲器130相同或類似)通信的存儲器控制器610。存儲器412可以存儲數(shù)據(jù),包括指令序列,所述數(shù)據(jù)可以由CPU 602或包括在計(jì)算系統(tǒng)600中的任何其它設(shè)備運(yùn)行。在本發(fā)明的一個實(shí)施例中,存儲器612可以包括一個或多個易失性存儲(或存儲器)設(shè)備,諸如隨機(jī)存取存儲器(RAM)、動態(tài)RAM(DRAM)、同步DRAM(SDRAM)、靜態(tài)RAM(SRAM)或其它類型的存儲設(shè)備。還可以利用非易失性存儲器,諸如硬盤或固態(tài)驅(qū)動(SSD)。附加設(shè)備可以經(jīng)由互連網(wǎng)絡(luò)604進(jìn)行通信,諸如多個CPU和/或多個系統(tǒng)存儲器。
MCH 608還可以包括與顯示設(shè)備616通信的圖形接口614。在本發(fā)明的一個實(shí)施例中,圖形接口614可以經(jīng)由加速圖形端口(AGP)與顯示設(shè)備616通信。在本發(fā)明的實(shí)施例中,顯示器616(諸如平板顯示器)可以與圖形接口614通過例如信號轉(zhuǎn)換器來通信,所述信號轉(zhuǎn)換器將存儲在諸如視頻存儲器或系統(tǒng)存儲器之類的存儲設(shè)備中的圖像的數(shù)字表示翻譯成由顯示器616解釋和顯示的顯示信號。由顯示設(shè)備產(chǎn)生的顯示信號可以在由顯示器616解釋并且后續(xù)在顯示器616上顯示之前經(jīng)過各種控制設(shè)備。
中樞接口618可以允許MCH 608和輸入/輸出控制中樞(ICH)620進(jìn)行通信。ICH 620可以提供對與計(jì)算系統(tǒng)600通信的(一個或多個)I/O設(shè)備的接口。ICH 620可以通過外圍橋接器(或控制器)624與總線622通信,諸如外圍組件互連(PCI)橋接器、通用串行總線(USB)控制器或其它類型的外圍橋接器或控制器。橋接器624可以提供CPU 602與外圍設(shè)備之間的數(shù)據(jù)路徑??梢岳闷渌愋偷耐?fù)?。而且,多個總線可以與ICH 620通信,例如通過多個橋接器或控制器。而且,在本發(fā)明的各種實(shí)施例中,與ICH 620通信的其它外設(shè)可以包括集成驅(qū)動電子器件(IDE)或(一個或多個)小型計(jì)算機(jī)系統(tǒng)接口(SCSI)硬盤驅(qū)動、(一個或多個)USB端口、鍵盤、鼠標(biāo)、(一個或多個)并行端口、(一個或多個)串行端口、(一個或多個)軟盤驅(qū)動、數(shù)字輸出支持(例如數(shù)字視頻接口(DVI))或其它設(shè)備。
總線622可以與音頻設(shè)備626、一個或多個盤驅(qū)動628和網(wǎng)絡(luò)接口設(shè)備630(其與計(jì)算機(jī)網(wǎng)絡(luò)603通信)通信。其它設(shè)備可以經(jīng)由總線622進(jìn)行通信。而且,在本發(fā)明的一些實(shí)施例中,各種組件(諸如網(wǎng)絡(luò)接口設(shè)備630)可以與MCH 608通信。此外,處理器602和本文所討論的一個或多個其它組件可以組合以形成單個芯片(例如以提供片上系統(tǒng)(SOC))。另外,在本發(fā)明的其它實(shí)施例中,圖形加速器616可以包括在MCH 608內(nèi)。
另外,計(jì)算系統(tǒng)600可以包括易失性和/或非易失性存儲器(或存儲裝置)。例如,非易失性存儲器可以包括以下中的一個或多個:只讀存儲器(ROM)、可編程ROM(PROM)、可擦除PROM(EPROM)、電EPROM(EEPROM)、盤驅(qū)動(例如628)、軟盤、致密盤ROM(CD-ROM)、數(shù)字多功能盤(DVD)、閃速存儲器、磁光盤或能夠存儲電子數(shù)據(jù)(包括指令)的其它類型的非易失性機(jī)器可讀介質(zhì)。
圖7圖示了根據(jù)本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)700的框圖。系統(tǒng)700可以包括一個或多個處理器702-1至702-N(在本文中一般稱為“多個處理器702”或“處理器702”)。處理器702可以經(jīng)由互連網(wǎng)絡(luò)或總線704通信。每一個處理器可以包括各種組件,為了清楚起見僅參照處理器702-1討論其中的一些。相應(yīng)地,其余處理器702-2至702-N中的每一個可以包括參照處理器702-1討論的相同或類似的組件。
在實(shí)施例中,處理器702-1可以包括一個或多個處理器核706-1至706-N(在本文中稱為“多個核706”或更一般地稱為“核706”)、共享高速緩存708、路由器710和/或處理器控制邏輯或單元720。處理器核706可以實(shí)現(xiàn)在單個集成電路(IC)芯片上。而且,芯片可以包括一個或多個共享和/或私有高速緩存(諸如高速緩存708)、總線或互連(諸如總線或互連網(wǎng)絡(luò)712)、存儲器控制器或其它組件。
在一個實(shí)施例中,路由器710可以用于在處理器702-1和/或系統(tǒng)700的各種組件之間進(jìn)行通信。而且,處理器702-1可以包括多于一個路由器710。另外,多個路由器710可以處于通信中以使得能夠?qū)崿F(xiàn)處理器702-1內(nèi)部或外部的各種組件之間的數(shù)據(jù)路由。
共享高速緩存708可以存儲由處理器702-1的一個或多個組件(諸如核706)利用的數(shù)據(jù)(例如包括指令)。例如,共享高速緩存708可以在本地對存儲在存儲器714中的數(shù)據(jù)進(jìn)行緩存以供處理器702的組件更快地訪問。在實(shí)施例中,高速緩存708可以包括中級高速緩存(諸如2級(L2)、3級(L3)、4級(L4)或其它級高速緩存)、末級高速緩存(LLC)和/或其組合。而且,處理器702-1的各種組件可以直接、通過總線(例如總線712)和/或存儲器控制器或中樞而與共享高速緩存708通信。如圖7中所示,在一些實(shí)施例中,一個或多個核706可以包括1級(L1)高速緩存716-1(在本文中一般稱為“L1高速緩存716”)。在一個實(shí)施例中,控制單元720可以包括實(shí)現(xiàn)以上參照圖2中的存儲器控制器122描述的操作的邏輯。
圖8圖示了根據(jù)本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)的處理器核706和其它組件的部分的框圖。在一個實(shí)施例中,圖8中所示的箭頭圖示了指令通過核706的流動方向。一個或多個處理器核(諸如處理器核706)可以實(shí)現(xiàn)在單個集成電路芯片(或管芯)上,諸如參照圖7所討論的。而且,芯片可以包括一個或多個共享和/或私有高速緩存(例如圖7的高速緩存708)、互連(例如圖7的互連704和/或112)、控制單元、存儲器控制器或其它組件。
如圖8中所圖示的,處理器核706可以包括提取單元802以提取供核706執(zhí)行的指令(包括具有條件分支的指令)。指令可以從諸如存儲器714之類的任何存儲設(shè)備提取。核706還可以包括解碼單元804以解碼所提取的指令。例如,解碼單元804可以將所提取的指令解碼成多個uop(微操作)。
此外,核706可以包括調(diào)度單元806。調(diào)度單元806可以執(zhí)行與存儲經(jīng)解碼的指令(例如從解碼單元804接收的)相關(guān)聯(lián)的各種操作,直到指令準(zhǔn)備好分派為止,例如直到經(jīng)解碼的指令的所有源值變成可用為止。在一個實(shí)施例中,調(diào)度單元806可以向運(yùn)行單元808調(diào)度和/或發(fā)出(或分派)經(jīng)解碼的指令以供運(yùn)行。運(yùn)行單元808可以在它們被解碼(例如通過解碼單元804)并且分派(例如通過調(diào)度單元806)之后運(yùn)行所分派的指令。在實(shí)施例中,運(yùn)行單元808可以包括多于一個運(yùn)行單元。運(yùn)行單元808還可以執(zhí)行各種算術(shù)操作,諸如加法、減法、乘法和/或除法,并且可以包括一個或多個算術(shù)邏輯單元(ALU)。在實(shí)施例中,協(xié)處理器(未示出)可以結(jié)合運(yùn)行單元808而執(zhí)行各種算術(shù)操作。
另外,運(yùn)行單元808可以亂序運(yùn)行指令。因而,處理器核706在一個實(shí)施例中可以是亂序處理器核。核706還可以包括引退單元810。引退單元810可以在已運(yùn)行的指令被提交之后引退它們。在實(shí)施例中,已執(zhí)行的指令的引退可以造成處理器狀態(tài)從指令的運(yùn)行被提交、由指令使用的物理寄存器被解除分配等。
核706還可以包括總線單元714以使得能夠?qū)崿F(xiàn)經(jīng)由一個或多個總線(例如總線804和/或812)的處理器核706的組件與其它組件(諸如參照圖8討論的組件)之間的通信。核706還可以包括一個或多個寄存器816以存儲由核706的各種組件訪問的數(shù)據(jù)(諸如涉及功率消耗狀態(tài)設(shè)置的值)。
另外,即便圖7圖示了控制單元720經(jīng)由互連812耦合到核706,但是在各種實(shí)施例中控制單元720可以位于其它地方,諸如在核706內(nèi)部,經(jīng)由總線704耦合到核等。
在一些實(shí)施例中,本文所討論的一個或多個組件可以體現(xiàn)為片上系統(tǒng)(SOC)設(shè)備。圖9圖示了依照實(shí)施例的SOC封裝的框圖。如圖9中所圖示的,SOC 902包括一個或多個中央處理單元(CPU)核920、一個或多個圖形處理器單元(GPU)核930、輸入/輸出(I/O)接口940和存儲器控制器942。SOC封裝902的各種組件可以耦合到互連或總線,諸如本文參照其它圖所討論的。而且,SOC封裝902可以包括更多或更少的組件,諸如本文參照其它圖討論的那些。另外,SOC封裝902的每一個組件可以包括一個或多個其它組件,例如如參照本文中的其它圖所討論的。在一個實(shí)施例中,SOC封裝902(及其組件)提供在一個或多個集成電路(IC)管芯上,例如這些管芯被封裝到單個半導(dǎo)體設(shè)備中。
如圖9中所圖示的,SOC封裝902經(jīng)由存儲器控制器942耦合到存儲器960(其可以與本文參照其它圖討論的存儲器類似或相同)。在實(shí)施例中,存儲器960(或其部分)可以集成在SOC封裝902上。
I/O接口940可以例如經(jīng)由諸如本文參照其它圖所討論的互連和/或總線耦合到一個或多個I/O設(shè)備970。(一個或多個)I/O設(shè)備970可以包括以下中的一個或多個:鍵盤、鼠標(biāo)、觸摸墊、顯示器、圖像/視頻捕獲設(shè)備(諸如相機(jī)或攝錄像機(jī)/視頻記錄器)、觸摸屏、揚(yáng)聲器等。
圖10圖示了根據(jù)本發(fā)明的實(shí)施例的布置在點(diǎn)對點(diǎn)(PtP)配置中的計(jì)算系統(tǒng)1000。特別地,圖10示出其中處理器、存儲器和輸入/輸出設(shè)備通過數(shù)個點(diǎn)對點(diǎn)接口互連的系統(tǒng)。參照圖2討論的操作可以由系統(tǒng)1000的一個或多個組件執(zhí)行。
如圖10中所圖示的,系統(tǒng)100可以包括若干處理器,為了清楚起見僅示出其中的兩個——處理器1002和1004。處理器1002和1004可以每一個包括本地存儲器控制器中樞(MCH)1006和1008以使得能夠?qū)崿F(xiàn)與存儲器1010和1012的通信。在一些實(shí)施例中,MCH 1006和1008可以包括圖1的存儲器控制器120和/或邏輯125。
在實(shí)施例中,處理器1002和1004可以是參照圖7討論的處理器702中的一個。處理器1002和1004可以經(jīng)由點(diǎn)對點(diǎn)(PtP)接口1014分別使用PtP接口電路1016和1018來交換數(shù)據(jù)。而且,處理器1002和1004可以每一個經(jīng)由各個PtP接口1022和1024使用點(diǎn)對點(diǎn)接口電路1026、1028、1030和1032與芯片組1020交換數(shù)據(jù)。芯片組1020還可以經(jīng)由高性能圖形接口1036例如使用PtP接口電路1037與高性能圖形電路1034交換數(shù)據(jù)。
如圖10中所示,圖1的核106和/或高速緩存108中的一個或多個可以位于處理器902和904內(nèi)。然而,本發(fā)明的其它實(shí)施例可以存在于圖9的系統(tǒng)900內(nèi)的其它電路、邏輯單元或設(shè)備中。另外,本發(fā)明的其它實(shí)施例可以遍及圖9中圖示的若干電路、邏輯單元或設(shè)備而分布。
芯片組920可以使用PtP接口電路941與總線940通信??偩€940可以具有與其通信的一個或多個設(shè)備,諸如總線橋接器942和I/O設(shè)備943。經(jīng)由總線944,總線橋接器943可以與其它設(shè)備通信,諸如鍵盤/鼠標(biāo)945、通信設(shè)備946(諸如調(diào)制解調(diào)器、網(wǎng)絡(luò)接口設(shè)備或可以與計(jì)算機(jī)網(wǎng)絡(luò)803通信的其它通信設(shè)備)、音頻I/O設(shè)備和/或數(shù)據(jù)存儲設(shè)備948。數(shù)據(jù)存儲設(shè)備948(其可以是硬盤驅(qū)動或基于NAND閃速的固態(tài)驅(qū)動)可以存儲可以由處理器902和/或904運(yùn)行的代碼949。
以下示例關(guān)于另外的實(shí)施例。
示例1是一種存儲器,包括存儲器設(shè)備和控制器,所述控制器耦合到存儲器設(shè)備并且包括用于進(jìn)行以下的邏輯:從主機(jī)設(shè)備接收讀取存儲在存儲器設(shè)備中的數(shù)據(jù)的讀取請求,其中數(shù)據(jù)的部分存儲在多個(N個)管芯中的每一個中并且與數(shù)據(jù)相關(guān)聯(lián)的糾錯碼(ECC)的部分存儲在所述多個(N個)管芯中的每一個中;響應(yīng)于讀取請求,從存儲器設(shè)備檢索數(shù)據(jù);對從存儲器設(shè)備檢索到的數(shù)據(jù)執(zhí)行糾錯碼(ECC)校驗(yàn);以及響應(yīng)于從存儲器設(shè)備檢索到的數(shù)據(jù)上的ECC校驗(yàn)中的錯誤而調(diào)用恢復(fù)算法。
在示例2中,示例1的主題可以可選地包括其中數(shù)據(jù)包括ECC碼字的布置,并且ECC校驗(yàn)包括評估對數(shù)據(jù)和ECC碼執(zhí)行異或(XOR)運(yùn)算的結(jié)果。
在示例3中,示例1-2中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯從對檢索自存儲器設(shè)備的數(shù)據(jù)執(zhí)行XOR運(yùn)算的結(jié)果和檢索自存儲器設(shè)備的數(shù)據(jù)來計(jì)算第二XOR。
在示例4中,示例1-3中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在執(zhí)行第二XOR運(yùn)算的結(jié)果為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例5中,示例1-4中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在第二XOR的內(nèi)容為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例6中,示例1-5中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在第二XOR的內(nèi)容為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例7中,示例1-6中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在第二XOR的內(nèi)容包括1時向主機(jī)設(shè)備返回讀取錯誤。
示例8是一種電子設(shè)備,包括處理器、存儲器設(shè)備和控制器,所述控制器耦合到存儲器設(shè)備并且包括用于進(jìn)行以下的邏輯:從主機(jī)設(shè)備接收讀取存儲在存儲器設(shè)備中的數(shù)據(jù)的讀取請求,其中數(shù)據(jù)的部分存儲在多個(N個)管芯中的每一個中并且與數(shù)據(jù)相關(guān)聯(lián)的糾錯碼(ECC)的部分存儲在所述多個(N個)管芯中的每一個中;響應(yīng)于讀取請求,從存儲器設(shè)備檢索數(shù)據(jù);對從存儲器設(shè)備檢索到的數(shù)據(jù)執(zhí)行糾錯碼(ECC)校驗(yàn);以及響應(yīng)于從存儲器設(shè)備檢索到的數(shù)據(jù)上的ECC校驗(yàn)中的錯誤而調(diào)用恢復(fù)算法。
在示例9中,示例8的主題可以可選地包括其中數(shù)據(jù)包括ECC碼字的布置,并且ECC校驗(yàn)包括評估對數(shù)據(jù)和ECC碼執(zhí)行異或(XOR)運(yùn)算的結(jié)果。
在示例10中,示例8-9中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯從對檢索自存儲器設(shè)備的數(shù)據(jù)執(zhí)行XOR運(yùn)算的結(jié)果和檢索自存儲器設(shè)備的數(shù)據(jù)來計(jì)算第二XOR。
在示例11中,示例8-10中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在執(zhí)行第二XOR運(yùn)算的結(jié)果為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例12中,示例8-11中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在第二XOR的內(nèi)容為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例13中,示例8-12中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在第二XOR的內(nèi)容為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例14中,示例8-13中任一個的主題可以可選地包括至少部分地包括硬件邏輯的邏輯,所述邏輯在第二XOR的內(nèi)容包括1時向主機(jī)設(shè)備返回讀取錯誤。
示例15是一種計(jì)算機(jī)程序產(chǎn)品,包括存儲在非暫時性計(jì)算機(jī)可讀介質(zhì)上的邏輯指令,所述邏輯指令在由耦合到存儲器設(shè)備的控制器運(yùn)行時將控制器配置成:從主機(jī)設(shè)備接收讀取到存儲器設(shè)備的數(shù)據(jù)行的讀取請求,其中數(shù)據(jù)跨多個(N個)管芯散布并且包括跨所述多個(N個)管芯散布的糾錯碼(ECC);從存儲器設(shè)備檢索數(shù)據(jù)行;對從存儲器設(shè)備檢索到的數(shù)據(jù)行執(zhí)行糾錯碼(ECC)校驗(yàn);以及響應(yīng)于從存儲器設(shè)備檢索到的數(shù)據(jù)行上的ECC校驗(yàn)中的錯誤而調(diào)用恢復(fù)算法。
在示例16中,示例15的主題可以可選地包括其中數(shù)據(jù)包括ECC碼字的布置,并且ECC校驗(yàn)包括評估對數(shù)據(jù)和ECC碼執(zhí)行異或(XOR)運(yùn)算的結(jié)果。
在示例17中,示例15-16中任一個的主題可以可選地包括存儲在非暫時性計(jì)算機(jī)可讀介質(zhì)上的邏輯指令,所述邏輯指令在由耦合到存儲器設(shè)備的控制器運(yùn)行時,將控制器配置成從對檢索自存儲器設(shè)備的數(shù)據(jù)執(zhí)行XOR運(yùn)算的結(jié)果和檢索自存儲器設(shè)備的數(shù)據(jù)來計(jì)算第二XOR。
在示例18中,示例15-17中任一個的主題可以可選地包括存儲在非暫時性計(jì)算機(jī)可讀介質(zhì)上的邏輯指令,所述邏輯指令在由耦合到存儲器設(shè)備的控制器運(yùn)行時,將控制器配置成在執(zhí)行第二XOR運(yùn)算的結(jié)果為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例19中,示例15-18中任一個的主題可以可選地包括存儲在非暫時性計(jì)算機(jī)可讀介質(zhì)上的邏輯指令,所述邏輯指令在由耦合到存儲器設(shè)備的控制器運(yùn)行時,將控制器配置成在第二XOR的內(nèi)容為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例20中,示例15-19中任一個的主題可以可選地包括存儲在非暫時性計(jì)算機(jī)可讀介質(zhì)上的邏輯指令,所述邏輯指令在由耦合到存儲器設(shè)備的控制器運(yùn)行時,將控制器配置成在第二XOR的內(nèi)容為全零時向主機(jī)設(shè)備返回數(shù)據(jù)。
在示例21中,示例15-20中任一個的主題可以可選地包括存儲在非暫時性計(jì)算機(jī)可讀介質(zhì)上的邏輯指令,所述邏輯指令在由耦合到存儲器設(shè)備的控制器運(yùn)行時,將控制器配置成在第二XOR的內(nèi)容包括1時向主機(jī)設(shè)備返回讀取錯誤。
在本發(fā)明的各種實(shí)施例中,本文例如參照圖1-10所討論的操作可以實(shí)現(xiàn)為硬件(例如電路)、軟件、固件、微代碼或它們的組合,所述組合可以被提供為計(jì)算機(jī)程序產(chǎn)品,例如包括有形(例如非暫時性)機(jī)器可讀或計(jì)算機(jī)可讀介質(zhì),所述介質(zhì)具有存儲在其上的用于將計(jì)算機(jī)編程為執(zhí)行本文所討論的處理的指令(或軟件過程)。而且,術(shù)語“邏輯”可以包括,作為示例,軟件、硬件或軟件和硬件的組合。機(jī)器可讀介質(zhì)可以包括諸如本文所討論的那些之類的存儲設(shè)備。
在說明書中對“一個實(shí)施例”或“一實(shí)施例”的引用意味著結(jié)合實(shí)施例描述的特定特征、結(jié)構(gòu)或特性可以包括在至少一種實(shí)現(xiàn)中。短語“在一個實(shí)施例中”在說明書各處出現(xiàn)可以或可以不都是指相同的實(shí)施例。
而且,在說明書和權(quán)利要求中,可以使用術(shù)語“耦合”和“連接”連同其派生詞。在本發(fā)明的一些實(shí)施例中,“連接”可以用于指示兩個或更多元件與彼此直接物理或電氣接觸?!榜詈稀笨梢砸馕吨鴥蓚€或更多元件處于直接物理或電氣接觸。然而,“耦合”還可以意味著兩個或更多元件可以不與彼此直接接觸,但是仍舊可以與彼此協(xié)作或交互。
因此,盡管已經(jīng)以特定于結(jié)構(gòu)特征和/或方法動作的語言描述了本發(fā)明的實(shí)施例,但是要理解的是,所要求保護(hù)的主題可以不限于所描述的特定特征或動作。而是,特定特征和動作作為實(shí)現(xiàn)所要求保護(hù)的主題的樣例形式而公開。