TWI483185B - 具三個純量項之超級乘加(超級乘加(super MADD))指令 - Google Patents
具三個純量項之超級乘加(超級乘加(super MADD))指令 Download PDFInfo
- Publication number
- TWI483185B TWI483185B TW101149304A TW101149304A TWI483185B TW I483185 B TWI483185 B TW I483185B TW 101149304 A TW101149304 A TW 101149304A TW 101149304 A TW101149304 A TW 101149304A TW I483185 B TWI483185 B TW I483185B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- instruction
- column
- register
- unit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Description
本發明一般有關於計算系統,特別有關於具三個純量項之超級乘加(超級乘加(superMADD))指令。
第1圖係說明高階處理核心圖100以應用0。
半導體晶片中之邏輯電路。其處理核心包括管線101。管線包括多重階段,每一個階段係設計以執行特殊步驟於多重步驟程序以完全執行程式碼指令。該些階段一般包括至少:1)指令擷取及解碼;2)資料擷取;3)執行;4)寫回。執行階段執行由指令識別之特殊操作,該指令係於先前階段於先前階段擷取及解碼(亦即,於上述步驟1)根據由相同指令識別及擷取於其它先前階段之資料(亦即,上述步驟2)。操作之資料一般由(一般用途)暫存器儲存空間102擷取。產生於操作完成之新資料一般同時“寫回”至暫存器儲存空間(亦即,於上述階段4)。
邏輯電路結合執行階段一般包含多重”執行單元”或”功能單元”103_1至103_N每一個設計用以執行其自身唯一的操作之子集(亦即,第一功能單元執行整數數學操作,第二功能單元執行浮點指令,第三功能單元執行載入/儲存操作於/至快取記憶體/記憶體等)。由全部功能單元操作之全部操作集對應於由處理核心100支援之”指令集”。
兩種類型處理器構造被廣泛認可於電腦科學領域:”
純量”及“向量”。純量處理器係設計以執行指令執行單一組資料操作,然而,向量處理器係設計以執行以多組資料執行操作之指令。第2A及2B圖提供對照實例說明純量處理器及向量處理器間之基本差異。
第2A圖係說明純量AND運算指令之實例,其中單一運算元集,A及B經由AND運算以產生單一(或”純量”)結果C(例如,AB=C)。相對地,第2B圖係說明向量AND運算指令之實例,其中兩個運算元集,A/B及D/E,係分別經由AND運算及並列合併以同步產生向量結果C,F(例如,A.AND.B=C and D.AND.E=F)。提到術語,”向量”係一資料元素具有多重”元素”。例如,向量V=Q,R,S,T,U具有5個不同的元素:Q,R,S,T及U。範例向量V之”尺寸”係5個(因為其具有5個元素)。
第1圖同時說明向量暫存器空間107之應用不同於一般用途暫存器空間102。特別地,一般用途暫存器空間102顧名思義用以儲存純量數值。因此,當任何執行單元執行純量操作顧名思義係利用由(及結果寫回)一般用途暫存器儲存空間102招喚之運算元。相對地,當任何執行單元執行向量操作顧名思義利用由(及結果寫回)向量暫存器空間107招喚之運算元。不同的記憶體區域可同樣地分配以用於純量數值及向量數值之儲存。
同時,值得注意地,寫入遮罩邏輯104_1至104_N及105_1至105_N個別輸入至及由功能單元103_1至103_N輸出。於不同應用,向量操作時,只有一個該些層
為實際應用-雖然並非高需求(雖然未顯示於第1圖,清楚地,執行單元只執行純量及非向量操作不需要任何遮罩層)。對於任何利用遮罩,輸入遮罩邏輯104_1至104_N及/或輸出遮罩邏輯105_1至105_N之向量指令可用以控制元素以向量指令有效操作。於此,遮罩向量係由遮罩暫存器空間106載入(亦即,伴隨由向量暫存器儲存空間107載入之輸入運算元向量)及應用於至少一個遮罩邏輯104,105層。
執行向量程式碼之整個過程,每一個向量指令不需要全資料字元。例如,某些指令之輸入向量可只具有8元素,其它指令之輸入向量可為16元素,其它指令之輸入向量可為32元素等。遮罩層104/105係因而用以識別應用於特別指令之一組全向量資料字元之元素,以運作跨指令範圍之不同向量尺寸。典型地,對於每一個向量指令,保留於遮罩暫存器空間106之特殊遮罩圖案係由遮罩暫存器空間擷取之指令招喚,及提供兩個遮罩層104/105之一以”啟動”正確組的特別向量操作元素。
第3及4圖係說明用於執行”超級”MADD指令之方法及對應的邏輯電路,VPLANE,以執行操作V1[]=(a*V2[])+(b*V3[])+c,其中,V1[]係取得的向量,V2[]及V3[]係輸入向量及a,b及c係純量401。如第3圖所示,執行單元執行操作可採用指令格式技術VPLANE
R1;R2;R3;R4/M。於此,指令格式分別關於:i)目標暫存器位址R1以儲存結果V1[];ii)兩個分立的輸入運算元暫存器位址R2及R3以分別儲存輸入運算元V2[],V3[];及iii)第三輸入運算元位址R3或M表示每一個純量a、b、c存在之暫存器或記憶體儲存位置。選擇性地,指令格式可為VPLANE R1;R2;R3/M,應用於來源運算元及目標其中之一。VPLANE指令較正式的格式可包括儲存遮罩(亦即,VPLANE R1;k;R2;R3;R4/M其中k對應於遮罩向量)。於進一步實施例,只有一個儲存遮罩(第1圖之儲存遮罩層105)應用為部分構造。為求簡化此說明之其餘部分大多有關於VPLANE R1;R2;R3;R4/M格式。
於一實施例中,每一個參照符號R1;R2;R3及R4對應於第1圖之向量暫存器空間107之位置。類似地,M對應於儲存向量數值之記憶體位置。於一實施例中,純量數值a、b、c係由儲存空間R4/M招喚,顧名思義用以儲存向量。亦即,VPLANE指令具有5個輸入運算元(V2[],V3[],a,b及c)但是只應用三個輸入資料來源(亦即,三個暫存器或兩個暫存器及記憶體位置)。
為了完成輸入資訊之壓縮,如第3圖所示,純量a、b、c係“封包”於相同輸入資料結構以由單一來源有效提供三個純量。請注意,當其它向量由指令招喚,於R4/M包含純量數值a、b、c之”封包”或向量-類似資料結構不必具有相同向量尺寸。因此,不像典型的向量指令,其中
每一個輸入運算元為相同尺寸向量,當其它輸入運算元必需為不同的第二尺寸(三個)向量,VPLANE指令之結構接受一群輸入運算元V2[],V3[]為第一尺寸向量之可能性(任何向量尺寸由機械支援)。
如第3及4圖所示,VPLANE指令執行邏輯電路包括暫存器310,311及312以分別保留V2[],V3[]及a、b、c純量。執行單元資源進一步包括融合乘法器313。輸出結果由乘法器313傳送至結果暫存器319。於一實施例中,融合乘法器313必需包括兩個”並列”乘法器,每一個包含其自身唯一的選擇邏輯314,316(以產生部分乘積項)及其自身個別的Wallace樹狀電路315,317(或其它適合的加法器電路)以加入部分乘積。應用“並列”方式可使(a*V2[])及(b*V3[])二項可實質上同步計算。
關於第3圖,”左半”乘法器係包含選擇邏輯314及Wallace樹狀電路315。選擇邏輯314建構部分(a*V2[])乘法之乘積及Wallace樹狀電路315加總該些部分乘積以決定(a*V2[])最後乘積。類似地,”右半”乘法器係包含選擇邏輯316及Wallace樹狀電路317。選擇邏輯316建構部分(b*V3[])乘法之乘積及Wallace樹狀電路317加總該些部分乘積以決定(b*V3[])最後乘積。然後,(a*V2[])及(b*V3[])最後乘積加入具有純量c項“基底”加法器318以產生最後結果V1[]。
如上所述融合乘法對應於單一取整數於加法器318。於此,至少關於浮點運算元,於第3圖,V2[],V3[],a
、b、c輸入數值對應於尾數數值。指數加法用以使乘法由未顯示於第3圖之加法電路有效進行。根據其個別的指數數值,執行單元可一樣操作之已知之不同輸入數值動態範圍,第3圖之尾數數值需要移位以運作修正校準。前述移位於加法階段產生捨入誤差例如基底加法器318。
如上所述融合乘法能夠減少加法捨入誤差為單一捨入誤差,相較於(亦即,經由微碼操作)“迴圈(loop)兩次”通過相同乘法累加電路方式,因而串接兩個分立的捨入誤差(亦即,第一迴圈以決定(a*V2[])+c(第一捨入誤差產生)及第二迴圈以決定(b*V3[])及將其加入至(a*V2[])+c(第二捨入誤差產生)。顯而易見,迴圈(loop)通過相同乘法電路兩次之方式可滿足不同應用無關乎串接捨入誤差及因此能夠被當做本發明之一實施例。於一實施例中,兩個不同的運算碼係由基本的指令集利用,以指定是否融合乘法或利用“迴圈(loop)兩次”。
於第3圖,加數純量c係提供至基底加法器318但是可選擇進入一個Wallace樹狀電路315,316(依Wallace樹狀之尺寸而定)。同時,顯而易見某些額外的或另一方式可選擇混合左及右部分乘積進入相同Wallace樹狀結構,因此於左及右Wallace樹狀電路315,317間之區別模糊(亦即,具有預先校準尾數及額外擴充管線階段)。
進一步說明如下,VPLANE指令可延長以包括兩個單精度版本及雙精度版本。一般而言,雙精度資料路徑係單精度資料路徑的兩倍寬度。於一實施例中,兩個Wallace
樹狀電路315,317中每一個本身建構為包含一對Wallace樹狀電路,其中每一個具有單精度寬度。亦即,四個分立的單精度寬度Wallace樹狀加法器於融合乘法器313)。
一對前述Wallace樹狀電路係利用以加總單一雙精度數值於雙精度模式。於一實施例中,四個分立的Wallace樹狀電路係同時利用以支援雙超級乘加(superMADD)指令於單精度模式(亦即,V1[]=((a*V2L[])+(b*V3L[])+c)+((a*V2R[])+(b*V3R[])+c)。於此,V2L[]對應於左半暫存器R2及V2R[]對應於右半暫存器R2。V3L[]及V3R[]係類似格式。於進一步實施例,以適當的輸入傳送至乘法器,額外的純量數值(亦即,d、e、f)可封包於R4/M與a、b、c同時存在,因此,兩個分立的及獨立的超級乘加(superMADD)係以相同單精度指令計算。
於一實施例中,不同VPLANE指令之“特色”乃根據不同資料類型。例如,根據一實施例,應用處理器之指令集構造係設計以支援VPLANEPS(向量單精度)及VPLANESPD(向量雙精度)向量操作。
於一進一步實施例,執行單元資源設計不只用以支援向量指令同時支援純量指令PLANE。係執行資源同時執行函數(a*A)+(b*B)+c其中A及B係純量輸入運算元。於此,向量暫存器之低階位元(未顯示於第3圖)可結合每一個暫存器310,311,312及暫存器319及配送融合乘法器邏輯於相同方式如第3圖所示。於一進一步實施例,單精度(PLANESS)及雙精度(PLANESD)支援純量指令。
一個具有壓縮5個輸入運算元於一設計用以提供至多三個輸入運算元之指令格式中之發出,指定”額外”運算元之編碼。特別地,指令執行邏輯需要知悉每一個a、b、c純量之尺寸及/或由R4/M擷取之資料結構之邊界。於一實施例中,如第5圖所示,此資訊係存在於立即(immediate)運算元(亦即,imm8於x86或相容的指令格式)。立即(immediate)運算元係一已知預先運作時間變因及因此於編譯/碼建構程序中能夠直接嵌入指令。因此,於VPLANE指令編譯時,代表每一個a,b及c純量能夠分立存在於由R4/M擷取之緊縮資料(packed data)結構之資訊,係直接嵌入立即(immediate)運算元欄之指令。
以上詳述之指令實施例可以以下所述之”一般向量親合地指令格式”實現。於其它實施例,並未利用前述格式及係利用其它指令格式,然而,以下之寫入遮罩暫存器,不同資料轉換(攪亂,播送等),定址等一般能夠適用上述說明之指令實施例。另外,範例系統,構造,及管線如下所述。前述指令實施例可執行前述系統,構造,及管線,但是係不限定於已詳述內容。
向量親合地指令格式係適用於向量指令之指令格式(亦即,特殊向量操作的某些欄)。當實施例說明其中向量及純量二者應用向量親合地指令格式操作,另一實施例只利用向量操作向量親合地指令格式。
第6A-B圖,根據本發明實施例,係說明一般向量親合地指令格式及指令樣板方塊圖。第6A圖,根據本發明實施例,係說明一般向量親合地指令格式及其A類指令樣板方塊圖;當第6B圖,根據本發明實施例,係說明一般向量親合地指令格式及其B類指令樣板方塊圖。特別地,一般向量親合地指令格式600被A類及B類指令樣板定義,該二者包括無記憶體存取605指令樣板及記憶體存取620指令樣板。術語”一般”用於說明向量親合地指令格式係關於不限任何特殊指令集之指令格式。當一實施例說明指令以向量親合地指令格式操作向量,向量係來自暫存器(無記憶體存取605指令樣板)或暫存器/記憶體(記憶體存取620指令樣板),另一本發明實施例則只可支援前述其中之一。同時,當本發明實施例說明下載及儲存於向量指令格式之指令,應用另一實施例或再具備移動向量進出暫存器之不同指令格式指令(亦即,由記憶體進入暫存器,由暫存器進入記憶體於暫存器之間)。進一步,當本發明實施例說明支援兩個類別指令樣板,另一實施例只支援其中之一或大於兩個。
當本發明實施例說明向量親合地指令格式支援以下: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位元組)資料元素寬度(或尺寸);另一實施例可支援較多,較少及/或不同的向量運算元尺寸(亦即,656位元組向量運算元)與較多,較少,或不同的資料元素寬度(亦即,128位元(16位元組)資料元素寬度)。
第6A圖A類指令樣板包括:1)於無記憶體存取605指令樣板中應用無記憶體存取,全取整數控制類型操作610指令樣板及無記憶體存取,資料轉換類型操作615指令樣板;及2)於記憶體存取620指令樣板中應用記憶體存取,暫存625指令樣板及記憶體存取,非-暫存630指令樣板。第6B圖B類指令樣板包括:1)於無記憶體存取605指令樣板中應用無記憶體存取,寫入遮罩控制,部分取整數控制類型操作612指令樣板及無記憶體存取,儲存寫入控制,V尺寸類型操作617指令樣板;及2)於記憶體存取620指令樣板中應用記憶體存取,寫入遮罩控制627指令樣板。
一般向量親合地指令格式600包括以下欄,該欄依序於第6A-B圖說明。合併上述關於VPLANE指令內容,於一實施例,關於詳細說明於以下第6A-B及7圖之格式,
非記憶體存取指令類型605或記憶體存取指令類型620被使用。第一,第二及第三輸入運算元R2 R3 R4/M之位址及目標R1可被指定於以下說明之暫存器位址欄644。於一進一步實施例,第一來源運算元V1[]之尺寸係編碼於Reg_欄744;第二來源運算元V2[]之尺寸係編碼於VVVV欄720及尺寸/純量a、b、c之位置係編碼於imm8欄772。於一實施例中,imm8之位元[3]及[7:4]係用以編碼上述a,b及c純量及imm8之位元[2:0]係用於信號控制。
格式欄640-此欄之特殊的數值(指令格式識別符數值)單獨標示向量親合地指令格式,及因此指令之發生於指令串流之向量親合地指令格式。因此,藉由指令之發生於其它指令格式,格式欄640之內容識別指令之發生於第一指令格式,因而適合於向量親合地指令格式始用於具有其它指令格式之指令集。因此,此欄可選擇不需要只具有一般向量親合地指令格式之指令集。
基礎操作欄642-其內容識別不同的基礎操作。如下文說明,基礎操作欄642可包括及/或部分運算碼欄。
暫存器索引欄644-其內容,直接或經由位址產生,指定來源及目標運算元於暫存器或於記憶體之位置。該些包含充足的位元數目以由PxQ(亦即32x1012)暫存器欄位選擇N暫存器。當一實施例N可為三個來源及一個目標暫存器,另一實施例可支援更多或更少的來源及目標暫存器(亦即,可支援兩個來源,其中一個來源同時為目標,可支援三個來源,其中一個來源同時為目標,可支援兩個
來源及一個目標)。當一實施例P=32,另一實施例可支援更多或更少的暫存器(亦即,16)。當一實施例Q=1012位元,另一實施例可支援更多或更少位元(亦即,128,1024)。
修改器欄646-其內容識別一般向量格式指令之發生以由該些未存取者指定記憶體存取;亦即,於無記憶體存取605指令樣板及記憶體存取620指令樣板之間。當非-記憶體存取操作未發生(亦即,來源及目標係暫存器),記憶體存取操作載入及/或寫入至記憶體階層(某些情形下利用暫存器數值指定來源及/或目標位址)。當一實施例此欄同時選自三個不同的方式以執行記憶體位址計算,另一實施例可應用於較多,較少,或不同的方式以執行記憶體位址計算。
擴充操作欄650-其內容識別許多不同的操作之一以於基礎操作之外執行。此欄係特定的內容。於本發明之實施例,此欄係分為類別欄668,alpha欄652,及beta欄654。擴充操作欄允許共同操作組執行於單一指令而非2,3或4指令。以下為某些指令之實例(名稱細節請詳下文)利用擴充欄650以減少需要之指令數目。
其中[rax]係基礎指標用以位址產生,及其中{}表示由資料處理欄指定之轉換操作(細節請詳下文)。
比例欄660-其內容允許於索引欄內容之縮放比例用於記憶體位址產生(亦即,用於位址產生利用2比例*索引+基礎)。
位移欄662A-其內容係利用為部分記憶體位址產生(亦即,用於位址產生利用2比例*索引+基礎+位移)。
位移因子欄662B(請注意,位移欄662A之並列直接含蓋位移因子欄662B表示一個或其它被利用)-其內容係利用為部分位址產生;其表示由記憶體存取(N)之尺寸縮放之位移因子-其中N係記憶體存取之位元組數目(亦即
,用於利用2比例*索引+基礎+比例位移之位址產生)。多餘的低階位元被忽略及因此,位移因子欄之內容係由記憶體運算元全部尺寸(N)擴增以產生最後位移以用於計算有效位址。根據不同的全運算碼欄674(說明於下文中)及以下所說明之資料處理欄654C,數值N係由處理器硬體於運作時間決定。位移欄662A及位移因子欄662B為選項之一因為其並非用於無記憶體存取605指令樣板及/或不同的實施例只可應用一個或兩個都沒有。
資料元素寬度欄664-其內容識別將利用之多個資料元素寬度之一(於某些全部指令之實施例;於其它只有某些指令之實施例)。此欄係可選擇不需要假若只有一個資料元素寬度被支持及/或多個資料元素寬度被某運算碼態樣支持。
寫入遮罩欄670-其內容決定,根據資料元素位置,是否目標向量運算元資料元素位置反映基礎操作及擴充操作之結果。當B類指令樣板支持於合併-及歸零-寫入遮罩,A類指令樣板支持於合併-寫入遮罩。當合併時,向量遮罩允許於目標之任何組元素以於任何操作執行之更新保全(由基礎操作及擴充操作構成);於其它一實施例,保留目標之每一個元素舊有數值,其中對應的遮罩位元具有一0數值。相對而言,當歸零向量遮罩於任何操作執行中接受任何組元素被歸零(由基礎操作及擴充操作構成);於一實施例,當對應的遮罩位元具有0數值,目標之元素設定為0。此功能之子集具有控制操作執行之向量長度之能力
(亦即,元素長度,由第一至最末一個被修改);然而,元素之修改不需要為連續的。因此,寫入遮罩欄670允許於部分向量操作,包括載入,儲存,算數,邏輯等。同時,此遮罩可用以抑制錯誤(例如,以遮罩目標之資料元素位置防止接到任何將造成錯誤的操作結果,-亦即,假設於記憶體中向量跨越頁邊界及第一頁而非第二頁造成頁錯誤,頁錯誤可能被忽略,假若在第一頁的全部資料元素被寫入遮罩遮罩)。進一步,寫入遮罩允許於“向量化迴圈(loop)”包含某些類型條件聲明。當本發明實施例說明寫入遮罩欄之670內容選擇具有被使用之寫入遮罩之多個寫入遮罩暫存器之一(及因此寫入遮罩欄之670內容間接辨識將執行之遮罩),以另一實施例或額外的允許寫入遮罩欄之670內容直接指定執行之遮罩。進一步,歸零適用於效能改善,當:1)暫存器重新命名用於目標運算元並非同一來源之指令(同時稱為非-三元指令),因為於暫存器重新命名管線階段目標不再是隱含來源(無目前目標暫存器之資料元素需要複製,以重新命名目標暫存器或可與操作一起進行,因為任何資料元素並非操作之結果(任何遮罩資料元素將歸零);及2)於寫回階段,因為0被寫入。
立即(immediate)欄672-其內容允許於一立即(immediate)之指定內容。此欄係可選擇,因為其未應用於未支援立即(immediate)之一般向量合用格式應用及其並未應用於未利用立即(immediate)值之指令。
類別欄668-其內容識別不同的類別指令。關於第6A-B圖,此欄之內容由A類及B類指令選擇。於第6A-B圖,圓邊角正方形用以表示有特殊數值於欄中(亦即,分別於第6A-B圖,類別欄668之類668A及B類668B)。。
當beta欄654識別將執行之指定類型操作,於非-記憶體存取605A類指令樣板,alpha欄652係解譯為RS欄652A,其內容識別將執行之不同的擴充操作類型之一(亦即,取整數652A.1及資料轉換652A.2係分別應用於無記憶體存取,取整數類型操作610及無記憶體存取,資料轉換類型操作615指令樣板)。於第6圖,圓邊角係用以顯示特殊的數值(亦即,無記憶體存取646A於修改器調整欄646;取整數652A.1及資料轉換652A.2於alpha欄652/rs欄652A)。於無記憶體存取605指令樣板,比例欄660,位移欄662A,及位移比例欄662B並未應用。
無記憶體存取指令樣板-全取整數控制類型操作,於無記憶體存取全取整數控制類型操作610指令樣板,beta欄654係解譯為取整數控制欄654A,其內容提供靜態取整數結果。
當本發明實施例說明取整數控制欄654A包括抑制全部浮點例外(SAE)欄656及取整數操作控制欄658,另一實施例可支援編碼該兩個概念於相同欄中或只有其中一個
或另一個該些概念/欄(亦即,只可具有取整數操作控制欄658)。
SAE欄656-其內容決定是否關閉例外事件報告;當SAE欄之656內容表示抑制啟動,給定指令未報告任何浮點例外旗標及未產生任何浮點例外處理器。
取整數操作控制欄658-其內容識別一組取整數操作之一以執行(亦即,調升,調降,調向零及調至最近整數)。因此,取整數操作控制欄658適用於以指令為基礎之取整數模式之改變。於本發明之實施例,其中一處理器包括控制暫存器用於指定取整數模式,取整數操作控制欄之650內容取消暫存器數值(能夠選擇取整數模式無需具有以執行儲存-修正-回復於前述控制暫存器有效的)。
於無記憶體存取資料轉換類型操作615指令樣板,beta欄654解譯為資料轉換欄654B,其內容識別將執行多個資料轉換之其一(亦即,無資料轉換,攪亂,播送)。
於A類記憶體存取620指令樣板,alpha欄652係解譯為驅逐提示欄652B,其內容識別將利用之驅逐提示之一(於第6A圖,暫存652B.1及非-暫存652B.2分別用於記憶體存取,暫存625指令樣板為記憶體存取,及非-暫存630指令樣板),當beta欄654係解譯為資料處理欄
654C,其內容識別將執行之多個資料處理操作之一(同時被稱為早期的)(亦即,無之程序;播送;來源之調升轉換;及目標之調降轉換)。記憶體存取620指令樣板包括比例欄660,及選項位移欄662A或位移比例欄662B。
以應用轉換支援,向量記憶體指令執行向量載入於及向量儲存至記憶體。於應用一般向量指令,向量記憶體指令以資料元素-型態方式傳輸資料於/至記憶體,傳輸之元素實際上直接由選擇為寫入遮罩之向量遮罩之內容取得。於第6A圖,圓邊角正方形係利用以顯示特殊的數值係存在於欄(亦即,修改器欄646之記憶體存取646B;alpha欄652/驅逐提示欄652B之暫存652B.1及非-暫存652B.2)
暫存資料係可能很快再利用之資料以利用快取。亦即,因而,提示,及不同的處理器可將其應用於不同的方式,包括完全忽略提示。
非-暫存資料係資料不可能很快再用於1st-級快取記憶體快取及將優先驅逐。亦即,因而,提示及不同的處理器可將其應用於不同的方式,包括完全忽略提示。
於B類指令樣板,alpha欄652係解譯為寫入遮罩控
制(Z)欄652C,其內容決定是否由寫入遮罩欄670控制之寫入遮罩將合併或歸零。
當其餘的beta欄654識別將執行之指定類型操作,於B類非-記憶體存取605指令樣板,部分beta欄654係解譯為RL欄657A,其內容識別將執行之不同的擴充操作類型之一(亦即,取整數657A.1及向量長度(V尺寸)657A.2係分別應用於無記憶體存取,寫入遮罩控制,部分取整數控制類型操作612指令樣板及無記憶體存取,儲存遮罩控制,V尺寸類型操作617指令樣板)。於第6圖,圓邊角區塊係用以表示特殊的數值(亦即,修改器欄646之無記憶體存取646A;RL欄657A之取整數657A.1及V尺寸657A.2)。於無記憶體存取605指令樣板,比例欄660,位移欄662A,及位移比例欄位662B係並未應用。
於無記憶體存取,寫入遮罩控制,部分取整數控制類型操作610指令樣板,其餘的beta欄654係解譯為取整數操作欄659A及例外事件報告係關閉(既有之指令不報告任何浮點例外旗標及不產生任何浮點例外處理)。
取整數操作控制欄659A-正如取整數操作控制欄658
,其內容識別一組取整數操作之一以執行(亦即,調升,調降,調向零及調至最近整數)。因此,取整數操作控制欄659A允許於以指令為基礎之取整數模式之改變,及因此當需要時特別有用。於本發明之實施例,其中處理器包括控制暫存器用於指定取整數模式,取整數操作控制欄之650內容取消暫存器數值。(可選擇不具取整數模式以於前述控制暫存器有效的執行儲存-修正-回復)。
於無記憶體存取,寫入遮罩控制,V尺寸類型操作617指令樣板,其餘的beta欄654係解譯為向量長度欄659B,其內容識別將執行之多個資料向量長度之一(亦即,128,256,或512位元組)。
當其餘的beta欄654係解譯為向量長度欄659B,於記憶體存取620B類指令樣板,部分beta欄654係解譯為播送欄657B,其內容決定是否播送類型資料處理操作將被執行。記憶體存取620指令樣板包括比例欄660,及選項位移欄662A或位移比例欄662B。
關於一般向量親合地指令格式600,其中全運算碼欄674包括格式欄640,基礎操作欄642,及資料元素寬度
欄664。當一實施例中全運算碼欄674包括全部該些欄,全運算碼欄674包括少於未支持其全部之實施例之全部欄。全運算碼欄674提供操作碼。
擴充操作欄650,資料元素寬度欄664,及寫入遮罩欄670允許以指令為基礎以一般向量親合地指令格式之該些特徵。
寫入遮罩欄及資料元素寬度欄之組合產生類型之指令以使遮罩應用於不同的資料元素寬度。
指令格式需要相對較小位元數,因為不同用途欄再利用係根據不同其它欄之內容。例如,一種看法係修改器欄之內容選自於第6A-B圖無記憶體存取605指令樣板及於第6A-B圖記憶體存取620指令樣板;當類別欄668之內容選自於第6A圖之指令樣板610/615及第6B圖之指令樣板612/617之間該些非-記憶體存取605指令樣板中;及當類別欄668之內容選自於第6A圖之指令樣板625/830及第6B圖之指令樣板627之間該些記憶體存取620指令樣板中。有一種看法是,類別欄668之內容係分別選自第6A及B圖之A類及B類指令樣板;當修改器欄之內容選自第6A圖之指令樣板605及620之間該些A類指令樣板中;及當修改器欄之內容選自於指令樣板605及第6B圖之指令樣板620之間該些B類指令樣板中。於類別欄之內容顯示A類指令樣板,修改器欄646之內容選擇alpha欄652之解譯(於rs欄652A及EH欄652B之間。以相關方式,修改器欄646及類別欄668之內容選擇是否alpha欄
解譯為rs欄652A,EH欄652B,或寫入遮罩控制(Z)欄652C。於類別及修改器欄顯示A類無記憶體存取操作,擴充欄之beta欄之解譯乃根據不同的rs欄之內容改變;當於類別及修改器欄顯示B類無記憶體存取操作,beta欄解譯依RL欄內容而定。於類別及修改器欄顯示A類記憶體存取操作,擴充欄之beta欄解譯乃根據不同的基礎操作欄之內容改變;當於類別及修改器欄顯示B類記憶體存取操作,擴充欄之beta欄之播送欄657B之解譯乃根據不同的基礎操作欄之內容改變。因此,基礎操作欄,修改器欄及擴充操作欄之組合適用於特定較寬的許多的擴充操作。
不同指令樣板為A類及B類中在不同的情形下有用。當歸零-寫入遮罩或較小的向量長度用以提高效能,A類有用。例如,歸零允許避免造假相關性,當重新命名被使用,因為人們不再需要費心地合併目標;正如另外的例子,當仿真具有向量遮罩之較短向量尺寸,向量長度控制簡化儲存-轉發問題。B類有用,當適用於:1)當同時利用取整數-模式控制,允許浮點例外(例如,當SAE欄內容顯示無);2)可利用調升轉換,攪亂,交換,及/或調降轉換;3)操作圖像資料類型。當以於不同的格式來源作動,例如,調升轉換,攪亂,交換,調降轉換,及圖像資料類型減少需要之指令數目;正如另外的例子,可允許例外以提供指引取整數-模式完整IEEE規範。
第7圖,根據本發明實施例,係一方塊圖說明範例特殊的向量親合地指令格式。第7圖係說明特殊的向量親合地指令格式700亦即特殊的為指定位置,尺寸,解譯,及欄之順序,以及某些該些欄之數值。特殊的向量親合地指令格式700可利用以延長x86指令集,及因此某些欄係類似或相同於該些利用於現有的x86指令集及延長(亦即,AVX)。此格式保持與字首編碼欄一致,實際運算碼位元組欄,MODR/M欄,SIB欄,位移欄,及具有延長之現有的x86指令集之立即(immediate)欄。第6圖欄成為第7圖欄之映射說明於文中。
顯而易見,雖然本發明實施例係以一般向量親合地指令格式600說明相關的特殊的向量親合地指令格式700,除了申請專利權項界定以外,本發明不限定於特殊的向量親合地指令格式700。例如,當特殊的向量親合地指令格式700具有特殊尺寸之欄,一般向量親合地指令格式600可用於許多不同欄之可能尺寸。舉一特殊實例而言,當資料元素寬度欄664係舉例為特殊的向量親合地指令格式700之一個一位元欄,本發明未限定於此(亦即,一般向量親合地指令格式600可用於其它資料元素寬度欄664之尺寸)。
一般向量親合地指令格式600包括說明於第7圖之以
下欄。
EVEX字首(位元組0-3)
EVEX字首702-係編碼於四個-位元組形式。
格式欄640(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄640並包含0x62(讀特的數值用以標示向量親合地指令格式於本發明之一實施例)。
第二-第四位元組(EVEX位元組1-3)包括提供特殊的功能之多個位元欄。
REX欄705(EVEX位元組1,位元[7-5])-包括EVEX.R位元欄(EVEX位元組1,位元[7]-R),EVEX.X位元欄(EVEX位元組1,位元[6]-X),及657BEX位元組1,位元[5]-B)。EVEX.R,EVEX.X,及EVEX.B位元欄提供如對應的VEX位元欄之相同功能,及利用1s補數形式編碼,例如,ZMM0係編碼為1111B,ZMM15係編碼為0000B。其它指令之欄編碼暫存器索引業界習知之較低的三個位元(rrr,xxx,及bbb),因此Rrrr,Xxxx,及Bbbb可由加入EVEX.R,EVEX.X,及EVEX.B形成。
REX’欄710-此係第一部分REX’欄710及係EVEX.R’位元欄(EVEX位元組1,位元[4]-R’)用以編碼延長32之較高的16或較低的16暫存器組。於本發明之實施例,此位元,及其它列示於下文者,係以位元倒轉格式儲存以由BOUND指令識別(於習知之x86 32-位元模式),其實際運算碼位元組為62,但是不適用於MOD R/M欄(說明如下)於MOD欄之數值11;另一本發明實施例未以倒轉格式儲
存此及以下其它顯示之位元。數值1係用以編碼較低的16暫存器。換言之,R’Rrrr係由結合EVEX.R’,EVEX.R,及其它RRR於其它欄形成。
運算碼映射欄715(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱示前導運算碼位元組(0F,0F 38,或0F3)。
資料元素寬度欄664(EVEX位元組2,位元[7]-W)-表示為EVEX.W標記。EVEX.W係用以表示(32-位元資料元素或64-位元資料元素)之粒度(尺寸)。
EVEX.vvvv 720(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之作用可包括以下:1)EVEX.vvvv編碼第一來源暫存器運算元,應用於倒轉(1s補數)形式及適用於具有2個或多個來源運算元之指令;2)EVEX.vvvv編碼目標暫存器運算元,應用於某些向量移位之1s補數形式;或3)EVEX.vvvv未編碼任何運算元,該欄被保留並將包含1111b。因此,EVEX.vvvv欄720編碼4個第一來源暫存器指定器之低階位元儲存於倒轉(1s補數)形式。依指令,極不同的EVEX位元欄用以延長指定器尺寸至32個暫存器。
EVEX.U 668類別欄(EVEX位元組2,位元[2]-U)-假若EVEX.U=0,表示A類或EVEX.U0;假若EVEX.U=1,顯示B類或EVEX.U1。
字首編碼欄725(EVEX位元組2,位元[1:0]-pp)-提供基礎操作欄之額外位元。除了用於提供支持給既有SSE
指令於EVEX字首格式之外,此同時適合於壓緊SIMD字首(而非需要一位元組以表示SIMD字首,EVEX字首需要只有2位元)。於一實施例中,用於利用SIMD字首之既有SSE指令(66H,F2H,F3H)於既有格式及EVEX字首格式二者,該些既有SIMD字首係編入SIMD字首編碼欄;及於運作時間提供至解碼器之PLA之前係擴大至既有SIMD字首(因此PLA能夠執行該些既有指令之既有及EVEX格式),而不需要修改。雖然較新的指令可利用EVEX字首直接編碼欄之內容如同一運算碼延長,針對一致性某些實施例擴大類似應用方式但是允許於由該些既有SIMD字首指定之不同譯意。另一實施例可重新設計PLA以支持於2位元SIMD字首編碼,及因此不需要擴大。
alpha欄652(EVEX位元組3,位元[7]-EH;同時被稱為EVEX.EH,EVEX.Rs,EVEX.RL,EVEX。寫入遮罩控制,及EVEX.N;同時表示為α)-如上所述,此欄係特定的內容。額外的說明係請詳下文。
beta欄654(EVEX位元組3,位元[6:4]-SSS,同時被稱為EVEX.s2-0,EVEX.Rs2-0,EVEX.Rrl,EVEX.LL0,EVEX.LLB;同時表示為βββ)-如上所述,此欄係特定的內容。額外的說明請詳下文。
REX’欄710-此係REX’欄之保留器及係EVEX.V’位元欄(EVEX位元組3,位元[3]-V’)可利用以編碼延長32暫存器組之較高的16個或較低的16個暫存器組。此位元以位元倒轉格式儲存。數值1係用以編碼較低的16個暫存
器。換言之,V’VVVV係由結合EVEX.V’,EVEX.vvvv形成。
寫入遮罩欄670(EVEX位元組3,位元[2:0]-kkk)-其內容標示暫存器之索引於寫入遮罩暫存器,如上所述。於本發明之實施例,特殊的數值EVEX.kkk=000具有特殊的行為意味非寫入遮罩用於特別的指令(此可有許多方式執行包括利用寫入遮罩以電性連接至所有全部或旁路遮罩硬體之硬體)。
此係同時被稱為運算碼位元組。部分運算碼係應用於此欄。
修改器欄646(MODR/M.MOD,位元[7-6]-MOD欄742)-如上所述,MOD欄之742內容識別記憶體存取與非-記憶體存取操作。此欄將進一步說明於下文。
MODR/M/reg欄744,位元[5-3]-ModR/M/reg欄之作用可歸納為兩種情形:ModR/M/reg編碼目標暫存器運算元或來源暫存器運算元,或ModR/M/reg做為運算碼延長及未用以編碼任何指令運算元。
MODR/M/r/m欄746,位元[2-0]-ModR/M/r/m欄之作用可包括以下:記憶體位址相關之ModR/M/r/m編碼指令運算元,或ModR/M/r/m編碼目標暫存器運算元或來源暫
存器運算元。
比例欄660(SIB.S,位元[7-6]-如上所述,比例欄之660內容係用以記憶體位址產生。此欄將進一步說明於下文中。
SIB.xxx754(位元[5-3]及SIB.bbb756(位元[2-0])-該些欄之內容係與先前暫存器索引Xxxx及Bbbb有關。
位移欄662A(位元組7-10)-當MOD欄742包含10,位元組7-10為位移欄662A,及其作用如同既有32-位元位移(disp32)並運作於位元組粒度。
位移因子欄662B(位元組7)-當MOD欄742包含01,位元組7係位移因子欄662B。此欄之位置與該些運作於位元組粒度之既有x86指令集8-位元位移(disp8)相同。因為disp8係延長符號,只能定址於-128及127位元組偏移之間;關於64位元組快取記憶體內存線,disp8利用8位元只可設定四個實際利用之數值-128,-64,0,及64;因為經常需要較大的範圍,disp32被應用;然而,disp32需要4位元組。相對於disp8及disp32,位移因子欄662B係一disp8重新解譯;當利用位移因子欄662B,實際位移係由位移因子欄之內容,與記憶體運算元存取(N)之尺寸相乘決定。此類型位移係參照為disp8*N。此減
少平均指令長度(單一位元組用以位移但具有更大的範圍)。前述壓縮的位移係假設有效位移為記憶體存取數倍粒度,及因此,多餘的位址子集之低階位元不需要編碼。換言之,位移因子欄662B取代既有x86指令集8-位元位移。因此,位移因子欄662B以與x86指令集8-位元位移相同方式編碼(因此未改變ModRM/SIB編碼原則)只有唯一例外disp8係載入至disp8*N。換言之,未改變編碼原則或編碼長度但是只有由硬體造成之位移數值解譯(其需要由記憶體運算元之尺寸縮放位移以獲得位元組-式位址偏移)。
立即(immediate)欄672操作如上所述。
第8圖,根據本發明實施例,係一暫存器構造800方塊圖。暫存器檔案及暫存器構造係詳細說明如下:
於說明之實施例,32個向量暫存器檔案810為812位元寬;該些暫存器係參照為zmm0至zmm31。較低的16zmm暫存器之低階656位元係覆蓋暫存器ymm0-16。較低的16zmm暫存器之低階128位元(ymm暫存器之較低階128位元)係覆蓋暫存器xmm0-15。特殊的向量親合地指令格式700操作於該些覆蓋之暫存器欄位如下表所示。
換言之,向量長度欄659B係選自最大長度及一個或多個其它較短的長度,其中每一個前述較短的長度係一半先前的長度;及指令樣板不具向量長度欄659B以最大向量長度操作。進一步,於一實施例,特殊的向量親合地指令格式700B類指令樣板以封包或純量單/雙精度浮點資料及封包或純量整數資料操作。純量操作係執行操作之zmm/ymm/xmm暫存器之低階資料元素位置;依實施例而定高階資料元素位置係維持相同於指令之前或歸零。
說明於實施例之寫入遮罩暫存器815,8個寫入遮罩暫存器(k0至k7),每一個之尺寸64位元。如上所述,於本發明之實施例,向量遮罩暫存器k0不能夠應用為寫入遮罩;當編碼一般顯示器k0係用於寫入遮罩,其選擇電性連接0xFFFF寫入遮罩以有效關閉其指令之儲存遮罩。
說明於實施例之多媒體擴充控制狀態暫存器(MXCSR)820-,此32-位元暫存器提供狀態及控制位元利用於浮點操作。
說明於實施例之一般用途暫存器825,十六個64-位
元一般用途暫存器係利用現有的x86定址模式以定址記憶體運算元。該些暫存器係參照為名稱RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP,及R8至R15。
說明於實施例之延長旗標(E旗標)暫存器830,此32位元暫存器係利用以紀錄許多指令之結式。
說明於實施例之浮點控制字元(FCW)暫存器835及浮點狀態字元(FSW)暫存器840,該些暫存器由x87指令集延長利用以設定取整數模式,例外於FCW之遮罩及旗標,及於FSW追蹤例外。
說明於實施例之純量浮點堆疊暫存器欄位(x87堆疊)845,別名為MMX封包整數平整暫存器欄位850,利用x87指令集延長x87堆疊係一八-元素堆疊利用以執行32/64/80-位元浮點資料純量浮點操作;當MMX暫存器係利用以執行64-位元封包整數資料之操作,以及用以保留運算元用於某些執行於MMX及XMM暫存器間之操作。
分段暫存器855-於說明之實施例,6個16位元暫存器利用以儲存資料用以分段位址產生。
RIP暫存器865-於說明之實施例,此64位元暫存器儲存指令指標。
另一本發明實施例可利用較寬或較窄的暫存器。此外,另一本發明實施例可利用較多,較少,或不同的暫存器檔案及暫存器。
第9A-9B圖說明範例循序處理器構造方塊圖。該些最佳實施例設計為取整數循序CPU核心之多重實例,亦即擴充為具有寬向量處理器(VPU)。核心經由高頻寬互連網路與具有某些固定功能邏輯,記憶體I/O介面,及其它必需的I/O邏輯通訊,依e13t應用而定。例如,應用此實施例為獨立CPU一般包括PCIe匯流排。
第9A圖,根據本發明實施例,係一單一處理器核心方塊圖,及其連接至晶粒上互連網路902及於其2級(L2)快取記憶體904之區域子集;指令解碼器900支援具有延長之x86指令集包括特殊的向量指令格式700。當一實施例(為簡化設計),純量單元908及向量單元910利用分立的暫存器組(個別地,純量暫存器912及向量暫存器914)及傳輸於其間之資料係寫入記憶體及然後由1級(L1)快取記憶體906讀回,另一本發明實施例可利用不同的方式(亦即,利用單一暫存器組或包括通訊路徑以允許資料傳輸於兩個暫存器檔案之間而不需寫入及讀回)。
L1快取記憶體906適用於低延遲存取由快取記憶體至純量及向量單元。結合載入-操作指令於向量親合地指令格式,也就是說L1快取記憶體906可當做某些類似延長暫存器檔案處理。此大量改善許多算數之效能,特別是具有驅逐提示欄652B時。
L2快取記憶體904之區域子集係部分全域L2快取記憶體,全域L2快取記憶體分為分立的區域子集,一個於一個處理器核心。每一個處理器核心具有指引存取路徑至
其自身L2快取記憶體904之區域子集。由處理器核心載入之資料係儲存於其L2快取記憶體子集904並能夠快速存取,並與其它處理器核心一起存取其自身區域L2快取記憶體子集。由處理器核心寫入之資料係儲存於其自身L2快取記憶體子集904及來自其它子集,假若必要的話。環狀網路確保共享資料一致性。
第9B圖,根據本發明實施例,係第9A圖之部分處理器核心分解圖。第9B圖包括L1資料快取記憶體906部分L1快取記憶體914,以及更多關於向量單元910及向量暫存器914之細節。特別地,向量單元910係一16-寬度向量處理單元(VPU)(請參照16-寬度ALU928),以執行一個或多個整數,單精度浮點,及雙精度浮點指令。VPU以攪亂單元920攪亂暫存器輸入,以數值轉換單元922A-B,數值轉換及以複製單元924複製於記憶體輸入。寫入遮罩暫存器926允許預估取得的向量寫入。
暫存器資料能夠以許多方式攪亂,亦即支援矩陣相乘。記憶體之資料能夠複製跨越VPU通道。此係兩個圖像及非-圖像並列資料處理之共同操作,以大量增加快取記憶體效率。
環狀網路為雙向以允許代理例如處理器核心,L2快取記憶體及其它邏輯區塊於晶片中互相通訊。每一個資料-路徑係812-位元寬於每一個方向。
第10圖,根據本發明實施例,係一方塊圖說明範例亂序構造,及可當做更特殊管線之說明例如上述第1圖之管線。特別地,第10圖說明習知之範例亂序構造已修改併入向量親合地指令格式並執行。於第10圖箭頭表示結合於兩個或多個單元之間及箭頭之方向顯示於該些單元之間之資料流程方向。第10圖包括前端單元1005耦接至執行引擎單元1010及記憶體單元1015;執行引擎單元1010進一步耦接至記憶體單元1015。
前端單元1005包括1級(L1)偏移預估單元1020耦接至2級(L2)偏移預估單元1022。L1,及L2偏移預估單元1020及1022耦接至L1指令快取記憶體單元1024。L1,指令快取記憶體單元1024耦接至指令轉譯備援緩衝器(TLB)1026進一步耦接至指令擷取及預解碼單元1028。,指令擷取及預解碼單元1028係耦接至指令佇列單元1030進一步耦接解碼單元1032。解碼單元1032包含複雜的解碼器單元1034及三個簡單的解碼器單元1036,1038,及1040。解碼單元1032包括微碼ROM單元1042。解碼單元1032可操作如上述解碼階段部分內容。L1指令快取記憶體單元1024進一步耦接至記憶體單元1015中之L2快取記憶體單元1048。指令TLB單元1026進一步耦接至記憶體單元1015中之第二級TLB單元1046。解碼單元1032,微碼ROM單元1042,及迴路串流偵測器單元1044每一個耦接至執行引擎單元1010之重新命名/分配器單元1056。
執行引擎單元1010包括重新命名/分配器單元1056,重新命名/分配器單元1056耦接至引退單元1074及統一排程器單元1058。引退單元1074進一步耦接至執行單元1060並包括重排序緩衝器單元1078。統一排程器單元1058耦接至實體暫存器檔案單元1076進一步耦接至執行單元1060。實體暫存器檔案單元1076包含向量暫存器單元1077A,寫入遮罩暫存器單元1077B,及純量暫存器單元1077C;該些暫存器單元可提供向量暫存器810,向量遮罩暫存器815,及一般用途暫存器825;及實體暫存器檔案單元1076可包括額外的暫存器檔案,未說明(亦即,純量浮點堆疊暫存器欄位845別名MMX封包整數平整暫存器檔案850)。執行單元1060包括三個混合純量向量單元1062,1064,及1072;載入單元1066;儲存位址單元1068;儲存資料單元1070。載入單元1066,儲存位址單元1068,及儲存資料單元1070每一個耦接進一步至記憶體單元1015之資料TLB單元1052。
記憶體單元1015包括第二級TLB單元1046,第二級TLB單元1046耦接至資料TLB單元1052。資料TLB單元1052耦接至L1資料快取記憶體單元1054。L1,資料快取記憶體單元1054進一步耦接至L2快取記憶體單元1048。於某些實施例,L2快取記憶體單元1048進一步耦接至L3及較高階的快取記憶體單元1050內部及/或記憶體單元1015之外部。
舉例而言,範例亂序構造可應用程序管線8200如下
:1)指令擷取及預解碼單元1028執行擷取及長度解碼階段;2)解碼單元1032執行解碼;3)重新命名/分配器單元1056執行位置階段及重新命名階段;4)統一排程器1058執行排程階段;5)實體暫存器檔案單元1076,重排序緩衝器單元1078,及記憶體單元1015執行暫存器載入/記憶體載入階段;執行單元1060執行執行/資料轉換階段;6)記憶體單元1015及重排序緩衝器單元1078執行寫回/寫入記憶體階段1960;7)引退單元1074執行ROB載入階段;8)不同單元可包含於例外處理階段;及9)引退單元1074及實體暫存器檔案單元1076執行確認階段。
第15圖,根據本發明實施例,係一處理器1500方塊圖可具有大於一個核心,整合記憶體控制器,及整合圖像。第15圖實線框框係表示處理器1500具有單一核心1502A,系統代理1510,一組之一個或多個匯流排控制器單元1516,當選擇加入虛線框框表示另一處理器1500具有多重核心1502A-N,一組之一個或多個整合記憶體控制器單元1514於系統代理單元1510,及整合圖像邏輯1508。
記憶體階層包括一個或多個級核心中之快取記憶體,一組或一個或多個共享快取記憶體單元1506,及外部記憶體(未說明)耦接至組整合記憶體控制器單元1514。共享快取記憶體單元1506組可包括一個或多個中級快取記憶
體,例如2級(L2),3級(L3),4級(L4),或其它級之快取記憶體,最末級快取記憶體(LLC),及/或其組合。當一實施例環狀互連單元1512連接整合圖像邏輯1508,共享快取記憶體單元1506,及系統代理單元1510/整合記憶體。另一實施例可利用任何數目之習知互連前述單元技術。
於某些實施例,一個或多個核心1502A-N係能夠進行多重執行緒。系統代理1510包括該些部件協調及操作核心1502A-N。系統代理單元1510可包括例如電源控制單元(PCU)及顯示單元。PCU或可包括邏輯及部件用於調整核心1502A-N及整合圖像邏輯1508電源狀態。顯示單元係用於驅動一個或多個外部連接顯示器。
根據構造及/或指令集,核心1502A-N可為同類或非同類。例如,當其它的為亂序(亦即,類似說明於第10圖),某些核心1502A-N可為循序(亦即,類似說明於第9A及9B圖)。正如另外的例子,當其它核心只能執行該指令集或不同的指令集之子集,兩個或多個核心1502A-N可執行相同指令集。至少一個核心能夠執行此處說明之向量親合地指令格式。
處理器可為一般用途處理器,可選擇地,例如CoreTM
i3,i5,i7,2Duo及四,XeonTM
,或ItaniumTM
處理器,來自於Intel Corporation,Santa Clara,CA。,處理器更可來自於其它公司。處理器可為特殊用途處理器,例如,網路或通訊處理器,壓縮引擎,圖像處理器,共處理器,嵌入式處理器等,該處理器可應用於一個或多個晶片
。處理器1500可為部分及/或可應用於一個或多個基板以應用多個任何製程技術,例如,BiCMOS,CMOS,或NMOS。
當第8圖係可包括一個或多個核心1502之晶片(SoC)之範例系統,第11-13適用於包括處理器1500之範例系統。其它系統設計及業界知名之結構可用於筆記型電腦,桌上型電腦,手提式PC,個人數位助理,工程工作站,伺服器,網路裝置,網路集線器,開關,嵌入式處理器,數位信號處理器(DSPs),圖像裝置,視訊遊戲裝置,機上盒,微控制器,手機,可攜式媒體播放裝置,手提式裝置,及不同其它電子裝置,同時適用。一般而言,能夠結合處理器及/或其它揭示於此處之執行邏輯之大量系統或電子裝置通常都可適用。
請參考第11圖,根據本發明實施例,係說明系統1100方塊圖。系統1100可包括一個或多個處理器1110,1115,耦接至圖像記憶體控制器集線器(GMCH)1120。可選擇之額外處理器1115特點係以虛線表示於第11圖。
每一個處理器1110,1115可為某些版本之處理器1500。然而,值得注意的是整合圖像邏輯及整合記憶體控制單元不可能存在於處理器1110,1115。
第11圖說明GMCH 1120可耦接至記憶體1140可為,例如,動態隨機存取記憶體(DRAM)。DRAM,可用於
至少一實施例,與非-揮發快取記憶體結合。
GMCH 1120可為晶片組,或一部分晶片組。GMCH 1120可與處理器1110,1115通訊及控制於處理器1110,1115及記憶體1140間之交互作用。GMCH 1120可如同一於處理器1110,1115及其它系統元件間之加速匯流排介面。針對至少一實施例,GMCH 1120與處理器1110,1115經由多分支匯流排通訊,例如前端匯流排(FSB)1195。
再則,GMCH 1120耦接至顯示器1145(例如平面顯示器)。GMCH 1120可包括整合圖像加速器。GMCH 1120進一步耦接至輸入/輸出(I/O)控制器集線器(H)1150用以耦接不同週邊設備至系統1100。舉例說明如第11圖之實施例係一外部圖像裝置1160,外部圖像裝置1160可為分立圖像裝置耦接至ICH 1150,及其它週邊裝置1170。
可選擇地,額外的或不同的處理器可同時應用於系統1100。例如,額外的處理器1115可包括與處理器1110相同的額外處理器,與處理器1110為非同類或非對稱的額外處理器,加速器(諸如,亦即,圖像加速器或數位信號處理(DSP)單元),欄可程式閘陣列,或任何其它處理器。可能有許多差異存在於實體資源1110,1115之間,以相關貢獻度考量包括構造,微構造,溫度,電力損耗特性等差異,可有效突顯自身對於處理元素1110,1115為非對稱及非同類。針對至少一實施例,不同處理元素1110,1115可應用於相同晶片。
請參考第12圖,根據本發明實施例,其係說明第二系統1200方塊圖。如第12圖所示,多重處理器系統1200係一點對點互連系統,及包括第一處理器1270及第二處理器1280經由點對點互連1250耦接。如第12圖所示,每一個處理器1270及1280可某些版本之處理器1500。
可選擇地,一個或多個處理器1270,1280可為其它有別於處理器之元件,例如加速器或欄可程式閘陣列。
當只應用兩個處理器1270,1280,顯而易見,本發明之範圍未限定於此。於其它實施例,一個或多個額外的處理元素可應用於既有的處理器。
處理器1270可進一步包括整合記憶體控制器集線器(IMC)1272及點對點(PTP)介面1276及1278。類似地,第二處理器1280可包括IMC1282及點對點介面1286及1288。處理器1270,1280可經由點對點(點對點)介面1250利用點對點介面電路1278,1288交換資訊。如第12圖所示,IMCs1272及1282耦接處理器至個別的記憶體,亦即記憶體1242及記憶體1244,其可為部分主記憶體區域耦接至個別的處理器。
經由個別點對點介面1252,1254,利用點對點介面電路1276,1294,1286,1298,處理器1270,1280每一個可與晶片組1290交換資料。經由高效能圖像介面1239,晶片組1290可同時與高效能圖像電路1238交換資料。
共享快取記憶體(未說明)可包括於處理器兩個處理器
之外部,再經由點對點互連連接至處理器,假若處理器設定為低功率模式,因此兩個處理器之一之區域快取記憶體資訊可儲存於共享快取記憶體。
經由介面1296,晶片組1290可耦接至第一匯流排1216。於一實施例中,第一匯流排1216可為週邊組件互連(PCI)匯流排,或匯流排例如PCI快速匯流排或其它第三代I/O互連匯流排,然而本發明之範圍未限定於此。
如第12圖所示,不同I/O裝置1214可耦接至第一匯流排1216,及以滙流排橋接器1218耦接第一匯流排1216至第二匯流排1220。於一實施例中,第二匯流排1220可為低接腳數(LPC)匯流排。不同裝置可耦接至第二匯流排1220包括,例如,鍵盤及/或滑鼠1222,通訊裝置1226及儲存單元1228例如磁碟機或其它大容量儲存裝置等之裝置包括於一實施例中之碼1230。進一步,音訊I/O1224可耦接至第二匯流排1220。請注意,其它構造可能被應用。例如,除了第12圖之點對點構造,系統可應用多分支匯流排或其它前述構造。
請參考第13圖,根據本發明實施例,係說明第三系統1300方塊圖。類似元素於第12及13圖具有類似參照數值,及第12圖之某些目的已被第13圖忽略,以避免模糊第13圖之其它目的。
第13圖說明處理元素1270,1280可分別包括整合記憶體及I/O控制邏輯(“CL”)1272及1282。針對至少一實施例,例如上述關於第8,9及12圖,CL1272,1282可
包括記憶體控制器集線器邏輯(IMC)。另外。CL1272,1282可同時包括I/O控制邏輯。第13圖不只說明記憶體1242,1244耦接至CL1272,1282,而且說明I/O裝置1314係同時耦接至控制邏輯1272,1282。既有I/O裝置1315係耦接至晶片組1290。
請參考第14圖,根據本發明實施例,其係說明SoC1400方塊圖。於第15圖之類似元素具有類似參照數值。同時,虛線框框為於更先進的SoCs選擇性特徵。於第14圖,互連單元1402係耦接至:應用處理器1410,應用處理器1410包括一組之一個或多個核心1502A-N及共享快取記憶體單元1506;並耦接至系統代理單元1510;匯流排控制器單元1516;整合記憶體控制器單元1514;及一組或一個或多個媒體處理器1420可包括整合圖像邏輯1508,並耦接至影像處理器1424用於提供及/或視訊相機功能,音訊處理器1426用於提供硬體音訊加速,及視訊處理器1428用於提供視訊編碼/解碼加速;並耦接至靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432;及顯示單元1440用於耦接至一個或多個外部顯示器。
此處揭示之實施例可應用於硬體,軟體,韌體,或前述此類應用方式之組合。本發明實施例可應用為電腦程式或程式碼以於可程式系統執行,可程式系統包含至少一個處理器,儲存系統(包括揮發及非-揮發記憶體及/或儲存元素),至少一個輸入裝置,及至少一個輸出裝置。
程式碼可用以輸入指令以執行此處說明之功能及產生輸出資訊。輸出資訊可以習知方式應用至一個或多個輸出裝置。於此應用中,處理系統包括具有處理器之任何系統,例如;數位信號處理器(DSP),微控制器,應用特殊的整合電路(ASIC),或微處理器。
程式碼可用於高階程序或目的導向程式化語言以與處理系統通訊。程式碼可同時用於組合或機械語言,於必要時。事實上,此處說明之機制不限定於任何特別的程式化語言。不論如何,該語言可為編輯或解譯之語言。
至少一實施例之一個或多個特點可應用於儲存於電腦可讀媒體之代表性指令,該媒體於處理器中代表不同邏輯若機械載入可使機械形成邏輯以執行此處說明之技術。前述之代表,為“IP核心”其可儲存於實體的,電腦可讀媒體及供應不同消費者或創造適用性以讀入實際產生邏輯或處理器之製造機械。
前述電腦可讀儲存媒體可包括,不受限制於,非-非暫時性,由機械或裝置製造或形成之實體配置,包括儲存媒體例如硬碟,任何包括軟碟之其它類型碟片,光碟,唯讀記憶體光碟(CD-ROMs),可覆寫光碟片之(CD-RWs),及磁光碟片,半導體裝置例如唯讀記憶體(ROMs),隨機存取記憶體(RAMs)例如動態隨機存取記憶體(DRAMs),靜態隨機存取記憶體(SRAMs),可擦除可程式唯讀記憶體(EPROMs),快閃記憶體,電子可擦除可程式唯讀記憶體(EEPROMs),磁鐵或光學卡,或任何其它類型媒體用於儲
存電子指令。
因此,本發明實施例同時包含向量親合地指令格式指令或設計資料之非-非暫時性,實體的電腦可讀媒體,例如硬體描述語言(HDL)用以表明此處說明之結構,電路,裝置,處理器及/或系統特徵。前述實施例可同時為程式產出物。
某些情形下,指令轉換器可利用以由來源指令集轉換指令至目標指令集。例如,指令轉換器可轉譯(亦即,利用靜態二進位轉譯,包括動態編譯之動態二進位轉譯),變形,模擬,或另外轉換指令為一個或多個由核心處理之其它指令。指令轉換器可應用於軟體,硬體,韌體,或一組合。指令轉換器可為On處理器(On processor),Off處理器(Off processor),或部分On及部分Off處理器。
第16圖,根據本發明實施例,係一方塊圖比較軟體指令轉換器轉換來源指令集之二進位指令與轉換目標指令集之二進位指令。於說明實施例,指令轉換器係一軟體指令轉換器,雖然可另外應用指令轉換器於軟體,韌體,硬體,或不同組合。第16圖係說明高階語言1602程式可利用x86編輯器1604編輯以產生x86二進位碼1606,x86二進位碼1606可於本機由處理器具有至少一個x86指令集核心1616執行(係假設某些指令以向量親合地指令格式編輯)。處理器具有至少一個x86指令集核心1616代表任何能夠執行實質上如具有至少一個x86指令集之核心之Intel處理器相同功能之處理器,係藉由相容的執行或另
外處理(1)Intel x86指令集核心之實質部分指令集或(2)應用裝置之目標碼版本或其它軟體以運作於具有至少一個x86指令集核心之Intel處理器,以達成與具有至少一個x86指令集核心之Intel處理器實質上相同效果。x86編輯器1604代表編輯器可操作以產生x86二進位碼1606(亦即,目的碼),可需要或不需要額外之相關程序以被具有至少一個x86指令集核心1616處理執行器。類似地,第16圖係說明高階語言1602程式可利用另一指令集編輯器1608編輯以產生另一指令集二進位碼1610,該指令集二進位碼1610可自然地由不具至少一個x86指令集核心1614之處理器執行(亦即,處理器具有一核心可執行Sunnyvale,CA MIPS科技公司之MIPS指令集及/或可執行Sunnyvale,CA ARM Holding公司之ARM指令集)。指令轉換器1612係利用以轉換x86二進位碼1606成為可自然地由不具x86指令集核心1614處理器執行之碼。已轉換之碼不太可能與另一指令集二進位碼1610相同因為能夠完成此項動作之指令之轉換器不容易製造;然而,已轉換之碼可完成一般操作及組成另一指令集之指令。因此,指令轉換器1612代表軟體,韌體,硬體,或其組合,以經由仿真,模擬或任何其它程序,可使處理器或其它電子裝置未具ex86指令集處理器或核心執行x86二進位碼1606。
某些於此處揭示之向量親合地指令格式之指令操作可由硬體部件及應用於機械可執行之指令實現,或至少產生
,以該指令程式化執行操作之電路或其它硬體組件。該電路可包括一般用途或特殊用途處理器,或邏輯電路,以上僅為少許實例。操作可同時可選自硬體及軟體之組合。執行邏輯及/或處理器可包括特定的或特別的電路或其它回應應用機械指令之邏輯或由機械指令獲得的一個或多個控制信號以儲存指令指定結果運算元。例如,此處揭示之指令實施例可執行於第11-16圖之一個或多個系統及向量親合地指令格式指令實施例可儲存於系統將執行之程式碼。另外,該些圖示之處理元素可利用一個複雜的管線及/或構造(亦即,循序及亂序構造)細節此處。例如,循序構造之解碼單元可解碼指令,傳遞解碼之指令至向量或純量單元等。
上述說明用以說明本發明較佳實施例。由上述內容,同時,顯而易見,特別於此技術領域,其中之迅速成長及進展者並非顯而易知,不脫離本發明以下申請專利權項之範圍及其替代內容之原則,本發明可由熟悉業界之人士修改配置及細節。例如,一個或多個操作方法可結合或進一步部分分割處理。
當實施例已說明可於本機執行向量親合地指令格式,另一本發明實施例可執行向量親合地指令格式乃經仿真層運作於執行不同的指令集之處理器(亦即,處理器執行Sunnyvale,CA MIPS科技公司之MIPS指令集,處理器執
行Sunnyvale,CA ARM Holding公司之ARM指令集)。同時,當流程圖提出某些本發明實施例執行之特別操作順序,顯而易見,前述順序係範例作用(亦即,另一實施例可以不同的順序執行操作,結合某些操作,覆蓋某些操作等)。
以上所述,用以說明,提出許多的特殊的細節以提供本發明實施例之詳細說明。然而,顯而易見,對於一個熟悉業界之人士,一個或多個其它實施例可於缺少某些該些特殊的細節情形下實施。已說明之特別實施例並非用以限制本發明而是用於說明本發明實施例。本發明之範圍並非由上述特殊實例決定,只依以下如申請專利權項而定。
103‧‧‧遮罩邏輯
104‧‧‧儲存遮罩層
105‧‧‧儲存遮罩層
106‧‧‧遮罩暫存器空間
107‧‧‧向量暫存器空間
310~312‧‧‧暫存器
313‧‧‧乘法器
314‧‧‧選擇邏輯
315‧‧‧Wallace樹狀電路
316‧‧‧選擇邏輯
315‧‧‧Wallace樹狀電路
318‧‧‧基底加法器
319‧‧‧暫存器
401‧‧‧純量
600‧‧‧一般向量親合地指令格式
605‧‧‧無記憶體存取
610‧‧‧全取整數控制類型操作
612‧‧‧部分取整數控制類型操作
615‧‧‧資料轉換類型操作
617‧‧‧V尺寸類型操作
620‧‧‧記憶體存取
625‧‧‧暫存
627‧‧‧寫入遮罩控制
630‧‧‧非-暫存
640‧‧‧格式欄
642‧‧‧基礎操作欄
644‧‧‧暫存器位址欄
646A‧‧‧無記憶體存取
646B‧‧‧記憶體存取
650‧‧‧擴充操作欄
652‧‧‧alpha欄
652A‧‧‧RS欄
652A.1‧‧‧取整數
652A.2‧‧‧資料轉換
652B‧‧‧驅逐提示欄
652C‧‧‧寫入遮罩控制欄
654‧‧‧beta欄
654A‧‧‧取整數控制欄
654B‧‧‧資料轉換欄
652B.1‧‧‧暫存
652B.2‧‧‧非-暫存
654C‧‧‧資料處理欄
656‧‧‧浮點例外(SAE)欄
657A‧‧‧RL欄
657A.1‧‧‧取整數
657A.2‧‧‧向量長度(V尺寸)
657B‧‧‧播送欄
658‧‧‧取整數操作控制欄
659A‧‧‧取整數操作欄
659B‧‧‧向量長度欄
660‧‧‧比例欄
662A‧‧‧位移欄
662B‧‧‧位移因子欄
664‧‧‧資料元素寬度欄
668‧‧‧EVEX.U
668‧‧‧類別欄
668A‧‧‧A類
668B‧‧‧B類
670‧‧‧寫入遮罩欄
672‧‧‧立即(immediate)欄
674‧‧‧全運算碼欄
700‧‧‧特殊的向量親合地指令格式
702‧‧‧EVEX字首
705‧‧‧REX欄
710‧‧‧REX’欄
715‧‧‧運算碼對映圖對映欄
720‧‧‧EVEX.vvvv
725‧‧‧字首編碼欄
730‧‧‧實際運算碼欄
740‧‧‧MODR/M欄
742‧‧‧MOD欄
744‧‧‧MODR/M/reg欄
746‧‧‧MODR/M/r/m欄
754‧‧‧SIB.xxx
756‧‧‧SIB.bbb
772‧‧‧imm8欄
810‧‧‧向量暫存器欄位
820‧‧‧多媒體擴充控制狀態暫存器(MXCSR)
825‧‧‧一般用途暫存器
830‧‧‧延長旗標(E旗標)暫存器
835‧‧‧浮點控制字元(FCW)暫存器
840‧‧‧浮點狀態字元(FSW)暫存器
845‧‧‧純量浮點堆疊暫存器欄位(x87堆疊)
850‧‧‧MMX封包整數平整暫存器欄位
855‧‧‧分段暫存器
865‧‧‧RIP暫存器
900‧‧‧指令解碼器
902‧‧‧互連網路
904‧‧‧2級(L2)快取記憶體
906A‧‧‧L1資料快取記憶體
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧攪亂單元
922A-B‧‧‧數值轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
1005‧‧‧前端單元
1010‧‧‧引擎單元
1015‧‧‧記憶體單元
1020‧‧‧1級(L1)偏移預估單元
1022‧‧‧2級(L2)偏移預估單元
1024‧‧‧L1指令快取記憶體單元
1026‧‧‧指令轉譯備援緩衝器(TLB)
1028‧‧‧預解碼單元
1030‧‧‧指令佇列單元
1032‧‧‧解碼單元
1034‧‧‧解碼器單元
1036‧‧‧解碼器單元
1038‧‧‧解碼器單元
1040‧‧‧解碼器單元
1042‧‧‧微碼ROM單元
1044‧‧‧迴路串流偵測器單元
1046‧‧‧第二級TLB單元
1048‧‧‧L2快取記憶體單元
1052‧‧‧資料TLB單元
1054‧‧‧L1資料快取記憶體單元
1056‧‧‧重新命名/分配器單元
1058‧‧‧統一排程器單元
1060‧‧‧執行單元
1062‧‧‧混合純量向量單元
1064‧‧‧混合純量向量單元
1066‧‧‧載入單元
1068‧‧‧儲存位址單元
1070‧‧‧儲存資料單元
1072‧‧‧混合純量向量單元
1074‧‧‧引退單元
1076‧‧‧實體暫存器欄位單元
1077A‧‧‧向量暫存器單元
1077B‧‧‧寫入遮罩暫存器單元
1077C‧‧‧純量暫存器單元
1078‧‧‧重排序緩衝器單元
1100‧‧‧系統
1110‧‧‧處理器
1115‧‧‧處理器
1120‧‧‧圖像記憶體控制器集線器(GMCH)
1140‧‧‧記憶體
1145‧‧‧顯示器
1150‧‧‧ICH
1160‧‧‧外部圖像裝置
1170‧‧‧週邊裝置
1200‧‧‧第二系統
1214‧‧‧I/O裝置
1216‧‧‧第一匯流排
1218‧‧‧滙流排橋接器
1220‧‧‧第二匯流排
1222‧‧‧鍵盤/滑鼠
1224‧‧‧音訊I/O
1226‧‧‧通訊裝置
1228‧‧‧資料儲存單元
1230‧‧‧碼
1238~1239‧‧‧高效能圖像介面
1242‧‧‧記憶體
1244‧‧‧記憶體
1250‧‧‧互連
1252‧‧‧點對點介面
1254‧‧‧點對點介面
1270‧‧‧第一處理器
1272‧‧‧整合記憶體控制器集線器(IMC)
1276‧‧‧點對點介面
1278‧‧‧點對點介面
1280‧‧‧第二處理器
1282‧‧‧IMC
1286‧‧‧點對點介面
1288‧‧‧點對點介面電路
1290‧‧‧晶片組
1294‧‧‧點對點介面電路
1296‧‧‧介面
1298‧‧‧點對點介面電路
1300‧‧‧第三系統
1314‧‧‧I/O裝置
1315‧‧‧I/O裝置
1400‧‧‧SoC
1402‧‧‧互連單元
1410‧‧‧應用處理器
1420‧‧‧媒體處理器
1424‧‧‧影像處理器
1426‧‧‧音訊處理器
1428‧‧‧視訊處理器
1430‧‧‧靜態隨機存取記憶體(SRAM)單元
1432‧‧‧直接記憶體存取(DMA)單元
1440‧‧‧顯示單元
1500‧‧‧處理器
1502A-N‧‧‧核心
1506‧‧‧共享快取記憶體單元
1508‧‧‧整合圖像邏輯
1510‧‧‧系統代理單元
1512‧‧‧環狀互連單元
1514‧‧‧整合記憶體控制器單元
1516‧‧‧匯流排控制器單元
1602‧‧‧高階語言
1604‧‧‧x86編輯器
1606‧‧‧x86二進位碼
1610‧‧‧指令集二進位碼
1612‧‧‧指令轉換器
1614‧‧‧x86指令集核心
1616‧‧‧x86指令集核心
本發明係舉例說明及非限制於以下圖示,其中類似參照符號表示類似元素及其中:第1圖係說明處理器管線;第2A及2B圖係比較純量與向量操作;第3圖係說明可執行VPLANE指令執行單元中之邏輯電路實施例;第4圖係說明VPLANE指令之操作方法;第5圖係說明包括純量運算元資料在控制欄之指令格式;第6A圖,根據本發明實施例,係一方塊圖說明一般向量親合地指令格式及其A類指令樣板。
第6B圖,根據本發明實施例,係一方塊圖說明一般向量親合地指令格式及其B類指令樣板。
第7A-7D圖,根據本發明實施例,係說明範例特殊的向量親合地指令格式方塊圖。
第8圖,根據本發明實施例,係一暫存器構造方塊圖。
第9A圖,根據本發明實施例,係一單一CPU核心方塊圖,及其於晶粒上互連網路及於其2級(L2)快取記憶體之區域子集之連接。
第9B圖,根據本發明實施例,係第9A圖之部分CPU核心分解圖。
第10A-10B圖,根據本發明實施例,係方塊圖以說明範例亂序構造。
第11圖,根據本發明之實施例,係一系統方塊圖。
第12圖,根據本發明之實施例,係一第二系統方塊圖。
第13圖,根據本發明實施例,係一第三系統方塊圖。
第14圖,根據本發明實施例,係一SoC方塊圖。
第15圖,根據本發明實施例,係一具有整合記憶體控制器及圖像之單一核心處理器及多重核心處理器方塊圖。
第16圖,根據本發明實施例,係一方塊圖比較軟體指令將來源指令集中的二進位指令轉換至目標指令集中的
二進位指令。
100‧‧‧高階處理核心圖
101‧‧‧管線
102‧‧‧暫存器儲存空間
103_1、103_N‧‧‧功能單元
104_1、104_N、105_1、105_N‧‧‧遮罩邏輯
106‧‧‧遮罩暫存器空間
107‧‧‧向量暫存器儲存空間
Claims (18)
- 一種處理核心,包含:執行單元邏輯電路,具有:a)一第一暫存器以儲存一第一向量輸入運算元V2[ ];b)一第二暫存器以儲存一第二向量輸入運算元V3[ ];c)一第三暫存器以儲存一緊縮資料(packed data)結構,其包含純量輸入運算元a、b、c;及d)一乘法器以執行運算(a*V2[ ])+(b*V3[ ])+c。
- 如申請專利範圍第1項之處理核心,其中該乘法器具有一第一輸入以接收V2[ ],一第二輸入以接收a,一第三輸入以接收V3[ ]及一第四輸入以接收b,因而(a*V2[ ])及(b*V3[ ])係實質上同步計算。
- 如申請專利範圍第1項之處理核心,其中該執行單元包括微碼以迴圈(loop)該乘法器兩次,一第一迴圈以計算(a*V2[ ])及一第二迴圈以計算(b*V3[ ])。
- 如申請專利範圍第1項之處理核心,其中該乘法器包括四個分離的加法器結構,以一單精度模式計算((a*V2L[ ])+(b*V3L[ ])+c)+((d*V2R[ ])+(e*V3R[ ])+f)。
- 如申請專利範圍第4項之處理核心,其中d、e、f係封包於具有a、b、c之該緊縮資料(packed data)結構。
- 如申請專利範圍第1項之處理核心,其中於該緊縮資料(packed data)結構中之a、b及c之該等個別位置可由放置在用於該操作之一指令之一立即(immediate)運算元 中的資訊決定。
- 一種方法,包含:執行於一管線之一單一指令,該單一指令之該執行包括:載入一第一向量運算元V2[ ];載入一第二向量運算元V3[ ];載入一緊縮資料(packed data)結構包含純量數值a、b、c;及計算V1[ ]=(a*V2[ ])+(b*V3[ ])+c。
- 如申請專利範圍第7項之方法,進一步包含實質上同步計算(a*V2[ ])+(b*V3[ ])。
- 如申請專利範圍第7項之方法,進一步包含在一第一微碼迴圈(loop)計算(a*V2[ ]),及在一第二微碼迴圈(loop)計算(b*V3[ ])。
- 如申請專利範圍第7項之方法,進一步包含將一寫入遮罩應用於V1[ ]。
- 如申請專利範圍第7項之方法,其中該指令提供一立即(immediate)數值資訊,以由該緊縮資料(packed data)結構分別取出每一個a、b及c。
- 如申請專利範圍第7項之方法,其中該指令係由亦准許兩個向量來源運算元及一個目標之一指令格式建構。
- 一種處理核心,包含:執行單元邏輯電路,具有: a)一第一暫存器以儲存一第一向量輸入運算元;b)一第二暫存器以儲存一第二向量輸入運算元;c)一第三暫存器以儲存一包含純量輸入運算元a、b、c之緊縮資料(packed data)結構;及d)一乘法器以執行運算:(a*(第一向量輸入運算元))+(b*(第二向量運算元))+c。
- 如申請專利範圍第13項之處理核心,其中該乘法器具有一第一輸入以接收該第一向量輸入運算元,一第二輸入以接收a,一第三輸入以接收該第二向量輸入運算元及一第四輸入以接收b,因而(a*(第一向量輸入運算元))及(b*(第二向量輸入運算元))係實質上同步計算。
- 如申請專利範圍第13項之處理核心,其中該執行單元包括微碼以迴圈(loop)該乘法器兩次,一第一迴圈以計算(a*(第一向量輸入運算元))及一第二迴圈以計算(b*(第二向量輸入運算元))。
- 如申請專利範圍第13項之處理核心,其中該乘法器包括四個分離的加法器結構,以一單精度模式執行兩個分立的超級乘加(super MADD)計算。
- 如申請專利範圍第13項之處理核心,其中額外的純量d、e、f係以該單精度模式封包於具有a、b、c之該緊縮資料(packed data)結構。
- 如申請專利範圍第1項之處理核心,其中該緊縮資料(packed data)結構中之a、b及c之該等個別位置可由放置於該指令之一立即(immediate)運算元中的資訊決 定。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067096 WO2013095619A1 (en) | 2011-12-23 | 2011-12-23 | Super multiply add (super madd) instruction with three scalar terms |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342224A TW201342224A (zh) | 2013-10-16 |
TWI483185B true TWI483185B (zh) | 2015-05-01 |
Family
ID=48669259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101149304A TWI483185B (zh) | 2011-12-23 | 2012-12-22 | 具三個純量項之超級乘加(超級乘加(super MADD))指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9792115B2 (zh) |
CN (2) | CN104011664B (zh) |
TW (1) | TWI483185B (zh) |
WO (1) | WO2013095619A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI737652B (zh) * | 2015-12-23 | 2021-09-01 | 美商英特爾股份有限公司 | 併合乘-加(fma)低功能性單元 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9733935B2 (en) | 2011-12-23 | 2017-08-15 | Intel Corporation | Super multiply add (super madd) instruction |
US9355061B2 (en) | 2014-01-28 | 2016-05-31 | Arm Limited | Data processing apparatus and method for performing scan operations |
US20150277904A1 (en) * | 2014-03-28 | 2015-10-01 | Roger Espasa | Method and apparatus for performing a plurality of multiplication operations |
US20160179523A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Apparatus and method for vector broadcast and xorand logical instruction |
US9898286B2 (en) | 2015-05-05 | 2018-02-20 | Intel Corporation | Packed finite impulse response (FIR) filter processors, methods, systems, and instructions |
US9904513B2 (en) * | 2015-06-25 | 2018-02-27 | Intel Corporation | Handling instructions that require adding results of a plurality of multiplications |
US10592252B2 (en) | 2015-12-31 | 2020-03-17 | Microsoft Technology Licensing, Llc | Efficient instruction processing for sparse data |
US10459727B2 (en) | 2015-12-31 | 2019-10-29 | Microsoft Technology Licensing, Llc | Loop code processor optimizations |
GB2553783B (en) * | 2016-09-13 | 2020-11-04 | Advanced Risc Mach Ltd | Vector multiply-add instruction |
US10296338B2 (en) * | 2016-12-09 | 2019-05-21 | Intel Corporation | System, apparatus and method for low overhead control transfer to alternate address space in a processor |
US10877756B2 (en) | 2017-03-20 | 2020-12-29 | Intel Corporation | Systems, methods, and apparatuses for tile diagonal |
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 |
US10664270B2 (en) * | 2017-12-21 | 2020-05-26 | Intel Corporation | Apparatus and method for vector multiply and accumulate of unsigned doublewords |
CN113424162A (zh) | 2019-03-15 | 2021-09-21 | 英特尔公司 | 动态存储器重新配置 |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
EP4130988A1 (en) | 2019-03-15 | 2023-02-08 | INTEL Corporation | Systems and methods for cache optimization |
CN116594693B (zh) * | 2023-07-04 | 2023-09-22 | 中国兵器科学研究院 | 一种空间远距离传输数据编解码指令集系统及计算系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200413946A (en) * | 2003-01-29 | 2004-08-01 | Via Tech Inc | SIMD processor with scalar arithmetic logic units |
US6842765B2 (en) * | 2000-12-08 | 2005-01-11 | International Business Machines Corporation | Processor design for extended-precision arithmetic |
US7254698B2 (en) * | 2003-05-12 | 2007-08-07 | International Business Machines Corporation | Multifunction hexadecimal instructions |
TWI288350B (en) * | 2003-05-12 | 2007-10-11 | Ibm | Method for multi-pipe dispatch and execution of complex instructions in a superscalar processor |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
TW201106263A (en) * | 2009-08-07 | 2011-02-16 | Via Tech Inc | Instruction process methods, and superscalar pipelined microprocessors |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226171A (en) * | 1984-12-03 | 1993-07-06 | Cray Research, Inc. | Parallel vector processing system for individual and broadcast distribution of operands and control information |
US5838984A (en) | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
KR100267089B1 (ko) * | 1996-08-19 | 2000-11-01 | 윤종용 | 스칼라/벡터연산이조합된단일명령복수데이터처리 |
US6523055B1 (en) | 1999-01-20 | 2003-02-18 | Lsi Logic Corporation | Circuit and method for multiplying and accumulating the sum of two products in a single cycle |
GB2389433B (en) | 2002-06-08 | 2005-08-31 | Motorola Inc | Bit exactness support in dual-mac architecture |
US7689641B2 (en) * | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
TWI263934B (en) * | 2003-09-19 | 2006-10-11 | Via Tech Inc | Synchronous periodical orthogonal data converter |
US8037119B1 (en) * | 2006-02-21 | 2011-10-11 | Nvidia Corporation | Multipurpose functional unit with single-precision and double-precision operations |
GB2464292A (en) | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US9104510B1 (en) * | 2009-07-21 | 2015-08-11 | Audience, Inc. | Multi-function floating point unit |
CN101907984B (zh) * | 2009-08-07 | 2014-10-29 | 威盛电子股份有限公司 | 指令处理方法以及其所适用的超纯量管线微处理器 |
US8577950B2 (en) * | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
GB2474901B (en) | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
CN101876892B (zh) * | 2010-05-20 | 2013-07-31 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
US9792117B2 (en) * | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
-
2011
- 2011-12-23 CN CN201180075792.3A patent/CN104011664B/zh active Active
- 2011-12-23 CN CN201611063814.5A patent/CN106775592B/zh active Active
- 2011-12-23 US US13/976,997 patent/US9792115B2/en active Active
- 2011-12-23 WO PCT/US2011/067096 patent/WO2013095619A1/en active Application Filing
-
2012
- 2012-12-22 TW TW101149304A patent/TWI483185B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6842765B2 (en) * | 2000-12-08 | 2005-01-11 | International Business Machines Corporation | Processor design for extended-precision arithmetic |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
TW200413946A (en) * | 2003-01-29 | 2004-08-01 | Via Tech Inc | SIMD processor with scalar arithmetic logic units |
TWI230869B (en) * | 2003-01-29 | 2005-04-11 | Via Tech Inc | SIMD processor with scalar arithmetic logic units |
US7254698B2 (en) * | 2003-05-12 | 2007-08-07 | International Business Machines Corporation | Multifunction hexadecimal instructions |
TWI288350B (en) * | 2003-05-12 | 2007-10-11 | Ibm | Method for multi-pipe dispatch and execution of complex instructions in a superscalar processor |
TW201106263A (en) * | 2009-08-07 | 2011-02-16 | Via Tech Inc | Instruction process methods, and superscalar pipelined microprocessors |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI737652B (zh) * | 2015-12-23 | 2021-09-01 | 美商英特爾股份有限公司 | 併合乘-加(fma)低功能性單元 |
Also Published As
Publication number | Publication date |
---|---|
CN104011664B (zh) | 2016-12-28 |
US20140052969A1 (en) | 2014-02-20 |
CN106775592A (zh) | 2017-05-31 |
WO2013095619A1 (en) | 2013-06-27 |
US9792115B2 (en) | 2017-10-17 |
TW201342224A (zh) | 2013-10-16 |
WO2013095619A9 (en) | 2013-09-26 |
CN104011664A (zh) | 2014-08-27 |
CN106775592B (zh) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI483185B (zh) | 具三個純量項之超級乘加(超級乘加(super MADD))指令 | |
TWI818885B (zh) | 執行複數的熔合乘-加指令的系統與方法 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI525538B (zh) | 超級乘加(super madd)指令技術 | |
TWI510921B (zh) | 快取記憶體共處理單元 | |
TWI517031B (zh) | 用於呈現各別複數之複數共軛根之向量指令 | |
TWI517039B (zh) | 用以對緊縮資料執行差異解碼之系統,設備,及方法 | |
TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
TWI474258B (zh) | 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 | |
TWI543076B (zh) | 用於資料類型之向下轉換的裝置及方法(二) | |
TWI489383B (zh) | 遮蔽排列指令的裝置及方法 | |
TWI550508B (zh) | 用於複製資料結構之設備及方法 | |
TW201717037A (zh) | 用於緊耦合異質計算的硬體處理器及方法 | |
TWI498815B (zh) | 用以響應於單一指令而執行橫向部分和之系統、裝置及方法 | |
TWI481991B (zh) | 改良型排列指令之裝置及方法 | |
TWI564795B (zh) | 四維摩頓座標轉換處理器、方法、系統及指令 | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
TWI556164B (zh) | 具有不同讀取及寫入遮罩之多元件指令 | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 | |
TWI464677B (zh) | 經改良插入指令之裝置及方法 | |
TWI486872B (zh) | 向量緊縮壓縮及重複之實施系統、設備和方法 | |
TWI482086B (zh) | 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法 | |
CN104067224A (zh) | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 | |
TWI517032B (zh) | 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法 | |
TWI470541B (zh) | 用於滑動視窗資料收集之設備及方法 |