CN111831328A - 数据处理的方法及装置 - Google Patents
数据处理的方法及装置 Download PDFInfo
- Publication number
- CN111831328A CN111831328A CN201910312837.2A CN201910312837A CN111831328A CN 111831328 A CN111831328 A CN 111831328A CN 201910312837 A CN201910312837 A CN 201910312837A CN 111831328 A CN111831328 A CN 111831328A
- Authority
- CN
- China
- Prior art keywords
- data
- instructions
- read
- storage
- instruction
- 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
- 238000003672 processing method Methods 0.000 title abstract description 4
- 238000012545 processing Methods 0.000 claims description 50
- 238000011176 pooling Methods 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 29
- 230000009286 beneficial effect Effects 0.000 abstract description 5
- 238000004364 calculation method Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003042 antagnostic effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
Abstract
本申请提供一种数据处理的方法和装置,包括:从缓存中调用多条指令并从存储单元中获取第一数据的存储地址,以从所述存储单元中读所述第一数据并对所述第一数据执行第一操作;从所述缓存中继续调用所述多条指令并从所述存储单元中获取所述第二数据的存储地址,以从所述存储单元中读所述第二数据并对所述第二数据执行第二操作。在本申请实施例中,通过将第一数据的存储地址以及第二数据的存储地址存放在存储单元中,使得调用多条指令可以执行读第一数据并执行第一操作,以及读第二数据并执行第二操作,有利于降低指令丢失的概率。
Description
技术领域
本申请涉及数据处理领域,并且更具体地,涉及数据处理的方法及装置。
背景技术
处理器通常包括控制单元、运算单元以及存储单元。其中,运算单元可以理解为处理的核心,可以执行算数运算和逻辑运算等。存储单元通常包括片内缓存和寄存器组,用于暂时存放处理器需要执行的指令,处理器需要处理的数据以及处理器已经处理完成的数据。控制单元可以理解为整个处理单元的指挥控制中心,用于按照预设的顺序从缓存中调用待处理的指令并确定指令对应的操作,并指示相应的部件按照确定的时序执行操作。例如,指示运算单元执行算数运算等。
由于片上系统的大小非常有限,进而也限制了片内缓存的规格,使得片内缓存的存储空间非常有限,当控制器要处理的指令非常多且发送密集时,非常容易超出了片内缓存的容量,此时,指令无法被存储在缓存中导致指令缺失。一旦发生指令缺失,则会大大影响处理器中执行部件(例如运算单元)执行相应的操作,降低处理器处理数据的效率。
发明内容
本申请提供一种数据处理的方法及装置,以减少缓存中指令缺失的概率,有利于提高处理器处理数据的效率。
第一方面,提供一种数据处理的方法,包括:从缓存中调用多条指令并从存储单元中获取第一数据的存储地址,以从所述存储单元中读所述第一数据并对所述第一数据执行第一操作;从所述缓存中继续调用所述多条指令并从所述存储单元中获取所述第二数据的存储地址,以从所述存储单元中读所述第二数据并对所述第二数据执行第二操作。
在本申请实施例中,通过将第一数据的存储地址以及第二数据的存储地址存放在存储单元中,使得调用多条指令可以执行读第一数据并执行第一操作,以及读第二数据并执行第二操作,有利于降低指令丢失的概率。避免了现有技术中,由于读第一数据并执行第一操作以及读第二数据并执行第二操作对应不同的指令,需要频繁发射指令,导致指令丢失的概率增大。
在一种可能的实现方式中,所述多条指令中的第一读指令携带基准地址,以所述基准地址为基准偏移第一偏移量,得到所述第一数据的存储地址,或以所述第一数据的存储地址为基准偏移第二偏移量,得到所述第二数据的存储地址。
在本申请实施例中,通过基准地址以及偏移量确定第一数据的存储地址以及第二数据的存储地址,以将指令中的“基准地址”变为固定值,使得指令可以循环被使用。
在一种可能的实现方式中,所述第一操作和所述第二操作为卷积操作,或所述第一操作和所述第二操作为池化操作。
在一种可能的实现方式中,所述多条指令包括第二读指令,所述第二读指令用于读取所述第一操作对应的权值数据,以及所述第二操作对应的权值数据。
在一种可能的实现方式中,所述第二操作对应的数据还包括第三数据,所述多条指令包括第三读指令,所述从缓存中调用所述多条指令,以从所述存储单元中读第一数据并对所述第一数据执行所述第一操作,包括:从所述缓存中调用所述多条指令,以从所述存储单元中读所述第一数据、所述第三数据并对所述第一数据执行所述第一操作,其中,读所述第一数据、所述第三数据的完成时间早于或等于执行所述第一操作的完成时间。
在本申请实施例中,在对第一数据进行第一操作时,读取下一次操作使用的数据,即尽可能多的读取数据,有利于提高计算的效率。
第二方面,提供了一种处理数据装置,所述处理数据装置包括用于执行上述方法中各个方面的单元。
第三方面,提供一种处理数据装置,所述处理数据装置包括处理器和存储器,所述存储器用于存储计算机程序或者上文中的多条指令,所述处理器用于从所述存储器中调用并运行所述计算机程序或所述多条指令,使得所述处理数据装置执行上述第一方面中的方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,以及上述多条指令,当所述计算机程序代码以及多条指令在计算机上运行时,使得计算机执行上述各方面中的方法。
需要说明的是,上述计算机程序代码可以全部或者部分存储在第一存储介质上,其中第一存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请实施例对此不作具体限定。
第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码、以及上述多条指令,当所述计算机程序代码以及多条指令在计算机上运行时,使得计算机执行上述各方面中的方法。
第六方面,提供了一种芯片系统,该芯片系统包括处理器,用于支持上述数据处理装置实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存网络设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1是进行卷积运算的计算装置示意图。
图2是本申请实施例的数据处理的方法的流程图。
图3是本申请实施例的数据处理的装置的示意图。
图4是本申请实施例的计算设备的示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
随着神经网络的发展,多种机器学习的算法的兴起,比如卷积神经网络(Convolutional Neural Networks,CNN)、循环神经网络(Recurrent Neural Network,RNN)、对抗生成网络(Generative Adversarial Networks,GAN)等。由于机器学习算法的计算开销很大,控制器计算处理时需要发射的指令数也很多。然而,片上指令缓存(instruction cache,icache)的存储空间是有限的,如果发射的指令数过多,而片上icache存不下如此多的指令,会导致指令缺失(miss)。一旦发生缺失,指令对应的操作则无法执行,会极大地影响执行单元(例如,运算单元)的执行效率。
为了便于理解,下文结合图1、图2以神经网络中的卷积操作为例,先简单介绍执行卷积操作是所需的指令。需要说明的是,本申请实施例的方案不仅可以用于神经网络,还可以用于其他片上系统。
图1是进行卷积运算的计算装置示意图。如图1所示,计算装置通常包括动态随机存取存储器(Dynamic Random Access Memory,DRAM)110,寄存器堆120,以及运算单元130。
运算单元130,用于对权值数据以及输入数据进行卷积运算。其中,为了区分权值数据与输入数据,通过粗体字表示权值数据。
寄存器堆120,用于暂时存储权值数据或输入数据以供运算单元读取。
DRAM 110,用于存储卷积运算需要的权值数据以及输入数据。
下文基于图1所示的计算设备,结合介绍基于指令执行卷积操作的流程。
步骤1:调用指令ldr,从DRAM读取n个权值数据,按一定的排布规则加载至寄存器,其中n取值为正整数,通常等于运算单元的数量。
步骤2:调用指令ldr,从DRAM读取x行输入数据,按一定的排布规则加载至寄存器堆,其中n取值为正整数。
步骤3:调用shiftw指令,将n个权值数据从寄存器堆中读取至运算单元的权值暂存器中,并固定在运算单元中。
步骤4:调用shiftf指令,将k个输入数据读取至运算单元的输入数据暂存器中,同时将数据暂存器中原有的k个输入数据传递给运算单元,由运算单元基于权重数据以及输入数据进行卷积运算,最后将运算结果按一定的排布规则写回寄存器堆,其中,k为正整数,且k*k=n。
步骤5:调用shiftf指令,将k个输入数据读取至运算单元的输入数据暂存器中,同时将数据暂存器中原有的k个输入数据传递给运算单元,由运算单元基于权重数据以及输入数据进行卷积运算,最后将运算结果按一定的排布规则写回寄存器堆,其中,k为正整数,且k*k=n。
……
步骤t:直到寄存器堆中的输出结果为1行输出数据,调用str指令,将该行输出数据写回DRAM。
步骤t+1:调用指令ldr,从DRAM读取n个权值数据,按一定的排布规则加载至寄存器,其中n取值为正整数,通常等于运算单元的数量。
步骤t+2:调用指令ldr,从DRAM读取x行输入数据,按一定的排布规则加载至寄存器堆,其中n取值为正整数。
步骤t+3:调用shiftw指令,将n个权值数据从寄存器堆中读取至运算单元的权值暂存器中,并固定在运算单元中。
步骤t+4:调用shiftf指令,将k个输入数据读取至运算单元的输入数据暂存器中,同时将数据暂存器中原有的k个输入数据传递给运算单元,由运算单元基于权重数据以及输入数据进行卷积运算,最后将运算结果按一定的排布规则写回寄存器堆,其中,k为正整数,且k*k=n。
步骤t+5:调用shiftf指令,将k个输入数据读取至运算单元的输入数据暂存器中,同时将数据暂存器中原有的k个输入数据传递给运算单元,由运算单元基于权重数据以及输入数据进行卷积运算,最后将运算结果按一定的排布规则写回寄存器堆,其中,k为正整数,且k*k=n。
……
步骤t+t:直到寄存器堆中的输出结果为1行输出数据,调用str指令,将该行输出数据写回DRAM。
需要说明的是,上述步骤1至步骤t中描述的指令以用于读取x行输入数据,并算出最终的卷积结果为1行输出数据为例进行说明。
从上文介绍的卷积操作对应的指令以及流程来看,我们发现可以将上述t+t个步骤归纳为两个部分,第一部分从步骤1开始至步骤t结束,第二部分从步骤t+1开始至步骤t+t结束。其中,第一部分和第二部分中,调用指令的类型是相同的,并且相同类型的指令的执行顺序也是相同的。不同的地方仅仅在于第一部分和第二部分的指令对应的数据(即输入数据)不同。
基于上述规律,本申请提供了一种新的指令形式,以使得被发送的指令可以循环使用,有利于减少上述操作流程中,发射的指令的数量,相应地也降低了发生指令丢失的概率。本申请实施例提供的新的指令的形式中,将上述多条指令分为两个部分,一部分为指令的共有部分即包括指令类型(操作数)以及多条指令之间的执行顺序。另一部分为指令的变换部分,即指令调用的数据(例如输入数据)的存储地址。这样,上述多条指令中的共有部分可以缓存在缓存中被循环调用多次。例如,上述多条指令为步骤1至步骤t中涉及的指令的共有部分时,则多条指令还可以应用在步骤t+1至步骤t+t中。
下文结合图2介绍本申请实施例的数据处理的方法。图2所示的方法可以应用于图所示的计算设备。图2所示的方法包括:步骤210至步骤220。
210,从缓存中调用多条指令并从存储单元中获取第一数据的存储地址,以从所述存储单元中读所述第一数据并对所述第一数据执行第一操作。
上述存储单元可以是计算设备中的寄存器堆,或者数据缓存(data cache,D-cache)。其中,数据缓存可以与存储多条指令的缓存为同一缓存器中的不同缓存区域,或者数据缓存与存储多条指令的缓存为独立的缓存。
220,从所述缓存中继续调用所述多条指令并从所述存储单元中获取所述第二数据的存储地址,以从所述存储单元中读所述第二数据并对所述第二数据执行第二操作。
上述多条指令仅包括读第一数据并执行第一操作的所有指令,或者上述多条指令仅包括读第一数据并执行第一操作的所有指令。
上述第一操作和第二操作为需要调用多条指令实现的操作,且第一操作对应的多条指令的类型与第二操作对应的多条指令的类型相同,第一操作对应的多条指令的执行顺序与第二操作对应的多条指令的执行顺序相同。例如,第一操作和第二操作可以上文中的卷积操作。上述第一操作和第二操作还可以是池化操作,本申请实施例对此不做限定。
可选地,上述第一数据存储位置与第二数据的存储位置不同,或者第一数据与第二数据不同。
在本申请实施例中,通过将第一数据的存储地址以及第二数据的存储地址存放在存储单元中,使得调用多条指令可以执行读第一数据并执行第一操作,以及读第二数据并执行第二操作,有利于降低指令丢失的概率。避免了现有技术中,由于读第一数据并执行第一操作以及读第二数据并执行第二操作对应不同的指令,需要频繁发射指令,导致指令丢失的概率增大。
下文以及shift指令为例,结合图1介绍本申请实施例的指令与传统的指令的区别。shiftf指令的传统格式为:shiftf r8,r2,0,3,2,2,其中r8,r2,0,3,2,2用于指示输入数据“16,32,48”,以及这些输入数据与权值数据进行卷积计算的结果“1104”在寄存器堆120中的存储位置。“r8”用于指示计算结果“1104”存储在寄存器堆中的第8列;“r2”用于指示输入数据“16”存储在寄存器堆中的第2列;“0”用于指示在寄存器堆中,存储输入数据“16”的bank的编号。“3”用于指示在寄存器堆中,卷积计算的结果“1104”的bank的编号;“2”用于指示在寄存器堆中,存储多个输入数据的列之间相差2列,即输入数据“32”与输入数据“16”之间相差两列,输入数据“48”与输入数据“32”之间相差两列;“2”用于指示在寄存器堆中,存储最后一个输入数据的列与计算结果之间相差2列,即输入数据“48”与输入数据“1104”之间相差两列。而本申请实施例提供的shiftf指令的格式为:shiftf r8,r2。其中,“0322”可以存储在存储单元中。
需要说明的是,上述输入数据所在的bank号之间偏移1,可以预先设定。
如上文所述,为了可以循环使用本申请实施例提供的“多条指令”,将第一数据的存储地址以及第二数据的存储地址存储在存储单元中,这样,可以在多条指令中原先用于存储数据的存储地址的字段存储第一基准地址,当获取到第一基准地址后,以第一基准地址为基准,偏移第一偏移量则得到第一数据的存储地址,以第一基准地址为基准,偏移第二偏移量则得到第二数据的存储地址。当然,上述第一基准地址还可以直接是第一数据的存储地址,当以第一数据的存储地址为基准偏移预设的偏移量后,可以得到第二数据的存储地址。
需要说明的是,上述偏移量可以是预先配置好的,相应地,第一数据以及第二数据的存储过程中可以按照上述偏移量进行存储。
当然,还有其他的方式,使得多条指令中即使没有直接存储第一数据的存储地址、第二数据的存储地址的情况下,获知第一数据以及第二数据。例如,还可以在多条指令中原先用于存储数据的存储地址的字段存储第二基准地址,当获取到第二基准地址后,以第一基准地址为基准,偏移第一偏移量对应的存储空间中可以存储第一数据的存储地址,以第一基准地址为基准,偏移第二偏移量对应的存储空间中可以存储第二数据的存储地址。读出相应的第一数据的存储地址以及第二数据的存储地址之后,可以分别在第一数据的存储地址以及第二数据的存储地址对应的存储空间中读出第一数据以及第二数据。
可选地,若上述第一操作以及第二操作为卷积操作时,上述多条指令可以包含从步骤1开始到步骤t对应的t条指令。上述多条指令还可以仅用于对输入数据进行卷积计算对应的操作指令,即仅包含步骤4和步骤5的指令shiftf,循环使用直到寄存器中存储的输入数据被读到运算单元,并与运算单元中固定的权重数据进行卷积操作完成。
下文分别以池化操作为例,介绍本申请实施例的方法。
为了便于理解,先介绍基于传统的指令执行池化操作的流程。需要说明的是,执行池化操作的计算设备具体结构可以参见图1,为了简洁,在此不再赘述。还需要说明的是,步骤1至步骤x*x+2以读取x*x个池化数据,并算出最终的池化结果,即1个输出数据为例进行说明。
步骤1:调用指令ldr,从DRAM读取x*x个输入数据,按一定的排布规则加载至寄存器,x取值为正整数。
步骤2:调用指令pool.ld,将第1个数据加载至池化处理单元暂存器A中;
步骤3:调用指令pool.add,将第2个数据进行加载至池化处理单元暂存器B中,并控制池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中。
步骤4:调用指令pool.add,将第3个数据进行加载至池化处理单元暂存器B中,并控制池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中。
……
步骤x*x+1:调用指令pool.add,将第x*x个数据进行加载至池化处理单元暂存器B中,并控制池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中,x取值为正整数。
步骤x*x+2:调用指令pool.mul,将暂存器A中的累加结果除以池化框大小,得到最终结果,写回寄存器堆。
步骤x*x+3:调用指令ldr,从DRAM读取x*x个输入数据,按一定的排布规则加载至寄存器。
步骤x*x+4:调用指令pool.ld,将第1个数据加载至池化处理单元暂存器A中。
步骤x*x+5:调用指令pool.add,将第2个数据进行加载至池化处理单元暂存器B中,并控制池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中。
步骤x*x+6:调用指令pool.add,将第3个数据进行加载至池化处理单元暂存器B中,并控制池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中。
……
步骤x*x+x*x+2:调用指令pool.add,将第x*x个数据进行加载至池化处理单元暂存器B中,并控制池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中。
步骤x*x+x*x+3:调用指令pool.mul,将暂存器A中的累加结果除以池化框大小,得到最终结果,写回寄存器堆。
从上文介绍的池化操作对应的指令以及流程来看,我们发现可以将上述x*x+x*x+3个步骤归纳为两个部分,第一部分从步骤1开始至步骤x*x+2结束,第二部分从步骤步骤x*x+3开始至步骤x*x+x*x+3结束。其中,第一部分和第二部分中,调用指令的类型是相同的,并且相同类型的指令的执行顺序也是相同的。不同的地方仅仅在于第一部分和第二部分的指令对应的数据不同。
基于上述规律,本申请提供多条指令可以为步骤1至步骤x*x+2中涉及的指令的共有部分时,则多条指令还可以应用在步骤x*x+3至步骤x*x+x*x+3中。
下文介绍用于池化的多条指令。需要说明的是,下文7条指令中ri用于指示寄存器中存储数据所在的列,数字0,4等用于指示存储数据的bank编号,0X8042f4ab,0X714ac24b等用于指示数据在DRAM中的存储地址。
ldr r1,0,0X8042f4ab,4//用于将4个输入数据从DRAM加载至寄存器堆;
pool.ld r1//用于将第一个输入数据进行加载至池化处理单元暂存器A中;
pool.add r1//将第二个输入数据进行加载至池化处理单元暂存器B中,并控制池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中;
pool.add r1//将第三个数据进行加载至池化处理单元暂存器B中,并使用池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中;
ldr r1,4,0X714ac24b,4//从DRAM预取4个输入数据至寄存器堆;
pool.add r1//将第四个数据进行加载至池化处理单元暂存器B中,并使用池化处理单元内的加法单元将A,B内的数据相加,并将加法结果存入暂存器A中;
pool.mul r1,r2//使用池化处理单元内的乘法单元,将暂存器A中的累加结果除以池化框大小,得到最终结果,写回寄存器堆。
上述多条指令还可以被循环应用与下次池化操作的计算过程中。需要说明的是,在下一次执行池化操作的过程中,可以以上述指令中的地址为基准进行偏移,得到下一次池化操作对应的数据的存储位置。
在从DRAM中将数据读取到寄存器中,通常读取的数据为一次卷积操作所需的数据,例如图1中DRAM中输入数据的前三行。然而,读取数据的占用的时间通常短于计算单元对这些数据进行计算占用的时间,也就是说,在计算单元对前3行数据进行卷积操作的过程中,计算设备有一段空闲的时间不在读取数据了,等到计算单元计算完成后,再继续读取下一次计算所需的数据。这种读取数据的方式,导致计算单元计算完成后需要等待,待新的数据被读入寄存器后,再继续进行运算,导致运算效率比较低。
因此,为了避免上述问题,本申请提供了一种数据预取的方案,即所述第二操作对应的数据还包括第三数据,所述多条指令包括第三读指令,所述从缓存中调用所述多条指令,以从所述存储单元中读第一数据并对所述第一数据执行所述第一操作,包括:从所述缓存中调用所述多条指令,以从所述存储单元中读所述第一数据、所述第三数据并对所述第一数据执行所述第一操作,其中,读所述第一数据、所述第三数据的完成时间早于或等于执行所述第一操作的完成时间。例如,在对图1中的3行已读入的数据进行计算的过程中,读取第4行输入数据。
上文结合图1至图2介绍本申请实施例的方法,下文结合图3至图4介绍本申请实施例的装置。应理解,图3至图4可以执行图2中的部分或全部步骤,为了简洁,在此不再赘述。
图3是本申请实施例的数据处理的装置的示意图,图3所示装置300包括处理模块310,缓存320以及存储单元330。其中,存储单元可以为缓存,也可以为DRAM。
处理单元310,用于从缓存中调用所述多条指令,以从存储单元中读第一数据并对所述第一数据执行所述第一操作;
所述处理单元310,还用于从所述缓存中继续调用所述多条指令,以从所述存储单元中读所述第二数据并对所述第二数据执行所述第二操作。
可选地,在一种可能的实现方式中,所述多条指令中的第一读指令携带基准地址,以所述基准地址为基准偏移第一预设偏移量,得到所述第一数据的存储地址,或以所述第一数据的存储地址为基准偏移第二偏移量,得到所述第二数据的存储地址。
可选地,在一种可能的实现方式中,所述第一操作和所述第二操作为卷积操作,或所述第一操作和所述第二操作为池化操作。
可选地,在一种可能的实现方式中,所述多条指令包括第二读指令,所述第二读指令用于读取所述第一操作对应的权值数据,以及所述第二操作对应的权值数据。
可选地,在一种可能的实现方式中,所述第二操作对应的数据还包括第三数据,所述多条指令包括第三读指令,所述处理单元还用于:从所述缓存中调用所述多条指令,以从所述存储单元中读所述第一数据、所述第三数据并对所述第一数据执行所述第一操作,其中,读所述第一数据、所述第三数据的完成时间早于或等于执行所述第一操作的完成时间。
在可选的实施例中,所述处理模块310可以为处理器420,所述计算设备还可以包括存储器410以及输入/输出接口430,具体如图4所示。其中存储器可以包括缓存以及DRAM。
图4是本申请实施例的计算设备的示意图。图4所示的计算设备400可以包括:存储器410、处理器420、输入/输出接口430。其中,存储器410、处理器420、输入/输出接口430通过内部连接通路,例如总线,相连。该存储器410用于存储指令,该处理器420用于执行该存储器420存储的指令,通过该输入/输出接口430接收输入的数据和信息,输出操作结果等。
可选地,上述计算设备400可以包括一个或者多个芯片,本申请实施例对此不作限定。
在实现过程中,上述方法的各步骤可以通过处理器420中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器410,处理器420读取存储器410中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
处理器920可以为中央处理单元(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
应理解,本申请实施例中,该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。处理器的一部分还可以包括非易失性随机存取存储器。例如,处理器还可以存储设备类型的信息。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据处理的方法,其特征在于,包括:
从缓存中调用多条指令并从存储单元中获取第一数据的存储地址,以从所述存储单元中读所述第一数据并对所述第一数据执行第一操作;
从所述缓存中继续调用所述多条指令并从所述存储单元中获取所述第二数据的存储地址,以从所述存储单元中读所述第二数据并对所述第二数据执行第二操作。
2.如权利要求1所述的方法,其特征在于,所述多条指令中的第一读指令携带基准地址,以所述基准地址为基准偏移第一偏移量,得到所述第一数据的存储地址,或
以所述第一数据的存储地址为基准偏移第二偏移量,得到所述第二数据的存储地址。
3.如权利要求1或2所述的方法,其特征在于,所述第一操作和所述第二操作为卷积操作,或所述第一操作和所述第二操作为池化操作。
4.如权利要求3所述的方法,其特征在于,所述多条指令包括第二读指令,所述第二读指令用于读取所述第一操作对应的权值数据,以及所述第二操作对应的权值数据。
5.如权利要求1-4中任一项所述的方法,其特征在于,所述第二操作对应的数据还包括第三数据,所述多条指令包括第三读指令,
所述从缓存中调用所述多条指令,以从所述存储单元中读第一数据并对所述第一数据执行所述第一操作,包括:
从所述缓存中调用所述多条指令,以从所述存储单元中读所述第一数据、所述第三数据并对所述第一数据执行所述第一操作,其中,读所述第一数据、所述第三数据的完成时间早于或等于执行所述第一操作的完成时间。
6.一种数据处理的装置,其特征在于,包括:
处理单元,用于从缓存中调用所述多条指令,以从存储单元中读第一数据并对所述第一数据执行所述第一操作;
所述处理单元,还用于从所述缓存中继续调用所述多条指令,以从所述存储单元中读所述第二数据并对所述第二数据执行所述第二操作。
7.如权利要求6所述的装置,其特征在于,所述多条指令中的第一读指令携带基准地址,以所述基准地址为基准偏移第一预设偏移量,得到所述第一数据的存储地址,或
以所述第一数据的存储地址为基准偏移第二偏移量,得到所述第二数据的存储地址。
8.如权利要求6或7所述的装置,其特征在于,所述第一操作和所述第二操作为卷积操作,或所述第一操作和所述第二操作为池化操作。
9.如权利要求8所述的装置,其特征在于,所述多条指令包括第二读指令,所述第二读指令用于读取所述第一操作对应的权值数据,以及所述第二操作对应的权值数据。
10.如权利要求6-9中任一项所述的装置,其特征在于,所述第二操作对应的数据还包括第三数据,所述多条指令包括第三读指令,所述处理单元还用于:
从所述缓存中调用所述多条指令,以从所述存储单元中读所述第一数据、所述第三数据并对所述第一数据执行所述第一操作,其中,读所述第一数据、所述第三数据的完成时间早于或等于执行所述第一操作的完成时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910312837.2A CN111831328A (zh) | 2019-04-18 | 2019-04-18 | 数据处理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910312837.2A CN111831328A (zh) | 2019-04-18 | 2019-04-18 | 数据处理的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831328A true CN111831328A (zh) | 2020-10-27 |
Family
ID=72915586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910312837.2A Pending CN111831328A (zh) | 2019-04-18 | 2019-04-18 | 数据处理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831328A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579489A (zh) * | 2020-12-25 | 2021-03-30 | 龙芯中科技术股份有限公司 | 数据操作方法、装置、设备、存储介质及程序产品 |
CN117033298A (zh) * | 2022-10-21 | 2023-11-10 | 上海天数智芯半导体有限公司 | 一种瓦片处理器、soc芯片以及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104993837A (zh) * | 2015-07-24 | 2015-10-21 | 丽水博远科技有限公司 | 一种卷积交织方法和卷积交织器 |
CN107315571A (zh) * | 2016-04-27 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行全连接层神经网络正向运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN109582366A (zh) * | 2017-09-29 | 2019-04-05 | 英特尔公司 | 用于存储器架构的执行存储器间接寻址的技术 |
-
2019
- 2019-04-18 CN CN201910312837.2A patent/CN111831328A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104993837A (zh) * | 2015-07-24 | 2015-10-21 | 丽水博远科技有限公司 | 一种卷积交织方法和卷积交织器 |
CN107315571A (zh) * | 2016-04-27 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行全连接层神经网络正向运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN109582366A (zh) * | 2017-09-29 | 2019-04-05 | 英特尔公司 | 用于存储器架构的执行存储器间接寻址的技术 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579489A (zh) * | 2020-12-25 | 2021-03-30 | 龙芯中科技术股份有限公司 | 数据操作方法、装置、设备、存储介质及程序产品 |
CN112579489B (zh) * | 2020-12-25 | 2023-01-24 | 龙芯中科技术股份有限公司 | 数据操作方法、装置、设备、存储介质及程序产品 |
CN117033298A (zh) * | 2022-10-21 | 2023-11-10 | 上海天数智芯半导体有限公司 | 一种瓦片处理器、soc芯片以及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5658556B2 (ja) | メモリ制御装置、及びメモリ制御方法 | |
US9483442B2 (en) | Matrix operation apparatus | |
JP2011118743A (ja) | ベクトル型計算機及びベクトル型計算機の命令制御方法 | |
CN111831328A (zh) | 数据处理的方法及装置 | |
JP4865016B2 (ja) | プロセッサ | |
EP3295300A1 (en) | System and method for determining concurrency factors for dispatch size of parallel processor kernels | |
KR920005739B1 (ko) | 기억부(memoryunit)에 사용되는 부분기입 제어회로. | |
JP5979966B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
US20230161835A1 (en) | Matrix operation method and accelerator | |
US20070106884A1 (en) | Hybrid memory system for a microcontroller | |
CN115859877A (zh) | 一种仿真测试中信息同步方法、装置、设备及存储介质 | |
JP5982845B2 (ja) | トレース制御装置及びトレース制御方法 | |
CN115470738A (zh) | 功能验证方法及装置、电子设备和存储介质 | |
US6356988B1 (en) | Memory access system, address converter, and address conversion method capable of reducing a memory access time | |
JP4900680B2 (ja) | 半導体メモリ試験装置 | |
CN106557368B (zh) | Spark程序优化方法和装置 | |
US20060101240A1 (en) | Digital signal processing circuit and digital signal processing method | |
US6311266B1 (en) | Instruction look-ahead system and hardware | |
US20020156992A1 (en) | Information processing device and computer system | |
JP4531715B2 (ja) | システムlsiの設計方法及びこれを記憶した記録媒体 | |
JP2006293741A (ja) | プロセッサ | |
CN111831405B (zh) | 一种数据处理方法、逻辑芯片及其设备 | |
EP3796175A1 (en) | Non intrusive multicore debugging based on pc counter | |
US20230409323A1 (en) | Signal processing apparatus and non-transitory computer-readable storage medium | |
US9959221B2 (en) | Semiconductor device, memory access control method, and semiconductor device system for determining random access or burst access as an access method for an external address set |
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 |