一种矩阵乘法加速器的制作方法

    专利查询2026-10-04  1


    本发明属于数字电路,具体涉及一种矩阵乘法加速器。


    背景技术:

    1、微控制单元(microcontroller unit;mcu),又称单片微型计算机(single chipmicrocomputer)或者单片机,是把中央处理器(central process unit;cpu)的频率与规格做适当缩减,并将内存(memory)、计数器(timer)、usb(universal serial bus,通用串行总线)、模数转换器、uart(universal asynchronous receiver/transmitter,通用异步收发器)、plc(programmable logic controller,可编程逻辑控制器)和dma(direct memoryaccess,直接内存访问)等周边接口都整合在单一芯片上,形成芯片级的计算机,以便为不同的应用场合做不同组合控制。

    2、现有mcu不支持通过硬件电路进行矩阵乘法运算,只能借助软件完成。具体实现方法为在程序中嵌套3个for循环,以两个32×32矩阵乘法为例,软件程序如下:

    3、for(m=0;m<32;m++)

    4、for(n=0;n<32;n++)

    5、for(k=0;k<32;k++)

    6、res+=a[m][k]*b[k][n];

    7、但是,由于矩阵乘法涉及大量乘加运算,使得基于软件实现矩阵乘法运算会占用cpu大量时间,且运算速度极慢。由此如何提供一种硬件电路来完成矩阵乘法运算,以便减少cpu资源的开销,并大幅缩短计算所需时间,是本领域技术人员亟需研究的课题。


    技术实现思路

    1、本发明的目的是提供一种矩阵乘法加速器,用以解决现有基于软件实现矩阵乘法运算的方案所存在会占用cpu大量时间且运算速度极慢的问题。

    2、为了实现上述目的,本发明采用以下技术方案:

    3、第一方面,提供了一种矩阵乘法加速器,包括有第一读数据总线、第二读数据总线、第一读地址总线、第二读地址总线、写数据总线、写地址总线、寄存单元、读数据控制单元、乘加计算单元和逻辑控制单元,其中,所述第一读数据总线用于连接第一存储器的数据总线接口,所述第一读地址总线用于连接所述第一存储器的地址总线接口,所述第一存储器用于存储为m×k矩阵的第一矩阵数据,所述第二读数据总线用于连接第二存储器的数据总线接口,所述第二读地址总线用于连接所述第二存储器的地址总线接口,所述第二存储器用于存储为k×n矩阵的第二矩阵数据,所述写数据总线用于连接第三存储器的数据总线接口,所述写地址总线用于连接所述第三存储器的地址总线接口,所述第三存储器用于存储为m×n矩阵的第三矩阵数据,m、k和n分别表示正整数;

    4、所述寄存单元包括有第一地址寄存器、第二地址寄存器、第三地址寄存器、固定数值寄存器和多个控制参数寄存器,其中,所述第一地址寄存器连接所述第一读地址总线并用于缓存第一读地址,所述第二地址寄存器连接所述第二读地址总线并用于缓存第二读地址,所述第三地址寄存器连接所述写地址总线并用于缓存写地址,所述固定数值寄存器用于缓存数值m、k和n,所述控制参数寄存器用于缓存控制参数;

    5、所述读数据控制单元,分别连接所述第一读数据总线、所述第二读数据总线和所述乘加计算单元,用于在启动矩阵乘法任务后,周期性地通过所述第一读数据总线从所述第一存储器中读取位于所述第一矩阵数据中且被由所述第一读地址总线输出的读地址指示的k个同行矩阵元素,以及还周期性地通过所述第二读数据总线从所述第二存储器中读取位于所述第二矩阵数据中且被由所述第二读地址总线输出的读地址指示的k个同列矩阵元素,并将读取结果传送至所述乘加计算单元,其中,k表示正整数且为k的约数;

    6、所述乘加计算单元,分别连接所述逻辑控制单元和所述写数据总线,用于周期性地对来自所述读数据控制单元的所述k个同行矩阵元素及所述k个同列矩阵元素进行矩阵相乘计算,并使当前累加值自加矩阵相乘计算结果,然后在所述逻辑控制单元发现所述k个同行矩阵元素为所属行的最末数据和/或所述k个同列矩阵元素为所属列的最末数据时,先将所述当前累加值作为在所述第三矩阵数据中的某个矩阵元素,并通过所述写数据总线写入到所述第三存储器中且被由所述写地址总线输出的写地址指示的某个存储位置,然后将所述当前累加值初始化为零;

    7、所述逻辑控制单元,连接所述寄存单元,用于在启动矩阵乘法任务后,根据在所述寄存单元中的当前缓存值,通过在进行所述矩阵相乘计算后更新在所述第一地址寄存器、所述第二地址寄存器、所述第三地址寄存器和所述多个控制参数寄存器中的缓存值的方式,使所述矩阵乘法任务顺利完成。

    8、基于上述
    技术实现要素:
    ,提供了一种实现矩阵乘法运算的硬件电路方案,即包括有第一读数据总线、第二读数据总线、第一读地址总线、第二读地址总线、写数据总线、写地址总线、寄存单元、读数据控制单元、乘加计算单元和逻辑控制单元,并通过它们的通信连接关系及协作,可以基于硬件电路实现矩阵乘法运算目的,由此在将整个矩阵乘法加速器集成到mcu芯片内部后,软件只需进行初始化配置以及输入待相乘的两矩阵数据,就可以自动完成矩阵乘法,中途无需cpu参与,进而可以减少cpu资源开销,并大幅度缩短计算所需时间,解决现有mcu在进行矩阵乘法运算时所存在速度慢和所需时间长的问题,便于实际应用和推广。

    9、在一个可能的设计中,所述多个控制参数寄存器包括当前行数寄存器、当前列数寄存器和第一指示位寄存器,其中,所述当前行数寄存器用于缓存当前行数,所述当前列数寄存器用于缓存当前列数,所述第一指示位寄存器用于缓存下一行读取指示位;

    10、在启动矩阵乘法任务后,根据在所述寄存单元中的当前缓存值,通过在进行所述矩阵相乘计算后更新在所述第一地址寄存器、所述第二地址寄存器、所述第三地址寄存器和所述多个控制参数寄存器中的缓存值的方式,使所述矩阵乘法任务顺利完成,包括如下步骤s101~s106:

    11、s101.在启动矩阵乘法任务时,将所述当前行数寄存器中的所述当前行数初始化为1,将所述当前列数寄存器中的所述当前列数初始化为1,将所述第一指示位寄存器中的所述下一行读取指示位初始为无效位,将所述第一地址寄存器中的所述第一读地址初始化为用于指示在所述第一矩阵数据中首行首组k个同行矩阵元素的地址,将所述第二地址寄存器中的所述第二读地址初始化为用于指示在所述第二矩阵数据中首列首组k个同列矩阵元素的地址,以及将所述第三地址寄存器中的所述写地址初始化为用于指示在所述第三矩阵数据中首行首个矩阵元素的地址,然后执行步骤s102;

    12、s102.在进行所述矩阵相乘计算后,根据在所述数值m寄存器、所述数值k寄存器和所述数值n寄存器中缓存的固定数值以及在所述多个控制参数寄存器中的当前数值,若判定满足第一条件,则执行步骤s103,而若判定满足第二条件,则执行步骤s104,而若判定满足第三条件,则执行步骤s106,而若判定满足第四条件,则结束所述矩阵乘法任务,其中,所述第一条件是所述第一读地址不为用于指示在所述第一矩阵数据中当前行最末数据的地址和/或所述第二读地址不为用于指示在所述第二矩阵数据中当前列最末数据的地址,所述第二条件是所述第一读地址为用于指示在所述第一矩阵数据中当前行最末数据的地址和/或所述第二读地址为用于指示在所述第二矩阵数据中当前列最末数据的地址,所述下一行读取指示位为无效位,并且所述当前列数小于n,所述第三条件是所述第一读地址为用于指示在所述第一矩阵数据中当前行最末数据的地址和/或所述第二读地址为用于指示在所述第二矩阵数据中当前列最末数据的地址,所述下一行读取指示位为有效位,并且所述当前行数小于m,所述第四条件是所述第一读地址为用于指示在所述第一矩阵数据中当前行最末数据的地址和/或所述第二读地址为用于指示在所述第二矩阵数据中当前列最末数据的地址,所述下一行读取指示位为有效位,并且所述当前行数等于m以及所述当前列数等于n;

    13、s103.根据在所述当前行数寄存器中的所述当前行数,使所述第一读地址更新为用于指示在所述第一矩阵数据中当前行下一组k个同行矩阵元素的地址,以及根据在所述当前列数寄存器中的所述当前列数,使所述第二读地址更新为用于指示在所述第二矩阵数据中当前列下一个组k个同列矩阵元素的地址,然后在进行下一次所述矩阵相乘计算时,返回执行步骤s102;

    14、s104.根据在所述当前行数寄存器中的所述当前行数,使所述第一读地址更新为用于指示在所述第一矩阵数据中当前行首组k个同行矩阵元素的地址,以及使所述写地址更新为用于指示在所述第三矩阵数据中当前行下一个矩阵元素的地址,以及还根据在所述当前列数寄存器中的所述当前列数,使所述当前列数自加1,然后再使所述第二读地址更新为用于指示在所述第二矩阵数据中当前列首组k个同列矩阵元素的地址,最后执行步骤s105;

    15、s105.若所述当前列数等于n,则使所述下一行读取指示位为有效位,然后在进行下一次所述矩阵相乘计算时,返回执行步骤s102,否则直接在进行下一次所述矩阵相乘计算时,返回执行步骤s102;

    16、s106.根据在所述当前行数寄存器中的所述当前行数,使所述当前行数自加1,然后再使所述第一读地址更新为用于指示在所述第一矩阵数据中当前行首组k个同行矩阵元素的地址,以及使所述写地址更新为用于指示在所述第三矩阵数据中当前行首个矩阵元素的地址,以及使所述当前列数初始为1,然后再使所述第二读地址更新为用于指示在所述第二矩阵数据中当前列首组k个同列矩阵元素的地址,以及还使所述下一行读取指示位为无效位,最后在进行下一次所述矩阵相乘计算时,返回执行步骤s102。

    17、在一个可能的设计中,所述多个控制参数寄存器还包括第二指示位寄存器,其中,所述第二指示位寄存器用于缓存下一列读取指示位;

    18、在步骤s101中,还将所述第二指示位寄存器中的所述下一列读取指示位初始为无效位;

    19、在步骤s103中,还判断所述当前行下一组k个同行矩阵元素是否为当前行最末数据和/或判断所述当前列下一组k个同列矩阵元素是否为当前列最末数据,若是,则将所述下一列读取指示位更新为有效位,否则将所述下一列读取指示位更新为无效位或维持为无效位;

    20、所述第一条件还包括所述下一行读取指示位及所述下一列读取指示位均为无效位,所述第二条件、所述第三条件和所述第四条件还均包括所述下一列读取指示位为有效位。

    21、在一个可能的设计中,所述多个控制参数寄存器还包括第三指示位寄存器,其中,所述第三指示位寄存器用于缓存矩阵乘法任务启动指示位;

    22、在步骤s101中,还将所述第三指示位寄存器中的所述矩阵乘法任务启动指示位初始为有效位;

    23、结束所述矩阵乘法任务,包括:将所述矩阵乘法任务启动指示位更新为无效位。

    24、在一个可能的设计中,在判定满足所述第二条件时,还生成并输出一个点计算完成中断标志信息。

    25、在一个可能的设计中,在判定满足所述第三条件时,还生成并输出一个行计算完成中断标志信息。

    26、在一个可能的设计中,在判定满足所述第四条件时,还生成并输出一个帧计算完成中断标志信息。

    27、在一个可能的设计中,所述乘加计算单元包括k个乘法运算电路、加法运算电路和乘加结果寄存器,其中,所述k个乘法运算电路分别与所述k个同行矩阵元素以及所述k个同列矩阵元素一一对应,所述加法运算电路分别连接所述k个乘法运算电路和所述乘加结果寄存器;

    28、在所述k个乘法运算电路中的各个乘法运算电路,用于在第一时钟周期完成对应的同行矩阵元素与对应的同列矩阵元素的相乘运算,得到对应的相乘运算结果;

    29、所述加法运算电路,用于在第二时钟周期完成对所述各个乘法运算电路的相乘运算结果与所述乘加结果寄存器中的当前累加值的相加运算,并将相加运算结果更新到所述乘加结果寄存器中,其中,所述第二时钟周期为在所述第一时钟周期之后的下一个时钟周期。

    30、在一个可能的设计中,所述第一存储器、所述第二存储器或所述第三存储器采用与mcu系统共用的静态随机存储器。

    31、在一个可能的设计中,所述静态随机存储器采用双接口型存储器,其中,所述双接口型存储器的第一接口用于连接所述mcu系统,所述双接口型存储器的第二接口用于连接所述矩阵乘法加速器。

    32、上述方案的有益效果:

    33、(1)本发明创造性提供了一种实现矩阵乘法运算的硬件电路方案,即包括有第一读数据总线、第二读数据总线、第一读地址总线、第二读地址总线、写数据总线、写地址总线、寄存单元、读数据控制单元、乘加计算单元和逻辑控制单元,并通过它们的通信连接关系及协作,可以基于硬件电路实现矩阵乘法运算目的,由此在将整个矩阵乘法加速器集成到mcu芯片内部后,软件只需进行初始化配置以及输入待相乘的两矩阵数据,就可以自动完成矩阵乘法,中途无需cpu参与,进而可以减少cpu资源开销,并大幅度缩短计算所需时间,解决现有mcu在进行矩阵乘法运算时所存在速度慢和所需时间长的问题,便于实际应用和推广;

    34、(2)由于存储单元分成了三个部分,两个存放初始矩阵的存储器和一个存放结果矩阵的存储器,而矩阵乘法加速器可并行访问这三个存储器,还可以便矩阵乘法加速器以最高速度读取和写入数据,进一步提升速度;

    35、(3)还可在实现高速矩阵运算的同时仅牺牲了极小的面积,核心计算单元占比小,没有额外的专用存储器,使得实现成本极小,利于推广实现。


    技术特征:

    1.一种矩阵乘法加速器,其特征在于,包括有第一读数据总线、第二读数据总线、第一读地址总线、第二读地址总线、写数据总线、写地址总线、寄存单元、读数据控制单元、乘加计算单元和逻辑控制单元,其中,所述第一读数据总线用于连接第一存储器的数据总线接口,所述第一读地址总线用于连接所述第一存储器的地址总线接口,所述第一存储器用于存储为m×k矩阵的第一矩阵数据,所述第二读数据总线用于连接第二存储器的数据总线接口,所述第二读地址总线用于连接所述第二存储器的地址总线接口,所述第二存储器用于存储为k×n矩阵的第二矩阵数据,所述写数据总线用于连接第三存储器的数据总线接口,所述写地址总线用于连接所述第三存储器的地址总线接口,所述第三存储器用于存储为m×n矩阵的第三矩阵数据,m、k和n分别表示正整数;

    2.如权利要求1所述的矩阵乘法加速器,其特征在于,所述多个控制参数寄存器包括当前行数寄存器、当前列数寄存器和第一指示位寄存器,其中,所述当前行数寄存器用于缓存当前行数,所述当前列数寄存器用于缓存当前列数,所述第一指示位寄存器用于缓存下一行读取指示位;

    3.如权利要求2所述的矩阵乘法加速器,其特征在于,所述多个控制参数寄存器还包括第二指示位寄存器,其中,所述第二指示位寄存器用于缓存下一列读取指示位;

    4.如权利要求2所述的矩阵乘法加速器,其特征在于,所述多个控制参数寄存器还包括第三指示位寄存器,其中,所述第三指示位寄存器用于缓存矩阵乘法任务启动指示位;

    5.如权利要求2所述的矩阵乘法加速器,其特征在于,在判定满足所述第二条件时,还生成并输出一个点计算完成中断标志信息。

    6.如权利要求2所述的矩阵乘法加速器,其特征在于,在判定满足所述第三条件时,还生成并输出一个行计算完成中断标志信息。

    7.如权利要求2所述的矩阵乘法加速器,其特征在于,在判定满足所述第四条件时,还生成并输出一个帧计算完成中断标志信息。

    8.如权利要求1所述的矩阵乘法加速器,其特征在于,所述乘加计算单元包括k个乘法运算电路、加法运算电路和乘加结果寄存器,其中,所述k个乘法运算电路分别与所述k个同行矩阵元素以及所述k个同列矩阵元素一一对应,所述加法运算电路分别连接所述k个乘法运算电路和所述乘加结果寄存器;

    9.如权利要求1所述的矩阵乘法加速器,其特征在于,所述第一存储器、所述第二存储器或所述第三存储器采用与mcu系统共用的静态随机存储器。

    10.如权利要求9所述的矩阵乘法加速器,其特征在于,所述静态随机存储器采用双接口型存储器,其中,所述双接口型存储器的第一接口用于连接所述mcu系统,所述双接口型存储器的第二接口用于连接所述矩阵乘法加速器。


    技术总结
    本发明公开了一种矩阵乘法加速器,涉及数字电路技术领域。所述矩阵乘法加速器包括有第一读数据总线、第二读数据总线、第一读地址总线、第二读地址总线、写数据总线、写地址总线、寄存单元、读数据控制单元、乘加计算单元和逻辑控制单元,并通过它们的通信连接关系及协作,可以基于硬件电路实现矩阵乘法运算目的,由此在将整个矩阵乘法加速器集成到MCU芯片内部后,软件只需进行初始化配置以及输入待相乘的两矩阵数据,就可以自动完成矩阵乘法,中途无需CPU参与,进而可以减少CPU资源开销,并大幅度缩短计算所需时间,解决现有MCU在进行矩阵乘法运算时所存在速度慢和所需时间长的问题,便于实际应用和推广。

    技术研发人员:张金弟,孙金辉,谭涛
    受保护的技术使用者:上海芯圣电子股份有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-39624.html

    最新回复(0)