CN118696294A - 迭代混合矩阵乘法器 - Google Patents
迭代混合矩阵乘法器 Download PDFInfo
- Publication number
- CN118696294A CN118696294A CN202280088696.0A CN202280088696A CN118696294A CN 118696294 A CN118696294 A CN 118696294A CN 202280088696 A CN202280088696 A CN 202280088696A CN 118696294 A CN118696294 A CN 118696294A
- Authority
- CN
- China
- Prior art keywords
- circuit
- product
- bit
- value
- storage circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims description 55
- 238000009825 accumulation Methods 0.000 claims abstract description 52
- 239000003990 capacitor Substances 0.000 claims description 70
- 238000000034 method Methods 0.000 claims description 22
- 238000010586 diagram Methods 0.000 description 22
- 239000013598 vector Substances 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000007792 addition Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000000151 deposition Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008021 deposition Effects 0.000 description 2
- 229910052738 indium Inorganic materials 0.000 description 2
- 239000013641 positive control Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
- 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/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4814—Non-logic devices, e.g. operational amplifiers
-
- 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)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
本公开涉及一种混合时间共享迭代乘法累加电路,包括:乘积存储电路;乘法电路,所述乘法电路可操作以接收第一输入值、接收第二输入值、产生所述第一输入值与所述第二输入值的乘积,以及将所述乘积存储在所述乘积存储电路中;累加器存储电路,用于存储累加的值;以及累加开关,所述累加开关将所述乘积存储电路连接到所述累加器存储电路,所述累加开关可操作从而将所述乘积存储电路与所述累加器存储电路电并联连接,或者将所述乘积存储电路与所述累加器存储电路电断开。
Description
技术领域
本公开主要涉及用于矩阵乘法的处理架构、设备和方法,并且特别涉及混合乘法累加电路。
背景技术
矩阵乘法是许多数学计算中的重要操作。例如,线性代数可以采用矩阵乘法来求解诸如微分方程的线性方程组。此类数学计算例如应用于模式匹配、人工智能、解析几何、工程、物理、自然科学、计算机科学、计算机动画和经济学。
矩阵乘法通常在执行存储的程序的数字计算机中执行。程序描述了要执行的操作和计算机中的硬件,例如,数字乘法器和加法器执行操作。在一些计算系统中,专门设计的硬件可以加快计算速率。在一些应用中,实时处理是必要的,以便在有用的时间量内提供有用的输出,尤其是对于安全关键任务。而且,便携式设备中的应用仅具有有限的可用功率。尽管有这样的加速的计算系统,大矩阵和高数据速率的问题可能需要更长的时间来解决,并且使用比期望的更多的功率。因此,需要能够以更高的速率和更少的功率执行矩阵乘法的计算硬件加速器。
发明内容
本公开的实施例除可以提供混合计算硬件加速器等,用于使用乘法累加操作执行矩阵乘法。本公开的计算硬件加速器包括具有模拟累加器的数字二进制单比特乘法器。用于单比特乘法器的数据值各自存储在数字存储器中,并且单比特乘法结果作为电荷存储在电容器中。电容器电荷被组合以对值求和(累加),因而提供乘法累加操作。通过组合电容器电荷,求和操作几乎是瞬时的,这取决于导体中的电荷可以流动的速率,并且不需要外部功率。因而,本公开的实施例可以提供非常高的速度和低功率的乘法累加电路。因为电荷在电子系统中被记作Q,所以每个单比特乘法累加电路在本文中被称为qmac,并且是使用数字乘法和模拟累加的混合电路。
根据本公开的实施例,一种混合乘法累加电路包括单比特乘法累加电路的阵列,每个单比特乘法累加电路包括(i)第一存储元件,用于存储第一单比特值,(ii)第二存储元件,用于存储第二单比特值,(iii)比特乘法电路,用于将第一单比特值乘以第二单比特值从而计算乘积,以及(iv)模拟存储电路,其中,比特乘法电路可操作以在模拟存储电路中沉积代表乘积的电荷。单比特乘法累加电路的阵列一起可操作以组合沉积在每个模拟存储电路中的电荷,从而提供代表乘积总和的累加的电荷。模拟存储电路可以是电容器。
根据一些实施例,混合乘法累加电路包括与比特乘法电路和模拟存储电路连接的开关电路,开关电路在第一模式下可操作以将电荷从比特乘法电路转移到模拟存储电路,并且在第二模式下可操作以将比特乘法电路与模拟存储电路隔离并将阵列中的模拟存储电路连接在一起以提供累加的电荷。一些实施例包括连接到阵列的模拟存储电路的清除电路,清除电路可操作以从阵列中的模拟存储电路移除电荷。在一些实施例中,比特乘法电路是功能与门,或执行与门的功能。
在本公开的一些实施例中,混合乘法累加电路包括模数转换器,以将连接到阵列中的模拟存储电路的累加的电荷转换为数字累加的值。一些实施例包括移位电路或移位电连接,以将数字累加的值乘以二次方。一些实施例包括数字加法器,数字加法器可操作以将数字累加的值相加以产生数字矩阵值。数字加法器可以被流水线化。
在一些实施例中,转换并联连接的qmac 10的模拟存储电路16的输出的模数转换器不存在,并且混合乘法累加电路阵列的输出的加法由模拟加法器执行,模拟加法器可操作以将累加的电荷相加以产生模拟矩阵值。一些实施例包括连接到阵列中的模拟存储电路的电压乘法器,以将累加的电荷乘以二次方。这样的加法和乘法可以由被配置为加法器的操作放大器执行,操作放大器的输入连接到模拟存储电路,模拟存储电路可操作以提供模拟矩阵值。操作放大器的操作放大器输入可以被配置成将操作放大器输入乘以或除以二次方。一些实施例包括模数转换器,以转换模拟矩阵值从而产生数字矩阵值,使得操作放大器的输出被数字化。
在一些实施例中,比特乘法电路包括串联连接的开关,例如,串联开关电路包括成对的MOS晶体管、由正控制信号控制的第一MOS晶体管和由同一控制信号的反相(负)版本控制的第二MOS晶体管。串联连接的开关中的一个可以由权重值控制,另一个可以由表示权重值和输入值的矩阵乘法的输入值控制。
根据本公开的实施例,一种混合矩阵乘法器包括:数字存储元件,每个数字存储元件可操作以存储数字值;乘法电路,用于将存储的数字值相乘以产生乘积;以及模拟存储电路,其可操作以存储乘积。电压连接可以提供功率以操作数字存储元件、乘法电路和模拟存储电路。在一些实施例中,功率连接提供功率以操作数字存储元件、乘法电路和模拟存储电路,并且具有不大于1V的电压(例如,不大于500mV、不大于100mV、不大于50mV或不大于10mV)。乘法电路可以包括具有成对MOS晶体管的串联连接的开关。
根据本公开的实施例,一种混合时间共享乘法累加电路包括:乘积存储电路;乘法电路,其可操作以接收第一输入值、接收第二输入值、产生第一输入值与第二输入值的乘积,以及将乘积存储在乘积存储电路中;累加器存储电路,用于存储累加的值;以及累加开关,其将乘积存储电路连接到累加器存储电路,累加开关可操作从而将乘积存储电路与累加器存储电路电并联连接,或者将乘积存储电路与累加器存储电路电断开。
时间共享乘法累加电路的一些实施例包括第一多路复用器,第一多路复用器可操作从而:选定输入到第一多路复用器的多个第一输入值之一,并且其中,乘法电路可操作以从第一多路复用器接收多个第一输入值中的选定一个;接收第二输入值;以及产生多个第一输入值中的选定一个与第二输入值的乘积。一些实施例包括第二多路复用器,第二多路复用器可操作从而:选定输入到第二多路复用器的多个第二输入值之一,并且其中,乘法电路可操作以从第二多路复用器接收第二输入值中的选定一个;和产生多个第一输入值中的选定一个与第二输入值中的选定一个的乘积。
根据本公开的一些实施例,乘积存储电路和累加器存储电路是存储电荷的模拟存储电路。乘积存储电路和累加器存储电路可以是电容器。
根据本公开的一些实施例,乘法电路是用于对两个二进制比特相乘的单比特乘法电路。乘法电路可以包括串联连接的串联开关电路。累加开关可以是与乘法电路的串联开关电路串联连接的串联开关电路。乘法电路可以包括串联连接的串联开关电路,并且乘法电路和累加开关的串联开关电路中的一个或多个可以是差分开关。
根据本公开的一些实施例,操作累加开关以并联地连接乘积存储电路和累加器存储电路将累加器存储电路中的累加的值与乘积存储电路中的乘积组合,从而提供存储在乘积存储电路中和累加器存储电路中的组合的值。
混合时间共享矩阵乘法器的一些实施例包括控制电路,控制电路可操作以顺序地(i)向乘法器提供第一输入值和第二输入值并切换累加开关从而将乘积存储在乘积存储电路中;和(ii)切换累加开关从而并联地电连接乘积存储电路和累加器存储电路,并且将乘积存储电路中的乘积与累加的值组合,从而提供存储在乘积存储电路中和累加器存储电路中的组合的值。
根据本公开的实施例,一种混合矩阵乘法器包括多个时间共享乘法累加电路和用于将多个时间共享乘法累加电路的累加的值相加的加法器。累加的值可以是模拟值并且一些实施例可以包括用于将累加的值转换为数字值的模数转换器,并且加法器可以是数字加法器。在一些实施例中,累加的值是模拟值并且加法器是模拟加法器。
根据本公开的实施例,一种矩阵乘法的混合方法包括:
a)提供具有N比特的多比特值;
b)提供混合时间共享迭代乘法累加电路;
c)提供多比特值的输入比特,向乘法器提供第二输入比特,并且设定累加开关以将乘积存储电路连接到时间共享乘法累加电路,并且将乘积存储电路与累加器存储电路断开;
d)将多比特值的输入比特乘以第二输入比特,以形成存储在乘积存储电路中的比特乘积;
e)切换累加开关,以将乘积存储电路与时间共享乘法累加电路断开,并且将乘积存储电路连接到累加器存储电路,并且将乘积存储电路中的乘积与累加的值组合,以在累积器存储电路中产生组合的值;以及
f)重复步骤c)-e)N次,直到按比特顺序提供多比特值的所有比特,从而产生多比特值与第二输入比特的乘积。
根据本公开的实施例,一种矩阵乘法的混合方法包括:
a)提供具有N比特的第一多比特值和具有M比特的第二多比特值;
b)提供M个根据权利要求1所述的时间共享乘法累加电路;
c)提供第一多比特值的输入比特和提供第二多比特值的不同的第二输入比特到M个时间共享乘法累加电路中的每一个的乘法器,并且设定累加开关以将乘积存储电路连接到时间共享乘法累加电路,并且将乘积存储电路与M个时间共享乘法累积电路中的每一个的累积器存储电路断开;
d)将多比特值的输入比特乘以第二输入比特,从而通过M个时间共享乘法累加电路中的每一个形成存储在乘积存储电路中的比特乘积;
e)切换累加开关以将乘积存储电路与时间共享乘法累加电路断开,并将乘积存储电路连接到累加器存储电路,并且将乘积存储电路中的乘积与累加的值组合,从而在M个时间共享乘法累加电路中的每一个的累积器存储电路中产生组合的值;
f)对第一多比特值的N个比特中的每一个重复步骤c)-e),直到以比特顺序提供第一多比特值的所有比特;
g)缩放M个时间共享乘法累加电路中的每一个的累加的值;以及
h)将M个经缩放的时间共享乘法累加电路中的每一个的累加的值相加以产生乘积。
根据本公开的实施例,一种矩阵乘法的混合方法包括:
a)提供具有N比特的第一多比特值和具有M比特的第二多比特值;
b)提供根据权利要求1所述的时间共享乘法累加电路;
c)提供第一多比特值的输入比特并向乘法器提供第二多比特值的第二输入比特,以及设定累加开关以将乘积存储电路连接到时间共享乘法累加电路并将乘积存储电路与时间共享乘法累加电路的累加器存储电路断开;
d)将第一多比特值的输入比特乘以第二多比特值的第二输入比特,以形成存储在乘积存储电路中的比特乘积;
e)切换累加开关以将乘积存储电路与时间共享乘法累加电路断开,并且将乘积存储电路连接到累加器存储电路,并且将乘积存储电路中的乘积与累加的值组合从而在M个时间共享乘法累加电路中的每一个的累加器存储电路中产生组合的值;
f)对第一多比特值的N个比特中的每一个重复步骤c)-e),直到以比特顺序提供第一多比特值的所有比特;
g)缩放时间共享乘法累加电路的累加的值以产生缩放的值;
h)将缩放的值加和到多比特乘积;以及
i)重复步骤c)-h)以产生多比特乘积。
根据本公开的实施例,一种混合矩阵乘法器包括:混合时间共享迭代乘法累加电路;存储器电路,用于存储累加的值;以及控制电路,控制电路可操作以:
a)重复且顺序地(i)提供第一输入值并向乘法器提供第二输入值,设定累加开关以将乘积存储电路连接到乘法器并将乘积存储电路与累加器存储电路断开,和(ii)切换累加开关以将乘积存储电路与时间共享乘法累加电路电断开,并且将乘积存储电路电连接到累加器存储电路,从而组合乘积存储电路中的乘积与累加的值,并且提供被存储在累加器存储电路和乘积存储电路中的组合的值;和
b)将累加的值存储在存储器电路中。
本公开的一些实施例包括:存储器电路,每个存储器电路用于存储累加的值;和加法器,用于在存储器电路中加和累加的值。控制电路可操作以提供不同的第一输入值和提供不同的第二输入值,并且在每个存储器电路中存储累加的值。
根据本公开的一些实施例,一种时间共享乘法累加电路包括:乘法电路,乘法电路可操作以接收第一输入值、接收第二输入值,以及产生第一输入值和第二输入值的乘积;累加数字存储电路,累加数字存储电路可操作以存储累加的数字值;以及数字比特累加器,数字比特累加器可操作以接收乘积,将乘积与存储在累加数字存储电路中的累加的数字值组合,并且输出累加的数字值。将乘积与累加的数字值组合可以包括(i)如果乘积为一且累加的数字值为零则在累加数字存储电路中存储一个值;(ii)如果乘积为一且累加的数字值为非零则保持相同的累加的数字值,或者(iii)如果乘积为零则将累加的数字值缩放二倍。本公开的一些实施例包括:乘积存储电路,乘积存储电路可操作以接收乘积;和一比特模数转换器,一比特模数转换器被连接到乘积存储电路并连接到数字比特累加器。乘积存储电路可操作,以将乘积提供给一比特模数转换器,并且一比特模数转换器可操作以接收乘积,将乘积转换为数字比特乘积,并且将数字比特乘积提供给数字比特累加器。
本公开的实施例提供使用乘法累加操作执行矩阵乘法的快速、高效、低功率和小型混合硬件加速器。
附图说明
本公开的前述和其它目标、方面、特征和优点将通过参考结合附图所作的以下描述而变得更加显而易见且更好地理解,其中:
图1A和图1B以数学方式图示了对于理解本公开的实施例有用的矩阵乘法操作;
图1C和图1D图示了对于理解本公开的实施例有用的通过简化的计算机程序的矩阵乘法操作;
图2是根据本公开的说明性实施例的单比特乘法累加电路的功能示意图;
图3是根据本公开的说明性实施例的图2中所示的单比特乘法累加电路的一维阵列的示意图;
图4A根据本公开的说明性实施例的具有开关电路和清除电路的单比特乘法累加电路的功能示意图;
图4B是根据本公开的说明性实施例的图4A的功能示意图的抽象;
图4C是用于操作根据本公开的说明性实施例的图4A的单比特乘法累加电路的时序图;
图5是根据本公开的说明性实施例的图4A中所示的单比特乘法累加电路的一维阵列的示意图;
图6用图表图示了对于理解本公开的实施例有用的具有乘法累加值的乘法操作;
图7是根据本公开的说明性实施例的具有数字求和电路的单比特乘法累加电路的二维阵列的示意图;
图8是根据本公开的说明性实施例的具有模拟求和电路的单比特乘法累加电路的二维阵列的示意图;
图9至图10是根据本公开的说明性实施例的模拟求和电路的示意图;
图11A是矢量矩阵混合乘法累加电路的示意图,而图11B图示了根据本公开的说明性实施例的图11A的矢量矩阵混合乘法累加电路中的矩阵值;
图12是包括具有根据本公开的说明性实施例的图8中所示的模拟求和电路的单比特乘法累加电路的二维阵列的矢量矩阵混合乘法累加电路的示意图;
图13是用模拟电压控制的级联开关的抽象示意图,揭示了根据本公开的说明性实施例的低功率单比特乘法;
图14是根据本公开的说明性实施例的用低功率模拟电压控制的开关的示意图;
图15A是根据本公开的说明性实施例的具有累加电容器的时间共享迭代乘法累加开关的示意图;
图15B是根据本公开的说明性实施例的具有乘积存储电容器和数字累加器的时间共享迭代乘法累加开关的示意图;
图15C是根据本公开的说明性实施例的具有数字累加器的时间共享迭代乘法累加开关的示意图;
图16是根据本公开的说明性实施例的具有控制器和输入多路复用器的时间共享迭代乘法累加开关的示意图;
图17是根据本公开的说明性实施例的方法的流程图;
图18是根据本公开的说明性实施例的具有模拟加法器的多个时间共享乘法累加开关的示意图;
图19是根据本公开的说明性实施例的具有数字加法器的多个时间共享乘法累加开关的示意图;
图20是根据本公开的说明性实施例的具有控制器和两个输入多路复用器的时间共享迭代乘法累加开关的示意图;
图21是根据本公开的说明性实施例的方法的流程图;
图22是根据本公开的说明性实施例的用于多比特乘法的时间共享迭代单比特乘法累加开关和数字移位累加器的示意图;
图23是根据本公开的说明性实施例的用于带模拟存储的多比特乘法的时间共享单比特迭代乘法累加开关和模拟加法器的示意图;
图24是根据本公开的说明性实施例的用于带数字存储的多比特乘法的时间共享单比特乘法累加开关和数字加法器的示意图;
图25是图示根据本公开的说明性实施例的用于两比特值的时间共享乘法累加的表格;以及
图26A和图26B是图示根据本公开的说明性实施例的用于四比特值的时间共享乘法累加的表格。
本公开的特征和优点将在结合附图考虑时,从下面阐述的详细描述而变得更加明显,其中,类似附图标记在各处标识相应的元件。在附图中,类似的附图标记一般表示相同的、功能上类似的和/或结构上类似的元件。这些图不一定按比例绘制。
具体实施方式
本公开的某些实施例涉及单比特混合乘法累加电路(每个qmac),单比特混合乘法累加电路包括:两个数字单比特二进制存储元件,每个存储单比特值;乘法器,以将两个单比特值相乘以计算乘积;以及模拟电荷存储元件,诸如电容器,用于将乘积存储为电荷(或电压)。Qmac的一维阵列可以计算和求和单比特乘积的一维阵列(向量)。Qmac的二维阵列可以计算两个多比特数字被乘数的乘积。(被乘数是要乘以另一个值以计算乘得的乘积的值)。用于计算多比特被乘数的qmac的二维阵列的大小可以是N+M-1,其中,N是两个数字被乘数中的一个的比特数,并且M是两个数字被乘数中的另一个的比特数。具有M个值的两个线性向量(数字的一维阵列)的向量矩阵乘法和累加可以用M个二维阵列计算并累加为单个值。
如图1A中所示,计算C=AxB,其中,A、B和C是矩阵乘法的矩阵。如果A是m x n矩阵,B是n x p矩阵,则C是m x p矩阵,其中,Cij=∑Aik Bkj,对于k=1到n,i=1到m,j=1到p。因而,矩阵乘法是一系列大小为k的(i x j)乘法累加操作,每个乘法累加操作提供矩阵C的一个值。图1B图示了C=AxB,其中,p=1,使得C和B是线性(例如,一维的或矢量)矩阵。图1C是简化的软件程序,图示了图1A的矩阵计算的计算,图1D是简化的软件程序,图示了图1D的矩阵计算的计算。“For k=0to(n-1)”循环是乘法累加操作,需要n次乘法和n次加法。
根据本公开的实施例,如图2和图3中所示,可以通过qmac 10的阵列来执行混合乘法累加操作,其中,每个qmac10包括:第一数字;单比特二进制存储元件12,用于存储第一比特A;第二数字;单比特二进制存储元件12,用于存储第二比特B;比特乘法器14(比特乘法电路14),用于对被乘数A和B相乘,产生被存储为比特电容器16(模拟存储电路16)中的电荷的乘积。在一些实施例中,存储元件12是SRAM单元、DRAM单元、触发器(例如,D触发器)或一对反相器,其输入连接到输出,如图2小图中所示。在一些实施例中,比特乘法器14是与门,仅当A和B两者都是正的(例如,一)时提供正值(例如,一),因而提供乘法。与门,如图2中所示,可以实现为具有连接到用于A的存储元件12的源极和连接到用于B的存储元件12的栅极的晶体管(或反之亦然),当被乘数A和B的乘积为一值时提供被存储在比特电容器16中的电荷Q。如果A或B的值对于不同的qmac 10是相同的,则用于常数的存储元件12可以由多个qmac10共享(例如,单个存储元件12可以向多个qmac10提供输入值,如下面讨论的图7中所示的)。模拟和数字电路设计领域的技术人员应明白,图2和图3是简化设计,更复杂的设计被包括为本公开的实施例,诸如下面讨论的图13和图14中图示的那些设计,其可以在非常低的电压和功率下操作。例如,沉积在比特电容器16上的电流量可以非常小,以减少qmac 10使用的功率并增加电路速度。比特电容器16可以非常小,以减小集成电路实施例中的比特电容器16的面积。因而,在一些实施例中,比特乘法器14非常精确地随时间控制比特电容器16上的电流沉积电荷,以保持乘法累加操作的准确性和精度。因而,比特乘法器14可以被设计成非常精确地控制沉积在比特电容器16上的电荷量,例如,响应于仔细校准的定时信号和电压。
图3图示了具有并联连接的比特电容器16(模拟存储电路16)的四个qmac 10,以在混合乘法累加电路20中对四个乘积求和。四个并联qmac 10为每个乘以单比特B值的四个单比特A值提供乘法累加操作。单比特B值可以相同,也可以不同。因而,图3图示了用于对四个单比特二进制值执行乘法累加操作的电路(例如,其中,在图1A至图1D的数学图示中,k=4)。因而,单比特乘法累加电路10的阵列一起可操作,以组合沉积在每个模拟存储电路16中的电荷,从而提供代表qmac 10的乘积之和的累加的电荷。
并联连接的比特电容器16上的总电荷提供了可以用模数转换器(ADC)30转换为数字值或用作模拟值以进行进一步计算的模拟累加的值输出O。电压或电荷的绝对值(输出O)必须按电容器数量n缩放,因为并联电容器具有等于并联连接电容器的电容之和的电容。由于电容上的电荷等于电压乘以电容(Q=CV),所以如果电容增加固定的电荷,电压将相应地降低。例如,如果每个电容器存储相当于一值的电荷Q,则值的总和将是四(在图3的图示中),但是电压将保持为一,因为四个电容器并联电连接。因而,电压输出必须按电容器的数量来缩放(例如,在图3的图示中为四倍)。
混合乘法累加电路可能需要比数字等效电路更少的功率,例如,使用数字加法器。来自小比特电容器16的净电流或电荷泄漏可以非常小,并且模拟存储电路16和其它模拟操作可以在非常低的电压下操作,例如,不大于1V(例如,不大于500mV、不大于100mV、不大于50mV或不大于10mV),并且低于用于常规数字逻辑的电压(例如,5V、3.6V、3.3V或1.65V)。本公开的一些实施例可以在基本上10mV下操作。
图2和图3电路是qmac 10及其在乘法累加阵列中的实现的简化表示。如图所示,在比特电容器16上的电荷沉积的精确控制有助于保持乘法累加准确性和精度。如图4A中图示的,用于qmac 10的更复杂电路通过开关电路18控制qmac 10阵列中的qmac 10之间的电连接,开关电路18(在图中也被指定为S)连接到比特乘法器14的输出和比特电容器16。当开关电路18导通时,代表比特A和B的乘积的电荷Q通过开关电路18的左晶体管沉积在比特电容器16上。当开关电路18关断时,左晶体管关断,包括开关电路18中的中心晶体管的反相器将正信号施加到包括开关电路18的右晶体管的连接开关,并联连接比特电容器16。
图4A的开关电路18是简化的电路并且可以实现更复杂的电路,以提供开关功能并且被包括在本公开中。因而,在第一模式下,开关电路18导通并且比特乘法器14的乘法乘积被单独地和个别地施加以将电荷转移到每个qmac 10中的比特电容器16。在第二模式下,开关电路18关断,比特电容器16并联连接,并且每个qmac 10中的比特电容器16上的电荷Q与比特乘法器14隔离并被求和以提供累加的值输出O。跨比特电容器16连接的清除电路19(在图中也被指定为C)可以去除跨比特电容器16的电荷Q并准备qmac 10以执行与新的单比特数字值A和B的下一乘法。图4B示出了图4A的单比特乘法累加电路的抽象,其中,A和B是单比特数字存储元件12,M是比特乘法器14,S是开关电路18,C是清除电路19。
图4C图示了用于qmac 10的乘法累加循环。负载信号A和B被设定为在存储元件12中存储相应的值,例如,由计算机或其它状态机控制器提供并被比特乘法器14相乘。与此同时,清除信号为高电平,开关信号为低电平,以隔离和清除比特电容器16。一旦比特电容器16被清除,清除信号被设定为低电平并且开关信号可以被设定为高电平,以在比特电容器16中沉积表示A和B的乘积的电荷Q。一旦电荷Q被加载到比特电容器16,开关信号被设定为低电平,以将比特乘法器14与比特电容器16隔离,并将所有比特电容器16并联连接,由此将比特电容器16上的电荷Q求和,以提供累加的值输出O。被求和的电荷Q等于输出O,适当地缩放,可以用模数转换器30转换为数字值或作为模拟值用于进一步计算。整个操作可以随着开关电路18从第一模式变为第二模式而在两个循环内完成。
图5图示了使用图4B的抽象表示形成混合乘法累加电路20的qmac 10的阵列。在一些实施例中,单个清除电路19可以用来清除当开关电路18关断时连接的所有比特电容器16的电荷,但是连接在比特电容器16之间的开关电路18可以干扰所有比特电容器16的电荷清除。在一些实施例中,为每个qmac 10提供清除电路19并且清除电路19在混合乘法累加电路20中被共同控制,开关电路18也是如此。
图6图示了用于两个二进制、多数字、多比特值的完整乘法。图6图示了具有四比特的值的情况,但是任何比特数目都可以用于具有相应于相乘的比特数目的qmac 10数目的混合乘法累加电路20。每个混合乘法累加电路20中的qmac 10的数目相应于A中的比特的数目,并且混合乘法累加电路20的数目相应于要在同一时间完成的乘法累加计算的数目。当qmac10的数目少于A中的比特数目或要在同一时间完成的乘法累加计算的数目少于B中的比特数目时,可以执行部分计算,并且在外部计算机或控制器诸如状态机的控制下对乘积存储和组合。
如图6的4比特示例中所示,所示的每一行乘积是一比特的值B乘以多比特的值A。行关于图6彼此空间移位来表示每行中乘积的相对量值(地点),传统的乘法是手工写在纸上。在每个混合乘法累加电路20中对每列21乘积(具有相同的量值或位置)的乘积(相乘值)求和,以形成如图5中所示的累加的结果(求和输出值O)。每列21乘积可以用不同的混合乘累加电路20计算并求和。混合乘法累加电路20的累加的结果(输出值O)然后被求和(加和在一起)以提供多比特乘法的最终值。
可以通过qmac 10的一维阵列来执行每列21乘积的乘法和累加。如图7中所示,每列qmac 10形成共享共用B存储元件12的混合乘法累加电路20。Qmac 10的阵列在每个混合乘法累加电路20中(在该示例中相应于图6中图示的乘法)计算和求和一列21乘积作为输出值O。每列21乘积用单独的混合乘法累加电路20计算。每个混合乘法累加电路20的输出值O可以加在一起。因为每列21乘积具有不同的地点值(相对量值),每列21乘积中的值必须被缩放以将它们乘以它们的地点值,例如,乘以一到六个地点,从而在它们被相加之前将它们乘以2,4,8,16,32或64。可以在不重新加载其中比特不改变的比特值(B存储元件12)的情况下执行多个乘法操作,例如,如果比特值表示乘以多个输入值所共有的权重。
形成混合多比特乘法器22的混合乘法累加电路20的阵列提供具有比常规数字电路少得多的循环的极快操作。此外,求和输出值O的加法步骤(如果以数字方式完成)可以分为多个阶段(例如,一次相加成对的值)和流水线化,以便操作更快,并且不同值的乘法累加操作可以在时间上重叠,例如,在计算机或状态机控制器的控制下。
在本公开的一些实施例中,来自混合乘法累加电路20的输出值O的加法被数字地计算。在一些实施例中,来自混合乘法累加电路20的输出值O的加法使用模拟电路计算。如图7中所示,输出值用模数转换器30转换,以提供存储在寄存器或其它存储器中的数字比特值,数字比特值被缩放,例如,通过将它们相对于彼此移位(每个移位相应于二次方),并使用数字加法器对缩放后的比特值求和。
如图8中所示,每个混合乘法累加操作的模拟求和结果(qmac 10的列)是电压(或电荷),其乘以相应于模拟和的位置的量(例如,通过,电压乘法器VM)并将乘以的模拟和和加在一起,例如,使用模拟加法器,并用模数转换器30将最终的和转换为数字值。在此类实施例中,整个计算可以在两个开关循环(不包括任何清除或负载循环)内完成,提供与常规实现相比非常快速的操作。图8图示了具有用于每个qmac10的单独存储元件12的实施例。
在一些实施例中,模拟电压乘法和求和可以使用以求和模式配置的操作放大器(op amp)40来实现。图9图示了反相求和(相加)操作放大器40。操作放大器40的输出Vo等于每个电压V1到VN的总和乘以R’/Rn之比,其中,n是特定列,N是要相加的乘积的列数21(例如,在图7的示例中为7)。每个电压相应于一列qmac 10的输出O。例如,R1可以相应于要求和的最低地点值,以便,R’/R1=1/64,R’/R2=1/32,R’/R3=1/16,R’/R4=1/8,R’/R5=1/4,R’/R6=1/1,以及R’/R7=1。操作放大器40的反相输出可以使用模数转换器30转换为数字值并适当地缩放。
图10图示了非反相求和(相加)操作放大器40。操作放大器40的输出Vo等于电压V1至VN每一个乘以R’/R之比的和,其中,R1-RN各自相等。电压值V1-VN可以用电阻器实现的分压器进行缩放。例如,连接到V1的电阻器可以具有63:1的比率,连接到V2的电阻器可以具有31:1的比率,连接到V3的电阻器可以具有15:1的比率,依此类推,缩放电压从而相应于相加的值的地点。操作放大器40的输出可通过(R+R’)/R(例如,64)的比率缩放,并且使用模数转换器30转换为数字值。
图7和图8的实施例模拟求和可以提供更快的操作,而图6的实施例数字求和可以提供更高的精度。本公开的实施例不受图示的比特数目的限制。例如,混合乘法累加器电路20可以具有64,128,256,512,1024,2048,4096,8192或者16384个qmac 10或更多,并且可以在阵列中采用相等数目的混合乘法累加电路20,以提供具有许多比特的高速乘法。本公开的实施例可以作为硬件加速器提供给常规计算机或图形处理器。数据可以以流水线的方式提供给硬件加速器,在输入和输出上有两个或更多的移位寄存器。混合乘法累加电路20的阵列的任何硬件实现必须被调整大小以有效地适应输入向量的大小。如果混合乘法累加电路20的阵列对于任务来说太大,则大部分电路不被使用(例如,qmac 10的数目太大)。如果混合乘法累加电路20的阵列太小,则必须将向量乘法分解成更小的向量;太多的小向量同样导致低效率。
如图6中所示,单比特乘法累加电路10的二维乘法阵列可以执行多比特乘法(例如,如图7和图8中所示)。混合多比特乘法器22包括多个阵列,诸如图8和图9的那些阵列,形成混合矩阵乘法累加电路24可以计算整个向量乘法。用于向量乘法累加的每个多比特乘法(例如,如图1B中所示)可以产生数字乘积(如图7中所示,或者在模拟和输出值O的模数转换之后),并且数字乘积可以使用数字加法器进行数字相加。在一些实施例中,用于向量乘法累加的每个多比特乘法(例如,如图1B中所示)可以产生数字乘积(如图8中所示的输出值O),并且模拟乘积可以使用类似电路相加,如图1至图6中所示。模拟乘积P(如图8中所示)可以使用与比特乘法器14类似的沉积电路沉积在电容器(例如,类似于比特电容器16,但是存储容量更大用于更大电荷)中。如图12中所示,类似于图5的开关和清除电路18可以在电容器上沉积电荷Q并且可以通过并联连接电容器然后用模数转换器30转换求和的电荷来对电荷求和,从而在一个循环内提供整个矢量矩阵乘法。图11A图示了混合矩阵乘法累加电路24,并且图11B将混合多比特乘法器22与向量乘法累加计算中的被乘数相关联。
本公开的实施例可以提供非常低电压的乘法累加电路10,例如,使用从10mV到1V的电压。这样的低电压提供了低功率操作。使用常规与门的比特乘法器14可能需要例如在相对高电压下操作的六个相对大的晶体管来实施比特乘法电路,比特乘法电路可以充分控制沉积在模拟存储电路16上的电荷Q(例如,从1.65-5V)。与此相反并且如图13中所示,本公开的比特乘法器14可以包括串联连接的串联开关电路15,其可以在相对低的电压(例如,不大于1V且低至10mV)和低功率下操作并且可以通过例如仅四个相对小的晶体管充分地控制沉积在模拟存储电路16上的电荷Q。
如图13中所示,一系列三个串联开关电路15和模拟存储电路16可以实现功能上类似于图4A和图4B中图示的电路的qmac 10。每个串联开关电路15具有两个差分电压输入(V和V杠,其中,V杠是V的反相值),两个电压输入In和In杠,其中,In杠是In的反相值)以及输出O。因而,图13和图14(在下面更详细地讨论)中的信号A、B和Switch中的每一个是差分信号。串联中的第一串联开关电路15具有参考电压VREFP(例如,VREF,高或正值,诸如10mV)及其反相值VREFN(例如,低或负值,诸如0mV)作为两个电压输入和值A(例如,权重值)及其反相值A杠作为两个输入值。如串联开关电路15A的图13小图中所示,如果A高(例如,正或10mV)并且A杠因此低(例如,0mV),则输出O为VREF,如非虚线连接指示的。如串联开关电路15B的图13小图中所示,如果A低(例如,负或0mV)并且A杠因此高(例如,10mV),则输出O为VREFN,如非虚线指示的。因而,如果A为正,则O为正,并且如果A为负,则O为负。串联中的第二串联开关15具有输入值B及其反相B杠,采取来自第一串联开关15的值O作为VREFP正值,并且VREFN作为反相电压值(例如,0V)。因而,如果O低(负),则无论B具有什么值,来自第二串联开关电路15的输出P都将低(负)。如果O高(正)并且如果B高(正),则来自第二串联开关电路15的输出O将为高(正),并且如果B低,则来自第二串联开关电路15的输出P将低(负)。因而,前两个串联开关电路15以减少的电路和功率执行与功能。
第三串联开关电路15可以用于实现开关电路18,并且具有输入开关值及其反相(相应于图4A、图4B的开关值),采取来自第二串联开关15的值O作为VREF值,并且公共VSUM连接作为反相电压值。因而,如果开关为高,则输出O对模拟存储电路16充电。如果开关为低,则模拟存储电路16上的电荷Q通常连接到qmac 10的阵列中的任何其它模拟存储电路16(例如,如图3中所示,作为模拟qmac10阵列输出),提供求和操作。
图14图示了包括三个串联连接的串联开关电路15的低电压qmac 10的一些实施例。每个开关电路15包括一对简单的MOS(金属氧化物半导体)晶体管,其具有单独的差分输入和公共输出。一对简单MOS晶体管中的一个由正控制信号控制,另一个由同一控制信号的反相(负)版本控制,例如,任何单比特存储元件12的正输出和负输出(例如,D触发器或关于图2图示和所述的成对反相器)。电路的功能如上文关于图13所述。这样的一系列串联开关电路15可以需要更少、更简单的晶体管,这些晶体管在低得多的电压下操作(例如,百分之一或小于百分之一,例如0.624%,或10mV而非1.65V),因此需要少得多的功率。在模拟存储电路16上的组合(加和)电压可以是:
VSUM=((n*VREFP)+(N-n)*VREFN))/N。
其中,VREFN=0V:
VSUM=(n*VREFP)/N,
其中,n是电容器的数目,N是连接成行的qmac10的数目。VSUM然后可以如上所述缩放或转换。(图14不包括清除电路19。)
因而,根据本公开的一些实施例,一种混合矩阵乘法器包括:数字存储元件12,每个数字存储元件12可操作以存储数字值;乘法电路14,用于将存储的数字值相乘以产生乘积;模拟存储电路16,其可操作以存储乘积;以及功率连接(例如,VREFP和VREFN),以提供功率从而操作数字存储元件12、乘法电路14和模拟存储电路16。功率连接可以具有不大于1V、不大于500mV、不大于100mV、不大于50mv或不大于10mV的电压。比特乘法电路14可以包括串联连接的开关15。
在一些实施例中,混合矩阵乘法累加电路24、混合多比特乘法器22或混合乘法累加电路20的硬件实现不完全匹配于特定应用所期望的计算。对于此类应用,可以将计算划分为与可用硬件更好匹配的子问题,并将结果组合以提供期望的计算。子问题可以在时间上顺序地完成,以便硬件是时间共享的或时间多路复用的。一些值(例如,用于被乘数B的比特)可以被存储在存储元件12中用于多个硬件操作,由此减少硬件中使用的功率和时间。
本公开的实施例使得能够在非常高的速率下使用非常少的能量进行矢量乘法累加计算。不是需要程序的n个循环(例如,如图1C和图1D中所示),每个都具有执行程序所需的多个机器代码循环,整个计算在单个循环内完成。许多大型矩阵操作,例如,在机器学习应用中,矩阵中有许多零值,并且需要相对较低的比特精度来迭代匹配问题的解决方案。因而,本公开的实施例提供了用于此类应用的高效电路。
在本公开的一些实施例中,在单个步骤中执行多比特数字乘法,例如,在混合乘法累加电路20中使用多个单比特乘法累加电路10,如图2和图3中所示。两个多比特数字值可以在单个步骤中使用混合乘累加电路20的阵列来相乘,如图6至图8图示的。在这样的混合多比特乘法器中,通过仔细匹配比特乘法电路14(例如,包括多系列的串联开关电路15)的操作性能,以使每个比特乘法电路14存储的电荷相同,并且来自并联连接的模拟存储电路16的模拟和是正确的,至少在任何模数转换器30的误差范围内。
在本公开的一些实施例中,不是匹配比特乘法电路14的操作性能,而是重复地使用单个比特乘法电路14(例如,随时间迭代以使单个比特乘法电路14随时间共享),以在累加器存储电路17中累积比特乘积并且不需要电路匹配。虽然重复需要时间,但是单比特乘法电路14和累加器乘积电路17可以非常小(例如,包括三个晶体管(如图14所示))和附加的累加器电容器。因而,许多数百万甚至数十亿这样的电路可以被构造在集成电路中并且与现有的数字乘法器相比以相对较少的能量使用来提供非常快速的矩阵乘法。
图15A图示了包括单比特乘法累加电路10的简单的混合迭代单比特乘法累加电路11(iqmac 11),单比特乘法累加电路10具有通过用作累加开关60的开关18与累加器存储电路17(例如,电容器17具有与单比特乘法累积电路10的乘积存储电路16相同的电容)电并联连接的乘积存储电路16(电容器16)。累加开关60可以与单比特乘法累加电路10的差分开关18相同、基本上类似或相同,如图16中更详细地示出的。图16图示了图14的单比特乘法电路14,添加了形成迭代单比特乘法累加电路11的累加器存储电路17。可选地,累加器存储电路17的输出可以通过可选开关18连接到模数转换器30。
图15A示出了被存储在两个相应的单比特存储元件12中的两个单比特值的乘法。当开关18被设定为乘法模式(第一模式)时,乘积P被存储在乘积存储电路16(电容器16)中,如上文关于图2和图14所述的。当开关18被设定为累加模式(第二模式)时,被存储在乘积存储电路16中的任何电荷与被存储在累加器存储电路17中的任何电荷共享(组合),类似于图3中所示的累加和,除了在迭代单比特乘法累加电路11中仅存在两个电容器16、17。通过在存储元件12中重复提供比特、在乘法模式下设定开关18、在乘积存储电路16中沉积表示存储元件12的比特乘积的电荷以及在累积模式下设定开关18从而组合电容器16和电容器17中的电荷,可以在两个电容器中累积多个比特乘积。
图15B图示了包括单比特乘法累加电路10的简单的混合迭代单位乘法累加电路11(iqmac 11),单比特乘法累加电路10提供被存储在乘积存储电路16(电容器16)中的比特乘积,其值被模数转换器30数字化(数字化为一或零数字比特乘积)。在一些实施例中并且如图15C中所示,单比特乘法累加电路10实际上产生的电压是数字电压,在这种情况下不需要乘积存储电路16和单独的模数转换器30。数字比特累加器32接收每个数字比特乘积并将其与累加数字存储电路34(例如,存储器或寄存器)中的多比特累加的数字值组合。每个组合包括在累加数字存储电路34中缩放累加的数字值。将数字比特乘积与累加的数字值组合可以包括:如果数字比特乘积为一且累加的数字值为零,则在累加数字存储电路中存储一个值;如果数字比特乘积为一且累加的数字值为非零,则保持相同的累加的数字值;或者如果乘积为零,则将累加的数字值缩放二,如下文进一步所述。组合可以用简单的数字电路来实现,例如,带有数字移位电路36的状态机(例如,除以二电路)。这样的混合迭代单比特乘法累加电路11不需要匹配的电容器16和17。在一些实施例中,具有数字移位电路36和累加数字存储电路34的合适状态机的尺寸可以相对较小,例如,与图16和图17的电容器16和17以及图16A的多比特ADC 30相比。特别地,在诸如图15B和图15C的实施例中,不需要多比特ADC30,减小了iqmac 11的电路大小并减少了操作所需的时间和功率。
如图16中所示,单个比特可以通过将单个比特B应用于比特乘法电路14的一个输入并连续地将多比特值A的比特(在本示例中为A0至A3)应用于比特乘法电路14的输入而乘以多比特值中的多个比特。通过将多比特值存储在寄存器(存储器)56中并连续地多路复用寄存器56中的连续比特以及在控制电路70的控制下将多路复用比特应用于比特乘法电路14,可以按从低比特到高比特的比特顺序进行连续比特应用,控制电路70可以提供多路复用器50的比特选定值和寄存器56中的多比特值A。
如图17中所示,通过首先在步骤100中提供iqmac 11然后在步骤110中清除乘积存储电路16和累加器存储电路17,可以将单个比特B乘以多比特值A(例如,将它们的值设定为零,例如,通过以如图4A至图4C中图示的清除电路C将它们接地)。控制电路70在步骤102中向存储元件12提供单比特值B和寄存器56中的多比特值A并在步骤115中将比特计数值N设定为零。步骤102和110可以以任何顺序完成。多比特值A的比特N在步骤120中由多路复用器50选定,并且开关18在步骤125中在控制电路70的控制下被设定成乘法(第一)模式。比特乘法器14将多比特值A的比特N乘以比特B,并在步骤130中将乘积存储在乘积存储电路16中。然后开关18在步骤135被设定为累加(第二)模式,并联连接存储电路,以便在乘积存储电路16和累加器存储电路17中的任何电荷在步骤140中在乘积与累加器存储电路16、17之间组合并共享。然后在步骤145中测试比特计数N以发现多比特值A的所有比特是否已经乘以比特B。如果不是多比特值A的所有比特都已经乘以比特B,则在步骤150中递增N(例如,通过控制电路70)。如果多比特值A的所有比特都已乘以比特B(测试步骤145),则过程完成并将相应于乘积的值存储在累加器存储电路17中。可选地在开关18的控制下,模数转换器30在步骤155中将累加的乘积转换为数字值。例如,单比特乘法累加电路11的输出(VACC)本身可以例如使用串联开关电路15进行切换并应用于模数电路30。如果A的所有比特还没有与比特B相乘,则比特计数N递增并且步骤120到145重复,直到A的所有比特相乘。然后可以进行新的乘法。
在一些实施例中,可以提供迭代单比特乘累加电路11,用于将第二多比特值B的每个比特与第二多比特值B中的每个比特同时相乘。每个迭代的单比特乘法累加电路11然后累加相应于图6中每行或乘积的和。因而,在该示例中,四个迭代的单比特乘法累加电路11每个累加相应于图6中图示的计算行的值。图18图示了累积的乘积的模拟求和。每个累加的乘积(相应于图6的一行)被缩放(乘以相应于该行的二次方),例如,用电压倍增器,然后相加,例如,如图7至图9中图示的。如图19中所示,每个累加的乘积可以用模数转换器30数字化,用移位电路缩放,然后使用数字加法器54进行数字求和。顶行被缩放(相乘)20=1或者移位零位,下一行被缩放(相乘)21=2或移位一位,下一行被缩放(相乘)22=4或移位两位,最后一行被缩放(相乘)23=8或移位三位。
根据本公开的一些实施例,多比特值B可以通过迭代地将iqmac 11应用于多比特值B的每一比特而乘以多比特值A,以使得仅使用一个迭代单比特乘法累加电路11来计算整个乘积。图20图示了在控制电路70的控制下用多路复用器50代替图16中用于比特B的存储元件12的有用电路。控制电路70可以在寄存器56中存储多比特值B并用多路复用器50选定多比特值B的比特M,并将所选定的比特应用于iqmac 11。多比特值B的比特M乘以多比特值A的每个单比特乘法如关于图17的流程图所描述的那样迭代地进行(例如,在步骤200中)。
如图21中所示,多比特值B可以通过首先在步骤100中提供iqmac11然后在步骤105将比特计数器M设定为零来乘以多比特值A。步骤200的方法(图17)然后进行用于多比特值A和多比特值B的选定比特M。如果多比特值B的所有比特没有乘以多比特值A(在步骤160中确定),则累积的比特乘积在步骤165中被存储,例如,存储在电容器中,如果该值是电荷,或者存储在寄存器中,如果该值是数字的(例如,在步骤155中由模数转换器30转换),并且比特计数值M在步骤170中递增。多比特值B的每个比特乘以多比特值A的乘积相应于图6中图示的一行多比特乘积值。一旦多比特值B的所有比特已经乘以多比特值A,则多比特值B的每个比特和多比特值A的乘积可以在步骤175中如关于图7和图8所描述的那样求和(例如,用模拟或数字求和,在求和结果之前适当注意缩放多比特值b的每比特的乘积)。
图22图示了用于使用单比特乘法累加电路11迭代地相乘两个8比特数字值的混合电路。如图22中所示,控制电路70控制开关18和多路复用器50,以循环通过如图21和图21中所述的多比特值A和多比特值B的比特。多比特值B的比特与多比特值A的每个乘积被数字移位累加器52转换为数字值,缩放,然后累加(加到现有值上)。如图23所示,数字移位累加器52可以包括:解复用器51,其响应于控制电路70,用于移位数字化乘积的每个比特(以缩放相应于图6的行的数字化积);多比特寄存器或存储器13,用于存储累加的乘积;以及加法器54,用于将缩放后的乘积与累加的乘积相加并将和存储在寄存器中。移位(缩放)可以相应于为与多比特值A相乘而选定的多比特值B的比特。在多比特乘积的所有比特已经与多比特值A相乘且乘积被累加后,数字移位累加器52中的累加的值包含多比特值A和B的乘积。
图24执行与图23相同的功能,除了乘积累加是用模拟电路执行的。如图24中所示,控制电路70控制开关18和多路复用器50循环通过多比特值A和多比特值B的比特,如图20和图21中所述。多比特值B的比特与多比特值A的每个乘积被缩放(例如,使用电压乘法器)并且然后存储在用模拟解复用器52选定的单独的模拟存储电路16(例如,电容器)中。一旦相应于图6中的行的所有累加的乘积被存储,它们可以使用类似于图2至图5的电路在一个步骤中求和。
根据本公开的一些实施例,阵列乘法可以用混合迭代单比特乘法累加电路来实现,如图22中对每个多比特乘积所图示的,使得所有的乘积值在同一时间被计算,但是每个乘积值被迭代地计算。根据本公开的实施例,这样的阵列乘法器可以是快速且低功率的。
迭代单比特乘法累加器11按顺序计算单比特B和多比特值A的比特的乘积,按顺序将每个比特对的乘积存储在乘积存储电路16中,并在累加器存储电路17累加顺序乘积。由于多比特值是二进制值,因此每个连续比特乘积的值是先前乘积的两倍。例如,单比特值1和多比特值111的乘积具有三个连续的一比特。第一比特的值为1,第二比特的值为2,第三比特的值为4,相应于该比特在数字中的位置。因而,比特乘积的顺序累加必须提供相应于比特的位置值的比特的适当缩放。
每次乘积存储电路16与累加器存储电路17并联电连接,两个电路中的电荷均衡为组合的和共享的电荷。图25图示了针对单比特值B乘以二比特值B的每个可能结果的电荷组合和均衡。如果B的值为零,则所有的乘积都是零,任何累积的电荷可能是零(图25中未示出)。这些数字是用二进制符号书写的。
如果B为1且A等于00,左上列图示了过程。电压CM是存储在乘积存储电路16中的电荷,电压CA是相对于相应于被存储在累加器存储电路17中的一个乘积值的电荷的累加的电荷。在清除循环0中,乘积存储电路16和累加器存储电路17被清除。在循环一中,A的比特零(零)乘以B(一)以产生零乘积,存储在乘积存储电路16中并且然后在累加器存储电路17中累加,这两者将存储零电荷。在循环二中,A的比特一(零)乘以B(一)以产生零乘积,存储在乘积存储电路16中并且然后在累加器存储电路17中累加,再次作为零电荷。在循环三中,模数转换器30将累加器存储电路17中累加的电荷(零电荷)转换为零。
如果B为1且A等于01,则右上列图示了过程。在清除循环0中,乘积存储电路16和累加器存储电路17被清除。在循环一中,A的比特零(零)在乘法模式下乘以B(一)从而产生乘积,作为一个电荷存储在乘积存储电路16中。因为乘积存储电路16是电容等于累加器存储电路17的电容的电容器,它们之间的并联连接(在累加模式下由开关18启用)使电容加倍,因此使每个电容器的电荷和电容器的电压减半,使得累加器存储电路17存储二分之一的相对电荷。在循环二中,A的比特一(零)在乘法模式下乘以B(一)从而产生零乘积,存储在乘积存储电路16中并且然后以累加模式在累加器存储电路17中累加。这种组合将累加器存储电路17中的二分之一电荷与乘积存储电路16中的零电荷组合,将每个电路中的电荷和电压降低二分之一,使得累加器存储电路17具有四分之一的相对电荷和电压。在循环三中,电荷按四倍(等于两位二进制数字值可以存储的值的数目)缩放,模数转换器30将累加器存储电路17中的累加的电荷转换为一(四乘以四分之一),其乘积为B=1和A=01(十进制表示法中的一)。
如果B为1且A等于10,则左下列图示了过程。在清除循环0中,乘积存储电路16和累加器存储电路17被清除。在循环一中,A的比特零(零)乘以B(一)从而产生零乘积,作为零电荷存储在乘积存储电路16中。在循环二中,A的比特一(一)在乘法模式下乘以B(一)从而产生一乘积,存储在乘积存储电路16中并且然后以累加模式在累加器存储电路17中累加。这种组合将累加器存储电路17中的零电荷与乘积存储电路16中的一电荷组合,使得累加器存储电路17具有二分之一的相对电荷和电压。在循环三中,电荷按四倍缩放,并且模数转换器30将累加器存储电路17中的累加的电荷转换为二(四乘以二分之一),其乘积为B=1和A=10(十进制表示法中的二)。
如果B为1且A等于11,则右下列图示了过程。在清除循环0中,乘积存储电路16和累加器存储电路17被清除。在循环一中,A的比特零(零)在乘法模式下乘以B(一)从而产生一乘积,作为一电荷存储在乘积存储电路16中,并且然后以累加模式在累加器存储电路17中作为二分之一电荷和电压累加。在循环二中,A的比特一(一)乘以B(一)从而产生一乘积,存储在乘积存储电路16中并且然后在累加器存储电路17中累加。这种组合将累加器存储电路17中的二分之一电荷与乘积存储电路16中的一电荷组合,使得累加器存储电路17具有四分之三的相对电荷和电压。在循环三中,电荷按四倍缩放,并且模数转换器30将累加器存储电路17中的累加的电荷转换为三(四乘以四分之三),其乘积为B=1和A=11(十进制表示法中的三)。
图26A和26B图示了四比特二进制值A的相同过程。对于所指示的循环,乘积存储电路16中的乘积电压(电荷)被示出在相应于A值的每列对的左侧,并且累加器存储电路17中的累加的电压(电荷)被示出在相应于A值的每列对的右侧。对于A=0000,所有乘积和累加的电荷均为零,产生零累加的值。
对于A=0001,存储在乘积存储电路16中的第一乘积是一,因为B是一并且A的比特零是一。由于乘积一在乘积存储电路16与累加器存储电路17之间均等地共享,所以累加器存储电路17存储二分之一的相对值。此后,乘积为零,累加器存储电路17中的电荷在每次与乘积存储电路16中的电荷共享时下降一半,使得电荷在循环二中减少到四分之一,在循环三中减少到八分之一,在循环四中减少到十六分之一。由于A具有四比特,因此累加的电荷按十六倍缩放,产生等于十六分之一或0001(十进制1)的乘积。
对于A=0010,第一乘积是零,因为A的比特零是零,使得第一累加的值为零。第二乘积(A的比特一)是一并且相应的累加的相对电荷是二分之一,因为乘积电荷在乘积存储电路16与累加器存储电路17之间均等地共享。此后,乘积为零,因为A的比特为零,并且累加器存储电路17中的电荷在每次与乘积存储电路16中的电荷共享时下降一半,使得电荷在循环三中减少到四分之一,在循环四中减少到八分之一。累加的电荷按十六倍缩放,产生等于八分之一或0010(十进制2)的乘积。
对于A=0011,第一乘积为一,第一累加的值为二分之一,因为电荷在乘积存储电路16与累加器存储电路17之间均等地共享。第二乘积(A的比特一)是一并且相应的累加的相对电荷是四分之三,因为乘积存储电路16中的电荷一与累加器存储电路17中的电荷二分之一均等地共享。此后,乘积为零,并且累加器存储电路17中的电荷在每次与乘积存储电路16中的电荷共享时下降一半,使得电荷在循环三中减少到八分之三,在循环四中减少到十六分之三。累加的电荷按十六倍缩放,产生等于十六分之三乘以十六倍或0011(十进制3)的乘积。
对于A=0100,第一乘积为零,第一累加的值为零。第二乘积同样为零,因为A的比特一为零,所以第二累加的值为零。第三乘积(循环三中的A的比特二)为一,并且相应的累加的相对电荷为二分之一,因为电荷在存储一的乘积存储电路16与存储零的累加器存储电路17之间均等地共享。此后,乘积为零,并且累加器存储电路17中的电荷在每次与乘积存储电路16中的电荷共享时下降一半,使得电荷在循环四中减少到四分之一。累加的电荷按十六倍缩放,产生等于四分之一乘以十六倍或0100(十进制4)的乘积。
对于A=0101,第一乘积为一,第一累加的值为二分之一,因为针对二分之一的相对值,电荷在乘积存储电路16与累加器存储电路17之间均等地共享。第二乘积(循环二)为零,因为A的比特一为零,所以累加的值为零和二分之一的平均值,等于四分之一。第三乘积(循环三)为一,因为A的比特二为一,所以累加的值为四分之一和一的平均值,等于八分之五。第四乘积(循环四)为零,因为A的比特三为零,所以累加的值为零和八分之五的平均值,等于十六分之五。在按十六倍缩放后,产生等于十六分之五乘以十六倍或0101(十进制5)的乘积。
对于A=0110,第一乘积为零,第一累加的值为零。第二乘积(循环二)为零,因为A的比特一为零,所以累加的值为零和一的平均值,等于二分之一。第三乘积(循环三)为一,因为A的比特二为一,所以累加的值为一与二分之一的平均值,等于四分之三。第四乘积(循环四)为零,因为A的比特三为零,所以累加的值为零与四分之三的平均值,等于八分之三。在按十六倍缩放后,产生等于八分之三乘以十六倍或0110(十进制6)的乘积。
对于A=0111,第一乘积为一,第一累加的值为二分之一。第二乘积(循环二)为一,因为A的比特一为一,所以累加的值为一和二分之一的平均值,等于四分之三。第三乘积(循环三)为一,因为A的比特二为一,所以累加的值为一和四分之三的平均值,等于八分之七。第四乘积(循环四)为零,因为A的比特三为零,所以累加的值为零和八分之七的平均值,等于十六分之七。在按十六倍缩放后,产生等于十六分之七乘以十六倍或0111(十进制7)的乘积。
图26B图示了用于值1000至1111的累加的结果。累加的乘积与图26A中所示的相同,除了最终比特乘积为一,所以循环三的累加的值被与一平均,从而提供最终结果,如图26B中所示。
图25至图26B以数学方式揭示了单比特B乘以多比特值A的比特乘法的电荷的迭代累加,如图16至图19中所示。通过对多比特值B的每一比特重复该过程(如图20和图21中所述),两个多比特值可以以高速度和低功率来计算。
计算可以用数学方式来总结。给定比特B和具有N比特的多比特值A,其中,A(i)是多比特值A的比特i,第一比特(LSB的最低有效比特)是A(0),i=0,最后一比特(最高有效比特或MSB)是A(N-1),累加的乘积为:
在下列实施例中,其中,具有M比特并且第一比特(最低有效比特)是B(0)且最后一比特(最高有效比特或MSB)是B(M-1)的多比特值B,乘以具有N比特并且第一比特(最低有效比特)是A(0),i=0,且最后一比特(最高有效比特或MSB)是A(N-1)的多比特值A,A xB的累加的乘积为:
如果B(j)等于0,则对i的求和不需要完成,节省了计算的时间和能量。
本公开的实施例不限于在图中图示和在本文中描述的具体示例。本领域技术人员应容易理解,可以采用模拟和数字电路的各种实现来实现所描述的操作并且这样的实现被包括在本公开的实施例中。
本公开的实施例可以用于神经网络、模式匹配计算机或机器学习计算机中,并且提供具有降低的功率和硬件要求的高效和及时处理。这样的实施例可以包括计算加速器,例如,神经网络加速器、模式匹配加速器、机器学习加速器或设计用于静态或动态处理工作负载的人工智能计算加速器。
虽然描述了实施例的某些实现,但是对于本领域技术人员而言现在显而易见的是,可以使用包含本公开的概念的其它实现。因此,本公开不应限于某些实现,而是应仅受以下权利要求的精神和范围的限制。
在整个描述中,在装置和系统被描述为具有、包括、或包含特定元件的情况下,或在过程和方法被描述为具有、包括、或包含特定步骤的情况下,可以设想,另外,所公开技术的装置和系统基本上由所述元件组成或由所述元件组成,并且根据所公开技术的过程和方法基本上由所述处理步骤组成或由所述处理步骤组成。
应理解,只要所公开的技术保持可操作,用于执行某些动作的步骤的顺序或顺序是无关紧要的。而且,两个或更多个步骤或动作在一些情况下可以同时进行。已经特别参考其某些实施例详细描述了本公开,但是应理解,可以在以下权利要求的精神和范围内进行变型和修改。
附图标记列表
C清除电路
M乘法器电路/乘法器
O 输出值
P 乘积
S开关/开关电路
VM电压乘法器
10qmac/单比特乘法累加电路
11iqmac/迭代单比特乘法累加电路
12 单比特存储元件
13 多比特存储元件
14比特乘法器/比特乘法电路
15,15A,15B串联开关电路
16电容器/模拟存储电路/乘积存储电路
17电容器/模拟存储电路/累加器存储电路
18开关/开关电路
19清除/清除电路
20 混合乘法累加电路
21 乘积的列
22 混合多比特乘法器
24 混合矩阵乘法累加电路
30 模数转换器
32 数字比特累加器
34 累加数字存储电路
36 状态机和数字移位电路
40操作放大器/op amp
50 多路复用器
51 解复用器
52 数字移位累加器
54 加法器
56寄存器/存储器
60 累加开关
70 控制电路
100提供qmac步骤
102提供A和B值步骤
105将B比特计数设定为M=0步骤
108选定B比特M步骤
110清除CM和CA步骤
115将A比特计数设定为N=0步骤
120选定A比特N步骤
125设定开关为乘法模式步骤
130将比特N相乘并存储乘积步骤
135将开关设定为累加模式步骤
140累加乘积步骤
145测试所有相乘的A比特的步骤
150将A比特计数N设定为N+1步骤
155模数转换步骤
160测试所有相乘的B比特的步骤
165存储比特乘积步骤
170将B比特计数M设定为M+1步骤
175对比特乘积M求和步骤
200将多比特值乘以单比特步骤
Claims (21)
1.一种时间共享乘法累加电路包括:
乘积存储电路;
乘法电路,所述乘法电路可操作以接收第一输入值、接收第二输入值、产生所述第一输入值与所述第二输入值的乘积,以及将所述乘积存储在所述乘积存储电路中;
累加器存储电路,用于存储累加的值;以及
累加开关,所述累加开关将所述乘积存储电路连接到所述累加器存储电路,所述累加开关可操作从而将所述乘积存储电路与所述累加器存储电路电并联连接,或者将所述乘积存储电路与所述累加器存储电路电断开。
2.根据权利要求1所述的时间共享乘法累加电路,包括第一多路复用器,所述第一多路复用器可操作从而:选定输入到所述第一多路复用器的多个第一输入值输入之一,并且其中,所述乘法电路可操作以从所述第一多路复用器接收所述多个第一输入值中的所述选定一个;接收所述第二输入值;以及产生所述多个第一输入值中的所述选定一个与所述第二输入值的乘积。
3.根据权利要求2所述的时间共享乘法累加电路,包括第二多路复用器,所述第二多路复用器可操作从而:选定输入到所述第二多路复用器的多个第二输入值输入之一,并且其中,所述乘法电路可操作以从所述第二多路复用器接收所述第二输入值中的所述选定一个;和产生所述多个第一输入值中的所述选定一个与所述第二输入值中的所述选定一个的乘积。
4.根据上述权利要求中的任一项所述的时间共享乘法累加电路,其中,所述乘积存储电路和所述累加器存储电路是存储电荷的模拟存储电路。
5.根据权利要求4所述的时间共享乘法累加电路,其中,所述乘积存储电路和所述累加器存储电路是电容器。
6.根据上述权利要求中的任一项所述的时间共享乘法累加电路,其中,所述乘法电路是单比特乘法电路。
7.根据上述权利要求中的任一项所述的时间共享乘法累加电路,其中,所述乘法电路包括串联连接的串联开关电路。
8.根据权利要求7所述的时间共享乘法累加电路,其中,所述累加开关是与所述乘法电路的所述串联开关电路串联连接的串联开关电路。
9.根据权利要求7或权利要求8所述的时间共享乘法累加电路,其中,所述乘法电路包括串联连接的串联开关电路,并且其中,所述乘法电路和所述累加开关的所述串联开关电路中的一个或多个是差分开关。
10.根据上述权利要求中的任一项所述的时间共享乘法累加电路,其中,操作所述累加开关以并联地连接所述乘积存储电路和所述累加器存储电路将所述累加器存储电路中的所述累加的值与所述乘积存储电路中的所述乘积组合,从而提供存储在所述乘积存储电路中和所述累加器存储电路中的组合的值。
11.根据上述权利要求中的任一项所述的时间共享乘法累加电路,包括控制电路,所述控制电路可操作以顺序地(i)向所述乘法器提供第一输入值和第二输入值并切换所述累加开关从而将所述乘积存储在所述乘积存储电路中;和(ii)切换所述累加开关从而并联地电连接所述乘积存储电路和所述累加器存储电路,并且将所述乘积存储电路中的所述乘积与所述累加的值组合,从而提供存储在所述乘积存储电路中和所述累加器存储电路中的组合的值。
12.一种混合矩阵乘法器,包括:
根据上述权利要求中的任一项所述的时间共享乘法累加电路;
加法器,用于将所述时间共享乘法累加电路的所述累加的值相加。
13.根据权利要求12所述的混合矩阵乘法器,其中,所述累加的值是模拟值并且包括用于将所述累加的值转换为数字值的模数转换器,并且其中,所述加法器是数字加法器。
14.根据权利要求12所述的混合矩阵乘法器,其中,所述累加的值是模拟值,并且其中,所述加法器是模拟加法器。
15.一种矩阵乘法的混合方法,包括:
a)提供具有N比特的多比特值;
b)提供根据权利要求1至11中的任一项所述的时间共享迭代乘法累加电路;
c)提供所述多比特值的输入比特,向所述乘法器提供第二输入比特,并且设定所述累加开关以将所述乘积存储电路连接到所述时间共享乘法累加电路,并且将所述乘积存储电路与所述累加器存储电路断开;
d)将所述多比特值的所述输入比特乘以所述第二输入比特,以形成存储在所述乘积存储电路中的比特乘积;
e)切换所述累加开关,以将所述乘积存储电路与所述时间共享乘法累加电路断开,并且将所述乘积存储电路连接到所述累加器存储电路,并且将所述乘积存储电路中的所述乘积与所述累加的值组合,以在所述累积器存储电路中产生组合的值;以及
f)重复步骤c)-e)N次,直到按比特顺序提供所述多比特值的所有比特,从而产生所述多比特值与所述第二输入比特的乘积。
16.一种矩阵乘法的混合方法,包括:
a)提供具有N比特的第一多比特值和具有M比特的第二多比特值;
b)提供M个根据权利要求1至11中的任一项所述的时间共享乘法累加电路;
c)提供所述第一多比特值的输入比特和提供所述第二多比特值的不同的第二输入比特到所述M个时间共享乘法累加电路中的每一个的所述乘法器,并且设定所述累加开关以将所述乘积存储电路连接到所述时间共享乘法累加电路,并且将所述乘积存储电路与所述M个时间共享乘法累积电路中的每一个的所述累积器存储电路断开;
d)将所述多比特值的所述输入比特乘以所述第二输入比特,从而通过所述M个时间共享乘法累加电路中的每一个形成存储在所述乘积存储电路中的比特乘积;
e)切换所述累加开关以将所述乘积存储电路与所述时间共享乘法累加电路断开,并将所述乘积存储电路连接到所述累加器存储电路,并且将所述乘积存储电路中的所述乘积与所述累加的值组合,从而在所述M个时间共享乘法累加电路中的每一个的所述累积器存储电路中产生组合的值;
f)对所述第一多比特值的所述N个比特中的每一个重复步骤c)-e),直到以比特顺序提供所述第一多比特值的所有比特;
g)缩放所述M个时间共享乘法累加电路中的每一个的所述累加的值;以及
h)将所述M个经缩放的时间共享乘法累加电路中的每一个的所述累加的值相加以产生乘积。
17.一种矩阵乘法的混合方法,包括:
a)提供具有N比特的第一多比特值和具有M比特的第二多比特值;
b)提供根据权利要求1至11中的任一项所述的时间共享乘法累加电路;
c)提供所述第一多比特值的输入比特并向所述乘法器提供所述第二多比特值的第二输入比特,以及设定所述累加开关以将所述乘积存储电路连接到所述时间共享乘法累加电路并将所述乘积存储电路与所述时间共享乘法累加电路的所述累加器存储电路断开;
d)将所述第一多比特值的所述输入比特乘以所述第二多比特值的所述第二输入比特,以形成存储在所述乘积存储电路中的比特乘积;
e)切换所述累加开关以将所述乘积存储电路与所述时间共享乘法累加电路断开,并且将所述乘积存储电路连接到所述累加器存储电路,并且将所述乘积存储电路中的所述乘积与所述累加的值组合从而在所述M个时间共享乘法累加电路中的每一个的所述累加器存储电路中产生组合的值;
f)对所述第一多比特值的所述N个比特中的每一个重复步骤c)-e),直到以比特顺序提供所述第一多比特值的所有比特;
g)缩放所述时间共享乘法累加电路的所述累加的值以产生缩放的值;
h)将所述缩放的值加和到多比特乘积;以及
i)重复步骤c)-h)以产生多比特乘积。
18.一种混合矩阵乘法器,包括:
根据权利要求1至11中的任一项所述的时间共享乘法累加电路;
存储器电路,用于存储累加的值;
控制电路,所述控制电路可操作以:
c)重复且顺序地(i)提供第一输入值并向所述乘法器提供第二输入值,设定所述累加开关以将所述乘积存储电路连接到所述乘法器并将所述乘积存储电路与所述累加器存储电路断开,和(ii)切换所述累加开关以将所述乘积存储电路与所述时间共享乘法累加电路电断开,并且将所述乘积存储电路电连接到所述累加器存储电路,从而组合所述乘积存储电路中的所述乘积与所述累加的值,并且提供被存储在所述累加器存储电路和所述乘积存储电路中的组合的值;和
d)将所述累加的值存储在存储器电路中。
19.根据权利要求18所述的混合矩阵乘法器,包括
存储器电路,每个存储器电路用于存储累加的值;和
加法器,用于在所述存储器电路中加和所述累加的值,
其中,所述控制电路可操作以提供不同的第一输入值和提供不同的第二输入值,并且在每个存储器电路中存储累加的值。
20.一种时间共享乘法累加电路,包括:
乘法电路,所述乘法电路可操作以接收第一输入值、接收第二输入值,以及产生所述第一输入值和所述第二输入值的乘积;
累加数字存储电路,所述累加数字存储电路可操作以存储累加的数字值;以及
数字比特累加器,所述数字比特累加器可操作以接收所述乘积,将所述乘积与存储在所述累加数字存储电路中的所述累加的数字值组合,并且输出所述累加的数字值,
其中,将所述乘积与所述累加的数字值组合包括(i)如果所述乘积为一且所述累加的数字值为零则在所述累加数字存储电路中存储一个值;(ii)如果所述乘积为一且所述累加的数字值为非零则保持所述相同的累加的数字值,或者(iii)如果所述乘积为零则将所述累加的数字值缩放二倍。
21.根据权利要求20所述的时间共享乘法累加电路,包括:
乘积存储电路,所述乘积存储电路可操作以接收所述乘积;和
一比特模数转换器,所述一比特模数转换器被连接到所述乘积存储电路并连接到所述数字比特累加器;
其中,所述乘积存储电路可操作,以将所述乘积提供给所述一比特模数转换器,并且所述一比特模数转换器可操作以接收所述乘积,将所述乘积转换为数字比特乘积,并且将所述数字比特乘积提供给所述数字比特累加器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2022/050635 WO2023144577A1 (en) | 2022-01-25 | 2022-01-25 | Iterative hybrid matrix multiplier |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118696294A true CN118696294A (zh) | 2024-09-24 |
Family
ID=80218661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280088696.0A Pending CN118696294A (zh) | 2022-01-25 | 2022-01-25 | 迭代混合矩阵乘法器 |
Country Status (4)
Country | Link |
---|---|
KR (1) | KR20240135773A (zh) |
CN (1) | CN118696294A (zh) |
TW (1) | TW202331552A (zh) |
WO (1) | WO2023144577A1 (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055062B1 (en) * | 2018-02-12 | 2021-07-06 | Areanna Inc. | Switched capacitor vector-matrix multiplier |
US10592209B1 (en) * | 2018-10-17 | 2020-03-17 | International Business Machines Corporation | Charge-scaling multiplier circuit |
-
2022
- 2022-01-25 WO PCT/IB2022/050635 patent/WO2023144577A1/en active Application Filing
- 2022-01-25 CN CN202280088696.0A patent/CN118696294A/zh active Pending
- 2022-01-25 KR KR1020247025174A patent/KR20240135773A/ko unknown
- 2022-12-28 TW TW111150340A patent/TW202331552A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR20240135773A (ko) | 2024-09-12 |
WO2023144577A1 (en) | 2023-08-03 |
TW202331552A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11615165B2 (en) | Systems and methods for mapping matrix calculations to a matrix multiply accelerator | |
CN107636640B (zh) | 点积引擎、忆阻器点积引擎以及用于计算点积的方法 | |
JP7384925B2 (ja) | ビットオーダバイナリ加重乗算器/積算器 | |
CN113571109B (zh) | 存储器电路及其操作方法 | |
Azamat et al. | Quarry: Quantization-based ADC reduction for ReRAM-based deep neural network accelerators | |
US20220247425A1 (en) | Architecture for Multiplier Accumulator using Unit Elements for multiplication, bias, accumulation, and analog to digital conversion over a shared Charge Transfer Bus | |
US11544037B2 (en) | Low area multiply and accumulate unit | |
CN115906735B (zh) | 基于模拟信号的多比特数存算一体电路、芯片及计算装置 | |
CN118696294A (zh) | 迭代混合矩阵乘法器 | |
EP4430469A1 (en) | Hybrid matrix multiplier | |
CN114168107A (zh) | 一种存内精度可调的矢量矩阵乘法运算方法及运算器 | |
US12026479B2 (en) | Differential unit element for multiply-accumulate operations on a shared charge transfer bus | |
CN115658013B (zh) | 向量乘加器的rom存内计算装置和电子设备 | |
US11476866B2 (en) | Successive approximation register using switched unit elements | |
US20240223207A1 (en) | Multiply-accumulate successive approximation devices and methods | |
US20240220742A1 (en) | Multiply-accumulate successive approximation devices and methods | |
US12118331B2 (en) | Bias unit element with binary weighted charge transfer lines | |
US11567730B2 (en) | Layout structure for shared analog bus in unit element multiplier | |
Bochev | Distributed arithmetic implementation of artificial neural networks | |
CN115658012B (zh) | 向量乘加器的sram模拟存内计算装置和电子设备 | |
US11983507B2 (en) | Differential analog multiplier for a signed binary input | |
US20240211532A1 (en) | Hardware for parallel layer-norm compute | |
WO2024027937A1 (en) | Memory-mapped compact computing array | |
WO2024027936A1 (en) | Compact in-memory computer architecture | |
WO2022165350A2 (en) | Architecture for multiplier accumulator using unit elements for multiplication, bias, accumulation, and analog to digital conversion over a shared charge transfer bus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |