TWI469046B - 基於旋轉的別名保護暫存器中的暫存器配置 - Google Patents

基於旋轉的別名保護暫存器中的暫存器配置 Download PDF

Info

Publication number
TWI469046B
TWI469046B TW100145055A TW100145055A TWI469046B TW I469046 B TWI469046 B TW I469046B TW 100145055 A TW100145055 A TW 100145055A TW 100145055 A TW100145055 A TW 100145055A TW I469046 B TWI469046 B TW I469046B
Authority
TW
Taiwan
Prior art keywords
instruction
register
alias
code
check
Prior art date
Application number
TW100145055A
Other languages
English (en)
Other versions
TW201241743A (en
Inventor
Cheng Wang
Youfeng Wu
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201241743A publication Critical patent/TW201241743A/zh
Application granted granted Critical
Publication of TWI469046B publication Critical patent/TWI469046B/zh

Links

Classifications

    • 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/3842Speculative instruction execution
    • 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/3834Maintaining memory consistency
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

基於旋轉的別名保護暫存器中的暫存器配置
本發明係關於基於旋轉的別名保護暫存器中的暫存器配置。
軟硬體協同設計系統可利用動態二進制優化而提升效能。對於記憶體指令的動態二進制優化而言,可能需要記憶體別名資訊。動態二進制優化可利用硬體別名檢查以推測一原子區之記憶體最佳化。當一載入指令在一存回指令之前被推測記錄,兩指令之間具有可能的記憶體別名,該載入指令可能需要設定一儲存其記憶體位址之別名保護暫存器。當對該存入指令執行作回應,該存回指令可核對該別名保護暫存器與其記憶體位址以偵測是否推測失誤。推測失誤可能導致全區轉返和沒有優化或較無優化碼之重新執行。
茲將描述提供別名暫存器配置演算法之技術以減少在基於旋轉之別名保護暫存器中暫存器之使用。實行此技術並不用侷限在電算系統,亦可使用相似目的之執行環境,例如任何其他數位/電子裝置。在以下說明中,茲將提出各項細節,例如邏輯實現、操作碼(opcode)、指定運算元的方法、資源劃分/分享/複製實現、系統元件之類型和 相互關係、及邏輯分割/整合選擇,以提供對本發明更周詳的瞭解。然而,本發明不須以如此細節來施行。在其他範例中,並沒有詳細顯示控制結構、全軟體指令序列,以不混淆本發明之說明。
此說明書提及之「一實施例」表示所述實施例可包含一特定特徵、結構或特性,但每個實施例不一定包含該特定特徵、結構或特性。又,該詞彙「一實施例」不一定指稱相同的實施例。再者,當於一相關實施例中描述一特定特徵、結構或特性,茲認為不論是否有明顯說明,熟悉此項技術者可知悉以其他相關實施例可達到此特徵、結構或特性。
本發明之各實施例可以在硬體、軟體、韌體或其任一組合中實施。本發明之各實施例亦可以指令形式儲存於一可被一或多個處理器讀取及執行之機器可讀取媒體中。一機器可讀取媒體可包含任何可由一機器(例如:一電算裝置)讀取以儲存或傳輸資訊之機制。舉例而言,一機器可讀取媒體可包含唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置、電子、光學、音響或其他形式之傳播訊息(例如:載波、紅外線訊號、數位訊號等)。
以下說明可能包含第一、第二等用以作為說明目的之措辭,但是並非用來作為限制之用。
第1A圖繪示一系統100之一例示實施例之方塊圖。該系統100可包括一可包含能執行軟體及(或)處理資料 訊號之任何形式處理器之處理器102。在一實施例中,該處理器102可包括一複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、一執行指令集組合之處理器、或任何其他處理器裝置,例如一微處理器、數位訊號處理器或微處理器等之數位訊號處理器。
雖然第1A圖僅顯示一上述處理器102,該系統100可具有一或多個可包含多執行緒、多核心之類的處理器。在此揭示改進者並不限於電算系統。本發明其他實施例可用於其他形式使用統一可延伸韌體介面(UEFI)基本輸入/輸出系統(BIOS)裝置,例如手持式裝置、內嵌式應用。手持式裝置之例子包括行動電話、網路通訊協定(IP)裝置、數位相機、個人數位助理(PDA)或手持式個人電腦,例如小筆電或筆記型電腦。內嵌式應用包含微控制器、數位訊號處理器(DSP)、系統單晶片、網路電腦(NetPC)、視訊轉換器、網路集線器、廣域網路(WAN)交換器、或其他系統。
該處理器102可與一系統邏輯晶片104耦合。例如,在所述實施例之系統邏輯晶片104可為一記憶體控制集線器(MCH)。在一實施例中,該記憶體控制集線器(MCH)104可提供一記憶體路徑120至用以儲存指令和資料及(或)儲存繪圖指令、資料、及紋理(textures)之系統記憶體106。該記憶體路徑120可包括一記憶體匯流排。該記憶體控制集線器(MCH)104可指揮介於該處理器 102、該系統記憶體106、及其他系統100中的元件且連結介於該處理器102、該系統記憶體106、及系統輸入輸出之間之資料訊號。該系統記憶體106可為硬碟、軟碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快閃記憶體、或任何其他形式可由處理器102讀取之媒體。
該記憶體控制集線器(MCH)104可透過一區域輸入輸出(I/O)互連而與一輸入輸出控制集線器(ICH)108耦合。在一實施例中,該區域輸入輸出互連可為一高速輸入輸出匯流排,例如周邊元件互連(PCI)匯流排。該輸入輸出控制集線器(ICH)108可透過一區域輸入輸出互連提供與一或多個輸入輸出裝置之連結。輸入輸出裝置之例子包括資料儲存裝置118、語音輸入輸出120、鍵盤/滑鼠輸入輸出122、及網路控制器116、或其他整合式輸出輸入元件,例如整合式驅動電子裝置(IDE)、區域網路(LAN)、及例如通用序列匯排流(USB)、周邊元件互連(PCI)插槽(未顯於圖中)、無線收發器、傳統式輸入輸出控制器之類的擴充序列埠。該資料儲存裝置118可包括硬碟、軟碟、唯讀光碟(CD-ROM)、快閃記憶體裝置、或其他大量儲存裝置。
參照第1A圖,非揮發性記憶體,例如快閃記憶體112,可能透過如一低針腳數(LPC)匯流排與該輸入/輸出控制集線器(ICH)耦合。該基本輸入/輸出系統(BIOS)韌體114可存在於該快閃記憶體112,開機可由該快閃記憶體或韌體執行指令。雖然第1A圖繪示該基本輸入/輸 出系統(BIOS)韌體114位於該快閃記憶體112中,在某些實施例中,該基本輸入/輸出系統(BIOS)韌體114可儲存於其他如韌體集線器之類之非揮發性記憶體。在一實施例中,該基本輸入/輸出系統(BIOS)韌體114可經由統一可延伸韌體介面(UEFI)韌體或任何其他韌體而執行。
雖然第1A圖繪示的是系統100,根據本發明之實施例可用於任何其他硬體架構中,例如可運用一使用複數處理器核心之平台或一使用一處理器或一共處理器之平台、一使用輸入輸出集線器之平台、或內崁於處理器之記憶體控制等。
第1B圖繪示一實行本發明原理之系統140之另一實施例。該系統140可包括一可包含能執行軟體及(或)處理資料訊號之任何形式處理器之處理器142。在一實施例中,該處理器142可包括上述有關該處理器102之任何形式的處理器或處理器裝置。在一實施例中,該處理器142可透過一記憶體路徑(未顯示於圖中)而與用以儲存指令、資料及(或)儲存繪圖指令、資料、紋理之系統記憶體144耦合。在另一實施例中,該處理器142可透過一周邊元件互連(PCI)互連而與一或多個周邊元件互連(PCI)埠160耦合。然而,在某些實施例中,也許不需要該周邊元件互連(PCI)埠160。該系統記憶體144可為硬碟、軟碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快閃記憶體、或任何其他形式可由處理器142讀取之媒體 。
雖然第1B圖僅顯示一上述處理器142,該系統140可具有一或多個可包含多執行緒、多核心之類的處理器。在此揭示改進者並不受於電腦系統或資料處理裝置系統。本發明其他實施例可用於其他形式使用統一可延伸韌體介面(UEFI)基本輸入/輸出系統(BIOS)裝置,例如手持式裝置、內嵌式應用。手持式裝置之一些例子包括行動電話、網路通訊協定(IP)裝置、數位相機、個人數位助理(PDA)或手持式個人電腦,例如小筆電或筆記型電腦、或智慧型裝置、例如平板電話或智慧型電話等。內嵌式應用包含微控制器、數位訊號處理器(DSP)、系統單晶片、網路電腦(NetPC)、視訊轉換器、網路集線器、廣域網路(WAN)交換器、或任何其他系統。
該處理器142可與一系統邏輯晶片146耦合。例如,在所述實施例之系統邏輯晶片146可為一平台控制集線器(PCH)。在一實施例中,該平台控制集線器(PCH)146可透過一區域輸入輸出(I/O)互連提供與一或多個輸入輸出裝置之連結。在一實施例中,該區域輸入輸出互連可為一種如周邊元件互連(PCI)匯流排之高速輸入輸出匯流排。該平台控制集線器(PCH)146可指揮介於該處理器142和系統140中之一或多個元件之間之資料訊號或其他資訊,且連結介於該處理器142和系統輸入輸出之間之資料訊號或資訊。
上述一或多個元件之例子包括資料儲存裝置152、一 或多個周邊元件互連(PCI)埠154、網路控制156、及通用序列匯排流(USB)埠158。在一實施例中,該資料儲存裝置152可包括硬碟、軟碟、唯讀光碟(CD-ROM)、快閃記憶體裝置、或其他大量儲存裝置。雖然第1B圖顯示某些元件例示,該平台控制集線器(PCH)146可連接任何其他元件,例如語音輸入輸出、鍵盤/滑鼠輸入輸出、及其他整合式輸出輸入元件,例如整合式驅動電子裝置(IDE)、區域網路(LAN)、及無線收發器、傳統式輸入輸出控制器之類的其他擴充序列埠。
參照第1B圖,非揮發性記憶體,例如快閃記憶體148,可能透過如一低針腳數(LPC)匯流排與該輸入/輸出控制集線器(ICH)146耦合。基本輸入/輸出系統(BIOS)韌體150可存在於該快閃記憶體148中,開機可由該快閃記憶體或韌體執行指令。雖然第1B圖繪示該基本輸入/輸出系統(BIOS)韌體150位於該快閃記憶體148中,在某些實施例中,該基本輸入/輸出系統(BIOS)韌體150可儲存於其他如韌體集線器之類之非揮發性記憶體。在一實施例中,該基本輸入/輸出系統(BIOS)韌體150可經由統一可延伸韌體介面(UEFI)韌體或任何其他韌體而執行。
雖然第1B圖繪示的是系統140,根據本發明之實施例可用於任何其他軟、硬體架構中,例如可運用一使用複數處理器核心之平台或一使用一處理器或一協處理器之平台、一使用輸入輸出集線器之平台、或內嵌於處理器之記 憶體控制等。
第1C圖繪示一實行本發明原理之系統160之另一實施例。該系統160可包括一可包含能執行軟體及(或)處理資料訊號之任何形式處理器之處理器162。該處理器162可包括上述有關該處理器102之任何形式之處理器或處理器裝置。該系統160可包括一能透過一互連168或如匯流排、記憶體路徑等之任何其他連接之一記憶體163,記憶體163可耦合至處理器162。該記憶體163之例子尚包括硬碟、軟碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快閃記憶體、揮發性記憶體裝置或非揮發性記憶體裝置、或任何其他形式可由該處理器162讀取之媒體。在另一實施例中,該處理器162可與一網路元件164耦合,該網路元件164可包括有線網路連接和(或)無線網路連接或任何其他網路連接。該處理器162又可與一輸入輸出控制器165耦合,該輸入輸出控制器165可與一或多個輸入輸出裝置166耦合。第1C圖繪示系統160之一實施例。在某些實施例中,該系統160可包括一或多個可於硬體、軟體、韌體或其任一組合執行之其他元件。在另一實施例中,該系統160之例子可包括任何形式與上述第1A、1B圖有關之裝置或設備。
第2A圖係一根據本發明一實施例之示意圖。元件符號210係指第2A圖所示如store_0、store_1...次序之原始碼或指令。在一實施例中,該原始碼可位於一原子區;然而,在某些實施例中,不一定需要該原子區。在一實施例 中,原始碼210可被記錄或排程至排程碼或可具有和該原始碼不同次序或序列之指令220。例如,指令220a可指一可被排程至將要執行之第一指令(例如:執行邏輯)之記憶體存回指令store_5。第2A圖之實施例可使用基於旋轉之別名保護暫存器,使各記憶體指令設定一別名保護暫存器,且以一位元遮罩核對一組別名保護暫存器。
在一實施例中,可運用一基於旋轉的別名檢查。別名保護暫存器可基於指示該循環緩衝器標題之AHPTR(別名標題指標)270旋轉而編排於一循環緩衝器或環狀佇列。一記憶體指令可指定一與當時之AHPTR 270有關之別名保護暫存器數ORD 230(可能以環繞方式)。舉例而言,參照第2A圖,依據該原始碼之次序,一用於該第一指令store_0之具有0個暫存器ORD之第一別名保護暫存器可設定於該循環緩衝器之標題,該第二指令store_1係指定一第二別名保護暫存器具有1個暫存器ORD,其後以此推斷。在另一實施例中,一記憶體指令可具有一P位元,該P位元指出硬體(例如:處理器102或142或任何其他執行邏輯)可設定當前指令所用之別名保護暫存器之暫存器數目AHPTR+ORD。在一實施例中,在介於[AHPTR+ORD,AHPTR]範圍內之暫存器會被核對。例如,如果AHPTR=2且ORD=1,則全部暫存器之數目為5(例如:0-4),介於[3,2]範圍之暫存器3、暫存器4、暫存器0、及暫存器1會被檢查。在一實施例中,可能使用環繞方式。
一記憶體指令可具有一C位元,該C位元係指出硬體 (例如:處理器或任何其他執行邏輯)可核對暫存器數>=AHPTR+ORD之所有別名保護暫存器(可能以環繞方式)。當對該指令排程做回應,具有ORD 230之別名保護暫存器數可依據該指令之一原始執行次序而配置。例如,在第2A圖中,具有ORD 230之別名保護暫存器數可被配置為原始程式執行之次序。
在另一實施例中,一記憶體指令可指定一旋轉數ROT,該旋轉數ROT可指出別名標題指標可旋轉的量。在一實施例中,該旋轉數ROT可用以指示可釋放所有介於AHPTR和AHPTR+ROT之間之別名保護暫存器(可能以環繞方式,包含AHPTR,排除AHPTR+ROT),例如在執行一指令前。在一實施例中,硬體如處理器102或142可藉由ROT旋轉AHPTR,且清除所有用於AHPTR和AHPTR+ROT之間之別名保護暫存器之有效位元。
在一實施例中,對於以一P位元設定一別名保護暫存器來做回應,可用硬體為該暫存器設定一有效位元。例如,一具「邏輯1」之有效位元可代表一會被硬體核對之有效別名保護暫存器。在另一實施例中,一具有邏輯值(例如:0)之有效位元係指對應的別名保護暫存器不會被核對。例如,第2A圖之元件符號240係指“vaild_all”可具有一組用於一或多個別名保護暫存器之一或多個有效位元。在一實施例中,該“vaild_all”240之有效位元數可與別名保護暫存器數及(或)排程指令數相等。然而,在某些實施例中,有效位元數可和排程指令數不同。例如,依據 原始碼之次序,用於最後指令store_5之ORD為5之別名保護暫存器的有效位元可設定於vaild_all 240之最高位元,用於該第一指令store_0之ORD為0之別名保護暫存器的有效位元可設定於vaild_all 240之最低位元,以此推斷。然而,在某些實施例中,在該vaild_all 240之有效位元可以不同次序設置。在某些實施例中,在該vaild_all 240之有效位元可依據用於各別名保護暫存器之ORD之次序。
舉例而言,欄位vaild_all 240a可為000000,其係代表對於排程序列中第一指令之指令store_5沒有核對任何別名保護暫存器。欄位valid_all 240b可與排程碼中一後續指令store_2有關。欄位valid_all 240b可為100000,其中有效位元“1”可與前一指令store_5相對應,係指對於指令store_5會核對其別名保護暫存器。且,240b之有效位元00000係指對於store_2本身、store_0、load_4、store_1、及load_3不會核對其別名保護暫存器。
參照第2A圖,欄位vaild_st 250可與一存回指令相關且包括一組一或多個有效位元。例如,vaild_st 250與vaild_all 240不同之處在於:一用於一載入指令之別名保護暫存器之有效位元在vaild_st 250具有邏輯值0。在一實施例中,硬體如處理器102或142或其他執行邏輯在執行各指令前,可維持用於各別名保護暫存器之有效位元,且計算用於檢查之位元遮罩260。一載入指令不一定會核對另一載入指令。從用於load_3之位元遮罩260a來看, load_4也許沒有有效位元(例如:邏輯值1),亦或load_4之別名保護暫存器之有效位元可能未被斷言。在另一實施例中,就load_3之位元遮罩260a而言,原始執行次序依次在load_3之前之store_0、store_1、store_2也許沒有有效位元。該硬體可能為所有指令(例如:valid_all 240)以及僅為存回指令(例如:valid_st 250)維持個別的有效位元。存儲指令指核對valid_all 240,且載入指令僅核對valid_st 250。
第2A圖繪示用於如處理器或任何其他執行邏輯之硬體以維持valid_all 240、valid_st 250及依據ORD 230(例如:在C語言語義)計算該遮罩260之一公式之實施例。第2A圖之基於旋轉之別名保護暫存器中暫存器配置的演算法可在其原始程式次序為各指令配置一暫存器,如第2A圖所示之「暫存器ORD」230。可使用該演算法以保證在別名檢查時沒有誤否定或誤肯定。參照第2A圖,在一實施例中,各指令可具有一P/C位元(未顯示),但不具有ROT。在另一實施例中,硬體如一處理器或任何其他執行邏輯可以ORD/P/C 230執行排程碼220,及計算valid_all 240、valid_st 250、及valid_mask 260以做別名檢查。
參照第2B圖,其係繪示暫存器配置之一實施例。在一實施例中,第2B圖之暫存器配置可用以減少用於基於旋轉之別名保護暫存器設計之別名保護暫存器的數目,且不會產生誤肯定或誤否定。第2B圖之實施例可與指令排 程和最佳化整合,且可用於動態優化。在一實施例中,並非每個記憶體指令皆要設定一別名保護暫存器,而且並非每個記憶體指令皆要核對其他別名保護暫存器。舉例而言,在第2B圖中,store_0、store_1、及store_3三者皆不用設定一別名保護暫存器,因為沒有指令會核對它們。store_5不會核對任何其他別名保護暫存器,因為其被排程為該區的第一指令。第2B圖之實施例可使用三個暫存器,而非六個。
參照第2B圖,store_5、store_2、及store_4可能需要保護(例如:其P位元可設為1,其C位元(圖中未顯示)可設為0),它們的暫存器ORD數可分別指定為2、0、及1。store_0、store_1、及load_3可能不需要保護,且可能僅核對其他別名暫存器(例如:其P位元可設為0,其C位元可設為1)。第2B圖繪示一依據ORD、P、及C計算valid_all 240、valid_st 250、及遮罩206之實施例。
第2C圖顯示另一暫存器配置之實施例。在第2C圖之實施例中,當對裁定store_1和10ad_4沒有存取相同記憶體做回應,例如藉由軟體分析,store_1不會核對load_4。第2C圖之實施例可使用兩個暫存器。參照第2C圖,store_5、store_2(例如:其P位元=1)可被保護,且其分別分派具有ORD1和0之暫存器。store_0、load_4、store_1、及load_3(例如:其P位元=0,C位元=1)可以只核對其他別名暫存器。在第2A-2C圖之實施例中,暫存 器配置可依照一原始程式次序。例如,在原始程式中如果一第一指令將在一第二指令前執行,該第一指令之暫存器數不會大於第二指令之暫存器數。
第2D圖顯示另一暫存器配置之實施例。一資料相依之實施例係顯示於第2D圖中。舉例而言,如果1)指令A1在原始編程次序中在指令A2之前將被執行;2)指令A1和A2可存取相同記憶體;3)指令A1和A2其中至少一者為一存回指令,即可定義出資料相依A1→A2。第2D圖另顯示一檢查限制之實施例。舉例而言,當指令排程器推測A1和A2在運行時沒有衝突時,該指令排程器可能將A2移到A1之前。例如,該指令排程器可經由軟體而執行。如果A1→A2成立且指令A2被記錄於A1之前,可為A2設定一別名保護暫存器以核對A1。如果1)A1→A2成立;2)指令A2經由排程而被記錄於A1之前,即可定義出一檢查限制A1=>c A2。在一實施例中,指令A1可核對指令A2以回應該檢查限制A1=>c A2。在某些實施例中,檢查限制不一定能變遷。例如,A1=>c A2和A2=>c A3不一定意謂A1=>c A3。
在一實施例中,該檢查限制A1=>c A2可裁定哪個指令可設定一別名保護暫存器,及哪個指令可核對其他指令。舉例而言,該檢查限制A1=>c A2可裁定指令A2設定一新的P位元別名保護暫存器,且指令A1(C位元)可核對指令A2。第2D圖繪示一在原始程式次序之暫存器配置之實施例。例如,如第2D圖所示,load_1和load_3可 依據如第2D圖所示之對應檢查限制及(或)資料相依以P位元設定新的別名保護暫存器。暫存器0、1可根據其原始程式次序分別配置於load_1和load_3。store_2可核對排程於load_2之前之load_3之暫存器1。store_0可核對排程於store_0之前之指令load_1之暫存器0。在第2D圖之實施例中,可能沒有檢查限制store_0=>c load_3(例如:store_0可能沒有和load_3存取相同記憶體),且store_0可能不需核對load_3。
第2E圖顯示非置於原始程式次序之一暫存器配置之實施例。例如,參照第2E圖,暫存器0、1可以和其原始程式次序相反之次序分別配置於load_3及load_1。參照第2E圖,用於load_3(ORD/0/P)之暫存器0可能僅被store_2(ORD/0/C)檢查。第2E圖之實施例中,在store_2之後暫存器0可能不會被核對。參照第2F圖,AHPTR可被ROT“1”旋轉而釋放暫存器0。例如,暫存器0可被旋轉而於load_1剛開始執行時被釋放;然而,在某些實施例中,暫存器0可被釋放以對該暫存器已經被核對及沒有被任何其他指令使用做回應。在另一實施例中,旋轉可於store_2執行後被實行。為回應該旋轉,AHPTR可增加1(例如:當前的AHPTR=1)。在計算當前的AHPTR時,後續指令之ORD可依然為0。第2E圖和第2F圖可做相同的別名檢查。例如,第2F圖在旋轉時可將暫存器數減少為1個。
在第2F圖之暫存器旋轉配置之實施例中,load_3所 用之暫存器0可經由暫存器旋轉而被釋放,以回應store_2已核對暫存器0。在此實施例中,可使用一暫存器。第2F圖顯示一依據ORD、P、C、ROT、及暫存器計數REG(例如:1)計算valid_all、valid_st、及遮罩之實施例。在一實施例中,可以公式來計算valid_all、valid_st、及遮罩作為相關之AHPTR。例如:遮罩(n)=valid_all(n)&~((1<<ORD(n))-1),如果n為一存回指令和C(n);=valid_st(n)&~((1<<ORD(n))-1),如果n為一載入指令和C(n)。
在一實施例中,硬體可藉由AHPTR「循環左移」該遮罩以進行檢查。在一實施例中,「循環左移」可將遮罩的位元向左移且環繞溢位位元至右。例如,遮罩00001111循環左移2就會得到0011100。在第2F圖之實施例中,valid_all、valid_st、及遮罩可計算出相對的AHPTR。例如,如果AHPTR=2,遮罩00001111係表示暫存器2至暫存器5具有遮罩值1,而暫存器6、7、0、1各具有遮罩值0。
第2G圖之實施例可用來表示基於指令排程整合之檢查限制和反檢查限制之暫存器配置。在一實施例中,如果A1=>cA2,A1之暫存器不會大於A2,如此A1才能核對A2。在某些實施例中,可將檢查限制和反檢查限制用於暫存器配置以避免別名檢查時發生誤肯定。在一實施例中,如果1)A1→A2;2)A1可依據一檢查限制A0=>c A1設 定一別名保護暫存器;3)A2可依據一檢查限制A2=>c A3核對某些別名保護暫存器;及4)排程沒有在A1之前記錄A2,即可定義出一反檢查限制A1=>ac A2。
在一實施例中,依據反檢查限制A1=>ac A2,為了防止A2核對A1(例如:避免可能發生的誤肯定),A1之暫存器數可能小於A2的暫存器數。檢查限制可用來減少或使暫存器配置中的限制減至最少,以防止檢查時發生的誤否定,且反檢查限制可用以減少或使暫存器配置中額外的限制減至最少,以防止檢查時發生的誤肯定。
第2G圖之實施例可在用完別名暫存器時用來動態限制排程。參照第2G圖,在排程時檢查限制和反檢查限制可遞增地建構。用於一指令之暫存器可以只有在該指令已受到排程之情況才配置。如果A1=>c A2或A1=>ac A2時,A2之暫存器可以延至A1之暫存器已配置後才被配置。在第2G圖之實施例中,P(A)、C(A)、ORD(A)、及ROT(A)可分別代表一指令A之P位元、C位元、ORD、及ROT。在一實施例中,可使用一最佳化器/排程器來追蹤在執行一或多個指令時(例如:在排程時)AHPTR可發生的變化。在一實施例中,舉例而言,可以軟體來執行該最佳化器/排程器。例如,AHPTR_AT(A)可在執行用於延遲之暫存器配置之指令A時記錄AHPTR。R(A)可用以表示是否配置A的暫存器。在第2G圖之實施例中,一指令之暫存器配置可以延遲至所有檢查指令是否排程之暫存器之後(例如:依據檢查限制)。在一實施 例中,一或多個配置之暫存器可在對應之排程指令之後(例如:指有在下依排程指令開始時)被釋放。雖然第2G圖之實施例可使用一列表排程,某些實施例可延伸運用任何其他排程技術,例如模數排程。
參照第2G圖,該暫存器配置之實施例可與指令排程整合在一起。在一實施例中,該實施例可檢查是否暫存器已經用完(例如:ORD(A)>=REG)。參照第2G圖,ORD(A)可關於三個變數:代表暫存器數之REG、AHPTR、及AHPTR_AT(A)。AHPTR永遠可用。變數"REG"可受限於P(A)=1和!R(A)之數個指令,其中P(A)表示指令A需要一新的暫存器來設定保護,!R(A)表示指令A之暫存器還未配置。例如,該變數"REG"可受限於數個其暫存器配置受到延遲之指令。在一實施例中,AHPTR的值在排程次序中持續增加。在執行用於延遲之暫存器配置之指令A時,AHPTR_AT(A)可記錄AHPTR。在一實施例中,可計算延遲之暫存器配置以防止暫存器溢位。
在一實施例中,一最佳化器/排程器在排程時可追蹤資訊,例如變數REG、AHPTR、AHPTR_AT,以估計是否有一或多個將配置至一排程指令之別名保護暫存器,或是否暫存器用完。在一實施例中,可防止任何新的指令A(例如:P(A)=1)之重排序,以對暫存器用完做回應。在一實施例中,其餘的指令可以其原始執行次序排程以防止重排序。
第2H圖繪示一使用別名暫存器以處理記憶體最佳化之實施例。如果第二記憶體運算和其他記憶體運算衝突,此記憶體最佳化可能是推測的。例如,推測性記憶體最佳化可使用別名暫存器保護和檢查。在指令排程前可應用最佳化,且別名暫存器配置可在指令排程過程中實行;然而,在某些實施例中,不一定需要指令最佳化。對該最佳化以及在排程過程中,最佳化碼可以被邏輯地視為與其他指令熔合消除之指令,該熔合指令/碼可用於所有消除指令上的別名檢查。參照第2H圖,在存回-載入消除282之實施例中,程式碼可以被邏輯地視為load_2熔合至store_1。在載入-載入消除284,程式碼可以被邏輯地視為load_2熔合至load_1。在存回-存回消除286,程式碼可以被邏輯地視為store_1熔合至store_2。在一實施例中,該熔合指令可包含一或多個邏輯指令/碼。
在熔合指令排程過程中,可考量該熔合指令在邏輯指令上的限制。例如,在第2I圖所示之程式碼中,可由store_0和load_3應用存回-載入消除。在最佳化之後及排程中,在排程store_0時,可考量到加諸於store_0和load_3兩者之限制。第2I圖係顯示此暫存器配置。參照第2I圖,在最佳化時,store_2可檢查load_3,store_0可檢查load_1。當對load_3和store_0可合併為store_0做回應,store_2可檢查store_0,store_0可檢查load_1。store_0和load_1可能需要保護(P位元=1),且可分派至暫存器0、1。store_2和store_0可核對(C位元=1)暫 存器0。store_0可在設定保護(P位元=1)前核對暫存器0,因此store_0可以不檢查自己。
在某些實施例中,熔合指令可於資料相依中包含數個會導致檢查或反檢查限制之循環。例如,可以下列表示檢查或反檢查限制中的一循環:store_0(load_3)=>cload_1=>ac store_2=>c store_0(load_3)。在一實施例中,如果該檢查或反檢查限制包含循環,配置別名保護暫存器可能導致誤否定和誤肯定。
第2J圖顯示一插入一虛擬載入以打破限制循環之實施例。參照第2J圖,在一實施例中,熔合指令可使用一或多個別名保護暫存器以打破限制循環。在另一實施例中,一虛擬記憶體指令可在該熔合指令存取相同記憶體後立即被插入,但是可使用和該熔合指令不同之別名保護暫存器。在一實施例中,硬體可執行該虛擬記憶體指令以僅實行別名保護或檢查,而不用實際存取記憶體以減少操作負擔。
在一實施例中,如果限制循環沒有常常發生,當限制循環將要發生時可插入一虛擬記憶體運算。例如,在排程過程中,可追蹤熔合指令中個邏輯指令之P/C位元之資訊。假使該P/C位元在一熔合指令中一或多個邏輯指令上,可插入虛擬記憶體指令以分割該P/C位元。在某些實施例中,如果該熔合指令之一或多個邏輯指令存取相同的記憶體,可避免在該熔合指令之一或多個邏輯指令上設定P/C位元。例如,如第2H圖所示之載入-載入消除的情況下, 當對load_2總是被load_1檢查之指令做回應,load_2上的C位元可能不會被設定。同樣的,為了對load_1總是被load_2檢查之指令做回應,load_1上的P位元可能不會被設定。在一實施例中,不論有多少邏輯指令合併於一熔合指令中,可保持至多三個邏輯指令上之C/P位元,例如C位元最先指令、P位元最後指令、及P位元最後存回指令。第2J圖繪示一使用虛擬記憶體指令以打破循環之範例。
在某些實施例中,虛擬記憶體指令可打破循環,但不一定會移除檢查或反檢查限制。假使在對於排程之不足之別名保護暫存器循環的情況下,可能不會進行虛擬記憶體指令之排程。例如,在第2J圖所示之排程中,為了對在排程load_1之後沒有任何別名保護暫存器做回應,如果其排程至少需要一個別名保護暫存器,store_0或store_2可能不會被排程。第2J圖之實施例可繪示如果store_0即將被排程,將被store_2檢查之dummy_load可能需要一個新的別名保護暫存器。如果store_2即將被排程,可能將被store_0(load_3)核對之store_2可能需要一個新的別名保護暫存器。在一實施例中,store_2之排程可依據其可用的新的別名保護暫存器而執行。例如,當store_2不具有或沒有可用的新的別名保護暫存器時,store_2可能不會被排程。
在一實施例中,可保留一些別名暫存器。舉例而言,其數量可以等於熔合指令中消除的指令之數目。如果所有 剩餘的指令以其原始次序排程(對熔合指令而言為其第一邏輯指令之次序),只有被記錄的邏輯指令需要額外的別名暫存器。由於保留別名暫存器,排程可執行而不會用完暫存器。
第2K圖說明一延伸第2G圖之暫存器配置以因應暫存器溢位和限制循環之演算法的實施例。參照第2K圖,該實施例可保留所有熔合指令之暫存器計數。在一實施例中,可保留熔合指令中一些消除的指令之別名暫存器,以避免用完暫存器。在另一實施例中,如果所有剩餘的指令以其原始次序排程(對熔合指令而言為其第一邏輯指令之次序),只有被記錄的邏輯指令需要額外的別名暫存器。
第3圖繪示一方法之實施例。可使用第3圖之流程來進行最佳化及原始碼之排程。在一實施例中,第2A-2K圖所示之一或多個實施例可用於第3圖之流程。在一實施例中,第3圖之流程可用以執行一可使原始碼最佳化和(或)排程之最佳化器/排程器。在一實施例中,可以軟體執行該最佳化器/排程器;然而,在某些實施例中,可以硬體、軟體、韌體、及(或)其任何組合而執行該最佳化器/排程器。在方塊302,該最佳化器/排程器可計算介於指令A1、A2之間之資料相依,例如A1→A2。在方塊304,該最佳化器/排程器可保留一些別名暫存器以防止由於一或多個熔合指令造成之暫存器溢位。在一實施例中,別名暫存器數可等於熔合指令數。然而,在某些實施例中,別名暫存器數可為不同的值。在方塊306,該最佳化器/排程 器可選擇一指令(例如:第二指令A2)排程,直到原始碼中所有指令皆已排程。
在方塊308中,對裁定所選第二指令A2之排程可能造成別名暫存器溢位做回應,該最佳化器/排程器可回到方塊306,其中該最佳化器/排程器可選擇第三指令A3而非第二指令A2。對於在方塊306選擇第三指令A3做回應,該最佳化器/排程器可裁定是否該第三指令A3用完別名暫存器(方塊308)。如果是,該最佳化器/排程器可繼續選擇一不同指令排程,直到裁定所選指令不會造成別名暫存器溢位。該最佳化器/排程器可將所選指令排程以回應裁定所選指令不會造成別名暫存器溢位(方塊308)。在方塊310,該最佳化器/排程器可增加與排程指令(例如:A3)相關之限制至限制圖(如第2K圖所示),且設定相對應的C/P位元。在一實施例中,該最佳化器/排程器可為已排程指令A3增加檢查限制和(或)反檢查限制至檢查圖或任何其他結構中。在方塊312,該最佳化器/排程器可插入虛擬記憶體運算或程式碼以防止限制圖的循環。在一實施例中,如果該已排程指令A3為一熔合指令,該最佳化器/排程器可移除不必要的C/P位元。在另一實施例中,如果該已排程指令在多個邏輯指令上具有C/P位元,該最佳化器/排程器可插入一或多個虛擬記憶體運算或指令以分割該C/P位元。在另一實施例中,如果該已排程指令不需任何別名暫存器,該流程可回到方塊306以選擇和將下一指令排程(方塊314)。在方塊316,該最佳化器/ 排程器可經由旋轉釋放一已配置別名暫存器。例如,所述釋放可在回應已被核對且沒有其他指令要核對已配置暫存器時執行。在一實施例中,該別名保護暫存器可在開始執行下一指令時被釋放。在另一實施例中,被一當前指令使用之別名保護暫存器之配置可延遲到暫存器在開始執行下一指令時被釋放。在方塊316,AHPTR可被更新以回應旋轉。在方塊318,如果該限制圖之限制能防止已排程指令之別名暫存器配置,例如,如果有一或多個來自沒有被排程之後續指令之限制,該最佳化器/排程器可延遲用於當前已排程指令之暫存器配置。在一實施例中,用於當前已排程指令之別名暫存器可配置以回應後續已被排程之指令。
例如,上述流程可回到方塊306以選擇下一指令並將其排程。在方塊320,對裁定用於當前已排程指令之暫存器配置可能不需要延遲做回應時,該最佳化器/排程器可配置一用於該已排程指令之別名暫存器。在方塊322,對於配置新的用於該已排程指令之別名暫存器做回應時,該最佳化器/排程器可移除與該排程指令相關之限制,及(或)可遞迴配置用於該已排程指令之別名暫存器,其暫存器配置由於限制而受到延遲。
在一實施例中,第2A-2K圖和第3圖之實施例可用於基於旋轉之別名保護暫存器中的暫存器配置。在一實施例中,該實施例可用來減少用於基於旋轉之別名保護暫存器之暫存器數。例如,可運用減少暫存器數以達到最佳化效 益和成效。減少別名暫存器可減少別名硬體以節省晶片面積和功率消耗。雖然第3圖所示之方法包括一連串製程,某些實施例的方法可以不同次序實施所示製程。雖然第3圖和(或)第2A-2K圖所示之實施例可由一最佳化器/排程器執行,在某些實施例,指令最佳化和排程可分別藉由一最佳化器和一排程器各自執行,或在某些實施例,可使用一或多個如暫存器配置之邏輯來執行第3圖和(或)第2A-2K圖之實施例。在另一實施例中,指令最佳化和排程可藉由一最佳化器或一排程器執行。雖然在此描述實施例可與存回和(或)載入指令有關,在某些實施例中,亦可使用任何其他記憶體指令。
雖然本發明某些特徵已在相關實施例中說明,本說明並無意以此為限。熟悉相關技術者應知悉,各種對於本發明實施例、其他實施例之修改皆應視為不超過本發明之精神與範圍。
100、140、160‧‧‧系統
102、142、162‧‧‧處理器
104‧‧‧記憶體控制集線器
106、144‧‧‧系統記憶體
108‧‧‧輸入/輸出控制集線器
112、148‧‧‧快閃記憶體
114、150‧‧‧基本輸入/輸出系統韌體
116‧‧‧網路控制器
118、152‧‧‧儲存裝置
120‧‧‧語音輸入/輸出
122‧‧‧鍵盤/滑鼠
146‧‧‧平台控制集線器(系統邏輯晶片)
154‧‧‧周邊元件互連(埠)
156‧‧‧網路控制
158‧‧‧匯流排埠
163‧‧‧記憶體
164‧‧‧網路元件
165‧‧‧輸入/輸出控制器
166‧‧‧輸入/輸出裝置
168‧‧‧互連
160‧‧‧周邊元件互連(系統)
在此描述之本發明附加圖示係作為範示之用,而非作為限制之用。為了簡化、清楚說明,圖示中各元件不一定要按照比例繪示。例如,相對於其他元件,有些元件的尺寸可能被放大以清楚表示。再者,在適當情況下,圖示當中某些標號被重複以指示對應或類似的元件。
第1A圖係根據本發明一實施例之一例示系統之方塊圖; 第1B圖係根據本發明一實施例之另一例示系統之方塊圖;第1C圖係根據本發明一實施例之又一例示系統之方塊圖;第2A-2K圖係根據本發明某些實施例之基於旋轉的別名保護暫存器之暫存器配置示意圖;第3圖係根據本發明某些實施例之一流程圖。

Claims (16)

  1. 一種配置暫存器的方法,包括:對指令集中的一第一指令進行排程;對該指令集中的該第一指令及一第二指令計算資料相依;回應於判定該第一指令及該第二指令具有該資料相依以及該第二指令將被排程於該第一指令之前,對該第一指令及該第二指令計算檢查限制;根據該資料相依和該檢查限制,配置別名暫存器給該第二指令;回應於判定該第一指令及該第二指令具有該資料相依、以一第三指令核對該第一指令、以一第四指令核對該第二指令以及該第二指令將被排程於該第一指令之後,對該第一指令及該第二指令計算反檢查限制;以及根據旋轉,釋放用於該第二指令之該別名暫存器。
  2. 如申請專利範圍第1項之方法,又包括:藉由旋轉,釋放為該第二指令而配置之該別名暫存器,以回應已經檢查該別名暫存器。
  3. 如申請專利範圍第1項之方法,又包括:對第三指令進行該排程,以回應判定該第二指令會造成別名暫存器溢位。
  4. 如申請專利範圍第1項之方法,又包括:熔合該指令集中至少二指令,以提供一熔合指令;及將一虛擬指令插入該指令集內,以打破該檢查限制之 一或多個週期。
  5. 如申請專利範圍第1項之方法,又包括:在該指令集中之一熔合指令後插入一虛擬指令,其中該虛擬指令係存取和該熔合指令相同之記憶體,且使用一和該熔合指令不同之別名暫存器。
  6. 一種配置暫存器的系統,包括:一處理器;及一最佳化器,用以:將一組將被該處理器執行之原始碼最佳化;將該最佳化碼排程而成包含一第一指令及一第二指令的排程碼;對該組原始碼中的該第一指令及一第二指令計算資料相依;回應於判定該第一指令及該第二指令具有該資料相依以及該第二指令將被排程以在該第一指令之前執行,對該第一指令及該第二指令計算檢查限制;根據該檢查限制而將別名暫存器配置給該第二指令;以及根據對該第一指令及該第二指令之反檢查限制,回應於判定所配置之該別名暫存器不會被該第一指令檢查,旋轉所配置之該別名暫存器,以釋放所配置之該別名暫存器。
  7. 如申請專利範圍第6項之系統,其中該最佳化器又回應於判定以原始次序在該第二指令之前執行該第一指令、該第一指令及該第二指令將存取相同記憶體及該第一指令及該第二指令至少一者關於儲存指令,判定該第一指令及該第二指令的該資料相依。
  8. 如申請專利範圍第6項之系統,其中該最佳化器又將該原始碼最佳化以提供熔合碼,且回應該熔合碼包含第 一位元以指示設定別名保護暫存器及第二位元以指示查核別名保護暫存器,插入虛擬碼以分割該第一位元及該第二位元。
  9. 如申請專利範圍第6項之系統,其中該最佳化器又將該原始碼最佳化以提供熔合碼,且在該熔合碼後插入虛擬碼以打破該檢查限制中一或多個週期,其中該虛擬碼係用以存取和該熔合碼相同之記憶體,以及使用一和該熔合碼不同之別名暫存器。
  10. 如申請專利範圍第6項之系統,其中該最佳化器又延遲配置該別名暫存器給該第二指令,以回應在防止配置該別名暫存器給該第二指令的該檢查限制中偵測到一或多個週期。
  11. 如申請專利範圍第10項之系統,其中該最佳化器又在暫存器配置延遲碼之後插入虛擬碼,以打破該檢查限制中之週期,其中該虛擬碼係用以存取和該暫存器配置延遲碼相同之記憶體,以及使用一和該暫存器配置延遲碼不同之別名暫存器。
  12. 如申請專利範圍第10項之系統,其中該最佳化器又回應於不會以該第一指令來核對該第二指令而判定反檢查限制。
  13. 如申請專利範圍第6項之系統,其中該最佳化器又移除該第一指令及該第二指令之該檢查限制,以回應被配置給第二組排程碼之該別名暫存器。
  14. 一種非暫態電腦可讀取媒體,含有指令,當一處 理系統執行該指令時會造成一運算系統:排程指令集;回應於判定一第二指令將被排程於一第一指令之前,根據該第一指令及該第二指令之資料相依,對該排程指令集中之該第一指令及該第二指令計算檢查限制;根據該檢查限制將一別名暫存器配置給該第二指令;回應於判定該第一指令及該第二指令具有該資料相依、以一第三指令核對該第一指令、以一第四指令核對該第二指令以及該第二指令將被排程於該第一指令之後,對該第一指令及該第二指令計算反檢查限制;以及根據旋轉,釋放用於該第二指令之該別名暫存器。
  15. 如申請專利範圍第14項之非暫態電腦可讀取媒體,又包括複數個指令以回應該運算系統之執行結果,該指令係用以:釋放一沒有被使用之該第二指令之別名暫存器,且回應於判定以一第六指令核對該第三指令,配置被釋放之該別名暫存器給第五指令。
  16. 如申請專利範圍第14項之非暫態電腦可讀取媒體,又包括複數個指令以回應該運算系統之執行結果,該指令係用以:將一虛擬指令插入該排程之指令集內,以打破該檢查限制之週期。
TW100145055A 2011-04-07 2011-12-07 基於旋轉的別名保護暫存器中的暫存器配置 TWI469046B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/082,146 US9405547B2 (en) 2011-04-07 2011-04-07 Register allocation for rotation based alias protection register

Publications (2)

Publication Number Publication Date
TW201241743A TW201241743A (en) 2012-10-16
TWI469046B true TWI469046B (zh) 2015-01-11

Family

ID=46967028

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100145055A TWI469046B (zh) 2011-04-07 2011-12-07 基於旋轉的別名保護暫存器中的暫存器配置

Country Status (5)

Country Link
US (1) US9405547B2 (zh)
EP (1) EP2695061A4 (zh)
CN (1) CN103502945B (zh)
TW (1) TWI469046B (zh)
WO (1) WO2012138390A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103827816B (zh) 2011-09-27 2016-11-09 英特尔公司 加快执行时存储器别名使用检查
AU2013387185B2 (en) * 2013-05-30 2016-08-04 Intel Corporation Allocation of alias registers in a pipelined schedule
US10228921B2 (en) 2016-06-01 2019-03-12 International Business Machines Corporation Compiler that performs register promotion optimizations in regions of code where memory aliasing may occur
US10169010B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing
US9934009B2 (en) 2016-06-01 2018-04-03 International Business Machines Corporation Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur
US10169009B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs
US10387147B2 (en) 2017-08-02 2019-08-20 International Business Machines Corporation Managing an issue queue for fused instructions and paired instructions in a microprocessor
US11835988B2 (en) * 2017-12-01 2023-12-05 Advanced Micro Devices, Inc. System and method for load fusion
US11157280B2 (en) 2017-12-07 2021-10-26 International Business Machines Corporation Dynamic fusion based on operand size
US11256509B2 (en) 2017-12-07 2022-02-22 International Business Machines Corporation Instruction fusion after register rename
US11995421B2 (en) * 2022-04-11 2024-05-28 Microsoft Technology Licensing, Llc Register allocation heuristics order

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
TWI287195B (en) * 2004-11-17 2007-09-21 Raytheon Co Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system
US20080288930A1 (en) * 2005-12-30 2008-11-20 Zhenqiang Chen Computer-Implemented Method and System for Improved Data Flow Analysis and Optimization
US7634635B1 (en) * 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
TWI335517B (en) * 2006-08-25 2011-01-01 Via Tech Inc Method of requests access and scheduling and related apparatus thereof

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US6011908A (en) 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US5941983A (en) * 1997-06-24 1999-08-24 Hewlett-Packard Company Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues
CN1107909C (zh) 1997-07-11 2003-05-07 全斯美达有限公司 带临时保存目标处理器状态的装置的主处理器
US6832370B1 (en) 2000-05-09 2004-12-14 Hewlett-Packard Development, L.P. Data speculation within modulo scheduled loops
US7007271B2 (en) 2002-04-18 2006-02-28 Sun Microsystems, Inc. Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer
US7127592B2 (en) * 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
US7681187B2 (en) 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints
JP4957729B2 (ja) 2007-01-25 2012-06-20 日本電気株式会社 プログラム並列化方法、プログラム並列化装置及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US7634635B1 (en) * 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
TWI287195B (en) * 2004-11-17 2007-09-21 Raytheon Co Method, system and computer-readable medium storing thereon logic instructions for scheduling in a high-performance computing (HPC) system
US20080288930A1 (en) * 2005-12-30 2008-11-20 Zhenqiang Chen Computer-Implemented Method and System for Improved Data Flow Analysis and Optimization
TWI335517B (en) * 2006-08-25 2011-01-01 Via Tech Inc Method of requests access and scheduling and related apparatus thereof

Also Published As

Publication number Publication date
US20120260072A1 (en) 2012-10-11
TW201241743A (en) 2012-10-16
WO2012138390A1 (en) 2012-10-11
CN103502945A (zh) 2014-01-08
EP2695061A1 (en) 2014-02-12
US9405547B2 (en) 2016-08-02
CN103502945B (zh) 2017-09-22
EP2695061A4 (en) 2017-05-17

Similar Documents

Publication Publication Date Title
TWI469046B (zh) 基於旋轉的別名保護暫存器中的暫存器配置
KR101746018B1 (ko) 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치
JP6006247B2 (ja) 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム
TWI494851B (zh) 用於推測式述詞指令之功能單元、處理器及方法
US5604878A (en) Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path
US20130054939A1 (en) Integrated circuit having a hard core and a soft core
CN103257849A (zh) 程序执行控制装置
EP3014424B1 (en) Instruction order enforcement pairs of instructions, processors, methods, and systems
JP2014002736A (ja) ループバッファのパッキング
US9996127B2 (en) Method and apparatus for proactive throttling for improved power transitions in a processor core
US20090113192A1 (en) Design structure for improving efficiency of short loop instruction fetch
RU2375768C2 (ru) Процессор и способ осуществления операций непрямого чтения и записи регистра
KR101077425B1 (ko) 효율적 인터럽트 리턴 어드레스 저장 메커니즘
WO2018076979A1 (zh) 一种指令间数据依赖的检测方法和装置
US20080162894A1 (en) structure for a cascaded delayed execution pipeline
WO2007057831A1 (en) Data processing method and apparatus
JP2021086512A (ja) 情報処理装置
KR101711388B1 (ko) 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
KR20130108878A (ko) 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법
US8533721B2 (en) Method and system of scheduling out-of-order operations without the requirement to execute compare, ready and pick logic in a single cycle
US20180088954A1 (en) Electronic apparatus, processor and control method thereof