一种基于存内计算的稀疏矩阵稠密乘法加速器制造技术

技术编号:37266857 阅读:35 留言:0更新日期:2023-04-20 23:38
本发明专利技术实施例提供一种基于存内计算的稀疏矩阵稠密乘法加速器,该加速器包括:控制器,用于根据当前的计算任务,确定其中稀疏矩阵的所有非零数值、稠密向量的所有非零数值、稀疏矩阵和稠密向量的每个非零数值对应的行索引值和列索引值,且非零数值为浮点数值;CAM阵列,用于存储稀疏矩阵的每个非零数值对应的行索引值和列索引值,根据稠密向量的每个非零数值的行索引值匹配需与之进行计算的稀疏矩阵的每个非零数值的列索引值和行索引值,得到匹配结果;MAC阵列,用于根据CAM阵列的匹配结果关联存储稀疏矩阵的每个非零数值和稠密向量的每个非零数值,并执行关联存储的稀疏矩阵的每个非零数值与稠密向量对应的非零数值间的浮点乘法计算,得到计算结果。得到计算结果。得到计算结果。

【技术实现步骤摘要】
一种基于存内计算的稀疏矩阵稠密乘法加速器


[0001]本专利技术涉及存内计算领域,具体来说,涉及一种基于存内计算的稀疏矩阵稠密乘法加速器。

技术介绍

[0002]稀疏矩阵稠密向量乘法(sparse matrix

dense vector multiplication,SpMV)是一个基本的线性代数内核,也是一个重要的计算原语。它在多种应用中被使用,例如科学计算和图形处理。由于较差的数据局部性和不规则的内存访问,传统SpMV加速器的性能通常受到内存的限制。存内计算(In

memory computing,IMC)被视为缓解内存瓶颈的一种很有前途的技术。然而现存的基于存内计算的SpMV加速器存在一些缺陷,使得他们难以很好地支持对SpMV的加速。
[0003]现有的基于存内计算技术的稀疏矩阵稠密向量乘法加速器主要包括以下两种:
[0004]方案一:以参考文献[1]为代表的方案则是使用基于电阻式随机存取存储器(resistive random

access memory,ReRAM)的内存存储参与乘法计算的稀疏矩阵数据。随后使用内存可寻址存储器(Content Addressable Memory,CAM)阵列完成索引匹配,将匹配的稀疏矩阵数据从内存中读出然后使用靠近内存的浮点乘法器来完成SpMV计算[1]。
[0005]方案二:以参考文献[2]为代表的方案则是使用基于ReRAM的乘加(Multiply

Add Computation,MAC)阵列存储稀疏矩阵数据,根据稀疏矩阵数据的指数范围决定使用的MAC阵列的尺寸,将稠密向量输入到MAC阵列中与存储的稀疏矩阵数据进行SpMV运算。
[0006]对于第一种方案,其使用的ReRAM阵列不支持浮点表示和计算,乘法计算是使用浮点乘法器完成的,而不是使用具有高并行度的MAC阵列。这样需要执行额外的数据读取,不能充分利用存内计算技术的优势,难以取得较好的性能和能量利用效率,此外浮点乘法器的使用会带来额外的面积和功耗。对于第二种方案,其使用的基于ReRAM的MAC阵列完成SpMV运算,采用的定点乘法运算,且其阵列使用稠密格式存储数据,不支持使用稀疏格式存储,因此会存储许多零元数据,带来额外的内存面积开销。此外,其方案根据指数范围选择使用的MAC阵列的尺寸,在局部稀疏矩阵数据指数范围变化大时,无法选择合适尺寸的MAC阵列存储数据,这些无法存储和计算的数据需要交给GPU处理,会显著降低该加速器的加速效果。因此,现有技术中存在不支持存内浮点计算和不支持稀疏存储格式的缺陷,导致加速器存在计算效率低且内存面积开销大的问题。
[0007]参考文献:
[0008][1]L.Yavits and R.Ginosar,“Sparse matrix multiplication on CAM based accelerator,”arXiv preprint arXiv:1705.09937,2017.
[0009][2]B.Feinberg,U.K.R.Vengalam,N.Whitehair,S.Wang,and E.Ipek,“Enabling Scientific Computing on Memristive Accelerators,”in 2018ACM/IEEE 45th Annual International Symposium on Computer Architecture(ISCA),2018,pp.367

382.

技术实现思路

[0010]因此,本专利技术的目的在于克服上述现有技术的缺陷,提供一种基于存内计算的稀疏矩阵稠密乘法加速器。
[0011]本专利技术的目的是通过以下技术方案实现的:
[0012]在本专利技术的第一方面,提供一种基于存内计算的稀疏矩阵稠密乘法加速器,所述加速器包括:控制器,用于根据当前的计算任务,确定其中稀疏矩阵的所有非零数值、稠密向量的所有非零数值、稀疏矩阵和稠密向量的每个非零数值对应的行索引值和列索引值,且非零数值为浮点数值;CAM阵列,用于存储稀疏矩阵的每个非零数值对应的行索引值和列索引值,根据稠密向量的每个非零数值的行索引值匹配需与之进行计算的稀疏矩阵的每个非零数值的列索引值和行索引值,得到匹配结果;MAC阵列,用于根据CAM阵列的匹配结果关联存储稀疏矩阵的每个非零数值和稠密向量的每个非零数值,并执行关联存储的稀疏矩阵的每个非零数值与稠密向量对应的非零数值间的浮点乘法计算,得到计算结果。
[0013]在本专利技术的一些实施例中,所述匹配结果包括与稠密向量对应行的非零数值进行计算的稀疏矩阵对应列的所有非零数值的第一匹配结果,MAC阵列按以下方式执行浮点乘法计算:根据CAM阵列的第一匹配结果在MAC阵列的每行中关联存储稀疏矩阵的一个非零数值和与该数值进行计算的稠密向量对应的一个非零数值;按预设规则将MAC阵列的每行中关联存储的稀疏矩阵的非零数值与稠密向量对应的非零数值进行浮点乘法计算,得到MAC阵列的每行的计算结果。
[0014]在本专利技术的一些实施例中,所述稀疏矩阵和稠密向量的每个非零数值包括指数和尾数,所述MAC阵列的每行中包括多个FeFET晶体管,每个FeFET晶体管存储稀疏矩阵的非零数值的尾数的一位二进制数值,其中,按以下方式得到每行的计算结果:将每行中关联存储的稀疏矩阵的非零数值的指数与稠密向量对应的非零数值的指数相加,得到总指数值;将对应行关联存储的稠密向量的非零数值的尾数的每位二进制数值按位将对应位的二进制数值输入到该行的每个FeFET晶体管中,每个FeFET晶体管执行输入二进制数值与其存储的二进制数值间的乘法计算,以得到该行的尾数计算结果;根据每行的总指数值和尾数计算结果得到每行的计算结果。
[0015]在本专利技术的一些实施例中,所述每个FeFET晶体管按以下方式执行输入二进制数值与其存储的二进制数值间的乘法计算:每个FeFET晶体管根据输入为零的二进制数值与其存储的二进制数值间的乘法计算得到尾数计算结果的相应位为零,根据输入为一的二进制数值与其存储的二进制数值间的乘法计算得到尾数计算结果的相应位为其存储的二进制数值。
[0016]在本专利技术的一些实施例中,所述MAC阵列包括由多个寄存器构成的寄存器堆和第一交叉开关矩阵,第一交叉开关矩阵的每行对应一个寄存器,通过第一交叉开关矩阵的每行和其对应的寄存器关联存储稀疏矩阵的非零数值和与该数值进行计算的稠密向量对应的非零数值,其中,按照以下方式进行关联存储:通过第一交叉开关矩阵在所述矩阵的每行中存储稀疏矩阵的非零数值的尾数,其中,MAC阵列每行中的多个FeFET晶体管设置在第一交叉开关矩阵的每行中用于存储尾数的相应位的二进制数值;通过寄存器堆在稀疏矩阵的非零数值的尾数所在的行对应的寄存器中存储该稀疏矩阵的非零数值的指数、与该稀疏矩阵的非零数值进行计算的稠密向量的非零数值的指数和尾数。
[0017]在本专利技术的一些实施例中,所述M本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于存内计算的稀疏矩阵稠密乘法加速器,其特征在于,所述加速器包括:控制器,用于根据当前的计算任务,确定其中稀疏矩阵的所有非零数值、稠密向量的所有非零数值、稀疏矩阵和稠密向量的每个非零数值对应的行索引值和列索引值,且非零数值为浮点数值;CAM阵列,用于存储稀疏矩阵的每个非零数值对应的行索引值和列索引值,根据稠密向量的每个非零数值的行索引值匹配需与之进行计算的稀疏矩阵的每个非零数值的列索引值和行索引值,得到匹配结果;MAC阵列,用于根据CAM阵列的匹配结果关联存储稀疏矩阵的每个非零数值和稠密向量的每个非零数值,并执行关联存储的稀疏矩阵的每个非零数值与稠密向量对应的非零数值间的浮点乘法计算,得到计算结果。2.根据权利要求1所述的加速器,其特征在于,所述匹配结果包括与稠密向量对应行的非零数值进行计算的稀疏矩阵对应列的所有非零数值的第一匹配结果,MAC阵列按以下方式执行浮点乘法计算:根据CAM阵列的第一匹配结果在MAC阵列的每行中关联存储稀疏矩阵的一个非零数值和与该数值进行计算的稠密向量对应的一个非零数值;按预设规则将MAC阵列的每行中关联存储的稀疏矩阵的非零数值与稠密向量对应的非零数值进行浮点乘法计算,得到MAC阵列的每行的计算结果。3.根据权利要求2所述的加速器,其特征在于,所述稀疏矩阵和稠密向量的每个非零数值包括指数和尾数,所述MAC阵列的每行中包括多个FeFET晶体管,每个FeFET晶体管存储稀疏矩阵的非零数值的尾数的一位二进制数值,其中,按以下方式得到每行的计算结果:将每行中关联存储的稀疏矩阵的非零数值的指数与稠密向量对应的非零数值的指数相加,得到总指数值;将对应行关联存储的稠密向量的非零数值的尾数的每位二进制数值按位将对应位的二进制数值输入到该行的每个FeFET晶体管中,每个FeFET晶体管执行输入二进制数值与其存储的二进制数值间的乘法计算,以得到该行的尾数计算结果;根据每行的总指数值和尾数计算结果得到每行的计算结果。4.根据权利要求3所述的加速器,其特征在于,所述每个FeFET晶体管按以下方式执行输入二进制数值与其存储的二进制数值间的乘法计算:每个FeFET晶体管根据输入为零的二进制数值与其存储的二进制数值间的乘法计算得到尾数计算结果的相应位为零,根据输入为一的二进制数值与其存储的二进制数值间的乘法计算得到尾数计算结果的相应位为其存储的二进制数值。5.根据权利要求3所述的加速器,其特征在于,所述MAC阵列包括由多个寄存器构成的寄存器堆和第一交叉开关矩阵,第一交叉开关矩阵的每行对应一个寄存器,通过第一交叉开关矩阵的每行和其对应的寄存器关联存储稀疏矩阵的非零数值和与该数值进行计算的稠密向量对应的非零数值,其中,按照以下方式进行关联存储:通过第一交叉开关矩阵在所述矩阵的每行中存储稀疏矩阵的非零数值的尾数,其中,MAC阵列每行中的多个FeFET晶体管设置在第一交叉开关矩阵的每行中用于存储尾数的相应位的二进制数值;通过寄存器堆在稀疏矩阵的非零数值的尾数所在的行对应的寄存器中存储该稀疏矩
阵的非零数值的指数、与该稀疏矩阵的非零数值进行计算的稠密向量的非零数值的指数和尾数。6.根据权利要求5所述的加速器,其特征在于,所述MAC阵列按以下方式得到最终计算结果:按确定搜索的行索引值从小到大的顺序依次匹配CAM阵列中存储的与之相等的行索引值,得到与稀疏矩阵对应行的所有非零数值进行计算的稠密向量对应的非零数值的第二匹配结果;根据第二匹配结果将稀疏矩阵的对应行中所有非零数值与对应非零数值关联存储的稠密向量的非零数值进行乘法计算,得到稀疏矩阵的对应行对应的乘法结果;根据稀疏矩阵的对应行中所有非零数值的指数和与对应非零数值进行浮点乘法计算的稠密向量的非零数值的指数,对稀疏矩阵的对应行中对应的乘法结果进行浮点乘加,得到稀疏矩阵的对应行的乘加结果;根据稀疏矩阵的所有行对应的乘加结果得到最终计算结果。7.根据权利要求6所述的加速器,其特征在于,所述MAC阵列包括寻找最大值电路、延迟电路、数模转换器、采样保持电路、模数转换器和移位累加电路,其中,寻找最大值电路对每个寄存器存储的稀疏矩阵的非零数值的指数和稠密向量的非零数值的指数进行求和,得到每个寄存器对应的总指数值,并按照以下方式得到稀疏矩阵的对应行的乘加结果:通过寻找最大值电路根据稀疏矩阵的对应行中的所有非零数值以及每个非零数值对应的总指数值,得到最大的总指数值,计算所述对应行中的每个非零数值对应的总指数值与最大的总指数值间的差值;通过延迟电路根据稀疏矩阵的对应行中的每个非零数值对应的差值,得到稀疏矩阵的对应行中的每个非零数值延迟计算的时钟周期;通过数模转换器将与稀疏矩阵的对应行中的每个非零数值关联存储的稠密向量的对应非零数值的尾数延迟对应时钟周期输入第二交叉开关矩阵中,以与稀疏矩阵的对应行中的对应非零数值进行乘法计算,得到对应时钟周期的计算结果;通过采样保持电路获取并保存每个时钟周期的计算结果;通过模数转换器将每个时钟周期的计算结果...

【专利技术属性】
技术研发人员:张啸宇陈晓明韩银和
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1