CN114139700A - 一种基于cnn加速器的数据处理方法、装置及相关设备 - Google Patents
一种基于cnn加速器的数据处理方法、装置及相关设备 Download PDFInfo
- Publication number
- CN114139700A CN114139700A CN202111287171.3A CN202111287171A CN114139700A CN 114139700 A CN114139700 A CN 114139700A CN 202111287171 A CN202111287171 A CN 202111287171A CN 114139700 A CN114139700 A CN 114139700A
- Authority
- CN
- China
- Prior art keywords
- instruction
- acceleration
- data
- data processing
- cnn accelerator
- 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
Images
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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of 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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
本申请公开了一种基于CNN加速器的数据处理方法,包括接收主控器下发的启动命令;根据所述启动命令从外部存储器中读取加速指令;其中,所述加速指令由所述主控器预先配置;执行所述加速指令,获得执行结果;将所述执行结果反馈至所述主控器;该基于CNN加速器的数据处理方法可以实现更为灵活的异构加速,降低了对CPU的性能要求,有效地保证了***工作效率。本申请还公开了一种基于CNN加速器的数据处理装置、CNN加速器以及计算机可读存储介质,均具有上述有益效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种基于CNN加速器的数据处理方法,还涉及一种基于CNN加速器的数据处理装置、CNN加速器以及计算机可读存储介质。
背景技术
近年来,随着卷积神经网络(Convolutional Neural Network,CNN)的广泛应用和对模型研究的深入,对硬件设备的算力也提出了更高的要求,学术界和工业界为此提出了多种加速方法。
一种可行的方案是异构加速,即***中同时包含通用CPU(Central ProcessingUnit,中央处理器)和CNN加速器,通用CPU用于实现调度和通用计算,CNN加速器则用于提供大规模算力实现CNN加速。在具体实现时,将CNN加速器挂在CPU的外设总线上作为外设工作,CPU与CNN加速器之间通过寄存器和中断信号进行交互。然而,由于需要配置寄存器对CNN加速器进行控制,实现方式不够灵活,并且,该种实现方式对CPU的性能要求较高,当寄存器的数量较多时,依然可能会降低整体效率。
因此,如何实现更为灵活的异构加速,降低对CPU的性能要求,保证***工作效率是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种基于CNN加速器的数据处理方法,该基于CNN加速器的数据处理方法可以实现更为灵活的异构加速,降低了对CPU的性能要求,有效地保证了***工作效率;本申请的另一目的是提供一种基于CNN加速器的数据处理装置、CNN加速器以及计算机可读存储介质,均具有上述有益效果。
第一方面,本申请提供了一种基于CNN加速器的数据处理方法,包括:
接收主控器下发的启动命令;
根据所述启动命令从外部存储器中读取加速指令;其中,所述加速指令由所述主控器预先配置;
执行所述加速指令,获得执行结果;
将所述执行结果反馈至所述主控器。
优选的,所述执行所述加速指令,获得执行结果,包括:
当所述加速指令为数据载入指令时,根据所述数据载入指令从所述外部存储器中读取目标数据,并将所述目标数据加载至第一内部存储器;
当所述加速指令为数据处理指令时,根据所述数据处理指令将所述目标数据从所述第一内部存储器发送至运算器阵列,通过所述运算器阵列对所述目标数据进行处理获得数据处理结果,并将所述数据处理结果存储至第二内部存储器;
当所述加速指令为数据存储指令时,根据所述数据存储指令将所述数据处理结果从所述第二内部存储器写入至所述外部存储器;
当所述加速指令为任务等待指令时,根据所述任务等待指令暂停当前读取的加速指令,直至前一加速指令执行完毕。
优选的,所述将所述目标数据加载至第一内部存储器,包括:
获取所述目标数据的数据量大小;
获取所述第一内部存储器的空闲空间大小;
当所述数据量大小不超过所述空闲空间大小时,将所述目标数据加载至所述第一内部存储器。
优选的,所述根据所述任务等待指令暂停当前读取的加速指令,直至前一加速指令执行完毕,包括:
将所述当前读取的加速指令存储至指令缓存器;
当所述前一加速指令执行完毕后,读取所述指令缓存器中的加速指令并执行。
优选的,所述接收主控器下发的启动命令,包括:
通过外设总线接收所述主控器下发的所述启动命令。
优选的,所述外设总线具体为APB总线。
优选的,所述从外部存储器中读取加速指令,包括:
通过AXI接口从所述外部存储器中读取所述加速指令。
第二方面,本申请还公开了一种基于CNN加速器的数据处理装置,包括:
启动命令接收模块,用于接收主控器下发的启动命令;
加速指令读取模块,用于根据所述启动命令从外部存储器中读取加速指令;其中,所述加速指令由所述主控器预先配置;
数据加速处理模块,用于执行所述加速指令,获得执行结果;
执行结果反馈模块,用于将所述执行结果反馈至所述主控器。
第三方面,本申请还公开了一种CNN加速器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的任一种基于CNN加速器的数据处理方法的步骤。
第四方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的任一种基于CNN加速器的数据处理方法的步骤。
本申请所提供的一种基于CNN加速器的数据处理方法,包括接收主控器下发的启动命令;根据所述启动命令从外部存储器中读取加速指令;其中,所述加速指令由所述主控器预先配置;执行所述加速指令,获得执行结果;将所述执行结果反馈至所述主控器。
可见,本申请所提供的基于CNN加速器的数据处理方法,在外部存储器中为CNN加速器设计了自定义加速指令,使得CNN加速器可以自行基于加速指令运行,实现数据信息的加速处理,具有更高的灵活性;并且,该种实现方式无需设置多个寄存器即可实现CPU对CNN加速器的控制,有效地减少了CPU配置寄存器的数量,进一步降低了异构加速***对CPU的性能要求,同时保证了***工作效率。
本申请所提供的一种基于CNN加速器的数据处理装置、CNN加速器以及计算机可读存储介质,均具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。
图1为本申请所提供的一种基于CNN加速器的数据处理方法的流程示意图;
图2为本申请所提供的一种异构加速***的结构示意图;
图3为本申请所提供的一种指令编码格式示意图;
图4为本申请所提供的一种CNN加速器中命令队列处理模块的结构示意图;
图5为本申请所提供的一种CNN加速器中输入Buffer的结构示意图;
图6为本申请所提供的一种CNN加速器中运算模块的结构示意图;
图7为本申请所提供的一种基于CNN加速器的数据处理装置的结构示意图;
图8为本申请所提供的一种CNN加速器的结构示意图。
具体实施方式
本申请的核心是提供一种基于CNN加速器的数据处理方法,该基于CNN加速器的数据处理方法可以实现更为灵活的异构加速,降低了对CPU的性能要求,有效地保证了***工作效率;本申请的另一核心是提供一种基于CNN加速器的数据处理装置、CNN加速器以及计算机可读存储介质,也具有上述有益效果。
为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种基于CNN加速器的数据处理方法。
请参考图1,图1为本申请所提供的一种基于CNN加速器的数据处理方法的流程示意图,该基于CNN加速器的数据处理方法可包括:
S101:接收主控器下发的启动命令;
本步骤旨在实现启动命令的接收,该启动命令由主控器CPU下发,用于启动CNN加速器对数据信息进行加速处理。具体而言,CPU与CNN加速器相连接,CPU用于实现调度和通用计算,CNN加速器则用于提供大规模算力实现CNN加速,因此,CPU在完成当前数据处理时,即可向CNN加速器发送启动命令,以启动CNN加速器继续进行数据信息的加速处理。
作为一种优选实施例,上述接收主控器下发的启动命令,可以包括:通过外设总线接收主控器下发的启动命令。
具体而言,CPU与CNN加速器之间可以通过外设总线相连接,由此,主控器在向CNN加速器发送启动命令时,则可以通过该外设总线实现。
其中,上述外设总线具体可以为APB总线(Advanced Peripheral Bus,***总线)。
当然,APB总线仅为本优选实施例所提供的一种实现方式,并不唯一,还可以为其他类型的外设总线,由技术人员根据实际情况进行选择设置即可,本申请对此不做限定。
S102:根据启动命令从外部存储器中读取加速指令;其中,加速指令由主控器预先配置;
本步骤旨在实现加速指令的读取,该加速指令用于实现数据信息的加速处理。具体而言,当CNN加速器根据启动命令启动之后,即可从外部存储器中读取加速指令,以执行该加速指令实现数据信息的加速处理。
其中,加速指令是由CPU预先配置于外部存储器中的,由此,CNN加速器在启动之后即可自动加载加速指令并运行,无需为CPU配置多个寄存器对CNN加速器进行控制,灵活性较高,且有效降低了寄存器配置数量,降低了对CPU的性能要求。
可以理解的是,加速指令的数量以及类型并不唯一,均可以由技术人员根据实际需求进行设置,如数据读取、数据存储、数据计算、数据加密等处理指令,本申请对此不做限定。
此外,外部存储器是与CNN加速器直连的存储器,用于实现加速指令的存储,以便CNN加速器加载。当然,除加速指令之外,外部存储器还可以实现其他数据信息的存储,如CPU发送的需要进行加速处理的数据信息、CNN加速器中各功能模块所产生的数据信息、CNN加速器进行加速数据处理后所获得的处理结果、CNN加速器相关参数信息等。同样的,外部存储器的具体型号并不影响本技术方案的实施,可实现数据信息的存储功能即可,本申请对此不做限定。
作为一种优选实施例,上述从外部存储器中读取加速指令,可以包括:通过AXI(Advanced eXtensible Interface,总线协议)接口从外部存储器中读取加速指令。
具体而言,CNN加速器与外部存储器之间可通过AXI接口进行数据传输,即CNN加速器可以通过AXI接口从外部存储器中读取获得加速指令。当然,AXI接口仅为本优选实施例所提供的一种实现方式,并不唯一,还可以为其他协议类型的接口,可实现数据传输即可,本申请对此不做限定。
S103:执行加速指令,获得执行结果;
本步骤旨在实现加速指令的执行,以获得相应的执行结果。具体而言,在从外部存储器中加载获得加速指令后,则可以直接执行该加速指令,当然,当加速指令的数量为多个时,按照加速指令的加载顺序依次执行即可。
作为一种优选实施例,上述执行加速指令,获得执行结果,可以包括:当加速指令为数据载入指令时,根据数据载入指令从外部存储器中读取目标数据,并将目标数据加载至第一内部存储器;当加速指令为数据处理指令时,根据数据处理指令将目标数据从第一内部存储器发送至运算器阵列,通过运算器阵列对目标数据进行处理获得数据处理结果,并将数据处理结果存储至第二内部存储器;当加速指令为数据存储指令时,根据数据存储指令将数据处理结果从第二内部存储器写入至外部存储器;当加速指令为任务等待指令时,根据任务等待指令暂停当前读取的加速指令,直至前一加速指令执行完毕。
本优选实施例提供了一种执行加速指令的实现方法。具体而言,加速指令可以包括数据载入指令、数据处理指令、数据存储指令以及任务等待指令,其中,数据载入指令用于将目标数据(即需要进行加速处理的数据信息)从外部存储器载入至内部存储器(即上述第一内部存储器,用于存储待处理数据);数据处理指令用于从第一内部存储器读取目标数据,对其进行计算处理,获得处理后数据,即数据处理结果,并将该数据处理结果存储至另一内部存储器(即上述第二内部存储器,用于存储数据处理结果);数据存储指令用于将数据处理结果从第二内部存储器写入至外部存储器,以便反馈给CPU;任务等待指令则用于控制各个加速指令按照顺序依次执行,避免发生冲突,保证加速任务的稳定运行。
可以理解的是,上述第一内部存储器和第二内部存储器是指设置于CNN加速器内部的存储器,分别用于实现待处理数据的存储和数据处理结果的存储,二者所采用的类型可相同也可不同,本申请对此不做限定。
作为一种优选实施例,上述将目标数据加载至第一内部存储器,可以包括:获取目标数据的数据量大小;获取第一内部存储器的空闲空间大小;当数据量大小不超过空闲空间大小时,将目标数据加载至第一内部存储器。
为避免数据丢失问题,在将目标数据加载至第一内部存储器之前,可以先判断第一内部存储器的可用存储空间是否足以实现目标数据的存储,在第一内部存储器的可用存储空间足够大时,再将目标数据存储至其中。具体而言,可以先获取目标数据的数据量大小和第一内部存储器的空闲空间大小,进而对二者进行比较,当目标数据的数据量大小不超过第一内部存储器的空闲空间大小时,可以直接将目标数据加载至第一内部存储器;反之,则需要进入等待状态,直至第一内部存储器的空闲空间大小满足目标数据的数据量大小,再进行目标数据的载入。
作为一种优选实施例,上述根据任务等待指令暂停当前读取的加速指令,直至前一加速指令执行完毕,可以包括:将当前读取的加速指令存储至指令缓存器;当前一加速指令执行完毕后,读取指令缓存器中的加速指令并执行。
如上所述,当加速指令的数量为多个时,需要按照加速指令的加载顺序依次执行,因此,为避免加速指令执行冲突,如若当前某一加速指令正处于执行状态,那么,可以将当前读取到的加速指令存储至指令缓存器;进一步,当处于执行状态的加速指令执行完毕时,再读取指令缓存器中的加速指令进行执行。
S104:将执行结果反馈至主控器。
本步骤旨在实现执行结果反馈,具体的,在将外部存储器中的加速指令执行完毕,获得相应的执行结果之后,即可将该执行结果反馈至CPU,由CPU继续进行处理。由此,通过CNN加速器实现了数据信息的加速处理。
可见,本申请所提供的基于CNN加速器的数据处理方法,在外部存储器中为CNN加速器设计了自定义加速指令,使得CNN加速器可以自行基于加速指令运行,实现数据信息的加速处理,具有更高的灵活性;并且,该种实现方式无需设置多个寄存器即可实现CPU对CNN加速器的控制,有效地减少了CPU配置寄存器的数量,进一步降低了异构加速***对CPU的性能要求,同时保证了***工作效率。
基于上述各实施例,本申请实施例提供了另一种基于CNN加速器的数据处理方法。
首先,请参考图2,图2为本申请所提供的一种异构加速***的结构示意图,通用CPU与CNN加速器之间通过APB总线连接,CPU可以读写CNN加速器内部的寄存器,当CNN加速器完成计算或发生内部错误之后,可以产生中断通知CPU进行下一步处理;CNN加速器与外部存储器之间通过AXI接口连接,外部存储器主要用来存储CNN加速器的模型参数和输入输出数据,以及CNN加速器的指令码。
其中,CNN加速器的运行基于自定义指令,具体可以包括Load(数据载入指令)、Store(数据存储指令)、Calc(数据处理指令)和Wait(任务等待指令)共四条指令。其中,Load指令的作用是将数据从外部存储器载入CNN加速器内部的输入Buffer;Store指令的作用是将输出Buffer中的数据写出到外部存储器;Calc指令的作用是从输入Buffer读取数据,执行计算,并将计算结果暂存到输出Buffer;Wait指令的作用是等待该指令前的所有指令执行完毕。
进一步,请参考图3,图3为本申请所提供的一种指令编码格式示意图,加速指令指令码的宽度为128bit,其中:
1、opcode域表示指令类型,位宽为4bit,opcode=0表示Load指令,opcode=1表示Store指令,opcode=2表示Calc指令,opcode=3表示Wait指令,其他取值保留。
2、exe_cond域表示指令执行的条件,位宽为4bit,exe_cond=0表示可以直接开始执行;exe_cond=1表示需要等待Load指令执行完成后执行,exe_cond=2表示需要等待Store指令执行完成后执行,exe_cond=3表示需要等待Calc指令执行完成后执行,其他取值保留。
3、Load指令中,src_addr表示从外部存储器读取数据的起始地址;dst_addr表示向输入Buffer写入数据的起始地址;data_size表示传输的数据量。需要说明的是,Load指令会传输一段连续地址空间内的数据,为了提高运行效率,上层软件将数据存入外部存储器时应该根据实际需求做好数据排列,对于卷积的padding也需要在外部存储器中做好数据填充。
4、Store指令中,src_addr表示从输出Buffer读取数据的起始地址;dst_addr表示向外部存储器写入数据的起始目的地址;data_size表示传输的数据量。
5、Calc指令中,feature_src_addr表示从输入Buffer中读取feature的起始地址;feature_reuse表示feature的复用次数,该位域取值为n时表示feature复用n+1次,即计算模块的feature输入就绪之后的n+1次运算中feature保持不变;feature_bcst表示feature是否广播,即计算模块中所有乘加器子单元的feature输入是否共用一组数据;weight_src_addr表示从输入Buffer中读取weight的起始地址;weight_reuse表***ght的复用次数;weight_bcst表***ght是否广播;calc_amt表示得到最终计算结果需要的运算次数,该位域取值为n时表示需要进行n+1次运算。
进一步,对于图2所示异构加速***,CNN加速器中各功能模块的功能介绍如下:
1、命令队列处理模块:
请参考图4,图4为本申请所提供的一种CNN加速器中命令队列处理模块的结构示意图,命令队列处理模块主要用于从外部存储器中读取CNN加速器的指令码,并对其进行译码,进而将译码出的参数和控制信息输出到其他子模块实现对CNN加速器的调度。
(1)寄存器模块:CNN加速器和CPU通过APB接口相连,寄存器模块中设计了指令存储起始地址寄存器inst_addr、CNN加速器使能寄存器acc_en、中断屏蔽寄存器intr_mask和中断状态寄存器intr_status共四个寄存器,CPU需要先配置inst_addr和intr_mask寄存器,然后配置acc_en寄存器启动加速器。
(2)指令地址生成模块:其功能在于生成读取指令码的地址,第一条指令的地址是inst_addr,一条指令占用的存储空间是16byte,为了提高指令读取效率,可以一次读取两条指令,因此下一次取指令的地址在前一次的基础上增加32。其中,指令地址递增的同时会受到指令译码模块给出的状态信息的控制,当然也会受到其他子模块反馈的状态信息的影响,如果当前读取到的指令与正在执行的是同一种类型的指令,也需要暂时保持地址不变,直到正在执行的指令执行完成。
(3)读请求生成模块:其功能在于根据指令地址产生指令的读请求并传输到CNN加速器的存储器接口模块。为了提高效率,可以在一次请求中读取两条指令;外部存储器返回的指令经过存储器接口模块处理之后可以通过指令读响应通道返回。
(4)指令缓存模块:由于一次指令读请求会读回两条指令,而指令译码模块只能同时处理一条指令,因此可以将指令暂存在该指令缓存模块中,指令缓存的容量设计为存储四条指令,可以按照先后顺序将指令逐条输出到指令译码模块进行处理。
(5)指令译码模块:用于解析出指令中的各个位域。对于Load指令,解析出的信号包括load_cond、load_src_addr、load_dst_addr和load_data_size;对于Store指令,解析出的信号包括store_cond、store_src_addr、store_dst_addr和store_data_size;对于Calc指令,解析出的信号包括calc_cond、calc_feature_src_addr、calc_feature_reuse、calc_feature_bcst、calc_weight_src_addr、calc_weight_reuse、calc_weight_bcst和calc_cmt;以上信号都会输出到对应的子模块作为指令执行的参数。对于Wait指令,解析出的信号为wait_cmd,用于控制指令地址生成模块的执行,如果当前指令是Wait指令并且指令缓存为空,则保持指令地址不变,直到Wait指令之前的指令执行完毕;如果当前指令是Wait指令但是指令缓存不为空,则控制指令译码模块暂时不接受指令缓存输出的下一条指令,直到Wait指令之前的指令执行完毕。
(6)中断生成模块:CNN加速器中其他子模块返回各自的状态到中断生成模块,由中断生成模块根据这些状态信号和INTR_MASK寄存器产生中断,共有load_done、calc_done和store_done三个中断。CPU则可以在收到中断之后通过读取INTR_STATUS寄存器判断中断类型。
2、数据载入模块:
数据载入模块的功能在于执行Load指令,当Load指令的执行条件load_cond满足时,数据载入模块首先根据命令队列处理模块解析出的load_data_size和输入Buffer反馈的状态信息判断是否有足够的空闲空间,如果有,则以load_src_addr为基地址产生从外部存储器读取feature或weight的读请求,否则需要等待。为了提高效率,一次读请求的数据量可以尽量大,当数据全部写入输入Buffer之后给出完成标志load_done。
3、输入Buffer:
输入Buffer的功能在于存储数据载入模块读出的feature和weight,具体可以采用SRAM(Static Random-Access Memory,静态随机存取存储器)实现。请参考图5,图5为本申请所提供的一种CNN加速器中输入Buffer的结构示意图,输入Buffer的整个存储空间划分为16个bank,所有的SRAM bank都可以用来存储feature和weight,可以由上层软件灵活地配置feature和weight占据的存储空间。当然,运行过程中需要做好地址分配和地址维护,硬件会根据指令中的地址直接读取对应bank中的数据。此外,输入Buffer还需要记录内部空闲空间的容量,并将其反馈给数据载入模块。
4、运算控制模块:
运算控制模块用于从输入Buffer中读取feature和weight输出到运算模块,并实现运算模块的控制,进一步,运算控制模块和运算模块配合实现Calc指令。
(1)在从输入Buffer中读取feature和weight之前,需要先判断Calc指令的执行条件calc_cond是否满足,通常是判断load_done信号是否有效。
(2)在运算模块中,所有的乘加器分为m个子单元,每一个子单元中包括n个乘加器,每一个子单元需要的feature和weight输入分别称为一个feature atomic和一个weight atomic,运算控制模块则以atomic为单位从输入Buffer中读取feature和weight。
(3)运算控制模块从feature_src_addr开始读取feature,如果feature_bcst=1,则读出的一个feature atomic会输出到运算模块中所有的乘加器子单元作为输入,即输出一个feature atomic之后运算模块的feature输入就有效;如果feature_bcst=0,则需要为每一个乘加器子单元读出一个feature atomic作为输入,即输出m个feature atomic之后运算模块的feature输入才有效。如果feature_reuse=0,则运算模块完成一次计算之后就需要重新载入feature;如果feature_reuse=k(k>0),则运算模块的feature输入可以复用k+1次,k+1次运算结束之后重新载入feature。
(4)运算控制模块从weight_src_addr开始读取weight,根据weight_bcst和weight_reuse的不同,读取weight的过程与读取feature的过程类似。
(5)运算控制模块需要记录运算模块的计算次数calc_cnt,当calc_cnt<calc_amt时,重复上述读取feature和weight的过程;当calc_cnt>=calc_amt时,表示Calc指令执行完毕,给出calc_done信号。
5、运算模块:
请参考图6,图6为本申请所提供的一种CNN加速器中运算模块的结构示意图,运算模块包括乘加器阵列和累加器阵列两部分:
(1)乘加器阵列中共有m*n个乘加器,每n个乘加器组成一个子单元,共有m个子单元。当所有子单元的feature输入和weight输入都有效时可以执行运算,当然,所有子单元的输出在同一个时钟周期有效,每一个子单元输出一个数据,乘加器阵列共输出m个数据。
(2)累加器阵列中有m个累加器,分别对每个乘加器子单元的输出做累加。
最后,当运算控制模块的calc_done信号有效时将累加结果写出到输出Buffer。
6、输出Buffer:
输出Buffer用于缓存运算模块的输出结果,具体可以采用SRAM实现。
7、数据写出模块:
数据写出模块的功能在于执行Store指令,当Store指令的执行条件store_cond满足时,数据写出模块从输出Buffer中以store_src_addr为起始地址读取数据量为store_data_size的数据,然后产生起始地址为store_dst_addr的向外部存储器写出数据的写请求。最后,当全部数据写出完毕之后给出完成信号store_done。
8、存储器接口模块
存储器接口模块的功能在于将各个子模块产生的对外部存储器的读请求/读响应和写请求/写响应转换为标准的AXI4接口。
其中,读请求和读响应通道都采用valid-ready协议,读请求通道包括rd_req_valid、rd_req_ready和rd_req_pd三个信号,读响应通道包括rd_rsp_valid、rd_rsp_ready和rd_rsp_data三个信号。对于读请求,首先通过rd_req_pd传输包含地址和数据量的命令信息,存储器接口模块在接收到命令信息之后将其转换为AXI4的AR通道的信号;进一步,从外部存储器中读出的数据通过AXI4的R通道返回,存储器接口模块将其转换为读响应通道的信号并通过rd_rsp_data返回数据。
其中,写请求和写响应通道也采用valid-ready协议,写请求通道包括wr_req_valid、wr_req_ready和wr_req_pd三个信号,写响应通道包括wr_rsp_valid和wr_rsp_ready两个信号。对于写请求,首先通过wr_req_pd传输地址和数据量,存储器接口将其转换为AXI4的AW通道的信号;进一步,通过wr_req_pd传输写数据,存储器接口模块将其转换为AXI4的W通道的信号;最后,AXI4的B通道的信号转换为写响应通道的信号时表示本次传输已经完成。
可见,本申请实施例所提供的基于CNN加速器的数据处理方法,在外部存储器中为CNN加速器设计了自定义加速指令,使得CNN加速器可以自行基于加速指令运行,实现数据信息的加速处理,具有更高的灵活性;并且,该种实现方式无需设置多个寄存器即可实现CPU对CNN加速器的控制,有效地减少了CPU配置寄存器的数量,进一步降低了异构加速***对CPU的性能要求,同时保证了***工作效率。
本申请实施例提供了一种基于CNN加速器的数据处理装置。
请参考图7,图7为本申请所提供的一种基于CNN加速器的数据处理装置的结构示意图,该基于CNN加速器的数据处理装置可包括:
启动命令接收模块1,用于接收主控器下发的启动命令;
加速指令读取模块2,用于根据启动命令从外部存储器中读取加速指令;其中,加速指令由主控器预先配置;
数据加速处理模块3,用于执行加速指令,获得执行结果;
执行结果反馈模块4,用于将执行结果反馈至主控器。
可见,本申请实施例所提供的基于CNN加速器的数据处理装置,在外部存储器中为CNN加速器设计了自定义加速指令,使得CNN加速器可以自行基于加速指令运行,实现数据信息的加速处理,具有更高的灵活性;并且,该种实现方式无需设置多个寄存器即可实现CPU对CNN加速器的控制,有效地减少了CPU配置寄存器的数量,进一步降低了异构加速***对CPU的性能要求,同时保证了***工作效率。
作为一种优选实施例,上述数据加速处理模块3可包括:
数据载入单元,用于当加速指令为数据载入指令时,根据数据载入指令从外部存储器中读取目标数据,并将目标数据加载至第一内部存储器;
数据处理单元,用于当加速指令为数据处理指令时,根据数据处理指令将目标数据从第一内部存储器发送至运算器阵列,通过运算器阵列对目标数据进行处理获得数据处理结果,并将数据处理结果存储至第二内部存储器;
数据存储单元,用于当加速指令为数据存储指令时,根据数据存储指令将数据处理结果从第二内部存储器写入至外部存储器;
任务等待单元,用于当加速指令为任务等待指令时,根据任务等待指令暂停当前读取的加速指令,直至前一加速指令执行完毕。
作为一种优选实施例,上述数据载入单元可具体用于获取目标数据的数据量大小;获取第一内部存储器的空闲空间大小;当数据量大小不超过空闲空间大小时,将目标数据加载至第一内部存储器。
作为一种优选实施例,上述任务等待单元可具体用于将当前读取的加速指令存储至指令缓存器;当前一加速指令执行完毕后,读取指令缓存器中的加速指令并执行。
作为一种优选实施例,上述启动命令接收模块1可具体用于通过外设总线接收主控器下发的启动命令。
作为一种优选实施例,上述外设总线具体可以为APB总线。
作为一种优选实施例,上述加速指令读取模块2可具体用于通过AXI接口从外部存储器中读取加速指令。
对于本申请提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请实施例提供了一种计算机设备。
请参考图8,图8为本申请所提供的一种CNN加速器的结构示意图,该CNN加速器可包括:
存储器10,用于存储计算机程序;
处理器20,用于执行计算机程序时可实现如上述任意一种基于CNN加速器的数据处理方法的步骤。
对于本申请提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如上述任意一种基于CNN加速器的数据处理方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。
Claims (10)
1.一种基于CNN加速器的数据处理方法,其特征在于,所述方法包括:
接收主控器下发的启动命令;
根据所述启动命令从外部存储器中读取加速指令;其中,所述加速指令由所述主控器预先配置;
执行所述加速指令,获得执行结果;
将所述执行结果反馈至所述主控器。
2.根据权利要求1所述的方法,其特征在于,所述执行所述加速指令,获得执行结果,包括:
当所述加速指令为数据载入指令时,根据所述数据载入指令从所述外部存储器中读取目标数据,并将所述目标数据加载至第一内部存储器;
当所述加速指令为数据处理指令时,根据所述数据处理指令将所述目标数据从所述第一内部存储器发送至运算器阵列,通过所述运算器阵列对所述目标数据进行处理获得数据处理结果,并将所述数据处理结果存储至第二内部存储器;
当所述加速指令为数据存储指令时,根据所述数据存储指令将所述数据处理结果从所述第二内部存储器写入至所述外部存储器;
当所述加速指令为任务等待指令时,根据所述任务等待指令暂停当前读取的加速指令,直至前一加速指令执行完毕。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标数据加载至第一内部存储器,包括:
获取所述目标数据的数据量大小;
获取所述第一内部存储器的空闲空间大小;
当所述数据量大小不超过所述空闲空间大小时,将所述目标数据加载至所述第一内部存储器。
4.根据权利要求2所述的方法,其特征在于,所述根据所述任务等待指令暂停当前读取的加速指令,直至前一加速指令执行完毕,包括:
将所述当前读取的加速指令存储至指令缓存器;
当所述前一加速指令执行完毕后,读取所述指令缓存器中的加速指令并执行。
5.根据权利要求1所述的方法,其特征在于,所述接收主控器下发的启动命令,包括:
通过外设总线接收所述主控器下发的所述启动命令。
6.根据权利要求5所述的方法,其特征在于,所述外设总线具体为APB总线。
7.根据权利要求1所述的方法,其特征在于,所述从外部存储器中读取加速指令,包括:
通过AXI接口从所述外部存储器中读取所述加速指令。
8.一种基于CNN加速器的数据处理装置,其特征在于,包括:
启动命令接收模块,用于接收主控器下发的启动命令;
加速指令读取模块,用于根据所述启动命令从外部存储器中读取加速指令;其中,所述加速指令由所述主控器预先配置;
数据加速处理模块,用于执行所述加速指令,获得执行结果;
执行结果反馈模块,用于将所述执行结果反馈至所述主控器。
9.一种CNN加速器,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的基于CNN加速器的数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于CNN加速器的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111287171.3A CN114139700A (zh) | 2021-10-29 | 2021-10-29 | 一种基于cnn加速器的数据处理方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111287171.3A CN114139700A (zh) | 2021-10-29 | 2021-10-29 | 一种基于cnn加速器的数据处理方法、装置及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114139700A true CN114139700A (zh) | 2022-03-04 |
Family
ID=80391993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111287171.3A Pending CN114139700A (zh) | 2021-10-29 | 2021-10-29 | 一种基于cnn加速器的数据处理方法、装置及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114139700A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076140A (zh) * | 2023-10-17 | 2023-11-17 | 浪潮(北京)电子信息产业有限公司 | 一种分布式计算方法、装置、设备、***及可读存储介质 |
-
2021
- 2021-10-29 CN CN202111287171.3A patent/CN114139700A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076140A (zh) * | 2023-10-17 | 2023-11-17 | 浪潮(北京)电子信息产业有限公司 | 一种分布式计算方法、装置、设备、***及可读存储介质 |
CN117076140B (zh) * | 2023-10-17 | 2024-01-23 | 浪潮(北京)电子信息产业有限公司 | 一种分布式计算方法、装置、设备、***及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010681B2 (en) | Distributed computing system, and data transmission method and apparatus in distributed computing system | |
JP5989656B2 (ja) | 処理クラスタ用の共有機能メモリ回路要素 | |
US6954806B2 (en) | Data transfer apparatus and method | |
CN100562892C (zh) | 图像处理引擎及包含图像处理引擎的图像处理*** | |
CN111913652A (zh) | 包括处理电路的存储器件、存储器控制器和存储*** | |
US20220365782A1 (en) | Instructions for operating accelerator circuit | |
CN112667289B (zh) | 一种cnn推理加速***、加速方法及介质 | |
JP2006523884A (ja) | 並行して実行されるプロセスがfifoバッファを介して通信するデータ処理 | |
CN113743599A (zh) | 一种卷积神经网络的运算装置及服务器 | |
JPWO2010016169A1 (ja) | マルチプロセッサシステム及びその制御方法 | |
CN114139700A (zh) | 一种基于cnn加速器的数据处理方法、装置及相关设备 | |
CN117056255B (zh) | 一种原子操作装置、方法、设备及介质 | |
CN112631955A (zh) | 数据处理方法、装置、电子设备以及介质 | |
CN101939733A (zh) | 外部设备存取装置、其控制方法及***大规模集成电路 | |
CN111310638A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN115860080A (zh) | 计算核、加速器、计算方法、装置、设备、介质及*** | |
JP6817827B2 (ja) | アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム | |
EP3495960A1 (en) | Program, apparatus, and method for communicating data between parallel processor cores | |
JP4164371B2 (ja) | データ処理装置、データ処理方法、プログラム及び記憶媒体 | |
CN111371799B (zh) | Mctp控制器收发数据的控制方法、装置及设备 | |
CN112416053B (zh) | 多核架构的同步信号产生电路、芯片和同步方法及装置 | |
JP2020140284A (ja) | ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム | |
JP2002215606A (ja) | データ処理装置 | |
US8601238B2 (en) | Arithmetic processing apparatus, arithmetic processing system, and arithmetic processing method which utilize limitation information to perform enhanced arithmetic processing | |
CN118245410B (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 |