TW201403472A - 最佳化暫存器初始化操作 - Google Patents

最佳化暫存器初始化操作 Download PDF

Info

Publication number
TW201403472A
TW201403472A TW102115293A TW102115293A TW201403472A TW 201403472 A TW201403472 A TW 201403472A TW 102115293 A TW102115293 A TW 102115293A TW 102115293 A TW102115293 A TW 102115293A TW 201403472 A TW201403472 A TW 201403472A
Authority
TW
Taiwan
Prior art keywords
register
value
instruction
given
scratchpad
Prior art date
Application number
TW102115293A
Other languages
English (en)
Other versions
TWI507980B (zh
Inventor
James B Keller
John H Mylius
Conrado Blasco-Allue
Gerard R Williams Iii
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of TW201403472A publication Critical patent/TW201403472A/zh
Application granted granted Critical
Publication of TWI507980B publication Critical patent/TWI507980B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本發明揭示一種用於有效地減小初始化暫存器之延時的系統及方法。一處理器內之一暫存器重命名單元判定在一執行管線級之前是否知曉一經解碼之給定指令將一特定數值寫入於一目的地運算元中。一實例係將一為0之值寫入於其目的地運算元中的一立即移動指令。其他實例亦可適合。若進行了該判定,則將一給定實體暫存器識別符指派至一目的地運算元,其中該給定實體暫存器識別符與該特定數值相關聯,但其並不與一實體暫存器檔案中之一實際實體暫存器相關聯。該給定指令經標記以防止該給定指令行進至一執行管線級。當使用該給定實體暫存器識別符來讀取該實體暫存器檔案時,不存取實際實體暫存器。

Description

最佳化暫存器初始化操作
本發明係關於微處理器,且更特定而言,係關於有效地減小初始化暫存器之延時。
微處理器通常包括重疊之管線級及指令之無序執行。另外,微處理器可支援同時多執行緒化以增加輸送量。此等技術利用原始程式碼中之指令階層平行性(ILP)。在每一時脈循環期間,微處理器針對管線之每一級理想地產生每執行緒之最大數目個(N個)指令的有用執行,其中N為大於一之整數。然而,控制相依性及資料相依性將微處理器之最大輸送量減小至每級N個指令以下。
由條件式控制流程指令引起之控制相依性在條件式分叉處使指令串行化,且沿著原始程式碼之控制流程圖進行聯結。指令之推測式執行用以執行指令之平行執行而不管原始程式碼中之控制相依性。
當指令之運算元取決於在程式次序上較年輕之指令的結果時,資料相依性發生。資料相依性可顯現於直線編碼區段中之後續指令之運算元之間或屬於後續迴圈反覆之指令的運算元之間。在直線編碼中,可能遭遇寫後讀(RAW)、讀後寫(WAR)或寫後寫(WAW)相依性。暫存器重命名用以允許指令之平行執行而不管WAR及WAW相依性。然而,真實相依性或RAW相依性仍保持原樣。因此,用作目的地暫存器且隨後用作源暫存器之架構暫存器引起相關聯原始程式碼區段之 指令執行的串行化。
對架構暫存器之常見RAW相依性的一項實例為使暫存器初始化至特定值,隨後用稍後程式碼使用及/或測試該暫存器。舉例而言,可將特定初始值指派至軟體應用程式中之旗標、計數及設定。初始化暫存器之一種方式為使用立即移動指令(move immediate instruction)。因此,暫存器初始化在程式之執行期間可頻繁地發生,且包括RAW相依性。
鑒於以上內容,需要用於有效地減小初始化暫存器之延時的有效方法及機制。
揭示用於有效地減小初始化暫存器之延時的系統及方法。在一項實施例中,一種處理器包括暫存器重命名單元,該暫存器重命名單元經組態以接收經解碼之指令,且判定經解碼之給定指令是否適合於零循環操作。進行如下判定:在執行管線級之前是否知曉經解碼之給定指令將特定數值寫入於目的地運算元中。實例係將為0之值寫入於其目的地運算元中的立即移動指令。至少其他布林邏輯運算及算術運算亦可適合(qualify)。若進行了該判定,則重命名暫存器單元可將實體暫存器編號指派至目的地運算元,其中實體暫存器編號與特定數值相關聯。此外,實體暫存器編號可不與實體暫存器檔案中之實際實體暫存器相關聯。
暫存器重命名單元內之控制邏輯可標記給定指令以防止該指令行進至處理器管線中。舉例而言,控制邏輯可標記給定移動指令以指示在分派管線級處完成。另外,當實體暫存器檔案接收到重命名暫存器編號作為欲讀取之源運算元時,實體暫存器檔案可傳送特定數值而不存取實際實體暫存器。
在參看以下描述及圖式之後將進一步瞭解此等及其他實施例。
100‧‧‧處理器/處理器核心
102‧‧‧位址選擇邏輯/位址選擇器
104‧‧‧指令快取記憶體(i-cache)
106‧‧‧下一提取預測器
108‧‧‧分支方向預測器
110‧‧‧解碼單元
112‧‧‧控制流程評估邏輯/控制流程評估區塊
114‧‧‧重命名群組內相依性偵測邏輯
116‧‧‧映射器
120‧‧‧暫存器重命名單元
122‧‧‧重命名控制邏輯/重命名控制邏輯及陣列
124‧‧‧零循環初始化邏輯
130‧‧‧自由清單分配器
140‧‧‧分派佇列
142‧‧‧微碼
150‧‧‧排程器
160‧‧‧執行核心
162‧‧‧資料快取記憶體
164‧‧‧實體暫存器檔案
166‧‧‧讀取略過邏輯
170‧‧‧重新排序緩衝器(rob)
172‧‧‧儲存緩衝器
200‧‧‧暫存器檔案識別符/編號
202a‧‧‧識別符
202b‧‧‧識別符
202g‧‧‧識別符
202h‧‧‧識別符
202i‧‧‧識別符
202j‧‧‧識別符
202m‧‧‧識別符
202n‧‧‧預留識別符
202v‧‧‧預留識別符
210‧‧‧架構暫存器編號
212‧‧‧非架構暫存器編號
214‧‧‧預留暫存器編號
300‧‧‧實體暫存器檔案
310‧‧‧解碼器
312‧‧‧讀取解碼器
314‧‧‧讀取解碼器
316‧‧‧寫入解碼器
318‧‧‧字線驅動器
320‧‧‧陣列
330‧‧‧儲存格
332‧‧‧反相器
334‧‧‧反相器
336‧‧‧NMOS電晶體
338‧‧‧NMOS電晶體
340‧‧‧NMOS電晶體
342‧‧‧NMOS電晶體
344‧‧‧NMOS電晶體
346‧‧‧NMOS電晶體
348‧‧‧線
350‧‧‧線
352‧‧‧線
354‧‧‧線
356‧‧‧線
358‧‧‧線
360‧‧‧線
370‧‧‧讀出邏輯及資料驅動器/電路區塊
372‧‧‧讀出資料
380‧‧‧讀取略過邏輯
382‧‧‧讀取暫存器識別符/線
384‧‧‧讀出資料/線
400‧‧‧暫存器重命名
410a‧‧‧指令
410b‧‧‧指令
420a‧‧‧映射表
420b‧‧‧映射表
430a‧‧‧自由清單
430b‧‧‧自由清單
432‧‧‧預留清單
圖1為對零循環暫存器初始化操作執行超純量無序執行之處理器之一項實施例的通用方塊圖。
圖2為實體暫存器檔案編號之一項實施例的通用方塊圖。
圖3為說明實體暫存器檔案之一項實施例的通用方塊圖。
圖4為說明對經轉換之零循環操作進行暫存器重命名之一項實施例的通用方塊圖。
圖5為說明用於產生零循環暫存器初始化操作之方法之一項實施例的通用流程圖。
雖然本發明容易具有各種修改及替代形式,但在圖式中以舉例方式展示了其特定實施例,且將在本文中對其進行詳細描述。然而,應理解,該等圖式及對其之詳細描述並非意欲將本發明限於所揭示之特定形式,而相反,本發明意欲涵蓋屬於附加申請專利範圍所界定的本發明之精神及範疇內的所有修改、等效物及替代例。如貫穿本申請案所使用,詞語「可」以許可之意義(亦即,意謂有可能)而非強制性之意義(亦即,意謂必須)來使用。類似地,詞語「包括」意謂包括(但不限於)。
各種單元、電路或其他組件可描述為「經組態以」執行一或多項任務。在此等內容脈絡中,「經組態以」為廣泛之結構敍述,其大體意謂「具有」在操作期間執行該或該等任務之「電路」。因而,單元/電路/組件可經組態以甚至在單元/電路/組件當前未接通時仍執行任務。一般而言,形成對應於「經組態以」之結構的電路可包括硬體電路。類似地,為了描述之方便起見,各種單元/電路/組件可經描述為執行一或多項任務。此等描述應解譯為包括片語「經組態以」。敍述經組態以執行一或多項任務之一單元/電路/組件明確地不意欲援引35 U.S.C.§ 112第六段對於該單元/電路/組件之解釋。
在以下描述中,闡述眾多特定細節以提供對本發明之透徹理解。然而,一般熟習此項技術者應認識到,可在無此等特定細節之情況下實踐本發明。在一些例子中,未詳細展示熟知電路、結構及技術以避免使本發明混淆。
參看圖1,展示對零循環暫存器初始化操作執行超純量無序執行之處理器100之一項實施例的通用方塊圖。處理器核心100可利用多級管線用於處理指令。儘管以特定次序且以特定管線級來展示功能及控制區塊,但其他組合為可能的且被預期到。此外,功能及控制區塊可佔用一個以上管線級。在大多數狀況下,為易於說明,針對每一功能區塊展示單一管線級。
可將軟體應用程式之指令載入至處理器100內之指令快取記憶體(i-cache)104中。軟體應用程式可能已儲存於外部磁碟記憶體、外部DRAM及/或多個周邊器件中之一者中。一般而言,當軟體程式設計師撰寫應用程式以根據演算法或方法執行工作時,程式設計師利用變數來參考臨時及結果資料。此資料利用電腦記憶體中所分配之空間。作業系統為軟體應用程式分配記憶體之區。
在處理應用程式期間,可將資料自所分配之記憶體區載入至資料快取記憶體162中。隨後,實體暫存器檔案164內之一或多個架構暫存器用以載入並儲存臨時及結果資料。架構暫存器為架構上可見的。因此,軟體程式設計師及/或編譯器可識別軟體應用程式內之架構暫存器。架構暫存器與給定指令集架構(ISA)相關聯。處理器100中之硬體包括用於處理根據給定ISA之指令的電路。在各種實施例中,可選擇ARM指令集架構用於給定ISA。或者,可選擇Alpha、PowerPC、SPARC、MIPS、x86或任何其他ISA。
在各種實施例中,給定ISA可用以選擇用於宣告並分配記憶體區 的方式。給定ISA可進一步判定用於處理器重設之步驟,及用於在操作模式(例如,監督模式、使用者模式)之間切換的步驟。此等步驟及使用者應用程式可使用給定ISA內之一或多個指令來將架構暫存器重設或初始化至特定數值。此外,此等步驟及使用者應用程式可重設暫存器檔案之任何部分,該暫存器檔案可包括比架構上可見之暫存器的數目大的數目個暫存器。在暫存器檔案之此重設完成之後,該重設操作可使得處理器以可預測方式運轉。通常,狀態機用以插入將特定數值寫入至暫存器檔案內之每一暫存器之操作。在一些實施例中,如下文將描述,此狀態機可經移除並由不同邏輯替換。關於將特定值寫入至暫存器之操作,在一些實施例中,立即移動指令可用以將特定數值移動至暫存器檔案內的給定暫存器中。特定數值之一項實例為值零。其他算術指令亦可用以執行重設或初始化。下文展示重設藉由「r1」指示之給定暫存器的一些實例。
mov r1,0 //r1←0
and r1,r1,0 //r1=r1 AND 0
xor r1,r1,r1 //r1=r1 XOR r1
sub r1,r1,r1 //r1=r1-r1
mul r1,r1,0 //r1=r1 x 0
在以上實例中,首先列出目的地運算元,隨後為源運算元。然而,相反約定為可能的,且被預期到。此外,對於大部分指令,列出兩個源運算元。然而,在特定架構暫存器既為目的地運算元又為源運算元之狀況下,可列出一個源運算元,其中目的地架構暫存器編號暗示為第二源運算元。在以上實例中,中間值展示為無符號之數字。在其他狀況下,符號可伴隨數字。舉例而言,在ARM ISA中,中間值可使用前綴「#」,諸如「#0」而非「0」。以上指令意欲為一偽碼實例,且語言無從驗證。
如自以上實例碼陳述可見,多個指令類型可用以藉由諸如值零之特定數值來初始化暫存器r1。以上指令類型中之一些相較於其他指令類型可具有較低延時。在一項實例中,邏輯互斥或(XOR)及與(AND)運算可在其他指令類型之前完成。算術MUL(或稱乘法)指令可具有以上指令類型之最長延時,且因此可能不被選擇用於暫存器初始化。無關於指令類型,顯著百分數之用以實施軟體程式設計師之應用程式的組合語言指令可包括暫存器初始化陳述式。另外,可能存在不用於初始化之軟體應用程式陳述式,但在陳述式之實際執行之前可能已知曉結果。以上展示之算術乘法指令為一項實例。減小此等類型之陳述式的延時可增加效能。
處理器100可包括零循環初始化邏輯124,該零循環初始化邏輯124在與特定經解碼指令相關聯之執行管線級之前判定特定指令將給定數值寫入至其目的地運算元中。舉例而言,當對指令「mov r1,0 //r1←0」進行解碼時,知曉指令為立即移動類型,且指令以數值零寫入目的地運算元r1。數值零係在立即移動指令之中間欄位中。回應於此判定,零循環初始化邏輯124可指導重命名控制邏輯122將給定重命名暫存器編號指派至目的地運算元,其中給定重命名暫存器編號係與給定數值相關聯。
繼續將暫存器初始化指令實施為零循環操作的情況,實體暫存器檔案164可包括多個實體暫存器,每一實體暫存器藉由相關聯之重命名暫存器編號來識別。然而,指派至以上立即移動指令之目的地運算元之給定重命名暫存器編號可能不與多個實體暫存器中之任一者相關聯。確切而言,給定重命名暫存器編號可能與中間欄位中之數值相關聯。在此狀況下,數值為零。
在一項實施例中,實體暫存器檔案164可具有8位元索引,該8位元索引可用以唯一地識別256個實體暫存器中的一者。在其他實施例 中,可使用不同寬度之索引及不同數目個實體暫存器。此等其他值為可能的,且被預期到。在利用8位元索引之實施例中,實體暫存器檔案可含有少於256個之實際實體暫存器。舉例而言,實體暫存器檔案164可包括120個實體暫存器而非256個實體暫存器。此等120個實體暫存器可使用8位元索引而用按十進位在0與119之間或呈某其他格式之值來識別。按十六進位格式,120個實體暫存器可藉由8位元索引而用自h00至h77之值來識別。在各種實施例中,8位元索引255可能不與實體暫存器檔案164內之實體暫存器中的任一者相關聯。確切而言,8位元索引255或hFF可用以指示數值0。在其他實施例中,除hFF外之索引可經選擇以表示給定數值,且亦可表示除0外之數值。
在各種實施例中,可將以上立即移動指令中係r1之目的地運算元重命名為P255。已知曉,目的地運算元被寫入以值零,或以其他方式對應於為零之值。另外,零循環初始化邏輯124可標記第一指令以防止第一指令行進於處理器之管線中。舉例而言,零循環初始化邏輯124可標記立即移動指令以指示在分派管線級處完成。在此等實施例中,電力消耗在處理器100內可得以減小,此係由於立即移動指令可能不行進越過分派管線級。此外,其他指令之輸送量可增加,此係由於立即移動指令在原本將使用之分派管線級之後並不利用資源(佇列、執行單元、分級觸發器(staging flop),等等)。再次,在其他實施例中,可針對索引之寬度及藉由索引識別之實體暫存器的數目使用其他值。此外,用以識別實體暫存器之索引之值的範圍可能不包括最小集合之值或連續範圍之值。
在一些實施例中,重命名控制邏輯122可略過重命名暫存器編號P255至一或多個指令,該一或多個指令既相較於給定立即移動指令在程式次序上為較年輕的且亦具有對立即移動指令之資料相依性。另外,回應於接收到重命名暫存器編號P255作為源運算元進行讀取,實 體暫存器檔案164可在不讀取多個實體暫存器中之任一者的情況下輸出數值零。實體暫存器檔案164內之讀取略過邏輯166可偵測到重命名暫存器編號P255被提供為源運算元以由相較於立即移動指令在程式次序上較年輕之指令讀取,其中此較年輕指令依賴於立即移動指令。作為回應,不存取實際實體暫存器。確切而言,讀取略過邏輯166可對重命名暫存器編號P255進行解碼,且判定數值零被傳送至讀出資料埠。請注意,雖然將暫存器檔案內之邏輯描述為回應於接收到暫存器編號P255而傳回諸如零之給定值,但在其他實施例中,不在暫存器檔案內或不以其他方式為暫存器檔案之部分的邏輯可偵測暫存器編號並提供給定值。舉例而言,在一些實施例中,諸如作為管線資料路徑之部分包括之略過多工器的邏輯可偵測暫存器編號,且作為回應而強加給定值(例如,零)。在此等實施例中,暫存器檔案自身可不知曉與特定暫存器編號相關聯的特殊特徵。眾多此等實施例為可能的,且被預期到。
立即移動指令「mov r1,0 //r1←0」之以上步驟亦可用於其他指令,該等其他指令將在執行管線級之前已知之特定數值寫入目的地運算元中。下文中展示重設架構暫存器之先前實例及額外實例。
mov r1,0 //r1←0
and r1,r1,0 //r1=r1 AND 0
xor r1,r1,r1 //r1=r1 XOR r1
零循環初始化邏輯124可在與特定經解碼指令相關聯之執行管線級之前判定特定指令將給定數值寫入至其目的地運算元中。在一項實施例中,如早先所描述,邏輯124判定指令具有用於立即移動指令之運算碼,且立即值係特定數值。在其他實施例中,零循環初始化邏輯124判定指令具有用於布林邏輯運算(諸如AND或XOR)之運算碼。此外,邏輯124自源運算元判定為0之結果將在稍後執行管線級期間被寫 入於目的地運算元中。舉例而言,布林邏輯AND運算之為0的源運算元產生為0之結果。
在另一實例中,布林邏輯XOR運算之兩個相同源運算元產生為0之結果。因此,可使用上文所描述之關於藉由特定重命名暫存器編號(諸如P255)進行暫存器重命名的類似步驟,該特定重命名暫存器編號並不與實際實體暫存器相關聯。同樣,當實體暫存器檔案164接收到重命名暫存器編號P255作為源運算元進行讀取時,實體暫存器檔案164可傳送為0之值而不存取實體暫存器。類似於以上內容,可使用不同於P255之不與實際實體暫存器相關聯之其他可用實體暫存器編號。
在其他實施例中,零循環初始化邏輯124判定經解碼之指令具有用於算術運算之運算碼,且自源運算元判定為0之結果將在稍後執行管線級期間被寫入於目的地運算元中。舉例而言,對兩個相同源運算元之算術減法運算產生為0之結果。類似地,對為0之源運算元之算術乘法運算產生為0之結果。因此,可使用上文所描述之關於藉由特定重命名暫存器編號(諸如P255)進行暫存器重命名的類似步驟,該特定重命名暫存器編號並不與實際實體暫存器相關聯。同樣,當實體暫存器檔案164接收到重命名暫存器編號P255作為源運算元進行讀取時,實體暫存器檔案164可傳送為0之值而不存取實體暫存器。下文中再次展示此等算術運算之實例:sub r1,r1,r1 //r1=r1-r1
mul r1,r1,0 //r1=r1x0
mov r2,1 //r2←1
在其他實施例中,零循環初始化邏輯124可判定特定數值可為另一值,諸如一。舉例而言,上文展示之最後指令為將數值一寫入至目的地運算元「r2」中的立即移動指令。在一項實施例中,可為數值0預留重命名暫存器編號P255。可為數值1預留諸如P254之另一可用重 命名暫存器編號。因此,可使用上文所描述之關於藉由特定重命名暫存器編號進行暫存器重命名的類似步驟,該特定重命名暫存器編號並不與實際實體暫存器相關聯。
在以上實例中,目的地運算元r2可重命名為指示數值1的重命名暫存器編號P254。同樣,當實體暫存器檔案164接收到重命名暫存器編號P254作為源運算元進行讀取時,實體暫存器檔案164可傳送為1之值而不存取實體暫存器。在繼續關於暫存器初始化指令及其他特定指令至零-循環運算之轉換的其他細節之前,提供電腦系統100之組件的進一步描述。
可自指令快取記憶體104提取軟體應用程式之一或多個指令。該一或多個指令可藉由由位址選擇邏輯102傳送之位址來指示。若不存在指令快取記憶體遺漏,則每時脈循環可自指令快取記憶體104提取多個指令。可藉由下一提取預測器106來遞增位址。分支方向預測器108可耦接至稍後管線級中之下一提取預測器106及控制流程評估邏輯112中的每一者。預測器108可預測自執行下一循續指令改變指令串流之流程的指令之資訊。
解碼單元110對多個所提取指令之運算碼進行解碼。或者,可將指令分成微指令或微運算碼。如本文中所使用,術語「指令」及「微運算碼」為可互換的,此係由於本發明可供利用任一實施的架構使用。在一項實施例中,控制流程評估區塊112可變更位址選擇器102中之指令的提取。舉例而言,與無條件分支運算碼相關聯之絕對位址值可被發送至位址選擇器102。
重命名群組內相依性偵測邏輯114可找尋由解碼單元110解碼之指令之間的相依性。群組內指令可包括來自一或多個時脈循環或管線級的經解碼指令。可偵測到諸如讀後寫(WAR)、寫後寫(WAW)及寫後讀(RAW)之相依性。可產生指示指令之間的相依性之相依性向量。映射 器116可使用諸如可用並行性、相依性鏈之嚴重度及通信損失之因素來在分散式硬體資源之間劃分指令。
除指令至超純量微架構內之執行單元的無序發佈外,處理器100亦可執行暫存器重命名以增加輸送量。處理器100可包括大於諸如實體暫存器檔案164之整數及浮點架構可見暫存器集合的實體暫存器集合。使用硬體,處理器100動態地重命名用於目的地運算元之架構暫存器識別符。回應於判定源運算元具有與經重命名之目的地運算元相同的架構暫存器識別符,處理器100可將用以重命名目的地運算元之相同實體暫存器識別符指派給源運算元。可在指令解碼之後發生重命名。
當對目的地運算元進行重命名時,可使用來自自由清單分配器130之新實體暫存器編號。或者,可使用並不與實體暫存器檔案164內之多個實體暫存器中之任一者相關聯的未界定之實體暫存器編號。確切而言,此實體暫存器編號係與特定數值相關聯。當提交指令時,儲存指令目的地值之實體暫存器變為傳回至自由清單分配器130內之重命名暫存器編號之自由清單的候選者。然而,若未界定之實體暫存器編號用於目的地運算元,則無重命名暫存器編號先前在針對此指令之重命名管線級期間自自由清單被移除。類似地,無重命名暫存器編號在此指令之提交及淘汰期間被添加至自由清單。
當硬體藉由實體暫存器識別符重命名架構暫存器識別符時,硬體將映射儲存於諸如映射表之資料結構中。如本文中所使用,架構暫存器或實體暫存器之識別符亦可被稱作編號。因此,架構暫存器識別符亦可被稱作架構暫存器編號。類似地,實體暫存器識別符可被稱作實體暫存器編號。用以重命名架構暫存器編號之實體暫存器編號亦可被稱作重命名暫存器編號。
暫存器重命名單元120可包括重命名控制邏輯及陣列122以及零 循環初始化邏輯124。暫存器重命名單元120可判定哪些實體暫存器編號用以重命名在指令內之目的地運算元及源運算元兩者中使用的架構暫存器編號。暫存器重命名單元可自自由清單分配器130、重命名控制邏輯122內之重命名映射表或零循環初始化邏輯124選擇候選實體暫存器編號。
暫存器重命名單元可判定給定指令適合被轉換成如早先所描述之零循環操作。暫存器重命名單元120可向目的地運算元指派與特定數值相關聯且不與實體暫存器檔案164內之實際實體暫存器相關聯的重命名暫存器編號。另外,暫存器重命名單元120可以防止給定指令繼續指令執行之方式標記該指令。舉例而言,暫存器重命名單元120可將移動指令標記為在分派管線級處完成。
在已解碼並重命名了指令之後,可在分派佇列140中分配相關聯之項目。指令及相關聯之經重命名的識別符、程式計數器(PC)值、相依性向量、對完成之標記等等可經發送至分派佇列140,且稍後發送至排程器150。可偵測(諸如藉由執行核心160)各種異常。實例包括對記憶體存取之保護異常、無位址轉譯,等等。異常可使得對應異常處置常式諸如由微碼142來執行。
排程器150可對指令進行排程以供在執行核心160中執行。當運算元可用且硬體資源亦可用時,可將指令自排程器150無序地發佈至執行核心160內之功能單元中的一者。排程器150可在藉由映射表或自運算元略過邏輯轉譯經重命名之識別符之後自實體暫存器檔案164讀取其源運算元。當使用與特定數值相關聯但不與實際實體暫存器相關聯之特定重命名暫存器編號時,則讀取略過邏輯166可提供特定數值。在此狀況下,可不存取任何實際實體暫存器。可將源運算元提供至執行核心160。
執行核心160可包括載入/儲存單元。載入/儲存單元可直接或經 由重新排序緩衝器(rob)170連接至資料快取記憶體(未展示)及儲存緩衝器172。處理器100可包括針對指令快取記憶體104及資料快取記憶體中之每一者的轉譯後備緩衝器(TLB),以在執行快取記憶體存取時避免執行完整記憶體轉譯的成本。儲存緩衝器172可儲存對應於儲存指令的位址。重新排序緩衝器170可自執行核心160接收結果。此外,結果可被略過至先前管線級以將資料轉遞至已在管線中的相依指令。重新排序緩衝器170可確保指令之按次序提交及淘汰。
參看圖2,展示包括暫存器檔案識別符或編號200之表之一項實施例的通用方塊圖。在一項實施例中,暫存器編號200為識別可用重命名暫存器編號以用於暫存器重命名的編號之循序清單。在替代性實施例中,暫存器編號不需要為循序的。在一項實施例中,暫存器編號200包括用於實際實體暫存器之識別符202a至202m及不識別實際實體暫存器之預留識別符202n至202v兩者。舉例而言,暫存器編號202a可具有識別符「0」,實體暫存器編號202b可具有識別符「1」,等等。
暫存器編號202a至202m可用於暫存器檔案,該暫存器檔案包括架構實體暫存器及非架構(推測式)實體暫存器。架構暫存器可具有架構上可見之識別符。非架構(推測式)暫存器之識別符可係非架構上可見的。在一些實施例中,架構實體暫存器及非架構(推測式)實體暫存器兩者之實體暫存器在暫存器檔案內可彼此混雜。可接著使用一映射機制來判定給定架構暫存器在暫存器檔案內之位置。舉例而言,具有識別符r7之給定架構暫存器可被映射至具有識別符P23的非架構(推測式)暫存器。在稍後時間,暫存器r7可能被映射至諸如P12之不同非架構(推測式)暫存器。
在一項實施例中,給定實體暫存器檔案可包括120個實體暫存器,且與實體暫存器檔案相關聯之給定指令集架構(ISA)可具有35個架構上可見之暫存器。在此狀況下,暫存器檔案除35個架構上可見之 暫存器之外還包括85個實體暫存器。在此實例中,與85個實體暫存器相關聯之暫存器編號包括於非架構暫存器編號212中。在一項實例中,架構及非架構(推測式)實體暫存器編號202a至202m可表示連續重命名暫存器編號0至119或h0至h77。再次,架構暫存器編號210及非架構暫存器編號212係與實際實體暫存器相關聯。
在一項實施例中,8位元索引可用以存取實體暫存器檔案。在此狀況下,索引可支援存取最大256個實體暫存器。然而,歸因於電力消耗、晶粒上面積(real estate)約束、微型架構模擬及/或其他因素,實體暫存器檔案可經設定大小以小於最大之索引支援大小。在一項實施例中,儘管實體暫存器檔案小於所支援之索引大小,但仍可使用原本可能不與實際實體暫存器相關聯的一或多個索引。如早先所描述,不與實際實體暫存器相關聯之給定重命名暫存器編號可與特定數值相關聯。在以上實例中,索引120至255(例如,對應於暫存器編號202n至202v)並不識別實際實體暫存器。因此,此等可用重命名暫存器編號可用以重命名對於藉由特定數值在執行管線級之前進行寫入為已知的目的地運算元。舉例而言,實體暫存器編號255或hFF可係與數值0相關聯。實體暫存器編號254或hFE可係與數值1相關聯。儘管實體暫存器編號呈現為具有在0與藉由多位元索引表示之最大值之間的範圍之連續值,但在預留暫存器編號214內之實體暫存器編號與數值的其他組合為可能的,且被預期到。
現轉至圖3,展示實體暫存器檔案300之一項實施例的通用方塊圖。如圖所示,實體暫存器檔案300包括陣列320、多個解碼器310、讀出邏輯及資料驅動器370,及讀取略過邏輯380。陣列320包括多個儲存格,其中每一儲存格330可儲存相關聯暫存器之資訊位元。資訊可包括對應於運算元之狀態資訊及資料。關於處理器之微型架構,實體暫存器檔案300為暫存器之大集區。如早先所描述,此等暫存器之 一部分為對於軟體程式設計師及編譯器可見之架構暫存器。其餘暫存器可為在暫存器重命名程序期間使用之非架構暫存器。
如在圖3中可看出,實體暫存器檔案300含有許多電路,且對實體暫存器檔案300之存取可消耗可觀量之電力。此外,存取可包括接收到相關聯輸出或回應之前的可觀延遲。然而,對於某些讀取操作,讀取略過邏輯380可在不使用解碼器310內之電路、字線驅動器318、陣列320及讀出邏輯370情況下提供讀出資料384。舉例而言,回應於讀出略過邏輯380接收到識別不與實際實體暫存器相關聯但與特定數值相關聯之預留實體暫存器編號的讀取暫存器識別符382,讀出略過邏輯380在藉由讀出資料372指示之輸出線上提供特定數值。不使用解碼器310內之電路、字線驅動器318、陣列320及讀出邏輯370。因此,減小了針對此類型之存取的電力消耗及延時兩者。
在操作期間,實體暫存器檔案300可接收讀取暫存器識別符382。讀取暫存器識別符382可為用於讀取操作之源運算元或寫入操作之目的地運算元的重命名暫存器編號(實體暫存器編號)。解碼器310及字線驅動器318可接收指示存取係針對讀取操作抑或寫入操作的控制信號(未圖示)。另外,解碼器310及字線驅動器318可經由讀取略過邏輯380在線382上接收讀取暫存器識別符。或者,解碼器310及字線驅動器318可在線382上直接接收讀取暫存器識別符。然而,讀取略過邏輯380可將控制信號發送至解碼器310及字線驅動器318,從而判定此電路是否產生有效輸出以發送至陣列320。舉例而言,若讀取略過邏輯380判定線382上之讀取暫存器識別符對應於零循環暫存器初始化操作,則邏輯380可防止組件310至370內之電路被用於存取。確切而言,邏輯380在線384上提供相關聯讀出資料。
陣列320通常實施為具有專用讀取及寫入埠之晶粒上靜態隨機存取記憶體(RAM)。儲存格330之一個實施說明於圖3中。通常,解碼器 312至316中之每一者包括一系列布林邏輯AND閘,該等布林邏輯AND閘驅動字線驅動器318內之適當字線邏輯。在所展示之實施例中,解碼器310包括兩個讀取解碼器312及314,以及一個寫入解碼器316。因而,陣列320內之給定儲存格330包括係線358上之字線0及線360上之字線1的兩個讀取字線。另外,儲存格330包括係線350上之讀取埠0及線352上之讀取埠1的兩個讀取埠。類似地,儲存格330包括線356上之單一寫入字線。在其他實施例中,可使用不同數目個讀取解碼器、讀取埠、寫入解碼器及寫入字線。
如圖所示,每一儲存格330具有用於將資訊儲存於儲存格330內之背對背反相器332及334。反相器332及334中之每一者的輸出可提供儲存格之相關聯位元值或位元值之經反相型式。邏輯高值可等於電力基準之值。邏輯低值可等於接地基準之值。
在寫入操作期間,確證寫入字線在針對特定列之線356上為邏輯高值。字線驅動器318確證寫入字線。適當資料值藉由區塊370中之資料驅動電路置於線348之寫入位元0及線354上之寫入位元1中的每一者上。此等值使得繫結至該對反相器332及334之兩個節點中的一者經由包括NMOS電晶體340及342之電晶體堆疊或包括NMOS電晶體344及346的電晶體堆疊放電至邏輯低值。
當讀取操作並未由讀取略過邏輯380進行處置時,使用組件310至370內之電路。在此讀取操作期間,確證線358及360上之讀取字線中的一者或兩者為邏輯高值。接通NMOS電晶體336及338中之一者或兩者。因而,該對反相器332及334儲存之狀態被提供至線350及352上之讀取埠中的一者或兩者。線350及352上之值被提供至電路區塊370中的讀出邏輯。此讀出邏輯可包括鎖存器、正反器及感測放大器中的一或多者。如自實體暫存器檔案300之方塊圖及電路描述可看出,當讀取略過邏輯380能夠提供用於零循環暫存器初始化操作之讀出資料 時,可避免與電路組件310至370相關聯的電力消耗。此外,可減小讀取操作之延時。
現轉至圖4,展示說明對零循環暫存器初始化操作進行暫存器重命名400之一項實施例的通用方塊圖。鋪開迴圈之簡化實例包括指令410a。在此實例中,目的地運算元在指令記憶符號(mnemonic)之後被首先列出,隨後為一或多個源運算元。暫存器使用「r」繼之以暫存器識別符之通用命名法。舉例而言,暫存器1藉由「r1」表示。下文中展示用以藉由指令410a導出鋪開程式碼之原始迴圈:mov r1,0
mov r2,1
mov r3,10
xor r4,r4,r4
mov r5,0
迴圈:add r1,r1,r2
add r4,r4,r3
add r5,r1,r5
add r2,r2,1
sub r3,r3,1
jnz loop
儘管此處使用迴圈,但迴圈對於判定暫存器初始化操作可為零循環暫存器初始化操作為不必要的。此判定及零循環操作之後續產生可用於各種類型之程式碼。指令410a利用標註為r1至r5之五個架構暫存器。此等實體暫存器編號係與實際實體暫存器相關聯。指令410a意欲為一偽碼實例,且語言無從驗證。映射表420a大體展示用於儲存架構暫存器編號與實體暫存器編號之間的映射之資料結構。
自由清單430a展示用於指示可用於重命名用途之非架構實體暫存器編號的資料結構。此等實體暫存器編號亦與實際實體暫存器相關聯。在此實例中,存在使用「p」繼之以暫存器識別符之通用命名法的14個實體暫存器名稱。自由清單430a展示,實體暫存器p1至p14中之每一者可用於暫存器重命名。
預留清單432展示至少一個實體暫存器編號用於重命名用途之分組。在此實例中,存在使用「p」繼之以暫存器識別符之通用命名法的4個實體暫存器名稱。在此實例中,此等暫存器識別符相較於自由清單430a中之實體暫存器名稱編號較高。不同於自由清單430a中之實體暫存器名稱,預留清單432中之每一實體暫存器名稱中之每一者並不與實際實體暫存器相關聯。確切而言,預留清單432中之實體暫存器名稱係與特定數值相關聯。舉例而言,實體暫存器名稱p15可與數值0相關聯。類似地,實體暫存器名稱p16可與數值1相關聯。
在一項實例中,4位元索引可用以識別實體暫存器編號。因此,16個相異實體暫存器編號可由諸如實體暫存器編號p1至p16之4位元索引來識別。然而,在實體暫存器檔案中可存在僅14個實際實體暫存器。現代處理器使用比此實例中提供之編號大的編號。此簡化實例係用於說明性用途。在諸如r1至r5之5個架構暫存器情況下,對於前五個實體暫存器名稱p1至p5可發生一對一重命名。存在9個之較多實體暫存器。因此,實體暫存器名稱p6至p14為非架構實體暫存器名稱,但每一者仍與實際實體暫存器相關聯。係p15及p16之重命名之2個實體暫存器名稱可用以表示特定數值。在此實例中,數值分別為0及1。
參看指令410b,此等指令與指令410a相同,然而,已針對指令中之每一者發生暫存器重命名。重命名程序可重命名一給定管線級中之一或多個指令。每管線級之任何數目個指令可經選擇以進行同時處理。映射表420b儲存指令中之每一者的映射。映射表420b展示針對指 令中之每一者的架構暫存器編號及實體暫存器編號與預留暫存器編號之間的所儲存映射。自由清單430b展示,實體暫存器p7至p14中之每一者在已重命名了指令410b中之每一者之後仍為可用的。實體暫存器p1至p6中之每一者已用以重命名指令410b中的架構暫存器r1至r5。
預留清單432展示,預留實體編號p15至p16中之每一者在已重命名了指令410b中之每一者之後仍為可用的。然而,映射表420b展示,預留實體編號p15及p16中之每一者已用以重命名架構暫存器r1至r5中的一或多者。預留實體編號p15至p16中之每一者係與數值而非實際實體暫存器相關聯。因此,預留實體編號p15至p16中之每一者對於重命名用途並不自可用改變至不可用。預留實體編號p15至p16中之任何給定一者可用於重命名第一指令中之第一架構暫存器,隨後用以重命名較年輕第二指令中的第二架構暫存器,儘管第一指令可能尚未被提交。
查看指令410b,第一指令適合被轉換成零循環暫存器初始化操作。此mov指令為立即移動操作,且將數值0寫入至係暫存器r1的目的地運算元中。預留實體暫存器編號p15係與數值0相關聯。因此,將暫存器r1重命名為p15。此映射展示於映射表420b中。此mov指令可經標記以防止其行進至處理器中的執行管線級。舉例而言,mov指令可被標記為在分派管線級處完成。在此等實施例中,電力消耗在處理器內可得以減小,此係由於mov指令可能不行進越過分派管線級。此外,其他指令之輸送量可增加,此係由於mov指令並不利用分派管線級之後的原本將使用的多個資源。另外,自由清單430b之大小增加,此係由於實體暫存器p1至p14中之每一者仍可用於暫存器重命名。增加之自由清單大小亦可有助於效能改良。
重命名邏輯可將預留之實體暫存器編號p15指派至源運算元,該源運算元具有與相較於此第一mov指令在程式次序上較年輕之指令中 之暫存器r1相同之識別符。可發生實體暫存器編號p15之此略過,直至較年輕指令使用暫存器r1作為對於藉由數值0進行寫入不知曉的目的地運算元。當此等較年輕指令針對重命名為p15之源運算元存取實體暫存器檔案時,實體暫存器檔案內之讀取略過邏輯可在資料輸出線上傳送數值0。在對應於重命名為p15之源運算元的讀取操作期間可不存取實際實體暫存器。
類似地,第二指令適合被轉換成零循環暫存器初始化操作。此mov指令為立即移動操作,且將數值1寫入至係暫存器r2的目的地運算元中。預留實體暫存器編號p16係與數值1相關聯。因此,將暫存器r2重命名為p16。此映射展示於映射表420b中。此第二mov指令可經標記以防止其行進至處理器中的執行管線級。類似於上文所論述之針對暫存器r1的重命名,可獲得諸如減小之電力消耗及增加之指令輸送量的各種益處,此係由於第二mov指令並不行進通過執行管線級。
重命名邏輯可將預留之實體暫存器編號p16指派至源運算元,該源運算元具有與相較於此第二mov指令在程式次序上較年輕之指令中之暫存器r2相同之識別符。可發生實體暫存器編號p16之此略過,直至較年輕指令使用暫存器r2作為對於藉由數值1進行寫入不知曉的目的地運算元。當此等較年輕指令針對重命名為p16之源運算元存取實體暫存器檔案時,實體暫存器檔案內之讀取略過邏輯可在資料輸出線上傳送數值1。在對應於重命名為p16之源運算元的讀取操作期間可不存取實際實體暫存器。
第三指令為立即移動操作,但在此實例中,其並不適合被轉換成零循環暫存器初始化操作。第三指令將數值10寫入至暫存器r3中。在此實例中,預留實體暫存器編號p15至p93皆不與數值10相關聯。因此,暫存器r3重命名為實體暫存器編號p1。此映射展示於映射表420b中。
第四指令為布林邏輯XOR運算。源運算元中之每一者具有係r4之相同架構暫存器名稱。因此,已知曉,結果為0,且藉由數值0對目的地運算元進行寫入。有時,軟體程式設計師可能有意地使用布林邏輯XOR運算來重設給定暫存器而非使用立即移動運算。在一些硬體實施中,已知曉,布林邏輯XOR運算相較於立即移動運算具有較小延時。對於第四指令,目的地運算元具有與源運算元相同之架構暫存器名稱,但指令適合於超出此特性範圍之零循環操作。預留實體暫存器編號p15係與數值0相關聯。因此,將暫存器r4重命名為p15。此映射展示於映射表420b中。此外,布林邏輯XOR指令亦可經標記以防止其行進至處理器中的執行管線級。可如早先關於用於第一mov指令之預留實體暫存器p15所描述而發生在實體暫存器檔案之存取期間略過經重命名之暫存器編號及讀取略過邏輯之使用。
第五指令適合被轉換成零循環暫存器初始化操作。此mov指令為立即移動操作,且將數值0寫入至係暫存器r5的目的地運算元中。早先針對第一mov指令描述之重命名、標記、略過及實體暫存器檔案存取步驟此處適用於此第五指令。
第六指令為算術ADD運算。此指令並不適合被轉換成零循環操作。源運算元r1及r2中之每一者歸因於對映射表420b之存取及重命名值的略過而重命名為p15及p16。目的地運算元重命名為p2。對於第七至第十指令中之每一者,採用與第六指令之步驟類似的步驟。第七至第十指令皆不適合被轉換成零循環操作。
現參看圖5,展示用於產生零循環操作之方法500之一項實施例的通用流程圖。在區塊502中,與實際實體暫存器不相關聯之給定暫存器識別符經選擇以對應於特定數值(例如,經指派以表示特定數值)。若已到達最後特定數值(條件區塊504),則在區塊506中,可處理程式指令。可編譯指令,自記憶體提取指令,對指令進行解碼並執行 指令。出於論述之目的,以特定次序展示此實施例中之步驟。然而,在其他實施例中,一些步驟可以不同於所展示之次序的次序而發生,可同時執行一些步驟,一些步驟可與其他步驟組合,且一些步驟可不存在。
解碼之後,可針對適合數值(qualified numerical value)將給定指令判定為暫存器初始化操作。可檢查運算碼及源運算元以作出此判定。控制邏輯可在與特定經解碼指令相關聯之執行管線級之前判定特定指令將適合數值寫入至其目的地運算元中。在一項實施例中,邏輯判定指令具有用於立即移動指令之運算碼,且立即值係適合數值。
在一些實施例中,一或多個適合數值中之一者為值0。在此狀況下,控制邏輯可判定指令具有用於布林邏輯運算(諸如,AND或XOR)之運算碼。此外,邏輯自源運算元判定為0之結果將在稍後執行管線級期間被寫入於目的地運算元中。舉例而言,布林邏輯AND運算之為0的源運算元產生為0之結果。類似地,布林邏輯XOR運算之兩個相等源運算元產生為0之結果。另外,控制邏輯可判定經解碼之指令具有用於特定算術運算之運算碼,且源運算元之特定值可使得為0之結果在稍後執行管線級期間被寫入至目的地運算元中。舉例而言,對兩個相同源運算元之算術減法運算產生為0之結果。類似地,對為0之源運算元之算術乘法運算產生為0之結果。
對於判定在稍後執行管線級中將為0之結果寫入於目的地運算元中之以上狀況中的至少每一者,可使用早先關於藉由並不與實際實體暫存器相關聯之特定重命名暫存器識別符進行之暫存器重命名所描述的類似步驟。若針對適合數值並不將給定指令判定為暫存器初始化操作(條件區塊508),則方法500之控制流程可返回至區塊506。舉例而言,給定指令之源運算元及目的地運算元可藉由與實體暫存器檔案中之實際實體暫存器相關聯的重命名暫存器識別符來重命名。程式指令 之處理繼續。
若針對適合數值將給定指令判定為暫存器初始化操作(條件區塊508),則在區塊510中,目的地架構暫存器識別符可藉由指派給適合數值之暫存器識別符來重命名。此暫存器識別符可能不與實體暫存器檔案中之實際實體暫存器相關聯。在稍後管線級中,當實體暫存器檔案接收此特定重命名暫存器識別符作為源運算元以讀取時,實體暫存器檔案可在不存取實際實體暫存器情況下傳送適合數值之值。在一項實施例中,適合數值為零。然而,作為適合值之其他數值為可能的,且被預期。在區塊512中,暫存器初始化操作可經標記以防止其行進於處理器管線中。舉例而言,操作可被標記為在分派管線級處完成。如上文所論述,電力消耗可在處理器內得以減小,此係由於暫存器初始化操作並不行進通過管線。此外,其他指令之輸送量可增加,此係由於暫存器初始化操作並不利用管線之稍後級中的多個資源(佇列、執行單元、分級觸發器,等等)。另外,自由清單之大小增加,此係由於實體暫存器在此狀況下皆不用於暫存器重命名。增加之自由清單大小亦可有助於效能改良。
儘管上文已相當詳細地描述了實施例,但熟習此項技術者一旦完全瞭解以上揭示內容便將明顯看出眾多變化及修改。預期將以下申請專利範圍解釋為涵蓋所有此等變化及修改。
400‧‧‧暫存器重命名
410a‧‧‧指令
410b‧‧‧指令
420a‧‧‧映射表
420b‧‧‧映射表
430a‧‧‧自由清單
430b‧‧‧自由清單
432‧‧‧預留清單

Claims (24)

  1. 一種處理器,其包含:一解碼器,其經組態以對所提取之指令進行解碼;及一暫存器重命名單元,其經組態以接收經解碼之指令;其中回應於偵測到一指令經組態以將一給定數值寫入至藉由該指令之一目的地運算元識別的一目的地,該暫存器重命名單元經組態以將與該給定數值相關聯之一給定重命名暫存器指派至該目的地運算元。
  2. 如請求項1之處理器,其中回應於該偵測,儲存指示指令完成之一指示。
  3. 如請求項2之處理器,其中該處理器進一步包含包括複數個實體暫存器的一實體暫存器檔案,每一實體暫存器藉由一相關聯重命名暫存器加以識別,且其中該給定重命名暫存器並不與該複數個實體暫存器中之任一者相關聯。
  4. 如請求項1之處理器,其中該暫存器重命名單元經組態以指派該給定重命名暫存器供多個指令同時使用。
  5. 如請求項1之處理器,其中回應於該偵測,防止該指令在一執行管線級中執行。
  6. 如請求項1之處理器,其中回應於偵測到該給定重命名暫存器識別符,傳送該給定數值而不讀取該複數個實體暫存器中的任一者。
  7. 如請求項1之處理器,其中回應於接收到對應於該給定重命名暫存器之一指示,該暫存器檔案提供該給定數值。
  8. 一種方法,其包含:對所提取之指令進行解碼;及 回應於偵測到一指令經組態以將一數值寫入至藉由一目的地運算元識別的一位置,將一給定重命名暫存器識別符指派至該目的地運算元,其中該給定重命名暫存器識別符與該數值相關聯。
  9. 如請求項8之方法,其中回應於該偵測,防止該指令在一執行管線級中執行。
  10. 如請求項8之方法,其中該偵測包含偵測(i)用於一移動指令之一運算碼;及(ii)該移動指令之一立即源運算元具有與該數值相同的一值。
  11. 如請求項8之方法,其中該給定重命名暫存器識別符並不與一實體暫存器相關聯。
  12. 如請求項8之方法,其中回應於偵測到該給定重命名暫存器識別符,傳送該給定數值而不讀取該複數個實體暫存器中的任一者。
  13. 如請求項8之方法,其中回應於接收到對應於該給定重命名暫存器之一指示,該暫存器檔案提供該給定數值。
  14. 如請求項8之方法,其中偵測到該指令經組態以將該數值寫入於該目的地運算元中包含偵測到(i)源運算元識別符中之每一者係一相同值;及(ii)一運算碼對應於一預定操作。
  15. 一種暫存器重命名單元,其包含:一第一介面,其經組態以接收經解碼指令;至一分派單元之一第二介面,該第二介面經組態以將指令分派至一排程器;及零循環初始化邏輯;其中回應於偵測到一指令經組態以將一數值寫入於一目的地運算元中,該零循環初始化邏輯經組態以將一給定重命名暫存 器識別符指派至該目的地運算元,其中該給定重命名暫存器識別符與該數值相關聯。
  16. 如請求項15之暫存器重命名單元,其中回應於該偵測,該零循環初始化邏輯經進一步組態以防止該指令在一執行管線級中執行。
  17. 如請求項15之暫存器重命名單元,其中該給定重命名暫存器識別符並不與一實體暫存器相關聯。
  18. 如請求項15之暫存器重命名單元,其中偵測到該指令經組態以寫入該數值包含偵測到(i)用於一移動指令之一運算碼;及(ii)該移動指令之一立即源運算元具有與該數值相同的一值。
  19. 如請求項15之暫存器重命名單元,其中偵測到該指令經組態以將該數值寫入於該目的地運算元中包含偵測到(i)該等源運算元識別符中之每一者係一相同值;及(ii)一運算碼指示一預定操作。
  20. 如請求項17之暫存器重命名單元,其中偵測到該指令經組態以將該數值寫入於該目的地運算元中包含偵測到(i)一立即源運算元具有與該給定數值相同之一值;及(ii)一運算碼指示以下運算中之至少一者:一算術乘法、一移動及一布林邏輯AND。
  21. 一種裝置,其包含:控制邏輯;及包括複數個實體暫存器之一實體暫存器檔案,每一實體暫存器藉由一相關聯重命名暫存器識別符來識別;其中回應於偵測到一指令經組態以將一數值寫入於一目的地運算元中,該控制邏輯經組態以將一給定重命名暫存器識別符指派至該目的地運算元,其中該給定重命名暫存器識別符映射至該數值。
  22. 如請求項21之裝置,其中回應於該偵測,該控制邏輯經進一步組態以防止該指令在一執行管線級中執行。
  23. 如請求項22之裝置,其中回應於接收到該給定重命名暫存器識別符,該實體暫存器檔案經組態以提供該給定數值而不讀取該複數個實體暫存器中的任一者。
  24. 如請求項22之裝置,其進一步包含略過邏輯,該略過邏輯經組態以偵測該指令並提供該數值而不存取該暫存器檔案。
TW102115293A 2012-04-30 2013-04-29 最佳化暫存器初始化操作 TWI507980B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/460,268 US9430243B2 (en) 2012-04-30 2012-04-30 Optimizing register initialization operations

Publications (2)

Publication Number Publication Date
TW201403472A true TW201403472A (zh) 2014-01-16
TWI507980B TWI507980B (zh) 2015-11-11

Family

ID=48190184

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102115293A TWI507980B (zh) 2012-04-30 2013-04-29 最佳化暫存器初始化操作

Country Status (8)

Country Link
US (1) US9430243B2 (zh)
EP (1) EP2660715B1 (zh)
JP (1) JP5853303B2 (zh)
KR (1) KR101502682B1 (zh)
CN (1) CN103377037B (zh)
BR (1) BR102013010540B1 (zh)
TW (1) TWI507980B (zh)
WO (1) WO2013165752A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI793739B (zh) * 2020-11-17 2023-02-21 美商聖圖爾科技公司 推測分支模式更新方法和微處理器

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112012007058T5 (de) * 2012-12-19 2015-08-06 Intel Corporation Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
US9251300B2 (en) * 2013-10-25 2016-02-02 Altera Corporation Methods and tools for designing integrated circuits with auto-pipelining capabilities
US20170083313A1 (en) * 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
US10528355B2 (en) * 2015-12-24 2020-01-07 Arm Limited Handling move instructions via register renaming or writing to a different physical register using control flags
US10949202B2 (en) 2016-04-14 2021-03-16 International Business Machines Corporation Identifying and tracking frequently accessed registers in a processor
US10007590B2 (en) 2016-04-14 2018-06-26 International Business Machines Corporation Identifying and tracking frequently accessed registers in a processor
US10255072B2 (en) * 2016-07-01 2019-04-09 Intel Corporation Architectural register replacement for instructions that use multiple architectural registers
GB2563582B (en) * 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
US10915317B2 (en) * 2017-12-22 2021-02-09 Alibaba Group Holding Limited Multiple-pipeline architecture with special number detection
JP7131236B2 (ja) * 2018-09-20 2022-09-06 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN111638911A (zh) * 2019-03-01 2020-09-08 阿里巴巴集团控股有限公司 一种处理器、指令执行设备及方法
US10896041B1 (en) * 2019-09-25 2021-01-19 Microsoft Technology Licensing, Llc Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices
US11119772B2 (en) * 2019-12-06 2021-09-14 International Business Machines Corporation Check pointing of accumulator register results in a microprocessor
CN111414196B (zh) * 2020-04-03 2022-07-19 中国人民解放军国防科技大学 一种零值寄存器的实现方法及装置
CN112416434B (zh) * 2020-12-03 2023-02-17 海光信息技术股份有限公司 物理寄存器分配方法、物理寄存器分配装置和电子设备
US11531546B2 (en) 2021-03-08 2022-12-20 International Business Machines Corporation Hexadecimal floating point multiply and add instruction
CN113703832B (zh) * 2021-09-10 2024-06-11 中国人民解放军国防科技大学 一种立即数转移指令的执行方法、装置及介质
CN114116229B (zh) * 2021-12-01 2023-03-31 北京奕斯伟计算技术股份有限公司 调节指令流水线的方法及装置、存储器和存储介质
CN115640047B (zh) * 2022-09-08 2024-01-19 海光信息技术股份有限公司 指令操作方法及装置、电子装置及存储介质
CN116339830B (zh) * 2023-05-26 2023-08-15 北京开源芯片研究院 一种寄存器管理方法、装置、电子设备及可读存储介质
CN117289995B (zh) * 2023-10-11 2024-05-10 海光信息技术股份有限公司 指令处理方法以及处理器
CN117555600B (zh) * 2023-10-20 2024-08-23 海光信息技术(成都)有限公司 用于数据通路的操作方法、计算装置及存储介质
CN117931294B (zh) * 2024-03-22 2024-07-16 芯来智融半导体科技(上海)有限公司 指令处理设备和处理系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4435753A (en) 1980-10-31 1984-03-06 International Business Machines Corporation Register allocation system using recursive queuing during source code compilation
DE69130588T2 (de) 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5696957A (en) 1991-05-17 1997-12-09 Ricoh Company, Ltd Integrated circuit comprising a central processing unit for executing a plurality of programs
JP3206960B2 (ja) 1991-05-17 2001-09-10 株式会社リコー 拡張中央演算処理装置
US5452426A (en) 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
GB2317464A (en) 1996-09-23 1998-03-25 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
US6122725A (en) 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6122656A (en) 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6594754B1 (en) * 1999-07-07 2003-07-15 Intel Corporation Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
US6505293B1 (en) * 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US6553483B1 (en) 1999-11-29 2003-04-22 Intel Corporation Enhanced virtual renaming scheme and deadlock prevention therefor
US7631207B1 (en) * 2006-04-21 2009-12-08 Sun Microsystems, Inc. Reducing power consumption for processing of common values in microprocessor registers and execution units
US20100274961A1 (en) 2009-04-22 2010-10-28 Golla Robert T Physically-indexed logical map table
GB2478726B (en) 2010-03-15 2013-12-25 Advanced Risc Mach Ltd Mapping between registers used by multiple instruction sets

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI793739B (zh) * 2020-11-17 2023-02-21 美商聖圖爾科技公司 推測分支模式更新方法和微處理器

Also Published As

Publication number Publication date
EP2660715A3 (en) 2014-05-21
CN103377037B (zh) 2016-08-10
EP2660715B1 (en) 2015-10-07
KR20130122587A (ko) 2013-11-07
KR101502682B1 (ko) 2015-03-13
TWI507980B (zh) 2015-11-11
JP2013232196A (ja) 2013-11-14
US20130290680A1 (en) 2013-10-31
BR102013010540A2 (pt) 2015-10-13
WO2013165752A1 (en) 2013-11-07
BR102013010540B1 (pt) 2021-07-06
JP5853303B2 (ja) 2016-02-09
US9430243B2 (en) 2016-08-30
CN103377037A (zh) 2013-10-30
EP2660715A2 (en) 2013-11-06

Similar Documents

Publication Publication Date Title
TWI507980B (zh) 最佳化暫存器初始化操作
US20170097891A1 (en) System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
EP1869547B1 (en) System and method wherein conditional instructions unconditionally provide output
US20110219213A1 (en) Instruction cracking based on machine state
CN101147125A (zh) 用于直接累积未调准数据的可写入分段字的架构型寄存器
RU2431887C2 (ru) Использование системы переименования регистра для передачи промежуточных результатов между составными командами и расширенной командой
KR101723711B1 (ko) 조건부 쇼트 포워드 브랜치들을 산술적으로 동등한 술어적 명령어들로 변환
US9317285B2 (en) Instruction set architecture mode dependent sub-size access of register with associated status indication
KR20230025402A (ko) 마스터 섀도우 물리적 레지스터 파일을 활용하기 위한 방법 및 시스템
US20140244976A1 (en) It instruction pre-decode
US10579378B2 (en) Instructions for manipulating a multi-bit predicate register for predicating instruction sequences
US20220413860A1 (en) System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction
JP6253706B2 (ja) ハードウェア装置
US7783692B1 (en) Fast flag generation
Shah et al. SPSIM: SuperScalar Processor SIMulater CS305 Project Report
KR20230038799A (ko) 전력 절약을 위한 레지스터 리네이밍
JiongYao et al. Recovery Scheme to Reduce Latency of Miss-Prediction for Superscalar Processor using L1 Recovery Cache