CN117472804A - 访存失效队列处理方法、装置及电子设备 - Google Patents
访存失效队列处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN117472804A CN117472804A CN202311829734.6A CN202311829734A CN117472804A CN 117472804 A CN117472804 A CN 117472804A CN 202311829734 A CN202311829734 A CN 202311829734A CN 117472804 A CN117472804 A CN 117472804A
- Authority
- CN
- China
- Prior art keywords
- request
- access
- invalidation
- queue
- failure
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 228
- 238000000034 method Methods 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims abstract description 82
- 230000004044 response Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 239000012536 storage buffer Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000005059 dormancy Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000007958 sleep Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种访存失效队列处理方法、装置及电子设备,涉及计算机技术领域,方法包括:获取当前进入访存失效队列的第一访存失效请求;基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;基于所述目标处理方式,处理所述第一访存失效请求。本申请的方案能够提高访存失效队列的处理方式的灵活性和效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种访存失效队列处理方法、装置及电子设备。
背景技术
处理器中访问存储器的指令,例如取数指令和存数指令都会访问数据高速缓存,对于取数指令和存数指令来说,都有可能引起数据高速缓存访问失效,失效的指令会被缓存至访存失效队列中进行处理。
目前,访存失效队列中的指令的处理方式,通常是为多个指令分配各自的失效队列项,然后基于分配的失效队列项来访问下层存储系统,从下层存储系统中取出需要回填的数据,回填到数据高速缓存中,从而使得访存失效队列中的指令能够正常访问数据高速缓存中的相应数据。
然而,上述访存失效队列的处理方式不够灵活,使得处理器处理访存失效队列的效率较低。
发明内容
本申请提供一种访存失效队列处理方法、装置及电子设备,以提高访存失效队列的处理方式的灵活性,进而提高处理器处理访存失效队列的效率。
第一方面,本申请提供一种访存失效队列处理方法,包括:
获取当前进入访存失效队列的第一访存失效请求;
基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;
基于所述目标处理方式,处理所述第一访存失效请求。
在一种可能的实施方式中,所述基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,包括:
确定所述第一访存失效请求的块地址与所述已分配失效队列项中的第二访存失效请求的块地址是否相同;
基于所述第一访存失效请求的块地址与所述第二访存失效请求的块地址是否相同,确定所述目标处理方式。
在一种可能的实施方式中,所述基于所述第一访存失效请求的块地址与所述第二访存失效请求的块地址是否相同,确定所述目标处理方式,包括:
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址相同的情况下,基于所述第二访存失效请求对应的获取请求、所述第一访存失效请求的请求类型以及所述第二访存失效请求的请求类型,确定所述目标处理方式;
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址不相同的情况下,基于所述第一访存失效请求的块地址和所述第二访存失效请求的块地址,确定所述目标处理方式。
在一种可能的实施方式中,所述基于所述第二访存失效请求对应的获取请求、所述第一访存失效请求的请求类型以及所述第二访存失效请求的请求类型,确定所述目标处理方式,包括:
在满足第一预设条件或第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求;
在不满足所述第一预设条件和/或不满足所述第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
所述第一预设条件为:所述获取请求未被下层存储系统接收,所述第一访存失效请求的请求类型为取数请求或存数请求,且所述第二访存失效请求为取数请求或存数请求;
所述第二预设条件为:所述第一访存失效请求的请求类型为取数请求,所述第二访存失效请求的请求类型为取数请求或存数请求;且,所述获取请求已被所述下层存储系统接收,未收到所述下层存储系统的获取请求应答,或者,所述获取请求应答未被发送至取数队列。
在一种可能的实施方式中,在满足所述第一预设条件,且所述第一访存失效请求的请求类型为存数请求的情况下,所述方法还包括:
对所述第二访存失效请求对应的获取请求进行更新,得到更新后的获取请求,其中,所述更新后的获取请求用于请求所述第一访存失效请求对应的写权限。
在一种可能的实施方式中,所述基于所述第一访存失效请求的块地址和所述第二访存失效请求的块地址,确定所述目标处理方式,包括:
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址不属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求。
在一种可能的实施方式中,所述基于所述目标处理方式,处理所述第一访存失效请求,包括:
在所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求的情况下,基于所述已分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求的情况下,拒绝处理所述第一访存失效请求;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中存在未分配失效队列项的情况下,基于所述未分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中不存在未分配失效队列项的情况下,拒绝处理所述第一访存失效请求。
在一种可能的实施方式中,所述对所述第一访存失效请求进行数据回填,包括:
在数据高速缓存中确定第一访存失效请求对应的替换块;
读取所述替换块中的数据至写回队列中;
在获取到所述第一访存失效请求对应的回填数据后,将所述回填数据回填至所述替换块。
在一种可能的实施方式中,所述替换块中的数据在所述写回队列中处于休眠状态,所述将所述回填数据回填至所述替换块,包括:
更新所述替换块中的数据在所述写回队列中的状态为唤醒状态;
在所述替换块中的数据在所述写回队列中处于唤醒状态的情况下,将所述回填数据回填至所述替换块。
在一种可能的实施方式中,所述访存失效队列中的各类型的访问请求包括对应的队头,所述方法还包括:
针对各类型的访问请求,在访存失效队列包括的失效队列项中,确定所述类型的访问请求对应的队头当前指向的目标失效队列项;
从所述目标失效队列项开始,在所述访存失效队列包括的失效队列项中确定第一个满足预设条件的失效队列项,其中,所述预设条件为:失效队列项中的访问请求为所述类型的访问请求;
基于所述第一个满足预设条件的失效队列项,发出目标访问请求;
将所述类型的访问请求对应的队头当前指向的失效队列项由所述目标失效队列项更新为所述目标失效队列项的下一失效队列项。
第二方面,本申请提供一种访存失效队列处理装置,包括:
获取模块,用于获取当前进入访存失效队列的第一访存失效请求;
第一处理模块,用于基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;
第二处理模块,用于基于所述目标处理方式,处理所述第一访存失效请求。
在一种可能的实施方式中,所述第一处理模块具体用于:
确定所述第一访存失效请求的块地址与所述已分配失效队列项中的第二访存失效请求的块地址是否相同;
基于所述第一访存失效请求的块地址与所述第二访存失效请求的块地址是否相同,确定所述目标处理方式。
在一种可能的实施方式中,所述第一处理模块具体用于:
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址相同的情况下,基于所述第二访存失效请求对应的获取请求、所述第一访存失效请求的请求类型以及所述第二访存失效请求的请求类型,确定所述目标处理方式;
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址不相同的情况下,基于所述第一访存失效请求的块地址和所述第二访存失效请求的块地址,确定所述目标处理方式。
在一种可能的实施方式中,所述第一处理模块具体用于:
在满足第一预设条件或第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求;
在不满足所述第一预设条件和/或不满足所述第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
所述第一预设条件为:所述获取请求未被下层存储系统接收,所述第一访存失效请求的请求类型为取数请求或存数请求,且所述第二访存失效请求为取数请求或存数请求;
所述第二预设条件为:所述第一访存失效请求的请求类型为取数请求,所述第二访存失效请求的请求类型为取数请求或存数请求;且,所述获取请求已被所述下层存储系统接收,未收到所述下层存储系统的获取请求应答,或者,所述获取请求应答未被发送至取数队列。
在一种可能的实施方式中,在满足所述第一预设条件,且所述第一访存失效请求的请求类型为存数请求的情况下,所述第一处理模块还用于:
对所述第二访存失效请求对应的获取请求进行更新,得到更新后的获取请求,其中,所述更新后的获取请求用于请求所述第一访存失效请求对应的写权限。
在一种可能的实施方式中,所述第一处理模块具体用于:
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址不属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求。
在一种可能的实施方式中,所述第二处理模块具体用于:
在所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求的情况下,基于所述已分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求的情况下,拒绝处理所述第一访存失效请求;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中存在未分配失效队列项的情况下,基于所述未分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中不存在未分配失效队列项的情况下,拒绝处理所述第一访存失效请求。
在一种可能的实施方式中,所述第二处理模块具体用于:
在数据高速缓存中确定第一访存失效请求对应的替换块;
读取所述替换块中的数据至写回队列中;
在获取到所述第一访存失效请求对应的回填数据后,将所述回填数据回填至所述替换块。
在一种可能的实施方式中,所述替换块中的数据在所述写回队列中处于休眠状态,所述第二处理模块具体用于:
更新所述替换块中的数据在所述写回队列中的状态为唤醒状态;
在所述替换块中的数据在所述写回队列中处于唤醒状态的情况下,将所述回填数据回填至所述替换块。
在一种可能的实施方式中,所述访存失效队列中的各类型的访问请求包括对应的队头,所述第二处理模块还用于:
针对各类型的访问请求,在访存失效队列包括的失效队列项中,确定所述类型的访问请求对应的队头当前指向的目标失效队列项;
从所述目标失效队列项开始,在所述访存失效队列包括的失效队列项中确定第一个满足预设条件的失效队列项,其中,所述预设条件为:失效队列项中的访问请求为所述类型的访问请求;
基于所述第一个满足预设条件的失效队列项,发出目标访问请求;
将所述类型的访问请求对应的队头当前指向的失效队列项由所述目标失效队列项更新为所述目标失效队列项的下一失效队列项。
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面任一项所述的访存失效队列处理方法。
第四方面,本申请提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的访存失效队列处理方法。
本申请提供的访存失效队列处理方法、装置及电子设备,首先获取当前进入访存失效队列的第一访存失效请求,并基于访存失效队列中已分配失效队列项对应的失效信息,确定第一访存失效请求的目标处理方式,目标处理方式为已分配失效队列项合并处理第一访存失效请求,已分配失效队列项拒绝处理第一访存失效请求,或者,已分配失效队列项不合并处理且不拒绝处理第一访存失效请求;在确定目标处理方式后,基于该目标处理方式来处理第一访存失效请求。本申请的方案,能够基于当前进入访存失效队列的第一访存失效请求,以及已分配失效队列对应的失效信息,灵活确定第一访存失效请求的目标处理方式,确定已分配失效队列项合并处理、拒绝处理还是不合并处理且不拒绝处理第一访存失效请求,提高了访存失效请求处理的灵活性,进而也提高了访存失效队列处理的效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的访存失效队列处理方法的流程图;
图2为本申请实施例提供的访存失效队列处理示意图;
图3为本申请实施例提供的状态寄存器控制示意图;
图4为本申请实施例提供的确定目标处理方式的流程图;
图5为本申请实施例提供的访存失效队列处理装置的结构示意图;
图6为本申请实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着计算机处理器技术的发展,尤其是高性能处理器发展到多核处理器,处理器存储系统的性能对处理器性能的影响越来越大。处理器中访问存储器的指令,例如取数指令和存数指令都会访问数据高速缓存,对于取数指令和存数指令来说,都有可能引起数据高速缓存访问失效。
一种处理数据高速缓存访问失效的方式,是在数据高速缓存失效没有被解决之前,只处理这个缺失的数据,处理器不再执行其他的取数指令和存数指令。由于产生数据高速缓存失效的取数指令或存数指令阻塞了后面的指令的执行,因此这种处理方式被称为阻塞高速缓存。
一般取数指令后面的指令都会用到该取数指令的数据,因此该取数指令越早被执行,对后续的指令的执行越有利。考虑到数据高速缓存缺失的处理时间相对是比较长的,如果这段时间阻塞了其他取数指令或存数指令的执行,会大大减少处理器程序执行的并行性,使处理器的性能无法提高。因此,阻塞高速缓存的处理方式存在极大的不足。
为了提高处理器程序执行的并行性,非阻塞高速缓存被提出。非阻塞高速缓允许处理器在发生数据高速缓存访问失效的时候,继续执行新的取数指令和存数指令,在一定程度上掩盖了数据高速缓存访问失效时所占用的时间,因此能有效提升处理器的性能。
为了支持非阻塞高速缓存的操作方式,处理器需要将已经产生高速缓存访问失效的取数指令或存数指令对下级存储系统的访问请求保存起来进行处理,这就需要用访存失效队列缓存未命中的访存请求,以保证后续高速缓存访问命令的接收,从而实现处理器能够同时处理多个访存请求。在多核处理器中,访存失效队列还负责处理来自其他处理器核的外部一致性请求,以维护多核处理器的高速缓存一致性。
目前,在访存失效队列中包括多项失效队列项,每项失效队列项负责接收一个访存失效请求,然后从下层存储系统取回需要回填的数据,回填到数据高速缓存中,实现访存失效请求的处理。然而,这种访存失效队列的处理方式的灵活性较差,处理效率较低。由于多条取数指令和多条存数指令对于高速缓存的访问地址,下层存储系统返回的数据对高速缓存的替换地址,以及多核处理器中其他处理器核的外部一致性请求的地址,都有可能存在相同的地址,访存失效队列对相同地址的判断和处理既可以合并,也可以分别处理,既可以串行,也可以并行。基于此,本申请实施例提供一种访存失效队列的处理方案,通过判断访存失效请求是否满足合并条件或拒绝条件,来使得满足合并条件的访存失效请求能够尽可能合并,以提高访存失效队列的处理效率,进而提高处理器的性能。
图1为本申请实施例提供的访存失效队列处理方法的流程图,如图1所示,该方法包括:
S11,获取当前进入访存失效队列的第一访存失效请求。
访存失效队列包括多项失效队列项,多项失效队列项可以包括已分配失效队列项,还可以包括未分配失效队列项。失效队列项负责接收访存失效请求,该访存失效请求可以是取数请求,也可以是存数请求。
当前进入访存失效队列的第一访存失效请求,指的是新的访存失效请求,当前尚未为第一访存失效请求分配失效队列项,即当前没有失效队列项接收第一访存失效请求。
S12,基于访存失效队列中已分配失效队列项对应的失效信息,确定第一访存失效请求的目标处理方式,目标处理方式为已分配失效队列项合并处理第一访存失效请求,已分配失效队列项拒绝处理第一访存失效请求,或者,已分配失效队列项不合并处理且不拒绝处理第一访存失效请求。
已分配失效队列项为访存失效队列中已接收访存失效请求的失效队列项,例如某个失效队列项已接收第二访存失效请求,则该失效队列项为已分配失效队列项。
已分配失效队列项会记录对应的相关失效信息,该失效信息例如可以包括如下信息:
状态信息:用于记录访存失效队列的状态;
操作码:用于标识是存数操作引起的失效、取数操作引起的失效还是外部一致性请求引起的失效;
物理地址:用于记录访问下层存储系统的物理地址,或者外部一致性请求的物理地址;
数据:用于记录下层存储系统返回的数据;
写满:失效的存数请求在存数缓存写满整个缓存行。
本申请实施例中未对失效信息包括的全部内容穷举,失效信息还可以包括其他访存失效队列的控制信息等等。
基于访存失效队列中已分配失效队列项对应的失效信息,可以确定第一访存失效请求的目标处理方式,其中,该目标处理方式包括三种。第一种是已分配失效队列项合并处理第一访存失效请求,由于已分配失效队列项已经接收其他访存失效请求,例如已接收第二访存失效请求,则合并处理的方式是该已分配失效队列项接收第一访存失效请求,将第一访存失效请求和第二访存失效请求合并为一个访存失效请求来处理。需要说明的是,访存失效请求合并的前提是两个访存失效请求满足合并条件。第二种是已分配失效队列项拒绝处理第一访存失效请求,由于已分配失效队列项已经接收其他访存失效请求,若已分配失效队列中接收的访存失效请求与第一访存失效请求存在冲突,则已分配失效队列项拒绝处理第一访存失效请求。第三种则是已分配失效队列项不合并处理且不拒绝处理第一访存失效请求,表明已分配失效队列项中接收的访存失效请求与第一访存失效请求不满足合并条件,但也不互相冲突。
S13,基于目标处理方式,处理第一访存失效请求。
在确定了第一访存失效请求的目标处理方式后,基于目标处理方式来处理第一访存失效请求。例如,在目标处理方式为已分配失效队列项合并处理第一访存失效请求的情况下,可以由已分配失效队列项接收第一访存失效请求,将第一访存失效请求和已分配失效队列项原本的访存失效请求合并,得到合并后的访存失效请求,并进行处理。例如,在目标处理方式为已分配失效队列项拒绝处理第一访存失效请求的情况下,先暂停处理第一访存失效请求。例如,在已分配失效队列项不合并处理且不拒绝处理第一访存失效请求的情况下,可以判断访存失效队列中是否存在未分配的失效队列项,若存在,则可以用于接收第一访存失效请求,并进行处理。
本申请实施例提供的访存失效队列处理方法,首先获取当前进入访存失效队列的第一访存失效请求,并基于访存失效队列中已分配失效队列项对应的失效信息,确定第一访存失效请求的目标处理方式,目标处理方式为已分配失效队列项合并处理第一访存失效请求,已分配失效队列项拒绝处理第一访存失效请求,或者,已分配失效队列项不合并处理且不拒绝处理第一访存失效请求;在确定目标处理方式后,基于该目标处理方式来处理第一访存失效请求。本申请实施例的方案,能够基于当前进入访存失效队列的第一访存失效请求,以及已分配失效队列对应的失效信息,灵活确定第一访存失效请求的目标处理方式,确定已分配失效队列项合并处理、拒绝处理还是不合并处理且不拒绝处理第一访存失效请求,提高了访存失效请求处理的灵活性,进而也提高了访存失效队列处理的效率。
在上述任一实施例的基础上,下面结合附图对本申请实施例的方案进行详细介绍。
图2为本申请实施例提供的访存失效队列处理示意图,如图2所示,处理器中访存失效队列包含N项失效队列项,N为正整数,例如为16。每一项失效队列项负责接收失效的取数请求或存数请求,并从下层存储系统(例如二级高速缓存)取回需要回填的数据,回填到数据高速缓存,并将缺失的取数数据返回给取数队列。访存失效队列还负责接收其他处理器核的外部一致性请求,访问数据高速缓存,并返回一致性应答给请求的处理器核。
取数指令或存数指令可以访问数据高速缓存,数据高速缓存包括标签,标签用于进行比较,判断取数指令或存数指令是否命中数据高速缓存。若命中,取数指令和存数指令则可以获取到数据高速缓存的数据。若未命中,则进入访存失效请求访问,通过访存失效队列访问下层存储系统。
以取数请求为例,失效的取数请求在访存失效队列中的处理流程如下:
(1)在访存失效队列中分配一项空的失效队列项,并在失效队列项中记录相关失效信息。
(2)根据缓存替换算法确定替换路,根据替换路所在的块是否有效,判断是否需要替换,如果要替换则向数据高速缓存发送替换请求。
(3)发送替换请求的同时向下层存储系统发送获取请求。
如果是取数请求,则发送替换请求的同时需要向下层存储系统发送获取请求;如果是存数请求,且是对整个缓存块的覆盖写,则需要发送获取权限请求,以请求写权限,这种情况下存数指令会写满整个缓存行,不需要读下层存储系统中原来的数据,下层存储系统将会省去一次静态随机存取存储器(Static Random-Access Memory,SRAM)的读操作,否则发送获取缓存块的请求。
(4)等待下层存储系统返回权限或者数据加权限。
权限就是获得写权限,不包括数据,数据加权限就是既包括写数据也包括写权限。
通过从下层存储系统返回权限或者数据加权限,是为了确认其他处理器核关于这个缓存行的备份都已经无效掉,这样才能执行写操作,否则其他处理器核会是旧的数据。
(5)如果是取数指令失效,在收到数据加权限的每一个数据返回后,要将返回的数据转发给访存失效队列,因为缓存行的宽度可能比数据返回总线的宽度宽,所以数据有可能分多次返回。
(6)在收到权限或数据加权限的第一个数据返回后,向下层存储系统返回权限响应。
(7)在收到权限或数据加权限最后一个数据返回,并且替换请求已经完成后,发送填充请求,并等待应答,完成数据回填。
(8)释放失效队列项。
存数请求和取数请求的处理流程基本一致,区别在于存数请求的处理流程中不需要把回填的数据转发给取数队列。此外,存数请求在最终完成回填后,要向存数缓冲区返回应答,表示存数的缓存块回填已完成,存数缓存可以进行写数据高速缓存操作。
访存失效队列对访存失效请求的处理状态由一系列状态寄存器控制。图3为本申请实施例提供的状态寄存器控制示意图,如图3所示,示例了访存失效队列对访存失效请求的处理状态涉及的状态寄存器,以及相应操作之间的执行顺序。
获取请求状态寄存器:用于记录向下层存储系统发送获取缓存块的请求,或者,向下层存储系统发送获取权限请求是否已发送,如果替换块要对整个缓存块进行写覆盖,就只需要获得写权限。若获取缓存块的请求或获取权限请求未发送,则该状态寄存器置为0;若获取缓存块的请求或获取权限请求已发送,则该状态寄存器置为1。
数据加权限的第一个数据返回应答状态寄存器:用于记录是否接收到数据加权限的第一个数据返回。若未接收到数据加权限的第一个数据返回,则该状态寄存器置为0;若接收到数据加权限的第一个数据返回,则该状态寄存器置为1。
数据加权限的最后一个数据返回应答状态寄存器:用于记录是否接收到数据加权限的最后一个数据返回。若未接收到数据加权限的最后一个数据返回,则该状态寄存器置为0;若接收到数据加权限的最后一个数据返回,则该状态寄存器置为1。
数据返回状态寄存器:用于记录在收到下层存储系统返回的数据后是否向下层存储系统返回数据响应。若是,则该状态寄存器置为1;若否,则该状态寄存器置为0。
替换请求状态寄存器:用于记录是否向数据高速缓存发送替换请求。访存失效请求在进入访存失效队列之前会根据缓存块替换算法选择好替换路,进入访存失效队列后向数据高速缓存发送替换请求。若未向数据高速缓存发送替换请求,则该状态寄存器置为0;若已向数据高速缓存发送替换请求,则该状态寄存器置为1。
替换完成状态寄存器:用于记录是否完成替换操作,若是,则该状态寄存器置为1,若否,则该状态寄存器置为0。
数据回填状态寄存器:用于记录访存失效请求是否向数据高速缓存发送数据进行回填,若是,则该状态寄存器置为1,若否,则该状态寄存器置为0。
数据回填完成状态寄存器:用于记录数据回填是否完成,若是,则该状态寄存器置为1,若否,则该状态寄存器置为0。
在图3中,示例了上述多个状态寄存器之间的关系,其中,不同的状态寄存器对应访存失效队列中的不同事件,而访存失效队列中的各个事件是依据一定的依赖关系先后执行的。如图3所示,示例了各状态寄存器之间的转换流程,箭头表示前面一个状态寄存器置为1后才可以执行下一个状态寄存器对应的事件。
在上述实施例中,介绍了目前访存失效队列中对于访存失效请求的处理过程,而在新的访存失效请求进入访存失效队列后,在一些情况下可以判断其是否能与已分配队列项中的访存失效请求进行合并,以提高处理器的处理效率。
针对当前进入访存失效队列的第一访存失效请求,以及已分配失效队列项中的第二访存失效请求,处理器首先确定第一访存失效请求的块地址与已分配失效队列项中的第二访存失效请求的块地址是否相同,第一访存失效请求的块地址即为第一访存失效请求在数据高速缓存中访问的缓存块的地址,第二访存失效请求的块地址即为第二访存失效请求在数据高速缓存中访问的缓存块的地址。基于第一访存失效请求的块地址与第二访存失效请求的块地址是否相同,即可确定目标处理方式。
图4为本申请实施例提供的确定目标处理方式的流程图,如图4所示,包括:
S41,在第一访存失效请求的块地址与第二访存失效请求的块地址相同的情况下,基于第二访存失效请求对应的获取请求、第一访存失效请求的请求类型以及第二访存失效请求的请求类型,确定目标处理方式。
当第一访存失效请求的块地址与第二访存失效请求的块地址相同时,在满足第一预设条件或第二预设条件的情况下,确定目标处理方式为已分配失效队列项合并处理第一访存失效请求,即第一访存失效请求和第二访存失效请求可以进行合并。
第一预设条件为:获取请求未被下层存储系统接收,第一访存失效请求的请求类型为取数请求或存数请求,且第二访存失效请求为取数请求或存数请求。
在满足第一预设条件的情况下,第一访存失效请求和第二访存失效请求可以进行合并的原因是,只要第二访存失效请求对应的获取请求未被下层存储系统接收,即获取请求还没有握手,就可以修改获取请求的各个参数。其中,可以修改的参数例如包括可以修改获取请求对应的是取数还是存数操作,可以用存数操作覆盖取数操作,取回有写权限的缓存块。
若第一访存失效请求为存数请求,第二访存失效请求为取数请求或存数请求,则在将第一访存失效请求和第二访存失效请求合并后,获取请求中将需要获取的权限置为存数需要的写权限。即,在满足第一预设条件,且第一访存失效请求的请求类型为存数请求的情况下,对第二访存失效请求对应的获取请求进行更新,得到更新后的获取请求,其中,更新后的获取请求用于请求第一访存失效请求对应的写权限,通过修改获取请求,能够请求写权限,从而基于获取的写权限进行存数操作。在从下层存储系统接收到回填数据后,还需要将回填数据发送给取数队列。
第二预设条件为:第一访存失效请求的请求类型为取数请求,第二访存失效请求的请求类型为取数请求或存数请求;且,获取请求已被下层存储系统接收,未收到下层存储系统的获取请求应答,或者,获取请求应答未被发送至取数队列。
获取请求应答指的是下层存储系统针对接收到的获取请求返回的应答。由于获取请求是用于请求写权限或者数据加权限,因此获取请求应答即为下层存储系统返回的写权限或者数据加权限。
在满足第二预设条件的情况下,第一访存失效请求和第二访存失效请求可以进行合并的原因是,已分配失效队列项还没有把数据发送给取数队列,就可以合并新的取数请求进来。在访存失效队列拿到回填数据后,会一次性唤醒所有取数队列中等待该数据的取数请求。
当第一访存失效请求的块地址与第二访存失效请求的块地址相同时,在不满足第一预设条件和/或不满足第二预设条件的情况下,确定目标处理方式为已分配失效队列项拒绝处理第一访存失效请求。
由于不满足第一预设条件和/或不满足第二预设条件,因此已分配失效队列项已经不能再合并相同块地址的第一访存失效请求了,但是取数流水线以及存数流水线不能因此访存失效队列而阻塞,所以已分配失效队列项需要拒绝处理第一访存失效请求,第一访存失效请求会等待一段时间后重发。
S42,在第一访存失效请求的块地址与第二访存失效请求的块地址不相同的情况下,基于第一访存失效请求的块地址和第二访存失效请求的块地址,确定目标处理方式。
当第一访存失效请求的块地址与第二访存失效请求的块地址不相同时,在第一访存失效请求的块地址和第二访存失效请求的块地址属于同一缓存行的情况下,确定目标处理方式为已分配失效队列项拒绝处理第一访存失效请求。
为了在从下层存储系统拿到回填的数据后,马上写入数据高速缓存,第二访存失效请求会在进入访存失效队列之前就决定好替换路,这样在拿到回填数据之后就不用再做一遍标签比较后再决定替换路。然而,若第一访存失效请求和第二访存失效请求的块地址位于同一个缓存行,但是属于不同标签的取数请求,先后在取数访问数据高速缓存时失效了,但是两个取数请求决定替换相同的路,并分别分配了一项失效队列项,最终会导致后回填的块把先回填的块覆盖掉。因此要设定在第一访存失效请求的块地址和第二访存失效请求的块地址属于同一缓存行的情况下,确定目标处理方式为已分配失效队列项拒绝处理第一访存失效请求,保证访存失效队列中没有两个相同缓存行的地址。
当第一访存失效请求的块地址与第二访存失效请求的块地址不相同时,在第一访存失效请求的块地址和第二访存失效请求的块地址不属于同一缓存行的情况下,确定目标处理方式为已分配失效队列项不合并处理且不拒绝处理第一访存失效请求。
在上述实施例中,介绍了如何确定第一访存失效请求的目标处理方式的实现过程。在确定目标处理方式后,不同的目标处理方式,处理第一访存失效请求的过程也不同,下面将进行介绍。
在目标处理方式为已分配失效队列项合并处理第一访存失效请求的情况下,基于已分配失效队列项,对第一访存失效请求进行数据回填。即,将第一访存失效请求和已分配失效队列项中的第二访存失效请求进行合并,合并成一个访存失效请求进行同步处理。合并后,对第一访存失效请求进行数据回填的过程,可以参见上述实施例中的访存失效请求的处理过程,此处不再赘述。
在目标处理方式为已分配失效队列项拒绝处理第一访存失效请求的情况下,拒绝处理第一访存失效请求。
在目标处理方式为已分配失效队列项拒绝处理第一访存失效请求的情况下,表明第一访存失效请求和已分配失效队列项中的第二访存失效请求存在冲突,因此访存失效队列也会拒绝处理第一访存失效请求,在一段时间内,重发第一访存失效请求进行处理。
在目标处理方式为已分配失效队列项不合并处理且不拒绝处理第一访存失效请求,且,访存失效队列中存在未分配失效队列项的情况下,基于未分配失效队列项,对第一访存失效请求进行数据回填。
在目标处理方式为已分配失效队列项不合并处理且不拒绝处理第一访存失效请求,且,访存失效队列中不存在未分配失效队列项的情况下,拒绝处理第一访存失效请求。
即,在第一访存失效请求与已分配失效队列项中的第二访存失效请求不满足合并的第一预设条件或第二预设条件,且第一访存失效请求与第二访存失效请求也不存在冲突时,可以根据访存失效队列中是否还存在未分配失效队列项,来确定是否处理第一访存失效请求。若访存失效队列中还存在未分配失效队列项,则可以由该未分配失效队列项接收第一访存失效请求,基于该未分配失效队列项,对第一访存失效请求进行数据回填。若未分配失效队列项有多个,也可以采用轮询的机制来为第一访存失效请求分配相应的未分配失效队列项。对第一访存失效请求进行数据回填的过程,可以参见上述实施例中的访存失效请求的处理过程,此处不再赘述。若访存失效队列中不存在未分配失效队列项,则访存失效队列会拒绝处理第一访存失效请求,在一段时间内,重发第一访存失效请求进行处理。
对于第一访存失效请求,访存失效队列分配好新的失效队列项时就会决定好要替换的路,以便在收到要回填的块后马上进行回填。为此,数据高速缓存需要提前进行替换,至少要在回填发生之前将替换块读出来。因此失效队列项分配好之后马上就可以进行替换,即发送替换请求。
为了性能考虑,不希望替换块被过早地无效掉,以免在向下访问下层存储系统乃至内存的时间里处理器核内又访问了替换块,导致乒乓效应,产生新的不必要的访存失效请求。
因此,本申请实施例在数据回填前,不把替换块无效掉,而是先把替换块的数据读出来,并暂时放在写回队列中休眠。具体的,处理器首先在数据高速缓存中确定第一访存失效请求对应的替换块,替换块中存储有相应的数据。然后处理器读取该替换块中的数据至写回队列中,进行休眠。在休眠期间,其他访存失效请求还是可以正常访问数据高速缓存中的替换块。如果有对替换块的写,需要同步一份到写回队列中。在从下层存储系统获取到第一访存失效请求对应的回填数据后,再唤醒写回队列里的休眠的替换块,更新替换块中的数据在写回队列中的状态为唤醒状态。在替换块中的数据在写回队列中处于唤醒状态的情况下,将回填数据回填至替换块。写回队列开始向下写回替换块,即,将回填数据回填至替换块,同时访存失效队列完成数据回填,回填的同时替换块就被覆盖掉了。
对于取数请求或存数请求,在进入访存失效队列之前会选择出替换路,在拿到下层存储系统返回的数据后就可以发送到回填块,因此只需要一拍即可将回填数据写入数据高速缓存,而无需再访问一遍数据高速缓存。
在一些实施例中,访存失效队列还可以接收外部一致性请求的调度访存失效队列接收到其他处理器核的外部一致性请求后的处理流程为:为外部一致性请求分配一项空的失效队列项;向数据高速缓存发送外部一致性请求;等待数据高速缓存返回外部一致性请求的应答;释放该失效队列项。
为避免外部一致性请求与处理器核内部的请求间发生死锁,访存失效队列中,外部一致性请求除与取数请求或存数请求失效共用的失效队列项外,在访存失效队列中还可以留有独占的失效队列项给外部一致性请求,数量可以根据需要设定,例如1项、2项等等。
因为外部一致性请求可能是由处理器核内部的请求引起的外部一致性的侦听请求,若访存失效队列没有空项(即未分配的失效队列项)分配给外部一致性请求,而访存失效队列中已经被取数请求或存数请求占用的失效队列项又需要等待响应才能退出,这些响应的发出又依赖于处理器核对外部一致性请求的响应,这样就造成了死锁。因此,通过留有独占的失效队列项给外部一致性请求,能够有效避免死锁。在一些实施例中,也可以设计独立于访存失效队列的一致性请求队列来处理外部一致性请求。
访存失效队列中有多个失效队列项都可以进行相同的操作,如访问下层存储系统,填充数据高速缓存或对数据高速缓存进行一致性请求时,可以为每个类型的访问请求设置一个队头,从每个请求的队头开始,在访存失效队列中选择一项发出对应的操作,然后队列头切换到下一项。
具体的,访存失效队列中的各类型的访问请求均包括对应的队头。其中,访问请求的类型包括访问下层存储系统的请求、填充数据高速缓存的请求、对数据高速缓存进行一致性请求等等,本申请实施例对此不作限定。
针对各类型的访问请求而言,首先在访存失效队列包括的失效队列项中,确定该类型的访问请求对应的队头当前指向的目标失效队列项。然后,在确定发出每一类型访问请求的失效队列项时,从该类型访问请求的目标失效队列项开始,在访存失效队列包括的失效队列项中确定第一个满足预设条件的失效队列项,其中,预设条件为:失效队列项中需要发出的访问请求为对应类型的访问请求。进而,基于第一个满足预设条件的失效队列项,发出对应类型的目标访问请求,并将该类型的访问请求对应的队头当前指向的失效队列项由目标失效队列项更新为目标失效队列项的下一失效队列项。
需要说明的是,针对任意类型的访问请求而言,该类型的访问请求对应的队头初始指向访存失效队列中的第一个失效队列项,因此初始化状态时目标失效队列项为访存失效队列中的第一个失效队列项。在基于第一个满足预设条件的失效队列项发出目标访问请求后,该类型的访问请求对应的队头会指向下一失效队列项。若该类型的访问请求对应的队头当前指向的目标失效队列项为访存失效队列中的最后一个失效队列项,则在基于第一个满足预设条件的失效队列项发出目标访问请求后,该类型的访问请求对应的队头会指向访存失效队列中的第一个失效队列项。
通过上述方式,能够给每一项失效队列项发出请求的机会,以给每一个失效队列项同等的请求机会,避免年龄老的请求长时间不能发出而一直占据处理器的资源。
综上,本申请实施例的方案,能够基于当前进入访存失效队列的第一访存失效请求,以及已分配失效队列对应的失效信息,灵活确定第一访存失效请求的目标处理方式,确定已分配失效队列项合并处理、拒绝处理还是不合并处理且不拒绝处理第一访存失效请求,将满足合并条件的访存失效请求进行合并,减少访存失效队列对下层存储系统的访问,提高访存失效队列的处理效率和灵活性。对于失效块回填所要替换的高速缓存替换块,提供了触发替换和写回队列休眠机制,既避免了替换块被过早地无效掉而产生不必要的失效请求,又减少了读替换块的开销和时间。
下面对本申请提供的访存失效队列处理装置进行描述,下文描述的访存失效队列处理装置与上文描述的访存失效队列处理方法可相互对应参照。
图5为本申请实施例提供的访存失效队列处理装置的结构示意图,如图5所示,该装置包括:
获取模块51,用于获取当前进入访存失效队列的第一访存失效请求;
第一处理模块52,用于基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;
第二处理模块53,用于基于所述目标处理方式,处理所述第一访存失效请求。
在一种可能的实施方式中,所述第一处理模块52具体用于:
确定所述第一访存失效请求的块地址与所述已分配失效队列项中的第二访存失效请求的块地址是否相同;
基于所述第一访存失效请求的块地址与所述第二访存失效请求的块地址是否相同,确定所述目标处理方式。
在一种可能的实施方式中,所述第一处理模块52具体用于:
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址相同的情况下,基于所述第二访存失效请求对应的获取请求、所述第一访存失效请求的请求类型以及所述第二访存失效请求的请求类型,确定所述目标处理方式;
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址不相同的情况下,基于所述第一访存失效请求的块地址和所述第二访存失效请求的块地址,确定所述目标处理方式。
在一种可能的实施方式中,所述第一处理模块52具体用于:
在满足第一预设条件或第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求;
在不满足所述第一预设条件和/或不满足所述第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
所述第一预设条件为:所述获取请求未被下层存储系统接收,所述第一访存失效请求的请求类型为取数请求或存数请求,且所述第二访存失效请求为取数请求或存数请求;
所述第二预设条件为:所述第一访存失效请求的请求类型为取数请求,所述第二访存失效请求的请求类型为取数请求或存数请求;且,所述获取请求已被所述下层存储系统接收,未收到所述下层存储系统的获取请求应答,或者,所述获取请求应答未被发送至取数队列。
在一种可能的实施方式中,在满足所述第一预设条件,且所述第一访存失效请求的请求类型为存数请求的情况下,所述第一处理模块52还用于:
对所述第二访存失效请求对应的获取请求进行更新,得到更新后的获取请求,其中,所述更新后的获取请求用于请求所述第一访存失效请求对应的写权限。
在一种可能的实施方式中,所述第一处理模块52具体用于:
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址不属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求。
在一种可能的实施方式中,所述第二处理模块53具体用于:
在所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求的情况下,基于所述已分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求的情况下,拒绝处理所述第一访存失效请求;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中存在未分配失效队列项的情况下,基于所述未分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中不存在未分配失效队列项的情况下,拒绝处理所述第一访存失效请求。
在一种可能的实施方式中,所述第二处理模块53具体用于:
在数据高速缓存中确定第一访存失效请求对应的替换块;
读取所述替换块中的数据至写回队列中;
在获取到所述第一访存失效请求对应的回填数据后,将所述回填数据回填至所述替换块。
在一种可能的实施方式中,所述替换块中的数据在所述写回队列中处于休眠状态,所述第二处理模块53具体用于:
更新所述替换块中的数据在所述写回队列中的状态为唤醒状态;
在所述替换块中的数据在所述写回队列中处于唤醒状态的情况下,将所述回填数据回填至所述替换块。
在一种可能的实施方式中,所述访存失效队列中的各类型的访问请求包括对应的队头,所述第二处理模块53还用于:
针对各类型的访问请求,在访存失效队列包括的失效队列项中,确定所述类型的访问请求对应的队头当前指向的目标失效队列项;
从所述目标失效队列项开始,在所述访存失效队列包括的失效队列项中确定第一个满足预设条件的失效队列项,其中,所述预设条件为:失效队列项中的访问请求为所述类型的访问请求;
基于所述第一个满足预设条件的失效队列项,发出目标访问请求;
将所述类型的访问请求对应的队头当前指向的失效队列项由所述目标失效队列项更新为所述目标失效队列项的下一失效队列项。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行访存失效队列处理方法,该方法包括:获取当前进入访存失效队列的第一访存失效请求;基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;基于所述目标处理方式,处理所述第一访存失效请求。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的访存失效队列处理方法,该方法包括:获取当前进入访存失效队列的第一访存失效请求;基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;基于所述目标处理方式,处理所述第一访存失效请求。
又一方面,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的访存失效队列处理方法,该方法包括:获取当前进入访存失效队列的第一访存失效请求;基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;基于所述目标处理方式,处理所述第一访存失效请求。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种访存失效队列处理方法,其特征在于,包括:
获取当前进入访存失效队列的第一访存失效请求;
基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;
基于所述目标处理方式,处理所述第一访存失效请求。
2.根据权利要求1所述的方法,其特征在于,所述基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,包括:
确定所述第一访存失效请求的块地址与所述已分配失效队列项中的第二访存失效请求的块地址是否相同;
基于所述第一访存失效请求的块地址与所述第二访存失效请求的块地址是否相同,确定所述目标处理方式。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一访存失效请求的块地址与所述第二访存失效请求的块地址是否相同,确定所述目标处理方式,包括:
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址相同的情况下,基于所述第二访存失效请求对应的获取请求、所述第一访存失效请求的请求类型以及所述第二访存失效请求的请求类型,确定所述目标处理方式;
在所述第一访存失效请求的块地址与所述第二访存失效请求的块地址不相同的情况下,基于所述第一访存失效请求的块地址和所述第二访存失效请求的块地址,确定所述目标处理方式。
4.根据权利要求3所述的方法,其特征在于,所述基于所述第二访存失效请求对应的获取请求、所述第一访存失效请求的请求类型以及所述第二访存失效请求的请求类型,确定所述目标处理方式,包括:
在满足第一预设条件或第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求;
在不满足所述第一预设条件和/或不满足所述第二预设条件的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
所述第一预设条件为:所述获取请求未被下层存储系统接收,所述第一访存失效请求的请求类型为取数请求或存数请求,且所述第二访存失效请求为取数请求或存数请求;
所述第二预设条件为:所述第一访存失效请求的请求类型为取数请求,所述第二访存失效请求的请求类型为取数请求或存数请求;且,所述获取请求已被所述下层存储系统接收,未收到所述下层存储系统的获取请求应答,或者,所述获取请求应答未被发送至取数队列。
5.根据权利要求4所述的方法,其特征在于,在满足所述第一预设条件,且所述第一访存失效请求的请求类型为存数请求的情况下,所述方法还包括:
对所述第二访存失效请求对应的获取请求进行更新,得到更新后的获取请求,其中,所述更新后的获取请求用于请求所述第一访存失效请求对应的写权限。
6.根据权利要求3所述的方法,其特征在于,所述基于所述第一访存失效请求的块地址和所述第二访存失效请求的块地址,确定所述目标处理方式,包括:
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求;
在所述第一访存失效请求的块地址和所述第二访存失效请求的块地址不属于同一缓存行的情况下,确定所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述基于所述目标处理方式,处理所述第一访存失效请求,包括:
在所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求的情况下,基于所述已分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项拒绝处理所述第一访存失效请求的情况下,拒绝处理所述第一访存失效请求;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中存在未分配失效队列项的情况下,基于所述未分配失效队列项,对所述第一访存失效请求进行数据回填;
在所述目标处理方式为所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求,且,所述访存失效队列中不存在未分配失效队列项的情况下,拒绝处理所述第一访存失效请求。
8.根据权利要求7所述的方法,其特征在于,所述对所述第一访存失效请求进行数据回填,包括:
在数据高速缓存中确定第一访存失效请求对应的替换块;
读取所述替换块中的数据至写回队列中;
在获取到所述第一访存失效请求对应的回填数据后,将所述回填数据回填至所述替换块。
9.根据权利要求8所述的方法,其特征在于,所述替换块中的数据在所述写回队列中处于休眠状态,所述将所述回填数据回填至所述替换块,包括:
更新所述替换块中的数据在所述写回队列中的状态为唤醒状态;
在所述替换块中的数据在所述写回队列中处于唤醒状态的情况下,将所述回填数据回填至所述替换块。
10.根据权利要求1-6任一项所述的方法,其特征在于,所述访存失效队列中的各类型的访问请求包括对应的队头,所述方法还包括:
针对各类型的访问请求,在访存失效队列包括的失效队列项中,确定所述类型的访问请求对应的队头当前指向的目标失效队列项;
从所述目标失效队列项开始,在所述访存失效队列包括的失效队列项中确定第一个满足预设条件的失效队列项,其中,所述预设条件为:失效队列项中的访问请求为所述类型的访问请求;
基于所述第一个满足预设条件的失效队列项,发出目标访问请求;
将所述类型的访问请求对应的队头当前指向的失效队列项由所述目标失效队列项更新为所述目标失效队列项的下一失效队列项。
11.一种访存失效队列处理装置,其特征在于,包括:
获取模块,用于获取当前进入访存失效队列的第一访存失效请求;
第一处理模块,用于基于所述访存失效队列中已分配失效队列项对应的失效信息,确定所述第一访存失效请求的目标处理方式,所述目标处理方式为所述已分配失效队列项合并处理所述第一访存失效请求,所述已分配失效队列项拒绝处理所述第一访存失效请求,或者,所述已分配失效队列项不合并处理且不拒绝处理所述第一访存失效请求;
第二处理模块,用于基于所述目标处理方式,处理所述第一访存失效请求。
12.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至10任一项所述的访存失效队列处理方法。
13.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述的访存失效队列处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311829734.6A CN117472804B (zh) | 2023-12-28 | 2023-12-28 | 访存失效队列处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311829734.6A CN117472804B (zh) | 2023-12-28 | 2023-12-28 | 访存失效队列处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117472804A true CN117472804A (zh) | 2024-01-30 |
CN117472804B CN117472804B (zh) | 2024-04-09 |
Family
ID=89640130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311829734.6A Active CN117472804B (zh) | 2023-12-28 | 2023-12-28 | 访存失效队列处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472804B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955947A (zh) * | 2005-10-28 | 2007-05-02 | 中国科学院计算技术研究所 | 一种高速缓存失效的处理器访存指令处理方法 |
CN101354682A (zh) * | 2008-09-12 | 2009-01-28 | 中国科学院计算技术研究所 | 一种用于解决多处理器访问目录冲突的装置和方法 |
CN106155922A (zh) * | 2015-04-07 | 2016-11-23 | 龙芯中科技术有限公司 | 失效处理方法、系统、sfb及访存失效装置 |
-
2023
- 2023-12-28 CN CN202311829734.6A patent/CN117472804B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955947A (zh) * | 2005-10-28 | 2007-05-02 | 中国科学院计算技术研究所 | 一种高速缓存失效的处理器访存指令处理方法 |
CN101354682A (zh) * | 2008-09-12 | 2009-01-28 | 中国科学院计算技术研究所 | 一种用于解决多处理器访问目录冲突的装置和方法 |
CN106155922A (zh) * | 2015-04-07 | 2016-11-23 | 龙芯中科技术有限公司 | 失效处理方法、系统、sfb及访存失效装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117472804B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
KR100567099B1 (ko) | L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치 | |
KR101038963B1 (ko) | 캐쉬 할당을 위한 장치, 시스템, 방법 및 기계 액세스가능 매체 | |
US7827354B2 (en) | Victim cache using direct intervention | |
KR100704089B1 (ko) | L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치 | |
US5237694A (en) | Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor | |
US11237966B2 (en) | System and method for event monitoring in cache coherence protocols without explicit invalidations | |
US9223717B2 (en) | Computer cache system providing multi-line invalidation messages | |
US20070136535A1 (en) | System and Method for Reducing Unnecessary Cache Operations | |
US7363435B1 (en) | System and method for coherence prediction | |
US20080195820A1 (en) | Prefetch miss indicator for cache coherence directory misses on external caches | |
US20060184743A1 (en) | Cache memory direct intervention | |
JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
US20020169935A1 (en) | System of and method for memory arbitration using multiple queues | |
US9569365B2 (en) | Store-exclusive instruction conflict resolution | |
JP2008503821A (ja) | 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム | |
US5426754A (en) | Cross-interrogate method and means for combined scaler and vector processing system | |
JP2007533014A (ja) | ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法 | |
JP3550092B2 (ja) | キャッシュ装置及び制御方法 | |
JPH0567976B2 (zh) | ||
EP1297429A1 (en) | Coherence-free cache | |
JP2020003959A (ja) | 情報処理装置、演算処理装置及び情報処理装置の制御方法 | |
CN117472804B (zh) | 访存失效队列处理方法、装置及电子设备 | |
US20050144397A1 (en) | Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |