一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

动态资源管理机制的制作方法

2022-06-30 00:03:08 来源:中国专利 TAG:

动态资源管理机制


背景技术:

1.在数据中心中正在兴起分解计算。云服务提供商(csp)正在部署如下方案,其中工作负载的处理被分布在分解计算资源上,诸如cpu、gpu和硬件加速器(包括现场可编程门阵列(fpga)),这些分解计算资源通过网络连接而不是在同一平台上并通过物理链路(诸如外围组件互连快速(pcie))连接。分解计算通过使能更有效地使用可用资源来使能提高资源利用率并降低拥有成本。
附图说明
2.因此,通过参考实施例(其中一些示于附图中),可以详细地理解本实施例的以上陈述的特征的方式,可以对以上简要概述的本实施例进行更具体地描述。然而,应注意,附图示出典型实施例,因此不应视为限制其范围。
3.图1是根据实施例的处理系统的框图。
4.图2是用于与加速器设备的安全i/o的计算设备的至少一个实施例的简化框图。
5.图3是图2的计算设备的加速器设备的至少一个实施例的简化框图。
6.图4a-4d示出了由本文描述的实施例提供的计算系统和图形处理器。
7.图5示出了根据一些实施例的用于数据处理系统的示例图形软件架构。
8.图6a是示出了根据一些实施例的ip核开发系统的框图。
9.图6b示出了根据一些实施例的集成电路封装组件的截面侧视图。
10.图6c示出了根据一些实施例的包括连接到基板(例如,基础管芯)的硬件逻辑小芯片的多个单元的封装组件。
11.图6d示出了根据一些实施例的包括可互换小芯片的封装组件。
12.图7是示出了根据一些实施例的示例片上集成电路系统的框图。
13.图8示出了根据本公开的实现方式的计算设备。
14.图9示出了根据本公开的一个实现方式的分布式计算平台。
15.图10示出了资源管理器的一个实施例。
16.图11示出了资源元数据的一个实施例。
17.图12示出了计算平台的另一个实施例。
18.图13示出了计算平台的又一个实施例。
19.图14a和图14b是示出用于执行分布式渲染的过程的一个实施例的流程图。
20.图15是示出了资源管理过程的一个实施例的序列图。
具体实施方式
21.在下面描述中,阐述了许多具体细节以提供更透彻的理解。然而,对于本领域技术人员而言显而易见的是,可以在没有这些特定细节中的一个或多个的情况下实践本文描述的实施例。在其他实例下,没有描述众所周知的特征以避免混淆本实施例的细节。
22.系统概述
23.虽然本公开的概念易于进行各种修改和替代形式,但是其特定实施例已经通过示例的方式在附图中示出并且将在本文中详细描述。然而,应当理解,并非意图将本公开的概念限制于所公开的特定形式,而是相反,意图是涵盖与本公开和所附权利要求一致的所有修改、等同物和替代方案。
24.说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用表明所描述的实施例可以包括具体特征、结构或特性,但是每个实施例可以或可以不必包括该具体特征、结构或特性。此外,此类短语不一定指相同的实施例。此外,当结合实施例描述具体特征、结构或特性时,认为在本领域技术人员的知识范围内实现与其他实施例相关的此种特征、结构或特性,无论是否被明确描述。另外,应当理解,以“至少一个a、b和c”的形式包括在列表中的项可以指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。类似地,以“a、b或c中的至少一个”形式列出的项目可以指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。
25.在一些情况下,可以以硬件、固件、软件或其任意组合来实现所公开的实施例。所公开的实施例还可以被实现为由一个或多个处理器读取和运行的暂时性或非暂时性机器可读(例如,计算机可读)存储介质承载或存储的指令。机器可读存储介质可以实施为用于以机器可读的形式存储或传输信息的任何存储设备、机构或其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
26.在附图中,一些结构或方法特征可以以特定布置和/或顺序示出。然而,应当理解,可以不使用此种特定布置和/或排序。相反,在一些实施例中,此种特征可以以与说明性图中所示的方式和/或顺序不同的布置。此外,在具体图中包括结构或方法特征并不意味着在所有实施例中都使用这种特征,并且在一些实施例中,可以不被包括或可以与其他特征组合。
27.现在参考图1,示出了根据实施例的处理系统100的框图。系统100可以用于单处理器桌面系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是合并于用在移动设备、手持设备或嵌入式设备中的片上系统(soc)集成电路内的处理平台,诸如在具有到局域网或广域网的有线或无线连接的物联网(iot)设备内。
28.在一个实施例中,系统100可以包括基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台;移动游戏控制台、手持游戏控制台或在线游戏控制台),与之耦合,或者集成于其内。在一些实施例中,系统100是移动电话、智能电话、平板计算设备或移动互联网连接设备(诸如具有低内部存储容量的膝上型电脑)的一部分。处理系统100还可以包括可穿戴设备(诸如智能手表可穿戴设备,通过增强现实(ar)或虚拟现实(vr)特征来提供视觉、音频或触觉输出以补充现实世界的视觉、音频或触觉体验,或以其他方式提供文本、音频、图形、视频、全息图像或视频或触觉反馈的增强的智能眼镜或服装,或其他增强现实(ar)设备;或其他虚拟现实(vr)设备),与之耦合,或者集成于其内。在一些实施例中,处理系统100包括或是电视或机顶盒设备的一部分。在一个实施例中,系统100可以包括自动驾驶车辆(诸如公共汽车、牵引拖车、轿车、马达或电动循环、飞机或滑翔机(或其任何组合)),与之耦合,或者集成于其内。自动驾驶车辆可以使用系统100来处理感测到的车辆周围的环境。
29.在一些实施例中,一个或多个处理器102均包括一个或多个处理器核107,以处理指令,该指令在被执行时执行用于系统或用户软件的操作。在一些实施例中,一个或多个处
理器核107中的至少一个被配置为处理特定指令集109。在一些实施例中,指令集109可以促进复杂指令集计算(cisc)、精简指令集计算(risc)或经由超长指令字(vliw)的计算。一个或多个处理器核107可以处理不同的指令集109,其可以包括用于促进其他指令集的仿真的指令。处理器核107还可以包括其他处理设备(诸如数字信号处理器(dsp))。
30.在一些实施例中,处理器102包括缓存存储器104。取决于架构,处理器102可以具有单个内部缓存或多级内部缓存。在一些实施例中,在处理器102的各种组件之间共享缓存存储器。在一些实施例中,处理器102还使用外部缓存(例如,三级(l3)缓存或最后一级缓存(llc))(未示出),其可以使用已知的缓存一致性技术在处理器核107之间共享。寄存器文件106可以被额外地包括在处理器102中,并且可以包括用于存储不同类型数据的不同类型寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以对于处理器102的设计是专用的。
31.在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合,以在处理器102与系统100中的其他组件之间传输通信信号(例如,地址信号、数据信号或控制信号)。接口总线110在一个实施例中可以是处理器总线(例如,直接媒体接口(dmi)总线的版本)。然而,处理器总线不限于dmi总线,并且可以包括一个或多个外围组件互连总线(例如,pci、pci express)、存储器总线或其他类型的接口总线。在一个实施例中,处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116促进存储器设备与系统100的其他组件之间的通信,而平台控制器中枢(pch)130提供经由本地i/o总线至i/o设备的连接。
32.存储器设备120可以是动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪存设备,相变存储器设备或具有合适的性能以充当进程存储器的一些其他存储器设备。在一个实施例中,存储器设备120可以操作为用于系统100的系统存储器,以存储数据122和指令121,以便在一个或多个处理器102执行应用或进程时使用。存储器控制器116还与可选的外部图形处理器118耦合,外部图形处理器118可以与处理器102中的一个或多个图形处理器108进行通信,以执行图形操作和媒体操作。在一些实施例中,图形操作、媒体操作和/或计算操作可以由加速器112协助,加速器112是可以被配置为执行一组专门的图形操作、媒体操作或计算操作的协处理器。例如,在一个实施例中,加速器112是用于优化机器学习或计算操作的矩阵乘法加速器。在一个实施例中,加速器112是可以用于与图形处理器108协同执行射线跟踪操作的射线跟踪加速器。在一个实施例中,可以使用外部加速器119代替加速器112或与加速器112协同使用。
33.在一个实施例中,加速器112是现场可编程门阵列(fpga)。fpga是指包括可编程逻辑块阵列的集成电路(ic),其可以被配置为执行简单的逻辑门和/或复杂的组合功能,并且还可以包括存储器元件。fpga被设计为在制造后由客户或设计者配置。fpga可以用于加速算法的一部分,在fpga和通用处理器之间共享部分计算。在一些实施例中,加速器112是gpu或专用集成电路(asic)。在一些实现方式中,加速器112也被称为计算加速器或硬件加速器。
34.在一些实施例中,显示设备111可以连接到处理器102。显示设备111可以是如在移动电子设备或膝上型设备中的内部显示设备或者经由显示接口(例如,displayport等)附接的外部显示设备中的一个或多个。在一个实施例中,显示设备111可以是头戴式显示器
(hmd)(例如,用于虚拟现实(vr)应用或增强现实(ar)应用的立体显示设备)。
35.在一些实施例中,平台控制器中枢130使得外围设备能够经由高速i/o总线连接到存储器设备120和处理器102。i/o外围设备包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发机126、触摸传感器125、数据存储设备124(诸如非易失性存储器、易失性存储器、硬盘驱动器、闪存、nand、3d nand、3d xpoint等)。数据存储设备124可以经由存储接口(例如,sata)或经由外围总线(例如,外围组件互连总线(例如,pci、pci express))连接。触摸传感器125可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发机126可以是wi-fi收发机、蓝牙收发机或移动网络收发机(例如,3g、4g、5g或长期演进(lte)收发机)。固件接口128使得能够进行与系统固件的通信,并且可以是例如统一可扩展固件接口(uefi)。网络控制器134可以使得能够与有线网络进行网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。音频控制器146在一个实施例中是多通道高清晰度音频控制器。在一个实施例中,系统100包括可选的遗留i/o控制器140,以用于将遗留(例如,个人系统2(ps/2))设备耦合到系统。平台控制器中枢130还可以连接到一个或多个通用串行总线(usb)控制器142,其连接输入设备(例如,键盘和鼠标143组合、相机144或其他usb输入设备)。
36.可以理解,所示系统100是一个示例而非限制性的,因为也可以使用不同地配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以集成到分立式外部图形处理器(例如,外部图形处理器118)中。在一个实施例中,平台控制器中枢130和/或存储器控制器116可以处于一个或多个处理器102外部。例如,系统100可以包括外部存储器控制器116和平台控制器中枢130,其可以被配置作为与处理器102进行通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
37.例如,电路板(“滑板”)可以用来在其上放置诸如cpu、存储器和其他组件的组件,这些组件被设计用于提高热性能。在一些示例中,诸如处理器的处理组件位于滑板的顶侧,而诸如dimm的接近存储器位于滑板的底侧。由于这种设计提供了增强的气流,所以这些组件可以在比典型系统更高的频率和功率水平下运行,从而提高性能。此外,滑板被配置为与机架中的电力数据通信线缆盲配合,从而增强了它们被快速移除、升级、重新安装和/或更换的能力。类似地,位于滑板上的各个组件(诸如处理器、加速器、存储器和数据存储驱动器)由于彼此之间的间距增加而被配置为易于升级。在说明性实施例中,组件另外包括硬件证明特征以证明它们的真实性。
38.数据中心可以利用支持包括以太网和omni-path在内的多个其他网络架构的单个网络架构(“构造”)。滑板可以通过光纤耦合到交换机,与典型的双绞线线缆(例如,5类、5e类、6类等)相比,光纤提供更高的带宽和更低的延迟。由于高带宽、低延迟互连和网络架构,数据中心可以在使用中汇集资源,诸如存储器、加速器(例如,图形处理单元(gpu)、图形加速器、fpga、asic、神经网络和/或人工智能加速器等)、以及物理上分解的数据存储驱动器,并根据需要将它们提供给计算资源(例如,处理器),使能计算资源像它们是本地资源一样访问池化资源。
39.电源或电力源可以向系统100或本文所述的任何组件或系统提供电压和/或电流。在一个示例中,电源包括插入壁式插座的ac到dc(交流到直流)适配器。此种交流电可以是可再生能量(例如,太阳能)电源。在一个示例中,电源包括dc电源,例如外部ac到dc转换器。
在一个示例中,电力源或电源包括无线充电硬件以通过靠近充电场进行充电。在一个示例中,电源可以包括内部电池、交流电源、基于运动的电源、太阳能电源或燃料电池电源。
40.图2示出了由本文描述的实施例提供的附加处理系统架构的框图。用于具有加速器设备的安全i/o的计算设备200包括处理器220和加速器设备236,诸如现场可编程门阵列(fpga)。在使用中,如下文进一步描述的,由处理器220建立的可信执行环境(tee)与加速器236安全地通信数据。可以使用存储器映射i/o(mmio)事务或直接存储器访问(dma)事务来传输数据。例如,tee可以执行包括加密数据的mmio写入事务,并且加速器236解密数据并执行写入。作为另一示例,tee可以执行mmio读取请求事务,并且加速器236可以读取所请求的数据、加密数据并且执行包括加密的数据的mmio读取响应事务。作为又一示例,tee可以将加速器236配置为执行dma操作,并且加速器236执行存储器转存、执行密码操作(即,加密或解密),并且转发结果。如下文进一步描述的,tee和加速器236为传输的数据生成认证标签(at)并且可以使用这些at来验证事务。计算设备200因此可以在tee和加速器236的可信代码库(tcb)之外保留计算设备200的不可信软件,诸如操作系统或虚拟机监视器。因此,计算设备200可以保护由tee和加速器236交换或以其他方式处理的来自计算设备200的所有者(例如,云服务提供商)或计算设备200的其他租户的数据。因此,计算设备200可以通过允许安全使用加速器设备来提高多租户环境的安全性和性能。
41.计算设备200可以实施为能够执行本文描述的功能的任何类型的设备。例如,计算设备200可以实施为但不限于计算机、膝上型计算机、平板计算机、笔记本计算机、移动计算设备、智能电话、可穿戴计算设备、多处理器系统、服务器、工作站和/或消费性电子设备。如图2所示,说明性计算设备200包括处理器220、i/o子系统224、存储器230和数据存储设备232。另外,在一些实施例中,说明性组件中的一个或多个可以合并或以其他方式形成另一个组件的一部分。例如,在一些实施例中,存储器230或其部分可以合并在处理器220中。
42.处理器220可以实施为能够执行本文描述的功能的任何类型的处理器。例如,处理器220可以实施为单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。如图所示,处理器220说明性地包括安全飞地(secure enclave)支持222,其允许处理器220建立称为安全飞地的可信执行环境,其中可以测量、验证和/或以其他方式确定执行代码是可信的。此外,包括在安全飞地中的代码和数据可以被加密或以其他方式被保护以免被在安全飞地之外执行的代码访问。例如,包括在安全飞地中的代码和数据在被执行时或在被存储在处理器220的某些受保护的缓存存储器中时可以受到处理器220的硬件保护机制的保护。安全飞地中包括的代码和数据可以是在被存储在共享缓存存储器或主存储器230中时被加密。安全飞地支持222可以被实施为一组处理器指令扩展,其允许处理器220在存储器230中建立一个或多个安全飞地。例如,安全飞地支持222可以实施为软件防护扩展(sgx)技术。
43.存储器230可以实施为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器230可以存储在计算设备200的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动器。如图所示,存储器230可以经由i/o子系统224通信耦合到处理器220,其可以实施为电路和/或组件以促进与计算设备200的处理器220、存储器230和其他组件的输入/输出操作。例如,i/o子系统224可以实施为或以其他方式包括存储器控制器集线器、输入/输出控制集线器、传感器集线器、主机控制器、固
件设备、通信链路(即,点对点链路、总线链路、导线、线缆、光导、印刷电路板轨迹等)和/或其他组件和子系统,以促进输入/输出操作。在一些实施例中,存储器230可以例如经由集成存储器控制器集线器直接耦合到处理器220。此外,在一些实施例中,i/o子系统224可以形成片上系统(soc)的一部分并且与计算设备200的处理器220、存储器230、加速器设备236和/或其他组件一起合并在单个集成电路芯片上。附加地或替代地,在一些实施例中,处理器220可以包括集成存储器控制器和系统代理,其可以实施为逻辑块,在其中来自处理器核和i/o设备的数据流量在被发送到存储器230之前会聚。
44.如图所示,i/o子系统224包括直接存储器访问(dma)引擎226和存储器映射i/o(mmio)引擎228。处理器220包括使用安全飞地支持222建立的安全飞地,并且可以使用dma引擎226通过一个或多个dma事务和/或使用mmio引擎228通过一个或多个mmio事务与加速器设备236通信。计算设备200可以包括多个dma引擎226和/或mmio引擎228用于基于处理器220和加速器236之间的带宽处理dma和mmio读取/写入事务。虽然被示出为包括在i/o子系统224中,但是应该理解在一些实施例中,dma引擎226和/或mmio引擎228可以被包括在计算设备200的其他组件(例如,处理器220、存储器控制器或系统代理)中,或者在一些实施例中可以被实施为单独的组件。
45.数据存储设备232可以实施为任何类型的被配置用于数据的短期或长期存储的一个或多个设备,诸如例如存储设备和电路、存储卡、硬盘驱动器、固态驱动器、非易失性闪存或其他数据存储设备。计算设备200还可以包括通信子系统234,其可以被实施为能够通过计算机网络(未示出)使能在计算设备200和其他远程设备之间的通信的任何通信电路、设备或其集合。通信子系统234可以被配置为使用任何一种或多种通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、wimax、3g、4g、lte等)来影响此种通信。
46.加速器设备236可以实施为现场可编程门阵列(fpga)、专用集成电路(asic)、协处理器或能够执行加速功能(例如,加速应用功能、加速网络功能或其他加速功能)的其他数字逻辑设备。说明性地,加速器设备236是fpga,其可以实施为包括可以在制造之后配置的可编程数字逻辑资源的集成电路。fpga可以包括例如通过可配置数据交换进行通信的可配置逻辑块阵列。加速器设备236可以经由高速连接接口,诸如外围总线(例如pci express总线)或处理器间互连(例如芯片内互连(idi)或quickpath互连(qpi))、或通过任何其他适当的互连耦合到处理器220。加速器设备236可以从处理器220接收用于处理的数据和/或命令并且经由dma、mmio或其他数据传输事务将结果数据返回到处理器220。
47.如图所示,计算设备200还可以包括一个或多个外围设备238。外围设备238可以包括任意数量的附加输入/输出设备、接口设备、硬件加速器和/或其他外围设备。例如,在一些实施例中,外围设备238可以包括触摸屏、图形电路、图形处理单元(gpu)和/或处理器图形、音频设备、麦克风、相机、键盘、鼠标、网络接口和/或其他输入/输出设备、接口设备和/或外围设备。
48.现场可编程门阵列(fpga)
49.现在参考图3,示出了现场可编程门阵列(fpga)300的说明性实施例。如所示的,fpga 300是关于图2描述的加速器设备236的一个潜在实施例。说明性fpga 300包括安全mmio引擎302、安全dma引擎304、一个或多个加速器功能单元(afu)306和存储器/寄存器
308。如下文进一步描述的,安全mmio引擎302和安全dma引擎304对在处理器220(例如,由处理器建立的安全飞地)和fpga 300(例如,一个或多个afu 306)之间传输的数据执行在线认证密码操作。在一些实施例中,安全mmio引擎302和/或安全dma引擎304可以拦截、过滤或以其他方式处理fpga 300的一个或多个缓存一致性互连、内部总线或其他互连上的数据流量。
50.每个afu 306可以实施为fpga 300的逻辑资源,该逻辑资源被配置为执行加速任务。每个afu 306可以与由计算设备100在安全飞地或其他可信执行环境中执行的应用相关联。每个afu 306可以由计算设备100的租户或其他用户配置或以其他方式提供。例如,每个afu 306可以对应于编程到fpga 300的比特流图像。如下文进一步描述的,由每个afu 306处理的数据包括与可信执行环境交换的数据,并且可以被加密保护免受计算设备100的不可信组件的影响(例如,免受租户飞地的可信代码库之外的软件的影响)。每个afu 306可以访问或以其他方式处理存储在存储器/寄存器308中的数据,这些存储器/寄存器308可以实施为fpga 300的内部寄存器、缓冲器、sram、存储装置或其他存储器。在一些实施例中,存储器308还可以包括外部dram或耦合到fpga 300的其他专用存储器。
51.计算系统和图形处理器
52.图4a-4d示出了由本文描述的实施例提供的计算系统和图形处理器。图4a-4d中标号(或名称)与本文任何其他附图的要素相同的那些要素可以以与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。
53.在一些实现方式中,gpu通信地耦合到主机/处理器核以加速例如图形操作、机器学习操作、模式分析操作和/或各种通用gpu(gpgpu)功能。gpu可以通过总线或另一互连(例如,诸如pcie或nvlink的高速互连)通信地耦合到主机处理器/核。替代地,gpu可以与核集成在同一封装或芯片上,并通过内部处理器总线/互连(即,封装或芯片的内部)通信耦合到核。不管gpu的连接方式如何,处理器核都可以以包含在工作描述符中的命令/指令序列的形式将工作分配给gpu。然后gpu使用专用电路/逻辑来有效地处理这些命令/指令。
54.图4a是具有一个或多个处理器核402a-402n、集成存储器控制器414和集成图形处理器408的处理器400的实施例的框图。处理器400可以包括附加核,直至并包括由虚线框表示的附加核402n。处理器核402a-402n中的每一个包括一个或多个内部缓存单元404a-404n。在一些实施例中,每个处理器核还可以访问一个或多个共享缓存单元406。内部缓存单元404a-404n和共享缓存单元406表示处理器400内的缓存存储器层级。缓存存储器层级可以包括每个处理器核内的至少一级指令和数据缓存以及一级或多级共享的中间级缓存,诸如二级(l2)、三级(l3)、四级(l4)或其他级的缓存,其中,外部存储器之前的最高级缓存被分类为llc。在一些实施例中,缓存一致性逻辑维持各个缓存单元406和404a-404n之间的一致性。
55.在一些实施例中,处理器400还可以包括一个或多个总线控制器单元416和系统代理核410的集合。一个或多个总线控制器单元416管理一组外围总线(例如,一个或多个pci或pci express总线)。系统代理核410为各种处理器组件提供管理功能。在一些实施例中,系统代理核410包括一个或多个集成存储器控制器414,以管理对各种外部存储器设备(未示出)的访问。
56.在一些实施例中,处理器核402a-402n中的一个或多个包括对同时多线程的支持。
在该实施例中,系统代理核410包括用于在多线程处理期间协调和操作核402a-402n的组件。系统代理核410可以附加地包括功率控制单元(pcu),其包括用于调节处理器核402a-402n和图形处理器408的功率状态的逻辑和组件。
57.在一些实施例中,处理器400附加地包括图形处理器408,以执行图形处理操作。在一些实施例中,图形处理器408与共享缓存单元406的集合和包括一个或多个集成存储器控制器414的系统代理核410耦合。在一些实施例中,系统代理核410还包括显示控制器411,以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器411还可以是经由至少一个互连与图形处理器耦合的分离模块,或者可以集成在图形处理器408内。
58.在一些实施例中,基于环的互连单元412用于耦合处理器400的内部组件。然而,可以使用替选的互连单元(例如,点对点互连、切换式互连或其他技术,包括本领域公知的技术)。在一些实施例中,图形处理器408经由i/o链路413与环形互连412耦合。
59.示例i/o链路413表示多种i/o互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块418(例如,edram模块)之间的通信的封装上i/o互连。在一些实施例中,处理器核402a-402n中的每一个和图形处理器408使用嵌入式存储器模块418作为共享的最后一级缓存。
60.在一些实施例中,处理器核402a-402n是执行相同指令集架构的同构核。在另一实施例中,处理器核402a-402n在指令集架构(isa)方面是异构的,其中,处理器核402a-402n中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核402a-402n在微架构方面是异构的,其中,功耗相对较高的一个或多个核与功耗较低的一个或多个核耦合。在一个实施例中,处理器核402a-402n在计算能力方面是异构的。此外,处理器400可以实现于一个或多个芯片上,或者实现为具有除了其他组件之外还有所示组件的soc集成电路。
61.图4b是根据本文描述的一些实施例的图形处理器核419的硬件逻辑的框图。图4b中标号(或名称)与本文任何其他附图的要素相同的那些要素可以以与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。图形处理器核419(有时称为核切片)可以是模块化图形处理器内的一个或多个图形核。图形处理器核419是一个图形核切片的示例,并且如本文所述的图形处理器可以基于目标功率和性能包络包括多个图形核切片。每个图形处理器核419可以包括与多个子核421a-421f(也称为子切片)耦合的固定功能块430,包括通用和固定功能逻辑的模块化块。
62.在一些实施例中,固定功能块430包括几何/固定功能管线431,其可以例如在较低性能和/或较低功率的图形处理器实现方式中被图形处理器核419中的所有子核共享。在各种实施例中,几何/固定功能管线431包括3d固定功能、视频前端单元、线程产生器和线程分派器以及管理统一返回缓冲区的统一返回缓冲区管理器。
63.在一个实施例中,固定功能块430还包括图形soc接口432、图形微控制器433和媒体管线434。图形soc接口432提供图形处理器核419和片上集成电路系统内的其他处理器核之间的接口。图形微控制器433是可编程子处理器,其可配置为管理图形处理器核419的各种功能,包括线程分派、调度和抢占。媒体管线434包括促进多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体管线434通过对子核421-421f内的计算或采样逻辑的请求来实现媒体操作。
64.在一个实施例中,soc接口432使得图形处理器核419能够与通用应用处理器核(例如,cpu)和/或soc内的其他组件(包括存储器层级元件(例如,共享最后一级缓存存储器、系统ram和/或嵌入式片上或封装上dram))进行通信。soc接口432还可以使得能够进行与soc内的固定功能设备(例如,相机成像管线)的通信,并且使得能够使用和/或实现可以在图形处理器核419与soc内的cpu之间共享的全局存储器原子。soc接口432还可以实现用于图形处理器核419的电源管理控制,并且使得图形处理器核419的时钟域与soc内的其他时钟域之间的接口成为可能。在一个实施例中,soc接口432使得能够从被配置为向图形处理器内的一个或多个图形核中的每一个提供命令和指令的命令流送器和全局线程分派器接收命令缓冲。命令和指令可以在将要执行媒体操作时被分派到媒体管线434,或者在将要执行图形处理操作时被分派到几何和固定功能管线(例如,几何和固定功能管线431、几何和固定功能管线437)。
65.图形微控制器433可以被配置为执行用于图形处理器核419的各种调度和管理任务。在一个实施例中,图形微控制器433可以在子核421a-421f内的执行单元(eu)阵列422a-422f、424a-424f内的各个图形并行引擎上执行图形和/或计算工作负荷调度。在该调度模型中,在包括图形处理器核419在内的soc的cpu核上执行的主机软件可以将工作负荷提交给多个图形处理器门铃(doorbell)之一,这在适当的图形引擎上调用调度操作。调度操作包括:确定接下来要运行哪个工作负荷;将工作负荷提交给命令流送器;抢占引擎上运行的现有工作负荷;监控工作负荷的进度;以及当完成工作负荷时通知主机软件。在一个实施例中,图形微控制器433还可以促进图形处理器核419的低功率或空闲状态,从而为图形处理器核419提供了以下能力:跨低功率状态转换保存和恢复图形处理器核419内的寄存器,而与系统上的操作系统和/或图形驱动器软件无关。
66.图形处理器核419可以具有比所示的子核421a-421f多或少的子核,多至n个模块化子核。对于每组n个子核,图形处理器核419还可以包括共享功能逻辑435、共享和/或缓存存储器436、几何/固定功能管线437以及用于加速各种图形和计算处理操作的附加固定功能逻辑438。共享功能逻辑435可以包括与图4的共享功能逻辑420关联的逻辑单元(例如,采样器、数学单元和/或线程间通信逻辑),其可以由图形处理器核419内的每n个子核共享。共享和/或缓存存储器436可以是用于图形处理器核419内的n个子核421a-421f的集合的最后一级缓存,并且还可以充当可由多个子核访问的共享存储器。几何/固定功能管线437而非几何/固定功能管线431可以包括于固定功能块430内,并且可以包括相同或类似的逻辑单元。
67.在一个实施例中,图形处理器核419包括附加固定功能逻辑438,其可以包括由图形处理器核419使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑438包括在仅位置着色中使用的附加几何管线。在仅位置着色中,存在两种几何管线:几何/固定功能管线438、431内的全几何管线;以及裁剪管线,其为可以包括于附加固定功能逻辑438内的附加几何管线。在一个实施例中,裁剪管线是全几何管线的削减版本。全管线和裁剪管线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏对已丢弃三角形的长裁剪运行,从而使得着色在一些情况下能够更早地完成。例如,并且在一个实施例中,附加固定功能逻辑438内的裁剪管线逻辑可以与主应用并行地执行位置着色器,并且通常比全管线更快地生成结果,因为裁剪管线对顶点的位置属性进行获取并着色,而
不对帧缓冲区执行像素的光栅化和渲染。裁剪管线可以使用所生成的结果来计算所有三角形的可视性信息,而无论是否裁剪了这些三角形。全管线(其在该实例中可以称为回放管线)可以采用可视性信息来跳过被裁剪的三角形,以着色最终传递到光栅化阶段的可视三角形。
68.在一个实施例中,附加固定功能逻辑438还可以包括机器学习加速逻辑(例如,固定功能矩阵乘法逻辑,以用于包括对机器学习训练或推理进行优化的实现方式)。
69.在每个图形子核421a-421f内包括一组执行资源,其可以用于响应于图形管线、媒体管线或着色器程序进行的请求而执行图形、媒体和计算操作。图形子核421a-421f包括多个eu阵列422a-422f、424a-424f、线程分派和线程间通信(td/ic)逻辑423a-423f、3d(例如,纹理)采样器425a-425f,媒体采样器406a-406f、着色器处理器427a-427f和共享本地存储器(slm)428a-428f。eu阵列422a-422f、424a-424f均包括多个执行单元,其为能够在图形、媒体或计算操作的服务中执行浮点和整数/定点逻辑操作(包括图形、媒体或计算着色器程序)的通用图形处理单元。td/ic逻辑423a-423f为子核内的执行单元执行本地线程分派和线程控制操作,并且促进在子核的执行单元上执行的线程之间的通信。3d采样器425a-425f可以将纹理或其他3d图形有关数据读取到存储器中。3d采样器可以基于所配置的采样状态和与给定纹理关联的纹理格式来不同地读取纹理数据。媒体采样器406a-406f可以基于与媒体数据关联的类型和格式来执行类似的读取操作。在一个实施例中,每个图形子核421a-421f可以替代地包括统一3d和媒体采样器。在子核421a-421f中的每一个内的执行单元上执行的线程可以使用每个子核内的共享本地存储器428a-428f,以使得在线程组内执行的线程能够使用片上存储器的公共池执行。
70.图4c示出了图形处理单元(gpu)439,其包括布置成多核组440a-440n的图形处理资源的专用集合。虽然提供了单个多核组440a的细节,但可以理解,其他多核组440b-440n可以配备有相同或相似的图形处理资源集合。
71.如所示的,多核组440a可以包括图形核集合443、张量核集合444和射线跟踪核集合445。调度器/分派器441调度和分派图形线程以在各个核443、444、445上执行。寄存器文件集合442存储在执行图形线程时由核443、444、445使用的操作数值。这些可以包括例如用于存储整数值的整数寄存器、用于存储浮点值的浮点寄存器、用于存储分组数据元素(整数和/或浮点数据元素)的向量寄存器和用于存储张量/矩阵值的平铺寄存器。在一个实施例中,平铺寄存器被实现为向量寄存器的组合集合。
72.一个或多个组合的一级(l1)缓存和共享存储器单元447在每个多核组440a内本地存储图形数据,诸如纹理数据、顶点数据、像素数据、射线数据、包围体(bounding volume)数据等。一个或多个纹理单元447还可以用于执行纹理化操作,例如纹理映射和采样。由多核组440a-440n的全部或子集共享的二级(l2)缓存453存储用于多并发图形线程的图形数据和/或指令。如所示的,l2缓存453可以跨多个多核组440a-440n共享。一个或多个存储器控制器448将gpu 439耦合到存储器449,该存储器449可以是系统存储器(例如,dram)和/或专用图形存储器(例如,gddr6存储器)。
73.输入/输出(i/o)电路450将gpu 439耦合到一个或多个i/o设备452,诸如数字信号处理器(dsp)、网络控制器或用户输入设备。可以使用片上互连将i/o设备452耦合到gpu 439和存储器449。i/o电路450的一个或多个i/o存储器管理单元(iommu)451将i/o设备452
直接耦合到系统存储器449。在一个实施例中,iommu 451管理多个页表集合以将虚拟地址映射到系统存储器449中的物理地址。在该实施例中,i/o设备452、(多个)cpu 446、(多个)gpu 439可以共享相同的虚拟地址空间。
74.在一个实现方式中,iommu 451支持虚拟化。在这种情况下,它可以管理第一页表集合以将访客/图形虚拟地址映射到访客/图形物理地址,并管理第二页表集合以将访客/图形物理地址映射到系统/主机物理地址(例如,在系统存储器449内)。第一页表集合和第二页表集合中的每一个的基地址可以存储在控制寄存器中并且在上下文切换时换出(例如,以便为新的上下文提供对相关页表集合的访问)。虽然在图4c中未示出,但是核443、444、445和/或多核组440a-440n中的每一个可以包括转换后备缓冲器(tlb)以缓存访客虚拟到访客物理转换、访客物理到主机物理转换和访客虚拟到主机物理转换。
75.在一个实施例中,cpu 446、gpu 439和i/o设备452被集成在单个半导体芯片和/或芯片封装上。所示的存储器449可以集成在同一芯片上或者可以经由片外接口耦合到存储器控制器448。在一个实现方式中,存储器449包括与其他物理系统级存储器共享相同虚拟地址空间的gddr6存储器,但是本公开的实现方式的基本原理不限于该特定实现方式。
76.在一个实施例中,张量核444包括被专门设计用于执行矩阵运算的多个执行单元,该矩阵运算是用于执行深度学习操作的计算操作。例如,同步矩阵乘法运算可以用于神经网络训练和推理。张量核444可以使用各种操作数精度来执行矩阵处理,包括单精度浮点(例如,32位)、半精度浮点(例如,16位)、整数字(16位)、字节(8位)和半字节(4位)。在一个实施例中,神经网络实现提取每个渲染场景的特征,潜在地组合来自多个帧的细节,以构建高质量的最终图像。
77.在深度学习实现方式中,并行矩阵乘法工作可以被调度以在张量核444上执行。神经网络的训练尤其利用有效数矩阵点积运算。为了处理n
×n×
n矩阵乘法的内积公式,张量核444可以包括至少n个点积处理元素。在矩阵乘法开始之前,一个完整矩阵被加载到平铺寄存器中,并且n个周期中的每个周期加载第二矩阵的至少一列。每个周期,有n个点积被处理。
78.取决于具体实现方式,矩阵元素可以以不同精度存储,包括16位字、8位字节(例如,int8)和4位半字节(例如,int4)。可以为张量核444指定不同的精度模式以确保最有效的精度被用于不同的工作负载(例如,诸如可以容许量化为字节和半字节的推理工作负载)。
79.在一个实施例中,射线跟踪核445加速用于实时射线跟踪和非实时射线跟踪实现方式的射线跟踪操作。具体地,射线跟踪核445包括射线遍历/相交电路,用于使用包围体层次结构(bvh)执行射线遍历并识别射线和包围在bvh体积内的基元之间的相交。射线跟踪核445还可以包括用于执行深度测试和裁剪的电路(例如,使用z缓冲器或类似布置)。在一个实现方式中,射线跟踪核445与本文描述的图像去噪技术协同执行遍历和相交操作,其至少一部分可以在张量核444上执行。例如,在一个实施例中,张量核444实现深度学习神经网络以对由射线跟踪核445生成的帧执行去噪。然而,(多个)cpu 446、图形核443和/或射线跟踪核445也可以实现全部或部分去噪和/或深度学习算法。
80.此外,如上所述,可以采用去噪的分布式方法,其中gpu 439位于通过网络或高速互连耦合到其他计算设备的计算设备中。在该实施例中,互连的计算设备共享神经网络学
习/训练数据以提高整个系统学习的速度,来执行对不同类型的图像帧和/或不同的图形应用去噪。
81.在一个实施例中,射线跟踪核445处理所有bvh遍历和射线-基元相交,从而避免图形核443因每条射线数千条指令而过载。在一个实施例中,每个射线跟踪核445包括用于执行包围盒测试(例如,用于遍历操作)的第一专用电路集合和用于执行射线-三角形相交测试(例如,已经遍历的相交射线)的第二专用电路集合。因此,在一个实施例中,多核组440a可以简单地发射射线探测器,并且射线跟踪核445独立地执行射线遍历和相交并将命中数据(例如,命中、未命中、多次命中等)返回到线程上下文。其他核443、444被释放以执行其他图形或计算工作,而射线跟踪核445执行遍历和相交操作。
82.在一个实施例中,每个射线跟踪核445包括执行bvh测试操作的遍历单元和执行射线-基元相交测试的相交单元。相交单元生成“命中”、“未命中”或“多次命中”响应,并将其提供给适当的线程。在遍历和相交操作期间,其他核(例如,图形核443和张量核444)的执行资源被释放以执行其他形式的图形工作。
83.在下面描述的一个具体实施例中,使用混合光栅化/射线跟踪方法,其中工作分布在图形核443和射线跟踪核445之间。
84.在一个实施例中,射线跟踪核445(和/或其他核443、444)包括针对射线跟踪指令集(诸如微软的directx射线跟踪(dxr),其包括dispatchray(分派射线)命令,以及射线生成、最近命中、任意命中)的硬件支持,和未命中着色器,未命中着色器使能为每个对象分配着色器和纹理的唯一集合。可以由射线跟踪核445、图形核443和张量核444支持的另一射线跟踪平台是vulkan 1.1.85。然而,请注意,本公开的实现方式的基本原理不限于任何特定的射线跟踪isa。
85.一般而言,各种核445、444、443可以支持射线跟踪指令集,该射线跟踪指令集包括用于射线生成、最近命中、任意命中、射线-基元相交、每基元和层次包围盒构造、未命中、拜访(visit)和异常的指令/功能。更具体地,一个实施例包括用于执行以下功能的射线跟踪指令:
86.射线生成—可以为每个像素、样本或其他用户定义的工作分配执行射线生成指令。
87.最近命中—可以执行最近命中指令以定位射线与场景内的基元的最近相交点。
88.任意命中—任意命中指令识别射线与场景内的基元之间的多个相交,潜在地识别新的最近相交点。
89.相交—相交指令执行射线-基元相交测试并输出结果。
90.每基元包围盒构造—该指令围绕给定的基元或基元组构建包围盒(例如,在构建新的bvh或其他加速数据结构时)。
91.未命中—指示射线未命中场景内或场景的指定区域内的所有几何体。
92.拜访—指示射线可以遍历的子体积。
93.异常—包括各种类型的异常处理程序(例如,调用各种错误条件)。
94.图4d是根据本文描述的实施例的可以被配置为图形处理器和/或计算加速器的通用图形处理单元(gpgpu)470的框图。gpgpu 470可以经由一个或多个系统和/或存储器总线与主机处理器(例如,一个或多个cpu 446)和存储器471、472互连。在一个实施例中,存储器
471是可以与一个或多个cpu 446共享的系统存储器,而存储器472是专用于gpgpu 470的设备存储器。在一个实施例中,gpgpu 470内的组件和设备存储器472可以被映射到一个或多个cpu 446可访问的存储器地址。可以通过存储器控制器468促进对存储器471和472的访问。在一个实施例中,存储器控制器468包括内部直接存储器访问(dma)控制器469或可以包括逻辑以执行否则将由dma控制器执行的操作。
95.gpgpu 470包括多个缓存存储器,包括l2缓存453、l1缓存454、指令缓存455和共享存储器456,其至少一部分也可以被划分为缓存存储器。gpgpu 470还包括多个计算单元460a-460n。每个计算单元460a-460n包括向量寄存器461、标量寄存器462、向量逻辑单元463和标量逻辑单元464的集合。计算单元460a-460n还可以包括本地共享存储器465和程序计数器466。计算单元460a-460n可以与恒定缓存467耦合,恒定缓存467可以用于存储恒定数据,恒定数据是在gpgpu 470上执行的内核或着色器程序的运行期间不会改变的数据。在一个实施例中,恒定缓存467是标量数据缓存,缓存的数据可以直接提取到标量寄存器462中。
96.在操作期间,一个或多个cpu 446可以将命令写入已被映射到可访问地址空间的gpgpu 470中的寄存器或存储器。命令处理器457可以从寄存器或存储器读取命令并且确定可以如何在gpgpu 470内处理这些命令。然后可以使用线程分派器458将线程分派到计算单元460a-460n来执行这些命令。每个计算单元460a-460n可以独立于其他计算单元执行线程。此外,每个计算单元460a-460n可以独立配置用于条件计算并且可以有条件地将计算结果输出到存储器。当提交的命令完成时,命令处理器457可以中断一个或多个cpu 446。
97.图形软件架构
98.图5示出了根据一些实施例的数据处理系统500的示例图形软件架构。在一些实施例中,软件架构包括3d图形应用510、操作系统520和至少一个处理器530。在一些实施例中,处理器530包括图形处理器532和一个或多个通用处理器核534。图形应用510和操作系统520均在数据处理系统的系统存储器550中执行。
99.在一些实施例中,3d图形应用510包含包括着色器指令512的一个或多个着色器程序。着色器语言指令可以是高级着色器语言(诸如,direct3d的高级着色器语言(hlsl)或opengl着色器语言(glsl)等)。该应用还包括适合于通用处理器核534执行的机器语言的可执行指令514。该应用还包括由顶点数据定义的图形对象516。
100.在一些实施例中,操作系统520是来自microsoft corporation的操作系统、类似私有unix的操作系统、或使用linux内核的变型的类似开源unix的操作系统。操作系统520可以支持图形api 522(例如,direct3d api、opengl api或vulkan api)。当direct3d api处于使用中时,操作系统520使用前端着色器编译器524来将hlsl的任何着色器指令512编译成更低级着色器语言。编译可以是即时(jit)编译,或者应用可以执行着色器预编译。在一些实施例中,在3d图形应用510的编译期间将高级着色器编译成低级着色器。在一些实施例中,以中间形式(例如,vulkan api使用的标准便携式中间表示(spir)的版本)提供着色器指令512。
101.在一些实施例中,用户模式图形驱动器526包含后端着色器编译器527,以将着色器指令512转换为硬件特定表示。当opengl api处于使用中时,glsl高级语言的着色器指令512被传递到用户模式图形驱动器526以用于编译。在一些实施例中,用户模式图形驱动器
526使用操作系统内核模式功能528来与内核模式图形驱动器529进行通信。在一些实施例中,内核模式图形驱动器529与图形处理器532进行通信,以分派命令和指令。
102.ip核实现方式
103.可以通过机器可读介质上存储的表示和/或定义集成电路(例如,处理器)内的逻辑的代表性代码来实现至少一个实施例的一个或多个方面。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可以使机器制造逻辑以执行本文描述的技术。这种表示(称为“ip核”)是集成电路的可重复使用的逻辑单元,其可以存储在有形机器可读介质上作为描述集成电路的结构的硬件模型。可以将硬件模型提供给各种消费者或制造设施,其将硬件模型加载在制造集成电路的构造机器上。可以构造集成电路,使得电路执行与本文描述的任何实施例关联地描述的操作。
104.图6a是示出了根据实施例的可以用于制造集成电路以执行操作的ip核开发系统600的框图。ip核开发系统600可以用于生成模块化的、可重复使用的设计,其可以合并到更大的设计中或用于构建整个集成电路(例如,soc集成电路)。设计设施630可以用高级编程语言(例如,c/c )生成ip核设计的软件仿真610。软件仿真610可以用于使用仿真模型612来设计、测试和验证ip核的行为。仿真模型612可以包括功能仿真、行为仿真和/或时序仿真。然后可以从仿真模型612生成或合成寄存器传输级(rtl)设计615。rtl设计615是对硬件寄存器之间的数字信号流进行建模的集成电路(包括使用所建模的数字信号执行的关联逻辑)的行为的抽象。除了rtl设计615之外,还可以生成、设计或合成逻辑级或晶体管级的更低级设计。因此,初始设计和仿真的特定细节可以变化。
105.rtl设计615或等同物可以由设计设施进一步合成为硬件模型620,其可以处于硬件描述语言(hdl)或物理设计数据的一些其他表示。可以进一步仿真或测试hdl以验证ip核设计。可以使用非易失性存储器640(例如,硬盘、闪存或任何非易失性存储介质)存储ip核设计,以用于提交到第3方制造设施665。替代地,可以通过有线连接650或无线连接660(例如,经由互联网)发送ip核设计。然后,制造设施665可以制造至少部分地基于ip核设计的集成电路。制造的集成电路可以被配置为执行根据本文描述的至少一个实施例的操作。
106.图6b示出了根据本文描述的一些实施例的集成电路封装组件670的截面侧视图。集成电路封装组件670示出如本文所述的一个或多个处理器或加速器设备的实现方式。封装组件670包括连接到基板680的多个硬件逻辑单元672、674。逻辑672、674可以至少部分地实现于可配置逻辑或固定功能逻辑硬件中,并且可以包括处理器核、图形处理器或本文描述的其他加速器设备中的任何一个的一个或多个部分。每个逻辑单元672、674可以实现于半导体管芯内,并且经由互连结构673与基板680耦合。互连结构673可以被配置为在逻辑672、674与基板680之间路由电信号,并且可以包括互连(例如但不限于凸点或支柱)。在一些实施例中,互连结构673可以被配置为路由电信号(例如,与逻辑672、674的操作关联的输入/输出(i/o)信号和/或电源信号或地信号)。在一些实施例中,基板680是基于环氧树脂的层压基板。在其他实施例中,封装组件670可以包括其他合适类型的基板。封装组件670可以经由封装互连683连接到其他电气设备。封装互连683可以耦合到基板680的表面,以将电信号路由到其他电气设备(例如,主板、其他芯片组或多芯片模块)。
107.在一些实施例中,逻辑单元672、674与桥682电耦合,桥682被配置为在逻辑672、674之间路由电信号。桥682可以是提供用于电信号的路线的密集互连结构。桥682可以包括
由玻璃或合适的半导体材料构成的桥基板。可以在桥基板上形成电路由特征,以在逻辑672、674之间提供芯片到芯片连接。
108.尽管示出两个逻辑单元672、674和桥682,但本文描述的实施例可以在一个或多个管芯上包括更多或更少的逻辑单元。一个或多个管芯可以通过零个或更多个桥连接,因为当逻辑被包括于单个管芯上时可以排除桥682。替代地,多个管芯或逻辑单元可以通过一个或多个桥连接。此外,多个逻辑单元、管芯和桥可以按其他可能的配置(包括三维配置)连接在一起。
109.图6c示出了封装组件690,其包括连接到基板680(例如,基础管芯)的硬件逻辑小芯片的多个单元。如本文所述的图形处理单元、并行处理器和/或计算加速器可以由单独制造的不同硅小芯片组成。在此上下文中,小芯片是至少部分封装的集成电路,其包括可以与其他小芯片组装成更大封装的不同逻辑单元。可以将具有不同ip核逻辑的不同的小芯片集合组装到单个设备中。此外,可以使用有源中介层技术将小芯片集成到基础芯片或基础小芯片中。本文描述的概念使能gpu内不同形式的ip之间的互连和通信。ip核可以使用不同的工艺技术制造并在制造过程中进行组合,这避免了将多个ip聚集到同一制造工艺中的复杂性,尤其是在具有多种风格ip的大型soc上。使能使能多种工艺技术可以缩短上市时间,并提供一种经济高效的方式来创建多个产品sku。此外,分解的ip更易于独立进行电力门控,可以关闭未在给定工作负载上使用的组件,从而降低整体功耗。
110.硬件逻辑小芯片可以包括专用硬件逻辑小芯片672、逻辑或i/o小芯片674和/或存储器小芯片675。硬件逻辑小芯片672和逻辑或i/o小芯片674可以至少部分地实现在可配置逻辑或固定功能逻辑硬件中,并且可以包括(多个)处理器核、(多个)图形处理器、并行处理器或本文描述的其他加速器设备中的任何一个的一个或多个部分。存储器小芯片675可以是dram(例如,gddr、hbm)存储器或缓存存储器(sram)存储器。
111.每个小芯片可以被制造为单独的半导体管芯并且经由互连结构673与基板680耦合。互连结构673可以被配置为在基板680内的各个小芯片和逻辑之间路由电信号。互连结构673可以包括互连,诸如但不限于凸点或支柱。在一些实施例中,互连结构673可以被配置为路由电信号,诸如例如与逻辑、i/o和存储器小芯片的操作相关联的输入/输出(i/o)信号和/或电力信号或接地信号。
112.在一些实施例中,基板680是基于环氧树脂的层压基板。在其他实施例中,基板680可以包括其他合适类型的基板。封装组件690可以通过封装互连683连接到其他电气设备。封装互连683可以耦合到基板680的表面以将电信号路由到其他电气设备,诸如主板、其他芯片组或多芯片模块。
113.在一些实施例中,逻辑或i/o小芯片674和存储器小芯片675可以经由桥687电耦合,桥687被配置为在逻辑或i/o小芯片674和存储器小芯片675之间路由电信号。桥687可以是提供用于电信号的路线的密集互连结构。桥687可以包括由玻璃或合适的半导体材料构成的桥基板。电路由特征可以形成在桥基板上,以提供逻辑或i/o小芯片674和存储器小芯片675之间的芯片到芯片连接。桥687也可以称为硅桥或互连桥。例如,在一些实施例中,桥687是嵌入式多管芯互连桥(emib)。在一些实施例中,桥687可以仅是从一个小芯片到另一个小芯片的直接连接。
114.基板680可以包括用于i/o 691、缓存存储器692和其他硬件逻辑693的硬件组件。
构造685可以嵌入在基板680中以实现基板680内的各个逻辑小芯片和逻辑691、693之间的通信。在一个实施例中,i/o 691、构造685、缓存、桥和其他硬件逻辑693可以集成到基础管芯中,该基础管芯分层堆叠在基板680顶部。构造685可以是芯片互连网络或另一种形式的分组交换构造,用于在封装组件的组件之间交换数据分组。
115.在各种实施例中,封装组件690可以包括通过构造685或一个或多个桥687互连的更少或更多数量的组件和小芯片。封装组件690内的小芯片可以布置成3d或2.5d布置。一般而言,桥结构687可以用于促进例如逻辑或i/o小芯片与存储器小芯片之间的点对点互连。构造685可以用于互连各种逻辑和/或i/o小芯片(例如,小芯片672、674、691、693)与其他逻辑和/或i/o小芯片。在一个实施例中,基板内的缓存存储器692可以充当封装组件690的全局缓存、分布式全局缓存的一部分,或充当构造685的专用缓存。
116.图6d示出了根据实施例的包括可互换小芯片695的封装组件694。可互换小芯片695可以组装到一个或多个基础小芯片696、698上的标准化槽中。基础小芯片696、698可以通过桥互连697耦合,桥互连697可以类似于本文描述的其他桥互连并且可以是例如emib。存储器小芯片还可以通过桥互连连接到逻辑或i/o小芯片。i/o和逻辑小芯片可以通过互连构造通信。基础小芯片均可以支持一个或多个标准格式的槽,用于逻辑或i/o或存储器/缓存中的一个。
117.在一个实施例中,sram和电力输送电路可以制造到一个或多个基础小芯片696、698中,这些基础小芯片696、698可以关于堆叠在基础小芯片顶部的可互换小芯片695使用不同的工艺技术制造。例如,基础小芯片696、698可以使用更大的工艺技术制造,而可互换小芯片可以使用更小的工艺技术制造。一个或多个可互换小芯片695可以是存储器(例如,dram)小芯片。可以基于使用封装组件694的产品的目标功率和/或性能为封装组件694选择不同的存储器密度。另外,可以基于产品的目标功率和/或性能,在组装时选择具有不同数量类型的功能单元的逻辑小芯片。此外,可以将包含不同类型ip逻辑核的小芯片插入可互换小芯片槽,支持混合和匹配不同技术ip块的混合处理器设计。
118.示例片上系统集成电路
119.图7示出了根据本文描述的各个实施例的可以使用一个或多个ip核构造的示例集成电路和关联的图形处理器。除了所示的内容之外,可以包括其他逻辑和电路,包括附加图形处理器/核、外围接口控制器或通用处理器核。
120.图7是示出了根据实施例的可以使用一个或多个ip核构造的示例片上系统集成电路700的框图。示例集成电路700包括一个或多个应用处理器705(例如,cpu)、至少一个图形处理器710,并且可以附加地包括图像处理器715和/或视频处理器720,其中的任何一个可以是来自相同或多个不同设计设施的模块化ip核。集成电路700包括外围设备或总线逻辑,包括usb控制器725、uart控制器730、spi/sdio控制器735和i2s/i2c控制器740。此外,集成电路可以包括耦合到高清晰度多媒体接口(hdmi)控制器750和移动工业处理器接口(mipi)显示接口755中的一个或多个的显示设备745。存储可以由包括闪存和闪存控制器的闪存子系统760提供。可以经由存储器控制器765提供存储器接口,以用于访问sdram或sram存储器设备。一些集成电路附加地包括嵌入式安全引擎770。
121.图8示出了根据本公开的一个实现方式的计算设备800。计算设备800表示通信和数据处理设备,包括或表示(但不限于)智能语音命令设备、智能个人助理、家庭/办公自动
化系统、家用电器(例如,洗衣机、电视机等)、移动设备(例如,智能手机、平板计算机等)、游戏设备、手持式设备、可穿戴设备(例如,智能手表、智能手环等)、虚拟现实(vr)设备、头戴式显示器(hmd)、物联网(iot)设备、膝上型计算机、台式计算机、服务器计算机、机顶盒(例如,基于互联网的有线电视机顶盒等)、基于全球定位系统(gps)的设备、汽车信息娱乐设备等。
122.在一些实施例中,计算设备800包括任何数量和类型的其他智能设备,诸如(但不限于)自主机器或人工智能代理,诸如机械代理或机器,或与其一起工作或嵌入其中或促进任何数量和类型的其他智能设备,电子代理或机器、虚拟代理或机器、机电代理或机器等。自主机器或人工智能代理的示例可以包括(但不限于)机器人、自主车辆(例如,自动驾驶汽车、自动飞行飞机、自动航行帆船等)、自主设备自营施工车辆、自营医疗设备等)和/或类似设备。此外,“自主车辆”并不局限于汽车,而是可以包括任何数量和类型的自主机器,例如机器人、自主设备、家用自主设备等,并且与此种自主机器相关的一项或多项任务或操作可以与自主驾驶互换地引用。
123.此外,例如,计算设备800可以包括主持集成电路(“ic”)的计算机平台,诸如片上系统(“soc”或“soc”),将计算设备800的各种硬件和/或软件组件集成在单个芯片上。
124.如所示的,在一个实施例中,计算设备800可以包括任何数量和类型的硬件和/或软件组件,诸如(但不限于)图形处理单元(“gpu”或简称为“图形处理器”)816(诸如上面关于图1-7中的任一个所述的图形处理器)、图形驱动器(也称为“gpu驱动器”、“图形驱动器逻辑”、“驱动器逻辑”、用户模式驱动器(umd)、用户模式驱动器框架(umdf),或简称为“驱动器”)815,中央处理单元(“cpu”或简称为“应用处理器”)812(诸如上面关于图1-7描述的处理器或cpu)、硬件加速器814(诸如fpga、asic、重新使用的cpu或重新使用的gpu)、存储器808、网络设备、驱动器等,以及输入/输出(i/o)源804,诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等。计算设备800可以包括操作系统(os)806,用作计算设备800的硬件和/或物理资源与用户之间的接口。
125.应当理解,对于某些实现方式,可以利用比上述示例更少或更多装备的系统。因此,计算设备800的配置可以根据多个因素(诸如价格限制、性能要求、技术改进或其他情况)随实现方式而变化。
126.实施例可以被实现为以下任一者或组合:使用母板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用集成电路(asic)和/或现场可编程门阵列(fpga)。术语“逻辑”、“模块”、“组件”、“引擎”、“电路”、“元件”和“机制”可以包括例如软件、硬件和/或其组合,诸如固件。
127.计算设备800可以托管网络接口设备以提供对网络的访问,例如lan、广域网(wan)、城域网(man)、个域网(pan)、蓝牙、云网络、移动网络(例如,第三代(3g)、第四代(4g)等)、内联网、互联网等。(多个)网络接口可以包括例如具有天线的无线网络接口,该天线可以表示一个或多个天线。(多个)网络接口还可以包括例如通过网络线缆与远程设备通信的有线网络接口,该网络线缆可以是例如以太网线缆、同轴线缆、光纤线缆、串行线缆或并行线缆。
128.实施例可以被提供为例如计算机程序产品,其可以包括其上存储有机器可执行指令的一个或多个机器可读介质,该机器可执行指令在由一个或多个机器(诸如计算机、计算
机网络、或其他电子设备)执行时,可以导致一台或多台机器执行根据本文描述的实施例的操作。机器可读介质可以包括但不限于软盘、光盘、cd-rom(光盘-只读存储器)和磁光盘、rom、rams、eprom(可擦除可编程只读存储器)、eeprom(电可擦除可编程只读存储器)、磁卡或光卡、闪存或适用于存储机器可执行指令的其他类型的介质/机器可读介质。
129.此外,实施例可以作为计算机程序产品下载,其中程序可以通过以载波实施和/或由载波调制的一个或多个数据信号经由通信链路(例如,调制解调器和/或网络连接)从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
130.在整个文件中,术语“用户”可以互换地称为“观看者”、“观察者”、“演讲者”、“人”、“个人”、“最终用户”等。需要注意的是,在整个文件中,诸如“图形域”的术语可以与“图形处理单元”、“图形处理器”或简称为“gpu”互换地引用,类似地,“cpu域”或“主机域”可以与“计算机处理单元”、“应用处理器”或简称为“cpu”互换地引用。
131.需要注意的是,诸如“节点”、“计算节点”、“服务器”、“服务器设备”、“云计算机”、“云服务器”、“云服务器计算机”、“机器”、“主机”、“设备”、“计算设备”、“计算机”、“计算系统”等在本文件中可以互换使用。还需要注意的是,“应用”、“软件应用”、“程序”、“软件程序”、“包”、“软件包”等术语在本文件中可以互换使用。此外,诸如“作业”、“输入”、“请求”、“消息”等术语可以在整个文件中互换使用。
132.图9示出了根据本公开的一个实现方式的分布式计算平台900。如图9所示,平台900包括通过网络耦合的计算机系统a和b。在一个实施例中,每个系统包括存储902(例如,902a和902b)、资源管理器904(例如,904a和904b)、cpu 910(例如,910a和910b)、系统存储器912(912a和912b)和gpu 920(例如,920a和920b)。每个gpu 920包括gpu存储器922(例如,922a和922b)、管线屏障924(例如,924a和924b)、执行单元(eu)缓存926(例如,926a和926b)以及一个或多个eu 928(例如,928a和928b)。根据一个实施例,系统a和b可以被配置为通过共享工作负载的运行来执行工作负载的分布式工作负载处理(例如,渲染)。在此实施例中,系统可以使用本地gpu 920渲染单个工作负载并且请求另一个系统为工作负载执行附加计算。例如,系统a可以使用gpu 920a渲染工作负载并且请求系统b使用来自gpu 920a的输出来执行附加计算。
133.在一个实施例中,资源管理器904被实现以使能分布式渲染。图10示出了资源管理器904的一个实施例。资源管理器904包括资源映射表1010,其用于跟踪从存储902加载的每个静态资源或由cpu 910或gpu 920更新的动态资源的元数据1015。为了准备分布式渲染,系统(例如,系统a)生成映射表1010。如本文所用的,资源被定义为系统a和/或系统b内的物理或虚拟组件(例如,存储器、缓存、eu等)。
134.图11示出了由资源管理器904管理的资源元数据的一个实施例。源标识符(或源id)表示来自源系统(例如,系统a)的资源的本地id(或句柄),而目的地id是在为该资源创建别名gpu资源时,在目的地系统(例如,系统b)上分配的标识符。静态/动态标志指示资源是否是只读静态资源,或者该资源是否可以由应用动态地更新。页面#指向需要从源系统复制到目的地系统的页面列表。源提交#表示源系统提交的最后写入操作(或写入)的id。源完成#表示源系统(例如,栅栏计数器)完成的最后写入操作。类似地,目的地提交#表示目的地系统提交的最后写入的id,目的地完成#表示目的地系统完成的最后写入。延迟信息基于将数据从源系统传送到目的地系统的往返延迟被更新。
135.根据一个实施例,在源系统中执行的应用可以提交api命令流以将到目的地源系统的工作负载连同值(例如,源最后提交的#值)一起处理,同时源系统中的gpu 920正在生成要传送到目的地系统的数据。在从源系统接收到api命令流后,目的地系统分析处理命令缓冲区所需的资源,并确定任何资源的源提交的#值是否小于本地元数据条目。如果是,则目的地系统插入屏障,以在将工作负载提交给3d引擎或计算队列之前,等待从源系统接收到资源,然后从源系统接收到api流。目的地系统中的gpu 920将继续执行命令队列中的任何先前命令。一旦从源系统接收到所需资源后,目的地系统将资源复制到目的地系统的本地副本,并信号通知3d引擎或计算队列继续。图12示出了执行上述过程的计算平台的另一个实施例。
136.尽管以上描述为单独的系统组件,但是其他实施例可以以在各种配置中实现的资源管理器为特征。例如,图13示出了包括不同资源管理器配置的计算平台的又一实施例。如图13所示,系统a-d经由交换机1310耦合,并且包括一个或多个cpu、gpu或网络接口控制器(nic)中包括的资源管理器904。
137.图14a和图14b是示出了用于执行分布式渲染的过程的一个实施例的流程图。在处理块1402(图14a),在源系统(例如,系统a)中执行(或运行)的应用生成资源(例如,r1和r2)。在处理块1404,源资源管理器(例如,rma)生成用于r1(systema-r1-metadata)和r2(systema-r2-metadata)的资源元数据。在处理块1406,rma向目的地系统(例如,系统b)发送一个(或多个)调用以生成用于r1和r2的影子资源。在处理块1408,目的地资源管理器(例如,rmb)在其gpu内生成影子资源。在一个实施例中,影子资源包括远程资源的本地gpu副本。
138.在处理块1410,rmb生成用于r1(systemb-r1-metadata)和r2(systemb-r1-metadata)的资源元数据。在处理块1412,rmb向r1和r2的rm-a返回目的地id。在处理块1414,rma设置r1和r2的目的地id。在处理块1416,应用调用源系统以在gpu中运行task1(任务1)并将结果存储在r1中。在处理块1418,在systema-r1-metadata中源最后提交的#被递增。在处理块1420,应用调用源系统来执行任务2(例如,读取r1并将结果计算给r2)。在处理块1422,将r1的源最后提交的id发送给rmb。
139.在处理块1424(图14b),rma将任务2连同rl的最后提交的#一起发送到rmb以提交到目的地gpu。但是,此时资源尚未被更新。在处理块1426,执行rmb处理。在一个实施例中,rmb处理包括在systemb-r1-metadata中设置r1的源最后提交的id,在确定r1需要被更新(例如,源提交的#小于源完成#)时,提交gpu 3d队列中的等待命令,将task2(任务2)提交给gpu,并为r1递增目的地提交的#。
140.在处理块1428,执行rma处理。在一个实施例中,rma处理包括在task1已经完成之后更新systema-r1-metadata中的源完成#并且将更新的r1流发送到rmb。在处理块1430,rmb更新systemb-r1-metadata中的“源完成#”。在处理块1432,rmb向其gpu发出copyresource和signal(复制资源和信号)。在处理块1434,目的地gpu在复制队列上执行signal时执行task2。在处理块1436,一旦task2完成,rmb更新目的地完成的#。在处理块1438,rmb将任务2的结果(更新的r2)连同更新的元数据一起发送到rm-a。在处理块1440,源系统报告task2完成。图15是示出了资源管理过程的一个实施例的序列图。
141.平台安全
142.对于系统a和b中的机密gpu计算,需要确保卸载到gpu和在gpu内执行期间的用户数据的机密性和完整性,以及gpu控制平面(例如、命令队列和相关的数据结构)的完整性。系统软件(诸如设备驱动器)、os(操作系统)和vmm都在信任边界之外。根据一个实施例,系统应用和用户空间gpu堆栈(运行时、驱动器和资源管理器)托管在可信执行环境tee内,类似于上面参考图2讨论的。
143.然而,为了额外保护平台900中cpu-cpu和cpu-gpu通信的机密性和完整性,必须在各个端点之间建立安全通道。因此,在建立安全通道之前,动态组合系统中的各种节点(cpu和gpu)证明依赖于节点来执行各种计算任务的应用。根据一个实施例,平台中的每个节点(例如,cpu 910a、cpu 910b、gpu 920a和gpu 920b)直接彼此通信并相互证明建立安全通道。因此,cpu 910a、cpu 910b、gpu 920a和gpu 920b都在它们之间建立了安全通道。
144.一旦执行了证明,系统中的一个节点(例如,cpu 910a)被指定为主节点。在此实施例中,主节点为系统中的每个节点生成节点id。主节点还生成主密钥,该主密钥通过先前建立的安全通道传播到系统中的各个节点。例如,cpu 910a可以分别为cpu 910a、cpu 910b、gpu 920a和gpu 920b生成节点id 1、2、3和4。在又一实施例中,同样主节点与gpu 920a和cpu 910b共享主密钥,cpu 910b又与gpu 920b共享主密钥。因此,每当节点(i)需要与该系统中的节点(j)通信时,节点(i)都会通过使用密钥导出函数(kdf)从主密钥k和接收节点(j)的节点id导出的密钥kj加密(并完整性保护)要通信的数据。
145.基于图9中描述的架构,当cpu 910a将命令写入gpu 920a的3d队列时,cpu 910a指示920a资源r1的预期接收者是gpu 920b(标识的节点id 4)。在cpu 910a和gpu 920a之间流动的命令队列和数据使用从k导出的密钥k2(gpu 920a的id为2)保护。因此,当gpu 920a产生r1时,它使用密钥k4(用于gpu 920b)加密r1。资源通过cpu 910a传送到cpu 910b的主机存储器上,而无需任何解密和重新加密。最后,当cpu 910b写入gpu 920b的复制队列时,它使用密钥k4加密并完整性保护命令。复制命令引用cpu 910b主机存储器中的r1,并在复制到gpu 920b存储器时使用k4自动解密r1。
146.类似地,gpu 920b上的3d队列包括指示gpu 920b所生成的结果必须用密钥kl加密的命令,因为预期接收者是cpu 910a。一旦gpu 920b完成计算,则结果可以被传送到cpu 910a而无需在cpu 910b上进行额外的加密操作。从cpu 910a流向cpu 910b的资源元数据用k2加密,而从系统b到a的任何遥测数据都用k1加密。因此,分布式异构系统中数据的机密性和完整性以可扩展且有效的方式被保护。
147.已经讨论过表示用于实现系统的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是由计算机处理器执行的一个或多个可执行程序或可执行程序的(多个)部分。该程序可以以存储在非暂时性计算机可读存储介质(诸如cd-rom、软盘、硬盘驱动器、dvd、蓝光光盘或与处理器相关联的存储器)上的软件实施,但是整个程序和/或其部分可以替代地由处理器以外的设备执行和/或以固件或专用硬件实施。此外,虽然示例程序是参考本文各个附图中所示的流程图来描述的,但是可以替代地使用实现示例计算系统的许多其他方法。例如,块的执行顺序可以被改变,和/或所描述的一些块可以被改变、消除或组合。附加地或替代地,任何或所有块可以由一个或多个硬件电路(例如,分立和/或集成模拟和/或数字电路、fpga、asic、比较器、运算放大器(op-amp)、逻辑电路等)来实现,该一个或多个硬件电路被构建为在不执行软件或固件的情况下执行
相应的操作。
148.本文描述的机器可读指令可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等中的一种或多种存储。本文描述的机器可读指令可以被存储为可以用于创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码的表示等)。例如,机器可读指令可以被分段并存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可以利用安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重新分配、编译等中的一种或多种,以使其由计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分单独压缩、加密并存储在单独的计算设备上,其中这些部分在解密、解压缩和组合时形成可执行指令集合,该指令集合实现诸如本文描述的程序。
149.在另一个示例中,机器可读指令可以以它们可以被计算机读取的状态存储,但是利用添加的库(例如,动态链路库(dll)、软件开发工具包(sdk)、应用编程接口(api)等,以便在特定计算设备或其他设备上执行指令。在另一示例中,机器可读指令可以在机器可读指令和/或相应程序可以全部或部分执行之前被配置(例如,设置存储、数据输入、网络地址记录等)。因此,所公开的机器可读指令和/或相应程序旨在涵盖此类机器可读指令和/或程序,而不管机器可读指令和/或程序在储存或以其他方式静止或传输的特定格式或状态。
150.本文描述的机器可读指令可以由任何过去、现在或未来的指令语言、脚本语言、编程语言等来表示。例如,机器可读指令可以使用以下语言中的任一种来表示:c、c 、java、c#、perl、python、javascript、超文本标记语言(html)、结构化查询语言(sql)、swift等。
151.如上所述,图5和图6的示例过程可以使用存储在非暂时性计算机和/或机器可读介质(诸如硬盘驱动器、闪存、只读存储器、光盘、数字多功能磁盘、缓存、随机存取存储器和/或任何其他存储设备或存储磁盘,在任何其他存储设备或存储磁盘中信息存储任意持续时间(例如,延长的时间段、永久地、短暂的实例、用于临时缓冲和/或缓存信息))上的可执行指令(例如,计算机和/或机器可读指令)来实现。如本文所使用的,术语非暂时性计算机可读介质被明确地定义为包括任何类型的计算机可读存储设备和/或存储盘并且不包括传播信号且不包括传输介质。
152.本文中使用的“包括”和“包含”(及其所有形式和时态)用作开放式术语。因此,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、包括的、包含的、具有等)作为序言或在任何类型的权利要求叙述中时,应理解为在不超出相应权利要求或引用的范围的情况下,可以存在附加元素、术语等。如本文所用的,当短语“至少”用作例如根据权利要求的序言中的过渡术语时,它以与术语“包括”和“包括”相同的方式是开放式的。
153.术语“和/或”在例如以诸如a、b和/或c的形式使用时,是指a、b、c的任何组合或子集,诸如(1)单独的a,(2)单独的b,(3)单独的c,(4)a与b,(5)a与c,(6)b与c,以及(7)a与b和c。如本文在描述结构、组件、项目、对象和/或事物的上下中使用的,短语“a和b中的至少一个”旨在指包括(1)至少一个a、(2)至少一个b、以及(3)至少一个a和至少一个b中的任一个的实现方式。类似地,如本文在描述结构、组件、项目、对象和/或事物的上下文中使用的,短语“a或b中的至少一个”旨在指包括(1)至少一个a、(2)至少一个b、以及(3)至少一个a和至少一个b中的任一个的实现方式。如本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的,短语“a和b中的至少一个”旨在指包括(1)至少一个a、(2)至少一个
b、以及(3)至少一个a和至少一个b中的任一个的实现方式。类似地,如本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的,短语“a或b中的至少一个”旨在指包括(1)至少一个a、(2)至少一个b、以及(3)至少一个a和至少一个b中的任一个的实现方式。
154.如本文所用的,单数引用(例如,“一”、“一个”、“第一”、“第二”等)不排除复数。如本文所用的,术语“一”或“一个”实体是指该实体中的一个或多个。术语“一”(或“一个”)、“一个或多个”和“至少一个”在本文中可以互换使用。此外,尽管单独列出,但多个装置、元件或方法动作可以由例如单个单元或处理器来实现。此外,虽然单独的特征可以被包括在不同的示例或权利要求中,但这些可以被组合,并且包括在不同的示例或权利要求中并不意味着特征的组合是不可行的和/或有利的。
155.描述词“第一”、“第二”、“第三”等在本文中在识别可被单独提及的多个元素或组件时使用。除非根据其使用上下文另有说明或理解,否则此类描述词无意赋予列表中的优先级、物理顺序或排列或时间排序的任何含义,而仅用作分别指代多个元素或组件的标签以便于理解所公开的示例。在一些示例中,描述词“第一”可以用于指详细描述中的元素,而相同元素可以在权利要求中用不同描述词(诸如“第二”或“第三”)来指代。在此种情况下,应当理解,此种描述词仅用于便于引用多个元素或组件。
156.下面示例涉及进一步的实施例。一些实施例涉及示例1,其包括计算平台,该计算平台包括一种计算平台,包括:第一计算机系统,该第一计算机系统包括第一图形处理单元即gpu;耦合到第一计算机系统的网络;以及第二计算机系统,该第二计算机系统通过网络耦合到第一计算机系统并且包括第二gpu,其中第一计算机系统和第二计算机系统被配置为在第一gpu和第二gpu之间执行图形工作负载的分布式处理。
157.示例2包括示例1的主题,其中第一计算机系统包括源系统并且第二计算机系统包括目的地系统。
158.示例3包括示例1和2的主题,其中源系统和目的地系统均包括资源管理器,该资源管理器包括映射表以跟踪与要在源系统和目的地系统处处理的资源相关联的元数据。
159.示例4包括示例1-3的主题,其中在源系统中执行的应用生成资源并且源资源管理器生成与资源相关联的元数据。
160.示例5包括示例1-4的主题,其中源系统向目的地系统发送调用以在第二gpu中生成与资源相对应的影子资源。
161.示例6包括示例1-5的主题,其中目的地系统生成影子资源并且目的地资源管理器生成与影子资源相关联的元数据。
162.示例7包括示例1-6的主题,其中应用调用源系统以在第一gpu处执行第一任务并将结果存储在第一资源中。
163.示例8包括示例1-7的主题,其中应用调用源系统以基于第一资源执行第二任务并将结果存储在第二资源中。
164.示例9包括示例1-8的主题,其中源资源管理器将第二任务发送到目的地资源管理器。
165.示例10包括示例1-9的主题,其中第二任务在第二gpu处执行并且目的地资源管理器将结果发送到源资源管理器。
166.一些实施例涉及示例11,其包括促进计算平台中的多个节点之间的安全通信的方法,该方法包括在多个节点中的第一节点处确定多个节点中的要接收资源数据的第二节点,使用从主密钥和与第二节点相关联的节点标识符导出的密钥加密资源数据,并将加密的资源数据发送到第二节点;使用从主密钥导出的密钥和与第二节点相关联的节点标识符来加密资源数据;以及将加密的资源数据发送到第二节点。
167.示例12包括示例11的主题,其中密钥是通过密钥导出函数生成的。
168.示例13包括示例11和12的主题,进一步包括从多个节点中选择主节点。
169.示例14包括示例11-13的主题,进一步包括在主节点处生成主密钥。
170.示例15包括示例11-14的主题,进一步包括主节点向多个节点中的每一个发送主密钥。
171.示例16包括示例11-15的主题,进一步包括在主节点处生成与多个节点中的每一个相关联的节点标识符。
172.一些实施例涉及示例17,其包括其上存储有指令的至少一个计算机可读介质,该指令在由一个或多个处理器执行时,使处理器:在多个节点中的第一节点处确定多个节点中的要接收资源数据的第二节点;使用从主密钥导出的密钥和与第二节点相关联的节点标识符来加密资源数据;以及将加密的资源数据发送到第二节点。
173.示例18包括示例17的主题,其上存储有指令,该指令在由一个或多个处理器执行时,进一步使处理器从多个节点中选择主节点。
174.示例19包括示例17和18的主题,其上存储有指令,该指令在由一个或多个处理器执行时,进一步使处理器:在主节点处生成主密钥;以及向多个节点中的每一个发送主密钥。
175.示例20包括示例17-19的主题,其上存储有指令,该指令指令在由一个或多个处理器执行时,进一步使处理器在主节点处生成与多个节点中的每一个相关联的节点标识符。
176.前述说明书和附图应被视为说明性的而非限制性的。本领域技术人员可以理解,在不脱离所附权利要求中阐述的特征的更广泛的精神和范围的情况下,可以对本文描述的实施例进行各种修改和改变。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献