一种稀疏矩阵存算系统及方法

文档序号:106594 发布日期:2021-10-15 浏览:35次 >En<

阅读说明:本技术 一种稀疏矩阵存算系统及方法 (Sparse matrix storage system and method ) 是由 李祎 杨岭 缪向水 于 2021-06-28 设计创作,主要内容包括:本发明提供了一种稀疏矩阵存算系统及方法,属于微电子器件领域,系统包括:第一存储阵列用于存储稀疏矩阵非零元的坐标索引表;第二存储阵列用于存储稀疏矩阵的元素,同时作为稀疏矩阵乘法运算的原位计算核;分块存储调度单元用于将稀疏矩阵分块成若干子矩阵,按照不同的压缩格式将各子矩阵存储至第二存储阵列;且建立稀疏矩阵对应的索引表;第二外围电路用于将向量转换为电压信号,并将电压信号施加在稀疏矩阵的子矩阵对应的位线或字线上,完成稀疏矩阵与向量的乘法运算。(The invention provides a sparse matrix storage system and a method, belonging to the field of microelectronic devices, wherein the system comprises: the first storage array is used for storing a coordinate index table of the sparse matrix non-zero elements; the second storage array is used for storing elements of the sparse matrix and is used as an in-situ calculation core of the sparse matrix multiplication operation; the blocking storage scheduling unit is used for blocking the sparse matrix into a plurality of sub-matrixes and storing the sub-matrixes to the second storage array according to different compression formats; establishing an index table corresponding to the sparse matrix; and the second peripheral circuit is used for converting the vector into a voltage signal and applying the voltage signal to a bit line or a word line corresponding to the sub-matrix of the sparse matrix to complete multiplication of the sparse matrix and the vector.)

一种稀疏矩阵存算系统及方法

技术领域

本发明属于微电子器件领域,更具体地,涉及一种稀疏矩阵存算系统及方法。

背景技术

稀疏矩阵是科学和工程计算中较为常见的一种矩阵,但是由于其0元素占整个矩阵的大部分,而0元素对矩阵计算来讲是无意义的,因此,稀疏矩阵的存储和计算效率比较低。

稀疏矩阵的存储和矩阵向量乘法一直以来是计算机和微电子领域的重大挑战,特别是在存内计算中,由于存内计算技术具有天然的原位计算和高并行度,对矩阵元素存储的位置有着非常严格的对齐要求,因此在完全并行的情况下,如果不对稀疏矩阵进行数学变换没法对0元素进行剔除的,而0元素在存内计算中往往不是以0的形式存在存储器中,一般是以一个高电阻态存入器件,而不同的器件存0的电阻态不同,同时不存在电导为0的半导体存储器,因此,0元素不仅浪费了存储空间,而且会引起计算误差,增加不必要的能耗和计算延时,而当前还没有专利和文献针对存内计算架构为稀疏矩阵设定特定的存储格式和运算格式。

发明内容

针对现有技术的缺陷,本发明的目的在于提供一种稀疏矩阵存算系统及方法,旨在解决现有的稀疏矩阵的存储和矩阵向量乘法运算时无法剔除0元素,且0元素不仅浪费存储空间,而且会引入计算误差,增加不必要的能耗和计算延时,因此,稀疏矩阵的存储和矩阵向量乘法运算过程中存在存储空间大且计算效率较低的问题。

为实现上述目的,本发明提供了一种稀疏矩阵存算系统,包括两两相互连接的第一存储阵列、第二存储阵列、第一外围电路、第二外围电路、主处理器、片上缓存和分块存储调度单元;

第一存储阵列用于存储稀疏矩阵非零元的坐标索引表;第二存储阵列用于存储稀疏矩阵的元素,同时作为稀疏矩阵乘法运算的原位计算核;

片上缓存用于在执行稀疏矩阵乘法运算时加载稀疏矩阵的索引表,并将索引表中地址译码和选通开关位置的选择分别传送至第一外围电路和第二外围电路;并存储中间运算结果,待计算任务全部结束,将所有中间运算结果返回至主处理器;

分块存储调度单元用于将稀疏矩阵分块成若干子矩阵后,按照不同的压缩格式将各子矩阵存储至第二存储阵列;且建立剩余子矩阵对应的索引表,存储至第一存储阵列;

第一外围电路用于根据接收的地址译码,对第一存储阵列中的索引表进行读写,将读写的稀疏矩阵的索引表传输至片上缓存;

第二外围电路用于将向量转换为电压信号,并根据选通开关位置的选择打开对应的开关,电压信号通过已打开的开关施加在稀疏矩阵的子矩阵对应的位线或字线上,并通过字线或位线读取中间运算结果存入片上缓存;

主处理器用于分析稀疏矩阵的类型;接收中间运算结果;并将接收的向量传递至第二外围电路。

优选地,按照不同的压缩格式存储子矩阵的方法为:

剔除全0的子矩阵,并对剩余的各子矩阵前端和末端全零的行或列进行剔除,只存储非零元的行或列。

优选地,对子矩阵进行压缩时,采用直接调用缩行存储格式,将非零元素左移,使所有的元素压缩至同一行中进行存储。

优选地,第一外围电路包括读写电路、驱动电路、数模转换器、模数转换器和地址译码器;

第二外围电路包括读写电路、驱动电路、数模转换器、模数转换器和选通开关。

优选地,第一存储阵列和第二存储阵列的结构为十字交叉杆结构,或晶体管-忆阻器级联结构,或单晶体管-多忆阻器级联结构。

优选地,第一存储阵列和第二存储阵列中的存储器为忆阻器,或阻变存储器,或相变存储器,或自选转移力矩-磁随机存储器,或NOR Flash器件或NAND Flash器件。

另一方面,本发明提供了一种稀疏矩阵存算方法,包括以下步骤:

通过识别判断稀疏矩阵的类型,将稀疏矩阵进行分割后,按照不同的压缩格式进行存储,并建立各子矩阵对应的索引表;

当执行稀疏矩阵向量乘法运算时,将向量转换为电信号;

以各子矩阵为单元,顺次根据各子矩阵对应索引表中的地址译码,将电信号加载至子矩阵中,完成当前子矩阵与向量之间的乘法累加运算,存储当前中间运算结果。

优选地,按照不同的压缩格式存储子矩阵的方法为:

剔除全0的子矩阵,并对剩余的各子矩阵前端和末端全零的行或列进行剔除,只存储非零元的行或列。

优选地,子矩阵支持采用直接调用缩行存储格式,将非零元素左移,使所有的元素压缩至同一行中进行存储。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

本发明中提供的稀疏阵列存算系统中存储阵列包括两部分,分别为第一存储阵列和第二存储阵列;第一存储阵列用于存储稀疏矩阵非零元的坐标索引表;第二存储阵列用于存储稀疏矩阵的元素,同时作为稀疏矩阵乘法运算的原位计算核;这种存储方式可以有效提升存内计算中稀疏矩阵向量乘法的存储效率,并保证计算的可靠性。

本发明中分块存储调度单元将稀疏矩阵分块成若干子矩阵后剔除掉子矩阵中的0元素,按照不同的压缩格式将各子矩阵存储至第二存储阵列,且建立系数觉镇对应的索引表,存储至第一存储阵列;因为稀疏矩阵存在很多0元素,不仅浪费存储空间,而且在计算过程中会增加一些不必要的能耗和计算延时,因此,分块存储调度单元将稀疏矩阵中的0删除掉,可以兼顾存储效率的同时,能够保留存内计算执行矩阵向量乘法的并行性,其中,对于对角矩阵和三角矩阵的压缩效率提升尤为明显。

附图说明

图1是本发明实施例提供的稀疏矩阵存算系统的结构示意图;

图2是本发明实施例1提供的对角稀疏矩阵的存储与运算格式示意图;

图3是本发明实施例2提供的三角稀疏矩阵的存储与运算格式示意图;

图4是本发明实施例3提供的随机稀疏矩阵的存储与运算格式示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

一方面,如图1所示,本发明提供一种稀疏矩阵存算系统,包括两两相互连接的第一存储阵列3-1、第二存储阵列3-3、第一外围电路3-2、第二外围电路3-4、主处理器1、片上缓存4和分块存储调度单元2;

第一存储阵列3-1用于存储稀疏矩阵非零元的坐标索引表;第二存储阵列3-3用于存储稀疏矩阵的元素,同时作为稀疏矩阵乘法运算的原位计算核;

片上缓存4用于在执行稀疏矩阵乘法运算时加载稀疏矩阵的索引表,并将索引表中地址译码和选通开关位置的选择分别传送至第一外围电路3-2和第二外围电路3-4;并存储中间运算结果,待计算任务全部结束,将所有中间运算结果返回至主处理器;

分块存储调度单元2用于将稀疏矩阵分块成若干子矩阵后,按照不同的压缩格式将各子矩阵存储至第二存储阵列;且建立剩余子矩阵对应的索引表,存储至第一存储阵列;

第一外围电路3-2用于根据接收的地址译码,对第一存储阵列中的索引表进行读写,将读写的稀疏矩阵的索引表传输至片上缓存;

第二外围电路3-4用于将向量转换为电压信号,并根据选通开关位置的选择打开对应的开关,电压信号通过已打开的开关施加在稀疏矩阵的子矩阵对应的位线或字线上,并通过字线或位线读取中间运算结果存入片上缓存;

主处理器1用于分析稀疏矩阵的类型;接收中间运算结果;并将接收的向量传递至第二外围电路。

优选地,按照不同的压缩格式存储子矩阵的方法为:

剔除全0的子矩阵,并对剩余的各子矩阵前端和末端全零的行或列进行剔除,只存储非零元的行或列。

优选地,对子矩阵进行压缩时,采用直接调用缩行存储格式,将非零元素左移,使所有的元素压缩至同一行中进行存储。

优选地,第一外围电路包括读写电路、驱动电路、数模转换器、模数转换器和地址译码器;

第二外围电路包括读写电路、驱动电路、数模转换器、模数转换器和选通开关。

优选地,第一存储阵列3-1和第二存储阵列3-3的结构为十字交叉杆结构,或晶体管-忆阻器级联结构,或单晶体管-多忆阻器级联结构。

优选地,第一存储阵列3-1和第二存储阵列3-3中的存储器为忆阻器,或阻变存储器,或相变存储器,或自选转移力矩-磁随机存储器,或NOR Flash器件或NAND Flash器件。

另一方面,本发明提供了一种稀疏矩阵存算方法,包括以下步骤:

通过识别判断稀疏矩阵的类型,将稀疏矩阵进行分割后,按照不同的压缩格式进行存储,并建立各子矩阵对应的索引表;

当执行稀疏矩阵向量乘法运算时,将向量转换为电信号;

以各子矩阵为单元,顺次根据各子矩阵对应索引表中的地址译码,将电信号加载至子矩阵中,完成当前子矩阵与向量之间的乘法累加运算,存储当前中间运算结果。

优选地,按照不同的压缩格式存储子矩阵的方法为:

剔除全0的子矩阵,并对剩余的各子矩阵前端和末端全零的行或列进行剔除,只存储非零元的行或列。

优选地,获取的子矩阵支持采用直接调用缩行存储格式,将非零元素左移,使所有的元素压缩至同一行中进行存储。

实施例1

如图2所示,当处理的稀疏矩阵为n×n的对角矩阵6时,先根据实际需求确定分块参数,假设分两块计算,调用对角矩阵的分块算法7,分为上、下两个子矩阵;

将全零列进行剔除,保存含有非零元的列,如第一子矩阵7-1和第二子矩阵7-2;

将第一子矩阵7-1和第二子矩阵7-2存入第二存储阵列3-3,并建立相应的索引存入第一存储阵列;索引情况具体为:本实施例中第一子矩阵7-1的列为1~n/2+1列;第二子矩阵7-2的列为n/2~n列,将列信息存入第二存储阵列3-3中;

当需要执行该稀疏矩阵与向量的乘法运算时,向量从主处理器送入第二外围电路3-4中,将向量转换为电压信号;

将索引表从第一存储阵列加载至片上缓存4;

在第一个周期,先将第一子矩阵7-1对应的地址,即1~n/2+1列的地址从片上缓存读写至分块存储调度单元2;

根据地址信息,打开第二外围电路3-4中第一子矩阵7-1对应的开关;向量第一部分电压信号9-1进入第二存储阵列,完成第一次矩阵向量乘法运算,得到中间结果向量Y的一部分10-1,存入片上缓存4;

进行第二次矩阵向量的乘法运算,因为索引表已经加载到片上缓存4中,因此,将第二子矩阵7-2对应的地址,即n/2~n列的地址,发送至第二外围电路3-4,第二外围电路3-4中的开关接到第二子矩阵7-2,向量的另一部分电压信号9-2进入第二存储阵列,完成第二阵列向量乘法运算,得到中间结果向量Y的另一部分10-2,存入片上缓存4;

将中间结果向量Y的一部分10-1和另一部分10-2一并返回至主处理器中,即完成一轮稀疏矩阵向量的乘法运算。

与上述操作相同,可对稀疏矩阵进行更精细的分块,如分为4块(8-1、8-2、8-3和8-4);向量分为9-3、9-4、9-5和9-6;执行四次运算,但是存储的0元素更少。

实施例2

如图3所示,当处理的稀疏矩阵为n×n的三角矩阵11时,先根据实际需求确定分块参数,假设分两块计算,调用对角矩阵的分块算法12,分为上、下两个子矩阵;

将全零列进行剔除,保存含有非零元的列,如第一子矩阵12-1和第二子矩阵12-2;

将第一子矩阵12-1和第二子矩阵12-2存入第二存储阵列3-3,并建立相应的索引存入第一存储阵列;索引情况具体为:本实施例中第一子矩阵12-1的列为1~n/2列;第二子矩阵12-2的列为1~n列,将列信息存入第二存储阵列3-3中;

当需要执行该稀疏矩阵与向量的乘法运算时,向量从主处理器送入第二外围电路3-4中,将向量转换为电压信号;

将索引表从第一存储阵列加载至片上缓存4;

在第一个周期,先将第一子矩阵12-1对应的地址,即1~n/2列的地址从片上缓存读写至分块存储调度单元2;

根据地址信息,打开第二外围电路3-4中第一子矩阵12-1对应的开关;向量第一部分电压信号9-1进入第二存储阵列,完成第一次矩阵向量乘法运算,得到中间结果向量Y的一部分10-1,存入片上缓存4;

进行第二次矩阵向量的乘法运算,因为索引表已经加载到片上缓存4中,因此,将第二子矩阵12-2对应的地址,即1~n/2列的地址,发送至第二外围电路3-4,第二外围电路3-4中的开关接到第二子矩阵12-2,向量的另一部分电压信号9-2进入第二存储阵列,完成第二阵列向量乘法运算,得到中间结果向量Y的另一部分10-2,存入片上缓存4;

与上述操作相同,可对稀疏矩阵进行更精细的分块,如分为4块(13-1、13-2、13-3和13-4);执行四次运算,但是存储的0元素更少。

实施例3

如图4所示,当处理的矩阵为n×n的随机稀疏矩阵15时,先采用传统的缩行存储格式,将每一行的非零元全部集中到该行的首端,如15-1所示;

建立索引表16,存入第一存储阵列的存储区;

当需要执行矩阵向量乘法时,向量从主处理器送入第二外围电路,第二外围电路将向量转换为电压信号;

将索引表从存储区加载到片上缓存4,因为每一行的元素并没有列对齐,因此在这种情况下,需要逐行进行计算,索引表的表头为行序号,该行元素的列序号作为链表元素存入,因此在执行计算时,依次载入该索引表的一个链表,转换为稀疏矩阵15-1的地址,打开对应的开关,执行改行的向量乘法,每次运算结果存入片上缓存4,一次完整的矩阵向量乘法结束,再将结果返回主处理器。

综上所述,本发明存在以下优势:

本发明中提供的稀疏阵列存算系统中存储阵列包括两部分,分别为第一存储阵列和第二存储阵列;第一存储阵列用于存储稀疏矩阵非零元的坐标索引表;第二存储阵列用于存储稀疏矩阵的元素,同时作为稀疏矩阵乘法运算的原位计算核;这种存储方式可以有效提升存内计算中稀疏矩阵向量乘法的存储效率,并保证计算的可靠性。

本发明中分块存储调度单元将稀疏矩阵分块成若干子矩阵后剔除掉子矩阵中的0元素,按照不同的压缩格式将各子矩阵存储至第二存储阵列,且建立系数觉镇对应的索引表,存储至第一存储阵列;因为稀疏矩阵存在很多0元素,不仅浪费存储空间,而且在计算过程中会增加一些不必要的能耗和计算延时,因此,分块存储调度单元将稀疏矩阵中的0删除掉,可以兼顾存储效率的同时,能够保留存内计算执行矩阵向量乘法的并行性,其中,对于对角矩阵和三角矩阵的压缩效率提升尤为明显。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种独立精确控温固态硬盘老化测试模组

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!