TW201349105A - 點積處理器、方法、系統及指令 - Google Patents
點積處理器、方法、系統及指令 Download PDFInfo
- Publication number
- TW201349105A TW201349105A TW101148338A TW101148338A TW201349105A TW 201349105 A TW201349105 A TW 201349105A TW 101148338 A TW101148338 A TW 101148338A TW 101148338 A TW101148338 A TW 101148338A TW 201349105 A TW201349105 A TW 201349105A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- source
- instruction
- dot product
- result
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種包含接收一點積指令之態樣的方法。該點積指令表示包含至少四個資料元之一第一來源緊縮資料、表示包含至少八個資料元之一第二來源緊縮資料、及表示一指定儲存位置。因應該點積指令,一結果緊縮資料係被儲存於該指定儲存位置。該結果緊縮資料包含複數個資料元,其各包含一點積結果。各點積結果包含該第一來源緊縮資料之至少四個資料元與該第二來源緊縮資料之至少四個資料元的不同子集之對應的資料元之乘積的和。其它方法、裝置、系統、及指令係被揭露。
Description
實施例係有關於處理器。具體言之,實施例係有關於可操作以因應點積指令而執行點積操作之處理器。
許多處理器具有單一指令多重資料(Single Instruction,Multiple Data;SIMD)架構。於SIMD架構,緊縮資料指令、向量指令、或SIMD指令可同時地或平行地操作於多重資料元或多重資料元對。處理器可具有平行執行硬體因應緊縮資料指令以同時地或平行地執行多重操作。
多重資料元可被緊縮(packed)於一個暫存器或記憶體位置中作為緊縮資料或向量資料。於緊縮資料,暫存器或其他儲存位置的位元可被邏輯地區分為一序列的資料元。舉例來說,一個256位元寬的緊縮資料暫存器可具有四個64位元寬的資料元、八個3位元的資料元、十六個16位元的資料元等。各資料元可表示分開的個別片段之資料(例如,一像素、一像素的顏色成分、複數的分量等),其可被與其他部分分別地及/或獨立地操作。
於此揭露點積指令、執行點積指令之處理器、當處理或執行點積指令時由處理器所執行的方法、及結合一或多
個處理器以處理或執行點積指令之系統。任何於此揭露的處理器及系統的變化皆為適合的。於以下描述中係說明多種特定細節(例如,特定處理器組態、操作的順序、指令格式、資料格式、微結構細節、點積指令之特殊範例等)。然而,在沒有這些特定細節的情況下,實施例亦可被實現。在其他實例中,已知電路、結構及技術並未被詳細說明以避免模糊本說明的了解。
點積係被廣泛地使用於各種不同的應用。舉例來說,點積經常被使用於訊號處理、過濾、矩陣操作、像素處理、音訊處理、計算關聯序列、過濾像素(例如,解塊濾波(deblocking filtering))、當內插像素值以移除可見人工因素時、當計算矩陣的乘積時或類似情況。由於點積的廣泛使用,計算點積之有效率的方式可提供優勢。
點積操作表示兩個向量或數的序列之代數操作,其中對應的項(entry)一起相乘且所有的乘積一起加總而產生一單一數。兩個向量a=〔a1,a2,...,an〕及b=〔b1,b2,...,bn〕的點積以下列方程式表示:
於此方程式中,符號Σ表示對所有從1到n的向量元素對進行相加操作。
第1圖為具有包含一或多個點積指令103之指令集架構101的處理器100之範例實施例的方塊圖。處理器可為任何各種複雜指令集計算(Complex Instruction Set
Computing;CISC)處理器、各種精簡指令集計算(Reduced Instruction Set Computing;RISC)處理器、各種超長指令字(Very Long Instruction Word;VLIW)處理器、各種其混合、或其他類型的處理器。於某些實施例,處理器可為通用處理器(例如,使用於桌上型、膝上型與類似電腦之類型的通用微處理器)。替代地,處理器可為專用處理器。適合的專用處理器之範例包含(但不限於)網路處理器、通訊處理器、加密處理器、圖形處理器、共處理器(coprocessor)、嵌入式處理器、數位訊號處理器(DSP)、及控制器(例如,微控制器),這些僅為少部分的範例。
處理器具有指令集架構(ISA)101。ISA表示有關程式設計的處理器之一部份架構。ISA通常包含原生指令、架構暫存器、資料類型、定址模式、記憶體架構、中斷與例外處置、及處理器之外部輸入與輸出(I/O)。ISA係有別於微架構(microarchitecture),其一般表示被選擇以實現ISA之特定處理器設計技術。具有不同微架構之處理器可共用共同的ISA。
ISA包含架構可見的(architecturally-visible)暫存器(例如,架構暫存器檔案)104。說明的架構暫存器包含緊縮資料暫存器105。各緊縮資料暫存器可操作以儲存緊縮資料、向量資料、或SIMD資料。於某些實施例,架構可見的暫存器可選項的包含遮罩暫存器106。架構可見的暫存器可表示處理器上(on-processor)(例如,晶片
上(on-die))儲存位置。架構暫存器亦可於此被簡單稱為暫存器。除非有特別指定或明顯可知,詞組架構暫存器(phrases architectural register)、暫存器檔案、及暫存器係於此被使用為對於軟體及或程式設計師為可見的(例如,軟體可見的(software-visible))暫存器及/或由通用巨集指令所特定以識別運算元之暫存器。這些暫存器係對比於給定微架構中之其他非結構性或非結構性可見的暫存器(例如,由指令所使用的暫時暫存器、重排緩衝器、引退暫存器等)。
所說明的ISA包含指令集102,其由處理器所支持。指令集之指令表示巨集指令(例如,提供至處理器以供執行的指令),而不是微指令(micro instruction)或微處理作業(micro-ops)(例如,得自解碼巨集指令之處理器的解碼器者)。所說明的指令集包含一或多個點積指令103。點積指令可為任何本文其他部分所揭露的點積指令之各種不同的實施例。自然地,指令集典型包含其他指令(未圖示)。
處理器亦包含執行邏輯107。執行邏輯可操作以執行或處理指令集之指令(例如,一或多個點積指令)。
第2圖為具有可操作以執行包含一範例實施例的點積指令203之指令的執行單元207之指令處理裝置200的一範例實施例之方塊圖。於某些實施例,指令處理裝置可為一處理器及/或可被包含於一處理器中。舉例來說,於某些實施例,指令處理裝置可為(或可被包含於)第1圖之
處理器100或類似者。替代地,指令處理裝置可被包含於不同的處理器或電子系統。
指令處理裝置200可接收點積指令203。舉例來說,指令可自指令提取單元、指令序列、或記憶體被接收。點積指令可表示機器指令、巨集指令、或控制訊號,其係由指令處理裝置所認可(recognize)且控制該裝置以執行特定操作(例如,點積操作)。點積指令可明確地指明(例如,透過位元或一或多個欄位)或其他者來表示(例如,暗示地表示)第一來源緊縮資料210包含至少四個資料元、可指明或其他者來表示第二來源緊縮資料211包含至少八個資料元、且可指明或其他者來表示結果緊縮資料將被儲存之目的地(例如,指定儲存位置213)。
所說明的指令處理裝置包含指令解碼單元或解碼器207。解碼器可接收及解碼較高階的機器指令巨集指令,並輸出一或多個較低階的微操作、微式碼進入點、微指令、或其他較低階的指令或反應及/或由原始較高階的指令所導出的控制訊號。一或多個較低階的指令或控制訊號可透過一或多個較低階的(例如,電路層級或硬體層級)操作來實現較高階的指令之操作。解碼器可使用各種不同的機構而被實現,包含(但不限於)微碼唯讀記憶體(ROM)、檢查表、硬體實現、可程式化的邏輯陣列(Programmable Logic Array;PLA)、及所屬技術領域中已知的使用以實現解碼器的其他機構。
於其他實施例,取代具有解碼器207,可使用指令模
仿器、轉譯器、變形器(morpher)、解譯器、或其他指令轉換邏輯。各種不同的類型的指令轉換邏輯為所屬技術領域中所已知者且可被實現於軟體、硬體、韌體或其組合。指令轉換邏輯可接收指令、模仿、轉譯、變形(morph)、解譯或其他轉換所接收的指令為一或多個對應的導出指令或控制訊號。於其他實施例中,指令轉換邏輯與解碼器兩者皆可被使用。舉例來說,該裝置可具有指令轉換邏輯以轉換為一或多個中間指令且可具有解碼器以解碼一或多個中間指令為可由指令處理裝置之原生硬體所執行的一或多個較低階的指令或控制訊號。某些或全部的指令轉換邏輯(相對於其餘的指令處理裝置)可被置於晶片外,例如於另一晶粒上或於晶片外記憶體中。
指令處理裝置亦包含一組緊縮資料暫存器205。如圖所示,該組緊縮資料暫存器可包含第一緊縮資料暫存器205-1、第二緊縮資料暫存器205-2、及第三緊縮資料暫存器205-3。緊縮資料暫存器可各表示處理器上(on-processor)(例如,晶片上(on-die))處理器儲存位置。緊縮資料暫存器可表示架構暫存器。各緊縮資料暫存器可操作以儲存緊縮資料或向量資料。緊縮資料暫存器可使用已知技術以不同的方式被實現於不同的微架構,且不限於任何特定類型的電路。各種不同的類型之暫存器都是適合的,只要其能夠如本文中所述般儲存及提供資料。適合的類型之暫存器的範例包含(但不限於)專屬實體暫存器、使用暫存器更名之動態分配實體暫存器及其組合。
請再參見第2圖,執行單元207係與緊縮資料暫存器205耦接。執行單元亦與解碼器208耦接。執行單元可從解碼器接收一或多個微操作、微式碼進入點、微指令、其他指令、或反應或由點積指令所導出的其他控制訊號。
因應及/或由於點積指令203,執行單元207可操作以儲存結果緊縮資料於指定儲存位置213。如前所述,點積指令可指明或其他者來表示第一來源緊縮資料210包含至少四個資料元、指明或其他者來表示第二來源緊縮資料211包含至少八個資料元、及指明或其他者來表示指定儲存位置213。結果緊縮資料可包含至少兩個資料元。至少兩個資料元各可包含點積結果。於某些實施例,各點積結果可包含該第一來源緊縮資料之至少四個資料元與該第二來源緊縮資料之至少四個資料元的不同子集之對應的資料元之乘積的和。如圖所示,於某些實施例,第一來源緊縮資料210可被儲存於第一緊縮資料暫存器205-1、第二來源緊縮資料211可被儲存於第一緊縮資料暫存器205-2、且第三來源緊縮資料212可被儲存於第一緊縮資料暫存器205-3。替代地,適合緊縮資料之記憶體位置或其他儲存位置可被使用。
經由範例,執行單元可包含算術邏輯單元、算術單元、乘加法器、包含乘法邏輯與加法邏輯之執行單元或類似物。執行單元及/或該裝置可包含可操作以執行及/或處理點積指令及因應該指令(例如,因應一或多個微指令或由該指令所導出的其他控制訊號)而儲存包含多個點積的
結果之特定或特殊邏輯(例如,電路或以軟體及/或韌體可能地結合的其他硬體)。舉例來說,如圖所示,執行單元可包含點積計算邏輯209,其可操作以計算點積。於某些實施例,點積計算邏輯可包含一或多個乘法器(例如,乘法器電路)及一或多個加法器(例如,加法器電路)。
於某些實施例,第一來源緊縮資料可包含至少四個資料元A0,A1,A2,A3且第二來源緊縮資料可包含至少八個資料元B0,B1,B2,B3,C0,C1,C2,C3。這些中,至少四個資料元B0,B1,B2,B3可表示第二來源緊縮資料之至少四個資料元的第一子集,且至少四個資料元C0,C1,C2,C3可表示第二來源緊縮資料之至少四個資料元的第二子集。結果緊縮資料可包含至少第一資料元及第二資料元,第一資料元包含A0*B0+A1*B1+A2*B2+A3*B3,且第二資料元包含A0*C0+A1*C1+A2*C2+A3*C3。
於某些實施例,結果緊縮資料可包含至少四個資料元,其各表示一點積結果。各點積結果可根據該第二來源緊縮資料之至少八個資料元的至少四個子集中之不同者。於某些實施例,第二來源緊縮資料可進一步包含至少八個額外的資料元D0,D1,D2,D3,E0,E1,E2,E3。這些中,至少四個資料元D0,D1,D2,D3可表示第二來源緊縮資料之至少四個資料元的第三(仍然不同的)子集,且至少四個資料元E0,E1,E2,E3可表示第二來源緊縮資料之至少四個資料元的第四(仍然不同的)子集。結果緊縮資料可進一步包含至少第三資料元與第四資料元,第三資料元包含
A0*D0+A1*D1+A2*D2+A3*D3,且第四資料元資料元包含A0*E0+A1*E1+A2*E2+A3*E3。
於某些實施例,點積指令可指明第二來源緊縮資料之資料元的尺寸。點積指令及/或執行單元可允許第二來源緊縮資料之資料元的尺寸為複數個不同尺寸之其中任何一者。於某些實施例,雖然非必需者,點積指令可具有一立即(immediate)以明確地指明第二來源緊縮資料之資料元的尺寸。替代地,第二來源緊縮資料之資料元的尺寸可被指明於由該指令所表示的暫存器或其他儲存位置。於另一選項,該指令(例如,指令的運算碼)可暗示地表示第二來源緊縮資料之資料元的尺寸。於某些實施例,可選項的為多個指令與多種不同尺寸。於某些實施例,第一來源緊縮資料可包含具有至少八位元的尺寸之資料元,且第二來源緊縮資料可包含具有僅二位元或僅四位元的尺寸之資料元。
為了避免模糊本說明,將圖示及說明相對簡單的指令處理裝置200。於其他實施例,指令處理裝置可選項的包含其他已知組件,例如舉例來說,指令提取單元、指令排程單元、分支預測單元、指令及資料快取、指令及資料轉譯後備緩衝器、預取緩衝器、微指令序列、微指令序列器、匯流排介面單元、第二或更高階快取、引退單元(retirement unit)、暫存器更名單元、包含於處理器中之其他組件、及其各種組合。實施例可具有多個核心、邏輯處理器、或執行引擎。可操作以執行於此所揭露之指令
的實施例之執行單元可被包含於至少一、至少二、大部分、或所有核心、邏輯處理器、或執行引擎中。處理器中組件之組態有字義上許多不同的組合,且實施例並非用以限制任何特定組合或組態。
第3圖為處理點積指令之範例實施例的方法315之範例實施例的流程圖。於許多實施例,該方法可藉由通用處理器、專用處理器(例如,圖形處理器、或數位訊號處理器)、或另一類型的數位邏輯裝置或指令處理裝置而執行。於某些實施例,該方法315可藉由第1圖之處理器100或第2圖之指令處理裝置200或類似者來執行。替代地,該方法315可藉由處理器或指令處理裝置之不同的實施例來執行。再者,第1圖之處理器100、及第2圖之指令處理裝置200可執行與第3圖之方法315的操作及方法相同的、類似的、或不同的操作及方法。
該方法包含接收點積指令,於方塊316。於許多態樣,該指令可在處理器、指令處理裝置、或其部份(例如,解碼器、指令轉換器等)被接收。於許多態樣,該指令可從處理器外(off-processor)來源(例如,從主記憶體、磁碟、或匯流排或互連)、或從處理器內(on-processor)來源(例如,從指令快取)被接收。點積指令明確地指明(例如,透過位元或一或多個欄位)或另外表示(例如,暗示地表示)包含至少四個資料元之第一來源緊縮資料、明確地指明或另外表示包含至少八個資料元之第二來源緊縮資料、及明確地指明或另外表示指定儲存位
置。
接著,於方塊317,因應由於及/或由點積指令所指明者,結果緊縮資料係被儲存於指定儲存位置。結果緊縮資料包含至少兩個資料元,其各包含點積結果。各點積結果包含第一來源緊縮資料之至少四個資料元與第二來源緊縮資料之至少四個資料元的不同子集之對應的資料元之乘積的和。於某些實施例,結果緊縮資料可具有如文中其他部分所描述之其他屬性的結果緊縮資料。舉例來說,執行單元、指令處理裝置、或處理器可執行由該指令所指明的操作並儲存結果。
所說明的方法包含從軟體態樣及或從處理器外部為可見之操作。於其他實施例,該方法可選項的包含在處理器內部發生的一或多個操作及/或一或多個微架構操作。舉例來說,該指令可被擷取,然後被解碼、轉譯、模仿、或其他轉換,而成為一或多個其他指令或控制訊號。來源緊縮資料可被存取及/或接收。執行單元能夠執行指令之操作,且可執行操作(例如,實現指令之操作的一或多個微架構操作可被執行)。
第4圖為說明點積操作415之第一範例實施例的方塊圖,點積操作415因應第一範例實施例的點積指令而被執行。點積指令指明或其他者來表示具有至少四個資料元A0-AN之第一來源緊縮資料410,其中N至少為四。點積指令指明或其他者來表示具有至少八個資料元B0-BN及C0-CN之第二來源緊縮資料411。如圖所示,資料元B0-BN
可為相連的(例如,在第二來源緊縮資料之最低階的一半內),且資料元C0-CN可為相連的(例如,在第二來源緊縮資料之最高階的一半內)。至少四個資料元B0-BN表示第二來源緊縮資料中的第一組的至少四個資料元,且資料元C0-CN表示第二來源緊縮資料中的不同組之第二組的至少四個資料元。於某些實施例,第二來源緊縮資料可包含額外的不同的非重疊的組之至少四個資料元(未圖示)。於某些實施例,各不同的非重疊的組之至少四個資料元可包含與在第一來源緊縮資料之資料元的數量相同之資料元的數量。
點積指令亦指明或其他者來表示目的地(例如,指定儲存位置)。結果緊縮資料412係因應點積指令而被產生及儲存於目的地中。結果緊縮資料包含至少兩個資料元R0-R1。各至少兩個資料元包含點積結果。各點積結果可包含第一來源緊縮資料之至少四個資料元A0-AN與該第二來源緊縮資料之至少四個資料元的不同子集之對應的資料元之乘積的和。如圖所示,於某些實施例,第一最低階資料元R0可包含等於A0*B0+A1*B1+A2*B2+...+AN*BN或飽和之點積結果。再者,第二資料元R1可包含等於A0*C0+A1*C1+A2*C2+...+AN*CN或飽和之點積結果。於某些實施例,「或飽和」表示若點積結果之值超過可被儲存於用以儲存結果資料元之位元的可用數目之最大值時,飽和值可被儲存。於所說明的實施例,形成相乘的對應對之資料元之間的配對關係參考各組中資料元的相對順序(亦
即,A0對應至B0於一組且對應至C0於另一組、A1對應至B1於一組且對應至C1於另一組、A2對應至B2於一組且對應至C2於另一組、AN對應至BN於一組且對應至CN於另一組)。若A0-AN包含多於四個資料元,則B0-BN及C0-CN可各包含多於四個資料元,且各點積結果可將額外對之對應的資料元之乘積相加。
第5圖為說明點積操作515之第二範例實施例的方塊圖,點積操作515因應第二範例實施例的點積指令而被執行。點積指令指明或其他者來表示具有至少四個資料元A0-AN之第一來源緊縮資料510,其中N至少為四。點積指令亦指明或其他者來表示具有至少十六個資料元B0-BN,C0-CN,D0-DN,E0-EN之第二來源緊縮資料511。如圖所示,資料元B0-BN可為相連的(例如,第二來源緊縮資料之最低階的四分之一中)、資料元C0-CN可為相連的(例如,第二來源緊縮資料之次低階的四分之一中)、資料元D0-DN可為相連的(例如,第二來源緊縮資料之次高階的四分之一中)、及資料元E0-EN可為相連的(例如,第二來源緊縮資料之最高階的四分之一中)。各至少四個資料元B0-BN,C0-CN,D0-DN,E0-EN的組表示第二來源緊縮資料之不同的非重疊的組之至少四個資料元。於某些實施例,第二來源緊縮資料可包含額外的不同的非重疊的組之至少四個資料元(未圖示)。於某些實施例,各不同的非重疊的組之至少四個資料元可包含與在第一來源緊縮資料之資料元的數量相同之資料元的數量。
點積指令亦指明或其他者來表示目的地(例如,指定儲存位置)。結果緊縮資料512係因應點積指令而被產生及儲存於目的地中。於說明中,結果緊縮資料被分成第一部份512A及第二部份512B。結果緊縮資料包含至少四個資料元R0-R3。各至少四個資料元包含點積結果。各點積結果可包含第一來源緊縮資料之至少四個資料元A0-AN與該第二來源緊縮資料之至少四個資料元的不同子集之對應的資料元之乘積的和。如圖所示,於某些實施例,第一最低階資料元R0可包含等於A0*B0+A1*B1+A2*B2+...+AN*BN或飽和之點積結果。第二資料元R1可包含等於A0*C0+A1*C1+A2*C2+...+AN*CN或飽和之點積結果。第三資料元R2可包含等於A0*D0+A1*D1+A2*D2+...+AN*DN或飽和之點積結果。第四資料元R3可包含等於A0*E0+A1*E1+A2*E2+...+AN*EN或飽和之點積結果。於某些實施例,「或飽和」表示若點積結果之值超過可被儲存於用以儲存結果資料元之位元的可用數目之最大值時,飽和值可被儲存。若A0-AN包含多於四個資料元,則B0-BN及C0-CN可各包含多於四個資料元,且各至少四個點積結果可將額外對之對應的資料元之乘積相加。
第6圖為說明點積操作615之第三範例實施例的方塊圖,點積操作615可因應第三範例實施例的點積指令而被執行。點積指令指明或其他者來表示具有十六個8位元之位元組的資料元A0-A15之第一128位元來源緊縮資料610。如圖所示,A0係在位元〔7:0〕、A1係在位元
〔15:8〕、A2係在位元〔23:16〕、A3係在位元〔31:24〕、A4係在位元〔39:32〕、A5係在位元〔47:40〕、A6係在位元〔55:48〕、A7係在位元〔63:56〕、A8係在位元〔71:64〕、A9係在位元〔79:72〕、A10係在位元〔87:80〕、A11係在位元〔95:88〕、A12係在位元〔103:96〕、A13係在位元〔111:104〕、A14係在位元〔119:112〕、A15係在位元〔127:120〕。
點積指令亦指明或其他者來表示具有三十二個4位元寬的資料元B0-B15及C0-C15之第二128位元來源緊縮資料611。如圖所示,十六個資料元B0-B15可在第二來源緊縮資料之最低階的一半中為相連的(亦即,在位元〔63:0〕),且十六個資料元C0-C15可在第二來源緊縮資料之最高階的一半中為相連的(亦即,在位元〔127:64〕)。B0係在位元〔3:0〕;B1係在位元〔7:4〕等。C0係在位元〔67:64〕、C1係在位元〔71:68〕等。十六個資料元B0-B15表示在第二來源緊縮資料中之第一組的十六個資料元,且資料元C0-C15表示在第二來源緊縮資料中之不同的第二組的十六個資料元。於某些實施例,第一及第二來源緊縮資料具有相同的寬度(例如,係以相同的尺寸被儲存於緊縮資料暫存器中)。
點積指令亦指明或其他者來表示目的地(例如,指定儲存位置)。結果緊縮資料612係因應點積指令而被產生及儲存於目的地中。結果緊縮資料包含兩個16位元資料
元R0-R1。各結果資料元包含第一來源緊縮資料之各資料元的位元的兩倍,及第二來源緊縮資料之資料元的位元的四倍。各兩個資料元包含點積結果,其係根據至少十六個乘積的和。各點積結果可包含第一來源緊縮資料之十六個資料元A0-A15與第二來源緊縮資料之十六個資料元的不同子集之對應的資料元之乘積的和。如圖所示,於某些實施例,位元〔15:0〕中之第一最低階資料元R0可包含等於A0*B0+A1*B1+A2*B2+A3*B3+A4*B4+A5*B5+A6*B6+A7*B7+A8*B8+A9*B9+A10*B10+A11*B11+A12*B12+A13*B13+A14*B14+A15*B15或飽和之點積結果。再者,第二較高階資料元R1可包含等於A0*C0+A1*C1+A2*C2+A3*C3+A4*C4+A5*C5+A6*C6+A7*C7+A8*C8+A9*C9+A10*C10+A11*C11+A12*C12+A13*C13+A14*C14+A15*C15或飽和之點積結果。較大位元〔127:32〕之結果緊縮資料可選項的為零或可表示無關值(don’t-care values)等。
第7圖為說明點積操作715之第四範例實施例的方塊圖,點積操作715可因應第四範例實施例的點積指令而被執行。點積指令指明或其他者來表示具有十六個8位元之位元組的資料元A0-A15之第一128位元來源緊縮資料710。點積指令亦指明或其他者來表示具有六十四個2位元寬的資料元B0-B15,C0-C15,D0-D15,E0-E15之第二128位元來源緊縮資料711。2位元資料元為第一來源緊縮資料之8位元位元組資料元的尺寸之四分之一。如圖所示,十六個資料元B0-B15可在第二來源緊縮資料之最低階的四
分之一中為相連的(亦即,在位元〔31:0〕)、十六個資料元C0-CN可在第二來源緊縮資料之次低階的四分之一中為相連的(亦即,在位元〔63:32〕)、十六個資料元D0-DN可在第二來源緊縮資料之次高階的四分之一中為相連的(亦即,在位元〔95:64〕)、十六個資料元E0-EN可在第二來源緊縮資料之最高階的四分之一中為相連的(亦即,在位元〔127:96〕)。資料元B0-B15,C0-C15,D0-D15,E0-E15之各組表示第二來源緊縮資料中不同的非重疊的組之十六個資料元。
點積指令亦指明或其他者來表示目的地(例如,指定儲存位置)。結果緊縮資料712係因應點積指令而被產生及儲存於目的地中。結果緊縮資料包含四個16位元結果資料元R0-R3。各結果資料元包含第一來源緊縮資料之各資料元的位元的兩倍,及第二來源緊縮資料之資料元的位元的八倍。各四個資料元包含點積結果,其係根據至少十六個乘積的和。各點積結果可包含第一來源緊縮資料之十六個資料元A0-A15與第二來源緊縮資料之十六個資料元的不同子集之對應的資料元之乘積的和。
如圖所示,於某些實施例,位元〔15:0〕中之第一最低階16位元結果資料元R0可包含等於A0*B0+A1*B1+A2*B2+A3*B3+A4*B4+A5*B5+A6*B6+A7*B7+A8*B8+A9*B9+A10*B10+A11*B11+A12*B12+A13*B13+A14*B14+A15*B15或飽和之點積結果。第二資料元R1可包含等於A0*C0+A1*C1+A2*C2+A3*C3+A4*C4+A5*C5+A6*C6+A7*C7+A8*C8+A9*C9+
A10*C10+A11*C11+A12*C12+A13*C13+A14*C14+A15*C15或飽和之點積結果。第三資料元R2可包含等於A0*D0+A1*D1+A2*D2+A3*D3+A4*D4+A5*D5+A6*D6+A7*D7+A8*D8+A9*D9+A10*D10+A11*D11+A12*D12+A13*D13+A14*D14+A15*D15或飽和之點積結果。第四資料元R3可包含等於A0*E0+A1*E1+A2*E2+A3*E3+A4*E4+A5*E5+A6*E6+A7*E7+A8*E8+A9*E9+A10*E10+A11*E11+A12*E12+A13*E13+A14*E14+A15*E15或飽和之點積結果。較大位元〔127:64〕之結果緊縮資料可選項的為零或可表示無關值(don’t-care values)等。
這些僅是一些詳細的範例實施例。其他實施例亦可考量。舉例來說,其他實施例亦可考量其中之來源及結果緊縮資料可以較大或較小。舉例來說,替代實施例可考量其中來源及結果緊縮資料各為64位元且具有各組(例如,A0-A7,B0-B7,C0-C7等)中的一半的資料元。於另一範例,替代實施例可考量其中來源及結果緊縮資料各為256位元且具有各組(例如,A0-A31,B0-B31,C0-C31等)中的一半的資料元。512位元來源及結果緊縮資料亦可考量。於進一步實施例,第一來源緊縮資料可包含16位元資料元、32位元資料元、或64位元資料元。取代結果資料元為第一來源資料之資料元的兩倍大且當其超過最大尺寸時使結果飽合,結果資料元可為大於第一來源緊縮資料之資料元的兩倍大之位元(例如,三倍或四倍的位元)。這些僅為一些說明的變化。進一步替代實施例亦可考量。
第8圖為用於點積指令803之指令格式的實施例之方塊圖。指令格式包含操作碼或運算碼820。運算碼可表示可操作以識別將被處理器執行的指令及/或操作(例如,點積操作)之複數個位元或一或多個欄位的指令格式。
指令格式包含第一來源緊縮資料說明符821以明確地指明第一來源緊縮資料、第二來源緊縮資料說明符822以明確地指明第二來源緊縮資料、及結果緊縮資料說明符823以明確地指明結果緊縮資料。這些說明符各可指明特定緊縮資料暫存器、記憶體位置、或儲存相關聯的緊縮資料之其他儲存位置(例如,指明一位址)。替代地,如前所述,一或多個第一來源緊縮資料、第二來源緊縮資料、或結果緊縮資料可藉由指令而被暗示地表示(亦即,與被明確地指明相反)。舉例來說,一旦識別運算碼820,處理器可暗示地知道用於這些運算元之其中一者的儲存位置。於另一選項,這些來源的其中一者亦可選項的被再使用為結果(例如,被指令初始地使用的來源之內容可被結果覆寫)。
於某些實施例,雖然不是必須的,指令格式可選項的包含至少一個尺寸說明符824以指明第一及第二來源緊縮資料之其中至少一者的資料元之尺寸(例如,位元寬)。於某些實施例,第一來源緊縮資料可具有固定尺寸之資料元(例如,8位元或16位元),而第二來源緊縮資料可具有可變尺寸之資料元,其為第一來源緊縮資料之資料元的固定尺寸之分數(例如,二分之一、三分之一、四分之
一、八分之一等)。可變尺寸可藉由尺寸說明符來指明。於此實施例,當第一及第二來源緊縮資料被儲存於相同位元寬(例如,同組之不同的緊縮資料暫存器)的儲存位置中時,第二來源緊縮資料可包含一些資料元,其為第一來源緊縮資料之資料元的數量之整數倍數(例如,二、三、四或八倍)。於某些實施例,第一來源緊縮資料可具有固定尺寸之8位元位元組資料元,且尺寸說明符可被操作以指明第二來源緊縮資料之資料元為僅2位元寬、僅4位元寬、或在一些情況下為8位元寬。於另一範例,於某些實施例,第一來源緊縮資料可具有固定尺寸之16位元位元組資料元,且尺寸說明符可被操作以指明第二來源緊縮資料之資料元為僅2位元寬、僅4位元寬、僅8位元寬、或在一些情況下為16位元寬。這些僅為一些說明範例實施例。其他實施例亦可考量。
尺寸說明符之不同的實施例亦可考量。於某些實施例,尺寸說明符可被包含於點積指令一立即(immediate)中(例如,8位元立即)。替代地,於其他實施例,尺寸說明符可被指明於暫存器或對指令暗示之其他儲存位置(例如,對指令之運算碼暗示)。於另一其他實施例,尺寸說明符可被初始地包含於指定暫存器中,接著當結果緊縮資料被儲存於指定暫存器中時可被覆寫。於另一進一步其他實施例,指令格式能夠指明具有尺寸說明符之另一運算元(例如,其他運算元之其中一者可被暗示、或其他運算元之其中一者可被再使用、或指令格式
可允許總共四個運算元之規格)。
替代地,於其他實施例,尺寸說明符可不存在。舉例來說,於某些實施例,第一及第二來源緊縮資料兩者之資料元的尺寸可為固定的且對指令暗示(例如,對指令之運算碼暗示)。在某些情況,可僅有一個指令及一對固定尺寸。在其他情況,可為多個不同的指令(例如,具有不同的運算碼)及多對不同的固定尺寸。舉例來說,具有第一運算碼之第一點積指令可表示第一來源緊縮資料之資料元為8位元且第二來源緊縮資料之資料元為僅4位元,然而,具有第二不同的運算碼之第二點積指令可表示第一來源緊縮資料之資料元為8位元且第二來源緊縮資料之資料元為僅2位元。
所說明的指令格式顯示欄位之類型的範例,其可被包含於浮點定標指令之實施例。替代實施例可包含所說明的欄位之子集或可增加額外的欄位。所說明的欄位之次序/排列並非必需,而欄位可被重新排列。欄位不必須包含相連的順序之位元,而可被以非相連的或分開的位元組成。於某些實施例,雖然並非必需,指令格式可遵循VEX或EVEX指令格式。
第9圖為處理具有尺寸說明符之點積指令的範例實施例之方法915的範例實施例之流程圖。點積指令係被接收,於方塊916。點積指令指明或其他者來表示具有N,M位元資料元之第一來源緊縮資料,其中N及M為整數。於許多實施例,N可為4、8、16、或32。於許多實施
例,M可為8、16、32、或64。通常,N為8或16且M為8或16。指令亦指明或其他者來表示第二來源緊縮資料、指明或其他者來表示第二來源緊縮資料之可變尺寸的資料元(例如,具有尺寸說明符欄位)、及指明或其他者來表示指定儲存位置。
於方塊925,點積係被解碼。於方塊926,第一來源緊縮資料及第二來源緊縮資料係被存取(例如,從暫存器或記憶體位置)。於方塊927,第二來源緊縮資料之可變尺寸的資料元係被決定。所說明的實施例允許可變尺寸為任何三種不同的可能尺寸(亦即,M/4、M/2、或M)。
若尺寸為M/4,則方法前進至方塊917A,其中具有結果資料元R0-R3之結果緊縮資料被儲存。R0可包含等於A0*B0+A1*B1+A2*B2+...+AN*BN或飽和之點積結果。R1可包含等於A0*C0+A1*C1+A2*C2+...+AN*CN或飽和點積結果。R2可包含等於點積結果A0*D0+A1*D1+A2*D2+...+AN*DN或飽和。R3可包含等於點積結果A0*E0+A1*E1+A2*E2+...+AN*EN或飽和。
相反地,若尺寸為M/2,則該方法前進至方塊917B,其中具有結果資料元之結果緊縮資料係被儲存。R0可包含等於A0*B0+A1*B1+A2*B2+...+AN*BN或飽和點積結果。R1可包含等於A0*C0+A1*C1+A2*C2+...+AN*CN或飽和點積結果。
替代地,若尺寸為M,則該方法前進至方塊917AC,其中純量結果R(儘管可能於緊縮資料暫存器或記憶體位
置中)係被儲存。R可包含等於A0*B0+A1*B1+A2*B2+...+AN*BN或飽和點積結果。
於某些實施例,點積指令可選項的為一經遮蔽的點積指令。經遮蔽的點積指令可指明或其他者來表示緊縮資料操作遮罩。於某些實施例,處理器可包含用以儲存緊縮資料操作遮罩之一組遮罩暫存器(例如,第1圖之遮罩暫存器106及/或第11圖之遮罩暫存器1106)。緊縮資料操作遮罩於此亦可被簡稱為遮罩。
各遮罩可表示斷定(predicate)運算元或條件控制運算元,其可遮蔽、斷定、或有條件地控制與該指令相關聯的點積操作是否將被執行及/或點積操作的結果是否將被儲存。於某些實施例,各遮罩可被操作以以每一資料元粒度(at per-data element granularity)來遮蔽點積操作。各遮罩可允許點積操作用於不同的待斷定的結果資料元或有條件地分別地及/或獨立地控制的其他結果資料元。
遮罩可各包含多個遮罩元(mask element)、斷定元(predicate element)、條件控制元(conditional control element)或旗標(flag)。元或旗標可被包含於與結果資料元之一對一對應(例如,若有兩個結果資料元,則可有兩個元或旗標或若有四個結果資料元,則可有四個元或旗標)。各元或旗標可被操作以遮蔽分開的緊縮資料操作及/或點積之儲存於對應的結果資料元中。通常個元或旗標可為單一位元。單一位元可允許指明兩種不同的可能性之任一者(例如,執行操作相對於不執行操作、儲存操作的
結果相對於儲存操作的結果等)。替代地,若希望可以選擇多於兩個不同的選項,則兩個或更多位元可被使用於各旗標或元。
遮罩的各位元之二進制值可斷定或控制與將被執行的經遮蔽的點積指令相關聯之點積操作是否將被執行及/或點積操作的結果是否將被儲存。各位元可被設定(亦即,具有二進制值為1)或被清除(亦即,具有二進制值為0)。根據一種可能的俗例,各位元可分別被設定(亦即,1)或清除(亦即,0)以允許或不允許執行於由經遮蔽的點積指令所表示的第一及第二來源緊縮資料之資料元的點積操作之結果被儲存於對應的結果資料元中。相對的俗例亦是可能的,其中位元係被清除(亦即,0)以允許結果被儲存,或設定(亦即,1)以不允許結果被儲存。
當點積操作之結果並沒有被儲存於一給定結果資料元時(例如,對應的遮罩位元被清除或零),則另一值可被儲存於該給定的結果資料元。於某些實施例,合併遮蔽(merging-masking)可被執行。於合併遮蔽,當點積操作被遮蔽時,來自來源緊縮資料之對應的資料元之值可被儲存於對應的結果資料元。舉例來說,若來被係被再使用為目的地,則若該遮罩位元為零,對應的指定資料元可保持其在作為該來源時所擁有的初始值(亦即,其不會隨計算結果被更新)。於其他實施例,歸零遮蔽(zeroing-masking)可被執行。於歸零遮蔽,當點積操作被遮蔽,對應的結果資料元可被歸零或一零值可被儲存於對應的結
果資料元中。替代地,於其他實施例中,其他預先決定的值可被儲存於該遮蔽的結果資料元。
於某些實施例,點積操作可選項的被執行於所有第一及第二來源緊縮資料之對應的資料元對,而不管遮罩之對應的位元,但是操作的結果根據遮罩之對應的位元可或可不被儲存於結果緊縮資料中。替代地,於其他實施例,點積操作可選項的被省略(亦即,不執行)若遮罩之對應的位元指明操作的結果不被儲存於緊縮資料結果中。於某些實施例,例外及/或違反可選項地被抑制(或非提高)緊縮資料操作於經遮蔽的元(masked-off element)。於某些實施例,對於具有記憶體運算元之經遮蔽的點積指令,記憶體錯誤可對於經遮蔽的資料元選項地被抑制。
第10圖為具有選項的遮罩說明符1030及選項的遮蔽操作說明符1031之類型的點積指令1003的指令格式之實施例的方塊圖。第10圖與第8圖之指令格式有某些相似處。為了避免模糊本說明,以下將在不重複相似處的情況下強調第10圖之實施例的不同的或額外的特徵。應了解的是,除了特別說明或很明顯可見以外,於第8圖所說明之屬性及變化亦可應用至第10圖。
指令格式包含操作碼或運算碼1020、第一來源緊縮資料說明符1021、第二來源緊縮資料說明符1022、結果緊縮資料說明符1023、及選項的尺寸說明符1024。指令格式亦包含選項的遮罩說明符1030及遮蔽操作說明符1031之選項的類型。遮罩說明符1030可指明一遮罩(例如,
指明遮罩暫存器之位址)。於一特定範例實施例,雖然並非必需,遮罩說明符可具有3位元以識別八個不同的遮罩暫存器之任何一者。遮蔽操作說明符1031之類型可指明將被執行的遮罩之類型。於某些實施例,遮蔽操作說明符之類型可指明合併遮蔽或歸零遮蔽是否將被執行。舉例來說,遮蔽操作說明符之類型可為單一位元,其可具有第一二進制值以指明合併遮蔽將被執行,或第二二進制值以指明歸零遮蔽將被執行。
第11圖為緊縮資料操作遮罩暫存器1106之合適的集之範例實施例的方塊圖。各緊縮資料操作遮罩暫存器可被使用以儲存緊縮資料操作遮罩。於所說明的實施例,該集包含八個遮罩暫存器,標示為k0到k7。替代實施例可包含少於八個(例如,二、四、六等)或多於八個(例如,十六、二十、三十二等)的遮罩暫存器。舉例來說,經遮蔽的點積指令可使用三個位元(例如,3位元欄位)以編碼或指明八個遮罩暫存器k0到k7中的任一者。於替代實施例,當有較少或較多遮罩暫存器時,可分別使用較少或較多位元。於所說明的實施例,各遮罩暫存器為64位元。於替代實施例,遮罩暫存器之寬度可為寬於64位元(例如,80位元、128位元等)或窄於64位元(例如,8位元、16位元、32位元等)。
第12圖為緊縮資料暫存器1205之合適的集之範例實施例的方塊圖。所說明的緊縮資料暫存器包含三十二個512位元緊縮資料或向量暫存器。這些三十二個512位元
暫存器被標示為ZMM0至ZMM31。於所說明的實施例,雖然並非必需,較低階256位元的這些暫存器中之較低的十六個暫存器(亦即,ZMM0-ZMM15)被化名(aliased)或覆蓋(overlaid)於標示為YMM0-YMM15之各別的256位元緊縮資料或向量暫存器。同樣的,於所說明的實施例,雖然亦非必需,較低階128位元的YMM0-YMM15被化名或覆蓋於標示為XMM0-XMM15之各別的128位元緊縮資料或向量暫存器。512位元暫存器ZMM0至ZMM31可操作以保持512位元緊縮資料、256位元緊縮資料、或128位元緊縮資料。256位元暫存器YMM0-YMM15可操作以保持256位元緊縮資料、或128位元緊縮資料。128位元暫存器XMM0-XMM1可操作以保持128位元緊縮資料。各暫存器可被使用以儲存緊縮浮點資料或緊密的整數資料。不同的資料元尺寸係支持包含至少8位元位元組資料、16位元字元資料、32位元雙字元或單精度浮點資料、及64位元四字元(quadword)或雙精度浮點資料資料。緊縮資料暫存器之替代實施例可包含不同數目的暫存器、不同尺寸的暫存器、且可或可不化名較大暫存器於較小暫存器。
第13圖為一製品(例如,電腦程式產品)1335之方塊圖,製品1335包含儲存一或多個點積指令1303之機器可讀取儲存媒體1336。於某些實施例,機器可讀取儲存媒體可為有形的(tangible)及/或非過渡的(non-transitory)機器可讀取儲存媒體。於許多實施例,機器可
讀取儲存媒體可包含軟碟片、光碟片、CD-ROM、磁碟片、磁光碟片、唯讀記憶體(ROM)、可程式化ROM(PROM)、可抹除及可程式化ROM(EPROM)、電氣可抹除及可程式化ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、半導體記憶體、其他類型的記憶體、或其組合。於某些實施例,該媒體可包含一或多個固態資料儲存材料,例如,舉例來說,半導體資料儲存材料、相變資料儲存材料、磁性資料儲存材料、或光學透明固態資料儲存材料等。
各點積指令指明或其他者來表示第一來源緊縮資料包含至少四個資料元A0,A1,A2,A3、第二來源緊縮資料包含至少八個資料元B0,B1,B2,B3,C0,C1,C2,C3、及指定儲存位置。若由一機器所執行,各點積指令可操作以使該機器儲存緊縮資料結果於由該指令所表示的指定儲存位置。結果緊縮資料包含至少第一資料元及第二資料元,第一資料元包含A0*B0+A1*B1+A2*B2+A3*B3,第二資料元包含A0*C0+A1*C1+A2*C2+A3*C3。任何文中所揭露的點積指令及相關聯的緊縮資料結果皆為合適的。
機器之不同的類型之範例包含(但不限於)處理器(例如,通用處理器及專用處理器)、指令處理裝置及具有一或多個處理器或指令處理裝置的許多電子裝置。此電子裝置之一些代表範例包含(但不限於)電腦系統、桌上型、膝上型、筆記型電腦、伺服器、網路路由器、網路交
換器、機上盒、行動電話、視訊遊戲控制器等。
於此揭露的點積指令之特定實施例係特別有用於加速解塊濾波計算,例如用於H.264/MPEG-4 Part 10或先進視訊編碼(Advanced Video Coding、AVC)。AVC為用於視訊壓縮的一種標準且為目前普遍使用於紀錄、壓縮、及散佈視訊(例如,高畫質視訊)的格式。AVC使用解塊濾波以幫助增加編碼效率及改善經解碼的視訊品質。解塊濾波係被以像素的群組(例如,4或8個像素的群組)來執行。這些像素的群組具有已知的邊(例如,水平及垂直邊)。當對一群組或區塊的像素執行解塊濾波時,垂直邊被濾波且水平邊也被濾波。解塊濾波的實現係需要大量的計算且通常消耗大量的處理資源。具體言之,典型地垂直濾波該等邊會需要大量的計算。
第14A圖為說明由垂直邊1441所分開的兩個鄰近的16x16像素大區塊1440之方塊圖。各大區塊包含排列成四行及四列的十六個像素。通常,為了以解塊濾波實現垂直邊濾波,行及列係首先被轉置,接著解塊計算係被執行於經轉置的資料,且接著,解塊計算的結果被轉置回來。此轉置/重排操作係需要大量的計算。
第14B圖說明有助於垂直邊解塊濾波的點積操作1415之範例實施例之方塊圖,其可因應點積指令之範例實施例而被執行。點積指令指明或其他者來表示具有至少四個像素p1,p0,q0,q1之第一來源緊縮資料1410。舉例來說,該四個像素可在第14A圖之鄰近16x16像素大區塊的
給定邊內且可跨越垂直邊。點積指令亦指明或其他者來表示具有至少十六個解塊濾波係數a0-a3,b0-b3,c0-c3,d0-d3之第二來源緊縮資料1411。
結果緊縮資料1412係因應點積指令而被產生及儲存。於說明中,雖然了解到結果緊縮資料可存在單一暫存器之相連的位元中,結果緊縮資料可被分成第一部份1412A及第二部份1412B。結果緊縮資料包含至少四個資料元,其各包含點積結果。如圖所示,於某些實施例,第一最低階資料元q1可包含等於q1*d3+q0*d2+p0*d1+p1*d0或飽和之點積結果。第二資料元q0可包含等於q1*c3+q0*c2+p0*c1+p1*c0或飽和之點積結果。第三資料元p0可包含等於q1*b3+q0*b2+p0*b1+p1*b0或飽和之點積結果。第四資料元p1可包含等於q1*a3+q0*a2+p0*a1+p1*a0或飽和之點積結果。
有利地,點積操作/指令允許多個經解塊濾波的像素值(例如,p1、p0、q0、q1這四個值)在點積單一指令/操作中被計算。再者,在解塊濾波計算之前或之後並不需要將資料轉置。此有助於大量減少垂直解塊濾波計算的計算負擔。應了解的是此僅為一說明實施例,且在某些實施例中,點積指令可一次處理多於四個像素(例如,至少八個、至少十六個等)。
指令集包含一或多個指令格式。給定指令格式定義許多欄位(位元的數量、位元的位置)以指明(除了其他事以外)將被執行的操作(運算碼)及在哪個運算元將執行
操作。某些指令格式進一步透過指令範本(或次格式(subformat))的界定而被細分。舉例來說,給定指令格式之指令範本可被界定以具有指令格式的欄位之不同的子集(所包含的欄位係典型以相同的順序,但至少某些因為其包含較少的欄位而具有不同的位元位置)及/或被界定以具有不同地被解譯的給定欄位。因此,ISA之各指令係使用給定指令格式(且若經界定,於該指令格式之指令範本之給定的其中一者中)來加以表示且包含用以指明操作及運算元之欄位。舉例來說,範例ADD指令具有特定運算碼及包含運算碼欄位之指令格式以指明運算碼及運算元欄位以選擇運算元(source1/目的地及source2);且指令流中之此ADD指令的發生將具有特定內容於指明特定運算元之運算元欄位。有關先進向量延伸(Advanced Vector Extensions;AVX)(AVX1及AVX2)及使用向量延伸(Vector Extensions;VEX)編碼方案之一組SIMD延伸已被發表及/或公開(例如,見Intel® 64 and IA-32 Architectures Software Developers Manual,October 2011;及見Intel® Advanced Vector Extensions Programming Reference,June 2011)。
於此說明之指令的實施例可被體現於不同的格式。此外,範例系統、架構、及管線係詳細說明如下。指令的實施例可被執行於(但不限於)此等系統、架構、及管線。
向量友善指令格式為適合用於向量指令(例如,有特定於向量操作之特定欄位)之一指令格式。雖然實施例中係說明透過向量友善指令格式可支持向量及純量操作,替代實施例可僅使用向量操作於向量友善指令格式。
第15A-15B圖為說明根據本發明之實施例的一般向量友善指令格式及其指令範本之方塊圖。第15A圖為說明根據本發明之實施例的一般向量友善指令格式及其A類別指令範本之方塊圖;而第15B圖為說明根據本發明之實施例的一般向量友善指令格式及其B類別指令範本之方塊圖。具體言之,被界定為A類別及B類別指令範本之一般向量友善指令格式1500皆包含無記憶體存取1505指令範本及記憶體存取1520指令範本。一般向量友善指令格式中的「一般」表示未被用於特定指令集之指令格式。
本發明之實施例將說明如下,其中向量友善指令格式支援以下所述者:64位元組向量運算元長度(或尺寸)與32位元(4位元組)或64位元(8位元組)資料元寬度(或尺寸)(且因此,64位元組向量由16個雙字元尺寸元或替代地或8個四字元尺寸元組成);64位元組向量運算元長度(或尺寸)與16位元(2位元組)或8位元(1位元組)資料元寬度(或尺寸);32位元組向量運算元長度(或尺寸)與32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料
元寬度(或尺寸);及16位元組向量運算元長度(或尺寸)與32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元寬度(或尺寸);替代實施例可支援更多、更少及/或不同的向量運算元尺寸(例如,256位元組向量運算元)與更多、更少或不同的資料元寬度(例如,128位元(16位元組)資料元寬度)。
第15A圖中之A類別指令範本包含:1)在無記憶體存取1505指令範本中,顯示有一無記憶體存取、完整修整控制(full round control)類型操作1510指令範本及一無記憶體存取、資料轉換類型操作1515指令範本;及2)在記憶體存取1520指令範本中,顯示有一記憶體存取、時間性(temporal)1525指令範本及一記憶體存取、非時間性(non-temporal)1530指令範本。第15B圖中之B類別指令範本包含:1)在無記憶體存取1505指令範本中,顯示有一無記憶體存取、寫入遮罩控制、部份修整控制(partial round control)類型操作1512指令範本及一無記憶體存取、寫入遮罩控制、vsize類型操作1517指令範本;及2)在記憶體存取1520指令範本中,顯示有一記憶體存取、寫入遮罩控制1527指令範本。
一般向量友善指令格式1500包含以下欄位,其以第15A-15B圖所說明的順序列出。
格式欄位1540-於此欄位中的特定值(指令格式識別符值)唯一地識別向量友善指令格式,且因此在指令流發
出向量友善指令格式之指令。就其真正意義來說,在不需要僅具有一般向量友善指令格式之指令集的情況下,此欄位為選項的。
基本(base)操作欄位1542-其內容區別不同的基本操作。
暫存器索引(index)欄位1544-其內容直接地或透過位址產生而指明在暫存器或記憶體中來源及指定運算元之位置。這些包含足夠數量的位元以從PxQ(例如32x512,16x128,32x1024,64x1024)個暫存器檔案中選擇N個暫存器。雖然於一實施例中,N可多至三個來源及一個指定暫存器,替代實施例可支持更多或更少來源及指定暫存器(例如,可支持多至兩個來源,其中一個亦作用為目的地;可支持多至兩個來源及一個目的地)。
修改符欄位1546-其內容區別一般向量指令格式之指令的發出,其指明自那些不會者的記憶體存取;亦即,無記憶體存取1505指令範本及記憶體存取1520指令範本之間。記憶體存取操作讀取及/或寫入記憶體階層(於某些情形,使用暫存器中的值來指明來源及/或指定位址),而無記憶體存取操作則否(例如,來源及目的地為暫存器)。雖然於一實施例中,此欄位亦在三種不同的方式中選擇以執行記憶體位址計算,替代實施例可支持更多、更少、或不同的方式以執行記憶體位址計算。
增益操作欄位1550-其內容區別除了基本操作以外,各種各樣的不同的操作中之何者將被執行。此欄位為內文
特定的。於本發明一實施例中,此欄位被區分成類別欄位1568、alpha欄位1552、及beta欄位1554。增益操作欄位1550允許共同群組之將被執行的操作於單一指令,2、3、或4個指令則否。
定比(scaling)欄位1560-其內容允許用於記憶體位址產生之用於索引欄位的內容之定比(例如,用於使用2scale * index+base之位址產生)。
位移(displacement)欄位1562A-其內容係用於部分的記憶體位址產生(例如,用於使用2scale * index+base+displacement之位址產生)。
位移因子欄位1562B(注意,直接在位移因子欄位1562B之上的位移欄位1562A的並列表示其中一者係被使用)-其內容係用於部分的位址產生;其指明由記憶體存取之尺寸(N)所定比的一位移因子-其中N為記憶體存取中之位元組的數量(例如,用於使用2scale * index+base+scaled displacement之位址產生)。冗餘低階位元被忽略且因而位移因子欄位的內容係乘上記憶體運算元總尺寸(N)以產生將被使用以計算有效位址之最終位移。N的值係由處理器硬體在運行時間根據整個運算碼欄位1574(稍後說明)及資料調處欄位1554C來決定。在非為使用於無記憶體存取1505指令範本及/或不同的實施例可實現兩者中之僅一者或沒有的情況下,位移欄位1562A及位移因子欄位1562B為選項的。
資料元寬度欄位1564-其內容區別一些資料元寬度中
之何者將被使用(於一些實施例係對於所有指令;於其他實施例係對於僅一些指令)。在若僅一個資料元寬度被支持及/或資料元寬度係使用其他態樣的運算碼而被支持的情況下,其係非需要的,此欄位為選項的。
寫入遮罩欄位1570-其內容控制(在以每資料元位置的基礎下)於指定向量運算元之資料元位置是否反映基本操作及增益操作的結果。A類別指令範本支持合併寫入遮蔽(merging-writemasking)、而B類別指令範本支持合併及歸零寫入遮蔽。當合併時,向量遮罩允許目的地中任何組的元在任何操作(由基本操作及增益操作所指明)的執行期間被保護;於其他實施例,當對應的遮罩位元具有0時,保留目的地的各元之舊值。相反的,當歸零向量遮罩允許目的地中任何組的元在任何操作(由基本操作及增益操作所指明)的執行期間被歸零;於一實施例,當對應的遮罩位元具有0值時,目的地的元被設為0。此功能的子集為控制被執行的操作之向量長度的能力(亦即,被修改的元之跨距(span),從第一到最後);然而,被修改的元並非一定要是連續的。因此,寫入遮罩欄位1570允許部分的向量操作,包含載入、儲存、算術、邏輯等。雖然本發明之實施例係說明寫入遮罩欄位1570的內容選擇一些包含將被使用的寫入遮罩之寫入遮罩暫存器之其中一者(且因此寫入遮罩欄位1570的內容間接地識別該將被執行的遮蔽),替代實施例替代的或額外的允許遮罩寫入欄位1570的內容直接指明將被執行的遮蔽。
立即(immediate)欄位1572-其內容允許立即的說明。在其不存在於不支持立即的一般向量友善格式之實現及不存在於不使用立即的指令的情況下,此欄位為選項的。
類別欄位1568-其內容區別不同的類別之間的指令。參考第15A-B圖,此欄位的內容選擇A類別及B類別指令。於第15A-B圖,角落為圓形的方形係使用以表示欄位中存在一特定值(例如,分別於第15A-B圖中用於類別欄位1568之A類別1568A及B類別1568B)。
在A類別的非記憶體存取1505指令範本中,alpha欄位1552係被解譯為RS欄位1552A,其內容區別不同的增益操作類型中之何者將被執行(例如,修整(round)1552A.1及資料轉換1552A.2係分別指明無記憶體存取、修整類型操作1510及無記憶體存取、資料轉換類型操作1515指令範本),而beta欄位1554區別指明的類型之操作中的何者將被執行。於無記憶體存取1505指令範本中,定比欄位1560、位移欄位1562A、及位移定比欄位1562B並不存在。
於無記憶體存取完整修整控制類型操作1510指令範本,beta欄位1554係被解譯為修整控制欄位1554A,其
內容提供靜態修整(static rounding)。雖然本發明說明實施例的修整控制欄位1554A包含抑制所有浮點例外(Suppress All floating point Exceptions;SAE)欄位1556及修整操作控制欄位1558,替代實施例可支持可編碼這些概念於相同欄位或僅具有一個或其他的這些概念/欄位(例如,可僅具有修整操作控制欄位1558)。
SAE欄位1556-其內容區別是否取消(disable)例外事件報告;當SAE欄位1556的內容表示抑制是可進行的(enabled),給定指令不報告任何類型的浮點例外旗標且不提出任何浮點例外處理器。
修整操作控制欄位1558-其內容區別執行修整操作的群組中之何者(例如,捨進(Round-up)、捨位(Round-down)、向零方向捨入(Round-towards-zero)、及向最近者做進位(Round-to-nearest)。因此,修整操作控制欄位1558允許修整模式的改變(在依據指令的基礎下(per instruction basis))。於本發明之處理器包含用以指明修整模的控制暫存器的一實施例中,修整操作控制欄位1550的內容置換(override)暫存器值。
於無記憶體存取資料轉換類型操作1515指令範本,beta欄位1554係被解譯為資料轉換欄位1554B,其內容區別一些資料轉換中之何者將被執行(例如,無資料轉換、拌和(swizzle)、廣播(broadcast)。
於A類別的記憶體存取1520指令範本的情形下,alpha欄位1552係被解譯為趕出提示(eviction hint)欄位1552B,其內容區別趕出提示中之何者將被使用(於第15A圖,時間性(temporal)1552B.1及非時間性(non-temporal)1552B.2係分別指明記憶體存取、時間性1525指令範本及記憶體存取、非時間性1530指令範本),而beta欄位1554係被解譯為資料調處欄位1554C,其內容區別一些資料調處操作(亦已知為原指令(primitive))中之何者將被執行(例如,無調處;廣播;來源的上轉換(up conversion);及目的地的下轉換(down conversion)。記憶體存取1520指令範本包含定比欄位1560及選項的位移欄位1562A或位移定比欄位1562B。
偕同轉換支持,向量記憶體指令執行來自記憶體的向量負載或執行向量儲存至記憶體。如同正規(regular)向量指令的情形,向量記憶體指令以資料元式(data element-wise)從記憶體轉移資料或轉移資料至記憶體,偕同實際被轉移的資料元係由被選擇為寫入遮罩的向量遮罩之內容所規定(dictate)。
時間性資料為很可能將很快被再使用而有益於快取的資料。然而,此為一提示,且不同的處理器可以不同的方式將其實現,包含完全忽略該提示。
非時間性資料為不可能很快被再使用而有益於第一階快取之快取且應被給予趕出優先的資料。然而,此為一提示,且不同的處理器可以不同的方式將其實現,包含完全忽略該提示。
在B類別的指令範本之情形中,alpha欄位1552係被解譯為寫入遮罩控制(Z)欄位1552C,其內容區別由寫入遮罩欄位1570所控制的寫入遮蔽是否應為合併或歸零。
在B類別的非記憶體存取1505指令範本的情形中,部分的beta欄位1554係被解譯為RL欄位1557A,其內容區別不同的增益操作類型中之何者將被執行(例如,修整(round)1557A.1及向量長度(VSIZE)1557A.2係分別指明無記憶體存取、寫入遮罩控制、部份修整控制類型操作1512指令範本及無記憶體存取、寫入遮罩控制、VSIZE類型操作1517指令範本),而其餘的beta欄位1554區別指明的類型之操作中的何者將被執行。於無記憶體存取1505指令範本中,定比欄位1560、位移欄位1562A、及位移定比欄位1562B並不存在。
於無記憶體存取、寫入遮罩控制、部份修整控制類型操作1510指令範本中,其餘的beta欄位1554係被解譯為修整操作欄位1559A且例外事件報告係被取消(給定指令
不報告任何類型的浮點例外旗標且不提出任何浮點例外處理器)。
修整操作控制欄位1559A-就像是修整操作控制欄位1558,其內容區別執行修整操作的群組中之何者(例如,捨進、捨位、向零方向捨入、及向最近者做進位。因此,修整操作控制欄位1559A允許修整模式的改變(在依據指令的基礎下)。於本發明之處理器包含用以指明修整模的控制暫存器的一實施例中,修整操作控制欄位1550的內容置換暫存器值。
於無記憶體存取、寫入遮罩控制、VSIZE類型操作1517指令範本中,其餘的beta欄位1554係被解譯為向量長度欄位1559B,其內容區別一些資料向量長度中之何者將被執行(例如,128、256、或512位元組)。
在B類別記憶體存取1520指令範本之情形中,部分的beta欄位1554係被解譯為廣播欄位1557B,其內容區別廣播類型資料調處操作是否將被執行,而其餘的beta欄位1554係被解譯為向量長度欄位1559B。記憶體存取1520指令範本包含定比欄位1560、及選項的位移欄位1562A或位移定比欄位1562B。
關於一般向量友善指令格式1500,完整運算碼欄位1574係顯示包含格式欄位1540、基本操作欄位1542、及資料元寬度欄位1564。雖然一實施例係顯示其中完整運算碼欄位1574包含所有的這些欄位,然而,完整運算碼欄位1574可包含少於並不支持其全部之實施例中的所有這
些欄位。完整運算碼欄位1574提供操作碼(運算碼)。
增益操作欄位1550、資料元寬度欄位1564、及寫入遮罩欄位1570允許這些特徵在根據指令的基礎下被指明於一般向量友善指令格式。
寫入遮罩欄位及資料元寬度欄位的結合建立類型的指令,其中其允許遮罩根據不同的資料元寬度被應用。
A類別及B類別的許多指令範本在不同的情況下為有利的。在本發明之某些實施例中,不同的處理器或處理器內之不同的核心可支持僅A類別、僅B類別、或兩種類別皆可。舉例來說,打算用於通用計算之高效能一般目的失序(out-of-order)核心可支持僅B類別、主要打算用於圖形及/或科學(處理量)計算之核心可支持僅A類別、且打算用於兩者的核心可支持兩者(當然,具有某些來自兩種類別之範本及指令(但非來自兩種類別之所有範本及指令)的混合係在本發明之範圍內)。同樣的,單一處理器可包含多個核心,其所有皆支持相同的類別或其中不同的核心支持不同的類別。舉例來說,在具有分開的圖形及一般目的核心處理器中,主要打算用於圖形及/或科學計算的其中一圖形核心可支持僅A類別,而一或多個一般目的核心可為打算用於通用計算具有失序執行及暫存器更名之高效能一般目的核心可支持僅B類別。不具有分開的圖形核心之另一處理器可包含一或多個一般目的按序(in-order)或失序核心,其支持A類別及B類別兩者。當然,一類別的特徵可亦被實現於本發明不同的實施例中之
其他類別。以高階語言撰寫的程式將被編譯成(例如,僅以時間編譯(time compiled)或靜態編譯(statically compiled))各種不同的可執行的形式,包含:1)僅具有由用於執行之目標處理器所支持的類別之指令的形式;或2)具有使用不同的所有類別的指令之組合所寫入的替代常式且具有選擇常式以根據正在執行該碼之處理器所支持的指令來執行之控制流碼之形式。
第16圖為說明根據本發明之實施例的範例特定向量友善指令格式之方塊圖。第16圖顯示特定向量友善指令格式1600,其係特定於指明欄位之位置、尺寸、註釋、及次序,以及其中某些欄位的值。特定向量友善指令格式1600可被使用以延伸x86指令集,且因此某些欄位相似或相同於使用於現有x86指令集及其延伸(例如,AVX)中之欄位。此格式仍與現有x86指令集及延伸之前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。第16圖之欄位對映的第15圖之欄位已被說明。
應了解的是,雖然本發明之實施例為了說明的目的參考一般向量友善指令格式1500之內容來說明特定向量友善指令格式1600,本發明並不限於特定向量友善指令格式1600,除非另有說明。舉例來說,一般向量友善指令格式1500對於各種欄位考量許多可能的尺寸,而特定向量友善
指令格式1600係顯示為具有特定尺寸的欄位。經由特定範例,雖然資料元寬度欄位1564係說明為一個位元欄位於特定向量友善指令格式1600,本發明並不受限於此(亦即,一般向量友善指令格式1500考量其他尺寸的資料元寬度欄位1564)。
一般向量友善指令格式1500包含以下欄位,其以第16A圖所說明的順序列出。
EVEX前置(位元組0-3)1602-係以四個位元組的形式來編碼。
格式欄位1540(EVEX位元組0,位元〔7:0〕)-第一位元組(EVEX位元組0)為格式欄位1540,且其包含0x62(被使用以區別本發明之一實施例中的向量友善指令格式之唯一值)。
第二至第四位元組(EVEX位元組1-3)包含提供特定作用的一些位元欄位。
REX欄位1605(EVEX位元組1,位元〔7-5〕)-由EVEX.R位元欄位(EVEX位元組1,位元〔7〕-R)、EVEX.X位元欄位(EVEX位元組1,位元〔6〕-X)、及1557BEX位元組1,位元〔5〕-B)組成。EVEX.R、EVEX.X、及EVEX.B位元欄位提供如同對應的VEX位元欄位之相同的功能,且係被使用1的補數形式(1s complement form)而編碼,亦即ZMM0係被編碼成1111B、ZMM15係被編碼成0000B。指令的其他欄位如該領域所熟知者將暫存器索引之較低三個位元編碼(rrr,
xxx,bbb),使得Rrrr,Xxxx,Bbbb可藉由加入EVEX.R,EVEX.X,EVEX.B被形成。
REX’欄位1510-此為REX’欄位1510之第一部份且為EVEX.R’位元欄位(EVEX位元組1,位元〔4〕-R’),其係被使用以編碼較高16或較低16個延伸的32個暫存器組。於本發明之一實施例,此位元(連同以下所表示的其他位元)係以位元反向格式(bit inverted format)被儲存以區別(於已知x86 32位元模式中)BOUND指令,其真實運算碼位元組為62,但不接受MOD R/M欄位(稍後說明)11的值於MOD欄位;本發明之替代實施例不儲存此位元及其他以反向格式表示的位元。1的值係被使用以編碼較低16個暫存器。換句話說,R’Rrrr係藉由結合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而被形成。
運算碼映射欄位1615(EVEX位元組1,位元〔3:0〕-mmmm)-其內容編碼隱含引導運算碼位元組(0F,0F38,或0F 3)。
資料元寬度欄位1564(EVEX位元組2,位元〔7〕-W)-係由表示法EVEX.W來表示。EVEX.W係被使用以界定資料類型(32位元資料元或64位元資料元)之粒度(尺寸)。
EVEX.vvvv 1620(EVEX位元組2,位元〔6:3〕-vvvv)-EVEX.vvvv的任務可包含以下所列者:1)EVEX.vvvv編碼第一來源暫存器運算元,以反向的形式
(1的補數)來表示且對於具有2或更多來源運算元之指令也是有效的;2)EVEX.vvvv編碼指定暫存器運算元,對於特定向量偏移以1的補數形式表示;或3)EVEX.vvvv不編碼任何運算元,該欄位被保留且應包含1111b。因此,EVEX.vvvv欄位1620編碼以反向形式(1的補數)儲存的第一來源暫存器說明符之4個低階位元。根據該指令,額外的不同的EVEX位元欄位係被使用以延伸說明符尺寸至32個暫存器。
EVEX.U 1568類別欄位(EVEX位元組2,位元〔2〕-U)-若EVEX.U=0,則其表示A類別或EVEX.U0;若EVEX.U=1,則其表示B類別或EVEX.U1。
前置編碼欄位1625(EVEX位元組2,位元〔1:0〕-pp)-對基本操作欄位提供額外的位元。除了對EVEX前置格式的舊有(legacy)SSE指令提供支持,其亦有助於簡潔SIMD前置(而不需一位元組以表示SIMD前置,EVEX前置僅需要2位元)。於一實施例,為了支持使用舊有格式及EVEX前置格式的SIMD前置(66H,F2H,F3H)之舊有SSE指令,這些舊有SIMD前置被編碼成SIMD前置編碼欄位;且在被提供至解碼器的PLA之前,在運行時間係被擴展成舊有SIMD前置(故PLA可執行這些舊有指令的舊有及EVEX格式而不需修改)。雖然較新的指令可直接使用EVEX前置編碼欄位的內容作為運算碼延伸,特定實施例以相似方式擴展以達成一致性,但允許不同的意義被這些舊有SIMD前置所指明。替代實施例可
重新設計PLA以支持2位元SIMD前置編碼,且因此不需要該延伸。
Alpha欄位1552(EVEX位元組3,位元〔7〕-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α表示)-如前所述,此欄位為內文特定的。
Beta欄位1554(EVEX位元組3,位元〔6:4〕-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ表示)-如前所述,此欄位為內文特定的。
REX’欄位1510-此為REX’欄位之餘項且為EVEX.V’位元欄位(EVEX位元組3,位元〔3〕-V’),其可被使用以編碼較高16或較低16個延伸的32個暫存器組。此位元係以位元反向格式儲存。1的值係被使用以編碼較低16個暫存器。換句話說,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位1570(EVEX位元組3,位元〔2:0〕-kkk)-其內容指明寫入遮罩暫存器中之暫存器的索引,如前所述者。於本發明之一實施例,特定值EVEX.kkk=000具有特別的表現,暗示無寫入遮罩被使用於特定指令(此可被實現於許多方式,包含使用硬接線(hardwired)至全部者之寫入遮罩或略過(bypass)遮蔽硬體之硬體)。
真實運算碼欄位1630(位元組4)亦已知為運算碼位元組。部份的運算碼係被指明於此欄位。
MOD R/M欄位1640(位元組5)包含MOD欄位1642、Reg欄位1644、及R/M欄位1646。如前所述,MOD欄位1642的內容區別記憶體存取及非記憶體存取操作。Reg欄位1644的任務可被概述為兩種情況:編碼指定暫存器運算元或來源暫存器運算元、或被視為運算碼延伸且不使用以編碼任何指令運算元。R/M欄位1646之任務可包含以下所列者:編碼參照記憶體位址之指令運算元,或編碼指定暫存器運算元或來源暫存器運算元。
定比、索引、基本(SIB)位元組(位元組6)-如前所述,定比欄位1550的內容係被使用於記憶體位址產生。SIB.xxx 1654及SIB.bbb 1656-這些欄位的內容已於先前參照關於暫存器索引Xxxx及Bbbb。
位移欄位1562A(位元組7-10)-當MOD欄位1642包含10時,位元組7-10為位移欄位1562A,且其作用相同於舊有32位元位移(disp32)且以位元組粒度作用。
位移因子欄位1562B(位元組7)-當MOD欄位1642包含01時,位元組7為位移因子欄位1562B。此欄位的位置相同於舊有x86指令集8位元位移(disp8),其以位元組粒度作用。由於disp8係符號延伸的(sign extended)其僅可在-128及127位元組偏位之間定址;根據64位元組快取列,disp8使用8位元,其可被設定為僅四個真的有用的值-128,-64,0,64;由於通常需要較大範圍,disp32係被使用;然而,disp32需要4個位元組。與disp8及disp32相比,位移因子欄位1562B為disp8之重
新解釋(reinterpretation);當使用位移因子欄位1562B時,實際位移係藉由位移因子欄位乘上記憶體運算元存取(N)之尺寸的內容而被決定。此類型的位移被稱為disp8*N。此降低平均指令長度(使用於位移之單一位元組但具有大的多之範圍)。此壓縮的位移係根據假設有效的位移為記憶體存取之粒度的倍數,且因此,位址偏位之冗餘低階位元不需要被編碼。換句話說,位移因子欄位1562B取代舊有x86指令集8位元位移。因此,位移因子欄位1562B以與x86指令集8位元位移同樣的方式被編碼(故ModRM/SIB編碼規則沒有改變),唯一例外是disp8超負載至disp8*N。換句話說,編碼規則或編碼長度沒有藉由硬體(其需要記憶體運算元之尺寸來定比該位移以取得位元組式(byte-wise)位址偏位)來改變但僅在位移值之註釋有改變。
立即欄位1572如前所述來操作。
第16B圖為說明根據本發明一實施例之組成完整運算碼欄位1574之特定向量友善指令格式1600之欄位之方塊圖。具體言之,完整運算碼欄位1574包含格式欄位1540、基本操作欄位1542、及資料元寬度(W)欄位1564。基本操作欄位1542包含前置編碼欄位1625、運算碼映射欄位1615、及真實運算碼欄位1630。
第16C圖為說明根據本發明一實施例之組成暫存器索引欄位1544之特定向量友善指令格式1600之欄位之方塊圖。具體言之,暫存器索引欄位1544包含REX欄位1605、REX’欄位1610、MODR/M.reg欄位1644、MODR/M.r/m欄位1646、VVVV欄位1620、xxx欄位1654、及bbb欄位1656。
第16D圖為說明根據本發明一實施例之組成增益操作欄位1550之特定向量友善指令格式1600之欄位之方塊圖。當類別(U)欄位1568包含0時,其表明EVEX.U0(A類別1568A);當其包含1時,其表明EVEX.U1(B類別1568B)。當U=0且MOD欄位1642包含11(表明無記憶體存取操作)時,alpha欄位1552(EVEX位元組3,位元〔7〕-EH)係被解譯為rs欄位1552A。當rs欄位1552A包含1(修整1552A.1)時,beta欄位1554(EVEX位元組3,位元〔6:4〕-SSS)係被解譯為修整控制欄位1554A。修整控制欄位1554A包含一個位元SAE欄位1556及兩個位元修整操作欄位1558。當rs欄位1552A包含0(資料轉換1552A.2)時,beta欄位1554(EVEX位元組3,位元〔6:4〕-SSS)係被解譯為三個位元資料轉換欄位1554B。當U=0且MOD欄位1642包含00、01、或10(表明記憶體存取操作)時,alpha欄位1552
(EVEX位元組3,位元〔7〕-EH)係被解譯為趕出提示(EH)欄位1552B且beta欄位1554(EVEX位元組3,位元〔6:4〕-SSS)係被解譯為三個位元資料調處欄位1554C。
當U=1,alpha欄位1552(EVEX位元組3,位元〔7〕-EH)係被解譯為寫入遮罩控制(Z)欄位1552C。當U=1且MOD欄位1642包含11(表明無記憶體存取操作)時,部分的beta欄位1554(EVEX位元組3,位元〔4〕-S0)係被解譯為RL欄位1557A;當其包含1(修整1557A.1)時,其餘的beta欄位1554(EVEX位元組3,位元〔6-5〕-S2-1)係被解譯為修整操作欄位1559A,而當RL欄位1557A包含0(VSIZE 1557.A2)時,其餘的beta欄位1554(EVEX位元組3,位元〔6-5〕-S2-1)係被解譯為向量長度欄位1559B(EVEX位元組3,位元〔6-5〕-L1-0)。當U=1且MOD欄位1642包含00、01、或10(表明記憶體存取操作)時,beta欄位1554(EVEX位元組3,位元〔6:4〕-SSS)係被解譯為向量長度欄位1559B(EVEX位元組3,位元〔6-5〕-L1-0)及廣播欄位1557B(EVEX位元組3,位元〔4〕-B)。
第17圖為根據本發明一實施例之暫存器架構1700的方塊圖。於所說明的實施例中,有512位元寬的32個向量暫存器1710;這些暫存器參照zmm0至zmm31。較低
的16個zmm暫存器之較低階的256位元係覆蓋於暫存器ymm0-16上。較低的16個zmm暫存器之較低階的128位元(暫存器之較低階的128位元)係覆蓋於暫存器xmm0-15上。特定向量友善指令格式1600操作於這些覆蓋暫存器檔案如下表所說明。
換句話說,向量長度欄位1559B在最大長度與一或多個其他較短的長度之間選擇,其中各較短的長度為前面的長度之一半;且不包含向量長度欄位1559B之指令範本操作於最大向量長度。再者,於一實施例,特定向量友善指令格式1600之B類別指令範本操作於緊密的或純量單/雙精度浮點資料及緊密的或純量整數資料。純量操作為執行於zmm/ymm/xmm暫存器中之最低階資料元位置之操作;較高階資料元位置根據實施例係與在指令之前者一樣或歸零。
寫入遮罩暫存器1715-於所說明的實施例中,有8個
寫入遮罩暫存器(k0至k7),尺寸為64位元。於一替代實施例,寫入遮罩暫存器1715的尺寸為16位元。如前所述,於本發明之一實施例,向量遮罩暫存器k0無法被使用作為寫入遮罩;當一般表示k0的編碼係被使用作為寫入遮罩時,其選擇硬接線的寫入遮罩0xFFFF,有效地對於該指令取消寫入遮蔽。
通用暫存器1725-於所說明的實施例中,有十六個64位元通用暫存器,其係與現有x86定址模式一起被使用以定址記憶體運算元。這些暫存器係參照名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)1745,其更名MMX緊縮整數平坦(packed integer flat)暫存器檔案1750-於所說明的實施例中,x87堆疊為使用x87指令集延伸之使用以執行純量浮點操作於32/64/80位元浮點資料的八元(eight-element)堆疊;而MMX暫存器係被使用以執行操作於64位元緊縮整數資料,以及對於MMX及XMM暫存器間執行的某些操作保持運算元。
本發明之替代實施例可使用較寬或較窄的暫存器。此外,本發明之替代實施例可使用較多、較少、或不同的暫存器檔案及暫存器。
處理器核心可用不同的方式、根據不同的目的、及在
不同的處理器中來實現。舉例來說,此等核心的實現可包含:1)打算用於通用計算之一般目的按序核心;2)打算用於通用計算之高效能一般目的失序核心;3)打算主要用於圖形及/或科學(處理量)計算之特殊目的核心。不同的處理器之實現可包含:1)包含打算用於通用計算之一或多個一般目的按序核心及/或打算用於通用計算之一或多個一般目的失序核心之CPU;及2)包含打算主要用於圖形及/或科學(處理量)計算之一或多個特殊目的核心之共處理器。此不同的處理器導致不同的電腦系統架構,其可包含:1)於CPU分開的晶片上之共處理器;2)與CPU相同的封裝之分開的晶粒上之共處理器;3)與CPU在相同的晶粒上之共處理器(於此情形,此共處理器有時被稱為特殊目的邏輯,例如積體圖形及/或科學(處理量)邏輯、或稱為特殊目的核心);及4)晶片上之系統,其可包含與所述CPU於相同的晶粒上(有時稱為應用核心(application core)或應用處理器)、上述共處理器、及額外的功能。範例核心架構將接著說明,然後是範例處理器及電腦架構的說明。
第18A圖為說明根據本發明之實施例的範例循序管線及範例暫存器更名、故障事件/執行管線兩者之方塊圖。第18B圖為說明根據本發明之實施例的包含於處理器中之
按序架構核心及範例暫存器更名、故障事件/執行架構核心之方塊圖。第18A-B圖中的實線方塊說明循序管線及按序核心,而選項的額外的虛線方塊說明暫存器更名、故障事件/執行管線及核心。按序態樣為失序態樣的子集,失序態樣將被說明。
於第18A圖,處理器管線1800包含擷取階段1802、長度解碼階段1804、解碼階段1806、分配階段1808、更名階段1810、排程(亦已知為配送或發出)階段1812、暫存器讀取/記憶體讀取階段1814、執行階段1816、回寫(write back)/記憶體寫入階段1818、例外處置階段1822、及確定階段1824。
第18B圖顯示包含耦接至執行引擎單元1850之前端單元1830(兩者皆耦接至記憶體單元1870)之處理器核心1890。核心1890可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或混合或替代核心類型。於另一選項,核心1890可為特殊目的核心,例如,舉例來說,網路或通訊核心、壓縮引擎、共處理器核心、一般目的計算圖形處理單元(General Purpose Computing Graphics Processing Unit;GPGPU)核心、圖形核心、或類似者。
前端單元1830包含耦接至指令快取單元1834之分支預測單元1832,指令快取單元1834係耦接至指令轉譯後備緩衝區(Translation Lookaside Buffer;TLB)1836,TLB 1836係耦接至指令提取單元1838,指令提取單元
1838係耦接至解碼單元1840。解碼單元1840(或解碼器)可解碼指令並產生為輸出一或多個微操作、微式碼進入點、微指令、其他指令、或其他控制訊號,其係從原始指令解碼、或反映原始指令、或從原始指令導出。解碼單元1840可使用各種不同的機構來實現。合適的機構之範例包含(但不限於)檢查表、硬體實現、可程式化邏輯陣列(Programmable Logic Array;PLA)、微碼唯讀記憶體(ROM)等。於一實施例,核心1890包含微碼ROM或儲存微碼以用於特定巨集指令之其他媒體(例如,於解碼單元1840或另外在前端單元1830內)。解碼單元1840係耦接至執行引擎單元1850中之更名/分配器單元1852。
執行引擎單元1850包含耦接至引退單元1854及一組一或多個排程器單元1856之更名/分配器單元1852。排程器單元1856表示任何數量之不同的排程器,包含保留站(reservations stations)、中央指令視窗(central instruction window)等。排程器單元1856係耦接至實體暫存器檔案單元1858。各實體暫存器檔案單元1858表示一或多個實體暫存器檔案,不同的實體暫存器檔案儲存一或多個不同的資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,將被執行的下一個指令之位址的指令指標)等。於一實施例,實體暫存器檔案單元1858包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及一般目的暫
存器。實體暫存器檔案單元1858被引退單元1854所重疊以說明多種方式,其中暫存器更名及失序執行可被實現(例如,使用重排緩衝器及引退暫存器檔案;使用未來檔案(future file)、歷史緩衝器、及引退暫存器檔案;使用暫存器圖(register map)及許多的暫存器;等)。引退單元1854及實體暫存器檔案單元1858係耦接至執行叢集1860。執行叢集1860包含一組一或多個執行單元1862及一組一或多個記憶體存取單元1864。執行單元1862可執行許多操作(例如,偏移、加、減、乘)及於許多類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包含專屬於特定功能或功能組之一些執行單元,其他實施例可包含僅一個或多個全部執行全部功能之執行單元。排程器單元1856、實體暫存器檔案單元1858、及執行叢集1860被顯示為可能為複數個,因為特定實施例對於特定類型的資料/操作(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有其本身排程器單元、實體暫存器檔案單元及/或執行叢集-且在分開的記憶體存取管線的情形中,其中僅此管線之執行叢集具有記憶體存取單元1864之特定實施例係被實現)建立分開的管線。亦應了解的是,在分開的管線被使用的情形下,這些管線中之一或多個可為失序發出/執行且其餘者為按序。
此組記憶體存取單元1864係耦接至記憶體單元
1870,其包含資料TLB單元1872,資料TLB單元1872耦接至資料快取單元1874,資料快取單元1874耦接至第2層(L2)快取單元1876。於一範例實施例,記憶體存取單元1864可包含載入單元、儲存位址單元、儲存資料單元,各者係耦接至記憶體單元1870中之資料TLB單元1872。指令快取單元1834更耦接至記憶體單元1870中之第2層(L2)快取單元1876。L2快取單元1876係耦接至一或多個其他層的快取且最後耦接至主記憶體。
舉例來說,範例暫存器更名、故障事件/執行核心架構可如下所述實現管線1800:1)指令擷取1838執行擷取及長度編碼階段1802及1804;2)解碼單元1840執行解碼階段1806;3)更名/分配器單元1852執行分配階段1808及更名階段1810;4)排程器單元1856執行排程階段1812;5)實體暫存器檔案單元1858及記憶體單元1870執行暫存器讀取/記憶體讀取階段1814;執行叢集1860執行執行階段1816;6)記憶體單元1870及實體暫存器檔案單元1858執行回寫/記憶體寫入階段1818;7)許多單元可被包含於例外處置階段1822;及8)引退單元1854及實體暫存器檔案單元1858執行確定階段1824。
核心1890可支持一或多個指令集(例如,x86指令集(偕同一些已被以新的版本加入的延伸);位於美國Sunnyvale,CA的MIPS Technologies公司之MIPS指令集;位於美國Sunnyvale,CA的ARM Holdings公司之ARM指令集(偕同選項的額外的延伸,例如NEON),包
含文中所述之指令。於一實施例,核心1890包含邏輯以支持緊縮資料指令集延伸(例如,AVX1,AVX2),因而允許由許多多媒體應用程式所使用的操作將被使用緊縮資料來執行。
應了解的是,核心可支持多緒(multithreading)(執行二或更多平行組的操作或緒),且可於許多方式中如此操作,包含分時多緒、同時多緒(其中單一實體核心對各緒提供一邏輯核心,實體核心係同時多緒)、或其組合(例如,分時擷取及解碼及其後同時多緒,例如Intel®的Hyperthreading技術)。
雖然暫存器更名係於失序執行的說明中說明,應了解的是,暫存器更名可被使用於按序架構。雖然所說明的處理器之實施例亦包含分開的指令及資料快取單元1834/1874及共享的L2快取單元1876,替代實施例可具有單一內部快取以用於指令及資料兩者,例如,舉例來說,第1層(L1)內部快取、或多層內部快取。於某些實施例,該系統可包含內部快取及外部快取(其係在核心及/或處理器外部)的組合。替代地,所有的快取可在核心及/或處理器外部。
第19A-B圖為說明更多特定範例按序核心架構的方塊圖,其核心可為晶片中數個邏輯區塊(包含相同類型及/或不同的類型之其他核心)中之其中一者。邏輯區塊透過
具有一些固定功能邏輯、邏輯,記憶體I/O介面、及其他需要I/O邏輯(根據應用需求)之高頻寬互連網路(例如,環形網路)來通訊。
第19A圖為根據本發明之實施例的單一處理器核心的方塊圖,連同其與晶片上互連網路1902之連接及連同其第2層(L2)快取1904之本地子集。於一實施例,指令解碼器1900支持偕同緊縮資料指令集延伸之x86指令集。L1快取1906允許純量及向量單元之至快取記憶體的低潛時(low-latency)存取。雖然於一實施例(為了簡化設計)中,純量單元1908及向量單元1910使用分開的暫存器組(分別為純量暫存器1912及向量暫存器1914)且於其間轉移之資料係被寫入至記憶體然後從第1層(L1)快取1906讀回(read back),本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或包含允許在兩個暫存器檔案之間轉移而不需要被回寫及讀回的資料之通訊路徑)。
L2快取1904之本地子集為全域(global)L2快取的一部分,全域L2快取係被區分成分開的本地子集,每個處理器核心有一個。各處理器核心具有直接存取路徑至其L2快取1904本身的本地子集。由處理器核心所讀取的資料係被儲存於其L2快取子集1904且可被快速地存取,與其他處理器核心存取其本身本地L2快取子集平行處理。由處理器核心所寫入的資料係被儲存於其本身L2快取子集1904且若需要,從其他子集清除(flush)。環形網路
確保共享資料的共性(coherency)。環形網路為雙向的,以允許代理器(例如處理器核心、L2快取及其他邏輯區塊)在晶片內彼此通訊。各環形資料路徑在每個方向為1012位元寬。
第19B圖為根據本發明之實施例的第19A圖中之處理器核心的部份之展開圖。第19B圖包含L1快取1904之一部份的L1資料快取1906A,以及更詳細的向量單元1910及向量暫存器1914。具體言之,向量單元1910為16-寬(16-wide)向量處理單元(Vector Processing Unit;VPU)(見16-寬ALU 1928),其執行一或多個整數、單精度浮點、及雙精度浮點指令。VPU支持以拌和單元1920拌和暫存器輸入、以數值轉換單元1922A-B進行數值轉換、及以複製單元1924進行複製於記憶體輸入。寫入遮罩暫存器1926允許斷定向量寫入。
第20圖為根據本發明之實施例的處理器2000之方塊圖,其可具有多於一個的核心、可具有積體記憶體控制器、及可具有積體圖形。第20圖中的實線方塊說明具有單一核心2002A、系統代理器2010、一組一或多個匯流排控制器單元2016之處理器2000,而選項的額外的虛線方塊說明具有多個核心2002A-N、系統代理器單元2010中的一組一或多個積體記憶體控制器單元2014、及特殊目的邏輯2008之替代處理器2000。
因此,處理器2000之不同的實現可包含:1)具有特殊目的邏輯2008之CPU,該特殊目的邏輯2008為積體圖形及/或科學(處理量)邏輯(其可包含一或多個核心)且核心2002A-N為一或多個一般目的核心(例如,一般目的按序核心、一般目的失序核心、及兩者的組合);2)共處理器,其核心2002A-N為大量的打算主要用於圖形及/或科學(處理量)計算之特殊目的核心;及3)共處理器,其核心2002A-N為大量的一般目的按序核心。因此,處理器2000可為通用處理器、共處理器或專用處理器,例如,舉例來說,網路或通訊處理器、壓縮引擎、圖形處理器、一般目的計算圖形處理單元(General Purpose Computing Graphics Processing Unit;GPGPU)核心、高處理量多重整合核心(Many Integrated Core;MIC)共處理器(包含30或更多核心)、內嵌式處理器、或類似者。處理器可被實現於一或多個晶片。處理器2000可為部分的及/或可被實現於一或多個使用任何之一些處理技術的基板,例如,舉例來說,BiCMOS、CMOS、或NMOS。
記憶體階層包含核心內之一或多層之快取、一組或一或多個共享的快取單元2006、及耦接至該組積體記憶體控制器單元2014之外部記憶體(未圖示)。該組共享的快取單元2006可包含一或多個中層快取,例如第2層(L2)、第3層(L3)、第4層(L4)或其他層的快取、最後層快取(Last Level Cache;LLC)、及/或其組合。
雖然於一實施例中環式互連單元2012互連積體圖形邏輯2008、該組共享的快取單元2006、及系統代理器單元2010/積體記憶體控制器單元2014,替代實施例可使用任何數量的已知技術來互連此等單元。於一實施例,一或多個快取單元2006及核心2002-A-N之間的共性係被維持。
於某些實施例,一或多個核心2002A-N能夠進行多緒處理。系統代理器2010包含協調及操作核心2002A-N的那些組件。系統代理器單元2010可包含例如電源控制單元(Power Control Unit;PCU)及顯示單元。
PCU可為或包含調節核心2002A-N及積體圖形邏輯2008之電源狀態所需之邏輯及組件。顯示單元係用以驅動一或多個外部連接的顯示器。
核心2002A-N可為同質的(homogenous)或不同質的(heterogeneous)架構指令集;亦即,二或更多的核心2002A-N能夠執行相同的指令集,而其他者僅能夠執行該指令集或不同的指令集之子集。
第21-24圖為範例電腦架構之方塊圖。所屬技術領域中已知的關於膝上型、桌上型、手持型PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、內嵌式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、行動多媒體播放器、手持裝置、及許多其他電子裝置之其他系
統設計及組態亦合適。通常,能夠結合文中所揭露之處理器及/或其他執行邏輯之許多種類的系統或電子裝置一般為適合的。
現參照第21圖,所顯示者為根據本發明一實施例之系統2100的方塊圖。系統2100可包含一或多個處理器2110、2115,其係耦接至控制器集線器2120。於一實施例中,控制器集線器2120包含圖形記憶體控制器集線器(Graphics Memory Controller Hub;GMCH)2190及輸入/輸出集線器(Input/Output Hub;IOH)2150(其可為分開的晶片);GMCH 2190包含耦接至記憶體2140及共處理器2145之記憶體;IOH 2150係將輸入/輸出(I/O)裝置2160耦接至GMCH 2190。替代地,記憶體及圖型控制器之其中一者或兩者係於處理器(如文中所述)中集成(integrated),記憶體2140及共處理器2145係直接耦接至處理器2110,且控制器集線器2120係與IOH 2150於同一晶片中。
選項的額外的處理器2115係於第21圖中以虛線表示。各處理器2110、2115可包含一或多個文中所述的處理核心且可為某些版本的處理器2000。
記憶體2140可為,舉例來說,動態隨機存取記憶體(DRAM)、相變記憶體(Phase Change Memory;PCM)、或兩者的組合。於至少一個實施例中,控制器集線器2120經由多點分歧匯流排(例如前側匯流排(Frontside Bus;FSB))、點對點介面(例如QuickPath
互連(QuickPath Interconnect;QPI)、或類似連接2195而與處理器2110、2115通訊。
於一實施例,共處理器2145為專用處理器,例如,舉例來說,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器、或類似者。於一實施例,控制器集線器2120可包含積體圖形加速器。
在包含架構的、微架構的、熱的、電源消耗特性、及類似者之指標的度量指標之範圍的方面下,實體資源2110、2115之間可有許多不同。
於一實施例,處理器2110執行控制一般類型的資料處理操作之指令。內嵌於指令中者可為共處理器指令。處理器2110認可這些共處理器指令為應由附接的(attached)共處理器2145所執行之類型。因此,處理器2110發出這些共處理器指令(或表示共處理器指令之控制訊號)於共處理器匯流排或其他互連,至共處理器2145。共處理器2145接收並執行所接收的共處理器指令。
現參照第22圖,所顯示者為根據本發明之實施例的第一更特定的範例系統2200之方塊圖。如第22圖所示,多處理器系統2200為點對點互連系統,且包含經由點對點互連2250耦接之第一處理器2270及第二處理器2280。各處理器2270及2280可為某些版本的處理器2000。於本發明之一實施例,處理器2270及2280係分別為處理器2110及2115,而共處理器2238為共處理器2145。於其他
實施例,處理器2270及2280係分別為處理器2110及共處理器2145。
處理器2270及2280係顯示為分別包含積體記憶體控制器(IMC)單元2272及2282。處理器2270亦包含作為其匯流排控制器單元之點對點(P-P)介面2276及2278;同樣地,第二處理器2280包含P-P介面2286及2288。處理器2270、2280可經由點對點(P-P)介面2250使用P-P介面電路2278、2288來交換資訊。如第22圖所示,IMC 2272及2282耦接處理器至各別的記憶體,也就是記憶體2232及記憶體2234,其可為主記憶體本地地附接至各別處理器的部分。
處理器2270、2280各可與晶片組2290經由個別P-P介面2252、2254使用點對點介面電路2276、2294、2286、2298來交換資訊。晶片組2290可選項地與共處理器2238經由高效能介面2239來交換資訊。於一實施例,共處理器2238為專用處理器,例如,舉例來說,高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器、或類似者。
共享的快取(未圖示)可被包含於其中一處理器中或於兩處理器的外部,但經由P-P互連與該等處理器連接,使得若處理器係被處於低電源模式,處理器之其中一者或兩者的本地快取資訊可被儲存於共享的快取中。
晶片組2290可經由介面2296被耦接至第一匯流排2216。於一實施例,第一匯流排2216可為週邊組件互連
(Peripheral Component Interconnect;PCI)匯流排、或例如PCI Express匯流排之匯流排或另一第三代I/O互連匯流排,雖然本發明之範疇並不限於此。
如第22圖所示,各種I/O裝置2214可被耦接至第一匯流排2216,連同耦接第一匯流排2216至第二匯流排2220之匯流排橋接器2218。於一實施例,一或多個額外的處理器2215(例如共處理器、高處理量MIC處理器、GPGPU的加速器(例如,圖形加速器或數位訊號處理(DSP)單元)、場效可程式化閘極陣列(field programmable gate array)、或任何其他處理器)係耦接至第一匯流排2216。於一實施例,第二匯流排2220可為少腳位(Low Pin Count;LPC)匯流排。許多裝置可被耦接至第二匯流排2220,包含,舉例來說,鍵盤及/或滑鼠2222、通訊裝置2227及儲存單元2228(例如磁碟機或其他大量儲存裝置,於一實施例中,其可包含指令/碼及資料2230)。再者,音訊I/O 2224可被耦接至第二匯流排2220。應注意的是,其他架構是可能的。舉例來說,取代第22圖之點對點架構,系統可實現多點分歧匯流排或其他此架構。
現參照第23圖,所顯示者為根據本發明之實施例的第二更特定的範例系統2300之方塊圖。第22及23圖中相似的元件以相似的元件符號表示,且第22圖之特定態樣已從第23圖中省略,以避免模糊第23圖之其他態樣。
第23圖說明處理器2270、2280可分別包含積體記憶
體及I/O控制邏輯(Control Logic;CL)2272及2282。因此,CL 2272、2282包含積體記憶體控制器單元且包含I/O控制邏輯。第23圖說明不僅記憶體2232、2234耦接至CL 2272、2282,而且I/O裝置2314亦耦接至控制邏輯2272、2282。舊有I/O裝置2315係耦接至晶片組2290。
現參照第24圖,所顯示者為根據本發明之一實施例的SoC 2400之方塊圖。類似於第20圖中的元件係以類似的元件符號表示。同樣的,虛線方塊為進階的SoC之選項的特徵。於第24圖,互連單元2402係耦接至:應用處理器2410,其包含一組一或多個核心202A-N及共享的快取單元2006;系統代理器單元2010;匯流排控制器單元2016;積體記憶體控制器單元2014;一組或一或多個共處理器2420,其可包含積體圖形邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元2430;直接記憶體存取(DMA)單元2432;及顯示單元2440,用於耦接至一或多個外部顯示器。於一實施例,共處理器2420包含專用處理器,例如,舉例來說,網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、內嵌式處理器、或類似者。
本文所揭露的機構之實施例可被實現於硬體、軟體、韌體、或此等實現方式的組合。本發明之實施例可被實現為電腦程式或執行於包含至少一處理器、儲存系統(包含非揮發性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置之可程式化的系統之程式碼。
程式碼(例如第22圖所說明的碼2230)可被應用以輸入指令以執行文中所述之功能並產生輸出資訊。可利用已知方式將輸出資訊應用至一或多個輸出裝置。於此應用,處理系統可包含任何具有例如數位訊號處理器(DSP)、微控制器、特定功能積體電路(Application Specific Integrated Circuit;ASIC)、或微處理器之處理器的系統。
程式碼可被實現於高階程序或物件導向程式語言以與處理系統通訊。若希望的話,程式碼亦可實現於組合或機械語言。事實上,文中所述的機構不限於任何特定程式語言的範疇。在任何情況下,語言可為編譯或解譯語言。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀取媒體之代表性指令來實現,代表性指令表示處理器內的許多邏輯,當其由機器所讀取時,會使機器組合邏輯以執行文中所述技術。此等表示(已知為「IP核心」)可被儲存於實體的(tangible)機器可讀取媒體且被供應至許多消費者或製造設施以載入實際製造邏輯或處理器之製造機器。
此機器可讀取儲存媒體可包含(不限於)非過渡的、實體的由機器或裝置所製造或形成的物件之佈置,包含儲存媒體,例如硬碟、任何其他類型的碟(包含軟碟、光碟、唯讀光碟(Compact Disk Read-Only Memories;CD-ROMs)、可抹寫光碟(Compact Disk Rewritable’s;CD-RWs)、及磁光碟;半導體裝置,例如唯讀記憶體
(ROM)、隨機存取記憶體(RAM),例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式化唯讀記憶體、相變記憶體(PCM)、磁卡或光卡、或適合於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包含非過渡的、實體的機器可讀取媒體,包含指令或包含設計資料,例如硬體描述語言(Hardware Description Language;HDL),其定義結構、電路、裝置、處理器及/或文中所述之系統特徵。此等實施例亦可被稱為程式產品。
在某些情況,指令轉換器可被使用以將指令從來源指令集轉換至目標指令集。舉例來說,指令轉換器可轉譯(例如,使用靜態轉譯、包含動態編譯之動態二進制轉譯)、變形、模仿、或其他,將指令轉換成將由核心所處理的一或多個其他指令。指令轉換器可被實現於軟體、硬體、韌體、或其組合。指令轉換器可為處理器上(on processor)、處理器外(off processor)、部分處理器上部份處理器外。
第25圖為對比使用根據本發明之實施例的軟體指令轉換器以將來源指令集中的二進位指令轉換成目標指令集中的二進位指令之方塊圖。於所說明的實施例,指令轉換器為軟體指令轉換器,雖然替代地,指令轉換器可被實現
於軟體、韌體、硬體、或其各種組合。第25圖顯示高階語言2502的程式可被使用x86編譯器2504來編譯以產生x86二進制碼2506,其可由具有至少一個x86指令集核心的處理器2516本體地(natively)執行。具有至少一個x86指令集核心的處理器2516表示可執行與具有至少一個x86指令集核心之Intel處理器實質相同的功能之任何處理器,其係藉由相容地執行或其他處理(1)Intel x86指令集核心之指令集的實質部份或(2)目標為運行於具有至少一個x86指令集核心之Intel處理器的其他軟體或應用之物件碼版本,以達成與具有至少一個x86指令集核心之Intel處理器實質相同的結果。x86編譯器2504表示能夠產生x86二進制碼2506(例如,物件碼)之編譯器,該x86二進制碼2506可在具有或不具有額外的鏈接處理(linkage processing)之情況下由具有至少一個x86指令集核心之處理器2516所執行。同樣地,第25圖顯示高階語言2502的程式可被使用修改原生指令集編譯器2508來編譯以產生修改原生指令集二進制碼2510,其可由不具有至少一個x86指令集核心的處理器2514((例如,具有執行位於美國Sunnyvale,CA的MIPS Technologies公司之MIPS指令集及/或執行位於美國Sunnyvale,CA的ARM Holdings公司之ARM指令集之核心的處理器)本體地執行。指令轉換器2512係被使用以轉換x86二進制碼2506成為可由不具有x86指令集核心之處理器2514本體地執行之碼。此經轉換的碼不可能與修改原生指令集二進制碼
2510相同,因為能如此之指令轉換器很難製成;然而,經轉換的碼將實現一般操作且由來自修改原生指令集的指令所組成。因此,透過模仿、模擬、或任何其他處理,指令轉換器2512表示軟體、韌體、硬體、或其組合,允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進制碼2506。
說明書及申請專利範圍中,術語「耦接的(coupled)」及/或「連接的(connected)」連同其衍生字已被使用。應了解的是,這些術語並非彼此的同義字。然而,於特定實施例,「連接的(connected)」可被使用以表示二或更多元件係彼此以直接物理或電氣連接。「耦接的(coupled)」可為二或更多元件非直接彼此接觸,但仍彼此共操作(co-operate)或互動。舉例來說,執行單元可透過一或多個介入(intervening)組件與暫存器或解碼器耦接。於圖式中,箭頭係被使用以顯示耦接及/或連接。
於以上說明中,特定細節已被說明以提供實施例的完整了解。然而,其他實施例可在沒有某些的這些特定細節之情況下被實現。本發明之範疇並非由以上所提供的特定範例而僅由後附申請專利範圍所決定。圖式及說明書所說明的所有等效關係係包含於實施例中。在其他實例中,已知電路、結構、裝置、及操作已被顯示於方塊圖形式或(非詳細表示)以避免模糊說明的了解。
雖然操作可被選項地加入該方法及/或自該方法移
除,文中所揭露的特定方法已被以基本形式來顯示及說明。此外,雖然替代實施例可被以不同的順序、結合的特定操作、重複特定操作等來執行特定操作,操作的特定順序可被顯示及/或說明。
特定操作可藉由硬體組件被執行及/或可被體現於機器可執行或電路可執行指令,其可被使用以使得及/或導致以執行該等操作之指令來程式化的硬體組件(例如,處理器、部分的處理器、電路等)。硬體組件可包含通用或專用硬體組件。操作可藉由硬體、軟體、及/或韌體之組合而被執行。硬體組件可包含特別或特定邏輯(例如,潛在地(potentially)與軟體及/或韌體組合之電路),其能夠因應指令(例如,因應由該指令所導出的一或多個微指令或其他控制訊號指令)而執行及/或處理指令且儲存結果。
整個說明書中有關舉例來說「一個實施例」、「一實施例」、「一或多個實施例」、「某些實施例」,表示特定特徵可被包含於本發明之實行但並非必需要者。同樣地,說明書中許多特徵有時會一起組合於單一實施例、圖式、或其說明,以流線化所揭露者即有助於了解各種發明態樣。然而,所揭露之方法並非解釋為反映本發明需要明確地描述於每一申請專利範圍之更多特徵的目的。然而,如以下申請專利範圍所反映者,發明的態樣在於少於單一揭露的實施例之所有特徵。因此,實施方式後附的申請專利範圍係特此結合至實施方式中,且各申請專利範圍本身
為本發明之分開的實施例。
100‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧指令集
103‧‧‧點積指令
104‧‧‧架構暫存器
105‧‧‧緊縮資料暫存器
106‧‧‧遮罩暫存器
107‧‧‧執行邏輯
200‧‧‧指令處理裝置
203‧‧‧點積指令
205‧‧‧緊縮資料暫存器
205-1‧‧‧第一緊縮資料暫存器
205-2‧‧‧第二緊縮資料暫存器
205-3‧‧‧第三緊縮資料暫存器
207‧‧‧執行單元
208‧‧‧解碼器
209‧‧‧點積計算邏輯
210‧‧‧第一來源緊縮資料
211‧‧‧第二來源緊縮資料
212‧‧‧第三來源緊縮資料
213‧‧‧指定儲存位置
315‧‧‧方法
316‧‧‧方塊
317‧‧‧方塊
410‧‧‧第一來源緊縮資料
411‧‧‧第二來源緊縮資料
412‧‧‧結果緊縮資料
415‧‧‧點積操作
510‧‧‧第一來源緊縮資料
511‧‧‧第二來源緊縮資料
512A‧‧‧第一部份
512B‧‧‧第二部份
515‧‧‧點積操作
610‧‧‧第一128位元來源緊縮資料
611‧‧‧第二128位元來源緊縮資料
612‧‧‧結果緊縮資料
615‧‧‧點積操作
710‧‧‧第一128位元來源緊縮資料
711‧‧‧第二128位元來源緊縮資料
712‧‧‧結果緊縮資料
715‧‧‧點積操作
803‧‧‧點積指令
820‧‧‧操作碼或運算碼
821‧‧‧第一來源緊縮資料說明符
822‧‧‧第二來源緊縮資料說明符
823‧‧‧結果緊縮資料說明符
824‧‧‧尺寸說明符
915‧‧‧方法
916‧‧‧方塊
917A‧‧‧方塊
917B‧‧‧方塊
917C‧‧‧方塊
925‧‧‧方塊
926‧‧‧方塊
927‧‧‧方塊
1003‧‧‧點積指令
1020‧‧‧操作碼或運算碼
1021‧‧‧第一來源緊縮資料說明符
1022‧‧‧第二來源緊縮資料說明符
1023‧‧‧結果緊縮資料說明符
1024‧‧‧尺寸說明符
1030‧‧‧遮罩說明符
1031‧‧‧遮罩操作說明符
1106‧‧‧緊縮資料操作遮罩暫存器
1205‧‧‧緊縮資料暫存器
1303‧‧‧點積指令
1335‧‧‧製品
1336‧‧‧機器可讀取儲存媒體
1410‧‧‧第一來源緊縮資料
1411‧‧‧第二來源緊縮資料
1412‧‧‧結果緊縮資料
1412A‧‧‧第一部份
1412B‧‧‧第二部份
1415‧‧‧點積操作
1440‧‧‧大區塊
1441‧‧‧垂直邊
1500‧‧‧一般向量友善指令格式
1505‧‧‧無記憶體存取
1510‧‧‧無記憶體存取、完整修整控制類型操作
1512‧‧‧無記憶體存取、寫入遮罩控制、部份修整控制類型操作
1515‧‧‧無記憶體存取、資料轉換類型操作
1517‧‧‧無記憶體存取、寫入遮罩控制、vsize類型操作
1520‧‧‧記憶體存取
1525‧‧‧記憶體存取、時間性
1527‧‧‧記憶體存取、寫入遮罩控制
1530‧‧‧記憶體存取、非時間性
1540‧‧‧格式欄位
1542‧‧‧基本操作欄位
1544‧‧‧暫存器索引欄位
1546‧‧‧修改符欄位
1546A‧‧‧無記憶體存取
1546B‧‧‧記憶體存取
1550‧‧‧增益操作欄位
1552‧‧‧alpha欄位
1552A‧‧‧RS欄位
1552A.1‧‧‧修整
1552A.2‧‧‧資料轉換
1552B‧‧‧趕出提示欄位
1552B.1‧‧‧時間性
1552B.2‧‧‧非時間性
1552C‧‧‧寫入遮罩控制欄位
1554‧‧‧beta欄位
1554A‧‧‧修整控制欄位
1554B‧‧‧資料轉換欄位
1554C‧‧‧資料調處欄位
1556‧‧‧抑制所有浮點例外欄位
1557A‧‧‧RL欄位
1557A.1‧‧‧修整
1557A.2‧‧‧向量長度
1557B‧‧‧廣播欄位
1558‧‧‧修整操作控制欄位
1559A‧‧‧修整操作欄位
1559B‧‧‧向量長度欄位
1560‧‧‧定比欄位
1562A‧‧‧位移欄位
1562B‧‧‧位移因子欄位
1564‧‧‧資料元寬度欄位
1568‧‧‧類別欄位
1568A‧‧‧A類別
1568B‧‧‧B類別
1570‧‧‧寫入遮罩欄位
1572‧‧‧立即欄位
1574‧‧‧完整運算碼欄位
1600‧‧‧特定向量友善指令格式
1602‧‧‧EVEX前置
1605‧‧‧REX欄位
1610‧‧‧REX’欄位
1615‧‧‧運算碼映射欄位
1620‧‧‧VVVV欄位
1625‧‧‧前置編碼欄位
1630‧‧‧真實運算碼欄位
1640‧‧‧MOD R/M欄位
1642‧‧‧MOD欄位
1644‧‧‧Reg欄位
1646‧‧‧R/M欄位
1654‧‧‧xxx欄位
1656‧‧‧bbb欄位
1700‧‧‧暫存器架構
1710‧‧‧向量暫存器
1715‧‧‧寫入遮罩暫存器
1725‧‧‧通用暫存器
1745‧‧‧純量浮點堆疊暫存器檔案
1750‧‧‧MMX緊縮整數平坦暫存器檔案
1800‧‧‧處理器管線
1802‧‧‧擷取階段
1804‧‧‧長度解碼階段
1806‧‧‧解碼階段
1808‧‧‧分配階段
1810‧‧‧更名階段
1812‧‧‧排程階段
1814‧‧‧暫存器讀取/記憶體讀取階段
1816‧‧‧執行階段
1818‧‧‧回寫/記憶體寫入階段
1822‧‧‧例外處置階段
1824‧‧‧確定階段
1830‧‧‧前端單元
1832‧‧‧分支預測單元
1834‧‧‧指令快取單元
1836‧‧‧指令轉譯後備緩衝區
1838‧‧‧指令提取單元
1840‧‧‧解碼單元
1850‧‧‧執行引擎單元
1852‧‧‧更名/分配器單元
1854‧‧‧引退單元
1856‧‧‧排程器單元
1858‧‧‧實體暫存器檔案單元
1860‧‧‧執行叢集
1862‧‧‧執行單元
1864‧‧‧記憶體存取單元
1870‧‧‧記憶體單元
1872‧‧‧資料TLB單元
1874‧‧‧資料快取單元
1876‧‧‧第2層快取單元
1890‧‧‧處理器核心
1900‧‧‧指令解碼器
1902‧‧‧晶片上互連網路
1904‧‧‧第2層快取之本地子集
1906‧‧‧第1層快取
1906A‧‧‧第1層資料快取
1908‧‧‧純量單元
1910‧‧‧向量單元
1912‧‧‧純量暫存器
1914‧‧‧向量暫存器
1920‧‧‧拌和單元
1922A‧‧‧數值轉換單元
1922B‧‧‧數值轉換單元
1924‧‧‧複製單元
1926‧‧‧寫入遮罩暫存器
1928‧‧‧16-寬ALU
2000‧‧‧處理器
2002A‧‧‧核心
2002N‧‧‧核心
2004A‧‧‧快取單元
2004N‧‧‧快取單元
2006‧‧‧共享的快取單元
2008‧‧‧特殊目的邏輯
2010‧‧‧系統代理器單元
2012‧‧‧環式互連單元
2014‧‧‧積體記憶體控制器單元
2016‧‧‧匯流排控制器單元
2100‧‧‧系統
2110‧‧‧處理器
2115‧‧‧處理器
2120‧‧‧控制器集線器
2140‧‧‧記憶體
2145‧‧‧共處理器
2150‧‧‧輸入/輸出集線器
2160‧‧‧輸入/輸出裝置
2190‧‧‧圖形記憶體控制器集線器
2195‧‧‧連接
2200‧‧‧系統
2214‧‧‧I/O裝置
2215‧‧‧處理器
2216‧‧‧第一匯流排
2218‧‧‧匯流排橋接器
2220‧‧‧第二匯流排
2222‧‧‧鍵盤及/或滑鼠
2224‧‧‧音訊I/O
2227‧‧‧通訊裝置
2228‧‧‧儲存單元
2230‧‧‧碼及資料
2232‧‧‧記憶體
2234‧‧‧記憶體
2238‧‧‧共處理器
2239‧‧‧高效能介面
2250‧‧‧點對點互連
2252‧‧‧P-P介面
2254‧‧‧P-P介面
2270‧‧‧處理器
2272‧‧‧積體記憶體控制器單元
2276‧‧‧P-P介面
2278‧‧‧P-P介面
2280‧‧‧處理器
2282‧‧‧積體記憶體控制器單元
2286‧‧‧P-P介面
2288‧‧‧P-P介面
2290‧‧‧晶片組
2294‧‧‧P-P介面
2296‧‧‧介面
2298‧‧‧P-P介面
2300‧‧‧系統
2314‧‧‧I/O裝置
2315‧‧‧舊有I/O裝置
2400‧‧‧晶片上系統
2402‧‧‧互連單元
2410‧‧‧應用處理器
2420‧‧‧共處理器
2430‧‧‧靜態隨機存取記憶體單元
2432‧‧‧直接記憶體存取單元
2440‧‧‧顯示單元
2502‧‧‧高階語言
2504‧‧‧x86編譯器
2506‧‧‧x86二進制碼
2508‧‧‧修改原生指令集編譯器
2510‧‧‧修改原生指令集二進制碼
2512‧‧‧指令轉換器
2514‧‧‧不具有x86指令集核心的處理器
2516‧‧‧具有至少一個x86指令集核心的處理器
本發明可藉由參考以下說明及用以說明實施例的所附圖式得到最佳理解。圖示中:第1圖為具有包含一或多個點積指令之指令集架構的處理器之實施例的方塊圖。
第2圖為具有可操作以執行包含一或多個實施例的點積指令之指令的執行單元之指令處理裝置的實施例之方塊圖。
第3圖為處理點積指令之實施例的方法之實施例的流程圖。
第4圖為說明點積操作之第一實施例的方塊圖,點積操作可因應第一實施例的點積指令而被執行。
第5圖為說明點積操作之第二實施例的方塊圖,點積操作可因應第二實施例的點積指令而被執行。
第6圖為說明點積操作之第三實施例的方塊圖,點積操作可因應第三實施例的點積指令而被執行。
第7圖為說明點積操作之第四實施例的方塊圖,點積操作可因應第四實施例的點積指令而被執行。
第8圖為用於點積指令之指令格式的實施例之方塊圖。
第9圖為處理具有尺寸說明符之點積指令的實施例之方法的實施例之流程圖。
第10圖為指令格式之實施例的方塊圖,指令格式係用於具有選項的遮罩說明符及選項的遮蔽操作說明符之類型的點積指令。
第11圖為緊縮資料操作遮罩暫存器之合適的集之實施例的方塊圖。
第12圖為緊縮資料暫存器之合適的集之實施例的方塊圖。
第13圖為一製品之方塊圖,製品包含儲存一或多個實施例的點積指令之機器可讀取儲存媒體。
第14A-B圖說明點積指令之實施例應用垂直邊解塊濾波之詳細的範例。
第15A圖為說明根據本發明之實施例的一般向量友善指令格式及其A類別指令範本之方塊圖。
第15B圖為說明根據本發明之實施例的一般向量友善指令格式及其B類別指令範本之方塊圖。
第16A圖為說明根據本發明之實施例的範例特定向量友善指令格式之方塊圖。
第16B圖為說明根據本發明一實施例的特定向量友善指令格式的欄位之方塊圖,其組成完整運算碼欄位。
第16C圖為說明根據本發明一實施例的特定向量友善指令格式的欄位之方塊圖,其組成暫存器索引欄位。
第16D圖為說明根據本發明一實施例的特定向量友善指令格式的欄位之方塊圖,其組成增益操作欄位。
第17圖為根據本發明一實施例之暫存器架構的方塊
圖。
第18A圖為說明根據本發明之實施例的範例循序管線及範例暫存器更名、故障事件/執行管線兩者之方塊圖。
第18B圖說明處理器核心,其包含耦接至執行引擎單元之前端單元且兩者皆耦接至記憶體單元。
第19A圖為根據本發明之實施例的單一處理器核心的方塊圖,連同與晶片上互連網路之連接及連同第2層(L2)快取之本地子集。
第19B圖為根據本發明之實施例的第19A圖中之處理器核心的部份之展開圖。
第20圖為根據本發明之實施例的處理器之方塊圖,其可具有多於一個的核心、可具有積體記憶體控制器、及可具有積體圖形。
第21圖說明根據本發明一實施例之系統的方塊圖。
第22圖說明根據本發明之實施例的第一更特定範例系統的方塊圖。
第23圖說明根據本發明之實施例的第二更特定範例系統2300的方塊圖。
第24圖說明根據本發明之實施例的SoC之方塊圖。
第25圖為對比使用根據本發明之實施例的軟體指令轉換器以將來源指令集中的二進位指令轉換成目標指令集中的二進位指令之方塊圖。
Claims (28)
- 一種方法,包含:接收一點積指令,該點積指令表示包含至少四個資料元之一第一來源緊縮資料、表示包含至少八個資料元之一第二來源緊縮資料、及表示一指定儲存位置;及因應該點積指令,儲存一結果緊縮資料於該指定儲存位置,該結果緊縮資料包含複數個資料元,各包含一點積結果,各點積結果包含該第一來源緊縮資料之至少四個資料元與該第二來源緊縮資料之至少四個資料元的不同子集之對應的資料元之乘積的和。
- 如申請專利範圍第1項之方法,其中接收步驟包含接收一點積指令,其指明該第二來源緊縮資料之該資料元的尺寸,且其中該點積指令允許該第二來源緊縮資料之該資料元的尺寸為複數個不同尺寸之其中任何一者。
- 如申請專利範圍第2項之方法,其中接收步驟包含接收一點積指令,其具有一立即(immediate),其指明該第二來源緊縮資料之該等資料元的尺寸。
- 如申請專利範圍第1項之方法,其中接收步驟包含接收一點積指令,其表示包含具有僅二位元的尺寸之資料元之一第二來源緊縮資料且其表示包含具有至少八位元的尺寸之資料元的一第一來源緊縮資料。
- 如申請專利範圍第1項之方法,其中接收步驟包含接收一點積指令,其表示包含具有僅四位元的尺寸之資料元之一第二來源緊縮資料且其表示包含具有至少八位元 的尺寸之資料元的一第一來源緊縮資料。
- 如申請專利範圍第1項之方法,其中接收步驟包含接收一點積指令,其表示包含至少十六個資料元之一第一來源緊縮資料且其表示包含至少三十二個資料元之一第二來源緊縮資料,且其中儲存步驟包含儲存至少兩個資料元,其各包含根據至少十六個乘積之和的一點積結果。
- 如申請專利範圍第1項之方法,其中接收步驟包含接收一點積指令,其表示包含至少十六個資料元之一第一來源緊縮資料且其表示包含至少六十四個資料元之一第二來源緊縮資料,且其中儲存步驟包含儲存至少四個資料元,其各包含根據至少十六個乘積之和的一點積結果。
- 如申請專利範圍第1項之方法,其中儲存步驟包含儲存兩個資料元,其各包含一點積結果,一第一點積結果包含該第一來源緊縮資料之至少四個資料元與該第二來源緊縮資料之對應的下半部資料元之乘積的和,且其中一第二點積結果包含該第一來源緊縮資料之至少四個資料元與該第二來源緊縮資料之對應的上半部資料元之乘積的和。
- 如申請專利範圍第1項之方法,其中儲存步驟包含儲存至少四個資料元,其各包含一點積結果,各點積結果係根據該第二來源緊縮資料之至少八個資料元的至少四個子集中之不同者。
- 如申請專利範圍第1項之方法,其中儲存步驟包含當該對應點積結果超過一飽和值時,儲存該飽和值於該 結果緊縮資料之該等資料元的其中至少一者。
- 如申請專利範圍第1項之方法,其中接收步驟包含接收表示一斷定遮罩之一點積指令,且其中儲存步驟包含根據該斷定遮罩有條件地儲存包含點積結果之資料元。
- 一種裝置,包含:複數個緊縮資料暫存器;及一執行單元,與該等複數個緊縮資料暫存器耦接,因應一點積指令,該執行單元可操作以儲存一結果緊縮資料於一指定儲存位置,該點積指令表示包含至少四個資料元之一第一來源緊縮資料、表示包含至少八個資料元之一第二來源緊縮資料、及表示該指定儲存位置,該結果緊縮資料包含複數個資料元,其各包含一點積結果,各點積結果包含該第一來源緊縮資料之至少四個資料元與該第二來源緊縮資料之至少四個資料元的不同子集之對應的資料元之乘積的和。
- 如申請專利範圍第12項之裝置,其中該執行單元因應一點積指令而儲存該結果緊縮資料,該點積指令指明該第二來源緊縮資料之該資料元的尺寸,且其中該點積指令允許該第二來源緊縮資料之該資料元的尺寸為複數個不同尺寸之其中任何一者。
- 如申請專利範圍第13項之裝置,其中該點積指令包含一立即(immediate)以指明該第二來源緊縮資料之該資料元的尺寸。
- 如申請專利範圍第12項之裝置,其中該執行單 元因應一點積指令而儲存該結果緊縮資料,該點積指令表示包含具有僅二位元的尺寸之資料元之一第二來源緊縮資料且其表示包含具有至少八位元的尺寸之資料元的一第一來源緊縮資料。
- 如申請專利範圍第12項之裝置,其中該執行單元因應一點積指令而儲存該結果緊縮資料,該點積指令表示包含具有僅四位元的尺寸之資料元之一第二來源緊縮資料且其表示包含具有至少八位元的尺寸之資料元的一第一來源緊縮資料。
- 如申請專利範圍第12項之裝置,其中該執行單元因應一點積指令而儲存該結果緊縮資料,該點積指令表示包含至少十六個資料元之一第一來源緊縮資料且其表示包含至少三十二個資料元之一第二來源緊縮資料,且其中該結果緊縮資料包含至少兩個資料元,其各包含根據至少十六個乘積之和的一點積結果。
- 如申請專利範圍第12項之裝置,其中該執行單元因應一點積指令而儲存該結果緊縮資料,該點積指令表示包含至少十六個資料元之一第一來源緊縮資料且其表示包含至少六十四個資料元之一第二來源緊縮資料,且其中該結果緊縮資料包含至少四個資料元,其各包含根據至少十六個乘積之和的一點積結果。
- 如申請專利範圍第12項之裝置,其中該執行單元因應該點積指令而儲存兩個資料元,其各包含一點積結果,一第一點積結果包含該第一來源緊縮資料之至少四個 資料元與該第二來源緊縮資料之對應的下半部資料元之乘積的和,一第二點積結果包含該第一來源緊縮資料之至少四個資料元與該第二來源緊縮資料之對應的上半部資料元之乘積的和。
- 如申請專利範圍第12項之裝置,其中該執行單元因應該點積指令而儲存至少四個資料元,其各包含一點積結果,各點積結果係根據該第二來源緊縮資料之資料元的至少四個子集中之不同者。
- 如申請專利範圍第12項之裝置,其中當該對應點積結果超過一飽和值時,該執行單元因應該點積指令而儲存該飽和值於該結果緊縮資料之該等資料元的其中至少一者。
- 如申請專利範圍第12項之裝置,其中該執行單元因應表示一斷定遮罩之一點積指令而儲存該結果緊縮資料,且其中該執行單元根據該斷定遮罩有條件地儲存包含點積結果之資料元。
- 一種系統,包含:一互連;一處理器,與該互連耦接,因應一點積指令,該處理器可操作以儲存一結果緊縮資料於一指定儲存位置,該點積指令表示包含至少四個資料元A0,A1,A2,A3之一第一來源緊縮資料、表示包含至少八個資料元B0,B1,B2,B3,C0,C1,C2,C3之一第二來源緊縮資料、及表示該指定儲存位置,該結果緊縮資料包含至少一第一資料元及一第二資 料元,該第一資料元包含A0*B0+A1*B1+A2*B2+A3*B3,該第二資料元包含A0*C0+A1*C1+A2*C2+A3*C3;及一動態隨機存取記憶體(DRAM),與該互連耦接。
- 如申請專利範圍第23項之系統,其中該處理器因應一點積指令而儲存該結果緊縮資料,該點積指令指明該第二來源緊縮資料之該資料元的尺寸,且其中該點積指令允許該第二來源緊縮資料之該資料元的尺寸為複數個不同尺寸之其中任何一者。
- 如申請專利範圍第23項之系統,其中該處理器因應一點積指令而儲存該結果緊縮資料,該點積指令表示包含具有選自僅二位元及僅四位元的尺寸之資料元之一第二來源緊縮資料且其表示包含具有至少八位元的尺寸之資料元的一第一來源緊縮資料。
- 一種製品,包含:一機器可讀取儲存媒體,包含一或多個固態資料儲存材料,該機器可讀取儲存媒體儲存一點積指令,該點積指令表示包含至少四個資料元A0,A1,A2,A3之一第一來源緊縮資料、表示包含至少八個資料元B0,B1,B2,B3,C0,C1,C2,C3之一第二來源緊縮資料、及表示一指定儲存位置,且當該點積指令由一機器所執行時,該機器執行以下操作:儲存一結果緊縮資料於該指定儲存位置,該結果緊縮資料包含至少一第一資料元及一第二資料元,該第一資料元包含A0*B0+A1*B1+A2*B2+A3*B3,該第二資料元包含 A0*C0+A1*C1+A2*C2+A3*C3。
- 如申請專利範圍第26項之製品,其中該點積指令指明該第二來源緊縮資料之該資料元的尺寸,且其中該點積指令允許該第二來源緊縮資料之該資料元的尺寸為複數個不同尺寸之其中任何一者。
- 如申請專利範圍第26項之製品,其中該點積指令表示包含具有選自僅二位元及僅四位元的尺寸之資料元之一第二來源緊縮資料且其表示包含具有至少八位元的尺寸之資料元的一第一來源緊縮資料。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2011/067711 WO2013101018A1 (en) | 2011-12-29 | 2011-12-29 | Dot product processors, methods, systems, and instructions |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201349105A true TW201349105A (zh) | 2013-12-01 |
| TWI512612B TWI512612B (zh) | 2015-12-11 |
Family
ID=48698258
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW101148338A TWI512612B (zh) | 2011-12-29 | 2012-12-19 | 點積處理器、方法、系統及指令 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20140195783A1 (zh) |
| EP (1) | EP2798457B1 (zh) |
| CN (1) | CN104137055B (zh) |
| TW (1) | TWI512612B (zh) |
| WO (1) | WO2013101018A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI787692B (zh) * | 2017-04-28 | 2022-12-21 | 美商英特爾股份有限公司 | 用於低精度機器學習操作之計算最佳化的裝置 |
Families Citing this family (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10120663B2 (en) * | 2014-03-28 | 2018-11-06 | Intel Corporation | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
| US20160125263A1 (en) | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
| US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
| GB2540943B (en) * | 2015-07-31 | 2018-04-11 | Advanced Risc Mach Ltd | Vector arithmetic instruction |
| CN107636640B (zh) * | 2016-01-30 | 2021-11-23 | 慧与发展有限责任合伙企业 | 点积引擎、忆阻器点积引擎以及用于计算点积的方法 |
| CN107315716B (zh) * | 2016-04-26 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量外积运算的装置和方法 |
| US10275243B2 (en) * | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
| PL4148563T3 (pl) | 2016-10-20 | 2025-10-20 | Intel Corporation | Systemy, aparaty i sposoby dla połączonego mnożenia-dodawania |
| GB2560159B (en) * | 2017-02-23 | 2019-12-25 | Advanced Risc Mach Ltd | Widening arithmetic in a data processing apparatus |
| CN119861972A (zh) | 2017-03-20 | 2025-04-22 | 英特尔公司 | 用于片矩阵乘法和累加的系统、方法和装置 |
| US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
| US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
| US11249755B2 (en) * | 2017-09-27 | 2022-02-15 | Intel Corporation | Vector instructions for selecting and extending an unsigned sum of products of words and doublewords for accumulation |
| US10514924B2 (en) * | 2017-09-29 | 2019-12-24 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
| US11074073B2 (en) * | 2017-09-29 | 2021-07-27 | Intel Corporation | Apparatus and method for multiply, add/subtract, and accumulate of packed data elements |
| US10802826B2 (en) * | 2017-09-29 | 2020-10-13 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
| US11093247B2 (en) * | 2017-12-29 | 2021-08-17 | Intel Corporation | Systems and methods to load a tile register pair |
| US10528346B2 (en) | 2018-03-29 | 2020-01-07 | Intel Corporation | Instructions for fused multiply-add operations with variable precision input operands |
| US11042370B2 (en) * | 2018-04-19 | 2021-06-22 | Intel Corporation | Instruction and logic for systolic dot product with accumulate |
| US10963246B2 (en) | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
| KR102838677B1 (ko) | 2019-03-15 | 2025-07-25 | 인텔 코포레이션 | 매트릭스 가속기 아키텍처를 위한 희소 최적화 |
| KR102894763B1 (ko) | 2019-03-15 | 2025-12-03 | 인텔 코포레이션 | 하이브리드 부동 소수점 포맷에 대한 내적 누산 명령어를 갖는 그래픽 프로세서 및 그래픽 프로세싱 유닛 |
| US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
| US12182035B2 (en) | 2019-03-15 | 2024-12-31 | Intel Corporation | Systems and methods for cache optimization |
| US11861761B2 (en) | 2019-11-15 | 2024-01-02 | Intel Corporation | Graphics processing unit processing and caching improvements |
| US11663746B2 (en) | 2019-11-15 | 2023-05-30 | Intel Corporation | Systolic arithmetic on sparse data |
| US11182458B2 (en) | 2019-12-12 | 2021-11-23 | International Business Machines Corporation | Three-dimensional lane predication for matrix operations |
| US20210334072A1 (en) * | 2020-04-22 | 2021-10-28 | Facebook, Inc. | Mapping convolution to connected processing elements using distributed pipelined separable convolution operations |
| US20210389948A1 (en) * | 2020-06-10 | 2021-12-16 | Arm Limited | Mixed-element-size instruction |
| US11263291B2 (en) | 2020-06-26 | 2022-03-01 | Intel Corporation | Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication |
| US12141438B2 (en) | 2021-02-25 | 2024-11-12 | Alibaba Group Holding Limited | Zero skipping techniques for reducing data movement |
| CN115796239B (zh) * | 2022-12-14 | 2023-10-31 | 北京登临科技有限公司 | Ai算法架构的实现装置、卷积计算装置及相关方法与设备 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
| KR19980013688U (ko) * | 1996-08-30 | 1998-06-05 | 양재신 | 보강판넬이 구비된 자동차용 루프판넬 |
| US6675286B1 (en) | 2000-04-27 | 2004-01-06 | University Of Washington | Multimedia instruction set for wide data paths |
| GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
| US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
| US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
| US8631224B2 (en) * | 2007-09-13 | 2014-01-14 | Freescale Semiconductor, Inc. | SIMD dot product operations with overlapped operands |
| GB2485774A (en) * | 2010-11-23 | 2012-05-30 | Advanced Risc Mach Ltd | Processor instruction to extract a bit field from one operand and insert it into another with an option to sign or zero extend the field |
-
2011
- 2011-12-29 CN CN201180076464.5A patent/CN104137055B/zh active Active
- 2011-12-29 US US13/977,094 patent/US20140195783A1/en not_active Abandoned
- 2011-12-29 WO PCT/US2011/067711 patent/WO2013101018A1/en not_active Ceased
- 2011-12-29 EP EP11878520.3A patent/EP2798457B1/en active Active
-
2012
- 2012-12-19 TW TW101148338A patent/TWI512612B/zh not_active IP Right Cessation
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI787692B (zh) * | 2017-04-28 | 2022-12-21 | 美商英特爾股份有限公司 | 用於低精度機器學習操作之計算最佳化的裝置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN104137055A (zh) | 2014-11-05 |
| EP2798457B1 (en) | 2019-03-06 |
| WO2013101018A1 (en) | 2013-07-04 |
| TWI512612B (zh) | 2015-12-11 |
| US20140195783A1 (en) | 2014-07-10 |
| EP2798457A1 (en) | 2014-11-05 |
| CN104137055B (zh) | 2018-06-05 |
| EP2798457A4 (en) | 2016-07-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI512612B (zh) | 點積處理器、方法、系統及指令 | |
| TWI756251B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
| TWI544407B (zh) | 浮點定比處理器、方法、系統及指令 | |
| TWI761367B (zh) | 用於融合乘加運算的系統、裝置及方法 | |
| TWI575448B (zh) | 三個來源運算元浮點加法處理器、方法、系統及指令 | |
| TWI489381B (zh) | 多暫存器散布指令 | |
| US9792115B2 (en) | Super multiply add (super MADD) instructions with three scalar terms | |
| US9733935B2 (en) | Super multiply add (super madd) instruction | |
| TWI514274B (zh) | 用於迴圈餘數遮罩指令之系統、裝置及方法 | |
| CN107003848B (zh) | 用于融合乘法-乘法指令的装置和方法 | |
| KR20170097018A (ko) | 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법 | |
| US9760371B2 (en) | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions | |
| KR102460268B1 (ko) | 큰 정수 산술 연산을 수행하기 위한 방법 및 장치 | |
| US11301580B2 (en) | Instruction execution that broadcasts and masks data values at different levels of granularity | |
| TWI556164B (zh) | 具有不同讀取及寫入遮罩之多元件指令 | |
| CN114721624A (zh) | 用于处理矩阵的处理器、方法和系统 | |
| TW201810029A (zh) | 用於跨步載入的系統、設備及方法 | |
| CN107003841B (zh) | 用于融合加法-加法指令的装置和方法 | |
| TW201732568A (zh) | 用於巷道為主的跨類收集的系統、設備與方法 | |
| US20220197974A1 (en) | Processors, methods, systems, and instructions to select and store data elements from two source two-dimensional arrays indicated by permute control elements in a result two-dimensional array | |
| KR20170097613A (ko) | 벡터 수평 로직 명령어를 위한 장치 및 방법 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |