選擇的指令的預(yù)測獲取和解碼方法和系統(tǒng)的制作方法
【專利摘要】用于選擇的指令(例如,操作系統(tǒng)指令、管理程序指令或其他這樣的指令)的預(yù)測獲取和解碼。進(jìn)行要執(zhí)行所選擇的指令的確定,所選擇的指令諸如系統(tǒng)調(diào)用指令、異步中斷、從系統(tǒng)調(diào)用指令返回或從異步中斷返回。基于確定要執(zhí)行這樣的指令,對于所選擇的指令確定預(yù)測地址,它是處理傳送到以便提供所請求的服務(wù)的地址。然后,開始在所選擇的指令的執(zhí)行之前在預(yù)測的地址處開始的指令的獲取。而且,預(yù)測和保持與所選擇的指令相關(guān)的推測狀態(tài),其包括例如所選擇的指令或代表所選擇的指令執(zhí)行的指令的權(quán)限級的指示。
【專利說明】選擇的指令的預(yù)測獲取和解碼方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 一個或多個方面總體上涉及在處理環(huán)境內(nèi)的處理,并且具體地說涉及改變處理環(huán) 境的權(quán)限級或其他操作狀態(tài)的指令的執(zhí)行。
【背景技術(shù)】
[0002] 處理器執(zhí)行將處理器引導(dǎo)來執(zhí)行特定操作的指令。該指令可以作為示例是執(zhí)行用 戶限定的任務(wù)的用戶應(yīng)用的一部分或執(zhí)行系統(tǒng)級服務(wù)的操作系統(tǒng)應(yīng)用的一部分。在用戶應(yīng) 用內(nèi)包括的指令具有某一的權(quán)限級,而操作系統(tǒng)應(yīng)用的指令具有另一個權(quán)限級。該操作系 統(tǒng)指令的權(quán)限級通常高于該用戶應(yīng)用的權(quán)限級。該更高的特權(quán)用于在處理器內(nèi)提供安全, 以防止用戶應(yīng)用引起在處理器內(nèi)的損壞。
[0003] 處理器執(zhí)行指令,而與類型或權(quán)限級無關(guān)。處理器可以使用不同類型的處理技術(shù) 來處理指令。一種處理技術(shù)被稱為流水線化處理,其中,分階段執(zhí)行處理。示例階段包括: 獲取階段,其中,處理器從存儲器獲取指令;解碼階段,其中,解碼獲取的指令;執(zhí)行階段, 其中,執(zhí)行解碼的指令;以及,完成階段,其中,完成指令的執(zhí)行,包括更新與該處理相關(guān)的 架構(gòu)狀態(tài)。其他和/或不同的階段也可能。
[0004] 用于某一指令的流水線化處理的使用可能產(chǎn)生影響性能的延遲。在下述情況下這 個特別為真:指令的執(zhí)行要求清除在指令后獲取的在流水線中的所有指令,并且該指令使 得從流水線的開始獲取一個或多個其他指令。
【發(fā)明內(nèi)容】
[0005] 現(xiàn)有技術(shù)的缺點被克服,并且通過提供用于促進(jìn)在處理環(huán)境內(nèi)的處理的計算機(jī)程 序產(chǎn)品來提供另外的優(yōu)點。所述計算機(jī)程序產(chǎn)品包括計算機(jī)可讀存儲介質(zhì),其能夠被處理 電路讀取,并且存儲用于由所述處理電路執(zhí)行用于執(zhí)行方法的指令。所述方法包括例如: 預(yù)測要在流水線處理器中執(zhí)行選擇的指令,所述流水線處理器具有包括執(zhí)行階段的多個處 理階段,并且所述所選擇的指令具有第一權(quán)限級,并且在所述流水線化處理器中的一個或 多個其他指令具有與所述第一權(quán)限級不同的第二權(quán)限級;基于預(yù)測所述所選擇的指令要執(zhí) 行,預(yù)測用于所述所選擇的指令的輸入地址和與其相關(guān)聯(lián)的操作狀態(tài),所述輸入地址指示 要基于所述所選擇的指令在其獲取指令的位置;基于預(yù)測所述輸入地址,在所述所選擇的 指令到達(dá)所述執(zhí)行階段之前,在輸入地址處獲取所述指令;并且,基于所述預(yù)測操作狀態(tài)來 啟動所述獲取的指令的解碼。
[0006] 也在此描述和要求保護(hù)與一個或多個方面相關(guān)的方法和系統(tǒng)。而且,也描述和可 以在此要求保護(hù)與一個或多個方面相關(guān)的服務(wù)。
[0007] 通過在此所述的技術(shù)來實現(xiàn)另外的特征和優(yōu)點。在此詳細(xì)描述并且作為所要求保 護(hù)的方面的一部分考慮其他實施例和方面。
【專利附圖】
【附圖說明】
[0008] 在說明書的結(jié)論處的權(quán)利要求中作為示例具體指出和清楚地要求保護(hù)一個 個方面。從結(jié)合附圖獲取的下面的詳細(xì)說明,上述和一個或多個方面的目的、特征和優(yōu)占顯 然,在附圖中: Μ
[0009] 圖1描述了用于合并和使用預(yù)測的獲取和解碼能力的一個或多個方面的處理環(huán) 境的一個實施例;
[0010] 圖2描述了圖1的處理環(huán)境的處理器的另外的細(xì)節(jié);
[0011] 圖3描述了處理環(huán)境的處理器的指令流水線的一個實施例;
[0012] 圖4描述了根據(jù)一個方面的指令流水線處理的另外的細(xì)節(jié);
[0013]圖5描述根據(jù)一個方面的指令流水線處理的另一個示例;
[0014] 圖6描述了系統(tǒng)調(diào)用指令的前端執(zhí)行的一個實施例;
[0015] 圖7描述了用于執(zhí)行系統(tǒng)調(diào)用指令的邏輯的一個實施例;
[0016] 圖8描述了在系統(tǒng)調(diào)用指令的前端執(zhí)行中使用的預(yù)測器堆棧的一個示例;
[0017] 圖9描述了異步異常的前端執(zhí)行的一個實施例;
[0018]圖10Α描述了從系統(tǒng)調(diào)用的返回或從中斷指令的返回的前端執(zhí)行的一個實施例;
[0019] 圖10Β描述了用于執(zhí)行從系統(tǒng)調(diào)用的返回或從中斷指令的返回的邏輯的一個實 施例;
[0020] 圖11描述了用于清除流水線化處理器的邏輯的一個實施例;
[0021] 圖12描述了合并一個或多個方面的計算機(jī)程序產(chǎn)品的一個實施例;
[0022] 圖13描述了用于合并和使用一個或多個方面的主機(jī)計算機(jī)系統(tǒng)的一個實施例;
[0023] 圖14說明了用于合并和使用一個或多個方面的計算機(jī)系統(tǒng)的另一個示例;^ [0024]圖15描述了包括用于合并和使用一個或多個方面的計算機(jī)網(wǎng)絡(luò)的計算機(jī)系統(tǒng)的 另一個示例;
[0025] 圖16描述了用于合并和使用一個或多個方面的計算機(jī)系統(tǒng)的各個元件的一個實 施例;
[0026] 圖17Α描述了圖16的計算機(jī)系統(tǒng)的執(zhí)行單元的一個實施例;
[0027] 圖17Β描述了圖16的計算機(jī)系統(tǒng)的分支單元的一個實施例;
[0028] 圖17C描述了圖16的計算機(jī)系統(tǒng)的加載/存儲單元的一個實施例;并且
[0029] 圖18描述了用于合并和使用一個或多個方面的仿真主機(jī)計算機(jī)系統(tǒng)的一個實施 例。
【具體實施方式】
[0030] 根據(jù)一個方面,提供了用于選擇的指令的預(yù)測獲取和解碼的能力,作為示例該指 令是改變在處理器內(nèi)的權(quán)限級和/或其他操作狀態(tài)的指令(例如,操作系統(tǒng)指令、管理程序 指令或其他這樣的指令)和/或其他選擇的指令。該能力包括例如:確定要執(zhí)行選擇的指 令,諸如系統(tǒng)調(diào)用指令、異步中斷、從系統(tǒng)調(diào)用指令返回或從異步中斷返回;確定所選擇的 指令的預(yù)測地址,該預(yù)測地址是處理傳送到以便提供所請求的服務(wù)的地址;并且,在該選擇 的指令的執(zhí)行之前,開始獲取在預(yù)測地址處開始的指令。該能力在一個實施例中進(jìn)一步包 括:預(yù)測和/或保持與選擇的指令相關(guān)的推測狀態(tài),例如,包括所選擇的指令的權(quán)限級的指 示或代表所選擇的指令執(zhí)行的指令。
[0031] 可以在執(zhí)行不同處理器的許多不同的處理環(huán)境中使用該預(yù)測能力。例如,它可 以與基于由國際商業(yè)機(jī)器公司提供的z/架構(gòu)的處理器一起使用。處理器的一個或多個 可以是服務(wù)器的一部分,該服務(wù)器例如是系統(tǒng)Z服務(wù)器,其實現(xiàn)Z/架構(gòu),并且由國際商 業(yè)機(jī)器公司提供。在題目為"z/Architecture Principles of Operation, "IBM出版號 為· SA22_7832-〇9,第十版,2012年12月的IBM出版物中描述了 z/架構(gòu)的一個實施例,該 文通過引用被整體包含在此。在一個示例中,處理器的一個或多個執(zhí)行操作系統(tǒng),諸如也由 國際商業(yè)機(jī)器公司提供的z/OS操作系統(tǒng)。IBM、Z/AROnTECTURE和Z/0S是美國紐約的阿 蒙克市的國際商業(yè)機(jī)器公司的注冊商標(biāo)。在此使用的其他名稱可以是國際商業(yè)機(jī)器公司或 其他公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。
[0032] 在另一個實施例中,處理器基于由國際商業(yè)機(jī)器公司提供的Power Architecture,并且可以例如是PowerTOO系列處理器。Power Architecture的一個實施例 描述在:"Power ISA VerSi〇n2.07"國際商業(yè)機(jī)器公司,2013年5月3日,其通過引用被整 體包含在此。POWER ARCHITECTURE是國際商業(yè)機(jī)器公司的注冊商標(biāo)。
[0033] 參考圖1描述了用于合并和使用預(yù)測能力的一個或多個方面的處理環(huán)境的 一個具體示例。在這個具體示例中,處理環(huán)境基于由國際商業(yè)機(jī)器公司提供的Power Architecture,但是這僅是示例。一個或多個方面適用于由國際商業(yè)機(jī)器公司或其他公司 提供的其他架構(gòu)。
[0034] 參見圖1,處理環(huán)境100例如包括中央處理單元(CPU) 110,其通過互連112耦合到 各個其他組件,該各個其他組件例如包括:只讀存儲器(R0M)116,其包括控制處理環(huán)境的 特定基本功能的基本輸入/輸出系統(tǒng)(BIOS);隨機(jī)存取存儲器(RAM) 114 ;1/0適配器118 ; 以及,通信適配器120。1/0適配器118可以是小計算機(jī)系統(tǒng)接口(SCSI)適配器,其與存儲 裝置121進(jìn)行通信。通信適配器1 2〇將互連112與網(wǎng)絡(luò)122對接,這使得處理環(huán)境100能 夠與諸如遠(yuǎn)程計算機(jī)124的其他系統(tǒng)進(jìn)行通信。
[0035] 互連112也具有經(jīng)由用戶接口適配器126和顯示適配器136與其連接的輸入/輸 出裝置。鍵盤128、跟蹤球130、鼠標(biāo)132和揚聲器134全部經(jīng)由用戶接口適配器126互連 到系統(tǒng)總線112。顯示器138通過顯示適配器136連接到系統(tǒng)總線112。以這種方式,作為 示例,處理環(huán)境100例如通過鍵盤I 28、跟蹤球130和/或鼠標(biāo)132來接收輸入,并且經(jīng)由網(wǎng) 絡(luò)122在存儲裝置121、揚聲器134和/或顯示器138上提供輸出。在處理環(huán)境1〇〇中描述 的硬件元件不意欲是窮盡性的,而是在一個實施例中表示處理環(huán)境的示例組件。
[0036] 可以通過諸如固件和/或軟件的程序代碼來控制處理環(huán)境1〇〇的操作,該程序代 碼通常包括例如操作系統(tǒng),諸如AIX K (AIX是國際商業(yè)機(jī)器公司的商標(biāo))和一個或多個應(yīng) 用程序或中件程序。如在此使用,固件包括例如處理器的微碼、毫碼和/或宏碼。它例如 包括在更高級機(jī)器代碼的實現(xiàn)中使用的硬件級指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,它 包括例如通常作為微碼傳遞的專用代碼,該微代碼包括對于基礎(chǔ)硬件特定的信任軟件或微 碼,并且控制對于系統(tǒng)硬件的操作系統(tǒng)訪問。這樣的程序代碼包括參考圖2以下討論的指 令。
[0037] 參見圖2,討論了處理環(huán)境的處理器200(例如,中央處理單元110)的另外的細(xì) 節(jié)。在一個示例中,處理器是超級標(biāo)量(super-scalar)處理器,其從存儲器(例如,圖1的 RAM114)檢索指令,并且將它們加載到處理器的指令排序邏輯(ISL) 204內(nèi)。該指令排序邏 輯例如包括1級指令高速緩存(LI I高速緩存)206、獲取解碼單元2〇8、指令隊列210和分 派單元212。在一個示例中,在ISL204的LI I高速緩存206中加載指令,并且該指令被保 留在LI I高速緩存206中,直到它們被要求或如果不需要它們則被替換。從LI I高速緩 存2〇6檢索并且通過獲取解碼單元208解碼指令。在解碼當(dāng)前指令后,將當(dāng)前指令加載到 指令隊列210內(nèi)。分派單元212將來自指令隊列210的指令分派到寄存器管理單元214以 及完成單元221內(nèi)。完成單元221耦合到通用執(zhí)行單元224和寄存器管理單元214,并且監(jiān) 控何時完成所發(fā)出的指令。
[0038] 當(dāng)分派單元212分派當(dāng)前指令時,寄存器管理單元214的統(tǒng)一主映射器218向在 當(dāng)前未被指派到邏輯寄存器的物理寄存器文件232a-232n內(nèi)的物理寄存器分配和映射目 的地邏輯寄存器編號。目的地?fù)?jù)稱被重新命名到在物理寄存器文件232a_232n中的指定的 物理寄存器。統(tǒng)一主映射器218從在統(tǒng)一主映射器218內(nèi)的空閑物理寄存器的列表219去 除指派的物理寄存器。對于那個目的地邏輯寄存器的隨后的引用將指向同一物理寄存器, 直到獲取解碼單元208解碼寫入到同一邏輯寄存器的另一個指令。然后,統(tǒng)一主映射器218 將邏輯寄存器重新命名到從空閑列表219選擇的不同的物理位置,并且映射器被更新以進(jìn) 入新的邏輯至物理寄存器映射器數(shù)據(jù)。當(dāng)不再需要邏輯至物理寄存器映射器數(shù)據(jù)時,舊的 映射的物理寄存器返回到空閑列表219。如果空閑物理寄存器列表219沒有足夠的物理寄 存器,則分派單元212暫停指令分派,直到所需的物理寄存器變得可獲得。
[0039]在寄存器管理單元214已經(jīng)映射了當(dāng)前指令后,發(fā)出隊列222向包括執(zhí)行單元 (EU) 230a-23〇n的通用執(zhí)行引擎M4發(fā)出當(dāng)前指令。執(zhí)行單元230a-230n是各種類型的,包 括例如浮點(FP)、定點(FX)和加載/存儲(LS)。通用執(zhí)行引擎224經(jīng)由數(shù)據(jù)高速緩存234 與數(shù)據(jù)存儲器(例如,圖1的RAM114、R0M116)交換數(shù)據(jù)。而且,發(fā)出隊列222可以包含浮 點類型或定點類型的指令和/或加載/存儲指令。然而,應(yīng)當(dāng)明白,可以使用任何數(shù)量和類 型的指令。在執(zhí)行期間,EU 230a-23〇n從在寄存器文件232a-232n中物理位置獲得源操作 數(shù)值,并且在寄存器文件23 2a-232n和/或數(shù)據(jù)高速緩存234中存儲結(jié)果數(shù)據(jù),如果有。 [0040]寄存器管理單元214例如包括:(i)映射器簇215,其包括架構(gòu)化寄存器映射器 216、統(tǒng)一主映射器218和中間寄存器映射器220;以及,(ii)發(fā)出隊列222。映射器鎂215 跟蹤向各個指令的邏輯寄存器指派的物理寄存器。在一個實施例中,架構(gòu)化寄存器映射器 21 6具有每種類型的ie個邏輯(即,未物理映射)寄存器,其存儲邏輯至物理的寄存器映 射器數(shù)據(jù)的最后的有效(即,設(shè)置檢查點(checkpointed))狀態(tài)。然而,應(yīng)當(dāng)認(rèn)識到,不同 的處理器架構(gòu)可以具有比在本實施例中所述者更多或更少的邏輯寄存器。而且,架構(gòu)化寄 存器映射器2ie包括指針列表,該指針列表識別描述設(shè)置檢查點狀態(tài)的物理寄存器。物理 寄存器文件 232a-232n通常包含比在架構(gòu)化寄存器映射器216中的條目的數(shù)量更多的寄存 器。應(yīng)當(dāng)注意,在其余的映射方案中使用的物理和邏輯寄存器的特定數(shù)量可以不同。
[0041]相反,統(tǒng)一主映射器218通常大于(通常包含多達(dá)2〇個條目)架構(gòu)化寄存器映射 器216。統(tǒng)一主映射器218促進(jìn)邏輯至物理寄存器映射的瞬時狀態(tài)的跟蹤。術(shù)語"瞬時,,指 的是當(dāng)亂序地(0〇0)執(zhí)行指令時統(tǒng)一主映射器218跟蹤暫時的邏輯至物理寄存器映射數(shù)據(jù) 的事實。亂序執(zhí)行通常當(dāng)存在比在流水線中的較新的指令需要更長的時間(即,利用更多 的時鐘周期)執(zhí)行的較舊的指令時出現(xiàn)。然而,如果亂序指令的執(zhí)行結(jié)果要求它因為特定 原因(例如,分支誤預(yù)測)被清除,則處理器可以返回到由架構(gòu)化寄存器映射器 216保持的 設(shè)置檢查點狀態(tài),并且恢復(fù)從最后的有效狀態(tài)的執(zhí)行。
[0042]統(tǒng)一主映射器218在寄存器文件232a_232n中的物理寄存器和架構(gòu)化寄存器映射 器216之間建立關(guān)聯(lián)。限定的術(shù)語"統(tǒng)一"指的是統(tǒng)一主映射器218脫離定制設(shè)計用于寄 存器文件2 32的每一個(例如,通用寄存器(GPR)、浮點寄存器(FPR)、定點寄存器 (FXP)、異 常寄存器(XER)、條件寄存器(CR)等)的專用映射器的復(fù)雜性的事實。
[0043]除了建立亂序指令的暫時的邏輯至物理寄存器映射器條目之外,統(tǒng)一主映射器 218也跟蹤依賴性數(shù)據(jù)(即,取決于在流水線中的較舊指令的結(jié)束的指令),這用于指令 排序。傳統(tǒng)上,一旦統(tǒng)一主映射器218已經(jīng)進(jìn)入指令的邏輯至物理寄存器轉(zhuǎn)換,則指令傳 遞到發(fā)出隊列22 2。發(fā)出隊列2M在指令被發(fā)出到執(zhí)行單元230以執(zhí)行之前作為看門者 (gateke印er)。作為一般的規(guī)則,如果指令取決于較舊的指令結(jié)束,則該指令不能離開發(fā)出 隊列222。由于這個原因,所以統(tǒng)一主映射器218通過存儲用于被映射的每一個指令的發(fā)出 隊列位置數(shù)據(jù)來跟蹤依賴性數(shù)據(jù)。一旦指令已經(jīng)被通用執(zhí)行引擎224執(zhí)行,則該指令被稱 為己經(jīng)"結(jié)束"并且從發(fā)出隊列222退出。
[0044]寄存器管理單元214可以在單個周期中從分派單元212接收多個指令,以便保持 被填充的單個發(fā)出流水線。指令的分派被在統(tǒng)一主映射器218中的可用條目的數(shù)量限制。 在缺少中間寄存器映射器22〇的一些映射器系統(tǒng)中,如果統(tǒng)一主映射器218具有總共20個 映射器條目,則存在可以立刻處于飛行中(in-flight) ( S卩,未設(shè)置檢查點)的最多20個指 令。因此,分派單元212可以可設(shè)想地分派比可以實際上從統(tǒng)一主映射器218退出者更多 的指令。在統(tǒng)一主映射器 218處的這個瓶頸的原因是因為下述事實:傳統(tǒng)上,指令的映射器 條目可以不從統(tǒng)一主映射器218退出,直到指令"結(jié)束"(即,所有的較舊指令已經(jīng)"結(jié)束" 執(zhí)行)。
[0045] 然而,在一個實施例中,中間寄存器映射器220作為非時序關(guān)鍵寄存器,對于其而 言,來自統(tǒng)一主映射器218的"結(jié)束的"但是"未完成"的指令可以在該指令的最終完成之 前退出(即,從統(tǒng)一主映射器218被去除)。一旦指令"完成",則完成單元221向中間寄存 器映射器22〇通知該完成。在中間寄存器映射器220中的映射器條目然后可以通過替換在 架構(gòu)化寄存器映射器216中當(dāng)前存儲的對應(yīng)的條目,來更新架構(gòu)化寄存器映射器216的架 構(gòu)化相干狀態(tài)。
[0046]關(guān)于映射器和與其相關(guān)聯(lián)的處理的一個實施例的另外的細(xì)節(jié)描述在題目 為"Scalable Decode-Time Instruction Sequence Optimization of Dependent Instructions"、Gschwind等人、2013年4 月 4 日公布的美國公布No.2013/0086361 中,其 通過引用整體并入在此。
[0047]如上所述,處理器200采用流水線化處理來執(zhí)行從存儲器獲取的指令。參考描述 了處理流水線的一個示例的圖3來描述關(guān)于這個處理的一個實施例的另外的細(xì)節(jié)。在一個 示例中,將指令獲取到指令獲取單元300內(nèi),指令獲取單元300包括例如指令獲?。↖F) 302、 指令高速緩存(1C) 304和分支預(yù)測器306。指令獲取單元300耦合到一組形成和解碼單 元310,該組形成和解碼單元310包括一個或多個解碼階段φη) 312以及用于向組分派 (GD)32〇傳送解碼的指令的傳送階段(Xfer)314。組分派320耦合到映射單元(MP)322(諸 如圖2的架構(gòu)化寄存器映射器21 6、統(tǒng)一主映射器218和/或中間寄存器映射器220),映射 單元(MP) 322耦合到處理單元330。
[0048] 處理單元330提供了用于不同類型的指令的處理。例如,在331,描述了用于包括 分支重定向(BR)337的指令的處理,并且該處理例如包括指令發(fā)出(ISS)33 2、寄存器文件 讀取(RF) 334、執(zhí)行(EX) 336、向指令獲取302的分支重定向337、寫入返回(WB) 346和傳送 (Xfer)348 ;在333,描述了用于加載/存儲指令的處理,該處理包括例如指令發(fā)出332、寄存 器文件讀取334、計算地址(EA) 338、數(shù)據(jù)高速緩存(DC) 340、格式(FMT)342、寫回346和傳 送348 ;在335,描述了用于定點指令的處理,并且該處理包括例如指令發(fā)出332、寄存器文 件讀取334、執(zhí)行336、寫回346和傳送348 ;并且在337,描述了用于浮點指令的處理,并且 該處理包括例如指令發(fā)出332、寄存器文件讀取334、六周期浮點單元(F6)344、寫回346和 傳送348。用于每種類型的指令的處理傳送到組提交(CP) 350。作為示例,在中斷和清除的 情況下,組提交350的輸出耦合到指令獲取302。
[0049] 在一個實施例中,當(dāng)選擇的指令是要完成的下一個指令(NTC)--這意味著在流 水線中的其前的所有其他指令已經(jīng)完成--時,執(zhí)行選擇的指令,諸如系統(tǒng)調(diào)用或從系統(tǒng) 調(diào)用返回指令(參見例如在370處的附圖標(biāo)號)。當(dāng)它執(zhí)行時,則傳統(tǒng)上,在所選擇的指令 之后的所有指令被清除。然后根據(jù)系統(tǒng)調(diào)用入口地址(例如,系統(tǒng)調(diào)用的目標(biāo)地址)或與 被執(zhí)行的特定指令對應(yīng)的、指定的從系統(tǒng)調(diào)用返回地址,從執(zhí)行點以新的權(quán)限級(例如,操 作系統(tǒng)級)來重新獲取指令。
[0050] 當(dāng)要執(zhí)行改變在流水線中的權(quán)限級和/或其他操作狀態(tài)的其他類型的指令時,執(zhí) 行類似的處理。
[0051] 參考圖4來描述關(guān)于指令數(shù)據(jù)流的另外的細(xì)節(jié)。如所示,依賴于指令,特定數(shù)據(jù)流 可以使用下面的一個或多個:分支預(yù)測單元400,其耦合到程序計數(shù)器402,程序計數(shù)器402 經(jīng)由復(fù)用器403進(jìn)一步耦合到指令高速緩存404。指令高速緩存404耦合到指令轉(zhuǎn)換406 以及一個或多個指令緩沖器4〇 8。指令緩沖器408耦合到復(fù)用器410,復(fù)用器410可以使用 線程優(yōu)先級來向組形成、指令解碼、分派單元4 2〇轉(zhuǎn)發(fā)所獲取的指令。分派單元420然后 進(jìn)一步耦合到共享寄存器映射器422 (例如,圖2的映射器216、218、220)和全局完成表格 424,全局完成表格424是跟蹤完成的指令的數(shù)據(jù)結(jié)構(gòu)。
[0052] 從映射器,數(shù)據(jù)流過共享發(fā)出隊列43〇(例如,圖2的發(fā)出隊列222);用于動態(tài)指 令選擇的復(fù)用器43 2 ;用于共享寄存器文件440 (例如,圖2的寄存器文件232a-232η)的 共享讀取邏輯;共享執(zhí)行單元442,諸如加載/存儲單元(LSU)、定點執(zhí)行單元(FXU)、浮點 執(zhí)行單元(FPU)、分支執(zhí)行單元(BXU)和條件寄存器邏輯執(zhí)行單元(CRL)(例如,圖2的執(zhí) 行單元230a-230n);用于共享寄存器文件444的共享寫入邏輯(例如,圖2的寄存器文件 232a-232n);數(shù)據(jù)轉(zhuǎn)換446,如果需要的話;組完成4你(例如圖2的完成單元221或圖3的 CP350);以及存儲隊列450。存儲隊列450經(jīng)由復(fù)用器452耦合到數(shù)據(jù)高速緩存452和L2 高速緩存454的一個或多個。
[0053]組完成448進(jìn)一步可操作地耦合到一個或多個數(shù)據(jù)結(jié)構(gòu)和/或存儲器位置,該一 個或多個數(shù)據(jù)結(jié)構(gòu)和/或存儲器位置包括:用于處理環(huán)境的狀態(tài),諸如全局狀態(tài)458,用于 指示例如在流水線中的當(dāng)前權(quán)限級;非推測機(jī)器狀態(tài)寄存器(MSR)456,其提供了用于在流 水線中執(zhí)行的每一個指令的共享機(jī)器狀態(tài);以及選用地,與在處理器中的指令的跟蹤相關(guān) 的其他全局狀態(tài)。機(jī)器狀態(tài)寄存器包括例如多個指示符(例如,位),并且每一個指示符表 示所選擇的屬性的狀態(tài)。例如,一個指示符用于指定指令的權(quán)限級(例如,用戶級、操作系 統(tǒng)級、管理程序級);一個指示符可以用于指示是否使能指令重新定位;并且/或者,另一個 指示符可以用于指示是否使能數(shù)據(jù)重新定位(指令和數(shù)據(jù)重新定位用于地址轉(zhuǎn)換)??梢?指定其他和/或不同的屬性。
[0054] 再一次參見分支預(yù)測單元400。它例如包括分支預(yù)測邏輯46〇,分支預(yù)測邏輯460 可以參考要用于作出諸如分支是否將出現(xiàn)的預(yù)測的分支歷史表格462、返回堆棧464和目 標(biāo)高速緩存46 6的一個或多個。在一個實施例中,返回堆棧被實現(xiàn)為鏈接預(yù)測器堆棧,鏈接 預(yù)測器堆棧對于子例程預(yù)測例如當(dāng)應(yīng)用執(zhí)行從子例程返回時處理器認(rèn)為應(yīng)用將返回到的 地址。根據(jù)一個方面,它也包括用于從選擇的指令返回的預(yù)測地址,諸如改變在處理器中的 權(quán)限級和/或其他操作狀態(tài)的那些,如在此所述。在另一個方面,提供了用于預(yù)測用于從選 擇的指令返回的地址的獨立預(yù)測器。
[0055] 根據(jù)一個方面,分支預(yù)測邏輯46〇也用于預(yù)測是否要執(zhí)行諸如改變權(quán)限級和/或 其他操作狀態(tài)的指令的所選擇的指令,并且如果如此,則預(yù)測用于那個所選擇的指令的預(yù) 測地址。在其中指令是系統(tǒng)調(diào)用指令的一個示例中,預(yù)測地址是系統(tǒng)調(diào)用入口地址。入口 地址是系統(tǒng)調(diào)用指令當(dāng)它被執(zhí)行時傳送到的地址。通過預(yù)測入口地址,在入口地址開始的 指令可以被獲取,并且然后在到達(dá)所選擇的指令的執(zhí)行之前在單元420中被解碼。這減少 了在例如分支執(zhí)行單元和條件寄存器邏輯執(zhí)行單元中的權(quán)限級改變的流水線損失。為了完 成這一點,如在此更詳細(xì)地所述,分支預(yù)測邏輯460包括要用于與所選擇的指令相關(guān)聯(lián)的 預(yù)測獲取和解碼的預(yù)測邏輯468。該預(yù)測邏輯采用例如在耦合到該預(yù)測邏輯的推測MSR中 保持的推測狀態(tài)。在一個示例中,它被保持在解碼邏輯中,如在圖5中所述。
[0056] 根據(jù)預(yù)測能力的一方面,分支預(yù)測邏輯用于減少與執(zhí)行所選擇的指令相關(guān)聯(lián)的成 本,該所選擇的指令例如是系統(tǒng)調(diào)用指令、從系統(tǒng)調(diào)用返回指令、從中斷返回以及其他。預(yù) 測能力預(yù)測是否要在指令流水線中執(zhí)行所選擇的指令(例如,改變在處理器中的權(quán)限級和 /或另一個操作狀態(tài)的指令),并且如果如此,則它開始獲取和解碼與那個指令相關(guān)聯(lián)的指 令(例如,在預(yù)測地址處的指令)。這減少了當(dāng)執(zhí)行所選擇的指令時的流水線的破壞,并且 處理進(jìn)行到在預(yù)測地址處的指令。在至少一個實施例中,配備了預(yù)測邏輯以使用用于未來 指令的預(yù)測的獲取地址來更新程序計數(shù)器(PC)(也稱為指令地址寄存器(IAR))。雖然在這 個示例中分支預(yù)測邏輯包括所選擇的指令的預(yù)測獲取和解碼(被稱為預(yù)測邏輯468),但是 在其他實施例中,該邏輯可以被包括在除了分支預(yù)測邏輯之外。
[0057] 參考圖5來描述根據(jù)一個方面的所選擇的指令的處理的概述。如所示,指令獲取 (IF)單元500耦合到指令解碼(ID)單元502。指令被指令獲取單元從存儲器獲取,并且被 解碼單元502的解碼器504解碼。在一個方面,當(dāng)獲取指令時,使用例如預(yù)測器506來作出 關(guān)于特定的被獲取的指令是否是諸如改變權(quán)限級和/或其他操作狀態(tài)的指令的所選擇的 指令的預(yù)測。例如,執(zhí)行被獲取的指令的部分解碼以確定該指令是否是所選擇的指令。如 果它是所選擇的指令,則用于所選擇的指令的預(yù)測地址被預(yù)測和存儲在指令獲取單元的程 序計數(shù)器(PC) 512中。例如,對于系統(tǒng)調(diào)用指令,預(yù)測地址是系統(tǒng)調(diào)用入口地址;并且,對于 從系統(tǒng)調(diào)用返回指令,預(yù)測地址是返回地址。而且,與在預(yù)測地址處的指令相關(guān)的狀態(tài)被預(yù) 測和存儲在推測MSR510中。
[0058] 所選擇的指令通過指令流水線到指令序列單元(ISU)530運作其路線,指令序列 單元(ISU) 530包括例如一個或多個發(fā)出隊列532和指令序列執(zhí)行單元534,指令序列執(zhí)行 單元5:M更新非推測MSR5:36。非推測MSR表示在流水線中執(zhí)行的指令的狀態(tài)。它是實際狀 態(tài),而不是預(yù)測狀態(tài),并且在一個實施例中,它包括與推測MSR相同的指示符。(在另一個實 施例中,它包含在推測MSR中的指示符的超集)。該指令序列單元耦合到一個或多個執(zhí)行單 元,諸如分支重定向執(zhí)行單元 540、定點執(zhí)行單元542、加載/存儲執(zhí)行單元544、向量標(biāo)量執(zhí) 行單元546和一個或多個其它執(zhí)行單元548。該指令被這些執(zhí)行單元之一執(zhí)行。根據(jù)一個 方面,該指令的執(zhí)行不引起現(xiàn)在在流水線中的、在預(yù)測地址處開始的所獲取的指令的清除。 相反,在所選擇的指令的預(yù)測地址處開始的指令被獲取和/或解碼,并且當(dāng)執(zhí)行所選擇的 指令時在要被執(zhí)行的流水線中。在一個實施例中,在預(yù)測地址處開始的指令諸如在解碼、分 派、傳送或發(fā)出中被保持在流水線階段,直到所選擇的指令己經(jīng)更新了非推測MSR狀態(tài)(例 如,圖4的456或圖5的536)。
[0059] 參考圖6來描述關(guān)于處理諸如系統(tǒng)調(diào)用指令的所選擇的指令的另外的細(xì)節(jié)。在一 個實施例中,初始,指令被從存儲器獲取到指令獲取單元,步驟600。然后,執(zhí)行諸如分支掃 描(而不是全部解碼)的掃描以預(yù)測該指令是否是系統(tǒng)調(diào)用指令,查詢602。通過例如位于 指令獲得單元中(或在另一個實施例中,可以在解碼單元中)的分支預(yù)測邏輯來執(zhí)行掃描。 例如,通過檢查指令的操作碼和/或與指令相關(guān)聯(lián)的參數(shù)來作出該預(yù)測。在另一個實施例 中,使用預(yù)解碼信息來檢測系統(tǒng)調(diào)用指令。在另一個實施例中,執(zhí)行指令的完全解碼。如果 它不是系統(tǒng)調(diào)用指令,則處理像傳統(tǒng)的那樣執(zhí)行,步驟 6〇4。在另一個實施例中,可以作出其 他檢查以確定該指令是否是另一種類型的所選擇的指令。
[0060]然而,如果預(yù)測要執(zhí)行系統(tǒng)調(diào)用指令,則執(zhí)行特定處理以使得能夠在執(zhí)行系統(tǒng)調(diào) 用指令之前獲取和解碼與系統(tǒng)調(diào)用指令相關(guān)聯(lián)的一個或多個指令。已經(jīng)在流水線中的、 在檢測的系統(tǒng)調(diào)用指令之前已經(jīng)獲取的指令被允許保持進(jìn)行通過該流水線。該處理例如 包括:將預(yù)測地址設(shè)置為所選擇的指令的入口地址,并且將其存儲在程序計數(shù)器中,步驟 606。該入口地址是基于系統(tǒng)調(diào)用指令的執(zhí)行要訪問的地址。它是系統(tǒng)調(diào)用指令的目標(biāo)地 址,在該地址處,執(zhí)行代表系統(tǒng)調(diào)用指令的一個或多個指令的獲取。作為示例,從在架構(gòu)規(guī) 格中指定的常數(shù)或從作為示例的控制寄存器、中斷向量寄存器、專用寄存器或某個指定的 存儲器位置獲得的常數(shù)來得出該系統(tǒng)調(diào)用入口地址。在一個示例中,當(dāng)中斷值在存儲器中 是動態(tài)可修改的(例如,入口地址)時,使用存儲該中斷值的專用寄存器來執(zhí)行高速緩存, 以避免存儲器訪問。在另一個示例中,當(dāng)該是值動態(tài)可修改的時,高速緩存與寄存器間接相 結(jié)合或與存儲多個預(yù)測值的預(yù)測表格相結(jié)合地出現(xiàn),以避免存儲器訪問。
[0061]另外,如果預(yù)測系統(tǒng)調(diào)用指令,則對于在入口地址處開始的要獲取的指令關(guān)于一 個或多個MSR指不符的值作出進(jìn)一步的預(yù)測,該MSR指示符諸如例如權(quán)限級(例如,操作系 統(tǒng)級)、指令重新定位、數(shù)據(jù)重新定位等,步驟 6〇8。在一個示例中,當(dāng)在寄存器中存儲權(quán)限 級時,基于系統(tǒng)調(diào)用指令(例如,基于與系統(tǒng)調(diào)用指令相關(guān)聯(lián)的操作碼或參數(shù))或基于預(yù)測 器表格來獲得權(quán)限級。
[0062]而且,選用地,向預(yù)測器堆棧上推送在系統(tǒng)調(diào)用指令的執(zhí)行后要返回到的地址以 及在從系統(tǒng)調(diào)用返回時要作為推測MSR預(yù)測的值。在一個實施例中,用于從系統(tǒng)調(diào)用返回 的預(yù)測值反映了非推測MSR的當(dāng)前值,步驟610。在另一個實施例中,在被更新為在步驟 6〇8 中預(yù)測的預(yù)測MSR位之前的推測MSR反映非推測MSR,并且反映非推測MSR位的推測MSR位 用于初始化預(yù)測器堆棧。在另一個實施例中,例如,當(dāng)同時在處理器中存在多級的推測時, 在預(yù)測器堆棧中存儲反映在步驟60S的新預(yù)測的MSR位之前的推測狀態(tài)的推測MSR位。
[0063] 另外,啟動在預(yù)測的地址處的獲取,并且在耦合到指令獲取/解碼單元的推測MSR 中存儲預(yù)測的MSR位,步驟612。如果在系統(tǒng)調(diào)用后獲取任何各種各樣的指令(即,不與系 統(tǒng)調(diào)用相關(guān)聯(lián)的指令--不是在預(yù)測地址處開始的獲取的那些),則抑制它們。然而,根據(jù) 一個方面,基于預(yù)測MSR來解碼在預(yù)測地址處開始的獲取的指令,其在此被稱為與系統(tǒng)調(diào) 用或其他所選擇的指令相關(guān)聯(lián)的指令,但是抑制進(jìn)一步的處理。例如,在分派處保持這些指 令,直到接收到分派它們的指示。處理然后返回到步驟600。
[0064] 在一個實施例中,僅推測地執(zhí)行所選擇的指令的一級預(yù)測(即,當(dāng)已經(jīng)預(yù)測一個 所選擇的指令時,將不預(yù)測地處理在指令流中出現(xiàn)的另外的所選擇的指令,直到第一預(yù)測 的所選擇的指令已經(jīng)完成其執(zhí)行)。在另一個實施例中,執(zhí)行多級預(yù)測。
[0065] 系統(tǒng)調(diào)用指令繼續(xù)在流水線中的處理,并且最后到達(dá)執(zhí)行階段,諸如分支執(zhí)行。參 考圖7來描述關(guān)于系統(tǒng)調(diào)用指令的執(zhí)行(即,當(dāng)系統(tǒng)調(diào)用指令到達(dá)執(zhí)行階段時)的一個實 施例的細(xì)節(jié)。初始,通過分支執(zhí)行單元來確定關(guān)于是否從發(fā)出/分派邏輯接收到系統(tǒng)調(diào)用 指令,查詢700。如果否,則執(zhí)行傳統(tǒng)的處理,步驟702。然而,如果從發(fā)出/分派邏輯接收 到系統(tǒng)調(diào)用指令,則從指令定義獲得MSR位和下一個獲取地址(即,跟隨系統(tǒng)調(diào)用指令的指 令的有效地址),步驟704。
[0066] 另外,更新異常狀態(tài),步驟706。例如,更新一個寄存器(例如,SRR0)以包括在從 系統(tǒng)調(diào)用的返回后要使用的下一個獲取地址,并且更新另一個寄存器(例如,SRR1)以包括 在從系統(tǒng)調(diào)用的返回后要使用的MSR位(例如,在根據(jù)當(dāng)前指令的MSR更新之前的當(dāng)前非 推測MSR狀態(tài))。而且,使用根據(jù)指令定義獲得的MSR來更新非推測MSR,步驟708。另外, 基于例如特定架構(gòu)定義來更新其他狀態(tài),其中,基于例如使用一個或多個指令或訪問存儲 器的指定位置獲得的值來更新狀態(tài)。
[0067] 然后,進(jìn)行關(guān)于預(yù)測的MSR位是否對應(yīng)于來自指令定義的架構(gòu)MSR位的確定,查詢 710。如果它們對應(yīng),則作出關(guān)于預(yù)測的下一個獲取地址(即,預(yù)測地址)是否對應(yīng)于來自 指令定義的架構(gòu)下一個獲取地址(NIA)的進(jìn)一步確定,查詢712。如果在MSR位和獲取地址 之間存在對應(yīng)性,則解鎖在分派處保持的指令,步驟714,并且完成指令,步驟716。處理然 后返回到查詢700。
[0068] 然而,如果或者預(yù)測的MSR位不對應(yīng)于架構(gòu)MSR位或者預(yù)測的地址不對應(yīng)于架構(gòu) 地址,則處理誤預(yù)測,步驟720。例如,在流水線中的在當(dāng)前指令后的指令被清除,步驟722, 并且,架構(gòu)MSR位和獲取地址被發(fā)送到例如指令獲取單元,步驟724。然后重啟指令獲取,步 驟726,并且處理在查詢700繼續(xù)。這結(jié)束了系統(tǒng)調(diào)用執(zhí)行的一個實施例。
[0069] 如在此所述,提供了這樣的能力,其中,在一個方面,使用分支預(yù)測邏輯來檢測系 統(tǒng)調(diào)用指令,并且預(yù)測系統(tǒng)調(diào)用指令的地址,該地址指定開始獲取用于系統(tǒng)調(diào)用指令的指 令的位置。此外,還預(yù)測那些獲取的指令的權(quán)限級。
[0070] 在一個方面,系統(tǒng)調(diào)用入口指令被分支預(yù)測邏輯檢測,并且被處理為預(yù)測的分支。 預(yù)測通常的直接的,因為大多數(shù)系統(tǒng)調(diào)用入口指令是無條件的,即,總是被采取的。在具有 條件系統(tǒng)調(diào)用指令的指令集架構(gòu)(ISA)中,進(jìn)行定向預(yù)測以便確定是否應(yīng)當(dāng)執(zhí)行系統(tǒng)調(diào)用 (或TRAP或其他類似的指令)并且基于系統(tǒng)調(diào)用指令來更新預(yù)測。
[0071] 雖然已經(jīng)參考在分支執(zhí)行單元中出現(xiàn)的執(zhí)行描述了圖7,但是在另一個實施例中, 在與分支執(zhí)行單元不同的另一個執(zhí)行單元中或者通過多個執(zhí)行單元合作地執(zhí)行圖7的技 術(shù),該多個執(zhí)行單元選用地包括或不包括該分支執(zhí)行單元。
[0072] 在一個方面,修改分支預(yù)測器以預(yù)測系統(tǒng)調(diào)用指令的目標(biāo)的新權(quán)限級?;谙到y(tǒng) 調(diào)用指令,存儲預(yù)測權(quán)限狀態(tài)。在一個方面,當(dāng)分支(或其他)清除出現(xiàn)時,將預(yù)測狀態(tài)更 新為在該清除關(guān)聯(lián)的指令流中的點處的權(quán)限級的預(yù)測狀態(tài)。
[0073] 作為一個實施例,在獲取/解碼邏輯中保持單獨的預(yù)測權(quán)限級,而在例如在ISU中 的其他位置維持非預(yù)測的權(quán)限級。執(zhí)行用于保證相對于與非推測級作比較的預(yù)測權(quán)限級的 正確的推測和解碼的檢查,以保證所有指令的正確執(zhí)行。例如,通過將推測權(quán)限級與非推測 級作比較來驗證與至少一個指令相關(guān)聯(lián)的推測權(quán)限級。如果驗證不成功,則采取校正行動。 [0074] 如上所述,在一種實現(xiàn)中,使用預(yù)測器堆棧來維持用于系統(tǒng)調(diào)用指令的返回地址。 先前,不這樣做,因為從系統(tǒng)調(diào)用或異常指令可以改變處理器權(quán)限狀態(tài)。然而,根據(jù)一個方 面,通過增加具有預(yù)測權(quán)限狀態(tài)的預(yù)測器堆棧、通過標(biāo)注具有預(yù)測權(quán)限狀態(tài)的預(yù)測器堆棧 或兩者來使能返回地址的維持。而且,在一個方面,提供邏輯以與至少一個指令相結(jié)合地檢 查預(yù)測權(quán)限狀態(tài)。
[0075] 在一個實施例中,當(dāng)檢測到系統(tǒng)調(diào)用入口指令時,將返回地址布置在預(yù)測器堆棧 上。而且,在一個實施例中,向返回地址入口加上權(quán)限狀態(tài)和選用的要進(jìn)入的另外的MSR狀 態(tài)。另外,在一個實施例中,在該入口中包括標(biāo)記已經(jīng)通過系統(tǒng)調(diào)用入口指令來布置該入口 的指示符。在本上下文中,將權(quán)限狀態(tài)看作預(yù)測的,因為返回是預(yù)測的。不必知道處理將返 回到返回地址,以及在執(zhí)行從中斷返回或從系統(tǒng)調(diào)用返回時操作系統(tǒng)將指示什么權(quán)限級和 /或其他MSR狀態(tài)。返回例如取決于在流水線中的處理。
[0076]參考圖8來描述用于保持返回地址的預(yù)測器堆棧的一個示例。作為一個示例,將 預(yù)測器堆棧8〇0實現(xiàn)為后進(jìn)先出(LIF0)鏈接堆棧。通過T0S指示該堆棧的頂部。在一個 實施例中,該堆棧包括多個地址802以及狀態(tài)信息,諸如每一個地址的當(dāng)前MSR位804和記 錄標(biāo)記806。記錄標(biāo)記在一個實施例中是可選的,并且它提供了用于跟蹤誰在鏈接堆棧上建 立了記錄的能力。作為示例,BL指的是分支鏈路;SC指的是系統(tǒng)調(diào)用,諸如對于操作系統(tǒng)的 系統(tǒng)調(diào)用;SC_HV指的是對于管理程序的系統(tǒng)調(diào)用,并且ΕΓΓ指的是外部中斷。
[0077]在一些實施例中,一些指令將使用在鏈接堆棧中可獲得的字段的子集。因此,例 如,當(dāng)未指定分支至鏈接指令以根據(jù)諸如Power ISA ν2· 07的至少一個指令集規(guī)范來改變 MSR狀態(tài)時,可以通過獲得預(yù)測的子例程返回地址而不獲得更新的MSR狀態(tài)來預(yù)測分支到 鏈接指令, u
[0078]根據(jù)一個實施例,當(dāng)存在記錄標(biāo)記時,與預(yù)測的返回地址和MSR狀態(tài)相結(jié)合地獲 取記錄標(biāo)記。根據(jù)一個實施例,將記錄標(biāo)記與正被處理的指令作比較,作為示例,使得僅反 映由分支和鏈接指令產(chǎn)生的預(yù)測記錄的BL記錄用于預(yù)測向分支至鏈接指令的返回地址; 僅反映對操作系統(tǒng)的系統(tǒng)調(diào)用的SC記錄將被來自操作系統(tǒng)的從系統(tǒng)調(diào)用的返回使用;僅 反映對管理程序的系統(tǒng)調(diào)用的SC_HV記錄將被來自管理程序的從系統(tǒng)調(diào)用的返回使用;并 且,僅由外部異步中斷建立的EXT記錄將被從外部中斷指令的返回使用。在其他實施例中, 從系統(tǒng)調(diào)用的返回可以用于從操作系統(tǒng)或管理程序的返回,并且任一記錄類型將被接受為 可允許預(yù)測器。在另一其他實施例中,這些系統(tǒng)調(diào)用具有相同的記錄標(biāo)記。在又丄其他實施 例中,可以通過相同的返回指令來完成操作系統(tǒng)調(diào)用(對于操作系統(tǒng)的系統(tǒng)調(diào)用)、管理程 序調(diào)^(對于管理程序的系統(tǒng)調(diào)用)和外部異步異常的一些或全部。在這樣的實施例中, 與共享的返回對應(yīng)的建立的所有標(biāo)記將被接受為可允許預(yù)測器。在另一個實施例中,這些 系統(tǒng)調(diào)用和/或中斷將具有相同的記錄標(biāo)記。許多變化是可能的。
[0079]作為其他實施例,除了或取代在堆棧上包括狀態(tài)信息,可以使用狀態(tài)信息來標(biāo)注 堆棧。
[0080]在另一個方面,外部異步中斷也可以采用在此所述的預(yù)測能力的一個或多個方面 來加速從外部中斷的返回。這包括例如在外部異常入口上的預(yù)測器堆棧上推送返回地址; 并且在外部異常退出時,使用例如從中斷返回的指令來較早地獲取該地址,如在此所述。 [00 81]參考圖9描述了用于外部異步中斷的前端執(zhí)行的一個實施例。初始,通過例如獲 取/解碼單元作出關(guān)于是否接收到外部異常的確定,查詢900。如果否,則執(zhí)行傳統(tǒng)的指令 處理,步驟 9〇2。在另一個實施例中,可以作出其他檢查以確定該指令是否是另一個類型的 所選擇的指令。
[0082] 否則,在指令地址寄存器中的程序計數(shù)器被設(shè)置到異常入口地址,步驟904。作為 示例,該值可以從常數(shù)、中斷向量寄存器或存儲器向量等被獲得。而且,基于異常來預(yù)測MSR 指示符。
[0083]其后,清除在流水線中的指令,步驟906。而且,在一個實施例中,將從中斷地址的 返回推送到預(yù)測器堆棧以及當(dāng)前的MSR位上,步驟908。在一個實施例中,當(dāng)前MSR位反映 圖5的非推測MSR位536。然后,啟動在異常入口地址處的獲取,并且在推測 MSR中存儲預(yù) 測的MSR位,步驟910。解碼在異常入口地址處開始的、所獲取的指令。處理然后繼續(xù)到查 詢 900。
[0084] 在至少一個實施例中,根據(jù)按照架構(gòu)的異常處理的傳統(tǒng)定義來更新另外的狀態(tài)。 該狀態(tài)包括但是不限于非推測全局MSR位(例如,圖5的MSR位456)以及其他非推測狀態(tài), 諸如從在第一寄存器(例如,SRR0寄存器)中的異常地址的架構(gòu)化返回和從在第二寄存器 (例如,SRR1寄存器)中的異常MSR狀態(tài)的架構(gòu)化返回。
[0085]如上所述,在一個實施例中,預(yù)測能力包括在預(yù)測器堆棧上推送返回信息,以促進(jìn) 從所選擇的指令的返回。作為示例,通過經(jīng)由操作系統(tǒng)或管理程序的從系統(tǒng)調(diào)用指令的返 回、和/或經(jīng)由操作系統(tǒng)或管理程序的從異步中斷的返回來提供該返回。這些指令在此為 了方便被稱為所選擇的返回指令。
[0086]利用所選擇的返回指令,在一個示例中,通過檢查MSR和程序計數(shù)器來檢查預(yù)測 器堆棧預(yù)測。如果有成功的預(yù)測,則沒有重定向。
[0087] 因為在系統(tǒng)調(diào)用退出或從中斷返回中涉及的處理,使用"從中斷返回"類型指令從 系統(tǒng)調(diào)用、管理程序調(diào)用或異步中斷退出特權(quán)狀態(tài)可以影響性能。因此,根據(jù)一個方面,預(yù) 測系統(tǒng)調(diào)用返回、管理程序返回或從中斷返回。當(dāng)系統(tǒng)調(diào)用或異步(外部)中斷入口出現(xiàn) 時,在預(yù)測器堆棧上布置返回地址。在一個實施例中,當(dāng)處理系統(tǒng)調(diào)用或異步中斷時在功能 返回預(yù)測器堆棧上布置用于系統(tǒng)調(diào)用或中斷的返回地址。在另一個實施例中,提供了專用 操作系統(tǒng)、管理程序或組合的操作系統(tǒng)/管理程序預(yù)測器入口和/或堆棧。如在此使用,夕卜 部中斷和外部異常是同義的,其與許多架構(gòu)一致。
[0088] 在一個實施例中,對監(jiān)控軟件(例如操作系統(tǒng)或管理程序)的內(nèi)部異常、內(nèi)部中 斷、陷阱或其他這樣的控制傳送將與系統(tǒng)調(diào)用和外部中斷之一類似地被處理,并且,包括例 如在功能返回預(yù)測器堆?;?qū)S貌僮飨到y(tǒng)、管理程序或組合的操作系統(tǒng)/管理程序預(yù)測器 入口和/或堆棧之一上產(chǎn)生預(yù)測記錄。
[0089] 在一個方面,系統(tǒng)調(diào)用返回指令或中斷返回指令被分支預(yù)測邏輯檢測,并且被處 理為預(yù)測分支。從返回地址被存儲到的預(yù)測器堆棧獲得預(yù)測地址。從系統(tǒng)調(diào)用或中斷指令 的返回被例如分支執(zhí)行單元處理,并且相對于在依序執(zhí)行點處的非推測狀態(tài)來檢查預(yù)測狀 態(tài)。執(zhí)行所進(jìn)入的非預(yù)測狀態(tài)的檢查,并且如果錯誤地預(yù)測,則清除隨后的指令。
[0090] 在通常的指令集架構(gòu)(ISA)中的從系統(tǒng)調(diào)用或中斷指令的大多數(shù)返回是無條件 的,即,總是被采取。在具有條件系統(tǒng)調(diào)用返回或從中斷指令的返回的ISA中,基于從系統(tǒng) 調(diào)用或中斷指令的返回來作出和更新方向預(yù)測。
[0091] 在一個方面,并且在傳統(tǒng)的分支預(yù)測之外,修改分支預(yù)測器以預(yù)測控制流的改變 的目標(biāo)的新的權(quán)限級(例如因為系統(tǒng)調(diào)用退出或從中斷指令的返回)?;谙到y(tǒng)調(diào)用退出 指令或從中斷返回指令,更新(即存儲)預(yù)測的權(quán)限級。在一個實施例中,直接地從指令獲 得新的預(yù)測狀態(tài)。在另一個實施例中,預(yù)測器表格例如當(dāng)在寄存器中提供狀態(tài)時預(yù)測該狀 態(tài)。
[0092] 當(dāng)分支(或其他)清除出現(xiàn)時,在一個實施例中,將預(yù)測狀態(tài)更新為權(quán)限級的預(yù)測 狀態(tài)和/或在與該清除相關(guān)聯(lián)的指令流中的點處的其他MSR狀態(tài)。在另一個實施例中,當(dāng) 清除與非推測權(quán)限級和/或MSR狀態(tài)(例如,圖5的非推測MSR536)相關(guān)聯(lián)時,將該預(yù)測權(quán) 限級和/或其他MSR狀態(tài)更新為與清除點相關(guān)聯(lián)的非推測權(quán)限級和/或其他MSR狀態(tài)。
[0093] 在獲取/解碼邏輯中保持單獨的預(yù)測權(quán)限級和/或其他MSR狀態(tài)。在例如ISU的 其他位置保持非預(yù)測權(quán)限級和/或其他MSR狀態(tài)。執(zhí)行用于保證相對于預(yù)測權(quán)限級和/或 其他MSR狀態(tài)對推測權(quán)限級和/或其他MSR狀態(tài)的正確推測獲取和解碼的檢查,以保證所 有指令的正確的執(zhí)行。
[0094] 在一個實施例中,從中斷返回和系統(tǒng)調(diào)用退出是相同的指令。在該情況下,系統(tǒng)調(diào) 用入口和異步中斷入口產(chǎn)生在相同的預(yù)測結(jié)構(gòu)上的類似的預(yù)測記錄。從具有特權(quán)的代碼 (例如,操作系統(tǒng)和/或管理程序)的返回使用所產(chǎn)生的入口,而與該入口如何被產(chǎn)生來處 理退出的特性無關(guān)。
[0095] 在一個實施例中,(例如,在分派、發(fā)出和其他隊列和位置中)保持具有預(yù)測狀態(tài) 的所有指令,直到已經(jīng)驗證了預(yù)測狀態(tài)。在至少一個實施例中,在繼續(xù)執(zhí)行諸如加、減等的 其他指令的同時,保持一些指令(例如,那些依賴于有特權(quán)的狀態(tài)和模式)。在其中每一個 指令被標(biāo)注其推測狀態(tài)的至少一個實施例中,如果或只有當(dāng)需要清除推測指令時,例如當(dāng) 誤預(yù)測推測狀態(tài)時,它們可以被撤銷/滾回,則依賴于推測狀態(tài)的一些指令才基于它們的 推測的有特權(quán)狀態(tài)被執(zhí)行。
[0096] 在一個實施例中,基于從中斷返回指令來作出預(yù)測,但是因此從中斷返回指令被 微碼化。通常,同一指令引起預(yù)測和隨后在流水線(S卩,在從指令獲取進(jìn)一步去除的流水線 階段中)中的預(yù)測檢查。然而,根據(jù)一個方面,與微碼入口相關(guān)聯(lián)的原始指令引起預(yù)測(用 于地址和一些MSR位兩者),并且由該微碼發(fā)出的另一個指令僅執(zhí)行預(yù)測的檢查。如果程序 計數(shù)器地址或MSR被誤預(yù)測,則程序計數(shù)器被重定向,并且復(fù)位MSR。
[0097] 參考圖10A來描述與所選擇的返回指令相關(guān)聯(lián)的處理的一個實施例。初始,從存 儲器將指令獲取到指令獲取單元內(nèi),步驟1000。然后,執(zhí)行諸如分支掃描的掃描以預(yù)測指 令是否是從系統(tǒng)調(diào)用的返回或從中斷指令的返回,查詢1002。例如通過檢查指令的操作碼 和/或與指令相關(guān)聯(lián)的參數(shù)來作出該預(yù)測。如果它不是所選擇的返回指令,則處理如傳統(tǒng) 那樣執(zhí)行,步驟1004。在另一個實施例中,可以作出其他檢查以確定該指令是否是另一種類 型的所選擇的指令。
[0098] 然而,如果預(yù)測到要執(zhí)行所選擇的返回指令,則將預(yù)測地址設(shè)置為在預(yù)測器堆棧 上保存的地址,并且該預(yù)測地址被保存在程序計數(shù)器中,步驟1006。
[0099] 另外,如果預(yù)測到所選擇的返回指令,則關(guān)于用于在預(yù)測地址處的指令的MSR位 的一個或多個的值作出進(jìn)一步的預(yù)測,該MSR位例如是權(quán)限級(例如,操作系統(tǒng)級)、指令重 新定位、數(shù)據(jù)重新定位等,步驟1008。在一個示例中,從在與地址對應(yīng)的預(yù)測器堆棧上的入 口獲得該狀態(tài)。在另一個實施例中,可以根據(jù)用于至少一個指令集架構(gòu)的指令集架構(gòu)規(guī)范, 從正被處理的指令得出預(yù)測的MSR狀態(tài)。
[0100] 而且,選用地,檢查來自預(yù)測器堆棧的記錄類型以確定預(yù)測是否正確,步驟1010。 例如,如果它是從系統(tǒng)調(diào)用的返回,則檢查確認(rèn)用于預(yù)測返回的記錄被系統(tǒng)調(diào)用的入口等 建立。如果預(yù)測不正確,則執(zhí)行恢復(fù),如所預(yù)定義。(在一個實施例中,將恢復(fù)處理為誤預(yù)測。 在另一個實施例中,暫停指令獲取直到已經(jīng)執(zhí)行了恢復(fù)。)另外,啟動在預(yù)測地址處的獲取, 并且在推測MSR中存儲預(yù)測的MSR位,步驟1012。也對于所獲取的指令啟動解碼。如果在 所選擇的返回指令后獲取到任何各種各樣的指令(即,不與返回指令相關(guān)聯(lián)的指令--不 是在預(yù)測地址處開始的獲取的那些),則抑制它們。然而,根據(jù)一個實施例的一個方面,基于 預(yù)測MSR來解碼在預(yù)測地址處開始的獲取的指令,其在此被稱為與系統(tǒng)調(diào)用返回或其他選 擇的指令相關(guān)聯(lián)的指令,但是抑制進(jìn)一步的處理。例如,在分派處保持這些指令,直到接收 到分派它們的指示。處理然后返回到步驟1000。
[0101] 返回指令繼續(xù)在流水線中的處理,并且最后到達(dá)執(zhí)行階段,諸如分支執(zhí)行。參考圖 10B來描述關(guān)于返回指令的執(zhí)行(即,當(dāng)返回指令到達(dá)執(zhí)行階段時)的一個實施例的細(xì)節(jié)。 初始,通過分支執(zhí)行單元來進(jìn)行關(guān)于是否從發(fā)出/分派邏輯接收到返回指令的確定,查詢 1〇 5〇。如果否,則執(zhí)行傳統(tǒng)的處理,步驟1〇52。然而,如果從發(fā)出/分派邏輯接收到返回指 令,則例如分別從SRR1和SRR0寄存器獲得MSR位和返回地址,步驟1054。
[0102] 另外,使用從指令獲得的MSR來更新非推測MSR,步驟1056。
[0103] 然后,進(jìn)行關(guān)于預(yù)測的MSR位是否對應(yīng)于來自指令定義的架構(gòu)MSR位的確定,查 詢1058。如果它們對應(yīng),則作出關(guān)于預(yù)測的返回地址(即,從其執(zhí)行獲取的系統(tǒng)調(diào)用返回 的返回地址)是否對應(yīng)于來自指令定義的架構(gòu)返回地址的進(jìn)一步確定,查詢1060。如果在 MSR位和地址之間存在對應(yīng)性,則解鎖在分派處保持的指令,步驟1062,并且完成指令,步 驟1064。處理然后返回到查詢1050。
[0104] 然而,如果或者預(yù)測的MSR位不對應(yīng)于架構(gòu)MSR位或者地址不對應(yīng)于架構(gòu)地址,則 處理誤預(yù)測,步驟1080。例如,在流水線中的在當(dāng)前指令后的指令被清除,步驟1082,并且, 架構(gòu)MSR位和地址被發(fā)送到例如獲取單元,步驟1084。然后重啟指令獲取,步驟1086,并且 處理在查詢1050繼續(xù)。這結(jié)束了返回執(zhí)行的一個實施例。
[0105] 在至少一個實施例中,響應(yīng)于響應(yīng)于誤預(yù)測已經(jīng)出現(xiàn)而恢復(fù)子例程返回預(yù)測器堆 棧,執(zhí)行另外的校正行為。
[0106] 在一個實施例中,當(dāng)處理系統(tǒng)調(diào)用返回指令時,基于在返回預(yù)測器狀態(tài)中的預(yù)測 權(quán)限狀態(tài)來進(jìn)入預(yù)測權(quán)限狀態(tài)。而且,在一個實施例中,將預(yù)測權(quán)限狀態(tài)和/或其他MSR狀 態(tài)與在系統(tǒng)調(diào)用退出指令中的權(quán)限狀態(tài)和/或其他MSR狀態(tài)作比較。如果檢測到不匹配, 則不處理預(yù)測,并且非推測地執(zhí)行從系統(tǒng)調(diào)用的返回。當(dāng)使用返回預(yù)測器堆棧對于一個分 支執(zhí)行分支預(yù)測,并且該返回預(yù)測器堆棧指示通過系統(tǒng)調(diào)用入口作出所選擇的入口時,不 預(yù)測地執(zhí)行該分支。當(dāng)使用返回預(yù)測器堆棧對于系統(tǒng)調(diào)用退出執(zhí)行分支預(yù)測,并且該返回 預(yù)測器堆棧不指示通過系統(tǒng)調(diào)用入口作出所選擇的入口時,不預(yù)測地執(zhí)行系統(tǒng)調(diào)用退出。
[0107]在一個實施例中,當(dāng)進(jìn)入異步或外部中斷時,在預(yù)測器堆棧上布置返回地址。而 且,向預(yù)測的從中斷地址入口的返回加上要進(jìn)入的預(yù)測權(quán)限狀態(tài)和/幀其他MSR狀態(tài)。當(dāng)處 理從中斷返回指令時,在一個實施例中,基于在返回預(yù)測器狀態(tài)中的預(yù)測權(quán)限狀態(tài)和/或 其他MSR狀態(tài)來進(jìn)入預(yù)測權(quán)限狀態(tài)和/或其他MSR狀態(tài)。而且,在一個實施例中,將預(yù)測權(quán) 限狀態(tài)和/或其他MSR狀態(tài)與中斷返回指令中的權(quán)限狀態(tài)和/或其他MSR狀態(tài)作比較。如 果檢測到不匹配,則不處理預(yù)測,并且非推測地執(zhí)行從中斷的返回。
[0108]而且,在一個實施例中,當(dāng)進(jìn)入異步或外部中斷時,用于標(biāo)記在預(yù)測器堆棧中的入 口已經(jīng)被異步/外部中斷布置的指示符被加到預(yù)測的返回地址。當(dāng)使用返回預(yù)測器堆棧對 于分支執(zhí)行分支預(yù)測,并且返回預(yù)測器堆棧指示通過異步/外部中斷入口序列來作出所選 擇的入口時,不預(yù)測地執(zhí)行該分支。當(dāng)使用返回預(yù)測器堆棧對于從中斷指令中斷退出的返 回執(zhí)行分支預(yù)測,并且返回預(yù)測器堆棧不指示通過異步或外部中斷入口序列來作出所選擇 的入口時,不預(yù)測地執(zhí)行從中斷的返回。
[0109]當(dāng)通過同一指令來執(zhí)行從中斷返回和從系統(tǒng)調(diào)用返回時,在一個實施例中,系統(tǒng) 調(diào)用入口和外部中斷入口產(chǎn)生不同的標(biāo)記,但是返回指令訪問接受任何一個標(biāo)記以推測地 執(zhí)行返回。當(dāng)通過同一指令來執(zhí)行從中斷返回和從系統(tǒng)調(diào)用返回時,在另一個實施例中,系 統(tǒng)調(diào)用入口和外部中斷入口產(chǎn)生用于返回地址堆棧的相同的標(biāo)記。
[011 0]系統(tǒng)調(diào)用退出和從中斷指令返回被路由到分支執(zhí)行單元以驗證預(yù)測,并且當(dāng)驗證 不成功時恢復(fù)序列(例如,對具有正確的預(yù)測權(quán)限狀態(tài)的正確的地址的清除)出現(xiàn)。在另 一個實施例中,這被另一個執(zhí)行單元或多于一個的執(zhí)行單元的組合處理。在一個實施例中, 當(dāng)因為預(yù)測狀態(tài)或返回入口標(biāo)記記錄的不匹配導(dǎo)致沒有預(yù)測執(zhí)行出現(xiàn)時,分支執(zhí)行單元不 執(zhí)行驗證,而是直接執(zhí)行指令。在至少一個實施例中,直接執(zhí)行對應(yīng)于執(zhí)行恢復(fù)序列,諸如 對具有正確的預(yù)測狀態(tài)的正確的地址的清除。
[0111]如在此所示,有時,要求或期望流水線的清除。例如,如果分支預(yù)測要采用特定路 徑并且路徑不正確,則執(zhí)行清除。根據(jù)一個方面,如果不正確的路徑包括預(yù)測地執(zhí)行改變權(quán) 限級和/或其他操作狀態(tài)的指令,則該權(quán)限級和/或其他MSR狀態(tài)也需要被改變,如在此所 述。
[0112]參考圖11來描述與清除相關(guān)聯(lián)的邏輯的一個實施例。初始,指令地址寄存器 (IAR)被設(shè)置為從指令序列單元(ISU)中的全局完成表格(GCT)邏輯獲取的一個或多個地 址,步驟1100。另外,MSR位被設(shè)置為與全局完成表格相關(guān)聯(lián)的非推測 MSR指示符的值,步 驟 1102。
[0113]而且,在來自新的指令地址寄存器并且具有新的MSR位的地址處啟動獲取,步驟 1104。基于該新的狀態(tài)(例如,新的MSR位)來處理在新的地址處獲取的指令。這結(jié)束了 清除邏輯的一個實施例。
[0114] 在此詳細(xì)描述了檢測是否要執(zhí)行所選擇的指令的預(yù)測能力。基于確定要執(zhí)行所選 擇的指令,進(jìn)行關(guān)于所選擇的指令的預(yù)測地址的預(yù)測。然后,在執(zhí)行所選擇的指令之前,獲 取和/或解碼在該預(yù)測地址處開始的指令。這增強了在處理器內(nèi)的性能。
[0115] 在一個實施例中,預(yù)測能力管理作為推測狀態(tài)的在指令獲取和/或解碼單元中的 MSR狀態(tài)。然而,在指令序列單元中的主拷貝仍然被非推測地更新(在NTC,即,當(dāng)指令是非 推測的并且接近完成和在更新非推測狀態(tài)的當(dāng)前指令之前沒有指令時)。在一個實施例中, 預(yù)測器可以選用地包含在指令獲取和/獲取解碼單元中跟蹤并且推測地更新的新MSR位。 如果存在清除,則與清除地址相結(jié)合地發(fā)送MSR位。
[0116] 雖然如上討論的一個或多個示例描述了由操作系統(tǒng)發(fā)出的系統(tǒng)調(diào)用,但是一個或 多個方面可應(yīng)用于由管理程序發(fā)出的系統(tǒng)調(diào)用等。管理程序在一個實施例中具有比操作系 統(tǒng)和應(yīng)用程序二者高的權(quán)限級。對于管理程序,系統(tǒng)調(diào)用返回通常返回到操作系統(tǒng)。在此 所述的一個或多個方面也可以與在超過和除了應(yīng)用、操作系統(tǒng)和管理程序級的其他權(quán)限級 處操作的程序相結(jié)合地使用。
[0117] 雖然已經(jīng)相對于由Power ISA使用的指令描述了一個或多個方面,但是在其他實 施例中,可以使用其他架構(gòu)的指令。例如,可以使用具有另一個寄存器跟蹤處理器狀態(tài)和權(quán) 限級(諸如,例如,根據(jù)用于系統(tǒng)z的z/Architecture的PSW (程序狀態(tài)字)寄存器)的根 據(jù)另一個系統(tǒng)調(diào)用指令(諸如,例如,根據(jù)用于系統(tǒng)z的z/Architecture的SVC指令)的 系統(tǒng)調(diào)用;并且/或者,根據(jù)由微處理器實現(xiàn)的指令集架構(gòu)的其他指令、寄存器和設(shè)施。 [0118]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機(jī)程序產(chǎn)品。 因此,本公開可以具體實現(xiàn)為以下形式,g卩:可以是完全的硬件、也可以是完全的軟件(包 括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為"電路"、"模 塊"或"系統(tǒng)"。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機(jī)可讀介質(zhì) 中的計算機(jī)程序產(chǎn)品的形式,該計算機(jī)可讀介質(zhì)中包含計算機(jī)可讀的程序代碼。
[0119] 可以采用一個或多個計算機(jī)可讀的介質(zhì)的任意組合。計算機(jī)可讀介質(zhì)可以是計 算機(jī)可讀信號介質(zhì)或者計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)例如可以是--但不限 于--電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算 機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便 攜式計算機(jī)磁盤、硬盤、隨機(jī)存取存儲器 (RAM)、只讀存儲器(R0M)、可擦式可編程只讀存儲 器(EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器 (CD_R0M)、光存儲器件、磁存儲器件、 或者上述的任意合適的組合。在本文件中,計算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程 序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0120] 現(xiàn)在參考圖12,在一個例子中,計算機(jī)程序產(chǎn)品U00包括,例如,一個或多個非易 失性計算機(jī)可讀存儲介質(zhì)1202,在其上存儲有計算機(jī)可讀的程序代碼裝置或邏輯1204,以 提供并方便本發(fā)明的一個或多個方面。
[0121] 體現(xiàn)在計算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括 但不限于:無線、有線、光纜、RF等,或上述的任意合適的組合。
[0122]可以以一種或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機(jī) 程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如java、Smalltalk、C++, 還包括常規(guī)的過程式程序設(shè)計語言一諸如" C"語言或類似的程序設(shè)計語言。程序代碼可以 完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部 分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在 涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)-包括局域網(wǎng)(LAN)或 廣域網(wǎng)(WAN)-連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù)提 供商來通過因特網(wǎng)連接)。
[0123]本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和 /或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中 各方框的組合,都可以由計算機(jī)程序指令實現(xiàn)。這些計算機(jī)程序指令可以提供給通用計算 機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計算機(jī)程 序指令通過計算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方 框中規(guī)定的功能/操作的裝置。
[0124] 也可以把這些計算機(jī)程序指令存儲在能使得計算機(jī)或其它可編程數(shù)據(jù)處理裝置 以特定方式工作的計算機(jī)可讀介質(zhì)中,這樣,存儲在計算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一 個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品(manufacture) 〇
[0125]也可以把計算機(jī)程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計 算機(jī)實現(xiàn)的過程,從而使得在計算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖 和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0126]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機(jī)程 序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以 代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個 用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所 標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以 基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的 是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行 規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的 組合來實現(xiàn)。
[0127]除了上述,本發(fā)明的一個或多個方面可由服務(wù)提供商提供、許諾(offer)、部署、管 理、服務(wù)等,該服務(wù)提供商提供用戶環(huán)境的管理。例如,服務(wù)提供商可創(chuàng)建、維持、支持等計 算機(jī)代碼和/或計算機(jī)基礎(chǔ)設(shè)施,其為一個或多個用戶執(zhí)行本發(fā)明的一個或多個方面。反 過來,服務(wù)提供商可例如根據(jù)預(yù)訂和/或費用協(xié)議從用戶接受付費。額外地或可替換地,服 務(wù)提供商可從向一個或多個第三方銷售廣告內(nèi)容接受付費。
[0128]在本發(fā)明的一個方面,可部署用于執(zhí)行本發(fā)明的一個或多個方面的應(yīng)用。作為一 個例子,部署應(yīng)用包括提供計算機(jī)基礎(chǔ)設(shè)施,其可操作以執(zhí)行本發(fā)明的一個或多個方面。 [0129]作為本發(fā)明的又一個方面,可部署計算基礎(chǔ)設(shè)施,其包括將計算機(jī)可讀代碼集成 到計算機(jī)系統(tǒng),其中與計算系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。
[0130]作為本發(fā)明的再一個方面,可提供用于集成計算基礎(chǔ)設(shè)施包括將計算機(jī)可讀碼集 成到計算機(jī)系統(tǒng)的過程。計算機(jī)系統(tǒng)包括計算機(jī)可讀介質(zhì),其中計算機(jī)介質(zhì)包括本發(fā)明的 一個或多個方面。與計算機(jī)系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個或多個方面。
[0131] 雖然以上描述了各個實施例,但是這些僅是示例。例如,其他機(jī)構(gòu)的處理環(huán)境可以 合并和使用一個或多個方面。另外,包括但是不限于可以改變權(quán)限級和/或其他操作狀態(tài) 所以的其他指令的其他指令可以采用預(yù)測能力的一個或多個方面。而且,可以使用其他類 型的預(yù)測器數(shù)據(jù)結(jié)構(gòu),并且/或者可以使用另外的、更少的或不同的信息。另外,可以使用 除了 MSR之外的結(jié)構(gòu),諸如程序狀態(tài)字(PSW)或其他類型的結(jié)構(gòu)。許多變化是可能的。
[0132] 而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,可使用 適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個通過系統(tǒng)總線直接或間接 耦合到存儲元件的處理器。存儲器元件包括,例如,在程序代碼的實際執(zhí)行期間使用的本地 存儲器、大容量存儲器以及高速緩沖存儲器,其提供至少一些程序代碼的臨時存儲,以便減 少在執(zhí)行期間必須從大容量存儲器取回代碼的次數(shù)。
[0133] 輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點設(shè)備、DASD、磁帶、CD、 DVD、拇指驅(qū)動器(thumb drive)以及其他的存儲介質(zhì)等)可直接或通過介于其間的I/O控 制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間 的私有或公共網(wǎng)絡(luò)而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲設(shè)備。調(diào)制解調(diào)器、 電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡(luò)適配器類型。
[0134] 參考圖13,其描述了實施本發(fā)明的一個或多個方面的主機(jī)計算機(jī)系統(tǒng)5000的代 表性組件。代表性主機(jī)計算機(jī)5000包括與計算機(jī)存儲器(即,中央存儲器)5002通信的一 個或多個CPU5001,以及到存儲介質(zhì)設(shè)備5011和網(wǎng)絡(luò)5010的I/O接口,以用于與其他計算 機(jī)或SAN等通信。CPU5001符合具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)。CPU5001可具有動態(tài) 地址轉(zhuǎn)換(DAT) 5003,其用于將程序地址(虛擬地址)轉(zhuǎn)變?yōu)榇鎯ζ鞯恼鎸嵉刂贰AT典型 地包括用于高速緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB) 5007,這樣稍后對計算機(jī)存儲器5002塊 的訪問不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計算機(jī)存儲器5002和處 理器5001之間。高速緩存5009可以是分層的,具有可被多于一個的CPU獲得的大高速緩 存,以及大高速緩存和每個CPU之間的較小、較快(較低級)的高速緩存。在一些實施方式 中,較低級的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨的低級高速緩存。在一個 實施例中,由指令獲取單元5004經(jīng)由高速緩存5009從存儲器5002獲取指令。指令在指令 解碼單元5006中被解碼,且(在一些實施例中與其他指令一起)被發(fā)送到一個或多個指令 執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點執(zhí)行單元和分支 指令執(zhí)行單元。指令被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲器訪問操作數(shù)。 如果將從存儲器5002訪問(加載或存儲)操作數(shù),加載/存儲單元5005典型地在被執(zhí)行 的指令的控制下處理該訪問。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí) 行。
[0135] 需注意的是,計算機(jī)系統(tǒng)包括本地(或主)存儲器中的信息,以及尋址、保護(hù)以及 引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中 一種類型的地址被轉(zhuǎn)換為另一種類型的地址的方式。一些主存儲器包括永久分配的存儲位 置。主存儲器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲。數(shù)據(jù)和程序在可被處理之 前都將(從輸入設(shè)備)被加載到主存儲器。
[0136] 主存儲器可包括一個或多個更小、更快速訪問的緩沖存儲器,有時候被稱為高速 緩存。高速緩存典型地與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲介質(zhì)的使 用的效果,除了在性能上,通常不會被程序觀察到。
[0137] 可維護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨的高速緩存。高速緩存中的信息可被維護(hù)為 相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。 模型可提供EXTRACT CACHE ATTRIBUTE(提取高速緩存屬性)指令,其返回高速緩存線的字 節(jié)大小。模型也可提供PREFETCH DATA (預(yù)取數(shù)據(jù))和PREFETCH DATA RELATIVE LONG (預(yù) 取較長數(shù)據(jù))指令,其實現(xiàn)存儲到數(shù)據(jù)或指令高速緩存中的預(yù)取,或數(shù)據(jù)從高速緩存的釋 放。
[0138] 存儲器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進(jìn)行對存 儲器的訪問。位串被細(xì)分為八個位的單位。八位單位被稱為字節(jié),其是所有信息格式的基 本構(gòu)件。存儲器中的每個字節(jié)位置由唯一的非負(fù)整數(shù)標(biāo)識,該非負(fù)整數(shù)是該字節(jié)位置的地 址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從0開始且以從左到右的 順序進(jìn)行。地址是無符號二進(jìn)制整數(shù),且是24、31或64位。
[0139] 信息一次一個字節(jié)或一組字節(jié)地在存儲器和CPU或通道子系統(tǒng)之間傳遞。除非另 有指定,例如在z/Architecture K中,存儲器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組 中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當(dāng)在CPU操作中使用時,一組字 節(jié)被稱為字段。在字節(jié)的每個組內(nèi),例如在z/Architecture 1'1中,位以從左到右的順序被編 號。在z/Architectui#中,最左邊的位有時候被稱為"高階"位且最右邊的位被稱為"低 階"位。但是,位數(shù)不是存儲器地址。僅字節(jié)可被尋址。為了操作存儲器中的字節(jié)的單個 位,訪問整個字節(jié)。字節(jié)上的位從左到右被編號為0到7(例如在 z_Architecture?中)。對 于24位地址,地址中的位被編號為8-31或40-63,對于31位地址,編號為1-31或33-63, 對于 64位地址,編號為0-63。在多個字節(jié)的任何其他的固定長度的格式中,構(gòu)成格式的位 從〇開始被連續(xù)編號。為了錯誤檢測,且優(yōu)選地為了校正,一個或多個校驗位可與每一個字 節(jié)或一組字節(jié)一起被傳遞。這樣的校驗位由機(jī)器自動生成且不能被程序直接控制。存儲容 量以字節(jié)的數(shù)量來表示。當(dāng)存儲器操作數(shù)字段的長度由指令的操作碼暗示時,字段被稱為 具有固定長度,其可以是一個、兩個、四個、八個或十六個字節(jié)??蔀槟承┲噶畎凳靖蟮淖?段。當(dāng)存儲器操作數(shù)字段的長度沒有被暗示,而是被顯式地表示時,該字段被稱為具有可變 長度??勺冮L度的操作數(shù)可以一個字節(jié)的增量(或者對于一些指令,以兩個字節(jié)倍數(shù)或其 他倍數(shù))在長度上可變。當(dāng)信息被放在存儲器中時,僅替換被包括在指定的字段中的那些 字節(jié)位置的內(nèi)容,即使到存儲器的物理路徑的寬度可能大于正被存儲的字段的長度。
[0M0] 一某些信息單元位于存儲器中的整數(shù)界限上。對于信息單元,當(dāng)其存儲器地址是以 字節(jié)表示的單元長度的倍數(shù)時,界限被稱為是整數(shù)的。特殊的名稱被給予整數(shù)界限上的2、 4、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個連續(xù)的字節(jié),且是指令的基本構(gòu)件。 字是四字節(jié)邊界上的一組四個連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個連續(xù)的字節(jié)。四 倍長字(quadword)是I 6字節(jié)邊界上的一組16個連續(xù)的字節(jié)。當(dāng)存儲器地址指定半字、字、 雙字和四倍長字時,地址的二進(jìn)制表示分別包括一個、兩個、三個或四個最右邊的零位。指 令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲器操作數(shù)不具有界限對準(zhǔn)要求。
[0141]在為指令和數(shù)據(jù)操作數(shù)實現(xiàn)單獨的高速緩存的設(shè)備上,如果程序在高速緩存線中 存儲且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲是否改變隨后被 獲取的指令。
[0142]在一個實施例中,本發(fā)明可被軟件(有時候被稱為許可的內(nèi)部代碼、固件、微代 碼、暈代碼、微微代碼(pico-code)等,其任何一個都將符合本發(fā)明)實施。參考圖13, 體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器5001從長期存儲介質(zhì)設(shè)備 5011 (諸如CD-ROM驅(qū)動器、磁帶驅(qū)動或硬盤驅(qū)動器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù) 處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟磁盤、硬盤驅(qū)動或CD-ROM)中的任何一個上。代 碼可在這樣的介質(zhì)上被分發(fā),或可從一個計算機(jī)系統(tǒng)的計算機(jī)存儲器5002或存儲設(shè)備通 過網(wǎng)絡(luò)5010被分發(fā)給其他計算機(jī)系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。
[0143] 軟件程序代碼包括操作系統(tǒng),其控制各種計算機(jī)組件和一個或多個應(yīng)用程序的功 能和交互。程序代碼通??蓮拇鎯橘|(zhì)設(shè)備5011調(diào)頁到相對更高速的計算機(jī)存儲器5002, 在此它對于處理器5001是可用的。用于在存儲器中、物理介質(zhì)上體現(xiàn)軟件程序代碼和/或 經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會在此被進(jìn)一步討論。當(dāng)程序代碼被 創(chuàng)建并存儲在有形介質(zhì)(包括但不限于電子存儲模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等) 上時,其經(jīng)常被稱為"計算機(jī)程序產(chǎn)品"。計算機(jī)程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計算 機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。
[0144] 圖14示出了可在其中實施本發(fā)明的代表性工作站或服務(wù)器硬件系統(tǒng)。圖Η的系 統(tǒng)5〇2〇包括代表性基本計算機(jī)系統(tǒng)(base computer system) 5〇21,諸如個人計算機(jī)、工作 站或服務(wù)器,包括可選的外圍設(shè)備。根據(jù)已知技術(shù),基本計算機(jī)系統(tǒng)5021包括一個或多個 處理器5026以及被用于連接并使能處理器 5〇26和系統(tǒng)5〇21的其他組件之間的通信的總 線。總線將處理器 5〇26連接到存儲器5〇25以及可包括例如硬盤驅(qū)動器(例如,包括磁介 質(zhì)、CD、DVD和閃存中的任何一個)或磁帶驅(qū)動器的長期存儲器5027。系統(tǒng)5021也可包括用 戶接口適配器,其經(jīng)由總線將微處理器5026連接到一個或多個接口設(shè)備,諸如鍵盤 5〇24、 鼠標(biāo)5023、打印機(jī)/掃描儀5〇30和/或其他接口設(shè)備,其可以是任何用戶接口設(shè)備,諸如 觸摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等??偩€也可經(jīng)由顯示適配器將諸如 LCD屏幕或監(jiān)視器的顯示設(shè)備5022連接到微處理器5026。
[0145] 系統(tǒng)5021可通過能與網(wǎng)絡(luò)5〇29通信5〇28的網(wǎng)絡(luò)適配器與其他計算機(jī)或計算機(jī) 網(wǎng)絡(luò)通信。示例性網(wǎng)絡(luò)適配器是通信通道、令牌環(huán)網(wǎng)、以太網(wǎng)或調(diào)制解調(diào)器?;蛘撸到y(tǒng)5021 可使用諸如CDPD(蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口來通信。系統(tǒng) 5〇21可與局域網(wǎng)(LAN) 或廣域網(wǎng)(WAN)中的這樣的其他計算機(jī)關(guān)聯(lián),或系統(tǒng)5〇21可以是與另一個計算機(jī)的客戶機(jī) /服務(wù)器安排中的客戶機(jī)等。所有這些配置以及合適的通信硬件和軟件在本領(lǐng)域中是已知 的。
[0146] 圖15示出了其中可實施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5〇4〇可包括 多個單獨的網(wǎng)絡(luò),諸如無線網(wǎng)和有線網(wǎng),其每個可包括多個單獨的工作站5041、5042、5043、 5044。此外,本領(lǐng)域技術(shù)人員將理解,可包括一個或多個LAN,其中LAN可包括多個稱合到主 處理機(jī)的智能工作站。
[0147] 仍然參考圖15,網(wǎng)絡(luò)也可包括大型計算機(jī)或服務(wù)器,諸如網(wǎng)關(guān)計算機(jī)(客戶機(jī)服 務(wù)器5046)或應(yīng)用服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可訪問數(shù)據(jù)儲存庫,且也可直接從工作站 5045被訪問)。網(wǎng)關(guān)計算機(jī)5046用作到每個單獨網(wǎng)絡(luò)的進(jìn)入點。當(dāng)將一個聯(lián)網(wǎng)協(xié)議連接 到另一個時,需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可通過通信鏈接優(yōu)選地耦合到另一個網(wǎng)絡(luò)(例如因特 網(wǎng)5047)。也可使用通信鏈接將網(wǎng)關(guān)5046直接耦合到一個或多個工作站5041、5042、5043、 5044。可以利用可從國際商業(yè)機(jī)器公司獲得的IBM eServe/MSystem/1:服務(wù)器來實現(xiàn)網(wǎng)關(guān) 計算機(jī)。
[0148] 同時參考圖14和15,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026 從諸如CD-ROM驅(qū)動器或硬盤驅(qū)動器的長期存儲介質(zhì)5027訪問。軟件編程代碼可被體現(xiàn)在 與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟盤、硬盤驅(qū)動器或⑶-ROM)中的任一個 上。代碼可在這樣的介質(zhì)上被分發(fā),或從一個計算機(jī)系統(tǒng)的存儲器或存儲設(shè)備通過網(wǎng)絡(luò)被 分發(fā)到其他計算機(jī)系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用。
[0149] 或者,編程代碼可體現(xiàn)在存儲器5025中,且由處理器5026使用處理器總線訪問。 這樣的編程代碼包括操作系統(tǒng),其控制各種計算機(jī)組件和一個或多個應(yīng)用程序5032的功 能和交互。程序代碼通常從存儲介質(zhì)5027調(diào)頁到高速存儲器5025,在此它可用于由處理器 5026進(jìn)行處理。用于在存儲器中、在物理介質(zhì)上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟 件代碼的技術(shù)和方法是公知的,不會在此進(jìn)一步討論。程序代碼,當(dāng)其被創(chuàng)建且在有形介質(zhì) (包括但不限于電子存儲模塊(RAM)、閃存、光盤(CD)、DVD、磁帶等)上存儲時,通常被稱為 "計算機(jī)程序產(chǎn)品"。計算機(jī)程序產(chǎn)品介質(zhì)典型地可以被優(yōu)選地位于計算機(jī)系統(tǒng)中的處理電 路讀取以由處理電路執(zhí)行。
[0150] 最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更?。┦亲?低級(L1或級別1)高速緩存,且主存儲(主存儲器)是最高級高速緩存(如果有三個級別 的話是L3)。最低級高速緩存經(jīng)常被分為保持將被執(zhí)行的機(jī)器指令的指令緩存(I-高速緩 存),和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。
[0151] 參考圖16,為處理器5026示出了示例性處理器實施例。典型地,使用一個或多個 級別的高速緩存5053來緩沖存儲器塊,以便改善處理器性能。高速緩存5053是高速緩沖 器,其保持很可能被使用的存儲器數(shù)據(jù)的高速緩存線。典型的高速緩存線是糾、I 28或256 字節(jié)的存儲器數(shù)據(jù)。通常使用單獨的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存 一致性(存儲器和高速緩存中的線的副本的同步)通常由本領(lǐng)域中熟知的各種"窺探"算 法提供。處理器系統(tǒng)的主存儲器5025通常被稱為高速緩存。在具有4個級別的高速緩存 5053的處理器系統(tǒng)中,主存儲器5025有時候被稱為級別5 (L5)高速緩存,因為它典型地更 快,且僅保持可被計算機(jī)系統(tǒng)使用的非易失性存儲器(DASD、磁帶等)的一部分。主存儲器 5025可"高速緩存"由操作系統(tǒng)向主存儲器5025調(diào)頁入或從其調(diào)頁出的數(shù)據(jù)頁。
[0152] 程序計數(shù)器(指令計數(shù)器)5061保持跟蹤將被執(zhí)行的當(dāng)前指令的地址。 z/ArcMt?過urd1:處理器中的程序計數(shù)器是64位的,且可被截短為31或24位以支持先前 的尋址界限。程序計數(shù)器典型地體現(xiàn)在計算機(jī)的PSW(程序狀態(tài)字)中,這樣它可在上下文 轉(zhuǎn)換中持續(xù)。因此,具有程序計數(shù)器值的進(jìn)行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán) 境到操作系統(tǒng)環(huán)境的上下文轉(zhuǎn)換)。當(dāng)程序不活動時,程序的PSW維持程序計數(shù)器值,且在 操作系統(tǒng)執(zhí)行時,操作系統(tǒng)的(PSW中的)程序計數(shù)器被使用。典型地,程序計數(shù)器以等于 當(dāng)前指令的字節(jié)數(shù)的量增量。RISC(精簡指令集計算)指令典型地是固定長度,而CISC(復(fù) 雜指令集計算)指令典型地是可變長度。lBMz/Architecture(K枘指令是具有長度為2、4或 6字節(jié)的CISC指令。程序計數(shù)器5061被例如上下文轉(zhuǎn)換操作或分支指令的分支采取操作 修改。在上下文轉(zhuǎn)換操作中,當(dāng)前的程序計數(shù)器值與關(guān)于正被執(zhí)行的程序的其他狀態(tài)信息 (諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計數(shù)器值被載入并指向?qū)⒈粓?zhí)行的 新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結(jié)果加載到程序計數(shù)器 5〇61 中而允許程序進(jìn)行決定或在程序內(nèi)循環(huán)。
[0153] 典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取"下 一序列指令"、分支采取指令的目標(biāo)指令或上下文轉(zhuǎn)換后的程序的第一指令?,F(xiàn)在的指令獲 取單元通常使用預(yù)取技術(shù)基于被預(yù)取的指令將被使用的可能性來推測性地預(yù)取指令。例 如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進(jìn)一步的順序指令的額外字 節(jié)。
[0154] 獲取的指令隨后被處理器5026執(zhí)行。在一實施例中,獲取的指令被傳遞給獲取 單元的分派單元5056。分派單元解碼指令并將關(guān)于解碼的指令的信息轉(zhuǎn)送給合適的單元 5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關(guān)于解碼的算術(shù)指令 的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術(shù)操作。優(yōu)選地從存儲器5025、架構(gòu)寄存 器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。 執(zhí)行的結(jié)果,當(dāng)被存儲時,被存儲在存儲器5025、寄存器5059或其他機(jī)器硬件(諸如控制寄 存器、PSW寄存器等)中。
[0155] 處理器5026典型地具有一個或多個用于執(zhí)行指令的功能的單元5057、5058、 5060。參考圖17A,執(zhí)行單元5057可通過接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分 派單元 5〇56、加載存儲單元5〇60和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個 寄存器電路506 7、5068、5〇69來保持算術(shù)邏輯單元(ALU)5066將操作的信息。ALU執(zhí)行諸 如加減乘除的算術(shù)操作,以及諸如與、或以及異或(XOR)、旋轉(zhuǎn)和移位的邏輯運算。優(yōu)選地, ALU支持依賴于設(shè)計的專門操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和 恢復(fù)支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電 路可將結(jié)果轉(zhuǎn)送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一 個實施例的代表性理解。
[0156] 例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點 指令將在具有專用浮點能力的浮點執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行 操作碼定義的功能在由指令標(biāo)識的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由 指令的寄存器字段標(biāo)識的兩個寄存器 5〇59中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。
[0157] 執(zhí)行單元5057對兩個操作數(shù)執(zhí)行算術(shù)加法,并在第三操作數(shù)中存儲結(jié)果,其中第 三操作數(shù)可以是第三寄存器或兩個源寄存器中的一個。執(zhí)行單元優(yōu)選地利用算術(shù)邏輯單 元(ALU)5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉(zhuǎn)、和、或、異或,以及多種代數(shù)函數(shù),包 括加減乘除中的任何一個。有些ALU5066被設(shè)計為用于標(biāo)量運算,有些用于浮點。根據(jù)架 構(gòu),數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(little endien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBMrtrehitectU!#;是大端。根據(jù)架 構(gòu),帶符號字段可以是符號和幅度、1的補碼或2的補碼。2的補碼數(shù)是有利的,其在于ALU 不需要設(shè)計減法能力,因為不管是2的補碼中的負(fù)值還是正值,都僅要求ALU中的加法。 數(shù)字通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如 4Kbyte(千字節(jié))塊。
[0158] 參考圖17B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058, 該分支單元經(jīng)常使用諸如分支歷史表5082的分支預(yù)測算法,在其他條件運算完成前預(yù)測 分支結(jié)果。在條件運算完成前,當(dāng)前分支指令的目標(biāo)將被獲取并推測性地執(zhí)行。當(dāng)條件運算 完成時,基于條件運算的條件和推測的結(jié)果,推測性執(zhí)行的分支指令或被完成或被丟棄。典 型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標(biāo)地址, 分支地址可基于若干數(shù)被計算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到 的數(shù)。分支單元 5〇58可利用具有多個輸入寄存器電路5075、5076、5077和一個輸出寄存器 電路 5〇8〇的ALU5〇74。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其 他電路5073通信。
[0159] -組指令的執(zhí)行可由于多個原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下 文轉(zhuǎn)換、引起上下文轉(zhuǎn)換的程序異常或錯誤、引起上下文轉(zhuǎn)換的I/O中斷信號或多個程序 (在多線程環(huán)境中)的多線程活動。優(yōu)選地,上下文轉(zhuǎn)換動作保存關(guān)于當(dāng)前執(zhí)行的程序的狀 態(tài)信息,且隨后加載關(guān)于正被調(diào)用的另一個程序的狀態(tài)信息。狀態(tài)信息可被存儲在例如硬 件寄存器或存儲器中。狀態(tài)信息優(yōu)選地包括指向?qū)⒈粓?zhí)行的下一個指令的程序計數(shù)器值、 條件碼、存儲器轉(zhuǎn)換信息和架構(gòu)寄存器內(nèi)容。上下文轉(zhuǎn)換活動可被硬件電路、應(yīng)用程序、操 作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨地或其組合實現(xiàn)。 [0160] 處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立 即操作數(shù),可提供一個或多個寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫鳎ɡ?浮點寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用 于操作數(shù)的存儲器位置??捎杉拇嫫?、立即字段或寄存器和立即字段的組合提供操作數(shù)的 存儲器位置,如由z/Architecture&長位移工具(facility)所例示的,其中該指令定義了 基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲器中的操 作數(shù)的地址。除非另外指明,此處的位置典型地意味著主存儲器(主存儲設(shè)備)中的位置。
[0161] 參考圖17C,處理器使用加載/存儲單元5060訪問存儲器。加載/存儲單元5060 可以通過獲取存儲器5053中的目標(biāo)操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存 儲器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲器5053中的目標(biāo)操作數(shù)的地址并 將從寄存器5059或另一個存儲器5053位置獲得的數(shù)據(jù)存儲在存儲器5053中的目標(biāo)操作 數(shù)位置,來執(zhí)行存儲操作。加載/存儲單元5060可以是推測性的,且可以以相對于指令順 序來說無序的順序訪問存儲器,但是加載/存儲單元5060將向程序維持指令按順序執(zhí)行的 外觀。加載/存儲單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲 器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU5085和控制邏輯5090以 計算存儲器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存 儲單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領(lǐng)域所 熟知的。
[0162] 優(yōu)選地,應(yīng)用程序"看到的"地址通常被稱為虛擬地址。虛擬地址有時候被稱 為"邏輯地址"和"有效地址"。這些虛擬地址之所以虛擬,在于它們由多種動態(tài)地址轉(zhuǎn)換 (DAT)技術(shù)中的一種重定向到物理存儲器位置,所述動態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡單 地給用偏移值給虛擬地址加前綴、經(jīng)由一個或多個轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選 地包括至少一個段表和一個頁表(單獨地或組合地),優(yōu)選地,段表具有指向頁表的項。在 z/Architecture1'中,提供轉(zhuǎn)換分級結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表 和可選的頁表。地址轉(zhuǎn)換的性能通常通過利用轉(zhuǎn)換后備緩沖器(TLB)被改善,該轉(zhuǎn)換后備 緩沖器包括將虛擬地址映射到相關(guān)的物理存儲位置的項。當(dāng)DAT使用轉(zhuǎn)換表轉(zhuǎn)換虛擬地址 時,創(chuàng)建項。于是,虛擬地址的隨后使用可利用快的TLB的項,而不是慢的順序轉(zhuǎn)換表訪問。 TLB內(nèi)容可由包括LRU(最少最近使用)的多個替換算法來管理。
[0163]在處理器是多處理器系統(tǒng)的處理器的情況下,每個處理器具有保持共享資源的責(zé) 任,所述共享資源諸如I/O、高速緩存、TLB和存儲器,它們互鎖以實現(xiàn)一致性。典型地,"窺 探"技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個高速緩存線可被標(biāo)記為正處于 共享狀態(tài)、獨占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個,以便有助于共享。
[0164] I/O單元5054(圖16)向處理器提供用于附加到例如包括磁帶、盤、打印機(jī)、顯示 器和網(wǎng)絡(luò)的外圍設(shè)備的裝置。I/O單元通常由軟件驅(qū)動器向計算機(jī)程序呈現(xiàn)。在諸如來自 System :#5的大型計算機(jī)中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外 圍設(shè)備之間的通信的大型計算機(jī)的I/O單元。
[0165] 而且,其他類型的計算環(huán)境可受益于本發(fā)明的一個或多個方面。作為例子,環(huán)境可 包括仿真器(例如,軟件或其他仿真機(jī)制),其中特定架構(gòu)(包括例如指令執(zhí)行、諸如地址轉(zhuǎn) 換的架構(gòu)功能、以及架構(gòu)寄存器)或其子集被仿真(例如,在具有處理器和存儲器的本機(jī)計 算機(jī)系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個或多個仿真功能可實施本發(fā)明的一個或多個 方面,即使執(zhí)行仿真器的計算機(jī)可具有與正被仿真的能力不同的架構(gòu)。作為一個例子,在仿 真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實施單個指令或操 作。
[0166] 在仿真環(huán)境中,主計算機(jī)包括例如存儲器以存儲指令和數(shù)據(jù);指令獲取單元以從 存儲器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的 指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù) 從存儲器加載到寄存器;從寄存器將數(shù)據(jù)存儲回存儲器;或執(zhí)行如由解碼單元確定的某些 類型的算術(shù)或邏輯運算。在一個例子中,每個單元在軟件中實現(xiàn)。例如,被所述單元執(zhí)行的 操作被實現(xiàn)為仿真器軟件中的一個或多個子例程。
[0167] 更具體地,在大型計算機(jī)中,程序員(通常是如今的"C"程序員)一般通過編譯器 應(yīng)用使用架構(gòu)機(jī)器指令。存儲在存儲介質(zhì)中的這些指令可以在服 務(wù)器中本機(jī)地執(zhí)行,或在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。它們可在現(xiàn)有的和未來的IBM?大 型計算機(jī)服務(wù)器以及IBM?的其他機(jī)器(例如,Power Systems服務(wù)器和System jf :服務(wù) 器)中被仿真。它們可在使用由IBI#、IMel?、AMD?等制造的硬件的各種機(jī)器上運行 Linux的機(jī)器中被執(zhí)行。除了在z/ArchitectureK:下的該硬件上執(zhí)行, Linux也可被用于這 樣的機(jī)器,其使用由Hercules, UMX或FSI (Fundamental Software, Inc)(其中一般地執(zhí)4亍 是處于仿真模式中)提供的仿真。在仿真模式中,仿真軟件由本機(jī)處理器執(zhí)行以仿真被仿 真處理器的架構(gòu)。
[0168] 本機(jī)處理器典型地執(zhí)行仿真軟件,其包括固件或本機(jī)操作系統(tǒng),以執(zhí)行被仿真處 理器的仿真程序。仿真軟件負(fù)責(zé)獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護(hù)仿 真的程序計數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個或多個仿真的機(jī)器指令, 并將所述一個或多個仿真的機(jī)器指令轉(zhuǎn)換為對應(yīng)的本機(jī)機(jī)器指令組,以由本機(jī)處理器執(zhí) 行。這些轉(zhuǎn)換的指令可被高速緩存,這樣可完成更快的轉(zhuǎn)換。仿真軟件將維持被仿真的處 理器架構(gòu)的架構(gòu)規(guī)則以保證為被仿真處理器編寫的操作系統(tǒng)和應(yīng)用正確操作。而且,仿真 軟件將提供由被仿真的處理器架構(gòu)確定的資源,包括但不限于控制寄存器、通用寄存器、浮 點寄存器、例如包括段表和頁表的動態(tài)地址轉(zhuǎn)換功能、中斷機(jī)制、上下文轉(zhuǎn)換機(jī)制、日中時 間(T0D)時鐘和到I/O子系統(tǒng)的架構(gòu)接口,這樣被設(shè)計為在被仿真處理器上運行的操作系 統(tǒng)或應(yīng)用程序可在具有仿真軟件的本機(jī)處理器上運行。
[0169] 解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個指令的功能。仿真被仿真 處理器的功能的仿真軟件功能例如在"C"子例程或驅(qū)動器中實現(xiàn),或由提供用于特定硬件 的驅(qū)動器的其他方法實現(xiàn),如本領(lǐng)域技術(shù)人員在理解優(yōu)選實施例的描述后將理解的。包括 但不限于 Beausoleil 等人的標(biāo)題為 "Multiprocessor for Hardware Emulation" 的美國 專利證書號 5, 551, 013;以及 Scalzi 等人的標(biāo)題為 "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor" 的美國 專利證書號 6, 009, 261;以及 Davidian 等人的標(biāo)題為 "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions" 的美國 專利證書號,5, 574, 873 ;以及Gorishek等人的標(biāo)題為"Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System"的美國專利證書號6, 3〇8, 255 ;以及Lethin等人的標(biāo)題為"Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method"的美國專利證書號6, 463,582,;以及Eric Traut的標(biāo)題為 "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions"的美國專利證書號5, 790, 825(上述這些在這里全 文引用作為參考);以及許多其他專利的各種軟件和硬件仿真專利示出各種已知的方式來 實現(xiàn)針對可為本領(lǐng)域技術(shù)人員獲得的目標(biāo)機(jī)器對為不同機(jī)器進(jìn)行架構(gòu)設(shè)計的指令格式的 仿真。
[0170] 在圖18中,提供了仿真主計算機(jī)系統(tǒng)5092的例子,其仿真主架構(gòu)的主計算機(jī)系統(tǒng) 5000'。在仿真主計算機(jī)系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處 理器),并包括具有與主計算機(jī)5000'的處理器5091不同的本機(jī)指令集架構(gòu)的仿真處理器 5093。仿真主計算機(jī)系統(tǒng)5092具有可被仿真處理器5093訪問的存儲器5094。在示例性實 施例中,存儲器50M被分區(qū)為主計算機(jī)存儲器5096部分和仿真例程5097部分。根據(jù)主計 算機(jī)架構(gòu),主計算機(jī)存儲器 5〇96對于仿真主計算機(jī)5092的程序來說是可用的。仿真處理器 5〇93執(zhí)行與被仿真處理器 5〇91不同架構(gòu)的架構(gòu)指令集的本機(jī)指令(即來自仿真程序處理 器5〇97的本機(jī)指令),且可通過使用從順序和訪問/解碼例程獲得的一個或多個指令從主 計算機(jī)存儲器 5〇%中的程序訪問用于執(zhí)行的主機(jī)指令,所述順序和訪問/解碼例程可解碼 訪問的主機(jī)指令,以確定用于仿真被訪問的主機(jī)指令的功能的本機(jī)指令執(zhí)行例程。被定義 用于主計算機(jī)系統(tǒng)5000'架構(gòu)的其他工具可被架構(gòu)工具例程仿真,所述架構(gòu)工具例程包括 諸如通用寄存器、控制寄存器、動態(tài)地址轉(zhuǎn)換和I/O子系統(tǒng)支持和處理器高速緩存等工具。 仿真例程也可利用在仿真處理器5〇 93中可獲得的功能(諸如通用寄存器和虛擬地址的動 態(tài)轉(zhuǎn)換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿 真主計算機(jī)5000'的功能。
[0171] 在此使用的術(shù)語僅是為了描述特定實施例,且不旨在限制本發(fā)明。如在此使用的, 單數(shù)形式"一"、"一個"和"該"也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理 解,當(dāng)在說明書中使用時,術(shù)語"包括"和/或"包含"指明存在所述的特征、整體、步驟、操 作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整體、步驟、操作、元件和/ 或組件。
[0172]所附權(quán)利要求書中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、操作以及等 價物,如有的話,旨在包括用于結(jié)合如特別要求保護(hù)的其他所要求保護(hù)的元件來執(zhí)行所述 功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡 性的或?qū)⒈景l(fā)明限制于所公開的形式。許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯 的,且不脫離本發(fā)明的范圍和精神。選擇和描述實施例是為了最佳地解釋本發(fā)明的原理和 實際應(yīng)用,并使得本領(lǐng)域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種 實施例理解本發(fā)明。
【權(quán)利要求】
1. 一種促進(jìn)在處理環(huán)境中的處理的方法,所述方法包括: 預(yù)測要在流水線化處理器中執(zhí)行所選擇的指令,所述流水線化從處理器具有包括執(zhí)行 階段的多個處理階段,并且,所述所選擇的指令具有第一權(quán)限級,并且在所述流水線化處理 器中執(zhí)行的一個或多個其他指令具有與所述第一權(quán)限級不同的第二權(quán)限級; 基于預(yù)測要執(zhí)行所述所選擇的指令,預(yù)測所述所選擇的指令的入口地址和與其相關(guān)聯(lián) 的操作狀態(tài),所述入口地址指示基于所述所選擇的指令要獲取指令的位置; 基于預(yù)測所述入口地址,在所述所選擇的指令到達(dá)所述執(zhí)行階段之前在所述入口地址 處獲取所述指令;以及 基于所述預(yù)測操作狀態(tài)來啟動所述獲取的指令的解碼。
2. 根據(jù)權(quán)利要求1所述的方法,其中,所述方法進(jìn)一步包括執(zhí)行所述所選擇的指令,其 中,所述執(zhí)行包括: 基于執(zhí)行所述所選擇的指令,更新所述所選擇的指令的非推測操作狀態(tài); 將所述非推測操作狀態(tài)與所述預(yù)測操作狀態(tài)作比較;以及 基于用于指示差別的所述比較,執(zhí)行恢復(fù)。
3. 根據(jù)權(quán)利要求2所述的方法,其中,所述執(zhí)行恢復(fù)包括: 執(zhí)行所述流水線化處理器的清除,執(zhí)行所述清除提供新的獲取地址和新的推測操作狀 態(tài); 基于執(zhí)行所述清除,在所述新的獲取地址處啟動指令的獲取;以及 基于所述新的推測操作狀態(tài)來處理在所述新的獲取地址處獲取的所述指令。
4. 根據(jù)權(quán)利要求1所述的方法,其中,所述方法進(jìn)一步包括將用于所述所選擇的指令 的返回地址置于在數(shù)據(jù)結(jié)構(gòu)內(nèi)的入口中,所述返回地址指示處理要返回到的地址。
5. 根據(jù)權(quán)利要求4所述的方法,其中,所述方法進(jìn)一步包括:在所述入口內(nèi)包括所述返 回地址的操作狀態(tài)和所述入口的建立者的指示符中的至少一個。
6. 根據(jù)權(quán)利要求1所述的方法,其中,所述操作狀態(tài)包括用于在所述入口地址處的指 令的預(yù)測權(quán)限級,并且其中,所述方法進(jìn)一步包括:在耦合到所述處理環(huán)境的解碼單元的數(shù) 據(jù)結(jié)構(gòu)中存儲所述預(yù)測操作狀態(tài),所述解碼單元用于基于所述預(yù)測操作狀態(tài)解碼所述獲取 的指令。
7. 根據(jù)權(quán)利要求1所述的方法,其中,所述預(yù)測所述入口地址包括:基于固定值、在寄 存器中的值或高速緩存值之一預(yù)測所述入口地址。
8. 根據(jù)權(quán)利要求1所述的方法,其中,所述預(yù)測包括使用分支預(yù)測邏輯預(yù)測要執(zhí)行所 述所選擇的指令。
9. 根據(jù)權(quán)利要求1所述的方法,其中,所述預(yù)測所述操作狀態(tài)包括預(yù)測在所述入口地 址處的所述指令的權(quán)限級,所述預(yù)測所述權(quán)限級包括基于與所述所選擇的指令相關(guān)聯(lián)的一 個或多個參數(shù)預(yù)測所述權(quán)限級。
10. 根據(jù)權(quán)利要求1所述的方法,其中,所述所選擇的指令包括系統(tǒng)調(diào)用指令、管理程 序調(diào)用指令或異步中斷之一。
11. 一種用于促進(jìn)在處理環(huán)境中的處理的計算機(jī)系統(tǒng),所述計算機(jī)系統(tǒng)包括: 存儲器;以及 處理器,其與所述存儲器進(jìn)行通信,其中,所述計算機(jī)系統(tǒng)被配置為執(zhí)行一種方法,所 述方法包括: 預(yù)測要在流水線化處理器中執(zhí)行所選擇的指令,所述流水線化從處理器具有包括執(zhí)行 階段的多個處理階段,并且,所述所選擇的指令具有第一權(quán)限級,并且在所述流水線化處理 器中執(zhí)行的一個或多個其他指令具有與所述第一權(quán)限級不同的第二權(quán)限級; 基于預(yù)測要執(zhí)行所述所選擇的指令,預(yù)測所述所選擇的指令的入口地址和與其相關(guān)聯(lián) 的操作狀態(tài),所述入口地址指示基于所述所選擇的指令要在其獲取指令的位置; 基于預(yù)測所述入口地址,在所述所選擇的指令到達(dá)所述執(zhí)行階段之前在所述入口地址 處獲取所述指令;以及 基于所述預(yù)測操作狀態(tài)來啟動所述獲取的指令的解碼。
12. 根據(jù)權(quán)利要求11所述的計算機(jī)系統(tǒng),其中,所述方法進(jìn)一步包括執(zhí)行所述所選擇 的指令,其中,所述執(zhí)行包括: 基于執(zhí)行所述所選擇的指令來更新所述所選擇的指令的非推測操作狀態(tài); 將所述非推測操作狀態(tài)與所述預(yù)測操作狀態(tài)作比較;以及 基于用于指示差別的所述比較,執(zhí)行恢復(fù)。
13. 根據(jù)權(quán)利要求12所述的計算機(jī)系統(tǒng),其中,所述執(zhí)行恢復(fù)包括: 執(zhí)行所述流水線化處理器的清除,執(zhí)行所述清除提供新的獲取地址和新的推測操作狀 態(tài); 基于執(zhí)行所述清除,在所述新的獲取地址處啟動指令的獲取;以及 基于所述新的推測操作狀態(tài)來處理在所述新的獲取地址處獲取的所述指令。
14. 根據(jù)權(quán)利要求11所述的計算機(jī)系統(tǒng),其中,所述方法進(jìn)一步包括將用于所述所選 擇的指令的返回地址置于在數(shù)據(jù)結(jié)構(gòu)內(nèi)的入口中,所述返回地址指示處理要返回到的地 址。
15. 根據(jù)權(quán)利要求14所述的計算機(jī)系統(tǒng),其中,所述方法進(jìn)一步包括:在所述入口內(nèi)包 括所述返回地址的操作狀態(tài)和所述入口的建立者的指示符中的至少一個。
16. 根據(jù)權(quán)利要求11所述的計算機(jī)系統(tǒng),其中,所述操作狀態(tài)包括在所述入口地址處 的所述指令的預(yù)測的權(quán)限級,并且其中,所述方法進(jìn)一步包括:在耦合到所述處理環(huán)境的解 碼單元的數(shù)據(jù)結(jié)構(gòu)中存儲所述預(yù)測操作狀態(tài),所述解碼單元用于基于所述預(yù)測操作狀態(tài)解 碼所述獲取的指令。
17. 根據(jù)權(quán)利要求11所述的計算機(jī)系統(tǒng),其中,所述所選擇的指令包括系統(tǒng)調(diào)用指令、 管理程序調(diào)用指令或異步中斷之一。
【文檔編號】G06F21/16GK104252586SQ201410301454
【公開日】2014年12月31日 申請日期:2014年6月27日 優(yōu)先權(quán)日:2013年6月28日
【發(fā)明者】M.K.格施溫德, V.薩拉普拉 申請人:國際商業(yè)機(jī)器公司