TW201918875A - 浮點數運算電路及方法 - Google Patents
浮點數運算電路及方法 Download PDFInfo
- Publication number
- TW201918875A TW201918875A TW106138354A TW106138354A TW201918875A TW 201918875 A TW201918875 A TW 201918875A TW 106138354 A TW106138354 A TW 106138354A TW 106138354 A TW106138354 A TW 106138354A TW 201918875 A TW201918875 A TW 201918875A
- Authority
- TW
- Taiwan
- Prior art keywords
- circuit
- flag
- detection result
- detection
- multiplication
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本發明揭露了一種浮點數運算電路及方法。浮點數運算電路用於對一第一運算元、一第二運算元及一第三運算元進行一融合乘積累加法運算或一乘積累加法運算,或是對該第一運算元及該第二及運算元進行一乘法運算。該浮點數運算電路包含二修整電路、一乘法電路、一選擇電路、一控制電路以及一加法電路。控制電路控制各種運算的排程以及各計算路徑上資源的運用,以簡化電路及提升處理器的效能。
Description
本發明是關於浮點數的運算,尤其是關於浮點數之乘法運算、乘積累加法運算(multiplication and accumulation, mac)及融合乘積累加法運算(fused multiplication and accumulation, fused mac)。
處理器進行浮點數的算術運算時常涉及加法、減法、乘法、除法、乘積累加法、融合乘積累加法等運算。乘積累加法運算及融合乘積累加法運算皆是計算A*B+C(A、B、C皆為浮點數),但因為乘積累加法運算於乘法運算及加法運算各做一次修整(rounding),而融合乘積累加法運算僅於加法運算做一次修整,所以融合乘積累加法運算會得到相對精確的結果。習知的處理器通常對個別的運算做優化,但是對個別的運算進行優化對提升處理器的整體效能有限。因此需要一個將多種運算同時納入考量的優化電路,以簡化電路並更加提升處理器的效能。
鑑於先前技術之不足,本發明之一目的在於提供一種浮點數運算電路及方法,以簡化電路及提升處理器的效能。
本發明揭露一種浮點數運算電路,用於對一第一運算元、一第二運算元及一第三運算元進行一融合乘積累加法運算或一乘積累加法運算,或是對該第一運算元及該第二及運算元進行一乘法運算。該浮點數運算電路包含一乘法電路、一選擇電路、一控制電路以及一加法電路。該乘法電路接收該第一運算元及該第二運算元,並對該第一運算元及該第二運算元進行該乘法運算以產生一未經修整的積及一經修整的積。該選擇電路接收該未經修整的積及該經修整的積,並輸出該未經修整的積及該經修整的積的其中之一。當該浮點數運算電路執行該乘積累加法運算時,控制該選擇電路輸出該經修整的積,以及當該浮點數運算電路執行該融合乘積累加法運算時,控制該選擇電路輸出該未經修整的積。該加法電路接收該未經修整的積及該經修整的積的其中之一以及該第三運算元,並將該未經修整的積及該經修整的積的其中之一與該第三運算元相加,以得到一運算結果,其中該運算結果為該融合乘積累加法運算或該乘積累加法運算的結果。該加法電路的總輸入位元數大於兩倍的該第一、第二或第三運算元的位元數。
本發明另揭露一種浮點數運算方法,用於對一第一運算元、一第二運算元及一第三運算元進行一融合乘積累加法運算或一乘積累加法運算,或是對該第一運算元及該第二及運算元進行一乘法運算。該方法包含以下步驟:以一乘法電路接收該第一運算元及該第二運算元,並以該乘法電路對該第一運算元及該第二運算元進行該乘法運算以產生一未經修整的積及一經修整的積;以一選擇電路接收該未經修整的積及該經修整的積,並輸出該未經修整的積及該經修整的積的其中之一;當該乘積累加法運算被執行時,控制該選擇電路輸出該經修整的積,以及當該融合乘積累加法運算被執行時,控制該選擇電路輸出該未經修整的積;以及以一加法電路接收該未經修整的積及該經修整的積的其中之一以及該第三運算元,並以該加法電路對該未經修整的積及該經修整的積的其中之一與該第三運算元進行一加法運算,以得到一運算結果,其中該運算結果為該融合乘積累加法運算或該乘積累加法運算的結果。該加法電路的總輸入位元數大於兩倍的該第一、第二或第三運算元的位元數。
本發明的浮點數運算電路及方法整合浮點數的乘法運算、乘積累加法運算及融合乘積累加法運算。相較於傳統技術,本發明之浮點數運算電路及方法同時為此三種運算進行優化,以提升處理器的效能及簡化電路。
有關本發明的特徵、實作與功效,茲配合圖式作實施例詳細說明如下。
以下說明內容之技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。
本發明之揭露內容包含浮點數運算電路及方法。由於本發明之浮點數運算電路所包含之部分元件單獨而言可能為已知元件,因此在不影響該裝置發明之充分揭露及可實施性的前提下,以下說明對於已知元件的細節將予以節略。此外,本發明之浮點數運算方法的部分或全部流程可以藉由本發明之浮點數運算電路或其等效裝置來執行,在不影響該方法發明之充分揭露及可實施性的前提下,以下方法發明之說明將著重於步驟內容而非硬體。
圖1係本發明浮點數運算電路之計算部分的電路圖。圖中以雙精度(double precision)(以一個位元表示正負號、以11個位元表示指數部分、以52個位元表示有效數(significand)的小數部分)為例,但本發明亦可應用於IEEE 754-2008所定義之其他精度。浮點數運算電路的計算架構100用來進行浮點數的一般計算(包含乘法運算、乘積累加法運算及融合乘積累加法運算),包含乘法電路110、修整電路112、選擇電路120、加法電路130、修整電路132及控制電路140。浮點數運算電路的計算架構100藉由共用或重覆使用乘法電路110及加法電路130來同時優化此三種運算,以提升電路效能及節省電路面積。
圖2為本發明浮點數運算方法之計算部分的流程圖,此流程圖對應於圖1的電路圖。首先,乘法電路110於階段1接收運算元A及B(步驟S210),接著乘法電路110對運算元A及B進行乘法運算,並產生乘積D以及乘積D_r(步驟S220)。乘積D為未經修整、正規化(normalize)或截斷(rounding/truncate)的結果,乘積D_r則為乘積D經修整電路112修整、正規化或截斷後的結果。乘積D_r的位元數與運算元A及B相同。修整電路112根據預設的修整模式進行修整,例如四捨五入(round-to-nearest)、往正數近似(round-toward-positive)、往負數近似(round-toward-negative)或往零近似(round-toward-zero)。修整電路112可以包含於乘法電路110中;或者乘法電路110與修整電路112可以是獨立的電路。
浮點數運算電路的計算架構100的乘法運算的運算結果R_no1=D_r在階段1輸出(步驟S230)。乘積D及乘積D_r在階段2輸入選擇電路120(步驟S235)。接下來控制電路140判斷浮點數運算電路的計算架構100對運算元A、B及C進行乘積累加法運算或融合乘積累加法運算(步驟S240),並對應控制選擇電路120輸出乘積D或乘積D_r。當乘積累加法運算被執行時,控制電路140控制選擇電路120輸出乘積D_r,以及加法電路130在階段2將運算元C與乘積D_r相加(步驟S250);當融合乘積累加法運算被執行時,控制電路140控制選擇電路120輸出乘積D,以及加法電路130在階段2將運算元C與乘積D相加(步驟S260)。請注意,加法電路130可以在階段1或階段2接收運算元C。最後,修整電路132修整加法電路130所輸出和(步驟S270),而得到運算結果R_no2。更詳細地說,依據選擇電路120的選擇結果,修整電路132對C+D的結果或是C+D_r的結果進行修整。運算結果R_no2的位元數與運算元A、B及C相同。浮點數運算電路的計算架構100輸出運算結果R_no2作為乘積累加法運算或融合乘積累加法運算的結果(步驟S280)。修整電路132可以包含於加法電路130中;或者加法電路130與修整電路132可以是獨立的電路。上述的階段2位於階段1之後。
浮點數運算電路的計算架構100根據工作時脈動作;更明確地說,乘法電路110、修整電路112、選擇電路120、加法電路130、修整電路132及控制電路140根據工作時脈動作。乘法電路110為管線化的電路,且佔用工作時脈之至少一週期;也就是說,從接收運算元A、B至產生運算結果R_no1,乘法電路110至少經過一個工作時脈的週期。類似地,加法電路130為管線化的電路,且佔用該時脈之至少一週期;也就是說,從接收運算元C及乘積(D或D_r)至產生運算結果R_no2,加法電路130至少經過一個工作時脈的週期。
如圖1所示的電路,乘法電路110除了負責乘法運算(A*B)之外,還負責乘積累加法運算(A*B+C)及融合乘積累加法運算(A*B+C)的乘法部分。再者,因為加法電路130負責乘積累加法運算及融合乘積累加法運算的加法部分,所以加法電路130分配給其中一個運算元(運算元C)一般的位元數(視浮點數運算電路的計算架構100所設計的精度而定),分配給另一個運算元(D或D_r)未經修整的位元數。以雙精度為例,加法電路130的總輸入位元數為64位元+119位元,其中,119位元中的1、12及106個位元分別用於表示正負號、指數部分及有效數的小數部分。作為比較,單純用於乘積累加法運算運算(亦即不與融合乘積累加法運算共用)的加法電路的總輸入位元數為64位元+64位元。
圖3係本發明浮點數運算電路之偵測部分的一實施例的電路圖,浮點數運算電路的偵測架構300用來偵測浮點數運算的特殊值(special value),包含偵測電路310、偵測電路320、偵測電路330、聯集(union)電路340、選擇電路350及控制電路360。控制電路360可以與圖1的控制電路140共用電路,亦或是兩者以獨立的電路實作。浮點數運算電路的偵測架構300用於偵測運算元A、B及C是否為特殊值。當運算元A、B及C的一部分或全部為特殊值時,乘法運算、乘積累加法運算及融合乘積累加法運算的運算結果可以由浮點數運算電路的偵測架構300產生,而不需經過浮點數運算電路的計算架構100的計算。特殊值包含、、非數值(not a number, NaN)、非規格化數(subnormal)等等。舉例來說,以下運算的結果可以由浮點數運算電路的偵測架構300決定,而不需經過浮點數運算電路的計算架構100的計算:(1)(2)(3)(4)(5) 其中F1及F2為非特殊值的浮點數且為非規格化數。範例(1)至(5)僅作為例示,非用以限定本發明。
偵測電路310對應於乘法運算,偵測電路320對應於融合乘積累加法運算,以及偵測電路330對應於加法運算。偵測電路310、偵測電路320及偵測電路330更對應地輸出運算的狀態旗標(status flag)。根據IEEE 754-2008的定義,狀態旗標包含(1)無效運算(invalid operation)、(2)除以零(divided by zero)、(3)溢位(overflow)、(4)欠位(underflow)、(5)非精確(inexact)。除了這五種之外,狀態旗標還可包含使用者定義的旗標。
圖4為本發明浮點數運算方法之偵測部分的一實施例的流程圖,此流程圖對應於圖3的電路圖。浮點數運算電路的偵測架構300於階段1接收運算元A及B(由偵測電路310接收)或運算元A、B及C(由偵測電路320接收)(步驟S410)。偵測電路310於階段1根據運算元A及B產生偵測結果R_sp1及旗標flag1(步驟S420),偵測結果R_sp1及旗標flag1對應乘法運算。偵測結果R_sp1例如是上述特殊值的其中之一。舉例來說,如果運算元A及B的至少其中之一為特殊值,導致乘法運算為無效運算或是不需運算,則乘法運算的運算結果由偵測電路310在階段1產生,而不需經由乘法電路110的計算。
偵測電路320於階段1根據運算元A、B及C產生偵測結果R_sp2及旗標flag2(步驟S430),偵測結果R_sp2及旗標flag2對應融合乘積累加法運算。偵測結果R_sp2例如是上述特殊值的其中之一。舉例來說,如果運算元A、B及C的至少其中之一為特殊值,導致融合乘積累加法運算為無效運算或是不需運算,則融合乘積累加法運算的運算結果由偵測電路320在階段1產生,而不需經由乘法電路110及加法電路130的計算。
偵測電路330於階段2根據偵測結果R_sp1及運算元C產生偵測結果R_sp3及中間旗標flag’(步驟S440)。聯集電路340根據旗標flag1及中間旗標flag’產生旗標flag3(步驟S450),更明確地說,聯集電路340將旗標flag1及中間旗標flag’做逐位元或運算(bitwise OR operation),以產生旗標flag3。偵測結果R_sp3及旗標flag3對應乘積累加法運算。
選擇電路350於階段2從偵測電路320接收偵測結果R_sp2及旗標flag2、從偵測電路330接收偵測結果R_sp3以及從聯集電路340接收旗標flag3(步驟S455)。接下來控制電路360判斷浮點數運算電路的偵測架構300對運算元A、B及C進行乘積累加法運算或融合乘積累加法運算(步驟S460),並控制選擇電路350輸出(R_sp2, flag2)或(R_sp3, flag3)以作為最終的偵測結果R_sp4及最終的旗標flag4。當乘積累加法運算被執行時,控制電路360控制選擇電路350在階段2輸出偵測結果R_sp3及旗標flag3(步驟S470);當融合乘積累加法運算被執行時,控制電路360控制選擇電路350在階段2輸出偵測結果R_sp2及旗標flag2(步驟S480)。
圖5係本發明浮點數運算電路之偵測部分的另一實施例的電路圖,浮點數運算電路的偵測架構500用來偵測浮點數運算的特殊值,包含偵測電路510、偵測電路520、偵測電路530、聯集電路540、選擇電路550及控制電路560。控制電路560可以與圖1的控制電路140共用電路,亦或是兩者以獨立的電路實作。浮點數運算電路的偵測架構500用於偵測運算元A、B及C是否為特殊值。當運算元A、B及C的一部分或全部為特殊值時,乘法運算、乘積累加法運算及融合乘積累加法運算的運算結果可以由浮點數運算電路的偵測架構500產生,而不需經過浮點數運算電路的計算架構100的計算。偵測電路510對應於乘法運算,偵測電路520對應於融合乘積累加法運算,以及偵測電路530對應於加法運算。偵測電路510、偵測電路520及偵測電路530更對應地輸出運算的狀態旗標。
圖6為本發明浮點數運算方法之偵測部分的另一實施例的流程圖,此流程圖對應於圖5的電路圖。浮點數運算電路的偵測架構500於階段1接收運算元A及B(由偵測電路510接收)或運算元A、B及C(由偵測電路520接收)(步驟S610)。偵測電路510於階段1根據運算元A及B產生偵測結果R_sp1及旗標flag1(步驟S620),偵測結果R_sp1及旗標flag1對應乘法運算。偵測結果R_sp1例如是上述特殊值的其中之一。舉例來說,如果運算元A及B的至少其中之一為特殊值,導致乘法運算為無效運算或是不需運算,則乘法運算的運算結果由偵測電路510在階段1產生,而不需經由乘法電路110的計算。
偵測電路520於階段1根據運算元A、B及C產生偵測結果R_sp2及旗標flag2(步驟S630),偵測結果R_sp2及旗標flag2對應融合乘積累加法運算。偵測結果R_sp2例如是上述特殊值的其中之一。舉例來說,如果運算元A、B及C的至少其中之一為特殊值,導致融合乘積累加法運算為無效運算或是不需運算,則乘法運算的運算結果由偵測電路520在階段1產生,而不需經由乘法電路110及加法電路130的計算。
選擇電路550於階段1從偵測電路510接收偵測結果R_sp1及旗標flag1、從偵測電路520接收偵測結果R_sp2及旗標flag2(步驟S635)。接下來控制電路560判斷浮點數運算電路的偵測架構500係進行乘法運算或融合乘積累加法運算(步驟S640),並控制選擇電路550輸出(R_sp1, flag1)或(R_sp2, flag2)以作為階段1的偵測結果R_sp4及階段1的旗標flag4。當乘法運算被執行時,控制電路560控制選擇電路550在階段1輸出偵測結果R_sp1及旗標flag1(步驟S650);當融合乘積累加法運算被執行時,控制電路560控制選擇電路550在階段1輸出偵測結果R_sp2及旗標flag2(步驟S660)。
偵測電路530於階段2根據偵測結果R_sp1及運算元C產生偵測結果R_sp3及中間旗標flag’(步驟S670)。聯集電路540根據旗標flag1及中間旗標flag’產生旗標flag3(步驟S680),更明確地說,聯集電路540將旗標flag1及中間旗標flag’做逐位元或運算,以產生旗標flag3。偵測結果R_sp3及旗標flag3對應乘積累加法運算,並且於階段2輸出(步驟S690)。
偵測電路310~330以及偵測電路510~530可以由邏輯電路實作,且該些偵測電路如何根據輸入值產生偵測結果及旗標為本技術領域具有通常知識者所熟知,故不再贅述。
圖1的浮點數運算電路的計算架構100可以與圖3的浮點數運算電路的偵測架構300或圖5的浮點數運算電路的偵測架構500組成本發明的浮點數運算電路。在圖1與圖3組合的實施例中,乘法運算的結果(一般計算的結果R_no1或是特殊值的偵測結果R_sp1)在階段1輸出,而乘積累加法運算或融合乘積累加法運算的結果(一般計算的結果R_no2或是特殊值的偵測結果R_sp4)在階段2輸出。在圖1與圖5組合的實施例中,乘法運算的結果(一般計算的結果R_no1或是特殊值的偵測結果R_sp1)及融合乘積累加法運算的特殊值的偵測結果R_sp2在階段1輸出,而融合乘積累加法運算或乘積累加法運算的一般計算的結果R_no2以及乘積累加法運算的特殊值的偵測結果R_sp3在階段2輸出。由此可見,相較於圖1與圖3組合的實施例,在圖1與圖5組合的實施例中,有機會可以較早得到融合乘積累加法運算的結果(在階段1而非階段2輸出)。
前述的控制電路140、360及560分別與圖1、3及5中的其他電路電連接(簡潔起見,未顯示該些連線),用來控制各種運算的排程以及各計算路徑上資源的運用。控制電路140、360及560可以例如由有限狀態機(finite state machine, FSM)實作,但不以此為限。
在浮點數運算電路的計算架構100中,控制電路140係(1)回應乘法指令控制乘法電路110進行運算(對應步驟S210~S230);(2)回應乘積累加法運算指令控制乘法電路110及加法電路130進行運算並控制選擇電路120選擇乘積D_r而非乘積D(對應步驟S210~S250、S270~S280);以及(3)回應融合乘積累加法運算指令控制乘法電路110及加法電路130進行運算並控制選擇電路120選擇乘積D而非乘積D_r(對應步驟S210~S240、S260~S280)。
在浮點數運算電路的偵測架構300中,控制電路360係(1)回應乘法指令控制偵測電路310進行偵測(對應步驟S410~S420);(2)回應融合乘積累加法運算指令控制偵測電路320進行偵測(對應步驟S410、S430)以及控制選擇電路350選擇(R_sp2, flag2)(對應步驟S460、S480);以及(3)回應乘積累加法運算指令控制偵測電路310及偵測電路330進行偵測(對應步驟S410~S420、S440~S450)以及控制選擇電路350選擇(R_sp3, flag3)(對應步驟S460~S470)。
在浮點數運算電路的偵測架構500中,控制電路560係(1)回應乘法指令控制偵測電路510進行偵測(對應步驟S610~S620)以及控制選擇電路550選擇(R_sp1, flag1)(對應步驟S640~S650);(2)回應融合乘積累加法運算指令控制偵測電路520進行偵測(對應步驟S610、S630)以及控制選擇電路550選擇(R_sp2, flag2)(對應步驟S640、S660);以及(3)回應乘積累加法運算指令控制偵測電路510及偵測電路530進行偵測(對應步驟S610~S620、S670~S690)。
本發明提出浮點數運算電路的兩個實施例:(1)圖1與圖3的組合(對應圖2及圖4的流程);以及(2)圖1與圖5的組合(對應圖2及圖6的流程)。兩個實施例皆整合乘法運算、乘積累加法運算以及融合乘積累加法運算並同時對三者進行優化,因此本發明的浮點數運算電路在這三種運算的處理上可以提升處理器的效能以及簡化電路。值得注意的是,本發明的浮點數運算電路的計算架構100可以獨立運作以完成浮點數的一般計算,或是搭配其他的偵測架構以一併完成浮點數的一般計算及浮點數運算的特殊值的偵測。類似地,浮點數運算電路的偵測架構300及500亦可以獨立運作或搭配其他的計算架構。
由於本技術領域具有通常知識者可藉由本案之裝置發明的揭露內容來瞭解本案之方法發明的實施細節與變化,因此,為避免贅文,在不影響該方法發明之揭露要求及可實施性的前提下,重複之說明在此予以節略。請注意,前揭圖示中,元件之形狀、尺寸、比例以及步驟之順序等僅為示意,係供本技術領域具有通常知識者瞭解本發明之用,非用以限制本發明。再者,前揭實施例雖以雙精度為例,然此並非對本發明之限制,本技術領域人士可依本發明之揭露適當地將本發明應用於其它精度。
雖然本發明之實施例如上所述,然而該些實施例並非用來限定本發明,本技術領域具有通常知識者可依據本發明之明示或隱含之內容對本發明之技術特徵施以變化,凡此種種變化均可能屬於本發明所尋求之專利保護範疇,換言之,本發明之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
100‧‧‧浮點數運算電路的計算架構
110‧‧‧乘法電路
112、132‧‧‧修整電路
120、350、550‧‧‧選擇電路
130‧‧‧加法電路
140、360、560‧‧‧控制電路
300、500‧‧‧浮點數運算電路的偵測架構
310、320、330、510、520、530‧‧‧偵測電路
340、540‧‧‧聯集電路
S210~S280、S410~S480、S610~S690‧‧‧步驟
[圖1]為本發明浮點數運算電路之計算部分的電路圖; [圖2]為本發明浮點數運算方法之計算部分的流程圖; [圖3]為本發明浮點數運算電路之偵測部分的一實施例的電路圖; [圖4]為本發明浮點數運算方法之偵測部分的一實施例的流程圖; [圖5]為本發明浮點數運算電路之偵測部分的另一實施例的電路圖;以及 [圖6]為本發明浮點數運算方法之偵測部分的另一實施例的流程圖。
Claims (10)
- 一種浮點數運算電路,用於對一第一運算元、一第二運算元及一第三運算元進行一融合乘積累加法運算或一乘積累加法運算,或是對該第一運算元及該第二及運算元進行一乘法運算,該浮點數運算電路包含: 一乘法電路,接收該第一運算元及該第二運算元,對該第一運算元及該第二運算元進行該乘法運算以產生一未經修整的積及一經修整的積; 一選擇電路,耦接該乘法電路,用來接收該未經修整的積及該經修整的積,並輸出該未經修整的積及該經修整的積的其中之一; 一控制電路,耦接該選擇電路,當該浮點數運算電路執行該乘積累加法運算時,控制該選擇電路輸出該經修整的積,以及當該浮點數運算電路執行該融合乘積累加法運算時,控制該選擇電路輸出該未經修整的積;以及 一加法電路,耦接該選擇電路,接收該未經修整的積及該經修整的積的其中之一以及該第三運算元,將該未經修整的積及該經修整的積的其中之一與該第三運算元相加,以得到一運算結果,其中該運算結果為該融合乘積累加法運算或該乘積累加法運算的結果; 其中,該加法電路的總輸入位元數大於兩倍的該第一、第二或第三運算元的位元數。
- 如申請專利範圍第1項所述之浮點數運算電路,其中該浮點數運算電路係依據一時脈動作,該乘法電路操作於一第一階段且佔用該時脈之至少一週期,該加法電路操作於一第二階段且佔用該時脈之至少一週期,且該第二階段位於該第一階段之後。
- 如申請專利範圍第2項所述之浮點數運算電路,其中該加法電路係於該第一階段接收該第三運算元。
- 如申請專利範圍第2項所述之浮點數運算電路,其中該乘法電路係於該第一階段產生該經修整的積。
- 如申請專利範圍第2項所述之浮點數運算電路,其中該選擇電路為一第一選擇電路,該浮點數運算電路更包含: 一第一偵測電路,於該第一階段接收該第一運算元及該第二運算元,並於該第一階段根據該第一運算元及該第二運算元產生一第一偵測結果及一第一旗標,其中該第一偵測結果及該第一旗標係對應該乘法運算; 一第二偵測電路,於該第一階段接收該第一運算元、該第二運算元及該第三運算元,並於該第一階段根據該第一運算元、該第二運算元及該第三運算元產生一第二偵測結果及一第二旗標,其中該第二偵測結果及該第二旗標係對應該融合乘積累加法運算; 一第三偵測電路,耦接該第一偵測電路及該第二偵測電路,於該第二階段接收該第一偵測結果及該第三運算元,並於該第二階段根據該第一偵測結果及該第三運算元產生一第三偵測結果及一中間旗標; 一聯集(union)電路,耦接該第一偵測電路及該第三偵測電路,用來根據該第一旗標及該中間旗標產生一第三旗標,其中該第三旗標係該第一旗標及該中間旗標的聯集,且該第三偵測結果及該第三旗標係對應該乘積累加法運算;以及 一第二選擇電路,耦接該第二偵測電路、該第三偵測電路及該聯集電路,接收該第二偵測結果、該第二旗標、該第三偵測結果及該第三旗標; 其中,該控制電路更耦接該第二選擇電路,當該浮點數運算電路執行該融合乘積累加法運算時,控制該第二選擇電路輸出該第二偵測結果及該第二旗標,以及當該浮點數運算電路執行該乘積累加法運算時,控制該第二選擇電路輸出該第三偵測結果及該第三旗標。
- 如申請專利範圍第2項所述之浮點數運算電路,其中該選擇電路為一第一選擇電路,該浮點數運算電路更包含: 一第一偵測電路,於該第一階段接收該第一運算元及該第二運算元,並於該第一階段根據該第一運算元及該第二運算元產生一第一偵測結果及一第一旗標,其中該第一偵測結果及該第一旗標係對應該乘法運算; 一第二偵測電路,於該第一階段接收該第一運算元、該第二運算元及該第三運算元,並於該第一階段根據該第一運算元、該第二運算元及該第三運算元產生一第二偵測結果及一第二旗標,其中該第二偵測結果及該第二旗標係對應該融合乘積累加法運算; 一第二選擇電路,耦接該第一偵測電路及該第二偵測電路,接收該第一偵測結果、該第一旗標、該第二偵測結果及該第二旗標; 一第三偵測電路,耦接該第一偵測電路及該第二偵測電路,於該第二階段接收該第一偵測結果及該第三運算元,並於該第二階段根據該第一偵測結果及該第三運算元產生一第三偵測結果及一中間旗標;以及 一聯集(union)電路,耦接該第一偵測電路及該第三偵測電路,用來根據該第一旗標及該中間旗標產生一第三旗標,其中該第三旗標係該第一旗標及該中間旗標的聯集,且該第三偵測結果及該第三旗標係對應該乘積累加法運算; 其中,該控制電路更耦接該第二選擇電路,當該浮點數運算電路執行該乘法運算時,控制該第二選擇電路輸出該第一偵測結果及該第一旗標,以及當該浮點數運算電路執行該融合乘積累加法運算時,控制該第二選擇電路輸出該第二偵測結果及該第二旗標。
- 如申請專利範圍第6項所述之浮點數運算電路,其中該控制電路係控制該第二選擇電路於該第一階段輸出該第一偵測結果及該第一旗標或輸出該第二偵測結果及該第二旗標。
- 一種浮點數運算方法,用於對一第一運算元、一第二運算元及一第三運算元進行一融合乘積累加法運算或一乘積累加法運算,或是對該第一運算元及該第二及運算元進行一乘法運算,該方法包含: 以一乘法電路接收該第一運算元及該第二運算元,並以該乘法電路對該第一運算元及該第二運算元進行該乘法運算以產生一未經修整的積及一經修整的積; 以一選擇電路接收該未經修整的積及該經修整的積,並輸出該未經修整的積及該經修整的積的其中之一; 當該乘積累加法運算被執行時,控制該選擇電路輸出該經修整的積,以及當該融合乘積累加法運算被執行時,控制該選擇電路輸出該未經修整的積;以及 以一加法電路接收該未經修整的積及該經修整的積的其中之一以及該第三運算元,並以該加法電路對該未經修整的積及該經修整的積的其中之一與該第三運算元進行一加法運算,以得到一運算結果,其中該運算結果為該融合乘積累加法運算或該乘積累加法運算的結果; 其中,該加法電路的總輸入位元數大於兩倍的該第一、第二或第三運算元的位元數。
- 如申請專利範圍第8項所述之方法,其中該乘法運算係執行於一第一階段且佔用該時脈之至少一週期,該加法運算係執行於一第二階段且佔用該時脈之至少一週期,該第二階段位於該第一階段之後,且該選擇電路為一第一選擇電路,該方法更包含: 於該第一階段根據該第一運算元及該第二運算元產生一第一偵測結果及一第一旗標,其中該第一偵測結果及該第一旗標係對應該乘法運算; 於該第一階段根據該第一運算元、該第二運算元及該第三運算元產生一第二偵測結果及一第二旗標,其中該第二偵測結果及該第二旗標係對應該融合乘積累加法運算; 於該第二階段根據該第一偵測結果及該第三運算元產生一第三偵測結果及一中間旗標; 根據該第一旗標及該中間旗標產生一第三旗標,其中該第三旗標係該第一旗標及該中間旗標的聯集,且該第三偵測結果及該第三旗標係對應該乘積累加法運算; 以一第二選擇電路接收該第二偵測結果、該第二旗標、該第三偵測結果及該第三旗標; 當該浮點數運算方法執行該融合乘積累加法運算時,控制該第二選擇電路輸出該第二偵測結果及該第二旗標;以及 當該浮點數運算方法執行該乘積累加法運算時,控制該第二選擇電路輸出該第三偵測結果及該第三旗標。
- 如申請專利範圍第8項所述之方法,其中該乘法運算係執行於一第一階段且佔用該時脈之至少一週期,該加法運算係執行於一第二階段且佔用該時脈之至少一週期,該第二階段位於該第一階段之後,且該選擇電路為一第一選擇電路,該方法更包含: 於該第一階段根據該第一運算元及該第二運算元產生一第一偵測結果及一第一旗標,其中該第一偵測結果及該第一旗標係對應該乘法運算; 於該第一階段根據該第一運算元、該第二運算元及該第三運算元產生一第二偵測結果及一第二旗標,其中該第二偵測結果及該第二旗標係對應該融合乘積累加法運算; 以一第二選擇電路接收該第一偵測結果、該第一旗標、該第二偵測結果及該第二旗標; 於該第二階段根據該第一偵測結果及該第三運算元產生一第三偵測結果及一中間旗標; 根據該第一旗標及該中間旗標產生一第三旗標,其中該第三旗標係該第一旗標及該中間旗標的聯集,且該第三偵測結果及該第三旗標係對應該乘積累加法運算; 當該浮點數運算方法執行該乘法運算時,控制該第二選擇電路輸出該第一偵測結果及該第一旗標;以及 當該浮點數運算方法執行該融合乘積累加法運算時,控制該第二選擇電路輸出該第二偵測結果及該第二旗標。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106138354A TWI638313B (zh) | 2017-11-07 | 2017-11-07 | 浮點數運算電路及方法 |
US16/167,603 US10761807B2 (en) | 2017-11-07 | 2018-10-23 | Floating-point number operation circuit and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106138354A TWI638313B (zh) | 2017-11-07 | 2017-11-07 | 浮點數運算電路及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI638313B TWI638313B (zh) | 2018-10-11 |
TW201918875A true TW201918875A (zh) | 2019-05-16 |
Family
ID=64797574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106138354A TWI638313B (zh) | 2017-11-07 | 2017-11-07 | 浮點數運算電路及方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10761807B2 (zh) |
TW (1) | TWI638313B (zh) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4841467A (en) | 1987-10-05 | 1989-06-20 | General Electric Company | Architecture to implement floating point multiply/accumulate operations |
EP0645699A1 (en) | 1993-09-29 | 1995-03-29 | International Business Machines Corporation | Fast multiply-add instruction sequence in a pipeline floating-point processor |
US6480872B1 (en) * | 1999-01-21 | 2002-11-12 | Sandcraft, Inc. | Floating-point and integer multiply-add and multiply-accumulate |
US6401108B1 (en) * | 1999-03-31 | 2002-06-04 | International Business Machines Corp. | Floating point compare apparatus and methods therefor |
US20030055859A1 (en) | 2001-05-04 | 2003-03-20 | Southern Methodist University | Fast IEEE floating-point adder |
US7058830B2 (en) * | 2003-03-19 | 2006-06-06 | International Business Machines Corporation | Power saving in a floating point unit using a multiplier and aligner bypass |
US7571269B2 (en) * | 2005-08-25 | 2009-08-04 | Silicon Image, Inc. | Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices |
US8046399B1 (en) * | 2008-01-25 | 2011-10-25 | Oracle America, Inc. | Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module |
US8990282B2 (en) * | 2009-09-21 | 2015-03-24 | Arm Limited | Apparatus and method for performing fused multiply add floating point operation |
US8924454B2 (en) * | 2012-01-25 | 2014-12-30 | Arm Finance Overseas Limited | Merged floating point operation using a modebit |
US9348795B1 (en) * | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9507565B1 (en) * | 2014-02-14 | 2016-11-29 | Altera Corporation | Programmable device implementing fixed and floating point functionality in a mixed architecture |
US9823897B2 (en) | 2015-09-25 | 2017-11-21 | Arm Limited | Apparatus and method for floating-point multiplication |
US10310818B2 (en) * | 2017-07-19 | 2019-06-04 | Arm Limited | Floating point chained multiply accumulate |
-
2017
- 2017-11-07 TW TW106138354A patent/TWI638313B/zh active
-
2018
- 2018-10-23 US US16/167,603 patent/US10761807B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20190138274A1 (en) | 2019-05-09 |
US10761807B2 (en) | 2020-09-01 |
TWI638313B (zh) | 2018-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6001276B2 (ja) | 浮動小数点加算を実行するための装置および方法 | |
US7236995B2 (en) | Data processing apparatus and method for converting a number between fixed-point and floating-point representations | |
US9696964B2 (en) | Multiply adder | |
JP5640081B2 (ja) | 飽和を伴う整数乗算および乗算加算演算 | |
TW201030607A (en) | Instruction and logic for performing range detection | |
KR100911786B1 (ko) | 다목적 승산-가산 기능 유닛 | |
US7840622B2 (en) | Method and floating point unit to convert a hexadecimal floating point number to a binary floating point number | |
Boersma et al. | The POWER7 binary floating-point unit | |
US10331407B2 (en) | Tiny detection in a floating-point unit | |
JP2010238011A (ja) | ベクトル乗算処理装置および方法ならびにプログラム | |
TWI638313B (zh) | 浮點數運算電路及方法 | |
US10929101B2 (en) | Processor with efficient arithmetic units | |
WO2019023910A1 (zh) | 数据处理方法和设备 | |
TWI653577B (zh) | 整合算術及邏輯處理的裝置 | |
CN109783055B (zh) | 浮点数运算电路及方法 | |
JPH10187416A (ja) | 浮動小数点演算装置 | |
US9280316B2 (en) | Fast normalization in a mixed precision floating-point unit | |
TWI624802B (zh) | 全精度及部分精度數值的計算方法及裝置 | |
TWI423121B (zh) | 判斷系統及方法 | |
JP2575969B2 (ja) | 浮動小数点乗除算装置 | |
JP5376659B2 (ja) | 積和演算装置及び積和演算装置の制御方法 | |
JP2001188670A (ja) | 演算装置 | |
JP2002132494A (ja) | 絶対値累積加減算回路 | |
JPH03257621A (ja) | 浮動小数点乗算回路 |