TWI715672B - 用於保留位元的強制執行的裝置及方法 - Google Patents

用於保留位元的強制執行的裝置及方法 Download PDF

Info

Publication number
TWI715672B
TWI715672B TW105137682A TW105137682A TWI715672B TW I715672 B TWI715672 B TW I715672B TW 105137682 A TW105137682 A TW 105137682A TW 105137682 A TW105137682 A TW 105137682A TW I715672 B TWI715672 B TW I715672B
Authority
TW
Taiwan
Prior art keywords
processor
bit
reserved
field
bits
Prior art date
Application number
TW105137682A
Other languages
English (en)
Other versions
TW201732553A (zh
Inventor
歐倫 班奇奇
伊蘭 帕杜
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 TW201732553A publication Critical patent/TW201732553A/zh
Application granted granted Critical
Publication of TWI715672B publication Critical patent/TWI715672B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/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/30098Register arrangements
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本發明揭露一種用於保留位元的強制執行的裝置及方法。例如,一處理器之實施例包含:記憶體管理單元,用以將包括有保留位元組的位元組儲存於系統記憶體;保留位元強制執行邏輯,用以產生虛擬隨機模式於保留位元中,並且在儲存保留位元之前先產生錯誤校正碼於虛擬隨機模式上;記憶體管理單元載入包括有虛擬隨機模式及錯誤校正碼的保留位元;保留位元強制執行邏輯使用錯誤校正碼判定保留位元是否已被軟體修改;及若保留位元已被修改,則處理器產生錯誤狀況,且若未修改,則處理器繼續正常執行。

Description

用於保留位元的強制執行的裝置及方法
本發明大抵關於電腦處理器之領域。較特別的是,本發明關於一種用於保留位元的強制執行的方法及裝置。
一指令集或指令集架構(ISA)係關於編程之電腦架構的一部分,包括原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置、及外部輸入/輸出(I/O)。應該注意的是術語「指令」在此大抵是指巨指令,即提供至處理器以便執行之指令,相反於微指令或微操作,即一處理器之解碼器解碼巨指令的結果。微指令或微操作可以組構成命令處理器上之一執行單元執行操作以實施和巨指令相關聯之邏輯。
ISA有別於微架構,其係用於實施指令集之處理器設計技術集。具有不同微架構的處理器可以共用一共同指令集。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、及取自加州桑尼維爾市Advanced Micro Devices,Inc.之處理器執行x86指令集之幾乎相同版本(有些延伸已經 加上較新版本),但是有不同內部設計。例如,ISA之相同暫存器架構可以在使用新的或習知技術的不同微架構中以不同方式實施,包括專屬實體暫存器、一或多個使用暫存器重新命名機制的動態配置實體暫存器(例如,使用暫存器別名表(RAT)、重排序緩衝器(ROB)及止用暫存器檔)。除非另有所指,本文內所用之暫存器架構、暫存器檔、及暫存器等慣用語是指可見於軟體/程式且為指令所指定之暫存器。需要釐清的是,形容詞「邏輯性」、「架構性」、或「可見軟體」是用於指示暫存器架構中之暫存器/檔案,不同的形容詞則用於指定一給定微架構中之暫存器(例如,實體暫存器、重新排序緩衝器、止用暫存器、暫存器庫)。
一指令集包括一或多個指令格式。一給定指令格式界定多個欄位(位元數、位元位置),以便在其他事項之外指定欲執行之操作及供操作在其上執行之運算元。有些指令格式透過指令樣板之界定而進一步細分(或子格式)。例如,一給定指令格式之指令樣板可以界定成具有指令格式欄位之不同子集(所包括之欄位典型上為相同順序,但是至少有些有不同位元位置,因為所包括之欄位少)及/或界定成具有一不同解讀之給定欄位。一給定指令使用給定指令格式表示(且若界定時是在該指令格式之指令樣板之一給定者內)且指定操作及運算元。一指令流為指令之一特定序列,其中序列中之各指令即指令在一指令格式中的出現(且若界定時是在該指令格式之指令樣板之一給定者 內)。
在許多情況中,ISA界定需要在已儲存於記憶體內並且隨後載入的資料中保留位元。例如,大約20位元之RFLAGS資料儲存到異常堆疊上的一64位元記憶體位置。此有助於保留其餘40位元供未來使用。惟,目前並無適當有效的強制執行改策。現有的最佳改策僅只確定已保留之位元皆為零。這樣是不夠的,因為軟體會強迫所有「保留」位元為零,以滿足強制執行。惟,這意味著若硬體將所有保留位元設定為1,此1即不被軟體保留,基本上是在未來永遠強迫該位元為零,以確保和不當運作軟體的反向相容性。
100‧‧‧同屬向量友善指令格式
105‧‧‧無記憶體存取
110‧‧‧無記憶體存取、全捨入控制類型操作
112‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型操作
115‧‧‧無記憶體存取、資料變換類型操作
117‧‧‧無記憶體存取、寫入遮罩控制、vsize類型操作
120‧‧‧記憶體存取
125‧‧‧記憶體存取、暫存
127‧‧‧記憶體存取、寫入遮罩控制
130‧‧‧記憶體存取、非暫存
140‧‧‧格式欄位
142‧‧‧基礎操作欄位
144‧‧‧暫存器索引欄位
146‧‧‧修改符欄位
146A‧‧‧無記憶體存取
146B‧‧‧記憶體存取
150‧‧‧增益操作欄位
152‧‧‧甲欄位
152A‧‧‧RS欄位
152A1‧‧‧捨入
152A2‧‧‧資料變換
152B‧‧‧驅逐提示欄位
152B1‧‧‧暫存
152B2‧‧‧非暫存
152C‧‧‧寫入遮罩控制(Z)欄位
154‧‧‧乙欄位
154A‧‧‧捨入控制欄位
154B‧‧‧資料變換欄位
154C‧‧‧資料處理欄位
156‧‧‧抑制所有浮點異常欄位
157A‧‧‧RL欄位
157A1‧‧‧捨入
157A2‧‧‧向量長度
157B‧‧‧播送欄位
158‧‧‧捨入操作控制欄位
159A‧‧‧捨入操作控制欄位
159B‧‧‧向量長度欄位
160‧‧‧比例欄位
162A‧‧‧位移欄位
162B‧‧‧位移因數欄位
164‧‧‧資料元件寬度欄位
168‧‧‧類別欄位
168A‧‧‧A類
168B‧‧‧B類
170‧‧‧寫入遮罩欄位
172‧‧‧立即欄位
174‧‧‧全運算碼欄位
200‧‧‧特定向量友善指令格式
202‧‧‧EVEX前置碼
215‧‧‧運算碼映射欄位
220‧‧‧EVEX.vvvv欄位
225‧‧‧前置碼編碼欄位
230‧‧‧實數運算碼欄位
240‧‧‧MOD
R/M‧‧‧欄位
242‧‧‧MOD欄位
244‧‧‧Reg欄位
246‧‧‧R/M欄位
254‧‧‧SIB.xxx欄位
256‧‧‧SIB.bbb欄位
300‧‧‧暫存器架構
310‧‧‧向量暫存器
315‧‧‧寫入遮罩暫存器
325‧‧‧一般用途暫存器
345‧‧‧純量浮點堆疊暫存器檔案
400‧‧‧處理器管線
402‧‧‧擷取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段
408‧‧‧配置階段
410‧‧‧重新命名階段
412‧‧‧排程階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧寫回記憶體寫入階段
422‧‧‧異常處置階段
424‧‧‧確認階段
430‧‧‧前端單元
431‧‧‧指令擷取單元
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令轉譯後備緩衝器
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/配置器單元
454‧‧‧止用單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料轉譯後備緩衝器單元
474‧‧‧資料快取單元
476‧‧‧L2快取單元
490‧‧‧處理器核芯
500‧‧‧指令解碼器
502‧‧‧晶粒上互連網路
504‧‧‧L2快取之區域子集
506‧‧‧L1快取
506A‧‧‧L1資料快取
508‧‧‧純量單元
510‧‧‧向量單元
512‧‧‧純量暫存器
514‧‧‧向量暫存器
520‧‧‧拌和單元
522A,B‧‧‧數字轉換單元
524‧‧‧複製單元
526‧‧‧寫入遮罩暫存器
528‧‧‧16位寬算術邏輯單元
600‧‧‧處理器
602‧‧‧單一核芯
604‧‧‧快取單元
606‧‧‧共用快取單元
608‧‧‧特殊用途邏輯
610‧‧‧系統代理單元
612‧‧‧環狀互連單元
614‧‧‧整合式記憶體控制器單元
616‧‧‧匯流排控制器單元
700‧‧‧系統
710‧‧‧處理器
715‧‧‧處理器
720‧‧‧控制器集線器
740‧‧‧記憶體
745‧‧‧共處理器
750‧‧‧輸入/輸出集線器
760‧‧‧輸入/輸出裝置
790‧‧‧圖形記憶體控制器集線器
795‧‧‧連接器
800‧‧‧多處理器系統
814‧‧‧輸入/輸出裝置
815‧‧‧處理器
816‧‧‧第一匯流排
818‧‧‧匯流排橋接器
820‧‧‧第二匯流排
822‧‧‧鍵盤/滑鼠
824‧‧‧音頻輸入/輸出裝置
827‧‧‧通信裝置
828‧‧‧儲存器單元
830‧‧‧指令/碼及資料
832‧‧‧記憶體
834‧‧‧記憶體
838‧‧‧共處理器
839‧‧‧高性能介面
850‧‧‧點對點介面
852‧‧‧點對點介面
854‧‧‧點對點介面
870‧‧‧處理器
872‧‧‧控制邏輯
876‧‧‧點對點介面
878‧‧‧點對點介面
880‧‧‧處理器
882‧‧‧控制邏輯
886‧‧‧點對點介面
888‧‧‧點對點介面
890‧‧‧晶片組
894‧‧‧點對點介面電路
892,896‧‧‧介面
898‧‧‧點對點介面電路
900‧‧‧系統
914‧‧‧輸入/輸出裝置
915‧‧‧舊輸入/輸出裝置
1000‧‧‧系統晶片
1002‧‧‧互連單元
1010‧‧‧應用處理器
1020‧‧‧共處理器
1030‧‧‧靜態隨機存取記憶體單元
1032‧‧‧直接記憶體存取單元
1040‧‧‧顯示器單元
1102‧‧‧高階語言
1104‧‧‧x86編譯器
1106‧‧‧x86二進制碼
1108‧‧‧替代指令集編譯器
1110‧‧‧替代指令集二進制碼
1112‧‧‧指令轉換器
1114‧‧‧處理器
1116‧‧‧處理器
1200‧‧‧系統記憶體
1201‧‧‧分支目標緩衝器
1202‧‧‧分支預測單元
1203‧‧‧下一指令指標
1204‧‧‧指令轉譯後備緩衝器
1205‧‧‧一般用途暫存器
1206‧‧‧向量暫存器
1207‧‧‧遮罩暫存器
1210‧‧‧指令擷取單元
1211‧‧‧第二階(L2)快取
1212‧‧‧第一階(L1)快取
1216‧‧‧第三階(L3)快取
1220‧‧‧指令快取
1221‧‧‧資料快取
1230‧‧‧解碼器
1240‧‧‧執行邏輯
1250‧‧‧寫回/止用單元
1255‧‧‧處理器
1290‧‧‧記憶體管理單元
1291‧‧‧保留位元強制執行邏輯
1301‧‧‧保留位元
1302‧‧‧隨機位元
1303‧‧‧核對和位元
1310‧‧‧軟體
1316‧‧‧驗證邏輯
本發明之較佳瞭解可以從文後之詳細說明並配合下列圖式取得,其中:圖1A及1B係方塊圖,揭示根據本發明之實施例之一同屬向量友善指令格式及其指令樣板;圖2A-D係方塊圖,揭示根據本發明之實施例之一示範性特定向量友善指令格式;圖3係根據本發明之實施例之一暫存器架構之方塊圖;圖4A係方塊圖,揭示根據本發明實施例之一示範性有序擷取、解碼、止用管線及一示範性暫存器重新命名、亂序、發送/執行管線兩者; 圖4B係方塊圖,揭示根據本發明實施例之包括在一處理器中的一有序擷取、解碼、止用核芯示範實施例及一示範性暫存器重新命名、亂序、發送/執行架構核芯兩者;圖5A係一單一處理器核芯之方塊圖,連同其連接之晶粒上互連網路;圖5B係根據本發明實施例之圖5A中之處理器核芯的一部分之展開圖;圖6係根據本發明實施例之具有整合式記憶體控制器與圖形的一單核芯處理器及一多核芯處理器之方塊圖;圖7揭示根據本發明實施例之一系統之方塊圖;圖8揭示根據本發明實施例之第二系統之方塊圖;圖9揭示根據本發明實施例之第三系統之方塊圖;圖10揭示根據本發明實施例之一系統晶片(SoC)之方塊圖;圖11揭示方塊圖,根據本發明實施例對比使用一軟體指令轉換器將一來源指令集中之二進制指令轉換成一目標指令集中之二進制指令;圖12揭示可供本發明實施例實施於上之一示範性處理器;圖13揭示用於保留位元的強制執行順序的一實施例;及圖14揭示根據本發明實施例之一方法。
【發明內容及實施方式】
在文後之說明中,基於闡釋之目的,許多特定細節陳述用以提供對文後本發明之實施例的徹底瞭解,惟,對習於此技者而言,諸實施例也可以在沒有這些特定細節下實施。在其他例子中,習知結構及裝置係以方塊圖形式揭示,以免模糊本發明實施例下的原理。
示範性處理器架構及資料類型
一指令集包括一或多個指令格式。一給定指令格式界定許多欄位(位元數、位元位置),除了別的以外,用以指定欲執行之操作(運算碼)及供操作執行於其上之運算元。有些指令格式透過指令樣板(或子格式)之界定而進一步細分。例如,一給定指令格式之指令樣板可界定成具有指令格式欄位之不同子集(所包括之欄位典型上是依相同順序,但是至少某些有不同位元位置,因為鮮少有欄位包括在內)及/或界定成具有一不同解讀之給定欄位。因此,一ISA之各指令使用一給定指令格式來表示(且若界定時是在該指令格式之指令樣板之一給定者內),並包括用於指定操作及運算元之欄位。例如,一示範性ADD指令具有一特定運算元及一指令格式,指令格式包括一用以指定該運算元之運算元欄位及一用以選擇運算元之運算元欄位(來源1/目的地及來源2);並且此ADD指令在一指令流中之發生將在選擇特定運算元之運算元欄位中有特定內容。SIMD延伸之一組(稱為先進向量延伸(AVX)(AVX1及 AVX2)且使用向量延伸(VEX)編碼方案)已經發表(例如,請參閱Intel® 64 and IA-32 Architectures Software Developers Manual,October 2011,及參閱Intel® Advanced Vector Extensions Programming Reference,June 2011)。
示範性指令格式
本文內所述之指令實施例可依不同格式具體實施。此外,示範性系統、架構及管線係詳述於後。指令實施例可在諸系統、架構及管線上執行,但是不限於此細節。
A.同屬向量友善指令格式
一向量友善指令格式係一適用於向量指令之指令格式(例如,有特定用於向量操作的某些欄位)。儘管所揭述之實施例中兩向量及純量操作是透過向量友善指令格式支援,替代實施例僅使用向量操作向量友善指令格式。
圖1A-1B係方塊圖,揭示根據本發明之一實施例之一同屬向量友善指令格式及其指令樣板。圖1A係方塊圖,揭示根據本發明之一實施例之一同屬向量友善指令格式及其A類指令樣板;而圖1B係方塊圖,揭示根據本發明之一實施例之同屬向量友善指令格式及其B類指令樣板。較明確說,一同屬向量友善指令格式100用於界定A類及B類指令樣板,兩者皆包括無記憶體存取105指令樣板及記憶體存取120指令樣板。在向量友善指令格式之全文中的 術語「同屬」是指無關於任意特定指令集之指令格式。
儘管所揭述之本發明實施例中向量友善指令格式支援如下:一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位元組)資料元件寬度)。
圖1A中之A類指令樣板包括:1)在無記憶體存取105指令樣板內揭示一無記憶體存取、全捨入控制類型操作110指令樣板及一無記憶體存取、資料變換類型操作115指令樣板;及2)在記憶體存取120指令樣板內揭示一記憶體存取、暫存125指令樣板及一記憶體存取、非暫存130指令樣板。圖1B中之B類指令樣板包括:1)在無記憶體存取105指令樣板內揭示一無記憶體存取、寫入遮罩控制、部分捨入控制類型操作112指令樣板及一無記憶體 存取、寫入遮罩控制、向量長度(vsize)類型操作117指令樣板;及2)在記憶體存取120指令樣板內揭示一記憶體存取、寫入遮罩控制127指令樣板。
同屬向量友善指令格式100包括依圖1A-1B中所示順序列示於下之欄位。
格式欄位140-此欄位中之一特定值(一指令格式識別符值)唯一識別向量友善指令格式,及向量友善指令格式中之指令在指令流中的出現。就此而言,此欄位選項性意味著其並不為一僅有同屬向量友善指令格式之指令集所需。
基礎操作欄位142-其內容可區別不同基礎操作。
暫存器索引欄位144-其內容可直接或透過位址產生來指定來源及目的地運算元在暫存器或記憶體中之位置。這些包括定量之位元,以供從一PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案中選擇N暫存器。儘管在一實施例中N可以多達三來源及一目的地暫存器,替代實施例可支援較多或較少的來源及目的地暫存器(例如,可支援多達二來源且其中一來源也作為目的地,可支援多達三來源且其中一來源也作為目的地,可支援多達二來源及一目的地)。
修改符欄位146-其內容可將指令在指定記憶體存取之同屬向量指令格式中的出現區別於未指定者,亦即,在無記憶體存取105指令樣板與記憶體存取120指令樣板之間。記憶體存取操作讀取及/或寫入於記憶體階層(在一些 情況中,指定來源及/或目的地位址是使用暫存器中之值),而無記憶體存取操作則否(例如,來源及目的地為暫存器)。儘管在一實施例中此欄位也在三個不同方式之間選擇,以執行記憶體位址計算,替代實施例則可支援較多、較少、或不同方式,以執行記憶體位址計算。
增益操作欄位150-其內容可區別除了基礎操作外,欲執行諸多不同操作的哪一個。此欄位係上下文特定。在本發明之一實施例中,此欄位分成一類別欄位168、一甲欄位152、及一乙欄位154。增益操作欄位150容許共同之操作群組在單一指令中執行,而不是2、3、或4個指令。
比例欄位160-其內容容許索引欄位之內容對於記憶體位址產生成比例(例如,對於使用2scale *索引+基礎之位元址產生)。
位移欄位162A-其內容使用作為記憶體位址產生之一部分(例如,對於使用2scale *索引+基礎+位移之位址產生)。
位移因數欄位162B(請注意,位移欄位162A直接在位移因數欄位162B上方並列表示使用其一或另一個)-其內容使用作為位址產生之一部分;其指定一欲由記憶體存取之大小(N)定比例的位移因數,此處N為記憶體存取中之位元組數(例如,對於使用2scale *索引+基礎+比例位移之位址產生)。冗餘之低階位元可忽略不計且因此,位移因數欄位之內容乘以記憶體運算元全部大小(N),以利產 生用於計算一有效位址之最終位移。N值係基於全運算碼欄位174(如本文內所述)及資料處理欄位154C而由處理器硬體在運行時間決定。位移欄位162A及位移因數欄位162B選項性意味著其並不使用於無記憶體存取105指令樣板及/或不同實施例可以僅實施兩者之一或都不實施。
資料元件寬度欄位164-其內容可區別欲使用許多資料元件寬度的哪一個(在一些實施例中是針對所有指令;在其他實施例中則僅針對一些指令)。此欄位選項性意味著若僅一資料元件寬度受到支援及/或資料元件寬度係使用全運算碼之一些態樣支援,則此欄位即不需要。
寫入遮罩欄位170-其內容可在一每資料元件位置之基礎上控制目的地向量運算元中之資料元件位置是否反映基礎操作及增益操作的結果。A類指令樣板支援合併遮罩,而B類指令樣板兼具支援合併及歸零遮罩。當合併時,向量遮罩容許目的地中之元件之任意組免於在(由基礎操作及增益操作指定之)任何操作執行期間更新;在另一實施例中,保留目的地之各元件之舊值,此處之對應遮罩位元具有0值。對比之下,當歸零向量遮罩容許目的地中之元件之任意組在(由基礎操作及增益操作指定之)任何操作執行期間歸零時;在一實施例中,當對應遮罩位元具有0值時,目的地之一元件設定於0。此功能性之一子集為控制被執行之操作的向量長度的能力(亦即,被修改之元件的跨距,從第一個到最後一個);惟,非必要的是被修改之元件呈連續狀。因此,寫入遮罩欄位170容許部分的向量 操作,包括載入、儲存、算術、邏輯、等等。儘管本發明之實施例中寫入遮罩欄位170之內容選擇含有被使用之寫入遮罩的多數個寫入遮罩暫存器的其中之一(且因此寫入遮罩欄位170之內容間接識別被執行之遮罩),替代實施例改為或另外容許寫入遮罩欄位170之內容直接指定被執行之遮罩。
立即欄位172-其內容容許即時規定。此欄位選項性意味著其並不出現在不支援即時的同屬向量友善格式的執行中且不出現在不使用即時的指令中。
類別欄位168-其內容在指令的不同類別之間辨別。參考圖1A-B,此欄位之內容在A類與B類指令之間選擇。在圖1A-B中,圓角方形係用以表示一出現在一欄位中之特定值(例如,分別用於圖1A-B中之類別欄位168的A類168A及B類168B)。
A類指令樣板
在A類無記憶體存取105指令樣板之情況中,甲欄位152被解譯成一RS欄位152A,其內容可區別不同增益操作類型的哪一個應被執行(例如,捨入152A1及資料變換152A2各指定用於無記憶體存取、全捨入類型操作110及無記憶體存取、資料變換類型操作115指令樣板),而乙欄位154可區別指定類型的哪一操作應被執行。在無記憶體存取105指令樣板中,比例欄位160、位移欄位162A、及位移因數欄位162B並未出現。
無記憶體存取指令樣板-全捨入控制類型操作
在無記憶體存取、全捨入控制類型操作110指令樣板中,乙欄位154被解譯成一捨入控制欄位154A,其內容提供靜態捨入。儘管在揭述之本發明實施例中捨入控制欄位154A包括一抑制所有浮點異常(SAE)欄位156及一捨入操作控制欄位158,替代實施例則可支援將這些概念編碼成相同欄位或者僅有這些概念/欄位的其中之一或另一(例如,可以僅有捨入操作控制欄位158)。
SAE欄位156-其內容可區別是否停止異常事件報告;當SAE欄位156之內容表示抑制被允許時,一給定之指令不報告任意類型之浮點異常旗標且不引發任何浮點異常處置器。
捨入操作控制欄位158-其內容可區別一捨入操作群組中的哪一個應執行(例如,捨進、捨去、小數部分直接捨去、捨入至最接近數值)。因此,捨入操作控制欄位158在每一指令之基礎上容許捨入模式改變。在本發明之一實施例中,一處理器包括一用於指定捨入模式之控制暫存器,捨入操作控制欄位150之內容則可置換該暫存器值。
無記憶體存取指令樣板-資料變換類型操作
在無記憶體存取、資料變換類型操作115指令樣板中,乙欄位154被解譯成一資料變換欄位154B,其內容可區別多數資料變換的哪一個被執行(例如,無資料變 換、拌和、播放)。
在A類記憶體存取120指令樣板之情況中,甲欄位152被解譯成一驅逐提示欄位152B,其內容可區別驅逐提示的哪一個應被使用(在圖1A中,暫存152B.1及非暫存152B.2各指定用於記憶體存取、暫存125指令樣板及記憶體存取、非暫存130指令樣板),而乙欄位154被解譯成一資料處理欄位154C,其內容可區別多數資料處理操作(亦稱為基元)的哪一個應被執行(例如,無處理;播放;來源之上轉換;及目的地之下轉換)。記憶體存取120指令樣板包括比例欄位160及選項性地包括位移欄位162A或位移比例欄位162B。
向量記憶體指令使用轉換支援執行向量載入自記憶體及向量儲存至記憶體。隨著正常向量指令,向量記憶體指令以資料元件方式轉移資料往返於記憶體,且實際轉移之元件係由被選作寫入遮罩之向量遮罩的內容指定。
記憶體存取指令樣板-暫存
暫存資料係得利於快取而可能很快被再用的資料。惟,此為一提示且不同處理器可用不同方式執行,包括完全忽略提示。
記憶體存取指令樣板-非暫存
非暫存資料係得利於第一階快取中之快取而不可能很快被再用的資料,並應該給予優先驅逐。惟,此為一提示 且不同處理器可用不同方式執行,包括完全忽略提示。
B類指令樣板
在B類指令樣板之情況中,甲欄位152被解譯成一寫入遮罩控制(Z)欄位152C,其內容可區別由寫入遮罩欄位170控制之寫入遮罩是否應該是合併或歸零。
在B類無記憶體存取105指令樣板之情況中,乙欄位154之一部分被解譯成一RL欄位157A,其內容可區別不同增益操作類型的哪一個應被執行(例如,捨入157A.1及向量長度(VSIZE)157A.2各指定用於無記憶體存取、寫入遮罩控制、部分捨入控制類型操作112指令樣板及無記憶體存取、寫入遮罩控制、向量長度(VSIZE)類型操作117指令樣板),而乙欄位154之其餘可區別指定類型操作的哪一個應被執行。在無記憶體存取105指令樣板中,比例欄位160、位移欄位162A、及位移比例欄位162B並未出現。
在無記憶體存取、寫入遮罩控制、部分捨入控制類型操作110指令樣板中,乙欄位154之其餘被解譯成一捨入操作欄位159A且異常事件報告停止(一給定之指令不報告任意類型之浮點異常旗標且不引發任何浮點異常處置器)。
捨入操作控制欄位159A-如同捨入操作控制欄位158,其內容可區別一捨入操作群組中的哪一個應執行(例如,捨進、捨去、小數部分直接捨去、捨入至最接近數 值)。因此,捨入操作控制欄位159A在每一指令之基礎上容許捨入模式改變。在本發明之一實施例中,一處理器包括一用於指定捨入模式之控制暫存器,捨入操作控制欄位159A之內容則可置換該暫存器值。
在無記憶體存取、寫入遮罩控制、VSIZE類型操作117指令樣板中,乙欄位154之其餘被解譯成一向量長度欄位159B,其內容可區別多數資料向量長度的哪一個應執行(例如,128、256、或512位元組)。
在B類記憶體存取120指令樣板之情況中,乙欄位154之一部分被解譯成一播送欄位157B,其內容可區別播送類型資料處理操作是否被執行,而乙欄位154之其餘被解譯成向量長度欄位159B。記憶體存取120指令樣板包括比例欄位160及選項性地包括位移欄位162A或位移比例欄位162B。
關於同屬向量友善指令格式100,所揭示之一全運算碼欄位174包括格式欄位140、基礎操作欄位142、及資料元件寬度欄位164。儘管所示之實施例中全運算碼欄位174包括所有這些欄位,但是在未支援全部的實施例中,全運算碼欄位174包括較少於所有這些欄位。全運算碼欄位174提供操作碼(全運算碼)。
增益操作欄位150、資料元件寬度欄位164、及寫入遮罩欄位170在每一指令之基礎上容許這些特徵被指定於同屬向量友善指令格式中。
寫入遮罩欄位與資料元件寬度欄位之組合產生類型指 令,即其基於不同資料元件寬度而容許施加遮罩。
在A類及B類內發現之許多指令樣板有利於不同狀況。在一些實施例中,不同處理器或一處理器內之不同核芯可以僅支援A類、B類、或兩類皆支援。例如,一用於一般用途計算之高性能一般用途亂序核芯可以僅支援B類,一主要用於圖形及/或科學(流通量)計算之核芯可以僅支援A類,及一用於兩者之核芯可以兩類皆支援(當然,具有來自兩類之樣板與指令的某些混合,但是並非來自兩類之所有樣板與指令的核芯也在本發明之範圍內)。再者,單一處理器可包括多核芯,所有核芯支援同一類或不同核芯支援不同類。例如,在一具有各別圖形與一般用途核芯之處理器中,主要用於圖形及/或科學計算之其中一圖形核芯可以僅支援A類,同時一或多個一般用途核芯可以是具有亂序執行與暫存器重新命名以用於一般用途計算的高性能一般用途核芯,其僅支援B類。另一沒有各別圖形核芯之處理器可包括一或多個一般用途有序或亂序核芯,其支援A類及B類。當然,在本發明之不同實施例中,來自一類之特徵也可以在另一類中執行。以高階語言寫入之程式可置入(例如,及時編譯或靜態編譯)成許多不同之可執行形式,包括:1)一形式僅有由目標處理器支援執行之類別指令;或2)一形式具有使用所有類例指令之不同組合寫入之替代常式,且具有控制流動碼,可基於由目前執行碼之處理器支援的指令來選擇常式執行。
B.示範性特定向量友善指令格式
圖2係方塊圖,揭示根據本發明之一實施例之一示範性特定向量友善指令格式。圖2揭示一特定向量友善指令格式200,特定之意味在於其指定位置、大小、解讀、及欄位順序,以及一些欄位的值。特定向量友善指令格式200可用以延伸x86指令集,因此一些欄位相似或相同於現有x86指令集與其延伸(例如,AVX)中所用者。此格式仍與具有延伸的現有x86指令集之前置編碼欄位、實數運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。文後說明供圖2之欄位映射其中的圖1之欄位。
應該注意的是,儘管實施例為了說明而揭述參考於同屬向量友善指令格式100全文中之特定向量友善指令格式200,除了申請專利範圍,本發明並不限於特定向量友善指令格式200。例如,同屬向量友善指令格式100針對許多欄位而考量到許多可行之大小,而特定向量友善指令格式200則揭示成具有特定大小之欄位。舉特定範例而言,儘管資料元件寬度欄位164揭示成特定向量友善指令格式200中之一位元欄位,本發明並不限於此(亦即,同屬向量友善指令格式100考慮到其他大小之資料元件寬度欄位164)。
同屬向量友善指令格式100包括依圖2A中所示順序排列之以下欄位。
EVEX前置碼(位元組0-3)202-係以四位元組形式編 碼。
格式欄位140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位140且其含有0x62(在本發明之一實施例中用於區別向量友善指令格式的唯一值)。
第二至第四位元組(EVEX位元組1-3)包括多數個提供特定能力之位元欄位。
REX欄位205(EVEX位元組1,位元[7-5])-由一EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及157BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供與相對應VEX位元欄位相同功能性,並且使用第一補碼形式編碼,亦即,ZMM0編碼成1111B,ZMM15編碼成0000B。指令之其他欄位將暫存器索引之下三位元編碼已屬習知技術(rrr、xxx、bbb),所以Rrrr、Xxxx、及Bbbb可藉由附加EVEX.R、EVEX.X、及EVEX.B形成。
REX’欄位110-這是REX’欄位110的第一部分,並且是EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),用以編碼延伸32暫存器組之上16個或下16個。在本發明之一實施例中,此位元伴隨著文後所述之其他位元係以位元反格式儲存,以區別於(習知x86 32位元模式)BOUND指令,其實數運算碼位元組為62,但是在MOD R/M欄位(容後詳述)中不接受MOD欄位中之11值;替代實施例則不以反格式儲存此位元及後續其他位元。1值用以編碼下 16暫存器。換言之,R’Rrrr係藉由組合EVEX.R’、EVEX.R、及來自其他欄位的其他RRR形成。
運算碼映射欄位215(EVEX位元組1,位元[3:0]-mmmm)-其內容可編碼一隱含之前導運算碼位元組(0F、0F38、或0F3)。
資料元件寬度欄位164(EVEX位元組2,位元[7]-W)-係以記號EVEX.W代表。EVEX.W用以界定資料類型(32位元資料元件或64位元資料元件)之粒化(大小)。
EVEX.vvvv欄位220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括如下:1)EVEX.vvvv編碼以反(第一補碼)形式指定的第一來源暫存器運算碼且其對於具有2或多個來源運算元之指令有效;2)EVEX.vvvv編碼以第一補碼形式作某些向量移動指定的目的地暫存器運算碼;或3)EVEX.vvvv不編碼任何欄位,欄位保留且應該含有1111b。因此,EVEX.vvvv欄位220編碼以反(第一補碼)形式儲存之第一來源暫存器區分符之4低階位元。依據指令,一額外之不同EVEX位元欄位用以延伸區分符大小至32暫存器。
EVEX.U 168類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,表示A類或EVEX.U0;若EVEX.U=1,表示B類或EVEX.U1。
前置碼編碼欄位225(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前置碼編碼,且不需要擴充。
甲欄位152(EVEX位元組3,位元[7]-EH;亦稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α說明)-如上所述,此欄位係上下文指定。
乙欄位154(EVEX位元組3,位元[6:4]-SSS;亦稱為EVEX.s2-0,EVEX.r2-0,EVEX.rr1,EVEX.LL0,EVEX.LLB;亦以βββ說明)-如上所述,此欄位係上下文指定。
REX’欄位110-這是REX’欄位的其餘部分,並且是EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),用以編碼延伸32暫存器組之上16個或下16個。此位元係以位元反格式儲存。1值用以編碼下16個暫存器。換句話說,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv形成。
寫入遮罩欄位170(EVEX位元組3,位元[2:0]-kkk)-其內容可在寫入遮罩暫存器中指定一暫存器之索引。在本發明之一實施例中,指定值EVEX.kkk=000有一特殊行為,暗示未使用寫入遮罩於特定指令(此可依多樣方式實施,包括使用一硬連線於全體之寫入遮罩或繞過遮罩硬體之硬體)。
實數運算碼欄位230(位元組4)亦稱為運算碼位元組。運算碼的一部分係在此欄位中指定。
MOD R/M欄位240(位元組5)包括MOD欄位242、Reg欄位244、及R/M欄位246。如上所述,MOD欄位242之內容可在記憶體存取與無記憶體存取操作之間區別。Reg欄位244之角色可以總結成兩個狀況:編碼目的地暫存器運算元或來源暫存器運算元,或當作一運算碼延伸來處理且不用於編碼任何指令運算元。R/M欄位246之角色可包括如下:編碼參考於一記憶體位元址之指令運算元、或編碼目的地暫存器運算元或一來源暫存器運算元的任一者。
比例、索引、基礎(SIB)位元組(位元組6)-如上所述,比例欄位150之內容係用於記憶體位址產生。SIB.xxx欄位254及SIB.bbb欄位256-這些欄位的內容已參考相關於暫存器索引Xxxx及Bbbb。
位移欄位162A(位元組7-10)-當MOD欄位242含有10時,位元組7-10即位移欄位162A,且其工作係與舊有32位元位移(disp32)相同及以位元組粒化工作。
位移因數欄位162B(位元組7)-當MOD欄位242含有01時,位元組7即位移因數欄位162B。此欄位之位置係與舊有x86指令集8位元位移(disp8)相同,即以位元組粒化工作。由於disp8為符號延伸,其僅能定址於-128與127位元組偏置之間;依據64位元組快取列,disp8使用僅可設定於四個實際有效值-128、-64、0、及64之8位元;由於經常需要較大範圍,故使用disp32;惟,disp32需要4位元組。對比於disp8及disp32,位移因數欄位162B係disp8之重新解釋;當使用位移因數欄位1662B時,實際位移係由位移因數欄位之內容乘以記憶體運算元存取之大小(N)來決定。此位移類型稱為disp8*N。這減少了平均指令長度(單一位元組用於位移,但是有更大範圍)。此壓縮位移是基於有效位移為記憶體存取粒化之倍數的假設上,因此,定址位移之冗餘低階位元即不需要編碼。換句話說,位移因數欄位162B取代舊有x86指令集8位元位移。因此,位移因數欄位162B係以和x86指令集8位元位移相同方式編碼(所以ModRM/SIB編碼規則不變),例外的是disp8過載成disp8*N。換句話說,編碼規則或編碼長度並未改變,只有硬體在解釋位移值時不同(必須以記憶體運算元之大小標示位移,以取得一位元組定址位移)。
立即欄位172係依上述操作。
全運算碼欄位
圖2B係方塊圖,揭示根據本發明之實施例之構成全運算碼欄位174的特定向量友善指令格式200之欄位。較明確說,全運算碼欄位174包括格式欄位140、基礎操作欄位142、及資料元件寬度(W)欄位164。基礎操作欄位142包括前置碼編碼欄位225、運算碼映射欄位215、及實數運算碼欄位230。
暫存器索引欄位
圖2C係方塊圖,揭示根據本發明之實施例之構成暫存器索引欄位144的特定向量友善指令格式200之欄位。較明確說,暫存器索引欄位144包括REX欄位205、REX’欄位210、MODR/M.reg欄位244、MODR/M.r/m欄位246、VVVV欄位220、xxx欄位254、及bbb欄位256。
增益操作欄位
圖2D係方塊圖,揭示根據本發明之實施例之構成增益操作欄位150的特定向量友善指令格式200之欄位。當類別(U)欄位168含有0時,表示EVEX.U0(A類168A);當其含有1時,表示EVEX.U1(B類168B),當U=0且MOD欄位242含有11時(表示一無記憶體存取操作),甲欄位152(EVEX位元組3,位元[7]-EH)係解譯成rs欄位152A。當rs欄位152A含有1(捨入152A1)時,乙欄位154(EVEX位元組3,位元[6:4]-SSS)解譯成捨入控制欄位 154A。捨入控制欄位154A包括一一位元SAE欄位156及一兩位元捨入操作控制欄位158。當rs欄位152A含有0(資料變換152A2)時,乙欄位154(EVEX位元組3,位元[6:4]-SSS)係解譯成一三位元資料變換欄位154B。當U=0且MOD欄位242含有00、01、或10時(表示一記憶體存取操作),甲欄位152(EVEX位元組3,位元[7]-EH)係解譯成驅逐提示(EH)欄位152B且乙欄位154(EVEX位元組3,位元[6:4]-SSS)解譯成一三位元資料處理欄位154C。
當U=1時,甲欄位152(EVEX位元組3,位元[7]-EH)係解譯成寫入遮罩控制(Z)欄位152C。當U=1且MOD欄位242含有11時(表示一無記憶體存取操作),乙欄位154之一部分(EVEX位元組3,位元[4]-S0)解譯成RL欄位157A;當其含有1(捨入157A.1)時,乙欄位154之其餘(EVEX位元組3,位元[6-5]-S2-1)解譯成捨入操作控制欄位159A,而當RL欄位157A含有0(VSIZE 157A.2)時,乙欄位154之其餘(EVEX位元組3,位元[6-5]-S2-1)解譯成向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位242含有00、01、或10時(表示一記憶體存取操作),乙欄位154(EVEX位元組3,位元[6:4]-SSS)解譯成向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)及播送欄位157B(EVEX位元組3,位元[4]-B)。
C.示範性暫存器架構
圖3係根據本發明之實施例之一暫存器架構300之方 塊圖。在所示之實施例中有512位元寬之32向量暫存器310;這些暫存器參考為zmm0至zmm31。下16zmm暫存器之低階256位元覆蓋在暫存器ymm0-16上。下16zmm暫存器之低階128位元(ymm暫存器之低階128位元)覆蓋在暫存器xmm0-15上。特定向量友善指令格式200係依下表內所示操作於這些覆蓋暫存器檔案上。
Figure 105137682-A0202-12-0025-1
換句話說,向量長度欄位159B在一最大長度與一或多個其他較短長度之間選擇,而各較短長度為前一長度的一半;且無向量長度欄位159B之指令樣板是以最大向量長度操作。再者,在一實施例中,特定向量友善指令格式200之B類指令樣板是在緊縮或純量單/雙精度浮點資料及緊縮或純量整數資料上操作。純量操作係在一zmm/ymm/xmm暫存器中之最低階資料元件位置上執行;較高階資料元件位置則和其在指令之前或歸零時相同,此依據實施例而定。
寫入遮罩暫存器315-在揭示之實施例中,有8寫入遮罩暫存器(k0至k7),各為64位元大小。在一替代實施例中,寫入遮罩暫存器315為16位元大小。如上所述,在本發明之一實施例中,向量遮罩暫存器k0無法使用作為一寫入遮罩;當正常情況下表示k0之編碼被使用於一寫入遮罩時,其選擇一硬連線之寫入遮罩0xFFFF,有效地停止對於該指令之寫入遮罩。
一般用途暫存器325-在所示之實施例中有16個64位元一般用途暫存器,其伴隨著現有之x86定址模式使用,以便定址記憶體運算元。這些暫存器稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)345,其別名為MMX緊縮整數平面暫存器檔案350-在所示之實施例中,x87堆疊係八元件堆疊,用以對使用x87指令集延伸之32/64/80位元浮點資料執行純量浮點操作;同時MMX暫存器用以對64位元緊縮整數資料執行操作,以及為在MMX與XMM暫存器之間執行的一些操作保留運算元。
本發明之替代實施例可使用較寬或較窄之暫存器。此外,替代實施例可使用較多、較少、或不同暫存器檔案及暫存器。
D.示範性核芯架構、處理器、及電腦架構
處理器核芯可依不同方式、針對不同用途、及在不同處理器中實施。例如,諸核芯之實施方式包括:1)用於一 般用途計算之一般用途有序核芯;2)用於一般用途計算之高性能一般用途亂序核芯;3)基本上用於圖形及/或科學(通量)計算之特殊用途核芯。不同處理器之實施方式包括:1)一CPU,包括一或多個用於一般用途計算之一般用途有序核芯及/或一或多個用於一般用途計算之一般用途亂序核芯;及2)一共處理器,包括一或多個用於圖形及/或科學(流通量)之特殊用途核芯。這些不同處理器導致不同電腦系統架構,其可包括:1)共處理器,設在一來自CPU之個別晶片上;2)共處理器,設在一與CPU相同封裝中之個別晶粒上;3)共處理器,設在與CPU相同之晶粒上(在此情況中,此共處理器有時稱為特殊用途邏輯,例如整合式圖形及/或科學(通量)邏輯,或特殊用途核芯);及4)一系統,設在一包括相同晶粒上有上述CPU(有時稱為應用核芯或應用處理器)、上述共處理器、及其他功能之晶片上。示範性核芯架構將藉由示範性處理器及電腦架構之說明揭述於後。
圖4A係方塊圖,揭示根據本發明實施例之一示範性有序管線及一示範性暫存器重新命名亂序發送/執行管線。圖4B係方塊圖,揭示根據本發明實施例之包括在一處理器中的一有序架構核芯示範實施例及一示範性暫存器重新命名亂序發送/執行架構核芯兩者。圖4A-B中之實線框說明有序管線及有序核芯,而虛線框之選項性附加則說明暫存器重新命名亂序發送/執行管線及核芯。已知有序態樣為亂序態樣之一子集,亂序態樣將揭述於後。
在圖4A中,一處理器管線400包括一擷取階段402、一長度解碼階段404、一解碼階段406、一配置階段408、一重新命名階段410、一排程(亦稱為配送或發送)階段412、一暫存器讀取/記憶體讀取階段414、一執行階段416、一寫回/記憶體寫入階段418、一異常處置階段422、及一確認階段424。
圖4B揭示處理器核芯490包括一前端單元430耦合於一執行引擎單元450,且兩者皆耦合於一記憶體單元470。核芯490可以是一精簡指令集計算(RISC)核芯、複雜指令集計算(CISC)核芯、超長指令字(VLIW)核芯、或混合式或替代式核芯類型。就另一選項而言,核芯490可以是一特殊用途核芯,例如像是一網路或通信核芯、壓縮引擎、共處理器核芯、一般用途計算圖形處理單元(GPGPU)核芯、圖形核芯、或類似者。
前端單元430包括一分支預測單元432耦合於一指令快取單元434,指令快取單元耦合於一指令轉譯後備緩衝器(TLB)436,指令轉譯後備緩衝器則耦合於一指令擷取單元438,指令擷取單元耦合於一解碼單元440。解碼單元440(或解碼器)可解碼指令,且產生作為輸出一或多個微操作、微碼輸入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或反映、或導出。解碼單元440可以使用許多不同機構實施。適合之機構範例包括但是不限定的有查詢表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中, 核芯490包括一微碼ROM或儲存某些巨指令(例如,在解碼單元440中或在前端單元430內)用之微碼的其他媒體。解碼單元440耦合於執行引擎單元450中之一重新命名/配置器單元452。
執行引擎單元450包括重新命名/配置器單元452,重新命名/配置器單元耦合於一止用單元454及一組的一或多個排程器單元456。排程器單元456代表任意數量之不同排程器,包括保留站、中央指令窗、等等。排程器單元456耦合於實體暫存器檔案單元458。各實體暫存器檔案單元458代表一或多個實體暫存器檔案,不同之實體暫存器檔案儲存一或多個不同資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,一指令指標,即欲執行之下一指令之位元址)、等等。在一實施例中,實體暫存器檔案單元458包含一向量暫存器單元、一寫入遮罩暫存器單元、及一純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元458由止用單元454重疊,以便說明可以實施暫存器重新命名及亂序執行的不同方式(例如,使用重排序緩衝器及止用暫存器檔案;使用未來檔案、歷史緩衝器、及止用暫存器檔案;使用暫存器圖及暫存器庫、等等)。止用單元454及實體暫存器檔案單元458耦合於執行叢集460。執行叢集460包括一組的一或多個執行單元462及一組的一或多個記憶體存取單元464。執行單元462可執行許多操作(例 如,移位、加、減、乘)及在許多資料類型上執行(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。儘管一些實施例包括許多專用於特定功能成功能組之執行單元,其他實施例可以包括僅一執行單元或全執行所有功能之多數個執行單元。排程器單元456、實體暫存器檔案單元458、及執行叢集460揭示成可能呈複數,因為某些實施例係針對資料/操作之某些類型產生個別管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各有自己的排程器單元、實體暫存器檔案單元、及/或執行叢集,而且在個別記憶體存取管線之情況中,某些實施例僅在此管線之執行叢集具有記憶體存取單元464時實施)。亦應瞭解的是在使用個別管線之場合中,這些管線之一或多者可以是亂序發送/執行且其餘是有序。
該組記憶體存取單元464耦合於記憶體單元470,記憶體單元包括一資料TLB單元472,資料TLB單元耦合於一資料快取單元474,資料快取單元耦合於一第二階(L2)快取單元476。在一示範實施例中,記憶體存取單元464可包括一載入單元、一儲存位址單元、及一儲存資料單元,其各耦合於記憶體單元470中之資料TLB單元472。指令快取單元434進一步耦合於記憶體單元470中之第二階(L2)快取單元476。L2快取單元476耦合於快取之其他一或多階且最後耦合於一主記憶體。
舉例而言,示範性暫存器重新命名亂序發送/執行核 芯架構可實施管線400如下:1)指令擷取單元438執行擷取及長度解碼階段402、404;2)解碼單元440執行解碼階段406;3)重新命名/配置器單元452執行配置階段408及重新命名階段410;4)排程器單元456執行排程階段412;5)實體暫存器檔案單元458及記憶體單元470執行暫存器讀取/記憶體讀取階段414;執行叢集460執行執行階段416;6)記憶體單元470及實體暫存器檔案單元458執行寫回/記憶體寫入階段418;7)許多單元可介入異常處置階段422;及8)止用單元454及實體暫存器檔案單元458執行確認階段424。
核芯490可支援一或多個指令集(例如,x86指令集(具有已加入較新版本的一些延伸);加州桑尼維爾市MIPS Technologies公司之MIPS指令集;桑尼維爾市ARM Holdings公司之ARM®指令集(具有選項性之其他延伸,例如NEON)),包括本文內所述之指令。在一實施例中,核芯490包括邏輯器,以支援一封包資料指令集延伸(例如,AVX1、AVX2),藉以容許由許多多媒體應用程式使用之操作可使用封包資料執行。
應該瞭解的是核芯可支援多線執行(執行操作或線之二或多個平行組),且可依許多方式進行,包括時間切割多線執行、同時多線執行(其中單一實體核芯提供一邏輯核芯給各線,實體核芯係同時多線執行)、或其組合(例如,時間切割擷取及解碼並且隨後同時多線執行,像是Intel® Hyperthreading科技)。
儘管暫存器重新命名揭述於亂序執行之內文中,應該瞭解的是暫存器重新命名可用在有序架構。儘管處理器之揭示實施例亦包括個別指令與資料快取單元434/474及一共用L2快取單元476,替代實施例可具有一同時用於指令與資料之單一內部快取,例如第一階(L1)內部快取,或多階內部快取。在一些實施例中,系統可包括一內部快取與一設於核芯及/或處理器外之外部快取的組合。或者,所有快取皆在核芯及/或處理器外。
圖5A-B係一較特定示範性有序核芯架構之方塊圖,核芯為一晶片中之多數個邏輯方塊(包括同型及/或不同型之其他核芯)的其中之一。邏輯方塊透過一高頻寬互連網路(例如,環狀網路)通信於一些固定功能邏輯、記憶體輸入/輸出(I/O)介面、及其他所需之輸入/輸出(I/O)邏輯,此視應用而定。
圖5A係根據本發明實施例之一單一處理器核芯之方塊圖,連同其連接之晶粒上互連網路502及其第二階(L2)快取504之區域子集。在一實施例中,一指令解碼器500以一緊縮資料指令集延伸支援x86指令集。一L1快取506容許低潛時存取,以快取記憶體至純量及向量單元。在一實施例中(為了簡化設計),一純量單元508及一向量單元510使用個別暫存器組(分別為純量暫存器512及向量暫存器514),且在其間轉移之資料寫入記憶體及隨後從第一階(L1)快取506讀回,替代實施例可使用不同方式(例如,使用單一暫存器組或包括一通信路徑,容許資料在兩 暫存器檔案之間轉移,不需寫入及讀回)。
L2快取504之區域子集為一全域L2快取之一部分,全域L2快取分割成個別區域子集且每一處理器核芯有一區域子集。各處理器核芯具有一直接存取路徑通往其自身之L2快取504之區域子集。由一處理器核芯讀取之資料儲存在L2快取504中且可快速存取,即與存取自身區域L2快取子集之其他處理器核芯並行。由一處理器核芯寫入之資料儲存在其自身之L2快取子集504中且必要時從其他子集清除。環狀網路可確保共用資料之一致性。環狀網路係雙向性,以容許代理模組像是處理器核芯、L2快取及其他邏輯方塊在晶片內彼此通信。各環狀資料路徑為每個方向有1012位元寬。
圖5B係根據本發明實施例之圖5A中之處理器核芯的一部分之展開圖。圖5B包括L1資料快取506A,即L1快取506之一部分,以及關於向量單元510及向量暫存器514之較多細節。較明確說,向量單元510係16位寬向量處理單元(VPU)(參閱16位寬算術邏輯單元(ALU)528),其執行整數、單精度浮點數、及雙精度浮點數指令。VPU使用拌和單元520支援拌和暫存器輸入、使用數字轉換單元522A-B支援數字轉換、及使用記憶體輸入瑞上之複製單元524複製。寫入遮罩暫存器526容許預測之生成向量寫入。
圖6係根據一實施例之一具有多核芯、具有一整合式記憶體控制器、及具有整合圖形的處理器600之方塊圖。 圖6中之實線框說明一具有單一核芯602A、一系統代理單元610、一組的一或多個匯流排控制器單元616之處理器600,而虛線框之選項性附加則說明一具有多核芯602A-N、系統代理單元610中之一組的一或多個整合式記憶體控制器單元614、及特殊用途邏輯608之替代性處理器600。
因此,處理器600之不同實施方式可包括:1)一CPU,具有特殊用途邏輯608,係整合式圖形及/或科學(通量)邏輯(其可包括一或多個核芯),及核芯602A-N,係一或多個一般用途核芯(例如,一般用途有序核芯、一般用途亂序核芯、兩者之組合);2)一共處理器,具有核芯602A-N,係大量特殊用途核芯,主要用於圖形及/或科學(流通量);及3)一共處理器,具有核芯602A-N,係大量一般用途有序核芯。因此,處理器600可以是一般用途處理器、共處理器或特殊用途處理器,例如像是網路或通信處理器、壓縮引擎、圖形處理器、GPGPU(一般用途計算圖形處理單元)、高通量多重整合核芯(MIC)處理器(包括30或更多核芯)、嵌入式處理器、或類似者。處理器可在一或多個晶片上實施。處理器600可以是一或多個基板之一部分及/或使用許多製程技科之任一者實施於基板上,例如像是BiCMOS、CMOS、或NMOS。
記憶體階層包括核芯內之一或多階快取、一組或一或多個共用快取單元606、及耦合於整合式記憶體控制器單元組614的外部記憶體(圖中未示)。共用快取單元組606 可包括一或多個中階快取,例如第二階(L2)、第三階(L3)、第四階(L4),或其他階快取、最末階快取(LLC)、及/或其組合。儘管在一實施例中一環狀互連單元612將整合式圖形邏輯608、共用快取單元組606、及系統代理單元610/整合式記憶體控制器單元614互連,替代實施例可使用任意數量之習知技術將諸單元互連。在一實施例中,階層維持在一或多個快取單元606與核芯602A-N之間。
在一些實施例中,核芯602A-N之一或多者可以多線操作。系統代理單元610包括用以協調與操作核芯602A-N之諸組件。系統代理單元610可包括例如一電力控制單元(PCU)及一顯示單元。PCU可以是或包括用以調節核芯602A-N與整合式圖形邏輯608之電力狀態所需的邏輯及組件。顯示單元用以驅動一或多個外接顯示器。
依據架構指令集,核芯602A-N可以是均質性或異質性;亦即,核芯602A-N之二或多者可以執行同一指令集,而其他核芯可以僅執行指令集之一子集或一不同指令集。
圖7-10係示範性電腦架構之方塊圖。膝上型、桌上型、掌上型個人電腦、個人數位化助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲機、機上盒、微控制器、行動電話、可攜式媒體播放器、掌上型裝置、及許多其他電子裝置技藝中習知之其他系統設計與構型亦適用。大抵上,可併入本文內所述之一處理器及/或其他 執行邏輯的廣泛系統或電子裝置皆大致適用。
請即參閱圖7,揭示根據本發明之一實施例之一系統700之方塊圖。系統700可包括一或多個處理器710、715,其耦合於一控制器集線器720。在一實施例中,控制器集線器720包括一圖形記憶體控制器集線器(GMCH)790及一輸入/輸出集線器(IOH)750(其可設在個別晶片上);GMCH 790包括記憶體及圖形控制器,供記憶體740及一共處理器745耦合於此;IOH 750將輸入/輸出(I/O)裝置760耦合於GMCH 790。或者,記憶體及圖形控制器的其中之一或兩者係在處理器內整合(如本文內所述),記憶體740及共處理器745直接耦合於處理器710,及控制器集線器720係與IOH 750設在單一晶片中。
附加處理器715之選項性性質係在圖7中以虛線表示。各處理器710、715可包括本文內所述處理器核芯之一或多者及可以是處理器600之某些版本。
記憶體740例如可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器720透過多點匯流排(例如,前側匯流排(FSB))、點對點介面(例如,快速通道互連(QPI))、或類似連接器795,以通信處理器710、715。
在一實施例中,共處理器745係特殊用途處理器,例如像是高通量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或類似者。在一實施例中,控制器集線器720可包括一整合式圖形加速 器。
依據指標量度範圍,包括架構上、微架構上、溫度上、耗電特徵、及類似者,實體資源710、715之間可以有許多差異。
在一實施例中,處理器710執行控制一般類型資料處理操作之指令。嵌入指令內者可以是共處理器指令。處理器710將這些共處理器指令辨識成一應該由附接共處理器745執行之類型。據此,處理器710在一共處理器匯流排或其他互連上發送這些共處理器指令(或代表共處理器指令之控制信號)到共處理器745。共處理器745接收及執行所收到之共處理器指令。
請即參閱圖8,揭示根據本發明之一實施例之第一較特定示範系統800之方塊圖。如圖8中所示,多處理器系統800係點對點互連系統,且包括透過一點對點互連850耦合之第一處理器870及第二處理器880。處理器870、880各為處理器600之某些版本。在本發明之一實施例中,處理器870、880分別為處理器710、715,同時共處理器838為共處理器745。在另一實施例中,處理器870、880分別為處理器710、共處理器745。
處理器870、880揭示成分別包括整合式記憶體控制器(IMC)單元872、882。處理器870亦包括點對點(P-P)介面876、878,做為其匯流排控制器單元之一部分;相似地,第二處理器880包括P-P介面886、888。處理器870、880可以使用P-P介面電路878、888透過一點對點 (P-P)介面850交換資訊。如圖8中所示,IMCs 872、882將處理器耦合於個別記憶體,亦即一記憶體832及一記憶體834,其可以是區域性附接於個別處理器之主記憶體的部分。
處理器870、880可以使用點對點介面電路876、894、886、898透過個別P-P介面852、854,以和一晶片組890交換資訊。晶片組890可以透過一高性能介面839選項性地和共處理器838交換資訊。在一實施例中,共處理器838係一特殊用途處理器,例如像是高通量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或類似者。
一共用快取(圖中未示)可包括在兩處理器之任一者內或在其外,並且透過P-P互連與處理器連接,所以如果一處理器處於低電力模式,則任一或兩處理器之區域快取資訊可儲存於共用快取中。
晶片組890可以透過一介面896耦合於第一匯流排816。在一實施例中,第一匯流排816可以是周邊組件互連(PCI)匯流排,或是一例如PCI高速匯流排或另一第三代I/O互連匯流排,儘管本發明之範疇並非如此限制。
如圖8中所示,許多輸入/輸出(I/O)裝置814可以隨著一匯流排橋接器818耦合於第一匯流排816,匯流排橋接器則將第一匯流排816耦合於第二匯流排820。在一實施例中,一或多個附加處理器815,例如像是共處理器、高通量MIC處理器、GPGPU、加速器(例如像是圖形加速 器或數位信號處理(DSP)單元)、場可編程閘陣列、或任意其他處理器,皆可耦合於第一匯流排816。在一實施例中,第二匯流排820可以是一低針腳數(LPC)匯流排。許多裝置可耦合於第二匯流排820,包括例如鍵盤及/或滑鼠822、通信裝置827及一儲存器單元828,像是磁碟驅動器或其他大容量儲存裝置,其在一實施例中可包括指令/碼及資料830。再者,一音頻輸入/輸出裝置(I/O)824可耦合於第二匯流排820。應該注意的是,其他架構亦可行。例如取代圖8之點對點架構時,一系統可在一多點匯流排或其他這類架構中實施。
請即參閱圖9,揭示根據本發明之一實施例之第二較特定示範系統900之方塊圖。圖8及9中之相同元件使用相同參考編號,且圖8之某些態樣已從圖9刪略,以避免模糊圖9之其他態樣。
圖9揭示處理器870、880各別包括整合式記憶體及I/O控制邏輯(CL)872、882。因此,CL 872、882包括整合式記憶體控制器單元及包括I/O控制邏輯。圖9揭示不僅記憶體832、834耦合於CL 872、882,I/O裝置914亦耦合於CL 872、882。舊I/O裝置915耦合於晶片組890。
請即參閱圖10,揭示根據本發明之一實施例之一系統晶片(SoC)1000之方塊圖。圖6中之相同元件使用相同參考編號,再者,虛線框為較先進SoCs上之選項性特徵。在圖10中,一互連單元1002耦合於:一應用處理器 1010,其包括一組的一或多個核芯202A-N及共用快取單元606;一系統代理單元610;一匯流排控制器單元616;一整合式記憶體控制器單元614;一組或一或多個共處理器1020,其可包括整合式圖形邏輯、一影像處理器、一音頻處理器、及一視頻處理器;一靜態隨機存取記憶體(SRAM)單元1030;一直接記憶體存取(DMA)單元1032;及一顯示器單元1040,用以耦合於一或多個外顯示器。在一實施例中,共處理器1020包括一特殊用途處理器,例如像是網路或通信處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、或類似者。
本文內所揭露機構之本發明實施例可實施於硬體、軟體、韌體、或諸實施方式之組合中。諸實施例可實施作為在含有至少一處理器、一儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上執行之電腦程式或程式碼。
程式碼(例如,圖8中所示之碼830)可施加於輸入指令,以執行本文內所述之功能且產生輸出資訊。輸出資訊可依習知方式施加於一或多個輸出裝置。針對此應用目的,一處理系統包括任意系統,其具有例如像是一數位信號處理器(DSP)、一微控制器、一專用積體電路(ASIC)、或一微處理器。
程式碼可用一高階程式或面向對象編程語言實施,以利通信一處理系統。若有需要,程式碼也可用總成或機器語言實施。事實上,本文內所述之機構範疇並不限於任意 特殊編程語言。在任意情況中,語言可以是編譯或解譯語言。
至少一實施例之一或多個態樣可以藉由儲存在一機器可讀取媒體上之代表指令實施,其代表處理器內之許多邏輯,當由一機器讀取時,其致使機器組合邏輯以執行本文內所述之技術。此代表性(俗稱為IP核芯)可以儲存在一實體機器可讀取媒體上且供給至許多客戶或製造廠,以載入實際製成邏輯或處理器之製造機器內。
此機器可讀取儲存媒體可包括但是不限定的有由一機器或裝置製造或形成之物件之非暫態、實體配置,包括儲存媒體,像是硬碟、任意其他類型碟片(包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟)、半導體裝置(像是唯讀記憶體(ROM)、隨機存取記憶體(RAM),像是動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁性或光學性卡、或適用於儲存電子指令之任意其他類型媒體。
據此,本發明之實施例亦包括非暫態、含有指令或含有設計資料之實體機器可讀取媒體,例如硬體說明語言(HDL),其界定本文內所述之結構、電路、裝置、處理器及/或系統。諸實施例亦稱為程式產物。
在一些情況中,一指令轉換器可用以將一來自一來源指令集之指令轉換成一目標指令集。例如,指令轉換器可 以翻譯(例如,使用靜態二進制翻譯、包括有動態編譯之動態二進制翻譯)、轉譯、仿真、或者轉換一指令成一或多個欲供核芯處理之其他指令。指令轉換器可實施於硬體、軟體、韌體、或其組合中。指令轉換器可以在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖11係方塊圖,根據本發明實施例對比使用一軟體指令轉換器將一來源指令集中之二進制指令轉換成一目標指令集中之二進制指令。在所示之實施例中,指令轉換器係一軟體指令轉換器,儘管指令轉換器在替代型式上可實施於軟體、韌體、硬體、或其許多組合中。圖11揭示一高階語言1102中之一程式可使用一x86編譯器1104編譯,以產生x86二進制碼1106,其原本即由一具有至少一x86指令集核芯之處理器1116執行。具有至少一x86指令集核芯之處理器1116代表大致上可與具有至少一x86指令集核芯之Intel處理器執行相同的功能,即其藉由相容執行或處理(1)Intel x86指令集核芯之指令集之一實質部分或(2)目標在一具有至少一x86指令集核芯之Intel®處理器上運算的應用程式或共他軟體之目標碼版本,以利達成與具有至少一x86指令集核芯之Intel®處理器大致相同的結果。x86編譯器1104代表一編譯器,其可操作成產生x86二進制碼1106(例如,目標碼),在有或無附加連結處理下可以在具有至少一x86指令集核芯之處理器1116上執行。相似地,圖11揭示高階語言1102中之程式可使用一替代指令集編譯器1108編譯,以產生替 代指令集二進制碼1110,其原本即由一未具有至少一x86指令集核芯1114之處理器執行(例如,一具有核芯可執行加州桑尼維爾市MIPS Technologies公司之MIPS指令集及/或執行英格蘭劍橋市ARM Holdings公司之ARM指令集的處理器)。指令轉換器1112用以將x86二進制碼1106轉換成原本即由未具有一x86指令集核芯之處理器1114執行的碼。此轉換碼不易成為替代指令集二進制碼1110,因為可達成此目的之指令轉換器難以製造;惟,轉換碼可完成一般操作及由來自替代指令集之指令組成。因此,指令轉換器1112代表軟體、韌體、硬體、或其組合,其透過仿真、模擬或任意其他程式而容許一處理器或其他電子裝置不具有一x86指令集處理器或核芯,即可執行x86二進制碼1106。
用於保留位元的強制執行的裝置及方法
如上所述,在許多情況中,ISA界定需要在已儲存於記憶體內並且隨後載入的資料中保留位元。例如,大約20位元之RFLAGS資料儲存到異常堆疊上的一64位元記憶體位置。此有助於保留其餘40位元供未來使用。惟,目前並無適當有效的強制執行政策。現有的最佳政策僅只確定已保留之位元皆為零。這樣是不夠的,因為軟體會強制所有「保留」位元為零,以滿足強制執行。惟,這意味著若硬體將所有保留位元設定為1,此1即不被軟體保留,基本上是在未來永遠強迫該位元為零,以確保和不當 運作軟體的反向相容性。
為了提出此項限制,在一實施例中,當儲存保留之位元時,其係以虛擬隨機模式填入,該模式包括錯誤偵測位元,像是同位位元、核對和、或循環冗餘核對(CRC)碼。亦即,本發明為一種簡便且有效率的方法,處理器供應商不需要公布測試虛擬隨機模式是否有效,以致使一真實隨機模式無法以高的機率測試。
較明確說,在一實施例中,當處理器以保留位元將一些資料推向記憶體時,保留位元分裂成兩群組。第一群組含有一在各例中皆不相同之任意虛擬隨機模式。第二群組含隨機位元之核對和。隨機位元與核對和位元之數量可調整成將機率最大化,即保留位元之任意組合之改變皆可偵測到。群組可以在保留位元欄位內交插或相連。
在一實施例中,處理器令軟體以提供之資料執行其預期功能。處理器隨後從記憶體載入資料(不必從同一位置,因為其可能已被軟體移動)。載入時,硬體驗證第二保留位元群組之核對和位元匹配於第一保留位元群組之虛擬隨機位元。若位元失配,處理器即判定軟體已處理該保留位元,並且造成一適當錯誤狀況,像是硬體異常。否則,處理器將以軟體並未處理該保留位元的高信任度繼續正常執行。
圖12揭示可供本發明實施例實施於其上之一示範性處理器1255。如圖所示,一執行記憶體操作(例如,載入/儲存操作)之記憶體管理單元1290包括保留位元強制執行 邏輯1291,用於實施本文內所述之保留位元強制執行技術。惟,應該注意的是保留位元強制執行邏輯1291可以在處理器之其他單元內實施,例如,執行單元1240。
示範性處理器1255亦包括複數個核芯0-N,各核芯包括一組一般用途暫存器(GPR)1205、一組向量暫存器1206、及一組遮罩暫存器1207。在一實施例中,多數個向量資料元件緊縮在各向量暫存器1206中,向量暫存器可具有一個512位元寬度,用於儲存兩個256位元值、四個128位元值、八個64位元值、十六個32位元值,等等。惟,在本發明原理下並不限於向量資料之任意特定大小/類型。在一實施例中,遮罩暫存器1207包括八個64位元運算元遮罩暫存器,用於對儲存在向量暫存器1206中之值執行位元遮罩運算(例如,如同上述遮罩暫存器k0-k7實施方式)。惟,在本發明原理下並不限於任意特定遮罩暫存器大小/類型。
為了簡明起見,一單一處理器核芯(核芯0)之細部結構將揭示於圖12中。惟,應該瞭解的是處理器1255之各核芯可以有和核芯0相同之邏輯組。例如,各核芯可以包括一專屬之第一階(L1)快取1212及第二階(L2)快取1211,用於根據一指定快取管理政策快取指令及資料。L1快取1212包括一用於儲存指令之各別指令快取1220及一用於儲存資料之各別資料快取1221。儲存於不同處理器快取內之指令及資料係以快取列之粒化管理,其可為固定大小(例如,64、128、512位元組之長度)。本示範性實施 例之各核芯具有一指令擷取單元1210,用於從系統記憶體1200及/或一共用之第三階(L3)快取1216中擷取指令;一解碼單元1220,用於解碼指令(例如,將程式指令解碼成微運算符或「uop」);一執行單元1240,用於執行指令;及一寫回單元1250,用於止用指令及寫回結果。
指令擷取單元1210包括許多習知組件,包括有下一指令指標1203,用於儲存下一待從系統記憶體1200(或其中一快取)擷取之指令的位址;一指令轉譯後備緩衝器(ITLB)1204,用於儲存近期使用虛擬-實體指令位元址之映射圖,用以改善位址轉譯之速度;一分支預測單元1202,用於推測指令分支位址;及分支目標緩衝器(BTB)1201,用於儲存分支位址及目標位址。一旦擷取時,指令串流至指令管線之其餘階段,包括解碼單元1230、執行單元1240、及寫回單元1250。這些單元每一個的結構及功能可為習於此技者所熟知且在此不予以贅述,以免模糊本發明之不同實施例之相關態樣。
在本發明之一實施例中,當儲存保留位元時,保留位元強制執行邏輯1291填入一虛擬隨機模式,該模式包括錯誤偵測位元,像是同位位元、核對和、或循環冗餘核對(CRC)碼。特別是,如圖13所示,當處理器1200以保留位元1301儲存資料於記憶體1200時,其將保留位元分裂成第一群組,含有一在各例中皆不相同之任意虛擬隨機模式1302,及第二群組,含有隨機位元之核對和1303。隨機位元1302與核對和1303之數量可調整成將機率最大 化,即保留位元之任意組合之改變皆可偵測到。第一及第二群組可以在保留位元欄位1301內交插或相連。
在一實施例中,虛擬隨機模式係以一在處理器1200之硬體上實施的虛擬隨機數產生器(PRNG)及/或在處理器1200上執行之軟體產生。在一實施例中,PRNG實施一演算,用於產生一數列,其性質近似隨機數列之性質。惟,PRNG產生之數列並非真正隨機,因為其係由一小組初始值決定,稱為PRNG種子,其包括真正隨機值。
在一實施例中,處理器1200隨後容許軟體1310以提供之資料執行其預期功能。處理器1200隨後從記憶體1200載入資料(不必從同一位置,因為其可能已被軟體1310移動)。載入時,驗證邏輯1316使用第二保留位元群組之核對和位元1303驗證第一保留位元群組之虛擬隨機位元1302。若位元失配(亦即,若核對和計算指示虛擬隨機位元已經修改),保留位元強制執行邏輯1291即判定軟體1310已處理保留位元1301,並且造成一適當錯誤狀況,像是硬體異常。否則,若驗證邏輯1316使用核對和位元1303驗證隨機位元1302,處理器1200將以軟體並未處理保留位元1200的高信任度繼續正常執行。
根據本發明之一方法係揭示於圖14中。該方法可在上述系統架構之全文內實施,但是不限於任意特定之系統架構。
在1401,當儲存保留位元時,產生一虛擬隨機模式,及在1402,一錯誤校正碼(例如,核對和)產生於虛擬 隨機模式上。在1403,軟體執行和資料相關之功能,及在1404,從記憶體載入資料。在1405,驗證係使用錯誤校正碼執行(例如,在虛擬隨機位元上執行一錯誤校正碼計算)。在1406判定,若驗證指示匹配,則在1407進行正常執行,即假設軟體並未修改保留位元。若驗證失效(亦即,錯誤校正碼未指示匹配),則在1408產生一錯誤狀況。
本發明之實施例較優於僅測試「保留」位元皆為零的現有解決方式。因此,若軟體強制所有「保留」位元為零,處理器將不會偵測出軟體不當運作的事實。在未來,當硬體可能將1值放入任一位元時,不當運作的軟體將錯誤清除,破壞了預期的硬體功能。這意味著「保留」位元並未真的被保留且未來硬體避免使用這些位元,因為現行軟體會干擾。
在一實施例中,本發明之實施例實施相關於在Windows中之異常堆疊上的RFLAGS欄位。惟,在本發明之原理下並不限於任意特定實施方式。
在前面的說明書中,本發明之實施例已揭述參考於其特定示範實施例。惟,顯然在不悖離文後申請專利範圍中載述之本發明廣義精神及範疇下,仍可達成許多修改及變化。據此,說明書及圖式應以揭示意味而非限制意味視之。
本發明之實施例可包括上述許多步驟。這些步驟可在機器可執行之指令中具體實施,以致使一般用途或特定用 途處理器執行步驟。另者,這些步驟可由特定硬體組件執行,其含有硬接線邏輯可供執行步驟,或是由編程電腦組件與定製硬體組件之任意組合執行。
本文中所述之指令可視為硬體之特定組構,像是專用積體電路(ASIC),其組構成執行某些操作或具有一預定功能性或儲存於記憶體中之軟體指令,可在非暫態電腦可讀取媒體中具體實施。因此,圖中所示之技術可以使用儲存且執行於一或多個電子裝置(例如,終端站、網路元件、等等)上之碼及資料實施。此電子裝置使用電腦機器可讀取媒體儲存且通信(在內部及/或透過網路和其他電子裝置通信)碼及資料,像是非暫態電腦機器可讀取儲存媒體(例如,磁碟、光碟、隨機存取記憶體、唯讀記憶體、快閃記憶體裝置、相變記憶體)及暫態電腦機器可讀取通信媒體(例如,電氣性、光學性、聲音性或其他傳播信號形式-像是載波、紅外線信號、數位信號、等等)。此外,此電子裝置典型上包括一組的一或多個處理器,耦合於一或多個其他組件,像是一或多個儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控螢幕、及/或顯示器)、及網路連接。處理器組及其他組件之耦合典型上是經過一或多個匯流排及橋接器(亦稱為匯流排控制器)。載有網路流量之儲存裝置及信號各代表一或多個機器可讀取儲存媒體及機器可讀取通信媒體。因此,一給定電子裝置之儲存裝置典型上儲存用以在該電子裝置之該組一或多個處理器上執行的碼及/或資料。當然,本發明 之一實施例之一或多部分可以使用軟體、韌體、及/或硬體之不同組合實施。在本詳細說明之全文中,為了闡釋而載述許多特定細節,以提供對本發明之徹底瞭解。惟,習於此技者應該瞭解的是,本發明可以在沒有一些諸特定細節情況下實施。在某些情況中,習知結構及功能並未適度地詳述,以免模糊本發明之標的。據此,本發明之範疇及精神應該以文後之申請專利範圍判定。
1200‧‧‧系統記憶體
1201‧‧‧分支目標緩衝器
1202‧‧‧分支預測單元
1203‧‧‧下一指令指標
1204‧‧‧指令轉譯後備緩衝器
1205‧‧‧一般用途暫存器
1206‧‧‧向量暫存器
1207‧‧‧遮罩暫存器
1210‧‧‧指令擷取單元
1211‧‧‧第二階(L2)快取
1212‧‧‧第一階(L1)快取
1216‧‧‧第三階(L3)快取
1220‧‧‧指令快取
1221‧‧‧資料快取
1230‧‧‧解碼器
1240‧‧‧執行邏輯
1250‧‧‧寫回/止用單元
1255‧‧‧處理器
1290‧‧‧記憶體管理單元
1291‧‧‧保留位元強制執行邏輯

