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