在存儲(chǔ)器錯(cuò)誤檢測(cè)和存儲(chǔ)器錯(cuò)誤校正之間動(dòng)態(tài)選擇的制作方法
【專(zhuān)利說(shuō)明】
【背景技術(shù)】
[0001]計(jì)算機(jī)存儲(chǔ)器易受錯(cuò)誤侵害。例如,電氣和/或磁干擾可引起存儲(chǔ)在存儲(chǔ)器(例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM))內(nèi)的位非有意改變狀態(tài)。為了減輕這樣的存儲(chǔ)器錯(cuò)誤,可在DRAM內(nèi)存儲(chǔ)附加的錯(cuò)誤保護(hù)位,并且存儲(chǔ)器控制器可使用這些附加錯(cuò)誤保護(hù)位來(lái)檢測(cè)和校正這樣的存儲(chǔ)器錯(cuò)誤??梢岳眠@些附加位的存儲(chǔ)來(lái)提供不同水平的錯(cuò)誤保護(hù)。例如,錯(cuò)誤檢測(cè)的基本形式包含在存儲(chǔ)器內(nèi)存儲(chǔ)奇偶位。存儲(chǔ)奇偶位允許存儲(chǔ)器控制器檢測(cè)單個(gè)位的錯(cuò)誤。盡管奇偶性使能單個(gè)位的簡(jiǎn)單錯(cuò)誤檢測(cè),但是可通過(guò)存儲(chǔ)附加錯(cuò)誤保護(hù)位來(lái)實(shí)施更復(fù)雜的錯(cuò)誤保護(hù)。例如,存儲(chǔ)在存儲(chǔ)器中的附加位內(nèi)的糾錯(cuò)碼(ECC) —般使能檢測(cè)和校正錯(cuò)誤。示例的糾錯(cuò)碼是單錯(cuò)誤校正雙錯(cuò)誤檢測(cè)(SECDED)碼。
【附圖說(shuō)明】
[0002]圖1A描繪了根據(jù)本文公開(kāi)的教導(dǎo)實(shí)施的示例計(jì)算系統(tǒng)。
[0003]圖1B是圖1A的示例系統(tǒng)的示例實(shí)施方式。
[0004]圖2描繪了可以結(jié)合圖1A和IB的示例系統(tǒng)使用以在存儲(chǔ)器錯(cuò)誤檢測(cè)和存儲(chǔ)器錯(cuò)誤校正之間動(dòng)態(tài)選擇的示例裝置。
[0005]圖3A是表示可被執(zhí)行以實(shí)施圖2的示例裝置以最初寫(xiě)到存儲(chǔ)器頁(yè)的示例機(jī)器可讀指令的流程圖。
[0006]圖3B是表示圖3A的示例指令的詳細(xì)實(shí)施方式的流程圖。
[0007]圖4是表示可被執(zhí)行以實(shí)施圖2的示例裝置以從存儲(chǔ)器頁(yè)進(jìn)行讀取的示例機(jī)器可讀指令的流程圖。
[0008]圖5是表示可被執(zhí)行以實(shí)施圖2的示例裝置以寫(xiě)到存儲(chǔ)器頁(yè)的示例機(jī)器可讀指令的流程圖。
【具體實(shí)施方式】
[0009]本文公開(kāi)的示例方法、裝置和制品可以用于針對(duì)存儲(chǔ)器頁(yè),在使能不具有校正的存儲(chǔ)器錯(cuò)誤檢測(cè)與使能存儲(chǔ)器錯(cuò)誤檢測(cè)和校正之間動(dòng)態(tài)選擇。錯(cuò)誤檢測(cè)當(dāng)與錯(cuò)誤校正相比時(shí)提供相對(duì)較少的錯(cuò)誤保護(hù)。然而,錯(cuò)誤校正在能量、存儲(chǔ)和/或處理延遲方面比錯(cuò)誤檢測(cè)更昂貴。本文公開(kāi)的示例使能對(duì)存儲(chǔ)器的不同部分(例如不同存儲(chǔ)器頁(yè))的不同水平的保護(hù)。S卩,本文公開(kāi)的示例有用于選擇性提供存儲(chǔ)器的一些存儲(chǔ)器頁(yè),其具有使能錯(cuò)誤檢測(cè)而不具有存儲(chǔ)在那些存儲(chǔ)器頁(yè)中的數(shù)據(jù)的錯(cuò)誤校正的錯(cuò)誤保護(hù)信息,同時(shí)選擇性提供其它存儲(chǔ)器頁(yè),其具有使能錯(cuò)誤檢測(cè)以及存儲(chǔ)在那些存儲(chǔ)器頁(yè)中的數(shù)據(jù)的錯(cuò)誤校正的錯(cuò)誤保護(hù)信息。選擇性提供具有較少錯(cuò)誤保護(hù)位以使能錯(cuò)誤檢測(cè)而不具有錯(cuò)誤校正的一些存儲(chǔ)器頁(yè)以及具有相對(duì)更多的錯(cuò)誤保護(hù)位以使能錯(cuò)誤檢測(cè)和錯(cuò)誤校正的其它存儲(chǔ)器頁(yè),這減小了能量、存儲(chǔ)和/或處理成本并且提高了總體系統(tǒng)性能。本文公開(kāi)的示例還可用于將被使能用于錯(cuò)誤檢測(cè)和校正的存儲(chǔ)器頁(yè)切換到包含不具有校正的錯(cuò)誤檢測(cè)的更低水平保護(hù),并且將被使能用于不具有校正的錯(cuò)誤檢測(cè)的存儲(chǔ)器頁(yè)切換到包含錯(cuò)誤檢測(cè)和錯(cuò)誤校正的更高水平錯(cuò)誤保護(hù)。本文公開(kāi)的在存儲(chǔ)器錯(cuò)誤檢測(cè)和存儲(chǔ)器錯(cuò)誤校正之間動(dòng)態(tài)切換還減小了能量、存儲(chǔ)和/或處理成本并且提高了總體系統(tǒng)性能。
[0010]減輕存儲(chǔ)器錯(cuò)誤的現(xiàn)有技術(shù)包括在存儲(chǔ)器中存儲(chǔ)附加的錯(cuò)誤保護(hù)位,并且將存儲(chǔ)器控制器配置為使用這些附加錯(cuò)誤保護(hù)位來(lái)檢測(cè)和校正這樣的存儲(chǔ)器錯(cuò)誤。例如,存儲(chǔ)器芯片可存儲(chǔ)包括八個(gè)數(shù)據(jù)位和單個(gè)錯(cuò)誤保護(hù)位的九個(gè)位??梢酝ㄟ^(guò)存儲(chǔ)更少或更多的錯(cuò)誤保護(hù)位來(lái)提供不同水平的錯(cuò)誤保護(hù)。例如,錯(cuò)誤檢測(cè)的基本形式包含在存儲(chǔ)器內(nèi)存儲(chǔ)奇偶位。奇偶位允許存儲(chǔ)器控制器檢測(cè)單個(gè)位錯(cuò)誤。與對(duì)應(yīng)組的η位(例如八位)結(jié)合存儲(chǔ)奇偶位,并且取決于η位組是具有奇數(shù)或還是偶數(shù)量的被設(shè)定為“I”的值的位來(lái)將其值設(shè)定為一“I”或零“O”。在存儲(chǔ)器事務(wù)期間,如果存儲(chǔ)器控制器基于對(duì)應(yīng)奇偶位預(yù)期看到偶數(shù)數(shù)量的具有“I”的值的位,但是相反看到奇數(shù)數(shù)量的具有“I”的值的位,則存儲(chǔ)器控制器檢測(cè)到在對(duì)應(yīng)η位中存儲(chǔ)錯(cuò)誤。盡管奇偶性允許存儲(chǔ)器控制器檢測(cè)存儲(chǔ)的數(shù)據(jù)中的錯(cuò)誤,但是存儲(chǔ)器控制器不能校正錯(cuò)誤,因?yàn)榇鎯?chǔ)器控制器基于奇偶位不知道哪個(gè)位包含錯(cuò)誤。錯(cuò)誤檢測(cè)的其它類(lèi)型包括循環(huán)冗余校驗(yàn)、校驗(yàn)和等。
[0011]比奇偶位相對(duì)更加魯棒的錯(cuò)誤保護(hù)可以通過(guò)在存儲(chǔ)器中存儲(chǔ)附加的錯(cuò)誤保護(hù)位來(lái)實(shí)施??梢栽诖鎯?chǔ)器的附加位中存儲(chǔ)糾錯(cuò)碼(ECC)來(lái)使能檢測(cè)和校正錯(cuò)誤。單錯(cuò)誤校正雙錯(cuò)誤檢測(cè)(SECDED)碼是使能64位字(每個(gè)貢獻(xiàn)八個(gè)數(shù)據(jù)位的八個(gè)存儲(chǔ)器芯片)內(nèi)的單個(gè)位錯(cuò)誤被校正并且64位字內(nèi)的雙位錯(cuò)誤(例如在兩個(gè)位中的錯(cuò)誤)被檢測(cè)到的ECC。為了實(shí)施該形式的錯(cuò)誤校正,跨存儲(chǔ)64位字的多個(gè)芯片或存儲(chǔ)模塊的陣列散布SECDED碼(例如八個(gè)存儲(chǔ)器芯片中的每個(gè)存儲(chǔ)SECDED碼的單個(gè)位),從而任何一個(gè)存儲(chǔ)器芯片的故障將僅影響SECDED碼的一個(gè)位。使用SECDED的一些形式的錯(cuò)誤校正包括“chipkill”和“chipkill-2”??墒褂酶冗M(jìn)的糾錯(cuò)碼來(lái)校正多個(gè)位。
[0012]糾錯(cuò)碼(例如SECDED碼)在能量、存儲(chǔ)和/或處理方面是成本高的。例如,訪問(wèn)SECDED保護(hù)的存儲(chǔ)器中的64個(gè)數(shù)據(jù)位包含檢索72個(gè)位(例如64個(gè)數(shù)據(jù)位加上八個(gè)SECDED位)來(lái)讀取64位的數(shù)據(jù)。為了使用SE⑶ED碼實(shí)施單個(gè)chipkill,每個(gè)芯片可以貢獻(xiàn)僅一個(gè)位,因?yàn)镾E⑶ED碼可僅校正在72位中的單個(gè)位。在基于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)的系統(tǒng)中,對(duì)使用漢明碼(一種類(lèi)型的ECC)的ECC保護(hù)的存儲(chǔ)器的訪問(wèn)激活72個(gè)DRAM芯片以檢索64字節(jié)的緩存行。激活所有這些芯片意味著當(dāng)使用X8DIMM和封閉的頁(yè)策略時(shí)針對(duì)每個(gè)緩存行訪問(wèn),讀取64千字節(jié)(kB)的數(shù)據(jù)(加上8kB的ECC)到行緩沖器。chipkill的更多近來(lái)的實(shí)施方式采用基于符號(hào)的里德-所羅門(mén)碼(另一類(lèi)型的ECC),其激活16個(gè)芯片并且將最小緩存行大小限制在128字節(jié)。相比之下,不具有chipkill的典型系統(tǒng)要求激活僅8個(gè)芯片。激活和讀取數(shù)據(jù)以實(shí)施糾錯(cuò)碼(例如chipkill)消耗顯著量的功率,并且大多數(shù)數(shù)據(jù)讀取對(duì)于除了執(zhí)行錯(cuò)誤校正之外的任何目的通常是沒(méi)用的。而且,較大量的芯片的激活(例如比不具有錯(cuò)誤校正的系統(tǒng)更大)以支持錯(cuò)誤校正可減小在存儲(chǔ)器內(nèi)的并行性。例如,在實(shí)施錯(cuò)誤校正的系統(tǒng)內(nèi),存儲(chǔ)器芯片可能變成暫時(shí)不可用于支持其它數(shù)據(jù)訪問(wèn),這可能導(dǎo)致排隊(duì)延遲。
[0013]很多存儲(chǔ)器系統(tǒng)是基于硬件的并且被實(shí)施為使得提供糾錯(cuò)碼用于存儲(chǔ)在存儲(chǔ)器中的所有數(shù)據(jù)。針對(duì)存儲(chǔ)器中存儲(chǔ)的所有數(shù)據(jù)實(shí)施糾錯(cuò)碼的這樣的系統(tǒng)使用顯著量的能量、存儲(chǔ)和/或處理。不同于這樣的現(xiàn)有技術(shù),本文公開(kāi)的示例選擇性存儲(chǔ)與糾錯(cuò)碼結(jié)合的一些數(shù)據(jù),同時(shí)選擇性存儲(chǔ)與不使能錯(cuò)誤校正的相對(duì)更簡(jiǎn)單的檢錯(cuò)碼結(jié)合的其它數(shù)據(jù),因此減小要求的能量、存儲(chǔ)和/或處理,因?yàn)楦?jiǎn)單的檢錯(cuò)碼需要激活存儲(chǔ)器模塊的較少存儲(chǔ)器芯片(例如具有單個(gè)子陣列訪問(wèn)(SSA)以從存儲(chǔ)器模塊的單個(gè)DARAM芯片檢索整個(gè)緩存行和/或具有多個(gè)子陣列訪問(wèn)(MSA)能力以從存儲(chǔ)器模塊的少于所有DRAM芯片檢索整個(gè)緩存行的存儲(chǔ)器模塊)和/或激活單個(gè)芯片內(nèi)的較少字線和/或位線。本文公開(kāi)的示例可使用不同標(biāo)準(zhǔn)來(lái)確定哪些存儲(chǔ)器頁(yè)提供有錯(cuò)誤檢測(cè)和錯(cuò)誤校正位(例如ECC)并且哪些存儲(chǔ)器頁(yè)提供有相對(duì)更簡(jiǎn)單的錯(cuò)誤檢測(cè)位,其不提供錯(cuò)誤校正能力。例如,存儲(chǔ)在存儲(chǔ)器中的一些數(shù)據(jù)可包括不可重建內(nèi)容(例如臟文件I/O緩沖器)并且因此應(yīng)當(dāng)被存儲(chǔ)在具有使能錯(cuò)誤檢測(cè)和校正的錯(cuò)誤保護(hù)位的存儲(chǔ)器中。然而,存儲(chǔ)在存儲(chǔ)器中的其它數(shù)據(jù)可能是更容易可重建的(例如可從數(shù)據(jù)源再讀取的干凈文件緩沖器),并且因此可被存儲(chǔ)在被提供有使能錯(cuò)誤檢測(cè)但不具有錯(cuò)誤校正的成本較低的錯(cuò)誤保護(hù)位(例如奇偶性)的存儲(chǔ)器中。附加地,在本文公開(kāi)的一些示例中,可以將存儲(chǔ)使能錯(cuò)誤檢測(cè)和校正的錯(cuò)誤保護(hù)位的存儲(chǔ)器頁(yè)改變?yōu)榇鎯?chǔ)使能錯(cuò)誤檢測(cè)但不具有校正的成本較低的錯(cuò)誤保護(hù)位,并且可將存儲(chǔ)使能錯(cuò)誤檢測(cè)但不具有校正的成本較低的錯(cuò)誤保護(hù)位的存儲(chǔ)器頁(yè)改變?yōu)榇鎯?chǔ)使能錯(cuò)誤檢測(cè)和錯(cuò)誤校正能力的錯(cuò)誤保護(hù)位。雖然本文討論了錯(cuò)誤保護(hù)和/或糾錯(cuò)碼的具體類(lèi)型(例如ECC、奇偶性),任何適當(dāng)類(lèi)型的錯(cuò)誤保護(hù)和/或檢錯(cuò)碼和技術(shù)可與本文公開(kāi)的選擇性提供不具有校正的錯(cuò)誤檢測(cè)以及錯(cuò)誤檢測(cè)和校正能力的示例一起使用。例如,可以在本文公開(kāi)的示例中使用任何類(lèi)型的糾錯(cuò)碼,例如里德-所羅門(mén)碼(例如基于符號(hào)的保護(hù)、BCH碼等)、漢明碼、雙重奇偶性(例如第一重指出哪個(gè)芯片失效并且第二重全局奇偶性恢復(fù)失效的位)等??梢栽诒疚墓_(kāi)的示例中使用任何次數(shù)的檢錯(cuò)碼,例如簡(jiǎn)單的奇偶性、校驗(yàn)和、循環(huán)冗余校驗(yàn)(CRC)等。
[0014]圖1A圖示了可以用于在與存儲(chǔ)器頁(yè)結(jié)合的存儲(chǔ)器錯(cuò)誤檢測(cè)和存儲(chǔ)器錯(cuò)誤校正之間動(dòng)態(tài)選擇的示例計(jì)算系統(tǒng)100。在圖示的示例中,緩沖器120 (例如轉(zhuǎn)譯后備緩沖器)存儲(chǔ)可被設(shè)定為第一值以指示存儲(chǔ)器頁(yè)存儲(chǔ)錯(cuò)誤保護(hù)信息來(lái)檢測(cè)但不校正存儲(chǔ)器頁(yè)中的錯(cuò)誤的標(biāo)志。由圖示的示例的緩沖器120存儲(chǔ)的標(biāo)志可被設(shè)定為第二值以指示錯(cuò)誤保護(hù)信息用于檢測(cè)和校正存儲(chǔ)器頁(yè)的錯(cuò)誤。在圖示的示例中,存儲(chǔ)器控制器126接收基于該標(biāo)志的請(qǐng)求以當(dāng)該標(biāo)志被設(shè)定為第一值時(shí)使能不具有校正的錯(cuò)誤檢測(cè)用于存儲(chǔ)器頁(yè)。圖示的示例的存儲(chǔ)器控制器126接收基于該標(biāo)志的請(qǐng)求以當(dāng)該標(biāo)志被設(shè)定為第二值時(shí)使能錯(cuò)誤檢測(cè)和校正用于存儲(chǔ)器頁(yè)。
[0015]圖1B是可用于在與存儲(chǔ)器頁(yè)結(jié)合的實(shí)施存儲(chǔ)器錯(cuò)誤檢測(cè)和實(shí)施存儲(chǔ)器錯(cuò)誤校正之間動(dòng)態(tài)選擇的圖1A的示例系統(tǒng)100的示例實(shí)施方式。在圖示的示例中,操作系統(tǒng)102使能存儲(chǔ)器頁(yè)被實(shí)施有不同水平的錯(cuò)誤保護(hù)(例如不具有校正的存儲(chǔ)器錯(cuò)誤檢測(cè)或存儲(chǔ)器錯(cuò)誤檢測(cè)和校正),并且在逐個(gè)頁(yè)的基礎(chǔ)上使能保護(hù)水平在不具有校正的錯(cuò)誤檢測(cè)與錯(cuò)誤檢測(cè)和校正之間切換。
[0016]在圖1B的圖示示例中,存儲(chǔ)器控制器126與一個(gè)或多個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)儲(chǔ)存設(shè)備(例如一個(gè)或多個(gè)DRAM芯片)通信。為了容易圖示,在圖1B的示例中,示出一個(gè)DRAM 108。圖示的示例的存儲(chǔ)器控制器126還與處理器134通信。圖示的示例的處理器134與非易失性存儲(chǔ)器136和大容量?jī)?chǔ)存存儲(chǔ)器138通信。圖示的示例的DRAM 108被用作頁(yè)存儲(chǔ)器來(lái)存儲(chǔ)最近和/或頻繁訪問(wèn)的數(shù)據(jù)。在一些例子中,從諸如非易失性存儲(chǔ)器136、大容量?jī)?chǔ)存存儲(chǔ)器138和/或任何其它本地和/或遠(yuǎn)程數(shù)據(jù)源的數(shù)據(jù)源檢索DRAM108中的數(shù)據(jù)。在圖示的示例中,DRAM 108在諸如圖1B中示出的存儲(chǔ)器頁(yè)104之類(lèi)的存儲(chǔ)器頁(yè)中存儲(chǔ)這樣的數(shù)據(jù)。當(dāng)處理器134執(zhí)行對(duì)對(duì)應(yīng)的數(shù)據(jù)被存儲(chǔ)在DRAM 108中的存儲(chǔ)器地址的訪問(wèn)時(shí),存儲(chǔ)器控制器126引起存儲(chǔ)器訪問(wèn)以從DRAM 108中的對(duì)應(yīng)存儲(chǔ)器頁(yè)(例如存儲(chǔ)器頁(yè)104)檢索所請(qǐng)求的數(shù)據(jù)。
[0017]在圖示的示例中,存儲(chǔ)器頁(yè)(頁(yè)-1 )104將數(shù)據(jù)106存儲(chǔ)在物理存儲(chǔ)器(例如示例的DRAM 108)中的物理存儲(chǔ)器地址處。通過(guò)操作系統(tǒng)102使用虛擬存儲(chǔ)器來(lái)執(zhí)行對(duì)程序和/或應(yīng)用的存儲(chǔ)器分配。虛擬存儲(chǔ)器中的頁(yè)映射到被存儲(chǔ)在DRAM 108中的物理地址處的物理頁(yè)(例如存儲(chǔ)器頁(yè)104)。在圖示的示例中,示例處理器104被提供有示例頁(yè)表110,其將由操作系統(tǒng)102使用以存儲(chǔ)在虛擬存儲(chǔ)器地址(由程序和/或應(yīng)用涉及)與物理存儲(chǔ)器(例如DRAM 108)的物理存儲(chǔ)器地址之間的映射。圖示的示例的頁(yè)表110包括用于頁(yè)1-4的映射條目112-118,頁(yè)1-4中的存儲(chǔ)器頁(yè)(頁(yè)-1)104在圖1B中詳細(xì)示出。盡管圖示的示例的頁(yè)表110示出映射