错开的软件同步的制作方法

文档序号:26139198发布日期:2021-08-03 14:22阅读:88来源:国知局
错开的软件同步的制作方法

相关申请的交叉引用

本申请要求于2020年1月31日提交的标题为“用于在流服务器中提供更高服务质量的交错式软件vsync(staggeredsoftwarevsyncforhigherqualityofserviceinstreamingservers)”的美国临时专利申请序列号62/968,716的优先权,其全部内容出于所有目的通过引用并入本文。



背景技术:

最近提出了流解决方案,其使得服务器具有均能够流式传输到多个客户端的特征。根据建议的实现方式,服务器的处理单元具有支持64个或更多同时客户端的容量。此使用模型允许拥有移动设备的客户更全面地与服务器进行远程交互。虽然处理单元(例如,中央处理单元(cpu)和图形处理单元(gpu)的组合)的原始计算能力可能足以服务所有客户端,但在某些情况下,由于对资源的许多潜在的同时请求,提供给各个客户端的服务质量可能会不一致或不理想。

一种先前的方法使用容器对象,并为每个客户端或终端用户运行一个体操作环境容器。容器可以是完整的操作系统(os),并且客户端将与os进行交互,就好像客户端正在与物理系统进行交互一样,而不是容器充当系统的虚拟表示。尽管客户端可以像真实的专用系统那样与服务器进行交互,但系统上可能运行着多个容器,并且每个容器都可以具有为该容器分配的单独的显示帧缓冲区。另外,由于内容的查看是远程进行的,因此在服务器上执行的os容器可能没有附加的显示器。尽管没有附加的物理显示器,但是能够以30fps或60fps运行游戏的传统想法仍然可以正常工作。否则,单个容器可能会完全占用一个或更多个处理单元,每秒运行数千帧(fps),而不会给客户端或终端用户带来任何好处。为了解决该问题并允许操作系统中的所有组件无缝地工作,以期望的帧速率(例如30/60hz)生成伪垂直同步(“vsync”)信号。

在处理单元上执行的工作由此vsync信号驱动,即使在单个gpu和/或单个应用程序附接到物理监视器的情况下也是如此。在典型的非流式系统中,在接收到每个vsync信号后,便会执行vsync操作,在此期间交换渲染缓冲区和可显示缓冲区。前一个显示缓冲区对于用于执行下一帧的“渲染”变为“空闲”。显示缓冲区和渲染缓冲区的交换以vsync间隔完成,以确保动画无撕裂。渲染缓冲区变为可用后,操作系统和/或驱动器将释放应用程序渲染循环以开始合成动画的下一帧。

尽管软件vsync以类似的方式工作,但是在多流式系统中,这种方法的一个问题是,由于所有流容器(streamingcontainer)都独立生成(和调度)自己的vsync,因此vsync可以全部彼此对齐或可以彼此非常接近(在彼此几毫秒之内)。由于容器可能正在执行相同的代码,并且它们的软件同步调度计算可能遵循相同的算法,因此这也可能发生。如果所有流容器调度(schedule)它们的vsync操作在同一时间执行,则所有应用程序将在同一时间解除阻塞,并将开始同时组成其下一帧。如果系统中的处理器数量等于应用程序的数量(例如,在传统的一对一客户端-服务器配置中),这可能仍然不错。但是,在多流解决方案中,处理器通常比客户端或应用程序实例少得多。例如,可能只有八个cpu为64个不同的客户端提供服务。这意味着,在某些情况下,没有足够的cpu来一起调度所有应用程序实例,即使它们应同时解除阻塞。这可能会导致某些容器的vsync通知被延迟。此外,某些容器中的应用程序在cpu上的调度要比软件vsync晚得多,这可能导致某些应用程序可能无法在下一个vsync之前完全组成帧,从而导致丢失帧。这可能会导致不稳定的终端用户体验。

附图说明

将参考附图描述根据本公开的各种实施例,其中:

图1示出了根据至少一个实施例的用于提供内容的系统;

图2示出了根据至少一个实施例的示例任务同步;

图3示出了根据至少一个实施例的交错任务同步;

图4a和图4b示出了根据至少一个实施例的同步信号交错的示例;

图5示出了根据至少一个实施例的用于管理多个流的任务的过程;

图6示出了根据至少一个实施例的用于确定各个流的偏移的过程;

图7示出了根据至少一个实施例的示例数据中心系统;

图8示出了根据至少一个实施例的计算机系统;

图9示出了根据至少一个实施例的计算机系统;

图10示出了根据一个或更多个实施例的图形处理器的至少部分;以及

图11示出了根据一个或更多个实施例的图形处理器的至少部分。

具体实施方式

根据各种实施例的方法可以减轻针对多个并发工作负载的调度问题。在至少一个实施例中,这可以包括用于数据或内容流传输的方法,该方法使流服务提供商能够通过减轻多流平台固有的调度问题来向流客户端提供更高和更一致的终端用户体验质量。这可以包括例如错开或偏移同步信号,或基于一个或更多个同步信号提供偏移或错开命令,用于可能另外尝试使用处理资源的固定组同时或接近同时处理的工作负载或任务。

图1示出了可用于实现各种实施例的各方面的示例计算机系统100。在该示例中,内容服务器102可以通过至少一个网络140向一个或更多个客户端设备150、160提供内容。该内容可以由一个或更多个应用程序104、106、108、110或一个或更多个应用程序的实例生成。例如,可能有一个为每个客户端设备提供内容的应用程序,但是每个客户端设备可能具有该应用程序的专用实例,例如可以在应用程序容器或虚拟机中运行。在内容服务器102中,存在固定数量的处理器114、116、118,其可用于执行这些应用程序的任务或过程数据。这些处理器可以是任何适当的处理组件,例如中央处理单元(cpu)、图形处理单元(gpu)或其组合。应当理解,为简单起见,除非另外具体说明,否则“应用程序”还可以指代本文所使用的应用程序的实例或“应用程序实例”。在操作中,应用程序104可以请求执行任务,其中该请求可以被定向到资源管理器112,其可以选择可用处理器来执行该任务。然后可以将请求发送到选定的处理器,该处理器可以执行任务并生成适当的输出以发送到相应的客户端设备。在至少一些应用程序中,例如对于图形应用程序,可以仅以特定的间隔或时间点发送数据,使得可以首先将输出发送到数据管理器120以将其高速缓存在本地缓冲区122中。在适当的时间,该数据然后可以从缓冲区发送到相应的客户端设备,诸如如传输管理器124或其他这样的系统或服务指示的通过一个或更多个网络140流传输到该客户端设备。在该示例性布置中,客户端设备可以包括各种类型的计算设备,例如可以包括台式计算机,笔记本计算机,机顶盒,流媒体播放器,游戏机,智能手机,平板计算机,虚拟现实(vr)头戴式耳机,增强现实(ar)护目镜,可穿戴计算机或智能电视。一个或更多个网络104可以包括至少一个有线或无线网络,例如可以包括互联网,以太网,局域网(lan),对等网络,连接或蜂窝网络,以及其他此类选项。

在这样的内容服务器102中,可能有需要处理的应用程序比提供该处理的处理器更多。在这样的情况下,资源管理器112可以基于各种分配或平衡算法或方法来管理向处理器的任务分配,如可以包括fifo缓冲区或其他这样的方法。如果处理器可用,则可以在收到这些请求时将这些请求发送到处理器进行处理。但是,当并发请求或待处理请求比这些处理器可以处理的请求更多时,资源管理器可能会使得这些请求中的至少一些请求被延迟处理,直到此类处理容量可用为止。如果这些任务是时间紧迫的,这可能会导致不可接受或不期望的性能下降。例如,在图形应用程序中,当一个或更多个帧的数据不能及时完成时,例如在显示设备的刷新周期(这可能与客户端设备之一的显示设备的帧速率相对应)期间,这可能会导致丢帧。

根据各种实施例的方法可以尝试使至少部分是由于系统上存在多个并发工作负载导致的调度延迟最小化。作为示例,这样的工作负载可以对应于将作为视频游戏或内容流服务的一部分被发送到各个客户端设备的视频帧。如所提到的,新的内容帧由各个显示设备以为各个设备确定的帧速率显示,例如30、60或90帧每秒(fps)。在这种方法中,下一帧的内容必须不迟于下一帧的显示时间接收,对于60fps,这对应于大约16.67ms的刷新周期。在各种系统中,这是通过将视频帧数据放入缓冲区中,然后按规则的间隔(对应于刷新周期)从该缓冲区发送帧数据来实现的。这意味着,在下一个传输时间之前数据必须全部都在缓冲区中,并且在已从缓冲区传输了先前帧的数据之前,无法将后续帧的数据放入缓冲区中。各种系统通过使用时序信号(诸如vsync信号)来管理该时序,时序信号用于使应用程序(诸如视频游戏)的帧速率与显示监视器的刷新速率同步。vsync信号可用于将帧速率输出限制为显示器的刷新速率。

在各种情况下,处理帧的数据的时间将比刷新时间少得多,例如在16.67ms刷新时间内处理数据的时间可能对应于大约2ms或4ms。在一种可能的情况下,显示设备可以全部同步到基本上相同的时间,例如,各种显示器的vsync信号全部基本上同时接收到。图2示出了针对有限数量的应用程序或实例的这种情况的曲线图200。如上所述,这些任务不必与图形或视频相关,并且可以与可以在特定时间或间隔等执行的任何计算机化任务相关。在此示例中,每个“周期”可以指图形环境中的刷新周期。如果同步信号都相似,则应用程序可能都希望基本上同时执行其任务,如果应用程序的数量超过可用于处理那些任务的处理器的数量,则将无法完成。即使仅应用程序的子集如此同步,这仍可能导致任务在不同时间超出处理能力,这可能导致这些任务中的至少一些任务被延迟。如果随后将这些任务中的任何一个延迟到超过目标结果时间,例如下一个刷新周期,则这可能会导致丢弃数据或数据丢失,或其他此类性能问题。

在一个示例中,客户端应用程序被释放以在一个周期的开始附近工作,并且所有客户端都可以请求同时开始执行。应当注意的是,它不限于可能希望同时运行的客户端,因为系统中的其他部分(例如,操作系统窗口管理器)可能由相同或相似的事件驱动。如图所示,可能有来自四个不同容器的请求排列它们的执行。由于资源管理器可以是单线程的,所以接收到的对系统资源的任何请求(例如,存储器分配)都将导致客户端不得不彼此等待。

在至少一些实施例中,可以利用时间分片方法,该时间分片方法可以利用以下事实:对于应用程序,在每个刷新周期内存在某些部分,在该部分期间该应用程序通常将不需要处理容量。在至少一个实施例中,同步信号可以被错开,或者被施加偏移,使得这些任务中的至少一些可以在不同的时间开始,以减少所需的处理容量的量以及使工作负载随时间平滑。

图3示出了图2的工作负载的示例图300,但应用了错开。在此示例图中,可以看出,通过错开这些应用程序的同步信号,没有两个应用程序请求同时处理其工作负载。尽管在许多情况下可以延迟图2的方法中的处理,图3中这种交错方法提供了对处理时序的更多控制。尽管可能会有一些初始的同步信号错开,但这些信号可能会随时间漂移并丢失至少一些这种错开,这可能导致应用程序仍请求同时完成工作。

在至少一个实施例中,这可以用于最小化由于多流式系统中的并发垂直同步信号或“vsync”而引起的调度延迟。实施例包括注释的至少两个方面。第一方面是通过使初始vsync偏移来使软件vsync彼此错开。第二方面是随时间(诸如连续地或周期性地)重新调整软件vsyncs,以使得每个vsync相对于其他应用程序、应用程序容器或要执行的处理任务的其他源保持相同的相对偏移。

何时生成vsync的示例计算是各种容器何时(当前时间%vsync周期)得出零值。如果每个容器执行相同的精确计算,则这些计算的时序将全部对齐。但是,如前所述,这些任务的对齐会导致诸如丢失帧之类的问题。因此,至少一个实施例可以向至少一个软件vsync时间增加偏移(offset)。例如,如果下一个vsync时间计算为:

下一个vsync时间=(当前时间/显示周期)*显示周期+显示周期,那么容器n的vsync时间可以计算如下:

下一个vsync时间_n=下一个vsync时间+偏移_n

其中为第n个容器选择偏移_n来分发客户端,并且为每个容器唯一地计算偏移_n。

可以在各种实施例的范围内利用用于计算这种偏移的不同方法。一种这样的方法利用随机化器来确定随机偏移,其中将基于对于应用程序、实例或容器(例如,当前时钟时间的最低位)唯一的一些数据(例如,参数)来初始化用于随机数的种子。在这种方法中,客户端不会依赖任何全局信息。

根据另一实施例的方法可以通过利用以下观察来计算初始偏移:由于客户端的数量是有限的,因此可以通过错开客户端并具有更可预测的分布(例如图3中所示的分布)来实现分布。例如,如果只有两个客户端,则如果第一客户端(实例id为0)在周期的开始时的某个时间0启动,则第二客户端(实例id为1)将理想地在周期的中间或1/2*周期时间开始。在此时序下,两个客户端在给定周期内关于时序将彼此异相。如果添加了第三客户端(实例id为2),则不是尝试调整偏移,而是可以向第三客户端应用偏移,将其放置在前两个客户端之间,例如1/4*周期时间。然后可以类似地将第四客户端添加到3/4*周期时间。在这种方法中,客户端的开始时间之间的间隔会自动减小,而无需重新调整先前的客户端集。在这种方法中,每个客户端都可以从中央资源管理器或其他替代装置中请求“实例id”,并且可以使用该实例id来确定其偏移。可以通过利用数字的二进制表示来完成偏移的计算,如下所示:

图4a示出了表格400,其示出了使用这种方法的各种实例或实例id的偏移。如所提到的,在一些实施例中,这些值可以是预定的,并且可以适当地分配标识符。

图4b提供了另一个曲线图450,其示出了根据图4a的表的这些实例在周期的持续时间内的间隔和排序。在至少一个实施例中,这种“二的幂”方法使得新流能够在vsync间隔中的分布良好的位置处动态地添加到系统中,而不会影响现有流的调度。如图4b所示,在vsync间隔(表示为0.0至1.0之间的范围)中,系统中的第一流可以具有以最早的可用时隙(例如,vsync间隔的开始(例如,时间=t1))发送的vsync信号。第二流的偏移为vsync间隔的1/2(例如,时间=t2)。被添加的每个后续流将被调度为在vsync间隔内的两个已调度vsync之间最大剩余子间隔之间的中点接收vsync信号。

在至少一个实施例中,这样的过程还可以尝试维持客户端之间的这种相移。可以记住初始偏移,其中该偏移可以通过随机方法或二进制除法或其他此类方法计算得出。由于这是软件生成的vsync信号,因此由于诸如os调度延迟之类的因素,该信号可能不够精确。如果某个进程仅在从当前位置偏移的时间段内生成下一个vsync,则由于时间的流逝,这些客户端最终可能不再错开。为了保持错开,可以在前面描述的两个方程式中继续使用初始偏移来计算下一个vsync。在至少一个实施例中,下一个vsync时间可以通过以下方式计算:

下一个vsync时间=(当前时间/显示周期)*显示周期+显示周期

下一个vsync时间_n=下一个vsync时间+偏移_n

继续将公式不仅用于初始同步,而且还用于后续的vsync,可确保终端用户的体验不会随着时间的流逝而降低。

在至少一个实施例中,这种方法可以用于使单个服务器能够同时将内容流传输到多个客户端。在一个实施例中,服务器的cpu和gpu可以具有足够的能力来启用六十四个或更多个同时的客户端。此使用模型可以使具有移动设备的客户(例如)与游戏服务器进行远程交互。尽管cpu和gpu的原始功能足以服务所有客户端,但对各个客户端的服务质量却非常重要,这种错开的方法可以帮助随着时间的流逝确保这种服务质量。

在至少一个实施例中,系统可以利用android容器对象并为每个终端用户或客户端设备运行一个体android容器。容器可以代表一个完全运行的android系统,每个容器都具有为该容器分配的单独的显示帧缓冲区。在至少一些实施例中,任务处理的管理可包含将surfaceflinger用于android应用程序(或用于windows的显示窗口管理器(dwm)等)。诸如surfaceflinger之类的组件可负责将所有应用程序和系统表面组合到单个缓冲区中,其被提供以在客户端设备上显示等。某些实施例可以利用surfaceflinger中的discsync模块定期与硬件重新同步。利用这样的模块可以防止系统必须针对每个帧发送vsync信号。在至少一些实施例中,surfaceflinger内的接口可用于传送vsync信号,并且在一些实施例中,可使用硬件编辑器(composer)模块生成此信号以模拟物理显示信号。在至少一些实施例中,这些偏移将相对于系统时钟信号。

由于内容的查看是远程进行的,因此android容器将没有附加的显示器。即使没有附加的物理显示器,传统的能够以30fps或60fps的速度运行游戏的想法也可以很好地起作用,因为否则单个容器可能会占用gpu完全运行数千帧,而对终端用户没有任何好处。为了使android系统中的所有组件无缝运行,将以30hz或60hz或其他所需的帧速率生成伪vsync信号。

在至少一个实施例中,在cpu和gpu上完成的工作由该vsync信号驱动。即使在单个gpu或单个应用程序附接到物理监视器的情况下也是如此。在用于非流式系统的实际系统中,在vsync处交换渲染缓冲区和可显示缓冲区。前一个显示缓冲区变为“空闲”于“渲染”下一帧。显示缓冲区和渲染缓冲区的交换是在vsync处完成的,以确保动画无撕裂。一旦渲染缓冲区变为可用后,操作系统或驱动器将释放应用程序渲染循环以开始合成动画的下一帧。

对于流架构中显示缓冲区和渲染缓冲区的交换序列,一个问题是,由于所有流容器都在生成自己的vsync信号,因此vsync可以全部对齐或彼此之间相差几毫秒。这也很可能发生,因为这些容器正在执行相同的代码,并且它们的软件同步计算可能遵循相同的算法。如果所有流容器都同时生成其vsync,则所有应用程序将在同一时间被解除阻塞,以开始组成其下一帧。如果系统中的处理器数量等于应用程序数量,则可能仍然很好。但是,在典型的流解决方案中,cpu少于客户端。例如,可能只有八个cpu为64个客户端提供服务。这意味着即使同时取消了所有应用程序的阻塞,也没有足够的cpu来将所有应用程序一起调度。这会导致某些应用程序在vsync之后调度得很晚,并且可能导致某些应用程序可能无法在下一个vsync之前完全组成帧。这可能会导致丢失帧,从而导致终端用户体验不安。

但是,如前所述,此类方法可以在图形和视频应用程序外部使用,并且可以为其中任务被分配或调度为由一个或更多个处理器处理的任何系统,特别是其中多个并发任务可能超过处理器数量的系统提供好处。对于流工作负载,时序很重要,这样流工作负载可可以从此类方法中获得特别的益处。在通常将硬件信号用于同步的系统中,这些信号可以在软件中进行仿真,该软件可以使这些信号错开或应用偏移以确保这些信号的时序至少有一定分布。如上所述,可以将偏移应用于来自任何适当源的任务,例如应用程序、进程、容器、虚拟机、系统、服务等。

图5示出了根据各种实施例的用于管理多流式系统中的调度的示例过程500。应当理解,对于本文提出的该过程和其他过程,除非另外特别说明,否则在各种实施例的范围内可以有以相似或替代顺序或至少部分并行地执行的附加、更少或替代步骤。在该示例中,分配502多个个体流以用于经由多流式系统提供内容。在至少一个实施例中,每个流可以将内容发送到不同的客户端设备,并且还可以从本文讨论的各个应用程序、实例或容器接收该内容。可以为这些个体流计算504初始偏移值(例如初始vsync偏移),其中至少一些不同的流将具有在同步间隔内分配的不同的偏移。在至少一个实施例中,每个流将具有唯一的偏移。然后可以为各个流存储506这些初始vsync偏移。适当地,可以使用相应的vsync偏移为各个流调度508到下一个vsync的时间。对于各个流,当针对个体流已经经过了与到下一个vsync的时间相等的持续时间时,可以发送510执行vsync操作的信号。

图6示出了根据至少一个实施例的可用于确定这些偏移的示例过程600。在该示例中,确定602多流式系统的各个流,其中这些流具有同步周期。为了分配偏移,例如vsync偏移,选择604第一流并且分配第一偏移,在这种情况下,第一偏移对应于第一流的0偏移。可以为除流之外的实体或对象分配偏移,这可能与其他通信信道或路径相对应。对于多个流,可以选择608下一个流,其中该下一个流可以是在已经分配了其他偏移之后的新添加的流。对于该流,可以确定610在同步周期内已经分配的偏移之间的最大窗口。如果存在不止一个这样的周期,则该过程可以选择遇到的第一个这样的周期。然后可以向该流分配612同步偏移,其中该偏移对应于所确定的窗口的中点。可以确定614是否有更多的流要分配偏移,如果是,则则该过程可以继续进行下一个步骤。如上所述,当将附加流添加到系统进行管理时,可能会发生这种情况。如果所有当前流都分配有偏移,则可以存储616那些偏移分配以用于对那些各个流执行后续操作。如本文中所讨论的,这些偏移可以随时间维持618以解决漂移或其他这样的因素。

数据中心

图7示出了示例数据中心700,其中可以使用至少一个实施例。在至少一个实施例中,数据中心700包括数据中心基础设施层710、框架层720、软件层730和应用层740。

在至少一个实施例中,如图7所示,数据中心基础设施层710可以包括资源协调器712、分组的计算资源714和节点计算资源(“节点c.r.s”)716(1)-716(n),其中“n”代表任何完整的正整数。在至少一个实施例中,节点c.r.716(1)-716(n)可以包括但不限于任何数量的中央处理单元(“cpu”)或其他处理器(包括加速器、现场可编程门阵列(fpga)、图形处理器等),内存设备(例如动态只读存储器),存储器设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“nwi/o”)设备,网络交换机,虚拟机(“vm”),电源模块和冷却模块等。在至少一个实施例中,节点c.r.716(1)-716(n)中的一个或更多个节点c.r.可以是具有一个或更多个上述计算资源的服务器。

在至少一个实施例中,分组的计算资源714可以包括容纳在一个或更多个机架内的节点c.r.的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源714内的节点c.r.的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、内存或存储器资源。在至少一个实施例中,可以将包括cpu或处理器的几个节点c.r.分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可以包括任何数量的电源模块、冷却模块和网络交换机,以任意组合。

在至少一个实施例中,资源协调器712可以配置或以其他方式控制一个或更多个节点c.r.716(1)-716(n)和/或分组的计算资源714。在至少一个实施例中,资源协调器712可以包括用于数据中心700的软件设计基础结构(“sdi”)管理实体。在至少一个实施例中,资源协调器可以包括硬件、软件或其某种组合。

在至少一个实施例中,如图7所示,框架层720包括作业调度器722、配置管理器724、资源管理器726和分布式文件系统728。在至少一个实施例中,框架层720可以包括支持软件层730的软件732和/或应用程序层740的一个或更多个应用程序742的框架。在至少一个实施例中,软件732或应用程序742可以分别包括基于web的服务软件或应用程序,例如由amazonwebservices,googlecloud和microsoftazure提供的服务或应用程序。在至少一个实施例中,框架层720可以是但不限于一种免费和开放源软件网络应用框架,例如可以利用分布式文件系统728来进行大范围数据处理(例如“大数据”)的apachesparktm(以下称为“spark”)。在至少一个实施例中,作业调度器722可以包括spark驱动器,以促进对数据中心700的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器724可以能够配置不同的层,例如软件层730和包括spark和用于支持大规模数据处理的分布式文件系统728的框架层720。在至少一个实施例中,资源管理器726能够管理映射到或分配用于支持分布式文件系统728和作业调度器722的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层710上的分组的计算资源714。在至少一个实施例中,资源管理器726可以与资源协调器712协调以管理这些映射的或分配的计算资源。

在至少一个实施例中,包括在软件层730中的软件732可以包括由节点c.r.716(1)-716(n)的至少一部分,分组计算资源714和/或框架层720的分布式文件系统728使用的软件。一种或更多种类型的软件可以包括但不限于internet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。

在至少一个实施例中,应用层740中包括的应用程序742可以包括由节点c.r.716(1)-716(n)的至少一部分、分组的计算资源714和/或框架层720的分布式文件系统728使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如pytorch、tensorflow、caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序。

在至少一个实施例中,配置管理器724、资源管理器726和资源协调器712中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施例中,自我修改动作可以减轻数据中心700的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。

在至少一个实施例中,数据中心700可以包括工具、服务、软件或其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,在至少一个实施例中,可以通过使用上文关于数据中心700描述的软件和计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心700所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。

在至少一个实施例中,数据中心可以使用cpu、专用集成电路(asic)、gpu、fpga或其他硬件来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。

这样的组件可以用于错开同步信号,以便在一组处理器上分配工作负载。

计算机系统

图8是示出根据至少一个实施例示例性计算机系统的框图,该示例性计算机系统可以是具有互连的设备和组件的系统,片上系统(soc)或它们的某种形成有处理器的组合800,该处理器可以包括执行单元以执行指令。在至少一个实施例中,根据本公开,例如本文所述的实施例,计算机系统800可以包括但不限于组件,例如处理器802,其执行单元包括逻辑以执行用于过程数据的算法。在至少一个实施例中,计算机系统800可以包括处理器,例如可从加利福尼亚圣塔克拉拉的英特尔公司(intelcorporationofsantaclara,california)获得的处理器家族、xeontmxscaletm和/或strongarmtmcoretm或nervanatm微处理器,尽管也可以使用其他系统(包括具有其他微处理器的pc、工程工作站、机顶盒等)。在至少一个实施例中,计算机系统800可以执行可从华盛顿州雷蒙德市的微软公司(microsoftcorporationofredmond,wash.)n获得的windows操作系统版本,尽管其他操作系统(例如unix和linux)、嵌入式软件和/或图形用户界面也可以使用。

实施例可以用在其他设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议(internetprotocol)设备、数码相机、个人数字助理(“pda”)和手持pc。在至少一个实施例中,嵌入式应用可以包括微控制器、数字信号处理器(“dsp”)、片上系统、网络计算机(“netpc”)、机顶盒、网络集线器、广域网(“wan”)交换机,或根据至少一个实施例可以执行一个或更多个指令的任何其他系统。

在至少一个实施例中,计算机系统800可包括但不限于处理器802,该处理器802可包括但不限于一个或更多个执行单元808,以根据本文描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,计算机系统800是单处理器台式机或服务器系统,但是在另一实施例中,计算机系统800可以是多处理器系统。在至少一个实施例中,处理器802可以包括但不限于复杂指令集计算机(“cisc”)微处理器、精简指令集计算(“risc”)微处理器、超长指令字(“vliw”)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器802可以耦合到处理器总线810,该处理器总线810可以在处理器802与计算机系统800中的其他组件之间传输数据信号。

在至少一个实施例中,处理器802可以包括但不限于1级(“l1”)内部高速缓存存储器(“cache”)804。在至少一个实施例中,处理器802可以具有单个内部高速缓存或多级内部缓存。在至少一个实施例中,高速缓冲存储器可以驻留在处理器802的外部。根据特定的实现和需求,其他实施例也可以包括内部和外部高速缓存的组合。在至少一个实施例中,寄存器文件806可以在各种寄存器中存储不同类型的数据,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。

在至少一个实施例中,包括但不限于执行整数和浮点运算的逻辑的执行单元808,其也位于处理器802中。在至少一个实施例中,处理器802还可以包括微码(“ucode”)只读存储器(“rom”),用于存储某些宏指令的微代码。在至少一个实施例中,执行单元808可以包括用于处理封装指令集809的逻辑。在至少一个实施例中,通过将封装指令集809包括在通用处理器802的指令集中,以及要执行指令的相关电路,可以使用通用处理器802中的封装数据来执行许多多媒体应用程序使用的操作。在一个或更多个实施例中,可以通过使用处理器的数据总线的全宽度来在封装的数据上执行操作来加速和更有效地执行许多多媒体应用程序,这可能不需要在处理器的数据总线上传输较小的数据单元来一次执行一个数据元素的一个或更多个操作。

在至少一个实施例中,执行单元808也可以用在微控制器、嵌入式处理器、图形设备、dsp和其他类型的逻辑电路中。在至少一个实施例中,计算机系统800可以包括但不限于存储器820。在至少一个实施例中,存储器820可以被实现为动态随机存取存储器(“dram”)设备、静态随机存取存储器(“sram”)设备、闪存设备或其他存储设备。在至少一个实施例中,存储器820可以存储由处理器802可以执行的由数据信号表示的指令819和/或数据821。

在至少一个实施例中,系统逻辑芯片可以耦合到处理器总线810和存储器820。在至少一个实施例中,系统逻辑芯片可以包括但不限于存储器控制器集线器(“mch”)816,并且处理器802可以经由处理器总线810与mch816通信。在至少一个实施例中,mch816可以提供到存储器820的高带宽存储器路径818以用于指令和数据存储以及用于图形命令、数据和纹理的存储。在至少一个实施例中,mch816可以在处理器802、存储器820和计算机系统800中的其他组件之间启动数据信号,并且在处理器总线810、存储器820和系统i/o822之间桥接数据信号。在至少一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,mch816可以通过高带宽存储器路径818耦合到存储器820,并且图形/视频卡812可以通过加速图形端口(acceleratedgraphicsport)(“agp”)互连814耦合到mch816。

在至少一个实施例中,计算机系统800可以使用系统i/o822作为专有集线器接口总线来将mch816耦合到i/o控制器集线器(“ich”)830。在至少一个实施例中,ich830可以通过本地i/o总线提供与某些i/o设备的直接连接。在至少一个实施例中,本地i/o总线可以包括但不限于用于将外围设备连接到存储器820、芯片组和处理器802的高速i/o总线。示例可以包括但不限于音频控制器829、固件集线器(“flashbios”)828、无线收发器826、数据存储器824、包含用户输入的传统i/o控制器823和键盘接口825、串行扩展端口827(例如通用串行总线(usb))和网络控制器834。数据存储装置824可以包括硬盘驱动器、软盘驱动器、cd-rom设备、闪存设备或其他大容量存储设备。

在至少一个实施例中,图8示出了包括互连的硬件设备或“芯片”的系统,而在其他实施例中,图8可以示出示例性片上系统(“soc”)。在至少一个实施例中,设备可以与专有互连、标准化互连(例如,pcie)或其某种组合互连。在至少一个实施例中,计算机系统800的一个或更多个组件使用计算快速链路(cxl)互连来互连。

这样的组件可以用于错开同步信号,以便在一组处理器上分配工作负载。

图9是示出根据至少一个实施例的用于利用处理器910的电子设备900的框图。在至少一个实施例中,电子设备900可以是,例如但不限于,笔记本电脑、塔式服务器、机架服务器、刀片服务器、膝上型计算机、台式机、平板电脑、移动设备、电话、嵌入式计算机或任何其他合适的电子设备。

在至少一个实施例中,系统900可以包括但不限于通信地耦合到任何合适数量或种类的组件、外围设备、模块或设备的处理器910。在至少一个实施例中,处理器910使用总线或接口耦合,诸如1℃总线、系统管理总线(“smbus”)、低引脚数(lpc)总线、串行外围接口(“spi”)、高清音频(“hda”)总线、串行高级技术附件(“sata”)总线、通用串行总线(“usb”)(1、2、3版)或通用异步接收器/发送器(“uart”)总线。在至少一个实施例中,图9示出了系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图9可以示出示例性片上系统(“soc”)。在至少一个实施例中,图9中所示的设备可以与专有互连线、标准化互连(例如,pcie)或其某种组合互连。在至少一个实施例中,图9的一个或更多个组件使用计算快速链路(cxl)互连线来互连。

在至少一个实施例中,图9可以包括显示器924、触摸屏925、触摸板930、近场通信单元(“nfc”)945、传感器集线器940、热传感器946、快速芯片组(“ec”)935、可信平台模块(“tpm”)938、bios/固件/闪存(“bios,fwflash”)922、dsp960、驱动器920(例如固态磁盘(“ssd”)或硬盘驱动器(“hdd”))、无线局域网单元(“wlan”)950、蓝牙单元952、无线广域网单元(“wwan”)956、全球定位系统(gps)955、相机(“usb3.0相机”)954(例如usb3.0相机)和/或实现在例如lpddr3标准低功耗双倍数据速率(“lpddr”)存储单元(“lpddr3”)915。这些组件可以各自以任何合适的方式实现。

在至少一个实施例中,其他组件可以通过以上讨论的组件通信地耦合到处理器910。在至少一个实施例中,加速度计941、环境光传感器(“als”)942、罗盘943和陀螺仪944可以可通信地耦合到传感器集线器940。在至少一个实施例中,热传感器939、风扇937、键盘946和触摸板930可以通信地耦合到ec935。在至少一个实施例中,扬声器963、耳机964和麦克风(“mic”)965可以通信地耦合到音频单元(“音频编解码器和d类放大器”)962,其又可以通信地耦合到dsp960。在至少一个实施例中,音频单元964可以包括例如但不限于音频编码器/解码器(“编解码器”)和d类放大器。在至少一个实施例中,sim卡(“sim”)957可以通信地耦合到wwan单元956。在至少一个实施例中,组件(诸如wlan单元950和蓝牙单元952以及wwan单元956)可以被实现为下一代形式因素(ngff)。

这样的组件可以用于错开同步信号,以便在一组处理器上分配工作负载。

图10是根据至少一个实施例的处理系统的框图。在至少一个实施例中,系统1000包括一个或更多个处理器1002和一个或更多个图形处理器1008,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量处理器1002或处理器核心1007的服务器系统。在至少一个实施例中,系统1000是结合在片上系统(soc)集成电路内的处理平台,以用于移动、手持或嵌入式设备。

在至少一个实施例中,系统1000可以包括或结合在基于服务器的游戏平台中,包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台。在至少一个实施例中,系统1000是移动电话、智能电话、平板计算设备或移动互联网设备。在至少一个实施例中,处理系统1000还可包括与可穿戴设备耦合或集成在可穿戴设备中,例如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在至少一个实施例中,处理系统1000是电视或机顶盒设备,其具有一个或更多个处理器1002以及由一个或更多个图形处理器1008生成的图形界面。

在至少一个实施例中,一个或更多个处理器1002每个包括一个或更多个处理器核心1007,以处理指令,该指令在被执行时执行针对系统和用户软件的操作。在至少一个实施例中,一个或更多个处理器核心1007中的每一个被配置为处理特定指令集1009。在至少一个实施例中,指令集1009可以促进复杂指令集计算(cisc)、精简指令集计算(risc),或通过超长指令字(vliw)进行计算。在至少一个实施例中,多个处理器核心1007可以各自处理不同的指令集1009,该指令集1009可以包括有助于仿真其他指令集的指令。在至少一个实施例中,处理器核心1007还可以包括其他处理设备,例如数字信号处理器(dsp)。

在至少一个实施例中,处理器1002包括高速缓存存储器1004。在至少一个实施例中,处理器1002可以具有单个内部高速缓存或多个级别的内部高速缓存。在至少一个实施例中,高速缓存存储器在处理器1002的各个组件之间共享。在至少一个实施例中,处理器1002还使用外部高速缓存(例如,三级(l3)高速缓存或最后一级高速缓存(llc))(未示出),其可以使用已知的高速缓存相干技术在处理器核心1007之间共享该逻辑。在至少一个实施例中,处理器1002中另外包括寄存器文件1006,处理器1002可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。在至少一个实施例中,寄存器文件1006可以包括通用寄存器或其他寄存器。

在至少一个实施例中,一个或更多个处理器1002与一个或更多个接口总线1010耦合,以在处理器1002与系统1000中的其他组件之间传输通信信号,例如地址、数据或控制信号。在至少一个实施例中,接口总线1010在一个实施例中可以是处理器总线,例如直接媒体接口(dmi)总线的版本。在至少一个实施例中,接口1010不限于dmi总线,并且可以包括一个或更多个外围组件互连总线(例如,pci,pciexpress)、存储器总线或其他类型的接口总线。在至少一个实施例中,处理器1002包括集成存储器控制器1016和平台控制器集线器1030。在至少一个实施例中,存储器控制器1016促进存储设备与系统1000的其他组件之间的通信,而平台控制器集线器(pch)1030通过本地i/o总线提供到i/o设备的连接。

在至少一个实施例中,存储设备1020可以是动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪存设备、相变存储设备或具有适当的性能以用作过程存储器。在至少一个实施例中,存储设备1020可以用作系统1000的系统存储器,以存储数据1022和指令1021,以在一个或更多个处理器1002执行应用或过程时使用。在至少一个实施例中,存储器控制器1016还与可选的外部图形处理器1012耦合,其可以与处理器1002中的一个或更多个图形处理器1008通信以执行图形和媒体操作。在至少一个实施例中,显示设备1011可以连接至处理器1002。在至少一个实施例中,显示设备1011可以包括内部显示设备中的一个或更多个,例如在移动电子设备或便携式计算机设备或通过显示器接口(例如显示端口(displayport)等)连接的外部显示设备。在至少一个实施例中,显示设备1011可以包括头戴式显示器(hmd),诸如用于虚拟现实(vr)应用或增强现实(ar)应用中的立体显示设备。

在至少一个实施例中,平台控制器集线器1030使外围设备能够通过高速i/o总线连接到存储设备1020和处理器1002。在至少一个实施例中,i/o外围设备包括但不限于音频控制器1046、网络控制器1034、固件接口1028、无线收发器1026、触摸传感器1025、数据存储设备1024(例如,硬盘驱动器、闪存等)。在至少一个实施例中,数据存储设备1024可以经由存储器接口(例如,sata)或经由外围总线来连接,诸如外围组件互连总线(例如,pci、pciexpress)。在至少一个实施例中,触摸传感器1025可以包括触摸屏传感器、压力传感器或指纹传感器。在至少一个实施例中,无线收发器1026可以是wi-fi收发器、蓝牙收发器或移动网络收发器,诸如3g、4g或长期演进(lte)收发器。在至少一个实施例中,固件接口1028使能与系统固件的通信,并且可以是例如统一的可扩展固件接口(uefi)。在至少一个实施例中,网络控制器1034可以启用到有线网络的网络连接。在至少一个实施例中,高性能网络控制器(未示出)与接口总线1010耦合。在至少一个实施例中,音频控制器1046是多通道高清晰度音频控制器。在至少一个实施例中,系统1000包括可选的传统i/o控制器1040,用于将传统(例如,个人系统2(ps/2))设备耦合到系统。在至少一个实施例中,平台控制器集线器1030还可以连接到一个或更多个通用串行总线(usb)控制器1042,该控制器连接输入设备,诸如键盘和鼠标1043组合、相机1044或其他usb输入设备。

在至少一个实施例中,存储器控制器1016和平台控制器集线器1030的实例可以集成到离散的外部图形处理器中,例如外部图形处理器1012。在至少一个实施例中,平台控制器集线器1030和/或存储控制器1016可以在一个或更多个处理器1002的外部。例如,在至少一个实施例中,系统1000可以包括外部存储控制器1016和平台控制器集线器1030,其可以配置成在与处理器1002通信的系统芯片组中的存储器控制器集线器和外围控制器集线器。

这样的组件可以用于错开同步信号,以便在一组处理器上分配工作负载。

图11是根据至少一个实施例的具有一个或更多个处理器核心1102a-1102n、集成存储器控制器1114和集成图形处理器1108的处理器1100的框图。在至少一个实施例中,处理器1100可以包括直至并包括由虚线框表示的附加核心1102n的附加核心。在至少一个实施例中,每个处理器核心1102a-1102n包括一个或更多个内部高速缓存单元1104a-1104n。在至少一个实施例中,每个处理器核心还可以访问一个或更多个共享高速缓存的单元1106。

在至少一个实施例中,内部高速缓存单元1104a-1104n和共享高速缓存单元1106表示处理器1100内的高速缓存存储器层次结构。在至少一个实施例中,高速缓存存储器单元1104a-1104n可以包括每个处理器核心内的至少一级指令和数据以及共享中级缓存中的一级或更多级缓存,例如2级(l2)、3级(l3)、4级(l4)或其他级别的缓存,其中在外部存储器之前将最高级别的缓存归类为llc。在至少一个实施例中,高速缓存相干逻辑维持各种高速缓存单元1106和1104a-1104n之间的相干。

在至少一个实施例中,处理器1100还可包括一组一个或更多个总线控制器单元1116和系统代理核心1110。在至少一个实施例中,一个或更多个总线控制器单元1116管理一组外围总线,例如一个或更多个pci或pciexpress总线。在至少一个实施例中,系统代理核心1110为各种处理器组件提供管理功能。在至少一个实施例中,系统代理核心1110包括一个或更多个集成存储器控制器1114,以管理对各种外部存储器设备(未示出)的访问。

在至少一个实施例中,一个或更多个处理器核心1102a-1102n包括对多线程同时进行的支持。在至少一个实施例中,系统代理核心1110包括用于在多线程处理期间协调和操作核心1102a-1102n的组件。在至少一个实施例中,系统代理核心1110可以另外包括电源控制单元(pcu),该电源控制单元包括逻辑和组件以调节处理器核心1102a-1102n和图形处理器1108的一个或更多个电源状态。

在至少一个实施例中,处理器1100另外包括图形处理器1108以执行图形处理操作。在至少一个实施例中,图形处理器1108与共享高速缓存单元1106和包括一个或更多个集成存储器控制器1114的系统代理核心1110耦合。在至少一个实施例中,系统代理核心1110还包括用于驱动图形处理器输出到一个或更多个耦合的显示器的显示器控制器1111。在至少一个实施例中,显示器控制器1111也可以是经由至少一个互连与图形处理器1108耦合的独立模块,或者可以集成在图形处理器1108内。

在至少一个实施例中,基于环的互连单元1112用于耦合处理器1100的内部组件。在至少一个实施例中,可以使用替代性互连单元,例如点对点互连、交换互连或其他技术。在至少一个实施例中,图形处理器1108经由i/o链路1113与环形互连1112耦合。

在至少一个实施例中,i/o链路1113代表多种i/o互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块1118(例如edram模块)之间的通信的封装i/o互连。在至少一个实施例中,处理器核心1102a-1102n和图形处理器1108中的每一个使用嵌入式存储器模块1118作为共享的最后一级高速缓存。

在至少一个实施例中,处理器核心1102a-1102n是执行公共指令集架构的同质核心。在至少一个实施例中,处理器核心1102a-1102n在指令集架构(isa)方面是异构的,其中一个或更多个处理器核心1102a-1102n执行公共指令集,而一个或更多个其他处理器核心1102a-1102n执行公共指令集或不同指令集的子集。在至少一个实施例中,就微架构而言,处理器核心1102a-1102n是异构的,其中具有相对较高功耗的一个或更多个核心与具有较低功耗的一个或更多个功率核心耦合。在至少一个实施例中,处理器1100可以实现在一个或更多个芯片上或被实现为soc集成电路。

这样的组件可以用于错开同步信号,以便在一组处理器上分配工作负载。

其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是其某些示出的实施例在附图中示出并且已经在上面进行了详细描述。但是,应当理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的公开内容的精神和范围内的所有修改、替代构造和等同物。

除非另有说明,除非另有说明或显然与环境矛盾,否则在描述所公开的实施例的环境中(特别是在所附权利要求的环境中)对术语“一”,“一个”和“该”以及类似指代的使用应解释为涵盖单数和复数,并且不作为术语的定义。术语“包含”,“具有”,“包括”和“内含”应解释为开放式术语(意思是“包括但不限于”)。术语“连接”在未经修改时指的是物理连接,应理解为部分或全部包含在,连接到或连接在一起的部分或全部,即使有任何介入。除非在此另外指出,否则本文中数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的速记方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。除非环境另外指出或矛盾,否则术语“组”(例如“一组项目”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非环境另外指出或矛盾,否则相应集合的术语“子集”不一定表示相应集合的适当子集,而是子集和相应集合可以相等。

除非以其他方式明确指出或与环境明显矛盾,否则诸如“a、b和c中的至少一个”或“a、b和c的至少一个”形式的词组等连词语言在环境中理解为通常用来表示项目,术语等可以是a或b或c,也可以是a和b和c集合的任何非空子集。例如,在具有三个成员,连接短语“a、b和c中的至少一个”和“a、b和c的至少一个”是指以下任意集合:{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}。因此,这种联合语言通常不意图暗示某些实施例要求存在a中的至少一个、b中的至少一个和c中的至少一个。另外,除非另有说明或与环境矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。复数是至少两个项目,但是当明确地或通过环境指示时可以是多个。此外,除非另有说明或从环境中清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。

除非本文另外指出或与环境明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用程序)通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码例如以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其不包括暂时性信号(例如,传播的瞬态电或电磁传输),但包括暂时性信号的收发器中的非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令(或其他存储器以存储可执行指令)的一组一个或更多个非暂时性计算机可读存储介质上,当由计算机系统的一个或更多个处理器执行(即,由于被执行)而导致的计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质以及缺少所有代码的多个非暂时性计算机可读存储介质的一个或更多个单个非暂时性存储介质,而多个非暂时性计算机可读存储介质共同存储所有代码。在至少一个实施例中,执行可执行指令,使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“cpu”)执行一些指令,而图形处理单元(“gpu”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。

因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所描述的过程的操作的一个或更多个服务,并且这样的计算机系统配置有能够实现操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中,是一种分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。

本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为表示对于实施公开必不可少的任何未要求保护的要素。

本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用的方式并入本文,如同每个参考文献被单独且具体地指出以引用的方式并入本文一样。

在描述和权利要求中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。

除非另外特别说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“运算”、“确定”等,是指计算机或计算系统的动作和/或过程。或类似的电子计算设备,将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。

以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是cpu或gpu。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。而且,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。因为系统可以体现一种或更多种方法并且方法可以被认为是系统,术语“系统”和“方法”在本文中可互换使用。

在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。可以以多种方式来完成获得、获取、接收或输入模拟和数字数据,例如通过接收作为函数调用或对应用程序接口的调用的参数的数据。在一些实施方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来完成。在另一实施方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传输、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数,应用程序编程接口或进程间通信机制的参数进行传输来实现。

尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且意图在本公开的范围内。此外,尽管出于讨论目的在上面定义了具体的责任分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。

此外,尽管已经用针对结构特征和/或方法动作的语言描述了主题,但是应该理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。

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