首页> 中国专利> 组合式CPU/GPU体系结构系统中的装置发现和拓扑报告

组合式CPU/GPU体系结构系统中的装置发现和拓扑报告

摘要

作为组合式CPU/APD体系结构系统的一个方面,提供用于发现并报告装置和系统拓扑的特性的方法和设备,所述特性与向组合式CPU/APD体系结构系统的各种计算资源有效地调度和分配计算任务有关。所述组合式CPU/APD体系结构在灵活的计算环境中对CPU和APD进行统一。在一些实施方案中,在单个集成电路中实施组合式CPU/APD体系结构能力,所述集成电路的元件可以包括一个或多个CPU核心和一个或多个APD核心。所述组合式CPU/APD体系结构创造了一个基础,在此基础上可以构建现有和新的编程框架、语言和工具。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-17

    授权

    授权

  • 2014-01-15

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20111215

    实质审查的生效

  • 2013-09-18

    发明专利申请更正 卷:29 号:34 页码:扉页 更正项目:优先权 误:61/423,5252010.12.15US 正:61/423,5652010.12.15US 申请日:20111215

    发明专利更正

  • 2013-08-21

    公开

    公开

说明书

背景

发明领域

本发明大体上是针对计算机系统。更具体来说,本发明是针对计 算机系统拓扑。

背景技术

对使用图形处理单元(GPU)来进行一般计算的渴望在最近由于 GPU的示例性每单位功率性能和/或成本而变得更加显著。一般来说, GPU的计算能力已以超过对应中央处理器(CPU)平台的计算能力的 速率增长。随着移动计算市场(例如,笔记本计算机、移动智能电话、 平板计算机等)和其所必需的支持服务器/企业系统的蓬勃发展,这种 增长已被用来提供指定品质的所需用户体验。因此,组合使用CPU 和GPU来执行具有数据并行内容的工作量正在成为一项体积技术 (volume technology)。

然而,GPU传统上已在约束程序设计环境中进行操作,其可主 要用于图形的加速。这些约束由以下事实而引起:GPU并不具有与 CPU一样丰富的程序设计生态系统。因此,它们的使用已主要限于 二维(2D)和三维(3D)图形以及少数前沿的多媒体应用,这些多媒体应 用已被习惯地用于处理图形和视频应用程序设计接口(API)。

随着多厂商支持的OpenCL和DirectCompute标准API和支 持工具的出现,GPU在传统应用中的限制已被扩展到传统图形的范 围之外。虽然OpenCL和DirectCompute是有希望的开端,但是在创 建允许将CPU和GPU组合来像CPU一样流畅地用于大多数程序设 计任务的环境和生态系统方面仍存在着许多障碍。

现有的计算系统常常包括多个处理装置。例如,一些计算系统包 括在独立芯片上的CPU和GPU(例如,CPU可能位于母板上,而GPU 可能位于图形卡上)或在单个芯片封装中的CPU和GPU。然而,这两 种布置仍包括与以下各项相关的重大挑战:(i)独立的存储系统、(ii) 有效调度、(iii)提供进程之间的服务质量(QoS)保证、(iv)程序设计 模型以及(v)编译至多个目标指令集体系结构(ISA)—全部都要同时 使功耗降到最小。

例如,离散的芯片布置迫使系统和软件体系结构设计者利用芯片 间接口来使每一个处理器存取存储器。虽然这些外部接口(例如,芯 片间接口)对用于配合异构型处理器的存储器等待时间和功耗具有负 效应,但是独立的存储系统(即,独立的地址空间)和驱动器管理的共 享存储器产生开销,所述开销对细粒卸荷(fine grain offload)来说变得 不可接受。

离散芯片布置和单芯片布置两者都会限制能够发送至GPU来执 行的命令的类型。举例来说,常常不应将计算命令(例如,物理或人 工智能命令)发送至GPU来执行。存在这个基于性能的限制是因为 CPU可能相对快速地需要由这些计算命令执行的操作的结果。然而, 由于当前系统中的向GPU分派工作的高开销以及这些命令可能必须 排队等候首先执行其它先前发出的命令的事实,所以将计算命令发送 至GPU所引发的等待时间常常是不可接受的。

假定传统GPU可能不会有效地执行一些计算命令,则所述命令 必须在CPU内部执行。必须在CPU上执行命令增加了对CPU的处 理负担并且会阻碍总的系统性能。

虽然GPU为计算卸荷提供了极好的机会,但是传统GPU可能并 不适合于系统-软件-驱动进程管理,所述系统-软件-驱动进程管理是 在多处理器环境中进行有效操作所需要的。这些限制会产生若干问 题。

例如,由于进程无法被有效地识别和/或抢先,所以流氓进程可 以在任意长的时间内占用GPU硬件。在其它情况下,对硬件进行上 下文切断的能力受到严重约束,此情形发生在非常粗略的粒度下,而 且只发生在程序执行过程中一组极为有限的点上。存在这个约束是因 为不支持节省必要的体系结构和微体系结构状态来恢复和继续进程。 缺乏对精确异常的支持会阻止有故障的作业在稍晚的点上进行上下 文切出和恢复,从而导致较低的硬件利用率,因为有故障的线程占用 了硬件资源而且在故障处理期间处于闲置状态。

将CPU、GPU、I/O存储器管理组合成统一体系结构以使得计算 任务可以有效地进行调度和分配,这需要系统和应用软件具有统一 CPU/GPU系统体系结构的特征、特性、互连和属性等方面的某些知 识。

发明内容

所需要的是用于发现并报告装置和系统拓扑的特性的改进的方 法和设备,所述特性与向实施组合式CPU/GPU体系结构的系统的各 种计算资源有效地调度和分配计算任务有关。

虽然GPU、加速处理单元(APU)以及通用用途的图形处理单元 (GPGPU)是这个领域中常用的术语,但是表述“加速处理设备(APD)” 被认为是更广义的表述。例如,APD是指硬件和/或软件的任何配合 集合,与常规CPU、常规GPU、软件和/或其组合相比,所述任何配 合集合以加速方式完成与加速图形处理任务、数据并行任务或嵌套数 据并行任务相关的那些功能和计算。

作为组合式CPU/APD体系结构系统的一个方面,提供用于发现 并报告装置和系统拓扑的特性的方法和设备,所述特性与向组合式 CPU/APD体系结构系统的各种计算资源有效地调度和分配计算任务 有关。组合式CPU/APD体系结构在灵活的计算环境中对CPU和APD 进行统一。在一些实施方案中,在单个集成电路中实施组合式 CPU/APD体系结构能力,所述集成电路的元件可以包括一个或多个 CPU核心和一个或多个APD核心。组合式CPU/APD体系结构创造 了一个基础,在此基础上可以构建现有和新的编程框架、语言和工具。

附图说明

图1A是根据本发明的处理系统的说明性方框图。

图1B是图1A中所示的APD的说明性方框图。

图2是组合式CPU/APD体系结构系统的说明性方框图。

图3是APU的说明性方框图,所述APU是具有CPU、APD而 且进一步具有存储器管理和I/O存储器管理电路的集成电路,其中所 述CPU具有多个核心,所述APD具有多个单指令多数据(SIMD)引擎。

图4是专用APD的说明性方框图。

图5是根据本发明的实施方案的说明性进程的流程图。

图6是根据本发明的实施方案的说明性进程的流程图。

具体实施方式

一般来说,软件应该知晓基础硬件的特性,从而能够更好地利用 平台的执行能力,以便进行特征利用和任务调度。为了有效地利用组 合式CPU/APD体系结构系统的计算资源,必须发现平台的特征、特 性、互连、属性和/或特点并且将其报告给软件。

作为组合式CPU/APD体系结构系统的一个方面,提供用于发现 并报告装置和系统拓扑的特性的方法和设备,所述特性与向组合式 CPU/APD体系结构系统的各种计算资源有效地调度和分配计算任务 有关。根据本发明的组合式CPU/APD体系结构在灵活的计算环境中 对CPU和APD进行统一。

在一些实施方案中,在单个集成电路中实施组合式CPU/APD体 系结构能力,所述集成电路的元件可以包括一个或多个CPU核心和 一个或多个统一APD核心,如下文更详细地解释。与CPU和APD 通常分离(例如,位于单独的卡或板上或者位于单独的封装中)的传统 计算环境相反,组合式CPU/APD体系结构创造了一个基础,在此基 础上可以构建现有和新的编程框架、语言和工具。

组合式CPU/APD系统体系结构的统一环境使得程序员能够编写 相应的应用程序,所述应用程序无缝地在CPU与APD之间转变数据 处理,进而从每个设备必须提供的最佳属性中获益。统一的单个编程 平台可以提供强大的基础,用来开发可以采用并行方式的语言、框架 和应用程序。

在以下详述中,对“一个实施方案”、“实施方案”、“示例实施方 案”等的参考指示所描述的实施方案可以包括具体特征、结构或特点, 但是每个实施方案可能并没有必要包括所述具体特征、结构或特点。 此外,这类短语没有必要是指同一实施方案。另外,当结合一个实施 方案描述具体特征、结构或特点时,所主张的是本领域技术人员知道 结合无论是否被明确地描述的其它实施方案来实现这种特征、结构或 特点。

术语“本发明的实施方案”不要求本发明的所有实施方案都包括 所论述的特征、优点或操作模式。在不脱离本发明的范围的情况下, 可以设计出替代实施方案,并且可能并未详细描述或可能省略本发明 的众所周知的元件,以免模糊本发明的相关细节。另外,本文所使用 的术语仅出于描述具体实施方案的目的,而并不意图限制本发明。例 如,如本文所使用,单数形式的“一个(种)”以及“所述”也意图包括复 数形式,除非上下文另有明确指示。还将进一步理解的是,术语“包 括”、“包括了”、“包含”和/或“包含了”在本文中使用时指明所陈述的 特征、步骤、操作、元件和/或部件的存在,但是并不排除一个或多 个其它特征、步骤、操作、元件、部件和/或其群组的存在或添加。

用于进行基于CPU的特征检测和调度的常规机制(如CPU识别 (CPUID))甚至对同构型且相对简单的CPU拓扑都存在严重的限制, 所述CPU拓扑普遍用于如今的操作系统和平台中。

为了恰当地配置输入/输出存储器管理单元(IOMMU),有必要发 现CPU/存储器/APD/网络的拓扑(例如,附加板、存储控制器、北桥/ 南桥等)。类似地,为了合适地做出调度和工作量决策,应用软件需 要相应的信息,如有多少不同的APD和计算单元可以使用以及APD 和计算单元拥有什么特性。因此,需要一个或多个进程、一个或多个 硬件机制或者这两方面的组合来进行根据本发明的装置发现和拓扑 报告。更一般来说,需要至少一个机制、至少一个进程或者至少一个 机制和至少一个进程来进行装置发现和拓扑报告。

在本发明的一个实施方案中,关于装置和拓扑的信息在报告给应 用软件之前被编码。一种方式是将根据高级配置和电源接口(ACPI) 规格的表提供给操作系统层面,然后提供给用户模式层面。与装置和 拓扑发现有关的并且对调度和工作量决策制定有用的信息可以借助 此类表进行传递。所述表可以包括(但不限于)位点信息(例如,哪个存 储器最接近于APD)。对于“最接近”来说,通常意味着那个存储器在 物理上最接近,因为较短的信号路径通常意味着较轻的负载和较短的 信号渡越时间。然而,本文所使用的“最接近”更广泛来说包括可操作 来最快地传送数据的存储器。

对于CPU/标量计算核心来说,可发现的特性包括(但不限于)核心 的数量、高速缓存的数量,以及高速缓存拓扑(例如,高速缓存关联、 层级、等待时间)、翻译旁视缓冲区(TLB)、浮点单元(FPU)、性能状 态、功率状态等等。一些特性(例如,每个插槽内的核心的数量以及 高速缓存大小)目前是通过CPUID指令来暴露的。额外的特性(例如, 插槽的数量、插槽拓扑、性能/功率状态等)是或者将通过ACPI表来 暴露,所述ACPI表是通过适用于常规系统的ACPI定义来定义的。 CPU核心可以分布在不同的“位点域”非均匀性存储器体系结构 (NUMA)上;然而,在第一顺序上,核心由OS和虚拟存储器管理器 (VMM)调度器统一管理。

对于APD计算核心来说,可发现的特性包括(但不限于)单指令 多数据(SIMD)大小、SIMD布置、本地数据储存器关联、工作队列特 性、CPU核心,以及IOMMU关联、硬件上下文存储器大小等。一 些离散APD核心可以附接至活动平台或者从活动平台解除附接,而 集成APD核心可以是硬连线的,或者也可以是根据本发明的实施方 案的加速处理单元的一部分。

对于支持部件来说,可发现的部件包括扩展式外围部件互连 (PCIe)开关、APU或离散APD上的存储控制器通道和存储体以及非 计算I/O装置(AHCI、USB、显示控制器等)。系统和APD本地存储 器可以暴露各种相干和不相干的存取范围,操作系统按照不同方式管 理这些存取范围,而且这些存取范围可以对CPU或APD具有特定关 联。其它数据路径特性,包括(但不限于)类型、宽度、速度、相干性 特性和等待时间,可以是可发现的。一些特性通过PCI-E能力结构或 ACPI表来暴露;然而,目前并非所有与装置发现和拓扑报告有关的 特性都可以利用常规机制加以表达。

CPUID是指相应的指令,当由计算资源(如CPU)执行时,所述指 令提供与其具体特征和特点相关的信息。举例来说,x86体系结构 CPU可以提供相应的信息,如卖方ID、处理器信息和特征位、高速 缓存和TLB描述符信息、处理器序列号、所支持的最高扩展功能、 扩展处理器信息和特征位、处理器品牌字符串、L1高速缓存和TLB 识别符、扩展L2高速缓存特征、高级电源管理信息以及虚拟和物理 地址大小。

图1A是包括CPU 102和APD 104的统一计算系统100的示例 性图解。CPU 102可以包括一个或多个单核或多核CPU。在本发明的 一个实施方案中,系统100被形成在单个硅芯片或封装上,组合CPU  102和APD 104以提供统一的程序设计和执行环境。这个环境使得 APD 104能够像CPU 102一样流畅地用于一些程序设计任务。然而, CPU 102和APD 104被形成在单个硅芯片上并不是本发明的绝对要 求。在一些实施方案中,CPU 102和APD 104有可能被单独地形成 并且被安装在相同或不同的衬底上。

在一个实施例中,系统100还包括存储器106、操作系统108以 及通信基础设施109。以下更详细地论述操作系统108和通信基础设 施109。

系统100还包括内核模式驱动器(KMD)110、软件调度器(SWS) 112,以及存储器管理单元116,如IOMMU。系统100的部件可以被 实施为硬件、固件、软件或其任何组合。本领域技术人员将会理解, 除了图1A中所示的实施方案中所示的各项之外,系统100可以包括 一个或多个软件、硬件以及固件部件,或与图1A中所示的实施方案 中所示的各项不同的一个或多个软件、硬件以及固件部件。

在一个实施例中,驱动器(如KMD 110)典型地通过计算机总线或 通信子系统来与装置进行通信,硬件连接至所述计算机总线或通信子 系统。当调用程序调用驱动器中的例程时,所述驱动器向装置发出命 令。一旦装置将数据发送回到驱动器,所述驱动器就可以调用原始调 用程序中的例程。在一个实施例中,驱动器是与硬件有关的并且是操 作系统特定的。所述驱动器常常提供任何必要的异步的时间有关的硬 件接口所需要的中断处理。

装置驱动器,特别是在现代Microsoft Windows平台上的,能够 以内核模式(环0)或以用户模式(环3)进行运行。以用户模式运行驱动 器的主要益处是改进的稳定性,因为写入不良的用户模式装置驱动器 不会通过盖写内核存储器来使系统崩溃。另一方面,用户/内核模式 转换常常强加相当大的性能开销,从而针对短等待时间和高吞吐量要 求禁止用户模式驱动器。内核空间可以由用户模块仅通过使用系统调 用来存取。最终用户程序,像UNIX操作系统外壳或其它基于GUI 的应用程序,是用户空间的一部分。这些应用程序通过内核支持的功 能来与硬件进行交互。

CPU 102可以包括(未图示)控制处理器、现场可编程门阵列 (FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)中的一个或多 个。例如,CPU 102执行控制计算系统100的操作的控制逻辑,所述 控制逻辑包括操作系统108、KMD 110、SWS 112以及应用程序111。 在这个说明性实施方案中,根据一个实施方案,CPU 102通过例如以 下操作来发起并且控制应用程序111的执行:在CPU 102和其它处理 资源(如APD 104)上分配与那个应用程序相关的处理。

尤其是APD 104执行用于所选定的功能的命令和程序,所述所 选定的功能如图形操作和可能例如特别适用于并行处理的其它操作。 一般来说,APD 104可以被频繁地用于执行图形流水线操作(如像素 操作、几何计算),并且将图像渲染至显示器。在本发明的各种实施 方案中,APD 104还可以基于从CPU 102所接收的命令或指令来执 行计算处理操作(例如,与图形无关的那些操作,例如像视频操作、 物理模拟、计算流体动力学等)。

例如,命令可以被认为是典型地不是定义在指令集体系结构(ISA) 中的特殊指令。可以通过特殊处理器(如分派处理器、命令处理器或 网络控制器)来执行命令。另一方面,指令可以被认为是例如计算机 体系结构内部的处理器的单一操作。在一个实施例中,当使用两个 ISA集时,一些指令被用于执行x86程序,而一些指令被用于执行 APD计算单元上的内核。

在一个说明性实施方案中,CPU 102将所选定的命令传输至APD  104。这些所选定的命令可以包括图形命令和服从并行执行的其它命 令。可以大致上独立于CPU 102来执行还可以包括计算处理命令在 内的这些所选定的命令。

APD 104可以包括其自己的计算单元(未图示),如但不限于一个 或多个SIMD处理核心。如本文所提及,SIMD是流水线或程序设计 模型,其中通过每个处理元件自己的数据和共享的程序计数器,在多 个处理元件中的每一个上同时地执行内核。所有处理元件执行一个完 全相同的指令集。预测的使用使得工作项目能够参与或不参与每个所 发出的命令。

在一个实施例中,每个APD 104计算单元可以包括一个或多个 标量和/或向量浮点单元和/或算术逻辑单元(ALU)。APD计算单元还 可以包括专用处理单元(未图示),如反平方根单元和正弦/余弦单元。 在一个实施例中,APD计算单元在本文中统称为着色器核心122。

一般来说,具有一个或多个SIMD使得APD 104理想地适用于 数据并行任务(如在图形处理中常见的那些)的执行。

一些图形流水线操作(如像素处理)和其它并行计算操作可能要 求对输入数据元素的流或集合执行同一命令流或计算内核。同一计算 内核的相应实例化可以在着色器核心122中的多个计算单元上同时 地执行,以便并行地处理这类数据元素。如本文所提及,例如,计算 内核是含有在程序中陈述并且在APD计算单元上执行的指令的功 能。这个功能还被称为内核、着色器、着色器程序或程序。

在一个说明性实施方案中,每个计算单元(例如,SIMD处理核心) 可以执行特定工作项目的相应实例化来处理传入数据。工作项目是由 命令在装置上所调用的内核的并行执行的集合中的一个。工作项目可 以由一个或多个处理元件执行为在计算单元上执行的工作群组的一 部分。

工作项目通过其全局ID和局部ID来与所述集合内的其它执行区 别开。在一个实施例中,一起同时在SIMD上执行的工作群组中的工 作项目子集可以被称为波前136。波前的宽度是计算单元(例如,SIMD 处理核心)的硬件的特点。如本文所提及,工作群组是在单一计算单 元上执行的相关工作项目的集合。群组中的工作项目执行同一内核并 且共享本地存储器和工作群组屏障。

在示例性实施方案中,在同一SIMD处理核心上处理来自工作群 组的所有波前。一次一个地发出波前上的指令,并且在所有工作项目 遵循同一控制流时,每个工作项目执行同一程序。波前还可以被称为 弯曲、向量或线程。

执行掩码和工作项目预测用于使得发散的控制流能够在一个波 前内,其中每个单独的工作项目实际上可以采取通过内核的唯一的代 码路径。当工作项目的全集不可在波前开始时间使用时,可以处理部 分填充的波前。例如,着色器核心122可以同时执行预定数量的波前 136,每个波前136包括多个工作项目。

在系统100内,APD 104包括其自己的存储器,如图形存储器 130(但存储器130不限于仅供图形使用)。图形存储器130提供用于 在APD 104中进行计算期间使用的本地存储器。着色器核心122内 的单独计算单元(未图示)可以具有其自己的本地数据储存器(未图 示)。在一个实施方案中,APD 104包括存取本地图形存储器130以 及存取存储器106。在另一个实施方案中,APD 104可以包括存取动 态随机存取存储器(DRAM)或直接附接至APD 104并且与存储器106 分离的其它此类存储器(未图示)。

在所示实施例中,APD 104还包括一个或“n”数量个命令处理器 (CP)124。CP 124控制APD 104内的处理。CP 124还从存储器106 中的命令缓冲区125检索待执行的命令,并且对这些命令在APD 104 上的执行进行协调。

在一个实施例中,CPU 102将基于应用程序111的命令输入适当 的命令缓冲区125中。如本文所提及,应用程序是将在CPU和APD 内的计算单元上执行的程序部分的组合。

多个命令缓冲区125可以用被调度来在APD 104上执行的每个 进程来维护。

CP 124可以用硬件、固件或软件或其组合来实施。在一个实施 方案中,CP 124被实施为具有用于实施包括调度逻辑在内的逻辑的 微代码的精简指令集计算机(RISC)引擎。

APD 104还包括一个或“n”数量个分派控制器(DC)126。在本申 请中,术语“分派”是指由分派控制器执行的命令,所述分派控制器使 用上下文状态来为计算单元集合上的工作群组集合发起内核的执行 的开始。DC 126包括用以发起着色器核心122中的工作群组的逻辑。 在一些实施方案中,DC 126可以被实施为CP 124的一部分。

系统100还包括用于从运行列表150选择进程以在APD 104上 执行的硬件调度器(HWS)128。HWS 128可以使用循环法、优先级或 基于其它调度策略来从运行列表150选择进程。例如,可以动态地确 定优先级。HWS 128还可以包括用以管理运行列表150的功能性, 例如通过添加新的进程以及通过从运行列表150删除现有进程来管 理。HWS 128的运行列表管理逻辑有时被称为运行列表控制器 (RLC)。

在本发明的各种实施方案中,当HWS 128发起执行来自RLC 150 的进程时,CP 124开始从对应的命令缓冲区125检索并且执行命令。 在一些情况下,CP 124可以生成待在APD 104内部执行的一个或多 个命令,这些命令对应于从CPU 102接收的命令。在一个实施方案 中,CP 124与其它部件一起对APD 104上的命令进行区分优先次序 并且调度,其方式为改进或最大化对APD 104和/或系统100的资源 的利用率。

APD 104可以存取或可以包括中断生成器146。中断生成器146 可以由APD 104配置来在APD 104遇到如页面错误等中断事件时中 断操作系统108。例如,APD 104可以依赖于IOMMU 116内的中断 生成逻辑来产生以上所指出的页面错误中断。

APD 104还可以包括用于抢先取得当前正在着色器核心122内运 行的一个进程的抢先和上下文切换逻辑120。例如,上下文切换逻辑 120包括用以停止所述进程并且保存其当前状态(例如,着色器核心 122状态和CP 124状态)的功能性。

如本文所提及,术语“状态”可以包括初始状态、中间状态和/或 最终状态。初始状态是机器根据程序设计次序处理输入数据集以产生 数据输出集合的开始点。存在例如需要在几个点处被存储以使得处理 能够向前进的中间状态。这个中间状态有时被存储来允许当由某一其 它进程中断时在稍后时间处继续执行。还存在可以被记录为输出数据 集的一部分的最终状态。

抢先和上下文切换逻辑120还可以包括用以将另一个进程上下 文切换至APD 104中的逻辑。用以将另一个进程上下文切换成在APD  104上运行的功能性可以包括例如通过CP 124和DC 126来实例化所 述进程以在APD 104上运行,为这个进程恢复任何先前保存的状态, 并且开始其执行。

存储器106可以包括非永久性存储器,如DRAM(未图示)。存 储器106可以在执行应用程序或其它处理逻辑的若干部分期间存储 例如处理逻辑指令、常量值以及变量值。例如,在一个实施方案中, 用以在CPU 102上执行一个或多个操作的控制逻辑的若干部分可以 在由CPU 102执行操作的相应部分期间驻留在存储器106内。

在执行期间,相应的应用程序、操作系统功能、处理逻辑命令以 及系统软件可以驻留在存储器106中。对操作系统108很重要的控制 逻辑命令在执行期间通常将驻留在存储器106中。包括例如内核模式 驱动器110和软件调度器112在内的其它软件命令在系统100的执行 期间也可以驻留在存储器106中。

在这个实施例中,存储器106包括由CPU 102使用来将命令发 送到APD 104的命令缓冲区125。存储器106还包含进程列表和进程 信息(例如,活动列表152和进程控制块154)。这些列表以及信息由 在CPU 102上执行的调度软件使用来将调度信息传递至APD 104和/ 或相关调度硬件。存取存储器106可以由耦合到存储器106的存储器 控制器140管理。例如,来自CPU 102或来自其它装置的对从存储 器106读取或写入存储器106的请求由所述存储器控制器140管理。

转回参看系统100的其它方面,IOMMU 116是一个多上下文存 储器管理单元。

如本文所使用,上下文可以认为是内核在其中执行的环境和在其 中定义同步与存储器管理的领域。上下文包括装置集合、可由这些装 置存取的存储器、对应的存储器特性以及用来调度一个或多个内核的 执行或在存储器对象上的操作的一个或多个命令队列。

转回参看图1A中所示的实施例,IOMMU 116包括用以执行用 于包括APD 104在内的装置的存储器页面存取的虚拟至物理地址翻 译的逻辑。IOMMU 116还可以包括用以生成中断的逻辑,例如当由 如APD 104等装置的页面存取导致页面错误时生成中断。IOMMU  116还可以包括或能够存取TLB 118。作为实例,TLB 118可以在内 容可寻址存储器(CAM)中实施,以便应由APD 104对存储器106中 的数据所做出的请求而加速逻辑(即,虚拟)存储器地址至物理存储器 地址的翻译。

在所示实施例中,通信基础设施109视需要互连系统100的部件。 通信基础设施109可以包括(未图示)外围部件互连(PCI)总线、扩展的 PCI(PCI-E)总线、高级微控制器总线体系结构(AMBA)总线、高级图 形端口(AGP)或其它此类通信基础设施中的一个或多个。通信基础设 施109还可以包括以太网,或类似网络,或满足应用程序的数据传送 速率要求的任何适当物理通信基础设施。通信基础设施109包括用以 互连包括计算系统100的部件在内的部件的功能性。

在这个实施例中,操作系统108包括用以管理系统100的硬件部 件以及用以提供常见服务的功能性。在各种实施方案中,操作系统 108可以在CPU 102上执行,并且提供常见服务。这些常见服务可以 包括例如调度用于在CPU 102内部执行的应用程序、错误管理、中 断服务以及处理其它应用程序的输入和输出。

在一些实施方案中,基于由如中断控制器148的中断控制器生成 的中断,操作系统108调用适当的中断处理例程。例如,在检测到页 面错误中断之后,操作系统108可以即刻调用中断处理程序来起始将 相关页面加载到存储器106中,并且更新对应页面表。

操作系统108还可以包括用以通过确保以下操作来保护系统100 的功能性:存取硬件部件是通过操作系统管理的内核功能性来进行调 解。事实上,操作系统108确保了应用程序(如应用程序111)在用户 空间中在CPU 102上运行。操作系统108还确保了应用程序111调用 由操作系统提供的内核功能性,以便存取硬件和/或输入/输出功能性。

举例来说,应用程序111包括用以执行用户计算的各种程序或命 令,这些用户计算也在CPU 102上执行。CPU 102能够无缝地发送所 选定的命令以用于在APD 104上处理。

在一个实施例中,KMD 110实施应用程序设计接口(API),通过 所述应用程序设计接口,CPU 102或在CPU 102上执行的应用程序或 其它逻辑可以调用APD 104功能性。例如,KMD 110可以使来自CPU  102的命令排队到命令缓冲区125,APD 104随后将从命令缓冲区检 索这些命令。此外,KMD 110可以与SWS 112一起执行待在APD 104 上执行的进程的调度。例如,SWS 112可以包括用以维护待在APD 上执行的进程的已区分优先次序的列表的逻辑。

在本发明的其它实施方案中,在CPU 102上执行的应用程序可 以在对命令进行排队时完全绕过KMD 110。

在一些实施方案中,SWS 112维护待在APD 104上执行的进程 的在存储器106中的活动列表152。SWS 112还在活动列表152中选 择进程子集来由硬件中的HWS 128管理。关于在APD 104上运行每 个进程的信息通过进程控制块(PCB)154而从CPU 102传递至APD  104。

用于应用程序、操作系统以及系统软件的处理逻辑可以包括在如 C语言的程序设计语言中和/或如Verilog、RTL或网表的硬件描述语 言中指定的命令,以便使得能够最终通过掩模作品(maskwork)/光掩模 的产生而配置制造过程,从而生产体现本文所描述的本发明的方面的 硬件装置。

本领域技术人员在阅读本描述后将了解,计算系统100可以包括 比图1A中所示更多或更少的部件。例如,计算系统100可以包括一 个或多个输入接口、非易失性储存器、一个或多个输出接口、网络接 口以及一个或多个显示器或显示器接口。

图1B为示出图1A中所示的APD 104的更详细的图解的实施方 案。在图1B中,CP 124可以包括CP流水线124a、124b以及124c。 CP 124可以被配置来处理命令列表,这些命令列表被提供为来自图 1A中所示的命令缓冲区125的输入。在图1B的示例性操作中,CP 输入0(124a)负责将命令驱动到图形流水线162中。CP输入1和2 (124b和124c)将命令转发到计算流水线160。还提供了用于控制HWS  128的操作的控制器机构166。

在图1B中,图形流水线162可以包括块集合,本文称为有序流 水线164。作为一个实例,有序流水线164包括顶点群组翻译器(VGT) 164a、图元汇编器(PA)164b、扫描变换器(SC)164c以及着色器输出 后期渲染单元(SX/RB)176。有序流水线164内的每个块可以表示图 形流水线162内的不同图形处理级。有序流水线164可以是固定功能 硬件流水线。可以使用也将在本发明的精神和范围内的其它实施方 式。

尽管只有少量数据可以被提供为到图形流水线162的输入,但这 些数据将在被提供为从图形流水线162的输出时被放大。图形流水线 162还包括用于在从CP流水线124a接收的工作项目群组内的整个范 围中进行计数的DC 166。通过DC 166提交的计算工作与图形流水线 162是半同步的。

计算流水线160包括着色器DC 168和170。所述DC 168和170 中的每一个被配置来在从CP流水线124b和124c接收的工作群组内 的整个计算范围中进行计数。

在图1B中示出的DC 166、168以及170接收输入范围,将这些 范围分解成工作群组,然后将这些工作群组转发到着色器核心122。 由于图形流水线162通常是固定功能流水线,因而难以保存并恢复其 状态,并且因此,图形流水线162难以进行上下文切换。因此,在大 多数情况下,如本文所论述,上下文切换不涉及在图形进程之间进行 上下文切换。一个例外是对于在着色器核心122中的图形工作,它可 以进行上下文切换。在图形流水线162内部的工作处理已经完成之 后,通过后期渲染单元176处理所完成的工作,所述后期渲染单元进 行深度和色彩计算,并且然后将其最终结果写入存储器130。

着色器核心122可以由图形流水线162和计算流水线160共享。 着色器核心122可以是被配置来运行波前的一般处理器。在一个实施 例中,在计算流水线160内部的所有工作是在着色器核心122中进行 处理的。着色器核心122运行可编程的软件代码,并且包括各种形式 的数据,例如状态数据。

当所有工作项目都不能存取APD资源时,发生QoS破坏。本发 明的实施方案有助于向APD 104内的资源有效地且同时地启动两个 或更多个任务,从而使得所有工作项目都能够存取各种APD资源。 在一个实施方案中,APD输入方案通过管理APD的工作量来使得所 有工作项目都能够有权并行使用APD资源。当APD的工作量接近最 大水平时(例如,在达到最大I/O速率期间),这个APD输入方案会提 供帮助,因为原本未使用的处理资源可以在众多情景下被同时使用。 例如,能够使串行输入流抽象化为看起来像对APD的并行同时输入。

举例来说,每个CP 124都可以将一个或多个任务作为输入提交 给APD 104内的其它资源,其中每个任务都可以表示多个波前。在 提交第一任务作为输入之后,可以允许这个任务在一段时间上斜升, 从而利用完成相应任务所必需的所有APD资源。单独地,这个第一 任务可以达到或者可以不达到最大APD利用率阈值。然而,随着其 它任务进行排队并且等待在APD 104内进行处理,可以管理APD资 源的分配以确保所有任务可以同时使用APD 104,每个任务实现APD 的最大利用率的某个百分比。这种多个任务对APD 104的同时使用 以及它们的组合利用率百分比确保实现预定的最大APD利用率阈 值。

下文结合图2所示的代表性系统来描述组合式CPU/APD体系结 构系统的特性的发现。如下文将更详细地描述,代表性系统包括:两 个APU,这两个APU借助处理器间通信链路而彼此连接;第一附加 板,其连接至所述两个APU中的第一APU,所述第一附加板具有专 用APD和本地存储器;以及第二附加板,其连接至这两个APU中的 第二APU,所述第二附加板具有两个专用APD,这两个APD中的每 一个连接至其自己的本地存储器;并且,这两个APD通过共享PCIe 桥来连接至第二APU。这个示例性系统用来说明各种特征、特性和 能力,当软件(如但不限于应用软件)获知它们的存在、特性、互连和 /或属性时,所述各种特征、特性和能力可以由所述软件加以使用, 从而更为有效地利用平台的计算资源。如本领域技术人员将了解的, 具有不同配置和布置的替代实施方案也是意料之中的。

根据本发明,提供针对已建立的平台基础结构发现机制的若干个 延展情形(例如,针对ACPI的延展情形),其允许用灵活、可延展并 且一致的方式将组合式CPU/APD体系结构系统体系结构的特性并入 到可发现的平台特性中。除了ACPI之外或者替代ACPI,其它通信 协议也可以由其它实施方案来使用。本发明的各种实施方案引入相应 特征和改进内容,从而将CPU、APU和APD特性并入到一致的基础 结构中,用来支持软件。这个软件也可以称为操作系统平台/电源管 理软件(OSPM)。

图2是本文所公开的模型内的说明性异构型平台设计的方框图, 并且说明各种部件和/或子系统,其中它们的存在和/或属性的发现会 将所需的信息提供给系统和/或应用软件,从而使得可以执行任务的 有效调度。在下文的描述中,图2将用来帮助概括与各种部件相关联 的特性。出于这个原因,作为一个说明性实施例来提供带有两个APU 的平台。

本发明并不限于图2的说明性实施方案,并且应注意到,本发明 的实施方案包括样式类似的带有两个以上或带有一个APU插槽的较 大和较小平台设计。本文所描述的实施方案是出于说明性目的,并且 应了解,根据本发明的其它实施方案也是可能的。根据本发明的特定 平台设计的详细实施特性可以是不同的。

参看图2,平台部件分解为许多块,每个块都可以含有不同的特 征、特性、互连和/或属性。软件(更小程度上来说包括应用软件)列举 了这些特征、特性、互连和/或属性,并且将这些方面并入到代码操 作中。

根据本发明的系统平台200。系统平台200包括第一APU 202和 第二APU 204。APU 202和APU 204通过第一处理器间通信链路206 以通信方式连接。在一个实施方案中,第一处理器间通信链路206是 HyperTransport链路。APU 202、204各自包括带有多个核心的CPU、 带有多个SIMD核心的APD以及输入/输出存储器管理器单元。

说明性系统平台200进一步包括第一系统存储器208,第一系统 存储器208通过第一存储器总线210连接至第一APU 202。第一系统 存储器208包括相干可高速缓存部分209a和不相干不可高速缓存部 分209b。系统平台202进一步包括第一附加板218和第二附加板230。 第一附加板218通过第一PCIe总线250连接至第一APU 202。第二 附加板230通过第二PCIe总线252连接至第二APU。在各种替代实 施方案中,第一附加板218和第二附加板230中的一者或两者的一些 或所有物理部件和/或软件、固件或微代码设置在带有一个或多个 APU的共同衬底(例如,印刷电路板)上。

第一附加板218包括第一专用APD 220、通过存储器总线224连 接至第一专用APD 220的第一本地存储器222,以及第一固件存储器 226,第一固件存储器226中存储有固件,如VBIOS UEFI GOP(视频 基本输入输出系统、统一可延展固件接口、图形输出协议)。第一固 件存储器226实际上通常实施为非易失性存储器,但这种实施方式并 不是本发明的要求。第一专用APD 220包括一个或多个SIMD单元。 第一本地存储器222包括相干的第一部分223a和不相干的第二部分 223b。第一本地存储器222实际上通常体现为易失性存储器,但这种 实施方式并不是本发明的要求。

第二附加板230包括第二专用APD 232、通过存储器总线236连 接至第二APD 232的第二本地存储器、第三专用APD 238、通过存 储器总线242连接至第三专用APD 238的第三本地存储器240、通过 PCIe总线246连接至第二专用APD 232的PCIe桥244、通过PCIe 总线248进一步连接至第三专用APD 238的PCIe桥244。第二本地 存储器234包括相干的第一部分235a和不相干的第二部分235b。第 三本地存储器240包括相干的第一部分241a和不相干的第二部分 241b。第二本地存储器234和第三本地存储器240实际上通常实施为 易失性存储器,但这种实施方式并不是本发明的要求。第二附加板 230进一步包括第二固件存储器254,其中存储有固件,如VBIOS  UEFI GOP。

传统上,CPU功能性和资源是通过CPUID指令以及ACPI表和 方法来暴露(例如,对于能力和特征、功率和性能状态等),而对于系 统中的其它装置(例如,外围装置)来说,使用PCIe能力结构。

通过这些机制来描述的基本特点包括资源功能性和资源关联;前 者通常被描述为带有相同特征和特点的统一部件“池”(例如,CPU核 心),后者一般需要描述这些资源之间的拓扑和关系的层级表达。这 些表示中的每一个针对某些任务来说具有相应益处,因此可以保留在 本发明的实施方案的列举进程中。

下文将结合组合式CPU/APD计算系统体系结构来陈述针对列举 所暴露的各种设计原则和详细部件特性,以及用于暴露这些特性的方 法和机制。一些特性可以经由一个或多个执行的指令(例如,CPUID) 进行暴露,而一些特性可以经由信息结构(如表)进行暴露。在各种替 代实施方案中,具体特性可以通过CPUID、信息结构或者这两者进 行暴露。

组合式CPU/APD计算系统体系结构平台的基本检测可以通过执 行CPUID指令来完成。然而,应注意到,执行CPUID指令一般并不 会提供组合式CPU/APD计算系统部件的详细能力发现。恰恰相反, 此机制通常只提供关于系统本身是不是组合式CPU/APD计算系统的 是/否答案。因此,根据本发明的某些方面,组合式CPU/APD计算系 统体系结构详细特征一般经由信息结构(如改进的ACPI表)来提供, 所述信息结构详细指明组合式CPU/APD计算系统体系结构平台的相 关特征。

在一个实施方案中,包含具体的CPU,从而使得其可以执行改 进的CPUID指令,并且所述CPUID指令在执行时会暴露与组合式 CPU/APD体系结构系统有关的基本信息。在这个说明性实施方案中, CPUID Fn8000_001E EDX用于组合式CPU/APD体系结构系统的基 本信息暴露(参见下面的表1)。应用软件和其它软件可以使用位0来 识别其是否正在具组合式CPU/APD体系结构能力的平台上运行。在 具组合式CPU/APD体系结构能力的平台上运行意味着,所述平台具 有至少一个APU,所述APU含有组合式CPU/APD体系结构依从性 CPU和APD功能性,即,计算单元和SIMD。然后,软件可以使用 对改进的ACPI表的内容的发现和评估来检索可用功能性和拓扑的详 细信息。应注意到,本发明并不限于针对CPUID指令的此具体操作 代码,也不限于如表1所示的具体位或字段布置。

表1

根据本发明的实施方案,如图2所示的平台上的发现进程基于位 点来零散地按照层级顺序暴露与可用部件有关的信息。发现进程在概 念上类似于ACPI NUMA节点定义(ACPI4.0规范),但是加以了改进 而将具体的APD/SIMD特性和IOMMU功能性包括到节点特性中。

组合式CPU/APD体系结构系统平台的具体特征表现为含有依从 于CPU/APD体系结构的一个或多个处理单元(参见图3A和图3B), 其中至少一个是APU(即,含有CPU计算单元和APD-SIMD执行单 元两者)。每个处理单元大致上通过其物理表示(例如,“APU插槽”、 APD“适配器”/装置)来定义,并且具有可发现的内部子部件和特性, 如但不限于CPU计算单元和高速缓存(任选地,可以在组合式体系结 构依从性离散APD装置中不表达任何内容)、APD SIMD和高速缓存 (如果表达传统的CPU特性,则是任选的)、存储控制器和连接、 IOMMU(任选地,可以针对组合式体系结构依从性离散APD不表达 任何内容)以及IO连接接口(例如,PCIe、HyperTransport、DMI、内 部或其它接口)。

由于并非所有存储器资源(例如,APD本地存储器)必定都是相干 全局存储器的一部分,所以要小心来相应地表达这些特性。因此,不 是使用系统资源关联表(SRAT),而是提供改进的信息结构来容纳与 组合式CPU/APD系统体系结构相关的信息。更具体来说,引入根据 本发明的新基本结构(本文称为部件资源关联表(CRAT))和许多相关 子结构。应注意到,这是一个说明性实施方案,并且其它信息结构布 置也在本发明的范围内。

在所述示例性实施方案中,CRAT是可发现的组合式CPU/APD 体系结构平台特性的头部结构。软件从语法上分析所述表,从而找到 可发现的处理单元、特性和它们的关联,这样允许软件去识别部件位 点。随着一些物理部件到达或者离开系统(例如,CPU/APD和/或离散 APD的热插入),CRAT内容可以在运行时期间发生变化。表2识别 并描述CRAT的字段。

表2-CRAT标头结构

CRAT标头包括并领先于含有实际部件信息的子部件结构。下文 通过子部件表来描述子部件。

本发明的各种实施方案提供APU关联信息结构。此子部件描述 APU节点部件、可用I/O接口和它们的带宽,并且将此信息提供给软 件。可以针对同一个节点表达多个此类结构,从而充分地描述较复杂 的APU平台特性。表3识别并描述CRAT APU关联信息结构的字段。 应注意到,这是一个说明性实施方案,并且其它信息结构布置也在本 发明的范围内。

表3-CRAT APU关联信息结构

表4描述APU关联信息结构的旗标字段,并且提供关于参数的 进一步信息。应注意到,这是一个说明性实施方案,并且其它信息结 构布置也在本发明的范围内。

表4:CRAT APU关联结构的旗标字段

表5展示存储器部件关联结构,所述结构指示结构拓扑中存储器 节点的存在。同一个结构用于描述系统存储器和可见的装置本地存储 器资源。应注意到,这是一个说明性实施方案,并且其它信息结构布 置也在本发明的范围内。

表5:CRAT存储器部件关联结构

表6展示存储器关联结构的旗标字段,所述旗标字段提供与此节 点的参数相关的进一步信息。应注意到,这是一个说明性实施方案, 并且其它信息结构布置也在本发明的范围内。

表6:CRAT存储器关联部件结构的旗标字段

表7展示高速缓存关联信息结构,所述信息结构向操作系统提供 下述拓扑信息:高速缓存、高速缓存的相对级别(即,L1、L2或L3) 以及高速缓存所属的组合式体系结构邻近域之间的关联;以及与高速 缓存是否被启用、大小和线路相关的信息。高速缓存关联结构用于按 照系统性方式向软件表达“传统”CPU高速缓存拓扑和APD高速缓存 特性。应注意到,这是一个说明性实施方案,并且其它信息结构布置 也在本发明的范围内。

表7:CRAT高速缓存关联信息结构

对于表7的“高速缓存等待时间”字段来说,应注意到,各种替代 实施方案可以使用更多或更少的时间粒度和/或不同的取整策略。应 进一步注意到,替代实施方案可以包括与高速缓存替换策略相关的信 息,甚至鉴于卖方产品上存在的当前微体系结构差别来说,也是如此。

表8识别并描述存储在CRAT高速缓存关联信息结构的旗标字 段中的信息。应注意到,这是一个说明性实施方案,并且其它信息结 构布置也在本发明的范围内。

表8:CRAT高速缓存关联信息结构的旗标字段

现代处理器可以包括TLB。TLB是用于物理处理器的页面翻译 的高速缓存。表9所示的TLB关联结构向处理器的操作系统固定地 提供下述拓扑信息:TLB部件、TLB部件的相对级别(即,L1、L2 或L3)以及共享所述部件的同属处理器之间的关联;与TLB关联结构 是否被启用以及其是否含有数据或指令翻译相关的信息。TLB关联结 构是用于平台的静态资源分配结构列表的延展。在未来体系结构中对 页面级别支持做出改变将需要此表的延展。应注意到,此结构可以是 子结构阵列,各个子结构描述不同的页面大小。应注意到,这是一个 说明性实施方案,并且其它信息结构布置也在本发明的范围内。

表9:CRAT翻译旁视缓冲区关联结构

表10:CRAT TLB关联结构的旗标字段

本发明的各种实施方案包括FPU关联信息结构,所述结构向操 作系统提供下述拓扑信息:FPU与共享FPU的逻辑处理器(CPU’s)之 间的关联;以及大小。FPU关联结构是用于平台的静态资源分配结构 列表的延展。此信息可能对应用程序有用,所述应用程序使用AVX 指令来确立同属处理器之间的联系。表11中展示CRAT FPU关联信 息结构的细节。应注意到,这是一个说明性实施方案,并且其它信息 结构布置也在本发明的范围内。

表11:CRAT FPU关联信息结构

本发明的各种实施方案包括IO关联信息结构(参见表13和表 14)。CRAT IO关联信息结构向操作系统提供下述拓扑信息:可发现 的IO接口与共享所述IO接口的组合式CPU/APD体系结构节点之间 的关联;最大、最小带宽和等待时间表征;以及大小。IO关联结构 是用于平台的资源分配结构列表的延展。此信息可能对应用程序有 用,所述应用程序使用AVX指令来确立同属处理器之间的联系。应 注意到,这是一个说明性实施方案,并且其它信息结构布置也在本发 明的范围内。 表13:CRAT IO关联信息结构

表14:CRAT IO关联结构的旗标字段

本发明的各种实施方案包括部件位点距离信息表(“CDIT”)。此表 为组合式CPU/APD体系结构平台提供相应机制,用来指示所有组合 式CPU/APD体系结构系统位点之间的相对距离(就事务等待时间来 说),这些位点在本文中也称为组合式CPU/APD体系结构邻近域。这 些实施方案表示对ACPI 4.0规范中所定义的系统位点距离信息表 (SLIT)的改进之处。CDIT中的每个条目[i,j]的值(其中i表示矩阵的 行,而j表示矩阵的列)指示从部件位点/邻近域i到系统中的各个其 它部件位点j(包括其本身)的相对距离。

i,j行列值与CRAT表中所定义的联合邻近域相关。在这个说明 性实施方案中,条目值为1字节无符号整数。从部件位点i到部件位 点j的相对距离是矩阵中的第(i*N+J)个条目(索引值是2字节无符号 整数),其中N是组合式CPU/APD体系结构邻近域的数量。除了部 件位点到其自身的相对距离之外,每个相对距离在矩阵中都存储两 次。这提供相应的能力来描述部件位点之间在两个方向上的相对距离 不同的情景。如果一个部件位点无法从另一个部件位点到达,那么 255(0xFF)的值便会存储在那个表条目中。从部件位点到其自身的相 对距离被正规化为数值10,并且距离值0至9保留且没有意义。

表15:CDIT标头结构

本发明的各种实施方案包括组合式CPU/APD体系结构表发现装 置。当评估位于组合式CPU/APD体系结构装置ACPI节点处的 “CRAT”方法时,返回CRAT。当评估位于组合式CPU/APD体系结 构装置ACPI节点处的CDIT方法时,返回部件位点距离信息表 (CDIT)。组合式CPU/APD体系结构发现装置的存在允许将一致的通 知机制用于组合式CPU/APD体系结构部件的热插入和热拔除通知, 这又需要对表和方法进行重新评估。对于组合式CPU/APD体系结构 系统兼容平台来说,需要此逻辑ACPI装置。

图5是示出根据本发明的一个进程的流程图,所述进程用于发现 和报告组合式CPU/APD体系结构系统的特性和拓扑。所发现的特性 可以与在组合式CPU/APD体系结构系统的计算资源之间进行计算任 务的调度和分配有关。这种计算任务的调度和分配可以由操作系统、 应用软件或这两者进行处置。所述说明性进程包括发现各种CPU计 算核心特性中的一个或多个特性502,如核心的数量、高速缓存的数 量、高速缓存关联、层级和等待时间、TLB、FPU、性能状态、功率 状态等等。

图5的说明性进程进一步包括下述步骤:发现APD计算核心的 特性,包括SIMD大小、SIMD布置、本地数据储存器关联、工作队 列特性、IOMMU关联和硬件上下文存储器大小中的一个或多个504; 发现支持部件的特性,包括总线开关以及存储控制器通道和存储体中 的一个或多个506;发现系统存储器和APD本地存储器的特性,包 括(但不限于)相干和不相干的存取范围508;发现一个或多个数据路 径的特性,包括类型、宽度、速度、相干性和等待时间中的一个或多 个510;编码所发现的特性的至少一部分512;以及提供一个或多个 信息结构,并且将信息存储在所述一个或多个信息结构中的至少一个 结构中,所存储的信息表示所发现的特性的至少一部分514。

应注意到,本发明并不限于各种特性被发现的任何具体顺序。还 应注意到,本发明并不限于所发现的特性被存储、编码、报告或按照 其它方式传递、传输或供任何硬件、固件、操作系统或应用软件使用、 处理或检查的任何具体顺序。另外应注意到,本发明并不限于存储根 据本发明的一个或多个信息结构的存储器的任何具体存储器地址范 围和物理类型。

本发明并不限于特性发现的任何具体方式或方法。举例来说但并 非限制性的,一些特性可以通过由多个计算资源中的至少一个计算资 源执行一个或多个指令来暴露或发现,此类指令执行会在一个或多个 寄存器中或一个或多个存储器位置中提供信息。另外应注意到,本发 明并不受限于操作系统或应用软件使用哪些具体特性来在组合式 CPU/APD体系结构系统的计算资源之间调度或分配计算任务。

图6是根据本发明的操作组合式CPU/APD体系结构系统的说明 性方法的流程图。这种说明性方法包括下述步骤:发现与组合式 CPU/APD体系结构系统中的计算任务的调度和分配有关的一个或多 个特性602;提供一个或多个信息结构,并且将信息存储在所述一个 或多个信息结构中的至少一个结构中,所存储的信息表示所发现的特 性的至少一部分604;确定一个或多个硬件资源是否已经添加至组合 式CPU/APD体系结构系统,或者是否已经从组合式CPU/APD体系 结构系统中移除606;以及在确定一个或多个硬件资源已经添加至组 合式CPU/APD体系结构系统或者已经从组合式CPU/APD体系结构 系统中移除之后,发现与组合式CPU/APD系统中的计算任务的调度 和分配有关的至少一个特性608。

如果在计算任务的调度和/或分配过程中,特性信息由组合式 CPU/APD体系结构系统的一个或多个计算资源加以使用,那么这个 特性便与计算任务的调度和分配有关。结合这个对图6中的说明性实 施方案的描述,硬件资源可以提供下述资源:(i)至少一个计算资源, 所述计算资源可以由操作系统软件、应用软件或这两者的调度和分配 逻辑指派来执行一个或多个计算任务;或者(ii)存储器,所述存储器 可以由操作系统软件、应用软件或这两者的调度和分配逻辑指派给一 个或多个计算任务。

应注意到,硬件资源的添加可以作为将板或卡“热插入”到系统中 的结果而发生。或者,硬件资源可以实际存在于系统中,但是只有在 通过固件或软件的动作来添加硬件资源而使其对操作系统软件、应用 软件或这两者的调度和分配逻辑为可用或可见之后,硬件资源才可以 被指派计算任务。在此情况下,“添加”可以称为启用。类似地,可以 通过实际移除硬件资源或者通过停用硬件资源或使其对操作系统软 件、应用软件或这两者的调度和分配逻辑为不可见来将硬件资源从系 统中移除。在此情况下,“移除”可以称为停用。应注意到,本发明并 不限于启用和停用硬件资源的任何具体方式或方法。此类硬件资源可 以被启用来实现具体的性能水平,也可以被停用来减少功率消耗。或 者,因为硬件资源已经被保留用于另一个目的,所以可以停用那个硬 件资源,也就是,使那个硬件资源无法从调度和分配逻辑接收任务。

在本发明的一个说明性实施方案中,一种系统包括(但不限于): 第一计算机存储器,其具有预定物理存储大小和逻辑布置;第一CPU, 其连接至第一计算机存储器,所述第一CPU具有预定数量的可发现 特性;第一APD,其连接至第一计算机存储器,所述第一APD具有 预定数量的可发现特性;以及如下构件,其用于确定第一CPU的可 发现特性的至少一部分和第一APD的可发现特性的至少一部分,编 码所发现的特性,并且将所编码的特性存储在存储器表中。应注意到, 这个用于确定的构件包括(但不限于)第一CPU所执行的软件、第一 APD所执行的软件或第一CPU和第一APD都执行的软件。

根据本发明的一种操作组合式CPU/APD体系结构系统的说明性 方法包括下述步骤:发现一个或多个CPU计算核心的特性;发现一 个或多个APD计算核心的特性;发现一个或多个支持部件的特性; 发现系统存储器的特性;如果存在APD本地存储器,那么发现APD 本地存储器的特性;发现数据路径的特性,包括类型、宽度、速度、 相干性和等待时间中的一个或多个;编码所发现的特性的至少一部 分;以及提供一个或多个信息结构,并且将信息存储在所述一个或多 个信息结构中的至少一个结构中,所存储的信息表示所发现的特性的 至少一部分。通常,所发现的特性与向组合式CPU/APD体系结构系 统中的多个计算资源中的一个或多个调度计算任务有关。在一些实施 方案中,通过在多个计算资源中的至少一个上执行一个或多个指令来 发现所发现的特性的至少一部分,此类指令执行会在执行所述一个或 多个指令的计算资源的一个或多个寄存器中或者在连接至计算资源 的存储器的一个或多个存储器位置中提供信息。

在各种替代实施方案中,操作组合式CPU/APD体系结构系统的 方法包括在检测到添加或移除至少一个硬件资源之后,重复所述发现 操作中的一个或多个。以此方式,关于计算任务调度和分配的信息便 可以被动态更新,从而及时反映具体某个点上可以使用的硬件资源。

根据本发明的另一种操作组合式CPU/APD体系结构系统的说明 性方法包括下述步骤:通过组合式CPU/APD体系结构系统的操作来 发现与组合式CPU/APD体系结构系统中的计算任务的调度和分配有 关的特性;通过组合式CPU/APD体系结构系统的操作来提供一个或 多个信息结构,并且将信息存储在所述一个或多个信息结构中的至少 一个结构中,所存储的信息表示所发现的特性的至少一部分;通过组 合式CPU/APD体系结构系统的操作来确定一个或多个硬件资源是否 已经添加至组合式CPU/APD体系结构系统或者是否已经从组合式 CPU/APD体系结构系统中移除;以及在确定一个或多个硬件资源已 经添加至组合式CPU/APD体系结构系统或者已经从组合式 CPU/APD体系结构系统中移除之后,通过组合式CPU/APD体系结 构系统的操作来发现与组合式CPU/APD系统中的计算任务的调度和 分配有关的至少一个特性。

应注意到,本发明并不限于x86 CPU核心与APD的组合,而是 适用于与APD组合的各种CPU或指令集体系结构。

结论

本文所示出和描述的示例性方法和设备至少可以在计算装置(包 括但不限于笔记本计算机、桌上型计算机、服务器计算机、手持式计 算机、移动计算机和平板计算机、机顶盒、媒体服务器、电视机和类 似装置)、图形处理和异构型计算资源的统一编程环境等领域中找到 应用。

应了解,本发明并不限于上文所述的说明性实施方案,而是涵盖 属于所附权利要求和其等效物的范围内的任何和所有实施方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号