專利名稱:用于動態(tài)管理保存的處理器狀態(tài)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種改進(jìn)的用于處理中斷的數(shù)據(jù)處理系統(tǒng)和方法。
背景技術(shù):
當(dāng)執(zhí)行一組計算機(jī)指令時,處理器被頻繁地中斷。這個中斷可能由一個中斷或者異常引起。
中斷是一個與在中斷發(fā)生時正在執(zhí)行的指令沒有關(guān)聯(lián)的異步中斷事件。即,中斷常常由在處理器外的某些事件、諸如來自一個輸入/輸出(I/O)設(shè)備的輸入、來自另一個處理器對一個操作的調(diào)用等所引起。其它中斷可能是內(nèi)部引起的,例如,由控制任務(wù)切換的定時器到期引起。
異常是一個直接由當(dāng)發(fā)生異常時正在執(zhí)行的指令的執(zhí)行而引起的同步事件。也就是說,異常是一個來自處理器內(nèi)部的事件、諸如運算溢出、定時的維護(hù)檢查、內(nèi)部性能監(jiān)控器、板上工作負(fù)荷管理器等。通常,異常比中斷頻繁得多。
術(shù)語“中斷”和“異?!背3J腔Q的。在本說明書中,術(shù)語“中斷”將用來描述“中斷”和“異?!敝袛?。
隨著計算機(jī)軟件和硬件變得更加復(fù)雜,中斷的數(shù)目和頻率顯著地增加。這些中斷是必要的,因為它們支持多個處理過程的執(zhí)行、多個外設(shè)的處理、和各個組件的性能監(jiān)控。雖然這種特征是有利的,但是由中斷消耗的計算能力被這樣顯著地增加了以致它超過了處理器的處理速度增長。因此,在很多情況下,盡管增加了處理器時鐘頻率,但是系統(tǒng)性能實際上降低了。
圖1說明了一個傳統(tǒng)的處理器內(nèi)核100。在處理器內(nèi)核100內(nèi),第一級指令高速緩存(L1I-高速緩存)102向指令序列邏輯104提供指令,其中該指令序列邏輯104向適當(dāng)?shù)膱?zhí)行單元108發(fā)布指令用于執(zhí)行。可能包括浮點執(zhí)行單元、定點執(zhí)行單元、分支執(zhí)行單元等的執(zhí)行單元108包括一個加載/存儲單元(LSU)108a。LSU 108a執(zhí)行加載和存儲指令,其分別從第一級數(shù)據(jù)高速緩存(L1 D-高速緩存)112中加載數(shù)據(jù)到體系結(jié)構(gòu)寄存器110中、以及從體系結(jié)構(gòu)寄存器110中存儲數(shù)據(jù)到L1 D-高速緩存112中。未命中L1高速緩存102和112的數(shù)據(jù)和指令請求能夠通過經(jīng)由存儲器總線116訪問系統(tǒng)存儲器118來解決。
如上所述,處理器內(nèi)核100常遇到來自由外部中斷線路114表示的多個源的中斷。當(dāng)由處理器內(nèi)核100收到一個中斷信號(例如,經(jīng)由一條中斷線114)時,暫停當(dāng)前處理過程的執(zhí)行,并且由被稱為中斷處理程序的中斷特定軟件來處理中斷。在其它動作當(dāng)中,中斷處理程序通過由LSU 108a執(zhí)行存儲和加載指令來保存和恢復(fù)在中斷時執(zhí)行的處理過程的體系結(jié)構(gòu)狀態(tài)。使用LSU 108a來向系統(tǒng)存儲器118和從系統(tǒng)存儲器118中傳輸體系結(jié)構(gòu)狀態(tài)阻塞了中斷處理程序執(zhí)行其它存儲器訪問指令(或者在超標(biāo)量計算機(jī)的情況下執(zhí)行另一個處理過程),直到狀態(tài)傳輸完成為止。因此,通過處理器的執(zhí)行單元來保存和隨后恢復(fù)一個處理過程的體系結(jié)構(gòu)狀態(tài)導(dǎo)致了在執(zhí)行被中斷的處理過程以及中斷處理程序過程中的延遲。這個延遲導(dǎo)致處理器的總體性能減低。因此,本發(fā)明認(rèn)識到,需要有一種特別是響應(yīng)于中斷,最小化由于保存和恢復(fù)體系結(jié)構(gòu)狀態(tài)而產(chǎn)生的處理延遲的方法和系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明提出了一種用于改善在一個數(shù)據(jù)處理系統(tǒng)的處理器內(nèi)的中斷處理的方法和系統(tǒng)。
當(dāng)在處理器接收了一個中斷信號時,當(dāng)前正在執(zhí)行的處理過程的硬體系結(jié)構(gòu)狀態(tài)被加載到一個或多個專用的映像寄存器中。硬體系結(jié)構(gòu)狀態(tài)包括在為執(zhí)行被中斷的處理過程所必不可少的處理器內(nèi)的信息。一種進(jìn)一步保存這個硬體系結(jié)構(gòu)狀態(tài)的有益方法包括使用高帶寬總線直接從映像寄存器向系統(tǒng)存儲器傳送硬體系結(jié)構(gòu)狀態(tài),而不使用(以及因此占用)處理器的正常加載/存儲路徑和執(zhí)行單元。在硬體系結(jié)構(gòu)狀態(tài)已經(jīng)被加載到映像寄存器中之后,中斷處理程序立即開始運行。
包括高速緩存內(nèi)容的處理過程的軟狀態(tài)也至少部分地被保存到系統(tǒng)存儲器中。為了加速軟狀態(tài)的保存,以及避免與正在執(zhí)行的中斷處理程序的數(shù)據(jù)沖突,軟狀態(tài)最好是使用掃描鏈路徑從處理器進(jìn)行傳送,其在現(xiàn)有技術(shù)中通常是僅僅在制造商測試期間使用而在正常操作期間是不使用的。雖然被保存在系統(tǒng)存儲器中,但是軟狀態(tài)以類似于高速緩存分級結(jié)構(gòu)的方式維持與高速緩存的一致性。也就是說,軟狀態(tài)被存儲在系統(tǒng)存儲器中可以被認(rèn)為是一個“虛擬高速緩存”的位置中。最好是,每當(dāng)一個對虛擬高速緩存窺探(snooped)的操作指定任何與虛擬高速緩存線地址具有相同最高有效位的地址時,在軟狀態(tài)內(nèi)的虛擬高速緩存線被無效。
一旦完成中斷處理程序,恢復(fù)用于一個被中斷的處理過程的硬體系結(jié)構(gòu)狀態(tài)和軟狀態(tài),該處理過程能夠依據(jù)硬體系結(jié)構(gòu)狀態(tài)的加載而立即運行。
為了提供對可運行不同操作系統(tǒng)的其它處理器及其它分區(qū)的訪問,硬狀態(tài)和軟狀態(tài)都可以被保存在可對任何處理器和/或分區(qū)訪問的系統(tǒng)存儲器的一個保留區(qū)中。
通過以下的詳細(xì)描述,本發(fā)明的以上及另外的目的、特征、和優(yōu)點將變得顯而易見。
本發(fā)明的創(chuàng)新特征將在附加的權(quán)利要求中加以闡明。然而本發(fā)明自身、以及一個最佳使用方式、它的更多目的和優(yōu)點,通過結(jié)合附圖參考以下一個說明性實施例的詳細(xì)說明,可得到最好的理解,其中
圖1描述了一個傳統(tǒng)的計算機(jī)系統(tǒng)的方框圖,該計算機(jī)系統(tǒng)使用了用于使用一個加載/存儲單元保存處理器的體系結(jié)構(gòu)狀態(tài)的現(xiàn)有技術(shù)方法;圖2說明了依據(jù)本發(fā)明的一個數(shù)據(jù)處理系統(tǒng)的示范性實施例的方框圖;圖3a和3b描述了在圖2中說明的一個處理單元的補(bǔ)充細(xì)節(jié);圖4說明了按照本發(fā)明的一個示范性軟件配置的分層圖;圖5a和5b一起形成了依據(jù)本發(fā)明的一個示范性中斷處理過程的流程圖;圖6a和6b是顯示了依據(jù)本發(fā)明用于保存硬體系結(jié)構(gòu)狀態(tài)和軟狀態(tài)的、如圖5中所示的步驟的更多細(xì)節(jié)的流程圖;圖7描述了由本發(fā)明使用以至少向存儲器傳遞一個處理過程的軟狀態(tài)的掃描鏈路徑;圖8a-8c說明了依據(jù)本發(fā)明使用的、用以存儲至少一級中斷處理程序(First Level Interrupt Handler,F(xiàn)LIH)、二級中斷處理程序(Second Level Interrupt Handler,SLIH)和制造級測試指令的、在圖2中描述的閃速ROM的補(bǔ)充細(xì)節(jié);圖9是一個描述了依據(jù)本發(fā)明由一個處理器在收到中斷時跳轉(zhuǎn)到一個預(yù)測SLIH的流程圖;圖10描述了在存儲的硬體系結(jié)構(gòu)狀態(tài)、存儲的軟狀態(tài)、存儲器分區(qū)和處理器之間的邏輯與通信關(guān)系;圖11說明了一個用于在存儲器中存儲軟狀態(tài)的示范性數(shù)據(jù)結(jié)構(gòu);以及圖12是一種用于在計算機(jī)系統(tǒng)正常操作期間通過制造級測試程序的執(zhí)行測試一個處理器的示范性方法的流程圖。
具體實施例方式
下面參見圖2,描述了一個多處理器(MP)數(shù)據(jù)處理系統(tǒng)201的示范性實施例的高級框圖。雖然MP數(shù)據(jù)處理系統(tǒng)201被描述成一個對稱的多處理器(SMP),但是本發(fā)明可以和計算機(jī)體系結(jié)構(gòu)領(lǐng)域技術(shù)人員已知的任何MP數(shù)據(jù)處理系統(tǒng)、包括但是不局限于不均勻的存儲器訪問(NUMA)MP或者僅有高速緩存的存儲器體系結(jié)構(gòu)(CacheOnly Memory Architecture,COMA)MP一起使用。
依據(jù)本發(fā)明,MP數(shù)據(jù)處理系統(tǒng)201包括多個被連接用于通過互連222進(jìn)行通信的處理單元200,其被描述為處理單元200a到200n。在一個最佳實施例中,應(yīng)當(dāng)明白,在MP數(shù)據(jù)處理系統(tǒng)201中的每個處理單元200、包括處理單元200a和處理單元200n在體系結(jié)構(gòu)上是相似的或者相同的。處理單元200a是單個集成電路超標(biāo)量處理器,如以下更深入討論得那樣,其包括全部由集成電路形成的各種執(zhí)行單元、寄存器、緩沖器、存儲器、及其它功能單元。在MP數(shù)據(jù)處理系統(tǒng)201中,每個處理單元200通過一條高帶寬專用總線116連接到相應(yīng)的系統(tǒng)存儲器118,其中系統(tǒng)存儲器118被描述成用于處理單元200a的系統(tǒng)存儲器118a和用于處理單元200n的系統(tǒng)存儲器118n。
處理單元200a包括一個指令序列單元(ISU)202,其包括用于讀取、調(diào)度和發(fā)布將被執(zhí)行單元(EU)204執(zhí)行的指令的邏輯。ISU202和EU 204的詳細(xì)描述將在圖3中以示范性形式給出。
與EU 204有關(guān)的是包含處理單元200a內(nèi)的信息的“硬”狀態(tài)寄存器206,其中該信息是執(zhí)行當(dāng)前正在執(zhí)行的處理過程所必需的,連接到硬狀態(tài)寄存器206的是下一個硬狀態(tài)寄存器210,其包含例如當(dāng)當(dāng)前處理過程終止或者被中斷時用于將被執(zhí)行的下一個處理過程的硬狀態(tài)。還與硬狀態(tài)寄存器206有關(guān)聯(lián)的是映像寄存器208,其包含(或者將會包含)當(dāng)當(dāng)前正在執(zhí)行的處理過程終止或者被中斷時硬狀態(tài)寄存器206中的內(nèi)容的拷貝。
每個處理單元200進(jìn)一步包括一個高速緩存分級結(jié)構(gòu)212,其可以包括多級高速緩沖存儲器。對從系統(tǒng)存儲器118加載的指令和數(shù)據(jù)的芯片內(nèi)(on-chip)存儲可以通過例如高速緩存分級結(jié)構(gòu)212實現(xiàn),其中如圖3所示,高速緩存分級結(jié)構(gòu)212可以包含第一級指令高速緩沖存儲器(L1 I-高速緩存)18、第一級數(shù)據(jù)高速緩存(L1 D-高速緩存)20、和共用的第二級高速緩存(L2高速緩存)16。高速緩存分級結(jié)構(gòu)212經(jīng)由高速緩存數(shù)據(jù)路徑218,并且依據(jù)至少一個實施例還經(jīng)由掃描鏈路徑214,連接到一個用于系統(tǒng)存儲器118的芯片內(nèi)集成存儲器控制器(IMC)220。由于掃描鏈路徑214是一個串行路徑,所以在掃描鏈路徑214和IMC 220之間連接串行-到-并行接口216。在下面詳細(xì)介紹處理單元200a中所描述組件的功能。
下面參見圖3a,其顯示了處理單元200的其它細(xì)節(jié)。處理單元200包含一個芯片內(nèi)多級高速緩存分級結(jié)構(gòu),其包含一個共用的第二級(L2)高速緩存16和分為兩支的第一級(L1)指令(I)和數(shù)據(jù)(D)高速緩存18和20。如本領(lǐng)域技術(shù)人員眾所周知的那樣,高速緩存16、18和20提供了對高速緩存線的低延遲訪問,該高速緩存線對應(yīng)于系統(tǒng)存儲器118中的存儲單元。
響應(yīng)于駐留在取指令地址寄存器(IFAR)30中的有效地址(EA),從L1 I-高速緩存18中讀取用于處理的指令。在每個周期期間,一個新的取指令地址可以從以下三個源之一被加載到IFAR 30中分支預(yù)測單元(BPU)36、全局完成表(GCT)38、和分支執(zhí)行單元(BEU)92,其中分支預(yù)測單元(BPU)36提供由條件分支指令的預(yù)測而產(chǎn)生的推測性目標(biāo)路徑和連續(xù)地址,全局完成表(GCT)38提供刷新和中斷地址,而分支執(zhí)行單元(BEU)92提供由預(yù)測的條件分支指令的解決而產(chǎn)生的非推測性的地址。與BPU 36有關(guān)聯(lián)的是一個分支歷史記錄表(BHT)35,其中記錄了條件分支指令的解決方案以幫助預(yù)測將來的分支指令。
有效地址(EA)、諸如在IFAR 30內(nèi)的取指令地址是由處理器生成的數(shù)據(jù)或者指令的地址。EA指定一個段寄存器和在該段內(nèi)的偏移量信息。為了訪問存儲器中的數(shù)據(jù)(包括指令),通過一級或多級轉(zhuǎn)換,把EA轉(zhuǎn)換成為一個與其中存儲有該數(shù)據(jù)或者指令的物理單元有關(guān)的實際地址(RA)。
在處理單元200內(nèi),到實際地址的有效轉(zhuǎn)換是由存儲器管理單元(MMU)和相關(guān)的地址轉(zhuǎn)換設(shè)備執(zhí)行的。最好是,為指令訪問和數(shù)據(jù)訪問提供一個獨立的MMU。在圖3a中,說明了單個MMU 112,而且為了清楚起見,僅僅顯示了到ISU 202的連接。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,MMU 112最好還包括到加載/存儲單元(LSU)96和98及其它管理存儲器訪問所需要的組件的連接(未顯示)。MMU112包括數(shù)據(jù)轉(zhuǎn)換后備緩沖區(qū)(DTLB)113和指令轉(zhuǎn)換后備緩沖區(qū)(ITLB)115。每個TLB包含最近參考的頁表條目,其被訪問用以為數(shù)據(jù)(DTLB 113)或者指令(ITLB 115)把EA轉(zhuǎn)換為RA。來自ITLB 115的最近參考的EA-到-RA轉(zhuǎn)換被高速緩存在EOP有效-到-實際地址表(ERAT)32中。
如果命中/未命中邏輯22,在由ERAT 32把包含在IFAR 30中的EA進(jìn)行轉(zhuǎn)換并且在I-高速緩存目錄34中查找實際地址(RA)之后,確定對應(yīng)于IFAR 30中的EA的高速緩存線指令沒有駐留于L1 I-高速緩存18中,則命中/未命中邏輯22經(jīng)由I-高速緩存請求總線24把RA作為一個請求地址提供給L2高速緩存16。這樣的請求地址也可以由L2高速緩存16內(nèi)的預(yù)取邏輯基于最近訪問模式產(chǎn)生。響應(yīng)于一個請求地址,L2高速緩存16輸出一高速緩存線的指令,這些指令在經(jīng)過可選擇的預(yù)解碼邏輯144之后,可經(jīng)由I-高速緩存重新加載總線26加載到預(yù)取緩沖器(PB)28和L1 I-高速緩存18中。
一旦由IFAR 30中的EA指定的高速緩存線駐留在L1高速緩存18中,L1 I-高速緩存18就把該高速緩存線輸出到分支預(yù)測單元(BPU)36和取指令緩沖器(IFB)40中。BPU 36掃描該高速緩存線指令中的分支指令,并且如果有的話,則預(yù)測條件分支指令的結(jié)果。繼一個分支預(yù)測之后,正如以上討論的那樣,BPU 36向IFAR 30提供一個推測性取指令地址,并且傳遞該預(yù)測結(jié)果到分支指令隊列64中,以便當(dāng)條件分支指令隨后由分支執(zhí)行單元92處理時,能夠確定預(yù)測的準(zhǔn)確度。
IFB 40暫時緩存從L1 I-高速緩存18接收的高速緩存線的指令,直到該高速緩存線的指令能夠被指令轉(zhuǎn)換單元(ITU)42轉(zhuǎn)換為止。在處理單元200的說明實施例中,ITU 42把指令從用戶指令集體系結(jié)構(gòu)(UISA)指令轉(zhuǎn)化成為可以被處理單元200的執(zhí)行單元直接執(zhí)行的、不同數(shù)目的內(nèi)部ISA(IISA)指令。這樣的轉(zhuǎn)換可以,例如,通過參考保存在一個只讀存儲器(ROM)模板中的微碼來執(zhí)行。在至少某些實施例中,該UISA-到-IISA的轉(zhuǎn)換會產(chǎn)生一個和UISA指令不同數(shù)目的IISA指令,及/或和相應(yīng)的UISA指令相比、具有不同長度的IISA指令。然后產(chǎn)生的IISA指令通過全局完成表38指定到一個指令組中,該指令組中的成員可以被允許彼此之間相互無序地發(fā)送和執(zhí)行。全局完成表38跟蹤每個還有待于通過至少一個相關(guān)的EA完成執(zhí)行的指令組,該EA最好是在該指令組中最早指令的EA。
繼UISA-到-IISA的指令轉(zhuǎn)換之后,依據(jù)指令的類型,可能無序地將指令發(fā)送給鎖存器44、46、48和50中的一個。這就是說,分支指令及其它條件寄存器(CR)修改指令被發(fā)送給鎖存器44;定點和加載-存儲指令被發(fā)送給鎖存器46和48中的任何一個;而浮點指令被發(fā)送給鎖存器50。然后,通過CR映射器52、連接和計數(shù)(LC)寄存器映射器54、異常寄存器(XER)映射器56、通用寄存器(GPR)映射器58、以及浮點寄存器(FPR)映射器60中的適當(dāng)一個,向每個請求一個重命名寄存器以暫時存儲執(zhí)行結(jié)果的指令,分配一個或多個重命名寄存器。
然后,發(fā)送的指令被臨時放置在CR發(fā)布隊列(CRIQ)62、分支發(fā)布隊列(BIQ)64、定點發(fā)布隊列(FXIQ)66和68、以及浮點發(fā)布隊列(FPIQ)70和72中的適當(dāng)一個中。只要觀察到數(shù)據(jù)相關(guān)性和反相關(guān)性,就能夠隨機(jī)地從發(fā)布隊列62、64、66、68、70以及72中發(fā)布指令到處理單元10的執(zhí)行單元用于執(zhí)行。然而,在該指令執(zhí)行完成之前,一直在發(fā)布隊列62-72中保持該指令,而且在該指令中的任何一個需要被重新發(fā)布的情況下,如果有結(jié)果數(shù)據(jù)的話,則寫回結(jié)果數(shù)據(jù)。
如說明的那樣,處理單元204的執(zhí)行單元包括一個CR單元(CRU)90,用于執(zhí)行CR-修改指令;一個分支執(zhí)行單元(BEU)92,用于執(zhí)行分支指令;兩個定點單元(FXU)94和100,用于執(zhí)行定點指令;兩個加載-存儲單元(LSU)96和98,用于執(zhí)行加載和存儲指令;以及兩個浮點單元(FPU)102和104,用于執(zhí)行浮點指令。每一個執(zhí)行單元90-104最好被實現(xiàn)為一個具有若干流水線階段的執(zhí)行流水線。
在執(zhí)行單元90-104之一內(nèi)執(zhí)行期間,如果存在操作數(shù),則一個指令從和該執(zhí)行單元相連接的寄存器堆內(nèi)的一個或多個體系結(jié)構(gòu)及/或重命名寄存器中接收操作數(shù)。當(dāng)執(zhí)行CR-修改或者CR-相關(guān)指令時,CRU 90和BEU 92訪問CR寄存器堆80,其在一個最佳實施例中包含一個CR和若干個CR重命名寄存器,其中每個寄存器包含若干個由一個或多個比特形成的不同字段。在這些字段當(dāng)中有LT、GT、和EQ字段,它們分另指示一個值(一般為一條指令的結(jié)果或者操作數(shù))是小于零、大于零、還是等于零。連接和計數(shù)寄存器(LCR)堆82包含一個計數(shù)寄存器(CTR)、一個連接寄存器(LR)和對應(yīng)于每一個的重命名寄存器,BEU 92通過它們還可以解決條件分支以獲得一個路徑地址。通用寄存器堆(GPR)84和86,是同步的、重復(fù)的寄存器堆,用于存儲由FXU 94和100以及LSU 96和98訪問和產(chǎn)生的定點以及整數(shù)值。浮點寄存器堆(FPR)88,類似于GPR 84和86,也可以被實現(xiàn)為同步寄存器的重復(fù)集合,包含由FPU 102和104執(zhí)行浮點指令以及LSU 96和98執(zhí)行浮點加載指令所產(chǎn)生的浮點值。
在一個執(zhí)行單元完成一條指令的執(zhí)行之后,該執(zhí)行通知GCT38,其按程序次序調(diào)度指令的完成。為了完成由CRU 90、FXU 94和100或者FPU 102和104之一執(zhí)行的一條指令,GCT 38向執(zhí)行單元發(fā)信號,如果有結(jié)果數(shù)據(jù),則該執(zhí)行單元從指定的重命名寄存器中向適當(dāng)寄存器堆內(nèi)的一個或多個體系結(jié)構(gòu)寄存器寫回結(jié)果數(shù)據(jù)。然后把該指令從發(fā)布隊列中刪除,并且一旦其指令組內(nèi)的全部指令都已經(jīng)被完成,就從GCT 38中刪除所有指令。然而,其它類型的指令,是以不同的方式完成的。
當(dāng)BEU 92解決了一個條件分支指令并且確定了應(yīng)該被采用的執(zhí)行路徑的路徑地址時,把該路徑地址和由BPU 36所預(yù)測的推測性路徑地址進(jìn)行比較。如果兩個路徑地址相匹配,則不需要更進(jìn)一步的處理。然而,如果計算出來的路徑地址和預(yù)測的路徑地址不匹配,則BEU 92向IFAR 30提供正確的路徑地址。在任一情形下,都能從BIQ64中刪除分支指令,并且當(dāng)在同一個指令組內(nèi)的所有其它指令已經(jīng)完成時,從GCT 38中刪除所有其它指令。
繼執(zhí)行一條加載指令之后,通過執(zhí)行該加載指令計算出來的有效地址由一個數(shù)據(jù)ERAT(未說明)進(jìn)行轉(zhuǎn)換,然后作為一個請求地址提供給L1 D-高速緩存20。此時,從FXIQ 66或者68中刪除加載指令,并且在指示的加載被執(zhí)行之前,把該指令放入加載重新排序隊列(LRQ)114中。如果該請求地址不在L1 D-高速緩存20中,則將該請求地址放入加載未命中隊列(LMQ)116中,通過該隊列從L2高速緩存16中獲取請求的數(shù)據(jù),并且如果此時失敗的話,就從另一個處理單元200或者從系統(tǒng)存儲器118中獲取請求的數(shù)據(jù)(如圖2所示)。LRQ 114相對于正在處理的加載窺探在互連222結(jié)構(gòu)上的獨占(exclusive)訪問請求(例如,讀取是為了修改)、刷新或者注銷(kill)(如圖2所示),并且如果發(fā)生命中,則取消和重新發(fā)行加載指令。存儲指令可以利用一個存儲隊列(STQ)110類似地完成,在執(zhí)行存儲指令之后,在存儲隊列(STQ)110中加載用于存儲的有效地址。數(shù)據(jù)從STQ 110中被存儲到L1 D-高速緩存20和/或L2高速緩存16中。
處理器狀態(tài)處理器的狀態(tài)包括在特定時間所存儲的數(shù)據(jù)、指令和硬件的狀態(tài),并且在此被定義為“硬”或者“軟”狀態(tài)?!坝病睜顟B(tài)被定義為在一個處理器內(nèi)、在體系結(jié)構(gòu)上為使處理器從它在處理過程中的當(dāng)前點起執(zhí)行處理過程所需要的信息。相反,“軟”狀態(tài)被定義為在處理器內(nèi)、將會提高一個處理過程的執(zhí)行效率、但不是為獲得一個體系結(jié)構(gòu)上正確的結(jié)果所要求的信息。在圖3a的處理單元200中,硬狀態(tài)包括用戶級寄存器、諸如CRR 80、LCR 82、GPR 84和86、FPR88、以及管理員級寄存器51中的內(nèi)容。處理單元200的軟狀態(tài)包括“性能-關(guān)鍵性”信息、諸如L-1 I-高速緩存18和L-1 D-高速緩存20的內(nèi)容,地址轉(zhuǎn)換信息、諸如DTLB 113和ITLB 115,和較不關(guān)鍵性信息、諸如BHT 35和L2高速緩存16中的所有或者部分內(nèi)容。
寄存器在以上的描述中,處理單元200中的寄存器堆、諸如GPR 86、FPR 88、CRR 80和LCR 82通常被定義為“用戶級寄存器”,是因為這些寄存器能夠由具有用戶或者管理員特權(quán)的所有軟件訪問。管理員級寄存器51包括通常在操作系統(tǒng)內(nèi)核中、通常由操作系統(tǒng)使用、用于諸如存儲器管理、配置和異常處理的操作的那些寄存器。象這樣,對管理員級寄存器51的訪問通常被限制到僅僅幾個具有足夠的訪問許可的處理過程(即,管理員級處理過程)。
如在圖3b中所描述的那樣,管理員級寄存器51通常包括配置寄存器302、存儲器管理寄存器308、異常(exception)處理寄存器314、和各種各樣的寄存器322,將在下面對它們進(jìn)行更詳細(xì)地描述。
配置寄存器302包括一個機(jī)器狀態(tài)寄存器(MSR)306和一個處理器版本寄存器(PVR)304。MSR 306定義處理器的狀態(tài)。也就是說,MSR 306標(biāo)識在處理了一個指令中斷(異常)之后指令執(zhí)行應(yīng)當(dāng)再繼續(xù)的地方。PVR 304標(biāo)識處理單元200的特定類型(版本)。
存儲器管理寄存器308包括塊地址轉(zhuǎn)換(BAT)寄存器310。BAT寄存器310是軟件控制的陣列,其存儲在芯片內(nèi)可用塊地址的轉(zhuǎn)換。最好是,有單獨的指令和數(shù)據(jù)BAT寄存器,如IBAT 309和DBAT311所示。存儲器管理寄存器還包括段寄存器(SR)312,其被用來在BAT轉(zhuǎn)換失敗時把EA轉(zhuǎn)換為虛擬地址(VA)。
異常處理寄存器314包括一個數(shù)據(jù)地址寄存器(DAR)316、專用寄存器(SPR)318、和機(jī)器狀態(tài)保存/恢復(fù)(SSR)寄存器320。DAR 316包含如果訪問導(dǎo)致異常、諸如對齊方式異常,則由一條存儲器訪問指令生成的有效地址。SPR被用于由操作系統(tǒng)定義的特定目的,例如,為了標(biāo)識被保留用于由一級異常處理程序(FLIH)使用的一個存儲區(qū)。這個存儲區(qū)最好對系統(tǒng)中的每個處理器來說是唯一的。SPR 318可以被FLIH用作一個暫時存儲寄存器以保存通用寄存器(GPR)中的內(nèi)容,其能夠從SPR 318中加載,并且被用作一個基址寄存器以保存其它GPR到存儲器中。SSR寄存器320保存異常(中斷)時的機(jī)器狀態(tài),并且在執(zhí)行一條中斷返回指令時恢復(fù)機(jī)器狀態(tài)。
各種各樣的寄存器322包括一個用于保持時間的時基(TB)寄存器324,一個用于遞減計數(shù)的遞減寄存器(DEC)326、和一個如果遇到一個指定的數(shù)據(jù)地址則導(dǎo)致出現(xiàn)斷點的數(shù)據(jù)地址斷點寄存器(DABR)328。此外,各種各樣的寄存器322包括一個基于時間的中斷寄存器(TBIR)330,以在一個預(yù)先確定的時間段之后啟動一個中斷。這種基于時間的中斷可以和將在處理單元200上運行的定期維護(hù)例程一起使用。
軟件結(jié)構(gòu)在MP數(shù)據(jù)處理系統(tǒng)、諸如圖2的MP數(shù)據(jù)處理系統(tǒng)201中,可能在不同的操作系統(tǒng)下,能夠同時運行多個應(yīng)用程序。圖4描述了依據(jù)本發(fā)明的MP數(shù)據(jù)處理系統(tǒng)201的示范性軟件配置的分層框圖。
如說明的那樣,軟件配置包括一個管理程序402,其是一個把MP數(shù)據(jù)處理系統(tǒng)201的資源分配到多個分區(qū)中、然后協(xié)調(diào)在多個分區(qū)內(nèi)的多個(可能不同的)操作系統(tǒng)的執(zhí)行的管理軟件。例如,管理程序402可以指定處理單元200a、系統(tǒng)存儲器118a中的第一區(qū)域、及其它到第一分區(qū)的由操作系統(tǒng)404a操作的資源。類似地,管理程序402可以指定處理單元200n、系統(tǒng)存儲器118n中的第二區(qū)域、及其它到第二分區(qū)的由操作系統(tǒng)404n操作的資源。
在操作系統(tǒng)404的控制下運行的可以是多個應(yīng)用程序406,諸如文字處理器、電子數(shù)據(jù)表、瀏覽器等。例如,應(yīng)用程序406a到406x全部在操作系統(tǒng)404a的控制下運行。
每個操作系統(tǒng)404和應(yīng)用程序406通常包含多個處理過程。例如,應(yīng)用程序406a被顯示為具有多個處理過程408a到408z。假定處理單元200具有用于處理過程的必要的指令、數(shù)據(jù)和狀態(tài)信息,每個處理單元200都能夠獨立地執(zhí)行一個處理過程。
中斷處理下面參見圖5a和5b,描述了一個處理單元、諸如處理單元200依據(jù)本發(fā)明處理一個中斷的一種示范性方法的流程圖。如塊502所示,由處理器接收一個中斷。這個中斷可以是異常(例如,溢出)、外部中斷(例如,來自一個I/O設(shè)備)或者內(nèi)部中斷。
在接收中斷時,保存當(dāng)前正在運行的處理過程的硬體系結(jié)構(gòu)狀態(tài)(塊504)和軟狀態(tài)(塊505)。下面結(jié)合圖6a(硬)和圖6b(軟)描述依據(jù)本發(fā)明用于保存和管理硬和軟狀態(tài)的最佳處理過程的細(xì)節(jié)。在處理過程的硬狀態(tài)被保存到存儲器中之后,至少執(zhí)行一級中斷處理程序(FLIH)和二級中斷處理程序(SLIH)以服務(wù)于中斷。
FLIH是一個接收處理器的控制作為中斷結(jié)果的例程。一旦通知一個中斷,F(xiàn)LIH通過讀取一個中斷控制器文件來確定中斷的起因。最好是,通過使用一個向量寄存器進(jìn)行該確定。也就是說,F(xiàn)LIH讀取一個表格以使一個中斷與一個用于處理中斷的初始處理過程的異常向量地址相匹配。
SLIH是一個與中斷有關(guān)的例程,其處理來自一特定中斷源的中斷的處理。即,F(xiàn)LIH調(diào)用用于處理設(shè)備中斷的SLIH,而不是設(shè)備驅(qū)動程序本身。
在圖5a中,在圓506內(nèi)顯示的步驟由FLIH執(zhí)行。如塊508所示,中斷被唯一地標(biāo)識,如上所述,最好是使用一個向量寄存器進(jìn)行。取決于接收了哪個中斷,這個中斷標(biāo)識然后使處理器跳轉(zhuǎn)到存儲器中的一個特定地址。
如本領(lǐng)域技術(shù)人員理解的那樣,任一SLIH可以建立與一個輸入/輸出(I/O)設(shè)備或者另一個處理器(外部中斷)的通信過程,或者可以在控制被中斷的處理器的操作系統(tǒng)或者管理程序的控制下執(zhí)行一組指令。例如,第一中斷可以使處理器跳轉(zhuǎn)到向量地址1,其導(dǎo)致執(zhí)行SLIH A,如塊510和516所示。如圖所示,SLIH A完成中斷的處理而沒有調(diào)用任何另外的軟件例程。類似地,如塊512、520和526所示,到向量地址3的分支轉(zhuǎn)移導(dǎo)致執(zhí)行示范性的SLIH C,其然后執(zhí)行一條或多條屬于操作系統(tǒng)404或者管理程序402(都如圖4所示)的指令以服務(wù)于該中斷。做為選擇,如果中斷指示處理器跳轉(zhuǎn)到向量地址2,則執(zhí)行示范性的SLIH B,如塊514和518所示。SLIH B然后調(diào)用(塊524)用于發(fā)布中斷的設(shè)備的設(shè)備驅(qū)動程序。
繼塊516、524或者526中任何一個之后,處理過程通過頁連接符“A”繼續(xù)進(jìn)行到圖5b中的塊528。一旦已經(jīng)服務(wù)了中斷,則SLIH和FLIH被解決和重建以反映中斷的執(zhí)行和完成,如塊528和530所示。爾后,加載和運行下一個處理過程,如塊532-536中所述。中斷處理過程然后終止。
通常由處理器中的操作系統(tǒng)或者由處理器是其一部分的MP計算機(jī)系統(tǒng)中的管理程序選擇接下來運行哪個處理過程(塊532)和在哪個處理器上運行處理過程(塊534)(如果是在MP計算機(jī)系統(tǒng)中)。選擇的處理過程可以是在當(dāng)前處理器上被中斷的處理過程,或者它可以是新的、或者在當(dāng)前處理器或者另一個處理器上正在執(zhí)行的同時而被中斷的另一個處理過程。
如塊536所示,一旦選擇了處理過程和處理器,就使用如圖2中所示的下一個硬狀態(tài)寄存器210,用將被運行的下一個處理過程的狀態(tài)初始化所選擇的處理器。下一個硬狀態(tài)寄存器210包含下一個“最熱的(hottest)”處理過程的硬體系結(jié)構(gòu)狀態(tài)。通常,這個下一個最熱的處理過程是先前被中斷、而現(xiàn)在正被再繼續(xù)的處理過程。很少地,下一個最熱的處理過程可以是一個先前沒有被中斷的新的處理過程。
下一個最熱的處理過程是被確定具有最高執(zhí)行優(yōu)先級的那個處理過程。優(yōu)先級可以基于一個處理過程對整個應(yīng)用程序的關(guān)鍵性、對來自該處理過程的結(jié)果的需求、或者用于優(yōu)先化的任何其它原因。由于運行多個處理過程,所以等待再繼續(xù)的每個處理過程的優(yōu)先級常常發(fā)生改變。因此,硬體系結(jié)構(gòu)狀態(tài)是動態(tài)分配的更新的優(yōu)先等級。也就是說,在任一給定時刻,下一個硬狀態(tài)寄存器210包含從系統(tǒng)存儲器118被連續(xù)和動態(tài)更新的硬體系結(jié)構(gòu)狀態(tài)以包含需要被運行的下一個“最熱的”處理過程。
保存硬體系結(jié)構(gòu)狀態(tài)在現(xiàn)有技術(shù)中,硬體系結(jié)構(gòu)狀態(tài)通過處理器內(nèi)核中的加載/存儲單元存儲到系統(tǒng)存儲器,其阻塞中斷處理程序或者另一個處理過程的執(zhí)行達(dá)若干個處理器時鐘周期。在本發(fā)明中,依據(jù)圖6a中所示的方法加快如圖5a中的塊504所述的保存硬狀態(tài)的步驟,其中該方法將結(jié)合在圖2中示意性說明的硬件加以描述。
一旦收到一個中斷,處理單元200就暫停當(dāng)前正在執(zhí)行的處理過程的執(zhí)行,如塊602所示。保存在硬狀態(tài)寄存器206中的硬體系結(jié)構(gòu)狀態(tài)然后被直接拷貝到映像寄存器208,如塊604所示。(做為選擇,映像寄存器208通過一個連續(xù)地用當(dāng)前硬體系結(jié)構(gòu)狀態(tài)更新映像寄存器208的處理過程而已經(jīng)具有了該硬體系結(jié)構(gòu)狀態(tài)的拷貝。)硬體系結(jié)構(gòu)狀態(tài)的映像拷貝然后在IMC 220的控制下被存儲到系統(tǒng)存儲器118,如在塊606所示,其中該映像拷貝在由處理單元200查看時最好是不可執(zhí)行的。硬體系結(jié)構(gòu)狀態(tài)的映像拷貝經(jīng)由高帶寬存儲器總線116傳送到系統(tǒng)存儲器118。由于把當(dāng)前硬體系結(jié)構(gòu)狀態(tài)拷貝到映像寄存器208中最多僅僅需要花費幾個時鐘周期,所以處理單元200很快就能夠開始處理中斷或者執(zhí)行下一個處理過程的“實際工作”。
硬體系結(jié)構(gòu)狀態(tài)的映像拷貝最好是被保存在系統(tǒng)存儲器118內(nèi)的、被保留用于硬體系結(jié)構(gòu)狀態(tài)的一個專用存儲器區(qū)域中,如以下關(guān)于圖10描述的那樣。
保存軟狀態(tài)當(dāng)由一個傳統(tǒng)的處理器執(zhí)行一個中斷處理程序時,被中斷的處理過程的軟狀態(tài)通常被污染了。也就是說,中斷處理程序軟件的執(zhí)行以中斷處理程序所使用的數(shù)據(jù)(包括指令)填充處理器的高速緩存、地址轉(zhuǎn)換設(shè)備和歷史記錄表格。因此,當(dāng)被中斷的處理過程在中斷被處理之后再繼續(xù)時,該處理過程將經(jīng)歷增加了的指令和數(shù)據(jù)高速緩存未命中、增加了的轉(zhuǎn)換未命中、和增加了的分支轉(zhuǎn)移錯誤預(yù)測。這種未命中和錯誤預(yù)測嚴(yán)重地降低了處理性能,直到與中斷處理有關(guān)的信息從處理器中清除、而且存儲了處理過程的軟狀態(tài)的高速緩存及其它組件用與該處理過程有關(guān)的信息重新填充為止。本發(fā)明因此保存和恢復(fù)一個處理過程的軟狀態(tài)的至少一部分,以便減少與中斷處理有關(guān)的性能損失。
下面介紹圖6b和在圖2和3a中描述的相應(yīng)硬件,L1 I-高速緩存18和L1 D-高速緩存20中的整個內(nèi)容被保存到系統(tǒng)存儲器118的一個專用區(qū)域中,如在塊610所示。同樣地,BHT 35(塊612)、ITLB115和DTLB 113(塊614)、ERAT 32(塊616)、和L2高速緩存16(塊618)中的內(nèi)容可以被保存到系統(tǒng)存儲器118中。
因為L2高速緩存16可能是相當(dāng)大的(例如,幾兆字節(jié)的大小),所以存儲所有的L2高速緩存16根據(jù)它在系統(tǒng)存儲器中的足跡和傳輸數(shù)據(jù)所要求的時間/帶寬,可能是禁止性的。因此,在最佳實施例中,僅僅最近使用的(MRU)集合的一個子集(例如,兩個)被保存在每個同余類中。
應(yīng)當(dāng)理解,盡管圖6b說明了保存一個處理過程的軟狀態(tài)的許多不同組件中每一個,但是被保存的這些組件的數(shù)目和這些組件被保存的次序能夠在實現(xiàn)中發(fā)生變化,并且能夠是軟件可編程的或者通過硬件模式位而被控制。
因此,本發(fā)明在中斷處理程序例程(或者下一個處理過程)正被執(zhí)行的同時輸出軟狀態(tài)。這個異步操作(獨立于中斷處理程序的執(zhí)行)可能導(dǎo)致軟狀態(tài)(被中斷的處理過程的軟狀態(tài)和中斷處理程序的軟狀態(tài))的混合。盡管如此,但是由于軟狀態(tài)的精確保存對體系結(jié)構(gòu)正確性來說是不需要的,而且因為由于在執(zhí)行中斷處理程序中的較短延遲而獲得了改善的性能,所以這種數(shù)據(jù)的混合是可接受的。
再次參見圖2,從L1 I-高速緩存18、L1 D-高速緩存20、和L2高速緩存16中經(jīng)由高速緩存數(shù)據(jù)通路218傳輸軟狀態(tài)到IMC 220,而其它軟狀態(tài)、諸如BHT 35經(jīng)由類似的內(nèi)部數(shù)據(jù)通路(未顯示)而傳輸?shù)絀MC 220。做為選擇或者另外,在最佳實施例中,至少某些軟狀態(tài)組件經(jīng)由掃描鏈通路214傳輸?shù)絀MC 220。
經(jīng)由掃描鏈通路保存軟狀態(tài)由于它們的復(fù)雜性,處理器及其它IC通常包括便于測試IC的電路。測試電路包括一個如在電氣電子工程師學(xué)會(IEEE)標(biāo)準(zhǔn)1149.1-1990、“Standard Test Access Port and Boundary ScanArchitecture”中所述的邊界掃描鏈,其中該標(biāo)準(zhǔn)被全部包括在此作為參考。邊界掃描鏈為在集成電路的組件之間測試數(shù)據(jù)提供了一條通路,其中通常通過在封裝的集成電路上的專用引腳訪問該邊界掃描鏈。
下面參考圖7,其描述了依據(jù)本發(fā)明的一個集成電路700的方框圖。集成電路700最好是一個處理器、諸如圖2中的處理單元200。集成電路700包含3個邏輯元件(邏輯)702、704和706,為了說明本發(fā)明起見,其包含存儲處理過程的軟狀態(tài)的3個存儲器單元。例如,邏輯702可以是如圖3a所示的L1 D-高速緩存20,邏輯704可以是ERAT32,而邏輯706可以是如上所述的L2高速緩存16的一部分。
在集成電路700的制造商測試期間,通過掃描鏈邊界單元708發(fā)送一個信號,其中掃描鏈邊界單元708最好是時鐘控制的鎖存器。由掃描鏈邊界單元708a輸出的信號提供一個測試輸入給邏輯702,邏輯702然后輸出一個信號到掃描鏈邊界單元708b,掃描鏈邊界單元708b接著通過其它邏輯(704和706)經(jīng)由其它掃描鏈邊界單元708發(fā)送測試信號直到該信號到達(dá)掃描鏈邊界708c為止。因此,有一個多米諾效應(yīng),其中只有當(dāng)從掃描鏈邊界單元708c中接收了預(yù)期的輸出時,邏輯702-706才通過測試。
在歷史上,集成電路中的邊界掃描鏈在制造之后是不被使用的。然而,本發(fā)明以不阻塞高速緩存/寄存器端口的方式利用所描述的測試通路作為向圖2中的IMC 220傳輸軟體系結(jié)構(gòu)狀態(tài)的通路。也就是說,通過使用掃描鏈測試通路,能夠在IH或者下一個處理過程正在執(zhí)行的同時從高速緩存/寄存器中流輸出(stream out)軟體系結(jié)構(gòu)狀態(tài)而不阻塞下一個處理過程或者中斷處理程序?qū)Ω咚倬彺?寄存器的訪問。
由于掃描鏈214是串行通路,所以圖2中所示的串行-到-并行邏輯216向ICM 220提供并行數(shù)據(jù)用于正確傳輸軟狀態(tài)到系統(tǒng)存儲器118。在最佳實施例中,串行-到-并行邏輯216還包括用于標(biāo)識數(shù)據(jù)來自于哪個寄存器/高速緩存的邏輯。這種標(biāo)識可以利用為本領(lǐng)域技術(shù)人員所知的任何一種方法,包括在串行數(shù)據(jù)上標(biāo)識前導(dǎo)標(biāo)識標(biāo)記等。在轉(zhuǎn)換軟狀態(tài)數(shù)據(jù)到并行格式之后,IMC 220然后經(jīng)由高帶寬存儲器總線222傳輸軟狀態(tài)到系統(tǒng)存儲器118。
注意到,這些相同的掃描鏈通路可以被進(jìn)一步用來傳輸硬體系結(jié)構(gòu)狀態(tài)、諸如包含在如圖2中所述的映像寄存器208中的硬體系結(jié)構(gòu)狀態(tài)。
SLIH/FLIH閃速ROM在現(xiàn)有技術(shù)系統(tǒng)中,一級中斷處理程序(FLIH)和二級中斷處理程序(SLIH)被保存在系統(tǒng)存儲器中,并且在被調(diào)用時填充高速緩沖存儲器分級結(jié)構(gòu)。在常規(guī)系統(tǒng)中最初從系統(tǒng)存儲器中調(diào)用FLIH或者SLIH導(dǎo)致較長的訪問延遲(以在高速緩存未命中之后從系統(tǒng)存儲器中定位和加載FLIH/SLIH)。用FLIH/SLIH指令和數(shù)據(jù)填充高速緩沖存儲器會用后續(xù)處理過程不需要的數(shù)據(jù)與指令“污染”高速緩存。
為了減少FLIH和SLIH的訪問延遲和避免高速緩存污染,處理單元200在一個特定的片內(nèi)存儲器(例如,閃速只讀存儲器(ROM)802)中存儲至少某些FLIH和SLIH,如在圖3a和8a中所述那樣。FLIH 804和SLIH 806可以在制造時被燒錄進(jìn)閃速ROM 802中,或者可以在制造之后通過為本領(lǐng)域技術(shù)人員所公知的閃速編程技術(shù)被燒錄。當(dāng)由處理單元200接收到一個中斷時(如圖2所述),從閃速ROM 802中、而不是從系統(tǒng)存儲器118或者高速緩存分級結(jié)構(gòu)212中直接訪問FLIH/SLIH。
SLIH預(yù)測通常,當(dāng)在處理單元200中發(fā)生中斷時,調(diào)用FLIH,其然后調(diào)用SLIH,然后SLIH完成中斷的處理。哪個SLIH被調(diào)用和那個SLIH如何執(zhí)行是可變化的,而且這種變化取決于包括傳遞的參數(shù)、條件狀態(tài)等的各種因素。例如,在圖8b中,調(diào)用FLIH 812導(dǎo)致調(diào)用和執(zhí)行SLIH 814,其導(dǎo)致執(zhí)行位于B點處的指令。
因為程序動作可以是重復(fù)的,所以在多個時間出現(xiàn)中斷是屢見不鮮的,其導(dǎo)致執(zhí)行同樣的FLIH和SLIH(例如,F(xiàn)LIH 812和SLIH814)。因此,本發(fā)明認(rèn)識到,通過預(yù)測中斷處理過程的控制圖將重復(fù)、并且通過推測性地執(zhí)行SLIH部分而不首先執(zhí)行FLIH,可以加快對在一個中斷之后發(fā)生的中斷的中斷處理。
為了便于中斷處理預(yù)測,處理單元200具有一個中斷處理程序預(yù)測表(Interrupt Handler Prediction Table,IHPT)808,其在圖8c中進(jìn)行了更詳細(xì)的顯示。IHPT 808包含多個FLIH的基地址816(中斷向量)的一個列表。與每個FLIH地址816相關(guān)聯(lián),IHPT 808存儲先前已經(jīng)被相關(guān)的FLIH調(diào)用的一個或多個SLIH地址818中相應(yīng)的一組。當(dāng)用用于一特定FLIH的基地址訪問IHPT 808時,預(yù)測邏輯820在IHPT 808中選擇與指定的FLIH地址816有關(guān)的一個SLIH地址818作為將可能被指定的FLIH調(diào)用的SLIH的地址。注意到,雖然舉例說明的預(yù)測的SLIH地址可以如圖8b中指示的那樣是SLIH 814的基地址,但是該地址也可以是在起點之后(例如在B點處)在SLIH 814內(nèi)的一條指令的地址。
預(yù)測邏輯820使用一種預(yù)測哪個SLIH將被指定的FLIH調(diào)用的算法。在最佳實施例中,這種算法挑選一個與指定的FLIH有關(guān)的、最近已經(jīng)被使用過的SLIH。在另一個最佳實施例中,這種算法挑選一個與指定的FLIH有關(guān)的、在歷史上已經(jīng)被最頻繁地調(diào)用過的SLIH。在描述的任何一個最佳實施例中,該算法可以在有對預(yù)測的SLIH的請求時被運行,或者預(yù)測的SLIH可以被連續(xù)地更新和保存在IHPT808中。
值得注意的是本發(fā)明不同于在本領(lǐng)域中已知的分支轉(zhuǎn)移預(yù)測方法。首先,以上所述的方法導(dǎo)致跳轉(zhuǎn)到一個特定的中斷處理程序,并且不是以一個分支轉(zhuǎn)移指令地址為基礎(chǔ)的。也就是說,在現(xiàn)有技術(shù)中使用的分支轉(zhuǎn)移預(yù)測方法預(yù)測分支轉(zhuǎn)移操作的結(jié)果,而本發(fā)明基于一個(可能的)非分支轉(zhuǎn)移指令預(yù)測跳轉(zhuǎn)到一個特定的中斷處理程序。這導(dǎo)致了第二個差別,同現(xiàn)有技術(shù)分支轉(zhuǎn)移預(yù)測相比,通過如本發(fā)明示教的中斷處理程序預(yù)測能夠跳過更大數(shù)量的代碼,這是因為本發(fā)明允許繞過任意數(shù)目的指令(諸如在FLIH中),而由于對傳統(tǒng)分支轉(zhuǎn)移預(yù)測機(jī)構(gòu)所掃描的指令窗口的大小的固有限制,分支轉(zhuǎn)移預(yù)測僅僅允許繞過在預(yù)測的分支轉(zhuǎn)移之前的有限數(shù)目的指令。第三,依據(jù)本發(fā)明的中斷處理程序預(yù)測并沒有象在現(xiàn)有技術(shù)中已知的采用/未采用的分支轉(zhuǎn)移預(yù)測那樣,被約束為二進(jìn)制確定。因此,再次參見圖8c,預(yù)測邏輯820可以從任意數(shù)目的歷史SLIH地址818中選擇預(yù)測的SLIH地址822,而分支轉(zhuǎn)移預(yù)測方案僅僅從中選擇一條順序執(zhí)行通路和一條分支轉(zhuǎn)移通路。
下面參見圖9,其舉例說明了一種依據(jù)本發(fā)明預(yù)測一個中斷處理程序的示范性方法的流程圖。當(dāng)由處理器接收到一個中斷(塊902)時,基于先前的執(zhí)行歷史記錄,開始在由中斷調(diào)用的FLIH(塊904)以及由IHPT 808指示的預(yù)測的SLIH(塊906)上并行執(zhí)行同時存在的多線程(SMT)。
在最佳實施例中,可以響應(yīng)于在收到一個中斷時監(jiān)控所調(diào)用的FLIH,來執(zhí)行跳轉(zhuǎn)到預(yù)測的SLIH(塊906)。例如,再次參考如圖8所示的IHPT 808。當(dāng)接收到中斷時,把FLIH與保存在IHPT 808中的FLIH地址816進(jìn)行比較。如果與IHPT 808中存儲的FLIH地址816的比較揭示與中斷所調(diào)用的FLIH地址相同,則IHPT 808提供預(yù)測的SLIH地址822,并且立即開始在預(yù)測的SLIH地址822的地址處開始的代碼執(zhí)行。
最好是通過在包含具有預(yù)測標(biāo)記的FLIH地址的SLIH預(yù)測寄存器中存儲使用IHPT 808調(diào)用的預(yù)測SLIH地址822,來執(zhí)行已知的正確SLIH和預(yù)測SLIH的后續(xù)比較。在本發(fā)明的一個最佳實施例中,當(dāng)執(zhí)行一條已知的、從FLIH中調(diào)用一個SLIH的指令、諸如“跳轉(zhuǎn)”指令時,把由該跳轉(zhuǎn)調(diào)用的地址與位于預(yù)測寄存器中的預(yù)測SLIH地址822的地址進(jìn)行比較(并且將其標(biāo)識為已經(jīng)被預(yù)測和當(dāng)前正由預(yù)測標(biāo)記執(zhí)行)。把來自預(yù)測寄存器的預(yù)測SLIH地址和由執(zhí)行的FLIH選擇的SLIH進(jìn)行比較(塊910)。如果預(yù)測了正確的SLIH,則預(yù)測SLIH完成執(zhí)行(塊914),因此加快了中斷處理。然而,如果SLIH被錯誤預(yù)測了,則取消預(yù)測SLIH的進(jìn)一步執(zhí)行,并且執(zhí)行正確的SLIH作為替代(塊916)。
狀態(tài)管理下面參見圖10,描述了一個示意圖,其圖解說明了保存在示范性的MP數(shù)據(jù)處理系統(tǒng)的系統(tǒng)存儲器和各種處理器和存儲器分區(qū)中的硬和軟狀態(tài)之間的邏輯關(guān)系。如圖10所示,所有的硬體系結(jié)構(gòu)狀態(tài)和軟狀態(tài)都被保存在由管理程序402分配的一個專用存儲器區(qū)域中,其中該管理程序402在任一分區(qū)內(nèi)可由處理器訪問。也就是說,處理器A和處理器B可以最初被管理程序402配置為起到在分區(qū)X內(nèi)的一個SMP的作用,而處理器C和處理器D被配置為在分區(qū)Y內(nèi)的一個SMP。在執(zhí)行時,處理器A-D可以被中斷,使處理器A-D中的每一個以以上討論的方式存儲硬狀態(tài)A-D和軟狀態(tài)A-D中的相應(yīng)一個到存儲器。不同于不允許不同分區(qū)中的處理器訪問同一個存儲空間的現(xiàn)有技術(shù)系統(tǒng),任何一個處理器都能夠訪問硬或者軟狀態(tài)A-D中的任何一個以再繼續(xù)相關(guān)的被中斷處理過程。例如,除了在它的分區(qū)內(nèi)被創(chuàng)建的硬和軟狀態(tài)C和D之外,處理器D還能夠訪問硬和軟狀態(tài)A和B。因此,任何處理過程狀態(tài)都能夠被任何分區(qū)或者處理器訪問。因此,管理程序402在分區(qū)之間的負(fù)載均衡上具有很大的自由度和靈活性。
軟狀態(tài)高速緩存一致性如上所述,被中斷的處理過程的軟狀態(tài)可以包括高速緩沖存儲器、諸如圖3a中所示的L1 I-高速緩存18、L1 D-高速緩存20和L2高速緩存16中的內(nèi)容。雖然如以上結(jié)合圖6b所述的那樣這些軟狀態(tài)被保存在系統(tǒng)存儲器中,但是很可能包含軟狀態(tài)的至少某些數(shù)據(jù)將由于由其它處理過程做出的數(shù)據(jù)修改而變得失效了。本發(fā)明因此提供了一個使保存在系統(tǒng)存儲器中的軟狀態(tài)保持高速緩存一致的機(jī)構(gòu)。
如圖11所示,保存在系統(tǒng)存儲器118中的軟狀態(tài)能夠被概念化為被保存在“虛擬高速緩存”中。例如,L2高速緩存16的軟狀態(tài)在L2虛擬高速緩存1102中。L2虛擬高速緩存包含一個地址部分,該地址部分包括從L2高速緩存16中存儲的數(shù)據(jù)1110的每條高速緩存線的標(biāo)記1104和索引1106。類似地,L1虛擬I-高速緩存1112包含一個包括了從L1 I-高速緩存18中存儲的指令1120的標(biāo)記1114和索引1116的地址部分,而L1虛擬D-高速緩存1122包含一個包括了從L1 D-高速緩存20存儲的數(shù)據(jù)1130的每條高速緩存線的標(biāo)記1124和索引1126的地址部分。這些“虛擬高速緩存”中的每一個由集成的存儲器控制器(IMC)220經(jīng)由互連222進(jìn)行管理以保持一致性。
IMC 220窺探在系統(tǒng)互連222上的每個操作。每當(dāng)窺探到一個可能需要使一條高速緩存線無效的操作時,IMC 220窺探相對于虛擬高速緩存目錄1132的操作。如果檢測到一個窺探命中,則IMC 220通過更新適當(dāng)?shù)奶摂M高速緩存目錄,使系統(tǒng)存儲器118中的該虛擬高速緩存線無效。盡管可能需要用于窺探無效的確切地址匹配(即,標(biāo)記和索引的匹配),但是在IMC 220中(特別是就64位和更大的地址來說)實現(xiàn)精確的地址匹配將需要大量電路。因此,在最佳實施例中,窺探無效是不精確的,并且具有與被窺探的地址相匹配的選定最高有效位(MSB)的所有虛擬高速緩存線被無效了。哪個MSB被用來確定在虛擬高速緩存存儲器中哪條高速緩存線是無效的,是單獨實現(xiàn)的,并且可經(jīng)由模式位為可軟件控制的或者可硬件控制的。因此,可以相對于標(biāo)記或者僅相對于標(biāo)記的一部分(諸如10個最高有效位)來窺探地址。這樣的虛擬高速緩沖存儲器無效方案具有一個公認(rèn)的、在無效高速緩存線方面的缺點,即還包含有效數(shù)據(jù),但是通過提供一種保持虛擬高速緩存線的一致性的非常快速的方法而獲得的性能優(yōu)點比這個缺點更重要。
制造級測試在制造期間,集成電路要受到在各種操作條件下的成套測試。一種這樣的測試是數(shù)據(jù)測試,其中以使用上述IEEE 1149.1測試掃描鏈的一個測試數(shù)據(jù)流測試集成電路的全部內(nèi)部門電路。在現(xiàn)有技術(shù)中,在操作環(huán)境下安裝集成電路之后,不再次運行這樣的測試程序,部分是因為在大多數(shù)的操作環(huán)境下連接集成電路到一個測試夾具以執(zhí)行測試是不切實際的,而且這樣的測試阻止使用集成電路用于它的預(yù)定目的。例如,在處理器100中,硬體系結(jié)構(gòu)狀態(tài)必須經(jīng)由加載/存儲執(zhí)行路徑被保存到系統(tǒng)存儲器中并且從系統(tǒng)存儲器中恢復(fù),這阻止了在測試期間完成基本工作并且引入了較多(significant)的延遲。
然而,使用以上所述的硬體系結(jié)構(gòu)狀態(tài)存儲方法,由于保存和恢復(fù)硬體系結(jié)構(gòu)狀態(tài)的時間非常短,最好只有幾個時鐘周期,所以在處理器被安裝在正常操作環(huán)境下(例如,計算機(jī)系統(tǒng))的同時,處理器能夠例行公事地運行制造級測試程序。
下面參見圖12,其描述了一種依據(jù)本發(fā)明的制造級測試程序的示范性方法的流程圖。測試程序最好定期運行。因此,如塊1202和1204所述,在經(jīng)過一段預(yù)定時間之后,在處理器中啟動一個中斷(塊1206)。就象使用本發(fā)明的任何中斷那樣,當(dāng)測試程序開始運行和發(fā)布中斷時,使用上述保存硬體系結(jié)構(gòu)狀態(tài)的最佳方法,立即保存當(dāng)前正在執(zhí)行的處理過程的硬體系結(jié)構(gòu)狀態(tài)(通常在2-3個時鐘周期內(nèi)),如塊1208所述的那樣。同時,最好以圖6b中所述的方式保存用于當(dāng)前正在執(zhí)行的處理過程的至少一部分軟狀態(tài)(塊1210)。
用于制造測試程序的硬體系結(jié)構(gòu)狀態(tài)被選擇性地加載到處理器中,如塊1212中所述。在本發(fā)明的一個最佳實施例中,從自閃速ROM 802中加載的制造級測試程序810中加載制造級測試程序,如在圖8a中所述。制造級測試程序810可以在首次制造處理單元200時被燒錄進(jìn)閃速ROM 802,或者制造級測試程序810可以在后來被燒錄。如果多個制造級測試程序被保存在閃速ROM 802中,則選擇制造級測試程序中的一個用于執(zhí)行。在本發(fā)明的一個最佳實施例中,每當(dāng)執(zhí)行一個定時器中斷時,運行制造級測試程序,如以上塊1202和1204描述的那樣。
一旦硬體系結(jié)構(gòu)狀態(tài)被加載到處理器中,制造級測試程序就開始運行(塊1214),并且最好使用上述IEEE 1149.1測驗掃描鏈。同時,軟體系結(jié)構(gòu)狀態(tài)流入到處理器中(塊1216),并且最好以上述軟狀態(tài)更新的方式進(jìn)行(圖6b)。當(dāng)完成制造級測試程序的執(zhí)行時,完成該中斷,并且通過加載用于下一個處理過程的硬體系結(jié)構(gòu)狀態(tài)和軟狀態(tài)來執(zhí)行該處理過程(塊1218)。
由于硬體系結(jié)構(gòu)狀態(tài)的加載僅僅需要幾個時鐘周期,所以能夠在執(zhí)行測試程序本身所需要的時間限制條件內(nèi),如設(shè)計者所希望的那樣經(jīng)常運行制造級測試程序。制造測試程序的執(zhí)行能夠由用戶、操作系統(tǒng)、或者管理程序啟動。
因此,本發(fā)明提供了一種尤其解決了與中斷有關(guān)的延遲問題的方法和系統(tǒng)。例如,在現(xiàn)有技術(shù)中,如果中斷處理程序是一個很少被調(diào)用的處理過程,則作為較低級的高速緩存,并且即使是系統(tǒng)存儲器,通常需要一個較長的延遲來搜索適當(dāng)?shù)闹袛嗵幚沓绦?。?dāng)正在執(zhí)行中斷處理程序時,它用處理中斷所需要的指令/數(shù)據(jù)填充處理器的高速緩存,因此當(dāng)被中斷的處理過程被恢復(fù)執(zhí)行時,會“污染”高速緩存。本發(fā)明利用在此描述的本發(fā)明的處理過程解決了這些問題。
盡管已經(jīng)就計算機(jī)處理器和軟件描述了本發(fā)明中的各個方面,但是應(yīng)當(dāng)理解,本發(fā)明中的至少某些方面可以做為選擇被實現(xiàn)為一個供數(shù)據(jù)存儲系統(tǒng)或者計算機(jī)系統(tǒng)使用的程序產(chǎn)品。定義了本發(fā)明中的功能的程序能夠經(jīng)由各種載有信號的介質(zhì)傳送到數(shù)據(jù)存儲系統(tǒng)或者計算機(jī)系統(tǒng),其中各種載有信號的介質(zhì)包括而不限于不可寫的存儲介質(zhì)(例如CD-ROM)、可寫的存儲介質(zhì)(例如軟盤、硬盤驅(qū)動器、讀/寫CD-ROM、光介質(zhì))和傳播介質(zhì)、諸如包括以太網(wǎng)的計算機(jī)和電話網(wǎng)絡(luò)。因此,應(yīng)當(dāng)理解,這種載有信號的介質(zhì)在承載或者編碼本發(fā)明中的直接方法功能的計算機(jī)可讀指令時表示了本發(fā)明的替換實施例。此外,應(yīng)當(dāng)理解,本發(fā)明可以通過一個具有以如在此描述的硬件,軟件、或者軟件和硬件的組合或者它們的等效形式的裝置的系統(tǒng)來實現(xiàn)。
雖然已經(jīng)通過參考最佳實施例詳細(xì)地顯示和描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將會理解在這里可以進(jìn)行各種形式和細(xì)節(jié)上的變化而不背離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種在存儲器中管理所保存的處理過程狀態(tài)的方法,該方法包含在位于易失性存儲器分級結(jié)構(gòu)最低級的系統(tǒng)存儲器內(nèi),存儲一個空閑處理過程的軟狀態(tài);響應(yīng)系統(tǒng)存儲器中的存儲器控制器對一個指定一個地址的注銷型操作的接收,窺探相對于系統(tǒng)存儲器中的軟狀態(tài)的注銷型操作;以及響應(yīng)導(dǎo)致窺探命中的窺探,使與該地址相關(guān)聯(lián)的軟狀態(tài)內(nèi)的數(shù)據(jù)無效。
2.如權(quán)利要求1所述的方法,其特征在于該地址具有多個位,并且其中無效步驟包含響應(yīng)基于小于所有位數(shù)的位而確定的窺探命中使數(shù)據(jù)無效。
3.如權(quán)利要求1所述的方法,其特征在于存儲步驟包含在系統(tǒng)存儲器內(nèi)存儲一個虛擬高速緩存目錄,并且窺探步驟包含窺探相對于停止執(zhí)行正確的SLIH和完成執(zhí)行預(yù)測的中斷處理程序的虛擬高速緩沖存儲器的地址。
4.如權(quán)利要求1所述的方法,其特征在于存儲步驟包含存儲一個虛擬高速緩存陣列,而且無效步驟包含使虛擬高速緩存陣列內(nèi)的一條虛擬高速緩存線無效。
5.一種處理單元,包含用于在位于易失性存儲器分級結(jié)構(gòu)最低級的系統(tǒng)存儲器內(nèi),存儲一個空閑處理過程的軟狀態(tài)的裝置;用于響應(yīng)接收一個指定一個地址的注銷型操作,窺探相對于系統(tǒng)存儲器中的軟狀態(tài)的注銷型操作的裝置;以及用于響應(yīng)導(dǎo)致窺探命中的窺探,使與該地址相關(guān)聯(lián)的軟狀態(tài)內(nèi)的數(shù)據(jù)無效的裝置。
6.如權(quán)利要求5所述的處理單元,其特征在于該地址具有多個位,并且其中用于無效的裝置包含用于響應(yīng)基于小于所有位數(shù)的位而確定的窺探命中而使數(shù)據(jù)無效的裝置。
7.如權(quán)利要求5所述的處理單元,其特征在于用于存儲的裝置包含用于在系統(tǒng)存儲器內(nèi)存儲一個虛擬高速緩存目錄的裝置,而且用于窺探的裝置包含用于窺探相對于虛擬高速緩沖存儲器的地址的裝置。
8.如權(quán)利要求5所述的處理單元,其特征在于用于存儲的裝置包含用于存儲一個虛擬高速緩存陣列的裝置,而且用于無效的裝置包含用于使虛擬高速緩沖陣列內(nèi)的一條虛擬高速緩存線無效的裝置。
9.一種數(shù)據(jù)處理系統(tǒng),包含多個包括一個如權(quán)利要求5所述的處理單元的處理器;一個連接到多個處理器的易失性存儲器分級結(jié)構(gòu);以及一個連接多個處理器的互連結(jié)構(gòu)。
10.一種處理單元,包含至少一個執(zhí)行單元;一個指令序列單元,連接到至少一個執(zhí)行單元,用于向該至少一個執(zhí)行單元發(fā)布指令;一個高速緩沖存儲器,連接到至少一個執(zhí)行單元;以及一個連接到高速緩沖存儲器的存儲器控制器,其中響應(yīng)于處理單元接收了一個中斷,存儲器控制器把該處理器的軟狀態(tài)保存到一個相關(guān)的存儲器,并且響應(yīng)于接收了一個指定一個地址的注銷型操作,存儲器控制器窺探相對于相關(guān)存儲器中的軟狀態(tài)的注銷型操作,并且響應(yīng)于導(dǎo)致窺探命中的窺探,使與該地址相關(guān)聯(lián)的軟狀態(tài)內(nèi)的數(shù)據(jù)無效。
11.如權(quán)利要求10所述的處理單元,其特征在于該地址具有多個位,并且所述存儲器控制器基于少于所有位數(shù)的位來確定窺探命中。
12.如權(quán)利要求10所述的處理單元,其特征在于存儲器控制器在相關(guān)的存儲器內(nèi)存儲一個虛擬高速緩存目錄,并且存儲器控制器窺探相對于虛擬高速緩沖存儲器的地址。
13.如權(quán)利要求10所述的處理單元,其特征在于存儲器控制器存儲一個虛擬高速緩存陣列,而且存儲器控制器響應(yīng)于窺探命中,使虛擬高速緩存陣列內(nèi)的一條虛擬高速緩存線無效。
14.一種數(shù)據(jù)處理系統(tǒng),包含多個包括有一個如權(quán)利要求10所述的處理單元的處理器;一個連接到多個處理器的易失性存儲器分級結(jié)構(gòu);以及一個連接多個處理器的互連結(jié)構(gòu)。
全文摘要
公開了一種用于在一個處理器內(nèi)管理對執(zhí)行一個處理過程來說不是關(guān)鍵性的、所存儲的軟狀態(tài)信息,諸如高速緩沖存儲器的內(nèi)容和地址轉(zhuǎn)換信息的方法和系統(tǒng)??臻e處理過程的軟狀態(tài)被保存在虛擬高速緩存中的系統(tǒng)存儲器中。通過窺探相對于在系統(tǒng)存儲器中的虛擬高速緩存的注銷型操作,保持軟狀態(tài)的高速緩存一致性。
文檔編號G06F9/48GK1504901SQ20031011860
公開日2004年6月16日 申請日期2003年11月26日 優(yōu)先權(quán)日2002年12月5日
發(fā)明者拉維·K·阿里米利, 羅伯特·A·卡爾尼奧尼, 蓋伊·L·格思里, 威廉·J·斯塔克, A 卡爾尼奧尼, J 斯塔克, L 格思里, 拉維 K 阿里米利 申請人:國際商業(yè)機(jī)器公司