新四季網

分支預測預加載的製作方法

2023-12-03 19:48:56

分支預測預加載的製作方法
【專利摘要】實施例涉及分支預測預加載。一個方面包括用於分支預測預加載的系統。該系統包括:耦接到處理電路的指令高速緩存和分支目標緩衝器(BTB),配置該處理電路以執行方法。該方法包括:從指令高速緩存提取指令流中的多個指令;以及對指令流中的分支預測預加載指令解碼。根據分支預測預加載指令,確定預測分支指令的地址。根據分支預測預加載指令,確定預測目標地址;在分支預測預加載指令中識別掩蔽欄位;以及根據該掩蔽欄位,確定分支指令長度。根據執行分支預測預加載指令,向BTB預加載預測分支指令的地址、分支指令長度、分支類型和預測目標地址。
【專利說明】分支預測預加載

【技術領域】
[0001] 本發明總的來說涉及計算機處理系統,並且更具體地涉及分支預測預加載。

【背景技術】
[0002] 計算機處理器中的指令流水線通過利用大量流水線階段處理指令,改善指令執行 吞吐量,其中多個階段能夠並行作用於指令流中的不同指令。如果在流水線的指令提取階 段提取下一個指令之前,處理器等待直到在流水線的執行階段消解條件分支指令為止,則 指令流中的該條件分支指令可能導致流水線停滯。分支預測器可以嘗試推測是否取條件分 支。分支預測器還可以包括分支目標預測,該分支目標預測嘗試在通過解碼和執行指令本 身來計算其之前,推測所取條件分支或者無條件分支的目標。分支目標可以通過寄存器的 基於偏移量和/或者間接引用的計算地址。
[0003] 分支目標緩衝器(BTB)能夠用於根據分支指令的地址預測的所取的分支指令的 目標。預測分支指令的目標通過不等待分支指令到達流水線的執行階段以計算分支目標地 址而能夠防止流水線停滯。通過執行分支目標預測,可以在該周期或者分支指令之後的周 期,代替在分支指令與預測的所取的分支指令的目標之間具有多個氣泡/空周期,執行分 支的目標指令解碼。可以包括在BTB中的或者獨立實現的其他分支預測分量包括分支歷史 表和模式歷史表。分支歷史表能夠作為分支地址的函數地預測分支(取與不取)的方向。 模式歷史表能夠支持作為所遇到的引導到要預測的給定分支的分支的模式的函數的分支 的方向預測。


【發明內容】

[0004] 實施例包括用於分支預測預加載的系統、方法以及電腦程式產品。用於分支預 測預加載的系統包括:耦接到處理電路的指令高速緩存和分支目標緩衝器。配置該處理電 路以執行方法。該方法包括:從指令高速緩存提取指令流中的多個指令;以及對指令流中 的分支預測預加載指令解碼。該方法還包括:由處理電路,根據分支預測預加載指令,確定 預測分支指令的地址;以及由處理電路,根據分支預測預加載指令,確定預測分支指令的預 測目標地址。該方法還包括:識別分支預測預加載指令中的掩蔽欄位;以及由處理電路,根 據該掩蔽欄位,確定預測分支指令的分支指令長度。根據執行分支預測預加載指令,向分支 目標緩衝器預加載預測分支指令的地址、分支指令長度以及與預測分支指令相關聯的預測 目標地址。
[0005] 用於分支預測預加載的方法包括:提取指令流中的多個指令;以及對指令流中的 分支預測預加載指令解碼。該方法還包括:由處理電路,根據分支預測預加載指令,確定預 測分支指令的地址;以及由處理電路,根據分支預測預加載指令,確定預測分支指令的預測 目標地址。該方法還包括:識別分支預測預加載指令中的掩蔽欄位;以及由處理電路,根據 該掩蔽欄位,確定預測分支指令的分支指令長度。根據執行分支預測預加載指令,向分支目 標緩衝器預加載預測分支指令的地址、分支指令長度以及與預測分支指令相關聯的預測目 標地址。
[0006] 電腦程式產品包括有形存儲介質,可由處理電路讀取該有形存儲介質,並且該 有形存儲介質存儲用於由處理電路執行方法而執行的指令。該方法包括:提取指令流中的 多個指令;以及對指令流中的分支預測預加載指令解碼。該方法還包括:由處理電路,根據 分支預測預加載指令,確定預測分支指令的地址;以及由處理電路,根據分支預測預加載指 令,確定預測分支指令的預測目標地址。該方法還包括:識別分支預測預加載指令中的掩蔽 欄位;以及由處理電路,根據該掩蔽欄位,確定預測分支指令的分支指令長度。根據執行分 支預測預加載指令,向分支目標緩衝器預加載預測分支指令的地址、分支指令長度以及與 預測分支指令相關聯的預測目標地址。

【專利附圖】

【附圖說明】
[0007] 在概括說明中特別指出並且在權利要求書中明確要求保護本發明的主題。根據下 面結合附圖所做的詳細描述,本實施例的上述以及其他特徵和優點顯而易見,其中:
[0008] 圖IA是示出實施例中的典型主計算機系統的示意圖;
[0009] 圖IB是示出實施例中的典型模擬主計算機系統的示意圖;
[0010] 圖IC是示出實施例中的典型計算機系統的示意圖;
[0011] 圖2是示出實施例中的典型計算機網絡的示意圖;
[0012] 圖3是示出實施例中的計算機系統的元件的示意圖;
[0013] 圖4A-4C是示出實施例中的計算機系統的詳細元件;
[0014] 圖5示出根據實施例的用於分支預測預加載指令的指令格式;
[0015] 圖6示出根據實施例的用於分支預測預加載指令的另一指令格式;
[0016] 圖7示出根據實施例的用於分支預測預加載的處理流程;以及 [0017] 圖8示出根據實施例的電腦程式產品。

