TW202219746A - 省電暫存器重取名 - Google Patents
省電暫存器重取名 Download PDFInfo
- Publication number
- TW202219746A TW202219746A TW110127142A TW110127142A TW202219746A TW 202219746 A TW202219746 A TW 202219746A TW 110127142 A TW110127142 A TW 110127142A TW 110127142 A TW110127142 A TW 110127142A TW 202219746 A TW202219746 A TW 202219746A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- data type
- register
- physical
- integrated circuit
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 44
- 239000013598 vector Substances 0.000 claims description 44
- 239000011159 matrix material Substances 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 101150071111 FADD gene Proteins 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
Images
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/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
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
Abstract
揭露了用於暫存器重取名的系統和方法。舉例而言,說明了一種積體電路,其包括一第一群集、一第二群集和一暫存器重取名電路;該第一群集包括一第一實體暫存器集合和一第一執行資源電路,其中該第一執行資源電路的操作之輸入具有一第一資料類型;該第二群集包括一第二實體暫存器集合和一第二執行資源電路,其中該第二執行資源電路的操作之輸入具有不同於該第一資料類型之一第二資料類型。該暫存器重取名電路係配置以:針對將儲存於一第一邏輯暫存器中的一第一指令的結果,決定一資料類型預測;以及基於匹配該第一資料類型的該資料類型預測,對要儲存於該第一實體暫存器集合之一實體暫存器中的該第一邏輯暫存器進行重取名。
Description
相關申請案的交叉引用
本申請要求享有2020年7月24日提交的美國臨時專利申請No. 63/056,542的權益,其全部內容藉由引用併入本文。
本案與用於省電之暫存器重取名有關。
現代處理器通常是使用實體暫存器重取名之亂序執行。先前的系統已使用實體暫存器重取名、藉由對所產生的每一個結果分配新的目標暫存器來消除寫後寫入(write-after-write)和讀後寫入(write-after-read)的風險。
在一些處理器中(例如,Motorola 88000和RISC-V Zfinx選項),架構暫存器可以在不同時間保存不同類型的資料。舉例而言,單一暫存器可以保存一整數數值或一浮點數值。在某些傳統處理器中,指令集合架構允許多種資料類型被保存在同一架構暫存器中,已使用統一的實體暫存器檔案來保存不同的資料類型,且路由到處理該不同資料類型的各種功能單元。
用於矩陣計算之二維結構(例如,脈動陣列(systolic array))是非常有效率的,因為運算元是位於陣列中,而且只需要偏移一小量即可處理資料。然而,這些用於矩陣計算的二維結構都是硬連線,而且一般都用於固定的函數機器中。由於運算元是分佈式的,其非常專用且寫有微碼以執行正確的事情。在一通用中央處理單元(CPU)的不同上下文中,這些優點會消失,而且存取暫存器(register)、快閃(cache)和記憶體(memory)的時序是非常不同的。
概述
本文所揭露者為用於省電之暫存器重取名的實施方式。
在一第一構想中,說明書中所描述的標的內容可以具現為用於執行指令的積體電路,其包括一第一群集、一第二群集和一暫存器重取名電路。該第一群集包括一第一實體暫存器集合和一第一執行資源電路,該第一執行資源電路係配置以執行採用該第一實體暫存器集合中的一個或多個暫存器的內容作為輸入之操作,其中該第一執行資源電路的操作之輸入具有一第一資料類型;該第二群集包括一第二實體暫存器集合和一第二執行資源電路,該第二執行資源電路係配置以執行採用該第二實體暫存器集合中的一個或多個暫存器的內容作為輸入之操作,其中該第二執行資源電路的操作之輸入具有不同於該第一資料類型的一第二資料類型;該暫存器重取名電路係配置以:決定將被儲存在一第一邏輯暫存器中的一第一指令的結果之一資料類型預測,以及基於該資料類型預測匹配該第一資料類型,對要被儲存於該第一實體暫存器集合的一實體暫存器中的該第一邏輯暫存器進行重取名。
在一第二構想中,本說明書中所描述的標的內容可具現為方法,其包括:針對將被儲存在一第一邏輯暫存器中的一第一指令的結果,決定一資料類型預測;以及基於匹配一第一資料類型的資料類型預測,對要儲存在從複數個群集中選出的一第一群集的一實體暫存器中的該第一邏輯暫存器進行重取名,其中該複數個群集包括:一第一群集,包括一第一實體暫存器集合和一第一執行資源電路,該第一執行資源電路係配置以執行採用該第一實體暫存器集合中的一個或多個暫存器的內容作為輸入之操作,其中該第一執行資源電路的操作之輸入具有第一資料類型;以及一第二群集,包括一第二實體暫存器集合和一第二執行資源電路,該第二執行資源電路係配置以執行採用該第二實體暫存器集合中的一個或多個暫存器的內容作為輸入之操作,其中該第二執行資源電路的操作之輸入具有不同於該第一資料類型之一第二資料類型。
在一第三構想中,本說明書中所述標的內容可以具現為用於執行指令的積體電路,其包括一執行資源電路、一實體暫存器集合和一暫存器重取名電路,該執行資源電路係配置以執行儲存於實體暫存器中的運算體(operand)上的指令,該實體暫存器集合包括位於該執行資源電路鄰近處的一第一實體暫存器子集合、以及位於比該第一實體暫存器子集合中的暫存器更遠離該執行資源電路的一第二實體暫存器子集合,該暫存器重取名電路係配置以:偵測儲存於一指令解碼緩衝區中的一指令序列,該指令序列包括對具有真正相關性的一第一邏輯暫存器的多個順序引用;以及基於該指令序列的偵測,對要儲存於該第一實體暫存器子集合之一實體暫存器中的該第一邏輯暫存器進行重取名,並且對要儲存於該第二實體暫存器子集合之一實體暫存器中的該指令序列中所引用的另一邏輯暫存器進行重取名。
本揭露內容的這些和其他構想係揭露於下述詳細說明、如附請求項、以及伴隨的圖式中。
可以使用專用的實體結構來改進不同資料類型的儲存和處理。舉例而言,一種此類結構為一群集,其包括一實體暫存器檔案和利用本地資料路徑緊密耦接的功能性單元之組合。這種方式的一個優點為,在每一個暫存器檔案中的資料數值的呈現可以針對目前出現在每一個架構暫存器中的動態資料類型而最佳化。第二個優點是,涉及相同資料類型的計算序列會被本地化在相同群集,這提升了能量效率並減少電路延遲。
本文所述的一些實施方式可提供在最佳化的群集中提供了不同資料類型的各別本地化處理之優勢,即使是在指令集合架構需要來自一統一架構暫存器集合的所有資料類型都被保存和處理時。舉例而言,具有統一架構暫存器檔案的標量處理器(scalar processor)可以提供兩個群集,一個用於整數資料類型,一個用於浮點數資料類型。本文所述的一種方法動態地將數值分配給群集,並且基於資料類型在適合的群集中執行計算。
舉例而言,一些實施方式基於指令操作碼決定哪一個群集要執行指令。如果有可用空間,則在該群集中分配目標並且更新映射表(否則阻止解碼)。檢查映射表以查看來源是否是在正確的群集中。若是,則向群集發送指令。若來源是位於錯誤的群集中(例如,被載入整數暫存器檔案,但現以浮點數進行處理),則插入額外微運算以將資料從一個群集移動到另一個,可能會重新格式化資料為轉換的一部分。
當來自操作碼的目標格式不明確時(例如,來自記憶體的加載)可進行預測。舉例而言,預測的一些選項包括:1)與相同架構暫存器之最後類型相同。觀察到的是,在許多編碼中,特別是在迴圈中,相同的架構暫存器被用來重複地保存相同類型。軟體若得知此預測策略,則軟體可提升此一方案的性能。2)於一指令緩衝區中預見(look ahead)以查看一後續操作碼是否指明此來源的使用。3)隨機地產生一資料類型預測。4)基於程式計數器(PC)加上指令編碼。在編碼足以決定結果類型的情況下,忽略程式計數器,否則使用程式計數器的某一部分來編索引至程式計數器中。舉例而言,在同一迴圈(loop)中相同的架構暫存器可被使用兩次以保存不同的資料類型
loop: lw x1, (x2) # Load, used as float
fadd.s x3, x3, x1
addi x2, x2, 4
lw x1, (x4) # Load, used as integer
addi x4, x4, 4
bnez x1, loop
5) 上述的組合可用以決定將儲存在一目標暫存器中的一指令的結果之資料類型預測。
舉例而言,一些延伸包括:1) 處理器通常提供對布林數值的計算。舉例而言,比較指令可能回傳1或0。這些通常被使用作為對一分支指令或其他邏輯操作的輸入。可提供用於預測數值之一專用群集,以提升這些指令的性能。用於這些單一位元數值的實體儲存比用於全寬度實體暫存器者大幅少了許多,而且處理這些數值需要的能量比全寬度實體暫存器少了許多。在邏輯操作的情況中(例如,AND、OR、XOR),則使用指令編碼加上來源資料類型來決定要使用哪一個群集。分支執行通常都是在一處理器中的關鍵路徑上,而將布林隔離到一各別群集中則可減少分支解析之電路延遲。2)半寬值標量(例如,64位元標量中的32位元寬度)可用以藉由再使用實體暫存器而取得更多容量。3)可提供標量暫存器中的包裝SIMD數值(packed-SIMD value)之各別群集,進以減少非包裝SIMD數值之關鍵路徑。這可改善具有較長電路延遲之能量的包裝SIMD群集。4)向量暫存器檔案(Vector Regfiles)。
揭露了用於暫存器重取名的系統和方法。積體電路(例如一處理器或微控制器)可解碼及執行一指令集合架構(Instruction Set Architecture,ISA)的指令(例如,RISC V指令集合)。積體電路設計之此一方式利用暫存器重取名而以一通用CPU內的矩陣計算(例如脈動陣列(systolic array))之二維結構取得一固定函數機器的某些優勢。舉例而言,考慮乘加(multiply-add),矩陣相乘及相加。若來源與目標相同(c <- c * a+b),則c矩陣可以保持「放置」在陣列和其他者的其中之一(例如,a、然後b是可能流入的唯一一者)。
在先前已經以一不同目標進行了暫存器重取名。在先前,目標是要移除錯誤的依賴關係,例如讀後寫入(write-after-read,WAR)和寫後寫入(write-after-write,WAW)。儘管如此,吾人為正在寫入的每一結果分配了一新的實體暫存器,因此對比:rc2 = rc1 + ra1 * rb1。現在rc2位於一不同的實體暫存器中,而非rc1。但是,吾人想要做的是,使c1藉由將其覆寫而保持就位,例如:rc1 = rc1 + ra1 * rb1。
其他差異是,重取名係基於晶片中的實體位置(例如,對算術邏輯單元(ALUs)的接近程度)而執行。先前技術通常是使用全部在一中央記錄檔案中的暫存器,但在此處,則執行重取名來強制使對ALU的輸入中其一在物理上靠近該ALU,其可降低將數值傳送至ALU供執行後續指令用之電力。這些電力節省對於向量或矩陣操作是特別顯著的。舉例而言,考慮指令C=A+B,其中A、B和C為向量。在此示例中,C可被重新分配至一標準的一維向量。舉例而言,考慮指令F=D+E,其中D、E和F為矩陣。在此示例中,F可為鄰近於ALUs的一二維結構。所分配的暫存器的形狀/大小可基於資料和操作的類型而改變。
如在本文中所使用,用語「電路」是指電子組件(例如,電晶體、電阻、電容、及/或電感)的排列,其經組構以實施一種或多種功能。舉例而言,電路可包括一個或多個電晶體,其互相連接以形成共同地實施一邏輯功能的邏輯閘。
詳述
圖1是一方塊圖,其說明用於基於資料類型預測而以暫存器重取名執行指令的系統100之示例。系統100包括一積體電路110以執行指令(例如,RISC-V指令或x86指令)。積體電路110包括:一第一群集120,係配置以對一第一資料類型的一個或多個輸入執行操作;一第二群集130,係配置以對一第二資料類型的一個或多個輸入執行操作;以及一暫存器重取名電路140,係配置以基於一指令(例如一加載指令、一相加指令、或一xor指令)的結果之資料類型預測重取名邏輯暫存器,以映射至從一群集集合中所選出的一群集中的實體暫存器。積體電路110可包括額外群集(未示於圖1中),其執行採用額外不同資料類型的輸入之指令。在一些實施方式之中,積體電路110可包括額外群集(未示於圖1中),其執行採用第一資料類型或第二資料類型的輸入之指令,而且在於使用相同資料類型的多個群集間選擇以進行暫存器重取名時,暫存器重取名可基於額外考量,例如一指令序列間真正依賴性。積體電路110包括一指令緩衝區170,其儲存預期要在不久後執行的指令。舉例而言,積體電路110可為微處理器或一微控制器。
積體電路110包括一第一群集120,其包括一第一實體暫存器集合124、126和128,以及配置以執行採取該第一實體暫存器集合124、126和128中的一個或多個暫存器的內容作為輸入之操作的一第一執行資源電路122。第一執行資源電路122的操作之輸入具有一第一資料類型(例如,整數、浮點數、布林、標量、向量或矩陣)。舉例而言,該執行資源電路122可包括一算術邏輯單元(ALU)。舉例而言,該執行資源電路122可包括一浮點單元(FPU)。群集可包括能使執行資源電路122存取實體暫存器124、126和128之第一集合的暫存器作為保存一輸入引數之一來源暫存器、及/或用以保存一結果之一目標暫存器的資料路徑。舉例而言,第一群集120可用以執行採用實體暫存器124中所儲存的一數值和實體暫存器126中所儲存的一數值作為輸入引數之指令(例如相加指令),並且對實體暫存器126輸出一結果。舉例而言,實體暫存器124、126和128之第一集合可以在第一執行資源電路122的鄰近處。
積體電路110包括一第二群集130,其包括實體暫存器134、136和138的第二集合以及配置以執行採用該第二實體暫存器集合中的一個或多個暫存器的內容作為輸入之一第二執行資源電路132。第二執行資源電路132的操作之輸入具有不同於該第一資料類型之一第二資料類型。舉例而言,第一資料類型可為浮點數,而第二資料類型可為整數。舉例而言,第一資料類型可為整數,而第二資料類型為浮點數。在一些實施方式中,第一資料類型為布林,且第一實體暫存器集合的暫存器為單一位元大小。舉例而言,第一執行資源電路122係配置以執行分支指令。分支指令通常是在一處理器中的關鍵路徑上,且將布林隔離至一各別群集中可減少分支解析(branch resolution)之電路延遲。在一些實施方式中,第一資料類型為標量(例如一64位元標量),且第二資料類型為半寬標量(例如,一32位元標量)。在一些實施方式中,第一資料類型為包裝SIMD(Single Instruction, Multiple Data)(單指令多重資料),且第二資料類型為非包裝SIMD。提供一單獨群集可減少非包裝SIMD數值之關鍵路徑。舉例而言,可訂製一包裝SIMD群集以供具較長電路延遲之能量節省用。舉例而言,執行資源電路132可包括一算術邏輯單元(ALU)。舉例而言,執行資源電路132可包括一浮點數單元(FPU)。群集可包括能使執行資源電路132存取實體暫存器134、136和138之第二集合的暫存器作為保存一輸入引數的來源暫存器、及/或用以儲存一結果的目標暫存器之資料路徑。舉例而言,第二群集130可用以執行採用實體暫存器136中所儲存的一數值和實體暫存器138中所儲存的一數值作為輸入引數之指令(例如,一相乘指令)並且對實體暫存器134輸出一結果。舉例而言,實體暫存器134、136和138之第二集合是在第二執行資源電路132的鄰近處。
積體電路110包括一暫存器重取名電路140。暫存器重取名電路140維護一重取名表150,該重取名表150儲存了使一指令集合的邏輯暫存器(例如,一RISC-V暫存器)與一個或多個各自實體暫存器相關聯的資料,其中該邏輯暫存器的一數值係被儲存或將被儲存。暫存器重取名電路140包括一資料類型預測器電路160,其係配置以針對將被儲存在一目標暫存器中的指令的結果產生資料類型預測。
暫存器重取名電路140係配置以針對將被儲存在一第一邏輯暫存器中的一第一指令的結果決定一資料類型預測。該第一邏輯暫存器可被允許儲存在一可應用指令集合下的具有不同資料類型(例如,整數或浮點數)的資料。舉例而言,資料類型預測器電路160可用以決定資料類型預測。舉例而言,第一邏輯暫存器可為具有至少兩個元素的一向量,且第一實體暫存器集合的實體暫存器儲存該向量。舉例而言,第一邏輯暫存器可為具有多列和多行元素之矩陣,而第一實體暫存器集合中的實體暫存器係儲存該矩陣。在一些實施方式中,資料類型預測係基於第一指令的操作碼而決定。舉例而言,當第一指令為浮點數相加時,該資料類型預測可偏向為一浮點數。但是,可考慮其他因素來預測依賴於結果之後續指令對結果的重新解釋或定型化(type casting)。在一些實施方式中,第一指令是一隱式類型轉換指令(untyped transfer instruction)(例如一加載指令),因此,該第一指令的操作碼可能缺少關於結果之資料類型的資訊。
舉例而言,暫存器重取名電路140可於指令緩衝區179中預見(look ahead)以偵測將存取該第一邏輯暫存器中該第一指令的結果的一第二指令,並且使用與此消耗指令有關的資訊來決定資料類型預測。舉例而言,該資料類型預測可基於將存取該第一指令的結果的一已佇列指令的操作碼而決定。該已佇列指令係儲存於指令緩衝區170中。舉例而言,該第一指令被儲存作為一下一指令172以供於該指令緩衝區中發佈,而且暫存器重取名電路140可掃描該指令緩衝區,以偵測接下來將存取該第一邏輯暫存器作為來源暫存器的一第二指令174。接著可基於該第二指令174的操作碼來決定該資料類型預測。
舉例而言,資料類型預測係基於目前儲存在第一邏輯暫存器中的資料的目前資料類型而決定。觀察結果是,在許多編碼中,特別是迴圈,係使用相同的架構暫存器來重複保存相同的類型。若軟體開發者理解此一預測策略時,則軟體即可提升這種方案的性能。舉例而言,第一指令可為一加載指令,其可能不提供與其結果(亦即,從一記憶體系統中所擷取的數值)的資料類型有關的固有資訊,但軟體對架構暫存器的一致使用可提供為精確預測從記憶體加載的資料的資料類型所需要的提示。
舉例而言,資料類型預測可基於一程式計數器的數值(例如,與該第一指令相關聯的程式計數器數值)而決定。在一些實施方式中,資料類型預測器電路160可維護由程式計數器數值所索引之預測計數器的預測表。
舉例而言,資料類型預測可基於上述因子的組合而決定。
暫存器重取名電路140係配置以基於匹配於第一資料類型的資料類型預測,對要被儲存在實體暫存器124、126或128之該第一集合的一實體暫存器中的第一邏輯暫存器進行重取名。舉例而言,對該第一邏輯暫存器重取名可包括:更新該重取名表150的分錄(entry)以使第一邏輯暫存器與實體暫存器124、126或128之該第一集合的實體暫存器相關聯。重取名該第一邏輯暫存器可使得第一指令的結果被儲存在實體暫存器124、126或128之第一集合的實體暫存器中。若資料類型預測準確,則當一第二、在後的指令存取該第一邏輯暫存器以存取結果時,該第二指令即可利用該第一群集120而被有效率地執行。
若資料類型預測結果不準確,則已經發生錯誤預測。舉例而言,可藉由在第二指令之前插入一附加微操作來處理錯誤預測,以將第一指令的結果移動至第二指令之一合適群集中的一實體暫存器。在一些實施方式中,暫存器重取名電路140係配置以偵測一錯誤預測,其中,要在第一指令之後執行的一第二指令將存取該第一邏輯暫存器作為具有第二資料類型的一輸入;以及,回應於該錯誤預測,在該第二指令之前發佈一微操作。該微操作將該第一實體暫存器集合中的一實體暫存器中所儲存的第一邏輯暫存器的數值複製到第二實體暫存器集合的一實體暫存器。舉例而言,該微操作係一微架構移動指令。在一些實施例中,該微操作也可進行重取名表150的更新,以反映第一指令的結果的移動。
積體電路包括一指令緩存區170。舉例而言,指令緩衝區170係積體電路110的解碼緩衝區。舉例而言,指令緩衝區170可為積體電路110的發佈緩衝區。舉例而言,指令緩衝區170可為積體電路110的指令快取的一快取列。
圖2為系統200的示例的方塊圖,系統200用於以基於資料類型預測的暫存器重取名和在可用以從錯誤預測中回復的群集之間的一替代資料路徑執行指令。系統200包括一積體電路210以執行指令(例如,RISC-V指令或x86指令)。積體電路210包括:第一群集120,配置以對具有一第一資料類型一個或多個輸入執行操作;第二群集130,配置以對具有一第二資料類型的一個或多個輸入執行操作;以及,一暫存器重取名電路240,配置以重取名邏輯暫存器,以映射至從一群集集合中基於指令(例如,加載指令、相加指令、或xor指令)結果而選出的群集中的實體暫存器。積體電路210可包括其他的群集(未示於圖2),其可執行採用具其他不同資料類型的輸入之指令。在一些實施方式中,積體電路210可包括其他群集(未示於圖2),其執行採用具有第一資料類型或第二資料類型的輸入之指令,而在使用相同資料類型的多個群集之間進行選擇以進行暫存器重取名時,暫存器重取名係可基於額外考量,例如指令的序列之間的真正相關性。積體電路210包括指令緩衝區170,其儲存預期要在不久後執行之指令。舉例而言,積體電路210可為微處理器或一微控制器。
積體電路210和圖1的積體電路110之間的差異在於,積體電路210包括從實體暫存器124、126之該第一集合和128的實體暫存器128到第二執行資源電路132的一替代資料路徑280。該替代資料路徑280可使第二執行資源電路132直接存取實體暫存器128中所儲存的數值,無須等待積體電路210的其他資源來將實體暫存器128中儲存的結果移動到實體暫存器134、136和138之第二集合中的一實體暫存器。舉例而言,暫存器重取名電路240可配置以:偵測一錯誤預測,其中要在第一指令之後執行的一第二指令將存取第一邏輯暫存器作為具有第二資料類型的一輸入;以及,回應於該錯誤預測,令第二執行資源電路132利用該替代資料路徑280來存取第一邏輯暫存器的數值。利用該替代資料路徑280會消耗更多的電力來存取來自一較大距離的資料,但是可比插入一微操作來複製群集之間的資料節省時間。
圖3為用於基於資料類型預測進行暫存器重取名的程序300的一示例之流程圖。程序300包括:決定310將被儲存在一第一邏輯暫存器中的一第一指令的結果之一資料類型預測;以及,基於匹配一第一資料類型的資料類型預測,對要被儲存於從複數個群集中選出的一第一群集的一實體暫存器中的第一邏輯暫存器進行重取名320。舉例而言,程序300可以利用圖1的積體電路110來實施。舉例而言,程序300可以利用圖2的積體電路210來實施。
程序300包括決定310將儲存在一第一邏輯暫存器中的一第一指令的結果之資料類型預測。該第一邏輯暫存器可在一可應用指令集合(例如,RISC-V指令集合或x86指令集合)下儲存具有不同資料類型的資料(例如,整數、浮點數、布林、標量、向量或矩陣)。
在一些實施方式中,係基於第一指令的一操作碼(opcode)來決定資料類型預測(310)。舉例而言,基於產生要被儲存在該目標暫存器中的結果的指令的操作碼,一邏輯AND指令之目標暫存器可被預測為具有布林資料類型。舉例而言,當第一指令為一浮點數點相加時,資料類型預測¬係偏向是一浮點數。然而,可考慮其他因子來預測依賴結果的後續指令對結果的重新解釋或定型化。
舉例而言,第一指令可為一隱式類型傳輸指令(例如,一加載指令)。在此情況中,第一指令的操作碼可能欠缺與結果將如何被使用有關的資訊,因此可使用其他技術來決定310一第一指令的結果的資料類型預測。
舉例而言,指令緩衝區中的預見(look ahead)可用以識別可能會存取第一邏輯暫存器中的結果的一未來指令,並因而提供關於應該提供結果何種資料類型的有用資訊。在一些實施方式中,係基於將存取第一指令的結果的一已佇列指令的操作碼來決定310資料類型預測。該已佇列指令係儲存在一指令緩衝區中。舉例而言,該指令緩衝區可為一解碼緩衝區。舉例而言,該指令緩衝區可為一指令快取的快取列。舉例而言,該指令緩衝區可為一發佈緩衝區。
舉例而言,可基於目前儲存於第一邏輯暫存器中的一目前資料類型來決定310資料類型預測。觀察結果是,在許多編碼片段中,特別是迴圈,係使用相同的架構暫存器來重複保存相同的類型。若軟體開發者理解此一預測策略時,則軟體即可提升這種方案的性能。舉例而言,第一指令可為一加載指令,其可能不提供與其結果(亦即,從一記憶體系統中所擷取的數值)的資料類型有關的固有資訊,但軟體對架構暫存器的一致使用可提供為決定310從記憶體加載的資料的準確資料類型預測所需要的提示。
舉例而言,資料類型預測係基於一程式計數器的一數值(例如,與第一指令相關聯的程式計數器數值)而決定310。在一些實施方式中,可維護由程式計數器數值所索引的預測計數器的一預測表。在一些實施方式中,資料類型預測係隨機地決定310。
舉例而言,可基於上述因子的組合來決定310資料類型預測,例如第一指令的操作碼,後續消耗指令的操作碼的預見、該第一邏輯暫存器的目前資料類型、及/或一程式計數器數值。
程序300包括:基於匹配一第一資料類型的資料類型預測,對要儲存在從複數個群集中選出的一第一群集的一實體暫存器中的第一邏輯暫存器進行重取名320。第一群集可包括一第一實體暫存器集合和一第一資源執行電路,第一資源執行電路係配置以執行採用該第一實體暫存器集合中的一個或多個暫存器的內容作為輸入之操作。第一執行資源電路的操作之輸入可具有第一資料類型。該複數個群集可包括一第二群集,其包括一第二實體暫存器集合和一第二執行資源電路,該第二執行資源電路係配置以執行採用第二實體暫存器集合中的一個或多個暫存器的內容作為輸入之操作。第二執行資源電路的操作之輸入可具有不同於該第一資料類型的一第二資料類型。舉例而言,第一資料類型可為浮點數,而第二資料類型可為整數。舉例而言,第一資料類型可為整數,而第二資料類型可為浮點數。在一些實施方式中,第一資料類型為布林,而且第一實體暫存器集合的暫存器為一單一位元大小。舉例而言,第一執行資源電路係配置以執行分支指令。在一些實施方式中,第一邏輯暫存器為具有至少兩個元素的向量,而且第一實體暫存器集合的實體暫存器儲存該向量。在一些實施方式中,第一邏輯暫存器為具有多列和多行元素的矩陣,而且第一實體暫存器集合中的實體暫存器係儲存該矩陣。在一些實施方式中,第一資料類型為標量(例如,64位元標量),而第二資料類型為半寬標量(例如,32位元標量)。在一些實施方式中,第一資料類型為包裝SIMD(Single Instruction, Multiple Data)(單指令多重資料),而第二資料類型為非包裝SIMD。提供各別的群集可減少非包裝SIMD數值之關鍵路徑。
若資料類型預測結果不準確,即已發生錯誤預測。在一些實施方式中,可藉由在第二指令之前插入一附加微操作以將第一指令的結果移動到第二指令之一合適群集中的實體暫存器來解決錯誤預測。舉例而言,可實施圖4的程序400來處理結果的資料類型的錯誤預測。在一些實施方式中,可利用積體電路中的一替代資料路徑存取來自與一不同資料類型相關聯的不同群集中的一個群集的結果,藉以解決錯誤預測。舉例而言,可實施圖5的程序500以處理結果的資料類型錯誤預測。
圖4為用於藉由插入一微操作以將資料移動到一正確群集而從一資料類型錯誤預測中回復的程序400的示例的流程圖。程序400包括偵測410一錯誤預測,其中要在第一指令之後執行的一第二指令將存取該第一邏輯暫存器作為具有第二資料類型的輸入;以及,回應於該錯誤預測,在該第二指令前發佈420一微操作以將儲存在一群集的實體暫存器中的該第一邏輯暫存器的數值複製到一第二群集的實體暫存器。舉例而言,程序400可利用圖1的積體電路110來實施。舉例而言,程序400可利用圖2的積體電路210來實施。
程序400包括:偵測410一錯誤預測,其中要在第一指令之後執行的一第二指令將存取第一邏輯暫存器作為具有第二資料類型的輸入。舉例而言,當第二指令位於發佈緩衝區中時,可藉由掃描以第一邏輯暫存器作為一來源暫存器之指令之該發佈緩衝區來偵測410錯誤預測。偵測410錯誤預測也可包括檢查邏輯暫存器中第一指令的結果的干預覆寫。偵測410錯誤預測可包括:當發現到存取第一邏輯暫存器中的結果的一第二指令時,檢查作為第二指令之來源暫存器的第一邏輯暫存器的資料類型是否與第一指令的結果之資料類型預測匹配、及/或該結果是否目前儲存在用於執行第二指令的一合適群集中。
程序400包括:回應於錯誤預測,在第二指令之前發佈420一微操作。該微操作將第一實體暫存器集合(亦即第一群集)的實體暫存器中所儲存的第一邏輯暫存器的數值複製到第二實體暫存器集合(亦即第二群集)的實體暫存器。舉例而言,該微操作可為一微架構移動指定。在一些實施方式中,該微操作也可使得一重取名表(例如重取名表150)的更新反映第一指令的結果的移動。在第一指令的結果已經被複製到第二群集之後,第二群集即可被用以執行第二指令,這有效率地存取第一指令的結果,並將其視為與第二群集相關聯的第二資料類型之資料。
圖5為用於利用群集之間的一替代資料路徑而從一資料類型錯誤預測中回復之程序500的示例的流程圖。程序500包括:偵測510一錯誤預測,其中要在第一指令之後執行的一第二指令將存取第一邏輯暫存器作為具第二資料類型的一輸入;以及,回應於該錯誤預測,令520一第二執行資源電路(例如第二執行資源電路132)利用從該第一實體暫存器集合(例如第一群集120)的一實體暫存器到該第二執行資源電路之一替代資料路徑(例如替代資料路徑280)存取該第一邏輯暫存器的數值。舉例而言,程序500可利用圖2的積體電路210來實施。
程序500包括:偵測510一錯誤預測,其中要在第一指令之後執行的一第二指令將存取第一邏輯暫存器作為具有第二資料類型的一輸入。舉例而言,當第二指令位於一發佈緩衝區中時,即可藉由掃描以第一邏輯暫存器作為一來源暫存器之指令之該發佈緩衝區來偵測510錯誤預測。偵測510錯誤預測也可包括檢查邏輯暫存器中第一指令的結果的干預覆寫。偵測510錯誤預測可包括:當一第二指令被發現在存取第一邏輯暫存器中的結果時,檢查作為第二指令之來源暫存器的第一邏輯暫存器的資料類型是否匹配第一指令的結果之資料類型預測,及/或該結果是否目前儲存在用於執行第二指令的一合適群集中。
程序500包括:回應於該錯誤預測,令520第二執行資源電路利用從第一實體暫存器集合(亦即第一群集)的實體暫存器到第二執行資源電路的一替代資料路徑存取該第一邏輯暫存器的一數值。積體電路(例如積體電路210)包括從第一實體暫存器集合的一實體暫存器到第二執行資源電路的一替代資料路徑。該替代資料路徑可使第二執行資源電路直接存取第一實體暫存器集合的實體暫存器中的一數值,而無須等待積體電路的其他資源來將實體暫存器中儲存的一結果移動到第二實體暫存器集合的一實體暫存器。利用該替代資料路徑可能會消耗較多電力來存取來自一較大距離的資料,但比在群集間插入一微操作來複製資料節省時間。
圖6為用於執行來自具有暫存器重取名的一指令集合之指令的系統600之示例的方塊圖。系統600包括配置以執行指令的一積體電路610。舉例而言,積體電路610可為一處理器或一微控制器。積體電路610包括一重取名表620、一中央暫存器檔案630、以及一執行資源單元640。重取名表620包括分錄(entry)(例如分錄622、624和626),其將由一彙編指令集合(assembly instruction set)(例如,RISC V指令集合、x86指令集合、或ARM指令集合)所支援的邏輯暫存器映射至積體電路610的實體暫存器。中央暫存器檔案630包括實體暫存器,例如實體暫存器632和實體暫存器634。執行資源單元640包括一執行資源電路642和在執行資源電路642鄰近處的實體暫存器644、646與648。
積體電路610的特徵在於,其包括映射至積體電路610上不同位置中的實體暫存器的一重取名表620。在一些實施方式中,實體暫存器可具有不同的類型。舉例而言,實體暫存器644、646和648可為向量,而在實體暫存器632中係儲存一標量。實體暫存器644、646和648在算術邏輯單元(ALU)642的鄰近處,其可導致高速度、電力節省及/或較小面積。
在一些實施方式中,重取名表620可允許使用在執行資源電路附近的實體暫存器異構集合。舉例而言,一指令集合架構(ISA)可編碼一邏輯暫存器的形狀(例如,標量、向量或矩陣)。在一些實施方式中,ISA的每一個邏輯暫存器名稱可編碼邏輯暫存器的形狀。在擷取、解碼、執行期間,運算體(例如,來源和目標)的形狀會是已知的。這可允許針對以ISA的指令實施之方程式的不同部分來使用不同類型(例如,標量、向量和矩陣)的暫存器。在一些實施方式中,兩種向量類型(一為列向量、另一為行向量)都可支援以較佳地處理二維矩陣操作。關於在一矩陣功能性單元附近的潛在實體暫存器類型的示例,見圖7。
圖7為用於執行來自一指令集合且具有暫存器重取名的指令之一系統700的一示例的方塊圖。系統700包括配置以執行指令的一積體電路710。舉例而言,積體電路710可為一處理器或一微控制器。積體電路710包括一重取名表720、度量(metric)、一矩陣執行單元730、一標量執行單元740、一向量執行單元750、和實體暫存器760、762、764與766。重取名表720包括分錄(例如722、724和726),其將由一彙編指令集合(例如,RISC-V指令集合、x86指令集合、或ARM指令集合)所支援的邏輯暫存器映射至積體電路710的實體暫存器。矩陣執行單元730包括一執行資源電路732以及將一矩陣儲存於執行資源電路732鄰近處的一實體暫存器734。標量執行單元740包括一執行資源電路742以及將標量儲存在執行資源電路742鄰近處的實體暫存器744、746與748。向量執行單元750包括一執行資源電路752、以及將向量儲存在執行資源電路752鄰近處的實體暫存器754、756與758。
積體電路710包括四種類型的實體暫存器。注意,針對一維向量的實體暫存器(760、762、764與766)之一些並不具有功能性單元,因為它們供給矩陣功能性單元。舉例而言,實體暫存器760、762、764與766可儲存行向量。相比之下,標量、和矩陣具有用於操作的鄰近功能性單元。在一些實施方式中(未示於圖7),積體電路710可包括一維向量(例如,行向量)之實體暫存器760、762、764與766鄰近處的一個或多個執行資源電路。圖7的例示架構對於向量被指定要進行矩陣轉換或逐元素操作的ISA而言更有效率。雖未示於圖7,但也可存在有多個實體矩陣暫存器。
舉例而言,一個簡單路徑為:輸入所有類型1,輸出所有類型1→分配類型1暫存器(例如,所有標量、或所有一維向量(例如列向量)、或加載矩陣)。若沒有實體暫存器可用,則可延遲一指令以於一合適實體暫存器為可用時排程執行。
舉例而言,一個稍微複雜的路徑是:根據ISA或暫存器名稱中的提示,針對每一個輸入/輸出挑出最佳類型的實體暫存器。
舉例而言,一個進階的路徑/更複雜的實施例為:應用分支預測-類型啟發法來追蹤如何使用結果以及為輸出挑出正確類型的暫存器。舉例而言,在圖7中,吾人可具有兩種類型的一維向量(列和行)。若結果經常是儲存在列向量中、但在一後續矩陣操作中需要在行向量中使用結果,則會發生效率低下。反之亦然,若結果經常是儲存在行向量暫存器中、但直接執行需要移動的操作需要這些結果,則會發生效率低下。因此在此路徑上,追蹤該運算體的最近使用可以通知未來的放置。大部分迴圈會以簡單的預測器來支援這一點,該預測器由緩衝區組成,其追蹤上一次使用何種類型的暫存器。因此,你會針對重取名表追蹤像是此類的事情:
重取名表 | 使用預測 |
v0 | 1D 列向量 |
v1 | 標量 |
v2 | 2D 矩陣 |
v3 | 1D 行向量 |
v... |
其中,使用預測只是先前什麼最後發生於該情況。因此,預測器所生成的預測與最後路徑有關。
實體地理外的另一個問題是,若你有整數ALUs和進行浮點計算的另一ALU,則會發生什麼。因此,可用的實體暫存器的類型也可能會因暫存器的元素的精確格式而變化。舉例而言,可延伸重取名表來為一邏輯暫存器追蹤或預測元素類型,其會導致重取名表:
重取名表 | 使用預測 | 元素類型 |
v0 | 1D 列向量 | 單精度浮點數 |
v1 | 標量 | 雙倍精度浮點數 |
v2 | 2D 矩陣 | 整數 |
v3 | 1D 行向量 | 定制(custom) |
v... |
暫存器重取名可與處理器中的亂序執行相關聯。此方法兩者皆可用。
舉例而言,用於執行指令之一積體電路610包括:一執行資源電路642,其係配置以執行儲存在實體暫存器中的運算體上的指令;一實體暫存器集合,其包括位於執行資源電路鄰近處的實體暫存器子644、646和648之第一集合,和位於比實體暫存器子644、646和648之第一集合中的暫存器更遠離該執行資源電路642的實體暫存器(例如中央暫存器檔案630)之第二子集合;以及一暫存器重取名電路,係配置以:偵測儲存於一指令解碼緩衝區中的一指令序列,該指令序列包括對具有真正相關性的一第一邏輯暫存器的多個順序引用;以及基於該指令序列的偵測,對要儲存於實體暫存器644、646和648之第一子集合之一實體暫存器中的該第一邏輯暫存器進行重取名,並且對要儲存於實體暫存器644、646和648之第二子集合之一實體暫存器中的該指令序列中所引用的另一邏輯暫存器進行重取名。舉例而言,第一邏輯暫存器可為具有至少兩個元素的一向量,而第一實體暫存器子集合的實體暫存器儲存該向量。舉例而言,第一邏輯暫存器可為具有多列和多行元素的一矩陣,而第一實體暫存器子集合的實體暫存器儲存該矩陣。在一些實施方式中,指令的順序在第一邏輯暫存器中累積一總和。
雖然已經結合某些實施例來說明本發明內容,仍應理解本發明並不限於所揭露的實施例,而是相反的,其旨在涵蓋包含在如附請求項的範疇內各種修飾例和等效配置,其範疇應被賦予最廣泛的解釋,以涵蓋法律上所允許的所有這類修飾例和等效結構。
ALU:算術邏輯單元
100、200、600、700:系統
110、210、610、710:積體電路
120:第一群集
122:第一執行資源電路
124、126、128、134、136、138、632、634、644、646、648、744、746、748、754、756、758、760、762、764、766:實體暫存器
130:第二群集
132:第二執行資源電路
140、240:暫存器重取名電路
150、620、720:重取名表
160:資料類型預測器電路
170:指令緩衝區
172、174:指令
280:替代資料路徑
300、400、500:程序
622、624、626、722、724、726:分錄
630:中央暫存器檔案
640:執行資源單元
642、732、742、752:執行資源電路
730:矩陣執行單元
734:P1矩陣暫存器
740:標量執行單元
750:向量執行單元
當結合如附圖式加以閱讀,即可從下列詳細說明內容最佳地理解本案。需強調的是,根據一般性實務,圖式中的各種特徵並非按比例繪製;相反地,各種特徵的尺寸係可任意放大或縮小,以求清晰。
圖1為一方塊圖,其說明利用基於資料類型預測進行暫存器重取名而執行指令之一系統的一示例。
圖2為一方塊圖,其說明利用基於資料類型預測進行暫存器重取名而執行指令之一系統的一示例、以及可用以從一錯誤預測中回復之群集之間的一替代資料路徑。
圖3為一流程圖,其說明一種用於基於資料類型預測進行暫存器重取名之程序的一示例。
圖4為一流程圖,其說明一種用於藉由插入一微操作(micro-op)以將資料移動至一正確群集來從一資料類型錯誤預測中回復之程序的一示例。
圖5為一流程圖,其說明一種用於藉由利用群集之間的一替代資料路徑來從一資料類型錯誤預測中回復之流程的一示例。
圖6為一方塊圖,其說明用於執行來自具有暫存器重取名的一指令集合的指令之一系統的一示例。
圖7為一方塊圖,其說明用於執行來自一指令集合且具有暫存器重取名的指令之一系統的一示例。
100:系統
110:積體電路
120:第一群集
122:第一執行資源電路
124、126、128、134、136、138:實體暫存器
130:第二群集
132:第二執行資源電路
140:暫存器重取名電路
150:重取名表
160:資料類型預測器電路
170:指令緩衝區
172、174:指令
Claims (42)
- 一種用於執行指令之積體電路,包括: 一第一群集,包括一第一實體暫存器集合和一第一執行資源電路,該第一執行資源電路係配置以執行採用該第一實體暫存器集合中的一個或多個暫存器的內容作為輸入的操作,其中該第一執行資源電路的操作之該輸入具有一第一資料類型; 一第二群集,包括一第二實體暫存器集合和一第二執行資源電路,該第二執行資源電路係配置以執行採用該第二實體暫存器集合中的一個或多個暫存器的內容作為輸入的操作,其中該第二執行資源電路的操作之該輸入具有不同於該第一資料類型之一第二資料類型;以及 一暫存器重取名電路,係配置以: 針對將被儲存於一第一邏輯暫存器中的一第一指令的一結果,決定一資料類型預測;以及 基於與該第一資料類型匹配的該資料類型預測,對要被儲存於該第一實體暫存器集合的一實體暫存器中的該第一邏輯暫存器進行重取名。
- 如請求項1所述的積體電路,其中該第一指令係一隱式類型傳輸指令。
- 如請求項1所述的積體電路,其中該第一指令係一加載指令。
- 如請求項1所述的積體電路,其中該資料類型預測係基於該第一指令的一操作碼而決定。
- 如請求項1所述的積體電路,其中該資料類型預測係基於將存取該第一指令的結果的一已佇列指令的操作碼而決定,其中該已佇列指令係儲存於一指令緩衝區中。
- 如請求項5所述的積體電路,其中該指令緩衝區係該積體電路的一解碼緩衝區。
- 如請求項5所述的積體電路,其中該指令緩衝區係該積體電路的一指令快取的一快取列。
- 如請求項1所述的積體電路,其中該資料類型預測係基於目前儲存於該第一邏輯暫存器中的資料之一目前資料類型而決定。
- 如請求項1所述的積體電路,其中該資料類型預測係基於一程式計數器的一數值而決定。
- 如請求項1所述的積體電路,其中該暫存器重取名電路係配置以: 偵測一錯誤預測,其中將在該第一指令之後執行的一第二指令將存取該第一邏輯暫存器作為具有該第二資料類型的一輸入;以及 回應於該錯誤預測,在該第二指令之前發佈一微操作,其中該微操作將該第一實體暫存器集合的一實體暫存器中所儲存的該第一邏輯暫存器的一數值複製到該第二實體暫存器集合的一實體暫存器。
- 如請求項1所述的積體電路,其包括從該第一實體暫存器集合中的一實體暫存器到該第二執行資源電路的一替代資料路徑,且其中該暫存器重取名電路係配置以: 偵測一錯誤預測,其中將在該第一指令之後執行的一第二指令將存取該第一邏輯暫存器作為具有該第二資料類型的輸入;以及 回應於該錯誤預測,令該第二執行資源電路利用該替代資料路徑存取該第一邏輯暫存器的一數值。
- 如請求項1所述的積體電路,其中該第一邏輯暫存器為具有至少兩個元素的一向量,且該第一實體暫存器集合中的該實體暫存器儲存該向量。
- 如請求項1所述的積體電路,其中該第一邏輯暫存器為具有多列和多行元素的一矩陣,且該第一實體暫存器集合中的該實體暫存器儲存該矩陣。
- 如請求項1所述的積體電路,其中該第一資料類型為浮點數,且該第二資料類型為整數。
- 如請求項1所述的積體電路,其中該第一資料類型為整數,且該第二資料類型為浮點數。
- 如請求項1所述的積體電路,其中該第一資料類型為布林,且該第一實體暫存器集合的暫存器為一單一位元大小。
- 如請求項16所述的積體電路,其中該第一執行資源電路係配置以執行分支指令。
- 如請求項1所述的積體電路,其中該第一資料類型為標量,且該第二資料類型為半寬標量。
- 如請求項1所述的積體電路,其中該第一資料類型為包裝SIMD,且該第二資料類型為非包裝SIMD。
- 一種用於執行指令的方法,包括: 針對將被儲存於一第一邏輯暫存器中的一第一指令之一結果,決定一資料類型預測;以及 基於匹配一第一資料類型的該資料類型預測,對要儲存在從複數個群集中所選出的一第一群集的一第一實體暫存器中的該第一邏輯暫存器進行重取名,其中該複數個群集包括: 一第一群集,包括一第一實體暫存器集合和一第一執行資源電路,該第一執行資源電路係配置以執行採用該第一實體暫存器集合中的一個或多個暫存器的內容作為輸入之操作,其中該第一執行資源電路的操作之該輸入具有該第一資料類型;以及 一第二群集,包括一第二實體暫存器集合和一第二執行資源電路,該第二執行資源電路係配置以執行採用該第二實體暫存器集合中的一個多個暫存器的內容作為輸入之操作,其中該第二執行資源電路的操作之該輸入具有不同於該第一資料類型之一第二資料類型。
- 如請求項20所述的方法,其中該第一指令係一隱式類型傳輸指令。
- 如請求項20所述的方法,其中該第一指令為一加載指令。
- 如請求項20所述的方法,其中該資料類型預測係基於該第一指令的一操作碼而決定。
- 如請求項20所述的方法,其中該資料類型預測係基於將存取該第一指令的該結果的一已佇列指令的一操作碼而決定,其中該已佇列指令係儲存於一指令緩衝區中。
- 如請求項24所述的方法,其中該指令緩衝區為一解碼緩衝區。
- 如請求項24所述的方法,其中該指令緩衝區為一指令快取的一快取列。
- 如請求項20所述的方法,其中該資料類型預測係基於目前儲存於該第一邏輯暫存器中的資料之一目前資料類型而決定。
- 如請求項20所述的方法,其中該資料類型預測係基於一程式計數器的一數值而決定。
- 如請求項20所述的方法,包括: 偵測一錯誤預測,其中將在該第一指令之後執行的一第二指令將存取該第一邏輯暫存器作為具有該第二指令類型的一輸入;以及 回應於該錯誤預測,在該第二指令之前發佈一微操作,其中該微操作將儲存於該第一實體暫存器集合中的一實體暫存器的該第一邏輯暫存器的一數值複製到該第二實體暫存器集合中的一實體暫存器。
- 如請求項20所述的方法,包括: 偵測一錯誤預測,其中將在該第一指令之後執行的一第二指令將存取該第一邏輯暫存器作為具有該第二資料類型的一輸入;以及 回應於該錯誤預測,令該第二執行資源電路利用從該第一實體暫存器集合中的一實體暫存器到該第二執行資源電路的一替代資料路徑存取該第一邏輯暫存器的一數值。
- 如請求項20所述的方法,其中該第一邏輯暫存器為具有至少兩個元素之一向量,且該第一實體暫存器集合中的該實體暫存器儲存該向量。
- 如請求項20所述的方法,其中該第一邏輯暫存器為具有多列和多行元素之一矩陣,且該第一實體暫存器集合中的該實體暫存器儲存該矩陣。
- 如請求項20所述的方法,其中該第一資料類型為浮點數,且該第二資料類型為整數。
- 如請求項20所述的方法,其中該第一資料類型為整數,且該第二資料類型為浮點數。
- 如請求項20所述的方法,其中該第一資料類型為布林,且該第一實體暫存器集合中的暫存器為一單一位元大小。
- 如請求項20所述的方法,其中該第一執行資源電路係配置以執行分支指令。
- 如請求項20所述的方法,其中該第一資料類型為標量,且該第二資料類型為半寬標量。
- 如請求項20所述的方法,其中該第一資料類型為包裝SIMD,且該第二資料類型為非包裝SIMD。
- 一種用於執行指令之積體電路,包括: 一執行資源電路,係配置以執行儲存在實體暫存器中的運算體上的指令; 一實體暫存器集合,包括位於該執行資源電路鄰近處的一第一實體暫存器子集合、以及位於比該第一實體暫存器子集合中的該暫存器更遠離該執行資源電路的一第二實體暫存器子集合;以及 一暫存器重取名電路,係配置以: 偵測儲存於一指令解碼緩衝區中的一指令序列,該指令序列包括對具有真正相關性的一第一邏輯暫存器的多個順序引用;以及 基於該指令序列的偵測,對要儲存於該第一實體暫存器子集合之一實體暫存器中的該第一邏輯暫存器進行重取名,並且對要儲存於該第二實體暫存器子集合之一實體暫存器中的該指令序列中所引用的另一邏輯暫存器進行重取名。
- 如請求項39所述的積體電路,其中該第一邏輯暫存器為具有至少兩個元素之一向量,且該第一實體暫存器子集合中的該實體暫存器儲存該向量。
- 如請求項39所述的積體電路,其中該第一邏輯暫存器為具有多列和多行元素之一矩陣,且該第一實體暫存器子集合中的該實體暫存器儲存該矩陣。
- 如請求項39所述的積體電路,其中該指令序列於該第一邏輯暫存器中累積一總和。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063056542P | 2020-07-24 | 2020-07-24 | |
US63/056,542 | 2020-07-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202219746A true TW202219746A (zh) | 2022-05-16 |
Family
ID=77398644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110127142A TW202219746A (zh) | 2020-07-24 | 2021-07-23 | 省電暫存器重取名 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230305852A1 (zh) |
EP (1) | EP4185953A1 (zh) |
KR (1) | KR20230038799A (zh) |
CN (1) | CN116134417A (zh) |
TW (1) | TW202219746A (zh) |
WO (1) | WO2022020681A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6167508A (en) * | 1998-06-02 | 2000-12-26 | Compaq Computer Corporation | Register scoreboard logic with register read availability signal to reduce instruction issue arbitration latency |
US9582322B2 (en) * | 2013-03-15 | 2017-02-28 | Soft Machines Inc. | Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping |
US11816483B2 (en) * | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
-
2021
- 2021-07-23 EP EP21756105.9A patent/EP4185953A1/en active Pending
- 2021-07-23 KR KR1020237006179A patent/KR20230038799A/ko unknown
- 2021-07-23 CN CN202180059501.5A patent/CN116134417A/zh active Pending
- 2021-07-23 TW TW110127142A patent/TW202219746A/zh unknown
- 2021-07-23 US US18/017,792 patent/US20230305852A1/en active Pending
- 2021-07-23 WO PCT/US2021/042904 patent/WO2022020681A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022020681A1 (en) | 2022-01-27 |
EP4185953A1 (en) | 2023-05-31 |
US20230305852A1 (en) | 2023-09-28 |
CN116134417A (zh) | 2023-05-16 |
KR20230038799A (ko) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
US6826704B1 (en) | Microprocessor employing a performance throttling mechanism for power management | |
TWI507980B (zh) | 最佳化暫存器初始化操作 | |
US7395416B1 (en) | Computer processing system employing an instruction reorder buffer | |
US6393555B1 (en) | Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
US6405305B1 (en) | Rapid execution of floating point load control word instructions | |
US9355061B2 (en) | Data processing apparatus and method for performing scan operations | |
US7565513B2 (en) | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations | |
US6247117B1 (en) | Apparatus and method for using checking instructions in a floating-point execution unit | |
US6425072B1 (en) | System for implementing a register free-list by using swap bit to select first or second register tag in retire queue | |
US6408379B1 (en) | Apparatus and method for executing floating-point store instructions in a microprocessor | |
CN101438236A (zh) | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 | |
EP1261914A1 (en) | Processing architecture having an array bounds check capability | |
US20220035635A1 (en) | Processor with multiple execution pipelines | |
US6425074B1 (en) | Method and apparatus for rapid execution of FCOM and FSTSW | |
US6487653B1 (en) | Method and apparatus for denormal load handling | |
US20240020120A1 (en) | Vector processor with vector data buffer | |
US6374345B1 (en) | Apparatus and method for handling tiny numbers using a super sticky bit in a microprocessor | |
US6370637B1 (en) | Optimized allocation of multi-pipeline executable and specific pipeline executable instructions to execution pipelines based on criteria | |
US6442677B1 (en) | Apparatus and method for superforwarding load operands in a microprocessor | |
US11451241B2 (en) | Setting values of portions of registers based on bit values | |
TW202219746A (zh) | 省電暫存器重取名 | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
US6157995A (en) | Circuit and method for reducing data dependencies between instructions |