CN113743599B - 一种卷积神经网络的运算装置及服务器 - Google Patents
一种卷积神经网络的运算装置及服务器 Download PDFInfo
- Publication number
- CN113743599B CN113743599B CN202110905140.3A CN202110905140A CN113743599B CN 113743599 B CN113743599 B CN 113743599B CN 202110905140 A CN202110905140 A CN 202110905140A CN 113743599 B CN113743599 B CN 113743599B
- Authority
- CN
- China
- Prior art keywords
- module
- instruction
- register
- data
- weight
- 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.)
- Active
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims abstract description 60
- 238000013528 artificial neural network Methods 0.000 claims abstract description 6
- 238000009825 accumulation Methods 0.000 claims description 63
- 239000000872 buffer Substances 0.000 claims description 40
- 238000010586 diagram Methods 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 32
- 230000006978 adaptation Effects 0.000 claims description 24
- 238000000034 method Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 11
- 230000001133 acceleration Effects 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000001994 activation Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000036316 preload Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000002699 waste material Substances 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种卷积神经网络的运算装置及服务器,装置包括:主处理器;与主处理器连接的协处理器,协处理器包括寄存器模块以及运算模块,寄存器模块包含多个寄存器;外部存储器,外部存储器分别与主处理器以及协处理器连接,并且存储有卷积神经网络卷积运算的输入输出数据;其中,主处理器配置为基于RISC‑V定义多个指令,并向协处理器发送指令;协处理器配置为解析指令,并将解析后的指令发送给对应的寄存器;寄存器配置为基于接收到的指令,为计算模块提供运算参数;运算模块配置为基于接收到运算参数从外部存储模块读取输入输出数据进行卷积运算。通过本发明的方案,解决了ASIC加速方案灵活性不足的问题,该装置的卷积运算速度快,灵活性好。
Description
技术领域
本发明涉及神经网络技术领域,尤其涉及一种卷积神经网络的运算装置及服务器。
背景技术
近年来,随着对卷积神经网络(CNN)的研究越来越深入,卷积神经网络模型越来越多样,精度越来越高,同时模型也越来越复杂,参数越来越多,由此带来的计算量也越来越大,由卷积神经网络对硬件性能的要求也更高。过去的半个多世纪,半导体行业一直遵循摩尔定律高速发展,但是当半导体制程节点到了5nm甚至更小的节点之后,单纯靠提升工艺制程来提升芯片性能的方法已经无法充分满足需求,半导体行业也逐步进入了后摩尔时代。在这一时期,已经无法单纯依靠工艺制程进步推动芯片性能提升,而应该更多地依靠架构创新。
RISC-V是一种基于精简指令集(RISC)原则的指令集架构(ISA),RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件而不必支付给任何公司专利费。RISC-V指令集具备的开放、模块化和可扩展的特点较好地满足了特定领域架构的需求,用户可以根据需求添加自定义指令满足个性化需求,也为DSA提供了一种实现方案。
当前存在多种CNN实现方式,例如,基于标准计算库在通用CPU上实现、基于GPU(Graphics Processing Unit,图形处理器,又称显示核心、视觉处理器、显示芯片)实现、以及基于ASIC的加速实现方案。通用CPU对于CNN来讲计算效率较低;GPU的SIMD(SingleInstruction Multiple Data,单指令多数据流,能够复制多个操作数并把它们打包在大型寄存器的一组指令集)结构恰好可以用来加速CNN,但GPU的能效较低;相比之下,基于ASIC定制化的特点可以提供能效方面的优势。尽管基于ASIC实现CNN加速的方案可以提供较高的能效,但这种方案灵活性有限,难以满足不断更新的CNN模型对灵活性的要求。
发明内容
有鉴于此,本发明提出了一种卷积神经网络的运算装置及服务器,解决了ASIC加速方案灵活性不足的问题,卷积运算速度快,同时该装置的灵活性好。
基于上述目的,本发明实施例的一方面提供了一种卷积神经网络的运算装置,具体包括:
主处理器;
与所述主处理器连接的协处理器,所述协处理器包括寄存器模块以及运算模块,所述寄存器模块包含多个寄存器;
外部存储器,所述外部存储器分别与所述主处理器以及所述协处理器连接,并且存储有卷积神经网络卷积运算的输入输出数据;
其中,所述主处理器配置为基于RISC-V定义多个指令,并向所述协处理器发送所述指令;所述协处理器配置为解析所述指令,并将解析后的指令发送给对应的寄存器;所述寄存器配置为基于接收到的指令,为所述计算模块提供运算参数;所述运算模块配置为基于接收到所述运算参数从所述外部存储模块读取输入输出数据进行卷积运算。
在一些实施方式中,所述输入输出数据包括特征图和权重,所述指令包括:协处理器寄存器配置指令、协处理器寄存器读取指令、协处理器缓存载入指令、协处理器预加载指令和MAC阵列启动指令;
其中,所述协处理器寄存器配置指令用于配置协处理器中的寄存器;所述协处理器寄存器读取指令用于读取协处理器的寄存器;所述协处理器缓存载入指令用于从外部存储器向缓存模块载入所述特征图或所述权重;所述协处理器预加载指令用于从所述缓存模块向数据预加载模块预加载所述特征图或所述权重;MAC阵列启动指令用于启动MAC阵列执行乘加运算。
在一些实施方式中,所述卷积运算包括MAC阵列运算与累加运算,所述运算模块包括:
与所述主处理器连接的接口适配模块,所述接口适配模块与所述主处理器通过命令请求通道与命令响应通道连接,所述接口适配模块配置为接收所述主处理器通过命令请求通道发送的指令,并通过所述寄存器模块执行所述的指令,并通过命令响应通道将指令执行结果返回所述主处理器;
与所述接口适配模块连接的指令译码模块,所述指令译码模块配置为接收所述接口适配模块发出的指令,并对所述指令进行译码;
与所述指令译码模块连接的寄存器模块,所述寄存器模块配置为接收所述指令译码模块译码后的指令,并判断能否将所述指令写入对应的寄存器,并基于写入的所述指令输出对应的信号;
与所述寄存器模块连接的缓存模块,所述缓存模块配置为响应于接收到对应的寄存器输出的数据搬移信息,从所述外部存储器读取对应所述特征图或所述权重并保存;
分别与所述寄存器模块和所述缓存模块连接的数据载入模块;所述数据载入模块配置为响应于接收到对应寄存器发出的数据载入启动信号从所述外部存储器读取所述特征图或所述权重,并写入所述缓存模块;
分别与所述寄存器模块和所述数据载入模块连接的数据预加载模块,所述数据预加载模块配置为响应于接收到所述数据载入模块发出的所述特征图或所述权重载入完成信号并且接收到对应的寄存器发出的所述特征图或所述权重的预加载启动信号,按预设周期从所述缓存模块读取所述特征图或所述权重并保存读取的数据;
分别与所述寄存器模块和所述数据预加载模块连接的MAC阵列,所述MAC阵列配置为响应于接收到对应的寄存器发出的MAC阵列启动信号从所述数据预加载模块读取所述数据,并基于所述数据进行MAC阵列计算,并输出阵列计算结果;
分别与所述寄存器模块和所述MAC阵列连接的累加器模块,所述累加器模块配置为接收所述MAC阵列输出的计算结果,并对接收的所述计算结果进行累加运算,并保存每次累加运算的结果以进行下一次累加运算,以及响应于累加运算结束后,输出并保存最终计算结果,并由所述累加器模块输出计算完成标志信号;
分别与所述寄存器模块、所述缓存模块和所述累加器模块连接的数据写出模块,所述数据写出模块配置为接收所述累加器模块输出的所述计算完成标志信号,从所述累加器模块读取所述累加运算结果,并写入所述缓存模块或所述外部存储器;
分别与所述数据载入模块、所述数据写出模块和所述外部存储器连接的DMA控制器,所述DMA控制器配置为进行所述数据载入模块或所述数据写出模块与所述外部存储器之间的数据搬移。
在一些实施方式中,所述累加器模块还配置为接收对应的寄存器发出的累加运算总数量,并对所述累加运算的累加次数进行计数;
响应于所述累加次数达到所述累加运算总数量,输出并保存最终计算结果,并由所述累加器输出计算完成标志信号。
在一些实施方式中,所述缓存模块包括:特征图缓存以及权重缓存;所述数据载入模块包括分别与特征图缓存以及权重缓存连接的特征图载入模块以及权重载入模块;所述数据预加载模块包括分别与特征图载入模块以及权重载入模块连接的特征图预加载模块以及权重预加载模块,所述特征图预加载模块以及所述权重预加载模块均连接到所述MAC阵列;所述累加器模块包括与MAC阵列连接的累加器阵列以及与所述累加器阵列连接的累加器缓存,所述累加器缓存与所述数据写出模块连接;
其中,所述累加器阵列配置为:接收对应的寄存器发出的累加运算总数量和所述MAC阵列输出的计算结果,并对所述计算结果进行所述累加运算以及输出并保存每次累加运算结果,并对所述累加运算的累加次数进行计数;响应于累加次数达到所述累加运算总数量,输出并保存最终计算结果以及计算完成标志信号给所述数据写出模块;
所述累加器缓存配置为保存每次所述累加运算的结果和所述最终计算结果。
在一些实施方式中,所述接口适配模块配置为接收所述主处理器发出的指令,并判断所述指令是否可以执行,若是可以执行则将所述命令请求通道的ready信号置为有效,并通过所述寄存器模块执行所述指令,并在所述指令执行完成后,将命令响应通道的有效信号置位有效,并将执行结果通过命令响应通道返回给所述主处理器。
在一些实施方式中,所述数据载入模块包括:
AXI接口,所述AXI接口配置为接收所述寄存器发出的特征图载入启动信号或权重载入启动信号,向所述DMA控制器发送读请求,以从所述外部存储器读所述特征图或所述权重;
与所述AXI接口连接的AXI接口解码模块,所述AXI接口解码模块配置为接收所述AXI接口发出的所述特征图或所述权重,并对所述特征图或所述权重解码;
与所述AXI接口解码模块连接的控制模块,所述控制模块配置为响应于接收到所述AXI接口解码模块解码后的所述特征图或所述权重,向所述缓存模块发出写信号,以将解码后的所述特征图或所述权重写入所述缓存模块;
与所述控制模块连接的memory接口,所述memory接口配置为将所述控制模块接收到的所述特征图或所述权重通过所述memory接口写入所述缓存。
在一些实施方式中,所述数据载入模块还包括与所述控制模块连接的FIFO模块,所述FIFO模块配置为接收所述控制模块发送的所述特征图或所述权重。
在一些实施方式中,所述寄存器包括标志信号并基于所述标志信号判断能否更新。
本发明实施例的另一方面,还提供了一种服务器,包含如上所述的装置。
本发明具有以下有益技术效果:通过协处理器与主处理器配合构建一个卷积神经网络计算装置,基于主处理器自定义RISC-V,并将所述指令发送给协处理器,基于协处理器实现了卷积神经网络卷积层的卷积运算,通过这种方式实现的卷积运算速度快,同时该装置的灵活性也比较好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的卷积神经网络的卷积运算装置的一实施例的结构示意图;
图2为本发明提供的协处理器的一实施例的结构示意图;
图3为本发明提供的数据载入模块的一实施例的结构示意图;
图4为本发明提供的服务器的一实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种卷积神经网络的运算装置的实施例。如图1所示,装置包括:
主处理器100;
与所述主处理器连接的协处理器200,所述协处理器包括寄存器模块210以及运算模块220,所述寄存器模块包含多个寄存器;
外部存储器300,所述外部存储器分别与所述主处理器以及所述协处理器连接,并且存储有卷积神经网络卷积运算的输入输出数据;
其中,所述主处理器配置为基于RISC-V定义多个指令,并向所述协处理器发送所述指令;所述协处理器配置为解析所述指令,并将解析后的指令发送给对应的寄存器;所述寄存器配置为基于接收到的指令,为所述计算模块提供运算参数;所述运算模块配置为基于接收到所述运算参数从所述外部存储模块读取输入输出数据进行卷积运算。
具体的,主处理器为RISC-V芯片,外部存储器选用比较常见的内存,动态随机存取存储器(Dynamic Random Access Memory,简称DRAM)。
通过RISC-V芯片自定义指令,RISC-V为用户预留了部分指令编码空间用来扩展自定义指令,对于32位指令预定义了4组custom类型指令,即custom-0~custom-3,并在RISC-V操作码映射表中进行了具体的定义。用户可以基于custom-0~custom-3自定义指令。实施例采用custom-0定义了多个指令,采用了RISC-V的R型编码格式,具体格式见表1。
表1
本实施例中主处理器与协处理器和存储器之间通过总线连接,相互之间通过总线输入输出指令。
通过本发明的实施例,以RISC-V为主处理器,利用RISC-V可扩展的特性设计了用于实现CNN卷积层加速的自定义指令,并设计了实现这些指令的协处理器。协处理器与主处理器配合可以构建一个完整卷积神经网络计算装置,基于RISC-V主处理器实现图像预处理、激活和池化等对算力要求不高的CNN计算,基于协处理器实现计算密集的CNN卷积层的卷积运算的加速,通过本发明的方案实现的卷积神经网络计算装置专用性高和灵活性好。
在一些实施方式中,所述输入输出数据包括特征图和权重,所述指令包括:协处理器寄存器配置指令、协处理器寄存器读取指令、协处理器缓存载入指令、协处理器预加载指令和MAC阵列启动指令;
其中,所述协处理器寄存器配置指令用于配置协处理器中的寄存器;所述协处理器寄存器读取指令用于读取协处理器的寄存器;所述协处理器缓存载入指令用于从外部存储器向缓存模块载入所述特征图或所述权重;所述协处理器预加载指令用于从所述缓存模块向数据预加载模块预加载所述特征图或所述权重;MAC阵列启动指令用于启动MAC阵列执行乘加运算。
具体的,基于RISC-V芯片自定义了五条指令,指令包含操作符与操作数,五条指令分别为协处理器寄存器配置指令Write_Reg、协处理器寄存器读取指令Read_Reg、协处理器缓存载入指令Load_Data、协处理器预加载指令Preload_Data和MAC阵列启动指令MAC_Start。
其中,Write_Reg的作用是配置协处理器中的寄存器,源操作数由主处理器给出,目的操作数是协处理器中的配置寄存器;Read_Reg的作用是读取协处理器的寄存器,源操作数是协处理器中待读取的寄存器,目的操作数是主处理器中的通用寄存器;Load_Data的作用是启动从外部DRAM向协处理器内部缓存空间载入CNN卷积层的特征图和权重,用不同的指令编码表示载入的是特征图还是权重;Preload_Data的作用是启动从协处理器缓存空间向运算单元预加载特征图和权重,用不同的指令编码表示预加载的是特征图还是权重;MAC_Start的作用是启动MAC阵列执行乘加运算。
更进一步的,基于定义的五条指令在协处理器中设计了五类寄存器,
第一类是Load_Data指令相关的寄存器,用于配置数据搬移的源地址、目的地址和数据量,其中,数据搬移指的是外部存储器与协处理器之间数据的读取与写入;第二类是Preload_Data指令相关的寄存器,用于配置源地址,数据量,搬移特征图时的stride;第三类是卷积计算相关的寄存器,配置padding位置、padding值、得到最终卷积结果所需的计算量等参数;第四类是卷积结果写出相关的寄存器,配置将最终卷积结果写出到外部DRAM的目的地址和数据量;这四类寄存器为协处理器运行提供必要的参数,可以由Write_Reg指令配置,也可以由Read_Reg指令读取;第五类寄存器是反映协处理器工作状态的寄存器,只能由Read_Reg指令读取。
在一些实施方式中,所述卷积运算包括MAC阵列运算与累加运算,所述运算模块包括:
与所述主处理器连接的接口适配模块,所述接口适配模块与所述主处理器通过命令请求通道与命令响应通道连接,所述接口适配模块配置为接收所述主处理器通过命令请求通道发送的指令,并通过所述寄存器模块执行所述的指令,并通过命令响应通道将指令执行结果返回所述主处理器;
与所述接口适配模块连接的指令译码模块,所述指令译码模块配置为接收所述接口适配模块发出的指令,并对所述指令进行译码;
与所述指令译码模块连接的寄存器模块,所述寄存器模块配置为接收所述指令译码模块译码后的指令,并判断能否将所述指令写入对应的寄存器,并基于写入的所述指令输出对应的信号;
与所述寄存器模块连接的缓存模块,所述缓存模块配置为响应于接收到对应的寄存器输出的数据搬移信息,从所述外部存储器读取对应所述特征图或所述权重并保存;
分别与所述寄存器模块和所述缓存模块连接的数据载入模块;所述数据载入模块配置为响应于接收到对应寄存器发出的数据载入启动信号从所述外部存储器读取所述特征图或所述权重,并写入所述缓存模块;
分别与所述寄存器模块和所述数据载入模块连接的数据预加载模块,所述数据预加载模块配置为响应于接收到所述数据载入模块发出的所述特征图或所述权重载入完成信号并且接收到对应的寄存器发出的所述特征图或所述权重的预加载启动信号,按预设周期从所述缓存模块读取所述特征图或所述权重并保存读取的数据;
分别与所述寄存器模块和所述数据预加载模块连接的MAC阵列,所述MAC阵列配置为响应于接收到对应的寄存器发出的MAC阵列启动信号从所述数据预加载模块读取所述数据,并基于所述数据进行MAC阵列计算,并输出阵列计算结果;
分别与所述寄存器模块和所述MAC阵列连接的累加器模块,所述累加器模块配置为接收所述MAC阵列输出的计算结果,并对接收的所述计算结果进行累加运算,并保存每次累加运算的结果以进行下一次累加运算,以及响应于累加运算结束后,输出并保存最终计算结果,并由所述累加器模块输出计算完成标志信号;
分别与所述寄存器模块、所述缓存模块和所述累加器模块连接的数据写出模块,所述数据写出模块配置为接收所述累加器模块输出的所述计算完成标志信号,从所述累加器模块读取所述累加运算结果,并写入所述缓存模块或所述外部存储器;
分别与所述数据载入模块、所述数据写出模块和所述外部存储器连接的DMA控制器,所述DMA控制器配置为进行所述数据载入模块或所述数据写出模块与所述外部存储器之间的数据搬移。
在一些实施方式中,所述累加器模块还配置为接收对应的寄存器发出的累加运算总数量,并对所述累加运算的累加次数进行计数;
响应于所述累加次数达到所述累加运算总数量,输出并保存最终计算结果,并由所述累加器输出计算完成标志信号。
在一些实施方式中,所述缓存模块包括:特征图缓存以及权重缓存;所述数据载入模块包括分别与特征图缓存以及权重缓存连接的特征图载入模块以及权重载入模块;所述数据预加载模块包括分别与特征图载入模块以及权重载入模块连接的特征图预加载模块以及权重预加载模块,所述特征图预加载模块以及所述权重预加载模块均连接到所述MAC阵列;所述累加器模块包括与MAC阵列连接的累加器阵列以及与所述累加器阵列连接的累加器缓存,所述累加器缓存与所述数据写出模块连接;
其中,所述累加器阵列配置为:接收对应的寄存器发出的累加运算总数量和所述MAC阵列输出的计算结果,并对所述计算结果进行所述累加运算以及输出并保存每次累加运算结果,并对所述累加运算的累加次数进行计数;响应于累加次数达到所述累加运算总数量,输出并保存最终计算结果以及计算完成标志信号给所述数据写出模块;
所述累加器缓存配置为保存每次所述累加运算的结果和所述最终计算结果。
在一些实施方式中,所述接口适配模块配置为接收所述主处理器发出的指令,并判断所述指令是否可以执行,若是可以执行则将所述命令请求通道的ready信号置为有效,并通过所述寄存器模块执行所述指令,并在所述指令执行完成后,将命令响应通道的有效信号置位有效,并将执行结果通过命令响应通道返回给所述主处理器。
下面通过具体的实施例对本发明的多个实施方式进行说明。
如图2所示,为本发明实施提供的协处理器的结构示意图。装置包括:接口适配模块、指令译码模块、寄存器模块、由特征图缓存和权重缓存组成的缓存模块、数据载入模块、数据预加载模块、MAC阵列以及由累加器阵列和累加器缓存组成的累加器模块。
接口适配模块与主处理器通过命令请求通道与命令响应通道连接,接口适配模块配置为接收主处理器通过命令请求通道发送的指令,并通过命令响应通道将指令执行结果返回所述主处理器。
接口适配模块采用NICE接口,NICE接口包括命令请求通道、命令响应通道、memory访问请求通道和memory访问响应通道共四个通道,本实施例只采用了命令请求通道和命令响应通道。命令请求通道有req_valid、req_ready、req_instr、req_rs1和req_rs2共五个信号,其中req_valid、req_instr、req_rs1和req_rs2由主处理器输出给协处理器,req_ready由协处理器返回给主处理器,req_instr、req_rs1和req_rs2分别表示指令、第一个操作数和第二个操作数,req_valid和req_ready同时有效时表示req_instr、req_rs1和req_rs2有效。命令响应通道有rsp_valid、rsp_ready、rsp_rdat和req_err共四个信号,其中rsp_valid、rsp_rdat和rsp_err由协处理器输出给主处理器,rsp_ready由主处理器返回给协处理器,rsp_rdat和rsp_err分别表示指令执行结果和错误状态,rsp_valid和rsp_ready同时有效时表示rsp_rdat和rsp_err有效。
具体的,当命令请求通道的req_valid和req_ready信号同时有效时接口适配模块即可接收主处理器发出的req_instr、req_rs1和req_rs2信号。
命令请求通道的req_ready信号由接口适配模块发出,接口适配模块将req_ready信号置为有效之前需要判断是否可以接收并执行收到的指令,不同指令的处理方式不同。
对于Write_Reg指令,需要判断当前指令配置的寄存器是否可以更新,如果可以则当拍给出req_ready信号;如果不可以则需要等待满足寄存器更新条件之后给出req_ready信号;对于Read_Reg指令,在收到指令的当拍可以直接返回req_ready信号,并同时返回待读取寄存器的值;对于Load_Data指令,如果当前没有Load_Data指令在执行,可以给出req_ready信号;如果当前正在执行Load_data指令,则需要等待正在执行的Load_Data指令执行完毕之后才能给出req_ready信号;对于Preload_Data指令,当Load_Data指令执行完成并且前一次预取的数据可以被覆盖时给出req_ready信号;对于MAC_Start指令,如果当前没有MAC_Start指令正在执行就可以给出req_ready信号。
接口适配模块在协处理器正常执行完指令之后将命令响应通道的rsp_valid信号置为有效并返回执行结果rsp_rdat,并将执行结果rsp_rdat发出给主处理器。;如果指令执行过程中出现错误则直接将rsp_valid置为有效,不需要等指令执行完成,同时将错误状态rsp_err置为有效,并将错误状态rsp_err发出给主处理器。
指令译码模块实现对自定义指令的译码,也可以成为解析,不同的指令有不同的处理方式。对于Write_Reg指令,需要给出配置每个寄存器的标志信号,并解析出寄存器的配置值;对于Read_Reg指令,需要给出读取每个寄存器的标志信号,并接收待读取寄存器的值;对于Load_Data指令,需要判断载入的数据是特征图还是权重,并分别给出启动信号load_feature和load_weight,启动信号设计为脉冲信号,脉冲宽度从收到指令持续到开始执行数据载入;对于Preload_Data指令,需要判断预读取的数据是特征图还是权重,并分别给出启动信号preload_feature和preload_weight,启动信号设计为脉冲信号,脉冲宽度从收到指令持续到开始执行数据预读取;对于MAC_Start指令,需要解析出MAC阵列启动信号MAC_Start,启动信号设计为脉冲信号,脉冲宽度从接收到指令持续到MAC阵列开始计算。
寄存器模块,包含多个寄存器。每个寄存器设计一个标志信号作为更新的条件,指令写入寄存器之后,对应的标志信号拉低,寄存器相关的操作步骤执行完成之后,将标志信号拉高。当标志信号为高时寄存器可以更新,即可以将接收到的指令写入寄存器,否则寄存器不能更新,Write_Reg指令也就无法被接收执行。
缓存模块中包含特征图缓存和权重缓存两个子模块。
特征图缓存模块用于存储CNN中一层的输入和输出特征图(或其中的一部分),设计为乒乓buffer(缓存),将两块buffer分别表示为A和B,当从A中读取特征图计算时可以将计算结果写入B,一次计算完成后可以进行乒乓切换。因为CNN不同层特征图的数据量不同,按照最大数据量设计buffer容量会导致存储空间浪费,因此根据经验为buffer确定一个适当的总容量,buffer中每一块的容量设计为可配置。具体使用时最好的情况是buffer的容量足够存储当前层的输入和输出特征图,此时按照需要配置每块buffer的容量即可;如果无法存储完整的输入和输出图像,则尝试存储输入和输出特征图的1/2并将当前层分两次处理;如果容量仍然不足,则尝试存储输入和输出特征图的1/4并将当前层分四次处理……以此类推。
权重缓存模块用于存储CNN中一层的权重,设计为单buffer。CNN中不同层权重的数据量不同,因此buffer的容量也根据经验确定。实际使用时如果不足以存储完整的一层权重数据,需要对权重分组,这样计算得到的是输出特征图的一部分通道,多次计算可以得到完整的输出特征图。
数据载入模块的功能是控制DMA(Direct Memory Access,直接存储器访问)控制器完成外部DRAM和缓存模块之间的数据搬移。特征图载入模块和权重载入模块分别在接收到特征图载入启动信号load_feature和权重载入启动信号load_weight之后启动对DMA控制器的配置(配置值由对应的寄存器配置),配置完成后产生DMA读请求,然后由DMA控制器完成外部DRAM和数据载入模块之间的数据搬移,此后其他模块可以从缓存模块中读取数据。
数据预加载模块包含特征图预加载和权重预加载两个子模块,功能是在MAC阵列启动运算之前分别为其提供特征图和权重输入。
本实施例在执行卷积运算时采用的是特征图广播权重复用的方式,即对MAC阵列来说,权重输入可以多个时钟周期保持不变,而特征图需要每个时钟周期变化一次,一组特征图同时参与和多组权重的乘加运算。
例如,MAC阵列在输入输出通道上的并行度分别是m和n,则MAC阵列完成一次运算所需的权重数据量是n*m个点,将m个权重记作一个权重atomic,即n个权重atomic;需要的特征图数据量是m个点,将m个特征值记作一个特征图atomic,即1个特征图atomic;假设权重复用k次就可以得到一组最终卷积结果,那么在计算过程中需要的特征图总数据量是k个特征图atomic。
特征图预加载启动之前需要等待数据载入模块给出的特征图载入完成信号feature_load_done有效,当接收到特征图预加载启动信号preload_feature之后或者在MAC阵列计算过程中每周期向特征图缓存发出读请求,每次读请求读出一个atomic;以预加载启动信号为起始,发出读请求的次数由对应的寄存器配置决定,该配置值决定了MAC阵列的权重输入可以复用的次数。每收到读出的一个atomic都可以将其输出到MAC阵列。
特征图预加载的起始地址来自对应的寄存器,下一次读取时的地址由对应的寄存器配置来决定,可以采用配置值,也可以由特征图预加载模块内部自行累加产生。
特征图预加载模块支持两次预加载之间设置stride,stride值由寄存器配置。此外还支持padding,根据寄存器配置判断当前是否需要padding,如果是则不需要从特征图缓存中读数,直接赋值为配置的padding值;如果不是则需要从特征图缓存中读数。
权重预加载模块之前需要等待数据载入模块给出的权重载入完成信号weight_load_done,当接收到权重预加载启动信号preload_weight之后向权重缓存发出读请求,读取的总数据量是n个atomic。预加载模块在收到读出的数据之后将其缓存,当n个atomic都有效之后一次性输出给MAC阵列。
权重预加载模块的起始地址来自寄存器配置,根据权重排列方式的不同,在读取n个atomic的过程中每个atomic的地址可以采用寄存器配置值,也可以由权重预加载模块内部自行累加产生。
MAC阵列实现CNN卷积层的乘加运算,输出的是卷积的部分和。模块内部实现m*n个乘加器,将m个乘加器分为一组作为一个MAC单元,则共有n个MAC单元。
特征图预加载模块输出的一个特征图atomic广播到n个MAC单元,权重预加载模块输出的权重atomic按顺序分别输入每个MAC单元,当接收到MAC阵列启动信号MAC_Start并且特征图和权重输入都有效时MAC阵列可以开始计算,当所有MAC单元的输出有效时将计算结果输出。
累加器模块对MAC阵列输出的部分和进一步累加得到卷积的最终结果,当其他模块需要读取卷积结果时,该模块实现读控制。累加器模块包括累加器阵列和累加器buffer。
累加器阵列中包含n个累加器。
累加器buffer的功能是保存累加的中间结果和最终结果,设计为乒乓buffer,将两块buffer分别记作A和B,当A用于缓存累加的中间结果并参与累加运算时,B可以缓存上一次计算得到的最终卷积结果。
计算过程中对MAC阵列输出的部分和的组数计数,第一组部分和可以直接写入A,从第二组开始需要从A中读取之前的累加和并对应累加,计算结果写回A;当计数值达到寄存器配置的数量时,则得到了卷积的最终结果;此时可以给出累加器计算完成标志信号conv_done并进行乒乓buffer的切换,后续模块可以从A中读出卷积结果,B参与下一次累加运算。
数据写出模块的功能是从累加器模块中读取最终卷积结果并将其写入特征图缓存或外部DRAM。
当累加器给出的计算完成信号conv_done有效时,数据写入模块从其中读取卷积结果,如果特征图缓存的容量足够,则可以将当前层的卷积结果(也就是当前层的输出特征图)全部写入特征图缓存,数据写出模块与累加器模块之间的接口是memory接口,与缓存模块之间的接口也是memory接口,可以直接写出;特征图缓存容量不足时需要将卷积结果写入外部DRAM,数据搬移过程同样由DMA控制器实现,数据写出模块与DMAC之间的接口是AXI接口,因此内部需要实现memory接口到AXI接口之间的转换。
通过本发明的实施例,以RISC-V为主处理器,利用RISC-V可扩展的特性设计了用于实现CNN卷积层加速的自定义指令,并设计了实现这些指令的协处理器。协处理器与主处理器配合可以构建一个完整卷积神经网络计算装置,基于RISC-V主处理器实现图像预处理、激活和池化等对算力要求不高的CNN计算,基于协处理器实现计算密集的CNN卷积层的卷积运算的加速,通过本发明的方案实现的卷积神经网络计算装置专用性高和灵活性好。
在一些实施方式中,所述数据载入模块包括:
AXI接口,所述AXI接口配置为接收所述寄存器发出的特征图载入启动信号或权重载入启动信号,向所述DMA控制器发送读请求,以从所述外部存储器读所述特征图或所述权重;
与所述AXI接口连接的AXI接口解码模块,所述AXI接口解码模块配置为接收所述AXI接口发出的所述特征图或所述权重,并对所述特征图或所述权重解码;
与所述AXI接口解码模块连接的控制模块,所述控制模块配置为响应于接收到所述AXI接口解码模块解码后的所述特征图或所述权重,向所述缓存模块发出写信号,以将解码后的所述特征图或所述权重写入所述缓存模块;
与所述控制模块连接的memory接口,所述memory接口配置为将所述控制模块接收到的所述特征图或所述权重通过所述memory接口写入所述缓存。
在一些实施方式中,所述数据载入模块还包括与所述控制模块连接的FIFO模块,所述FIFO模块配置为接收所述控制模块发送的所述特征图或所述权重。
在一些实施方式中,所述寄存器包括标志信号并基于所述标志信号判断能否更新。
下面通过具体的实施例对本发明的多个实施方式进行说明。
如图3所示,为本发明实施例提供的数据载入模块的一实施例的结构示意图。数据载入模块包括AXI接口110、AXI接口解码模块120、memory接口130、控制模块140、FIFO模块150。
数据载入模块与DMA控制器之间采用AXI接口连接,与缓存模块之间采用memory接口连接,数据载入模块采用AXI接口解码模块实现从AXI接口到memory接口的转换,由DMA控制器完成外部DRAM和数据载入模块之间的数据搬移,此后其他模块可以从缓存模块中读取数据。
在特征图载入模块和权重载入模块分别在接收到特征图载入启动信号load_feature和权重载入启动信号load_weight之后,从寄存器模块获取配置信息,配置信息包括数据搬移的源地址、目的地址和数据量,并对DMA控制器进行配置,配置完成后向DMA控制器发出读请求,DMA控制器基于接收到的读请求,开始从外部DRAM读取数据搬移到数据载入模块。当接收到外部DRAM返回的数据之后,首先对由AXI接口接收的数据进行解码,取出其中的有效数据、将AXI地址转换为memory地址,然后由控制模块产生到缓存模块的写信号,当数据全部写入缓存模块之后给出数据载入完成信号feature_load_done或weight_load_done,此后其他模块可以从缓存模块中读取数据。
当其他模块从缓存模块中读取数据时,本模块在收到读请求之后会由控制模块产生到缓存模块的读信号,控制模块收到读出的数据之后送入FIFO模块实现位宽转换和跨时钟域处理,最后由FIFO模块返回其他模块所需的数据。
通过本发明的实施例,以RISC-V为主处理器,利用RISC-V可扩展的特性设计了用于实现CNN卷积层加速的自定义指令,并设计了实现这些指令的协处理器。协处理器与主处理器配合可以构建一个完整卷积神经网络计算装置,基于RISC-V主处理器实现图像预处理、激活和池化等对算力要求不高的CNN计算,基于协处理器实现计算密集的CNN卷积层的卷积运算的加速,通过本发明的方案实现的卷积神经网络计算装置专用性高和灵活性好。
基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种服务器400,包括如上所述的装置410。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (8)
1.一种卷积神经网络的运算装置,其特征在于,包括:
主处理器;
与所述主处理器连接的协处理器,所述协处理器包括寄存器模块以及运算模块,所述寄存器模块包含多个寄存器;
外部存储器,所述外部存储器分别与所述主处理器以及所述协处理器连接,并且存储有卷积神经网络卷积运算的输入输出数据;
所述运算模块包括:
与所述主处理器连接的接口适配模块,所述接口适配模块与所述主处理器通过命令请求通道与命令响应通道连接,所述接口适配模块配置为接收所述主处理器通过命令请求通道发送的指令,并通过所述寄存器模块执行所述的指令,并通过命令响应通道将指令执行结果返回所述主处理器;
与所述接口适配模块连接的指令译码模块,所述指令译码模块配置为接收所述接口适配模块发出的指令,并对所述指令进行译码;
所述寄存器模块与所述指令译码模块连接,所述寄存器模块配置为接收所述指令译码模块译码后的指令,并判断能否将所述指令写入对应的寄存器,并基于写入的所述指令输出对应的信号;其中,所述主处理器配置为基于RISC-V定义多个指令,并向所述协处理器发送所述指令;所述协处理器配置为解析所述指令,并将解析后的指令发送给对应的寄存器;所述寄存器配置为基于接收到的指令,为所述运算模块提供运算参数;所述运算模块配置为基于接收到所述运算参数从所述外部存储器读取输入输出数据进行卷积运算;
所述接口适配模块配置为接收所述主处理器发出的指令,并判断所述指令是否可以执行,若是可以执行则将所述命令请求通道的ready信号置为有效,并通过所述寄存器模块执行所述指令,并在所述指令执行完成后,将所述命令响应通道的有效信号置位有效,并将执行结果通过命令响应通道返回给所述主处理器,如果所述指令执行过程中出现错误则直接将所述命令响应通道的有效信号置为有效,不需要等所述指令执行完成,同时将错误状态置为有效,并将所述错误状态发出给所述主处理器;
其中,所述指令包括:协处理器寄存器配置指令、协处理器寄存器读取指令、协处理器缓存载入指令、协处理器预加载指令和MAC阵列启动指令,所述接口适配模块判断所述指令是否可以执行包括:
判断所述协处理器寄存器配置指令当前配置的寄存器是否可以更新,若可以则当拍给出所述ready信号,若不可以则等待满足寄存器更新条件后给出所述ready信号;收到所述协处理器寄存器读取指令的当拍,返回所述ready信号以及待读取寄存器的值;若当前没有所述协处理器缓存载入指令正在执行,给出所述ready信号,若当前有所述协处理器缓存载入指令正在执行,等待所述协处理器缓存载入指令执行完后给出所述ready信号;当所述协处理器预加载指令执行完并且前一次预取的数据可以被覆盖,给出所述ready信号;若当前没有所述MAC阵列启动指令正在执行,则给出所述ready信号;
所述运算模块还包括:
与所述寄存器模块连接的缓存模块,所述缓存模块配置为响应于接收到对应的寄存器输出的数据搬移信息,从所述外部存储器读取对应的特征图或权重并保存;
分别与所述寄存器模块和所述缓存模块连接的数据载入模块,所述数据载入模块包括:
AXI接口,所述AXI接口配置为接收所述寄存器发出的特征图载入启动信号或权重载入启动信号,向DMA控制器发送读请求,以从所述外部存储器读所述特征图或所述权重;
与所述AXI接口连接的AXI接口解码模块,所述AXI接口解码模块配置为接收所述AXI接口发出的所述特征图或所述权重,并对所述特征图或所述权重解码;
与所述AXI接口解码模块连接的控制模块,所述控制模块配置为响应于接收到所述AXI接口解码模块解码后的所述特征图或所述权重,向所述缓存模块发出写信号,以将解码后的所述特征图或所述权重写入所述缓存模块;
与所述控制模块连接的memory接口,所述memory接口配置为将所述控制模块接收到的所述特征图或所述权重通过所述memory接口写入所述缓存。
2.根据权利要求1所述的装置,其特征在于,所述输入输出数据包括特征图和权重,其中,所述协处理器寄存器配置指令用于配置协处理器中的寄存器;所述协处理器寄存器读取指令用于读取协处理器的寄存器;所述协处理器缓存载入指令用于从外部存储器向缓存模块载入所述特征图或所述权重;所述协处理器预加载指令用于从所述缓存模块向数据预加载模块预加载所述特征图或所述权重;MAC阵列启动指令用于启动MAC阵列执行乘加运算。
3.根据权利要求1所述的装置,其特征在于,所述卷积运算包括MAC阵列运算与累加运算,所述数据载入模块配置为响应于接收到对应寄存器发出的数据载入启动信号从所述外部存储器读取所述特征图或所述权重,并写入所述缓存模块;
所述运算模块还包括:
分别与所述寄存器模块和所述数据载入模块连接的数据预加载模块,所述数据预加载模块配置为响应于接收到所述数据载入模块发出的所述特征图或所述权重载入完成信号并且接收到对应的寄存器发出的所述特征图或所述权重的预加载启动信号,按预设周期从所述缓存模块读取所述特征图或所述权重并保存读取的数据;
分别与所述寄存器模块和所述数据预加载模块连接的MAC阵列,所述MAC阵列配置为响应于接收到对应的寄存器发出的MAC阵列启动信号从所述数据预加载模块读取所述数据,并基于所述数据进行MAC阵列计算,并输出阵列计算结果;
分别与所述寄存器模块和所述MAC阵列连接的累加器模块,所述累加器模块配置为接收所述MAC阵列输出的计算结果,并对接收的所述计算结果进行累加运算,并保存每次累加运算的结果以进行下一次累加运算,以及响应于累加运算结束后,输出并保存最终计算结果,并由所述累加器模块输出计算完成标志信号;
分别与所述寄存器模块、所述缓存模块和所述累加器模块连接的数据写出模块,所述数据写出模块配置为接收所述累加器模块输出的所述计算完成标志信号,从所述累加器模块读取所述累加运算结果,并写入所述缓存模块或所述外部存储器;
分别与所述数据载入模块、所述数据写出模块和所述外部存储器连接的DMA控制器,所述DMA控制器配置为进行所述数据载入模块或所述数据写出模块与所述外部存储器之间的数据搬移。
4.根据权利要求3所述的装置,其特征在于,所述累加器模块还配置为:
接收对应的寄存器发出的累加运算总数量,并对所述累加运算的累加次数进行计数;
响应于所述累加次数达到所述累加运算总数量,输出并保存最终计算结果,并由所述累加器输出计算完成标志信号。
5.根据权利要求4所述的装置,其特征在于,所述缓存模块包括:特征图缓存以及权重缓存;
所述数据载入模块包括分别与特征图缓存以及权重缓存连接的特征图载入模块以及权重载入模块;
所述数据预加载模块包括分别与特征图载入模块以及权重载入模块连接的特征图预加载模块以及权重预加载模块,所述特征图预加载模块以及所述权重预加载模块均连接到所述MAC阵列;
所述累加器模块包括与MAC阵列连接的累加器阵列以及与所述累加器阵列连接的累加器缓存,所述累加器缓存与所述数据写出模块连接;
其中,所述累加器阵列配置为:接收对应的寄存器发出的累加运算总数量和所述MAC阵列输出的计算结果,并对所述计算结果进行所述累加运算以及输出并保存每次累加运算结果,并对所述累加运算的累加次数进行计数;响应于累加次数达到所述累加运算总数量,输出并保存最终计算结果以及计算完成标志信号给所述数据写出模块;
所述累加器缓存配置为保存每次所述累加运算的结果和所述最终计算结果。
6.根据权利要求5所述的装置,其特征在于,所述数据载入模块还包括与所述控制模块连接的FIFO模块,所述FIFO模块配置为接收所述控制模块发送的所述特征图或所述权重。
7.根据权利要求1所述的装置,其特征在于,所述寄存器包括标志信号并基于所述标志信号判断能否更新。
8.一种服务器,其特征在于,包括如权利要求1-7任一项所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905140.3A CN113743599B (zh) | 2021-08-08 | 2021-08-08 | 一种卷积神经网络的运算装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905140.3A CN113743599B (zh) | 2021-08-08 | 2021-08-08 | 一种卷积神经网络的运算装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113743599A CN113743599A (zh) | 2021-12-03 |
CN113743599B true CN113743599B (zh) | 2023-08-25 |
Family
ID=78730490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110905140.3A Active CN113743599B (zh) | 2021-08-08 | 2021-08-08 | 一种卷积神经网络的运算装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113743599B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114399034B (zh) * | 2021-12-30 | 2023-05-02 | 北京奕斯伟计算技术股份有限公司 | 用于直接存储器访问装置的数据搬运方法 |
CN116432706A (zh) * | 2021-12-31 | 2023-07-14 | 深圳云天励飞技术股份有限公司 | 三维卷积神经网络的握手***、方法及相关设备 |
CN114564429A (zh) * | 2022-02-11 | 2022-05-31 | 北京智芯微电子科技有限公司 | 轻量级智能计算紧耦合结构及其数据处理方法 |
CN114548390A (zh) * | 2022-02-25 | 2022-05-27 | 电子科技大学 | 一种基于risc-v和神经形态计算的异构架构处理*** |
CN115576606B (zh) * | 2022-11-16 | 2023-03-21 | 苏州浪潮智能科技有限公司 | 实现矩阵转置乘的方法、协处理器、服务器及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630735A (zh) * | 2015-12-25 | 2016-06-01 | 南京大学 | 一种基于可重构计算阵列的协处理器 |
CN106951379A (zh) * | 2017-03-13 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种基于axi协议的高性能ddr控制器及数据传输方法 |
CN110490311A (zh) * | 2019-07-08 | 2019-11-22 | 华南理工大学 | 基于risc-v架构的卷积神经网络加速装置及其控制方法 |
CN112200305A (zh) * | 2020-09-30 | 2021-01-08 | 中国电力科学研究院有限公司 | 一种神经网络加速协处理器、处理***及处理方法 |
CN112559399A (zh) * | 2020-11-27 | 2021-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多axi接口的ddr控制器及其控制方法 |
CN113157636A (zh) * | 2021-04-01 | 2021-07-23 | 西安邮电大学 | 协处理器、近数据处理装置和方法 |
-
2021
- 2021-08-08 CN CN202110905140.3A patent/CN113743599B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630735A (zh) * | 2015-12-25 | 2016-06-01 | 南京大学 | 一种基于可重构计算阵列的协处理器 |
CN106951379A (zh) * | 2017-03-13 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种基于axi协议的高性能ddr控制器及数据传输方法 |
CN110490311A (zh) * | 2019-07-08 | 2019-11-22 | 华南理工大学 | 基于risc-v架构的卷积神经网络加速装置及其控制方法 |
CN112200305A (zh) * | 2020-09-30 | 2021-01-08 | 中国电力科学研究院有限公司 | 一种神经网络加速协处理器、处理***及处理方法 |
CN112559399A (zh) * | 2020-11-27 | 2021-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多axi接口的ddr控制器及其控制方法 |
CN113157636A (zh) * | 2021-04-01 | 2021-07-23 | 西安邮电大学 | 协处理器、近数据处理装置和方法 |
Non-Patent Citations (1)
Title |
---|
基于RISC-V架构的物联网节点处理器研究与设计;张雷;中国优秀硕士学位论文全文数据库 信息科技辑;第三章 * |
Also Published As
Publication number | Publication date |
---|---|
CN113743599A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113743599B (zh) | 一种卷积神经网络的运算装置及服务器 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
CN112214726B (zh) | 运算加速器 | |
JP6905573B2 (ja) | 計算装置と計算方法 | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN111414994A (zh) | 一种基于FPGA的Yolov3网络计算加速***及其加速方法 | |
WO2022046570A1 (en) | Vector processor architectures | |
CN109446996B (zh) | 基于fpga的人脸识别数据处理装置及处理方法 | |
CN111767986A (zh) | 一种基于神经网络的运算方法及装置 | |
CN113673701A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
WO2021249192A1 (zh) | 图像处理方法及装置、机器视觉设备、电子设备和计算机可读存储介质 | |
CN111353586A (zh) | 一种基于fpga实现cnn加速的*** | |
CN113220630A (zh) | 一种硬件加速器的可重构阵列优化方法及自动调优方法 | |
CN115516450A (zh) | 推理引擎电路架构 | |
Yu et al. | Instruction driven cross-layer cnn accelerator for fast detection on fpga | |
CN110232665B (zh) | 最大池化方法、装置、计算机设备及存储介质 | |
JP2001184336A (ja) | マトリックス演算装置及びマトリックス演算機能を有するデジタル信号処理装置 | |
CN114461978A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN116888591A (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
CN111158757A (zh) | 并行存取装置和方法以及芯片 |
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 |