TWI470543B - 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令 - Google Patents

用於多精度算術之單一指令多重資料(simd)整數乘法累加指令 Download PDF

Info

Publication number
TWI470543B
TWI470543B TW101145437A TW101145437A TWI470543B TW I470543 B TWI470543 B TW I470543B TW 101145437 A TW101145437 A TW 101145437A TW 101145437 A TW101145437 A TW 101145437A TW I470543 B TWI470543 B TW I470543B
Authority
TW
Taiwan
Prior art keywords
instruction
mac
factor
vector
vector register
Prior art date
Application number
TW101145437A
Other languages
English (en)
Other versions
TW201346724A (zh
Inventor
Vinodh Gopal
Gilbert M Wolrich
Erdinc Ozturk
James D Guilford
Krik S Yap
Sean M Gulley
Wajdi K Feghali
Martin Dixon
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201346724A publication Critical patent/TW201346724A/zh
Application granted granted Critical
Publication of TWI470543B publication Critical patent/TWI470543B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

用於多精度算術之單一指令多重資料(SIMD)整數乘法累加指令
通言之,本發明的實施例與電腦處理器架構有關,更特定地說,與當被執行時,導致特定結果的指令有關。
很多處理器具有單指令多資料(SIMD)架構。SIMD架構通常有助於明顯提升處理速度。在SIMD架構中,以同時或平行對多個資料元件或多個資料元件對操作的向量指令(也稱為緊縮資料指令或SIMD指令)取代僅對一個資料元件或資料元件對操作的純量指令。處理器可具有回應向量指令而同時或平行實施多個操作的平行執行硬體。
在SIMD架構中,多資料元件可被當成緊縮資料或向量資料而緊縮在一個暫存器或記憶體位置內。在向量資料中,暫存器或其它儲存位置的位元可被邏輯地分割成多個固定大小之資料元件的序列。每一個資料元件可代表一單獨的資料件,其連同典型上具有相同大小的其它資料元件儲存在暫存器或儲存位置內。例如,256位元寬的暫存器可具有4個64位元寬的向量元件、8個32位元寬的向量元件、16個16位元寬的向量元件,或32個8位元寬的向量元件。每一個向量元件可代表一分離獨立的資料件,其可被單獨地或與其它向量元件獨立地被操作。
典型上,向量加指令可指定對來自兩個源向量運算元之所有對應的資料元件對實施單次向量操作(例如,加 法)以產生目的或結果向量。源向量運算元可以是大小相同的運算元,可包含相同寬度的資料元件,且因此每一個皆包含相同數量的資料元件。在兩源向量運算元中之相同位元位置中的源資料元件,可代表對應的資料元件對。向量操作可對這些對應的源資料元件對每一個單獨或獨立地實施,以產生數量匹配的結果資料元件,且因此,每一個對應的源資料元件對可具有對應的結果資料元件。典型上,關於此類指令的結果資料元件都具有相同的次序,且它們通常都具有相同的大小。
在以下的描述中陳述了諸多特定的細節。不過,須瞭解,沒有這些特定的細節仍可實行本發明的實施例。在其它例子中,為了不模糊了對本描述的瞭解,並未詳細顯示習知的電路、結構、及技術。
本發明的實施例提供了有效率地乘長整數的機制。特別是,本發明的實施例提供了以平行方式有效率地乘大量長整數的機制。
公鑰密碼運算通常招致需要多重精確度乘法的長整數計算。這些運算諸如模指數運算(modular exponentiation)係高度密集的計算。電腦經常需要在短的時間間隔內處理較大量的長整數乘法與加法。例如,負責為企業建立安全插座層(secure socket layer、SSL)異動的伺服器會在短的時間間隔內接收來自企業用戶們大量的 連接請求。每一項異動都涉及包括整數乘法與加法的密碼運算。本發明的實施例允許由多個異動所引起的乘法與加法可被當成多個獨立的問題同時地處理。
圖1係處理器100之例示實施例的方塊圖。處理器100可以是任何各種複雜指令集計算(CISC)處理器、各種精減指令集計算(RISC)處理器、各種極長指令(VLIW)處理器、以上的各種混合,或完全其它類型的處理器。在一或多個實施例中,處理器100可以是通用處理器(例如由Intel Corporation,of Santa Clara,California所製造的通用微處理器類型)。或者,指令處理裝置可以是特殊用途處理器。適合的特殊用途處理器例包括但不限於網路處理器、通信處理器、密碼處理器、繪圖處理器、共處理器、內嵌式處理器、數位信號處理器(DSP)、以及控制器(例如微控制器),以上僅是舉幾個例子說明。
處理器100具有指令集架構(ISA)101。指令集架構101代表處理器100與程式有關之部分的架構。指令集架構101通常包括原生指令、架構暫存器、資料類型、位址模式、記憶體架構、中斷與異常處置、處理器100的外部輸入與輸出(I/O)。指令集架構101有別於微架構,其通常代表被選擇用來實施指令集架構的特定處理器設計技術。具有不同微架構的處理器可共用共同的指令集架構。例如,Intel Corporation,of Santa Clara,California的某些微處理器與Advanced Micro Devices,Inc.of Sunnyvale, California的某些微處理器使用實質上不同的內部微架構來施行x86指令集之類似的部分。
指令集架構101包括架構暫存器(例如,架構暫存器檔案)106。在一實施例中,架構暫存器106包括通用(GP)暫存器116、向量暫存器126、遮罩暫存器136、純量浮點暫存器(未顯示)、及其它暫存器(未顯示)。每一個向量暫存器126皆可操作來儲存向量(或SIMD資料)。在一實施例中,向量暫存器126包括一組(例如,32個)向量暫存器(例如,zmm0至zmm31)。每一個暫存器zmm0-zmm31皆具有相同的寬度;例如,512位元或其它的寬度。在一實施例中,遮罩暫存器136包括一組(例如,8個)遮罩暫存器(k0至k7),每一個64位元寬。也可使用其它的資料寬度。以下將參考圖3進一步描述與乘法累加指令及加法指令有關之向量暫存器126與遮罩暫存器130的使用。
架構暫存器106代表板上處理器的儲存位置。本文所提及的架構暫存器106也簡稱為暫存器。除非特別說明或明示,本文中所使用的架構暫存器、暫存器檔案、及暫存器等片語,意指為軟體及/或編程器可見(例如軟體-可見)的暫存器,及/或由通用巨指令所指定來識別運算元的暫存器。這些暫存器106係對比於某特定微架構中之其它的非架構暫存器(例如被指令使用的暫時性暫存器、重排序緩衝區、止用暫存器等)。
圖示說明的指令集架構101也包括被處理器100支援 的指令集102。指令集102包括數種不同類型的指令。指令集102的這些指令代表巨指令(例如,提供給處理器100供執行的指令)而不是微指令或微-ops(例如,其為來自於處理器100之解碼器129解碼巨指令的結果)。
指令集102包括一或多個向量指令103。每一個向量指令103可操作來致使或導致處理器100對指令所指示的一或多個向量運算元的資料元件實施向量操作。每一個向量指令103也可使用一或多個遮罩來遮蔽、預測、或有條件的控制該向量處理。遮罩可儲存在寫入遮罩暫存器(其為架構暫存器106的一部分)中,且可代表表遮罩運算元、預測運算元、或有條件操作控制運算元。
遮罩可操作來遮蔽或有條件控制每個資料元件顆粒的向量處理。例如,無論向量指令103之向量操作的結果是否要被存入向量結果,遮罩都可操作來對來自單個源向量運算元之個別的資料元件或來自兩個源向量運算元之對應資料元件的個別對實施遮蔽。向量指令103可允許每一個資料元件或對應資料元件的對分別地且各資料元件獨立地被預測或有條件的控制。向量指令103操作與遮蔽可提供某些優點,諸如,例如,提高碼密度及/或較高的指令產出量。
在一實施例中,向量指令103包括一或多個向量乘法指令。諸如乘法累加(MAC)指令104及與其相關的加法指令105。這些指令104與105可操作來致使或導致處理器100以平行的方式乘兩個大的整數,或乘數對大的整 數。
處理器100也包括執行邏輯109。執行邏輯109可操作來執行或處理指令集102的指令。執行邏輯109可包括執行單元、函數單元、算術邏輯單元、邏輯單元、算術單元等。處理器100也包括解碼器129,用來將巨指令解碼成微指令或微操作供執行邏輯109執行。
考慮兩因數相乘的例子可有助於進一步解釋MAC指令104的實施例,一個因數為1個四倍字(Qword),而另每一個因數為N個四倍字。每一個四倍字為64位元寬。圖2係圖示說明實施(1×N)四倍字乘-累加(S[7:0] =A i ×B[7:0] +S[7:0] )之基本操作的例示實施例。在圖2中,在頂端的S[7:0] (以230指示)係初始的部分和,而在底部的S[7:0] (以240指示)係結果的部分和。關於每一個乘法操作210(A i ×B n ,n=0,1,...7),產生(64×64)=128位元的乘積。每一個乘積以(Hi n Lo n )來指示,如圖之對角線中的登錄所示,其中,Hi n 為高階部分(即最高有效半),及Lo n 為低階部分(即最低有效半)。可用最少的微操作(μops)次數與潛時將此乘積加到部分和S n 。將乘積加到部分和的一方法為執行兩次加法操作,且每一次的加法操作使用使用一個獨立的進位鏈:S n =S n +Lo n (使用第一進位鏈)
S n =S n +Hi n-1 (使用第二進位鏈)
假設S[7:0] 被初始化成全部為零。接下來例示的加法操作220如圖2中的垂直虛線所指示,加法操作等同於S 0 =S 0 +Lo 0 S 1 =S 1 +Lo 1 +Hi 0 S 2 =S 2 +Lo 2 +Hi 1 S 3 =S 3 +Lo 3 +Hi 2 、等。
本發明的實施例提供乘法累加(MAC)指令,其可乘兩個長整數與一個進位鏈。圖1的MAC指令104在本質上為SIMD,且是作用於無符號的整數運算元,而非將乘法指令指定為單獨的指令。在圖2的例子中,A i B n 相乘,n=0,1,...7,其中,A i 可為第一長整數A 的一部分,且每一個B n 可為第二長整數B 的一部分。該乘法使用S n ,n=0,1,...7來儲存部分和。在(A 0 ×B n ,n=0,1,...7)的乘法操作之後,計算可移到A 1 ×B n A 2 ×B n 等等,直至長整數A的所有部分都被處理為止。每一個乘法操作皆可使用S n 來累加該部分和。最後,S n 具有最終的結果。
在一實施例中,圖1的MAC指令104被定義來實施:Hi n S n =A i ×B n +S n (方程式1),接著是使用單進位鏈(加與進位)的加法指令,如下:S n =S n +Hi n-1 (方程式2)
MAC指令104產生其寬度為每一個因數(A i B n )之寬度兩倍的乘積。因此,MAC指令104被定義成將乘積寫入一對目的暫存器(用於乘積的最低有效半與乘積的最高有效半)。MAC指令104不需要讀取或寫入任何進位資訊,因為乘積不會大於兩個目的暫存器的寬度。
在某些實施例中,會有在指令內編碼的暫存器不能超 過3個的限制。因此,其必須指定隱含的暫存器運算元。由於A i 的乘法序列(用於乘B n ,n=0,1,...7)不會改變,因此使用A i 做為隱含的源運算元很方便。此外,MAC指令104可使用S n 做為乘積之最低有效半的源以及目的。因此,在一實施例中,MAC指令104僅需要編碼3個隱含運算元(即,B n 、乘積的最低有效半、與乘積的最高有效半)。MAC指令內的加法操作被選擇,以使得進到MAC指令104的輸入,與前一個MAC指令104的輸出無關。如果MAC指令104的源運算元是由前一個MAC指令產生,則有效計算時間是受MAC指令104之潛時的限制,且對它的性能有負面衝擊。
MAC指令104可應用於64位元(四倍字)、32位元(兩倍字)或其它寬度的運算元。寬度可根據權衡性能需求與實施成本來選擇。在一實施例中,用於四倍字大小之運算元的MAC指令104稱為vpmac3.q ,且可指定為:zmmdst_H,zmmsrcdst=ZMM0×zmmsrc1+zmmsrcdst
vpmac3.q 指令係上述方程式1之施行。其可用2或多個微操作來施行,其中,第二個微操作可用來寫回乘積的最高有效半,藉以提升效率。
在以上描述的vpmac3.q 中,ZMM0係以A i 預載入的隱含運算元、zmmsrc1係用於儲存B n 的源運算元、zmmsrcdst係用於儲存S n 的源(以及目的)運算元、以及zmmdst_H係用於儲存Hi n 的目的。關於四倍字的乘法,每一個運算元ZMM0、zmmsrc1、zmmsrcdst、及 zmmdst_H皆具有64位元寬的寬度。在實施例中,其中,處理器具有512位元寬的向量暫存器(即,向量寬度VW =512),每一個向量暫存器可劃分成8“路”,每路為64位元寬(即,VW/dw =512/64=8)。因此,ZMM0、zmmsrc1、zmmsrcdst、及zmmdst_H可佔有4個不同向量暫存器中的一路。這些向量暫存器中的其它7路可用於另外7個MAC操作,每一個操作如同獨立的乘法問題來執行。
圖3的方塊圖說明圖1之向量暫存器126(例如,zmm0至zmm31)之實施例中的路。向量暫存器126也稱為zmm暫存器126。每一個zmm暫存器126為512位元寬。關於四倍字操作,每一個zmm暫存器126可被劃分成8條獨立的路,並當成8個獨立的緩衝區來使用。在前文之N個四倍字乘以1個四倍字的例子中,MAC指令的計算可使用zmm暫存器126的一路來儲輸入與輸出運算元。因此,每一個運算元ZMM0、zmmsrc1、zmmsrcdst、及zmmdst_H可以是位在zmm暫存器126中之一路內的部分。zmm暫存器126之其它的路可用於大小相同之其它獨立的MAC操作。因此,在以平行方式之多個獨立乘法的計算中,zmm暫存器126可被當成多個緩衝區使用。
圖4A係為四倍字與雙倍字操作實施圖1之MAC指令104(例如,vpmac3 )之虛擬碼的例子。指令104也可應用於其它資料寬度。虛擬碼顯示經由MAC指令104計算之乘積的最高有效半與最低有效半被存入兩個不同的向量 暫存器。
關於接在MAC指令104之後的加法操作(如2之例中所顯示的垂直虛線),用於四倍字大小之運算元的加法指令105的一實施例稱為Add _with _mask.q ,且可指定為:kdst:zmmdst=zmmsrc1+zmmsrc2+ksrc
Add _with _mask.q 指令可用來施行前述的方程式2。使用向量暫存器(例如,某些zmm暫存器)與用來指示進位資訊之附加的遮罩暫存器,加法可被有效率地實施。在Add _with _mask.q 指令中,zmmsrc1可用來儲存輸入S n 、zmmsrc2可用來儲存Hi n-1 、ksrc可用來儲存進位輸入、zmmdst可用來儲存輸出S n 、及kdst可用來儲存進位輸出。
在一實施例中,ksrc與kdst每一個皆為以k0至k8所指示之遮罩暫存器(例如,圖1與圖3的遮罩暫存器136)中的1位元。每一個位元可對應於zmm暫存器126的路。在實施例中,其中,zmm暫存器為512位元寬,用於四倍字大小之操作的遮罩至少需要8位元寬(用於8路)。在實施例中,處理器中的遮罩暫存器為64位元寬,該8位元遮罩可以是遮罩暫存器的一部分(例如,低階的8位元)。因此,使用這些遮罩暫存器來代替用於純量整數指令的傳統算術旗標(例如,進位旗標)。
圖3顯示8個遮罩暫存器136(k0至k7)的實施例,每一個遮罩暫存器皆為64位元寬。關於上述的加法操作,k0(或任何其它的遮罩暫存器136)的1個位元可用 做為ksrc(用於進位輸入)及kdst(用於進位輸出)。因此,獨立計算的8路對應於用於進位資訊之k0的8個位元。
圖4B係用來為四倍字與雙倍字大小之運算元實施Add _with _mask 指令之虛擬碼(vpadd _with _mask )的例子。此加法指令亦可應用於其它資料寬度。虛擬碼顯示加法指令所計算的結果被存入兩個不同的暫存器;一個用於儲存和(資料寬度與運算元大小相同)以及另一個用於儲存進位輸出(結果寬於運算元的大小)。
圖5係樣本碼500使用MAC指令104與加法指令105計算相同大小運算元之8個獨立乘法問題的例子。在此樣本碼500中,每一個獨立的問題係乘1×N四倍字。樣本碼使用向量暫存器zmm0-zmm25,其可以是圖3的向量暫存器126。每一個獨立的乘法使用向量暫存器zmm0-zmm25的一路。因數A i 被當成隱含運算元存入zmm0(即,zmm0儲存8個不同的A i ,每一個獨立乘法一個)。除了A i ×B 0 之外,接在用於A i ×B n (n=1,....,7)之每一個MAC指令(vpmac3.q )之後的是加法指令(vpadd_with_mask)。樣本碼顯示連續的MAC指令之間沒有資料相依性。樣本碼也顯示每路或每一個獨立問題僅一個單進位鏈(例如,遮罩暫存器k0的一個位元)。
圖6係指令處理裝置615之例示實施例的方塊圖,指令處理裝置615具有執行單元640,可操作來執行包括有圖1之MAC指令104與加法指令105之例示實施例的指 令。在某些實施例中,指令處理裝置615可以是處理器及/或可以包括在處理器(例如,圖1之處理器100或類似處理器)內。另者,指令處理裝置615可包括在不同的處理器或電子系統中。
指令處理裝置615接收一或多個MAC指令104與加法指令105。解碼器630(其可以是圖1的解碼器129或類似解碼器)接收高階機器指令或巨指令之形式的指令,並將其解碼以產生較低階微操作、微碼進入點、微指令、或其他低階指令或反映及/或源自原始較高階指令的控制信號。低階指令或控制信號可經由較低階(例如,電路層級或硬體層級)操作可實施較高階指令的操作。解碼器630可使用各種不同機制來實施。適合之機制的例子包括但不限於微碼隨機存取記憶體(ROM)、查詢表、硬體裝置、可程式邏輯陣列(PLA)、習知技術中用來實施解碼器的其它機制。
執行單元640耦接至解碼器630。執行單元640可接收來自解碼器630的一或多個微操作、微碼進入點、微指令、其它指令、或反映或源自於所接收之MAC指令104與加法指令105的其它控制信號。執行單元640包括用來實施乘法的乘法邏輯641,及用來實施加法的加法邏輯642。
執行單元640也接收來自向量暫存器670(例如,圖1與圖3之向量暫存器126)的輸入,並將輸出存入向量暫存器670。執行單元640接收來自遮罩暫存器680(例 如,圖1與圖3之遮罩暫存器136)的進位輸入,並將進位輸出存入遮罩暫存器680。
為避免模糊了描述,已顯示及描述了較簡單的指令處理裝置615。應明瞭,其它的實施例可具有一個以上的執行單元。例如,該裝置可包括多個不同類型的執行單元,諸如,例如,算術單元、算術邏輯單元(ALU)、整數單元、浮點單元、等。這些單元中至少其一可回應本文所揭示之迴路調正指令的實施例。指令處理裝置或處理器的其它實施例可具有多核心、邏輯處理器、或執行引擎。可操作來執行一或多個迴路調正指令的執行單元可包括在至少一個、至少兩個、大部分、或所有核心、邏輯處理器、或執行引擎內。
指令處理裝置615或處理器也可選擇性地包括一或多個其它習知的組件。例如,其它的實施例可包括一或多個指令取邏輯、排程邏輯、分支預測邏輯、指令與資料快取記憶體、指令與資料轉譯支援緩衝器、預提取緩衝器、微指令佇列、微指令序列器、匯流排介面單元、第二或較高階快取記憶體、指令排程邏輯、止用邏輯、暫存器更名邏輯、諸如此類、以及它們的各種組合。應理解的是,在處理器中的組件字面上有的眾多不同組合及配置,而本發明之範疇不應被限制在任何已知的此組合及配置中。
圖7A與7B係分別處理MAC指令(諸如圖1之MAC指令104)與加法指令(諸如圖1之加法指令105)之方法700與方法705之例示實施例的流程圖。在各不同的實 施例中,方法700與705可藉由通用處理器、特殊用途處理器(例如,繪圖處理器或數位信號處理器)、或其它類型的數位邏輯裝置或指令處理裝置來實施。在某些實施例中,方法700與705可藉由圖1之處理器100、或圖6之指令處理裝置615、或類似的處理器或指令處理裝置來實施。另者,方法700與705可藉由處理器或指令處理裝置之不同的實施例來實施。此外,圖1的處理器100與圖6的指令處理裝置615可實施與方法700和705那些相同、類似、或不同之操作與方法的實施例。
在一實施例中,方法700包括處理器接收MAC指令,其指示第一向量暫存器做為第一運算元、第二向量暫存器做為第二運算元、及第三向量暫存器做為目的(方塊710)。第一向量暫存器儲存第一因數及第二向量暫存器儲存MAC指令的部分和。執行MAC指令以第一因數乘隱含的第二因數而產生乘積,並將部分和加到乘積以產生結果(方塊720)。第一因數、隱含的第二因數、及部分和具有相同的資料寬度,及乘積具有兩倍的資料寬度。此外,第一因數、隱含的第二因數、及部分和係無符號的整數。結果的最高有效半存入第三向量暫存器(方塊730)及結果的最低有效半存入第二向量暫存器(方塊740)。
在一實施例中,方法705包括處理器接收加法指令,其指示第一運算元、第二運算元、與遮罩暫存器(方塊750)。第一運算元儲存目前MAC指令所產生之結果的最低有效半、第二運算元儲存先前MAC指令所產生之先前 結果的最高有效半、及遮罩暫存器儲存進位輸入。執行加法指令以將第一運算元加到第二運算元與進位輸入,以產生和與進位輸出(方塊760)。將和存入向量暫存器(例如,圖3之其中一個zmm暫存器136的路內)(方塊770)。在一實施例中,用於儲存和的向量暫存器與由第一運算元指示的暫存器可為相同的暫存器。將進位輸出存入遮罩暫存器(例如,遮罩暫存器的一位元)(方塊780)。
圖示說明的方法包括從處理器或指令處理裝置之外側(例如,從軟體之觀點)可視的操作。在其它的實施例中,該方法可選擇性地包括一或多項其它操作(例如,發生於處理器或指令處理裝置內部內的一或多項操作)。舉例來說,在接收指令之後,指令可被解碼、轉譯、仿真、或以其它方式轉換成一或多個其它指令或控制信號。
例示性電腦系統與處理器-圖8-12
圖8-12係例示性電腦系統與處理器。習知技術中的其它系統設計與組態用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、內嵌式處理器、數位信號處理器(DSP)、繪圖裝置、視訊遊戯裝置、機上盒、微控制器、行動電話、可攜式媒體播放機、手持式裝置、及各種其它電子裝置也都適用。通言之,有能力結合如本文所揭示之處理器及/或其它執行邏輯之各式各樣的系統或電子裝置一般都適用。
現請參閱圖8,顯示按照本發明一實施例之系統1300的方塊圖。系統1300包括一或多個處理器1310、1315,其耦接至圖形記憶體控制器集線器(graphics memory controller hub;GMCH 1320。選用性質的額外處理器1315在圖8中以虛線來表示。
每一個處理器1310、1315可以處理器1700的某些型式。不過,須注意,整合式繪圖邏輯與整合式記憶體控制單元不太可能存在於處理器1310、1315內。
圖8說明的GMCH 1320耦接於記憶體1340,其例如可以是動隨機存取記憶體(DRAM)。在至少一實施例中,DRAM與非揮發性快取記憶體有關。
GMCH 1320可以是晶片組或晶片組的一部分。GMCH 1320可以與處理器1310、1315通信,並控制處理器1310、1315與記憶體1340之間的互動。GMCH 1320也做為處理器1310、1315與系統1300之其它元件之間的加速匯流排介面。在至少一實施例中,GMCH 1320與處理器1310、1315經由多點匯流排通信,諸如前端匯流排(FSB)1395。
此外,GMCH 1320耦接至顯示器1345(諸如平顯示器)。GMCH 1320可包括整合式繪圖加速器。GMCH 1320進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)1350,其可用來將各種不同的周邊裝置耦接至系統1300。圖8之實施例中顯示的例子係外部繪圖裝置1360連同另一個周邊裝置1370,外部繪圖裝置1360是耦接於ICH 1350之分離的繪圖裝置。
另者,在系統1300中也可存在額外或不同的處理器。例如,額外的處理器1315可包括與處理器1310相同的額外處理器,附加的處理器異質於或不對稱於處理器1310、加速器(諸如,例如,繪圖加速器或數位信號處理器(DSP)單元)、現場可程式閘陣列、或任何其它的處理器。就優點之度量的範圍而論,實體資源1310、1315之間可有各種差異,包括架構、微架構、熱、功率消耗特徵、諸如此類。這些差異有效地在處理元件1310、1315之中表現出它們自已的不對稱與異質性。在至少一實施例中,各種不同的處理元件1310、1315可存在於同一晶粒封裝內。
現請參閱圖9,顯示按照本發明之實施例之第二系統1400的方塊圖。如圖9所示,多處理器系統1400係點對點互連系統,且包括經由點對點互連1450而耦接的第一處理器1470與第二處理器1480。如圖9所示,每一個處理器1470與1480可以是某種型式的處理器1700。
另者,一或多個處理器1470、1480可以是除了處理器以外的元件,諸如加速器或現場可程式閘陣列。
雖然僅顯示兩個處理器1470、1480,但須瞭解,本發明的範圍並不限於此。在其它實施例中,在某特定的處理器中可存在一或多個額外的處理元件。
處理器1470可進一步包括整合式記憶體控制器集線器(IMC)1472與點對點(P-P)介面1476與1478。同樣 地,第二處理器1480可包括IMC 1482與P-P介面1486與1488。處理器1470、1480可使用PtP介面電路1478與1488經由點對點(PtP)介面1450交換資料。如圖9所示,IMC 1472與1482將處理器耦接至各自的記憶體,即,記憶體1442與記憶體1444,其為主記憶體的一部分,局部地附接於各自的處理器。
處理器1470、1480每一個可使用點對點介面電路1476、1494、1486、與1498經由個各點對點介面1452、1454與晶片組1490交換資料。晶片組1490也可經由高性能繪圖介面1439與高性能繪圖電路1438交換資料。
共有快取(未顯示)可包括在處理器內或兩處理器的外部,但經由P-P互連與處理器連接,以致於如果處理器被置入低電力模式,任一或兩處理器的本地快取資訊可儲存在共有快取中。
晶片組1490可經由介面1496耦接至第一匯流排1416。在一實施例中,第一匯流排1416可以是周邊組件互連(PCI)匯流排,或諸如PCI快捷匯流排或其它第三代I/O互連匯流排等的匯流排,雖然本發明的範圍不限於此。
如圖9所示,各種的I/O裝置1414可耦接至第一匯流排1416,加之匯流排電橋1418將第一匯流排1416耦接至第二匯流排1420。在一實施例中,第二匯流排1420可以是低接腳數(LPC)匯流排。在一實施例中,各種的裝置可耦接至第二匯流排1420,包括例如鍵盤及/或滑鼠 1422、通信裝置1426、及資料儲存單元1428,諸如磁碟機或包括有碼1430的其它大量儲存裝置。此外,音頻I/O1424可耦接至第二匯流排1420。須注意,其它的架構也都可行。例如,系統可實施多點分岐匯流排或其它這類架構來取代圖9的點對點架構。
現請參閱圖10,顯示按照本發明之實施例之第三系統1500的方塊圖。在圖10中與圖9相同的元件賦予相同參考編號,且為了避免模糊了圖10中的其它態樣,故圖10中省略了圖9的某些態樣。
圖10說明處理器1470、1480可分別包括整合式記憶體與I/O控制邏輯(“CL”)1472與1482。至少在一實施例中,CL 1472、1482包括記憶體控制器集線器邏輯(IMC),諸如前文與圖89及14相關的描述。此外,CL 1472、1482也包括I/O控制邏輯。圖15說明不僅記憶體1442、1444耦接至CL 1472、1482,且I/O裝置1514也耦接至控制邏輯1472、1482。舊的I/O裝置1515耦接至晶片組1490。
現請參閱圖11,顯示按照本發明實施例之晶片上系統(SoC)1600的方塊圖。圖12中類似的元件賦予相同的參考編號。此外,虛線框係更先進之SoC上選用的特徵。在圖11中,互連單元1602耦接至:應用程式處理器1610,其包括一組一或多個核心1702A-N及共用的快取單元1706;系統代理單元1710;匯流排控制器單元1716;整合式記憶體控制器單元1714;一組一或多個媒體處理器 1620,其可包括整合式繪圖邏輯1708、用於提供靜止影像及/或視訊攝影機功能的影像處理器1624、用於提供硬體音頻加速的音頻處理器1626、以及用於提供視訊編碼/解碼加速的視訊處理器1628;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;及用於耦接至一或多個外接顯示器的顯示單元1640。
本文所揭示之機制的實施例可在硬體、軟體、韌體、或這些實施方法的組合中實施。本發明的實施例可實施為可在可程式系統上執行的電腦程式或程式碼,該可程式系統包含至少一個處理器、儲存系統(包括揮發與非揮發記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置。
程式碼可應用於用以實施本文所描述之功能並產生輸出資訊的輸入資料。輸出資訊可按習知的方式應用於一或多個輸出裝置。基於此應用之目的,處理系統包括具有處理器的任何系統,諸如,例如,數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可在高階程序或物件導向程式語言中實施,用以與處理系統通信。如有需要,程式碼也可在組合或機器語言中實施。事實上,本文所描述的機制並非受限於任何特定的程式語言範圍。無論如何,該語言可以是編譯或解譯的語言。
至少一實施例的一或多個態樣可藉由儲存在機器可讀取媒體上的代表性指令來實施,這些指令代表處理器內的各種邏輯,當被機器讀取時,致使機器製造邏輯來實施本文所描述的技術。這些代表是所謂的“IP核心”,可儲存在實體的機器可讀取媒體上,並供應給各不同的客戶或製造設備以載入到實際製造邏輯或處理器的製造機具。
此機器可讀取媒體包括但不限於藉由機器或裝置所製造或形成之物件的非暫時性實體配置,包括諸如硬碟的儲存媒體,任何其它類型的碟片,包括軟碟、光碟(唯讀光碟(CD-ROM)、可複寫光碟(CD-RW))、及磁光碟;半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)、磁或光卡、或任何其它類型適合儲存電子指令的媒體。
因此,本發明之實施例也包括包含有指令與向量友好指令格式或包含有設計資料之非暫時性實體的機器可讀取媒體,諸如硬體描述語言(Hardware Description Language;HDL),其定義結構、電路、設備、處理器及/或本文所描述的系統特徵。這些實施例也可稱為程式產品。
在某些情況中,指令轉換器用來將指令從源指令集轉換成目標指令集。例如,指令轉換器可轉譯(例如,使用 靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、漸變、仿真、或者是將指令轉換成可被核心處理之一或多種其它指令的其它方法。指令轉換器可在軟體、硬體、韌體、或以上這些的組合中實施。指令轉換器可在處理器上、處理器外、或部分在處理器上而部分在處理器外。
圖13係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集中之二進制指令之對照的方塊圖。雖然指令轉換器也可以替代地在軟體、韌體、硬體、或以上這些的各種組合中實施,但在說明的實施例中,指令轉換器係軟體指令轉換器。圖13顯示高階語言1802的程式可使用x86編譯器1804編譯,以產生可被具有至少一個x86指令集核心1816之處理器原生地執行的x86二進制碼1806(其假設被編譯的某些指令係向量友好指令格式)。具有至少一個x86指令集核心1816的處理器代表可實質地實施與具有至少一個x86指令集核心之Intel處理器相同功能的任何處理器,其可藉由相容地執行或以其它方式處理(1)Intel x86指令集核心之實質部分的指令集,或(2)為了獲致與如同具有至少一個x86指令集核心之Intel處理器實質相同之結果,而以在具有至少一個x86指令集核心之Intel處理器上執行為目標之應用程式的目的碼版本或其它軟體。x86編譯器1804代表一編譯器,無論有或無額外的鏈結處理,其可操作以產生可在具有至少一個x86指令集核心1816之Intel處理器上執行的x86二進制碼1806(例如目標碼)。同樣 地,圖13顯示高階語言1802的程式可使用替代的指令集編譯器1808編譯,以產生可被不具有至少一個x86指令集核心之處理器1814(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集)原生地執行的替代指令集二進制碼1810。指令轉換器1812被用來將x86二進制碼1806轉換成可被無x86指令集核心之處理器1814原生地執行的碼。此經轉換的碼不太可能與替代指令集二進制碼1810相同,原因是此指令轉換器的能力很難做到;不過,經轉換的碼將可完成一般的操作,及從替代指令集整理指令。因此,指令轉換器1812代表軟體、韌體、硬體、或它們的組合,經由仿真、模擬、或任何其它處理,允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進制碼1806。
本文所揭示之向量友好指令格式中之指令的某些操作可藉由硬體組件來實施,且可具體化於機器可執行指令,其被用來致使或至少導致電路或其它硬體組件以實施該等操作的指令來程式化。舉例來說,電路可包括通用或特殊用途處理器、邏輯電路。操作也可藉由硬體與軟體的組合來選擇性地實施。執行邏輯及/或處理器可包括指定或特定電路或其它邏輯,回應機器指令或源自於機器指令的一或多個控制信號,來儲存指令指定的結果運算元。例如,本文所揭示之指令的實施例可於圖8-12的一或多個系統中執行,且向量友好指令格式中之指令的實施例可存入要 在系統中被執行的程式碼內。此外,這些圖的處理元件可利用詳述的管線其中之一及/或本文詳述的架構(例如,順序或亂序架構)。例如,順序架構的解碼單元可解碼該等指令,將被解碼的指令傳遞給向量或純量單元等。
以上的描述意欲圖示說明本發明的較佳實施例。從以上的討論中也可明瞭,特別是在此技術領域中,成長快速且未來的進步無法輕易地預知,熟悉此方面技術之人士可以修改本發明的配置與細節,而不會偏離所附申請專利範圍及其相等物範圍內之本發明的原理。例如,某方法中的一或多項操作可結合或進一步分開。
另些實施例
雖然已描述了本發明原生地執行向量友好指令格式的實施例,但本發明的另些實施例可經由在執行不同指令集之處理器(例如,執行MIPS Technologies of Sunnyvale,CA之MIPS指令集的處理器、執行ARM Holdings of Sunnyvale,CA之ARM指令集的處理器)上執行的仿真層來執行向量友好指令格式。同樣的,儘管圖中的流程圖示出了由本發明之某些實施例執行的特定操作順序,其應被理解為此順序為範例性的(例如,替代性的實施例可以不同順序、結合某些特定順序、重疊某些特定順序等來執行該些操作)。
在以上的描述中,基於解釋之目的,為了提供對本發明之實施例的徹底瞭解,已陳述了諸多特定的細節。不 過,熟悉此方面技術之人士可明瞭,沒有這些特定的某些細節,一或多個其它的實施例仍可施行。所描述的特定實施例並非用於限制本發明,而是說明本發明的實施例。本發明的範圍並非由以上所提供的特定例子決定,而是僅由以下的申請專利範圍來界定。
須瞭解,以上的描述意欲說明而非限制。熟悉此方面技術之人士在閱讀及瞭解了以上的描述之後,將可明瞭很多其它的實施例。因此,本發明的範圍應參考所附申請專利範圍連同此申請專利範圍所賦予資格之相等物的整個範圍來界定。
100‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧指令集
103‧‧‧向量指令
104‧‧‧乘法累加指令
105‧‧‧加法指令
106‧‧‧架構暫存器
109‧‧‧執行邏輯
129‧‧‧解碼器
116‧‧‧通用暫存器
126‧‧‧向量暫存器
130‧‧‧遮罩暫存器
136‧‧‧遮罩暫存器
210‧‧‧乘法操作
220‧‧‧加法操作
230‧‧‧初始的部分和
240‧‧‧結果的部分和
500‧‧‧樣本碼
615‧‧‧指令處理裝置
630‧‧‧解碼器
640‧‧‧執行單元
641‧‧‧乘法邏輯
642‧‧‧加法邏輯
670‧‧‧向量暫存器
680‧‧‧遮罩暫存器
1300‧‧‧系統
1310‧‧‧處理器
1315‧‧‧處理器
1320‧‧‧圖形記憶體控制器集線器
1340‧‧‧記憶體
1345‧‧‧顯示器
1350‧‧‧輸入/輸出控制器集線器
1360‧‧‧外部繪圖裝置
1370‧‧‧周邊裝置
1395‧‧‧前端匯流排
1400‧‧‧多處理器系統
1470‧‧‧第一處理器
1472‧‧‧整合式記憶體控制器集線器
1480‧‧‧第二處理器
1442‧‧‧記憶體
1444‧‧‧記憶體
1450‧‧‧點對點介面
1482‧‧‧整合式記憶體控制器集線器
1476‧‧‧點對點介面
1478‧‧‧點對點介面
1486‧‧‧點對點介面
1488‧‧‧點對點介面
1452‧‧‧點對點介面
1454‧‧‧點對點介面
1438‧‧‧高性能繪圖電路
1439‧‧‧高性能繪圖介面
1492‧‧‧介面
1494‧‧‧點對點介面
1496‧‧‧介面
1498‧‧‧點對點介面
1490‧‧‧晶片組
1418‧‧‧匯流排電橋
1414‧‧‧輸入/輸出裝置
1424‧‧‧音頻輸入/輸出
1416‧‧‧第一匯流排
1420‧‧‧第二匯流排
1422‧‧‧鍵盤/滑鼠
1426‧‧‧通信裝置
1428‧‧‧資料儲存單元
1430‧‧‧碼
1500‧‧‧系統
1514‧‧‧輸入/輸出裝置
1515‧‧‧舊的輸入/輸出裝置
1600‧‧‧晶片上系統
1610‧‧‧應用程式處理器
1620‧‧‧媒體處理器
1602‧‧‧互連單元
1630‧‧‧靜態隨機存取記憶體單元
1632‧‧‧直接記憶體存取單元
1640‧‧‧顯示單元
1624‧‧‧影像處理器
1626‧‧‧音頻處理器
1628‧‧‧視訊處理器
1708‧‧‧整合式繪圖邏輯
1702‧‧‧核心
1704‧‧‧快取單元
1706‧‧‧共用的快取單元
1710‧‧‧系統代理單元
1714‧‧‧整合式記憶體控制器單元
1716‧‧‧匯流排控制器單元
1700‧‧‧處理器
1802‧‧‧高階語言
1804‧‧‧x86編譯器
1806‧‧‧x86二進制碼
1808‧‧‧替代的指令集編譯器
1810‧‧‧替代指令集二進制碼
1812‧‧‧指令轉換器
1814‧‧‧不具有x86指令集核心之處理器
1816‧‧‧x86指令集核心
本發明係藉由非用來限制的例子加以說明,所附圖式之各圖中相同的參考編號指示類似的元件。請注意,在本揭示中對於“某”或“一”實施例之不同的引用,並不必然是相同的實施例,且這類引用意指至少一實施例。此外,當所描述的特定特徵、結構、或特性與實施例有關時,其被認為是在熟悉此方面技術之人士的知識內,使得此等特徵、結構、或特性與其它實施例有關,無論是否明確地描述。
圖1係具有包括有一或多個乘法累加(MAC)指令之指令集之處理器的例示實施例方塊圖。
圖2說明乘法累加指令操作的例子。
圖3說明MAC指令與相關之加法指令所使用之向量 暫存器與遮罩暫存器的例示實施例。
圖4A與4B說明MAC指令與相關之加法指令及其操作的相關例示實施例。
圖5說明包括MAC指令與相關之加法指令之樣本碼的例子。
圖6係指令處理裝置之例示實施例的方塊圖,指令處理裝置執行單元,可操作來執行包括有MAC指令與相關加法指令之例示實施例的指令。
圖7A與7B係處理MAC指令與相關加法指令之方法與方法的例示實施例之流程圖。
圖8係按照本發明一實施例之系統的方塊圖。
圖9係按照本發明一實施例之第二系統的方塊圖。
圖10係按照本發明一實施例之第三系統的方塊圖。
圖11係按照本發明實施例之晶片上系統(SoC)的方塊圖。
圖12係按照本發明實施例之單核心處理器與具有整合式記憶體控制器與繪圖之多核心處理器的方塊圖。
圖13係按照本發明之實施例,使用軟體指令轉換器將源指令集中的二進制指令轉換成目標指令集中之二進制指令之對照的方塊圖。

Claims (21)

  1. 一種方法,包含:接收用於無符號整數運算的乘法累加(multiply-and-accumulate;MAC)指令,該MAC指令指示第一向量暫存器做為第一運算元,第二向量暫存器做為第二運算元,及第三向量暫存器做為目的,該第一向量暫存器儲存第一因數,及該第二向量暫存器儲存該MAC指令的部分和;執行該MAC指令使該第一因數與隱含的第二因數相乘以產生乘積,並使該部分和與該乘積相加以產生結果,其中,該第一因數、該隱含的第二因數、及該部分和具有相同的資料寬度,且該乘積具有兩倍的該資料寬度;將該結果的最高有效半存入該第三向量暫存器;以及將該結果的最低有效半存入該第二向量暫存器。
  2. 如申請專利範圍第1項之方法,其中,該第一向量暫存器儲存複數個乘法的複數個第一因數,該第二向量暫存器儲存該複數個乘法的複數個部分和,且其中,執行該MAC指令進一步包含:執行該MAC指令以平行實施該複數個乘法。
  3. 如申請專利範圍第1項之方法,其中,每一該第一運算元、該隱含的第二運算元、該部分和、該乘積的該最高有效半、及該乘積的最低有效半具有該相同的資料寬度(dw ),且其中,該第一、第二、及第三向量暫存器屬於一組向量暫存器,該組中的每一個向量暫存器具有向量寬度(VW ),且包括數目為(VW/dw )的通道,每一通道 由一個獨立的乘法所使用。
  4. 如申請專利範圍第1項之方法,進一步包含:將該隱含的第二因數載入向量暫存器;以及執行一序列的MAC指令,以使該隱含的第二因數與一序列的第一因數相乘。
  5. 如申請專利範圍第4項之方法,其中,用於兩無符號整數相乘的該MAC指令係一序列MAC指令其中之一,且其中,該第一因數與該隱含的第二因數係分別為該兩無符號整數的小數部分,且其中,輸入到該MAC指令者係該序列中前一個MAC指令的獨立輸出。
  6. 如申請專利範圍第1項之方法,其中,在執行該MAC指令之後,該方法進一步包含:執行加法指令,以使該結果的最低有效半與前一個MAC指令所產生的前一個結果的最高有效半相加。
  7. 如申請專利範圍第6項之方法,其中,該加法指令接收來自遮罩暫存器的進位輸入,並將進位輸出存入該遮罩暫存器。
  8. 一種設備,包含:解碼邏輯,用以接收並解碼用於無符號整數運算的乘法累加(multiply-and-accumulate;MAC)指令,該MAC指令指示第一向量暫存器做為第一運算元,第二向量暫存器做為第二運算元,及第三向量暫存器做為目的,該第一向量暫存器儲存第一因數,及該第二向量暫存器儲存該MAC指令的部分和; 執行邏輯,耦接至該解碼邏輯,用以使該第一因數與隱含的第二因數相乘以產生乘積,並使該部分和與該乘積相加以產生結果,其中,該第一因數、該隱含的第二因數、及該部分和具有相同的資料寬度,且該乘積具有兩倍的該資料寬度;以及一組向量暫存器,耦接至該執行邏輯,其中,該組向量暫存器包括用來儲存該結果之最高有效半的該第三向量暫存器,及用來儲存該結果之最低有效半的該第二向量暫存器。
  9. 如申請專利範圍第8項之設備,其中,該第一向量暫存器儲存複數個乘法的複數個第一因數,該第二向量暫存器儲存該複數個乘法的複數個部分和,且其中,該執行邏輯用來執行該MAC指令以平行實施該複數個乘法。
  10. 如申請專利範圍第8項之設備,其中,每一該第一運算元、該隱含的第二運算元、該部分和、該乘積的該最高有效半、及該乘積的最低有效半具有該相同的資料寬度(dw ),且其中,該第一、第二、及第三向量暫存器屬於一組向量暫存器,且其中,該組中的每一個向量暫存器具有向量寬度(VW ),且包括數目為(VW/dw )的通道,每一通道由一個獨立的乘法所使用。
  11. 如申請專利範圍第8項之設備,其中,該組向量暫存器其中之一被載入該乘法的該隱含的第二因數,且其中,該執行邏輯用來執行一序列的MAC指令,以使該隱含的第二因數與一序列的第一因數相乘。
  12. 如申請專利範圍第11項之設備,其中,用於兩無符號整數相乘的該MAC指令係一序列MAC指令其中之一,且其中,該第一因數與該隱含的第二因數係分別為該兩無符號整數的小數部分,且其中,輸入到該MAC指令者係該序列中前一個MAC指令的獨立輸出。
  13. 如申請專利範圍第8項之設備,其中,在執行該MAC指令之後,該執行邏輯回應加法指令,以使該結果的該最低有效半與前一個MAC指令所產生之前一個結果的該最高有效半相加。
  14. 如申請專利範圍第13項之設備,其中,該加法指令接收來自遮罩暫存器的進位輸入,並將進位輸出存入該遮罩暫存器。
  15. 一種系統,包含:互連;處理器,耦接至該互連,該處理器包括:解碼邏輯,用以接收及解碼用於無符號整數運算的乘法累加(multiply-and-accumulate;MAC)指令,該MAC指令指示第一向量暫存器做為第一運算元,第二向量暫存器做為第二運算元,及第三向量暫存器做為目的,該第一向量暫存器儲存第一因數,及該第二向量暫存器儲存該MAC指令的部分和;執行邏輯,耦接至該解碼邏輯,用以使該第一因數與隱含的第二因數相乘以產生乘積,並使該部分和與該乘積相加以產生結果,其中,該第一因數、該隱含的第二因 數、及該部分和具有相同的資料寬度,且該乘積具有兩倍的該資料寬度;以及一組向量暫存器,耦接至該執行邏輯,其中,該組向量暫存器包括用來儲存該結果之最高有效半的該第三向量暫存器,及用來儲存該結果之最低有效半的該第二向量暫存器;以及動態隨機存取記憶體(DRAM),耦接至該互連。
  16. 如申請專利範圍第15項之系統,其中,該第一向量暫存器儲存複數個乘法的複數個第一因數,該第二向量暫存器儲存該複數個乘法的複數個部分和,且其中,該執行邏輯用來執行該MAC指令以平行實施該複數個乘法。
  17. 如申請專利範圍第15項之系統,其中,每一該第一運算元、該隱含的第二運算元、該部分和、該乘積的該最高有效半、及該乘積的最低有效半具有該相同的資料寬度(dw ),且其中,該第一、第二、及第三向量暫存器屬於一組向量暫存器,且其中,該組中的每一個向量暫存器具有向量寬度(VW ),且包括數目為(VW/dw )的通道,每一通道由一個獨立的乘法所使用。
  18. 如申請專利範圍第15項之系統,其中,該組向量暫存器其中之一被載入該乘法的該隱含的第二因數,且其中,該執行邏輯用來執行一序列的MAC指令,以使該隱含的第二因數與一序列的第一因數相乘。
  19. 如申請專利範圍第18項之系統,其中,用於兩 無符號整數相乘的該MAC指令係一序列MAC指令其中之一,且其中,該第一因數與該隱含的第二因數係分別為該兩無符號整數的小數部分,且其中,輸入到該MAC指令者係該序列中前一個MAC指令的獨立輸出。
  20. 如申請專利範圍第15項之系統,其中,在執行該MAC指令之後,該執行邏輯回應加法指令,以使該結果的該最低有效半與前一個MAC指令所產生之前一個結果的該最高有效半相加。
  21. 如申請專利範圍第20項之系統,其中,該加法指令接收來自遮罩暫存器的進位輸入,並將進位輸出存入該遮罩暫存器。
TW101145437A 2011-12-19 2012-12-04 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令 TWI470543B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/065901 WO2013095338A1 (en) 2011-12-19 2011-12-19 Simd integer multiply-accumulate instruction for multi-precision arithmetic

Publications (2)

Publication Number Publication Date
TW201346724A TW201346724A (zh) 2013-11-16
TWI470543B true TWI470543B (zh) 2015-01-21

Family

ID=48669005

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101145437A TWI470543B (zh) 2011-12-19 2012-12-04 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令

Country Status (4)

Country Link
US (1) US9235414B2 (zh)
CN (2) CN104115115B (zh)
TW (1) TWI470543B (zh)
WO (1) WO2013095338A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI728068B (zh) * 2016-04-01 2021-05-21 英商Arm股份有限公司 複數乘法指令

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104254833B (zh) * 2012-05-30 2018-01-30 英特尔公司 基于向量和标量的模取幂
US9355068B2 (en) 2012-06-29 2016-05-31 Intel Corporation Vector multiplication with operand base system conversion and re-conversion
US10095516B2 (en) 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9584178B2 (en) * 2014-07-21 2017-02-28 International Business Machines Corporation Correlating pseudonoise sequences in an SIMD processor
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
CN104699449B (zh) * 2015-04-03 2017-09-29 中国科学院软件研究所 一种基于gmp的大整数加法和减法多核并行化实现方法
US10489155B2 (en) 2015-07-21 2019-11-26 Qualcomm Incorporated Mixed-width SIMD operations using even/odd register pairs for wide data elements
CN106650923B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 具有神经存储器与神经处理单元与定序器的神经网络单元
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10438115B2 (en) * 2016-12-01 2019-10-08 Via Alliance Semiconductor Co., Ltd. Neural network unit with memory layout to perform efficient 3-dimensional convolutions
US10395165B2 (en) * 2016-12-01 2019-08-27 Via Alliance Semiconductor Co., Ltd Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory
CN110050267B (zh) * 2016-12-09 2023-05-26 北京地平线信息技术有限公司 用于数据管理的系统和方法
US10509651B2 (en) * 2016-12-22 2019-12-17 Intel Corporation Montgomery multiplication processors, methods, systems, and instructions
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US10346163B2 (en) 2017-11-01 2019-07-09 Apple Inc. Matrix computation engine
CN109871236A (zh) * 2017-12-01 2019-06-11 超威半导体公司 具有低功率并行矩阵乘法流水线的流处理器
US10970078B2 (en) 2018-04-05 2021-04-06 Apple Inc. Computation engine with upsize/interleave and downsize/deinterleave options
CN108845828B (zh) * 2018-05-29 2021-01-08 深圳市国微电子有限公司 一种协处理器、矩阵运算加速方法及系统
US11048509B2 (en) * 2018-06-05 2021-06-29 Qualcomm Incorporated Providing multi-element multi-vector (MEMV) register file access in vector-processor-based devices
US10831488B1 (en) 2018-08-20 2020-11-10 Apple Inc. Computation engine with extract instructions to minimize memory access
KR20200057475A (ko) 2018-11-16 2020-05-26 삼성전자주식회사 연산 회로를 포함하는 메모리 장치 및 그것을 포함하는 뉴럴 네트워크 시스템
CN111814093A (zh) * 2019-04-12 2020-10-23 杭州中天微系统有限公司 一种乘累加指令的处理方法和处理装置
CN112506468B (zh) * 2020-12-09 2023-04-28 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器
US11694733B2 (en) 2021-08-19 2023-07-04 Apple Inc. Acceleration of in-memory-compute arrays
CN117539469B (zh) * 2024-01-10 2024-03-19 睿思芯科(成都)科技有限公司 Risc-v的可视化向量编程方法、系统及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI230869B (en) * 2003-01-29 2005-04-11 Via Tech Inc SIMD processor with scalar arithmetic logic units
US20070283127A1 (en) * 2003-08-18 2007-12-06 Cray Inc. Method and apparatus for indirectly addressed vector load-add-store across multi-processors
US7366873B1 (en) * 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121431A (en) 1990-07-02 1992-06-09 Northern Telecom Limited Processor method of multiplying large numbers
US6014684A (en) 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US6343356B1 (en) * 1998-10-09 2002-01-29 Bops, Inc. Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision
CA2294554A1 (en) * 1999-12-30 2001-06-30 Mosaid Technologies Incorporated Method and circuit for multiplication using booth encoding and iterative addition techniques
US6598064B1 (en) 2000-01-04 2003-07-22 National Semiconductor Corporation Split multiplier array and method of operation
US7107305B2 (en) * 2001-10-05 2006-09-12 Intel Corporation Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US7672989B2 (en) 2005-05-09 2010-03-02 Sandisk Il Ltd. Large number multiplication method and device
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
CN101165655A (zh) * 2006-10-20 2008-04-23 国际商业机器公司 多处理器计算系统及其任务分配方法
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
CN102214281A (zh) * 2011-04-27 2011-10-12 北京深思洛克软件技术股份有限公司 一种软件保护方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI230869B (en) * 2003-01-29 2005-04-11 Via Tech Inc SIMD processor with scalar arithmetic logic units
US20070283127A1 (en) * 2003-08-18 2007-12-06 Cray Inc. Method and apparatus for indirectly addressed vector load-add-store across multi-processors
US7366873B1 (en) * 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI728068B (zh) * 2016-04-01 2021-05-21 英商Arm股份有限公司 複數乘法指令

Also Published As

Publication number Publication date
TW201346724A (zh) 2013-11-16
CN107368286B (zh) 2020-11-06
CN104115115A (zh) 2014-10-22
US9235414B2 (en) 2016-01-12
US20140237218A1 (en) 2014-08-21
CN107368286A (zh) 2017-11-21
CN104115115B (zh) 2017-06-13
WO2013095338A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
TWI470543B (zh) 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令
JP6351682B2 (ja) 装置および方法
TWI514274B (zh) 用於迴圈餘數遮罩指令之系統、裝置及方法
TWI578155B (zh) 用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法
TWI567751B (zh) 多暫存器記憶體存取指令、處理器、方法及系統
US11531542B2 (en) Addition instructions with independent carry chains
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
US20130332707A1 (en) Speed up big-number multiplication using single instruction multiple data (simd) architectures
US10387148B2 (en) Apparatus and method to reverse and permute bits in a mask register
US20170177352A1 (en) Instructions and Logic for Lane-Based Strided Store Operations
TW201725509A (zh) 用於安全指令執行管線之指令及邏輯
US20170177353A1 (en) Instructions and Logic for Get-Multiple-Vector-Elements Operations
TWI553553B (zh) 用於產生迴圈對齊計數或迴圈對齊遮罩的系統、設備與方法
TWI483126B (zh) 提供向量線性內插功能之指令與邏輯
US20170177351A1 (en) Instructions and Logic for Even and Odd Vector Get Operations
TW201732548A (zh) 用於向量置換的指令和邏輯
KR20160079038A (ko) Rsa 알고리즘 가속 프로세서들, 방법들, 시스템들 및 명령어들
TW201729079A (zh) 用於檢測浮點消除效應之指令及邏輯
US20220100569A1 (en) Methods, systems, and apparatuses for scalable port-binding for asymmetric execution ports and allocation widths of a processor
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法
CN116339826A (zh) 用于四字特定部分的向量紧缩串接和移位的装置和方法
TW201729081A (zh) 用於以向量為基礎的位元操控之指令及邏輯

Legal Events

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