CN113821324B - 处理器的高速缓存系统、方法、设备和计算机介质 - Google Patents
处理器的高速缓存系统、方法、设备和计算机介质 Download PDFInfo
- Publication number
- CN113821324B CN113821324B CN202111094888.6A CN202111094888A CN113821324B CN 113821324 B CN113821324 B CN 113821324B CN 202111094888 A CN202111094888 A CN 202111094888A CN 113821324 B CN113821324 B CN 113821324B
- Authority
- CN
- China
- Prior art keywords
- service
- class
- thread
- cache
- priority
- 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.)
- Active
Links
Images
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供处理器的高速缓存系统、其方法、设备和计算机可读介质,该系统包括:高速缓存器,被配置为用于多个硬件装置共享,其中,所述高速缓存器中的各个资源与各自的服务类别相关,其中属于第一服务类别的第一线程能使用与该第一服务类别相关的高速缓存资源,且属于第二服务类别的第二线程能使用与该第二服务类别相关的高速缓存资源;控制单元,被配置为响应于所述第一线程的请求命中与所述第二服务类别相关的高速缓存资源,基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
Description
技术领域
本申请涉及集成电路领域,且更具体地,涉及一种处理器的高速缓存系统、方法、设备和计算机介质。
背景技术
现代处理器中往往包含多级的高速缓存(Cache)系统,其访问和运行速度比内存快。例如,图1示出了一种经典的多核多线程系统,包含4个支持同时多线程(SMT)的处理器核,拥有私有的一级缓存(L1级缓存)和二级缓存(L2级缓存),和共享的三级缓存(L3级缓存)。L1级缓存一般分为L1D缓存和L1I缓存,用于分别存储数据和指令,通常为各个处理器核分别设置相应的L1级缓存,大小分别为16k~64k不等,L2级缓存常作为私有缓存,不区分指令和数据,通常为各个处理器核分别设置相应的L2级缓存,大小在256k~1M不等,L3级缓存作为共享缓存,被多个处理器核共享,通常也不区分指令和数据,一般大于4M。在多级高速缓存系统中,一般L1I缓存和L1D缓存需要快速的访问速度,所以容量比较小。而L2级缓存和L3级缓存往往容量较大,面积较大,通常占据了芯片上相当比例的面积和晶体管数目。
在多核多线程的处理器系统中,最后一级缓存(Last Level Cache,LLC)、例如L3级高速缓存通常用于多处理器核共享。L3级缓存可以通过片上网络与内存交换数据。
操作系统等软件系统经常会调度多个软件线程在不同的处理器核硬件上执行。为了提高对优先级较高的线程提供更好的服务,处理器会引入服务质量(Quality ofService,QoS)机制。服务质量QoS机制会根据软件定义的线程的优先级,通过对处理器中不同资源的分配,达到高优先级线程享有更好的执行性能的目的。在服务质量QoS机制中,一种常用的资源分配策略是针对最后一级缓存的容量分配。通过给高优先级线程更多的可用容量,来提高其执行速度。
需要优化针对最后一级缓存的容量分配机制。
发明内容
根据本申请的一个方面,提供一种处理器的高速缓存系统,包括:高速缓存器,被配置为用于多个硬件装置共享,其中,所述高速缓存器中的各个资源与各自的服务类别相关,其中属于第一服务类别的第一线程能使用与该第一服务类别相关的高速缓存资源,且属于第二服务类别的第二线程能使用与该第二服务类别相关的高速缓存资源;控制单元,被配置为响应于所述第一线程的请求命中与所述第二服务类别相关的高速缓存资源,基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
根据本申请的另一个方面,提供一种处理器的高速缓存系统的方法,其中,所述高速缓存系统包括:高速缓存器,被配置为用于多个硬件装置共享,其中,所述高速缓存器中的各个资源与各自的服务类别相关,其中属于第一服务类别的第一线程能使用与该第一服务类别相关的高速缓存资源,且属于第二服务类别的第二线程能使用与该第二服务类别相关的高速缓存资源;所述方法包括:判断所述第一线程的请求是否命中与所述第二服务类别相关的高速缓存资源;响应于所述第一线程的请求命中与所述第二服务类别相关的高速缓存资源,基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
根据本申请的另一个方面,提供一种处理器的高速缓存设备,包括:处理器;存储器,存储了计算器可执行指令,其被处理器运行时进行本公开的各个实施例的方法。
根据本申请的另一个方面,提供一种计算机可读介质,存储有计算机可读指令,其中当所述计算机可读指令由处理器运行时,进行本公开的各个实施例的方法。
如此,根据本公开的各个实施例,可以在发生线程切换而导致的资源容量分配调整时,根据占有优先级的判断,来将该线程命中的缓存行的数据、根据服务质量定义的当前属于该线程的服务类别的路掩码信息,迁移到该路掩码信息设定的位置,加速缓存容量的调整,从而让服务质量机制能够在线程切换的场合下也正常发挥作用。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种经典的多核多线程系统。
图2是对4种不同服务类别COS(COS0、COS1、COS2、COS3)设置对应的路掩码的示例。
图3示出了一个示例的基于服务类别COS的最后一级缓存LLC容量分配的示意图。
图4示出了发生线程迁移前后的最后一级缓存LLC容量分配的变化的示意图。
图5示出了根据本公开的实施例的处理器的高速缓存系统的方框图。
图6示出了将服务类别相关的高速缓存资源的数量划分为多个数量范围以及对应的占用优先级高低的示例示意图。
图7示出了最后一级缓存LLC(例如L3级缓存)处理L2级牺牲数据的硬件结构。
图8示出了根据本公开的实施例的处理器的高速缓存系统的方法的流程图。
图9示出了根据本公开的实施例的处理器的高速缓存系统的方法的数据迁移示意图。
图10示出了根据本公开的实施例的处理器的高速缓存系统的方法的流程图。
图11示出了适于用来实现本申请实施方式的示例性计算机系统的框图。
图12示出了根据本公开的实施例的非暂时性计算机可读存储介质的示意图。
具体实施方式
现在将详细参照本申请的具体实施例,在附图中例示了本申请的例子。尽管将结合具体实施例描述本申请,但将理解,不是想要将本申请限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本申请的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
最后一级缓存LLC通常采用多路(way)相连的结构。在QoS中,各种资源分配会按照不同优先级进行,优先级的编号称为COS ID(服务类别,Class of Service)。服务质量QoS对最后一级缓存LLC的容量管理通常按照路的粒度进行管理。计算机软件会预先对每种服务类别COS设置对应的路掩码(way mask)信息。
例如,图2是对4种不同服务类别COS(COS0、COS1、COS2、COS3)设置对应的路掩码的示例。设最后一级缓存LLC有16个路。当服务类别COS对应的路掩码设置某一路掩码为1时,表示该属于该服务类别COS的线程可以使用这个路进行存储。否则,当服务类别COS对应的路掩码设置某一路掩码为0时,表示不能使用这个路进行存储。即路掩码确定了哪些路归属该服务类别COS所有。例如,如图2所示,路0、1、2、3、8、9、10、11归属COS0服务类别,且属于COS0服务类别的线程可以使用路0、1、2、3、8、9、10、11。同理,路4、5、6、7归属COS1服务类别,且属于COS1服务类别的线程可以使用路4、5、6、7。路12、13归属COS2服务类别,且属于COS2服务类别的线程可以使用路12、13。路14、15归属COS3服务类别,且属于COS3服务类别的线程可以使用路14、15。
根据服务质量QoS设定的路掩码,最后一级缓存LLC的替换策略是:
(1)如果某个请求命中该最后一级缓存LLC的某个路,当该请求是读(fill req)请求时,则读出命中的路的数据;当该请求是写(victim req)请求,则更新最新数据到命中的路。
(2)如果请求缺失(miss),则在路掩码规定的范围内,根据替换策略,选择该线程所属的服务类别COS所能使用的一个路,进行替换。
目前在多核系统、或者云服务系统等场合中,软件线程在处理器核硬件上会发生迁移,即会从一个处理器核硬件线程装置迁移到另一个处理器核硬件线程装置上,例如从由处理器核1来执行软件线程更改为由处理器核2来执行该软件线程。对应的服务质量QoS机制对该处理器核硬件线程的资源分配也会随着软件线程的迁移而发生改变。即,新的处理器核根据迁移到该新的处理器核的软件线程的服务类别COS来使用与该软件线程的服务类别COS相对应的路资源。
图3示出了一个示例的基于服务类别COS的最后一级缓存LLC容量分配的示意图。例如,属于服务类别COS0的路为部分A的路(路0~1),属于服务类别COS1的路为部分B和部分C的路(路2~15),属于服务类别COS2的路为部分A和部分B的路(路0~11),属于服务类别COS3的路为部分C的路(路12~15)。
假设存在两个硬件线程装置、例如处理器核T0和处理器核T1,根据服务质量QoS的分配,此时运行在处理器核T0上的软件线程属于服务类别COS0,可以使用部分A的路(路0~1),处理器核T1上的软件线程属于COS1,占用部分B和部分C的路(2~15)。
图4示出了发生线程迁移前后的最后一级缓存LLC容量分配的变化的示意图。
当发生线程迁移时,假设重新迁移到处理器核T0上的软件线程此时属于COS2,占用部分A和部分B的路(0~11),即处理器核T0上的线程的服务类别从COS0变为COS2,而处理器核T1上的软件线程COS发生变化,变为COS3,占有部分C的路(12~15),即处理器核T1上的线程的服务类别从COS1变为COS3。这样,处理器核T0和处理器核T1在最后一级缓存LLC的容量分配都发生了变化。如图4所示,路的部分B(即路2~11)由原来归属处理器核T1变为归属处理器核T0。即,线程迁移之前,处理器核T0占据部分A的路,而线程迁移之后,处理器核T0占据部分A+部分B的路。线程迁移之前,处理器核T1占据部分B+部分C的路,而线程迁移之后,处理器核T1占据部分C的路。
这时候,因为部分B部分之前存储的是处理器核T1的数据,此时,处理器核T1发出访问请求时,有可能会继续命中处理器核T1先前占据的部分B的路,根据最后一级缓存LLC的替换算法,处理器核T1的数据会继续占用部分B。另一方面,此时,如果处理器核T0发出的请求缺失,会从现在归属处理器核T0的部分A+部分B部分选取一个路,进行替换。按照服务质量QoS策略,最优的方法是从部分B中选择一个路进行替换(因为当前部分B现在被分配给处理器核T0使用,因此最好将部分B中的先前由处理器核T1使用的数据逐渐替换为处理器核T0使用的数据),但是实际上是,因为没有该数据的归属信息(即请求缺失),所以有可能选择部分A中的路进行替换,特别是如果处理器核T1持续命中部分B,导致替换策略偏好保留部分B中的处理器核T1的数据,会使得部分A中的路被处理器核T0占据得越来越多,而部分A中的数据也由于空间满了更容易被替换,从而导致处理器核T0无法较快获得服务质量QoS分配的缓存容量,即相当于处理器核T0在大多数时间都仍然只能使用原来分配给它的部分A的容量。只有等待部分B的处理器核T1的数据被逐步替换出该部分B,处理器核T0才可以得到服务质量QoS分配的部分B的容量。这就削弱了服务质量QoS机制的作用。当不同服务类别COS的线程在多个处理器核之间切换频繁时,最后一级缓存LLC的容量无法随着服务类别COS的设定及时跟上,这种情况会更加严重,甚至使得无法正常执行预定的服务质量QoS。
一种解决方案是对每个缓存行进行标记服务类别标识符COS ID,这样可以针对性地替换掉服务于之前的COS ID的路。但是现代高性能处理器中,最后一级缓存LLC往往容量非常大,对每个缓存行都存储服务类别标识符COS ID,会导致面积开销增加许多。
多核多线程处理器系统中,服务质量QoS机制可以对不同优先级的线程提供对应的缓存容量保障服务。但是当发生线程切换时,已分配的缓存容量不能随之快速回收和再分配,导致服务质量QoS的机制不能快速发挥作用。当线程切换频繁时,这种情况更加严重。
针对这个问题,本公开提出了新的最后一级缓存LLC容量管理机制,在发生线程切换而导致的路容量分配调整时,根据服务类别COS的路掩码信息,迁移缓存行的数据到服务质量QoS设定的位置,加速缓存容量的调整,从而让服务质量QoS机制能够在线程切换的场合下也正常发挥作用。
图5示出了根据本公开的实施例的处理器的高速缓存系统的方框图。
图5所示的处理器的高速缓存系统500包括:高速缓存器501,被配置为用于多个硬件装置共享,其中,高速缓存器中的各个资源与各自的服务类别相关,其中属于第一服务类别的第一线程能使用与该第一服务类别相关的高速缓存资源,且属于第二服务类别的第二线程能使用与该第二服务类别相关的高速缓存资源;控制单元502,被配置为响应于第一线程的请求命中与第二服务类别相关的高速缓存资源,基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
一个服务类别COS的线程发出的请求命中的路(一种高速缓存资源)可能不属于该服务类别COS的路掩码定义,这是在线程在各个硬件装置之间切换的情况下可能会出现的情况。本公开可以对每个服务类别COS进行占有优先级定义。占有优先级表明当一个服务类别COS的线程发出的请求命中的路不属于该服务类别COS的路掩码定义的时候,能否进行用这个路进行存储。假设,当该路的占有优先级比较高的时候,可以继续使用这个路进行存储,否则需要数据迁出到属于该线程的该服务类别COS的路掩码定义的路。
如此,可以在发生线程切换而导致的资源容量分配调整时,根据占有优先级的判断,来将该线程命中的缓存行的数据、根据服务质量QoS定义的当前属于该线程的服务类别COS的路掩码信息,迁移到该路掩码信息设定的位置,加速缓存容量的调整,从而让服务质量QoS机制能够在线程切换的场合下也正常发挥作用。
在一个实施例中,占有优先级可以被设置为如下中的一种:
(a)服务类别的占有优先级的高低与服务类别相关的高速缓存资源的数量大小相关;
(b)将服务类别相关的高速缓存资源的数量划分为多个数量范围,服务类别的占有优先级的高低与数量范围相关;
(c)服务类别的占有优先级的高低与属于服务类别的线程的重要性相关;
(d)服务类别的占有优先级的高低与服务类别的重要性相关。
而控制单元502被配置为通过如下步骤来实现基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源:
基于第一服务类别的占有优先级高于第二服务类别的占有优先级,确定第一线程的请求的数据继续使用第二服务类别相关的高速缓存资源;
基于第一服务类别的占有优先级低于或等于第二服务类别的占有优先级,确定将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
也就是说,第一种占有优先级设置方式,(a)服务类别的占有优先级的高低与服务类别相关的高速缓存资源的数量大小相关。
例如,假设当前进行缓存查找并命中的是与服务类别COSA相关的线程,而根据路掩码,这个命中的路与服务类别COSB相关。假设占有优先级表示服务类别相关的高速缓存资源的数量大小。比较服务类别COSA和服务类别COSB的容量分配,哪个容量分配较大,哪个服务类别COS的占有优先级高。具体地,比较路掩码中哪个服务类别COS的“1”较多,即哪个服务类别COS占有的路较多,则哪个服务类别COS的占有优先级高。若线程的服务类别COSA的占有优先级较高,则与服务类别COSA相关的线程可以继续使用命中的与服务类别COSB相关的这个路,若线程的服务类别COSA的占有优先级小于命中的路的服务类别COSB的占有优先级,则需要将数据迁移到服务类别COSA相关的路,让出这个命中的路给与服务类别COSB的线程来使用。
也就是说,如果线程的服务类别COSA分配的路比服务类别COSB分配的路多,说明服务类别COSA比服务类别COSB更重要,需要比服务类别COSB需要的更多的资源,因此其占有优先级高,应优先满足服务类别COSA对资源的需求(即其理应占用更多的路,而不是迁移数据并让出路给服务类别COSB)。
结合图4,假如线程切换后,处理器核T0上当前运行的线程B所属的是服务类别COSB,其占据部分A+部分B,一共12个路。处理器核T1上当前运行的线程A所属的是服务类别COSA,其占据部分C,一共4个路。可见,服务类别COSB占用的高速缓存资源的数量多于服务类别COSA占用的高速缓存资源的数量。即服务类别COSB的占有优先级高于服务类别COSA的占用优先级,例如因为线程B可能更重要,需要更多的高速缓存资源量。
此时,假如处理器核T1上当前运行的线程A的请求命中部分B的路,即与服务类别COSB相关的高速缓存资源(因为原先运行在处理器核T1上的线程使用部分B的路),由于线程A的服务类别COSA的占有优先级小于命中的路相关的服务类别COSB,因此需要将线程A命中的部分B中的数据迁移到与服务类别COSA相关的高速缓存资源(即,现在的部分C的路),以让出部分B中的路给与服务类别COSB相关的线程B使用,因为线程B可能更重要,需要更多的高速缓存资源量。
反之,假如处理器核T0上当前运行的与服务类别COSB相关的线程B的请求命中部分C的路,即与服务类别COSA相关的高速缓存资源,由于线程B的服务类别COSB的占有优先级高于命中的路相关的服务类别COSA,因此该线程B继续使用命中的与服务类别COSA相关的部分C的路),因为线程B可能更重要,需要更多的高速缓存资源量。随后,线程B命中的与服务类别COSA相关的部分C的路的数据可以随着部分C的缓存资源满而逐渐替换到与线程B相关的服务类别COSB分配的路。
以上举例了占有优先级的一种设置方式。
第二种占有优先级设置方式,(b)将服务类别相关的高速缓存资源的数量划分为多个数量范围,服务类别的占有优先级的高低与数量范围相关。
图6示出了将服务类别相关的高速缓存资源的数量划分为多个数量范围以及对应的占用优先级高低的示例示意图。
例如,假设一个索引一共有16个路。如果服务类别相关的路的数量大于或等于8,则将该服务类别的占有优先级设置为高占用优先级,例如图3中的COS1和COS2为高占用优先级。如果服务类别相关的路的数量为3到7之间(包含本数),则将该服务类别的占有优先级设置为中占用优先级,例如图3中的COS3为中占用优先级。如果服务类别相关的路的数量为1到2之间(包含本数),则将该服务类别的占有优先级设置为低占用优先级,例如图3中的COS0为低占用优先级。
随后,控制单元502被配置为通过如下步骤来实现基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源:基于第一服务类别的占有优先级高于第二服务类别的占有优先级,确定第一线程的请求的数据继续使用第二服务类别相关的高速缓存资源;基于第一服务类别的占有优先级低于或等于第二服务类别的占有优先级,确定将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
第三种占有优先级设置方式,(c)服务类别的占有优先级的高低与属于服务类别的线程的重要性相关。
通常对于重要的线程,其所属的服务类别所分配的高速缓存资源也更多,利用高速缓存资源多少的方式也可以设置占有优先级。但是,也有一些重要的线程可能并未被分配较多的高速缓存资源,但是其又需要较多的高速缓存资源,则也可以通过属于服务类别的线程本身的重要性的高低来设置服务类别的占有优先级的高低。即,属于服务类别的线程本身的重要性高(很重要)、例如较为重要的软件的线程(例如与安全支付软件相关的线程)或者软件中的较为重要的线程(例如普通购物软件中与安全支付相关的线程),则设置服务类别的占有优先级低,属于服务类别的线程本身的重要性低(不重要),则设置服务类别的占有优先级低。
随后,控制单元502被配置为通过如下步骤来实现基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源:基于第一服务类别的占有优先级高于第二服务类别的占有优先级,确定第一线程的请求的数据继续使用第二服务类别相关的高速缓存资源;基于第一服务类别的占有优先级低于或等于第二服务类别的占有优先级,确定将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
第四种占有优先级设置方式,(c)服务类别的占有优先级的高低与服务类别的重要性相关。根据服务质量QoS的要求,可以得知服务类别的重要性,例如与传输实时视频相关的服务类别的重要性高,与传输数据相关服务类别的重要性低等等。
随后,控制单元502被配置为通过如下步骤来实现基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源:基于第一服务类别的占有优先级高于第二服务类别的占有优先级,确定第一线程的请求的数据继续使用第二服务类别相关的高速缓存资源;基于第一服务类别的占有优先级低于或等于第二服务类别的占有优先级,确定将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
也就是说,较高占有优先级的服务类别COS可以占据占有低优先级的服务类别COS相关的资源,以便为属于较高占有优先级COS的线程服务。在两者是相同优先级的服务类别COS的情况下,则可以配置为可以占据,也可以配置为不可以占据。
当然,每个服务类别COS的占有优先级还可以通过软件配置给每个服务类别COS。
如此,根据不同情况而设置的占有优先级,使得更需要占有高速缓存资源的线程继续占用即使并非自己所属的服务类别COS所对应的资源,而更不需要占用高速缓存资源的线程则不应该继续占有并非自己所属的服务类别COS所对应的资源,加速缓存容量的调整,从而让服务质量QoS机制能够在线程切换的场合下也正常发挥作用。
另外,也可以配置所有服务类别COS的优先级都相同。而是配置只要当线程占据了不属于自己服务类别COS的路时,就需要让出该路。
也就是说,在一个实施例中,所有的服务类别的占有优先级相同或第一服务类别和第二服务类别的占有优先级相同,其中控制单元502被配置为通过如下步骤来实现基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源:响应于第一线程的请求命中与第二服务类别相关的高速缓存资源,将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
如此,只要线程占用了并非自己所属的服务类别COS所对应的资源,则都需要将数据迁移到自己所属的服务类别COS所对应的资源,而不比较占用优先级。这样也减少了比较占有优先级和作出判断的步骤,加快了缓存容量的调整。或者在比较了占用优先级得到占用优先级相同的情况下,也可以将数据迁移到自己所属的服务类别COS所对应的资源,以便让属于服务类别COS的线程尽可能使用与该服务类别COS对应的资源。
当发生低占有优先级的服务类别COS对应的线程占有高占有优先级COS的路时,或者按照配置不能占有不归自己服务类别COS的路时,将该数据进行迁移。具体的执行方法可以包括如下方式。
在此,这里的命中可以分为读请求命中(fill hit)和写请求命中(victim hit)。在读请求命中的情况下,可以将用于多个硬件装置共享的高速缓存器(例如L3级缓存)中的命中的数据的副本无效掉,并将其读出到高一级缓存(例如L2级缓存)。即,在一个实施例中,控制单元被配置为通过如下步骤来将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源:将第一线程的请求的命中状态改为缺失状态,并将命中的资源的状态改为无效状态;在与第一服务类别相关的高速缓存资源中选择资源;将第一线程的请求的数据迁移到所选择的资源。这样,由于判断不能继续占有命中的路,那就相当于未命中来进行后续操作,而无需更改缓存系统的原本处理方式。
在写请求的情况下,根据路掩码,若这个命中的路是属于线程本服务类别COS的路,或者根据占有优先级判断,可以继续占有该路,则将L2级缓存的牺牲数据更新到L3级缓存中的命中的路。即,在一个实施例中,响应于第一线程的请求命中与第一服务类别相关的高速缓存资源,将命中的路的数据写入到命中的路。也就是说,如果第一线程的请求本来就命中属于自己服务类别的资源,则继续使用该资源来写入数据。
当然,线程的请求也可能不命中高速缓存器,在这种情况下,可以根据路掩码,在分配给本服务类别COS的多个路中,根据替换算法,找到一个路(下一牺牲路(NextVictimway,NV way)),来进行缓存替换操作。即,在一个实施例中,响应于第一线程的请求缺失,在与第一服务类别相关的高速缓存资源中选择资源,并将第一线程的请求的数据送入到所选择的资源。也就是说,如果第一线程的请求没有命中到资源,那还是继续选择符合自己服务类别的资源来写入数据。
图7示出了最后一级缓存LLC(例如L3级缓存)处理L2级牺牲数据的硬件结构。
首先,L2级缓存的写请求(牺牲请求,Vic req)会发送到L3级缓存的请求队列(request queue,RQ);然后L3级缓存的请求队列RQ会查找L3级缓存的数据存储器L3M,决定是否替换。如果需要替换,会将该请求移入牺牲队列(victim queue,VQ)。由牺牲队列VQ继续处理。L3M中还存储了目录(Shadow Tag Macro,影子标记宏)STM0、STM1、STM2、STM3,用来表示L2级缓存的数据也存在于L3级缓存中的目录信息。
另一方面,L2级缓存的牺牲数据会送入L2级的牺牲缓冲器L2VB(victim buffer)。牺牲队列(victim queue,VQ)随后将要替换的下一牺牲(next victim,NV)路的数据送入L3级缓存的牺牲写缓冲器(L3VWB(Victim Write Buffer)),进一步送入内存。最后L3VQ将L2牺牲数据(Vic data)从L2VB中写入L3M。
图8示出了根据本公开的实施例的处理器的高速缓存系统的方法的流程图。
在步骤801中,在线程执行过程中,L2级缓存的写请求(牺牲请求)进入L3级缓存的请求队列(L3RQ)。表示L2级缓存有要替换的牺牲数据,准备替换到L3级缓存(最后一级缓存LLC)。
在步骤802中,查找L3级缓存的标签/状态/最少使用信息(tag/state/Lru)以及该请求归属于的线程对应的服务类别COS的路掩码设置。
在步骤803中,判断是否在L3级缓存中发生命中。若在L3级缓存中发生命中(是),则在步骤804中,判断命中的路是否属于本服务类别COS的路。如果在L3级缓存中不发生命中(否),则进入步骤808。
如果命中的路属于本服务类别COS的路,则在步骤805中,用L2级缓存的牺牲数据来更新该命中的路。
如果命中的路不属于本服务类别COS的路,在步骤806中根据占有优先级来判断该线程是否能继续占有。如果能继续占有,则在步骤805中,用L2级缓存的牺牲数据来更新该命中的路。
如果根据占有优先级不能继续占有(即,本线程对应的服务类别COS的占有优先级低于命中的路的服务类别COS),则需要进行数据迁移。在步骤807中,将查找状态从命中状态改为缓存缺失状态,并把该路的状态变为无效(invalid)。这样,由于不能继续占有命中的路,那就相当于未命中来进行后续操作。
在步骤808中,从本线程对应的服务类别COS所属的各个路中,根据替换算法,选择一个路作为下一牺牲路(NV(next-victim)way)。
在步骤809中,申请一个L3牺牲队列给该请求,将L3请求队列的请求移入申请到的L3牺牲队列中,同时将下一牺牲NV的数据等信息填入牺牲队列。
牺牲队列将L2牺牲数据放入L2级缓存的牺牲缓冲器(L2VB),并将下一牺牲NV的数据从L3M移入L3VWB。
牺牲队列查找下一牺牲路的目录STM(L2 Shadow Tag Macro),决定是否对下一牺牲数据进行缓存一致性协议(BackPrb)。
牺牲队列将L2级缓存的牺牲数据从L2级缓存的缓冲器填入下一牺牲路,并更新对应的L3级缓存的状态和目录STM。
牺牲队列将L3VWB的数据送入片上网络,进一步送到内存汇总。牺牲队列释放。流程结束。
图9示出了根据本公开的实施例的处理器的高速缓存系统的方法的数据迁移示意图。
例如,一个L2牺牲请求操作命中路4,并且判定不能继续占有,根据本线程的服务类别COS的路掩码和替换算法,选择了路13作为被替换的下一牺牲路。则,将命中的路4的状态设置为无效态(2)然后将路13的数据读出送给L3VWB,进而送到内存;(3)最后将L2牺牲数据存入路13。
这样,该线程原本占据的不属于本服务类别COS的路4的缓存行,就搬迁移到了属于本服务类别COS的路13中。从而将路4留给了根据服务质量QoS分配的服务类别COS的线程来使用,加速缓存容量的调整,从而让服务质量QoS机制能够在线程切换的场合下也正常发挥作用。
如此,根据本公开的各个实施例,可以在发生线程切换而导致的资源容量分配调整时,根据占有优先级的判断,来将该线程命中的缓存行的数据、根据服务质量QoS定义的当前属于该线程的服务类别COS的路掩码信息,迁移到该路掩码信息设定的位置,加速缓存容量的调整,从而让服务质量QoS机制能够在线程切换的场合下也正常发挥作用。
以上的描述以路为单位作为高速缓存资源的例子,但本公开不限于此,其他资源也可以适用于本公开,例如缓存行、组、块等。
图10示出了根据本公开的实施例的处理器的高速缓存系统的方法的流程图。
在此,高速缓存系统包括:高速缓存器,被配置为用于多个硬件装置共享,其中,高速缓存器中的各个资源与各自的服务类别相关,其中属于第一服务类别的第一线程能使用与该第一服务类别相关的高速缓存资源,且属于第二服务类别的第二线程能使用与该第二服务类别相关的高速缓存资源。
图10所示的处理器的高速缓存系统的方法1000包括:步骤1001,判断第一线程的请求是否命中与第二服务类别相关的高速缓存资源;步骤1002,响应于第一线程的请求命中与第二服务类别相关的高速缓存资源,基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
如此,可以在发生线程切换而导致的资源容量分配调整时,根据占有优先级的判断,来将该线程命中的资源的数据迁移到符合自己服务类别设定的高速缓存资源的位置,加速缓存容量的调整,从而让服务质量机制能够在线程切换的场合下也正常发挥作用。
在一个实施例中,占有优先级可以被设置为如下中的一种:服务类别的占有优先级的高低与服务类别相关的高速缓存资源的数量大小相关;将服务类别相关的高速缓存资源的数量划分为多个数量范围,服务类别的占有优先级的高低与数量范围相关;服务类别的占有优先级的高低与属于服务类别的线程的重要性相关;服务类别的占有优先级的高低与服务类别的重要性相关。
如此,可以根据高速缓存资源的信息或服务质量QoS的要求来设置服务类别的占有优先级。
在一个实施例中,基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源的步骤1002包括:基于第一服务类别的占有优先级高于第二服务类别的占有优先级,确定第一线程的请求的数据继续使用第二服务类别相关的高速缓存资源;基于第一服务类别的占有优先级低于或等于第二服务类别的占有优先级,确定将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
如此,较高占有优先级的服务类别可以占据占有低优先级的服务类别相关的资源,以便为属于较高占有优先级的线程服务。
在两者是相同优先级的服务类别的情况下,则可以配置为可以占据,也可以配置为不可以占据。
在一个实施例中,假设所有的服务类别的占有优先级相同或第一服务类别和第二服务类别的占有优先级相同。
在一个实施例中,基于第一服务类别的占有优先级和第二服务类别的占有优先级,来确定是否将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源的步骤1002包括:响应于第一线程的请求命中与第二服务类别相关的高速缓存资源,将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源。
如此,如果预先设置了所有的服务类别的占有优先级相同,只要线程占用了并非自己所属的服务类别所对应的资源,则都需要将数据迁移到自己所属的服务类别所对应的资源,而可以不比较占用优先级。这样也减少了比较占有优先级和作出判断的步骤,加快了缓存容量的调整,从而让服务质量QoS机制能够在线程切换的场合下也正常发挥作用。或者在比较了占用优先级得到占用优先级相同的情况下,也可以设置在此情况下将数据迁移到自己所属的服务类别所对应的资源,以便让属于服务类别的线程尽可能使用与该服务类别对应的资源。
在一个实施例中,将第一线程的请求的数据迁移到与第一服务类别相关的高速缓存资源包括:将第一线程的请求的命中状态改为缺失状态,并将命中的资源的状态改为无效状态;在与第一服务类别相关的高速缓存资源中选择资源;将第一线程的请求的数据迁移到所选择的资源。
如此,由于判断不能继续占有命中的资源,那就相当于未命中来进行后续操作,而无需更改缓存系统的原本处理方式。
在一个实施例中,方法还1000还包括:响应于第一线程的请求命中与第一服务类别相关的高速缓存资源,将命中的资源的数据更新到命中的资源;响应于第一线程的请求缺失,在与第一服务类别相关的高速缓存资源中选择资源,并将第一线程的请求的数据送入到所选择的资源。
即,如果第一线程的请求本来就命中属于自己服务类别的资源,则继续使用该资源来写入数据。
如此,根据本公开的各个实施例,可以在发生线程切换而导致的资源容量分配调整时,根据占有优先级的判断,来将该线程命中的缓存行的数据、根据服务质量QoS定义的当前属于该线程的服务类别COS的路掩码信息,迁移到该路掩码信息设定的位置,加速缓存容量的调整,从而让服务质量QoS机制能够在线程切换的场合下也正常发挥作用。
图11示出了适于用来实现本申请实施方式的示例性计算机系统的框图。
计算机系统可以包括处理器(H1);存储器(H2),耦合于处理器(H1),且在其中存储计算机可执行指令,用于在由处理器执行时进行本申请的实施例的各个方法的步骤。
处理器(H1)可以包括但不限于例如一个或者多个处理器或者或微处理器等。
存储器(H2)可以包括但不限于例如,随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、计算机存储介质(例如硬碟、软碟、固态硬盘、可移动碟、CD-ROM、DVD-ROM、蓝光盘等)。
除此之外,该计算机系统还可以包括数据总线(H3)、输入/输出(I/O)总线(H4),显示器(H5)以及输入/输出设备(H6)(例如,键盘、鼠标、扬声器等)等。
处理器(H1)可以通过I/O总线(H4)经由有线或无线网络(未示出)与外部设备(H5、H6等)通信。
存储器(H2)还可以存储至少一个计算机可执行指令,用于在由处理器(H1)运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
在一个实施例中,该至少一个计算机可执行指令也可以被编译为或组成一种软件产品,其中所述一个或多个计算机可执行指令被处理器运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
图12示出了根据本公开的实施例的非暂时性计算机可读存储介质的示意图。
如图12所示,计算机可读存储介质1220上存储有指令,指令例如是计算机可读指令1210。当计算机可读指令1210由处理器运行时,可以执行参照以上附图描述的供电电压检测方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机可读存储介质1220可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机可读存储介质1220上存储的计算机可读指令1210的情况下,可以进行如上所述的供电电压检测方法。
本公开提供如下项目:
项目1.一种处理器的高速缓存系统,包括:
高速缓存器,被配置为用于多个硬件装置共享,其中,所述高速缓存器中的各个资源与各自的服务类别相关,其中属于第一服务类别的第一线程能使用与该第一服务类别相关的高速缓存资源,且属于第二服务类别的第二线程能使用与该第二服务类别相关的高速缓存资源;
控制单元,被配置为响应于所述第一线程的请求命中与所述第二服务类别相关的高速缓存资源,基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
项目2.根据项目1所述的系统,其中,所述占有优先级被设置为如下中的一种:所述服务类别的占有优先级的高低与所述服务类别相关的高速缓存资源的数量大小相关;将服务类别相关的高速缓存资源的数量划分为多个数量范围,所述服务类别的占有优先级的高低与所述数量范围相关;所述服务类别的占有优先级的高低与属于所述服务类别的线程的重要性相关;所述服务类别的占有优先级的高低与所述服务类别的重要性相关;
其中所述控制单元被配置为通过如下步骤来实现基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源:
基于所述第一服务类别的占有优先级高于所述第二服务类别的占有优先级,确定所述第一线程的请求的数据继续使用所述第二服务类别相关的高速缓存资源;
基于所述第一服务类别的占有优先级低于或等于所述第二服务类别的占有优先级,确定将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
项目3.根据项目1所述的系统,其中,所有的服务类别的占有优先级相同或第一服务类别和第二服务类别的占有优先级相同,
其中所述控制单元被配置为通过如下步骤来实现基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源:
响应于第一线程的请求命中与所述第二服务类别相关的高速缓存资源,将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
项目4.根据项目1所述的系统,其中,所述控制单元被配置为通过如下步骤来将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源:
将所述第一线程的请求的命中状态改为缺失状态,并将所述命中的资源的状态改为无效状态;
在所述与所述第一服务类别相关的高速缓存资源中选择资源;
将所述第一线程的请求的数据迁移到所选择的资源。
项目5.根据项目1所述的系统,其中,所述控制单元被配置为:
响应于所述第一线程的请求命中与所述第一服务类别相关的高速缓存资源,将所述命中的资源的数据更新到所述命中的资源;
响应于所述第一线程的请求缺失,在所述与所述第一服务类别相关的高速缓存资源中选择资源,并将所述第一线程的请求的数据送入到所选择的资源。
项目6.一种处理器的高速缓存系统的方法,其中,所述高速缓存系统包括:
高速缓存器,被配置为用于多个硬件装置共享,其中,所述高速缓存器中的各个资源与各自的服务类别相关,其中属于第一服务类别的第一线程能使用与该第一服务类别相关的高速缓存资源,且属于第二服务类别的第二线程能使用与该第二服务类别相关的高速缓存资源;
所述方法包括:
判断所述第一线程的请求是否命中与所述第二服务类别相关的高速缓存资源;
响应于所述第一线程的请求命中与所述第二服务类别相关的高速缓存资源,基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
项目7.根据项目6所述的方法,其中,所述占有优先级被设置为如下中的一种:所述服务类别的占有优先级的高低与所述服务类别相关的高速缓存资源的数量大小相关;将服务类别相关的高速缓存资源的数量划分为多个数量范围,所述服务类别的占有优先级的高低与所述数量范围相关;所述服务类别的占有优先级的高低与属于所述服务类别的线程的重要性相关;所述服务类别的占有优先级的高低与所述服务类别的重要性相关;
其中所述基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源包括:
基于所述第一服务类别的占有优先级高于所述第二服务类别的占有优先级,确定所述第一线程的请求的数据继续使用所述第二服务类别相关的高速缓存资源;
基于所述第一服务类别的占有优先级低于或等于所述第二服务类别的占有优先级,确定将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
项目8.根据项目6所述的方法,其中,所有的服务类别的占有优先级相同或第一服务类别和第二服务类别的占有优先级相同,
所述基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源包括:
响应于第一线程的请求命中与所述第二服务类别相关的高速缓存资源,将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
项目9.根据项目6所述的方法,其中,所述将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源包括:
将所述第一线程的请求的命中状态改为缺失状态,并将所述命中的资源的状态改为无效状态;
在所述与所述第一服务类别相关的高速缓存资源中选择资源;
将所述第一线程的请求的数据迁移到所选择的资源。
项目10.根据项目6所述的方法,其中,所述方法还包括:
响应于所述第一线程的请求命中与所述第一服务类别相关的高速缓存资源,将所述命中的资源的数据更新到所述命中的资源;
响应于所述第一线程的请求缺失,在所述与所述第一服务类别相关的高速缓存资源中选择资源,并将所述第一线程的请求的数据送入到所选择的资源。
项目11.一种处理器的高速缓存设备,包括:
处理器;
存储器,存储了计算器可执行指令,其被处理器运行时进行本公开的实施例的各个方法。
项目12.一种计算机可读介质,存储有计算机可读指令,其中当所述计算机可读指令由处理器运行时,进行本公开的实施例的各个方法。
当然,上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本申请的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本申请的效果,这种合并和组合而成的实施例也被包括在本申请中,在此不一一描述这种合并和组合。
注意,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本公开中的步骤流程图以及以上方法描述仅作为例示性的例子并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
另外,本文中的各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本申请的概念来结合本文中的各个实施例中相关的部分步骤和部分装置以构思新的实施例,而这些新的实施例也包括在本申请的范围内。
以上描述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(ASIC)或处理器。
可以利用被设计用于进行在此描述的功能的通用处理器、数字信号处理器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行描述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的微处理器或任何其他这样的配置。
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
在此公开的方法包括用于实现描述的方法的动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
上述功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(CD)、激光盘、光盘、数字通用盘(DVD)、软碟和蓝光盘,其中碟通常磁地再现数据,而盘利用激光光学地再现数据。
因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由处理器执行以进行在此描述的操作。计算机程序产品可以包括包装的材料。
软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
此外,用于进行在此描述的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此描述的方法的手段的传送。或者,在此描述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此描述的方法和技术提供给设备的任何其他适当的技术。
其他例子和实现方式在本公开和所附权利要求的范围和精神内。例如,由于软件的本质,以上描述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
可以不脱离由所附权利要求定义的教导的技术而进行对在此描述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上描述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此描述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (12)
1.一种处理器的高速缓存系统,包括:
高速缓存器,被配置为用于多个硬件装置共享,其中,所述高速缓存器中的各个资源与各自的服务类别相关,其中在第一线程在第一核上执行的情况下,第一线程被分配使用与第二服务类别相关的高速缓存资源,其中,在所述第一线程在第二核上执行的情况下,第一线程被分配使用与第一服务类别相关的高速缓存资源,且第二线程被分配使用与第二服务类别相关的高速缓存资源;
控制单元,被配置为在将原先由第一核执行的所述第一线程迁移到由所述第二核执行的情况下,响应于所述第一线程的请求命中与所述第二服务类别相关的高速缓存资源,基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
2.根据权利要求1所述的系统,其中,所述占有优先级被设置为如下中的一种:所述服务类别的占有优先级的高低与所述服务类别相关的高速缓存资源的数量大小相关;将服务类别相关的高速缓存资源的数量划分为多个数量范围,所述服务类别的占有优先级的高低与所述数量范围相关;所述服务类别的占有优先级的高低与属于所述服务类别的线程的重要性相关;所述服务类别的占有优先级的高低与所述服务类别的重要性相关;
其中所述控制单元被配置为通过如下步骤来实现基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源:
基于所述第一服务类别的占有优先级高于所述第二服务类别的占有优先级,确定所述第一线程的请求的数据继续使用所述第二服务类别相关的高速缓存资源;
基于所述第一服务类别的占有优先级低于或等于所述第二服务类别的占有优先级,确定将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
3.根据权利要求1所述的系统,其中,所有的服务类别的占有优先级相同或第一服务类别和第二服务类别的占有优先级相同,
其中所述控制单元被配置为通过如下步骤来实现基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源:
响应于第一线程的请求命中与所述第二服务类别相关的高速缓存资源,将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
4.根据权利要求1所述的系统,其中,所述控制单元被配置为通过如下步骤来将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源:
将所述第一线程的请求的命中状态改为缺失状态,并将所述命中的资源的状态改为无效状态;
在所述与所述第一服务类别相关的高速缓存资源中选择资源;
将所述第一线程的请求的数据迁移到所选择的资源。
5.根据权利要求1所述的系统,其中,所述控制单元被配置为:
响应于所述第一线程的请求命中与所述第一服务类别相关的高速缓存资源,将所述命中的资源的数据更新到所述命中的资源;
响应于所述第一线程的请求缺失,在所述与所述第一服务类别相关的高速缓存资源中选择资源,并将所述第一线程的请求的数据送入到所选择的资源。
6.一种处理器的高速缓存系统的方法,其中,所述高速缓存系统包括:
高速缓存器,被配置为用于多个硬件装置共享,其中,所述高速缓存器中的各个资源与各自的服务类别相关,其中在第一线程在第一核上执行的情况下,第一线程被分配使用与第二服务类别相关的高速缓存资源,其中,在所述第一线程在第二核上执行的情况下,第一线程被分配使用与第一服务类别相关的高速缓存资源,且第二线程被分配使用与第二服务类别相关的高速缓存资源;
所述方法包括:
在将原先由第一核执行的所述第一线程迁移到由所述第二核执行的情况下,判断所述第一线程的请求是否命中与所述第二服务类别相关的高速缓存资源;
响应于所述第一线程的请求命中与所述第二服务类别相关的高速缓存资源,基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
7.根据权利要求6所述的方法,其中,所述占有优先级被设置为如下中的一种:所述服务类别的占有优先级的高低与所述服务类别相关的高速缓存资源的数量大小相关;将服务类别相关的高速缓存资源的数量划分为多个数量范围,所述服务类别的占有优先级的高低与所述数量范围相关;所述服务类别的占有优先级的高低与属于所述服务类别的线程的重要性相关;所述服务类别的占有优先级的高低与所述服务类别的重要性相关;
其中所述基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源包括:
基于所述第一服务类别的占有优先级高于所述第二服务类别的占有优先级,确定所述第一线程的请求的数据继续使用所述第二服务类别相关的高速缓存资源;
基于所述第一服务类别的占有优先级低于或等于所述第二服务类别的占有优先级,确定将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
8.根据权利要求6所述的方法,其中,所有的服务类别的占有优先级相同或第一服务类别和第二服务类别的占有优先级相同,
所述基于所述第一服务类别的占有优先级和所述第二服务类别的占有优先级,来确定是否将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源包括:
响应于第一线程的请求命中与所述第二服务类别相关的高速缓存资源,将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源。
9.根据权利要求6所述的方法,其中,所述将所述第一线程的请求的数据迁移到与所述第一服务类别相关的高速缓存资源包括:
将所述第一线程的请求的命中状态改为缺失状态,并将所述命中的资源的状态改为无效状态;
在所述与所述第一服务类别相关的高速缓存资源中选择资源;
将所述第一线程的请求的数据迁移到所选择的资源。
10.根据权利要求6所述的方法,其中,所述方法还包括:
响应于所述第一线程的请求命中与所述第一服务类别相关的高速缓存资源,将所述命中的资源的数据更新到所述命中的资源;
响应于所述第一线程的请求缺失,在所述与所述第一服务类别相关的高速缓存资源中选择资源,并将所述第一线程的请求的数据送入到所选择的资源。
11.一种处理器的高速缓存设备,包括:
处理器;
存储器,存储了计算器可执行指令,其被处理器运行时进行如权利要求6-10中之一所述的方法。
12.一种计算机可读介质,存储有计算机可读指令,其中当所述计算机可读指令由处理器运行时,进行如权利要求6-10中之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111094888.6A CN113821324B (zh) | 2021-09-17 | 2021-09-17 | 处理器的高速缓存系统、方法、设备和计算机介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111094888.6A CN113821324B (zh) | 2021-09-17 | 2021-09-17 | 处理器的高速缓存系统、方法、设备和计算机介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113821324A CN113821324A (zh) | 2021-12-21 |
CN113821324B true CN113821324B (zh) | 2022-08-09 |
Family
ID=78914754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111094888.6A Active CN113821324B (zh) | 2021-09-17 | 2021-09-17 | 处理器的高速缓存系统、方法、设备和计算机介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113821324B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107924380A (zh) * | 2015-09-26 | 2018-04-17 | 英特尔公司 | 使用业务类别分配高速缓存的方法、装置和系统 |
CN109726005A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 用于管理资源的方法、服务器系统和计算机程序产品 |
CN110955512A (zh) * | 2018-09-27 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 缓存处理方法、装置、存储介质、处理器及计算设备 |
US10754783B2 (en) * | 2018-06-29 | 2020-08-25 | Intel Corporation | Techniques to manage cache resource allocations for a processor cache |
CN111752615A (zh) * | 2019-03-29 | 2020-10-09 | 英特尔公司 | 用于确保多线程处理器核的服务质量的装置、方法和系统 |
CN112083957A (zh) * | 2020-09-18 | 2020-12-15 | 海光信息技术股份有限公司 | 带宽控制设备、多线程控制器系统及访存带宽控制方法 |
CN112540934A (zh) * | 2020-12-14 | 2021-03-23 | 山东师范大学 | 保证多个延迟关键程序共同执行时服务质量的方法及系统 |
CN112948285A (zh) * | 2019-11-26 | 2021-06-11 | 英特尔公司 | 灵活高速缓存分配技术的基于优先级的高速缓存行驱逐算法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9563564B2 (en) * | 2015-04-07 | 2017-02-07 | Intel Corporation | Cache allocation with code and data prioritization |
US10187308B2 (en) * | 2016-09-30 | 2019-01-22 | Intel Corporation | Virtual switch acceleration using resource director technology |
US11593154B2 (en) * | 2018-12-20 | 2023-02-28 | Intel Corporation | Operating system assisted prioritized thread execution |
US11726910B2 (en) * | 2019-03-13 | 2023-08-15 | Intel Corporation | Dynamic control of memory bandwidth allocation for a processor |
-
2021
- 2021-09-17 CN CN202111094888.6A patent/CN113821324B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107924380A (zh) * | 2015-09-26 | 2018-04-17 | 英特尔公司 | 使用业务类别分配高速缓存的方法、装置和系统 |
CN109726005A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 用于管理资源的方法、服务器系统和计算机程序产品 |
US10754783B2 (en) * | 2018-06-29 | 2020-08-25 | Intel Corporation | Techniques to manage cache resource allocations for a processor cache |
CN110955512A (zh) * | 2018-09-27 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 缓存处理方法、装置、存储介质、处理器及计算设备 |
CN111752615A (zh) * | 2019-03-29 | 2020-10-09 | 英特尔公司 | 用于确保多线程处理器核的服务质量的装置、方法和系统 |
CN112948285A (zh) * | 2019-11-26 | 2021-06-11 | 英特尔公司 | 灵活高速缓存分配技术的基于优先级的高速缓存行驱逐算法 |
CN112083957A (zh) * | 2020-09-18 | 2020-12-15 | 海光信息技术股份有限公司 | 带宽控制设备、多线程控制器系统及访存带宽控制方法 |
CN112540934A (zh) * | 2020-12-14 | 2021-03-23 | 山东师范大学 | 保证多个延迟关键程序共同执行时服务质量的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113821324A (zh) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11243892B2 (en) | Partitioning TLB or cache allocation | |
US9529724B2 (en) | Layered architecture for hybrid controller | |
CN110168502B (zh) | 用于存储器划分的装置和方法 | |
KR102471308B1 (ko) | 메모리 시스템 자원 또는 성능 모니터링의 파티셔닝 | |
TWI551990B (zh) | 由n個核共用的快取記憶體、用於由n個核共用的快取記憶體的方法及處理器 | |
US10754778B2 (en) | Control of pre-fetch traffic | |
US10572150B2 (en) | Memory network with memory nodes controlling memory accesses in the memory network | |
US9477591B2 (en) | Memory access requests in hybrid memory system | |
JP6263596B2 (ja) | 分散キャッシュメモリにおける適応分割用のシステム及び方法 | |
CN110168501B (zh) | 存储器系统资源或性能监测的划分 | |
CN110168500B (zh) | 存储器系统资源或性能监测的划分 | |
US8914581B2 (en) | Method and apparatus for accessing cache memory | |
US7640399B1 (en) | Mostly exclusive shared cache management policies | |
WO2011000260A1 (zh) | 集群系统中内存资源的管理方法、设备及网络系统 | |
JP6262407B1 (ja) | 共有キャッシュメモリシステムにおける共有キャッシュメモリ割振り制御の提供 | |
KR101587579B1 (ko) | 가상화 시스템에서 메모리 조정방법 | |
JP2023513665A (ja) | メモリシステム構成要素リソース制御パラメータの更新又は使用の制約 | |
CN110175136B (zh) | 缓存管理方法、缓存器以及存储介质 | |
US11360891B2 (en) | Adaptive cache reconfiguration via clustering | |
US20210073131A1 (en) | Partition identifiers for page table walk memory transactions | |
JPWO2017056310A1 (ja) | 計算機および計算機の制御方法 | |
CN113821324B (zh) | 处理器的高速缓存系统、方法、设备和计算机介质 | |
WO2013075627A1 (zh) | 一种数据的缓存方法、装置和服务器 | |
US20120137082A1 (en) | Global and local counts for efficient memory page pinning in a multiprocessor system |
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 |