CN111142808B - 存取设备及存取方法 - Google Patents
存取设备及存取方法 Download PDFInfo
- Publication number
- CN111142808B CN111142808B CN202010267401.9A CN202010267401A CN111142808B CN 111142808 B CN111142808 B CN 111142808B CN 202010267401 A CN202010267401 A CN 202010267401A CN 111142808 B CN111142808 B CN 111142808B
- Authority
- CN
- China
- Prior art keywords
- data
- ports
- control unit
- data storage
- write
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Image Input (AREA)
Abstract
本申请公开了一种存取设备及存取方法。该存取设备中本地数据存储缓冲区用于存储目标硬件加速引擎计算出的至少一种数据类型的数据;与本地数据存储缓冲区中第一数量的基本写入端口连接的写入控制单元用于将目标硬件加速引擎对应的待写入的至少一种数据类型的数据并行写入本地数据存储缓冲区的相应数据存储区;与本地数据存储缓冲区中第一数量的基本读取端口连接的读取控制单元,用于从本地数据存储缓冲区的数据存储区并行读取目标硬件加速引擎待读取的目标数据类型的数据。该存取设备可以根据不同数据类型的数据量灵活配置本地数据存储缓冲区,且存取数据的长度不受限制。
Description
技术领域
本申请涉及集成电路技术领域,尤其涉及一种存取设备及存取方法。
背景技术
随着物联网以及人工智能的发展,硬件的算力需求越来越高,大量的数据往往需要硬件加速模块处理。为了满足数据的快速存取,以及数据缓存等需求,硬件加速模块(或称“硬件加速引擎”)通常在本地加入一个片内数据存储缓冲区,即本地数据存储缓冲区。该数据缓冲区在数据通路中直接参与核心运算,并且受到硬件加速引擎中多个模块的存取访问,因此需要本地数据存储缓冲区能够提供多端口并行存取的操作功能。
目前,对于主频(或称“时钟频率”)不高的处理器,可以在较短时间内分k次访问多端口共享存储器中不同存储单元的数据,即实现分时并行访问,以完成不同端口的并行访问。其次,该共享存储器需要采用足够高频率的存储芯片才能满足分时并行访问的要求,这类多端口分时并行存取的方式仅适用于吞吐量不高的数据传输需求,即该结构共享存储器的并不能实现多端口并行存取的操作。
对于主频高的多核处理器访问多端口共享存储器时,k个端口的存储控制器采用k*n交叉开关或片上网络将n个不同存储单元连接在一起,k个端口通过交叉开关或片上网络,同时访问n个不同的存储单元,实现了多端口并行访问存储器。
然而,此类多端口共享存储器中的交叉开关可以完成多个端口的交叉操作,但交叉开关仅支持固定长度数据的读写,即只能完成固定长数据缓冲区的读写操作,且固定长数据缓冲区内存储的数据类型也为固定类型,若要实现数据缓冲区内存储其他数据类型的数据,则需要预先配置相应数据类型的数据存储区,导致灵活度较低。
发明内容
本申请实施例提供一种存取设备及存取方法,解决了现有技术存在的上述问题,提高了配置本地数据存储缓冲区中数据类型的灵活性,以及解决了现有技术中本地数据存储缓冲区仅对支持固定长度数据进行读写操作的限制问题。
第一方面,提供了一种存取设备,该设备可以包括:
本地数据存储缓冲区,用于存储目标硬件加速引擎对应的至少一种数据类型的数据;所述本地数据存储缓冲区是由具有统一地址编码的第一数量的基本存储模块组成的不同数据类型的数据存储区;其中,所述第一数量是根据所述目标硬件加速引擎计算所需的数据量确定的,每个基本存储模块具有基本读取端口和基本写入端口;
与所述本地数据存储缓冲区中所述第一数量的基本写入端口连接的写入控制单元,用于将所述目标硬件加速引擎对应的待写入的至少一种数据类型的数据并行写入所述本地数据存储缓冲区的相应数据存储区;
与所述本地数据存储缓冲区中所述第一数量的基本读取端口连接的读取控制单元,用于从所述本地数据存储缓冲区的数据存储区并行读取所述目标硬件加速引擎待读取的目标数据类型的数据。
在一个可选的实现中,所述写入控制单元,还用于根据所述至少一种数据类型的类型数,确定所述写入控制单元的写入端口的数量;
所述读取控制单元,还用于根据所述目标数据类型的类型数,确定所述读取控制单元的读取端口的数量。
在一个可选的实现中,若所述写入控制单元写入端口的数量为第二数量N,则所述写入控制单元的第二数量N的写入端口与所述目标硬件加速引擎相连,所述写入控制单元的第一数量K的输出端口与所述第一数量K的基本写入端口一一对应相连;
若所述读取控制单元读取端口的数量为第三数量M,则所述读取控制单元的第三数量M的读取端口与所述目标硬件加速引擎相连,所述读取控制单元的第一数量K的输入端口与所述第一数量K的基本读取端口一一对应连接。
在一个可选的实现中,所述写入控制单元包括所述第二数量N的多路分配器和所述第一数量K的多路选择器;每个多路分配器包括一个输入端口和所述第一数量K的输出端口,每个多路选择器包括所述第二数量N的输入端口和一个输出端口;
所述写入控制单元的第二数量N的写入端口与所述第二数量N的多路分配器的输入端一一对应连接;
每个多路分配器的第一数量K的输出端与所述第一数量K的多路选择器的输入端一一对应连接;
所述每个多路选择器的输出端与所述相应数据存储区中待写入的基本写入端口连接。
在一个可选的实现中,所述读取控制单元包括第三数量M的多路选择器和所述第一数量K的多路分配器;每个多路选择器包括第一数量K的输入端口和一个输出端口,每个多路分配器包括一个输入端口和第三数量M的输出端口;
所述读取控制单元的第三数量M的读取端口与所述第三数量M的多路选择器的输入端一一对应连接;
每个多路选择器中第一数量K的输入端分别与所述第一数量K的多路分配器的输出端一一对应连接;
所述每个多路分配器的输入端与所述相应数据存储区中待读取的基本读取端口连接。
在一个可选的实现中,若所述目标硬件加速引擎为卷积神经网络引擎,则所述至少一种数据类型包括权值类型、特征值类型、卷积部分和类型。
第二方面,提供了一种存取方法,应用在存取设备中,该方法可以包括:
将目标硬件加速引擎对应的至少一种数据类型的数据,并行写入所述存取设备中本地数据存储缓冲区的数据存储区;
存储所述目标硬件加速引擎对应的至少一种数据类型的数据;
或者,从所述本地数据存储缓冲区的数据存储区并行读取所述目标硬件加速引擎待读取的目标数据类型的数据。
在一个可选的实现中,根据所述目标硬件加速引擎对应的至少一种数据类型的类型数,确定所述存取设备中写入控制单元的写入端口的数量;
以及,根据所述目标硬件加速引擎待读取的目标数据类型的类型数,确定所述存取设备中读取控制单元的读取端口的数量。
第三方面,提供了一种电子设备,该电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第二方面中任一项上所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面中任一所述的方法步骤。
本发明实施例提供了一种存取设备,该存取设备中本地数据存储缓冲区用于存储目标硬件加速引擎对应的至少一种数据类型的数据;本地数据存储缓冲区是由具有统一地址编码的第一数量的基本存储模块组成的不同数据类型的数据存储区;其中,第一数量是根据目标硬件加速引擎计算所需的数据量确定的,每个基本存储模块具有基本读取端口和基本写入端口。与本地数据存储缓冲区中第一数量的基本写入端口连接的写入控制单元用于将目标硬件加速引擎对应的待写入的至少一种数据类型的数据并行写入本地数据存储缓冲区的相应数据存储区;与本地数据存储缓冲区中第一数量的基本读取端口连接的读取控制单元,用于从本地数据存储缓冲区的数据存储区并行读取目标硬件加速引擎待读取的目标数据类型的数据。该存取设备可以根据不同数据类型的数据量灵活配置本地数据存储缓冲区,且可以解决现有技术中本地数据存储缓冲区仅对支持固定长度数据进行读写操作的限制问题。
附图说明
图1为本发明实施例提供的一种存取设备的结构示意图;
图2为本发明实施例提供的一种写入控制单元的结构示意图;
图3为本发明实施例提供的一种读取控制单元的结构示意图;
图4为本发明实施例提供的一种存取方法的流程示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,并不是全部的实施例。基于本申请实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明实施例提供的存取设备可以安装在服务器上,也可以安装在终端上。其中,终端可以是移动电话、智能电话、笔记本电脑、数字广播接收器、个人数字助理(PDA)、平板电脑(PAD)等用户设备(User Equipment,UE)、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备、移动台(Mobile station,MS)、移动终端(Mobile Terminal)等。
如图1所示,该存取设备可以包括本地数据存储缓冲区、写入控制单元和读取控制单元。
本地数据存储缓冲区是由具有统一地址编码的第一数量K的基本存储模块组成的不同数据类型的数据存储区。其中,每个基本存储模块具有基本读取端口和基本写入端口;第一数量K可以是根据目标硬件加速引擎计算所需的数据量确定的,也可以是技术人员预先设定的,本发明实施例在此不做限定。
本地数据存储缓冲区,用于存储目标硬件加速引擎对应的至少一种数据类型的数据,其中,至少一种数据类型的数据包括目标硬件加速引擎计算所需的数据和目标硬件加速引擎计算得到的数据;
可以理解的是,上述的目标硬件加速引擎仅是一种需要访问本地数据存储缓冲区进行存取数据的硬件模块,本地数据存储缓冲区还可以存储其他需要进行数据存取操作的硬件模块,本发明实施例在此不做限定。
可选地,若目标硬件加速引擎为卷积神经网络引擎,则至少一种数据类型包括权值类型、特征值类型、卷积部分和类型,也就是说,至少一种数据类型的数据为权值系数,图像或特征值,卷积部分和数据。其中,权值系数和图像可以从内存中获取,卷积部分和数据可以由目标硬件加速引擎每次计算得到,且目标硬件加速引擎将每次计算得到的卷积部分和数据累加,得到特征值。
为了提高配置本地数据存储缓冲区的灵活性,可以根据当前目标硬件加速引擎计算所需的数据和计算得到的数据的数据类型,配置相应的数据存储区。其中,不同数据类型的数据存储区所占的基本存储模块的数量可以不同也可以相同。
写入控制单元与本地数据存储缓冲区中所述第一数量K的基本写入端口连接,且读取控制单元与本地数据存储缓冲区中所述第一数量K的基本读取端口连接。
写入控制单元,用于将目标硬件加速引擎对应的至少一种数据类型的数据并行写入相应数据存储区。
读取控制单元,用于从本地数据存储缓冲区的数据存储区并行读取目标硬件加速引擎待读取的目标数据类型的数据。
可选地,写入控制单元,还用于根据至少一种数据类型的类型数,确定写入控制单元的写入端口的数量。
读取控制单元,还用于根据目标硬件加速引擎待读取目标数据类型的类型数,确定读取控制单元的读取端口的数量。
若至少一种数据类型的类型数为第二数量N,则写入控制单元的写入端口的数量为第二数量N。如图2所示,在写入控制单元写入端口的数量为第二数量N时,写入控制单元的第二数量N的写入端口与目标硬件加速引擎相连,写入控制单元的第一数量K的输出端口与第一数量K的基本写入端口一一对应连接。
其中,写入控制单元可以包括第二数量N的多路分配器和第一数量K的多路选择器;每个多路分配器包括一个输入端口和第一数量K的输出端口,每个多路选择器包括第二数量N的输入端口和一个输出端口。
写入控制单元的第二数量N的写入端口与第二数量N的多路分配器的输入端一一对应连接;每个多路分配器的第一数量K的输出端与第一数量K的多路选择器的输入端一一对应连接;每个多路选择器的输出端与相应数据存储区中待写入的基本写入端口连接。
多路分配器,用于根据待写入的数据类型对应的基本存储模块的块间地址,确定待写入的目标基本存储区域。
多路选择器,用于根据待写入的目标基本存储区域,确定目标基本存储区域对应的基本存储块的基本写入端口。
若目标硬件加速引擎待读取相应数据类型的类型数为第三数量M,则读取控制单元的读取端口的数量为第三数量M。如图3所示,在读取控制单元读取端口的数量为第三数量M时,读取控制单元的第三数量M的读取端口与目标硬件加速引擎相连,读取控制单元的第一数量K的输入端口与第一数量K的基本读取端口一一对应连接。
其中,读取控制单元可以包括第三数量M的多路选择器和第一数量K的多路分配器;每个多路选择器包括第一数量K的输入端口和一个输出端口,每个多路分配器包括一个输入端口和第三数量M的输出端口。
读取控制单元的第三数量M的读取端口与第三数量M的多路选择器的输入端一一对应连接;每个多路选择器中第一数量K的输入端分别与第一数量K的多路分配器的输出端一一对应连接;每个多路分配器的输入端与相应数据存储区中待读取的基本读取端口连接。
多路选择器,用于根据待读取的数据类型对应的基本存储块的基本读取端口,确定待读取的目标基本存储区域。
多路分配器,用于根据待读取的目标基本存储区域,确定目标基本存储区域对应的基本存储块的基本读取端口。
需要说明的是,每个多路分配器和每个多路选择器的具体配置是各自独立完成的。
进一步的,卷积神经网络引擎一般有多个网络层需要实现卷积计算,每个网络层由于神经网络节点规模,以及每个神经网络节点的权值系数的不同,使计算出的不同数据类型的数据所需要的存储区域的大小也不同,即基本存储模块的数量不同。
可见,本地数据存储缓冲区能够动态分配大小的机制,即能够根据不同卷积网络层需求的变化,动态适时的改变本地数据缓冲区的功能区的大小,以满足不同种类的数据对不同存储区域大小的需求,实现了本地数据存储缓冲区配置的灵活性。
在一个例子中,以目标硬件加速引擎为卷积神经网络引擎为例,对于写入控制单元的写入端口,若待写入的数据类型为:权值系数,图像或特征值,卷积部分和数据,则写入控制单元具有三个写入端口,即N=3,分别对应三种类型的数据写入。对于读取控制单元读取端口,若待读取的数据类型为:权值系数,图像或特征值,卷积部分和数据和最终卷积累加和,则读取控制单元具有四个读取端口,即M=4,分别对应四种类型的数据读取。
本地数据存储缓冲区共需要108KB,基本存储模块的大小为4KB(一般FPGA的一个基本Block RAM的大小为4KB,这样便于使用FPGA的Block RAM资源进行验证),数据位宽为16bit,这样第一数量K的取值为27。基本存储模块内地址位宽为11bit,基本存储模块间地址位宽为5bit(2^5=32>27)即配置地址从00000b到11010b。
写入控制单元包括3个多路分配器和27个3选1多路选择器,其中,每个多路分配器为1到27路的多路分配,即每个多路分配器包括27个输出端口。
读取控制单元包括4个多路选择器和27个1到4路的多路分配器,其中,每个多路选择器为27选1的多路选择器。
进一步的,以两层网络卷积计算所需的数据为例,说明如下:
对于第一层网络层中本地数据存储缓冲区的配置:
本地数据存储缓冲区中数据类型的配置:
输入的各数据类型的空间需求如下:
输入的权值系数分配到Block1(以下简称为B1)基本存储模块空间及B2基本存储模块空间;
输入的图像数据分配到B3到B15基本存储模块空间;
输入的卷积部分和数据分配到B16到B27基本存储模块空间;
权值系数输出端口只能从B1及B2基本存储模块空间读取输入的第一层网络层的权值系数;
图像或特征值输出端口只能从B3到B15基本存储模块空间读取输入的第一层网络层的图像数据;
卷积部分和数据输出端口只能从B16到B27基本存储模块空间读取在第一层网络层卷积计算过程中产生的卷积部分和数据,以供第一层网络层后续卷积计算的需要;
最终卷积累加和输出端口只能从B16到B27基本存储模块空间读取第一层网络层所有卷积计算完成后所形成的最终卷积计算和。该端口与卷积部分和数据输出端口分时并行读取B16到B27基本存储模块空间。
本地数据存储缓冲区中输入端口的配置:
对应的输入端口为权值系数输入端口、图像数据输入端口,以及卷积部分和数据输入端口。
(1)权值系数输入端口的块间地址输入范围为:00000b到00001b,再加入11位的块内地址为:000h—7ffh,即权值系数端口输入到本地数据存储缓冲区的地址为0000h到0fffh;其中,第1个3选1多路选择器和第2个3选1多路选择器的输入端口应与输出权值系数的多路分配器的输出端口相连,配置参数为00b;
(2)图像数据输入端口的块间地址输入范围为:00010b到01110b,与11位的块内地址合在一起,即图像端口输入到本地数据存储缓冲区的地址为1000h到77ffh;其中,第3个3选1多路选择器到第15个3选1多路选择器的输入端口应与输出图像数据的多路分配器的输出端口相连,配置参数为01b;
(3)卷积部分和数据输入端口的块间地址输入范围为01111b到11010b,与11位的块内地址合在一起即卷积部分和端口输入到本地数据存储缓冲区的地址为7800h到D7ffh;其中,第16个3选1多路选择器到第27个3选1多路选择器的输入端口应与输出卷积部分和的输出端口相连,配置参数为10b;
本地数据存储缓冲区中输出端口的配置:
对应的输出端口为权值系数输出端口、图像或特征值输出端口、卷积部分和数据输出端口以及最终卷积累加和输出端口。
(1)权值系数输出端口的块间地址输入范围为00000b到00001b,再加入11位的块内地址000h—7ffh,合在一起即权值系数输出端口从本地数据存储缓冲区地址为0000h到0fffh的存储空间 读取 权值系数;其中,第1个1到4路多路分配器和第2个1到4路多路分配器的输出端口分别与输出权值系数的27选1路多路选择器的第1个和第2个输出端口相连,配置参数为00b;
(2)图像或特征值输出端口的块间地址输入范围为00010b到01110b,与11位的块内地址合在一起即图像或特征值输出端口从本地数据存储缓冲区地址为1000h到77ffh的存付空间读取图像数据;其中,第3个1到4路多路分配器到第15个1到4路多路分配器的输出端口分别与输出图像数据的27选1路多路选择器的第3个到第15个输出端口相连,配置参数为01b;
(3)卷积部分和数据输出端口的块间地址输入范围为01111b到11010b,与11位的块内地址合在一起即卷积部分和数据输出端口从本地数据存储缓冲区的地址为7800h到D7ffh的存储空间读取卷积部分和数据;其中,第16个1到4路多路分配器到第27个1到4路多路分配器的输出端口分别与输出卷积部分和的27选1路多路选择器的第16个到第27输出端口相连,配置参数为10b;
(4)最终卷积累加和输出端口的块间地址输入范围为01111b到11010b,与11位的块内地址合在一起即最终卷积累加和输出端口从本地数据存储缓冲区的地址为7800h到D7ffh的存储空间读取最终卷积和数据;由于与卷积部分和数据输出端口分时复用,则此时第16个1到4路多路分配器到第27个1到4路多路分配器的输出端口重新配置为分别与输出最终卷积累加和的27选1路多路选择器的第16个到第27个输出端口相连,配置参数为11b。
对于第二层网络层中本地数据存储缓冲区的配置:
本地数据存储缓冲区中数据类型的配置:
输入的各数据类型的空间需求如下:
输入的权值系数分配到B1、B2、B3及B4基本存储模块空间;
输入的图像数据分配到B5到B16基本存储模块空间;
输入的卷积部分和数据分配到B17到B27基本存储模块空间;
权值系数输出端口只能从B1、B2、B3及B4基本存储模块空间读取输入的第二层网络层的权值系数;
图像或特征值输出端口只能从B3到B16基本存储模块空间读取输入的第二层网络层的特征数据;
卷积部分和数据输出端口只能从B17到B27基本存储模块空间读取在第二层网络层卷积计算过程中产生的卷积部分和数据,以供第二层网络层后续卷积计算的需要;
最终卷积累加和输出端口只能从B17到B27基本存储模块空间读取第二层网络层所有卷积计算完成后所形成的最终卷积计算和。该端口与卷积部分和数据输出端口分时并行读取B17到B27基本存储模块空间。
本地数据存储缓冲区中输入端口的配置:
对应的输入端口为权值系数输入端口、图像数据输入端口以及卷积部分和数据输入端口。
(1)权值系数输入端口的块间地址输入范围为00000b到00011b,再加入11位的块内地址000h—7ffh,合在一起即权值系数端口输入到本地数据存储缓冲区的地址为0000h到1fffh;其中,第1个到第4个3选1多路选择器的输入端口分别与输出权值系数的多路分配器的输出端口相连,配置参数为00b;
(2)图像数据输入端口的块间地址输入范围为00100b到01111b,与11位的块内地址合在一起即图像端口输入到本地数据存储缓冲区的地址为2000h到7fffh;其中,第5个到第16个3选1多路选择器的输入端口应与输出图像数据的多路分配器的输出端口相连,配置参数为01b;
(3)卷积部分和数据输入端口的块间地址输入范围为10000b到11010b,与11位的块内地址合在一起即卷积部分和端口输入到本地数据存储缓冲区的地址为8000h到D7ffh;其中,第17个到第27个3选1多路选择器的输入端口应与输出卷积部分和数据的输出端口相连,配置参数为10b;
本地数据存储缓冲区中输出端口的配置:
对应的输出端口为权值系数输出端口、图像或特征值输出端口、卷积部分和数据输出端口以及最终卷积累加和输出端口。
(1)权值系数输出端口的块间地址输入范围为00000b到00011b,再加入11位的块内地址000h—7ffh,合在一起即权值系数输出端口从本地数据存储缓冲区地址为0000h到1fffh的存储空间读取权值系数;其中,第1个到第4个1到4路多路分配器的输出端口,分别与输出权值系数的27选1路的多路选择器的第1个到第4个输出端口相连,配置参数为00b;
(2)图像或特征值输出端口的块间地址输入范围为00100b到01111b,与11位的块内地址合在一起即图像或特征值输出端口从本地数据存储缓冲区地址为2000h到7fffh的存付空间读取图像数据;其中,第5个到16个的1到4路的多路分配器的输出端口分别与输出图像数据的27选1路的多路选择器的第5个到第16个输出端口相连,配置参数为01b;
(3)卷积部分和数据输出端口的块间地址输入范围为10000b到11010b,与11位的块内地址合在一起即卷积部分和数据输出端口从本地数据存储缓冲区的地址为8000h到D7ffh的存储空间读取卷积部分和数据;其中,第17个到第27个1到4路的多路分配器的输出端口分别与输出卷积部分和数据的27选1路的多路选择器的第17个到第27个输出端口相连,配置参数为10b;
(4)最终卷积累加和输出端口的块间地址输入范围为10000b到11010b,与11位的块内地址合在一起即最终卷积累加和输出端口从本地数据存储缓冲区的地址为8000h到D7ffh的存储空间读取最终卷积和数据;由于与卷积部分和数据输出端口分时复用,则此时第17个到第27个1到4路多路分配器的输出端口重新配置为分别与输出最终卷积累加和的27选1路的多路选择器的第17个到第27个输出端口相连,配置参数为11b。
可见,本发明实施例提供的存取设备可以根据不同数据类型的数据量灵活配置本地数据存储缓冲区,且可以解决现有技术中本地数据存储缓冲区仅对支持固定长度数据进行读写操作的限制问题。
与上述存取设备对应的,本发明实施例还提供一种存取方法,如图4所示,该方法的执行主体为存取设备,该方法包括:
S410、将目标硬件加速引擎对应的至少一种数据类型的数据并行写入本地数据存储缓冲区的数据存储区。
S420、存储目标硬件加速引擎对应的至少一种数据类型的数据。
本地数据存储缓冲区是由具有统一地址编码的第一数量K的基本存储模块组成的不同数据类型的数据存储区,用于存储目标硬件加速引擎计算出的至少一种数据类型的数据。
其中,第一数量K是根据目标硬件加速引擎计算所需的数据量确定的,每个基本存储模块具有基本读取端口和基本写入端口。
S430、从本地数据存储缓冲区的数据存储区并行读取目标硬件加速引擎待读取的目标数据类型的数据。
在一个可选的实现中,根据目标硬件加速引擎对应的至少一种数据类型的类型数,确定所述存取设备中写入控制单元的写入端口的数量;
以及,根据所述目标硬件加速引擎待读取的目标数据类型的类型数,确定所述存取设备中读取控制单元的读取端口的数量。
本发明上述实施例提供的存取方法的各功能单元的功能,可以通过上述各单元来实现,因此,本发明实施例提供的存取方法中的各个方法步骤的具体工作过程和有益效果,在此不复赘述。
本发明实施例还提供了一种电子设备,如图5所示,包括处理器510、通信接口520、存储器530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。
存储器530,用于存放计算机程序;
处理器510,用于执行存储器530上所存放的程序时,实现如下步骤:
将目标硬件加速引擎对应的至少一种数据类型的数据,并行写入所述存取设备中本地数据存储缓冲区的数据存储区;
存储所述目标硬件加速引擎对应的至少一种数据类型的数据;
或者,从所述本地数据存储缓冲区的数据存储区并行读取所述目标硬件加速引擎待读取的目标数据类型的数据。
在一个可选的实现中,根据所述目标硬件加速引擎对应的至少一种数据类型的类型数,确定所述存取设备中写入控制单元的写入端口的数量;
以及,根据所述目标硬件加速引擎待读取的目标数据类型的类型数,确定所述存取设备中读取控制单元的读取端口的数量。
上述提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由于上述实施例中电子设备的各器件解决问题的实施方式以及有益效果可以参见图4所示的实施例中的各步骤来实现,因此,本发明实施例提供的电子设备的具体工作过程和有益效果,在此不复赘述。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的存取方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的存取方法。
本领域内的技术人员应明白,本申请实施例中的实施例可提供为方法、***、或计算机程序产品。因此,本申请实施例中可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例中可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例中是参照根据本申请实施例中实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例中范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例中实施例进行各种改动和变型而不脱离本申请实施例中实施例的精神和范围。这样,倘若本申请实施例中实施例的这些修改和变型属于本申请实施例中权利要求及其等同技术的范围之内,则本申请实施例中也意图包含这些改动和变型在内。
Claims (7)
1.一种存取设备,其特征在于,所述设备包括:
本地数据存储缓冲区,用于存储目标硬件加速引擎对应的至少一种数据类型的数据;所述本地数据存储缓冲区是由具有统一地址编码的第一数量的基本存储模块组成的不同数据类型的数据存储区;其中,所述第一数量是根据所述目标硬件加速引擎计算所需的数据量确定的,每个基本存储模块具有基本读取端口和基本写入端口;其中,若所述目标硬件加速引擎为卷积神经网络引擎,则所述至少一种数据类型包括权值类型、特征值类型和卷积部分和类型中的至少一种;
与所述本地数据存储缓冲区中所述第一数量的基本写入端口连接的写入控制单元,用于将所述目标硬件加速引擎对应的待写入的至少一种数据类型的数据并行写入所述本地数据存储缓冲区的相应数据存储区;
与所述本地数据存储缓冲区中所述第一数量的基本读取端口连接的读取控制单元,用于从所述本地数据存储缓冲区的数据存储区并行读取所述目标硬件加速引擎待读取的目标数据类型的数据;
所述写入控制单元,还用于根据所述至少一种数据类型的类型数,确定所述写入控制单元的写入端口的数量;
所述读取控制单元,还用于根据所述目标硬件加速引擎待读取的目标数据类型的类型数,确定所述读取控制单元的读取端口的数量。
2.如权利要求1所述的设备,其特征在于,
若所述写入控制单元写入端口的数量为第二数量,则所述写入控制单元的第二数量的写入端口与所述目标硬件加速引擎相连,所述写入控制单元的第一数量的输出端口与所述第一数量的基本写入端口一一对应相连;
若所述读取控制单元读取端口的数量为第三数量,则所述读取控制单元的第三数量的读取端口与所述目标硬件加速引擎相连,所述读取控制单元的第一数量的输入端口与所述第一数量的基本读取端口一一对应连接。
3.如权利要求2所述的设备,其特征在于,
所述写入控制单元包括所述第二数量的多路分配器和所述第一数量的多路选择器;每个多路分配器包括一个输入端口和所述第一数量的输出端口,每个多路选择器包括所述第二数量的输入端口和一个输出端口;
所述写入控制单元的第二数量的写入端口与所述第二数量的多路分配器的输入端一一对应连接;
每个多路分配器的第一数量的输出端与所述第一数量的多路选择器的输入端一一对应连接;
所述每个多路选择器的输出端与所述相应数据存储区中待写入的基本写入端口连接。
4.如权利要求1或2所述的设备,其特征在于,
所述读取控制单元包括第三数量的多路选择器和所述第一数量的多路分配器;每个多路选择器包括第一数量的输入端口和一个输出端口,每个多路分配器包括一个输入端口和第三数量的输出端口;
所述读取控制单元的第三数量的读取端口与所述第三数量的多路选择器的输入端一一对应连接;
每个多路选择器中第一数量的输入端分别与所述第一数量的多路分配器的输出端一一对应连接;
所述每个多路分配器的输入端与所述相应数据存储区中待读取的基本读取端口连接。
5.一种存取方法,其特征在于,应用在如权利要求1所述的存取设备中,所述方法包括:
将目标硬件加速引擎对应的至少一种数据类型的数据,并行写入所述存取设备中本地数据存储缓冲区的数据存储区;
存储所述目标硬件加速引擎对应的至少一种数据类型的数据;
或者,从所述本地数据存储缓冲区的数据存储区并行读取所述目标硬件加速引擎待读取的目标数据类型的数据;
根据所述目标硬件加速引擎对应的至少一种数据类型的类型数,确定所述存取设备中写入控制单元的写入端口的数量;
以及,根据所述目标硬件加速引擎待读取的目标数据类型的类型数,确定所述存取设备中读取控制单元的读取端口的数量;
其中,若所述目标硬件加速引擎为卷积神经网络引擎,则所述至少一种数据类型包括权值类型、特征值类型和卷积部分和类型中的至少一种。
6.一种电子设备,其特征在于,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述权利要求5所述的方法步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求5所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010267401.9A CN111142808B (zh) | 2020-04-08 | 2020-04-08 | 存取设备及存取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010267401.9A CN111142808B (zh) | 2020-04-08 | 2020-04-08 | 存取设备及存取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111142808A CN111142808A (zh) | 2020-05-12 |
CN111142808B true CN111142808B (zh) | 2020-08-04 |
Family
ID=70528815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010267401.9A Active CN111142808B (zh) | 2020-04-08 | 2020-04-08 | 存取设备及存取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111142808B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114442908B (zh) * | 2020-11-05 | 2023-08-11 | 珠海一微半导体股份有限公司 | 一种用于数据处理的硬件加速***及芯片 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330433A (zh) * | 2007-06-20 | 2008-12-24 | 中兴通讯股份有限公司 | 基于传输网的以太网设备共享缓冲区管理方法和装置 |
CN101776988B (zh) * | 2010-02-01 | 2012-11-07 | 中国人民解放军国防科学技术大学 | 一种块大小可变的可重构矩阵寄存器文件 |
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
CN105808454A (zh) * | 2014-12-31 | 2016-07-27 | 北京东土科技股份有限公司 | 一种多端口访问共享缓存的方法及装置 |
US10572225B1 (en) * | 2018-09-26 | 2020-02-25 | Xilinx, Inc. | Circuit arrangements and methods for performing multiply-and-accumulate operations |
CN109740739B (zh) * | 2018-12-29 | 2020-04-24 | 中科寒武纪科技股份有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
CN110390385B (zh) * | 2019-06-28 | 2021-09-28 | 东南大学 | 一种基于bnrp的可配置并行通用卷积神经网络加速器 |
CN110751263B (zh) * | 2019-09-09 | 2022-07-01 | 瑞芯微电子股份有限公司 | 一种高并行度的卷积运算取数方法和电路 |
US11726950B2 (en) * | 2019-09-28 | 2023-08-15 | Intel Corporation | Compute near memory convolution accelerator |
CN110880038B (zh) * | 2019-11-29 | 2022-07-01 | 中国科学院自动化研究所 | 基于fpga的加速卷积计算的***、卷积神经网络 |
-
2020
- 2020-04-08 CN CN202010267401.9A patent/CN111142808B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111142808A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112214726B (zh) | 运算加速器 | |
KR102105918B1 (ko) | 선형 어드레스 리맵핑 로직을 포함하는 메모리 시스템 및 시스템 온 칩 | |
US7577799B1 (en) | Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture | |
CN104778025B (zh) | 基于随机访问存储器的先入先出存储器的电路结构 | |
CN108121688A (zh) | 一种计算方法及相关产品 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN111142808B (zh) | 存取设备及存取方法 | |
CN111651383B (zh) | 用于具有数据流管理器的处理器中的数据流的方法和装置 | |
CN113626353A (zh) | 处理加速器架构 | |
CN117057290A (zh) | 时序优化方法、装置、电子设备及存储介质 | |
CN109902821B (zh) | 一种数据处理方法、装置及相关组件 | |
CN113687949B (zh) | 服务器部署方法、装置、部署设备及存储介质 | |
CN111566614B (zh) | 位宽匹配电路、数据写入装置、数据读出装置和电子设备 | |
CN106227506A (zh) | 一种内存压缩***中的多通道并行压缩解压***及方法 | |
CN114707451A (zh) | 数字电路的版图规划方法、装置、电子设备、存储介质 | |
JP2012248114A (ja) | 情報処理装置、情報処理装置の制御方法、およびプログラム | |
CN108108189A (zh) | 一种计算方法及相关产品 | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
CN113434813B (zh) | 一种基于神经网络的矩阵乘运算方法及相关装置 | |
CN108572787A (zh) | 一种数据存储、读取的方法及装置 | |
CN113434814B (zh) | 一种基于神经网络的矩阵乘运算方法及相关装置 | |
US9798550B2 (en) | Memory access for a vector processor | |
CN113918879A (zh) | 矩阵运算的方法和加速器 | |
CN115145842A (zh) | 数据缓存处理器及方法 | |
CN113448516A (zh) | 一种基于raid卡的数据处理方法、***、介质及设备 |
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 |