Claims (25)

  1. 一種處理器,包含:記憶體管理單元,用以將資料儲存於系統記憶體,該資料包括第一位元組及保留位元組;保留位元強制執行邏輯,用以產生虛擬隨機模式於該保留位元中,並且在儲存該保留位元之前先產生錯誤校正碼於該虛擬隨機模式上;該記憶體管理單元載入包括有該虛擬隨機模式及該錯誤校正碼的該保留位元;該保留位元強制執行邏輯使用該錯誤校正碼判定該保留位元是否已被軟體修改;及若該保留位元已被修改,則該處理器產生錯誤狀況,且若未修改,則該處理器繼續正常執行。
  2. 如申請專利範圍第1項之處理器,其中,該保留位元組包括第一位元子集及第二位元子集,並且其中該虛擬隨機模式係儲存於該第一位元子集並且該錯誤校正碼係儲存於該第二位元子集。
  3. 如申請專利範圍第1項之處理器,其中,該第一位元組包含來自處理器狀態暫存器之位元。
  4. 如申請專利範圍第3項之處理器,其中,該狀態暫存器包含RFLAGS暫存器。
  5. 如申請專利範圍第1項之處理器,其中,包括有該第一位元組及該保留位元組的該資料共包含64位元。
  6. 如申請專利範圍第1項之處理器,其中,該錯誤 校正碼包含循環冗餘核對(CRC)碼、同位位元、及/或核對和。
  7. 如申請專利範圍第1項之處理器,其中,該保留位元強制執行邏輯係整合於該記憶體管理單元內。
  8. 如申請專利範圍第1項之處理器,進一步包含:虛擬隨機數產生器(PRNG),用以產生該虛擬隨機模式。
  9. 如申請專利範圍第8項之處理器,其中,該PRNG係藉由在該處理器上執行之軟體及/或和該處理器形成為一體之硬體實施。
  10. 一種用於保留位元的強制執行的方法,包含:產生虛擬隨機模式於保留位元組中及產生錯誤校正碼於該虛擬隨機模式上;儲存資料於系統記憶體,該資料包括第一位元組及具有該虛擬隨機模式及該錯誤校正碼之該保留位元組;載入包括有該虛擬隨機模式及該錯誤校正碼之該保留位元;使用該錯誤校正碼判定該保留位元是否已被軟體修改;及若該保留位元已被修改,則由一處理器產生錯誤狀況,且若未修改,則維持正常執行。
  11. 如申請專利範圍第10項之方法,其中,該保留位元組包括第一位元子集及第二位元子集,並且其中該虛擬隨機模式係儲存於該第一位元子集並且該錯誤校正碼係 儲存於該第二位元子集。
  12. 如申請專利範圍第11項之方法,其中,該位元組包含來自處理器狀態暫存器之位元。
  13. 如申請專利範圍第12項之方法,其中,該狀態暫存器包含RFLAGS暫存器。
  14. 如申請專利範圍第10項之方法,其中,包括有該第一位元組及該保留位元組的該資料共包舍64位元。
  15. 如申請專利範圍第10項之方法,其中,該錯誤校正碼包含循環冗餘核對(CRC)碼、同位位元、及/或核對和。
  16. 如申請專利範圍第10項之方法,其中,該保留位元強制執行邏輯係整合於該記憶體管理單元內。
  17. 如申請專利範圍第10項之方法,進一步包含:使用虛擬隨機數產生器(PRNG)產生該虛擬隨機模式。
  18. 如申請專利範圍第17項之方法,其中,該PRNG係藉由在該處理器上執行之軟體及/或和該處理器形成為一體之硬體實施。
  19. 一種系統,包含:記憶體,用以儲存指令及資料;複數個核芯,用以執行該指令及處理該資料;圖形處理器,用以反應於圖形指令而執行圖形操作;網路介面,用以在網路上接收且傳送資料;介面,用以從滑鼠或游標控制裝置接收使用者輸入, 該複數個核芯反應於該使用者輸入而執行該指令及處理該資料;該核芯的至少其中一個包含:記憶體管理單元,用以將資料儲存於系統記憶體,該資料包括第一位元組及保留位元組;保留位元強制執行邏輯,用以產生虛擬隨機模式於該保留位元中,並且在儲存該保留位元之前先產生錯誤校正碼於該虛擬隨機模式上;該記憶體管理單元載入包括有該虛擬隨機模式及該錯誤校正碼的該保留位元;該保留位元強制執行邏輯使用該錯誤校正碼判定該保留位元是否已被軟體修改;及若該保留位元已被修改,則該處理器產生錯誤狀況,且若未修改,則該處理器繼續正常執行。
  20. 如申請專利範圍第19項之處理器,其中,該保留位元組包括第一位元子集及第二位元子集,並且其中該虛擬隨機模式係儲存於該第一位元子集並且該錯誤校正碼係儲存於該第二位元子集。
  21. 如申請專利範圍第20項之處理器,其中,該資料包含來自處理器狀態暫存器之位元。
  22. 如申請專利範圍第21項之處理器,其中,該狀態暫存器包含RFLAGS暫存器。
  23. 如申請專利範圍第19項之處理器,其中,包括有該第一位元組及該保留位元組的該資料共包含64位 元。
  24. 如申請專利範圍第19項之處理器,其中,該錯誤校正碼包含循環冗餘核對(CRC)碼、同位位元、及/或核對和。
  25. 如申請專利範圍第19項之處理器,其中,該保留位元強制執行邏輯係整合於該記憶體管理單元內。
TW105137682A 2015-12-22 2016-11-17 用於保留位元的強制執行的裝置及方法 TWI715672B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/979,316 2015-12-22
US14/979,316 US9934090B2 (en) 2015-12-22 2015-12-22 Apparatus and method for enforcement of reserved bits

Publications (2)

Publication Number Publication Date
TW201732553A TW201732553A (zh) 2017-09-16
TWI715672B true TWI715672B (zh) 2021-01-11

Family

ID=59066166

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137682A TWI715672B (zh) 2015-12-22 2016-11-17 用於保留位元的強制執行的裝置及方法

Country Status (5)

Country Link
US (1) US9934090B2 (zh)
EP (1) EP3394755B1 (zh)
CN (1) CN108292249B (zh)
TW (1) TWI715672B (zh)
WO (1) WO2017112498A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11237906B1 (en) 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
US11494264B2 (en) * 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11567831B2 (en) 2020-07-28 2023-01-31 Micron Technology, Inc. Generating a protected and balanced codeword
US11783026B2 (en) * 2021-01-05 2023-10-10 Nuvoton Technology Corporation Processor with in-band fault-injection detection

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200641621A (en) * 2005-01-31 2006-12-01 Intel Corp Memory buffers for merging local data from memory modules
CN104541249A (zh) * 2012-09-28 2015-04-22 英特尔公司 用于非易失性存储器的耐久性感知纠错码(ecc)保护
US20150193163A1 (en) * 2011-04-15 2015-07-09 Samsung Electronics Co., Ltd. Non-volatile memory devices, methods of operating non-volatile memory devices, and systems including the same
US20150293173A1 (en) * 2014-04-11 2015-10-15 Renesas Electronics Corporation Semiconductor device, diagnostic test, and diagnostic test circuit
CN105103234A (zh) * 2012-11-20 2015-11-25 查尔斯·I·派德尔 固态驱动器体系结构

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101620A (en) * 1995-04-18 2000-08-08 Neomagic Corp. Testable interleaved dual-DRAM architecture for a video memory controller with split internal/external memory
US6009550A (en) * 1997-05-20 1999-12-28 Seagate Technology, Inc. PBA recovery apparatus and method for interleaved reed-solomon codes
US7385929B1 (en) 2001-09-25 2008-06-10 Atheros Communications, Inc. Method and system for detecting false packets in wireless communications systems
US7254800B1 (en) * 2004-02-26 2007-08-07 Xilinx, Inc. Methods of providing error correction in configuration bitstreams for programmable logic devices
US7882424B2 (en) * 2005-07-29 2011-02-01 GM Global Technology Operations LLC Serial data communication—CAN memory error detection methods
KR100726438B1 (ko) 2005-10-10 2007-06-11 삼성전자주식회사 예비 비트를 이용한 오류 제어 방법 및 장치
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
US7647539B2 (en) * 2007-07-18 2010-01-12 International Business Machines Corporation System and method of testing using test pattern re-execution in varying timing scenarios for processor design verification and validation
US8140945B2 (en) * 2008-05-23 2012-03-20 Oracle America, Inc. Hard component failure detection and correction
US9111645B2 (en) 2008-08-08 2015-08-18 Rambus Inc. Request-command encoding for reduced-data-rate testing
US8935589B2 (en) * 2009-06-02 2015-01-13 Silicon Motion, Inc. Controller and data access method for flash memories
US8386856B2 (en) * 2009-07-01 2013-02-26 Silicon Motion, Inc. Data storage device capable of selecting scrambled signals according to transmission power
US8966253B1 (en) * 2010-06-01 2015-02-24 Xilinx, Inc. Method and apparatus for authenticating a programmable device bitstream
KR20120054699A (ko) 2010-11-22 2012-05-31 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 데이터 저장 시스템 및 그 방법
US8560922B2 (en) * 2011-03-04 2013-10-15 International Business Machines Corporation Bad block management for flash memory
US8909941B1 (en) 2011-03-31 2014-12-09 Xilinx, Inc. Programmable integrated circuit and a method of enabling the detection of tampering with data provided to a programmable integrated circuit
US8666068B2 (en) * 2011-10-20 2014-03-04 Sandisk Technologies Inc. Method for scrambling shaped data
CN106371804B (zh) * 2011-12-22 2019-07-12 英特尔公司 用于执行置换操作的设备和方法
US8694862B2 (en) * 2012-04-20 2014-04-08 Arm Limited Data processing apparatus using implicit data storage data storage and method of implicit data storage
KR20150033859A (ko) * 2013-09-25 2015-04-02 삼성전자주식회사 반도체 메모리 장치 및 메모리 시스템
CN104133919A (zh) * 2014-08-22 2014-11-05 上海斐讯数据通信技术有限公司 管理信息库索引值与设备索引值的转换方法及转换系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200641621A (en) * 2005-01-31 2006-12-01 Intel Corp Memory buffers for merging local data from memory modules
US20150193163A1 (en) * 2011-04-15 2015-07-09 Samsung Electronics Co., Ltd. Non-volatile memory devices, methods of operating non-volatile memory devices, and systems including the same
CN104541249A (zh) * 2012-09-28 2015-04-22 英特尔公司 用于非易失性存储器的耐久性感知纠错码(ecc)保护
CN105103234A (zh) * 2012-11-20 2015-11-25 查尔斯·I·派德尔 固态驱动器体系结构
US20150293173A1 (en) * 2014-04-11 2015-10-15 Renesas Electronics Corporation Semiconductor device, diagnostic test, and diagnostic test circuit

Also Published As

Publication number Publication date
TW201732553A (zh) 2017-09-16
US9934090B2 (en) 2018-04-03
EP3394755A4 (en) 2019-08-07
EP3394755A1 (en) 2018-10-31
CN108292249A (zh) 2018-07-17
CN108292249B (zh) 2022-03-11
US20170177439A1 (en) 2017-06-22
WO2017112498A1 (en) 2017-06-29
EP3394755B1 (en) 2021-09-29

Similar Documents

Publication Publication Date Title
TWI731905B (zh) 用於聚合集中及跨步的系統、裝置及方法
TWI517042B (zh) 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品
TWI489381B (zh) 多暫存器散布指令
TWI610222B (zh) 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令(二)
TWI489382B (zh) 改良的萃取指令背景之設備及方法
TWI740859B (zh) 用於跨步的載入(strided load)的系統、設備及方法
TWI715618B (zh) 資料元件比較處理器、方法、系統及指令
TWI663545B (zh) 執行置換運算的處理器
TWI455024B (zh) 唯一封裝資料元件識別處理器,方法,系統,及指令
JP6635438B2 (ja) ベクトルビット反転およびクロスを実行するための方法および装置
JP6741006B2 (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
TWI738688B (zh) 用於轉換編碼格式的硬體處理器、方法及非暫態機器可讀取媒體
KR20170033890A (ko) 비트 셔플 프로세서, 방법, 시스템, 및 명령어
TWI599952B (zh) 用於執行衝突檢測的方法及裝置
TWI715672B (zh) 用於保留位元的強制執行的裝置及方法
TW201810070A (zh) 利用索引和立即數執行向量排列的方法和設備
TWI526930B (zh) 用以複製及遮蔽資料結構之設備及方法
CN107193537B (zh) 经改进的插入指令的装置和方法
TWI603261B (zh) 用以執行離心操作的指令及邏輯
TWI567644B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
TWI742012B (zh) 用於晶片上可靠度控制器的處理器、方法及系統
TWI575450B (zh) 用以執行反離心操作之指令和邏輯
KR102528073B1 (ko) 벡터 비트 수집을 수행하기 위한 방법 및 장치
TWI737650B (zh) 用於從鏈結結構取回元件的處理器、系統和方法