CN113838498B - 一种用于存内计算的数据复用运算电路及方法 - Google Patents

一种用于存内计算的数据复用运算电路及方法 Download PDF

Info

Publication number
CN113838498B
CN113838498B CN202111138122.3A CN202111138122A CN113838498B CN 113838498 B CN113838498 B CN 113838498B CN 202111138122 A CN202111138122 A CN 202111138122A CN 113838498 B CN113838498 B CN 113838498B
Authority
CN
China
Prior art keywords
multiplexer
matrix
memory
read
control 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.)
Active
Application number
CN202111138122.3A
Other languages
English (en)
Other versions
CN113838498A (zh
Inventor
李祎
杨岭
缪向水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202111138122.3A priority Critical patent/CN113838498B/zh
Publication of CN113838498A publication Critical patent/CN113838498A/zh
Application granted granted Critical
Publication of CN113838498B publication Critical patent/CN113838498B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种用于存内计算的数据复用运算电路及方法,针对含大量重复数据的矩阵,本发明只存储矩阵的最小重复单元,并设计了与之相应的数据复用运算电路及方法,其中,数据复用运算电路包括存储阵列、主处理器、片上缓存、地址译码器、多路复用器和读写控制电路;数据复用运算方法用于矩阵和向量的乘法操作,具体包括:查找矩阵的最小重复单元并存入存储阵列,将向量转换为模拟电压信号施加在存储阵列上,完成单个运算子周期内的运算操作,将所有运算子周期的运算结果重组为最终运算结果。本发明可将多个最小重复单元存入存储阵列进行矩阵向量乘法运算,因此可根据不同的计算场景设计存入存储阵列的最小重复单元的数量。

Description

一种用于存内计算的数据复用运算电路及方法
技术领域
本发明属于微电子器件及电路领域,更具体地,涉及一种用于存内计算的数据复用运算电路及方法。
背景技术
在科学与工程计算中经常会出现一些特殊的矩阵,是由某个或某几个最小的子矩阵或向量或元素重复排列组合而成;整个矩阵包含大量的重复数据,是一种较为特殊的稀疏矩阵,但是又较为常见,例如偏微分方程的矩阵算子、沃尔什-哈达马矩阵等;当对这类矩阵进行运算操作时,需要将所有的重复数据进行存储,这就浪费了大量的存储空间,降低了存储效率。
存内计算是在内存中完成部分计算,在处理器中完成部分计算。相较于内存计算将计算所需的所有数据放入到内存中,所有计算由处理器完成,存内计算降低了数据在内存与高速缓存,高速缓存与CPU之间移动的能耗,提高了内存计算系统的性能。
存内计算通常需要将同一数据存储在不同的非易失内存中,由于非易失内存的非一致性,导致同一个数据在不同的非易失内存中的存储状态出现一定的偏差,在计算过程中,这些偏差有时会带来致命的影响,直接导致计算结果的错误,同时增加不必要的能耗和计算延时。
数据复用是指同一数据在计算中可能会重复用到,为了达到更少的数据搬运,一般会复用这个数据。针对包含大量的重复信息的稀疏矩阵,可使用数据复用技术进行运算操作以提高存储效率。但是当前还没有文献针对存内计算架构为这类特殊的矩阵设计特定的数据复用运算电路和运算方法。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种用于存内计算的数据复用运算电路及方法,旨在解决存内计算架构中含大量重复数据的矩阵存储效率低、计算可靠性差的问题。
为实现上述目的,本发明提供了一种存内计算的数据复用运算电路,包括存储阵列、主处理器、片上缓存、地址译码器、多路复用器和读写控制电路;所述多路复用器包括第一多路复用器和第二多路复用器;所述读写控制电路包括第一读写控制电路和第二读写控制电路;其特征在于,
主处理器分别与第一读写控制电路和片上缓存相连接;
片上缓存分别与主处理器、第一读写控制电路、第二读写控制电路和地址译码器相连接;
第一多路复用器的选择信号端与地址译码器相连接,输入信号端与第一读写控制电路相连接,输出信号端与存储阵列的位线相连接;
第二多路复用器的选择信号端与地址译码器相连接,输入信号端与存储阵列的字线相连接,输出信号端与第二读写控制电路相连接。
优选地,所述存储阵列的阵列结构为十字交叉杆阵列、单晶体管-单器件阵列、单晶体管-多器件阵列、多晶体管-多器件阵列或三维堆叠结构。
优选地,所述存储阵列中的存储器为忆阻器、阻变存储器、相变存储器、自选转移力矩-磁随机存储器、NOR Flash器件或NAND Flash器件。
优选地,所述读写控制电路包括读写电路、数模转换器、模数转换器;读写电路与存储阵列的列线和行线相连接;数模转换器的输入端与主处理器相连接,输出端与第一多路复用器的输入端相连接;模数转换器的输入端连接存储阵列,输出端接入第二多路复用器的输入端。
本发明提供了一种基于上述用于存内计算的数据复用运算电路的数据复用运算方法,用于矩阵和向量的乘法操作,其特征在于,所述乘法操作的运算周期包括以下步骤:
S1:主处理器查找矩阵的最小重复单元,所述矩阵存储在与主处理器相连接的外部存储器中;或由主处理器接收输入的所述矩阵的最小重复单元;
S2:主处理器将所述最小重复单元按所设定的存储方式存入存储阵列形成最小存储矩阵;将所述最小存储矩阵的存储格式和坐标信息发送给片上缓存;
S3:片上缓存将所述坐标信息发送给地址译码器;地址译码器将所述坐标信息译码为开关信号序列;
S4:地址译码器将所述开关信号序列并行发送给第一多路复用器和第二多路复用器;
S5:第一多路复用器通过所述开关信号序列打开所述最小存储矩阵的列;第二多路复用器通过所述开关信号序列打开所述最小存储矩阵的行;
S6:在上述任一步骤之前或任一步骤之中,主处理器接收所设定的运算子周期的数量,所述运算周期由2个以上运算子周期组成;在上述任一步骤之前或任一步骤之中,主处理器将向量发送给片上缓存,所述向量存储在所述外部存储器中;主处理器协调片上缓存、读写控制电路、多路复用器和存储阵列顺序执行每个运算子周期的运算操作,得到运算结果;
S7:片上缓存根据所述存储格式和所述坐标信息按所设定的重组方式重组所有所述运算子周期的运算结果为最终运算结果,并送回主处理器。
优选地,步骤S6中单个运算子周期的运算操作包括以下步骤:
S6-1:片上缓存按所设定的选取方式从所述向量中选取一个以上的数值组成运算向量,并发送给第一读写控制电路;
S6-2:第一读写控制电路将所述运算向量转换为模拟电压信号,并发送给第一多路复用器;
S6-3:第一多路复用器按所设定的施加方式将所述模拟电压信号施加在所述最小存储矩阵上;
S6-4:存储阵列对所述运算向量和所述最小存储矩阵进行乘法运算操作,并将所述乘法运算操作的结果以电流信号的形式发送给第二多路复用器;
S6-5:第二多路复用器将所述电流信号发送给第二读写控制电路;
S6-6:第二读写控制电路将所述电流信号转换为数字信号,发送给片上缓存,作为该运算子周期的运算结果。
优选地,主处理器可将多个所述最小重复单元存入存储阵列形成最小存储矩阵。
优选地,所述运算子周期的数量设定为所述矩阵中最小重复单元的数量。
优选地,所述运算子周期的数量设定为所述矩阵中最小重复单元的数量加2。
优选地,所述重组方式为:片上缓存舍弃第一个和最后一个运算子周期的运算结果,将其他运算子周期的运算结果按运算顺序重组为最终运算结果。
通过本发明所构思的以上技术方案,与现有技术相比,由于本发明只存储矩阵的最小重复单元,并设计了与之相应的数据复用运算电路及方法,从而实现了在提高含大量重复数据的矩阵的存储效率的同时,通过特定的运算电路和运算方法完成矩阵向量乘法运算的目的。此外,由于本发明只存储最小重复单元,避免了同一个矩阵中重复数据的重复存储,从而避免了存内计算架构中不同的非易失内存之间的差异所带来的计算误差。更进一步地,本发明可将多个最小重复单元存入存储阵列进行矩阵向量乘法运算,因此可根据不同的计算场景设计存入存储阵列的最小重复单元的数量,具有计算方式灵活的优点。
附图说明
图1是本发明实施例提供的用于存内计算的数据复用运算电路的原理图;
图2是本发明实施例提供的用于存内计算的数据复用运算方法的流程图;
图3是本发明实施例提供的用于存内计算的数据复用运算方法中单个运算子周期的流程图;
图4是本发明实施例提供的用于存内计算的数据复用运算方法中实施例1的最小存储矩阵的示意图;
图5是本发明实施例提供的用于存内计算的数据复用运算方法中实施例2的最小重复单元的示意图;
图6是本发明实施例提供的用于存内计算的数据复用运算方法中实施例2的最小存储矩阵的示意图;
图中,沃尔什-哈达马矩阵1;第一最小重复单元1-1;第一最小重复单元1-2;第三最小重复单元1-3;最小重复单元的倒数1-4。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供的用于存内计算的数据复用运算电路包括存储阵列、主处理器、片上缓存、地址译码器、多路复用器和读写控制电路;多路复用器包括第一多路复用器和第二多路复用器;读写控制电路包括第一读写控制电路和第二读写控制电路。
主处理器分别与第一读写控制电路和片上缓存相连接;
片上缓存分别与主处理器、第一读写控制电路、第二读写控制电路和地址译码器相连接;
第一多路复用器的选择信号端与地址译码器相连接,输入信号端与第一读写控制电路相连接,输出信号端与存储阵列的位线相连接;
第二多路复用器的选择信号端与地址译码器相连接,输入信号端与存储阵列的字线相连接,输出信号端与第二读写控制电路相连接。
存储器阵列中的存储器不限于忆阻器、阻变存储器、相变存储器、自选转移力矩-磁随机存储器、NOR Flash器件或NAND Flash器件。
存储器阵列的阵列结构不限于十字交叉杆阵列、单晶体管-单器件阵列、单晶体管-多器件阵列、多晶体管-多器件阵列或三维堆叠结构。
读写控制电路包括读写电路、数模转换器、模数转换器。读写电路与存储阵列的列线和行线相连接;数模转换器的输入端与主处理器相连接,输出端与第一多路复用器的输入端相连接;模数转换器的输入端连接存储阵列,输出端接入第二多路复用器的输入端。
本发明实施例提供的数据复用运算方法是基于上述用于存内计算的数据复用运算电路而设计,该方法用于矩阵和向量的乘法操作。
数据复用运算方法的实施例1的矩阵为一个含四个最小重复单元[1,-2,1]的三对角矩阵A,与向量X=[x1,x2,x3,x4]相乘,得到向量Y=[y1,y2,y3,y4];矩阵A与向量X存储在与主处理器相连接的外部存储器中。
Figure BDA0003282831850000061
如图2-3所示,实施例1的运算周期包括如下步骤:
A1:主处理器查找矩阵的最小重复单元,或手工将最小重复单元输入到主处理器;根据矩阵特性,可以拆分为4个1×3的子矩阵[1,-2,1],子矩阵[1,-2,1]为最小重复单元;
A2:主处理器将所述最小重复单元存入存储阵列形成最小存储矩阵;如图4所示,其中第一电导态LGS表示1,第二电导态的电导值为第一电导态的2倍,为2LGS,表示2,第三电导态的电导值为第一电导态的3倍,为3LGS,表示3;最小存储矩阵由两个1×3的阵列组成,这种格式为差分对格式,左边的1×3阵列为正值存储阵列,用于存储正值矩阵[2,1,2],右边的1×3阵列为负值存储阵列,用于存储负值矩阵[1,3,1],正值矩阵减负值矩阵即为最小重复单元;该存储方式可由人工手动设定;
A3:主处理器将最小存储矩阵的存储格式和坐标信息发送给片上缓存;最小重复单元的列数为3,片上缓存分配一个含三个单元的移位寄存器,用于存储每一个运算子周期的运算向量;
A4:片上缓存将坐标信息发送给地址译码器;地址译码器将坐标信息译码为第一多路复用器和第二多路复用器的开关信号序列;
A5:地址译码器将开关信号序列并行发送给第一多路复用器和第二多路复用器;
A6:第一多路复用器通过开关信号序列打开最小存储矩阵的列;第二多路复用器通过开关信号序列打开最小存储矩阵的行;
A7:在上述任一步骤之前或任一步骤之中,主处理器将运算周期划分为2个以上运算子周期:矩阵包含4个最小重复单元,运算子周期的数量是最小重复单元的个数加2,即需要执行6个运算子周期;该划分方式可由人工手动设定;
在上述任一步骤之前或任一步骤之中,主处理器将向量XL发送给片上缓存的队列存储器;
主处理器顺序执行每个运算子周期的运算操作,得到运算结果。
第一个运算子周期T1的运算操作包括如下步骤:
P1-1:片上缓存从向量XL=[x1,x2,x3,x4]中选取一个以上的数值组成运算向量:队列存储器移出向量第一位x1,将x1从右边移入移位寄存器,此时移位寄存器中的运算向量为[x1],队列存储器中还有x2,x3,x4,片上缓存将移位寄存器中的运算向量发送给第一读写控制电路;该选取方式可由人工手动设定;
P1-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V1及其反向电压-V1,并发送给第一多路复用器;
P1-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将V1和-V1分别施加在最小存储矩阵中的正值存储矩阵的右起第一位和负值存储矩阵的右起第一位;该施加方式可由人工手动设定;
P1-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
P1-5:第二多路复用器将电流信号发送给第二读写控制电路;
P1-6:第二读写控制电路将电流信号转换为数字信号,作为第一个运算子周期T1的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第二个运算子周期T2的运算操作,包括如下步骤:
P2-1:片上缓存从向量XL中选取一个以上的数值组成运算向量:移位寄存器向左移位;队列存储器继续移位输出x2,将x2从右边移入移位寄存器,此时移位寄存器中的运算向量为[x1,x2],队列存储器中还有x3,x4,片上缓存将移位寄存器中的运算向量发送给第一读写控制电路;该选取方式可由人工手动设定;
P2-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V1,V2及其反向电压-V1,-V2,并发送给第一多路复用器;
P2-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将V1,V2分别施加在正值存储矩阵的右起第二位和第一位,将-V1,-V2分别施加在负值存储矩阵的右起第二位和第一位;该施加方式可由人工手动设定;
P2-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
P2-5:第二多路复用器将电流信号发送给第二读写控制电路;
P2-6:第二读写控制电路将电流信号转换为数字信号,作为第二个运算子周期T2的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第三个运算子周期T3的运算操作,包括如下步骤:
P3-1:片上缓存从向量XL中选取一个以上的数值组成运算向量:移位寄存器向左移位;队列存储器继续移位输出x3,将x3从右边移入移位寄存器,此时移位寄存器中的运算向量为[x1,x2,x3],队列存储器中还有x4,片上缓存将移位寄存器中的运算向量发送给第一读写控制电路;该选取方式可由人工手动设定;
P3-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V1,V2,V3及其反向电压-V1,-V2,-V3,并发送给第一多路复用器;
P3-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将V1,V2,V3施加在正值存储矩阵的右起第三位,第二位和第一位,将-V1,-V2,-V3分别施加在负值存储矩阵的右起第三位,第二位和第一位;该施加方式可由人工手动设定;
P3-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
P3-5:第二多路复用器将电流信号发送给第二读写控制电路;
P3-6:第二读写控制电路将电流信号转换为数字信号,作为第三个运算子周期T3的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第四个运算子周期T4的运算操作,包括如下步骤:
P4-1:片上缓存从向量XL中选取一个以上的数值组成运算向量:移位寄存器向左移位;队列存储器继续移位输出x4,将x4从右边移入移位寄存器,此时移位寄存器已满,将第一位x1移出移位寄存器,此时移位寄存器中的运算向量为[x2,x3,x4],队列存储器被清空;片上缓存将移位寄存器中的运算向量发送给第一读写控制电路;该选取方式可由人工手动设定;
P4-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V2,V3,V4及其反向电压-V2,-V3,-V4,并发送给第一多路复用器;
P4-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将V2,V3,V4施加在正值存储矩阵的右起第三位,第二位和第一位,将-V2,-V3,-V4分别施加在负值存储矩阵的右起第三位,第二位和第一位;该施加方式可由人工手动设定;
P4-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
P4-5:第二多路复用器将电流信号发送给第二读写控制电路;
P4-6:第二读写控制电路将电流信号转换为数字信号,作为第四个运算子周期T4的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第五个运算子周期T5的运算操作,包括如下步骤:
P5-1:片上缓存从向量XL中选取一个以上的数值组成运算向量:移位寄存器向左移位;将第一位x2移出移位寄存器,此时移位寄存器中的运算向量为[x3,x4];片上缓存将移位寄存器中的运算向量发送给第一读写控制电路;该选取方式可由人工手动设定;
P5-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V3,V4及其反向电压-V3,-V4,并发送给第一多路复用器;
P5-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将V3,V4施加在正值存储矩阵的右起第三位和第二位,将-V3,-V4分别施加在负值存储矩阵的右起第三位和第二位;该施加方式可由人工手动设定;
P5-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
P5-5:第二多路复用器将电流信号发送给第二读写控制电路;
P5-6:第二读写控制电路将电流信号转换为数字信号,作为第五个运算子周期T5的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第六个运算子周期T6的运算操作,包括如下步骤:
P6-1:片上缓存从向量XL中选取一个以上的数值组成运算向量:移位寄存器向左移位;将第一位x3移出移位寄存器,此时移位寄存器中的运算向量为[x4];片上缓存将移位寄存器中的运算向量发送给第一读写控制电路;该选取方式可由人工手动设定;
P6-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V4及其反向电压-V4,并发送给第一多路复用器;
P6-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将V4施加在正值存储矩阵的右起第三位,将-V4施加在负值存储矩阵的右起第三位;该施加方式可由人工手动设定;
P6-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
P6-5:第二多路复用器将电流信号发送给第二读写控制电路;
P6-6:第二读写控制电路将电流信号转换为数字信号,作为第六个运算子周期T6的运算结果载入片上缓存;
A8:主处理器判断运算周期结束,片上缓存根据存储格式和坐标信息将六个运算子周期的运算结果重组为最终运算结果:取六个运算子周期中的中间四个运算子周期的运算结果分别赋值给y1,y2,y3,y4;将[y1,y2,y3,y4]作为最终运算结果返回主处理器;该重组方式可由人工手动设定。
在科学和工程计算中,需要使用数据复用的矩阵往往是对角占优重复矩阵,运算规律与实施例1一致,容易根据此运算规律设计固化的程序,上述“可由人工手动设定”的操作可固化在程序中,然后直接使用卷积运算程序在存储阵列上执行;而对于一些特殊的矩阵如实施例2中的沃尔什-哈达马矩阵1,难以用实施例1中的规律和程序执行计算,需要手工设计上述“可由人工手动设定”的操作并固化在程序中。
此外,主处理器可根据不同的应用场景,将多个最小重复单元存入存储阵列形成最小存储矩阵,具有计算方式灵活的优点。
数据复用运算方法的实施例2的矩阵为一个8×8的沃尔什-哈达马矩阵1,与向量XL=[x1,x2,x3,x4,x5,x6,x7,x8]相乘,得到向量Y=[y1,y2,y3,y4,y5,y6,y7,y8];沃尔什-哈达马矩阵1与向量XL存储在与主处理器相连接的外部存储器中。
Figure BDA0003282831850000121
如图2-3所示,实施例2的运算周期包括如下步骤:
B1:主处理器查找矩阵的最小重复单元,或手工将最小重复单元输入到主处理器;如图5所示,根据矩阵特性,可将矩阵1拆分为4个相同的4×4的子矩阵,其中矩阵1-1,1-2,1-3分别为第一最小重复单元,第一最小重复单元,第三最小重复单元;矩阵1-4为第一最小重复单元1-1的倒数;主处理器以第一最小重复单元1-1作为最小重复单元;
B2:主处理器将所述最小重复单元存储进入存储阵列形成最小存储矩阵;如图6所示,其中高阻态(HRS)表示0,低阻态(LRS)表示1;最小存储矩阵由两个4×4的阵列组成,这种格式为差分对格式,左边的4×4阵列为正值存储阵列,右边的4×4阵列为负值存储阵列,正值矩阵减去负值矩阵即为最小重复单元;该存储方式可由人工手动设定;
B3:主处理器将最小存储矩阵的存储格式和坐标信息发送给片上缓存;
B4:片上缓存将坐标信息发送给地址译码器;地址译码器将坐标信息译码为第一多路复用器和第二多路复用器的开关信号序列;
B5:地址译码器将开关信号序列并行发送给第一多路复用器和第二多路复用器;
B6:第一多路复用器通过开关信号序列打开最小存储矩阵的列;第二多路复用器通过开关信号序列打开最小存储矩阵的行;
B7:在上述任一步骤之前或任一步骤之中,主处理器将运算周期划分为2个以上运算子周期:矩阵包含4个最小重复单元,运算子周期的数量是最小重复单元的个数加2,即需要执行6个运算子周期;该划分方式可由人工手动设定;
在上述任一步骤之前或任一步骤之中,主处理器将向量XL发送给片上缓存;
主处理器顺序执行每个运算子周期的运算操作,得到运算结果。
第一个运算子周期T1的运算操作包括如下步骤:
K1-1:片上缓存从向量XL=[x1,x2,x3,x4,x5,x6,x7,x8]中选取一个以上的数值组成运算向量:选取数值x1,x2,x3,x4组成运算向量[x1,x2,x3,x4],并发送给第一读写控制电路;该选取方式可由人工手动设定;
K1-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V1,V2,V3,V4,及其反向电压-V1,-V2,-V3,-V4,并发送给第一多路复用器;
K1-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将正向电压V1,V2,V3,V4和反向电压-V1,-V2,-V3,-V4分别施加在最小存储矩阵中的正值存储矩阵和负值存储矩阵上;该施加方式可由人工手动设定;
K1-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
K1-5:第二多路复用器将电流信号发送给第二读写控制电路;
K1-6:第二读写控制电路将电流信号转换为数字信号,作为第一个运算子周期T1的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第二个运算子周期T2的运算操作,包括如下步骤:
K2-1:片上缓存从向量XL=[x1,x2,x3,x4,x5,x6,x7,x8]中选取一个以上的数值组成运算向量:选取数值x5,x6,x7,x8组成运算向量[x5,x6,x7,x8],并发送给第一读写控制电路;该选取方式可由人工手动设定;
K2-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V5,V6,V7,V8,及其反向电压-V5,-V6,-V7,-V8,并发送给第一多路复用器;
K2-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将正向电压V5,V6,V7,V8和反向电压-V5,-V6,-V7,-V8分别施加在最小存储矩阵中的正值存储矩阵和负值存储矩阵上;该施加方式可由人工手动设定;
K2-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
K2-5:第二多路复用器将电流信号发送给第二读写控制电路;
K2-6:第二读写控制电路将电流信号转换为数字信号,作为第二个运算子周期T2的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第三个运算子周期T3的运算操作,包括如下步骤:
K3-1:片上缓存从向量XL=[x1,x2,x3,x4,x5,x6,x7,x8]中选取一个以上的数值组成运算向量:选取数值x1,x2,x3,x4组成运算向量[x1,x2,x3,x4],并发送给第一读写控制电路;该选取方式可由人工手动设定;
K3-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V1,V2,V3,V4,及其反向电压-V1,-V2,-V3,-V4,并发送给第一多路复用器;
K3-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将正向电压V1,V2,V3,V4和反向电压-V1,-V2,-V3,-V4分别施加在最小存储矩阵中的正值存储矩阵和负值存储矩阵上;该施加方式可由人工手动设定;
K3-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
K3-5:第二多路复用器将电流信号发送给第二读写控制电路;
K3-6:第二读写控制电路将电流信号转换为数字信号,作为第三个运算子周期T3的运算结果载入片上缓存;
主处理器判断运算周期未结束,继续执行第四个运算子周期T4的运算操作,包括如下步骤:
K4-1:片上缓存从向量XL=[x1,x2,x3,x4,x5,x6,x7,x8]中选取一个以上的数值组成运算向量:选取数值x5,x6,x7,x8组成运算向量[x5,x6,x7,x8],并发送给第一读写控制电路;该选取方式可由人工手动设定;
K4-2:第一读写控制电路将运算向量转换为模拟电压信号,包括正向电压V5,V6,V7,V8,及其反向电压-V5,-V6,-V7,-V8,并发送给第一多路复用器;
K4-3:第一多路复用器将模拟电压信号施加在最小存储矩阵上:将正向电压V5,V6,V7,V8和反向电压-V5,-V6,-V7,-V8分别施加在最小存储矩阵中的正值存储矩阵和负值存储矩阵上;该施加方式可由人工手动设定;
K4-4:存储阵列对运算向量和最小存储矩阵进行乘法运算操作,并将乘法运算结果以电流信号的形式发送给第二多路复用器;
K4-5:第二多路复用器将电流信号发送给第二读写控制电路;
K4-6:第二读写控制电路将电流信号转换为数字信号,作为第四个运算子周期T4的运算结果载入片上缓存;
B8:主处理器判断运算周期结束,片上缓存根据存储格式和坐标信息将四个周期的运算结果重组为最终运算结果:将T1和T2的运算结果相加得到[y1,y2,y3,y4],将T3和T4的运算结果相加得到[y5,y6,y7,y8],合并即得到最终运算结果Y=[y1,y2,y3,y4,y5,y6,y7,y8];并将Y返回主处理器;该重组方式可由人工手动设定。
与现有技术相比,由于本发明只存储矩阵的最小重复单元,并设计了与之相应的数据复用运算电路及方法,从而实现了在提高含大量重复数据的矩阵的存储效率的同时,通过特定的运算电路和运算方法完成矩阵向量乘法运算的目的。此外,由于本发明只存储最小重复单元,避免了同一个矩阵中重复数据的重复存储,从而避免了存内计算架构中不同的非易失内存之间的差异所带来的计算误差。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种用于存内计算的数据复用运算电路,包括存储阵列、主处理器、片上缓存、地址译码器、多路复用器和读写控制电路;所述多路复用器包括第一多路复用器和第二多路复用器;所述读写控制电路包括第一读写控制电路和第二读写控制电路;其特征在于,
主处理器分别与第一读写控制电路和片上缓存相连接;
片上缓存分别与主处理器、第一读写控制电路、第二读写控制电路和地址译码器相连接;
第一多路复用器的选择信号端与地址译码器相连接,输入信号端与第一读写控制电路相连接,输出信号端与存储阵列的位线相连接;
第二多路复用器的选择信号端与地址译码器相连接,输入信号端与存储阵列的字线相连接,输出信号端与第二读写控制电路相连接;主处理器查找矩阵的最小重复单元并存入存储阵列中形成最小存储矩阵,再将最小存储矩阵的存储格式和坐标信息发送到片上缓存,地址译码器将坐标信息译码为开关信号序列并发送给第一多路复用器和第二多路复用器,第一多路复用器通过开关信号序列打开最小存储矩阵的列;第二多路复用器通过开关信号序列打开最小存储矩阵的行。
2.根据权利要求1所述的用于存内计算的数据复用运算电路,其特征在于,所述存储阵列的阵列结构为十字交叉杆阵列、单晶体管-单器件阵列、单晶体管-多器件阵列、多晶体管-多器件阵列或三维堆叠结构。
3.根据权利要求2所述的用于存内计算的数据复用运算电路,其特征在于,所述存储阵列中的存储器为忆阻器、阻变存储器、相变存储器、自选转移力矩-磁随机存储器、NORFlash器件或NAND Flash器件。
4.根据权利要求1所述的用于存内计算的数据复用运算电路,其特征在于,所述读写控制电路包括读写电路、数模转换器、模数转换器;读写电路与存储阵列的列线和行线相连接;数模转换器的输入端与主处理器相连接,输出端与第一多路复用器的输入端相连接;模数转换器的输入端连接存储阵列,输出端接入第二多路复用器的输入端。
5.一种基于权利要求1所述的用于存内计算的数据复用运算电路的数据复用运算方法,用于矩阵和向量的乘法操作,其特征在于,所述乘法操作的运算周期包括以下步骤:
S1:主处理器查找矩阵的最小重复单元,所述矩阵存储在与主处理器相连接的外部存储器中;或由主处理器接收输入的所述矩阵的最小重复单元;
S2:主处理器将所述最小重复单元按所设定的存储方式存入存储阵列形成最小存储矩阵;将所述最小存储矩阵的存储格式和坐标信息发送给片上缓存;
S3:片上缓存将所述坐标信息发送给地址译码器;地址译码器将所述坐标信息译码为开关信号序列;
S4:地址译码器将所述开关信号序列并行发送给第一多路复用器和第二多路复用器;
S5:第一多路复用器通过所述开关信号序列打开所述最小存储矩阵的列;第二多路复用器通过所述开关信号序列打开所述最小存储矩阵的行;
S6:在上述任一步骤之前或任一步骤之中,主处理器接收所设定的运算子周期的数量,所述运算周期由2个以上运算子周期组成;在上述任一步骤之前或任一步骤之中,主处理器将向量发送给片上缓存,所述向量存储在所述外部存储器中;主处理器协调片上缓存、读写控制电路、多路复用器和存储阵列顺序执行每个运算子周期的运算操作,得到运算结果;
S7:片上缓存根据所述存储格式和所述坐标信息按所设定的重组方式重组所有所述运算子周期的运算结果为最终运算结果,并送回主处理器。
6.根据权利要求5所述的用于存内计算的数据复用运算电路的数据复用运算方法,其特征在于,步骤S6中单个运算子周期的运算操作包括以下步骤:
S6-1:片上缓存按所设定的选取方式从所述向量中选取一个以上的数值组成运算向量,并发送给第一读写控制电路;
S6-2:第一读写控制电路将所述运算向量转换为模拟电压信号,并发送给第一多路复用器;
S6-3:第一多路复用器按所设定的施加方式将所述模拟电压信号施加在所述最小存储矩阵上;
S6-4:存储阵列对所述运算向量和所述最小存储矩阵进行乘法运算操作,并将所述乘法运算操作的结果以电流信号的形式发送给第二多路复用器;
S6-5:第二多路复用器将所述电流信号发送给第二读写控制电路;
S6-6:第二读写控制电路将所述电流信号转换为数字信号,发送给片上缓存,作为该运算子周期的运算结果。
7.根据权利要求5所述的用于存内计算的数据复用运算电路的数据复用运算方法,其特征在于,主处理器可将多个所述最小重复单元存入存储阵列形成最小存储矩阵。
8.根据权利要求5所述的用于存内计算的数据复用运算电路的数据复用运算方法,其特征在于,所述运算子周期的数量设定为所述矩阵中最小重复单元的数量。
9.根据权利要求5所述的用于存内计算的数据复用运算电路的数据复用运算方法,其特征在于,所述运算子周期的数量设定为所述矩阵中最小重复单元的数量加2。
10.根据权利要求9所述的用于存内计算的数据复用运算电路的数据复用运算方法,其特征在于,所述重组方式为:片上缓存舍弃第一个和最后一个运算子周期的运算结果,将其他运算子周期的运算结果按运算顺序重组为最终运算结果。
CN202111138122.3A 2021-09-27 2021-09-27 一种用于存内计算的数据复用运算电路及方法 Active CN113838498B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111138122.3A CN113838498B (zh) 2021-09-27 2021-09-27 一种用于存内计算的数据复用运算电路及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111138122.3A CN113838498B (zh) 2021-09-27 2021-09-27 一种用于存内计算的数据复用运算电路及方法

Publications (2)

Publication Number Publication Date
CN113838498A CN113838498A (zh) 2021-12-24
CN113838498B true CN113838498B (zh) 2023-02-28

Family

ID=78971003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111138122.3A Active CN113838498B (zh) 2021-09-27 2021-09-27 一种用于存内计算的数据复用运算电路及方法

Country Status (1)

Country Link
CN (1) CN113838498B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269691A (ja) * 2007-04-18 2008-11-06 Renesas Technology Corp 半導体記憶装置
CN108268932A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 神经网络单元
CN112567350A (zh) * 2018-06-18 2021-03-26 普林斯顿大学 可配置的存储器内计算引擎、平台、位单元及其布局
CN113407483A (zh) * 2021-06-24 2021-09-17 重庆大学 一种面向数据密集型应用的动态可重构处理器

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474788B2 (en) * 2019-06-10 2022-10-18 Stmicroelectronics S.R.L. Elements for in-memory compute
CN110739975B (zh) * 2019-09-20 2021-06-11 华中科技大学 一种半随机译码器的变量节点复用方法
US11539906B2 (en) * 2019-12-03 2022-12-27 Tetramem Inc. CMOS image sensors with integrated RRAM-based crossbar array circuits

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269691A (ja) * 2007-04-18 2008-11-06 Renesas Technology Corp 半導体記憶装置
CN108268932A (zh) * 2016-12-31 2018-07-10 上海兆芯集成电路有限公司 神经网络单元
CN112567350A (zh) * 2018-06-18 2021-03-26 普林斯顿大学 可配置的存储器内计算引擎、平台、位单元及其布局
CN113407483A (zh) * 2021-06-24 2021-09-17 重庆大学 一种面向数据密集型应用的动态可重构处理器

Also Published As

Publication number Publication date
CN113838498A (zh) 2021-12-24

Similar Documents

Publication Publication Date Title
CA2536259C (en) Methods and apparatus for encoding ldpc codes
WO2010083723A1 (zh) 可重构数据处理平台
US20150227419A1 (en) Error correction decoder based on log-likelihood ratio data
US20090254736A1 (en) Data processing system for performing data rearrangement operations
EP2235622A1 (en) Apparatus and method for performing permutation operations on data
US20110264723A1 (en) System and method for successive matrix transposes
US9250996B2 (en) Multicore type error correction processing system and error correction processing apparatus
US20040103264A1 (en) Array-type processor
US8020063B2 (en) High rate, long block length, low density parity check encoder
CN113838498B (zh) 一种用于存内计算的数据复用运算电路及方法
JP6511284B2 (ja) 最小値選択回路、復号器及び最小値選択方法
EP4012929A1 (en) Multi-standard low-density parity check decoder
CN102075197A (zh) 一种ldpc译码方法
US20110179337A1 (en) Memory utilization method for low density parity check code, low density parity check code decoding method and decoding apparatus thereof
CN112182495A (zh) 一种基于忆阻器的二元域矩阵运算电路
CN113506589B (zh) 一种稀疏矩阵存算系统及方法
EP4154407A1 (en) Low density parity check decoder, electronic device, and method therefor
JP2013512479A (ja) Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法
US10727869B1 (en) Efficient method for packing low-density parity-check (LDPC) decode operations
US9715343B2 (en) Multidimensional partitioned storage array and method utilizing input shifters to allow multiple entire columns or rows to be accessed in a single clock cycle
WO2007099950A1 (ja) 高速pe間データ再配置機能を有するプロセッサアレイシステム
CN113206674B (zh) 一种用于ldpc译码器的高效交织器及交织方法
US10404284B1 (en) Parallel-to-parallel conversion and reordering of a block of data elements
US9442661B2 (en) Multidimensional storage array and method utilizing an input shifter to allow an entire column or row to be accessed in a single clock cycle
JP7157457B2 (ja) データ処理装置

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