CN107223239A - 用于改善牺牲(Victim)高速缓存模式的处理调度 - Google Patents
用于改善牺牲(Victim)高速缓存模式的处理调度 Download PDFInfo
- Publication number
- CN107223239A CN107223239A CN201680010436.6A CN201680010436A CN107223239A CN 107223239 A CN107223239 A CN 107223239A CN 201680010436 A CN201680010436 A CN 201680010436A CN 107223239 A CN107223239 A CN 107223239A
- Authority
- CN
- China
- Prior art keywords
- processor
- processor cluster
- cache memory
- cluster
- processing
- 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.)
- Pending
Links
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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/502—Proximity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
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
背景技术
在广泛的计算设备阵列中对性能和特征的日益增长的需求,使得制造商在计算设备中包括多个中央处理器单元(CPU)来处理更多数量的能力和更繁重的工作负荷,同时比前几代更快速地执行。一些架构包括被布置成簇的CPU,以执行不同的任务并支持不同的能力。计算设备可以包括多簇CPU系统,以处理计算设备的软件和子系统的需求。仅当CPU可以以与其处理速度相当的速度来访问存储的代码和数据时,多个CPU才能提高计算设备的性能。请求访问高速缓冲存储器的CPU太多,可能会导致性能瓶颈。
为了避免产生这种性能瓶颈,每个CPU簇可以包括其自己的高速缓冲存储器(例如,L2高速缓存)。在许多情况下,并非计算设备的所有CPU簇都可能处于活动状态,或者CPU簇的高速缓存可能未被完全地利用。现有的高速缓存一致性协议支持在不同CPU簇的L2高速缓存之间共享数据。但是,这些高速缓存一致性协议没有能完全地利用多簇CPU系统中的可用的L2高速缓存资源。要进行利用以支持其它活动CPU簇的优选L2高速缓存,将是具有最低延迟和最高可用性两者的多簇CPU系统的L2高速缓存。当考虑利用CPU簇的其它L2高速缓存资源时,这种优选环境并不总是存在的。此外,即使对最高可用性和最低延迟进行组合,可能也不能提供具有最佳性能结果的组合。
发明内容
各个方面的方法和装置提供了用于将执行处理调度到执行处理器簇,以利用牺牲高速缓存的减少的延迟的电路和方法。一些方面方法可以包括:确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器;确定与调度有执行处理的第一执行处理器簇相比,具有到第一远程共享高速缓冲存储器的更低延迟的第二处理器簇;基于可用的共享高速缓冲存储器空间的大小以及第二处理器簇到第一远程共享高速缓冲存储器的延迟,将执行处理调度到第二处理器簇作为第二执行处理器簇;将可用的共享高速缓冲存储器空间作为用于执行处理的牺牲高速缓存进行使用。
在一个方面,确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器可以包括:确定第一处理器簇以及具有最高量的可用共享高速缓冲存储器空间的第一远程共享高速缓冲存储器;确定与调度有执行处理的第一执行处理器簇相比,具有到第一远程共享高速缓冲存储器的更低延迟的第二处理器簇可以包括:确定具有到第一远程共享高速缓冲存储器的最低延迟的第二处理器簇;基于所述可用的共享高速缓冲存储器空间的大小以及第二处理器簇到第一远程共享高速缓冲存储器的延迟,将所述执行处理调度到作为第二执行处理器簇的第二处理器簇可以包括:基于第二处理器簇与具有最高量的可用共享高速缓冲存储器空间的第一远程共享高速缓冲存储器具有最低延迟,将所述执行处理调度到作为第二执行处理器簇的第二处理器簇。
一个方面方法还可以包括:确定是否针对第二处理器簇调度了处理;以及响应于确定针对第二处理器簇调度了该处理,将该处理调度到作为第三处理器簇的第一执行处理器簇。
此外,一个方面方法还可以包括:确定第三处理器簇以及具有最高量的可用共享高速缓冲存储器空间的第二远程共享高速缓冲存储器,其中,第二远程共享高速缓冲存储器包括不同于第一远程共享高速缓冲存储器的任何远程共享高速缓冲存储器;确定具有到第二执行处理器簇的最低延迟的第四处理器簇,其中,第四处理器簇包括不同于第一处理器簇的任何处理器簇;将针对第三处理器簇调度的处理调度到第四处理器簇;使用所述最高量的可用共享高速缓冲存储器空间,作为用于所述执行处理的牺牲高速缓存的一部分。
此外,一个方面方法还可以包括:确定是否针对第四处理器簇调度了处理;并且响应于确定向第四处理器簇调度了该处理,将该处理调度到第三处理器簇。
一个方面包括一种计算设备,该计算设备具有:彼此之间通信连接的多个处理器簇;所述多个处理器簇中的分配执行处理的第一执行处理器簇;通信地连接到所述多个处理器中的至少一个处理器的多个共享高速缓冲存储器;以及通信地连接到所述多个处理器簇的处理器,并且其配置有处理器可执行指令以执行上面所描述的一个或多个方面方法的操作。
一个方面包括一种计算设备,其中该计算设备具有用于执行上面所描述的一个或多个方面方法的功能的单元。
一个方面包括一种其上存储有处理器可执行指令的非临时性处理器可读介质,其中所述处理器可执行指令被配置为使处理器执行上面所描述的一个或多个方面方法的操作。
附图说明
被并入本文并且构成本说明书一部分的附图,描绘了本发明的示例性方面,并且连同上面给出的概括描述以及下面给出的详细描述一起来解释本发明的特征。
图1是示出适合于实现一个方面的计算设备的组件框图。
图2是示出适合于实现一个方面的示例性多核处理器的组件框图。
图3是示出适合于实现一个方面的示例性片上系统(SoC)的组件框图。
图4是根据一个方面的多处理器簇的视图,其包括用于每个处理器簇的可用共享高速缓冲存储器的级别。
图5是根据一个方面的包括相对于执行处理器簇的多个处理器簇的标绘点的图示。
图6是根据一个方面的多处理器簇的视图,其包括用于每个处理器簇的可用共享高速缓冲存储器的级别。
图7是根据一个方面的包括相对于执行处理器簇的多个处理器簇的标绘点的图示。
图8是根据一个方面的多处理器簇的视图,其包括用于每个处理器簇的可用共享高速缓冲存储器的级别。
图9是根据一个方面的包括相对于执行处理器簇的多个处理器簇的标绘点的图示。
图10是示出用于实现选择可用的远程共享高速缓冲存储器作为牺牲高速缓存的方面方法的处理流程图。
图11是示出用于实现将执行处理调度到执行处理器簇,以利用牺牲高速缓存的减少的延迟的方面方法的处理流程图。
图12是示出用于实现将较低需求的处理调度到用于执行处理的处理器簇,以利用牺牲高速缓存的减少的延迟和更高可用性的方面方法的处理流程图。
图13是示出适合于结合各个方面使用的示例性移动计算设备的组件框图。
图14是示出适合于结合各个方面使用的示例性移动计算设备的组件框图。
图15是示出适合于结合各个方面使用的示例性服务器的组件框图。
具体实施方式
现在参照附图来详细地描述各个方面。在可以的地方,贯穿附图使用相同的附图标记来指代相同或者类似的部件。对于特定示例和实现的引用只是用于说明目的,而不是旨在限制本发明或权利要求的保护范围。
本文可互换地使用术语“计算设备”和“移动计算设备”来指代下面中的任何一项或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、智能本、超级本、掌上计算机、无线电子邮件接收机、具备多媒体互联网功能的蜂窝电话、无线游戏控制器、以及包括存储器和多核可编程处理器的类似个人电子设备。计算设备包括该计算设备中的一个或多个处理器,因此对于计算设备执行操作的引用,涵盖该设备中的一个或多个处理器执行该操作。虽然各个方面对于诸如智能电话之类的移动计算设备(其中移动计算设备具有有限的存储器和电池资源)特别有用,但这些方面通常也可用于实现多个存储器设备和有限的功率预算的任何电子设备,其中在该情况下,减少处理器的功耗可以延长移动计算设备的电池工作时间。
本文使用术语“片上系统”(SoC)指代一组相互连接的电子电路,其通常包括但不限于:硬件内核、存储器和通信接口。硬件内核可以包括各种不同类型的处理器,例如,通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器和多核处理器。此外,硬件内核还可以体现其它硬件和硬件组合,例如,现场可编程门阵列(FPGA)、专用集成电路(ASCI)、其它可编程逻辑器件、分离门逻辑器件、晶体管逻辑器件、性能监测硬件、看门狗硬件和时间基准。可以对集成电路进行配置,使得集成电路的部件位于单片的半导体材料(例如,硅)上。
本文的方面包括用于改进对多簇CPU系统中的可用高速缓存资源的利用的方法、以及实现这些方法的计算设备。各个方面可以应用于任何类型的高速缓冲存储器(例如,L1高速缓冲存储器、L2高速缓冲存储器、L3高速缓冲存储器、L4高速缓冲存储器等等),并且因此,对于L2高速缓冲存储器的引用只是用于便于解释一种示例性类型的高速缓冲存储器,而不是意味着限制权利要求的保护范围,除非另外明确阐述。在一个方面,可以通过选择远程L2高速缓冲存储器以用作针对具有较高的L2高速缓存需求的过程的牺牲高速缓存,来改善高速缓存资源的利用状况。一些方面可以使用一个或多个其它处理器簇的L2高速缓冲存储器来提高牺牲高速缓存模式的有效性。
一个方面可以涉及通过以下方式来提高多处理器簇系统中的可用的L2高速缓存资源的使用:将具有较高的L2高速缓存需求的处理迁移到更接近具有较低的L2高速缓存要求的线程或处理的处理器簇,从而改善牺牲高速缓存模式的有效性和延迟。
在多处理器簇系统中,可用的L2高速缓存可以分布在多个处理器簇之中。在一个方面,多处理器簇系统可以被配置为确定所述多个处理器簇和可用的L2高速缓存之间的关系。多处理器簇系统可以确定具有高可用性的L2高速缓存。随后,可以在考虑其对L2资源进行共享的需求的情况下,将处理调度到处理器上。可以将具有较高的L2高速缓存需求的处理迁移到更接近执行具有较低的L2高速缓存要求的线程的处理器簇。执行具有较低的L2高速缓存要求的线程的处理器簇,可以具有相关联的具有高可用性的L2高速缓存以用作牺牲高速缓存。将较高的高速缓存处理移动到更接近具有较高的L2高速缓存可用性的处理器,还可以减少执行该处理的处理器簇和L2牺牲高速缓存之间的物理距离,从而减少延迟。随后,执行具有较高的高速缓存要求的线程的处理器簇,可以使用与具有较低的高速缓存要求的处理器簇相关联的L2高速缓存作为远程牺牲高速缓存。
可以实现多个远程牺牲高速缓存,以帮助处理的执行。可以将处理迁移到更接近第二处理器簇和第三处理器簇的第一处理器簇,其中的每一个具有相对较高水平的可用的L2高速缓冲存储器,以便由于它们与第一处理器簇的邻近性而减少延迟。在一个方面,可以基于下面的组合,选择第一处理器簇来调度处理:(1)访问与另一个处理器簇相关联的远程L2高速缓存的延迟,以及(2)该远程L2高速缓存的可用性的水平。换言之,处理器选择可以是基于减少延迟以及增加远程L2高速缓存的可用性。
减少延迟并且增加远程L2高速缓冲存储器用作远程牺牲高速缓存的可用性,可以减少高速缓存未命中的数量,其导致对于主内存的更少访问、减少的带宽使用、减少的内存访问冲突、以及提高性能。由于可以更快速地访问存储的信息,以及更不容易受到延迟或中断的影响,因此这可以增加执行处理的性能。此外,通过使用远程L2高速缓冲存储器来减少消耗的功率,可以通过避免各种处理器状态所造成的性能下降来提高性能。
图1示出了适合于结合各个方面使用的、包括有与远程计算设备50进行通信的计算设备10的系统。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储内存接口20的SoC 12。该计算设备还可以包括诸如有线或无线调制解调器之类的通信组件22、存储内存24、用于建立与无线网络30的无线连接32的天线26、和/或用于连接有线连接44以连接到互联网40的网络接口28。处理器14可以包括各种各样的硬件内核以及多个处理器内核中的任何一种。SoC 12可以包括一个或多个处理器14。计算设备10可以包括一个以上的SoC12,从而增加处理器14和处理器内核的数量。此外,计算设备10还可以包括与SoC 12不相关联的处理器14。各个处理器14可以是如下面参照图2所描述的多核处理器。处理器14中的每一个可以被配置为用于特定目的,其可以与计算设备10的其它处理器14相同或者不同。可以将相同或不同配置的处理器14和处理器内核中的一个或多个组合在一起。
SoC 12的存储器16可以是配置为存储由处理器14进行访问的数据和处理器可执行代码的易失性或者非易失性存储器。计算设备10和/或SoC 12可以包括配置为用于各种目的的一个或多个存储器16。在一个方面,一个或多个存储器16可以包括诸如随机存取存储器(RAM)或主存储器或者高速缓存之类的易失性存储器。这些存储器16可以被配置为临时地保持有限数量的从非易失性存储器请求的数据和/或处理器可执行代码指令、基于各种因素而预期未来访问的从非易失性存储器装载到存储器16的数据、和/或处理器14产生的中间处理数据和/或处理器可执行代码指令、以及临时地存储以便未来快速访问而无需存储在非易失性存储器中的数据。在一个方面,存储器16可以是专供处理器14或处理器内核使用,也可以在不同的处理器14或处理器内核之间共享。
在一个方面,存储器16可以被配置为:至少临时地存储从另一个存储器设备(例如,另一个存储器16或存储内存24)装载到存储器16,以便处理器14的一个或多个进行访问的处理器可执行代码。在一个方面,可以响应于处理器14对于某个功能的执行,对用于装载到存储器16的处理器可执行代码进行装载。响应于某个功能的执行,将处理器可执行代码装载到存储器16,可以源自于不成功或者未命中的针对存储器16的内存访问请求(由于所请求的处理器可执行代码不位于存储器16中)。响应于未命中,可以进行针对另一个存储器设备的内存访问请求,以便将所请求的处理器可执行代码从所述另一个存储器设备装载到该存储器设备16中。在一个方面,响应于某个功能的执行而将处理器可执行代码装载到存储器16,可以源自于针对另一个存储器设备的内存访问请求,并且可以将处理器可执行代码装载到存储器16中以便稍后访问。
通信接口18、通信组件22、天线26和/或网络接口28可以一致地工作,以使计算设备10能够经由无线连接32通过无线网络30和/或通过有线网络44,与远程计算设备50进行通信。无线网络30可以使用各种各样的无线通信技术(例如,其包括用于无线通信的无线电频谱)来实现,以向计算设备10提供针对互联网40的连接,通过互联网40,计算设备10可以与远程计算设备50交换数据。
存储内存接口20和存储内存24可以一致地工作,以允许计算设备10将数据和处理器可执行代码存储在非易失性存储介质上。可以非常类似于存储器16的方面,对存储内存24进行配置,其中,存储内存24可以存储用于处理器14中的一个或多个进行访问的处理器可执行代码。在计算设备10的电源被关闭之后,存储内存24(其是非易失性的)可以保持该信息。当电源被再次打开,计算设备10重新启动时,计算设备10可获得存储内存24上存储的该信息。存储内存接口20可以控制针对存储内存24的访问,允许处理器14从存储内存24读取数据和向存储内存24写入数据。
可以对计算设备10的组件中的一些或全部进行不同地排列和/或组合,同时仍然服务必要的功能。此外,计算设备10并不限于这些组件中的每一个,在计算设备10的各种配置中可以包括每一个组件的多个实例。
图2示出了适合于实现一个方面的多核处理器14。多核处理器14可以具有多个同构或者异构的处理器内核200、201、202、203。处理器内核200、201、202、203可以是同构的,其在于:单一处理器14的处理器内核200、201、202、203可以被配置为用于相同目的,具有相同或类似的性能特性。例如,处理器14可以是通用处理器,处理器内核200、201、202、203可以是同构的通用处理器内核。替代地,处理器14可以是图形处理单元或者数字信号处理器,处理器内核200、201、202、203可以分别是同构的图形处理器内核或者数字信号处理器内核。为了便于引用起见,本文可以互换地使用术语“处理器”和“处理器内核”。
处理器内核200、201、202、203可以是异构的,其在于:单一处理器14的处理器内核200、201、202、203可以被配置为用于不同的目的,和/或具有不同的性能特性。这些异构处理器内核的示例可以包括称为“big.LITTLE”架构的架构,在该架构中,可以将慢速、低功率处理器内核与更强大和功耗更大的处理器内核相耦合。
在图2所示出的例子中,多核处理器14包括四个处理器内核200、201、202、203(即,处理器内核0、处理器内核1、处理器内核2、和处理器内核3)。为了便于解释起见,本文的例子可以指代图2中所示出的四个处理器内核200、201、202、203。但是,图2中所示出和本文所描述的四个处理器内核200、201、202、203只是提供成一个例子,其决不意味着将各个方面限制于四核处理器系统。与本文所示出和描述的四个处理器内核200、201、202、203相比,计算设备10、SoC 12或多核处理器14可以各自地或者组合地包括更少或者更多的内核。
在一个方面,处理器内核200、201、202、203可以具有相关联的高速缓冲存储器204、206、208、210。类似于图1中的存储器16,专用高速缓冲存储器204、206、208、210可以被配置为:临时地保持有限数量的从非易失性存储器请求的、或者在预期未来访问的情况下从非易失性存储器装载的数据和/或处理器可执行代码指令。此外,专用高速缓冲存储器204、206、208、210还可以被配置为:临时地存储处理器内核200、201、202、203产生的中间处理数据和/或处理器可执行代码指令、以及临时地存储以便未来快速访问而无需存储在非易失性存储器中的数据。专用高速缓冲存储器204、206、208、210中的每一个可以与处理器内核200、201、202、203中的一个相关联。每个专用高速缓冲存储器204、206、208、210可以由其相应的相关联的处理器内核200、201、202、203来访问。在图2所示出的例子中,每个处理器内核200、201、202、203与专用高速缓冲存储器204、206、208、210中的一个进行通信(即,处理器内核0与专用高速缓冲存储器0相配对,处理器内核1与专用高速缓冲存储器1相配对,处理器内核2与专用高速缓冲存储器2相配对,处理器内核3与专用高速缓冲存储器3相配对)。将每个处理器内核200、201、202、203示出为只与专用高速缓冲存储器204、206、208、210中的一个进行通信,但是,专用高速缓冲存储器的数量并不意味着是限制性的,每个处理器内核200、201、202、203的专用高速缓冲存储器的数量可以发生变化。
在一个方面,处理器内核200、201、202、203可以具有相关联的共享高速缓冲存储器212、214。共享高速缓冲存储器212、214可以被配置为执行与专用高速缓冲存储器204、206、208、210相类似的功能。但是,共享高速缓冲存储器212、214中的每一个可以与处理器内核200、201、202、203中的一个以上进行通信(即,处理器内核0和处理器内核1与共享高速缓冲存储器0相配对,并且处理器内核2和处理器内核3与共享高速缓冲存储器1相配对)。将每个处理器内核200、201、202、203示出为只与一个共享高速缓冲存储器212、214进行通信,但是,共享高速缓冲存储器的数量并不意味着是限制性的,每个处理器内核200、201、202、203的共享高速缓冲存储器的数量可以发生变化。类似地,将每个共享高速缓冲存储器示出为只与两个处理器内核200、201、202、203进行通信,但是,处理器内核的数量并不意味着是限制性的,每个共享高速缓冲存储器的情形可以发生变化。可以将与相同的共享高速缓冲存储器212、214进行通信的处理器内核200、201、202、203一起组合在一个处理器簇中,如本文所进一步描述的。
图3示出了适合于实现一个方面的SoC 12。SoC 12可以具有多个同构或者异构处理器300、302、304、306。处理器300、302、304、306中的每一个可以类似于图2中的处理器14。每个处理器300、302、304、306的目的和/或性能特性可以以与图2中的相类似的方式,判断该处理器300、302、304、306是同构的还是异构的。
此外,专用高速缓冲存储器204、206、208、210和共享高速缓冲存储器212、214也类似于图2中所描述的相同部件,但是在这里,专用高速缓冲存储器204、206、208、210和共享高速缓冲存储器212、214与处理器300、302、304、306进行通信。SoC 14的部件的数量和配置并不意味着是限制性,SoC 14可以在不同的布置中,包括更多或者更少的这些部件中的任何一个。
在一个方面,本文所描述的处理器和处理器内核不需要位于相同的SoC或处理器上来对共享高速缓冲存储器进行共享。处理器和处理器内核可以分布在各个部件之中,同时维持与一个或多个其它处理器或处理器内核对相同的共享缓存存储器的连接。
图4根据一个方面,示出了多个处理器簇400、402、404、406、408,它们包括不同级别的可用的共享高速缓冲存储器460、462、464、466。在图4中所示出的例子中的处理器簇400、402、404、406、408(并稍后在图7和图9中进行描述)均被示出为具有两个处理器410、412、414、416、418、420、422、424、426、428,每个处理器关联专用的高速缓冲存储器430、432、434、436、438、440、442、444、446、448和共享高速缓冲存储器450、452、454、456、458。例如,处理器簇400(处理器簇0)包括处理器410(处理器01)、412(处理器02),处理器410、412中的每一个与相应的专用高速缓冲存储器430(与处理器01相关联的专用高速缓冲存储器01)、432(与处理器02相关联的专用高速缓冲存储器02)相关联。此外,处理器410、412中的每一个与共享高速缓冲存储器450(与处理器01和处理器02相关联的共享高速缓冲存储器0)相关联。处理器簇400、402、404、406、408可以经由互连总线468来彼此之间进行通信,这可以允许处理器簇400、402、404、406、408传输去往、来自与共享高速缓冲存储器450、452、454、456、458有关的数据。如上所述,这些示例性处理器簇400、402、404、406、408并不意味着是限制性的,可以提供各种数量和配置的组件。
共享高速缓冲存储器450、452、454、456、458中的一个或多个可以包括:作为可用的共享高速缓冲存储器460、462、464、466的部分。换言之,共享高速缓冲存储器450、452、454、456、458的一部分可以是在用的,无论是存储用于潜在使用的信息还是正在访问的信息。共享高速缓冲存储器450、452、454、456、458的其它部分可以是空闲的或者可用的,要么存储不再指定使用的信息,要么清空或不被访问。可用的共享高速缓冲存储器460、462、464、466是共享高速缓冲存储器450、452、454、456、458的后一部分。每个可用的共享高速缓冲存储器460、462、464、466可以包括不同级别的共享高速缓冲存储器,如可用的共享高速缓冲存储器460、462、464、466的不同大小所指示的。每个可用的共享高速缓冲存储器460、462、464、466的共享高速缓冲存储器空间的量,可以根据共享高速缓冲存储器450、452、454、456、458的使用而随时间发生改变。
图4中所示出的例子示出了处理器簇400不具有可用的共享高速缓冲存储器。在该例子中,向处理器簇400分配具有较高的共享高速缓冲存储器要求的处理(其还可以称为执行处理),这意味着该执行处理使用共享高速缓冲存储器450的可能已经可用的共享高速缓冲存储器的全部或几乎全部。处理器簇400、402、404、406、408中的任何一个还可以称为执行处理器簇400、402、404、406、408(当被分配执行处理时)。共享高速缓冲存储器450、452、454、456、458中的任何一个还可以称为远程共享高速缓冲存储器450、452、454、456、458(当它们远离执行处理器簇400、402、404、406、408时)。此外,该例子示出了共享高速缓冲存储器452、454、456、458中的每一个包括不同级别的可用的共享高速缓冲存储器460、462、464、466(即,可用的共享高速缓冲存储器2比可用的共享高速缓冲存储器1更小,而可用的共享高速缓冲存储器1比可用的共享高速缓冲存储器3更小,可用的共享高速缓冲存储器3比可用的共享高速缓冲存储器4更小)。处理器簇402、404、406、408中的每一个相对于执行处理簇400的位置可以指示处理器簇402、404、406、408的每一个与执行处理簇400的相对距离。该相对距离可以导致处理器簇402、404、406、408和执行处理簇400之间的通信的不同延迟。
图5示出了存储器延迟对比可用的共享存储器高速缓存大小的图500,其包括相对于执行处理器簇400的处理器簇402、404、406、408的标绘点502、504、506、508。每一个标绘点502、504、506、508与图4中的处理器簇402、404、406、408中的一个相关(即,标绘点1与处理器簇1相关,标绘点2与处理器簇2相关,标绘点3与处理器簇3相关,并且标绘点4与处理器簇4相关)。图500与可用的共享存储器高速缓存大小和图4中表达的距离/延迟相关。例如,处理器簇402距离执行处理器簇400最近,因此标绘点502在描述存储器延迟的y轴上最低。处理器簇404、406、408距离执行处理器簇400更远,相应的标绘点504、506、508示出更大的存储器延迟。类似地,沿着x轴的相应标绘点502、504、506、508示出了用于相应的处理器簇402、404、406、408的可用的共享高速缓冲存储器460、462、464、466的大小。在图500的轴上所示出的值是示例性的和非限制性的,可以使用任何范围的值来测量存储器延迟和可用的共享高速缓冲存储器大小。
在图5所示出的例子中并与图4中所示出的例子相对应,当与执行处理器簇400和第二最低量的可用的共享高速缓冲存储器450进行通信时,处理器簇402具有最低存储器延迟,如通过标绘点502所描述的。类似地,处理器簇404具有第二最低存储器延迟和最低可用的共享高速缓冲存储器452,如通过标绘点504所描述的。处理器簇406具有第二最高存储器延迟和第二最高可用的共享高速缓冲存储器454,如通过标绘点506所描述的。处理器簇408具有最高存储器延迟和最高可用的共享高速缓冲存储器456,如通过标绘点508所描述的。通常,用作执行处理的牺牲高速缓存的优选可用的高速缓冲存储器,将具有最低存储器延迟和最高可用的共享高速缓冲存储器大小的组合(即,最接近图500的右下角)。但是,最低存储器延迟和最高可用的共享高速缓冲存储器大小,可能并不总是从可用的共享高速缓冲存储器460、462、464、466中可获得的。因此,各个方法可以用于选择可用的共享高速缓冲存储器460、462、464、466,作为用于由执行处理簇500执行的执行处理的牺牲高速缓存。
图6根据一个方面,示出了多个处理器簇400、402、404、406、408,它们包括不同级别的可用的共享高速缓冲存储器460、462、464、466,如同图4中。在一个方面,可以从处理器簇400、402、404、406、408中重新调度执行处理,以减少执行处理器簇和包含有将被用作牺牲高速缓存的可用共享高速缓冲存储器的处理器簇之间的延迟。图6类似于图4,但与图4不同。如图4中所示,执行处理器簇是处理器簇400,在图6中,将执行处理重新调度到处理器簇406,使得在该例子中,其是执行处理器簇406。此外,在该例子中,针对图4中的处理器簇406所调度的处理,被重新调度到处理器簇400,使得处理器簇400现在包括可用的共享高速缓冲存储器464(其可以等同于图4的可用的共享高速缓冲存储器464)。在该例子中,执行处理器簇406不再包括可用的共享高速缓冲存储器464。
如本文所进一步描述的,可以将执行处理从图4中的一个执行处理器簇400,重新调度到新的执行处理器簇406。这样做可以减少在执行该执行处理时的延迟,这是由于执行处理器簇406可能更接近于构成牺牲高速缓存的共享高速缓冲存储器460、462、464、466。在该例子中,牺牲高速缓存可以包括处理器簇408中的共享高速缓冲存储器458的可用的共享高速缓冲存储器466。可以根据本文所描述的用于选择共享高速缓冲存储器作为牺牲高速缓存的一部分的任何方面,选择共享高速缓冲存储器458以用作牺牲高速缓存。在一个方面,可以基于共享高速缓冲存储器458包含最多可用的共享高速缓冲存储器466来选择共享高速缓冲存储器458。由于在包含可用的共享高速缓冲存储器466的处理器簇408和处理器簇406之间的延迟最低(例如,基于邻近性),因此可以将处理器簇406选择成执行处理器簇406。
图7示出了存储器延迟对比可用的共享存储器高速缓存大小的图700,其包括相对于执行处理器簇406的处理器簇400、402、404、408的标绘点502、504、508、1402。每一个标绘点502、504、508、702与图6中的处理器簇400、402、404、408中的一个相关(即,标绘点0与处理器簇0相关,标绘点1与处理器簇1相关,标绘点2与处理器簇2相关,并且标绘点4与处理器簇4相关)。图1400与可用的共享存储器高速缓存大小和图6中表达的距离/延迟相关。图7还是图5的变型,其示出了重新调度执行处理之前,标绘点508指示处理器簇408包含最多可用的共享高速缓冲存储器466。如上面结合图6所讨论的,由于处理器簇408包含最多可用的共享高速缓冲存储器466,因此将执行处理从处理器簇402重新调度到处理器簇406。对执行处理进行重新调度,以利用最大量的可用的共享高速缓冲存储器466,并且在使用可用的共享高速缓冲存储器466作为牺牲高速缓存时减少延迟。作为将执行处理重新调度到现有的执行处理器簇406的结果,图700示出了与图5相比的处理器簇402、404、408的延迟的改变,并且包括代替执行处理器簇406的处理器簇400。现在,图700使用标绘点508示出了:虽然处理器簇408仍然具有最高可用的共享高速缓冲存储器466,但其现在还具有相对于执行处理器簇406的最低延迟。
图8根据一个方面,示出了多个处理器簇400、402、404、406、408,它们包括不同级别的可用的共享高速缓冲存储器460、462、464、466,如同图4和图6中。在一个方面,可以从处理器簇400、402、404、406、408中重新调度不同于执行处理的处理,以减少执行处理器簇和包含有将被用作牺牲高速缓存的可用共享高速缓冲存储器的处理器簇之间的延迟。不是或者除了重新调度执行处理,图8中的例子示出了:重新调度更接近执行处理的另一个处理,以增加该可用的共享高速缓冲存储器用作具有较低延迟的牺牲高速缓存。在图6中,将执行处理调度到执行处理器簇406,并且将可用的共享高速缓冲存储器466用作牺牲高速缓存,其在图8中还执行。可以识别尚未成为牺牲高速缓存的一部分的最高可用的共享高速缓冲存储器,以将其添加到牺牲高速缓存中。在图6的例子中,尚未成为牺牲高速缓存的一部分的最高可用的共享高速缓冲存储器,是处理器簇400的可用的共享高速缓冲存储器464。为了将最高可用的共享高速缓冲存储器464增加到牺牲高速缓存中,同时减少在使用可用的共享高速缓冲存储器464时的延迟,可以将处理器簇400的处理重新调度到具有用于执行处理器簇406的更低延迟的处理器簇。
在图6的例子中,与处理器簇400相比,处理器簇402和404在位置上更接近执行处理器簇406,或者与执行处理器簇406具有更低的延迟。因此,与处理器簇402相比,处理器簇404甚至更接近/具有更低的延迟,故可以将处理器簇400的处理重新调度到处理器簇404。转而,可以将已经针对处理器簇404调度的任何处理重新调度到另一个处理器簇(例如,处理器簇400)。在重新调度处理器簇400和404的处理时,每个处理器簇可以结束于它们相关联的重新调度的处理的可用的高速缓冲存储器空间462、464。因此,在重新调度了这些处理之后,可以在更接近执行处理器406的处理器簇404上,发现更大的可用的高速缓冲存储器空间464。现在,执行处理可以将可用的高速缓冲存储器空间464用作与当其在处理器簇400上相比,具有更低延迟的牺牲高速缓存的至少一部分。
图9示出了存储器延迟对比可用的共享存储器高速缓存大小的图900,其包括相对于执行处理器簇406的处理器簇400、402、404、408的标绘点502、504、508、702。每一个标绘点502、504、508、702与图6中的处理器簇400、402、404、408中的一个相关(即,标绘点0与处理器簇0相关,标绘点1与处理器簇1相关,标绘点2与处理器簇2相关,并且标绘点4与处理器簇4相关)。图900与可用的共享存储器高速缓存大小和图8中表达的距离/延迟相关。图9还是图7的变型,其示出了重新调度与处理器簇400和404相关联的处理之前的标绘点504、702。如上面结合图6所讨论的,由于处理器簇400包含最多可用的共享高速缓冲存储器464(其并不是牺牲高速缓存的一部分),因此将针对处理器簇400调度的处理重新调度到处理器簇404。将该处理重新调度到处理器簇404,以利用最大量的可用的共享高速缓冲存储器464,并且在使用可用的共享高速缓冲存储器464作为牺牲高速缓存时减少延迟。作为将该处理重新调度到处理器簇404的结果,图900示出了与图6相比的可用的共享高速缓冲存储器空间的量的改变,以及处理器簇400、404的延迟的改变。现在,图900使用标绘点504示出了:处理器簇404现在具有用于增加到牺牲高速缓存的最高可用的共享高速缓冲存储器466,并且其具有相对于执行处理器簇406的更低延迟。
图10是示出了用于实现选择远程可用的共享高速缓冲存储器作为牺牲高速缓存的方面方法1000。可以使用软件、通用或专用硬件(例如,处理器)或者软件和硬件的组合,在计算设备中执行方法1000。在方框1002中,计算设备可以识别具有可用的共享高速缓冲存储器空间的远程共享高速缓冲存储器,以用作牺牲高速缓存。这种对远程共享高速缓冲存储器的识别可以包括:由计算设备判断或者确定有多少可用的共享高速缓冲存储器空间与远程共享高速缓冲存储器相关联。这可以通过以下方式来完成:处理器监测远程共享高速缓冲存储器的命中和/或未命中比率,或者在配置为保持该信息的数据结构(例如,表)中检查可用的地址空间。远程共享高速缓冲存储器是否适合于用作牺牲高速缓存,可以取决于其可用的共享高速缓冲存储器空间的量是否超过门限。
在方框1004中,计算设备可以获得所识别的远程共享高速缓冲存储器的与该远程共享高速缓冲存储器的可用共享高速缓冲存储器空间的量有关的数据。在方框1006中,计算设备可以根据远程共享高速缓冲存储器的可用的共享高速缓冲存储器空间的量,确定将哪些远程共享高速缓冲存储器用作牺牲高速缓存。该确定可以是基于对于所识别的远程共享高速缓存的所获得数据的比较。在一个方面,对所获得数据的比较可以包括:将一个远程共享高速缓冲存储器的所获得数据与另一个的所获得数据或者门限进行比较,以选择或者拒绝该远程共享高速缓冲存储器作为牺牲高速缓存。在一个方面,对所获得数据的比较可以包括对一个远程共享高速缓冲存储器的所获得数据的比较,其可以包括使用所获得的数据进行计算,以确定用于该比较的值。
在方框1008处,计算设备可以选择远程共享高速缓冲存储器中的一个或多个,以用作牺牲高速缓存。选择远程共享高速缓冲存储器来用作牺牲高速缓存,可以源自于在方框1006中的比较的有利结果。在方框1010中,计算设备可以使用所选定的远程共享高速缓冲存储器作为牺牲高速缓存,以便执行处理器簇执行所述执行处理。
图11示出了用于实现将执行处理调度到执行处理器簇,以利用牺牲高速缓存的减少的延迟的方面方法1100。可以使用软件、通用或专用硬件(例如,处理器)或者软件和硬件的组合,在计算设备中执行方法1100。在一个方面,可以将方法1100连同方框1002、1004、1006、1008进行一起实现,以选择将用于牺牲高速缓存的远程共享高速缓冲存储器,这可能影响用于调度执行处理的处理器簇的选择。在一个方面,该执行处理可以包括较高的高速缓冲存储器需求。方法1100可以使用方框1102来实现,其中在方框1102处,计算设备可以确定具有最高量的可用共享高速缓冲存储器空间的远程共享高速缓冲存储器。如本文所描述的,远程共享高速缓冲存储器包括尚未成为牺牲高速缓存的一部分的远程共享高速缓冲存储器,其中,计算设备可以从该远程共享高速缓冲存储器中确定最大量的可用共享高速缓冲存储器。
该远程共享高速缓冲存储器可能远离被调度执行所述执行处理的处理器簇,并且由于被调度给有关的处理器簇的处理的低高速缓冲存储器要求,因而该远程共享高速缓冲存储器可以具有可用的共享高速缓冲存储器。具有最高量的可用的共享高速缓冲存储器空间的远程共享高速缓存,可以与被调度为执行具有(被调度到任何其它处理器簇的任何处理的)最低高速缓冲存储器要求的处理的处理器簇相关联。
确定包括有最多可用的共享高速缓冲存储器空间的远程共享高速缓冲存储器可以包括:判断或者确定有多少可用的共享高速缓冲存储器空间与远程共享高速缓冲存储器相关联。这可以通过监测远程共享高速缓冲存储器的命中和/或未命中比率,或者在配置为保持该信息的数据结构(例如,表)中检查可用的地址空间来完成。远程共享高速缓冲存储器是否适合于用作牺牲高速缓存,可以取决于其可用的共享高速缓冲存储器空间的量是否超过门限。在方框1104中,计算设备可以选择具有最高量的可用的共享高速缓冲存储器空间的远程共享高速缓冲存储器来用作牺牲高速缓存。
在方框1106中,计算设备可以确定关于所选定的远程共享高速缓冲存储器或者关于包含所选定的远程共享高速缓冲存储器的处理器簇,具有最低延迟的处理器簇。在一个方面,处理器簇之间的延迟可以在一段时间上进行测量,基于历史信息进行计算,和/或从存储设备中获取。从存储设备获取的处理器簇之间的延迟,可以在这些组件的设计和构造阶段期间进行提供,或者存储先前测量的延迟数据。可以基于对处理器簇和包含所选定的远程共享高速缓冲存储器的处理器簇之间的延迟的比较的有利结果,来确定关于所选定的远程共享高速缓冲存储器具有最低延迟的处理器簇。在方框1108中,计算设备可以选择与所选定的远程共享高速缓冲存储器具有最低延迟的处理器簇来作为执行处理器簇。
在判断框1110中,计算设备可以判断执行处理器簇是否具有调度的处理。响应于确定执行处理器簇具有调度的处理(即,判断框1110=“是”),在方框1112中,计算设备可以将执行处理器簇的当前处理调度到不同于执行处理器簇以及与所选定的远程共享高速缓冲存储器相对应的处理器簇的处理器簇。为了将执行处理调度到执行处理器簇,计算设备可以优选对于针对执行处理器簇所调度的任何现有的处理进行重新调度,以便为执行处理释放执行处理器簇。这种重新调度并不是必要的,特别是当现有处理接近完成时,但是其可以避免在运行执行处理时的延迟。因此,计算设备可以将现有处理重新调度到不是执行处理器簇的另一个处理器簇。此外,计算设备还可以将现有处理重新调度到不是包含所选定的远程共享高速缓冲存储器的处理器簇的另一个处理器簇。可能已经确定在执行处理器簇上调度的现有处理不允许最高量的可用的共享高速缓冲存储器,这是由于可能已经确定另一个处理器簇包含最高量的可用的共享高速缓冲存储器。将现有处理重新调度到包含最高量的可用的共享高速缓冲存储器的处理器簇,可以减少该处理器簇的可用的共享高速缓冲存储器空间,使得其不再具有最高可用的共享高速缓冲存储器空间。因此,可以优选的是避免将执行处理器簇的现有处理重新调度到包含最高量的可用共享高速缓冲存储器的处理器簇。可以将现有的处理重新调度到任何其它处理器簇。
在方框1114中,计算设备可以调度所述执行处理,以便由执行处理器簇进行执行。作为执行处理的这种调度的结果,执行处理现在可以由使用牺牲高速缓存(其在与执行处理器簇具有最低延迟的处理器簇上,包括最高可用的共享高速缓冲存储器空间)的执行处理器簇来执行。在方框1010中,计算设备可以使用所选定的远程共享高速缓冲存储器作为牺牲高速缓存,以便由执行处理器簇执行所述执行处理。
响应于确定执行处理器簇不具有调度的处理(即,判断框1110=“否”),在方框1114中,计算设备可以调度所述执行处理以便由执行处理器簇进行执行。
图12是示出用于实现将较低需求处理调度到用于执行处理的处理器簇,以利用牺牲高速缓存的减少的延迟和更高可用性的方面方法的处理流程图。可以使用软件、通用或专用硬件(例如,处理器)或者软件和硬件的组合,在计算设备中执行方法1200。在一个方面,可以可选地将方法1200连同方法1100进行一起实现,从方框1114处继续,将执行处理调度到执行处理器簇,以便利用牺牲高速缓存的减小的时延。在一个方面,可以将方法1200实现成单独的方法。在方框1202中,计算设备可以确定不同于与选定的远程共享高速缓冲存储器相对应的任何处理器簇的、与执行处理器簇具有最低延迟的处理器簇。在一个方面,处理器簇之间的延迟可以在一段时间上进行测量,基于历史信息进行计算,和/或从存储设备中获取。从存储设备获取的处理器簇之间的延迟,可以在这些组件的设计和构造阶段期间进行提供,或者存储先前测量的延迟数据。可以基于对处理器簇和包含所选定的远程共享高速缓冲存储器的执行处理器簇之间的延迟的比较的有利结果,来确定关于执行处理器簇具有最低延迟的处理器簇。在一个方面,方法1200可以通过将处理器簇的可用的共享高速缓冲存储器增加到牺牲高速缓存,来有助于扩展牺牲高速缓存。因此,在处理器簇的选定的远程共享高速缓冲存储器已经属于牺牲高速缓存的方面,可能优选的是不选择该处理器簇,以避免替换牺牲高速缓存中的其选定的远程共享高速缓冲存储器。在方框1204中,计算设备可以选择与最低延迟处理器簇相对应的远程共享高速缓存,以便用于牺牲高速缓存。
在判断框1206中,计算设备可以判断最低延迟处理器簇是否具有现有调度的处理。响应于确定最低延迟处理器簇具有现有调度的处理(即,判断框1206=“是”),在方框1208中,计算设备可以确定相应的最低延迟处理器簇的可用的远程共享高速缓冲存储器空间。这可以通过监测远程共享高速缓冲存储器的命中和/或未命中比率,或者在配置为保持该信息的数据结构(例如,表)中检查可用的地址空间来完成。在判断框1210中,计算设备可以判断另一个处理器簇是否比最低延迟处理器簇具有更多可用的远程共享高速缓冲存储器。在一个方面,该判断可以排除执行处理器簇,以及与牺牲高速缓存中已经包括的可用的共享高速缓冲存储器相对应的任何潜在处理器簇。如本文所讨论的,可以通过监测远程共享高速缓冲存储器的命中和/或未命中比率,或者通过在配置为保持该信息的数据结构(例如,表)中检查可用的地址空间,来确定任何处理器簇的可用共享高速缓冲存储器的大小。更大量的可用远程共享高速缓冲存储器的确定可以是基于:对处理器簇的可用远程共享高速缓冲存储器的比较的有利结果。
响应于确定另一个处理器簇比最低延迟处理器簇具有更多可用的远程共享高速缓冲存储器(即,判断框1210=“是”),在方框1212中,计算设备可以将最低延迟处理器簇的处理,调度到具有更多可用的远程共享高速缓冲存储器的该处理器簇。在方框1214中,计算设备可以将具有更多可用的远程共享高速缓冲存储器的该处理器簇的处理,调度到最低延迟处理器簇。在将最低延迟处理器簇和具有更多可用的远程共享高速缓冲存储器的处理器簇的处理进行彼此之间调度时,最低延迟处理器簇成为具有更多可用的远程共享高速缓冲存储器的处理器簇。因此,最大可用的远程共享高速缓冲存储器现在与最低延迟处理器簇相对应。在方框1010中,计算设备可以使用所选定的远程共享高速缓冲存储器作为牺牲高速缓存,以便由执行处理器簇执行所述执行处理。
响应于确定最低延迟处理器簇不具有现有调度的处理(即,判断框1206=“否”),在方框1010中,计算设备可以使用所选定的远程共享高速缓冲存储器作为牺牲高速缓存,以便由执行处理器簇执行所述执行处理。类似地,响应于确定没有其它处理器簇比最低延迟处理器簇具有更多可用的远程共享高速缓冲存储器(即,判断框1210=“否”),在方框1010中,计算设备可以使用所选定的远程共享高速缓冲存储器作为牺牲高速缓存,以便由执行处理器簇执行所述执行处理。
可以在各种各样的计算系统中实现各个方面(其包括但不限于上面参照图1到图12所讨论的方面),其中该计算系统可以包括在图13中示出的适合于结合各个方面使用的示例性移动计算设备。移动计算设备1300可以包括耦合到触摸屏控制器1304和内部存储器1306的处理器1302。处理器1302可以是被设计为实现通用或特定处理任务的一个或多个多核集成电路。内部存储器1306可以是易失性存储器或非易失性存储器,还可以是安全和/或加密存储器,或者非安全和/或非加密存储器、或者其任意组合。可以利用的存储器类型的例子,包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1304和处理器1302还可以耦合到触摸屏面板1312,例如,电阻式感应触摸屏、电容感应触摸屏、红外线感应触摸屏等等。另外,计算设备1300的显示器并不需要具有触摸屏能力。
移动计算设备1300还可以具有用于发送和接收通信的一个或多个无线信号收发机1308(例如,Peanut、Bluetooth、Zigbee、Wi-Fi、RF无线电装置)和天线1310,它们彼此之间相耦合和/或耦合到处理器1302。收发机1308和天线1310可以结合上面所提及的电路来使用,以实现各种无线传输协议栈和接口。移动计算设备1300可以包括蜂窝网络无线调制解调器芯片1316,后者经由蜂窝网络来实现通信并耦合到处理器。
移动计算设备1300可以包括耦合到处理器1302的外围设备连接接口1318。外围设备连接接口1318可以被单独地配置为接受一种类型的连接,或者被配置为接受多种类型的物理和通信连接、共同或专有连接(例如,USB、火线、Thunderbolt或PCIe)。此外,外围设备连接接口1318还可以耦合到类似配置的外围设备连接端口(没有示出)。
此外,移动计算设备1300还可以包括用于提供音频输出的扬声器1314。此外,移动计算设备1300还可以包括使用塑料、金属、或材料的组合所构成的壳体1320,以包含本文所讨论的所有部件或者一些部件。移动计算设备1300可以包括耦合到处理器1302的电源1322,例如一次性或可充电电池。此外,该可充电电池还可以耦合到外围设备连接端口,以便从移动计算设备1300之外的源接收充电电流。此外,移动计算设备1300还可以包括用于接收用户输入的物理按键1324。此外,移动计算设备1300还可以包括用于打开和关闭移动计算设备1300的电源按键1326。
各个方面(其包括但不限于上面参照图1到图12所讨论的方面)可以实现在包括多种各样的移动计算设备(例如,图14中所示出的膝上型计算机1400)的各种各样的计算系统中。很多膝上型计算机包括触摸板触摸接口1417,后者服务成该计算机的指向设备,故可以接收拖动、滚动和滑动手势(其类似于上面所描述的在装备有触摸屏显示器的计算设备上所实现的那些手势)。通常,膝上型计算机1400包括耦合到易失性存储器1412和大容量非易失性存储器(例如,闪存的硬盘驱动器1413)的处理器1411。另外,计算机1400可以具有用于发送和接收电磁辐射的一付或多付天线1408,这些天线1408可以连接到无线数据链路和/或耦合到处理器1411的蜂窝电话收发机1406。此外,计算机1400还可以包括耦合到处理器1411的软盘驱动器1414和压缩光盘(CD)驱动器1415。在笔记本配置中,计算机壳体包括全部都耦合到处理器1411的触摸板1417、键盘1418和显示器1419。该计算设备的其它配置可以包括(例如,经由USB输入)耦合到处理器的计算机鼠标或者跟踪球,如公众所知道的,这些部件也可以结合各个方面来使用。
各个方面(其包括但不限于上面参照图1到图12所讨论的方面)可以实现在多种多样的计算系统中(其可以包括各种各样的商业可用的服务器中的任何一种,以便对服务器高速缓冲存储器中的数据进行压缩)。图15示出了一种示例性服务器1500。通常,这种服务器1500包括耦合到易失性存储器1502和大容量非易失性存储器(例如,磁盘驱动器1504)的一个或多个多核处理器组件1501。如图15中所示,可以通过将多核处理器组件1501插入到组装的架中,来添加到服务器1500中。此外,服务器1500还可以包括耦合到处理器1501的软盘驱动器、压缩光盘(CD)或者DVD光盘驱动器1506。此外,服务器1500还可以包括耦合到多核处理器组件1501的网络接入端口1503,以便与网络1505(例如,耦合到其它广播系统计算机和服务器的局域网、互联网、公众交换电话网、和/或蜂窝数据网络(如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其它类型的蜂窝数据网络))建立网络接口连接。
用于在可编程处理器上运行以执行本文的各个方面的操作的计算机程序代码或“程序代码”,可以利用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言来编写,或者利用各种其它编程语言来编写。如本申请中所使用的计算机可读存储介质上所存储的程序代码或程序,可以指代其格式是处理器可理解的机器语言代码(例如,目标代码)。
将很多移动计算设备操作系统内核组织到用户空间(非特权代码运行的空间)和内核空间(特权代码运行的空间)。这种分隔在Android和其它通用公共许可证(GPL)环境中具有特别的重要性,其中在这些环境中,作为内核空间的一部分的代码必须是GPL许可的,而在用户空间中运行的代码可以不是GPL许可的。应当理解的是,这里所讨论的各种软件组件/模块可以实现在内核空间中,也可以实现在用户空间中,除非另外明确指出。
上述的方法描述和处理流程图仅仅是用作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个方面的步骤。如本领域普通技术人员所应当理解的,可以以任何顺序来执行上述的方面中的操作顺序。诸如“其后”、“转而”、“接着”等等之类的词语,并不旨在限制这些操作的顺序;这些词语仅仅只是用于引导读者遍历该方法的描述。此外,任何对权利要求元素的单数引用(例如,使用冠词“一个(a)”、“某个(an)”或者“该(the)”),不应被解释为将该元素限制为单数形式。
结合本文的各个方面描述的各种示例性的逻辑框、模块、电路和算法操作均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上面对各种示例性的部件、框、模块、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本发明的保护范围。
用于执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合,可以用来实现或执行结合本文所公开的方面描述的用于实现各种示例性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、若干微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。替代地,一些操作或方法可以由特定于给定的功能的电路来执行。
在一个或多个方面,本文所述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储成非临时性计算机可读介质或者非临时性处理器可读介质上的一个或多个指令或代码。本文所公开的方法或算法的操作,可以体现在处理器可执行软件模块中,后者可以位于非临时性计算机可读存储介质或处理器可读存储介质上。非临时性计算机可读或处理器可读存储介质可以是计算机或处理器能够存取的任何存储介质。举例而言,但非做出限制,这种非临时性计算机可读介质或者处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非临时性计算机可读介质和处理器可读介质的保护范围之内。另外,一种方法或算法的操作可以作为一个代码和/或指令集或者其任意组合,位于非临时性处理器可读介质和/或计算机可读介质上,其中该非临时性处理器可读介质和/或计算机可读介质可以并入到计算机程序产品中。
为使本领域任何普通技术人员能够实现或者使用本发明,上面围绕所公开的方面进行了描述。对于本领域普通技术人员来说,对这些方面的各种修改是显而易见的,并且,本文定义的总体原理也可以在不脱离本发明的精神或保护范围的基础上应用于其它方面。因此,本发明并不限于本文所示出的方面,而是与所附权利要求书和本文公开的原理和新颖性特征的最广范围相一致。
Claims (20)
1.一种用于将执行处理调度到执行处理器簇以利用牺牲高速缓存的减少的延迟的方法,包括:
确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器;
确定与调度有所述执行处理的第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇;
基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇;以及
将所述可用的共享高速缓冲存储器空间作为用于所述执行处理的所述牺牲高速缓存进行使用。
2.根据权利要求1所述的方法,其中:
确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器包括:确定所述第一处理器簇以及具有最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器;
确定与调度有所述执行处理的第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇包括:确定具有到所述第一远程共享高速缓冲存储器的最低延迟的所述第二处理器簇;以及
基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇包括:基于所述第二处理器簇与具有所述最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器具有所述最低延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇。
3.根据权利要求1所述的方法,还包括:
确定是否针对所述第二处理器簇调度了处理;以及
响应于确定针对所述第二处理器簇调度了所述处理,将所述处理调度到作为第三处理器簇的所述第一执行处理器簇。
4.根据权利要求1所述的方法,还包括:
确定第三处理器簇以及具有最高量的可用共享高速缓冲存储器空间的第二远程共享高速缓冲存储器,其中,所述第二远程共享高速缓冲存储器包括不同于所述第一远程共享高速缓冲存储器的任何远程共享高速缓冲存储器;
确定具有到所述第二执行处理器簇的最低延迟的第四处理器簇,其中,所述第四处理器簇包括不同于所述第一处理器簇的任何处理器簇;
将针对所述第三处理器簇调度的处理调度到所述第四处理器簇;以及
使用所述最高量的可用共享高速缓冲存储器空间,作为用于所述执行处理的所述牺牲高速缓存的一部分。
5.根据权利要求4所述的方法,还包括:
确定是否针对所述第四处理器簇调度了处理;以及
响应于确定针对所述第四处理器簇调度了所述处理,将所述处理调度到所述第三处理器簇。
6.一种计算设备,包括:
彼此之间通信连接的多个处理器簇;
所述多个处理器簇中的调度有执行处理的第一执行处理器簇;
通信地连接到所述多个处理器中的至少一个处理器的多个共享高速缓冲存储器;以及
通信地连接到所述多个处理器簇的处理器,并且其配置有处理器可执行指令以执行包括以下操作在内的操作:
确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器;
确定与调度有所述执行处理的所述第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇;
基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇;以及
将所述可用的共享高速缓冲存储器空间作为用于所述执行处理的牺牲高速缓存进行使用。
7.根据权利要求6所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行操作,使得:
确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器包括:确定所述第一处理器簇以及具有最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器;
确定与调度有所述执行处理的所述第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇包括:确定具有到所述第一远程共享高速缓冲存储器的最低延迟的所述第二处理器簇;以及
基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇包括:基于所述第二处理器簇与具有所述最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器具有所述最低延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇。
8.根据权利要求6所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行包括以下操作在内的操作:
确定是否针对所述第二处理器簇调度了处理;以及
响应于确定针对所述第二处理器簇调度了所述处理,将所述处理调度到作为第三处理器簇的所述第一执行处理器簇。
9.根据权利要求6所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行包括以下操作在内的操作:
确定第三处理器簇以及具有最高量的可用共享高速缓冲存储器空间的第二远程共享高速缓冲存储器,其中,所述第二远程共享高速缓冲存储器包括不同于所述第一远程共享高速缓冲存储器的任何远程共享高速缓冲存储器;
确定具有到所述第二执行处理器簇的最低延迟的第四处理器簇,其中,所述第四处理器簇包括不同于所述第一处理器簇的任何处理器簇;
将针对所述第三处理器簇调度的处理调度到所述第四处理器簇;以及
使用所述最高量的可用共享高速缓冲存储器空间,作为用于所述执行处理的所述牺牲高速缓存的一部分。
10.根据权利要求9所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行包括以下操作在内的操作:
确定是否针对所述第四处理器簇调度了处理;以及
响应于确定针对所述第四处理器簇调度了所述处理,将所述处理调度到所述第三处理器簇。
11.一种计算设备,包括:
用于确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器的单元;
用于确定与调度有执行处理的第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇的单元;
用于基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇的单元;以及
用于将所述可用的共享高速缓冲存储器空间作为用于所述执行处理的牺牲高速缓存进行使用的单元。
12.根据权利要求11所述的计算设备,其中:
用于确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器的单元包括:用于确定所述第一处理器簇以及具有最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器的单元;
用于确定与调度有所述执行处理的第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇的单元包括:用于确定具有到所述第一远程共享高速缓冲存储器的最低延迟的所述第二处理器簇的单元;以及
用于基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇的单元包括:用于基于所述第二处理器簇与具有所述最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器具有所述最低延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇的单元。
13.根据权利要求11所述的计算设备,还包括:
用于确定是否针对所述第二处理器簇调度了处理的单元;以及
用于响应于确定针对所述第二处理器簇调度了所述处理,将所述处理调度到作为第三处理器簇的所述第一执行处理器簇的单元。
14.根据权利要求11所述的计算设备,还包括:
用于确定第三处理器簇以及具有最高量的可用共享高速缓冲存储器空间的第二远程共享高速缓冲存储器的单元,其中,所述第二远程共享高速缓冲存储器包括不同于所述第一远程共享高速缓冲存储器的任何远程共享高速缓冲存储器的单元;
用于确定具有到所述第二执行处理器簇的最低延迟的第四处理器簇的单元,其中,所述第四处理器簇包括不同于所述第一处理器簇的任何处理器簇;
用于将针对所述第三处理器簇调度的处理调度到所述第四处理器簇的单元;以及
用于使用所述最高量的可用共享高速缓冲存储器空间,作为用于所述执行处理的所述牺牲高速缓存的一部分的单元。
15.根据权利要求14所述的计算设备,还包括:
用于确定是否针对所述第四处理器簇调度了处理的单元;以及
用于响应于确定针对所述第四处理器簇调度了所述处理,将所述处理调度到所述第三处理器簇的单元。
16.一种其上存储有处理器可执行指令的非临时性处理器可读介质,其中,所述处理器可执行指令被配置为使处理器执行包括以下操作在内的操作:
确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器;
确定与调度有执行处理调度的第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇;
基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇;以及
将所述可用的共享高速缓冲存储器空间作为用于所述执行处理的牺牲高速缓存进行使用。
17.根据权利要求16所述的非临时性处理器可读介质,其中,所述存储的处理器可执行指令被配置为使所述处理器执行操作,使得:
确定第一处理器簇以及具有可用的共享高速缓冲存储器空间的第一远程共享高速缓冲存储器包括:确定所述第一处理器簇以及具有最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器;
确定与调度有所述执行处理的第一执行处理器簇相比,具有到所述第一远程共享高速缓冲存储器的更低延迟的第二处理器簇包括:确定具有到所述第一远程共享高速缓冲存储器的最低延迟的所述第二处理器簇;以及
基于所述可用的共享高速缓冲存储器空间的大小以及所述第二处理器簇到所述第一远程共享高速缓冲存储器的所述延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇包括:基于所述第二处理器簇与具有所述最高量的可用共享高速缓冲存储器空间的所述第一远程共享高速缓冲存储器具有所述最低延迟,将所述执行处理调度到作为第二执行处理器簇的所述第二处理器簇。
18.根据权利要求16所述的非临时性处理器可读介质,其中,所述存储的处理器可执行指令被配置为使所述处理器执行还包括以下操作在内的操作:
确定是否针对所述第二处理器簇调度了处理;以及
响应于确定针对所述第二处理器簇调度了所述处理,将所述处理调度到作为第三处理器簇的所述第一执行处理器簇。
19.根据权利要求16所述的非临时性处理器可读介质,其中,所述存储的处理器可执行指令被配置为使所述处理器执行还包括以下操作在内的操作:
确定第三处理器簇以及具有最高量的可用共享高速缓冲存储器空间的第二远程共享高速缓冲存储器,其中,所述第二远程共享高速缓冲存储器包括不同于所述第一远程共享高速缓冲存储器的任何远程共享高速缓冲存储器;
确定具有到所述第二执行处理器簇的最低延迟的第四处理器簇,其中,所述第四处理器簇包括不同于所述第一处理器簇的任何处理器簇;
将针对所述第三处理器簇调度的处理调度到所述第四处理器簇;以及
使用所述最高量的可用共享高速缓冲存储器空间,作为用于所述执行处理的所述牺牲高速缓存的一部分。
20.根据权利要求19所述的非临时性处理器可读介质,其中,所述存储的处理器可执行指令被配置为使所述处理器执行还包括以下操作在内的操作:
确定是否针对所述第四处理器簇调度了处理;以及
响应于确定针对所述第四处理器簇调度了所述处理,将所述处理调度到所述第三处理器簇。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/623,554 | 2015-02-17 | ||
US14/623,554 US9582329B2 (en) | 2015-02-17 | 2015-02-17 | Process scheduling to improve victim cache mode |
PCT/US2016/012023 WO2016133598A1 (en) | 2015-02-17 | 2016-01-04 | Process scheduling to improve victim cache mode |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107223239A true CN107223239A (zh) | 2017-09-29 |
Family
ID=55398384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680010436.6A Pending CN107223239A (zh) | 2015-02-17 | 2016-01-04 | 用于改善牺牲(Victim)高速缓存模式的处理调度 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9582329B2 (zh) |
EP (1) | EP3259670A1 (zh) |
JP (1) | JP2018511111A (zh) |
CN (1) | CN107223239A (zh) |
WO (1) | WO2016133598A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815168A (zh) * | 2017-11-20 | 2019-05-28 | 三星电子株式会社 | 用于少标记缓冲器实现的系统和方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10664751B2 (en) * | 2016-12-01 | 2020-05-26 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either cache memory or neural network unit memory |
CN107870871B (zh) * | 2016-09-23 | 2021-08-20 | 华为技术有限公司 | 分配缓存的方法和装置 |
US10430706B2 (en) * | 2016-12-01 | 2019-10-01 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either last level cache slice or neural network unit memory |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030088608A1 (en) * | 2001-11-07 | 2003-05-08 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
WO2011070506A2 (en) * | 2009-12-10 | 2011-06-16 | International Business Machines Corporation | Computer-implemented method of processing resource management |
US20140007114A1 (en) * | 2012-06-29 | 2014-01-02 | Ren Wang | Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring |
US20140189239A1 (en) * | 2012-12-28 | 2014-07-03 | Herbert H. Hum | Processors having virtually clustered cores and cache slices |
CN104050043A (zh) * | 2014-06-17 | 2014-09-17 | 华为技术有限公司 | 基于共享缓存感知的虚拟机调度方法和装置 |
CN104281495A (zh) * | 2014-10-13 | 2015-01-14 | 湖南农业大学 | 多核处理器共享高速缓存任务调度方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6769017B1 (en) * | 2000-03-13 | 2004-07-27 | Hewlett-Packard Development Company, L.P. | Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems |
US7143412B2 (en) | 2002-07-25 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimizing performance in a multi-processing system |
US7093258B1 (en) | 2002-07-30 | 2006-08-15 | Unisys Corporation | Method and system for managing distribution of computer-executable program threads between central processing units in a multi-central processing unit computer system |
US7496712B1 (en) | 2005-06-17 | 2009-02-24 | Sun Microsystems, Inc. | Proximity communication-based off-chip cache memory architectures |
WO2008077267A1 (en) * | 2006-12-22 | 2008-07-03 | Intel Corporation | Locality optimization in multiprocessor systems |
US8069308B2 (en) | 2008-02-13 | 2011-11-29 | Honeywell International Inc. | Cache pooling for computing systems |
WO2012153200A1 (en) | 2011-05-10 | 2012-11-15 | International Business Machines Corporation | Process grouping for improved cache and memory affinity |
-
2015
- 2015-02-17 US US14/623,554 patent/US9582329B2/en not_active Expired - Fee Related
-
2016
- 2016-01-04 WO PCT/US2016/012023 patent/WO2016133598A1/en active Application Filing
- 2016-01-04 JP JP2017542409A patent/JP2018511111A/ja active Pending
- 2016-01-04 EP EP16705320.6A patent/EP3259670A1/en not_active Withdrawn
- 2016-01-04 CN CN201680010436.6A patent/CN107223239A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030088608A1 (en) * | 2001-11-07 | 2003-05-08 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
WO2011070506A2 (en) * | 2009-12-10 | 2011-06-16 | International Business Machines Corporation | Computer-implemented method of processing resource management |
US20140007114A1 (en) * | 2012-06-29 | 2014-01-02 | Ren Wang | Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring |
US20140189239A1 (en) * | 2012-12-28 | 2014-07-03 | Herbert H. Hum | Processors having virtually clustered cores and cache slices |
CN104050043A (zh) * | 2014-06-17 | 2014-09-17 | 华为技术有限公司 | 基于共享缓存感知的虚拟机调度方法和装置 |
CN104281495A (zh) * | 2014-10-13 | 2015-01-14 | 湖南农业大学 | 多核处理器共享高速缓存任务调度方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815168A (zh) * | 2017-11-20 | 2019-05-28 | 三星电子株式会社 | 用于少标记缓冲器实现的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3259670A1 (en) | 2017-12-27 |
US20160239344A1 (en) | 2016-08-18 |
WO2016133598A1 (en) | 2016-08-25 |
JP2018511111A (ja) | 2018-04-19 |
US9582329B2 (en) | 2017-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107636625A (zh) | 用于共享系统高速缓存的虚拟化控制的方法和装置 | |
CN106537361B (zh) | 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置 | |
CN107851066A (zh) | 基于运行时硬件计数器和对应用的离线建立简档的自适应高速缓存架构 | |
CN108139931A (zh) | 通过重映射同步来加速任务子图 | |
CN103324585B (zh) | 分级缓存的处理器中的协作预取处理 | |
CN106575262B (zh) | 用于带宽压缩的补充写入缓存命令的方法和装置 | |
CN108431775A (zh) | 用于高效并行计算的简化的基于任务的运行时的方法 | |
CN107223239A (zh) | 用于改善牺牲(Victim)高速缓存模式的处理调度 | |
CN108139946A (zh) | 用于在冲突存在时进行有效任务调度的方法 | |
CN107223238A (zh) | 选择多群集系统中的可用高速缓存的方法 | |
CN106537360A (zh) | 用于具有动态分区的共享高速缓存的方法和装置 | |
CN106557367A (zh) | 用于为计算资源提供粒度化服务质量的装置、方法和设备 | |
CN104115093A (zh) | 包括多个处理元件之间的功率和性能平衡的用于能效和节能的方法、装置和系统 | |
US20190073305A1 (en) | Reuse Aware Cache Line Insertion And Victim Selection In Large Cache Memory | |
CN105474127B (zh) | 用于多处理器系统的虚拟每处理器定时器 | |
CN102640226A (zh) | 具有内部处理器的存储器及控制存储器存取的方法 | |
US20190087345A1 (en) | Performance By Retaining High Locality Data In Higher Level Cache Memory | |
US20190087344A1 (en) | Reducing Clean Evictions In An Exclusive Cache Memory Hierarchy | |
CN106687937A (zh) | 用于压缩算法的高速缓冲存储体扩展 | |
CN106663059A (zh) | 功率感知填充 | |
US20210200584A1 (en) | Multi-processor system, multi-core processing device, and method of operating the same | |
CN109313478A (zh) | 出于能效在移动装置上进行的唤醒锁感知系统宽作业调度 | |
CN110187832A (zh) | 一种数据操作的方法、设备和系统 | |
CN109690502A (zh) | 使用硬件控制的分离监听目录的相干互连功率降低 | |
US20240036763A1 (en) | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (mac) operations |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170929 |
|
WD01 | Invention patent application deemed withdrawn after publication |