CN109716305B - 实现异步高速缓存维护操作的方法、计算设备以及介质 - Google Patents
实现异步高速缓存维护操作的方法、计算设备以及介质 Download PDFInfo
- Publication number
- CN109716305B CN109716305B CN201780057015.3A CN201780057015A CN109716305B CN 109716305 B CN109716305 B CN 109716305B CN 201780057015 A CN201780057015 A CN 201780057015A CN 109716305 B CN109716305 B CN 109716305B
- Authority
- CN
- China
- Prior art keywords
- maintenance operation
- cache maintenance
- asynchronous cache
- asynchronous
- queued
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/0815—Cache consistency protocols
-
- 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
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
各方面包括用于在计算设备上实现异步高速缓存维护操作的计算设备、装置和由所述装置实现的方法,包括:激活第一异步高速缓存维护操作;确定对高速缓存的存储器访问请求的活动地址是否在第一活动异步高速缓存维护操作的第一地址范围内;以及响应于确定所述活动地址在所述第一地址范围内,将所述第一活动异步高速缓存维护操作进行排队作为修复队列中的第一异步高速缓存维护操作。
Description
背景技术
硬件加速器可以用于帮助中央处理单元(CPU)处理工作负荷。工作负荷通常需要使用来自CPU高速缓存的数据。为了向加速器提供来自CPU高速缓存的数据,需要实现高速缓存维护操作。但是,高速缓存维护操作可能会对处理卸载到加速器的工作负荷的性能具有负面影响。通常,必须在加速器运行之前实现高速缓存清除维护操作,并且必须在加速器运行之后实现高速缓存无效化维护操作。向加速器的小的工作负荷卸载对于提高处理性能越来越重要。这些小的工作负荷卸载可能会因高速缓存维护代价而遭受最大的性能下降。
发明内容
各种公开的方面可以包括用于在计算设备上实现异步高速缓存维护操作的装置和方法。各个方面可以包括:激活第一异步高速缓存维护操作;确定对高速缓存的存储器访问请求的活动地址是否在第一异步高速缓存维护操作的第一地址范围内;以及响应于确定所述活动地址在所述第一地址范围内,将所述第一异步高速缓存维护操作在修复队列中进行排队以作为第一异步高速缓存维护操作。
一些方面还可以包括:确定是否执行排队的第一异步高速缓存维护操作;响应于确定执行所排队的第一异步高速缓存维护操作,从所述修复队列接收排队的第一异步高速缓存维护操作;激活从所述修复队列接收的所述第一异步高速缓存维护操作;执行所述第一异步高速缓存维护操作;以及在完成所述第一异步高速缓存维护操作的执行时,解除分配(deallocate)所述第一异步高速缓存维护操作。
在一些方面,确定是否执行排队的第一异步高速缓存维护操作可以包括:基于以下各项中的一项,来确定是否执行排队的第一异步高速缓存维护操作:经过的时间以及排队的第一异步高速缓存维护操作的第一地址范围中的地址的空闲状态。
在一些方面,执行所述第一异步高速缓存维护操作可以包括:与执行从处理设备卸载的工作负荷并行地执行所述第一异步高速缓存维护操作,所述处理设备具有所述第一异步高速缓存维护操作正在其上进行执行的高速缓存。
一些方面还可以包括:确定针对执行排队的第一异步高速缓存维护操作的阈值是否被超过;以及在所述阈值已被超过的情况下将排队的第一异步高速缓存维护操作转换为同步高速缓存维护操作、屏蔽针对所述第一地址范围的任意存储器访问请求、以及执行所述同步高速缓存维护操作。
在一些方面,将第一异步高速缓存维护操作进行排队可以包括存储异步高速缓存维护操作标签和活动地址。
一些方面还可以包括:激活第二异步高速缓存维护操作;确定对高速缓存的存储器访问请求的活动地址是否在第二异步高速缓存维护操作的第二地址范围内;以及响应于确定所述活动地址在第二地址范围内,将第二异步高速缓存维护操作在所述修复队列中进行排队以作为第二异步高速缓存维护操作。
此外的方面包括计算设备,其具有高速缓存、地址范围检查器、修复队列和高速缓存操作控制单元,该高速缓存操作控制单元被配置为执行上面概述的方法的操作。进一步的方面包括计算设备,其具有用于执行上面概述的方法的功能的单元。进一步的方面包括非暂时性处理器可读存储介质,其上存储有处理器可执行指令,所述处理器可执行指令被配置为使得计算设备的处理设备执行上面概述的方法的操作。
附图说明
并入本文并构成本说明书的一部分的附图示出了各个方面中的示例性方面,并且与上面给出的一般描述和下面给出的详细描述一起用于解释权利要求的特征。
图1是示出适于实现方面的计算设备的组件框图。
图2是示出适于实现方面的示例性多核处理器的组件框图。
图3是示出适于实现方面的具有相干互连的示例性异构计算设备的框图。
图4是示出用于实现方面的异步高速缓存操作系统的示例的框图。
图5是示出用于实现方面的非I/O相干工作负荷处理的示例的信号和过程图。
图6是示出用于实现方面的I/O相干工作负荷处理的示例的信号和过程图。
图7是示出用于实现方面的动态I/O相干工作负荷处理的示例的信号和过程图。
图8是示出用于实现方面的动态I/O相干工作负荷处理的示例的信号和过程图。
图9是示出用于实现方面的具有异步高速缓存维护操作的非I/O相干工作负荷处理的示例的信号和过程图。
图10是示出用于实现方面的具有异步高速缓存维护操作的动态I/O相干工作负荷处理的示例的信号和过程图。
图11是示出根据一方面的用于实现异步高速缓存维护操作的方法的过程流程图。
图12是示出根据一方面的用于实现具有异步高速缓存维护操作的动态I/O相干工作负荷处理的方法的过程流程图。
图13是示出根据一个方面的用于实现具有异步高速缓存维护操作的非I/O相干工作负荷处理和/或动态I/O相干工作负荷处理的方法的过程流程图。
图14是示出适合与各个方面一起使用的示例性移动计算设备的组件框图。
图15是示出适合与各个方面一起使用的示例性移动计算设备的组件框图。
图16是示出适合与各个方面一起使用的示例性服务器的组件框图。
具体实施方式
将参考附图来详细描述各个方面。在可能情况下,在整个附图中将使用相同的附图标记来表示相同或相似的部件。对特定示例和实现方式的引用是出于说明性目的,而不旨在限制权利要求书的保护范围。
各个方面可以包括用于异步高速缓存维护操作的方法以及实现这种方法的系统和设备,异步高速缓存维护操作允许在方便的时间并且当高速缓存仍在使用时执行高速缓存维护操作,以便减少在处理工作负荷时的延迟。多个处理器可以是多核处理器。各个方面的装置和方法可以包括:检查用于异步高速缓存维护操作的高速缓存存储器地址相对于高速缓存中的活动地址,将与高速缓存中的活动地址匹配的异步高速缓存维护操作放置在队列中,以及当高速缓存仍在使用时的方便的时间实现在队列中排队的异步高速缓存维护操作。
术语“计算设备”和“移动计算设备”在本文中可互换使用,以指代以下各项中的任意一项或全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、可转换笔记本计算机/平板计算机(二合一计算机)、智能本、超极本、上网本、掌上计算机、无线电子邮件接收器、支持多媒体互联网的蜂窝电话、移动游戏机、无线游戏控制器、以及包括存储器和可编程处理器的类似的个人电子设备。术语“计算设备”还可以指固定计算设备,其包括个人计算机、台式计算机、一体式计算机、工作站、超级计算机、大型计算机、嵌入式计算机、服务器、家庭影院计算机和游戏控制台。
高速缓存存储器的主控(master)(例如,CPU或硬件加速器)可以针对高速缓存的指定范围的地址发出针对异步高速缓存维护操作的命令。控制单元可以接收并存储多达第一数量“N”个异步高速缓存维护操作指令及相关联的高速缓存地址范围。控制单元可以针对不同的高速缓存地址范围同时控制高达第二数量“M”个异步高速缓存维护操作的实现。控制单元可以激活异步高速缓存维护操作,并向步进器单元发送用于实现高速缓存维护操作的活动信号。地址范围检查器可以将异步高速缓存维护操作的高达M个高速缓存地址范围与活动高速缓存地址进行比较。响应于在用于异步高速缓存维护操作的高速缓存地址范围与活动高速缓存地址之间找不到匹配,步进器单元可以继续在异步高速缓存维护操作的高速缓存地址范围内实现异步高速缓存维护操作,而控制单元不采取任何动作。响应于用于异步高速缓存维护操作的高速缓存地址范围与活动高速缓存地址的匹配,控制单元可以发送异步高速缓存维护操作标签和要在修复队列中排队的匹配地址。
为了实现针对与活动地址不匹配的高速缓存地址范围的异步高速缓存维护操作(活动异步高速缓存维护操作),步进器可以从控制单元接收活动异步高速缓存维护操作和相关联的地址范围。步进器可以存储和实现多达第三个数量“K”个活动异步高速缓存维护操作。步进器可以在方便的时间实现活动异步高速缓存维护操作,例如,当高速缓存或一堆高速缓存是空闲时。步进器可以遍历用于活动异步高速缓存维护操作的地址范围,并实现到高速缓存的地址范围的异步高速缓存维护操作。
步进器还可以实现由于存储在修复队列中的地址匹配而导致的延迟的异步高速缓存维护操作,以保持高速缓存的相干性。在一些方面,步进器可以使用来自修复队列的异步高速缓存维护操作标签以及在给定延迟之后的来自修复队列的相关联的地址,以从控制单元取回异步高速缓存维护操作。在一些方面,来自修复队列的异步高速缓存维护操作标签可以包含用于高速缓存维护操作的代码,并且步进器可以在给定延迟之后实现针对来自修复队列的相关地址的代码。给定延迟可以包括:经过的时间、或在用于异步高速缓存维护操作的地址范围中在相关高速缓存行上实现的操作的经过次数、到相关高速缓存行的空闲活动计数、或这些因素的任意组合。延迟可用于改善高速缓存性能。步进器可以从高速缓存中的修复队列实现到高速缓存的地址的、活动异步高速缓存维护操作。地址范围检查器和修复队列使异步高速缓存维护操作能够并行延迟,而不是在高速缓存访问之前在关键路径上进行地址范围检查。可以实现该并行延迟,使得主控不检测由延迟引起的任意延时(latency)或定时差异。
为了将同步高速缓存维护操作转换为同步高速缓存维护操作,并实现同步高速缓存维护操作,主控可以请求屏蔽其处正在实现异步高速缓存维护操作的地址范围。屏蔽高速缓存中的地址范围可以防止其他操作修改所述高速缓存的地址范围。可以对用于正在实现的异步高速缓存维护操作的整个地址范围实现屏蔽。
在完成针对相关联的地址范围的异步高速缓存维护操作后,步进器可以发送异步高速缓存维护操作完成的通知。可以向主控发送第一完成通知,以确认完成了由主控发送的、用于实现异步高速缓存维护操作的指令。在完成活动异步高速缓存维护操作后,步进器可以向控制单元发送第二完成通知,以指示异步高速缓存维护操作的完成,提示控制单元解除分配异步高速缓存维护操作。
图1示出了适合于结合各个方面使用的包括计算设备10的系统。计算设备10可以包括片上系统(SoC)12,其具有处理器14、存储器16、通信接口18和存贮存储器接口20。计算设备10还可以包括:通信组件22,例如有线或无线调制解调器;存贮存储器24;以及用于建立无线通信链路的天线26。处理器14可以包括各种处理设备(例如数个处理器内核)中的任意一种。
术语“片上系统”(SoC)在本文中用于指代一组互连的电子电路,其通常但非排他地包括处理装置、存储器和通信接口。处理设备可以包括各种不同类型的处理器14和处理器内核,例如通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器和多核处理器。处理设备还可以体现其他硬件和硬件组合,例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、其他可编程逻辑器件、分立门逻辑、晶体管逻辑、性能监测硬件、看门狗硬件和时间参照。可以配置集成电路使得集成电路的组件位于单片半导体材料(例如硅)上。
SoC 12可以包括一个或多个处理器14。计算设备10可以包括多于一个的SoC 12,从而增加处理器14和处理器内核的数量。计算设备10还可以包括与SoC 12不相关联的处理器14。各单独的处理器14可以是多核处理器,如下面参考图2所描述的。每个处理器14均可以被配置用于可以与计算设备10的其他处理器14相同或不同的特定目的。处理器14以及相同或不同配置的处理器内核中的一个或多个可以组合在一起。一组处理器14或处理器内核可以称为多处理器集群。
SoC 12的存储器16可以是易失性或非易失性存储器,其被配置用于存储数据和处理器可执行代码以供处理器14访问。计算设备10和/或SoC 12可以包括被配置用于各种目的的一个或多个存储器16。一个或多个存储器16可以包括易失性存储器或主存储器或高速缓存存储器,所述易失性存储器例如随机存取存储器(RAM)。这些存储器16可以被配置为暂时保持以下各项:从数据传感器或子系统接收的有限数量的数据;从非易失性存储器请求的、基于各种因素预期未来访问而从非易失性存储器加载到存储器16的数据和/或处理器可执行代码指令;和/或由处理器14产生并被暂时存储以供将来快速访问而不存储在非易失性存储器中的中间处理数据和/或处理器可执行代码指令。
存储器16可以被配置为至少暂时地存储从另一个存储器设备(例如另一个存储器16或存贮存储器24)加载到存储器16的数据和处理器可执行代码,以便由处理器14中的一个或多个处理器进行存取。加载到存储器16的数据或处理器可执行代码可以响应于由处理器14对功能的执行而被加载。响应于功能的执行来将数据或处理器可执行代码加载到存储器16可能由于对存储器16的存储器访问请求不成功或“未命中(miss)”而产生,这是因为所请求的数据或处理器可执行代码不位于存储器16中。响应于未命中,可以做出对另一个存储器16或存贮存储器24的存储器访问请求,以将所请求的数据或处理器可执行代码从另一个存储器16或存贮存储器24加载到存储器设备16。响应于功能的执行来将数据或处理器可执行代码加载到存储器16可能由于对另一个存储器16的存储器访问请求不成功或“未命中”而产生,并且可以将数据或处理器可执行代码加载到存储器16以供以后访问。
存贮存储器接口20和存贮存储器24可以一致地工作以允许计算设备10将数据和处理器可执行代码存储在非易失性存储介质上。可以非常类似于存储器16的方面来配置存贮存储器24,其中,存贮存储器24可以存储数据或处理器可执行代码以供一个或多个处理器14访问。存贮存储器24是非易失性的,并且可以在关闭计算设备10的电源之后保留信息。当重新接通电源并且计算设备10重新启动时,存储在存贮存储器24上的信息可以用于计算设备10。存贮存储器接口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可以分别是同构图形处理器内核或数字信号处理器内核。多核处理器14可以是具有同构处理器内核200、201、202、203的定制硬件加速器。为了便于提及,术语“定制硬件加速器”、“处理器”和“处理器内核”在本文中可以互换使用。
异构多核处理器可以包括多个异构处理器内核。处理器内核200、201、202、203可以是异构的,因为多核处理器14的处理器内核200、201、202、203可以被配置用于不同目的和/或具有不同的性能特性。这种异构处理器内核的异构性可以包括不同的指令集架构、流水线、操作频率等。这种异构处理器内核的示例可以包括所谓的“big.LITTLE”架构,在所述架构中,较慢的低功率处理器内核可以与较强大和耗电的处理器内核相耦合。在类似方面,SoC(例如,图1的SoC 12)可以包括任意数量的同构或异构多核处理器14。在各个方面,并非所有处理器内核200、201、202、203都需要是异构处理器内核,因为异构多核处理器可以包括包含至少一个异构处理器内核的、处理器内核200、201、202、203的任意组合。
可以向多核处理器14的处理器内核200、201、202、203中的每一个指定可以专用于指定的处理器内核200、201、202、203的读和/或写访问的私用高速缓存210、212、214、216。私用高速缓存210、212、214、216可以存储数据和/或指令,并使存储的数据和/或指令可用于处理器内核200、201、202、203(私用高速缓存210、212、214、216是对其专用的),以用于由处理器内核200、201、202、203执行。私用高速缓存210、212、214、216可以包括如本文中参考图1的存储器16所描述的易失性存储器。
多核处理器14还可以包括共享高速缓存230,其可以被配置为由处理器内核200、201、202、203进行读和/或写访问。私用高速缓存210、212、214、216可以存储数据和/或指令,并使存储的数据和/或指令可用于处理器内核200、201、202、203,以供处理器内核200、201、202、203在执行时使用。共享高速缓存230也可以用作输入到多核处理器14和/或从多核处理器14输出的数据和/或指令的缓冲器。共享高速缓存230可以包括如本文中参考图1的存储器16所描述的易失性存储器。
在图2中所示的示例中,多核处理器14包括四个处理器内核200、201、202、203(即,处理器内核0、处理器内核1、处理器内核2和处理器内核3)。在该示例中,向每个处理器内核200、201、202、203指定各自的私用高速缓存210、212、214、216(即,处理器内核0和私用高速缓存0,处理器内核1和私用高速缓存1,处理器内核2和私用高速缓存2,以及处理器内核3和私用高速缓存3)。为了便于解释,此处的示例可以指代图2中示出的四个处理器内核200、201、202、203和四个私用高速缓存210、212、214、216。然而,图2中示出并在本文中描述的四个处理器内核200、201、202、203和四个私用高速缓存210、212、214、216仅作为示例来提供,并且决不意味着将各个方面限制为具有四个指定的私用高速缓存的四核处理器系统。计算设备10、SoC 12或多核处理器14可以单独地或组合地包括比本文示出和描述的四个处理器内核200、201、202、203和私用高速缓存210、212、214、216要少或要多的处理器内核和私用高速缓存。
图3示出了具有相干互连的异构计算设备的示例方面。被配置为实现动态I/O相干性系统300的异构计算设备300(例如,图1中的计算设备10)可以包括至少两个但多达任意整数“N”个处理设备(例如,图1和2中的处理器14);例如,处理设备(例如,CPU)302、硬件加速器(例如,GPU)306a、硬件加速器(例如,DSP)306b和/或定制硬件加速器306c。每个处理设备302、306a、306b、306c可以与处理设备高速缓存(例如,图2中的私用高速缓存210、212、214、216和/或共享高速缓存230)相关联。例如,处理设备302可以包括处理设备高速缓存(例如,CPU高速缓存)308,硬件加速器306a可以包括硬件加速器高速缓存(例如,GPU高速缓存)310a,硬件加速器306b可以包括硬件加速器高速缓存(例如,DSP高速缓存)310b,和/或定制硬件加速器306c可以包括定制硬件加速器高速缓存310c。如本文所讨论的,处理设备302、306a、306b、306c中的每一个可以相对于彼此和/或其各自的处理器内核(例如,图2中的处理器内核200、201、202、203)之间是同构的和/或异构的。
相干互连312可以通信地连接到处理设备302、306a、306b、306c以及任意数量的主存储器或随机存取存储器组件,例如共享存储器304(例如,图1中的存储器16、24)。相干互连312可以被配置为启用和控制各种连接组件之间的数据传输。对于以I/O相干模式操作的处理设备高速缓存308、310a、310b、310c和/或共享存储器304,可以通过相干互连312连续地实现相干性机制,以确保处理设备高速缓存308、310a、310b、310c和/或共享存储器304中的数据的正确性。相干互连312可以被配置为在处理设备302、306a、306b、306c之间传输数据,使得处理设备302、306a、306b、306c可以共享工作负荷的处理并输出工作负荷处理的结果。为了使结果正确,输入到处理设备302、306a、306b、306c并从其输出的数据可以受到相干性要求的约束,当I/O相干模式是活动的时,所述相干性要求可以由相干互连312的相干性机制来实现。在各个方面,相干互连312的相干性域314或其他相干性机制(例如探听滤波器(未示出))可以被配置为基于接收到对处理设备高速缓存308、310a、310b、310c和/或共享存储器304的存储器访问请求来执行相干性检查和无效。相干性域314还可以被配置为基于接收到处理设备302、306a、306b、306c和/或共享存储器304之间的事务的确认来清除事务。
当I/O相干模式是不活动的时,或者处理设备高速缓存308、310a、310b、310c和/或共享存储器304处于非I/O相干模式时,输入到处理设备302、306a、306b、306c的数据和从其输出的数据的正确性可以由处理设备302、306a、306b、306c自身管理。在各个方面,异步高速缓存维护操作可以由处理设备302、306a、306b、306c针对存储在处理设备高速缓存308、310a、310b、310c中的数据来实现。在各个方面,处理设备302、306a、306b、306c的组件(包括高速缓存管理设备(未示出)和/或处理器内核)可以被配置为实现异步高速缓存维护操作。相干互连312可以在不进行相干性操作的情况下仍然在处理设备302、306a,306b和/或共享存储器304之间发送数据。
图3示出了配置为实现动态I/O相干性系统的异构计算设备的非限制性示例。本文示出和描述的示例,特别是参考图3并与图3相关的那些示例,是非限制性的。被配置为实现动态I/O相干性系统的异构计算设备可以包括任意数量的处理设备、处理器内核、处理设备高速缓存(例如,私用高速缓存和/或共享高速缓存)、相干互连、共享存储器、以及这些组件之间的连接,和/或它们的组合。
图4示出了具有异步高速缓存操作系统400的计算设备(例如,图1中的计算设备10和图3中的异构计算设备)的示例方面。异步高速缓存操作系统400可以包括:作为处理设备(例如,图1和2中的处理器14,以及图3中的CPU 302、GPU 306a、DSP 306b和定制硬件加速器306c)和/或SoC(例如,图1中的SoC 12)的组成部分的组件和/或与处理设备和/或SoC分离的组件的各种组合。异步高速缓存操作系统400的组件可以包括高速缓存402(例如,图1中的存储器16、24,图2中的私用高速缓存210、212、214、216和共享高速缓存230,以及图3中的CPU高速缓存308、GPU高速缓存310a、DSP高速缓存310b和定制硬件加速器高速缓存310c)、高速缓存操作控制单元404、地址范围检查器406、修复队列408和步进器410。这些组件的各种组合可以通信地彼此连接和/或连接到主控(例如,图1和图2中的处理器14,图2中的处理器内核200、201、202、203,以及图3中的CPU 302、GPU 306a、DSP 306b和定制硬件加速器306c)。本文使用术语“队列”(例如,“修复队列”408)是出于清楚和易于解释的目的,但是修复队列408不限于队列。在各个方面,修复队列408可以实现为或使用可以存储地址和/或地址范围的数据以及异步高速缓存维护操作标签的任意数量和类型的硬件存储体或数据结构,如本文进一步描述的。
主控可以指示关于在高速缓存402中的地址范围上实现异步高速缓存维护操作。主控可以向高速缓存操作控制单元404发送异步高速缓存维护操作指令412,所述高速缓存操作控制单元404可以被配置为确定是否实现异步高速缓存维护操作。高速缓存操作控制单元404可以被配置为接收、存储和控制对高达第一数量“N”个异步高速缓存维护操作的实现和要在高速缓存402上实现的、相关联的高速缓存地址范围。用于进行实现的经存储和设置的异步高速缓存维护操作可以称为活动异步高速缓存维护操作,如本文进一步描述的。响应于接收到高速缓存维护操作指令412,高速缓存操作控制单元404可以激活异步高速缓存维护操作。高速缓存操作控制单元404可以向步进器410以信号通知活动异步高速缓存维护操作418以及相关联的地址范围,以在高速缓存402中实现活动异步高速缓存维护操作,如本文进一步描述的。
可以响应于存储器访问请求来访问高速缓存402。当主控指示异步高速缓存维护操作时,从属于存储器访问请求的高速缓存地址可能是活动的。为了避免高速缓存402中的冲突,地址范围检查器406可以从高速缓存操作控制单元404接收用于活动异步高速缓存维护操作416的地址范围,并且接收存储器访问请求(读取或写入)的地址或由于存储器访问请求的未命中而导致的行填充请求的地址414,其可以称为活动地址。在各个方面,高速缓存操作控制单元404可以接收用于多个存储器访问请求和/或行填充请求的多个活动地址414。地址范围检查器406可以将地址范围与活动地址进行比较,以确定地址范围中的任意地址是否与活动地址相同。如果地址范围中的地址与活动地址之间存在匹配,则如本文中进一步描述的,在不实现修复队列408的情况下实现异步高速缓存维护操作可能导致冲突,所述冲突可能导致高速缓存维护操作在功能上失败,并且可能破坏对该地址的未来访问,或者破坏用于存储器访问请求或填充线请求的数据。引发匹配的异步高速缓存维护操作可以被推迟为异步地实现,如本文进一步描述的。在各个方面,可能已经针对匹配地址完成了高速缓存维护操作,并且推迟的异步高速缓存维护操作可以是针对匹配地址的异步高速缓存维护操作的重复实现。如果识别出地址范围中的地址与活动地址之间无匹配,则可以允许继续在高速缓存维护操作的高速缓存地址范围内实现活动异步高速缓存维护操作,而高速缓存操作控制单元404不采取任何动作。地址范围检查器406可以被配置为接收和存储与由高速缓存操作控制单元404存储的异步高速缓存维护操作相关联的多达第二数量“M”个地址范围。第二数量“M”可以是任意数量,包括小于第一数量“N”的数量。地址范围检查器406可以将多达第二数量“M”个地址范围与活动地址进行比较,并针对多达第二数量“M”个地址范围中的每一个,确定地址范围中是否存在与活动地址匹配的地址。
由高速缓存操作控制单元404存储的活动异步高速缓存维护操作可以是异步高速缓存维护操作,对于该异步高速缓存维护操作,地址范围检查器406不识别与活动地址匹配的、地址范围中的地址。响应于检测到异步高速缓存维护操作的地址范围中的地址与活动地址之间无匹配,地址范围检查器406可以向高速缓存操作控制单元404指示经检查的高速缓存维护操作是活动异步高速缓存维护操作。
在激活和实现活动异步高速缓存维护操作之前,高速缓存操作控制单元404可以不等待活动异步高速缓存维护操作的指示。高速缓存操作控制单元404可以假设异步高速缓存维护操作是活动异步高速缓存维护操作。
高速缓存操作控制单元404可以管理活动的异步高速缓存维护操作。高速缓存操作控制单元404可以实现策略,用于对并发的异步高速缓存维护操作进行优先级排序。高速缓存操作控制单元404可能能够具有N'<=M个异步高速缓存维护操作,其中一次有多达N个不同的地址范围(在地址范围匹配或者在某些方面中是地址范围的子集的情况下,N'可以是>N的)是活动的。在高速缓存操作控制单元404中,不具有活动的相关联的地址范围检查器406的异步高速缓存维护操作可以是不活动的,直到地址范围检查器406变得可用为止。
高速缓存操作控制单元404可以向步进器410以信号通知活动异步高速缓存维护操作418以及相关联的地址范围,以用于实现高速缓存402中的活动异步高速缓存维护操作。
步进器410可以被配置为确定要实现由高速缓存操作控制单元404以信号通知的活动异步高速缓存维护操作的时间。步进器410可以在方便的时间实现活动异步高速缓存维护操作,例如当包含至少一部分地址范围的高速缓存402或一堆高速缓存402是空闲时,其可以通过高速缓存空闲信号428向步进器410进行指示。
在实现活动异步高速缓存维护操作时,步进器410可以通过以下操作来应用异步高速缓存维护操作426:遍历用于活动异步高速缓存维护操作的地址范围,并且实现至高速缓存402的地址范围的活动异步高速缓存维护操作。步进器410可以存储多达第三数量“K”个活动异步高速缓存维护操作和相关联的地址范围用于植入。在各个方面,步进器410可以并发地实现多达第三数量“K”个活动异步高速缓存维护操作。
响应于检测到高速缓存维护操作的地址范围中的地址与活动地址之间的匹配,地址范围检查器406可以向修复队列408发送异步高速缓存维护操作标签以及与活动地址匹配的相关联地址或相关联的地址范围422以进行存储,直到可以实现异步高速缓存维护操作为止。在各个方面,地址范围检查器406可以向高速缓存操作控制单元404以信号通知发现了用于异步高速缓存维护操作的匹配。
在一些方面,不是地址范围检查器406发送异步高速缓存维护操作标签和相关联的地址或相关联的地址范围422,而是高速缓存操作控制单元404可以向修复队列408发送异步高速缓存维护操作标签和相关联的地址或相关联的地址范围。异步高速缓存维护操作标签和相关联的地址或相关联的地址范围可以存储在修复队列408中,以用于稍后实现异步高速缓存维护操作。在各个方面,修复队列408可以将修复队列408中的匹配的相关联的地址或相关联的址范围组合成单个修复队列条目。
一旦认为修复队列408中的异步高速缓存维护操作准备好用于执行,则步进器410可以接收异步高速缓存维护操作标签和用于异步高速缓存维护操作的相关联的地址范围424。在各个方面,修复队列中的异步高速缓存维护操作标签和相关联的地址范围可能直到给定的延迟之后才变得对步进器410可用,所述延迟可以被定时以提高高速缓存402的性能。给定的延迟可以包括:经过的时间、或在用于高速缓存维护操作的地址范围中在相关高速缓存行上实现的操作的经过次数、和/或给定地址的空闲时段。在各个方面,可以使用修复队列条目中的向下计数的计数器来测量空闲时段,但是在每次访问该地址时重置该计数器。在各个方面,当组合或匹配先前条目时,可以将修复队列条目移动到修复队列408中比修复队列408中的先前条目的先前位置距离修复队列408的就绪位置更远的位置。
在各个方面,步进器410可以使用针对相关联的地址或相关联的地址范围的异步高速缓存维护操作标签的代码、或者由其异步高速缓存维护操作标签和相关联的地址或相关联的地址范围标识的代码,来激活异步高速缓存维护操作。在各个方面,高速缓存操作控制单元404可以继续存储异步高速缓存维护操作,并从步进器410接收信号以激活由其异步高速缓存维护操作标签和相关联的地址范围标识的异步高速缓存维护操作。
在各个方面,步进器410可以使用异步高速缓存维护操作标签和相关联的地址或相关联的地址范围来实现活动异步高速缓存维护操作。在实现活动异步高速缓存维护操作时,步进器410可以将异步高速缓存维护操作426应用于高速缓存402中的相关联的地址或相关联的地址范围。步进器410可以被配置为确定实现活动异步高速缓存维护操作的时间,所述时间由高速缓存操作控制单元404以信号通知或从修复队列408接收。步进器410可以在方便的时间实现活动异步高速缓存维护操作,例如当包含地址范围的至少一部分的高速缓存402或一堆高速缓存402是空闲的时,所述时间可以由高速缓存空闲信号428向步进器410指示。
在各个方面,为了将异步高速缓存维护操作转换为同步高速缓存维护操作,以及为了实现同步高速缓存维护操作,主控可以请求屏蔽用于异步高速缓存维护操作的相关联的地址或相关联的地址范围。屏蔽高速缓存中的相关联的地址或相关联的地址范围可以在实现同步高速缓存维护操作之前防止其他操作访问请求对高速缓存402的相关联的地址或相关联的地址范围进行修改。在一个方面,可以在地址范围的第一匹配地址而不是用于高速缓存维护操作的整个地址范围上实现这种地址屏蔽。在各个方面,地址范围检查器406可以针对异步高速缓存维护操作和高速缓存访问请求实现地址比较。
在完成针对相关联的地址或相关地址范围的活动异步高速缓存维护操作后,步进器410可以向高速缓存操作控制单元404发送第一完成通知420以指示对异步高速缓存维护操作的完成。高速缓存操作控制单元404可以向主控发送第二完成通知430,以确认完成由主控412发送的、实现异步高速缓存维护操作的指令。接收第一完成通知420和/或发送第二完成通知430可以提示高速缓存操作控制单元404解除分配异步高速缓存维护操作。
地址范围检查器406和修复队列408可以使异步高速缓存维护操作与其他高速缓存功能并行地延迟,而不是在高速缓存访问之前在关键路径上进行地址范围检查。可以实现该并行延迟使得主控可以不检测由延迟引起的任意延时或定时差异。
图5-图10示出了工作负荷卸载的示例方面。这些示例示出了从处理设备(例如,CPU)302到硬件加速器(例如,GPU 306a、DSP 306b、定制硬件加速器306c等)306的工作负荷卸载。这些示例示出了处理设备302和单个硬件加速器306之间的工作负荷卸载。在各个方面,在处理设备302和硬件加速器306之间发送的数据可以通过读取/写入来发送到共享存储器(例如,图3中的共享存储器304),并且可以经由高速缓存未命中机制来触发。在各个方面,数据传输(包括经由共享存储器的数据传输)可以在执行卸载的工作负荷的整个期间发生。一对一工作负荷卸载的这些示例是非限制性的,并且处理设备302可以将部分工作负荷卸载到(包括经由任意数量的共享存储器)任意数量的硬件加速器306和/或其他处理设备302。
在图5-图10中示出的每个示例中,处理设备302可以负责执行工作负荷。处理设备302可以被配置为将部分工作负荷卸载到硬件加速器306。卸载的工作负荷的数据可以存储在处理设备高速缓存中(例如,图3中的处理设备高速缓存308和图4中的高速缓存402)。可以经由相干互连(例如,图3中的相干互连312)向硬件加速器306发送数据。在各个方面,数据可以通过通信地连接到相干互连或集成到相干互连的共享存储器发送。硬件加速器306可以使用发送的数据来执行卸载的工作负荷,并将结果发送回处理设备302以写入处理设备高速缓存。
图5示出了非I/O相干工作负荷处理的示例方面。为了将卸载的工作负荷的数据发送到硬件加速器306,并输出从硬件加速器306接收的结果,处理设备302可以实现高速缓存维护操作以将数据写入共享存储器然后写入硬件加速器306,或经由相干互连直接写入硬件加速器306。如本文所述,在非I/O相干性数据传输期间,相干互连可以在处理设备302与共享存储器和/或硬件加速器306之间的数据之间传输数据,而不进行相干性操作。
为了将卸载的工作负荷的数据发送到硬件加速器306,处理设备302可以实现高速缓存清除维护操作500以经由相干互连将数据写入共享存储器和/或硬件加速器306。将数据写入多个目的地的高速缓存清除维护操作500产生开销504a,所述开销504a可以取决于处理设备高速缓存中的针对卸载的工作负荷写出的数据量而变化。存储在处理设备高速缓存中的数据可以存储在分区或缓冲区中,并且可以针对处理设备高速缓存的这些特定部分实现高速缓存清除维护操作500。否则,可以针对整个处理设备高速缓存实现高速缓存清除维护操作500。开销504a可以延迟硬件加速器306对卸载的工作负荷的执行的开始。
在与高速缓存清除维护操作500的开销504a相关的时间期间,处理设备302可以完成将一部分工作负荷卸载到硬件加速器306。在各个方面,将一部分工作负荷卸载到硬件加速器306可以包括由访问处理设备高速缓存和/或共享存储器的硬件加速器306进行的数据读和写。可以经由用于处理设备高速缓存的高速缓存未命中机制来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地对所述数据进行缓存。在各个方面,硬件加速器306可以将卸载的工作负荷的任意经传输的数据存储到其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c和图4中的高速缓存402)。硬件加速器306可以启动对卸载的工作负荷508的执行,并执行卸载的工作负荷506a。执行卸载的工作负荷所花费的时间长度可以取决于各种因素,所述因素包括:卸载的工作负荷的大小和/或复杂性;硬件加速器306的资源使用和/或可用性、和/或针对硬件加速器306的资源使用和/或可用性,其包括电功率、计算能力、存储器空间、通信带宽;和/或环境因素,其包括温度。硬件加速器306可以完成卸载的工作负荷执行510,经由相干互连将卸载的工作负荷执行506a的结果返回到处理设备302。
为了使卸载的工作负荷执行的结果可用于处理设备302,处理设备302可以实现高速缓存无效化维护操作502,以将处理设备高速缓存空间的未来读取引导到在硬件加速器306输出结果之后、当前将所述结果存储作为未命中的共享存储器。高速缓存无效化维护操作502还可以产生开销504b,所述开销504b可以取决于存储的卸载工作负荷结果的数据量或处理设备高速缓存中用于存储卸载的工作负荷结果的空间而变化。开销504b可以延迟卸载的工作负荷结果的可用性以供处理设备302访问。在完成高速缓存无效化维护操作502时,卸载的工作负荷结果可以变得可用512,以供处理设备302访问、使用和/或输出卸载的工作负荷结果。处理设备302可以接收卸载的工作负荷执行506a的结果并将结果存储在其处理设备高速缓存中。
图6示出了I/O相干工作负荷处理的示例方面。为了将卸载的工作负荷的数据发送到硬件加速器306,并输出从硬件加速器306接收的结果,相干互连312可以连续地实现相干性机制(例如,图3中的相干性域314和/或探听滤波器),以确保处理设备高速缓存和/或共享存储器中的数据的正确性。因此,当处理设备高速缓存和/或共享存储器处于I/O相干模式时,处理设备302可以不实现其针对非I/O相干模式可以实现的高速缓存维护操作。
处理设备302可以将一部分工作负荷卸载到硬件加速器306。在各个方面,将一部分工作负荷卸载到硬件加速器306可以包括由访问处理设备高速缓存和/或共享存储器的硬件加速器306进行的数据读和写。可以经由用于处理设备高速缓存的高速缓存未命中的高速缓存未命中机制来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地对数据进行缓存。在各个方面,硬件加速器306可以将任意经传输的卸载的工作负荷的数据存储到其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c和图4中的高速缓存402)。硬件加速器306可以启动对卸载的工作负荷508的执行,并执行卸载的工作负荷506b。在I/O相干模式中,可以在传输数据的同时保持相干性,使得在卸载的工作负荷的执行启动508之前不会产生任何开销,而不是对于非I/O相干模式中的处理设备高速缓存和/或共享存储器产生针对发送卸载的工作负荷数据的开销。
在执行卸载的工作负荷506b期间仍可能导致开销504c的增加。该开销504c可能由卸载的工作负荷结果的数据所经过的相干路径的性能导致。相干互连可能无法实现其相干性机制并且与硬件加速器306产生卸载的工作负荷结果一样快速地传输卸载的工作负荷结果。相干互连可能在实现相干性机制(其导致增加的开销504c)的同时,导致针对卸载的工作负荷结果的瓶颈。在各个方面,开销404c可以与用于执行卸载的工作负荷506b的硬件加速器306的运行时间成比例或大致成比例。
一旦相干互连的相干性机制完成用以确保处理设备高速缓存和/或共享存储器中的卸载的工作负荷结果的正确性的操作,卸载的工作负荷结果可变得可用512,以供处理设备302访问、使用和/或输出卸载的工作负荷。
图7和8示出了动态I/O相干工作负荷处理的示例方面。在图7和图8中的每一者示出的示例中,由处理设备302进行的工作负荷卸载可以利用I/O相干模式中的处理设备高速缓存和/或共享存储器来开始。因此,将卸载的工作负荷的数据发送到硬件加速器306,并输出由硬件加速器306生成的接收和/或结果,相干互连312可以连续地实现相干性机制(例如,图3中的相干性域314和/或探听滤波器),以确保处理设备高速缓存和/或共享存储器中的数据的正确性。因此,当处理设备高速缓存和/或共享存储器处于I/O相干模式时,处理设备302可以不实现其可以针对非I/O相干模式实现的高速缓存维护操作。
处理设备302可以将一部分工作负荷卸载到硬件加速器306。在各个方面,将一部分工作负荷卸载到硬件加速器306可以包括由访问处理设备的高速缓存和/或共享存储器的硬件加速器306进行的数据读和写。可以经由用于处理设备高速缓存的高速缓存未命中的高速缓存未命中机制来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地对数据进行缓存。
在各个方面,硬件加速器306可以将卸载的工作负荷的任意经传输的数据存储到其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c和图4中的高速缓存402)。硬件加速器306可以启动对卸载的工作负荷508的执行并执行卸载的工作负荷506c,506d。在I/O相干模式中,可以在传输数据的同时保持相干性,使得在卸载的工作负荷的执行启动508之前不会产生任何开销,而不是对于非I/O相干模式中的处理设备高速缓存和/或共享存储器产生针对发送卸载的工作负荷数据的开销。
图7中示出的示例是由硬件加速器306进行的针对短期的卸载的工作负荷执行的、动态I/O相干工作负荷处理的实现方式。如本文所述,仍可能针对执行卸载的工作负荷506c而导致开销504d。在动态I/O相干工作负荷处理中,只要开销504d保持低于开销阈值,对卸载工作负荷的执行506c就可以利用在I/O相干模式中的处理设备高速缓存和/或共享存储器来继续。因此,开销504d限于由传输如本文所述的卸载的工作负荷结果的相干互连的性能引起的开销。一旦相干互连的相干性机制完成其用以确保处理设备高速缓存和/或共享存储器中的卸载的工作负荷的正确性的操作,则卸载的工作负荷结果可变的可用512,以供处理设备302访问、使用和/或输出卸载的工作负荷。
图8中示出的示例是针对由硬件加速器306进行的长期的卸载的工作负荷执行的、动态I/O相干工作负荷处理的实现。如本文所述,仍可能针对执行卸载的工作负荷506c而导致开销504e。在动态I/O相干工作负荷处理中,长期的卸载的工作负荷可能产生超过开销阈值的开销504e。可以使用各种方法来检测超过开销阈值的长期的工作负荷,所述方法包括处理设备302进入空闲状态、经过的时间和/或经受对卸载的工作负荷的执行,如本文进一步描述的。
响应于检测到长期的卸载的工作负荷,处理设备302可以将处理设备高速缓存和/或共享存储器从I/O相干模式动态地转换到非I/O相干模式。为了从I/O相干模式转换到非I/O相干模式,处理设备302可以在处理设备高速缓存和/或共享存储器保持在I/O相干模式的同时开始实现高速缓存维护操作。例如,处理设备302可以在硬件加速器继续卸载的工作负荷执行506d的同时,实现高速缓存清除维护操作500。在高速缓存清除维护操作500期间,卸载的工作负荷执行506d可以继续导致I/O相干模式开销504e,但是不会针对高速缓存清除维护操作500而导致开销。因此,开销504d可以限于由发送卸载的工作负荷结果的相干互连的性能导致的开销,如本文所描述的。
在完成高速缓存清除维护操作500之后,处理设备高速缓存和/或共享存储器可以动态地从I/O相干模式切换到非I/O相干模式514。在I/O相干模式和非I/O相干模式514之间的切换可以不中断卸载的工作负荷执行506d。当卸载的工作负荷执行506d继续时,不会再导致I/O相干模式开销504e。硬件加速器306可以完成卸载的工作负荷执行510,经由相干互连和/或共享存储器将卸载的工作负荷执行506d的结果返回到处理设备302。
为了使卸载的工作负荷执行的结果可用于处理设备302,处理设备302可以实现高速缓存无效化维护操作502,如本文进一步讨论的。高速缓存无效化维护操作502可以产生开销504b,开销504b可以根取决于所存储的卸载的工作负荷结果的数据量或者在处理设备高速缓存中用于存储卸载的工作负荷结果的空间而变化。开销504b可以延迟用于由处理设备302访问的卸载的工作负荷结果的可用性。在完成高速缓存无效化维护操作502时,卸载的工作负荷结果可以变得可用512,以供处理设备302访问、使用和/或输出卸载的工作负荷结果。处理设备302可以接收卸载的工作负荷执行506a的结果并将结果存储在其处理设备高速缓存中。
图9示出了具有异步高速缓存维护操作的非I/O相干工作负荷处理的示例方面。为了将卸载的工作负荷的数据发送到硬件加速器306,并输出从硬件加速器306接收的结果,处理设备302可以实现同步和/或异步高速缓存维护操作以将数据写入共享存储器并然后写入硬件加速器306,或者经由相干互连直接写入硬件加速器306。如本文所述,在非I/O相干数据传输期间,在不进行相干性操作的情况下,相干互连可以在处理设备302与共享存储器和/或硬件加速器306之间传输数据。
具有异步高速缓存维护操作的非I/O相干工作负荷处理可以类似于非I/O相干工作负荷处理,如本文中参考图5所描述的。然而,在非I/O相干工作负荷处理中对异步高速缓存维护操作的包含可以减少导致的开销量,这是因为某些高速缓存维护操作可以与处理设备高速缓存上的存储器访问操作异步地且并行地执行。
为了将卸载的工作负荷的数据发送到硬件加速器306,处理设备302可以实现高速缓存清除维护操作500以经由相干互连将数据写入共享存储器和/或硬件加速器306。将数据写入多个目的地的高速缓存清除维护操作500产生开销504a,所述开销504a可以取决于处理设备高速缓存中的针对卸载的工作负荷写出的数据量而变化。存储在处理设备高速缓存中的数据可以存储在分区或缓冲区中,并且可以针对处理设备高速缓存的这些特定部分实现高速缓存清除维护操作500。否则,可以针对整个处理设备高速缓存实现高速缓存清除维护操作500。开销504a可以延迟由硬件加速器306执行卸载的工作负荷的开始。
在与高速缓存清除维护操作500的开销504a相关的时间期间,处理设备302可以完成将一部分工作负荷卸载到硬件加速器306。在各个方面,将一部分工作负荷卸载到硬件加速器306可以包括由访问处理设备高速缓存和/或共享存储器的硬件加速器306进行的数据读和写。可以经由用于处理设备高速缓存的高速缓存未命中机制来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地对所述数据进行缓存。在各个方面,硬件加速器306可以将任意经传输的卸载的工作负荷的数据存储到其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c)。硬件加速器306可以启动对卸载的工作负荷508的执行。
硬件加速器306可以执行卸载的工作负荷506a。执行卸载的工作负荷所花费的时间长度可以取决于各种因素,所述因素包括:卸载的工作负荷的大小和/或复杂性;硬件加速器306的资源使用和/或可用性、和/或针对硬件加速器306的资源使用和/或可用性,其包括电功率、计算能力、存储器空间、通信带宽;和/或环境因素,其包括温度。处理设备302可以与卸载的工作负荷执行506a并行地开始执行高速缓存无效化维护操作,而不是等待卸载的工作负荷的完成。处理设备302可以实现活动异步高速缓存无效化维护操作900,因为其地址范围可能不会与卸载的工作负荷执行506a的数据的任意活动地址冲突。处理设备302可以以延迟的方式从修复队列(例如,图4中的修复队列408)实现活动异步高速缓存无效化维护操作902,但是当地址范围可能不会与卸载的工作负荷执行506a的数据的任意活动地址冲突时,仍然与卸载的工作负荷执行506a并行。硬件加速器306可以完成卸载的工作负荷执行510,经由相干互连将卸载的工作负荷执行506a的结果返回到共享存储器。
为了使卸载的工作负荷执行的结果可用于处理设备302,处理设备302可以实现任意剩余的活动异步高速缓存无效化维护操作904以完成高速缓存维护操作,并使得卸载的工作负荷结果可用512,以供处理设备302访问、使用和/或输出。剩余的活动异步高速缓存无效化维护操作可以包括:用于实现的与来自修复队列的活动异步高速缓存无效化维护操作分离的、或包括在来自修复队列的活动异步高速缓存无效化维护操作中的活动异步高速缓存无效化维护操作。与用于非I/O相干工作负荷处理的开销(例如,图5中的504b)相比,由于在接收到卸载的工作负荷结果510之后执行的剩余活动异步高速缓存维护操作导致的、用于具有异步高速缓存维护操作的I/O相干工作负荷处理的开销504f,因为必须实现较少的高速缓存无效化维护操作,所以开销504f减少。处理设备302可以接收卸载的工作负荷执行506a的结果并将结果存储在其处理设备高速缓存中。
图10示出了具有异步高速缓存维护操作的动态I/O相干工作负荷处理的示例方面。在图10所示的示例中,处理设备302对处理设备高速缓存和/或共享存储器的工作负荷卸载可以处于I/O相干模式。因此,为了将卸载的工作负荷的数据发送到硬件加速器306,以及接收和/或输出由硬件加速器306生成的结果,相干互连312可以连续地实现相干性机制(例如,图3中的相干性域314和/或探听滤波器),以确保处理设备高速缓存和/或共享存储器中的数据的正确性。因此,当处理设备高速缓存和/或共享存储器处于I/O相干模式时,处理设备302可以不实现其针对非I/O相干模式可以实现的高速缓存维护操作。
具有异步高速缓存维护操作的动态I/O相干工作负荷处理可以类似于如本文中参考图8所描述的动态I/O相干工作负荷处理。然而,在I/O相干工作负荷处理中对异步高速缓存维护操作的包含可以减少所导致的开销量,这是因为某些高速缓存维护操作可以与处理设备高速缓存上的存储器访问操作异步地且并行地执行。
处理设备302可以将一部分工作负荷卸载到硬件加速器306。在各个方面,将一部分工作负荷卸载到硬件加速器306可以包括由访问处理设备高速缓存和/或共享存储器的硬件加速器306进行的数据读和写。可以经由用于处理设备高速缓存的高速缓存未命中的高速缓存未命中机制来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地对数据进行缓存。在各个方面,硬件加速器306可以将卸载的工作负荷的任意经传输的数据存储到其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c)。硬件加速器306可以启动对卸载的工作负荷508的执行,并执行卸载的工作负荷506b。在I/O相干模式中,可以在传输数据的同时保持相干性,使得在卸载的工作负荷的执行启动508之前不会产生任何开销,而不是对于非I/O相干模式中的处理设备高速缓存和/或共享存储器产生针对发送卸载的工作负荷数据的开销。
图10中示出的示例是是针对由硬件加速器306进行的长期的卸载的工作负荷执行的、动态I/O相干工作负荷处理的实现方式。仍可能针对执行卸载的工作负荷506c而导致开销504e。在动态I/O相干工作负荷处理中,长期的卸载的工作负荷可能产生超过开销阈值的开销504e。可以使用各种方法来检测超过开销阈值的长期的工作负荷,包括:经过的时间和/或对卸载的工作负荷的执行的不良情况,如本文进一步描述的。
响应于检测到长期的卸载的工作负荷,处理设备302可以将处理设备高速缓存和/或共享存储器从I/O相干模式动态地转换到非I/O相干模式。为了从I/O相干模式转换到非I/O相干模式,处理设备302可以在处理设备高速缓存和/或共享存储器保持在I/O相干模式的同时开始实现高速缓存维护操作。例如,处理设备302可以在硬件加速器继续卸载的工作负荷执行506d的同时,实现高速缓存清除维护操作500。在高速缓存清除维护操作500期间,卸载的工作负荷执行506d可以继续导致I/O相干模式开销504e,但是针对高速缓存清除维护操作500不会导致开销。因此,开销504d可以限于由发送卸载的工作负荷结果的相干互连的性能而导致的开销,如本文所描述的。
在完成高速缓存清除维护操作500之后,处理设备高速缓存和/或共享存储器可以动态地从I/O相干模式切换到非I/O相干模式514。在I/O相干模式和非I/O相干模式514之间的切换可以不中断卸载的工作负荷执行506d。当卸载的工作负荷执行506d继续时,可以执行活动异步高速缓存维护操作900,并且可以以与本文参照图9所述的方式类似的方式来执行来自修复队列(例如,图4中的修复队列408)的活动异步高速缓存维护操作902。硬件加速器306可以完成卸载的工作负荷执行510,经由相干互连将卸载的工作负荷执行506d的结果返回到共享存储器。处理设备302可以实现任意剩余的活动异步高速缓存无效化维护操作904,以与本文中参考图9所述的方式类似的方式来完成高速缓存维护操作。卸载的工作负荷结果可以变得可用512,以供处理设备302访问、使用和/或输出卸载的工作负荷结果。与用于动态I/O相干工作负荷处理的开销(例如,图8中的504b)相比,由于在接收到卸载的工作负荷结果510之后执行的剩余活动异步高速缓存维护操作导致的、用于具有异步高速缓存维护操作的动态I/O相干工作负荷处理的开销504f,因为必须实现较少的高速缓存无效化维护操作,所以开销504f减少。
图11示出了根据方面的用于实现异步高速缓存维护操作的方法1100。方法1100可以在计算设备中以在处理器(例如,图1和图2中的处理器14以及图3和图5-图10中的处理设备302)中执行的软件、通用硬件、专用硬件、或者软件配置的处理器和专用硬件的组合来实现,例如以在包括其他单独组件的异步高速缓存操作系统(例如,图4)内执行软件的处理器来实现。为了包含各个方面中启用的替代配置,实现方法1100的硬件在本文中称为“处理设备”。
在框1102中,处理设备可以接收针对硬件加速器高速缓存中的地址范围的异步高速缓存维护操作指令(例如,图3中的处理设备高速缓存308和图4中的高速缓存402)。处理设备可以在接收到异步高速缓存维护操作指令时激活异步高速缓存维护操作以进行执行。在框1104中,处理设备可以接收针对高速缓存中的地址的至少一个存储器访问请求或行填充请求。
在确定框1106中,处理设备可以确定存储器访问请求的地址或行填充请求是否在用于活动异步高速缓存维护操作指令的地址范围内。处理设备可以进行各种比较中的任意一种以确定所述地址是否在地址范围内,包括将所述地址与所述范围的开始和/或结束地址进行比较,以及将所述地址与以下各项中的一项进行比较:所述范围的开始和/或结束地址、基于所述范围的长度计算的、所述范围的开始和/或结束地址中的另一者;和/或所述地址范围的单个地址。
响应于确定存储器访问请求或行填充请求的地址在活动异步高速缓存维护操作指令的地址范围内(即,确定框1106=“是”),在框1108中,处理设备可以将活动异步高速缓存维护操作在修复队列(例如,图4中的修复队列408)中进行排队作为异步高速缓存维护操作。处理设备可以通过存储与经匹配地址相关联的异步高速缓存维护操作标签来完成此操作,所述经匹配地址可以包括活动地址或活动地址范围。
在确定框1110中,处理设备可以确定是否从修复队列执行异步高速缓存维护操作。如本文所讨论的,确定是否从修复队列执行异步高速缓存维护操作可以是基于异步高速缓存维护操作在修复队列中的位置(例如,在修复队列的顶部)、基于经过的时间、基于在用于异步高速缓存维护操作的地址范围中在相关高速缓存行上实现的操作的经过的次数、和/或基于相关高速缓存地址的空闲状态。
响应于确定不从修复队列执行异步高速缓存维护操作(即,确定框1110=“否”),处理设备可以在确定框1110连续地评估是否从修复队列执行异步高速缓存维护操作。
在框1112中,响应于确定从修复队列执行异步高速缓存维护操作(即,确定框1110=“是”),处理设备可以从修复队列中取回异步高速缓存维护操作作为活动异步高速缓存维护操作,并从修复队列执行活动异步高速缓存维护操作。在各个方面,响应于在框1102中接收异步高速缓存维护操作指令,可以基于异步高速缓存维护操作的先前激活来取回异步高速缓存维护操作作为活动异步高速缓存维护操作。在各个方面,在框1112中,可以基于处理设备接收的用于激活异步高速缓存维护操作的、与取回和执行异步高速缓存维护操作有关的信号,将异步高速缓存维护操作取回为活动异步高速缓存维护操作。可以延迟来自修复队列的活动异步高速缓存维护操作的执行,直到适当的时间为止,例如当高速缓存或高速缓存的总线空闲时。
响应于确定存储器访问请求或行填充请求的地址不在用于活动异步高速缓存维护操作指令的地址范围内(即,确定框1106=“否”),处理设备可以确定要执行哪些活动异步高速缓存维护操作1118。在各个方面,处理设备可以在活动异步高速缓存维护操作可用时执行所述活动异步高速缓存维护操作(根据高速缓存状态)。在各个方面,可以延迟活动高速缓存维护操作的执行,直到适当的时间为止,例如当高速缓存或高速缓存的总线空闲时。
在框1120中,处理设备可以针对高速缓存中的地址范围,执行活动异步高速缓存维护操作。
在框1112或框1120中针对高速缓存中的地址范围执行活动异步高速缓存维护操作之后,处理设备可以在框1114中以信号通知对活动异步高速缓存维护操作的执行的完成。可以向多个目的地发送信号,所述多个目的地包括:请求存储器访问或高速缓存中的行文件的主控,和/或高速缓存操作控制单元(例如,图4中的高速缓存操作控制单元404)。
在框1116中,处理设备可以解除分配所执行的活动异步高速缓存维护操作。对活动异步高速缓存维护操作的解除分配可以防止对高速缓存维护操作的未经请求的执行并释放资源,例如用于其他异步高速缓存维护操作的地址检查器(例如,图4中的地址检查器406)。
在各个方面,在方法1100期间的任意时刻,处理设备可以接收对于将异步高速缓存维护操作转换为同步高速缓存维护操作的请求。在异步高速缓存维护操作已超过处于修复队列中的阈值的情况下,可以将异步高速缓存维护操作转换为同步高速缓存维护操作。阈值可以基于与执行异步高速缓存维护操作的标准类似的标准。同步高速缓存维护操作可以与在执行同步高速缓存维护操作之前屏蔽高速缓存中的异步高速缓存维护操作的相关联的地址或相关联的地址范围的请求相关联,以防止在执行同步高速缓存维护操作之前对所述地址范围的其他访问。处理设备可以屏蔽异步高速缓存维护操作的相关联的地址或相关联的地址范围,并执行同步高速缓存维护操作。在执行同步高速缓存维护操作之后,类似于在框1114中以信号通知完成对活动异步高速缓存维护操作的执行,处理设备可以以信号通知完成对同步高速缓存维护操作的执行。类似于在框1116中解除分配执行的活动异步高速缓存维护操作,处理设备还可以解除分配被执行的同步高速缓存维护操作。
图12示出了根据方面的用于实现具有异步高速缓存维护操作的动态I/O相干工作负荷处理的方法1200。方法1200可以在计算设备中用在处理器(例如,图1和图2中的处理器14以及图3和图5-图10中的处理设备302)中执行的软件、通用硬件、专用硬件、或者由软件配置的处理器和专用硬件的组合来实现,例如用在包括其他单独组件的动态I/O相干性系统(例如,图3)和/或异步高速缓存操作系统(例如,图4)内执行软件的处理器来实现。为了包含各个方面中启用的替代配置,实现方法1200的硬件在本文中称为“处理设备”。
在框1202中,处理设备可以针对处理设备高速缓存(例如,图3中的处理设备高速缓存308、图4中的高速缓存402)和/或共享存储器(例如,图3中的共享存储器304)将I/O相干模式设置为“开启”。或者,处理设备可以针对处理设备高速缓存和/或共享存储器将非I/O相干模式设置为“关闭”。在各个方面,可以将I/O相干模式设置为“开启”以作为处理设备高速缓存和/或共享存储器的默认状态,因此将I/O相干模式设置为“开启”可能是不必要的。即使“开始”是默认的I/O相干模式状态,将I/O相干模式设置为“开启”可以是一种预防措施。
在框1204中,处理设备可以使用I/O相干模式在硬件加速器(例如,图3中的GPU306a、DSP 306b、定制硬件加速器306c和图5-图10中的硬件加速器306)上启动卸载的工作负荷执行。如本文所讨论的,启动所述执行对于将工作负荷卸载到硬件加速器而言可以是立即的,因为在使用I/O相干模式时不会因为将数据从处理设备传输到硬件加速器而导致开销。用于在处理设备与硬件加速器之间传输数据的存储器访问请求可以通过相干互连的I/O相干路径(例如,图3中的相干性域314)来路由。在处理设备与硬件加速器之间传输的数据可以包括:从处理设备到用于执行卸载的工作负荷的硬件加速器的数据,以及从硬件加速器到处理设备的作为执行的卸载的工作负荷的结果的数据。在处理设备和硬件加速器之间传输的数据可以通过共享存储器来传输。
在确定框1206中,处理设备可以确定硬件加速器是否已经完成了卸载的工作负荷。
响应于确定硬件加速器完成了卸载的工作负荷(即,确定框1206=“是”),处理设备可以在框1218中从硬件加速器接收执行卸载的工作负荷的结果。执行卸载的工作负荷的结果可以由硬件加速器输出到共享存储器,并由处理设备从共享存储器取回。完全以I/O相干模式来完成卸载工作负荷的执行可以表示:由于相干互连的I/O相干性机制管理所述数据的相干性,因而不需要高速缓存维护操作。
响应于确定硬件加速器未完成卸载的工作负荷(即,确定框1206=“否”),处理设备可以在确定框1208中确定是否检测到用于在I/O相干模式与非切换之间进行切换的动态触发。动态触发可以用于确定卸载的工作负荷何时可能增长到I/O相干模式开销代价可能是不期望的或不可接受的程度。确定是否检测到动态触发可以以各种方式的任意组合来完成。
在一些方面,动态触发可以包括预设或经计算的经过的时间,并且检测动态触发可以包括检测该时间已经过去。可以基于硬件加速器执行卸载的工作负荷的预期时间量来预设或计算该时间。在各个方面,卸载的工作负荷的预期执行时间可以基于各种因素,所述因素包括:卸载的工作负荷的大小和/或复杂性;针对硬件加速器的资源使用和/或可用性、和/或针对硬件加速器的资源使用和/或可用性,其包括电功率、计算能力、存储器空间、通信带宽;和/或环境因素,其包括温度。在各个方面,可以将该时间预设或计算为极小的值,例如零(0),以触发I/O相干模式与非I/O相干模式之间的立即切换。
在一些方面,动态触发可以包括感测处理设备转换到和/或处于空闲状态。空闲状态可以指示硬件加速器可能正在比预期要慢地执行卸载的工作负荷,因为处理设备已经执行完工作并且正在等待硬件加速器完成卸载的工作负荷。卸载工作负荷的目标是有效地使用计算资源来执行工作负荷。因此,转换到和/或处于空闲状态的处理设备可以指示对计算资源的低效使用。
在一些方面,动态触发可以包括对卸载的工作负荷的执行因使用I/O相干路径而遭受不良情况的指示符。可以基于各种度量来检测卸载的工作负荷的不良情况。增强的工作负荷可以向驱动器通知性能。经由测试或随机测试,使用静态分配或基于工作负荷分类的方法可能导致标准超时或指示工作负荷不良情况的信号。轮询硬件性能寄存器可以提供用于指示工作负荷不良情况的数据。持续的、接近最大值的高互连操作级别(例如带宽和/或未完成的事务)可以指示节流。高的加速器存储器延时可以指示延时限制。高的加速器存储器背压可以指示带宽节流。由于存储器结合高的占用存储器请求队列而导致的高的加速器空闲可以指示带宽是有限的。
响应于确定未检测到用于在I/O相干模式与非I/O相干模式之间进行切换的动态触发(即,确定框1208=“否”),处理设备可以在确定框1206中确定硬件加速器是否完成卸载的工作负荷。
响应于确定检测到用于在I/O相干模式与非I/O相干模式之间进行切换的动态触发(即,确定框1208=“是”),处理设备可以在框1210中执行推迟的处理设备高速缓存维护。如本文讨论的,在准备从I/O相干模式切换到非I/O相干模式时,处理设备可以执行对于所述处理设备高速缓存的高速缓存清除维护操作。在框1210中,硬件加速器可以在处理设备执行高速缓存清除维护操作的同时继续执行卸载的工作负荷。
在确定框1212中,处理设备可以确定硬件加速器是否完成了卸载的工作负荷。
响应于确定硬件加速器完成了卸载的工作负荷(即,确定框1212=“是”),处理设备可以在框1218中接收从硬件加速器接收的卸载工作负荷的执行结果。完全以I/O相干模式完成对卸载的工作负荷的执行可能意味着由于相干互连的I/O相干性机制管理数据的相干性,因此不需要高速缓存维护操作。虽然可能已经执行了高速缓存清除维护操作,但是执行高速缓存清除维护操作可能不会导致额外的开销,这是因为在I/O相干模式中,高速缓存清除维护操作的执行与卸载的工作负荷的执行是并行的。
响应于确定硬件加速器未完成卸载的工作负荷(即,确定框1212=“否”),处理设备可以在框1214中将处理设备高速缓存和/或共享存储器从I/O相干模式切换为非I/O相干模式。在框1214中,从I/O相干模式切换到非I/O相干模式可以包括将I/O相干模式的状态设置为“关闭”或将非I/O相干模式的状态设置为“开启”。从I/O相干模式到非I/O相干模式的切换可以改变数据和存储器访问请求通过相干互连进行的路由,使得数据和请求不再通过相干性域进行路由,并且不再针对数据和存储器访问请求来实现相干性操作。相反地,处理设备可以响应于处理设备高速缓存和/或共享存储器被设置为非I/O相干模式而开始实现高速缓存维护操作。
在框1216中,硬件加速器可以在处理设备高速缓存和/或共享存储器处于非I/O相干模式时继续执行卸载的工作负荷,如本文中进一步描述的。
图13示出了根据一个方面的用于实现具有异步高速缓存维护操作的非I/O相干工作负荷处理和/或动态I/O相干工作负荷处理的方法1300。方法1300可以在计算设备中用在处理器(例如,图1和图2中的处理器14以及图3和图5-图10中的处理设备302)中执行的软件、通用硬件、专用硬件、或者由软件配置的处理器和专用硬件的组合来实现,例如以在包括其他单独组件的动态I/O相干性系统(例如,图3)和/或异步高速缓存操作系统(例如,图4)内执行软件的处理器来实现。为了包含各个方面中启用的替代配置,实现方法1300的硬件在本文中称为“处理设备”。在各个方面,方法1300可以是用于实现具有异步高速缓存维护操作的非I/O相干工作负荷处理的独立方法,并且还可以描述方法1200的用于实现具有异步高速缓存维护操作的动态I/O相干工作负荷处理的框1214和1216。
在可选框1302中,处理设备可以针对处理设备高速缓存(例如,图3中的处理设备高速缓存308和图4中的高速缓存402)和/或共享存储器(例如,图3中的共享存储器304),将I/O相干模式设置为“关闭”。或者,处理设备可以针对处理设备高速缓存和/或共享存储器,将非I/O相干模式设置为“开启”。在各个方面,可以将I/O相干模式设置为“开启”或者将非I/O相干模式设置为“开启”作为默认和/或用于执行如方法1200中描述的动态I/O相干工作负荷处理。
在可选框1304中,处理设备可以执行处理设备高速缓存维护。如本文所讨论的,在准备以非I/O相干模式卸载工作负荷时,处理设备可以针对处理设备高速缓存执行高速缓存清除维护操作。
在框1306中,为了实现具有异步高速缓存维护操作的非I/O相干工作负荷处理,处理设备可以在硬件加速器(例如,图3中的GPU 306a、DSP 306b、定制硬件加速器306c和图5-图10中的硬件加速器306)上启动对卸载的工作负荷的执行。在框1306中,为了实现具有异步高速缓存维护操作的动态I/O相干工作负荷处理,硬件加速器可以执行剩余的卸载的工作负荷。
在框1308中,处理设备可以从修复队列(例如,图4中的修复队列408)执行活动异步高速缓存维护操作。
在确定框1310中,处理设备可以确定硬件加速器是否完成了卸载的工作负荷。
响应于确定硬件加速器未完成卸载的工作负荷(即,确定框1310=“否”),处理设备可以在确定框1310中连续地确定硬件加速器是否完成了卸载的工作负荷。在硬件加速器未完成卸载的工作负荷时,硬件加速器可以在框1306中继续执行剩余的卸载的工作负荷并且在框1308中执行活动异步高速缓存维护操作。在硬件加速器对卸载的工作负荷的执行期间,由于处理设备能够执行活动异步高速缓存维护操作,所以剩余工作负荷可能由于活动异步高速缓存维护操作的并行执行而几乎没有导致开销。
响应于确定硬件加速器完成了卸载的工作负荷(即,确定框1310=“是”),处理设备可以在框1312中,执行用于非I/O相干模式的任意剩余的活动异步高速缓存维护操作。如本文所讨论的,为了使卸载的工作负荷的执行结果可用于处理设备,处理设备可以实现高速缓存无效化维护操作,以将处理设备高速缓存空间的未来读取引导到在硬件加速器输出结果之后、当前将所述结果存储作为未命中的共享存储器(图3中的共享存储器304)。高速缓存无效化维护操作还可以产生开销,所述开销可以取决于卸载的工作负荷结果的数据量或处理设备高速缓存中用于存储卸载的工作负荷结果的空间而变化。开销可以延迟卸载的工作负荷结果供处理设备访问、使用和/或输出的可用性。然而,由于在完成对卸载的工作负荷的执行之前的、高速缓存无效化维护操作的并行执行和异步执行,该延迟可以减少。
在框1314中,处理设备可以接收卸载的工作负荷结果。处理设备可以在处理设备高速缓存中接收和存储卸载的工作负荷的执行结果。
各种方面(包括但不限于上面参考图1-图13描述的方面)可以在包括移动计算设备的各种计算系统中实现,其示例适用于图14中示出的各个方面。移动计算设备1400可以包括耦合到触摸屏控制器1404和内部存储器1406的处理器1402。处理器1402可以是被指定用于一般或特定处理任务的一个或多个多核集成电路。内部存储器1406可以是易失性或非易失性存储器,并且还可以是安全和/或加密的存储器,或不安全和/或未加密的存储器、或其任意组合。可以利用的存储器类型的示例包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1404和处理器1402还可以耦合到触摸屏面板1412,例如电阻感测触摸屏、电容感应触摸屏、红外感测触摸屏等。另外,计算设备1400的显示器不需要具有触摸屏幕功能。
移动计算设备1400可以具有用于发送和接收通信的一个或多个无线信号收发器1408(例如,Peanut、蓝牙,ZigBee、Wi-Fi、RF无线单元)和天线1410,其彼此耦合和/或耦合到处理器1402。收发器1408和天线1410可以与上文提到的电路一起使用,以实现各种无线传输协议栈和接口。移动计算设备1400可以包括蜂窝网络无线调制解调器芯片1416,其能够实现经由蜂窝网络的通信并且耦合到处理器。
移动计算设备1400可以包括耦合到处理器1402的外围设备连接接口1418。外围设备连接接口1418可以单独地配置为接受一种类型的连接,或者可以被配置为接受各种类型的物理连接和通信连接(通用连接或专有连接),其例如通用串行总线(USB)、FireWire、Thunderbolt或PCIe。外围设备连接接口1418还可以耦合到被类似配置的外围设备连接端口(未示出)。
移动计算设备1400还可以包括用于提供音频输出的扬声器1414。移动计算设备1400还可以包括由塑料、金属或材料组合构成的外壳1420,其用于容纳本文所述的全部或一些组件。移动计算设备1400可以包括耦合到处理器1402的电源1422,其例如一次性电池或可充电电池。可充电电池还可以耦合到外围设备连接端口,以从移动计算设备1400外部的源接收充电电流。移动计算设备1400还可以包括用于接收用户输入的物理按钮1424。移动计算设备1400还可以包括用于打开和关闭移动计算设备1400的电源按钮1426。
各种方面(包括但不限于上面参考图1-图13描述的方面)可以在包括膝上型计算机1500的各种计算系统中实现,所述膝上型计算机1500的示例在图15中示出。许多膝上型计算机包括用作计算机的指示设备的触摸板触摸表面1517,并因此可以接收类似于在配备有触摸屏显示器并且如上所述的计算设备上实现的那些的拖动、滚动和轻弹手势。膝上型计算机1500通常包括耦合到易失性存储器1512的处理器1511和大容量非易失性存储器,例如闪存的磁盘驱动器1513。另外,计算机1500可以具有一个或多个天线1508和/或蜂窝电话收发器1516,所述一个或多个天线1508用于发送和接收可以连接到无线数据链路的电磁辐射,所述蜂窝电话收发器1516耦合到处理器1511。计算机1500还可以包括耦合到处理器1511的软盘驱动器1514和压缩光盘(CD)驱动器1515。在笔记本配置中,计算机外壳包括触摸板1517、键盘1518和显示器1519,其都耦合到处理器1511。计算设备的其他配置可以包括众所周知的(例如,经由USB输入)耦合到处理器的计算机鼠标或轨迹球,其也可以与各个方面结合使用。
各种方面(包括但不限于上面参考图1-图13描述的方面)也可以在固定计算系统中实现,所述固定计算系统例如各种商业上可用服务器中的任意一种。图16中示出了示例性服务器1600。这种服务器1600通常包括耦合到易失性存储器1602的一个或多个多核处理器组件1601和大容量非易失性存储器,例如磁盘驱动器1604。如图16所示,可以通过将多核处理器组件1601插入组件的机架中而将多核处理器组件1601添加到服务器1600。服务器1600还可以包括耦合到处理器1601的软盘驱动器、压缩光盘(CD)或数字通用光盘(DVD)盘驱动器1606。服务器1600还可以包括耦合到多核处理器组件1601以与网络1605建立网络接口连接的网络访问端口1603,所述网络1605例如耦合到其他广播系统计算机和服务器的局域网、因特网、公共交换电话网和/或蜂窝数据网(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或任意其他类型的蜂窝数据网络)。
用于在可编程处理器上执行以执行各个方面的操作的计算机程序代码或“程序代码”可以用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl等高级编程语言或各种其他编程语言来编写。如本申请中所使用的,计算机可读存储介质上存储的程序代码或程序可以指代其格式是处理器可理解的机器语言代码(例如,目标代码)。
上述方法描述和过程流程图仅是作为说明性示例而被提供的,并且不旨在要求或暗示各个方面的操作必须以所呈现的顺序来执行。如本领域技术人员将理解的,前述方面中的操作的顺序可以以任何顺序来执行。诸如“其后”、“然后”、“接着”等词语并不旨在限制操作的顺序;这些词语仅用于引导读者通读该方法的描述。此外,以单数形式对权利要求要素的任何引用(例如,使用冠词“一”、“一个”或“所述”),不应被解释为将该要素限制为单数。
结合各个方面所描述的各种示例性的逻辑框、模块、电路和算法操作均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上面对各种示例性的组件、框、模块、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于具体的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个具体应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为导致背离本公开内容的保护范围。
可以利用被设计为执行本文中所描述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,来实现或执行结合用于实现本文公开的各方面所描述的各种示例性的逻辑单元、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。或者,一些操作或方法可以由特定于给定功能的电路执行。
在一个或多个方面中,所描述的功能可以以硬件、软件、固件或其任意组合来实现。如果以软件来实现,则可以将这些功能作为一个或多个指令或代码存储在非暂时性计算机可读或处理器可读介质上。本文公开的方法或算法的操作可以体现在处理器可执行软件模块中,所述处理器可执行软件模块可以驻留在非暂时性计算机可读或处理器可读存储介质上。非暂时性计算机可读或处理器可读存储介质可以是可由计算机或处理器存取的任意存储介质。通过示例的方式而不是限制的方式,这种非暂时性计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质。如本文中所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上面的组合也应当包括在非暂时性计算机可读和处理器可读介质的范围内。另外,方法或算法的操作可以作为代码和/或指令的一个或任意组合或集合而驻留在可以合并到计算机程序产品中的非暂时性处理器可读介质和/或计算机可读介质上。
为使本领域任何技术人员能够实现或者使用权利要求,提供了对所公开的方面的先前描述。对于本领域技术人员来说,对这些方面的各种修改将是显而易见的,并且,本文中定义的总体原理也可以在不脱离权利要求书的保护范围的情况下应用于其它方面和实现方式。因此,本公开内容并不旨在限于本文中所描述的方面和实现方式,而是要符合与所附权利要求书以及本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (24)
1.一种在计算设备上实现异步高速缓存维护操作的方法,包括:
激活第一异步高速缓存维护操作;
确定对高速缓存的存储器访问请求的活动地址是否在所述第一异步高速缓存维护操作的第一地址范围内,其中,执行针对所述第一地址范围内的所述活动地址的所述存储器访问请求并同时执行所述第一异步高速缓存维护操作导致所述高速缓存中的冲突;以及
响应于确定所述活动地址在所述第一地址范围内,通过存储第一异步高速缓存维护操作标签,将所述第一异步高速缓存维护操作在修复队列中进行排队以作为排队的第一异步高速缓存维护操作,所述第一异步高速缓存维护操作标签被配置为标识所述第一异步高速缓存维护操作和所述活动地址。
2.根据权利要求1所述的方法,还包括:
确定是否执行所排队的第一异步高速缓存维护操作;
响应于确定执行所排队的第一异步高速缓存维护操作,从所述修复队列接收所排队的第一异步高速缓存维护操作;
激活从所述修复队列接收的、由所排队的第一异步高速缓存维护操作标识的所述第一异步高速缓存维护操作;
执行所述第一异步高速缓存维护操作;以及
在完成对所述第一异步高速缓存维护操作的执行时,解除分配所述第一异步高速缓存维护操作。
3.根据权利要求2所述的方法,其中,确定是否执行所排队的第一异步高速缓存维护操作包括:基于以下各项中的一项,来确定是否执行所排队的第一异步高速缓存维护操作:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
4.根据权利要求2所述的方法,其中,执行所述第一异步高速缓存维护操作包括:与执行从处理设备卸载的工作负荷并行地执行所述第一异步高速缓存维护操作,所述处理设备耦合到所述第一异步高速缓存维护操作正在其上进行执行的所述高速缓存。
5.根据权利要求2所述的方法,还包括:
确定针对执行所排队的第一异步高速缓存维护操作的阈值是否被超过;以及
在所述阈值已被超过的情况下:
将所述第一异步高速缓存维护操作转换为同步高速缓存维护操作;
屏蔽针对所述第一地址范围的任意存储器访问请求;以及
执行所述同步高速缓存维护操作,
其中,所述阈值基于以下各项中的一项:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
6.根据权利要求1所述的方法,还包括:
激活第二异步高速缓存维护操作;
确定对所述高速缓存的所述存储器访问请求的所述活动地址是否在所述第二异步高速缓存维护操作的第二地址范围内;以及
响应于确定所述活动地址在所述第二地址范围内,通过存储第二异步高速缓存维护操作标签,将所述第二异步高速缓存维护操作在所述修复队列中进行排队以作为排队的第二异步高速缓存维护操作,所述第二异步高速缓存维护操作标签被配置为标识所述第二异步高速缓存维护操作和所述活动地址。
7.一种计算设备,包括:
高速缓存;
地址范围检查器;
修复队列;以及
高速缓存操作控制单元,其耦合到所述高速缓存、所述地址范围检查器和所述修复队列,
其中,所述高速缓存操作控制单元被配置为执行包括激活第一异步高速缓存维护操作的操作,
其中,所述地址范围检查器被配置为执行包括以下内容的操作:确定对高速缓存的存储器访问请求的活动地址是否在所述第一异步高速缓存维护操作的第一地址范围内,其中,执行针对所述第一地址范围内的所述活动地址的所述存储器访问请求并同时执行所述第一异步高速缓存维护操作导致所述高速缓存中的冲突,以及
其中,所述修复队列被配置为执行包括以下内容的操作:响应于确定所述活动地址在所述第一地址范围内,通过存储第一异步高速缓存维护操作标签,将所述第一异步高速缓存维护操作进行排队以作为排队的第一异步高速缓存维护操作,所述第一异步高速缓存维护操作标签被配置为标识所述第一异步高速缓存维护操作和所述活动地址。
8.根据权利要求7所述的计算设备,还包括:步进器,其耦合到所述高速缓存操作控制单元、所述修复队列和所述高速缓存,并且被配置为执行包括以下各项的操作:
确定是否执行所排队的第一异步高速缓存维护操作;以及
响应于确定执行所排队的第一异步高速缓存维护操作,从所述修复队列接收所排队的第一异步高速缓存维护操作;
其中,所述高速缓存操作控制单元被配置为执行还包括以下内容的操作:激活从所述修复队列接收的、由所排队的第一异步高速缓存维护操作标识的所述第一异步高速缓存维护操作,
其中,所述步进器被配置为执行还包括以下内容的操作:执行所述第一异步高速缓存维护操作,以及
其中,所述高速缓存操作控制单元被配置为执行还包括以下内容的操作:在完成对所述第一异步高速缓存维护操作的执行时,解除分配所述第一异步高速缓存维护操作。
9.根据权利要求8所述的计算设备,其中,所述步进器被配置为执行操作使得确定是否执行所排队的第一异步高速缓存维护操作包括:基于以下各项中的一项,来确定是否执行所排队的第一异步高速缓存维护操作:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
10.根据权利要求8所述的计算设备,还包括耦合到所述高速缓存的处理设备,
其中,所述步进器被配置为执行操作使得执行所述第一异步高速缓存维护操作包括:与执行从所述处理设备卸载的工作负荷并行地执行所述第一异步高速缓存维护操作,所述处理设备耦合到所述第一异步高速缓存维护操作正在其上进行执行的所述高速缓存。
11.根据权利要求8所述的计算设备,其中:
所述步进器被配置为执行还包括以下内容的操作:确定针对执行所排队的第一异步高速缓存维护操作的阈值是否被超过;
所述高速缓存操作控制单元被配置为在所述阈值已被超过的情况下执行还包括以下各项的操作:
将所述第一异步高速缓存维护操作转换为同步高速缓存维护操作;以及
屏蔽针对所述第一地址范围的任意存储器访问请求;以及
所述步进器被配置为在所述阈值已被超过的情况下执行还包括以下内容的操作:执行所述同步高速缓存维护操作,
其中,所述阈值基于以下各项中的一项:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
12.根据权利要求7所述的计算设备,其中:
所述高速缓存操作控制单元被配置为执行还包括以下内容的操作:激活第二异步高速缓存维护操作;
所述地址范围检查器被配置为执行还包括以下内容的操作:确定对所述高速缓存的所述存储器访问请求的所述活动地址是否在所述第二异步高速缓存维护操作的第二地址范围内;以及
所述修复队列被配置为执行还包括以下内容的操作:响应于确定所述活动地址在所述第二地址范围内,通过存储第二异步高速缓存维护操作标签,将所述第二异步高速缓存维护操作在所述修复队列中进行排队以作为排队的第二异步高速缓存维护操作,所述第二异步高速缓存维护操作标签被配置为标识所述第二异步高速缓存维护操作和所述活动地址。
13.一种计算设备,包括:
高速缓存;
修复队列;
用于激活第一异步高速缓存维护操作的单元;
用于确定对所述高速缓存的存储器访问请求的活动地址是否在所述第一异步高速缓存维护操作的第一地址范围内的单元,其中,执行针对所述第一地址范围内的所述活动地址的所述存储器访问请求并同时执行所述第一异步高速缓存维护操作导致所述高速缓存中的冲突;以及
用于响应于确定所述活动地址在所述第一地址范围内,通过存储第一异步高速缓存维护操作标签,将所述第一异步高速缓存维护操作在所述修复队列中进行排队以作为排队的第一异步高速缓存维护操作的单元,所述第一异步高速缓存维护操作标签被配置为标识所述第一异步高速缓存维护操作和所述活动地址。
14.根据权利要求13所述的计算设备,还包括:
用于确定是否执行所排队的第一异步高速缓存维护操作的单元;
用于响应于确定执行所排队的第一异步高速缓存维护操作,从所述修复队列接收所排队的第一异步高速缓存维护操作的单元;
用于激活从所述修复队列接收的、由所排队的第一异步高速缓存维护操作标识的所述第一异步高速缓存维护操作的单元;
用于执行所述第一异步高速缓存维护操作的单元;以及
用于在完成对所述第一异步高速缓存维护操作的执行时,解除分配所述第一异步高速缓存维护操作的单元。
15.根据权利要求14所述的计算设备,其中,用于确定是否执行所排队的第一异步高速缓存维护操作的单元包括用于基于以下各项中的一项,来确定是否执行所排队的第一异步高速缓存维护操作的单元:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
16.根据权利要求14所述的计算设备,还包括处理设备,
其中,用于执行所述第一异步高速缓存维护操作的单元包括用于与执行从所述处理设备卸载的工作负荷并行地执行所述第一异步高速缓存维护操作的单元,所述处理设备耦合到所述第一异步高速缓存维护操作正在其上进行执行的所述高速缓存。
17.根据权利要求14所述的计算设备,还包括:
用于确定针对执行所排队的第一异步高速缓存维护操作的阈值是否被超过的单元;
用于在所述阈值已被超过的情况下将所述第一异步高速缓存维护操作转换为同步高速缓存维护操作的单元;
用于在所述阈值已被超过的情况下屏蔽针对所述第一地址范围的任意存储器访问请求的单元;以及
用于在所述阈值已被超过的情况下执行所述同步高速缓存维护操作的单元,
其中,所述阈值基于以下各项中的一项:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
18.根据权利要求13所述的计算设备,还包括:
用于激活第二异步高速缓存维护操作的单元;
用于确定对所述高速缓存的所述存储器访问请求的所述活动地址是否在所述第二异步高速缓存维护操作的第二地址范围内的单元;以及
用于响应于确定所述活动地址在所述第二地址范围内,通过存储第二异步高速缓存维护操作标签,将所述第二异步高速缓存维护操作在所述修复队列中进行排队以作为排队的第二异步高速缓存维护操作的单元,所述第二异步高速缓存维护操作标签被配置为标识所述第二异步高速缓存维护操作和所述活动地址。
19.一种非暂时性处理器可读介质,其上存储有处理器可执行指令,所述处理器可执行指令被配置为使得计算设备的处理设备执行包括以下各项的操作:
激活第一异步高速缓存维护操作;
确定对高速缓存的存储器访问请求的活动地址是否在所述第一异步高速缓存维护操作的第一地址范围内,其中,执行针对所述第一地址范围内的所述活动地址的所述存储器访问请求并同时执行所述第一异步高速缓存维护操作导致所述高速缓存中的冲突;以及
响应于确定所述活动地址在所述第一地址范围内,通过存储第一异步高速缓存维护操作标签,将所述第一异步高速缓存维护操作在修复队列中进行排队以作为排队的第一异步高速缓存维护操作,所述第一异步高速缓存维护操作标签被配置为标识所述第一异步高速缓存维护操作和所述活动地址。
20.根据权利要求19所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括以下各项的操作:
确定是否执行所排队的第一异步高速缓存维护操作;
响应于确定执行所排队的第一异步高速缓存维护操作,从所述修复队列接收所排队的第一异步高速缓存维护操作;
激活从所述修复队列接收的、由所排队的第一异步高速缓存维护操作标识的所述第一异步高速缓存维护操作;
执行所述第一异步高速缓存维护操作;以及
在完成对所述第一异步高速缓存维护操作的执行时,解除分配所述第一异步高速缓存维护操作。
21.根据权利要求20所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行操作使得确定是否执行所排队的第一异步高速缓存维护操作包括:基于以下各项中的一项,来确定是否执行所排队的第一异步高速缓存维护操作:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
22.根据权利要求20所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行操作使得执行所述第一异步高速缓存维护操作包括:与执行从处理设备卸载的工作负荷并行地执行所述第一异步高速缓存维护操作,所述处理设备耦合到所述第一异步高速缓存维护操作正在其上进行执行的所述高速缓存。
23.根据权利要求20所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括以下各项的操作:
确定针对执行所排队的第一异步高速缓存维护操作的阈值是否被超过;以及
在所述阈值已被超过的情况下:
将所述第一异步高速缓存维护操作转换为同步高速缓存维护操作;
屏蔽针对所述第一地址范围的任意存储器访问请求;以及
执行所述同步高速缓存维护操作,
其中,所述阈值基于以下各项中的一项:经过的时间以及所排队的第一异步高速缓存维护操作的所述第一地址范围中的地址的空闲状态。
24.根据权利要求19所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括以下各项的操作:
激活第二异步高速缓存维护操作;
确定对所述高速缓存的所述存储器访问请求的所述活动地址是否在所述第二异步高速缓存维护操作的第二地址范围内;以及
响应于确定所述活动地址在所述第二地址范围内,通过存储第二异步高速缓存维护操作标签,将所述第二异步高速缓存维护操作在所述修复队列中进行排队以作为排队的第二异步高速缓存维护操作,所述第二异步高速缓存维护操作标签被配置为标识所述第二异步高速缓存维护操作和所述活动地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/268,895 US10157139B2 (en) | 2016-09-19 | 2016-09-19 | Asynchronous cache operations |
US15/268,895 | 2016-09-19 | ||
PCT/US2017/047988 WO2018052672A1 (en) | 2016-09-19 | 2017-08-22 | Asynchronous cache operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109716305A CN109716305A (zh) | 2019-05-03 |
CN109716305B true CN109716305B (zh) | 2020-05-26 |
Family
ID=59772733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780057015.3A Active CN109716305B (zh) | 2016-09-19 | 2017-08-22 | 实现异步高速缓存维护操作的方法、计算设备以及介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10157139B2 (zh) |
CN (1) | CN109716305B (zh) |
WO (1) | WO2018052672A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10296338B2 (en) * | 2016-12-09 | 2019-05-21 | Intel Corporation | System, apparatus and method for low overhead control transfer to alternate address space in a processor |
US10116436B1 (en) * | 2017-09-26 | 2018-10-30 | Intel Corporation | Techniques for preventing memory timing attacks |
US11327798B1 (en) * | 2019-05-08 | 2022-05-10 | Meta Platforms, Inc. | Accelerating an application code portion based on a received configuration |
US10970225B1 (en) * | 2019-10-03 | 2021-04-06 | Arm Limited | Apparatus and method for handling cache maintenance operations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311252B1 (en) * | 1997-06-30 | 2001-10-30 | Emc Corporation | Method and apparatus for moving data between storage levels of a hierarchically arranged data storage system |
CN1386224A (zh) * | 2000-07-31 | 2002-12-18 | M-系统快闪盘开拓者公司 | 使非易失性存储器作为数据存储/处理设备运转时能执行代码的系统和方法 |
CN101013398A (zh) * | 2006-01-30 | 2007-08-08 | 国际商业机器公司 | 数据处理系统和方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122711A (en) | 1997-01-07 | 2000-09-19 | Unisys Corporation | Method of and apparatus for store-in second level cache flush |
US5875472A (en) * | 1997-01-29 | 1999-02-23 | Unisys Corporation | Address conflict detection system employing address indirection for use in a high-speed multi-processor system |
US6523098B1 (en) * | 1999-12-22 | 2003-02-18 | Intel Corporation | Mechanism for efficient low priority write draining |
US20050144379A1 (en) * | 2003-12-31 | 2005-06-30 | Eschmann Michael K. | Ordering disk cache requests |
US7263586B1 (en) | 2004-02-17 | 2007-08-28 | Sun Microsystems, Inc. | Cache coherency for multiple independent cache of a domain |
ATE458222T1 (de) * | 2004-06-08 | 2010-03-15 | Freescale Semiconductor Inc | Aufrechterhaltung der cachespeicherkoherenz zum direkten zugriff (dma), abschluss einer aufgabe, zur synchronisierung |
US7366841B2 (en) | 2005-02-10 | 2008-04-29 | International Business Machines Corporation | L2 cache array topology for large cache with different latency domains |
GB0603552D0 (en) | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
GB2481232A (en) * | 2010-06-16 | 2011-12-21 | Advanced Risc Mach Ltd | Cache for a multiprocessor system which can treat a local access operation as a shared access operation |
US8935485B2 (en) | 2011-08-08 | 2015-01-13 | Arm Limited | Snoop filter and non-inclusive shared cache memory |
US9021228B2 (en) | 2013-02-01 | 2015-04-28 | International Business Machines Corporation | Managing out-of-order memory command execution from multiple queues while maintaining data coherency |
US10509725B2 (en) | 2013-03-08 | 2019-12-17 | Oracle International Corporation | Flushing by copying entries in a non-coherent cache to main memory |
US9418010B2 (en) | 2013-04-17 | 2016-08-16 | Apple Inc. | Global maintenance command protocol in a cache coherent system |
-
2016
- 2016-09-19 US US15/268,895 patent/US10157139B2/en active Active
-
2017
- 2017-08-22 CN CN201780057015.3A patent/CN109716305B/zh active Active
- 2017-08-22 WO PCT/US2017/047988 patent/WO2018052672A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311252B1 (en) * | 1997-06-30 | 2001-10-30 | Emc Corporation | Method and apparatus for moving data between storage levels of a hierarchically arranged data storage system |
CN1386224A (zh) * | 2000-07-31 | 2002-12-18 | M-系统快闪盘开拓者公司 | 使非易失性存储器作为数据存储/处理设备运转时能执行代码的系统和方法 |
CN101013398A (zh) * | 2006-01-30 | 2007-08-08 | 国际商业机器公司 | 数据处理系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018052672A1 (en) | 2018-03-22 |
US20180081817A1 (en) | 2018-03-22 |
CN109716305A (zh) | 2019-05-03 |
US10157139B2 (en) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10339058B2 (en) | Automatic cache coherency for page table data | |
CN109716305B (zh) | 实现异步高速缓存维护操作的方法、计算设备以及介质 | |
US10255181B2 (en) | Dynamic input/output coherency | |
US10503656B2 (en) | Performance by retaining high locality data in higher level cache memory | |
US10628321B2 (en) | Progressive flush of cache memory | |
US20220113901A1 (en) | Read optional and write optional commands | |
US20190087344A1 (en) | Reducing Clean Evictions In An Exclusive Cache Memory Hierarchy | |
US20180336136A1 (en) | Input/output-coherent Look-ahead Cache Access | |
US20160055093A1 (en) | Supplemental Write Cache Command For Bandwidth Compression | |
JP2018511105A (ja) | マルチクラスタシステムにおいて利用可能なキャッシュを選択する方法 | |
EP3510487B1 (en) | Coherent interconnect power reduction using hardware controlled split snoop directories | |
JP2018511111A (ja) | ビクティムキャッシュモードを向上させるためのプロセススケジューリング | |
US10248565B2 (en) | Hybrid input/output coherent write | |
US9043507B2 (en) | Information processing system | |
US11907138B2 (en) | Multimedia compressed frame aware cache replacement policy |
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 |