TWI877561B - 記憶體內計算裝置、記憶體裝置及布思成法方法 - Google Patents
記憶體內計算裝置、記憶體裝置及布思成法方法 Download PDFInfo
- Publication number
- TWI877561B TWI877561B TW112101189A TW112101189A TWI877561B TW I877561 B TWI877561 B TW I877561B TW 112101189 A TW112101189 A TW 112101189A TW 112101189 A TW112101189 A TW 112101189A TW I877561 B TWI877561 B TW I877561B
- Authority
- TW
- Taiwan
- Prior art keywords
- booth
- bit
- gate
- input
- output
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
- G06F7/508—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using carry look-ahead circuits
-
- 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
- G06F7/527—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
- G06F7/5272—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
- G06F7/5275—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products using carry save adders
-
- 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/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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一種記憶體內計算裝置可包括:布思編碼器,被配置成接收具有第一位元的至少一個輸入;布思解碼器,被配置成接收具有第二位元的至少一個權重並輸出所述至少一個輸入與所述至少一個權重的多個部分乘積;加法器,被配置成在布思解碼器生成所述多個部分乘積中的第三部分乘積之前將所述多個部分乘積中的第一部分乘積與所述多個部分乘積中的第二部分乘積相加,並生成多個部分乘積之和;以及進位預看加法器,被配置成將所述多個部分乘積之和相加並生成最終和。
Description
在本發明的實施例中闡述的技術涉及記憶體內計算裝置、記憶體裝置及布思成法方法。
記憶體內計算(compute-in-memory,CIM)技術藉由減少自儲存記憶體擷取資料以進行處理操作所導致的潛時(latency)來使得能夠對加載於主記憶體或快取中的資料進行較儲存記憶體中的資料更快的處理。相較於藉由主記憶體或快取與附近或更遠的處理硬體之間的通訊引起的潛時來處理在主記憶體或快取附近的資料或距主記憶體或快取更遠的資料而言,使用位於主記憶體或快取處的CIM硬體來處理資料使得能夠進行更快的處理。
數位CIM是以位元串列方式(bit-serial fashion)被處理。舉例而言,乘法-累加運算可由用於位元乘法的反或(NOR)閘及跟隨其後的用於累加的加法器樹(adder tree)構成。然而,位元串列操作可能是耗時的,此乃因計算可能需要的循環(cycle)
數目是輸入位元數目的函數。舉例而言,位元串列操作所需的循環數目可等於輸入位元數目。
典型的布思乘法器(Booth mulitiplier)可與產生最終乘積所需的多個級並列地進行操作。為了計算最終乘積,典型的布思乘法器可能需要在移位(shift)之前依序生成所有的部分和(partial sum),且可能會應用加法運算來產生最終乘積。因此,在CIM中實施布思乘法存在多重障礙。
本發明實施例提供一種記憶體內計算裝置。記憶體內計算裝置包括布思編碼器以及布思解碼器。布思編碼器被配置成接收具有第一位元的至少一個輸入。布思解碼器被配置成接收具有第二位元的至少一個權重並輸出至少一個輸入與至少一個權重的多個部分乘積。
本發明實施例提供一種記憶體裝置,包括記憶體內計算硬體。記憶體裝置包括布思編碼器以及布思解碼器。布思編碼器具有互斥或閘、互斥反或閘、第一反或閘、第二反或閘以及第三反或閘。互斥或閘在互斥或閘的輸入處耦合至第一資料輸入線及第二資料輸入線。互斥反或閘在互斥反或閘的輸入處耦合至第二資料輸入線及第三資料輸入線。第一反或閘在第一反或閘的輸入處耦合至互斥或閘的輸出及互斥反或閘的輸出。第二反或閘在第二反或閘的輸入處耦合至互斥或閘的輸出及第一反或閘的輸出。第三反或閘在第三反或閘的輸入處耦合至第二反或閘的輸出,且
在第三反或閘的反相輸入處耦合至第三資料輸入線。布思解碼器具有多個多工器以及多個加法器。多個多工器耦合至權重資料輸入線以及第三反或閘的輸出。多個加法器中的第一加法器耦合至多個多工器的子集的輸出、第一反或閘的輸出、第二反或閘的輸出及第三反或閘的輸出。
本發明實施例提供一種記憶體內計算裝置中的布思乘法方法。記憶體內計算裝置中的布思乘法方法包括:由記憶體內計算裝置的布思編碼器對多個輸入資料子集進行布思編碼,從而生成多個布思編碼訊號;以及由記憶體內計算裝置的布思解碼器對權重進行操作,從而生成部分乘積的一部分,其中用於對權重進行操作的操作是由多個布思編碼訊號來指定。
1x:第一中間訊號
2x:第二中間訊號
100:記憶體/記憶體系統
102、108a、108b、108n:記憶體單元
104a、104b、104n:記憶體晶片
106a、106b、106n:儲存體
110a、110b、110n:記憶陣列
112a、112b、112n、500:CIM硬體
200:輸入資料
202、204:子集/輸入子集/輸入資料子集/位元子集/3位元子集
206、300、704:布思編碼器
208:布思編碼訊號
302:互斥或閘
304:第一反或閘
306:第二反或閘
308:互斥反或閘
310:第三反或閘
400:表
502a、502b、502c、502d:暫存器
504a:多工器/第一多工器
504b、504c、504d:多工器
506a:加法器/第一加法器
506b:加法器
508:加法器/移位器
600a、600b、600c、600d、600e:反相器
602a、602b、602c:傳輸閘
604a、604b、604c:反或閘
606:加法器組件
608:移位器
700:布思乘法器/CIM硬體
702:布思演算法硬體
706:布思解碼器
708:壓縮器
710:進位預看加法器
800:方法
802、804、806、808、810、812、814、816、818、820、822:步驟
900:實例/無線裝置
902、1004:處理器
904:觸控螢幕控制器
906:記憶體/內部記憶體
908:收發機/無線電訊號收發機
910:天線
912:觸控螢幕面板
914:揚聲器
916:蜂巢式網路無線數據機晶片
918:周邊裝置連接介面
920:外殼
922:電源
1000:實例/電腦/膝上型電腦
1012:記憶體/內部記憶體/揮發性記憶體
1013:磁碟驅動機/內部記憶體
1014:軟碟驅動機
1016:光碟(CD)驅動機
1017:觸控墊觸控表面
1018:鍵盤
1019:顯示器
1100:伺服器
1101:處理器/多核心處理器組合件
1102:記憶體/內部記憶體/揮發性記憶體
1103:網路存取埠
1104:磁碟驅動機
1105:網路
1106:數位多功能光碟(DVD)驅動機
BE:位元/布思編碼位元
BE[i]、BE[i+1]、BE[i+2]、BE[i+3]:布思編碼位元
CIN:位元/輸入/進位輸入
ENB:位元/賦能位元
ENB[i]、ENB[i+1]、ENB[i+2]、ENB[i+3]:賦能位元
PSUM0:部分和
S:選擇位元/選擇訊號
S[i]、S[i+1]、S[i+2]、S[i+3]:選擇訊號
VDD:電源電壓
W:權重資料
W0、W1、W2、W3:權重資料/輸入權重資料
X0:位元/最低有效位元
X1、X2、X3:位元
X2i-1:位元/第一個位元
X2i:位元/第二個位元
X2i+1:位元/第三個位元
藉由結合附圖閱讀以下詳細說明,會最佳地理解本揭露的態樣。應注意,根據行業中的標準慣例,各種特徵並非按比例繪製。事實上,為使論述清晰起見,可任意增大或減小各種特徵的尺寸。
圖1是示出適合於實施各種實施例的採用記憶體內計算(CIM)技術的記憶體的組件方塊圖。
圖2是示出適合於實施各種實施例的用於CIM中的布思乘法的輸入資料布思編碼的組件方塊圖。
圖3是示出適合於實施各種實施例的用於CIM中的布思乘法
的布思編碼器的示意電路圖。
圖4是示出適合於實施各種實施例的用於CIM中的布思乘法的輸入資料布思編碼的表。
圖5是示出適合於實施各種實施例的用於CIM中的布思編碼輸入資料的布思乘法的電路系統的示意電路圖。
圖6是示出適合於實施各種實施例的用於CIM中的布思乘法的布思解碼器的示意電路圖。
圖7是示出適合於實施各種實施例的CIM中的布思乘法器的組件方塊圖。
圖8是示出根據實施例的CIM中的布思乘法的方法的過程流程圖。
圖9是適合於與各種實施例一起使用的實例性行動計算裝置的組件方塊圖。
圖10是適合於與各種實施例一起使用的實例性計算裝置的組件方塊圖。
圖11是示出適合於與各種實施例一起使用的實例性伺服器的組件方塊圖。
以下揭露內容提供用於實施所提供標的物的不同特徵的諸多不同實施例或實例。以下闡述組件及佈置的具體實例以簡化本揭露。當然,該些僅為實例且不旨在進行限制。舉例而言,在以下說明中將第一元件、第一組件及/或第一特徵形成於第二元
件、第二組件及/或第二特徵之上或上可包括其中第一元件、第一組件及/或第一特徵與第二元件、第二組件及/或第二特徵直接接觸形成的實施例,且亦可包括其中第一特徵與第二特徵之間形成有附加元件、附加組件及/或附加特徵的實施例,進而使得第一元件、第一組件及/或第一特徵與第二元件、第二組件及/或第二特徵不直接接觸。另外,本揭露可能在各種實例中重複使用參考編號及/或字母。此種重複使用是出於簡潔及清晰的目的,而不是自身表示所論述的各種實施例及/或配置之間的關係。
此外,為易於說明,本文中可能使用例如「位於...之下(beneath)」、「位於...下方(below)」、「下部的(lower)」、「位於...上方(above)」、「上部的(upper)」及類似用語等空間相對性用語來闡述一個元件、組件及/或特徵與圖中所示的另一元件、組件及/或特徵的關係。所述空間相對性用語旨在除圖中所繪示的定向外亦囊括裝置在使用或操作中的不同定向。設備及/或裝置可具有其他定向(旋轉90度或處於其他定向),且本文中所使用的空間相對性描述語可同樣相應地進行解釋。除非另有明確陳述,否則具有相同參考編號的每一元件、組件及/或特徵指代相同的元件、組件及/或特徵,且具有相同的材料組成及處於同一厚度範圍內的厚度。
除非另有闡述,否則用語「處理器」、「處理器核心」、「控制器「 」及「控制單元」在本文中可互換使用,以指代軟體配置式處理器、硬體配置式處理器、通用處理器、專用處理器、單核
心處理器、同構多核心處理器、異構多核心處理器、多核心處理器的核心、微處理器、中央處理單元(central processing unit,CPU)、圖形處理單元(graphics processing unit,GPU)、數位訊號處理器(digital signal processor,DSP)等、控制器、微控制器、現場可程式化閘陣列(field programmable gate array,FPGA)、特殊應用積體電路(application-specific integrated circuit,ASIC)、其他可程式化邏輯裝置、分立的閘邏輯、電晶體邏輯及類似裝置中的任一者或所有者。處理器可為積體電路,其可被配置成使得所述積體電路的組件駐留於單片半導體材料(例如矽)上。
除非另有闡述,否則本文中所使用的用語「記憶體」指代快取、主記憶體、隨機存取記憶體(random-access memory,RAM)、快閃記憶體、固態記憶體及類似記憶體中的任一者或所有者,所述隨機存取記憶體(RAM)包括動態隨機存取記憶體(dynamic RAM,DRAM)、同步動態隨機存取記憶體(synchronous DRAM,SDRAM)、靜態隨機存取記憶體(static RAM,SRAM)、鐵電隨機存取記憶體(ferroelectric RAM,FeRAM)、電阻式隨機存取記憶體(resistive RAM,RRAM)、磁阻式隨機存取記憶體(magnetoresistive RAM,MRAM)、相變隨機存取記憶體(phase-change RAM,PCRAM)等的任意變型。
數位CIM是以位元串列方式被處理。舉例而言,乘法-累加運算可由用於位元乘法的反或閘及跟隨其後的用於累加的加法器樹構成。然而,位元串列操作可能是耗時的,此乃因計算可
能需要的循環數目是輸入位元數目的函數。舉例而言,位元串列操作所需的循環數目可等於輸入位元數目。
典型的布思乘法器可與產生最終乘積所需的多個級並列地進行操作。布思乘法器根據布思演算法的原理進行操作,所述布思演算法將以2補數記法(2’s complement notation)表示的兩個有符號二進制數相乘。作為二進制乘法中的典型,布思演算法生成被乘數與乘數相乘的部分乘積,所述部分乘積被移位並求和以產生最終乘積。布思演算法使用基於乘數的位元群組的值的規則來確定使用被乘數來生成所述部分乘積的操作。基於每一位元群組的操作可由典型的布思乘法器藉由將被乘數及乘數的位元輸入至反或閘中並將結果輸出至生成部分和的加法器來串列地實施。為了計算最終乘積,典型的布思乘法器可能需要在移位之前依序生成所有的部分和,且可能會應用加法運算來產生最終乘積。此可能會使對資料的處理顯著延遲且會降低計算速度。因此,在CIM中實施布思乘法存在多重障礙。
本文中所闡述的各種實施例克服了前述障礙,且能夠在計算速度及成本方面較典型的布思乘法器實施方式有所改善。本文中所闡述的各種實施例包括用於實施用於CIM的布思乘法器的裝置及方法。各種實施例可包括CIM中的布思乘法器,其被配置成實施布思編碼及多循環部分乘積生成(multi-cycle partial product generation),從而能夠相較於典型的布思乘法器實施方式而言降低硬體複雜度且能夠減小晶片面積。
布思乘法器可包括被配置成實施布思編碼的布思編碼器。為了清晰及易於闡釋,本文中可揭露與用於4位元乘法的3位元布思編碼的實例相關的各種實施例。然而,此種說明並非旨在限制申請專利範圍及授權揭露的範圍。熟習此項技術者應認識到,本文中的揭露可相似地應用於更大位元大小或更小位元大小的布思編碼。將布思編碼實施為數位CIM的乘法模式可用自輸入資料(例如,0、1、-1、2、-2)及權重資料導出的值的乘法來代替輸入資料與權重資料的乘法,其中所述值是由藉由對輸入資料的輸入序列進行編碼(例如,3位元編碼)而生成的布思編碼(Booth encoded,BE)訊號來表示。可在CIM中實施多工器/移位器,且可將所述多工器/移位器配置成計算多個布思編碼訊號與權重資料的乘法結果的部分和。相較於利用典型的布思乘法器實施方式在產生最終乘積之前生成布思乘法的所有部分乘積而言,CIM中的布思乘法器可使得能夠藉由使用部分和來生成部分乘積以及在若干循環內對部分乘積進行求和而達成布思乘法的串列模式。
相較於典型的布思乘法器實施方式而言,本文中所闡述的CIM中的布思乘法器的各種實施例可使得能夠減少計算所需的循環數目。舉例而言,在典型的布思乘法器實施方式可能需要p個循環來執行乘法(其中「p」是輸入位元數目)的情況下,本文中所揭露的CIM中的布思乘法器的各種實施例可在p/2個循環中對有符號輸入執行乘法,而在p/2+1個循環中對無符號計算執行乘法。本文中所揭露的各種實施例相對於典型布思乘法器實施方
式的其他優點可包括每面積增加每秒兆(或太)次運算(trillions/tera operations per second,TOPS)的能力。舉例而言,相較於N5數位實施方式(即,基於典型的位元串列操作,其中使用反或閘來進行逐位元乘法,隨後使用自5位元加法器開始的加法器樹,此乃因計算是基於使用4位元權重的情況而進行)而言,CIM中的布思乘法器可將無符號4位元輸入的TOPS/平方毫米增加近似10%,而將有符號計算增加近似60%。相較於典型的布思乘法器實施方式而言,本文中所揭露的CIM中的布思乘法器的各種實施例可降低整體硬體複雜度,且可提高CIM中的面積效率。
圖1示出適合於實施各種實施例的採用CIM技術的實例性記憶體100。儘管圖1示出記憶體100的一個實例,然而熟習此項技術者可認識到,可添加附加組件及/或元件,且可移除現有的組件及/或元件。相似地,任何此種附加的組件及/或元件以及現有的組件及/或元件可被組合及/或以其他方式佈置。另外,記憶體100可形成另一計算裝置或系統的一部分或者被整合於另一計算裝置或系統中,下文參照圖9至圖11闡述其實例。
如圖1中所示,在一些實施例中,記憶體100可包括一或多個記憶體單元102。記憶體單元102可包括任意數目的記憶體晶片104a至記憶體晶片104n。記憶體晶片104a至記憶體晶片104n中的每一者可包括具有任意數目的儲存體106a至儲存體106n的記憶體單元108a至記憶體單元108n。儲存體106a至儲存體106n中的每一者可包括記憶陣列110a至記憶陣列110n以及CIM硬體
112a至CIM硬體112n。每一記憶陣列110a至110n可包括被配置成儲存資料的以行及列佈置的各別的記憶胞(memory cell)。儲存體106a至儲存體106n中的每一者可包括CIM硬體112a至CIM硬體112n,CIM硬體112a至CIM硬體112n被配置成利用儲存於儲存體106a至儲存體106n及/或記憶陣列110a至記憶陣列110n中的資料來實施操作,如本文中參照圖2至圖8所進一步闡述。在一些實施例中,每組儲存體106a至106n中的單一儲存體可橫跨多個記憶體晶片104a至104n來實施。換言之,單一儲存體可為多組儲存體106a至106n的一部分。因此,儲存體106a至儲存體106n中的每一者的記憶陣列110a至記憶陣列110n以及CIM硬體112a至CIM硬體112n亦可橫跨所述多個記憶體晶片104a至104n來實施。
圖2至圖4示出CIM硬體112a至CIM硬體112n中的布思編碼器206、布思編碼器300的功能及結構的實例。參照圖1至圖4,布思編碼器206、布思編碼器300可為本文中參照圖3所進一步闡述的佈置於CIM硬體112a至CIM硬體112n中的一或多個硬體組件,且被配置成對輸入資料200進行布思編碼以用於本文中參照圖2至圖8所進一步闡述的在CIM硬體112a至CIM硬體112n中執行的布思乘法運算。為了易於闡釋及為清晰起見,本文中所闡述的實例指代單一的布思編碼器206、300。然而,在各種實施例中,如本文中所進一步闡述,可在CIM硬體112a至CIM硬體112n中採用多個布思編碼器206、300來生成多個布思編碼
訊號208。
圖2示出適合於實施各種實施例的用於CIM中的布思乘法的輸入資料布思編碼的實例。參照圖1及圖2,布思編碼器206可被配置成將輸入資料200轉換成布思編碼訊號208。布思編碼器206可在各種循環中對輸入資料200進行編碼,在所述各種循環中,布思編碼器206可對輸入資料200的子集202、子集204進行編碼。對輸入資料200進行布思編碼可藉由將輸入資料轉換成與在CIM硬體112a至CIM硬體112n中執行布思乘法的有限數目個操作相關聯的布思編碼訊號208來簡化輸入資料200。如本文中進一步闡述,布思編碼器206可為具有被配置成將子集202、子集204轉換成布思編碼訊號208的邏輯組件(例如,圖3中的布思編碼器300)的電路。如本文中所進一步闡述,布思編碼訊號208可被配置成控制CIM硬體112a至CIM硬體112n的被配置用於實施布思乘法器的其他部分,從而例如確定所述布思乘法器執行並產生部分和的操作。在一些實施例中,輸入資料200的子集202、子集204可交疊(overlap)。在一些實施例中,子集202、子集204可以位元位置為中心,並包括緊接於所述位元位置之前的位元位置及緊接於所述位元位置之後的位元位置。對於以輸入資料200的最低有效位元(least significant bit)為中心的子集202,可將「0」位元添加至輸入資料200,以填充緊接於所述最低有效位元之前的位元位置。
圖2中示出3位元布思編碼的非限制性實例,所述3位
元布思編碼對輸入資料200的3位元子集202、3位元子集204進行編碼。由CIM硬體112a至CIM硬體112n執行的乘法運算可為輸入資料200與權重資料(未示出)的乘法。輸入資料200可為任何位元長度「p」,進而使得輸入資料200可包括位元Xp-1、...、X0。在圖2中所示實例中,輸入資料200為4個位元,且p=4。布思編碼器206可在各種循環中對輸入資料200的3位元子集202、3位元子集204進行編碼。每一子集202、204可用於生成布思編碼訊號208。舉例而言,輸入資料200可包括位元X3、位元X2、位元X1、位元X0。可將「0」位元添加至輸入資料200,例如,附加至最低有效位元X0,以使得輸入資料200可包括位元X3、位元X2、位元X1、位元X0、0。可添加「0」位元以填充以最低有效位元X0為中心的子集202。在此實例中,用於3位元布思編碼的子集202、子集204可各自包括以一位元位置為中心的位元,所述位元位置包括緊接於所述位元位置之前的位元位置及緊接於所述位元位置之後的位元位置。每一連續的子集202、204可以前一子集202、204之後的位元位置為中心。舉例而言,子集202、子集204可被表達為位元X2i+1、位元X2i及位元X2i-1,其中「i」可為循環迭代數目。對於第一循環(例如,i=0),可能不存在X2i-1位元,此乃因可能不存在相較於最低有效位元X0而言的較低有效位元,且可改為使用附加至最低有效位元X0的「0」位元。由於連續的子集202、204以在前一子集202、204之後的位元位置為中心,因此連續的子集202、204的最低有效位元可能與前一子集202、
204的最高有效位元(most significant bit)交疊。換言之,連續的子集202、204的X2i-1位元與前一子集202、204的X2i+1位元可在連續迭代中交疊(例如,位元X2i-1(其中i=1)與位元X2i+1(其中i=0)二者均為X1位元)。因此,布思編碼器206可在連續迭代中對先前未經編碼的輸入資料200的2個位元(例如,位元X2i+1、位元X2i)及先前已經編碼的輸入資料200的1個位元(例如,位元X2i+1)進行編碼。
布思編碼器206可自輸入資料200的子集202、子集204生成布思編碼訊號208,布思編碼訊號208可代表被配置成控制CIM硬體112a至CIM硬體112n來實施用於在CIM硬體112a至CIM硬體112n中執行布思乘法的相關聯操作的指定值。如本文中所進一步闡述,布思編碼器206可為具有被配置成將子集202、子集204轉換成布思編碼訊號208的邏輯組件(例如,圖3中的布思編碼器300)的電路。布思編碼訊號208可為3位元訊號,所述3位元訊號的每一位元被配置成代表對CIM硬體112a至CIM硬體112n的指令。CIM硬體112a至CIM硬體112n可接收布思編碼訊號208,且CIM硬體112a至CIM硬體112n的組件(例如,圖5及圖6中的多工器504a、多工器504b、多工器504c、多工器504d及加法器506a、加法器506b)可藉由實施相依於布思編碼訊號208的位元的值的操作來對布思編碼訊號208作出響應(例如,如圖4中的表400中所示)。
舉例而言,布思編碼器206可例如藉由指示在CIM硬體
112a至CIM硬體112n中進行邏輯閘控操作以達成乘法結果而自位元「111」及/或「000」的子集202、子集204生成可代表用於與權重資料(“W”)相乘的「0」值的布思編碼訊號208。在CIM硬體112a至CIM硬體112n中進行邏輯閘控可阻止權重資料的位元在CIM硬體112a至CIM硬體112n中傳播而導致「低(low)」訊號或「0」訊號代替所述權重資料,從而有效地將所述權重資料乘以「0」值。
布思編碼器206可例如藉由指示在CIM硬體112a至CIM硬體112n中進行權重資料直接映射操作以達成乘法結果而自位元「001」及/或「010」的子集202、子集204生成可代表用於與權重資料相乘的「1」值的布思編碼訊號208。在CIM硬體112a至CIM硬體112n中進行直接映射可能夠使得權重資料的位元在CIM硬體112a至CIM硬體112n中不變地傳播而產生代表不變權重資料的訊號,從而有效地將所述權重資料乘以「1」值。
布思編碼器206可例如藉由指示在CIM硬體112a至CIM硬體112n中進行權重資料直接映射操作及對權重資料的左移位操作(例如,在加法器中左移位1位元)以達成乘法結果而自位元「011」的子集202、子集204生成可代表用於與權重資料相乘的「2」值的布思編碼訊號208。在CIM硬體112a至CIM硬體112n中對直接映射權重資料進行左移位可將權重資料的位元移位一定的量,所述量會改變權重資料的所述位元,從而產生代表權重資料乘以「2」值的訊號。
布思編碼器206可例如藉由指示在CIM硬體112a至CIM硬體112n中進行權重資料反相操作、在反相權重資料的最低有效位元處添加「1」值的操作以及對和的左移位操作(例如,在加法器中左移位1位元)以達成乘法結果而自位元「100」的子集202、子集204生成可代表用於與權重資料相乘的「-2」值的布思編碼訊號208。在CIM硬體112a至CIM硬體112n中對權重資料的位元進行反相以及在權重資料的反相位元的最低有效位元處添加「1」值可產生代表權重資料負符號版本的訊號,從而有效地將所述權重資料乘以「-1」值。在CIM硬體112a至CIM硬體112n中對權重資料負符號版本進行左移位可將權重資料負符號版本的位元移位一定的量,所述量會改變權重資料負符號版本的位元,從而產生代表權重資料負符號版本乘以「2」值的訊號。該些操作總起來可產生代表權重資料乘以「-2」值的訊號。
布思編碼器206可例如藉由指示在CIM硬體112a至CIM硬體112n中進行權重資料反相操作以及在反相權重資料的最低有效位元處添加「1」值的操作以達成乘法結果而自位元「101」及/或「110」的子集202、子集204生成可代表用於與權重資料相乘的「-1」值的布思編碼訊號208。在CIM硬體112a至CIM硬體112n中對權重資料的位元進行反相以及在權重資料的反相位元的最低有效位元處添加「1」值可產生代表權重資料負符號版本的訊號,從而有效地將所述權重資料乘以「-1」值。
相較於逐位元乘法而言,用於4位元乘法的3位元布思
編碼可將乘法的處理時間減少近似一半。3位元布思編碼可利用兩個3位元子集202、204在2個循環中對輸入資料200進行編碼,以生成被配置成控制CIM硬體112a至CIM硬體112n以達成乘法結果的布思編碼訊號208,而非如逐位元乘法中一樣在4個循環中將輸入資料200的每一位元乘以權重資料。
圖3示出符合各種實施例的適合的用於CIM中的布思乘法的布思編碼器300(例如,布思編碼器206)的實施方式的示意電路圖。參照圖1至圖3,布思編碼器300可包括於CIM硬體112a至CIM硬體112n中,例如耦合至如本文中所進一步闡述的布思乘法器。
圖3中示出用於對輸入資料200的3位元子集202、3位元子集204進行編碼的3位元布思編碼(如本文中例如參照圖2所闡述)的3位元布思編碼器300的非限制性實例。在一些實施例中,多個3位元布思編碼器300可耦合至4位元布思乘法器。布思編碼器300可包括輸入位元線,所述輸入位元線被配置成載送代表輸入資料200的子集202、子集204的位元(例如,如參照圖2所闡述的位元X2i+1、X2i及X2i-1)的訊號。載送代表子集202、子集204的第一個位元(例如X2i-1)的第一訊號的第一輸入位元線及載送代表子集202、子集204的第二個位元(例如X2i)的第二訊號的第二輸入位元線可耦合至互斥或(“exclusive OR,XOR”)閘302的輸入端。互斥或閘302可接收第一訊號及第二訊號作為輸入,並生成輸出作為第一中間訊號(“1x”)。第二位元線及載送
代表子集202、子集204的第三個位元(例如,X2i+1)的第三訊號的第三位元線可耦合至互斥反或(“exclusive NOR,XNOR”)閘308的輸入端。互斥反或閘308可接收第二訊號及第三訊號作為輸入,並生成輸出作為第二中間訊號(“2x”)。
第一反或閘304可耦合至互斥或閘302的輸出端及互斥反或閘308的輸出端,以接收第一中間訊號1x及第二中間訊號2x作為第一反或閘304的輸入。因此,第一反或閘304可自互斥或閘302接收第一中間訊號1x作為輸入且自互斥反或閘308接收第二中間訊號2x作為輸入。第一反或閘304可生成輸出作為布思編碼位元(“BE”)。
第二反或閘306可耦合至互斥或閘302的輸出端以接收第一中間訊號1x作為輸入以及耦合至第一反或閘304的輸出端以接收布思編碼位元BE作為第二反或閘306的輸入。因此,第二反或閘306可自互斥或閘302接收第一中間訊號1x作為輸入且自第一反或閘304接收布思編碼位元BE作為輸入。第二反或閘306可生成輸出作為賦能位元(“ENB”)。
第三反或閘310可在第三反或閘310的輸入端處耦合至第二反或閘306的輸出端,以接收ENB作為輸入。第三反或閘310亦可在反相輸入端處耦合至第三位元線,以接收第三位元線的反相版本作為輸入。舉例而言,可將反相輸入端耦合於第三位元線與第三反或閘310的輸入端之間。因此,第三反或閘310可自第二反或閘306接收賦能位元ENB作為輸入且自第三位元線接收代
表子集202、子集204的第三位元的反相版本的第三訊號作為輸入。在一些實施例中,第三反或閘310可對第三訊號進行反相。在一些實施例中,第三反或閘310可自反相器接收反相第三訊號。第三反或閘310可生成輸出作為選擇位元(“S”)。
布思編碼器300可自輸入資料200的子集202、子集204生成並輸出布思編碼訊號208。布思編碼訊號208可為二進制位元的任意組合。舉例而言,布思編碼訊號208可為3位元布思編碼訊號208。布思編碼訊號208可包括所述賦能位元、所述布思編碼位元及所述選擇位元。
參照圖1至圖4,圖4中示出適合於實施各種實施例的用於CIM中的布思乘法的輸入資料200的子集202、子集204(例如,X2i+1、X2i及X2i-1)的布思編碼的表400的非限制性實例,所述布思編碼會生成包括賦能位元(“ENB”)、布思編碼位元(“BE”)及選擇位元(“S”)的布思編碼訊號208。圖4中所示實例可由布思編碼器206、布思編碼器300來實施。
在圖4中所示實例中,接收位元「000」及/或「111」的子集202、子集204的布思編碼器206、布思編碼器300可例如藉由在CIM硬體112a至CIM硬體112n中進行邏輯閘控操作以達成乘法結果來生成並輸出位元「100」的布思編碼訊號208(例如,ENB、BE、S),布思編碼訊號208可被配置成使CIM硬體112a至CIM硬體112n的其他部分執行「0」值與權重資料(“W”)的乘法。CIM硬體112a至CIM硬體112n可被配置成闡述位元「100」
的布思編碼訊號208/由位元「100」的布思編碼訊號208控制,以實行對權重資料的邏輯閘控。在CIM硬體112a至CIM硬體112n中進行邏輯閘控可阻止權重資料的位元在CIM硬體112a至CIM硬體112n中傳播而導致「低」訊號或「0」訊號代替所述權重資料,從而有效地將所述權重資料乘以「0」值。
接收位元「001」及/或位元「010」的子集202、子集204的布思編碼器206、布思編碼器300可例如藉由在CIM硬體112a至CIM硬體112n中進行權重資料直接映射操作以達成乘法結果來生成並輸出位元「000」的布思編碼訊號208,布思編碼訊號208可被配置成使CIM硬體112a至CIM硬體112n的其他部分執行「1」值與權重資料的乘法。CIM硬體112a至CIM硬體112n可被配置成闡釋位元「000」的布思編碼訊號208/由位元「000」的布思編碼訊號208控制,以實行對權重資料的直接映射。在CIM硬體112a至CIM硬體112n中進行直接映射可能夠使得權重資料的位元在CIM硬體112a至CIM硬體112n中不變地傳播而產生代表不變權重資料的訊號,從而有效地將所述權重資料乘以「1」值。
接收位元「011」的子集202、子集204的布思編碼器206、布思編碼器300可例如藉由在CIM硬體112a至CIM硬體112n中進行權重資料直接映射操作及對權重資料的左移位操作(例如,在加法器中左移位1位元)以達成乘法結果來生成並輸出位元「010」的布思編碼訊號208,布思編碼訊號208可被配置成使CIM硬體112a至CIM硬體112n的其他部分執行「2」值與權重資料的乘法。
CIM硬體112a至CIM硬體112n可被配置成闡釋位元「010」的布思編碼訊號208/由位元「010」的布思編碼訊號208控制,以實行對權重資料的直接映射及移位。在CIM硬體112a至CIM硬體112n中對直接映射權重資料進行左移位可將權重資料的位元移位一定的量,所述量會改變權重資料的位元,從而產生代表所述權重資料乘以「2」值的訊號。
接收位元「100」的子集202、子集204的布思編碼器206、布思編碼器300可例如藉由在CIM硬體112a至CIM硬體112n中進行權重資料反相操作、在反相權重資料的最低有效位元處添加「1」值的操作以及對和的左移位操作(例如,在加法器中左移位1位元)以達成乘法結果來生成並輸出位元「011」的布思編碼訊號208,布思編碼訊號208可被配置成使CIM硬體112a至CIM硬體112n的其他部分執行「-2」值與權重資料的乘法。CIM硬體112a至CIM硬體112n可被配置成闡釋位元「011」的布思編碼訊號208/由位元「011」的布思編碼訊號208控制,以實行對權重資料的反相、對權重資料的添加及對權重資料的移位。在CIM硬體112a至CIM硬體112n中對權重資料的位元進行反相以及在權重資料的反相位元的最低有效位元處添加「1」值可產生代表權重資料負符號版本的訊號,從而有效地將所述權重資料乘以「-1」值。在CIM硬體112a至CIM硬體112n中對權重資料負符號版本進行左移位可將權重資料負符號版本的位元移位一定的量,所述量會改變權重資料負符號版本的位元,從而產生代表權重資料負符號
版本乘以「2」值的訊號。該些操作總起來可產生代表所述權重資料乘以「-2」值的訊號。
接收位元「101」及/或「110」的子集202、子集204的布思編碼器206、布思編碼器300可例如藉由在CIM硬體112a至CIM硬體112n中進行權重資料反相操作及在反相權重資料的最低有效位元處添加「1」值的操作以達成乘法結果來生成並輸出位元「001」的布思編碼訊號208,布思編碼訊號208可被配置成使CIM硬體112a至CIM硬體112n的其他部分執行「-1」值與權重資料的乘法。CIM硬體112a至CIM硬體112n可被配置成闡釋位元「001」的布思編碼訊號208/由位元「001」的布思編碼訊號208控制,以實行對權重資料的反相及對權重資料的添加。在CIM硬體112a至CIM硬體112n中對權重資料的位元進行反相以及在權重資料的反相位元的最低有效位元處添加「1」值可生成代表權重資料負符號版本的訊號,從而有效地將所述權重資料乘以「-1」值。
圖5示出適合於實施各種實施例的用於CIM中的布思乘法的CIM硬體500的實例。參照圖1至圖5,CIM硬體500可包括於CIM硬體112a至CIM硬體112n中,例如耦合至如本文中所進一步闡述的布思編碼器206、布思編碼器300。
圖5中示出CIM硬體500的非限制性實例,CIM硬體500被配置成作為4位元布思乘法器的一部分而被包括。CIM硬體500可包括4個暫存器502a、502b、502c、502d、4個多工器504a、504b、504c、504d以及3個加法器506a、506b、508。
每一暫存器502a、暫存器502b、暫存器502c、暫存器502d可耦合至多工器504a、多工器504b、多工器504c、多工器504d。在一些實施例中,暫存器502a、暫存器502b、暫存器502c、暫存器502d可包括多個輸出,例如非反相輸出(或輸出)及反相輸出。每一暫存器502a、暫存器502b、暫存器502c、暫存器502d可經由所述輸出及所述反相輸出中的一或多者耦合至多工器504a、多工器504b、多工器504c、多工器504d的一或多個輸入。在一些實施例中,暫存器502a、暫存器502b、暫存器502c、暫存器502d的輸出與多工器504a、多工器504b、多工器504c、多工器504d的輸入之間可耦合有反相器,以產生所述反相輸出。每一暫存器502a、暫存器502b、暫存器502c、暫存器502d可接收權重資料(“W”)並將所述權重資料及/或所述權重資料的反相版本輸出至多工器504a、多工器504b、多工器504c、多工器504d的輸入。在一些實施例中,所述權重資料可為一或多個位元的權重資料,例如4位元權重資料。儘管圖5將多工器504a、多工器504b、多工器504c、多工器504d示出為2×1多工器,然而亦可實施其他多工器。舉例而言,可使用4×1、4×2等多工器。
每一多工器504a、多工器504b、多工器504c、多工器504d可在選擇線上耦合至可由多個布思編碼器206、300中的一者輸出的選擇訊號(例如,選擇位元「S」)。在一些實施例中,輸入資料200的每一子集202、子集204可被輸入至所述多個布思編碼器206、300中的一者,且所述多個布思編碼器206、300中的每
一者可輸出利用輸入資料200的輸入子集202、輸入子集204而生成的選擇訊號(例如,S[i]、S[i+1]、S[i+2]、S[i+3],其中「i」可為循環迭代數目)。在一些實施例中,每一多工器504a、多工器504b、多工器504c、多工器504d可被配置成接收輸入資料200的不同子集202、204的選擇訊號。舉例而言,選擇訊號可被配置成使多工器504a、多工器504b、多工器504c、多工器504d選擇將每一相應多工器504a、多工器504b、多工器504c、多工器504d的輸入(即,所述權重資料或所述權重資料的反相版本)中的哪一者自多工器504a、多工器504b、多工器504c、多工器504d的輸出輸出至加法器506a、加法器506b。在一些實施例中,多工器504a、多工器504b、多工器504c、多工器504d可將權重資料直接映射至加法器506a、加法器506b。舉例而言,多工器504a、多工器504b、多工器504c、多工器504d可因應於選擇訊號為「0」值而將權重資料直接映射至加法器506a、加法器506b。在一些實施例中,多工器504a、多工器504b、多工器504c、多工器504d可向加法器506a、加法器506b提供權重資料的反相版本。舉例而言,多工器504a、多工器504b、多工器504c、多工器504d可因應於選擇訊號為「1」值而向加法器506a、加法器506b提供權重資料的反相版本。
加法器506a、加法器506b可為任意位元大小,例如6位元加法器。每一加法器506a、加法器506b可在輸入處耦合至一或多個多工器504a、504b、504c、504d,例如2個多工器504a、
504b、504c、504d。加法器506a、加法器506b可在輸入處接收多工器504a、多工器504b、多工器504c、多工器504d的輸出。每一加法器506a、加法器506b亦可耦合於控制線處,以接收自所述多個布思編碼器206、300中的一者輸出的賦能位元(例如,賦能位元「ENB」)。在一些實施例中,所述多個布思編碼器206、300中的每一者可輸出利用輸入資料200的輸入子集202、輸入子集204而生成的賦能位元(例如,ENB[i]、ENB[i+1]、ENB[i+2]、ENB[i+3],其中「i」可為循環迭代數目)。在一些實施例中,每一加法器506a、加法器506b可被配置成接收輸入資料200的不同子集202、204的一或多個賦能位元。舉例而言,每一加法器506a、加法器506b可被配置成接收兩個賦能位元(ENB)。由加法器506a、加法器506b所接收的ENB位元可觸發加法器506a、加法器506b來執行加法功能。舉例而言,賦能編碼位元可被配置成使加法器506a、加法器506b對多工器504a、多工器504b、多工器504c、多工器504d的由加法器506a、加法器506b所接收的輸出執行閘控操作。舉例而言,加法器506a、加法器506b可因應於賦能位元「1」值而對多工器504a、多工器504b、多工器504c、多工器504d的由加法器506a、加法器506b所接收的輸出執行閘控操作。閘控操作可將加法器506a、加法器506b的輸入設定為值「0」,而無論多工器504a、多工器504b、多工器504c、多工器504d的輸出的值如何。
每一加法器506a、加法器506b亦可耦合於控制線處,
以接收自所述多個布思編碼器206、300中的一者輸出的布思編碼位元(例如,布思編碼位元「BE」)。在一些實施例中,所述多個布思編碼器206、300中的每一者可輸出利用輸入資料200的輸入子集202、輸入子集204而生成的布思編碼位元(例如,BE[i]、BE[i+1]、BE[i+2]、BE[i+3],其中「i」可為循環迭代數目)。在一些實施例中,每一加法器506a、加法器506b可被配置成接收輸入資料200的不同子集202、204的一或多個布思編碼位元。舉例而言,每一加法器506a、加法器506b可被配置成接收兩個布思編碼位元(BE)。由加法器506a、加法器506b所接收的BE位元可觸發加法器506a、加法器506b來執行加法功能。舉例而言,布思編碼位元可被配置成使加法器506a、加法器506b對由加法器506a、加法器506b接收的權重資料執行左移位操作(例如,左移位1位元)。舉例而言,加法器506a、加法器506b可因應於布思編碼位元為「1」值而對由加法器506a、加法器506b所接收的權重資料執行左移位操作。所述移位可用於實施將所述權重資料乘以值「2」。
每一加法器506a、加法器506b可被配置成在選擇線處接收用於輸入資料200的不同子集202、204的選擇訊號中的一或多者。舉例而言,每一加法器506a、加法器506b可被配置成接收兩個選擇訊號(S)。由加法器506a、加法器506b所接收的選擇訊號可由加法器506a、加法器506b用作進位輸入(carry in)(CIN)值,以用於在加法器506a、加法器506b處與值的最低有效位元相
加。
加法器506a、加法器506b可將其操作的結果作為輸入而輸出至加法器508。加法器508可對在輸入處接收的結果進行求和,並生成輸入資料200的子集202、子集204與權重資料的布思乘法的部分和(PSUM0)。
布思乘法的典型實施方式使用與所闡述的實施例不同的構造。具體而言,布思乘法的典型實施方式通常利用反或閘來代替多工器504a、多工器504b、多工器504c、多工器504d中的每一者。本文所闡述的各種實施例利用多工器504a、多工器504b、多工器504c、多工器504d,相較於利用反或閘的典型實施方式而言,此可藉由執行至少兩個循環以用於有符號計算來達成近似50%的延遲減少。藉由使用布思編碼對輸入資料進行轉換以用於減少用於達成所述乘法的操作數目,可達成所述延遲減少。可對輸入資料的多個位元進行布思編碼,且所得到的編碼位元可用於執行對所述多個位元的計算,而非執行由典型實施方式所執行的逐位元計算。
圖6示出適合於實施各種實施例的用於CIM中的布思乘法的CIM硬體中所使用的多工器(例如,504a)及加法器(例如,506a)的示意電路。參照圖1至圖6,用於布思乘法的CIM硬體(多工器、移位器、加法器)可包括於CIM硬體112a至CIM硬體112n中,例如耦合至如本文中所進一步闡述的布思編碼器206、布思編碼器300。用於布思乘法的CIM硬體可包括多工器504a(此
處用作多工器504a、多工器504b、多工器504c、多工器504d中的任一者的代表性實例)及加法器506a(此處用作506a、506b中的任一者的代表性實例)。圖6中示出CIM硬體的非限制性實例,所述CIM硬體被配置成作為4位元布思乘法器的一部分而被包括。
多工器504a可在輸入處耦合至被配置成載送權重資料的任意數目個輸入線。舉例而言,多工器504a可耦合至被配置成載送權重資料(例如,W3、W2、W1、W0)的四個輸入線。多工器504a可包括多個反相器600a、600b,所述多個反相器600a、600b可被配置成用作用於臨時儲存所述權重資料的緩衝器。舉例而言,一個反相器600a、600b可被配置成臨時儲存所述權重資料,而另一反相器600a、600b可被配置成臨時儲存所述權重資料的反相版本。
多工器504a可在選擇線處耦合至由布思編碼器206、布思編碼器300輸出的選擇訊號(例如,選擇位元「S」)。多工器504a可包括多個傳輸閘(transmission gate)602a,所述多個傳輸閘602a耦合於反相器600a、反相器600b與多工器504a的輸出之間。傳輸閘602a亦可在輸入處耦合至選擇訊號。選擇訊號可確定自多工器504a輸出輸入權重資料(例如,W3、W2、W1、W0)中的每一者的所述輸入訊號或所述輸入訊號的反相版本中的哪一者。在一些實施例中,耦合至多工器504a的同一輸出的成對的傳輸閘602a可被不同地配置成對選擇訊號作出響應。舉例而言,對於同
一選擇訊號,一個傳輸閘602a可使得能夠傳輸儲存於反相器600a處的權重資料及/或權重資料的反相版本,而另一傳輸閘602a可阻止傳輸儲存於反相器600b處的權重資料及/或權重資料的反相版本,反之亦然。多工器504a可在由選擇訊號控制的輸出處輸出權重資料及/或權重資料的反相版本。
加法器506a可在輸入處接收由多工器504a輸出的權重資料及/或權重資料的反相版本(本文中統稱為加法器506a的權重資料)。加法器506a可耦合至可自布思編碼器206、布思編碼器300輸出的賦能訊號(例如,賦能位元「ENB」)。賦能訊號可觸發加法器506a來將在輸入處接收的訊號添加至加法器組件606(即,移位暫存器)中所保持的值。加法器506a可包括多個反或閘604a、604b、604c,所述多個反或閘604a、604b、604c被配置成在反或閘604a、反或閘604b、反或閘604c的一個輸入處接收權重資料,而在反或閘604a、反或閘604b、反或閘604c的第二輸入處接收賦能訊號。反或閘604a、反或閘604b、反或閘604c可被配置成對權重資料與賦能訊號進行「反或」,進而使得賦能訊號可控制加法器506a的邏輯閘控操作。舉例而言,賦能訊號被配置成對邏輯閘控進行賦能(例如,賦能訊號為「1」值),反或閘604a、反或閘604b、反或閘604c可僅輸出「0」值,而無論權重資料的值如何。在另外一種情況下,反或閘604a、反或閘604b、反或閘604c可在輸入處輸出權重資料,且賦能訊號被配置成不對邏輯閘控進行賦能(例如,賦能訊號為「0」值)。
加法器506a的控件(control)可耦合至由布思編碼器206、布思編碼器300輸出的布思編碼位元(例如,布思編碼位元「BE」)。布思編碼位元可被配置成控制加法器506a是否執行左移位操作(例如,左移位1位元)。每一反或閘604a、反或閘604b、反或閘604c的輸出可耦合至移位器608。移位器608可包括多個傳輸閘602b,所述多個傳輸閘602b被配置成將每一反或閘604b的輸出耦合至多個反相器600e。另外,移位器608可被配置成將反相器600c直接耦合至反或閘604a的輸出,且可包括傳輸閘602b,傳輸閘602b被配置成將反或閘604a的輸出耦合至反相器600e。反或閘604a可與權重資料的最高有效位元的輸入相關聯。耦合至反或閘604a的反相器600e可對應於權重資料的最高有效位元位置,而耦合至反或閘604a的反相器600c可對應於相較於權重資料的最高有效位元位置而言的較高有效位元位置。移位器608可包括被配置成將反或閘604c的輸出耦合至反相器600e的傳輸閘602b及被配置成將反或閘604c的輸出耦合至反相器600e的傳輸閘602b。反或閘604c可與權重資料的最低有效位元的輸入相關聯。耦合至反或閘604c的反相器600d可對應於權重資料的最低有效位元位置。加法器506a亦可耦合至電源電壓(VDD)。移位器608可包括傳輸閘602c,傳輸閘602c被配置成將電源電壓VDD耦合至反相器600d。
傳輸閘602b及傳輸閘602c亦可耦合至布思編碼(BE)位元。傳輸閘602b可被配置成使得能夠將來自反或閘604a、反或
閘604b、反或閘604c的輸出傳輸至反相器600e、反相器600d及/或阻止來自反或閘604a、反或閘604b、反或閘604c的輸出傳輸至反相器600e、反相器600d。傳輸閘602c可被配置成使得能夠將電源電壓傳輸至反相器600d及/或阻止電源電壓傳輸至反相器600d。在一些實施例中,耦合至相同的反相器600e、600d的成對的傳輸閘602b、602c可被不同地配置成對布思編碼位元作出響應。舉例而言,傳輸閘602b可使得能夠將來自反或閘604a、反或閘604b、反或閘604c的輸出傳輸至與權重資料的同一位元位置相關聯的反相器600e、反相器600d,而另一傳輸閘602c可阻止反或閘604b、反或閘604c的輸出傳輸至與權重資料的不同位元位置相關聯的反相器600e,反之亦然。因應於同一布思編碼位元值,傳輸閘602c可使得能夠將電源電壓傳輸至反相器600d,且傳輸閘602b可使得能夠將反或閘604b、反或閘604c的輸出傳輸至與權重資料的不同位元位置相關聯的反相器600e。權重資料的不同位元位置可為相較於權重資料的與反或閘604b、反或閘604c相關聯的位元位置而言的與反相器600e相關聯的較高有效位元位置。反相器600c可與權重資料的相較於所述權重資料的與反或閘604a相關聯的位元位置而言的不同的較高有效位元位置相關聯。使得能夠由傳輸閘602b將電源電壓傳輸至反相器600d、由傳輸閘602b、傳輸閘602c將反或閘604b、反或閘604c的輸出傳輸至與權重資料的不同位元位置相關聯的反相器600e以及將反或閘604a的輸出傳輸至反相器600c可使得能夠使權重資料在加法器506a中左
移位。在一些實施例中,移位器608可包括反或閘604a、反或閘604b、反或閘604c。在一些實施例中,移位器608可包括反相器600c、反相器600d、反相器600e。
加法器506a的加法器組件606可接收臨時儲存於反相器600c、反相器600d、反相器600d處的資料。加法器組件606亦可在輸入(CIN)處接收來自布思編碼器300的選擇訊號。加法器組件606可被配置成對自反相器600c、反相器600d、反相器600e接收的資料進行求和。因應於選擇訊號的指定值(例如,選擇訊號為「1」值),加法器組件606可將「1」值作為CIN位元添加至和的最低有效位元。加法器506a及加法器組件606可被配置成在輸出處輸出所述和。舉例而言,所述和可輸出至加法器508,且用於生成部分和(PSUM0)。
圖7示出適合於實施各種實施例的CIM中的布思乘法器700的實例。參照圖1至圖7,布思乘法器700可包括於CIM硬體112a至CIM硬體112n中。布思乘法器700可包括布思演算法硬體702、壓縮器708及進位預看(Carry-lookahead)加法器710,布思演算法硬體702包括布思編碼器704(例如,布思編碼器206、布思編碼器300)、布思解碼器706(例如,CIM硬體500)。
如本文中所述,布思編碼器704可接收被乘數(例如,輸入資料200及/或所述輸入資料的輸入資料子集202、輸入資料子集204)。布思編碼器704可為具有邏輯組件(例如,圖3中的布思編碼器300)的電路,所述邏輯組件可自被乘數生成並輸出布
思編碼訊號(例如,布思編碼訊號208,其可包括所述賦能位元、所述布思編碼位元及所述選擇位元)。布思解碼器706可為具有邏輯組件(例如,圖5中的CIM硬體500,其包括圖5及圖6中的多工器504及加法器506)的電路,所述邏輯組件可接收乘數(例如,權重資料),且因應於接收到相關聯的布思編碼訊號而生成並輸出由用於在CIM硬體700中執行布思乘法的操作操縱的權重資料的至少兩個部分乘積。每一部分乘積可為因應於相應的布思編碼訊號208而對權重資料進行乘法的結果。可基於被乘數的長度及代表整個被乘數所需的布思編碼訊號208的數目來產生多個部分乘積。舉例而言,對於使用3位元布思編碼對32位元被乘數進行的32位元乘法,其中用於被乘數的3位元布思編碼的序列可每循環使用位元X2i+1、X2i及X2i-1,其中「i」可為循環迭代數目,布思解碼器706可接收18個布思編碼訊號208並生成18個部分乘積。
壓縮器708可接收布思演算法硬體702的部分乘積,並對所述部分乘積進行求和。壓縮器可生成並輸出部分乘積之和(和)及/或進位位元(進位)。在一些實施例中,壓縮器708可為任意類型的壓縮器708,例如華萊士樹(Wallace tree)。壓縮器708可在布思演算法硬體702生成並輸出布思乘法的部分乘積中的所有者之前對所述部分乘積進行求和。
進位預看加法器710可自壓縮器708接收部分乘積(和)及/或進位位元(進位)。對所接收的部分乘積及/或進位位元進行
求和的進位預看加法器710可生成並輸出布思乘法的最終輸出。自壓縮器708接收的經求和的部分乘積可在其變得可用時被接收。如同壓縮器708一樣,進位預看加法器710可在布思演算法硬體702生成並輸出布思乘法的部分乘積中的所有者之前接收經求和的部分乘積。進位預看加法器710可對所接收的部分乘積中的每一者與先前接收的部分乘積之和進行求和,直至接收到部分乘積中的所有者為止,並輸出所接收的部分乘積的最終和作為布思乘法的最終輸出。
布思乘法器700的包括布思編碼器704、布思解碼器706、壓縮器708及進位預看加法器710中的任一者的組件可在接收輸入資料200與權重資料的布思乘法的資料中的所有者之前實施用於布思乘法的操作。布思乘法器700的組件可被配置成例如基於每一循環來實施用於布思乘法的操作,其中布思編碼器在每一循環中對輸入資料200的子集202、子集204進行編碼,並使用自所述編碼生成的布思編碼訊號208。因此,布思乘法器700的組件可被配置成針對輸入資料200的每一所接收的子集202、子集204來實施用於布思乘法的操作。布思編碼器704可能僅需要輸入資料200的與正在被實施的循環相關的子集202、子集204。布思解碼器706可基於布思編碼訊號208而針對所述相關循環來對權重資料進行操縱,並產生部分乘積。壓縮器708可對所述相關循環的部分乘積進行求和,以產生部分乘積之和。進位預看加法器710可針對連續的循環來對由壓縮器708輸出的所述部分乘積之和進
行連續求和,以輸出所接收的部分乘積之和的最終和及作為布思乘法的最終輸出。
圖8示出根據各種實施例的用於CIM中的布思乘法的方法800。參照圖1至圖8,可在包括布思編碼器206、布思編碼器300、布思編碼器704、布思解碼器706、多工器504a、多工器504b、多工器504c、多工器504d、加法器506a、加法器506b、加法器508、壓縮器708、進位預看加法器710及/或其組件中的任一者的CIM硬體112a至CIM硬體112n、CIM硬體500中實施方法800。為了囊括在各種實施例中達成的替代性配置,用於實施方法800的硬體在本文中稱為「CIM裝置」。在一些實施例中,可貫穿實施方法800的過程來連續地或週期性地實施方塊802至方塊820中的任一者,直至實施方塊822為止。
在方塊802中,CIM裝置可在布思編碼器206、布思編碼器300、布思編碼器704處接收輸入資料200。輸入資料200可為串列資料,可貫穿實施方法800的過程來連續地或週期性地接收所述串列資料的子集202、子集204,直至接收到輸入資料200中的所有者為止。
在方塊804中,CIM裝置可在循環中對在方塊802中接收的輸入資料200的部分進行布思編碼。如圖3中所示,可藉由各種邏輯組件的各種邏輯操作將在布思編碼器206、布思編碼器300、布思編碼器704處接收的輸入資料的子集202、子集204轉換成布思編碼訊號208。舉例而言,每一循環可用於由布思編碼器
206、布思編碼器300、布思編碼器704對輸入資料200的子集202、子集204進行布思編碼。在一些實施例中,子集202、子集204可為輸入資料200的3位元部分。
對輸入資料的所述部分進行布思編碼可將所述部分轉換成與在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中執行布思乘法的有限數目個操作相關聯的布思編碼訊號208。可將布思編碼訊號208配置成控制CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700的被配置用於實施布思乘法器的其他部分,從而例如確定布思乘法器執行並產生部分和的操作,所述其他部分包括多工器504a、多工器504b、多工器504c、多工器504d、加法器506a、加法器506b及/或布思解碼器706。舉例而言,接收位元「000」及/或位元「111」的子集202、子集204的布思編碼器206、布思編碼器300、布思編碼器704可例如藉由在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中進行邏輯閘控操作以達成乘法結果而生成並輸出位元「100」的布思編碼訊號208,可將布思編碼訊號208配置成使CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700的其他部分執行「0」值與權重資料(“W”)的乘法。可將CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700配置成闡釋位元「100」的布思編碼訊號208/由位元「100」的布思編碼訊號208控制,以實行對權重資料的邏輯閘控。在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中進行邏輯閘控可
阻止權重資料的位元在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中傳播而導致「低」訊號或「0」訊號代替所述權重資料,從而有效地將所述權重資料乘以「0」值。
接收位元「001」及/或位元「010」的子集202、子集204的布思編碼器206、布思編碼器300、布思編碼器704可例如藉由在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中進行權重資料直接映射操作以達成乘法結果而生成並輸出位元「000」的布思編碼訊號208,可將布思編碼訊號208配置成使CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700的其他部分執行「1」值與權重資料的乘法。可將CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700配置成闡釋位元「000」的布思編碼訊號208/由位元「000」的布思編碼訊號208控制,以實行對權重資料的直接映射。在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中進行直接映射可使得權重資料的位元能夠在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中不變地傳播而產生代表不變權重資料的訊號,從而有效地將所述權重資料乘以「1」值。
接收位元「011」的子集202、子集204的布思編碼器206、布思編碼器300、布思編碼器704可例如藉由在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中進行權重資料直接映射操作及對權重資料的左移位操作(例如,在加法器中左移位1位元)以達成乘法結果而生成並輸出位元「010」的布思編
碼訊號208,可將布思編碼訊號208配置成使CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700的其他部分執行「2」值與權重資料的乘法。可將CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700配置成闡釋位元「010」的布思編碼訊號208/由位元「010」的布思編碼訊號208控制,以實行對權重資料的直接映射及移位。在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中對直接映射權重資料進行左移位可將權重資料的位元移位一定的量,所述量會改變所述權重資料的位元,從而產生代表所述權重資料乘以「2」值的訊號。
接收位元「100」的子集202、子集204的布思編碼器206、布思編碼器300、布思編碼器704可例如藉由在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中進行權重資料反相操作、在反相權重資料的最低有效位元處添加「1」值的操作以及對和的左移位操作(例如,在加法器中左移位1位元)以達成乘法結果而生成並輸出位元「011」的布思編碼訊號208,可將布思編碼訊號208配置成使CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700的其他部分執行「-2」值與權重資料的乘法。可將CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700配置成闡釋位元「011」的布思編碼訊號208/由位元「011」的布思編碼訊號208控制,以實行對權重資料的反相、對權重資料的添加及對權重資料的移位。在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中對權重資料的位元進行反相及在
權重資料的反相位元的最低有效位元處添加「1」值可生成代表權重資料負符號版本的訊號,從而有效地將所述權重資料乘以「-1」值。在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中對權重資料負符號版本進行左移位可將權重資料負符號版本的位元移位一定的量,所述量會改變權重資料負符號版本的位元,從而產生代表權重資料負符號版本乘以「2」值的訊號。該些操作總起來可產生代表所述權重資料乘以「-2」值的訊號。
接收位元「101」及/或位元「110」的子集202、子集204的布思編碼器206、布思編碼器300、布思編碼器704可例如藉由在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中進行權重資料反相操作及在反相權重資料的最低有效位元處添加「1」值的操作以達成乘法結果而生成並輸出位元「001」的布思編碼訊號208,可將布思編碼訊號208配置成使CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700的其他部分執行「-1」值與權重資料的乘法。可將CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700配置成闡釋位元「001」的布思編碼訊號208/由位元「001」的布思編碼訊號208控制,以實行對權重資料的反相及對權重資料的添加。在CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700中對權重資料的位元進行反相以及在權重資料的反相位元的最低有效位元處添加「1」值可生成代表權重資料負符號版本的訊號,從而有效地將所述權重資料乘以「-1」值。
在方塊806中,CIM裝置可自布思編碼器206、布思編碼器300、布思編碼器704輸出布思編碼訊號208。在方塊808中,CIM裝置可在布思解碼器706處接收布思編碼訊號208及權重資料。接收布思編碼訊號208及權重資料可包括在多工器504a、多工器504b、多工器504c、多工器504d及/或加法器506a、加法器506b中的一或多者處進行接收。
在方塊810中,CIM裝置可利用布思編碼訊號208及權重資料來生成輸入資料200與權重資料及/或所述權重資料的反相版本(本文中統稱為方法800的權重資料)的乘法的部分乘積。換言之,所述乘法可為例如參照方塊804所闡述的由布思編碼訊號208控制的代表值(例如,0、1、2、-1、-2)與權重資料的相乘,而非輸入資料200的值(例如輸入資料200的子集202、子集204)與權重資料的直接相乘。可使用例如對權重資料的邏輯閘控、對權重資料的直接映射、對權重資料的反相、對權重資料的左移位及/或向經左移位權重資料的最低有效位元添加「1」值等各種不同的操作來實施代表值與權重資料的乘法。在一些實施例中,包括多工器504a、多工器504b、多工器504c、多工器504d及/或加法器506a、加法器506b、加法器508中的一或多者的布思解碼器706可生成部分乘積。
在方塊812中,CIM裝置可自布思解碼器706輸出部分乘積,並在壓縮器708處接收所述部分乘積。在方塊814中,CIM裝置可藉由將所接收的部分乘積相加來生成部分和。壓縮器708
可對部分乘積進行累加,並將所述部分乘積相加以生成所述部分和。在一些實施例中,部分乘積的相加可生成進位值。
在方塊816中,CIM裝置可自壓縮器708輸出所述部分和。在一些實施例中,CIM裝置可輸出來自壓縮器708的進位值以及相關聯的部分和。在方塊818中,CIM裝置可在加法器處接收所述部分和。在一些實施例中,加法器可為進位預看加法器710。在一些實施例中,CIM裝置可接收與相關聯的部分和一起輸出的進位值。
在方塊820中,CIM裝置可生成輸入資料200與權重資料的布思乘法的最終乘積。加法器可對部分和進行累加並將所述部分和相加以生成最終乘積。在一些實施例中,加法器可將部分和與進位值相加以生成最終乘積。在方塊822中,CIM裝置可輸出最終乘積。舉例而言,CIM裝置可將來自包括加法器的CIM硬體112a至CIM硬體112n、CIM硬體500、CIM硬體700的最終乘積輸出至其他CIM硬體112a至CIM硬體112n、記憶體100的任何部分(例如,記憶體單元102、記憶體晶片104a至記憶體晶片104n、記憶體單元108a至記憶體單元108n、儲存體106a至儲存體106n、記憶陣列110a至記憶陣列110n)及/或處理器(例如,中央處理單元(central processing unit,CPU);未示出)。
在一些實施例中,可藉由以下實例來闡述利用CIM硬體112a至CIM硬體112n、CIM硬體500進行的CIM中的布思乘法的過程,CIM硬體112a至CIM硬體112n、CIM硬體500包括布
思編碼器206、布思編碼器300、布思編碼器704、布思解碼器706、多工器504a、多工器504b、多工器504c、多工器504d、加法器506a、加法器506b、加法器508、壓縮器708、進位預看加法器710及/或其組件中的任一者。輸入資料200 X3、X2、X1、X0與權重資料W的布思編碼乘法可被表達為輸入資料200的子集202X1、X0、0的各自乘以權重資料的部分乘積與子集204 X3、X2、X1的各自乘以權重資料的部分乘積的加法。換言之,(X3,X2,X1,X0)* W=((X1,X0,0)* W)+((X3,X2,X1)* W)。布思編碼乘法可藉由以下方式來簡化輸入資料220:如在方塊804中,對輸入資料的子集202、子集204進行布思編碼,從而生成布思編碼訊號208;以及如在方塊810中,將布思編碼訊號208闡釋為用於操縱權重資料的操作的指令。舉例而言,0111的被乘數(或輸入資料200)可被附加0,以使得被乘數為01110,且基於每循環利用位元X2i+1、位元X2i及位元X2i-1對被乘數進行3位元布思編碼而被劃分成110及011的子集202、子集204,其中「i」可為循環迭代數目。如本文中所述,對110的子集202、子集204進行布思編碼可例如藉由權重資料反相操作及在反相權重資料的最低有效位元處添加「1」值的操作而生成布思編碼訊號,可將所述布思編碼訊號配置成表示將權重資料乘以「-1」值。對011的子集202、子集204進行布思編碼可例如藉由權重資料直接映射操作及對權重資料的左移位操作(例如,在加法器中左移位1位元)而生成布思編碼訊號,可將所述布思編碼訊號配置成表示將權重資料乘以「2」
值。為了利用布思編碼訊號208來達成布思編碼乘法以及實施用於操縱權重資料的操作的指令,可將輸入資料200轉換成2補數值的加法的格式。舉例而言,被乘數(或輸入資料200)中的一系列「1」可被表達為01110=10000-00010。此種減法可被視為與2補數的加法,此乃因01110=10000-00010=10000+00010*(-1)(乘以「-1」得到所述2補數)。然後,可將被乘數01110與乘數(或權重資料)AAA的布思編碼乘法實行為01110×AAA=(10000-00010)×AAA=10000 * AAA+00010×(AAA+1)(對於所述乘法,直接映射權重資料可由「AAA」代表,反相權重資料可由「AAA」代表,而權重資料的2補數可由(AAA+1)給出)。如在方塊810中,每一所得乘法可生成操縱權重資料的部分乘積結果,如在方塊814中,可對所述部分乘積結果進行求和以生成部分和。如由此實例所示,布思編碼能夠使得可將輸入資料200的多個位元子集202、204乘以權重資料,而非進行典型的布思乘法,所述典型的布思乘法將輸入資料的各別位元乘以權重資料以生成部分乘積,所述部分乘積被求和以生成最終輸出。相較於典型的布思乘法而言,本文中所闡述的布思編碼乘法會減少針對布思乘法而計算的部分乘積數目,從而使得能夠利用更少的循環、更少的時間及更小的計算硬體面積來執行布思乘法。
各種實例(包括但不限於以上參照圖1至圖8論述的實例)可在各種計算裝置中的任一者中實施,圖9中示出計算裝置的實例900。參照圖1至圖8,無線裝置900可包括處理器902,
處理器902耦合至觸控螢幕控制器904及內部記憶體906(例如,記憶體100)。處理器902可為被指定用於一般處理任務或特定處理任務的一或多個多核心積體電路(integrated circuit,IC)。內部記憶體906可為揮發性記憶體或非揮發性記憶體,且亦可為安全記憶體及/或加密記憶體、或者不安全記憶體及/或未加密記憶體、或者其任意組合。
觸控螢幕控制器904及處理器902亦可耦合至觸控螢幕面板912,例如電阻感測觸控螢幕、電容感測觸控螢幕、紅外感測觸控螢幕等。無線裝置900可具有用於發送及接收的一或多個無線電訊號收發機908(例如,皮納特®(Peanut®)、藍芽®(Bluetooth®)、西格比®(Zigbee®)、無線保真(wireless fidelity,Wi-Fi)、射頻(radio frequency,RF)無線電)及天線910,所述一或多個無線電訊號收發機908與天線910彼此耦合及/或耦合至處理器902。收發機908及天線910可與上述電路系統一起使用,以實施各種無線傳輸協定堆疊及介面。無線裝置900可包括蜂巢式網路無線數據機晶片916,蜂巢式網路無線數據機晶片916使得能夠進行經由蜂巢式網路的通訊,且耦合至所述處理器。
無線裝置900可包括耦合至處理器902的周邊裝置連接介面918。周邊裝置連接介面918可被單獨配置成接受一種類型的連接,或者被多重配置成接受各種類型的物理連接及通訊連接(公用的或專有的),例如通用串列匯流排(Universal Serial Bus,USB)、火線(FireWire)、霹靂(Thunderbolt)或快速周邊組件內連
(Peripheral Component Interconnect Express,PCIe)。周邊裝置連接介面918亦可耦合至被相似地配置的周邊裝置連接埠(未示出)。無線裝置900亦可包括用於提供音訊輸出的揚聲器914。無線裝置900亦可包括由塑膠、金屬或材料組合構成的外殼(housing)920來用於容納本文中所論述的組件中的所有組件或一些組件。無線裝置900可包括耦合至處理器902的電源922,例如可棄式電池或可充電電池。可充電電池亦可耦合至周邊裝置連接埠,以自位於無線裝置900外部的源接收充電電流。
各種實例(包括但不限於以上參照圖1至圖8所論述的實例)亦可在各種個人計算裝置內實施,圖10中示出個人計算裝置的實例1000。參照圖1至圖8,膝上型電腦1000可包括觸控墊觸控表面(touchpad touch surface)1017,觸控墊觸控表面1017用作電腦的指針裝置(pointing device),且因此可與在裝備有觸控螢幕顯示器的無線計算裝置上實施的且如上所述的裝置相似地接收拖動手勢、滾動手勢及輕擊手勢。膝上型電腦1000將通常包括耦合至揮發性記憶體1012(例如,記憶體100)及大容量非揮發性記憶體(例如快閃記憶體的磁碟驅動機1013)的處理器1004。電腦1000亦可包括耦合至處理器1004的軟碟驅動機1014及光碟(compact disc,CD)驅動機1016。電腦1000亦可包括耦合至處理器1004的一定數目個連接件埠以用於建立資料連接或者接納外部記憶體裝置(例如通用串列匯流排(USB)或火線®連接件插座)或用於將處理器1004耦合至網路的其他網路連接電路。在筆記型
電腦配置中,電腦外殼包括皆耦合至處理器1004的觸控表面1017、鍵盤1018及顯示器1019。眾所周知,計算裝置的其他配置可包括耦合至處理器(例如,經由USB輸入)的電腦滑鼠或軌跡球,其亦可結合各種實例來使用。
各種實例(包括但不限於以上參照圖1至圖8所論述的實例)亦可在固定計算系統(例如各種可商業購得的伺服器中的任一者)中實施。圖11中示出實例性伺服器1100。此種伺服器1100通常包括耦合至揮發性記憶體1102(例如,記憶體100)及大容量非揮發性記憶體(例如,磁碟驅動機1104)的一或多個多核心處理器組合件(multicore processor assembly)1101。如圖11中所示,多核心處理器組合件1101可藉由將其插入至所述組合件的機架(rack)中而被添加至伺服器1100。伺服器1100亦可包括耦合至處理器1101的軟碟驅動機、光碟(CD)或數位多功能光碟(digital versatile disc,DVD)驅動機1106。伺服器1100亦可包括耦合至多核心處理器組合件1101的網路存取埠1103以用於建立與網路1105的網路介面連接,網路1105為例如耦合至其他廣播系統電腦及伺服器的區域網路、網際網路、公眾交換電話網路(public switched telephone network)及/或蜂巢式資料網路。
參照圖1至圖8,處理器902、處理器1004、處理器1101可為任何可程式化的微處理器、微電腦或多處理器晶片、或者可由軟體指令(應用)配置成實行各種功能(包括上述各種實例的功能)的晶片。在一些裝置中,可提供多個處理器,例如專用於
無線通訊功能的一個處理器及專用於運行其他應用的一個處理器。通常,軟體應用在其被存取並加載至處理器902、處理器1004、處理器1101中之前可儲存於內部記憶體906、內部記憶體1012、內部記憶體1013、內部記憶體1102中。處理器902、處理器1004、處理器1101可包括足以儲存應用軟體指令的內部記憶體。在諸多裝置中,內部記憶體906、內部記憶體1012、內部記憶體1013、內部記憶體1102可為揮發性記憶體或非揮發性記憶體(例如快閃記憶體)、或者二者的混合形式。出於本說明的目的,對記憶體的一般引用指代可由處理器902、處理器1004、處理器1101存取的記憶體(包括插入至所述裝置中的內部記憶體906、內部記憶體1012、內部記憶體1013、內部記憶體1102或可移式記憶體)以及位於處理器902、處理器1004、處理器1101自身內的記憶體906、記憶體1012、記憶體1102。
參照圖1至圖8,各種實施例提供一種記憶體內計算裝置,所述記憶體內計算裝置可包括:布思編碼器300,被配置成接收具有第一位元的至少一個輸入;以及布思解碼器706,被配置成接收具有第二位元的至少一個權重並輸出所述至少一個輸入與所述至少一個權重的多個部分乘積。在一個實施例中,所述記憶體內計算裝置亦可包括:加法器(例如,506a),被配置成在布思解碼器706生成所述多個部分乘積中的第三部分乘積之前將所述多個部分乘積中的第一部分乘積與所述多個部分乘積中的第二部分乘積相加,並生成多個部分乘積之和;以及進位預看加法器710,
被配置成將所述多個部分乘積之和相加並生成最終和。在一個實施例中,布思編碼器300可包括:互斥或閘302,被配置成接收所述至少一個輸入的第一個位元及第二個位元;互斥反或閘308,被配置成接收所述至少一個輸入的第二個位元及第三個位元;第一反或閘304,被配置成接收互斥或閘302的輸出及互斥反或閘308的輸出,並輸出布思編碼位元;第二反或閘306,被配置成接收第一互斥或閘302的輸出及布思編碼位元,並輸出賦能訊號,所述賦能訊號被配置成控制布思解碼器706的邏輯閘控;第三反或閘310,被配置成接收賦能訊號以及所述輸入的第三個位元的反相版本,並輸出選擇訊號。在一個實施例中,第二個位元可為所述至少一個輸入的相較於第一個位元而言的較高有效位元;並且第三個位元可為所述至少一個輸入的最高有效位元。在一個實施例中,布思解碼器706可包括:多個多工器504;以及多個加法器506。在一個實施例中,所述多個多工器504中的第一多工器(例如,504a)可被配置成自布思編碼器300接收選擇訊號、所述至少一個權重的第一數目個位元及所述至少一個權重的第一數目個反相位元,並基於選擇訊號來選擇性地輸出所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元。在一個實施例中,所述多個加法器506中的加法器(例如,506a)被配置成:自布思編碼器300接收賦能訊號以及所述至少一個輸入的布思編碼位元;自所述多個多工器504中的第一多工器(例如,504a)接收所述至少一個權重的第一數目個位元或所述至少
一個權重的第一數目個反相位元;以及基於賦能訊號或者所述至少一個輸入的布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作。在一個實施例中,第一加法器(例如,506a)可被配置成使得基於賦能訊號或者所述至少一個輸入的布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作包括基於賦能訊號對第一加法器(例如,506a)進行邏輯閘控。在一個實施例中,第一加法器(例如,506a)包括移位器508,且第一加法器(例如,506a)可被配置成使得基於賦能訊號或者所述至少一個輸入的布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作包括由移位器508基於布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元進行移位。在一個實施例中,第一加法器(例如,506a)可被配置成:自布思編碼器300接收選擇訊號;以及基於選擇訊號來將1位元添加至所述至少一個權重的所述第一數目個反相位元中的最低有效位元。在一個實施例中,第一加法器(例如,506a)被配置成接收所述多個多工器504中的至少兩個多工器(例如,504a、504b)的輸出以及將所述至少兩個多工器(例如,504a、504b)的輸出相加以生成所述多個部分乘積的至少一部分。
在相關實施例中,所述的記憶體內計算裝置,更包括:
加法器,被配置成在所述布思解碼器生成所述多個部分乘積中的第三部分乘積之前將所述多個部分乘積中的第一部分乘積與所述多個部分乘積中的第二部分乘積相加,且所述加法器被配置成生成多個部分乘積之和;以及進位預看加法器,被配置成將所述多個部分乘積之和相加並生成最終和。
在相關實施例中,其中所述布思編碼器包括:互斥或閘,被配置成接收所述至少一個輸入的第一個位元及第二個位元;互斥反或閘,被配置成接收所述至少一個輸入的所述第二個位元及第三個位元;第一反或閘,被配置成接收所述互斥或閘的輸出及所述互斥反或閘的輸出,並輸出布思編碼位元;第二反或閘,被配置成接收所述第一互斥或閘的所述輸出及所述布思編碼位元,並輸出賦能訊號,所述賦能訊號被配置成控制所述布思解碼器的邏輯閘控;第三反或閘,被配置成接收所述賦能訊號以及所述至少一個輸入的所述第三個位元的反相版本,並輸出選擇訊號。
在相關實施例中,其中:所述第二個位元是所述至少一個輸入的相較於所述第一個位元而言的較高有效位元;並且所述第三個位元是所述至少一個輸入的最高有效位元。
在相關實施例中,其中所述布思解碼器包括:多個多工器;以及多個加法器。
在相關實施例中,其中所述多個多工器中的第一多工器被配置成自所述布思編碼器接收選擇訊號、所述至少一個權重的第一數目個位元及所述至少一個權重的第一數目個反相位元,並
基於所述選擇訊號來選擇性地輸出所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元。
在相關實施例中,其中所述多個加法器中的第一加法器被配置成:自所述布思編碼器接收賦能訊號以及所述至少一個輸入的布思編碼位元;自所述多個多工器中的第一多工器接收所述至少一個權重的第一數目個位元或所述至少一個權重的第一數目個反相位元;以及基於所述賦能訊號或者所述至少一個輸入的所述布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作。
在相關實施例中,其中所述第一加法器被配置成使得基於所述賦能訊號或者所述至少一個輸入的所述布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作,所述操作包括基於所述賦能訊號對所述第一加法器進行邏輯閘控。
在相關實施例中,其中所述第一加法器包括移位器,且其中所述第一加法器被配置成使得基於所述賦能訊號或者所述至少一個輸入的所述布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作,所述操作包括由所述移位器基於所述布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元進行移位。
在相關實施例中,其中所述第一加法器被進一步配置成:
自所述布思編碼器接收選擇訊號;以及基於所述選擇訊號來將1位元添加至所述至少一個權重的所述第一數目個反相位元中的最低有效位元。
在相關實施例中,其中所述第一加法器被配置成:接收所述多個多工器中的至少兩個多工器的輸出;以及將所述至少兩個多工器的所述輸出相加以生成所述多個部分乘積的至少一部分。
參照圖1至圖8,各種實施例提供一種記憶體系統100,記憶體系統100包括記憶體內計算硬體112,記憶體內計算硬體112可包括布思編碼器300及布思解碼器706,布思編碼器300具有互斥或閘302、互斥反或閘308、第一反或閘304、第二反或閘306及第三反或閘310,互斥或閘302在所述互斥或閘的輸入處耦合至第一資料輸入線及第二資料輸入線,互斥反或閘308在所述互斥反或閘的輸入處耦合至第二資料輸入線及第三資料輸入線,第一反或閘304在第一反或閘304的輸入處耦合至互斥或閘302的輸出及互斥反或閘308的輸出,第二反或閘306在第二反或閘306的輸入處耦合至互斥或閘302的輸出及第一反或閘304的輸出,第三反或閘310在第三反或閘310的輸入處耦合至第二反或閘306的輸出,且在第三反或閘310的反相輸入處耦合至第三資料輸入線,布思解碼器706具有多個多工器504及多個加法器506,所述多個多工器504耦合至權重資料輸入線以及第三反或閘310的輸出,其中所述多個加法器506中的第一加法器(例如,506a)耦
合至所述多個多工器的子集(例如,504a)的輸出、第一反或閘304的輸出、第二反或閘306的輸出及第三反或閘310的輸出。
參照圖1至圖8,各種實施例提供一種記憶體內計算裝置中的布思乘法的方法。所述布思乘法的方法可包括:由所述記憶體內計算裝置的布思編碼器206、布思編碼器300對輸入資料200的多個子集202、204進行布思編碼,從而生成多個布思編碼訊號208;以及由所述記憶體內計算裝置的布思解碼器706對權重進行操作,從而生成部分乘積的一部分,其中用於對權重進行操作的操作是由所述多個布思編碼訊號208來指定。在一個實施例中,由布思解碼器706對權重進行操作可包括對權重進行邏輯閘控。在一個實施例中,由布思解碼器706對權重進行操作可包括對權重進行直接映射,從而生成直接映射權重。在一個實施例中,由布思解碼器706對權重進行操作更包括對直接映射權重進行左移位。在一個實施例中,由布思解碼器706對權重進行操作包括對權重進行反相以生成反相權重。在一個實施例中,由布思解碼器706對權重進行操作更包括對反相權重進行左移位。在一個實施例中,由布思解碼器706對權重進行操作更包括將「1」值添加至反相權重的最低有效位元。在一個實施例中,所述方法亦可包括:將部分乘積的多個部分相加,從而生成所述部分乘積,所述多個部分包括所述部分乘積的所述部分;以及在生成輸入資料200的所述多個子集202、204與所述權重的布思乘法的所有部分乘積之前,將包括所述部分乘積在內的多個部分乘積相加。
在相關實施例中,其中由所述布思解碼器對所述權重進行操作包括對所述權重進行邏輯閘控。
在相關實施例中,其中由所述布思解碼器對所述權重進行操作包括對所述權重進行直接映射,從而生成直接映射權重。
在相關實施例中,其中由所述布思解碼器對所述權重進行操作更包括對所述直接映射權重進行左移位。
在相關實施例中,其中由所述布思解碼器對所述權重進行操作包括對所述權重進行反相以生成反相權重。
在相關實施例中,其中由所述布思解碼器對所述權重進行操作更包括對所述反相權重進行左移位。
在相關實施例中,其中由所述布思解碼器對所述權重進行操作更包括將「1」值添加至所述反相權重的最低有效位元。
在相關實施例中,將所述部分乘積的多個部分相加,從而生成所述部分乘積,所述多個部分包括所述部分乘積的所述部分;以及在生成所述多個輸入資料子集與所述權重的布思乘法的所有部分乘積之前,將包括所述部分乘積在內的多個部分乘積相加。
前述方法說明及過程流程圖僅作為例示性實例提供,且不旨在要求或暗示各種實例的步驟必須以所呈現的次序實行。如熟習此項技術者應理解,前述實例中的步驟次序可以任何次序實行。例如「此後」、「然後」、「接下來」等詞語不旨在限制步驟的次序;該些詞語僅用於貫穿對方法的說明來引導讀者。此外,以
單數形式(例如利用冠詞「一(a/an)」或「所述(the)」)對請求項要素作出的任何引用不應被解釋為將所述要素限制為單數形式。
結合本文中所揭露的實例而闡述的各種例示性邏輯區塊、過程、電路及演算法步驟可被實施為電子硬體、電腦軟體或二者的組合。為了清楚地示出硬體與軟體的此種可互換性,上文已就各種例示性組件、區塊、過程、電路及步驟的功能性而對其進行了大致闡述。此種功能性被實施為硬體還是軟體取決於具體的應用及強加於整個系統的設計約束。熟練技工可針對每一具體的應用以不同的方式實施所闡述的功能性,但此種實施決策不應被闡釋為導致偏離本文中所揭露的各種實施例的範圍。
提供對所揭露實例的前述闡述是為了使得任何熟習此項技術者能夠製作或使用本文中所揭露的各種實施例。對該些實例的各種修改對於熟習此項技術者而言將顯而易見,且在不背離本發明的精神或範圍的條件下,本文中所定義的一般原理可應用於其他實例。因此,本文中所揭露的各種實施例不旨在受限於本文中所示出的實例,而是符合與以下申請專利範圍以及本文中所揭露的原理及新穎特徵一致的最廣泛範圍。
如本文中所述,熟習此項技術者應認識到,尺寸的實例是近似值,且可根據製造容差、製作容差及設計容差的要求而變化+/- 5.0%。
本文中就電壓或電流對各種實施例及實例進行了闡述。
熟習此項技術者應認識到,就電壓或電流中的另一者而言,可相似地實施此種實施例及實例。
前述內容概述了若干實施例的特徵,以使熟習此項技術者可更佳地理解本揭露的態樣。熟習此項技術者應理解,他們可容易地使用本揭露作為設計或修改其他製程及結構的基礎來施行與本文中所介紹的實施例相同的目的及/或達成與本文中所介紹的實施例相同的優點。熟習此項技術者亦應認識到,此種等效構造並不背離本揭露的精神及範圍,而且他們可在不背離本揭露的精神及範圍的條件下對其作出各種改變、取代及變更。
700:布思乘法器/CIM硬體
702:布思演算法硬體
704:布思編碼器
706:布思解碼器
708:壓縮器
710:進位預看加法器
Claims (9)
- 一種記憶體內計算裝置,包括:布思編碼器,被配置成接收具有第一位元的至少一個輸入;以及布思解碼器,被配置成接收具有第二位元的至少一個權重並輸出所述至少一個輸入與所述至少一個權重的多個部分乘積,其中所述布思解碼器包括多個多工器以及多個加法器。
- 如請求項1所述的記憶體內計算裝置,更包括:加法器,被配置成在所述布思解碼器生成所述多個部分乘積中的第三部分乘積之前將所述多個部分乘積中的第一部分乘積與所述多個部分乘積中的第二部分乘積相加,且所述加法器被配置成生成多個部分乘積之和;以及進位預看加法器,被配置成將所述多個部分乘積之和相加並生成最終和。
- 如請求項1所述的記憶體內計算裝置,其中所述布思編碼器包括:互斥或閘,被配置成接收所述至少一個輸入的第一個位元及第二個位元;互斥反或閘,被配置成接收所述至少一個輸入的所述第二個位元及第三個位元;第一反或閘,被配置成接收所述互斥或閘的輸出及所述互斥反或閘的輸出,並輸出布思編碼位元; 第二反或閘,被配置成接收所述第一互斥或閘的所述輸出及所述布思編碼位元,並輸出賦能訊號,所述賦能訊號被配置成控制所述布思解碼器的邏輯閘控;第三反或閘,被配置成接收所述賦能訊號以及所述至少一個輸入的所述第三個位元的反相版本,並輸出選擇訊號。
- 如請求項3所述的記憶體內計算裝置,其中:所述第二個位元是所述至少一個輸入的相較於所述第一個位元而言的較高有效位元;並且所述第三個位元是所述至少一個輸入的最高有效位元。
- 如請求項1所述的記憶體內計算裝置,其中所述多個加法器中的第一加法器被配置成:自所述布思編碼器接收賦能訊號以及所述至少一個輸入的布思編碼位元;自所述多個多工器中的第一多工器接收所述至少一個權重的第一數目個位元或所述至少一個權重的第一數目個反相位元;以及基於所述賦能訊號或者所述至少一個輸入的所述布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作。
- 如請求項5所述的記憶體內計算裝置,其中所述第一加法器包括移位器,且其中所述第一加法器被配置成使得基於所述賦能訊號或者所述至少一個輸入的所述布思編碼位元來對所述 至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元執行操作,所述操作包括由所述移位器基於所述布思編碼位元來對所述至少一個權重的所述第一數目個位元或所述至少一個權重的所述第一數目個反相位元進行移位。
- 如請求項5所述的記憶體內計算裝置,其中所述第一加法器被進一步配置成:自所述布思編碼器接收選擇訊號;以及基於所述選擇訊號來將1位元添加至所述至少一個權重的所述第一數目個反相位元中的最低有效位元。
- 一種記憶體裝置,包括記憶體內計算硬體,包括:布思編碼器,具有:互斥或閘,在所述互斥或閘的輸入處耦合至第一資料輸入線及第二資料輸入線;互斥反或閘,在所述互斥反或閘的輸入處耦合至所述第二資料輸入線及第三資料輸入線;第一反或閘,在所述第一反或閘的輸入處耦合至所述互斥或閘的輸出及所述互斥反或閘的輸出;第二反或閘,在所述第二反或閘的輸入處耦合至所述互斥或閘的所述輸出及所述第一反或閘的輸出;以及第三反或閘,在所述第三反或閘的輸入處耦合至所述第二反或閘的輸出,且在所述第三反或閘的反相輸入處耦合至所述第三資料輸入線;以及 布思解碼器,具有:多個多工器,耦合至權重資料輸入線以及所述第三反或閘的輸出;以及多個加法器,其中所述多個加法器中的第一加法器耦合至所述多個多工器的子集的輸出、所述第一反或閘的所述輸出、所述第二反或閘的所述輸出及所述第三反或閘的所述輸出。
- 一種記憶體內計算裝置中的布思乘法方法,包括:由所述記憶體內計算裝置的布思編碼器對具有第一位元的多個輸入資料子集進行布思編碼,從而生成多個布思編碼訊號;以及由所述記憶體內計算裝置的布思解碼器對具有第二位元的權重進行操作,從而生成所述輸入資料子集與所述權重的部分乘積的一部分,其中用於對所述權重進行操作的操作是由所述多個布思編碼訊號來指定且所述布思解碼器包括多個多工器以及多個加法器。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/749,204 | 2022-05-20 | ||
| US17/749,204 US20230376273A1 (en) | 2022-05-20 | 2022-05-20 | Booth multiplier for compute-in-memory |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202347182A TW202347182A (zh) | 2023-12-01 |
| TWI877561B true TWI877561B (zh) | 2025-03-21 |
Family
ID=88791548
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112101189A TWI877561B (zh) | 2022-05-20 | 2023-01-11 | 記憶體內計算裝置、記憶體裝置及布思成法方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20230376273A1 (zh) |
| TW (1) | TWI877561B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20250157094A (ko) * | 2024-04-26 | 2025-11-04 | 동국대학교 산학협력단 | 부스 알고리즘 기반의 곱셈기를 이용한 cim 장치 및 방법 |
Citations (5)
| 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 |
| US20090228540A1 (en) * | 2008-03-05 | 2009-09-10 | Nec Electronics Corporation | Filter operation unit and motion-compensating device |
| CN107977191A (zh) * | 2016-10-21 | 2018-05-01 | 中国科学院微电子研究所 | 一种低功耗并行乘法器 |
| US20180307489A1 (en) * | 2017-04-24 | 2018-10-25 | Arm Limited | Apparatus and method for performing multiply-and-accumulate-products operations |
| CN114063975A (zh) * | 2022-01-18 | 2022-02-18 | 中科南京智能技术研究院 | 一种基于sram存内计算阵列的计算系统及方法 |
-
2022
- 2022-05-20 US US17/749,204 patent/US20230376273A1/en active Pending
-
2023
- 2023-01-11 TW TW112101189A patent/TWI877561B/zh active
Patent Citations (5)
| 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 |
| US20090228540A1 (en) * | 2008-03-05 | 2009-09-10 | Nec Electronics Corporation | Filter operation unit and motion-compensating device |
| CN107977191A (zh) * | 2016-10-21 | 2018-05-01 | 中国科学院微电子研究所 | 一种低功耗并行乘法器 |
| US20180307489A1 (en) * | 2017-04-24 | 2018-10-25 | Arm Limited | Apparatus and method for performing multiply-and-accumulate-products operations |
| CN114063975A (zh) * | 2022-01-18 | 2022-02-18 | 中科南京智能技术研究院 | 一种基于sram存内计算阵列的计算系统及方法 |
Non-Patent Citations (1)
| Title |
|---|
| 期刊 Mokhtar et. al. "Implementation of Modified Booth-Wallace Tree Multiplier in FPGA" Journal of Computer Science & Computational Mathematics Volume 11, Issue 3 Science and Knowledge Research Society 2021年9月30日公開文件 https://www.jcscm.net/cms/?action=showpaper&id=2193374 * |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202347182A (zh) | 2023-12-01 |
| US20230376273A1 (en) | 2023-11-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Nejatollahi et al. | CryptoPIM: In-memory acceleration for lattice-based cryptographic hardware | |
| Angizi et al. | MRIMA: An MRAM-based in-memory accelerator | |
| Kim et al. | Memristive stateful logic for edge Boolean computers | |
| Jaberipur et al. | Improving the speed of parallel decimal multiplication | |
| Kinniment | An evaluation of asynchronous addition | |
| CN110597484B (zh) | 基于存内计算的多比特全加器、多比特全加运算控制方法 | |
| Angizi et al. | Parapim: a parallel processing-in-memory accelerator for binary-weight deep neural networks | |
| Lu et al. | RIME: A scalable and energy-efficient processing-in-memory architecture for floating-point operations | |
| Alam et al. | Exact stochastic computing multiplication in memristive memory | |
| Kumawat et al. | Design and Comparison of 8x8 Wallace Tree Multiplier using CMOS and GDI Technology | |
| TWI877561B (zh) | 記憶體內計算裝置、記憶體裝置及布思成法方法 | |
| CN116820387A (zh) | 乘法器、乘累加电路和卷积运算单元 | |
| González et al. | Redundant arithmetic, algorithms and implementations | |
| Patel et al. | Area–delay and energy efficient multi‐operand binary tree adder | |
| Reis et al. | A fast and energy efficient computing-in-memory architecture for few-shot learning applications | |
| CN110506255B (zh) | 节能型可变功率加法器及其使用方法 | |
| Niras et al. | Fast sign‐detection algorithm for residue number system moduli set {2n− 1, 2n, 2n+ 1− 1} | |
| kumar Varshney et al. | Deployment of braun multiplier using novel adder formulations | |
| Kabra et al. | A radix‐8 modulo 2n multiplier using area and power‐optimized hard multiple generator | |
| Rooban et al. | Implementation of 128-bit radix-4 booth multiplier | |
| CN118092855A (zh) | 支持浮点数尾数乘法的存算一体乘法器及乘法运算方法 | |
| Lee et al. | A 2x2 Bit Multiplier Using Hybrid 13T Full Adder with Vedic Mathematics Method | |
| Angizi et al. | Deep neural network acceleration in non-volatile memory: A digital approach | |
| Singh et al. | Design of Low Power and Efficient Carry Select Adder Using 3‐T XOR Gate | |
| Vamsi | Comparative analysis of various types of multipliers for effective low power and time |