CN103262035B - 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 - Google Patents

组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 Download PDF

Info

Publication number
CN103262035B
CN103262035B CN201180060177.5A CN201180060177A CN103262035B CN 103262035 B CN103262035 B CN 103262035B CN 201180060177 A CN201180060177 A CN 201180060177A CN 103262035 B CN103262035 B CN 103262035B
Authority
CN
China
Prior art keywords
characteristic
apd
processing equipment
cpu
memory
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
Application number
CN201180060177.5A
Other languages
English (en)
Other versions
CN103262035A (zh
Inventor
保罗·布林勒
伦德特·万多
杰弗里·程
埃琳娜·特里
托马斯·沃勒
艾尔沙德·拉赫曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN103262035A publication Critical patent/CN103262035A/zh
Application granted granted Critical
Publication of CN103262035B publication Critical patent/CN103262035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • EFIXED CONSTRUCTIONS
    • E21EARTH OR ROCK DRILLING; MINING
    • E21BEARTH OR ROCK DRILLING; OBTAINING OIL, GAS, WATER, SOLUBLE OR MELTABLE MATERIALS OR A SLURRY OF MINERALS FROM WELLS
    • E21B4/00Drives for drilling, used in the borehole
    • E21B4/06Down-hole impacting means, e.g. hammers
    • E21B4/14Fluid operated hammers

Landscapes

  • Engineering & Computer Science (AREA)
  • Geology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mining & Mineral Resources (AREA)
  • Physics & Mathematics (AREA)
  • General Life Sciences & Earth Sciences (AREA)
  • Fluid Mechanics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Mechanical Engineering (AREA)
  • Geochemistry & Mineralogy (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Earth Drilling (AREA)
  • Multi Processors (AREA)

Abstract

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

Description

组合式CPU/GPU体系结构系统中的装置发现和拓扑报告
背景
发明领域
本发明大体上是针对计算机系统。更具体来说,本发明是针对计算机系统拓扑。
背景技术
对使用图形处理单元(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以提供统一的程序设计和执行环境。这个环境使得APD104能够像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可以生成待在APD104内部执行的一个或多个命令,这些命令对应于从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。APU202和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连接至第一专用APD220的第一本地存储器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或指令集体系结构。
结论
本文所示出和描述的示例性方法和设备至少可以在计算装置(包括但不限于笔记本计算机、桌上型计算机、服务器计算机、手持式计算机、移动计算机和平板计算机、机顶盒、媒体服务器、电视机和类似装置)、图形处理和异构型计算资源的统一编程环境等领域中找到应用。
应了解,本发明并不限于上文所述的说明性实施方案,而是涵盖属于所附权利要求和其等效物的范围内的任何和所有实施方案。

Claims (22)

1.一种组合式中央处理器(CPU)和加速处理设备(APD)体系结构系统,其包括:
计算机存储器,其具有物理存储大小和逻辑布置;
部件资源关联表,其设置在所述计算机存储器中;
中央处理器(CPU),其连接至所述计算机存储器;所述中央处理器具有许多可发现的特性,所述中央处理器被配置来响应于执行一个或多个指令而提供所述中央处理器、加速处理设备和所述存储器的可发现的特性的至少一部分;
加速处理设备(APD),其连接至所述计算机存储器,所述加速处理设备具有许多可发现的特性,并且连接至加速处理设备本地存储器;以及
存储器管理单元,其连接至所述计算机存储器,并且由所述中央处理器和所述加速处理设备共享;
其中所述系统被配置来执行操作系统;
其中所述可发现的特性与向所述中央处理器和所述加速处理设备进行计算任务的调度和分配有关,并且暴露所述计算机存储器或所述加速处理设备本地存储器的相干和不相干存取范围,所述操作系统按照不同方式来管理所述相干和不相干存取范围;
其中,所述部件资源关联表被配置为存储所述中央处理器的可发现的特性和存储所述加速处理设备的可发现的特性;
其中,所述部件资源关联表包括用于可发现的组合式中央处理器/加速处理设备体系结构平台特性的头部结构。
2.如权利要求1所述的系统,其进一步包括用于编码所述发现的特性并且将所述编码的特性存储在存储器表中的逻辑。
3.如权利要求2所述的系统,其中所述存储器表驻留在所述计算机存储器中。
4.如权利要求2所述的系统,其进一步包括加速处理设备本地存储器,并且其中所述加速处理设备本地存储器的特性被存储在所述存储器表中。
5.如权利要求1所述的系统,其中所述可发现的特性进一步包括系统拓扑信息。
6.一种操作组合式中央处理器(CPU)和加速处理设备(APD)体系结构系统的方法,其包括:
发现系统拓扑信息;
发现一个或多个中央处理器计算核心的特性;
发现一个或多个加速处理设备计算核心的特性;
发现一个或多个支持部件的特性;
发现系统存储器的特性;
如果存在加速处理设备本地存储器,那么发现所述加速处理设备本地存储器的特性;
发现数据路径的特性,包括类型、宽度、速度、相干性和等待时间中的一个或多个;以及
将所述数据路径的特性、所述加速处理设备本地存储器的特性、所述系统存储器的特性、所述一个或多个支持部件的特性、所述一个或多个加速处理设备计算核心的特性和所述一个或多个中央处理器计算核心的特性中的至少一个存储在一个或多个信息结构中的至少一个中,所述一个或多个信息结构包括部件资源关联表,以及所存储的信息表示所发现的特性的至少一部分,
其中所述部件资源关联表包括用于可发现的组合式中央处理器/加速处理设备体系结构平台特性的头部结构。
7.如权利要求6所述的方法,其中所述发现的特性与向所述组合式中央处理器/加速处理设备体系结构系统中的多个计算资源中的一个或多个调度计算任务有关。
8.如权利要求6所述的方法,其进一步包括由多个计算资源中的至少一个来执行一个或多个指令,此类指令执行在执行所述一个或多个指令的所述计算资源的一个或多个寄存器中或者在连接至所述计算资源的存储器的一个或多个存储器位置中提供信息。
9.如权利要求6所述的方法,其进一步包括在检测到至少一个硬件资源的添加或移除之后,重复所述发现操作中的一个或多个。
10.如权利要求6所述的方法,其进一步包括编码所述发现的特性的至少一部分。
11.一种操作组合式中央处理器(CPU)和加速处理设备(APD)体系结构系统的方法,其包括:
通过所述组合式中央处理器/加速处理设备体系结构系统的操作来发现与组合式中央处理器/加速处理设备体系结构系统中的计算任务的调度和分配有关的特性;
将信息存储在一个或多个信息结构中的至少一个中,所述一个或多个信息结构包括部件资源关联表,以及所存储的信息表示所发现的特性的至少一部分;
通过所述组合式中央处理器/加速处理设备体系结构系统的操作来动态地确定一个或多个硬件资源是否已经添加至所述组合式中央处理器/加速处理设备体系结构系统或者是否已经从所述组合式中央处理器/加速处理设备体系结构系统中移除;
在确定一个或多个硬件资源已经添加至所述组合式中央处理器/加速处理设备体系结构系统或者已经从所述组合式中央处理器/加速处理设备体系结构系统中移除之后,通过所述组合式中央处理器/加速处理设备体系结构系统的操作来发现与所述组合式中央处理器/加速处理设备系统中的计算任务的调度和分配有关的至少一个特性;和
将所述计算任务的调度和分配有关的至少一个特性存储在所述部件资源关联表中,
其中所述部件资源关联表包括用于可发现的组合式中央处理器/加速处理设备体系结构平台特性的头部结构。
12.如权利要求11所述的方法,其中添加硬件资源包括将所述硬件资源热插入至所述组合式中央处理器/加速处理设备体系结构系统中。
13.如权利要求11所述的方法,其中添加硬件资源包括通过固件或软件的动作来启用所述硬件资源。
14.如权利要求11所述的方法,其中移除硬件资源包括用物理方式从所述组合式中央处理器/加速处理设备体系结构系统中移除所述硬件资源。
15.如权利要求11所述的方法,其中移除硬件资源包括通过固件或软件的动作来停用所述硬件资源。
16.如权利要求11所述的方法,其中所述特性包括组合式中央处理器/加速处理设备体系结构系统的部件的存在、所述部件中的一个或多个之间的互连以及所述部件的一个或多个属性。
17.如权利要求11所述的方法,其中所述特性包括以下各项中的一个或多个:核心的数量;高速缓存的数量;高速缓存关联、层级和等待时间;TLB;FPU;性能状态;以及功率状态。
18.如权利要求11所述的方法,其中所述特性包括以下各项中的一个或多个:SIMD大小;SIMD布置;本地数据储存器关联;工作队列特性;IOMMU关联;以及硬件上下文存储器大小。
19.如权利要求11所述的方法,其中所述特性包括以下各项中的一个或多个:总线开关、或存储控制器通道和存储体。
20.如权利要求11所述的方法,其中所述特性包括系统存储器和加速处理设备本地存储器的相干和不相干存取范围。
21.如权利要求11所述的方法,其中特性包括系统存储器和加速处理设备本地存储器的属性。
22.如权利要求11所述的方法,进一步包括:
发现系统拓扑信息。
CN201180060177.5A 2010-12-15 2011-12-15 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 Active CN103262035B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US42356510P 2010-12-15 2010-12-15
US42352510P 2010-12-15 2010-12-15
US61/423,525 2010-12-15
US61/423,565 2010-12-15
PCT/US2011/065136 WO2012083012A1 (en) 2010-12-15 2011-12-15 Device discovery and topology reporting in a combined cpu/gpu architecture system

Publications (2)

Publication Number Publication Date
CN103262035A CN103262035A (zh) 2013-08-21
CN103262035B true CN103262035B (zh) 2017-05-17

Family

ID=46232879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180060177.5A Active CN103262035B (zh) 2010-12-15 2011-12-15 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告

Country Status (4)

Country Link
US (1) US20120152576A1 (zh)
KR (1) KR101900436B1 (zh)
CN (1) CN103262035B (zh)
WO (1) WO2012083012A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101435772B1 (ko) * 2013-06-21 2014-08-29 서울대학교산학협력단 Gpu 가상화 시스템
CN105988874B (zh) 2015-02-10 2020-08-28 阿里巴巴集团控股有限公司 资源处理方法及装置
CN106844258B (zh) * 2015-12-03 2019-09-20 华为技术有限公司 热添加CPU使能x2APIC的方法和服务器系统
KR102029711B1 (ko) * 2018-05-30 2019-10-08 한국항공대학교산학협력단 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법
CN109062526B (zh) * 2018-07-26 2021-08-27 深圳控道智能科技有限公司 一种适用于uefi的显示配置方法和系统
CN109727376B (zh) * 2018-12-29 2022-03-04 北京沃东天骏信息技术有限公司 生成配置文件的方法、装置及售货设备
CN113722085B (zh) * 2020-05-26 2024-04-30 安图斯科技股份有限公司 图形资源的分配方法与分配系统
US20240028554A1 (en) * 2020-09-18 2024-01-25 Alibaba Group Holding Limited A configurable processing architecture

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1445668A (zh) * 2002-03-14 2003-10-01 联想(北京)有限公司 获取主板监控信息的方法及其装置
CN101911018A (zh) * 2008-01-11 2010-12-08 国际商业机器公司 计算机配置虚拟拓扑发现

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2787984A (en) * 1951-06-18 1957-04-09 Atlas Copco Ab Hammer piston for percussion apparatuses and percussion apparatus provided therewith
US5692202A (en) * 1995-12-29 1997-11-25 Intel Corporation System, apparatus, and method for managing power in a computer system
US6464023B2 (en) * 1999-01-27 2002-10-15 William N. Patterson Hydraulic in-the-hole percussion rock drill
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7337442B2 (en) 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements
US7444637B2 (en) 2003-02-18 2008-10-28 Microsoft Corporation Systems and methods for scheduling coprocessor resources in a computing system
US7155623B2 (en) * 2003-12-03 2006-12-26 International Business Machines Corporation Method and system for power management including local bounding of device group power consumption
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US7516274B2 (en) 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
CN101356511B (zh) * 2005-11-15 2012-01-11 太阳微系统有限公司 通过dram存取的功率转换
US7487371B2 (en) * 2005-12-16 2009-02-03 Nvidia Corporation Data path controller with integrated power management to manage power consumption of a computing device and its components
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
JP2009157802A (ja) * 2007-12-27 2009-07-16 Kyocera Corp 携帯端末および情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1445668A (zh) * 2002-03-14 2003-10-01 联想(北京)有限公司 获取主板监控信息的方法及其装置
CN101911018A (zh) * 2008-01-11 2010-12-08 国际商业机器公司 计算机配置虚拟拓扑发现

Also Published As

Publication number Publication date
CN103262035A (zh) 2013-08-21
KR20140001970A (ko) 2014-01-07
US20120152576A1 (en) 2012-06-21
KR101900436B1 (ko) 2018-09-20
WO2012083012A8 (en) 2012-10-04
WO2012083012A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
CN103262035B (zh) 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告
JP6006230B2 (ja) 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
CN103608776B (zh) 异构型处理设备上的动态工作划分
JP6381734B2 (ja) グラフィックス計算プロセススケジューリング
CN103262002B (zh) 优化系统调用请求通信
JP6086868B2 (ja) ユーザモードからのグラフィックス処理ディスパッチ
CN103262037A (zh) 图形处理计算资源的可访问性
CN103207774A (zh) 用于解决线程发散的方法和系统
CN104025185A (zh) 用于使用gpu控制器来预加载缓存的机制
US8959319B2 (en) Executing first instructions for smaller set of SIMD threads diverging upon conditional branch instruction
US20120194525A1 (en) Managed Task Scheduling on a Graphics Processing Device (APD)
CN103262039A (zh) 用于处理装置的同步操作的方法和系统
CN103582877B (zh) 计算机系统中断处理
US20120188259A1 (en) Mechanisms for Enabling Task Scheduling
US20130155074A1 (en) Syscall mechanism for processor to processor calls
CN116724292A (zh) 线程组的并行处理
US20130262814A1 (en) Mapping Memory Instructions into a Shared Memory Address Place
EP4250113A1 (en) Hardware support for low latency microservice deployments in switch
US20130155079A1 (en) Saving and Restoring Shader Context State

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
CI01 Publication of corrected invention patent application

Correction item: Priority

Correct: 61/423,565 2010.12.15 US

False: 61/423,525 2010.12.15 US

Number: 34

Volume: 29

CI02 Correction of invention patent application

Correction item: Priority

Correct: 61/423,565 2010.12.15 US

False: 61/423,525 2010.12.15 US

Number: 34

Page: The title page

Volume: 29

ERR Gazette correction

Free format text: CORRECT: PRIORITY DATA; FROM: 61/423,525 2010.12.15 US TO: 61/423,565 2010.12.15 US

RECT Rectification
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant