TWI783295B - 乘法器及乘法運算方法 - Google Patents
乘法器及乘法運算方法 Download PDFInfo
- Publication number
- TWI783295B TWI783295B TW109139769A TW109139769A TWI783295B TW I783295 B TWI783295 B TW I783295B TW 109139769 A TW109139769 A TW 109139769A TW 109139769 A TW109139769 A TW 109139769A TW I783295 B TWI783295 B TW I783295B
- Authority
- TW
- Taiwan
- Prior art keywords
- multiplier
- sub
- module
- partial product
- bit width
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 27
- 238000007781 pre-processing Methods 0.000 claims abstract description 22
- 238000007792 addition Methods 0.000 description 158
- 238000004364 calculation method Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 230000035508 accumulation Effects 0.000 description 8
- 238000009825 accumulation Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005265 energy consumption Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Neurology (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本發明提出了一種乘法器,其包括一個乘數預處理模組、一個編碼模組、一個加法模組和一個部分積選擇模組,乘數預處理模組,用於根據不同的運算位寬將其接收到的乘數生成不同的編碼輸入值;編碼模組,用於根據不同的編碼輸入值生成不同的編碼值,並根據不同的編碼值與接收到的被乘數進行運算得到第一部分積;加法模組,用於根據不同的運算位寬將第一部分積進行對應次數的累加,生成不同的第二部分積。此乘法器支持多種混合位寬的乘法,面對不同精度的乘法運算時可重複使用乘法器單元。
Description
本發明涉及乘法運算技術領域,具體涉及一種乘法器及一種乘法運算方法。
深度學習(Deep learning)是開展人工智慧(Artificial intelligence,AI)的重要應用技術之一,其廣泛應用於電腦視覺、語音辨識等領域。其中卷積神經網路(Convolutional Neural Network,CNN)則是近年來引起重視的一種深度學習高效識別技術,它通過直接輸入原始圖像或資料,與多個特徵濾波器(filter)進行若干層的卷積運算及向量運算,從而在圖像和語音辨識方面產生高準確性結果。其中濾波器的規模可由1×1、3×3的區塊規模到5×5、7×7甚至是11×11的大規模卷積運算區塊,因此卷積運算也是一種很耗費效能的運算。
在電腦對信號進行處理的過程中往往包含許多複雜的運算,這些複雜的運算可以被拆解為加法和乘法運算的組合。以神經網路中的卷積運算為例,一次卷積運算需要執行多次讀取資料、加法、乘法的操作,以最終實現卷積運算。
傳統的加法器逐位地對加數以及被加數執行加的運算、傳統的乘法器將乘數與被乘數中的每一位分別相乘再通過移位以及傳統的加法器將所得的結果相加以執行乘法運算,儘管上述傳統的加法器和乘法器能夠獲得具有很高的準確性的計算結果,然而,採用這樣的加法器和乘法器對於諸如神經網路這樣包含大量計算的應用而言會帶來非常高的延遲、能耗。在神經網路中包含多個網路層,網路層對神經網路的輸入或者對前一個網路層的輸出執行諸如卷積、以及其他複雜運算,以獲得針對該網路層的輸出,通過多個網路層的計算最終獲得學習、分類、識別、處理等相應的結果。可以理解,神經網路中多個網路層的計算量非常大,並且這樣的計算往往需要使用較早執行的計算結果,採用上述傳統的加法器和乘法器會佔用神經網路處理器中大量的資源,帶來極高的延遲、能耗。
AI處理器中需要進行大量的卷積運算,乘累加(MAC)陣列的數量對AI處理器性能影響非常大,並且不同類型的神經網路(CNN)在運算過程中對運算元的計算精度不同,例如有些運算是8bit乘法,有些是16bit乘法、甚至有些是2bit乘法。因此,乘法器作為AI處理器中重要的功能單元,如何設計並優化乘法器,減少乘法器的時序路徑延遲,是提升AI處理器性能的關鍵;而面對不同精度的乘法運算時,如何盡可能重複使用乘法器單元,降低硬體資源的消耗,是減少AI處理器晶片面積的關鍵。
本發明旨在至少解決習知技術中存在的技術問題之一,提供一種乘法器和一種乘法運算方法。
本發明的一個方面,提供一種乘法器,其包括一乘數預處理模組、一編碼模組、一加法模組和一部分積選擇模組。乘數預處理模組,根據一運算位寬及一乘數產生至少一編碼輸入值。編碼模組根據該編碼輸入值產生至少一編碼值,並根據該編碼值與一被乘數進行運算得到至少一第一部分積。加法模組根據該運算位寬將該第一部分積進行對應次數的累加,產生至少一第二部分積。部分積選擇模組根據一輸出位寬選擇性地從該第一部分積和該第二部分積中選擇出對應的部分積作為目標部分積。
本發明的另一個方面,提供一種乘法運算方法,包括:根據一運算位寬及一乘數產生至少一編碼輸入值;根據該編碼輸入值產生至少一編碼值,並根據該編碼值與一被乘數進行運算得到至少一第一部分積;根據該運算位寬將該第一部分積進行對應次數的累加,產生至少一第二部分積;以及,根據一輸出位寬選擇性地從該第一部分積和該第二部分積中選擇出對應的部分積作為目標部分積。
本發明實施例的乘法器、及乘法運算方法,可以支援多種混合位寬的乘法,支援有符號、無符號混合的乘法運算,且在硬體面積上,一個乘法器的面積遠小於對應數量一種資料位寬乘法器的面積,大大減少了硬體資源消耗;在硬體功耗上,一個乘法器的功耗也遠小於對應數量一種資料位寬乘法器的功耗,面對不同精度的乘法運算時可重複使用乘法器單元,降低硬體資源的消耗。針對神經網路等需要實現大量卷積運算、包含多個複雜乘法和加法組合的運算,能有效的減少延遲、降低能耗。
100:乘法器
110:乘數預處理模組
120:編碼模組
130:加法模組
140:部分積選擇模組
131:第一級子加法模組
132:第二級子加法模組
133:第三級子加法模組
S1,S2,S3,S4:步驟
圖1為本發明一實施例中提出的一種乘法器的結構框圖;
圖2為本發明另一實施例中提出的一種乘法器的結構示意圖;圖3為本發明另一實施例中提出的一種乘法運算方法的流程圖;圖4為本發明另一實施例中提出的一種運算裝置的結構示意圖。
為使本領域技術人員更好地理解本發明的技術方案,下面結合附圖和具體實施方式對本發明作進一步詳細描述。
下面,根據圖1來描述本發明實施例的乘法器。
如圖1所示,一種乘法器100,包括一個乘數預處理模組110、一個編碼模組120、一個加法模組130和一個部分積選擇模組140。其中,所述乘數預處理模組110,用於根據不同的運算位寬將其接收到的乘數生成不同的編碼輸入值。所述編碼模組120,用於根據不同的所述編碼輸入值生成不同的編碼值,並根據所述不同的編碼值與接收到的被乘數進行運算得到第一部分積。所述加法模組130,用於根據所述不同的運算位寬將所述第一部分積進行對應次數的累加,生成不同的第二部分積。所述部分積選擇模組140,用於根據接收到的輸出位寬選擇性地從所述第一部分積和所述不同的第二部分積中選擇出對應的部分積作為目標部分積並輸出。例如,若運算位寬為2bit,則所述輸出位寬可以為2bit。再例如,若運算位寬為4bit,則所述輸出位寬可以為2bit、4bit。此外,若所運算位寬為16bit,則所述輸出位寬可以為2bit、4bit、8bit、16bit。也就是說,輸出位寬應當小於或等於所述運算位寬。所述乘法器能處理的乘法的運算位寬優選2n,也可以處理其他多位運算位寬的乘法。
本實施例的乘法器,可以實現多種運算位寬的乘法運算,並
且,不需要為每一種運算位寬設置對應的硬體結構,只需借助所設置的乘數預處理模組即可實現多種運算位寬的處理,從而可以簡化乘法器的硬體資源消耗,提高乘法運算效率。
示例性的,所述乘數預處理模組110,可以根據所述不同的運算位寬m和預設的編碼基數n,將接收到的所述乘數生成依序放置的多組子編碼輸入值,第一組所述子編碼輸入值包括固定零位和乘數位,其餘組所述子編碼輸入值包括選擇位和乘數位;其中,所述乘數位根據所述乘數確定,所述選擇位根據所述運算位寬確定。
具體地,根據所述運算位寬m和預設的編碼基數n將編碼輸入值分解為多組依序放置的子編碼輸入值,具體為以n-1的位數為一組、將編碼輸入值進行分組,所述編碼輸入值共包括m/(n-2)組子編碼輸入值,所述多組子編碼輸入值從第一組至最後一組依序放置。所述編碼基數n為根據實際情況具體選擇,例如可以選擇基數n為4、5、6等。此外,第一組子編碼輸入值包括固定零位和乘數位,其餘組所述子編碼輸入值包括選擇位和乘數位。
示例性的,如圖2所示,本實施例中編碼基數取值為4,因此將編碼輸入值按每3位一組分成多組子編碼輸入值。若運算位寬選擇為16位,則所述編碼輸入值共有8組子編碼輸入值,若運算位寬選擇為8,則所述編碼輸入值共有4組子編碼輸入值,若運算位寬選擇為2,則所述編碼輸入值共有1組子編碼輸入值。
在確定了多組子編碼輸入值以後,需要對每組子編碼輸入值的乘數位和選擇位進行確定,下文將進行具體描述。
示例性的,在確定乘數位時,根據乘數位值和運算位寬來確
定,即根據所述子編碼輸入值的位數將所述乘數依序放置入每組子編碼輸入值中的乘數位中,所述依序放置具體為從低位到高位依序方式。本實施例中,如圖2所示,若接收到的乘數為2bit的乘數,即分別將所述乘數的第一位和第二位放置到第一組子編碼輸入值的第二位和第三位中,由於所述第一子編碼輸入值的最低位即第一位是固定零位,因此,所述第二位即為最低位的乘數位,從而實現依序放置。反之,若接收到的乘數為4bit的乘數,即分別將所述乘數的第一位和第二位放置到所述第一組子編碼輸入值的第二位和第三位中,分別將所述乘數的第三位和第四位放置到所述第二組子編碼輸入值的第二位和第三位中,從而實現依序放置。依次類推,對於其餘運算位寬,將乘數採用類似的分配方式。
示例性的,在確定每組子編碼輸入值的選擇位時,需要根據所述不同的運算位寬生成對應一組所述子編碼輸入值的所述選擇位。例如,第二組子編碼輸入值的選擇位可以為第一組子編碼輸入值的最高位,或者,第二組子編碼輸入值的選擇位也可以為零,這取決於當前的運算位寬,比如,在運算位寬為2bit時,第二組子編碼輸入值的選擇位為零。在當前的運算位寬為4bit時,第二組子編碼輸入值的選擇位為第一組子編碼輸入值的最高位。再例如,在當前的運算位寬為8bit時,第二組子編碼輸入值的選擇位為第一組子編碼輸入值的最高位,第三組子編碼輸入值的選擇位為第二組子編碼輸入值的最高位,依次類推。當然,選擇位除了這種分配方式以外,本領域技術人員還可以根據實際需要,選擇其他的一些分配方式,本實施例對此並不限制。
示例性的,作為乘數預處理模組的一種具體結構,如圖2所示,所述乘數預處理模組110中還包括至少一個選擇器,每個選擇器根據所述
運算位寬生成對應一組所述子編碼輸入值的所述選擇位。所述選擇器可以為一個或多個,當選擇器為多個,則多個選擇器直接採用級聯的方式連接,每個所述選擇器對應其餘組所述子編碼輸入值中的一組所述子編碼輸入值,即第一組子編碼輸入值不設置對應的選擇器。所述選擇器的數量由所述運算位寬的最大值k和編碼基數n確定,具體為k/(n-2)-1。
在本實施例中,由於所述運算位寬最大值k為16bit,所述編碼基數n為4,因此所述選擇器的數量為7個,即為圖2中A、B、C、D、E、F、G共7個選擇器,即所述7個選擇器級聯。在具體使用過程中,7個選擇器並不一定全部使用,而是根據運算位寬和需要平行處理的乘法數量來決定。例如,處理16bit的一個乘數和被乘數的乘法,需要使用7個選擇器;處理2bit的八個乘數和被乘數的乘法,需要使用7個選擇器;處理2bit的四個乘數和被乘數的乘法,僅需要使用3個選擇器;處理4bit的三個乘數和被乘數的乘法,僅需要使用5個選擇器。
示例性的,當所述運算位寬為一個預設的高運算位寬時,所述選擇器還用於根據所述高運算位寬,將當前選擇器所對應的子編碼輸入值的前一組子編碼輸入值中處於高位的乘數位作為對應一組所述子編碼輸入值的所述選擇位。當所述運算位寬為一個預設的低運算位寬時,所述選擇器還用於根據所述低運算位寬,將固定零位作為對應一組所述子編碼輸入值的所述選擇位。
需要說明的是,對於每一個選擇器而言,其低運算位寬和高運算位寬並不是只有一個,並且,低運算位寬和高運算位寬也僅僅是相對而言的。如,在2bit運算位寬時,對於選擇器A至選擇器G而言,該運算位寬均為低運算位寬。反之,在4bit運算位寬時,對於選擇器A、C、E而言,是高運
算位寬,對於選擇器B、D和F而言,其為低運算位寬,依次類推。
本實施例中,7個選擇器預設的高運算位寬和低運算位寬具體如下:
A:低運算位寬:2bit;高運算位寬:4bit、8bit、16bit。
B:低運算位寬:2bit、4bit;高運算位寬:8bit、16bit。
C:低運算位寬:2bit;高運算位寬:4bit、8bit、16bit。
D:低運算位寬:2bit、4bit、8bit;高運算位寬:16bit。
E:低運算位寬:2bit;高運算位寬:4bit、8bit、16bit。
F:低運算位寬:2bit、4bit;高運算位寬:8bit、16bit。
G:低運算位寬:2bit;高運算位寬:4bit、8bit、16bit。
具體地,如圖2所示,以選擇器A為例,當所述運算位寬為2bit時,選擇器A將固定零位作為所述選擇位,即a取值為0。當所述運算位寬為4bit或8bit或16bit時,選擇器A將當前選擇器(選擇器A)所對應的子編碼輸入值的前一組子編碼輸入值中處於高位的乘數位作為所述選擇位,由於選擇器A對應第二組子編碼輸入值,則前一組子編碼輸入值即為第一組子編碼輸入值,即將所述第一組子編碼輸入值中處於高位的乘數位作為選擇位,選擇器A輸出的選擇結果a為Bit1,將Bit1作為選擇器A對應一組所述子編碼輸入值(第二組子編碼輸入值)的所述選擇位,即第二組子編碼輸入值的選擇位為Bit1。
以選擇器B為例,當所述運算位寬為2bit或4bit時,即所述運算位寬為選擇器B預設的低運算位寬,選擇器B將固定零位作為所述選擇位,即b取值為0;當所述運算位寬8bit或16bit時,即所述運算位寬為選擇器B預
設的高運算位寬,選擇器B將當前選擇器(選擇器B)所對應的子編碼輸入值的前一組子編碼輸入值中處於高位的乘數位作為所述選擇位,由於選擇器B對應第三組子編碼輸入值,則前一組子編碼輸入值即為第二組子編碼輸入值,即將所述第二組子編碼輸入值中處於高位的乘數位作為選擇位,選擇器B輸出的選擇結果b為Bit3,將Bit3作為選擇器B對應一組所述子編碼輸入值(第三組子編碼輸入值)的所述選擇位,即第三組子編碼輸入值的選擇位為Bit3。
其他選擇器的工作原理相同,此處不再贅述。需要注意的是,上述對選擇器的高運算位寬和低運算位寬的設置方式僅為舉例說明,由於本實施例中提出的選擇器優選用於處理運算位寬為2n的乘法運算,因此對高運算位寬和低運算位寬的設置方式僅舉例說明了運算位寬為2n的情況,並不代表本實施例中提出的乘法器僅能處理運算位寬為2n的乘法運算,所述高運算位寬和低運算位寬也可設置為3bit、6bit、15bit等數值。
在本實施例中,由於優選使用布思(booth)編碼,因此所述編碼模組120優選採用一個booth編碼模組。所述編碼模組根據不同的編碼輸入值生成不同的編碼值具體為根據不同的booth編碼輸入值生成不同的booth編碼值。進一步的,所述booth編碼模組,用於根據所述不同的編碼輸入值生成帶不同的固定偏值的不同的booth編碼值;其中,所述固定偏值與所述運算位寬相對應。
所述帶固定偏值的booth編碼主要用於對有符號乘法進行編碼,所述固定偏值由乘法器本身的設計決定。本實施例中,根據每個子編碼輸入值生成的booth編碼值的固定偏值為-1。例如,使用本實施例中的乘法器處理8bit乘法,由於需要4個2bit乘法的部分積累加,4組3bit子編碼輸入值生成的
booth編碼的偏差各為-1,因此4個booth累積的偏差就為二進位的16`b0101_0101_0000_0000,即十六進位的16`h5500,同理16bit乘法偏差為32`h5555_0000;4bit乘法的偏差為8`h50;2bit乘法的偏差為4`h4。
本實施例的乘法器,其所採用的booth編碼模組,與傳統的booth編碼方式不同,在本實施例中,booth編碼模組所產生的編碼結果帶有一個固定偏值的,這樣做的好處就是減少面積,比傳統booth編碼面積小。
示例性的,如圖2所示,所述編碼模組120包括多個編碼子模組,例如,該編碼模組可以包括8個編碼子模組,每個編碼子模組用於接收並處理一個子編碼輸入值。在所述編碼模組120工作過程中,首先,將所述被乘數根據子編碼輸入值進行分解,使所述被乘數分解後與所述乘數位相對應,在本實施例中,即為按兩位一組對被乘數進行分解,得到多組子被乘數;其次,所述多個編碼子模組通過子編碼輸入值對對應的子被乘數進行平行運算,生成多個第一部分子積;最後,輸出多個第一部分子積,即第一部分積。
本實施例的乘法器,通過booth編碼值對接收到的被乘數進行乘法運算得到第一部分積,具體為booth編碼模組根據所述不同的booth編碼值與接收到的被乘數進行運算得到第一部分積,即為多個booth編碼子模組通過多個子編碼輸入值對對應的子被乘數進行平行運算,生產多個第一部分子積,所述第一部分子積的數量與子編碼輸入值的組數相同且一一對應。
在本實施例中,由於booth編碼基數為4,每個子編碼輸入值為3位,因此,每個子編碼輸入值為2bit,所述被乘數被分解為每2bit一組的子被乘數,所述每個編碼子單元可通過2bit的子編碼輸入值對對應的2bit的子被乘數進行平行的編碼,得到4bit的第一部分子積,多個4bit的第一部分子積共
同組成所述第一部分積,即每個所述第一部分子積為2bit乘數和被乘數運算的結果,即每個所述第一部分子積為一個4bit數。
示例性的,如圖2所示,所述加法模組130用於根據所述不同的運算位寬將所述第一部分積進行對應次數的累加,生成不同的第二部分積。所述加法模組可為可實現加法功能的模組,在本實施例中,使用華萊士樹(Wallace tree)加法模組。
具體地,如圖2所示,所述加法模組包括多級子加法模組,所述子加法模組的級數根據運算位寬的最大值k來確定,具體為log-1。本實施例中,由於所述運算位寬的最大值k為16bit,即本實施例中的加法模組包括3級子加法模組。如圖2所示,所述加法模組130包括一個第一級子加法模組131、一個第二級子加法模組132和一個第三級子加法模組133;其中,所述編碼模組120選擇性地與所述第一級子加法模組131和所述部分積選擇模組140相連;所述第一級子加法模組131選擇性地與所述第二級子加法模組132和所述部分積選擇模組140相連;所述第二級子加法模組132選擇性地與所述第三級子加法模組133和所述部分積選擇模組140相連;所述第三級子加法模組133與所述部分積選擇模組140相連。
進一步的,所述每個子加法模組130中包括至少一個加法單元,所述加法單元用於具體實現加法運算。所述第一級子加法模組131的加法單元的數量為所述編碼子模組的數量的1/2、亦即第一部分子積數量的1/2,即所述編碼模組120輸出的每兩個第一部分子積對應輸入至第一級子加法模組131中的一個加法單元中,每個所述加法單元對所述每兩個第一部分子積做加法運算,並分別輸出多個一級第二部分子積,得到一級第二部分積。所述第二
級子加法模組132中加法單元的數量為所述第一級子加法模組131加法單元數量的1/2,每個所述加法單元對每兩個一級第二部分子積做加法運算,並分別輸出多個二級第二部分子積,得到二級第二部分積;所述第三級子加法模組133中加法單元的數量為所述第二級子加法模組132中加法單元數量的1/2,每個所述加法單元對每兩個二級第二部分子積做加法運算,並分別輸出多個三級第二部分子積,得到三級第二部分積。
在本實施例中,由於所述加法模組使用Wallace tree加法模組,則所述Wallace tree加法模組包括多級Wallace tree子加法模組,每個多級Wallace tree子加法模組包括多個Wallace tree加法單元。如圖2所示,所述第一級子加法模組131包括4個加法單元,所述第二級子加法模組132包括2個加法單元,所述第三級子加法模組133包括1個加法單元,所述加法單元為Wallace tree加法單元。
所述多級子加法模組分別選擇性的輸出多級第二部分積,所述第一級子加法模組131選擇性的將輸入的第一部分積進行累加,輸出一級第二部分積;所述第二級子加法模組132選擇性的將輸入的一級第二部分積進行累加,輸出二級第二部分積;所述第三級子加法模組133選擇性的將輸入的二級第二部分積進行累加,輸出三級第二部分積。在本實施例中,由於所述第一部分積為2bit乘法運算的部分積、即4bit的部分積,則若多級子加法模組分別選擇輸出多級第二部分積,則所述一級第二部分積為4bit乘法運算的部分積、即8bit的部分積,所述二級第二部分積為8bit乘法運算的部分積、即16bit的部分積,所述三級第二部分積為16bit乘法運算的部分積、即32bit的部分積。
所述編碼模組將所述第一部分積輸出至部分積選擇模組,所述
多級子加法模組分別選擇性的將所述多級第二部分積輸出至部分積選擇模組。在本實施例中,即為所述第一級子加法模組選擇性的輸出一級第二部分積至部分積選擇模組,所述第二級子加法模組選擇性的輸出二級第二部分積至部分積選擇模組,所述第三級子加法模組選擇性的輸出三級第二部分積至部分積選擇模組。
所述多級子加法模組選擇性的與所述部分積選擇模組相連,或者說所述多級加法子模組選擇性的輸出,指的是多級子加法模組根據運算位寬選擇性的輸出第二部分積,具體為:當所述運算位寬為所述多級子加法模組的預設的加法位寬時,所述第一級子加法模組與所述編碼模組相連,或所述多級子加法模組與上一級子加法模組相連,所述多級子加法模組輸出對應的多級第二部分積;否則,所述第一級子加法模組不與所述編碼模組相連,或所述多級子加法模組不與上一級子加法模組相連,多級子加法模組不進行輸出。所述預設的加法位寬可根據實際使用情況具體設置。
在本實施例中,所述第一級子加法模組的預設的加法位寬為4bit、8bit、16bit,所述第二級子加法模組的預設的加法位寬為8bit、16bit,所述第三級子加法模組的預設的加法位寬為16bit。
若所述運算位寬為2bit,則第一級子加法模組、第二級子加法模組和第三級子加法模組均不與所述部分積選擇模組相連、均不輸出第二部分積;所述編碼模組不與所述第一級子加法模組相連,僅編碼模組輸出第一部分積至部分積選擇模組。
若所述運算位寬為4bit,所述第一級子加法模組不與所述第二級子加法模組相連,所述第二級子加法模組和第三級子加法模組均不與所述部分
積選擇模組相連,所述第二級子加法模組和所述第三級子加法模組不輸出第二部分積;編碼模組選擇與第一級子加法模組相連,第一級子加法模組選擇與所述部分積選擇模組相連、輸出一級第二部分積。
若所述運算位寬為8bit,所述第二級子加法模組不與所述第三級子加法模組相連,所述第三級子加法模組不與所述部分積選擇模組相連、不輸出第二部分積;編碼模組選擇與第一級子加法模組相連,第一級子加法模組選擇與所述部分積選擇模組相連、輸出一級第二部分積;第一級子加法模組選擇與第二級子加法模組相連,第二級子加法模組選擇與所述部分積選擇模組相連、輸出二級第二部分積。
若所述運算位寬為16bit,編碼模組選擇與第一級子加法模組相連,第一級子加法模組選擇與所述部分積選擇模組相連、輸出一級第二部分積;第一級子加法模組選擇與第二級子加法模組相連,第二級子加法模組選擇與所述部分積選擇模組相連、輸出二級第二部分積;第二級子加法模組選擇與第三級子加法模組相連,第三級子加法模組選擇與所述部分積選擇模組相連、輸出三級第二部分積。
進一步的,所述乘數預處理模組還用於根據接收到的不同符號資訊將其接收到的乘數生成不同的編碼輸入值。所述不同符號資訊為有符號或無符號。
若符號資訊為乘數有符號和被乘數有符號時,則所述乘法器進行有符號乘數和有符號被乘數的乘法運算,乘數預處理模組將接收到的有符號的乘數生成有符號資訊的編碼輸入值,所述編碼模組根據有符號資訊的編碼輸入值生成不同的帶固定偏值的編碼值,並根據不同的帶固定偏值的編碼值將接
收到的有符號的被乘數進行運算,得到第一部分積。
具體的,所述帶固定偏值的booth編碼值的生成過程為,將根據有符號資訊的booth編碼輸入值生成的booth編碼輸入值中的符號位補0,例如,子編碼輸入值為100,對應生成的booth編碼為-2,將-2中的符號位補0,而不是使用負號的1來表述,所述符號位的位寬根據運算位寬來決定。使用這種設計節約硬體資源,降低邏輯延遲。此時,所述第一部分積包含輸出值和進位值,所述輸出值為根據編碼值得到的被乘數的一倍數或多倍數,所述進位值為根據編碼值得到的第一部分積的符號,即正符號或負符號。本實施例中,所述輸出值為根據帶固定偏值的booth編碼與其接收到的被乘數得到的乘積的非符號位來確定,所述進位值為根據帶固定偏值的booth編碼與其接收到的被乘數得到的乘積的符號位來確定。
進一步的,所述第二部分積包含輸出值和進位值,所述輸出值為根據編碼值得到的被乘數的一倍數或多倍數,所述進位值為根據第一部分積得到的第二部分積的符號,即正符號或負符號。
若符號資訊為乘數有符號和被乘數無符號時,乘法器的工作過程與符號資訊為乘數有符號和被乘數有符號時相同,區別僅在於,需要對被乘數進行符號位擴展,具體為根據運算位寬將乘數和被乘數的高位補0,使得所述被乘數與乘數的位寬相同,再進行乘法運算。
若符號資訊為乘數無符號和被乘數無符號時,則所述乘法器進行無符號乘數和無符號被乘數的乘法運算,乘數預處理模組將接收到的無符號的乘數生成無符號資訊的編碼輸入值,所述編碼模組根據無符號資訊的編碼輸入值生成不同的編碼值,並根據不同的編碼值將接收到的無符號的被乘數進行
運算,得到第一部分積。此外,在進行乘法運算時,將所述乘數和被乘數進行符號位擴展,具體為根據運算位寬將乘數和被乘數的高位補0,得到符號擴展位。
此外,此時所述編碼器中還包括符號擴展編碼子模組,用於對無符號乘數的符號擴展位進行編碼並輸出符號擴展位編碼值,並根據所述符號擴展位編碼值對被乘數進行運算。本實施例中,所述擴展編碼子模組為booth擴展編碼子模組,用於處理的子編碼輸入值僅為000或001,邏輯很簡單,資源佔用遠小於正常的booth編碼器,使用這種方式進行無符號乘法處理,有效節約了硬體資源。
所述部分積選擇模組140選擇性地從所述第一部分積和所述不同的第二部分積中選擇出與所述不同的運算位寬相對應的目標部分積並輸出,具體為:所述部分積選擇模組根據接收的輸出位寬,從所述第一部分積和所述不同的第二部分積中選擇出與接收的輸出位寬相同的部分積作為目標部分積並輸出。所述第二部分積包括多級第二部分積,在本實施例中,即為一級第二部分積、二級第二部分積和三級第二部分積。
進一步的,所述部分積選擇模組140包括第一部分積選擇子模組和第二部分積選擇子模組;所述第一部分積選擇子模組用於選擇性地從所述第一部分積輸出值和所述不同的第二部分積輸出值中選擇出與所述不同的輸出位寬相對應的部分積輸出值作為目標部分積輸出值並輸出;所述第二部分積選擇子模組用於選擇性地從所述第一部分積進位值和所述不同的第二部分積進位值中選擇出與所述不同的輸出位寬相對應的部分積進位值作為目標部分積進位值並輸出。如圖2所示,本實施例中,第一部分積選擇子模組和第二部分積選
擇子模組使用了多工器(MUX)選擇器。
結合圖2可知,本實施例中提出的乘法器中乘數預處理模組中有7個選擇器。編碼模組採用booth編碼實現乘法運算,booth編碼基數為4。加法模組採用Wallace tree實現加法預算,具有三級子加法模組,第一級子加法模組具有4個Wallace tree加法單元,第二級子加法模組具有2個Wallace tree加法單元,第三級子加法模組具有1個Wallace tree加法單元。部分積選擇模組使用2個MUX選擇器分別對第一部分積和不同的第二部分積的輸出值和進位值進行選擇。
使用本實施例中提出的乘法器進行1個16bit的乘法運算,即選擇運算位寬為16bit,乘數和被乘數均為16bit數,所述編碼基數為4,所述編碼輸入值每3位為一組,共分為8組。
所述乘數的16bit分別輸入圖2中編碼輸入值中的乘數位Bit0-Bit15,即8組編碼子輸入值中的兩個乘數位中,完成編碼輸入值中乘數位的賦值;所述第一組子編碼輸入值的最低位為固定0位,所述A-G七個選擇器根據運算位寬16bit分別進行選擇判斷,由於所述運算位寬16bit為七個選擇器預設的高運算位寬,因此七個選擇器均輸出所述選擇器所對應的子編碼輸入值的前一組子編碼輸入值中處於高位的乘數位作為所述選擇位,即七個選擇器分別輸出Bit1、Bit3、Bit5、Bit7、Bit9、Bit11、Bit13作為第二個子輸入值至第八組子編碼輸入值中的選擇位,完成編碼輸入值中選擇位的賦值;完成了乘數位和選擇位的賦值,即生成了包含8組子編碼輸入值的編碼輸入值,8組子編碼輸入值由高位至低位具體為:
第一組為:{bit1,bit0,0}。
第二組為{bit3,bit2,a},其中a為第A個選擇器產生的值,若為2bit位寬乘法,則A=0,若為4/8/16bit位寬乘法,則A=bit1;由於運算位寬為16bit,因此A=bit1。
第三組為{bit5,bit4,b},其中b為第B個選擇器產生的值,若為2/4bit位寬乘法,則B=0,若為8/16bit位寬乘法,則B=bit3;由於運算位寬為16bit,因此B=bit3。
第四組為{bit7,bit6,c},其中c為第C個選擇器產生的值,若為2bit位寬乘法,則C=0,若為4/8/16bit位寬乘法,則C=bit5;由於運算位寬為16bit,因此C=bit5。
第五組為{bit9,bit8,d},其中d為第D個選擇器產生的值,若為2/4/8bit位寬乘法,則D=0,若為16bit位寬乘法,則D=bit7;由於運算位寬為16bit,因此D=bit7。
第六組為{bit11,bit10,e},其中e為第E個選擇器產生的值,若為2bit位寬乘法,則E=0,若為4/8/16bit位寬乘法,則E=bit9;由於運算位寬為16bit,因此E=bit9。
第七組為{bit13,bit12,f},其中f為第F個選擇器產生的值,若為2/4bit位寬乘法,則F=0,若為8/16bit位寬乘法,則F=bit11;由於運算位寬為16bit,因此F=bit11。
第八組為{bit15,bit14,g},其中g為第G個選擇器產生的值,若為2bit位寬乘法,則G=0,若為4/8/16bit位寬乘法,則G=bit13。由於運算位寬為16bit,因此G=bit3。
所述編碼輸入值輸入至編碼模組,首先將被乘數根據子編碼輸
入值進行分解,使所述被乘數分解後與所述乘數位相對應,如圖2所示,即為按兩位一組對被乘數進行分解,得到多組子被乘數,本實施例中實際得到8組子被乘數,圖2中僅為示例性說明;通過子編碼輸入值對對應的子被乘數進行平行乘法運算,生成8個第一部分子積;輸出8個第一部分子積,每個第一部分子積為2bit乘數和2bit被乘數進行乘法運算得到的4bit部分積,8個第一部分子積即為第一部分積。
由於所述運算位寬16bit為所述第一級子加法模組的預設的加法位寬,因此所述編碼模組與所述第一級子加法模組相連接,第一級子加法模組與所述部分積選擇模組相連接,所述第一部分積輸入至第一級子加法模組中,第一級子加法模組中的4個Wallace tree加法單元分別對8個第一部分子積進行兩兩加法運算,輸出包含4組4bit加法的結果,即4組8bit部分積,即為一級第二部分積。
由於所述運算位寬16bit為所述第二級子加法模組的預設的加法位寬,因此所述第一級子加法模組與所述第二級子加法模組相連接,第二級子加法模組與所述部分積選擇模組相連接,所述一級第二部分積輸入至第二級子加法模組中,第二級子加法模組中的2個Wallace tree加法單元分別對一級第二部分積中的4組8bit部分積進行兩兩加法運算,輸出包含2組8bit加法的結果,即2組16bit部分積,即為二級第二部分積。
由於所述運算位寬16bit為所述第三級子加法模組的預設的加法位寬,因此所述第二級子加法模組與所述第三級子加法模組相連接,第三級子加法模組與所述部分積選擇模組相連接,所述二級第二部分積輸入至第三級子加法模組中,第三級子加法模組中的1個Wallace tree加法單元分別對二級第
二部分積中的2組16bit部分積進行兩兩加法運算,輸出包含1組16bit加法的結果,即1組32bit部分積,即為三級第二部分積。
所述編碼模組輸出2bit乘法結果、4bit部分積至所述部分積選擇模組,所述第一級子加法模組輸出4bit乘法結果、8bit部分積至所述部分積選擇模組,所述第二級子加法模組輸出8bit乘法結果、16bit部分積至所述部分積選擇模組,所述第三級子加法模組輸出16bit乘法結果、32bit部分積至所述部分積選擇模組。
所述部分積選擇模組根據通過位寬選擇模組選擇的輸出位寬,從第一部分積和多個第二部分積中選擇與輸出位寬相同的部分積作為目標部分積並輸出,即為從4bit部分積、8bit部分積、16bit部分積、32bit部分積中選擇與輸出位寬相同的部分積作為目標部分積並輸出。若輸出位寬為2bit,則選擇2bit部分積作為目標部分積並輸出;若輸出位寬為4bit,則選擇4bit部分積作為目標部分積並輸出;若輸出位寬為8bit,則選擇8bit部分積作為目標部分積並輸出;若輸出位寬為16bit,則選擇16bit部分積作為目標部分積並輸出;若輸出位寬為32bit,則選擇32bit部分積作為目標部分積並輸出。
本實施例中提出的乘法器,支持同時計算8組2bit×2bit運算,其每組結果為4bit資料,支援同時計算4組4bit×4bit運算,其每組結果為8bit資料,支援同時計算2組8bit×8bit運算,其每組結果為16bit資料,支援同時計算1組16bit×16bit運算,其每組結果為32bit資料。以上也可以發現,乘數為16bit,被乘數為16bit,兩個部分積各為32bit,無論採用哪種位寬,硬體上輸入、輸出的埠都是相容的。此外,在以上資料位寬的基礎上,還支援符號位的選擇,即支援乘數為有符號數,被乘數為有符號數;支援乘數為無符號數,
被乘數為有符號數;支援乘數為無符號數,被乘數為無符號數。
綜上,本實施例中提出的乘法器實現了對不同位寬乘法的運算,並輸出不同位寬的乘法目標部分積。
下面,根據圖3描述本發明另一實施例的乘法運算方法,該乘法運算方法可以採用前文記載的乘法器實現,具體可以參考前文相關記載,在此不作贅述。
如圖3所示,一種乘法運算方法,包括:
S1:根據不同的運算位寬將接收到的乘數生成不同的編碼輸入值;S2:根據不同的編碼輸入值生成不同的編碼值,並根據所述不同的編碼值與接收到的被乘數進行運算得到第一部分積;S3:根據所述不同的運算位寬將所述第一部分積進行對應次數的平行累加,生成不同的第二部分積;S4:根據接收到的輸出位寬選擇性地從所述第一部分積和所述不同的第二部分積中選擇出對應的部分積作為目標部分積並輸出。
進一步的,在步驟S1之前,還包括步驟S0:S0:選擇位寬模式,具體為選擇運算位寬和選擇輸出位寬,所述輸出位寬小於等於運算位寬。此外,步驟S0中,所述選擇位寬模式還包括選擇符號資訊。
步驟S1中,所述乘數預處理模組110根據不同的運算位寬將接收到的乘數生成不同的編碼輸入值,具體為根據所述不同的運算位寬和預設的編碼基數,將接收到的所述乘數生成依序放置的多組子編碼輸入值,第一組所述子編碼輸入值包括固定零位和乘數位,其餘組所述子編碼輸入值包括選擇位
和乘數位;根據所述乘數確定每組子編碼輸入值的乘數位;根據所述運算位寬確定每組子編碼輸入值的選擇位。
步驟S2中,所述編碼模組120根據不同的編碼輸入值生成不同的編碼值,本實施例中,所述編碼模組120使用一個booth編碼模組,即根據所述不同的編碼輸入值生成帶不同的固定偏值的不同的booth編碼值;其中,所述固定偏值與所述運算位寬相對應。
步驟S2中,所述據所述不同的編碼值與接收到的被乘數進行運算得到第一部分積,具體為:將所述被乘數根據子編碼輸入值進行分解,使所述被乘數分解後與所述乘數位相對應,在本實施例中,即為按兩位一組對被乘數進行分解,得到多組子被乘數;通過子編碼輸入值對對應的子被乘數進行平行乘法運算,生成多個第一部分子積;根據多個第一部分子積得到第一部分積。所述第一部分子積的數量與子編碼輸入值的組數相同且一一對應。
步驟S3中,所述加法模組130根據所述不同的運算位寬將所述第一部分積進行對應次數的平行累加,生成不同的第二部分積,具體為:判斷所述運算位寬是否與多級預設的加法位寬相同,若相同,則執行當前級累加運算,得到當前級第二部分積;否則,則不執行累加運算。在執行當前級累加運算時,具體為平行的執行多次累加運算,即為將每兩個第一部分子積進行累加或為將每兩個多級第二部分子積進行累加。本實施例中,所述多級第二部分子積包括一級第二部分子積、二級第二部分子積和三級第二部分子積。在本實施例中,所述累加使用Wallace tree方法進行。
步驟S4中,所述部分積選擇模組140選擇性地從所述第一部分積和所述不同的第二部分積中選擇出對應的部分積作為目標部分積並輸出,具
體為:所述部分積選擇模組根據接收的輸出位寬,從所述第一部分積和所述不同的第二部分積中選擇出與接收的輸出位寬相同的部分積作為目標部分積並輸出。所述第二部分積包括多級第二部分積,在本實施例中,即為一級第二部分積、二級第二部分積和三級第二部分積。
下面,參考圖4描述本發明另一實施例的運算裝置。
如圖4所示,所述運算裝置包括實施1中公開的乘法器,還包括目標部分積累加器和固定偏值修正器;所述目標部分積累加器用於將所述乘法器輸出的目標部分積進行累加運算,生成帶固定偏值的乘法結果;所述固定偏值修正器用於修正帶固定偏值的乘法結果的固定偏值,得到乘法結果。
可以理解的是,以上實施方式僅僅是為了說明本發明的原理而採用的示例性實施方式,然而本發明並不局限於此。對於本領域內的普通技術人員而言,在不脫離本發明的精神和實質的情況下,可以做出各種變型和改進,這些變型和改進也視為本發明的保護範圍。
100:乘法器
110:乘數預處理模組
120:編碼模組
130:加法模組
140:部分積選擇模組
Claims (10)
- 一種乘法器,包括: 一乘數預處理模組,根據一運算位寬及一乘數產生至少一編碼輸入值; 一編碼模組,根據該編碼輸入值產生至少一編碼值,並根據該編碼值與一被乘數進行運算得到至少一第一部分積; 一加法模組,根據該運算位寬將該第一部分積進行對應次數的累加,產生至少一第二部分積;以及 一部分積選擇模組,根據一輸出位寬選擇性地從該第一部分積和該第二部分積中選擇出對應的部分積作為目標部分積。
- 如請求項1之乘法器,其中,該乘數預處理模組根據該運算位寬和一預設的編碼基數,產生該編碼輸入值,其包括多組子編碼輸入值,該多組子編碼輸入值中至少一組子編碼輸入值包括一選擇位和一乘數位; 其中,該乘數預處理模組根據該乘數確定該乘數位,並根據該運算位寬確定該選擇位。
- 如請求項2之乘法器,其中,該乘數預處理模組還包括至少一個選擇器,該選擇器對應包含該選擇位及該乘數位的該組子編碼輸入值,根據該運算位寬選擇該選擇位。
- 如請求項3之乘法器,其中當該運算位寬為一預設的高運算位寬時,該選擇器根據該高運算位寬將所對應的該組子編碼輸入值的前一組子編碼輸入值中處於高位的乘數位作為該選擇位; 當該運算位寬為一預設的低運算位寬時,該選擇器根據該低運算位寬將一固定零位作為該選擇位。
- 如請求項1之乘法器,其中該編碼模組包括一booth編碼模組,其根據該編碼輸入值產生包括一固定偏值的booth編碼值; 其中,該固定偏值與該運算位寬相對應。
- 如請求項1之乘法器,其中該加法模組包括一第一級子加法模組、一第二級子加法模組和一第三級子加法模組; 其中,該編碼模組選擇性地與該第一級子加法模組和該部分積選擇模組相連; 該第一級子加法模組選擇性地與該第二級子加法模組和該部分積選擇模組相連; 該第二級子加法模組選擇性地與該第三級子加法模組和該部分積選擇模組相連; 該第三級子加法模組與該部分積選擇模組相連。
- 如請求項1之乘法器,其中該乘數預處理模組產生該編碼輸入值時更根據一接收到的符號資訊。
- 一種乘法運算方法,包括: 根據一運算位寬及一乘數產生至少一編碼輸入值; 根據該編碼輸入值產生至少一編碼值,並根據該編碼值與一被乘數進行運算得到至少一第一部分積; 根據該運算位寬將該第一部分積進行對應次數的累加,產生至少一第二部分積;以及 根據一輸出位寬選擇性地從該第一部分積和該第二部分積中選擇出對應的部分積作為目標部分積。
- 如請求項8之方法,其中該根據一運算位寬及一乘數產生至少一編碼輸入值的步驟中包括: 根據該運算位寬和一預設的編碼基數,產生該編碼輸入值,其包括多組子編碼輸入值,該多組子編碼輸入值中至少一組子編碼輸入值包括一選擇位和一乘數位; 其中,該乘數位係根據該乘數所確定,該選擇位依根據該運算位寬所確定。
- 如請求項8之方法,其中,該根據該編碼輸入值產生至少一編碼值的步驟中包括: 根據該編碼輸入值產生包括一固定偏值的booth編碼值,該固定偏值與該運算位寬相對應。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010322268.2 | 2020-04-22 | ||
CN202010322268.2A CN111522528B (zh) | 2020-04-22 | 2020-04-22 | 乘法器、乘法运算方法、运算芯片、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202141261A TW202141261A (zh) | 2021-11-01 |
TWI783295B true TWI783295B (zh) | 2022-11-11 |
Family
ID=71904394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109139769A TWI783295B (zh) | 2020-04-22 | 2020-11-13 | 乘法器及乘法運算方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210349692A1 (zh) |
CN (1) | CN111522528B (zh) |
TW (1) | TWI783295B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214199B (zh) * | 2020-09-11 | 2022-06-21 | 北京草木芯科技有限公司 | 256位乘法器 |
CN112114776B (zh) * | 2020-09-30 | 2023-12-15 | 本源量子计算科技(合肥)股份有限公司 | 一种量子乘法运算方法、装置、电子装置及存储介质 |
CN112527241B (zh) * | 2020-12-10 | 2023-08-08 | 深圳市紫光同创电子有限公司 | 并行有限域乘法装置 |
CN113010148B (zh) * | 2021-02-09 | 2022-11-11 | 南方科技大学 | 一种适用于混合精度神经网络的定点乘加运算单元及方法 |
WO2023015442A1 (zh) * | 2021-08-10 | 2023-02-16 | 华为技术有限公司 | 一种乘法器 |
CN114239819B (zh) * | 2021-12-24 | 2023-09-26 | 西安交通大学 | 一种基于dsp的混合位宽加速器及融合计算方法 |
CN114063975B (zh) * | 2022-01-18 | 2022-05-20 | 中科南京智能技术研究院 | 一种基于sram存内计算阵列的计算***及方法 |
CN116126282B (zh) * | 2022-12-21 | 2023-08-18 | 辉羲智能科技(上海)有限公司 | 自动驾驶辅助控制方法、***及其ai计算方法、装置 |
CN115857873B (zh) * | 2023-02-07 | 2023-05-09 | 兰州大学 | 乘法器、乘法计算方法、处理***及存储介质 |
CN116974514B (zh) * | 2023-07-21 | 2024-02-02 | 北京市合芯数字科技有限公司 | 位值计数电路装置、处理器芯片及位值计数方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010037352A1 (en) * | 1998-11-04 | 2001-11-01 | Hong John Suk-Hyun | Multiplier capable of multiplication of large multiplicands and parallel multiplications small multiplicands |
US20050246407A1 (en) * | 2000-01-13 | 2005-11-03 | Renesas Technology Corp. | High speed multiplication apparatus of Wallace tree type with high area efficiency |
TW200622865A (en) * | 2004-12-29 | 2006-07-01 | Ind Tech Res Inst | Booth array multiplier with bypass circuits |
US20090228540A1 (en) * | 2008-03-05 | 2009-09-10 | Nec Electronics Corporation | Filter operation unit and motion-compensating device |
CN102591615A (zh) * | 2012-01-16 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 结构化混合位宽乘法运算方法及装置 |
US20140164457A1 (en) * | 2012-12-07 | 2014-06-12 | Wave Semiconductor, Inc. | Extensible iterative multiplier |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6035318A (en) * | 1998-03-31 | 2000-03-07 | Intel Corporation | Booth multiplier for handling variable width operands |
CN104090737B (zh) * | 2014-07-04 | 2017-04-05 | 东南大学 | 一种改进型部分并行架构乘法器及其处理方法 |
CN110673823B (zh) * | 2019-09-30 | 2021-11-30 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法及芯片 |
-
2020
- 2020-04-22 CN CN202010322268.2A patent/CN111522528B/zh active Active
- 2020-11-13 TW TW109139769A patent/TWI783295B/zh active
-
2021
- 2021-01-12 US US17/146,946 patent/US20210349692A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010037352A1 (en) * | 1998-11-04 | 2001-11-01 | Hong John Suk-Hyun | Multiplier capable of multiplication of large multiplicands and parallel multiplications small multiplicands |
US20050246407A1 (en) * | 2000-01-13 | 2005-11-03 | Renesas Technology Corp. | High speed multiplication apparatus of Wallace tree type with high area efficiency |
TW200622865A (en) * | 2004-12-29 | 2006-07-01 | Ind Tech Res Inst | Booth array multiplier with bypass circuits |
US20090228540A1 (en) * | 2008-03-05 | 2009-09-10 | Nec Electronics Corporation | Filter operation unit and motion-compensating device |
CN102591615A (zh) * | 2012-01-16 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 结构化混合位宽乘法运算方法及装置 |
US20140164457A1 (en) * | 2012-12-07 | 2014-06-12 | Wave Semiconductor, Inc. | Extensible iterative multiplier |
Also Published As
Publication number | Publication date |
---|---|
TW202141261A (zh) | 2021-11-01 |
CN111522528A (zh) | 2020-08-11 |
CN111522528B (zh) | 2023-03-28 |
US20210349692A1 (en) | 2021-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI783295B (zh) | 乘法器及乘法運算方法 | |
CN110780845A (zh) | 一种用于量化卷积神经网络的可配置近似乘法器及其实现方法 | |
US6148313A (en) | Correlator method and apparatus | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN111488133B (zh) | 高基数近似布斯编码方法和混合基数布斯编码近似乘法器 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN112434801B (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
CN116400883A (zh) | 一种可切换精度的浮点乘加器 | |
CN109144473B (zh) | 一种基于冗余odds数的十进制3:2压缩器结构 | |
Jaberipur et al. | Efficient realisation of arithmetic algorithms with weighted collection of posibits and negabits | |
US10628124B2 (en) | Stochastic rounding logic | |
CN108256638B (zh) | 微处理器电路以及执行神经网络运算的方法 | |
CN112596699B (zh) | 乘法器、处理器及电子设备 | |
US20050228845A1 (en) | Shift and recode multiplier | |
CN110825346A (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN115840556A (zh) | 一种基于6位近似全加器的2组有符号张量计算电路结构 | |
US7840628B2 (en) | Combining circuitry | |
CN209879493U (zh) | 乘法器 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN112631546A (zh) | 基于ko-8算法的高性能模乘器 | |
CN112685001A (zh) | 一种Booth乘法器及其运算方法 | |
WO2023078364A1 (zh) | 矩阵乘法的运算方法及装置 | |
Bhongale et al. | Review on Recent Advances in VLSI Multiplier | |
CN116341632A (zh) | 一种基于并行加法树的二值化卷积神经网络计算电路 | |
CN114840173A (zh) | 一种混合概率逻辑的计算方法和装置 |