TWI497278B - 微處理器、死結或活結狀態解除方法以及其電腦程式產品 - Google Patents
微處理器、死結或活結狀態解除方法以及其電腦程式產品 Download PDFInfo
- Publication number
- TWI497278B TWI497278B TW102111358A TW102111358A TWI497278B TW I497278 B TWI497278 B TW I497278B TW 102111358 A TW102111358 A TW 102111358A TW 102111358 A TW102111358 A TW 102111358A TW I497278 B TWI497278 B TW I497278B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- knot
- state
- microprocessor
- dead
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 24
- 238000004590 computer program Methods 0.000 title claims description 6
- 230000015654 memory Effects 0.000 claims description 84
- 230000009471 action Effects 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 230000002401 inhibitory effect Effects 0.000 claims description 3
- 230000003287 optical effect Effects 0.000 claims description 2
- 238000012546 transfer Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 8
- 230000001629 suppression Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Description
本申請案優先權之申請係根據美國專利申請案,案號:13/785,924,申請日:02/04/2013,名稱為使用服務處理器處理死結/活結(Deadlock/Livelock Resolution Using Service Processor),該案整體皆納入本案參考。
本申請案與下列美國專利臨時申請案有關,都具有相同的申請日,每一臨時申請案整體皆納入本案參考。
本發明係有關一種微處理器,特別係有關一服務處理器偵測以及解除發生於主要處理器之死結(或活結)狀態。
發明人發現於微處理器設計中包含複數不同類別
之錯誤(bug),因為當死結(或活結)狀況發生於微處理器其中之一快取記憶體時,將導致微處理器發生懸置(hang)之情況(亦即不再執行指令)。舉例來說,一錯誤可能導致處理器無法回覆其快取記憶體之一外部監聽(external snoop),而不確定地造成「監聽延遲(snoop stall)」,此將導致匯流排無法執行更進一步之匯流排週期(亦即「匯流排懸置」)。在另一個例子中,一錯誤可能導致處理器將無法因應監聽而驅動資料以及不確定地發生「DBSY延遲」,此情況同樣造成匯流排懸置。上述錯誤將明顯地對具有微處理器之計算系統造成有害的影響。此外,當微處理器於死結(或活結)狀態時,對上述之錯誤執行除錯之動作為困難的。因此需要一種解除死結(或活結)狀態之機制。
本發明係提供一微處理器,微處理器包括一主要處理器以及一服務處理器。服務處理器用以偵測以及解除發生於主要處理器之死結(或活結)狀態。
另一方面,本發明更提供一方法,此方法包括藉由微處理器之主要處理器執行指令。此方法更包括藉由服務處理器偵測主要處理器之死結(或活結)狀態,以及藉由服務處理器解除主要處理器之死結(或活結)狀態。
另一方面,本發明提供使用於一計算裝置之可編碼於一非暫態之電腦可讀儲存媒體之電腦程式產品,此電腦程式產品具有電腦可讀程式碼並記錄於上述電腦可讀儲存媒體中,用以指定一微處理器。上述電腦可讀程式碼包括第一程式碼用以設定一主要處理器,以及第二程式碼用以設定一服務處
理器,其中服務處理器之配置為偵測以及解除主要處理器之一死結(或活結)狀態。
在一實施例中,服務處理器藉由偵測主要處理器是否未於一預定之時脈週期內引退指令或完成一處理器匯流排傳輸以偵測死結(或活結)狀態。因應於偵測主要處理器之死結(或活結)狀態,服務處理器於將引發對快取記憶體之仲裁要求被擷取於緩衝區之操作、分析所擷取之要求並偵測一可指出錯誤之樣式、以及執行與樣式相關之動作以解除死結(或活結)。此動作可能包括抑制對快取記憶體之仲裁要求、抑制比較快取記憶體要求位址、以及刪除存取快取記憶體之要求。
100‧‧‧處理器晶片
102‧‧‧主要處理器
104、134‧‧‧服務處理器
106‧‧‧SPROC介面
108‧‧‧指令快取記憶體
122‧‧‧執行單元
126‧‧‧匯流排介面單元
128‧‧‧晶片
132‧‧‧編碼
136‧‧‧RAM
144‧‧‧微程序單元
146‧‧‧快取記憶體
154‧‧‧請求
168‧‧‧刪除位元
172‧‧‧擷取緩衝器
174‧‧‧資料陣列
176‧‧‧標籤陣列
178‧‧‧管線
182‧‧‧樣式偵測器
184‧‧‧引退單元
186‧‧‧請求佇列
188‧‧‧系統
192‧‧‧處理器匯流排
194‧‧‧系統記憶體
198‧‧‧處置
202‧‧‧仲裁請求抑制器
204‧‧‧位址比較結果抑制器
214‧‧‧位址比較結果
216‧‧‧抑制仲裁請求
218‧‧‧仲裁請求允許訊號
222‧‧‧管線控制邏輯
224‧‧‧位址比較器
226‧‧‧記憶體位址
232‧‧‧狀態
300‧‧‧管線
302‧‧‧時序(或順序)欄位
304‧‧‧請求來源欄位
306‧‧‧請求位址欄位
308‧‧‧請求類型欄位
402、404、406、408、412‧‧‧方塊圖
第1圖係顯示包括處理器晶片之系統之方塊圖,其中處理器
晶片具有一主要處理器以及一服務處理器(SPROC)。
第2圖顯示第1圖所述快取記憶體管線之細節方塊圖。
第3圖顯示第1圖所述擷取緩衝器之項目方塊圖。
第4圖顯示第1圖所述處理器之操作流程圖。
本發明之一處理器包括主要處理器(例如一x86處理器)以及服務處理器(SPROC),其中服務處理器可偵測以及解除主要處理器一死結(或活結)狀態。當SPROC偵測到主要處理器不再引退指令時,將引發對快取記憶體之仲裁要求被擷取至緩衝區之操作、分析緩衝器之內容以偵測已知類型之錯誤的樣式、以及根據相關於錯誤類型之處置(recipe)來控制發生錯
誤之快取記憶體以允許快取記憶體解除其死結(或活結)狀態,以中止匯流排週期以及減緩匯流排懸置之情況。於解除死結(或活結)狀態後,允許匯流排繼續發送週期,並允許設計者利用複數工具於模擬時複製錯誤,以作為除錯設計之參考。於一實施例中,SPROC執行微程序,此微程序為可修正的,例如可透過BIOS修正。特別的是,SPROC微程序修正將包括一新的錯誤分類偵測樣式和(或)其相關之處置。
藉由SPROC根據相關之處置控制快取記憶體以中止匯流排週期,其中上述動作將會(或將不會)導致資料之毀壞。假設上述動作將會導致資料之毀壞,那麼針對此錯誤類型之技術將只能用於除錯。無論如何,假設中止之動作並沒有毀壞資料以及仍然允許解除死結(或活結),此技術將可作為一錯誤的矽修復(silicon fix)。
第1圖係為一方塊圖,係有關一系統188包括一處理器晶片100,如本發明所述,處理器晶片100具有一主要處理器102以及一服務處理器(SPROC)134。微處理器100除了包括主要處理器102外更包括一服務處理器134。在此所述之”主要處理器”或”處理器”或”微處理器”係指積體電路100在服務處理器134之外的部分。於一實施例中,主要處理器102為一x86(也作為IA-32)架構處理器102;然而,也可使用其餘之處理器架構。假設一處理器可以正確地執行一用於x86處理器之主要應用程序,此處理器為一x86架構之處理器。假設此應用程序得到預期之結果,代表此應用程序有正確地執行,尤其是主要處理器102可執行x86架構以及x86使用者可見(user-visible)
暫存器指令集。
SPROC 134經由主要處理器102之SPROC介面106與部分主要處理器102通訊。SPROC介面106包括控制暫存器以及狀態暫存器,其中上述之暫存器可藉由SPROC 134以及部分主要處理器102之讀取以及寫入,以使兩者之通訊更行暢順。更具體地,SPROC 134可與主要處理器102之一快取記憶體進行通訊以及控制該快取記憶體以解決死結(或活結)狀態。同時,SPROC 134可以與主要處理器102之一引退單元184以及匯流排介面單元126通訊,以偵測主要處理器102是否為中止之狀態。最後,SPROC 134可以與主要處理器102之請求佇列186通訊,以指示是否需要刪除位於其中之要求,以下將提出更詳細之敘述。
主要處理器102包括一指令快取記憶體108以及一微程序單元144,上述每一個單元將提供指令至執行單元122。主要處理器102更包括其餘之功能單元,例如一指令轉譯器,一暫存器別名表,以及保留站等,但並不以此為限。
主要處理器102更包括一快取記憶體146。快取記憶體146包括一資料陣列174,用以儲存由系統記憶體194所快取而得之資料及/或指令之快取線。快取記憶體146更包括一標籤陣列176,用以儲存資料陣列174中相應之快取線之位址標籤。標籤陣列176更儲存快取線之狀態資料,包括快取一致性之資訊,例如MESI狀態。快取記憶體146更包括一擷取緩衝器172,用以儲存有關於快取記憶體146之請求154。第3圖係描述有關擷取緩衝器172之一項目300。有利的是,SPROC 134可分
析儲存於擷取緩衝器172之請求154資訊,以偵測如前所述死結(或活結)之錯誤之分類。於一實施例中,擷取緩衝器172包括資料陣列174之一使用者禁訪區(non-user-accessible)。快取記憶體146更包括耦接至資料陣列174、標籤陣列176以及擷取緩衝器172之一管線(pipeline)178,管線178根據請求154讀取或寫入資料陣列174以及標籤陣列176,其中請求154為來自主要處理器102之其他功能單元,尤其是來自主要處理器102之請求佇列186。請求佇列186所產生之請求154可相互仲裁以存取快取記憶體146。管線178同樣根據SPROC 134之指令寫入和讀取擷取緩衝器172。特別是,管線178可選擇性地抑制對快取記憶體146的仲裁請求154,選擇性地抑制位址比較結果,以及刪除對快取記憶體146之請求154,即為在未執行請求154之預期功能下將其完成。第2圖將針對管線178提出詳細之敘述。主要處理器102可包括一階層化之快取記憶體;較佳地,具有解決一死結(或活結)狀況之快取記憶體146,係位於快取記憶體階層架構中佔有相對較大之快取記憶體,例如一第二級快取記憶體或第三級快取記憶體,因此相較於全部的快取記憶體而言,由此所組成之額外死結(或活結)解除電路之尺寸以及功率消耗較小。無論如何,快取記憶體階層架構中將有多於一個或所有於之快取記憶體具有解除死結(或活結)狀態之能力。
執行單元122執行接收自指令快取記憶體108以及微程序單元144及/或所轉譯之微指令。執行單元122可能包括整數單元、浮點單元、載入單元、儲存單元、分支單元等等。執行單元122耦接至快取記憶體146,接下來將針對執行單元
122作詳述。執行單元122包括請求佇列186,例如一載入佇列以及一儲存佇列,但並不以此為限,舉例來說,其將使仲裁請求154可以存取快取記憶體146以載入或儲存資料。此外,請求佇列186可能存在於匯流排介面單元126中以及快取記憶體146本身,例如一監聽佇列、一重播佇列、或一回收佇列之中,舉例來說,可使仲裁請求154得以存取快取記憶體。請求佇列186包括項目,用以指定仲裁請求154對於快取記憶體146所欲執行之功能,例如讀取、寫入或查詢快取記憶體146。有利的是,在請求佇列186中每一個項目可包括一可由SPROC 134設置之一刪除位元(kill bit)168,以在SPROC 134同意存取快取記憶體146時,刪除位元168可致能SPROC 134請求快取記憶體146刪除仲裁請求154,接下來將提出更詳細之敘述。
主要處理器102更包括一引退單元184,其耦接至執行單元122,以引退完成之指令。引退單元184提供一指示元(indicator)以指示一指令已引退(另一種更好的做法為計算出有多少指令自每一個時脈週期引退)。有利的是,經由SPROC介面106提供引退指示元至SPROC 134以致能SPROC 134去判斷主要處理器102是否未在引退指令,亦即主要處理器102為懸置的,可能為一死結(或活結)狀態。
主要處理器102更包括一匯流排介面單元126,作為主要處理器102處理器匯流排的中介單元,匯流排介面單元126耦接至一晶片組128而耦接至系統記憶體194。
SPROC 134具有本身執行之編碼132以及用以儲存錯誤分類樣式以及處置198的RAM 136(以下將做更詳細之敘
述)。有利的是,使用者可對主要處理器102之特別模組暫存器(model specific register,MSR)104進行編碼以修正SPROC編碼132(以及微編碼144)。於一實施例中,可如下所述利用SPROC RAM 136來修正SPROC編碼132。對主要處理器102之MSR 104進行寫入(例如藉由系統韌體寫入,例如BIOS或系統軟體)將導致主要處理器102執行微編碼144並偵測所提供之修正。修正資訊包括修正編碼以及SPROC 134所需之SPROC 134指令指標值,以使SPROC 134執行修正編碼而非由指令指標值所指示的SPROC編碼132。微編碼144於SPROC RAM 136一非使用之區塊寫入修正編碼。微編碼144接著設定一SPROC 134指令中斷點項目,於SPROC 134指令指標值達到修正資訊所設定之值時,使SPROC 134跳躍至SPROC RAM 136之位置(即為修正編碼所駐留之位置)。
由於SPROC 134執行獨立於主要處理器102之外的編碼132,故其可偵測到當主要處理器102為懸置時,例如可能由死結(或活結)狀態所導致,以及獨立地嘗試解決死結(或活結)狀態。修正之SPROC編碼132包括一用以偵測仲裁請求154中之樣式198的樣式偵測器182,使擷取緩衝器172擷取快取記憶體146之相關預定死結(或活結)錯誤分類,以及藉由處置198執行動作以解決死結(或活結)狀態,以協助主要處理器102之除錯和(或)修正如前所述之錯誤。根據一實施例,處置198包括一連串之動作,包括:(1)抑制個別仲裁請求154嘗試對快取記憶體做存取之仲裁;(2)抑制與仲裁請求154相關之個別位址比較結果;以及(3)標記請求佇列186中之個別請求,其中可藉由設定
相關之刪除位元168以刪除個別請求。
第2圖係為一方塊圖,有關第1圖所述之快取記憶體146之管線178。管線178包括管線控制邏輯222,當仲裁請求154進入管線178時,管線控制邏輯222用以處理仲裁請求154並傳送到管線的下一級。特別是,管線控制邏輯222控制資料陣列174、標籤陣列176以及擷取緩衝器172之存取;另外,管線控制邏輯222於每一個仲裁請求154以產生一狀態232,並將其提供回請求者。
管線178包括一仲裁請求抑制器202,用以接收傳送自執行單元122之仲裁請求154以及回應地產生抑制仲裁請求216,其中抑制仲裁請求216提供至管線控制邏輯222。有利的是,SPROC 134可於仲裁請求抑制器202中經由SPROC介面106對暫存器進行編碼以設定個別仲裁請求輸入154,並根據與一樣式198相關之處置198抑制個別仲裁請求154,其中樣式198又與一預定之死結(或活結)錯誤分類有關。也就是說,SPROC 134將選擇性地以及暫時有效地避免一特定請求者(舉例來說,一特定請求佇列186)請求存取快取記憶體146,這將有助於改變對快取記憶體146進行存取之請求154的混合或順序,利用此方式可擾亂一活結序列並解決之。假設SPROC 134偵測到選擇性之仲裁請求154抑制可解決活結問題,SPROC 134將接著重新致能先前抑制之請求者以請求存取快取記憶體146,而微處理器100之操作將得以功能正確之方式持續進行。於一實施例中,仲裁請求抑制器202包括複數雙輸入AND閘,每一個雙輸入AND閘之一輸入接收仲裁請求154其中之一而另一輸入
則接收自暫存器之一相應位元,其中相應位元具有一SPROC 134所寫入之錯誤值其能抑制每一個仲裁請求154。因應於被抑制之仲裁請求216,管線控制邏輯222將產生仲裁請求允許訊號218送回至請求實體,以指出哪一個請求者154於一預定時脈週期內被允許存取快取記憶體146。有利的是,一個被抑制請求154將不會被允許存取快取記憶體146,這對解除死結(或活結)狀態有幫助,不論是其自己本身或搭配在此所述之其他可能動作來做解除。
管線178更包括位址比較器224,其耦接至一位址比較結果抑制器204。位址比較器224透過由仲裁請求154所指定之記憶體位址(允許對快取記憶體進行存取之位址),以及於主要處理器102之管線中較舊的記憶體操作之記憶體位址226之比對,以產生位址比較結果214並提供至位址比較結果抑制器204。位址比較可包括完整之位址比較,以及可只包括完整記憶體位址之部分子集合的比較。位址比較結果214更可包括仲裁請求位址154與標籤陣列176中之標籤之比較結果。位址比較結果抑制器204接收位址比較結果214以及回應地產生提供至管線控制邏輯222之抑制位址比較結果218。也就是說,一特定抑制位址比較結果218將指出一錯誤值(亦即位址比對錯誤)即使其相應之位址比較結果214具有一正確值(即為一正確之位址比對),如果SPROC 134為此編碼位址比較結果抑制器204這樣做的話。也就是說,就如同SPROC 134導致快取記憶體146對所選取位址之比較結果「說謊」般。舉例來說,樣式偵測器182可偵測擷取緩衝器172中之樣式,其中此擷取緩衝器172無
法繼續處理一特定仲裁請求154,原因在於此特定仲裁請求154之位址因為某些原因而對應至於其之前之仲裁請求154,因而此特定仲裁請求154無法繼續或完成執行。典型地,抑制一位址比較結果214將導致一功能性錯誤,所以此特定死結(或活結)解決指令基本上不能用來修正錯誤,但仍可用來尋找錯誤。SPROC 134可經由SPROC介面106於位址比較結果抑制器204中對一暫存器進行編碼,以藉由與相關於所偵測樣式之處置198來分別指定需被抑制的位址比較結果214,其中所偵測樣式198又與一預定分類之死結(或活結)錯誤有關。於一實施例中,位址比較結果抑制器204包括複數雙輸入AND閘,其中一輸入接收一位址比較結果214,而另一輸入則接收自暫存器之相應位元,其中相應位元具有一SPROC 134所寫入之錯誤值其能抑制每一個位址比較結果214。因應於其他輸入值而抑制位址比較結果218,管線控制邏輯222決定下一個動作以及產生請求154之狀態232傳回至請求實體。假設因為抑制而導致一個或以上之結果218指出位址比對錯誤時,則狀態232在位址比較結果214不被抑制時將具有不同於應有的值,亦即位址比較將在其他時候指出正確之位址比對。另外,在位址比較結果214不被抑制之情形下,管線控制邏輯222本身即可根據所指示的位址錯誤而執行不同之動作。有利的是,由請求實體所接收之修正狀態232及/或由管線控制邏輯222所接收之修正動作,將有利於解除死結(或活結)狀態,不論是透過本身或使用在此所提及的一或多個動作之結合來解決此問題。可能有一些錯誤之活結狀態不能透過前述之仲裁請求154解決。舉例來說,快取記憶
體146可能被設計為在兩個或以上之共存佇列項目間建立一環狀相依關係,因此抑制仲裁請求將無法解決活結狀態之問題。在這種狀況下,暫時抑制位址比較結果能解決活結狀態、亦可解決死結狀態之問題。
另外,管線控制邏輯222自第1圖之請求佇列186接收刪除位元168,並回應地刪除任何刪除位元168被設置的仲裁請求154。有利的是,SPROC 134可於一請求佇列186項目中根據與一偵測樣式198有關之處置198設定一刪除位元168,其中樣式198又與死結(或活結)錯誤之分類有關,以使管線控制邏輯222刪除相關之仲裁請求154。當管線控制邏輯222刪除一仲裁請求154時,其在不執行請求154所欲達成之功能下完成請求154。舉例來說,假設被刪除之請求154係為某些排序做配置,而其欲達成之功能為更新上傳標籤陣列176以及資料陣列174,於是管線控制邏輯222在不執行標籤陣列176和資料陣列174之更新下完成請求154。管線控制邏輯222禁止請求154之預期功能被執行並指示其狀態232完成,以使請求154不會繼續嘗試存取快取記憶體146。假設刪除一仲裁請求154,若不刪除狀態232的話,狀態232可能具有一不同之值。基本上,刪除一請求154將導致一功能性錯誤,這樣將使得死結(或活結)解決動作不能用來修正錯誤,但仍可用來尋找錯誤。有利的是,刪除一請求154可對解除死結(或活結)狀態有幫助,不論是透過本身或使用在此所提及的一或多個動作之結合來解決此問題。
第3圖係顯示一方塊圖,係有關第1圖所述擷取緩衝器172之一項目300。每一個項目300包括與被項目300所擷取
之仲裁請求有關之一時序(或順序)欄位302,一請求來源欄位304,一請求位址欄位306,以及一請求類型欄位308。
時序(或順序)欄位302係暫時地指出相較於其它仲裁請求154(與擷取緩衝器172中的項目300有關),一仲裁請求154的發生時間,其係指示一絕對時間、自處理器100重置後之決對時脈週期數、或者與項目300相關之一序列或順序之數字。
請求來源欄位304指出仲裁請求154之來源,例如一載入佇列、一儲存佇列、匯流排介面單元126、快取記憶體中之一重播佇列、一回收佇列或一監聽佇列,但並不以此為限。
請求位址欄位306係由仲裁請求154指出記憶體位址。
請求類型欄位308指出仲裁請求154所執行之動作類型,例如載入、儲存、快取線回收、監聽查詢、儲存完成、快取線回收完成、載入完成、或監聽查詢。此外,每一種類型更設定快取記憶體之階層。
第4圖顯示一流程圖,其係第1圖所述處理器之操作。方塊402為流程之起始。
於方塊402,SPROC 134偵測主要處理器102為是否懸置。於一實施例中,SPROC 134藉由引退單元184在一預定數量的時脈週期中並未引退任何指令,及/或匯流排介面126指出處理器匯流排192在一預定數量之時脈週期未完成任何傳輸的方式來偵測主要處理器102是否為懸置。上述的兩個預定數量之時脈週期係可編碼的,例如,可經由BIOS、由作業系統或其他軟體(例如經由上述的MSR為基礎的修正機制)、或是直接
透過與SPORC耦接的外部匯流排、或是經由專為此目的而構築的微處理器鎔絲來達成。接著進入方塊404。
於方塊404,根據方塊402偵測懸制之狀態,SPROC 134致能快取記憶體146以開始擷取對緩衝器172之項目300之仲裁請求154資訊。快取記憶體146之回應為開始擷取對緩衝器之仲裁請求154。接著進入方塊406。
於方塊406,SPROC 134等待一預定時間(例如,一預定數字之時脈週期)以使被擷取仲裁請求154之資訊得以累積於擷取緩衝器172,以及接著去能快取記憶體146使其無法擷取仲裁請求154至擷取緩衝器172。於另一實施例中,SPROC 134在擷取一預定數量之仲裁請求154至擷取緩衝器172後、或當擷取緩衝器172已滿時使快取記憶體去能。接著進入方塊408。
於方塊408,SPROC 134之樣式偵測器182分析在方塊406中擷取於擷取緩衝器172之仲裁請求154資訊以偵測樣式資訊198,其將指出在相關於樣式198的已知錯誤集合的樣式中,所相關之一已知分類之死結(或活結)錯誤。舉例來說,微處理器100之設計者可預先確認一個外部監聽早於相同快取線之第一級資料快取記憶體(level-1 data cache)被回收之錯誤。於另一實施例中,監聽可能指向快取記憶體146中同一集合但不同快取線作為回收快取線。接著進入方塊412。
方塊412,SPROC 134藉由執行如處置198所述之一連串動作以控制快取記憶體146之行為,用以解除於方塊402所偵測到之死結(或活結)狀態,其中動作與方塊408所偵測到之錯誤類型有關。如前所述,一連串解除死結(或活結)可能之動作
包括(1)藉由編對仲裁請求抑制器202進行編碼以抑制個別之仲裁請求154;(2)藉由對位址比較結果抑制器204進行編碼以抑制個別位址比較結果214;以及(3)藉由設定個別請求之相關刪除位元168以標記請求佇列186中需刪除之個別請求。方塊412之流程結束。
雖然實施例已敘述主要處理器具有一訊號處理核心,但於其它實施例中主要處理器可具有複數處理核心,即為一多核處理器。於上述之實施例中,處理器晶片對於每一個主要處理器核心皆具有相應之SPROC,或一單一SPROC可監視以及控制所有處理器核心。此外,雖然前述之實施例提到SPROC偵測以及解決於一階層化快取記憶體中之一特定快取記憶體之死結(或活結)狀態,其它實施例中SPROC也可於不同階層之快取記憶體中執行同樣之動作。此外,雖然實施例已敘述快取記憶體之通道為一單一管線,其它實施例中快取記憶體可包括複數管線。以及,雖然實施例已敘述特定資料以及標籤陣列之配置,其它實施例中前述之標籤陣列可為複數陣列,每一個陣列皆具有不同之資訊。最後,雖然實施例已敘述主要處理器為一x86架構之處理器,其它實施例中主要處理器可為一不同架構之處理器。
必須了解的是,雖然本發明已以較佳實施例揭露如上,然其並非用以限定,本發明任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾。舉例來說,可使用軟體表示某些功能之目的,例如函數(function)、製造(fabrication)、製造模型(modeling)、模擬(simulation)、敘述
(description)和(或)裝置之測試以及方法。上述之功能可利用一般編碼軟體(例如C、C++)、硬體描述語言(HDL)包括Verilog HDL、VHDL以及其它程式。上述之程式可執行於任意電腦可讀儲存媒體媒體,例如磁帶、半導體、磁片或光碟(例如CD-ROM、DVD-ROM等)、網路、單線路(wire line)、無線網路或其它通訊媒體。實施例所述之裝置及方法可包括於一知識產權核(semiconductor intellectual property core)中,例如一微處理器核心(例如具體化於一硬體描述語言中)以及轉變為一硬體於一積體電路。此外,實施例所述之裝置以及方法可為軟體與硬體之結合。更具體地,本發明可實現於一電腦之微處理器裝置中。最後,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧處理器晶片
102‧‧‧主要處理器
104、134‧‧‧服務處理器
106‧‧‧SPROC介面
108‧‧‧指令快取記憶體
122‧‧‧執行單元
126‧‧‧匯流排介面單元
128‧‧‧晶片
132‧‧‧編碼
136‧‧‧RAM
144‧‧‧微程序單元
146‧‧‧快取記憶體
154‧‧‧請求
172‧‧‧擷取緩衝器
174‧‧‧資料陣列
176‧‧‧標籤陣列
178‧‧‧管線
182‧‧‧樣式偵測器
184‧‧‧引退單元
186‧‧‧請求佇列
188‧‧‧系統
192‧‧‧處理器匯流排
194‧‧‧系統記憶體
198‧‧‧處置
Claims (20)
- 一種微處理器,包括:一主要處理器,以及一服務處理器,用以偵測和解除上述主要處理器之一死結(或一活結)狀態;一快取記憶體;以及一緩衝器;其中,因應於上述主要處理器之上述死結(或上述活結)狀態之偵測,上述服務處理器擷取對上述快取記憶體之一仲裁請求至上述緩衝器中;其中,上述服務處理器更包括分析所擷取之該仲裁請求,以偵測用以指示導致上述主要處理器中上述死結(或上述活結)狀態之錯誤之一樣式;其中,上述服務處理器更包括執行一個或多個與上述樣式相關之動作以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第1項所述之微處理器,更包括:一引退單元,用以引退一指令;其中上述服務處理器藉由偵測上述主要處理器在一預定數量之時脈週期內尚未引退一指令而辨識上述死結(或上述活結)狀態。
- 如申請專利範圍第1項所述之微處理器,其中上述之預定數量之時脈週期係可編碼的。
- 如申請專利範圍第1項所述之微處理器,更包括: 一匯流排介面單元,用以執行一處理器匯流排上之上述主要處理器與一外部記憶體之傳輸;其中上述服務處理器藉由偵測上述主要處理器在一預定數目之時脈週期內未完成一處理器匯流排傳輸而辨識上述死結(或上述活結)狀態。
- 如申請專利範圍第4項所述之微處理器,其中上述之預定數量之時脈週期係可編碼的。
- 如申請專利範圍第1項所述之微處理器,更包括:一快取記憶體;其中上述服務處理器用以抑制上述對快取記憶體之一個或多個仲裁請求以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第1項所述之微處理器,更包括:一快取記憶體;其中上述服務處理器藉由抑制一或多個對快取記憶體之請求允許存取之位址與在主處理器對快取記憶體請求存取之較舊位址的比較結果,用以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第1項所述之微處理器,更包括:一快取記憶體;以及一請求佇列,用以儲存對上述快取記憶體之請求;其中上述服務處理器更標示以及刪除上述請求佇列中一個或多個請求以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第1項所述之微處理器,其中上述服務處理器用執行修正編碼以偵測和解除上述主要處理器中上述死結(或上述活結)狀態。
- 一種微處理器死結或活結狀態解除方法,包括:藉由一微處理器之一主要處理器執行指令;藉由上述微處理器之一服務處理器偵測上述主要處理器中一死結(或一活結)狀態;藉由上述服務處理器解除上述主要處理器中上述死結(或上述活結)狀態;根據偵測上述主要處理器之上述死結(或上述活結)狀態,上述服務處理器擷取對一快取記憶體之一仲裁請求至一緩衝器中;分析所擷取之一仲裁請求以偵測指示導致上述主要處理器中上述死結(或上述活結)狀態之錯誤之一樣式;以及執行一個或多個與上述樣式相關之動作以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第10項所述之微處理器死結或活結狀態解除方法,更包括:偵測上述主要處理器在一預定數目之時脈週期內尚未引退一指令而辨識上述死結(或上述活結)狀態。
- 如申請專利範圍第11項所述之微處理器死結或活結狀態解除方法,其中上述之預定數量之時脈週期係可編碼的。
- 如申請專利範圍第10項所述之微處理器死結或活結狀態解除方法,更包括: 一匯流排介面單元,用以在一處理器匯流排執行上述主要處理器與一外部記憶體之傳輸;其中上述服務處理器藉由偵測上述主要處理器在一預定數目之時脈週期內尚未完成上述處理器匯流排之傳輸而辨識上述死結(或上述活結)狀態。
- 如申請專利範圍第13項所述之微處理器死結或活結狀態解除方法,其中上述之預定數量之時脈週期係可編碼的。
- 如申請專利範圍第10項所述之微處理器死結或活結狀態解除方法,更包括:藉由上述服務處理器抑制主處理器對上述快取記憶體之一個或多個仲裁請求以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第10項所述之微處理器死結或活結狀態解除方法,更包括:藉由上述服務處理器抑制一或多個對快取記憶體之請求允許存取之位址與在主處理器對快取記憶體請求存取之較舊位址的比較結果以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第10項所述之微處理器死結或活結狀態解除方法,更包括:藉由上述服務處理器標示以及刪除一請求佇列中一個或多個請求以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第10項所述之微處理器死結或活結狀態解 除方法,其中藉由上述服務處理器用執行修正微編碼以偵測和解除上述主要處理器中上述死結(或上述活結)狀態。
- 一種電腦程式產品,使用於一電腦裝置之可編碼於一非暫態之電腦可讀儲存媒體,其中上述電腦程式產品包括:電腦可讀程式碼,編碼於上述電腦可讀儲存媒體,用以指定一微處理器,上述電腦可讀程式碼包括:第一程式碼用以指定一主要處理器;第二程式碼用以指定一服務處理器,用以偵測和解除上述主要處理器中一死結(或一活結)狀態;第三程式碼用以指定一快取記憶體;第四程式碼用以指定一緩衝器;其中,因應於上述主要處理器之上述死結(或上述活結)狀態之偵測,上述服務處理器擷取對上述快取記憶體之一仲裁請求至上述緩衝器中;其中,上述服務處理器更包括分析所擷取之該仲裁請求,以偵測用以指示導致上述主要處理器中上述死結(或上述活結)狀態之錯誤之一樣式;其中,上述服務處理器更包括執行一個或多個與上述樣式相關之動作以解除上述主要處理器中上述死結(或上述活結)狀態。
- 如申請專利範圍第19項所述之電腦程式產品,其中包括至少一非暫態之電腦可讀儲存媒體,例如一磁帶、一磁片、一光碟或其它磁性、光學或電子儲存媒體,以及一網路或單線路通訊媒體。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261617406P | 2012-03-29 | 2012-03-29 | |
US201361755685P | 2013-01-23 | 2013-01-23 | |
US13/758,924 US9575816B2 (en) | 2012-03-29 | 2013-02-04 | Deadlock/livelock resolution using service processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342038A TW201342038A (zh) | 2013-10-16 |
TWI497278B true TWI497278B (zh) | 2015-08-21 |
Family
ID=47900776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102111358A TWI497278B (zh) | 2012-03-29 | 2013-03-29 | 微處理器、死結或活結狀態解除方法以及其電腦程式產品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9575816B2 (zh) |
EP (1) | EP2645237B1 (zh) |
CN (1) | CN103268276B (zh) |
TW (1) | TWI497278B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150033242A1 (en) * | 2013-07-29 | 2015-01-29 | Andriy Michailovich Stepanchuk | Method for Automatic Parallel Computing |
US9237019B2 (en) | 2013-09-25 | 2016-01-12 | Amazon Technologies, Inc. | Resource locators with keys |
US9524227B2 (en) | 2014-07-09 | 2016-12-20 | Intel Corporation | Apparatuses and methods for generating a suppressed address trace |
US9600179B2 (en) * | 2014-07-30 | 2017-03-21 | Arm Limited | Access suppression in a memory device |
EP3047380B1 (en) * | 2014-12-13 | 2019-04-24 | VIA Alliance Semiconductor Co., Ltd. | Pattern detector for detecting hangs |
CN105934743B (zh) * | 2014-12-13 | 2019-06-04 | 上海兆芯集成电路有限公司 | 一种微处理器及在其中检测arb的模式的方法 |
WO2016092347A1 (en) * | 2014-12-13 | 2016-06-16 | Via Alliance Semiconductor Co., Ltd. | Distributed hang recovery logic |
CN105980979B (zh) * | 2014-12-13 | 2018-11-20 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN105740079A (zh) * | 2016-01-27 | 2016-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种死锁处理方法与系统 |
US10783011B2 (en) | 2017-09-21 | 2020-09-22 | Qualcomm Incorporated | Deadlock free resource management in block based computing architectures |
TWI739556B (zh) * | 2020-08-19 | 2021-09-11 | 瑞昱半導體股份有限公司 | 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940826A (en) * | 1997-01-07 | 1999-08-17 | Unisys Corporation | Dual XPCS for disaster recovery in multi-host computer complexes |
US7500035B2 (en) * | 2006-09-19 | 2009-03-03 | International Business Machines Corporation | Livelock resolution method |
US20100125707A1 (en) * | 2008-11-19 | 2010-05-20 | Sun Microsystems, Inc. | Deadlock avoidance during store-mark acquisition |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526485B1 (en) * | 1999-08-03 | 2003-02-25 | Sun Microsystems, Inc. | Apparatus and method for bad address handling |
US6745321B1 (en) * | 1999-11-08 | 2004-06-01 | International Business Machines Corporation | Method and apparatus for harvesting problematic code sections aggravating hardware design flaws in a microprocessor |
US6553512B1 (en) | 2000-02-16 | 2003-04-22 | Hewlett Packard Development Company, L.P. | Method and apparatus for resolving CPU deadlocks |
US6721871B2 (en) * | 2002-04-02 | 2004-04-13 | Nokia Corporation | Method and apparatus for synchronizing data stores with respect to changes in folders |
CN101044461A (zh) * | 2004-10-19 | 2007-09-26 | 皇家飞利浦电子股份有限公司 | 数据处理系统和用于监控处理单元的高速缓冲存储器一致性的方法 |
US20060184770A1 (en) * | 2005-02-12 | 2006-08-17 | International Business Machines Corporation | Method of implementing precise, localized hardware-error workarounds under centralized control |
US7627807B2 (en) | 2005-04-26 | 2009-12-01 | Arm Limited | Monitoring a data processor to detect abnormal operation |
US20070088939A1 (en) * | 2005-10-17 | 2007-04-19 | Dan Baumberger | Automatic and dynamic loading of instruction set architecture extensions |
US7590784B2 (en) * | 2006-08-31 | 2009-09-15 | Intel Corporation | Detecting and resolving locks in a memory unit |
US8131980B2 (en) | 2006-09-11 | 2012-03-06 | International Business Machines Corporation | Structure for dynamic livelock resolution with variable delay memory access queue |
US7769958B2 (en) * | 2007-06-22 | 2010-08-03 | Mips Technologies, Inc. | Avoiding livelock using intervention messages in multiple core processors |
US8719555B2 (en) * | 2008-01-31 | 2014-05-06 | Arm Norway As | Method for overcoming livelock in a multi-threaded system |
CN101937365B (zh) * | 2009-06-30 | 2013-05-15 | 国际商业机器公司 | 并行程序的死锁检测方法和系统 |
-
2013
- 2013-02-04 US US13/758,924 patent/US9575816B2/en active Active
- 2013-03-13 EP EP13159042.4A patent/EP2645237B1/en active Active
- 2013-03-29 CN CN201310110030.3A patent/CN103268276B/zh active Active
- 2013-03-29 TW TW102111358A patent/TWI497278B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940826A (en) * | 1997-01-07 | 1999-08-17 | Unisys Corporation | Dual XPCS for disaster recovery in multi-host computer complexes |
US7500035B2 (en) * | 2006-09-19 | 2009-03-03 | International Business Machines Corporation | Livelock resolution method |
US20100125707A1 (en) * | 2008-11-19 | 2010-05-20 | Sun Microsystems, Inc. | Deadlock avoidance during store-mark acquisition |
Also Published As
Publication number | Publication date |
---|---|
EP2645237B1 (en) | 2021-11-10 |
EP2645237A2 (en) | 2013-10-02 |
US20130318530A1 (en) | 2013-11-28 |
CN103268276B (zh) | 2017-03-01 |
US9575816B2 (en) | 2017-02-21 |
EP2645237A3 (en) | 2015-05-27 |
TW201342038A (zh) | 2013-10-16 |
CN103268276A (zh) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI497278B (zh) | 微處理器、死結或活結狀態解除方法以及其電腦程式產品 | |
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
TWI514275B (zh) | 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 | |
TWI638311B (zh) | Data processing method and processor | |
US8495344B2 (en) | Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information | |
US8904073B2 (en) | Coherence processing with error checking | |
TWI712952B (zh) | 持續確定處理器、方法、系統及指令 | |
CN115769188A (zh) | 用于执行二进制翻译的系统和方法 | |
TW567435B (en) | Scalable processor | |
US9389871B2 (en) | Combined floating point multiplier adder with intermediate rounding logic | |
US20200210185A1 (en) | Method for migrating cpu state from an inoperable core to a spare core | |
TW201108108A (en) | Microprocessors and performing methods thereof | |
US11119925B2 (en) | Apparatus and method for managing capability metadata | |
TWI428755B (zh) | 用於配置直接記憶體存取(dma)頻道識別符之方法、電腦可讀取儲存媒體、及資料處理系統 | |
TW201804318A (zh) | 用以識別導致遠程異動式執行中止之儲存器的處理器、方法與系統 | |
JP6306261B2 (ja) | トランザクションメモリプログラムのためのソフトウェアリプレイヤ | |
TWI226550B (en) | Method, apparatus, and computer program product for migrating data subject to access by input/output devices | |
JP6963552B2 (ja) | ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ | |
US9448909B2 (en) | Randomly branching using performance counters | |
JP6192858B2 (ja) | ハングを検出するためのロジック・アナライザ | |
US7552269B2 (en) | Synchronizing a plurality of processors | |
KR102199342B1 (ko) | 스토어 리플레이 정책 | |
JP3715057B2 (ja) | パニック・トラップ・システム | |
TW202242645A (zh) | 主機系統及其操作方法 | |
KR20240089036A (ko) | 캐시 라인 일관성 상태 다운그레이드 |