TWI462007B - 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法 - Google Patents

用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法 Download PDF

Info

Publication number
TWI462007B
TWI462007B TW101148660A TW101148660A TWI462007B TW I462007 B TWI462007 B TW I462007B TW 101148660 A TW101148660 A TW 101148660A TW 101148660 A TW101148660 A TW 101148660A TW I462007 B TWI462007 B TW I462007B
Authority
TW
Taiwan
Prior art keywords
register
bit
vector
target
source
Prior art date
Application number
TW101148660A
Other languages
English (en)
Other versions
TW201337732A (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Robert Valentine
Jesus Corbal
Bret L Toll
Mark J Charney
Zeev Sperber
Amit Gradstein
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201337732A publication Critical patent/TW201337732A/zh
Application granted granted Critical
Publication of TWI462007B publication Critical patent/TWI462007B/zh

Links

Classifications

    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法 發明領域
本發明大體上係有關電腦處理器架構,更具體而言,其係有關被執行時會致使一種特定結果的指令。
發明背景
一個指令集,或指令集架構(instruction set architecture,ISA),是電腦架構之有關程式規劃的部份,並且其可包括本機資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷和執行處置、及外部輸入和輸出(input and output,I/O)。於本文中,指令一詞一般係指巨集指令--也就是被提供給處理器(或是翻譯(例如,利用靜態二元翻譯、包括動態編譯的動態二元翻譯)、變體、仿真、或使用其他方式將一個指令轉換成要由處理器處理的一或多個其他指令的指令轉換器)以作執行的指令--其係相對於微指令或微操作(micro-operation,micro-op)--也就是處理器之解碼器解碼巨集指令所得的結果。
ISA與處理器之實施此指令集的內部設計微架構 是有所區別的。具有不同微架構的數個處理器可共享一個共用的指令集。例如,英特爾公司(Intel®)奔騰4(Pentium 4)處理器、英特爾公司核心(CoreTM )處理器、及來自加利福尼亞州之森尼維耳市(Sunnyvale)超微半導體(Advanced Micro Devices)公司的處理器可實施x86指令集之幾乎完全相同的版本(具有已藉由較新版本而加入的一些延伸),但它們卻具有不同的內部設計。例如,係可利用習知技術而在不同微架構中藉由不同方式來實施ISA的同一個暫存器架構,包括專用實體暫存器、使用一個暫存器重新命名機構的一或多個動態配置實體暫存器(例如,使用暫存器別名表(Register Alias Table,RAT)、重新排序緩衝器(Reorder Buffer,ROB)、和退役暫存器檔案;使用複數個對映和一個暫存器池)等等。除非有特別指明其他情況,否則於本文中,暫存器架構、暫存器檔案、和暫存器等詞語係用來指涉軟體/程式設計師可見者、及使用指令來指明暫存器的方式。當需要明確性時,會對給定微架構中的指定暫存器(例如,實體暫存器、重新排序暫存器、退役暫存器、暫存器池)使用邏輯、架構或軟體可見形容詞。
一個指令集包括一或多種指令格式。一個給定指令格式定義許多欄位(位元的數量、位元的區位),以指明要被進行的操作(作業碼)和要在上面進行此操作的一或數個運算元及其他。一些指令格式秀過指令模板(或子格式)之定義而被進一步向下分解。例如,係可將一個給定 指令格式的指令模板定義成具有此指令格式之欄位的不同子集(所包括的欄位典型上會是按照一樣的順序,但至少有一些會是有不同的位元位置,因為所包括的欄位較少),且/或定義成具有以不同方式詮釋的一個給定欄位。因此,ISA的各個指令係利用一個給定指令格式(並且,如果有定義的話,係藉由此指令格式的其中一個給定指令模板)來表達,並且包括有用於指明操作和運算元的欄位。例如,一個示範ADD指令具有一個特定作業碼和一個指令格式,其包括用來指明此作業碼的一個作業碼欄位以及用來選擇運算元的數個運算元欄位(來源1/目標和來源2);並且此ADD指令在一個指令串中的出現將會使得在運算元欄位中有特定內容,這些特定內容選出特定的數個運算元。
科學、金融、自動向量化的一般用途,辨識、探勘和合成(recognition,mining,and synthesis,RMS),以及視覺和多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法和音訊操縱)常常會需要在大量的資料項目上進行相同的操作(稱之為「資料平行性」)。單指令多資料(Single Instruction Multiple Data,SIMD)指係一種類型的指令,其致使處理器在多個資料項目上進行一個操作。SIMD技術特別適於可將暫存器中之位元邏輯性劃分成多個固定大小的資料元件(各個資料元件代表一個各別的值)的處理器。例如,可將在一個256位元暫存器中的這些位元指明為要作為四個分開的64位元緊縮資料元件(四倍字(quad-word,Q)大小資料元件)、八個分開的32 位元緊縮資料元件(雙字組(double word,D)大小資料元件)、十六個分開的16位元緊縮資料元件(字組(word,W)大小資料元件)、或三十二個分開的8位元資料元件(位元組(byte,B)大小資料元件)而在上面進行操作的一個來源運算元。這種類型的資料被稱為是緊縮資料類型或向量資料類型,而且這種資料類型的運算元被稱為是緊縮資料運算元或向量運算元。易言之,一個緊縮資料項目或向量係指一連串的緊縮資料元件,並且一個緊縮資料運算元或向量運算元是一個SIMD指令(亦稱之為緊縮資料指令或向量指令)的一個來源或目標運算元。
舉例來說,一種類型的SIMD指令指明要以垂直方式在兩個來源向量運算元上進行以產生具有相同大小、具有相同之資料元件數量、且具有相同之資料元件順序的一個目標向量運算元(亦稱之為結果向量運算元)的單一個向量操作。在這些來源向量運算元中的資料元件稱為來源資料元件,而在目標向量運算元中的資料元件稱為目標或結果資料元件。這些來源向量運算元具有相同大小,且含有為相同寬度的資料元件,因此,他們含有相同數量個資料元件。在這兩個來源向量運算元的相同位元位置中的來源資料元件形成資料元件對(亦稱之為對應資料元件;也就是說,在各個來源運算元之資料元件位置0中的資料元件對應,在各個來源運算元之資料元件位置1中的資料元件對應,以此類推)。由SIMD指令所指明的這個操作在各個這些來源資料元件對上被分開進行以產生匹配數量個結果 資料元件,因此,各對來源資料元件有一個對應結果資料元件。由於此操作是垂直的,且由於結果向量運算元具有相同大小、具有相同數量個資料元件、且結果資料元件被以與來源向量運算元相同的資料元件順序儲存,因而結果資料元件是在結果向量運算元之與其在來源向量運算元中之對應來源資料元件對相同的位元位置中。除了這種示範類型的SIMD指令以外,還有許多種其他類型的SIMD指令(例如,只具有一個或具有多於兩個的來源向量運算元者、以水平方式操作者、產生具有不同大小的結果向量運算元者、具有不同大小之資料元件者、和/或具有不同的資料元件順序者)。應瞭解,目標向量運算元(或目標運算元)一詞係定義為進行由一個指令所指明之操作的直接結果,包括將那個運算元儲存在一個區位(無論是暫存器或由那個指令所指明的一個記憶體位址處),以使得另一個指令可將其作為一個來源運算元而取用(藉著由這另一個指令對那個相同區位的指明)。
SIMD技術,例如由具有包括x86、多媒體延伸(MMXTM )、資料流SIMD延伸(Streaming SIMD Extensions,SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令之指令集的英特爾公司核心處理器所運用者,已促使在應用效能中的顯著進步。已有,已有釋出和/或公佈額外的一組SIMD延伸,其被稱為進階向量延伸(Advanced Vector Extensions,AVX)(AVX1和AVX2)且係使用向量延伸(Vector Extensions,VEX)編碼方案(例如,請見2011年十月的英特爾公司64 和IA-32架構軟體開發者手冊(Intel® 64 and IA-32 Architectures Software Developers Manual);並請見2011年六月的英特爾公司進階向量延伸程式規劃基準(Intel® Advanced Vector Extensions Programming Reference))。
發明概要
依據本發明之一實施例,係特地提出一種用於在電腦處理器中反應於包括有目標向量暫存器運算元、來源寫入遮罩暫存器運算元和作業碼的單一向量緊縮轉換遮罩暫存器至向量暫存器指令而進行從遮罩暫存器到向量暫存器之轉換的方法,該方法包含下列步驟:執行該單一向量緊縮轉換遮罩暫存器至向量暫存器指令,以判定儲存在該來源寫入遮罩暫存器之各個作動中位元位置的一個值,其中,所判定出的該等值界定出該目標暫存器的哪些資料元件區位要被設為全為1或全為0;以及將該目標暫存器之各個資料元件位置的資料元件中之所有位元設為所判定出的對應於該來源寫入遮罩暫存器之作動中位元位置的該值。
依據本發明之又一實施例,係特地提出一種製造物品,其包含:一個有形機器可讀儲存媒體,其具有儲存在內之指令出現,其中該指令之格式將一個寫入遮罩暫存器指明為其來源運算元並將單一個目標向量暫存器指明為其目標,並且其中該指令格式包括一個作業碼,該作業碼指示一個機器反應於該單一指令的該單次出現而致使下列行為:判定出在儲存在該來源寫入遮罩暫存器之各個作動 中位元位置中之值,其中,所判定出的該等值界定出該目標暫存器的哪些資料元件區位要被設為全為1或全為0,以及將在該目標暫存器之各個資料元件位置的資料元件中之所有位元設為所判定出之對應於該來源寫入遮罩暫存器之作動中位元位置的該值。
依據本發明之另一實施例,係特地提出一種裝置,其包含:對於單一向量緊縮轉換遮罩暫存器至向量暫存器指令的一個硬體解碼器,該單一向量緊縮轉換遮罩暫存器至向量暫存器指令包括一個目標向量暫存器運算元、一個來源寫入遮罩暫存器運算元、和一個作業碼;執行邏輯,用以進行下列動作:判定出儲存在該來源寫入遮罩暫存器之各個作動中位元位置中之值,其中,所判定出的該等值界定出該目標暫存器的哪些資料元件區位要被設為全為1或全為0,及將該目標暫存器之各個資料元件位置的資料元件中之所有位元設為所判定出的對應於該來源寫入遮罩暫存器之作動中位元位置的該值。
101‧‧‧暫存器
301~309、401~415‧‧‧操作
700‧‧‧同屬向量親和指令格式
705、746A‧‧‧無記憶體取用
710‧‧‧無記憶體取用的完整捨入控制類型操作
712‧‧‧無記憶體取用的寫入遮罩控制部份捨入控制類型操作
715‧‧‧無記憶體取用的資料轉變類型操作
717‧‧‧無記憶體取用的寫入遮罩控制向量長度(VSIZE)類型操作
720、746B‧‧‧有記憶體取用
725‧‧‧有記憶體取用的時間性
727‧‧‧有記憶體取用寫入遮罩控制
730‧‧‧有記憶體取用的非時間性
740‧‧‧格式欄位
742‧‧‧基礎操作欄位
744‧‧‧暫存器索引欄位
746‧‧‧修飾符欄位
750‧‧‧擴大操作欄位
752‧‧‧阿爾法(alpha)欄位
752A‧‧‧rs欄位
752A.1、757A.1‧‧‧捨入
752A.2‧‧‧資料轉變
752B‧‧‧逐出提示(EH)欄位
752B.1‧‧‧時間性
752B.2‧‧‧非時間性
752C‧‧‧寫入遮罩控制(Z)欄位
754‧‧‧貝他(beta)欄位
754A‧‧‧捨入控制欄位
754B‧‧‧資料轉變欄位
754C‧‧‧資料操縱欄位
756‧‧‧壓抑所有浮點例外(SAE)欄位
757A‧‧‧RL欄位
757A.2‧‧‧向量長度(VSIZE)
757B‧‧‧廣播欄位
758‧‧‧捨入操作控制欄位;捨入操作欄位
759A‧‧‧捨入操作欄位
759B‧‧‧向量長度欄位
760‧‧‧縮放欄位
762A‧‧‧移位欄位
762B‧‧‧移位因數欄位
764‧‧‧資料元件寬度(W)欄位
768‧‧‧類別(U)欄位;EVEX.U
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欄位
850‧‧‧縮放、索引、基礎(SIB)
852‧‧‧SS
854‧‧‧SIB.xxx
856‧‧‧SIB.bbb
900‧‧‧暫存器架構
910、1114‧‧‧向量暫存器
915、1126‧‧‧寫入遮罩暫存器
925‧‧‧一般用途暫存器
945‧‧‧純量浮點數堆疊暫存器檔案(x87堆疊)
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、1202A~1202N‧‧‧核心
1100‧‧‧指令解碼器
1102‧‧‧網路
1104‧‧‧第2階(L2)快取子集
1106‧‧‧第1階(L1)快取
1106A‧‧‧第1階(L1)資料快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1120‧‧‧拌和單元
1122A、1122B‧‧‧數值轉換單元
1124‧‧‧複製單元
1128‧‧‧ALU
1200、1415、1470、1480‧‧‧處理器
1204A~1204N、1206‧‧‧快取單元
1208‧‧‧特殊用途邏輯;整合式圖形邏輯
1210‧‧‧系統代理器單元
1212‧‧‧以環圈為基礎的互連單元
1214‧‧‧整合式記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300、1400、1500‧‧‧系統
1310、1315‧‧‧處理器;實體資源
1320‧‧‧控制器集線器
1340、1432、1434‧‧‧記憶體
1345、1438、1620‧‧‧共處理器
1350‧‧‧輸入/輸出集線器(IOH)
1360、1414、1514‧‧‧輸入/輸出(I/O)設備
1390‧‧‧圖形記憶體控制器集線器(GMCH)
1395‧‧‧連接
1416‧‧‧第一匯流排
1418‧‧‧匯流排橋
1420‧‧‧第二匯流排
1422‧‧‧鍵盤和/或滑鼠
1424‧‧‧音訊輸入/輸出(I/O)
1427‧‧‧通訊設備
1428‧‧‧儲存體單元
1430‧‧‧碼;資料
1439‧‧‧高效能介面
1450‧‧‧點對點互連;點對點(P-P)介面
1452、1454‧‧‧點對點(P-P)介面
1472、1482‧‧‧記憶體控制器(IMC)單元;控制邏輯(CL)
1476、1478、486、488‧‧‧點對點(P-P)介面;點對點(P-P)介面電路
1490‧‧‧晶片組
1494、1498‧‧‧點對點介面電路
1492、1496‧‧‧介面
1515‧‧‧舊有I/O設備
1600‧‧‧單晶片系統(SoC)
1602‧‧‧互連單元
1610‧‧‧應用處理器
1630‧‧‧靜態隨機存取記憶體(SRAM)單元
1632‧‧‧直接記憶體存取(DMA)單元
1640‧‧‧顯示器單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二元碼
1708‧‧‧替代指令集編譯器
1710‧‧‧替代指令集二元碼
1712‧‧‧指令轉換器
1714‧‧‧不具有一個x86指令集核心的處理器
1716‧‧‧具有至少一個x86指令集核心的處理器
本發明係藉由在隨附圖式中之圖內的範例、而非限制的方式來例示,在這些圖式中,相似參考標號係指出類似元件,並且在這些圖式中:圖1例示出對一個示範VPMOVM2X指令之操作的一個示範例示。
圖2例示出數個詳細示範格式。
圖3例示出於處理器中之對VPMOVM2X指令之 使用的一個實施例。
圖4(A)例示出用於處理一個VPMOVM2X指令的一種方法的一個實施例。
圖4(B)例示出用於處理一個VPMOVM2X指令的一種方法的一個實施例。
圖5例示出用於處理VPMOVM2X之方法的數個偽碼範例。
圖6依據本發明的一個實施例,例示出在一個作動中位元向量寫入遮罩元件之數量和向量大小與資料元件大小之間的相關性。
圖7A~7B是方塊圖,其依據本發明的數個實施例而例示出一個同屬向量親和指令格式及其之數個向量模板。
圖8A~8D是方塊圖,其依據本發明的數個實施例而例示出一種示範特定向量親和指令格式。
圖9是依據本發明的一個實施例的一個暫存器架構之方塊圖。
圖10A是一個方塊圖,其依據本發明的數個實施例而同時例示出一個示範有序管線和一個示範暫存器重新命名且亂序的發佈/執行管線。
圖10B是一個方塊圖,其依據本發明的數個實施例而同時例示出要被包括在一個處理器中的一個有序架構核心之示範實施例和一個示範暫存器重新命名且亂序的發佈/執行架構核心。
圖11A~B例示出一個更具體的示範有序核心架構之方塊圖,此核心會是一個晶片中之數個邏輯方塊(包括相同類型和/或不同類型的其他核心)中之一者。
圖12是依據本發明之數個實施例的一個處理器之方塊圖,其可具有多於一個的核心,可具有一個整合式記憶體控制器,並且可具有整合式圖形。
圖13是依據本發明的一個實施例的一個系統之方塊圖。
圖14,是依據本發明之一實施例的一第一更具體示範系統之方塊圖。
圖15是依據本發明之一實施例的一第一更具體示範系統之方塊圖。
圖16是依據本發明之一實施例的一個SoC之方塊圖。
圖17是一個方塊圖,其依據本發明的數個實施例而對比出對於一個軟體指令轉換器的使用,以將來源指令集中之二元指令轉換成目標指令集中之二元指令。
較佳實施例之詳細說明
在下面的說明中,係提出許多特定細節。然而,應瞭解,本發明的實施例係可在沒有這些特定細節的情況下實行。在其他情況中,為了避免混淆對本說明的理解,習知的電路、結構或技術並未被詳細示出。
於本說明書中對「一個實施例」、「一實施例」、「一 個示範實施例」等等的指涉係指出,所描述的這個實施例可包括一個特定特徵、結構或特性,但並非每一個實施例都必需要包括有這個特定特徵、結構或特性。另外,這些詞語也並不必然係指涉同一個實施例。此外,當配合一個實施例而描述一個特定特徵、結構或特性時,係認為,配合其他實施例而影響此等特徵、結構或特性,這係落於熟於本技藝者之知識領域內,無論是否有明白述出。
概論
在下面的說明中,有一些項目可能必需要在描述這個指令集架構中之特定指令之操作前先加以釋明。一種這樣的項目係稱為一個「寫入遮罩暫存器」,其一般係用來斷言一個運算元,以有條件地控制每元件運算操作(在下文中,可亦係使用遮罩暫存器一詞,並且其係指一個寫入遮罩暫存器,例如在下文中所論述的「k」暫存器)。當於下文中使用時,一個寫入遮罩暫存器係儲存多個位元(16、32、64個等等),其中此寫入遮罩暫存器的各個作動中位元在SIMD處理程序中支配一個向量暫存器的一個緊縮資料元件之操作/更新。典型上,係有多於一個的寫入遮罩暫存器可讓一個處理器核心使用。
此指令集架構包括至少一些SIMD指令,這些SIMD指令指明向量操作,並且具有用來從這些向量暫存器中選擇來源暫存器和/或目標暫存器的欄位(一個示範SIMD指令可指明要被操作在這些向量暫存器中之一或多者之內容上的一個向量操作,並且此向量操作的結果要被儲存在 這些向量暫存器中之一者中)。本發明的不同實施例可係具有不同大小的向量暫存器,並且可係支援更多/更少/不同大小的資料元件。
由一個SIMD指令指明的多位元資料元件的大小(例如,位元組、字組、雙字組、四倍字)判定出在一個向量暫存器內之「資料元件位置」的位元區位。一個緊縮資料元件係指儲存在一個特定位置處的資料。易言之,視在目標運算元中之資料元件之大小以及目標運算元之大小(在這個目標運元中的位元之總數)而定(或是換句話說,視目標運算元之大小與在這個目標運元內的資料元件之總數而定),在結果向量運算元內之多位元資料元件位置的位元區位會有所改變(例如,若結果向量運算元的目標是一個向量暫存器,那麼在目標向量暫存器內之多位元資料元件位置的位元區位會有所改變)。例如,此等多位元資料元件的位元區位在操作於32位元資料元件上的向量操作(資料元件位置0佔據位元區位31:0,資料元件位置1佔據位元區位63:32,以此類推)與操作於64位元資料元件上的一個向量操作(資料元件位置0佔據位元區位63:0,資料元件位置1佔據位元區位127:64,以此類推)之間會有所不同。
此外,在一個作動中位元向量寫入遮罩元件之數量和向量大小與資料元件大小之間係有相關性,如於圖6中所示出的。係示出128位元、256位元、和512位元的向量大小,但其他寬度也是有可能的。係考慮8位元位元組(byte,B)、16位元字組(word,W)、32位元雙字組(doubleword,D) 或單倍精度浮點數、和64位元四倍字(quadword,Q)或雙倍精度浮點數的資料元件大小,但其他寬度也是有可能的。如圖所示,當向量大小為128位元時,係可在此向量之資料元件大小是8位元時將16位元用於遮蔽,係可在此向量之資料元件大小是16位元時將8位元用於遮蔽,係可在此向量之資料元件大小是32位元時將4位元用於遮蔽,並且係可在此向量之資料元件大小是64位元時將2位元用於遮蔽。當向量大小為256位元時,係可在此緊縮資料元件寬度是8位元時將32位元用於遮蔽,係可在此向量之資料元件大小是16位元時將16位元用於遮蔽,係可在此向量之資料元件大小是32位元時將8位元用於遮蔽,並且係可在此向量之資料元件大小是64位元時將4位元用於遮蔽。當向量大小為512位元時,係可在此向量之資料元件大小是8位元時將64位元用於遮蔽,係可在此向量之資料元件大小是16位元時將32位元用於遮蔽,係可在此向量之資料元件大小是32位元時將16位元用於遮蔽,並且係可在此向量之資料元件大小是64位元時將8位元用於遮蔽。
視向量大小與資料元件大小的組合而定,係可將所有的64位元、抑或是僅有此64位元的一個子集用作一個寫入遮罩。一般而言,當使用單一個的每元件遮蔽控制位元時,在向量寫入遮罩暫存器中之用於遮蔽的位元(作動中位元)之數量係等於以位元計之向量大小除以此向量之以位元計之資料元件大小。
如於上文中所提,寫入遮罩暫存器含有遮罩位 元,這些遮罩位元對應於一個向量暫存器(或記憶體區位)中的元件,並追蹤應該要在上面進行操作的那些元件。因此,擁有針對這些向量暫存器而在這些遮罩位元上複製類似行為、並且通常可容許人們調整在這些寫入遮罩暫存器中的這些遮罩位元的共用操作,這會是很值得嚮往的。
在某些情況中,能夠將一個遮罩值從一個遮罩暫存器轉移至一個向量暫存器,這會是很有益處的,因為向量ISA擁有更有力的處理能力,例如可用來排列在一個遮罩暫存器中之位元的用於混洗和排列元件的各種指令。一種示範用途是對於聚集資料類型(例如,複數)的處理,其中,遮罩針對每聚集資料元件會有1位元,並且可能會需要被膨脹以使得相同的這個位元可以被複製n次,其中n對應於在一個聚集類型中之自然元件(例如,單倍精度浮點數)的數量。
下面是一般被同屬地稱為轉換遮罩暫存器至向量暫存器(「VPMOVM2X」)指令的一種指令的一些實施例,以及可用來執行在幾個不同區域中有利的這樣一種指令的系統、架構、指令格式等等的一些實施例。對於一個VPMOVM2X指令的執行會基於在一個來源寫入遮罩暫存器中之對應作動中位元位置的值而致使一個目標向量暫存器的各個緊縮資料元件位置全為1或全為0。例如,一個目標暫存器中的各個位元組/字組/雙字組/四倍字緊縮資料元件基於在一個來源寫入遮罩暫存器中的一個對應位元位置的值而被個別地設為全為1或全為0。此指令在尾端使用一 個「X」,以指出其係操作在數種不同緊縮資料元件大小上(即,X意指位元組、字組、雙字組、四倍字等等的其中一者)。係使用「作動中位元位置」這個詞,因為在一些實施例中,在來源遮罩暫存器中可能會有比用於此指令的更多的位元位置。然而,這些位元對於此指令之操作而言為非必須的,並且,因此,其在對此指令之執行結果中並沒有積極的參與。
圖1例示出對一個示範VPMOVM2X指令之操作的一個示範例示。在這個示例中,在來源寫入遮罩暫存器中係有8個作動中位元,並且在目標向量暫存器中有8個緊縮資料元件。然而,這只是一個範例。緊縮資料元件的大小和數量及作動中位元的數量可以有所不同。如所論述的,因為各個遮罩位元對應於一個向量暫存器的單一個緊縮資料元件,所以在一個寫入遮罩暫存器中之作動中位元的數量係取決於向量暫存器(以位元計)的大小也取決於緊縮資料元件的大小。
在這個範例中,來源寫入遮罩暫存器的位元位置1、3、4和6全都被設為1,並且剩下的位元位置(0、2、5和7)被設為0。因此,位置1、3、4和6的緊縮資料元件被設為全為1(於此係以0Xffff示出,這表示這是此指令的字組版本(並且在這個事例中,目標暫存器是一個128位元向量暫存器),並且位置的剩餘緊縮資料元件被設為0。
示範格式
這個指令的一種示範格式是 「VPMOVM2X{B/W/D/Q}XMM1/YMM1/ZMM1,K1」,其中運算元K1是一個來源寫入遮罩暫存器(例如一個16位元或64位元暫存器),運算元XMM1/YMM1/ZMM1其為一個目標向量暫存器(例如一個128位元、256位元、512位元暫存器等等),並且VPMOVM2X{B/W/D/Q}是此指令的作業碼。在來源暫存器中之資料元件的大小可係(例如透過使用對於資料粒度位元的指示而)界定於此指令的「前綴」中。在大部份的實施例中,這個位元會指示出各個資料元件是32還是64位元,然而,亦可使用其他變化。在數個其他實施例中,資料元件的大小係由此作業碼本身來界定。例如,{B/W/D/Q}識別符分別指示出一個位元組、字組、雙字組、或四倍字。
圖2例示出數個詳細示範向量親和格式。
示範執行方法
圖3例示出於處理器中之對VPMOVM2X指令之使用的一個實施例。具有一個來源寫入遮罩暫存器運算元和目標向量暫存器運算元的一個VPMOVM2X指令係在301被提取。
VPMOVM2X指令係由解碼邏輯在303解碼。視指令之格式而定,係可在這個階段對各式各樣的資料作解譯,例如是否會有一個資料轉變、要對哪些暫存器作寫入和檢索、要對哪個記憶體位置作取用等等。
來源運算元值在305被檢索/讀取。例如,來源寫入遮罩暫存器被讀取。
VPMOVM2X指令(或含有這樣一個指令的操作,例如微操作)係在307由執行資源(例如一或多個功能單元)執行,以判定出儲存在來源寫入遮罩暫存器之各個作動中位元位置中的值。所判定出的這些值界定出目標暫存器的哪些資料元件位置要被設為全為1或全為0。
在309,在目標暫存器之對應於來源寫入遮罩暫存器之各個作動中位置的資料元件位置中的所有位元都被設成使此資料元件的各個位元集合被設為針對來源寫入遮罩暫存器的那個作動中位元位置所判定出的值。在一些實施例中,目標暫存器的未使用資料元件被設為一個虛擬值,例如全為0或交替的1和0。
雖然係將307和309分開例示,但在一些實施例中,他們是作為對此指令之執行的一部分而一起進行的。
圖4(A)例示出用於處理一個VPMOVM2X指令的一種方法的一個實施例。在這個實施例中,係假設先前已進行操作301~305中之一些(如果不是全部都進行的話),然而,並沒有將其示出,以避免混淆下面所要呈現的細節。例如,並沒有示出提取和解碼動作,也沒有示出運算元檢索動作。
在一些實施例中,係在401作出對於來源寫入遮罩暫存器之作動中位元的數量之判定。
在403,係作出對於在來源之最低有效作動中位元位置中之值是否為「1」的判定。此判定也必然會判定出此位元位置是否是一個「0」。在圖1中,此值為「0」。
若此位元位置為「1」,那麼在405,全為1會被寫入到目標暫存器的之前還沒有被寫入的對應最低有效資料元件位置中(除了401之動作以外)。
若此位元位置為「0」,那麼在407,全為0會被寫入到目標暫存器的之前還沒有被寫入的對應最低有效資料元件位置中(除了401之動作以外)。
若答案為否,則在411作出對於來源之在最低有效作動中位元位置中的下一個值是否為「1」的判定。此判定也必然會判定出此位元位置是否是一個「0」。若此位元位置為「1」,那麼在405,全為1會被寫入到目標暫存器的之前還沒有被寫入的對應最低有效資料元件位置中(除了401之動作以外)。若此位元位置為「0」,那麼在407,全為0會被寫入到目標暫存器的之前還沒有被寫入的對應最低有效資料元件位置中(除了401之動作以外)。
對於最近期所評估的作動中位元位置是否係來源寫入遮罩暫存器之最高有效作動中位元位置的判定係在409作出。若答案為是,則此方法完成。
當然,對於上述方法的變化也是有所考量的。例如,在一些實施例中,此方法係從最高有效資料元件位置開始,並反向運作回來。
圖4(B)例示出用於處理一個VPMOVM2X指令的一種方法的一個實施例。在這個實施例中,係假設先前已進行操作301~305中之一些(如果不是全部都進行的話),然而,並沒有將其示出,以避免混淆下面所要呈現的 細節。例如,並沒有示出提取和解碼動作,也沒有示出運算元檢索動作。
在一些實施例中,係在401作出對於來源寫入遮罩暫存器之作動中位元的數量之判定。
在413,並行地,係作出對於在來源寫入遮罩暫存器之作動中位元位置中之所有值的判定。
在415,目標暫存器的對應於來源寫入遮罩暫存器之作動中位元位置的資料元件被並行地寫入成全為1或是全為0,視其在來源寫入遮罩暫存器中的對應作動中位元位置之值而定。例如,若一個作動中位元位置是0,則目標之對應資料元件位置被設為全為0,並且若一個作動中位元位置是1,則目標之對應資料元件位置被設為全為1。
圖5例示出用於處理VPMOVM2X之方法的數個偽碼範例。在這些範例中,VL是向量長度,KL是在一個來源寫入遮罩暫存器中之作動中位元的數量,並且「<- -1」意指將所有位元設為1。
示範指令格式
係可藉由不同的格式來體現於本文中所述之指令的數個實施例。此外,下面將詳述示範系統、架構和管線。這(些)指令的數個實施例可係執行於此等系統、架構、和管線上,但並不受限於所詳述的那些。
同屬向量親和指令格式
一個向量親和指令格式是適用於向量指令的一種指令格式(例如,有特定於向量操作的某些欄位)。雖然 係描述當中向量和純量操作都透過此向量親和格式而受到支援的數個實施例,有一些替代實施例只使用向量操作此向量親和指令格式。
圖7A~7B是方塊圖,其依據本發明的數個實施例而例示出一個同屬向量親和指令格式及其之數個向量模板。圖7A是依據本發明的數個實施例而例示出一個同屬向量親和指令格式及其A類別指令模版的方塊圖;而圖7B是依據本發明的數個實施例而例示出此同屬向量親和指令格式及其B類別指令模版的方塊圖。具體而言,係針對一個同屬向量親和指令格式700而定義出A類別和B類別指令模版,此二者皆包括無記憶體取用705指令模版和有記憶體取用720指令模版。在向量親和指令格式的語境中,同屬一詞係指不綁縛於任何特定指令集的指令格式。
雖然將描述本發明的數個實施例,其中向量親和指令格式支援下列幾者:具有32位元(4位元組)或64位元(8位元組)之資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(並且因此,一個64位元組向量係由16個雙字組大小的元件構成,抑或是由8個四倍字大小的元件構成);具有16位元(2位元組)或8位元(1位元組)之資料元件寬度(或大小)的64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或或8位元(1位元組)之資料元件寬度(或大小)的32位元組向量運算元長度(或大小);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、 或8位元(1位元組)之資料元件寬度(或大小)的16位元組向量運算元長度(或大小);但一些替代實施例可係支持具有更大、更小且/或不同的資料元件寬度(例如,128位元(16位元組))的更大、更小且/或不同的向量運算元大小(例如,256位元組向量運算元)。
圖7A中的A類別指令模版包括:(1)在無記憶體取用705指令模版內,有示出一個無記憶體取用的完整捨入控制類型操作710指令模版和一個無記憶體取用的資料轉變類型操作715指令模版;以及(2)在有記憶體取用720指令模版內,有示出一個有記憶體取用的時間性725指令模版和一個有記憶體取用的非時間性730指令模版。圖7B中的B類別指令模版包括:(1)在無記憶體取用705指令模版內,有示出一個無記憶體取用的寫入遮罩控制部份捨入控制類型操作712指令模版和一個無記憶體取用的寫入遮罩控制vsize類型操作717指令模版;以及(2)在有記憶體取用720指令模版內,有示出一個有記憶體取用寫入遮罩控制727指令模版。
同屬向量親和指令格式700包括於下文中以例示於圖7A~7B中之順序列出的下列欄位。
格式欄位740--在這個欄位中的一個特定值(一個指令格式識別符值)獨特地識別出此向量親和指令格式,並因而識別出指令串中之屬於此向量親和指令格式的指令之存在。因此,這個欄位是非必要的,其原因在於,對於只具有同屬向量親和指令格式的指令集而言,這並不 需要。
基礎操作欄位742--其內容區別出不同的基礎操作。
暫存器索引欄位744--其內容直接或透過位址產生而指明來源與目標運算元之區位,若它們是在暫存器或記憶體中。這些包括數量足以從一個PxQ(例如,32x512、16x128、32x1024、64x1024)的暫存器檔案中選擇N個暫存器的位元。雖然在一個實施例中,N可係上至三個來源和一個目標暫存器,一些替代實施例可係支援更多或更少的來源和目標暫存器(例如,可支援上至兩個來源且其中這些來源中之一者亦作為目標、可支援上至三個來源且其中這些來源中之一者亦作為目標、可支援上至兩個來源和一個目標)。
修飾符欄位746--其內容使有指明記憶體取用的屬於此同屬向量指令格式的指令之存在與並未指明者有所區別;亦即,在無記憶體取用705指令模版與有記憶體取用720指令模版之間有所區別。有記憶體取用操作讀取並/或寫入此記憶體階層(在一些事例中,係利用暫存器中之值而指明來源和/或目標位址),而無記憶體取用操作並不如此(例如,來源和目標是暫存器)。雖然在一個實施例中,這個欄位亦在三個不同的方式中作出選擇以進行記憶體位址計算,但一些替代實施例可係支援更多、更少或不同的用於進行記憶體位址計算的方式。
擴大操作欄位750--其內容區別出除了基礎操 作以外係要進行許多不同操作中之何者。這個欄位是特定於語境的。在本發明的一個實施例中,這個欄位被劃分成一個類別欄位768、一個阿爾法欄位752、和一個貝他欄位754。擴大操作欄位750讓共同操作群組能夠在單一個指令上進行,而非在2、3或4個指令上進行。
縮放欄位760--其內容讓用於記憶體位址產生(例如,用於使用2縮放(scale) *索引(index)+基礎(base)的位址產生)的索引欄位之內容能夠縮放。
移位欄位762A--其內容係用作記憶體位址產生的一部分(例如,用於使用2縮放 *索引+基礎+移位(displacement)的位址產生)。
移位因數欄位762B(請注意,移位欄位762A直接並列在移位因數欄位762B上,這表示係使用這一者或另一者)--其內容係用作記憶體位址產生的一部分;其指明要被以記憶體取用之大小(N)縮放的一個移位因數--其中N是此記憶體取用中之位元組的數量(例如,用於使用2縮放 *索引+基礎+經縮放移位(scaled displacement)的位址產生)。冗餘低次位元被忽略,並且因此,此移位因數欄位的內容被乘上記憶體運算元總大小(N),以產生要在計算有效位址時使用的最終移位。N之值係由處理器硬體在運行時間基於完整作業碼欄位774(稍後將於本文中說明)以及資料操縱欄位754C決定。移位欄位762A和移位因數欄位762B是非必要的,其原因在於,他們只用於無記憶體取用705指令模版,且/或不同的實施例可僅實施這兩者中之一 者,或二者皆不實施。
資料元件寬度(W)欄位764--其內容區別出係要使用多個資料元件寬度中之何者(在一些實施例中係針對所有的指令;在其他實施例中係僅針對這些指令中之一些)。這個欄位是非必要的,其原因在於,當只有支援一個資料元件寬度且/或係利用這些作業碼的一些面向而支援數個資料元件寬度時,就並不需要這個。
寫入遮罩欄位770--其內容基於一種每資料元件位置基礎而控制在目標向量運算元中的那個資料元件位置是否反映出基礎操作和擴大操作之結果。A類別指令模版支援合併寫入遮蔽,而B類別指令模版對合併寫入遮蔽與歸零寫入遮蔽二者皆支援。在合併之時,向量遮罩讓目標中的任何元件集合都能夠受到保護以免受在任何操作之執行期間內所作的更新(由基礎操作和擴大操作指明);在另一個實施例中,係保留目標之對應遮罩位元具有0值之處的各個元件之舊值。反之,當歸零時,向量遮罩讓目標中的任何元件集合能夠在任何操作的執行期間內被歸零(由基礎操作和擴大操作指明);在一個實施例中,當對應遮罩位元具有0值時,目標的一個元件被設為0。這個功能性的一個子集是控制要被進行的操作之向量長度(亦即,被修飾的元件之跨距,從第一個到最後一個)的能力;然而,被修飾的元件並不一定要是連續的。因此,寫入遮罩欄位770容許部份向量操作,包括載入、儲存、算術性、邏輯性等等。雖然係描述本發明的數個實施例,其中寫入遮罩欄位770之 內容選擇多個寫入遮罩暫存器中之含有要被使用的寫入遮罩的那一者(並且因此寫入遮罩欄位770之內容間接地識別出要進行的遮蔽行為),數個替代實施例取代性地或額外地讓遮罩寫入欄位770之內容直接指明要進行的遮蔽行為。
立即欄位772--其內容可容許對立即的指明。這個欄位是選擇性的,其原因在於,它並不出現在並不支援立即的同屬向量親和格式的實作中,並且它並不出現在並不使用立即的指令中。
類別欄位768--其內容在不同類別的指令之間作出區別。請參看圖7A~B,這個欄位的內容在A類別和B類別指令之間作出選擇。在圖7A~B中,係使用圓角方塊來指出一個特定值出現在一個欄位中(例如,對於類別欄位768的分別於圖7A~B中之A類別768A和B類別768B)
A類別的指令模版
在A類別之無記憶體取用705指令模版的事例中,阿爾法欄位752被詮釋為一個RS欄位752A,其內容區別出要進行不同擴大操作類型中之何者(例如,分別針對無記憶體取用的捨入類型操作710和無記憶體取用的資料轉變類型操作715指令模版而指明捨入752A.1和資料轉變752A.2),而貝他欄位754區別出要進行所指明之類型的操作中之何者。在無記憶體取用705指令模版中,縮放欄位760、移位欄位762A、和移位縮放欄位762B並不存在。
無記憶體取用指令模版--完整捨入控制類型操作
在無記憶體取用的完整捨入控制類型操作710指令模版中,貝他欄位754被詮釋為一個捨入控制欄位754A,其內容提供靜態捨入。雖然在本發明之所描述的數個實施例中,捨入控制欄位754A包括一個壓抑所有浮點例外(suppress all floating point exceptions,SAE)欄位756和一個捨入操作控制欄位758,一些替代實施例可支援可將這兩個概念編碼到同一個欄位中,或是只具有這些概念/欄位中之這一者或另一者(例如,可僅具有捨入操作控制欄位758)。
SAE欄位756--其內容區別出是否要停用例外事件報告;當SAE欄位756之內容指出有致能壓抑時,一個給定指令並不報告任何類型的浮點例外旗標,並且並不引發任何浮點例外處置器。
捨入操作控制欄位758--其內容區別出要進行一群捨入操作中之哪一者(例如,向上取整、向下取整、向零取整和向最近值取整)。因此,捨入操作控制欄位758容許在一種每指令基礎上的對捨入模式之改變。在本發明之當中一個處理器係包括有一個控制暫存器以指明捨入模式的一個實施例中,捨入操作控制欄位750之內容壓制那個暫存器值。
無記憶體取用指令模版--資料轉變類型操作
在無記憶體取用的資料轉變類型操作715指令模版中,貝他欄位754被詮釋為一個資料轉變欄位754B,其內容區別出要進行多個資料轉變中的哪一個(例如,無資料 轉變、拌和、廣播)。
在A類別之有記憶體取用720指令模組的事例中,阿爾法欄位752被詮釋為一個逐出提示欄位752B,其內容區別出要使用這些逐出提示中的哪一個(在圖11A中,係分別針對有記憶體取用的時間性725指令模版和有記憶體取用的非時間性730指令模版而指明時間性752B.1和非時間性752.B),而貝他欄位754被詮釋為一個資料操縱欄位754C,其內容區別出要進行多個資料操縱操作(亦被稱為基元)中的哪一個(例如,無操縱;廣播;對來源作向上轉換;和對目標作向下轉換)。有記憶體取用720指令模版包括縮放欄位760,且非必要性地包括移位欄位762A或移位縮放欄位762B。
向量記憶體指令在具有轉換支援的情況下進行自記憶體的向量載入和至記憶體的向量儲存。當在常態向量指令的情況下,向量記憶體指令以一種資料式的方式自/至記憶體轉移資料,其中被實際轉移的元件係由被選為寫入遮罩的向量遮罩之內容支配。
有記憶體取用指令模版--時間性
時間性資料是很可能會在足以得益於快取行為的短時間內被再使用的資料。然而,這是一個提示,數個不同的處理器可能係以不同的方式實施它,包括整個忽略此提示。
記憶體取用指令模版--非時間性
非時間性資料是很不可能會在足以得益於第1階 快取中之快取行為的短時間內被再使用且應被給予在逐出方面的優先權的資料。然而,這是一個提示,數個不同的處理器可能係以不同的方式實施它,包括整個忽略此提示。
B類別的指令模版
在B類別之指令模版的事例中,阿爾法欄位752被詮釋為一個寫入遮罩控制(Z)欄位752C,其內容區別出由寫入遮罩欄位770所控制的寫入遮蔽行為是否應為合併或歸零。
在B類別之無記憶體取用705指令模版的事例中,一部分的貝他欄位754被詮釋為一個RL欄位757A,其內容區別出係要進行不同擴大操作類型中的哪一個(例如,係分別針對無記憶體取用的寫入遮罩控制部份捨入控制類型操作712指令模版和無記憶體取用的寫入遮罩控制向量長度(vector length,VSIZE)類型操作717指令模版而指明捨入757A.1和VSIZE 757A.2),而貝他欄位754的剩餘部份區別出係要進行所指明之類型的這些操作中之何者。在無記憶體取用705指令模版中,縮放欄位760、移位欄位762A、和移位縮放欄位762B並不存在。
捨入操作控制欄位759A--就像捨入操作控制欄位758,其內容區別出要進行一群捨入操作中之哪一者(例如,向上取整、向下取整、向零取整和向最近值取整)。因此,捨入操作控制欄位759A容許在一種每指令基礎上的對捨入模式之改變。在本發明之當中一個處理器係包括有一個控制暫存器以指明捨入模式的一個實施例中,捨入操 作控制欄位750之內容壓制那個暫存器值。
在無記憶體取用的寫入遮罩控制VSIZE類型操作717指令模版中,貝他欄位754的剩餘部份被詮釋成一個向量長度欄位759B,其內容區別出係要在多個資料向量長度中的哪一者上進行操作(例如,128、256或512個位元組)。
在B類別之有記憶體取用720指令模版的事例中,貝他欄位754的一部分被詮釋為一個廣播欄位757B,其內容區別出是否要進行廣播類型資料操縱操作,而貝他欄位754的其他部份被詮釋為向量長度欄位759B。有記憶體取用720指令模版包括縮放欄位760,並且非必要性地包括有移位欄位762A或移位縮放欄位762B。
考慮710,係將一個完整作業碼欄位774示為包括格式欄位740、基礎操作欄位742、和資料元件寬度(W)欄位764。雖然係示出當中完整作業碼欄位774包括有所有這些欄位的一個實施例,在並不支援所有這些欄位的數個實施例中,完整作業碼欄位774所包括的這些欄位並不到全部。完整作業碼欄位774提供作業碼(operation code,opcode)。
擴大操作欄位750、資料元件寬度(W)欄位764、和寫入遮罩欄位770讓這些特徵能夠於此同屬向量親和指令格式中在一種每指令基礎上被指明。
寫入遮罩欄位和資料元件寬度欄位的組合創造出類型性的指令,因為它們讓遮罩能夠基於不同的資料元 件寬度而被施加。
在A類別和B類別中所找到的各種指令模版在不同的情況中大有益處。在本發明的一些實施例中,不同處理器或在一個處理器內的不同核心可係僅支援A類別、僅支援B類別、或這兩個類別都支援。比如說,意欲用於一般用途運算的一個高效能一般用途亂序核心可係僅支援B類別,主要意欲用於圖形和/或科學(通量)運算的一個核心可係僅支援A類別,並且意欲用於二者的一個核心可係兩個都支援(當然,具有來自兩個類別之模版和指令的某種混合(但並非來自兩個類別的所有模版和指令)的一個核心係落在本發明之界限內)。同時,單一個處理器可係包括有複數個核心,所有的這些核心都支援相同的類別,或是不同核心支援不同類別。比如說,在具有分開的數個圖形和一般用途核心的一個處理器中,這些圖形核心中之主要係意欲用於圖形和/或科學運算的一個核心可僅支援A類別,而這些一般用途核心中之一或多者可係僅支援B類別的具有亂序執行且係意欲用於一般用途運算之暫存器重新命名的高效能一般用途核心。並不具有一個分開的圖形核心的另一個處理器可係包括A類別和B類別都支援的一多個一般用途有序或亂序核心。當然,在本發明的數個不同實施例中,來自一個類別的特徵可亦被實施在另一個類別中。以高階語言所寫成的程式可被置入(例如,適時編譯或靜態編譯)到多種不同的可執行格式中,包括:(1)只具有由目標處理器所支援的這(些)類別之指令以作執行的一 種格式;或(2)具有使用所有類別之指令的不同的組合所寫成的替代常式,且具有控制流程碼的一種格式,此控制流程碼會基於正在執行此碼的處理器所支援之指令而選擇此等常式來作執行。
示範特定向量親和指令格式
圖8是方塊圖,其依據本發明的數個實施例而例示出一種示範特定向量親和指令格式。圖8示出一種特定向量親和指令格式800,其係特定的,因為它指明區位、大小、詮釋方式、和欄位之順序,還有這些欄位中之某些者的值。特定向量親和指令格式800可被用來延伸x86指令集,並且因此,這些欄位中有一些係與在現有的x86指令集及其延伸(例如,AVX)中所使用的那些類似或相同。這個格式仍然符合具有延伸的現有x86指令集之前綴編碼欄位、真實作業碼位元組欄位、MOD R/M欄位、SIB欄位、移位欄位、和立即欄位。係例示出從圖8的欄位所對映到的來自圖7之欄位。
應瞭解,雖然為作例示目的而係以同屬向量親和指令格式700之語境,參考特定向量親和指令格式800來描述本發明的數個實施例,但本發明除了所聲請之處以外,並不受限於特定向量親和指令格式800。例如,同屬向量親和指令格式700係有仔細考量這許多欄位的各式各樣的可能大小,而特定向量親和指令格式800係被示為具有為特定大小的欄位。舉一個具體的例子來說,雖然係將資料元件寬度(W)欄位764例示為在特定向量親和指令格式800中 的一個一位元欄位,但本發明並不如此受限(也就是說,同屬向量親和指令格式700有考量其他大小的資料元件寬度(W)欄位764)。
同屬向量親和指令格式700包括於下文中以例示於圖8A中之順序列出的下列欄位。
EVEX前綴(EVEX Prefix)(位元組0~3)802--被編碼成一種四位元組形式。
格式欄位(Format Field)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的第一部 分,並且是EVEX.R位元的欄位(EVEX位元組1,位元[4]-R’),用來編碼經延伸32暫存器組的較高的那16個抑或是較低的那16個。在本發明的一個實施例中,這個位元,還有如於下文中所指出的其他者,係以位元逆轉格式儲存,以(在習知的x86 32位元模式中)與BOUND指令作出區別,BOUND指令的真實作業碼位元組是62,但在MOD R/M欄位中(述於下文中)並不接受在MOD欄位中之11的值;本發明的數個替代實施例並不將這個和在下文中所指出的其他位元儲存在逆轉格式中。係使用為1的值來編碼較低的16個暫存器。易言之,R’Rrrr係藉由組合EVEX.R’、EVEX.R和來自其他欄位的其他RRR而形成。
作業碼對映欄位815(EVEX位元組1,位元[3:0]-mmmm)--其內容編碼一個隱含領導作業碼位元組(0F、0F 38、或0F 3)。
資料元件寬度(W)欄位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或更多個來源運算元的指令有效;(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個位元)。在一個實施例中,為了支援使用在舊有格式中和在EVEN前綴格式二者中的一個SIMD前綴(66H、F2H、F3H)的舊有SSE,這些舊有SIMD前綴被編碼到SIMD前綴編碼欄位中;並且在運行時間中在被提供給解碼器之PLA之前被擴張到舊有SIMD前綴中(以使得PLA能夠執行這些舊有指令的舊有和EVEX格式二者而無須修改)。雖然較新的指令可直接將EVEX前綴編碼欄位的內容作為一個作業碼延伸來使用,某些實施例係以類似方式擴張以求一致,但容許藉由這些舊有SIMD前綴來指明不同意義。一個替代實施例可對PLA作再設計,以支援2位元的SIMD前綴編碼,並且因此並不需要擴張。
阿爾法欄位752(EVEX位元組3,位元[7]-EH;亦被稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制(write mask control)、和EVEX.N;亦以α來例示)--如先前所述,這個欄位是特定於語境的。
貝他欄位754(EVEX位元組3,位元[6:4]-SSS,亦稱為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ來例示)--如先前所述,這個欄位是特定於語境的。
REX’欄位710--這是REX’欄位的剩餘部份,並且是EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),可用來編碼經延伸32暫存器組的較高的那16個抑或是較低的那16個。此位元係以位元逆轉格式儲存。係使用為1的值來編碼較低的16個暫存器。易言之,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位770(EVEX位元組3,位元[2:0]-kkk)--如先前所述,其內容指明在寫入遮罩暫存器中的一個暫存器的索引。在本發明的一個實施例中,特定值EVEX.kkk=000具有一個特殊作用,隱含著沒有任何寫入遮罩針對此特定指令而被使用(這可係藉由多種方式來實施,包括使用被硬線式連接到所有者或旁繞遮蔽硬體的一個寫入遮罩)。
真實作業碼欄位(Real Opcode Field)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被作正負號延伸(sign extended),所以它只能夠在-128和127位元組偏移之間定址;以64位元組快取線的方面來說,disp8使用只可被設成四種真實可用值-128、-64、0、和64的8個位元;由於常常 會需要較大的範圍,所以係使用disp32;然而,disp32需要4個位元組。與disp8和disp32相反,移位因數欄位762B是對disp8的一種再詮釋;當使用移位因數欄位762B時,實際移位係由移位因數欄位的內容乘上記憶體運算元取用之大小(N)來決定。這種類型的移位被稱為是disp8*N。這減少了平均指令長度(用於移位的單一個位元,但具有大很多的範圍)。這樣的經壓縮移位係以這樣的假設為基礎,即,有效移位是記憶體取用之粒度的倍數,並且因此,位址偏移之冗餘低次位元並不需要被編碼。易言之,移位因數欄位762B代替了舊有x86指令集8位元移位。因此,移位因數欄位762B被以與一個x86指令集8位元移位相同的方式編碼(所以在ModRM/SIB編碼規則中沒有任何改變),只有一個例外,就是disp8被超載到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欄位。當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)被詮釋成逐出提示(eviction hint,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;當它含有一個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之方塊圖。在所例示的這個實施例中,係有為512位元寬的32個向量暫存器910;係以zmm0到zmm31來指涉這些暫存器。較低的16個zmm暫存器的較低次的256個位元係覆置在暫存器ymm0~16上。較低的16個zmm暫存器的較低次的128個位元(ymm暫存器的較低次的128個位元)係覆置在暫存器xmm0~16上。特定向量親和指令格式800如於下表中所例示地在這些被覆置的暫存器檔案上操作。
易言之,向量長度欄位759B在一個最大長度和一或多個其他較短長度之間作選擇,其中各個這樣的較短長度是前一個長度的長之一半;並且不具有向量長度欄位759B的指令模板係操作在最大向量長度上。此外,在一個實施例中,特定向量親和指令格式800的B類別指令模板係操作在緊縮或純量單/雙倍精度浮點數資料和緊縮或純量整數資料上。純量操作係在一個zmm/ymm/xmm暫存器中之最低次資料元件位置上進行的操作;視實施例而定,較高次資料元件位置不是被保持成和他們在此指令之前的樣子相同,就是被歸零。
寫入遮罩暫存器915--在所例示的實施例中, 係有8個寫入遮罩暫存器(k0到k7),其大小為64位元。在一個替代實施例中,這些寫入遮罩暫存器915之大小為16位元。如先前所述,在本發明的一個實施例中,向量遮罩暫存器k0不被用作寫入遮罩;當通常會指出k0的編碼被用作一個寫入遮罩時,它會選擇0xFFFF的一個硬線式寫入遮罩,而有效地針對那個指令使寫入遮蔽行為失效。
一般用途暫存器925--在所例示的實施例中,係有與現有的x86定指模式一起使用的十六個64位元一般用途暫存器,用以定址記憶體運算元。這些暫存器係由RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8到R15這些名稱來指涉。
純量浮點數堆疊暫存器檔案(x87堆疊)945,在這上面混疊有MMX緊縮整數平坦暫存器檔案950--在所例示的這個實施例中,此x87堆疊是一個用來利用x87指令集延伸而在32/64/80位元浮點數資料上進行純量浮點數操作的八元件堆疊;而這些MMX暫存器係用來在64位元緊縮整數資料上進行操作,以及針對在MMX和MMX暫存器之間所進行的一些操作而保持運算元。
本發明的數個替代實施例可係使用較寬或較窄的暫存器。此外,本發明的數個替代實施例可係使用較多、較少、或不同的暫存器檔案和暫存器。
示範核心架構、處理器、和電腦架構
係可藉由數種不同方式而針對不同目的、在不同處理器中實施處理器核心。例如,此等核心之實作可包括: (1)意欲用於一般用途運算的一個一般用途有序核心;(2)意欲用於一般用途運算的一個高效能一般用途亂序核心;(3)主要意欲用於圖形和/或科學(通量)運算的一個特殊用途核心。對於不同處理器的實作可包括:(1)包括意欲用於一般用途運算的一或多個一般用途有序核心和/或意欲用於一般用途運算的一或多個一般用途亂序核心的CPU;以及(2)包括主要意欲用於圖形和/或科學(通量)的一或多個特殊用途核心的一個處理器。此等不同處理器導向不同電腦系統架構,這些電腦系統架構包括:(1)在與CPU不同的一個晶片上的共處理器;(2)在與一個CPU在同一個封裝體內的一個不同晶粒上的共處理器;(3)與一個CPU在同一個晶粒上的共處理器(在這個事例中,這樣一個共處理器有時候被稱為特殊用途邏輯,例如整合式圖形和/或科學(通量)邏輯,或是被稱為特殊用途核心);以及(4)一個單晶片系統,其可在同一個晶粒上包括有所述CPU(有時候被稱為應用核心或應用處理器)、於上文中所述的共處理器、及額外功能性。接下來係描述示範核心架構,再之後是對於示範處理器和電腦架構的描述。
示範核心架構
有序和亂序核心方塊圖
圖10A是一個方塊圖,其依據本發明的數個實施例而同時例示出一個示範有序管線和一個示範暫存器重新命名且亂序的發佈/執行管線。圖10B是一個方塊圖,其依據本發明的數個實施例而同時例示出要被包括在一個處理 器中的一個有序架構核心之示範實施例和一個示範暫存器重新命名且亂序的發佈/執行架構核心。
在圖1A~B中的實線框係例示出有序管線和有序核心,而虛線框的非必須加增係例示出暫存器重新命名且亂序的發佈/執行管線和核心。考量到有序面向為亂序面向的一個子集,在此將說明亂序面向。
在圖10A中,一個處理器管線1000包括一個提取階段1002、一個長度解碼階段1004、一個解碼階段1006、一個配置階段1008、一個重新命名階段1010、一個排程(亦稱為配送或發佈)階段1012、一個暫存器讀取/記憶體讀取階段1014、一個執行階段1016、一個寫回/記憶體寫入階段1018、一個例外處置階段1022、和一個承諾階段1024。
圖10B示出一個處理器核心1090,其包括耦接至一個執行引擎單元1050的一個前端單元1030,並且這兩者都耦接至一個記憶體單元1070。核心1090可係一個精簡指令集運算(reduced instruction set computing,RISC)核心、一個複雜指令集運算(complex instruction set computing,CISC)核心、一個極長指令字組(very long instruction word,VLIW)核心、或是一個混和或替代的核心類型。再作為另一種選項,核心1090可係一個特殊用途核心,像是,例如,一個網路或通訊核心、壓縮引擎、共處理器核心、一般用途運算圖形處理單元(general purpose computing graphics processing unit,GPGPU)核心、圖形核心、或其他諸如此類者。
前端單元1030包括耦接至一個指令快取單元1034的一個分支預測單元1032,指令快取單元1034耦接至一個指令翻譯旁看緩衝器(translation lookaside buffer,TLB)1036,指令TLB 1036耦接至一個指令提取單元1038,指令提取單元1038耦接至一個解碼單元1040。解碼單元1040(或解碼器)可解碼指令,並產生解碼自、或以其他方式反映出、或導自原始指令的一或多個微操作、微碼進入點、微指令、其他指令、或其他控制信號來作為一個輸出。係可使用各種不同機構來實施解碼單元1040。適當的機構之範例包括但不受限於查詢表、硬體實作、可程式規劃邏輯陣列(programmable logic array,PLA)、微碼唯讀記憶體(read only memory,ROM)等等。在一個實施例中,核心1090包括一個微碼ROM或針對某些巨集指令而儲存微碼的其他媒體(例如,在解碼單元中,或是以其他方式存在於前端單元1030中)。解碼單元1040耦接至執行引擎單元1050中的一個重新命名/配置器單元1052。
執行引擎單元1050包括耦接至一個退役單元1054和一組一或多個排程器單元1056的重新命名/配置器單元1052。這(些)排程器單元1056代表任何數量的不同排程器,包括預留站台、中央指令窗等等。這(些)排程器單元1056耦接至一或數個實體暫存器檔案單元1058。各個實體暫存器檔案單元1058代表一或多個實體暫存器檔案,這一或多個實體暫存器檔案中之不同者儲存一或多種不同的資料類型,像是純量整數、純量浮點數、緊縮整數、 緊縮浮點數、向量整數、向量浮點數、、狀態(例如,為要被執行的下一個指令之位址的一個指令指標)等等。在一個實施例中,實體暫存器檔案單元1058包含一個向量暫存器單元、一個寫入遮罩暫存器單元、和一個純量暫存器單元。這些暫存器單元可提供架構性向量暫存器、向量遮罩暫存器、和一般用途暫存器。這(些)實體暫存器檔案單元1058與退役單元1054部份重疊,以例示出可實施暫存器重新命名且亂序之執行的各種方式(例如,使用重新排序緩衝器和退役暫存器檔案;使用未來檔案、歷史緩衝器、和退役暫存器檔案;使用暫存器對映和暫存器池;等等)。退役單元1054和這(些)實體暫存器檔案單元1058耦接至執行叢集1060。這(些)執行叢集1060包括一組一或多個執行單元1062和一組一或多個記憶體取用單元1064。這些執行單元1062可在各種類型的資料(例如,純量浮點數、緊縮整數、緊縮浮點數、向量整數、向量浮點數)上進行各種操作(例如,移位、加法、減法、乘法)。雖然一些實施例可係包括有專用於特定功能或功能組的多個執行單元,其他實施例可係包括僅一個執行單元或全部都進行所有功能的複數個執行單元。係將這(些)排程器單元1056、這(些)實體暫存器檔案單元1058、和這(些)執行叢集1060示為可能為複數個,因為某些實施例創造用於某類型的資料/操作的分別的管線(例如,各具有他們自己的排程器單元、實體暫存器檔案單元、和/或執行叢集的純量整數管線、純量浮點數/緊縮整數/緊縮浮點數/向量整數/向量浮 點數管線、和/或記憶體取用管線一一並且在分別的記憶體取用管線的事例中,係實施某些實施例,在這些實施例中只有這個管線的執行叢集具有這(些)記憶體取用單元1064)。亦應瞭解,當有分別的數個管線被使用時,這些管線中之一或多者可係亂序發佈/執行,並且其他的為有序。
這組記憶體取用單元1064耦接至記憶體單元1070,記憶體單元1070包括耦接至一個資料快取單元1074的一個資料TLB單元1072,資料快取單元1074耦接至一個第二階(L2)快取單元1076。在一個示範實施例中,這些記憶體取用單元1064可包括一個載入單元、一個儲存位址單元、和一個儲存資料單元,它們各耦接至記憶體單元1070中的資料TLB單元1072。指令快取單元1034進一步耦接至記憶體單元1070中的一個第二階(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技術(MIPS Technologies)的MIPS指令集;加利福尼亞州之森尼維耳市的安謀公司(ARM Holdings)的ARM指令集(具有非必要的額外延伸,例如NEON)),包括於本文中所述的這(些)指令。在一個實施例中,核心1090包括用來支援一個緊縮資料指令集延伸(例如,先前所述的AVX1、AVX2、和/或同屬向量親和指令格式的一些形式(U=0和/或U=1))的邏輯,因而讓由許多多媒體應用所使用的操作能夠使用緊縮資料來執行。
雖然係以亂序執行的語境來說明暫存器重新命名,應瞭解,暫存器重新命名係可用在有序架構中。雖然所例示的處理器之實施例亦包括分別的指令和資料快取單元1034/1074和一個共享L2快取單元1076,替代實施例可係具有兼用於指令和資料的單一個內部快取,像是,例如,一個第一階(Level 1,L1)內部快取,或內部快取的複數個階。在一些實施例中,此系統可包括內部快取與在核心和/或處理器外部之外部快取的一個組合。或者是,所有的快取皆可係在核心和/或處理器外部。
具體示範有序核心架構
圖11A~B例示出一個更具體的示範有序核心架 構之方塊圖,此核心會是一個晶片中之數個邏輯方塊(包括相同類型和/或不同類型的其他核心)中之一者。這些邏輯方塊透過一個高帶寬互連網路(例如,一個環狀網路)而與一些固定功能邏輯、記憶體I/O介面、和其他必要I/O邏輯通訊,視應用而定。
圖11A是依據本發明的數個實施例的單一個處理器核心的方塊圖,以及其至晶粒上互連網路1102的連接還有其本地第2階(L2)快取子集1104。在一個實施例中,一個指令解碼器1100支援具有緊縮資料指令集延伸的x86指令集。一個L1快取1106容許低潛時取用,以將記憶體快取到純量和向量單元中。雖然在一個實施例中(為了簡化設計),一個純量單元1108和一個向量單元1110係使用分開的暫存器組合(分別是數個純量暫存器1112和數個向量暫存器1114),並且在他們之間所轉移的資料被寫到記憶體中,並接著從一個第1階(L1)快取1106中被讀回,本發明的數個替代實施例可係使用不同的途徑(例如,使用單一個暫存器集合或包括容許資料在這兩個暫存器檔案之間轉移而不被寫入和讀回的一個通訊路徑)。
本地L2快取子集1104是被劃分成數個不同本地子集(每個處理器核心一個)的一個全域L2快取的一部分。各個處理器核心具有至其自己的本地L2快取子集1104的一個直接取用路徑。由一個處理器核心所讀取的資料被儲存在它的L2快取子集1104中,並且可被快速地取用,並行於取用他們自己的本地L2快取子集的其他處理器核心。由處 理器核心所寫入的資料被儲存在它自己的L2快取子集1104中,並且,如有需要,被從其他子集沖刷。此環狀網路確保共享資料的同調性。此環狀網路是雙向的,以容許代理器(例如處理器核心、L2快取和其他邏輯方塊)在此晶片內與彼此通訊。各個環狀資料路徑是每方向1012位元寬。
圖11B是圖11A中之處理器核心的依據本發明之數個實施例的一部分之放大圖。圖11B包括為L1快取1104之一部分的一個L1資料快取1106A,以及有關向量單元1110和向量暫存器1114的更多細節。詳言之,向量單元1110是一個16寬向量處理單元(vector processing unit,VPU)(請見16寬ALU 1128),其執行整數、單精度浮動、和雙倍精度浮動指令中之一或多者。VPU支援配合拌和單元1120的拌和暫存器輸入、配合數值轉換單元1122A~B的數值轉換、以及在記憶體輸入上的配合複製單元1124的複製。寫入遮罩暫存器1126容許對結果暫存器寫入的預測。
具有整合式記憶體控制器和圖形的處理器
圖12是依據本發明之數個實施例的一個處理器1200之方塊圖,其可具有多於一個的核心,可具有一個整合式記憶體控制器,並且可具有整合式圖形。圖12中的實線框係例示出具有單一個核心1202A、一個系統代理器1210、一組一或多個匯流排控制器單元1216的一個處理器1200,而虛線框的非必要加增係例示出具有複數個核心1202A~N、在系統代理器單元1210中之一組一或多個整合式記憶體控制器單元1214、和特殊用途邏輯1208的一個替 代處理器1200。
因此,處理器1200的不同實作可包括:(1)一個CPU,當中特殊用途邏輯1208是整合式圖形和/或科學(通量)邏輯(其可包括一或多個核心),並且核心1202A~N是一或多個一般用途核心(例如,一般用途有序核心、一般用途亂序核心、此二者之組合);(2)一個共處理器,當中1202A~N是主要意欲用於圖形和/或科學(通量)的大量的特殊用途核心;以及(3)一個共處理器,當中核心1202A~N是大量的一般用途有序核心。因此,處理器1200可係一個一般用途處理器、共處理器或特殊用途處理器,像是,例如,一個網路或通訊處理器、壓縮引擎、圖形處理器、一般用途圖形處理單元(GPGPU)、高通量許多整合式核心(many integrated core,MIC)共處理器(包括30個或更多個核心)、嵌入式處理器、或其他諸如此類者。此處理器可係實施在一或多個晶片上。處理器1200可為一或多個基體的一部分或可係使用多種處理技術(像是,例如,BiCMOS、CMOS、或NMOS)中之任何一者而實施在一或多個基體上。
此記憶體階層包括在這些核心內之一或多個階的快取、一組一或多個共享快取單元1206、和耦接至那組整合式記憶體控制器單元1214的外部記憶體(未示於圖中)。這組共享快取單元1206可包括一或多個中階快取,像是第二階(L2)、第三階(level 3,L3)、第四階(level 4,L4)、或其他階的快取、最末階快取(last level cache,LLC)、和/或前述幾者之組合。雖然在一個實施例中,係有一個以環 圈為基礎的互連單元1212使整合式圖形邏輯1208、這組共享快取單元1206、和系統代理器單元1210/整合式記憶體控制器單元1214互連,替代實施例可係使用任何數量的習知技術來使此等單元互連。在一個實施例中,在一或多個快取單元1206與核心1202~A~N之間的同調性會被維持。
在一些實施例中,核心1202A~N中的一或多者能夠作多執行緒處理。系統代理器1210包括協調和操作核心1202A~N的那些部件。系統代理器單元1210可包括,例如,一個電力控制單元(power control unit,PCU)和一個顯示器單元。此PCU可係為或包括有調節核心1202A~N和整合式圖形邏輯1208之電力狀態所需的邏輯和部件。顯示器單元係用於驅動一或多個外部連接顯示器。
核心1202A~N在架構指令集上可係同質或異質的;也就是說,核心1202A~N中之二或更多者可係能夠執行相同指令集,而其他者可係能夠執行此指令集的僅一個子集或是一個不同的指令集。
示範電腦架構
圖13~16是示範電腦架構的方塊圖。於本技藝中所習知的對於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、切換器、嵌入式處理器、數位訊號處理器(digital signal processor,DSP)、圖形裝置、視訊遊戲裝置、轉頻器、微控制器、行動電話、可攜式媒體播放器、手持式裝置、和各種其他電子裝置的其他系統設計和組態也適宜。一般而 言,能夠如於本文中所揭露地整合處理器和/或其他執行邏輯的許多各式各樣的系統或電子裝置一般來講是適宜的。
現在請參看圖13,所示出的是本發明之一實施例的一個系統1300之方塊圖。系統1300可包括耦接至一個控制器集線器1320的一或多個處理器1310、1315。在一個實施例中,控制器集線器1320包括一個圖形記憶體控制器集線器(graphics memory controller hub,GMCH)1390和一個輸入/輸出集線器(Input/Output Hub,IOH)1350(其可係位在分別的晶片上);GMCH 1390包括記憶體和圖形控制器,記憶體1340和一個共處理器1345耦接至此記憶體和圖形控制器;IOH 1350係將輸入/輸出(input/output,I/O)設備1360耦接至GMCH 1390。或者是,記憶體和圖形控制器中之一或二者係整合在此處理器內(如於本文中所述),記憶體1340和共處理器1345直接耦接至處理器1310,並且控制器集線器1320與IOH 1350係在單一個晶片中。
額外的處理器1315的非必要性質在圖13中係以破碎線指出。各個處理器1310、1315可包括於本文中所述的一或多個處理核心,並且可係處理器1200的相同版本。
記憶體1340可為,例如,動態隨機存取記憶體(dynamic random access memory,DRAM)、相變記憶體(phase change memory,PCM)、或這兩者的組合。對於至少一個實施例而言,控制器集線器1320經由一個多點匯流排(像是前側匯流排(frontside bus,FSB))、點對點介面(像是快速通道互連(QuickPath Interconnect,QPI))、或是類 似連接1395而與處理器1310、1315通訊。
在一個實施例中,共處理器1345是一個特殊用途處理器,像是,例如,一個高通量MIC處理器、一個網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其他諸如此類者。在一個實施例中,控制器集線器1320可包括一個整合式圖形加速器。
在實體資源1310、1315之間,在功過之範圍或度量上係可有多種差異,包括架構性、微架構性、熱學、電力消耗特性、及其他諸如此類者。
在一個實施例中,處理器1310執行控制一般類型之資料處理操作的指令。嵌入在這些指令內的可係共處理器指令。處理器1310將這些共處理器指令辨識為是屬於應由所附接之共處理器1345所執行的一種類型。因此,處理器1310在一個共處理器匯流排或其他互連上將這些共處理器指令(或代表共處理器指令的控制信號)發佈至共處理器1345。一或數個共處理器1345接受並執行所接收到的共處理器指令。
現在請參看圖14,所示出的是依據本發明之一實施例的一第一更具體示範系統1400之方塊圖。如於圖14中所示,多處理器系統1400是一個點對點互連系統,並包括經由一個點對點互連1450而耦接的一第一處理器1470和一第二處理器1480。處理器1470和1480各可為處理器1200的某個版本。在本發明的一個實施例中,處理器1470和1480分別是處理器1310和1315,而共處理器1438是共處理器 1345。在另一個實施例中,處理器1470和1480分別是處理器1310共處理器1345。
係將處理器1470和1480示為分別包括有整合式記憶體控制器(integrated memory controller,IMC)單元1472和1482。處理器1470亦包括有點對點(point-to-point,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可係一個週邊部件互連(Peripheral Component Interconnect,PCI)匯流排,或像是PCI快捷(PCI Express)匯流排或另一種第三代I/O互連匯流排的一個匯流排,但本發明之範疇並不如此受限。
如於圖14中所示,各種I/O設備1414可係和一個匯流排橋1418一起耦接至第一匯流排1416,匯流排橋1418將第一匯流排1416耦接至一第二匯流排1420。在一個實施例中,係有一或多個額外處理器1415耦接至第一匯流排1416,例如共處理器、高通量MIC處理器、GPGPU、加速器(像是,例如,圖形加速器或額外的數位信號處理(digital signal processing,DSP)單元)、可現場規劃閘陣列、或任何其他處理器。在一個實施例中,第二匯流排1420可係一個低腳位數(low pin count(LPC)匯流排。係可將各種設備耦接至第二匯流排1420,包括,例如,鍵盤和/或滑鼠1422、通訊設備1427及可能包括有指令/碼和資料1430的儲存體單元1428(像是磁碟機或其他大容量儲存設備)。此外,係可將一個音訊I/O 1424耦接至第二匯流排1420。請注意,其他架構也是有可能的。例如,取代於圖14的點對點架構,系統係可實施多點匯流排或其他此種架構。
現在請參看圖15,所示出的是依據本發明之一實施例的一第二更具體示範系統1500之方塊圖。圖14和15中的相似元件帶有相似索引號碼,並且圖14中的某些面向已 從圖15中省略,以避免混淆圖15的其他面向。
圖15例示出,處理器1470、1480可分別包括有整合式記憶體和I/O控制邏輯(control logic,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,其可包括整合式圖形邏輯、一個影像處理器、一個音訊處理器、和一個視訊處理器;一個靜態隨機存取記憶體(static random access memory,SRAM)單元1630;一個直接記憶體存取(direct memory access,DMA)單元1632;及用於耦接至一或多個外部顯示器的一個顯示器單元1640。在一個實施例中,這(些)共處理器1620包括一個特殊用途處理器,像是,例如,一個網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、或其他諸如此類者。
於本文中所揭露的數個實施例係可以硬體、軟 體、韌體或此等實作途徑之組合來實施。係可將本發明的數個實施例實施為執行於包括有至少一個處理器、一個儲存系統(包括依電性和非依電性記憶體和/或儲存元件)、至少一個輸入設備和至少一個輸出設備的可程式規劃系統上的電腦程式或程式碼。
可將程式碼,例如例示於圖14中的碼1430,應用到輸入指令上,以進行於本文中所述之功能並產生輸出資訊。此輸出資訊可藉習知方式被應用至一或多個輸出設備。為作這樣的應用,一個處理系統包括具有一個處理器(像是,例如;一個數位訊號處理器(DSP)、一個微控制器、一個特定應用積體電路(application specific integrated circuit,ASIC)、或一個微處理器)的任何系統。
此程式碼可係以一種高階程序或物件導向程式規劃語言實施,以與一個處理系統通訊。如果想要的話,此程式碼可亦係以組合或機器語言實施。事實上,於本文中所描述的機構並不受限於任何定程式規劃語言之範疇。在任何情況中,此語言可為經編譯或經解譯的語言。
係可藉由代表在處理器內之許多邏輯的儲存在一個機器可讀媒體上的代表性指令而實施至少一個實施例的一或多個面向,這些指令在由一個機器執行時會致使此機器裝配邏輯以進行於本文中所述之技術。被稱為「IP核心」這樣的表示法係可被儲存在一個有形的機器可讀媒體上,並被供應給許多顧客或製造設施以載入到實際上做出此邏輯或處理器的裝配機器內。
這樣的機器可讀儲存媒體可包括但不受限於由一個機器或設備所製造或形成的物品之非過渡性有形配置,包括儲存媒體,像是硬碟、任何其他類型的碟片(包括軟式磁片、光學碟片、唯讀光碟記憶體(compact disk read-only memory,CD-ROM)、可抹寫光碟(compact disk rewritable,CD-RW)、和磁光碟)、半導體設備(像是唯讀記憶體(read-only memory,ROM))、隨機存取記憶體(random access memory,RAM)(像是動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可拭除且可程式規劃唯讀記憶體(erasable programmable read-only memory,EPROM)、快閃記憶體、可電氣式拭除且可程式規劃唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)、相變記憶體(PCM)、磁性或光學卡、或任何其他類型的適於儲存電子指令的媒體。
因此,本發明的數個實施例亦包括含有指令或含有界定出於本文中所述之結構、電路、裝置、處理器和/或系統特徵的設計資料(例如硬體描述語言(Hardware Description Language,HDL))的非過渡性有形機器可讀媒體。此等實施例亦可被稱為是程式產品。
仿真(包括二元翻譯、碼變體等等)
在一些事例中,係可使用指令轉換器來將指令從來源指令集轉換成目標指令集。例如,此指令轉換器可翻譯(例如,利用靜態二元翻譯、包括動態編譯的動態二元翻譯)、變體、或以其他方式將一個指令轉換成要由核心處 理的一或多個其他指令。可係以軟體、硬體、韌體或前述各項之組合來實施此指令轉換器。此指令轉換器可係在處理器上、在處理器外、或是部份在處理器上部份在處理器外。
圖17是依據本發明之實施例的一個方塊圖,其對比出對於一個軟體指令轉換器的使用,用以將來源指令集中之二元指令轉換成目標指令集中之二元指令。在所例示的實施例中,此指令轉換器是一個軟體指令轉換器,雖然在另一種事例中,此指令轉換器可係以軟體、韌體、硬體或前述各項之各種組合來實施。圖17示出,係可使用一個x86編譯器1704來編譯為高階語言1702的一個程式,以產生可由具有至少一個x86指令集核心的處理器1716自然執行的x86二元碼1706。具有至少一個x86指令集核心的處理器1716代表可藉由相容地執行或以其他方式處理(1)英特爾(Intel)x86指令集核心之指令集的一個實質部份,或(2)旨在運行於具有至少一個x86指令集核心的一個英特爾處理器上的應用或其他軟體之目的碼版本,而進行與具有至少一個x86指令集核心的一個英特爾處理器實質上相同之功能的任何一個處理器,以達到與具有至少一個x86指令集核心的一個英特爾處理器實質上相同的結果。x86編譯器1704代表可操作來產生可在有或沒有額外連結處理的情況下在具有至少一個x86指令集核心的處理器1716上執行的x86二元碼1706(例如,目的碼)的一個編譯器。類似地,圖17示出,為高階語言1702的這個程式可利用一個替代指 令集編譯器1708而被編譯,以產生可由不具有至少一個x86指令集核心的處理器1714(例如,具有執行加利福尼亞州之森尼維耳市的MIPS科技公司之MIPS指令集的和/或執行加利福尼亞州之森尼維耳市的安謀公司之ARM指令集的數個核心的一個處理器)自然執行的替代指令集二元碼1710。指令轉換器1712係用來將x86二元碼1706轉換成可由不具有一個x86指令集核心的處理器1714自然執行的碼。經轉換的這個碼不太可能與替代指令集二元碼1710一樣,因為具有此種能力的指令轉換器很難做出;然而,經轉換的這個碼將會達成一般操作,並係由來自替代指令集的指令組成。因此,指令轉換器1712代表透過仿真、模擬或任何其他處理而使得不具有x86指令集處理器或核心的處理器或其他電子裝置能夠執行x86二元碼1706的軟體、韌體、硬體或前述各項之組合。
101‧‧‧暫存器

Claims (25)

  1. 一種於電腦處理器中反應於包括有目標向量暫存器運算元、來源寫入遮罩暫存器運算元和作業碼的單一向量緊縮轉換遮罩暫存器至向量暫存器之指令而進行從遮罩暫存器到向量暫存器之轉換的方法,該方法包含下列步驟:執行該單一向量緊縮轉換遮罩暫存器至向量暫存器之指令,以判定儲存在該來源寫入遮罩暫存器之各個作動中位元位置的一個值,其中,所判定出的該等值界定出該目標暫存器的哪些資料元件區位要被設為全為1或全為0;以及將該目標暫存器之各個資料元件位置的資料元件中之所有位元設為所判定出的對應於該來源寫入遮罩暫存器之作動中位元位置的該值。
  2. 如申請專利範圍第1項之方法,其中該作業碼界定出該目標暫存器的緊縮資料元件大小。
  3. 如申請專利範圍第2項之方法,其中在該來源寫入遮罩中之作動中寫入遮罩位元之數量是該目標暫存器以位元計之大小除以該目標暫存器之緊縮資料元件大小。
  4. 如申請專利範圍第1項之方法,其進一步包含下列步驟:將該目標暫存器的未使用資料元件位置設為一個虛擬值。
  5. 如申請專利範圍第1項之方法,其中對於儲存在各個作 動中位元位置中的該等值之判定係並行地進行。
  6. 如申請專利範圍第1項之方法,其中該來源寫入遮罩暫存器是16個位元抑或64個位元。
  7. 如申請專利範圍第1項之方法,其中該目標向量遮罩暫存器之大小為128位元、256位元或512位元。
  8. 如申請專利範圍第1項之方法,其中,執行之步驟包含:判定該來源寫入遮罩暫存器之作動中位元的數量;以及針對該來源寫入遮罩暫存器之各個作動中位元位置:判定在該來源寫入遮罩暫存器的一個作動中位元位置中的一個值是否為1,若在該來源寫入遮罩暫存器的該作動中位元位置中之該值為1,則將1寫入到該目標向量暫存器的對應一個緊縮資料元件位置的每個位元中,及若在該來源寫入遮罩暫存器的該作動中位元位置中之該值不為1,則將0寫入到該目標向量暫存器的對應一個緊縮資料元件位置的每個位元中。
  9. 一種製造物品,其包含:一個有形機器可讀儲存媒體,其具有儲存在內之指令的出現,其中該指令之格式將一個寫入遮罩暫存器指明為其來源運算元並將單一個目標向量暫存器指明為其目標,並且其中該指令格式包括一個作業碼,該作業碼指示一個機器反應於該單一指令的該單次出現而致 使下列動作:判定出在儲存在該來源寫入遮罩暫存器之各個作動中位元位置中之值,其中,所判定出的該等值界定出該目標暫存器的哪些資料元件區位要被設為全為1或全為0,以及將在該目標暫存器之各個資料元件位置的資料元件中之所有位元設為所判定出之對應於該來源寫入遮罩暫存器之作動中位元位置的該值。
  10. 如申請專利範圍第9項之製造物品,其中該作業碼界定出該目標暫存器的緊縮資料元件大小。
  11. 如申請專利範圍第9項之製造物品,其中在該來源寫入遮罩中之作動中寫入遮罩位元之數量是該目標暫存器以位元計之大小除以該目標暫存器之緊縮資料元件大小。
  12. 如申請專利範圍第9項之製造物品,其進一步包含:將該目標暫存器的未使用資料元件位置設為一個虛擬值。
  13. 如申請專利範圍第9項之製造物品,其中對於儲存在各個作動中位元位置中的該等值之判定係並行地進行。
  14. 如申請專利範圍第9項之製造物品,其中該來源寫入遮罩暫存器是16個位元抑或64個位元。
  15. 如申請專利範圍第9項之製造物品,其中該目標向量遮罩暫存器之大小為128位元、256位元或512位元。
  16. 如申請專利範圍第9項之製造物品,其中,判定和設定 之動作進一步包含:判定該來源寫入遮罩暫存器之作動中位元的數量;以及針對該來源寫入遮罩暫存器之各個作動中位元位置:判定在該來源寫入遮罩暫存器的一個作動中位元位置中的一個值是否為1,若在該來源寫入遮罩暫存器的該作動中位元位置中之該值為1,則將1寫入到該目標向量暫存器的對應一個緊縮資料元件位置的每個位元中,及若在該來源寫入遮罩暫存器的該作動中位元位置中之該值不為1,則將0寫入到該目標向量暫存器的對應一個緊縮資料元件位置的每個位元中。
  17. 一種裝置,其包含:用於單一向量緊縮轉換遮罩暫存器至向量暫存器之指令的一個硬體解碼器,該單一向量緊縮轉換遮罩暫存器至向量暫存器之指令包括一個目標向量暫存器運算元、一個來源寫入遮罩暫存器運算元、和一個作業碼;執行邏輯,用以進行下列動作:判定出儲存在該來源寫入遮罩暫存器之各個作動中位元位置中之值,其中,所判定出的該等值界定出該目標暫存器的哪些資料元件區位要被設為全為1或全為0,及將該目標暫存器之各個資料元件位置的資料 元件中之所有位元設為所判定出的對應於該來源寫入遮罩暫存器之作動中位元位置的該值。
  18. 如申請專利範圍第16項之裝置,其中該作業碼界定出該目標暫存器的緊縮資料元件大小。
  19. 如申請專利範圍第17項之裝置,其中在該來源寫入遮罩中之作動中寫入遮罩位元之數量是該目標暫存器以位元計之大小除以該目標暫存器之緊縮資料元件大小。
  20. 如申請專利範圍第17項之裝置,其中對於儲存在各個作動中位元位置中的該等值之判定係並行地進行。
  21. 如申請專利範圍第17項之裝置,其中判定和設定之動作包含:判定該來源寫入遮罩暫存器之作動中位元的數量;以及針對該來源寫入遮罩暫存器之各個作動中位元位置:判定在該來源寫入遮罩暫存器的一個作動中位元位置中的一個值是否為1,若在該來源寫入遮罩暫存器的該作動中位元位置中之該值為1,則將1寫入到該目標向量暫存器的對應一個緊縮資料元件位置的每個位元中,及若在該來源寫入遮罩暫存器的該作動中位元位置中之該值不為1,則將0寫入到該目標向量暫存器的對應一個緊縮資料元件位置的每個位元中。
  22. 如申請專利範圍第17項之裝置,其中各個一元編碼值係 以如下格式儲存:其在該寫入遮罩中之最高有效位元位置為1值,並且在該目標寫入遮罩暫存器之有效性比為1值之該位元位置低的位元位置中有接在該1值後面的零個或更多個0值。
  23. 如申請專利範圍第17項之裝置,其中該來源向量暫存器之經解碼的該最低有效一元編碼值被儲存在該目標暫存器的最低有效緊縮資料元件位置中。
  24. 如申請專利範圍第17項之裝置,其中該來源寫入遮罩暫存器為16個位元。
  25. 如申請專利範圍第17項之裝置,其中該來源寫入遮罩暫存器為64個位元。
TW101148660A 2011-12-23 2012-12-20 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法 TWI462007B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067086 WO2013095609A1 (en) 2011-12-23 2011-12-23 Systems, apparatuses, and methods for performing conversion of a mask register into a vector register

Publications (2)

Publication Number Publication Date
TW201337732A TW201337732A (zh) 2013-09-16
TWI462007B true TWI462007B (zh) 2014-11-21

Family

ID=48669250

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101148660A TWI462007B (zh) 2011-12-23 2012-12-20 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法

Country Status (4)

Country Link
US (1) US20140223138A1 (zh)
CN (1) CN104169867B (zh)
TW (1) TWI462007B (zh)
WO (1) WO2013095609A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US20230132254A1 (en) * 2013-08-08 2023-04-27 Movidius Limited Variable-length instruction buffer management
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160179520A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for variably expanding between mask and vector registers
US20160179523A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
US10338920B2 (en) 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
US20170177354A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Vector-Based Bit Manipulation
US20170192789A1 (en) * 2015-12-30 2017-07-06 Rama Kishnan V. Malladi Systems, Methods, and Apparatuses for Improving Vector Throughput

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115611A1 (en) * 1997-11-26 2003-06-19 Hilts Paul John Method and apparatus for bit vector array
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168573A (en) * 1987-08-31 1992-12-01 Digital Equipment Corporation Memory device for storing vector registers
US5043867A (en) * 1988-03-18 1991-08-27 Digital Equipment Corporation Exception reporting mechanism for a vector processor
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6671797B1 (en) * 2000-02-18 2003-12-30 Texas Instruments Incorporated Microprocessor with expand instruction for forming a mask from one bit
US6880068B1 (en) * 2000-08-09 2005-04-12 Advanced Micro Devices, Inc. Mode dependent segment use with mode independent segment update
US7370180B2 (en) * 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
US20060101256A1 (en) * 2004-10-20 2006-05-11 Dwyer Michael K Looping instructions for a single instruction, multiple data execution engine
US20070124631A1 (en) * 2005-11-08 2007-05-31 Boggs Darrell D Bit field selection instruction
US7921263B2 (en) * 2006-12-22 2011-04-05 Broadcom Corporation System and method for performing masked store operations in a processor
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US20140208065A1 (en) * 2011-12-22 2014-07-24 Elmoustapha Ould-Ahmed-Vall Apparatus and method for mask register expand operation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115611A1 (en) * 1997-11-26 2003-06-19 Hilts Paul John Method and apparatus for bit vector array
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data

Also Published As

Publication number Publication date
CN104169867B (zh) 2018-04-13
WO2013095609A1 (en) 2013-06-27
CN104169867A (zh) 2014-11-26
US20140223138A1 (en) 2014-08-07
TW201337732A (zh) 2013-09-16

Similar Documents

Publication Publication Date Title
TWI462007B (zh) 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法
US10275257B2 (en) Coalescing adjacent gather/scatter operations
TWI609325B (zh) 用於向量運算與累加的處理器、裝置、方法及電腦系統
CN109791488B (zh) 用于执行用于复数的融合乘-加指令的系统和方法
US10037209B2 (en) Systems, apparatuses, and methods for performing delta decoding on packed data elements
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI470544B (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TWI475480B (zh) 向量頻率壓縮指令
TWI556165B (zh) 位元混洗處理器、方法、系統及指令
US9218182B2 (en) Systems, apparatuses, and methods for performing a shuffle and operation (shuffle-op)
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI663545B (zh) 執行置換運算的處理器
TWI610228B (zh) 用於執行向量位元反轉和交叉的方法和設備
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TW201344570A (zh) 緊縮旋轉處理器、方法、系統與指令
TW201723805A (zh) 資料元件比較處理器、方法、系統及指令
JP2018506096A (ja) ベクトルビットシャッフルを実行するための方法および装置
TW201640335A (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
WO2013095616A1 (en) Apparatus and method for selecting elements of a vector computation
TWI517032B (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
TW201810034A (zh) 用於累和的系統、設備及方法

Legal Events

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