CN109716306A - 动态输入/输出相干性 - Google Patents
动态输入/输出相干性 Download PDFInfo
- Publication number
- CN109716306A CN109716306A CN201780056866.6A CN201780056866A CN109716306A CN 109716306 A CN109716306 A CN 109716306A CN 201780056866 A CN201780056866 A CN 201780056866A CN 109716306 A CN109716306 A CN 109716306A
- Authority
- CN
- China
- Prior art keywords
- workload
- hardware accelerator
- coherence mode
- execution
- processing equipment
- 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/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0877—Cache access modes
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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/505—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 the load
-
- 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
-
- 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/12—Replacement control
-
- 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/509—Offload
-
- 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/1041—Resource optimization
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
各方面包括用于在计算设备上实现动态输入/输出(I/O)相干工作负荷处理的计算设备、装置、以及由该装置实现的方法。方面方法可以包括:由处理设备将工作负荷卸载到硬件加速器以使用I/O相干模式来执行;当工作负荷由硬件加速器执行时,检测用于从I/O相干模式切换到非I/O相干模式的动态触发;以及当工作负荷由硬件加速器执行时,从I/O相干模式切换到非I/O相干模式。
Description
背景技术
硬件加速器可以用于帮助中央处理单元(CPU)处理工作负荷。工作负荷通常需要使用来自CPU高速缓存的数据。为了向加速器提供来自CPU高速缓存的数据,需要实现高速缓存维护操作。但是,高速缓存维护操作可能会对处理卸载到加速器的工作负荷的性能产生负面影响。手动高速缓存维护操作的执行通常需要很长时间才能将工作卸载到加速器。必须在加速器运行之前实施高速缓存清除维护操作,并且必须在加速器运行后实施高速缓存无效化维护操作。少量的工作负荷卸载到加速器对于提高处理性能越来越重要。这些少量的工作负荷卸载可能会因高速缓存维护代价而遭遇最大的性能降级。
可以在不必实施代价高的高速缓存维护过程的情况下,使用输入/输出(I/O)相干性将工作卸载到加速器。然而,用于卸载工作负荷的I/O相干路径由于较低性能的信号传输(例如,较低带宽)而引入了开销。由于I/O相干路径的各种因素,I/O相干性代价可能对处理卸载的工作负荷产生负面的影响。
发明内容
各个方面可以包括用于在计算设备上实现动态输入/输出(I/O)相干性工作负荷处理的装置和方法。各个方面可以包括:处理设备将工作负荷卸载到硬件加速器以使用I/O相干模式来执行;当所述工作负荷由硬件加速器执行时,检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发;响应于检测到所述动态触发,当所述工作负荷由硬件加速器执行时,从所述I/O相干模式切换到所述非I/O相干模式。
一些方面还可以包括:判断由所述硬件加速器对所述工作负荷的执行是否完成,其中,当所述工作负荷由硬件加速器执行时检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发可以包括:响应于确定由硬件加速器对所述工作负荷的执行未完成,检测用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发。
一些方面还可以包括:响应于检测到用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发,当所述工作负荷由硬件加速器执行时,执行对所述处理设备的高速缓存的高速缓存清除维护操作;在所述I/O相干模式下,由共享存储器从所述硬件加速器接收所卸载的工作负荷的结果;判断由所述硬件加速器对所述工作负荷的执行是否完成;响应于确定所述硬件加速器完成了所述工作负荷的执行,在不实现对所述处理设备的高速缓存的高速缓存无效化维护操作的情况下,接收所卸载的工作负荷的所述结果。
一些方面还可以包括:判断由硬件加速器对所述工作负荷的执行是否完成,其中,当所述工作负荷由硬件加速器执行时,从所述I/O相干模式切换到非I/O相干模式可以包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,从所述I/O相干模式切换到所述非I/O相干模式;在所述非I/O相干模式下,由共享存储器从硬件加速器接收所卸载的工作负荷的结果;响应于确定所述硬件加速器完成了所述工作负荷的执行,执行对所述处理设备的高速缓存的高速缓存无效化维护操作;接收所卸载的工作负荷的所述结果。这些方面还可以包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,由硬件加速器执行所卸载的工作负荷的剩余部分。
在一些方面,检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发可以包括执行以下各项中的至少一项:检测经过的时间、检测所述处理设备处于空闲状态、以及检测所卸载的工作负荷的执行的不良情况。在一些方面,检测所卸载的工作负荷的执行的不良情况可以包括以下各项中的至少一项:从增加的工作负荷接收针对驱动器的性能的通知、基于工作负荷类别来使用静态分配或方法、针对指示不良情况的数据来轮询硬件性能寄存器、测量接近最大值的互连操作水平、测量加速器存储器延时、测量加速器存储器背压、以及检测硬件加速器空闲状态。
另外的方面包括一种计算设备,该计算设备具有被配置为执行上文所概述的方法的操作的存储器、硬件加速器和处理器。另外的方面包括一种计算设备,该计算设备具有用于执行上文所概述的方法的功能的单元。另外的方面包括其上存储有处理器可执行指令的非暂时性处理器可读存储介质,其中所述处理器可执行指令被配置为使计算设备的处理设备执行上文所概述的方法的操作。
附图说明
被并入本文并且构成本说明书的一部分的附图示出了各个方面的示例性方面,并且连同上文给出的概括描述以及下面给出的具体实施方式一起来解释权利要求的特征。
图1是示出适合于实现方面的计算设备的组件框图。
图2是示出适合于实现方面的示例性多核处理器的组件框图。
图3是示出适合于实现方面的、具有相干互连的示例性异构计算设备的框图。
图4是示出用于实现方面的非I/O相干工作负荷处理的例子的信号和过程图。
图5是示出用于实现方面的I/O相干工作负荷处理的例子的信号和过程图。
图6是示出用于实现方面的动态I/O相干工作负荷处理的例子的信号和过程图。
图7是示出用于实现方面的动态I/O相干工作负荷处理的例子的信号和过程图。
图8是根据方面,示出用于实现动态I/O相干工作负荷处理的方法的过程流程图。
图9是根据方面,示出用于实现动态I/O相干工作负荷处理的方法的过程流程图。
图10是示出适合于结合各个方面使用的示例性移动计算设备的组件框图。
图11是示出适合于结合各个方面使用的示例性移动计算设备的组件框图。
图12是示出适合于结合各个方面使用的示例性服务器的组件框图。
具体实施方式
将参照附图来详细地描述各个方面。在可能的情况下,贯穿附图将使用相同的附图标记来指代相同或者类似的部件。对于特定示例和实现方式的引用只是用于说明目的,而不是旨在限制权利要求的保护范围。
各个方面可以包括用于实现在输入/输出(I/O)相干模式和非I/O相干模式之间的动态切换,以减少针对卸载工作负荷以便由硬件加速器执行的开销代价的方法和系统,以及实现这样的方法的设备。所述多个处理器可以是多核处理器。各个方面的装置和方法可以包括:在I/O相干模式下将工作负荷卸载到加速器,检测长工作负荷的状况,实现缓存维护操作,以及切换到非I/O相干模式。
本文可互换地使用术语“计算设备”和“移动计算设备”来指代下面中的任何一项或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、可转换式笔记本电脑/平板电脑(2合1计算机)、智能本、超级本、上网本、掌上型计算机、无线电子邮件接收机、具备多媒体互联网功能的蜂窝电话、移动游戏控制台、无线游戏控制器、以及包括存储器和可编程处理器的类似个人电子设备。术语“计算设备”还可以指代固定计算设备,其包括个人计算机、桌面型计算机、一体式计算机、工作站、超级计算机、大型计算机、嵌入式计算机、服务器、家庭影院计算机和游戏控制台。
动态I/O相干性可以允许避免或推迟用于将工作负荷卸载到加速器的高速缓存维护操作。避免或推迟这些高速缓存维护操作可以减少与在I/O相干模式和非I/O相干模式下卸载工作负荷相关联的开销。可以在加速器上启动卸载的工作负荷以帮助处理诸如中央处理单元(CPU)之类的处理设备的工作负荷。处理设备可以将其一些工作负荷卸载到加速器来进行处理。在执行卸载的工作负荷时,加速器可以比处理设备更高效和/或更快速。加速器能够与由处理设备执行剩余工作负荷并行地执行卸载的工作负荷。可以初始地将用于处理设备的高速缓存和/或通信地连接到相干互连的共享存储器设置为I/O相干模式。在I/O相干模式下,可以持续地实施相干性机制以确保处理设备高速缓存和/或共享存储器中的数据的正确性。由于这些相干性机制,可以不需要高速缓存维护操作来确保处理设备高速缓存和/或共享存储器中的数据的正确性。然而,I/O相干模式可能引入开销代价,开销代价可能受到I/O相干路径的变量的影响。例如,I/O相干模式开销代价可能随着工作负荷而增加。
如果卸载的工作负荷在检测到该工作负荷正遭受I/O相干模式的增长的开销代价之前完成,则I/O相干模式开销代价可以保持很低,并且不会带来高速缓存维护操作开销。可以使用某些条件来确定工作负荷何时增长到I/O相干模式开销代价可能超过可接受极限的幅度。这样的条件可以包括:计算的或预设的经过的时间、CPU处于空闲状态、和/或工作负荷表现出因使用I/O相干路径遭受不良情况的迹象。工作负荷不良情况的检测可以是基于各种各样的度量。增加的工作负荷可以向驱动器通知性能。使用静态分配或者基于工作负荷类别的方法(通过测试或随机测试)可能会导致标准超时或者指示工作负荷不良情况的信号。轮询硬件性能寄存器可以提供用于指示工作负荷不良情况的数据。接近最大值的持续较高的互连操作水平(例如,带宽和/或未完成的事务)可以指示限流。高加速器存储器延时可以指示延时限制。高加速器存储器背压可以指示带宽限流。由于存储器结合高占用存储器请求队列而导致的高的加速器空闲可以指示带宽是有限的。
如果处理器或硬件检测到卸载的工作负荷可能正遭受I/O相干模式的增长的开销代价,则处理设备高速缓存和/或共享存储器可以从I/O相干模式动态地改变为非I/O相干模式。在动态地切换到非I/O相干模式之前,并且当仍然处于I/O相干模式时,可以针对处理设备高速缓存实施高速缓存清除维护操作。在仍处于I/O相干模式的同时实施高速缓存清除操作可以允许加速器继续执行卸载的工作负荷,而不会导致针对高速缓存清除维护操作的非I/O相干开销代价。在高速缓存清除操作之后,处理设备高速缓存和/或共享存储器可以从I/O相干模式动态地切换到非I/O相干模式。
可以在软件中实现不良情况检测和高速缓存维护操作管理,该软件被配置为使处理设备轮询加速器以获得性能信息,以及触发高速缓存维护操作并动态地切换处理设备高速缓存的I/O相干模式。可以使用硬件来检测不良情况,并通知软件触发高速缓存维护操作和动态地切换处理设备高速缓存和/或共享存储器的I/O相干模式。可以使用硬件来检测不良情况,并触发高速缓存维护操作和动态地切换处理设备高速缓存和/或共享存储器的I/O相干模式。
在用于处理设备高速缓存和/或共享存储器的非I/O相干模式中,加速器可以继续执行卸载的工作负荷的剩余部分。在完成对卸载的工作负荷的执行之后,可以实现高速缓存无效化维护操作。由于高速缓存无效化维护操作可能是在非I/O相干卸载工作负荷执行期间实施的唯一高速缓存维护操作,因此卸载的工作负荷的执行可以仅导致针对高速缓存无效化维护操作的非I/O相干开销代价。
对于由加速器进行的全部的卸载的工作负荷执行,可以通过在检测到不良情况时使得使用I/O相干模式的执行的持续时间最小化,将I/O相干开销代价保持在比使用I/O相干模式执行全部的卸载的工作负荷更低的量。通过在仍处于I/O相干模式时,与卸载的工作负荷执行并行地执行高速缓存清除维护操作,可以将非I/O相干开销代价保持在比使用非I/O相干模式执行整个卸载工作负荷更低的量。
图1示出了适合于结合各个方面使用的包括计算设备10的系统。计算设备10可以包括具有处理器14、存储器16、通信接口18和存贮存储器接口20的片上系统(SoC)12。计算设备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的存储器访问请求,这是因为所请求的数据或处理器可执行代码不位于存储器16中。响应于未命中,可以进行对另一个存储器16或存贮存储器24的存储器访问请求,以便将所请求的数据或处理器可执行代码从另一个存储器16或存贮存储器24装载至存储器设备16。响应于功能的执行来将数据或处理器可执行代码装载到存储器16可以起因于对另一个存储器16或存贮存储器24的存储器访问请求,并且可以将数据或处理器可执行代码装载至存储器16以便稍后访问。
存贮存储器接口20和存贮存储器24可以一起工作,以允许计算设备10将数据和处理器可执行代码存储在非易失性存储介质上。可以非常类似于存储器16的方面来配置存贮存储器24,其中,存贮存储器24可以存储用于处理器14中的一个或多个处理器进行存取的数据或处理器可执行代码。在计算设备10的电源被关闭之后,存贮存储器24(其是非易失性的)可以保持信息。当电源再次打开并且计算设备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中的每一个可以被指定私用高速缓存210、212、214、216,其可以专用于由指定的处理器内核200、201、202、203进行的读和/或写访问。私用高速缓存210、212、214、216可以存储数据和/或指令,以及使所存储的数据和/或指令可用于处理器内核200、201、202、203以供处理器内核200、201、202、203在执行时使用,该私用高速缓存210、212、214、216是处理器内核200、201、202、203专用的。私用高速缓存210、212、214、216可以包括如本文中参照图1的存储器16所描述的易失性存储器。
多核处理器14还可以包括共享高速缓存230,共享高速缓存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只是被提供作为例子,并决不意味着将各个方面限制于具有四个指定私用高速缓存的四核处理器系统。与本文所示出和描述的四个处理器内核200、201、202、203和私用高速缓存210、212、214、216相比,计算设备10、SoC 12或多核处理器14可以单独地或者组合地包括更少或者更多的处理器内核和私用高速缓存。
图3示出了具有相干互连的异构计算设备的示例性方面。被配置为实现动态I/O相干性的异构计算设备(例如,图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和任意数量的主存储器或随机存取存储器组件(例如,图1中的存储器16、24),诸如共享存储器304。相干互连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的数据和从处理设备302、306a、306b、306c输出的数据可能受到相干性要求的影响,该相干性要求可以由相干互连312的相干性机制来实现(在I/O相干模式活动时)。在各个方面,相干互连312的相干域314或其它相干性机制(例如,探听(snoop)过滤器(没有示出))可以被配置为基于接收针对处理设备高速缓存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自身管理。在各个方面,高速缓存维护操作可以由处理设备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-图7示出了工作负荷卸载的示例性方面。这些例子示出了将工作负荷从处理设备(例如,CPU)302卸载到硬件加速器(例如,GPU、DSP、定制硬件加速器等等)306。这些例子示出了处理设备302和单个硬件加速器306之间的工作负荷卸载。在各个方面,在处理设备302和硬件加速器306之间传输的数据可以通过对共享存储器(例如,图3中的共享存储器304)的读/写来传输,并且可以通过高速缓存未命中机制来触发。在各个方面,数据传输(包括经由共享存储器进行的数据传输)可以在贯穿执行卸载的工作负荷期间发生。一对一工作负荷卸载的这些示例是非限制性的,并且处理设备302可以将部分的工作负荷卸载到任意数量的硬件加速器306和/或其它处理设备302(其包括经由任何数量的共享存储器)。
在图4-图7所示出的每个例子中,处理设备302可以负责执行工作负荷。处理设备302可以被配置为将部分的工作负荷卸载到硬件加速器306。卸载的工作负荷的数据可以存储在处理设备高速缓存(例如,图6中的处理设备高速缓存308)中。可以经由相干互连(例如,图3中的相干互连312)将数据发送到硬件加速器306。在各个方面,可以通过通信地连接到相干互连或者整合到相干互连的共享存储器来发送数据。硬件加速器306可以使用发送的数据来执行卸载的工作负荷,并将结果发送回处理设备302以写入处理设备高速缓存。
图4示出了非I/O相干工作负荷处理的示例性方面。为了将卸载的工作负荷的数据发送到硬件加速器306并输出从硬件加速器306接收的结果,处理设备302可以实现高速缓存维护操作,以将数据写入共享存储器然后写入硬件加速器306,或者通过相干互连直接写入到硬件加速器306。如本文所描述的,在非I/O相干数据传输期间,相干互连可以在处理设备302与共享存储器和/或硬件加速器306之间的数据之间传输数据,而不进行相干性操作。
为了将卸载的工作负荷的数据发送到硬件加速器306,处理设备302可以实现高速缓存清除维护操作400,以经由相干互连将数据写入共享存储器和/或硬件加速器306。将数据写入多个目的地的高速缓存清除维护操作400创建开销404a,开销404a可以根据为卸载的工作负荷写出的处理设备高速缓存中的数据量而变化。存储在处理设备高速缓存中的数据可以存储在分区或缓冲区中,并且可以针对处理设备高速缓存的这样的特定部分来实施高速缓存清除维护操作400。否则,可以针对整个处理设备高速缓存来实施高速缓存清除维护操作400。开销404a可能延迟硬件加速器306对卸载的工作负荷的执行的开始。
在与高速缓存清除维护操作400的开销404a相关联的时间期间,处理设备302可以完成将一部分的工作负荷卸载到硬件加速器306。在各个方面,将一部分的工作负荷卸载到硬件加速器306可以包括:由访问处理设备高速缓存和/或共享存储器的硬件加速器306进行数据读和写。可以通过用于处理设备高速缓存的高速缓存未命中的高速缓存未命中机制,来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地缓存数据。在各个方面,硬件加速器306可以将卸载的工作负荷的任何被发送的数据存储到其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c)。硬件加速器306可以启动对卸载的工作负荷的执行408,并执行卸载的工作负荷406a。执行卸载的工作负荷所花费的时间长度可以取决于各种因素,包括卸载的工作负荷的大小和/或复杂性、硬件加速器306的和/或用于硬件加速器306的资源使用和/或可用性(其包括电功率、计算能力、存储器空间、通信带宽和/或包括温度的环境因素)。硬件加速器306可以完成卸载的工作负荷的执行410,经由相干互连将卸载的工作负荷执行406a的结果返回给处理设备302。
为了使卸载的工作负荷执行的结果可用于处理设备302,在硬件加速器306输出该结果之后,处理设备302可以实施高速缓存无效化维护操作402以将处理设备高速缓存空间的未来读取引导到当前将该结果存储成未命中的共享存储器。高速缓存无效化维护操作402还可以创建开销404b,开销404b可以取决于存储的卸载的工作负荷结果的数据量或者在处理设备高速缓存中用于存储卸载的工作负荷结果的空间而变化。开销404b可以延迟用于由处理设备302访问的卸载的工作负荷结果的可用性。在完成高速缓存无效化维护操作402时,卸载的工作负荷结果可以变得可用于(412)由处理设备302对卸载的工作负荷结果进行访问、使用和/或输出。处理设备302可以接收卸载的工作负荷执行406a的结果,并将结果存储在其处理设备高速缓存中。
图5示出了I/O相干工作负荷处理的示例性方面。为了将卸载的工作负荷的数据发送到硬件加速器306,并输出从硬件加速器306接收的结果,相干互连312可以持续地实现相干性机制(例如,图3中的相干域314和/或探听过滤器),以确保处理设备高速缓存和/或共享存储器中的数据的正确性。因此,当处理设备高速缓存和/或共享存储器处于I/O相干模式时,处理设备302可以不实现它可以针对非I/O相干模式所实施的高速缓存维护操作。
处理设备302可以将一部分的工作负荷卸载到硬件加速器306。在各个方面,将一部分的工作负荷卸载到硬件加速器306可以包括:由访问处理设备高速缓存和/或共享存储器的硬件加速器306进行数据读和写。可以通过用于处理设备高速缓存的高速缓存未命中的高速缓存未命中机制,来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地缓存数据。在各个方面,硬件加速器306可以将卸载的工作负荷的任何被发送的数据存储至其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c)。硬件加速器306可以启动对卸载的工作负荷的执行408,并执行卸载的工作负荷406b。在I/O相干模式中,可以在传输数据的同时保持相干性,使得在卸载的工作负荷的执行启动408之前不会产生任何开销,而不是对于非I/O相干模式中的处理设备高速缓存和/或共享存储器产生针对发送卸载的工作负荷数据的开销。
在执行卸载的工作负荷406b期间仍可能引起开销404c的增加。这种开销404c可能是由卸载的工作负荷结果的数据所途经的相干路径的性能引起的。相干互连可能无法实现其相干性机制并且与硬件加速器306产生卸载的工作负荷结果一样快速地传输卸载的工作负荷结果。相干互连可能导致针对卸载的工作负荷结果的瓶颈,同时实现相干性机制导致增加的开销404c。在各个方面,开销404c可以与用于执行卸载的工作负荷406b的硬件加速器306的运行时间成比例或大致成比例。
一旦相干互连的相干性机制完成其用以确保处理设备高速缓存和/或共享存储器中的卸载的工作负荷结果的正确性的操作,卸载的工作负荷结果可以变得可用于(412)由处理设备302对卸载的工作负荷结果进行访问、使用和/或输出。
图6和7示出了动态I/O相干工作负荷处理的示例性方面。在图6和图7中的每一者所示出的例子中,处理设备302的工作负荷卸载可以利用I/O相干模式中的处理设备高速缓存和/或共享存储器来开始。因此,为了将卸载的工作负荷的数据发送到硬件加速器306,以及为了接收和/或输出由硬件加速器306生成的结果,相干互连312可以持续地实现相干性机制(例如,图3中的相干域314和/或探听过滤器),以确保处理设备高速缓存和/或共享存储器中的数据的正确性。因此,当处理设备高速缓存和/或共享存储器处于I/O相干模式时,处理设备302可以不实现它可以针对非I/O相干模式所实施的高速缓存维护操作。
处理设备302可以将一部分的工作负荷卸载到硬件加速器306。在各个方面,将一部分的工作负荷卸载到硬件加速器306可以包括:由访问处理设备高速缓存和/或共享存储器的硬件加速器306进行数据读和写。可以通过用于处理设备高速缓存的高速缓存未命中的高速缓存未命中机制,来实现对共享存储器的访问。硬件加速器306可以使用从处理设备高速缓存和/或共享存储器取回的数据来执行卸载的工作负荷,而无需在本地缓存数据。在各个方面,硬件加速器306可以将卸载的工作负荷的任何被发送的数据存储至其硬件加速器高速缓存(例如,图3中的处理设备高速缓存310a、310b、310c)。硬件加速器306可以启动对卸载的工作负荷的执行408,并执行卸载的工作负荷406c、406d。在I/O相干模式中,可以在传输数据的同时保持相干性,使得在卸载的工作负荷的执行启动408之前不会产生任何开销,而不是对于非I/O相干模式中的处理设备高速缓存和/或共享存储器产生针对发送卸载的工作负荷数据的开销。
图6中所示出的例子是用于由硬件加速器306进行的短期卸载的工作负荷执行的动态I/O相干工作负荷处理的实现方式。如本文所述,执行卸载的工作负荷406c,仍然可能发生开销404d。在动态I/O相干工作负荷处理中,只要开销404d保持低于开销阈值,则卸载的工作负荷的执行406c可以在I/O相干模式下利用处理设备高速缓存和/或共享存储器继续进行。因此,开销404d被限制于由如本文所述的发送卸载工作负荷结果的相干互连的性能引起的开销。一旦相干互连的相干性机制完成其用以确保处理设备高速缓存和/或共享存储器中的卸载的工作负荷结果的正确性的操作,卸载的工作负荷结果就变得可用于(412)由处理设备302访问、使用和/或输出卸载的工作负荷结果。
图7中所示出的例子是用于由硬件加速器306进行的长期卸载的工作负荷执行的动态I/O相干工作负荷处理的实现方式。如本文所述,执行卸载的工作负荷406c,仍然可能发生开销404e。在动态I/O相干工作负荷处理中,长期的卸载的工作负荷可能产生超过开销阈值的开销404e。可以使用各种方法来检测超过开销阈值的长期工作负荷,其包括:处理设备302进入空闲状态、经过的时间和/或卸载的工作负荷的执行的不良情况,如本文所进一步描述的。
响应于检测到长期的卸载的工作负荷,处理设备302可以将处理设备高速缓存和/或共享存储器从I/O相干模式动态地转换到非I/O相干模式。为了从I/O相干模式转换到非I/O相干模式,处理设备302可以开始实现高速缓存维护操作,同时处理设备高速缓存和/或共享存储器保持在I/O相干模式。例如,处理设备302可以在硬件加速器继续卸载的工作负荷执行404d的同时实现高速缓存清除维护操作400。在高速缓存清除维护操作400期间,卸载的工作负荷执行404d可能继续引起I/O相干模式开销404e,但是针对高速缓存清除维护操作400不会产生开销。因此,开销404d可以被限制于由如本文所述的发送卸载的工作负荷结果的相干互连的性能引起的开销。
在完成高速缓存清除维护操作400之后,处理设备高速缓存和/或共享存储器可以动态地从I/O相干模式切换到非I/O相干模式414。在I/O相干模式和非I/O相干模式414之间的切换可以不中断卸载的工作负荷执行404d。当卸载的工作负荷执行404d继续时,不会引起更多的I/O相干模式开销404e。硬件加速器306可以完成卸载的工作负荷执行410,通过相干互连和/或共享存储器将卸载的工作负荷执行406d的结果返回到处理设备302。
为了使卸载的工作负荷执行的结果可用于处理设备302,处理设备302可以实现高速缓存无效化维护操作402,如本文所进一步讨论的。高速缓存无效化维护操作402可以创建开销404b,开销404b可以取决于以下各项而变化:存储的卸载的工作负荷结果的数据量、或者在处理设备高速缓存中用于存储卸载的工作负荷结果的空间。开销404b可以延迟用于由处理设备302访问的卸载的工作负荷结果的可用性。在完成高速缓存无效化维护操作402时,卸载的工作负荷结果可以变得可用于(412)由处理设备302对卸载的工作负荷结果进行访问、使用和/或输出。处理设备302可以接收卸载的工作负荷执行406a的结果,并将结果存储在其处理设备高速缓存中。
图8根据方面示出了用于实现动态I/O相干工作负荷处理的方法800。可以在计算设备中在以下各项中实现方法800:在处理器(例如,图1和图2中的处理器14和图3-图7中的处理设备302)中执行的软件、通用硬件、专用硬件、或者由软件配置的处理器和专用硬件的组合(例如,在包括其它单独组件的动态I/O相干性系统(例如,图3)内执行软件的处理器)。为了涵盖在各个方面中实现的替代配置,在本文中将实现方法800的硬件称为“处理设备”。
在方块802中,处理设备可以针对处理设备高速缓存(例如,图3中的处理设备高速缓存308)和/或共享存储器(例如,图3中的共享存储器304)将I/O相干模式设置为“开启”。或者,处理设备可以针对处理设备高速缓存和/或共享存储器将非I/O相干模式设置为“关闭”。在各个方面,可以将I/O相干模式设置为“开启”作为用于处理设备高速缓存和/或共享存储器的缺省状态,因此将I/O相干模式设置为“开启”可能是不必要的。将I/O相干模式设置为“开启”可以是一种预防措施,即使“开启”是缺省的I/O相干模式状态。
在方块804中,处理设备可以使用I/O相干模式在硬件加速器(例如,图3中的GPU306a、DSP 306b、定制硬件加速器306c和图4-图7中的硬件加速器306)上启动卸载的工作负荷执行。如本文所讨论的,启动该执行对于将工作负荷卸载到硬件加速器而言可以是立即的,这是因为在使用I/O相干模式时,不会因为将数据从处理设备传输到硬件加速器而发生开销。在处理设备与硬件加速器之间传输数据的存储器访问请求可以通过相干互连的I/O相干路径(例如,图3中的相干域314)来路由。在处理设备与硬件加速器之间传输的数据可以包括从处理设备到硬件加速器的用于执行卸载的工作负荷的数据、以及作为执行卸载的工作负荷的结果的从硬件加速器到处理设备的数据。在处理设备和硬件加速器之间传输的数据可以通过共享存储器来传输。
在判断框806中,处理设备可以判断硬件加速器是否已经完成卸载的工作负荷。
响应于确定硬件加速器完成卸载的工作负荷(即,判断框806=“是”),在方块818中,处理设备可以从硬件加速器接收执行卸载的工作负荷的结果。执行卸载的工作负荷的结果可以由硬件加速器输出到共享存储器,并由处理设备从共享存储器取回。完全以I/O相干模式完成卸载工作负荷的执行可以表示:由于相干互连的I/O相干性机制管理数据的相干性,高速缓存维护操作是不必要的。
响应于确定硬件加速器没有完成卸载的工作负荷(即,判断框806=“否”),在判断框808中,处理设备可以判断是否检测到用于在I/O相干模式与非I/O相干模式之间进行切换的动态触发。动态触发可以用于确定卸载的工作负荷何时增长到I/O相干模式开销代价可能是不期望的或不可接受的点。可以以各种方式的任何组合来完成对于是否检测到动态触发的判断。
在一些方面,动态触发可以包括预设置或经计算的经过的时间,并且检测动态触发可以包括检测该时间已经经过。在各个方面,可以基于由硬件加速器对卸载的工作负荷的执行的预期时间量来预设置或计算该时间。卸载的工作负荷的预期执行时间可以是基于各种因素,其包括卸载的工作负荷的大小和/或复杂性、针对硬件加速器的资源使用和/或可用性(其包括电功率、计算能力、存储器空间、和/或通信带宽)、和/或环境因素(包括温度)。在各个方面,该时间可以被预设置或计算为极小的值例如零(0),以触发I/O相干模式与非I/O相干模式之间的立即切换。
在一些方面,动态触发可以包括感测处理设备转换到空闲状态和/或处于空闲状态。空闲状态可以指示硬件加速器可能正在比预期更慢地执行卸载的工作负荷,这是因为处理设备已经执行完工作并且正在等待硬件加速器完成卸载的工作负荷。卸载工作负荷的目标是高效地使用计算资源来执行工作负荷。因此,处理设备转换到空闲状态和/或处于空闲状态可以指示计算资源的低效使用。
在一些方面,动态触发可以包括卸载的工作负荷的执行因使用I/O相干路径而遭受不良情况的指示符。可以基于各种各样的度量来检测卸载的工作负荷的不良情况。增加的工作负荷可以向驱动器通知性能。使用静态分配或者基于工作负荷类别的方法(通过测试或随机测试)可能会导致标准超时或者指示工作负荷不良情况的信号。轮询硬件性能寄存器可以提供用于指示工作负荷不良情况的数据。接近最大值的持续较高的互连操作水平(例如,带宽和/或未完成的事务)可以指示限流。高加速器存储器延时可以指示延时限制。高加速器存储器背压可以指示带宽限流。由于存储器结合高占用存储器请求队列而导致的高加速器空闲可以指示带宽是有限的。
响应于确定没有检测到用于在I/O相干模式与非I/O相干模式之间进行切换的动态触发(即,判断框808=“否”),在判断框806中,处理设备可以判断硬件加速器是否完成卸载的工作负荷。
响应于确定检测到用于在I/O相干模式与非I/O相干模式之间进行切换的动态触发(即,判断框808=“是”),在方块810中,处理设备可以执行被推迟的处理设备高速缓存维护。如本文所讨论的,在准备从I/O相干模式切换到非I/O相干模式时,处理设备可以执行对于处理设备高速缓存的高速缓存清除维护操作。在方块810中,在处理设备执行高速缓存清除维护操作的同时,硬件加速器可以继续执行卸载的工作负荷。
在判断框812中,处理设备可以判断硬件加速器是否完成了卸载的工作负荷。
响应于确定硬件加速器完成了卸载的工作负荷(即,判断框812=“是”),在方块818中,处理设备可以接收从硬件加速器接收的卸载的工作负荷的执行结果。完全以I/O相干模式完成对卸载的工作负荷的执行可以表示:由于相干互连的I/O相干性机制管理数据的相干性,高速缓存维护操作是不必要的。虽然已经执行高速缓存清除维护操作,但是对高速缓存清除维护操作的执行不会产生额外的开销,这是因为在处于I/O相干模式时,高速缓存清除维护操作的执行与卸载的工作负荷的执行是并行的。
响应于确定硬件加速器没有完成卸载的工作负荷(即,判断框812=“否”),在方块814中,处理设备可以将处理设备高速缓存和/或共享存储器从I/O相干模式转换为非I/O相干模式。在方块814中从I/O相干模式切换到非I/O相干模式可以包括:将I/O相干模式的状态设置为“关闭”或将非I/O相干模式的状态设置为“开启”。从I/O相干模式切换到非I/O相干模式可以改变数据和存储器访问请求通过相干互连进行的路由,使得不再通过相干域来路由数据和存储器访问请求,并且不再针对数据和存储器访问请求实施相干性操作。相反,响应于处理设备高速缓存和/或共享存储器被设置为非I/O相干模式,处理设备可以开始实施高速缓存维护操作。
在方块816中,硬件加速器可以在处理设备高速缓存和/或共享存储器处于非I/O相干模式时继续执行卸载的工作负荷,如本文中所进一步描述的。
图9根据方面示出了用于实现动态I/O相干工作负荷处理的方法900。可以在计算设备中在以下各项中实现方法900:处理器(例如,图1和图2中的处理器14和图3-图7中的处理设备302)中执行的软件、通用硬件、专用硬件、或者由软件配置的处理器和专用硬件的组合(例如,在包括其它单独组件的动态I/O相干性系统(例如,图3)内执行软件的处理器)。为了涵盖在各个方面中实现的替代配置,在本文中将实现方法900的硬件称为“处理设备”。在各个方面,方法900还可以描述方法800的方块814和816。
在方块902中,处理设备可以针对处理设备高速缓存(例如,图3中的处理设备高速缓存308)和/或共享存储器(例如,图3中的共享存储器304)将I/O相干模式设置为“关闭”。或者,处理设备可以针对处理设备高速缓存和/或共享存储器将非I/O相干模式设置为“开启”。
在方块904中,硬件加速器可以在处理设备高速缓存和/或共享存储器处于非I/O相干模式时执行剩余的卸载的工作负荷。
在判断框906中,处理设备可以判断硬件加速器是否完成剩余的卸载的工作负荷。
响应于确定硬件加速器没有完成卸载的工作负荷(即,判断框906=“否”),在判断框906中,处理设备可以连续地判断硬件加速器是否完成剩余的卸载的工作负荷。当硬件加速器没有完成卸载的工作负荷时,硬件加速器可以在方块904中继续执行剩余的卸载的工作负荷。在硬件加速器执行剩余的卸载的工作负荷期间,因为处理设备高速缓存和/或共享存储器已切换到非I/O相干模式,由于相干互连(即,图3中的相干互连312)的相干性机制(例如,图3中的相干域314和/或探听过滤器)实现针对处理设备与硬件加速器之间传输的数据和存储器访问请求的相干性操作,剩余工作负荷不再产生开销。
响应于确定硬件加速器完成了卸载的工作负荷(即,判断框906=“是”),在方块908中,处理设备可以执行针对非I/O相干模式的任何剩余的高速缓存维护操作。如本文所讨论的,为了使卸载的工作负荷的执行结果可用于处理设备,在硬件加速器输出该结果之后,处理设备可以实施高速缓存无效化维护操作以将处理设备高速缓存空间的未来读取引导到当前将该结果存储成未命中的共享存储器(例如,图3中的共享存储器304)。高速缓存无效化维护操作还可以创建开销,该开销可以取决于卸载的工作负荷结果的数据量或者在处理设备高速缓存中用于存储卸载的工作负荷结果的空间而变化。该开销可以延迟供处理设备对卸载的工作负荷进行访问、使用和/或输出的卸载的工作负荷结果的可用性。
在方块910中,处理设备可以接收卸载的工作负荷结果。处理设备可以接收卸载的工作负荷的执行结果,并将其存储在处理设备高速缓存中。
可以在包括移动计算设备的各种各样的计算系统中实现各个方面(其包括但不限于上文参照图1-图9所描述的方面),在图10中示出了适合于结合各个方面使用的移动计算设备的示例。移动计算设备1000可以包括耦合到触摸屏控制器1004和内部存储器1006的处理器1002。处理器1002可以是被设计用于通用或特定处理任务的一个或多个多核集成电路。内部存储器1006可以是易失性存储器或非易失性存储器,并且还可以是安全和/或加密存储器,或者非安全和/或非加密存储器、或者其任意组合。可以利用的存储器类型的例子包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1004和处理器1002还可以耦合到触摸屏面板1012,例如,电阻式感应触摸屏、电容式感应触摸屏、红外线感应触摸屏等等。另外,计算设备1000的显示器并不需要具有触摸屏能力。
移动计算设备1000可以具有用于发送和接收通信的一个或多个无线信号收发机1008(例如,Peanut、蓝牙、Zigbee、Wi-Fi、RF无线电单元)和天线1010,它们彼此之间相耦合和/或耦合到处理器1002。收发机1008和天线1010可以与上文所提及的电路一起使用,以实现各种无线传输协议栈和接口。移动计算设备1000可以包括蜂窝网络无线调制解调器芯片1016,蜂窝网络无线调制解调器芯片1016经由蜂窝网络来实现通信并耦合到处理器。
移动计算设备1000可以包括耦合到处理器1002的外围设备连接接口1018。外围设备连接接口1018可以被特别地配置为接受一种类型的连接,或者被配置为接受各种类型的、共同或专有的物理和通信连接,例如通用串行总线(USB)、火线(FireWire)、Thunderbolt或PCIe。外围设备连接接口1018还可以耦合到类似配置的外围设备连接端口(没有示出)。
移动计算设备1000还可以包括用于提供音频输出的扬声器1014。移动计算设备1000还可以包括由塑料、金属、或材料的组合构成的壳体1020,以包含本文所描述的所有部件或者一些部件。移动计算设备1000可以包括耦合到处理器1002的电源1022,例如一次性或可充电电池。此外,可充电电池还可以耦合到外围设备连接端口,以便从移动计算设备1000之外的源接收充电电流。移动计算设备1000还可以包括用于接收用户输入的物理按键1024。移动计算设备1000还可以包括用于打开和关闭移动计算设备1000的电源按键1026。
各个方面(包括但不限于上文参照图1-图9所描述的方面)可以实现在包括膝上型计算机1100的各种各样的计算系统中,在图11中示出了膝上型计算机1100的例子。很多膝上型计算机包括触摸板触摸表面1117,触摸板触摸表面1117充当该计算机的指向设备,因此可以接收拖动、滚动和滑动手势(其类似于上文所描述的在装备有触摸屏显示器的计算设备上所实现的那些手势)。通常,膝上型计算机1100将包括耦合到易失性存储器1112和大容量非易失性存储器(例如,闪存的硬盘驱动器1113)的处理器1111。另外,计算机1100可以具有用于发送和接收电磁辐射的一个或多个天线1108,天线1108可以连接到无线数据链路和/或连接到与处理器1111耦合的蜂窝电话收发机1116。计算机1100还可以包括耦合到处理器1111的软盘驱动器1114和压缩光盘(CD)驱动器1115。在笔记本配置中,计算机壳体包括全部都耦合到处理器1111的触摸板1117、键盘1118和显示器1119。如公众所知道的,计算设备的其它配置可以包括(例如,经由USB输入)耦合到处理器的计算机鼠标或者轨迹球,这些也可以结合各个方面来使用。
各个方面(其包括但不限于上文参照图1-图9所描述的方面)可以在固定的计算系统中(例如,各种各样的商业上可用的服务器中的任何一种)实现。图12示出了示例性服务器1200。通常,这种服务器1200包括耦合到易失性存储器1202和大容量非易失性存储器(例如,磁盘驱动器1204)的一个或多个多核处理器组件1201。如图12中所示,可以通过将多核处理器组件1201插入到组装的架中,来添加到服务器1200中。服务器1200还可以包括耦合到处理器1201的软盘驱动器、压缩光盘(CD)或者数字通用光盘(DVD)光盘驱动器1206。服务器1200还可以包括耦合到多核处理器组件1201的网络接入端口1203,以便与网络1205建立网络接口连接,网络1205例如:耦合到其它广播系统计算机和服务器的局域网、互联网、公众交换电话网、和/或蜂窝数据网络(如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其它类型的蜂窝数据网络)。
用于在可编程处理器上运行以执行各个方面的操作的计算机程序代码或“程序代码”,可以利用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言来编写,或者利用各种其它编程语言来编写。如本申请中所使用的,计算机可读存储介质上存储的程序代码或程序可以指代其格式是处理器可理解的机器语言代码(例如,目标代码)。
上述的方法描述和过程流程图仅仅是用作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个方面的步骤。如本领域技术人员将理解的,可以以任何顺序来执行上述的方面中的操作顺序。诸如“其后”、“然后”、“接着”等等之类的词语,并不旨在限制这些操作的顺序;这些词语仅仅只是用于引导读者通读该方法的描述。此外,任何对权利要求元素的单数引用(例如,使用冠词“一个(a)”、“某个(an)”或者“该(the)”),不应被解释为将该元素限制为单数形式。
结合各个方面描述的各种示例性的逻辑框、模块、电路和算法操作均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上文对各种示例性的部件、框、模块、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本发明的保护范围。
用于执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合,可以用来实现或执行结合本文所公开的方面描述的用于实现各种示例性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、若干微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。替代地,一些操作或方法可以由特定于给定的功能的电路来执行。
在一个或多个方面,所述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储成非暂时性计算机可读介质或者非暂时性处理器可读介质上的一个或多个指令或代码。本文所公开的方法或算法的操作,可以体现在处理器可执行软件模块中,处理器可执行软件模块可以位于非暂时性计算机可读存储介质或处理器可读存储介质上。非暂时性计算机可读或处理器可读存储介质可以是计算机或处理器能够存取的任何存储介质。举例而言,但非做出限制,这种非暂时性计算机可读介质或者处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非暂时性计算机可读介质和处理器可读介质的保护范围之内。另外,一种方法或算法的操作可以作为一个代码和/或指令集或者其任意组合,位于非暂时性处理器可读介质和/或计算机可读介质上,其中该非暂时性处理器可读介质和/或计算机可读介质可以并入到计算机程序产品中。
为使本领域任何技术人员能够实现或者使用权利要求,提供了对所公开的方面的先前描述。对于本领域技术人员来说,对这些方面的各种修改将是显而易见的,并且,本文定义的总体原理也可以在不脱离权利要求的保护范围的情况下应用于其它方面和实现方式。因此,本公开内容并不限于本文所描述的方面和实现方式,而是符合与所附权利要求书和本文公开的原理和新颖性特征相一致的最广范围。
Claims (26)
1.一种在计算设备上实现动态输入/输出(I/O)相干工作负荷处理的方法,包括:
由处理设备将工作负荷卸载到硬件加速器以使用I/O相干模式来执行;
当所述工作负荷由所述硬件加速器执行时,由所述处理设备检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发;以及
响应于检测到所述动态触发,当所述工作负荷由所述硬件加速器执行时,从所述I/O相干模式切换到所述非I/O相干模式。
2.根据权利要求1所述的方法,还包括:判断由所述硬件加速器对所述工作负荷的执行是否已完成,其中,当所述工作负荷由所述硬件加速器执行时检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,检测用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发。
3.根据权利要求1所述的方法,还包括:
响应于检测到用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发,当所述工作负荷由所述硬件加速器执行时,执行对所述处理设备的高速缓存的高速缓存清除维护操作;
在所述I/O相干模式下由共享存储器从所述硬件加速器接收所卸载的工作负荷的结果;
判断由所述硬件加速器对所述工作负荷的执行是否已完成;以及
响应于确定由所述硬件加速器对所述工作负荷的执行已完成,在不实现对所述处理设备的所述高速缓存的高速缓存无效化维护操作的情况下,由所述处理设备接收所卸载的工作负荷的所述结果。
4.根据权利要求1所述的方法,还包括:
判断由所述硬件加速器对所述工作负荷的执行是否已完成,其中,当所述工作负荷由所述硬件加速器执行时从所述I/O相干模式切换到非I/O相干模式包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,从所述I/O相干模式切换到所述非I/O相干模式;
在所述非I/O相干模式下由共享存储器从所述硬件加速器接收所卸载的工作负荷的结果;
响应于确定由所述硬件加速器对所述工作负荷的执行已完成,执行对所述处理设备的高速缓存的高速缓存无效化维护操作;以及
由所述处理设备接收所卸载的工作负荷的所述结果。
5.根据权利要求4所述的方法,还包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,由所述硬件加速器执行所卸载的工作负荷的剩余部分。
6.根据权利要求1所述的方法,其中,检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发包括以下各项中的至少一项:检测经过的时间、检测所述处理设备处于空闲状态、以及检测所卸载的工作负荷的执行的不良情况。
7.根据权利要求6所述的方法,其中,检测所卸载的工作负荷的所述执行的不良情况包括以下各项中的至少一项:从增加的工作负荷接收针对驱动器的性能的通知、基于工作负荷类别来使用静态分配或方法、针对指示不良情况的数据来轮询硬件性能寄存器、测量接近最大值的互连操作水平、测量加速器存储器延时、测量加速器存储器背压、以及检测硬件加速器空闲状态。
8.一种计算设备,包括:
共享存储器;
硬件加速器;以及
处理器设备,其耦合到所述共享存储器和所述硬件加速器,并且被配置为执行包括以下项的操作:
将工作负荷卸载到所述硬件加速器以使用I/O相干模式来执行;
当所述工作负荷由所述硬件加速器执行时,检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发;以及
响应于检测到所述动态触发,当所述工作负荷由所述硬件加速器执行时,从所述I/O相干模式切换到所述非I/O相干模式。
9.根据权利要求8所述的计算设备,其中,所述处理设备被配置为执行还包括以下项的操作:判断由所述硬件加速器对所述工作负荷的执行是否已完成,
其中,所述处理设备被配置为执行操作使得当所述工作负荷由所述硬件加速器执行时检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,检测用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发。
10.根据权利要求8所述的计算设备,其中,所述处理设备被配置为执行还包括以下项的操作:
响应于检测到用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发,当所述工作负荷由所述硬件加速器执行时,执行对所述处理设备的高速缓存的高速缓存清除维护操作;
在所述I/O相干模式下由所述共享存储器从所述硬件加速器接收所卸载的工作负荷的结果;
判断由所述硬件加速器对所述工作负荷的执行是否已完成;以及
响应于确定由所述硬件加速器对所述工作负荷的执行已完成,在不实现对所述处理设备的所述高速缓存的高速缓存无效化维护操作的情况下,接收所卸载的工作负荷的所述结果。
11.根据权利要求8所述的计算设备,其中,所述处理设备被配置为执行还包括以下项的操作:
判断由所述硬件加速器对所述工作负荷的执行是否已完成,其中,当所述工作负荷由所述硬件加速器执行时从所述I/O相干模式切换到非I/O相干模式包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,从所述I/O相干模式切换到所述非I/O相干模式;
在所述非I/O相干模式下由所述共享存储器从所述硬件加速器接收所卸载的工作负荷的结果;
响应于确定由所述硬件加速器对所述工作负荷的执行已完成,执行对所述处理设备的高速缓存的高速缓存无效化维护操作;以及
接收所卸载的工作负荷的所述结果。
12.根据权利要求8所述的计算设备,其中,所述处理设备被配置为执行操作使得检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发包括以下各项中的至少一项:检测经过的时间、检测所述处理设备处于空闲状态、以及检测所卸载的工作负荷的执行的不良情况。
13.根据权利要求12所述的计算设备,其中,所述处理设备被配置为执行操作使得检测所卸载的工作负荷的所述执行的不良情况包括以下各项中的至少一项:从增加的工作负荷接收针对驱动器的性能的通知、基于工作负荷类别来使用静态分配或方法、针对指示不良情况的数据来轮询硬件性能寄存器、测量接近最大值的互连操作水平、测量加速器存储器延时、测量加速器存储器背压、以及检测硬件加速器空闲状态。
14.一种计算设备,包括:
硬件加速器;
用于将工作负荷卸载到所述硬件加速器以使用I/O相干模式来执行的单元;
用于当所述工作负荷由所述硬件加速器执行时检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发的单元;以及
用于响应于检测到所述动态触发,当所述工作负荷由所述硬件加速器执行时,从所述I/O相干模式切换到所述非I/O相干模式的单元。
15.根据权利要求14所述的计算设备,还包括:用于判断由所述硬件加速器对所述工作负荷的执行是否已完成的单元,
其中,用于当所述工作负荷由所述硬件加速器执行时检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发的单元包括:用于响应于确定由所述硬件加速器对所述工作负荷的执行未完成,检测用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发的单元。
16.根据权利要求14所述的计算设备,还包括:
用于响应于检测到从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发,当所述工作负荷由所述硬件加速器执行时,执行对高速缓存的高速缓存清除维护操作的单元;
用于在所述I/O相干模式下由共享存储器从所述硬件加速器接收所卸载的工作负荷的结果的单元;
用于判断由所述硬件加速器对所述工作负荷的执行是否已完成的单元;以及
用于响应于确定由所述硬件加速器对所述工作负荷的执行已完成,在不实现对所述高速缓存的高速缓存无效化维护操作的情况下,接收所卸载的工作负荷的所述结果的单元。
17.根据权利要求14所述的计算设备,还包括:
用于判断由所述硬件加速器对所述工作负荷的执行是否已完成的单元,其中,当所述工作负荷由所述硬件加速器执行时从所述I/O相干模式切换到非I/O相干模式包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,从所述I/O相干模式切换到所述非I/O相干模式;
用于在所述非I/O相干模式下由共享存储器从所述硬件加速器接收所卸载的工作负荷的结果的单元;
用于响应于确定由所述硬件加速器对所述工作负荷的执行已完成,执行对高速缓存的高速缓存无效化维护操作的单元;以及
用于接收所卸载的工作负荷的所述结果的单元。
18.根据权利要求17所述的计算设备,还包括:
用于响应于确定由所述硬件加速器对所述工作负荷的执行未完成,由所述硬件加速器执行所卸载的工作负荷的剩余部分的单元。
19.根据权利要求14所述的计算设备,其中,用于检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发的单元包括以下各项中的至少一项:用于检测经过的时间的单元、用于检测处理设备处于空闲状态的单元、以及用于检测所卸载的工作负荷的执行的不良情况的单元。
20.根据权利要求19所述的计算设备,其中,用于检测所卸载的工作负荷的执行的不良情况的单元包括以下各项中的至少一项:用于从增加的工作负荷接收针对驱动器的性能的通知的单元、用于基于工作负荷类别来使用静态分配或方法的单元、用于针对指示不良情况的数据来轮询硬件性能寄存器的单元、用于测量接近最大值的互连操作水平的单元、用于测量加速器存储器延时的单元、用于测量加速器存储器背压的单元、以及用于检测硬件加速器空闲状态的单元。
21.一种其上存储有处理器可执行指令的非暂时性处理器可读介质,所述处理器可执行指令被配置为使计算设备的处理设备执行包括以下项的操作:
将工作负荷卸载到硬件加速器以使用I/O相干模式来执行;
当所述工作负荷由所述硬件加速器执行时,检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发;以及
响应于检测到所述动态触发,当所述工作负荷由所述硬件加速器执行时,从所述I/O相干模式切换到所述非I/O相干模式。
22.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括以下项的操作:判断由所述硬件加速器对所述工作负荷的执行是否已完成,
其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行操作使得当所述工作负荷由所述硬件加速器执行时检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,检测用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发。
23.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括以下项的操作:
响应于检测到用于从所述I/O相干模式切换到所述非I/O相干模式的所述动态触发,当所述工作负荷由所述硬件加速器执行时,执行对所述处理设备的高速缓存的高速缓存清除维护操作;
在所述I/O相干模式下由共享存储器从所述硬件加速器接收所卸载的工作负荷的结果;
判断由所述硬件加速器对所述工作负荷的执行是否已完成;以及
响应于确定由所述硬件加速器对所述工作负荷的执行已完成,在不实现对所述处理设备的所述高速缓存的高速缓存无效化维护操作的情况下,接收所卸载的工作负荷的所述结果。
24.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括以下项的操作:
判断由所述硬件加速器对所述工作负荷的执行是否已完成,其中,当所述工作负荷由所述硬件加速器执行时从所述I/O相干模式切换到非I/O相干模式包括:响应于确定由所述硬件加速器对所述工作负荷的执行未完成,从所述I/O相干模式切换到所述非I/O相干模式;
在所述非I/O相干模式下由共享存储器从所述硬件加速器接收所卸载的工作负荷的结果;
响应于确定由所述硬件加速器对所述工作负荷的执行已完成,执行对所述处理设备的高速缓存的高速缓存无效化维护操作;以及
接收所卸载的工作负荷的所述结果。
25.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行操作使得检测用于从所述I/O相干模式切换到非I/O相干模式的动态触发包括以下各项中的至少一项:检测经过的时间、检测所述处理设备处于空闲状态、以及检测所卸载的工作负荷的执行的不良情况。
26.根据权利要求25所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行操作使得检测所卸载的工作负荷的所述执行的不良情况包括以下各项中的至少一项:从增加的工作负荷接收针对驱动器的性能的通知、基于工作负荷类别来使用静态分配或方法、针对指示不良情况的数据来轮询硬件性能寄存器、测量接近最大值的互连操作水平、测量加速器存储器延时、测量加速器存储器背压、以及检测硬件加速器空闲状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/268,768 | 2016-09-19 | ||
US15/268,768 US10255181B2 (en) | 2016-09-19 | 2016-09-19 | Dynamic input/output coherency |
PCT/US2017/047975 WO2018052669A1 (en) | 2016-09-19 | 2017-08-22 | Dynamic input/output coherency |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109716306A true CN109716306A (zh) | 2019-05-03 |
Family
ID=59772730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780056866.6A Pending CN109716306A (zh) | 2016-09-19 | 2017-08-22 | 动态输入/输出相干性 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10255181B2 (zh) |
EP (1) | EP3516522A1 (zh) |
KR (1) | KR102062507B1 (zh) |
CN (1) | CN109716306A (zh) |
AU (1) | AU2017325800B2 (zh) |
BR (1) | BR112019004924A2 (zh) |
WO (1) | WO2018052669A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838902B2 (en) | 2017-06-23 | 2020-11-17 | Facebook, Inc. | Apparatus, system, and method for performing hardware acceleration via expansion cards |
US10116436B1 (en) * | 2017-09-26 | 2018-10-30 | Intel Corporation | Techniques for preventing memory timing attacks |
US11243817B2 (en) * | 2019-03-29 | 2022-02-08 | Intel Corporation | Technologies for data migration between edge accelerators hosted on different edge locations |
US11429450B2 (en) * | 2019-04-25 | 2022-08-30 | Vmware, Inc. | Aggregated virtualized compute accelerators for assignment of compute kernels |
WO2022138995A1 (ko) * | 2020-12-21 | 2022-06-30 | 주식회사 모빌린트 | 하드웨어 가속기 제어 방법 및 장치 |
US20230099831A1 (en) * | 2021-09-24 | 2023-03-30 | Samsung Electronics Co., Ltd. | Systems and methods for near-storage processing in solid state drives |
KR102411681B1 (ko) | 2021-12-24 | 2022-06-22 | 주식회사 모빌린트 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1236922A (zh) * | 1999-05-27 | 1999-12-01 | 林光荣 | 存储器分体同时运行多平台计算机 |
US20040117561A1 (en) * | 2002-12-17 | 2004-06-17 | Quach Tuan M. | Snoop filter bypass |
CN101371232A (zh) * | 2005-10-31 | 2009-02-18 | 英特尔公司 | 在用户级存储器中提供后备存储器 |
US20090193197A1 (en) * | 2008-01-25 | 2009-07-30 | Arm Limited | Selective coherency control |
CN102023932A (zh) * | 2009-09-18 | 2011-04-20 | 英特尔公司 | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 |
CN102934046A (zh) * | 2010-05-11 | 2013-02-13 | 超威半导体公司 | 高速缓存控制的方法和装置 |
US20140040552A1 (en) * | 2012-08-06 | 2014-02-06 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
CN104115128A (zh) * | 2011-10-26 | 2014-10-22 | 高通科技公司 | 具有高速缓存相干性的集成电路 |
CN104380269A (zh) * | 2012-10-22 | 2015-02-25 | 英特尔公司 | 高性能互连相干协议 |
US20150186277A1 (en) * | 2013-12-30 | 2015-07-02 | Netspeed Systems | Cache coherent noc with flexible number of cores, i/o devices, directory structure and coherency points |
US20150317274A1 (en) * | 2014-05-05 | 2015-11-05 | International Business Machines Corporation | Implementing coherent accelerator function isolation for virtualization |
CN105934742A (zh) * | 2014-01-23 | 2016-09-07 | 高通股份有限公司 | 用于动态语言中的内联高速缓存的硬件加速 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346757B2 (en) | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
US7627721B2 (en) | 2002-10-08 | 2009-12-01 | Rmi Corporation | Advanced processor with cache coherency |
US7461213B2 (en) | 2002-10-08 | 2008-12-02 | Rmi Corporation | Advanced processor system using request, data, snoop, and response rings |
US7484043B2 (en) | 2003-06-25 | 2009-01-27 | International Business Machines Corporation | Multiprocessor system with dynamic cache coherency regions |
US7843906B1 (en) | 2004-02-13 | 2010-11-30 | Habanero Holdings, Inc. | Storage gateway initiator for fabric-backplane enterprise servers |
US8255673B2 (en) * | 2008-04-25 | 2012-08-28 | Arm Limited | Monitoring transactions in a data processing apparatus |
US8287347B2 (en) * | 2008-11-06 | 2012-10-16 | Shuffle Master, Inc. | Method, apparatus and system for egregious error mitigation |
US8484647B2 (en) | 2009-07-24 | 2013-07-09 | Apple Inc. | Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU |
US8856456B2 (en) | 2011-06-09 | 2014-10-07 | Apple Inc. | Systems, methods, and devices for cache block coherence |
US20140095801A1 (en) | 2012-09-28 | 2014-04-03 | Devadatta V. Bodas | System and method for retaining coherent cache contents during deep power-down operations |
US10013351B2 (en) * | 2014-06-27 | 2018-07-03 | International Business Machines Corporation | Transactional execution processor having a co-processor accelerator, both sharing a higher level cache |
GB2536205A (en) | 2015-03-03 | 2016-09-14 | Advanced Risc Mach Ltd | Cache maintenance instruction |
-
2016
- 2016-09-19 US US15/268,768 patent/US10255181B2/en active Active
-
2017
- 2017-08-22 EP EP17761661.2A patent/EP3516522A1/en not_active Withdrawn
- 2017-08-22 WO PCT/US2017/047975 patent/WO2018052669A1/en active Search and Examination
- 2017-08-22 KR KR1020197007689A patent/KR102062507B1/ko active IP Right Grant
- 2017-08-22 BR BR112019004924A patent/BR112019004924A2/pt not_active Application Discontinuation
- 2017-08-22 AU AU2017325800A patent/AU2017325800B2/en active Active
- 2017-08-22 CN CN201780056866.6A patent/CN109716306A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1236922A (zh) * | 1999-05-27 | 1999-12-01 | 林光荣 | 存储器分体同时运行多平台计算机 |
US20040117561A1 (en) * | 2002-12-17 | 2004-06-17 | Quach Tuan M. | Snoop filter bypass |
CN101371232A (zh) * | 2005-10-31 | 2009-02-18 | 英特尔公司 | 在用户级存储器中提供后备存储器 |
US20090193197A1 (en) * | 2008-01-25 | 2009-07-30 | Arm Limited | Selective coherency control |
CN102023932A (zh) * | 2009-09-18 | 2011-04-20 | 英特尔公司 | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 |
CN102934046A (zh) * | 2010-05-11 | 2013-02-13 | 超威半导体公司 | 高速缓存控制的方法和装置 |
CN104115128A (zh) * | 2011-10-26 | 2014-10-22 | 高通科技公司 | 具有高速缓存相干性的集成电路 |
US20140040552A1 (en) * | 2012-08-06 | 2014-02-06 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
CN104380269A (zh) * | 2012-10-22 | 2015-02-25 | 英特尔公司 | 高性能互连相干协议 |
US20150186277A1 (en) * | 2013-12-30 | 2015-07-02 | Netspeed Systems | Cache coherent noc with flexible number of cores, i/o devices, directory structure and coherency points |
CN105934742A (zh) * | 2014-01-23 | 2016-09-07 | 高通股份有限公司 | 用于动态语言中的内联高速缓存的硬件加速 |
US20150317274A1 (en) * | 2014-05-05 | 2015-11-05 | International Business Machines Corporation | Implementing coherent accelerator function isolation for virtualization |
Also Published As
Publication number | Publication date |
---|---|
AU2017325800B2 (en) | 2020-05-07 |
KR20190050988A (ko) | 2019-05-14 |
US10255181B2 (en) | 2019-04-09 |
AU2017325800A1 (en) | 2019-03-07 |
US20180081804A1 (en) | 2018-03-22 |
BR112019004924A2 (pt) | 2019-06-04 |
EP3516522A1 (en) | 2019-07-31 |
WO2018052669A1 (en) | 2018-03-22 |
KR102062507B1 (ko) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109716306A (zh) | 动态输入/输出相干性 | |
TWI494942B (zh) | 用於i/o流量的同調性開關 | |
US10503656B2 (en) | Performance by retaining high locality data in higher level cache memory | |
US10339058B2 (en) | Automatic cache coherency for page table data | |
US8364862B2 (en) | Delegating a poll operation to another device | |
CN109716305B (zh) | 实现异步高速缓存维护操作的方法、计算设备以及介质 | |
CN103348333B (zh) | 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置 | |
US20190087344A1 (en) | Reducing Clean Evictions In An Exclusive Cache Memory Hierarchy | |
US20180336136A1 (en) | Input/output-coherent Look-ahead Cache Access | |
EP3510487B1 (en) | Coherent interconnect power reduction using hardware controlled split snoop directories | |
US10248565B2 (en) | Hybrid input/output coherent write | |
CN103345429A (zh) | 基于片上ram的高并发访存加速方法、加速器及cpu | |
Zhang et al. | Fuse: Fusing stt-mram into gpus to alleviate off-chip memory access overheads | |
KR20220113505A (ko) | 제로 값 메모리 압축 | |
CN109791510A (zh) | 在异构计算中管理数据流 | |
CN108885569A (zh) | 识别增强型同步操作结果以改善运行时操作 | |
US20220113781A1 (en) | Methods and apparatus for bi-directional control of computing unit frequency | |
CN108139932A (zh) | 关闭关键执行路径的任务信令 | |
US11907138B2 (en) | Multimedia compressed frame aware cache replacement policy | |
Ghosh et al. | Exploring network on chip architectures using GEM5 |
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: 20190503 |
|
WD01 | Invention patent application deemed withdrawn after publication |