一种用于CNN加速的OPU指令集定义方法与流程

文档序号:18266329发布日期:2019-07-27 09:11阅读:725来源:国知局
一种用于CNN加速的OPU指令集定义方法与流程
本发明涉及cnn加速器指令集定义方法领域,尤其是一种用于cnn加速的opu指令集定义方法。
背景技术
:深度卷积神经网络(cnns)在各种应用中表现出很高的准确性,如视觉对象识别,语音识别和物体检测等。然而,它在准确性上的突破在于高计算成本的代价,需要通过计算集群,gpu和fpga来推动加速。其中,fpga加速器具有能量效率高,灵活性好,计算能力强等优点,特别是在智能手机上的语音识别和视觉对象识别等边缘设备上的cnn深度应用中脱颖而出;其通常涉及架构探索和优化,rtl编程,硬件实现和软件-硬件接口开发,随着发展人们对fpgacnn(卷积神经网络)加速的自动编译器进行了深入的研究,其可配置平台提供丰富的并行计算资源和高能效,使其成为边缘计算和数据中心cnn加速的理想选择。但随着dnn(深度神经网络)算法在各种更复杂的计算机视觉任务中的发展,如人脸识别,车牌识别,姿态识别等,多种dnn的级联结构被广泛应用以获得更好的性能,这些新的应用场景要求不同网络的顺序执行,因此需要不断重新配置fpga器件,带来耗时长的问题;另一方面,客户网络架构中的每次新的更新都可以导致rtl代码的再生和整个实现过程,耗时更长。近年来,能够快速将cnn部署到fpga的自动加速器发生器成为另一个焦点,现有技术中有研究者开发了deepweaver,它根据设计规划者提供的资源分配和硬件组织将cnn算法映射到手工优化设计模板;还有人提出了一个基于rtl模块库的编译器,它由多个优化的手工编码verilog模板组成,描述了不同类型层的计算和数据流;与定制设计的加速器相比,这两项工作都获得了可比的性能;还有研究者提供了一个基于hls的编译器,主要关注通过内存访问重组进行的带宽优化;还有研究者提出了一种收缩阵列架构,以实现更高的fpga运行频率。但是现有的fpga加速工作旨在为不同的cnn生成特定的单独加速器,这保证了基于rtl或基于hls-rtl的模板的合理高性能,但在调整目标网络的情况下硬件升级复杂度高。因此,为实现不需要对单独网络产生特定硬件描述代码,不涉及对fpga进行重新烧录,全部部署流程依靠指令配置完成,通过指令配置不同目标网络配置,不重构fpga加速器,提出全新的cnn加速系统,定义opu(overlayprocessorunit)指令集,编译器编译定义的指令集产生指令序列,opu执行编译后的指令实现cnn加速,为实现上述cnn加速需要考虑如何定义指令实现将不同结构的网络映射重组到具体结构上,使得实现指令控制的处理器普适性好。另一方面,当涉及外部存储器使用时,存储器读取和写入操作的循环模拟准确度不高,因为在外部存储器使用期间可能发生额外的刷新时间和其他开销;如果在解码后立即执行指令,则操作顺序只能由指令序列的顺序控制;如果没有精确模拟操作周期,控制并行执行的操作的起点就会变得棘手;同时,主要业务的起始条件变化有限,通常在前几个步骤达到某状态后被触发,导致实现指令执行时间不确定性大,因此,需要一种指令集定义方法定义指令克服以上问题,提供opu指令集将不同结构的网络映射重组到具体结构,优化指令控制的处理器的普适性,能实现根据指令完成不同目标网络的配置,通过opu实现通用cnn加速。技术实现要素:本发明的目的在于:本发明提供了一种用于cnn加速的opu指令集定义方法,提供将不同结构的网络映射重组到具体结构的opu指令集,优化指令控制的处理器的普适性,达到不重构fpga实现不同网络的目的。本发明采用的技术方案如下:一种用于cnn加速的opu指令集定义方法,包括如下步骤:包括定义有条件指令、定义无条件指令和设置指令颗粒度;定义有条件指令包括如下步骤:构建有条件指令,有条件指令包括读存储指令、写存储指令、数据抓取指令、数据后处理指令和计算指令;设置有条件指令的寄存器和执行方式,执行方式为满足硬件写入的触发条件后执行,寄存器包括参数寄存器和触发条件寄存器;设置有条件指令的参数配置方式,配置方式为根据无条件指令进行参数配置;定义无条件指令包括如下步骤:定义无条件指令的参数;定义无条件指令参数的执行方式,执行方式为被读取后直接执行;设置指令颗粒度包括如下步骤:统计cnn网络和加速需求;根据统计结果和选择的并行输入及输出通道决定计算模式,并设置指令颗粒度。优选地,所述读存储指令包括按模式a1进行读存储操作和按模式a2进行读存储操作,其颗粒度为每次读入n个数,n>1;模式a1:从指定地址开始向后读n个数;模式a2:根据地址流读n个数,其中,地址流中地址不连续,三种读数后操作:1,读取后无操作;2,读取后拼接为指定长度;3,读取后拆分为指定长度;四个读数操作后片上存储位置:特征图存储模块,内积参数存储模块,偏置参数存储模块,指令存储模块;所述读存储操作指令可配参数包括起始地址、操作数数量、读取后处理模式和片上存储位置。优选地,所述写存储指令包括按模式b1进行写存储操作和按模式b2进行写存储操作,其颗粒度为每次写出n个数,n>1;模式b1:从指定地址开始向后写n个数;模式b2:根据目标地址流写n个数,其中,地址流中地址不连续;所述写存储操作指令可配参数包括起始地址和操作数数量。优选地,所述数据抓取指令包括根据不同读取数据模式和数据重组排列模式从片上特征图存储器和内积参数存储器读取数据操作和对读取的数据进行重组排列操作,其颗粒度为同时操作64个输入数据;数据抓取指令可配参数包括读特征图存储器和读内积参数存储器,其中,读特征图存储器包括读数地址约束即最小地址和最大地址、读数步长和重排模式;读内积参数存储器包括读数地址约束和读数模式。优选地,所述数据后处理指令包括池化、激活、定点切割、取整、向量对位相加的一种操作或者多种操作,其颗粒度为每次操作64的倍数个数据;数据后处理操作指令可配参数包括池化类型、池化尺寸、激活种类和定点切割位置。优选地,所述计算指令包括根据不同长度向量调配进行向量内积操作,其颗粒度为32,向量内积操作采用的计算基本单元为两个长度为32的向量内积模块,计算操作指令可调配参数包括输出结果数量。优选地,所述无条件指令提供参数更新,参数包括片上存储特征图模块长,宽,通道数、当前层输入长,宽、当前层输入通道数,输出通道数、读存储操作起始地址、读操作模式选择、写存储操作起始地址、写操作模式选择、数据抓取模式及约束、设置计算模式、设置池化操作相关参数、设置激活操作相关参数和设置数据移位,剪切取整相关操作。优选地,还包括设置指令序列定义方式,具体为:指令序列若为连续的多条重复指令,则设置单一一条指令,该指令会被反复执行,直至触发条件寄存器和参数寄存器中内容被更新。优选地,还包括定义指令长度,指令长度为统一长度。优选地,并行输入及输出通道对应计算模式的最小单元为32的向量内积。综上所述,由于采用了上述技术方案,本发明的有益效果是:1.本发明通过定义有条件指令、定义无条件指令和设置指令颗粒度,无条件指令为有条件指令提供配置参数,有条件指令设置触发条件,触发条件在硬件中硬写入,有条件指令设置对应寄存器,在触发条件满足后执行,无条件指令在被读取后直接执行,替换参数寄存器内容,避免现有操作周期不确定性大导致无法预测指令排序,实现准确预测指令顺序;根据cnn网络、加速需求和选择的并行输入及输出通道确定计算模式,并设置指令颗粒度,实现将不同结构的网络映射重组到具体结构,采用并行计算模式适应不同尺寸的网络的内核的大小,解决了指令集对应处理器的普适性,为cnn加速处理器根据指令完成不同目标网络的配置,加快通用cnn加速速度提供适用的opu指令集;2.本发明的有条件指令设置触发条件,避免了现有指令序列完全依靠设置的顺序执行耗时长的缺点,实现存储器读取连续地以相同模式操作,无需按设定的固定间隔顺序执行,大大缩短指令序列的长度,利于通过指令快速配置实现不同目标网络的加速;3.根据统计结果和选择的并行输入及输出通道决定计算模式,并设置指令颗粒度,可通过参数调节并行部分输入通道以同时计算更多输出通道,或并行更多输入通道以减少计算轮数,输入通道和输出通道在普遍cnn结构中为32的倍数,选取32作为基础单元可有效保证计算单元的最大利用率;4.本发明的无条件指令提供参数更新,更新频率同步的参数被归类到同一条无条件指令中以充分利用指令所有比特位,减少总指令调用条数;5.本发明有连续多条重复指令时只设置单一一条指令,该指令被反复执行,直至触发条件寄存器和参数寄存器保持内容直到被更新,利于通过指令快速配置实现不同目标网络的加速。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本发明的指令集定义方法流程图;图2为本发明的有条件指令触发运行示意图;图3为本发明的并行计算模式示意图;图4为本发明的指令集示意图;图5为本发明的基于指令集的opu结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以下结合实施例对本发明的特征和性能作进一步的详细描述。实施例1一种用于cnn加速的opu指令集定义方法,包括定义有条件指令、定义无条件指令和设置指令颗粒度;将定义的指令集用于cnn加速时,需要定义指令的指令类型、每种指令对应的操作、常规参数定义和指令颗粒度,常规参数定义包括指令长度和指令序列。opu指令运行时包括步骤1:读取指令块(指令集为所有指令的集合列表;指令块为一组连续指令的指令,用于执行一个网络的指令包括多个指令块);步骤2:获取指令块中的无条件指令直接执行,解码出无条件指令中包含的参数写入相应寄存器;获取指令块中的有条件指令,根据有条件指令设置触发条件后跳至步骤3;步骤3:判断触发条件是否满足,若满足,则执行有条件指令;若不满足,则不执行指令;步骤4:判断指令中包含的下一个指令块的读取指令是否满足触发条件,若满足,则返回步骤1继续执行指令;否则寄存器参数和当前条件指令设置的触发条件保持不变,直至满足触发条件。本申请定义的指令集用于基于opu的cnn加速系统,opu结构示意图如图5所示,opu用fpga或者asic实现,根据定义的指令生成最终运行指令,opu运行指令即可实现不同目标cnn网络的加速,采用的技术手段为:定义有条件指令、定义无条件指令和设置指令颗粒度,如图1所示的流程图,有条件指令定义其组成,有条件指令包括六类指令;设置有条件指令的寄存器和执行方式,执行方式为满足硬件写入的触发条件后执行,寄存器包括参数寄存器和触发条件寄存器;设置有条件指令的参数配置方式,配置方式为根据无条件指令进行参数配置;定义无条件指令包括定义其参数、定义其执行方式即直接执行;指令长度定义为统一长度,指令集具有图4所示的结构;指令颗粒度的设置:统计cnn网络和加速需求;根据统计结果和选择的并行输入及输出通道决定计算模式,并设置指令颗粒度。opu指令集包括有条件指令即c型指令和无条件指令即u型指令,形成的指令序列如图4所示;其中,有条件指令包括的组成如表1所示:表1指令名指令功能r读存储指令w写存储指令f数据抓取指令c计算指令p数据后处理指令每类指令的指令颗粒度根据cnn网络结构和加速需求设定:所述读存储指令,根据cnn加速特点设置其颗粒度为每次读入n个数,n>1;所述写存储指令,根据cnn加速特点设置其颗粒度为每次写出n个数,n>1;所述数据抓取指令,根据cnn网络的结构,其颗粒度为64的倍数,即同时操作64个输入数据;所述数据后处理指令,其颗粒度为每次操作64的倍数个数据;所述计算指令,因网络输入和输出通道乘积为32的倍数,因此其颗粒度为32。无条件指令定义的参数如表2所示:表2计算模式为并行输入及输出通道,可通过参数调节并行部分输入通道以同时计算更多输出通道,或并行更多输入通道以减少计算轮数,而输入通道和输出通道在普遍cnn结构中为32的倍数,本实施例选并行输入及输出通道计算模式中最小单元为32的向量内积,可有效保证计算单元的最大利用率。其中,指令集用于cnn加速时,并行输入及输出通道计算模式示意图如图3所示,在每个时钟周期,读取一个大小为1*1、深度为ics输入通道的片段以及相应的内核元素,这些元素符合自然数据存储模式,只需要很小的带宽。在输入通道(ics)和输出通道(ocs,涉及的内核集的数量)内实现并行性。图3(c)进一步示出了计算过程。对于第0轮周期0,读取位置(0,0)的输入通道切片,下一个周期我们跳跃步幅x并读取位置(0,2),操作读取继续,直到对应于内核位置(0,0)的所有像素为计算。然后我们进入第1轮并从位置(0,1)开始读取所有像素对应于内核位置(0,1)。为了用oc集内核计算大小为in*im*ic的块数据,需要kx*ky*(ic/ics)*(oc/ocs)轮。采用上述计算模式可以针对任何内核大小或步长的统一数据,极大地简化了计算之前的数据管理,以更少的资源消耗实现更高的效率,适应各种不同尺寸的网络的内核大小。综上,因现有的fpga加速工作旨在为不同的cnn生成特定的单独加速器,本申请为实现不重构fpga实现不同网络,设置加速处理器,控制本申请定义的指令,本申请定义的opu指令集中的指令不存在技术启示,因为其与现有技术中fpga加速系统的硬件、系统和覆盖范围均不一样;本发明根据cnn网络、加速需求和选择的并行输入及输出通道确定计算模式并设置指令颗粒度,实现将不同结构的网络映射重组到具体结构,适应不同尺寸的网络的内核的大小,解决了指令集对应处理器的普适性;定义有条件指令和无条件指令,无条件指令为有条件指令提供配置参数,有条件指令设置触发条件,触发条件在硬件中硬写入,有条件指令设置对应寄存器,在触发条件满足后执行,无条件指令在被读取后直接执行,替换参数寄存器内容,实现根据触发条件运行有条件指令,无条件指令为有条件指令提供配置参数,指令执行顺序准确,不受其他因素影响,克服cnn加速系统中存在指令执行时间不确定性大,无法准确预测指令顺序的问题,本发明提供一种opu指令集,将不同结构的网络映射重组到具体结构的opu指令集,指令集和相应的处理器opu可用fpga或者asic实现,提高指令控制的处理器的普适性,opu可以加速不同的目标cnn网络,避免了硬件重构。实施例2基于实施例1,本申请的有条件指令中的六种指令:包括读存储指令、写存储指令、数据抓取指令、数据后处理指令和计算指令;有条件指令在满足硬件写入的触发条件后执行,有条件指令寄存器包括参数寄存器和触发条件寄存器;有条件指令根据无条件指令进行参数配置。读存储指令包括按模式a1进行读存储操作和按模式a2进行读存储操作;读存储操作指令可配参数包括起始地址、操作数数量、读取后处理模式和片上存储位置。模式a1:从指定地址开始向后读n个数,n为正整数;模式a2:根据地址流读n个数,其中,地址流中地址不连续,三种读数后操作:1,读取后无操作;2,读取后拼接为指定长度;3,读取后拆分为指定长度;四个读数操作后片上存储位置:特征图存储模块,内积参数存储模块,偏置参数存储模块,指令存储模块;写存储指令包括按模式b1进行写存储操作和按模式b2进行写存储操作;写存储操作指令可配参数包括起始地址和操作数数量。模式b1:从指定地址开始向后写n个数;模式b2:根据目标地址流写n个数,其中,地址流中地址不连续;数据抓取指令包括根据不同读取数据模式和数据重组排列模式从片上特征图存储器和内积参数存储器读取数据操作和对读取的数据进行重组排列操作;数据抓取和重组操作指令可配参数包括读特征图存储器和读内积参数存储器,其中,读特征图存储器包括读数地址约束即最小地址和最大地址、读数步长和重排模式;读内积参数存储器包括读数地址约束和读数模式。数据后处理指令包括池化、激活、定点切割、取整、向量对位相加的一种操作或者多种操作;数据后处理操作指令可配参数包括池化类型、池化尺寸、激活种类和定点切割位置。计算指令包括根据不同长度向量调配进行向量内积操作,向量内积操作采用的计算基本单元为两个长度为32(32即为向量的长度,包含32个8bit数据)的向量内积模块,计算操作指令可调配参数包括输出结果数量。有条件指令设置触发条件,触发条件在硬件中硬写入,有条件指令设置对应寄存器,在触发条件满足后执行读存储、写存储、数据抓取、数据后处理和计算,将指令进行编译后,opu根据gui发送的开始信号读取所述指令后,按照指令定义的并行计算模式运行指令,完成不同目标网络的加速;触发条件在硬件中硬写入,比如对于存储读取模块指令,共有6种指令触发条件,其中包括1.当上一次存储读取完成并且上一次数据抓取重组完成则触发;2.当上一次数据写存储操作完成则触发;3.当上一次数据后处理操作完成则触发等等;有条件指令设置触发条件,避免了现有指令序列完全依靠设置的顺序执行耗时长的缺点,实现存储器读取连续地以相同模式操作,无需按设定的固定间隔顺序执行,大大缩短指令序列的长度,进一步加快指令运行速度,利于通过指令快速配置实现不同目标网络的加速,如图2所示,对于两个操作即读和写,初始tci设置为t0,在t1触发存储器读取,其从t1-t5执行,用于下一触发条件的tci可以在t1和t5之间的任何时间点更新,存储当前tci,它由新指令更新,在这种情况下,当存储器读取连续地以相同模式操作时,不需要指令(在时间t6和t12,操作由相同的tci触发),这将指令序列缩短超过10x;同时,满足触发条件后执行有条件指令,有条件指令的配置参数由无条件参数指令提供,指令执行准确,避免现有的因不确定性大导致指令暂停的问题。实施例3基于实施例1,用于cnn加速时,指令序列中有多条连续的重复指令的情况,因此定义指令集时定义指令序列的定义方式,具体为:指令序列若为连续的多条重复指令,则只设置单一一条指令,该指令被反复执行直至触发条件寄存器和参数寄存器中内容被更新;有连续多条重复指令时只定义第一条,触发条件寄存器和参数寄存器保持内容直到被更新,利于通过指令快速配置实现不同目标网络的加速。无条件指令中需要定义多种参数,对应的指令长度长,为了缩减指令长度,定义无条件指令参数的统一方式,统一方式为更新频率同步时进行统一,更新频率同步的参数被归类到同一条无条件指令中以充分利用指令所有比特位,减少总指令调用条数,大大缩短指令长度,利于通过指令快速配置实现不同目标网络的加速。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1