首页> 中国专利> 混合虚拟GPU协同调度

混合虚拟GPU协同调度

摘要

一种半导体封装装置的实施例可以包括一种用于管理一个或多个虚拟图形处理器单元并且基于通用处理器指令和图形处理器指令两者来协同调度一个或多个虚拟图形处理器单元的技术。其他实施例被公开并要求保护。

著录项

  • 公开/公告号CN112673348A

    专利类型发明专利

  • 公开/公告日2021-04-16

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201880094064.9

  • 发明设计人 赵嫣;王智;李伟男;

    申请日2018-09-19

  • 分类号G06F9/48(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人朱亦林

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:36:57

说明书

技术领域

实施例通常涉及图形系统。更具体地,实施例涉及混合虚拟图形处理器单元(vGPU)协同调度。

背景技术

服务器或云服务提供商(CSP)可以在同一硬件平台上托管来自不同用户的多个应用。一些服务器/CSP可以利用虚拟化技术来支持多个应用和/或不同用户。可以利用调度技术来管理对虚拟资源的访问。

附图说明

通过阅读以下说明书和所附权利要求,并且通过参考以下附图,实施例的各种优点对于本领域的技术人员而言将变得显而易见,其中:

图1是根据实施例的电子处理系统的示例的框图;

图2是根据实施例的半导体封装装置的示例的框图;

图3A至图3C是根据实施例的协同调度虚拟图形处理器的方法的示例的流程图;

图4是根据实施例的电子处理系统的另一示例的框图;

图5是根据实施例的电子处理系统的另一示例的框图;

图6是根据实施例的电子处理系统的另一示例的框图;

图7是根据实施例的电子处理系统的另一示例的框图;

图8A和图8B是根据实施例的虚拟机管理器装置的示例的框图;

图9是根据实施例的处理器的示例的框图;以及

图10是根据实施例的系统的示例的框图。

具体实施方式

现在转向图1,电子处理系统10的实施例可以包括通用处理器11、图形处理器14、通信地耦合到通用处理器11和图形处理器14的存储器12、以及通信地耦合到通用处理器11和图形处理器14以管理一个或多个vGPU并且基于通用处理器指令和图形处理器指令两者来协同调度一个或多个vGPU的逻辑13。在一些实施例中,逻辑13可以被进一步配置为将调度信息映射到图形存储器空间中,并且在通用处理器11与图形处理器14之间共享图形存储器空间中所映射的调度信息。例如,调度信息可以包括工作负载队列信息和调度解释信息(schedule account information)中的一个或多个。在一些实施例中,逻辑13可以被进一步配置为生成影子虚拟图形处理器工作负载,并且在影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩(stub)。例如,逻辑13可以被配置为当在工作负载中达到图形处理器调度桩时基于图形处理器指令来协调调度,并且基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新图形存储器空间中的调度解释信息。逻辑13也可以被配置为在图形处理器14变得空闲之后基于通用处理器指令来协同调度。在一些实施例中,逻辑13可以位于各种组件中,或者与各种组件位于一处,各种组件包括通用处理器11和/或图形处理器14(例如,在同一管芯上)。

以上通用处理器11、存储器12、逻辑13、图形处理器14、vGPU和其他系统组件中的每一个的实施例可以用硬件、软件或它们的任何合适的组合来实现。例如,硬件实现方式可以包括诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)之类的可配置逻辑,或使用诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术之类的电路技术的固定功能性逻辑硬件,或它们的任何组合。通用处理器11的实施例可以包括通用处理器、中央处理器单元(CPU)、控制器、微控制器等。图形处理器14的实施例可以包括专用处理器、图形处理器单元(GPU)、控制器、微控制器等。

可替代地或附加地,这些组件的全部或部分可以作为存储在机器或计算机可读存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等)中以由处理器或计算设备执行的逻辑指令集被实现在一个或多个模块中。例如,用于执行组件的操作的计算机程序代码可以用一种或多种操作系统(OS)适用/适当的编程语言的任何组合加以编写,这些编程语言包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等之类的面向对象编程语言以及诸如“C”编程语言或类似编程语言之类的常规过程编程语言。例如,存储器12、持久性存储介质或其他系统存储器可以存储指令集,该指令集在由通用处理器11和/或图形处理器14执行时,使得系统10实现系统10的一个或多个组件、特征或方面(例如,逻辑13、管理vGPU、基于通用处理器指令和图形处理器指令两者来协同调度vGPU等)。

现在转向图2,半导体封装装置20的实施例可以包括一个或多个衬底21和耦合到一个或多个衬底21的逻辑22,其中逻辑22至少部分地用可配置逻辑和固定功能性硬件逻辑中的一个或多个来实现。耦合到一个或多个衬底的逻辑22可以被配置为管理一个或多个vGPU,并且基于通用处理器指令和图形处理器指令两者来协同调度一个或多个vGPU。在一些实施例中,逻辑22可以被进一步配置为将调度信息映射到图形存储器空间中,并且在通用处理器与图形处理器之间共享图形存储器空间中所映射的调度信息。例如,调度信息可以包括工作负载队列信息和调度解释信息中的一个或多个。

在一些实施例中,逻辑22可以被进一步配置为生成影子虚拟图形处理器工作负载,并且在影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。例如,逻辑22可以被配置为当在工作负载中达到图形处理器调度桩时基于图形处理器指令来协调调度,并且基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新图形存储器空间中的调度解释信息。逻辑22也可以被配置为在图形处理器变得空闲之后基于通用处理器指令来协同调度。在一些实施例中,耦合到一个或多个衬底21的逻辑22可以包括被定位在一个或多个衬底21内的晶体管沟道区。

装置20的逻辑22和其他组件的实施例可以用硬件、软件或它们的任何组合来实现,至少包括部分硬件实现方式。例如,硬件实现方式可以包括诸如例如PLA、FPGA、CPLD之类的可配置逻辑,或使用电路技术(诸如例如ASIC、CMOS或TTL技术)的固定功能性逻辑硬件,或它们的任何组合。附加地,这些组件的部分可以作为存储在机器或计算机可读存储介质(例如,RAM、ROM、PROM、固件、闪存等)中以由处理器或计算设备执行的逻辑指令集被实现在一个或多个模块中。例如,用于执行组件的操作的计算机程序代码可以用一种或多种OS适用/适当的编程语言的任何组合加以编写,这些编程语言包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等之类的面向对象编程语言以及诸如“C”编程语言或类似编程语言之类的常规过程编程语言。

装置20可以实现方法30(图3A至图3C)的一个或多个方面或本文讨论的实施例中的任一个。在一些实施例中,所示的装置20可以包括一个或多个衬底21(例如,硅、蓝宝石、砷化镓)和耦合到(一个或多个)衬底21的逻辑22(例如,晶体管阵列和其他集成电路/IC组件)。逻辑22可以至少部分地在可配置逻辑或固定功能性逻辑硬件中实现。在一个示例中,逻辑22可以包括被定位(例如,嵌入)在(一个或多个)衬底21内的晶体管沟道区。因此,逻辑22与(一个或多个)衬底21之间的界面可能不是突变结。逻辑22也可以被认为包括在(一个或多个)衬底21的初始晶圆上生长的外延层。

现在转向图3A至图3C,对虚拟图形处理器进行协同调度的方法30的实施例可以包括:在框31处管理一个或多个虚拟图形处理器单元;以及在框32处基于通用处理器指令和图形处理器指令两者来协同调度一个或多个虚拟图形处理器单元。方法30的一些实施例可以进一步包括:在框33处将调度信息映射到图形存储器空间中;以及在框34处在通用处理器与图形处理器之间共享图形存储器空间中所映射的调度信息。例如,在框35处调度信息可以包括工作负载队列信息和调度解释信息中的一个或多个。方法30的一些实施例可以进一步包括:在框36处生成影子虚拟图形处理器工作负载;以及在框37处在影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。例如,方法30可以包括:在框38处当在工作负载中达到图形处理器调度桩时基于图形处理器指令来协同调度;以及在框39处基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新图形存储器空间中的调度解释信息。方法30也可以包括在框40处在图形处理器变得空闲之后基于通用处理器指令来协同调度。

可以在系统、装置、计算机、设备等(例如,诸如本文描述的那些)中实现方法30的实施例。更具体地,方法30的硬件实现方式可以包括诸如例如PLA、FPGA、CPLD之类的可配置逻辑,或使用电路技术(诸如例如ASIC、CMOS或TTL技术)的固定功能性逻辑硬件,或它们的任何组合。可替代地或附加地,方法30可以作为存储在机器或计算机可读存储介质(例如,RAM、ROM、PROM、固件、闪存等)中以由处理器或计算设备执行的逻辑指令集被实现在一个或多个模块中。例如,用于执行组件的操作的计算机程序代码可以用一种或多种OS适用/适当的编程语言的任何组合加以编写,这些编程语言包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等之类的面向对象编程语言以及诸如“C”编程语言或类似编程语言之类的常规过程编程语言。

例如,可以在如在下面结合示例20至25所描述的计算机可读介质上实现方法30。方法30的实施例或部分可以用在操作系统(OS)上运行的固件、应用(例如,通过应用编程接口(API))或驱动程序软件来实现。附加地,逻辑指令可以包括汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使电子电路和/或硬件固有的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器等等)个性化的状态信息。

一些实施例可以有利地提供基于完全GPU虚拟化中的CPU-GPU协同调度技术的混合vGPU调度技术。例如,云服务提供商(CSP)可能更喜欢改进GPU利用率以实现较大的可扩展性。一些CSP可以创建更多的vGPU,这涉及在一个物理硬件平台上运行更多的vGPU工作负载。CSP也可能更喜欢为所有租户维持令人满意的用户体验和质量。可以从vGPU中受益的技术的另一示例可以包括车载信息娱乐(IVI)技术。例如,ACRN项目(projectacrn.org)可以包括用于在片上系统(SoC)平台上运行的IVI应用的开源参考物联网(IoT)管理程序技术。ACRN项目可以包括完全GPU虚拟化。

对于一些GPU虚拟化技术,vGPU调度技术通常是基于软件调度或硬件调度的。对于基于软件(SW)的vGPU调度技术,调度算法在CPU上运行。当调度器达到调度点时,在CPU上运行的调度策略和算法将收集并更新将稍后在调度系统中使用的调度解释数据。然后调度器将从vGPU工作负载队列中挑选下一个工作负载。CPU必须在调度点处与GPU交互,例如管理GPU中断、将下一个工作负载提交到GPU中等。

对于基于硬件(HW)的vGPU调度技术,在HW内部实现调度策略和算法。用户可以仅在预置在固件内部的若干策略和算法当中选取调度策略和算法,并且用户仅能够调谐所选取的策略和算法的几个有限的调度选项。SW vGPU调度方案提供了灵活的可编程性。然而,SW调度方案的GPU利用率可能比HW调度方案差,因为当CPU正在处理GPU中断并计算调度统计时GPU可以保持空闲,这导致可扩展性和CPU使用峰值的下降。HW调度方案与SW调度方案相比提供了更好的GPU利用率,因为所有调度算法和策略都由HW来管理。然而,可编程性可能比SW调度方案差。

一些实施例可以有利地提供一种基于CPU-GPU协同调度技术的混合vGPU调度技术。在一些实施例中,可以将工作负载队列和/或调度解释数据映射到图形存储器空间中,使得可以在CPU与GPU之间共享工作负载/调度信息。例如,可以将用户的调度算法和策略实现为CPU指令和GPU指令两者。在影子vGPU工作负载的生成期间,例如,调解器(例如,其可能负责提交vGPU工作负载)可以在每个vGPU工作负载的端部处插入GPU调度桩。当GPU达到GPU流水线中的GPU调度点时,GPU命令实现的调度策略和算法可以由GPU执行。由GPU命令实现的调度策略和算法可以通过利用图形存储器访问的指令和GPU流水线的ALU指令来收集并更新图形存储器中的共享调度解释数据。

为了尽可能多地填充GPU流水线,可以通过GPU将下一个vGPU工作负载从图形存储器中的vGPU工作负载队列加载到HW执行队列中。当GPU调度点结束时,HW可以基于用户的调度策略和算法来立即执行下一个vGPU工作负载。如果存在任何传入工作负载,则调解器可以更新工作负载队列。在一些实施例中,只要在GPU流水线中存在活动的GPU调度点,GPU就可以自动地执行并调度传入工作负载。可以在GPU进入空闲之后在新提交的工作负载中使用CPU指令实现的调度策略和算法。例如,设备模型可以自身调度工作负载,因为在GPU流水线中没有活动的GPU调度点。

通过组合硬件调度方案和软件调度方案,混合vGPU调度方案的一些实施例可以提供灵活的可编程性和更好的GPU利用率(utilization)两者。例如,一些实施例可以使得用户能够开发它们自己的灵活的调度策略和算法以在其具体实际的生产环境中实现最好的可扩展性。与一些其他调度技术相比,混合vGPU调度技术的一些实施例可以履行来自CSP的重要要求,这可以受益于更好且更灵活的vGPU解决方案。

通过将调度策略和算法卸载到GPU并且减少或消除在处理vGPU工作负载调度点时的CPU使用峰值,混合vGPU调度技术的一些实施例可以有利地改进在基于具有低端CPU核心的SoC的IVI应用中的系统响应性。随着系统响应性和灵活的可编程性的改进,也可以减少达到行业汽车标准(例如,ISO26262)的认证的努力,因为CPU具有更多的时间来执行这些认证所需要的关键任务。

现在转向图4,电子处理系统42的实施例可以包括存储器43,该存储器43在物理上或逻辑上划分为通用存储器空间44、GPU存储器空间45和CPU存储器空间46。图4示出了在CPU存储器空间46与GPU存储器空间45之间共享(一个或多个)工作负载队列和调度解释数据的示例。为了提供CPU-GPU协同调度方案的该示例,可以实现vGPU调度算法和策略的两个版本,包括GPU版本和CPU版本。在一些实施例中,GPU和CPU两者都可以使用通用图形转换表(GGTT)来访问通用存储器空间44的部分。例如,可以将工作负载队列和调度解释数据映射到GGTT存储器空间中,使得可以在CPU与GPU之间共享调度解释数据和(一个或多个)工作负载队列。

可以将用户的相应调度算法和策略实现为CPU指令和GPU指令两者。由GPU命令实现的调度策略和算法可以收集并更新GGTT存储器空间中的共享调度解释数据。在一些实施例中,可以通过GPU加载寄存器自存储器(load register from memory,LRM)指令将下一个vGPU工作负载的执行列表(EXECLIST)的逻辑环形上下文区域(LRCA)加载到HW执行队列中。然后另一GPU加载寄存器立即存储器模式(LRI)指令可以写入EXECLIST控制寄存器以触发HW执行队列加载。因为此时禁用GPU抢占,所以不会抢占调度的执行。在调度结束之后,HW将自动地加载下一个vGPU工作负载。当GPU空闲时,可以在新提交的工作负载中利用CPU指令实现的调度策略和算法。

现在转向图5,电子处理系统50的实施例可以包括如图所示通信地耦合的一个或多个vGPU 51a至51n、调解器52、调度解释数据53、影子工作负载54、基于GPU命令的调度策略和算法的版本55以及GPU 56。可以在特许批处理缓冲器(privileged batch buffer)中实现vGPU调度的GPU版本55的实施例。GPU版本55可以包含由GPU ALU指令实现的调度算法。调解器52可以插入MI_BATCH_BUFFER_START命令以在每个vGPU影子工作负载中调用特许批处理缓冲器。

当在GPU 56上执行vGPU调度的GPU版本55时,GPU版本55可以通过GPU图形存储器访问命令将当前vGPU的解释数据保存到调度解释数据53,并且然后执行调度算法。例如,vGPU调度的GPU版本55可以利用若干GPU LRR命令将当前和先前的CTX_TIMESTAMP寄存器加载到通用寄存器(GPR)中,并且然后使用MI_MATH命令来计算工作负载的时间成本。当完成时,GPU版本55可以利用GPU保存寄存器到存储器(SRM)命令将所计算出的时间成本保存到共享调度解释数据53区域中。当GPU版本55的调度算法结束时,GPU版本55可以决定调度下一个vGPU,在此情况下可以执行vGPU上下文切换并且可以加载来自目标vGPU的下一个工作负载。

现在转向图6,电子处理系统60的实施例可以包括如图所示通信地耦合的一个或多个vGPU 61、影子工作负载64、vGPU调度的GPU版本65和GPU 66。图6示出了vGPU工作负载提交的示例。为了实现最大可扩展性并减少CPU与GPU 66之间的额外同步,GPU调度代码(例如,GPU版本65的部分)可能负责从GGTT存储器空间中的工作负载队列加载下一个vGPU工作负载。例如,GPU版本65可以使用LRM指令来将EXECLIST的LRCA加载到EXECLIST队列中并且使用LRI指令来写入EXECLIST控制寄存器的ELSP_LOAD位,这会触发硬件来更新内部EXECLIST队列。

当GPU正在逐个地加载工作负载时,调解器(未示出)可以更新工作负载队列。为了防止工作负载队列从GPU读取并从调解器写入的任何竞争条件,一些实施例可以利用GPU信号量(semaphore)67。为了将新工作负载附加到工作负载队列中,调解器可以保持信号量67。为了读取工作负载队列,GPU 66可以等待信号量67。

现在转向图7,电子处理系统70的实施例可以包括如图所示通信地耦合的一个或多个vGPU 71、调解器72(例如,在CPU域中)、影子vGPU工作负载74和基于GPU命令的调度策略75(例如,在GPU域中)、基于CPU命令的调度策略和算法的版本78以及GPU 76。图7示出了由调解器进行的vGPU调度的示例。为了将新vGPU工作负载附加到工作负载队列中,调解器72可以获取GPU信号量77,并且然后检查在GPU流水线中是否存在活动的调度点。如果GPU76是活动的,则调解器72可以仅将新vGPU工作负载附加在工作负载队列的端部处并释放信号量77。如果GPU 76是空闲的,则调解器72可以执行调度算法和策略的CPU版本78,并且然后将工作负载加载到HW执行队列中。

图8A示出了可以实现方法30(图3A至图3C)的一个或多个方面和/或结合图4至图7讨论的各种处理流程的虚拟机管理器装置132(132a-132b)。可以包括逻辑指令、可配置逻辑、固定功能性硬件逻辑的虚拟机管理器装置132可以容易地取代已经讨论的系统10(图1)、系统42(图4)、系统50(图5)、系统60(图6)和/或系统70(图7)的全部或部分。vGPU管理器132a可以包括用于管理一个或多个vGPU的技术。vGPU协同调度器132b可以包括用于基于通用处理器指令和图形处理器指令两者来协同调度一个或多个vGPU的技术。在一些实施例中,vGPU管理器132a可以被进一步配置为将调度信息映射到图形存储器空间中,并且在通用处理器与图形处理器之间共享图形存储器空间中所映射的调度信息。例如,调度信息可以包括工作负载队列信息和调度解释信息中的一个或多个。在一些实施例中,vGPU协同调度器132b可以被进一步配置为生成影子虚拟图形处理器工作负载,并且在影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。例如,vGPU协同调度器132b可以被配置为当在工作负载中达到图形处理器调度桩时基于图形处理器指令来协同调度,并且基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新图形存储器空间中的调度解释信息。vGPU协同调度器132b也可以被配置为在图形处理器变得空闲之后基于通用处理器指令来协同调度。

现在转向图8B,示出了虚拟机管理器装置134(134a、134b),其中逻辑134b(例如,晶体管阵列和其他集成电路/IC组件)耦合到衬底134a(例如,硅、蓝宝石、砷化镓)。逻辑134b通常可以实现方法30(图3A至图3C)的一个或多个方面和/或结合图4至图7讨论的各种处理流程。因此,逻辑134b可以管理一个或多个vGPU,并且基于通用处理器指令和图形处理器指令两者来协同调度一个或多个vGPU。在一些实施例中,逻辑134b可以被进一步配置为将调度信息映射到图形存储器空间中,并且在通用处理器与图形处理器之间共享图形存储器空间中所映射的调度信息。例如,调度信息可以包括工作负载队列信息和调度解释信息中的一个或多个。在一些实施例中,逻辑134b可以被进一步配置为生成影子虚拟图形处理器工作负载,并且在影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。例如,逻辑134b可以被配置为当在工作负载中达到图形处理器调度桩时基于图形处理器指令来协同调度,并且基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新图形存储器空间中的调度解释信息。逻辑134b也可以被配置为在图形处理器变得空闲之后基于通用处理器指令来协同调度。在一个示例中,装置134是半导体管芯、芯片和/或封装。

图9示出了根据一个实施例的处理器核心200。处理器核心200可以是用于任何类型的处理器(例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器或用于执行代码的其他设备)的核心。尽管在图9中仅示出了一个处理器核心200,但是处理元件可以可替代地包括一个以上的图9中示出的处理器核心200。处理器核心200可以是单线程核心,或者对于至少一个实施例,处理器核心200可以是多线程的,因为它可以每个核心包括一个以上的硬件线程上下文(或“逻辑处理器”)。

图9还示出了耦合到处理器核心200的存储器270。存储器270可以是如本领域技术人员已知或以其他方式可用的多种存储器(包括存储器层级的各个层)中的任一种。存储器270可以包括一个或多个代码213指令以由处理器核心200来执行,其中代码213可以实现已经讨论的方法30(图3A至图3C)的一个或多个方面和/或结合图4至图7讨论的各种处理流程。处理器核心200遵循由代码213指示的指令的程序序列。每个指令可以进入前端部分210并由一个或多个解码器220处理。解码器220可以随着其输出而生成微操作,例如预定格式的固定宽度微操作,或可以生成反映原始代码指令的其他指令、微指令或控制信号。所示前端部分210还包括寄存器重命名逻辑225和调度逻辑230,它们通常分配资源并且将与转换指令相对应的操作进行排队以供执行。

处理器核心200被示出为包括具有一组执行单元255-1至255-N的执行逻辑250。一些实施例可以包括专用于具体功能或功能集的多个执行单元。其他实施例可以仅包括一个执行单元或可以执行特定功能的一个执行单元。所示的执行逻辑250执行由代码指令指定的操作。

在完成执行由代码指令指定的操作之后,后端逻辑260使代码213的指令引退。在一个实施例中,处理器核心200允许无序执行,但要求指令的顺序引退。引退逻辑265可以采取如本领域的技术人员已知的多种形式(例如,重新排序缓冲器等)。以这种方式,处理器核心200在代码213的执行期间至少在由解码器生成的输出、由寄存器重命名逻辑225利用的硬件寄存器和表格、以及由执行逻辑250修改的任何寄存器(未示出)方面被转换。

尽管图9中未示出,但是处理元件可以包括与处理器核心200一起在芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑以及处理器核心200。处理元件可以包括I/O控制逻辑,和/或可以包括与存储器控制逻辑集成在一起的I/O控制逻辑。处理元件还可以包括一个或多个缓存。

现参考图10,示出了根据实施例的系统1000实施例的框图。图10示出了多处理器系统1000,该多处理器系统1000包括第一处理元件1070和第二处理元件1080。尽管示出了两个处理元件1070和1080,但是应当理解,系统1000的实施例还可以仅包括一个这种处理元件。

系统1000被示出为点对点互连系统,其中第一处理元件1070和第二处理元件1080经由点对点互连件1050进行耦合。应当理解,图10所示的任何或所有的互连件可以实现为多分支总线,而非点对点互连件。

如图10所示,处理元件1070和1080中的每一者可以为多核心处理器,包括第一和第二处理器核心(即,处理器核心1074a和1074b以及处理器核心1084a和1084b)。此类核心1074a、1074b、1084a、1084b可以被配置为以类似于上文结合图9所讨论的方式来执行指令代码。

每个处理元件1070、1080可以包括至少一个共享缓存1896a、1896b(例如,静态随机存取存储器/SRAM)。共享缓存1896a、1896b可以分别存储由处理器的一个或多个组件(例如,核心1074a、1074b和1084a、1084b)利用的数据(例如,对象、指令)。例如,共享缓存1896a、1896b可以对存储于存储器1032、1034中的数据进行本地缓存以供处理器的组件进行较快访问。在一个或多个实施例中,共享缓存1896a、1896b可以包括一个或多个中级缓存,例如,级别2(L2)、级别3(L3)、级别4(L4)或其他级别的缓存、末级缓存(LLC)、和/或其组合。

虽然被示出有仅两个处理元件1070、1080,但是应当理解,实施例的范围不限于此。在其他实施例中,在给定处理器中可以存在一个或多个附加处理元件。或者,处理元件1070、1080中的一个或多个可以是除处理器以外的元件,例如加速器或现场可编程门阵列。例如,(一个或多个)附加处理元件可以包括与第一处理器1070相同的(一个或多个)附加处理器、与第一处理器1070异构或不对称的(一个或多个)附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理元件。在包括架构、微架构、热、功耗特性等的度量谱方面,在处理元件1070、1080之间可能存在各种差异。这些差异实际上可能将自身表现为处理元件1070、1080之间的不对称性和异构性。对于至少一个实施例,各种处理元件1070、1080可以驻留在同一管芯封装中。

第一处理元件1070还可以包括存储器控制器逻辑(MC)1072以及点对点(P-P)接口1076和1078。类似地,第二处理元件1080可以包括MC 1082以及P-P接口1086和1088。如图10中所示,MC 1072和1082将处理器耦合到相应的存储器,即存储器1032和存储器1034,这些存储器可以是本地附接到相应处理器的主存储器的部分。虽然MC 1072和1082被示出为集成到处理元件1070、1080中,但是对于替代实施例,MC逻辑可以是在处理元件1070、1080外部而不是集成在其中的分立逻辑。

第一处理元件1070和第二处理元件1080分别可以经由P-P互连件1076、1086耦合到I/O子系统1090。如图10中所示,I/O子系统1090包括TEE 1097(例如,安全控制器)以及P-P接口1094和1098。此外,I/O子系统1090包括接口1092以将I/O子系统1090与高性能图形引擎1038耦合。在一个实施例中,总线1049可以用来将图形引擎1038耦合到I/O子系统1090。或者,点对点互连件可以耦合这些组件。

继而,I/O子系统1090可以经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(PCI)总线,或诸如PCI高速总线(Express bus)或另一第三代I/O互连总线之类的总线,但是实施例的范围不限于此。

如图10中所示,各种I/O设备1014(例如,相机、传感器)以及总线桥1018可以耦合到第一总线1016,该总线桥1018可以将第一总线1016耦合到第二总线1020。在一个实施例中,第二总线1020可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1020,这些设备包括例如键盘/鼠标1012、网络控制器/(一个或多个)通信设备1026(其可以继而与计算机网络进行通信)以及可以包括代码1030的数据存储单元1019,例如磁盘驱动器或其他大容量存储设备。代码1030可以包括用于执行上述方法中的一种或多种的实施例的指令。因此,所示的代码1030可以实现已经讨论的方法30(图3A至图3C)的一个或多个方面和/或结合图4至图7讨论的各种处理流程,并且可以类似于已经讨论的代码213(图9)。此外,音频I/O 1024可以耦合到第二总线1020。

应当注意,设想了其他实施例。例如,代替图10的点对点架构,系统可以实现多分支总线或另一这种通信拓扑。

示例1可以包括一种电子处理系统,包括:通用处理器;图形处理器;存储器,所述存储器通信地耦合到所述通用处理器和所述图形处理器;以及逻辑,所述逻辑通信地耦合到所述通用处理器和所述图形处理器以用于:管理一个或多个虚拟图形处理器单元;以及基于通用处理器指令和图形处理器指令两者来协同调度所述一个或多个虚拟图形处理器单元。

示例2可以包括根据示例1所述的系统,其中,所述逻辑进一步用于:将调度信息映射到图形存储器空间中;以及在所述通用处理器与所述图形处理器之间共享所述图形存储器空间中所映射的调度信息。

示例3可以包括根据示例2所述的系统,其中,所述调度信息包括工作负载队列信息和调度解释信息中的一个或多个。

示例4可以包括根据示例2至3中任一项所述的系统,其中,所述逻辑进一步用于:生成影子虚拟图形处理器工作负载;以及在所述影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。

示例5可以包括根据示例4所述的系统,其中,所述逻辑进一步用于:当在所述工作负载中达到所述图形处理器调度桩时基于图形处理器指令来协同调度;以及基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新所述图形存储器空间中的调度解释信息。

示例6可以包括根据示例5所述的系统,其中,所述逻辑进一步用于:在所述图形处理器变得空闲之后基于通用处理器指令来协同调度。

示例7可以包括一种半导体封装装置,包括:一个或多个衬底;以及耦合到所述一个或多个衬底的逻辑,其中,所述逻辑至少部分地用可配置逻辑和固定功能性硬件逻辑中的一个或多个来实现,耦合到所述一个或多个衬底的所述逻辑用于:管理一个或多个虚拟图形处理器单元;以及基于通用处理器指令和图形处理器指令两者来协同调度所述一个或多个虚拟图形处理器单元。

示例8可以包括根据示例7所述的装置,其中,所述逻辑进一步用于:将调度信息映射到图形存储器空间中;以及在通用处理器与图形处理器之间共享所述图形存储器空间中所映射的调度信息。

示例9可以包括根据示例8所述的装置,其中,所述调度信息包括工作负载队列信息和调度解释信息中的一个或多个。

示例10可以包括根据示例8至9中任一项所述的装置,其中,所述逻辑进一步用于:生成影子虚拟图形处理器工作负载;以及在所述影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。

示例11可以包括根据示例10所述的装置,其中,所述逻辑进一步用于:当在所述工作负载中达到所述图形处理器调度桩时基于图形处理器指令来协同调度;以及基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新所述图形存储器空间中的调度解释信息。

示例12可以包括根据示例11所述的装置,其中,所述逻辑进一步用于:在所述图形处理器变得空闲之后基于通用处理器指令来协同调度。

示例13可以包括根据示例7至12中任一项所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑包括被定位在所述一个或多个衬底内的晶体管沟道区。

示例14可以包括一种协同调度虚拟图形处理器的方法,包括:管理一个或多个虚拟图形处理器单元;以及基于通用处理器指令和图形处理器指令两者来协同调度所述一个或多个虚拟图形处理器单元。

示例15可以包括根据示例14所述的方法,还包括:将调度信息映射到图形存储器空间中;以及在通用处理器与图形处理器之间共享所述图形存储器空间中所映射的调度信息。

示例16可以包括根据示例15所述的方法,其中,所述调度信息包括工作负载队列信息和调度解释信息中的一个或多个。

示例17可以包括根据示例15至16中任一项所述的方法,还包括:生成影子虚拟图形处理器工作负载;以及在所述影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。

示例18可以包括根据示例17所述的方法,还包括:当在所述工作负载中达到所述图形处理器调度桩时基于图形处理器指令来协同调度;以及基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新所述图形存储器空间中的调度解释信息。

示例19可以包括根据示例18所述的方法,还包括:在所述图形处理器变得空闲之后基于通用处理器指令来协同调度。

示例20可以包括至少一种计算机可读存储介质,包括指令集,所述指令集在由计算设备执行时,使得所述计算设备执行以下操作:管理一个或多个虚拟图形处理器单元;以及基于通用处理器指令和图形处理器指令两者来协同调度所述一个或多个虚拟图形处理器单元。

示例21可以包括根据示例20所述的至少一种计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使得所述计算设备执行以下操作:将调度信息映射到图形存储器空间中;以及在通用处理器与图形处理器之间共享所述图形存储器空间中所映射的调度信息。

示例22可以包括根据示例21所述的至少一种计算机可读存储介质,其中,所述调度信息包括工作负载队列信息和调度解释信息中的一个或多个。

示例23可以包括根据示例21至22中任一项所述的至少一种计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使得所述计算设备执行以下操作:生成影子虚拟图形处理器工作负载;以及在所述影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩。

示例24可以包括根据示例23所述的至少一种计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使得所述计算设备执行以下操作:当在所述工作负载中达到所述图形处理器调度桩时基于图形处理器指令来协同调度;以及基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新所述图形存储器空间中的调度解释信息。

示例25可以包括根据示例24所述的至少一种计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使得所述计算设备执行以下操作:在所述图形处理器变得空闲之后基于通用处理器指令来协同调度。

示例26可以包括一种虚拟机管理器装置,包括:用于管理一个或多个虚拟图形处理器单元的设备;以及用于基于通用处理器指令和图形处理器指令两者来协同调度所述一个或多个虚拟图形处理器单元的设备。

示例27可以包括根据示例26所述的装置,还包括:用于将调度信息映射到图形存储器空间中的设备;以及用于在通用处理器与图形处理器之间共享所述图形存储器空间中所映射的调度信息的设备。

示例28可以包括根据示例27所述的装置,其中,所述调度信息包括工作负载队列信息和调度解释信息中的一个或多个。

示例29可以包括根据示例27至28中任一项所述的装置,还包括:用于生成影子虚拟图形处理器工作负载的设备;以及用于在所述影子虚拟图形处理器工作负载的端部处插入图形处理器调度桩的设备。

示例30可以包括根据示例29所述的装置,还包括:用于当在所述工作负载中达到所述图形处理器调度桩时基于图形处理器指令来协同调度的设备;以及用于基于图形存储器空间访问指令和图形处理器流水线指令中的一个或多个来更新所述图形存储器空间中的调度解释信息的设备。

示例31可以包括根据示例30所述的装置,还包括用于在所述图形处理器变得空闲之后基于通用处理器指令来协同调度的设备。

实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、片上系统(SoC)、SSD/NAND控制器ASIC等。另外,在一些附图中,信号导体线用线表示。一些线可以是不同的,以指示更多的组成信号路径,具有数量标签,以指示组成信号路径的数量,和/或在一个或多个端部处具有箭头,以指示主要信息流方向。然而,不应该以限制性方式对其进行解释。相反,可以结合一个或多个示例性实施例来使用此类添加的细节以促进对电路的更容易理解。任何表示的信号线,无论是否具有附加信息,都可以实际上包括可以在多个方向上传播的一个或多个信号,并且可以用任何合适类型的信号方案来实现,例如,用差分对实现的数字或模拟线、光纤线和/或单端线。

可能已给出了示例尺寸/模型/值/范围,但是实施例不限于这些。随着制造技术(例如,光刻法)日益成熟,预期能制造更小尺寸的器件。另外,为了图示和讨论的简单,并且为了不使实施例的某些方面模糊,在图内可能会或可能不会示出到IC芯片和其他组件的众所周知的电源/接地连接。另外,为了避免模糊实施例,并且还考虑到关于此类框图布置的实现方式的细节高度依赖于要在其中实现实施例的平台的事实(即,此类细节应该完全在本领域技术人员的能力范围内),布置可以以框图形式示出。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,对于本领域的技术人员而言应该显而易见的是,可以在没有这些具体细节的情况下或按这些具体细节的变化来实践实施例。描述因此将被认为是说明性的而不是限制性的。

术语“耦合”可以在本文中用于指代所述组件之间的任何类型的直接或间接关系,并且可以适用于电气、机械、流体、光学、电磁、机电或其他连接。另外,术语“第一”、“第二”等可以在本文中仅用于促进讨论,并且除非另外指示,否则不具有特定时间或时间顺序意义。

如在本申请中且在权利要求中使用的,通过术语“…中的一个或多个”结合的项目的列表可以标识所列举项的任何组合。例如,短语“A、B和C中的一个或多个”以及短语“A、B或C中的一个或多个”都可以表示A;B;C;A和B;A和C;B和C;或A、B和C。

本领域的技术人员将从前面的描述中意识到,可以以各种形式来实现实施例的广泛技术。因此,虽然已结合其特定示例描述了实施例,但是实施例的真实范围不应该受到如此限制,因为在研究附图、说明书和以下权利要求后,其他修改对于技术人员而言将变得显而易见。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号