CN108388527B - 直接存储器存取引擎及其方法 - Google Patents
直接存储器存取引擎及其方法 Download PDFInfo
- Publication number
- CN108388527B CN108388527B CN201810105485.9A CN201810105485A CN108388527B CN 108388527 B CN108388527 B CN 108388527B CN 201810105485 A CN201810105485 A CN 201810105485A CN 108388527 B CN108388527 B CN 108388527B
- Authority
- CN
- China
- Prior art keywords
- data
- source
- task
- memory access
- direct memory
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 152
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000006870 function Effects 0.000 claims abstract description 67
- 230000005540 biological transmission Effects 0.000 claims abstract description 19
- 238000013528 artificial neural network Methods 0.000 claims description 19
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 3
- 239000003550 marker Substances 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 7
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 3
- 230000005284 excitation Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- -1 one of the SRAM 104 Chemical compound 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (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)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
Abstract
本发明提出一种直接存储器存取引擎及其方法。此直接存储器存取引擎用以控制来源存储器至目的存储器的数据传输,并包括任务配置存储模块、控制模块及运算模块。任务配置存储模块存储任务配置。控制模块依据任务配置读入来自来源存储器的来源数据。而运算模块响应于控制模块的任务配置而对来自来源存储器的来源数据进行函数运算,且控制模块依据任务配置而将经函数运算输出的目的数据输出至目的存储器。藉此,可以在存储器之间的数据搬运过程中实现直接(on‑the‑fly)运算。
Description
技术领域
本发明涉及一种直接存储器存取(Direct Memory Access,DMA)引擎 (engine),且尤其涉及一种适用于神经网络(Neural Network,NN)运算的直接存储器存取引擎及其方法。
背景技术
直接存储器存取技术能够对一个地址空间记录的数据传输到不同存储器、储存器或输入输出装置中的特定地址空间,而不需要通过处理器来存取存储器,是相当快速的数据传输方式。而前述传输作业可通过直接存储器存取引擎(或称直接存储器控制器)来实行,并经常应用在诸如绘图显示、网络接口、硬盘控制等硬件设备。
另一方面,神经网络是一种模仿生物神经网络的结构与功能的数学模型,其可对函数进行评估或近似运算,并经常应用于人工智能领域。一般而言,执行神经网络运算需要抓取大量地址非连续的数据,传统直接存储器存取引擎需要反复启动多次执行多次传输作业以进行数据传输,神经网络运算的特点是每次数据传输的数据量并不大,但数据传输的次数非常之多,每次数据传输都需要启动直接存储器存取引擎并对其进行配置,而直接存储器存取引擎的配置比较耗时,甚至长于数据传输本身所耗费的时间。由此可知,现有神经网络运算仍有待改善。
发明内容
有鉴于此,本发明提供一种直接存储器存取引擎及其方法,在传输数据的过程中导入神经网络相关运算,使直接存储器存取引擎直接实现在传输过程中的(on-the-fly)运算。
本发明的直接存储器存取引擎,其用以控制来源存储器至目的存储器的数据传输。而此直接存储器存取引擎包括任务配置存储模块、控制模块及运算模块。任务配置存储模块存储任务配置。控制模块依据任务配置读入来自来源存储器的来源数据。而运算模块响应于控制模块的任务配置而对来自来源存储器的来源数据进行函数运算,且控制模块依据任务配置而将经函数运算输出的目的数据输出至目的存储器。
另一方面,本发明的直接存储器存取方法,其适用于直接存储器存取引擎控制来源存储器至目的存储器的数据传输。而此直接存储器存取方法包括下列步骤。取得任务配置。依据任务配置读入来自来源存储器的来源数据。响应于任务配置而对来自来源存储器的来源数据进行函数运算。依据任务配置而将经函数运算输出的目的数据输出至目的存储器。
基于上述,相较于传统直接存储器存取引擎仅具有数据传输功能,且对来源数据的运算须由处理元件(Processing Element,PE)执行。在来源存储器与目的存储器之间的数据传输过程中,本发明实施例的直接存储器存取引擎可对传输的数据进行函数运算。藉此,可减少处理元件的计算时间或直接存储器存取引擎的传输数据时间,从而大幅提升运算速度,进而助于神经网络运算中的大量数据存取及交换操作。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是依据本发明一实施例的计算机系统的示意图。
图2是依据本发明一实施例的直接存储器存取引擎的元件方块图。
图3是依据本发明一实施例的直接存储器存取方法的流程图。
图4A是一示例说明函数运算为平均值运算的逻辑运算架构图。
图4B是另一示例说明函数运算为平均值运算的逻辑运算架构图。
图5是一示例说明三维数据矩阵。
图6A及6B是一示例说明调整数据矩阵的维度。
具体实施方式
图1是依据本发明一实施例的计算机系统1的示意图。请参照图1,计算机系统1可以是但不局限于桌面计算机、笔记本电脑、服务器、工作站、智能手机及平板计算机等装置,并包括但不仅限于直接存储器存取引擎100、微控制单元(Micro Control Unit,MCU)101及一个或更多个处理元件(Processing Element,PE)102、一个或更多个静态随机存取存储器(Static Random Access Memory,SRAM)104、主存储器105、及输入/输出装置106。在某些实施例中,计算机系统1还包括一个或更多个多路复用器103。
直接存储器存取引擎100控制来源存储器(即SRAM 104、主存储器105 及输入/输出装置106中的一者)至目的存储器(即SRAM 104、主存储器 105及输入/输出装置106中的另一者)的数据传输。举例而言,微控制单元 101对各个处理元件102和直接存储器存取引擎100之间进行神经网络相关运算的任务(task)分配:例如处理元件102的一者(后面称之为第一处理元件)执行第一卷积(convolution)运算后向微控制单元101发出中断信号。微控制单元101接收到此中断信号后根据其预先存储的任务配置中的描述内容得知后续两个任务将分别交由直接存储器存取引擎100及另一处理元件 102(后面称之为第二处理元件)完成,则配置将数据从第一处理元件102 的存储器(即SRAM 104、主存储器105及输入/输出装置106中的一者)经由直接存储器存取引擎100传输至第二处理元件102的存储器(即SRAM104、主存储器105及输入/输出装置106中的另一者)过程中,完成任务配置所描述的函数运算,这些函数运算包括但不限于:神经网络相关的最大值运算、平均值运算、比例缩放(scaling)运算、批量标准化(Batch Normalization, BN)运算、以及激励函数(activationfunction)运算等,只要是在运算过程中数据无需重复使用、也无需缓存的函数运算都可以藉由本发明的直接存储器存取引擎100实现。直接存储器存取引擎100完成数据传输及函数运算后,向微控制单元101发出中断信号,微控制单元101接收到此中断信号后根据其预先存储的任务配置中的描述内容得知下一个任务将由前述DMA传输的目的存储器对应的第二处理元件102完成,则配置第二处理元件102执行第二卷积(convolution)运算。需说明的是,上述神经网络相关运算的任务分配方式仅为举例,本发明并不局限于此。
请接着参照图2,直接存储器存取引擎(或称直接存储器存取控制器) 100可以是独立的芯片、处理器、集成电路或内嵌于其他芯片、硬件电路,直接存储器存取引擎100包括但不仅限于:任务配置存储模块110、控制模块120及第一运算模块130,在某些实施例中,直接存储器存取引擎100还包括:来源地址产生器140、目的地址产生器150、数据格式转换单元160、队列170、来源总线接口180、及目的总线接口190。
任务配置存储模块110经由主机配置(configuration)接口与微控制单元101耦接,任务配置存储模块110可以是SRAM、动态随机存取存储器 (Dynamic Random AccessMemory,DRAM)、闪存(flash memory)等类型存储媒介,且用以记录来自微控制单元101的任务配置(task configuration)。此任务配置记录有来源存储器、来源起始地址、目的存储器、目的起始地址、函数运算类型、来源数据长度、优先权、中断标记(flag)等配置参数的相关描述信息,待后续实施例详细说明。
控制模块120耦接微控制单元101,控制模块120可以是指令、控制或状态寄存器、或是控制逻辑(logic)。控制模块120用以依据任务配置控制其他元件或模块,且可发送中断信号至微控制单元101以指示任务完成。
运算模块130耦接控制模块120,运算模块130可以是逻辑运算单元,其符合单指令流多数据流(Single Instruction Multiple Data,SIMD)架构,在其它实施例中,运算模块130也可以是其他类型的运算单元。运算模块130 响应于控制模块120的任务配置而对输入数据执行函数运算。需说明的是,依据运算需求,运算模块130可能包括加法器、寄存器、计数器、位移器其中一者或其组合,待后续实施例详述。本发明的直接存储器存取引擎100将来源数据由来源存储器(即图1的SRAM 104、主存储器105及输入/输出装置106中的一者)传输至目的存储器(即图1的SRAM 104、主存储器105 及输入/输出装置106中的另一者)的过程中,藉由运算模块130对该来源数据进行函数运算。上述函数运算包括但不限于:神经网络相关的最大值运算、平均值运算、比例缩放(scaling)运算、批量标准化(BatchNormalization,BN) 运算、以及激励函数(activation function)运算等等,在这些函数运算中,来源数据无需重复使用、亦无需缓存,即这些来源数据为流式数据(stream data),其仅会被运算模块130运算一次(即,来源数据仅经由一个函数运算运算一次)。
来源地址产生器140耦接控制模块120,来源地址产生器140可以是地址寄存器,且用以依据来自控制模块120的控制信号而产生来源存储器(图 1中的SRAM 104、主存储器105、或输入/输出装置106)中特定来源地址,以经由来源总线接口180读入来自来源存储器的来源数据。
目的地址产生器150耦接控制模块120,目的地址产生器150可以是地址寄存器,且用以依据来自控制模块120的控制信号而产生目的存储器(图1中的SRAM 104、主存储器105、或输入/输出装置106)中特定目的地址,以将运算模块130输出的目的数据经由目的总线接口190输出/写入到目的存储器。
数据格式转换单元160耦接来源总线接口180及运算模块130,数据格式转换单元160用以将来自该来源存储器的来源数据转换成多个并行的输入数据。队列170耦接运算模块130及目的总线接口190,且可以是缓冲器、寄存器,并用以寄存将输出的目的数据,以同步来源及目的存储器的频率的相位差。
微控制器101耦接直接存储器存取引擎100,微控制器101可以是支持精简指令集运算(Reduced Instruction Set Computing,RISC)、或是复杂指令集运算(ComplexInstruction Set Computing,CISC)等各类型的中央处理器、微处理器、特殊集成电路、或场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)等可编程单元,且用以配置前述任务配置。
一个或多个处理元件102组成处理阵列,其连接微控制器101,并用以执行运算和数据处理功能。而各多路复用器103将直接存储器存取引擎100 及处理元件102耦接于SRAM104、主存储器105(例如,DRAM)及输入/ 输出装置106(例如,绘图显示卡、网络接口卡、显示器等装置),并用以控制由直接存储器存取引擎100或是处理元件102对于SRAM 104、主存储器 105、及输入/输出装置106的存取操作。图1的实施例是假设SRAM 104、主存储器105及输入/输出装置106都只有一个读/写端口,因此需要藉由多路复用器103选择由直接存储器存取引擎100或处理元件102来存取,但本发明并不局限于此,在SRAM 104、主存储器105及输入/输出装置106有两个读/写端口的实施例中,无须设置多路复用器103。
为了方便理解本发明实施例的操作流程,以下将举诸多实施例详细说明本发明实施例中直接存储器存取引擎100的运作流程。图3是依据本发明一实施例说明直接存储器存取方法的流程图。请参照图3,本实施例的方法适用于图2中的直接存储器存取引擎100。下文中,将先搭配计算机系统1及直接存储器存取引擎100中的各项元件及模块说明本发明实施例所述的方法。本方法的各个流程可依照实施情形而随之调整,且并不仅限于此。
来自微控制器101的任务配置经由主机配置接口而记录于任务配置存储模块110,使控制模块120取得任务配置(步骤S310)。于本实施例中,任务配置包括但不仅限于来源存储器(可能是SRAM 104、主存储器105、或输入/输出装置106)及其来源起始地址、目的存储器(可能是SRAM 104、主存储器105、或输入/输出装置106)及其目的起始地址、直接存储器存取模式、函数运算类型、来源数据长度、及其他依附(dependence)信号(该信号满足则驱动直接存储器存取引擎100执行微控制器101指派的任务),其中直接存储器存取模式包括但不限于:维度(即,一维(Dimension,D)、二维或三维)、步长(stride)、大小(size)等。
针对直接存储器存取模式中不同维度,请详见表(1)所示个别记录的参数:
表(1)
维度 | 步长 | 大小 | 步长 | 大小 | 步长 | 大小 |
1D | stride1 | size1 | ||||
2D | stride1 | size1 | stride2 | size2 | ||
3D | stride1 | size1 | stride2 | size2 | stride3 | size3 |
针对一维数据矩阵,步长stride1代表跳跃读取间隔的距离,也就是相邻两个元素的起始地址的差值;大小size1代表这笔来源数据所包含的元素的数量。针对二维数据矩阵,步长stride1代表行跳跃读取间隔的距离,大小size1代表这笔来源数据所包含的行元素的数量;步长stride2代表列跳跃读取间隔的距离,大小size2代表这笔来源数据所包含的列元素的数量。针对三维资料矩阵,请搭配图5的示例,其参数如表(2)所示:
表(2)
维度 | 步长 | 大小 | 步长 | 大小 | 步长 | 大小 |
3D | stride1=1 | size1=8 | stride2=36 | size2=4 | stride3=144 | size3=3 |
步长stride1为1且大小size1为8表示一维矩阵的数据大小有8个元素 (参照图5中,第3行的有色底纹形成8个元素),且相邻2个元素(element) 间的跳跃步长为1,即相邻元素的地址连续;步长stride2为36且大小size2 为4表示二维矩阵的数据大小有4个元素(参照图5中,第3至6行的有色底纹,每行形成一个元素),且相邻2个元素间的跳跃步长为36,即相邻元素的起始地址相差36;步长stride3为144且大小size3为3表示三维矩阵的数据大小有3个元素(参照图5中,第3至6行、第10至13行、第17至 20行的有色底纹,每4×8矩阵形成一个元素),且相邻2个元素间的跳跃步长为144,即相邻元素的起始地址相差144。
此外,针对任务配置,假设直接存储器存取引擎100利用分散-收集 (scatter-gather)式传输(即,使用一个链接列表(linked list)描述物理上不连续的存储空间,并通知首位地址;而待一块物理连续的数据传输后,不发起中断信号,而是根据链接列表来传输下一块物理上的连续数据,直到此链接列表上描述的数据全部传输完毕后再发起新的链接列表),则可参考表 (3)所示链接列表的范例:
表(3)
任务0执行结束后,控制模块120依据链接列表执行任务2。
需说明的是,直接存储器存取引擎100亦可能利用区块(block)式传输 (即,传输完一块物理上连续的数据即引发一次中断,微控制单元101再重新配置后进行下一块物理上连续的数据传输),则其任务配置可能仅记录一项任务(task)的配置参数。
接着,控制模块120依据任务配置记录的来源存储器、其来源起始地址、及直接存储器存取模式指示来源地址产生器140产生来源存储器中的来源地址,以经由来源总线接口180读入来自指定的来源存储器的来源数据(步骤 S320)。例如,表(3)指示来源存储器为SRAM0且其来源起始地址为0×1000,则来源地址产生器140产生从来源存储器SRAM0中的来源地址0×1000开始的来源地址,“步长stride1=1且大小size1=64,步长stride2=36且大小 size2=64”表示:来源数据为一个二维矩阵,一维(行)包括64个元素,相邻2个元素间的跳跃步长为1个数据存储地址,即相邻2列元素的地址连续;二维(列)也包括64个元素,且相邻2行元素间的跳跃步长为36,即相邻 2行元素的起始地址相差36个数据存储地址。
对于传统直接存储器存取引擎,其读入来源存储器的源数据后,即会将此来源数据直接写入目的存储器的特定地址。与已知技术不同之处在于,本发明实施例的运算模块130还会响应于控制模块120针对任务配置中函数运算的类型及其来源数据的数据长度的指示,而对来自来源存储器的来源数据进行函数运算(步骤S330)。函数运算包括但不限于:神经网络相关的最大值运算(即,数个数值中取最大者)、平均值运算(即,数个数值加总除上个数的值)、比例缩放(scaling)运算、批量标准化(Batch Normalization,BN) 运算、以及激励(activation)函数运算(即,使得神经网络的每一层的输出是输入的非线性函数而不再是输入的线性组合,可逼近任意函数,例如是 sigmoid、tanh、ReLU函数等)等。概括而言,来源数据无需缓存亦无需重复使用,仅被运算模块130运算一次的函数运算都可以由本发明的运算模块 130在直接存储器存取引擎100执行DMA数据传输过程中实现。
举例而言,图4A是一示例说明函数运算为平均值运算的逻辑运算架构图。请参照图4A,假设函数运算类型是平均值运算、且输入至运算模块130 的来源数据的数据长度为8,即源数据包括8个元素(element),且此第一运算模块130是符合SIMD架构的运算单元。第一运算模块130包括数个加法器131与位移3位的位移器132。来源数据输入到数据格式转换单元160,值得注意的是,经由来源总线接口180输入数据格式转换单元160的来源数据中的有效数据可能地址不连续,数据格式转换单元160提取来源数据中的有效数据,并将此有效数据转换为多个并行输入数据,而此有效数据的位宽 (bit width)等于运算模块130的位宽:举例而言,第一运算模块130所执行的SIMD运算的对象为8个元素,每个元素的位宽例如为16bit,即第一运算模块130的位宽为128bit,则当数据格式转换单元160提取的有效数据的位宽累积达到128bit,则将其转换为8个16bit的并行输入数据输入至第一运算模块130。在一实施例中,本发明的第一运算模块130的位宽设计为至少等于来源总线接口180的位宽,例如均为128bit:如果有效数据地址不连续,则数据格式转换单元160依据前述任务配置所包括的stride和size参数从一次读进的128bit的来源数据提取至少一个16bit的有效数据,当有效数据的总长度累积达到128bit时,数据格式转换单元160将128bit的有效数据转换成8个16bit的并行输入数据并输入至第一运算模块130,使第一运算模块130基于SIMD技术对这些并行输入数据执行并行运算,以实现多输入运算;如果有效数据地址连续,则经由来源总线接口180一次读进来的 128bit的来源数据可直接被数据格式转换单元160转换为8个16bit的并行输入数据输入至第一运算模块130,第一运算模块130的位宽设计为128bit 的目的是为了避免当来源总线接口180一次读进来源数据均为有效数据时,第一运算模块130不能一次接收并运算而成为硬件瓶颈(bottleneck)。
图4B是另一范例说明函数运算为平均值运算的逻辑运算架构图,适用于函数运算的位宽超出第二运算模块230硬件位宽的情形。请参照图4B,假设函数运算种类同样是平均值运算、输入至第二运算模块230的数据长度为8,即源数据包括8个元素(element)、且每个元素大小为16bit,第二运算模块230也符合SIMD架构,其位宽为128bit,本实施例与图4A的不同之处在于:本实施例中函数运算要求例如对32个16bit的元素进行平均值运算,函数运算的位宽为512bit,超出第二运算模块230硬件位宽。第二运算模块230包括第一运算模块130、计数器(counter)233、及寄存器(register) 234。第一运算模块130对数据格式转换单元160并行输入的128bit的有效数据基于SIMD技术执行并行运算,图4B的第一运算模块130形如图4A 的第一运算模块130,在此不再赘述。计数器233连接第一运算模块130,并对上述并行运算的运算次数进行计数。而寄存器234记录函数运算的中间结果,例如每次并行运算的结果。本实施例的函数运算要求第一运算模块130 执行4次前述并行运算后,再对寄存器234中记录的每次并行运算的结果再进行一次前述并行运算以实现32个元素的平均值运算。本发明并于局限于此,例如第一运算模块130也可以仅执行32个元素的累加运算,第一运算模块130再将求得的累加和输出至外接的位移器(图未绘示)以求得平均值。
需说明的是,依据不同函数运算类型,第一和第二运算模块130、230 的逻辑运算架构可能不同,端视实际需求而调整,本发明实施例不加以限制。例如第一运算模块130还可以是乘累加树等。
接着,控制模块120依据任务配置记录的目的存储器、其目的起始地址、及直接存储器存取模式指示目的地址产生器150产生目的存储器中的目的地址,以经由目的总线接口190而将经函数运算输出的目的数据输出至目的存储器(步骤S340)。例如,表(3)指示目的存储器为SRAM1且其目的起始地址为0×2000。而值得注意的是,平均值运算及最大值运算的运算前后的数据长度会改变(多输入单输出),即运算模块130对源数据进行函数运算后会输出与源数据不同大小的目的数据(目的数据的传输长度不同于源数据的传输长度)。因此,本发明实施例的任务配置中的配置参数只记录目的地址的起始地址而不限定目的数据的数据长度。而来源数据的数据长度可由前述步长(stride)及大小(size)得出。
由于目的数据大小可能为未知,因此为了解决直接存储器存取的传输结束的问题,在一实施例中,来源地址产生器140会先依据任务配置(即,步长及大小)所得出的来源数据的数据长度对来源数据中的尾地址设置结尾标记。而目的地址产生器150在当被设置此结尾标记的尾地址被处理时,判定此来源数据已传输完毕,并可通知控制模块120检测任务配置存储模块110 中的下一个任务配置。而在另一实施例中,微控制器101或控制模块120在配置任务配置时,即依据来源数据的数据长度与函数运算类型计算的类型而得出目的数据的数据长度,并将此目的数据的数据长度写入目的地址产生器 150,使目的地址产生器150取得本次任务配置所对应的目的数据的数据长度。
此外,本发明实施例的直接存储器存取引擎100还能依据接续(或下一) 运算的第二处理元件102所需输入数据格式(pattern)(输入数据格式),而调整输出至目的存储器的数据格式,使来源地址与目的地址的维度不同。以图6A及6B所示的存储器地址数据格式为例,请先参照图6A是由来源地址产生器140所产生的二维地址(4×8的二维矩阵)。假设接续运算的第二处理元件102的输入数据格式是一维地址,则请参照图6B,目的地址产生器 150将据以产生一维地址(1×32的一维矩阵)。藉此,在直接存储器存取引擎100搬运数据过程中,即可调整数据格式,使得第二处理元件102可在一个时间周期内取回所需数据而不用自行调整数据格式。
需说明的是,直接存储器存取引擎100的目的地址产生器150还能依据第二处理元件102的输入数据格式,而将来源地址产生器140所产生的三维地址转换成一维或二维地址、将二维地址转换成三维地址、或是将一维地址转换成二维或三维地址,甚至是维持维度,端视实际需求而调整。
综上所述,在两存储器之间的搬运数据过程中,本发明实施例的直接存储器存取引擎不仅能执行神经网络相关的函数运算,还能调整数据格式,从而分担处理原件的处理及运算负担。已知原由处理原件执行的运算,本发明实施例的来源数据则在处理元件的存储器之间进行DMA传输时由直接存储器存取引擎以直接(on-the-fly)运算地方式完成。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的权利要求所界定者为准。
【符号说明】
1:计算机系统
100:直接存储器存取引擎
101:微控制单元
102:处理元件
103:多路复用器
104:静态随机存取存储器
105:主存储器
106:输入/输出装置
110:任务配置存储模块
120:控制模块
130:第一运算模块
131:加法器
132:位移器
140:来源地址产生器
150:目的地址产生器
160:数据格式转换单元
170:队列
180:来源总线接口
190:目的总线接口
230:第二运算模块
233:计数器
234:寄存器
S310~S340:步骤。
Claims (20)
1.一种直接存储器存取引擎,用以控制来源存储器至目的存储器的数据传输,而所述直接存储器存取引擎包括:
任务配置存储模块,存储至少一任务配置;
控制模块,依据所述任务配置的一者读入来自所述来源存储器的来源数据;以及
运算模块,响应于所述控制模块的所述任务配置的一者而对来自所述来源存储器的所述来源数据进行函数运算,且所述控制模块依据所述任务配置的一者将经所述函数运算输出的目的数据输出至所述目的存储器,
其中,所述至少一任务配置由耦接于所述直接存储器存取引擎和至少一处理元件之间的微控制单元在所述直接存储器存取引擎和所述处理元件之间分配与神经网络相关的运算任务而产生,
其中,所述与神经网络相关的运算任务包括第一任务、第二任务和第三任务,所述至少一处理元件包括第一处理元件和第二处理元件,且当所述第一处理元件执行所述第一任务产生所述来源数据后,所述微控制单元依据所述任务配置的一者确定所述第二任务和所述第三任务将分别由所述直接存储器存取引擎和所述第二处理元件执行,则配置所述运算模块将所述来源数据从所述第一处理元件的所述来源存储器经由所述直接存储器存取引擎传输的过程中完成所述函数运算以产生所述目的数据以输出至所述第二处理元件的所述目的存储器。
2.如权利要求1所述的直接存储器存取引擎,其中所述来源数据仅被所述运算模块运算一次。
3.如权利要求1所述的直接存储器存取引擎,还包括:
数据格式转换单元,耦接所述运算模块,并将来自所述来源存储器的所述来源数据转换成多个并行输入数据并输入至所述运算模块,而
所述运算模块对所述并行输入数据进行并行运算。
4.如权利要求3所述的直接存储器存取引擎,其中所述运算模块符合单指令流多数据流架构。
5.如权利要求3所述的直接存储器存取引擎,其中所述数据格式转换单元提取所述来源数据中的有效数据,并将所述有效数据转换为所述并行输入数据,其中所述有效数据的位宽等于所述运算模块的位宽。
6.如权利要求1所述的直接存储器存取引擎,其中所述运算模块包括:
寄存器,记录所述函数运算的中间结果;
运算单元,对所述来源数据执行并行运算;以及
计数器,耦接所述运算单元,并对所述并行运算的运算次数进行计数,其中所述函数运算包括多次所述并行运算。
7.如权利要求1所述的直接存储器存取引擎,其中所述任务配置的一者用于指示所述函数运算及所述来源数据的数据长度。
8.如权利要求1所述的直接存储器存取引擎,还包括:
来源地址产生器,耦接所述控制模块,并依据所述任务配置的一者所指示的所述来源数据的数据长度对所述来源数据中的尾地址设置结尾标记;以及
目的地址产生器,耦接所述控制模块,当被设置所述结尾标记的所述尾地址被处理,判定所述来源数据传输完毕。
9.如权利要求1所述的直接存储器存取引擎,还包括:
目的地址产生器,耦接所述控制模块,并取得所述任务配置的一者所对应的所述目的数据的数据长度,其中所述目的数据的数据长度是基于所述任务配置的一者所指示的所述函数运算的类型及所述来源数据的数据长度而得出。
10.如权利要求1所述的直接存储器存取引擎,还包括:
来源地址产生器,耦接所述控制模块,其依据所述任务配置的一者产生所述来源存储器中的来源地址;以及
目的地址产生器,耦接所述控制模块,其依据所述任务配置的一者产生所述目的存储器中的目的地址,而所述任务配置的一者还指示接续运算的所述处理元件的输入数据格式。
11.一种直接存储器存取方法,适用于直接存储器存取引擎控制来源存储器至目的存储器的数据传输,而所述存储器控制方法包括:
取得至少一任务配置;
依据所述任务配置的一者读入来自所述来源存储器的来源数据;
响应于所述任务配置的一者而对来自所述来源存储器的来源数据进行函数运算;以及
依据所述任务配置的一者将经所述函数运算输出的目的数据输出至所述目的存储器,
其中,所述至少一任务配置由耦接于所述直接存储器存取引擎和至少一处理元件之间的微控制单元在所述直接存储器存取引擎和所述处理元件之间分配与神经网络相关的运算任务而产生,
其中,所述与神经网络相关的运算任务包括第一任务、第二任务和第三任务,所述至少一处理元件包括第一处理元件和第二处理元件,且当所述第一处理元件执行所述第一任务产生所述来源数据后,所述微控制单元依据所述任务配置的一者确定所述第二任务和所述第三任务将分别由所述直接存储器存取引擎和所述第二处理元件执行,则配置将所述来源数据从所述第一处理元件的所述来源存储器经由所述直接存储器存取引擎传输的过程中完成所述函数运算以产生所述目的数据以输出至所述第二处理元件的所述目的存储器。
12.如权利要求11所述的直接存储器存取方法,其中所述来源数据仅经由所述函数运算运算一次。
13.如权利要求11所述的直接存储器存取方法,其中对来自所述来源存储器的来源数据进行所述函数运算的步骤包括:
将来自所述来源存储器的所述来源数据转换成多个并行输入数据;以及
对所述并行输入数据进行并行运算。
14.如权利要求13所述的直接存储器存取方法,其中对所述并行输入数据进行所述并行运算的步骤包括:
基于单指令流多数据流技术进行所述并行运算。
15.如权利要求13所述的直接存储器存取方法,其中将来自所述来源存储器的所述来源数据转换成所述并行输入数据的步骤包括:
提取所述来源数据中的有效数据;以及
将所述有效数据转换为所述并行输入数据,其中所述有效数据的位宽等于所述并行运算单次运算所需的位宽。
16.如权利要求11所述的直接存储器存取方法,其中对来自所述来源存储器的来源数据进行所述函数运算的步骤包括:
通过寄存器记录所述函数运算的中间结果;
通过运算单元对所述来源数据执行并行运算;以及
通过计数器对所述并行运算的运算次数进行计数,其中所述函数运算包括多次所述并行运算。
17.如权利要求11所述的直接存储器存取方法,其中所述任务配置的一者用于指示所述函数运算及所述来源数据的数据长度。
18.如权利要求11所述的直接存储器存取方法,其中对来自所述来源存储器的来源数据进行所述函数运算的步骤包括:
依据所述任务配置的一者所指示的来源数据的数据长度对所述来源数据中的尾地址设置结尾标记;以及
响应于受设置所述结尾标记的所述尾地址被处理,认定所述源数据传输完毕。
19.如权利要求11所述的直接存储器存取方法,其中对来自所述来源存储器的来源数据进行所述函数运算的步骤包括:
取得所述任务配置的一者所对应的目的数据的数据长度,其中所述目的数据的数据长度是基于所述任务配置的一者所指示的所述函数运算的类型及所述源数据的数据长度而得出。
20.如权利要求11所述的直接存储器存取方法,其中对来自所述来源存储器的来源数据进行所述函数运算的步骤包括:
依据所述任务配置的一者产生所述来源存储器中的来源地址;以及
依据所述任务配置的一者产生所述目的存储器中的目的地址,而所述任务配置的一者还指示接续运算的所述处理元件的输入数据格式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810105485.9A CN108388527B (zh) | 2018-02-02 | 2018-02-02 | 直接存储器存取引擎及其方法 |
US15/979,466 US20190243790A1 (en) | 2018-02-02 | 2018-05-15 | Direct memory access engine and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810105485.9A CN108388527B (zh) | 2018-02-02 | 2018-02-02 | 直接存储器存取引擎及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108388527A CN108388527A (zh) | 2018-08-10 |
CN108388527B true CN108388527B (zh) | 2021-01-26 |
Family
ID=63075036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810105485.9A Active CN108388527B (zh) | 2018-02-02 | 2018-02-02 | 直接存储器存取引擎及其方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190243790A1 (zh) |
CN (1) | CN108388527B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018851A (zh) * | 2019-04-01 | 2019-07-16 | 北京中科寒武纪科技有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN110096308B (zh) * | 2019-04-24 | 2022-02-25 | 北京探境科技有限公司 | 一种并行存储运算装置及其方法 |
US10642766B1 (en) * | 2019-07-15 | 2020-05-05 | Daniel Kilsdonk | Facilitating sequential data transformations via direct memory access |
WO2021127833A1 (en) * | 2019-12-23 | 2021-07-01 | Micron Technology, Inc. | Effective avoidance of line cache misses |
CN113222125A (zh) * | 2020-01-21 | 2021-08-06 | 北京希姆计算科技有限公司 | 卷积运算方法及芯片 |
US11314674B2 (en) | 2020-02-14 | 2022-04-26 | Google Llc | Direct memory access architecture with multi-level multi-striding |
CN112882966A (zh) * | 2020-03-24 | 2021-06-01 | 威盛电子股份有限公司 | 运算装置 |
CN114896058B (zh) * | 2022-04-27 | 2023-09-22 | 南京鼎华智能系统有限公司 | 基于内存运算的派工系统以及派工方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835788A (en) * | 1996-09-18 | 1998-11-10 | Electronics For Imaging | System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826101A (en) * | 1990-09-28 | 1998-10-20 | Texas Instruments Incorporated | Data processing device having split-mode DMA channel |
US20050289253A1 (en) * | 2004-06-24 | 2005-12-29 | Edirisooriya Samantha J | Apparatus and method for a multi-function direct memory access core |
JP2006338538A (ja) * | 2005-06-03 | 2006-12-14 | Nec Electronics Corp | ストリームプロセッサ |
JPWO2008068937A1 (ja) * | 2006-12-01 | 2010-03-18 | 三菱電機株式会社 | データ転送制御装置およびコンピュータシステム |
CN100470525C (zh) * | 2007-03-07 | 2009-03-18 | 威盛电子股份有限公司 | 直接存储器访问控制装置及控制其传输的方法 |
US7870309B2 (en) * | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Multithreaded programmable direct memory access engine |
US7870308B2 (en) * | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Programmable direct memory access engine |
US8456880B2 (en) * | 2009-01-30 | 2013-06-04 | Unity Semiconductor Corporation | Multiple layers of memory implemented as different memory technology |
CN102521535A (zh) * | 2011-12-05 | 2012-06-27 | 苏州希图视鼎微电子有限公司 | 通过特定指令集来进行相关运算的信息安全协处理器 |
US9569384B2 (en) * | 2013-03-14 | 2017-02-14 | Infineon Technologies Ag | Conditional links for direct memory access controllers |
WO2014174580A1 (ja) * | 2013-04-22 | 2014-10-30 | 富士通株式会社 | 情報処理装置、方法、及びプログラム |
CN106484642B (zh) * | 2016-10-09 | 2020-01-07 | 上海新储集成电路有限公司 | 一种具有运算能力的直接存储器访问控制器 |
CN106454187A (zh) * | 2016-11-17 | 2017-02-22 | 凌云光技术集团有限责任公司 | 一种具有Camera Link接口的FPGA系统 |
-
2018
- 2018-02-02 CN CN201810105485.9A patent/CN108388527B/zh active Active
- 2018-05-15 US US15/979,466 patent/US20190243790A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835788A (en) * | 1996-09-18 | 1998-11-10 | Electronics For Imaging | System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory |
Also Published As
Publication number | Publication date |
---|---|
CN108388527A (zh) | 2018-08-10 |
US20190243790A1 (en) | 2019-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108388527B (zh) | 直接存储器存取引擎及其方法 | |
US11222256B2 (en) | Neural network processing system having multiple processors and a neural network accelerator | |
EP3557485A1 (en) | Method for accelerating operations and accelerator apparatus | |
US10515135B1 (en) | Data format suitable for fast massively parallel general matrix multiplication in a programmable IC | |
EP3557425A1 (en) | Accelerator and system for accelerating operations | |
US11900253B2 (en) | Tiling format for convolutional neural networks | |
US20150324685A1 (en) | Adaptive configuration of a neural network device | |
JP7261226B2 (ja) | 演算処理装置 | |
US11455781B2 (en) | Data reading/writing method and system in 3D image processing, storage medium and terminal | |
EP3844610B1 (en) | Method and system for performing parallel computation | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US20220113944A1 (en) | Arithmetic processing device | |
CN108701102A (zh) | 直接存储器访问控制器、数据读取方法和数据写入方法 | |
US11036827B1 (en) | Software-defined buffer/transposer for general matrix multiplication in a programmable IC | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
US11093276B2 (en) | System and method for batch accessing | |
JP2010244096A (ja) | データ処理装置、印刷システムおよびプログラム | |
JP7427001B2 (ja) | 行列数学命令セットのタイリングアルゴリズム | |
US11500802B1 (en) | Data replication for accelerator | |
CN116415100A (zh) | 业务处理方法、装置、处理器及计算设备 | |
US10108377B2 (en) | Storage processing unit arrays and methods of use | |
US20230245269A1 (en) | Neural network processing of reordered color filter array formatted image data | |
CN112001836A (zh) | 一种图像处理装置 | |
JP2010244095A (ja) | データ処理装置、印刷システムおよびプログラム |
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 | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP03 | Change of name, title or address |