掌桥专利:专业的专利平台
掌桥专利
首页

一种集成芯片及指令处理方法

文献发布时间:2023-06-19 18:32:25


一种集成芯片及指令处理方法

技术领域

本申请涉及计算机技术领域,尤其涉及一种集成芯片及指令处理方法。

背景技术

直接存储器访问(direct memory access,DMA)是一种快速数据交换模式,它在不通过处理器且不需要处理器干预的情况下,即可完成不同存储模块之间的直接数据传输。采用DMA方式传输数据的过程中,处理器只须向DMA控制器下达指令,指示DMA控制器执行数据传输任务,数据传输任务完毕再把传输结束信息反馈给处理器,有利于减轻数据传输过程对处理器资源的占用,节约处理器资源。

但是,随着高性能处理器日益增长的算力需求,现有DMA传输过程仍然存在改进空间。

发明内容

本申请提供一种集成芯片及指令处理方法,用于进一步提高DMA传输效率,用以满足处理器日益增长的算力需求。

本申请实施例第一方面提供一种集成芯片,该集成芯片包括指令处理模块。其中,指令处理模块用于获取第一DMA指令,第一DMA指令指示通过DMA方式将第一源存储位置中的第一数据搬运到第一目的存储位置;之后,确定DMA存储信息中是否包括第一记录,第一记录用于指示第一数据已被搬运到第一目的存储位置,DMA存储信息用于保存已执行的DMA指令所对应的记录;在DMA存储信息中包括第一记录时,不执行第一DMA指令。

在第一方面提供的集成芯片中,指令处理模块可以通过DMA存储信息确定获取的第一DMA指令对应的第一数据是否已经搬运到第一DMA指令对应的第一目的存储位置,在第一数据已经搬运到第一目的存储位置时,由于第一DMA指令对应的数据搬运任务(即把第一数据搬运到第一目的存储位置)已经完成,指令处理模块可以不执行第一DMA指令,这样有利于减少DMA指令对应的数据搬运次数,进而有利于进一步提高DMA指令对应的数据传输效率,用以满足处理器日益增长的算力需求。

在一种可能的实现方式中,指令处理模块还用于,在DMA存储信息不包括第一记录时,执行第一DMA指令,并且,在DMA存储信息中保存第一DMA指令所对应的记录。

在一种可能的实现方式中,基于DMA存储信息不包括第一记录,并且,DMA存储信息包括第二记录,第二记录用于指示第二数据已被搬运到第一目的存储位置,指令处理模块还用于删除第二记录。当DMA存储信息的记录对应的目的存储位置中的数据发生改变时,可以删除相应记录,有利于提高DMA存储信息的准确性。

在一种可能的实现方式中,第一源存储位置指向第一存储模块,第一目的存储位置指向第二存储模块,并且,第一存储模块的访存速度低于第二存储模块的访存速度。和访存速度较低的第一存储模块相比,访存速度更快的第二存储模块中的数据对处理器或程序的运行速度的影响一般更大,因此通过提高第一存储模块至第二存储模块的DMA传输效率,有利于更加显著的提高处理器和程序的运行速度。

在一种可能的实现方式中,第一目的存储位置指向集成在处理器中的缓存。在一种可能的实现方式中,第一源存储位置指向内存。

在一种可能的实现方式中,集成芯片还包括处理器,指令处理模块集成在处理器中。在一种可能的实现方式中,指令处理模块在不执行第一DMA指令时,具体用于,不向DMA控制器发送将第一数据从第一源存储位置搬运到第一目的存储位置的DMA指令,并且,获取下一条指令。

在一种可能的实现方式中,集成芯片还包括DMA控制器,指令处理模块集成在DMA控制器中。在一种可能的实现方式中,第一DMA指令来自处理器。指令处理模块在不执行第一DMA指令时,具体用于,不执行将第一数据从第一源存储位置搬运到第一目的存储位置的操作,并且,向处理器反馈已完成第一DMA指令。

在一种可能的实现方式中,第一记录包括第一数据的标识。指令处理模块可以根据第一记录中第一数据的标识匹配第一DMA指令对应的第一数据。示例性的,第一数据的标识可以为第一数据的哈希值。

在一种可能的实现方式中,第一DMA指令包括第一数据的标识。指令处理模块获取第一DMA指令后,基于DMA存储信息不包括第一记录,指令处理模块可以直接将第一DMA指令中第一数据的标识保存在DMA存储信息中,有利于降低保存第一DMA指令对应的记录的复杂度。并且,指令处理模块获取第一DMA指令后,可以直接使用第一DMA指令中的第一数据的标识匹配到第一记录中第一数据的标识,有利于提高匹配效率和准确性。

在一种可能的实现方式中,第一DMA指令为在目标程序的运行过程中获取的,目标程序用于处理目标数据,目标数据包括第一数据,第一数据的标识用于在目标数据中唯一确定第一数据。指令处理模块可以为运行的目标程序维护专用的DMA存储信息,DMA存储信息可以用于保存在目标程序运行过程中已执行的DMA指令的记录,相应的,第一数据的标识仅需用于在目标数据中唯一确定第一数据即可,有利于降低确定第一数据的标识的复杂度,同时,有利于提高DMA指令对应的数据与DMA存储信息对应的数据的匹配结果的准确性。

在一种可能的实现方式中,目标程序包括第一子程序和第二子程序,第一子程序和第二子程序均用于处理目标数据,DMA存储信息包括第一记录,第一子程序在第二子程序之前运行,指令处理模块可以为在第一子程序的运行过程中获取并执行的DMA指令保存第一记录,之后在第二子程序运行过程中获取第一DMA指令。DMA存储信息可以被处理相同数据的多个程序共享,由于多个程序一般涉及更多的DMA指令,因此,多个程序运行的过程将涉及更多的重复DMA传输任务,将本申请实施例方法拓展到多个程序共用DMA存储信息,有利于避免更多次数的重复DMA传输过程,从而有利于进一步提高DMA方式下的数据传输效率,节约数据传输资源,并且提高处理器和程序的运行速度。

在一种可能的实现方式中,目标数据为图像数据。在一种可能的实现方式中,图像数据是图像的数据表示,为了便于描述,本申请实施例将第一数据对应的图像称作第一图像。图像数据的尺寸一般很大,通常需要对图像进行分块,之后再对图像块进行处理。在一种可能的实现方式中,第一数据为第一图像中第一图像块的图像数据。其中,第一图像块为第一图像中的一个或多个图像块。对图像块进行处理的过程一般涉及更多的重复DMA传输过程,将本申请实施例方法应用于图像处理领域,有利于避免更多次数的重复DMA传输过程,从而有利于进一步提高DMA方式下的数据传输效率,节约数据传输资源,并且提高处理器和程序的运行速度。

第二方面,本申请实施例提供一种指令处理方法,该方法可以包括:获取第一直接存储器访问DMA指令,第一DMA指令指示通过DMA方式将第一源存储位置中的第一数据搬运到第一目的存储位置;确定DMA存储信息中是否包括第一记录,第一记录用于指示第一数据已被搬运到第一目的存储位置,DMA存储信息用于保存已执行的DMA指令所对应的记录;在DMA存储信息中包括第一记录时,不执行第一DMA指令。

在一种可能的实现方式中,该方法还可以包括:在DMA存储信息不包括第一记录时,执行第一DMA指令,并且,在DMA存储信息中保存第一DMA指令所对应的记录。

在一种可能的实现方式中,该方法还可以包括:在DMA存储信息不包括第一记录,并且,DMA存储信息包括第二记录时,其中,第二记录用于指示第二数据已被搬运到第一目的存储位置,指令处理模块还用于删除第二记录。

本方面的有益效果请参阅前述第一方面相关的介绍,具体此处不再赘述。

第三方面提供一种计算机可读存储介质,该计算机可读存储介质中存储了程序代码,这些程序代码在计算机设备上运行时,使得计算机设备执行如本申请能够执行第二方面或第二方面的任意一种可能的实现方式所描述的方法。

第四方面提供一种计算机程序产品,该计算机程序产品包含的程序代码被计算机设备执行时,以实现如本申请能够执行第二方面或第二方面的任意一种可能的实现方式所描述的方法。

由于本申请提供的各装置可用于执行前述对应的方法,因此本申请各装置所能获得到的技术效果可参考前述对应的方法所获得的技术效果,此处不再赘述。

附图说明

图1示出了计算设备一种可能的结构示意图;

图2为多级缓存一种可能的示意图;

图3示出了数据在内存和L1级缓存之间一种可能的DMA传输过程;

图4为本申请实施例提供的一种可能的计算设备的结构示意图;

图5示出了目标程序一种可能的编译设计过程;

图6示出了运行目标程序时所需加载的数据一种可能的形式;

图7示出了在目标程序中各个子程序的运行过程中一种可能的数据搬运过程和DMA存储信息的更新过程;

图8为本申请实施例提供的另一种可能的计算设备的结构示意图;

图9为本申请实施例提供的另一种可能的计算设备的结构示意图;

图10为本申请实施例提供的集成芯片的结构示意图;

图11为本申请实施例提供的一种指令处理方法的流程示意图。

具体实施方式

首先对本申请实施例涉及的直接存储器访问进行举例介绍。直接存储器访问(direct memory access,DMA)是一种快速数据交换模式,它在不通过处理器且不需要处理器干预的情况下,即可完成不同存储模块之间的直接数据传输。本申请实施例中,将指示DMA传输任务的指令称作DMA指令。处理器或计算设备等设备执行DMA指令是指,处理器或计算设备等设备通过DMA控制器执行该DMA指令所指示的DMA传输任务,由DMA控制器来实际执行DMA传输任务。为了便于介绍技术方案,本申请实施例中,用DMA指令泛指用于指示DMA传输的指令,用DMA请求特指DMA控制器接收到的指示DMA传输任务的指令。

DMA指令一般包括待传输的数据的源地址和目的地址,源地址和目的地址通常指向不同的存储模块。为了便于描述,本申请实施例将DMA请求对应的数据的源地址和目的地址在相应存储模块中对应的存储位置(或称存储空间)分别称作源存储位置和目的存储位置,将源存储位置和目的存储位置对应的存储模块分别称作源存储模块和目的存储模块。

本申请实施例中,在一种可能的实现方式中,DMA请求对应的源存储模块和目的存储模块可以位于不同主机中,相应的DMA过程可以称作DMA远程直接存储器访问(remotedirect memory access,RDMA)。或者,在一种可能的实现方式中,DMA请求对应的源存储模块和目的存储模块可以位于同一个主机中。

下面结合图1所示的计算设备介绍DMA方式下的数据传输过程。

图1示出了一种计算设备1,计算设备1包括处理器11、内存12和DMA控制器13,处理器11、内存12和DMA控制器13三者之间通常通过总线14相互连接,也可以采用其他方式相互连接。外部设备2可以通过I/O接口(图1中未示出)与DMA控制器13相互连接。

下面以DMA传输用于将图1所示的外部设备2中的数据搬运到内存12为例,介绍DMA方式下的数据传输过程。

首先,处理器11在运行程序的过程中,若运行至DMA指令,可以对DMA控制器13初始化,并向I/O接口(图1未示出)发出操作命令,I/O接口提出DMA请求。之后,DMA控制器13可以对DMA请求判别优先级及屏蔽,向总线裁决逻辑(图1未示出)提出总线请求。当处理器11执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器13通知I/O接口开始DMA传输。DMA控制器13获得总线控制权后,处理器11即刻挂起或只执行内部操作,由DMA控制器13输出读写命令,执行DMA传输,直接控制内存12与I/O接口进行DMA传输,以将外部设备2中的数据搬运到内存12中。

在DMA控制器13的控制下,在内存12和外部设备2之间直接进行数据传送,在传送过程中不需要处理器11参与。只需例如在初始化或DMA请求中提供要传送的数据的源地址和目的地址即可。示例性的,源地址和目的地址可以通过起始地址和数据长度来指示。

该源地址和目的地址可以为根据程序中的DMA指令确定的。下面举例介绍DMA指令的典型格式,本申请实施例涉及的DMA指令包括但不限于如下参数。

程序中的DMA指令可以例如为DMA_MOV(src address,dst address,data_length,repeat_times,src_stride,dst_stride)。其中,DMA_MOV代表该指令的类型为DMA指令,指示DMA传输任务。下面分别介绍括号中的各参数的含义。“src address”代表数据的源地址,即待搬运数据原来存放的地址。“dst address”代表数据的目的地址,即DMA指令需要把数据写入的地址。“data_length”代表数据长度,即DMA指令需要搬运的数据量,其单位例如为字节(byte)。“repeat_times”/“src_stride”/“dst_stride”为可选参数,分别指定DMA指令的重复次数,两次重复之间的源地址间隔和目的地址间隔。基于以上参数,一条DMA指令就可以指示数据从“src_address”到“dst_address”的搬移。

当完成规定的数据传送后,DMA控制器13即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面可以停止I/O接口的工作,另一方面向处理器11提出中断请求,使处理器11从不介入的状态解脱,并执行一段检查本次DMA传输操作的正确性的代码。最后,带着本次操作结果及状态继续执行前述程序。

由此可见,DMA传输方式无需处理器直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为内存与I/O设备开辟一条直接传送数据的通路,使处理器的效率大为提高。

处理器11在运行内存12(或称主存)中程序的过程中,可以从内存12中读取该程序待处理的数据以及指令,并将处理完成的数据写入内存12中。随着处理器技术的发展,处理器所在对内存的访问速度远远跟不上处理器的处理速度。为了减少处理器对内存的访问,处理器大多设计了多级缓存。

图2示出了多级缓存一种可能的示意图。参考图2,在内存基础上增加了访存速度更快的L0级缓存、L1级缓存(或称高速缓存)和L2级缓存(或称高速缓存)。在一种可能的实现方式中,L0级缓存可以采用寄存器实现,L1级缓存或L2级缓存可以采用静态随机存取存储器(static random access memory,SRAM)实现。为了便于描述,本申请实施例所提到的缓存是访存速度高于内存的缓存,即L0级缓存、L1级缓存和L2级缓存中的至少一级缓存。

继续参考图1,计算设备1中还设置有缓存15,该缓存15可以一级或多级缓存,例如包括图2所示的L0级缓存、L1级缓存和L2级缓存中的至少一级缓存。在一种可能的实现方式中,缓存15可以集成在处理器11中。

图3以缓存15包括L0级缓存和L1级缓存为例,示出了内存12和缓存15之间在DMA方式下的数据传输过程。参考图3,缓存15一般集成在处理器11所在芯片(例如图3中同时包括处理器11和缓存15的矩形框所示)中,容量非常有限,因此,需要提高对缓存15的利用率,即利用缓存15中更小的存储空间来实现更优的程序运行速度。

为了提高缓存利用率,现有技术提出多种缓存替换策略,例如随机策略、先进先出策略、近期最少使用策略和最不经常使用策略等,用于当缓存被占满时,用待存储的数据替换缓存中的部分数据。但是,现有技术中被替换的数据可能需要再次被处理器,由于该数据不再存在于缓存中,处理器需要访问内存来读取该数据,降低了程序的运行速度。

为了提高程序的运行速度,本申请实施例提供一种集成芯片和指令处理方法。下面结合几种可能的应用场景分别介绍本申请集成芯片可能的结构和功能。

应用场景一

本申请实施例可以应用于图4所示的计算设备1。计算设备1包括处理器11、内存12和DMA控制器13。处理器11中集成有指令处理模块111。计算设备1还包括缓存15,缓存15可以集成在处理器11中。处理器11、内存12、缓存15和DMA控制器13这四者之间相互连接,例如,这四者之间可以通过总线14相互连接,也可以采用其他方式相互连接。本申请实施例不限定处理器11、内存12、缓存15和DMA控制器13之间采用相同的连接方式相互连接,可以根据需要设计这四者中任意两者之间的连接方式。例如,集成在同一集成芯片中的模块之间可以通过片上互联网络(network on chip,NOC)相连。

在一种可能的实现方式中,图4所示的应用场景还可以包括计算设备1以外的其他设备,例如外部设备2,外部设备2可以包括存储模块,可选的,外部设备2可以为存储设备或终端或主机或服务器。示例性的,外部设备2可以通过I/O接口(图4中未示出)与DMA控制器13相互连接。

其中,内存12包括但不限于是随机存取存储器(random access memory,RAM)、只读存储器(Read only Memory,ROM)、可擦除可编程只读存储器(erasable programmableread-only memory,EPROM或者快闪存储器)、快闪存储器、或光存储器等。可选的,内存12中可以保存有操作系统和程序指令的代码。

其中,处理器11可以是一个或多个处理器,该处理器11可以是单核处理器,也可以是多核处理器。本申请实施例中,不限定处理器11的类型。例如,处理器11可以为通用的中央处理器(central processing unit,CPU),或适用于某些应用场景的专用处理器,例如神经网络处理器(neural-network processing units,NPU),或图形处理器(graphicsprocessing unit,GPU),或数字信号处理器(digital signal processor,DSP)等。

其中,缓存15为访存速度大于内存12的存储模块,在一种可能的实现方式中,缓存15可以包括一级或多级缓存。例如,缓存15可以包括图2所示的L0级缓存、L1级缓存和L2级缓存中的至少一级缓存,或者,包括比图2所示缓存更多的缓存层级。图2所示的每级缓存的容量和速度仅作为举例,本申请实施例不限定采用的缓存15的参数如图2所示。

当前为了提高处理器的处理效率,主要有高速缓冲存储器(cache)和缓冲存储器(buffer)两种缓存方式,其中buffer更常用于嵌入式系统中。cache和buffer在物理上一般都是静态随机存取存储器(static random access memory,SRAM),主要区别在于工作方式的不同。其中,cache一般工作于自动模式,有专门的硬件自动进行数据缓存和管理。而buffer一般工作于人工模式,需要软件指令来操作。在一些专用的应用场景,例如处理器采用NPU实现神经网络数据的处理的场景,会使用更简单的缓存策略,例如在处理器芯片上集成一块buffer存储空间用于缓存数据,但是该buffer空间可以直接访问,而且buffer的空间管理完全由读写命令控制。本申请实施例不限定缓存所采用的缓存方式,例如,本申请实施例涉及的缓存可以采用buffer的缓存方式。

其中,DMA控制器13用于执行DMA传输任务,在获取到DMA请求后,在不通过处理器11且不需要处理器11干预的情况下,将DMA请求对应的数据从DMA请求指示的源地址传输至目的地址。

其中,指令处理模块111用于处理获取到的DMA指令(称作第一DMA指令)。假设第一DMA指令指示通过DMA方式将第一数据从第一源存储位置搬运到第一目的存储位置。

具体的,指令处理模块111可以读取DMA存储信息中的记录,DMA存储信息用于为已执行的DMA指令保存相应的记录。假设DMA指令i1指示将数据d1从源存储位置s1搬运到目的存储位置s2,DMA指令i1被执行后,DMA存储信息中可以保存DMA指令i1对应的记录i1,记录i1用于指示数据d1已搬运到目的存储位置s2。本申请实施例不限定DMA存储信息所在的存储模块,例如,DMA存储信息可以保存在缓存15中,或者可以保存在内存12中,或者可以保存计算设备1中的其他存储模块中,例如保存在DMA控制器13中集成的缓存中。

并且,指令处理模块111可以获取第一DMA指令,可选的,第一DMA指令可以为处理器11待执行的DMA指令。在一种可能的实现方式中,第一DMA指令为在目标程序的运行过程中获取的,例如,第一DMA指令可以是处理器11运行的目标程序中的DMA指令。相应的,指令处理模块111获取第一DMA指令可以指,指令处理模块111运行目标程序,或者,更为具体的,运行至目标程序中的第一DMA指令。

其中,目标程序可以指源程序经编译可直接被处理器11运行的机器码集合。在一种可能的实现方式中,目标程序用于处理目标数据,其中,目标数据包括第一DMA指令对应的第一数据。例如,该目标数据可以为图像数据。图像数据是图像的数据表示,为了便于描述,本申请实施例将目标数据对应的图像称作第一图像。例如,目标数据包括第一图像中各像素的信息(例如灰度值)。在一种可能的实现方式中,第一数据可以为第一图像中一个或多个图像块的数据,该图像块可以例如为对该图像进行切分处理后的一个或多个图像块。为了便于描述,本申请实施例将第一数据对应的图像块称作第一图像块。

本申请实施例不限定第一DMA指令对应的源存储模块和目的存储模块的类型。可选的,第一DMA指令对应的源存储模块和目的存储模块可以为相同类型的存储模块,或者,DMA请求对应的源存储模块和目的存储模块可以为不同类型的存储模块。

存储模块的类型不同可以指处理器11的访存速度不同。在一种可能的实现方式中,第一源存储模块的访存速度低于第一目的存储模块的访存速度。例如,在一种可能的实现方式中,第一源存储模块和第一目的存储模块分别为外部设备2和内存12。或者,在一种可能的实现方式中,第一源存储模块和第一目的存储模块分别为内存12和缓存15。指令处理模块111通过执行第一DMA指令,指示DMA控制器13将处理器11常用的数据从内存搬运到缓存中,有利于减少处理器11对内存12的访问,从而有利于提高程序的运行速度。

指令处理模块111在获取第一DMA指令后,可以读取DMA存储信息,确定DMA存储信息中是否包括一条记录,该记录指示第一数据已被搬运到第一目的存储位置。为了便于描述,本申请实施例将该记录称作第一记录。本申请实施例中,可以将第一记录称作DMA存储信息中匹配第一DMA指令的记录。

为了便于指令处理模块111确定DMA存储信息中的记录是否对应于第一数据,DMA存储信息中的记录可以包括对应数据的标识,例如,第一记录可以包括第一数据的标识。指令处理模块111可以根据记录中数据的标识确定记录对应的数据是否为第一数据。可选的,第一数据的标识可以为第一数据的哈希值。指令处理模块111获取第一DMA指令后,可以计算第一数据的哈希值,之后遍历DMA存储信息中的记录,查找包括该哈希值和第一目的存储位置的记录。为了进一步提高指令处理模块111对DMA存储信息中第一记录的匹配效率,在一种可能的实现方式中,第一DMA指令还可以包括第一数据的标识,第一DMA指令中第一数据的标识用于在DMA存储信息中查找对应第一数据的记录。

在一种可能的实现方式中,DMA存储信息对应于目标程序,也就是说,DMA存储信息用于保存在目标程序运行过程中已执行的DMA指令的记录,相应的,第一数据的标识仅需用于在目标数据中唯一确定第一数据即可,有利于降低确定第一数据的标识的复杂度,同时,有利于提高DMA指令对应的数据与DMA存储信息对应的数据的匹配结果的准确性。例如,若目标数据为第一图像,第一数据的标识可以为第一图像中各个图像块的序号。

指令处理模块111在确定DMA存储信息中包括第一记录时,指令处理模块111可以不执行第一DMA指令。例如,指令处理模块111不执行第一DMA指令可以指,指令处理模块111不向DMA控制器13发送将第一数据从第一源存储位置搬运到第一目的存储位置的DMA指令,为了便于区分,本申请实施例将该DMA指令称作第一DMA请求。可选的,指令处理模块111继续获取下一条指令。例如,指令处理模块111可以继续执行目标程序,获取目标程序中的下一条指令。可选的,指令处理模块111在继续获取下一条指令之前,还可以检查第一DMA指令的正确性。

可选的,指令处理模块111在确定DMA存储信息中不包括第一记录时,指令处理模块111可以执行第一DMA指令。例如,指令处理模块111向DMA控制器13发送第一DMA请求,指示DMA控制器13将第一数据从第一源存储位置搬运到第一目的存储位置。DMA控制器13完成第一DMA请求指示的传输任务后,可以向处理器11反馈已完成第一DMA请求。指令处理模块111在接收到DMA控制器13反馈的已完成信息后,可以继续获取下一条指令。例如,指令处理模块111可以继续执行目标程序,获取目标程序中的下一条指令。可选的,指令处理模块111在继续获取下一条指令之前,还可以检查第一DMA指令的正确性。

处理器11中的指令处理模块111可以通过DMA存储信息确定获取的第一DMA指令对应的第一数据是否已经搬运到第一DMA指令对应的第一目的存储位置,在第一数据已经搬运到第一目的存储位置时,由于第一DMA指令对应的数据搬运任务(即把第一数据搬运到第一目的存储位置)已经完成,指令处理模块111可以不执行第一DMA指令,而是直接获取下一条指令,这样有利于减少DMA指令对应的数据搬运次数,并且有利于进一步提高处理器11的运行效率,用以满足处理器11日益增长的算力需求。

并且,当第一DMA指令对应的第一数据为第一图像块时,由于对图像块进行处理的过程一般涉及更多的重复DMA传输过程,将本申请实施例方法应用于图像处理领域,有利于避免更多次数的重复DMA传输过程,从而有利于进一步提高处理器11对图像数据的处理效率,提高程序的运行速度。

本申请实施例不限定DMA存储信息的生成方式。可选的,DMA存储信息中的记录可以为DMA控制器13生成的。假设DMA存储信息不包括第一记录,指令处理模块111确定DMA存储信息中不包括第一记录后,可以向DMA控制器13发送第一DMA请求,DMA控制器13根据第一DMA请求将第一数据从第一源存储位置搬运到第一目的存储位置后,可以在DMA存储信息中添加第一记录。或者,可选的,DMA存储信息中的记录可以为指令处理模块111生成的。本申请实施例不限定DMA存储信息中记录的生成时机。假设DMA存储信息不包括第一记录,可选的,指令处理模块111确定DMA存储信息中不包括第一记录后,可以向DMA控制器13发送第一DMA请求,DMA控制器13完成第一DMA请求并反馈已完成的信息,指令处理模块111可以在DMA存储信息中添加第一记录。或者,可选的,指令处理模块111向DMA控制器13发送第一DMA请求后,在DMA存储信息中添加第一记录。或者,可选的,指令处理模块111确定DMA存储信息中不包括第一记录后,便可以在DMA存储信息中添加第一记录。

指令处理模块111获取第一DMA指令后,若DMA存储信息不包括第一记录,并且,DMA存储信息包括指示第二数据已被搬运到第一目的存储位置的记录(称作第二记录),指令处理模块111还可以删除第二记录。例如,指令处理模块111可以直接删除第二记录,或者,指示DMA控制器13删除第二记录。

本申请实施例不限定目标程序中程序的数量,可选的,目标程序可以包括至少两个程序。为了便于描述,将目标程序中的程序称作子程序。假设目标程序至少包括但不限于仅包括第一子程序和第二子程序,第一子程序和第二子程序均用于处理目标数据,并且,假设第一子程序在第二子程序之前运行。可选的,指令处理模块111在运行第一子程序的过程中获取DMA指令(例如称作第二DMA指令),第二DMA指令指示将第一数据从第一源存储位置搬运到第一目的存储位置。指令处理模块111确定DMA存储信息不包括第二DMA指令匹配的记录后,可以执行第二DMA指令,并且在DMA存储信息中为第二DMA指令添加第一记录。之后,指令处理模块111在运行第二子程序的过程中获取第一DMA指令,由于DMA存储信息中包括第一记录,因此指令处理模块111可以不执行第一DMA指令。

在目标程序包括至少两个子程序的情况下,DMA存储信息可以被处理相同数据的多个子程序共享,由于多个子程序一般涉及更多的DMA指令,因此,多个子程序运行的过程将涉及更多的重复DMA传输任务,将本申请实施例方法拓展到多个子程序共用DMA存储信息,有利于避免更多次数的重复DMA传输过程,并且有利于进一步提高处理器11的运行效率,提高目标程序的运行速度。

图4所描述的指令处理模块111仅仅是示意性的,实际实现时指令处理模块111可以由多个单元实现,例如由计算单元和指令处理单元实现。示例性的,计算单元用于获取DMA指令,指令处理单元用于确定DMA存储信息是否包括第一记录,并在包括第一记录时指示计算单元继续获取下一条DMA指令,在不包括第一记录时向DMA控制器13发送第一DMA请求。指令处理模块111既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。采用软件实现时,图4所示的指令处理模块111可以由处理器11读取内存12中存储的程序指令后,生成的一个或多个软件功能模块来实现。图4中的模块也可以由处理器11中的不同硬件分别实现,或者也可以采用软件硬件相结合的方式来实现。

本申请实施例中,可以对目标程序进行预先规划,对于传输相同数据的多个DMA指令,可以为该多个DMA指令设置相同的目的地址。处理器11运行该目标程序的过程中,执行该多个DMA指令中的一个DMA指令后,便可以完成多个DMA指令指示的数据传输任务。这样,通过对数据读取的预先规划,结合DMA指令,有利于更大限度的利用缓存控件,减少数据的传输次数,有利于缓存的读取和替换策略实现全局最优。

下面基于图4所示的应用环境,以目标数据为第一图像的图像数据为例,示例性介绍目标程序的编译过程和运行过程。

参考图5,假设目标数据包括数据51和数据52,并且,假设数据51和数据52分别为第一图像的第一图像块的图像数据和第二图像块的图像数据。由于图像数据相当于一个矩阵,因此,目标程序对数据51和数据52的乘运算相当于实现矩阵乘运算。

在对目标程序的编译阶段,可以根据硬件资源,例如处理器11的计算资源和缓存容量,对目标数据进行切分。参考图5,可以将数据51切分为数据511和数据512,将数据52切分为数据521和数据522。假设数据511和数据512分别为第一图像块中的两个不同图像块的图像数据,数据521和数据522分别为第二图像块中的两个不同图像块的图像数据。由于目标数据被切分为4个数据块,可以为该4个数据块编序号,例如,数据511、数据512、数据521和数据522在目标数据中的序号分别为0、1、2、3。相应的,目标程序涉及的矩阵乘运算被拆分为数据511与数据521的矩阵乘运算、数据511与数据522的矩阵乘运算、数据512与数据521的矩阵乘运算以及数据512与数据522的矩阵乘运算。

进一步的,可以根据缓存的大小和I/O速度等,确定上述4个矩阵乘运算之间的计算顺序和数据缓存策略。假设选择的计算顺序和数据缓存策略如下所示:

1)调用子程序0,具体的,通过DMA传输将数据511从内存12中的源地址0加载到缓存15中的目的地址0,通过DMA传输将数据521从内存12中的源地址2加载到缓存15中的目的地址1,对目的地址0中的数据和目的地址1中的数据执行矩阵乘运算;

2)调用子程序1,具体的,通过DMA传输将数据512从内存12中的源地址1加载到缓存15中的目的地址0,通过DMA传输将数据521从内存12中的源地址2加载到缓存15中的目的地址1,对目的地址0中的数据和目的地址1中的数据执行矩阵乘运算;

3)调用子程序2,具体的,通过DMA传输将数据511从内存12中的源地址0加载到缓存15中的目的地址0,通过DMA传输将数据522从内存12中的源地址3加载到缓存15中的目的地址1,对目的地址0中的数据和目的地址1中的数据执行矩阵乘运算;

4)调用子程序3,具体的,通过DMA传输将数据512从内存12中的源地址1加载到缓存15中的目的地址0,通过DMA传输将数据522从内存12中的源地址3加载到缓存15中的目的地址1,对目的地址0中的数据和目的地址1中的数据执行矩阵乘运算。

根据上述计算顺序和数据缓存策略编译得到例如图6中目标程序,目标程序包括子程序0、子程序1、子程序2和子程序3。

为了便于编译和修改目标程序,可以运用流表(flowtable)来编译目标程序。假设根据上述计算顺序和数据缓存策略编译的流表如图6所示的流表。流表的每一行对应图6所示目标程序中的一个子程序。假设每个子程序均包括两个DMA指令,每个括号代表一个DMA指令所需调用的参数。括号中的三个参数依次代表DMA指令对应的数据的标识、源地址和目的地址。

通过图6可以看出,本申请实施例将多个子程序组成一个目标程序(例如称作超级核心super kernel),并通过全局规划,生成子程序的执行顺序、数据搬移的起始地址、目的地址和数据的标识(或称数据特征标签),并保存在流表中。

处理器11启动例如图6所示的目标程序后,目标程序的文件、流表和目标数据被加载至内存12中。目标数据中每个矩形中的数字代表目标数据中数据块的序号。图6示出的目标数据仅作为举例,而不限定目标数据中各个数据块在内存中的存储位置关系,例如,各个数据块可以为连续存储的,也可以为非连续存储的。

处理器11运行图6所示的目标程序的过程中,读取流表作为目标程序的入参,按照流表指示的子程序的顺序执行目标程序中的子程序。假设将流表中的参数传递给目标程序后,目标程序的内容从逻辑上可以理解为包括如下内容:

子程序0:

{DMA_MOV(0,源地址0,目的地址0)//DMA_MOV(2,源地址2,目的地址1)//目的地址0对应的矩阵乘目的地址1对应的矩阵

}

子程序1:

{DMA_MOV(1,源地址1,目的地址0)//DMA_MOV(2,源地址2,目的地址1)//目的地址0对应的矩阵乘目的地址1对应的矩阵

}

子程序2:

{DMA_MOV(0,源地址0,目的地址0)//DMA_MOV(3,源地址3,目的地址1)//目的地址0对应的矩阵乘目的地址1对应的矩阵

}

子程序3:

{DMA_MOV(1,源地址1,目的地址0)//DMA_MOV(3,源地址3,目的地址1)//目的地址0对应的矩阵乘目的地址1对应的矩阵

}

以上DMA_MOV()对应的DMA指令还可以包括其他参数,例如数据长度等,此处暂未表示,在实际应用中可以根据需求进行配置。

处理器11在运行图6所示的目标程序的过程中,指令处理模块111可以获取各个子程序中的DMA指令。图7示意性示出了在目标程序运行过程中数据的搬运过程和DMA存储信息的更新过程。图7以DMA存储信息保存在缓存15中为例。图7中代表时间先后顺序的线段上标识有各个子程序的描述信息,下面结合图7分别介绍各个子程序的运行过程中数据的搬运过程和DMA存储信息的更新过程。

1.处理器11开始运行目标程序时,目标数据中的数据块未从内存12搬运到至缓存15,并且,目标程序对应的DMA存储信息未保存DMA指令对应的记录。

2.处理器11运行子程序0时,指令处理模块111可以获取子程序0中的DMA指令,例如DMA_MOV(0,源地址0,目的地址0)和DMA_MOV(2,源地址2,目的地址1)。由于DMA存储信息不包括匹配这两个DMA指令的记录,指令处理模块111可以指示DMA控制器13将数据0从内存12中的源地址0搬运到缓存15中的目的地址0,将数据2从内存12中的源地址2搬运到缓存15中的目的地址1。指令处理模块111还可以在DMA存储信息中为获取的DMA指令添加相应记录,例如图7所示的(0,目的地址0)和(2,目的地址1)。

3.处理器11运行子程序1时,指令处理模块111可以获取子程序1中的DMA指令,例如DMA_MOV(1,源地址1,目的地址0)和DMA_MOV(2,源地址2,目的地址1)。由于DMA存储信息不包括匹配DMA_MOV(1,源地址1,目的地址0)的记录,指令处理模块111可以指示DMA控制器13将数据1从内存12中的源地址1搬运到缓存15中的目的地址0。由于DMA存储信息包括(0,目的地址0),指令处理模块111可以在DMA存储信息中将(0,目的地址0)替换为(1,目的地址0)。由于DMA存储信息包括匹配DMA_MOV(2,源地址2,目的地址1)的记录,指令处理模块111可以不指示DMA控制器将数据2从内存12中的源地址2搬运到缓存15中的目的地址1。

子程序2和子程序3的运行过程中数据的搬运过程和DMA存储信息的更新过程可以参考步骤2或步骤3所描述的内容进行理解,此处不再赘述。

现有处理器运行图6所示目标程序的过程中将执行目标程序中的所有DMA指令,即执行8次DMA传输。通过图7所示的目标程序的运行过程中数据的搬运过程和DMA存储信息的更新过程可以看出,和现有技术需要执行8次DMA传输相比,本申请实施例只需执行6次DMA传输,有利于减少DMA指令的执行次数,进而有利于提高数据传输效率,节约数据传输资源,并且有利于提高目标程序的运行速度。

本申请实施例通过在编译态对数据预处理,将预处理结果写入流表,并在运行态时通过流表控制数据的缓存策略,来达到最优数据缓存策略的目的。可见,与当前主流的“数据不经过任何处理直接读入缓存,并通过预定的缓存策略进行更新”的流程相比,本申请实施例新增了数据预处理过程以及DMA指令的控制过程。

应用场景二

本申请实施例可以应用于图8所示的计算设备1中。计算设备1包括处理器11、内存12和DMA控制器13。计算设备1还包括缓存15,缓存15可以集成在处理器11中。处理器11、内存12、缓存15和DMA控制器13这四者之间相互连接,例如,这四者之间可以通过总线14相互连接,也可以采用其他方式相互连接。在一种可能的实现方式中,图8所示的应用场景还可以包括计算设备1以外的其他设备,例如外部设备2。

图8所示的处理器11、内存12、DMA控制器13、缓存15、外部设备2以及任意两者之间的连接关系可以参考前文对图4对应的应用场景的相关介绍,此处不再赘述。和图4所示的计算设备1不同的,图8所示的计算设备1中,DMA控制器13中集成指令处理模块131,处理器11中不集成指令处理模块111。

其中,指令处理模块131用于处理获取到的DMA指令(称作第一DMA指令)。假设第一DMA指令指示通过DMA方式将第一数据从第一源存储位置搬运到第一目的存储位置。

本申请实施例不限定图8所示的指令处理模块131获取的第一DMA指令与图4所示的指令处理模块111获取的第一DMA指令相同,例如,指令处理模块131获取的第一DMA指令可以为来自处理器11的DMA请求(或称工作请求)。为了便于区分,以下,本申请实施例将指令处理模块131获取的第一DMA指令称作第一DMA请求。

具体的,指令处理模块131可以读取DMA存储信息中的记录,DMA存储信息用于为已执行的DMA指令保存相应的记录。可选的,DMA存储信息可以为图4或图7对应的实施例中介绍的DMA存储信息。

并且,指令处理模块131可以获取第一DMA请求。可选的,处理器11在获取第一DMA指令后,可以向DMA控制器13发送第一DMA请求,指令处理模块131可以获取该第一DMA请求。可选的,第一DMA指令可以为图4对应的实施例中介绍的第一DMA指令。参考前文对第一DMA指令的介绍,第一DMA指令指示将第一数据从第一源存储位置搬运到第一目的存储位置。相应的,第一DMA请求指示将第一数据从第一源存储位置搬运到第一目的存储位置。参考前文对第一DMA指令的介绍,第一DMA指令可以是在目标程序的运行过程中获取的,目标程序用于处理包括第一数据的目标数据,相应的,指令处理模块131获取的第一DMA请求也是在目标程序的运行过程中获取的。

指令处理模块131在获取第一DMA请求后,可以读取DMA存储信息,确定DMA存储信息中是否包括第一记录。可选的,第一记录可以为图4对应的实施例中介绍的第一记录。参考前文对第一DMA指令的介绍,第一记录可以包括第一数据的标识,可选的,第一DMA请求可以包括第一数据的标识。第一数据的标识可以为图4对应的实施例中介绍的第一数据的标识。

指令处理模块131在确定DMA存储信息中包括第一记录时,可以不执行第一DMA请求。例如,指令处理模块131不执行第一DMA请求可以指,指令处理模块131不执行第一DMA请求指示的数据传输任务,也就是说,不将第一数据从第一源存储位置搬运到第一目的存储位置,并且,可以向处理器11反馈已完成第一DMA请求。处理器11接收到指令处理模块131的反馈后,可以继续获取下一条指令。例如,处理器11可以继续执行目标程序,获取目标程序中的下一条指令。可选的,处理器11在继续获取下一条指令之前,还可以检查第一DMA请求的正确性。

可选的,指令处理模块131在确定DMA存储信息中不包括第一记录时,指令处理模块131可以执行第一DMA请求。例如,指令处理模块131执行第一DMA请求可以指,指令处理模块131不通过处理器11,将第一数据从第一源存储位置搬运到第一目的存储位置。可选的,指令处理模块131完成第一DMA请求指示的传输任务后,可以向处理器11反馈已完成第一DMA请求。处理器11接收到指令处理模块131的反馈后,可以继续获取下一条指令。例如,处理器11可以继续执行目标程序,获取目标程序中的下一条指令。可选的,处理器11在继续获取下一条指令之前,还可以检查第一DMA请求的正确性。

DMA控制器13中的指令处理模块131可以通过DMA存储信息确定获取的第一DMA请求对应的第一数据是否已经搬运到第一DMA请求对应的第一目的存储位置,在第一数据已经搬运到第一目的存储位置时,由于第一DMA请求对应的数据搬运任务(即把第一数据搬运到第一目的存储位置)已经完成,指令处理模块131可以不执行第一DMA请求,而是直接向处理器11反馈已完成第一DMA请求,这样有利于减少DMA控制器13实际执行的数据搬运次数,并且有利于进一步提高处理器11的运行效率,用以满足处理器11日益增长的算力需求。

并且,当第一DMA请求对应的第一数据为第一图像块时,由于对图像块进行处理的过程一般涉及更多的重复DMA传输过程,将本申请实施例方法应用于图像处理领域,有利于避免更多次数的重复DMA传输过程,从而有利于进一步提高处理器11对图像数据的处理效率,提高程序的运行速度。

指令处理模块131获取第一DMA请求后,若DMA存储信息不包括第一记录,并且,DMA存储信息包括指示第二数据已被搬运到第一目的存储位置的记录(称作第二记录),指令处理模块131还可以删除第二记录。

参考前文对第一DMA指令的介绍,第一DMA指令可以是在目标程序的运行过程中获取的,目标程序用于处理包括第一数据的目标数据,相应的,指令处理模块131获取的第一DMA请求也是在目标程序的运行过程中获取的。参考前文对目标程序的介绍,例如,目标程序至少包括但不限于仅包括第一子程序和第二子程序,第一子程序和第二子程序均用于处理目标数据,并且,假设第一子程序在第二子程序之前运行。可选的,指令处理模块131在处理器11运行第一子程序的过程中获取DMA请求(例如称作第二DMA请求),第二DMA请求指示将第一数据从第一源存储位置搬运到第一目的存储位置。指令处理模块131确定DMA存储信息不包括第二DMA请求匹配的记录后,可以执行第二DMA请求,并且在DMA存储信息中为第二DMA请求添加第一记录。可选的,指令处理模块131还可以向处理器11反馈第二DMA请求已完成。之后,指令处理模块131在处理器11运行第二子程序的过程中获取第一DMA请求,由于DMA存储信息中包括第一记录,因此指令处理模块131可以不执行第一DMA请求。可选的,指令处理模块131还可以向处理器11反馈第一DMA请求已完成。

在目标程序包括至少两个子程序的情况下,DMA存储信息可以被处理相同数据的多个子程序共享,由于多个子程序一般涉及更多的DMA指令,进而涉及更多的DMA请求,因此,多个子程序运行的过程将涉及更多的重复DMA传输任务,将本申请实施例方法拓展到多个子程序共用DMA存储信息,有利于避免更多次数的重复DMA传输过程,并且有利于进一步提高处理器11的运行效率,提高目标程序的运行速度。

图8所描述的指令处理模块131仅仅是示意性的,实际实现时指令处理模块131可以由多个单元实现,例如由传输单元和指令处理单元实现,示例性的,传输单元用于获取和执行第一DMA指令指示的数据传输任务,指令处理单元用于确定DMA存储信息中是否包括第一记录。指令处理模块131既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。采用软件实现时,图8所示的指令处理模块181可以由DMA控制器13读取程序指令后,生成的一个或多个软件功能模块来实现。图8中的模块也可以由DMA控制器13中的不同硬件分别实现,或者也可以采用软件硬件相结合的方式来实现。

应用场景三

本申请实施例可以应用于图9所示的计算设备1中。计算设备1包括处理器11、内存12和DMA控制器13。计算设备1还包括缓存15,缓存15可以集成在处理器11中。计算设备1还可以包括指令处理模块16。处理器11、内存12、缓存15、DMA控制器13和指令处理模块16之间相互连接,例如,这五者之间可以通过总线14相互连接,也可以采用其他方式相互连接。在一种可能的实现方式中,图9所示的应用场景还可以包括计算设备1以外的其他设备,例如外部设备2。

图9所示的处理器11、内存12、DMA控制器13、缓存15、外部设备2以及任意两者之间的连接关系(例如通过总线14相连)可以参考前文对图4对应的应用场景的相关介绍,此处不再赘述。和图4所示的计算设备1不同的,在图9所示的计算设备1中,指令处理模块未集成在DMA控制器13或处理器11中。

其中,指令处理模块16用于处理获取到的DMA指令(称作第一DMA指令)。假设第一DMA指令指示通过DMA方式将第一数据从第一源存储位置搬运到第一目的存储位置。

指令处理模块16获取的第一DMA指令可以为来自处理器11的DMA请求(或称工作请求)。为了便于区分,以下,本申请实施例将指令处理模块16获取的第一DMA指令称作第一DMA请求。例如,指令处理模块16获取的第一DMA请求可以参考前文中DMA控制器13或指令处理模块131获取的第一DMA请求来理解。

具体的,指令处理模块16可以读取DMA存储信息中的记录,DMA存储信息用于为已执行的DMA指令保存相应的记录。可选的,DMA存储信息可以为图4或图7对应的实施例中介绍的DMA存储信息。

并且,指令处理模块16可以获取第一DMA请求。可选的,处理器11在获取第一DMA指令后,可以向指令处理模块16发送第一DMA请求,指令处理模块16可以获取该第一DMA请求。可选的,第一DMA指令可以为图4对应的实施例中介绍的第一DMA指令。参考前文对第一DMA指令的介绍,第一DMA指令指示将第一数据从第一源存储位置搬运到第一目的存储位置。相应的,第一DMA请求指示将第一数据从第一源存储位置搬运到第一目的存储位置。参考前文对第一DMA指令的介绍,第一DMA指令可以是在目标程序的运行过程中获取的,目标程序用于处理包括第一数据的目标数据,相应的,指令处理模块16获取的第一DMA请求也是在目标程序的运行过程中获取的。

指令处理模块16在获取第一DMA请求后,可以读取DMA存储信息,确定DMA存储信息中是否包括第一记录。可选的,第一记录可以为图4对应的实施例中介绍的第一记录。参考前文对第一DMA指令的介绍,第一记录可以包括第一数据的标识,可选的,第一DMA请求可以包括第一数据的标识。第一数据的标识可以为图4对应的实施例中介绍的第一数据的标识。

指令处理模块16在确定DMA存储信息中包括第一记录时,可以不执行第一DMA请求。例如,指令处理模块16不执行第一DMA请求可以指,指令处理模块16不向DMA控制器13转发第一DMA请求。可选的,指令处理模块16可以向处理器11反馈已完成第一DMA请求。处理器11接收到指令处理模块16的反馈后,可以继续获取下一条指令。例如,处理器11可以继续执行目标程序,获取目标程序中的下一条指令。可选的,处理器11在继续获取下一条指令之前,还可以检查第一DMA请求的正确性。

可选的,指令处理模块16在确定DMA存储信息中不包括第一记录时,指令处理模块16可以执行第一DMA请求。例如,指令处理模块16执行第一DMA请求可以指,指令处理模块16向DMA控制器13转发第一DMA请求,指示DMA控制器13执行第一DMA请求。可选的,指令处理模块16转发第一DMA请求后,可以向处理器11反馈已完成第一DMA请求。或者,可选的,DMA控制器13完成第一DMA请求后,向处理器11反馈已完成第一DMA请求。处理器11接收到指令处理模块16或DMA控制器13的反馈后,可以继续获取下一条指令。例如,处理器11可以继续执行目标程序,获取目标程序中的下一条指令。可选的,处理器11在继续获取下一条指令之前,还可以检查第一DMA请求的正确性。

图9所描述的指令处理模块16仅仅是示意性的。指令处理模块16既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

指令处理模块16可以通过DMA存储信息确定获取的第一DMA请求对应的第一数据是否已经搬运到第一DMA请求对应的第一目的存储位置,在第一数据已经搬运到第一目的存储位置时,由于第一DMA请求对应的数据搬运任务(即把第一数据搬运到第一目的存储位置)已经完成,指令处理模块16可以不执行第一DMA请求,而是直接向处理器11反馈已完成第一DMA请求,这样有利于减少DMA控制器13实际执行的数据搬运次数,并且有利于进一步提高处理器11的运行效率,用以满足处理器11日益增长的算力需求。

并且,当第一DMA请求对应的第一数据为第一图像块时,由于对图像块进行处理的过程一般涉及更多的重复DMA传输过程,将本申请实施例方法应用于图像处理领域,有利于避免更多次数的重复DMA传输过程,从而有利于进一步提高处理器11对图像数据的处理效率,提高程序的运行速度。

指令处理模块16获取第一DMA请求后,若DMA存储信息不包括第一记录,并且,DMA存储信息包括指示第二数据已被搬运到第一目的存储位置的记录(称作第二记录),指令处理模块16还可以删除第二记录。

参考前文对第一DMA指令的介绍,第一DMA指令可以是在目标程序的运行过程中获取的,目标程序用于处理包括第一数据的目标数据,相应的,指令处理模块16获取的第一DMA请求也是在目标程序的运行过程中获取的。参考前文对目标程序的介绍,例如,目标程序至少包括但不限于仅包括第一子程序和第二子程序,第一子程序和第二子程序均用于处理目标数据,并且,假设第一子程序在第二子程序之前运行。可选的,指令处理模块16在处理器11运行第一子程序的过程中获取DMA请求(例如称作第二DMA请求),第二DMA请求指示将第一数据从第一源存储位置搬运到第一目的存储位置。指令处理模块16确定DMA存储信息不包括第二DMA请求匹配的记录后,可以执行第二DMA请求,并且在DMA存储信息中为第二DMA请求添加第一记录。可选的,指令处理模块16还可以向处理器11反馈第二DMA请求已完成。之后,指令处理模块16在处理器11运行第二子程序的过程中获取第一DMA请求,由于DMA存储信息中包括第一记录,因此指令处理模块16可以不向DMA控制器13转发第一DMA请求。可选的,指令处理模块16还可以向处理器11反馈第一DMA请求已完成。

在目标程序包括至少两个子程序的情况下,DMA存储信息可以被处理相同数据的多个子程序共享,由于多个子程序一般涉及更多的DMA指令,进而涉及更多的DMA请求,因此,多个子程序运行的过程将涉及更多的重复DMA传输任务,将本申请实施例方法拓展到多个子程序共用DMA存储信息,有利于避免更多次数的重复DMA传输过程,并且有利于进一步提高处理器11的运行效率,提高目标程序的运行速度。

以上介绍了本申请适用的几种可能的应用环境,下面介绍本申请实施例提供的集成芯片。如图10所示,该集成芯片10包括指令处理模块101,指令处理模块101用于获取第一直接存储器访问DMA指令,第一DMA指令指示通过DMA方式将第一数据从第一源存储位置搬运到第一目的存储位置;确定DMA存储信息中是否包括第一记录,第一记录用于指示第一数据已被搬运到第一目的存储位置,DMA存储信息用于保存已执行的DMA指令所对应的记录;在DMA存储信息中包括第一记录时,不执行第一DMA指令。

可选的,指令处理模块16还用于,在DMA存储信息不包括第一记录时,执行第一DMA指令,并且,在DMA存储信息中保存第一DMA指令所对应的记录。可选的,在DMA存储信息不包括第一记录,并且,DMA存储信息包括第二记录时,其中,第二记录用于指示第二数据已被搬运到第一目的存储位置,指令处理模块101还用于删除第二记录。

本申请实施例不限定第一目的存储位置和第一源存储位置对应的存储模块的类型。可选的,第一目的存储位置指向集成在缓存15,可选的,第一源存储位置指向内存12。

第一记录可以参考图4对应的实施例中的第一记录进行理解,例如,第一记录可以包括第一数据的标识。

可选的,集成芯片10可以视为图4所示的处理器11所在的集成芯片,指令处理模块101可以视为图4所示的处理器11中的指令处理模块111。相应的,指令处理模块16在不执行第一DMA指令时,具体用于不向DMA控制器(例如图4所示的DMA控制器13)发送将第一数据从第一源存储位置搬运到第一目的存储位置的DMA指令,并且,获取下一条指令。相应的,第一DMA指令可以参考图4或图6对应的实施例中的第一DMA指令进行理解,例如,可选的,第一DMA指令包括第一数据的标识,第一数据的标识用于在目标数据中唯一确定第一数据,例如,可选的,第一DMA指令为在目标程序的运行过程中获取的。相应的,目标程序可以参考图4或图6对应的实施例中的目标程序进行理解,例如,可选的,目标程序用于处理目标数据,目标数据包括第一数据,例如,可选的,目标程序包括第一子程序和第二子程序,第一子程序和第二子程序均用于处理目标数据,第一子程序在第二子程序之前运行。目标数据可以参考图4或图5或图6对应的实施例中的目标数据,例如,目标数据是第一图像的图像数据,第一数据是第一图像中第一图像块的图像数据。

在目标程序包括第一子程序和第二子程序时,指令处理模块16可以为在第一子程序的运行过程中获取并执行的DMA指令(称作第二DMA指令)在DMA存储信息中保存第一记录,并且,指令处理模块16可以在第二子程序运行过程中获取第一DMA指令。指令处理模块16确定DMA存储信息中包括第一记录时,可以不执行第一DMA指令。

或者,可选的,集成芯片10可以视为图8所示的DMA控制器13所在的芯片,指令处理模块101可以视为图8所示的DMA控制器13中的指令处理模块131。相应的,指令处理模块16在不执行第一DMA指令时,具体用于不将第一数据从第一源存储位置搬运到第一目的存储位置的DMA指令。可选的,可以向处理器11反馈已完成第一DMA指令。相应的,第一DMA指令可以参考图8对应的实施例中的第一DMA请求进行理解,例如,可选的,第一DMA请求包括第一数据的标识,第一数据的标识用于在目标数据中唯一确定第一数据,例如,可选的,第一DMA请求为在目标程序的运行过程中获取的。目标程序可以参考图4或图6对应的实施例中的目标程序进行理解,例如,可选的,目标程序用于处理目标数据,目标数据包括第一数据,例如,可选的,目标程序包括第一子程序和第二子程序,第一子程序和第二子程序均用于处理目标数据,第一子程序在第二子程序之前运行。目标数据可以参考图4或图5或图6对应的实施例中的目标数据,例如,目标数据是第一图像的图像数据,第一数据是第一图像中第一图像块的图像数据。

在目标程序包括第一子程序和第二子程序时,指令处理模块16可以为在第一子程序的运行过程中获取并执行的DMA指令(称作第二DMA指令)在DMA存储信息中保存第一记录,并且,指令处理模块16可以在第二子程序运行过程中获取第一DMA指令。指令处理模块16确定DMA存储信息中包括第一记录时,可以不执行第一DMA指令。

或者,可选的,集成芯片10可以视为图9所示的指令处理模块16所在的集成芯片,指令处理模块101可以视为图9所示的指令处理模块16。相应的,指令处理模块16在不执行第一DMA指令时,具体用于不向DMA控制器13转发第一DMA指令。可选的,指令处理模块16可以向处理器11反馈已完成第一DMA指令。相应的,第一DMA指令可以参考图8对应的实施例中的第一DMA请求进行理解,例如,可选的,第一DMA请求包括第一数据的标识,第一数据的标识用于在目标数据中唯一确定第一数据,例如,可选的,第一DMA请求为在目标程序的运行过程中获取的。目标程序可以参考图4或图6对应的实施例中的目标程序进行理解,例如,可选的,目标程序用于处理目标数据,目标数据包括第一数据,例如,可选的,目标程序包括第一子程序和第二子程序,第一子程序和第二子程序均用于处理目标数据,第一子程序在第二子程序之前运行。目标数据可以参考图4或图5或图6对应的实施例中的目标数据,例如,目标数据是第一图像的图像数据,第一数据是第一图像中第一图像块的图像数据。

在目标程序包括第一子程序和第二子程序时,指令处理模块16可以为在第一子程序的运行过程中获取并执行的DMA指令(称作第二DMA指令)在DMA存储信息中保存第一记录,并且,指令处理模块16可以在第二子程序运行过程中获取第一DMA指令。指令处理模块16确定DMA存储信息中包括第一记录时,可以不执行第一DMA指令。

基于同一发明构思,本申请实施例还提供一种指令处理方法,参见图11,该方法包括如下步骤。

S1101.获取第一DMA指令;

其中,第一DMA指令指示通过DMA方式将第一源存储位置中的第一数据搬运到第一目的存储位置。

S1102.确定DMA存储信息中是否包括第一记录;

其中,第一记录用于指示第一数据已被搬运到第一目的存储位置,DMA存储信息用于保存已执行的DMA指令所对应的记录;

S1103.在DMA存储信息中包括第一记录时,不执行第一DMA指令;

可选的,在S1103之后,该方法还可以包括步骤S1104。

S1104.在DMA存储信息不包括第一记录时,执行第一DMA指令,并且,在DMA存储信息中保存第一DMA指令所对应的记录。

可选的,该方法还包括,在DMA存储信息不包括第一记录,并且,DMA存储信息包括第二记录时,其中,第二记录用于指示第二数据已被搬运到第一目的存储位置,删除第二记录。

需要说明的是,图11所示的指令处理方法可以视为图10所示的集成芯片10所执行的方法,图11所示的指令处理方法中未详尽描述的实现方式和技术效果可以参见图10所示的集成芯片10中的相关描述。

本申请实施例中,多个是指两个或两个以上,本申请不做限制。在本申请实施例中,“/”可以表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;“和/或”可以用于描述关联对象存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。为了便于描述本申请实施例的技术方案,在本申请实施例中,可以采用“第一”、“第二”等字样对功能相同或相似的技术特征进行区分。该“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。在本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明,被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本申请的这些修改和变型属于本发明权利要求的范围之内,则本发明也意图包括这些改动和变型在内。

相关技术
  • 一种指令处理方法、CPU交互系统及采用该系统的耗材芯片
  • 一种AC-DC芯片与高压续流二极管集成芯片结构及电源模组
  • 一种集成电路IC芯片引脚修复设备及芯片引脚修复方法
  • 一种指令处理方法、指令处理装置和芯片
  • 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法
技术分类

06120115605619