CN115904311A - 用于多位存储单元中计算的模拟乘法-累加部件 - Google Patents
用于多位存储单元中计算的模拟乘法-累加部件 Download PDFInfo
- Publication number
- CN115904311A CN115904311A CN202211019472.2A CN202211019472A CN115904311A CN 115904311 A CN115904311 A CN 115904311A CN 202211019472 A CN202211019472 A CN 202211019472A CN 115904311 A CN115904311 A CN 115904311A
- Authority
- CN
- China
- Prior art keywords
- capacitors
- multipliers
- memory
- analog signal
- mac
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 86
- 239000003990 capacitor Substances 0.000 claims abstract description 154
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000004364 calculation method Methods 0.000 claims abstract description 25
- 238000013528 artificial neural network Methods 0.000 claims description 26
- 239000000758 substrate Substances 0.000 claims description 15
- 239000004065 semiconductor Substances 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 37
- 210000004027 cell Anatomy 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 230000004913 activation Effects 0.000 description 9
- 238000003491 array Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000004020 conductor Substances 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material 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
- 238000010606 normalization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 229910052594 sapphire Inorganic materials 0.000 description 1
- 239000010980 sapphire Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect 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/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/66—Digital/analogue converters
- H03M1/74—Simultaneous conversion
- H03M1/80—Simultaneous conversion using weighted impedances
- H03M1/802—Simultaneous conversion using weighted impedances using capacitors, e.g. neuron-mos transistors, charge coupled devices
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06J—HYBRID COMPUTING ARRANGEMENTS
- G06J1/00—Hybrid computing arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/66—Digital/analogue converters
- H03M1/74—Simultaneous conversion
- H03M1/78—Simultaneous conversion using ladder network
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/66—Digital/analogue converters
- H03M1/74—Simultaneous conversion
- H03M1/80—Simultaneous conversion using weighted impedances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Neurology (AREA)
- Power Engineering (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Complex Calculations (AREA)
Abstract
系统、设备和方法包含采用乘法‑累加器(MAC)的第一多个乘法器从存储器阵列接收第一数字信号的技术,其中,第一多个乘法器包含多个电容器。该技术进一步采用第一多个乘法器,基于第一数字信号采用多个电容器执行多位计算操作,以及采用第一多个乘法器,基于多位计算操作生成第一模拟信号。
Description
技术领域
一般来说,实施例涉及存储器中乘法-累加(MAC)架构。更具体来说,实施例涉及基于模拟输入信号和数字信号执行MAC操作以基于其输出模拟输出信号的存储器中MAC架构。
背景技术
一些架构(例如,非冯诺伊曼计算架构)可采用“存储器中计算”(CiM)技术来避开冯诺伊曼瓶颈的数据传递问题,并且执行卷积神经网络(CNN)以及深度神经网络(DNN)应用。此类架构的发展在数字领域中可能具有挑战性,因为此类架构的MAC操作部件(operation unit)太大而无法挤入高密度的曼哈顿式存储器阵列中。例如,MAC操作部件可能比对应的存储器阵列大几个数量级。例如,在4-位数字系统中,数字MAC部件可包含800个晶体管,而4-位静态随机存取存储器(SRAM)单元仅含有24个晶体管。如此不平衡的晶体管比率使得难以(如果并非不可能)有效地融合SRAM与MAC部件。因此,通常采用冯诺伊曼架构,其中,存储部件与处理部件物理分离。从存储设备中逐层地顺次提取数据,这导致大的时延和能量开销。
附图说明
通过阅读以下说明书和随附权利要求书并且通过参考以下各图,实施例的各种优点对本领域技术人员而言会变得清楚,图中:
图1A是根据实施例的存储器中乘法器架构的示例的框图;
图1B是根据实施例的C-2C阶梯的示例的框图;
图2A和图2B是根据实施例具有累加的MAC架构的示例的框图;
图3是根据实施例具有增强MAC的乘法过程的方法的示例的流程图;
图4是根据实施例的SRAM存储器中乘法器架构的示例的框图;
图5是根据实施例的动态随机存取存储器乘法器架构的示例的框图;
图6是根据实施例的磁阻随机存取存储器乘法器架构的示例的框图;
图7是根据实施例的相变存储器(PCRAM)乘法器架构的示例的框图;
图8是根据实施例的存储器中乘法器架构的示例的框图;
图9是根据实施例的存储器中MAC计算系统的示例的框图;
图10是根据实施例的半导体设备的示例的图示;
图11是根据实施例的处理器的示例的框图;以及
图12是根据实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
一些实施例包含实用且高效的存储器中计算架构,该架构包含集成MAC部件和存储单元(可称为算术存储单元)。算术存储单元采用模拟计算方法,使得集成MAC部件的晶体管数量与存储单元的晶体管数量类似(例如,晶体管是相同数量级的),以减少计算时延。
例如,可将神经网络表示为一结构,该结构是从一层流到下一层的神经元层的图表。一层神经元的输出是下一层神经元的输入。为了执行这些计算,需要各种各样的矩阵-向量、矩阵-矩阵和张量操作,这些操作本身由许多MAC操作组成。的确,在神经网络中存在如此多的这些MAC操作,以致这类操作可能主导其它类型的计算(例如,修正线性部件(ReLU)激活函数和池化函数)。因此,通过减少从长期存储设备和与MAC部件分离的远端存储器取数据,来增强MAC操作。因此,本文中的实施例将MAC部件与存储器合并,以便(特别是对于神经网络应用)减少较长时延的数据移动和提取。
此外,一些实施例采用基于模拟的混合信号计算,这(例如,在低精度)比数字计算更高效,从而减少常规数字处理器中的数据移动成本,并且规避能耗高的模数转换。其它架构可能仅限于单个位分析。如本文中所描述的实施例基于模拟信号执行多位操作。更详细地说,一些实施例包含用于多位存储器中计算架构(例如,SRAM等等)的基于C-2C阶梯的模拟MAC部件。
例如,图1B示出C-2C阶梯600。C-2C阶梯600可执行乘法操作,并且是提供模拟电压输出的数模转换器(DAC)设计中的电容器网络。如图1B中所示,C-2C阶梯600包含分割成分支616、610、612、614的一系列电容器C。每个分支616、610、612、614含有开关602、604、606、608中的一个开关和为1单位电容的电容器C。电容为2单位电容的串联电容器2C插入两个分支616、610、612、614中的每个分支之间。
开关602、604、606、608由数字位控制,并且连接到固定参考电压VREF或地节点(GND)。通过串联电容器2C调节比率,分支616、610、612、614的贡献沿C-2C阶梯600被二进制加权,并且叠加在C-2C阶梯600的输出节点上。结果,在输出端的电压对应于施加到那些开关的数字位,且缩放因子为VREF,如下式中所表示:
(式1)
在式1中,m是C-2C阶梯600中的分支616、610,612、614的数量。如将更详细地论述的,可调整C-2C阶梯600的等效电路以包含它作为MAC的一部分,从而实现多位乘法操作。这样做使得能够利用减少数量的晶体管,并且降低能耗。
因此,一些实施例提供可克服常规计算架构中的冯诺依曼瓶颈挑战的多位存储器中MAC解决方案。而且,此类实施例以增强的线性提供降低的功耗。此外,模拟MAC部件的硬件开销类似于存储单元,从而使存储器中计算方案(其中MAC部件与存储单元集成)能够增强性能。
转到图1A,存储器中乘法器架构300包含存储器阵列302(它耦合到未图示的一个或多个衬底)和基于C-2C的乘法器304(它可也耦合到所述一个或多个衬底以及所述存储器阵列302),其中,基于C-2C的乘法器304包含多个乘法器304a、304b、304c、304d(例如,第一多个乘法器),这些乘法器包含多个电容器298、292、294、296、322、350、352,这些电容器具有C和2C的电容。多个乘法器304a、304b、304c、304d配置成从存储器阵列302接收数字信号,基于数字信号采用多个电容器298、292、294、296、322、350、352执行多位计算操作,并且基于多位计算输出第一模拟信号OAn。计算操作可进一步基于输入模拟信号IAn。存储器阵列302包括第一、第二、第三和第四存储单元302a、302b、302c、302d。可从神经网络的第一层提供输入激活信号IAn,而存储器中乘法器架构300可表示神经网络的第二层。例如,基于C-2C的乘法器304可应用于神经网络的任一层。上标“n”指示它应用于(作用于)神经网络的第n层。因而,基于C-2C的乘法器304(例如,存储器中乘法器)表示神经网络的第n层。IAn是在第n层的输入激活信号,并且是前一层(第n-1层)的输出。OAn是在第n层的输出信号,并且它将被馈送到下一层(第n+1层),这可类似于存储器中乘法器架构300。
多个乘法器304a、304b、304c、304d中的每个乘法器与第一、第二、第三和第四存储单元302a、302b、302c、302d中相应的一个相关联。例如,第一算术存储单元308包含第一乘法器304a和第一存储单元302a,使得第一乘法器304a从第一存储单元302a接收数字信号(例如,权重)。第二算术存储单元310包含第二乘法器304b和第二存储单元302b,使得第二乘法器304b从第二存储单元302b接收数字信号(例如,权重)。第三算术存储单元312包含第三乘法器304c和第三存储单元302c,使得第三乘法器304c从第三存储单元302c接收数字信号(例如,权重)。第四算术存储单元314包含第四乘法器304d和第四存储单元302d,使得第四乘法器304d从第四存储单元302d接收数字信号(例如,权重)。详细地说,为了信息保真度和存储鲁棒性,以数字格式存储在神经网络训练进行期间获得并预加载在该网络中的权重W。关于输入激活(它是模拟输入信号IAn)和输出激活(它是模拟输出信号OAn),可将优先级转移到动态范围和响应时延。就是说,具有固有的无限位数和连续时间步长的模拟信号的模拟标量胜过其它存储候选者。因此,存储器中乘法器架构300(例如,神经网络)接收模拟输入信号IAn(例如,模拟波形)作为输入,并且存储数字位作为其权重存储,以增强神经网络应用性能、设计和功率使用。如下文将论述,第一、第二、第三和第四存储单元302a、302b、302c、302d存储相同多位权重的不同位。
为简洁起见,下面作为示例性实施例论述第一、第二、第三和第四算术存储单元308、310、312、314中的第一算术存储单元308,但是将会理解,第二、第三和第四算术存储单元310、312、314与第一算术存储单元308类似地配置。第一存储单元302a以数字格式存储权重的第一数字位。就是说,第一存储单元302a包括第一、第二、第三和第四晶体管400、402、404、406。第一、第二、第三和第四晶体管400、402、404、406的组合存储并输出权重的第一数字位。例如,第一、第二、第三和第四晶体管400、402、404、406输出权重信号Wn 0(0)和Wbn 0(0),它们表示权重的数字位。为清楚起见,将传送信号权重Wn 0(0)的导体表示为实线,而将传导权重信号Wbn 0(0)的导体表示为虚线。
响应于字线WL的电信号达到阈值(例如,字线WL的电压超过电压阈值),第五和第六晶体管408、410可选择性地传导来自位线BL(0)和BLb(0)的电信号。就是说,将字线WL的电信号施加到第五和第六晶体管408、410的栅极,而将位线BL(0)和BLb(0)的电信号施加到第五和第六晶体管408、410的源极。
来自第一存储单元302a的信号Wn 0(0)和Wbn 0(0)被提供给第一乘法器304a,并且如权重信号Wn 0(0)和Wbn 0(0)(它们表示数字位)的位置示意性地所示。第一乘法器304a包含电容器298、322。电容器322可包含电容2C,它是电容器298的电容C的两倍。开关354可由第一对晶体管318和第二对晶体管320形成。
第一对晶体管318可包含晶体管318a、318b,并且基于权重信号Wn 0(0)、Wbn 0(0)选择性地将输入模拟信号IAn(例如,输入激活)耦合到电容器298。第二对晶体管320可包含晶体管320a、320b,它们基于权重信号Wn 0(0)、Wbn 0(0)选择性地将电容器298耦合到地。因此,电容器298基于权重信号Wn 0(0)、Wbn 0(0)选择性地耦合在地与输入模拟信号IAn之间。就是说,第一对和第二对晶体管318、320中的一对晶体管可处于ON状态以电传导信号,而第一对和第二对晶体管318、320中的另一对晶体管可处于OFF状态以电断开端子。例如,在第一状态中,第一对晶体管318可处于ON状态以将电容器298电连接到输入模拟信号IAn,而第二对晶体管320为OFF状态以将电容器298与地断开电连接。在第二状态中,第二对晶体管320可处于ON状态以将电容器298电连接到地,而第一对晶体管318为OFF状态以将电容器298与输入模拟信号IAn断开电连接。因此,电容器298基于权重信号Wn 0(0)和Wbn 0(0)选择性地电耦合到地或者输入模拟信号IAn。
如已经声明的,与第一算术存储单元308类似地形成第二、第三和第四算术存储单元310、312、314。就是说,位线BL(1)、BLb(1)和字线WL选择性地控制第二存储单元302b以生成并输出权重信号Wn 0(1)和Wbn 0(1)(它们表示权重的第二位)。第二乘法器304b包括电容器292,电容器292基于第二存储单元302b生成的权重信号Wn 0(1)和Wbn 0(1)通过开关286选择性地电耦合到地或输入模拟信号IAn。
类似地,位线BL(2)、BLb(2)和字线WL选择性地控制第三存储单元302c以生成并输出权重信号Wn 0(2)和Wbn 0(2)(它们表示权重的第三位)。第三乘法器304c包括电容器294,电容器294基于第三存储单元302c生成的权重信号Wn 0(2)和Wbn 0(2)通过开关288选择性地电耦合到地或输入模拟信号IAn。同样地,位线BL(3)、BLb(3)和字线WL选择性地控制第四存储单元302d以生成并输出权重信号Wn 0(3)和Wbn 0(3)(它们表示权重的第四位)。第四乘法器304d包括电容器296,电容器296基于第四存储单元302d生成的权重信号Wn 0(3)和Wbn 0(3)通过开关290选择性地电耦合到地或输入模拟信号IAn。因此,第一至第四算术存储单元308、310、312、314中的每个单元都基于相同的输入激活信号IAn以及相同权重的不同位来提供输出。
第一至第四算术存储单元308、310、312、314作为如关于C-2C阶梯600(图1B)所描述的C-2C阶梯乘法器来操作。不同分支之间的连接包含电容器322、350、352。第二、第三和第四乘法器304b、304c、304d分别是第一、第二和第三乘法器304a、304b、304c的下游。因此,来自第一、第二和第三乘法器304a、304b、304c和/或第一、第二和第三算术存储单元308、310、312的输出通过电容器322、350、352被二进制加权。如图所示,第四算术存储单元314在其输出端不包含电容器,因为在第四算术存储单元314的下游不存在算术存储单元。然后,在C-2C阶梯末端的输出节点处获得乘积。存储器中乘法器架构300可生成输出模拟信号OAn,它对应于下式2。式2是m-位乘法器的公式:
(式2)
在式2中,m+1等于权重的位数。在这个具体示例中,m等于3(m从0到3迭代),因为如上所述存在4个权重位。式2中的“i”对应于权重位的位置(同样从0到3变动),使得Wi等于该位置处的位的值。值得注意的是,式2可适用于任何m-位权重值。例如,如果假设权重包含更多位,则可在存储器中乘法器架构300中添加更多的算术存储单元,以便(按1-1对应关系)处理那些添加的位。
因此,存储器中乘法器架构300通过实现C-2C阶梯DAC来采用单元电荷域乘法方法。C-2C阶梯可以是包含电容为C的电容器298、292、294、296和电容为2C的电容器322、350、352的电容器网络。电容器298、292、294、296、322、350、352被分割成多个分支,并且可提供诸如OAn之类的低功率模拟电压输出。
如图1A中所示,将存储器中乘法器架构300分割成多个分支,每个分支包含电容器298、292、294、296(它们包含1单位电容,并且可称为第一组电容器)之一和开关354、286、288、290之一。电容器322、350、352(具有2单位电容,并且可称为第二组电容器)之一插入连接多个分支的电连接(例如,导体)中,并且介于每对分支之间(例如,两个分支之间),从而彼此串联。因此,电容器322、350、352连接各个分支。
通过彼此串联排列成行的电容器322、350、352调节比率,不同分支的贡献沿阶梯被二进制加权,并叠加到C2C阶梯的输出节点上。结果,(例如,在输出端)模拟输出信号OAn的电压对应于施加到开关354、286、288、290的数字位,且缩放因子为模拟输入信号,这由式2来描述。例如,可将最低阶位设置得更远离输出端,使得来自那里的电信号传播通过若干电容器322、350、352。因此,权重的最低阶位会由第一算术存储单元308处理,而权重的最高阶位会由第四算术存储单元314处理,以缩放来自那里的输出。
每个分支和/或第一、第二、第三和第四算术存储单元308、310、312、314对应于一个数字位。因此,通过添加进一步的算术存储单元来实现向上扩展到任何任意位数(例如,对于4-位权重值为4个分支、对于8-位权重值为8个分支、等等)。
存储器阵列302和基于C-2C的乘法器304可彼此靠近设置。例如,存储器阵列302和基于C-2C的乘法器304可以是相同半导体封装的部分和/或彼此直接接触。此外,存储器阵列302可以是SRAM结构,但是存储器阵列302可容易地修改为具有各种存储器结构(例如,动态随机存取存储器、磁阻随机存取存储器、相变存储器、等等),而不修改上述基于C-2C的乘法器304的操作。
现在转到图2A,图中示出具有电荷累加的MAC架构344。MAC架构344包括第一、第二和第三存储器中乘法器架构336、338、340。可类似于已经论述过的存储器中乘法器架构300(图1A)形成第一、第二和第三存储器中乘法器架构336、338、340中的每一个。因此,将从描述中省略类似的操作。
在这个示例中,第一存储器中乘法器架构336基于输入模拟信号IAn 0处理具有4位的数字第一权重。例如,第一算术存储单元658基于第一权重的零位位置的值和输入模拟信号IAn 0生成输出,第二算术存储单元660基于第一权重的第一位位置的值和输入模拟信号IAn 0生成输出,第三算术存储单元662基于第一权重的第二位位置的值和输入模拟信号IAn 0生成输出,并且第四算术存储单元664基于第一权重的第三位位置的值和输入模拟信号IAn 0生成输出。将这些输出合并以生成第一存储器中乘法器架构336的第一输出。
第二存储器中乘法器架构338基于输入模拟信号IAn 1处理具有4位的数字第二权重。例如,第一算术存储单元666基于第二权重的零位位置和输入模拟信号IAn 1生成输出,第二算术存储单元668基于第二权重的第一位位置和输入模拟信号IAn 1生成输出,第三算术存储单元670基于第二权重的第二位位置的值和输入模拟信号IAn 1生成输出,并且第四算术存储单元672基于第二权重的第三位位置的值和输入模拟信号IAn 1生成输出。将这些输出合并以生成第二存储器中乘法器架构338的第二输出。
第三存储器中乘法器架构340基于输入模拟信号IAn 2处理具有4位的数字第三权重。例如,第一算术存储单元328基于第三权重的零位位置的值和输入模拟信号IAn 2生成输出,第二算术存储单元330基于第三权重的第一位位置和输入模拟信号IAn 2生成输出,第三算术存储单元332基于第三权重的第二位位置的值和输入模拟信号IAn 2生成输出,并且第四算术存储单元334基于第三权重的第三位位置的值和输入模拟信号IAn 2生成输出。将这些输出合并以生成第三存储器中乘法器架构340的第三输出。
开关650、652、654选择性地将第一、第二和第三存储器中乘法器架构336、338、340电连接到求和器342(例如,累加器和/或加法器)。例如,MAC操作的一部分是累加,它将来自第一、第二和第三存储器中乘法器架构336、338、340的所有结果加在一起,并且生成这些结果的平均值。例如,求和器342可通过简单地将第一、第二和第三存储器中乘法器架构336、338、340(例如,C-2C阶梯)的所有输出节点连接在一起来进行累加。输出节点上的电荷(例如,第一、第二和第三输出)将被合并,并在求和器342中形成总和。在此组合节点上的电压信号对应于第一、第二和第三存储器中乘法器架构336、338、340的总体电容所保持的总电荷。求和器342可生成对应于下式3的输出:
(式3)
在式3中,IAn j对应于输入激活信号,“k”是一个MAC部件(例如MAC架构344)中的乘法器的数量,W是权重值,n是与(例如,将要处理的)MAC架构344相关联的神经网络中的层索引,“m”是MAC架构344的每个乘法器的算术存储单元的数量(例如,与乘法器相关联的位数)。上式3提供在MAC架构344的输出端的值。从该式可以观察到,输出激活缩小到1/k。因此,输出信号的最大值不能超过1,这是系统的供电电压。进一步自动执行固有的归一化过程,而无需任何额外的硬件。这样做还消除了所有潜在的溢出条件。下面提供式3的等效式4,而且式4反映了求和器342的求和。
(式4)
在式4中,变量与关于式3所论述的变量相同。
图2B示出由MAC架构344执行的操作的图形示意。在图2B中,输入模拟信号IAn 0-IAn 2输入到第一、第二和第三存储器中乘法器架构336、338、340中。第一、第二和第三存储器中乘法器架构336、338、340还包括不同的权重Wn 0(k)-Wn 2(k)。在求和器342中组合第一、第二和第三存储器中乘法器架构336、338、340的输出。
图3示出采用增强的存储器中MAC执行乘法过程的方法800。一般可采用本文中所描述的实施例,例如,已经论述过的存储器中乘法器架构300(图1A)、C-2C阶梯(600)和/或MAC架构344(图2A和图2B),来实现方法800。在实施例中,作为存储在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等的机器或计算机可读存储介质中的逻辑指令集,在一个或多个模块中;在诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)之类的可配置逻辑中;使用诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术之类的电路技术,在固定功能性逻辑硬件中;或者采取上述方式的任何组合,来实现方法800。
例如,用于执行方法800中所示的操作的计算机程序代码可采用一种或多种编程语言的任何组合来编写,这些编程语言包含:面向对象的编程语言(诸如JAVA、SMALLTALK、C++等等)以及常规的过程式编程语言(诸如“C”编程语言或类似的编程语言)。另外,逻辑指令可能包含汇编指令、指令集架构(ISA)指令、机器指令、机器相关的指令、微代码、状态设置数据、集成电路的配置数据、使硬件(例如,主机处理器、中央处理单元/CPU、微控制器、等等)本来的电子电路和/或其它结构组件个性化的状态信息。
图示的处理框802采用乘法-累加器(MAC)的第一多个乘法器,从存储器阵列接收第一数字信号,其中,第一多个乘法器包含多个电容器。图示的处理框804采用第一多个乘法器,基于第一数字信号采用多个电容器执行多位计算操作。图示的处理框806采用第一多个乘法器,基于多位计算操作生成第一模拟信号。
在一些示例中,多个电容器包含第一组电容器和第二组电容器,第一多个乘法器进一步包括多个开关和多个分支,多个分支包含多个开关和第一组电容器。在一些示例中,第二组电容器连接多个分支,并且第二组电容器的电容大于第一组电容器的电容。在一些示例中,多个开关配置成基于第一数字信号与输入模拟信号电连接或断开连接。
此外,在一些示例中,多个电容器和多个开关形成C-2C阶梯。而且,在一些示例中,多个电容器包含多对电容器,每对电容器对应于不同的位。在一些示例中,方法800进一步包含:采用MAC的第二多个乘法器,基于第二数字信号生成第二模拟信号,其中,第二多个乘法器包含第二多个电容器;以及将第一模拟信号和第二模拟信号相加。在一些示例中,第一数字信号与神经网络的权重相关联。
图4示出SRAM存储器中乘法器架构394的示例。SRAM存储器中乘法器架构394包含C2C阶梯512,C2C阶梯512包含第一、第二、第三和第四乘法器378、388、390、392。SRAM存储器中乘法器架构394进一步包含SRAM阵列624,SRAM阵列624包含第一、第二、第三和第四SRAM存储单元380、382、384、386,这些存储单元生成相同权重的数字位b0、b1、b2、b3(例如,权重的不同位位置0-3的值),并且将其输出到第一、第二、第三和第四乘法器378、388、390、392。例如,反相器362、364、366、368、370、372、374、376可由来自位线BL、BLb和字线<0>至字线<3>的信号通过晶体管控制,以生成数字位b0、b1、b2、b3。第一、第二、第三和第四乘法器378、388、390、392可与上文关于存储器中乘法器架构300(图1A)和MAC架构344(图2)所描述类似地执行,以生成被彼此叠加的输出信号。
图5示出动态随机存取存储器(DRAM)乘法器架构438的示例。DRAM乘法器架构438包含C2C阶梯622,C2C阶梯622包含第一、第二、第三和第四乘法器422、424、426、428。DRAM乘法器架构438进一步包含DRAM阵列480,DRAM阵列480包含第一、第二、第三和第四DRAM存储单元472、470、468、466,这些存储单元生成相同权重的数字位b0、b1、b2、b3(例如,权重的不同位位置0-3的值),并且将其输出到第一、第二、第三和第四乘法器422、424、426、428。例如,DRAM存储单元472、470、468、466可由来自位线BL、BLb和字线<0>至字线<3>的信号和晶体管控制,以生成数字位b0、b1、b2、b3。第一、第二、第三和第四乘法器422、424、426、428可与如上文关于存储器中乘法器架构300(图1A)和MAC架构344(图2)所描述类似地执行,以生成被彼此叠加的输出信号。
图6示出磁阻随机存取存储器(MRAM)乘法器架构440的示例。MRAM乘法器架构440包含C2C阶梯474,C2C阶梯474包含第一、第二、第三和第四乘法器442、446、448、450。MRAM乘法器架构440进一步包含MRAM阵列476,MRAM阵列476包含第一、第二、第三和第四MRAM存储单元458、460、462、464,这些存储单元生成相同权重的数字位b0、b1、b2、b3(例如,权重的不同位位置0-3的值),并且将其输出到第一、第二、第三和第四乘法器442、446、448、450。例如,MRAM存储单元458、460、462、464可由来自控制线ctrl<0>至ctrl<3>的信号控制,以生成数字位b0、b1、b2、b3。第一、第二、第三和第四乘法器442、446、448、450可与如上文关于存储器中乘法器架构300(图1A)和MAC架构344(图2)所描述类似地执行,以生成被彼此叠加的输出信号。
图7示出相变存储器(PCRAM)乘法器架构530的示例。PCRAM乘法器架构530包含C2C阶梯510,C2C阶梯510包含第一、第二、第三和第四乘法器478、480、482、484。PCRAM乘法器架构530进一步包含PCRAM阵列494,PCRAM阵列494包含第一、第二、第三和第四PCRAM存储单元486、488、490、492,这些存储单元生成相同权重的数字位b0、b1、b2、b3(例如,权重的不同位位置0-3的值),并且将其输出到第一、第二、第三和第四乘法器478、480、482、484。例如,PCRAM存储单元486、488、490、492可由来自控制线ctrl<0>至ctrl<3>的信号控制,以生成数字位b0、b1、b2、b3。第一、第二、第三和第四乘法器478、480、482、484可与如上文关于存储器中乘法器架构300(图1A)和MAC架构344(图2)所描述类似地执行,以生成被彼此叠加的输出信号。
图8示出存储器中乘法器架构500。存储器中乘法器架构500可以是已经描述过的存储器中乘法器架构300(图1A)和MAC架构344(图2)的更详细示意。详细地说,计算层502(例如,乘法器)、配置层504(例如,通信接口)和存储层506(例如,存储单元)直接堆叠在彼此之上。这样做能够实现高效面积使用和可缩放性。
现在转到图9,图中示出存储器高效计算系统158。系统158一般可以是具有以下功能性的电子装置/平台的一部分:计算功能性(例如,个人数字助理/PDA、笔记本计算机、平板计算机、可变式平板、服务器)、通信功能性(例如,智能电话)、成像功能性(例如,相机、可携式摄像机)、媒体播放功能性(例如,智能电视/TV)、可穿戴功能性(例如,手表、眼饰、头饰、鞋袜、珠宝)、车辆功能性(例如,汽车、卡车、摩托车)、机器人功能性(例如,自主机器人)等、或者上述功能性的任何组合。在图示的示例中,系统158包含具有集成存储器控制器(IMC)154的主机处理器134(例如,CPU),集成存储器控制器(IMC)154耦合到系统存储器144,系统存储器144具有指令156,这些指令在被执行时实现本文中的实施例的一些方面。
图示的系统158还包含输入输出(IO)模块142,IO模块142与主机处理器134、图形处理器132(例如,GPU)、ROM 136和算术存储单元148一起在半导体管芯146上实现为芯片上系统(SoC)。图示的IO模块142与例如显示器172(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器)、网络控制器174(例如,有线和/或无线)、FPGA 178和大容量存储设备176(例如,硬盘驱动器/HDD、光盘、固态驱动器/SSD、闪存)通信,大容量存储设备176也可包含指令156。此外,SoC 146可进一步包含专用于人工智能(AI)和/或神经网络(NN)处理的处理器(未示出)和/或算术存储单元148。例如,系统SoC 146可包含视觉处理部件(VPU)、张量处理部件(TPU)和/或诸如算术存储单元148之类的其它AI/NN特定的处理器、等等。在一些实施例中,本文中所描述的实施例的任何方面可在专用于AI和/或NN处理的处理器和/或加速器(诸如算术存储单元148、图形处理器132和/或主机处理器134)中实现。系统158可通过网络控制器174与一个或多个边缘节点通信,以接收权重更新和激活信号。
值得注意的是,系统158和算术存储单元148可实现已经论述过的存储器中乘法器架构300(图1A)、C-2C阶梯(600)、MAC架构344(图2A和图2B)、方法800(图3)、SRAM存储器中乘法器架构394(图4)、DRAM乘法器架构438(图5)、MRAM乘法器架构440(图6)、PCRAM架构530(图7)和存储器中乘法器架构500(图8)。因此,图示的计算系统158被视为实现新的功能性,并且至少就它使计算系统158能够以更低的时延、降低的功率和更大的面积效率对神经网络数据执行操作来说,得到性能增强。
图10示出半导体设备186(例如,芯片、管芯、封装)。图示的设备186包含一个或多个衬底184(例如,硅、蓝宝石、砷化镓)和耦合到(一个或多个)衬底184的逻辑182(例如,晶体管阵列和其它集成电路/IC组件)。在实施例中,在应用开发阶段中操作设备186,并且逻辑182执行本文中所描述的实施例的一个或多个方面,例如,已经论述过的存储器中乘法器架构300(图1A)、C-2C阶梯(600)、MAC架构344(图2A和图2B)、方法800(图3)、SRAM存储器中乘法器架构394(图4)、DRAM乘法器架构438(图5)、MRAM乘法器架构440(图6)、PCRAM乘法器架构530(图7)和存储器中乘法器架构500(图8)。因此,逻辑182采用乘法-累加器(MAC)的第一多个乘法器,从存储器阵列接收第一数字信号,其中,第一多个乘法器包含多个电容器。逻辑182采用第一多个乘法器,基于第一数字信号采用多个电容器执行多位计算操作。逻辑182采用第一多个乘法器,基于多位计算操作生成第一模拟信号。逻辑182可至少部分地在可配置逻辑或固定功能性硬件逻辑中实现。在一个示例中,逻辑182包含位于(例如,嵌入)(一个或多个)衬底184内的晶体管沟道区。因此,逻辑182和(一个或多个)衬底184之间的界面可能不是突变结。逻辑182也可被视为包含生长在(一个或多个)衬底184的初始晶圆上的外延层。
图11示出根据一个实施例的处理器核200。处理器核200可以是诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器或执行代码的其它装置之类的任何类型的处理器的核。虽然图11中仅示出一个处理器核200,但是处理元件可备选地包含不止一个图11中所示的处理器核200。处理器核200可以是单线程核,或者对于至少一个实施例,处理器核200可以是多线程的,因为它可以每个核包含不止一个硬件线程上下文(或“逻辑处理器”)。
图11还示出耦合到处理器核200的存储器270。存储器270可以是本领域技术人员已知或以其它方式可获得的各种各样的存储器(包含存储器层次的各种层)中的任一种。存储器270可包含要由处理器核200执行的一个或多个代码213(一个或多个)指令,其中,代码213可实现这些实施例的一个或多个方面,诸如例如已经论述过的存储器中乘法器架构300(图1A)、C-2C阶梯(600)、MAC架构344(图2A和图2B)、方法800(图3)、SRAM存储器中乘法器架构394(图4)、DRAM乘法器架构438(图5)、MRAM乘法器架构440(图6)、PCRAM乘法器架构530(图7)和存储器中乘法器架构500(图8)。处理器核200遵循由代码213所指示的指令的程序序列。每个指令可输入前端部分210,并且由一个或多个解码器220处理。解码器220可生成诸如预定义格式的固定宽度的微操作之类的微操作以作为其输出,或者可生成反映原始代码指令的其它指令、微指令或控制信号。图示的前端部分210还包含寄存器重命名逻辑225和调度逻辑230,这些逻辑一般分配资源,并且将与用于执行的转换指令相对应的操作进行排队。
处理器核200被示为包含执行逻辑250,执行逻辑250具有执行部件255-1至255-N的集合。一些实施例可包含专用于特定功能或功能集的多个执行部件。其它实施例可仅包含一个执行部件或者可以执行具体功能的一个执行部件。图示的执行逻辑250执行代码指令所指定的操作。
在完成代码指令所指定的操作的执行后,后端逻辑260引退代码213的指令。在一个实施例中,处理器核200允许乱序执行,但是要求按顺序引退指令。引退逻辑265可采取本领域技术人员已知的各种各样的形式(例如,对缓冲器重新排序等等)。以这种方式,至少就解码器生成的输出、寄存器重命名逻辑225利用的硬件寄存器和表格、以及执行逻辑250修改的任何寄存器(未示出)而言,在代码213的执行期间变换了处理器核200。
虽然在图11中没有示出,但是处理元件可包含在具有处理器核200的芯片上的其它元件。例如,处理元件可包含存储器控制逻辑连同处理器核200。处理元件可包含I/O控制逻辑,和/或可包含与存储器控制逻辑集成的I/O控制逻辑。处理元件还可包含一个或多个高速缓存。
现在参考图12,示出根据实施例的计算系统1000实施例的框图。图12中示出的是包含第一处理元件1070和第二处理元件1080的多处理器系统1000。虽然示出两个处理元件1070和1080,但是要理解,系统1000的实施例也可仅包含一个这样的处理元件。
系统1000被图示为点对点互连系统,其中,第一处理元件1070和第二处理元件1080经由点对点互连1050耦合。应该理解,图12中所图示的互连中的任何或全部互连都可实现为多点分支总线,而不是点对点互连。
如图12中所示,处理元件1070和1080中的每个处理元件都可以是包含第一和第二处理器核(即,处理器核1074a和1074b以及处理器核1084a和1084b)的多核处理器。此类核1074a、1074b、1084a、1084b可配置成以与上文结合图11所论述的方式类似的方式执行指令代码。
每个处理元件1070、1080可包含至少一个共享高速缓存1896a、1896b。共享高速缓存1896a、1896b可存储分别由处理器的一个或多个组件(诸如核1074a、1074b和1084a、1084b)利用的数据(例如,指令)。例如,共享高速缓存1896a、1896b可本地缓存在存储器1032、1034中存储的数据,以便处理器的组件更快地存取。在一个或多个实施例中,共享高速缓存1896a、1896b可包含一个或多个中间级高速缓存(诸如第2级(L2)、第3级(L3)、第4级(L4)或其它级的高速缓存)、最后一级高速缓存(LLC)和/或其组合。
虽然采用仅两个处理元件1070、1080示出,但是要理解,实施例的范围不限于此。在其它实施例中,在给定的处理器中可存在一个或多个附加处理元件。备选地,处理元件1070、1080中的一个或多个处理元件可以是不同于处理器的元件,诸如加速器或者现场可编程门阵列。例如,(一个或多个)附加处理元件可包含与第一处理器1070相同的(一个或多个)附加处理器、与第一处理器1070异质或不对称的(一个或多个)附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)部件)、现场可编程门阵列或者任何其它处理元件。就包含架构、微架构、热、功耗特性等等的一系列品质度量而言,处理元件1070、1080之间可能存在各种各样的差异。这些差异可有效地将其本身表现为在处理元件1070、1080之中的不对称性和异质性。对于至少一个实施例,各种处理元件1070、1080可驻留在相同的管芯封装中。
第一处理元件1070可进一步包含存储器控制器逻辑(MC)1072以及点对点(P-P)接口1076和1078。类似地,第二处理元件1080可包含MC 1082以及P-P接口1086和1088。如图12中所示,MC 1072和1082将处理器耦合到相应的存储器,即,存储器1032和存储器1034,这些存储器可以是本地附连到相应处理器的主存储器的一些部分。虽然将MC 1072和1082图示为集成到处理元件1070、1080中,但是对于备选实施例,MC逻辑可以是位于处理元件1070、1080之外而不是集成于其中的分立逻辑。
第一处理元件1070和第二处理元件1080可分别经由P-P互连1076、1086耦合到I/O子系统1090。如图12中所示,I/O子系统1090包含P-P接口1094和1098。此外,I/O子系统1090包含耦合I/O子系统1090与高性能图形引擎1038的接口1092。在一个实施例中,总线1049可用于将图形引擎1038耦合到I/O子系统1090。备选地,点对点互连也可耦合这些组件。
接着,I/O子系统1090可经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(PCI)总线、或者诸如PCI Express总线或另一种第三代I/O互连总线之类的总线,但是实施例的范围不限于此。
如图12中所示,各种I/O装置1014(例如,生物测定扫描仪、扬声器、相机、传感器)连同总线桥1018可耦合到第一总线1016,总线桥1018可将第一总线1016耦合到第二总线1020。在一个实施例中,第二总线1020可以是低引脚数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线1020,包括例如键盘/鼠标1012、(一个或多个)通信装置1026以及可包含代码1030的数据存储部件1019(诸如盘驱动器或其它大容量存储装置)。图示的代码1030可实现诸如例如已经论述过的存储器中乘法器架构300(图1A)、C-2C阶梯(600)、MAC架构344(图2A和图2B)、方法800(图3)、SRAM存储器中乘法器架构394(图4)、DRAM乘法器架构438(图5)、MRAM乘法器架构440(图6)、PCRAM乘法器架构530(图7)和存储器中乘法器架构500(图8)的一个或多个方面。此外,音频I/O 1024可耦合到第二总线1020,并且电池1010可为计算系统1000供电。
注意,设想了其它实施例。例如,取代图12的点对点架构,系统可实现多点分支总线或另一种此类通信拓扑。而且,可备选地使用比图12中所示的集成芯片更多或更少的集成芯片来分割开图12的这些元件。
附加注释和示例:
示例1包括一种计算系统,该计算系统包括处理器、存储器阵列和乘法-累加器(MAC),其中,MAC包含第一多个乘法器,第一多个乘法器包含多个电容器,其中,第一多个乘法器配置成:从存储器阵列接收第一数字信号,基于第一数字信号采用多个电容器执行多位计算操作,以及基于多位计算操作生成第一模拟信号。
示例2包含权利要求1的计算系统,其中,多个电容器包含第一组电容器和第二组电容器,第一多个乘法器进一步包括多个开关和多个分支,多个分支包含多个开关和第一组电容器。
示例3包含权利要求2的计算系统,其中,第二组电容器连接多个分支,此外,其中,第二组电容器的电容大于第一组电容器的电容。
示例4包含权利要求1至3中的任一项的计算系统,其中,多个开关要配置成基于第一数字信号与输入模拟信号电连接或断开连接。
示例5包含权利要求1至4中的任一项的计算系统,其中,多个电容器和多个开关形成C-2C阶梯。
示例6包含权利要求1至5中的任一项的计算系统,其中,多个电容器包含多对电容器,每对电容器对应于不同的位。
示例7包含权利要求1的计算系统,其中,MAC进一步包括:第二多个乘法器,所述第二多个乘法器包含用于基于第二数字信号生成第二模拟信号的第二多个电容器;以及用于将第一模拟信号和第二模拟信号相加的加法器。
示例8包含权利要求1至7中的任一项的计算系统,其中,第一数字信号与神经网络的权重相关联。
示例9包含一种半导体设备,该设备包括一个或多个衬底以及耦合到所述一个或多个衬底的逻辑,其中,该逻辑至少部分地在可配置或固定功能性硬件中的一个或多个中实现,该逻辑包括存储器阵列以及连接到存储器阵列的乘法-累加器(MAC),其中,MAC包含第一多个乘法器,第一多个乘法器包含多个电容器,其中,第一多个乘法器配置成:从存储器阵列接收第一数字信号,基于第一数字信号采用多个电容器执行多位计算操作,以及基于多位计算操作生成第一模拟信号。
示例10包含权利要求9的设备,其中,多个电容器包含第一组电容器和第二组电容器,第一多个乘法器进一步包括多个开关以及多个分支,多个分支包含多个开关和第一组电容器。
示例11包含权利要求10的设备,其中,第二组电容器连接多个分支,此外,其中,第二组电容器的电容大于第一组电容器的电容。
示例12包含权利要求9至11中的任一项的设备,其中,多个开关要配置成基于第一数字信号与输入模拟信号电连接或断开连接。
示例13包含权利要求9至12中的任一项的设备,其中,多个电容器和多个开关形成C-2C阶梯。
示例14包含权利要求9至13中的任一项的设备,其中,多个电容器包含多对电容器,每对电容器对应于不同的位。
示例15包含权利要求9的设备,其中,MAC进一步包括:第二多个乘法器,所述第二多个乘法器包含用于基于第二数字信号生成第二模拟信号的第二多个电容器;以及用于将第一模拟信号和第二模拟信号相加的加法器。
示例16包含权利要求9至15中的任一项的设备,其中,第一数字信号与神经网络的权重相关联。
示例17包含权利要求9至15中的任一项的设备,其中,耦合到一个或多个衬底的逻辑包含位于一个或多个衬底内的晶体管沟道区。
示例18包含一种方法,该方法包括:采用乘法-累加器(MAC)的第一多个乘法器,从存储器阵列接收第一数字信号,其中,第一多个乘法器包含多个电容器;采用第一多个乘法器,基于第一数字信号采用多个电容器执行多位计算操作;以及采用第一多个乘法器,基于多位计算操作生成第一模拟信号。
示例19包含权利要求18的方法,其中,多个电容器包含第一组电容器和第二组电容器,第一多个乘法器进一步包括多个开关和多个分支,多个分支包含多个开关和第一组电容器。
示例20包含权利要求19的方法,其中,第二组电容器连接多个分支,此外,其中,第二组电容器的电容大于第一组电容器的电容。
示例21包含权利要求18至20中的任一项的方法,其中,多个开关配置成基于第一数字信号与输入模拟信号电连接或断开连接。
示例22包含权利要求18至21中的任一项的方法,其中,多个电容器和多个开关形成C-2C阶梯。
示例23包含权利要求18至22中的任一项的方法,其中,多个电容器包含多对电容器,每对电容器对应于不同的位。
示例24包含权利要求18的方法,进一步包括:采用MAC的第二多个乘法器,基于第二数字信号生成第二模拟信号,其中,第二多个乘法器包含第二多个电容器;以及将第一模拟信号和第二模拟信号相加。
示例25包含权利要求18至24中的任一项的方法,其中,第一数字信号与神经网络的权重相关联。
示例26包含一种半导体设备,该设备包括:用于采用乘法-累加器(MAC)的第一多个乘法器从存储器阵列接收第一数字信号的部件,其中,第一多个乘法器包含多个电容器;用于采用第一多个乘法器基于第一数字信号采用多个电容器执行多位计算操作的部件;以及用于采用第一多个乘法器基于多位计算操作生成第一模拟信号的部件。
示例27包含权利要求26的设备,其中,多个电容器包含第一组电容器和第二组电容器,第一多个乘法器进一步包括多个开关和多个分支,多个分支包含多个开关和第一组电容器。
示例28包含权利要求27的设备,其中,第二组电容器连接多个分支,此外,其中,第二组电容器的电容大于第一组电容器的电容。
示例29包含权利要求26至28中的任一项的设备,其中,多个开关配置成基于第一数字信号与输入模拟信号电连接或断开连接。
示例30包含权利要求26至29中的任一项的设备,其中,多个电容器和多个开关形成C-2C阶梯。
示例31包含权利要求26至30中的任一项的设备,其中,多个电容器包含多对电容器,每对电容器对应于不同的位。
示例32包含权利要求26的设备,进一步包括:用于采用MAC的第二多个乘法器基于第二数字信号生成第二模拟信号的部件,其中,第二多个乘法器包含第二多个电容器;以及用于将第一模拟信号和第二模拟信号相加的部件。
示例33包含权利要求26至32中的任一项的设备,其中,第一数字信号与神经网络的权重相关联。
因此,本文中所描述的技术可提供增强的存储器中计算架构。此类实施例在减小的形状因子下以更低的时延和功率执行。
实施例可适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、芯片上系统(SoC)、SSD/NAND控制器ASIC等等。另外,在有些图中,信号导体线采用线表示。有些可能不同,以指示更多的构成信号路径,有些可能具有数字标签,以指示多个构成信号路径,和/或有些可能在一端或多端具有箭头,以指示主要信息流方向。然而,这不应当以限制的方式来解释。而是,此类添加的细节可与一个或多个示例性实施例结合使用,以便于更容易理解电路。任何表示的信号线,无论是否具有附加信息,可能实际上包括一个或多个信号,这些信号可沿多个方向传播,并且可采用任何合适类型的信号方案来实现,例如,采用差分对实现的数字或模拟线、光纤线和/或单端线。
可能已经给出示例尺寸/模型/值/范围,但是实施例不限于此。随着制造技术(例如,光刻术)随时间推移而成熟,预期可以制造出更小尺寸的器件。另外,为了图示和论述的简单,并且为了不隐匿实施例的某些方面,可能或可能不在图中示出到IC芯片和其它组件的众所周知的电/地连接。此外,可采取框图形式示出布置,以免隐匿实施例,而且也考虑到如下事实:关于此类框图布置的实现的细节高度取决于要在其中实现实施例的平台,即,此类细节应该完全在本领域技术人员的能力范围之内。在阐述了具体细节(例如,电路)以便描述示例实施例的情况下,本领域技术人员应该明白,可以在没有这些具体细节或在对这些具体细节进行变更的情况下实践实施例。因此,本描述应该视为说明性而非限制性的。
术语“耦合”可在本文中用于指所论述的组件之间的任何类型的直接或间接关系,并且可适用于电气、机械、流体、光学、电磁、机电或其它连接。另外,术语“第一”、“第二”等等可在本文中仅用来方便论述,并且除非另外指明,否则它们不带有具体的时间或年代先后意义。
如在本申请和在权利要求书中所使用,通过术语“中的一个或多个”连接的项目的列表可表示所列项目的任何组合。例如,措辞“A、B或C中的一个或多个”可表示:A;B;C;A和B;A和C;B和C;或者A、B和C。
本领域技术人员将从前面的描述中认识到,实施例的广泛技术可以采取各种各样的形式来实现。因此,虽然结合实施例的具体示例描述了实施例,但是实施例的真实范围不应局限于此,因为本领域技术人员在学习附图、说明书和随附权利要求书之后将会明白其它的修改。
Claims (25)
1.一种计算系统,包括:
处理器;
存储器阵列;以及
乘法-累加器(MAC),其中,所述MAC包含第一多个乘法器,所述第一多个乘法器包含多个电容器,其中,所述第一多个乘法器配置成:
从所述存储器阵列接收第一数字信号,
基于所述第一数字信号采用所述多个电容器执行多位计算操作,以及
基于所述多位计算操作生成第一模拟信号。
2.如权利要求1所述的计算系统,其中:
所述多个电容器包含第一组电容器和第二组电容器,
所述第一多个乘法器进一步包括:
多个开关,以及
多个分支,所述多个分支包含所述多个开关和所述第一组电容器。
3.如权利要求2所述的计算系统,其中,所述第二组电容器连接所述多个分支,此外,其中,所述第二组电容器的电容大于所述第一组电容器的电容。
4.如权利要求2所述的计算系统,其中,所述多个开关要配置成基于所述第一数字信号与输入模拟信号电连接或断开连接。
5.如权利要求2所述的计算系统,其中,所述多个电容器和所述多个开关形成C-2C阶梯。
6.如权利要求1所述的计算系统,其中,所述多个电容器包含多对电容器,每对电容器对应于不同的位。
7.如权利要求1所述的计算系统,其中,所述MAC进一步包括:
第二多个乘法器,所述第二多个乘法器包含用于基于第二数字信号生成第二模拟信号的第二多个电容器;以及
用于将所述第一模拟信号和所述第二模拟信号相加的加法器。
8.如权利要求1至7中的任一项所述的计算系统,其中,所述第一数字信号与神经网络的权重相关联。
9.一种半导体设备,包括:
一个或多个衬底;以及
耦合到所述一个或多个衬底的逻辑,其中,所述逻辑至少部分地在可配置或固定功能性硬件中的一个或多个中实现,所述逻辑包括:
存储器阵列;以及
连接到所述存储器阵列的乘法-累加器(MAC),其中,所述MAC包含第一多个乘法器,所述第一多个乘法器包含多个电容器,其中,所述第一多个乘法器配置成:
从所述存储器阵列接收第一数字信号;
基于所述第一数字信号采用所述多个电容器执行多位计算操作;以及
基于所述多位计算操作生成第一模拟信号。
10.如权利要求9所述的设备,其中:
所述多个电容器包含第一组电容器和第二组电容器,
所述第一多个乘法器进一步包括:
多个开关;以及
多个分支,所述多个分支包含所述多个开关和所述第一组电容器。
11.如权利要求10所述的设备,其中,所述第二组电容器连接所述多个分支,此外,其中,所述第二组电容器的电容大于所述第一组电容器的电容。
12.如权利要求10所述的设备,其中,所述多个开关要配置成基于所述第一数字信号与输入模拟信号电连接或断开连接。
13.如权利要求9所述的设备,其中,所述多个电容器和所述多个开关形成C-2C阶梯。
14.如权利要求9所述的设备,其中,所述多个电容器包含多对电容器,每对电容器对应于不同的位。
15.如权利要求9所述的设备,其中,所述MAC进一步包括:
第二多个乘法器,所述第二多个乘法器包含用于基于第二数字信号生成第二模拟信号的第二多个电容器;以及
用于将所述第一模拟信号和所述第二模拟信号相加的加法器。
16.如权利要求9至15中的任一项所述的设备,其中,所述第一数字信号与神经网络的权重相关联。
17.如权利要求9至15中的任一项所述的设备,其中,耦合到所述一个或多个衬底的所述逻辑包含位于所述一个或多个衬底内的晶体管沟道区。
18.一种方法,包括:
采用乘法-累加器(MAC)的第一多个乘法器,从存储器阵列接收第一数字信号,其中,所述第一多个乘法器包含多个电容器;
采用所述第一多个乘法器,基于所述第一数字信号采用所述多个电容器执行多位计算操作;以及
采用所述第一多个乘法器,基于所述多位计算操作生成第一模拟信号。
19.如权利要求18所述的方法,其中:
所述多个电容器包含第一组电容器和第二组电容器,
所述第一多个乘法器进一步包括:
多个开关;以及
多个分支,所述多个分支包含所述多个开关和所述第一组电容器。
20.如权利要求19所述的方法,其中,所述第二组电容器连接所述多个分支,此外,其中,所述第二组电容器的电容大于所述第一组电容器的电容。
21.如权利要求19所述的方法,其中,所述多个开关配置成基于所述第一数字信号与输入模拟信号电连接或断开连接。
22.如权利要求18所述的方法,其中,所述多个电容器和所述多个开关形成C-2C阶梯。
23.如权利要求18所述的方法,其中,所述多个电容器包含多对电容器,每对电容器对应于不同的位。
24.如权利要求18所述的方法,进一步包括:
采用所述MAC的第二多个乘法器,基于第二数字信号生成第二模拟信号,其中,所述第二多个乘法器包含第二多个电容器;以及
将所述第一模拟信号和所述第二模拟信号相加。
25.如权利要求18至24中的任一项所述的方法,其中,所述第一数字信号与神经网络的权重相关联。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/485179 | 2021-09-24 | ||
US17/485,179 US20220012016A1 (en) | 2021-09-24 | 2021-09-24 | Analog multiply-accumulate unit for multibit in-memory cell computing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904311A true CN115904311A (zh) | 2023-04-04 |
Family
ID=79172512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211019472.2A Pending CN115904311A (zh) | 2021-09-24 | 2022-08-24 | 用于多位存储单元中计算的模拟乘法-累加部件 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220012016A1 (zh) |
CN (1) | CN115904311A (zh) |
DE (1) | DE102022124292A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220406392A1 (en) * | 2021-06-21 | 2022-12-22 | Intel Corporation | Techniques for analog multibit data representation for in-memory computing |
CN114911453B (zh) * | 2022-07-19 | 2022-10-04 | 中科南京智能技术研究院 | 一种多比特乘累加全数字存内计算装置 |
US20240037178A1 (en) * | 2022-07-28 | 2024-02-01 | Mediatek Inc. | Compute-in-memory circuit with charge-domain passive summation and associated method |
WO2024027937A1 (en) * | 2022-08-05 | 2024-02-08 | Synthara Ag | Memory-mapped compact computing array |
CN115658013B (zh) * | 2022-09-30 | 2023-11-07 | 杭州智芯科微电子科技有限公司 | 向量乘加器的rom存内计算装置和电子设备 |
EP4354435A1 (de) | 2022-10-11 | 2024-04-17 | Semron GmbH | Anordnung einer analogen multiplikationseinheit mit binären multiplikanden |
-
2021
- 2021-09-24 US US17/485,179 patent/US20220012016A1/en active Pending
-
2022
- 2022-08-24 CN CN202211019472.2A patent/CN115904311A/zh active Pending
- 2022-09-21 DE DE102022124292.7A patent/DE102022124292A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220012016A1 (en) | 2022-01-13 |
DE102022124292A1 (de) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115904311A (zh) | 用于多位存储单元中计算的模拟乘法-累加部件 | |
US11625584B2 (en) | Reconfigurable memory compression techniques for deep neural networks | |
US10877752B2 (en) | Techniques for current-sensing circuit design for compute-in-memory | |
Li et al. | A learnable parallel processing architecture towards unity of memory and computing | |
Jain et al. | Cxdnn: Hardware-software compensation methods for deep neural networks on resistive crossbar systems | |
US20220366968A1 (en) | Sram-based in-memory computing macro using analog computation scheme | |
WO2022183759A1 (zh) | 存算一体处理器、处理系统、处理装置以及算法模型的部署方法 | |
Bavandpour et al. | 3D-aCortex: An ultra-compact energy-efficient neurocomputing platform based on commercial 3D-NAND flash memories | |
KR20200140703A (ko) | 머신 학습 가속기들에 대한 넓은 승산-가산기 트리가 있는 부동-소수점 내적 하드웨어 | |
US9933998B2 (en) | Methods and apparatuses for performing multiplication | |
Kulkarni et al. | Neuromorphic hardware accelerator for SNN inference based on STT-RAM crossbar arrays | |
Angizi et al. | Pisa: A binary-weight processing-in-sensor accelerator for edge image processing | |
CN114791796A (zh) | 一种基于分离栅闪存晶体管的多输入计算单元及其计算方法 | |
TW202203053A (zh) | 記憶體電路及其操作方法 | |
Reis et al. | A fast and energy efficient computing-in-memory architecture for few-shot learning applications | |
Cılasun et al. | Spiking neural networks in spintronic computational RAM | |
Wu et al. | A floating-point 6T SRAM in-memory-compute macro using hybrid-domain structure for advanced AI edge chips | |
Hu et al. | A co-designed neuromorphic chip with compact (17.9 KF 2) and weak neuron number-dependent neuron/synapse modules | |
Jeong et al. | A Ternary Neural Network computing-in-Memory Processor with 16T1C Bitcell Architecture | |
US11914973B2 (en) | Performing multiple bit computation and convolution in memory | |
US20220334801A1 (en) | Weight stationary in-memory-computing neural network accelerator with localized data multiplexing | |
US20230169315A1 (en) | Sparse index generator | |
WO2021168601A1 (en) | Implementing external memory training at runtime | |
US20230289066A1 (en) | Reconfigurable multibit analog in-memory computing with compact computation | |
Xu et al. | SRAM-based in-memory-computing for AI edge devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |