TWI763079B - 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置 - Google Patents
用於浮點運算的乘法器、方法、積體電路晶片和計算裝置 Download PDFInfo
- Publication number
- TWI763079B TWI763079B TW109135585A TW109135585A TWI763079B TW I763079 B TWI763079 B TW I763079B TW 109135585 A TW109135585 A TW 109135585A TW 109135585 A TW109135585 A TW 109135585A TW I763079 B TWI763079 B TW I763079B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit width
- mantissa
- floating
- multiplier
- processing unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本發明涉及一種用於浮點運算的乘法器、方法、積體電路晶片和計算裝置,其中計算裝置可以包括在組合處理裝置中,該組合處理裝置還可以包括通用互聯介面和其他處理裝置。所述計算裝置與其他處理裝置進行交互,共同完成用戶指定的計算操作。組合處理裝置還可以包括存儲裝置,該存儲裝置分別與計算裝置和其他處理裝置連接,用於計算裝置和其他處理裝置的資料。本發明的方案可以廣泛應用於各類浮點資料運算中。
Description
本揭示係關於浮點運算技術領域,特別是關於一種用於浮點運算的方法、乘法器、積體電路晶片和計算裝置。
在當前的各種信號處理演算法中,如向量之間的內積操作和矩陣的卷積運算中,使用到大量的乘加操作,而這些乘加操作的效率往往取決於乘法器的執行速度。儘管當前的乘法器在執行效率方面獲得了顯著提高,但在處理浮點類型資料方面,其還存在提升的空間。因此,如何獲得一種高效率、低功耗和低成本的乘法器來執行浮點型資料的乘法操作成為習知技術中需要解決的問題。
為了至少部分地解決先前技術中提到的技術問題,本披露的方案提供了一種用於浮點運算的乘法器、方法、包括該乘法器的積體電路晶片和計算裝置。
在一個方面中,本披露提供一種乘法器,用於進行浮點數的乘法運算,其中,所述乘法器包括:尾數處理單元,用於根據所述浮點數的尾數來獲得所述乘法運算後的尾數,所述尾數處理單元包括控制電路,所述控制電路用於在兩個浮點數中的至少一個的尾數位寬大於所述尾數處理單元一次可處理的資料位寬時,多次調用所述尾數處理單元。
在另一方面中,本披露提供一種使用乘法器執行浮點數乘法運算的方法,其中,利用所述乘法器的尾數處理單元根據所述浮點數的尾數來獲得所述乘法運算後的尾數,所述尾數處理單元包括控制電路,所述控制電路用於在兩個浮點數中的至少一個的尾數位寬大於所述尾數處理單元一次可處理的資料位寬時,多次調用所述尾數處理單元。
在又一方面中,本披露提供一種積體電路晶片,包括所述的乘法器。在一個或多個實施例中,本披露的乘法器可以構成一個獨立的積體電路晶片或佈置在一塊積體電路晶片或計算裝置上,實現對多種不同資料格式的浮點數的運算。
利用本披露的乘法器、相應的運算方法、積體電路晶片和計算裝置,可以支援對多種浮點類型的資料進行運算而無需針對不同的浮點類型資料而提供多個單獨的乘法器。由此,本披露的乘法器適用靈活,可以廣泛應用於各類浮點資料運算。另外,在處理位寬較大的輸入資料時,本披露的乘法器支持迴圈複用操作,從而無需佈置更多的處理晶片,由此也減小了積體電路的佈置面積。
本披露的技術方案在整體上提供一種用於浮點數運算的乘法器、方法、積體電路晶片和計算裝置。不同於習知技術的浮點運算乘法器,本披露提供了一種支援多種運算模式的乘法器,從而克服習知乘法器只能支持一種類型浮點運算的缺陷。特別地,本披露利用多種運算模式來指示不同的浮點資料類型,並且在浮點數的乘法計算過程中,基於運算模式之一來執行資料的各類操作,包括例如編碼、壓縮、求和、規格化和捨入操作,從而實現與多種浮點資料類型之一關聯的操作。由此,本披露的乘法器可以支援多模式下的操作,進一步提高浮點運算的靈活性並降低運算的成本。
下面將結合附圖對本披露的技術方案及其多個實施例進行詳細的描述。應當理解的是,將關於浮點運算闡述許多具體細節以便提供對本披露所述多個實施例的透徹理解。然而,本領域具有通常知識者在本披露公開內容的教導下可以在沒有這些具體細節的情況下實踐本披露描述的多個實施例。在其他情況下,本披露公開的內容並沒有詳細描述公知的方法、過程和元件,以避免不必要地模糊本披露描述的實施例。另外,該描述也不應被視為限制本披露的多個實施例的範圍。
第1圖是示出根據本披露實施例的浮點資料格式100的示意圖。如第1圖中所示,可以應用本披露技術方案的浮點數可以包括三個部分,例如符號(或符號位102)、指數(或指數位104)和尾數(或尾數位106),其中對於無符號的浮點數則可以不存在符號或符號位。在一些實施例中,適用於本披露乘法器的浮點數可以包括半精度浮點數、單精確度浮點數、腦浮點數、雙精度浮點數、自訂浮點數中的至少一種。具體來說,在一些實施例中,可以應用本披露技術方案的浮點數格式可以是符合IEEE754標準的浮點格式,例如雙精度浮點數(float64,簡寫為“FP64”)、單精確度浮點數(float32,簡寫“FP32”)或半精度浮點數(float16,簡寫“FP16”)。在另外一些實施例中,浮點數格式也可以是現有的16位腦浮點數(bfloat16,簡寫“BF16”),也可以是自訂的浮點數格式,例如8位腦浮點數(bfloat8,簡寫“BF8”)、無符號半精度浮點數(unsigned float16,簡寫“UFP16”)、無符號16位腦浮點數(unsigned bfloat16,簡寫“UBF16”)。為了便於理解,下面的表1示出上述的部分資料格式,其中的符號位寬、指數位寬和尾數位寬僅用於示例性的說明目的。
表1
| 資料類型 | 符號位寬 | 指數位寬 | 尾數位寬 |
| FP16 | 1 | 5 | 10 |
| BF16 | 1 | 8 | 7 |
| FP32 | 1 | 8 | 23 |
| BF8 | 1 | 5 | 3 |
| UFP16 | 0 | 5(或6) | 11(或10) |
| UBF16 | 0 | 8 | 8 |
對於上面所提到的各種浮點數格式,本披露的乘法器在操作中至少可以支援具有任意上述格式的兩個浮點數之間的相乘操作,其中兩個浮點數可以具有相同或不同的浮點資料格式。例如,兩個浮點數之間的相乘操作可以是FP16*FP16、BF16*BF16、FP32*FP32、FP32*BF16、FP16*BF16、FP32*FP16、BF8*BF16、UBF16*UFP16或UBF16*FP16等兩個浮點數之間的相乘操作。
第2圖是示出根據本披露實施例的乘法器200的示意性結構框圖。如前所述,本披露的乘法器支援各種資料格式的浮點數的相乘操作,而這些資料格式可以通過本披露的運算模式來指示,以使得乘法器工作在多種運算模式之一。
如第2圖中所示,本披露的乘法器總體上可以包括指數處理單元202和尾數處理單元204,其中指數處理單元用於處理浮點數的指數位,而尾數處理單元用於處理浮點數的尾數位。可選地或附加地,在一些實施例中,當乘法器處理的浮點數具有符號位時,乘法器還可以包括符號處理單元206,該符號處理單元可以用於處理包括符號位的浮點數。
在操作中,所述乘法器可以根據運算模式之一對接收、輸入或緩存的第一浮點數和第二浮點數執行浮點運算,該第一浮點數和第二浮點數具有如前所討論的浮點資料格式之一。例如,當乘法器處於第一運算模式中,其可以支援兩個浮點數FP16*FP16的乘法運算,而當乘法器處於第二運算模式中,其可以支援兩個浮點數BF16*BF16的乘法運算。類似地,當乘法器處於第三運算模式中,其可以支援兩個浮點數FP32*FP32的乘法運算,而當乘法器處於第四運算模式中,其可以支援兩個浮點數FP32*BF16的乘法運算。這裡,示例的運算模式和浮點數對應關係如下表2所示。
表2
| 運算模式編號 | 運算浮點數類型 |
| 1 | FP16*FP16 |
| 2 | BF16*BF16 |
| 3 | FP32*FP32 |
| 4 | FP32*BF16 |
在一個實施例中,上述的表2可以存儲於乘法器的一個存儲器中,並且乘法器根據從外部設備接收到的指令來選擇表中的運算模式之一,而該外部設備例如可以是第10圖中示出的外部設備1012。在另一個實施例中,該運算模式的輸入也可以經由如第3圖中所示的模式選擇單元308來自動地實現。例如,當兩個FP16型的浮點數輸入到本披露的乘法器時,模式選擇單元可以根據該兩個浮點數的資料格式而選擇乘法器工作於第一運算模式中。又例如,當一個FP32型浮點數和一個BF16型浮點數輸入到本披露的乘法器時,模式選擇單元可以根據該兩個浮點數的資料格式而選擇乘法器工作於第四運算模式中。
可以看出,本披露的不同運算模式與對應的浮點型資料相關聯。也就是說,本披露的運算模式可以用於指示第一浮點數的資料格式和第二浮點數的資料格式。在另一個實施例中,本披露的運算模式不僅可以指示第一浮點數的資料格式和第二浮點數的資料格式,還可以用於指示乘法運算後的資料格式。結合表2擴展的運算模式在下表3中示出。
表3
| 運算模式編號 | 運算浮點數類型 | 輸出結果類型 |
| 11 | FP16*FP16 | FP16 |
| 12 | BF16 | |
| 13 | FP32 | |
| 21 | BF16*BF16 | FP16 |
| 22 | BF16 | |
| 23 | FP32 | |
| 31 | FP32*FP32 | FP16 |
| 32 | BF16 | |
| 33 | FP32 | |
| 41 | FP32*BF16 | FP16 |
| 42 | BF16 | |
| 43 | FP32 |
與表2中所示的運算模式編號不同,表3中的運算模式擴展一位以用於指示浮點乘法運算後的資料格式。例如,當乘法器工作於運算模式21中,其對輸入的BF16*BF16兩個浮點數執行浮點運算,並且將浮點乘法運算後以FP16的資料格式輸出。
上面以編號形式的運算模式來指示浮點資料格式僅僅是示例性的而非限制性的,根據本披露的教導,也可以想到根據運算模式建立索引以確定乘數和被乘數的格式。例如,運算模式包括兩個索引,第一個索引用於指示第一浮點數的類型,第二個索引用於指示第二浮點數的類型,例如運算模式13中的第一索引“1”指示第一浮點數(或稱被乘數)為第一浮點格式,即FP16,而第二索引“3”指示第二浮點數(或稱乘數)為第二浮點格式,即FP32。進一步,也可以對運算模式增加第三索引,該第三索引指示輸出結果的資料格式,例如對於運算模式131中的第三索引“1”,其可以指示輸出結果的資料格式是第一浮點格式,即FP16。當運算模式數目增加時,可以根據需要增加相應的索引或索引的層級,以便於對運算模式和資料格式之間關係的確立。
另外,儘管這裡示例性地以數字編號來指代運算模式,在其他的例子中,也可以根據應用需要以其他的符號或編碼來對運算模式進行指代,例如通過字母、符號或數字及其結合等等,並且通過這樣的字母、數字、符號或其組合的表達來指代運算模式並標識出第一浮點數、第二浮點數和輸出結果的資料格式。另外,當這些表達以指令形式形成時,該指令可以包括三個域或欄位,第一域用於指示第一浮點數的資料格式,第二域用於指示第二浮點數的資料格式,而第三域用於指示輸出結果的資料格式。當然,這些域也可以被合併於一個域,或增加新的域以用於指示更多的與浮點資料格式相關的內容。可以看出,本披露的運算模式不僅可以與輸入的浮點數資料格式相關聯,也可以用於規格化輸出結果,以獲得期望資料格式的乘積結果。
第3圖是示出根據本披露實施例的乘法器300的更多細節結構框圖。從第3圖所示內容可以看出,其不僅包括第2圖中所示出的指數處理單元202、尾數處理單元204和可選的符號處理單元206,還示出這些單元可以包括的內部元件以及與這些單元操作相關的單元,下面結合第3圖來具體描述這些單元的示例性操作。
為了執行浮點數的乘法運算,指數處理單元可以用於根據前述的運算模式、第一浮點數的指數和第二浮點數的指數獲得乘法運算後的指數。在一個實施例中,該指數處理單元可以通過加減法電路來實現。例如,此處的指數處理單元可以用於將第一浮點數的指數、第二浮點數的指數和各自對應的輸入浮點資料格式的偏移值相加,並且接著減去輸出浮點資料格式的偏移值,以獲得第一浮點數和第二浮點數的乘法運算後的指數。
進一步,乘法器的尾數處理單元可以用於根據前述的運算模式、第一浮點數和所述第二浮點數來獲得乘法運算後的尾數。在一個實施例中,尾數處理單元可以包括部分積運算單元312和部分積求和單元314,其中所述部分積運算單元用於根據第一浮點數的尾數和第二浮點數的尾數獲得中間結果。在一些實施例中,該中間結果可以是第一浮點數和第二浮點數在相乘操作過程中所獲得的多個部分積(如第5圖和第6圖中所示意性示出的)。所述部分積求和單元用於將所述中間結果進行加和運算以獲得加和結果,並將所述加和結果作為所述乘法運算後的尾數。
為了獲得中間結果,在一個實施例中,本披露利用布斯(“Booth”)編碼電路對第二浮點數(如充當浮點運算中的乘數)的尾數的高低位補0(其中對高位補0是將尾數作為無符號數轉為有符號數),以便獲得所述中間結果。需要理解的是,根據編碼方法的不同,也可以對第一浮點數(如充當浮點運算中的被乘數)的尾數進行編碼(如高低位補0),或者對二者都進行編碼,以獲得多個部分積。關於部分積的更多描述,稍後將結合附圖來說明。
在另一個實施例中,所述部分積求和單元可以包括加法器,其用於對所述中間結果進行加和,以獲得所述加和結果。在又一個實施例中,部分積求和單元包括華萊士樹和加法器,其中所述華萊士樹用於對所述中間結果進行加和,以獲得第二中間結果,所述加法器用於對所述第二中間結果進行加和,以獲得所述加和結果。在這些實施例中,加法器可以包括全加器、串列加法器和超前進位加法器中的至少一種。
在一個實施例中,本披露的乘法器還包括規則化單元318和捨入單元320。該規則化單元可以用於對乘法運算後的尾數和指數進行浮點數規則化處理,以獲得規則化指數結果和規則化尾數結果,並且將所述規則化指數結果和所述規則化尾數結果作為所述乘法運算後的指數和乘法運算後的尾數。例如,根據運算模式所指示的資料格式,規則化單元可以調整指數和尾數的位寬,以使其符合前述指示的資料格式的要求。另外,規則化單元還可以對指數或尾數做其他方面的調整。例如,在一些應用場景中,當尾數的值不為0時,尾數位的最高有效位應為1;否則,可以修改指數位並同時對尾數位進行移位,使其變為規格化數的形式。在另一個實施例中,該規則化單元還可以根據乘法運算後的尾數對所述乘法運算後的指數進行調整。例如,當乘法運算後的尾數的最高位為1時,可以將乘法運算後所獲得的指數加1。與之相應,捨入單元可以用於根據捨入模式對所述規則化尾數結果執行捨入操作,並將執行了捨入操作後的尾數作為所述乘法運算後的尾數。根據不同的應用場景,該捨入單元可以執行例如包括向下捨入、向上捨入、向最近的有效數捨入等的捨入操作。在一些應用場景中,捨入單元也可以對尾數右移過程中移出的1進行捨入。
除了指數處理單元和尾數處理單元,本披露的乘法器還可選地包括符號處理單元,當輸入的浮點數是帶有符號位的浮點數時,該符號處理單元可以用於根據第一浮點數的符號和第二浮點數的符號獲得乘法運算後的符號。例如,在一個實施例中,該符號處理單元可以包括異或邏輯電路322,所述異或邏輯電路用於根據所述第一浮點數的符號和所述第二浮點數的符號進行異或運算,獲得所述乘法運算後的符號。在另一個實施例中,該符號處理單元也可以通過真值表或邏輯判斷來實現。
另外,為了使輸入或接收到的第一和第二浮點數符合規定的格式,在一個實施例中,本披露的乘法器還可以包括規格化處理單元324,用於當所述第一浮點數或第二浮點數為非規格化的非零浮點數時,根據所述運算模式,對所述第一浮點數或第二浮點數進行規格化處理,以獲得對應的指數和尾數。例如,當選擇的運算模式是表2中所示出的第2種運算模式,而輸入的第一和第二浮點數是FP16型資料,則可以利用規格化處理單元將FP16型資料規格化為BF16型資料,以便乘法器以第2種運算模式進行操作。在一個或多個實施例中,規格化處理單元還可以用於對存在隱式的1的規格化浮點數和不存在隱式的1的非規格化浮點數的尾數進行預處理(例如尾數的擴充),以便於後續的尾數處理單元的操作。基於上文的描述,可以理解的是這裡的規格化處理單元324和前述的規則化單元318在一些實施例中也可以執行相同或相類似的操作,不同的是規格化處理單元324針對於輸入的浮點資料進行規格化處理而規則化單元318針對於將要輸出的尾數和指數進行規則化處理。
以上結合第3圖對本披露的乘法器及其多個實施例進行了描述。基於上面的描述,本領域具有通常知識者可以理解本披露的方案通過乘法器的執行來獲得乘法運算後的結果(包括指數、尾數和可選的符號)。根據應用場景的不同,例如在不需要前述的規則化處理和捨入處理時,通過尾數處理單元和指數處理單元所獲得的結果即可以視為最終的運算結果。進一步,對於需要前述的規則化處理和捨入處理時,則經過該規則化處理和捨入處理後所獲得的指數和尾數可以視為最終的運算結果,或最終的運算結果的一部分(當考慮最終的符號時)。進一步,本披露的方案通過多種運算模式來使得乘法器支援不同類型或資料格式的浮點數的運算,從而可以實現乘法器的複用,由此節省了晶片設計的開銷並節約了計算成本。另外,通過多次調用機制,本披露的乘法器也支援高位寬的浮點數的計算。鑒於在浮點數乘法操作中,尾數(或稱尾數位或尾數部分)的相乘操作對於整個浮點運算的性能至關重要,下面將結合第4圖來描述本披露的尾數操作。
第4圖是示出根據本披露實施例的尾數處理單元操作400的示意性框圖。如第4圖中所示,本披露的尾數處理操作可以主要涉及兩個單元,即前述結合如第3圖所討論的部分積運算單元和部分積求和單元。從操作時序上來看,該尾數處理操作大體可以分為第一階段和第二階段,在第一階段中該尾數處理操作將獲得中間結果,而在第二階段中該尾數處理操作將獲得從加法器408輸出的尾數結果。
在示例性的具體操作中,由乘法器接收到的第一浮點數和第二浮點數可以被劃分成多個部分,即前述的符號(可選的)、指數和尾數。可選地,在經過規格化處理後,兩個浮點數的尾數部分將作為輸入進入到尾數處理單元(如第2圖或第3圖中的尾數處理單元),並且具體地進入到部分積運算單元。如第4圖中所示,本披露利用布斯編碼電路402對第二浮點數(即浮點運算中的乘數)的尾數的高低位補0,並進行布斯編碼處理,從而在部分積產生電路404中獲得所述中間結果。當然,這裡的第一浮點數和第二浮點數僅僅用於說明性而非限制性的目的,因此在一些應用場景中,第一浮點數可以是乘數而第二浮點數可以是被乘數。相應地,在一些編碼處理中,也可以對充當被乘數的浮點數執行編碼操作。
為了更好的理解本披露的技術方案,下面對布斯編碼進行簡要地介紹。一般地,當兩個二進位數字進行相乘操作時,通過乘法操作會產生大量的稱之為部分積的中間結果,然後在對這些部分積進行累加操作進而得到兩個二進位數字相乘的最終結果。其中部分積數量越多,陣列乘法器的面積和功耗就會越大,執行速度就會越慢,其實現電路也就越困難。而布斯編碼的目的就是為了有效地減少部分積的求和項的數量,從而減小電路面積。其演算法在於首先對輸入的乘數進行相應規則的編碼,在一個實施例中,編碼規則例如可以是下表4所示的規則:
表4
| 待編碼資料 | 編碼信號 | ||
| y2i+1 | y2i | y2i-1 | PPi |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | X |
| 0 | 1 | 0 | X |
| 0 | 1 | 1 | 2X |
| 1 | 0 | 0 | -2X |
| 1 | 0 | 1 | - X |
| 1 | 1 | 0 | - X |
| 1 | 1 | 1 | -0(=0) |
其中表4中的y2i+1
,y2i
和y2i-1
可以表示每一組待編碼子資料(即乘數)對應的數值,X可以表示第一浮點數(即被乘數)中的尾數。對每一組對應的待編碼資料進行布斯編碼處理後,得到對應的編碼信號PPi(i=0,1,2,...,n)。如表4中所示意性示出的,布斯編碼後得到的編碼信號可以包括五類,分別為-2X、2X、-X、X和0。示例性地,基於上述的編碼規則,若接收到的被乘數為8位資料“”,則可以獲得下述的部分積:
應當理解的是上面結合表4對獲得部分積的過程的描述僅僅是示例性的而非限制性的,本領域具有通常知識者在本披露的教導下,可以對表4中的規則進行改變,以獲得不同於表4所示出的部分積。例如,在乘數位中存在連續多位(例如3位或3位以上)的特定數時,得到的部分積可以是被乘數的補數,或者例如在對部分積進行加和之後再執行上述3)和4)項中的“加1”操作。
根據上述介紹性描述可以理解,通過對第二浮點數的尾數利用布斯編碼電路進行編碼,並且利用第一浮點數的尾數,可以從部分積產生電路產生多個部分積作為中間結果,並且將中間結果輸送入到部分積求和單元中的華萊士樹(“Wallace Tree”)壓縮器406。應當理解的是,此處利用布斯編碼獲得部分積僅是本披露得到部分積的一種優選方式,而本領域具有通常知識者也可以通過其他的方式來獲得該部分積。例如,還可以通過移位操作來獲得,即根據乘數的位值為1還是0來選擇移位加被乘數還是加0而獲得相應的部分積。類似地,利用華萊士樹壓縮器以實現部分積的加法操作也僅僅是示例性的而非限制性的,本領域具有通常知識者也可以想到利用其他類型的加法器來實現這樣的部分積相加操作。該加法器例如可以是一個或多個全加器、半加器或二者的各種組合形式。
關於華萊士樹壓縮器(或簡稱為華萊士樹),其主要用於對上述的中間結果(即多個部分積)進行求和,以減少部分積的累加次數(即,壓縮)。通常,華萊士樹壓縮器可以採用進位保存CAS(carry-save)架構和Wallace樹算法,其利用華萊士樹陣列的計算速度比傳統進位傳遞的加法快得多。
具體地,華萊士樹壓縮器能平行計算各行部分積之和,例如可以將N個部分積的累加次數從N-1次減少到Log2
N次,從而提高了乘法器的速度,對資源的有效利用具有重要意義。根據不同的應用需要,可以將華萊士樹壓縮器設計成多種類型,例如7-2華萊士樹、4-2華萊士樹以及3-2華萊士樹等。在一個或多個實施例中,本披露使用7-2華萊士樹作為實現本披露的各種浮點運算的示例,稍後將結合第5圖和第6圖對其進行詳細的描述。
在一些實施例中,本披露所公開的華萊士樹壓縮操作可以佈置為具有M個輸入,N個輸出,其數目可以不小於K,其中N為預設的小於M的正整數,K為不小於中間結果的最大位寬的正整數。例如,M可以是7,N可以是2,即下文將詳細描述的7-2華萊士樹。當中間結果的最大位寬是48時,K可以取正整數48,也就是說華萊士樹的數目可以是48個。
在一些實施例中,根據運算模式,可以選用一組或多組所述華萊士樹對所述中間結果進行加和,其中每組有X個華萊士樹,X為所述中間結果的位數。進一步,各組內的華萊士樹之間可以存在依次進位的關係,而各組間並不存在進位的關係。在示例性的連接中,華萊士樹壓縮器可以通過進位進行連接,例如來自于低位華萊士樹壓縮器的進位輸出(如第6圖中Cin)至高位華萊士樹,而高位華萊士樹壓縮器的進位輸出(Cout)又可以成為更高位華萊士樹壓縮器接收來自低位華萊士樹壓縮器的進位輸入。另外,當從多個華萊士樹壓縮器中選擇一個或多個華萊士時,可以進行任意的選擇,例如既可以按0、1、2和3編號的順序來選擇,也可以按0、2、4和6編號的順序來連接,只要選擇的華萊士樹壓縮器是按上述的進位關係來選擇即可。
下面結合一個說明性的示例來介紹上文的華萊士樹及其操作。假設第一浮點數和第二浮點數的是16位資料(例如FP16*FP16),乘法器支援的資料位寬是32位 (由此支援兩組16位數的並行相乘操作),華萊士樹是7個(即上述M的一個示例值)輸入和2個(即上述N的一個示例值)輸出的7-2華萊士樹壓縮器。在該示例場景下,可以採用48個(即上述K的一個示例值)華萊士樹來並行完成兩組資料的乘法運算。
在上述的48個華萊士樹中,第0~23個華萊士樹(即第一組華萊士樹中的24個華萊士樹)可以完成第一組乘法的部分積加和運算,並且該組內的各華萊士樹可以依次通過進位連接。進一步,第24~47個華萊士樹(即第二組華萊士樹中的24個華萊士樹)可以完成第二組乘法的部分積加和運算,其中該組內的各華萊士樹依次通過進位連接。另外,第一組中的第23個華萊士樹和第二組中的第24個華萊士樹之間不存在進位關係,即不同組的華萊士樹之間不存在進位關係。
返回到第4圖,在通過華萊士樹壓縮器對部分積進行加和壓縮後,將經過壓縮後的部分積通過加法器進行求和,以獲得尾數乘法操作的結果。關於加法器,在本披露的一個或多個實施例中,其可以包括全加器、串列加法器和超前進位加法器中的一種,用於對華萊士樹壓縮器進行加和所得到的最後兩行部分積進行求和操作,以獲得尾數乘法操作的結果。
可以理解,通過第4圖所示出的尾數乘法操作,特別是示例性地使用布斯編碼和華萊士樹,可以有效地獲得尾數乘法操作的結果。具體地,布斯編碼處理能有效減少部分積求和項的數目,從而減小電路面積,而華萊士壓縮樹能平行計算各行部分積之和,從而提高了乘法器的速度。
下面將結合第5圖和第6圖對部分積和7-2華萊士樹的示例操作過程作詳細的描述。可以理解的是這裡的描述僅僅是示例性的而非限制性的,目的僅在於對本披露方案的更好理解。
第5圖示出在經過前述結合第2圖-第4圖所描述的尾數處理單元中的部分積產生電路後所獲得的部分積500,如圖中的兩個虛線之間四行白色圓點,其中每行白色圓點標識出一個部分積。為了便於後續的華萊士樹壓縮器的執行,可以預先對位數進行擴展。例如,第5圖中的黑點為複製的每個9位部分積的最高位數值,可以看出部分積被擴展對齊至16(8+8)bit(即,被乘數尾數的位寬8bit+乘數尾數的位寬8bit)。在另一個實施例中,例如對於25*13二進位乘法的部分積,其部分積被擴展至38(25+13)bit(即,被乘數尾數的位寬25bit+乘數尾數的位寬13bit)。
第6圖是示出根據本披露實施例的華萊士樹壓縮器的操作流程和示意框圖600。
如第6圖中所示,在對兩個浮點數的尾數執行相乘操作後,例如如前所述,通過將乘數進行布斯編碼並且通過被乘數可以獲得第6圖中所示出的7個部分積。由於布斯編碼算法的使用,減小了產生的部分積的數目。為了便於理解,圖中在部分積部分用虛線框標識出一個包括7個元素的華萊士樹,並且進一步以箭頭示出其從7個元素壓縮至2個元素的過程。在一個實施例中,該壓縮過程(或稱加和過程)可以借助於全加器來實現,即輸入三個元素輸出兩個元素(即一個和“sum”以及向高位的進位“carry”)。7-2華萊士樹壓縮器的示意框圖在第6圖的右側示出,可以理解該華萊士樹壓縮器包括7個來自一列部分積的輸入(如第6圖左側虛線框中標識的七個元素)。在操作中,第0列華萊士樹的進位輸入為0,每列華萊士樹的進位輸出Cout作為下一列華萊士樹的進位輸入Cin。
從第6圖左側部分中可以看到,經過四次壓縮後可以將包括7個元素的華萊士樹壓縮為包括2個元素。如前所提到,本披露利用7-2華萊士樹壓縮器將7行的部分積最終壓縮成具有兩行的部分積(即本披露的第二中間結果),並且利用加法器(例如超前進位加法器)來獲得尾數結果。
為了進一步闡述本披露方案的原理,下面將示例性地描述本披露的乘法器如何完成FP16*FP16、FP16*FP16、FP32*FP32和FP32*BF16四種運算模式下在第一階段的操作,即直到華萊士樹壓縮器完成中間結果的求和以獲得第二中間結果:
(1)FP16*FP16
在乘法器的該運算模式下,浮點數的尾數位為10bit,考慮IEEE754標準下非規格化非零數,可以擴展1bit位,從而尾數位為11bit。另外,由於尾數位為無符號數,採用布斯編碼算法時可以在高位擴展1bit的0,因此總的尾數位數為12bit。當對作為第二浮點數即乘數進行布斯編碼,並且參照第一浮點數時,則通過部分積產生電路可以在高低部分分別獲得7個部分積,其中第七個部分積為0,每個部分積的位寬為24bit,此時可以通過48個7-2華萊士樹進行壓縮處理,並且第23個到第24個華萊士樹的進位為0。
(2)BF16*BF16
在乘法器的該運算模式下,浮點數的尾數位為7bit,考慮IEEE754標準下非規格化非零數及擴展為有符號數,則尾數可以擴展為9bit。當對作為第二浮點數即乘數進行布斯編碼,並且參照第一浮點數時,則通過部分積產生電路可以在高低部分分別獲得7個有效部分積,其中第6、7個部分積為0,每個部分積位寬為18bit,通過使用第0~17個和第24~41個兩組的7-2華萊士樹進行壓縮處理,其中第23到第24個華萊士樹的進位為0。
(3)FP32*FP32
在乘法器的該運算模式下,浮點數的尾數位可以為23bit,考慮IEEE754標準下非規格化非零數及擴展為有符號數,則尾數可以擴展為25bit。為節省乘法單元的面積,例如乘法器所支援的位寬可以被設計得較小,並且使得本披露的乘法器在該運算模式下可以被調用兩次以完成一次運算。為此,每次尾數位進行的乘法為25bit*13bit,即將第一浮點數ina擴展1比特0成為25bit的有符號數,將第二浮點數inb的24bit尾數位分高低兩部分12bit分別擴展1比特0得到兩個13bit的乘數,表示為inb_high13和inb_low13高低兩部分。具體操作中,第一次調用本披露的乘法器計算ina*inb_low13,第二次調用乘法器計算ina*inb_high13。在每一次的計算中,通過布斯編碼生成7個有效部分積,每個部分積的位寬為38bit,通過第0~37個的7-2華萊士樹進行壓縮。
(4)FP32*BF16
該乘法器的該運算模式下,第一浮點數ina的尾數位為23bit,第二浮點數的inb的尾數位為7bit,考慮IEEE754標準下非規格化非零數和擴展為有符號數,則尾數可以分別擴展為25bit和9bit,進行25bit×9bit的乘法,獲得7個有效部分積,其中第6、7個部分積為0,每個部分積的位寬為34bit,通過第0~33個華萊士樹進行壓縮。
以上通過具體示例描述了本披露的乘法器如何在四種運算模式下完成第一階段的操作,其中優選的使用了布斯編碼算法和7-2華萊士樹。基於上述的描述,本領域具有通常知識者可以理解本披露使用7個部分積,使得可以在不同的運算模式中複用7-2華萊士樹。
下面將更具體地描述本公開的乘法器(尾數處理單元和指數處理單元)被多次調用的情況。
根據本公開的另一方面,如第3圖所示,尾數處理單元可以包括控制電路316,並且該控制電路316可以用於在兩個浮點數中的至少一個的尾數位寬大於所述尾數處理單元一次可處理的資料位寬時,多次調用所述尾數處理單元。所述尾數處理單元一次可處理的資料位寬是指尾數處理單元所支援的兩個位寬(例如乘數位寬和被乘數位寬)。因此,可以理解,所述控制電路用於根據所述兩個浮點數中的一個的尾數位寬和所述尾數處理單元所支援的兩個位寬中的一個,或者根據所述兩個浮點數的尾數位寬和所述尾數處理單元所支援的兩個位寬來確定多次調用所述尾數處理單元以獲得所述乘法運算後的尾數。因此,乘法器中的尾數處理單元的這種反復調用避免了佈置大面積的乘法器部件來處理大位寬尾數運算並且避免了佈置小面積的乘法器部件無法處理大位寬尾數運算,從而在適用性更強的同時有利於減小晶片面積。
根據本公開的第一實施例,所述兩個浮點數包括第一浮點數和第二浮點數,所述尾數處理單元支援第一位寬和第二位寬,所述第一浮點數的尾數作為與所述第一位寬對應的第一輸入,所述第二浮點數的尾數作為與所述第二位寬對應的第二輸入,所述第一輸入的位寬小於或等於所述第一位寬,所述控制電路用於當所述第二輸入的位寬大於所述第二位寬時,多次調用所述尾數處理單元來獲得所述乘法運算後的尾數。根據該實施例,已知兩個輸入中的一個的位寬固定小於或等於與其對應的尾數處理單元所支援的一個位寬,由此,只需判斷另一個輸入與對應的尾數處理單元所支援位寬的大小關係,即可確定是否多次調用尾數處理單元。
根據本公開的第二實施例,所述兩個浮點數包括第一浮點數和第二浮點數,所述尾數處理單元支援第一位寬和第二位寬,所述第一浮點數的尾數作為與所述第一位寬對應的第一輸入,所述第二浮點數的尾數作為與所述第二位寬對應的第二輸入,所述控制電路用於當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬小於或等於所述第二位寬時、當所述第二輸入的位寬大於所述第二位寬且所述第一輸入的位寬小於或等於所述第一位寬時或者當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬大於所述第二位寬時,多次調用所述尾數處理單元來獲得所述乘法運算後的尾數。根據該實施例,兩個輸入的位寬與尾數處理單元所支援的兩個位寬的大小關係不確定,需要判斷兩個輸入與各自對應的尾數處理單元所支援位寬的大小關係,來確定是否多次調用尾數處理單元。
根據該第二實施例,當所述第一浮點數的尾數位寬小於所述第二浮點數的尾數位寬並且所述第一位寬大於所述第二位寬時,或者當所述第一浮點數的尾數位寬大於所述第二浮點數的尾數位寬並且所述第一位寬小於所述第二位寬時,所述控制電路選擇所述第一浮點數的尾數作為與所述第二位寬對應的所述第二輸入並且選擇所述第二浮點數的尾數作為與所述第一位寬對應的第一輸入。應當理解,在兩個浮點數的尾數無規則輸入時,可以先將輸入的兩個浮點數的尾數根據大位寬對大位寬、小位寬對小位寬的策略與尾數處理單元支援的兩個位寬進行匹配,以避免本可一次處理完成兩個浮點數的尾數運算,卻進行了多次調用。
進一步地,當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬小於或等於所述第二位寬時,所述控制電路根據所述第一輸入的位寬和所述第一位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。當所述第二輸入的位寬大於所述第二位寬且所述第一輸入的位寬小於或等於所述第一位寬時,所述控制電路根據所述第二輸入的位寬和所述第二位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬大於所述第二位寬時,所述控制電路根據所述第一輸入的位寬和所述第一位寬以及所述第二輸入的位寬和所述第二位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。
在本公開中,關於第一浮點數和第二浮點數的描述只是為了區分兩個浮點數,其中“第一”和“第二”不具有限定作用。同樣地,關於第一位寬和第二位寬的描述只是為了區分尾數處理單元所支援的兩個最大處理位寬,並且關於第一輸入和第二輸入的描述只是為了區分所述尾數處理單元的與所述兩個最大處理位寬對應的兩個輸入,因此其中“第一”和“第二”都不具有限定作用。
值得注意的是,以上實施例描述的輸入乘法器的浮點數是符合運算要求格式以及適用乘法器內部部件和外部部件的浮點數,即經過例如規格化等預處理的浮點數。應當理解,輸入乘法器的浮點數可以是規格化或非規格化的浮點數,結合以上關於規格化單元的描述可知,如果輸入的兩個浮點數中的至少一個浮點數為非規格化的非零浮點數,可以首先通過規格化單元對所述至少一個浮點數進行規格化處理,以獲得規格化後的指數和尾數,然後使用規格化後的尾數作為尾數處理單元的輸入來進行上述的浮點數乘法運算。另外,本公開之前提到的布斯編碼電路進行有符號定點數乘法計算,因此還需要對尾數前面擴展1位0,即將尾數變為有符號正數,然後使用擴展後的有符號尾數作為尾數處理單元的輸入來進行上述的浮點數乘法運算。當然,還可以對浮點數進行其他的預處理,並將預處理後的浮點數的尾數作為尾數處理單元的輸入來進行上述的浮點數乘法運算,例如以上關於規格化單元的描述中提到的為了適用運算模式而對浮點數進行的規格化,本公開的第一實施例和第二實施例同樣適用於如上所述的根據運算模式進行浮點數的運算。
下面將詳細說明根據本公開的上述第二實施例的多次調用尾數處理單元的三個示例。為了更清楚直觀地理解這三個示例,上述第一輸入例如可以是乘數,第二輸入例如可以是被乘數,第一位寬例如可以是尾數處理單元所支援的最大乘數位寬,第二位寬例如可以是尾數處理單元所支援的最大被乘數位寬。
根據本公開的多次調用尾數處理單元的第一示例,結合以上描述的根據運算模式的浮點數乘法運算,以輸入到本公開乘法器的兩個浮點數為非規格化的非零浮點數為例,並結合本公開使用的布斯編碼電路進行有符號定點數乘法運算的情況,首先將兩個浮點數規格化,因此兩個浮點數的尾數擴展1位,另外為了適用於本公開實施例中的布斯編碼電路,再將兩個尾數擴展1位而形成有符號數。在經過這些預處理後,將兩個浮點數的尾數和尾數處理單元的輸入進行匹配。因此,當乘數的位寬大於最大乘數位寬且被乘數的位寬小於或等於最大被乘數時,所述控制電路將該乘數對應的原始尾數僅規格化後形成的尾數作為待截取尾數,並且為了適用於本公開實施例中的布斯編碼電路,對每次截取的部分擴展符號位。為了使得尾數處理單元可以處理該待截取尾數,在每次調用中從該待截取尾數中截取位寬為A-1的部分,其中,A代表尾數處理單元所支援的最大乘數位寬,對每次截取的位寬為A-1的部分在高位補充一位0作為符號形成位寬為A的乘數部分,該乘數部分作為在每次調用中輸入尾數處理單元的一個輸入。另外,所述被乘數(在該實施例中,該被乘數是規格化且擴展符號位的尾數)在每次調用中作為另一個輸入而輸入尾數處理單元。由此,可以使用以下公式來確定尾數處理單元的調用次數:
n=ceil((B+1)/(A-1)),
其中,n代表調用尾數處理單元的次數,B代表未規格化且未擴展符號位的尾數的位寬,B+1代表對尾數規格化後的位寬,B+1也可理解為B+2-1,即乘數的位寬減去符號位的位寬,A代表乘數部分的位寬(尾數處理單元所支援的最大乘數位寬),A-1代表每次調用中從待截取尾數中截取的部分的位寬。
舉例來說,尾數處理單元所支援的最大乘數位寬例如為8bit,最大被乘數位寬例如為32bit,輸入乘法器的兩個浮點數分別是FP32類型和BF16類型的浮點數,因此選擇在FP32*BF16運算模式中進行乘法運算,並且兩個浮點數是非規格化非零數,因此兩個浮點數的尾數分別具有23bit和7bit的位寬,考慮IEEE754標準,則兩個尾數的位寬可以擴展為24bit和8bit。為了適用於本公開實施例中的布斯編碼電路,再將兩個尾數擴展1比特0成為25bit和9bit的有符號數。因此控制電路將位寬為9bit的尾數作為與最大乘數位寬對應的乘數並且將位寬為25bit的尾數作為與最大被乘數位寬對應的被乘數,由於僅乘數的位寬(9bit)大於最大乘數位寬(8bit),而被乘數的位寬(25bit)小於最大被乘數位寬(32bit),因此將該乘數所對應的原始尾數僅規格化後形成的尾數作為待截取尾數inb,則被乘數作為輸入尾數處理單元的被乘數ina。根據以上公式,ceil((7+1)/(8-1))=2,因此,需要調用兩次尾數處理單元,並且在每次調用時,在inb中每次截取7bit資料,最後一次調用(第二次調用)時,不足7bit資料,則將剩餘資料全部截取並在前面補0湊齊7bit,並且每次截取的7bit資料擴展1比特0(符號位)成為8bit作為乘數部分inb_m,因此,在每次調用時進行的計算為ina*inb_m,即位寬為25bit的被乘數與位寬為8bit的乘數部分的乘法運算,從而可以計算得出該次調用所獲得的尾數結果。值得注意的是,對待截取尾數的截取可以按照從高位到低位的順序進行,也可以按照從低位到高位的順序進行。值得注意的是,該示例同樣適用於本公開上述第一實施例。
根據本公開的多次調用尾數處理單元的第二示例,結合以上描述的根據運算模式的浮點數乘法運算,以輸入到本公開乘法器的兩個浮點數為非規格化的非零浮點數為例,並結合本公開使用的布斯編碼電路進行有符號定點數乘法運算的情況,首先將兩個浮點數規格化,因此兩個浮點數的尾數擴展1位,另外為了適用於本公開實施例中的布斯編碼電路,再將兩個尾數擴展1位而形成有符號數。在經過這些預處理後,將兩個浮點數的尾數和尾數處理單元的輸入進行匹配。因此,當被乘數的位寬大於最大被乘數位寬且乘數的位寬小於或等於最大乘數位寬時,所述控制電路將該被乘數對應的原始尾數僅規格化後形成的尾數作為待截取尾數,並且為了適用於本公開實施例中的布斯編碼電路,對每次截取的部分擴展符號位。為了使得尾數處理單元可以處理該待截取尾數,在每次調用中從該尾數中截取位寬為C-1的部分,其中,C代表尾數處理單元所支援的最大被乘數位寬,對每次截取的位寬為C-1的部分在高位補充一位0作為符號形成位寬為C的被乘數部分,該被乘數部分作為在每次調用中輸入尾數處理單元的一個輸入。另外,所述乘數(在該實施例中,該乘數是規格化且擴展符號位的尾數)在每次調用中作為另一個輸入而輸入尾數處理單元。由此,可以使用以下公式來確定尾數處理單元的調用次數:
n=ceil((D+1)/(C-1)),
其中,n代表調用尾數處理單元的次數,D代表未規格化且未擴展符號位的尾數的位寬,D+1代表對尾數規格化後的位寬,D+1也可理解為D+2-1,即被乘數的位寬減去符號位的位寬,C代表被乘數部分的位寬(尾數處理單元所支援的最大被乘數位寬),C-1代表每次調用中從待截取尾數中截取的部分的位寬。
舉例來說,尾數處理單元所支援的最大乘數位寬例如為12bit,最大被乘數位寬例如為16bit,輸入乘法器的兩個浮點數分別是FP32類型和BF16類型的浮點數,因此選擇在FP32*BF16運算模式中進行乘法運算,並且兩個浮點數是非規格化非零數,因此兩個浮點數的尾數分別具有23bit和7bit的位寬,考慮IEEE754標準,則兩個尾數的位寬可以擴展為24bit和8bit。為了適用於本公開實施例中的布斯編碼電路,再將兩個尾數擴展1比特0成為25bit和9bit的有符號數。因此控制電路將位寬為9bit的尾數作為與最大乘數位寬對應的乘數並且將位寬為25bit的尾數作為與最大被乘數位寬對應的被乘數,由於僅被乘數的位寬(25bit)大於尾數處理單元所支援的最大被乘數位寬(16bit),而乘數的位寬(9bit)小於最大乘數位寬(12bit),因此將該被乘數所對應的原始尾數僅規格化後形成的尾數作為待截取尾數ina,則乘數作為輸入尾數處理單元的乘數inb。根據以上公式,ceil((23+1)/(16-1))=2,因此,需要調用兩次尾數處理單元,並且在每次調用時,在ina中每次截取15bit資料,最後一次調用(第二次調用)時,不足15bit數據則在前面補0湊齊15bit,並且每次截取的15bit資料擴展1比特0(符號位)成為16bit作為被乘數部分ina_m,因此,在每次調用時進行的計算為ina_m*inb,即位寬為16bit的被乘數部分與位寬為9bit的乘數的乘法運算,從而可以計算得出該次調用所獲得的尾數結果。值得注意的是,對待截取尾數的截取可以按照從高位到低位的順序進行,也可以按照從低位到高位的順序進行。值得注意的是,該示例同樣適用於本公開上述第一實施例。
根據本公開的多次調用尾數處理單元的第三示例,結合以上描述的根據運算模式的浮點數乘法運算,以輸入到本公開乘法器的兩個浮點數為非規格化的非零浮點數為例,並結合本公開使用的布斯編碼電路進行有符號定點數乘法運算的情況,首先將兩個浮點數規格化,因此兩個浮點數的尾數擴展1位,另外為了適用於本公開實施例中的布斯編碼電路,再將兩個尾數擴展1位而形成有符號數。在經過這些預處理後,將兩個浮點數的尾數和尾數處理單元的輸入進行匹配。因此,當所述乘數的位寬大於所述最大乘數位寬且所述被乘數(在該實施例中,該被乘數是規格化且擴展符號位的尾數)的位寬大於所述最大被乘數位寬時,所述控制電路將該乘數對應的原始尾數僅規格化後形成的尾數和該被乘數對應的原始尾數僅規格化後形成的尾數作為待截取尾數,並且為了適用於本公開實施例中的布斯編碼電路,對每次截取的部分擴展符號位。為了使得尾數處理單元可以處理這兩個待截取尾數,在每次調用中分別從與乘數對應的待截取尾數中截取位寬為A-1的部分並且從與被乘數對應的待截取尾數中截取位寬為C-1的部分,其中,A代表尾數處理單元所支援的最大乘數位寬,C代表尾數處理單元所支援的最大被乘數位寬,對每次截取的位寬為A-1的部分在高位補充一位0作為符號形成位寬為A的乘數部分,該乘數部分作為在每次調用中輸入尾數處理單元的一個輸入,並且對每次截取的位寬為C-1的部分在高位補充一位0作為符號形成位寬為C的被乘數部分,該被乘數部分作為在每次調用中輸入尾數處理單元的另一個輸入。由此,可以使用以下公式來確定尾數處理單元的調用次數:
n=ceil((B+1)/(A-1))* ceil((D+1)/(C-1))
其中,n代表調用尾數處理單元的次數,B代表未規格化且未擴展符號位的尾數的位寬,B+1代表對尾數規格化後的位寬,B+1也可理解為B+2-1,即乘數的位寬減去符號位的位寬,A代表乘數部分的位寬(尾數處理單元所支援的最大乘數位寬),A-1代表每次調用中從與乘數對應的待截取尾數中截取的部分的位寬,D代表未規格化且未擴展符號位的尾數的位寬,D+1代表對尾數規格化後的位寬,D+1也可理解為D+2-1,即被乘數的位寬減去符號位的位寬,C代表被乘數部分的位寬(尾數處理單元所支援的最大被乘數位寬),C-1代表每次調用中從待截取尾數中截取的部分的位寬。
舉例來說,尾數處理單元所支援的最大乘數位寬例如為8bit,最大被乘數位寬例如為16bit,輸入乘法器的兩個浮點數都是FP32類型的浮點數,因此選擇在FP32*FP32運算模式中進行乘法運算,並且兩個浮點數是非規格化非零數,因此兩個浮點數的尾數位寬都為23bit,考慮IEEE754標準,則兩個尾數的位寬可以擴展為24bit。為了適用於本公開實施例中的布斯編碼電路,再將兩個尾數擴展1比特0成為25bit的有符號數。因此控制電路將兩個浮點數的尾數分別選擇作為與最大乘數位寬對應的乘數和與最大被乘數位寬對應的被乘數(由於兩個浮點數的尾數在擴展後位寬相同,因此任選一個作為乘數,另一個作為被乘數),由於所述乘數的位寬(25bit)大於所述最大乘數位寬(8bit)且所述被乘數的位寬(25bit)大於所述最大被乘數位寬(16bit),因此將乘數所對應的原始尾數規格化後形成的尾數作為待截取尾數inb並且將被乘數所對應的原始尾數規格化後形成的尾數作為待截取尾數ina。根據以上公式,ceil((23+1)/(8-1))* ceil((23+1)/(16-1))=8,因此,需要調用八次尾數處理單元。在每次調用時,在inb中每次截取7bit資料,最後一次調用時,不足7bit資料,則將剩餘資料全部截取並在前面補0湊齊7bit,並且每次截取的7bit資料擴展1比特0(符號位)成為8bit作為乘數部分inb_m,由於將inb截取為四個部分,因此可以具有四個乘數部分inb_m1、inb_m2、inb_m3、inb_m4。另外在每次調用時,在ina中每次截取15bit資料,最後一次調用時,不足15bit資料,則將剩餘資料全部截取並在前面補0湊齊15bit,並且每次截取的15bit資料擴展1比特0(符號位)成為16bit作為被乘數部分ina_m,由於將ina截取為兩個部分,因此可以具有兩個被乘數部分ina_m1、ina_m2。因此,例如在八次調用尾數處理單元時可以依次進行以下計算:ina_m1*inb_m1、ina_m1*inb_m2、ina_m1*inb_m3、ina_m1*inb_m4、ina_m2*inb_m1、ina_m2*inb_m2、ina_m2*inb_m3、ina_m2*inb_m4,當然也可以依次進行以下計算:inb_m1*ina_m1、inb_m1*ina_m2、inb_m2*ina_m1、inb_m2*ina_m2、inb_m3*ina_m1、inb_m3*ina_m2、inb_m4*ina_m1、inb_m4*ina_m2。每次調用進行的計算為位寬為16bit的被乘數部分與位寬為8bit的乘數部分的乘法運算,從而可以計算得出該次調用所獲得的尾數結果。值得注意的是,對待截取尾數的截取可以按照從高位到低位的順序進行,也可以按照從低位到高位的順序進行。
以上示例僅僅用於說明性而非限制性的目的,根據這些示例,本領域具有通常知識者可以想到在其它運算模式下多次調用最大支援任意位寬的尾數處理單元所進行的浮點數乘法運算。
針對以上多次調用尾數處理單元,所述尾數處理單元還可以包括移位加法電路,所述移位加法電路用於根據每次調用所述尾數處理單元所獲得的尾數結果來獲得所述乘法運算後的尾數。
進一步,所述移位加法電路包括移位器、中間存儲器和加法器,當所述控制電路根據所述運算模式多次調用所述尾數處理單元時,在第一次調用後,所述移位器將第一次調用獲得的尾數結果進行移位獲得移位後尾數結果並將所述移位後尾數結果存入所述中間存儲器中,從第二次調用開始,所述移位器將當次調用中獲得的尾數結果進行移位獲得當次尾數結果,所述加法器將所述當次尾數結果與存儲在所述中間存儲器中的結果相加並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器,並且在最後一次調用後存儲在所述中間存儲器中的結果作為所述乘法運算後的尾數。
在該實施例中,例如,對待截取尾數的截取按照從高位到低位的順序進行。在每次調用所述尾數處理單元時,所述移位器將當次調用中獲得的尾數結果按照以下公式進行移位:
Y=k+j
其中,Y代表當次調用中獲得的尾數結果所需進行的移位數,k代表在與乘數對應的待截取尾數中在當次調用所使用的截取部分後面的全部資料的位數之和,j代表在與被乘數對應的待截取尾數中在當次調用所使用的截取部分後面的全部資料的位數之和。應當理解,如果僅乘數的位寬大於最大乘數位寬或者僅被乘數的位寬大於最大被乘數位寬,則只需要對與乘數對應的待截取尾數或與被乘數對應的待截取尾數進行截取,而不需要截取的尾數每次調用時使用的是其全部資料,因此後面不存在資料,從而k或j的取值為0,由此可知對於僅乘數的位寬大於最大乘數位寬的情況,以上計算移位數的公式可以寫為:Y=k,對於僅被乘數的位寬大於最大被乘數位寬的情況,以上計算移位數的公式可以寫為:Y= j。
舉例來說,如前所述,在FP32*BF16運算模式中,當僅所述乘數的位寬大於所述最大乘數位寬時,兩次調用尾數處理單元,並且例如對待截取尾數的截取按照從高位到低位的順序進行。具體地,例如兩次調用中的乘數部分分別為inb_m1和inb_m2,在第一次調用後,所述移位器將ina*inb_m1的結果向左移位,由於在第一次調用中截取7bit資料,因此在該次調用所使用的這7bit資料之後的全部資料的位數之和為k=8-7=1bit,根據上述公式可知,Y=1,因此,向左移位的位數為1位,從而獲得移位1位後的結果R1,所述加法器將該R1存入所述中間存儲器中;在第二次調用(最後一次調用)後,所述移位器將ina*inb_m2的結果向左移位,由於在第二次調用中已將最後1位資料截取,因此在該次調用的所使用的1bit資料之後不存在資料,根據上述公式可知,Y=0,因此,向左移位的位數為0位,即不移位,從而獲得結果R2,所述加法器將該R2與存儲在所述中間存儲器中的R1相加,並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器中,由於該第二次調用為最後一次調用,因此在第二次調用後存儲在所述中間存儲器中的結果為所述乘法運算後的尾數。對上述當僅所述被乘數的位寬大於所述最大被乘數位寬時的情況,移位加法電路可以同樣如此工作。
舉例來說,如前所述,在FP32*FP32運算模式中,當所述乘數的位寬大於所述最大乘數位寬且所述被乘數的位寬大於所述最大被乘數位寬時,八次調用尾數處理單元,並且例如對待截取尾數的截取按照從高位到低位的順序進行。具體地,例如八次調用中的乘數部分分別為inb_m1、inb_m2、inb_m3和inb_m4,被乘數部分分別為ina_m1、ina_m2,例如在八次調用尾數處理單元時依次進行以下計算:ina_m1*inb_m1、ina_m1*inb_m2、ina_m1*inb_m3、ina_m1*inb_m4、ina_m2*inb_m1、ina_m2*inb_m2、ina_m2*inb_m3、ina_m2*inb_m4。在第一次調用中,所述移位器將ina_m1*inb_m1的結果向左移位,由於在第一次調用中在與乘數對應的待截取尾數中截取7bit資料,因此在該待截取尾數中在該次調用所使用的7bit資料之後的全部資料的位數之和為k=24-7=17bit,並且在與被乘數對應的待截取尾數中截取15bit資料,因此在該待截取尾數中在該次調用所使用的15bit資料之後的全部資料的位數之和為j=24-15=9bit,根據上述公式可知,Y=17+9=26,因此,向左移位的位數為26位,從而獲得移位26位後的結果S1,所述加法器將該S1存入所述中間存儲器中;在第二次調用後,所述移位器將ina_m1*inb_m2的結果向左移位,由於在第二次調用中在與乘數對應的待截取尾數中截取下一個7bit資料,因此在該待截取尾數中在該次調用所使用的7bit資料之後的全部資料的位數之和為k=24-7-7=10bit,而在與被乘數對應的待截取尾數中截取與上一次調用時同樣的7bit資料(使用與上一次調用同樣的7bit資料),因此在該待截取尾數中在該次調用所使用的7bit資料之後的全部資料的位數之和仍為j=24-15=9bit,根據上述公式可知,Y=10+9=19,因此,向左移位的位數為19位,從而獲得移位19位後的結果S2,所述加法器將該S2與存儲在所述中間存儲器中S1相加,並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器;如此重複調用尾數處理單元直到第四次調用,在第四次調用中,所述移位器將ina_m1*inb_m4的結果向左移位,由於在第四次調用中截取與乘數對應的待截取尾數中的最後3bit資料,因此在該待截取尾數中在該次調用所使用的3bit資料之後不存在資料,從而k=0,而在與被乘數對應的待截取尾數中截取與上一次調用時同樣的7bit資料,因此在該待截取尾數中在該次調用所使用的7bit資料之後的全部資料的位數之和仍為j=24-15=9bit,根據上述公式可知,Y=0+9=9,因此,向左移位的位數為9位,從而獲得移位9位後的結果S4,所述加法器將該S4與存儲在所述中間存儲器中的結果相加,並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器;由於在第五次至第八次調用中,都是截取與被乘數對應的待截取尾數中最後9bit資料,而在該9bit資料之後不再有資料,因此在第五次至第八次調用中,j=0,在第五次調用中,所述移位器將ina_m2*inb_m1的結果向左移位,由於在第五次調用中在與乘數對應的待截取尾數中截取與在第一次調用中同樣的7bit資料,因此k=24-7=17bit,根據上述公式可知,Y=17+0=17,因此,向左移位的位數為17位,從而獲得移位17位後的結果S5,所述加法器將該結果S5與存儲在所述中間存儲器中的結果相加,並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器;如此重複調用尾數處理單元直到第八次調用,在第八次調用中,所述移位器將ina_m2*inb_m4的結果向左移位,由於在第八次調用中截取與乘數對應的待截取尾數中的最後3bit資料,因此在該待截取尾數中在該次調用所使用的3bit資料之後不存在資料,從而k=0,根據上述公式可知,Y=0+0=0,因此,向左移位的位數為0位,即不移位,從獲得不移位的結果S8,所述加法器將該S8與存儲在所述中間存儲器中的結果相加,並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器;由於該第八次調用為最後一次調用,因此在第八次調用後存儲在所述中間存儲器中的結果為所述乘法運算後的尾數。
另一方面,為了進一步減小乘法器的面積,所述指數處理單元包括第二控制電路(圖中未示出),所述第二控制電路用於根據所述兩個浮點數中的一個的指數位寬和所述指數處理單元所支援的兩個位寬中的一個或者根據所述兩個浮點數的指數位寬和所述指數處理單元所支援的兩個位寬來確定多次調用所述指數處理單元以獲得所述乘法運算後的指數。
根據本公開的第三實施例,所述兩個浮點數包括第一浮點數和第二浮點數,所述指數處理單元支援第三位寬和第四位寬,所述第一浮點數的指數作為與所述第三位寬對應的第三輸入,所述第二浮點數的指數作為與所述第四位寬對應的第四輸入,所述第三輸入的位寬小於或等於所述第三位寬,所述第二控制電路用於當所述第四輸入的位寬大於所述第四位寬時,多次調用所述指數處理單元來獲得所述乘法運算後的指數。根據該實施例,已知兩個輸入中的一個的位寬固定小於或等於與其對應的指數處理單元所支援的一個位寬,由此,只需判斷另一個輸入與對應的指數處理單元所支援位寬的大小關係,即可確定是否多次調用指數處理單元。
根據本公開的第四實施例,所述兩個浮點數包括第一浮點數和第二浮點數,所述指數處理單元支援第三位寬和第四位寬,所述第一浮點數的指數作為與所述第三位寬對應的第三輸入,所述第二浮點數的指數作為與所述第四位寬對應的第四輸入,所述第二控制電路用於當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬小於或等於所述第四位寬時、當所述第四輸入的位寬大於所述第四位寬且所述第三輸入的位寬小於或等於所述第三位寬時或者當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬大於所述第四位寬時,多次調用所述指數處理單元來獲得所述乘法運算後的指數。根據該實施例,兩個輸入的位寬與指數處理單元所支援的兩個位寬的大小關係不確定,需要判斷兩個輸入與各自對應的指數處理單元所支援位寬的大小關係,來確定是否多次調用指數處理單元。
根據該第四實施例,當所述第一浮點數的指數位寬小於所述第二浮點數的指數位寬並且所述第三位寬大於所述第四位寬時,或者當所述第一浮點數的指數位寬大於所述第二浮點數的指數位寬並且所述第三位寬小於所述第四位寬時,所述第二控制電路選擇所述第一浮點數的指數作為與所述第四位寬對應的所述第四輸入並且選擇所述第二浮點數的指數作為與所述第三位寬對應的第三輸入。應當理解,在兩個浮點數的指數無規則輸入時,可以先將輸入的兩個浮點數的指數根據大位寬對大位寬、小位寬對小位寬的策略與指數處理單元支援的兩個位寬進行匹配,以避免本可一次處理完成兩個浮點數的指數運算,卻進行了多次調用。
進一步地,當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬小於或等於所述第四位寬時、當所述第四輸入的位寬大於所述第四位寬且所述第三輸入的位寬小於或等於所述第三位寬時或者當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬大於所述第四位寬時,所述第二控制電路用於當所述第三輸入的位寬小於或等於所述第四輸入的位寬且所述第三位寬小於或等於所述第四位寬時,根據所述第四輸入的位寬和所述第三位寬來確定調用所述指數處理單元的次數以及在每次調用中輸入所述指數處理單元的資料。值得注意的是,以上三種情況下,指數處理單元的調用次數以及在每次調用中輸入所述指數處理單元的資料都是根據第三輸入和第四輸入的位寬中的較大者與第三位寬和第四位寬中的較小者來確定。當然,當第三輸入和第四輸入的位寬相同或者第三位寬和第四位寬相同時,可以在相同位寬的兩者中任選其一。
在該實施例中,關於第一浮點數和第二浮點數的描述只是為了區分兩個浮點數,其中“第三”和“第四”不具有限定作用。同樣地,關於第三輸入和第四輸入的描述只是為了區分所述指數處理單元的兩個輸入,關於第三位寬和第四位寬的描述只是為了區分指數處理單元所支援的與所述指數處理單元的兩個輸入對應的兩個最大處理位寬,因此其中“第三”和“第四”都不具有限定作用。
值得注意的是,以上實施例描述的輸入乘法器的浮點數是符合運算要求格式以及適用乘法器內部部件和外部部件的浮點數,即經過例如規格化等預處理的浮點數。應當理解,輸入乘法器的浮點數可以是規格化或非規格化的浮點數,結合以上關於規格化單元的描述可知,如果輸入的兩個浮點數中的至少一個浮點數為非規格化的非零浮點數,可以首先通過規格化單元對所述至少一個浮點數進行規格化處理,以獲得規格化後的指數和尾數,然後使用規格化後的指數作為指數處理單元的輸入來進行上述的浮點數乘法運算。當然,還可以對浮點數進行其他的預處理,並將預處理後的浮點數的指數作為指數處理單元的輸入來進行上述的浮點數乘法運算,例如以上關於規格化單元的描述中提到的為了適用運算模式而對浮點數進行的規格化,本公開的第三實施例和第四實施例同樣適用於如上所述的根據運算模式進行浮點數的運算。
下面將詳細說明多次調用指數處理單元的示例。為了更清楚直觀地理解該示例,上述第三輸入例如可以是加數,第四輸入例如可以是被加數,第三位寬例如可以是指數處理單元所支援的最大加數位寬,第四位寬例如可以是指數處理單元所支援的最大被加數位寬。
根據本公開的多次調用指數處理單元的示例,結合以上描述的根據運算模式的浮點數乘法運算,以輸入到本公開乘法器的兩個浮點數為非規格化的非零浮點數為例,首先將兩個浮點數規格化,因此兩個浮點數的尾數擴展1位。在經過該預處理後,兩個浮點數的指數和指數處理單元的輸入進行匹配。因此,當加數的位寬大於最大加數位寬且被加數的位寬小於或等於最大被加數位寬時、當被加數的位寬大於最大被加數位寬且加數的位寬小於或等於最大加數位寬時或者當加數的位寬大於最大加數位寬且被加數的位寬大於最大被加數位寬時,所述控制電路可以根據以下公式來確定指數處理單元的調用次數:
m= ceil(P/(Q-1)),
其中,m代表調用指數處理單元的次數,P代表被加數的位寬,Q代表最大加數位寬,Q-1代表每次調用中從加數和被加數中截取的部分的位寬。在每次調用中同時對加數和被加數截取位寬為Q-1的部分,使得從加數和被加數中截取的相同位寬且相同數位的部分進行加法運算,若在調用中截取的部分的資料不足Q-1位或無數據,在其前面或全部補0湊齊Q-1位資料。在將從加數和被加數中截取的部分前面擴展一個進位後,形成輸入指數處理單元的加數部分和被加數部分,因此,Q也代表每次調用時輸入指數處理單元的加數部分和被加數部分的位寬。
由此,第二控制電路可在每次調用指數處理單元時,從加數和被加數中按照相同的順序截取Q-1位的部分作為指數處理單元的輸入,通過指數處理單元獲得該次調用的指數結果,並且在調用指數處理單元m次之後獲得最終的指數。值得注意的是,上述相同的順序可以是從高位到低位的順序,也可以從低位到高位的順序。
舉例來說,加數的位寬為6bit,被加數的位寬為9bit,指數處理單元所支援的最大加數位寬和最大被加數位寬都為8bit。因此,調用指數處理單元的次數為ceil(9/(8-1))=2,並且首先將加數前面補0,使得加數的位寬和被加數的位寬相同,然後在每次調用中按照從高位到低位的順序同時對加數和被加數截取位寬為7位的部分,並將這兩個截取的部分分別擴展一位進位位,形成兩個8位的帶進位資料進行相加,在第二次調用(即最後一次調用)時,只能從加數和被加數中截取2位資料(只剩2位資料),因此,在第二次調用時截取的2位資料前補0湊齊7位,並且擴展一位進位位,形成兩個8位的帶進位資料進行相加。
值得注意的是,該示例中的當加數的位寬大於最大加數位寬且被加數的位寬小於或等於最大被加數位寬時和當被加數的位寬大於最大被加數位寬且加數的位寬小於或等於最大加數位寬時對指數處理單元的調用同樣適用於本公開上述第三實施例。
根據實施例,所述指數處理單元還可以包括第二移位加法電路,所述第二移位加法電路用於根據每次調用所述指數處理單元所獲得的指數結果來獲得所述乘法運算後的指數。
進一步,所述第二移位加法電路包括第二移位器、第二中間存儲器和第二加法器,當所述第二控制電路多次調用所述指數處理單元時,在第一次調用後,所述第二移位器將第一次調用獲得的指數結果進行移位並將移位後的指數結果存入所述第二中間存儲器中,從第二次調用指數處理單元開始,所述第二移位器將當次調用中獲得的指數結果進行移位,所述第二加法器將移位後的指數結果與存儲在第二中間存儲器中的數值相加並且將相加後的結果存儲在所述第二中間存儲器中來更新所述第二中間存儲器,並且將在最後一次調用中存儲在所述第二中間存儲器中的數值作為所述乘法運算後的指數。
在每次調用所述指數處理單元時,所述第二移位器將當次調用中獲得的指數結果按照以下方式進行移位:若在調用指數處理單元時按照從高位到低位的順序截取加數和被加數時,對當次調用從加數和被加數中所截取的部分向左移位,移位位數是當次調用中從被加數中截取的部分之後的部分的位數。
舉例來說,結合以上示例,例如加數的位寬為6bit,被加數的位寬為9bit,指數處理單元所支援的最大加數位寬和最大被加數位寬都為8bit,在每次調用中按照從高位到低位的順序同時對加數和被加數截取位寬為7位的部分。具體地,在第一次調用指數處理單元後,所述第二移位器將第一次調用獲得的指數結果向左移2位(因為該次調用中被加數截取的部分之後有2位資料)並將移位後的指數結果存入所述第二中間存儲器中,從第二次調用指數處理單元開始,所述第二移位器將當次調用中獲得的指數結果向左移位,由於該次調用中截取的部分之後不再有資料,因此向左移0位,即不移位,所述第二加法器將移0位後的指數結果與存儲在第二中間存儲器中的數值相加並且將相加後的結果存儲在所述第二中間存儲器中來更新所述第二中間存儲器,由於該第二次調用即為最後一次調用,因此在該第二次調用後存儲在所述第二中間存儲器中的數值即為所述乘法運算後的指數。
根據以上具體描述的本公開乘法器(尾數處理單元和指數處理單元)被多次調用的情況可知,所述控制模組可以包括多個子模組,所述多個子模組可以分別用於執行多次調用中的各種操作,例如確定多次調用尾數處理單元、確定調用次數、確定每次調用中輸入所述尾數處理單元的資料、判斷尾數位寬與尾數處理單元所支援位寬是否匹配、調整尾數輸入等。所述第二控制模組也可以包括多個子模組,同樣地,這些子模組可以分別執行多次調用中的各種操作。
上文結合第4圖-第6圖詳細描述了本披露的乘法器在執行浮點運算時,對第一浮點數和第二浮點數的尾數相乘所執行的操作。當然,第4圖為了注重描述本披露乘法器的尾數處理單元的操作,並沒有繪出其他的單元,例如指數處理單元和符號處理單元,並對其進行描述。下面將結合第7圖對本披露的乘法器進行整體上的描述,對於前文針對尾數處理單元所做的描述,同樣也適用於第7圖所繪的情形。
第7圖是示出根據本披露實施例的乘法器700的整體示意框圖。需要理解的是圖中繪出的各類單元的位置、存在和連接關係僅僅是示例性的而非限制性的,例如其中的一些單元可以集成,而另一些單元也可以分離或依應用場景的不同而被省略或替換。
本披露的乘法器在每種運算模式的操作中按操作流程可以示例性地分為第一階段和第二階段,如圖中的虛線所繪出的。概括來說,在第一階段中:輸出符號位的計算結果,輸出指數位的中間計算結果,輸出尾數位的中間計算結果 (例如包括前述的輸入尾數位定點乘法布斯算法的編碼過程和華萊士樹壓縮過程)。在第二階段中:對指數和尾數進行規則化和捨入操作,以輸出指數的計算結果和輸出尾數的計算結果。
如第7圖中所示,本披露的乘法器可以包括模式選擇單元702和規格化處理單元704,其中模式選擇單元可以根據輸入模式信號 (in_mode)來選擇運算模式。在一個實施例中,該輸入模式信號可以與表2中的運算模式編號相對應。例如,當輸入模式信號指示表2中的運算模式編號“1”時,則可以令乘法器工作於FP16*FP16的運算模式中,而當輸入模式信號指示表2中的運算模式編號“3”時,則可以令乘法器工作於FP32*FP32的運算模式中。為了圖示的目的,第7圖僅示出FP16*FP16、BF16*BF16、FP32*FP32和FP32*BP16四種示例性運算模式。然而,正如前所述,本披露的乘法器同樣也支持其他多種不同的運算模式。
規格化處理單元可以配置成用於當第一浮點數或第二浮點數為非規格化的非零浮點數時,根據運算模式,對第一浮點數或第二浮點數進行規格化處理,以獲得對應的指數和尾數,例如按照IEEE754標準、對運算模式所指示的資料格式的浮點數進行規則化處理。
進一步,乘法器包括尾數處理單元,以執行第一浮點數尾數和第二浮點數尾數的相乘操作。為此,在一個或多個實施例中,該尾數處理單元可以包括位數擴展電路706、布斯編碼器708、部分積產生電路710、華萊士樹壓縮器712以及加法器714,其中位數擴展電路可以用於對所述第一浮點數和所述第二浮點數中的至少一個的尾數進行位數擴展,例如在高位補0,以適合於布斯編碼器的操作。控制電路可以根據位數擴展電路對尾數進行符號位擴展後獲得的尾數進行以上多次調用尾數處理單元的操作。由於關於布斯編碼器、部分積產生電路、華萊士樹壓縮器和加法器,已經結合第4圖-第6圖進行了詳細了描述,因此相同的描述在此同樣適用並因此不再贅述。
在一些實施例中,本披露的乘法器還包括規則化單元716和捨入單元718,該規則化單元和捨入單元具有與第3圖中所示出的單元相同的功能。具體地,對於規則化單元,其可以根據如第7圖中所示的輸出模式信號“out_mode”所指示的資料格式來對所述加和結果和來自於指數處理單元的指數資料進行浮點數規則化處理以獲得規則化指數結果和規則化尾數結果。例如,根據輸出模式信號所指示的資料格式,規則化單元可以調整指數和尾數的位寬,以使其符合前述指示的資料格式的要求。再例如,當尾數的最高位為0,且該尾數不為0,則規則化單元可以重複將尾數左移1位,並且指數減1,直到最高位數值為1。對於捨入單元,在一個實施例中,其可以用於根據捨入模式對所述規則化尾數結果執行捨入操作以獲得捨入後的尾數,並將捨入後的尾數作為所述乘法運算後的尾數。
在一個或多個實施例中,前述的輸出模式信號可以是運算模式的一部分,用於指示乘法運算後的資料格式。例如,如前表3中所描述的,當運算模式編號為“12”時,則其中的數字“1”可以相當於前述的“in_mode”信號,用於指示執行FP16*FP16的乘法操作,而其中的數位“2”可以相當於“out_mode”信號,用於指示輸出結果的資料類型是BF16。因此可以理解的是,在一些應用場景中,輸出模式信號可以與前述的輸入模式信號合併,以提供給模式選擇單元。基於此合併後的模式信號,模式選擇單元可以在乘法器操作的初始階段明確輸入資料和輸出結果的資料格式,而無需向規則化單獨的提供輸出模式信號,由此也可以進一步簡化操作。
在一個或多個實施例中,對於前述的捨入操作,可以示例性包括如下5種捨入模式。
(1)捨入到最接近的值:在此模式下,當兩個值同樣接近的情況下,偶數優先。此時會將結果捨入為最接近且可以表示的值,但是當存在兩個數同樣接近的時候,則取其中的偶數作為捨入結果(在二進位中是以0結尾的數);
(2)四捨五入:示例性操作參見下面的例子;
(3)朝+∞方向捨入:在此規則下,會將結果朝正無限大的方向捨入;
(4)朝-∞方向捨入:在此規則下,會將結果朝負無限大的方向捨入;以及
(5)朝0方向捨入:在此規則下,會將結果朝0的方向捨入。
對於“四捨五入”模式下的尾數捨入的例子:例如兩個規格化浮點數的24位的尾數相乘得到一個48位(47~0)的尾數,經過規格化處理(若尾數的最高位為0,將尾數左移1位;若尾數的最高位為1,則尾數不動,且將前面所求的臨時的階碼加1),輸出時只取第46至第24位。當尾數的第23位為0時,則捨去第(23-0)位;當尾數的第23位為1時,則向第24位進1並捨去第(23-0)位。
返回到第7圖,本披露的乘法器還包括指數處理單元720和符號處理單元722,其中指數處理單元可以用於根據運算模式、第一浮點數的指數和第二浮點數的指數獲得所述乘法運算後的指數。例如,指數處理電路可以將第一浮點數的指數位資料、第二浮點數的指數位資料和各自對應的輸入浮點資料類型的偏移值相加,並且減去輸出浮點資料類型的偏移值,以獲得所述第一浮點數和第二浮點數的乘積的指數位資料。在一個或多個實施例中,指數處理單元可以實現為或包括加減法電路,其用於根據所述運算模式、所述第一浮點數的指數、所述第二浮點數的指數和所述運算模式獲得所述乘法運算後的指數。
符號處理單元在一個實施例中可以實現為異或電路,其用於對所述第一浮點數和第二浮點數的符號位資料執行異或操作,以獲得所述第一浮點數和第二浮點數的乘積的符號位資料。
上文結合第7圖對本披露的乘法器整體進行了詳細的描述。通過該描述,本領域具有通常知識者可以理解本披露的乘法器支援多種運算模式下的操作,從而克服了習知技術中僅支援單一浮點型運算的乘法器的缺陷。進一步,由於本披露的乘法器可以複用,因此也支援高位寬的浮點型資料,降低了運算成本和開銷。在一個或多個實施例中,本披露的乘法器還可以佈置成或包括於積體電路晶片或計算裝置中,以實現在多種運算模式下對浮點數執行乘法運算。
第8圖是示出根據本披露實施例的使用乘法器執行浮點數乘法運算的方法800的流程圖。可以理解的是此處所述的乘法器即前面結合第1圖-第7圖詳細描述的乘法器,因此在前關於該乘法器及其內部組成、功能和操作的描述也同樣適用於此處的描述。
如第8圖中所示,所述方法800可以包括在步驟S802處利用所述乘法器的指數處理單元來根據運算模式、第一浮點數的指數和第二浮點數的指數獲得所述乘法運算後的指數。正如前所述,該運算模式可以是多種運算模式中的一種,並且可以用於指示浮點數的資料格式。在一個或多個實施例中,該運算模式還可以用於確定輸出結果的浮點數的資料格式。
接著,在步驟S804處,該方法800可以利用乘法器的尾數處理單元來根據所述運算模式、第一浮點數和第二浮點數獲得所述乘法運算後的尾數。關於尾數的示例性操作,本披露在一些優選的實施例中使用了布斯編碼算法和華萊士樹壓縮器,從而提高尾數處理的效率。另外,當第一浮點數和第二浮點數是有符號數時,方法800還可以在步驟S806中用於根據第一浮點數的符號和第二浮點數的符號獲得乘法運算後的符號。
儘管上述方法以步驟形式示出利用本披露的乘法器來執行浮點數乘法運算,但這些步驟順序並不意味著本方法的步驟必須依所述順序來執行,而是可以以其他順序或並行的方式來處理。另外,此處為了描述的簡明而沒有闡述方法800的其他步驟,但本領域具有通常知識者根據本披露的內容可以理解該方法也可以通過使用乘法器來執行前述結合第1圖-第7圖描述的各種操作。
在本披露的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。上述實施例的各技術特徵可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術特徵所有可能的組合都進行描述,然而,只要這些技術特徵的組合不存在矛盾,都應當認為是本說明書記載的範圍。
第9圖是示出根據本披露實施例的一種組合處理裝置900的結構圖。如圖所示,該組合處理裝置900包括計算裝置902,該計算裝置可以包括如前結合附圖描述的本披露的乘法器。另外,該組合處理裝置還包括通用互聯介面904和其他處理裝置906。根據本披露的計算裝置與其他處理裝置進行交互,共同完成用戶指定的操作。
根據本披露的方案,該其他處理裝置可以包括中央處理器(“CPU”)、圖形處理器(“GPU”)、神經網路處理器等通用和/或專用處理器中的一種或多種類型的處理器,其數目不做限制而是依實際需要來確定。在一個或多個實施例中,該其他處理裝置可以作為本披露的計算裝置(其可以具體化為機器學習運算裝置)與外部資料和控制的介面,執行包括但不限於資料搬運,完成對本機器學習運算裝置的開啟、停止等的基本控制;其他處理裝置也可以和機器學習運算裝置協作共同完成運算任務。
根據本披露的方案,該通用互聯介面可以用於在計算裝置與其他處理裝置間傳輸資料和控制指令。例如,該計算裝置可以經由所述通用互聯介面從其他處理裝置中獲取所需的輸入資料,寫入該計算裝置片上的存儲裝置。進一步,該計算裝置可以經由所述通用互聯介面從其他處理裝置中獲取控制指令,寫入計算裝置片上的控制緩存。替代地或可選地,通用互聯介面也可以讀取計算裝置的存儲模組中的資料並傳輸給其他處理裝置。
可選地,該組合處理裝置還可以包括存儲裝置908,其可以分別與所述計算裝置和所述其他處理裝置連接。在一個或多個實施例中,存儲裝置可以用於保存所述計算裝置和所述其他處理裝置的資料,尤其適用於所需要運算的資料在本計算裝置或其他處理裝置的內部存儲中無法全部保存的資料。
根據應用場景的不同,本披露的組合處理裝置可以作為手機、機器人、無人機、視頻採集、視頻監控設備等設備的系統單晶片,從而有效地降低控制部分的核心面積,提高處理速度並降低整體的功耗。在此情況時,該組合處理裝置的通用互聯介面與設備的某些部件相連接。此處的某些部件可以例如是監視器,顯示器,滑鼠,鍵盤,網卡或wifi介面。
在一些實施例裡,本披露還公開了一種晶片或積體電路晶片,其包括了上述計算裝置、組合處理裝置以及本披露的乘法器。在另一些實施例裡,本披露還公開了一種晶片封裝結構,其包括了上述晶片。
在一些實施例裡,本披露還公開了一種板卡,其包括了上述晶片封裝結構。參閱第10圖,其提供了前述的示例性板卡1000,上述板卡1000除了包括上述晶片1002以外,還可以包括其他的配套部件,該配套部件可以包括但不限於:存儲器件1004、介面裝置1006和控制器件1008。
所述存儲器件與所述晶片封裝結構內的晶片通過匯流排連接,用於存儲資料。所述存儲器件可以包括多組存儲單元1010。每一組所述存儲單元與所述晶片通過匯流排連接。可以理解,每一組所述存儲單元可以是DDR SDRAM(“Double Data Rate SDRAM”,雙倍速率同步動態隨機記憶體)。
DDR不需要提高時鐘頻率就能加倍提高SDRAM的速度。DDR允許在時鐘脈衝的上升沿和下降沿讀出資料。DDR的速度是標準SDRAM的兩倍。在一個實施例中,所述存儲器件可以包括4組所述存儲單元。每一組所述存儲單元可以包括多個DDR4顆粒(晶片)。在一個實施例中,所述晶片內部可以包括4個72位DDR4控制器,上述72位DDR4控制器中64bit用於傳輸資料,8bit用於ECC校驗。
在一個實施例中,每一組所述存儲單元可以包括多個並聯設置的雙倍速率同步動態隨機記憶體。DDR在一個時鐘週期內可以傳輸兩次數據。在所述晶片中設置控制DDR的控制器,用於對每個所述存儲單元的資料傳輸與資料存儲的控制。
所述介面裝置與所述晶片封裝結構內的晶片電連接。所述介面裝置用於實現所述晶片與外部設備1012(例如伺服器或電腦)之間的資料傳輸。例如在一個實施例中,所述介面裝置可以為標準PCIE介面。例如,待處理的資料由伺服器通過標準PCIE介面傳遞至所述晶片,實現資料轉移。在另一個實施例中,所述介面裝置還可以是其他的介面,本披露並不限制上述其他的介面的具體表現形式,所述介面單元能夠實現轉接功能即可。另外,所述晶片的計算結果仍由所述介面裝置傳送回外部設備(例如伺服器)。
所述控制器件與所述晶片電連接,以便對所述晶片的狀態進行監控。具體地,所述晶片與所述控制器件可以通過SPI介面電連接。所述控制器件可以包括微控制器(“MCU”,Micro Controller Unit)。所述晶片可以包括多個處理晶片、多個處理核或多個處理電路,並且可以帶動多個負載。由此,所述晶片可以處於多負載和輕負載等不同的工作狀態。通過所述控制裝置可以實現對所述晶片中多個處理晶片、多個處理和/或多個處理電路的工作狀態的調控。
在一些實施例裡,本披露還公開了一種電子設備或裝置,其包括了上述板卡。根據不同的應用場景,電子設備或裝置可以包括資料處理裝置、機器人、電腦、印表機、掃描器、平板電腦、智慧終端機、手機、行車記錄器、導航儀、感測器、監視器、伺服器、雲端伺服器、相機、攝影機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電鍋、加濕器、洗衣機、電燈、瓦斯爐、油煙機;所述醫療設備包括核磁共振儀、B超儀和/或心電圖儀。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域具有通常知識者應該知悉,本披露並不受所描述的動作順序的限制,因為依據本披露,某些步驟可以採用其他順序或者同時進行。其次,本領域具有通常知識者也應該知悉,說明書中所描述的實施例均屬於可選實施例,所涉及的動作和模組並不一定是本披露所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本披露所提供的幾個實施例中,應該理解到,所披露的裝置,可通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些介面,裝置或單元的間接耦合或通信連接,可以是電性、光學、聲學、磁性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本披露各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體程式模組的形式實現。
所述集成的單元如果以軟體程式模組的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個電腦可讀取記憶體中。基於這樣的理解,當本披露的技術方案可以以軟體產品的形式體現出來,該電腦軟體產品存儲在一個存儲器中,包括若干指令用以使得一台電腦設備(可為個人電腦、伺服器或者網路設備等)執行本披露各個實施例所述方法的全部或部分步驟。而前述的存儲器包括:隨身碟、唯讀記憶體(“ROM”,Read-Only Memory)、隨機存取記憶體(“RAM”,Random Access Memory)、移動硬碟、磁碟或者光碟等各種可以存儲程式碼的介質。
依據以下條款可更好地理解前述內容:
條款A1,一種乘法器,用於進行浮點數的乘法運算,其中,所述乘法器包括:
尾數處理單元,用於根據所述浮點數的尾數來獲得所述乘法運算後的尾數,
所述尾數處理單元包括控制電路,所述控制電路用於在兩個浮點數中的至少一個的尾數位寬大於所述尾數處理單元一次可處理的資料位寬時,多次調用所述尾數處理單元。
條款A2,根據條款A1所述的乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述尾數處理單元支援第一位寬和第二位寬,所述第一浮點數的尾數作為與所述第一位寬對應的第一輸入,所述第二浮點數的尾數作為與所述第二位寬對應的第二輸入,所述第一輸入的位寬小於或等於所述第一位寬,所述控制電路用於當所述第二輸入的位寬大於所述第二位寬時,多次調用所述尾數處理單元來獲得所述乘法運算後的尾數。
條款A3,根據條款A1或條款A2所述的乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述尾數處理單元支援第一位寬和第二位寬,所述第一浮點數的尾數作為與所述第一位寬對應的第一輸入,所述第二浮點數的尾數作為與所述第二位寬對應的第二輸入,所述控制電路用於當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬小於或等於所述第二位寬時、當所述第二輸入的位寬大於所述第二位寬且所述第一輸入的位寬小於或等於所述第一位寬時或者當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬大於所述第二位寬時,多次調用所述尾數處理單元來獲得所述乘法運算後的尾數。
條款A4,根據條款A1-A3任一項所述的乘法器,其中,當所述第一浮點數的尾數位寬小於所述第二浮點數的尾數位寬並且所述第一位寬大於所述第二位寬時,或者當所述第一浮點數的尾數位寬大於所述第二浮點數的尾數位寬並且所述第一位寬小於所述第二位寬時,所述控制電路選擇所述第一浮點數的尾數作為與所述第二位寬對應的所述第二輸入並且選擇所述第二浮點數的尾數作為與所述第一位寬對應的第一輸入。
條款A5,根據條款A1-A4任一項所述的乘法器,其中,當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬小於或等於所述第二位寬時,所述控制電路根據所述第一輸入的位寬和所述第一位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。
條款A6,根據條款A1-A5任一項所述的乘法器,其中,當所述第二輸入的位寬大於所述第二位寬且所述第一輸入的位寬小於或等於所述第一位寬時,所述控制電路根據所述第二輸入的位寬和所述第二位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。
條款A7,根據條款A1-A6任一項所述的乘法器,其中,當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬大於所述第二位寬時,所述控制電路根據所述第一輸入的位寬和所述第一位寬以及所述第二輸入的位寬和所述第二位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。
條款A8,根據條款A1-A7任一項所述的乘法器,其中,所述尾數處理單元還包括移位加法電路,所述移位加法電路用於根據每次調用所述尾數處理單元所獲得的尾數結果來獲得所述乘法運算後的尾數。
條款A9,根據條款A1-A8任一項所述的乘法器,其中,所述移位加法電路包括移位器、中間存儲器和加法器,當所述控制電路多次調用所述尾數處理單元時,在第一次調用後,所述移位器將第一次調用獲得的尾數結果進行移位獲得移位後尾數結果並將所述移位後尾數結果存入所述中間存儲器中,從第二次調用開始,所述移位器將當次調用中獲得的尾數結果進行移位獲得當次尾數結果,所述加法器將所述當次尾數結果與存儲在所述中間存儲器中的結果相加並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器,並且在最後一次調用後存儲在所述中間存儲器中的結果作為所述乘法運算後的尾數。
條款A10,根據條款A1-A9任一項所述的乘法器,其中,所述乘法器還包括指數處理單元,所述指數處理單元用於根據所述兩個浮點數的指數來獲得所述乘法運算後的指數,所述指數處理單元包括第二控制電路,所述第二控制電路用於根據所述兩個浮點數中的一個的指數位寬和所述指數處理單元所支援的兩個位寬中的一個或者根據所述兩個浮點數的指數位寬和所述指數處理單元所支援的兩個位寬來確定多次調用所述指數處理單元以獲得所述乘法運算後的指數。
條款A11,根據條款A1-A10任一項所述的乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述指數處理單元支援第三位寬和第四位寬,所述第一浮點數的指數作為與所述第三位寬對應的第三輸入,所述第二浮點數的指數作為與所述第四位寬對應的第四輸入,所述第三輸入的位寬小於或等於所述第三位寬,所述第二控制電路用於當所述第四輸入的位寬大於所述第四位寬時,多次調用所述指數處理單元來獲得所述乘法運算後的指數。
條款A12,根據條款A1-A11任一項所述的乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述指數處理單元支援第三位寬和第四位寬,所述第一浮點數的指數作為與所述第三位寬對應的第三輸入,所述第二浮點數的指數作為與所述第四位寬對應的第四輸入,所述第二控制電路用於當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬小於或等於所述第四位寬時、當所述第四輸入的位寬大於所述第四位寬且所述第三輸入的位寬小於或等於所述第三位寬時或者當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬大於所述第四位寬時,多次調用所述指數處理單元來獲得所述乘法運算後的指數。
條款A13,根據條款A1-A12任一項所述的乘法器,其中,當所述第一浮點數的指數位寬小於所述第二浮點數的指數位寬並且所述第三位寬大於所述第四位寬時,或者當所述第一浮點數的指數位寬大於所述第二浮點數的指數位寬並且所述第三位寬小於所述第四位寬時,所述第二控制電路選擇所述第一浮點數的指數作為與所述第四位寬對應的所述第四輸入並且選擇所述第二浮點數的指數作為與所述第三位寬對應的第三輸入。
條款A14,根據條款A1-A13任一項所述的乘法器,其中,所述第二控制電路用於當所述第三輸入的位寬小於或等於所述第四輸入的位寬且所述第三位寬小於或等於所述第四位寬時,根據所述第四輸入的位寬和所述第三位寬來確定調用所述指數處理單元的次數以及在每次調用中輸入所述指數處理單元的資料。
條款A15,根據條款A1-A14任一項所述的乘法器,其中,所述指數處理單元還包括第二移位加法電路,所述第二移位加法電路用於根據每次調用所述指數處理單元所獲得的指數結果來獲得所述乘法運算後的指數。
條款A16,根據條款A1-A15任一項所述的乘法器,其中,所述尾數處理單元包括部分積運算單元和部分積求和單元,其中所述部分積運算單元用於根據所述兩個浮點數的尾數獲得中間結果,所述部分積求和單元用於將所述中間結果進行加和運算以獲得加和結果,並將所述加和結果作為所述乘法運算後的尾數。
條款A17,根據條款A1-A16任一項所述的乘法器,其中,所述部分積運算單元包括布斯編碼電路,所述布斯編碼電路用於對所述第一浮點數或所述第二浮點數的尾數進行布斯編碼處理,以獲得所述中間結果。
條款A18,根據條款A1-A17任一項所述的乘法器,其中,所述部分積求和單元包括加法器,所述加法器用於對所述中間結果進行加和,以獲得所述加和結果。
條款A19,根據條款A1-A18任一項所述的乘法器,其中,所述部分積求和單元包括華萊士樹和加法器,其中所述華萊士樹用於對所述中間結果進行加和,以獲得第二中間結果,所述加法器用於對所述第二中間結果進行加和,以獲得所述加和結果。
條款A20,根據條款A1-A19任一項所述的乘法器,其中,所述加法器包括全加器、串列加法器和超前進位加法器中的至少一種。
條款A21,根據條款A1-A20任一項所述的乘法器,其中,當所述中間結果的個數不足M個時,補充零值作為中間結果,使得所述中間結果的數量等於M,其中M為預設的正整數。
條款A22,根據條款A1-A21任一項所述的乘法器,其中,每個所述華萊士樹具有M個輸入和N個輸出,所述華萊士樹的數目不小於K,其中N為預設的小於M的正整數,K為不小於所述中間結果的最大位寬的正整數。
條款A23,根據條款A1-A22任一項所述的乘法器,其中,所述部分積求和單元用於選用一組或多組所述華萊士樹對所述中間結果進行加和,其中每組所述華萊士樹有X個華萊士樹,X為所述中間結果的位數,其中各組內的所述華萊士樹之間存在依次進位的關係,而各組之間的華萊士樹不存在進位的關係。
條款A24,根據條款A1-A23任一項所述的乘法器,其中,所述乘法器還包括:
規格化處理單元,用於當所述兩個浮點數中的至少一個浮點數為非規格化的非零浮點數時,對所述至少一個浮點數進行規格化處理,以獲得對應的指數和尾數。
條款A25,根據條款A1-A24任一項所述的乘法器,其中,所述乘法器用於根據運算模式進行所述兩個浮點數的乘法運算,所述運算模式指示所述兩個浮點數的資料格式,所述尾數處理單元用於根據所述運算模式以及所述兩個浮點數的尾數來獲得所述乘法運算後的尾數,並且所述指數處理單元用於根據所述運算模式以及所述兩個浮點數的指數來獲得所述乘法運算後的指數。
條款A26,根據條款A1-A25任一項所述的乘法器,所述規格化處理單元還用於根據所述運算模式,對所述兩個浮點數中的至少一個浮點數進行規格化處理,以獲得對應的指數和尾數。
條款A27,根據條款A1-A26任一項所述的乘法器,其中,所述資料格式包括半精度浮點數、單精確度浮點數、腦浮點數、雙精度浮點數、自訂浮點數中的至少一種。
條款A28,根據條款A1-A27任一項所述的乘法器,其中,所述尾數處理單元包括位數擴展電路,所述位數擴展電路用於對所述第一浮點數和所述第二浮點數中的至少一個的尾數進行位數擴展。
條款A29,根據條款A1-A28任一項所述的乘法器,其中,所述浮點數還包括符號,所述乘法器進一步包括:
符號處理單元,用於根據所述兩個浮點數的符號獲得乘法運算後的符號。
條款A30,根據條款A1-A29任一項所述的乘法器,其中,所述符號處理單元包括異或邏輯電路,所述異或邏輯電路用於根據所述兩個浮點數的符號進行異或運算,獲得所述乘法運算後的符號。
條款A31,根據條款A1-A30任一項所述的乘法器,進一步包括規則化單元,用於:
對所述乘法運算後的尾數和指數進行浮點數規則化處理,以獲得規則化指數結果和規則化尾數結果,並且將所述規則化指數結果和所述規則化尾數結果作為所述乘法運算後的指數和所述乘法運算後的尾數。
條款A32,根據條款A1-A31任一項所述的乘法器,進一步包括:
捨入單元,用於根據捨入模式對所述規則化尾數結果執行捨入操作以獲得捨入後的尾數,並將所述捨入後的尾數作為所述乘法運算後的尾數。
條款A33,一種使用乘法器執行浮點數乘法運算的方法,其中,
利用所述乘法器的尾數處理單元根據所述浮點數的尾數來獲得所述乘法運算後的尾數,
所述尾數處理單元包括控制電路,所述控制電路用於在兩個浮點數中的至少一個的尾數位寬大於所述尾數處理單元一次可處理的資料位寬時,多次調用所述尾數處理單元。
條款A34,一種積體電路晶片,包括根據條款A1-A31的任意一項所述的乘法器。
條款A35,一種計算裝置,包括根據條款A1-A31的任意一項所述的乘法器或根據條款A34所述的積體電路晶片。
以上對本披露實施例進行了詳細介紹,本文中應用了具體個例對本披露的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本披露的方法及其核心思想;同時,對於本領域具有通常知識者,依據本披露的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本披露的限制。
應當理解,本披露的申請專利範圍、說明書及附圖中的術語“第一”、“第二”、“第三”和“第四”等是用於區別不同物件,而不是用於描述特定順序。本披露的說明書和申請專利範圍中使用的術語“包括”和“包含”指示所描述特徵、整體、步驟、操作、元素和/或元件的存在,但並不排除一個或多個其它特徵、整體、步驟、操作、元素、元件和/或其集合的存在或添加。
還應當理解,在此本披露說明書中所使用的術語僅僅是出於描述特定實施例的目的,而並不意在限定本披露。如在本披露說明書和申請專利範圍中所使用的那樣,除非上下文清楚地指明其它情況,否則單數形式的“一”、“一個”及“該”意在包括複數形式。還應當進一步理解,在本披露說明書和申請專利範圍中使用的術語“和/ 或”是指相關聯列出的項中的一個或多個的任何組合以及所有可能組合,並且包括這些組合。
如在本說明書和申請專利範圍中所使用的那樣,術語“如果”可以依據上下文被解釋為“當... 時”或“一旦”或“回應於確定”或“回應於檢測到”。類似地,短語“如果確定”或“如果檢測到[所描述條件或事件]”可以依據上下文被解釋為意指“一旦確定”或“回應於確定”或“一旦檢測到[所描述條件或事件]”或“回應於檢測到[所描述條件或事件]”。
以上對本披露實施例進行了詳細介紹,本文中應用了具體個例對本披露的原理及實施方式進行了闡述,以上實施例的說明僅用於幫助理解本披露的方法及其核心思想。同時,本領域具有通常知識者依據本披露的思想,基於本披露的具體實施方式及應用範圍上做出的改變或變形之處,都屬於本披露保護的範圍。綜上所述,本說明書內容不應理解為對本披露的限制。
100:浮點資料格式
102:符號位
104:指數位
106:尾數位
200、300、700:乘法器
202、720:指數處理單元
204:尾數處理單元
206、722:符號處理單元
308:模式選擇單元
312:部分積運算單元
314:部分積求和單元
316:控制電路
318、716:規則化單元
320:捨入單元
322:異或邏輯電路
324:規格化處理單元
400:尾數處理單元操作
402:布斯編碼電路
404:部分積產生電路
406:Wallace壓縮器
408、714:加法器
500:部分積
600:華萊士樹壓縮器的操作流程和示意框圖
702:模式選擇單元
704:規格化處理單元
706:位數擴展電路
708:布斯編碼器
710:部分積產生電路
712:華萊士樹壓縮器
800:使用乘法器執行浮點數乘法運算的方法
716:模式選擇單元
720:模式選擇單元
722:模式選擇單元
900:組合處理裝置
902:計算裝置
904:通用互聯介面
906:其他處理裝置
908:存儲裝置
1000:板卡
1002:晶片
1004:存儲器件
1006:介面裝置
1008:控制器件
1010:存儲單元
1012:外部設備
S802-S806:步驟
[第1圖]顯示根據本披露實施例的浮點資料格式的示意圖。
[第2圖]顯示根據本披露實施例的乘法器的示意性結構框圖。
[第3圖]顯示根據本披露實施例的乘法器的更多細節的結構框圖。
[第4圖]顯示根據本披露實施例的尾數處理單元的示意性框圖。
[第5圖]顯示根據本披露實施例的部分積操作的示意圖。
[第6圖]顯示根據本披露實施例的華萊士樹壓縮器的操作流程和示意框圖。
[第7圖]顯示根據本披露實施例的乘法器的整體示意框圖。
[第8圖]顯示根據本披露實施例的使用乘法器執行浮點數乘法運算的方法的流程圖。
[第9圖]顯示根據本披露實施例的一種組合處理裝置的結構圖。
[第10圖]顯示根據本披露實施例的一種板卡的結構示意圖。
900:組合處理裝置
902:計算裝置
904:通用互聯介面
906:其他處理裝置
908:存儲裝置
Claims (34)
- 一種乘法器,用於進行浮點數的乘法運算,其中,所述乘法器包括:尾數處理單元,用於根據所述浮點數的尾數來獲得所述乘法運算後的尾數,所述尾數處理單元包括控制電路,所述控制電路用於在兩個浮點數中的至少一個的尾數位寬大於所述尾數處理單元一次可處理的資料位寬時,多次調用所述尾數處理單元,其中,所述乘法器還包括指數處理單元,所述指數處理單元用於根據所述兩個浮點數的指數來獲得所述乘法運算後的指數,所述指數處理單元包括第二控制電路,所述第二控制電路用於根據所述兩個浮點數中的一個的指數位寬和所述指數處理單元所支援的兩個位寬中的一個或者根據所述兩個浮點數的指數位寬和所述指數處理單元所支援的兩個位寬來確定多次調用所述指數處理單元以獲得所述乘法運算後的指數。
- 如請求項1之乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述尾數處理單元支援第一位寬和第二位寬,所述第一浮點數的尾數作為與所述第一位寬對應的第一輸入,所述第二浮點數的尾數作為與所述第二位寬對應的第二輸入,所述第一輸入的位寬小於或等於所述第一位寬,所述控制電路用於當所述第二輸入的位寬大於所述第二位寬時,多次調用所述尾數處理單元來獲得所述乘法運算後的尾數。
- 如請求項1之乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述尾數處理單元支援第一位寬和第二位寬,所述第一浮點 數的尾數作為與所述第一位寬對應的第一輸入,所述第二浮點數的尾數作為與所述第二位寬對應的第二輸入,所述控制電路用於當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬小於或等於所述第二位寬時、當所述第二輸入的位寬大於所述第二位寬且所述第一輸入的位寬小於或等於所述第一位寬時或者當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬大於所述第二位寬時,多次調用所述尾數處理單元來獲得所述乘法運算後的尾數。
- 如請求項3之乘法器,其中,當所述第一浮點數的尾數位寬小於所述第二浮點數的尾數位寬並且所述第一位寬大於所述第二位寬時,或者當所述第一浮點數的尾數位寬大於所述第二浮點數的尾數位寬並且所述第一位寬小於所述第二位寬時,所述控制電路選擇所述第一浮點數的尾數作為與所述第二位寬對應的所述第二輸入並且選擇所述第二浮點數的尾數作為與所述第一位寬對應的第一輸入。
- 如請求項4之乘法器,其中,當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬小於或等於所述第二位寬時,所述控制電路根據所述第一輸入的位寬和所述第一位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。
- 如請求項4之乘法器,其中,當所述第二輸入的位寬大於所述第二位寬且所述第一輸入的位寬小於或等於所述第一位寬時,所述控制電路根據所述第二輸入的位寬和所述第二位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。
- 如請求項4之乘法器,其中,當所述第一輸入的位寬大於所述第一位寬且所述第二輸入的位寬大於所述第二位寬時,所述控制電路根據所 述第一輸入的位寬和所述第一位寬以及所述第二輸入的位寬和所述第二位寬來確定調用所述尾數處理單元的次數以及在每次調用中輸入所述尾數處理單元的資料。
- 如請求項2至7任一項之乘法器,其中,所述尾數處理單元還包括移位加法電路,所述移位加法電路用於根據每次調用所述尾數處理單元所獲得的尾數結果來獲得所述乘法運算後的尾數。
- 如請求項8之乘法器,其中,所述移位加法電路包括移位器、中間存儲器和加法器,當所述控制電路多次調用所述尾數處理單元時,在第一次調用後,所述移位器將第一次調用獲得的尾數結果進行移位獲得移位後尾數結果並將所述移位後尾數結果存入所述中間存儲器中,從第二次調用開始,所述移位器將當次調用中獲得的尾數結果進行移位獲得當次尾數結果,所述加法器將所述當次尾數結果與存儲在所述中間存儲器中的結果相加並且將相加後的結果存儲在所述中間存儲器中來更新所述中間存儲器,並且在最後一次調用後存儲在所述中間存儲器中的結果作為所述乘法運算後的尾數。
- 如請求項1之乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述指數處理單元支援第三位寬和第四位寬,所述第一浮點數的指數作為與所述第三位寬對應的第三輸入,所述第二浮點數的指數作為與所述第四位寬對應的第四輸入,所述第三輸入的位寬小於或等於所述第三位寬,所述第二控制電路用於當所述第四輸入的位寬大於所述第四位寬時,多次調用所述指數處理單元來獲得所述乘法運算後的指數。
- 如請求項1之乘法器,其中,所述兩個浮點數包括第一浮點數和第二浮點數,所述指數處理單元支援第三位寬和第四位寬,所述第一浮點 數的指數作為與所述第三位寬對應的第三輸入,所述第二浮點數的指數作為與所述第四位寬對應的第四輸入,所述第二控制電路用於當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬小於或等於所述第四位寬時、當所述第四輸入的位寬大於所述第四位寬且所述第三輸入的位寬小於或等於所述第三位寬時或者當所述第三輸入的位寬大於所述第三位寬且所述第四輸入的位寬大於所述第四位寬時,多次調用所述指數處理單元來獲得所述乘法運算後的指數。
- 如請求項11之乘法器,其中,當所述第一浮點數的指數位寬小於所述第二浮點數的指數位寬並且所述第三位寬大於所述第四位寬時,或者當所述第一浮點數的指數位寬大於所述第二浮點數的指數位寬並且所述第三位寬小於所述第四位寬時,所述第二控制電路選擇所述第一浮點數的指數作為與所述第四位寬對應的所述第四輸入並且選擇所述第二浮點數的指數作為與所述第三位寬對應的第三輸入。
- 如請求項12之乘法器,其中,所述第二控制電路用於當所述第三輸入的位寬小於或等於所述第四輸入的位寬且所述第三位寬小於或等於所述第四位寬時,根據所述第四輸入的位寬和所述第三位寬來確定調用所述指數處理單元的次數以及在每次調用中輸入所述指數處理單元的資料。
- 如請求項10至13任一項之乘法器,其中,所述指數處理單元還包括第二移位加法電路,所述第二移位加法電路用於根據每次調用所述指數處理單元所獲得的指數結果來獲得所述乘法運算後的指數。
- 如請求項1之乘法器,其中,所述尾數處理單元包括部分積運算單元和部分積求和單元,其中所述部分積運算單元用於根據所述兩個浮點 數的尾數獲得中間結果,所述部分積求和單元用於將所述中間結果進行加和運算以獲得加和結果,並將所述加和結果作為所述乘法運算後的尾數。
- 如請求項15之乘法器,其中,所述部分積運算單元包括布斯編碼電路,所述布斯編碼電路用於對所述第一浮點數或所述第二浮點數的尾數進行布斯編碼處理,以獲得所述中間結果。
- 如請求項16之乘法器,其中,所述部分積求和單元包括加法器,所述加法器用於對所述中間結果進行加和,以獲得所述加和結果。
- 如請求項16之乘法器,其中,所述部分積求和單元包括華萊士樹和加法器,其中所述華萊士樹用於對所述中間結果進行加和,以獲得第二中間結果,所述加法器用於對所述第二中間結果進行加和,以獲得所述加和結果。
- 如請求項17或18之乘法器,其中,所述加法器包括全加器、串列加法器和超前進位加法器中的至少一種。
- 如請求項18之乘法器,其中,當所述中間結果的個數不足M個時,補充零值作為中間結果,使得所述中間結果的數量等於M,其中M為預設的正整數。
- 如請求項20之乘法器,其中,每個所述華萊士樹具有M個輸入和N個輸出,所述華萊士樹的數目不小於K,其中N為預設的小於M的正整數,K為不小於所述中間結果的最大位寬的正整數。
- 如請求項21之乘法器,其中,所述部分積求和單元用於選用一組或多組所述華萊士樹對所述中間結果進行加和,其中每組所述華萊士樹有X 個華萊士樹,X為所述中間結果的位數,其中各組內的所述華萊士樹之間存在依次進位的關係,而各組之間的華萊士樹不存在進位的關係。
- 如請求項1之乘法器,其中,所述乘法器還包括:規格化處理單元,用於當所述兩個浮點數中的至少一個浮點數為非規格化的非零浮點數時,對所述至少一個浮點數進行規格化處理,以獲得對應的指數和尾數。
- 如請求項1之乘法器,其中,所述乘法器用於根據運算模式進行所述兩個浮點數的乘法運算,所述運算模式指示所述兩個浮點數的資料格式,所述尾數處理單元用於根據所述運算模式以及所述兩個浮點數的尾數來獲得所述乘法運算後的尾數,並且所述指數處理單元用於根據所述運算模式以及所述兩個浮點數的指數來獲得所述乘法運算後的指數。
- 如請求項24之乘法器,其中,所述規格化處理單元還用於根據所述運算模式,對所述兩個浮點數中的至少一個浮點數進行規格化處理,以獲得對應的指數和尾數。
- 如請求項25之乘法器,其中,所述資料格式包括半精度浮點數、單精確度浮點數、腦浮點數、雙精度浮點數、自訂浮點數中的至少一種。
- 如請求項16之乘法器,其中,所述尾數處理單元包括位數擴展電路,所述位數擴展電路用於對所述第一浮點數和所述第二浮點數中的至少一個的尾數進行位數擴展。
- 如請求項1之乘法器,其中,所述浮點數還包括符號,所述乘法器進一步包括:符號處理單元,用於根據所述兩個浮點數的符號獲得乘法運算後的符號。
- 如請求項28之乘法器,其中,所述符號處理單元包括異或邏輯電路,所述異或邏輯電路用於根據所述兩個浮點數的符號進行異或運算,獲得所述乘法運算後的符號。
- 如請求項24之乘法器,進一步包括規則化單元,用於:對所述乘法運算後的尾數和指數進行浮點數規則化處理,以獲得規則化指數結果和規則化尾數結果,並且將所述規則化指數結果和所述規則化尾數結果作為所述乘法運算後的指數和所述乘法運算後的尾數。
- 如請求項30之乘法器,進一步包括:捨入單元,用於根據捨入模式對所述規則化尾數結果執行捨入操作以獲得捨入後的尾數,並將所述捨入後的尾數作為所述乘法運算後的尾數。
- 一種使用乘法器執行浮點數乘法運算的方法,其中,利用所述乘法器的尾數處理單元根據所述浮點數的尾數來獲得所述乘法運算後的尾數,所述尾數處理單元包括控制電路,所述控制電路用於在兩個浮點數中的至少一個的尾數位寬大於所述尾數處理單元一次可處理的資料位寬時,多次調用所述尾數處理單元,利用所述指數處理單元根據所述兩個浮點數的指數來獲得所述乘法運算後的指數,所述指數處理單元包括第二控制電路,所述第二控制電路用於根據所述兩個浮點數中的一個的指數位寬和所述指數處理單元所支援的兩個位寬中的一個或者根據所述兩個浮點數的指數位寬和所述指數處理單元所支援的兩個位寬來確定多次調用所述指數處理單元以獲得所述乘法運算後的指數。
- 一種積體電路晶片,包括請求項1至31任一項所述的乘法器。
- 一種計算裝置,包括請求項1-31任一項所述的乘法器或請求項33所述的積體電路晶片。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910970802.8 | 2019-10-14 | ||
| CN201910970802 | 2019-10-14 | ||
| CN202011074061.4 | 2020-10-09 | ||
| CN202011074061.4A CN112732220B (zh) | 2019-10-14 | 2020-10-09 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202115560A TW202115560A (zh) | 2021-04-16 |
| TWI763079B true TWI763079B (zh) | 2022-05-01 |
Family
ID=75597234
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109135585A TWI763079B (zh) | 2019-10-14 | 2020-10-14 | 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置 |
Country Status (2)
| Country | Link |
|---|---|
| CN (2) | CN112732221A (zh) |
| TW (1) | TWI763079B (zh) |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113434115B (zh) * | 2021-07-22 | 2024-03-22 | 无锡江南计算技术研究所 | 一种浮点数尾数域余数运算电路及方法 |
| CN114327365A (zh) * | 2021-12-13 | 2022-04-12 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
| CN114115803B (zh) * | 2022-01-24 | 2022-05-03 | 南京航空航天大学 | 一种基于部分积概率分析的近似浮点乘法器 |
| CN116700666B (zh) * | 2022-02-24 | 2024-08-23 | 象帝先计算技术(重庆)有限公司 | 一种浮点数处理方法及装置 |
| CN116700664B (zh) * | 2022-02-24 | 2024-06-21 | 象帝先计算技术(重庆)有限公司 | 一种确定浮点数平方根的方法及装置 |
| CN116700665B (zh) * | 2022-02-24 | 2024-06-21 | 象帝先计算技术(重庆)有限公司 | 一种确定浮点数平方根倒数的方法及装置 |
| CN118798219A (zh) * | 2023-04-11 | 2024-10-18 | 北京有竹居网络技术有限公司 | 计算装置及方法、电子设备和存储介质 |
| CN116931873B (zh) * | 2023-09-11 | 2023-11-28 | 安徽大学 | 两字节乘法电路及其任意位宽为2次幂的乘法电路与芯片 |
| CN117687598B (zh) * | 2023-12-19 | 2024-08-09 | 上海合芯数字科技有限公司 | 多项式乘加处理电路和芯片 |
Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102722352A (zh) * | 2012-05-21 | 2012-10-10 | 华南理工大学 | 一种Booth乘法器 |
| CN103809930A (zh) * | 2014-01-24 | 2014-05-21 | 天津大学 | 一种双精度浮点数除法器的设计方法及除法器 |
| CN104321741A (zh) * | 2012-06-29 | 2015-01-28 | 英特尔公司 | 双舍入组合浮点乘法和加法 |
| TWI529613B (zh) * | 2012-11-21 | 2016-04-11 | 輝達公司 | 一種用於可降低浮點運算功率之電腦實施方法及算術子系統 |
| US9317251B2 (en) * | 2012-12-31 | 2016-04-19 | Nvidia Corporation | Efficient correction of normalizer shift amount errors in fused multiply add operations |
| US9823897B2 (en) * | 2015-09-25 | 2017-11-21 | Arm Limited | Apparatus and method for floating-point multiplication |
| JP6371451B2 (ja) * | 2009-06-19 | 2018-08-08 | シンギュラー コンピューティング、エルエルシー | コンパクトな演算処理要素を用いたプロセッシング |
| US10152303B2 (en) * | 2016-12-13 | 2018-12-11 | Arm Limited | Partial square root calculation |
| US20190196785A1 (en) * | 2017-12-21 | 2019-06-27 | Qualcomm Incorporated | System and method of floating point multiply operation processing |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7398289B2 (en) * | 2002-12-13 | 2008-07-08 | Smi Stmicroelectronics S.R.L | Method and device for floating-point multiplication, and corresponding computer-program product |
| JP2012113508A (ja) * | 2010-11-24 | 2012-06-14 | Nec Fielding Ltd | 浮動小数点演算回路、浮動小数点演算回路を備えたコンピュータ及びその演算制御方法と演算制御プログラム |
| CN104636114B (zh) * | 2015-02-12 | 2018-05-15 | 北京思朗科技有限责任公司 | 一种浮点数乘法的舍入方法及装置 |
| US10042607B2 (en) * | 2016-08-22 | 2018-08-07 | Altera Corporation | Variable precision floating-point multiplier |
| US10289413B2 (en) * | 2017-10-02 | 2019-05-14 | Advanced Micro Devices, Inc. | Hybrid analog-digital floating point number representation and arithmetic |
| CN108255777B (zh) * | 2018-01-19 | 2021-08-06 | 中国科学院电子学研究所 | 用于fpga的嵌入式浮点型dsp硬核结构 |
| CN108287681B (zh) * | 2018-02-14 | 2020-12-18 | 中国科学院电子学研究所 | 一种单精度浮点融合点乘运算装置 |
| CN108459840B (zh) * | 2018-02-14 | 2021-07-09 | 中国科学院电子学研究所 | 一种simd结构浮点融合点乘运算单元 |
| CN108958705B (zh) * | 2018-06-26 | 2021-11-12 | 飞腾信息技术有限公司 | 一种支持混合数据类型的浮点融合乘加器及其应用方法 |
| US11294626B2 (en) * | 2018-09-27 | 2022-04-05 | Intel Corporation | Floating-point dynamic range expansion |
| CN109634558B (zh) * | 2018-12-12 | 2020-01-14 | 上海燧原科技有限公司 | 可编程的混合精度运算单元 |
-
2020
- 2020-10-09 CN CN202011075144.5A patent/CN112732221A/zh active Pending
- 2020-10-09 CN CN202011074061.4A patent/CN112732220B/zh active Active
- 2020-10-14 TW TW109135585A patent/TWI763079B/zh active
Patent Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP6371451B2 (ja) * | 2009-06-19 | 2018-08-08 | シンギュラー コンピューティング、エルエルシー | コンパクトな演算処理要素を用いたプロセッシング |
| CN102722352A (zh) * | 2012-05-21 | 2012-10-10 | 华南理工大学 | 一种Booth乘法器 |
| CN104321741A (zh) * | 2012-06-29 | 2015-01-28 | 英特尔公司 | 双舍入组合浮点乘法和加法 |
| TWI529613B (zh) * | 2012-11-21 | 2016-04-11 | 輝達公司 | 一種用於可降低浮點運算功率之電腦實施方法及算術子系統 |
| US9317251B2 (en) * | 2012-12-31 | 2016-04-19 | Nvidia Corporation | Efficient correction of normalizer shift amount errors in fused multiply add operations |
| CN103809930A (zh) * | 2014-01-24 | 2014-05-21 | 天津大学 | 一种双精度浮点数除法器的设计方法及除法器 |
| US9823897B2 (en) * | 2015-09-25 | 2017-11-21 | Arm Limited | Apparatus and method for floating-point multiplication |
| US10152303B2 (en) * | 2016-12-13 | 2018-12-11 | Arm Limited | Partial square root calculation |
| US20190196785A1 (en) * | 2017-12-21 | 2019-06-27 | Qualcomm Incorporated | System and method of floating point multiply operation processing |
Also Published As
| Publication number | Publication date |
|---|---|
| CN112732221A (zh) | 2021-04-30 |
| CN112732220B (zh) | 2025-09-09 |
| TW202115560A (zh) | 2021-04-16 |
| CN112732220A (zh) | 2021-04-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI763079B (zh) | 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置 | |
| CN112711738B (zh) | 用于向量内积的计算装置、方法和集成电路芯片 | |
| CN112712172B (zh) | 用于神经网络运算的计算装置、方法、集成电路和设备 | |
| US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
| CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
| CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
| CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
| TWI774093B (zh) | 用於轉換資料類型的轉換器、晶片、電子設備及其方法 | |
| CN111381808B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
| CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
| TWI776213B (zh) | 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 | |
| CN112711440A (zh) | 用于转换数据类型的转换器、芯片、电子设备及其方法 | |
| WO2021073512A1 (zh) | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 | |
| CN111258541B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
| WO2021073511A1 (zh) | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 | |
| CN209895329U (zh) | 乘法器 | |
| WO2023231363A1 (zh) | 乘累加操作数的方法及其设备 | |
| CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
| CN111258542B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
| CN210006083U (zh) | 乘法器、装置、芯片及电子设备 | |
| CN113033788B (zh) | 数据处理器、方法、装置及芯片 | |
| CN110378477A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
| CN111258546B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
| CN209962284U (zh) | 乘法器、装置、芯片及电子设备 | |
| CN111258543A (zh) | 乘法器、数据处理方法、芯片及电子设备 |