【具體實施方式】
[0018] 典型實施例使能分支預測預加載。在代碼重複執行並且突遇分支時,通常隨著 時間推移學習分支預測,將僅通過解碼處理知曉的那些分支安裝在分支目標緩衝器(BTB) 中。一旦BTB填有指出分支地址、目標地址和方向信息,例如取與未取的項,因為在消解了 分支預測後,對BTB進行更新,所以預測準確性升高。典型實施例利用分支預測預加載指令 提供分支預測預加載,使得在取相關聯的分支之前,能夠將分支指令地址和目標地址插入 BTB中。當寫軟體或者編譯軟體時,能夠分析代碼,以尋找分支指令。能夠將分支預測預加 載指令附加到分支前面的代碼,使得可以準確預測後續分支,並且避免突遇分支(surprise branch)。避免突遇分支縮短了流水線停滯,否則可能發生流水線停滯而同時等待要消解的 突遇分支。因為非預加載的內容的準確性和命中率初始確定BTB的大小,所以實際上,在 基本上保持相同性能的情況下,可以物理地減小利用分支預測預加載指令填入的BTB的大 小。例如,與不支持分支預測預加載指令的BTB相比,可以使用分支預測預加載指令以4:1 的比例縮小BTB的大小。
[0019] 圖IA示出實施例中的主計算機系統50的代表性部件。在計算機系統中也可以採 用其他部件布置。說明性主計算機系統50包括與主存儲設備(計算機存儲器)2通信的一 個或者多個處理器1和到存儲裝置11和網絡10以用於與其他計算機或者存儲區域網絡 (SAN)等通信的I/O接口。處理器1依照具有架構指令集和架構功能性的架構。處理器1 可以具有動態地址轉換(DAT)3,用於將程序地址(虛擬地址)轉換為存儲器內的實際地址。 DAT3通常包括用於高速緩存轉換的轉換備用緩衝器(TLB) 7,使得之後對計算機存儲器2的 塊的存取不需要地址轉換的延遲。通常,在計算機存儲器2與處理器1之間採用高速緩存 9。高速緩存9可以是分層結構的,具有對一個以上CPU可用的大高速緩存和位於大高速緩 存與每個CPU之間的小型快速(低級)高速緩存。在一些實施例中,劃分低級高速緩存,以 提供分離低級高速緩存,用於指令提取和數據存取。在實施例中,由指令提取單元4通過高 速緩存9從計算機存儲器2提取指令。指令在指令解碼單元6中解碼並且被分派到(在一 些實施例中與其他指令一起)指令執行單元8。通常,採用幾個指令執行單元8,例如,算術 執行單元、浮點執行單元以及分支指令執行單元。在需要時,由指令執行單元8執行指令, 從指令專用寄存器或者計算機存儲器2存取操作數。如果從計算機存儲器2存取(加載或 者存儲)操作數,則負荷存儲單元5通常在被執行的指令的控制下處理存取。指令可以在 硬體電路或者在內部微碼(固件)中執行,或者由二者的組合執行。
[0020] 在圖IB中,示出了模擬主計算機系統21,假定該模擬主計算機系統21模擬主架 構的主計算機系統,諸如圖1所示的主計算機系統50。在模擬主計算機系統21中,主處理 器(CPU) 1是模擬主處理器(或者虛擬主處理器)29,並且包括本機處理器27,該本機處理 器27與主計算機系統50的處理器1具有不同的本機指令集架構。模擬主計算機系統21 具有本機處理器27可訪問的存儲器22。在實施例中,將存儲器22劃分為計算機存儲器2 部分和模擬例程存儲器23部分。根據主計算機架構,計算機存儲器2可用於模擬主計算機 系統21的程序。本機處理器27執行模擬處理器29的架構以外的架構的架構指令集的本 機指令、從模擬例程存儲器23獲得的本機指令,並且通過採用在序列和存取/解碼例程中 獲得的一個或者多個指令,可以在計算機存儲器2中從程序存取用於執行的主指令,序列 和存取/解碼例程可以解碼所存取的(各)主指令,以確定用於模擬所存取的主指令的功 能的本機指令執行例程。例如,包括諸如通用寄存器、控制寄存器、動態地址轉換以及輸入 /輸出(I/O)子系統支持和處理器高速緩存的設施的架構設施例程可模擬限定用於主計算 機系統50架構的其他設施。模擬例程還可以利用本機處理器27中可用的功能(諸如通用 寄存器和虛擬地址的動態轉換),以改善模擬例程的性能。還可以設置專用硬體和卸載引 擎,以支持本機處理器27模擬主計算機系統50的功能。
[0021] 在大型計算機中,由例如通常作為即時編譯應用程式的編程器的編程器使用 架構機器指令。自然,在z/架構IBM伺服器或者替代地在執行其他架構的機器中可 以執行存儲在存儲介質中的這些指令。在現有的和未來的IBM大型機伺服器中和IBM 的其他機器(例如,pSeries?伺服器和xseries?伺服器)中能夠模擬它們。在採用 IBM?、Intel?、AMD?、Oracle等製造的硬體的各種機器上,可以在運行Linux的機器 中執行它們。除了在Z/Architecture?下的硬體上執行外,Linux也可以用作使用通過 Hercules, UMX, Fundamental Software, Inc. (FSI)或者Platform Solutions, Inc. (PSI)的 模擬的機器,通常在模擬模式下執行。在模擬模式下,本機處理器執行模擬軟體,以模擬模 擬處理器的架構。
[0022] "IBM? z/Arch i tecture Pr inc ip I e s of Operat i on,',Pub I i cat ion No. SA22-7832-08,第9版,2010年8月中進一步描述了模擬主計算機系統21的一個或者多 個部件,在此通過引用合併該文獻的全部內容。IBM是美國紐約州的阿蒙克市的國際商用機 器公司的註冊商標。在此使用的其他名字可以是國際商用機器公司或者其他公司的註冊商 標、商標或者廣品名稱。
[0023] 本機處理器27通常執行存儲在包括固件或者本機作業系統的模擬例程存儲器23 內的模擬軟體,以執行模擬處理器的模擬。模擬軟體負責提取和執行模擬處理器架構的指 令。模擬軟體保持模擬程序計數器,從而保持指令邊界的跟蹤。模擬軟體一次可以提取一個 或者多個模擬機器指令,並且將該一個或者多個模擬機器指令變換為相應的一組本機機器 指令,供本機處理器27執行。可以高速緩存這些變換的指令,使得能夠執行更快的變換。模 擬軟體保持模擬處理器架構的架構規則,以保證對模擬處理器寫入的作業系統和應用程式 正確運行。此外,模擬軟體提供包括但並不局限於:控制寄存器、通用寄存器、浮點寄存器、 例如包括分段表和頁表的動態地址轉換功能、中斷機構、上下文切換機構、每日時間(TOD) 時鐘和到I/O系統的架構接口的模擬處理器架構識別的資源,使得為了運行於模擬處理器 29上設計的作業系統或者應用程式能夠運行於具有模擬軟體的本機處理器27上。
[0024] 對正模擬的特定指令解碼,並且調用子例程,以執行各指令的功能。在理解了優選 實施例的描述後,本【技術領域】內的技術人員明白,例如在"C"子例程或者驅動器中或者在對 特定軟體提供驅動器的某個其他方法中執行模擬模擬處理器29的功能的模擬軟體功能。
[0025] 實施例可以由軟體實施(有時稱為許可內碼、固件、微碼、毫碼(milli-code)、微 微碼(pico-code)等,它們中的任何一個都符合實施例)。參考圖1A,由也已知為主計算機 系統50的CPU (中央處理單元)的處理器從諸如長期存儲介質、CD-ROM驅動器、磁帶驅動 器或者硬碟驅動器的存儲裝置11存取軟體程序代碼。可以將軟體程序代碼具體表現在任 何類型的各種介質上,與諸如磁碟、硬碟驅動器、CD-ROM、藍光光碟或者通用串行總線(USB) 閃速驅動器的數據處理系統一起使用。通過到其他計算機系統的網絡10,可以將代碼從一 個計算機系統的計算機存儲器2或者存儲設備分布在這種介質上,或者分布到用戶,供該 其他系統的用戶使用。
[0026] 作為選擇地,可以將程序代碼具體表現在計算機系統2中,並且利用處理器總線 (未示出)由處理器1存取程序代碼。該程序代碼包括作業系統,該作業系統控制各種計算 機部件和一個或者多個應用程式的功能和交互。通常將程序代碼從諸如存儲裝置11的致 密介質尋呼到計算機存儲器2,在計算機存儲器2中,該程序代碼可用於由處理器1執行。 將軟體程序代碼具體表現在存儲器中、在物理介質上和/或者通過網絡的分布軟體代碼的 技術和方法眾所周知,並且在此不做進一步討論。在包括但並不局限於電子存儲器模塊 (RAM)、閃速存儲器、壓縮光碟(⑶)、DVD、磁帶等的有形介質上創建並且存儲程序代碼時,通 常將程序代碼稱為"電腦程式產品"。通常,優選地位於計算機系統中的處理電路可讀取 電腦程式產品介質從而由該處理電路執行。
[0027] 圖IC示出典型實施例中的說明性工作站或者伺服器硬體系統。圖IC的系統100 包括含有可選外圍設備的說明性基本計算機系統101,諸如個人計算機、工作站或者服務 器。基本計算機系統101包括一個或者多個處理器106和總線,根據公知技術,利用總線在 一個或者多個處理器106與基本計算機系統101的其他部件之間進行連接並且使能通信。 總線將處理器106連接到存儲器105和長期存儲設備107,例如,該長期存儲設備107可以 包括硬碟驅動器(例如包括磁介質、CD、DVD和閃速存儲器中的任何一個)或者磁帶驅動 器。基本計算機系統101還可以包括用戶接口適配器,通過總線,用戶接口適配器將一個或 者多個處理器104連接到一個或者多個接口裝置,諸如鍵盤104、滑鼠103、印表機/掃描儀 110和/或者其他接口裝置,該其他接口裝置可以是任何用戶接口裝置,諸如觸控螢幕、數字 輸入小鍵盤等。總線還通過顯示適配器將一個或者多個處理器連接到顯示裝置102,諸如 IXD屏幕或者監視器。
[0028] 基本計算機系統101可以通過能夠與網絡109通信108的網絡適配器與其他計算 機或者計算機的網絡通信。典型網絡適配器是通信信道、令牌環、乙太網或者數據機。 作為選擇,基本計算機系統101可以利用諸如蜂窩數字分組數據(CDPD)卡的無線接口進行 通信。基本計算機系統101可以與區域網(LAN)或者廣域網(WAN)內的該其他計算機相關 聯,在具有另一計算機等的客戶機/伺服器布置中,基本計算機系統101也可以是客戶機。
[0029] 圖2示出可以實施實施例的數據處理網絡200。數據處理網絡200可以包括多個單 獨網絡,諸如無線網和有線網,無線網和有線網中的每個都可以包括多個單獨工作站201、 202、203、204和/或者圖IC的基本計算機系統101。此外,本【技術領域】內的技術人員明白, 可以包括一個或者多個LAN,其中LAN可以包括耦接到主處理器的多個智能工作站。
[0030] 利用處理器總線,可以將編程代碼111具體表現在存儲器105中,並且由處理器 106存取該編程代碼111。該編程代碼包括作業系統,該作業系統控制各種計算機部件和 一個或者多個應用程式112的功能和交互。通常,將程序代碼從長期存儲設備107尋呼到 高速存儲器105,在高速存儲器105內,處理器106可以處理該程序代碼。還可以將處理器 106稱為處理電路106。用於將軟體編程代碼具體表現在計算機內,物理介質上和/或者通 過網絡分布軟體代碼的技術和方法眾所周知,並且在此不做進一步討論。在包括但並不局 限於電子存儲器模塊(RAM)、閃速存儲器、壓縮光碟(CD)、DVD、磁帶等的有形介質上創建並 且存儲程序代碼時,通常將程序代碼稱為"電腦程式產品"。通常,優選地位於計算機系統 中的處理電路可以讀取電腦程式產品介質從而由該處理電路執行。
[0031] 處理器最容易使用的高速緩存(通常比處理器的其他高速緩存更快並且更小)是 最低(LI或者1級)高速緩存,並且主存儲器件(主存儲器)是最高級高速緩存(如果有 3級,則為L3)。通常,將最低級高速緩存劃分為:指令高速緩存(I高速緩存),用於保存要 執行的機器指令;和數據高速緩存(D高速緩存),用於保存數據操作數。
[0032] 仍然參考圖2,網絡還可以包括大型機計算機或者伺服器,諸如網關計算機(客戶 機伺服器)206或者應用伺服器(遠程伺服器)208,該網關計算機206和應用伺服器208 可以訪問數據中心庫,並且還可以從工作站205直接訪問該網關計算機206和應用伺服器 208。網關計算機206用作到每個網絡207中的進入點。當將一個聯網協議連接到另一個聯 網協議時,需要網關。網關計算機206優選地通過通信鏈路耦連到另一個網絡(例如,因特 網207)。網關計算機206也可以利用通信鏈路直接耦連到一個或者多個工作站101、201、 203和204。可以利用從國際商業機器公司獲得的IBM Enterprise 196伺服器實現網關 計算機。
[0033] 在典型實施例中,基本計算機系統101的處理器106可以從諸如圖IC所示的長期 存儲設備107的長期存儲介質存取軟體編程代碼。可以將軟體編程代碼具體表現在與數據 處理系統一起使用的各種介質中的任何一種介質上,諸如磁碟、硬碟驅動器或者CD-ROM。通 過到其他計算機系統的網絡,可以將代碼從一個計算機系統的存儲器或者存儲設備分布在 這種介質上,或者分布到用戶210和211,供該其他系統的用戶使用。
[0034] 參考圖3,對處理器106示出典型處理器實施例。為了改善處理器106的性能,對 緩衝存儲塊採用一級或者多級高速緩存303。高速緩存303是保存很可能要使用的存儲器 數據的高速緩存行的高速緩衝器。典型高速緩存行是64、128或者256位元組的存儲器數據。 在實施例中,採用分開的高速緩存用於高速緩存指令和高速緩存數據。在本【技術領域】內眾 所周知,高速緩存一致性(存儲器內與高速緩存內行的複本的同步)通常由各種"窺探"算 法提供。通常將諸如處理器系統的存儲器105的主存儲器稱為高速緩存。在具有3級高速 緩存303的處理器系統中,有時將存儲器105稱為4級(L4)高速緩存,因為其通常更快並 且僅保存計算機系統可用的非易失性存儲設備(DASD、磁帶等)的一部分。存儲器105"高 速緩存"作業系統在存儲器105之內和之外尋呼的數據頁。
[0035] 程序計數器(指令計數器)311對要執行的當前指令的地址保持跟蹤。z/ Architecture處理器中的程序計數器是64位的,並且可以將其截斷為31位或者24位,以 支持先前的尋址限制。通常,將程序計數器具體表現在計算機的程序狀態字(PSW)中,使得 其在上下文切換期間持續。因此,在進行中具有程序計數器值的程序可能被例如作業系統 中斷(即,當前上下文從程序環境切換到作業系統環境)。在該程序不活動時,程序的PSW 保持該程序計數器值,而在作業系統正在執行時,使用作業系統的(PSW中的)程序計數器。 在實施例中,程序計數器遞增等於當前指令的字節數的量。在複雜指令集計算(CISC)指令 通常具有可變長度時,精簡指令集計算(RISC)指令通常是固定長度。IBM z/Architecture 的指令是長度為2、4或者6位元組的CISC指令。程序計數器311例如由上下文切換操作或 者分支指令的分支取操作修改。在上下文切換操作中,將當前程序計數器值與關於正在執 行的程序的其他狀態信息(諸如條件代碼)一起保存在PSW中,並且加載指向要執行的新 程序模塊的指令的新程序計數器值。通過將分支指令的結果加載到程序計數器311中,執 行分支取操作,以允許程序進行判定或者在程序中循環。
[0036] 在實施例中,利用指令提取單元305代表處理器106提取指令。指令提取單元305 或者提取"下一序列指令",即,分支取指令的目標指令,或者提取上下文切換之後的程序的 第一指令。在實施例中,指令提取單元305利用預提取技術根據可以使用預提取指令的可 能性推測性地預提取指令。例如,指令提取單元305可以提取16位元組的指令,其包括下一 順序指令和進一步的順序指令的額外字節。
[0037] 然後,處理器106執行提取的指令。在實施例中,將(各)提取指令送到指令提取 單元305的解碼/分派單元306。解碼/分派單元306解碼(各)指令,並且將關於(各) 解碼指令的信息轉發到適當的單元307、308和/或者310。各種單元(階段)306、307、308、 310之間的排序可以以流水線方式執行,以保持使用的單元306、307、308、310較大吞吐量。 執行單元307從指令提取單元305接收關於解碼算術指令的信息,並將根據該指令的操作 代碼(操作碼)對操作數執行算術運算。將或者來自存儲器105、架構寄存器309的,或者 來自正在執行的指令的立即欄位的操作數提供給執行單元307。當存儲時,將執行結果或者 存儲在存儲器105、架構寄存器309中,或者存儲在其他機器硬體中(諸如控制寄存器、PSW 寄存器等)。
[0038] 處理器106通常具有一個或者多個單元307、308和310,用於執行指令的功能。參 考圖4A,執行單元307可以通過接口邏輯407與架構寄存器209、解碼/分派單元306、加載 /存儲單元310以及其他處理單元401通信。執行單元307可以採用幾個寄存器電路403、 404和405以保存關於其算術邏輯單元(ALU) 402將運行的信息。ALU 402執行諸如加、減、 乘和除的算術運算和諸如"與"、"或"和"異或(xor)"、旋轉以及位移的邏輯函數。在實施 例中,ALU支持設計相關的專用運算。其他電路可以提供包括例如條件代碼和恢復支持邏 輯的其他架構設施408。通常,將ALU運算的結果保存在輸出寄存器電路406中,該輸出寄 存器電路406能夠將該結果轉發到各種其他處理功能。在其他實施例中,處理單元有多種 排列,本說明書僅有意提供用於理解一個實施例的代表性排列。
[0039] 例如ADD指令將在具有算術和邏輯功能性的執行單元307內執行,而例如浮點指 令將在具有專用浮點能力的浮點執行單元(未示出)內執行。優選地,通過關於操作數執 行操作碼定義函數,執行單元關於指令識別的操作數操作。例如,執行單元307可以關於在 由指令的寄存器欄位識別的兩個架構寄存器309中找到的操作數執行ADD指令。
[0040] 執行單元307關於兩個操作數執行算術加,並且將結果存儲在第三操作數中,該 第三操作數可以是第三寄存器或者是兩個資源寄存器中的一個。執行單元307優選地採用 算術邏輯單元(ALU) 402,該算術邏輯單元402能夠執行諸如位移、旋轉和"或"和"異或"的 各種邏輯函數以及包括加、減、乘、除中的任何一個的各種代數函數。一些ALU 402設計用 於比例運算,而一些用於浮點。在實施例中,根據架構,數據可以是big endian(最不重要 字節處於最高字節地址)或者little endian (最不重要字節處於最低字節地址)。IBM z/ Architecture是big endian。根據架構,帶符號欄位可以是符號和大小、1的補碼和2的補 碼。2的補碼數的優點在於,ALU不需要設計減能力,因為2的補碼的負值或者正值僅要求 在ALU內的加。通常以簡寫方式描述數,其中12位欄位定義4, 096位元組塊的地址,並且例 如通常將12位欄位描述為4K字節(千字節)塊。
[0041] 參考圖4B,通常將執行分支指令的分支指令信息發送到分支單元308,利用諸如 分支目標緩衝器(BTB) 432的結構,分支單元308利用分支預測來在其他條件運算完成之前 預測分支的結果。在條件運算完成之前,提取並且推測性地執行當前分支指令的目標。當 條件運算完成時,根據條件運算的條件和推測結果,或者完成或者廢棄推測性地執行的分 支指令。典型分支指令可以測試條件代碼,並且如果該條件代碼滿足分支指令的分支要求, 則分支到目標地址,可以根據包括例如指令的寄存器欄位中的或者立即欄位中的數的幾個 數,計算目標地址。在實施例中,分支單元308可以採用ALU 426,該ALU 426具有多個輸入 寄存器電路427、428和429以及輸出寄存器電路430。分支單元308可以與例如通用寄存 器、解碼/分派單元306或者其他電路425通信。
[0042] 一組指令的執行可能因為各種原因被中斷,包括例如作業系統引發的上下文切 換、導致上下文切換的程序異常或者錯誤、導致上下文切換的I/O中斷信號或者多個程序 的多線程活動(多線程環境下)。在實施例中,上下文切換操作保存關於當前執行程序的狀 態信息,並且隨後加載關於正被調用的另一程序的狀態信息。狀態信息可以保存在例如硬 件寄存器中或者存儲器中。狀態信息包括指向要執行的下一個指令的程序計數器值、條件 代碼、存儲器轉換信息和架構寄存器內容。上下文切換操作可以由硬體電路、應用程式、操 作系統程序或者固件代碼(微碼、微微碼、或者許可內碼)單獨地或者組合地執行。
[0043] 處理器根據指令定義方法存取操作數。該指令可以利用指令的一部分的值提供立 即操作數,可以提供明確指向通用寄存器或者專用寄存器(例如,浮點寄存器)的一個或者 多個寄存器欄位。該指令可以將操作碼欄位識別的隱型寄存器用作操作數。該指令可以使 用操作數的存儲器位置。操作數的存儲器位置可以由寄存器、立即欄位或者寄存器和立即 欄位的組合提供,正如z/Architecture長位移設施所例示的,其中指令定義基本寄存器、 索引寄存器和立即欄位(位移欄位),它們加在一起,以提供存儲器內的操作數的地址。此 處的位置指主存儲器(主存儲器)內的位置,除非另有說明。
[0044] 參考圖4C,處理器利用加載/存儲單元310訪問存儲設備。通過高速緩存/存儲 器接口獲得目標操作數在存儲器內的地址並且將該操作數加載到架構寄存器309中或者 另一個存儲器位置,加載/存儲單元310可以執行加載操作,或者通過獲得目標操作數在存 儲器內的地址並且從架構寄存器309或者另一個存儲器位置獲得的數據存儲在存儲器內 的目標操作數位置,加載/存儲單元310可以執行存儲操作。加載/存儲單元310可以是 推測性的,並且以相對於指令序列無序的順序訪問存儲器,然而,加載/存儲單元310將維 持對程序呈現順序執行指令的外觀。加載/存儲單元310可以與架構寄存器309、解碼/ 分派單元306、高速緩存/存儲器接口或者其他元件455通信,並且可以包括各種寄存器電 路、ALU 458和控制邏輯463,以計算存儲器地址並且提供為了使操作保持有序而排隊的流 水線。某些操作可以是無序的,但是加載/存儲單元提供功能性,以使無序操作對程序看起 來如已按順序執行一樣,如本【技術領域】內所公知的。
[0045] 優選地,應用程式"看到"的地址通常被稱為虛擬地址。有時將虛擬地址稱為"邏 輯地址"和"有效地址"。這些虛擬地址之所以是虛擬的,是因為它們利用諸如圖3所示 的DAT 312的各種DAT技術中的一種重定向到物理存儲器位置,各種DAT技術包括但並不 局限於以偏移值為虛擬地址的前綴,通過一個或者多個轉換錶轉換虛擬地址,該轉換表至 少單獨地或者組合地包括分段表和頁表,優選地包括具有指向頁表的項的分段表。在z/ Architecture中,提供包括區域第一表、區域第二表、區域第三表、分段表和可選頁表的轉 換分級結構。通常利用轉換備用緩衝器(TLB)改善地址轉換的性能,該轉換備用緩衝器 (TLB)包括將虛擬地址映射到相關聯的物理存儲器位置的項。當DAT 312利用轉換錶轉換 虛擬地址時,創建該項。然後,虛擬地址的後續使用能夠使用快速TLB的項,而非慢速順序 轉換表存取。TLB內容可以由包括最近最少使用(LRU)的各種位移算法來管理。
[0046] 在處理器106是多處理器系統的處理器時,每個處理器都負有保持共享資源的責 任,諸如為了一致性而互鎖的I/O、高速緩存、TLB和存儲器。在實施例中,為了保持高速緩 存一致性,採用"窺探"技術。在窺探環境下,為了便於共享,每個高速緩存行都可以被標記 為處於共享狀態、獨佔狀態、改變狀態、無效狀態等中的任何一個。
[0047] 圖3的I/O單元304為處理器106提供了用於附於包括例如磁帶、磁碟、印表機、 顯示器和網絡的外圍設備的裝置。I/O單元304通常由軟體驅動器呈現給電腦程式。在 諸如IBM公司的System z的大型計算機中,信道適配器和開放系統適配器是在作業系統與 外圍設備之間提供通信的大型計算機的I/O單元。
[0048] 圖5和圖6示出分支預測預加載指令的典型指令格式500和600。指令格式500 是分支預測預加載指令,該分支預測預加載指令包括:操作碼502、掩蔽欄位504、開始地址 偏移量RI 506、目標地址基本寄存器508、以及目標地址位移510。指令格式500還可以包 括保留的/未定義位512。同樣,指令格式600是分支預測相對預加載指令,包括:操作碼 602、掩蔽欄位604、開始地址偏移量RI2 606以及目標地址偏移量RI3 608。能夠選擇操作 碼502和602,從而相對於其他架構指令唯一地識別指令格式500和600。
[0049] 開始地址偏移量RI 506或者開始地址偏移量RI2 606用於確定預測分支指令的 開始地址。在典型實施例中,開始地址偏移量RI 506或者開始地址偏移量RI2 606是規定 為了產生分支地址或者執行式指令而與當前分支預加載指令的地址相加的半字的數量的 帶符號二進位整數。在一個例子中,指令格式500的開始地址偏移量RI 506含有帶符號的 16位整數,並且指令格式600的開始地址偏移量RI2 606含有帶符號的12位整數。當將開 始地址偏移量RI506或者開始地址偏移量RI2 606中規定的半字的數量與當前分支預加載 地址的地址相加時,結果經歷當前尋址模式。即,將結果處理為24位尋址模式中的24位地 址、31位尋址模式中的31位地址、或者64位尋址模式中的64位地址。
[0050] 在掩蔽欄位504或者掩蔽欄位604內進行控制的情況下,將關於開始地址偏移 量RI 506或者開始地址偏移量RI2 606指定的分支或者執行式指令的信息提供給處理器 106。結合目標地址位移510或者目標地址偏移量RI3 608,目標地址基本寄存器508規定 指定指令的預測目標地址。
[0051] 在典型實施例中,掩蔽欄位504和604分別含有4位無符號二進位整數,該4位無 符號二進位整數用作以信號發送由開始地址偏移量指定的分支指令的CPU屬性的代碼。掩 蔽欄位504和604的代碼的例子如下:
[0052] 代碼0 -該指令是4位元組長度的分支指令。該分支指令不用於呼叫連結或者返回 連結,並且可以存在該分支指令的多個可能目標。
[0053] 代碼1-4 -保留
[0054] 代碼5 -該指令是2位元組長度的分支指令。該分支指令用於呼叫連結,並且僅存 在該分支指令的一個目標。
[0055] 代碼6 -該指令是2位元組長度的分支指令。該分支指令用於返回連結。
[0056] 代碼7 -該指令是2位元組長度的分支指令。該分支指令用於呼叫連結,並且可以 存在該分支指令的多個可能目標。
[0057] 代碼8 -該指令是4位元組長度的分支指令。該分支指令不用於呼叫連結或者返回 連結,並且僅存在該分支指令的一個目標。
[0058] 代碼9 一該指令是4位元組長度的分支指令。該分支指令用於呼叫連結,並且僅存 在該分支指令的一個目標。
[0059] 代碼10 -該指令是4位元組長度的分支指令。該分支指令可以用於返回連結和無 條件分支。
[0060] 代碼11 一該指令是4位元組長度的分支指令。該分支指令用於呼叫連結,並且可以 存在該分支指令的多個可能目標。
[0061] 代碼12 -該指令是6位元組長度的分支指令。該分支指令不用於呼叫連結或者返 回連結,並且僅存在該分支指令的一個目標。
[0062] 代碼13 -該指令是6位元組長度的分支指令。該分支指令用於呼叫連結,並且僅存 在該分支指令的一個目標。
[0063] 代碼14 -該指令是執行式指令,例如,EXE⑶TE。該執行式指令可以臨時分支,以 執行允許修改的指令,然後,如果該單指令不是將代碼流重定向到其他地方的所取的分支, 則立即返回。
[0064] 代碼15 -該指令是執行式指令,例如,EXE⑶TE RELATIVE LONG。該執行式指令可 以臨時分支,以執行允許修改的指令,然後,如果該單指令不是將代碼流重定向到其他地方 的所取的分支,則立即返回。
[0065] 關於指令格式500,當掩蔽欄位504規定分支指令時,目標地址基本寄存器508與 目標地址位移501結合形成的目標地址是由開始地址偏移量RI506指定的分支指令的預測 分支目標地址。關於指令格式500,當掩蔽欄位504規定執行式指令時,目標地址基本寄存 器508與目標地址位移510結合形成的目標地址是由當前尋址模式下的開始地址偏移量RI 506指定的執行式指令的執行目標地址。即,將該結果處理為24位尋址模式下的24位地 址,31位尋址模式下的31位地址或者64位尋址模式下的64位地址。
[0066] 關於指令格式600,當掩蔽欄位604規定分支指令時,目標地址偏移量RI3 608的 內容是規定為了產生由開始地址偏移量RI2 606指定的分支地址的分支目標地址而與分支 預測相對預加載指令的地址相加的半字的數量的24位帶符號二進位整數。關於指令格式 600,當掩蔽欄位604規定執行式指令時,目標地址偏移量RI3 608的內容是規定為了產生 由開始地址偏移量RI2 606指定的執行式指令的執行目標地址而與分支預測相對預加載指 令的地址相加的半字的數量的24位帶符號二進位整數。當將由目標地址偏移量RI3 608規 定的半字的數量與分支預測相對預加載指令的地址相加時,結果處於當前尋址模式下。即, 將該結果處理為24位尋址模式下的24位地址,31位尋址模式下的31位地址或者64位尋 址模式下的64位地址。
[0067] 根據該模型,處理器106可以不實現上面列出的所有分支屬性代碼。關於處理器 106未識別的代碼,以及關於保留代碼,該指令可以作為無操作。在典型實施例中,指令格式 500和600規定的分支/執行式地址和目標地址是虛擬地址。
[0068] 圖7示出在處理器106內能夠實施的分支預測預加載的典型處理700。在方框 702,提取指令流中的多個指令,其中指令流是可以執行的一系列指令。利用指令提取單元 305,可以從高速緩存303中的指令高速緩存提取指令。在方框704,在指令流中,對分支預 測預加載指令解碼。指令解碼可以由解碼/分派單元306執行。
[0069] 在方框706,根據分支預測預加載指令,確定要預加載的預測分支指令的地址。分 支預測預加載指令可以是指令格式500、指令格式600或者它們的變型。要預加載的預測分 支指令的地址可以是從分支預測預加載指令的地址的地址偏移量。關於指令格式500,地 址能夠是基於開始地址偏移量RI 506的開始地址。關於指令格式600,地址能夠是基於開 始地址偏移量RI2 606的開始地址。變型格式可以將結束地址,而非將開始地址用作地址。 例如,偏移量RI 506和RI2 606能夠實現為結束地址偏移量,而非開始地址偏移量。作為 另一種變型,地址能夠是基於開始地址偏移量RI 506或者開始地址偏移量RI2 606的結束 地址加掩蔽欄位504和604中每個的分支指令長度減一個或者多個可尋址單位(例如,字 節),以對準地址。
[0070] 在方框708,根據分支預測預加載指令,確定要預加載的預測分支指令的預測目標 地址。關於指令格式500,能夠結合目標地址位移510,根據目標地址基本寄存器508的內 容,確定預測目標地址。關於指令格式600,能夠根據目標地址偏移量RI3 608,確定預測目 標地址。
[0071] 在方框710,在分支預測預加載指令中識別掩蔽欄位。在典型實施例中,指令格式 500的掩蔽欄位504和指令格式600的掩蔽欄位604的解碼基本上相同。掩蔽欄位504和 604定義用於預加載BTB 432的分支指令長度和分支類型。在方框712,根據掩蔽欄位確定 要預加載的預測分支指令的分支指令長度。根據掩蔽欄位,還能夠確定要預加載的預測分 支指令的分支類型,並可以提供給BTB432。在方框714,根據執行分支預測預加載指令,向 BTB 432預加載預測分支指令的地址、分支指令長度、分支類型以及與預測分支指令相關聯 的預測目標地址。其中,可以根據與分支預加載指令的地址相加的分支偏移量,確定預測分 支指令的地址。預測分支指令的地址可以表示開始地址或者結束地址。通過知曉作為提供 的指令長度的函數的結束地址,該指令長度也能夠存儲在BTB 432中,在BTB 432進行正在 預測的預加載分支的未來預測時,知曉對於可變指令長度架構,順序提取必須前進多遠。
[0072] 向BTB 432預加載預測分支指令的地址和與預測分支指令相關聯的預測目標地 址可以將預測分支指令的地址的一部分和預測目標地址的一部分存儲到BTB 432。例如,存 儲在BTB 432內的地址標誌可以包括比完整地址少的位,但是能夠結合其他信息,例如,基 本地址或者地址範圍,根據地址標誌,確定完整地址。
[0073] 根據分支類型,能夠執行各種操作。例如,根據確定預測分支指令的分支類型是 呼叫分支,保存作為分支指令長度的函數的順序地址,用於返回地址的未來預測。在從BTB 432的預測分支指令的預測時,能夠將順序地址保存在存儲器105內的呼叫-返回堆棧,或 者存儲器的另一區域。根據確定預測分支指令的分支類型是返回分支,在作為目標預測從 呼叫-返回堆棧,而非從BTB 432內的目標地址項進行預測時,能夠檢索順序地址。分支類 型是呼叫類型或者返回類型分支的指示與分支一起保存在BTB 432中。在呼叫類型的預測 時,作為也存儲在BTB 432內的分支指令長度的函數的順序地址保存到基準堆棧中。在被 稱為返回的分支的預測時,對於返回地址參考堆棧。
[0074] 根據確定預測分支指令的分支類型是地址模式改變分支,當在分支目標緩衝器中 的預測目標地址的預測時,對應於分支類型,設定尋址模式。根據確定預測分支指令的分支 類型是執行指令類型,在分支預測單元308的分支預測邏輯中,將執行指令類型處理為特 定分支類型。例如,單個執行指令能夠有效地產生兩個順序分支,以分支到要執行的指令, 並且在指令執行後立即返回。
[0075] 還能夠將基於分支類型的附加信息存儲在BTB 432內。例如,如果分支具有由掩 蔽欄位504、604指出的多個目標,則還可以將多目標指示器保存在BTB 432中,使得當預測 分支並且因此還預測目標時,可以應用適當的預測結構。
[0076] 所屬【技術領域】的技術人員知道,本發明的各個方面可以實現為系統、方法或計算 機程序產品。因此,本發明的各個方面可以具體實現為以下形式,即:完全的硬體實施方式、 完全的軟體實施方式(包括固件、駐留軟體、微代碼等),或硬體和軟體方面結合的實施方 式,這裡可以統稱為"電路"、"模塊"或"系統"。此外,在一些實施例中,本發明的各個方面 還可以實現為在一個或多個計算機可讀介質中的電腦程式產品的形式,該計算機可讀介 質中包含計算機可讀的程序代碼。
[0077] 可以採用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算 機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是--但不限 於--電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算 機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便 攜式計算機盤、硬碟、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器 (EPROM或快閃記憶體)、光纖、可攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者 上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的 有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。
[0078] 現在,參考圖8,在一個例子中,電腦程式產品800包括例如一個或者多個存儲 介質802,其中該介質可以是有形的和/或者非臨時的,以在其上存儲計算機可讀程序代碼 裝置或者邏輯804,從而提供並且促進在此描述的實施例的一個或者多個方面。
[0079] 在(包括但並不局限於電子存儲器模塊(RAM)、閃速存儲器、壓縮光碟(CD)、DVD、 磁帶等)的有形介質上創建並且存儲程序代碼時,通常將程序代碼稱為"電腦程式產 品"。通常,優選地位於計算機系統中的處理電路可讀取電腦程式產品介質以由該處理電 路執行。可以利用例如編譯程序或者彙編程序創建該程序代碼以彙編指令,當執行該彙編 指令時,該彙編指令執行本發明的方面。
[0080] 實施例包括分支預測預加載的系統、方法和電腦程式產品。分支預測預加載的 系統包括:耦接到處理電路的指令高速緩存和分支目標緩衝器。配置該處理電路,以執行方 法。該方法包括從指令高速緩存提取指令流中的多個指令;以及對指令流中的分支預測預 加載指令解碼。該方法還包括:由處理電路,根據分支預測預加載指令,確定預測分支指令 的地址;由處理電路,根據分支預測預加載指令,確定預測分支指令的預測目標地址。該方 法還包括:識別分支預測預加載指令中的掩蔽欄位;以及由處理電路,根據該掩蔽欄位,確 定預測分支指令的分支指令長度。根據指示分支預測預加載指令,向分支目標緩衝器預加 載預測分支指令的地址、分支指令長度以及與預測分支指令相關聯的預測目標地址。
[0081] 在實施例中,進一步配置系統的處理電路,以根據掩蔽欄位,確定預測分支指令的 分支類型,並且將該預測分支指令的分支類型提供給分支目標緩衝器。在實施例中,進一步 配置系統的處理電路,以在從分支目標緩衝器的預測分支指令的預測時,根據確定預測分 支指令的分支類型是呼叫分支,保存順序地址,用於返回分支的未來預測。在實施例中,將 順序地址保存到呼叫-返回堆棧,並且根據確定預測分支指令的分支類型是返回分支,作 為目標預測在預測時從呼叫-返回堆棧而非從分支目標緩衝器中的目標地址項檢索順序 地址。在實施例中,根據確定預測分支指令的分支類型是地址模式改變分支,當在分支目標 緩衝器中預測目標地址的預測時,對應於分支類型,設定尋址模式。在實施例中,根據確定 預測分支指令的分支類型是執行指令類型,在分支預測邏輯中將執行指令類型處理為特定 分支類型。
[0082] 在實施例中,進一步配置系統的處理電路,以將預測分支指令的地址確定為與分 支預測預加載指令的地址偏移量,並且將預測目標地址確定為與分支預測預加載指令的相 對偏移量和與基本值的位移中的一個。預測分支指令的地址可以是預測分支指令的開始地 址和結束地址中的一個。在實施例中,進一步配置該系統的處理電路,以向分支目標緩衝器 預加載預測分支指令的地址和與預測分支指令相關聯的預測目標地址,將預測分支指令的 地址的一部分和預測目標地址的一部分存儲到分支目標緩衝器。
[0083] 技術效果和好處包括將分支預測預加載到分支目標緩衝器中。在分支預測預加載 指令中定義分支或者執行式指令的指令長度使能準確預測可變長度指令的支持。將分支或 者執行式指令的類型定義為分支預測預加載指令的一部分允許作為預測與預提取處理的 一部分實現附加類型特定效率。
[0084] 在此使用的術語僅是為了描述特定實施例,且不旨在限制本發明。如在此使用的, 單數形式"一"、"一個"和"該"也旨在包括複數形式,除非上下文另外清楚地指明。還將理 解,當在說明書中使用時,術語"包括"和/或"包含"指明存在所述的特徵、整體、步驟、操 作、元件和/或組件,但不排除存在或附加一個或多個其他特徵、整體、步驟、操作、元件和/ 或組件。
[0085] 所附權利要求書中的所有裝置或步驟加功能元件的相應結構、材料、操作以及等 價物,旨在包括用於結合如特別要求保護的其他所要求保護的元件來執行所述功能的任何 結構、材料或操作。呈現實施例的說明是為了示出和描述的作用,但不是窮盡性的或局限於 所公開的形式的實施例。許多修改和變型對本領域普通技術人員來說是明顯的,且不脫離 本發明的範圍。選擇和描述實施例是為了最佳地解釋本發明的原理和實際應用,並使得本 領域普通技術人員能理解適於考慮的特定用途而具有各種修改的實施例。
[0086] 可以以一種或多種程序設計語言的任意組合來編寫用於執行本發明操作的計算 機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++ 等,還包括常規的過程式程序設計語言一諸如"C"語言或類似的程序設計語言。程序代碼可 以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟體包執行、 部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或伺服器上執行。 在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡--包括區域網(LAN) 或廣域網(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如利用網際網路服務 提供商來通過網際網路連接)。
[0087] 下面將參照根據本發明實施例的方法、裝置(系統)和電腦程式產品的流程圖 和/或框圖描述本發明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖 中各方框的組合,都可以由電腦程式指令實現。這些電腦程式指令可以提供給通用計 算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些計 算機程序指令在通過計算機或其它可編程數據處理裝置的處理器執行時,產生了實現流程 圖和/或框圖中的一個或多個方框中規定的功能/動作的裝置。
[0088] 也可以把這些電腦程式指令存儲在計算機可讀介質中,這些指令使得計算機、 其它可編程數據處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質中的 指令就產生出包括實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的指令 的製造品(article of manufacture) 〇
[0089] 電腦程式指令也可以加載到計算機、其他可編程數據處理設備或者其他裝置 上,以使得在計算機、其他可編程設備或者其他裝置上執行一系列操作步驟,從而產生計算 機實現處理,使得在計算機或者其他可編程設備上執行的指令提供用於實現流程圖和/或 者方框圖的方框或者各方框規定的功能/操作的處理。
[0090] 附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統、方法和計算機程 序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以 代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個 用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所 標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個連續的方框實際上可以 基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的 是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行 規定的功能或動作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的 組合來實現。
【權利要求】
1. 一種用於分支預測預加載的系統,所述系統包括: 指令高速緩存; 分支目標緩衝器;以及 處理電路,耦接到指令高速緩存和分支目標緩衝器,所述處理電路配置為執行方法,所 述方法包括: 從指令高速緩存提取指令流中的多個指令; 解碼指令流中的分支預測預加載指令; 由處理電路根據分支預測預加載指令確定預測分支指令的地址; 由處理電路根據分支預測預加載指令確定預測分支指令的預測目標地址; 識別分支預測預加載指令中的掩蔽欄位; 由處理電路根據所述掩蔽欄位確定預測分支指令的分支指令長度;以及 根據執行分支預測預加載指令,向分支目標緩衝器預加載預測分支指令的地址、分支 指令長度以及與預測分支指令相關的預測目標地址。
2. 根據權利要求1所述的系統,還包括: 由處理電路根據所述掩蔽欄位確定預測分支指令的分支類型;以及 將所述預測分支指令的分支類型提供給分支目標緩衝器。
3. 根據權利要求2所述的系統,還包括: 根據確定預測分支指令的分支類型是呼叫分支,在從分支目標緩衝器的預測分支指令 的預測時,保存順序地址以用於返回分支的未來預測。
4. 根據權利要求3所述的系統,其中將順序地址保存到呼叫-返回堆棧,並且所述系統 還包括: 根據確定預測分支指令的分支類型是返回分支,在預測時從呼叫-返回堆棧而非從分 支目標緩衝器中的目標地址項檢索順序地址作為目標預測。
5. 根據權利要求2所述的系統,還包括: 根據確定預測分支指令的分支類型是地址模式改變分支,當在分支目標緩衝器中預測 目標地址的預測時,對應於分支類型設定尋址模式。
6. 根據權利要求2所述的系統,還包括: 根據確定預測分支指令的分支類型是執行指令類型,在分支預測邏輯中將執行指令類 型處理為特定分支類型。
7. 根據權利要求1所述的系統,還包括: 將預測分支指令的地址確定為與分支預測預加載指令的地址偏移量;以及 將預測目標地址確定為與分支預測預加載指令的相對偏移量和與基本值的位移中的 一個。
8. 根據權利要求7所述的系統,其中預測分支指令的地址是預測分支指令的開始地址 和結束地址中的一個;以及 向分支目標緩衝器預加載預測分支指令的地址和與預測分支指令相關聯的預測目標 地址將預測分支指令的地址的一部分和預測目標地址的一部分存儲到分支目標緩衝器。
9. 一種用於分支預測預加載的計算機實現的方法,所述方法包括: 提取指令流中的多個指令; 解碼指令流中的分支預測預加載指令; 由處理電路根據分支預測預加載指令確定預測分支指令的地址; 由處理電路根據分支預測預加載指令確定預測分支指令的預測目標地址; 識別分支預測預加載指令中的掩蔽欄位; 由處理電路根據該掩蔽欄位確定預測分支指令的分支指令長度;以及 根據執行分支預測預加載指令,向分支目標緩衝器預加載預測分支指令的地址、分支 指令長度以及與預測分支指令相關聯的預測目標地址。
10. 根據權利要求9所述的方法,還包括: 由處理電路根據掩蔽欄位確定預測分支指令的分支類型;以及 將該預測分支指令的分支類型提供給分支目標緩衝器。
11. 根據權利要求10所述的方法,還包括: 根據確定預測分支指令的分支類型是呼叫分支,在從分支目標緩衝器的預測分支指令 的預測時,保存順序地址以用於返回分支的未來預測。
12. 根據權利要求11所述的方法,其中將順序地址保存到呼叫-返回堆棧,並且所述方 法還包括: 根據確定預測分支指令的分支類型是返回分支,在預測時從呼叫-返回堆棧而非從分 支目標緩衝器中的目標地址項檢索順序地址作為目標預測。
13. 根據權利要求10所述的方法,還包括: 根據確定預測分支指令的分支類型是地址模式改變分支,當在分支目標緩衝器中預測 目標地址的預測時,對應於分支類型設定尋址模式。
14. 根據權利要求10所述的方法,還包括: 根據確定預測分支指令的分支類型是執行指令類型,在分支預測邏輯中將執行指令類 型處理為特定分支類型。
15. 根據權利要求9所述的方法,還包括: 將預測分支指令的地址確定為與分支預測預加載指令的地址偏移量;以及 將預測目標地址確定為與分支預測預加載指令的相對偏移量和與基本值的位移中的 一個。
16. -種用於分支預測預加載的電腦程式產品,所述電腦程式產品包括: 有形存儲介質,可由處理電路讀取,並且存儲用於由處理電路執行以用於執行包括如 下的方法的指令: 提取指令流中的多個指令; 解碼指令流中的分支預測預加載指令; 由處理電路根據分支預測預加載指令確定預測分支指令的地址; 由處理電路根據分支預測預加載指令確定預測分支指令的預測目標地址; 識別分支預測預加載指令中的掩蔽欄位; 由處理電路根據該掩蔽欄位確定預測分支指令的分支指令長度;以及 根據執行分支預測預加載指令,向分支目標緩衝器預加載預測分支指令的地址、分支 指令長度以及與預測分支指令相關聯的預測目標地址。
17. 根據權利要求16所述的電腦程式產品,還包括: 由處理電路根據所述掩蔽欄位確定預測分支指令的分支類型;以及 將所述預測分支指令的分支類型提供給分支目標緩衝器。
18. 根據權利要求17所述的電腦程式產品,還包括: 根據確定預測分支指令的分支類型是呼叫分支,在從分支目標緩衝器的預測分支指令 的預測時,將順序地址保存到呼叫-返回堆棧以用於返回分支的未來預測;以及 根據確定預測分支指令的分支類型是返回分支,在預測時從呼叫-返回堆棧而非從分 支目標緩衝器中的目標地址項檢索順序地址作為目標預測。
19. 根據權利要求17所述的電腦程式產品,還包括: 根據確定預測分支指令的分支類型是地址模式改變分支,當在分支目標緩衝器中預測 目標地址的預測時,對應於分支類型設定尋址模式。 根據確定預測分支指令的分支類型是執行指令類型,在分支預測邏輯中將執行指令類 型處理為特定分支類型。
20. 根據權利要求16所述的電腦程式產品,還包括: 將預測分支指令的地址確定為與分支預測預加載指令的地址偏移量;以及 將預測目標地址確定為與分支預測預加載指令的相對偏移量和與基本值的位移中的 一個。
【文檔編號】G06F9/38GK104335168SQ201380028320
【公開日】2015年2月4日 申請日期:2013年5月20日 優先權日:2012年6月14日
【發明者】B.R.普拉斯基, A.瓦西利夫斯基, J.J.博南諾, J.休, M.米特蘭, T.斯萊格爾 申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