CN118504631A - 基于fpga上的定制指令的神经网络加速器架构 - Google Patents
基于fpga上的定制指令的神经网络加速器架构 Download PDFInfo
- Publication number
- CN118504631A CN118504631A CN202310332210.XA CN202310332210A CN118504631A CN 118504631 A CN118504631 A CN 118504631A CN 202310332210 A CN202310332210 A CN 202310332210A CN 118504631 A CN118504631 A CN 118504631A
- Authority
- CN
- China
- Prior art keywords
- signal
- neural network
- accelerator
- layer
- command
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 65
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 63
- 230000006870 function Effects 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及位于现场可编程门阵列(FPGA)中的神经网络加速器(103),该神经网络加速器基于所述FPGA中的嵌入式处理器(102)的定制指令接口,其中所述神经网络加速器(103)包括命令控制块(301)、至少一个神经网络层加速器(303)及响应控制块(305)。可在所述FPGA中容易地配置可实施的神经网络层加速器(103)的数量(诸如向所述神经网络层加速器(103)添加新型的层加速器(303)),这使得所述发明灵活且可扩展。
Description
技术领域
本发明涉及位于现场可编程门阵列(FPGA)中的神经网络加速器,该神经网络加速器基于所述FPGA中的嵌入式处理器(embedded processor)的定制指令接口,其中所述神经网络加速器包括命令控制块、至少一个神经网络层加速器及响应控制块。可在所述FPGA中容易地配置能够实施的神经网络层加速器的数量(诸如向所述神经网络层加速器添加新型的层加速器),这使得所述发明灵活且可扩展。
背景技术
人工智能(artificial intelligence,AI),尤其是神经网络(neural network,NN),正变得越来越受欢迎并且被广泛用于各种应用程序领域,诸如视觉应用程序、音频应用程序及时间序列应用程序。AI训练通常是使用中央处理单元(central processingunit,CPU)或图形处理单元(graphics processing unit,GPU)执行的,而AI推理则使用移动GPU、微控制器(microcontroller,MCU)、应用专用集成电路(application-specificintegrated circuit,ASIC)芯片或现场可编程门阵列(field-programmable gate array,FPGA)而部署在边缘处。
由于AI推理软件堆栈一般由移动GPU和MCU使用,因此与在ASIC芯片或FPGA上的定制实施方案相比,对应的实施方案更加灵活。然而,如果移动GPU或MCU上的推理速度性能不满足特定应用程序的要求,则无法进行改善来进一步加速所述性能。在这种情况下,需要更强大的移动GPU或MCU,这将导致更高的成本和功耗。这意味着面临关键的限制,尤其是对于边缘AI应用程序而言,功耗是关键问题。
另一方面,FPGA为AI推理应用程序提供具有可编程硬件加速的可行平台。然而,现有的基于FPGA的AI解决方案大多是基于定制AI加速器知识产权核心(IP核心)和/或固定AI加速器知识产权核心(IP核心)实施的,其中仅支持某些预定义的AI层/操作或者特定网络拓扑和输入大小。如果用户目标神经网络不需要某些层类型,则无法为了节省资源而独立地禁用(be disabled independently)所述层类型。在目标AI模型包括IP核心所不支持的层或操作的情况下,在IP核心被更新为具有添加的支持之前此种模型无法被部署,这可能涉及长的设计周期并且对上市时间的造成巨大影响。这会造成显著的缺点,因为AI研究正处于快速发展中,正在快速发明具有更好的准确性和效率的新模型拓扑/层。
通过使用在使用FPGA的嵌入式处理器上运行的AI推理软件堆栈,具有硬件加速的灵活AI推理实施方案是可行的。由于神经网络推理是逐层执行的,因此基于层的加速器实施方案对于确保支持各种神经网络模型的灵活性是至关重要的。
Rahul Pal等人在专利US20220014202A1中公开了一种三维堆叠可编程逻辑组构及处理器设计架构,但是所述现有技术不适用于AI或神经网络。
Sundararajarao Mohan等人在专利US007676661B1中公开了一种使用定制指令进行函数加速的方法及系统,但是它并没有被实施用于神经网络加速。
因此,通过在FPGA中的嵌入式处理器上实施基于定制指令的神经网络加速器架构来减轻所述缺点将是有利的,这允许软件堆栈与硬件加速器之间的无缝整合。
发明内容
因此,本发明的主要目的是提供一种神经网络加速器,其允许软件堆栈与硬件加速器之间的无缝整合。
本发明的又一目的是提供一种轻量级(light-weight)神经网络加速器,其能够以低逻辑及存储器资源消耗实现显著的加速。
通过理解本发明的以下详细说明或在实际实践中采用本发明,本发明的附加目的将变得显而易见。
根据本发明的优选实施例提供以下内容:
一种位于现场可编程门阵列(FPGA)中的神经网络加速器,包括:
至少一个神经网络层加速器;
其特征在于,
所述神经网络加速器还包括命令控制块(command control block);
所述神经网络加速器还包括响应控制块(response control block);
所述神经网络加速器通过定制指令接口(custom instruction interface)连接到所述FPGA中的至少一个嵌入式处理器。
附图说明
在结合附图研究了具体实施方式之后将理解本发明的其他方面及其优点,其中:
图1是示出连接到本发明的神经网络加速器的具有定制指令接口的嵌入式处理器的方框图。
图2是示出本发明的所述神经网络加速器内部的组件的方框图。
图3是通用层加速器的方框图。
图4是示出VexRISC-V CPU架构中的定制指令接口的处理的示例的波形图。
具体实施方式
在以下详细说明中陈述诸多具体细节,以便提供对本发明的透彻理解。然而,本领域中的普通技术人员将理解,本发明可在不具有这些具体细节的情况下实施。在其他情况下,未详细描述众所周知的方法、程序和/或组件,以免使本发明模糊。
根据参照附图仅以示例方式给出的对本发明实施例的以下说明,将更清楚地理解本发明,所述附图并未按比例绘制。
由于主干(backbone)AI推理软件堆栈在嵌入式处理器上运行,因此基于定制指令方法的硬件加速允许软件堆栈与硬件加速器之间的无缝整合。本发明的层加速器架构使用定制指令。
一般来说,指令集架构(instruction set architecture,ISA)对处理器所支持的指令进行定义。对于包含定制指令支持的某些处理器变体而言存在的ISA,其中特定的指令操作码被预留(reserved)用于定制指令实施方案(custom instructionimplementations)。这允许开发者或用户基于目标应用程序实施(implement)他们自己的定制指令。在ASIC芯片处实施的定制指令在开发时(at development time)是固定的,与ASIC芯片不同,对于使用相同FPGA芯片的不同应用程序而言,使用FPGA的定制指令实施方案可由用户进行配置/编程。图1示出位于具有定制指令支持的所述FPGA中的嵌入式处理器102的方框图,所述嵌入式处理器102通过定制指令接口连接到神经网络加速器103。
如图1中所示,定制指令接口的示例主要包括两组信号:输入相关信号和输出相关信号。输入相关信号是“命令_有效”(“command_valid”)信号和“命令_就绪”(“command_ready”)信号,该“命令_有效”(“command_valid”)信号和“命令_就绪”(“command_ready”)信号用于指示“输入0”(“input0”)信号、“输入1”(“input1”)信号及“函数_id”(“function_id”)信号的有效性。输出相关信号是“响应_有效”(“response_valid”)信号和“响应_就绪”(“response_ready”)信号,该“响应_有效”(“response_valid”)信号和“响应_就绪”(“response_ready”)信号用于指示“输出”(“output”)信号的有效性。利用单个/一个定制指令操作码和M个位的“函数_id”(“function_id”)信号,可实施共2M个定制指令。图1示出具有定制指令支持的基于VexRiscv CPU架构的嵌入式处理器102的示例,其中funct7、rs2、rs1、funct3及rd是用于定制指令的R型RISC-V基本指令格式(R-type RISC-V baseinstruction format)。寄存器文件(Register file)105、算术逻辑单元(arithmeticlogic unit,ALU)107、管线控制109及定制指令插件111是嵌入式处理器102的CPU架构的一部分。即使RISC-V被示出作为在本发明中使用的嵌入式处理器102的示例,然而任何其他合适的嵌入式处理器102也可以用于本发明的目的。
本发明集中于(focuses on)神经网络层加速器的架构,其基于定制指令接口。图2中绘示出了所提出的神经网络架构。如图2中所示,本发明的FPGA中的神经网络加速器103的架构包括命令控制块301、至少一个神经网络层加速器303及响应控制块305。如图2中所示,在层加速器303之间共享所述单个或一个定制指令接口,所述层加速器303在所述神经网络加速器103中可用于可扩展性、灵活性及高效的资源利用。通过共享单个或一个定制指令接口,可在所述FPGA中容易地配置可实施的神经网络层加速器的数目,这是高度灵活并且可扩展的。用户、设计者或开发者可仅启用(enable)目标神经网络应用程序所需的特定类型的层加速器303,而不是启用所有可用的层加速器303,从而提供高效的资源利用。此外,由于所述神经网络加速器103的可扩展架构,可容易地将用于不同神经网络层或操作的更多层加速器303添加到所提出的神经网络加速器103。
基于层类型(例如,卷积层、深度卷积层(depthwise convolution layer)及全连接层)来实施层加速器303,所述层类型可由包括相同类型的多个层的神经网络模型进行重新使用(be reused)。并非所有的目标AI模型都需要实施所有的层加速器。本发明允许在编译时间(compile time)对单个层加速器进行配置,以使得能够高效地利用资源。每一层加速器具有其自己的一组“命令_有效”(“command_valid”)信号、“命令_就绪”(“command_ready”)信号、“响应_有效”(“response_valid”)信号及“输出”(“output”)信号。
命令控制块301用于通过使用“函数_id”(“function_id”)信号进行区分来共享来自所述多个层加速器303的“命令_就绪”(“command_ready”)信号和到达所述多个层加速器303的“命令_有效”信号。命令控制块301从所述嵌入式处理器102接收所述“函数_id”(“function_id”)信号,同时成为用于从所述嵌入式处理器102向所述神经网络层加速器303传送(transferring)“命令_有效”(“command_valid”)信号以及从所述神经网络层加速器303向所述嵌入式处理器102传送“命令_就绪”(“command_ready”)信号的中介。M个位的“函数_id”(“function_id”)信号可被分割成多个函数ID块(multiple function IDblocks),由此一个函数ID块(function ID block)被专门分配给一个层加速器303。对“函数_id”(“function_id”)信号进行分割(partitioning)的一个示例性方法是基于“函数_id”(“function_id”)信号的一个或多个最高有效位(most significant bit,MSB),这取决于需要多少个函数ID块。举例来说,如果分割是基于1个位的MSB,则将创建两个块(blocks),而如果分割基于2个位的MSB,则将创建四个块。一般来说,对N个位的MSB进行分割会产生2N个块。命令控制块301参考所述“函数_id”(“function_id”)信号的MSB位来识别与特定传入定制指令命令相关联的特定层加速器303。
响应控制块305通过多路复用而成为用于将来自每一神经网络层加速器303的“响应_有效”(“response_valid”)信号和“输出”(“output”)信号传送到所述嵌入式处理器102的定制指令接口的一个“响应_有效”信号和一个“输出(“output”)”信号的中介。由于神经网络推理通常逐层执行模型,因此一次只有一个层加速器303是有效(active)的。在这种情况下,可在响应控制块305中使用直接多路复用(straightforward multiplexing)。
层加速器303从所述嵌入式处理器102接收所述“输入0”(“input0”)信号、“输入1”(“input1”)信号、所述“响应_就绪”(“function_id”)信号及所述“函数_id”(“function_id”)信号;通过所述命令控制块301从所述嵌入式处理器102接收“命令_有效”信号;通过所述命令控制块301向所述嵌入式处理器102发送“命令_就绪”(“command_valid”)信号;通过所述响应控制块305向所述嵌入式处理器102发送“响应_有效”(“response_valid”)信号和“输出”(“output”)信号。
所提出的神经网络加速器103利用定制指令接口来传递(passing)单独的(individual)层加速器303的参数、检索层加速器303的输入、返送(return)层加速器303的输出以及相关的控制信号,诸如用于触发层加速器303中的计算、重置神经网络加速器103中的某些块等的控制信号。在每个单独的层加速器块中,通过相应地利用为所述相应的层加速器303类型分配的函数ID而创建一组特定的定制指令来传送所述层加速器303的参数、控制、输入及输出信号。应注意,对于本发明的层加速器架构而言,考虑到设计复杂性和可实现的加速,设计者可选择实施定制指令来仅加速神经网络层中的某些计算密集型计算(compute-intensive computations)或者在层加速器中实施完整的层操作。神经网络加速器103与所述嵌入式处理器102之间的数据/信号传送由所述嵌入式处理器102的修改的固件/软件(modified firmware/software)进行控制,所述固件/软件可在AI推理软件堆栈或独立的AI推理实施方案(AI inference implementation)中。图4是示出在VexRISC-V CPU架构中使用的定制指令接口的处理(process)的示例的波形图。
图3示出本发明的通用层加速器的方框图。如图3中所示,本发明的通用层加速器303包括控制单元401、计算单元405及数据缓冲器403。应注意,层加速器303的设计可基于目标层类型而发生变化。控制单元401基于相应的函数ID解释所述定制指令接口的至少一个定制指令输入,以区分它们是层参数、待存储在数据缓冲器403中用于后续计算的输入数据、待直接用于计算的输入数据还是控制信号等。直到层执行完成,层参数信息才将被保留,以便于对相对于数据缓冲器403的数据存储和检索、计算等的相关控制。另一方面,计算单元405执行所述神经网络加速器103的至少一个目标层类型所需的至少一个操作、计算或它们的组合。
对于为了计算单元405的高效并行计算而同时需要一组以上输入的层加速器303类型,可使用数据缓冲器403保存(hold)来自所述定制指令输入的数据,同时等待其他组输入数据的到达以开始进行计算。另外,数据缓冲器403可用于存储来自所述定制指令输入的数据,该数据在层操作计算中被进行高度重新使用。控制单元401便于将计算输出从所述计算单元405传送到所述响应控制块305。
尽管本发明已在本文中以被认为是其优选实施例的方式被示出和描述,从而例示出通过本发明获得的优于现有技术的结果和优点,然而本发明不限于那些特定实施例。因此,在本文中示出和描述的本发明的形式仅被视为例示性的,并且可在不背离本发明的范围的情况下选择其他实施例,如在所附权利要求书中所阐述。
Claims (7)
1.一种位于现场可编程门阵列(FPGA)中的神经网络加速器(103),包括:
至少一个神经网络层加速器(303);
其特征在于,
所述神经网络加速器(103)还包括命令控制块(301);
所述神经网络加速器(103)还包括响应控制块(305);
所述神经网络加速器(103)通过定制指令接口连接到所述FPGA中的至少一个嵌入式处理器(102)。
2.根据权利要求1所述的神经网络加速器(103),其中所述神经网络层加速器(303)包括:
控制单元(401),所述控制单元用于解释所述定制指令接口的至少一个定制指令输入;
数据缓冲器(403),所述数据缓冲器用于保存来自所述定制指令输入的数据、存储来自所述定制指令输入的数据或它们的组合;以及
计算单元(405),所述计算单元用于执行所述神经网络加速器(103)的至少一个目标层类型所需的至少一个操作、计算或它们的组合;
所述控制单元(401)还便于将计算输出从所述计算单元(405)传送到所述响应控制块(305)。
3.根据权利要求1所述的神经网络加速器(103),其中所述定制指令接口包括输入相关信号和输出相关信号。
4.根据权利要求3所述的神经网络加速器(103),其中所述输入相关信号是“命令_有效”信号和“命令_就绪”信号,该“命令_有效”信号和“命令_就绪”信号用于指示“输入0”信号、“输入1”信号及“函数_id”信号的有效性;并且所述输出相关信号是“响应_有效”信号和“响应_就绪”信号,该“响应_有效”信号和“响应_就绪”信号用于指示“输出”信号的有效性。
5.根据权利要求4所述的神经网络加速器(103),其中所述命令控制块(301)从所述嵌入式处理器(102)接收所述“函数_id”信号,同时成为从所述嵌入式处理器(102)向所述神经网络层加速器(303)传送“命令_有效”信号和从所述神经网络层加速器(303)向所述嵌入式处理器传送“命令_就绪”信号的中介。
6.根据权利要求4所述的神经网络加速器(103),其中所述响应控制块(305)成为从所述神经网络层加速器(303)向所述嵌入式处理器(102)传送“响应_有效”信号和“输出”信号的中介。
7.根据权利要求4所述的神经网络加速器(103),其中所述层加速器(303)从所述嵌入式处理器(102)接收所述“输入0”信号、所述“输入1”信号、所述“响应_就绪”信号及所述“函数_id”信号;通过所述命令控制块(301)从所述嵌入式处理器(102)接收所述“命令_有效”信号;通过所述命令控制块(301)向所述嵌入式处理器(102)发送所述“命令_就绪”信号;通过所述命令控制块(301)向所述嵌入式处理器(102)发送所述“响应_有效”信号和所述“输出”信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/169,007 US20240273334A1 (en) | 2023-02-14 | 2023-02-14 | Neural network accelerator architecture based on custom instruction on fpga |
US18/169,007 | 2023-02-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118504631A true CN118504631A (zh) | 2024-08-16 |
Family
ID=92215900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310332210.XA Pending CN118504631A (zh) | 2023-02-14 | 2023-03-30 | 基于fpga上的定制指令的神经网络加速器架构 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240273334A1 (zh) |
CN (1) | CN118504631A (zh) |
-
2023
- 2023-02-14 US US18/169,007 patent/US20240273334A1/en active Pending
- 2023-03-30 CN CN202310332210.XA patent/CN118504631A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240273334A1 (en) | 2024-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210216318A1 (en) | Vector Processor Architectures | |
CN110869946B (zh) | 加速的深度学习 | |
CN106445876B (zh) | 基于应用的动态异构多核系统和方法 | |
EP3005139B1 (en) | Incorporating a spatial array into one or more programmable processor cores | |
CN107636638B (zh) | 通用并行计算架构 | |
CN110622134A (zh) | 专用神经网络训练芯片 | |
CN111656367A (zh) | 神经网络加速器的系统和体系结构 | |
US20240311194A1 (en) | Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture | |
KR20190068616A (ko) | 신경 네트워크 명령어 세트 아키텍처 | |
US10997102B2 (en) | Multidimensional address generation for direct memory access | |
US11948352B2 (en) | Speculative training using partial gradients update | |
US20210125042A1 (en) | Heterogeneous deep learning accelerator | |
US20240232630A1 (en) | Neural network training in a distributed system | |
CN103870335B (zh) | 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 | |
CN112114942A (zh) | 一种基于众核处理器的流式数据处理方法及计算设备 | |
US11334358B2 (en) | Hardware accelerator having reconfigurable instruction set and reconfigurable decoder | |
KR20220045026A (ko) | 신경망 계산 가속화를 위한 하드웨어 회로 | |
KR102349138B1 (ko) | 사전 프로그래밍 된 함수를 갖는 고속 컴퓨터 가속기 | |
US11841792B1 (en) | Instructions with multiple memory access modes | |
CN118504631A (zh) | 基于fpga上的定制指令的神经网络加速器架构 | |
CN116348885A (zh) | 用于可部署推理系统的存储器映射的神经网络加速器 | |
US11983128B1 (en) | Multidimensional and multiblock tensorized direct memory access descriptors | |
CN118504630A (zh) | 基于fpga上的定制指令和dma的神经网络加速器架构 | |
US10997277B1 (en) | Multinomial distribution on an integrated circuit | |
US11061654B1 (en) | Synchronization of concurrent computation engines |
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 |