TWI567640B - 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器 - Google Patents

用於不引發算術旗標的三輸入運算元加法指令之方法及處理器 Download PDF

Info

Publication number
TWI567640B
TWI567640B TW101149337A TW101149337A TWI567640B TW I567640 B TWI567640 B TW I567640B TW 101149337 A TW101149337 A TW 101149337A TW 101149337 A TW101149337 A TW 101149337A TW I567640 B TWI567640 B TW I567640B
Authority
TW
Taiwan
Prior art keywords
field
instruction
processor
result
bit
Prior art date
Application number
TW101149337A
Other languages
English (en)
Other versions
TW201346747A (zh
Inventor
瓦迪K 費哈利
維諾德 歌波
詹姆斯D 古爾福德
艾爾丁克 歐奏克
吉伯特M 沃里斯
柯克S 雅普
西恩M 格利
馬丁G 迪克森
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201346747A publication Critical patent/TW201346747A/zh
Application granted granted Critical
Publication of TWI567640B publication Critical patent/TWI567640B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

用於不引發算術旗標的三輸入運算元加法指令之方法及處理器 發明領域
本發明大體上係有關於計算科學,且更具體而言係有關於用於密碼應用程式之不引發算術旗標的三輸入運算元向量加法指令。
發明背景
指令執行管線及純量處理與向量處理
圖1示出由半導體晶片上之邏輯電路實行的處理核心100之高階圖。該處理核心包括管線101。該管線由多個階段組成,每一階段係設計來執行多步驟處理程序中的一特定步驟,完全執行一程式碼指令需要該多步驟處理程序。此等階段通常至少包括:1)指令擷取及解碼;2)資料擷取;3)執行;4)回寫。執行階段對資料執行特定操作,其中該特定操作係由在先前階段中(例如上述步驟1)中)擷取及解碼的指令予以識別,該資料係由相同指令予以識別且係在另一先前階段中(例如上述步驟2)中)擷取。被操作的資料通常擷取自(通用)暫存器儲存空間102。在操作完成時 產生的新資料亦通常被「回寫」至暫存器儲存空間(例如在上述步驟4)中)。
與執行階段相關聯之邏輯電路通常由多個「執行單元」或「功能單元」103_1至103_N組成,每一「執行單元」或「功能單元」103_1至103_N係設計來執行其自有之獨特操作子集(例如,第一功能單元執行整數數學操作,第二功能單元執行浮點指令,第三功能單元執行自/至快取記憶體/記憶體的載入/儲存操作等)。由所有功能單元執行之所有操作的集合對應於處理核心100所支援的「指令集」。
如下兩種類型的處理器架構在電腦科學領域中已得到廣泛認可:「純量」及「向量」。純量處理器係設計來執行對單個資料集執行操作的指令,而向量處理器係設計來執行對多個資料集執行操作的指令。圖2A及圖2B呈現比較實例,該實例演示純量處理器與向量處理器之間的基本差異。
圖2A示出純量AND指令之實例,其中對單個運算元集合A以及B一起進行AND運算,以得出單一(或「純量」)結果C(亦即,AB=C)。相反,圖2B示出向量AND指令之實例,其中並行地分別對兩個運算元集合A/B以及D/E一起進行AND運算,以同時產生向量結果C、F(亦即,A.AND.B=C且D.AND.E=F)。作為一術語,「向量」為具有多個「元件」之資料元件。例如,向量V=Q,R,S,T,U具有五個不同元件:Q、R、S、T以及U。示範性向量V之 「大小」為五(因為其具有五個元件)。
圖1亦展示存在向量暫存器空間104,其與通用暫存器空間102不同。具體而言,通用暫存器空間102名義上用來儲存純量值。因而,當任何執行單元執行純量操作時,該等執行單元名義上使用自通用暫存器儲存空間102調入的運算元(且將結果回寫至通用暫存器儲存空間中)。相反,當任何執行單元執行向量操作時,該等執行單元名義上使用自向量暫存器空間104調入的運算元(且將結果回寫至向量暫存器空間中)。記憶體之不同區域可同樣經分配來儲存純量值及向量值。
算術旗標
算術旗標用來回應於操作結果而重新導引程式流程。例如,在條件分支的狀況下,可撰寫程式碼以進行以下操作:i)若結果>1,則採取第一路徑;ii)若結果=1,則採取第二路徑;以及iii)若結果<1,則採取第三路徑。因此,計算結果之執行單元亦經設計來設定算術旗標以指示哪一結果適用。後續條件分支指令查看旗標設定以決定程式碼將要採取哪一路徑。
算術旗標亦可用來指示在指令之執行期間已出現的關注的問題或事項。例如,在「溢位」條件或「進位輸出」條件的狀況下,用來裝載且/或保存數學運算(諸如加法)之結果的佈線之位元寬度並非足夠大的。例如,加法運算之正確結果的寬度可係65個位元,然而,可利用來傳送且/或儲存結果之硬連線位元寬度係僅64個位元。在此狀 況下,引發算術「旗標」,其促使CPU硬體及/或軟體分支入恢復或處置機構中來處理引發旗標之問題。
圖1展示存在旗標邏輯108。旗標邏輯108係特殊邏輯電路,其係設計來偵測且至少啟動算術旗標之處置。在問題或錯誤旗標(諸如溢位或進位輸出)的狀況下,引發旗標之發佈的解析度實質上對應於程式之執行中的效能衝擊或無效率。亦即,通常,需要大量CPU週期來解析引發旗標之條件。在圖1中觀察旗標邏輯108為耦接至執行單元中每一者。
密碼雜湊
圖3展示SHA密碼雜湊演算法,其用來例如產生檔案之數位簽章。在典型應用程式中,將五個不同的32位元常數用作A、B、C、D、E輸入301之初始集合。經由被稱為「循環」之雜湊過程302之全部五個通道的進行產生A、B、C、D、E輸出值303之集合。通常,對於來自初始檔案之A、B、C、D、E輸入301之每一初始集合執行60個循環或80個循環之連續順序。此處,將在先循環之A、B、C、D、E輸出結果303反饋304為用於「下一」循環之A、B、C、D、E輸入301。60個循環或80個循環之後的A、B、C、D、E輸出303之最終值對應於用於自檔案取得之A、B、C、D、E輸入301之初始集合之簽章或加密形式。
如圖3中所觀察到,雜湊過程302包括一連串加法305、三輸入運算元邏輯函數F 306、旋轉左移5運算 307,及,旋轉左移30運算308。邏輯函數F 306可係正在執行何循環之函數。例如,在具有80個循環之示範性實行方案中,對於第一二十個循環,F=(B AND C)OR((NOT B)AND D),對於第二二十個循環,F=B XOR C XOR D,對於循環41至循環60,F=(B AND C)OR(B AND D)OR(C AND D),且,對於循環61至循環80,F=B XOR C XOR D(再次)。
請注意,資料內容需由雜湊演算法雜湊之檔案或其他資料結構被分解為(例如,64位元)塊。每一64位元塊經擴充以形成引入至雜湊過程之不同循環中的60至80個Wt值。
已在半導體處理器上執行之先前已知密碼雜湊過程已使用整數指令執行,其中,若求和產生溢位或進位輸出,則執行來計算用於下一循環之A值的加法將引發算術旗標。因為密碼雜湊計算係高度密集的,所以算術旗標之引發對應於顯著的效能衝擊。
依據本發明之一實施例,係特地提出一種方法,其包含:在實行於一半導體晶片上之一指令執行管線內執行以下步驟:經由一單個指令之執行對三輸入向量運算元求和;以及,即使該求和之一結果產生比設計來傳送該求和之電路能夠傳送的位元更多的位元亦不引發任何算術旗標。
100‧‧‧處理核心
102‧‧‧(通用)暫存器儲存空間
103_1-103_N‧‧‧功能單元/執行單元
104‧‧‧向量暫存器空間
108‧‧‧旗標邏輯
301‧‧‧輸入
302‧‧‧雜湊過程處理
303‧‧‧輸出值/輸出結果
305‧‧‧一連串加法
306‧‧‧三輸入運算元邏輯函數F
307、308‧‧‧運算
310‧‧‧區部
401‧‧‧初始化
402‧‧‧第一指令(TERNLOG)
403‧‧‧額外運算元X/額外運算元X 403
404‧‧‧ROTATELEFT_5指令
405‧‧‧VPADD指令
406‧‧‧第二VPADD指令
407‧‧‧ROTATELEFT_30指令
501‧‧‧3:2節省進位加法器(CSA)501
502‧‧‧傳統加法器
503~505‧‧‧輸入暫存器
506、507‧‧‧輸出
508‧‧‧最終和
510~514‧‧‧執行
602‧‧‧VEX前綴
605‧‧‧REX欄位
615‧‧‧運算碼對映欄位
620‧‧‧VEX.vvvv
625‧‧‧前綴編碼欄位
630‧‧‧實際運算碼欄位
640‧‧‧Mod R/M位元組
642‧‧‧基本操作欄位
644‧‧‧暫存器索引欄位
646‧‧‧R/M欄位
650‧‧‧SIB位元組
652‧‧‧SS
654‧‧‧SIB.xxx
656‧‧‧SIB.bbb
662‧‧‧位移欄位
664‧‧‧W欄位
668‧‧‧大小欄位
672‧‧‧立即欄位(IMM8)
674‧‧‧運算碼欄位
700‧‧‧一般向量友善指令格式
705‧‧‧非記憶體存取
710‧‧‧非記憶體存取、完全捨入控制型操作
712‧‧‧非記憶體存取、寫入遮罩控制、部分捨入控制型操作
715‧‧‧資料轉換型操作
717‧‧‧非記憶體存取、寫入遮罩控制、vsize型操作
720‧‧‧記憶體存取
725‧‧‧記憶體存取、暫時
727‧‧‧記憶體存取、寫入遮罩控制
730‧‧‧記憶體存取、非暫時
740‧‧‧格式欄位
742‧‧‧基本操作欄位
744‧‧‧暫存器位址欄位
746‧‧‧修飾符欄位
750‧‧‧擴增操作欄位
752‧‧‧α欄位
752A‧‧‧RS欄位
752A.1‧‧‧捨入
752A.2‧‧‧資料轉換
752B‧‧‧收回提示欄位
752B.1‧‧‧暫時
752B.2‧‧‧非暫時
752C‧‧‧寫入遮罩控制(Z)欄位
754‧‧‧β欄位
754A‧‧‧捨入控制欄位
754B‧‧‧資料轉換欄位
754C‧‧‧資料調處欄位
756‧‧‧抑制所有浮點異常(SAE)欄位
757A‧‧‧RL欄位
757A.1‧‧‧捨入欄位
757A.2‧‧‧向量長度(VSIZE)
757B‧‧‧廣播欄位
758‧‧‧捨入操作控制欄位
759A‧‧‧捨入操作欄位
759B‧‧‧向量長度欄位
760‧‧‧比例欄位
762A‧‧‧位移欄位
762B‧‧‧位移因數欄位
764‧‧‧資料元件寬度欄位
768‧‧‧類別欄位
768A‧‧‧類別A
768B‧‧‧類別B
770‧‧‧寫入遮罩欄位
772‧‧‧立即欄位
774‧‧‧完整的運算碼欄位
800‧‧‧特定向量友善指令格式
802‧‧‧EVEX前綴
805‧‧‧REX欄位
810‧‧‧REX’欄位
815‧‧‧運算碼對映欄位
820‧‧‧EVEX.vvvv欄位
825‧‧‧前綴編碼欄位
830‧‧‧實際運算碼欄位
840‧‧‧MOD R/M欄位
842‧‧‧MOD欄位
844‧‧‧Reg欄位
846‧‧‧R/M欄位
854‧‧‧SIB.xxx
856‧‧‧SIB.bbb
900‧‧‧暫存器架構
910‧‧‧向量暫存器
915‧‧‧寫入遮罩暫存器
925‧‧‧通用暫存器
945‧‧‧純量浮點堆疊暫存器檔案
950‧‧‧MMX緊縮整數平板暫存器檔案
1000‧‧‧處理器管線
1002‧‧‧擷取階段
1004‧‧‧長度解碼階段
1006‧‧‧解碼階段
1008‧‧‧分配階段
1010‧‧‧重新命名階段
1012‧‧‧排程階段
1014‧‧‧暫存器讀取/記憶體讀取階段
1016‧‧‧執行階段
1018‧‧‧回寫/記憶體寫入階段
1022‧‧‧異常處置階段
1024‧‧‧確認階段
1030‧‧‧前端單元
1032‧‧‧分支預測單元
1034‧‧‧指令快取記憶體單元
1036‧‧‧指令轉譯後備緩衝器(TLB)
1038‧‧‧指令擷取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧重新命名/分配器單元
1054‧‧‧引退單元
1056‧‧‧排程器單元
1058‧‧‧實體暫存器檔案單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料TLB單元
1074‧‧‧資料快取記憶體單元
1076‧‧‧L2快取記憶體單元
1090‧‧‧處理器核心
1100‧‧‧指令解碼器
1102‧‧‧互連網路
1104‧‧‧L2快取記憶體局域子集
1106‧‧‧L1快取記憶體
1106A‧‧‧L1資料快取記憶體
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧拌和單元
1122A、1122B‧‧‧數值轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1128‧‧‧寬度為16之ALU
1200‧‧‧處理器
1202A-N‧‧‧核心
1204A-N‧‧‧快取記憶體單元
1206‧‧‧共享快取記憶體單元
1208‧‧‧專用邏輯
1210‧‧‧系統代理
1212‧‧‧環式互連單元
1214‧‧‧整合型記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300‧‧‧系統
1310、1315‧‧‧處理器
1320‧‧‧控制器集線器
1340‧‧‧記憶體
1345‧‧‧共處理器
1350‧‧‧輸入/輸出集線器
1360‧‧‧輸入/輸出(I/O)裝置
1390‧‧‧圖形記憶體控制器集線器(GMCH)
1395‧‧‧連接
1400‧‧‧第一更特定的示範性系統
1414、1514‧‧‧I/O裝置
1415‧‧‧額外處理器
1416‧‧‧第一匯流排
1418‧‧‧匯流排橋接器
1420‧‧‧第二匯流排
1422‧‧‧鍵盤及/或滑鼠
1424‧‧‧音訊I/O
1427‧‧‧通訊裝置
1428‧‧‧儲存單元
1430‧‧‧指令/程式碼及資料
1432、1434‧‧‧記憶體
1438‧‧‧共處理器
1439‧‧‧高效能介面
1450‧‧‧點對點互連
1452、1454、1486、1488‧‧‧P-P介面
1470‧‧‧第一處理器
1472‧‧‧整合型記憶體控制器(IMC)單元
1476、1478‧‧‧點對點(P-P)介面
1480‧‧‧第二處理器
1482‧‧‧整合型記憶體控制器(IMC)單元
1490‧‧‧晶片組
1494、1498‧‧‧點對點介面電路
1496‧‧‧介面
1500‧‧‧第二更特定的示範性系統
1515‧‧‧舊式I/O裝置
1600‧‧‧系統單晶片
1602‧‧‧互連單元
1610‧‧‧應用處理器
1620‧‧‧共處理器
1630‧‧‧靜態隨機存取記憶體(SRAM)單元
1632‧‧‧直接記憶體存取(DMA)單元
1640‧‧‧顯示單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進位碼
1708‧‧‧替代性指令集編譯器
1710‧‧‧替代性指令集二進位碼
1712‧‧‧指令轉換器
1714‧‧‧不具有至少一個x86指令集核心之處理器
1716‧‧‧具有至少一個x86指令集核心之處理器
在隨附圖式之各圖中藉由實例而非限制來說明本發明,其中相似參考符號指示類似元件,且其中:圖1展示出指令執行管線;圖2A及圖2B比較純量與向量處理;圖3完全展示加密處理;圖4展示改良的加密處理,其利用向量指令且其對於加法指令不引發算術旗標;圖5a展示用於VPADD指令之邏輯設計;圖5b展示可由具有向量TERNLOQ、SHIFTLEFT及VPADD指令之處理器執行的方法;圖6A例示出示範性AVX指令格式;圖6B例示出圖6A的哪些欄位組成完整的運算碼欄位以及基本操作欄位;圖6C例示出圖6A的哪些欄位組成暫存器索引欄位;圖7A至圖7B係例示根據本發明之實施例之一般向量友善指令格式及其指令模板的方塊圖;圖8A至圖8D係例示根據本發明之實施例之示範性特定向量友善指令格式的方塊圖;圖9係根據本發明之一實施例之暫存器架構的方塊圖;圖10A係例示根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名亂序發佈/執行管線;圖10B係例示如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架 構核心,上述兩者將包括於根據本發明之實施例的處理器中;圖11A至圖11B例示出更特定的示範性循序核心架構之方塊圖,該核心將係晶片中的若干邏輯區塊(包括相同類型及/或不同類型的其他核心)中之一者;圖12係根據本發明之實施例之處理器的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件;圖13係根據本發明之一實施例之示範性系統的方塊圖;圖14係根據本發明之一實施例之第一更特定的示範性系統之方塊圖;圖15係根據本發明之一實施例之第二更特定的示範性系統之方塊圖;圖16係根據本發明之一實施例之SoC(系統單晶片)的方塊圖;圖17係對照根據本發明之實施例之軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。
詳細說明
概述
圖4展示用於指令之核的虛擬碼,該等指令經最佳化以用於執行圖4中所觀察到的密碼雜湊過程之循環。 可重複指令之核以執行由雜湊過程喚起之循環數(例如,60個循環、80個循環等)。此外,將指令之核實行為向量指令,以便可並行地處理不同的A、B、C、D、E輸入/輸出之多個集合。
在圖4之特定實例中,存在正由核處理之A、B、C、D、E輸入/輸出之三個集合(集合_1=A0、B0、C0、D0、E0;集合_2=A1、B1、C1、D1、E1;集合_3=A2、B2、C2、D2、E2)。如此,可對於不同的A、B、C、D、E值之三個完整集合同時執行圖4之加密流程。
在一特定實行方案中,下層處理核心將支援達512個位元的向量大小。若每一向量元件對應於32個位元,則圖4之核可同時處理16個獨立的檔案。然而,一般技術者將理解,向量之大小可隨實行方案不同而不同。
在初始化401期間,向量暫存器R1至向量暫存器R5係分別定義來儲存用於將被並行地處理之三個集合的A、B、C、D及E值。R6及R7係分別定義來儲存用於三個集合中每一者的Wt及Kt值。在典型實行方案中,Wt預期對於每一集合係獨特的,而Kt越過集合可係相同的。若Kt越過集合係相同的,則R7將保存三個相等定值的元件。R8係設定為等於R2。
第一指令(TERNLOG)402執行邏輯函數F。在圖4中所觀察到的實施例中,TERNLOG指令接受儲存在暫存器R8、R3及R4中之三個向量作為輸入運算元。回憶暫存器R8、R3及R4分別儲存用於三個集合之B、C及D,且 自圖3之論述回憶邏輯函數F對B、C及D操作,請注意,TERNLOG指令同時對於ABCDE值之全部三個集合(在下文僅描述為「集合」)執行邏輯函數F。將由指令產生之結果向量(其具有三個元件,三個集合中每一者一個F結果)儲存回R8中。因此,圖4中所觀察到的特定TERNLOG指令在其將其結果覆寫剛剛用作輸入運算元之資訊的意義上係「破壞性的」。
在又一實施例中,TERNLOG指令係特殊指令,其另外使用額外運算元X 403,額外運算元X 403定義需對三輸入運算元執行之邏輯運算。亦即,TERNLOG指令之邏輯電路係設計來執行許多不同的邏輯函數。然而,對於指令之任何單個執行,執行此等邏輯函數中之僅一邏輯函數。執行之特定邏輯函數F係由輸入運算元X 403定義。
例如,若輸入運算元X 403:i)具有值00000,則F=(B AND C)OR((NOT B)ANDD);ii)具有值00001,則F=B XOR C XOR D;iii)具有值00010,則F=(B AND C)OR(B AND D)OR(C AND D)。回憶相對於關於基於特定循環疊代哪一函數F適用之圖3論述的實例,請注意,若輸入運算元403具有以下值:i)對於第一二十個循環之00000;ii)對於循環21至循環40及循環61至循環80之00001;以及iii)對於循環41至循環60之00010,則可對於全部80個循環重複圖4之核。
在又一實施例中,輸入運算元X 403係使用即時運算元予以指定。即時運算元(如此項技術中已知的)係在指 令格式本身中而非在記憶體或暫存器空間中定義之輸入運算元。在此狀況下,若輸入運算元403係保存在暫存器空間中,則用來實行全部80個循環之碼的覆蓋區將大於可實現之碼的覆蓋區,此係因為對於不同F函數不可執行相同的實體TERNLOG指令。換言之,不同的實體TERNLOG指令將必須用於輸入運算元403之每一不同值。
在已將來自TERNLOG指令之執行的結果向量儲存於R8中之後,在R1之內容上執行ROTATELEFT_5指令404。亦即,將儲存在R1中之向量的A元件旋轉至左側5個空間。在一實施例中,旋轉相似於桶形移位,此係因為移位出至左側的位元重新出現在右側。旋轉左移5運算之結果係儲存在R9中。在此狀況下,ROTATELEFT_5指令404係非破壞性的,此係因為結果資料未覆寫R1中之原始運算元資料。
在又一實施例中,ROTATELEFT_5指令404實際上實行為ROTATELEFT指令,其中旋轉至左側之空間之數目(5)係藉由輸入運算元(暫存器或記憶體空間中的,或,具有即時運算元的)來指定。在另一實施例中,ROTATELEFT_5指令404實際上實行為ROTATE指令,其中旋轉的空間之數目(5)及旋轉方向(左)係藉由輸入運算元資訊(每一輸入運算元資訊再次可自暫存器空間呼叫,或,嵌入指令內作為即時運算元)來指定。
在又一方法中,ROTATELEFT指令係設計來在單個微操作(具有「本文書」旋轉電路)中執行旋轉,以最小 化完全執行ROTATELEFT指令所需要之時鐘週期之數目。
在ROTATELEFT_5指令之後執行405 VPADD指令。在圖4中所觀察到的實施例中,VPADD指令接受三個不同的向量且對該等向量進行加法運算,該等向量分別儲存在暫存器R9、R8及R5中。此處,R9對應於ROTATETLEFT_5指令404之結果,R8對應於由TERNLOG指令402執行之邏輯運算F之結果,且R5對應於E值。將此等值加在一起對應於在單個指令中執行由圖3之區部310概括之加法。
在又一實施例中,即使VPADD指令405執行數值加法,亦未實行算術旗標。此處,回憶數學加法可想像得到地產生對於硬體過大而不可傳送或儲存的結果,且此狀況傳統上將引發溢位旗標或進位輸出旗標,在一實行方案中,當執行VPADD指令405時有目的地不使用此等旗標。
切合觀點為VPADD指令405(儘管針對數學函數)最終使用於密碼雜湊過程而非實質計算中。如此,對於相同輸入資料之可重複性係更重要的目標(而非正確數學結果)。換言之,只要相同輸入檔案在多循環密碼雜湊過程結束時將產生相同的密碼簽章,密碼雜湊過程即為有效的。
如此,可忽略延伸超過硬體之資料寬度的任何溢位位元或進位輸出位元,且,如此亦可忽略回應於該等位元的產生將通常引發之算術旗標。此處,再次,由加法運算產生之低位位元(亦即,消耗硬體之完整寬度的結果之位 元)對於雜湊目的係足夠的,因為該等低位位元對於相同輸入資料將重複相同。
可以多種方式實行算術旗標之去能,該等方式諸如設計圖1之旗標邏輯108以忽略由執行VPADD指令的執行單元在其執行VPADD指令時產生之任何旗標,或設計執行單元以在其執行VPADD指令時不產生任何算術旗標。在後者方法之一實施例中,執行單元是否產生算術旗標係可設定參數(例如,作為嵌入指令格式內之即時運算元)。
如此,當對於密碼雜湊過程編譯VPADD指令時,產生的碼將產生VPADD指令格式之即時值,該即時值「關閉」算術旗標產生。相反,若將VPADD指令用於涉及有意義的資料計算之其他目的,則編譯器可替代地產生碼,該碼產生VPADD指令格式中之即時值,該即時值「開啟」算術旗標產生。
請注意,圖4中繪示的VPADD指令405係破壞性的,此係因為加法之結果覆寫最初提供SHIFTLEFT_5指令404之結果的資料。
在執行VPADD指令405之後,執行第二VPADD指令406,第二VPADD指令406使先前VPADD指令之結果(儲存在R9中)與分別儲存在R6及R7中之Wt及Kt常數相加。第二VPADD指令406亦係破壞性的,此係因為其將其結果寫入至R9中(R9為用於第二VPADD指令406之輸入運算元的來源)。請注意,第二VPADD指令406有 效地執行圖3之區部311中概括之加法。
如此,當第二VPADD指令406已完成其運算時,用於核之加法運算完成。因此,在一實行方案中,有目的地選取VPADD指令來將三個運算元相加,因為全部密碼核僅具有六個總加法運算元。換言之,如三運算元加法指令,需要VPADD指令之僅兩個執行404、405來執行用於核之全部加法。在此狀況下,在一實施例中,自三個數目正在相加以後可產生旗標,且將此等旗標儲存在遮罩暫存器中。
在第二VPADD指令406之執行之後,執行ROTATELEFT_30指令407,ROTATELEFT_30指令407將R2中之B值旋轉三十個位置至左側,且將結果儲存於R10中。類似早先的ROTATELEFT_5指令406,ROTATELEFT_30指令407係非破壞性的,此係因為仍使用其輸入運算元資訊(如以下將進一步描述)。ROTATELEFT_30指令可為ROTATELEFT指令或ROTATE指令,且可利用一或多個輸入運算元(例如,即時運算元)來指定旋轉之位元位置之數目及/或旋轉方向。
如圖4中所觀察到,在已執行ROTATELEFT_30指令407之後,分別在暫存器R9、R1、R10、R3及R4中找到用於核之下一疊代(亦即,用於下一循環)之A、B、C、D、E值。此處,參考圖3及圖4:i)用於下一循環之A值對應於由第二VPADD指令406執行之加法之結果,該結果儲存於R9中;ii)用於下一循環之B值對應於用於剛剛執 行的循環之A值,該等A值儲存在R1中;iii)用於下一循環之C值對應於SHIFTLEFT_30指令之結果,該結果儲存在R10中;iv)用於下一循環之D值對應於用於剛剛執行的循環之C值,該等C值儲存在R3中;且,v)用於下一循環之E值對應於用於剛剛執行的循環之D值,該等D值儲存在R4中。
圖5a展示用於執行單元之邏輯電路的邏輯設計,該執行單元可執行VPADD指令。根據圖5a之邏輯設計,加法電路包括3:2節省進位加法器(CSA)501饋進傳統加法器502之一階段。如此項技術中已知的,節省進位加法器501係數位加法器,該數位加法器以二進位方式計算三個或更多n-位元數之和。此處,相加的三個二進位數預先儲存在輸入暫存器503、504、505中。參考圖4,作為一實例,在VPADD指令405的狀況下,暫存器503、504、505將分別儲存R9、R8及R5之內容,作為指令管線的資料擷取處理之部分。
傳統的節省進位加法器產生兩個輸出506、507(每一輸出可為與輸入相同的維度)。一輸出506係部分和位元之順序,且另一輸出507係進位位元之順序。如圖5A中所觀察到,在輸出506處產生的部分和位元由傳統加法器502相加,以產生最終和508。在微碼實行方案中,可使用單個微操作達成由VPADD指令執行之求和。回憶亦可使用單個微操作實行以上論述之ROTATELEFT_[5/30]指令,請注意,可使用組合的總共四個微操作來執行圖4之 指令404至指令407。
在一實施例中,VPADD指令可能係破壞性的(覆寫來源運算元),或,藉由以指令格式指定之控制欄位而係非破壞性的(不覆寫來源運算元)。最終,至少在VPADD指令正執行用於密碼雜湊應用程式之指令時,忽略進位位元507。再次,如以上所述,可選擇性地啟用/去能(例如,藉由即時運算元)進位位元及任何算術旗標邏輯,或,邏輯硬體之設計可永久地忽略/不使用進位位元及任何算術旗標邏輯。
圖5b展示出可由具有以上論述之TERNLOG、ROTATELEFT及VPADD指令之處理器執行的方法。如圖5b中所觀察到,執行510 TERNLOG指令以對三輸入向量執行邏輯函數F,該等三輸入向量分別保存B、C及D值的多個元件。TERNLOG指令具有額外輸入運算元,該額外輸入運算元指定將要為正在執行之特殊循環執行的適當函數F。然後執行511 ROTATELEFT指令,該ROTATELEFT指令旋轉保存A值之多個元件的向量輸入之元件。可在單個微操作中執行ROTATELEFT指令。
接著執行512第一VPADD指令,該第一VPADD指令將指令510、511之結果以及保存E值之多個元件的第三輸入向量相加。可在單個微操作中執行VPADD指令,且忽略來自加法之任何進位輸出或溢位。無算術旗標引發。
然後執行513第二VPADD指令,該第二VPADD指令將指令512之結果與分別保存Wt及Kt值的第二輸入 向量及第三輸入向量相加。可在單個微操作中執行第二VPADD指令,且忽略來自加法之任何進位輸或溢位。無算術旗標引發。
接著執行514另一ROTATELEFT指令,該另一ROTATELEFT指令旋轉具有A值之多個元件的輸入向量。
在此點上,將指令513之結果認定為具有用於下一循環之A值。將具有用於剛剛執行的循環之A值的向量識別為具有用於下一循環之B值。將指令514之結果認定為具有用於下一循環之C值。將具有用於剛剛執行的循環之C值的向量認定為具有用於下一循環之D值,且,將具有用於剛剛執行的循環之D值的向量認定為具有用於下一循環之E值
然後過程重複515以計算下一循環。分支指令可用來實現迴路返回至下一循環。
示範性指令格式
本文中描述之指令之實施例可以不同格式來體現。例如,本文中描述之指令之可實施為VEX格式、一般向量友善格式或其他格式。下文論述VEX格式及一般向量友善格式之細節。另外,下文詳述示範性系統、架構及管線。可在此等系統、架構及管線上執行指令之實施例,但不限於詳述之彼等系統、架構及管線。
VEX指令格式
VEX編碼允許指令具有兩個以上運算元,且允 許SIMD向量暫存器的長度超過128個位元。VEX前綴的使用提供三運算元(或更多)語法。例如,先前兩運算元指令執行諸如A=A+B的運算,此運算會覆寫來源運算元。VEX前綴的使用使得運算元能夠執行諸如A=B+C的非破壞性運算。
圖6A展示出示範性AVX指令格式,其包括VEX前綴602、實際運算碼欄位630、Mod R/M位元組640、SIB位元組650、位移欄位662及IMM8 672。圖6B展示出圖6A的哪些欄位組成完整的運算碼欄位674及基本操作欄位642。圖6C例示圖6A的哪些欄位組成暫存器索引欄位644。
VEX前綴(位元組0-2)602係按三位元組形式予以編碼。第一位元組係格式欄位640(VEX位元組0,位元[7:0]),其包含顯式C4位元組值(用於辨別C4指令格式的獨特值)。第二至第三位元組(VEX位元組1-2)包括提供特定能力的許多位元欄位。具體而言,REX欄位605(VEX位元組1,位元[7-5])由VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)及VEX.B位元欄位(VEX位元組1,位元[5]-B)組成。指令之其他欄位如此項技術中已知的來編碼暫存器索引之下三個位元(rrr、xxx及bbb),因此藉由增添VEX.R、VEX.X及VEX.B而形成Rrrr、Xxxx及Bbbb。運算碼對映欄位615(VEX位元組1,位元[4:0]-mmmmm)包括用來編碼隱式引導運算碼位元組的內容。W欄位664(VEX位元組2,位元[7]-W)由符號VEX.W來表示,且取決於指令而提供不同 功能。VEX.vvvv 620(VEX位元組2,位元[6:3]-vvvv)之作用可包括以下各者:1)VEX.vvvv編碼以反轉(1的補數)形式指定的第一來源暫存器運算元,且針對具有兩個或兩個以上來源運算元的指令有效;2)VEX.vvvv編碼針對某些向量移位以1的補數形式指定的目的地暫存器運算元;或3)VEX.vvvv不編碼任何運算元,該欄位得以保留且應包含1111b。若VEX.L 668大小欄位(VEX位元組2,位元[2]-L)=0,則其指示128位元的向量;若VEX.L=1,則其指示256位元的向量。前綴編碼欄位625(VEX位元組2,位元[1:0]-pp)為基本操作欄位提供額外位元。
實際運算碼欄位630(位元組3)亦稱為運算碼位元組。在此欄位中指定運算碼之部分。
MOD R/M欄位640(位元組4)包括MOD欄位642(位元[7-6])、Reg欄位644(位元[5-3])及R/M欄位646(位元[2-0])。Reg欄位644之作用包括以下各者:編碼目的地暫存器運算元或來源暫存器運算元(rrr或Rrrr),或者被視為運算碼擴展且不用來編碼任何指令運算元。R/M欄位646的作用包括以下各者:編碼參考記憶體位址之指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、索引、基址(SIB)-比例欄位650之內容(位元組5)包括用於記憶體位址產生的SS652(位元[7-6])。SIB.xxx 654之內容(位元[5-3])及SIB.bbb 656之內容(位元[2-0])已在先前關於暫存器索引Xxxx及Bbbb提到。
位移欄位662及立即欄位(IMM8)672含有位址 資料。
一般向量友善指令格式
向量友善指令格式係適合於向量指令的指令格式(例如,存在特定針對向量運算的某些欄位)。雖然描述了經由向量友善指令格式支援向量運算及純量運算兩者的實施例,但替代性實施例僅使用向量運算向量友善指令格式。
圖7A至圖7B係例示根據本發明之實施例之一般向量友善指令格式及其指令模板的方塊圖。圖7A係例示根據本發明之實施例之一般向量友善指令格式及其類別A指令模板的方塊圖;而圖7B係例示根據本發明之實施例之一般向量友善指令格式及其類別B指令模板的方塊圖。具體而言,一般向量友善指令格式700,針對其定義了類別A及類別B指令模板,兩個指令模板皆包括非記憶體存取705指令模板及記憶體存取720指令模板。在向量友善指令格式的情況下,術語一般代表不與任何特定指令集相關的指令格式。
雖然將描述的本發明之實施例中,向量友善指令格式支援以下各者: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個位元組)的資料元件寬度)。
圖7A中的類別A指令模板包括:1)在非記憶體存取705指令模板內,展示出非記憶體存取、完全捨入控制型操作710指令模板及非記憶體存取、資料轉換型操作715指令模板;以及2)在記憶體存取720指令模板內,展示出記憶體存取、暫時725指令模板及記憶體存取、非暫時730指令模板。圖7B中的類別B指令模板包括:1)在非記憶體存取705指令模板內,展示出非記憶體存取、寫入遮罩控制、部分捨入控制型操作712指令模板及非記憶體存取、寫入遮罩控制、vsize型操作717指令模板;以及2)在記憶體存取720指令模板內,展示出記憶體存取、寫入遮罩控制727指令模板。
一般向量友善指令格式700包括以下欄位,下文按圖7A至圖7B中例示之次序列出該等欄位。結合關於上文圖4至圖5b之論述,在一實施例中,參考下文在圖7A至圖7B及圖8中提供的格式細節,可利用非記憶體存取指令類型705或記憶體存取指令類型720。可在下文描述之暫 存器位址欄位744中識別輸入向量運算元及目的地之位址。該等指令可經格式化而成為破壞性或非破壞性的。
格式欄位740-在此欄位中的特定值(指令格式識別符值)唯一地識別向量友善指令格式,且因此在指令串流中識別呈向量友善指令格式的指令的出現。因而,此欄位在以下意義上來說係選擇性的:僅具有一般向量友善指令格式之指令集並不需要此欄位。
基本操作欄位742-其內容辨別不同的基本操作。
暫存器索引欄位744-其內容(直接或經由位址產生)指定來源及目的地運算元之位置,在暫存器或記憶體中。此等包括充足數目個位元,以自PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。雖然在一實施例中,N可至多為三個來源及一個目的地暫存器,但替代性實施例可支援更多或更少的來源及目的地暫存器(例如,可支援至多兩個來源,其中此等來源中之一者亦可充當目的地,可支援至多三個來源,其中此等來源中之一者亦可充當目的地,可支援至多兩個來源及一個目的地)。
修飾符欄位746-其內容區分呈一般向量友善指令格式的指定記憶體存取之指令的出現與不指定記憶體存取之指令的出現;即,區分非記憶體存取705指令模板與記憶體存取720指令模板。記憶體存取操作讀取及/或寫入至記憶體階層(在一些情況下,使用暫存器中的值來指定來源及/或目的地位址),而非記憶體存取操作不讀取及/或寫 入至記憶體階層。雖然在一實施例中此欄位亦在執行記憶體位址計算的三種不同方式之間進行選擇,但替代性實施例可支援執行記憶體位址計算的更多、更少或不同的方式。
擴增操作欄位750-其內容辨別除基本操作外還需執行多種不同操作中之哪一者。此欄位係內容脈絡特定的。在本發明之一實施例中,此欄位分成類別欄位768、α(alpha)欄位752及β(beta)欄位754。擴增操作欄位750允許在單個指令而不是2個、3個或4個指令中執行各組常見操作。
比例欄位760-其內容允許針按比例縮放索引欄位之內容以用於記憶體位址產生(例如,針對使用2比例*索引+基址之位址產生)。
位移欄位762A-其內容被用作記憶體位址產生之部分(例如針對使用2比例*索引+基址+位移之位址產生)。
位移因數欄位762B(請注意,位移欄位762A緊靠在位移因數欄位762B上方的並列定位指示使用一個欄位或另一個欄位)-其內容被用作記憶體位址產生之部分;其指定位移因數,需按記憶體存取之大小(N)按比例縮放該位移因數,其中N係記憶體存取中之位元組之數目(例如,針對使用2比例*索引+基址+按比例縮放後的位移的位址產生)。忽略冗餘的低位位元,且因此,將位移因數欄位之內容乘以記憶體運算元總大小(N)以便產生將用於計算有效位址的最終位移。N的值由處理器硬體在執行時間基於完整的運算碼欄位774(本文中稍後描述)及資料調處欄位 754C予以判定。位移欄位762A及位移因數欄位762B在以下意義上來說係選擇性的:該等欄位不用於非記憶體存取705指令模板,及/或不同實施例可僅實施該兩個欄位中之一者或不實施該兩個欄位。
資料元件寬度欄位764-其內容辨別需使用許多資料元件寬度中之哪一者(在一些實施例中,針對所有指令;在其他實施例中,僅針對該等指令中之一些)。此欄位在以下意義上來說係選擇性的:若使用運算碼之某一態樣支援僅一個資料元件寬度及/或支援多個資料元件寬度,則不需要此欄位。
寫入遮罩欄位770-其內容以每資料元件位置為基礎控制目的地向量運算元中之該資料元件位置是否反映基本操作及擴增操作的結果。類別A指令模板支援合併-寫入遮蔽,而類別B指令模板支援合併-寫入遮蔽及歸零-寫入遮蔽兩者。在合併時,向量遮罩允許保護目的地中之任何元件集合,以免在任何操作(由基本操作及擴增操作指定)執行期間更新;在另一實施例中,在對應的遮罩位元為0時,保持目的地之每一元件的舊值。相反地,當歸零時,向量遮罩允許目的地中之任何元件集合在任何操作(由基本操作及擴增操作指定)執行期間被歸零;在一實施例中,在對應的遮罩位元為0值時,將目的地之一元件設定為0。此功能性之一子集係控制被執行之操作的向量長度(即,被修改之元件(自第一個至最後一個)之跨度)之能力;然而,被修改之元件不一定連續。因此,寫入遮罩欄位770允許 部分向量運算,其中包括載入、儲存、算術、邏輯等。雖然所描述的本發明之實施例中,寫入遮罩欄位770的內容選擇許多寫入遮罩暫存器中之一者,其含有將使用之寫入遮罩(且因此,寫入遮罩欄位770的內容間接識別將執行之遮蔽),但替代性實施例改為或另外允許寫入遮罩欄位770的內容直接指定將執行之遮蔽。
立即欄位772-其內容允許指定立即。此欄位在以下意義上係選擇性的:在不支援立即的一般向量友善格式之實行方案中不存在此欄位,且在不使用立即的指令中不存在此欄位。
類別欄位768-其內容區分不同類別的指令。參看圖7A至圖7B,此欄位之內容在類別A指令與類別B指令之間進行選擇。在圖7A至圖7B中,使用圓角正方形來指示欄位中存在特定值(例如,在圖7A至圖7B中針對類別欄位768分別為類別A 768A及類別B 768B)。
類別A指令模板
在類別A非記憶體存取705指令模板的情況下,α欄位752被解譯為RS欄位752A,其內容辨別需執行不同擴增操作類型中之哪一者(例如,針對非記憶體存取、捨入型操作710指令模板及非記憶體存取、資料轉換型操作715指令模板,分別指定捨入752A.1及資料轉換752A.2),而β欄位754辨別需執行指定類型之操作中之哪一者。在非記憶體存取705指令模板的情況下,比例欄位760、位移欄位762A及位移比例欄位7621B不存在。
非記憶體存取指令模板-完全捨入控制型操作
在非記憶體存取完全捨入控制型操作710指令模板中,β欄位754被解譯為捨入控制欄位754A,其內容提供靜態捨入。雖然在本發明之所描述實施例中,捨入控制欄位754A包括抑制所有浮點異常(SAE)欄位756及捨入操作控制欄位758,但替代性實施例可支援可將兩個此等概念編碼至同一欄位中或者僅具有此等概念/欄位中之一者或另一者(例如,可僅具有捨入操作控制欄位758)。
SAE欄位756-其內容辨別是否要去能異常事件報告;當SAE欄位756的內容指示抑制被賦能時,特定指令不報告任何種類之浮點異常旗標且不引發任何浮點異常處置器。
捨入操作控制欄位758-其內容辨別要執行一組捨入操作中之哪一者(例如,捨進、捨去、向零捨入及捨入至最近數值)。因此,捨入操作控制欄位758允許以每指令為基礎改變捨入模式。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入操作控制欄位750的內容置換(override)該暫存器值。
非記憶體存取指令模板-資料轉換型操作
在非記憶體存取資料轉換型操作715指令模板中,β欄位754被解譯為資料轉換欄位754B,其內容辨別需執行許多資料轉換中之哪一者(例如,非資料轉換、拌和、廣播)。
在類別A記憶體存取720指令模板的情況下,α 欄位752被解譯為收回提示欄位752B,其內容辨別需使用收回提示中之哪一者(在圖7A中,針對記憶體存取、暫時725指令模板及記憶體存取、非暫時730指令模板,分別指定暫時752B.1及非暫時752B.2),而β欄位754被解譯為資料調處欄位754C,其內容辨別需執行許多資料調處操作(亦稱為原指令)中之哪一者(例如,非調處;廣播;來源的上轉換;及目的地的下轉換)。記憶體存取720指令模板包括比例欄位760,且選擇性地包括位移欄位762A或位移比例欄位762B。
向量記憶體指令在有轉換支援的情況下執行自記憶體的向量載入及至記憶體的向量儲存。如同常規向量指令一樣,向量記憶體指令以逐個資料元件的方式自記憶體傳遞資料/傳遞資料至記憶體,其中實際被傳遞之元件係由被選為寫入遮罩之向量遮罩的內容指定。
記憶體存取指令模板-暫時
暫時資料係可能很快被再使用以便足以受益於快取的資料。然而,此係提示,且不同處理器可以不同方式實施提示,其中包括完全忽略該提示。
記憶體存取指令模板-非暫時
非暫時資料係不可能很快被再使用以便足以受益於第一階快取記憶體中之快取的資料,且應被賦予優先權來收回。然而,此係提示,且不同處理器可以不同方式實施提示,其中包括完全忽略該提示。
類別B指令模板
在類別B指令模板的情況下,α欄位752被解譯為寫入遮罩控制(Z)欄位752C,其內容辨別由寫入遮罩欄位770控制之寫入遮罩應為合併還是歸零。
在類別B非記憶體存取705指令模板的情況下,β欄位754之部分被解譯為RL欄位757A,其內容辨別需執行不同擴增操作類型中之哪一者(例如,針對非記憶體存取、寫入遮罩控制、部分捨入控制型操作712指令模板及非記憶體存取、寫入遮罩控制、VSIZE型操作717指令模板,分別指定捨入757A.1及向量長度(VSIZE)757A.2),而β欄位754之剩餘部分辨別需執行指定類型之操作中之哪一者。在非記憶體存取705指令模板的情況下,比例欄位760、位移欄位762A及位移比例欄位762B不存在。
在非記憶體存取、寫入遮罩控制、部分捨入控制型操作710指令模板中,β欄位754之剩餘部分被解譯為捨入操作欄位759A,且異常事件報告被去能(給定指令不報告任何種類之浮點異常旗標且不引發任何浮點異常處置器)。
捨入操作欄位759A-就像捨入操作欄位758一樣,其內容辨別要執行一組捨入操作中之哪一者(例如,捨進、捨去、向零捨入及捨入至最近數值)。因此,捨入操作控制欄位759A允許以每指令為基礎改變捨入模式。在本發明之一實施例中,其中處理器包括用於指定捨入模式之控制暫存器,捨入操作控制欄位750的內容置換該暫存器值。
在非記憶體存取、寫入遮罩控制、VSIZE型操作717指令模板中,β欄位754之剩餘部分被解譯為向量長度欄位759B,其內容辨別需對許多資料向量長度中之哪一者執行(例如,128、256或512個位元組)。
在類別B記憶體存取720指令模板的情況下,β欄位754之部分被解譯為廣播欄位757B,其內容辨別是否需執行廣播型資料調處操作,而β欄位754之剩餘部分被解譯為向量長度欄位759B。記憶體存取720指令模板包括比例欄位760,且選擇性地包括位移欄位762A或位移比例欄位762B。
關於一般向量友善指令格式700,完整的運算碼欄位774被展示出為包括格式欄位740、基本操作欄位742及資料元件寬度欄位764。雖然展示出的一實施例中,完整的運算碼欄位774包括所有此等欄位,但在不支援所有此等欄位的實施例中,完整的運算碼欄位774不包括所有此等欄位。完整的運算碼欄位774提供運算碼(opcode)。
擴增操作欄位750、資料元件寬度欄位764及寫入遮罩欄位770允許以一般向量友善指令格式以每指令為基礎來指定此等特徵。
寫入遮罩欄位與資料元件寬度欄位的組合產生具型式之指令,因為該等指令允許基於不同資料元件寬度來應用遮罩。
在類別A及類別B中所找到的各種指令模板有益於不同情形。在本發明之一些實施例中,不同處理器或 處理器內的不同核心可僅支援類別A,僅支援類別B,或支援上述兩種類別。舉例而言,意欲用於通用計算的高效能通用亂序核心可僅支援類別B,主要意欲用於圖形及/或科學(通量)計算之核心可僅支援類別A,且意欲用於上述兩種計算的核心可支援上述兩種類別(當然,具有來自兩種類別之模板及指令的某種混合但不具有來自兩種類別之所有模板及指令的核心在本發明之範圍內)。單個處理器亦可包括多個核心,所有該等核心支援相同類別,或其中不同核心支援不同類別。舉例而言,在具有分開的圖形及通用核心之處理器中,主要意欲用於圖形及/或科學計算之圖形核心中之一者可僅支援類別A,而通用核心中之一或多者可為僅支援類別B的高效能通用核心,其具有亂序執行及暫存器重新命名,意欲用於通用計算。不具有分開的圖形核心之另一處理器可包括支援類別A及類別B兩者的一或多個通用循序或亂序核心。當然,在本發明之不同實施例中,來自一個類別的特徵亦可實施於另一類別中。用高階語言撰寫之程式將被翻譯(例如,即時編譯或靜態編譯)成各種不同可執行形式,其中包括:1)僅具有目標處理器所支援執行之類別的指令之形式;或2)具有替代性常式且具有控制流碼之形式,其中該等常式係使用所有類別的指令之不同組合來撰寫的,該控制流碼基於當前正在執行該碼的處理器所支援之指令來選擇要執行的常式。
示範性特定向量友善指令格式
圖8A至圖8D係例示根據本發明之實施例之示 範性特定向量友善指令格式的方塊圖。圖8A至圖8D展示出特定向量友善指令格式800,該格式在以下意義上係特定的:其指定欄位之位置、大小、解譯及次序以及彼等欄位中之一些的值。特定向量友善指令格式800可用來擴展x86指令集,且因此,該等欄位中之一些與現有x86指令集及其擴展(例如AVX)中所使用的欄位類似或相同。此格式保持與現有x86指令集以及擴展的前綴編碼欄位、實際運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即欄位一致。從圖7之欄位例示圖8A至圖8D之欄位對映至該等欄位中。
應理解,雖然出於說明目的在一般向量友善指令格式700的脈絡下參考特定向量友善指令格式800來描述本發明之實施例,但除非主張,否則本發明不限於特定向量友善指令格式800。例如,一般向量友善指令格式700考量了各種欄位之各種可能大小,而特定向量友善指令格式800被示出為具有特定大小的欄位。藉由特定實例,雖然在特定向量友善指令格式800中將資料元件寬度欄位764說明為一個位元的欄位,但本發明不限於此(亦即,一般向量友善指令格式700考量了資料元件寬度欄位764之其他大小)。
一般向量友善指令格式700包括以下欄位,下文按圖8A中例示之次序列出該等欄位。
EVEX前綴(位元組0-3)802-以四位元組形式予以編碼。
格式欄位740(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)係格式欄位740,且其含有0x62(在本發明之一實施例中,用來辨別向量友善指令格式的唯一值)。
第二至第四位元組(EVEX位元組1-3)包括提供特定能力之許多位元欄位。
REX欄位805(EVEX位元組1,位元[7-5])由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)及757BEX位元組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’欄位710-此係REX’欄位710之第一部分,且係用來編碼擴展式32暫存器組的上16或下16個暫存器之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在本發明之一實施例中,以位元反轉格式儲存此位元與如下文所指示之其他位元,以區別於(以熟知的x86 32位元模式)BOUND指令,其實際運算碼位元組為62,但在MOD R/M欄位(下文描述)中不接受MOD欄位中的值11;本發明之替代性實施例不以反轉格式儲存此位元與下文所指示之 其他位元。使用值1來編碼下16個暫存器。換言之,藉由組合EVEX.R’、EVEX.R及來自其他欄位的其他RRR,形成R’Rrrr。
運算碼對映欄位815(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱式引導運算碼位元組(0F、0F 38或0F 3)。
資料元件寬度欄位764(EVEX位元組2,位元[7]-W)-係由符號EVEX.W表示。EVEX.W用來定義資料類型之細微度(大小)(32位元的資料元件或64位元的資料元件)。
EVEX.vvvv 820(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的作用可包括以下:1)EVEX.vvvv編碼以反轉(1的補數)形式指定的第一來源暫存器運算元,且針對具有兩個或兩個以上來源運算元的指令有效;2)EVEX.vvvv編碼針對某些向量移位以1的補數形式指定的目的地暫存器運算元;或3)EVEX.vvvv不編碼任何運算元,該欄位得以保留且應包含1111b。因此,EVEX.vvvv欄位820編碼以反轉(1的補數)形式儲存的第一來源暫存器指定符之4個低位位元。取決於指令,使用額外的不同EVEX位元欄位將指定符大小擴展成32個暫存器。
EVEX.U 768類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,則其指示類別A或EVEX.U0;若EVEX.U=1,則其指示類別B或EVEX.U1。
前綴編碼欄位825(EVEX位元組2,位元 [1:0]-pp)-提供基本操作欄位之額外位元。除了以EVEX前綴格式提供對舊式SSE指令的支援,此亦具有緊縮SIMD前綴的益處(不需要一個位元組來表達SIMD前綴,EVEX前綴僅需要2個位元)。在一實施例中,為了以舊式格式及EVEX前綴格式支援使用SIMD前綴(66H、F2H、F3H)之舊式SSE指令,將此等舊式SIMD前綴編碼至SIMD前綴編碼欄位中;且在執行時間將其展開成舊式SIMD前綴,然後提供至解碼器之PLA(因此PLA可執行此等舊式指令的舊式格式及EVEX格式兩者,而無需修改)。雖然較新的指令可直接使用EVEX前綴編碼欄位之內容作為運算碼擴展,但某些實施例以類似方式展開以獲得一致性,但允許此等舊式SIMD前綴指定不同含義。替代性實施例可重新設計PLA來支援2位元的SIMD前綴編碼,且因此不需要該展開。
α欄位752(EVEX位元組3,位元[7]-EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制及EVEX.N;亦由α說明)-如先前所描述,此欄位係脈絡特定的。
β欄位754(EVEX位元組3,位元[6:4]-SSS,亦稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦由βββ說明)-如先前所描述,此欄位係脈絡特定的。
REX’欄位710-此係REX’欄位之剩餘部分,且係可用來編碼擴展式32暫存器組的上16或下16個暫存器之 EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。以位元反轉格式儲存此位元。使用值1來編碼下16個暫存器。換言之,藉由組合EVEX.V’、EVEX.vvvv,形成V’VVVV。
寫入遮罩欄位770(EVEX位元組3,位元[2:0]-kkk)-其內容如先前所描述指定寫入遮罩暫存器中之暫存器的索引。在本發明之一實施例中,特定值EVEX.kkk=000之特殊作用係暗示不對特定指令使用寫入遮罩(此可以各種方式來實施,其中包括使用硬連線(hardwired)至所有硬體的寫入遮罩或繞過(bypass)遮蔽硬體之硬體)。
實際運算碼欄位830(位元組4)亦稱為運算碼位元組。在此欄位中指定運算碼之部分。
MOD R/M欄位840(位元組5)包括MOD欄位842、Reg欄位844及R/M欄位846。如先前所描述,MOD欄位842的內容區分記憶體存取操作與非記憶體存取操作。Reg欄位844之作用可概述為兩種情形:編碼目的地暫存器運算元或來源暫存器運算元,或者被視為運算碼擴展且不用來編碼任何指令運算元。R/M欄位846之作用可包括以下各者:編碼參考記憶體位址之指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元。
比例、索引、基址(SIB)位元組(位元組6)-如先前所描述,比例欄位750的內容係用於記憶體位址產生。SIB.xxx 854及SIB.bbb 856-此等欄位之內容已在先前關於暫存器索引Xxxx及Bbbb提到。
位移欄位762A(位元組7-10)-當MOD欄位842含有10時,位元組7-10係位移欄位762A,且其與舊式32位元的位移(disp32)相同地起作用,且在位元組細微度上起作用。
位移因數欄位762B(位元組7)-當MOD欄位842含有01時,位元組7係位移因數欄位762B。此欄位之位置與舊式x86指令集8位元的位移(disp8)相同,其在位元組細微度上起作用。因為disp8經正負號擴展,所以disp8僅可解決在-128與127位元組之間的位移;就64個位元組的快取列(cache line)而言,disp8使用8個位元,該等位元可被設定為僅四個實際有用的值-128、-64、0及64;因為常常需要更大範圍,所以使用disp32;然而,disp32需要4個位元組。與disp8及disp32相比,位移因數欄位762B係disp8之重新解譯;當使用位移因數欄位762B時,實際位移係由位移因數欄位的內容乘以記憶體運算元存取之大小(N)判定。此類型之位移被稱為disp8*N。此減少了平均指令長度(單個位元組用於位移,但具有大得多的範圍)。此壓縮位移係基於如下假設:有效位移係記憶體存取之細微度的倍數,且因此,不需要編碼位址位移之冗餘低位位元。換言之,位移因數欄位762B替代了舊式x86指令集8位元的位移。因此,位移因數欄位762B的編碼方式與x86指令集8位元的位移相同(因此ModRM/SIB編碼規則無變化),其中唯一例外為,disp8超載(overload)至disp8*N。換言之,編碼規則或編碼長度無變化,而僅僅係硬體對位移值的解 譯有變化(硬體需要按記憶體運算元之大小來按比例縮放該位移以獲得逐個位元組的位址位移)。
立即欄位772如先前所描述而操作。
完整的運算碼欄位
圖8B係例示特定向量友善指令格式800的欄位之方塊圖,該等欄位組成根據本發明之一實施例之完整的運算碼欄位774。具體而言,完整的運算碼欄位774包括格式欄位740、基本操作欄位742及資料元件寬度(W)欄位764。基本操作欄位742包括前綴編碼欄位825、運算碼對映欄位815及實際運算碼欄位830。
暫存器索引欄位
圖8C係例示特定向量友善指令格式800的欄位之方塊圖,該等欄位組成根據本發明之一實施例之暫存器索引欄位744。具體而言,暫存器索引欄位744包括REX欄位805、REX’欄位810、MODR/M.reg欄位844、MODR/M.r/m欄位846、VVVV欄位820、xxx欄位854及bbb欄位856。
擴增操作欄位
圖8D係例示特定向量友善指令格式800的欄位之方塊圖,該等欄位組成根據本發明之一實施例之擴增操作欄位750。當類別(U)欄位768含有0時,其表示EVEX.U0(類別A 768A);當其含有1時,其表示EVEX.U1(類別B 768B)。當U=0且MOD欄位842含有11(表示非記憶體存取操作)時,α欄位752(EVEX位元組3,位元[7]-EH)被解 譯為rs欄位752A。當rs欄位752A含有1(捨入752A.1)時,β欄位754(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位754A。捨入控制欄位754A包括一個位元的SAE欄位756及兩個位元的捨入操作欄位758。當rs欄位752A含有0(資料轉換752A.2)時,β欄位754(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料轉換欄位754B。當U=0且MOD欄位842含有00、01或10(表示記憶體存取操作)時,α欄位752(EVEX位元組3,位元[7]-EH)被解譯為收回提示(EH)欄位752B且β欄位754(EVEX位元組3,位元[6:4]-SSS)被解譯為三個位元的資料調處欄位754C。
當U=1時,α欄位752(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位752C。當U=1且MOD欄位842含有11(表示非記憶體存取操作)時,β欄位754之部分(EVEX位元組3,位元[4]-S0)被解譯為RL欄位757A;當RL欄位757A含有1(捨入757A.1)時,β欄位754之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入操作欄位759A,而RL欄位757A含有0(VSIZE 757.A2)時,β欄位754之剩餘部分(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位759B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位842含有00、01或10(表示記憶體存取操作)時,β欄位754(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位759B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位757B(EVEX位元組3,位元[4]-B)。
示範性暫存器架構
圖9係根據本發明之一實施例之暫存器架構900的方塊圖。在所說明之實施例中,有32個向量暫存器910,其寬度為512個位元;此等暫存器被稱為zmm0至zmm31。下16個zmm暫存器的低位256個位元覆疊在暫存器ymm0-16上。下16個zmm暫存器的低位128個位元(ymm暫存器的低位128個位元)覆疊在暫存器xmm0-15上。特定向量友善指令格式800如下表中所說明對此等覆疊暫存器檔案進行操作。
換言之,向量長度欄位759B在最大長度與一或多個其他較短長度之間進行選擇,其中每一此種較短長度係前一長度的一半長度;且不具有向量長度欄位759B的指令模板對最大向量長度進行操作。另外,在一實施例中,特定向量友善指令格式800之類別B指令模板對緊縮或純量單精度/雙精度浮點資料及緊縮或純量整數資料進行操 作。純量操作係對zmm/ymm/xmm暫存器中之最低位資料元件位置執行的操作;較高位資料元件位置保持與其在指令之前相同或歸零,此取決於實施例。
寫入遮罩暫存器915-在所說明之實施例中,有8個寫入遮罩暫存器(k0至k7),每一寫入遮罩暫存器的大小為64個位元。在替代實施例中,寫入遮罩暫存器915的大小為16個位元。如先前所描述,在本發明之一實施例中,向量遮罩暫存器k0無法用作寫入遮罩;當通常將指示k0之編碼被用於寫入遮罩時,其選擇固線式寫入遮罩0xFFFF,從而有效去能對該指令之寫入遮蔽。
通用暫存器925-在所說明之實施例中,有十六個64位元的通用暫存器,該等暫存器與現有的x86定址模式一起用來定址記憶體運算元。藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15來參考此等暫存器。
純量浮點堆疊暫存器檔案(x87堆疊)945,上面混疊有MMX緊縮整數平板暫存器檔案950-在所說明之實施例中,x87堆疊係八個元件的堆疊,用來使用x87指令集擴展對32/64/80個位元的浮點資料執行純量浮點運算;而MMX暫存器用來對64個位元的緊縮整數資料執行運算以及保存運算元,該等運算元係用於在MMX暫存器與XMM暫存器之間執行的一些運算。
本發明之替代性實施例可使用更寬或更窄的暫存器。另外,本發明之替代性實施例可使用更多、更少或 不同的暫存器檔案或暫存器。
示範性核心架構、處理器及電腦架構
可出於不同目的以不同方式且在不同處理器中實施處理器核心。舉例而言,此類核心的實行方案可包括:1)意欲用於通用計算的通用循序核心;2)意欲用於通用計算的高效能通用亂序核心;3)主要意欲用於圖形及/或科學(通量)計算的專用核心。不同處理器之實行方案可包括:1)CPU,其包括意欲用於通用計算的一或多個通用循序核心及/或意欲用於通用計算的一或多個通用亂序核心;以及2)共處理器,其包括主要意欲用於圖形及/或科學(通量)的一或多個專用核心。此等不同處理器導致不同電腦系統架構,該等架構可包括:1)共處理器在與CPU分離之晶片上;2)共處理器與CPU在同一封裝中,但在單獨的晶粒上;3)共處理器與CPU在同一晶粒上(在此情況下,此共處理器有時被稱為專用邏輯,諸如整合型圖形及/或科學(通量)邏輯,或被稱為專用核心);以及4)系統單晶片(system on a chip),其在與所描述CPU(有時被稱為應用核心或應用處理器)相同的晶粒上包括上述共處理器及額外功能性。接下來描述示範性核心架構,後續接著對示範性處理器及電腦架構的描述。
示範性核心架構
循序及亂序核心方塊圖
圖10A係例示根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名 亂序發佈/執行管線。圖10B係例示如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的處理器中。圖10A至圖10B之實線方框例示循序管線及循序核心,虛線方框之選擇性增添說明暫存器重新命名亂序發佈/執行管線及核心。考慮到循序態樣係亂序態樣之子集,將描述亂序態樣。
在圖10A中,處理器管線1000包括擷取階段1002、長度解碼階段1004、解碼階段1006、分配階段1008、重新命名階段1010、排程(亦稱為分派或發佈)階段1012、暫存器讀取/記憶體讀取階段1014、執行階段1016、回寫/記憶體寫入階段1018、異常處置階段1022及確認階段1024。
圖10B示出處理器核心1090,其包括耦接至執行引擎單元1050之前端單元1030,且執行引擎單元1050及前端單元1030兩者皆耦接至記憶體單元1070。處理器核心1090可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心,或者混合式或替代性核心類型。作為另一選擇,核心1090可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元1030包括耦接至指令快取記憶體單元1034之分支預測單元1032,指令快取記憶體單元1034耦接至指令轉譯後備緩衝器(TLB)1036,指令TLB 1036耦接 至指令擷取單元1038,指令擷取單元1038耦接至解碼單元1040。解碼單元1040(或解碼器)可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機構來實施解碼單元1040。合適的機構之實例包括(但不限於)查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1090包括儲存用於某些巨集指令(macroinstruction)之微碼的微碼ROM或其他媒體(例如在解碼單元1040中,或者在前端單元1030內)。解碼單元1040耦接至執行引擎單元1050中的重新命名/分配器單元1052。
執行引擎單元1050包括重新命名/分配器單元1052,其耦接至引退單元1054及一組一或多個排程器單元1056。排程器單元1056表示任何數目個不同排程器,其中包括保留站、中央指令視窗等。排程器單元1056耦接至實體暫存器檔案單元1058。實體暫存器檔案單元1058中之每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案單元儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標器,即下一個待執行指令的位址)等。在一實施例中,實體暫存器檔案單元1058包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構性向量暫存器、向量遮罩暫存器及 通用暫存器。引退單元1054與實體暫存器檔案單元1058重疊,以說明可實施暫存器重新命名及亂序執行的各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器對映及暫存器集區)。引退單元1054及實體暫存器檔案單元1058耦接至執行叢集1060。執行叢集1060包括一或多個執行單元1062之集合及一或多個記憶體存取單元1064之集合。執行單元1062可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元1056、實體暫存器檔案單元1058及執行叢集1060被示出為可能係多個,因為某些實施例針對某些類型之資料/運算產生單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在單獨的記憶體存取管線的情況下,所實施的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元1064)。亦應理解,在使用單獨的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線可為循序的。
該組記憶體存取單元1064耦接至記憶體單元1070,記憶體單元1070包括耦接至資料快取記憶體單元 1074的資料TLB單元1072,資料快取記憶體單元1074耦接至2階(L2)快取記憶體單元1076。在一示範性實施例中,記憶體存取單元1064可包括載入單元、儲存位址單元及儲存資料單元,其中每一者耦接至記憶體單元1070中的資料TLB單元1072。指令快取記憶體單元1034進一步耦接至記憶體單元1070中的2階(L2)快取記憶體單元1076。L2快取記憶體單元1076耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由實例,示範性暫存器重新命名亂序發佈/執行核心架構可將管線1000實施如下:1)指令擷取1038執行擷取階段1002及長度解碼階段1004;2)解碼單元1040執行解碼階段1006;3)重新命名/分配單元1052執行分配階段1008及重新命名階段1010;4)排程器單元1056執行排程階段1012;5)實體暫存器檔案單元1058及記憶體單元1070執行暫存器讀取/記憶體讀取階段1014;執行叢集1060執行執行階段1016;6)記憶體單元1070及實體暫存器檔案單元1058執行回寫/記憶體寫入階段1018;7)異常處置階段1022中可涉及各種單元;及8)引退單元1054及實體暫存器檔案單元1058執行確認階段1024。
核心1090可支援一或多個指令集(例如,x86指令集(具有一些擴展,其已新增較新版本);MIPS Technologies公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(具有選擇性的額外擴展,諸如NEON)),其中包括本文中所描述之指 令。在一實施例中,核心1090包括支援緊縮資料指令集擴展(例如,AVX1、AVX2及/或先前所描述之某種形式的一般向量友善指令格式(U=0及/或U=1))的邏輯,進而允許使用緊縮資料來執行許多多媒體應用所使用的操作。
應理解,該核心可支援多執行緒處理(執行二或更多組平行操作或執行緒),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理的各執行緒中之每一者提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及同時的多執行緒處理,之後諸如在Intel®超執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行的脈絡下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所說明實施例亦包括單獨的指令與資料快取記憶體單元1034/1074以及共享的L2快取記憶體單元1076,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如1階(L1)內部快取記憶體或多階內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
特定示範性循序核心架構
圖11A至圖11B例示更特定的示範性循序核心架構之方塊圖,該核心將係晶片中的若干邏輯區塊(包括相 同類型及/或不同類型的其他核心)中之一者。邏輯區塊經由高頻寬互連網路(例如環形網路)與一些固定功能邏輯、記憶體I/O介面及其他必要的I/O邏輯通訊,此取決於應用。
圖11A係根據本發明之實施例的單個處理器核心及其至晶粒上互連網路1102的連接以及其2階(L2)快取記憶體局域子集1104之方塊圖。在一實施例中,指令解碼器1100支援x86指令集與緊縮資料指令集擴展。L1快取記憶體1106允許對快取記憶體進行低延時存取,存取至純量單元及向量單元中。雖然在一實施例中(為了簡化設計),純量單元1108及向量單元1110使用單獨的暫存器組(分別使用純量暫存器1112及向量暫存器1114),且在純量單元1108與向量單元1110之間傳遞的資料被寫入至記憶體,然後自1階(L1)快取記憶體1106被讀回,但本發明之替代性實施例可使用不同方法(例如,使用單個暫存器組,或包括允許在兩個暫存器檔案之間傳遞資料而無需寫入及讀回的通訊路徑)。
L2快取記憶體局域子集1104係全域L2快取記憶體之部分,全域L2快取記憶體分成單獨的局域子集,每個處理器核心一個局域子集。每一處理器核心具有至其自有之L2快取記憶體局域子集1104的直接存取路徑。處理器核心所讀取之資料係儲存於其自有之L2快取記憶體子集1104中且可被快速存取,此存取係與其他處理器核心存取其自有之局域L2快取記憶體子集1104並行地進行。由處理器核心所寫入之資料係儲存於其自有之L2快取記憶 體子集1104中且必要時自其他子集清除掉。環形網路確保共享資料之同調性。環形網路係雙向的,以允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理在晶片內彼此通訊。每一環形資料路徑在每個方向上的寬度係1012個位元。
圖11B係根據本發明之實施例的圖11A中之處理器核心之部分的展開圖。圖11B包括L1快取記憶體1104之L1資料快取記憶體1106A部分,以及關於向量單元1110及向量暫存器1114之更多細節。具體而言,向量單元1110係寬度為16之向量處理單元(VPU)(參見寬度為16之ALU 1128),其執行整數、單精度浮點數及雙精度浮點數指令中之一或多者。VPU支援由拌和單元1120對暫存器輸入進行拌和、由數值轉換單元1122A-B進行數值轉換,以及由複製單元1124對記憶體輸入進行複製。寫入遮罩暫存器1126允許預測所得向量寫入。
具有整合型記憶體控制器及圖形元件的處理器
圖12係根據本發明之實施例之處理器1200的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件。圖12中的實線方框例示處理器1200,其具有單個核心1202A、系統代理1210、一或多個匯流排控制器單元1216之集合,而虛線方框之選擇性增添例示替代性處理器1200,其具有多個核心1202A-N、位於系統代理單元1210中的一或多個整合型記憶體控制器單元1214之集合,以及專用邏輯1208。
因此,處理器1200之不同實行方案可包括:1)CPU,其中專用邏輯1208係整合型圖形及/或科學(通量)邏輯(其可包括一或多個核心),且核心1202A-N係一或多個通用核心(例如,通用循序核心、通用亂序核心、上述兩者之組合);2)共處理器,其中核心1202A-N係大量主要意欲用於圖形及/或科學(通量)之專用核心;以及3)共處理器,其中核心1202A-N係大量通用循序核心。因此,處理器1200可為通用處理器、共處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多重整合核心(MIC)共處理器(包括30個或更多核心)、嵌入式處理器或類似者。處理器可實施於一或多個晶片上。處理器1200可為一或多個基板之部分及/或可使用許多處理技術(例如BiCMOS、CMOS或NMOS)中之任一者將處理器1200實施於一或多個基板上。
記憶體階層包括該等核心內的一或多階快取記憶體、一組一或多個共享快取記憶體單元1206,及耦接至該組整合型記憶體控制器單元1214的外部記憶體(圖中未示)。共享快取記憶體單元1206之集合可包括一或多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4),或其他階快取記憶體、末階快取記憶體(LLC),及/或上述各者之組合。雖然在一實施例中,環式互連單元1212對整合型圖形邏輯1208、共享快取記憶體單元1206之集合及系統代理單元1210/整合型記憶體控制器單元1214進行互連,但替代性實施例可使用任何數種熟知技術來互連此等單元。 在一實施例中,在一或多個快取記憶體單元1206與核心1202A-N之間維持同調性。
在一些實施例中,核心1202A-N中之一或多者能夠進行多執行緒處理。系統代理1210包括協調並操作核心1202A-N之彼等組件。系統代理單元1210可包括,例如,功率控制單元(PCU)及顯示單元。PCU可為調節核心1202A-N及整合型圖形邏輯1208之功率狀態所需要的邏輯及組件,或者包括上述邏輯及組件。顯示單元係用於驅動一或多個外部已連接顯示器。
核心1202A-N就架構指令集而言可為同質的或異質的;即,核心1202A-N中之兩者或兩者以上可能能夠執行同一指令集,而其他核心可能僅能夠執行該指令集之子集或不同的指令集。
示範性電腦架構
圖13至圖16係示範性電腦架構之方塊圖。此項技術中已知的關於以下各者之其他系統設計及組配亦適合:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器及/或其他執行邏輯的多種系統或電子裝置通常適合。
現在參考圖13,所展示為根據本發明之一實施 例之系統1300的方塊圖。系統1300可包括一或多個處理器1310、1315,該等處理器耦接至控制器集線器1320。在一實施例中,控制器集線器1320包括圖形記憶體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(上述兩者可位於單獨的晶片上);GMCH 1390包括記憶體控制器及圖形控制器,記憶體1340及共處理器1345耦接至該等控制器;IOH 1350將輸入/輸出(I/O)裝置1360耦接至GMCH 1390。或者,記憶體控制器及圖形控制器中之一者或兩者整合於(如本文中所描述之)處理器內,記憶體1340及共處理器1345直接耦接至處理器1310,且控制器集線器1320與IOH 1350位於單個晶片中。
圖13中用虛線表示額外處理器1315之可選擇性質。每一處理器1310、1315可包括本文中所描述之處理核心中之一或多者且可為處理器1200之某一版本。
記憶體1340可為,例如,動態隨機存取記憶體(DRAM)、相變化記憶體(PCM),或上述兩者之組合。對於至少一個實施例,控制器集線器1320經由以下各者與處理器1310、1315通訊:諸如前端匯流排(FSB)之多分支匯流排(multi-drop bus)、諸如快速路徑互連(QuickPath Interconnect;QPI)之點對點介面,或類似連接1395。
在一實施例中,共處理器1345係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。在一實施例中,控制器集線器1320可包括整合型圖形加速器。
就優點量度範圍而言,實體資源1310與1315之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性及類似者。
在一實施例中,處理器1310執行控制一般類型資料處理操作的指令。共處理器指令可嵌入該等指令內。處理器1310認定此等共處理器指令係應由已附接之共處理器1345執行的類型。因此,處理器1310在共處理器匯流排或其他互連上發佈此等共處理器指令(或表示共處理器指令的控制信號)至共處理器1345。共處理器1345接受並執行接收到之共處理器指令。
現在參考圖14,所展示為根據本發明之一實施例之第一更特定的示範性系統1400的方塊圖。如圖14中所示,多處理器系統1400係點對點互連系統,且包括第一處理器1470及第二處理器1480,該等處理器經由點對點互連1450予以耦接。處理器1470及1480中之每一者可為處理器1200之某一版本。在本發明之一實施例中,處理器1470及1480分別為處理器1310及1315,而共處理器1438為共處理器1345。在另一實施例中,處理器1470及1480分別為處理器1310共處理器1345。
所展示處理器1470及1480分別包括整合型記憶體控制器(IMC)單元1472及1482。處理器1470亦包括點對點(P-P)介面1476及1478,作為其匯流排控制器單元的部分;類似地,第二處理器1480包括P-P介面1486及1488。處理器1470、1480可使用P-P介面電路1478、1488 經由點對點(P-P)介面1450交換資訊。如圖14中所示,IMC 1472及1482將處理器耦接至各別記憶體,亦即,記憶體1432及記憶體1434,該等記憶體可為局部地附接至各別處理器之主記憶體的部分。
處理器1470、1480各自可使用點對點介面電路1476、1494、1486、1498經由個別P-P介面1452、1454與晶片組1490交換資訊。晶片組1490可選擇性地經由高效能介面1439與共處理器1438交換資訊。在一實施例中,共處理器1438係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(圖中未示),而該共享快取記憶體經由P-P互連與該等處理器連接,以使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組1490可經由介面1496耦接至第一匯流排1416。在一實施例中,第一匯流排1416可為周邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖14中所示,各種I/O裝置1414以及匯流排橋接器1418可耦接至第一匯流排1416,匯流排橋接器1418將第一匯流排1416耦接至第二匯流排1420。在一實施例中,一或多個額外處理器1415(諸如,共處理器、高通量 MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列,或任何其他處理器)耦接至第一匯流排1416。在一實施例中,第二匯流排1420可為低針腳數(LPC)匯流排。各種裝置可耦接至第二匯流排1420,其中包括,例如,鍵盤及/或滑鼠1422、通訊裝置1427,以及儲存單元1428(諸如磁碟機或其他大容量儲存裝置),在一實施例中,儲存單元1428可包括指令/程式碼及資料1430。此外,音訊I/O 1424可耦接至第二匯流排1420。請注意,其他架構係可能的。例如,代替圖14之點對點架構,系統可實施多分支匯流排或其他此種架構。
現在參考圖15,所展示為根據本發明之一實施例之第二更特定的示範性系統1500的方塊圖。圖14及圖15中的相似元件帶有相似參考數字,且圖15已省略圖14之某些態樣以避免混淆圖15之態樣。
圖15例示處理器1470、1480分別可包括整合型記憶體及I/O控制邏輯(「CL」)1472及1482。因此,CL 1472及1482包括整合型記憶體控制器單元且包括I/O控制邏輯。圖15例示不僅記憶體1432、1434耦接至CL 1472、1482,而且I/O裝置1514耦接至控制邏輯1472、1482。舊式I/O裝置1515耦接至晶片組1490。
現在參考圖16,所展示為根據本發明之一實施例之SoC 1600的方塊圖。圖12中的類似元件帶有相似參考數字。此外,虛線方框係更先進SoC上之選擇性特徵。在圖16中,互連單元1602耦接至以下各者:應用處理器 1610,其包括一或多個核心202A-N之集合及共享快取記憶體單元1206;系統代理單元1210;匯流排控制器單元1216;整合型記憶體控制器單元1214;一或多個共處理器1620之集合,其可包括整合型圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;以及用於耦接至一或多個外部顯示器的顯示單元1640。在一實施例中,共處理器1620包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器或類似者。
本文中揭示之機制的實施例可以硬體、軟體、韌體或者此類實施方法之組合來實施。本發明之實施例可實施為在可規劃系統上執行之電腦程式或程式碼,可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置及至少一個輸出裝置。
可將程式碼(諸如圖14中例示之程式碼1430)應用於輸入指令,用來執行本文中所描述之功能且產生輸出資訊。可將輸出資訊以已知方式應用於一或多個輸出裝置。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以高階程序性或物件導向式程式設計語言來實施,以便與處理系統通訊。必要時,程式碼亦可 以組合語言或機器語言來實施。事實上,本文中所描述之機構的範疇不限於任何特定的程式設計語言。在任何情況下,該語言可為編譯語言或解譯語言。
至少一個實施例之一或多個層面可藉由儲存於機器可讀媒體上之代表性指令來實施,機器可讀媒體表示處理器內的各種邏輯,該等指令在由機器讀取時使機器製造邏輯來執行本文中所描述之技術。此類表示(「稱為IP核心」)可儲存於有形的機器可讀媒體上,且可供應給各種用戶端或製造設施以載入至實際上製造該邏輯或處理器的製造機中。
此等機器可讀儲存媒體可包括(但不限於)由機器或裝置製造的非暫時性有形物品配置,其中包括:儲存媒體,諸如硬碟、任何其他類型之碟片(包括軟碟片、光碟、光碟片-唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟)、半導體裝置(諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、相變化記憶體(PCM)、磁性或光學卡),或者適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)之設計資料的非暫時性有形機器可讀媒體,其中設計資料定義本文中所描述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式 產品。
仿真(包括二進位轉譯、程式碼漸變等)
在一些情況下,可使用指令轉換器將指令自來源指令集轉換成目標指令集。例如,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
圖17係對照根據本發明之實施例之軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所例示之實施例中,指令轉換器係軟體指令轉換器,但指令轉換器或者可以軟體、韌體硬體、或其各種組合來實施。圖17展示出,可使用x86編譯器1704來編譯用高階語言1702撰寫的程式以產生x86二進位碼1706,x86二進位碼1706自然可由具有至少一個x86指令集核心之處理器1716執行。具有至少一個x86指令集核心之處理器1716表示可執行與具有至少一個x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分或(2)旨在在具有至少一個x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以便達成與具有至少一個x86指令集核心之Intel處理器大體相 同的結果。x86編譯器1704表示可操作以產生x86二進位碼1706(例如目標碼)之編譯器,其中x86二進位碼1706在經額外連結處理或未經額外連結處理的情況下可在具有至少一個x86指令集核心之處理器1716上執行。類似地,圖17展示出,可使用替代性指令集編譯器1708來編譯用高階語言1702撰寫的程式以產生替代性指令集二進位碼1710,替代性指令集二進位碼1710自然可由不具有至少一個x86指令集核心之處理器1714(例如,具有多個核心的處理器,該等核心執行MIPS Technologies公司(Sunnyvale,CA)之MIPS指令集,及/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之ARM指令集)執行。使用指令轉換器1712將x86二進位碼1706轉換成自然可由不具有一個x86指令集核心之處理器1714執行的碼。此轉換後的碼不可能與替代性指令集二進位碼1710相同,因為能夠實現此操作的指令轉換器很難製作,然而,轉換後的碼將完成一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1712表示經由仿真、模擬或任何其他處理程序來允許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1706的軟體、韌體、硬體或其組合。
501‧‧‧3:2節省進位加法器(CSA)501
502‧‧‧傳統加法器
503~505‧‧‧輸入暫存器
506、507‧‧‧輸出
508‧‧‧最終和

Claims (21)

  1. 一種用以對三輸入運算元求和之方法,其包含:以一處理器之一執行單元經由一單個指令之執行對三輸入運算元求和,以產生一結果;以及使一旗標之寫入失能,該旗標指示該結果擴展超過用以傳送該結果之硬體之一資料寬度。
  2. 如申請專利範圍第1項之方法,其中該求和是按照單個微操作來執行。
  3. 如申請專利範圍第1項之方法,進一步包含使該旗標之讀取失能,該旗標指示該結果擴展超過用以傳送該結果之硬體之該資料寬度。
  4. 如申請專利範圍第1項之方法,進一步包含使一旗標之寫入失能,該旗標指示該結果擴展超過用以儲存該結果之硬體之一資料寬度。
  5. 如申請專利範圍第1項之方法,其中當有一溢位狀態時,該求和不使用溢位位元,以及當有一進位輸出狀態時,該求和不使用進位輸出位元。
  6. 一種處理器,其包含:一執行單元,其經由一單個指令之執行對三輸入運算元求和,以產生一結果;以及邏輯電路,其使一旗標之寫入失能,該旗標指示該結果擴展超過用以傳送該結果之硬體之一資料寬度。
  7. 如申請專利範圍第6項之處理器,其中該單個指令為一 單個微操作。
  8. 如申請專利範圍第6項之處理器,其中該邏輯電路係用以使該旗標之讀取失能,該旗標指示該結果擴展超過用以傳送該結果之硬體之該資料寬度。
  9. 如申請專利範圍第6項之處理器,其中該邏輯電路係用以使一旗標之寫入失能,該旗標指示該結果擴展超過用以儲存該結果之硬體之一資料寬度。
  10. 如申請專利範圍第6項之處理器,其中該執行單元用以當有一溢位狀態時,不使用溢位位元,以及當對該三輸入運算元求和有一進位輸出狀態時,不使用進位輸出位元。
  11. 一種用以對三輸入運算元求和之方法,其包含:以一處理器之一解碼器解碼一單個指令;以及以該處理器之一執行單元經由該單個指令之執行對三輸入運算元求和,以產生一結果,其中當有一溢位狀態時,該求和不使用溢位位元,以及當有一進位輸出狀態時,該求和不使用進位輸出位元。
  12. 如申請專利範圍第11項之方法,其中該求和是按照單個微操作來執行。
  13. 如申請專利範圍第11項之方法,進一步包含使一旗標之寫入失能,該旗標指示該結果擴展超過用以傳送該結果之硬體之一資料寬度。
  14. 如申請專利範圍第11項之方法,進一步包含使一旗標之讀取失能,該旗標指示該結果擴展超過用以傳送該結 果之硬體之一資料寬度。
  15. 如申請專利範圍第11項之方法,進一步包含使一旗標之寫入失能,該旗標指示該結果擴展超過用以儲存該結果之硬體之一資料寬度。
  16. 一種處理器,其包含:一解碼器,其用以解碼一單個指令;以及一執行單元,其經由該單個指令之執行對三輸入運算元求和,以產生一結果,其中該執行單元用以當有一溢位狀態時,不使用溢位位元,以及當對該三輸入運算元求和有一進位輸出狀態時,不使用進位輸出位元。
  17. 如申請專利範圍第16項之處理器,其中該單個指令為一單個微操作。
  18. 如申請專利範圍第16項之處理器,進一步包含用以使一旗標之寫入失能之邏輯電路,該旗標指示該結果擴展超過用以傳送該結果之硬體之一資料寬度。
  19. 如申請專利範圍第16項之處理器,進一步包含用以使一旗標之讀取失能之邏輯電路,該旗標指示該結果擴展超過用以傳送該結果之硬體之一資料寬度。
  20. 如申請專利範圍第16項之處理器,進一步包含用以使一旗標之寫入失能之邏輯電路,該旗標指示該結果擴展超過用以儲存該結果之硬體之一資料寬度。
  21. 如申請專利範圍第16項之處理器,進一步包含用以使一旗標之讀取失能之邏輯電路,該旗標指示該結果擴展超過用以儲存該結果之硬體之一資料寬度。
TW101149337A 2011-12-23 2012-12-22 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器 TWI567640B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067230 WO2013095648A1 (en) 2011-12-23 2011-12-23 Three input operand vector add instruction that does not raise arithmetic flags for cryptographic applications

Publications (2)

Publication Number Publication Date
TW201346747A TW201346747A (zh) 2013-11-16
TWI567640B true TWI567640B (zh) 2017-01-21

Family

ID=48669286

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105136695A TW201730749A (zh) 2011-12-23 2012-12-22 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器(二)
TW101149337A TWI567640B (zh) 2011-12-23 2012-12-22 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW105136695A TW201730749A (zh) 2011-12-23 2012-12-22 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器(二)

Country Status (4)

Country Link
US (1) US20140195817A1 (zh)
CN (1) CN104126173A (zh)
TW (2) TW201730749A (zh)
WO (1) WO2013095648A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106030510A (zh) * 2014-03-26 2016-10-12 英特尔公司 三源操作数浮点加法处理器、方法、系统和指令
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401194B1 (en) * 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
US6490607B1 (en) * 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
TW591520B (en) * 2002-04-10 2004-06-11 Infineon Technologies Ag Calculating unit and method for adding
TW200415506A (en) * 2002-01-16 2004-08-16 Infineon Technologies Ag Calculating unit and method for performing an arithmetic operation with encrypted operands
TWI245218B (en) * 2002-09-25 2005-12-11 Infineon Technologies Ag Apparatus and method for converting, and adder circuit
US20090158013A1 (en) * 2007-12-13 2009-06-18 Muff Adam J Method and Apparatus Implementing a Minimal Area Consumption Multiple Addend Floating Point Summation Function in a Vector Microprocessor
US20090198974A1 (en) * 2008-01-31 2009-08-06 International Business Machines Corporation Methods for conflict-free, cooperative execution of computational primitives on multiple execution units

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2200483B (en) * 1987-01-22 1991-10-16 Nat Semiconductor Corp Memory referencing in a high performance microprocessor
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US9990201B2 (en) * 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
US20110314263A1 (en) * 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401194B1 (en) * 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
US6490607B1 (en) * 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
TW200415506A (en) * 2002-01-16 2004-08-16 Infineon Technologies Ag Calculating unit and method for performing an arithmetic operation with encrypted operands
TW591520B (en) * 2002-04-10 2004-06-11 Infineon Technologies Ag Calculating unit and method for adding
TWI245218B (en) * 2002-09-25 2005-12-11 Infineon Technologies Ag Apparatus and method for converting, and adder circuit
US20090158013A1 (en) * 2007-12-13 2009-06-18 Muff Adam J Method and Apparatus Implementing a Minimal Area Consumption Multiple Addend Floating Point Summation Function in a Vector Microprocessor
US20090198974A1 (en) * 2008-01-31 2009-08-06 International Business Machines Corporation Methods for conflict-free, cooperative execution of computational primitives on multiple execution units

Also Published As

Publication number Publication date
TW201730749A (zh) 2017-09-01
WO2013095648A1 (en) 2013-06-27
US20140195817A1 (en) 2014-07-10
TW201346747A (zh) 2013-11-16
CN104126173A (zh) 2014-10-29

Similar Documents

Publication Publication Date Title
TWI496080B (zh) 轉置指令之技術
TWI517031B (zh) 用於呈現各別複數之複數共軛根之向量指令
TWI470544B (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TWI489383B (zh) 遮蔽排列指令的裝置及方法
TWI517039B (zh) 用以對緊縮資料執行差異解碼之系統,設備,及方法
TWI517038B (zh) 用於在多維度陣列中之元件偏移計算的指令
TWI499976B (zh) 用以產生整數序列的方法、設備、系統及製造物品
TWI489382B (zh) 改良的萃取指令背景之設備及方法
TWI525538B (zh) 超級乘加(super madd)指令技術
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI515650B (zh) 用於遮罩暫存器擴充操作之設備及方法
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI481991B (zh) 改良型排列指令之裝置及方法
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
TWI567640B (zh) 用於不引發算術旗標的三輸入運算元加法指令之方法及處理器
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
TWI644256B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法
TWI497411B (zh) 用於決定一值是否在一範圍內之指令的裝置及方法
TW201730756A (zh) 用於從鏈結結構取回元件的設備和方法
TWI610231B (zh) 用於向量水平邏輯指令的裝置及方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees