TW201723807A - 用於向量運算與累加的裝置及方法(二) - Google Patents

用於向量運算與累加的裝置及方法(二) Download PDF

Info

Publication number
TW201723807A
TW201723807A TW105127894A TW105127894A TW201723807A TW 201723807 A TW201723807 A TW 201723807A TW 105127894 A TW105127894 A TW 105127894A TW 105127894 A TW105127894 A TW 105127894A TW 201723807 A TW201723807 A TW 201723807A
Authority
TW
Taiwan
Prior art keywords
elements
compressed data
field
data value
processor
Prior art date
Application number
TW105127894A
Other languages
English (en)
Other versions
TWI609325B (zh
Inventor
艾哈邁德 瓦爾 艾爾穆斯塔法 烏爾德
馬丁G 迪克森
克許提杰A 杜許
詹姆斯C 阿貝爾
美新 洛克尤金
查德D 漢考克
麥克A 尤利爾
納文 維木里
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 TW201723807A publication Critical patent/TW201723807A/zh
Application granted granted Critical
Publication of TWI609325B publication Critical patent/TWI609325B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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

Abstract

裝置和方法係描述用於比較在兩個立即值中之元素。例如,依據一個實施例的一種方法包括下列操作:讀取儲存在一第一立即值中的一第一組數個元素之值,各個元素具有在第一立即值中的一個經定義位置;將來自第一組數個元素中的各個元素與儲存在一第二立即值中的一第二組數個元素中之各者作比較;計算第一組數個元素中之各個元素的值出現在第二組數個元素中的次數,以達到針對第一組數個元素中之各個元素的一個最終計數;以及,將針對各個元素的該最終計數轉移至一第三立即值,其中此最終計數係儲存在第三立即值中之對應於第一立即值中之經定義位置的一個元素位置中。

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))。
與本發明之實施例有關之背景
直方圖導向的頻率計算被用在許多不同的應用上。例如,係有對於可改善這些類型的計算之效能的新指令的需求。在下文中所描述的本發明之數個實施例提供對這個問題的一個解決方案。
發明概要
於本揭示的一個態樣中,
100‧‧‧管線
102‧‧‧提取階段
104‧‧‧長度解碼階段
106‧‧‧解碼階段
108‧‧‧配置階段
110‧‧‧重新命名階段
112‧‧‧排程階段
114‧‧‧暫存器讀取/記憶體讀取階段
116‧‧‧執行階段
118‧‧‧寫回/記憶體寫入階段
122‧‧‧例外處置階段
124‧‧‧承諾階段
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令翻譯旁看緩衝器(TLB)
138‧‧‧指令提取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧重新命名/配置器單元
154‧‧‧退役單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體取用單元
170‧‧‧記憶體單元
172‧‧‧資料翻譯旁看緩衝器(TLB)單元
174‧‧‧資料快取單元
176‧‧‧第二階(L2)快取單元
190、202A~202N‧‧‧核心
200、415、470、480‧‧‧處理器
204A~204N、206‧‧‧快取單元
208‧‧‧特殊用途邏輯;整合式圖形邏輯
210‧‧‧系統代理器單元
212‧‧‧以環圈為基礎的互連單元
214‧‧‧整合式記憶體控制器單元
216‧‧‧匯流排控制器單元
300、400、500‧‧‧系統
310、315‧‧‧處理器;實體資源
320‧‧‧控制器集線器
340、432、434‧‧‧記憶體
345、438、620‧‧‧共處理器
350‧‧‧輸入/輸出集線器(IOH)
360、414、514‧‧‧輸入/輸出(I/O)設備
390‧‧‧圖形記憶體控制器集線器(GMCH)
395‧‧‧連接
416‧‧‧第一匯流排
418‧‧‧匯流排橋
420‧‧‧第二匯流排
422‧‧‧鍵盤和/或滑鼠
424‧‧‧音訊輸入/輸出(I/O)
427‧‧‧通訊設備
428‧‧‧儲存體單元
430‧‧‧碼;資料
439‧‧‧高效能介面
450‧‧‧點對點互連;點對點(P-P)介面
452、454‧‧‧點對點(P-P)介面
472、482‧‧‧記憶體控制器(IMC)單元;控制邏輯(CL)
476、478、486、488‧‧‧點對點(P-P)介面;點對點(P-P)介面電路
490‧‧‧晶片組
494、498‧‧‧點對點介面電路
492、496‧‧‧介面
515‧‧‧舊有I/O設備
600‧‧‧單晶片系統(SoC)
602‧‧‧互連單元
610‧‧‧應用處理器
630‧‧‧靜態隨機存取記憶體(SRAM)單元
632‧‧‧直接記憶體存取(DMA)單元
640‧‧‧顯示器單元
702‧‧‧高階語言
704‧‧‧x86編譯器
706‧‧‧x86二元碼
708‧‧‧替代指令集編譯器
710‧‧‧替代指令集二元碼
712‧‧‧指令轉換器
714‧‧‧不具有一個x86指令集核心的處理器
716‧‧‧具有至少一個x86指令集核心的處理器
801‧‧‧第一立即值xmm2/m;立即值
802‧‧‧第二立即值xmm3;立即值
803‧‧‧比較模組
804‧‧‧計數器
805‧‧‧選擇邏輯
806、807、810‧‧‧選擇多工器
809‧‧‧定序器
820‧‧‧第三立即值xmm1;第三立即值
902~911‧‧‧方塊
1002‧‧‧VEX前綴
1005、1205‧‧‧REX欄位
1015、1215‧‧‧作業碼對映欄位
1020‧‧‧VEX.vvvv
1025、1225‧‧‧前綴編碼欄位
1030、1230‧‧‧真實作業碼欄位
1040‧‧‧MOD R/M位元組;格式欄位
1042‧‧‧基礎操作欄位;MOD欄位
1044‧‧‧暫存器索引欄位;Reg欄位
1046、1246‧‧‧R/M欄位
1050‧‧‧縮放、索引、基礎(SIB)位元組;縮放欄位
1052、1252‧‧‧SS
1054、1254‧‧‧SIB.xxx
1056、1256‧‧‧SIB.bbb
1062‧‧‧位移欄位
1064、1164‧‧‧資料元素寬度(W)欄位
1068‧‧‧VEX.L;大小欄位
1072‧‧‧立即欄位;IMM8
1074‧‧‧完全作業碼欄位
1100‧‧‧同屬向量親和指令格式
1105、1146A‧‧‧無記憶體取用
1110‧‧‧無記憶體取用的完整捨入控制類型操作
1112‧‧‧無記憶體取用的寫入遮罩控制部份捨入控制類型 操作
1115‧‧‧無記憶體取用的資料轉變類型操作
1117‧‧‧無記憶體取用的寫入遮罩控制向量長度(VSIZE)類型操作
1120、1146B‧‧‧有記憶體取用
1125‧‧‧有記憶體取用的時間性
1127‧‧‧有記憶體取用寫入遮罩控制
1130‧‧‧有記憶體取用的非時間性
1140‧‧‧格式欄位
1142‧‧‧基礎操作欄位
1144‧‧‧暫存器索引欄位
1146‧‧‧修飾符欄位
1150‧‧‧擴大操作欄位
1152‧‧‧阿爾法(alpha)欄位
1152A‧‧‧rs欄位
1152A.1、1157A.1‧‧‧捨入
1152A.2‧‧‧資料轉變
1152B‧‧‧逐出提示(EH)欄位
1152B.1‧‧‧時間性
1152B.2‧‧‧非時間性
1152C‧‧‧寫入遮罩控制(Z)欄位
1154‧‧‧貝他(beta)欄位
1154A‧‧‧捨入控制欄位
1154B‧‧‧資料轉變欄位
1154C‧‧‧資料操縱欄位
1156‧‧‧壓抑所有浮點例外(SAE)欄位
1157A‧‧‧RL欄位
1157A.2‧‧‧向量長度(VSIZE)
1157B‧‧‧廣播欄位
1158‧‧‧捨入操作控制欄位;捨入操作欄位
1159A‧‧‧捨入操作欄位
1159B‧‧‧向量長度欄位
1160‧‧‧縮放欄位
1162A‧‧‧移位欄位
1162B‧‧‧移位因數欄位
1168‧‧‧類別(U)欄位;EVEX.U
1168A‧‧‧A類別
1168B‧‧‧B類別
1170‧‧‧寫入遮罩欄位
1172‧‧‧立即欄位
1174‧‧‧完整作業碼欄位
1200‧‧‧特定向量親和指令格式
1202‧‧‧EVEX前綴
1210‧‧‧REX’欄位
1220‧‧‧EVEX.vvvv欄位
1240‧‧‧MOD R/M欄位
1242‧‧‧MOD欄位
1244‧‧‧Reg欄位
1250‧‧‧縮放、索引、基礎(SIB)
1300‧‧‧暫存器架構
1310、1414‧‧‧向量暫存器
1315、1426‧‧‧寫入遮罩暫存器
1325‧‧‧一般用途暫存器
1345‧‧‧純量浮點數堆疊暫存器檔案(x87堆疊)
1350‧‧‧MMX緊縮整數平坦暫存器檔案
1400‧‧‧指令解碼器
1402‧‧‧網路
1404‧‧‧第2階(L2)快取子集
1406‧‧‧第1階(L1)快取
1406A‧‧‧第1階(L1)資料快取
1408‧‧‧純量單元
1410‧‧‧向量單元
1412‧‧‧純量暫存器
1420‧‧‧拌和單元
1422A、1422B‧‧‧數值轉換單元
1424‧‧‧複製單元
1428‧‧‧ALU
圖1A是一個方塊圖,其依據本發明的數個實施例而例示出一個同屬有序管線和一個同屬暫存器重新命名且亂序的發佈/執行管線;圖1B是一個方塊圖,其依據本發明的數個實施例而例示出要被包括在一個處理器核心中的一個同屬有序架構核心和一個同屬暫存器重新命名且亂序的發佈/執 行架構核心;圖2是依據本發明之數個實施例的一個單核心處理器之方塊圖,其具有整合式的記憶體控制器和圖形;圖3例示出依據本發明的一個實施例的一個系統之方塊圖;圖4例示出依據本發明的一個實施例的一第二系統之方塊圖;圖5例示出依據本發明的一個實施例的一第三系統之方塊圖;圖6例示出依據本發明的一個實施例的一個單晶片系統(system on a chip,SoC)之方塊圖;圖7是一個方塊圖,其依據本發明的數個實施例而對比出對於一個軟體指令轉換器的使用,以將來源指令集中之二元指令轉換成目標指令集中之二元指令;圖8例示出用於進行向量運算和累加操作的一個裝置之實施例;圖9例示出用於進行向量運算和累加操作的一種方法之實施例;圖10A~C依據本發明的數個實施例而例示出包括一個VEX前綴的一種示範指令格式;圖11A~B是方塊圖,其依據本發明的數個實施例而例示出一個同屬向量親和指令格式及其之數個向量模板;圖12A~D是方塊圖,其依據本發明的數個 實施例而例示出一種示範特定向量親和指令格式;圖13是依據本發明的一個實施例的一個暫存器架構之方塊圖;圖14A是依據本發明之數個實施例的單一個處理器核心還有其至晶粒上互連網路之連接及其第二階(Level 2,L2)快取記憶體之本地子集的方塊圖;並且圖14B是據本發明之數個實施例的圖14A中之處理器核心的一部分之展開圖。
較佳實施例之詳細說明
示範處理器架構和資料類型
圖1A是一個方塊圖,其依據本發明的數個實施例而同時例示出一個示範有序管線和一個示範暫存器重新命名且亂序的發佈/執行管線。圖1B是一個方塊圖,其依據本發明的數個實施例而同時例示出要被包括在一個處理器中的一個有序架構核心之示範實施例和一個示範暫存器重新命名且亂序的發佈/執行架構核心。在圖1A~B中的實線框係例示出有序管線和有序核心,而虛線框的非必須加增係例示出暫存器重新命名且亂序的發佈/執行管線和核心。考量到有序面向為亂序面向的一個子集,在此將說明亂序面向。
在圖1A中,一個處理器管線100包括一個提取階段102、一個長度解碼階段104、一個解碼階段106、一個配置階段108、一個重新命名階段110、一個排程(亦 稱為配送或發佈)階段112、一個暫存器讀取/記憶體讀取階段114、一個執行階段116、一個寫回/記憶體寫入階段118、一個例外處置階段122、和一個承諾階段124。
圖1B示出一個處理器核心190,其包括耦接至一個執行引擎單元150的一個前端單元130,並且這兩者都耦接至一個記憶體單元170。核心190可係一個精簡指令集運算(reduced instruction set computing,RISC)核心、一個複雜指令集運算(complex instruction set computing,CISC)核心、一個極長指令字組(very long instruction word,VLIW)核心、或是一個混和或替代的核心類型。再作為另一種選項,核心190可係一個特殊用途核心,像是,例如,一個網路或通訊核心、壓縮引擎、共處理器核心、一般用途運算圖形處理單元(general purpose computing graphics processing unit,GPGPU)核心、圖形核心、或其他諸如此類者。
前端單元130包括耦接至一個指令快取單元134的一個分支預測單元132,指令快取單元134耦接至一個指令翻譯旁看緩衝器(translation lookaside buffer,TLB)136,指令TLB 136耦接至一個指令提取單元138,指令提取單元138耦接至一個解碼單元140。解碼單元140(或解碼器)可解碼指令,並產生解碼自、或以其他方式反映出、或導自原始指令的一或多個微操作、微碼進入點、微指令、其他指令、或其他控制信號來作為一個輸出。係可使用各種不同機構來實施解碼單元140。適當的機構之 範例包括但不受限於查詢表、硬體實作、可程式規劃邏輯陣列(programmable logic array,PLA)、微碼唯讀記憶體(read only memory,ROM)等等。在一個實施例中,核心190包括一個微碼ROM或針對某些巨集指令而儲存微碼的其他媒體(例如,在解碼單元中,或是以其他方式存在於前端單元130中)。解碼單元140耦接至執行引擎單元150中的一個重新命名/配置器單元152。
執行引擎單元150包括耦接至一個退役單元154和一組一或多個排程器單元156的重新命名/配置器單元152。這(些)排程器單元156代表任何數量的不同排程器,包括預留站台、中央指令窗等等。這(些)排程器單元156耦接至一或數個實體暫存器檔案單元158。各個實體暫存器檔案單元158代表一或多個實體暫存器檔案,這一或多個實體暫存器檔案中之不同者儲存一或多種不同的資料類型,像是純量整數、純量浮點數、緊縮整數、緊縮浮點數、向量整數、向量浮點數、、狀態(例如,為要被執行的下一個指令之位址的一個指令指標)等等。在一個實施例中,實體暫存器檔案單元158包含一個向量暫存器單元、一個寫入遮罩暫存器單元、和一個純量暫存器單元。這些暫存器單元可提供架構性向量暫存器、向量遮罩暫存器、和一般用途暫存器。這(些)實體暫存器檔案單元158與退役單元154部份重疊,以例示出可實施暫存器重新命名且亂序之執行的各種方式(例如,使用重新排序緩衝器和退役暫存器檔案;使用未來檔案、歷史緩衝器、和退役 暫存器檔案;使用暫存器對映和暫存器池;等等)。退役單元154和這(些)實體暫存器檔案單元158耦接至執行叢集160。這(些)執行叢集160包括一組一或多個執行單元162和一組一或多個記憶體取用單元164。這些執行單元162可在各種類型的資料(例如,純量浮點數、緊縮整數、緊縮浮點數、向量整數、向量浮點數)上進行各種操作(例如,移位、加法、減法、乘法)。雖然一些實施例可係包括有專用於特定功能或功能組的多個執行單元,其他實施例可係包括僅一個執行單元或全部都進行所有功能的複數個執行單元。係將這(些)排程器單元156、這(些)實體暫存器檔案單元158、和這(些)執行叢集160示為可能為複數個,因為某些實施例創造用於某類型的資料/操作的分別的管線(例如,各具有他們自己的排程器單元、實體暫存器檔案單元、和/或執行叢集的純量整數管線、純量浮點數/緊縮整數/緊縮浮點數/向量整數/向量浮點數管線、和/或記憶體取用管線--並且在分別的記憶體取用管線的事例中,係實施某些實施例,在這些實施例中只有這個管線的執行叢集具有這(些)記憶體取用單元164)。亦應瞭解,當有分別的數個管線被使用時,這些管線中之一或多者可係亂序發佈/執行,並且其他的為有序。
這組記憶體取用單元164耦接至記憶體單元170,記憶體單元170包括耦接至一個資料快取單元174的一個資料TLB單元172,資料快取單元174耦接至一個第二階(L2)快取單元176。在一個示範實施例中,這些記憶 體取用單元164可包括一個載入單元、一個儲存位址單元、和一個儲存資料單元,它們各耦接至記憶體單元170中的資料TLB單元172。指令快取單元134進一步耦接至記憶體單元170中的一個第二階(L2)快取單元176。此L2快取單元176耦接至一或多個其他快取階,並最終耦接至一個主記憶體。
舉例來說,此示範暫存器重新命名且亂序的發佈/執行核心架構可如下實施管線100:(1)指令提取138進行提取和長度解碼階段102和104;(2)解碼單元140進行解碼階段106;(3)重新命名/配置器單元152進行配置階段108和重新命名階段110;(4)這(些)排程器單元156進行排程階段112;(5)這(些)實體暫存器檔案單元158和記憶體單元170進行暫存器讀取/記憶體讀取階段114;執行叢集160進行執行階段116;(6)記憶體單元170和這(些)實體暫存器檔案單元158進行寫回/記憶體寫入階段118;(7)例外處置階段122可係涉及許多單元;以及(8)退役單元154和這(些)實體暫存器檔案單元158進行承諾階段124。
核心190可支援一或多個指令集(例如,x86指令集(具有已藉由較新版本加入的一些延伸);加利福尼亞州之森尼維耳市之MIPS技術(MIPS Technologies)的MIPS指令集;加利福尼亞州之森尼維耳市的安謀公司(ARM Holdings)的ARM指令集(具有非必要的額外延伸,例如NEON)),包括於本文中所述的這(些)指令。 在一個實施例中,核心190包括用來支援一個緊縮資料指令集延伸(例如,AVX1、AVX2、和/或同屬向量親和指令格式的一些形式(U=0和/或U=1),述於下文中)的邏輯,因而讓由許多多媒體應用所使用的操作能夠使用緊縮資料來執行。
應瞭解,此核心可支援多執行緒處理(執行二或更多個平行組的操作或執行緒),且可藉由各種方式這麼做,包括時間截分多執行緒處理、同時多執行緒處理(當中單一個實體核心提供針對實體核心同時正在作多執行緒處理的各個這些執行緒的一個邏輯核心)、或前述幾項的組合(例如,時間截分提取和解碼及在那之後的同時多執行緒處理,像是在英特爾公司的超執行緒(Hyperthreading)技術中的)。
雖然係以亂序執行的語境來說明暫存器重新命名,應瞭解,暫存器重新命名係可用在有序架構中。雖然所例示的處理器之實施例亦包括分別的指令和資料快取單元134/174和一個共享L2快取單元176,替代實施例可係具有兼用於指令和資料的單一個內部快取,像是,例如,一個第一階(Level 1,L1)內部快取,或內部快取的複數個階。在一些實施例中,此系統可包括內部快取與在核心和/或處理器外部之外部快取的一個組合。或者是,所有的快取皆可係在核心和/或處理器外部。
圖2是依據本發明之數個實施例的一個處理器200之方塊圖,其可具有多於一個的核心,可具有一個 整合式記憶體控制器,並且可具有整合式圖形。圖2中的實線框係例示出具有單一個核心202A、一個系統代理器210、一組一或多個匯流排控制器單元216的一個處理器200,而虛線框的非必要加增係例示出具有複數個核心202A~N、在系統代理器單元210中之一組一或多個整合式記憶體控制器單元214、和特殊用途邏輯208的一個替代處理器200。
因此,處理器200的不同實作可包括:(1)一個CPU,當中特殊用途邏輯208是整合式圖形和/或科學(通量)邏輯(其可包括一或多個核心),並且核心202A~N是一或多個一般用途核心(例如,一般用途有序核心、一般用途亂序核心、此二者之組合);(2)一個共處理器,當中202A~N是主要意欲用於圖形和/或科學(通量)的大量的特殊用途核心;以及(3)一個共處理器,當中核心202A~N是大量的一般用途有序核心。因此,處理器200可係一個一般用途處理器、共處理器或特殊用途處理器,像是,例如,一個網路或通訊處理器、壓縮引擎、圖形處理器、一般用途圖形處理單元(GPGPU)、高通量許多整合式核心(many integrated core,MIC)共處理器(包括30個或更多個核心)、嵌入式處理器、或其他諸如此類者。此處理器可係實施在一或多個晶片上。處理器200可為一或多個基體的一部分或可係使用多種處理技術(像是,例如,BiCMOS、CMOS、或NMOS)中之任何一者而實施在一或多個基體上。
此記憶體階層包括在這些核心內之一或多個階的快取、一組一或多個共享快取單元206、和耦接至那組整合式記憶體控制器單元214的外部記憶體(未示於圖中)。這組共享快取單元206可包括一或多個中階快取,像是第二階(L2)、第三階(level 3,L3)、第四階(level 4,L4)、或其他階的快取、最末階快取(last level cache,LLC)、和/或前述幾者之組合。雖然在一個實施例中,係有一個以環圈為基礎的互連單元212使整合式圖形邏輯208、這組共享快取單元206、和系統代理器單元210/整合式記憶體控制器單元214互連,替代實施例可係使用任何數量的習知技術來使此等單元互連。在一個實施例中,在一或多個快取單元206與核心202~A~N之間的同調性會被維持。
在一些實施例中,核心202A~N中的一或多者能夠作多執行緒處理。系統代理器210包括協調和操作核心202A~N的那些部件。系統代理器單元210可包括,例如,一個電力控制單元(power control unit,PCU)和一個顯示器單元。此PCU可係為或包括有調節核心202A~N和整合式圖形邏輯208之電力狀態所需的邏輯和部件。顯示器單元係用於驅動一或多個外部連接顯示器。
核心202A~N在架構指令集上可係同質或異質的;也就是說,核心202A~N中之二或更多者可係能夠執行相同指令集,而其他者可係能夠執行此指令集的僅一個子集或是一個不同的指令集。
圖3~6是示範電腦架構的方塊圖。於本技藝中所習知的對於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、切換器、嵌入式處理器、數位訊號處理器(digital signal processor,DSP)、圖形裝置、視訊遊戲裝置、轉頻器、微控制器、行動電話、可攜式媒體播放器、手持式裝置、和各種其他電子裝置的其他系統設計和組態也適宜。一般而言,能夠如於本文中所揭露地整合處理器和/或其他執行邏輯的許多各式各樣的系統或電子裝置一般來講是適宜的。
現在請參看圖3,所示出的是本發明之一實施例的一個系統300之方塊圖。系統300可包括耦接至一個控制器集線器320的一或多個處理器310、315。在一個實施例中,控制器集線器320包括一個圖形記憶體控制器集線器(graphics memory controller hub,GMCH)390和一個輸入/輸出集線器(Input/Output Hub,IOH)350(其可係位在分別的晶片上);GMCH 390包括記憶體和圖形控制器,記憶體340和一個共處理器345耦接至此記憶體和圖形控制器;IOH 350係將輸入/輸出(input/output,I/O)設備360耦接至GMCH 390。或者是,記憶體和圖形控制器中之一或二者係整合在此處理器內(如於本文中所述),記憶體340和共處理器345直接耦接至處理器310,並且控制器集線器320與IOH 350係在單一個晶片中。
額外的處理器315的非必要性質在圖3中係 以破碎線指出。各個處理器310、315可包括於本文中所述的一或多個處理核心,並且可係處理器200的相同版本。
記憶體340可為,例如,動態隨機存取記憶體(dynamic random access memory,DRAM)、相變記憶體(phase change memory,PCM)、或這兩者的組合。對於至少一個實施例而言,控制器集線器320經由一個多點匯流排(像是前側匯流排(frontside bus,FSB))、點對點介面(像是快速通道互連(QuickPath Interconnect,QPI))、或是類似連接395而與處理器310、315通訊。
在一個實施例中,共處理器345是一個特殊用途處理器,像是,例如,一個高通量MIC處理器、一個網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其他諸如此類者。在一個實施例中,控制器集線器320可包括一個整合式圖形加速器。
在實體資源310、315之間,在功過之範圍或度量上係可有多種差異,包括架構性、微架構性、熱學、電力消耗特性、及其他諸如此類者。
在一個實施例中,處理器310執行控制一般類型之資料處理操作的指令。嵌入在這些指令內的可係共處理器指令。處理器310將這些共處理器指令辨識為是屬於應由所附接之共處理器345所執行的一種類型。因此,處理器310在一個共處理器匯流排或其他互連上將這些共處理器指令(或代表共處理器指令的控制信號)發佈至共處理器345。一或數個共處理器345接受並執行所接收到的 共處理器指令。
現在請參看圖4,所示出的是依據本發明之一實施例的一第一更具體示範系統400之方塊圖。如於圖4中所示,多處理器系統400是一個點對點互連系統,並包括經由一個點對點互連450而耦接的一第一處理器470和一第二處理器480。處理器470和480各可為處理器200的某個版本。在本發明的一個實施例中,處理器470和480分別是處理器310和315,而共處理器438是共處理器345。在另一個實施例中,處理器470和480分別是處理器310共處理器345。
係將處理器470和480示為分別包括有整合式記憶體控制器(integrated memory controller,IMC)單元472和482。處理器470亦包括有點對點(point-to-point,P-P)介面476和478作為其匯流排控制器單元;類似地,第二處理器480包括有P-P介面486和488。處理器470、480可使用P-P介面電路478、488而經由點對點(P-P)介面450交換資訊。如於圖4中所示,IMC 472和482將這些處理器耦接至各別的記憶體,也就是記憶體432和記憶體434,其可為本地附接至各別處理器的主記憶體的一部份。
處理器470、480可使用點對點介面電路476、494、486、498而經由個別P-P介面452、454來藉由晶片組490交換資訊。晶片組490可非必要性地經由一個高效能介面439而與共處理器438交換資訊。在一個實施例 中,共處理器438是一個特殊用途處理器,像是,例如,一個高通量MIC處理器、一個網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其他諸如此類者。
係可有一個共享快取(未示於圖中)被包括在這兩個處理器之任何一者中或是在這兩個處理器之外,但仍經由P-P互連而與這些處理器連接,以使得當有一個處理器被置於低電力模式中時,其中一個或二個處理器的本地快取資訊可被儲存在此共享快取中。
晶片組490可係經由一個介面496而耦接至一第一匯流排416。在一個實施例中,第一匯流排416可係一個週邊部件互連(Peripheral Component Interconnect,PCI)匯流排,或像是PCI快捷(PCI Express)匯流排或另一種第三代I/O互連匯流排的一個匯流排,但本發明之範疇並不如此受限。
如於圖4中所示,各種I/O設備414可係和一個匯流排橋418一起耦接至第一匯流排416,匯流排橋418將第一匯流排416耦接至一第二匯流排420。在一個實施例中,係有一或多個額外處理器415耦接至第一匯流排416,例如共處理器、高通量MIC處理器、GPGPU、加速器(像是,例如,圖形加速器或額外的數位信號處理(digital signal processing,DSP)單元)、可現場規劃閘陣列、或任何其他處理器。在一個實施例中,第二匯流排420可係一個低腳位數(low pin count(LPC)匯流排。係可將 各種設備耦接至第二匯流排420,包括,例如,鍵盤和/或滑鼠422、通訊設備427及可能包括有指令/碼和資料430的儲存體單元428(像是磁碟機或其他大容量儲存設備)。此外,係可將一個音訊I/O 424耦接至第二匯流排420。請注意,其他架構也是有可能的。例如,取代於圖4的點對點架構,系統係可實施多點匯流排或其他此種架構。
現在請參看圖5,所示出的是依據本發明之一實施例的一第二更具體示範系統500之方塊圖。圖4和5中的相似元件帶有相似索引號碼,並且圖4中的某些面向已從圖5中省略,以避免混淆圖5的其他面向。
圖5例示出,處理器470、480可分別包括有整合式記憶體和I/O控制邏輯(control logic,CL)472和482。因此,CL 472、482包括有整台式記憶體控制器單元,且包括有I/O控制邏輯。圖5例示出,不只記憶體432、434耦接至CL 472、482,還有I/O設備514也耦接至控制邏輯472、482。舊有I/O設備515係耦接至晶片組490。
現在請參看圖6,所示出的是依據本發明之一實施例的一個SoC 600之方塊圖。圖2中之類似元件帶有相似索引號碼。並且,虛線框是在更進階的SoC上的非必要特徵。在圖6中,互連單元602耦接至:一個應用處理器610,其包括有一組一或多個核心202A~N和一或數個共享快取單元206;一個系統代理器單元210;一或數個匯流排控制器單元216;一或數個經整合記憶體控制器單元214;一組或一或多個共處理器620,其可包括整合式圖形 邏輯、一個影像處理器、一個音訊處理器、和一個視訊處理器;一個靜態隨機存取記憶體(static random access memory,SRAM)單元630;一個直接記憶體存取(direct memory access,DMA)單元632;及用於耦接至一或多個外部顯示器的一個顯示器單元640。在一個實施例中,這(些)共處理器620包括一個特殊用途處理器,像是,例如,一個網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、或其他諸如此類者。
於本文中所揭露的數個實施例係可以硬體、軟體、韌體或此等實作途徑之組合來實施。係可將本發明的數個實施例實施為執行於包括有至少一個處理器、一個儲存系統(包括依電性和非依電性記憶體和/或儲存元件)、至少一個輸入設備和至少一個輸出設備的可程式規劃系統上的電腦程式或程式碼。
可將程式碼,例如例示於圖4中的碼430,應用到輸入指令上,以進行於本文中所述之功能並產生輸出資訊。此輸出資訊可藉習知方式被應用至一或多個輸出設備。為作這樣的應用,一個處理系統包括具有一個處理器(像是,例如;一個數位訊號處理器(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))的非過渡性有形機器可讀媒體。此等實施例亦可被稱為是程式產品。
在一些事例中,係可使用指令轉換器來將指令從來源指令集轉換成目標指令集。例如,此指令轉換器可翻譯(例如,利用靜態二元翻譯、包括動態編譯的動態二元翻譯)、變體、或以其他方式將一個指令轉換成要由核心處理的一或多個其他指令。可係以軟體、硬體、韌體或前述各項之組合來實施此指令轉換器。此指令轉換器可係在處理器上、在處理器外、或是部份在處理器上部份在處理器外。
圖7是依據本發明之實施例的一個方塊圖,其對比出對於一個軟體指令轉換器的使用,用以將來源指令集中之二元指令轉換成目標指令集中之二元指令。在所例示的實施例中,此指令轉換器是一個軟體指令轉換器,雖然在另一種事例中,此指令轉換器可係以軟體、韌體、硬體或前述各項之各種組合來實施。圖7示出,係可使用一個x86編譯器704來編譯為高階語言702的一個程式,以產生可由具有至少一個x86指令集核心的處理器716自然執行的x86二元碼706。具有至少一個x86指令集核心的處理器716代表可藉由相容地執行或以其他方式處理(1)英 特爾(Intel)x86指令集核心之指令集的一個實質部份,或(2)旨在運行於具有至少一個x86指令集核心的一個英特爾處理器上的應用或其他軟體之目的碼版本,而進行與具有至少一個x86指令集核心的一個英特爾處理器實質上相同之功能的任何一個處理器,以達到與具有至少一個x86指令集核心的一個英特爾處理器實質上相同的結果。x86編譯器704代表可操作來產生可在有或沒有額外連結處理的情況下在具有至少一個x86指令集核心的處理器716上執行的x86二元碼706(例如,目的碼)的一個編譯器。類似地,圖7示出,為高階語言702的這個程式可利用一個替代指令集編譯器708而被編譯,以產生可由不具有至少一個x86指令集核心的處理器714(例如,具有執行加利福尼亞州之森尼維耳市的MIPS科技公司之MIPS指令集的和/或執行加利福尼亞州之森尼維耳市的安謀公司之ARM指令集的數個核心的一個處理器)自然執行的替代指令集二元碼710。指令轉換器712係用來將x86二元碼706轉換成可由不具有一個x86指令集核心的處理器714自然執行的碼。經轉換的這個碼不太可能與替代指令集二元碼710一樣,因為具有此種能力的指令轉換器很難做出;然而,經轉換的這個碼將會達成一般操作,並係由來自替代指令集的指令組成。因此,指令轉換器712代表透過仿真、模擬或任何其他處理而使得不具有x86指令集處理器或核心的處理器或其他電子裝置能夠執行x86二元碼706的軟體、韌體、硬體或前述各項之組合。
用於向量運算與累加之本發明的實施例
於下文中所述之本發明的數個實施例包括一個新的多資料(multiple data,SIMD)/向量指令,其交叉比對兩個項目向量以作匹配,並回傳匹配計數的一個向量。這些實施例可被用來消除許多負載、分支、和比較操作,它們在其他情況下對於目前的指令集來說會是有需要的。
圖8依據本發明的一個實施例,例示出選擇邏輯805,其從頭到尾地讀取儲存在一第一立即值xmm2/m 801中之各個值,並判定這些值各出現在一第二立即值xmm3 802中的次數。這些結果接著被儲存在一第三立即值xmm1 820中。在一個實施例中,選擇邏輯805包括用於進行比較操作(即,將來自第一和第二立即值的值作比較)的一個比較模組803,及用於計算相同的值出現在第二立即值802中之次數的一組一或多個計數器804。隨著第一立即值xmm2/m 801中之各個值與第二立即值xmm3 802中之值所作的比較,來自這些計數器的輸出被傳送到第三立即值xmm1 820中的對應元素位置(即,對應於第一立即值xmm2/m 801的元素位置)。選擇邏輯805可亦包括數個定序器809,用以在第一和第二立即值中的各個這些值之間作定序。一組選擇多工器806~807和810係由選擇邏輯805控制,以分別從第一和第二立即值801~802讀取出值,並將結果轉移至第三立即值820。
在一個替代實施例中,選擇邏輯805從這兩 個立即值801~802讀取出值,並且並行地進行比較操作。因此,在這個實施例中,可能並不需要這組定序器809來在儲存於第一和第二立即值中的這些值之間作定序。
依據本發明的一個實施例的一種方法係例示在圖9中。此方法可實施於示於圖8的架構上,但並不必然要受限於任何特定硬體架構。
於902,N和M的值被設為1。在一個實施例中,N和M分別代表在第一和第二立即值中之元素的數量。於903,來自第一立即值的元素N被選擇,並且於904,元素N被與第二立即值的元素M作比較。若於905判定出這些值有匹配,則計數於906被增量。若於907判定出已達到第二立即值的最大值(即,第二立即值中的最後一個元素),則M之值於909被重設為1,並且N之值於910被增量(即,移到第一立即值中的下一個元素)。若已達到M之最大值,則M於908被增量,並且第二立即值的下一個元素於904被作比較。當於911判定出第一立即值的最終元素已與第二立即值的所有元素作過比較,則此處理程序結束。
在當中所有的比較操作都是並行進行的一個實施例中,圖9中的這個方法可能並不能以所例示的嚴密串連方式來實施。而是,在這個實施例中,來自第一立即值的各個值可係並行地與第二立即值中之各個值作比較,並且結果係在單循環中轉移到第三立即值。易言之,示於圖9中的這個實施例係意欲作為例示性的,而對本發 明所潛藏的原理作限制。
簡言之,於本文中所述的本發明的這些實施例係將第一立即值之元素與第二立即值之元素作比較,並將結果提供在第三立即值中。如曾經提過的,在一個實施例中,係可使用這些技術來消除在其他情況下對於目前的指令集來說是有需要的許多負載、分支、和比較操作,因而改善效能。
本發明的數個實施例可包括已述於上文中的許多步驟。這些步驟可被體現在機器可執行指令中,此等指令可被用來致使一個一般用途或特殊用途處理器進行這些步驟。或者是,這些步驟可係由含有用於進行此等步驟的固線式邏輯的特定硬體部件進行,或是藉由可程式規劃電腦部件和叢集硬體部件的任何組合來進行。
當述於本文中時,指令可係指硬體的特定組態,例如組配來進行某些操作或是具有預定功能性或儲存在體現於非過渡性電腦可讀媒體中的記憶體中之軟體指令的特定應用積體電路(ASIC)。因此,係可使用在一或多個電子設備(例如,一個末端站台、一個網路元件等等)上所儲存和執行的碼和資料來實施示於這些圖式中的計數。此等電子設備使用電腦機器可讀媒體(像是非過渡性電腦機器可讀儲存媒體(例如,磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體設備;相變記憶體)和過渡性電腦機器可讀通訊媒體(例如,電氣式、光學式、聲學式或其他形式的傳播信號--像是載波、紅外線信號、 數位信號等等))來儲存和(內部地和/或經由網路而與其他電子設備)聯絡碼和資料。此外,此等電子設備典型上會包括有一組一或多個處理器,其耦接至一或多個其他部件,像是一或多個儲存設備(非過渡性機器可讀儲存媒體)、使用者輸入/輸出設備(例如,鍵盤、觸控式螢幕、和/或顯示器)、以及網路連接。這組處理器與其他部件的耦接典型上係透過一或多個匯流排和橋接器(亦稱為匯流排控制器)。這些儲存設備和載負網路交通的信號分別代表一或多個機器可讀儲存媒體和機器可讀通訊媒體。因此,一個給定電子設備的儲存裝置典型上係儲存有碼和/或資料,以供在那個電子設備的這組一或多個處理器上執行。當然,係可使用軟體、韌體、和/或硬體之不同組合來實施本發明的一個實施例的一或多個部份。貫穿本詳細說明,為作解釋目的,係提出許多細節,以提供對本發明的通盤瞭解。然而,熟於此技藝者會可明顯看出,本發明係可在沒有這些特定細節中之若干者的情況下實行。在某些情況中,並未以詳盡的細節來描述習知的結構和功能,以避免混淆本發明之主旨。因此,本發明之範疇和精神應係由後面的申請專利範圍來裁定。
示範指令格式
係可藉由不同的格式來體現於本文中所述之指令的數個實施例。此外,下面將詳述示範系統、架構和管線。這(些)指令的數個實施例可係執行於此等系統、架構、和管線上,但並不受限於所詳述的那些。
VEX編碼讓指令能夠擁有多於兩個的運算元,並讓SIMD向量暫存器能夠比128位元長。使用VEX前綴可提供三運算元(或更多個)語法。例如,先前的二運算元指令進行像是A=A+B這樣的操作,這覆寫一個來源運算元。使用VEX前綴使得運算元能夠進行非破壞性操作,例如A=B+C。
圖10A例示出一個示範AVX指令格式,其包括一個VEX前綴1002、真實作業碼欄位1030、Mod R/M位元組1040、SIB位元組1050、位移欄位1062、和IMM8 1072。圖10B例示出從圖10A中的哪些欄位組成一個完全作業碼欄位1074和一個基礎操作欄位1042。圖10C例示出從圖10A中的哪些欄位組成一個暫存器索引欄位1044。
VEX前綴(Prefix)(位元組0~2)1002係以一種三位元組形式編碼。第一個位元組是格式欄位1040(VEX位元組(Byte)0,位元[7:0])),其含有一個明確C4位元組值(用來區別C4指令格式的獨特值)。第二~第三個位元組(VEX位元組1~2)包括提供特定能力的多個位元欄位。具體而言,REX欄位1005(VEX位元組1,位元[7-5])係由一個VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)、和VEX.B位元欄位(VEX位元組1,位元[5]-B)所組成。這些指令的其他欄位以如於此技藝中已知的方式將這些暫存器索引的較低的三個位元編碼(rrr、xxx和bbb),以使得可藉由加上VEX.R、VEX.X、和VEX.B而 形成Rrrr、Xxxx、和Bbbb。作業碼對映欄位1015(VEX位元組1,位元[4:0]-mmmmm)包括用來編碼隱含領導作業碼位元組的內容。W欄位1064(VEX位元組2,位元[7]-W)-係由記號VEX.W來表示,且視指令而定地提供不同功能。VEX.vvvv 1020的任務(VEX位元組2,位元[6:3]-vvvv)可包括下列幾者:(1)VEX.vvvv編碼以逆轉(1之補數)形式指明的第一來源暫存器運算元,並且其對具有2或更多個來源運算元的指令有效;(2)VEX.vvvv針對某些向量移位而編碼以1之補數形式指明的目標暫存器運算元;或是(3)VEX.vvvv並不編碼任何運算元,此欄位被保留並應含有1111b。若VEX.L 1068大小(Size)欄位(VEX位元組2,位元[2]-L)=0,則其係指出128位元向量;若VEX.L=1,則其係指出256位元向量。前綴編碼欄位1025(VEX位元組2,位元[1:0]-pp)提供用於基礎操作欄位的額外位元。
真實作業碼欄位1030(位元組3)亦被稱為作業碼位元組。此作業碼的一部分係在這個欄位中被指明。
MOD R/M位元組1040(位元組4)包括MOD欄位1042(位元[7-6])、Reg欄位1044(位元[5-3])、和R/M欄位1046(位元[2-0])。Reg欄位1044的任務可包括下列幾者:編碼目標暫存器運算元抑或一個來源暫存器運算元(Rrrr的rrr),或是被看作一個作業碼延伸且不被用來編碼任何指令運算元。R/M欄位1046的任務可包括下列幾者:編碼指涉一個記憶體位址的指令運算元,或是編 碼目標暫存器運算元抑或一個來源暫存器運算元。
縮放、索引、基礎(Scale,Index,Base,SIB)-縮放欄位(位元組5)1050的內容包括SS 1052(位元[7-6]),這是用於記憶體位址產生。SIB.xxx 1054(位元[5-3])和SIB.bbb 1056(位元[2-0])的內容先前已在有關暫存器索引Xxxx和Bbbb的部份提過。
位移欄位1062和立即欄位(IMM8)1072含有位址資料。
同屬向量親和指令格式
一個向量親和指令格式是適用於向量指令的一種指令格式(例如,有特定於向量操作的某些欄位)。雖然係描述當中向量和純量操作都透過此向量親和格式而受到支援的數個實施例,有一些替代實施例只使用向量操作此向量親和指令格式。
圖11A~11B是依據本發明的數個實施例而例示出一個同屬向量親和指令格式及其指令模版的方塊圖。圖11A是依據本發明的數個實施例而例示出一個同屬向量親和指令格式及其A類別指令模版的方塊圖;而圖11B是依據本發明的數個實施例而例示出此同屬向量親和指令格式及其B類別指令模版的方塊圖。具體而言,係針對一個同屬向量親和指令格式1100而定義出A類別和B類別指令模版,此二者皆包括無記憶體取用1105指令模版和有記憶體取用1120指令模版。在向量親和指令格式的語境中,同屬一詞係指不綁縛於任何特定指令集的指令格式。
雖然將描述本發明的數個實施例,其中向量親和指令格式支援下列幾者:具有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位元組向量運算元)。
圖11A中的A類別指令模版包括:(1)在無記憶體取用1105指令模版內,有示出一個無記憶體取用的完整捨入控制類型操作1110指令模版和一個無記憶體取用的資料轉變類型操作1115指令模版;以及(2)在有記憶體取用1120指令模版內,有示出一個有記憶體取用的時間性1125指令模版和一個有記憶體取用的非時間性1130指令模版。圖11B中的B類別指令模版包括:(1)在無記 憶體取用1105指令模版內,有示出一個無記憶體取用的寫入遮罩控制部份捨入控制類型操作1112指令模版和一個無記憶體取用的寫入遮罩控制vsize類型操作1117指令模版;以及(2)在有記憶體取用1120指令模版內,有示出一個有記憶體取用寫入遮罩控制1127指令模版。
同屬向量親和指令格式1100包括於下文中以例示於圖11A~11B中之順序列出的下列欄位。
格式欄位1140--在這個欄位中的一個特定值(一個指令格式識別符值)獨特地識別出此向量親和指令格式,並因而識別出指令串中之屬於此向量親和指令格式的指令之存在。因此,這個欄位是非必要的,其原因在於,對於只具有同屬向量親和指令格式的指令集而言,這並不需要。
基礎操作欄位1142--其內容區別出不同的基礎操作。
暫存器索引欄位1144--其內容直接或透過位址產生而指明來源與目標運算元之所在地,若它們是在暫存器或記憶體中。這些包括數量足以從一個PxQ(例如,32x512、16x128、32x1024、64x1024)的暫存器檔案中選擇N個暫存器的位元。雖然在一個實施例中,N可係上至三個來源和一個目標暫存器,一些替代實施例可係支援更多或更少的來源和目標暫存器(例如,可支援上至兩個來源且其中這些來源中之一者亦作為目標、可支援上至三個來源且其中這些來源中之一者亦作為目標、可支援 上至兩個來源和一個目標)。
修飾符欄位1146--其內容使有指明記憶體取用的屬於此同屬向量指令格式的指令之存在與並未指明者有所區別;亦即,在無記憶體取用1105指令模版與有記憶體取用1120指令模版之間有所區別。有記憶體取用操作讀取並/或寫入此記憶體階層(在一些事例中,係利用暫存器中之值而指明來源和/或目標位址),而無記憶體取用操作並不如此(例如,來源和目標是暫存器)。雖然在一個實施例中,這個欄位亦在三個不同的方式中作出選擇以進行記憶體位址計算,但一些替代實施例可係支援更多、更少或不同的用於進行記憶體位址計算的方式。
擴大操作欄位1150--其內容區別出除了基礎操作以外係要進行許多不同操作中之何者。這個欄位是特定於語境的。在本發明的一個實施例中,這個欄位被劃分成一個類別欄位1168、一個阿爾法欄位1152、和一個貝他欄位1154。擴大操作欄位1150讓共同操作群組能夠在單一個指令上進行,而非在2、3或4個指令上進行。
縮放欄位1160--其內容讓用於記憶體位址產生(例如,用於使用2縮放(scale)*索引(index)+基礎(base)的位址產生)的索引欄位之內容能夠縮放。
移位欄位1162A--其內容係用作記憶體位址產生的一部分(例如,用於使用2縮放*索引+基礎+移位(displacement)的位址產生)。
移位因數欄位1162B(請注意,移位欄位 1162A直接並列在移位因數欄位1162B上,這表示係使用這一者或另一者)--其內容係用作記憶體位址產生的一部分;其指明要被以記憶體取用之大小(N)縮放的一個移位因數--其中N是此記憶體取用中之位元組的數量(例如,用於使用2縮放*索引+基礎+經縮放移位(scaled displacement)的位址產生)。冗餘低次位元被忽略,並且因此,此移位因數欄位的內容被乘上記憶體運算元總大小(N),以產生要在計算有效位址時使用的最終移位。N之值係由處理器硬體在運行時間基於完整作業碼欄位1174(將於本文中說明)以及資料操縱欄位1154C決定。移位欄位1162A和移位因數欄位1162B是非必要的,其原因在於,他們只用於無記憶體取用1105指令模版,且/或不同的實施例可僅實施這兩者中之一者,或二者皆不實施。
資料元素寬度(W)欄位1164--其內容區別出係要使用多個資料元素寬度中之何者(在一些實施例中係針對所有的指令;在其他實施例中係僅針對這些指令中之一些)。這個欄位是非必要的,其原因在於,當只有支援一個資料元素寬度且/或係利用這些作業碼的一些面向而支援數個資料元素寬度時,就並不需要這個。
寫入遮罩欄位1170--其內容基於一種每資料元素位置基礎而控制在目標向量運算元中的那個資料元素位置是否反映出基礎操作和擴大操作之結果。A類別指令模版支援合併寫入遮蔽,而B類別指令模版對合併寫入遮蔽與歸零寫入遮蔽二者皆支援。在合併之時,向量遮 罩讓目標中的任何元素集合都能夠受到保護以免受在任何操作之執行期間內所作的更新(由基礎操作和擴大操作指明);在另一個實施例中,係保留目標之對應遮罩位元具有0值之處的各個元素之舊值。反之,當歸零時,向量遮罩讓目標中的任何元素集合能夠在任何操作的執行期間內被歸零(由基礎操作和擴大操作指明);在一個實施例中,當對應遮罩位元具有0值時,目標的一個元素被設為0。這個功能性的一個子集是控制要被進行的操作之向量長度(亦即,被修飾的元素之跨距,從第一個到最後一個)的能力;然而,被修飾的元素並不一定要是連續的。因此,寫入遮罩欄位1170容許部份向量操作,包括載入、儲存、算術性、邏輯性等等。雖然係描述本發明的數個實施例,其中寫入遮罩欄位1170之內容選擇多個寫入遮罩暫存器中之含有要被使用的寫入遮罩的那一者(並且因此寫入遮罩欄位1170之內容間接地識別出要進行的遮蔽行為),數個替代實施例取代性地或額外地讓遮罩寫入欄位1170之內容直接指明要進行的遮蔽行為。
立即欄位1172--其內容可容許對立即的指明。這個欄位是選擇性的,其原因在於,它並不出現在並不支援立即的同屬向量親和格式的實作中,並且它並不出現在並不使用立即的指令中。
類別欄位1168--其內容在不同類別的指令之間作出區別。請參看圖11A~B,這個欄位的內容在A類別和B類別指令之間作出選擇。在圖11A~B中,係使用 圓角方塊來指出一個特定值出現在一個欄位中(例如,對於類別欄位1168的分別於圖11A~B中之A類別1168A和B類別1168B)
A類別的指令模版
在A類別之無記憶體取用1105指令模版的事例中,阿爾法欄位1152被詮釋為一個RS欄位1152A,其內容區別出要進行不同擴大操作類型中之何者(例如,分別針對無記憶體取用的捨入類型操作1110和無記憶體取用的資料轉變類型操作1115指令模版而指明捨入1152A.1和資料轉變1152A.2),而貝他欄位1154區別出要進行所指明之類型的操作中之何者。在無記憶體取用1105指令模版中,縮放欄位1160、移位欄位1162A、和移位縮放欄位1162B並不存在。
無記憶體取用指令模版--完整捨入控制類型操作
在無記憶體取用的完整捨入控制類型操作1110指令模版中,貝他欄位1154被詮釋為一個捨入控制欄位1154A,其內容提供靜態捨入。雖然在本發明之所描述的數個實施例中,捨入控制欄位1154A包括一個壓抑所有浮點例外(suppress all floating point exceptions,SAE)欄位1156和一個捨入操作控制欄位1158,一些替代實施例可支援可將這兩個概念編碼到同一個欄位中,或是只具有這些概念/欄位中之這一者或另一者(例如,可僅具有捨入操作控制欄位1158)。
SAE欄位1156--其內容區別出是否要停 用例外事件報告;當SAE欄位1156之內容指出有致能壓抑時,一個給定指令並不報告任何類型的浮點例外旗標,並且並不引發任何浮點例外處置器。
捨入操作控制欄位1158--其內容區別出要進行一群捨入操作中之哪一者(例如,向上取整、向下取整、向零取整和向最近值取整)。因此,捨入操作控制欄位1158容許在一種每指令基礎上的對捨入模式之改變。在本發明之當中一個處理器係包括有一個控制暫存器以指明捨入模式的一個實施例中,捨入操作控制欄位1150之內容壓制那個暫存器值。
無記憶體取用指令模版--資料轉變類型操作
在無記憶體取用的資料轉變類型操作1115指令模版中,貝他欄位1154被詮釋為一個資料轉變欄位1154B,其內容區別出要進行多個資料轉變中的哪一個(例如,無資料轉變、拌和、廣播)。
在A類別之有記憶體取用1120指令模組的事例中,阿爾法欄位1152被詮釋為一個逐出提示欄位1152B,其內容區別出要使用這些逐出提示中的哪一個(在圖11A中,係分別針對有記憶體取用的時間性1125指令模版和有記憶體取用的非時間性1130指令模版而指明時間性1152B.1和非時間性1152.B),而貝他欄位1154被詮釋為一個資料操縱欄位1154C,其內容區別出要進行多個資料操縱操作(亦被稱為基元)中的哪一個(例如,無操縱;廣播;對來源作向上轉換;和對目標作向下轉換)。有記 憶體取用1120指令模版包括縮放欄位1160,且非必要性地包括移位欄位1162A或移位縮放欄位1162B。
向量記憶體指令在具有轉換支援的情況下進行自記憶體的向量載入和至記憶體的向量儲存。當在常態向量指令的情況下,向量記憶體指令以一種資料式的方式自/至記憶體轉移資料,其中被實際轉移的元素係由被選為寫入遮罩的向量遮罩之內容支配。
有記憶體取用指令模版--時間性
時間性資料是很可能會在足以得益於快取行為的短時間內被再使用的資料。然而,這是一個提示,數個不同的處理器可能係以不同的方式實施它,包括整個忽略此提示。
記憶體取用指令模版--非時間性
非時間性資料是很不可能會在足以得益於第1階快取中之快取行為的短時間內被再使用且應被給予在逐出方面的優先權的資料。然而,這是一個提示,數個不同的處理器可能係以不同的方式實施它,包括整個忽略此提示。
B類別的指令模版
在B類別之指令模版的事例中,阿爾法欄位1152被詮釋為一個寫入遮罩控制(Z)欄位1152C,其內容區別出由寫入遮罩欄位1170所控制的寫入遮蔽行為是否應為合併或歸零。
在B類別之無記憶體取用1105指令模版的事 例中,一部分的貝他欄位1154被詮釋為一個RL欄位1157A,其內容區別出係要進行不同擴大操作類型中的哪一個(例如,係分別針對無記憶體取用的寫入遮罩控制部份捨入控制類型操作1112指令模版和無記憶體取用的寫入遮罩控制向量長度(vector length,VSIZE)類型操作1117指令模版而指明捨入1157A.1和VSIZE 1157A.2),而貝他欄位1154的剩餘部份區別出係要進行所指明之類型的這些操作中之何者。在無記憶體取用1105指令模版中,縮放欄位1160、移位欄位1162A、和移位縮放欄位1162B並不存在。
在無記憶體取用的寫入遮罩控制部份捨入控制類型操作1110指令模版中,貝他欄位1154的剩餘部份被詮釋為一個捨入操作欄位1159A,且例外事件報告被停用(一個給定指令並不報告任何類型的浮點例外旗標,且並不引發任何浮點例外處置器)。
捨入操作控制欄位1159A--就像捨入操作控制欄位1158,其內容區別出要進行一群捨入操作中之哪一者(例如,向上取整、向下取整、向零取整和向最近值取整)。因此,捨入操作控制欄位1159A容許在一種每指令基礎上的對捨入模式之改變。在本發明之當中一個處理器係包括有一個控制暫存器以指明捨入模式的一個實施例中,捨入操作控制欄位1150之內容壓制那個暫存器值。
在無記憶體取用的寫入遮罩控制VSIZE類型操作1117指令模版中,貝他欄位1154的剩餘部份被詮釋 成一個向量長度欄位1159B,其內容區別出係要在多個資料向量長度中的哪一者上進行操作(例如,128、256或512個位元組)。
在B類別之有記憶體取用1120指令模版的事例中,貝他欄位1154的一部分被詮釋為一個廣播欄位1157B,其內容區別出是否要進行廣播類型資料操縱操作,而貝他欄位1154的其他部份被詮釋為向量長度欄位1159B。有記憶體取用1120指令模版包括縮放欄位1160,並且非必要性地包括有移位欄位1162A或移位縮放欄位1162B。
考慮1110,係將一個完整作業碼欄位1174示為包括格式欄位1140、基礎操作欄位1142、和資料元素寬度(W)欄位1164。雖然係示出當中完整作業碼欄位1174包括有所有這些欄位的一個實施例,在並不支援所有這些欄位的數個實施例中,完整作業碼欄位1174所包括的這些欄位並不到全部。完整作業碼欄位1174提供作業碼(operation code,opcode)。
擴大操作欄位1150、資料元素寬度(W)欄位1164、和寫入遮罩欄位1170讓這些特徵能夠於此同屬向量親和指令格式中在一種每指令基礎上被指明。
寫入遮罩欄位和資料元素寬度欄位的組合創造出類型性的指令,因為它們讓遮罩能夠基於不同的資料元素寬度而被施加。
在A類別和B類別中所找到的各種指令模版 在不同的情況中大有益處。在本發明的一些實施例中,不同處理器或在一個處理器內的不同核心可係僅支援A類別、僅支援B類別、或這兩個類別都支援。比如說,意欲用於一般用途運算的一個高效能一般用途亂序核心可係僅支援B類別,主要意欲用於圖形和/或科學(通量)運算的一個核心可係僅支援A類別,並且意欲用於二者的一個核心可係兩個都支援(當然,具有來自兩個類別之模版和指令的某種混合(但並非來自兩個類別的所有模版和指令)的一個核心係落在本發明之界限內)。同時,單一個處理器可係包括有複數個核心,所有的這些核心都支援相同的類別,或是不同核心支援不同類別。比如說,在具有分開的數個圖形和一般用途核心的一個處理器中,這些圖形核心中之主要係意欲用於圖形和/或科學運算的一個核心可僅支援A類別,而這些一般用途核心中之一或多者可係僅支援B類別的具有亂序執行且係意欲用於一般用途運算之暫存器重新命名的高效能一般用途核心。並不具有一個分開的圖形核心的另一個處理器可係包括A類別和B類別都支援的一多個一般用途有序或亂序核心。當然,在本發明的數個不同實施例中,來自一個類別的特徵可亦被實施在另一個類別中。以高階語言所寫成的程式可被置入(例如,適時編譯或靜態編譯)到多種不同的可執行格式中,包括:(1)只具有由目標處理器所支援的這(些)類別之指令以作執行的一種格式;或(2)具有使用所有類別之指令的不同的組合所寫成的替代常式,且具有控制流程碼的一 種格式,此控制流程碼會基於正在執行此碼的處理器所支援之指令而選擇此等常式來作執行。
圖12A~D是依據本發明的數個實施例而例示出一種示範特定向量親和指令格式的方塊圖。圖12示出一種特定向量親和指令格式1200,其係特定的,因為它指明所在地、大小、詮釋方式、和欄位之順序,還有這些欄位中之某些者的值。特定向量親和指令格式1200可被用來延伸x86指令集,並且因此,這些欄位中有一些係與在現有的x86指令集及其延伸(例如,AVX)中所使用的那些類似或相同。這個格式仍然符合具有延伸的現有x86指令集之前綴編碼欄位、真實作業碼位元組欄位、MOD R/M欄位、SIB欄位、移位欄位、和立即欄位。係例示出從圖12的欄位所對映到的來自圖11之欄位。
應瞭解,雖然為作例示目的而係以同屬向量親和指令格式1100之語境,參考特定向量親和指令格式1200來描述本發明的數個實施例,但本發明除了所聲請之處以外,並不受限於特定向量親和指令格式1200。例如,同屬向量親和指令格式1100係有仔細考量這許多欄位的各式各樣的可能大小,而特定向量親和指令格式1200係被示為具有為特定大小的欄位。舉一個具體的例子來說,雖然係將資料元素寬度(W)欄位1164例示為在特定向量親和指令格式1200中的一個一位元欄位,但本發明並不如此受限(也就是說,同屬向量親和指令格式1100有考量其他大小的資料元素寬度(W)欄位1164)。
同屬向量親和指令格式1100包括於下文中以例示於圖12A中之順序列出的下列欄位。
EVEX前綴(EVEX Prefix)(位元組0~3)1202--被編碼成一種四位元組形式。
格式欄位(Format Field)1140(EVEX位元組0,位元[7:0]-第一個位元組(EVEX位元組0))是格式欄位1140,且其含有0x62(在本發明的一個實施例中用來區別出此向量親和指令格式的獨特值)。
第二個四位元組(EVEX位元組1~3)包括提供特定能力的多個位元欄位。
REX欄位1205(EVEX位元組1,位元[7-5])--由一個EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、和1157BEX位元組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’欄位1110--這是REX’欄位1110的第一部分,並且是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而形成。
作業碼對映欄位1215(EVEX位元組1,位元[3:0]-mmmm)--其內容編碼一個隱含領導作業碼位元組(0F、0F 38、或0F 3)。
資料元素寬度(W)欄位1164(EVEX位元組2,位元[7]-W)--係藉由標誌EVEX.W來表示。EVEX.W係用來界定資料型式(32位元資料元素、抑或是64位元資料元素)的粒度(大小)。
EVEX.vvvv 1220(EVEX位元組2,位元[6:3]-vvvv)--EVEX.vvvv的任務可包括下列各者:(1)EVEX.vvvv編碼以逆轉(1之補數)形式指明的第一來源暫存器運算元,並且對具有2或更多個來源運算元的指令有效;(2)EVEX.vvvv針對某些向量移位而編碼以1之補數形式指明的目標暫存器運算元;或是(3)EVEX.vvvv並不編碼任何運算元,此欄位被保留並應含有1111b。因 此,EVEX.vvvv欄位1220編碼以逆轉(1之補數)形式儲存的第一來元暫存器指明符的4個低次位元。視指令而定,係可使用一個額外的不同EVEX位元欄位來將指明符大小延伸到32個暫存器。
EVEX.U 1168類別欄位(EVEX位元組2,位元[2]-U)--若EVEX.U=0,則其指出A類別或EVEX.U0;若EVEX.U=1,則其指出B類別或EVEX.U1。
前綴編碼欄位1225(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前綴編碼,並且因此並不需要擴張。
阿爾法欄位1152(EVEX位元組3,位元 [7]-EH;亦被稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制(write mask control)、和EVEX.N;亦以α來例示)--如先前所述,這個欄位是特定於語境的。
貝他欄位1154(EVEX位元組3,位元[6:4]-SSS,亦稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ來例示)--如先前所述,這個欄位是特定於語境的。
REX’欄位1110--這是REX’欄位的剩餘部份,並且是EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),可用來編碼經延伸32暫存器組的較高的那16個抑或是較低的那16個。此位元係以位元逆轉格式儲存。係使用為1的值來編碼較低的16個暫存器。易言之,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位1170(EVEX位元組3,位元[2:0]-kkk)--如先前所述,其內容指明在寫入遮罩暫存器中的一個暫存器的索引。在本發明的一個實施例中,特定值EVEX.kkk=000具有一個特殊作用,隱含著沒有任何寫入遮罩針對此特定指令而被使用(這可係藉由多種方式來實施,包括使用被硬線式連接到所有者或旁繞遮蔽硬體的一個寫入遮罩)。
真實作業碼欄位(Real Opcode Field)1230(位元組4)亦被稱為作業碼位元組。作業碼的一部分在這個欄位中被指明。
MOD R/M欄位1240(位元組5)包括MOD欄位1242、Reg欄位1244、和R/M欄位1246。如先前所述,MOD欄位1242的內容在有記憶體取用和無記憶體取用操作之間作出區別。可將Reg欄位1244的任務總結為兩種情況:編碼目標暫存器運算元抑或是一個來源暫存器運算元,或者是被看作是一個作業碼延伸且不被用來編碼任何指令運算元。R/M欄位1246的任務可包括下列數者:編碼指參一個記憶體位址的指令運算元,或者是編碼目標暫存器運算元抑或是一個來源暫存器運算元。
縮放、索引、基礎(SIB)位元組(位元組6)--如先前所述,縮放欄位1150的內容係用於記憶體位址產生。SIB.xxx 1254和SIB.bbb 1256--這些欄位的內容先前已在有關暫存器索引Xxxx和Bbbb的部份提過。
移位欄位1162A(位元組7-10)--當MOD欄位1242含有10時,位元組7-10是移位欄位1162A,且其與舊有32位元移位(disp32)起一樣的作用,並且係以位元組粒度起作用。
移位因數欄位1162B(位元組7)--當MOD欄位1242含有01時,位元組7是移位因數欄位1162B。這個欄位的所在地與舊有x86指令集8位元移位(disp8)的箱同,其係以位元組粒度起作用。由於disp8被作正負號延伸(sign extended),所以它只能夠在-128和127位元組偏移之間定址;以64位元組快取線的方面來說,disp8使用只可被設成四種真實可用值-128、-64、0、和64的8個 位元;由於常常會需要較大的範圍,所以係使用disp32;然而,disp32需要4個位元組。與disp8和disp32相反,移位因數欄位1162B是對disp8的一種再詮釋;當使用移位因數欄位1162B時,實際移位係由移位因數欄位的內容乘上記憶體運算元取用之大小(N)來決定。這種類型的移位被稱為是disp8*N。這減少了平均指令長度(用於移位的單一個位元,但具有大很多的範圍)。這樣的經壓縮移位係以這樣的假設為基礎,即,有效移位是記憶體取用之粒度的倍數,並且因此,位址偏移之冗餘低次位元並不需要被編碼。易言之,移位因數欄位1162B代替了舊有x86指令集8位元移位。因此,移位因數欄位1162B被以與一個x86指令集8位元移位相同的方式編碼(所以在ModRM/SIB編碼規則中沒有任何改變),只有一個例外,就是disp8被超載到disp8*N。易言之,在編碼規則或編碼長度中沒有任何改變,但只有在由硬體對移位值的詮釋中有(其需要以記憶體運算元的大小對移位作縮放以獲得位元組式的位址偏移)。
立即欄位1172如先前所述地操作。
完整作業碼欄位
圖12B是一個方塊圖,其依據本發明的一個實施例而例示出特定向量親和指令格式1200之組成完整作業碼欄位1174的欄位。特別是,完整作業碼欄位1174包括格式欄位1140、基礎操作欄位1142、和資料元素寬度(W)欄位1164。基礎操作欄位1142包括前綴編碼欄位 1225、作業碼對映欄位1215、和真實作業碼欄位1230。
暫存器索引欄位
圖12C是一個方塊圖,其依據本發明的一個實施例而例示出特定向量親和指令格式1200之組成暫存器索引欄位1144的欄位。特別是,暫存器索引欄位1144包括REX欄位1205、REX’欄位1210、MODR/M.Reg欄位1244、MODR/M.R/M欄位1246、VVVV欄位1220、xxx欄位1254、bbb欄位1256。
擴大操作欄位
圖12D是一個方塊圖,其依據本發明的一個實施例而例示出特定向量親和指令格式1200之組成擴大操作欄位1150的欄位。當類別(U)欄位1168含有0時,其意味著EVEX.U0(A類別1168A);當其含有1時,其意味著EVEX.U1(B類別1168B)。當U=0且MOD欄位1242含有11(意味著一個無記憶體取用操作)時,阿爾法欄位1152(EVEX位元組3,位元[7]-EH)被詮釋成rs欄位。當rs欄位1152A含有一個1(捨入1152A.1)時,貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋成捨入控制欄位1154A。捨入控制欄位1154A包括一個一位元SAE欄位1156和一個兩位元捨入操作欄位1158。當rs欄位1152A含有一個0(資料轉變1152A.2)時,貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋成一個三位元資料轉變欄位1154B。當U=0且MOD欄位1242含有00、01、或10(意味著一個有記憶體取用操作)時,阿爾法欄 位1152(EVEX位元組3,位元[7]-EH)被詮釋成逐出提示(eviction hint,EH)欄位1152B,並且貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋成一個三位元資料操縱欄位1154C。
當U=1時,阿爾法欄位1152(EVEX位元組3,位元[7]-EH)被詮釋成寫入遮罩控制(Z)欄位1152C。當U=1且MOD欄位1242含有11(意味著一個無記憶體取用操作)時,貝他欄位1154的一部份(EVEX位元組3,位元[4]-S0)被詮釋成RL欄位1157A;當它含有一個1(捨入1157A.1)時,貝他欄位1154的剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被詮釋成捨入操作欄位1159A,而當RL欄位1157A含有一個0(VSIZE 1157.A2)時,貝他欄位1154的剩餘部份(EVEX位元組3,位元[6-5]-S2-1)被詮釋成向量長度欄位1159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位1242含有00、01、或10(意味著一個有記憶體取用操作)時,貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被詮釋成向量長度欄位1159B(EVEX位元組3,位元[6-5]-L1-0)和廣播欄位1157B(EVEX位元組3,位元[4]-B)。
圖13是依據本發明的一個實施例的一個暫存器架構1300之方塊圖。在所例示的這個實施例中,係有為512位元寬的32個向量暫存器1310;係以zmm0到zmm31來指涉這些暫存器。較低的16個zmm暫存器的較低次的256個位元係覆置在暫存器ymm0~16上。較低的16 個zmm暫存器的較低次的128個位元(ymm暫存器的較低次的128個位元)係覆置在暫存器xmm0~16上。特定向量親和指令格式1200如於下表中所例示地在這些被覆置的暫存器檔案上操作。
易言之,向量長度欄位1159B在一個最大長度和一或多個其他較短長度之間作選擇,其中各個這樣的較短長度是前一個長度的長之一半;並且不具有向量長度欄位1159B的指令模板係操作在最大向量長度上。此外,在一個實施例中,特定向量親和指令格式1200的B類別指令模板係操作在緊縮或純量單/雙倍精度浮點數資料和緊縮或純量整數資料上。純量操作係在一個zmm/ymm/xmm暫存器中之最低次資料元素位置上進行的操作;視實施例而定,較高次資料元素位置不是被保持成和他們在此指令之前的樣子相同,就是被歸零。
寫入遮罩暫存器1315--在所例示的實施 例中,係有8個寫入遮罩暫存器(k0到k7),其大小為64位元。在一個替代實施例中,這些寫入遮罩暫存器1315之大小為16位元。如先前所述,在本發明的一個實施例中,向量遮罩暫存器k0不被用作寫入遮罩;當通常會指出k0的編碼被用作一個寫入遮罩時,它會選擇0xFFFF的一個硬線式寫入遮罩,而有效地針對那個指令使寫入遮蔽行為失效。
一般用途暫存器1325--在所例示的實施例中,係有與現有的x86定指模式一起使用的十六個64位元一般用途暫存器,用以定址記憶體運算元。這些暫存器係由RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8到R15這些名稱來指涉。
純量浮點數堆疊暫存器檔案(x87堆疊)1345,在這上面混疊有MMX緊縮整數平坦暫存器檔案1350--在所例示的這個實施例中,此x87堆疊是一個用來利用x87指令集延伸而在32/64/80位元浮點數資料上進行純量浮點數操作的八元素堆疊;而這些MMX暫存器係用來在64位元緊縮整數資料上進行操作,以及針對在MMX和MMX暫存器之間所進行的一些操作而保持運算元。
本發明的數個替代實施例可係使用較寬或較窄的暫存器。此外,本發明的數個替代實施例可係使用較多、較少、或不同的暫存器檔案和暫存器。
圖14A~B例示出一個更具體的示範有序核 心架構之方塊圖,此核心會是一個晶片中之數個邏輯方塊(包括相同類型和/或不同類型的其他核心)中之一者。這些邏輯方塊透過一個高帶寬互連網路(例如,一個環狀網路)而與一些固定功能邏輯、記憶體I/O介面、和其他必要I/O邏輯通訊,視應用而定。
圖14A是依據本發明的數個實施例的單一個處理器核心的方塊圖,以及其至晶粒上互連網路1402的連接還有其本地第2階(L2)快取子集1404。在一個實施例中,一個指令解碼器1400支援具有緊縮資料指令集延伸的x86指令集。一個L1快取1406容許低潛時取用,以將記憶體快取到純量和向量單元中。雖然在一個實施例中(為了簡化設計),一個純量單元1408和一個向量單元1410係使用分開的暫存器組合(分別是數個純量暫存器1412和數個向量暫存器1414),並且在他們之間所轉移的資料被寫到記憶體中,並接著從一個第1階(L1)快取1406中被讀回,本發明的數個替代實施例可係使用不同的途徑(例如,使用單一個暫存器集合或包括容許資料在這兩個暫存器檔案之間轉移而不被寫入和讀回的一個通訊路徑)。
本地L2快取子集1404是被劃分成數個不同本地子集(每個處理器核心一個)的一個全域L2快取的一部分。各個處理器核心具有至其自己的本地L2快取子集1404的一個直接取用路徑。由一個處理器核心所讀取的資料被儲存在它的L2快取子集1404中,並且可被快速地取用,並行於取用他們自己的本地L2快取子集的其他處理器 核心。由處理器核心所寫入的資料被儲存在它自己的L2快取子集1404中,並且,如有需要,被從其他子集沖刷。此環狀網路確保共享資料的同調性。此環狀網路是雙向的,以容許代理器(例如處理器核心、L2快取和其他邏輯方塊)在此晶片內與彼此通訊。各個環狀資料路徑是每方向1012位元寬。
圖14B是圖14A中之處理器核心的依據本發明之數個實施例的一部分之放大圖。圖14B包括為L1快取1404之一部分的一個L1資料快取1406A,以及有關向量單元1410和向量暫存器1414的更多細節。詳言之,向量單元1410是一個16寬向量處理單元(vector processing unit,VPU)(請見16寬ALU 1428),其執行整數、單精度浮動、和雙倍精度浮動指令中之一或多者。VPU支援配合拌和單元1420的拌和暫存器輸入、配合數值轉換單元1422A~B的數值轉換、以及在記憶體輸入上的配合複製單元1424的複製。寫入遮罩暫存器1426容許對結果暫存器寫入的預測。
100‧‧‧管線
102‧‧‧提取階段
104‧‧‧長度解碼階段
106‧‧‧解碼階段
108‧‧‧配置階段
110‧‧‧重新命名階段
112‧‧‧排程階段
114‧‧‧暫存器讀取/記憶體讀取階段
116‧‧‧執行階段
118‧‧‧寫回/記憶體寫入階段
122‧‧‧例外處置階段
124‧‧‧承諾階段
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令翻譯旁看緩衝器(TLB)
138‧‧‧指令提取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧重新命名/配置器單元
154‧‧‧退役單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體取用單元
170‧‧‧記憶體單元
172‧‧‧資料翻譯旁看緩衝器(TLB)單元
174‧‧‧資料快取單元
176‧‧‧第二階(L2)快取單元
190‧‧‧核心

Claims (25)

  1. 一種用於執行一或多個指令的處理器,該一或多個指令係用來進行包含下列操作:讀取儲存在一第一壓縮資料值中的一第一組數個元素之值,各個元素具有在該第一壓縮資料值中的一個經定義元素位置;將來自該第一組數個元素中的各個元素與儲存在一第二壓縮資料值中的一第二組數個元素中之各者作比較;計算該第一組數個元素中之各個元素的值出現在該第二組數個元素中的次數,以達到針對該第一組數個元素中之各個元素的一個最終計數;以及將針對該第一組數個元素中之各個元素的該最終計數轉移至一第三壓縮資料值,其中各個最終計數係儲存在該第三壓縮資料值中之對應於該第一壓縮資料值中之該經定義元素位置的一個元素位置中。
  2. 如請求項1之處理器,其中:該等比較操作和該等計算操作係藉由該處理器的選擇邏輯而並行地進行。
  3. 如請求項1之處理器,其中:一組一或多個定序器從頭到尾地定序在該等第一和第二壓縮資料值中的各個元素,以進行該等比較操作。
  4. 如請求項1之處理器,其中:該第一壓縮資料值的元素之數量等於該第二壓縮資料值的元素之數量。
  5. 如請求項4之處理器,其中:在該等第一和第二壓縮資料值中儲存有八個元素。
  6. 如請求項1之處理器,其中該等第一、第二與第三壓縮資料值各包含一用以儲存緊縮資料之暫存器。
  7. 如請求項1之處理器,其中該處理器係用以執行一單一指令以進行上述操作。
  8. 一種於一處理器中之方法,其包含:讀取儲存在一第一壓縮資料值中的一第一組數個元素之值,各個元素具有在該第一壓縮資料值中的一個經定義元素位置;將來自該第一組數個元素中的各個元素與儲存在一第二壓縮資料值中的一第二組數個元素中之各者作比較;計算該第一組數個元素中之各個元素的值出現在該第二組數個元素中的次數,以達到針對該第一組數個元素中之各個元素的一個最終計數;以及將針對該第一組數個元素中之各個元素的該最終計數轉移至一第三壓縮資料值,其中各個最終計數係儲存在該第三壓縮資料值中之對應於該第一壓縮資料值中之該經定義元素位置的一個元素位置中。
  9. 如請求項8之方法,其中:該等比較操作和該等計算操作係藉由該處理器的選擇邏輯而並行地進行。
  10. 如請求項8之方法,其中:一組一或多個 定序器從頭到尾地定序在該等第一和第二壓縮資料值中的各個元素,以進行該等比較操作。
  11. 如請求項8之方法,其中:該第一壓縮資料值的元素之數量等於該第二壓縮資料值的元素之數量。
  12. 如請求項11之方法,其中:在該等第一和第二壓縮資料值中儲存有八個元素。
  13. 一種用以計算匹配資料元素之裝置,其包含:讀取器,用於讀取儲存在一第一壓縮資料值中的一第一組數個元素之值,各個元素具有在該第一壓縮資料值中的一個經定義元素位置;比較器,用於將來自該第一組數個元素中的各個元素與儲存在一第二壓縮資料值中的一第二組數個元素中之各者作比較;計算電路,用於計算該第一組數個元素中之各個元素的值出現在該第二組數個元素中的次數以達到針對該第一組數個元素中之各個元素的一個最終計數;以及轉移電路,用於將針對該第一組數個元素中之各個元素的該最終計數轉移至一第三壓縮資料值,其中各個最終計數係儲存在該第三壓縮資料值中之對應於該第一壓縮資料值中之該經定義元素位置的一個元素位置中。
  14. 如請求項13之裝置,其中:該等比較操作和該等計算操作係藉由一處理器的選擇邏輯而並行地進行。
  15. 如請求項13之裝置,其中:一組一或多個定序器從頭到尾地定序在該等第一和第二壓縮資料值中的各個元素,以進行該等比較操作。
  16. 如請求項13之裝置,其中:該第一壓縮資料值的元素之數量等於該第二壓縮資料值的元素之數量。
  17. 如請求項16之裝置,其中:在該等第一和第二壓縮資料值中儲存有八個元素。
  18. 一種電腦系統,其包含:一個記憶體,用以儲存程式指令和資料;及一個處理器,用以執行該等程式指令中之一或多者以進行下列操作:讀取儲存在一第一壓縮資料值中的一第一組數個元素之值,各個元素具有在該第一壓縮資料值中的一個經定義元素位置;將來自該第一組數個元素中的各個元素與儲存在一第二壓縮資料值中的一第二組數個元素中之各者作比較;計算該第一組數個元素中之各個元素的值出現在該第二組數個元素中的次數,以達到針對該第一組數個元素中之各個元素的一個最終計數;及將針對該第一組數個元素中之各個元素的該最終計數轉移至一第三壓縮資料值,其中各個最終計數係儲存在該第三壓縮資料值中之對應於該第一壓縮資料值中之該經定義元素位置的一個元素位置中。
  19. 如請求項18之電腦系統,其中:該等比較操作和該等計算操作係藉由該處理器的選擇邏輯而並行地進行。
  20. 如請求項18之電腦系統,其中:一組一或多個定序器從頭到尾地定序在該等第一和第二壓縮資料值中的各個元素,以進行該等比較操作。
  21. 如請求項18之電腦系統,其中:該第一壓縮資料值的元素之數量等於該第二壓縮資料值的元素之數量。
  22. 如請求項21之電腦系統,其中:在該等第一和第二壓縮資料值中儲存有八個元素。
  23. 一種非暫態機器可讀媒體,其儲存指令碼當藉由一機器執行時導致該機器用已進行一方法包含:讀取儲存在一第一壓縮資料值中的一第一組數個元素之值,各個元素具有在該壓縮資料值中的一個經定義元素位置;將來自該第一組數個元素中的各個元素與儲存在該第二壓縮資料值中的一第二組數個元素中之各者作比較;計算該第一組數個元素中之各個元素的值出現在該第二組數個元素中的次數,以達到針對該第一組數個元素中之各個元素的一個最終計數;及將針對該第一組數個元素中之各個元素的該最終計數轉移至一第三壓縮資料值,其中各個最終計數係儲存在該第三壓縮資料值中之對應於該第一壓縮資料值中之該經 定義元素位置的一個元素位置中。
  24. 如請求項23之非暫態機器可讀媒體,其中該比較操作和該計算操作係並行地進行。
  25. 如請求項23之非暫態機器可讀媒體,其中該第一壓縮資料值的元素之數量等於該第二壓縮資料值的元素之數量。
TW105127894A 2011-12-22 2012-11-20 用於向量運算與累加的處理器、裝置、方法及電腦系統 TWI609325B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067062 WO2013095592A1 (en) 2011-12-22 2011-12-22 Apparatus and method for vector compute and accumulate

Publications (2)

Publication Number Publication Date
TW201723807A true TW201723807A (zh) 2017-07-01
TWI609325B TWI609325B (zh) 2017-12-21

Family

ID=48669233

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105127894A TWI609325B (zh) 2011-12-22 2012-11-20 用於向量運算與累加的處理器、裝置、方法及電腦系統
TW101143238A TWI559220B (zh) 2011-12-22 2012-11-20 用於向量運算與累加的裝置及方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW101143238A TWI559220B (zh) 2011-12-22 2012-11-20 用於向量運算與累加的裝置及方法

Country Status (4)

Country Link
US (1) US20140108480A1 (zh)
CN (1) CN104011657B (zh)
TW (2) TWI609325B (zh)
WO (1) WO2013095592A1 (zh)

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804839B2 (en) * 2012-12-28 2017-10-31 Intel Corporation Instruction for determining histograms
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US9513907B2 (en) * 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US20160026607A1 (en) * 2014-07-25 2016-01-28 Qualcomm Incorporated Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
EP3254287A4 (en) 2015-02-06 2018-08-08 Micron Technology, INC. Apparatuses and methods for memory device as a store for program instructions
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US10365851B2 (en) 2015-03-12 2019-07-30 Micron Technology, Inc. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10564964B2 (en) * 2016-08-23 2020-02-18 International Business Machines Corporation Vector cross-compare count and sequence instructions
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10838720B2 (en) * 2016-09-23 2020-11-17 Intel Corporation Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
US10373666B2 (en) 2016-11-08 2019-08-06 Micron Technology, Inc. Apparatuses and methods for compute components formed over an array of memory cells
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10402413B2 (en) * 2017-03-31 2019-09-03 Intel Corporation Hardware accelerator for selecting data elements
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
CN108734281A (zh) 2017-04-21 2018-11-02 上海寒武纪信息科技有限公司 处理装置、处理方法、芯片及电子装置
CN108733408A (zh) * 2017-04-21 2018-11-02 上海寒武纪信息科技有限公司 计数装置及计数方法
EP3786786B1 (en) 2017-04-19 2023-06-07 Shanghai Cambricon Information Technology Co., Ltd Processing device, processing method, chip, and electronic apparatus
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
US11436010B2 (en) 2017-06-30 2022-09-06 Intel Corporation Method and apparatus for vectorizing indirect update loops
US20200174790A1 (en) * 2017-06-30 2020-06-04 Intel Corporation Method and apparatus for vectorizing histogram loops
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6778941B1 (en) * 2000-11-14 2004-08-17 Qualia Computing, Inc. Message and user attributes in a message filtering method and system
US7076005B2 (en) * 2001-02-15 2006-07-11 Qualcomm, Incorporated System and method for transmission format detection
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US9069547B2 (en) * 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US9513905B2 (en) * 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
US7900025B2 (en) * 2008-10-14 2011-03-01 International Business Machines Corporation Floating point only SIMD instruction set architecture including compare, select, Boolean, and alignment operations
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation

Also Published As

Publication number Publication date
CN104011657B (zh) 2016-10-12
TW201331834A (zh) 2013-08-01
CN104011657A (zh) 2014-08-27
US20140108480A1 (en) 2014-04-17
TWI609325B (zh) 2017-12-21
TWI559220B (zh) 2016-11-21
WO2013095592A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
TWI609325B (zh) 用於向量運算與累加的處理器、裝置、方法及電腦系統
TWI462007B (zh) 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法
TWI483183B (zh) 混洗浮點或整數值的裝置與方法
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI582690B (zh) 用於滑動視窗資料存取之設備及方法
TWI496080B (zh) 轉置指令之技術
TWI470544B (zh) 用以響應於單一指令而執行橫向加法或減法之系統、裝置及方法
TWI518590B (zh) 多暫存器聚集指令
TWI517039B (zh) 用以對緊縮資料執行差異解碼之系統,設備,及方法
TWI475480B (zh) 向量頻率壓縮指令
TWI517031B (zh) 用於呈現各別複數之複數共軛根之向量指令
TWI517041B (zh) 有條件的傳播在單一指令多重資料/向量執行中之評估值的裝置與方法
TWI476682B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI515650B (zh) 用於遮罩暫存器擴充操作之設備及方法
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TWI543076B (zh) 用於資料類型之向下轉換的裝置及方法(二)
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI493449B (zh) 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
TWI490781B (zh) 用於選擇向量運算之元素的裝置及方法
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
TWI544408B (zh) 用於滑動視窗資料收集之設備及方法

Legal Events

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