TWI455021B - 向量整數乘加指令之功能單元、方法及計算系統 - Google Patents

向量整數乘加指令之功能單元、方法及計算系統 Download PDF

Info

Publication number
TWI455021B
TWI455021B TW100133947A TW100133947A TWI455021B TW I455021 B TWI455021 B TW I455021B TW 100133947 A TW100133947 A TW 100133947A TW 100133947 A TW100133947 A TW 100133947A TW I455021 B TWI455021 B TW I455021B
Authority
TW
Taiwan
Prior art keywords
vector
instruction
integer
multiply
term
Prior art date
Application number
TW100133947A
Other languages
English (en)
Other versions
TW201237743A (en
Inventor
Jeff Wiedemeier
Sridhar Samudrala
Roger Golliver
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 TW201237743A publication Critical patent/TW201237743A/zh
Application granted granted Critical
Publication of TWI455021B publication Critical patent/TWI455021B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products

Landscapes

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

Description

向量整數乘加指令之功能單元、方法及計算系統
本發明領域一般係相關於電腦系統,尤其是用以執行向量乘加指令和使用用來計算向量乘加結果之邏輯區塊的其他指令之處理器架構。
在電腦科學領域中兩種類型的處理器架構被廣泛視作“純量”及“向量”。純量處理器被設計成執行完成單一組資料上的運算之指令,反之向量處理器被設計成執行完成多組資料上的運算之指令。圖1A及1B呈現說明純量處理器和向量處理器之間的基本差異之比較例子。
圖1A為純量AND指令的例子,其中單一運算元組(A及B)被AND在一起以產生單一(或“純量”)結果C(即、AB=C)。相反地,圖1B為向量AND指令的例子,其中兩運算元組(A/B及D/E)被平行地分別AND在一起,以同時產生向量結果C、F(即、A.AND.B=C及D.AND.E=F)。
如技術中眾所皆知一般,典型上,輸入運算元和輸出結果二者皆儲存在專屬暫存器中。例如,許多指令將具有兩個輸入運算元。因此,兩明確區別的輸入暫存器將被用於臨時儲存各自輸入運算元。而且,這些相同指令將產生輸出值,其將被臨時儲存在第三(結果)暫存器。在圖1A及1B觀察到各自輸入暫存器101a、b及102a、b和結果暫存器103a、b。尤其是,可容易辨別“純量”對“向量”特徵。
也就是說,圖1A之純量設計的輸入暫存器101a及102a被觀察到僅保持純量值(分別為A及B)。同樣地,圖1A之純量設計的結果暫存器103a亦被觀察到僅保持純量值(C)。相反地,圖1B之向量系統的輸入暫存器101b及102b被觀察到保持向量(暫存器101b中的A、D及暫存器102b中的B、E)。同樣地,圖1B之向量系統的結果暫存器103b被觀察到保持向量值(C、F)。事實上,圖1B的向量系統之暫存器101b、102b、及103b的每一個之內容可被統稱作“向量”,及向量內之個別純量值的每一個可被稱作“元素”。如此,例如,暫存器101b被觀察到儲存由“元素”A及“元素”D所組成之“向量”A、D。
只已知純量或SIMD乘法運算已被實際上實施在半導體晶片處理器作為單一處理器指令。已知已被實施在半導體晶片處理器之純量或SIMD乘法指令包括“乘法”指令(MUL),其提供兩整數輸入運算元的乘積之較低階位元;以及“乘法高”指令(MULH),其提供純量整數乘法運算元的較高階位元。
已知已被實施在半導體處理器晶片作為純量或SIMD指令之其他指令包括“首數為零計數”CLZ指令、“尾數為零計數”指令CTZ,及“計數”指令CNT。純量CLZ指令接收純量輸入A,及轉回在A中的最高階1之前的A中之0的數目(如、若A=1000,則結果為CLZ=0;若A=0100,則結果為CLZ=1;若A=0010,則結果為CLZ=2等等)。純量CTZ指令接收純量輸入A,及轉回在A中的最低階1之後的A中之0之數目(如、若A=1000,則結果為CTZ=3;若A=0100,則結果為CTZ=2;若A=0010,則結果為CTZ=1等等)。純量CNT指令接收純量輸入A,及轉回A中之1的數目(如、若A=1011,則結果為CLZ=3;若A=1001,則結果為CLZ=2;若A=0010,則結果為CLZ=1等等)。
【發明內容及實施方式】
一些電腦系統需要”乘加”運算。乘加運算實行(A*B)+C的計算,其中A、B、及C為輸入運算元。圖2為能夠完成向量乘加指令(VMADD)之向量處理功能單元200的高位準架構圖。如圖2所見,功能單元包括N個純量邏輯單元200_1至200_N,其各個在輸入向量的各自元素上完成純量乘加運算。此處,輸入暫存器203保持輸入向量A=A_1、A_2、...、A_N;輸入暫存器204保持輸入向量B=B_1、B_2、...、B_N;以及輸入暫存器205保持輸入向量C=C_1、C_2、...、C_N。純量邏輯單元200_1完成計算((A_1)*(B_1))+C_1;純量邏輯單元200_2完成計算((A_2)*(B_2))+C_2;...;以及純量邏輯單元200_N完成((A_N)*(B_N))+C_N。在實施例中,各個邏輯單元支援32位元運算元運算模式和64位元運算元運算模式。由邏輯單元200_1至200_N所產生之個別結果202_1至202_N對應於由儲存在輸出暫存器中的向量功能單元200所提供 之輸出向量的個別元素。
為了產生與SIMD運算相反的向量運算,圖2亦圖示遮罩層係可併入輸出電路206。在輸入運算元的維度對向量機器而言是可變但對SIMD機器而言是固定之觀點中,向量運算可被視作不同於SIMD運算。改變圖2之向量機器中的元素數目之能力係藉由可在輸出206中完成的遮罩來表示。尤其是,可將各個輸出元素寫入到其自己的各自寫入邏輯電路(未圖示)。在實施例中,寫入邏輯電路可寫至任何輸出元件位置。藉由只為對應於有效向量運算元元素之那些元素賦能寫入邏輯電路,可處理可變長度向量。此具有實質上只為對應於有效向量元素之純量功能單元200_1至200_N的那些賦能運算之效果。而且,遮罩賦能為欲呈現之有效元素所偵測的任何算術例外,同時抑制未活動元素的例外。
如下面更詳細說明一般,除了計算向量乘加指令之外,功能單元200亦能夠計算一些額外的向量指令,諸如下列的一或多個等:i)向量乘加高指令(VMADDH),係用於提供向量乘加計算的較高階位元之整數運算元;ii)向量乘加(VMADDL),係用於提供向量乘加計算的較低階位元之整數運算元;iii)向量首數為零計數指令(VCLZ),其接受輸入向量C,及提供元素各自對應於輸入向量C的元素之首數為零計數的輸出向量作為結果;iv)向量尾數為零計數指令(VCTZ),其接受輸入向量C,及提供元素各自對應於輸入向量C的元素之尾數為零計數的輸出向量作為結果;v)向量計數指令(VCNT),其接受輸入向量C,及提供個別元素各自對應於輸入向量C的個別元素內之1的計數之輸出向量作為結果;以及vi)向量同位指令(VPAR),其接受輸入向量C,及提供個別元素各自對應於輸入向量C的個別元素之同位狀態(偶數或奇數)的輸出向量作為結果。當利用VMADD指令,藉由向量輸入A、B、及C的各自輸入運算元元素之純量執行來完成以上列舉之指令的每一個。在其他實施例中,再次如下面更詳細說明一般,和整數運算元一樣,由功能單元200所執行之任何/所有指令在浮動點上可操作。
圖3圖示圖2之純量邏輯單元的其中之一的實施例。如目前所說明一般,純量邏輯單元在支援上述VMADD、VMADDH、VMADDL、VCLZ、VTLZ、VCNT、及VPAR指令的任一個之輸入向量A、B、及C的各自元素上能夠完成純量運算。
現在將說明當在浮動點中指定輸入向量A、B、C的元素和輸出向量R的元素時之VMADD指令的運算。如技術中已知一般,浮動點中之數值的連接採取(符號)*(假數)*(指數)的形式,其中符號值表示數值是正的或是負的,假數值指定值的“數”,指數值指明值的權值。VMADD指令然後可被指定如下:((A_符號)(B_符號)(A_假數)(B_假數)(A_指數+B_指數))+(C_符號)(C_假數)(C_指數)。
參考圖3,乘法器301至少計算(A_符號)(B_符號)(A_假數)(B_假數)項作為(A_假數)(B_假數)的明確計算。乘積的符號可容易被計算作:i)若A_符號及B_符號具有相同值則為正;或ii)若A_符號及B_符號具有不同值則為負。藉由取用:i)(A_指數+B_指數);及ii)C_指數的較大者,乘積指數區塊302為最後的結果決定指數的最初計算。也就是說,若C值大於A及B的乘積很多,則C項的權值將控制最後結果的權值。同樣地,若AB大於C很多,則AB的權值將控制最後結果的權值。
加法器305執行AB+C計算的加法。然而明顯地,在能夠以浮動點形式執行加法之前,在實施例中,使AB項的指數(即、與乘法器301的輸出相關聯之指數)與C項的指數相同。指數差區塊303和移位器304被用於實現此處理。尤其是,指數差區塊303採用AB項與的指數與C項的指數之間的差(即、i)(A_指數+B_指數);及ii)C_指數之間的差)。亦認出兩項的較小者(例如,藉由分析乘積指數區塊302的輸出)。兩項的較小者之假數的二元點位置(即、AB乘積項或C項的假數之二元點位置-無論哪一個具有較小的指數項)然後移位到對應於由差區塊303所決定的兩項之間的指數差之一些位元位置的“左邊”。移位的項和另一個(無移位的項)被傳遞到加法器305。
作為例子,若AB乘積項對應於5.5555E8及C項對應於2.2222E6,則藉由移位器304將C項的假數(2.2222)之二元點位置移位到左邊兩位置(0.02222),以便加法器305可適當加上具有相同指數值之兩數的假數。在此例中,加法器305將適當加上5.5555E8及0.02222 E8。如此,在實施例中,移位器304耦合至差區塊303的輸出,以決定適當的移位量來應用到AB項和C項的其中之一的假數之二元點位置。在另一實施例中,在未移位其中之一的同時,移位AB項和C項的其中另一個之假數的二元點位置。然後將移位的假數值和未移位的假數值呈現給加法器305。當然,在差區塊303決定AB項和C項的指數是相同之情況中,未執行移位,及AB項和C項二者的假數在未移位之下傳遞給加法器305。
在實施例中,AB項和C項的符號值亦傳遞到加法器305,以便例如若C項的符號是負的,則適當執行有效減法AB-C。在兩項與兩項的絕對值之間的有效減法(即、當AB項的符號不同於C項的符號時)約相等之例子中,加法器305的輸出可以是接近零之數目。因此,在觀察到第一個1之前,加法器305輸出中之假數值可具有首數為0之字串。在此例中,為了產生較高精確性的結果,加法器305輸出中之假數值的二元點應被移位,以產生具有整數之假數作為其第一值。
例如,若加法器被呈現具有AB假數和符號項-5.555566...及C假數和符號項+5.555555...,則加法器305將產生-0.000011...的輸出。為了增加最後結果的精確性,來自加法器305的結果之二元點應被移位至右邊5個位置,以採用1.111111....的形式。當移位到二元點的右邊對應於指數值的變化時,指數值將亦需要改變。在此特別例子中,移位假數二元點到右邊5個位置對應於將指數值減少5。因此,當加法器305輸出所提供的假數項具有首數為零時,不僅其二元點必須移位到右邊,而且乘積指數區塊303的輸出中之指數項亦需要被減少。此處,使用首數為1預測器區塊306、常態化移位器307、及指數加法器308來完成這些工作。
尤其是,首數為1預測器306打旗標表示加法器輸出中之第一個(最左邊)1的位置,及指示常態化移位器307加法器輸出有多少二元點應被移位到右邊,及指示指數加法器308應從指數區塊302減少多少指數值。在實施例中,加法器輸出的二元點之移動事實上藉由移動加法器輸出的數值內容到左邊來完成。在相同或其他實施例中,加法器308瞭解從首數為1預測器306到來的值將從乘積指數302輸出值減掉。
在實施例中,首數為1預測器運算如下。在被提供給加法器305之兩輸入運算元中(即、AB項的假數和C項的假數),首數為1預測器306個別決定這些項的二者中之首數為1的位置,及打出旗標表示成對首數為1的位置之最左邊位元位置。例如,若AB項的假數為0001100101...及C項的假數為0000100000....,則首數為1預測器306將打出旗標表示第四個位元位置,因為第四個位元位置(AB假數項的)為兩運算元中的最左邊(或最高階)首數1。此決定然後被假設乘加法器305輸出的首數為1位置。在許多事例中,此假設將是正確的,且被用於決定由常態化移位器307所執行之加法器輸出移位量,及由加法器308所執行之指數減少量。
在許多事例中,假設將不正確。將由加法器加上上面的例子中所提供之兩運算元,以產生加法器輸出0010000101...。在假設不正確之事例中,如同本例子一般,加上兩運算元產生由首數為1預測器所認出的位元位置中之進位項(即、由首數為1預測器所認出的加法器輸出之位元位置為0),及因此,到由首數為1預測器所認出的位置之左邊的一位置的位元位置為1。就其本身而論,在實施例中,在釋出由首數為1指示器306所打出旗標表示的假設值作為加法器輸出應被移位及應被減少之指數的量之前,邏輯電路執行下面的一或二者作為“檢查”:i)瞭解是否由首數為1指示器306認出之加法器305輸出的位置為0;ii)瞭解是否僅到由首數為1指示器306認出的位置之左邊的加法器305輸出之位置為1。若這些條件的任一者為真,則正確答案不是由首數為1指示器306所打出旗標表示的位元位置,而是僅是到由首數為1指示器306所打出旗標表示的位元位置之左邊的位元位置。在此例中,首數為1指示器將實質上校正其假設,及提供正確資訊到移位器307和加法器308。
此處,值得去提到為什麼使用首數為1預測器的理由在於,決定首數為1的位置之處理有時相當廣泛且會消耗一或多個區塊循環。同樣地,由加法器305所執行的加法亦有時相當廣泛且會消耗一或多個區塊循環。若首數為1的決定被組構以“遵循”加法器305,則將消耗兩或多個區塊循環來決定AB+C的加法和加法的首數為1位置。然而,利用圖3所看到的架構,加法器305的加法和預測器306的首數為1決定大部分被平行進行,藉以與連續途徑比較減少總消耗的區塊循環。而且,即使首數為1預測器306的結果可能是錯的及因此被檢查,上述之“檢查”操作相當簡易,及用於實行的邏輯是相當短的端對端,使得檢查操作的時間損失是可接受的,因此維持較佳的總解決。
一旦移位器307已移位加法器305的結果,及加法器308已減少指數值(若此種移位和指數減少是適合的),則已實質上決定FMADD指令的“答案”(AB+C)。執行最後處理,以連結其答案與想要的精確性和適當格式。此處理的部分包括四捨五入假數值。在實施例中,指令可指定兩不同位準的精確性的其中之一:單一精確性或雙重精確性。在另一實施例中,雙重精確性與和單一精確值連結之位元數的兩倍(或約兩倍)連結。在另一實施例中,單一精確性格式為32位元,係由訊號用的1位元,假數用的23位元,及指數用的8位元所組成;及雙重精確性格式為64位元,係由訊號用的1位元,假數用的52位元,及指數用的11位元所組成。在另一實施例中,在功能單元300內部,以上至128位元的精確性來計算假數。此處,乘法器301的輸出寬度被佈線成128位元,以處理兩個64位元整數值的整數乘法。同樣地,加法器305輸出和移位器307輸出亦為128位元。
就其本身而論,在各種實施例中,藉由功能單元300在內部為結果的假數計算之位元數超過事實上存在作為最後結果的假數之位元數。如此,四捨五入運算瞭解是否最後呈現的假數下方之位元的任一者為1,此被稱作固著位元。在圖3的架構中,尾數為零邏輯區塊309決定移位器307的輸出中之尾數為零的數目。當與藉由功能單元300計算時之額外位元的數目比較之此數目指出是否具有1在最後呈現的假數下方之位元中。若在移位底部的零同時將假數移位到左邊以去除首數為零,則等於由首數為1區塊306所計算之左移位量的額外尾數為零之數目需要被列入考量。此處,為了正確計算移位器307的輸出中之尾數為零的數目,尾數為零偵測器309應知道由首數為1預測器306所給予的任何移位,因此,尾數為零偵測器309亦被觀察到接受來自首數為1預測器306的輸入。
開始於最後階(最右邊)位元位置及逐一位元地移動到左邊至各個下一個更高階位元位置之零的數目被決定上至1的最低有效位元(最右邊)之位置。若尾數為零的數目延伸上至或超過(至左邊)給定精確性的假數之最低有效位元(最右邊),則最低有效位元位置保持在其目前值(即、沒有四捨五入發生)。否則,即、發生四捨五入,及增加適當的精確性之假數的最低有效位元位置:i)從0至1;或ii)從1至0,並且進位項出現,其呈波浪狀上至下一個更高位元位置。
為了適當精確性,使用四捨五入加法器310來加上1的值到移位器307中之結果假數的最低有效位元位置。加法器310的輸出被採用作為經過想要的精確性之最後的假數值。在實施例中,加法器310的輸出總是被採用作為經過想要的精確性之最後的假數值,其中若沒有四捨五入發生,則0的值被有效加到移位器307輸出,及若確實發生四捨五入,則為了給定精確性將1的值加至最右邊位置中之移位器307輸出。如圖3所見一般,固著位元計算邏輯311依據尾數為零偵測邏輯309的輸出和想要的精確性來決定是否需要四捨五入,及依據固著位元決定(若沒有四捨五入發生則添加0,若發生四捨五入則添加1),為了想要的精確性,在最低有效位元位置,四捨五入控制邏輯312提供0或1至加法器310。
需注意的是,在圖3之實施例中,尾數為零偵測邏輯309在呈現給加法器305之運算元上操作,以便像首數為1預測器306一般,可與加法器305平行操作。在另一實施例中,尾數為零偵測器認出各個運算元中之1的最低有效(最右邊)位元值,及打出旗標表示兩運算元之中最低有效位元位置,作為用以決定加法器305的輸出中之尾數為零的數目之基礎。亦由尾數為零偵測器309負責由首數為1預測器所歸納的任何移位。即、關於給定精確性,加法器305結果的任何移位將影響在決定是否將零延伸上至或超過移位器307輸出的最低有效位元之前需要偵測多少零。需注意的是,用於尾數為零偵測的此途徑不需要任何“檢查”(像首數為1預測器一般),因為沒有誤差的可能性(就數學而言)。
上述說明書寫有關VMADD指令的浮動點計算。在整數VMADD指令的事例中,整數運算元僅呈現給乘法器301輸入。此處,在支援53b雙重精確性浮動點假數計算之實施例中,乘法器被設計用於處理64b整數乘法。就其本身而論,乘法器輸出為128位元寬。在64位元整數運算之例子中,在實施例中,以64個零將C項填補在左邊,以便其最低有效位元與乘法器301輸出的最低有效位元對準。也就是說,提供給加法器305之C項運算元具有64位元的零作為其左半部,及64位元C輸入運算元作為其右半部。因為實施例之原1雙重精確性的計算或64b整數及2單一精確性或2 32b整數運算,所以關於32b整數,兩C項的每一個之上半部(各個32b)被填補有零,以使它們64b寬。在32位元整數運算之事例中,適當填補C項。在實施例中,藉由以移位器304,將C項移位到右邊來有效完成零填補。在另一實施例中,關於整數運算,使用指數差區塊303來依據用於整數計算的精確性指定移位量。也就是說,例如,關於64位元整數運算,指數差區塊303被組構,以發送輸入訊號到移位器304,其使移位器304能夠移位C項64位元到右邊;以及關於32位元運算,指數差區塊303被組構,以發送輸入訊號到移位器304,其使移位器304能夠移位C項96位元到右邊。
加法器305加上乘法器輸出及被移位對準的C項值,以決定AB+C的整數值。因為AB+C的整數值之尺寸超過最後結果之允許的位元寬度,所以在實施例中,藉由移位器307,將加法器305的輸出之高半部或低半部傳遞作為最後結果。例如,在加法器305的輸出為128位元寬及64位元整數操作應用之實施例中,指令的結果僅可以是64位元寬,但是內部功能單元計算128位元整數值。就其本身而論,存在有兩不同VMADD指令給整數操作:VMADDH及VMADDL。VMADDH呈現128位元加法器輸出的最高有效64位元,及VMADDL呈現128位元加法器輸出的最低有效64位元。在整數VMADD運算之事例中,未使用乘積指數區塊302、首數為1預測器307、指數加法器308、尾數為零偵測器309、固著位元邏輯311、及四捨五入控制邏輯312,除非或許添加在不合理的零到加法器310。
圖4A圖示如上述之功能單元的浮動點VMADD運算之實施例,及圖4B圖示如上述之功能單元的整數VMADDL/H之實施例。參考圖4A,將用於運算元A及B之各自假數值相乘401。隨後平行地,AB項與C項的指數值之間的差被決定402,及AB項指數和C項指數的最大值被採用作為用於結果的最初指數403。依據AB項與C項的指數值之間的所決定的差,具有較小指數之項的假數被移位404,以與具有較大指數之項的假數對準。然後將AB項與C項之對準的假數加起來405。隨後平行地,加法器結果的首數為1被預測406。對照著AB+C的加法結果來檢查首數為1的預測407。依據首數為1的決定,AB+C之假數加法的結果被移位以引導整數值408,及調整用於指令的指數結果409。若需要的話執行四捨五入410,及依據指定的精確性來呈現假數值。
參考圖4B,將整數A及B項乘起來411,及C項被填補412,以與AB乘積對準。將AB及C整數項加起來413。若指令指定高部位,則呈現AB+C的高部位,或若指令指定低部位,則呈現AB+C的低部位。需注意的是,以VMADDL連續執行VMADDH及在分開之處儲存結果使系統能夠為AB+C保持總值。
值得重複地是,功能單元300的上述說明說明功能單元,其能夠在向量功能單元中舉例說明複數次,以便執行向量乘加指令(VMADD)。
圖3之功能單元300亦可被增強,以執行下面指令的任何一或多個之純量成分:i)向量首數為零計數指令(VCLZ),其接受輸入向量C,及提供元素各自對應於輸入向量C的元素之首數為零計數的輸出向量作為結果;ii)向量尾數為零計數指令(VCTZ),其接受輸入向量C,及提供元素各自對應於輸入向量C的元素之尾數為零計數的輸出向量作為結果;iii)向量計數指令(VCNT),其接受輸入向量C,及提供個別元素各自對應於輸入向量C的個別元素內之1的計數之輸出向量作為結果;以及iv)向量同位指令(VPAR),其接受輸入向量C,及提供個別元素各自對應於輸入向量C的個別元素之同位狀態(偶數或奇數)的輸出向量作為結果。
圖5圖示增強型功能單元500,其包括加法邏輯和邏輯上方的佈線和圖3所看到的佈線,以執行VCLZ、VCTZ、VCNT、及VPAR指令的純量成分。在實施例中,關於這些指令,沿著接收AB+C指令的C運算元之資料路徑來接收由圖5的功能單元500所處理之向量的元素。應強調的是,這僅是其中一途徑,及依據設計者選擇,沿著AB+C指令的A、B、及C運算元之任一者的資料路徑可接收用於VCLZ、VCTZ、VCNT、及VPAR指令的任一者之運算元。為了方便,未圖示用以執行VMADD指令的各種邏輯區塊之間的互連。應明白的是,此種互連是存在的(如、圖3所看到一般)。當然,可利用半導體邏輯電路來實施圖3及5二者中所看到的區塊之任一者。
根據圖5之特別實施例,因為沿著C運算元的資料路徑來接收用於VCLZ、VCTZ、VCNT、及VPAR指令的任一者之運算元,所以運算元係由對準移位器504來接收(需注意的是,可實施“移位器”的任一者作為移位暫存器)。當指令指定VCLZ、VCTZ、VCNT、及VPAR指令的任一者時(與VMADD指令相反),對準移位器忽略來自指數差單元503的任何輸入,及僅呈現C運算元給用於各自指令的至少適當邏輯。也就是說,用於VCLZ指令的邏輯506,用於VCTZ指令的邏輯509,及用於VCNT指令的邏輯530。另外,對準移位器504在運送用於VMADD指令的AB項之假數的資料路徑上呈現零的開始值。
關於呈現首數為零計數給所呈現的運算元之VCLZ指令,比較圖5與圖3,需注意的是,邏輯506被實施作首數為1及首數為0預測器邏輯電路(與圖3之首數為1預測器邏輯電路306相反)。此處,需注意的是,運算元中之首數為0的數目與運算元中之首數為1的位置相關聯。尤其是,關於已知的位元寬度運算元,首數為0的數目等於運算元的位元寬度與運算元中之首數為1的位元位置之間的差。回想起,在實施例中,在首數為1預測器306決定用於VMADD指令之AB及C假數項二者的首數為1位置,及打出旗標表示這兩項之最高階(最左邊)首數為1的位置。此處,因為對準移位器504被組構,以呈現0的值給用於VCLZ指令的AB項,所以只有C項的首數為1位置(用於VCLZ指令的運算元)將打出旗標表示。自此,可決定用於運算元之首數為零的數目。需注意的是,假設指定適當位元長度或已知,則可容易處理不同的運算元位元長度(如、32位元或64位元)。
回想起,圖3之首數為1預測器306被視作“預測器”,因為在某些環境下,其最初的答案可能是不正確的。尤其是,加法器305的輸出必須被檢查。然而,在VCLZ指令的事例中,不發生此問題,因為未使用加法器305。就其本身而論,來自邏輯506的“答案”是正確的且不需要被檢查。然後首數為零計數最後傳遞到格式化邏輯513,以呈現適當格式的答案給指令。在實施例中,首數為零計數(像用於VMADD指令的首數為1計數一般)被傳遞到指數調整加法器508,其將首數為零計數轉寄到格式化邏輯513。
關於呈現尾數為零計數給輸入運算元之VCTZ指令,運算元C被傳遞到尾數為零決定邏輯509。回想起圖3之討論,尾數為零決定邏輯309認出各個運算元(AB及C)中之1的最低有效(最右邊)位元值,及打出旗標表示兩運算元之中的最低有效位元位置,作為用以決定加法器305的輸出中之尾數為零的數目之基礎。相同運算應用到有關VCTZ指令的運算,具有AB項被設定成零,以便只有C項(用於VCTZ指令的運算元)控制由邏輯509所提供的最後答案之額外標注。答案最後路由到呈現答案給指令之格式化邏輯513(可藉由諸如指數調整加法器508等另一區塊事先處理答案)。
關於VCNT指令,1計數邏輯520計數呈現在C運算元中之1的數目,及答案最後路由到格式化邏輯513。關於VPAR指令,同位邏輯530決定用於C運算元的同位值(如、在運算元中之具有偶數或奇數的1嗎?),及答案最後路由到呈現答案給指令之格式化邏輯513。
圖6A至6D圖示當平行於實現向量運算地執行圖5的功能單元500 N次之上述運算時的圖2之功能單元200的運算。關於VCLZ指令,參考圖6A,接受運算元/元素的輸入向量601a,決定運算元的每一個之首數為0的數目602a,及呈現具有首數為0計數之輸出向量給運算元的每一個603a。關於VCTZ指令,參考圖6B,接受運算元/元素的輸入向量601b,決定運算元的每一個之尾數為0的數目602b,及呈現具有尾數為0計數之輸出向量給運算元的每一個603a。關於VCNT指令,參考圖6C,接受運算元/元素的輸入向量601c,決定運算元的每一個中之1的數目602c,及呈現具有1計數之輸出向量給運算元的每一個603c。關於VPAR指令,參考圖6D,接受運算元/元素的輸入向量601d,決定運算元的每一個之同位602d,及呈現具有同位之輸出向量給運算元的每一個603d。
如上述,上面所討論的功能單元可實施在半導體處理器的指令執行單元內。
圖7圖示智慧型處理核心700,其被認為說明許多不同類型的處理核心架構,諸如複雜指令集電腦(CISC)、精簡指令集電腦(RISC)、及超長指令字電腦(VLIW)等。圖7之智慧型處理核心700包括:1)擷取單元703,其擷取指令(如、從快取記憶體及/或記憶體);2)解碼單元704,其解碼指令;3)排程單元705,其決定指令發行到執行單元706之時序及/或次序(明顯地排程器是選用地);4)執行單元706,其執行指令(典型指令執行單元包括分支執行單元、整數算術執行單元(如、ALU)、浮動點算術執行單元(如、FPU)、及記憶體存取執行單元);以及5)退休單元707,其表示成功完成指令。尤其是,處理核心700可以或不用利用微碼708。
雖然上述的功能單元圖示端對端的硬接線資料路徑,但是完全可以以微碼而非專屬邏輯來實施上述之處理的任一者/全部。在微碼型處理器之事例中,微型作業系統典型上儲存在構成處理器且使處理器內的執行單元能夠執行由指令所呼叫出來之想要的功能之半導體晶片內的非揮發性機器可讀取媒體中(諸如唯讀記憶體(ROM)等)。
具有上述功能之處理器同樣可被實施到各種計算系統內。圖8圖示計算系統的實施例(如、電腦)。圖8之例示計算系統包括:1)一或多個處理器801,其可被設計成包括向量邏輯精簡指令;2)記憶體控制集線器(MCH)802;3)系統記憶體803(存在不同類型,諸如DDR RAM、EDO RAM等等);4)快取記憶體804;5)I/O控制集線器(ICH)805;6)圖形處理器806;7)顯示器/螢幕807(存在不同類型,諸如陰極射線管(CRT)、平板、薄膜電晶體(TFT)、液晶顯示器(LCD)、DPL等等);一或多個I/O裝置808。
一或多個處理器801執行指令,以便完成計算系統實施任一軟體常式。指令經常包含在資料上所執行之某種運算。資料和指令二者皆儲存在系統記憶體803及快取記憶體804中。快取記憶體804典型上被設計成具有比系統記憶體803更短潛伏時間。例如,快取記憶體804可整合到與處理器相同的矽晶片及/或較快的SRAM胞格一起建構,同時系統記憶體803可與較慢的DRAM胞格一起建構。藉由傾向儲存較長使用的指令和資料在與系統記憶體803相反之快取記憶體804中,計算系統的整個性能效能提高。
謹慎而言,系統記憶體803仍對計算系統內的其他組件是有效的。例如,從各種介面接收到計算系統(如、鍵盤和滑鼠、列印機埠、區域網路(LAN)埠、數據機埠等等),或者檢索自計算系統的內部儲存元件(如、硬碟機)之資料通常在實施軟體程式由一或多個處理器801運算之前臨時佇列在系統記憶體803內。同樣地,軟體程式決定應經由計算系統介面的其中之一從計算系統發送到外面實體或儲存到內部儲存元件內的資料通常在被傳送或儲存之前住列在系統記憶體803內。
ICH 805負責確定此種資料在系統記憶體803與其適當的對應計算系統介面之間(及與內部儲存裝置之間,若計算系統被如此設計)適當傳遞。MCH 802負責管理最近及時發生彼此相關聯之處理器801、介面、及內部儲存元件中用於系統記憶體803存取的各種競爭性請求。
一或多個I/O裝置808亦被實施在典型計算系統中。I/O裝置通常負責轉移資料至及/自計算系統(如、網路配接器);或者計算系統內之大規模非揮發性儲存器(如、硬碟機)。ICH 805具有本身與看得到的I/O裝置808之間的雙向點對點鏈結。
在上述說明中,已參考其特定例示實施例說明本發明。然而,明顯地,在不違背附錄的申請專利範圍所陳述之本發明的更廣泛精神和範疇之下,可對其進行各種修改和變化。因此,說明書和圖式應視作圖解性而非限制性。
101a...輸入暫存器
101b...輸入暫存器
102a...輸入暫存器
102b...輸入暫存器
103a...結果暫存器
103b...結果暫存器
200...向量處理功能單元
200_1...純量邏輯單元
200_2...純量邏輯單元
220_N...純量邏輯單元
202_1...結果
202_2...結果
202_N...結果
203...輸入暫存器
204...輸入暫存器
205...輸入暫存器
206...輸出電路
300...功能單元
301...乘法器
302...乘積指數區塊
303...指數差區塊
304...移位器
305...加法器
306...首數為1預測器區塊
307...常態化移位器
308...指數加法器
309...尾數為零邏輯區塊
310...加法器
311...固著位元計算邏輯
312...四捨五入控制邏輯
500...功能單元
503...指數差單元
504...對準移位器
506...邏輯
509...邏輯
513...格式化邏輯
520...1計數邏輯
530...同位邏輯
700...智慧型處理核心
703...擷取單元
704...解碼單元
705...排程單元
706...執行單元
707...退休單元
708...微碼
801...處理器
802...記憶體控制集線器
803...系統記憶體
804...快取記憶體
805...輸入/輸出控制集線器
806...圖形處理器
807...顯示器/螢幕
808...輸入/輸出裝置
313...格式化邏輯
508...指數調整加法器
經由附圖的圖式中之例子而非限制來圖解本發明,在附圖中,相同參考指示類似元件及其中:
圖1A及1B為純量和向量邏輯運算圖;
圖2為向量乘加功能單元圖;
圖3為可用於圖2之功能單元200_1至200_N的每一個之電子功能單元的實施例圖;
圖4A為向量浮點乘加運算圖;
圖4B為向量整數浮點運算圖;
圖5為具有用以完成首數為零、尾數為零、運算元1計數及同位指令之延伸邏輯的圖3之功能單元的實施例圖;
圖6A至6D各自為下面指令:首數為零決定、尾數為零決定、運算元1計數及運算元同位決定之執行圖;
圖7為半導體處理器圖;
圖8為計算系統圖。
200...向量處理功能單元
200_1、200_2、200_N...純量邏輯單元
202_1、202_2、202_N...結果
203、204、205...輸入暫存器
206...輸出電路

Claims (14)

  1. 一種向量功能單元,係實施在半導體晶片上,用以執行維度N的向量運算,包含:a)N個功能單元,該N個功能單元的每一個包含邏輯電路,用以執行:第一整數乘加指令,其表示第一整數乘加計算的最高階位元而非最低階位元,第二整數乘加指令,其表示第二整數乘加計算的最低階位元而非最高階位元;以及浮點乘加指令,該邏輯電路包含乘法器、加法器及移位暫存器以支援該第一及第二整數乘加指令與該浮點乘加指令,該移位暫存器在該加法器前被插入以對齊C項及該乘法器的AB項以支援該第一及第二整數乘加指令與該浮點乘加指令,其中相較於用於該整數乘加指令的移位暫存器,使用一不同的移位策略用於該浮點乘加指令的移位暫存器,該移位策略包含,對於該浮點乘加指令,移位該AB項及該C項之一者以與該AB項及該C項之另一者對齊,該移位策略也包含,對於該第一及第二整數乘加指令,移位該C項以實際上將C項補零,其中該浮點乘加指令之移位的方向係與該第一及第二整數指令之移位的方向相反;b)遮罩電路,其能夠表示來自該N個功能單元之選定的功能單元之輸出結果。
  2. 根據申請專利範圍第1項之向量功能單元,其中, 該等功能單元的每一個支援32位元和64位元運算二者。
  3. 根據申請專利範圍第1項之向量功能單元,其中,該等功能單元的每一個包含第二移位暫存器在該加法器之後。
  4. 根據申請專利範圍第3項之向量功能單元,其中,該加法器具有輸出,該輸出具有大於該第一整數乘法指令和該第二整數乘法指令任一個之純量結果的位元寬度之位元寬度。
  5. 根據申請專利範圍第4項之向量功能單元,其中,該移位暫存器係耦合至邏輯電路,該邏輯電路計算AB項的指數值與C項的指數值之間的差。
  6. 一種向量整數乘加指令之方法,包含:在半導體晶片上執行向量運算,包括:以實施於該半導體晶片上之向量功能單元來執行第一向量指令,以該向量功能單元來執行第二向量指令,及以該向量功能單元來執行第三向量指令,該向量功能單元遮罩元件以呈現所選擇之該向量運算的元件,該第一向量指令為提供最高階位元而非最低階位元之第一向量整數乘加指令,該第二向量指令為提供最低階而非最高階位元之第二向量整數乘加指令,該第三向量指令係為浮點乘加指令,其中使用相同的乘法器、加法器以及移位暫存器以執行用於相同的向量元件位置之該第一、第二及第三向量指令,且其中使用該移位暫存器以對齊用於該第一、第二及第三向量指令中每一者的C項與該乘法器之AB項,其中相較於用於該第一及 第二向量指令的移位暫存器,使用一不同的移位策略用於該第三向量指令的移位暫存器,該移位策略包含,對於該浮點乘加指令,移位該AB項及該C項之一者以與該AB項及該C項之另一者對齊,該移位策略也包含,對於該第一及第二整數乘加指令,移位該C項以實際上將C項補零,其中該浮點乘加指令之移位的方向係與該第一及第二整數指令之移位的方向相反。
  7. 根據申請專利範圍第6項之方法,另包含在計算系統的不同儲存位置中儲存該第一指令的結果和儲存該第二指令的結果。
  8. 根據申請專利範圍第6項之方法,其中,該第一向量整數乘加指令之結果提供比該第二向量整數乘加指令之結果更多的位元。
  9. 根據申請專利範圍第8項之方法,其中,該第一整數乘加指令提供64位元,及該第二向量整數乘加指令提供32位元。
  10. 一種計算系統,包含:非揮發性儲存單元;以及處理器,係實施在半導體晶片上,用以執行維度N的向量運算,該處理器包含N個功能單元,該N個功能單元的每一個包含邏輯電路,用以執行:第一整數乘加指令,其表示第一整數乘加計算的最高階而非最低階位元;以及第二整數乘加指令,其表示第二整數乘加計算的 最低階而非最高階位元;浮點乘加指令,該邏輯電路包含乘法器、加法器及移位暫存器以支援該第一及第二整數乘加指令與該浮點乘加指令,該移位暫存器在該加法器前被插入以對齊C項及該乘法器的AB項以支援該第一及第二整數乘加指令與該浮點乘加指令,其中相較於用於該整數乘加指令的移位暫存器,使用一不同的移位策略用於該浮點乘加指令的移位暫存器,該移位策略包含,對於該浮點乘加指令,移位該AB項及該C項之一者以與該AB項及該C項之另一者對齊,該移位策略也包含,對於該第一及第二整數乘加指令,移位該C項以實際上將C項補零,其中該浮點乘加指令之移位的方向係與該第一及第二整數指令之移位的方向相反;該處理器另包含遮罩電路,其能夠表示來自該N個功能單元之選定的功能單元之輸出結果。
  11. 根據申請專利範圍第10項之計算系統,其中,該等功能單元的每一個支援32位元和64位元運算二者。
  12. 根據申請專利範圍第10項之計算系統,其中,該等功能單元的每一個包含第二移位暫存器在該加法器之後。
  13. 根據申請專利範圍第12項之計算系統,其中,該加法器具有輸出,該輸出具有大於該第一整數乘法指令和該第二整數乘法指令任一個之純量結果的位元寬度之位元寬度。
  14. 根據申請專利範圍第12項之計算系統,其中,該移位暫存器係耦合至邏輯電路,該邏輯電路計算AB項的指數值與C項的指數值之間的差。
TW100133947A 2010-09-24 2011-09-21 向量整數乘加指令之功能單元、方法及計算系統 TWI455021B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/890,497 US8667042B2 (en) 2010-09-24 2010-09-24 Functional unit for vector integer multiply add instruction

Publications (2)

Publication Number Publication Date
TW201237743A TW201237743A (en) 2012-09-16
TWI455021B true TWI455021B (zh) 2014-10-01

Family

ID=45871744

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100133947A TWI455021B (zh) 2010-09-24 2011-09-21 向量整數乘加指令之功能單元、方法及計算系統

Country Status (9)

Country Link
US (1) US8667042B2 (zh)
JP (2) JP2013543174A (zh)
KR (1) KR101427637B1 (zh)
CN (1) CN103119579B (zh)
BR (1) BR112013006744A2 (zh)
DE (1) DE112011103196T5 (zh)
GB (1) GB2497450B (zh)
TW (1) TWI455021B (zh)
WO (1) WO2012040545A2 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101595637B1 (ko) 2011-04-01 2016-02-18 인텔 코포레이션 벡터 친숙형 명령어 형식 및 그의 실행
US8930432B2 (en) * 2011-08-04 2015-01-06 International Business Machines Corporation Floating point execution unit with fixed point functionality
WO2013095553A1 (en) 2011-12-22 2013-06-27 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
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
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits
US9372692B2 (en) 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality
US9323531B2 (en) 2013-03-15 2016-04-26 Intel Corporation Systems, apparatuses, and methods for determining a trailing least significant masking bit of a writemask register
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US20150052330A1 (en) * 2013-08-14 2015-02-19 Qualcomm Incorporated Vector arithmetic reduction
CN103677742B (zh) * 2013-12-13 2016-08-17 广西科技大学 多浮点操作数加/减运算控制器
WO2015096167A1 (en) * 2013-12-28 2015-07-02 Intel Corporation Rsa algorithm acceleration processors, methods, systems, and instructions
US9507565B1 (en) 2014-02-14 2016-11-29 Altera Corporation Programmable device implementing fixed and floating point functionality in a mixed architecture
US9524143B2 (en) * 2014-06-26 2016-12-20 Arm Limited Apparatus and method for efficient division performance
US9678749B2 (en) * 2014-12-22 2017-06-13 Intel Corporation Instruction and logic for shift-sum multiplier
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US11061672B2 (en) * 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US20170177336A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US10671347B2 (en) * 2016-01-28 2020-06-02 International Business Machines Corporation Stochastic rounding floating-point multiply instruction using entropy from a register
US10489152B2 (en) 2016-01-28 2019-11-26 International Business Machines Corporation Stochastic rounding floating-point add instruction using entropy from a register
GB2553783B (en) * 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11436010B2 (en) 2017-06-30 2022-09-06 Intel Corporation Method and apparatus for vectorizing indirect update loops
CN109388427A (zh) * 2017-08-11 2019-02-26 龙芯中科技术有限公司 向量处理方法、向量处理单元和微处理器
US10732929B2 (en) * 2018-01-09 2020-08-04 Samsung Electronics Co., Ltd. Computing accelerator using a lookup table
DE102018209901A1 (de) * 2018-06-19 2019-12-19 Robert Bosch Gmbh Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden
JPWO2020066375A1 (ja) * 2018-09-25 2021-08-30 日本電気株式会社 情報処理装置、情報処理方法、プログラム
JP7115211B2 (ja) * 2018-10-18 2022-08-09 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN113396401A (zh) 2019-03-15 2021-09-14 英特尔公司 多贴片存储器管理
US20230075534A1 (en) * 2021-08-19 2023-03-09 International Business Machines Corporation Masked shifted add operation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6324638B1 (en) * 1999-03-31 2001-11-27 International Business Machines Corporation Processor having vector processing capability and method for executing a vector instruction in a processor
US7225323B2 (en) * 2004-11-10 2007-05-29 Nvidia Corporation Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines
TW200929062A (en) * 2007-10-22 2009-07-01 Ibm Scalar float register overlay on vector register file for efficient register allocation and scalar float and vector register sharing
US20090300323A1 (en) * 2005-02-10 2009-12-03 Richard Hessel Vector Processor System

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4849923A (en) 1986-06-27 1989-07-18 Digital Equipment Corporation Apparatus and method for execution of floating point operations
US4852039A (en) 1987-06-19 1989-07-25 Digital Equipment Corporation Apparatus and method for accelerating floating point addition and subtraction operations by accelerating the effective subtraction procedure
JPH03251916A (ja) * 1990-03-01 1991-11-11 Toshiba Corp 浮動小数点加減算装置
JPH0520028A (ja) * 1990-12-28 1993-01-29 Matsushita Electric Ind Co Ltd 加減算のための浮動小数点演算装置の仮数部処理回路
US5317527A (en) 1993-02-10 1994-05-31 Digital Equipment Corporation Leading one/zero bit detector for floating point operation
US5341319A (en) 1993-02-10 1994-08-23 Digital Equipment Corporation Method and apparatus for controlling a rounding operation in a floating point multiplier circuit
JP3257278B2 (ja) * 1994-09-19 2002-02-18 株式会社日立製作所 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
JP3691538B2 (ja) * 1995-03-07 2005-09-07 富士通株式会社 ベクトルデータ加算方法及びベクトルデータ乗算方法
US5784305A (en) * 1995-05-01 1998-07-21 Nec Corporation Multiply-adder unit
EP0837390A1 (en) * 1996-10-18 1998-04-22 Texas Instruments Incorporated Improvements in or relating to microprocessor integrated circuits
JPH10143355A (ja) * 1996-10-30 1998-05-29 Texas Instr Inc <Ti> 種々の書式のオペランドを高効率で乗算する能力を有するマイクロプロセッサ及びその演算方法
US5928316A (en) * 1996-11-18 1999-07-27 Samsung Electronics Co., Ltd. Fused floating-point multiply-and-accumulate unit with carry correction
KR100291383B1 (ko) * 1996-11-18 2001-09-17 윤종용 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US6401194B1 (en) 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
JP3544846B2 (ja) * 1997-02-13 2004-07-21 株式会社東芝 論理回路及び浮動小数点演算装置
US5991531A (en) * 1997-02-24 1999-11-23 Samsung Electronics Co., Ltd. Scalable width vector processor architecture for efficient emulation
US6578059B1 (en) 1998-10-10 2003-06-10 Institute For The Development Of Emerging Architectures, L.L.C. Methods and apparatus for controlling exponent range in floating-point calculations
US6378067B1 (en) 1998-10-12 2002-04-23 Idea Corporation Exception reporting architecture for SIMD-FP instructions
US6292886B1 (en) 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
US6321327B1 (en) 1998-12-30 2001-11-20 Intel Corporation Method for setting a bit associated with each component of packed floating-pint operand that is normalized in SIMD operations
US6480872B1 (en) * 1999-01-21 2002-11-12 Sandcraft, Inc. Floating-point and integer multiply-add and multiply-accumulate
US6360241B1 (en) 1999-02-01 2002-03-19 Compaq Information Technologies Goup, L.P. Computer method and apparatus for division and square root operations using signed digit
US6732135B1 (en) 1999-02-01 2004-05-04 Hewlett-Packard Development Company, L.P. Method and apparatus for accumulating partial quotients in a digital processor
US6366942B1 (en) 1999-02-01 2002-04-02 Compaq Information Technologies Group Lp Method and apparatus for rounding floating point results in a digital processing system
US7127483B2 (en) 2001-12-26 2006-10-24 Hewlett-Packard Development Company, L.P. Method and system of a microprocessor subtraction-division floating point divider
US8090928B2 (en) * 2002-06-28 2012-01-03 Intellectual Ventures I Llc Methods and apparatus for processing scalar and vector instructions
US7831804B2 (en) * 2004-06-22 2010-11-09 St Microelectronics S.R.L. Multidimensional processor architecture
US7707236B2 (en) * 2004-08-13 2010-04-27 Analog Devices, Inc. Methods and apparatus for an efficient floating point ALU
KR100911786B1 (ko) * 2004-11-10 2009-08-12 엔비디아 코포레이션 다목적 승산-가산 기능 유닛
US20060179092A1 (en) 2005-02-10 2006-08-10 Schmookler Martin S System and method for executing fixed point divide operations using a floating point multiply-add pipeline
JP2006227939A (ja) * 2005-02-17 2006-08-31 Matsushita Electric Ind Co Ltd 演算装置
US20070198815A1 (en) * 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
US20070074008A1 (en) 2005-09-28 2007-03-29 Donofrio David D Mixed mode floating-point pipeline with extended functions
US20090063608A1 (en) * 2007-09-04 2009-03-05 Eric Oliver Mejdrich Full Vector Width Cross Product Using Recirculation for Area Optimization
US7809925B2 (en) * 2007-12-07 2010-10-05 International Business Machines Corporation Processing unit incorporating vectorizable execution unit
US7945764B2 (en) * 2008-01-11 2011-05-17 International Business Machines Corporation Processing unit incorporating multirate execution unit
US8356160B2 (en) * 2008-01-15 2013-01-15 International Business Machines Corporation Pipelined multiple operand minimum and maximum function
US8139061B2 (en) * 2008-08-01 2012-03-20 International Business Machines Corporation Floating point execution unit for calculating a one minus dot product value in a single pass
US8555034B2 (en) * 2009-12-15 2013-10-08 Oracle America, Inc. Execution of variable width vector processing instructions
US8606840B2 (en) * 2010-03-17 2013-12-10 Oracle International Corporation Apparatus and method for floating-point fused multiply add
US8629867B2 (en) * 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US20110320765A1 (en) * 2010-06-28 2011-12-29 International Business Machines Corporation Variable width vector instruction processor
US8676871B2 (en) * 2010-09-24 2014-03-18 Intel Corporation Functional unit capable of executing approximations of functions
US9092213B2 (en) * 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6324638B1 (en) * 1999-03-31 2001-11-27 International Business Machines Corporation Processor having vector processing capability and method for executing a vector instruction in a processor
US7225323B2 (en) * 2004-11-10 2007-05-29 Nvidia Corporation Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines
US20090300323A1 (en) * 2005-02-10 2009-12-03 Richard Hessel Vector Processor System
TW200929062A (en) * 2007-10-22 2009-07-01 Ibm Scalar float register overlay on vector register file for efficient register allocation and scalar float and vector register sharing

Also Published As

Publication number Publication date
CN103119579A (zh) 2013-05-22
JP2015111421A (ja) 2015-06-18
KR20130063532A (ko) 2013-06-14
GB2497450B (en) 2017-08-02
TW201237743A (en) 2012-09-16
US8667042B2 (en) 2014-03-04
US20120078992A1 (en) 2012-03-29
BR112013006744A2 (pt) 2019-09-24
GB201303473D0 (en) 2013-04-10
WO2012040545A2 (en) 2012-03-29
GB2497450A (en) 2013-06-12
WO2012040545A3 (en) 2012-06-14
JP2013543174A (ja) 2013-11-28
DE112011103196T5 (de) 2013-09-19
KR101427637B1 (ko) 2014-08-07
WO2012040545A9 (en) 2012-10-04
JP6248328B2 (ja) 2017-12-20
CN103119579B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
TWI455021B (zh) 向量整數乘加指令之功能單元、方法及計算系統
TWI547868B (zh) 用於向量前導零、向量尾隨零、向量運算元1計數及向量奇偶性計算之功能單元
US10649733B2 (en) Multiply add functional unit capable of executing scale, round, getexp, round, getmant, reduce, range and class instructions
EP3719639B1 (en) Systems and methods to perform floating-point addition with selected rounding
US10416962B2 (en) Decimal and binary floating point arithmetic calculations
US9952829B2 (en) Binary fused multiply-add floating-point calculations
CN108139912B (zh) 在浮点运算期间计算和保留误差边界的装置和方法
US20050172210A1 (en) Add-compare-select accelerator using pre-compare-select-add operation
US20190205093A1 (en) Unified integer and carry-less modular multiplier and a reduction circuit
US6487576B1 (en) Zero anticipation method and apparatus
TWI807927B (zh) 具有向量歸約方法與元素歸約方法的向量處理器

Legal Events

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