TWI451242B - 具有分散式快取記憶體之多處理器系統的容錯 - Google Patents
具有分散式快取記憶體之多處理器系統的容錯 Download PDFInfo
- Publication number
- TWI451242B TWI451242B TW100122007A TW100122007A TWI451242B TW I451242 B TWI451242 B TW I451242B TW 100122007 A TW100122007 A TW 100122007A TW 100122007 A TW100122007 A TW 100122007A TW I451242 B TWI451242 B TW I451242B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache memory
- hash
- address
- cache
- logic
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Description
本發明之領域大致關於電子計算系統,更具體而言,具有分散式快取記憶體之多處理器系統的容錯。
多處理器計算系統是具有多個執行它們自己的軟體程式碼之處理器的計算系統。多處理器計算系統可以以不同方式實施,例如,以廣域網路上互連的多個分散電腦,或者,另一實例為單一電腦,其處理器晶片包含多個獨立執行它們自己的各別軟體碼之處理核心。為了簡明起見,當論及技術上為「處理核心」的元件時,本申請案可以使用「處理器」一詞。
多核心計算系統通常被供予分享的快取記憶體。共享的快閃記憶體能夠接收從計算系統之內的多個處理器快取的資訊(例如快取線),及/或能夠提供被快取的資訊給計算系統內的多個處理器。圖1顯示在單一半導體晶片上具有下述及/或在單一電子元件套件100(於下,稱為「插座」)內整合下述之先前技術的多處理器計算系統的元件:1)多處理器101_1至101_X;2)快取記憶體「片」102_1至102_Y(值得注意的是Y可以等於X);3)用於每一快取記憶體片之各別的快取記憶體代理器103_1至103_Y;以及4)在處理器與快取記憶體片之間的網路104。
插座也包含閘道路由器功能105,位於插座的內部網路104與另一外部網路106之間,外部網路106是插座100會與其連接而作為完整的多處理器計算系統107的部份。值得注意的是,多處理器計算系統107可以包含以同於/類似於插座100設計之增加的插座108_1至108_Z,以增加/放大多處理器計算系統107的處理功率。多處理器計算系統107也包含例如系統記憶體元件109(舉例而言,包含耦合至RDRAM系統記憶體的記憶體控制器)、I/O控制集線器元件110(可能地包含每一這些元件109、110中的一個以上)、圖形控制器及/或例如LED顯示器或CRT顯示器等顯示器(未顯示)等其它標準的計算系統元件。
處理器101_1至101_X中的每一處理器均包含其自己各別的、本地快取記憶體(未顯示於圖1中)。當處理器在其本地快取記憶體中尋找資訊項且發生「遺失」時(或,若處理器101_1至101_X即未包含其自己各別的本地快取記憶體),為了所需的資訊而窺探快取記憶體片102_1至102_Y中之一。從資訊的位址(例如,所需的快取記憶體線的位址)決定被窺探的特定快取記憶體件。
舉例而言,假使在處理器101_1發生快取記憶體遺失,則為所需的快取記憶體線建構請求,以及,雜湊引擎邏輯電路111對位址執行雜湊功能以決定那一快取記憶體片是用於特定的位址之適當的快取記憶體片。然後,在網路104上將請求導引至用於適當的快取記憶體片的快取記憶體代理器(舉例而言,假使快取記憶體代理器102_1為標的片時,為快取記憶體代理器103_1)。快取記憶體代理器窺探標的之快取記憶體片,以及,假使發現所需的快取記憶體時,在網路104上將其送至處理器101_1。假使未發現所需的快取記憶體線,則用於快取記憶體線的請求被送至網路106中。值得注意的是,由雜湊引擎111使用的雜湊功能可以被設計為從快取記憶體片102_1至102_Y均勻地散佈潛在的快取記憶體線位址的領域的各種位址。由於對LLC 112的失敗窺探而造成接著對外部插座100而非在插座100內尋找所需的資訊,所以,快取記憶體片102_1至102_Y的集合有時總稱為「最後層級快取記憶體」(LLC)112。
圖1的先前技術之插座100的有關問題與快取記憶體片102_1至102_Y中之一的劣化及/或故障有關。具體而言,如同圖1中所觀測到一般,快取記憶體代理器103_1至103_Y中的每一代理器包含各別的錯誤校正碼(ECC)邏輯113_1至113_Y,用以「修復」自快取記憶體片讀出的資訊中的缺陷。除了歸因於修復資料缺陷所耗費的時間之性能劣化之外,假使快取記憶體代理器過於頻繁地公告其ECC正標示資訊缺陷旗標,則其還會引起系統管理中斷(SMI)及/或機器檢查碼(MCE)以通知高階系統管理160有問題存在。
但是,目前未存在任何設計鉤/特徵以防止劣化的快取記憶體片再度被使用。雜湊引擎111根據其內部雜湊演算法,繼續以正在劣化或已故障的快取記憶體線為目標。
在製造期間,先前技術的插座具有調整活動的處理器及快取記憶體片之數目的能力。具體而言,先前技術插座允許它們各別的快取記憶體片在製造期間受測試,以及,假使偵測到一或更多「不良的」快取記憶體片,插座可以永久地配置以賦能少於所有與插座一起被製造的快取記憶體片。但是,一旦製造後插座出貨時,被賦能的快取記憶體片的數目無法改變。如此,在執行期間,插座無法動態地改變將被散佈快取記憶體線的快取記憶體片。
圖2a至2c顯示改良插座200,其能夠將對於各別位址對應於故障或劣化的快取記憶體片之快取記憶體線的LLC快取記憶體窺探重新導引至另一快取記憶體片。
圖2a顯示在任何快取記憶體片故障之前的改良插座200。此處,觀測到快取記憶體線窺探請求251_1至251_Y的「流動」是經由網路204而延伸至快取記憶體片202_1至202_Y之各別的快取記憶體代理器203_1至203_Y。流動251_1至251_Y是描述促使雜湊引擎211內的雜湊功能以特定的快取記憶體片為標的之快取記憶體線位址集合。亦即,流動251_1相當於促使雜湊功能以快取記憶體片202_1為標的之快取記憶體線位址;流動251_2相當於促使雜湊功能以快取記憶體片202_2為標的之快取記憶體線位址;等等。
根據改良插座的操作,當快取記憶體代理器偵測到其對應的快取記憶體片將故障或已故障(「故障事件」)時,快取記憶體代理器將問題通知(ECC_ERR 250)傳送至雜湊引擎211。舉例而言,假定快取記憶體片202_1將故障。結果,快取記憶體代理器203_1的ECC邏輯213_1(在處理讀取快取記憶體片202_1的資訊時)將標示太多錯誤(舉例而言,逾時、超過資訊讀取量、等等)。如此,越過臨界值,促使快取記憶體代理器203_1將事件通知250傳送給雜湊引擎211。
為回應收到通知250,如圖2b中所見般,雜湊引擎211被重新配置,以致於其內部雜湊功能將原先被導引至快取記憶體片202_1(亦即,故障的快取記憶體片)的快取記憶體線位址重新導引至另一適當工作的快取記憶體片。為了舉例說明,假定快取記憶體片202_2是新近被指定的將收到快取記憶體線之快取記憶體片,這些快取記憶體線的位址是原先促使它們被導引至快取記憶體片202_1。圖2b藉由顯示對應的「流動」251_1從快取記憶體片201_1改向至快取記憶體片201_2,以說明雜湊引擎211的重新配置。
改良插座200也採取進一步的系統恢復步驟。具體而言,即使快取記憶體片201_1被視為將故障時,其可以仍然含有有效的資料。如此,如同圖2c中所觀察般,遷移邏輯252負責使此資料從快取快取記憶體片201_1中被讀出(253)以及被儲存(254)於新近指定的快取記憶體片201_2中,或者,在另一方式中,流入(255)系統記憶體中。在又一實施例中,僅有被辨識為處於修改(M)狀態的資料會從故障的快取記憶體片202_1中移出(254/255)。根據實施例中,藉由使快取記憶體線從將故障/已故障的快取記憶體片流至系統記憶體以執行遷移的情形中,為了被遷移的快取記憶體線,將故障/已故障的快取記憶體片的快取記憶體代理器發出Explicit WriteBack(EWB)操作至外部網路206中。
圖3顯示由圖2a至2c的改良插座設計執行的方法。根據圖3的方法,將故障或已故障的快取記憶體片被標示為301。為回應將故障/已故障的快取記憶體片的辨認301,執行下述:為快取記憶體線辨識新的快取記憶體片,所述快取記憶體線的各別位址係造成原始的雜湊功能將它們導引至已故障的快取記憶體片;雜湊引擎211的雜湊功能被修改以使具有這些位址的快取記憶體線被導引至新的快取記憶體片;以及,儲存在將故障/已故障的快取記憶體片中的資料被遷移至新的快取記憶體片或是系統記憶體302(值得注意的是,根據不同的可能方式,修改雜湊功能的動作可以有效地辨識新的快取記憶體片)。
在更詳細說明實施例之前,新的實施要點值得一提。首先,改良的插座的各種邏輯元件(例如處理器201_1至201_X中的每一處理器、雜湊引擎211、遷移邏輯252、內部網路204、快取記憶體代理器203_1至203_Y、路由器/閘道器205)可以由例如典型上與實施於半導體晶片上的互補邏輯電路有關之電路型式的電子邏輯電路實施。類似地,快取記憶體片202_1至202_Y實質上可以由例如典型上與靜態隨機存取記憶體(SRAM)胞或動態隨機存取記憶體(DRAM)胞相關聯的電路型式的電子儲存電路實施。
在實施例中,網路204是以包含至少二反向的環之環式架構實施。此處,每一處理器可以對這些環具有它自己相關聯的存取,以及,外離的請求被置於對請求的目的地具有最短的路徑之環上。或者,可以以單點存取來完成處理器對網路204的存取。網路204或者可以採用環式以外的其它各種拓蹼形式(舉例而言,全網、節點跳躍、共用媒體匯流排、等等)。
在實施例中,如圖2a至2c中所示般,以集中式來實施雜湊引擎211,以致於由多個處理器201_1至201_X中的任一處理器所產生之快取記憶體片窺探請求由相同的雜湊引擎211處理,以決定標的快取記憶體片。或者,以分散式來實施雜湊引擎211。舉例而言,每一處理器可以具有它自己專用的雜湊引擎,用於決定其產生的快取記憶體片窺探請求之標的快取記憶體片。在此情形中,將故障的快取記憶體片的通知應該廣播給每一雜湊引擎實施例,以及,為了回應,每一雜湊引擎實施例應被設計成決定用於受影響的快取記憶體線位址的相同的新快取記憶體片以及實施相同的雜湊演算法修正。
在又一實施例中,快取記憶體代理器能夠發出系統管理中斷(SMI)及/或機器檢查錯誤(MCE)。此外,雜湊引擎211也可以設計成發出SMI及/或MCE。在將故障/已故障的快取記憶體片中,用於將故障/已故障的快取記憶體片之快取記憶體代理器易於偵測與快取記憶體片有關的其它操作錯誤,以及,使系統充滿MCI及/或MCE。如此,根據一實施例,當雜湊引擎收到將故障/已故障的快取記憶體片250的通知時,雜湊引擎不僅將辨識用於受影響的位址之新快取記憶體片及修改其內部雜湊演算法,雜湊引擎也將發出SMI。系統管理260(例如系統韌體及/或基本輸入輸出系統(BIOS))接收SMI,以及,為了回應,藉由例如取消快取記憶體代理器發出增加的SMI及MCE之能力,以部份地或全部地「關閉」快取記憶體片及/或其各別的快取記憶體代理器。
在另一插座設計實施例中,取代雜湊引擎211選擇新的快取記憶體片及修改雜湊演算法以回應不良的快取記憶體片之通知250,系統管理260(為回應從雜湊引擎211或是從將故障/已故障的快取記憶體片的快取記憶體代理器收到SMI)選擇新的快取記憶體片及/或決定雜湊引擎修改。系統管理260可以由例如韌體、軟體、硬體或其任何組合等不同方式來實施。此外,「系統管理」可以是僅管理插座的系統層級操作、或是整體系統計算系統的較大部份之韌體/軟體及/或硬體實施例。取決於設計者的選擇,系統管理260可以完全地實施於插座上、部份地實施於插座上、或完全在插座外實施。
圖4顯示可用於此處所述的改良插座設計中的硬體/韌體介面410及雜湊引擎411的實施例。為了簡明起見,採用「硬體/韌體」一詞,但是其更常以「硬體/系統管理」介面為特徵。如圖4中所見般,雜湊引擎包含標稱雜湊引擎邏輯電路411、再雜湊引擎邏輯電路402、及用於固持快取記憶體線(對其執行雜湊以決定標的快取記憶體片)的位址之位址佇鎖403。在正常操作期間,在任何快取記憶體片故障之前,所有的位址會由標稱雜湊引擎邏輯電路401雜湊。
硬體/韌體介面410的第一暫存器410_1當由系統管理460設定時,在其收到快取記憶體片將故障或已故障之通知450時,使雜湊引擎邏輯電路411能夠發出SMI 451(或其它等效的錯誤通知)。第二暫存器410_2是SMI位元,係由系統管理460讀取以瞭解快取記憶體片故障。如同先前所述般,在另一實施例中,SMI 451可以由其它插座元件(例如將故障/已故障快取記憶體片的快取記憶體代理器/ECC)設定,因此,除了雜湊引擎邏輯電路411之外,位元410_1還可以由其它插座硬體元件利用。
硬體/韌體介面410的第三暫存器410_3由系統管理460設定及使雜湊引擎411能夠重新配置其本身以便:1)將位址導引至它們的新標的快取記憶體代理器;以及,2)使未受影響的位址之標的快取記憶體代理器未改變。在實施例中,在系統管理460授予靜止狀態以回應暫存器410_2中SMI的偵測之後,此位元410_3由系統管理460設定。
圖4顯示雜湊引擎411的實施例。名義上,(例如,在任何快取記憶體片故障之前),雜湊邏輯402被用以決定用於雜湊引擎411收到的所有位址之標的快取記憶體片。在此情形中,解多工器(DEMUX)輸入430被設定在對應於所有快取記憶體片正在工作的狀態,如此,由雜湊邏輯402計算的所有標的ID從解多工器(DEMUX)/雜湊引擎輸出431流動。
然而,在將故障/已故障的快取記憶體片被辨識之後,DEMUX輸入430改變至對應於非工作的快取記憶體片的狀態。所有收到的位址起先由雜湊邏輯411處理,以及,所造成的快取記憶體片標的ID從輸出436流入比較器邏輯432。此處,邏輯432具有第二輸入434,第二輸入434被設定在辨識已故障的快取記憶體片之值。在實施例中,第二輸入434由下述更詳細說明的暫存器410_5設定。從輸入436收到之未對應於已故障的快取記憶體片之快取記憶體片標的ID被允許從雜湊引擎輸出433流動。如此,對於所有未受已故障的快取記憶體片之位址,產生相同的快取記憶體片標的ID。
但是,對應於已故障的快取記憶體片之快取記憶體片標的ID經由多工器(MUX) 437重計算。此處,MUX輸入438對應於辨識用於受影響的位址之新的標的ID之狀態。如此,用於所有受影響的位址之新的快取記憶體片ID流經值被設定在它們的新快取記憶體代理器之MUX 437。在實施例中,MUX輸入438從於下更詳細說明的暫存器410_6設定。
在實施例中,標稱雜湊計算產生TAG值及快取記憶體片ID值。舉例而言,雜湊輸出402的位元[2:0]對應於標的快取記憶體片ID值,以及,雜湊輸出402的位元[25:0]對應於TAG值。結合快取記憶體片ID值的TAG值獨特地辨識越過分散式快取記憶體片的任何快取記憶體線。圖4中所見的MUX 437僅提供用於受影響的位址之快取記憶體片ID值。根據一方式,雜湊邏輯電路402仍然可以用於受影響的位址以產生TAG值(或其部份)。或者,二層級的雜湊設計於雜湊引擎411中。第一雜湊層接收實體位址及將其雜湊以產生第一層雜湊資訊。然後,對第一層雜湊資訊執行第二層雜湊資訊以產生TAG值。當所有快取記憶體片為可操作時,第二層雜湊根據第一等式操作,且當快取記憶體片之一故障時,使用第二、不同之雜湊等式。
值得注意,雜湊邏輯402可以實施成為專用邏輯電路或是控制器/微控制器邏輯電路,執行程式碼以實施正確的雜湊演算法。
硬體/韌體介面410的第四暫存器410_4能夠造成如上所述的遷移。如此,當系統管理460設定此位元時,在通告將故障/已故障的快取記憶體片時,遷移邏輯電路452注意此位元,以及,假使被設定時,開始控制資料從已故障的快取記憶體片遷移至新的快取記憶體片之處理。假使第四暫存器410_4未被設定時,則如上所述般,資料從已故障/將故障的快取記憶體片湧入系統記憶體。
硬體/韌體介面410的第五暫存器410_5含有將故障/已故障的快取記憶體片之識別。此資訊可以由硬體或系統管理460設定(舉例而言,藉由辨識那個快取記憶體代理器/ECC提出錯誤通知450)。再簡要地參考遷移邏輯電路452,在實施例中,當遷移邏輯電路452被告知將故障/已故障的快取記憶體片時,遷移邏輯輯電路452注意第四暫存器410_4,以查看其是否被設定,在偵測到第四暫存器410_4被設定時,注意第五暫存器410_5以瞭解那些快取記憶體片資料為待遷移。假使第四暫存器410_4未被設定,則遷移邏輯電路542或其它邏輯電路注意第五暫存器410_5以使經過辨識的快取記憶體片之內的資料湧入系統記憶體。
第六暫存器410_6是新快取記憶體片之識別,所述新快取記憶體片是受快取記憶體故障影響的位址要被引導至其。此資訊無論那一實體決定例如硬體或軟體/韌體等新快取記憶體片(例如管理460)所設定。繼續遷移邏輯452的實例,假使第四暫存器410_4被設定時,遷移邏輯452也注意第六暫存器410_6以瞭解那些快取記憶體片資料為待遷移。
第七暫存器410_7是遷移完成位元。當遷移完成時,遷移邏輯452設定此位元。
圖5顯示由改良插座硬體及/或系統管理執行之錯誤修復處理。根據圖5的處理,起初,接收將故障/已故障的快取記憶體片的通知(501)(舉例而言,藉由位元410_2的設定)。然後,辨識已故障的快取記憶體片(502)(舉例而言,藉由系統管理輪詢快取記憶體代理器,辨識已故障的快取記憶體片之位元410_5也被設定)。然後,授予靜止狀態(503)(例如藉由系統管理460),這包含使將故障/已故障的快取記憶體片的快取記憶體代理器發出增加的SMI或MCE事件的能力失能、及/或暫停對任何快取記憶體片的進一步快取記憶體窺探而致修改雜湊功能。
然後,辨識用於受影響的位址之新快取記憶體片(504)。如上所述,系統管理460或硬體可以執行此操作以及接著設定暫存器410_6中新快取記憶體片的識別。
然後,執行遷移處理(505)。如上所述,根據一實施例,系統(例如遷移邏輯542或任何它處)注意暫存器410_4以瞭解是否嘗試遷入新的快取記憶體片中。亦即,假使位元410_4被設定時,遷移邏輯452注意暫存器410_5以辨識已故障的快取記憶體片及暫存器410_6以辨識新的快取記憶體片。藉由此確知,遷移邏輯452接著使儲存在將故障/已故障的裝置中的快取記憶體線被遷移至新的快取記憶體片。假使位元410_4未被設定時,已故障/將故障的快取記憶體片中的快取記憶體線湧入系統記憶體。
在替代實施例中,遷移邏輯452實施成快取記憶體代理器之內的執行邏輯(或是可以與個別的快取記憶體片相關聯的其它邏輯)。當新快取記憶體片被辨識時,用以執行遷移之可執行的恢復碼被載入與新近被選取的快取記憶體片相關聯的執行邏輯中。恢復碼的執行促使查詢暫存器410_5以瞭解已故障的快取記憶體片的識別。碼也注意暫存器410_4以察看遷移是否被賦能。假使是,則碼促使資料從已故障的快取記憶體片移入新近被指定的快取記憶體片中。假使為否,則碼促使資料湧至系統記憶體。值得注意的是,在又另一替代實施例中,未與新快取記憶體片相關聯的執行邏輯也如上所述地操作,但是使用及查詢暫存器410_6以決定被遷移的快取記憶體線要被移至何處除外。
當遷移完成(藉由邏輯452或恢復碼)時,暫存器410_7被設定。在完成遷移時,藉由設定位元410_3以使再雜湊引擎賦能,以及,退出靜止模式(506)。之後,窺探請求被允許向前進行。
圖6顯示另一插座實施例,其與圖2a至2c中所述的插座設計有點不同。圖2a至2c的插座辨識單一工作中的快取記憶體片以接受被故障的快取記憶體片影響的所有快取記憶體線位址,相對地,圖6的插座方式將受影響的位址遍佈於多個(例如所有餘留的工作中)快取記憶體片中。圖6是藉由顯示原先流至將故障/已故障的快取記憶體片之位址流動251_1被再分佈為流動251_1a至251_1y描繪此特性。
在圖6的方式的情形中,注意,因為要為已故障的快取記憶體之內的每一快取記憶體線分別地辨識正確的新標的(舉例而言,為用於儲存在已故障的快取記憶體內的每一快取記憶體線的位址,再計算新標的),所以,遍佈在餘留的快取記憶體片202_2至202_Y之將故障/已故障的快取記憶體片202_1中所儲存的快取記憶體線的遷移比圖2a至2c的方式更具挑戰性。
圖7顯示支援圖6中上述剛說明的插座操作之雜湊引擎的實施例。名義上,(舉例而言,在任何快取記憶體片故障之前),雜湊邏輯701用以決定用於雜湊引擎711收到的所有位址之標的快取記憶體片。在此情形中,解多工器(DEMUX)輸入703被設定在對應於所有快取記憶體片正在工作中的狀態,如此,由雜湊邏輯701計算的所有標的ID從解多工器(DEMUX)輸出704流至雜湊引擎輸出708。
但是,在辨識將故障/已故障的快取記憶體片之後,DEMUX輸入703改變至對應於非工作中的快取記憶體片之狀態。所有收到的位址最初由雜湊邏輯701處理以及造成的快取記憶體標的ID從輸出705流入比較器邏輯707。此處,比較器邏輯具有第二輸入706,第二輸入706被設定在辨識已故障的快取記憶體片之值。從輸入705收到的未對應於已故障的快取記憶體片之快取記憶體片標的ID被允許從雜湊引擎輸出709流動。如此,對未受已故障的快取記憶體片影響的所有位址,產生相同的快取記憶體片標的ID。
但是,對應於已故障的快取記憶體片之快取記憶體片標的ID由第二雜湊邏輯702再雜湊。第二雜湊邏輯702不同於第一雜湊邏輯701,以致於對相同的位址值輸入,典型地產生不同的標的ID(以及,視實施而為不同的TAG值)。如此,來自於第二雜湊邏輯702的再雜湊將產生與已故障的快取記憶體的標的ID不同的標的ID。如此,這些標的ID被允許從雜湊引擎輸出710流動。來自第二雜湊邏輯702的輸出可以由類似的/相同的比較電路707攔截以標示由第二雜湊702產生的任何標的ID。根據一實施例,彼此不同的第三、第四、第五等等的雜湊邏輯區(未顯示)鏈包含於雜湊引擎711中,以及,處理一直重複直到產生未對應於將故障/已故障的快取記憶體片之標的ID為止。假使鏈中最後增加的雜湊邏輯區(即使為2,如圖7中所見)仍然產生將故障/已故障的快取記憶體片的標的ID時,用於產生此結果的位址之快取記憶體線僅被送至系統記憶體而非被快取。雜湊引擎711將因而產生可重複的結果:1)未改變受影響的位址之標的ID;以及,2)至少實質地改變受影響的位址之標的ID。遷移邏輯電路耦合至第二雜湊電路702、第三雜湊電路、等等,以決定用於已故障/將故障的快取記憶體片之內的每一被快取項目之新的各別標的快取記憶體片。
上述所揭示的處理可以由例如機器可執行的指令等程式碼實施,機器可執行的指令係使機器執行這些指令以執行某些功能。在此上下文中,「機器」可為將中間形式(或「抽象」)指令轉換成處理器特定指令(舉例而言,例如「虛擬機」(例如爪哇虛擬機(Java Virtual Machine))、解譯器、共同語言執行環境、高階語言虛擬機、等等抽象執行環境)之機器,及/或是配置在半導體晶片上設計成執行指令的電子電路(例如設計成以電晶體實施的「邏輯電路」),例如一般用途處理器及/或特定目的處理器。由上述說明所揭示的處理也可以由(機器的替代或是與機器的結合)設計成執行處理而未執行程式碼的電子電路來執行。
在上述說明書中,參考特定示例性實施例,說明本發明。但是,清楚可知,在不悖離如後附的申請專利範圍中所揭示的發明之更寬廣的精神及範圍之下,可以對其作出不同的修改及改變。因此,說明書及圖式被視為說明之用而非限定之用。
100...插座
101_1...處理器
101_2...處理器
101_3...處理器
101_X...處理器
102_1...快取記憶體片
102_2...快取記憶體片
102_3...快取記憶體片
102_Y...快取記憶體片
103_1...快取記憶體代理器
103_2...快取記憶體代理器
103_3...快取記憶體代理器
103_Y...快取記憶體代理器
104...內部網路
105...路由器
106...外部網路
107...多處理器計算系統
108_1...插座
108_2...插座
108_Z...插座
109...系統記憶體元件
110...I/O控制集線器元件
111...雜湊邏輯電路
113_1...錯誤校正碼邏輯
113_2...錯誤校正碼邏輯
113_3...錯誤校正碼邏輯
113_Y...錯誤校正碼邏輯
160...系統管理
200...插座
201_1...處理器
201_2...處理器
201_3...處理器
201_X...處理器
202_1...快取記憶體片
202_2...快取記憶體片
202_3...快取記憶體片
202_Y...快取記憶體片
203_1...快取記憶體代理器
203_2...快取記憶體代理器
203_3...快取記憶體代理器
203_Y...快取記憶體代理器
204...網路
205...路由器
206...外部網路
211...雜湊邏輯電路
213_1...錯誤校正碼邏輯
213_2...錯誤校正碼邏輯
213_3...錯誤校正碼邏輯
213_Y...錯誤校正碼邏輯
252...遷移邏輯
260...系統管理
401...雜湊引擎邏輯電路
402...雜湊邏輯
403...位址佇鎖
410...硬體/韌體介面
410_1...第一暫存器
410_2...第二暫存器
410_3...第三暫存器
410_4...第四暫存器
410_5...第五暫存器
410_6...第六暫存器
410_7...第七暫存器
411...雜湊引擎
430...解多工器輸入
431...解多工器/雜湊引擎輸出
432...比較器邏輯
433...雜湊引擎輸出
434...第二輸入
437...多工器
438...多工器輸入
452...遷移邏輯
460...系統管理
701...雜湊邏輯
702...第二雜湊邏輯
703...解多工器輸入
704...解多工器輸出
705...輸入
706...第二輸入
707...比較器邏輯
708...雜湊引擎輸出
709...雜湊引擎輸出
710...雜湊引擎輸出
711...雜湊引擎
以附圖中的圖式,舉例說明本發明,但是不侷限於此,在附圖中,類似的代號表示類似的元件,其中:
圖1顯示用於多處理器計算系統的先前技術的插座;
圖2a至2c顯示改良的插座,其能夠將對於各別位址對應於故障或劣化的快取記憶體片之快取記憶體線的LLC快取記憶體窺探重新導引至另一快取記憶體片;
圖3顯示由圖2a至2c的改良插座執行的方法;
圖4顯示在圖2a至2c的改良插座之內實施的硬體/韌體介面及雜湊引擎設計的實施例;
圖5顯示圖2a至2c的改良插座所執行的系統恢復方法;
圖6顯示能夠重新導引LLC快取記憶體窺探的改良插座之另一實施例;
圖7顯示支援圖6中所觀察到的插座操作型式之雜湊引擎設計的實施例。
200...插座
201_1...處理器
201_2...處理器
201_3...處理器
201_X...處理器
202_1...快取記憶體片
202_2...快取記憶體片
202_3...快取記憶體片
202_Y...快取記憶體片
203_1...快取記憶體代理器
203_2...快取記憶體代理器
203_3...快取記憶體代理器
203_Y...快取記憶體代理器
204...網路
205...路由器
206...外部網路
211...雜湊邏輯電路
213_1...錯誤校正碼邏輯
213_2...錯誤校正碼邏輯
213_3...錯誤校正碼邏輯
213_Y...錯誤校正碼邏輯
250...回應收到通知
251-
1...流動
251-2...流動
251-3...流動
251-Y...流動
252...遷移邏輯
260...系統管理
Claims (16)
- 一種半導體晶片,包括:a)不同的複數快取記憶體代理器邏輯電路,用於分散式快取記憶體的各別的複數快取記憶體片,該各別的複數快取記憶體片在相同的快取層級;b)雜湊引擎邏輯電路,包括:雜湊邏輯電路,根據位址以決定該複數快取記憶體片中之一特定快取記憶體片是否要接收具有該位址的請求;錯誤輸入,用以接收用於該特定快取記憶體片的故障事件通知;電路,用以指定該位址給該複數快取記憶體片中的另一快取記憶體片,以回應該通知;c)遷移邏輯電路,用以將被快取的資訊從該特定快取記憶體片移至該另一快取記憶體片,以回應該通知,該被快取的資訊在該特定快取記憶體片內的位置是由該位址指定。
- 如申請專利範圍第1項之半導體晶片,包括在該不同的複數快取記憶體代理器邏輯電路與該雜湊引擎邏輯電路之間的網路。
- 如申請專利範圍第1項之半導體晶片,其中,該遷移邏輯電路耦合至該電路,該電路係附加雜湊邏輯電路,而不是該雜湊邏輯電路。
- 如申請專利範圍第1項之半導體晶片,其中,該電路耦合至從韌體及/或軟體接收該另一快取記憶體片的 識別之暫存器,該韌體及/或軟體決定該另一快取記憶體片是否為用於被該複數快取記憶體片中之該特定快取記憶體片當作標的之位址的適當的新快取記憶體片,以回應該故障事件通知。
- 如申請專利範圍第1項之半導體晶片,又包括暫存器,該暫存器耦合至該雜湊引擎邏輯電路以儲存下述資訊項中至少之一:該複數快取記憶體片中之該特定快取記憶體片的識別;該另一快取記憶體片的識別。
- 一種從快取記憶體片故障事件恢復之方法,包括:接收具有用於資訊項的位址之請求;將該位址雜湊以決定分散式快取記憶體內複數快取記憶體片之中作為該請求的標的之特別的快取記憶體片;將該請求經由網路送至該快取記憶體片;接收用於該快取記憶體片之發生故障事件的通知;將該快取記憶體片之內被快取的項目移動至該複數快取記憶體片中至少一其它快取記憶體片,該移動包含將該資訊項從該快取記憶體片移至該複數快取記憶體片中之另一快取記憶體片,該快取記憶體片與該複數快取記憶體片中之該另一快取記憶體片在相同的快取層級。
- 如申請專利範圍第6項之方法,其中,該將該請求導引至該複數快取記憶體片中之另一快取記憶體片又包 括根據與該位址的該雜湊不同的雜湊功能以將該位址雜湊。
- 如申請專利範圍第7項之方法,其中,該移動包括將該項目移動越過該複數快取記憶體片中之每一快取記憶體片而不是該快取記憶體片。
- 如申請專利範圍第8項之方法,其中,該將該資訊項從該快取記憶體片移至該複數快取記憶體片中之該另一快取記憶體片包含以該不同的雜湊功能來處理該位址。
- 如申請專利範圍第6項之方法,又包括以會作動來回應該故障事件的通知之軟體及/或韌體,來決定該複數快取記憶體片中之該另一快取記憶體片是否要從該快取記憶體片接收該資訊項。
- 如申請專利範圍第6項之方法,其中,該軟體及/或韌體因接收該通知的結果而對暫存器寫入及/或讀取資訊。
- 一種計算系統,包括:a)複數個處理核心;b)LED顯示器;c)不同的複數快取記憶體代理器邏輯電路,用於分散式快取記憶體的各別的複數快取記憶體片,該各別的複數快取記憶體片在相同的快取層級;d)雜湊引擎邏輯電路,包括:雜湊邏輯電路,根據位址以決定該複數快取記憶體片中一特定快取記憶體片是否要接收具有該位址的請求; 錯誤輸入,用以接收用於該特定快取記憶體片的故障事件通知;電路,用以指定該位址給該複數快取記憶體片中的另一快取記憶體片,以回應該通知;e)遷移邏輯電路,用以將被快取的資訊從該特定快取記憶體片移至該另一快取記憶體片,以回應該通知,該被快取的資訊在該特定快取記憶體片內的位置是由該位址指定。
- 如申請專利範圍第12項之計算系統,包括在該不同的複數快取記憶體代理器邏輯電路與該雜湊引擎邏輯電路之間的網路。
- 如申請專利範圍第12項之計算系統,其中,該遷移邏輯電路耦合至該電路,該電路係附加雜湊邏輯電路,而不是該雜湊邏輯電路。
- 如申請專利範圍第12項之計算系統,其中,該電路耦合至從韌體及/或軟體接收該另一快取記憶體片的識別之暫存器,該韌體及/或軟體決定該另一快取記憶體片是否為用於被該複數快取記憶體片中之該特定快取記憶體片當作標的之位址的適當的新快取記憶體片,以回應該故障事件通知。
- 如申請專利範圍第12項之計算系統,又包括暫存器,該暫存器耦合至該雜湊引擎邏輯電路以儲存下述資訊項中至少之一:該複數快取記憶體片中之該特定快取記憶體片的識 別;該另一快取記憶體片的識別。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN1573DE2010 | 2010-07-05 | ||
US12/984,500 US8954790B2 (en) | 2010-07-05 | 2011-01-04 | Fault tolerance of multi-processor system with distributed cache |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201216047A TW201216047A (en) | 2012-04-16 |
TWI451242B true TWI451242B (zh) | 2014-09-01 |
Family
ID=45400670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100122007A TWI451242B (zh) | 2010-07-05 | 2011-06-23 | 具有分散式快取記憶體之多處理器系統的容錯 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8954790B2 (zh) |
TW (1) | TWI451242B (zh) |
WO (1) | WO2012005938A2 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9128842B2 (en) * | 2012-09-28 | 2015-09-08 | Intel Corporation | Apparatus and method for reducing the flushing time of a cache |
WO2014084836A1 (en) * | 2012-11-29 | 2014-06-05 | Hewlett-Packard Development Company, L.P. | Fault tolerance in a multi-core circuit |
KR102441178B1 (ko) | 2015-07-29 | 2022-09-08 | 삼성전자주식회사 | 컴퓨팅 장치에서 캐시 플루딩 프로세스를 관리하기 위한 장치 및 방법 |
US9832277B2 (en) * | 2015-11-13 | 2017-11-28 | Western Digital Technologies, Inc. | Systems and methods for adaptive partitioning in distributed cache memories |
US10528438B2 (en) | 2017-05-25 | 2020-01-07 | Avago Technologies International Sales Pte. Limited | Method and system for handling bad blocks in a hardware accelerated caching solution |
CN107122256B (zh) * | 2017-06-13 | 2018-06-19 | 北京邮电大学 | 动态修补的高性能片上缓存容错架构 |
TWI719741B (zh) | 2019-12-04 | 2021-02-21 | 財團法人工業技術研究院 | 改變冗餘處理節點的處理器及其方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020007402A1 (en) * | 2000-01-18 | 2002-01-17 | Thomas Huston Arthur Charles | Approach for managing and providing content to users |
US7058773B1 (en) * | 2003-01-16 | 2006-06-06 | Cisco Technology, Inc. | System and method for managing data in a distributed system |
TW200636466A (en) * | 2004-12-27 | 2006-10-16 | Intel Corp | System and method for non-uniform cache in a multi-core processor |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123101A (en) | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
WO1994003856A1 (en) | 1992-08-07 | 1994-02-17 | Massachusetts Institute Of Technology | Column-associative cache |
US7139933B2 (en) | 2003-06-20 | 2006-11-21 | International Business Machines Corporation | Preserving cache data against cluster reboot |
US7120651B2 (en) | 2003-08-01 | 2006-10-10 | Oracle International Corporation | Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping |
US7533300B2 (en) | 2006-02-13 | 2009-05-12 | Intel Corporation | Configurable error handling apparatus and methods to operate the same |
US7836229B1 (en) | 2006-06-23 | 2010-11-16 | Intel Corporation | Synchronizing control and data paths traversed by a data transaction |
US7600080B1 (en) | 2006-09-22 | 2009-10-06 | Intel Corporation | Avoiding deadlocks in a multiprocessor system |
US7761696B1 (en) | 2007-03-30 | 2010-07-20 | Intel Corporation | Quiescing and de-quiescing point-to-point links |
US8356239B2 (en) * | 2008-09-05 | 2013-01-15 | Freescale Semiconductor, Inc. | Selective cache way mirroring |
US8291259B2 (en) * | 2009-04-15 | 2012-10-16 | International Business Machines Corporation | Delete of cache line with correctable error |
US8578138B2 (en) | 2009-08-31 | 2013-11-05 | Intel Corporation | Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode |
US8407421B2 (en) * | 2009-12-16 | 2013-03-26 | Intel Corporation | Cache spill management techniques using cache spill prediction |
-
2011
- 2011-01-04 US US12/984,500 patent/US8954790B2/en not_active Expired - Fee Related
- 2011-06-21 WO PCT/US2011/041228 patent/WO2012005938A2/en active Application Filing
- 2011-06-23 TW TW100122007A patent/TWI451242B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020007402A1 (en) * | 2000-01-18 | 2002-01-17 | Thomas Huston Arthur Charles | Approach for managing and providing content to users |
US7058773B1 (en) * | 2003-01-16 | 2006-06-06 | Cisco Technology, Inc. | System and method for managing data in a distributed system |
TW200636466A (en) * | 2004-12-27 | 2006-10-16 | Intel Corp | System and method for non-uniform cache in a multi-core processor |
Also Published As
Publication number | Publication date |
---|---|
WO2012005938A3 (en) | 2012-03-08 |
WO2012005938A2 (en) | 2012-01-12 |
US8954790B2 (en) | 2015-02-10 |
US20120005524A1 (en) | 2012-01-05 |
TW201216047A (en) | 2012-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI451242B (zh) | 具有分散式快取記憶體之多處理器系統的容錯 | |
US10514990B2 (en) | Mission-critical computing architecture | |
BR112019020374B1 (pt) | Método, mídia de armazenamento legível por computador não transitória e sistema para consenso de blockchain | |
US20120089861A1 (en) | Inter-processor failure detection and recovery | |
US9112887B2 (en) | Mirroring solution in cloud storage environment | |
KR102355989B1 (ko) | 다중 노드 시스템 저전력 관리 | |
TW200537285A (en) | Methods and apparatuses for reducing burn in within semiconductor devices utilizing static random access memory (SRAM) | |
US20210286667A1 (en) | Cloud scale server reliability management | |
US11036636B2 (en) | Providing improved efficiency for metadata usages | |
TW201028839A (en) | Disabling cache portions during low voltage operations | |
US20070061630A1 (en) | System and method for recovering from a hang condition in a data processing system | |
US11709745B2 (en) | Method for a reliability, availability, and serviceability-conscious huge page support | |
US20110320863A1 (en) | Dynamic re-allocation of cache buffer slots | |
WO2019245884A1 (en) | Memory-efficient upgrade staging | |
US9135175B2 (en) | Distributed cache coherency directory with failure redundancy | |
US9009548B2 (en) | Memory testing of three dimensional (3D) stacked memory | |
US9830224B2 (en) | Selective fault stalling for a GPU memory pipeline in a unified virtual memory system | |
JP2016513309A (ja) | 分散コンピューティングシステムのコンピューティングノードにおける障害に起因するエラー伝播の制御 | |
US8645796B2 (en) | Dynamic pipeline cache error correction | |
WO2015035882A1 (zh) | 基于节点控制器的请求响应方法和装置 | |
JP2011065565A (ja) | キャッシュシステム及びマルチプロセッサシステム | |
Wang et al. | Data remapping for static NUCA in degradable chip multiprocessors | |
US20120159087A1 (en) | Ensuring Forward Progress of Token-Required Cache Operations In A Shared Cache | |
KR102376396B1 (ko) | 멀티 코어 프로세서 및 그것의 캐시 관리 방법 | |
JP5630565B2 (ja) | 情報処理装置,及びキャッシュ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |