一种神经网络张量处理器的数据流高速缓存的制作方法

文档序号:25213189发布日期:2021-05-28 14:09阅读:86来源:国知局
一种神经网络张量处理器的数据流高速缓存的制作方法

本发明涉及神经网络张量处理器领域,尤其涉及一种神经网络张量处理器的数据流高速缓存。



背景技术:

传统处理器(cpu、gpu、dsp)使用cache高速缓存技术在片上存储器内缓存最近经常使用的指令和数据,从而解决芯片内部存储器与外部存储器在内存速度和内存带宽上的巨大鸿沟(芯片内部存储器的内存速度要远大于外部存储器)。在现代处理器系统中,计算性能远大于存储性能,因此处理器内存子系统对现代处理器系统性能的影响起着至关重要的作用。

cache高速缓存技术使用芯片内部的存储器保存最近使用的指令和数据,并使用指令和数据的内存地址作为索引地址来实现指令和数据的查找与匹配。处理器内核的每个指令和数据的请求都首先访问cache高速缓存,如果地址命中,则意味着所需的指令和数据已经存储在cache存储器中,无需访问片外存储器便可立刻获得所需的指令和数据。

cache高速缓存使用指令和数据的内存地址来寻址,而该地址由传统处理器架构中的指令所决定。

cache是专为指令集架构所设计的高速缓存技术。而对于无指令的数据流计算体系,数据的存取不再由指令所决定,数据将根据系统配置按照处理器架构预先定义的规则进行读写,具有极强的可预见性和规则性,因此,cache高速缓存在数据流架构下无法发挥其作用,传统cache高速缓存技术不再适合于数据流计算体系。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明的目的是提供一种用于神经网络数据流计算架构的高速缓存技术,称为神经网络张量处理器的数据流高速缓存。数据流高速缓存为神经网络张量计算提供数据。

为实现上述目的,本发明提供了一种神经网络张量处理器的数据流高速缓存,包括数据地址映射模块、数据地址生成模块、特征数据sram存储器和参数数据sram存储器;

所述数据流高速缓存外部连接一个大容量的片外存储器和一个神经网络计算模块,所述片外存储器保存所有的特征数据和参数数据,所述数据流高速缓存用于根据神经网络计算模块正在计算的输出张量的行地址,通过所述数据地址生成模块、所述数据地址映射模块生成的特征地址和参数地址,预取对应的特征数据和参数数据并缓存在小容量的所述特征数据sram存储器和所述参数数据sram存储器中。

技术效果:

数据流高速缓存的一次索引输出计算1行输出特征张量(神经网络最小计算)所需的大量数据(如几百个字节),而传统cache的一次索引仅根据地址输出相应小量数据(如4个字节),因此,在数据流计算架构下,数据流高速缓存拥有较高的存储效率。

进一步的,所述数据地址生成模块用于接收来自神经网络计算模块的输出张量行地址;根据该行地址,所述数据地址生成模块将产生计算该输出张量行数据的所有特征输入数据和参数输入数据的地址,并按照顺序把生成的地址发送给所述数据地址映射模块;所述数据地址生成模块还接收来自外部其他控制模块的配置信息,该配置信息包括输入特征张量的尺寸、输入参数张量的尺寸、输出特征张量的尺寸以及计算模式;根据该配置信息,所述数据地址生成模块自动计算获得输出张量行与输入张量的对应关系,当计算某行输出张量时,按顺序产生计算所需的正确的输入张量数据的地址。

进一步的,所述数据地址映射模块包括地址转换模块、特征数据sram存储器映射表、参数数据sram存储器映射表、映射匹配控制模块、数据预取写模块和数据读模块;

所述地址转换模块所述用于将特征地址转换为特征行h,将参数地址转换为参数n;其中,特征行h代表该特征地址所指定数据所属的特征行号,参数n代表该参数地址所指定数据所属的参数索引号;

所述特征数据sram存储器映射表用于存储所述特征数据sram存储器内所保存的特征张量行的行号;所述特征行h与所述特征数据sram存储器映射表的内容进行查询匹配,该匹配操作由所述映射匹配控制模块完成;如果匹配成功,则代表特征地址所对应的张量已存储于所述特征数据sram存储器中,该地址将通过所述数据读模块发送给所述特征数据sram存储器用于对应数据的读取;如果匹配不成功,则代表特征地址所对应的张量不存储于所述特征数据sram存储器中,该地址将发送给所述数据预取写模块;

所述参数数据sram存储器映射表存储所述参数数据sram存储器内所保存的参数张量的索引号;所述参数n与参数数据sram存储器映射表的内容进行查询匹配,该匹配操作由映射匹配控制模块完成;如果匹配成功,则代表参数地址所对应的张量已存在于所述参数数据sram存储器中,该地址将通过数据读模块发送给所述参数数据sram存储器用于对应数据的读取;如果匹配不成功则代表参数地址所对应的张量不存在于所述参数数据sram存储器中,该地址将发送给所述数据预取写模块;

所述数据预取写模块用于读取来自片外存储器的特征张量行数据以及参数张量数据,并执行所述特征数据sram存储器和所述参数数据sram存储器的更新操作;

所述数据读模块用于根据指定的特征地址和参数地址读取所述特征数据sram存储器以及所述参数数据sram存储器中的对应数据。

进一步的,所述数据预取写模块内维护有一个特征数据替换指针和一个参数数据替换指针,所述特征数据替换指针永远指向所述特征数据sram存储器中最旧一个特征张量行,所述参数数据替换指针永远指向所述参数数据sram存储器中最旧一个参数张量;当所述特征数据sram存储器或所述参数数据sram存储器的存储空间未满时,新的特征数据或参数数据按顺序写入相应的存储器;当所述特征数据sram存储器或所述参数数据sram存储器的存储空间满时,新的特征张量行h+1将替换最旧的特征张量行,或新的参数张量n+1将替换最旧的参数张量。

进一步的,所述数据预取写模块还具备数据预取功能:在所述特征张量行h+1和参数张量n+1读取并替换完成后,所述数据预取写模块将继续读取h行特征张量和n个参数张量,使其替换所述特征数据sram存储器或所述参数数据sram存储器中最旧的h行特征张量和最旧的n个参数张量;h和n的具体数值由配置参数决定。

进一步的,所述特征数据sram存储器用于缓存部分特征数据,所述特征数据的最小存储单元是尺寸为(1,1,wf,c)的1行输入特征张量数据,其中wf为张量数据的列数,c为张量数据的通道数。

进一步的,所述参数数据sram存储器用于缓存部分或全部参数数据,所述参数数据的最小存储单元是尺寸为(1,hp,wp,c)的1个输入参数张量数据,其中hp为张量数据的行数,wp为张量数据的列数,c为张量数据的通道数。

本发明实现了如下技术效果:

本发明的数据流高速缓存与传统cache高速缓存最大的区别在于,数据流高速缓存的一次索引输出计算1行输出特征张量(神经网络最小计算)所需的大量数据(如几百个字节),而传统cache的一次索引仅根据地址输出相应小量数据(如4个字节),因此,在数据流计算架构下,数据流高速缓存拥有较高的存储效率。

附图说明

图1是本发明的数据流高速缓存在神经网络张量处理器的数据流计算引擎中的位置图;

图2是本发明的神经网络张量计算示例;

图3是本发明的数据流高速缓存的硬件框图;

图4是本发明的特征数据sram存储器和参数数据sram存储器的数据映射关系;

图5是本发明的数据地址映射模块的硬件框图;

图6是本发明的特征数据sram存储器映射表和参数数据sram存储器映射表;

图7是本发明的特征数据sram存储器和参数数据sram存储器的数据更新。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。

现结合附图和具体实施方式对本发明进一步说明。

本发明提出一种用于神经网络数据流计算架构的高速缓存技术,称为数据流高速缓存。数据流高速缓存为神经网络张量计算提供数据。

一个神经网络张量处理器的数据流计算引擎示例如图1所示,由4d数据存储访问模块、片上存储器、4d计算模块、1d数据存储访问模块、1d计算模块和直接存储器写模块组成。其中,片上存储器即为本发明所指的数据流高速缓存;4d计算模块用于实现本发明所指的神经网络张量计算,数据流高速缓存外部连接一个大容量的片外存储器,通过4d数据存储访问模块进行读取,获取并缓存4d计算模块执行神经网络张量计算所需要的数据。关于神经网络张量处理器,可参见前案专利1(发明名称为:一种神经网络多核张量处理器,申请号为:202011423696.0),或前案专利2(发明名称为:一种神经网络张量处理器,申请号为:202011421828.6)。

一个神经网络张量计算示例如图2所示,该计算实现了尺寸为(1,hf,wf,c)的输入特征张量和尺寸为(n,hp,wp,c)的输入参数张量的乘法累加运算,并得到尺寸为(1,ho,wo,n)的输出特征张量。其中,我们称hx为张量数据的行数,wx为张量数据的列数,c为张量数据的通道数,n为张量数据的个数。例如输入特征张量的行数为hf,列数为wf,通道数为c,个数为1。

本发明所采用的上述神经网络张量计算的特征在于,以尺寸为(1,1,wo,n)的1行输出特征张量的计算为最小单元,我们称之为神经网络最小计算。根据计算模式的不同,神经网络最小计算所需的输入特征张量数据和输入参数张量数据的数量不同,以图1所示的神经网络张量计算为例,为了计算得到1行输出特征张量,神经网络最小计算需要尺寸为(1,m,wo,n)的m行输入特征张量和尺寸为(n,hp,wp,c)的所有输入参数张量,而这些输入张量数据将由数据流高速缓存提供。

数据流高速缓存与传统cache高速缓存最大的区别在于,数据流高速缓存的一次索引输出计算1行输出特征张量(神经网络最小计算)所需的大量数据(如几百个字节),而传统cache的一次索引仅根据地址输出相应小量数据(如4个字节),因此,在数据流计算架构下,数据流高速缓存拥有较高的存储效率。

图3所示为数据流高速缓存的硬件框图,其中,上述神经网络张量计算由神经网络计算模块实现,而该计算所需的所有数据由本发明所提出的数据流高速缓存提供。

数据流高速缓存由数据地址映射模块、数据地址生成模块、特征数据sram存储器、参数数据sram存储器四部分组成。

数据流高速缓存外部连接一个大容量的片外存储器,大容量片外存储器保存所有的特征数据和参数数据,数据流高速缓存的主要任务就是根据神经网络计算模块正在计算的输出张量的行地址,通过数据地址生成模块和数据地址映射模块生成的特征地址和参数地址,预取对应的特征数据和参数数据并缓存在小容量的特征数据sram存储器和参数数据sram存储器中。

数据流高速缓存连接一个神经网络计算模块,数据流高速缓存和神经网络计算模块通常位于同一个芯片内。神经网络计算模块为数据流高速缓存提供当前正在计算的输出张量行地址,而数据流高速缓存根据该行地址输出计算该输出张量行数据所需的所有特征数据和参数数据。

特征数据sram存储器用于缓存部分特征数据(全部特征数据存储于片外存储器),该特征数据的最小存储单元是尺寸为(1,1,wf,c)的1行输入特征张量数据,而存储器内所能存储的最大行数量与存储器容量以及特征张量大小有关。

参数数据sram存储器,用于缓存部分或全部参数数据,该参数数据的最小存储单元是尺寸为(1,hp,wp,c)的1个输入参数张量数据,而存储器内所能存储的最大参数数量与存储器容量以及参数张量大小有关。

特征数据sram存储器和参数数据sram存储器的数据映射关系如图4所示。

数据地址生成模块接收来自神经网络计算模块的输出张量行地址。根据该行地址,数据地址生成模块将产生计算该输出张量行数据的所有特征输入和参数输入数据的地址,并按照顺序把生成的地址发送给数据地址映射模块。

数据地址生成模块接收来自其他控制模块的配置信息,该配置信息包括输入特征张量的尺寸、输入参数张量的尺寸、输出特征张量的尺寸以及计算模式等信息。根据该配置信息,数据地址生成模块自动计算获得输出张量行与输入张量(包括特征和参数)的对应关系,使得当计算某行输出张量时,可以按顺序产生计算所需的正确的输入张量数据的地址。

数据地址映射模块由地址转换模块、特征数据sram存储器映射表、参数数据sram存储器映射表、映射匹配控制模块、数据预取写模块、数据读模块组成,如图5所示。

数据地址映射模块接收来自数据地址生成模块的特征地址(某个特征数据的地址)和参数地址(某个参数数据的地址)。地址转换模块将特征地址转换为特征行h,将参数地址转换为参数n。其中,特征行h代表该地址所指定数据所属的特征行号,参数n代表该地址所指定数据所属的参数索引号。

特征数据sram存储器映射表存储特征数据sram存储器内所保存的特征张量行的行号。上述特征行h与上述映射表内容进行查询匹配,该匹配操作由映射匹配控制模块完成。如果匹配成功,则代表特征地址所对应的张量已存储于特征数据sram存储器中,该地址将通过数据读模块发送给特征数据sram存储器用于对应数据的读取。如果匹配不成功,则代表特征地址所对应的张量不存储于特征数据sram存储器中,该地址将发送给数据预取写模块。数据预取写模块将把上述未匹配成功地址所属的特征张量行从片外存储器取出,并更新到特征数据sram存储器和特征数据sram存储器映射表中,更新完毕后,该地址再通过数据读模块发送给特征数据sram存储器用于对应数据的读取。

参数数据sram存储器映射表存储参数数据sram存储器内所保存的参数张量的索引号。上述参数n与上述映射表内容进行查询匹配,该匹配操作由映射匹配控制模块完成。如果匹配成功,则代表参数地址所对应的张量已存在于参数数据sram存储器中,该地址将通过数据读模块发送给参数数据sram存储器用于对应数据的读取。如果匹配不成功,则代表参数地址所对应的张量不存在于参数数据sram存储器中,该地址将发送给数据预取写模块。数据预取写模块将把上述未匹配成功地址所属的参数张量从片外存储器取出,并更新到参数数据sram存储器和参数数据sram存储器映射表中,更新完毕后,该地址再通过数据读模块发送给参数数据sram存储器用于对应数据的读取。

特征数据sram存储器映射表和参数数据sram存储器映射表如图6所示。

数据预取写模块读取来自片外存储器的特征张量行数据以及参数张量数据,并执行特征/参数数据sram存储器的更新操作,具体更新规则如下。

如图7所示,数据预取写模块内维护一个特征数据替换指针和一个参数数据替换指针,使特征数据替换指针永远指向特征数据sram存储器中最旧一个特征张量行(如h-7),使参数数据替换指针永远指向参数数据sram存储器中最旧一个参数张量(如n-7)。当特征/参数数据sram存储器的存储空间未满时,新的特征/参数数据按顺序写入存储器;当特征/参数数据sram存储器的存储空间满时,新的特征张量行h+1将替换最旧的特征张量行h-7,新的参数张量n+1将替换最旧的参数张量n-7。

数据预取写模块还具备数据预取功能。在上述特征张量行h+1和参数张量n+1读取并替换完成后,数据预取写模块将继续读取h行特征张量和n个参数张量,使其替换特征/参数数据sram存储器中h-6到h-6-h地址的特征张量(即最旧的h行特征张量)和n-6到n-6-n地址的参数张量(即最旧的n个参数张量)。h和n的具体数值由配置参数决定。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1