單芯片和雙芯片備援的制作方法
【專利摘要】本發(fā)明提供了用于克服存儲(chǔ)器中的故障的技術(shù)。存儲(chǔ)器的一個(gè)部分可以采用單芯片備援模式操作。當(dāng)檢測(cè)到存儲(chǔ)器的部分中的單芯片中的錯(cuò)誤時(shí),存儲(chǔ)器的部分的區(qū)域可以被轉(zhuǎn)換為以雙芯片備援模式操作。存儲(chǔ)器可以被采用單芯片和雙芯片備援模式二者來(lái)訪問(wèn)。
【專利說(shuō)明】單芯片和雙芯片備援
【背景技術(shù)】
[0001]計(jì)算設(shè)備可能遭受任何數(shù)量的不同類型的故障。一個(gè)特定類型的故障是組成存儲(chǔ)器系統(tǒng)的存儲(chǔ)器芯片中的故障。單獨(dú)存儲(chǔ)器芯片的故障可以減少對(duì)系統(tǒng)可用的存儲(chǔ)器的量。因?yàn)榇鎯?chǔ)器芯片通常不是單獨(dú)可維修的,所以替換故障存儲(chǔ)器芯片可能需要完整替換存儲(chǔ)器模塊,其可能包含許多非故障芯片。此外,在計(jì)算機(jī)操作時(shí)存儲(chǔ)器典型地不可維修,并且因此可能需要停機(jī)時(shí)間來(lái)實(shí)施故障存儲(chǔ)器模塊的替換。
【專利附圖】
【附圖說(shuō)明】
[0002]圖1描繪了存儲(chǔ)器系統(tǒng)的示例的框圖。
[0003]圖2描繪了具有芯片故障的存儲(chǔ)器系統(tǒng)的示例的另一個(gè)框圖。
[0004]圖3 (a-b)描繪了具有芯片故障的存儲(chǔ)器系統(tǒng)的附加示例。
[0005]圖4 (a-c)描繪了具有多個(gè)芯片故障的存儲(chǔ)器系統(tǒng)的示例。
[0006]圖5描繪了從芯片故障恢復(fù)的示例流程圖。
[0007]圖6描繪了從芯片故障恢復(fù)的另一個(gè)示例流程圖。
[0008]圖7描繪了從芯片故障恢復(fù)的示例流程圖。
[0009]圖8描繪了從多個(gè)芯片故障恢復(fù)的示例流程圖。
【具體實(shí)施方式】
[0010]由于需要替換有故障的存儲(chǔ)器部件,所以計(jì)算系統(tǒng)中的存儲(chǔ)器故障可以導(dǎo)致意外的系統(tǒng)停機(jī)時(shí)間。當(dāng)今計(jì)算環(huán)境中的意外停機(jī)時(shí)間(其中計(jì)算系統(tǒng)的高可用性被預(yù)期)可能是無(wú)法忍受的。當(dāng)故障在服務(wù)器系統(tǒng)中發(fā)生時(shí),由于存儲(chǔ)器故障所引起的問(wèn)題可能進(jìn)一步被惡化,因?yàn)樵S多不同的用戶可以被系統(tǒng)停機(jī)時(shí)間影響。此外,許多組織依賴于在其計(jì)算機(jī)上運(yùn)行的應(yīng)用的連續(xù)可用性,以實(shí)現(xiàn)組織的目標(biāo)。由于存儲(chǔ)器故障引起的意外停機(jī)時(shí)間對(duì)于那些目標(biāo)可能是不利的。
[0011]為了緩解存儲(chǔ)器故障的影響,數(shù)個(gè)技術(shù)是可用的。一個(gè)這種技術(shù)可以被稱為單芯片備援(SCS)。在SCS系統(tǒng)中,存儲(chǔ)器控制器可以在存儲(chǔ)器中存儲(chǔ)緩存行,使得任何單個(gè)存儲(chǔ)器芯片的故障不導(dǎo)致緩存行變?yōu)椴豢捎?。例如,緩存行可以被存?chǔ)在具有錯(cuò)誤修正代碼(ECC)保護(hù)的存儲(chǔ)器中。能夠檢測(cè)和修正單芯片的故障的ECC可以從多個(gè)可用錯(cuò)誤修正代碼中被選擇。當(dāng)存儲(chǔ)器中的芯片故障時(shí),ECC可以被用于確保緩存行仍然可用。
[0012]SCS系統(tǒng)能夠繼續(xù)運(yùn)行,甚至在ECC碼字內(nèi)的單個(gè)存儲(chǔ)器芯片故障的情形下。此夕卜,SCS系統(tǒng)能夠以高效的方式利用存儲(chǔ)器和存儲(chǔ)器控制器之間的帶寬。然而,SCS系統(tǒng)遭受它們僅能夠從ECC碼字內(nèi)的單芯片故障恢復(fù)的固有問(wèn)題。碼字內(nèi)的第二存儲(chǔ)器芯片的故障最低可以導(dǎo)致對(duì)替換故障存儲(chǔ)器的系統(tǒng)停機(jī)時(shí)間的需求。
[0013]可以被用來(lái)緩解存儲(chǔ)器中的故障的另一個(gè)技術(shù)可以被稱為雙芯片備援(DCS)。在DCS中,緩存行再次被存儲(chǔ)在具有許多已知錯(cuò)誤修正代碼中的一個(gè)的保護(hù)的存儲(chǔ)器中,所述錯(cuò)誤修正代碼能夠在每個(gè)ECC碼字內(nèi)檢測(cè)和修正最多兩個(gè)存儲(chǔ)器芯片故障。與SCS相比較,能夠在兩個(gè)錯(cuò)誤芯片中修正故障的錯(cuò)誤修正代碼典型地橫跨大量芯片分布緩存行,從而當(dāng)芯片故障時(shí)減少被損壞的位的數(shù)量。例如,緩存行可以在兩個(gè)分離的存儲(chǔ)器總線上包含的芯片之間被分布,或在單個(gè)總線上的芯片之間被分布但在單個(gè)總線上的地址之間分布,使得存儲(chǔ)緩存行的兩個(gè)芯片的任何錯(cuò)誤不使所述行不可用。緩存行的分布可以在不同總線上的存儲(chǔ)器模塊、相同總線上的不同存儲(chǔ)器模塊、或相同存儲(chǔ)器模塊上的不同排列(rank)之間發(fā)生。
[0014]DCS具有如下優(yōu)點(diǎn):在需要停機(jī)時(shí)間以便修理之前,能夠經(jīng)受住ECC碼字內(nèi)的兩個(gè)存儲(chǔ)器芯片中的故障。因此,第一故障可以發(fā)生,并且系統(tǒng)可以繼續(xù)操作。甚至當(dāng)?shù)诙收习l(fā)生時(shí),系統(tǒng)繼續(xù)操作。因此,與SCS相比較,系統(tǒng)管理員可以被給予更寬的機(jī)會(huì)窗口來(lái)在計(jì)劃維護(hù)時(shí)段期間致力于解決存儲(chǔ)器故障。第一存儲(chǔ)器芯片的故障不導(dǎo)致其中接下來(lái)的故障可能導(dǎo)致系統(tǒng)不可用的情形??赡懿恍枰S修直到第二芯片故障,第二芯片故障直到第一芯片故障之后的相當(dāng)大的時(shí)間量才可能會(huì)發(fā)生。
[0015]然而,由DCS提供的增加的保護(hù)是要付出代價(jià)的。如所提及的,DCS通過(guò)橫跨多個(gè)總線或單個(gè)總線內(nèi)的存儲(chǔ)器地址的多個(gè)不同范圍存儲(chǔ)緩存行進(jìn)行操作。訪問(wèn)多個(gè)總線或地址范圍的需求導(dǎo)致從存儲(chǔ)器到存儲(chǔ)器控制器的數(shù)據(jù)轉(zhuǎn)移的低效率,因?yàn)樾枰~外的周期來(lái)配置從不同總線或單個(gè)總線上的不同范圍讀取/寫入到不同總線或單個(gè)總線上的不同范圍。為獲取DCS的保護(hù),多達(dá)40%的總線帶寬可能被損失。即使還不具有任何存儲(chǔ)器芯片的故障,總線帶寬的損失也發(fā)生。
[0016]在此提供的技術(shù)克服了由SCS和DCS所產(chǎn)生的問(wèn)題,而同時(shí)保留了由那兩個(gè)機(jī)制提供的優(yōu)點(diǎn)。存儲(chǔ)器最初可以在SCS模式中操作,提供以上所描述的益處,諸如,全總線利用。當(dāng)存儲(chǔ)器中的單芯片中的故障發(fā)生時(shí),由故障影響的存儲(chǔ)器的部分可以被轉(zhuǎn)換為DCS模式。未被影響的存儲(chǔ)器的部分仍然以SCS模式進(jìn)行操作。因此,全帶寬被維持以用于未被存儲(chǔ)器芯片的故障所影響的存儲(chǔ)器的那些部分,從而盡可能地維持SCS的優(yōu)點(diǎn)。同樣地,對(duì)于包含故障存儲(chǔ)器芯片的存儲(chǔ)器的部分,轉(zhuǎn)換到DCS保留了存儲(chǔ)器芯片的接下來(lái)的故障不是關(guān)鍵性的優(yōu)點(diǎn),因?yàn)楦郊拥拇鎯?chǔ)器芯片的故障可以被適應(yīng)。以上的技術(shù)被在下面進(jìn)一步詳細(xì)地并且結(jié)合附圖地描述。
[0017]圖1描繪了存儲(chǔ)器系統(tǒng)的示例的框圖。系統(tǒng)可以包括存儲(chǔ)器控制器110、存儲(chǔ)器115-0,115-1、以及把存儲(chǔ)器控制器連接到存儲(chǔ)器的總線120-0,120-1。存儲(chǔ)器控制器可以接收請(qǐng)求125以從外部源讀取/寫入存儲(chǔ)器中的緩存行。例如,存儲(chǔ)器請(qǐng)求可以來(lái)自源,諸如,處理器、直接存儲(chǔ)器訪問(wèn)控制器、或其它這種設(shè)備。
[0018]存儲(chǔ)器控制器可以典型地以硬件實(shí)現(xiàn)。由于當(dāng)今計(jì)算環(huán)境中所需的處理速度需求,存儲(chǔ)器控制器可以通常被實(shí)現(xiàn)為應(yīng)用特定集成電路(ASIC),或可以作為較大設(shè)備(諸如,處理器)的一部分被包括。存儲(chǔ)器控制器可以包括存儲(chǔ)器、通用處理器、和專用控制邏輯。此外,存儲(chǔ)器控制器可以執(zhí)行軟件或固件以助于提供在此所描述的功能性。所描述的各種功能可以被使用所需的存儲(chǔ)器、處理器、軟件、固件和邏輯的任何組合來(lái)實(shí)現(xiàn)。
[0019]存儲(chǔ)器控制器110可以通過(guò)一個(gè)或多個(gè)總線訪問(wèn)存儲(chǔ)器115。當(dāng)接收存儲(chǔ)器請(qǐng)求時(shí),存儲(chǔ)器控制器可以訪問(wèn)所述存儲(chǔ)器以服務(wù)請(qǐng)求。例如,在從存儲(chǔ)器讀取緩存行的請(qǐng)求的情形下,存儲(chǔ)器控制器可以通過(guò)總線從所述存儲(chǔ)器檢索所述緩存行、基于操作的模式計(jì)算適合的ECC、比較所計(jì)算的ECC與采用所述緩存行檢索的ECC、在給定ECC類型的情形下盡可能地修正任何錯(cuò)誤、以及把緩存行提供到請(qǐng)求者。在寫入存儲(chǔ)器的請(qǐng)求的情形下,存儲(chǔ)器控制器可以接收請(qǐng)求以寫入緩存行、計(jì)算適合的ECC、并且在存儲(chǔ)器中存儲(chǔ)緩存行。
[0020]在以上描述中,參考了適合的ECC。如以上所提及的,錯(cuò)誤修正代碼對(duì)于SCS和DCS 二者是可用的。緩存行可以被在SCS模式130-0,I或DCS模式135下存儲(chǔ)在存儲(chǔ)器中。當(dāng)讀取或?qū)懭刖彺嫘袝r(shí),存儲(chǔ)器控制器可以基于所述緩存行是否被包含在存儲(chǔ)器的SCS或DCS部分中而選擇適合的ECC來(lái)使用。因此,存儲(chǔ)器控制器能夠以SCS模式訪問(wèn)存儲(chǔ)器中的一些部分并且以DCS模式訪問(wèn)存儲(chǔ)器中的其它部分。此外,當(dāng)存儲(chǔ)器的SCS部分中的芯片故障時(shí),存儲(chǔ)器控制器可以把存儲(chǔ)器的區(qū)域從SCS模式轉(zhuǎn)換到DCS模式。以SCS和DCS模式訪問(wèn)存儲(chǔ)器,連同從一個(gè)模式到另一個(gè)模式的轉(zhuǎn)換一起,在下面被進(jìn)一步詳細(xì)地描述。
[0021]圖2描繪了具有芯片故障的存儲(chǔ)器系統(tǒng)的示例的另一個(gè)框圖。在典型的存儲(chǔ)器系統(tǒng)中,包含64字節(jié)數(shù)據(jù)205的緩存行可以被使用。半緩存行(如名稱暗示的)是完整緩存行的一半。例如,如示出的,64字節(jié)緩存行283可以由半緩存行283-a,b組成。對(duì)于這個(gè)公開的其余部分來(lái)說(shuō),僅以數(shù)字對(duì)緩存行的參考指示完全緩存行,而對(duì)數(shù)字和字母的參考指示對(duì)單個(gè)半緩存行的參考。
[0022]半緩存行可以被存儲(chǔ)在存儲(chǔ)器215-0,I中。使用18 x 4動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)芯片208的存儲(chǔ)器的典型芯片布局的示例被示出。在這種實(shí)現(xiàn)方式中,16個(gè)存儲(chǔ)器芯片可以被用于存儲(chǔ)數(shù)據(jù),而2個(gè)存儲(chǔ)器芯片被用于存儲(chǔ)ECC。在給定總共18個(gè)芯片的情形下,具有許多已知的單芯片錯(cuò)誤修正代碼,該單芯片錯(cuò)誤修正代碼可以檢測(cè)和修正單芯片中的故障。
[0023]緩存行280-283可以被存儲(chǔ)在存儲(chǔ)器215_0中。緩存行280-283可以由能夠檢測(cè)和修正單芯片錯(cuò)誤的任何可用ECC保護(hù)。緩存行280-283可以形成第一 SCS區(qū)域230-0。同樣地,緩存行290-293可以被存儲(chǔ)在存儲(chǔ)器215-1中。緩存行290-293還可以由單芯片備援ECC保護(hù),并且形成第二 SCS區(qū)域230-1。這些組緩存行中的每一個(gè)以單芯片備援模式操作,因?yàn)樵谶@些區(qū)域中的任何單芯片的故障不使在其中存儲(chǔ)的緩存行不可用。兩個(gè)SCS區(qū)域230-0,I是彼此獨(dú)立的。
[0024]雙芯片備援區(qū)域235是由ECC保護(hù)的區(qū)域的示例,所述ECC能夠檢測(cè)和修正最多兩個(gè)芯片中的故障。這個(gè)DCS區(qū)域包括兩個(gè)地址范圍內(nèi)的緩存行:240-241和250-251。如示出的,每個(gè)緩存行橫跨兩個(gè)存儲(chǔ)器總線分布。例如,半緩存行(240,250,241,251) _a被存儲(chǔ)在存儲(chǔ)器215-0中,而半緩存行(240,250,241,251)-b被存儲(chǔ)在存儲(chǔ)器215-1中。因此,DCS區(qū)域中的給定緩存行被橫跨總共36個(gè)芯片存儲(chǔ),其中32個(gè)芯片用于數(shù)據(jù),以及4個(gè)芯片用于存儲(chǔ)ECC。在給定這個(gè)數(shù)量的芯片的情形下,能夠檢測(cè)和修正用于最多兩個(gè)芯片的故障的錯(cuò)誤修正代碼是可用的。緩存行240-241和250-251由這種ECC保護(hù)。
[0025]當(dāng)SCS區(qū)域中的單芯片故障時(shí),所述區(qū)域可以從SCS模式轉(zhuǎn)換到DCS模式,因此保護(hù)所述區(qū)域中的緩存行免于后續(xù)芯片故障。當(dāng)SCS區(qū)域中的單芯片故障時(shí),DCS基礎(chǔ)236-0可以被確定。此外,DCS限界238-0可以被確定。DCS基礎(chǔ)和限界的選擇將在下面進(jìn)一步詳細(xì)地描述,但現(xiàn)在,DCS基礎(chǔ)和限界確定了將被轉(zhuǎn)換到DCS的存儲(chǔ)器的SCS區(qū)域的開始和結(jié)束。為了這個(gè)描述的目的,假設(shè)在總線220-0上的存儲(chǔ)器215-0內(nèi)已具有單芯片的故障,并且那個(gè)故障影響DCS基礎(chǔ)236-0和DCS限界238-0之間的區(qū)域,并且將被稱為第一區(qū)域。
[0026]可以選擇大小上等于包含故障的區(qū)域的第二區(qū)域。第二區(qū)域還可以由DCS基礎(chǔ)236-1和DCS限界238-1來(lái)標(biāo)識(shí)。在一個(gè)示例中,除了在不同總線220-1上之外,第二區(qū)域可以是第一區(qū)域的相同地址范圍。然而,不需要這個(gè)特定的安排。附加可能性的示例被相對(duì)于圖3 (a-b)來(lái)描述。兩組DCS基礎(chǔ)和DCS限界地址一起定義了 DCS區(qū)域。
[0027]轉(zhuǎn)換指針237-0,I可以被設(shè)置成分別指向DCS基礎(chǔ)236_0,I。轉(zhuǎn)換指針可以從DCS基礎(chǔ)推進(jìn)到DCS限界,隨著它們推進(jìn),把緩存行從SCS模式轉(zhuǎn)換到DCS模式。轉(zhuǎn)換緩存行的過(guò)程可以通過(guò)示例的使用而被最佳地解釋。如示出的,轉(zhuǎn)換指針237-0當(dāng)前指向緩存行262。對(duì)應(yīng)的轉(zhuǎn)換指針237-1當(dāng)前指向緩存行272。存儲(chǔ)器控制器210可以交換第一和第二區(qū)域之間的每個(gè)緩存行的一半。例如,如示出的,半緩存行272-a可以使用接下來(lái)的過(guò)程與半緩存行262-b交換。緩存行262和272均被從存儲(chǔ)器讀取,并且使用其對(duì)應(yīng)的SCSECC修正(如果需要的話)。然后,DCS ECC被針對(duì)每個(gè)緩存行計(jì)算。由此得到的緩存行然后向回寫入到存儲(chǔ)器。當(dāng)緩存行被向回寫入到存儲(chǔ)器時(shí),它們橫跨第一和第二區(qū)域分布。轉(zhuǎn)換指針然后可以被推進(jìn)一個(gè)緩存行。所述緩存行262,272的這種交換的最終結(jié)果現(xiàn)在橫跨存儲(chǔ)器的兩個(gè)區(qū)域分布。所述過(guò)程可以重復(fù)直到轉(zhuǎn)換指針指向DCS轉(zhuǎn)換限界。已經(jīng)被交換的緩存行的示例是緩存行260,261,270,271。等待被轉(zhuǎn)換的緩存行是行263,273。
[0028]在以上描述的交換緩存行的過(guò)程中,新的錯(cuò)誤修正代碼被計(jì)算。然而,因?yàn)樗鼍彺嫘鞋F(xiàn)在橫跨增加數(shù)量的芯片分布,所以DCS錯(cuò)誤修正代碼可以被使用。一旦一對(duì)緩存行到DCS模式的轉(zhuǎn)換完成,所述緩存行則能夠抵擋任何附加芯片的故障。
[0029]盡管所述轉(zhuǎn)換在進(jìn)行之中,但對(duì)總線地址(其在DCS基礎(chǔ)之上,但在DCS轉(zhuǎn)換指針之下)的任何存儲(chǔ)器訪問(wèn)請(qǐng)求將被像對(duì)DCS區(qū)域的訪問(wèn)請(qǐng)求一樣處理。同樣地,對(duì)總線地址(其在轉(zhuǎn)換指針之上,但在DCS限界之下)的任何存儲(chǔ)器訪問(wèn)請(qǐng)求將被像對(duì)SCS區(qū)域的訪問(wèn)請(qǐng)求一樣處理。對(duì)總線地址(其由轉(zhuǎn)換指針指向,意味著所述地址處于被轉(zhuǎn)換的過(guò)程中)的存儲(chǔ)器請(qǐng)求將停止并將在隨后的時(shí)間退出。到所述請(qǐng)求退出時(shí)為止,所述轉(zhuǎn)換將很可能已完成。如果所述轉(zhuǎn)換未完成,則所述請(qǐng)求將繼續(xù)停止直到諸如總線地址轉(zhuǎn)換完成的時(shí)間。
[0030]DCS基礎(chǔ)和限界以上被簡(jiǎn)潔地提及。DCS基礎(chǔ)和限界確定了將被從SCS模式轉(zhuǎn)換到DCS模式的區(qū)域的范圍。如以上所提及的,DCS的使用不是沒(méi)有損失的。特別地,由于需要重新配置存儲(chǔ)器控制器以訪問(wèn)不同總線上的位置,故DCS區(qū)域遭受減少的帶寬利用。如此,令人期望的是:限制被轉(zhuǎn)換到DCS的區(qū)域的大小,從而使減少的總線利用的影響最小化。
[0031]在此描述的技術(shù)基于存儲(chǔ)器芯片故障的范圍選擇轉(zhuǎn)換區(qū)域的大小。例如,單個(gè)存儲(chǔ)器芯片可以包括可能獨(dú)立故障的單獨(dú)庫(kù)(bank)。在單個(gè)芯片內(nèi)的單個(gè)庫(kù)故障的情形下,第一區(qū)域可以被選擇為僅包括那個(gè)庫(kù)。如果多個(gè)連續(xù)的庫(kù)故障,則第一區(qū)域可以包括多個(gè)庫(kù)。如果整個(gè)芯片故障,則第一區(qū)域可以包括整個(gè)芯片。應(yīng)被理解的是:第一區(qū)域可以被選擇為盡可能地小,而仍然覆蓋被故障影響的全部存儲(chǔ)器位置。
[0032]圖2就典型地用于計(jì)算系統(tǒng)的存儲(chǔ)器系統(tǒng)的示例實(shí)現(xiàn)方式被呈現(xiàn),然而應(yīng)被理解的是:在此描述的技術(shù)不限于任何特定芯片配置、緩存行大小、或總線的數(shù)量。
[0033]圖3 (a-b)描繪了具有芯片故障的存儲(chǔ)器系統(tǒng)的附加示例。在圖2的描述中,假設(shè)兩個(gè)SCS區(qū)域到DCS區(qū)域的轉(zhuǎn)換在位于兩個(gè)分離總線上的存儲(chǔ)器之間,并且兩個(gè)SCS區(qū)域在其總線上處于相同的相對(duì)存儲(chǔ)器地址。然而,在此描述的技術(shù)不限于這種配置,并且可以與任何數(shù)量的其它配置一起使用。應(yīng)被理解的是:存儲(chǔ)器、總線和地址的任何配置可以被使用,只要附加芯片故障將不影響ECC修正錯(cuò)誤的能力。一般地說(shuō),其中緩存行被通過(guò)存儲(chǔ)器芯片的集合重新分布從而增加可檢測(cè)和/或可修正存儲(chǔ)器芯片的錯(cuò)誤的數(shù)量的任何存儲(chǔ)器配置是可接受的。
[0034]圖3 Ca)描繪了雙芯片備援區(qū)域335的示例,其被包含在單個(gè)存儲(chǔ)器總線320_0上的存儲(chǔ)器315-0中。如示出的,半緩存行(360,370,361,371) _a被存儲(chǔ)在一個(gè)范圍的總線地址中。半緩存行(360,370,361,371)_b被存儲(chǔ)在不同范圍的總線地址中。圖3 (a)中示出的配置可與在此描述的技術(shù)一起使用,只要任何存儲(chǔ)器芯片故障將不影響緩存行的兩個(gè)一半。配置有效的原因是:當(dāng)依據(jù)所描述的技術(shù)以DCS模式進(jìn)行操作時(shí),緩存行已經(jīng)歷了僅影響緩存行的一半的一個(gè)芯片中的錯(cuò)誤。如果附加的芯片故障,故障還將僅影響緩存行的一半。因此,整個(gè)緩存行將經(jīng)歷最多兩個(gè)芯片故障,它們當(dāng)使用DCS錯(cuò)誤修正代碼時(shí)可以由存儲(chǔ)器控制器310修正。
[0035]圖3 (b)描繪了雙芯片備援區(qū)域335的另一個(gè)示例,其被包含在兩個(gè)存儲(chǔ)器總線320-0,I上的存儲(chǔ)器315-0,I中,但在那些總線上的地址不是相同的。如示出的,半緩存行(380,390,381,391) _a被存儲(chǔ)在一個(gè)總線上的存儲(chǔ)器中。半緩存行(380,390,381,391)-b被存儲(chǔ)在不同總線上的存儲(chǔ)器中。應(yīng)當(dāng)明確的是:因?yàn)樵诓煌偩€上的芯片中存儲(chǔ)的半緩存行是彼此獨(dú)立的,所以任何附加芯片故障將最多影響緩存行的一半。此外,總線地址范圍未必是相同的(如相對(duì)于圖2所描述的)。存儲(chǔ)器控制器310可以存儲(chǔ)形成DCS區(qū)域的地址范圍。因此,當(dāng)存儲(chǔ)器請(qǐng)求被接收時(shí),可以訪問(wèn)正確總線地址以提供完整的緩存行。
[0036]圖4 (a-c)描繪了具有多個(gè)芯片故障的存儲(chǔ)器系統(tǒng)的示例,如以上提及的,在此描述的技術(shù)在需要修理之前考慮到最多兩個(gè)存儲(chǔ)器芯片故障。然而,在一些情形下,重新配置DCS區(qū)域使得附加芯片故障可以發(fā)生并且又仍然允許系統(tǒng)保持操作可以是可能的。
[0037]圖4 (a)描繪了其中存儲(chǔ)器區(qū)域已被轉(zhuǎn)換為依據(jù)以上呈現(xiàn)的技術(shù)以DCS模式操作的系統(tǒng)。如示出的,半緩存行(460,470,461,471) _a被存儲(chǔ)在一個(gè)總線420-0上的存儲(chǔ)器中,并且半緩存行(460,470,461,471) _b被存儲(chǔ)在不同總線420-1上的存儲(chǔ)器中。為了這個(gè)描述的目的,假設(shè)到目前為止僅具有一個(gè)芯片故障,因此由DCS提供的保護(hù)仍然是可用的。換言之,假設(shè)僅具有單個(gè)總線上的單芯片故障,并且存儲(chǔ)器控制器410可以使用DCS ECC修正錯(cuò)誤。
[0038]在某個(gè)時(shí)間點(diǎn)上,可能具有第二芯片故障。在其中第二芯片故障在與包含第一芯片故障的總線相對(duì)的總線上發(fā)生的情形下,DCS區(qū)域可以向回轉(zhuǎn)換到兩個(gè)SCS區(qū)域,因?yàn)橛糜趦蓚€(gè)SCS區(qū)域的ECC將足以修正由兩個(gè)故障的芯片導(dǎo)致的錯(cuò)誤。兩個(gè)SCS區(qū)域中的每一個(gè)現(xiàn)在可以被使用另一個(gè)無(wú)錯(cuò)誤SCS區(qū)域轉(zhuǎn)換成分離的DCS區(qū)域,因此擴(kuò)展了 DCS保護(hù)的時(shí)段。
[0039]如在圖4 (b)中示出的,假設(shè)具有總線420-0上的單芯片故障以及總線420_1上的單芯片故障。把區(qū)域轉(zhuǎn)換到DCS的過(guò)程然后可以被相反地執(zhí)行,導(dǎo)致兩個(gè)SCS區(qū)域。如示出的,半緩存行被交換,使得緩存行的兩個(gè)一半被包含在單個(gè)SCS區(qū)域中。如示出的,緩存行460,461現(xiàn)在被包含在第一 SCS區(qū)域中,而緩存行470,471被包含在第二 SCS區(qū)域中。應(yīng)被理解的是=SCS區(qū)域中的每一個(gè)現(xiàn)在具有一個(gè)單芯片故障,并且如此,附加芯片的故障可以導(dǎo)致緩存行變?yōu)椴豢捎谩?br>
[0040]然而,如果能夠發(fā)現(xiàn)不包含任何芯片錯(cuò)誤的另一個(gè)區(qū)域,則把SCS區(qū)域向回轉(zhuǎn)換到DCS區(qū)域的過(guò)程可以再次發(fā)生。如在圖4 (c)中示出的,包含緩存行480,481的第三無(wú)錯(cuò)誤區(qū)域可以被識(shí)別。組成緩存行480,481的半緩存行可以依據(jù)以上所描述的過(guò)程與組成緩存行470,471的半緩存行互換以形成新的DCS區(qū)域。同樣地,最初包含緩存行490,491的第四無(wú)錯(cuò)誤區(qū)域可以被識(shí)別。再次,以上描述的用于在最初包含緩存行460,461的區(qū)域和包含緩存行490,491的區(qū)域之間交換緩存行的過(guò)程可以被執(zhí)行。如虛線示出的,結(jié)果是新的雙芯片備援區(qū)域。
[0041]把DCS區(qū)域向回轉(zhuǎn)換成兩個(gè)SCS區(qū)域并且然后重新向回轉(zhuǎn)換成DCS區(qū)域的過(guò)程可以繼續(xù),只要無(wú)錯(cuò)誤區(qū)域可以被發(fā)現(xiàn)。如此,在由于存儲(chǔ)器故障需要修理之前所需的時(shí)間量可以被擴(kuò)展直到發(fā)現(xiàn)無(wú)錯(cuò)誤SCS區(qū)域不再是可能的,假設(shè)半緩存行從未被一個(gè)以上的芯片故障影響。
[0042]圖5描繪了從芯片故障恢復(fù)的示例流程圖。在塊510中,檢測(cè)以單芯片備援模式操作的存儲(chǔ)器的第一區(qū)域中的單芯片錯(cuò)誤。這種錯(cuò)誤可以通過(guò)使用錯(cuò)誤修正代碼由存儲(chǔ)器控制器檢測(cè)。在塊520中,選擇大小上等于存儲(chǔ)器的第一區(qū)域的存儲(chǔ)器的第二區(qū)域。存儲(chǔ)器的第二區(qū)域還可以采用單芯片備援模式進(jìn)行操作。在一些情形下,存儲(chǔ)器的第二區(qū)域可以是不同總線上的存儲(chǔ)器地址的相同范圍。在其它情形下,存儲(chǔ)器的第二區(qū)域可以是相同或不同總線上的存儲(chǔ)器地址的不同范圍。在塊530中,可以把存儲(chǔ)器的第一和第二區(qū)域從單芯片備援模式轉(zhuǎn)換到雙芯片備援模式。
[0043]圖6描繪了從芯片故障恢復(fù)的另一個(gè)示例流程圖。在塊605中,檢測(cè)以單芯片備援模式操作的存儲(chǔ)器的第一區(qū)域中的單芯片錯(cuò)誤。在塊610中,確定第一雙芯片備援基礎(chǔ)。第一雙芯片備援基礎(chǔ)標(biāo)識(shí)存儲(chǔ)器的第一區(qū)域的開始。在塊615中,確定第一雙芯片備援限界。第一雙芯片備援限界標(biāo)識(shí)存儲(chǔ)器的第一區(qū)域的結(jié)束。
[0044]在塊620中,選擇大小上等于存儲(chǔ)器的第一區(qū)域的存儲(chǔ)器的第二區(qū)域。存儲(chǔ)器的第二區(qū)域以單芯片備援模式進(jìn)行操作。存儲(chǔ)器的第二區(qū)域可以由第二雙芯片備援基礎(chǔ)和第二雙芯片備援限界標(biāo)識(shí)。在塊625中,把轉(zhuǎn)換指針設(shè)置到第一和第二雙芯片備援基礎(chǔ)。在塊630中,讀取由轉(zhuǎn)換指針指向的兩個(gè)緩存行,并且使用單芯片備援錯(cuò)誤修正代碼修正任何錯(cuò)誤。在塊635中,針對(duì)存儲(chǔ)器的第一和第二區(qū)域中的緩存行,計(jì)算雙芯片備援錯(cuò)誤修正代碼。例如,可以讀取兩個(gè)緩存行,并且使用SCS ECC執(zhí)行任何必需的修正。新的DCS ECC然后可以被針對(duì)每個(gè)緩存行計(jì)算。如下面所描述的,存儲(chǔ)緩存行以及新計(jì)算的DCS ECC0
[0045]在塊640中,把緩存行和所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)到存儲(chǔ)器的第一和第二區(qū)域中。緩存行和所計(jì)算的錯(cuò)誤修正代碼跨越存儲(chǔ)器的第一和第二區(qū)域。在塊645中,把轉(zhuǎn)換指針推進(jìn)到下一個(gè)緩存行。在塊650中,確定轉(zhuǎn)換指針是否等于雙芯片備援限界。如果否,則所述過(guò)程返回到塊630。否則,所述過(guò)程移動(dòng)到塊655,其中所述轉(zhuǎn)換完成。
[0046]應(yīng)注意的是:在轉(zhuǎn)換處于進(jìn)行中的時(shí)候,緩存行可以繼續(xù)被訪問(wèn)。緩存行基于雙芯片備援基礎(chǔ)、限界、和轉(zhuǎn)換指針被訪問(wèn)。如以上所解釋的,轉(zhuǎn)換指針以上的緩存行被以SCS模式訪問(wèn),那些以下的被以DCS模式訪問(wèn),并且如果相等,訪問(wèn)請(qǐng)求被停止。
[0047]圖7描繪了從芯片故障恢復(fù)的示例流程圖。在塊710中,檢測(cè)以單芯片備援模式操作的存儲(chǔ)器的部分中的錯(cuò)誤。所述錯(cuò)誤可以通過(guò)使用錯(cuò)誤修正代碼被檢測(cè)。在塊720中,可以確定完全覆蓋所述錯(cuò)誤的存儲(chǔ)器的第一區(qū)域。例如,錯(cuò)誤可以在存儲(chǔ)器芯片的單個(gè)庫(kù)上,導(dǎo)致所述庫(kù)的大小是所述區(qū)域的大小。作為另一個(gè)示例,錯(cuò)誤可以在整個(gè)芯片上。在塊730中,把第一區(qū)域轉(zhuǎn)換為以雙芯片備援模式操作。
[0048]圖8描繪了從多個(gè)芯片故障恢復(fù)的示例流程圖。在塊805中,檢測(cè)以單芯片備援模式操作的存儲(chǔ)器的部分中的錯(cuò)誤。在塊810中,確定被所述錯(cuò)誤影響的存儲(chǔ)器的第一區(qū)域。在塊815中,確定大小上等于第一區(qū)域的存儲(chǔ)器的第二區(qū)域。存儲(chǔ)器的第二區(qū)域不包含錯(cuò)誤,并且正以單芯片備援模式操作著。
[0049]在塊820中,針對(duì)第一和第二區(qū)域中的每個(gè)緩存行計(jì)算雙芯片備援錯(cuò)誤修正代碼。例如,可以讀取每個(gè)緩存行,并且使用SCS ECC執(zhí)行任何必需的修正。然后,DCS ECC可以被針對(duì)每個(gè)緩存行計(jì)算。在塊825中,把每個(gè)緩存行和所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)在組合區(qū)域中。所述組合區(qū)域包括第一和第二區(qū)域。在塊830中,檢測(cè)組合區(qū)域中的第二單芯片錯(cuò)誤。第二錯(cuò)誤在第二區(qū)域中發(fā)生。在塊835中,把組合區(qū)域向回轉(zhuǎn)換成第一存儲(chǔ)器區(qū)域和第二存儲(chǔ)器區(qū)域。第一和第二存儲(chǔ)器區(qū)域以單芯片備援模式操作。
[0050]在塊840中,確定大小上等于第一區(qū)域、不包含錯(cuò)誤、并且以單芯片備援模式操作的存儲(chǔ)器的第三區(qū)域。在塊845中,針對(duì)第一和第三區(qū)域中的每個(gè)緩存行計(jì)算雙芯片備援錯(cuò)誤修正代碼。再次,可以讀取每個(gè)緩存行,并且使用SCS ECC執(zhí)行任何必需的修正。然后,DCS ECC可以被針對(duì)每個(gè)緩存行計(jì)算。在塊850中,把每個(gè)緩存行和所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)在包括第一和第三區(qū)域的組合區(qū)域中。
[0051]在塊855中,確定大小上等于第二區(qū)域、不包含錯(cuò)誤、并且以單芯片備援模式操作的存儲(chǔ)器的第四區(qū)域。在塊860中,針對(duì)第二和第四區(qū)域中的每個(gè)緩存行計(jì)算雙芯片備援錯(cuò)誤修正代碼。再次,可以讀取每個(gè)緩存行,并且使用SCS ECC執(zhí)行任何必需的修正。然后,DCS ECC可以被針對(duì)每個(gè)緩存行計(jì)算。在塊865中,把每個(gè)緩存行和所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)在包括第二和第四區(qū)域的組合區(qū)域中。
【權(quán)利要求】
1.一種設(shè)備,包括: 存儲(chǔ)器控制器,用于: 訪問(wèn)存儲(chǔ)器的第一部分,存儲(chǔ)器的第一部分以單芯片備援模式操作;以及 訪問(wèn)存儲(chǔ)器的第二部分,存儲(chǔ)器的第二部分以雙芯片備援模式操作。
2.如權(quán)利要求1所述的設(shè)備,其中存儲(chǔ)器控制器是用于下述各項(xiàng)的存儲(chǔ)器控制器: 檢測(cè)存儲(chǔ)器的第一部分的第一區(qū)域中的錯(cuò)誤;以及 把包含錯(cuò)誤的第一區(qū)域轉(zhuǎn)換為以雙芯片備援模式操作。
3.如權(quán)利要求1所述的設(shè)備,其中存儲(chǔ)器控制器是用于下述各項(xiàng)的存儲(chǔ)器控制器: 檢測(cè)存儲(chǔ)器的第一部分的第一區(qū)域中的錯(cuò)誤; 選擇存儲(chǔ)器的第一部分中的第二區(qū)域,所述第二區(qū)域在大小上等于第一區(qū)域;以及在第一和第二區(qū)域之間轉(zhuǎn)換緩存行以形成第三區(qū)域,所述第三區(qū)域以雙芯片備援模式操作。
4.如權(quán)利要求3所述的設(shè)備,其中存儲(chǔ)器的第一和第二區(qū)域在單個(gè)存儲(chǔ)器總線上。
5.如權(quán)利要求3所述的設(shè)備,其中第一區(qū)域在第一存儲(chǔ)器總線上,并且第二區(qū)域在第二存儲(chǔ)器總線上 。
6.一種方法,包括: 檢測(cè)存儲(chǔ)器的第一區(qū)域中的單芯片錯(cuò)誤,存儲(chǔ)器的第一區(qū)域以單芯片備援模式操作;選擇大小上等于存儲(chǔ)器的第一區(qū)域的存儲(chǔ)器的第二區(qū)域,存儲(chǔ)器的第二區(qū)域以單芯片備援模式操作;以及 把存儲(chǔ)器的第一和第二區(qū)域從單芯片備援模式轉(zhuǎn)換到雙芯片備援模式。
7.如權(quán)利要求6所述的方法,其中轉(zhuǎn)換存儲(chǔ)器的第一和第二區(qū)域進(jìn)一步包括: 針對(duì)存儲(chǔ)器的第一和第二區(qū)域中的緩存行計(jì)算雙芯片備援錯(cuò)誤修正代碼;以及 把緩存行以及所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)到存儲(chǔ)器的第一和第二區(qū)域中,其中每個(gè)緩存行以及所計(jì)算的錯(cuò)誤修正代碼跨越存儲(chǔ)器的第一和第二區(qū)域。
8.如權(quán)利要求7所述的方法,進(jìn)一步包括: 確定第一雙芯片備援基礎(chǔ),第一雙芯片備援基礎(chǔ)標(biāo)識(shí)存儲(chǔ)器的第一區(qū)域的開始; 確定第一雙芯片備援限界,所述雙芯片備援限界標(biāo)識(shí)存儲(chǔ)器的第一區(qū)域的結(jié)束; 確定第二雙芯片備援基礎(chǔ),第二雙芯片備援基礎(chǔ)標(biāo)識(shí)存儲(chǔ)器的第二區(qū)域的開始; 確定第二雙芯片備援限界,第二雙芯片備援限界標(biāo)識(shí)存儲(chǔ)器的第二區(qū)域的結(jié)束; 把轉(zhuǎn)換指針設(shè)置為指向第一和第二雙芯片備援基礎(chǔ);以及 當(dāng)轉(zhuǎn)換指針小于第一和第二雙芯片備援限界時(shí): 讀取由轉(zhuǎn)換指針指向的緩存行,并且使用單芯片備援錯(cuò)誤修正代碼修正任何錯(cuò)誤;以及 把轉(zhuǎn)換指針推進(jìn)到第一和第二區(qū)域中的下一個(gè)緩存行。
9.如權(quán)利要求8所述的方法,其中雙芯片備援基礎(chǔ)以上和轉(zhuǎn)換指針以下的緩存行的訪問(wèn)處于雙芯片備援模式。
10.如權(quán)利要求8所述的方法,其中轉(zhuǎn)換指針以上和雙芯片備援限界以下的緩存行的訪問(wèn)處于單芯片備援模式。
11.如權(quán)利要求8所述的方法,其中由轉(zhuǎn)換指針指向的緩存行的訪問(wèn)被拒絕并且在隨后的時(shí)間退出。
12.—種方法,包括: 檢測(cè)以單芯片備援模式操作的存儲(chǔ)器的部分中的錯(cuò)誤; 確定被所述錯(cuò)誤影響的存儲(chǔ)器的第一區(qū)域;以及 把第一區(qū)域轉(zhuǎn)換為以雙芯片備援模式操作。
13.如權(quán)利要求12所述的方法,其中轉(zhuǎn)換第一區(qū)域進(jìn)一步包括: 確定大小上等于第一區(qū)域的存儲(chǔ)器的第二區(qū)域,所述第二區(qū)域不包含錯(cuò)誤并且以單芯片備援模式操作 ; 針對(duì)第一和第二區(qū)域中每個(gè)緩存行計(jì)算雙芯片備援錯(cuò)誤修正代碼; 把每個(gè)緩存行以及所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)在包括第一和第二區(qū)域的組合區(qū)域中。
14.如權(quán)利要求13所述的方法,進(jìn)一步包括: 檢測(cè)組合區(qū)域中的第二單芯片錯(cuò)誤,第二錯(cuò)誤在第二區(qū)域中發(fā)生; 把組合區(qū)域向回轉(zhuǎn)換成第一存儲(chǔ)器區(qū)域和第二存儲(chǔ)器區(qū)域,其中第一和第二區(qū)域以單芯片備援模式操作; 確定大小上等于第一區(qū)域的存儲(chǔ)器的第三區(qū)域,所述第三區(qū)域不包含錯(cuò)誤并且以單芯片備援模式操作; 針對(duì)第一和第三區(qū)域中的每個(gè)緩存行計(jì)算雙芯片備援錯(cuò)誤修正代碼; 把每個(gè)緩存行以及所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)在包括第一和第三區(qū)域的組合區(qū)域中。
15.如權(quán)利要求14所述的方法,進(jìn)一步包括: 確定大小上等于第二區(qū)域的存儲(chǔ)器的第四區(qū)域,所述第四區(qū)域不包含錯(cuò)誤并且以單芯片備援模式操作; 針對(duì)第二和第四區(qū)域中的每個(gè)緩存行計(jì)算雙芯片備援錯(cuò)誤修正代碼; 把每個(gè)緩存行以及所計(jì)算的錯(cuò)誤修正代碼存儲(chǔ)在包括第二和第四區(qū)域的組合區(qū)域中。
【文檔編號(hào)】G06F13/16GK104081373SQ201280068687
【公開日】2014年10月1日 申請(qǐng)日期:2012年1月31日 優(yōu)先權(quán)日:2012年1月31日
【發(fā)明者】G.戈斯丁, E.漢金 申請(qǐng)人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)