本发明涉及计算机技术领域,尤其涉及一种数据计算系统。
背景技术:
随着人工智能技术的发展,计算能力与计算速度在人工智能领域起着不可忽略的作用,目前主流实现的计算方式是处理器通过总线访问存储器读取到数据然后计算,得到结果后再通过总线将计算结果写回到存储器中。显然的,在计算的过程中处理器因为计算需要不断访问存储器,占用了大量总线资源,影响处理器的执行效率。
技术实现要素:
本发明提供的数据计算系统,能够提高处理器的执行效率,减少处理器对于计算的开销。
本发明提供一种数据计算系统,包括:存储器、处理器以及加速器,其中,
所述存储器,与所述处理器耦合,用于存储待计算的数据,所述数据由所述处理器写入;
所述处理器,与所述加速器耦合,用于对所述加速器进行控制;
所述加速器,与所述存储器耦合,用于根据预先配置好的控制信息访问所述存储器,实现数据计算,并将计算结果写回所述存储器。
可选地,所述加速器,包括控制寄存模块和计算模块,其中,
所述控制寄存模块,与所述处理器耦合,用于寄存控制信息,所述控制信息由所述处理器下发指令进行预先配置;
所述计算模块,与所述存储器耦合,用于根据所述控制信息访问所述存储器,实现数据计算,并将计算结果写回所述存储器。
可选地,所述控制寄存模块寄存的控制信息包括待计算数据的起始地址、计算数据的个数、计算类型、计算结果写回地址以及计算使能标志。
可选地,所述计算类型包括乘累加运算、指数计算、sigmoid、relu及softmax。
可选地,所述计算模块,用于当读取到所述计算使能标志为1时,根据所述待计算数据的起始地址及计算数据的个数,从所述存储器中读取计算数据,再根据所述计算类型进行数据计算,在计算完成后将计算结果按照所述计算结果写回地址写回到所述存储器。
可选地,所述计算模块,用于在计算完成后,将所述计算使能标志清零。
可选地,所述计算模块实现乘累加计算或者relu计算时,包括:乘累加单元、relu计算单元、第一多路选择器及第二多路选择器,其中,
所述乘累加单元,用于实现乘累加计算;
所述relu计算单元,用于对输入的数据进行relu计算;
所述第一多路选择器,用于选择输入所述relu计算单元的数据为乘累加计算结果或者其他输入数据;
所述第二多路选择器,用于选择是否将所述乘累加计算结果经过relu计算。
可选地,所述存储器存储的计算数据全部由所述处理器写入,计算过程中不更新。
本发明提供的数据计算系统,在原有存储器和处理器的基础上,增加一个加速器,处理器通过总线控制加速器,加速器去访问存储器,进行数据计算,计算完成后将计算结果写回到存储器,与现有技术相比,处理器只是对加速器进行控制,具体的数据计算由加速器完成,整个计算过程是加速器单独执行的过程,不占用处理器的计算单元,也不占用总线资源,处理器在这个过程中可以处理其他事件,并不会影响到加速器的计算性能,因此,提高了处理器的执行效率,减少了处理器对于计算的开销,同时也节约了数据计算的时间。
附图说明
图1为本发明的数据计算系统的一个实施例的结构示意图;
图2为图1中加速器的一种结构示意图;
图3为图2中计算模块的一种结构示意图;
图4为32路8x8数据存储格式及计算结果写回格式图;
图5为4路16x16数据存储格式及计算结果写回格式图;
图6为指数计算、softmax、sigmoid数据存储格式及计算结果写回格式图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据计算系统,如图1所示,所述数据计算系统包括:存储器11、处理器12以及加速器13,其中,
存储器11,与处理器12耦合,用于存储待计算的数据,待计算的全部数据由处理器12写入存储器11;
处理器12,与加速器13耦合,用于对加速器13进行控制;
加速器13,与存储器11耦合,用于根据预先配置好的控制信息访问存储器11,实现数据计算,并将计算结果写回存储器11。
本发明实施例提供的数据计算系统,在进行数据计算时,处理器只是对加速器起一个控制作用,不进行具体的数据计算,具体的数据计算由加速器来完成,因此,在计算过程中,处理器不需要访问存储器,不占用总线,提高了总线的利用率,同时当加速器在执行数据计算时,处理器可以去处理其他事件,也提高了处理器的利用率。另外,加速器不依赖于任何存储器类型,可与各种类型的存储器进行耦合计算,不受限制,兼容性好,对于不同的算法便于修改升级。
另外,利用本发明还进行了语音唤醒的实验验证,根据实验数据结果表明,同样的语音唤醒算法处理性能,利用处理器的计算单元,处理性能在196mcps,而使用加速器进行处理,性能可以达到90mcps,性能可提升接近55%。
可选地,如图2所示,加速器13包括控制寄存模块131和计算模块132,其中,
控制寄存模块131,与处理器12耦合,用于寄存控制信息,所述控制信息由处理器12通过总线下发指令进行预先配置;
计算模块132,与存储器11耦合,用于根据所述控制信息访问存储器11,实现数据计算,并将计算结果写回存储器11。
可选地,上述的控制信息包括待计算数据的起始地址、计算数据的个数、计算类型、计算结果写回地址以及计算使能标志。其中,计算类型包括乘累加计算、指数计算、sigmoid、relu、softmax。也就是说,计算模块132能够实现乘累加计算、指数计算、sigmoid计算、relu计算、softmax计算。但本发明的计算类型并不局限于上述几种,可以根据软件应用的实际需求,定制计算类型,可扩展性好。执行计算过程中,计算类型可以通过处理器进行控制,使用灵活方便,还可根据实际需求,增加或删减计算类型的硬件实现,以达到芯片面积最优化的效果。
当计算模块132读取到计算使能标志为1时,根据待计算数据的起始地址及计算数据的个数,依次从存储器11中读取计算数据,再根据计算类型进行数据计算,在计算完成后将计算结果按照计算结果写回地址写回到存储器11,同时将计算使能标志清零。当处理器12读取到计算使能标志为0时,则可以开始下次计算或者从存储器11中读取计算结果。
进一步地,当计算模块132实现乘累加计算或者relu计算时,如图3所示,计算模块132包括乘累加单元1321、relu计算单元1322、第一多路选择器1323及第二多路选择器1324,其中,
乘累加单元1321,包括2路16位乘法器、2路8位乘法器、累加器、寄存器,采用2路16位乘法器与两路8位乘法器并行计算,然后将乘累加计算结果存储到寄存器中;
relu计算单元1322,用于对输入的数据进行relu计算;
第一多路选择器1323,用于选择输入relu计算单元1322的数据为乘累加计算结果或者其他输入数据;
第二多路选择器1324,用于选择是否将所述乘累加计算结果经过relu计算。
下面以实现32路8x8乘累加计算为例,说明本发明的数据计算系统的计算过程。
包含的步骤如下:
1)处理器将所需要计算的所有数据a和数据b通过总线全部写入到存储器中,后续计算过程中不再写入数据。等到计算完成后,如果需要更换计算数据,此时处理器重新写入计算数据。
2)数据写完之后,处理器配置加速器的控制寄存模块,先配置数据a的起始地址、数据b的起始地址以及计算结果写回地址;
3)处理器再配置计算类型为32路8x8乘累加计算,计算数据的个数设为32,将计算使能标志置1;
4)加速器的计算模块读取到计算使能标志为1时,开始加速计算,根据控制寄存模块中的数据a的起始地址、数据b的起始地址、计算数据的个数,从存储器中读取计算数据,并进行乘累加计算;
5)在计算完成后将计算结果按照所述计算结果写回地址,主动将计算结果写回到存储器对应的写回地址中,并将计算使能标志清零。
6)处理器读取到计算使能标志为0,则可以开始下次计算或者从存储器中读取计算结果。
上述例子中,32路8x8数据存储格式及计算结果写回格式参见图4。另外,本发明实施例执行4路16x16乘累加计算时,4路16x16数据存储格式及计算结果写回格式参见图5。
另外,当计算模块132实现指数计算、sigmoid、softmax时,数据存储格式及计算结果写回格式如图6所示。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。