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