TWI743058B - 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 - Google Patents
硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 Download PDFInfo
- Publication number
- TWI743058B TWI743058B TW105134949A TW105134949A TWI743058B TW I743058 B TWI743058 B TW I743058B TW 105134949 A TW105134949 A TW 105134949A TW 105134949 A TW105134949 A TW 105134949A TW I743058 B TWI743058 B TW I743058B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- result
- read
- stream
- zero
- Prior art date
Links
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/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
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
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)
Abstract
本發明描述與用以融合指令之一融合管理器相關之方法及設備。在一個實施例中,一硬體處理器包括:一硬體二元轉譯器,其用以將一指令流轉譯為一經轉譯指令流;一硬體融合管理器,其用以將該經轉譯指令流中之多個指令融合為一單一經融合指令;一硬體解碼單元,其用以將該單一經融合指令解碼為一經解碼的單一經融合指令;及一硬體執行單元,其用以執行該經解碼的單一經融合指令。
Description
本發明大體上係有關於電子裝置,且更具體言之,本發明之一實施例係有關於用以融合來自二元轉譯器之指令的硬體融合管理器。
一處理器或一組處理器執行來自指令集(例如,指令集架構(ISA))之指令。該指令集為與程式設計有關之電腦架構的一部分,且通常包括原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置以及外部輸入及輸出(I/O)。應注意,本文中之術語指令可係指巨集指令,例如經提供至處理器以供執行之指令,或係指微指令,例如由處理器之解碼巨集指令之解碼器產生的指令。
依據本發明之一實施例,係特地提出一種硬
體處理器,包含:一硬體二元轉譯器,用以將一指令流轉譯為一經轉譯指令流;一硬體融合管理器,用以將該經轉譯指令流之多個指令融合為一單一經融合指令;一硬體解碼單元,用以將該單一經融合指令解碼為一經解碼的單一經融合指令;及一硬體執行單元,用以執行該經解碼的單一經融合指令。
100、200、300、1500、1600、1700:系統
102、202、302、1400、1510、1515、1615、1670、1680:處理器
104、204、304:程式碼
106、206、306:二元轉譯器
108、208、308:融合管理器
110、210、310、1240:解碼單元
112、212、312、1262:執行單元
202A-N、1402A-N:核心
400:流程圖
500、700:假碼
514、516、518、714:假碼區段/常式
601、801:輸入指令流
603、803:輸出指令流
900:通用向量友好指令格式
905、910、912、915、917、920、925、927、930:指令模板
910:REX'欄位
940:格式欄位
942:基本操作欄位
944:暫存器索引欄位
946:修飾符欄位
950:擴增操作欄位
952:α欄位
952A:RS欄位
952A.1、957A.1:捨位
952A.2:資料變換
952B:逐出提示欄位
952B.1:暫時性
952B.2:非暫時性
952C:寫入遮罩控制欄位
954:β欄位
954A:捨位控制欄位
954B:資料變換欄位
954C:資料操縱欄位
956:抑制所有浮點異常欄位
957A:RL欄位
957A.2:向量長度
957B:廣播欄位
958:捨位操作控制欄位
959A:捨位操作欄位/捨位操作控制欄位
959B:向量長度欄位
960:比例欄位
962A:位移欄位
962B:位移因子欄位/位移比例欄位
964:資料元素寬度欄位
968:類別欄位
968A:A類
968B:B類
970:寫入遮罩欄位
972:立即欄位
974:全作業碼欄位
1000:特定向量友好指令格式
1002:EVEX首碼
1005:REX欄位
1015:作業碼映射欄位
1020:EVEX.vvvv欄位
1025:首碼編碼欄位
1030:真實作業碼欄位
1040:MOD R/M欄位
1042:MOD欄位
1044:Reg欄位
1046:R/M欄位
1054:SIB.xxx/xxx欄位
1056:SIB.bbb/bbb欄位
1100:暫存器架構
1110、1314:向量暫存器
1115、1326:寫入遮罩暫存器
1125:通用暫存器
1145:純量浮點堆疊暫存器檔案
1150:MMX緊縮整數平坦暫存器檔案
1200:處理器管線
1202:提取級
1204:長度解碼級
1206:解碼級
1208:分配級
1210:重命名級
1212:排程級
1214:暫存器讀取/記憶體讀取級
1216:執行級
1218:回寫/記憶體寫入級
1222:異常處置級
1224:認可級
1230:前端單元
1232:分支預測單元
1234:指令快取記憶體單元
1236:指令轉譯後備緩衝器
1238:指令提取單元
1250:執行引擎單元
1252:重命名/分配器單元
1254:引退單元
1256:排程器單元
1258:實體暫存器檔案單元
1260:執行叢集
1264:記憶體存取單元
1270:記憶體單元
1272:資料轉譯後備緩衝器單元
1274:資料快取記憶體單元
1276:層級2快取記憶體單元
1290:處理器核心
1300:指令解碼單元
1302:晶粒上互連網路
1304:層級2快取記憶體之本端子集
1306:層級1快取記憶體
1306A:層級1資料快取記憶體
1308:純量單元
1310:向量單元
1312:純量暫存器
1320:拌和單元
1322A、1322B:數字轉換單元
1324:複製單元
1328:16寬算術邏輯單元
1406:共用快取記憶體單元
1408:專用邏輯
1410:系統代理程式單元
1412、1802:互連單元
1414、1672、1682:整合式記憶體控制器單元/控制邏輯
1416:匯流排控制器單元
1520:控制器集線器
1540、1632、1634:記憶體
1540A:融合管理器模組
1545、1638、1820:共處理器
1550:輸入/輸出集線器
1560、1614、1714:輸入/輸出裝置
1590:圖形記憶體控制器集線器
1595:連接件
1616、1620:匯流排
1618:匯流排橋接器
1622:鍵盤及/或滑鼠
1624:音訊輸入/輸出
1627:通訊裝置
1628:儲存單元
1630:指令/程式碼及資料
1639:高效能介面
1650:點對點互連件
1652、1654、1676、1678、1686、1688、1694、1698:點對點介面/點對點介面電路
1690:晶片組
1696:介面
1715:舊版I/O裝置
1800:系統單晶片
1810:應用程式處理器
1830:靜態隨機存取記憶體單元
1832:直接記憶體存取單元
1840:顯示單元
1902:高階語言
1904:x86編譯器
1906:x86二元程式碼
1908:替代性指令集編譯器
1910:替代性指令集二元程式碼
1912:指令轉換器
1914:不具有至少一個x86指令集核心之處理器
1916:具有至少一個x86指令集核心之處理器
在隨附圖式之諸圖中借助於實例而非限制來說明本發明,在該等圖中類似參考指示相似元件且其中:
圖1說明根據本發明之實施例的包括硬體二元轉譯器及硬體融合管理器之硬體處理器。
圖2說明根據本發明之實施例的包括硬體融合管理器之硬體處理器。
圖3說明根據本發明之實施例的硬體處理器。
圖4說明根據本發明之實施例的融合操作之流程圖。
圖5說明根據本發明之實施例的融合操作之假碼。
圖6說明根據本發明之實施例的融合操作前之輸入指令流及融合操作後之輸出指令流。
圖7說明根據本發明之實施例的融合操作之假碼。
圖8說明根據本發明之實施例的融合操作前
之輸入指令流及融合操作後之輸出指令流。
圖9A為說明根據本發明之實施例的通用向量友好指令格式及其A類指令模板之方塊圖。
圖9B為說明根據本發明之實施例的通用向量友好指令格式及其B類指令模板之方塊圖。
圖10A為說明根據本發明之實施例的圖9A及圖9B中之通用向量友好指令格式之欄位的方塊圖。
圖10B為說明根據本發明之一個實施例的圖10A中構成完全作業碼欄位之特定向量友好指令格式之欄位的方塊圖。
圖10C為說明根據本發明之一個實施例的圖10A中構成暫存器索引欄位之特定向量友好指令格式之欄位的方塊圖。
圖10D為說明根據本發明之一個實施例的圖10A中構成擴增操作欄位950之特定向量友好指令格式之欄位的方塊圖。
圖11為根據本發明之一個實施例的暫存器架構之方塊圖。
圖12A為說明根據本發明之實施例的例示性按次序管線及例示性暫存器重命名、無次序核發/執行管線兩者的方塊圖。
圖12B為說明根據本發明之實施例的待包括於處理器中之按次序架構核心之例示性實施例及例示性暫存器重命名、無次序核發/執行架構核心兩者的方塊圖。
圖13A為根據本發明之實施例的單處理器核心以及其至晶粒上互連網路之連接以及其2級(L2)快取記憶體之本端子集的方塊圖。
圖13B為根據本發明之實施例的圖13A中之處理器核心之部分的擴展視圖。
圖14為根據本發明之實施例的處理器之方塊圖,該處理器可具有多於一個核心、可具有整合式記憶體控制器且可具有整合式圖形。
圖15為根據本發明之一個實施例的系統之方塊圖。
圖16為根據本發明之一實施例的較特定例示性系統之方塊圖。
圖17所展示的為根據本發明之一實施例的第二較特定例示性系統之方塊圖。
圖18所展示的為根據本發明之一實施例的系統單晶片(SoC)之方塊圖。
圖19為根據本發明之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將源指令集中之二元指令轉換成目標指令集中之二元指令。
在以下描述中,陳述眾多特定細節。然而,應理解,可在無此等特定細節的情況下實踐本發明之實施例。在其他情況下,未詳細展示熟知電路、結構及技術,以便不混
淆本說明書之理解。
本說明書中對「一個實施例」、「一實施例」、「一實例實施例」等之提及指示所描述之實施例可包括一特定特徵、結構或特性,但每一實施例可能未必包括該特定特徵、結構或特性。此外,此等片語未必係指同一實施例。此外,在結合一實施例來描述一特定特徵、結構或特性時,應主張,無論是否予以明確描述,結合其他實施例實現此特徵、結構或特性在熟習此項技術者之認識範圍內。
(例如具有一或多個核心之)(例如硬體)處理器可執行用以操作資料之指令,(例如)以執行算術、邏輯或其他功能。待在處理器上執行之程式碼(例如,軟體)可自一種格式轉譯成另一種格式。(例如動態)二元轉譯器可用於將程式碼(例如,指令)自一種格式轉譯成另一種格式。(例如動態)二元轉譯器可用於將程式碼(例如,指令)自多種格式轉譯成單一種格式。二元轉譯器可將程式碼(例如,指令)自客體格式轉譯成主體格式。二元轉譯器可將第一ISA之指令轉譯為第二ISA之指令。二元轉譯器可將一或多個(例如,x86格式)巨集指令轉譯為一或多個微指令。一指令可轉譯為多個經轉譯指令,例如在一個實施例中不需要一對一對應關係。多個指令可轉譯為一個經轉譯指令或數目小於多個(例如,未轉譯的)指令之數個經轉譯指令,例如在一個實施例中不需要一對一對應關係。二元轉譯器可將(例如,呈二元程式碼形式之)軟體指令轉譯為(例如,呈二元程式碼形式之)硬體指令(例如)以供在硬體處理
器上執行。(例如動態)二元轉譯器可包括硬體、軟體、韌體或其任何組合。(例如動態)二元轉譯器可將(例如,呈遵從源處理器之架構(源架構)的源二元程式碼形式之)一個指令轉譯為經轉譯指令(例如,轉譯為遵從目標處理器之架構(目標架構)的目標二元程式碼)。動態二元轉譯過程可在源二元程式碼之執行期間(例如,在運行時)發生。
在某些實施例中,將多個(例如,兩個)指令融合為單一指令可為合乎需要的。在某些實施例中,相對於執行不經二元轉譯之原生ISA之處理器,本文中論述之融合可(例如,藉由執行更少指令)提高基於二元轉譯之處理器(例如,處理器系統)的效能。本文中之某些實施例可增加用於在基於二元轉譯之處理器上執行的二元指令流之程式碼密度及/或效率。舉例而言,本文中之實施例可將指令(例如,巨集指令)數目自兩個減少至一個。某些實施例可減小對指令排程及/或簿記硬體(例如,一或多個重新排序緩衝器及一或多個保留站)之負載(例如,壓力)。某些實施例可(例如)藉由融合第一及第二指令,藉由第二(例如,後續)指令消除由於第一指令進入待使用(例如,讀取)之中間暫存器中而引起的回寫,從而減小對(例如)藉由轉譯器及/或藉由硬體分配器進行之暫存器分配的負載(例如,壓力)。本文中之基於二元轉譯器之處理器的某些實施例可減少(例如,指令)快取記憶體佔據面積(footprint)及/或減少指令提取及/或解碼頻寬之使用量。本文中之某些實施例可改良程式碼(例如,指令)密度。本文中之某些實施例可利
用處理器之解碼(例如,裂化)單元,該解碼單元可(例如,高度)有效地將巨集指令或巨集操作分成(例如,硬體處理器之ISA之)原生微指令及/或微操作(例如,處理器核心經設計以處置之微指令及/或微操作)。某些實施例可減小基於二元轉譯之處理器中之任何硬體更改的範疇,(例如)同時保留衍生出具有二元轉譯功能之處理器之基本設計的效率。
在某些實施例中,可包括融合管理器以將多個(例如,兩個)指令融合為單一指令。在一個實施例中,融合管理器可實施於硬體、軟體、韌體或其任何組合中。在一個實施例中,融合管理器可(例如)在解碼及/或執行巨集指令中任一者之前,將多個巨集指令融合為單一巨集指令。該單一的經融合指令可(例如,自其執行)產生與該等未經融合的多個指令相同的一或多個結果(例如,一或多個合量)。在一個實施例中,融合管理器係用於檢測可(例如)在不毀壞(例如,覆寫)(例如,按執行次序之)後續指令將存取(例如,讀取)之任何資料的情況下融合的多個(例如,一對)指令。舉例而言,融合管理器可檢測一指令以(例如)利用處理器之算術邏輯單元(ALU)執行算術及/或按位元邏輯運算。ALU可對整數及/或浮點數(例如,其可被稱為浮點單元(FPU))進行操作。ALU可不包括記憶體單元及/或分支(例如,預測)單元。在一個實施例中,算術及/或按位元邏輯運算指令並非為(例如,僅為)載入指令及/或儲存指令。
在一個實施例中,融合管理器可檢測一零擴展載入指令(例如,巨集指令)及用以讀取該零擴展載入指令之結果(例如,儲存該結果之同一位置)的一指令(例如,巨集指令),且將其融合為單一指令(例如,巨集指令)。舉例而言,融合管理器可檢測一零擴展載入指令及用以讀取該零擴展載入指令之結果的算術及/或按位元邏輯運算指令(例如,加、減、乘或除)。在經執行時,零擴展載入指令可僅執行零擴展載入操作或亦可包括其他操作。在經執行時,零擴展載入指令可載入(例如,特定數目個位元之)一值且零擴展彼值(例如,除了加特定數目個位元外加零,得到較大大小)。舉例而言,可載入不利用暫存器之所有位元的值,且該值可具有包括於其他位元位置(例如,當該值為較低有效位元位置時,包括於較高有效位元位置)中之零以填充暫存器之每一位元位置。另外地或可替代地,融合管理器可檢測用以產生一結果之一指令(例如,巨集指令)及用以讀取該結果之一儲存(例如,寫入)指令(例如,巨集指令),且將其融合為單一指令(例如,巨集指令)。在經執行時,儲存指令可僅執行儲存操作或亦可包括其他操作。在一個實施例中,在經執行時,儲存指令執行儲存操作但不執行任何其他(例如,算術及/或按位元邏輯)操作。在一個實施例中,在經執行時,儲存指令為執行移動操作但不執行任何其他(例如,算術及/或按位元邏輯)操作之移動指令。
在一個實施例中,指令(例如,將融合為單一
指令之兩個或多於兩個指令)對純量資料(例如)而非向量資料進行操作。舉例而言,指令可為單一指令、單資料(SISD)指令,(例如)而非單一指令、多資料(SIMD)指令。在某些實施例中,指令可以直接定址模式及/或間接定址模式對運算元進行操作。在某些實施例中,指令可對一或多個暫存器中之運算元進行操作,(例如)其中該等暫存器經由暫存器名稱定址(例如,在直接暫存器定址中不可存取記憶體或在間接暫存器定址中可存取記憶體)。
在一個實施例中,(例如,動態)二元轉譯器可將指令流(例如,指令流之區段)轉譯為經轉譯指令流。二元轉譯器可指派指令可使用之(例如,硬體)資源(例如,動態二元轉譯器可在處理器之運行時間期間指派資源)。舉例而言,二元轉譯器可指派硬體處理器中將用於執行指令流之一或多個特定暫存器,例如儲存輸入之一或多個暫存器及/或用以儲存結果(例如,輸出)之一或多個暫存器。指令流可通常係指指令區段(例如,執行緒)。在一個實施例中,指令流為指令區塊,例如少於約2、3、4、5、6、7、8、9、10、15、20、25、30、35、40、45、50、75、100、200、300、400、500、1000等個指令之區塊。舉例而言,指令流可為不包括軟體應用程式中之每一指令的(例如,連續)指令區塊。在一個實施例中,在二元轉譯之轉譯階段期間,融合管理器可產生二元經轉譯指令流(例如,指令鏈),且隨後檢測多個(例如,兩個)彼等指令並將該等指令融合為單一指令,(例如)以便處理器之解碼單元可接著解碼該
單一指令。
圖1說明根據本發明之實施例的包括硬體處理器102之系統100,該硬體處理器具有硬體二元轉譯器106及硬體融合管理器108。硬體二元轉譯器可為執行二元轉譯之電路。硬體融合管理器可為執行(例如)如本文中所論述之融合的電路。處理器102可接收程式碼104(例如,軟體),例如來自編譯器之程式碼。程式碼104可呈(例如)如上文所論述之第一格式。程式碼(例如,程式碼區塊)可輸入至處理器102之硬體(例如,動態)二元轉譯器106中。硬體(例如,動態)二元轉譯器106可執行程式碼(例如,指令流)自一種格式至第二格式之二元轉譯,(例如)如上文所論述。來自二元轉譯器106之經轉譯程式碼(例如,指令流)可輸出至硬體融合管理器108。在一個實施例中,處理器102包括儲存經轉譯程式碼之儲存器(例如,緩衝器)。融合管理器可檢視(例如,掃描)經轉譯程式碼(例如,指令流),且檢測經轉譯程式碼中可融合為單一指令之多個指令,(例如)如下文參看圖5至圖6及圖7至圖8進一步所論述。在一個實施例中,融合管理器可藉由(例如)檢視(例如,掃描)各指令之作業碼且比較彼作業碼與可經組合之指令的作業碼清單而檢測特定指令。融合管理器可包括檢測可一起融合為單一指令之兩個或多於兩個指令的邏輯(例如,電路)。融合管理器可包括(例如)在檢測之後將兩個或多於兩個指令融合為單一指令之邏輯(例如,電路)。下文參看圖5至圖8論述檢測及融合之實例實施例。在一個實施例中,
例如當第一指令之一或多個結果(例如,儲存結果之記憶體位置的結果值或位址,該結果值或位址可用於間接暫存器定址)將被第二指令(例如,可為在無次序處理器中按規劃次序或按執行次序之第二指令)覆寫時,融合管理器可檢測哪一或哪些指令要覆寫(例如,毀壞)一指令之資料(例如,結果)。可在處理器102之解碼單元110中解碼一或多個單一經融合指令(例如,及其他未經融合指令)。可在處理器102之執行單元112中執行一或多個經解碼的單一經融合指令(例如,及其他經解碼的未經融合指令)。
圖2說明根據本發明之實施例的包括硬體處理器202之系統200,該硬體處理器具有硬體融合管理器208。二元轉譯器可與(例如)硬體、軟體、韌體或其任何組合中之處理器分離。二元轉譯器可將經轉譯程式碼(例如,經轉譯指令流)之輸出提供至處理器(例如,處理器202之硬體融合管理器208)。硬體融合管理器可為執行(例如)如本文中所論述之融合的電路。二元轉譯器206可接收程式碼204(例如,軟體),例如來自編譯器之程式碼。程式碼204可呈(例如)如上文所論述之第一格式。程式碼(例如,程式碼區塊)可輸入至(例如,動態)二元轉譯器206中。二元轉譯器206可執行程式碼(例如,指令流)自一種格式至第二格式之二元轉譯,(例如)如上文所論述。來自二元轉譯器206之經轉譯程式碼(例如,指令流)可輸出至處理器202之硬體融合管理器208。在一個實施例中,處理器202包括儲存經轉譯程式碼之儲存器(例如,緩衝器)。融合管理器可檢視
(例如,掃描)經轉譯程式碼(例如,指令流),且檢測經轉譯程式碼中可融合為單一指令之多個指令,(例如)如下文參看圖5至圖6及圖7至圖8進一步所論述。在一個實施例中,融合管理器可藉由(例如)檢視(例如,掃描)各指令之作業碼且比較彼作業碼與可經組合之指令的作業碼清單而檢測特定指令。融合管理器可包括檢測可一起融合為單一指令之兩個或多於兩個指令的邏輯(例如,電路)。融合管理器可包括將兩個或多於兩個指令融合為單一指令之邏輯(例如,電路)。舉例而言,下文參看圖5至圖8論述檢測及融合實施例。在一個實施例中,例如當第一指令之一或多個結果(例如,儲存結果之記憶體位置的結果值或位址,該結果值或位址可用於間接暫存器定址)將被第二指令(例如,可為在無次序處理器中按規劃次序或按執行次序之第二指令)覆寫時,融合管理器可檢測哪一或哪些指令要覆寫(例如,毀壞)一指令之資料(例如,結果)。可在處理器202之解碼單元210中解碼一或多個單一經融合指令(例如,及其他未經融合指令)。可在處理器202之執行單元212中執行一或多個經解碼的單一經融合指令(例如,及其他經解碼的未經融合指令)。
圖3說明根據本發明之實施例的包括硬體處理器302之系統300。二元轉譯器可與(例如)硬體、軟體、韌體或其任何組合中之處理器分離。二元轉譯器可將經轉譯程式碼(例如,經轉譯指令流)之輸出提供至融合管理器308。融合管理器可與(例如)硬體、軟體、韌體或其任何組
合中之處理器分離。融合管理器可根據本文中所論述方法中之任一者操作。二元轉譯器306可接收程式碼304(例如,軟體),例如來自編譯器之程式碼。程式碼304可呈(例如)如上文所論述之第一格式。程式碼(例如,程式碼區塊)可輸入至二元轉譯器306中。二元轉譯器306可執行程式碼(例如,指令流)自一種格式至第二格式之二元轉譯,(例如)如上文所論述。來自二元轉譯器306之經轉譯程式碼(例如,指令流)可輸出至融合管理器308。在一個實施例中,系統300包括儲存經轉譯程式碼之儲存器(例如,緩衝器)。融合管理器可檢視(例如,掃描)經轉譯程式碼(例如,指令流),且檢測經轉譯程式碼中可融合為單一指令之多個指令,(例如)如下文參看圖5至圖6及圖7至圖8進一步所論述。在一個實施例中,融合管理器可藉由(例如)檢視(例如,掃描)各指令之作業碼且比較彼作業碼與可經組合之指令的作業碼清單而檢測特定指令。融合管理器可包括檢測可一起融合為單一指令之兩個或多於兩個指令的邏輯(例如,電路)。融合管理器可包括將兩個或多於兩個指令融合為單一指令之邏輯(例如,電路)。舉例而言,下文參看圖5至圖8論述檢測及融合實施例。在一個實施例中,例如當第一指令之一或多個結果(例如,儲存結果之記憶體位置的結果值或位址,該結果值或位址可用於間接暫存器定址)將被第二指令(例如,可為在無次序處理器中按規劃次序或按執行次序之第二指令)覆寫時,融合管理器可檢測哪一或哪些指令要覆寫(例如,毀壞)一指令之資料(例如,結果)。
可在處理器302之解碼單元310中解碼一或多個單一經融合指令(例如,及其他未經融合指令)。可在處理器302之執行單元312中執行一或多個經解碼的單一經融合指令(例如,及其他經解碼的未經融合指令)。在一個實施例中,融合管理器可在任何(例如,藉由解碼單元進行之)解碼操作及/或(例如,藉由執行單元進行之)執行操作之前執行融合操作。在一個實施例中,(例如,動態)融合管理器可位於解碼單元之後。
圖4說明根據本發明之實施例的融合操作之流程圖400。流程圖400包括:藉由二元轉譯器將(例如,巨集指令)指令流轉譯為經轉譯(例如,巨集指令)指令流,402;藉由融合管理器將經轉譯(例如,巨集指令)指令流中之多個(例如,巨集指令)指令融合為單一經融合(例如,巨集指令)指令,404;藉由硬體處理器之硬體解碼單元將單一經融合(例如,巨集指令)指令解碼為經解碼的單一經融合指令,406;及藉由硬體處理器之硬體執行單元執行該經解碼的單一經融合(例如,巨集指令)指令,408。
圖5說明根據本發明之實施例的融合操作之假碼500。在一個實施例中,每一及/或所有假碼區段(514、516、518)可為軟體常式或由硬體電路(例如,邏輯)執行。假碼500說明融合管理器可用於檢測及/或融合指令(例如,巨集指令)之假碼的一個實例。舉例而言,資料可以與對資料進行之(例如,ALU)操作所使用之大小不同的大小(例如,位元數目)儲存(例如,於記憶體中),例如,
資料可以單位元組(8位元)之形式儲存,但隨後在對資料執行其他操作之前擴展至多位元組,例如4位元組(32位元)或8位元組(64位元)。由此,程式碼(例如,指令流)可包括零擴展載入指令,以(例如,自一暫存器或其他記憶體)載入資料值且將該資料值零擴展至(例如)其將載入之全暫存器寬度。零擴展可包括用零填充未使用的(例如,空的)位元(例如,最高有效位元),(例如)使得經擴展資料之值與未經擴展值保持相同。舉例而言,融合管理器可檢測一指令以(例如)利用處理器之算術邏輯單元(ALU)執行算術及/或按位元邏輯運算。在某些實施例中,(例如,後續(例如,按規劃次序之後續))指令可(例如,利用處理器之算術邏輯單元(ALU))對零擴展結果執行算術及/或按位元邏輯運算。此可允許算術及/或按位元邏輯運算使用全機器(例如,處理器)暫存器寬度。在一個實施例中,零擴展載入指令包括指示擴展之前及/或之後的值之大小的欄位(例如,作業碼或運算元)。在一個實施例中,第一類型之零擴展載入指令擴展至第一(例如,固定)大小(例如,擴展至32位元)。在一個實施例中,第二類型之零擴展載入指令擴展至第二、不同的(例如,固定)大小(例如,擴展至64位元)。
在一個實施例中,融合管理器可利用假碼500以在經轉譯指令流中檢測一零擴展載入指令及用以讀取該零擴展載入指令之結果的一指令(例如,執行算術及/或按位元邏輯運算之指令),且將該零擴展載入指令及用以讀取該零擴展載入指令之結果的該指令融合為單一經融合
指令。舉例而言,融合管理器可利用第一常式514、第二常式516及/或第三常式518(例如,實施該等常式之電路)。應注意,術語下一寫入程式可指(例如,無次序處理器中)按規劃次序或按執行次序之下一寫入程式。
圖6說明根據本發明之實施例的融合操作前之輸入指令流601及融合操作後之輸出指令流603。在圖6及圖8中,目的地暫存器作為(例如,各源欄位後之)各指令之最右邊欄位出現,然而可使用其他格式(例如,目的地暫存器為最左邊運算元欄位)。在圖6及圖8中,%符號可指示暫存器(例如,而非模數操作),且打開及閉合的括弧(暫存器名稱)可指示定址之間接模式,例如,待存取之位址經儲存為所命名暫存器中之值的間接暫存器定址。所使用之暫存器名稱為實例且可利用其他暫存器識別符。在圖6及圖8中,術語之間的在指兩個指令時可通常係指(例如,在按次序或無次序處理器中)按規劃次序或按執行次序之間的。在一個實施例中,經融合指令與未經融合指令中之任一者相比包括一額外(例如,源)欄位。在某些實施例中,經融合指令指定經融合操作之第一半的兩個源及經融合操作之第二半的第三源,例如,經融合操作之第二半自第一半之結果(例如,隱式地)獲得其其他源。
應注意,圖6示意地說明五個不同融合操作,由此相對於所描繪實施例中之輸出指令流603將輸入指令流601減少5個指令。
根據圖5中之假碼融合輸入指令流601中之指令01及
11的實例:
融合管理器(例如,常式514)可首先檢查輸入指令流601中之指令01,且檢測其為一載入指令並且為一零擴展載入。融合管理器可(自I.A.1.a)轉至(例如,函式)ALU_search 516,其中I等於輸入指令流601中之指令01。因此,在其第II行處,Load_Dest等於暫存器%edi。在第III行處,K成為輸入指令流601中之指令11,因為此為讀取暫存器%edi之01後的第一指令。在一個實施例中,若融合管理器在其間(例如,在此實例中之輸入指令流601中的01與11之間)檢測到控制流(例如,分支)指令,則其不繼續融合操作。由於指令11屬於融合管理器之可融合指令類別,因此融合管理器繼續至常式516之第IV.A行,其中所識別暫存器%edi(X)之(例如,用以覆寫內容的)下一寫入程式亦為輸入指令流601中之指令11。在第IV.C行處,融合管理器驗證除I(輸入指令流601中之指令01)與X(輸入指令流601中之指令11)之間的K以外不存在%edi之其他讀取程式,且由此融合管理器判定I與K可融合,(例如)其中經融合指令為輸出指令流603中之指令08。舉例而言,在一個實施例中,指令11讀取%edi及%ebx兩者,且待融合之另一指令(指令01)讀取記憶體位置0x1(%ebp)及暫存器%edi。由此,在此實例中,顯式地列出第一半之兩個源(0x1(%ebp)及%edi)且此操作之結果與%ebx一起隱式地供應至經融合操作之第二半,而非顯式地要求全部四個源。
根據圖5中之假碼融合輸入指令流601中之指令05及06的實例:
融合管理器(例如,常式514)可首先檢查指令05,且檢測其為一載入指令並且為一零擴展載入。融合管理器可(自I.A.1.a)轉至(例如,函式)ALU_search 516,其中I等於輸入指令流601中之指令05。因此,在其第II行處,Load_Dest等於暫存器%ecx。在第III行處,K成為輸入指令流601中之指令06,因為此為讀取暫存器%ecx之05後的第一指令。在一個實施例中,若融合管理器在其間(例如,在此實例中之輸入指令流601中的05與06之間)檢測到控制流(例如,分支)指令,則其不繼續融合操作。由於指令06屬於融合管理器之可融合指令類別,因此融合管理器繼續至常式516之第IV.A行,其中所識別%ecx(X)之(例如,用以覆寫內容的)下一寫入程式為輸入指令流601中之指令07。在第IV.C行處,融合管理器驗證除I(輸入指令流601中之指令05)與X(輸入指令流601中之指令07)之間的K以外不存在暫存器%ecx之讀取程式且X亦不讀取%ecx(例如,其僅寫入%ecx),且由此融合管理器判定I與K可融合,(例如)其中經融合指令為輸出指令流603中之指令04。在一個實施例中,當融合指令存在效能益處時,例如當單一經融合指令將比兩個未經融合指令之(例如,依序)執行更快地執行至完成時,兩個指令被視為屬於可融合指令類別。
輸入指令流601之指令08及09可(例如)根據
圖5中之假碼以類似方式融合為輸出指令流603之單一指令06。在圖6中之實施例中,輸入指令流601之指令08後的暫存器%esi之下一寫入程式(例如,esi)為輸入指令流601中之指令22。
輸入指令流601之指令12及15可(例如)根據圖5中之假碼以類似方式融合為輸出指令流603之單一指令09。在圖6中之實施例中,輸入指令流601之指令12後的暫存器%ebx之下一寫入程式(例如,ebx)為輸入指令流601中之指令19。
輸入指令流601之指令14及17可(例如)根據圖5中之假碼以類似方式融合為輸出指令流603之單一指令12。在圖6中之實施例中,輸入指令流601之指令12後的暫存器%edx之下一寫入程式(例如,edx)為輸入指令流601中之指令18。
根據圖5中之假碼不融合輸入指令流601中之指令13及16的實例:
融合管理器(例如,常式514)可首先檢查指令13,且檢測其為一載入指令並且為一零擴展載入。融合管理器可(自I.A.1.a)轉至(例如,函式)ALU_search 516,其中I等於輸入指令流601中之指令13。因此,在其第II行處,Load_Dest等於暫存器%ecx。在第III行處,K成為輸入指令流601中之指令16,因為此為讀取暫存器%ecx之13後的第一指令。在一個實施例中,若融合管理器在其間(例如,在此實例中之輸入指令流601中的13與16
之間)檢測到控制流(例如,分支)指令,則其不繼續融合操作。由於指令16屬於融合管理器之可融合指令類別,因此融合管理器繼續至常式516之第IV.A行,但(例如,在輸入指令流中)未發現%ecx(X)之(例如,用以覆寫內容的)下一寫入程式。因此,融合管理器判定輸入指令流601之指令13及16在此實施例中不可融合,(例如)此係由於融合管理器不可檢測(例如,保證)某一其他指令不會利用(例如,讀取)%ecx中之彼值。
圖7說明根據本發明之實施例的融合操作之假碼700。在一個實施例中,部分及/或所有假碼區段714可為軟體常式或由硬體電路(例如,邏輯)執行。假碼700說明融合管理器可用於檢測及/或融合指令(例如,巨集指令)之假碼的一個實例。在一個實施例中,融合管理器可使用假碼700來檢測用以產生一結果之(例如,指令流中之)一指令(例如,巨集指令)及用以讀取該結果之(例如,後續(例如,按規劃次序之後續))一儲存指令(例如,巨集指令),且將用以產生該結果之該指令(例如,巨集指令)及用以讀取該結果之該儲存指令(例如,巨集指令)融合為單一經融合指令(例如,巨集指令)。舉例而言,融合管理器可檢測用以產生結果之指令,以(例如)利用處理器之算術邏輯單元(ALU)執行算術及/或按位元邏輯運算。在某些實施例中,一指令可(例如,利用處理器之算術邏輯單元(ALU))執行算術及/或按位元邏輯運算以產生一結果,且該結果可用於(例如,後續(例如,按規劃次序之後續))儲存(例如,
移動)指令中。
圖8說明根據本發明之實施例的融合操作前之輸入指令流801及融合操作後之輸出指令流803。圖8示意地說明一個融合操作,由此相對於所描繪實施例中之輸出指令流803將輸入指令流801減少一個指令。
根據圖7中之假碼融合輸入指令流801中之指令01及03的實例:
融合管理器(例如,常式714)可首先檢查輸入指令流801中之指令03,且檢測其為一儲存指令(K成為輸入指令流801中之指令03)。在第I.A.1處,Store_Source(例如,待儲存至記憶體中之值)位於暫存器%ebx。在第I.A.2行處,I成為輸入指令流801中之指令01,因為彼指令設定(例如,此實例中之暫存器%ebx中的)Store_Source之值。在一個實施例中,若融合管理器在其間(例如,在此實例中之輸入指令流801中的01與03之間)檢測到控制流(例如,分支)指令,則其不繼續融合操作。由於指令02讀取Store_Source(%ebx),因此I.A.3.a處之條件為假,且融合管理器隨後執行I.A.3.b中所描述之額外檢驗。在此實例中,輸入指令流801中之指令02為唯一此類J指令,且由於重新定位(例如,重新排程)不會影響輸入指令流801中之指令02及/或03讀取的值,因此指令02可重新定位(例如,重新排程)至輸出指令流803中之K(輸入指令流801中之指令03)的後面。由此,在第I.A.3.b.i行處,融合管理器可將輸入指令流801之指令01及03融合為輸出
指令流803之單一經融合指令01,(例如)此情形有效地移動輸入指令流801之指令02以供在輸入指令流801之指令03中之操作後執行。
作為另一實例,若指令I(例如,圖8中之輸入指令流801之指令01)與指令K(例如,圖8中之輸入指令流801之指令03)之間的指令J(例如,圖8中之輸入指令流801之指令02)不將重新定位(例如,重新排程),例如若輸入指令流801之指令02(J)的目的地暫存器(例如,此處之%edx)將由指令03(K)讀取,則融合管理器將不融合輸入指令流801之指令01及03。
應注意,儘管圖8與圖6為獨立的,但(例如,根據假碼500及假碼700)之融合操作可在同一輸入指令流上(例如,同時)發生。
本文中之某些實施例(例如)利用處理器之現有解碼邏輯使得精簡指令集計算(RISC)二元轉譯器ISA指令達成複雜指令集計算(CISC)(例如,x86)巨集指令之簡潔度及密度。密度改良可經由巨集指令減少達成,巨集指令減少亦可改良分配、重命名及/或引退頻寬。某些實施例可包括支援具有3個運算元(例如,兩個源及一個目的地)之指令的二元轉譯器ISA指令。此情形可允許記憶體運算元並非源運算元之特定融合操作(例如,ALU及儲存融合)。
在一個實施例中,硬體處理器包括:硬體二元轉譯器,其用以將指令流轉譯為經轉譯指令流;硬體融合管理器,其用以將經轉譯指令流中之多個指令融合為單
一經融合指令;硬體解碼單元,其用以將該單一經融合指令解碼為經解碼的單一經融合指令;及硬體執行單元,其用以執行該經解碼的單一經融合指令。硬體融合管理器可在經轉譯指令流中檢測一零擴展載入指令及用以讀取該零擴展載入指令之一結果的一指令,且將該零擴展載入指令及用以讀取該零擴展載入指令之該結果的該指令融合為單一經融合指令。除非檢測到用以覆寫該零擴展載入指令之結果的後一指令,否則硬體融合管理器不可將該零擴展載入指令及用以讀取該零擴展載入指令之結果的指令融合為單一經融合指令。若除用以讀取零擴展載入指令之結果的指令外,硬體融合管理器在零擴展載入指令與用以覆寫且不讀取該零擴展載入指令之結果的後一指令之間檢測到經轉譯指令流中亦用以讀取該零擴展載入指令之結果的任何額外指令,則該硬體融合管理器不可融合該零擴展載入指令及用以讀取該零擴展載入指令之結果的該指令。硬體融合管理器可在經轉譯指令流中檢測用以產生一結果之一指令及用以讀取該結果之一儲存指令,且將用以產生該結果之該指令及用以讀取該結果之該儲存指令融合為單一經融合指令。若硬體融合管理器在用以產生結果之指令與用以讀取結果之儲存指令之間檢測到經轉譯指令流中亦用以讀取結果之任何指令,則該硬體融合管理器不可融合用以產生結果之該指令及用以讀取結果之該儲存指令。若硬體融合管理器在用以產生結果之指令與用以讀取結果之儲存指令之間檢測到經轉譯指令流中亦用以讀取結果之任何指
令,及/或檢測到該單一經融合指令要覆寫該結果,則該硬體融合管理器不可融合用以產生結果之該指令及用以讀取結果之該儲存指令。指令流可為巨集指令流。
在另一實施例中,一種方法包括:藉由二元轉譯器將指令流轉譯為經轉譯指令流;藉由融合管理器將經轉譯指令流中之多個指令融合為單一經融合指令;藉由硬體處理器之硬體解碼單元將單一經融合指令解碼為經解碼的單一經融合指令;及藉由硬體處理器之硬體執行單元執行該經解碼的單一經融合指令。該方法可包括在經轉譯指令流中檢測一零擴展載入指令及用以讀取該零擴展載入指令之一結果的一指令,且將該零擴展載入指令及用以讀取該零擴展載入指令之該結果的該指令融合為單一經融合指令。該方法可包括:除非檢測到用以覆寫該零擴展載入指令之結果的後一指令,否則不將該零擴展載入指令及用以讀取該零擴展載入指令之結果的指令融合為單一經融合指令。該方法可包括:若除用以讀取零擴展載入指令之結果的指令外,融合管理器在零擴展載入指令與用以覆寫且不讀取該零擴展載入指令之結果的後一指令之間檢測到經轉譯指令流中亦用以讀取該零擴展載入指令之結果的任何額外指令,則不融合該零擴展載入指令及用以讀取該零擴展載入指令之結果的該指令。該方法可包括在經轉譯指令流中檢測用以產生一結果之一指令及用以讀取該結果之一儲存指令,且將用以產生該結果之該指令及用以讀取該結果之該儲存指令融合為單一經融合指令。該方法可包括:
若融合管理器在用以產生結果之指令與用以讀取結果之儲存指令之間檢測到經轉譯指令流中亦用以讀取結果之任何指令,則不融合用以產生結果之該指令及用以讀取結果之該儲存指令。該方法可包括:若融合管理器在用以產生結果之指令與用以讀取結果之儲存指令之間檢測到經轉譯指令流中亦用以讀取結果之任何指令,及/或檢測到單一經融合指令要覆寫該結果,則不融合用以產生結果之該指令及用以讀取結果之該儲存指令。指令流可為巨集指令流。
在又一實施例中,一種儲存程式碼之非暫時性機器可讀媒體,該等程式碼在由機器執行時使得該機器執行包括以下之方法:藉由二元轉譯器將指令流轉譯為經轉譯指令流;藉由融合管理器將經轉譯指令流中之多個指令融合為單一經融合指令;將單一經融合指令解碼為經解碼的單一經融合指令;及執行該經解碼的單一經融合指令。該方法可包括在經轉譯指令流中檢測一零擴展載入指令及用以讀取該零擴展載入指令之一結果的一指令,且將該零擴展載入指令及用以讀取該零擴展載入指令之該結果的該指令融合為單一經融合指令。該方法可包括:除非檢測到用以覆寫該零擴展載入指令之結果的後一指令,否則不將該零擴展載入指令及用以讀取該零擴展載入指令之結果的指令融合為單一經融合指令。該方法可包括:若除用以讀取零擴展載入指令之結果的指令外,融合管理器在零擴展載入指令與用以覆寫且不讀取該零擴展載入指令之結果的後一指令之間檢測到經轉譯指令流中亦用以讀取該零
擴展載入指令之結果的任何額外指令,則不融合該零擴展載入指令及用以讀取該零擴展載入指令之結果的該指令。該方法可包括在經轉譯指令流中檢測用以產生一結果之一指令及用以讀取該結果之一儲存指令,且將用以產生該結果之該指令及用以讀取該結果之該儲存指令融合為單一經融合指令。該方法可包括:若融合管理器在用以產生結果之指令與用以讀取結果之儲存指令之間檢測到經轉譯指令流中亦用以讀取結果之任何指令,則不融合用以產生結果之該指令及用以讀取結果之該儲存指令。該方法可包括:若融合管理器在用以產生結果之指令與用以讀取結果之儲存指令之間檢測到經轉譯指令流中亦用以讀取結果之任何指令,及/或檢測到單一經融合指令要覆寫該結果,則不融合用以產生結果之該指令及用以讀取結果之該儲存指令。指令流可為巨集指令流。
在另一實施例中,一種設備包括:藉由二元轉譯器將指令流轉譯為經轉譯指令流的構件;藉由融合管理器將經轉譯指令流中之多個指令融合為單一經融合指令的構件;用於將單一經融合指令解碼為經解碼的單一經融合指令的構件;及/或用於執行該經解碼的單一經融合指令的構件。
在又一實施例中,一種設備包含儲存程式碼之資料儲存裝置,該程式碼在由硬體處理器執行時使得該硬體處理器執行本文中揭示之任何方法。一種設備可如實施方式中所描述。一種方法可如實施方式中所描述。
指令集可包括一或多個指令格式。一給定指令格式可定義各種欄位(例如,位元數目、位元位置),以指定(尤其)待執行之運算(例如,作業碼)及待對其執行彼運算之一或多個運算元及/或一或多個其他資料欄位(例如,遮罩)。經由指令模板(或子格式)之定義進一步分解一些指令格式。舉例而言,給定指令格式之指令模板可經定義而具有指令格式之欄位之不同子集(所包括之欄位通常呈相同次序,但至少一些欄位具有不同位元位置,此係因為所包括之欄位較少)及/或經定義而具有以不同方式解譯之給定欄位。因此,ISA之各指令係使用給定指令格式(且,在經定義之情況下,在彼指令格式之指令模板中之給定指令模板中)來表達且包括用於指定運算及運算元之欄位。舉例而言,例示性加法(ADD)指令具有特定作業碼及指令格式,該指令格式包括用以指定彼作業碼之作業碼欄位及用以選擇運算元(源1/目的地及源2)之運算元欄位;且此加法(ADD)指令在指令流中之出現將在選擇特定運算元之運算元欄位中具有特定內容。已發行及/或公佈被稱作高階向量擴展(AVX)(AVX1及AVX2)且使用向量擴展(VEX)編碼方案的SIMD擴展之集合(例如,參見2015年9月之Intel® 64及IA-32架構軟體開發人員手冊;及參見2015年8月之Intel®架構指令集擴展程式設計參照案)。
例示性指令格式
本文中所描述之一或多個指令之實施例可以不同格式來體現。另外,下文詳細描述例示性系統、架
構及管線。可在此等系統、架構及管線上執行該或該等指令之實施例,但實施例不限於詳細描述之彼等實施例。
通用向量友好指令格式
向量友好指令格式為適用於向量指令之指令格式(例如,存在向量運算所特定之某些欄位)。雖然描述經由向量友好指令格式支援向量運算及純量運算兩者之實施例,但替代實施例僅使用向量運算、向量友好指令格式。
圖9A至圖9B為說明根據本發明之實施例的通用向量友好指令格式及其指令模板之方塊圖。圖9A為說明根據本發明之實施例的通用向量友好指令格式及其A類指令模板之方塊圖;而圖9B為說明根據本發明之實施例的通用向量友好指令格式及其B類指令模板之方塊圖。具體言之,通用向量友好指令格式900,針對其定義A類及B類指令模板,該等兩類指令模板包括無記憶體存取905指令模板及記憶體存取920指令模板。在向量友好指令格式之上下文中之術語通用係指未繫結至任何特定指令集之指令格式。
雖然在向量友好指令格式支援以下情形之情況下描述本發明之實施例:64位元組向量運算元長度(或大小)與32位元(4位元組)或64位元(8位元組)資料元素寬度(或大小)(且因此,64位元組向量由16個雙字大小之元素或8個四倍字大小之元素組成);64位元組向量運算元長度(或大小)與16位元(2位元組)或8位元(1位元組)資料
元素寬度(或大小);32位元組向量運算元長度(或大小)與32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小);及16位元組向量運算元長度(或大小)與32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(大小);替代實施例可支援更多、更少及/或不同向量運算元大小(例如,256位元組向量運算元)與更多、更少或不同資料元素寬度(例如,128位元(16位元組)資料元素寬度)。
圖9A中之A類指令模板包括:1)在無記憶體存取905指令模板內展示無記憶體存取、完全捨位控制類型操作910指令模板及無記憶體存取、資料變換類型操作915指令模板;及2)在記憶體存取920指令模板內展示記憶體存取、暫時性925指令模板及記憶體存取、非暫時性930指令模板。圖9B中之B類指令模板包括:1)在無記憶體存取905指令模板內展示無記憶體存取、寫入遮罩控制、部分捨位控制類型操作912指令模板及無記憶體存取、寫入遮罩控制、vsize類型操作917指令模板;及2)在記憶體存取920指令模板內展示記憶體存取、寫入遮罩控制927指令模板。
通用向量友好指令格式900包括下文按圖9A至圖9B所說明之次序列舉之以下欄位。
格式欄位940--此欄位中之特定值(指令格式識別符值)獨特地識別向量友好指令格式,且因此識別向量友好指令格式中之指令在指令流中的出現。因而,在
不需要指令集僅具有通用向量友好指令格式之意義上,此欄位為可選的。
基本操作欄位942--其內容區分不同基本操作。
暫存器索引欄位944--其內容直接地或經由位址產生指定源及目的地運算元之位置,該等位置係在暫存器中或在記憶體中。此等包括足夠數目個位元以自P×Q(例如,32×512、16×128、32×1024、64×1024)暫存器檔案中選擇N個暫存器。雖然在一個實施例中,N可至多為三個源及一個目的地暫存器,但替代實施例可支援更多或更少源及目的地暫存器(例如,可支援至多兩個源(此等源中之一者亦充當目的地),可支援至多三個源(此等源中之一者亦充當目的地),可支援至多兩個源及一個目的地)。
修飾符欄位946--其內容區分指定記憶體存取之通用向量指令格式中的指令之出現與不指定記憶體存取之通用向量指令格式中的指令之出現;亦即,在無記憶體存取905指令模板與記憶體存取920指令模板之間進行區分。記憶體存取操作讀取記憶體階層及/或寫入至記憶體階層(在一些狀況下,使用暫存器中之值指定源及/或目的地位址),而非記憶體存取操作並不進行此操作(例如,源及目的地為暫存器)。雖然在一實施例中,此欄位亦在三種不同方式之間選擇以執行記憶體位址計算,但替代實施例可支援更多、更少或不同方式來執行記憶體位址計算。
擴增操作欄位950--其內容區分除基本操作之外欲執行多種不同操作中之哪些者。此欄位為上下文所特定的。在本發明之一個實施例中,將此欄位劃分成類別欄位968、α欄位952及β欄位954。擴增操作欄位950允許在單一指令而不是2個、3個或4個指令中執行共同群組之操作。
比例欄位960--其內容允許對用於記憶體位址產生(例如,用於使用2比例×索引+基數之位址產生)的索引欄位之內容進行比例。
位移欄位962A--其內容用作記憶體位址產生(例如,用於使用2比例×索引+基數+位移之位址產生)之部分。
位移因子欄位962B(應注意,位移欄位962A在位移因子欄位962B之正上方之並置指示使用一者或另一者)--其內容用作位址產生之部分;其指定將根據記憶體存取之大小(N)進行比例之位移因子,其中N為記憶體存取中之位元組之數目(例如,用於使用2比例×索引+基數+經比例之位移的位址產生)。忽略冗餘低層級位元且因此,將位移因子欄位之內容乘以記憶體運算元總大小(N)以便產生欲在計算有效位址中使用的最終位移。N之值係由處理器硬體在執行時間基於全作業碼欄位974(稍後在下文加以描述)及資料操縱欄位954C判定。在不用於無記憶體存取905指令模板及/或不同實施例可實施兩者中之僅一者或不實施兩者中之任一者的意義上,位移欄位962A及位移
因子欄位962B為可選的。
資料元素寬度欄位964--其內容區分將使用數個資料元素寬度中之哪一者(在用於所有指令之一些實施例中;在僅用於指令中之一些指令之其他實施例中)。在僅支援一資料元素寬度及/或使用作業碼之某一態樣支援資料元素寬度之情況下不需要的意義上,此欄位為可選的。
寫入遮罩欄位970--其內容基於每一資料元素位置控制目的地向量運算元中之彼資料元素位置是否反映基本操作及擴增操作之結果。A類指令模板支援合併-寫入遮罩,而B類指令模板支援合併-寫入遮罩及歸零-寫入遮罩兩者。在合併時,向量遮罩允許在實行任何操作(藉由基本操作及擴增操作指定)期間保護目的地中之任何元素集合使其免於更新;在另一實施例中,保存目的地中之各元素之舊值,其中對應遮罩位元具有0。與此對比,當進行歸零時,向量遮罩允許在實行任何操作(藉由基本操作及擴增操作指定)期間將目的地中之任何元素集合歸零;在一實施例中,當對應遮罩位元具有0值時,將目的地之元素設定為0。此功能性之一子集為控制經執行之操作之向量長度的能力(亦即,經修改之元素之跨度,自第一元素至最後的元素);然而,經修改之元素不必要為連續的。因此,寫入遮罩欄位970允許進行部分向量操作,包括載入、儲存、算術、邏輯等。雖然描述其中寫入遮罩欄位970之內容選擇數個寫入遮罩暫存器中含有將使用之寫入遮罩之一
者(且由此寫入遮罩欄位970之內容間接識別欲執行之遮罩)的本發明實施例,但替代實施例替代地或額外允許遮罩寫入欄位970之內容直接指定欲執行之遮罩。
立即欄位972--其內容允許達成立即指令之規範。在於不支援立即指令之通用向量友好格式之實施中不存在且在不使用立即指令之指令中不存在的意義上,此欄位為可選的。
類別欄位968--其內容區分指令之不同類別。參看圖9A至圖9B,此欄位之內容在A類指令與B類指令之間選擇。在圖9A至圖9B中,使用圓角方形來指示特定值存在於欄位中(例如,用於類別欄位968之A類968A及B類968B,分別在圖9A至圖9B中)。
A類之指令模板
在A類之非記憶體存取905指令模板的狀況下,α欄位952經解譯為RS欄位952A,其內容區分欲執行不同擴增操作類型中之哪一者(例如,捨位952A.1及資料變換952A.2分別經指定用於無記憶體存取、捨位類型操作910指令模板及無記憶體存取、資料變換類型操作915指令模板),而β欄位954區分欲執行所指定類型之操作中的哪一者。在無記憶體存取905指令模板中,不存在比例欄位960、位移欄位962A及位移比例欄位962B。
無記憶體存取指令模板--完全捨位控制類型操作
在無記憶體存取完全捨位控制類型操作910指令模板中,將β欄位954解譯為捨位控制欄位954A,其
內容提供靜態捨位。雖然在本發明之所描述實施例中,捨位控制欄位954A包括抑制所有浮點異常(SAE)欄位956及捨位操作控制欄位958,但替代實施例可支援、可將此等兩個概念編碼至相同欄位中或僅具有此等概念/欄位中之一者或另一者(例如,可僅具有捨位操作控制欄位958)。
SAE欄位956--其內容區分是否停用異常事件報告;當SAE欄位956之內容指示啟用抑制時,給定指令不報告任何種類之浮點異常旗標且不升高任何浮點異常處理常式。
捨位操作控制欄位958--其內容區分欲執行捨位操作群組中之哪些者(例如,向上捨位、向下捨位、朝向零捨位及朝向最近值捨位)。因此,捨位操作控制欄位958允許基於每一指令改變捨位模式。在本發明之一個實施例中,其中處理器包括用於指定捨位模式之控制暫存器,捨位操作控制欄位950之內容覆蓋彼暫存器值。
無記憶體存取指令模板--資料變換類型操作
在無記憶體存取資料變換類型操作915指令模板中,將β欄位954解譯為資料變換欄位954B,其內容區分將執行數個資料變換中之哪一者(例如,無資料變換、拌和(swizzle)、廣播)。
在A類之記憶體存取920指令模板之狀況下,將α欄位952解譯為逐出提示欄位952B,其內容區分將使用逐出提示中之哪一者(在圖9A中,暫時性952B.1及非暫時性952B.2分別經指定用於記憶體存取、暫時性925
指令模板及記憶體存取、非暫時性930指令模板),而將β欄位954解譯為資料操縱欄位954C,其內容區分將執行數個資料操縱操作(亦被稱為原語)中之哪一者(例如,無操縱;廣播;對源進行向上轉換;及對目的地進行向下轉換)。記憶體存取920指令模板包括比例欄位960,且視情況包括位移欄位962A或位移比例欄位962B。
向量記憶體指令執行來自記憶體之向量載入及至記憶體之向量儲存,其中具有轉換支援。如同常規向量指令,向量記憶體指令以按資料元素方式自記憶體傳送資料/將資料傳送至記憶體,其中實際上經傳送之元素係藉由經選擇作為寫入遮罩之向量遮罩之內容來指示。
記憶體存取指令模板--暫時性
暫時性資料為很可能在不久後重新使用之資料,其足以受益於快取。然而,此情形為提示,且不同處理器可以不同方式來實施該情形,包括完全忽略提示。
記憶體存取指令模板--非暫時性
非暫時性資料為不可能在足以受益於第一層級快取記憶體中之快取之不久後重新使用且應被給予逐出優先權的資料。然而,此情形為提示,且不同處理器可以不同方式來實施該情形,包括完全忽略提示。
B類指令模板
在B類指令模板之狀況下,將α欄位952解譯為寫入遮罩控制(Z)欄位952C,其內容區分由寫入遮罩欄位970控制之寫入遮罩應為合併抑或歸零。
在B類非記憶體存取905指令模板之狀況下,β欄位954之一部分經解譯為RL欄位957A,其內容區分欲執行不同擴增操作類型中之哪一者(例如,捨位957A.1及向量長度(VSIZE)957A.2分別經指定用於無記憶體存取、寫入遮罩控制、部分捨位控制類型操作912指令模板及無記憶體存取、寫入遮罩控制VSIZE類型操作917指令模板),而β欄位954之其餘部分區分欲執行所指定類型之哪一操作。在無記憶體存取905指令模板中,不存在比例欄位960、位移欄位962A及位移比例欄位962B。
在無記憶體存取、寫入遮罩控制、部分捨位控制型操作910指令模板中,β欄位954之其餘部分經解譯為捨位操作欄位959A且停用異常事件報告(給定指令不報告任何種類之浮點異常旗標且不升高任何浮點異常處理常式)。
捨位操作控制欄位959A--正如捨位操作控制欄位958,其內容區分將執行捨位操作群組中之哪些者(例如,向上捨位、向下捨位、朝向零捨位及朝向最近值捨位)。因此,捨位操作控制欄位959A允許基於每一指令改變捨位模式。在本發明之一個實施例中,其中處理器包括用於指定捨位模式之控制暫存器,捨位操作控制欄位950之內容覆蓋彼暫存器值。
在無記憶體存取、寫入遮罩控制、VSIZE型操作917指令模板中,β欄位954之其餘部分經解譯為向量長度欄位959B,其內容區分將對數個資料向量長度中之哪
一者執行(例如,128、256或512位元組)。
在B類記憶體存取920指令模板之狀況下,將β欄位954之部分解譯為廣播欄位957B,其內容區分是否應執行廣播類型資料操縱操作,而將β欄位954之其餘部分解譯為向量長度欄位959B。記憶體存取920指令模板包括比例欄位960,且視情況包括位移欄位962A或位移比例欄位962B。
關於通用向量友好指令格式900,展示完全作業碼欄位974包括格式欄位940、基本操作欄位942及資料元素寬度欄位964。雖然展示完全作業碼欄位974包括所有此等欄位之一個實施例,但在並不支援所有欄位之實施例中,完全作業碼欄位974包括少於全部之此等欄位。完全作業碼欄位974提供操作碼(作業碼)。
擴增操作欄位950、資料元素寬度欄位964及寫入遮罩欄位970允許基於通用向量友好指令格式中之每一指令指定此等特徵。
寫入遮罩欄位與資料元素寬度欄位之組合創建具型式指令,此係因為其允許基於不同資料元素寬度應用遮罩。
可見於A類及B類中之各種指令模板在不同情形中為有益的。在本發明之一些實施例中,不同處理器或處理器內之不同核心可僅支援A類、僅支援B類,或支援A類與B類兩類。舉例而言,意欲用於通用計算之高效能通用無次序核心可僅支援B類,意欲主要用於圖形及/或科學
(輸送量)計算之核心可僅支援A類,且意欲用於兩種情形之核心可支援兩者(當然,具有來自兩類之模板及指令但並非來自兩類之所有模板及指令的某種混合的核心在本發明之權限內)。又,單一處理器可包括多個核心,所有核心支援相同類別或其中不同核心支援不同類別。舉例而言,在具有單獨圖形及通用核心之處理器中,意欲主要用於圖形及/或科學計算之圖形核心中之一者可僅支援A類,而通用核心中之一或多者可為高效能通用核心,其中無次序實行及暫存器重新命名意欲用於僅支援B類之通用計算。不具有單獨圖形核心之另一處理器可包括支援A類與B類兩者之一個以上通用按次序或無次序核心。當然,在本發明之不同實施例中,來自一類別之特徵亦可在另一類別中加以實施。以高階語言撰寫之規劃將置於多種不同的可實行形式中(例如,僅在時間上編譯或靜態地編譯),多種不同的可實行形式包括:1)僅具有用於實行之目標處理器所支援的類別之指令的形式;或2)具有使用所有類別之指令之不同組合撰寫的替代常式且具有基於當前正實行程式碼之處理器所支援之指令選擇欲實行之常式的控制流程式碼的形式。
例示性特定向量友好指令格式
圖10為說明根據本發明之實施例的例示性特定向量友好指令格式的方塊圖。圖10展示在指定欄位之位置、大小、解譯及次序以及彼等欄位中之一些欄位的值之意義上特定的特定向量友好指令格式1000。特定向量友
好指令格式1000可用以擴展x86指令集,且因此,該等欄位中之一些欄位與現有x86指令集及其擴展(例如,AVX)中所使用之彼等欄位類似或相同。此格式仍與現有x86指令集與擴展之首碼編碼欄位、真實作業碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即欄位一致。說明來自圖10之欄位至來自圖9之欄位的映射。
應理解,儘管為達成說明之目的,在通用向量友好指令格式900之上下文中參考特定向量友好指令格式1000描述本發明之實施例,但除所主張外,本發明不限於特定向量友好指令格式1000。舉例而言,通用向量友好指令格式900涵蓋用於各種欄位之多種可能的大小,但將特定向量友好指令格式1000展示為具有特定大小之欄位。藉助於特定實施例,雖然資料元素寬度欄位964經說明為特定向量友好指令格式1000中之一個位元欄位,但本發明不限於此(亦即,通用向量友好指令格式900涵蓋其他大小之資料元素寬度欄位964)。
通用向量友好指令格式900包括下文按圖10A所說明之次序列舉之以下欄位。
EVEX首碼(位元組0至3)1002係以四位元組形式編碼。
格式欄位940(EVEX位元組0、位元[7:0])--第一位元組(EVEX位元組0)為格式欄位940且其含有0×62(在本發明之一個實施例中用於區分向量友好指令格式之唯一值)。
第二至第四位元組(EVEX位元組1至3)包括提供特定能力之數個位元欄位。
REX欄位1005(EVEX位元組1、位元[7-5])--由EVEX.R位元欄位(EVEX位元組1、位元[7]-R)、EVEX.X位元欄位(EVEX位元組1、位元[6]-X)及957BEX位元組1、位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應VEX位元欄位相同之功能性,且係使用1之補碼形式來編碼,亦即,將ZMM0編碼為1111B,將ZMM15編碼為0000B。指令之其他欄位編碼暫存器索引之較低三個位元,如此項技術中已知(rrr、xxx及bbb),以使得可藉由添加EVEX.R、EVEX.X及EVEX.B來形成Rrrr、Xxxx及Bbbb。
REX'欄位910--此欄位為REX'欄位910之第一部分且其為EVEX.R'位元欄位(EVEX位元組1、位元[4]-R'),其用以編碼擴展32暫存器集之較高16或較低16。在本發明之一實施例中,此位元以及如下文所指示之其他位元係以位元反轉格式儲存,以區分(在熟知之x86 32位元模式中)BOUND指令,BOUND指令之真實作業碼位元組為62,但其在MOD R/M欄位(如下文所描述)中並不接受MOD欄位中之值11;本發明之替代實施例並不儲存此位元及下文以反轉格式指示之其他位元。使用值1來編碼較低的16個暫存器。換言之,藉由組合EVEX.R'、EVEX.R及來自其他欄位之其他RRR來形成R'Rrrr。
作業碼映射欄位1015(EVEX位元組1、位元
[3:0]-mmmm)--其內容編碼隱含之前置作業碼位元組(0F、0F 38或0F 3)。
資料元素寬度欄位964(EVEX位元組2、位元[7]-W)--係由記法EVEX.W表示。EVEX.W用於定義資料類型(32位元資料元素抑或64位元資料元素)之細微度(大小)。
EVEX.vvvv 1020(EVEX位元組2、位元[6:3]-vvvv)--EVEX.vvvv之作用可包括以下各者:1)EVEX.vvvv編碼第一源暫存器運算元,以反轉(1之補碼)形式指定且對於具有2個或更多個源運算元之指令有效;2)EVEX.vvvv編碼目的地暫存器運算元,針對某些向量移位以1之補碼形式指定;或3)EVEX.vvvv並不編碼任何運算元,保留該欄位且該欄位應含有1111b。因此,EVEX.vvvv欄位1020編碼以反轉(1之補碼)形式儲存之第一源暫存器指定符之4個低層級位元。取決於指令,使用額外不同之EVEX位元欄位來將說明符大小擴展至32暫存器。
EVEX.U 968類別欄位(EVEX位元組2、位元[2]-U)--若EVEX.U=0,則其指示A類或EVEX.U0;若EVEX.U=1,則其指示B類或EVEX.U1。
首碼編碼欄位1025(EVEX位元組2、位元[1:0]-pp)--提供用於基本操作欄位之額外位元。除提供對EVEX首碼格式之舊版SSE指令的支援之外,此情形亦具有壓縮SIMD首碼(並非需要一位元組以表達SIMD首
碼,EVEX首碼僅需要2個位元)之益處。在一實施例中,為了支援使用舊版格式及EVEX首碼格式兩者之SIMD首碼(66H、F2H、F3H)之舊版SSE指令,將此等舊版SIMD首碼編碼至SIMD首碼編碼欄位中;且在將其提供至解碼器之PLA之前在執行時間將其擴充至舊版SIMD首碼中(因此,PLA可在不修改之情況下實行此等舊版指令之舊版及EVEX格式兩者)。儘管隨著作業碼擴展,較新指令可直接使用EVEX首碼編碼欄位之內容,但某些實施例以類似方式擴充以用於達成一致性,但允許藉由此等舊版SIMD首碼指定不同含義。替代實施例可重新設計PLA以支援2位元SIMD首碼編碼,且因此並不需要擴充。
α欄位952(EVEX位元組3、位元[7]-EH;亦被稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制及EVEX.N;亦藉由α來說明)--如先前所描述,此欄位為上下文特定的。
β欄位954(EVEX位元組3、位元[6:4]-SSS,亦被稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦藉由βββ來說明)--如先前所描述,此欄位為上下文特定的。
REX'欄位910--此欄位為REX'欄位之剩餘部分且為EVEX.V'位元欄位(EVEX位元組3、位元[3]-V'),其可用以編碼擴展32暫存器集之較高16或較低16。此位元係以位元反轉格式儲存。使用值1來編碼較低的16個暫存器。換言之,藉由組合EVEX.V'、EVEX.vvvv
來形成V'VVVV。
寫入遮罩欄位970(EVEX位元組3、位元[2:0]-kkk)--其內容指定如先前所描述之寫入遮罩暫存器中之暫存器的索引。在本發明之一實施例中,特定值EVEX.kkk=000具有特殊狀態,此情形隱含無寫入遮罩用於特定指令(此情形可以多種方式來實施,包括使用經固線連接至全部一之寫入遮罩或繞過遮罩硬體之硬體)。
真實作業碼欄位1030(位元組4)亦被稱為作業碼位元組。作業碼之部分係在此欄位中指定。
MOD R/M欄位1040(位元組5)包括MOD欄位1042、Reg欄位1044及R/M欄位1046。如先前所描述,MOD欄位1042之內容區分記憶體存取與非記憶體存取操作。可將Reg欄位1044之作用概述為兩種情形:編碼目的地暫存器運算元或源暫存器運算元,或將其視為作業碼擴展且不用以編碼任何指令運算元。R/M欄位1046之作用可包括以下情形:編碼參考記憶體位址之指令運算元,或編碼目的地暫存器運算元或源暫存器運算元。
比例、索引、基數(SIB)位元組(位元組6)--如先前所描述,比例欄位950之內容用於記憶體位址產生。SIB.xxx 1054及SIB.bbb 1056--此等欄位之內容先前已關於暫存器索引Xxxx及Bbbb提及。
位移欄位962A(位元組7至10)--當MOD欄位1042含有10時,位元組7至10為位移欄位962A,且其以與舊版32位元位移(disp32)相同之方式運作且在位元組
細微度下運作。
位移因子欄位962B(位元組7)--在MOD欄位1042含有01時,位元組7為位移因子欄位962B。此欄位之位置與舊版x86指令集8位元位移(disp8)(其在位元組細微度下運作)之位置相同。由於disp8係記號擴展,因此其位址可能僅在-128位元組偏移與127位元組偏移之間;依據64位元組快取行,disp8使用可經設定至僅四個確實有用之值-128、-64、0及64之8個位元;由於常常需要較大範圍,因此使用disp32;然而,disp32需要4個位元組。與disp8及disp32形成對比,位移因子欄位962B為disp8之重新解譯;當使用位移因子欄位962B時,藉由位移因子欄位之內容乘以記憶體運算元存取之大小(N)的所得值來判定實際位移。此類型之位移被稱作disp8×N。此情形減小平均指令長度(用於位移但具有大得多之範圍的單一位元組)。此經壓縮位移係基於以下假定:有效位移為記憶體存取之細微度之倍數,且因此,不需要編碼位址偏移之冗餘低層級位元。換言之,位移因子欄位962B取代舊版x86指令集8位元位移。因此,以與x86指令集8-位元位移相同之方式來編碼位移因子欄位962B(因此,ModRM/SIB編碼規則中無改變),僅有的例外為:將disp8過載至disp8×N。換言之,編碼規則或編碼長度中不存在改變,而僅在由硬體進行的位移值之解譯中存在改變(該情形需要將位移按記憶體運算元之大小比例以獲得按位元組位址偏移)。立即欄位972如先前所描述操作。
完全作業碼欄位
圖10B為說明根據本發明之一個實施例的構成完全作業碼欄位974之特定向量友好指令格式1000之欄位的方塊圖。具體言之,完全作業碼欄位974包括格式欄位940、基本操作欄位942及資料元素寬度(W)欄位964。基本操作欄位942包括首碼編碼欄位1025、作業碼映射欄位1015及真實作業碼欄位1030。
暫存器索引欄位
圖10C為說明根據本發明之一個實施例的構成暫存器索引欄位944之特定向量友好指令格式1000之欄位的方塊圖。具體言之,暫存器索引欄位944包括REX欄位1005、REX'欄位1010、MODR/M.reg欄位1044、MODR/M.r/m欄位1046、VVVV欄位1020、xxx欄位1054及bbb欄位1056。
擴增操作欄位
圖10D為說明根據本發明之一個實施例的構成擴增操作欄位950之特定向量友好指令格式1000之欄位的方塊圖。在類別(U)欄位968含有0時,其表示EVEX.U0(A類968A);在該欄位含有1時,其表示EVEX.U1(B類968B)。當U=0且MOD欄位1042含有11(其表示無記憶體存取操作)時,α欄位952(EVEX位元組3、位元[7]-EH)經解譯為rs欄位952A。當rs欄位952A含有1(捨位952A.1)時,β欄位954(EVEX位元組3、位元[6:4]-SSS)經解譯為捨位控制欄位954A。捨位控制欄位954A包括一位元SAE
欄位956及兩位元捨位操作欄位958。在rs欄位952A含有0(資料變換952A.2)時,將β欄位954(EVEX位元組3、位元[6:4]-SSS)解譯為三位元資料變換欄位954B。當U=0且MOD欄位1042含有00、01或10(表示記憶體存取操作)時,將α欄位952(EVEX位元組3、位元[7]-EH)解譯為逐出提示(EH)欄位952B且將β欄位954(EVEX位元組3、位元[6:4]-SSS)解譯為三位元資料操縱欄位954C。
在U=1時,將α欄位952(EVEX位元組3、位元[7]-EH)解譯為寫入遮罩控制(Z)欄位952C。在U=1且MOD欄位1042含有11(表示無記憶體存取操作)時,將β欄位954之部分(EVEX位元組3、位元[4]-S0)解譯為RL欄位957A;在該MOD欄位1042含有1(捨位957A.1)時,將β欄位954之其餘部分(EVEX位元組3、位元[6-5]-S2-1)解譯為捨位操作欄位959A,而在RL欄位957A含有0(VSIZE 957.A2)時,將β欄位954之其餘部分(EVEX位元組3、位元[6-5]-S2-1)解譯為向量長度欄位959B(EVEX位元組3、位元[6-5]-L1-0)。當U=1且MOD欄位1042含有00、01或10(表示記憶體存取操作)時,將β欄位954(EVEX位元組3、位元[6:4]-SSS)解譯為向量長度欄位959B(EVEX位元組3、位元[6-5]-L1-0)及廣播欄位957B(EVEX位元組3、位元[4]-B)。
例示性暫存器架構
圖11為根據本發明之一個實施例的暫存器架構1100之方塊圖。在所說明之實施例中,存在寬度為512
位元之32個向量暫存器1110;此等暫存器經參考為zmm0至zmm31。較低16個zmm暫存器之較低層級256位元覆疊於暫存器ymm0至ymm16上。較低16個zmm暫存器之較低層級128位元(ymm暫存器之較低層級128位元)覆疊於暫存器xmm0至xmm15上。特定向量友好指令格式1000對此等覆疊之暫存器檔案進行操作,如下表中所說明。
換言之,向量長度欄位959B在最大長度與一或多個其他較短長度之間選擇,其中各此較短長度為先前長度之長度的一半;且無向量長度欄位959B之指令模板對最大向量長度進行操作。另外,在一個實施例中,特定向量友好指令格式1000之B類指令模板對封裝或純量單一/雙倍精確度浮點資料及封裝或純量整數資料進行操作。純量操作為對zmm/ymm/xmm暫存器中之最低次序資料元素位置執行的操作;較高次序資料元素位置保持與其在指令之前之情形相同或經歸零,此取決於實施例。
寫入遮罩暫存器1115--在所說明之實施例中,存在8個寫入遮罩暫存器(k0至k7),各寫入遮罩暫存器之大小為64位元。在一替代實施例中,寫入遮罩暫存
器1115之大小為16位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當將通常指示k0之編碼用於寫入遮罩時,其選擇固線式寫入遮罩0xFFFF,從而有效地停用了用於彼指令之寫入遮罩。
通用暫存器1125--在所說明之實施例中,存在十六個64位元通用暫存器,其連同現有x86定址模式一起使用以定址記憶體運算元。此等暫存器係藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來參考。
純量浮點堆疊暫存器檔案(x87堆疊)1145,其上混疊有MMX緊縮整數平坦暫存器檔案1150--在所說明之實施例中,x87堆疊為用於使用x87指令集擴展對32/64/80位元浮點資料執行純量浮點操作之八元素堆疊;而MMX暫存器用於對64位元緊縮整數資料執行操作,以及保持用於在MMX與XMM暫存器之間執行的一些操作之運算元。
本發明之替代實施例可使用較寬或較窄暫存器。另外,本發明之替代實施例可使用更多、更少或不同的暫存器檔案及暫存器。
例示性核心架構、處理器及電腦架構
處理器核心可針對不同目的而以不同方式實施且實施於不同處理器中。舉例而言,此等核心之實施可包括:1)意欲用於通用計算之通用按次序核心;2)意欲用於通用計算之高效能通用無次序核心;3)意欲主要用於
圖形及/或科學(輸送量)計算之專用核心。不同處理器之實施可包括:1)包括意欲用於通用計算之一或多個通用按次序核心及/或意欲用於通用計算之一或多個通用無次序核心的CPU;及2)包括意欲主要用於圖形及/或科學(輸送量)之一或多個專用核心的共處理器。此類不同處理器導致不同電腦系統架構,其可包括:1)來自CPU之單獨晶片上之共處理器;2)與CPU處於同一封裝中之單獨晶粒上的共處理器;3)與CPU處於同一晶粒上之共處理器(在此狀況下,此類共處理器有時被稱為專用邏輯,諸如整合式圖形及/或科學(輸送量)邏輯,或稱為專用核心);及4)可包括在與所描述CPU相同之晶粒上之系統單晶片(有時被稱為應用程式核心或應用程式處理器),上述共處理器及額外功能性。接著描述例示性核心架構,其後接著描述例示性處理器及電腦架構。
例示性核心架構
按次序及無次序核心方塊圖
圖12A為說明根據本發明之實施例的例示性按次序管線及例示性暫存器重命名、無次序核發/執行管線兩者的方塊圖。圖12B為說明根據本發明之實施例的待包括於處理器中之按次序架構核心之例示性實施例及例示性暫存器重命名、無次序核發/執行架構核心兩者的方塊圖。圖12A至圖12B中之實線框說明按次序管線及按次序核心,而可選添加之虛線框說明暫存器重命名之無次序核發/執行管線及核心。假定按次序態樣為無次序態樣之子集,
將描述無次序態樣。
在圖12A中,處理器管線1200包括提取級1202、長度解碼級1204、解碼級1206、分配級1208、重命名級1210、排程(亦被稱為分派或核發)級1212、暫存器讀取/記憶體讀取級1214、執行級1216、回寫/記憶體寫入級1218、異常處置級1222及認可級1224。
圖12B展示處理器核心1290,其包括耦接至執行引擎單元1250之前端單元1230,且其兩者耦接至記憶體單元1270。核心1290可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心或混合或替代核心類型。作為另一選項,核心1290可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或其類似者。
前端單元1230包括耦接至指令快取記憶體單元1234之分支預測單元1232,該指令快取記憶體單元耦接至指令轉譯後備緩衝器(TLB)1236,該指令轉譯後備緩衝器耦接至指令提取單元1238,該指令提取單元耦接至解碼單元1240。解碼單元1240(或解碼器或解碼器單元)可解碼指令(例如,巨集指令),且以輸出之形式產生一或多個微操作、微碼入口點、微指令、其他指令或其他控制信號,該等輸出係解碼自原始指令或以其他方式反映自原始指令或來源於原始指令。解碼單元1240可使用各種不同機制來實施。合適機制之實例包括(但不限於)查找表、硬體
實施、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,核心1290包括儲存特定巨集指令之微碼(例如,儲存於解碼單元1240中或以其他方式儲存於前端單元1230內)的微碼ROM或其他媒體。解碼單元1240耦接至執行引擎單元1250中之重命名/分配器單元1252。
執行引擎單元1250包括耦接至引退單元1254及一或多個排程器單元1256之集合的重命名/分配器單元1252。排程器單元1256表示任何數目個不同排程器,包括保留站、中央指令窗等。排程器單元1256耦接至實體暫存器檔案單元1258。實體暫存器檔案單元1258中之每一者表示一或多個實體暫存器檔案,儲存一或多種不同資料類型之不同者,該等資料類型諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,為待執行之下一指令之位址的指令指標)等。在一個實施例中,實體暫存器檔案單元1258包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器檔案單元1258與引退單元1254重疊以說明可實施暫存器重命名及無次序執行之各種方式(例如,使用重排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器映射及暫存器集區等)。引退單元1254及實體暫存器檔案單元1258耦接至執行叢集1260。執行叢集1260包括一或多個執行單元1262之集合及一或多個記憶體存取單元1264之集合。執行單元1262
可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各種運算。雖然一些實施例可包括專用於特定功能或功能集合之數個執行單元,但其他實施例可包括僅一個執行單元或所有執行所有功能之多個執行單元。排程器單元1256、實體暫存器檔案單元1258及執行叢集1260經展示為可能為多個,此係因為某些實施例產生用於某些類型之資料/操作之單獨管線(例如,各自具有其自身排程器單元、實體暫存器檔案單元及/或執行叢集之純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線,且在單獨記憶體存取管線的狀況下,實施其中僅此管線之執行叢集具有記憶體存取單元1264之某些實施例)。亦應理解當使用單獨管線時,此等管線中之一或多者可為無次序核發/執行及剩餘部分為按次序的。
記憶體存取單元1264之集合耦接至記憶體單元1270,該記憶體單元包括耦接至資料快取記憶體單元1274之資料TLB單元1272,該資料快取記憶體單元耦接至層級2(L2)快取記憶體單元1276。在一個例示性實施例中,記憶體存取單元1264可包括載入單元、儲存位址單元及儲存資料單元,其中之各者耦接至記憶體單元1270中之資料TLB單元1272。指令快取記憶體單元1234進一步耦接至記憶體單元1270中之層級2(L2)快取記憶體單元1276。L2快取記憶體單元1276耦接至快取記憶體之一或
多個其他級且最終耦接至主記憶體。
作為實例,例示性暫存器重命名、無次序核發/執行核心架構可實施管線1200如下:1)指令提取1238執行提取級1202及長度解碼級1204;2)解碼單元1240執行解碼級1206;3)重命名/分配器單元1252執行分配級1208及重命名級1210;4)排程器單元1256執行排程級1212;5)實體暫存器檔案單元1258及記憶體單元1270執行暫存器讀取/記憶體讀取級1214;執行叢集1260執行執行級1216;6)記憶體單元1270及實體暫存器檔案單元1258執行回寫/記憶體寫入級1218;7)異常處置級1222中可涉及各種單元;以及8)引退單元1254及實體暫存器檔案單元1258執行認可級1224。
核心1290可支援一或多個指令集(例如,x86指令集(具有已添加較新版本之一些擴展);CA、Sunnyvale之MIPS技術公司的MIPS指令集;CA、Sunnyvale之ARM Holdings的ARM指令集(具有諸如NEON之可選額外擴展)),包括本文所述之指令。在一個實施例中,核心1290包括用以支援緊縮資料指令集擴展(例如,AVX1、AVX2)之邏輯,藉此允許許多多媒體應用使用之操作使用緊縮資料來執行。
應理解該核心可支援多執行緒處理(執行操作或執行緒之兩個或兩個以上平行集合),及可以多種方式進行此,包括時間分片多執行緒處理、同步多執行緒處理(其中單一實體核心提供用於實體核心正同步多執行緒處
理的執行緒中之每一者之邏輯核心),或其組合(例如,時間分片提取及解碼及其後之同步多執行緒處理,諸如在Intel®超執行緒技術中)。
雖然在無次序執行之情形下描述暫存器重命名,但應理解,暫存器重命名可用於按次序架構中。雖然處理器之所說明實施例亦包括單獨指令快取記憶體單元1234及資料快取記憶體單元1274以及共用L2快取記憶體單元1276,但替代性實施例可具有用於指令及資料兩者之單一內部快取記憶體,諸如層級1(L1)內部快取記憶體或多層級之內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與在核心及/或處理器外部之外部快取記憶體的組合。可替代地,所有快取記憶體可在核心及/或處理器之外部。
特定例示性按次序核心架構
圖13A至圖13B說明更特定例示性按次序核心架構之方塊圖,該核心將為晶片中之若干邏輯區塊(包括相同類型及/或不同類型之其他核心)中之一者。邏輯區塊經由具有一些固定功能邏輯、記憶體I/O介面及其他必需I/O邏輯(取決於應用)之較高頻寬互連網路(例如,環狀網路)通訊。
圖13A為根據本發明之實施例的單處理器核心以及其至晶粒上互連網路1302之連接以及其層級2(L2)快取記憶體之本端子集1304的方塊圖。在一個實施例中,指令解碼單元1300支援具有緊縮資料指令集擴展之x86指
令集。L1快取記憶體1306允許用以快取記憶體至純量及向量單元中之低延時存取。雖然在一個實施例中(為了簡化設計),純量單元1308及向量單元1310使用單獨暫存器集合(分別使用純量暫存器1312及向量暫存器1314),且在其間傳送之資料經寫入至記憶體且接著被自層級1(L1)快取記憶體1306讀取回,但本發明之替代實施例可使用不同途徑(例如,使用單一暫存器集合或包括允許在兩個暫存器檔案之間傳送資料而無需寫入及讀取回的通訊路徑)。
L2快取記憶體之本端子集1304為劃分成單獨本端子集(每個處理器核心一個)之全域L2快取記憶體的一部分。各處理器核心具有至其L2快取記憶體之自身本端子集1304的直接存取路徑。由處理器核心讀取之資料儲存於其L2快取記憶體子集1304中,且可與其他處理器核心存取其自身本端L2快取記憶體子集並行地來快速存取。由處理器核心寫入之資料儲存於其自身L2快取記憶體子集1304中且在必要時自其他子集清空。環狀網路確保共用資料之一致性。環狀網路為雙向的,以允許代理程式(諸如處理器核心、L2快取記憶體及其他邏輯區塊)在晶片內彼此通訊。每一環狀資料路徑為每一方向1012位元寬。
圖13B為根據本發明之實施例的圖13A中之處理器核心之部分的擴展視圖。圖13B包括L1快取記憶體1304之L1資料快取記憶體1306A部分,以及關於向量單元1310及向量暫存器1314之更多細節。具體言之,向量單元1310為16寬向量處理單元(VPU)(參見16寬ALU 1328),
其執行整數、單精度浮點及雙精度浮點指令中之一或多者。VPU支援藉由拌和單元1320拌和暫存器輸入,藉由數字轉換單元1322A至1322B進行數字轉換,及在記憶體輸入處藉由複製單元1324進行複製。寫入遮罩暫存器1326允許預測所得向量寫入。
圖14為根據本發明之實施例的處理器1400之方塊圖,該處理器可具有多於一個核心、可具有整合式記憶體控制器且可具有整合式圖形。圖14中之實線框說明具有單一核心1402A、系統代理程式1410、一或多個匯流排控制器單元1416之集合的處理器1400,而可選添加之虛線框說明具有多個核心1402A-N、系統代理程式單元1410中之一或多個整合式記憶體控制器單元1414之集合及專用邏輯1408的替代性處理器1400。
由此,處理器1400之不同實施可包括:1)專用邏輯1408為整合式圖形及/或科學(輸送量)邏輯(其可包括一或多個核心)且核心1402A-N為一或多個通用核心(例如,通用按次序核心、通用無次序核心、兩者之組合)之CPU;2)核心1402A-N為意欲主要用於圖形及/或科學(輸送量)之多個專用核心的共處理器;及3)核心1402A-N為多個通用按次序核心之共處理器。因此,處理器1400可為通用處理器、共處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高輸送量多核心整合(MIC)共處理器(包括30或更多核心)、嵌人式處理器或其類似者。處理器可實施於一或
多個晶片上。處理器1400可為一或多個基板之一部分及/或可使用數個製程技術中之任一者(諸如BiCMOS、CMOS或NMOS)而實施於該一或多個基板上。
記憶體階層包括核心內之快取記憶體之一或多個層級、一組或一或多個共用快取記憶體單元1406,及耦接至整合式記憶體控制器單元1414之集合的外部記憶體(未圖示)。該組共用快取記憶體單元1406可包括一或多個中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)或其他層級之快取記憶體、最末層級快取記憶體(LLC)及/或其組合。雖然在一個實施例中,基於環狀之互連單元1412使整合式圖形邏輯1408、該組共用快取記憶體單元1406及系統代理程式單元1410/整合式記憶體控制器單元1414互連,但替代性實施例可使用任何數目個眾所周知的技術用於使此類單元互連。在一個實施例中,在一或多個快取記憶體單元1406與核心1402-A-N之間維持一致性。
在一些實施例中,核心1402A-N中之一或多者能夠進行多執行緒處理。系統代理程式1410包括協調及操作核心1402A-N之彼等組件。系統代理程式單元1410可包括例如功率控制單元(PCU)及顯示單元。PCU可為或包括用於調節核心1402A-N及整合式圖形邏輯1408之功率狀態所需的邏輯及組件。顯示單元係用於驅動一或多個外部連接之顯示器。
核心1402A-N就架構指令集而言可為均質
的或異質的;亦即,核心1402A-N中之兩者或多餘兩者可能能夠實行相同指令集,而其他核心可能能夠僅實行彼指令集之子集或不同指令集。
例示性電腦架構
圖15至圖18為例示性電腦架構之方塊圖。此項技術中已知的用於以下各項之其他系統設計及組配亦為合適的:膝上型電腦、桌上型電腦、手持型PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、蜂巢式電話、便攜式媒體播放器、手持式裝置及各種其他電子裝置。一般而言,能夠併入如本文所揭示之處理器及/或其他執行邏輯之大量系統或電子裝置一般為合適的。
現參看圖15,展示根據本發明之一個實施例的系統1500之方塊圖。系統1500可包括耦接至控制器集線器1520之一或多個處理器1510、1515。在一個實施例中,控制器集線器1520包括圖形記憶體控制器集線器(GMCH)1590及輸入/輸出集線器(IOH)1550(其可能在單獨晶片上);GMCH 1590包括耦接記憶體1540及共處理器1545之記憶體及圖形控制器;IOH 1550將輸入/輸出(I/O)裝置1560耦接至GMCH 1590。可替代地,記憶體及圖形控制器中之一者或兩者整合於處理器(如本文所描述)內,記憶體1540及共處理器1545直接耦接至處理器1510及具有IOH 1550之單一晶片中之控制器集線器1520。記
憶體1540可包括例如儲存程式碼之融合管理器模組1540A,該程式碼在經執行時使得處理器執行本發明之任何方法。
圖15中用虛線指示額外處理器1515之可選性質。各處理器1510、1515可包括本文所描述之處理核心中之一或多者且可為某一版本之處理器1400。
記憶體1540可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或兩者之組合。對於至少一個施例,控制器集線器1520經由多點匯流排(諸如,前側匯流排(FSB))、點對點介面(諸如,快速路徑互連件(QPI))或類似連接件1595與處理器1510、1515通訊。
在一個實施例中,共處理器1545為專用處理器,諸如高輸送量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌人式處理器或類似者。在一個實施例中,控制器集線器1520可包括整合式圖形加速器。
就包括架構、微架構、熱、功率消耗特性及其類似者之一系列優點度量而言,在實體資源1510、1515之間可存在多種差異。
在一個實施例中,處理器1510執行控制一般類型之資料處理操作之指令。嵌入於指令內之指令可為共處理器指令。處理器1510將此等共處理器指令辨識為具有應由附接共處理器1545實行之類型。因此,處理器1510在共處理器匯流排或其他互連件上將此等共處理器指令
(或表示共處理器指令之控制信號)發出至共處理器1545。共處理器1545接受並執行所接收之共處理器指令。
現參看圖16,展示根據本發明之一實施例的第一較特定例示性系統1600之方塊圖。如圖16中所展示,多處理器系統1600為點對點互連系統,且包括經由點對點互連件1650耦接之第一處理器1670及第二處理器1680。處理器1670及1680中之各者可為某一版本之處理器1400。在本發明之一個實施例中,處理器1670及1680分別為處理器1510及1515,而共處理器1638為共處理器1545。在另一實施例中,處理器1670及1680分別為處理器1510、共處理器1545。
展示處理器1670及1680分別包括整合式記憶體控制器(IMC)單元1672及1682。處理器1670亦包括點對點(P-P)介面1676及1678作為其匯流排控制器單元之一部分;類似地,第二處理器1680包括P-P介面1686及1688。處理器1670、1680可使用點對點(P-P)介面電路1678、1688經由P-P介面1650而交換資訊。如圖16中所展示,IMC 1672及1682將處理器耦接至各別記憶體(亦即,記憶體1632及記憶體1634),其可為本端附接至各別處理器之主記憶體之部分。
處理器1670、1680可分別使用點對點介面電路1676、1694、1686、1698經由個別P-P介面1652、1654而與晶片組1690交換資訊。晶片組1690可視情況經由高效能介面1639與共處理器1638交換資訊。在一個實施例中,
共處理器1638為專用處理器,諸如高輸送量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或其類似者。
共用快取記憶體(未圖示)可包括於兩個處理器中之任一者中或在兩個處理器外部;又經由P-P互連件與處理器連接,使得可將兩個處理器中之任一者或兩者之本端快取記憶體資訊儲存於共用快取記憶體中(若處理器置放於低功率模式中)。
晶片組1690可經由介面1696耦接至第一匯流排1616。在一個實施例中,第一匯流排1616可為周邊組件互連(PCI)匯流排,或諸如PCI高速匯流排或另一第三代I/O互連件匯流排之匯流排,但本發明之範疇不限於此。
如圖16中所展示,各種I/O裝置1614可連同匯流排橋接器1618一起耦接至第一匯流排1616,該匯流排橋接器將第一匯流排1616耦接至第二匯流排1620。在一個實施例中,諸如共處理器、高輸送量MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列或任何其他處理器之一或多個額外處理器1615耦接至第一匯流排1616。在一個實施例中,第二匯流排1620可為低接腳計數(LPC)匯流排。在一個實施例中,各種裝置可耦接至第二匯流排1620,該等裝置包括(例如)鍵盤及/或滑鼠1622、通訊裝置1627及儲存單元1628(諸如,可包括指令/程式碼及資料1630之磁碟機或其他大容量儲存裝置)。此外,音訊I/O 1624可耦接至第二匯流排
1620。應注意其他架構為可能的。舉例而言,代替圖16之點對點架構,系統可實施多點匯流排或其他此架構。
現參看圖17,展示根據本發明之一實施例的第二較特定例示性系統1700之方塊圖。圖16及圖17中之相似元件帶有相似參考數字,且已自圖17省略圖16之某些態樣以便避免混淆圖17之其他態樣。
圖17說明處理器1670、1680可分別包括整合式記憶體及I/O控制邏輯(「CL」)1672及1682。因此,CL 1672、1682包括整合式記憶體控制器單元且包括I/O控制邏輯。圖17說明不僅記憶體1632、1634耦接至CL 1672、1682,而且I/O裝置1714亦耦接至控制邏輯1672、1682。舊版I/O裝置1715耦接至晶片組1690。
現參看圖18,展示根據本發明之一實施例的SoC 1800之方塊圖。圖14中之類似元件帶有相同參考數字。又,虛線框為更高階SoC上之可選特徵。在圖18中,互連單元1802耦接至:應用程式處理器1810,其包括一或多個核心202A-N之集合及共用快取記憶體單元1406;系統代理程式單元1410;匯流排控制器單元1416;整合式記憶體控制器單元1414;一組或一或多個共處理器1820,其可包括整合式圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元1830;直接記憶體存取(DMA)單元1832;及顯示單元1840,其用於耦接至一或多個外部顯示器。在一個實施例中,共處理器1820包括專用處理器,諸如網路或通訊處理器、壓縮引
擎、GPGPU、高輸送量MIC處理器、嵌入式處理器或其類似者。
本文中揭示之(例如,機制之)實施例可實施於硬體、軟體、韌體或此類實施方法之組合中。本發明之實施例可實施為執行於可規劃系統上之電腦程式或程式碼,該可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置及至少一個輸出裝置。
可將諸如圖16中所說明之程式碼1630的程式碼應用於輸入指令以執行本文中所描述之功能且產生輸出資訊。可以已知方式將輸出資訊應用於一或多個輸出裝置。出於本申請案之目的,處理系統包括具有諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器之處理器的任何系統。
程式碼可用高階程序或物件導向式程式設計語言實施以與處理系統通訊。必要時,亦可用組合語言或機器語言實施程式碼。實際上,本文中所描述之機制之範疇並不限於任何特定程式設計語言。在任何狀況下,該語言可編譯或解譯語言。
可藉由儲存於機器可讀媒體上的表示處理器內之各種邏輯的代表性指令實施至少一個實施例之一或多個態樣,該等代表性指令在由機器讀取時使得該機器製造邏輯以執行本文中所描述之技術。稱為「IP核心」之此類表示可儲存於有形機器可讀媒體上,且將其供應至各種
消費者或製造設施以載入至實際上製造邏輯或處理器之製造機器中。
此類機器可讀儲存媒體可包括(但不限於)由機器或裝置製造或形成之製品之非暫時性實體配置,包括諸如硬碟機之儲存媒體、任何其他類型之碟片(包括軟碟、光碟、緊密光碟唯讀記憶體(CD-ROM)、可重寫緊密光碟(CD-RW)及磁光碟)、諸如唯讀記憶體(ROM)之半導體裝置、諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電可抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡,或適合於儲存電子指令之任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有定義本文中描述之結構、電路、設備、處理器及/或系統特徵的設計資料(諸如,硬體描述語言(HDL))之非暫時性有形機器可讀媒體。此類實施例亦可被稱為程式產品。
仿真(包括二元轉譯、程式碼變形等)
在一些狀況下,指令轉換器可用以將指令自源指令集轉換為目標指令集。舉例而言,指令轉換器可將一指令轉譯(例如,使用靜態二元轉譯、包括動態編譯之動態二元轉譯)、變形、仿真或以其他方式轉換為待由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可處於處理器上、處理器之外、或部分處於處理器上且部分在處理器之外。
圖19為根據本發明之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將源指令集中之二元指令轉換成目標指令集中之二元指令。在所說明之實施例中,指令轉換器為軟體指令轉換器,但替代性地指令轉換器可以軟體、韌體、硬體或其各種組合來實施。圖19展示可使用x86編譯器1904來編譯以高階語言1902撰寫之規劃以產生x86二元程式碼1906,該x86二元程式碼可原生地由具有至少一個x86指令集核心之處理器1916來執行。具有至少一個x86指令集核心之處理器1916表示藉由相容地執行或以其他方式處理以下各者以便達成與具有至少一個x86指令集核心之Intel處理器實質上相同的結果而可執行與具有至少一個x86指令集核心之Intel處理器實質上相同的功能的任何處理器:(1)Intel x86指令集核心之指令集的實質部分,或(2)目標為執行於具有至少一個x86指令集核心之Intel處理器上的應用程式或其他軟體之目標程式碼版本。x86編譯器1904表示可經操作以產生x86二元程式碼1906(例如,目標程式碼)之編譯器,該x86二元程式碼可在存在或不存在額外鏈接處理的情況下在具有至少一個x86指令集核心1916之處理器上執行。類似地,圖19展示可使用替代性指令集編譯器1908來編譯高階語言1902中之規劃以產生替代性指令集二元程式碼1910,該程式碼可原生地由不具有至少一個x86指令集核心之處理器1914執行(例如,具有執行加利福尼亞州森尼維耳市之MIPS技術公司的MIPS指令集及/或執行加利福
尼亞州森尼維耳市之ARM Holdings的ARM指令集的核心的處理器)。指令轉換器1912用以將x86二元程式碼1906轉換為可原生地由不具有x86指令集核心之處理器1914執行的程式碼。此轉換程式碼不可能與替代性指令集二元程式碼1910相同,此係因為能夠進行此轉換之指令轉換器難以製造;然而,該轉換程式碼將實現一般操作且由來自替代指令集之指令構成。因此,指令轉換器1912表示軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二元程式碼1906。
100:系統
102:處理器
104:程式碼
106:二元轉譯器
108:融合管理器
110:解碼單元
112:執行單元
Claims (24)
- 一種硬體處理器,包含:一硬體二元轉譯器,用以將一指令流轉譯為一經轉譯指令流;一硬體融合管理器,用以將該經轉譯指令流之多個指令融合為一單一經融合指令,該硬體融合管理器用以:在該經轉譯指令流中檢測一載入指令及一用以讀取該載入指令之結果的指令,當該載入指令被判定為一零擴展載入指令時,將該載入指令及該用以讀取該載入指令之結果的指令融合為該單一經融合指令,以及當該載入指令被判定不為一零擴展載入指令時,不將該載入指令及該用以讀取該載入指令之結果的指令融合為該單一經融合指令;一硬體解碼單元,用以將該單一經融合指令解碼為一經解碼的單一經融合指令;以及一硬體執行單元,用以執行該經解碼的單一經融合指令。
- 如請求項1之硬體處理器,其中除非檢測到用以覆寫該零擴展載入指令之結果的較後之一指令,否則該硬體融合管理器不將該零擴展載入指令及用以讀取該零擴展載入指令之結果的指令融合為該單一經融合指令。
- 如請求項1之硬體處理器,其中若該硬體融合管理器檢測到在該零擴展載入指令及該用以讀取該零 擴展載入指令之結果的指令之間之一控制流指令時,則該硬體融合管理器不融合該零擴展載入指令及該用以讀取該零擴展載入指令之結果的指令。
- 如請求項1之硬體處理器,其中該硬體融合管理器用以:在該經轉譯指令流中檢測一用以產生結果之指令及一用以讀取該結果之儲存指令,以及將該用以產生該結果之指令及該用以讀取該結果之儲存指令融合為該單一經融合指令。
- 如請求項4之硬體處理器,其中若該硬體融合管理器在該用以產生該結果之指令與用以讀取該結果之該儲存指令之間檢測到該經轉譯指令流之任何也是用於讀取該結果的指令,則該硬體融合管理器不融合該用以產生該結果之指令及該用以讀取該結果之儲存指令。
- 如請求項4之硬體處理器,其中若該硬體融合管理器檢測到下列情況,則該硬體融合管理器不融合該用以產生該結果之指令及該用以讀取該結果之儲存指令:在該用以產生該結果之指令與該用以讀取該結果之儲存指令之間的該經轉譯指令流之任何也是用於讀取該結果的指令,以及該單一經融合指令要覆寫該結果。
- 如請求項4之硬體處理器,其中若該硬體融合管理器檢測到在該用以產生結果之指令及該用以讀取 該結果之儲存指令之間也是用於讀取該結果之該經轉譯指令流之任何指令,且該硬體融合管理器重新定位該任何指令要在該經轉譯指令流中之該儲存指令之後,則該硬體融合管理器要融合該用以產生結果之指令及該用以讀取該結果之儲存指令。
- 如請求項1之硬體處理器,其中該指令流為一巨集指令流。
- 一種用於融合指令之方法,包含:以一二元轉譯器將一指令流轉譯為一經轉譯指令流;以一融合管理器將該經轉譯指令流之多個指令融合為一單一經融合指令,該融合包含:在該經轉譯指令流中檢測一載入指令及一用以讀取該載入指令之結果的指令,當該載入指令為一零擴展載入指令時,將該載入指令及該用以讀取該載入指令之結果的指令融合為該單一經融合指令,以及當該載入指令被判定不為一零擴展載入指令時,不將該載入指令及該用以讀取該載入指令之結果的指令融合為該單一經融合指令;以一硬體處理器之一硬體解碼單元將該單一經融合指令解碼為一經解碼的單一經融合指令;以及藉由該硬體處理器之一硬體執行單元執行該經解碼的單一經融合指令。
- 如請求項9之方法,進一步包含:除非檢測到用以覆寫該零擴展載入指令之結果的較後之一指令,否則不將該零擴展載入指令及該用以讀取該零擴展載入指令之結果的指令融合為該單一經融合指令。
- 如請求項9之方法,進一步包含:該融合管理器在檢測到在該零擴展載入指令及該用以讀取該零擴展載入指令之結果的指令之間之一控制流指令時,則不融合該零擴展載入指令及該用以讀取該零擴展載入指令之結果的指令。
- 如請求項9之方法,其中該融合包含:在該經轉譯指令流中檢測一用以產生一結果之指令及一用以讀取該結果之儲存指令,以及將該用以產生該結果之指令及該用以讀取該結果之儲存指令融合為該單一經融合指令。
- 如請求項12之方法,進一步包含:若該融合管理器在該用以產生該結果之指令與該用以讀取該結果之儲存指令之間檢測到該經轉譯指令流之任何也是用於讀取該結果的指令,則不融合該用以產生該結果之指令及該用以讀取該結果之儲存指令。
- 如請求項12之方法,進一步包含:若該融合管理器檢測到以下各者,則不融合該用以產生該結果之指令及該用以讀取該結果之儲存指令:在該用以產生該結果之指令與該用以讀取該結果之儲存指令之間的該經轉譯指令流之任何也是用於讀取該結 果的指令,以及該單一經融合指令要覆寫該結果。
- 如請求項12之方法,其中該融合包含若:該融合管理器檢測到在該用以產生結果之指令及該用以讀取該結果之儲存指令之間之該經轉譯指令流之任何指令也是用於讀取該結果,且該硬體融合管理器重新定位該任何指令要在該經轉譯指令流中之該儲存指令之後,則融合該用以產生結果之指令及該用以讀取該結果之儲存指令。
- 如請求項9之方法,其中該指令流為一巨集指令流。
- 一種儲存程式碼之非暫時性機器可讀媒體,該程式碼在由一機器執行時使得該機器執行包含以下各者之一方法:以一二元轉譯器將一指令流轉譯為一經轉譯指令流;以一融合管理器將該經轉譯指令流之多個指令融合為一單一經融合指令,該融合包含:在該經轉譯指令流中檢測一載入指令及一用以讀取該載入指令之結果的指令,當該載入指令為一零擴展載入指令時,將該載入指令及該用以讀取該載入指令之結果的指令融合為該單一經融合指令,以及當該載入指令被判定不為一零擴展載入指令,不將該 載入指令及該用以讀取該載入指令之結果的指令融合為該單一經融合指令;將該單一經融合指令解碼為一經解碼的單一經融合指令;以及執行該經解碼的單一經融合指令。
- 如請求項17之非暫時性機器可讀媒體,其中該方法包含:除非檢測到用以覆寫該零擴展載入指令之結果的較後之一指令,否則不將該零擴展載入指令及該用以讀取該零擴展載入指令之結果的指令融合為該單一經融合指令。
- 如請求項17之非暫時性機器可讀媒體,其中該方法包含:若該融合管理器檢測到在該零擴展載入指令及該用以讀取該零擴展載入指令之結果的指令之間之一控制流指令時,則不融合該零擴展載入指令及該用以讀取該零擴展載入指令之結果的指令。
- 如請求項17之非暫時性機器可讀媒體,其中該方法包含:其中該融合包含:在該經轉譯指令流中檢測一用以產生一結果之指令及一用以讀取該結果之儲存指令,以及將該用以產生該結果之指令及該用以讀取該結果之儲存指令融合為該單一經融合指令。
- 如請求項20之非暫時性機器可讀媒體,其 中該方法包含:若該融合管理器在該用以產生該結果之指令與該用以讀取該結果之儲存指令之間檢測到該經轉譯指令流之任何也是用於讀取結果之指令,則不融合該用以產生該結果之指令及該用以讀取該結果之儲存指令。
- 如請求項20之非暫時性機器可讀媒體,其中該方法包含:若該融合管理器檢測到以下各者,則不融合該用以產生該結果之指令及該用以讀取該結果之儲存指令:在該用以產生該結果之指令與該用以讀取該結果之儲存指令之間的該經轉譯指令流之任何也是用於讀取該結果的指令,以及該單一經融合指令要覆寫該結果。
- 如請求項20之非暫時性機器可讀媒體,其中該方法包含:其中該融合包含若該硬體融合管理器檢測到在該用以產生結果之指令及該用以讀取該結果之儲存指令之間也是用於讀取該結果之經轉譯指令流之任何指令,且該硬體融合管理器重新定位該任何指令要在該經轉譯指令流中之該儲存指令之後,則融合該用以產生結果之指令及該用以讀取該結果之儲存指令。
- 如請求項17之非暫時性機器可讀媒體,其中該指令流為一巨集指令流。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/971,904 | 2015-12-16 | ||
US14/971,904 US10324724B2 (en) | 2015-12-16 | 2015-12-16 | Hardware apparatuses and methods to fuse instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201730746A TW201730746A (zh) | 2017-09-01 |
TWI743058B true TWI743058B (zh) | 2021-10-21 |
Family
ID=59057277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105134949A TWI743058B (zh) | 2015-12-16 | 2016-10-28 | 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10324724B2 (zh) |
TW (1) | TWI743058B (zh) |
WO (1) | WO2017105735A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324724B2 (en) * | 2015-12-16 | 2019-06-18 | Intel Corporation | Hardware apparatuses and methods to fuse instructions |
US11100001B2 (en) * | 2017-05-04 | 2021-08-24 | Sisense Ltd. | Techniques for improving space utilization in a cache |
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 |
US10884746B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US10884747B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
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 |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
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 |
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 |
US11416252B2 (en) * | 2017-12-27 | 2022-08-16 | Arm Limited | Program instruction fusion |
CN116546198A (zh) * | 2018-08-12 | 2023-08-04 | Lg电子株式会社 | 解码装置、编码装置、存储介质和发送图像的数据的装置 |
US11831631B2 (en) | 2018-11-08 | 2023-11-28 | Appdome Ltd. | Single sign-on for mobile applications using direct brokering for identity authentication |
WO2020097573A1 (en) * | 2018-11-08 | 2020-05-14 | Appdome Ltd. | Artificial intelligence mobile integration |
US11216278B2 (en) * | 2019-08-12 | 2022-01-04 | Advanced New Technologies Co., Ltd. | Multi-thread processing |
US11144324B2 (en) * | 2019-09-27 | 2021-10-12 | Advanced Micro Devices, Inc. | Retire queue compression |
CN112947997B (zh) * | 2019-12-11 | 2024-08-30 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置以及指令融合方法、代码生成方法 |
CN112965710B (zh) * | 2019-12-13 | 2024-07-05 | 阿里巴巴集团控股有限公司 | 计算图的处理方法、装置和系统 |
US20220019436A1 (en) * | 2020-07-20 | 2022-01-20 | International Business Machines Corporation | Fusion of microprocessor store instructions |
US11163571B1 (en) | 2020-07-29 | 2021-11-02 | International Business Machines Corporation | Fusion to enhance early address generation of load instructions in a microprocessor |
CN114077424A (zh) * | 2020-08-14 | 2022-02-22 | 上海芯联芯智能科技有限公司 | 扩展mips指令集处理器支持risc指令集多模系统的方法和装置 |
US12008369B1 (en) * | 2021-08-31 | 2024-06-11 | Apple Inc. | Load instruction fusion |
US20230315454A1 (en) * | 2022-03-30 | 2023-10-05 | Advanced Micro Devices, Inc. | Fusing no-op (nop) instructions |
US20240220266A1 (en) * | 2022-12-29 | 2024-07-04 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for intermediary representations of workflows for computational devices |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140149722A1 (en) * | 2012-11-27 | 2014-05-29 | Qualcomm Incorporated | Fusing Immediate Value, Write-Based Instructions in Instruction Processing Circuits, and Related Processor Systems, Methods, and Computer-Readable Media |
TW201445441A (zh) * | 2013-05-21 | 2014-12-01 | Via Tech Inc | 融合if-then指令之微處理器 |
US20150026671A1 (en) * | 2013-03-27 | 2015-01-22 | Marc Lupon | Mechanism for facilitating dynamic and efficient fusion of computing instructions in software programs |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675376B2 (en) * | 2000-12-29 | 2004-01-06 | Intel Corporation | System and method for fusing instructions |
US7398372B2 (en) * | 2002-06-25 | 2008-07-08 | Intel Corporation | Fusing load and alu operations |
US6920546B2 (en) * | 2002-08-13 | 2005-07-19 | Intel Corporation | Fusion of processor micro-operations |
US7254698B2 (en) | 2003-05-12 | 2007-08-07 | International Business Machines Corporation | Multifunction hexadecimal instructions |
US7797517B1 (en) * | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
US7818550B2 (en) * | 2007-07-23 | 2010-10-19 | International Business Machines Corporation | Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system |
US20100312991A1 (en) | 2008-05-08 | 2010-12-09 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
US8856496B2 (en) * | 2010-04-27 | 2014-10-07 | Via Technologies, Inc. | Microprocessor that fuses load-alu-store and JCC macroinstructions |
US8850164B2 (en) * | 2010-04-27 | 2014-09-30 | Via Technologies, Inc. | Microprocessor that fuses MOV/ALU/JCC instructions |
US9417855B2 (en) | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US20140047221A1 (en) * | 2012-08-07 | 2014-02-13 | Qualcomm Incorporated | Fusing flag-producing and flag-consuming 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 |
US10671393B2 (en) * | 2015-04-24 | 2020-06-02 | International Business Machines Corporation | Techniques for facilitating cracking and fusion within a same instruction group |
US10579389B2 (en) * | 2015-11-02 | 2020-03-03 | Arm Limited | Fusion of instructions by delaying handling of a partial subset of a fusible group of instructions |
US10324724B2 (en) * | 2015-12-16 | 2019-06-18 | Intel Corporation | Hardware apparatuses and methods to fuse instructions |
-
2015
- 2015-12-16 US US14/971,904 patent/US10324724B2/en active Active
-
2016
- 2016-10-28 TW TW105134949A patent/TWI743058B/zh active
- 2016-11-16 WO PCT/US2016/062243 patent/WO2017105735A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140149722A1 (en) * | 2012-11-27 | 2014-05-29 | Qualcomm Incorporated | Fusing Immediate Value, Write-Based Instructions in Instruction Processing Circuits, and Related Processor Systems, Methods, and Computer-Readable Media |
US20150026671A1 (en) * | 2013-03-27 | 2015-01-22 | Marc Lupon | Mechanism for facilitating dynamic and efficient fusion of computing instructions in software programs |
TW201445441A (zh) * | 2013-05-21 | 2014-12-01 | Via Tech Inc | 融合if-then指令之微處理器 |
Non-Patent Citations (1)
Title |
---|
S. Hu, J. E. Smith, "Using Dynamic Binary Translation to Fuse Dependent Instructions", Proc. of the 2nd Intl Symp. on Code Generation and Optimization, pp. 21 3-224, Mar. 2004. |
Also Published As
Publication number | Publication date |
---|---|
TW201730746A (zh) | 2017-09-01 |
US10324724B2 (en) | 2019-06-18 |
WO2017105735A1 (en) | 2017-06-22 |
US20170177343A1 (en) | 2017-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI743058B (zh) | 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 | |
TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
US10275257B2 (en) | Coalescing adjacent gather/scatter operations | |
CN113076139B (zh) | 用于执行指令以转换成16位浮点格式的系统和方法 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI761367B (zh) | 用於融合乘加運算的系統、裝置及方法 | |
TWI514268B (zh) | 合併遮罩圖案之指令 | |
TWI489381B (zh) | 多暫存器散布指令 | |
TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
TWI740859B (zh) | 用於跨步的載入(strided load)的系統、設備及方法 | |
KR102508075B1 (ko) | 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치 | |
KR102462174B1 (ko) | 벡터 비트 셔플을 수행하기 위한 방법 및 장치 | |
TWI610228B (zh) | 用於執行向量位元反轉和交叉的方法和設備 | |
TWI575451B (zh) | 用於遮罩及向量暫存器之間的可變擴充的方法及裝置 | |
TW201506782A (zh) | 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及指令 | |
TWI486872B (zh) | 向量緊縮壓縮及重複之實施系統、設備和方法 | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
TW201810029A (zh) | 用於跨步載入的系統、設備及方法 | |
CN111831334B (zh) | 经改进的插入指令的装置和方法 | |
CN107003848B (zh) | 用于融合乘法-乘法指令的装置和方法 | |
TWI733718B (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 | |
CN107077333B (zh) | 用于实行向量位聚集的方法和装置 | |
TW201732573A (zh) | 用於跨步載入(stride load)的系統、設備及方法 | |
CN107003841B (zh) | 用于融合加法-加法指令的装置和方法 | |
TW201810020A (zh) | 用於累乘的系統、設備及方法 |