CN112989273B - 一种利用补码编码进行存内运算的方法 - Google Patents
一种利用补码编码进行存内运算的方法 Download PDFInfo
- Publication number
- CN112989273B CN112989273B CN202110176018.7A CN202110176018A CN112989273B CN 112989273 B CN112989273 B CN 112989273B CN 202110176018 A CN202110176018 A CN 202110176018A CN 112989273 B CN112989273 B CN 112989273B
- Authority
- CN
- China
- Prior art keywords
- memory
- complementary code
- analog
- electric signal
- input
- 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.)
- Active
Links
- 230000000295 complement effect Effects 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000004364 calculation method Methods 0.000 claims abstract description 14
- 239000013598 vector Substances 0.000 claims description 15
- 239000011159 matrix material Substances 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 239000000969 carrier Substances 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 3
- 238000005070 sampling Methods 0.000 claims description 2
- 230000010354 integration Effects 0.000 abstract description 3
- 230000000737 periodic effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- 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
- 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/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
本发明公开了一种利用补码编码进行存内运算的方法,属于存算一体化及类脑计算技术领域。所述方法包括数字域以及模拟域,所述数字域包括补码编码以及控制调度,所述模拟域包括模拟电信号输入、存算器件以及模拟电信号读出,所述补码编码输出端与模拟电信号连接,模拟电信号输出端与存算器件连接,存算器件输出端与模拟电信号读出连接,所述模拟电信号读出的输出端输出运算结果,所述运算结果通过控制调度作为下一周期编码的控制信号传递到补码编码。本发明公开的一种利用补码编码进行存内运算的方法可使存算阵列的面积缩减为原来的一半,速度快,并行度高,能效比好。
Description
技术领域
本发明公开了一种利用补码编码进行存内运算的方法,属于存算一体化及类脑计算技术领域。
背景技术
传统计算机架构大多是冯-诺伊曼,即存算分离架构,此类架构不仅会导致数据在传输上有大量能量消耗,也会导致存储速率和运算速率的不同步,从而影响整体的运算速度。存内计算实现了存算一体化,打破了存算的“速度墙”和“功耗墙”。同时利用器件特性,单个器件可完成一次乘加操作,对于整个器件阵列拥有速度快、并行度高、能效比好的特点,适用于需要进行大量乘加运算的神经网络运算。
现在传统存内计算阵列设计中,由于模拟域无法有效对负数进行处理,往往需对正负数据分开进行运算,然后在数字域相减以获得最终值。此种方法需使用使用不同字线上的器件分别计算正负权重的矩阵乘法计算,以此会产生器件在计算上的冗余,造成面积的冗余。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种利用补码编码进行存内运算的方法。
(二)技术方案
为实现上述目的,本发明提供如下技术方案:一种利用补码编码进行存内运算的方法,包括数字域以及模拟域,所述数字域包括补码编码以及控制调度,所述模拟域包括模拟电信号输入、存算器件以及模拟电信号读出,所述补码编码输出端与模拟电信号连接,模拟电信号输出端与存算器件连接,存算器件输出端与模拟电信号读出连接,所述模拟电信号读出的输出端输出运算结果,所述运算结果通过控制调度作为下一周期编码的控制信号传递到补码编码。
可选的,所述补码编码用于据权重的正负性对输入数据进行补码编码操作。
可选的,所述控制调度用于全局的控制流程,对整体的数据进行调度与分配。
可选的,模拟电信号的输入用于连接数字域和模拟域之间的运算。
可选的,所述模拟电信号输入采用脉冲输入。
可选的,所述模拟电信号输出用于电流量转换为数字量传递到数字域。
可选的,所述存算器件为由存算单元组成,尺寸为n×m的存算单元阵列,存算单元的补码输入端口,输入其中一个运算量作为电输入量,存算单元的控制端口可对存算单元预先编程输入另一运算量,每个存算单元通过在补码输入端口施加电压脉冲激发出载流子,对模拟电信号输入以及模拟电信号读出形成一定的运算关系。
(三)有益效果
与现有技术相比,本发明提供了一种利用补码编码进行存内运算的方法,具备以下有益效果:
该利用补码编码进行存内运算的方法,由于在模拟域中对负信号不容易进行处理,传统采用正常二进制编码的存算阵列处理正负权重W时,需要将正负权重分在不同的行的器件上,每一行通过运算的模拟量输出值均为正信号,然后在数字域中对这两个正信号所转换的数字量进行相减操作获得最终值。此种设计方法会形成大量的面积冗余。而本发明根据权重W的正负对输入数据进行补码编码,经过此种数据处理,所有的权重都可用正数表示,存算阵列可以实现正负权重的合并,利用一行器件同时完成正负权重的运算。由此,利用本发明可使存算阵列的面积缩减为原来的一半。在功耗方面,由于本发明的数据为按位输入,所以利用补码只会比原来的输入数据多输入一位符号位,对整体功耗影响远小于对面积的增益。
附图说明
图1为本发明的整体结构框图;
图2为本发明存算单元阵列示意图;
图3为本发明实施例1计算阵列的整体示意图;
图中:1、数字域;2、模拟域;3、补码编码;4、控制调度;5、模拟电信号输入;6、存算器件;7、模拟电信号读出。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
数字域计算包括补码编码和控制调度,模拟域包括模拟电信号输入、模拟电信读出以及存算器件,具体说明如下:
补码编码根据权重的正负性对输入数据进行补码编码操作,例如,如果输入数据对应的权重为负数,则对该输入数据进行负数的补码编码,如果输入数据对应的权重为正数,则对该输入数据进行正数的补码编码。
控制调度涉及到了全局的控制流程,主要对补码编码、模拟电信号输入以及模拟电信读出等操作进行控制,并对整体的数据进行调度与分配。
模拟电信号输入与模拟电信号读出连接了数字域和模拟域之间的运算。模拟电信号输入主要是脉冲输入,模拟域接受数字域已经进行补码编码的输入数据的脉冲信号。脉冲信号施加在存算器件上完成运算操作。模拟电信号读出,主要是把电流量转换为数字量进而交付给数字域。
存算阵列由存算单元组成,尺寸为m×n。如图2所示,标有CIM的圆圈代表一个存算单元。存算单元的补码输入端口,输入其中一个运算量作为电输入量,存算单元的控制端口可对存算单元预先编程输入另一运算量。每个存算单元通过在补码输入端口施加电压脉冲激发出载流子,对模拟电信号输入与模拟电信号读出形成一定的运算关系。
实施例2
本实施例使用浮栅器件作为存算单元组成存算阵列,以矩阵向量乘的形式来实现某种特定函数运算。
以计算某种特定函数f(DC,W)为例,令Y=f(DC,W),DC和W为上述存算单元阵列中的两运算量。其中Y为m×1的向量,数据宽度为k;DC为n×k的矩阵,由DC i构成;DC i为1×k二进制向量,代表一个位宽为k的数据。其中DC i由1×k向量Di变换而来,Di为原始数据。如(1)所示,dik为Di按照二进制比特位展开的结果,为Di C按照二进制比特位展开的结果。
Di C与Di的关系为如下所示,其中~为按位取反符号:
再将n个1×k的向量Di C拼接成n×k的矩阵DC:
另一运算量W为预先训练好的,大小为m×n的权值矩阵,由数值wmn构成,如式(3)所示。
然后对计算向量Dc和矩阵W的乘法运算W×Dc,如式(4),计算示意图如图3所示。
在图3中由浮栅器件作为存算器件构成存算阵列,端口S1S2…Sn依次按列输入向量Dc。存算阵列完成Dc×W运算,依次由输出每列的运算结果的模拟量,其中/>代表W第s行与Dc的第t列作的向量积运算,可由式(5)表达:
存算阵列完成之后,由电流读出电路完成采样并转换成数字量交由数字域计算,数字域对/>进行按位权权重拼接成I′s,其中I′s与/>的关系为:
其中I′s以补码逆编码法则转换成Is,具体转换过程如下,其中~为按位取反符号:
最终得出对运算量Dc与W完成运算。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种利用补码编码进行存内运算的方法,包括数字域(1)以及模拟域(2),其特征在于:所述数字域(1)包括补码编码(3)以及控制调度(4),所述模拟域(2)包括模拟电信号输入(5)、存算器件(6)以及模拟电信号读出(7),所述补码编码(3)输出端与模拟电信号连接,模拟电信号输出端与存算器件(6)连接,存算器件(6)输出端与模拟电信号读出(7)连接,所述模拟电信号读出(7)的输出端输出运算结果,所述运算结果通过控制调度(4)作为下一周期编码的控制信号传递到补码编码(3);
所述存算器件(6)由存算单元组成尺寸为n×m的存算单元阵列,存算单元的补码输入端口,输入其中一个运算量作为电输入量,存算单元的控制端口对存算单元预先编程输入另一运算量,每个存算单元通过在补码输入端口施加电压脉冲激发出载流子,对模拟电信号输入(5)以及模拟电信号读出(7)形成运算关系;
以计算特定函数f(DC,W)为例,令Y=f(DC,W),DC和W为上述存算单元阵列中的两运算量;其中Y为m×1的向量,数据宽度为k;DC为n×k的矩阵,由DC i构成;DC i为1×k二进制向量,代表一个位宽为k的数据;其中DC i由1×k向量Di变换而来,Di为原始数据,dik为Di按照二进制比特位展开的结果,为Di C按照二进制比特位展开的结果;
Di C与Di的关系为如下所示,其中~为按位取反符号:
再将n个1×k的向量Di C拼接成n×k的矩阵DC:
另一运算量W为预先训练好的,大小为m×n的权值矩阵,由数值wmn构成,如式(3)所示;
然后对计算向量Dc和矩阵W的乘法运算W×Dc,如式(4),
由浮栅器件作为存算器件构成存算阵列,端口S1S2…Sn依次按列输入向量Dc;存算阵列完成Dc×W运算,依次由输出每列的运算结果的模拟量,其中/>代表W第s行与Dc的第t列作的向量积运算,可由式(5)表达:
存算阵列完成之后,由电流读出电路完成采样并转换成数字量交由数字域计算,数字域对/>进行按位权权重拼接成/>其中/>与/>的关系为:
其中以补码逆编码法则转换成Is,具体转换过程如下,其中~为按位取反符号:
最终得出对运算量Dc与W完成运算。
2.根据权利要求1所述的一种利用补码编码进行存内运算的方法,其特征在于:所述补码编码(3)用于根据权重的正负性对输入数据进行补码编码(3)操作。
3.根据权利要求1所述的一种利用补码编码进行存内运算的方法,其特征在于:所述控制调度(4)用于全局的控制流程,对整体的数据进行调度与分配。
4.根据权利要求1所述的一种利用补码编码进行存内运算的方法,其特征在于:模拟电信号的输入用于连接数字域(1)和模拟域(2)之间的运算。
5.根据权利要求1所述的一种利用补码编码进行存内运算的方法,其特征在于:所述模拟电信号输入(5)采用脉冲输入。
6.根据权利要求1所述的一种利用补码编码进行存内运算的方法,其特征在于:所述模拟电信号读出(7)用于电流量转换为数字量传递到数字域(1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110176018.7A CN112989273B (zh) | 2021-02-06 | 2021-02-06 | 一种利用补码编码进行存内运算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110176018.7A CN112989273B (zh) | 2021-02-06 | 2021-02-06 | 一种利用补码编码进行存内运算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112989273A CN112989273A (zh) | 2021-06-18 |
CN112989273B true CN112989273B (zh) | 2023-10-27 |
Family
ID=76392646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110176018.7A Active CN112989273B (zh) | 2021-02-06 | 2021-02-06 | 一种利用补码编码进行存内运算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989273B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343585A (zh) * | 2021-06-29 | 2021-09-03 | 江南大学 | 一种用于矩阵乘法运算的权位分立存算阵列设计方法 |
CN113704139A (zh) * | 2021-08-24 | 2021-11-26 | 复旦大学 | 一种用于存内计算的数据编码方法和存内计算方法 |
CN114400031B (zh) * | 2022-03-24 | 2022-07-08 | 之江实验室 | 一种补码映射的rram存算一体芯片及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043760A (zh) * | 2010-12-27 | 2011-05-04 | 上海华为技术有限公司 | 数据处理方法及系统 |
CN108256638A (zh) * | 2018-01-05 | 2018-07-06 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
CN209182823U (zh) * | 2018-11-28 | 2019-07-30 | 北京知存科技有限公司 | 一种数模混合存算一体芯片以及用于神经网络的运算装置 |
CN111611195A (zh) * | 2019-02-26 | 2020-09-01 | 北京知存科技有限公司 | 可软件定义存算一体芯片及其软件定义方法 |
CN111950718A (zh) * | 2019-05-16 | 2020-11-17 | 北京知存科技有限公司 | 利用存算一体芯片实现递进式cnn运算的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI357220B (en) * | 2008-08-07 | 2012-01-21 | Generalplus Technology Inc | Low cost analog to digital converter and method fo |
US11630997B2 (en) * | 2018-01-23 | 2023-04-18 | Samsung Electronics Co., Ltd. | Method and apparatus with bit-serial data processing of a neural network |
-
2021
- 2021-02-06 CN CN202110176018.7A patent/CN112989273B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043760A (zh) * | 2010-12-27 | 2011-05-04 | 上海华为技术有限公司 | 数据处理方法及系统 |
CN108256638A (zh) * | 2018-01-05 | 2018-07-06 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
CN209182823U (zh) * | 2018-11-28 | 2019-07-30 | 北京知存科技有限公司 | 一种数模混合存算一体芯片以及用于神经网络的运算装置 |
CN111611195A (zh) * | 2019-02-26 | 2020-09-01 | 北京知存科技有限公司 | 可软件定义存算一体芯片及其软件定义方法 |
CN111950718A (zh) * | 2019-05-16 | 2020-11-17 | 北京知存科技有限公司 | 利用存算一体芯片实现递进式cnn运算的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112989273A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112989273B (zh) | 一种利用补码编码进行存内运算的方法 | |
US11379673B2 (en) | Analog vector-matrix multiplication circuit | |
CN110750232B (zh) | 一种基于sram的并行乘加装置 | |
CN112151091A (zh) | 一种8t sram单元及存内计算装置 | |
CN114089950B (zh) | 一种多比特乘累加运算单元及存内计算装置 | |
CN102449969B (zh) | 用于软逻辑函数的电路 | |
CN112884140B (zh) | 一种多位存内计算单元、阵列及装置 | |
CN113823343B (zh) | 一种基于6t-sram的分离的计算装置 | |
CN110991608A (zh) | 一种卷积神经网络量化计算方法及系统 | |
CN111193511A (zh) | 一种应用于基于eFlash存算一体电路的数模混合读取电路的设计 | |
CN114937470B (zh) | 基于多比特sram单元的定点全精度存内计算电路 | |
CN115390789A (zh) | 基于磁隧道结计算单元的模拟域全精度存内计算电路及方法 | |
CN114038492B (zh) | 一种多相采样存内计算电路 | |
CN114791796A (zh) | 一种基于分离栅闪存晶体管的多输入计算单元及其计算方法 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN113391786B (zh) | 一种多位正负权重的计算装置 | |
CN114861902A (zh) | 处理单元及其操作方法、计算芯片 | |
CN111988031B (zh) | 一种忆阻存内矢量矩阵运算器及运算方法 | |
CN112632460B (zh) | 源极耦合、漏极求和的模拟向量-矩阵乘法运算电路 | |
Doevenspeck et al. | Noise tolerant ternary weight deep neural networks for analog in-memory inference | |
CN109273035B (zh) | 闪存芯片的控制方法、终端 | |
Reddy et al. | 16-Bit GDI multiplier design for low power applications | |
CN117636945B (zh) | 5bit带符号位的同或与同或累加运算电路、CIM电路 | |
CN115658011A (zh) | 向量乘加器的sram存内计算装置和电子设备 | |
US11809838B2 (en) | Memory device and operation method thereof |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |