一种基于FPGA+NPU架构的混合系统

专利类型 发明公开 法律事件 公开; 实质审查;
专利有效性 实质审查 当前状态 实质审查
申请号 CN202211219965.0 申请日 2022-09-30
公开(公告)号 CN115470164A 公开(公告)日 2022-12-13
申请人 上海安路信息科技股份有限公司; 申请人类型 企业
发明人 王炳松; 第一发明人 王炳松
权利人 上海安路信息科技股份有限公司 权利人类型 企业
当前权利人 上海安路信息科技股份有限公司 当前权利人类型 企业
省份 当前专利权人所在省份:上海市 城市 当前专利权人所在城市:上海市虹口区
具体地址 当前专利权人所在详细地址:上海市虹口区纪念路500号5幢202室 邮编 当前专利权人邮编:200434
主IPC国际分类 G06F13/28 所有IPC国际分类 G06F13/28G06F15/163G06N3/063
专利引用数量 0 专利被引用数量 0
专利权利要求数量 9 专利文献类型 A
专利代理机构 广州三环专利商标代理有限公司 专利代理人 何卿华;
摘要 本 发明 公开了一种基于FPGA+NPU架构的混合系统,混合系统中FPGA的PL部分被设计为实现软核NPU的 算法 ,混合系统包括网络层参数解析模 块 ,配置当前配置参数;参数包计算模块用于得到若干组参数包;参数包选择模块输出一组参数包;读取模块读出特征图FM数据;行数据转换模块将特征图FM数据转换成行数据;算法及算法选择模块包括若干组可添加的算法类型,并选择一组算法类型并输出;回写模块响应DMA写 请求 将数据写入回写地址指引下的 存储器 中。本发明提供一种基于FPGA+NPU架构的混合系统,能使得用户能够在系统中的算法模块添加新的算法进行应用,从而提高了AI算法平台的灵活性和计算性能。
权利要求

1.一种基于FPGA+NPU架构的混合系统,其特征在于,所述混合系统中FPGA的PL部分被设计为实现软核NPU的算法,所述混合系统包括:
网络层参数解析模,用于配置当前NPU网络层寄存器的配置参数,其中,所述配置参数至少包括存储特征图FM的源地址、总长度、算法类型和回写地址;
参数包计算模块,用于根据所述特征图FM的源地址和所述总长度,计算得到含有各特定算法对应的单个AXI4‑MM包的起始地址和长度的若干组参数包;
参数包选择模块,用于根据对应算法的使能信号和当前特征图FM的编号,在各组所述参数包中选择一组输出;
读取模块,用于响应DMA读请求,在输出的所述参数包的指引下,读出特征图FM数据;
行数据转换模块,用于将所述特征图FM数据转换成行数据;
算法及算法选择模块,其包括若干组可添加的算法类型,并用于根据对应算法的使能信号,选择一组所述算法类型,对所述行数据进行处理并输出,得到待回写数据;
回写模块,用于响应DMA写请求,对所述待回写数据进行处理,将其写入所述回写地址指引下的存储器中,直至对实现软核NPU的算法的网络层的处理结束。
2.如权利要求1所述的基于FPGA+NPU架构的混合系统,其特征在于,所述网络层参数解析模块由CPU通过AXI4‑Lite协议配置生效。
3.如权利要求1所述的基于FPGA+NPU架构的混合系统,其特征在于,所述参数包计算模块包括第一参数包计算模组、第二参数包计算单元和第三参数包计算单元;
所述第一参数包计算模组包括Route参数选择单元和第一参数包计算单元,所述Route参数选择单元用于在Route算法对应的配置参数下进行选择输出,将输出结果发送至所述第一参数包计算单元中,以使所述第一参数包计算单元计算得到含有Route算法对应的单个AXI4‑MM包的起始地址和长度的参数包;
所述第二参数包计算单元用于计算得到含有Shortcut算法对应的单个AXI4‑MM包的起始地址和长度的参数包;
所述第三参数包计算单元用于根据存储器中的Activate表,计算得到含有Activate算法对应的单个AXI4‑MM包的起始地址和长度的参数包。
4.如权利要求1所述的基于FPGA+NPU架构的混合系统,其特征在于,所述参数包计算模块被配置为:
以合并后的起始地址作为所述单个AXI4‑MM包的起始地址,以合并后的长度作为所述单个AXI4‑MM包的长度。
5.如权利要求1所述的基于FPGA+NPU架构的混合系统,其特征在于,所述配置参数还包括层起始信号。
6.如权利要求5所述的基于FPGA+NPU架构的混合系统,其特征在于,所述行数据转换模块包括读请求信号产生单元和返回数据转行单元;
所述读请求信号产生单元用于根据所述层起始信号、AXI4‑MM总线发起DMA读请求但尚未返回数据、outstanding地址数量在DMA读请求下的变化,对应产生读请求信号;
所述返回数据转行单元用于根据所述读请求信号,将所述特征图FM数据返回的数据移位,形成行数据,所述行数据包括完整的W×H×C特征图FM数据,其中,W为一行的Byte数,H为一层FM的行数,C为FM的层数。
7.如权利要求1所述的基于FPGA+NPU架构的混合系统,其特征在于,在将所述待回写数据写入所述回写地址下的数据缓存器中时,所述回写模块还被配置为去除所述待回写数据中的行间气泡,使其具有最大突发长度。
8.如权利要求7所述的基于FPGA+NPU架构的混合系统,其特征在于,所述回写模块被配置为:
确定所述待回写数据中当前数据的前一个数据;
对所述当前数据与所述前一个数据进行拼接,将拼接后的有效数据写入所述数据缓存器中;
当所述数据缓存器中的所述有效数据个数达到预设时,读出数据,组成AXI4‑MM写包,发起DMA写操作。
9.如权利要求1所述的基于FPGA+NPU架构的混合系统,其特征在于,所述回写模块还被配置为在最后一个所述DMA写请求响应之后,发出中断请求信号,以使CPU通过AXI4‑Lite发出清除中断信号,对所述中断请求信号清零。

说明书全文

一种基于FPGA+NPU架构的混合系统

技术领域

[0001] 本发明涉及人工智能技术领域,尤其是涉及基于FPGA+NPU架构的混合系统

背景技术

[0002] 随着人工智能的热潮和AI算法的广泛应用,深度学习已成为当前AI研究的重点,在自动驾驶领域,环境感知传感器融合等领域都有所涉及。
[0003] 要想在面对海量数据的并行运算的同时做到高效、可靠,那就意味着承载AI算法的计算平台或系统需要提供优秀的运算性能。NPU芯片实现的算法日新月异,有些算法比较固定,如卷积运算等,但当出现新的突破性算法时,现有的平台或系统无法随之适配前沿的技术,只能重新设计芯片的兼容算法,这一过程耗时较长且成本较高,导致平台或系统的灵活性较差,此外,承载AI算法的计算平台或系统受制于自身架构限制,在面对特定运算时频率较低,因此导致运算能远远达不到智能算法的要求。

发明内容

[0004] 本发明提供一种基于FPGA+NPU架构的混合系统,通过构建各功能模相互配合的系统架构,基于存储和处理一体化的理念,优化总线利用率,使得用户能够在系统中的算法模块添加新的算法进行应用,从而提高了AI算法平台的灵活性和计算性能。
[0005] 为了解决上述技术问题,本发明实施例提供了一种基于FPGA+NPU架构的混合系统,所述混合系统中FPGA的PL部分被设计为实现软核NPU的算法,所述混合系统包括:
[0006] 网络层参数解析模块,用于配置当前NPU网络层寄存器的配置参数,其中,所述配置参数至少包括存储特征图FM的源地址、总长度、算法类型和回写地址;
[0007] 参数包计算模块,用于根据所述特征图FM的源地址和所述总长度,计算得到含有各特定算法对应的单个AXI4‑MM包的起始地址和长度的若干组参数包;
[0008] 参数包选择模块,用于根据对应算法的使能信号和当前特征图FM的编号,在各组所述参数包中选择一组输出;
[0009] 读取模块,用于响应DMA读请求,在输出的所述参数包的指引下,读出特征图FM数据;
[0010] 行数据转换模块,用于将所述特征图FM数据转换成行数据;
[0011] 算法及算法选择模块,其包括若干组可添加的算法类型,并用于根据对应算法的使能信号,选择一组所述算法类型,对所述行数据进行处理并输出,得到待回写数据;
[0012] 回写模块,用于响应DMA写请求,对所述待回写数据进行处理,将其写入所述回写地址指引下的存储器中,直至对实现软核NPU的算法的网络层的处理结束。
[0013] 作为其中一种优选方案,所述网络层参数解析模块由CPU通过AXI4‑Lite协议配置生效。
[0014] 作为其中一种优选方案,所述参数包计算模块包括第一参数包计算模组、第二参数包计算单元和第三参数包计算单元;
[0015] 所述第一参数包计算模组包括Route参数选择单元和第一参数包计算单元,所述Route参数选择单元用于在Route算法对应的配置参数下进行选择输出,将输出结果发送至所述第一参数包计算单元中,以使所述第一参数包计算单元计算得到含有Route算法对应的单个AXI4‑MM包的起始地址和长度的参数包;
[0016] 所述第二参数包计算单元用于计算得到含有Shortcut算法对应的单个AXI4‑MM包的起始地址和长度的参数包;
[0017] 所述第三参数包计算单元用于根据存储器中的Activate表,计算得到含有Activate算法对应的单个AXI4‑MM包的起始地址和长度的参数包。
[0018] 作为其中一种优选方案,所述参数包计算模块被配置为:
[0019] 以合并后的起始地址作为所述单个AXI4‑MM包的起始地址,以合并后的长度作为所述单个AXI4‑MM包的长度。
[0020] 作为其中一种优选方案,所述配置参数还包括层起始信号。
[0021] 作为其中一种优选方案,所述行数据转换模块包括读请求信号产生单元和返回数据转行单元;
[0022] 所述读请求信号产生单元用于根据所述层起始信号、AXI4‑MM总线发起DMA读请求但尚未返回数据、outstanding地址数量在DMA读请求下的变化,对应产生读请求信号;
[0023] 所述返回数据转行单元用于根据所述读请求信号,将所述特征图FM数据返回的数据移位,形成行数据,所述行数据包括完整的W×H×C特征图FM数据,其中,W为一行的Byte数,H为一层FM的行数,C为FM的层数。
[0024] 作为其中一种优选方案,在将所述待回写数据写入所述回写地址下的数据缓存器中时,所述回写模块还被配置为去除所述待回写数据中的行间气泡,使其具有最大突发长度。
[0025] 作为其中一种优选方案,所述回写模块被配置为:
[0026] 确定所述待回写数据中当前数据的前一个数据;
[0027] 对所述当前数据与所述前一个数据进行拼接,将拼接后的有效数据写入所述数据缓存器中;
[0028] 当所述数据缓存器中的所述有效数据个数达到预设时,读出数据,组成AXI4‑MM写包,发起DMA写操作。
[0029] 作为其中一种优选方案,所述回写模块还被配置为在最后一个所述DMA写请求响应之后,发出中断请求信号,以使CPU通过AXI4‑Lite发出清除中断信号,对所述中断请求信号清零。
[0030] 相比于现有技术,本发明实施例的有益效果在于以下所述中的至少一点:
[0031] (1)传统的冯·诺伊曼结构中,存储和处理是分离的,本发明突破了经典的冯·诺伊曼结构的限制,将特征图FM由存储器中读取出,再经过软核NPU的算法处理,写回存储器中,从而提高了人工智能芯片的处理效率;
[0032] (2)构建由网络层参数解析模块、参数包计算模块、参数包选择模块、读取模块、行数据转换模块、算法及算法选择模块、回写模块相互配合的系统架构,完善了整个深度学习的算法过程,其中,算法及算法选择模块可以添加各种算法类型,算法接口简单,灵活性较高,只需将最前沿的目标算法对应添加,无需重新设计芯片,即可实现AI算法平台的有效应用;
[0033] (3)充分优化特征图FM的读、取流程,采用多级流线和并行技术,延时较短,同时,AXI4‑MM的读写尽可能用最大突发长度,提高了总线的利用率,进而提升了AI算法平台的计算性能。附图说明
[0034] 图1是本发明其中一种实施例中的基于FPGA+NPU架构的混合系统的简要框架
[0035] 图2是本发明其中一种实施例中的基于FPGA+NPU架构的混合系统的结构示意图;
[0036] 图3是本发明其中一种实施例中计算单个AXI4‑MM包的起始地址和长度的流程示意图;
[0037] 图4是本发明其中一种实施例中选择一组参数包输出的流程示意图;
[0038] 图5是本发明其中一种实施例中的DMA读请求的产生流程示意图;
[0039] 图6是本发明其中一种实施例中的FM转行数据输出时序图;
[0040] 附图标记:
[0041] 其中,1、网络层参数解析模块;211、Route参数选择单元;212、第一参数包计算单元;22、第二参数包计算单元;23、第三参数包计算单元;3、参数包选择模块;4、读取模块;51、第一行数据转换模块;52、第二行数据转换模块;61、Activate算法模块;62、Pooling算法模块;63、Upsample算法模块;64、Route算法模块;65、Shortcut算法模块;66、算法选择模块;7、回写模块。

具体实施方式

[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 在本申请描述中,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0044] 在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。本文所使用的术语“垂直的”、“水平的”、“左”、“右”、“上”、“下”以及类似的表述只是为了说明的目的,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
[0045] 在本申请的描述中,需要说明的是,除非另有定义,本发明所使用的所有的技术和科学术语与属于本的技术领域的技术人员通常理解的含义相同。本发明中说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明,对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
[0046] 相关术语解释:
[0047] FPGA:现场可编程逻辑阵列。
[0048] NPU:嵌入式神经网络处理器。
[0049] Soft‑NPU:软核NPU,此处指在FPGA的PL中实现的NPU算法。
[0050] DMA:直接存储器访问,它允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。
[0051] AXI:ARM公司提出的一种面向高性能、高带宽、低延迟的片内总线协议。
[0052] HP:高性能地址映射接口。
[0053] GP:普通性能地址映射接口。
[0054] IRQ:中断请求。
[0055] FM:英文名Feature Map的缩写,特征图。
[0056] PS:可编程系统。
[0057] PL:可编程逻辑。
[0058] FIFO:先进先出存储器。
[0059] RAM:随机存取存储器
[0060] 在人工智能领域,如果想用电路模仿人类的神经元,就得把每个神经元抽象为一个激励函数,该函数的输入由与其相连的神经元的输出以及连接神经元的突触共同决定。为了表达特定的知识,使用者通常需要(通过某些特定的算法)调整人工神经网络中突触的取值、网络的拓扑结构等。该过程称为“学习”。在学习之后,人工神经网络可通过习得的知识来解决特定的问题。
[0061] 冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现,二者之间存在巨大的差异。当用现有的基于冯·诺伊曼结构的经典计算机(如X86处理器和英伟达GPU)来跑神经网络应用时,就不可避免地受到存储和处理分离式结构的制约,因而影响效率。
[0062] 在本发明中,考虑到由于深度学习的基本操作是神经元和突触的处理,而传统的处理器指令集(包括x86和ARM等)是为了进行通用计算发展起来的,其基本操作为算术操作(加减乘除)和逻辑操作(与或非),往往需要数百甚至上千条指令才能完成一个神经元的处理,深度学习的处理效率不高。因此,本发明采用NPU+FPGA芯片组合的系统结构,既可以满足人工智能算法,高带宽和强大的计算能力的需求,而且可以满足不同的算法场景需求。
[0063] NPU(Neural network Processing Unit),是一种体积小、功耗低、计算性能高、计算效率高的神经网络专用芯片,相比于CPU和GPU,NPU通过突出神经网络算法权重的存储和计算的一体化,从而提高了运行效率,专门实现AI算法的应用。NPU的典型代表有国内的寒武纪(Cambricon)芯片和IBM的TrueNorth。以中国的寒武纪为例,2016年3月,中国科学院计算技术研究所陈霁、陈天石课题组提出了国际上首个深度学习处理器指令集DianNaoYu。DianNaoYu指令直接面对大规模神经元和突触的处理,一条指令即可完成一组神经元的处理,并对神经元和突触数据在芯片上的传输提供了一系列专门的支持。
[0064] FPGA可编程门阵列,是一种硬件可编程芯片,具有强大的并行计算能力,可根据算法的不同可以进行硬件电路的设计与优化,同等计算能力的情况下,功耗大约为GPU的十分之一,其主要特点是硬件电路可重置,可支持不同的算法模型的加速。随着现代深度学习算法不断往更难更复杂的方向发展,FPGA开始体现出其独特的加速能力。FPGA由可编程逻辑单元组成,几乎所有的硬件资源都可以被动态编程以达到想要实现的逻辑功能。这种能力使得FPGA的适应性强,使用范围广,如果优化得当,FPGA可具有高性能、低功耗等特点,相比其它固件能力的硬件,如NPU具有不可比拟的优势。
[0065] 需要说明的是,发明人在研究中发现,FPGA受自身架构限制,频率不能跑的很高,在同等工艺下,FPGA的主频一般只能跑到硬核NPU的一半不到,也即,FPGA适合处理大批量、并行但简单的运算,因此,在本发明中的混合系统中,请参见图1,图1示出为本发明提供的基于FPGA+NPU架构的混合系统的简要框架,类似于一个系统级芯片SOC,FPGA包括PS和PL两部分。本发明将PS中的Hard‑NPU设计为完成卷积等对性能要求较高的算法,这些并非本发明的核心改进点,此处不做详细介绍;PL部分中的Soft‑NPU(软核NPU)完成运算简单但多变的算法,如Shortcut算法、Activate算法等,下面会详细说明。
[0066] 具体的,本发明一实施例提供了一种基于FPGA+NPU架构的混合系统,具体的,请参见图2,图2示出为本发明其中一种实施例中的基于FPGA+NPU架构的混合系统的结构示意图。
[0067] 为了实现Soft‑NPU(软核NPU)的运算简单但多变的算法,本实施例中的混合系统设计了多种功能模块,各功能模块相互配合,共同提高了AI算法平台的灵活性和计算性能。
[0068] 其中,对各功能模块的说明如下:
[0069] 网络层参数解析模块1,用于配置当前NPU网络层寄存器的配置参数,其中,所述配置参数至少包括存储特征图FM的源地址、总长度、算法类型和回写地址;
[0070] 参数包计算模块,用于根据所述特征图FM的源地址和所述总长度,计算得到含有各特定算法对应的单个AXI4‑MM包的起始地址和长度的若干组参数包;
[0071] 参数包选择模块3,用于根据对应算法的使能信号和当前特征图FM的编号,在各组所述参数包中选择一组输出;
[0072] 读取模块4,用于响应DMA读请求,在输出的所述参数包的指引下,读出特征图FM数据;
[0073] 行数据转换模块,用于将所述特征图FM数据转换成行数据;
[0074] 算法及算法选择模块,其包括若干组可添加的算法类型,并用于根据对应算法的使能信号,选择一组所述算法类型,对所述行数据进行处理并输出,得到待回写数据;
[0075] 回写模块7,用于响应DMA写请求,对所述待回写数据进行处理,将其写入所述回写地址指引下的存储器中,直至对实现软核NPU的算法的网络层的处理结束。
[0076] 简而概之,一个NPU网络需要许多层来实现,在本实施例中,Soft‑NPU中实现某一网络层的过程主要包括:初始时,解析CPU通过AXI4‑Lite发送过来的配置参数;然后通过AXI4‑MM从DDR中读取FM并执行相应的算法,一边执行一边通过AXI4‑MM回写新的FM到DDR;最后,待回写完之后,通过Int总线向CPU申请中断。
[0077] 下面详细说明上述各功能模块的原理。
[0078] 网络层参数解析模块1:网络层参数解析模块1主要用到了ARM公司提供的AXI协议,此处用AXI4‑Lite总线来实现某一网络层寄存器的配置,配置参数包括存储FM的源地址和回写地址、总长度(长度*宽度*层数,单位byte)、尺寸(长度*宽度*层数)、层起始信号、算法类型和对应的配置参数等。具体的,在每一层起始之前,所述网络层参数解析模块1由CPU通过AXI4‑Lite协议配置生效。
[0079] 参数包计算模块:参数包计算模块的作用是为了输出作为指引的单个AXI4‑MM包的起始地址和长度,但是,对于不同的算法,实际的运算过程各不相同,下面,以三种算法作为示例进行说明,当然,下述三种具体算法只是为了更为清晰地说明参数包计算模块的功能,本领域技术人员可以根据需要选取其他算法类型,当为其它算法时,由于都是单个FM,所以统一到下述第一参数包计算单元实现,在此不再赘述。
[0080] 优选地,所述参数包计算模块包括第一参数包计算模组、第二参数包计算单元22和第三参数包计算单元23;
[0081] 所述第一参数包计算模组包括Route参数选择单元211和第一参数包计算单元212,所述Route参数选择单元211用于在Route算法对应的配置参数下进行选择输出,将输出结果发送至所述第一参数包计算单元212中,以使所述第一参数包计算单元212计算得到含有Route算法对应的单个AXI4‑MM包的起始地址和长度的参数包;Route算法可能需要从DDR中读取1个或2个或3个或4个FM,这些FM的源地址、总长度和尺寸,需要按照Route算法配置参数选择轮流生效,选择一路输出,第一参数包计算单元212的输入为Route参数选择单元的输出,当Route使能信号无效时为第一参数包计算单元212的参数。
[0082] 所述第二参数包计算单元22用于计算得到含有Shortcut算法对应的单个AXI4‑MM包的起始地址和长度的参数包,也即,第二参数包计算单元22只有实现Shortcut算法使能时才用到。
[0083] 所述第三参数包计算单元23用于根据存储器中的Activate表,计算得到含有Activate算法对应的单个AXI4‑MM包的起始地址和长度的参数包。第三参数包计算单元23的输入为Activate表(Activate表里面存储的是一些非线性函数查找表,如prelu激活函数等)的源地址和总长度,同样也只有Activate算法使能时才用到。
[0084] 上述第一参数包计算模组、第二参数包计算单元22和第三参数包计算单元23的输入都是FM源地址、总长度,不同点在于三者的输入属性。在上述输入信号进入各自参数包计算模组或单元后,需要计算出单个AXI4‑MM包的起始地址和长度,才能发起DMA读,具体的,请参见图3,图3示出为本发明其中一种实施例中计算单个AXI4‑MM包的起始地址和长度的流程示意图(图3左侧为长度计算,右侧为地址计算),计算的原理为:以合并后的起始地址作为所述单个AXI4‑MM包的起始地址,以合并后的长度作为所述单个AXI4‑MM包的长度。具体的,上述计算主要包括两部分,计算包起始地址和包长度。计算包长度有一个步骤是预估第一个包长度,其中涉及到的基地址低位与突发包长度有关,值为突发长度有效位(假设Nbit)的低(N‑1)bit位;另一个流程“输出包长度合并到一起”,输出即为AXI4‑MM包的长度。同理,“输出包起始地址合并到一起”,输出即为AXI4‑MM包的起始地址。
[0085] 参数包选择模块3:以上述三种算法类型为例,在得到上述三组参数包后(Route算法对应的单个AXI4‑MM包的起始地址和长度的参数包、Shortcut算法对应的单个AXI4‑MM包的起始地址和长度的参数包、Activate算法对应的单个AXI4‑MM包的起始地址和长度的参数包),根据算法使能信号和当前的FM编号选择一组输出,具体的,请参见图4,图4示出为选择一组参数包输出的流程示意图(图4仍是以上述三种算法类型为例),图4中“准备好”是指包起始地址和长度计算好;图4中“Activate包参数计算模块(图中Activate包参数计算模块即指上述第三参数包计算单元23,FM包参数计算模块即指上述第二参数包计算单元22,FM包参数计算模块1即指上述第一参数包计算单元212)准备好”的前提是Activate已经使能了;Activate算法执行时,需要先从DDR中读出查找表,再读出FM,所以计算包参数分成了两步;Shortcut算法需要轮流读两个FM,所以用到了两个包参数计算模块;Route算法的输入可能是多个FM,且输出是串行的,所以顺序计算了多个FM包参数;其它算法都是单个FM,所以统一到FM包参数计算模块0计算参数;
[0086] 读取模块4:将选择好的参数包进入读取模块,发起DMA读,读出对应的FM或者Activate表,协议同样参照上述提到的AXI协议。由于上述读是分阶段完成的,所以只需根据所处状态把数据送到不同的私有数据总线上。
[0087] 需要说明的是,上述DMA读出的连续数据并不适合做一些行处理的算法,如Pooling、Upsampling等,此时考虑通用性,FM的所有数据都转行成一行行数据再送到算法模块(也即需要经过行数据转换模块)。
[0088] 行数据转换模块:需要预先说明的是,本实施例包括第一行数据转换模块51和第二行数据转换模块52,读取模块4返回的FM包一层私有总线enable、data等,送到第一行数据转换模块51(由于上面提到的Shortcut使能,两个FM交叉读,产生两路数据,第二路数据送到第二行数据转换模块52),激活所用查找表数据送到后续Activate算法模块61;再接着第一行数据转换模块51把进入的私有总线转换成便于后续算法实现的另外一套私有总线(fmc_frm、fmc_lnvld、fmc_lnlstp、fmc_dt、fmc_dten),送到后续所有的算法模块,第二行数据转换模块52由于暂时只有Shortcut算法模块用到,所以只送入此模块。
[0089] 关于如何实现转换成行数据,具体的,行数据转换模块包括读请求信号产生单元和返回数据转行单元。所述读请求信号产生单元用于根据所述层起始信号、AXI4‑MM总线发起DMA读请求但尚未返回数据、outstanding地址数量在DMA读请求下的变化,对应产生读请求信号;
[0090] 所述返回数据转行单元用于根据所述读请求信号,将所述特征图FM数据返回的数据移位,形成行数据,所述行数据包括完整的W×H×C特征图FM数据,其中,W为一行的Byte数,H为一层FM的行数,C为FM的层数。
[0091] 由上可知,由FM转换成行的操作由两步完成:产生读请求信号和读请求返回的数据转成行。首先产生读请求,具体的,请参见图5,图5示出为本发明其中一种实施例中DMA读请求的产生流程示意图,为了减少数据流通路的气泡且提高AXI4‑MM的带宽利用率,采用了如图5的读请求调度方式,图5中“路上的数据”为AXI4‑MM总线发起DMA读请求但尚未返回数据,另外由于第一个AXI4‑MM包的基地址为随机值,也就是数据不是从Byte0开始有效的,所以要根据基地址低位进行移位成连续的数据再写入FIFO。FIFO写使能有效减1,DMA读请求有效加突发长度,然后“合并路上的数据”,也就是两者相加。“FIFO剩余空间”加“合并路上的数据”为不发起新的读请求FIFO空间将要达到的数据量,“FIFO深度减突发长度”的值与FIFO将要达到的值比较,可以判定FIFO是否可以再装下一个突发长度大小的包。如果差值为正数,再去判断Outstanding(表示正在进行中的包,请求一次加1,返回一个减1)是否小于预设值,如果小于表示可以发起一个新的DMA读请求,否则等待上述两个条件都满足。下一次读请求的发起,与当前读请求的控制方式一致,此处不再介绍。
[0092] 依据上述方法产生的DMA读请求,返回的数据移位后写入FIFO。当输入反压信号无效时,读出一行一行的数据,总共组成H*C行,此处的H为一层FM的行数,C为FM的层数。此时需要注意,由于行宽度不一定为AXI4‑MM数据位宽的整数倍,所以要把上一行多余的数据移位到下一行,依此类推组成一个完整的FM(W*H*C),其中的W为一行的Byte数(本文中FM的数据类型都为int8或uint8)。此外,为了进一步优化后续算法的延时,如缩短行间距、减少检测行结束的时间,输出了如下的时序波形,如图6所示,图6示出为本发明其中一种实施例中的FM转行数据输出时序图,图6中的sys_clk为模块时钟信号;fmc_frm为层同步信号,它会包住FM里面的所有行;fmc_lnvld为行同步信号,包住一行的数据,当前面多行之后剩余的Byte个数大于当前行fmc_lnlstp位置所需的byte数时,行与行之间有没有间隔;fmc_dten为数据使能信号,FM转行数据模块输出时与fmc_lnvld一致,后续经过其它算法后可能不一致,如Pooling算法步长不为1;fmc_lnlstp为行最后一个数据的标志信号,单脉冲有效;fmc_dt为FM数据,数据位宽为AXI4‑MM的位宽。
[0093] 算法及算法选择模块:其包括算法模块和算法选择模块66,在实际应用中可以将二者合并为同一个模块,也可以拆分成单独的模块,图2中的拆分结构并不构成对本发明的限定,在此不做赘述。
[0094] 算法模块:本实施例中的算法如图2所示,包括Activate算法模块61、Pooling算法模块62、Upsample算法模块63、Route算法模块64和Shortcut算法模块65。以上述图6的时序图为例,上述时序波形并行进入图2中的算法模块中,图2中仅展示了YOLO目标检测模型用到的算法,如Activate算法模块61、Pooling算法模块62等,其它算法模型的时序暂未深究。当然,由于算法是可添加的,因此只需将最前沿的目标算法对应添加,无需重新设计芯片,即可实现AI算法平台的有效应用,这些算法的实现采用多级流水线技术,延时较短。以Activate算法模块61为例,进入此模块的数据先后通过查表、尺度变换等多拍后输出FM的第一个数据,后续数据连续输出,整体FM时序只是延迟了多拍输出,时序并没有变化。
[0095] 算法选择模块66:上述算法输出送到算法选择模块66,根据算法使能信号多选一,仅延时一拍就可输出。没有使能的算法将不会工作,从而降低功耗。选出的算法输出进入到下述回写模块7中。
[0096] 回写模块7:需要说明的是,在将所述待回写数据写入所述回写地址下的数据缓存器中时,所述回写模块7还被配置为去除所述待回写数据中的行间气泡,使其具有最大突发长度。
[0097] 具体的,所述回写模块7被配置为:
[0098] 确定所述待回写数据中当前数据的前一个数据;
[0099] 对所述当前数据与所述前一个数据进行拼接,将拼接后的有效数据写入所述数据缓存器中;
[0100] 当所述数据缓存器中的所述有效数据个数达到预设时,读出数据,组成AXI4‑MM写包,发起DMA写操作。
[0101] 由上可知,由于每行Byte个数并不一定是AXI4‑MM数据位宽整数倍,但为了提高DMA写的效率,每个包尽可能取最大突发长度,所以考虑把行间气泡挤掉,这个过程分为两个步骤:
[0102] 1.确定当前数据的前一个数据,也就是fmc_dt_d1;
[0103] 2.当前数据与它的前一个数据拼接得到连续数据。
[0104] 假设AXI4‑MM数据位宽64bit,选取行宽度W低3bit和上一行拼接数据后剩下的byte个数RM的低3bit,并置之后作为变量进行选择输出,若fmc_lnlstp为低时都是完整的64bit数据,只需打一拍即可,若fmc_lnlstp为高说明是一行的最后一个数据,可能需要做拼接,由于{W[2:0],RM[2:0]}总共6bit,2^6=64种情况,拼接思想为“前一个数据拼接余下的Byte和fmc_lnlstp位置有效Byte合并后放到高有效位”,具体拼接方式如下表所示:
[0105]
[0106]
[0107] 上述fmc_lnlstp位置得到的fmc_dt_d1与其它位置的fmc_dt_d1合并到一起后,得到最终的fmc_dt_d1。当前数据fmc_dt与最终的fmc_dt_d1,根据RM[2:0]变量拼接出最终数据fifo_di写入FIFO,此时的拼接方式如上表右侧所示。当拼接完成后,把有效数据写入FIFO,当FIFO中的有效数据个数大于包长度时,读出数据,组AXI4‑MM写包,发起DMA写。此时计算AXI4‑MM写包长度和初始地址的方式与计算AXI4‑MM读包长度和初始地址的过程相似,此处不再介绍。但需要注意的是,最后一个包长度要根据图6中fmc_frm下降沿之后FIFO中剩余数据的个数来判定,当FIFO中的数据量大于最大突发长度,按照最大突发长度发包,当小于或等于最大突发长度,当时FIFO中数据的个数即为突发长度。同时,AXI4‑MM写请求时也要考虑Outstanding,计数方式与AXI4‑MM读请求类似。FM回写模块中有一个指针计数器,当发完一个写请求时计数器加1,当返回一个写响应时,计数器减1。只有Outstanding的值小于预设值时才允许发起新的请求,否则等待。
[0108] 进一步地,在最后一个DMA写请求发出并响应之后,发出中断请求信号,当CPU通过AXI4‑Lite发出清中断后,中断请求清0,否则中断请求信号一直有效。至此,一层网络做完,等待下一层网络开始信号,或者所有层做完结束。
[0109] 相比于现有技术,本发明实施例的有益效果在于以下所述中的至少一点:
[0110] (1)传统的冯·诺伊曼结构中,存储和处理是分离的,本发明突破了经典的冯·诺伊曼结构的限制,将特征图FM由存储器中读取出,再经过软核NPU的算法处理,写回存储器中,从而提高了人工智能芯片的处理效率;
[0111] (2)构建由网络层参数解析模块、参数包计算模块、参数包选择模块、读取模块、行数据转换模块、算法及算法选择模块、回写模块相互配合的系统架构,完善了整个深度学习的算法过程,其中,算法及算法选择模块可以添加各种算法类型,算法接口简单,灵活性较高,只需将最前沿的目标算法对应添加,无需重新设计芯片,即可实现AI算法平台的有效应用;
[0112] (3)充分优化特征图FM的读、取流程,采用多级流水线和并行技术,延时较短,同时,AXI4‑MM的读写尽可能用最大突发长度,提高了总线的利用率,进而提升了AI算法平台的计算性能。
[0113] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
QQ群二维码
意见反馈