TWI740844B - 用於資料處理的方法、設備、及電腦程式 - Google Patents
用於資料處理的方法、設備、及電腦程式 Download PDFInfo
- Publication number
- TWI740844B TWI740844B TW105131203A TW105131203A TWI740844B TW I740844 B TWI740844 B TW I740844B TW 105131203 A TW105131203 A TW 105131203A TW 105131203 A TW105131203 A TW 105131203A TW I740844 B TWI740844 B TW I740844B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- movement
- prefix
- register
- command
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 230
- 238000004590 computer program Methods 0.000 title claims description 5
- 238000000034 method Methods 0.000 title description 20
- 230000004927 fusion Effects 0.000 claims description 108
- 230000001066 destructive effect Effects 0.000 claims description 48
- 239000013598 vector Substances 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 15
- 238000013500 data storage Methods 0.000 claims description 8
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 4
- 230000006378 damage Effects 0.000 claims 1
- 230000001568 sexual effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 102100026693 FAS-associated death domain protein Human genes 0.000 description 2
- 101000911074 Homo sapiens FAS-associated death domain protein Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 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
- 230000000717 retained effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000007500 overflow downdraw method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/30181—Instruction operation extension or modification
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
設備2具有指令融合電路系統50,該指令融合電路系統50用於融合自資料儲存處提取的兩個或兩個以上指令,以產生經融合指令以由處理電路系統14處理。本發明提供一種移動前綴指令,該移動前綴指令向指令融合電路系統50指示該移動前綴指令可與緊接著的資料處理指令融合,而不需要比較該移動前綴指令及該緊接著的指令指定的暫存器。此舉使指令融合電路系統50能夠以減少的硬體及能量成本來實施。
Description
本技術係關於資料處理之領域。
有時處理電路系統可在硬體中支援一操作,該操作在設計該處理電路系統來執行的指令集架構之經編碼的指令中並不具有直接等效物。舉例而言,指令集架構中受限的可用編碼空間可能意謂給定操作可能需要在正被執行的程式中定義兩個或兩個以上單獨的指令,但處理設備可具有指令融合電路系統,該指令融合電路系統可偵測存在等效於該處理電路系統所支援的單一經融合指令的兩個或兩個以上指令之群組,且若如此,則向該處理電路系統提供該經融合指令以供執行。然而,就電路面積及功耗而言,偵測何時存在可經融合的指令集之該指令融合電路系統可能相對昂貴。對於能量效率可能比效能更重要的許多低端系統而言,指令融合之管理負擔可能過高,因此指令融合的益處通常不可用於該等系統。
至少一些實例提供一種設備,該設備包含:處理電路系統,該處理電路系統回應於指令而執行資料處理;以及指令融合電路系統,該指令融合電路系統融合自資料儲存處提取的移動前綴指令及緊接著的指令,以產生經融合資料處理指令以由處理電路系統處理; 其中該移動前綴指令識別移動目的地暫存器及移動來源暫存器,該移動來源暫存器指定將被至少部分地複製至該移動目的地暫存器的資料值;以及 回應於偵測到該移動前綴指令,該指令融合電路系統經配置以決定是否融合該移動前綴指令及該緊接著的指令,而不管是否移動前綴指令之移動目的地暫存器為與該緊接著的指令指定的任何暫存器相同的暫存器。
至少一些實例提供一種資料處理方法,該資料處理方法包含以下步驟: 在自資料儲存處提取的供處理電路系統處理的指令之中偵測移動前綴指令,該移動前綴指令識別移動目的地暫存器及移動來源暫存器,該移動來源暫存器指定將被至少部分地複製至該移動目的地暫存器的資料值;以及 決定是否融合該移動前綴指令與緊接著的指令,以產生經融合資料處理指令以由該處理電路系統處理; 其中當偵測到移動前綴指令時,該決定步驟決定是否融合該移動前綴指令及該緊接著的指令,而不管是否移動前綴指令之移動目的地暫存器為與該緊接著的指令指定的任何暫存器相同的暫存器。
至少一些實例提供一種設備,該設備包含: 用於回應於指令而執行資料處理之手段;以及 用於融合自資料儲存處提取的移動前綴指令及緊接著的指令,以產生經融合資料處理指令以由處理電路系統處理之手段; 其中該移動前綴指令識別移動目的地暫存器及移動來源暫存器,該移動來源暫存器指定將被至少部分地複製至該移動目的地暫存器的資料值;以及 回應於偵測到該移動前綴指令,用於融合之手段經配置以決定是否融合該移動前綴指令及該緊接著的指令,而不管是否移動前綴指令之移動目的地暫存器為與該緊接著的指令指定的任何暫存器相同的暫存器。
至少一些實例亦可提供一種儲存於電腦可讀取儲存媒體上的電腦程式,該電腦程式在由資料處理設備執行時提供虛擬機,該虛擬機提供對應於上文描述之設備的指令執行環境。該儲存媒體可為非暫時性儲存媒體。
下文將闡述本技術之特定實例。應瞭解,本技術不限於此等實例。
提供移動前綴指令,該移動前綴指令可置放在緊接著的指令之前,以向指令融合電路系統發送訊號通知融合移動前綴指令及緊接著的指令是安全的,而不必檢查移動前綴指令之目的地與該緊接著的指令指定的任何暫存器是否相同。此舉避免指令融合電路系統需要具有用於比較各別指令之暫存器的比較器,從而使指令融合在硬體中實施更便宜,因此使得指令融合可用於較低端系統,對於該等較低端系統,就硬體及能量消耗而言,指令融合先前可能過於昂貴。
資料處理指令可定義為構造性指令或者破壞性指令兩者中的任一者。構造性指令具有編碼,該編碼具有供單獨的暫存器說明符單獨地識別資料處理指令之目的地暫存器及來源暫存器的空間。另一方面,對於破壞性的指令而言,編碼可具有單一暫存器說明符,該單一暫存器說明符識別目的地暫存器及一個來源暫存器兩者。構造性指令的實例可為加法指令ADD Rd、Rs1、Rs2,該加法指令可觸發處理電路系統執行運算Rd=Rs1+Rs2。破壞性運算的實例可為加法指令ADD Rd、Rs1,該加法指令觸發處理電路系統執行加法運算Rd=Rd+Rs1。
指令的構造性形式可以是有用的,因為該構造性形式維持所有輸入運算元的先前值,因此若多個指令需要相同輸入,則該多個指令可繼續引用與先前的構造性指令相同的來源暫存器。舉例而言,在上文論述的構造性加法運算中,若另一指令再次需要暫存器Rs1,則使用構造性形式允許此值被保留,而在執行加法之前不需要任何進一步指令來操縱暫存器。
然而,在一些指令集架構中,編碼空間非常珍貴,且除來源運算元中之每一來源運算元的暫存器說明符之外,可能並不存在足夠空間來容納目的地暫存器之單獨的暫存器說明符。因此,一些指令集架構並不為一些指令提供構造性編碼,因此破壞性編碼可能是可用於程式設計員或編譯器的唯一編碼。由於藉由將破壞性指令之結果寫入至來源暫存器中之一個來源暫存器,較少的暫存器說明符需要在指令中編碼,故破壞性的編碼節省編碼空間。然而,若資料流分析指示所有該等指令輸入在指令完成之後仍然是有用的(被再次讀取),則程式設計員或編譯器普遍想要使用指令的構造性形式。若用於執行所要操作之構造性指令在指令集架構中不是可用的,則程式設計員或編譯器可藉由在破壞性指令之前在某處插入暫存器移動或複製指令來解決此問題。
舉例而言,以下向量運算可能不具有架構中可用的構造性指令: (1) rd = pg ? rs1 + rs2 : 0; //對應於 ADD Zd.S, Pg/Z, Zs1.S, Zs2.S. 其中rd為目的地暫存器,rs1及rs2為來源暫存器,且pg為識別向量寄存器之哪些元件是有效或無效元件的述詞值,有效元件設定為來源暫存器中對應元件之和rs1+rs2,且無效元件rd設定為0。
若上文所示構造性加法指令是不可用的,則程式設計員或編譯器可替代使用單獨的移動及破壞性加法指令: (2) rd = pg ? rs1 : 0; //對應於 MOV Zd.S, Pg/Z, Zs1.S rd = pg ? rd' + rs2 : rd; //對應於 ADD Zd.S, Pg/M, Zs2.S (在上文所示向量指令語法中,述詞之後綴/Z或/M指示是否使用歸零或合併預測。針對歸零預測,結果之無效元件設定為零,而針對合併預測,無效元件保持先前儲存在目的地暫存器Zd.S之對應元件中的相同值。)
因此,使用實例(2)之兩個指令,可保留暫存器Zs1.S (rs1)之內容,以便該等內容可被後續指令讀取。然而,需要解碼及處理額外指令可降低效能。
實際上,即使在指令集架構內並未提供構造性指令,處理電路系統之硬體仍可支援構造性資料處理操作。舉例而言,給定指令集架構可將破壞性編碼僅用於在編碼空間上存在最大壓力的指令,而需要較少不同值的其他類型之指令在針對單獨的目的地暫存器說明符具有足夠空間的指令中編碼。因此,即使在指令集架構中存在一些破壞性指令,亦存在一些構造性指令的事實可意謂處理電路系統本身之硬體仍具有用於接收單獨的來源暫存器說明符及目的地暫存器說明符之輸入,因此在修改相對較少的情形下,破壞性指令亦可變換成構造性運算,以發佈給處理電路系統。
因此,一些實施方式可提供指令融合電路系統以識別何時存在如上之移動指令及後續資料處理指令的序列,該等移動指令及後續資料處理指令實際上意欲實施對應的構造性資料處理操作,且當識別該序列時,指令融合電路系統可融合該等移動指令及後續資料處理指令,以產生單一經融合資料處理指令,以便觸發處理電路系統執行構造性運算。舉例而言,可將上文實例(1)中所示的構造性向量加法指令發佈給處理電路系統,而非發佈來自實例(2)的單獨的向量MOV及加法指令。
然而,存在大量問題使得該指令融合較為困難。首先,若該對移動指令及後續資料處理指令跨越頁面邊界或快取列或指令提取邊界,則指令融合電路系統可能不會遇到與移動指令相同批次的指令中的後續資料處理指令,此使得在不將某種額外內部狀態維持在看見移動指令與看見後續資料處理指令之間的情形下,識別指令之組合較為困難。維持該額外內部狀態將增加指令融合電路系統之硬體管理負擔。
同時,為了能夠融合移動指令及後續資料處理指令,指令融合電路系統可能需要檢查該移動指令及該資料處理指令之運算元是相容的,以便該移動指令及該資料處理指令可融合。舉例而言,指令融合電路系統可能需要檢查:移動指令之目的地暫存器與後續資料處理指令之目的地暫存器是相同的、不存在重寫彼暫存器的中間指令,以及是否該等指令為指定識別向量運算元之何者資料元件是有效元件的述詞暫存器之向量指令,該兩個指令指定的述詞暫存器亦是相同的。此等檢查將確保移動指令及後續資料處理指令實際上意欲實施等效構造性運算,且不是獨立運算。執行所有此等檢查將極大地增加指令融合電路系統之複雜性,且對於相對低端實施方式而言,此情況可能並不合理。
融合存在的另一問題在於,經融合指令可觸發異常狀況,諸如當浮點指令遇到諸如溢出或下溢或除以零之浮點異常時。處理該等異常對於經融合指令而言可能較為複雜。
出於所有此等原因,通常指令融合僅對於相對高端實施方式中的移動指令及資料處理指令是可能的,對於相對高端實施方式而言,效能是比能量效率更重要的要求。亦需要使融合的益處可用於較低端實施方式。
為解決此等問題,提供專用移動前綴指令,程式設計員或編譯器可使用該專用移動前綴指令給緊接著的指令加前綴,以發送訊號通知可融合該移動前綴指令及該緊接著的指令。移動前綴指令識別移動目的地暫存器及移動來源暫存器,該移動來源暫存器指定將被至少部分地複製至該移動目的地暫存器的資料值。當偵測到移動前綴指令時,指令融合電路系統可決定是否融合該移動前綴指令及該緊接著的指令,而不管是否移動前綴指令之移動目的地暫存器為與該緊接著的指令指定的任何暫存器相同的暫存器。
因此,指令融合電路系統並不需要比較移動前綴指令及緊接著的指令中的暫存器,因為提供了移動前綴指令之事實是緊接著的指令預期為破壞性資料處理指令的訊號,該破壞性資料處理指令之目的地暫存器及第一來源暫存器與移動前綴指令之移動目的地暫存器相同。概言之,藉由在該對移動指令及破壞性指令意欲實施構造性運算融合時,賦予程式設計員或編譯器選擇移動前綴指令的責任,此舉避免在處理電路系統中需要較複雜的硬體用於偵測融合何時可能的情形,從而節省了功耗及電路面積。
圖1示意性地圖示資料處理設備2之實例,資料處理設備2包含處理管線4,處理管線4包括一定數量個管線級。在此實例中,管線級包括用於自資料儲存處(例如,指令快取或記憶體)提取指令的提取級6、用於解碼該等經提取指令之解碼級、用於執行暫存器更名之更名級10、用於發佈供執行指令之發佈級12及用於執行該等經發佈指令之執行級14。執行級14包括一定數量個用於執行不同種類指令之執行單元,例如,用於執行純量資料處理指令之純量ALU(算術邏輯單元)20、用於執行向量資料處理指令之向量ALU 22、用於執行浮點指令之浮點單元24(在一些情形下可提供單獨的純量浮點單元及向量浮點單元)及用於執行載入/儲存指令以在暫存器30與諸如資料快取或記憶體的資料儲存處之間轉移資料之載入/儲存單元26。可提供變換旁看緩衝區(A translation look aside buffer; TLB) 32,以快取用於將載入/儲存指令指定的虛擬位址變換成實體位址之位址變換資料,該等實體位址識別資料快取或記憶體內的位置。
暫存器30包括用於儲存各自包含單一資料元件的純量運算元之純量暫存器34、用於儲存各自包含多個資料元件的向量運算元之向量暫存器36及用於儲存識別向量暫存器36之哪些元件是有效或無效的述詞值之述詞暫存器38。回應於向量ALU 22處理的向量指令,可自向量暫存器36讀取一或多個向量運算元,且儲存在述詞暫存器38中之一個述詞暫存器38的述詞值可控制向量ALU 22以對述詞值所指示的任何有效資料元件30執行給定資料處理操作,來產生對應結果資料元件,以被回寫至向量暫存器中之一個向量暫存器,而對應於述詞所指示的無效線道的任何元件可取某個其他值。可定義不同的無效線道處置模式,用於決定如何設定無效線道在目的地暫存器中的值。舉例而言,無效的結果資料元件可清除為預定值(例如零)或可保持目的地暫存器之對應元件的先前值。另一方面,針對純量指令,純量ALU 20或浮點單元24可自純量暫存器34讀取資料值、處理該等資料值且將結果值回寫至純量暫存器34中之一個純量暫存器34。
在圖1之實例中,管線4為亂序管線,該亂序管線支援以與提取級6提取指令的程式次序不同的次序執行指令。發佈級12具有用於使指令在等待該等指令的運算元變得可用時將待執行之指令排入佇列之發佈佇列40。當指令的運算元變得可用時,即使處於程式次序的較早指令仍在等待該較早指令的運算元,隨後亦可發佈該指令以供執行級40執行。為增加重排指令可能的程度,提供更名級10以將經提取指令指定的架構暫存器說明符映射至識別硬體中所提供的實體暫存器30的實體暫存器說明符。通常,所提供的實體暫存器之數目大於指令集架構中可用的架構暫存器之數目,以允許不同指令指定相同架構暫存器被映射至不同實體暫存器,以便可消除此等指令之間的相依性。此舉容許較大的靈活性來重排指令之執行,以改良效能。更名級10維持用於追蹤架構暫存器說明符與實體暫存器說明符之間的映射之更名表42。
應瞭解,其他實例可提供有序管線,該有序管線之程式指令以該等程式指令的原始程式次序來執行。在此情形下,可省去更名級10,且發佈級12可在給定指令的運算元可用且已發佈按程式次序的任何較早指令時發佈該給定指令。
應瞭解,此實例僅僅是可能的管線架構之一個實例,且其他實例可具有不同級或執行級14中執行單元的不同組合。舉例而言,一些管線可在解碼級8與發佈級12之間具有額外調度級,以便當發佈佇列40全滿時,經解碼指令可在調度級中等待,以避免阻擋其他指令在解碼級8處的解碼。
提取電路系統6自資料儲存處提取的指令可稱為「巨集指令」,而傳遞至執行級14以供執行的經解碼指令可稱為「微指令」或「微操作」。針對一些類型的指令,可能在自快取或記憶體提取的巨集指令與執行級14所執行的微操作之間存在一對一映射。然而,針對其他類型的指令,複雜指令可由解碼級8解碼成多個微操作,可隨後單獨地發佈該多個微操作以供執行級14執行。舉例而言,載入多指令可解碼成各自用於將資料自記憶體載入至不同暫存器中的一定數量個個別載入微操作。
同時,兩個或兩個以上巨集指令可經融合以產生待執行的單一微指令。在此實例中,解碼級8具有指令融合電路系統50,該指令融合電路系統50用於融合提取級自指令快取或記憶體提取的指令串流內偵測到的兩個或兩個以上指令的各個群組,且當偵測到該群組時,融合此等指令之群組,以產生單一經融合資料處理指令,從而給出可隨後轉發至後續級以供處理的等效結果。由於單一指令可通常比兩個或兩個以上單獨的指令執行得更快,故此舉實現經改良效能。儘管圖1圖示包含指令融合電路系統50的解碼級8,但在其他實例中,指令融合可在諸如調度級或發佈級12(例如,解碼級8可最初將指令之群組解碼成單獨的經解碼指令,但發佈級處的融合電路系統可隨後將此等指令融合成單一微操作)的另一級發生。因此,在解碼時發生指令融合並非是必要的。
指令融合電路系統50可偵測指令之可融合群組,指令之該可融合群組可映射至對應的經融合指令(經融合微操作),以發送至處理電路系統14。可能存在可各自映射至對應的經融合指令之若干不同的可融合群組。然而,後續實例將集中在包含移動前綴指令及緊接著的指令之特定群組。此情形並不排除亦能夠融合其他類型指令之指令融合電路系統50。
圖2圖示指令融合電路系統50執行的指令融合之實例。圖2之頂部部分圖示程式設計員或編譯器實際上希望使用的構造性加法指令,但該構造性加法指令在設備2支援的指令集架構中是不可用的。構造性加法指令指定目的地暫存器Zd、述詞暫存器Pg及兩個來源暫存器Zs1、Zs2。構造性加法指令將意欲控制設備自向量暫存器Zs1、Zs2讀取向量,且對該兩個向量之對應資料元件的每一各別對執行一系列加法運算,以產生對應的結果資料元件來寫入至目的地暫存器Zd。由述詞暫存器Pg識別為無效的任何元件將使結果之對應資料元件設定成與該加法無關的某個其他值,而有效線道取源向量之對應資料元件的加法結果。
然而,因為構造性加法指令是不可用的,所以程式設計員或編譯器事實上提供圖2之中間部分中所示的移動前綴指令及破壞性加法指令。移動前綴指令指定目的地暫存器Zd及來源暫存器Zs1,且移動前綴指令意欲觸發處理設備將移動目的地暫存器Zd設定成等於移動來源暫存器Zs1。視需要,移動前綴指令亦可指定述詞暫存器Pg控制目的地暫存器Zd之哪些資料元件是有效元件,以用來自來源暫存器Zs1的對應元件填充。然而,亦可提供非述詞的移動前綴指令,在此情形下,可將整個來源值自暫存器Zs1複製至目的地暫存器Zd。後續破壞性加法指令指定與移動前綴指令相同的目的地暫存器Zd及相同的述詞Pg(若在移動前綴指令中提供述詞),且亦指定第二來源暫存器Zs2。加法指令意欲控制處理硬體對暫存器Zd及Zs2中的各別元件對做加法,且將每一結果寫入至目的地暫存器Zd之對應元件,從而重寫目的地暫存器之彼等元件中的先前值。此外,述詞暫存器控制哪些線道是有效及無效的,且任何無效線道設定成與加法無關(例如,該等無效線道可設定成零或設定成目的地暫存器之先前值)。
指令融合電路系統50偵測包含移動前綴指令及破壞性加法指令之指令對,且決定是否融合該移動前綴指令及該破壞性加法指令。如圖2之下部部分中所示,指令融合電路系統50決定不融合此等指令,隨後將未經融合的移動指令及加法指令發佈至管線之後續級以供單獨地執行。另一方面,若融合該等指令,則按程式設計員或編譯器之初衷用經融合構造性加法指令替換該等指令。
決定是否融合移動前綴指令與接著的指令可取決於各種因素,該等因素可包括何者特定資料處理操作是由該接著的指令指定的。因此,是否融合指令可能針對移動前綴指令的不同情況動態地變化。在圖2的實例中,緊接著移動前綴指令的指令為加法指令,但類似地,移動前綴指令可給諸如其他形式的算術指令(減、乘、除、平方根、乘加等)或邏輯指令(諸如,與、或、異或、非與等)之其他類型的資料處理指令加前綴。因此,可能存在整個類別的不同種類的資料處理指令,可用移動前綴指令給該等資料處理指令加前綴。當移動前綴指令與資料處理指令的類別中之任何類別融合時,指令融合電路系統50可根據緊接著的指令之運算碼決定要產生對應經融合資料處理指令之類別中的何類別。
在一些實施方式中,融合電路系統50可僅針對彼類別內的某些類型的資料處理指令而非彼類別內的所有類型來融合移動前綴指令與緊接著的指令。舉例而言,如上文所提及,在浮點指令的情形下,可能存在浮點異常增加的風險,諸如當浮點運算設法將值除以零時,或當浮點結果溢出、下溢或不精確時。為避免在執行經融合指令時處理異常狀況的複雜性,在要執行的操作為例如浮點運算時,實施方式可避免融合移動前綴指令與緊接著的指令。
同時,若移動前綴指令及接著的指令保持在不同快取列中或在位址空間的不同頁面中具有指令位址,則指令融合電路系統50可選擇不融合移動前綴指令及接著的指令,因為例如,該移動前綴指令可能為解碼級8遇到的一個指令區塊中的最後指令,且該接著的指令將是下一個區塊的第一指令,因此可能不會同時遇到此等兩個指令。為避免狀態維持在看見該兩個指令之間,在遇到一個區塊的最後指令中的移動前綴之後,指令融合電路系統50可簡單地決定不融合該移動前綴指令與下一個指令。
然而,是否融合之決策與若干因素無關,該等因素包括緊接著的指令是構造性指令還是破壞性指令、是否移動前綴指令之目的地暫存器與緊接著的指令之目的地暫存器相同、是否移動前綴指令之述詞暫存器與緊接著的指令之述詞暫存器相同,以及是否緊接著的指令之來源暫存器中的一個來源暫存器與移動前綴指令之目的地暫存器相同。指令融合電路系統50並不需要檢查此等條件中的任何條件,是因為程式設計員或編譯器已選定使用專用移動前綴編碼(而非能夠在暫存器之間移動資料值的某其他種類的指令)來選擇移動前綴指令之事實指示移動前綴指令與緊接著的資料處理指令合併是安全的。藉由消除檢查所有此等條件的需要,指令融合電路系統50就硬體而言可更高效,因此此舉使得指令融合可用於較簡單的管線實施方式,從而允許相對低端系統的效能增加。
在一些實施方式中,指令融合電路系統50甚至可不檢查是否緊接著的指令實際上是資料處理指令。儘管程式設計員或編譯器應將移動前綴指令與受限制的破壞性資料處理指令集配對以給出可預測結果,但指令融合電路系統50並不需要檢查是否緊接著的指令實際上是彼破壞性資料處理指令集中之一個破壞性資料處理指令,且若程式設計員或編譯器緊接在載入指令、儲存指令或分支指令之前置放移動前綴指令,則指令融合電路系統50仍可融合該等指令以產生經融合資料處理指令,且結果將是無法預測的。藉由避免需要檢查是否接著的指令是意欲融合的所允許破壞性資料處理指令集中之一個破壞性資料處理指令,可降低指令融合電路系統50的管理負擔。或者,其他實施方式可檢查緊接著的指令的類型,以決定該緊接著的指令並非是載入指令、儲存指令、分支指令或不應經融合的其他類型的指令。
與圖2相反,圖3圖示指令序列,該指令序列包含以與圖2中所示移動前綴指令不同的方式編碼的標準移動指令。程式設計員或編譯器可在後續資料處理操作欲與前述移動無關時選擇標準移動指令,因此該對指令並不意欲複製構造性運算。針對標準移動指令,指令融合電路系統50可不將移動指令識別為融合之候選者,且指令融合電路系統50可簡單地轉發該移動指令,以由與後續資料處理指令分離的管線之後續級處理。
圖3中所示的標準移動指令之指令編碼可以任何方式與圖2的移動前綴指令之指令編碼區分。有可能為移動指令提供欄位,該欄位指定該移動指令是標準移動指令還是移動前綴指令。然而,實際上移動前綴指令可具有與該標準(非前綴)移動指令完全不同的運算碼。將資料值自一個暫存器移動至另一暫存器可實際上使用其他種類的指令來實施,諸如,對兩個相同的運算元執行邏輯或且將結果置放於暫存器中的或指令、對兩個相同的運算元執行邏輯與運算且將結果置放於暫存器中的與指令、向運算元添加零以進行移動的加法指令,或給出與指令的來源運算元中之一個來源運算元相同的結果之任何其他指令。因此,當實際上可使用已提供的另一指令來實施移動時,對於專用移動指令,通常不值得浪費指令集架構中的編碼空間。因此,在實踐中,圖3中所示的習知移動指令可實際上是給出與指令之輸入運算元中之一個輸入運算元相同的結果的另一指令,且此情形可具有與圖2中所示移動前綴指令不同的運算碼。
在一些情形下,當執行未經融合的移動前綴指令時,可向執行級14發佈指令,且執行級14可實際上將來源值寫入至目的地暫存器。然而,若移動前綴指令為純量指令、非述詞向量指令或其述詞將所有元件識別為有效的述詞向量指令,則亦可在更名級10處簡單地藉由更新更名表42來執行該移動,以便目的地暫存器之架構暫存器說明符現映射至先前已映射至來源暫存器之架構暫存器說明符的實體暫存器。因此,一些類型的暫存器移動可能不需要在發佈級中或執行級14處的任何動作中分配時槽,且該暫存器移動可簡單地經由暫存器更名來實施。
圖4圖示控制指令融合之方法。在步驟60處,指令融合電路系統50偵測經提取指令是否包括移動前綴指令,該移動前綴指令指定移動目的地暫存器R1、移動來源暫存器R2及視需要的述詞暫存器P1。若不包括,則以某種其他方式處理該等經提取指令。當偵測到移動前綴指令時,隨後在步驟62處,指令融合電路系統50決定是否融合移動前綴指令與緊接著的指令,而不管是否移動前綴指令之目的地暫存器R1與緊接著的指令指定的暫存器中之任何暫存器相同。在一些實施方式中,可固定融合的決策,以便在偵測到移動前綴指令時,隨後該移動前綴指令始終與緊接著的指令融合,而在其他情形下,融合的決策可取決於諸如將由指令觸發的特定類型的資料處理操作之其他因素(例如,運算為浮點運算還是整數運算,或運算為除法還是加法,等)。該決策亦可取決於移動前綴指令及緊接著的指令是否處於在給定時間正經處置的指令之相同區塊內,且移動前綴指令及緊接著的指令未例如藉由頁面邊界或快取列邊界分離。若使用正確,則緊接著的指令應為資料處理操作之類別中的一個資料處理操作,資料處理操作的目的地暫存器R3與移動目的地暫存器R1相同,來源暫存器中的一個來源暫存器為目的地暫存器R3本身,且資料處理操作的述詞暫存器P2(若指定)與移動前綴指令之述詞暫存器P1相同。緊接著的指令亦可指定至少一個進一步來源暫存器(例如,暫存器R4)。
在步驟64處,決定是否融合移動前綴指令及緊接著的指令。若隨後在步驟66處融合該等指令,則產生具有構造性形式的經融合指令,用於傳遞至後續級以供執行。經融合指令指定等於移動前綴指令指定的移動目的地R1或緊接著的指令指定的目的地暫存器R3兩者中之任一者的結果暫存器Rd,經融合指令指定與移動前綴指令及緊接著的指令指定的述詞暫存器P1、P2中的任一者相同的述詞暫存器Pg,且經融合指令指定等於移動前綴指令之移動來源暫存器R2及緊接著的指令之進一步來源暫存器R4的至少兩個運算元暫存器Rs1、Rs2。一些類型的指令(例如,乘-加)可具有多於兩個的來源運算元,在此情形下,經融合指令之多於一個的來源運算元可與原始破壞性指令之對應來源暫存器相同。另一方面,若在步驟64處,決定不融合該等指令,則在步驟68處,單獨地藉由管線之剩餘級來處理單獨的移動指令及處理指令。
圖4中所示經融合指令預期產生與步驟60及步驟62中所示的兩個單獨的移動指令及資料處理指令之組合相同的結果,條件為: •緊接著的指令為資料處理指令(而非某其他種類的指令,諸如載入指令、儲存指令或分支指令); •移動前綴指令及緊接著的指令指定相同目的地暫存器(R1=R3); •緊接著的指令並不將移動前綴目的地暫存器(R1)用作另一來源運算元; •移動前綴指令及緊接著的指令指定相同述詞暫存器(P1=P2);以及 •緊接著的指令為破壞性指令,該破壞性指令指定與該破壞性指令的來源暫存器及該破壞性指令的目的地暫存器兩者皆相同的暫存器。
有可能程式設計員或編譯器可能誤用移動前綴指令且將該移動前綴指令置放於緊接在一指令之前,針對該指令,以下各者中的任一者適用: •接著的指令並非將目的地暫存器用作來源運算元的破壞性資料處理指令; •接著的指令並未指定與移動前綴指令相同的目的地暫存器; •接著的指令將移動前綴目的地暫存器用作另一來源運算元;或 •接著的指令並未指定與移動前綴指令相同的述詞暫存器(若移動前綴指令為述詞指令)。
因為指令融合電路系統50未針對此等條件檢查,所以指令融合電路系統15可融合移動前綴指令及緊接著的指令以產生經融合指令,該經融合指令可給出與原本在獨立執行移動前綴指令及緊接著的指令時所產生的結果不同的結果。因此,若程式設計員或編譯器未正確地使用移動前綴指令,則經融合指令的行為可能是無法預測的。經融合指令的結果(或使用經融合指令的結果的後續指令的結果)可取決於給定硬體實施方式實施該融合的特定方式。舉例而言,經融合指令可對與移動前綴指令及緊接著的指令之組合實際上意欲成對不同的來源暫存器對進行操作,或經融合指令可組合從未意欲鏈接的兩個操作。因此,若程式設計員或編譯器誤用移動前綴指令,則此舉可引起錯誤及不正確的處理結果。為確保正確使用,程式設計員或編譯器應將移動前綴指令置放於緊接在破壞性資料處理指令之前,該移動前綴指令以程式次序應用於該破壞性資料處理指令而無中間指令,且程式設計員或編譯器應確保移動前綴指令及緊接著的指令指定相同目的地暫存器且(若移動前綴指令為有述詞的)指定相同述詞暫存器,以及確保緊接著的指令為破壞性指令。移動前綴指令實際上是下一個指令將是待融合的適合的破壞性指令之「承諾」,且若程式設計員或編譯器違背此承諾,則該程式設計員或該編譯器無法預期結果是正確的。
使用移動前綴指令編寫的程式碼仍可由並不具有用於融合指令之指令融合電路系統50的資料處理設備執行。在該等實施方式中,移動前綴指令可簡單地視為標準移動指令,且移動前綴指令可經執行以將資料值自移動來源暫存器Zs1移動至目的地暫存器Zd。因此,在指令集架構中提供移動前綴指令並不需要支援彼架構之所有硬體必須具有指令融合電路系統50,但提供移動前綴指令使確實提供了指令融合電路系統50的硬體實施方式以較低成本實施指令融合,從而增加了更多硬體實施方式將選擇提供融合的可能性。
如圖5中所示,針對移動前綴指令對包含多個資料元件的向量運算元進行操作的向量實施方式,可對應於處置無效處理線道的不同方式提供不同形式的移動前綴指令。在圖5之此實例中,提供三種形式的指令:並不指定述詞暫存器,亦即,向量的所有元件視為有效的非述詞移動前綴指令;及兩個述詞形式的指令,亦即,合併移動前綴指令,針對該合併移動前綴指令,由述詞值識別的無效線道設定成儲存在目的地暫存器之對應元件中的先前值;以及清除移動前綴指令,針對該清除移動前綴指令,目的地暫存器之無效線道設定成固定值(諸如,0)。
圖5之頂部部分圖示執行每一種形式的移動前綴指令之結果作為獨立指令(不與後續資料處理指令融合)。針對非述詞移動,執行未經融合的移動指令導致來自來源暫存器Zs1的整個向量被複製至目的地暫存器Zd。如上文所提及,實際上此目的可簡單地藉由更新更名表42來達成,以便暫存器Zd之架構說明符現映射至先前已映射至來源暫存器Zs1的實體暫存器。
針對合併移動前綴指令,目的地暫存器之有效線道(在此實例中,針對線道0、1及2,述詞值為1)設定成等於來自來源暫存器Zs1的對應元件V0、V1、V2,而無效線道(例如,線道3的述詞位元為0)保持目的地暫存器Zd之先前值D3。應注意,由於暫存器更名,故有可能儘管元件D3在原始目的地暫存器與經更新目的地暫存器之間保持不變,但目的地暫存器Zd的結果值可實際上寫入至與先前映射至目的地暫存器Zd的實體暫存器不同的實體暫存器,因此元件D3仍可能需要複製至靠近有效元件V0、V1、V2之值之目的地暫存器。
另一方面,針對清除移動前綴指令,目的地暫存器Zd之任何無效元件設定成零,而有效元件取來源暫存器Zs1之對應元件V0-V2的值。
如圖5之下部部分中所示,當不同類型的前綴指令後面接著使用合併預測的資料處理指令時,則結果為資料處理指令之述詞Pg所指示的有效線道對應於移動來源暫存器Zs1及資料處理指令之第二來源暫存器Zs2內的對應元件之和Vn+Sn。另一方面,無效線道取決於已與資料處理指令組合的移動前綴指令之類型而取不同值。在非述詞移動前綴指令情形下,無效線道取來自移動來源暫存器Zs1的對應元件的值V3。針對合併移動前綴指令,接著的資料處理指令之結果使該結果之無效線道填充有來自原始目的地暫存器Zd的元件D3,且針對清除移動前綴指令,最終結果中的無效線道將設定成零。即使三個實例恰好使用接著的指令之相同編碼,亦仍為這種情形。
因此,不必針對不同無效線道處置模式提供不同形式的資料處理指令。舉例而言,不必為加法指令提供容許清除預測的編碼,因為可選擇前述移動前綴指令具有不同形式,以選擇是否使用合併預測或清除預測。此舉節省了資料處理指令中的編碼空間。由於資料處理指令比移動前綴指令通常可具有更多在指令編碼中表示的值,故將無效線道處置模式之編碼轉換成移動前綴指令產生資料處理指令之更有效率的編碼,此舉留下更多空間可用於資料處理指令中以編碼其他資訊。
因此,破壞性資料處理指令(該破壞性資料處理指令指定與來源暫存器及目的地暫存器兩者皆相同的暫存器)可預設假定為使用合併無效線道處置模式,其中無效線道保持目的地暫存器之對應值。若希望不同的無效線道處置模式用於資料處理指令(例如,歸零預測),則資料處理指令之行為可藉由用不同類型的移動前綴指令給該指令加前綴來修改。
儘管圖5圖示在述詞加法指令之前執行非述詞移動前綴指令的實例,但在許多實例中,將結合並不具有任何無效線道的非述詞資料處理指令來使用非述詞移動前綴指令。在此情形下,所有線道可使該等線道的結果元件設定成暫存器Zs1、Zs2之對應元件Vn、Sn的和。
同時,儘管圖5圖示單獨地執行移動前綴及加法運算之實例,但應瞭解,當此等指令經融合時,則處理電路系統14可以任何方式產生等效結果。處理電路系統不必實際上按次序執行兩個操作,且處理電路系統可能能夠直接根據目的地暫存器Zd及兩個來源暫存器Zs1、Zs2之輸入值產生適當的結果值。
在引入上文所論述的移動前綴指令時出現的一個問題為如何回應引起執行停止的事件。停止事件之實例可例如為異常、中斷或斷點。舉例而言,異常可能在指令產生反常結果(例如,浮點結果在範圍之外)時發生,或中斷可能在外部裝置判定中斷訊號時被觸發,該中斷訊號例如指示使用者已按下設備上的按鈕或外部裝置已傳送訊息。異常或中斷可導致處理電路系統中止處理且切換至異常或中斷處置常式以處置已發生的事件。當處置常式完成時,處理可隨後切換回至先前正在執行的程式。類似地,出於除錯目的,可設定斷點位址,且當處理到達其指令位址與斷點位址匹配的指令時,可中止處理,以便除錯器可執行一些診斷動作,諸如,檢驗各種暫存器之內容、自記憶體中的某些位址讀取資料值或探測處理電路系統活動的其他操作。
因此,針對所有此等類型之停止事件,在停止事件發生之後,可記錄在解決該停止事件之後處理將返回的返回位址。可以不同方式記錄返回位址。舉例而言,可將返回位址置放於暫存器(例如,鏈路暫存器)中,或可將返回位址推動至堆疊,或使用某種其他機制記錄返回位址。如圖6及圖7中所示,針對移動前綴指令及資料處理指令對,存在當處理接著的指令(若未經融合)或經融合指令(若經融合)期間發生停止事件時可決定返回位址值的不同方式。
如圖6中所示,一種方法為停止事件(諸如,在此情形下,為異常)觸發在暫存器(ELR)中記錄移動前綴指令之返回位址#A1,即使該異常實際上由接著的指令觸發。在圖6之實例中,資料處理指令為浮點指令FADD,因此異常可為浮點異常。因此,一旦異常處置器已完成解決異常狀況,則處理返回至移動前綴指令之位址#A1,因此指令融合電路系統50可再次決定是否融合移動前綴指令與接著的指令。此方法避免需要在繼續該接著的指令之前維持任何狀態,因為即使已在停止事件之前在架構上執行移動前綴指令的效應,亦可重複移動前綴指令。
另一方面,如圖7中所示,另一方法可用於停止事件以觸發在ELR中記錄接著的指令之返回位址#A2,而非移動前綴指令之位址。在此情形下,除設定返回位址之外,處理電路系統可確保移動前綴指令之目的地暫存器Zd設定成與若已執行移動前綴指令則該目的地暫存器Zd原本具有的結果相同的結果。實際上,在一些情形下,若移動前綴指令未與接著的指令融合,則可能已執行移動前綴指令,因此目的地暫存器Zd可能已具有正確結果。另一方面,若尚未執行移動前綴指令,或移動前綴指令已與接著的指令融合,則在遇到異常後,可執行操作將目的地暫存器Zd設定成正確值,以便當處理隨後返回至位址#A2時,則可執行接著的指令FADD,猶如已完成移動前綴指令。舉例而言,可確保移動前綴指令已藉由重複移動前綴指令或在移動前綴指令為非述詞時簡單地更新更名表42來在架構上完成,以便架構目的地暫存器Zd現映射至先前已映射至來源架構暫存器Zs1的實體暫存器。
一些系統可永久地根據圖6中所示方法或圖7中所示方法來操作。然而,取決於遇到停止事件時的當前狀況,提供處理電路系統記錄返回位址作為移動前綴指令之位址#A1或資料處理指令之位址#A2兩者中的任一者的靈活性可以是有用的。舉例而言,返回位址值可取決於移動前綴指令及接著的指令是否在該移動前綴指令及該接著的指令第一次相遇時被融合。若指令融合電路系統50融合此等指令,則可假定移動尚未完成,因此經融合指令發生異常、中斷或斷點可能導致返回位址設定成移動前綴指令之位址#A1,如圖6中所示。此舉確保當在解決該停止事件之後處理繼續時,則將實際上藉由(明確地使用未經融合的移動指令或隱含在產生經融合指令之結果中兩者中的任一者)來執行移動。
另一方面,若指令對第一次未經融合地執行,則在偵測到停止事件之時,可能已完成移動前綴指令之移動,因此圖7中所示方法可能更適當地避免不必要地重複移動指令。因此,由於僅在尚未執行移動時需要如圖6中所示重複移動前綴指令,故藉由提供在設定返回位址時在位址A1與位址A2之間選擇的能力,可改良處理效能。
概言之,藉由提供移動前綴指令來發訊號通知與緊接著的指令融合是可能的,程式設計員或編譯器可向處理電路系統暗示融合是安全的,而不需要指令融合電路系統決定是否指令對之暫存器相匹配,此舉極大地減少融合之管理負擔。若程式設計員或編譯器已正確地使用指令,則預期緊接著的指令是具有單一暫存器說明符的破壞性資料處理指令,該單一暫存器說明符識別目的地暫存器及第一來源暫存器兩者,且移動前綴指令之目的地暫存器與接著的指令之目的地暫存器相同。在此情形下,融合電路系統可融合此等指令以形成單獨地識別兩個運算元暫存器及結果暫存器的構造性資料處理指令。
特定言之,構造性指令可形成具有該構造性指令之如下指定的暫存器:構造性指令之結果暫存器可對應於移動前綴指令之移動目的地暫存器或緊接著的指令之目的地暫存器兩者中的任一者,且構造性指令之至少兩個運算元暫存器可設定成對應於移動前綴指令之移動來源暫存器及緊接著的資料處理指令之來源暫存器中的一個來源暫存器。使用此方法,經融合指令將具有與單獨執行該兩個移動前綴指令及資料處理指令相同的結果,條件是程式設計員或編譯器確保緊接著的指令為指定與移動前綴指令相同的目的地暫存器的破壞性資料處理指令。若使用向量述詞,則經融合指令之述詞可設定成等於移動前綴指令及緊接著的指令兩者中任一者的述詞(若程式設計員 /編譯器已正確地使用該等指令,則移動前綴指令及緊接著的指令的述詞應相同)。
除移動前綴指令之外,可能存在可控制處理電路系統將資料值自第一暫存器複製至第二暫存器的至少一種其他類型的指令。舉例而言,其他指令可為上文所提及的與指令、或指令、加法指令或專用MOV指令或給出等於來源運算元中之一個來源運算元的結果的任何其他種類的指令。因此,在架構中通常將存在已可以已經達成暫存器移動的許多指令。除該等指令之外還可提供具有不同指令編碼的移動前綴指令。似乎可能令人驚奇的是,提供專用指令以提供已可由其他指令提供的暫存器移動功能是有用的。然而,藉由為移動前綴指令提供不同指令編碼,此舉允許程式設計員或編譯器發訊號通知何時該程式設計員或編譯器意欲移動至接著的破壞性指令之前,以形成經融合構造性指令,而非獨立的移動操作。因此,此舉避免需要處理電路系統檢查滿足融合所需要的各種條件。
移動前綴指令可特定於特定類型的資料處理指令,諸如,加法指令。然而,耦接移動前綴指令與對應於不同處理操作的資料處理指令之類別中的任何資料處理指令可以是有用的,以便無論哪種特定操作由緊接著的指令來表示,大體而言移動前綴皆可與破壞性指令融合,以形成對應於與原始破壞性指令相同的處理操作的經融合構造性指令。舉例而言,資料處理指令之該類別可包括各種運算,包括加、減、乘、除、乘加、平方根、移位、與、或、非、非與、非或、異或以及各種浮點運算及諸如交錯之其他向量運算等。
針對一些實施方式,是否融合移動前綴指令與緊接著的指令的決策可為靜態的。因此,當偵測到移動前綴指令時,一些實施方式可始終合併該移動前綴指令與緊接著的指令,而不管任何其他條件如何。
然而,其他系統可動態地決定是否融合該等指令,該決定取決於除移動前綴指令與緊接著的指令之間的暫存器比較之外的至少一個標準。舉例而言,此等其他標準可包括緊接著的指令將執行何種類型的處理操作、是否移動前綴指令及緊接著的指令保持在不同快取列中,及是否移動前綴指令及緊接著的指令對應於位址空間之不同頁面。
上文實例已論述使用包含多個資料元件的運算元支援向量處理的向量處理系統。然而,可向處理對應於單一資料元件的純量資料值之純量處理系統引入類似的移動前綴指令。在此情形下,將不提供述詞值且將不提供圖5之不同無效線道處置模式。相反,純量移動前綴指令可以與上文所論述的向量實施例相同的方式位於純量資料處理指令之前。
如上文所提及,當處理向量運算元時,移動前綴指令可十分有用,除了發訊號通知何時可能融合之外,可提供對應於不同無效線道處置模式之不同形式的移動前綴指令,以使接著的操作之運算能夠經修改而不以任何方式改變接著的指令之編碼。此舉節省了指令集架構中的編碼空間,因為不必提供對應於不同形式的述詞之不同版本的資料處理指令。
上文實施例論述移動前綴指令與緊接著的指令之融合。該指令對在經提取指令中亦可視為單一倍長指令,該單一倍長指令可隨後分離成單獨的指令或作為單一經組合指令轉發以由處理電路系統處理。此方法完全等效於上文論述的融合方法(指令融合電路系統執行的實際操作將是相同的,唯一區別是關於原始指令是視為一個指令還是兩個指令的解釋中的一個解釋)。因此,在一些實施方式中,指令融合電路系統之是否融合指令的決定實際上可為是否分離倍長指令(與該倍長指令的兩個部分之間的任何暫存器比較無關)的決定,且申請專利範圍涵蓋此方法。
第8圖圖示可使用之虛擬機實施方式。儘管較早所描述的實施例依據用於操作支援有關技術的特定處理硬體之設備及方法來實施本發明,但亦可能提供所謂的硬體裝置之虛擬機實施方式。此等虛擬機實施方式在主機處理機530上運行,主機處理機530運行支援虛擬機程式510之主機作業系統520。通常,需要大型強勁的處理器來提供以合理速度執行之虛擬機實施方式,但在某些情形下(諸如,當出於相容性或再使用之原因而希望運行另一處理器之本機程式碼時)可使得該方法合理。虛擬機程式510提供至應用程式500之應用程式介面,該應用程式介面與原本由真實硬體來提供之應用程式介面相同,該真實硬體為正由虛擬機程式510模型化之裝置。因此,可使用虛擬機程式510在應用程式500內執行程式指令(包括上文描述的記憶體存取控制),以模型化該等程式指令與虛擬機硬體之互動。
在本申請案中,用語「經配置以...」用以意謂設備之元件具有能夠執行經定義的操作之配置。在此上下文中,「配置」意謂硬體或軟體互連之佈置或方式。舉例而言,設備可具有提供經定義操作的專用硬體,或處理器或其他處理裝置可經程式化以執行功能。「經配置以」並不暗示設備元件需要以任何方式改變以提供經定義操作。
儘管本文已參閱隨附圖式詳細地描述本發明之說明性實施例,但熟習此項技術者應理解,本發明不限於彼等精確實施例,且可在不脫離由附加申請專利範圍定義的本發明之範疇及精神的情況下,在本發明中實現各種改變及修改。
2‧‧‧資料處理設備4‧‧‧處理管線6‧‧‧提取級8‧‧‧解碼級10‧‧‧更名級12‧‧‧發佈級14‧‧‧執行級20‧‧‧純量ALU(算術邏輯單元)22‧‧‧向量ALU24‧‧‧浮點單元26‧‧‧載入/儲存單元30‧‧‧暫存器32‧‧‧變換旁看緩衝區(TLB)34‧‧‧純量暫存器36‧‧‧向量暫存器38‧‧‧述詞暫存器40‧‧‧發佈佇列42‧‧‧更名表50‧‧‧指令融合電路系統60‧‧‧步驟62‧‧‧步驟64‧‧‧步驟66‧‧‧步驟68‧‧‧步驟500‧‧‧應用程式510‧‧‧虛擬機程式520‧‧‧主機作業系統530‧‧‧主機處理機
本技術之進一步態樣、特徵結構及優點將由結合隨附圖式讀到的實例之以下描述顯而易見,其中:
圖1示意性地圖示具有指令融合電路系統的資料處理設備之實例;
圖2圖示將移動前綴指令用於向指令融合電路系統發送訊號通知該移動前綴指令可與緊接著的指令融合;
圖3圖示非前綴移動指令之使用;
圖4圖示決定是否融合指令之方法;
圖5圖示三種不同類型的移動前綴指令及該等移動前綴指令與緊接著的指令的結合使用;
圖6及圖7圖示處置異常或其他停止事件的兩種不同方式;以及
圖8圖示虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
Claims (29)
- 一種用於資料處理的設備,該設備包含:處理電路系統,該處理電路系統回應於指令而執行資料處理;以及指令融合電路系統,該指令融合電路系統融合自一資料儲存處提取的一移動前綴指令及一緊接著的指令,以產生一經融合資料處理指令,以由該處理電路系統處理;其中該移動前綴指令識別一移動目的地暫存器及一移動來源暫存器,該移動來源暫存器指定將被至少部分地複製至該移動目的地暫存器的一資料值;回應於偵測到該移動前綴指令,該指令融合電路系統經配置以決定是否融合該移動前綴指令及該緊接著的指令,而不管是否該移動前綴指令之該移動目的地暫存器為與該緊接著的指令指定的任何暫存器相同的暫存器;其中該移動前綴指令指示出該緊接著的指令預期為一破壞性資料處理指令,用於該破壞性資料處理指令的一目的地暫存器將設定成一結果值,該結果值對應於將一預定處理操作應用於至少兩個來源暫存器所指定的至少兩個來源值之一結果,且用於該破壞性資料處理指令的該目的地暫存器與該至少兩個來源暫存器 中的一個來源暫存器相同於該移動前綴指令之該移動目的地暫存器;及當該緊接著的指令的該目的地暫存器與該移動前綴指令之該移動目的地暫存器不同時,藉由將該移動前綴指令與該緊接著的指令融合而產生的該經融合資料處理指令能夠給出與若獨立執行該移動前綴指令及該緊接著的指令時所產生的結果不同的結果。
- 如請求項1所述之設備,其中該破壞性資料處理指令具有一指令編碼,該指令編碼包含識別該目的地暫存器及該至少兩個來源暫存器中之一個該來源暫存器兩者的一單一暫存器說明符。
- 如請求項1所述之設備,其中該經融合資料處理指令包含單獨地識別至少兩個運算元暫存器及將設定成一結果值的一結果暫存器之一構造性資料處理指令,該結果值對應於將一處理操作應用於該至少兩個運算元暫存器指定的值之一結果。
- 如請求項3所述之設備,其中該指令融合電路系統經配置以產生具有以下之該構造性資料處理指令:該結果暫存器,該結果暫存器對應於該移動前綴指令之該移動目的地暫存器及該緊接著的指令之一目的地暫存器中的一者;以及 該至少兩個運算元暫存器,該至少兩個運算元暫存器對應於該移動前綴指令之該移動來源暫存器及該緊接著的指令之至少一個來源暫存器。
- 如請求項1所述之設備,其中該移動前綴指令具有與至少一種其他類型的指令不同的一指令編碼,該至少一種其他類型的指令用於控制該處理電路系統將一資料值自一第一暫存器複製至一第二暫存器。
- 如請求項1所述之設備,其中該指令融合電路系統經配置以在該緊接著的指令為對應於待執行的不同類型的處理操作的資料處理指令之一類別中的任何資料處理指令時,融合該移動前綴指令及該緊接著的指令。
- 如請求項1所述之設備,其中回應於偵測該移動前綴指令,該指令融合電路系統經配置以取決於除了該移動前綴指令之該移動目的地暫存器是與該緊接著的指令指定的任何暫存器相同的暫存器之外的至少一個標準,以便決定是否融合該移動前綴指令及該緊接著的指令。
- 如請求項7所述之設備,其中該至少一個標準包含以下中之至少一者:當該緊接著的指令為用於控制該處理電路系統對至少兩個來源值執行一給定處理操作之一資料處理指令 時,何種類型的處理操作是針對該緊接著的指令的該給定處理操作;是否該移動前綴指令及該緊接著的指令保持在不同快取列中;以及是否該移動前綴指令及該緊接著的指令對應於一位址空間之不同頁面。
- 如請求項1所述之設備,其中該移動前綴指令及該緊接著的指令包含用於處理純量資料值之純量指令,該等純量資料值包含一單一資料元件。
- 如請求項1所述之設備,其中該移動前綴指令及該緊接著的指令包含用於處理向量資料值之向量指令,該等向量資料值包含複數個資料元件。
- 如請求項10所述之設備,其中當該緊接著的指令為用於控制該處理電路系統對至少兩個來源值執行一給定處理操作以產生一結果值之一資料處理指令時,該緊接著的指令識別一述詞值,該述詞值指示該結果值的哪些資料元件為將設定成取決於該至少兩個來源值的對應資料元件的一值之有效元件,或為將設定成與該至少兩個來源值無關的一值之無效元件。
- 如請求項11所述之設備,其中該指令融合電路系統經配置以決定是否融合該移動前綴指令及該緊接著的指令,而不管是否該移動前綴指令識別與該 緊接著的指令相同的一述詞值。
- 如請求項11所述之設備,其中該移動前綴指令包含:複數種類型的移動前綴指令中之一種;以及當該指令融合電路系統融合該移動前綴指令與該緊接著的指令時,該指令融合電路系統經配置以產生該經融合資料處理指令,以控制該處理電路系統根據取決於何種類型的移動前綴指令與該緊接著的指令融合選擇的一無效線道處置模式決定該結果值之該等無效元件。
- 如請求項13所述之設備,其中該指令融合電路系統經配置以產生該經融合資料處理指令,以控制該處理電路系統用不取決於該緊接著的指令之一編碼所選擇的該無效線道處置模式決定該結果值之該等無效元件。
- 如請求項14所述之設備,其中當該移動前綴指令為一非述詞類型的移動前綴指令時,該指令融合電路系統經配置以產生該經融合資料處理指令,以控制該處理電路系統用該移動來源暫存器之對應元件的值來決定該結果值之該等無效元件。
- 如請求項15所述之設備,其中當該移動前綴指令為該非述詞類型的移動前綴指令且該指令融合 電路系統決定不融合該移動前綴指令與該緊接著的指令時,該處理電路系統回應於該移動前綴指令而將該整個資料值自該移動來源暫存器複製至該移動目的地暫存器。
- 如請求項13所述之設備,其中當該移動前綴指令為一合併類型的移動前綴指令時,該指令融合電路系統經配置以產生該經融合資料處理指令,以控制該處理電路系統用取決於該移動目的地暫存器之對應元件的先前值的值來決定該結果值之該等無效元件。
- 如請求項17所述之設備,其中該合併類型的移動前綴指令指定一移動述詞值,該移動述詞值識別該移動目的地暫存器之哪些元件為有效元件或無效元件;以及當該移動前綴指令為該合併類型的移動前綴指令且該指令融合電路系統決定不融合該移動前綴指令與該緊接著的指令時,該處理電路系統回應於該移動前綴指令而將該移動目的地暫存器之有效元件設定成該移動來源暫存器之對應元件的值且保持該移動目的地暫存器之無效元件的該等先前值。
- 如請求項13所述之設備,其中當該移動前綴指令為一清除類型的移動前綴指令時,該指令融合 電路系統經配置以產生該經融合資料處理指令,以控制該處理電路系統用清除成為一預定值的值來決定該結果值之該等無效元件。
- 如請求項19所述之設備,其中該清除類型的移動前綴指令指定一移動述詞值,該移動述詞值識別該移動目的地暫存器之哪些元件為有效元件或無效元件;以及當該移動前綴指令為該清除類型的移動前綴指令且該指令融合電路系統決定不融合該移動前綴指令與該緊接著的指令時,該處理電路系統回應於該移動前綴指令而將該移動目的地暫存器之有效元件設定成該移動來源暫存器之對應元件的值且清除該移動目的地暫存器之無效元件為該預定值。
- 如請求項11所述之設備,其中該處理電路系統回應於識別與一目的地暫存器及一來源暫存器兩者皆相同的一暫存器之一未經融合的資料處理指令,以產生一結果值,其中無效元件設定成取決於該相同暫存器之對應元件的先前值的值。
- 如請求項1所述之設備,其中回應於該緊接著的指令或該經融合資料處理指令觸發的一停止事件,該處理電路系統經配置以記錄該移動前綴指令之一位址作為一返回位址用於在解決該停止事件之後繼 續處理。
- 如請求項1所述之設備,其中回應於該緊接著的指令或該經融合資料處理指令觸發的一停止事件,該處理電路系統經配置以記錄該緊接著的指令之一位址作為一返回位址用於在解決該停止事件之後繼續處理,且確保該移動目的地暫存器之資料等於執行該移動前綴指令之一結果。
- 如請求項1所述之設備,其中回應於該緊接著的指令或該經融合資料處理指令觸發的一停止事件,該處理電路系統經配置以取決於該指令融合電路系統是否融合了該移動前綴指令及該緊接著的指令,選擇是否記錄該移動前綴指令之一位址或該緊接著的指令之一位址作為一返回位址用於在解決該停止事件之後繼續處理。
- 如請求項24所述之設備,其中當該指令融合電路系統融合了該移動前綴指令及該緊接著的指令時,該處理電路系統經配置以記錄該移動前綴指令之該位址作為該返回位址,且當該指令融合電路系統並未融合該移動前綴指令及該緊接著的指令時,該處理電路系統經配置以記錄該緊接著的指令之該位址作為該返回位址。
- 如請求項22所述之設備,其中該停止事件 包含以下中之一者:一異常事件;一中斷;以及一斷點。
- 一種資料處理方法,該資料處理方法包含以下步驟:在自一資料儲存處提取的供處理電路系統處理的指令之中偵測一移動前綴指令,該移動前綴指令識別一移動目的地暫存器及一移動來源暫存器,該移動來源暫存器指定將被至少部分地複製至該移動目的地暫存器的一資料值;以及決定是否融合該移動前綴指令與一緊接著的指令,以產生一經融合資料處理指令以由該處理電路系統處理;其中當偵測到該移動前綴指令時,該決定步驟決定是否融合該移動前綴指令及該緊接著的指令,而不管是否該移動前綴指令之該移動目的地暫存器為與該緊接著的指令指定的任何暫存器相同的暫存器;其中該移動前綴指令指示出該緊接著的指令預期為一破壞性資料處理指令,用於該破壞性資料處理指令的一目的地暫存器將設定成一結果值,該結果值對應於將一預定處理操作應用於至少兩個來源暫存器所指 定的至少兩個來源值之一結果,且用於該破壞性資料處理指令的該目的地暫存器與該至少兩個來源暫存器中的一個來源暫存器相同於該移動前綴指令之該移動目的地暫存器;及當該緊接著的指令的該目的地暫存器與該移動前綴指令之該移動目的地暫存器不同時,藉由將該移動前綴指令與該緊接著的指令融合而產生的該經融合資料處理指令能夠給出與若獨立執行該移動前綴指令及該緊接著的指令時所產生的結果不同的結果。
- 一種用於資料處理的設備,該設備包含:用於回應於指令而執行資料處理之手段;以及用於融合自一資料儲存處提取的一移動前綴指令及一緊接著的指令以產生一經融合的資料處理指令之手段,該經融合的資料處理指令用以由該用於回應於指令而執行資料處理之手段處理;其中該移動前綴指令識別一移動目的地暫存器及一移動來源暫存器,該移動來源暫存器指定將被至少部分地複製至該移動目的地暫存器的一資料值;回應於偵測到該移動前綴指令,該用於融合之手段經配置以決定是否融合該移動前綴指令及該緊接著的指令,而不管是否該移動前綴指令之該移動目的地暫存器為與該緊接著的指令指定的任何暫存器相同的暫 存器;其中該移動前綴指令指示出該緊接著的指令預期為一破壞性資料處理指令,用於該破壞性資料處理指令的一目的地暫存器將設定成一結果值,該結果值對應於將一預定處理操作應用於至少兩個來源暫存器所指定的至少兩個來源值之一結果,且用於該破壞性資料處理指令的該目的地暫存器與該至少兩個來源暫存器中的一個來源暫存器相同於該移動前綴指令之該移動目的地暫存器;及當該緊接著的指令的該目的地暫存器與該移動前綴指令之該移動目的地暫存器不同時,藉由將該移動前綴指令與該緊接著的指令融合而產生的該經融合資料處理指令能夠給出與若獨立執行該移動前綴指令及該緊接著的指令時所產生的結果不同的結果。
- 一種儲存在一電腦可讀取儲存媒體上的電腦程式,該電腦程式在由一資料處理設備執行時提供一虛擬機,該虛擬機提供對應於請求項1至請求項26中任一請求項所述之設備的一指令執行環境。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1518156.3 | 2015-10-14 | ||
GB1518156.3A GB2543304B (en) | 2015-10-14 | 2015-10-14 | Move prefix instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201723809A TW201723809A (zh) | 2017-07-01 |
TWI740844B true TWI740844B (zh) | 2021-10-01 |
Family
ID=55131012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105131203A TWI740844B (zh) | 2015-10-14 | 2016-09-29 | 用於資料處理的方法、設備、及電腦程式 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10795675B2 (zh) |
EP (1) | EP3362889B1 (zh) |
JP (1) | JP6807383B2 (zh) |
KR (1) | KR102629722B1 (zh) |
CN (1) | CN108139908B (zh) |
GB (1) | GB2543304B (zh) |
IL (1) | IL258035B (zh) |
TW (1) | TWI740844B (zh) |
WO (1) | WO2017064456A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10061580B2 (en) | 2016-02-25 | 2018-08-28 | International Business Machines Corporation | Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence |
US10684856B2 (en) * | 2017-07-11 | 2020-06-16 | International Business Machines Corporation | Converting multiple instructions into a single combined instruction with an extension opcode |
US11150904B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Concurrent prediction of branch addresses and update of register contents |
US10884745B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Providing a predicted target address to multiple locations based on detecting an affiliated relationship |
US10908911B2 (en) | 2017-08-18 | 2021-02-02 | International Business Machines Corporation | Predicting and storing a predicted target address in a plurality of selected locations |
US10884747B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US11150908B2 (en) * | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence |
US10884746B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
JP7183657B2 (ja) * | 2018-09-21 | 2022-12-06 | 日本電気株式会社 | プロセッサ、情報処理方法、プログラム |
US11036510B2 (en) * | 2018-10-11 | 2021-06-15 | Arm Limited | Processing merging predicated instruction with timing permitting previous value of destination register to be unavailable when the merging predicated instruction is at a given pipeline stage at which a processing result is determined |
CN111414199B (zh) * | 2020-04-03 | 2022-11-08 | 中国人民解放军国防科技大学 | 一种指令融合的实现方法及装置 |
US11119777B1 (en) | 2020-04-22 | 2021-09-14 | International Business Machines Corporation | Extended prefix including routing bit for extended instruction format |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207849A (zh) * | 2006-09-21 | 2011-10-05 | 英特尔公司 | 用于执行逻辑比较操作的方法和装置 |
TW201203107A (en) * | 2010-04-27 | 2012-01-16 | Via Tech Inc | Microprocessor that fuses MOV/ALU/jump instructions |
US20140164741A1 (en) * | 2012-12-11 | 2014-06-12 | International Business Machines Corporation | Modify and Execute Next Sequential Instruction Facility and Instructions Therefore |
US20140181464A1 (en) * | 2012-12-26 | 2014-06-26 | Andrew T. Forsyth | Coalescing adjacent gather/scatter operations |
US20140208073A1 (en) * | 2013-01-23 | 2014-07-24 | Apple Inc. | Arithmetic Branch Fusion |
GB2521019A (en) * | 2014-05-27 | 2015-06-10 | Imagination Tech Ltd | Decoding instructions that are modified by one or more other instructions |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5303358A (en) * | 1990-01-26 | 1994-04-12 | Apple Computer, Inc. | Prefix instruction for modification of a subsequent instruction |
TW334546B (en) * | 1996-03-18 | 1998-06-21 | Hitachi Ltd | Data processor |
US20050138330A1 (en) * | 2003-12-23 | 2005-06-23 | Maxim Integrated Products, Inc. | MAXQ microcontroller |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
CN101957743B (zh) * | 2010-10-12 | 2012-08-29 | 中国电子科技集团公司第三十八研究所 | 并行数字信号处理器 |
US9128701B2 (en) * | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
EP2508979B1 (en) * | 2011-04-07 | 2018-10-10 | VIA Technologies, Inc. | Efficient conditional alu instruction in read-port limited register file microprocessor |
US9329869B2 (en) * | 2011-10-03 | 2016-05-03 | International Business Machines Corporation | Prefix computer instruction for compatibily extending instruction functionality |
US9195466B2 (en) | 2012-05-16 | 2015-11-24 | Qualcomm Incorporated | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US9477476B2 (en) * | 2012-11-27 | 2016-10-25 | Qualcomm Incorporated | Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US20170090922A1 (en) * | 2015-09-30 | 2017-03-30 | Futurewei Technologies, Inc. | Efficient Instruction Pair for Central Processing Unit (CPU) Instruction Design |
US10394568B2 (en) * | 2015-09-30 | 2019-08-27 | International Business Machines Corporation | Exception handling for applications with prefix instructions |
-
2015
- 2015-10-14 GB GB1518156.3A patent/GB2543304B/en active Active
-
2016
- 2016-09-14 WO PCT/GB2016/052838 patent/WO2017064456A1/en active Application Filing
- 2016-09-14 JP JP2018517732A patent/JP6807383B2/ja active Active
- 2016-09-14 KR KR1020187012813A patent/KR102629722B1/ko active IP Right Grant
- 2016-09-14 CN CN201680058692.2A patent/CN108139908B/zh active Active
- 2016-09-14 US US15/761,476 patent/US10795675B2/en active Active
- 2016-09-14 EP EP16770308.1A patent/EP3362889B1/en active Active
- 2016-09-29 TW TW105131203A patent/TWI740844B/zh active
-
2018
- 2018-03-12 IL IL258035A patent/IL258035B/en active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207849A (zh) * | 2006-09-21 | 2011-10-05 | 英特尔公司 | 用于执行逻辑比较操作的方法和装置 |
TW201203107A (en) * | 2010-04-27 | 2012-01-16 | Via Tech Inc | Microprocessor that fuses MOV/ALU/jump instructions |
US20140164741A1 (en) * | 2012-12-11 | 2014-06-12 | International Business Machines Corporation | Modify and Execute Next Sequential Instruction Facility and Instructions Therefore |
US20140181464A1 (en) * | 2012-12-26 | 2014-06-26 | Andrew T. Forsyth | Coalescing adjacent gather/scatter operations |
US20140208073A1 (en) * | 2013-01-23 | 2014-07-24 | Apple Inc. | Arithmetic Branch Fusion |
GB2521019A (en) * | 2014-05-27 | 2015-06-10 | Imagination Tech Ltd | Decoding instructions that are modified by one or more other instructions |
Non-Patent Citations (1)
Title |
---|
"Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2A: Instruction Set Reference, A-M",2009年12月 https://www.naic.edu/~phil/software/intel/253666.pdf |
Also Published As
Publication number | Publication date |
---|---|
TW201723809A (zh) | 2017-07-01 |
GB2543304A (en) | 2017-04-19 |
GB2543304B (en) | 2020-10-28 |
EP3362889B1 (en) | 2021-04-21 |
IL258035A (en) | 2018-05-31 |
KR20180067583A (ko) | 2018-06-20 |
GB201518156D0 (en) | 2015-11-25 |
US10795675B2 (en) | 2020-10-06 |
JP6807383B2 (ja) | 2021-01-06 |
EP3362889A1 (en) | 2018-08-22 |
JP2018534671A (ja) | 2018-11-22 |
CN108139908B (zh) | 2022-07-12 |
IL258035B (en) | 2021-05-31 |
KR102629722B1 (ko) | 2024-01-26 |
WO2017064456A1 (en) | 2017-04-20 |
CN108139908A (zh) | 2018-06-08 |
US20180267798A1 (en) | 2018-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI740844B (zh) | 用於資料處理的方法、設備、及電腦程式 | |
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
US8386754B2 (en) | Renaming wide register source operand with plural short register source operands for select instructions to detect dependency fast with existing mechanism | |
JP3678444B2 (ja) | パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ | |
US6631460B1 (en) | Advanced load address table entry invalidation based on register address wraparound | |
US20160055004A1 (en) | Method and apparatus for non-speculative fetch and execution of control-dependent blocks | |
TWI716425B (zh) | 用於執行疊接操作的裝置和方法 | |
US9329868B2 (en) | Reducing register read ports for register pairs | |
US10776124B2 (en) | Handling exceptional conditions for vector arithmetic instruction | |
US10599428B2 (en) | Relaxed execution of overlapping mixed-scalar-vector instructions | |
TWI411957B (zh) | 亂序執行微處理器、微處理器及其相關之提升效能之方法及執行方法 | |
GB2563116B (en) | Apparatus and method for determining a recovery point from which to resume instruction execution following handling of unexpected change in instruction flow | |
WO2022153024A1 (en) | Load chunk instruction and store chunk instruction | |
JP6882320B2 (ja) | ベクトル命令の処理 | |
US20140365751A1 (en) | Operand generation in at least one processing pipeline | |
JP2000339185A (ja) | スーパースカラプロセッサ |