CN111459552B - 一种内存中并行化计算的方法及装置 - Google Patents
一种内存中并行化计算的方法及装置 Download PDFInfo
- Publication number
- CN111459552B CN111459552B CN202010545142.1A CN202010545142A CN111459552B CN 111459552 B CN111459552 B CN 111459552B CN 202010545142 A CN202010545142 A CN 202010545142A CN 111459552 B CN111459552 B CN 111459552B
- Authority
- CN
- China
- Prior art keywords
- row
- calculation
- memory
- bit
- shift
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000013500 data storage Methods 0.000 abstract description 3
- 230000005055 memory storage Effects 0.000 abstract 1
- 230000004913 activation Effects 0.000 description 33
- 230000003321 amplification Effects 0.000 description 8
- 238000003199 nucleic acid amplification method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 6
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Dram (AREA)
Abstract
本发明公开了一种并行化存内计算的方法及装置,该方法利用现有DRAM内存存储电路的充放电特性实现了并行化的加法计算,并且通过优化数据存储及计算流程,进一步提高了数据并行计算的效率。本发明使得数据存储与计算都可以在DRAM中实现,可大大地缓解内存墙问题,同时不需要依赖新型非易失存储器件,可降低内存计算的复杂度和成本。
Description
技术领域
本发明涉及计算机技术领域尤其是内存计算领域,具体涉及一种内存中并行化计算的方法及装置。
背景技术
现代计算机系统中,数据在计算单元与内存中的搬移在系统功耗和程序运行时间上都占据了很大的比例。随着多核处理器的出现,越来越多的核被集成进同一芯片中,内存总带宽却并没有成比例的增长,造成了算力与数据传输间的不匹配,因而导致了所谓的“内存墙”问题。与此同时,计算资源虽然在增加,计算资源与动态随机存取存储器(以下简称“DRAM”)之间的通信延迟并没有改善,使得数据的搬移成为系统瓶颈之一。
为了解决这些挑战,业界近年来陆续提出了多种新型计算方式。其中包括近内存计算,存内处理器,存内计算等。典型的存内计算主要基于新型存储介质材料如忆阻器,或者是修改随机存取存储器(以下简称“RAM”)的电路结构。例如,Shubham Jain等人(ShubhamJain, Ashish Ranjan, Kaushik Roy and Anand Raghunathan. Computing in memorywith spin-transfer torque magnetic RAM. IEEE Transactions on Very Large ScaleIntegration (VLSI) Systems. Volume: 26, Issue: 3, March 2018.)提到了利用一种新型非易失性磁随机存储器(以下简称“STT_MRAM”)作为基本单元实现存内计算。这些方法需要修改RAM的结构或者采用新的RAM材料。对于现有的数据中心而言,可能大规模部署还需要花费一定的时间与资金。普林斯顿大学的fei gao等人(Fei Gao,GeorgiosTziantzioulis and David Wentzlaf. ComputeDRAM: In-Memory Compute Using Off-the-Shelf DRAMs. 52nd Annual IEEE/ACM International Symposium onMicroarchitecture, MICRO 2019) 提出了一种利用现有DRAM实现存内计算的方法。它通过修改内存控制器对内存单元的操作时序,实现了普通内存的存内计算。但该方法采用的是比特列式串行(bit-serial)方法进行计算,需要将数据额外的转换成串行存储的方式。
发明内容
针对现有技术的不足,本发明提出一种内存中并行化计算的方法及装置,具体技术方案如下:
一种内存中并行化计算的方法,内存中有多个子阵列,每个子阵列包含多行多列的基本存储单元,参与计算的行地址包括计算数据输入地址、中间结果存放地址和预留计算地址,所述的预留计算地址为连续的三行;
所述的方法具体包括如下步骤:
S3:分别利用内存按位或操作计算求和S、利用内存按位与操作计算进位C,其中S=P1 OR P2,C=A AND B;
S4:内存控制器读取C,并将C左移得C_shift,假设C位宽为N 比特,则C_shift位宽为(N+1) 比特;
如果C_shift最高位为1,则进位标记carry_flag 置1,否则保持不变;
如果C_shift次高位至C_shift最低位均等于0,则结束计算,将carry_flag作为进位标记输出,S作为和结果输出;否则,则将C_shift次高位至C_shift最低位和S作为输入值重新进入S1计算。
进一步地,设当前子阵列的预留计算地址分别为第i行、第i+1行、第i+2行, 所述的S2中P1的计算过程如下:
(2)对当前子阵列发送预充电命令;
(3)对预留计算地址第i+1行发送激活命令;
(4)减少激活至预充电时间T1至0,发送当前子阵列预充电命令;
(5)减少预充电至激活时间T2至0,发送预留计算地址第i+2行的激活命令;
(6)等待第i行、第i+1行、第i+2行三行数据同时充放电,第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,实现P1计算;
(7)将P1结果用行拷贝命令拷贝至P1的存放地址中;
所述的S2中P2的计算过程如下:
后续的步骤(2)~(5)与P1的计算过程的(2)~(5)相同;
(6)等待第i行、第i+1行、第i+2行三行数据同时充放电,第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,实现P2计算;
(7)将P2结果用行拷贝命令拷贝至P2的存放地址中。
④减少预充电与激活之间间隔时间T2,对第i行和第i+2行中的任意一行发送激活命令;
进一步地,所述的S2中,将B用行拷贝命令拷贝至第i行和第i+2行中的任意一行的具体过程如下:
①对数据B所在子阵列发送预充电命令;
②对数据B所在行发送激活命令;
③对数据B所在子阵列发送预充电命令;
④减少预充电与激活之间间隔时间T2,对第i行和第i+2行中的任意一行发送激活命令;
⑤等待放大器放大B信号,完成数据拷贝。
进一步地,所述的S2中,将辅助常数N比特0用行拷贝命令拷贝至第i+1行中的具体过程如下:
①对辅助常数N比特0所在子阵列发送预充电命令;
②对辅助常数N比特0所在行发送激活命令;
③对辅助常数N比特0所在子阵列发送预充电命令;
④减少预充电与激活之间间隔时间T2,对第i+1行发送激活命令;
⑤等待放大器放大N比特0信号,完成数据拷贝。
进一步地,所述的S2的步骤(7)通过如下步骤实现:
①在第i行、第i+1行、第i+2行中任选一行,发送预充电命令;
②对第i行、第i+1行、第i+2行任选一行发送激活命令;
③对子阵列发送预充电命令;
④减少预充电与激活之间间隔时间T2,对P1的存放地址发送激活命令;
⑤等待放大器放大信号,完成数据拷贝。
进一步地,所述的利用内存或操作计算求和S的具体过程如下:
1)分别将P1、P2用行拷贝命令拷贝至当前子阵列的预留计算地址第i+1行和第i+2行中的任意一行,且P1、P2不同行,将辅助常数N比特1用行拷贝命令拷贝至当前子阵列的预留计算地址第i行,辅助常数N比特1位宽与A、B相同,每一比特位都为1;
2)对当前子阵列发送预充电命令;
3)对第i+1行发送激活命令;
4)减少激活至预充电时间T1至0,发送当前子阵列预充电命令;
5)减少预充电至激活时间T2至0,发送第i+2行的激活命令;
6)等待第i行、第i+1行、第i+2行三行数据同时充放电;第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,完成P1 OR P2计算;
7)将结果S用行拷贝命令拷贝至S的存放地址中。
进一步地,所述的利用内存与操作计算进位C的具体过程如下:
1)分别将A、B用行拷贝命令拷贝至当前子阵列的预留计算地址第i行和第i+2行中的任意一行,且A、B不同行,将辅助常数N比特0用行拷贝命令拷贝至当前子阵列的预留计算地址第i+1行中,且A、B位宽一致;
2)对当前子阵列发送预充电命令;
3)对第i+1行发送激活命令;
4)减少激活至预充电时间T1至0,发送当前子阵列预充电命令;
5)减少预充电至激活时间T2至0,发送地址2激活命令;
6)等待第i行、第i+1行、第i+2行三行数据同时充放电;第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,完成A AND B计算;
7)将结果C用行拷贝命令拷贝至C的存放地址中。
一种内存中并行化计算的方法,该方法具体包括如下步骤:
(5)其中一列预留空间存放P1,另一列预留空间存放P2;
(6)存放P1的一列中增加一行存放辅助常数,存放P2的一列中对应存放辅助常数同一行的位置存放A或B;
S3:将中间结果P2从其所在列读出并缓存到数据缓冲器,
同时将原来存放P2所在的位置写为N比特0;
S4:在其中一列利用内存或操作计算求和S,在另一列利用内存与操作计算进位C;其中S= P1 OR P2,C=A AND B;
S5:内存控制器读取C,并将C左移得C_shift,假设C位宽N 比特,则C_shift位宽(N+1)比特;
如果C_shift最高位为1,则进位标记carry_flag 置1,否则保持不变;
如果C_shift次高位至C_shift最低位均等于0,则结束计算,将carry_flag作为进位标记输出,S作为和结果输出;否则,则将C_shift次高位至C_shift最低位和S作为输入值重新进入S1计算。
一种内存控制器,该内存控制器包括:
移位控制器,用于读取移位结果,并将计算进位结果进行移位,判断是否有进位以及是否需要下一轮计算;
数据缓冲器,用于读取中间结果和写回内存特定地址;
取反控制器,用于数据的按位取反运算;
计算结果缓冲器,保留计算的结果及进位信息,用于后续计算或者输出结果;
计算控制器,用于管理参与计算地址,控制计算流程完成数据复制及计算。
本发明的有益效果如下:
(1)本发明的计算方法不需要对数据进行额外的转换,因此,对同一数据来说,计算效率高;
(2)本发明将数据存储与计算都在DRAM中实现,可大大地缓解内存墙问题;
(3)本发明直接利用当前通用DRAM存储单元进行逻辑计算,不需要依赖新型非易失存储器件,可降低内存计算的复杂度和成本。
附图说明
图1为现有的内存芯片的结构图;
图2为本发明的内存中并行化计算的方法一的流程图;
图3a、3b、3c为本发明的计算方法一对应的实施例一的计算过程示意图;
图4为本发明的计算方法一对应的实施例二的计算过程示意图;
图5为本发明的内存中并行化计算的方法二的流程图;
图6为本发明的计算方法二对应的其中一个实施例的计算过程示意图;
图7为本发明的内存控制器的架构图;
图8为预充电时间与激活时间示意图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
通常来说,内存芯片内部存在一个层次化的结构,如图1所示,每个内存芯片内部通常包含有多个库(bank),每个库中又包含多个子阵列(sub_array),每个子阵列内部包含大量的多行多列的存储单元,参与计算的行地址包括计算数据输入地址、中间结果存放地址和预留计算地址。通过行列地址可以对存储单元进行寻址。当读取数据时,某一行存储单元被选中,通过共享的位线(bit-line)将数据送至放大器(SA)和行缓冲器(row buffer)输出。
图1中的左侧图中A和B分别为需要计算的两个操作数3和1,它们的二进制码分别为0011和0001(和分别为对应的反码1100和1110,可以通过取反模块得到)。A和B存储在同一库的同一个子阵列(sub_array)的其中某一个列中。
对A和B进行并行加法操作,可利用内存与操作和内存或操作的组合来实现。
本发明针对上述操作提出两种计算的方法,下面分别对两种方法进行说明。
一、对于计算方法一
一种内存中并行化计算的方法,其计算流程具体如下,参考图2:
这里以P1为例,设当前子阵列的预留计算地址分别为第i行、第i+1行、第i+2行,所述的S2中P1的计算过程如下:
④减少预充电与激活之间间隔时间T2,对第i行和第i+2行中的任意一行发送激活命令;
其中,将B用行拷贝命令拷贝至第i行和第i+2行中的任意一行的具体过程如下:
①对数据B所在子阵列发送预充电命令;
②对数据B所在行发送激活命令;
③对数据B所在子阵列发送预充电命令;
④减少预充电与激活之间间隔时间T2,对第i行和第i+2行中的任意一行发送激活命令;
⑤等待放大器放大B信号,完成数据拷贝。
其中,将辅助常数N比特0用行拷贝命令拷贝至第i+1行中的具体过程如下:
①对辅助常数N比特0所在子阵列发送预充电命令;
②对辅助常数N比特0所在行发送激活命令;
③对辅助常数N比特0所在子阵列发送预充电命令;
④减少预充电与激活之间间隔时间T2,对第i+1行发送激活命令;
⑤等待放大器放大N比特0信号,完成数据拷贝。
(2)对当前子阵列发送预充电命令;
(3)对预留计算地址第i+1行发送激活命令;
(4)减少激活至预充电时间T1至0,发送当前子阵列预充电命令;
(5)减少预充电至激活时间T2至0,发送预留计算地址第i+2行的激活命令;
(6)等待第i行、第i+1行、第i+2行三行数据同时充放电,第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,实现P1计算;
(7)将P1结果用行拷贝命令拷贝至P1的存放地址中,通过如下步骤实现:
①在第i行、第i+1行、第i+2行中任选一行,发送预充电命令;
②对第i行、第i+1行、第i+2行任选一行发送激活命令;
③对子阵列发送预充电命令;
④减少预充电与激活之间间隔时间T2,对P1的存放地址发送激活命令;
⑤等待放大器放大信号,完成数据拷贝。
所述的S2中P2的计算过程如下:
后续的步骤(2)~(5)与P1的计算过程的(2)~(5)相同;
(6)等待第i行、第i+1行、第i+2行三行数据同时充放电,第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,实现P2计算;
(7)将P2结果用行拷贝命令拷贝至P2的存放地址中。
S3:分别利用内存按位或操作计算求和S、利用内存按位与操作计算进位C,其中S=P1 OR P2,C=A AND B;
其中,利用内存或操作计算求和S的具体过程如下:
1)分别将P1、P2用行拷贝命令拷贝至当前子阵列的预留计算地址第i+1行和第i+2行中的任意一行,且P1、P2不同行,将辅助常数N比特1用行拷贝命令拷贝至当前子阵列的预留计算地址第i行,辅助常数N比特1位宽与A、B相同,每一比特位都为1;
2)对当前子阵列发送预充电命令;
3)对第i+1行发送激活命令;
4)减少激活至预充电时间T1至0,发送当前子阵列预充电命令;
5)减少预充电至激活时间T2至0,发送第i+2行的激活命令;
6)等待第i行、第i+1行、第i+2行三行数据同时充放电;第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,完成P1 OR P2计算;
7)将结果S用行拷贝命令拷贝至S的存放地址中。
其中,利用内存与操作计算进位C的具体过程如下:
1)分别将A、B用行拷贝命令拷贝至当前子阵列的预留计算地址第i行和第i+2行中的任意一行,且A、B不同行,将辅助常数N比特0用行拷贝命令拷贝至当前子阵列的预留计算地址第i+1行中,且A、B位宽一致;
2)对当前子阵列发送预充电命令;
3)对第i+1行发送激活命令;
4)减少激活至预充电时间T1至0,发送当前子阵列预充电命令;
5)减少预充电至激活时间T2至0,发送地址2激活命令;
6)等待第i行、第i+1行、第i+2行三行数据同时充放电;第i行、第i+1行、第i+2行结果相同,放大器完成信号放大,完成A AND B计算;
7)将结果C用行拷贝命令拷贝至C的存放地址中。
S4:内存控制器读取C,并将C左移得C_shift,假设C位宽为N 比特,则C_shift位宽为(N+1) 比特;
如果C_shift最高位为1,则进位标记carry_flag 置1,否则保持不变;
如果C_shift次高位至C_shift最低位均等于0,则结束计算,将carry_flag作为进位标记输出,S作为和结果输出;否则,则将C_shift次高位至C_shift最低位和S作为输入值重新进入S1计算。
下面给出两个实施例对上述的内存中并行化计算的计算方法进行解释说明。
实施例一
以4bit位宽数据为例,计算3+1,如图3a、3b、3c所示。
其中,地址第0行、1行、2行作为预留计算地址,用作计算;
第1步数据预存放:A(4’b0011)和它的反码(4’b1100)分别保存在第4、5行,B(4’b0001)和它的反码(4’b1110)分别保存在第6、7行,
第2步计算P1和P2,P1为4’b0000,P2为4’b0010,结果保存于第8,9行;
第3步计算S,S为4’b0010,保存于第11行;
第4步计算C,C为4’b0001,保存于第10行;
第5步内存控制器读取C,得C_shift为5’b00010;因此需要将S和C_shift(5’b00010)的低四位C_shift[3:0] (4’b0010)作为新的输入计算;
第6步数据预存放:
假设S作为新的A,C作为新的B;
A和它的反码保存在第4,5行;
B和它的反码保存在第6,7行;
第7步计算P1和P2,P1为4’b0000,P2为4’b0000,结果保存于第8,9行;
第8步计算S,S为4’b0000,保存于第11行;
第9步计算C,C为4’b0010,保存于第10行;
第10步内存控制器读取C,得C_shift为5’b00100;C_shift低4bit不为0,因此需要将S和C_shift的低四位 C_shift[3:0](4’b0100)作为输入继续计算。
第11步数据预存放:
假设S作为新的A,C_shift[3:0]作为新的B;
A和它的反码保存在第4,5行;
B和它的反码保存在第6,7行;
第12步计算P1和P2,得P1为4’b0100,P2为4’b0000,结果保存于第8,9行;
第13步计算S,S为4’b0100,保存于第11行;
第14步计算C,C为4’b0000,保存于第10行;
第15步内存控制器读取C,得C_shift为5’b00000,C_shift低4bit为0,因此计算结束,得和S为4’b0100,进位为0。
实施例二
以4bit位宽数据为例,计算15+1,如图4所示,计算顺序在图中从左往右。第一次计算得S为4’b1110,C为4’b0001,C_shift为5’b00010判断需要下一轮计算;第二次计算S为4’b1100,C为4’b0010,C_shift为5’b00100判断需要下一轮计算;第三次计算S为4’b1000,C为4’b0100,C_shift为5’b01000;第四次计算S为4’b0000,C为4’b1000, C_shift为5’b10000,最终得结果,和S为0000,进位carry_flag为1。
在上述的内存中并行化计算的方法一的基础上,通过对存储位置的适当调整,进一步提高系统计算的并行程度,本发明提出另一种内存中并行化计算的方法。
二、计算方法二
一种内存中并行化计算的方法,该方法具体包括如下步骤(具体流程详见图5):
(5)其中一列预留空间存放P1,另一列预留空间存放P2;
(6)存放P1的一列中增加一行存放辅助常数,存放P2的一列中对应存放辅助常数同一行的位置存放A或B;
S3:将中间结果P2从其所在列读出并缓存到数据缓冲器,
同时将原来存放P2所在的位置写为N比特0;
S4:在其中一列利用内存或操作计算求和S,在另一列利用内存与操作计算进位C;其中S= P1 OR P2,C=A AND B;
S5:内存控制器读取C,并将C左移得C_shift,假设C位宽N 比特,则C_shift位宽(N+1)比特;
如果C_shift最高位为1,则进位标记carry_flag 置1,否则保持不变;
如果C_shift次高位至C_shift最低位均等于0,则结束计算,将carry_flag作为进位标记输出,S作为和结果输出;否则,则将C_shift次高位至C_shift最低位和S作为输入值重新进入S1计算。
实施例三
如图6所示,首先在同一子阵列中,增加一列存储空间存放相同数据,称之为右列;原来的存储空间称为左列,右列中A、B存放的位置与原来不同,见图6的(1)部分。
左列预留空间存放P1,右列预留空间存放P2;
左列增加一行N比特1,对应的同一行右列增加A;
通过这样的地址排布,可以在对左列做拷贝/AND/OR操作时,也同时对右列做相同操作。
为同时计算S和C,需要先将右列的P2通过内存读命令读出,再写入左列所在位置。同时将右列P2所在位置写成N比特0,如(4)所示。左列将N比特1拷贝到第0行的同时,右列将A也拷贝到第0行;左列将P1拷贝到第1行的同时,右列将N比特 0拷贝到第1行;左列将P2拷贝到第2行的同时;右列将B拷贝到第2行。这样可以在完成左列或运算的同时,右列完成与运算,如(5)(6)所示。这样就同时得到了S和C。
另外,本发明还提出一种实现上述两种方法的内存控制器,如图7所示,该内存控制器包括:
移位控制器,用于读取移位结果,并将计算进位结果进行移位,判断是否有进位以及是否需要下一轮计算;
数据缓冲器,用于读取中间结果和写回内存特定地址;
取反控制器,用于数据的按位取反运算;
计算结果缓冲器,保留计算的结果及进位标记信息,用于后续计算或者输出结果。
计算控制器,用于管理参与计算的地址,控制计算流程完成数据复制及计算。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
Claims (2)
1.一种内存中并行化计算的方法,其特征在于,该方法具体包括如下步骤:
(5)其中一列预留空间存放P1,另一列预留空间存放P2;
(6)存放P1的一列中增加一行存放辅助常数,存放P2的一列中对应存放辅助常数同一行的位置存放A或B;
S3:将中间结果P2从其所在列读出并缓存到数据缓冲器,
同时将原来存放P2所在的位置写为N比特0;
S4:在其中一列利用内存或操作计算求和S,在另一列利用内存与操作计算进位C;其中S= P1 OR P2,C=A AND B;
S5:内存控制器读取C,并将C左移得C_shift,假设C位宽N 比特,则C_shift位宽(N+1)比特;
如果C_shift最高位为1,则进位标记carry_flag 置1,否则保持不变;
如果C_shift次高位至C_shift最低位均等于0,则结束计算,将carry_flag作为进位标记输出,S作为和结果输出;否则,则将C_shift次高位至C_shift最低位和S作为输入值重新进入S1计算。
2.一种内存控制器,其特征在于,该内存控制器包括:
移位控制器,用于读取移位结果,并将计算进位结果进行移位,判断是否有进位以及是否需要下一轮计算;
数据缓冲器,用于读取中间结果和写回内存特定地址;
取反控制器,用于数据的按位取反运算;
计算结果缓冲器,保留计算的结果及进位信息,用于后续计算或者输出结果;
计算控制器,用于管理参与计算地址,控制计算流程完成数据复制及计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010545142.1A CN111459552B (zh) | 2020-06-16 | 2020-06-16 | 一种内存中并行化计算的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010545142.1A CN111459552B (zh) | 2020-06-16 | 2020-06-16 | 一种内存中并行化计算的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459552A CN111459552A (zh) | 2020-07-28 |
CN111459552B true CN111459552B (zh) | 2020-10-13 |
Family
ID=71681439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010545142.1A Active CN111459552B (zh) | 2020-06-16 | 2020-06-16 | 一种内存中并行化计算的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459552B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022061803A1 (zh) * | 2020-09-27 | 2022-03-31 | 华为技术有限公司 | 存储库和动态随机存取存储器 |
CN114300015A (zh) * | 2021-12-30 | 2022-04-08 | 厦门半导体工业技术研发有限公司 | 存内数据处理电路及阻变存储器 |
CN117334234A (zh) * | 2022-06-24 | 2024-01-02 | 长鑫存储技术有限公司 | 一种存内计算电路、方法以及半导体存储器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5313586B2 (ja) * | 2008-07-31 | 2013-10-09 | エルジー ディスプレイ カンパニー リミテッド | 演算装置、画像表示装置、および演算方法 |
CN109841242A (zh) * | 2019-01-08 | 2019-06-04 | 华中科技大学 | 一种基于相变存储器实现二进制并行加法的方法及系统 |
CN110674462B (zh) * | 2019-12-04 | 2020-06-02 | 深圳芯英科技有限公司 | 一种矩阵运算装置、方法、处理器和计算机可读存储介质 |
CN111158635B (zh) * | 2019-12-27 | 2021-11-19 | 浙江大学 | 一种基于FeFET的非易失性低功耗乘法器及其运行方法 |
CN111341363B (zh) * | 2020-02-19 | 2021-11-23 | 中山大学 | 基于stt-mtj的存算一体系统、芯片及控制方法 |
CN111128279A (zh) * | 2020-02-25 | 2020-05-08 | 杭州知存智能科技有限公司 | 基于NAND Flash的存内计算芯片及其控制方法 |
-
2020
- 2020-06-16 CN CN202010545142.1A patent/CN111459552B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111459552A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459552B (zh) | 一种内存中并行化计算的方法及装置 | |
US11614878B2 (en) | Apparatuses and methods for data movement | |
US11693657B2 (en) | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems | |
CN109147842B (zh) | 同时进行数据路径中计算操作的设备及方法 | |
US11194579B2 (en) | Memory device supporting skip calculation mode and method of operating the same | |
US11934824B2 (en) | Methods for performing processing-in-memory operations, and related memory devices and systems | |
US20190196831A1 (en) | Memory apparatus and method for controlling the same | |
JP2023527324A (ja) | ニアメモリアドレス生成を伴うメモリアクセスコマンド | |
JP2020187747A (ja) | 高帯域幅メモリシステム及びメモリアドレス方法 | |
US11500629B2 (en) | Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit | |
US20230305804A1 (en) | In-memory bit-serial addition system | |
US20220351765A1 (en) | Processing-in-memory (pim) device for performing a burst multiplication and accumulation (mac) operation | |
US20040236921A1 (en) | Method to improve bandwidth on a cache data bus | |
US11494121B2 (en) | Memory device for performing in-memory processing | |
WO2023245757A1 (zh) | 一种存内计算电路、方法以及半导体存储器 | |
US20230153067A1 (en) | In-memory computing method and circuit, semiconductor memory, and memory structure | |
TWI721660B (zh) | 控制資料讀寫裝置與方法 | |
US20220283806A1 (en) | Processing-in-memory device having a plurality of global buffers and processing-in-memory system including the same | |
US11422804B2 (en) | Processing-in-memory (PIM) device | |
US20230420035A1 (en) | In-memory computing circuit and method, and semiconductor memory | |
US20230033179A1 (en) | Accumulator and processing-in-memory (pim) device including the accumulator | |
US20210373852A1 (en) | Processing-in-memory (pim) devices | |
CN118262761A (zh) | 一种基于sram的内部存算逻辑电路、阵列和sram | |
신현승 | McDRAM: Low Latency and Energy-Efficient Matrix Computation in DRAM | |
CN115965067A (zh) | 一种针对ReRAM的神经网络加速器 |
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 |