CN109814927A - 一种机器学习推理协处理器 - Google Patents

一种机器学习推理协处理器 Download PDF

Info

Publication number
CN109814927A
CN109814927A CN201811559761.5A CN201811559761A CN109814927A CN 109814927 A CN109814927 A CN 109814927A CN 201811559761 A CN201811559761 A CN 201811559761A CN 109814927 A CN109814927 A CN 109814927A
Authority
CN
China
Prior art keywords
unit
data
control unit
channel
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811559761.5A
Other languages
English (en)
Other versions
CN109814927B (zh
Inventor
徐祥俊
黄维
魏家明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Haiguang Integrated Circuit Design Co Ltd
Original Assignee
Chengdu Haiguang Integrated Circuit Design Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Haiguang Integrated Circuit Design Co Ltd filed Critical Chengdu Haiguang Integrated Circuit Design Co Ltd
Priority to CN201811559761.5A priority Critical patent/CN109814927B/zh
Publication of CN109814927A publication Critical patent/CN109814927A/zh
Application granted granted Critical
Publication of CN109814927B publication Critical patent/CN109814927B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例提供一种机器学习推理协处理器,包括推理单元和控制单元。所述推理单元用于读取任务指令、数据和参数并进行计算,以实现与所述任务指令相应的推理运算;所述控制单元包括主控制单元和若干通道控制单元。其中,所述主控制单元用于实现对所述机器学习推理协处理器的全局控制;所述若干通道控制单元中各通道控制单元用于根据所述任务指令分别控制所述推理单元中与其对应的通道实现对单一任务或用户的响应。本发明实施例可支持多用户多任务,且可实现灵活的定制化设计。

Description

一种机器学习推理协处理器
技术领域
本发明实施例涉及数字芯片技术领域,尤其涉及一种机器学习推理协处理器。
背景技术
随着机器学习技术的发展,卷积神经网络(Convolutional Neural Networks,CNN)和深度神经网络(Convolutional Neural Networks,DNN)计算的应用日益广泛,相应的研究工作也在不断开展。
现有技术中,存在加速CNN和DNN运算的硬件加速方案。但是,现有的硬件加速方案存在一些不足之处。例如,现有的硬件加速方案多是基于嵌入式应用场景,不能支持多用户多任务,不能实现灵活的定制化设计。再如,现有的硬件加速方案只能支持CNN或DNN之一,不能同时支持两种神经网络。又如,现有的硬件加速方案通常需要大量的访问外部存储器,造成性能下降。此外,现有的硬件加速方案软件灵活性和硬件扩展性差。
发明内容
有鉴于此,本发明实施方式所要解决的技术问题是提供一种机器学习推理协处理器,以持多用户多任务,从而实现灵活的定制化设计。
为解决上述问题,本发明实施例提供如下技术方案:
一种机器学习推理协处理器,包括:推理单元,用于读取任务指令、数据和参数并进行计算,以实现与所述任务指令相应的推理运算;控制单元,包括主控制单元和若干通道控制单元;其中,所述主控制单元用于实现对所述机器学习推理协处理器的全局控制;所述若干通道控制单元中各通道控制单元用于根据所述任务指令分别控制所述推理单元中与其对应的通道实现对单一任务或用户的响应。
可选地,所述推理单元包括若干数据管控逻辑单元和若干数据处理逻辑单元;其中,各通道的数据管控逻辑单元具有与之对应的通道控制单元;所述数据处理逻辑单元用于根据所述通道控制单元向主控制单元的申请,与数据管控逻辑单元配合,在所述通道控制单元的控制下实现推理运算。
可选地,所述若干数据管控逻辑单元共享所述若干数据处理逻辑单元。
可选地,所述各数据处理逻辑单元包括线性计算单元和非线性计算单元。
可选地,所述各数据管控逻辑单元包括:用于读取任务指令、数据和参数的读取单元、用于缓存所述数据和参数的主缓存、用于将所述主缓存中的数据和参数分发到线性计算单元的任务分发单元、用于将所述线性计算单元的计算结果分发到非线性计算单元的任务重映射单元、用于收集所述非线性计算单元的计算结果的任务收集单元和用于将来自任务收集单元的计算结果对外输出的写回单元。
可选地,所述主缓存包括固定缓存和管道缓存,用于实现参数和数据的分别独立缓存。
可选地,所述主缓存还包括路由单元和用于实现所述主缓存内部控制的主缓存内部控制单元;所述路由单元耦接所述读取单元、任务分发单元、任务收集单元和固定缓存、管道缓存。
可选地,所述读取单元包括:第一通用总线接口、耦接所述第一通用总线接口和所述通道控制单元的指令读取单元、耦接所述第一通用总线接口和所述主缓存的参数/数据读取单元、用于实现所述读取单元内部控制的读取内部控制单元。
可选地,所述任务分发单元包括:任务分发内部控制单元、用于在所述任务分发内部控制单元控制下在所属从所述主缓存读取数据和参数并组成数据包的数据处理单元、用于将所述数据包传送至所述任务分发内部控制单元选择的线性计算单元的第一输出互联单元。
可选地,所述任务重映射单元包括:第一输入互联单元、第二输出互联单元、任务重映射内部控制单元、用于在所述任务重映射内部控制单元控制下通过所述输入互联单元收集所述线性计算单元所发送数据并对所述数据进行运算的第一数据收集单元、用于将所述第一数据收集单元处理完的数据组成数据包并通过所述输出互联单元发送至所述任务重映射内部控制单元选择的非线性计算单元的数据分发单元。
可选地,所述任务收集单元包括:耦接所述非线性计算单元的第二输入互联单元、耦接所述第二输入互联单元、所述主缓存和所述写回单元的第二收据收集单元、用于实现所述任务收集单元内部控制的任务收集内部控制单元。
可选地,所述写回单元包括:第二通用总线接口、耦接所述第二通用总线接口的数据写回单元、用于实现所述写回单元内部控制的写回内部控制单元。
可选地,所述线性计算单元包括依次耦接的第一数据输入缓存、线性计算核和第一数据输出缓存。
可选地,所述非线性计算单元包括依次耦接的第二数据输入缓存、非线性计算核和第二数据输出缓存。
可选地,所述主控制单元包括微处理器、存储器、主寄存器、安全组件和资源管理组件;其中,所述微处理器和主寄存器配合用于实现对所述机器学习推理协处理器的动态配置;所述微处理器和安全组件配合用于实现针对所述动态配置的安全策略,并监控违反安全策略的事件;所述微处理器和资源管理组件配合用于实现所述推理单元的计算资源在各通道间的动态分配。
可选地,所述主寄存器包括计算资源可用上限寄存器、通道使能寄存器、若干配置队列寄存器;各配置队列寄存器分别用于寄存所对应通道的配置信息。
可选地,所述各通道控制单元包括:通道主控逻辑单元、通道寄存器和通道数据控制单元;其中,所述通道主控逻辑单元用于分解当前任务并配置所述通道数据控制单元,以及向所述主控制单元申请所述推理单元的计算资源;所述通道寄存器用于寄存控制所需信息;所述通道数据控制单元用于根据所述通道主控逻辑单元的配置控制所述推理单元。
可选地,所述各通道控制单元包括:通道主控逻辑单元、通道寄存器和数据管控逻辑控制单元;其中,所述通道主控逻辑单元用于分解当前任务并配置所述数据管控逻辑控制单元,以及向所述主控制单元申请所述推理单元的计算资源;所述通道寄存器用于寄存控制所需信息;所述数据管控逻辑控制单元用于根据所述通道主控逻辑单元的配置控制所述数据管控逻辑单元。
可选地,所述各通道控制单元包括:通道主控逻辑单元、通道寄存器、用于控制读取单元的读取控制单元、用于控制主缓存的主缓存控制单元、用于控制任务分发单元的任务分发控制单元、用于控制任务重映射单元的任务重映射控制单元、用于控制任务收集单元的任务收集控制单元和用于控制写回单元的写回控制单元;其中,所述通道主控逻辑单元用于分解当前任务并配置所述读取控制单元、主缓存控制单元、任务分发控制单元、任务重映射控制单元、任务收集控制单元和写回控制单元,以及向所述主控制单元申请所述推理单元的计算资源;所述通道寄存器用于寄存控制所需信息。
可选地,所述通道寄存器包括:控制队列寄存器、指令地址寄存器、状态队列寄存器、中断使能寄存器、中断状态寄存器、指令状态寄存器。
可选地,所述指令状态寄存器包括:当前指令序号寄存器、当前指令层序号寄存器。
本发明实施方式的有益效果包括:机器学习推理协处理器可并行处理多个用户的任务,每个用户均有独立的通道控制单元。机器学习推理协处理器可以通过增加控制单元中的通道控制单元数量和推理单元中的通道数量来增加可支持的用户数目,从而可根据实际需求来灵活化定制化设计。
此外,根据CNN和DNN的结构特征,可将整个推理运算划分为卷积层运算、池化层运算和分类器层运算,并进一步将上述三类层运算划分为线性运算和非线性运算这两类类运算,因此本发明实施方式将计算单元从其他逻辑中独立出来,并且根据CNN和DNN特性将计算资源分为独立的线性计算单元和非线性计算单元,极具灵活性,使得机器学习推理协处理器可同时支持CNN和DNN两种运算加速。并且,可以根据计算的实际需求来增减线性计算单元和非线性计算单元,从而增减计算能力,实现灵活化的定制设计。
本发明的可选实施方式中,利用CNN和DNN的神经网络参数和处理数据的重复性特征,充分利用推理单元中的主缓存来复用数据,避免了大量的外部存储器读写操作,有效地提高了效率,降低了功耗。另外,可以通过增加推理单元中主缓存单元的缓存容量来增加可支持的神经网络规模。
本发明的实施方式可同时支持CNN和DNN,可根据实际需求灵活定制化设计主缓存大小以支持不同节点数的神经网络,并且对神经网络的深度没有限制,可支持任意深度的CNN和DNN网络。
本发明的实施方式中,每个用户均有独立的主缓存,神经网络参数和待处理数据可分别独立缓存。主缓存单元可采用乒乓形式和级联形式实现交替读写。
本发明的实施方式中,可通过寄存器和指令可灵活控制CNN和DNN的推理计算过程。
本发明实施方式的机器学习推理协处理器的寄存器均有访问权限管理。主控制单元的寄存器仅能被系统软件访问,通道控制单元寄存器可在系统软件设置后由用户软件访问,从而可实现动态配置的安全策略。
本发明实施方式充分发挥并行计算的优势,采用流水级联方式处理数据,可极大提高系统的吞吐率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施方式一种机器学习推理协处理器的结构框图;
图2为本发明实施方式中一种控制单元的结构框图;
图3为本发明实施方式中一种主控制单元的结构框图;
图4为本发明实施方式中一种通道控制单元的示意图;
图5为本发明实施方式中一种推理单元的框图;
图6为本发明实施方式中一种通道控制单元的框图;
图7为本发明实施方式中一种推理单元的结构框图;
图8为本发明实施方式中一种通道控制单元的结构框图;
图9为本发明实施方式中一种读取单元的结构框图;
图10为本发明实施方式中一种主缓存的结构框图;
图11为本发明实施方式中一种任务分发单元的结构框图;
图12为本发明实施方式中一种线性计算单元的结构框图;
图13为本发明实施方式中一种任务重映射单元的结构框图;
图14为本发明实施方式中一种非线性计算单元的结构框图;
图15为本发明实施方式中一种任务收集单元的结构框图;
图16为本发明实施方式中一种写回单元的结构框图;
图17为本发明实施方式的机器学习推理协处理器实现运算的流程图;
图18为本发明实施方式的机器学习推理协处理器执行指令的流程图。
具体实施方式
本发明实施方式的机器学习推理协处理器可用于支持CNN和DNN的运算加速,能够支持多用户多任务。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施方式公开内容的一个可选示例,请参考图1,本发明实施方式的一种机器学习推理协处理器,包括:控制单元100和推理单元200。其中,所述控制单元100与外部控制总线101相连,以实现软件动态控制数据计算流程;所述推理单元200与外部数据总线201相连,以实现机器学习推理任务计算。
需要说明的是,机器学习推理协处理器与外部通过控制总线和数据总线相连接,具体连接方式由应用场景决定,并不限于图1所示的连接方式。
请一并参考图1和图2,所述控制单元100由主控制单元110和多个通道控制单元120组成,其中通道控制单元120数目可根据所需支持的用户数目来设定。
所述推理单元200用于读取任务指令、数据和参数并进行计算,以实现与所述任务指令相应的推理运算。
所述主控制单元110用于实现软件对协处理器的全局控制,包括全局参数的动态配置、用户安全防护管理、资源分配等功能。
所述若干通道控制单元中各通道控制单元120用于根据所述任务指令分别控制所述推理单元200中与其对应的通道实现对单一任务或用户的响应。
请一并参考图3,所述主控制单元110可以包括微处理器111、存储器112、主寄存器113、安全组件114和资源管理组件115;其中,所述微处理器111和主寄存器113配合用于实现对所述机器学习推理协处理器的动态配置;所述微处理器111和安全组件114配合用于实现针对所述动态配置的安全策略,并监控违反安全策略的事件;所述微处理器111和资源管理组件115配合用于实现所述推理单元200的计算资源在各通道间的动态分配。
请一并参考图4,所述各通道控制单元120可以包括:通道主控逻辑单元121、通道寄存器122和通道数据控制单元140;其中,所述通道主控逻辑单元121用于分解当前任务并配置所述通道数据控制单元140,以及向所述主控制单元110申请所述推理单元200的计算资源;所述通道寄存器122用于寄存控制所需信息,以实现软件控制和状态查询;所述通道数据控制单元140用于根据所述通道主控逻辑单元121的配置控制所述推理单元200。
请参考图5,所述推理单元200可以包括若干数据管控逻辑单元220和若干数据处理逻辑单元210;每个通道均有独立的数据管控逻辑单元220;数据处理逻辑单元数目210可根据实际需求定制化设计(例如,可根据计算需求和硬件资源来确定),多个通道间可共享数据处理逻辑单元210以实现资源动态分配。
其中,各通道的数据管控逻辑单元220具有与之对应的通道控制单元120;所述数据处理逻辑单元210用于根据所述通道控制单元120向主控制单元110的申请,与数据管控逻辑单元220配合,在所述通道控制单元120的控制下实现推理运算。
其中,通道控制单元120向主控制单元110申请数据处理逻辑单元210,主控制单元110根据预设参数和用户信息采用指定算法分配数据处理逻辑单元210,主控制单元110的分配算法采用固件实现,可在线更新。
请参考图6,为配合所述推理单元200,所述通道控制单元120中的通道数据控制单元具体为数据管控逻辑控制单元141。
请参考图7,所述各数据处理逻辑单元210可以包括线性计算单元(L_CU)211和非线性计算单元212(NL_CU);其中,所述线性计算单元211用于实现多种线性计算,包括但不限于乘加、累加等,可根据具体需求定制化设计;所述非线性计算单元212用于实现多种非线性计算,包括但不限于tanh函数、sigmoid函数等,可根据具体需求定制化设计。
本发明的发明人考虑到:CNN和DNN都可以视为多“层”网络,网络的深度即层数。“层”的种类可以分为以下3类:卷积层、池化层和分类器层。由于数据在网络的各层之间是顺序处理的,因此各层可以独立实现。
其中,卷积层的运算由卷积运算和非线性运算组成,卷积运算可通过乘法和加法(线性运算)实现。CNN的网络节点共享一个或多个卷积核,DNN可看成每个网络节点都有自己独立的卷积核。非线性运算一般可选tanh函数。
池化层的运算通常包括线性运算(求均值或求最大值)和非线性运算(可选)组成,其中线性运算(求均值或求最大值)可由加法、除法和比较器(线性运算)实现。
分类器层一般出现在神经网络输出层,由线性运算和非线性运算组成,其中线性运算包括乘法和加法,非线性运算一般可选sigmoid函数。
综上,CNN和DNN均可以拆分成“层”进行运算,“层”内运算可以拆分为线性运算和非线性运算。因此,本发明的实施方式通过组织线性运算和非线性运算来实现CNN和DNN。
本发明实施方式利用CNN和DNN的共同特性,通过分层运算实现神经网络推理运算。当然,在具体应用时,本发明的实施方式也可以根据实际需求简化为只支持CNN或DNN中的一种。
分层运算由线性运算和非线性运算组成,本发明的实施方式中动态分配计算资源。当然,对于特定应用环境,也可以考虑估计分配线性运算和非线性运算资源。
所述各数据管控逻辑单元220可以包括:用于读取任务指令、数据和参数的读取单元(InDma)221、用于缓存所述数据和参数的主缓存(MBuf)222、用于将所述主缓存(MBuf)222中的数据和参数分发到线性计算单元(L_CU)211的任务分发单元(JDU)223、用于将所述线性计算单元(L_CU)211的计算结果分发到非线性计算单元(NL_CU)212的任务重映射单元(JRU)224、用于收集所述非线性计算单元(NL_CU)212的计算结果的任务收集单元(JCU)225和用于将来自任务收集单元(JCU)225的计算结果对外输出的写回单元(OutDma)226。
其中,所述读取单元221通过外部数据总线读取任务指令、参数和数据;读取单元221可支持多种通用总线。任务指令将传送给控制单元100中的通道控制单元120以用于指导任务的进行,参数和数据将传送给后续的主缓存222。
所述主缓存222用于缓存参数和数据。一并参考图10,一种具体实现中,主缓存222包括固定缓存(FixBuf)2222和管道缓存(PipeBuf)2223,以实现参数和数据的分别独立缓存。其中,在CNN模式下,参数采用FixBuf缓存,FixBuf应大于单层网络的参数总数据量的两倍;数据采用PipeBuf缓存,缓存大小应大于K*(N+1)*M,其中K为特征映射数目,N为CNN卷积核尺寸,M取CNN网络每行的节点数。在DNN模式下,数据采用FixBuf缓存,缓存应大于神经网络单层节点数的两倍;参数采用PipeBuf缓存,缓存应大于神经网络单层节点数的两倍。
所述任务分发单元223用于将主缓存222中的参数和数据分发到空闲可用的线性计算单元211中。
所述任务重映射单元224用于收集一个或多个线性计算单元211的计算结果,并将计算结果分发到空闲可用的非线性计算单元212中。
所述任务收集单元225用于收集一个或多个非线性计算单元212的计算结果,并将计算结果组织成数据结构发送给写回单元226。
所述写回单元226用于通过外部数据总线将中间计算结果或最终计算结果写回外部存储器;写回单元226可支持多种通用总线。
其中,神经网络参数和待处理数据在推理单元200内部传输可采用数据包形式,数据包由包头和数据两部分组成,数据包由任务分发单元产生。数据包包头包括用户标识、神经网络特征、数据写回地址等信息。
如图7所示,所述推理单元200内部通过内部总线采用级联结构连接,内部总线位宽可根据实际需求定制。每个通道均有专属的读取单元221、主缓存222、任务分发单元223、任务重映射单元224、任务收集单元225和写回单元226,由该通道的通道控制单元120控制;各个通道之间可共享多个线性计算单元211和非线性计算单元212,具体方式可根据实际需求定制化设计。
一种可选的方式是部分连接方式:将推理单元200中的计算资源分为两部分,一部分固定分配给各个通道,另一部分由临近的通道间共享。采用此种方式的优势在于即可最大限度的利用硬件资源,又可以保证每个通道的基本计算资源。
请参考图8,相应地,所述各通道控制单元120中的数据管控逻辑控制单元141可以包括:用于控制读取单元221的读取控制单元123、用于控制主缓存222的主缓存控制单元124、用于控制任务分发单元223的任务分发控制单元125、用于控制任务重映射单元224的任务重映射控制单元126、用于控制任务收集单元225的任务收集控制单元127和用于控制写回单元226的写回控制单元128。
所述通道控制单元120实现从指令读取、指令执行到指令完成的整个流程的控制逻辑。用户通过通道寄存器122监控指令的执行。
其中,所述读取控制单元123根据通道主控逻辑单元121的配置,控制推理单元200中的读取单元221读取任务指令、参数和数据;主缓存控制单元124根据通道主控逻辑单元121的配置,控制推理单元200中的主缓存222缓存数据;任务分发控制单元125根据通道主控逻辑单元121的配置,负责控制推理单元200中的任务分发单元223将当前任务分发给推理单元200中的线性计算单元211进行计算;任务重映射控制单元126根据通道主控逻辑单元121的配置,负责控制推理单元200中的任务重映射单元224收集推理单元中的线性计算单元211的计算结果并分配给推理单元200中的非线性计算单元212进行计算;任务收集控制单元127根据通道主控逻辑单元121的配置,控制推理单元中200的任务收集单元225收集推理单元200中的非线性计算单元212的计算结果,并输出给推理单元200中的写回单元226;写回控制单元128根据通道主控逻辑单元121的配置,控制推理单元200中的写回单元226将推理单元计算结果写回存储器112。
请参考图9,所述读取单元221可以包括:第一通用总线接口2214、耦接所述第一通用总线接口2214和所述通道控制单元120的指令读取单元2213、耦接所述第一通用总线接口2214和所述主缓存222的参数/数据读取单元2212、用于实现所述读取单元内部控制的读取内部控制单元2211。
其中,读取的指令通过内部总线传送给通道控制单元120,读取的数据或参数通过内部总线传送给主缓存222。
由于预取指令机制,存在同时读取指令和参数/数据的情况,指令读取单元2213和参数/数据读取单元2212需要竞争通用总线接口,本实施方式中,默认参数/数据读取单元2212具有高优先级。
请参考图10,所述主缓存222可以包括固定缓存2222、管道缓存2223、路由单元2224和用于实现所述主缓存内部控制的主缓存内部控制单元2221;所述路由单元2224耦接所述读取单元221、任务分发单元223、任务收集单元225和固定缓存2222、管道缓存2223。
所述读取单元221、任务分发单元223和任务收集单元225通过路由单元2224访问固定缓存2222和管道缓存2223。其中,固定缓存2222从逻辑上可作为乒乓缓存使用,管道缓存2223从逻辑上可作为多级缓存使用。固定缓存2222和管道缓存2223的大小可根据实际需求定制化设计。
请参考图11,所述任务分发单元223可以包括:任务分发内部控制单元2231、用于在所述任务分发内部控制单元2231控制下在从所述主缓存222读取数据和参数并组成数据包的数据处理单元2233、用于将所述数据包传送至所述任务分发内部控制单元2231选择的线性计算单元211的第一输出互联单元2232。
其中,所述任务分发内部控制单元2231控制数据处理单元2223从主缓存指定地址读取数据和参数,并增加JDU包头(参见表23)组成数据包,并通过第一输出互联单元2232将数据发送给所述任务分发内部控制单元2231选择的线性计算单元211。
请参考图12,所述线性计算单元211可以包括依次耦接的第一数据输入缓存2111、线性计算核2112和第一数据输出缓存2113。
本发明实施方式中,通过增加输入输出缓存,可减少数据传输对性能造成的损失。从任务分发单元223发给线性计算单元211的数据包大小不应超过线性计算单元第一数据输入缓存2111的大小。线性计算核2112根据数据包包头信息选择对应的线性计算类型,并将计算结果转发给数据包头中指定的任务重映射单元224。
请参考图13,所述任务重映射单元224可以包括:第一输入互联单元2242、第二输出互联单元2245、任务重映射内部控制单元2241、用于在所述任务重映射内部控制单元2241控制下通过所述第一输入互联单元2242收集所述线性计算单元211所发送数据并对所述数据进行运算的第一数据收集单元2243、用于将所述第一数据收集单元2243处理完的数据组成数据包并通过所述第二输出互联单元2245发送至所述任务重映射内部控制单元2241选择的非线性计算单元212的数据分发单元2244。
其中,在所述任务重映射内部控制单元2241的控制下,第一数据收集单元2243通过第一输入互联单元2242收集线性计算单元211发送的数据,由于同一个写回目标地址的数据可能涉及到多个线性计算单元计算,第一数据收集单元2243负责对数据进行累加和除法(池化层采用平均数运算时)运算。数据分发单元2244负责将数据收集单元处理完的数据组包,并通过第二输出互联单元2245发送给所述任务重映射内部控制单元2241选择的非线性计算单元212。
请参考图14,所述非线性计算单元212可以包括依次耦接的第二数据输入缓存2121、非线性计算核2122和第二数据输出缓存2123。
其中,通过增加输入输出缓存,可减少数据传输对性能造成的损失。从任务重映射单元224发给非线性计算单元212的数据包大小不应超过非线性计算单元第二数据输入缓存2121大小。非线性计算核2122根据数据包包头信息选择对应的非线性计算类型,并将计算结果转发给数据包头中指定的任务收集单元225。
请参考图15,所述任务收集单元225可以包括:耦接所述非线性计算单元的第二输入互联单元2252、耦接所述第二输入互联单元2252、所述主缓存222和所述写回单元226的第二收据收集单元2253、用于实现所述任务收集单元内部控制的任务收集内部控制单元2251。
其中,在所述任务收集内部控制单元2251的控制下,第二数据收集单元2253通过第二输入互联单元2252收集非线性计算单元212发送的数据,如果数据属于DNN非输出层,则将数据写入主缓存222的缓存区域,否则将数据发送给写回单元226。
请参考图16,所述写回单元226可以包括:第二通用总线接口2263、耦接所述第二通用总线接口2263的数据写回单元2262、用于实现所述写回单元内部控制的写回内部控制单元2261。
其中,在所述写回内部控制单元2261的控制下,数据写回单元2262通过第二通用总线接口2263将数据写回外部存储器指定地址。
本发明的实施方式中,外部软件可以通过寄存器实现对机器学习推理协处理器的控制。寄存器可以包括:主控制单元中的主寄存器113(参见图3)和通道控制单元中的通道寄存器122(参见图8)。
其中,主寄存器113可只有一份,通道寄存器122有若干份,分别设置于每个通道控制单元120中。
一种具体实现中,寄存器的分布和权限控制可参见表1。每个寄存器均有独立的安全级别控制,不符合安全级别的读写请求会被阻止并通过中断上报。
表1
如表1所示,所述主寄存器可以包括计算资源可用上限寄存器(CU_Limit)、通道使能寄存器(MainControl)、若干配置队列寄存器(Config_Queue)等;各配置队列寄存器分别用于寄存所对应通道的配置信息。
所述通道寄存器可以包括:控制队列寄存器(Control_Queue)、指令地址寄存器(CommandAddressHigh_Queue、CommandAddressLow_Queue)、状态队列寄存器(Status_Queue)、中断使能寄存器(InterruptEnable_Queue)、中断状态寄存器(InterruptStatus_Queue)、指令状态寄存器等。
其中,所述指令状态寄存器可以包括:当前指令序号寄存器(CommandStatus0_Queue)、当前指令层序号寄存器(CommandStatus1_Queue、CommandStatus2_Queue)。
其中,每个寄存器的具体定义可参见表2-表18。
表2Version寄存器定义
表3CU_Limit寄存器定义
表4MainControl寄存器定义
表5PowerManagement寄存器定义
表6ClockManagement寄存器定义
表7Config_Queue寄存器定义
表8Control_Queue寄存器定义
表9CommandAddressHigh_Queue寄存器定义
表10CommandAddressLow_Queue寄存器定义
表11Status_Queue寄存器定义
表12InterruptEnable_Queue寄存器定义
表13InterruptStatus_Queue寄存器定义
表14TimeOutHigh_Queue寄存器定义
表15TimeOutLow_Queue寄存器定义
表16CommandStatus0_Queue寄存器定义
表17CommandStatus1_Queue寄存器定义
表18CommandStatus2_Queue寄存器定义
如图17所示,在一种具体实现中,采用本发明实施方式的机器学习推理协处理器来实现机器学习的步骤包括:
S1.根据系统软件的操作,机器学习推理协处理器完成初始化;
S2.基于用户向系统软件提交的机器学习推理协处理器使用请求,根据系统软件的配置操作,机器学习推理协处理器的主寄存器被配置,从而向请求使用机器学习推理协处理器的用户开放指定通道的使用权限(具体是Config_Queue寄存器被配置);
S3.根据用户的操作,将指令存储地址写入通道寄存器中的CommandAddressHigh_Queue[x]寄存器和CommandAddressLow_Queue[x]寄存器;所述指令是用户取得指定通道的使用权限后在存储器中准备的,所述存储器中还具有用户准备的数据;
S4.根据用户的操作,通过写通道寄存器中Control_Queue[x]寄存器的ExecuteCommand域触发指令的读取;
S5.通道控制单元控制推理单元读取指令,并解析读回的指令,并根据解析结果向主控制单元申请计算资源;
S6.取得计算资源后,通道控制单元控制推理单元读取数据和参数,完成计算,并写回计算结果。如果还有待执行指令,通道控制单元同时控制推理单元预取下一条指令;
S7.通道控制单元通知用户指令完成。
本发明的实施方式中,机器学习推理协处理器执行用户软件准备好的指令,根据指令完成整个推理运算,期间用户软件无需参与复杂的调度和计算流程。用户软件可准备多个指令,机器学习推理协处理器可以逐一执行。
一并参考图3和图7,在一种具体实现中,系统软件通过配置主控制单元中的主寄存器完成机器学习推理协处理器的初始化,包括获取协处理器版本号(Version寄存器)和可用硬件资源(CU_Limit寄存器)、配置各通道状态(MainControl寄存器)以及设置协处理器功耗模式(PowerManagement和ClockManagement寄存器)。
其中,安全组件和微处理器共同实现对主寄存器和通道控制单元中通道寄存器的访问权限的控制(包括安全级别和用户标识,访问主寄存器不检测用户标识,只有系统软件可以拥有最高安全级别)。如果访问通过权限检查,将被转发至主寄存器或各通道寄存器;否则,机器学习推理协处理器将发出相应中断。
资源管理组件和微处理器共同实现线性计算单元和非线性计算单元的分配,分配原则可根据通道申请的计算资源、硬件资源限制、通道的优先级及执行时间决定,具体资源分配算法可以在微处理器的固件中实现,可根据实际需求选择,不限于以上提及的规则。
在具体实现中,用户如需要使用协处理器,应向系统软件提出申请,由系统软件分配相应的机器学习推理协处理器通道(通过配置Config_Queue寄存器)。用户取得通道使用权限后,应配置通道寄存器,按要求准备好指令和数据,触发指令执行,并等待指令执行完成。
如图18所示,在一种具体实现中,通道主控逻辑单元在用户触发指令执行后,执行指令的步骤包括:
S11.根据CommandAddressHigh_Queue[x]寄存器和CommandAddressLow_Queue[x]寄存器中的地址,控制读取单元读取指令;
S12.根据表19检查读回指令的合法性,如果检查结果合法,则解析指令并转至步骤S13;反之则执行步骤S15,退出指令执行并发起错误中断;
考虑当网络深度极大时,指令较长,可将指令按“层”分段读取和执行。
S13.根据神经网络类型和当前网络“层”类型选择不同的指令执行流程逐层执行指令;
S14.判断指令执行是否完成,如果指令执行完成,SIC(Stop If Complete,指令完成后将通道暂停)有效通道暂停;否则继续执行下一条指令。
下面说明本发明的一种具体实施方式中的如图18所示步骤S13的实现方式。
一、卷积层指令执行流程
由于网络类型不同,卷积层指令执行可分为CNN卷积层指令执行流程和DNN卷积层指令执行流程:
1.1CNN卷积层指令执行流程
1)通道控制单元向主控制单元返回当前“层”的类型和规模(总结点数)并申请硬件资源。
2)通道控制单元根据指令中当前“层”参数地址,控制读取单元读取参数,并缓存在图10所示主缓存的固定缓存中。
3)通道控制单元根据数据地址或缓存地址,控制读取单元读取数据,并缓存在主缓存的管道缓存中。
此处以二维图像为例说明数据读取和缓存方式:
如果当前“层”为输入层,从数据地址读取1至Y行数据并缓存在管道缓存中,Y为卷积核的Y方向尺度。在处理1至Y行数据时,从Y+1行继续逐行读取数据并缓存在管道缓存的最末端。
如果当前“层”非输入层,从外部存储器缓存地址读取1至Z个特征映射的1至Y行数据并按行交替缓存在管道缓存中,Y和Z分别为卷积核的Y和Z方向尺度。在处理特征映射1至Y行数据时,逐一从所有特征映射的Y+1行继续逐行读取数据并缓存在管道缓存的最末端。
4)通道控制单元控制任务分发单元读取主缓存中的数据和参数,并打包发给任意分配给当前通道的处于空闲状态的线性计算单元。
此处以二维图像为例说明数据分发过程:
如果当前“层”为输入层,从固定缓存中读取卷积核参数,从管道缓存中读取1至Y行1至X列数据并打包发送给一个空闲的线性计算单元(如果数据包过大,可分发给多个线性计算单元),继续读取1至Y行2至(X+1)列数据,与卷积核参数打包发送给下一个空闲的现行计算单元。处理完1至Y行数据,开始处理2至(Y+1)行数据。重复以上步骤直到处理完所有输入数据。
如果当前“层”为非输入层,从固定缓存中读取卷积核参数,从管道缓存中读取1至Z个特征映射的1至Y行1至X列数据并打包发送给一个空闲的线性计算单元(如果数据包过大,可分发给多个线性计算单元),继续读取1至Y行2至(X+1)列数据,与卷积核参数打包发送给下一个空闲的线性计算单元。重复以上步骤直到处理完成所有输入特征映射数据。
5)线性计算单元计算(乘加计算)完成后将计算结果发送给任务重映射单元。
6)通道控制单元控制任务重映射单元以输出节点为最小单元,收集汇合线性计算单元的计算结果,并将计算结果打包发给任意分配给当前通道的处于空闲状态的非线性计算单元。由于同一个输出节点的计算可能由多个线性计算单元完成,任务重映射单元应负责将多个计算结果累加。
7)非线性计算单元计算(通常tanh函数)完成后将计算结果发送给任务收集单元。
8)通道控制单元控制任务收集单元收集非线性计算单元的计算结果并发送给写回单元。
9)如果当前“层”是输出层,通道控制单元控制写回单元将计算结果写回外部存储器目标地址,否则,写回缓存中对应位置。
1.2DNN卷积层指令执行流程:
1)通道控制单元向主控制单元返回当前“层”的类型和规模(总结点数)并申请硬件资源。
2)如果当前“层”为输入层,通道控制单元根据数据地址,控制读取单元读取数据,并缓存在主缓存的固定缓存的区域1中,并设置区域1为工作区域,另一区域为缓存区域。如果当前“层”为非输入层,设置当前工作区域为缓存区域,当前缓存区域为工作区域。
3)通道控制单元根据参数地址,控制读取单元读取当前输出节点所需的参数,并缓存在主缓存的管道缓存中。在后续处理当前输出节点时,读取单元可同时读取下一个输出节点所需的参数。
4)通道控制单元控制任务分发单元读取主缓存中的数据和参数,并打包发给任意分配给当前通道的处于空闲状态的线性计算单元(如果数据包过大,可分发给多个线性计算单元)。
5)线性计算单元计算(乘加计算)完成后将计算结果发送给任务重映射单元。
6)通道控制单元控制任务重映射单元以输出节点为最小单元,收集汇合线性计算单元的计算结果,并将计算结果打包发给任意分配给当前通道的处于空闲状态的非线性计算单元。由于同一个输出节点的计算可能由多个线性计算单元完成,任务重映射单元应负责将多个计算结果累加。
7)非线性计算单元计算(通常tanh函数)完成后将计算结果发送给任务收集单元。
8)通道控制单元控制任务收集单元收集非线性计算单元的计算结果,如果当前“层”是输出层,任务收集单元将计算结果发送给写回单元;否则任务收集单元将计算结果写入主缓存的固定缓存的缓存区域指定地址。如果当前“层”是输出层,通道控制单元控制写回单元将计算结果写回外部存储器目标地址。
二、池化层指令执行流程
由于网络类型不同,池化层指令执行流程可分为CNN池化层指令执行流程和DNN池化层指令执行流程:
2.1CNN池化层指令执行流程
1)通道控制单元向主控制单元返回当前“层”的类型和规模(总结点数)并申请硬件资源。
2)通道控制单元根据数据地址(输入层)或缓存地址(非输入层),控制读取单元读取数据,并缓存在主缓存的管道缓存中。
此处以二维图像为例说明数据读取和缓存方式:读取1至Y行数据并缓存在管道缓存中,Y为池化运算核的Y方向尺度。在处理1至Y行数据时,从继续读取(Y+1)至2Y行数据并缓存在管道缓存的最末端。
3)通道控制单元控制任务分发单元读取主缓存中的数据,并打包发给任意分配给当前通道的处于空闲状态的线性计算单元。
此处以二维图像为例说明数据分发过程:从管道缓存中读取1至Y行1至X列数据并打包发送给一个空闲的线性计算单元(如果数据包过大,可分发给多个线性计算单元),继续读取1至Y行(X+1)至2X列数据,打包发送给下一个空闲的线性计算单元,X和Y为池化运算核的X和Y方向尺度。处理完1至Y行数据,开始处理(Y+1)至2Y行数据。重复以上步骤直到处理完所有输入数据。
4)线性计算单元计算(累加或比较)完成后将计算结果发送给任务重映射单元。
5)通道控制单元控制任务重映射单元以输出节点为最小单元,收集汇合线性计算单元的计算结果,并将计算结果打包发给任意分配给当前通道的处于空闲状态的非线性计算单元。由于同一个输出节点的计算可能由多个线性计算单元完成,任务重映射单元应负责将多个计算结果比较得到最大值或累加除以运算核大小得到平均值。
6)非线性计算单元计算(如果需要)完成后将计算结果发送给任务收集单元。
7)通道控制单元控制任务收集单元收集非线性计算单元的计算结果并发送给写回单元。
8)如果当前“层”是输出层,通道控制单元控制写回单元将计算结果写回外部存储器目标地址;否则,写回缓存中对应位置。
2.2DNN池化层指令执行流程
1)通道控制单元向主控制单元返回当前“层”的类型和规模(总结点数)并申请硬件资源。
2)如果当前“层”为输入层,通道控制单元根据数据地址控制读取单元读取数据,并缓存在主缓存的固定缓存的区域1中,并设置区域1为工作区域,另一区域为缓存区域;否则设置当前工作区域为缓存区域,当前缓存区域为工作区域。
3)通道控制单元控制任务分发单元读取主缓存中的数据,并打包发给任意分配给当前通道的处于空闲状态的线性计算单元。
一个数据分发的过程的例子可以包括:从固定缓存的工作区域中读取第一个输出节点所需的数据并打包发送给一个空闲的线性计算单元(如果数据包过大,可分发给多个线性计算单元),继续读取下一个输出节点所需的数据,打包发送给下一个空闲的线性计算单元。重复以上步骤直到处理完所有数据。
4)线性计算单元计算(累加或比较)完成后将计算结果发送给任务重映射单元。
5)通道控制单元控制任务重映射单元以输出节点为最小单元,收集汇合线性计算单元的计算结果,并将计算结果打包发给任意分配给当前通道的处于空闲状态的非线性计算单元。由于同一个输出节点的计算可能由多个线性计算单元完成,任务重映射单元负责将多个计算结果比较得到最大值或累加除以运算核大小得到平均值。
6)非线性计算单元计算(如果需要)完成后将计算结果发送给任务收集单元。
7)通道控制单元控制任务收集单元收集非线性计算单元的计算结果。如果当前“层”是输出层,任务收集单元将计算结果发送给写回单元;否则任务收集单元将计算结果写入主缓存的固定缓存的缓存区域指定地址。
8)如果当前“层”是输出层,通道控制单元控制写回单元将计算结果写回外部存储器目标地址。
三、分类器层指令执行流程
由于网络类型不同,分类器层指令执行可分为CNN分类器层指令执行流程和DNN分类器层指令执行流程:
3.1CNN分类器层指令执行流程:
1)通道控制单元向主控制单元返回当前“层”的类型和规模(总结点数)并申请硬件资源。
2)通道控制单元根据指令中当前“层”参数地址,控制读取单元读取参数,并缓存在主缓存的固定缓存中。
3)通道控制单元根据数据地址或缓存地址,控制读取单元读取数据,并缓存在主缓存的管道缓存中。
此处以二维图像为例说明数据读取和缓存方式:从数据地址或外部存储器缓存地址读取1至Y行数据并缓存在管道缓存中,Y为分类器层运算核的Y方向尺度。在处理1至Y行数据时,从Y+1行继续逐行读取数据并缓存在管道缓存的最末端。
4)通道控制单元控制任务分发单元读取主缓存中的数据和参数,并打包发给任意分配给当前通道的处于空闲状态的线性计算单元。
此处以二维图像为例说明数据分发过程:从固定缓存中读取运算核参数,从管道缓存中读取1至Y行1至X列数据并打包发送给一个空闲的线性计算单元(如果数据包过大,可分发给多个线性计算单元),继续读取1至Y行2至(X+1)列数据,与运算核参数打包发送给下一个空闲的线性计算单元。处理完1至Y行数据,开始处理2至(Y+1)行数据。重复以上步骤直到处理完所有输入数据。
5)线性计算单元计算(乘加计算)完成后将计算结果发送给任务重映射单元。
6)通道控制单元控制任务重映射单元以输出节点为最小单元,收集汇合线性计算单元的计算结果,并将计算结果打包发给任意分配给当前通道的处于空闲状态的非线性计算单元。由于同一个输出节点的计算可能由多个线性计算单元完成,任务重映射单元负责将多个计算结果累加。
7)非线性计算单元计算(通常sigmoid函数)完成后将计算结果发送给任务收集单元。
8)通道控制单元控制任务收集单元收集非线性计算单元的计算结果并发送给写回单元。
9)如果当前“层”是输出层,通道控制单元控制写回单元将计算结果写回外部存储器目标地址;否则,写回缓存中对应位置。
3.2DNN分类器层指令执行流程:
1)通道控制单元向主控制单元返回当前“层”的类型和规模(总结点数)并申请硬件资源。
2)如果当前“层”为输入层,通道控制单元根据数据地址,控制读取单元读取数据,并缓存在主缓存的固定缓存的区域1中,并设置区域1为工作区域,另一区域为缓存区域。如果当前“层”为非输入层,设置当前工作区域为缓存区域,当前缓存区域为工作区域。
3)通道控制单元根据参数地址,控制读取单元读取当前输出节点所需的参数,并缓存在主缓存的管道缓存中。在后续处理当前输出节点时,读取单元可同时读取下一个输出节点所需的参数。
4)通道控制单元控制任务分发单元读取主缓存中的数据和参数,并打包发给任意分配给当前通道的处于空闲状态的线性计算单元(如果数据包过大,可分发给多个线性计算单元)。
5)线性计算单元计算(乘加计算)完成后将计算结果发送给任务重映射单元。
6)通道控制单元控制任务重映射单元以输出节点为最小单元,收集汇合线性计算单元的计算结果,并将计算结果打包发给任意分配给当前通道的处于空闲状态的非线性计算单元。由于同一个输出节点的计算可能由多个线性计算单元完成,任务重映射单元负责将多个计算结果累加。
7)非线性计算单元计算(通常sigmoid函数)完成后将计算结果发送给任务收集单元。
8)通道控制单元控制任务收集单元收集非线性计算单元的计算结果,如果当前“层”是输出层,任务收集单元将计算结果发送给写回单元;否则任务收集单元将计算结果写入主缓存的固定缓存的缓存区域指定地址。
9)如果当前“层”是输出层,通道控制单元控制写回单元将计算结果写回外部存储器目标地址。
本发明的实施方式中,指令的一种可选格式可参见表19。表中每一行表示32比特信息。表中斜体部分可重复,应根据网络的“层”数逐层指定相应信息。每个指令可完成一次CNN或DNN推理计算,多个指令可组成指令流用于完成多个任务。如果是CNN推理计算,用户应在存储器中开辟一块区域用于缓存网络每一“层”的计算结果。
表19指令格式
对表19中各区域的说明如下:
SOS:指令流开始标志(Start of stream)。
EOS:指令流结束标志(End of stream),EOS有效的指令执行完成后通道将暂停。
SIC:指令完成后将通道暂停(Stop if complete)。
IIC:指令完成后产生中断(Interrupt if complete)。
NET_TYPE:神经网络类型,0x0表示CNN,0x1表示DNN。
DESTINATION ADDRESS HIGH:计算结果写回地址高32位。
DESTINATION ADDRESS LOW:计算结果写回地址低32位。
BUFFER ADDRESS HIGH:外部存储器缓存地址高32位。(适用于CNN)
BUFFER ADDRESS LOW:外部存储器缓存地址低32位。(适用于CNN)
INPUT NODE NUMBER:网络输入节点数目。
NODE DATA ADDRESS HIGH:输入数据读取地址高32位。
NODE DATA ADDRESS LOW:输入数据读取地址低32位。
LAYER NUMBER HIGH:网络“层”数(深度)高32位。
LAYER NUMBER LOW:网络“层”数(深度)低32位。
LAYER TYPE:当前“层”类型,0x0表示卷积层,0x1表示池化层,0x2表示分类器层。
NUMBER OF INPUT FEATURE:输入特征映射的数目。
LINEAR FUNCTION:当前“层”线性运算类型,0x0表示乘加,0x1表示累加。(该项可根据实际需求定义)
NON-LINEAR FUNCTION:当前“层”线性运算类型,0x0表示sigmoid函数,0x1表示tanh函数。(该项可根据实际需求定义)
NUMBER OF OUTPUT FEATURE:输出特征映射的数目。
LAYER NODE NUMBER:当前“层”中输出特征映射中的节点数。
X SIZE OF CORE:运算核的X方向大小。(适用于池化层)
Y SIZE OF CORE:运算核的Y方向大小。(适用于池化层)
LAYER WEIGHT ADDRESS HIGH:当前“层”输入参数读取地址高32位。(适用于卷积层和分类器层)
LAYER WEIGHT ADDRESS LOW:当前“层”输入参数读取地址低32位。(适用于卷积层和分类器层)
本发明的实施方式中,数据的一种可选格式可参见表20中。表中每一行表示32比特信息。
表20数据格式
NUMBER OF INPUT NODE
SIZE OF DATA
DATA 1
DATA 2
……
对表20中各区域的说明如下:
NUMBER OF INPUT NODE:输入数据节点总数。
SIZE OF DATA:每个节点数据所占比特位宽。
DATA1:节点1数据。(数据可占用多行,由SIZE OF DATA决定)
DATA2:节点2数据。(数据可占用多行,由SIZE OF DATA决定)
本发明的实施方式中,一种CNN参数的可选格式可参见表21中。表中每一行表示32比特信息。
表21CNN参数格式
对表21中各区域的说明如下:
NUMBER OF OUTPUT FEATURE MAP:输出特征映射数目。(对于分类器层,该项目应设为1)
SIZE OF PARAMETER:每个参数所占比特位宽。
INDEX OF OUTPUT FEATURE MAP:输出特征映射索引。
NUMBER OF PARAMETER OF OUTPUT FEATURE MAP:输出特征映射中的参数数目。
X INDEX OF CORE:运算核参数X索引。
Y INDEX OF CORE:运算核参数Y索引。
Z INDEX OF CORE:运算核参数Z索引。
PARAMETER:参数值。(参数可占用多行,由SIZE OF PARAMETER决定)
本发明的实施方式中,一种DNN参数的可选格式可参见表22。表中每一行表示32比特信息。
表22DNN参数格式
对表22中各区域的说明如下:
NUMBER OF OUTPUT FEATURE MAP:输出特征映射数目。
SIZE OF PARAMETER:每个参数所占比特位宽。
INDEX OF OUTPUT FEATURE MAP:输出特征映射索引。
NUMBER OF OUTPUT NODE:输出节点数目。
IDNEX OF OUTPUT NODE:输出节点索引。
NUMBER OF PARAMETER OF NODE:输出节点对应的参数值数目。
INDEX OF INPUT FEATURE MAP:参数值对应的输入特征映射索引。
NUMBER OF PARAMETER OF INPUT FEATURE MAP:参数值对应的输入特征映射中参数数目。
INDEX OF INPUT NODE:参数值对应的输入节点索引。
PARAMETER:参数值。(参数可占用多行,由SIZE OF PARAMETER决定)
本发明的实施方式中,推理单元内部传输的数据包包头的一种可选格式可参见表23。表中每一行表示32比特信息。
表23JDU/JRU/JCU数据包包头格式
对表23中各区域的说明如下:
LAYER TYPE:当前“层”类型,0x0表示卷积层,0x1表示池化层,0x2表示分类器层。
LINEAR FUNCTION:当前“层”线性运算类型,0x0表示乘加,0x1表示累加。(该项可根据实际需求定义)
NON-LINEAR FUNCTION:当前“层”线性运算类型,0x0表示sigmoid函数,0x1表示tanh函数。(该项可根据实际需求定义)
INDEX OF CHANNEL:执行指令的通道号(用户标识)。
PACKET LENGTH:数据包总长度,以字节为单位。
DESTINATION ADDRESS HIGH:数据写回目标地址高32位。
DESTINATION ADDRESS LOW:数据写回目标地址低32位。
TOTAL COMPUTE NUMBER:目标地址所需的总计算数目。
CURRENT COMPUTE NUMBER:当前数据包完成的计算数目。
本发明实施方式的一种应用场景是在服务器芯片上实现CNN和DNN的推理运算加速,具体实施可采用ASIC或FPGA。
本发明实施方式实现了多任务多用户并行计算,能够对不同的用户设定不同的安全权限、分配不同的计算资源,不同任务可独立管理,适用于云计算、虚拟化等应用。具有高计算性能、低功耗、动态可配置、易于扩展、易于移植、高安全性等特性。
上文描述了本发明实施方式提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。另外,上文一些步骤和说明虽然描述了执行这些步骤和说明的逻辑电路单元,但这些描述均是可选示例,本发明实施例完全可以在处理器中设计相应的逻辑来执行这些步骤和说明,而不限于由上文描述的逻辑电路单元来执行这些步骤和说明。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (21)

1.一种机器学习推理协处理器,其特征在于,包括:
推理单元,用于读取任务指令、数据和参数并进行计算,以实现与所述任务指令相应的推理运算;
控制单元,包括主控制单元和若干通道控制单元;
其中,所述主控制单元用于实现对所述机器学习推理协处理器的全局控制;所述若干通道控制单元中各通道控制单元用于根据所述任务指令分别控制所述推理单元中与其对应的通道实现对单一任务或用户的响应。
2.如权利要求1所述的机器学习推理协处理器,其特征在于,所述推理单元包括若干数据管控逻辑单元和若干数据处理逻辑单元;其中,各通道的数据管控逻辑单元具有与之对应的通道控制单元;所述数据处理逻辑单元用于根据所述通道控制单元向主控制单元的申请,与数据管控逻辑单元配合,在所述通道控制单元的控制下实现推理运算。
3.如权利要求2所述的机器学习推理协处理器,其特征在于,所述若干数据管控逻辑单元共享所述若干数据处理逻辑单元。
4.如权利要求2所述的机器学习推理协处理器,其特征在于,所述各数据处理逻辑单元包括线性计算单元和非线性计算单元。
5.如权利要求4所述的机器学习推理协处理器,其特征在于,所述各数据管控逻辑单元包括:用于读取任务指令、数据和参数的读取单元、用于缓存所述数据和参数的主缓存、用于将所述主缓存中的数据和参数分发到线性计算单元的任务分发单元、用于将所述线性计算单元的计算结果分发到非线性计算单元的任务重映射单元、用于收集所述非线性计算单元的计算结果的任务收集单元和用于将来自任务收集单元的计算结果对外输出的写回单元。
6.如权利要求5所述的机器学习推理协处理器,其特征在于,所述主缓存包括固定缓存和管道缓存,用于实现参数和数据的分别独立缓存。
7.如权利要求6所述的机器学习推理协处理器,其特征在于,所述主缓存还包括路由单元和用于实现所述主缓存内部控制的主缓存内部控制单元;所述路由单元耦接所述读取单元、任务分发单元、任务收集单元和固定缓存、管道缓存。
8.如权利要求5所述的机器学习推理协处理器,其特征在于,所述读取单元包括:第一通用总线接口、耦接所述第一通用总线接口和所述通道控制单元的指令读取单元、耦接所述第一通用总线接口和所述主缓存的参数/数据读取单元、用于实现所述读取单元内部控制的读取内部控制单元。
9.如权利要求5所述的机器学习推理协处理器,其特征在于,所述任务分发单元包括:任务分发内部控制单元、用于在所述任务分发内部控制单元控制下在所属从所述主缓存读取数据和参数并组成数据包的数据处理单元、用于将所述数据包传送至所述任务分发内部控制单元选择的线性计算单元的第一输出互联单元。
10.如权利要求5所述的机器学习推理协处理器,其特征在于,所述任务重映射单元包括:第一输入互联单元、第二输出互联单元、任务重映射内部控制单元、用于在所述任务重映射内部控制单元控制下通过所述输入互联单元收集所述线性计算单元所发送数据并对所述数据进行运算的第一数据收集单元、用于将所述第一数据收集单元处理完的数据组成数据包并通过所述输出互联单元发送至所述任务重映射内部控制单元选择的非线性计算单元的数据分发单元。
11.如权利要求5所述的机器学习推理协处理器,其特征在于,所述任务收集单元包括:耦接所述非线性计算单元的第二输入互联单元、耦接所述第二输入互联单元、所述主缓存和所述写回单元的第二收据收集单元、用于实现所述任务收集单元内部控制的任务收集内部控制单元。
12.如权利要求5所述的机器学习推理协处理器,其特征在于,所述写回单元包括:第二通用总线接口、耦接所述第二通用总线接口的数据写回单元、用于实现所述写回单元内部控制的写回内部控制单元。
13.如权利要求5所述的机器学习推理协处理器,其特征在于,所述线性计算单元包括依次耦接的第一数据输入缓存、线性计算核和第一数据输出缓存。
14.如权利要求5所述的机器学习推理协处理器,其特征在于,所述非线性计算单元包括依次耦接的第二数据输入缓存、非线性计算核和第二数据输出缓存。
15.如权利要求1所述的机器学习推理协处理器,其特征在于,所述主控制单元包括微处理器、存储器、主寄存器、安全组件和资源管理组件;其中,所述微处理器和主寄存器配合用于实现对所述机器学习推理协处理器的动态配置;所述微处理器和安全组件配合用于实现针对所述动态配置的安全策略,并监控违反安全策略的事件;所述微处理器和资源管理组件配合用于实现所述推理单元的计算资源在各通道间的动态分配。
16.如权利要求15所述的机器学习推理协处理器,其特征在于,所述主寄存器包括计算资源可用上限寄存器、通道使能寄存器、若干配置队列寄存器;各配置队列寄存器分别用于寄存所对应通道的配置信息。
17.如权利要求1所述的机器学习推理协处理器,其特征在于,所述各通道控制单元包括:通道主控逻辑单元、通道寄存器和通道数据控制单元;其中,所述通道主控逻辑单元用于分解当前任务并配置所述通道数据控制单元,以及向所述主控制单元申请所述推理单元的计算资源;所述通道寄存器用于寄存控制所需信息;所述通道数据控制单元用于根据所述通道主控逻辑单元的配置控制所述推理单元。
18.如权利要求2所述的机器学习推理协处理器,其特征在于,所述各通道控制单元包括:通道主控逻辑单元、通道寄存器和数据管控逻辑控制单元;其中,所述通道主控逻辑单元用于分解当前任务并配置所述数据管控逻辑控制单元,以及向所述主控制单元申请所述推理单元的计算资源;所述通道寄存器用于寄存控制所需信息;所述数据管控逻辑控制单元用于根据所述通道主控逻辑单元的配置控制所述数据管控逻辑单元。
19.如权利要求5所述的机器学习推理协处理器,其特征在于,所述各通道控制单元包括:通道主控逻辑单元、通道寄存器、用于控制读取单元的读取控制单元、用于控制主缓存的主缓存控制单元、用于控制任务分发单元的任务分发控制单元、用于控制任务重映射单元的任务重映射控制单元、用于控制任务收集单元的任务收集控制单元和用于控制写回单元的写回控制单元;其中,所述通道主控逻辑单元用于分解当前任务并配置所述读取控制单元、主缓存控制单元、任务分发控制单元、任务重映射控制单元、任务收集控制单元和写回控制单元,以及向所述主控制单元申请所述推理单元的计算资源;所述通道寄存器用于寄存控制所需信息。
20.如权利要求17至19任一项所述的机器学习推理协处理器,其特征在于,所述通道寄存器包括:控制队列寄存器、指令地址寄存器、状态队列寄存器、中断使能寄存器、中断状态寄存器、指令状态寄存器。
21.如权利要求20所述的机器学习推理协处理器,其特征在于,所述指令状态寄存器包括:当前指令序号寄存器、当前指令层序号寄存器。
CN201811559761.5A 2018-12-19 2018-12-19 一种机器学习推理协处理器 Active CN109814927B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811559761.5A CN109814927B (zh) 2018-12-19 2018-12-19 一种机器学习推理协处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811559761.5A CN109814927B (zh) 2018-12-19 2018-12-19 一种机器学习推理协处理器

Publications (2)

Publication Number Publication Date
CN109814927A true CN109814927A (zh) 2019-05-28
CN109814927B CN109814927B (zh) 2021-01-29

Family

ID=66602939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811559761.5A Active CN109814927B (zh) 2018-12-19 2018-12-19 一种机器学习推理协处理器

Country Status (1)

Country Link
CN (1) CN109814927B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110221985A (zh) * 2019-06-06 2019-09-10 成都海光集成电路设计有限公司 跨芯片维护缓存一致性策略的装置与方法
CN115016847A (zh) * 2022-08-08 2022-09-06 沐曦集成电路(上海)有限公司 提高流水线吞吐的方法、装置及电子设备
CN116668230A (zh) * 2023-06-20 2023-08-29 西门子交通技术(北京)有限公司 云主机及多路比较方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1397888A (zh) * 2001-07-14 2003-02-19 三星电子株式会社 多通道图像处理器及使用多通道图像处理器的安全系统
US7266677B1 (en) * 2003-09-25 2007-09-04 Rockwell Automation Technologies, Inc. Application modifier based on operating environment parameters
US20160335119A1 (en) * 2015-05-12 2016-11-17 minds.ai inc Batch-based neural network system
CN106203621A (zh) * 2016-07-11 2016-12-07 姚颂 用于卷积神经网络计算的处理器
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质
CN108681984A (zh) * 2018-07-26 2018-10-19 珠海市微半导体有限公司 一种3*3卷积算法的加速电路
CN108805266A (zh) * 2018-05-21 2018-11-13 南京大学 一种可重构cnn高并发卷积加速器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1397888A (zh) * 2001-07-14 2003-02-19 三星电子株式会社 多通道图像处理器及使用多通道图像处理器的安全系统
US7266677B1 (en) * 2003-09-25 2007-09-04 Rockwell Automation Technologies, Inc. Application modifier based on operating environment parameters
US20160335119A1 (en) * 2015-05-12 2016-11-17 minds.ai inc Batch-based neural network system
CN106203621A (zh) * 2016-07-11 2016-12-07 姚颂 用于卷积神经网络计算的处理器
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质
CN108805266A (zh) * 2018-05-21 2018-11-13 南京大学 一种可重构cnn高并发卷积加速器
CN108681984A (zh) * 2018-07-26 2018-10-19 珠海市微半导体有限公司 一种3*3卷积算法的加速电路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张函: "基于GPU的深度神经网络模型并行及优化方法研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110221985A (zh) * 2019-06-06 2019-09-10 成都海光集成电路设计有限公司 跨芯片维护缓存一致性策略的装置与方法
CN115016847A (zh) * 2022-08-08 2022-09-06 沐曦集成电路(上海)有限公司 提高流水线吞吐的方法、装置及电子设备
CN116668230A (zh) * 2023-06-20 2023-08-29 西门子交通技术(北京)有限公司 云主机及多路比较方法

