异构计算系统及其操作方法与流程

文档序号:18331420发布日期:2019-08-03 12:18阅读:462来源:国知局
异构计算系统及其操作方法与流程

于2018年1月25日向韩国知识产权局提交的韩国专利申请no.10-2018-0009400通过引用整体并入本文。

本文所述的本发明构思的实施例涉及包括不同类型的处理器的异构计算系统,并且更具体地说,涉及控制异构计算系统中的高速缓存一致性。



背景技术:

随着半导体技术的进步,包括多个处理器的计算系统正在被积极地研究。具体地说,基于各种因素(包括处理复杂的和各种操作的能力、用户需求的增加等),不包括同构处理器而包括异构处理器的异构计算系统应用范围正在扩大。通常,异构计算系统可包括中央处理单元(cpu)和图形处理单元(gpu)。

任务分配对于提高异构计算系统的计算能力而言是重要的。诸如图形处理的相对复杂的操作通常由gpu执行。gpu对程序和/或内核的处理可能不会在gpu阶段完成,gpu对程序和/或内核的处理结果可与cpu共享。在这个过程中,由于数据在cpu和gpu之间共享,可出现高速缓存一致性问题。

在考虑异构计算系统的高速缓存一致性时,通常不考虑待由gpu处理的程序和/或内核的工作负载。通常,考虑高速缓存命中或高速缓存未命中来控制高速缓存一致性。因此,当cpu与gpu之间的数据共享频繁时,可以以非高速缓存一致的方式处理程序和/或内核。当cpu与gpu之间很少或不常共享数据时,可以以高速缓存一致的方式处理程序和/或内核。在资源管理、电源管理和系统性能方面,上述数据处理和高速缓存管理可能不理想。



技术实现要素:

本发明构思的实施例提供一种其中基于被cpu和gpu共享的数据适应性地控制高速缓存一致性的异构计算系统。

根据本发明构思的一些实施例,一种异构计算系统可包括:第一处理器;第二处理器,其被配置为按次序执行从所述第一处理器卸载的多个内核,所述第一处理器和所述第二处理器是异构的;以及一致性控制器,其被配置为在所述多个内核被执行之前,基于包括在所述多个内核中的每一个中的指令的属性将所述多个内核中的每一个分类至第一组和第二组中的一组。所述一致性控制器还被配置为基于在所述多个内核中的一个内核的执行的过程中所述第一处理器与所述第二处理器之间的交互,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组。

根据本发明构思的其它实施例,一种操作包括异构的第一处理器和第二处理器的异构计算系统的方法,该方法包括以下步骤:将多个内核从第一处理器卸载至第二处理器;基于包括在所述多个内核中的每一个中的指令的属性,将所述多个内核中的每一个分类至第一组和第二组中的一组;利用所述第二处理器按次序执行所述多个内核,其中,可按照高速缓存一致方式执行所述多个内核中属于所述第一组的第一内核,并且可按照非高速缓存一致方式执行所述多个内核中属于所述第二组的第二内核;以及基于在执行所述多个内核中的所述第二内核中的一个第二内核的过程中所述第一处理器与所述第二处理器之间的交互,将所述多个内核中的所述第二内核中的所述一个第二内核从所述第二组重新类至所述第一组。

根据本发明构思的其它一些实施例,一种异构计算系统可包括:cpu;gpu,其按次序执行从cpu卸载的多个内核;以及一致性控制器,其被配置为在所述多个内核被执行之前基于包括在所述多个内核中的每一个中的指令的属性,将所述多个内核中的每一个分类至第一组和第二组中的一组,并且还被配置为基于在多个内核中的一个内核的执行的过程中cpu与gpu之间的交互,将所述多个内核中的所述一个内核从第二组重新分类至第一组。

附图说明

通过参照附图详细描述本发明构思的示例实施例,本发明构思的以上和其它目的和特征将变得清楚。

图1是示出根据本发明构思的实施例的异构计算系统的示例配置的框图;

图2是示出根据本发明构思的一些实施例的异构计算系统的示例配置的框图;

图3a是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;

图3b是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;

图3c是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;

图3d是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;

图4是示出根据本发明构思的一些实施例的异构计算系统的配置和操作的框图;

图5是概念性地示出根据本发明构思的一些实施例的图4所示的第一一致性冲突分析器的操作的示图;

图6是概念性地示出根据本发明构思的一些实施例的图4所示的第二分析器或一致性冲突跟踪器的操作的示图;

图7a和图7b是概念性地示出根据本发明构思的一些实施例的如何通过图形处理单元(gpu)执行从中央处理单元(cpu)卸载的内核的示图;

图8是示出根据本发明构思的一些实施例的在cpu与gpu之间进行频繁的数据共享(即,动态共享)的示例的示图;

图9是概念性地示出根据本发明构思的一些实施例的用于确定在cpu与gpu之间进行数据的动态共享的示例操作的框图;

图10是概念性地示出根据本发明构思的一些实施例的用于确定在cpu与gpu之间进行数据的动态共享的其它示例操作的框图;

图11是概念性地示出根据本发明构思的一些实施例的用于确定在cpu与gpu之间进行数据的动态共享的其它示例操作的框图;

图12是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图;

图13是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图。

具体实施方式

下文中,参照附图详细描述本发明构思的实施例。在整个附图的描述中,相同的标号指代相同元件。应该注意,参照一个实施例描述的本发明的各方面可与不同实施例结合,尽管对于这一点没有明确描述。也就是说,任何实施例的所有实施例和/或特征可按照任何方式和/或组合进行组合。

如本文所用,术语“实时”意指执行操作而不插入任何计划或人工延迟。

本发明构思的一些实施例源于这样的事实,即在包括例如中央处理单元(cpu)和图形处理单元(gpu)的异构计算系统中,可主要基于通过不同处理器的高速缓存命中和未命中管理高速缓存一致性。这可导致这种情况:即使在处理器之间经常共享数据时,也以非高速缓存一致方式执行内核,也可导致这种情况:即使在处理器之间很少共享数据时,也以高速缓存一致性方式执行内核。本发明的实施例可提供高速缓存一致性控制器,其被配置为在执行之前,基于对内核各自的指令的分析,将内核分类为非高速缓存一致组或高速缓存一致组。然而,高速缓存一致性控制器可进一步被配置为在两个组之间对内核重新分类,诸如基于对执行内核时处理器之间的数据共享的分析,将内核从非高速缓存一致组重新分类为高速缓存一致组。结果,重新分类可以通过将高速缓存存储器适应性地用于其中数据更可能和/或更频繁地在处理器之间共享的那些内核来提高系统性能。

图1是示出根据本发明构思的一些实施例异构计算系统100的示例配置的框图。异构计算系统100可包括两个或更多个异构处理器110和120以及一致性控制器130。构成异构计算系统100的组件可通过总线180以通信方式连接。

另外,在另一实施例中,片上系统soc可实施为包括存储器控制器140、存储装置控制器150、通信模块160和显示适配器170。系统存储器145可连接至存储器控制器140。存储装置(storage)155可连接至存储装置控制器150。显示器175可连接至显示适配器170。

异构计算系统100可包括一个或多个电子装置,诸如台式计算机、笔记本计算机、平板、智能电话、可穿戴装置、视频游戏机、工作站和服务器。在一些实施例中,两个或更多个异构处理器110和120以及一致性控制器130可以是在这些装置中实现的片上系统soc。

可将两个或更多个异构处理器110和120设置在一个芯片中,以提供异构计算环境。例如,两个或更多个异构处理器110和120可包括中央处理单元(cpu)110和图形处理单元(gpu)120。

cpu110可控制异构计算系统100的整体操作。cpu110可处理各种算术操作和/或逻辑操作。在一些实施例中,cpu110可为包括一个或多个处理器核的多核处理器。cpu110可包括由所述一个或多个处理器核使用以执行各种操作的高速缓存存储器。高速缓存存储器可临时存储由cpu110使用以执行应用的命令和/或参数值。

gpu120可执行2d和/或3d处理。gpu120可用于执行渲染以通过显示器175输出图像。另外,gpu120可用于执行复杂操作,诸如几何结构的计算和标量浮点与矢量浮点的计算。gpu120可执行利用诸如opencl、opengl或webgl的应用程序编程接口(api)编码的各种命令。gpu120可包括专用存储器。在这种情况下,嵌入于gpu120中或者连接至gpu120的专用存储器可用作帧缓冲器、纹理映射和/或阵列存储空间。

一致性控制器130可被配置为保持cpu110与gpu120之间的高速缓存一致性。例如,一致性控制器130可控制关于在cpu110与gpu120之间频繁交换的数据和/或变量的信息。例如,一致性控制器130可允许cpu110共享对从cpu110卸载并由gpu120处理的内核的处理结果。

如下面更详细的描述,一致性控制器130可预先分析从cpu110卸载并且将由gpu120执行的内核,并且可将内核分为两组。例如,分类后的组中的第一组可包括其中在cpu110与gpu120之间频繁出现数据共享的具有存储器约束(memory-bound)特性的内核。分类后的组中的第二组可包括其中cpu110与gpu120之间很少出现或低频率出现数据共享的具有计算约束(compute-bound)特性的内核。

另外,在通过gpu120执行内核的同时一致性控制器130可将属于第二组的内核进行重新分类。例如,一致性控制器130可将以下这种内核进行重新分类为第一组:被确定为属于第二组但是经历cpu110与gpu120之间的频繁数据共享的内核。通过包括在cpu110和gpu120中的高速缓存存储器,cpu110和gpu120可共享属于第一组的内核的处理结果。相反,通过系统存储器145,cpu110和gpu120可共享属于第二组的内核的处理结果。

存储器控制器140可控制系统存储器145。例如,存储器控制器140可控制异构计算系统100与系统存储器145之间的数据输入/输出。

系统存储器145可临时存储由cpu110和/或gpu120处理的数据或将由cpu110和/或gpu120处理的数据。在引导操作中,将操作系统(os)、基本应用程序和/或固件加载至系统存储器145中。例如,在引导异构计算系统100时,存储在存储装置155中的os图像可基于引导次序被加载至系统存储器145中。异构计算系统100的整体输入/输出操作可由操作系统os支持。另外,可将由用户选择或者用于提供基本服务的(例如,与图形处理关联的)应用程序和/或固件加载至系统存储器145。

例如,系统存储器145可包括易失性存储器(诸如动态随机存取存储器(dram)或同步dram(sdram))和/或非易失性存储器(诸如相变ram(pram)、磁阻ram(mram)、电阻式ram(reram)或铁电ram(fram))。然而,为了描述的目的,下面假设通过基于双倍数据速率(ddr)接口的dram实施系统存储器。

存储装置控制器150可控制存储装置155。例如,存储装置控制器150可控制异构计算系统100与存储装置155之间的数据输入/输出。

存储装置155可包括一个或多个存储器装置和控制器。存储装置155的存储器装置可不管电源如何都保持数据。例如,存储装置155可包括诸如闪速存储器、pram、mram、reram或fram的非易失性存储器。例如,存储装置155可包括诸如固态驱动(ssd)、可移动存储、嵌入式存储等的存储介质。

通信模块160可与异构计算系统100的外部装置/系统通信。如图1所示,通信模块160的功能的至少一部分可并入包括cpu110、gpu120和一致性控制器130的soc中。然而,在其它实施例中,通信模块160可以是独立于soc制造的功能块、电路或半导体芯片。

例如,通信模块160可支持诸如以下(但不限于此)的一个或多个无线通信协议:长期演进(lte)、微波接入全球互操作性(wimax)、全球移动通信系统(gsm)、码分多址(cdma)、蓝牙、近场通信(nfc)、无线保真(wi-fi)和射频识别(rfid);和/或诸如以下(但不限于此)的一个或多个有线通信协议:传输控制协议/互联网协议(tcp/ip)、通用串行总线(usb)和火线。

总线180可在异构计算系统100的组件之间提供通信路径。例如,总线180可包括片外互连。异构计算系统100的组件可基于总线180的总线格式彼此交换数据。例如,总线格式可包括各种接口协议中的一个或多个,诸如usb、小型计算机系统接口(scsi)、快速外围组件互连(pcie)、移动pcie(m-pcie)、高级技术附件(ata)、并行ata(pata)、串行ata(sata)、串行附接scsi(sas)、集成驱动电子(ide)、增强型ide(eide)、快速非易失性存储器(nvme)和通用闪存(ufs)。

图2是示出根据本发明构思的一些实施例的异构计算系统的示例配置的框图。与参照图1描述的实施例不同,异构计算系统200可通过基于片上互连的片上网络(noc)实施。

异构计算系统200可具有包括硬件知识产权(ip)的一个或多个模块。硬件ip可包括两个或更多个异构处理器210和220、一致性控制器230、存储器控制器240、存储装置控制器250、通信模块260和显示适配器270。异构计算系统200的配置不限于此。例如,异构计算系统200还可包括硬件ip280。例如,硬件ip280可以是用于为用户提供便利的用户接口,诸如相机模块、音频模块或触摸垫。

系统存储器245可连接至存储器控制器240,并且存储装置255可连接至存储装置控制器250。显示器275可连接至显示适配器270。硬件ip与参照图1描述的组件基本相同,因此,这里将不重复对其的详细描述。

然而,硬件ip中的每一个可包括网络接口单元niu。网络接口单元niu提供用于在硬件ip之间通信的接口。硬件ip可通过网络接口单元niu和路由器“r”彼此连接。例如,路由器“r”可包括缓冲器和片上网络交换机。硬件ip可通过片上网络交换机的交换操作以通信方式连接。

路由器“r”、将路由器“r”彼此连接的物理链接以及将路由器“r”与网络接口单元niu连接的物理链接称作“片上互连”。硬件ip之间的平行通信可通过片上互连执行。

根据上面简单描述的异构计算系统100和200的示例配置,预先并且实时地分析从cpu卸载的内核。因为基于分析结果通过高速缓存存储器进行cpu与gpu之间的数据共享,所以访问共享的数据的速度可提高。另外,因为数据不会通过系统存储器被不必要地共享,因此可防止或减少系统性能降低或劣化。

图3a是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的示例配置的框图。异构计算系统300a可包括cpu310a、gpu320a、一致性控制器330a、存储器控制器340a、系统存储器345a、存储装置控制器350a和存储装置355a。异构计算系统300a的组件分别对应于图2所示的组件,并且具有相似的标号。因此,下面将不重复上面提供的描述,并且将基于先前描述的实施例之间的差异描述异构计算系统300a的具体操作。

cpu310a和gpu320a中的每一个包括最后一级高速缓存llc。虽然为了简化图示,在图3a中未示出,但是cpu310a和gpu320a中的每一个还可包括较更高级高速缓存。cpu310a和gpu320a可通过片上互连390a与一致性控制器330a通信。片上互连390a可支持通过利用最后一级高速缓存llc中的至少一个执行的cpu310a与gpu320a之间的数据共享。

一致性控制器330a可通过片上互连390a与异构计算系统300a的组件通信。片上互连390a可支持高速缓存一致性互连cci和非高速缓存一致性互连ncci二者。片上互连390a可包括执行cci与ncci之间的交换操作的(例如,包括在图2的路由器“r”中的)片上网络交换机,使得由cpu310a和/或gpu320a处理的数据通过任何其它硬件/软件组件被处理。

gpu驱动器346a提供使得加载至系统存储器345a的应用能够与gpu320a通信的接口。例如,gpu驱动器346a可从待在异构计算系统300a或框架上执行的应用中调用程序。被gpu驱动器346a调用的程序可由gpu320a执行。也就是说,被gpu驱动器346a调用的程序可包括被cpu310a卸载以在gpu320a上执行的多个内核(下文中称作“gpu内核”)。可将gpu驱动器346a加载至系统存储器345a。

内核调度器348a可调度将在cpu310a和/或gpu320a上执行的内核以及各个内核的线程。内核调度器348a可分析并识别将在cpu310a和/或gpu320a上执行的内核。另外,内核调度器348a可以是通过利用诸如opengl的api生成的程序。内核调度器348a可以是存储在存储装置355a中并且被加载至系统存储器345a并在系统存储器345a上执行的程序。

图3b是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的另一示例配置的框图。异构计算系统300b的配置和操作与图3a所示的异构计算系统300a相似,并且将基于与先前描述的实施例的差异进行描述。

cpu310b和gpu320b可通过片上互连390b与构成异构计算系统300b的硬件和软件组件通信。特别地,可将控制cpu310b与gpu320b之间的数据共享的一致性控制器330b设置在存储器控制器340b中。在图3b的实施例中,片上互连390b可支持cci和ncci二者。

可在存储器控制器340b中实施一致性控制器330b。例如,可通过一致性控制器330b的高速缓存一致性目录,参考与其中频繁进行cpu310b与gpu320b之间的数据共享的gpu内核关联的数据。也就是说,因为利用cpu310b和gpu320b的最后一级高速缓存llc而不是利用系统存储器345b来共享数据,所以可提高gpu内核的处理速度,并且可防止或减少系统存储器345b资源的不必要浪费。

图3c是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的另一示例配置的框图。异构计算系统300c的配置和操作与图3a或图3b所示的异构计算系统300a或300b相似,并且将基于与先前描述的实施例的差异进行描述。

可在cpu310c和gpu320c二者中实施一致性控制器330c。例如,可在cpu310c中实施第一一致性控制器chctrl1,并且可在gpu320c中实施第二一致性控制器chctrl2。第一一致性控制器chctrl1和第二一致性控制器chctrl2可不被配置为存储相同数据。也就是说,第二一致性控制器chctrl2可以不是第一一致性控制器chctrl1的复制品。然而,第一一致性控制器chctrl1和第二一致性控制器chctrl2可通过片上互连390c彼此连接以共享数据。

例如,可通过第一一致性控制器chctrl1的高速缓存一致性目录或者第二一致性控制器chctrl2的高速缓存一致性目录来参考与其中频繁进行cpu310c与gpu320c之间的数据共享的gpu内核关联的数据。也就是说,通过利用cpu310c和gpu320c的最后一级高速缓存llc而不是系统存储器345c来共享数据。

图3d是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的另一示例配置的框图。异构计算系统300d的配置和操作与图3a所示的异构计算系统300a相似,并且将基于与先前描述的实施例的差异来进行描述。然而,异构计算系统300d可包括共享的最后一级高速缓存。例如,可在cpu310d和gpu320d外部实施共享的最后一级高速缓存。

参照图3a至图3d描述图2的异构计算系统200的示例配置。然而,本发明构思不限于基于片上互连的片上网络。也就是说,可将本发明构思应用于图1所示的基于片外的片上系统。然而,在下面描述的实施例中,将基于本发明构思应用于基于片上互连的片上网络的假设提供描述。

图4是示出根据本发明构思的一些实施例的异构计算系统的配置和操作的框图。异构计算系统400可包括cpu410、gpu420、一致性控制器430和系统存储器445。如上所述,cpu410、gpu420和一致性控制器430可构成利用一个芯片制造的片上网络。

首先,针对示出的目的,假设从cpu410卸载的程序包括多个内核,并且按次序执行所述多个内核。在gpu420执行gpu内核之前可分析gpu内核。例如,加载至系统存储器445并且在其上执行的编译器446可分析各个内核的指令。所述多个内核的指令可包括算术命令、加载和存储命令、纹理命令和/或任何其它命令。将编译器446的分析结果(即,内核指令分布)转移至第一分析器(即,一致性冲突分析器;cia)434。

一致性控制器430可包括高速缓存一致性目录432、第一分析器434和第二分析器(即,一致性冲突跟踪器;cit)436。高速缓存一致性目录432可包括待被cpu410和/或gpu420参考的数据类型、高速缓存地址、共享信息和有效性信息。这里,共享信息包括关于待被高速缓存地址参考的数据是否被cpu410和gpu420共享的信息。

在gpu内核被执行之前,第一分析器434可静态地分析每个内核。例如,基于从编译器446接收到的内核指令分布,第一一致性冲突分析器434可确定各个内核具有存储器约束特性还是计算约束特性。

如果内核的具有特定属性的指令与所有指令的比例大于或等于阈值,则第一分析器434可将对应的内核分类为具有存储器约束特性的内核。这里,具有特定属性的指令可以是与从cpu410加载和/或存储到cpu410相关的指令。换句话说,从cpu410加载可以意味着卸载gpu内核和/或加载cpu410的中间处理结果。针对cpu410的存储可以返回gpu420的中间处理结果或最终处理结果。

可将第一一致性冲突分析器434的分析结果存储在cpu410的存储器(例如,最后一级高速缓存llc和/或更高级高速缓存)中,但是本发明构思的实施例不限于此。

在图4的实施例中,第一一致性冲突分析器434示为包括在一致性控制器430中的硬件块。然而,在其它实施例中,作为替代或另外,一致性控制器430可以是加载至系统存储器445和在其上执行的软件模块,或者可以包括在gpu420中或连接至gpu420的专用存储器(未示出)。

cpu410或gpu420可执行通过第一分析器434分类的内核。也就是说,可按照高速缓存一致方式处理具有存储器约束特性的内核,并且可通过最后一级高速缓存llc共享内核的处理结果。相反,可按照非高速缓存一致方式处理具有计算约束特性的内核,并且可通过系统存储器445共享内核的处理结果。

可基于编译器446的分析结果通过均匀地分析内核提高cpu410与gpu420之间的数据共享的效率。然而,在执行待按照非高速缓存一致方式处理的内核的同时,可在cpu410与gpu420之间进行数据交换(即,交互)。在这种情况下,通过最后一级高速缓存llc的数据共享可比通过系统存储器445的数据共享更有效。

在本发明构思的一些实施例中,在执行内核的同时第二分析器436可将具有计算约束特性的内核重新分类。例如,第二分析器436可实时地监视cpu410与gpu420之间的数据交换。另外,第二一致性冲突跟踪器436可额外监视与cpu410与gpu420之间的数据交换关联的各种因素。下面将更充分地描述其中第二一致性冲突跟踪器436将正被执行的内核重新分类的过程。

当确定在待按照非高速缓存一致方式处理的内核被执行的同时数据在cpu410与gpu420之间基于一定频率交换时,第二分析器436可更新高速缓存一致性目录432,使得正被执行的内核按照高速缓存一致方式被处理。结果,可通过最后一级高速缓存llc进行执行内核期间的cpu410和gpu420的数据共享。也就是说,可将存储在系统存储器445中的共享的数据复制到共享高速缓存区。

上述图4的实施例是基于图3a的。然而,可通过合适的修改/改变将图4的实施例应用于图3b至图3d的实施例。

图5是概念性地示出根据本发明构思的一些实施例的图4所示的第一一致性冲突分析器434的操作的示图。如上所述,从cpu卸载的程序包括由cpu410或gpu420按次序执行的多个gpu内核kernel#1至kernel#n。为了更好地理解,将参照图4和图5一起进行描述。

在执行之前通过编译器446分析gpu内核kernel#1至kernel#n。第一分析器434可基于分析结果(即,内核指令的分布)按次序对待被执行的内核分类。例如,第一一致性冲突分析器434可将预计在cpu410与gpu420之间的数据交换频繁的内核分类为第一组。可按照高速缓存一致方式处理由cci指示的属于第一组的内核。相反,第一分析器434可对预计在cpu410与gpu420之间的数据交换很少或不频繁的内核分类为第二组。可按照非高速缓存一致方式处理由ncci指示的第二组内核。

然后,gpu420可从内核kernel#1至内核kernel#n按次序执行内核。

图6是概念性地示出图4所示的第二分析器或第二一致性冲突跟踪器436的操作的示图。为了更好地理解,将参照图4和图6一起提供描述。

第二一致性冲突跟踪器436可在每个内核被执行的同时监视cpu410与gpu420之间的数据交换等,并且可基于监视结果将正被执行的内核重新分类。监视和重新分类所针对的内核是由ncci指示的第二组的内核。可将第二组的内核中的确定cpu410与gpu420之间的数据交换频繁的内核重新分类为属于第一组。例如,可考虑交换次数和/或交换频率。在实施例中,图6中的示例示出为内核kernel#n-1和kernel#n被重新分类为属于第一组。

第二一致性冲突跟踪器436可关于重新分类的内核kernel#n-1和kernel#n更新高速缓存一致性目录432。随着高速缓存一致性目录432更新,可更新重新分类的内核kernel#n-1和kernel#n的数据类型、高速缓存地址、共享信息和有效性信息。也就是说,cpu410和gpu420可参考高速缓存一致性目录432信息通过最后一级高速缓存llc而不是系统存储器445共享数据。

图7a和图7b是概念性地示出怎样通过根据本发明构思的一些实施例的gpu执行从cpu卸载的内核的示图。为了更好地理解,将参照图4和图6一起提供描述。

图7a示出了在cpu410与gpu420之间不共享数据的示例。转移从cpu410卸载的内核,作为gpu420的输入。gpu420处理该被卸载的内核的线程。例如,图7a的实施例可对应于对包括在gpu420中或连接至gpu420的专用存储器进行初始化的情况。因为仅通过gpu420处理线程,所以在cpu410与gpu420之间不共享数据。在这种情况下,因为不需要按照高速缓存一致方式处理内核,因此可按照非高速缓存一致方式处理内核。

图7b示出了在cpu410与gpu420之间曾经进行数据共享的示例。gpu420可处理从cpu410卸载的内核的线程,并且处理结果转移至cpu410。例如,图7b的实施例可对应于其中gpu420执行所有操作并且cpu410接收和处理操作结果的示例。即使在cpu410与gpu420之间曾经共享数据,但是可按照非高速缓存一致方式连续处理正被执行的内核。

图8是示出在cpu410与gpu420之间频繁共享(即,动态共享)数据的示例的示图。为了更好地理解,将参照图4和图6一起提供描述。

例如,从cpu410卸载的内核被输入至gpu420,作为第一输入input#1。gpu420根据第一输入input#1处理第一线程threads#1,并且输出第一输出output#1作为处理结果。cpu410处理作为中间结果的第一输出output#1,并且将中间结果输入至gpu420作为第二输入input#2。可通过一系列上述处理将通过gpu420处理的第k输出output#k输入至cpu410。

从图8中理解,cpu410与gpu420之间的数据交换是频繁的。例如,当图像帧被分割成多个图块并以图块为单位处理时,cpu410与gpu420之间的数据交换可以是频繁的。原因是,当处理构成图像帧的多个图块中的任一个时可使用邻近图块的邻接信息。对于另一示例,当执行复杂计算操作时,cpu410与gpu420之间的数据交换可以是频繁的。

第二分析器或一致性输入跟踪器436可实时监视cpu410与gpu420之间的数据交换。第二一致性冲突跟踪器436可例如基于在cpu410与gpu420之间交换的数据量、数据交换的次数等,确定在cpu410与gpu420之间进行了数据的动态共享。第二分析器或第二一致性冲突跟踪器436可将被确定为动态地共享数据的内核重新分类为第一组。另外,第二分析器或第二一致性冲突跟踪器436可关于正被执行的内核更新高速缓存一致性目录432。

随着高速缓存一致性目录432的更新,可通过最后一级高速缓存llc而不是系统存储器445执行cpu410与gpu420之间的数据共享。也就是说,即使内核正被执行,可按照高速缓存一致方式而不是现有的非高速缓存一致方式(即,处理重新分类的内核以从非高速缓存一致方式转变为高速缓存一致方式的方式)处理被重新分类为属于第一组的内核。

图8中提供的描述涉及其中基于cpu410与gpu420之间的数据交换确定数据是否动态地共享的实施例。然而,作为另外一种选择或除此之外,在作出这种确定的过程中可另外应用其它标准。将参照图9、图10和图11描述所述实施例。

图9是概念性地示出根据本发明构思的一些实施例的确定在cpu510与gpu520之间动态地共享数据的操作的框图。为了更好地理解,将参照图4和图9一起提供描述。

首先,假设按照非高速缓存一致方式执行正被执行的内核,并且cpu510和gpu520的处理结果data1和data2被存储在系统存储器545中。也就是说,通过系统存储器545执行cpu510与gpu520之间的数据共享。

如果cpu510与gpu520之间的数据交换频繁,则可频繁生成用于访问系统存储器545的具体区的命令和地址。在这种情况下,第二分析器或第二一致性冲突跟踪器536可监视用于访问系统存储器545的其中存储共享的数据的区的命令和/或地址。如果确定系统存储器545的其中存储共享的数据的区被频繁访问,则第二一致性冲突跟踪器536可确定通过cpu510和gpu520进行数据的动态共享。例如,命令和/或地址发出的次数或频率可被认为是确定数据的动态共享的标准。

在确定正被gpu520执行的内核的处理结果被cpu510频繁共享的示例中,可将由cpu510和gpu520共享的数据复制至cpu510和gpu520的最后一级高速缓存llc中的至少一个。第二一致性冲突跟踪器536可更新高速缓存一致性目录532,并且cpu510和/或gpu520可参考更新的高速缓存一致性目录532访问共享的数据。

图10是概念性地示出根据本发明构思的一些实施例的确定在cpu610与gpu620之间进行数据的动态共享的进一步操作的框图。在图10的实施例中,可在确定在cpu610与gpu620之间进行数据的动态共享时使用为了保持高速缓存一致性而发出的窥探请求(snooprequest)和回复。为了更好地理解,将参照图4和图10一起提供描述。

cpu610可为了保持包括cpu610和gpu620的异构计算系统600的高速缓存一致性而监视片上互连690。如果存储在gpu620的最后一级高速缓存llc中的数据的高速缓存一致性被保持,则片上互连690可将对应于高速缓存一致性的回复发送至cpu610,反之亦然(即,存储在cpu610的最后一级高速缓存llc中的数据的高速缓存一致性)。

例如,当频繁生成窥探请求和回复时,可通过cpu610和gpu620的最后一级高速缓存llc进行数据共享。因此,与窥探请求和回复关联的共享的数据可为可得益于快速处理的数据。

如果在cpu610和/或gpu620中未保持高速缓存一致性(即,窥探未命中),则片上互连690可访问系统存储器645的其中存储有共享的数据的区。在该示例中,第二一致性冲突跟踪器636可监视对其中存储有共享的数据的系统存储器645的访问。如上所述,因为在cpu610与gpu620之间频繁共享数据的同时可出现窥探未命中,所以可需要按照高速缓存一致方式快速处理在gpu620中正被执行的内核。

第二分析器636可关于存储在系统存储器645中的共享的数据更新高速缓存一致性目录(例如,图4的432)。作为更新结果,可将存储在系统存储器645中的共享数据复制至cpu610和/或gpu620的最后一级高速缓存llc,因此高速缓存一致性可被保持。然后,可按照高速缓存一致方式处理在gpu620中正被执行的内核。

图11是概念性地示出根据本发明构思的一些实施例确定在cpu710与gpu720之间进行数据的动态共享的其它操作的框图。在图11的实施例中,可在确定在cpu710与gpu720之间进行数据的动态共享时使用共享虚拟存储器(svm)。为了更好地理解,将参照图4和图11一起提供描述。

在其中在一个芯片中实施多个(特别地,异构)处理器的异构计算系统中,可针对异构处理器使用共享虚拟存储器,以有效地访问系统存储器。例如,可通过监视共享虚拟存储器中的通过cpu710处理的写数据和共享虚拟存储器中的通过gpu720处理的写数据确定数据共享。相似地,可监视来自共享虚拟存储器的读数据。

如果通过cpu710和gpu720频繁共享存储在系统存储器745中的数据,并且基于监视针对共享虚拟存储器的读/写的结果确定该共享,则第二一致性冲突跟踪器736可关于存储在系统存储器745中的共享的数据更新高速缓存一致性目录(例如,图4的432)。作为更新的结果,可将存储在系统存储器745中的共享数据复制至cpu710和/或gpu720的最后一级高速缓存llc。然后,可按照高速缓存一致方式处理在gpu720中正被执行的内核。

可使用各种标准确定是否在cpu710与gpu720之间进行数据的动态共享。例如,第二一致性冲突跟踪器736可监视高速缓存未命中出现的次数和/或访问系统存储器745的频率。

图12是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图。为了更好地理解,将参照图4、图6和图12一起提供描述。

在方框s110,可将从cpu410卸载的gpu内核输入或提供至gpu420。从cpu410卸载的内核可构成程序,并且所述多个内核由gpu420按次序执行。

在方框s120,在执行gpu内核之前通过第一分析器434进行第一分析。第一分析器434可基于从编译器446接收到的内核指令分布将内核分为两组。例如,第一组可包括其中在cpu410与gpu420之间频繁进行数据共享的内核,第二组可包括其中在cpu410与gpu420之间很少或不常进行数据共享的内核。例如,用于确定动态共享的指令可以是与从cpu410至gpu420的加载和/或从gpu420至cpu410的输入关联的指令。

在方框s130,可执行gpu内核。如上所述,可按次序执行gpu内核。另外,可按照高速缓存一致方式执行第一组的内核,并且可按照非高速缓存一致方式执行第二组的内核。

在方框s140,第二组的内核中的一个或多个可通过第二分析器436被重新分类。即使基于从编译器446接收到的内核指令分布将内核分类为属于第二组,也可存在与同cpu410进行数据的动态共享关联的内核。因此,第二分析器436可将被确定为动态共享数据的内核重新分类为第一组。

重新分类为属于第一组的内核(即使其由gpu420处理)可被改变使得可按照高速缓存一致方式处理该内核。例如,在图2的实施例中,路由器“r”的片上网络交换机可执行合适交换操作,以按照高速缓存一致方式处理被重新分类为第一组的内核。

在方框s150,可由cpu410收集和处理被gpu420处理的内核的结果,并且可将与gpu内核关联的渲染图像或计算结果提供给用户。

图13是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图。为了更好地理解,将参照图4、图6和图13一起提供描述。

在方框s205,可将从cpu410卸载的gpu内核输入或提供至gpu420。

在方框s210,在执行之前分析gpu内核,以确定是否每个内核具有存储器约束特性。例如,第一分析器434可基于从编译器446接收到的内核指令分布确定各个内核的属性。例如,用于该确定的属性可以是与从cpu410至gpu420的加载关联的指令和/或与从gpu420输出至cpu410的处理的结果关联的指令。

当确定内核具有存储器约束特性时(是),执行方框s215。这意味着与由gpu420处理的内核关联的数据被cpu410频繁共享。相反,当确定内核具有计算约束特性时(否),执行方框s235。这意味着与由gpu420处理的内核关联的数据很少或不常被cpu410共享。

在方框s215,可按照高速缓存一致方式处理内核。也就是说,在gpu420处理gpu内核的结果可通过最后一级高速缓存llc共享。因为数据在cpu410与gpu420之间频繁共享,因此在方框s210确定内核具有存储器约束特性。可将gpu内核的中间处理结果输入至cpu410,并且cpu410可累积处理结果或者可执行以下额外处理(方框s220)。

在方框s225,确定当前正被执行的内核是否为最后一个内核。当确定当前正被执行的内核是最后一个内核时(是),执行方框s230;当确定当前正被执行的内核不是最后一个内核时(否),处理进行至方框s205。

在方框s230,可由cpu410收集和处理被gpu420处理的内核的结果,并且可将渲染图像或与gpu内核关联的计算结果提供给用户。

当内核具有计算约束特性时,在方框s235,按照非高速缓存一致方式处理内核。这意味着与被gpu420处理的内核关联的数据很少或不常被cpu410共享。与被gpu420处理的内核关联的数据可通过系统存储器445而不是最后一级高速缓存llc共享。

在方框s240,第二分析器或第二一致性冲突跟踪器136可监视cpu410与gpu420之间的数据共享。

在方框s245,第二分析器或第二一致性冲突跟踪器136可确定数据是否在cpu410与gpu420之间频繁交换(即,动态共享)。例如,第二一致性冲突跟踪器436可基于例如在cpu410与gpu420之间的数据交换、窥探请求和回复、针对共享虚拟存储器的读/写操作、由于连续高速缓存未命中对系统存储器的访问等确定数据是否在cpu410与gpu420之间频繁交换。

当确定数据被动态地共享时(是),执行方框s250;否则(否),该进程进行至方框s255。

在方框s250,可更新与正被执行的gpu内核关联的高速缓存一致性目录。结果,可按照高速缓存一致方式处理gpu内核。也就是说,处理gpu内核的结果可由cpu410和gpu420通过最后一级高速缓存llc共享。

在方框s255,正被执行的gpu内核可被完全处理。因为确定与正被执行的gpu内核关联的数据没有被动态共享,可按照非高速缓存一致方式连续处理该gpu内核。

根据本发明构思的实施例,可提供异构计算系统,以基于cpu与gpu之间的数据共享适应性地控制高速缓存一致性。

另外,根据本发明构思的实施例,可基于内核的指令属性对内核分类。在一些实施例中,可在执行内核的同时基于cpu与gpu之间的数据交换将该内核重新分类,以允许适应性地控制高速缓存一致性。

其它定义和实施例:

在本发明构思的上述各个实施例中,本文中可在包括任何新的和有用的处理、机器、制造或组成物质的,或任何新的和有用的改进的任何数量的可专利性的分类或上下文中示出和描述本发明构思的各方面。因此,本发明构思的各方面可完全由硬件、完全由软件(包括固件、常驻软件、微代码、等)实现或结合硬件和软件的实施例(一般都被称之为“电路”、“模块”、“组件”、“部件”、“单位”或“系统”)实现。例如,硬件可包括电路、电子电路、处理器、计算机、集成电路、集成电路芯片、压力传感器、惯性传感器、微机电系统(mems)、无源元件或它们的组合。此外,本发明构思的各方面可采用包括一个或多个计算机可读介质(具有计算机可读程序代码)的计算机程序产品的形式。

可使用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可为(但不限于)电子、磁、光、电磁或半导体系统、设备或装置或者以上的任何合适组合。计算机可读存储介质的更多特定示例(非穷举列表)包括:便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、具有中继器的合适的光纤、便携式压缩盘只读存储器(cd-rom)、光学存储装置、磁存储装置或以上的任何合适组合。在该文献的上下文中,计算机可读存储介质可为可包含或存储程序的有形介质,所述程序被指令执行系统、设备或装置使用或与它们结合使用。

计算机可读信号介质可包括例如基带中的或作为载波的一部分的其中实现计算机可读程序代码的传播数据信号。这种传播信号可以采取各种形式中的任何一种,包括(但不限于)电磁、光学或它们任何适当的组合。计算机可读信号介质可以是并非计算机可读存储介质的任何计算机可读介质,并且可以通信、传播或传输供指令执行系统、设备或装置使用或与它们结合使用的程序。在计算机可读信号介质上实现的程序代码可以使用任何适当的介质来传输,包括(但不限于)无线、有线、光纤电缆、rf等或以上的任何合适组合。

用于执行本发明构思各方面的操作的计算机程序代码可以一种或多种编程语言的任何组合来写入,编程语言包括面向对象的编程语言(诸如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb。net、python等)、传统的过程性编程语言(诸如“c”编程语言、visualbasic、fortran2003、perl、cobol2002、php、abap、labview)、动态编程语言(诸如python、ruby和groovy)或其它编程语言。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种方案中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,通过利用因特网服务提供商的因特网),或在云计算环境中或作为服务(例如,软件即服务(saas))提供。

本文参考根据本公开的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图来描述本发明构思的各方面。应该理解,流程图说明和/或框图的每个块以及流程图说明和/或框图中的块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得通过计算机的处理器或其他可编程指令执行设备执行的指令创建用于实现流程图和/或框图的一个或多个方框中指定的功能/动作的机制。

这些计算机程序指令也可以存储在计算机可读介质中,当执行该介质时,可以指导计算机、其它可编程数据处理设备或其它装置以特定方式工作,使得当这些指令存储在计算机可读介质中时,产生包括指令的制品,当执行该指令时,使计算机实现流程图和/或框图的一个或多个方框中指定的功能/动作。计算机程序指令还可以被加载到计算机、其它可编程指令执行设备或其它装置上,以使得在计算机、其它可编程设备或其它装置上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现流程图和/或框图的一个或多个方框中指定的功能/动作的过程。

图中的流程图和框图说明了根据本发明构思的各个方面的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这方面,流程图或框图中的每个块可以表示模块、段或代码部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应注意,在一些替代实现中,块中注明的功能可能不按照附图中注明的顺序出现。例如,实际上连续显示的两个块可以基本上同时执行,或者这些块有时可以按照相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图说明的每个块以及框图和/或流程图说明中的块的组合可以由执行指定功能或动作的专用的基于硬件的系统或专用硬件和计算机指令的组合来实现。

虽然已经参照其示例实施例描述了本发明构思,但是对于本领域普通技术人员来说显而易见的是,在不背离权利要求中设定的本发明构思的精神和范围的情况下,可以对其进行各种改变和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1