访存指令的调度方法、装置、电子设备和存储介质与流程

未命名 10-08 阅读:57 评论:0


1.本公开涉及计算机技术领域,尤其涉及一种访存指令的调度方法、访存指令的调度装置、电子设备和存储介质。


背景技术:

2.随着相关技术的发展,对于诸如gpu(graphics processing unit,图形处理器)、cpu(central processing unit,中央处理器)等的处理器而言,其运算速度往往高于内存的读写速度,因此,通常在这类处理器中设置一级或两级以上缓存,以解决处理器运算速度与内存读写速度不匹配的问题。具体而言,缓存可以用于存储处理器频繁使用的数据,从而减少访问这些数据的延时,以便提升处理效率。其中,支持访存指令乱序调度在实际应用中具有重要意义。


技术实现要素:

3.本公开提供了一种访存指令的调度技术方案。
4.根据本公开的一方面,提供了一种访存指令的调度方法,包括:
5.响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器;
6.响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器;其中,所述写指令缓冲器用于缓冲写指令;
7.基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令。
8.在一种可能的实现方式中,所述读指令缓冲器允许读指令乱序存储。
9.在一种可能的实现方式中,所述将所述读指令存入读指令缓冲器,包括:
10.响应于缓存中存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第一预设条件,其中,所述第一预设条件为预先设置的表示读指令能够被调度的条件;
11.或者,
12.响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第二预设条件,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
13.在一种可能的实现方式中,
14.所述指定标志位包括输出有效位和等待有效位;
15.所述将所述读指令对应的指定标志位的值设置为满足第一预设条件,包括:将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值;
16.所述将所述读指令对应的指定标志位的值设置为满足第二预设条件,包括:将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为
所述第一预设值。
17.在一种可能的实现方式中,所述基于所述读指令缓冲器调度读指令,包括:
18.对于所述读指令缓冲器中的任一读指令,响应于缓存中存在所述读指令请求的数据,向上游模块返回所述读指令对应的读完成信息;
19.其中,所述读完成信息用于向所述上游模块表示能够向所述上游模块反馈所述访存指令所请求的数据。
20.在一种可能的实现方式中,所述基于所述读指令缓冲器调度读指令,包括:
21.对于所述读指令缓冲器中的任一读指令,响应于所述缓存中存在所述访存指令请求的数据,且接收到来自于所述上游模块的调度指令,从所述指令缓冲器中调度出所述访存指令进行读操作。
22.在一种可能的实现方式中,所述方法还包括:
23.响应于接收到读指令,且缓存中不存在所述读指令请求的数据,请求从下游获取所述读指令对应的数据。
24.在一种可能的实现方式中,所述方法还包括:
25.响应于接收到下游返回的数据,将所述下游返回的数据对应的路组信息与所述读指令缓冲器中指定标志位的值满足第二预设条件的读指令对应的路组信息进行比对,并根据比对结果更新所述读指令缓冲器中的读指令对应的指定标志位,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
26.在一种可能的实现方式中,所述方法还包括:
27.响应于接收到下游返回的数据,将所述下游返回的数据写入待处理数据队列中,其中,所述待处理数据队列为先进先出队列。
28.在一种可能的实现方式中,
29.所述将所述读指令存入读指令缓冲器,包括:将所述读指令中的组信息和路信息存入读指令缓冲器;
30.所述方法还包括:将所述读指令的伴随信息存入所述读指令缓冲器对应的第一目标存储器。
31.在一种可能的实现方式中,所述方法还包括:
32.响应于从所述读指令缓冲器中调度出任一读指令,将所述第一目标存储器中所述读指令的伴随信息转移到第二目标存储器中存储。
33.在一种可能的实现方式中,所述方法还包括:
34.响应于接收到写指令,在写指令缓冲器中按顺序存储所述写指令。
35.在一种可能的实现方式中,在所述在写指令缓冲器中按顺序存储所述写指令之前,所述方法还包括:
36.对于待存入所述写指令缓冲器的任一写指令,响应于所述读指令缓冲器中存在所述写指令的冲突读指令,且在时间顺序上所述写指令与所述冲突读指令之间不存在与所述写指令对应于同一缓存行的其他写指令,向所述写指令分配新的缓存行,并将所述写指令对应的原缓存行设置为无效,其中,所述写指令的冲突读指令表示在所述写指令之前接收、与所述写指令对应于同一缓存行且未执行完毕的读指令。
37.根据本公开的一方面,提供了一种访存指令的调度装置,包括:
38.第一存储模块,用于响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器;响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器;其中,所述写指令缓冲器用于缓冲写指令;
39.调度模块,用于基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令。
40.在一种可能的实现方式中,所述读指令缓冲器允许读指令乱序存储。
41.在一种可能的实现方式中,所述第一存储模块用于:
42.响应于缓存中存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第一预设条件,其中,所述第一预设条件为预先设置的表示读指令能够被调度的条件;
43.或者,
44.响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第二预设条件,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
45.在一种可能的实现方式中,
46.所述指定标志位包括输出有效位和等待有效位;
47.所述第一存储模块用于:
48.响应于缓存中存在所述读指令请求的数据,将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值;
49.或者,
50.响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为所述第一预设值。
51.在一种可能的实现方式中,所述调度模块用于:
52.对于所述读指令缓冲器中的任一读指令,响应于缓存中存在所述读指令请求的数据,向上游模块返回所述读指令对应的读完成信息;
53.其中,所述读完成信息用于向所述上游模块表示能够向所述上游模块反馈所述访存指令所请求的数据。
54.在一种可能的实现方式中,所述调度模块用于:
55.对于所述读指令缓冲器中的任一读指令,响应于所述缓存中存在所述访存指令请求的数据,且接收到来自于所述上游模块的调度指令,从所述指令缓冲器中调度出所述访存指令进行读操作。
56.在一种可能的实现方式中,所述装置还包括:
57.数据请求模块,用于响应于接收到读指令,且缓存中不存在所述读指令请求的数据,请求从下游获取所述读指令对应的数据。
58.在一种可能的实现方式中,所述装置还包括:
59.更新模块,用于响应于接收到下游返回的数据,将所述下游返回的数据对应的路组信息与所述读指令缓冲器中指定标志位的值满足第二预设条件的读指令对应的路组信息进行比对,并根据比对结果更新所述读指令缓冲器中的读指令对应的指定标志位,其中,
所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
60.在一种可能的实现方式中,所述装置还包括:
61.写入模块,用于响应于接收到下游返回的数据,将所述下游返回的数据写入待处理数据队列中,其中,所述待处理数据队列为先进先出队列。
62.在一种可能的实现方式中,所述第一存储模块用于:
63.将所述读指令中的组信息和路信息存入读指令缓冲器;
64.将所述读指令的伴随信息存入所述读指令缓冲器对应的第一目标存储器。
65.在一种可能的实现方式中,所述装置还包括:
66.转移模块,用于响应于从所述读指令缓冲器中调度出任一读指令,将所述第一目标存储器中所述读指令的伴随信息转移到第二目标存储器中存储。
67.在一种可能的实现方式中,所述装置还包括:
68.第二存储模块,用于响应于接收到写指令,在写指令缓冲器中按顺序存储所述写指令。
69.在一种可能的实现方式中,所述装置还包括:
70.分配模块,用于对于待存入所述写指令缓冲器的任一写指令,响应于所述读指令缓冲器中存在所述写指令的冲突读指令,且在时间顺序上所述写指令与所述冲突读指令之间不存在与所述写指令对应于同一缓存行的其他写指令,向所述写指令分配新的缓存行,并将所述写指令对应的原缓存行设置为无效,其中,所述写指令的冲突读指令表示在所述写指令之前接收、与所述写指令对应于同一缓存行且未执行完毕的读指令。
71.根据本公开的一方面,提供了一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。
72.根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
73.根据本公开的一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
74.在本公开实施例中,通过响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器,响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器,其中,所述写指令缓冲器用于缓冲写指令,基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令,由此将读指令和写指令存储在不同的指令缓冲器中,写指令能够快速调度,从而能够提高内存的利用效率。
75.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
76.根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
77.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
78.图1示出相关技术中的电子设备100的示例框图。
79.图2示出本公开实施例提供的访存指令的调度方法的流程图。
80.图3示出本公开实施例提供的用于调度访存指令的硬件架构的示意图。
81.图4示出本公开实施例提供的访存指令的调度装置的框图。
82.图5示出本公开实施例提供的电子设备1900的框图。
具体实施方式
83.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
84.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
85.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
86.另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
87.图1示出相关技术中的电子设备100的示例框图。如图所示,电子设备100可以包括处理器110和内存120。可选地,处理器110可以为cpu、gpu等,其可以包括执行单元111和缓存单元112。示例性地,执行单元111可以发起对内存120中的某地址的访问请求,以获取该地址中存放的数据。此时,可以先在缓存单元112的缓存项中查找是否存在该地址的数据,若存在,则可视为该地址被命中,并直接从缓存单元112的缓存项中读取该地址的数据并返回至执行单元111;若不存在,则可视为该地址未被命中(缺失),并随后向内存120请求该地址的数据,内存120返回的数据可以经由缓存单元112反馈至执行单元111,并可以可选地通过替换缓存单元112中的某缓存项而被存储在缓存单元112中。
88.此外,可选地,处理器110还可以包括内存管理单元(memory management unit,mmu)113。内存管理单元113可以基于地址映射表实施虚拟地址与物理地址之间的映射,地址映射表例如可以采取页表的形式,其可以存放在例如内存管理单元113本地、内存120或者两者的组合中。示例性地,执行单元111所发出的访问请求中的地址可以为虚拟地址,该虚拟地址可以由内存管理单元113转换为物理地址,进而被提供给缓存单元112进行处理。示例性地,虚拟地址空间和物理地址空间均可以以页为单位进行划分,每页可以具有预设大小,例如4kb或其他预设大小,内存管理单元113所使用的地址映射表中的每个映射项可以对应于一个页的地址映射。
89.一般而言,缓存单元可以具有预先设计的缓存大小,即缓存总空间的大小。缓存可
以被划分为许多缓存行,每个缓存行的大小限定了一条缓存记录能够存储的数据量的大小。进而,缓存大小和缓存行大小可以决定缓存行的数目。为了实现内存空间与缓存空间之间的数据交换,通常会在缓存地址与内存地址之间建立预先设置的映射关系,例如直接映射、全相联映射、组相联映射等。具体而言,对于直接映射,内存中的各数据块只能映射至特定缓存行,即,映射至同一缓存行的数据块竞争使用该缓存行;对于全相联映射,内存中的各数据块可以映射至任一缓存行,即所有数据块竞争使用所有缓存行;对于组相联映射,内存中的各数据块可以被映射至一组缓存行中的任一缓存行,即,映射至同一组的数据块竞争使用该组内的若干缓存行。在上述映射机制下,当针对某个数据块的某个访问请求在缓存中未命中时,需要从内存获取该数据块,并在与该数据块存在映射关系的一个或多个缓存行中选择一个缓存行进行替换。一般而言,为了保证后续数据读写效率,可以选择最不可能被重复利用的缓存行进行替换。
90.缓存行可以理解为缓存的最小单元。每一个缓存行分别对应于数据(data)的存储和标签(tag)的存储。其中,数据存储在ram(random access memory,随机访问存储器)中。
91.由于访存指令的本质是完成读写,因此,在本公开实施例中,可以将访存指令简化为读指令和写指令。以组相联映射为例,在接收到访存指令后,可以根据访存指令的请求地址,判断访存指令请求的数据在缓存中的哪个组(set),然后将该组中的所有路(way)的标签分别与访存指令的请求地址中的标签进行比较,判断该组中的各个路的标签中,是否存在与访存指令的请求地址中的标签相同的标签,进而判定访存指令在缓存中命中(hit)或缺失(miss)。对于每个缓存行,还可以采用partial(局部)标志位标识该缓存行是否发生过写。对于任一缓存行,若发生针对该缓存行的写操作,则可以标记partial=1;若发生针对该缓存行的读操作,则可以标记partial=0。对于partial=1的缓存行,需要从下游获取数据。若命中则可以直接读取或者写入缓存行,若缺失则可以分配一个新的缓存行。若访存指令为读指令则可以从下游获取数据,若访存指令为写指令则可以直接更新缓存行。
92.在访存指令的调度中,支持访存指令乱序(out of order,ooo)调度(例如,更晚接收的读指令早于更早接收的读指令调度),在实际应用中具有重要意义。如何在支持乱序调度的前提下,使针对同一个缓存行的不同访存指令的访存操作逻辑正确,是亟待解决的技术问题。
93.在本公开实施例中,通过响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器,响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器,其中,所述写指令缓冲器用于缓冲写指令,基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令,由此将读指令和写指令存储在不同的指令缓冲器中,写指令能够快速调度,从而能够提高内存的利用效率。
94.下面结合附图对本公开实施例提供的访存指令的调度方法进行详细的说明。
95.图2示出本公开实施例提供的访存指令的调度方法的流程图。在一种可能的实现方式中,所述访存指令的调度方法的执行主体可以是访存指令的调度装置,例如,所述访存指令的调度方法可以由终端设备或服务器或其它电子设备执行。其中,终端设备可以是用户设备(user equipment,ue)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助
理(personal digital assistant,pda)、手持设备、计算设备、车载设备或者可穿戴设备等。在一些可能的实现方式中,所述访存指令的调度方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图2所示,所述访存指令的调度方法包括步骤s21至步骤s23。
96.在步骤s21中,响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器。
97.在步骤s22中,响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器;其中,所述写指令缓冲器用于缓冲写指令。
98.在步骤s23中,基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令。
99.在本公开实施例中,读指令缓冲器可以表示用于缓冲读指令的缓冲器,即,读指令缓冲器可以用于缓冲读指令。在一些应用场景中,读指令缓冲器还可以称为读指令缓冲区、读指令队列等等,在此不做限定。在一个例子中,读指令缓冲器可以记为loadreorderbuffer。
100.在本公开实施例中,对于一条新来的读指令,可以在读指令缓冲器中申请一个位置,以存储所述读指令。
101.在一种可能的实现方式中,所述读指令缓冲器允许读指令乱序存储。例如,读指令缓冲器的深度为9,且9个位置分别记为位置0至位置8。在读指令d到来之前,读指令a、读指令b和读指令c分别申请读指令缓冲器中的位置0、位置1和位置2,且申请位置0的读指令a已被调度出读指令缓冲器,那么,读指令d可以申请位置0、3-8中的任意一个位置。
102.在该实现方式中,通过设置允许读指令乱序存储的读指令缓冲器,由此能够提高内存的利用效率。
103.在另一种可能的实现方式中,所述读指令缓冲器为按顺序存储的缓冲器。
104.在本公开实施例中,在将读指令存入读指令缓冲器之前,检查写指令缓冲器中是否存在与所述读指令冲突的写指令,以使更晚接收的读指令在更早接收的写指令之后调度。其中,与所述读指令冲突的写指令,可以表示与所述读指令对应于同一缓存行的写指令。
105.在一种可能的实现方式中,所述将所述读指令存入读指令缓冲器,包括:将所述读指令中的组(set)信息和路(way)信息存入读指令缓冲器;所述方法还包括:将所述读指令的伴随信息存入所述读指令缓冲器对应的第一目标存储器。
106.在该实现方式中,第一目标存储器可以采用ram等存储器,在此不做限定。
107.在该实现方式中,读指令缓冲器对应的第一目标存储器的深度,可以与读指令缓冲器的深度一致。例如,读指令缓冲器和读指令缓冲器对应的第一目标存储器的深度可以均为9。当然,本领域技术人员可以根据实际应用场景需求灵活设置读指令缓冲器和读指令缓冲器对应的第一目标存储器的深度,在此不做限定。
108.在该实现方式中,读指令的伴随信息,可以表示读指令携带的信息中,在调度过程中用不到的信息。即,可以仅根据读指令缓冲器中存储的读指令的信息,完成读指令的调度。
109.在该实现方式中,通过将所述读指令中的组信息和路信息存入读指令缓冲器,并将所述读指令的伴随信息存入所述读指令缓冲器对应的第一目标存储器,由此通过读指令缓冲器缓冲读指令,并通过读指令缓冲器对应的第一目标存储器缓冲读指令的伴随信息,从而能够提高调度读指令的效率。
110.在另一种可能的实现方式中,可以将所述读指令中的所有信息均存储在所述读指令缓冲器中。
111.作为该实现方式的一个示例,所述方法还包括:响应于从所述读指令缓冲器中调度出任一读指令,将所述第一目标存储器中所述读指令的伴随信息转移到第二目标存储器中存储。
112.在该示例中,第二目标存储器可以采用ram等存储器,在此不做限定。
113.在该示例中,对于任一读指令,可以在从读指令缓冲器中调度出读指令时,从读指令缓冲器对应的第一目标存储器中读取所述读指令的伴随信息,并将所述读指令的伴随信息转移到第二目标存储器中存储,从而能够将第一目标存储器的存储空间空出来,以存储后续到来的其他读指令的伴随信息。
114.在本公开实施例中,写指令缓冲器可以表示用于缓冲写指令的缓冲器,即,写指令缓冲器可以用于缓冲写指令。在一些应用场景中,写指令缓冲器还可以称为写指令缓冲区、写指令队列等等,在此不做限定。在一个例子中,写指令缓冲器可以记为wr_buffer。
115.在一种可能的实现方式中,所述方法还包括:响应于接收到写指令,在写指令缓冲器中按顺序存储所述写指令。
116.在一个例子中,写指令缓冲器的深度为4,且4个位置分别记为位置0至位置3。在写指令c到来之前,写指令a和写指令b分别申请写指令缓冲器中的位置0和位置1,且申请位置0的写指令a已被调度出写指令缓冲器,那么,写指令c将申请位置2,而非申请位置0或位置3。
117.在该实现方式中,可以将写指令和写指令的伴随信息均存储在写指令缓冲器中。
118.在该实现方式中,通过响应于接收到写指令,在写指令缓冲器中按顺序存储所述写指令,由此能够实现不同写指令之间的保序。
119.作为该实现方式的一个示例,在所述在写指令缓冲器中按顺序存储所述写指令之前,所述方法还包括:对于待存入所述写指令缓冲器的任一写指令,响应于所述读指令缓冲器中存在所述写指令的冲突读指令,且在时间顺序上所述写指令与所述冲突读指令之间不存在与所述写指令对应于同一缓存行的其他写指令,向所述写指令分配新的缓存行,并将所述写指令对应的原缓存行设置为无效,其中,所述写指令的冲突读指令表示在所述写指令之前接收、与所述写指令对应于同一缓存行且未执行完毕的读指令。
120.在该实现方式中,在向写指令分配新的缓存行后,可以将所述写指令对应的原缓存行设置为无效且活跃(例如,valid=0,active=1),由此不影响尚未完成的读指令读取数据。
121.在该实现方式中,通过对于待存入所述写指令缓冲器的任一写指令,响应于所述读指令缓冲器中存在所述写指令的冲突读指令,且在时间顺序上所述写指令与所述冲突读指令之间不存在与所述写指令对应于同一缓存行的其他写指令,向所述写指令分配新的缓存行,并将所述写指令对应的原缓存行设置为无效,由此解除了针对同一缓存行的写指令
对读指令的依赖,使写指令无需等待对应于同一缓存行的读指令执行完后再执行,且能够使更晚接收的写指令与更早接收的读指令的访存操作的逻辑正确,从而能够在访存操作的逻辑正确的前提下,支持访存指令的乱序调度,提高访存的效率。
122.在一种可能的实现方式中,所述将所述读指令存入读指令缓冲器,包括:响应于缓存中存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第一预设条件,其中,所述第一预设条件为预先设置的表示读指令能够被调度的条件;或者,响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第二预设条件,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
123.在该实现方式中,可以针对读指令缓冲器中的每一个位置(即每一行)分别设置指定标志位。作为该实现方式的一个示例,读指令缓冲器中的任一位置对应的指定标志位,可以用于判断该位置是否被占用,以及在该位置被占用的情况下,判断存储在该位置的读指令是否能够被调度。作为该实现方式的另一个示例,读指令缓冲器中的任一位置对应的指定标志位,可以用于判断存储在该位置的读指令是否能够被调度。在该示例中,可以通过另一标志位判断该位置是否被占用。
124.在该实现方式中,通过响应于缓存中存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第一预设条件,其中,所述第一预设条件为预先设置的表示读指令能够被调度的条件,或者,响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第二预设条件,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件,由此能够基于指定标志位判断读指令缓冲器中的各读指令是否能被调度。
125.作为该实现方式的一个示例,所述指定标志位包括输出有效位和等待有效位;所述将所述读指令对应的指定标志位的值设置为满足第一预设条件,包括:将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值;所述将所述读指令对应的指定标志位的值设置为满足第二预设条件,包括:将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为所述第一预设值。
126.在该示例中,读指令缓冲器中的每一个位置(即每一行)分别对应于一个输出有效位和一个等待有效位,其中,输出有效位和等待有效位可以分别为1个比特。其中,输出有效位为第一预设值可以表示读指令能够被调度,等待有效位为第一预设值可以表示读指令在等待下游返回数据,输出有效位和等待有效位均为第二预设值可以表示读指令缓冲器中的该位置未被占用,即,该位置无读指令。
127.在该示例中,可以响应于接收到任一读指令,且缓存中存在所述读指令请求的数据,将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值;或者,响应于接收到任一读指令,且所述缓存中不存在所述读指令请求的数据,将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为所述第一预设值。
128.在一个例子中,第一预设值为1,第二预设值为0;可以响应于接收到任一读指令,且缓存中存在所述读指令请求的数据,将所述读指令对应的输出有效位置为1,并将所述读
指令对应的等待有效位置为0;或者,响应于接收到任一读指令,且所述缓存中不存在所述读指令请求的数据,将所述读指令对应的输出有效位置为0,并将所述读指令对应的等待有效位置为1。
129.在另一个例子中,第一预设值为0,第二预设值为1。
130.在一个例子中,输出有效位可以记为output_valid,等待有效位可以记为waiting_valid。
131.在该示例中,通过响应于接收到任一读指令,且缓存中存在所述读指令请求的数据,将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值,或者,响应于接收到任一读指令,且所述缓存中不存在所述读指令请求的数据,将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为所述第一预设值,由此能够基于输出有效位和等待有效位判断读指令是否能被调度。
132.作为该实现方式的另一个示例,所述指定标志位包括输出有效位和等待有效位;所述将所述读指令对应的指定标志位的值设置为满足第一预设条件,包括:将所述读指令对应的输出有效位置为第二预设值,并将所述读指令对应的等待有效位置为第一预设值;所述将所述读指令对应的指定标志位的值设置为满足第二预设条件,包括:将所述读指令对应的输出有效位置为所述第一预设值,并将所述读指令对应的等待有效位置为所述第二预设值。
133.作为该实现方式的另一个示例,读指令缓冲器中的任一位置可以对应于一个指定标志位,该指定标志位可以包括两个比特,00可以表示读指令缓冲器中的该位置无读指令(即读指令缓冲器中的该位置未被占用),01可以表示读指令缓冲器中的该位置的读指令能够被调度,10可以表示读指令缓冲器中的该位置的读指令在等待下游返回数据。
134.作为该实现方式的一个示例,所述方法还包括:对于任一缓存行,响应于缓存中存在所述缓存行的数据(即,已经从下游获取过所述缓存行的数据并且所述缓存行的数据存在于缓存中),将该缓存行对应的数据存在标志位标记为1;响应于缓存中不存在所述缓存行的数据,将该缓存行对应的数据存在标志位标记为0。
135.在该示例中,对于任一读指令,可以响应于所述读指令请求的缓存行对应的数据存在标志位标记为1,将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值;或者,对于任一读指令,可以响应于所述读指令请求的缓存行对应的数据存在标志位标记为0,将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为所述第一预设值。
136.其中,从下游获取缓存行的数据,将缓存行对应的数据存在标志位由0更新为1的过程,可以称为缓存行的激活。将读指令对应的输出有效位由0更新为1的过程,可以称为输出有效位的激活。
137.在一种可能的实现方式中,所述基于所述读指令缓冲器调度读指令,包括:对于所述读指令缓冲器中的任一读指令,响应于缓存中存在所述读指令请求的数据,向上游模块返回所述读指令对应的读完成信息;其中,所述读完成信息用于向所述上游模块表示能够向所述上游模块反馈所述访存指令所请求的数据。
138.作为该实现方式的一个示例,对于所述读指令缓冲器中的任一读指令,响应于缓
存中存在所述读指令请求的数据,向上游模块的返回路径(return path)返回所述读指令对应的读完成信息。
139.在该实现方式中,通过对于所述读指令缓冲器中的任一读指令,响应于缓存中存在所述读指令请求的数据,向上游模块返回所述读指令对应的读完成信息,其中,所述读完成信息用于向所述上游模块表示能够向所述上游模块反馈所述访存指令所请求的数据,由此能够支持读指令的乱序返回,从而上游模块能够在任意时刻控制任意数据返回。
140.作为该实现方式的一个示例,所述基于所述读指令缓冲器调度读指令,包括:对于所述读指令缓冲器中的任一读指令,响应于所述缓存中存在所述访存指令请求的数据,且接收到来自于所述上游模块的调度指令,从所述指令缓冲器中调度出所述访存指令进行读操作。
141.在该示例中,读指令可以在上游模块调度后才从指令缓冲器中调度出来,由此能够支持读指令的乱序返回,从而上游模块能够在任意时刻控制任意数据返回。
142.在一种可能的实现方式中,所述方法还包括:响应于接收到读指令,且缓存中不存在所述读指令请求的数据,请求从下游获取所述读指令对应的数据。
143.在该实现方式中,通过响应于接收到读指令,且缓存中不存在所述读指令请求的数据,请求从下游获取所述读指令对应的数据,由此在所述读指令从读指令缓冲器中调度出来之前请求从下游获取所述读指令对应的数据,从而有利于提高读指令的调度效率。
144.作为该实现方式的一个示例,所述方法还包括:响应于接收到下游返回的数据,将所述下游返回的数据对应的路组信息与所述读指令缓冲器中指定标志位的值满足第二预设条件的读指令对应的路组信息进行比对,并根据比对结果更新所述读指令缓冲器中的读指令对应的指定标志位,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
145.在一个例子中,所述指定标志位包括输出有效位和等待有效位;第二预设条件为:等待有效位为第一预设值。例如,第一预设值为1,第二预设值为0。在该示例中,可以响应于接收到下游返回的数据,将所述下游返回的数据对应的路组信息与所述读指令缓冲器中等待有效位为1的读指令对应的路组信息进行比对,并根据比对结果更新所述读指令缓冲器中的读指令对应的输出有效位和等待有效位。例如,若下游返回的数据对应的路组信息与所述读指令缓冲器中任一等待有效位为1的读指令对应的路组信息相同,则可以将该读指令对应的输出有效位更新为1,并将该读指令对应的等待有效位更新为0。
146.在该示例中,通过响应于接收到下游返回的数据,将所述下游返回的数据对应的路组信息与所述读指令缓冲器中指定标志位的值满足第二预设条件的读指令对应的路组信息进行比对,并根据比对结果更新所述读指令缓冲器中的读指令对应的指定标志位,由此能够实现指定标志位的激活,即,能够使指定标志位的值满足第一预设条件,从而使读指令能够被调度。
147.在一个示例中,所述方法还包括:响应于接收到下游返回的数据,将所述下游返回的数据写入待处理数据队列中,其中,所述待处理数据队列为先进先出队列。
148.在一个例子中,待处理数据队列可以记为miss_pending_fifo。
149.在该示例中,缓存的操作源头可以包括待处理数据队列中的数据和写指令缓冲器中的写指令。其中,待处理数据队列中的数据的优先级,可以高于写指令缓冲器中的写指令
的优先级。即,在待处理数据队列为空的情况下,才调度写指令缓冲器中的写指令,从而能够实现不同写指令之间的保序。由于下游不会一直返回数据,因此写指令缓冲器的执行效率较高。
150.在该示例中,通过响应于接收到下游返回的数据,将所述下游返回的数据写入待处理数据队列中,其中,所述待处理数据队列为先进先出队列,由此能够实现下游返回的数据对应的访存操作的保序。
151.在一种可能的实现方式中,所述方法还包括:响应于接收到写指令,将所述写指令对应的指定标志位设置为满足第一预设条件,其中,所述第一预设条件为预先设置的表示访存指令能够被调度的条件。
152.在该实现方式中,可以针对写指令缓冲器中的每一个位置(即每一行)分别设置指定标志位。作为该实现方式的一个示例,写指令缓冲器中的任一位置对应的指定标志位,可以用于判断该位置是否被占用,以及在该位置被占用的情况下,判断存储在该位置的写指令是否能够被调度。作为该实现方式的另一个示例,写指令缓冲器中的任一位置对应的指定标志位,可以用于判断存储在该位置的写指令是否能够被调度。在该示例中,可以通过另一标志位判断该位置是否被占用。
153.作为该实现方式的一个示例,所述指定标志位包括输出有效位和等待有效位;所述将所述写指令对应的指定标志位设置为满足第一预设条件,包括:将所述写指令对应的输出有效位置为第一预设值,并将所述写指令对应的等待有效位置为第二预设值。
154.在另一种可能的实现方式中,可以不针对写指令设置指定标志位,即,可以不在写指令缓冲器中针对每行设置指定标志位。
155.下面通过一个具体的应用场景说明本公开实施例提供的访存指令的调度方法。图3示出本公开实施例提供的用于调度访存指令的硬件架构的示意图。
156.在图3中,对于一条新来的访存指令,若所述访存指令为写指令,则可以将所述写指令写入写指令缓冲器中,其中,写指令缓冲器按顺序存储写指令。其中,对于待存入写指令缓冲器的任一写指令,响应于读指令缓冲器中存在所述写指令的冲突读指令,且在时间顺序上所述写指令与所述冲突读指令之间不存在与所述写指令对应于同一缓存行的其他写指令,向所述写指令分配新的缓存行,并将所述写指令对应的原缓存行设置为无效,其中,所述写指令的冲突读指令表示在所述写指令之前接收、与所述写指令对应于同一缓存行且未执行完毕的读指令。若所述访存指令为读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,则可以等待与所述读指令冲突的写指令处理完成后,将所述读指令的组信息和路信息写入读指令缓冲器,并将所述读指令的伴随信息写入第一ram。若所述访存指令为读指令,且写指令缓冲器中不存在与所述读指令冲突的写指令,则可以将所述读指令的组信息和路信息写入读指令缓冲器,并将所述读指令的伴随信息写入第一ram。其中,读指令缓冲器允许乱序存储。
157.在该应用场景中,对于任一缓存行,可以响应于缓存中存在所述缓存行的数据(即,已经从下游获取过所述缓存行的数据并且所述缓存行的数据存在于缓存中),将该缓存行对应的数据存在标志位标记为1;可以响应于缓存中不存在所述缓存行的数据,将该缓存行对应的数据存在标志位标记为0。
158.对于接收到的任一写指令,可以将所述写指令对应的输出有效位置为1,并将所述
写指令对应的等待有效位置为0。对于接收到的任一读指令,可以响应于缓存中存在所述读指令请求的数据,将所述读指令对应的输出有效位置为1,将所述读指令对应的等待有效位置为0;所述缓存中不存在所述读指令请求的数据,将所述读指令对应的输出有效位置为0,将所述读指令对应的等待有效位置为1。
159.对于等待有效位为1的读指令,需要激活所述读指令对应的缓存行。即,需要从下游获取所述读指令对应的缓存行的数据。其中,下游返回的数据可以写入待处理数据队列中,其中,所述待处理数据队列为先进先出队列。可以响应于从下游获取任一缓存行的数据,将所述缓存行对应的数据存在标志位更新为1。可以响应于所述缓存行对应的数据存在标志位更新为1,将读指令缓冲器中所述缓存行对应的读指令对应的输出有效位更新为1,等待有效位更新为0。
160.对于输出有效位为1的读指令,可以从读指令缓冲器中调度出来。并可以响应于从读指令缓冲器中调度出任一读指令,将所述读指令的伴随信息从第一ram转移至第二ram。还可以响应于从读指令缓冲器中调度出所述读指令,并向上游模块的返回路径返回所述读指令对应的读完成信息,以便所述上游模块基于所述读完成信息获取所述读指令所请求的数据。
161.在待处理数据队列为空的情况下,可以从写指令缓冲器中调度出写指令对缓存进行写操作。
162.可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
163.此外,本公开还提供了访存指令的调度装置、电子设备、计算机可读存储介质、计算机程序产品,上述均可用来实现本公开提供的任一种访存指令的调度方法,相应技术方案和技术效果可参见方法部分的相应记载,不再赘述。
164.图4示出本公开实施例提供的访存指令的调度装置的框图。如图4所示,所述访存指令的调度装置包括:
165.第一存储模块41,用于响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器;响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器;其中,所述写指令缓冲器用于缓冲写指令;
166.调度模块42,用于基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令。
167.在一种可能的实现方式中,所述读指令缓冲器允许读指令乱序存储。
168.在一种可能的实现方式中,所述第一存储模块41用于:
169.响应于缓存中存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第一预设条件,其中,所述第一预设条件为预先设置的表示读指令能够被调度的条件;
170.或者,
171.响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的指定标志
位的值设置为满足第二预设条件,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
172.在一种可能的实现方式中,
173.所述指定标志位包括输出有效位和等待有效位;
174.所述第一存储模块41用于:
175.响应于缓存中存在所述读指令请求的数据,将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值;
176.或者,
177.响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为所述第一预设值。
178.在一种可能的实现方式中,所述调度模块42用于:
179.对于所述读指令缓冲器中的任一读指令,响应于缓存中存在所述读指令请求的数据,向上游模块返回所述读指令对应的读完成信息;
180.其中,所述读完成信息用于向所述上游模块表示能够向所述上游模块反馈所述访存指令所请求的数据。
181.在一种可能的实现方式中,所述调度模块42用于:
182.对于所述读指令缓冲器中的任一读指令,响应于所述缓存中存在所述访存指令请求的数据,且接收到来自于所述上游模块的调度指令,从所述指令缓冲器中调度出所述访存指令进行读操作。
183.在一种可能的实现方式中,所述装置还包括:
184.数据请求模块,用于响应于接收到读指令,且缓存中不存在所述读指令请求的数据,请求从下游获取所述读指令对应的数据。
185.在一种可能的实现方式中,所述装置还包括:
186.更新模块,用于响应于接收到下游返回的数据,将所述下游返回的数据对应的路组信息与所述读指令缓冲器中指定标志位的值满足第二预设条件的读指令对应的路组信息进行比对,并根据比对结果更新所述读指令缓冲器中的读指令对应的指定标志位,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。
187.在一种可能的实现方式中,所述装置还包括:
188.写入模块,用于响应于接收到下游返回的数据,将所述下游返回的数据写入待处理数据队列中,其中,所述待处理数据队列为先进先出队列。
189.在一种可能的实现方式中,所述第一存储模块41用于:
190.将所述读指令中的组信息和路信息存入读指令缓冲器;
191.将所述读指令的伴随信息存入所述读指令缓冲器对应的第一目标存储器。
192.在一种可能的实现方式中,所述装置还包括:
193.转移模块,用于响应于从所述读指令缓冲器中调度出任一读指令,将所述第一目标存储器中所述读指令的伴随信息转移到第二目标存储器中存储。
194.在一种可能的实现方式中,所述装置还包括:
195.第二存储模块,用于响应于接收到写指令,在写指令缓冲器中按顺序存储所述写指令。
196.在一种可能的实现方式中,所述装置还包括:
197.分配模块,用于对于待存入所述写指令缓冲器的任一写指令,响应于所述读指令缓冲器中存在所述写指令的冲突读指令,且在时间顺序上所述写指令与所述冲突读指令之间不存在与所述写指令对应于同一缓存行的其他写指令,向所述写指令分配新的缓存行,并将所述写指令对应的原缓存行设置为无效,其中,所述写指令的冲突读指令表示在所述写指令之前接收、与所述写指令对应于同一缓存行且未执行完毕的读指令。
198.在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现和技术效果可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
199.本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。其中,所述计算机可读存储介质可以是非易失性计算机可读存储介质,或者可以是易失性计算机可读存储介质。
200.本公开实施例还提出一种计算机程序,包括计算机可读代码,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
201.本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
202.本公开实施例还提供一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。
203.电子设备可以被提供为终端、服务器或其它形态的设备。
204.图5示出本公开实施例提供的电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
205.电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入/输出接口1958(i/o接口)。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(windows server
tm
),苹果公司推出的基于图形用户界面操作系统(mac os x
tm
),多用户多进程的计算机操作系统(unix
tm
),自由和开放原代码的类unix操作系统(linux
tm
),开放原代码的类unix操作系统(freebsd
tm
)或类似。
206.在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
207.本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
208.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储
设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
209.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
210.用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
211.这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
212.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
213.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的
指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
214.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
215.该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
216.上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
217.若本公开实施例的技术方案涉及个人信息,应用本公开实施例的技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本公开实施例的技术方案涉及敏感个人信息,应用本公开实施例的技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
218.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

技术特征:
1.一种访存指令的调度方法,其特征在于,包括:响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器;响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器;其中,所述写指令缓冲器用于缓冲写指令;基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令。2.根据权利要求1所述的方法,其特征在于,所述读指令缓冲器允许读指令乱序存储。3.根据权利要求1所述的方法,其特征在于,所述将所述读指令存入读指令缓冲器,包括:响应于缓存中存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第一预设条件,其中,所述第一预设条件为预先设置的表示读指令能够被调度的条件;或者,响应于所述缓存中不存在所述读指令请求的数据,将所述读指令对应的指定标志位的值设置为满足第二预设条件,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。4.根据权利要求3所述的方法,其特征在于,所述指定标志位包括输出有效位和等待有效位;所述将所述读指令对应的指定标志位的值设置为满足第一预设条件,包括:将所述读指令对应的输出有效位置为第一预设值,并将所述读指令对应的等待有效位置为第二预设值;所述将所述读指令对应的指定标志位的值设置为满足第二预设条件,包括:将所述读指令对应的输出有效位置为所述第二预设值,并将所述读指令对应的等待有效位置为所述第一预设值。5.根据权利要求1至4中任意一项所述的方法,其特征在于,所述基于所述读指令缓冲器调度读指令,包括:对于所述读指令缓冲器中的任一读指令,响应于缓存中存在所述读指令请求的数据,向上游模块返回所述读指令对应的读完成信息;其中,所述读完成信息用于向所述上游模块表示能够向所述上游模块反馈所述访存指令所请求的数据。6.根据权利要求5所述的方法,其特征在于,所述基于所述读指令缓冲器调度读指令,包括:对于所述读指令缓冲器中的任一读指令,响应于所述缓存中存在所述访存指令请求的数据,且接收到来自于所述上游模块的调度指令,从所述指令缓冲器中调度出所述访存指令进行读操作。7.根据权利要求1至4中任意一项所述的方法,其特征在于,所述方法还包括:响应于接收到读指令,且缓存中不存在所述读指令请求的数据,请求从下游获取所述读指令对应的数据。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
响应于接收到下游返回的数据,将所述下游返回的数据对应的路组信息与所述读指令缓冲器中指定标志位的值满足第二预设条件的读指令对应的路组信息进行比对,并根据比对结果更新所述读指令缓冲器中的读指令对应的指定标志位,其中,所述第二预设条件为预先设置的表示读指令在等待下游返回数据的条件。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:响应于接收到下游返回的数据,将所述下游返回的数据写入待处理数据队列中,其中,所述待处理数据队列为先进先出队列。10.根据权利要求1至4中任意一项所述的方法,其特征在于,所述将所述读指令存入读指令缓冲器,包括:将所述读指令中的组信息和路信息存入读指令缓冲器;所述方法还包括:将所述读指令的伴随信息存入所述读指令缓冲器对应的第一目标存储器。11.根据权利要求10所述的方法,其特征在于,所述方法还包括:响应于从所述读指令缓冲器中调度出任一读指令,将所述第一目标存储器中所述读指令的伴随信息转移到第二目标存储器中存储。12.根据权利要求1至4中任意一项所述的方法,其特征在于,所述方法还包括:响应于接收到写指令,在写指令缓冲器中按顺序存储所述写指令。13.根据权利要求12所述的方法,其特征在于,在所述在写指令缓冲器中按顺序存储所述写指令之前,所述方法还包括:对于待存入所述写指令缓冲器的任一写指令,响应于所述读指令缓冲器中存在所述写指令的冲突读指令,且在时间顺序上所述写指令与所述冲突读指令之间不存在与所述写指令对应于同一缓存行的其他写指令,向所述写指令分配新的缓存行,并将所述写指令对应的原缓存行设置为无效,其中,所述写指令的冲突读指令表示在所述写指令之前接收、与所述写指令对应于同一缓存行且未执行完毕的读指令。14.一种访存指令的调度装置,其特征在于,包括:第一存储模块,用于响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器;第二存储模块,用于响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器;其中,所述写指令缓冲器用于缓冲写指令;调度模块,用于基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令。15.一种电子设备,其特征在于,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行权利要求1至13中任意一项所述的方法。16.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至13中任意一项所述的方法。

技术总结
本公开涉及一种访存指令的调度方法、装置、电子设备和存储介质。所述方法包括:响应于接收到读指令,且写指令缓冲器中存在与所述读指令冲突的写指令,等待与所述读指令冲突的写指令处理完成后,将所述读指令存入读指令缓冲器;响应于接收到所述读指令,且所述写指令缓冲器中不存在与所述读指令冲突的写指令,将所述读指令存入所述读指令缓冲器;其中,所述写指令缓冲器用于缓冲写指令;基于所述读指令缓冲器调度读指令,以及,基于所述写指令缓冲器调度写指令。调度写指令。调度写指令。


技术研发人员:请求不公布姓名
受保护的技术使用者:摩尔线程智能科技(北京)有限责任公司
技术研发日:2023.06.30
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