用于执行数据处理的装置、方法、和计算设备

文档序号:378693 发布日期:2021-12-10 浏览:10次 >En<

阅读说明:本技术 用于执行数据处理的装置、方法、和计算设备 (Apparatus, method, and computing device for performing data processing ) 是由 卢廷玉 郭海涛 李涛 俞柏峰 于 2020-06-09 设计创作,主要内容包括:本申请涉及用于执行数据处理的装置、方法、和计算设备。本申请提供的数据处理装置包括:控制单元和耦合至控制单元的缓存单元。缓存单元利用第一队列和第二队列存储由控制单元接收的多个指令,多个指令包括内存拷贝指令和读写指令。在此,第一队列用于存储内存拷贝指令,以及第二队列用于存储读写指令。控制单元接收多个指令,并且根据预定规则和多个指令的类型,将多个指令分别存储至第一队列和第二队列。控制单元并行地执行第一队列和第二队列中存储的指令。由此实现并行地执行两个队列中的指令,进而避免出现读写指令被阻塞的情况。(The present application relates to an apparatus, method, and computing device for performing data processing. The data processing apparatus provided by the present application includes: a control unit and a buffer unit coupled to the control unit. The cache unit stores a plurality of instructions received by the control unit by using the first queue and the second queue, wherein the plurality of instructions comprise a memory copy instruction and a read-write instruction. Here, the first queue is used to store memory copy instructions and the second queue is used to store read and write instructions. The control unit receives a plurality of instructions and stores the plurality of instructions to the first queue and the second queue, respectively, according to a predetermined rule and a type of the plurality of instructions. The control unit executes instructions stored in the first queue and the second queue in parallel. Therefore, the instructions in the two queues are executed in parallel, and the condition that the read-write instructions are blocked is avoided.)

用于执行数据处理的装置、方法、和计算设备

技术领域

本申请涉及数据处理领域,具体地,涉及用于执行数据处理的装置、方法、控制器和服务器。

背景技术

在计算设备中,可以利用内存拷贝操作实现将内存中一块连续的数据从一个地址拷贝到另一个地址。可以使用一个读指令和一个写指令来实现内存拷贝操作。但是,计算设备中除了内存拷贝操作相关的指令外,还存在其他类型的指令(例如,普通读指令和写指令)。当计算机设备中存在多个内存拷贝操作时,内存拷贝操作相关的指令和其他类型的指令只能按照顺序逐个、串行处理,使得整个计算设备中指令执行过程出现拥塞,导致各指令在处理过程中存在耗时长、效率低的问题。因此,如何提供一种并行处理指令的方法成为亟待解决的技术问题。

发明内容

本申请提供一种用于执行数据处理的装置、方法、和计算设备,以便用于提供一种并行指令处理的技术方案。

第一方面,提供了一种数据处理装置。该装置包括控制单元和耦合至控制单元的缓存单元。控制单元接收多个指令,并且利用缓存单元中的第一队列和第二队列存储多个指令。在此,多个指令包括内存拷贝指令和读写指令。控制单元根据预定规则和多个指令的类型,将多个指令分别存储至第一队列和第二队列。具体地,第一队列用于存储内存拷贝指令,并且第二队列用于存储读写指令。进一步,控制单元并行地执行第一队列和第二队列中存储的指令。在此,第一队列和第二队列是两种类型的队列,利用上述装置,基于第一队列和第二队列,可以并行地执行两个队列中的指令。以此实现两种类型的队列独立地被调度,并且并行地执行内存拷贝指令和读写指令,进而避免出现读写指令被阻塞的情况。

在一种可能的实现方式中,预定规则包括多个指令之间的地址依赖关系。上述地址依赖关系是根据多个指令中携带的地址所确定的。可以判断多个指令中的内存拷贝指令和读写指令是否访问相同页面,以便确定是否存在地址依赖关系。利用上述装置可以将多个指令中的不具有地址依赖关系的指令分别存储至第一队列和第二队列,以便并行地执行这些指令。

在另一种可能的实现方式中,可以判断多个指令中的内存拷贝指令和读写指令是否访问相同页面,以便确定内存拷贝指令和读写指令之间是否存在地址依赖关系。如果内存拷贝指令和读写指令访问相同页面,确定内存拷贝指令和读写指令存在地址依赖关系。如果内存拷贝指令和读写指令没有访问相同页面,确定内存拷贝指令和读写指令不存在地址依赖关系。利用上述装置,不需要判断两个指令的地址是否重叠,而是仅需要判断两个指令是否涉及相同的页面。由此避免直接判断地址是否重叠造成的较高计算量。进一步,通过调节页面的大小,可以在判断的准确性和计算量进行平衡,以便在确保准确性的情况下尽量降低计算量。

在另一种可能的实现方式中,为了判断两个指令是否涉及相同的页面,可以为内存中的各个页面分别设置读计数器和写计数器。继而,可以根据读计数器和写计数器,确定内存拷贝指令和读写指令是否访问相同页面。利用本申请所使用读计数器和写计数器,可以有效地监视各个页面是否同时被读写。以此实现以简单并且有效的方式检测数据冲突进而确定地址依赖关系。

在另一种可能的实现方式中,当某个指令访问页面时,可以更新该页面的两个计数器的数值。具体地,如果确定多个指令中的指令将要读取页面,增加读计数器的数值;如果确定多个指令中的指令已经读取页面,降低读计数器的数值;如果确定多个指令中的指令将要写入页面,增加写计数器的数值;以及如果确定多个指令中的指令已经写入页面,降低写计数器的数值。基于更新读计数器和写计数器的数值,即可记录页面被读取和/或写入的状态,进而确定两个指令的地址依赖关系。

在另一种可能的实现方式中,如果写计数器的数值不同于写计数器的初始值,确定内存拷贝指令和读写指令访问相同页面。根据本申请的数据处理装置,如果写计数器的数值不同于初始值,这表示页面将要被写入。被写入的数据可能会影响另一指令的读取,也可能会影响另一指令的写入,这将导致内存拷贝指令和读写指令存在地址依赖关系。以此方式,通过比较即可确定内存拷贝指令和读写指令是否具有地址依赖关系。

在另一种可能的实现方式中,提出了一种内存拷贝指令的格式,该内存拷贝指令包括:源地址、目的地地址以及拷贝长度。在此,内存拷贝指令表示基于内存拷贝长度将源地址处的数据拷贝至目的地地址。利用本申请的示例性实现方式,可以基于单一的内存拷贝指令来执行原本需要由两个指令(一个读指令和一个写指令)执行的拷贝操作。此时,在执行内存拷贝操作时,处理单元仅被调用一次,因而可以降低处理单元的资源开销,并且降低数据往来于处理单元和内存之间的传输带宽。

在另一种可能的实现方式中,内存拷贝指令还包括高速缓存标记,以便指示将数据加载至与内存相关联的高速缓存。利用本申请中的高速缓存标记,可以将未来可能被访问的数据预先加载至高速缓存中。以此提高计算设备中的数据访问效率,进而提高数据处理的整体性能。

在另一种可能的实现方式中,当拷贝长度过长时,可能会造成内存拷贝指令与读写指令存在地址依赖关系的可能性提高。因而,如果确定内存拷贝指令的拷贝长度超过预定阈值,可以将内存拷贝指令划分为多个子指令。进一步,可以将多个子指令存储至第一队列。利用本申请的数据处理装置,通过将跨越加大拷贝长度的内存拷贝指令划分为多个子指令,可以降低在内存拷贝指令和读写指令之间频繁地检测到地址依赖关系的可能性。以此提高执行内存拷贝指令和读写指令的并行度,进而提高数据处理的性能。

在另一种可能的实现方式中,提出了直接读写指令的概念。直接读写指令与多个指令中的其他任一内存拷贝指令不存在地址依赖关系,因而可以优先地被执行。具体地,可以基于地址依赖关系在多个指令中的读写指令中检测直接读写指令。进一步,可以立即执行直接读写指令。利用本申请的数据处理装置,可以优先地执行与其他内存拷贝指令不存在地址依赖关系的直接读写指令。以此缓解传统方案中的普通读写指令被阻塞的情况,并且提高读写指令的响应速度。

在另一种可能的实现方式中,可以基于直接读写生成访问内存的读写命令,并且从内存接收读写结果。进一步,可以向处理单元读写结果。利用本申请的数据处理装置可以以较快的速度获得执行直接读写指令的结果,进而提高读写指令的处理效率。

在另一种可能的实现方式中,可以优先地处理与其他读写指令不具有地址依赖关系的内存拷贝指令。具体地,可以确定内存拷贝指令与多个指令中的读写指令是否存在地址依赖关系。如果确定内存拷贝指令与多个指令中的任一读写指令不存在地址依赖关系,将内存拷贝指令存储至第一队列。本申请的数据处理装置仅需通过简单的比较即可确定内存拷贝指令与其他读写指令是否存在地址依赖关系。可以快速并且有效地将与其他读写指令不具有地址依赖关系的内存拷贝指令存储至第一队列。当内存拷贝指令被存储至第一队列之后,可以按顺序执行第一队列中的各个内存拷贝指令。以此方式,内存拷贝指令的执行将会独立于第二队列中的普通读写指令的执行,因而避免普通读写指令被阻塞的情况。

在另一种可能的实现方式中,由于内存拷贝指令包括源地址和目的地地址,因而在确定地址依赖关系时应当考虑上述两个地址。如果确定内存拷贝指令的源地址和目的地地址涉及的页面均不同于读写指令涉及的页面,确定内存拷贝指令与读写指令不存在地址依赖关系。由此可以以方便并且有效的方式找到不依赖于其他读写指令的内存拷贝指令。

在另一种可能的实现方式中,当内存拷贝指令与读写指令存在地址依赖关系时,还需要确定内存拷贝指令与读写指令被接收的时序关系。此时,预定规则包括地址依赖关系和时序关系。如果确定内存拷贝指令与读写指令存在地址依赖关系,可以基于地址依赖关系和时序关系两者,分别将内存拷贝指令和读写指令存储至第一队列和第二队列。时序关系指示了内存拷贝指令和读写指令应当被执行的原始时间顺序。基于时序关系来将内存拷贝指令和读写指令存储至相应队列,可以确保基于两个队列并行地执行多个指令的结果与按照原始时间顺序串行执行多个指令时的结果相一致。

在另一种可能的实现方式中,假设时序关系表示内存拷贝指令在读写指令之前被接收、并且地址依赖关系表示内存拷贝指令的目的地地址与读写指令的地址访问相同页面。此时,需要在已经执行内存拷贝指令之后,将读写指令存储至第二队列。通过优先地执行内存拷贝指令,可以消除内存拷贝指令和读写指令的地址依赖关系。以此方式,在内存拷贝指令已经成功被执行之后,内存拷贝指令和读写指令的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

在另一种可能的实现方式中,假设时序关系表示内存拷贝指令在写指令之前被接收、并且地址依赖关系表示内存拷贝指令的源地址与写指令的地址访问相同页面。此时,需要在已经执行内存拷贝指令之后,将写指令存储至第二队列。通过优先地执行内存拷贝指令,可以消除内存拷贝指令和写指令的地址依赖关系。以此方式,在内存拷贝指令已经成功被执行之后,内存拷贝指令和写指令的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

在另一种可能的实现方式中,假设时序关系表示内存拷贝指令在读写指令之后被接收、并且地址依赖关系表示内存拷贝指令的目的地地址与读写指令的地址访问相同页面。此时,需要在已经执行读写指令之后,将内存拷贝指令存储至第一队列。通过优先地执行读写指令,可以消除内存拷贝指令和读写指令的地址依赖关系。在读写指令已经成功被执行之后,内存拷贝指令和读写指令的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

在另一种可能的实现方式中,假设时序关系表示内存拷贝指令在写指令之后被接收、并且地址依赖关系表示内存拷贝指令的源地址与写指令的地址访问相同页面。此时,需要在已经执行写指令之后,将内存拷贝指令存储至第一队列。通过优先地执行写指令,可以消除内存拷贝指令和写指令的地址依赖关系。以此方式,在写指令已经成功被执行之后,内存拷贝指令和写指令的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

在另一种可能的实现方式中,第一队列中的内存拷贝指令与第二队列中的读写指令不具有地址依赖关系,因而可以并行地执行两个队列中的指令。具体地,可以按照第一队列中的至少一个内存拷贝指令的顺序,执行至少一个内存拷贝指令。与执行至少一个内存拷贝指令并行地,可以按照第二队列中的至少一个读写指令的顺序,执行至少一个读写指令。多个指令分别被存储至相应的队列,可以避免读写指令被内存拷贝指令阻塞的情况。进一步,由于第一队列和第二队列中的指令可以并行地执行,可以提高访问内存的指令的执行效率。以此方式,可以提高来自处理单元的多个指令的并行处理程度,进而提高数据处理的整体性能。

第二方面,提供了一种数据处理方法。可以由数据处理装置来执行该方法,具体地,可以由数据处理装置来接收包括内存拷贝指令和读写指令的多个指令。根据预定规则和多个指令的类型,将多个指令分别存储至第一队列和第二队列。在此,第一队列用于存储内存拷贝指令,以及第二队列用于存储读写指令。继而,并行地执行第一队列和第二队列中存储的指令。

作为一种可能的实现方式,提供了一种处理器来用于执行上述第一方面或第一方面中任意一种可能的实现方式中所述数据处理装置所实现的功能。作为一种可能的实现方式,可以提供处理器来用于执行上述第二方面的方法的操作步骤。

第三方面,提供了一种内存管理器,该内存管理器包括数据处理装置,该数据处理装置用于实现上述第一方面或第一方面任意一种可能的实现方式中的数据处理装置所实现的功能。

第四方面,提供了一种数据处理装置。该装置包括:处理器接口单元、耦合至接口单元的入队单元、耦合至入队单元的缓存单元、以及耦合至缓存单元的指令调度单元。具体地,处理器接口单元接收包括内存拷贝指令和读写指令的多个指令。入队单元根据预定规则和多个指令的类型,将多个指令分别存储至缓存单元中的第一队列和第二队列。在此,第一队列用于存储内存拷贝指令,以及第二队列用于存储读写指令。缓存单元利用第一队列和第二队列存储多个指令,并且指令调度单元并行地执行第一队列和第二队列中存储的指令。

第五方面,提供了一种计算设备。该计算设备包括:处理单元以及内存管理器单元。在此的内存管理器单元可以执行根据本申请的第一方面及第一方面中任意一种可能的实现方式中,以及第二方面及第二方面中任意一种可能的实现方式中所述的数据处理方法。

第六方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。

附图说明

图1为本申请提供的一种数据处理装置的示意性框图;

图2为本申请的示例性实现方式的用于数据处理的过程的框图;

图3为本申请的示例性实现方式的用于数据处理的方法的流程图;

图4为本申请的示例性实现方式的内存拷贝指令的结构的框图;

图5为本申请的示例性实现方式的用于确定地址依赖关系的过程的框图;

图6为本申请的示例性实现方式的用于分别将多个指令存储至相应队列的方法的流程图;

图7为本申请的示例性实现方式的数据处理装置的硬件结构的框图;以及

图8为本申请的示例性实现方式的用于在计算设备中部署数据处理装置的框图。

具体实施方式

下面将参照附图更详细地描述本申请的优选实现。

本申请提出了一种数据处理装置,用以实现并行处理指令,以提高指令处理效率、降低指令处理时长。在下文中,将参加图1描述根据本申请的示例性实现方式的概要,该图1为本申请提供的一种数据处理装置的结构示意图100。如图1所示,提出了一种数据处理装置110,该数据处理装置110可以被连接在处理单元140和内存(包括内存142、……、以及内存144)之间。处理单元140向数据处理装置110发送多个指令,并且数据处理装置110包括控制单元120和耦合至控制单元120的缓存单元130。在此,缓存单元130用于利用第一队列132和第二队列134存储由控制单元120接收的多个指令。

应理解,处理单元140可以是中央处理单元(central processing unit,CPU),该处理单元140还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。类似地,控制单元120也具有与处理单元类似的物理形态。缓存单元130可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datadate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。

根据本申请的示例性实现方式,提出了内存拷贝指令的概念。在此的内存拷贝指令是指,利用一条指令执行从内存中的源地址向目的地地址拷贝数据的操作。可以在处理单元140的指令集中添加新的内存拷贝指令。此时,控制单元120接收多个指令,并且多个指令包括内存拷贝指令和读写指令。在此的内存拷贝指令即根据本申请的示例性实现方式所提出的指令,而读写指令是指计算设备中的原有普通读写指令。控制单元120将接收到的多个指令分别存储至第一队列132和第二队列134。在此的第一队列132和第二队列134是两种类型的队列,并且分别用于纯粹内存拷贝指令和读写指令。基于第一队列132和第二队列134,可以并行地执行两个队列中的指令。以此方式,两个队列独立地被调用以便并行地执行内存拷贝指令和读写指令,进而避免出现读写指令被阻塞的情况。

其中,第一队列和第二队列分别用于存储内存拷贝指令和除内存拷贝指令以外的其他类型指令。对于第一队列和第二队列的队列深度,本申请不做限定。在具体实施中,第一队列和第二队列可以被设置为相同或不同的队列深度,也可以依据业务需求动态调整每个队列的队列深度。另一方面,对于第一队列和第二队列的数量也不构成对本申请所要保护技术方案的限定。在具体实施中,第一队列和第二队列的数量可以根据业务需求设置和调整。

在下文中,将参见图2描述根据本申请的示例性实现方式的更多细节。图2为本申请提供的一种数据处理的过程的框图200。如图所示,数据处理装置可以接收来自处理单元140的内存拷贝指令210和读写指令220,并且可以设置预定规则230。进一步,可以基于多个指令的类型和预定规则230,将内存拷贝指令210存储至第一队列132,并且将读写指令220存储至第二队列134。根据本申请的示例性实现方式,数据处理装置110可以执行一种用于数据处理的方法,以便并行地执行接收到的多个指令。在下文中,将参见图3描述根据本申请的示例性实现方式的更多细节。

图3为本申请提供的一种数据处理的方法300的流程图。可以由数据处理装置110来执行方法300。在框310处,由数据处理装置110从处理单元140接收多个指令。在此的多个指令包括如下类型:内存拷贝指令210和读写指令220。参见图4描述根据本申请的示例性实现方式的内存拷贝指令的格式,该图4为本申请的示例性实现方式的内存拷贝指令210的格式的框图400。如图4中的实线框所示,内存拷贝指令210可以包括如下部分:标识符410、源地址420、目的地地址430和拷贝长度440。

其中,标识符410用于表示指令的类型。可以在处理单元140的指令集中加入利用标识符410所指示的内存拷贝指令210。将会理解,处理单元140可以基于不同的架构。因而,可以基于处理单元140的架构,来设计不同的指令格式。具体地,在基于X86架构的处理单元中,可以以一个标识符来表示内存拷贝指令210;在基于高级精简指令集机器(AdvancedRISC Machine,缩写ARM)架构的处理单元中,可以以另一标识符来表示内存拷贝指令210。在内存拷贝指令210中,源地址420表示将要被拷贝的数据所在的地址,目的地地址430表示用于存储将要被拷贝的数据的目的地的地址,并且拷贝长度440表示将要被拷贝的数据的长度。基于图4所示的指令格式,可以基于拷贝长度440,将数据从内存中的源地址420拷贝至目的地地址430处。

本申请可以基于单一的内存拷贝指令210来执行原本需要由两个指令(即,读指令和写指令)执行的拷贝操作。此时,利用内存拷贝指令210,处理单元140仅被调用一次,因而可以降低处理单元140的资源开销,并且降低处理单元140的工作负载。进一步,待拷贝数据直接从源地址420被写入至目的地地址430,并不需要将待拷贝数据在处理单元140和内存142之间传输。以此方式,可以降低传输路径的带宽需求。

继续参见图4,内存拷贝指令210还可以包括高速缓存标记450,该标记表示在执行内存拷贝指令210时是否将内存142中的源地址420中的数据加载至与内存142相关联的高速缓存中。计算设备可以包括多个速度等级的存储设备:具有较高访问速度的高速缓存以及具有较低访问速度的内存142。通常而言,处理单元140将需要被频繁访问的数据加载至高速缓存中。根据本申请的示例性实现方式,如果高速缓存标记450被设置,则可以将数据加载至高速缓存中,否则不执行加载操作。通常而言,在执行内存拷贝指令210之后经常会调用被拷贝的数据。在数据调用时,处理单元140首先在高速缓存中查找是否存在将要被访问的数据,如果存在则直接读取;如果不存在则从具有较低访问速度的内存142中读取数据。利用本申请的示例性实现方式,高速缓存标记450可以用于将未来可能被访问的数据预先加载至高速缓存中。以此方式,可以提高高速缓存中的数据访问效率,进而提高数据处理的整体性能。

上文已经描述了有关接收多个指令的细节,在下文中将返回图3描述如何处理接收到的多个指令。在图3的框320处,根据预定规则230和多个指令的类型,将多个指令分别存储至第一队列132和第二队列134。在此,可以由数据处理装置110来执行框320处所示的步骤。根据本申请的示例性实现方式,将内存拷贝指令210存储至第一队列132,并且将读写指令220存储至第二队列134。

其中,预定规则230可以包括多个指令之间的地址依赖关系,并且地址依赖关系是根据多个指令中携带的地址所确定的。对于内存拷贝指令210而言,该指令可以携带两个地址,即,源地址420和目的地地址430。读写指令220仅携带一个地址:读指令可以携带将要被读取的数据的地址,并且写指令可以携带将要被写入数据的地址。为了方便描述起见,可以将读写指令的上述地址统称为读写指令的地址。本申请可以将多个指令中的不具有地址依赖关系的指令分别存储至第一队列132和第二队列134,以便并行地执行这些指令。

在下文中,参见图5描述如何根据多个指令中携带的地址确定地址依赖关系。图5为本申请的示例性实现方式的用于确定地址依赖关系的过程的框图500。将会理解,图5仅以读写指令220的地址为示例来进行描述,有关内存拷贝指令210的源地址420和目的地地址430的操作也是类似的,因而不再赘述。

由于采用两个队列来分别存储内存拷贝指令210和读写指令220,此时仅需要确定内存拷贝指令210和读写指令220的地址依赖关系。如果接收到多个内存拷贝指令,可以按照各个内存拷贝指令被接收的时间顺序,来将这些内存拷贝指令存储至第一队列132。类似地,接收到的多个读写指令也可以按照时间顺序被存储至第二队列134中。将会理解,如果直接判断两个指令的地址是否重叠,将会导致较高的计算量。根据本申请的示例性实现方式,可以根据两个指令是否访问相同的页面,来判断两个指令是否具有地址依赖关系。利用本申请的示例性实现方式,并不需要判断两个指令的地址是否重叠,而是仅需要判断两个指令是否涉及相同的页面。以此方式,可以避免直接判断地址是否重叠造成的较高计算量。

如图5所示,读写指令220的地址510可以指向内存142中的数据530,并且该数据530位于内存142中的页面520。将会理解,在此页面520是内存142中的一个地址范围。根据本申请的示例性实现方式,页面520可以具有不同的大小。页面520的大小越大,则判断地址依赖关系的粒度越粗糙。此时,将会有更多的指令被判断为具有地址依赖关系。页面520的大小越小,则判断地址依赖关系的粒度越精细。此时,将会导致更高的计算量。利用本申请的示例性实现方式,可以在上述两个方面之间进行平衡,以便选择适合的大小。通过调节页面520的大小,可以在判断的准确性和计算量之间进行平衡,以便在确保准确性的情况下尽量降低计算量。

在下文中,将描述确定内存拷贝指令210和读写指令220是否存在地址依赖关系。如果内存拷贝指令210和读写指令220访问相同页面,可以确定内存拷贝指令210和读写指令220存在地址依赖关系。如果内存拷贝指令210和读写指令220没有访问相同页面,可以确定内存拷贝指令210和读写指令220不存在地址依赖关系。

将会理解,尽管图5仅示意性示出了内存142中的一个页面520,内存142中还可以包括多个其他的页面。根据本申请的示例性实现方式,可以为每个页面分别设置读计数器532和写计数器534。在此的读计数器532可以表示该页面是否正在被读取,而写计数器534可以表示该页面是否正在被写入。进一步,根据读计数器532和写计数器534,可以确定内存拷贝指令210和读写指令220是否访问相同页面。

当内存拷贝指令210和读写指令220访问相同页面时,才有可能产生数据冲突进而需要特殊处理。利用本申请的示例性实现方式,使用读计数器532和写计数器534可以有效地监视页面520是否同时被读写。以此方式,可以以简单并且有效的方式检测数据冲突进而确定地址依赖关系。

根据本申请的示例性实现方式,如果确定页面520将要被读取,可以增加读计数器532的数值。如果确定页面520已经被读取,可以降低读计数器532的数值。写计数器534可以执行类似的操作。具体地,如果确定页面520将要被写入,可以增加写计数器534的数值。如果确定页面520已经被写入,可以降低写计数器534的数值。利用本申请的示例性实现方式,基于更新读计数器532和写计数器534的数值,即可记录页面520被读取和/或写入的状态。以此方式,可以便于确定两个指令的地址依赖关系。根据本申请的示例性实现方式,如果写计数器534的数值不同于初始值,这表示页面520将要被写入。此时,被写入的数据可能会影响另一指令的读取,也可能会影响另一指令的写入,这将导致内存拷贝指令210和读写指令220存在地址依赖关系。

在一个示例中,假设读写指令220是写指令,内存拷贝指令210的源地址420和写指令的地址指向相同的页面520,并且读计数器532和写计数器534的初始值均为0。可以将读计数器532和写计数器534分别更新为1,此时,内存拷贝指令210和读写指令220存在地址依赖关系。在另一示例中,假设内存拷贝指令210的目的地地址430和写指令的地址指向相同的页面520,并且读计数器532和写计数器534的初始值均为0。可以将写计数器534更新为2,此时,内存拷贝指令210和读写指令220存在地址依赖关系。本申请通过将计数器的数值与初始值进行比较,即可确定两个指令的地址依赖关系。以此方式,可以提高确定地址依赖关系的效率,进而提高数据处理的整体性能。

接下来,将参见图6描述基于地址依赖关系将多个指令分别存储至第一队列132和第二队列134的具体过程。图6为本申请提供的分别将多个指令存储至相应队列的方法600的流程图。在框610处,可以接收指令,在此的指令可以包括内存拷贝指令210或者读写指令220。

通常而言,被读取的数据通常需要立刻被处理,因而读写指令220中的读指令对于延迟的敏感度较高。为了提高对于读指令的响应速度,提出了直接读写指令的概念。根据本申请的示例性实现方式,可以基于地址依赖关系,在读写指令220中检测直接读写指令。在此的直接读写指令与多个指令中的其他任一内存拷贝指令不存在地址依赖关系。换言之,由于直接读写指令访问的页面不同于其他任一内存拷贝指令所访问的页面,执行该直接读写指令并不会对于其他任一内存拷贝指令造成影响。因而可以优先地执行直接读写指令。利用本申请的示例性实现方式,可以优先地执行与其他指令不存在地址依赖关系的直接读写指令。以此方式,可以缓解现有技术方案中的读写指令被阻塞的情况,并且提高读写指令的响应速度。

将会理解,通常读写指令220中的写指令并不需要立刻被响应,而是待写入的数据可以被放置在中介存储空间中,可以在预定时间间隔或者根据其他触发条件而向内存142的相应地址处写入待写入的数据。尽管出于响应速度的要求而言并不需要立即执行写指令,然而,如果第二队列134中存在过多的指令将会导致第二队列134的溢出和/或其他的复杂状态。利用本申请的示例性实现方式,通过尽早执行没有地址依赖关系的直接读写指令,可以保持计算系统处于良好的状态。

根据本申请的示例性实现方式,不必将直接读写指令存储至第二队列134,而是可以立即执行直接读写指令。如框620处所示,如果接收到的指令是读写指令并且该读写指令与任一内存拷贝指令没有地址依赖关系,则方法600前进至框622处,以便直接执行该直接读写指令。具体地,当直接读写指令为读指令时,可以生成与读指令相对应的读命令,并且从内存142接收读取的数据。当直接读写指令为写指令时,可以生成与写指令相对应的写命令,并且向内存142写入数据并且从内存142接收针对写命令的响应。可以优先地执行与其他内存拷贝指令不具有地址依赖关系的直接读写指令。以此方式,可以缓解读写指令被阻塞的情况,并且可以降低读写指令的时间延迟。

根据本申请的示例性实现方式,可以按顺序地处理多个指令中的各个内存拷贝指令,以便将内存拷贝指令存储至第一队列132。在下文中,将仅以内存拷贝指令210为示例描述。如框630处所示,如果接收到的指令为内存拷贝指令210并且该内存拷贝指令210与任一读写指令没有地址依赖关系,则方法600前进至框632处以便将内存拷贝指令210存储至第一队列132。具体地,可以按照上文描述的方式确定内存拷贝指令210与多个指令中的读写指令是否存在地址依赖关系。如果确定内存拷贝指令210与多个指令中的任一读写指令无地址依赖关系,可以直接将内存拷贝指令210存储至第一队列132。在一个示例中,假设内存拷贝指令210的源地址420和目的地地址430涉及的页面均不同于任一读写指令的地址涉及的页面,则内存拷贝指令210与任一读写指令之间不存在地址依赖关系。此时,可以将内存拷贝指令210存储至第一队列132。

利用本申请的示例性实现方式,仅需通过简单的比较即可确定内存拷贝指令210与其他读写指令是否存在地址依赖关系。可以快速并且有效地将与不依赖于其他读写指令的内存拷贝指令210存储至第一队列132。当内存拷贝指令210被存储至第一队列132中之后,可以按顺序执行第一队列132中的各个内存拷贝指令。以此方式,内存拷贝指令210的执行将会独立于普通读写指令220的执行,因而避免普通读写指令220被阻塞的情况。

根据本申请的示例性实现方式,当内存拷贝指令210与读写指令存220在地址依赖关系时,还需要确定内存拷贝指令210与读写指令220被接收的时序关系。此时,预定规则包括地址依赖关系和时序关系。假设内存拷贝指令210的源地址420或目的地地址430与一个读写指令的地址涉及相同的页面,则内存拷贝指令210与该读写指令存在地址依赖关系。因而,需要进一步检测内存拷贝指令210和读写指令220的时序关系,以便确定如何将两个指令存储至相应的队列。时序关系指示内存拷贝指令210和读写指令220应当被执行的原始时间顺序。基于时序关系来将内存拷贝指令210和读写指令220存储至相应队列,可以确保基于两个队列并行地执行多个指令的结果与按照原始时间顺序串行执行多个指令时的结果相一致。

根据本申请的示例性实现方式,如果读写指令220与内存拷贝指令210存在地址依赖关系,则如框640处所示,可以确定读写指令220与内存拷贝指令210被接收的时序关系。将会理解,时序关系表示两个指令被接收的顺序,因而在将内存拷贝指令210和读写指令220存储至相应的队列时,应该使得并行执行两个队列中的指令的结果与按照时序关系来顺序执行两个指令的结果相一致。进一步,如框650所示,可以基于时序关系和地址依赖关系,分别将内存拷贝指令210和读写指令220存储至第一队列132和第二队列134。

将会理解,内存拷贝指令210可以在读写指令220之前被接收,内存拷贝指令210也可以在读写指令220之后被接收。进一步,内存拷贝指令210包括源地址420和目的地地址430。读写指令220包括读指令或者写指令,此时读写指令220的地址将涉及读指令的读地址和写指令的写地址。因而,应当分情况讨论内存拷贝指令210和读写指令220的地址依赖关系。

根据本申请的示例性实现方式,首先考虑内存拷贝指令210在读写指令220之前被接收的情况。假设时序关系表示内存拷贝指令210在读写指令220之前被接收、并且地址依赖关系表示内存拷贝指令210的目的地地址430与读写指令220的地址涉及相同页面。在此情况下,读写指令220需要访问已经被内存拷贝指令210修改后的目的地地址430处的数据,因而无论读写指令220是读指令还是写指令,都需要首先执行内存拷贝指令210,之后再执行读写指令220。否则,如果先执行读写指令220,则不能按照原有顺序访问数据,进而造成运行错误。此时,可以在已经执行内存拷贝指令210之后,将读写指令220存储至第二队列134。

在此情况下,可以立即执行内存拷贝指令210,并且在已经执行内存拷贝指令210之后,再将读写指令220存储至第二队列134。利用本申请的示例性实现方式,通过优先地执行内存拷贝指令210,可以消除内存拷贝指令210和读写指令220的地址依赖关系。以此方式,在内存拷贝指令210已经成功被执行之后,内存拷贝指令210和读写指令220的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

根据本申请的示例性实现方式,假设时序关系表示内存拷贝指令210在读写指令220之前被接收、并且地址依赖关系表示内存拷贝指令210的源地址420与读写指令220的地址涉及相同页面。此时需要区分读写指令220是读指令还是写指令。如果读写指令220为读指令,则内存拷贝指令210的源地址420和读指令涉及相同的页面。此时,两个读操作涉及相同的页面并不会导致数据冲突,因而可以分别将内存拷贝指令210和读写指令220存储至第一队列132和第二队列134。如果读写指令220为写指令,则内存拷贝指令210的源地址420和写指令涉及相同的页面。此时,一个读操作和一个写操作涉及相同的页面,并且将会导致数据冲突。因而,需要首先执行内存拷贝指令210(即,先从源地址420处读取待拷贝的数据并将读取的数据存储至目的地地址430处),在已经执行内存拷贝指令210之后,将写指令存储至第二队列134。

在此情况下,可以立即执行内存拷贝指令210,并且在已经执行内存拷贝指令210之后,再将写指令存储至第二队列134。利用本申请的示例性实现方式,通过优先地执行内存拷贝指令210,可以消除内存拷贝指令210和写指令的地址依赖关系。以此方式,在内存拷贝指令210已经成功被执行之后,内存拷贝指令210和写指令的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

上文已经描述了内存拷贝指令210在读写指令220之前被接收的情况,在下文中,将描述内存拷贝指令210在读写指令220之后被接收的情况。假设时序关系表示内存拷贝指令210在读写指令220之后被接收、并且地址依赖关系表示内存拷贝指令210的目的地地址430与读写指令220的地址涉及相同页面。如果读写指令220是读指令,此时内存拷贝指令210的目的地地址430与读指令的地址涉及相同页面,需要先执行读指令。否则,内存拷贝指令210将会覆盖目的地地址430处的数据,并导致读指令不能访问正确的数据。又例如,假设读写指令220是写指令,此时内存拷贝指令210的目的地地址430与写指令的地址涉及相同页面,同样需要先执行写指令。否则,内存拷贝指令210将会覆盖目的地地址430处的数据,并导致两个写操作不能获得正确的结果。可见,如果内存拷贝指令210在读写指令220之后被接收、并且地址依赖关系表示内存拷贝指令210的目的地地址430与读写指令220的地址涉及相同页面,此时无论读写指令220是读指令还是写指令,都需要先执行读写指令220,以便消除地址依赖关系。进一步,在已经执行读写指令220之后,将内存拷贝指令210存储至第一队列132。

在此情况下,可以立即执行读写指令220,并且在已经执行读写指令220之后,再将内存拷贝指令210存储至第一队列132。利用本申请的示例性实现方式,通过优先地执行读写指令220,可以消除内存拷贝指令210和读写指令220的地址依赖关系。以此方式,在读写指令220已经成功被执行之后,内存拷贝指令210和读写指令220的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

根据本申请的示例性实现方式,如果时序关系表示内存拷贝指令210在读写指令220之后被接收、并且地址依赖关系表示内存拷贝指令210的源地址420与读写指令220的地址涉及相同页面,此时需要区分读写指令220是读指令还是写指令。如果读写指令220是读指令,则内存拷贝指令210的源地址420与读指令的地址涉及相同页面。此时,两个读操作涉及相同的页面并不会导致数据冲突,因而可以分别将内存拷贝指令210和读指令存储至第一队列132和第二队列134。如果读写指令220为写指令,内存拷贝指令210的源地址420与写指令的地址涉及相同页面。此时,一个读操作和一个写操作访问相同的页面,并且将会导致数据冲突。因而,需要首先执行写指令(即,先向写指令的地址写入数据),在已经执行写指令之后,将内存拷贝指令210存储至第一队列132。

在此情况下,可以立即执行读写指令220,并且在已经执行写指令之后,再将内存拷贝指令210存储至第一队列132。利用本申请的示例性实现方式,通过优先地执行写指令,可以消除内存拷贝指令210和写指令的地址依赖关系。以此方式,在写指令已经成功被执行之后,内存拷贝指令210和写指令的地址依赖关系不再存在。因而可以确保并行地执行两个队列中的各个指令可以获得正确的结果。

上文已经参见图6描述了如何基于地址依赖关系以及时序关系来将内存拷贝指令210和读写指令220分别存储至第一队列132和第二队列134。将会理解,图6所示的方法600可以重复地执行,并且可以不断地处理来自处理单元的多个指令中的每个指令。

将会理解,如果内存拷贝指令210的拷贝长度过长,则内存拷贝指令210与读写指令220存在地址依赖关系的可能性将会升高。进一步,执行内存拷贝指令210的时间长度也会增加。具体地,如果在内存拷贝指令210和读写指令220之间检测到地址依赖关系,则需要按照上文描述的方法首先执行两个指令中的某个指令,并且在执行成功之后才能将两个指令中的另一指令存储至相应的队列。这将导致指令执行的并行度下降,进而降低计算系统的整体性能。为了降低内存拷贝指令210与读写指令220存在地址依赖关系的可能性,可以将涉及较大拷贝长度的内存拷贝指令210划分为多个子指令。

根据本申请的示例性实现方式,如果内存拷贝指令210的拷贝长度440超过预定阈值,可以将内存拷贝指令210划分为多个子指令。进一步,可以按照上文描述的方式,将多个子指令作为普通的内存拷贝指令进行处理,以便将多个子指令存储至第一队列132。可以根据计算设备的具体硬件配置和/或计算设备的软件环境来设置预定阈值的数值。例如,可以将预定数值设置为2MB(或者其他数值)。假设接收到的内存拷贝指令210的拷贝长度达到4MB,可以将该内存拷贝指令210划分为拷贝长度为2MB的两个子指令。继而,可以按顺序处理两个子指令中的每个子指令。具体地,可以分别确定每个子指令与多个指令中的读写指令220的地址依赖关系,并且将每个子指令存储至第一队列132。

利用本申请的示例性实现方式,通过将跨越加大拷贝长度的内存拷贝指令210划分为多个子指令,可以降低在内存拷贝指令210和读写指令220之间频繁地检测到地址依赖关系的可能性。以此方式,可以提高执行内存拷贝指令210和读写指令220的并行处理程度,进而提高计算系统的整体性能。

根据本申请的示例性实现方式,可以记录划分所得的子指令的数量。例如,可以设置计数器来表示已经被处理的子指令的数量。以此方式,可以确保每个子指令都能够被正确地执行。根据本申请的示例性实现方式,还可以使用其他的验证机制来确保每个子指令都被执行。例如,可以计算内存拷贝指令210的源地址420处的将要被拷贝的数据的签名,并且在已经执行完多个子指令之后,计算内存拷贝指令210的目的地地址430处的已经被拷贝的数据的签名。如果两个签名相一致,则可以验证原始的内存拷贝指令210被成功执行。

上文已经描述了如何将接收到的多个指令分别存储至第一队列132和第二队列134。在下文中,将返回图3描述如何并行地执行第一队列132和第二队列134中的指令。在图3的框330处,并行地执行第一队列132和第二队列134中存储的指令。将会理解,在此的并行执行是指两个队列可以相互独立,并且以并行方式执行。在分别执行每个队列中的指令时,应当按照指令被存储至队列的顺序来执行。

具体地,在第一队列132中,可以按照第一队列132中的至少一个内存拷贝指令的顺序,执行至少一个内存拷贝指令。假设第一队列132包括内存拷贝指令A和内存拷贝指令B,则应当首先执行内存拷贝指令A,并且在已经成功执行内存拷贝指令A之后,开始执行内存拷贝指令B。在第二队列134中,可以按照第二队列134中的至少一个读写指令的顺序,执行至少一个读写指令。假设第二队列134包括读写指令C和读写指令D,则应当首先执行读写指令C,并且在已经成功执行读写指令C之后,开始执行读写指令D。将会理解,由于第一队列132和第二队列134是相互独立的,两个队列中的指令可以并行地执行,并且没有时间依赖关系。只要确保在内存拷贝指令A之后执行内存拷贝指令B,并且在读写指令C之后执行读写指令D即可。

利用本申请的示例性实现方式,多个指令被存储至相应的队列,可以避免读写指令220被内存拷贝指令210阻塞的情况。进一步,由于第一队列132和第二队列134中的指令可以并行地执行,可以提高访问内存的指令的执行效率。以此方式,可以提高来自处理单元140的多个指令的并行处理程度,进而提高计算设备的整体性能。

在上文中,已经描述了由图1所示的数据处理装置110执行的方法300的各个步骤。在下文中,将参见图7进一步描述该数据处理装置110的更多备选实现方式。图7为本申请的示例性实现方式的数据处理装置的硬件结构的框图700。如图7所示,数据处理装置110可以包括多个硬件单元,以便实现上文描述的方法300。将会理解,在此可以使用多个硬件单元来代替数据处理装置110中的控制单元120,并且由多个硬件单元一起来执行方法300的各个步骤。

具体地,处理器接口单元710可以用于连接至处理单元140,并且被用于接收来自处理单元140的多个指令以及向处理单元140返回执行指令的结果。入队单元720可以用于将接收到的多个指令分别存储至相应的队列。入队单元720可以包括地址单元722和时序单元724,其中地址单元720可以用于确定接收到的多个指令之间的地址依赖关系,并且时序单元724可以用于确定接收到的多个指令之间的时序关系。缓存单元130可以利用第一队列132和第二队列134来存储接收到的多个指令,具体地,第一队列132可以用于存储内存拷贝指令210而第二队列134可以用于存储读写指令220。指令调度单元740可以用于并行地执行第一队列132和第二队列134中的指令。内存命令生成单元750可以用于将队列中的指令(包括内存拷贝指令和读写指令)转换至内存可以理解的内存命令。内存接口单元770用于连接至计算设备中的内存142。临时存储单元760可以用于临时存储来自内存142的执行结果。例如,对于内存拷贝指令而言,执行结果可以包括执行该指令的响应(例如,成功/失败);对于读指令,执行结果可以包括从内存读取到的数据;对于写指令,执行结果可以包括执行该指令的响应(例如,成功/失败)。

在下文中,将参见图7的硬件结构描述处理多个指令的过程。如箭头712所示,处理器接口单元710可以接收来自处理单元140的多个指令。继而,如箭头780所示,入队单元720可以接收多个指令,并且地址单元722可以确定多个指令之间的地址依赖关系。如果检测到多个指令中包括直接读写指令,则如箭头782所示,可以直接将该直接读写指令发送至指令调度单元740以便立即执行。时序单元724可以确定多个指令之间的时序关系。继而,如箭头784所示,可以根据确定的地址依赖关系和时序关系,按照多个指令的类型,分别将多个指令存储至第一队列132和第二队列134。如箭头786所示,指令调度单元740可以并行地调度第一队列132和第二队列134中的指令。

如箭头788所示,指令调度单元740可以将第一队列132和第二队列134中的指令发送至内存命令生成单元750,以便生成相应的内存命令。进一步,生成的内存命令可以经由箭头790被发送至内存接口单元770,以便进一步经由箭头792所示被提交至内存142。可以从内存142接收执行内存命令的结果。如箭头794所示,可以将结果保持至临时存储单元760中。如箭头796所示,指令调度单元740可以从临时存储单元760中取回结果,并且经由箭头798来发送至处理器接口单元710。最后,处理器接口单元710可以向处理单元140返回结果。

根据本申请的示例性实现方式,上述的各个单元可以以硬件电路的方式执行。以此方式,可以以更高的速度处理来自处理单元140的多个指令。根据本申请的示例性实现方式,上述各个单元可以以可编辑电路的方式执行。备选地和/或附加地,上述各个单元还可以以固件和/或硬件和指令相结合的方式执行。

在上文中,已经描述了用于执行根据本申请的示例性实现方式的方法和装置的具体实现方式。在下文中,将参见图8描述如何在计算设备中部署根据本申请的示例性实现方式的装置。图8为本申请的示例性实现方式的用于在计算设备中部署数据处理装置110的框图800。根据本申请的示例性实现方式,可以在计算设备中的内存侧部署数据处理装置110。在图8中,处理单元140被连接至内存管理器820。根据本申请的示例性实现方式,可以将根据本申请的示例性实现方式的数据处理装置110部署在内存管理器820中。数据处理装置110可以将来自处理单元140的多个指令分别存储至第一队列132和第二队列134,进而并行地执行两个队列中的指令。利用本申请的示例性实现方式,数据处理装置110更为靠近内存,因而有助于提高指令执行的速度。

根据本申请的示例性实现方式,可以在计算设备中的一个或多个内存管理器中部署数据处理装置。例如,可以在内存管理器820中部署数据处理装置110,内存管理器922可以保持原状并且不部署数据处理装置110。

根据本申请的示例性实现方式,可以在计算设备中的处理单元侧部署数据处理装置110。如图8所示,处理单元140可以包括内存控制器810,该内存控制器810用于控制内存管理器820的操作。可以在内存控制器810中部署数据处理装置110,可以将如图8所示的内存管理器820中的数据处理装置110移动至内存控制器810中。利用本申请的示例性实现方式,数据处理装置110更为靠近处理单元140,因而有助于重用处理单元140中的各种资源。

该数据处理装置用于执行如图1至7中数据处理装置所实现的功能。应理解,处理单元140、内存管理器820和内存144之间通过总线(图中未示出)进行通信,也可以通过无线传输等其他手段实现通信。

仅出于示出目的,根据本申请的示例性实现方式列举如下。

根据本申请的示例性实现方式,提供了一种数据处理装置,包括:控制单元和耦合至控制单元的缓存单元;缓存单元,用于利用第一队列和第二队列存储由控制单元接收的多个指令,多个指令包括内存拷贝指令和读写指令,第一队列用于存储内存拷贝指令,以及第二队列用于存储读写指令;控制单元,用于:接收多个指令;根据预定规则和多个指令的类型,将多个指令分别存储至第一队列和第二队列;以及并行地执行第一队列和第二队列中存储的指令。

根据本申请的示例性实现方式,预定规则包括多个指令之间的地址依赖关系,地址依赖关系是根据多个指令中携带的地址所确定的。

根据本申请的示例性实现方式,地址依赖关系是根据以下情况中的至少任一项所确定的:判断多个指令中的内存拷贝指令和读写指令是否访问相同页面,如果内存拷贝指令和读写指令访问相同页面,确定内存拷贝指令和读写指令存在地址依赖关系;以及如果内存拷贝指令和读写指令没有访问相同页面,确定内存拷贝指令和读写指令不存在地址依赖关系。

根据本申请的示例性实现方式,内存拷贝指令包括:源地址、目的地地址以及拷贝长度,内存拷贝指令表示基于内存拷贝长度将源地址处的数据拷贝至目的地地址。

根据本申请的示例性实现方式,控制单元还用于:基于地址依赖关系,在多个指令中的读写指令中检测直接读写指令,直接读写指令与多个指令中的其他任一内存拷贝指令不存在地址依赖关系;以及执行直接读写指令。

根据本申请的示例性实现方式,将多个指令分别存储至第一队列和第二队列包括:针对多个指令中的内存拷贝指令,确定内存拷贝指令与多个指令中的读写指令是否存在地址依赖关系;以及如果确定内存拷贝指令与多个指令中的任一读写指令不存在地址依赖关系,将内存拷贝指令存储至第一队列。

根据本申请的示例性实现方式,将多个指令分别存储至第一队列和第二队列包括:如果确定内存拷贝指令与读写指令存在地址依赖关系,确定内存拷贝指令与读写指令被接收的时序关系;以及基于时序关系和地址依赖关系,分别将内存拷贝指令和读写指令存储至第一队列和第二队列。

根据本申请的示例性实现方式,控制单元还用于:如果确定内存拷贝指令的拷贝长度超过预定阈值,将内存拷贝指令划分为多个子指令;以及将多个子指令存储至第一队列。

根据本申请的示例性实现方式,并行地执行第一队列和第二队列中存储的指令包括:按照第一队列中的至少一个内存拷贝指令的顺序,执行至少一个内存拷贝指令;以及与执行至少一个内存拷贝指令并行地,按照第二队列中的至少一个读写指令的顺序,执行至少一个读写指令。

根据本申请的示例性实现方式,提供了一种数据处理方法,包括:接收多个指令,多个指令包括内存拷贝指令和读写指令;根据预定规则和多个指令的类型,将多个指令分别存储至第一队列和第二队列,第一队列用于存储内存拷贝指令,以及第二队列用于存储读写指令;以及并行地执行第一队列和第二队列中存储的指令。

根据本申请的示例性实现方式,预定规则包括多个指令之间的地址依赖关系,地址依赖关系是根据多个指令中携带的地址所确定的。

根据本申请的示例性实现方式,地址依赖关系是根据以下中的至少任一项所确定的:判断多个指令中的内存拷贝指令和读写指令是否访问相同页面,如果内存拷贝指令和读写指令访问相同页面,确定内存拷贝指令和读写指令存在地址依赖关系;以及如果内存拷贝指令和读写指令没有访问相同页面,确定内存拷贝指令和读写指令不存在地址依赖关系。

根据本申请的示例性实现方式,内存拷贝指令包括:源地址、目的地地址以及拷贝长度,内存拷贝指令表示基于内存拷贝长度将源地址处的数据拷贝至目的地地址。

根据本申请的示例性实现方式,该方法还包括:基于地址依赖关系,在多个指令中的读写指令中检测直接读写指令,直接读写指令与多个指令中的其他任一内存拷贝指令不存在地址依赖关系;以及执行直接读写指令。

根据本申请的示例性实现方式,将多个指令分别存储至第一队列和第二队列包括:针对多个指令中的内存拷贝指令,确定内存拷贝指令与多个指令中的读写指令是否存在地址依赖关系;以及如果确定内存拷贝指令与多个指令中的任一读写指令不存在地址依赖关系,将内存拷贝指令存储至第一队列。

根据本申请的示例性实现方式,将多个指令分别存储至第一队列和第二队列包括:如果确定内存拷贝指令与读写指令存在地址依赖关系,确定内存拷贝指令与读写指令被接收的时序关系;以及基于时序关系和地址依赖关系,分别将内存拷贝指令和读写指令存储至第一队列和第二队列。

根据本申请的示例性实现方式,该方法还包括:如果确定内存拷贝指令的拷贝长度超过预定阈值,将内存拷贝指令划分为多个子指令;以及将多个子指令存储至第一队列。

根据本申请的示例性实现方式,并行地执行第一队列和第二队列中存储的指令包括:按照第一队列中的至少一个内存拷贝指令的顺序,执行至少一个内存拷贝指令;以及与执行至少一个内存拷贝指令并行地,按照第二队列中的至少一个读写指令的顺序,执行至少一个读写指令。

根据本申请的示例性实现方式,该方法还包括:接收通过执行直接读写指令而获得的读写结果;以及返回读写结果。

根据本申请的示例性实现方式,确定内存拷贝指令和读写指令不存在地址依赖关系包括:如果确定内存拷贝指令的源地址和目的地地址均不同于读写指令的地址,确定内存拷贝指令与读写指令不存在地址依赖关系。

根据本申请的示例性实现方式,基于时序关系和地址依赖关系,分别将内存拷贝指令和读写指令存储至第一队列和第二队列包括:如果时序关系表示内存拷贝指令在读写指令之前被接收、并且地址依赖关系表示内存拷贝指令的目的地地址与读写指令的地址访问相同页面,在已经执行内存拷贝指令之后,将读写指令存储至第二队列。

根据本申请的示例性实现方式,读写指令包括写指令,并且其中基于时序关系和地址依赖关系,分别将内存拷贝指令和读写指令存储至第一队列和第二队列包括:如果时序关系表示内存拷贝指令在写指令之前被接收、并且地址依赖关系表示内存拷贝指令的源地址与写指令的地址访问相同页面,在已经执行内存拷贝指令之后,将写指令存储至第二队列。

根据本申请的示例性实现方式,基于时序关系和地址依赖关系,分别将内存拷贝指令和读写指令存储至第一队列和第二队列包括:如果时序关系表示内存拷贝指令在读写指令之后被接收、并且地址依赖关系表示内存拷贝指令的目的地地址与读写指令的地址访问相同页面,在已经执行读写指令之后,将内存拷贝指令存储至第一队列。

根据本申请的示例性实现方式,读写指令包括写指令,并且其中基于时序关系和地址依赖关系,分别将内存拷贝指令和读写指令存储至第一队列和第二队列包括:如果时序关系表示内存拷贝指令在写指令之后被接收、并且地址依赖关系表示内存拷贝指令的源地址与写指令的地址访问相同页面,在已经执行写指令之后,将内存拷贝指令存储至第一队列。

根据本申请的示例性实现方式,确定内存拷贝指令和读写指令访问相同页面包括:针对内存中的页面,分别设置读计数器和写计数器;以及根据读计数器和写计数器,确定内存拷贝指令和读写指令访问相同页面。

根据本申请的示例性实现方式,设置读计数器包括:如果确定多个指令中的指令将要读取页面,增加读计数器的数值;以及如果确定多个指令中的指令已经读取页面,降低读计数器的数值。

根据本申请的示例性实现方式,设置写计数器包括:如果确定多个指令中的指令将要写入页面,增加写计数器的数值;以及如果确定多个指令中的指令已经写入页面,降低写计数器的数值。

根据本申请的示例性实现方式,根据读计数器和写计数器,确定内存拷贝指令和读写指令访问相同页面包括:根据确定写计数器的数值不同于写计数器的初始值,确定内存拷贝指令和读写指令访问相同页面。

根据本申请的示例性实现方式,内存拷贝指令还包括高速缓存标记,用于指示将数据加载至与内存相关联的高速缓存。

根据本申请的示例性实现方式,提供了一种数据处理装置,包括:处理器接口单元,用于接收来自多个指令,多个指令包括内存拷贝指令和读写指令;耦合至接口单元的入队单元,用于根据预定规则和多个指令的类型,将多个指令分别存储至缓存单元中的第一队列和第二队列,第一队列用于存储内存拷贝指令,以及第二队列用于存储读写指令;耦合至入队单元的缓存单元,用于利用第一队列和第二队列存储多个指令;以及耦合至缓存单元的指令调度单元,用于并行地执行第一队列和第二队列中存储的指令。

根据本申请的示例性实现方式,提供了一种计算设备,包括:处理单元;以及根据上文描述的数据处理装置,其中处理单元用于向数据处理装置发送多个指令。

根据本申请的示例性实现方式,提供了一种计算设备,包括:处理单元;以及内存管理器,内存管理器用于执行根据上文描述的方法,其中处理单元用于向内存管理器发送多个指令。

根据本申请的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本申请的方法。

根据本申请的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本申请方法。

上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。

以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:生产固态硬盘的方法及计算机可读取存储介质及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类