Also Published As

Publication number Publication date
CN109814927B (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
CN104881325B (zh) 一种资源调度方法和资源调度系统
CN106030562B (zh) 网络处理器中的分组整形
CN102156665B (zh) 一种虚拟化系统竞争资源差异化服务方法
CN109814927A (zh) 一种机器学习推理协处理器
CN110334799A (zh) 基于存算一体的神经网络推理与训练加速器及其运行方法
CN107710237A (zh) 服务器上深度神经网络划分
CN109684074A (zh) 物理机资源分配方法及终端设备
Kapre et al. Hoplite: A deflection-routed directional torus noc for fpgas
CN104636201B (zh) 一种虚拟i/o 调度方法和系统
CN110058932A (zh) 一种用于数据流驱动计算的存储方法和存储系统
DE102008022080A1 (de) Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren
CN105373432B (zh) 一种基于虚拟资源状态预测的云计算资源调度方法
CN105892955B (zh) 一种管理存储系统的方法及设备
CN103649932B (zh) 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
CN103116517B (zh) 虚拟化平台下i/o通道的调整方法和调整装置
US20150261682A1 (en) Active memory processor system
CN108694089A (zh) 使用非贪婪调度算法的并行计算架构
CN108959111A (zh) 数据存储装置和用于流管理的方法
Hojabr et al. Customizing clos network-on-chip for neural networks
CN106612236A (zh) 众核网络处理器及其微引擎的报文调度方法、系统
CN107111557A (zh) 在共享高速缓存存储器系统中提供共享高速缓存存储器分配控制
TW202219761A (zh) 用於封閉迴路動態資源分配控制架構之設備及方法
KR20220001418A (ko) 성능 마커들을 사용하는 리소스 할당 제어 프레임워크를 위한 장치 및 방법
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
Dubey et al. A hybrid multi-faceted task scheduling algorithm for cloud computing environment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant