TW201241743A - Register allocation in rotation based alias protection register - Google Patents
Register allocation in rotation based alias protection register Download PDFInfo
- Publication number
- TW201241743A TW201241743A TW100145055A TW100145055A TW201241743A TW 201241743 A TW201241743 A TW 201241743A TW 100145055 A TW100145055 A TW 100145055A TW 100145055 A TW100145055 A TW 100145055A TW 201241743 A TW201241743 A TW 201241743A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- code
- register
- alias
- schedule
- Prior art date
Links
- 230000004224 protection Effects 0.000 title description 60
- 238000000034 method Methods 0.000 claims description 21
- 230000004927 fusion Effects 0.000 claims description 12
- 238000007689 inspection Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 12
- 230000002441 reversible effect Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 6
- 230000001934 delay Effects 0.000 claims 1
- 238000000853 optical rotatory dispersion Methods 0.000 description 25
- 238000005457 optimization Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000003111 delayed effect Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101100162203 Aspergillus parasiticus (strain ATCC 56775 / NRRL 5862 / SRRC 143 / SU-1) aflG gene Proteins 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register 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
201241743 六、發明說明: 【發明所屬之技術領域】 本發明係關於基於旋轉的別名保護暫存器中的暫存器 配置。 【先前技術】 軟硬體協同設計系統可利用動態二進制優化而提升效 能。對於記憶體指令的動態二進制優化而言,可能需要記 憶體別名資訊。動態二進制優化可利用硬體別名檢查以推 測一原子區之記憶體最佳化。當一載入指令在一存回指令 之前被推測記錄,兩指令之間具有可能的記億體別名,該 載入指令可能需要設定一儲存其記憶體位址之別名保護暫 存器。當對該存入指令執行作回應,該存回指令可核對該 別名保護暫存器與其記憶體位址以偵測是否推測失誤。推 測失誤可能導致全區轉返和沒有優化或較無優化碼之重新 執行。 【發明內容及實施方式】 茲將描述提供別名暫存器配置演算法之技術以減少在 基於旋轉之別名保護暫存器中暫存器之使用。實行此技術 並不用侷限在電算系統,亦可使用相似目的之執行環境, 例如任何其他數位/電子裝置。在以下說明中,茲將提出 各項細節,例如邏輯實現、操作碼(opcode )、指定運算 元的方法、資源劃分/分享/複製實現、系統元件之類型和 -5- 201241743 相互關係、及邏輯分割/整合選擇,以提供對本發明更周 詳的瞭解。然而,本發明不須以如此細節來施行》在其他 範例中,並沒有詳細顯示控制結構、全軟體指令序列,以 不混淆本發明之說明。 此說明書提及之「一實施例」表示所述實施例可包含 —特定特徵、結構或特性,但每個實施例不一定包含該特 定特徵、結構或特性。又,該詞彙「一實施例」不一定指 稱相同的實施例。再者,當於一相關實施例中描述一特定 特徵、結構或特性,茲認爲不論是否有明顯說明,熟悉此 項技術者可知悉以其他相關實施例可達到此特徵、結構或 特性。 本發明之各實施例可以在硬體、軟體、韌體或其任一 組合中實施。本發明之各實施例亦可以指令形式儲存於一 可被一或多個處理器讀取及執行之機器可讀取媒體中。一 機器可讀取媒體可包含任何可由一機器(例如:一電算裝 置)讀取以儲存或傳輸資訊之機制。舉例而言,一機器可 讀取媒體可包含唯讀記憶體(ROM )、隨機存取記憶體( RAM )、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置 、電子、光學 '音響或其他形式之傳播訊息(例如:載波 、紅外線訊號、數位訊號等)。 以下說明可能包含第一、第二等用以作爲說明目的之 措辭,但是並非用來作爲限制之用。 第1A圖繪示一系統100之一例示實施例之方塊圖。 該系統100可包括一可包含能執行軟體及(或)處理資料 -6- 201241743 訊號之任何形式處理器之處理器102。在一實施例中,該 處理器102可包括一複雜指令集電腦(CISC)微處理器、 精簡指令集計算(RISC )微處理器、超長指令字(VLIW )微處理器、一執行指令集組合之處理器、或任何其他處 理器裝置,例如一微處理器、數位訊號處理器或微處理器 等之數位訊號處理器。 雖然第1A圖僅顯示一上述處理器102,該系統100 可具有一或多個可包含多執行緒、多核心之類的處理器。 在此揭示改進者並不限於電算系統。本發明其他實施例可 用於其他形式使用統一可延伸韌體介面(UEFI )基本輸入 /輸出系統(BIOS )裝置,例如手持式裝置、內嵌式應用 。手持式裝置之例子包括行動電話、網路通訊協定(IP) 裝置、數位相機、個人數位助理(PDA )或手持式個人電 腦,例如小筆電或筆記型電腦。內嵌式應用包含微控制器 、數位訊號處理器(DSP )、系統單晶片、網路電腦( NetPC )、視訊轉換器、網路集線器、廣域網路(WAN ) 交換器、或其他系統。 該處理器1 02可與一系統邏輯晶片1 04耦合。例如, 在所述實施例之系統邏輯晶片1 04可爲一記億體控制集線 器(MCH )。在一實施例中,該記憶體控制集線器(MCH )104可提供一記憶體路徑120至用以儲存指令和資料及 (或)儲存繪圖指令、資料、及紋理(textures )之系統 記憶體1 06。該記億體路徑1 20可包括一記憶體匯流排。 該記憶體控制集線器(MCH) 104可指揮介於該處理器 201241743 102、該系統記憶體1〇6、及其他系統100中的元件且連結 介於該處理器102、該系統記憶體1〇6、及系統輸入輸出 之間之資料訊號。該系統記憶體106可爲硬碟、軟碟、隨 機存取記憶體(RAM )、唯讀記憶體(ROM )、快閃記憶 體、或任何其他形式可由處理器102讀取之媒體。 該記憶體控制集線器(MCH ) 104可透過一區域輸入 輸出(I/O)互連而與一輸入輸出控制集線器(ICH) i 08 耦合。在一實施例中,該區域輸入輸出互連可爲—高速輸 入輸出匯流排,例如周邊元件互連(pci )匯流排。該輸 入輸出控制集線器(ICH ) 108可透過一區域輸入輸出互 連提供與一或多個輸入輸出裝置之連結。輸入輸出裝置之 例子包括資料儲存裝置118、語音輸入輸出120、鍵盤/滑 鼠輸入輸出122、及網路控制器116、或其他整合式輸出 輸入元件,例如整合式驅動電子裝置(IDE)、區域網路 (LAN )、及例如通用序列匯排流(USB )、周邊元件互 連(PCI)插槽(未顯於圖中)、無線收發器、傳統式輸 入輸出控制器之類的擴充序列埠。該資料儲存裝置M8可 包括硬碟、軟碟、唯讀光碟(CD-ROM)、快閃記憶體裝 置、或其他大量儲存裝置。 參照第1A圖,非揮發性記憶體,例如快閃記憶體 112,可能透過如一低針腳數(LPC)匯流排與該輸入/輸 出控制集線器(ICH)耦合。該基本輸入/輸出系統(BIOS )韌體Π 4可存在於該快閃記憶體1 1 2,開機可由該快閃 記憶體或韌體執行指令。雖然第1A圖繪示該基本輸入/輸
201241743 出系統(BIO S )韌體1 1 4位於該快閃記憶體1 1 2中,在某 些實施例中,該基本輸入/輸出系統(BIOS )韌體1 14可 儲存於其他如韌體集線器之類之非揮發性記憶體。在一實 施例中,該基本輸入/輸出系統(BIOS )韌體1 14可經由 統一可延伸韌體介面(UEFI)韌體或任何其他韌體而執行 〇 雖然第1A圖繪示的是系統100,根據本發明之實施 例可用於任何其他硬體架構中,例如可運用一使用複數處 理器核心之平台或一使用一處理器或一共處理器之平台、 一使用輸入輸出集線器之平台、或內崁於處理器之記憶體 控制等。 第1B圖繪示一實行本發明原理之系統140之另一實 施例。該系統140可包括一可包含能執行軟體及(或)處 理資料訊號之任何形式處理器之處理器142。在一實施例 中,該處理器142可包括上述有關該處理器丨〇2之任何形 式的處理器或處理器裝置。在一實施例中,該處理器142 可透過一記億體路徑(未顯示於圖中)而與用以儲存指令 、資料及(或)儲存繪圖指令、資料、紋理之系統記憶體 144耦合。在另一實施例中,該處理器142可透過一周邊 元件互連(PCI )互連而與一或多個周邊元件互連(pci ) 埠160耦合。然而’在某些實施例中,也許不需要該周邊 元件互連(PCI )埠160。該系統記億體144可爲硬碟、 軟碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、 快閃記憶體、或任何其他形式可由處理器1 4 2讀取之媒體 -9- 201241743 雖然第1B圖僅顯示一上述處理器142, 可具有一或多個可包含多執行緒、多核心之類 在此揭示改進者並不受於電腦系統或資料處理 本發明其他實施例可用於其他形式使用統一可 面(UEFI)基本輸入/輸出系統(BIOS)裝置 式裝置、內嵌式應用。手持式裝置之一些例子 話、網路通訊協定(IP)裝置、數位相機、個 (PDA )或手持式個人電腦,例如小筆電或筆 或智慧型裝置、例如平板電話或智慧型電話等 用包含微控制器、數位訊號處理器(DSP )、 、網路電腦(NetPC )、視訊轉換器、網路集 網路(WAN )交換器、或任何其他系統。 該處理器142可與一系統邏輯晶片146耦 在所述實施例之系統邏輯晶片1 4 6可爲一平台 (PCH )。在一實施例中,該平台控制集線器 可透過一區域輸入輸出(I/O)互連提供與一 輸出裝置之連結》在一實施例中,該區域輸入 爲一種如周邊元件互連(PCI)匯流排之高速 流排。該平台控制集線器(P C Η ) 1 4 6可指揮 器142和系統140中之一或多個元件之間之資 他資訊,且連結介於該處理器142和系統輸入 資料訊號或資訊。 上述一或多個元件之例子包括資料儲存裝 該系統1 4 0 的處理器。 裝置系統。 延伸韌體介 ,例如手持 包括行動電 人數位助理 記型電腦、 。內嵌式應 系統單晶片 線器、廣域 合。例如, 控制集線器 (PCH ) 146 或多個輸入 輸出互連可 輸入輸出匯 介於該處理 料訊號或其 輸出之間之 置 152 、 一
-10- S 201241743 或多個周邊元件互連(PCI )埠154、網路控制156、及通 用序列匯排流(USB)璋158。在一實施例中,該資料儲 存裝置152可包括硬碟、軟碟、唯讀光碟(CD-R〇m)、 快閃記憶體裝置、或其他大量儲存裝置。雖然第1B圖顯 示某些元件例示,該平台控制集線器(PCH ) 146可連接 任何其他元件,例如語音輸入輸出、鍵盤/滑鼠輸入輸出 、及其他整合式輸出輸入元件,例如整合式驅動電子裝置 (IDE )、區域網路(LAN )、及無線收發器、傳統式輸 入輸出控制器之類的其他擴充序列埠。 參照第1B圖,非揮發性記憶體,例如快閃記憶體 148 ’可能透過如一低針腳數(LPC )匯流排與該輸入/輸 出控制集線器(ICH ) 146耦合。基本輸入/輸出系統( BIOS )韌體150可存在於該快閃記憶體148中,開機可由 該快閃記憶體或韌體執行指令。雖然第1 B圖繪示該基本 輸入/輸出系統(BIOS)韌體150位於該快閃記憶體148 中,在某些實施例中,該基本輸入/輸出系統(BIOS )韌 體1 5 0可儲存於其他如韌體集線器之類之非揮發性記憶體 。在一實施例中,該基本輸入/輸出系統(BIOS )韌體 1 5 0可經由統一可延伸韌體介面(UEFI )韌體或任何其他 韌體而執行。 雖然第1B圖繪示的是系統140,根據本發明之實施 例可用於任何其他軟、硬體架構中,例如可運用一使用複 數處理器核心之平台或一使用一處理器或一協處理器之平 台、一使用輸入輸出集線器之平台、或內嵌於處理器之記 -11 - 201241743 憶體控制等。 第ic圖繪示一實行本發明原理 施例。該系統1 60可包括一可包含倉g 理資料訊號之任何形式處理器之處 162可包括上述有關該處理器1〇2之 處理器裝置。該系統160可包括一能 匯流排、記憶體路徑等之任何其他連 記憶體163可耦合至處理器162。該 包括硬碟、軟碟、隨機存取記憶體( C ROM )、快閃記憶體、揮發性記憶 憶體裝置、或任何其他形式可由該處 。在另一實施例中,該處理器162可 合,該網路元件164可包括有線網路 路連接或任何其他網路連接。該處理 輸出控制器165耦合,該輸入輸出控 個輸入輸出裝置166耦合。第1C圖 施例。在某些實施例中,該系統160 硬體、軟體、韌體或其任一組合執行 實施例中,該系統1 60之例子可包 ΙΑ、1B圖有關之裝置或設備。 第2A圖係一根據本發明一實施 號210係指第2A圖所示如st〇re_0、 碼或指令。在一實施例中,該原始碼 而,在某些實施例中,不一定需要該 之系統160之另一實 :執行軟體及(或)處 理器162。該處理器 .任何形式之處理器或 透過一互連168或如 接之一記憶體163, 記憶體163之例子尙 RAM )、唯讀記憶體 體裝置或非揮發性記 理器162讀取之媒體 與一網路元件164耦 連接和(或)無線網 器162又可與一輸入 制器165可與一或多 繪示系統160之一實 可包括一或多個可於 之其他元件。在另一 括任何形式與上述第 例之示意圖。元件符 st〇re_l··.次序之原始 可位於一原子區;然 原子區。在一實施例 -12- 201241743 中,原始碼210可被記錄或排程至排程碼或可具有和該原 始碼不同次序或序列之指令220。例如,指令220a可指一 可被排程至將要執行之第一指令(例如:執行邏輯)之記 憶體存回指令store_5。第2A圖之實施例可使用基於旋轉 之別名保護暫存器,使各記憶體指令設定一別名保護暫存 器,且以一位元遮罩核對一組別名保護暫存器。 在一實施例中,可運用一基於旋轉的別名檢査。別名 保護暫存器可基於指示該循環緩衝器標題之AHPTR (別名 標題指標)270旋轉而編排於一循環緩衝器或環狀佇列。 一記億體指令可指定一與當時之AHPTR 270有關之別名 保護暫存器數ORD 230 (可能以環繞方式)。舉例而言, 參照第2A圖,依據該原始碼之次序,一用於該第一指令 st〇re_0之具有0個暫存器ORD之第一別名保護暫存器可 設定於該循環緩衝器之標題,該第二指令st〇re_l係指定 一第二別名保護暫存器具有1個暫存器ORD,其後以此推 斷。在另一實施例中,一記億體指令可具有一 P位元,該 P位元指出硬體(例如:處理器102或142或任何其他執 行邏輯)可設定當前指令所用之別名保護暫存器之暫存器 數目 AHPTR + ORD。在一實施例中,在介於[AHPTR + ORD, AHPTR]範圍內之暫存器會被核對。例如,如果AHPTR = 2 且ORD=l,則全部暫存器之數目爲5 (例如·· 0-4),介 於[3,2]範圍之暫存器3、暫存器4、暫存器0、及暫存器! 會被檢查。在一實施例中,可能使用環繞方式。 一記憶體指令可具有一 C位元,該C位元係指出硬體 -13- 201241743 (例如:處理器或任何其他執行邏輯)可核對暫存器數>= AHPTR + ORD之所有別名保護暫存器(可能以環繞方式) 。當對該指令排程做回應,具有ORD 23 0之別名保護暫存 器數可依據該指令之一原始執行次序而配置。例如,在第 2A圖中,具有ORD 23 0之別名保護暫存器數可被配置爲 原始程式執行之次序。 在另一實施例中,一記憶體指令可指定一旋轉數ROT ,該旋轉數ROT可指出別名標題指標可旋轉的量。在一 實施例中,該旋轉數ROT可用以指示可釋放所有介於 AHPTR和AHPTR + ROT之間之別名保護暫存器(可能以環 繞方式,包含AHPTR,排除AHPTR + ROT),例如在執行 —指令前。在一實施例中,硬體如處理器102或142可藉 由 ROT旋轉 AHPTR,且清除所有用於 AHPTR和 AHPTR + ROT之間之別名保護暫存器之有效位元。 在一實施例中,對於以一P位元設定一別名保護暫存 器來做回應,可用硬體爲該暫存器設定一有效位元。例如 ,一具「邏輯1」之有效位元可代表一會被硬體核對之有 效別名保護暫存器。在另一實施例中,一具有邏輯値(例 如:〇 )之有效位元係指對應的別名保護暫存器不會被核 對。例如,第2A圖之元件符號240係指“Vaild_all”可具 有一組用於一或多個別名保護暫存器之一或多個有效位元 。在一實施例中’該“vaild_all” 240之有效位元數可與別 名保護暫存器數及(或)排程指令數相等》然而,在某些 實施例中,有效位元數可和排程指令數不同。例如,依據 -14- 201241743 原始碼之次序,用於最後指令store_5之ORD爲5之別名 保護暫存器的有效位元可設定於vaild_all 24 0之最高位元 ,用於該第一指令store_0之ORD爲0之別名保護暫存器 的有效位元可設定於vaild_all 240之最低位元,以此推斷 。然而,在某些實施例中,在該vaild_all 240之有效位元 可以不同次序設置。在某些實施例中,在該vaild_all 240 之有效位元可依據用於各別名保護暫存器之ORD之次序 〇 舉例而言,欄位vaild_all 240a可爲000000,其係代 表對於排程序列中第一指令之指令st〇re_5沒有核對任何 別名保護暫存器。欄位valid_all 240b可與排程碼中一後 續指令 store_2 有關。欄位 valid_all 240b 可爲 100000, 其中有效位元“1”可與前一指令store_5相對應,係指對於 指令st〇re_5會核對其別名保護暫存器。且,240b之有效 位兀 〇〇〇〇〇 係指對於 store_2 本身、store_0、load_4、 st〇re_l、及load_3不會核對其別名保護暫存器。 參照第2A圖,欄位vaild_st 250可與一存回指令相 關且包括一組一或多個有效位元。例如,vaild_st 250與 vaild_all 240不同之處在於:一用於一載入指令之別名保 護暫存器之有效位元在vaild_st 2 50具有邏輯値0。在一 實施例中,硬體如處理器1 02或1 42或其他執行邏輯在執 行各指令前,可維持用於各別名保護暫存器之有效位元, 且計算用於檢查之位元遮罩260。一載入指令不一定會核 對另一載入指令。從用於l〇ad_3之位元遮罩260a來看, -15- 201241743 load_4也許沒有有效位元(例如:邏輯値i ),亦或 load_4之別名保護暫存器之有效位元可能未被斷言。在另 —實施例中,就l〇ad_3之位元遮罩260a而言,原始執行 次序依次在l〇ad_3之前之store_0、store_l、store_2也許 沒有有效位元。該硬體可能爲所有指令(例如:valid_all 240 )以及僅爲存回指令(例如:valid_st 2 50 )維持個別 的有效位元。存儲指令指核對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、val id st 250、及 valid mask 260 以做另!J 名 檢査。 參照第2B圖,其係繪示暫存器配置之一實施例。在 —實施例中,第2B圖之暫存器配置可用以減少用於基於 旋轉之別名保護暫存器設計之別名保護暫存器的數目,且 不會產生誤肯定或誤否定。第2B圖之實施例可與指令排 -16- 201241743 程和最佳化整合’且可用於動態優化。在一實施例中,並 非每個記憶體指令皆要設定一別名保護暫存器,而且並非 每個記憶體指令皆要核對其他別名保護暫存器。舉例而言 ,在第2B圖中,store_0、store_l、及store_3三者皆不 用設定一別名保護暫存器,因爲沒有指令會核對它們。 store_5不會核對任何其他別名保護暫存器,因爲其被排 程爲該區的第一指令。第2B圖之實施例可使用三個暫存 器,而非六個。 參照第 2B 圖,store_5、store_2、及 store_4 可能需 要保護(例如:其P位元可設爲1,其C位元(圖中未顯 示)可設爲〇),它們的暫存器ORD數可分別指定爲2、 0、及 1。store_0、store_l、.及 load_3 可能不需要保護, 且可能僅核對其他別名暫存器(例如:其P位元可設爲0 ,其C位元可設爲1)。第2B圖繪示一依據ORD、P、及 C 計算 valid_all 240、valid_st 250、及遮罩 206 之實施例 〇 第2C圖顯示另一暫存器配置之實施例。在第2C圖之 實施例中,當對裁定st〇re_l和load_4沒有存取相同記憶 體做回應,例如藉由軟體分析,store_l不會核對load_4 。第2C圖之實施例可使用兩個暫存器。參照第2C圖, store_5、store_2 (例如:其P位元=1 )可被保護,且其 分別分派具有ORD 1和〇之暫存器。store_0、load_4、 store_l、及l〇ad_3 (例如:其P位兀=0,C位兀=1)可以 只核對其他別名暫存器。在第2A-2C圖之實施例中,暫存 -17- 201241743 器配置可依照一原始程式次序。例如’在原始程式中如果 —第一指令將在一第二指令前執行,該第一指令之暫存器 數不會大於第二指令之暫存器數。 第2D圖顯示另一暫存器配置之實施例。一資料相依 之實施例係顯示於第2D圖中。舉例而言’如果1)指令 Α1在原始編程次序中在指令Α2之前將被執行:2)指令 A1和Α2可存取相同記憶體;3 )指令A1和Α2其中至少 —者爲一存回指令,即可定義出資料相依A1+A2。第2D 圖另顯示一檢查限制之實施例。舉例而言’當指令排程器 推測A1和A2在運行時沒有衝突時,該指令排程器可能 將A 2移到A1之前。例如,該指令排程器可經由軟體而 執行。如果A1+A2成立且指令A2被記錄於A1之前’可 爲A2設定一別名保護暫存器以核對A1。如果1) A1+A2 成立;2 )指令A2經由排程而被記錄於A1之前’即可定 義出一檢査限制Al=>c A2。在一實施例中’指令A1可核 對指令A2以回應該檢查限制Al=>c A2。在某些實施例中 ,檢查限制不一定能變遷。例如,Al=>c A2和A2 = >c A3 不一定意謂Al=>c A3。 在一實施例中,該檢査限制Al=>c A2可裁定哪個指 令可設定一別名保護暫存器,及哪個指令可核對其他指令 。舉例而言,該檢査限制Al=>c A2可裁定指令A2設定 —新的P位元別名保護暫存器,且指令A1(C位元)可 核對指令A2。第2D圖繪示一在原始程式次序之暫存器配 置之實施例。例如,如第2D圖所示,load_l和load_3可 -18- 201241743 依據如第2D圖所示之對應檢查限制及(或)資料相依 P位元設定新的別名保護暫存器。暫存器0、1可根據 原始程式次序分別配置於load_l和load_3。st〇re_2可 對排程於load_2之前之load_3之暫存器1。store_〇可 對排程於store_0之前之指令load_l之暫存器〇。在第 圖之實施例中,可能沒有檢查限制store_0 = >c load_3 ( 如:store_〇可能沒有和l〇ad_3存取相同記憶體), store_0可能不需核對l〇ad_3。 第2E圖顯示非置於原始程式次序之一暫存器配置 實施例。例如,參照第2E圖,暫存器0、1可以和其原 程式次序相反之次序分別配置於load_3及l〇ad_l。參 第2E圖,用於load_3 ( ORD/0/P )之暫存器0可能僅 st〇re_2 ( ORD/0/C )檢査。第 2E圖之實施例中, st〇re_2之後暫存器0可能不會被核對。參照第2F圖 AHPTR可被ROT “1”旋轉而釋放暫存器0。例如,暫存 〇可被旋轉而於l〇ad_l剛開始執行時被釋放;然而,在 些實施例中,暫存器〇可被釋放以對該暫存器已經被核 及沒有被任何其他指令使用做回應。在另一實施例中, 轉可於st〇re_2執行後被實行。爲回應該旋轉,AHPTR 增加1 (例如:當前的 AHPTR=1 )。在計算當前 AHPTR時,後續指令之ORD可依然爲卜第2E圖和 2F圖可做相同的別名檢査。例如,第2F圖在旋轉時可 暫存器數減少爲1個》 在第2F圖之暫存器旋轉配置之實施例中,load_3 以 其 核 核 2D 例 且 之 始 照 被 在 9 器 某 對 旋 可 的 第 將 所 -19- 201241743 用之暫存器〇可經由暫存器旋轉而被釋放,以回應 store_2已核對暫存器0。在此實施例中,可使用一暫存器 。第2F圖顯示一依據ORD、P、c、ROT、及暫存器計數 REG (例如:1 )計算valid_all、vaiid_st、及遮罩之實施 例。在一實施例中,可以公式來計算valid_all、valid_st 、及遮罩作爲相關之ΑΗΡTR。例如: 遮罩(n) =valid_all ( η ) &〜((l<<〇RD(n) ) -1), 如果η爲一存回指令和C(n); = valid_st(n)&〜((l<<〇RD(n) )·1),如果 η 爲一載入指令和C(n)。 在一實施例中,硬體可藉由AHPTR「循環左移」該遮 罩以進行檢査。在一實施例中,「循環左移」可將遮罩的 位元向左移且環繞溢位位元至右。例如,遮罩00001111 循環左移2就會得到0011100。在第2F圖之實施例中, valid_all、valid_st、及遮罩可計算出相對的 AHPTR。例 如,如果AHPTR = 2,遮罩00001111係表示暫存器2至暫 存器5具有遮罩値1,而暫存器6、7、0、1各具有遮罩値 0 ° 第2G圖之實施例可用來表示基於指令排程整合之檢 査限制和反檢查限制之暫存器配置。在一實施例中,如果 Al=>cA2,Al之暫存器不會大於A2,如此A1才能核對 A2。在某些實施例中,可將檢査限制和反檢查限制用於暫 存器配置以避免別名檢査時發生誤肯定。在一實施例中, 如果1) A1今A2; 2) A1可依據一檢查限制A0 = >c A1設 -20- 201241743 定一別名保護暫存器;3 ) A2可依據一檢查限制A2 = >c A3核對某些別名保護暫存器;及4)排程沒有在A1之前 記錄A2,即可定義出一反檢查限制Al=>acA2。 在一實施例中,依據反檢査限制Al=>ac A2,爲了防 止A2核對A1 (例如:避免可能發生的誤肯定),A1之 暫存器數可能小於A2的暫存器數。檢查限制可用來減少 或使暫存器配置中的限制減至最少,以防止檢查時發生的 誤否定,且反檢查限制可用以減少或使暫存器配置中額外 的限制減至最少,以防止檢查時發生的誤肯定。 第2G圖之實施例可在用完別名暫存器時用來動態限 制排程。參照第2G圖,在排程時檢査限制和反檢查限制 可遞增地建構。用於一指令之暫存器可以只有在該指令已 受到排程之情況才配置。如果Al=>c A2或Al=>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圖之實 施例中,一指令之暫存器配置可以延遲至所有檢查指令是 否排程之暫存器之後(例如:依據檢査限制)。在一實施 -21 - 201241743 例中,一或多個配置之暫存器可在對應之排程指令之後( 例如:指有在下依排程指令開始時)被釋放。雖然第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)之重排序,以對暫存器用完做回應。在 —實施例中,其餘的指令可以其原始執行次序排程以防止 重排序。 -22- 201241743 第2H圖繪示一使用別名暫存器以處理記憶體最佳化 之實施例。如果第二記憶體運算和其他記億體運算衝突, 此記憶體最佳化可能是推測的。例如,推測性記憶體最佳 化可使用別名暫存器保護和檢查。在指令排程前可應用最 佳化’且別名暫存器配置可在指令排程過程中實行;然而 ’在某些實施例中,不一定需要指令最佳化。對該最佳化 以及在排程過程中,最佳化碼可以被邏輯地視爲與其他指 令熔合消除之指令,該熔合指令/碼可用於所有消除指令 上的別名檢查》參照第2H圖,在存回-載入消除282之實 施例中*程式碼可以被邏輯地視爲load_2熔合至store_l 。在載入-載入消除284,程式碼可以被邏輯地視爲l〇ad_2 熔合至l〇ad_l。在存回-存回消除286,程式碼可以被邏輯 地視爲store_l熔合至store_2。在一實施例中,該熔合指 令可包含一或多個邏輯指令/碼。 在熔合指令排程過程中,可考量該熔合指令在邏輯指 令上的限制。例如,在第21圖所示之程式碼中,可由 store_0和load_3應用存回-載入消除。在最佳化之後及排 程中,在排程store_0時,可考量到加諸於st〇re_0和 load_3兩者之限制。第21圖係顯示此暫存器配置。參照 第21圖,在最佳化時,store_2可檢查load_3,store_0可 檢查load_l。當對load_3和store_0可合倂爲store_0做 回應,store_2 可檢查 store_0,store —0 可檢査 load_l。 st〇re_0和load_l可能需要保護(P位元=1),且可分派 至暫存器〇、1。store_2和store_0可核對(C位元=1)暫 -23- 201241743 存器0。store_0可在設定保護(P位元=1)前核對暫存器 0,因此store_0可以不檢查自己。 在某些實施例中,熔合指令可於資料相依中包含數個 會導致檢查或反檢査限制之循環。例如,可以下列表示檢 查或反檢査限制中的一循環:store_0(load_3) =>c load_ 1 =>ac store_2 = >c store_0 ( load_3 )。在一實施例中 ,如果該檢查或反檢査限制包含循環,配置別名保護暫存 器可能導致誤否定和誤肯定。 第2J圖顯示一插入一虛擬載入以打破限制循環之實 施例。參照第2J圖,在一實施例中,熔合指令可使用— 或多個別名保護暫存器以打破限制循環。在另一實施例中 ,一虛擬記憶體指令可在該熔合指令存取相同記憶體後立 即被插入,但是可使用和該熔合指令不同之別名保護暫存 器。在一實施例中,硬體可執行該虛擬記憶體指令以僅實 行別名保護或檢査’而不用實際存取記憶體以減少操作負 擔。 在一實施例中,如果限制循環沒有常常發生,當限制 循環將要發生時可插入一虛擬記憶體運算。例如,在排程 過程中,可追蹤熔合指令中個邏輯指令之P/C位元之資訊 。假使該P/C位元在一熔合指令中一或多個邏輯指令上, 可插入虛擬記憶體指令以分割該P/C位元。在某些實施例 中,如果該熔合指令之一或多個邏輯指令存取相同的記憶 體,可避免在該熔合指令之一或多個邏輯指令上設定P/C 位元。例如’如第2H圖所示之載入-載入消除的情況下, -24- 201241743 當對load_2總是被load_l檢査之指令做回應,load_2上 的C位元可能不會被設定。同樣的,爲了對lo ad_l總是 被load_2檢查之指令做回應,load_l上的P位元可能不 會被設定。在一實施例中,不論有多少邏輯指令合倂於一 熔合指令中,可保持至多三個邏輯指令上之C/P位元,例 如C位元最先指令、P位元最後指令、及P位元最後存回 指令。第2J圖繪示一使用虛擬記憶體指令以打破循環之 範例。 在某些實施例中,虛擬記憶體指令可打破循環,但不 一定會移除檢查或反檢查限制。假使在對於排程之不足之 別名保護暫存器循環的情況下,可能不會進行虛擬記億體 指令之排程。例如,在第2J圖所示之排程中,爲了對在 排程load_l之後沒有任何別名保護暫存器做回應,如果 其排程至少需要一個別名保護暫存器,st〇re_〇或st〇re_2 可能不會被排程。第2J圖之實施例可繪示如果store_〇即 將·被排程,將被store_2檢查之dummy_l〇ad可能需要一 個新的別名保護暫存器。如果store_2即將被排程,可能 將被store_0 ( Ioad_3 )核對之store_2可能需要一個新的 別名保護暫存器。在一實施例中,store_2之排程可依據 其可用的新的別名保護暫存器而執行。例如,當st〇re_2 不具有或沒有可用的新的別名保護暫存器時,store_2可 能不會被排程。 在一實施例中,可保留一些別名暫存器。舉例而言, 其數量可以等於熔合指令中消除的指令之數目。如果所有 -25- 201241743 剩餘的指令以其原始次序排程(對熔合指令而言爲其第一 邏輯指令之次序),只有被記錄的邏輯指令需要額外的別 名暫存器》由於保留別名暫存器,排程可執行而不會用完 暫存器。 第2K圖說明一延伸第2G圖之暫存器配置以因應暫 存器溢位和限制循環之演算法的實施例。參照第2K圖, 該實施例可保留所有熔合指令之暫存器計數。在一實施例 中,可保留熔合指令中一些消除的指令之別名暫存器,以 避免用完暫存器。在另一實施例中,如果所有剩餘的指令 以其原始次序排程(對熔合指令而言爲其第一邏輯指令之 次序),只有被記錄的邏輯指令需要額外的別名暫存器。 第3圖繪示一方法之實施例。可使用第3圖之流程來 進行最佳化及原始碼之排程。在一實施例中,第2A-2K圖 所示之一或多個實施例可用於第3圖之流程。在一實施例 中,第3圖之流程可用以執行一可使原始碼最佳化和(或 )排程之最佳化器/排程器。在一實施例中,可以軟體執 行該最佳化器/排程器;然而,在某些實施例中,可以硬 體、軟體、韌體、及(或)其任何組合而執行該最佳化器 /排程器。在方塊302,該最佳化器/排程器可計算介於指 令Al、A2之間之資料相依,例如Ai +A2。在方塊304, 該最佳化器/排程器可保留一些別名暫存器以防止由於一 或多個熔合指令造成之暫存器溢位。在一實施例中,別名 暫存器數可等於熔合指令數。然而,在某些實施例中,別 名暫存器數可爲不同的値。在方塊306,該最佳化器/排程 -26- 201241743 器可選擇一指令(例如:第二指令A2 )排程,直到原始 碼中所有指令皆已排程。 在方塊308中,對裁定所選第二指令A2之排程可能 造成別名暫存器溢位做回應,該最佳化器/排程器可回到 方塊306,其中該最佳化器/排程器可選擇第三指令A3而 非第二指令A2。對於在方塊306選擇第三指令A3做回應 ,該最佳化器/排程器可裁定是否該第三指令A3用完別名 暫存器(方塊3 08 )。如果是,該最佳化器/排程器可繼續 選擇一不同指令排程,直到裁定所選指令不會造成別名暫 存器溢位。該最佳化器/排程器可將所選指令排程以回應 裁定所選指令不會造成別名暫存器溢位(方塊308 )。在 方塊3 1 0,該最佳化器/排程器可增加與排程指令(例如: A3 )相關之限制至限制圖(如第2K圖所示),且設定相 對應的C/P位元。在一實施例中,該最佳化器/排程器可 爲已排程指令A3增加檢查限制和(或)反檢查限制至檢 查圖或任何其他結構中。在方塊3 1 2,該最佳化器/排程器 可插入虛擬記憶體運算或程式碼以防止限制圖的循環。在 一實施例中,如果該已排程指令A3爲一熔合指令,該最 佳化器/排程器可移除不必要的C/P位元。在另一實施例 中,如果該已排程指令在多個邏輯指令上具有C/P位元, 該最佳化器/排程器可插入一或多個虛擬記憶體運算或指 令以分割該C/P位元。在另一實施例中,如果該已排程指 令不需任何別名暫存器,該流程可回到方塊3 06以選擇和 將下一指令排程(方塊314)。在方塊316,該最佳化器/ -27- 201241743 排程器可經由旋轉釋放一已配置別名暫存器。例如,所述 釋放可在回應已被核對且沒有其他指令要核對已配置暫存 器時執行。在一實施例中,該別名保護暫存器可在開始執 行下一指令時被釋放。在另一實施例中,被一當前指令使 用之別名保護暫存器之配置可延遲到暫存器在開始執行下 一指令時被釋放。在方塊316,AHPTR可被更新以回應旋 轉。在方塊3 1 8,如果該限制圖之限制能防止已排程指令 之別名暫存器配置,例如,如果有一或多個來自沒有被排 程之後續指令之限制,該最佳化器/排程器可延遲用於當 前已排程指令之暫存器配置。在一實施例中,用於當前已 排程指令之別名暫存器可配置以回應後續已被排程之指令 〇 例如,上述流程可回到方塊3 06以選擇下一指令並將 其排程。在方塊320,對裁定用於當前已排程指令之暫存 器配置可能不需要延遲做回應時,該最佳化器/排程器可 配置一用於該已排程指令之別名暫存器。在方塊322,對 於配置新的用於該已排程指令之別名暫存器做回應時,該 最佳化器/排程器可移除與該排程指令相關之限制,及( 或)可遞迴配置用於該已排程指令之別名暫存器,其暫存 器配置由於限制而受到延遲》 在一實施例中,第2A-2K圖和第3圖之實施例可用於 基於旋轉之別名保護暫存器中的暫存器配置。在一實施例 中,該實施例可用來減少用於基於旋轉之別名保護暫存器 之暫存器數。例如,可運用減少暫存器數以達到最佳化效 -28- 201241743 益和成效。減少別名暫存器可減少別名硬體以節省晶片面 積和功率消耗。雖然第3圖所示之方法包括一連串製程, 某些實施例的方法可以不同次序實施所示製程。雖然第3 圖和(或)第2A-2K圖所示之實施例可由一最佳化器/排 程器執行,在某些實施例,指令最佳化和排程可分別藉由 一最佳化器和一排程器各自執行,或在某些實施例,可使 用一或多個如暫存器配置之邏輯來執行第3圖和(或)第 2A-2K圖之實施例。在另一實施例中,指令最佳化和排程 可藉由一最佳化器或一排程器執行。雖然在此描述實施例 可與存回和(或)載入指令有關,在某些實施例中,亦可 使用任何其他記憶體指令。 雖然本發明某些特徵已在相關實施例中說明,本說明 並無意以此爲限》熟悉相關技術者應知悉,各種對於本發 明實施例、其他實施例之修改皆應視爲不超過本發明之精 神與範圍。 【圖式簡單說明】 在此描述之本發明附加圖示係作爲範示之用,而非作 爲限制之用。爲了簡化、清楚說明,圖示中各元件不一定 要按照比例繪示。例如,相對於其他元件,有些元件的尺 寸可能被放大以清楚表示。再者,在適當情況下,圖示當 中某些標號被重複以指示對應或類似的元件。 第1 A圖係根據本發明一實施例之一例示系統之方塊 圖; -29- 201241743 第1B圖係根據本發明—實施例之另一例示系統之方 塊圖; 第1 c圖係根據本發明一實施例之又一例示系統之方 塊圖; 第2A-2K圖係根據本發明某些實施例之基於旋轉的別 名保護暫存器之暫存器配置示意圖; 第3圖係根據本發明某些實施例之一流程圖。 【主要元件符號說明】 100 、 140 、 160 :系統 1 02、1 42、1 62 :處理器 1〇4 :記憶體控制集線器 106、144 :系統記憶體 108 :輸入/輸出控制集線器 112、148 :快閃記憶體 114、150:基本輸入/輸出系統韌體 1 1 6 :網路控制器 1 1 8、1 5 2 :儲存裝置 120 :語音輸入/輸出 122 :鍵盤/滑鼠 i 46 :平台控制集線器(系統邏輯晶片) 154 :周邊元件互連(埠) 1 5 6 :網路控制 1 5 8 :匯流排埠 -30- 201241743 163 :記憶體 164 :網路元件 165 :輸入/輸出控制器 1 6 6 :輸入/輸出裝置 1 68 :互連 160 :周邊元件互連(系統) -31
Claims (1)
- 201241743 七、申請專利範園: 1 ·一種方法,包括: 對指令集進行排程; 對該排程之指令集計算資料相依; 對該排程之指令集計算檢査限制:及 根據該資料相依和該檢査限制,爲該排程之指令集配 置別名暫存器。 2.如申請專利範圍第1項之方法,又包括: 對該排程之指令集計算反檢査限制:及 進一步根據該反檢査限制,爲該組排程指令配置別名 暫存器》 3 .如申請專利範圍第1項之方法,又包括: 藉由旋轉,釋放爲該指令集中之第一排程指令而配置 之一別名暫存器,以回應已經檢查該別名暫存器;及 將已釋放之該別名暫存器配置到第二排程指令。 4 ·如申請專利範圍第1項之方法,又包括: 選擇該指令集中之第二指令以進行該排程,以回應判 定將排程之第一指令會造成別名暫存器溢位。 5. 如申請專利範圍第1項之方法,又包括: 熔合該指令集中至少二指令,以提供一熔合指令:及 將一虛擬指令插入該指令集內,以打破該檢査限制之 —或多個週期。 6. 如申請專利範圍第1項之方法,又包括: 在該指令集中之一熔合指令後插入一虛擬指令,其中 -32- 201241743 該虛擬指令係存取和該熔合指令相同之記憶體,且使用一 和該熔合指令不同之別名暫存器。 7. —種系統,包括: 一處理器;及 一最佳化器’係將一組將被該處理器執行之原始碼最 佳化、將該最佳化碼排程而成排程碼、以及根據該排程碼 之資料相依和限制其中至少之一而將一新的別名暫存器配 置到該排程碼。 8. 如申請專利範圍第7項之系統,其中該最佳化器又 計算該排程碼的該資料相依和該限制。 9. 如申請專利範圍第7項之系統,其中該最佳化器又 旋轉一配置之別名暫存器,而爲該新的別名暫存器釋放該 配置之別名暫存器,以回應判定該配置之別名暫存器不會 受到該排程碼的檢查。 1 〇.如申請專利範圍第7項之系統,其中該最佳化器 又將該原始碼最佳化以提供熔合碼,且插入虛擬碼以分割 C/P位元,以回應在熔合碼中多個邏輯碼上包含該C/P位 元之熔合碼。 1 1 .如申請專利範圍第7項之系統,其中該最佳化器 又將該原始碼最佳化以提供熔合碼,且在該熔合碼後插入 虛擬碼以打破該限制中一或多個週期,其中該虛擬碼係用 以存取和該熔合碼相同之記憶體,以及使用一和該熔合碼 不同之別名暫存器。 12.如申請專利範圍第7項之系統,其中該最佳化器 -33- 201241743 又將該排程碼之暫存器配置延遲,以回應在該限制中偵測 到一或多個週期,以防止爲該排程碼配置別名暫存器。 13.如申請專利範圍第12項之系統,其中該最佳化器 又在暫存器配置延遲碼之後插入虛擬碼,以打破該限制中 之週期,其中該虛擬碼係用以存取和該暫存器配置延遲碼 相同之記憶體,以及使用一和該暫存器配置延遲碼不同之 別名暫存器。 1 4 ·如申請專利範圍第1 2項之系統,其中該限制包括 檢查限制和反檢查限制。 15. 如申請專利範圍第7項之系統,其中該最佳化器 又移除該排程碼之限制,以回應被配置之該新的別名暫存 器。 16. —種機器可讀取媒體,含有指令,當一處理系統 執行該指令時會造成一運算系統= 排程指令集: 計算該排程指令集之限制;及 根據該限制將一新的別名暫存器配置到其中一個排程 指令中。 1 7 ·如申請專利範圍第1 6項之機器可讀取媒體,又包 括複數個指令以回應該運算系統之執行結果,該指令係用 以: 釋放一沒有被使用之已配置之別名暫存器,且爲該新 的別名暫存器配置該釋放之暫存器。 18.如申請專利範圍第16項之機器可讀取媒體,又包 -34- 201241743 括複數個指令以回應該運算系統之執行結果,該指令係用 以: 將一虛擬指令插入該排程之指令集內,以打破該限制 之週期。 -35-
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 true TW201241743A (en) | 2012-10-16 |
TWI469046B 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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2761433B1 (en) | 2011-09-27 | 2017-11-15 | Intel Corporation | Expediting execution time memory aliasing checking |
JP6008265B2 (ja) * | 2013-05-30 | 2016-10-19 | インテル・コーポレーション | パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て |
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 |
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 |
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 |
Family Cites Families (14)
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 | 全斯美达有限公司 | 带临时保存目标处理器状态的装置的主处理器 |
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 |
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 |
US7433931B2 (en) * | 2004-11-17 | 2008-10-07 | Raytheon Company | Scheduling in a high-performance computing (HPC) system |
US7681187B2 (en) | 2005-03-31 | 2010-03-16 | Nvidia Corporation | Method and apparatus for register allocation in presence of hardware constraints |
US8255891B2 (en) * | 2005-12-30 | 2012-08-28 | Intel Corporation | 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 |
JP4957729B2 (ja) | 2007-01-25 | 2012-06-20 | 日本電気株式会社 | プログラム並列化方法、プログラム並列化装置及びプログラム |
-
2011
- 2011-04-07 US US13/082,146 patent/US9405547B2/en active Active
- 2011-11-29 CN CN201180070544.XA patent/CN103502945B/zh not_active Expired - Fee Related
- 2011-11-29 EP EP11863199.3A patent/EP2695061A4/en not_active Withdrawn
- 2011-11-29 WO PCT/US2011/062470 patent/WO2012138390A1/en active Application Filing
- 2011-12-07 TW TW100145055A patent/TWI469046B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN103502945B (zh) | 2017-09-22 |
US9405547B2 (en) | 2016-08-02 |
EP2695061A4 (en) | 2017-05-17 |
US20120260072A1 (en) | 2012-10-11 |
WO2012138390A1 (en) | 2012-10-11 |
CN103502945A (zh) | 2014-01-08 |
TWI469046B (zh) | 2015-01-11 |
EP2695061A1 (en) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201241743A (en) | Register allocation in rotation based alias protection register | |
US10572376B2 (en) | Memory ordering in acceleration hardware | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
TW446912B (en) | Methods and apparatus for reordering load operations in a computer processing system | |
TW200305821A (en) | System and method for linking speculative results of load operations to register values | |
JP6005392B2 (ja) | ルーティングのための方法及び装置 | |
US20090113192A1 (en) | Design structure for improving efficiency of short loop instruction fetch | |
US20090210673A1 (en) | System and Method for Prioritizing Compare Instructions | |
JP4931828B2 (ja) | ライン・アクセスおよびワード・アクセスの結合を用いてメモリをアクセスするためのシステムおよび方法 | |
US20090210672A1 (en) | System and Method for Resolving Issue Conflicts of Load Instructions | |
EP3014424B1 (en) | Instruction order enforcement pairs of instructions, processors, methods, and systems | |
WO2012145154A2 (en) | Methods and systems for mapping a function pointer to the device code | |
US7730288B2 (en) | Method and apparatus for multiple load instruction execution | |
Diavastos et al. | Efficient instruction scheduling using real-time load delay tracking | |
US10114649B2 (en) | Thermal availability based instruction assignment for execution | |
US20230070995A1 (en) | Modular accelerator function unit (afu) design, discovery, and reuse | |
US9582286B2 (en) | Register file management for operations using a single physical register for both source and result | |
US20080162894A1 (en) | structure for a cascaded delayed execution pipeline | |
Pereira et al. | Co-designed FreeRTOS deployed on FPGA | |
KR20230069927A (ko) | 스케일러블 인터럽트들 | |
TW201005649A (en) | Operating system fast run command | |
Fox et al. | A gem5 implementation of the sequential codelet model: Reducing overhead and expanding the software memory interface | |
JP2013200873A (ja) | ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 | |
Zagan et al. | Soft-core processor integration based on different instruction set architectures and field programmable gate array custom datapath implementation | |
Reyes et al. | A multicast inter-task communication protocol for embedded multiprocessor systems |