为了向后兼容性而对应用程序特定的操作参数进行的实时调整的制作方法

文档序号:17286328发布日期:2019-04-03 03:35阅读:224来源:国知局
为了向后兼容性而对应用程序特定的操作参数进行的实时调整的制作方法

本申请要求2016年3月30日提交的美国临时专利申请第62/315,345号的权益,所述申请的全部内容以引用的方式并入本文中。本申请还要求2016年3月30日提交的美国临时专利申请第62/315,315号的权益,所述申请的全部内容以引用的方式并入本文中。本申请还要求2017年3月22日提交的美国专利申请第15/466,769号的权益,所述申请的全部内容以引用的方式并入本文中。本申请要求2017年3月22日提交的美国专利申请第15/466,759号的权益,所述申请的全部内容以引用的方式并入本文中。

本公开的方面涉及在计算机系统上执行计算机应用程序。具体地说,本公开的方面涉及对针对计算机系统的较旧版本设计的应用程序/标题提供向后兼容性的系统或方法。



背景技术:

当发布新的计算机架构时,为架构的先前版本编写的应用程序需要在新架构上完美地运行。这种能力经常被称作“向后兼容性”。实现向后兼容性涉及在新主机架构上仿真目标遗留装置,使得新架构可以执行为遗留装置编写的程序的指令。计算机架构随时间改变以利用总线、时钟速度、处理器架构、高速缓存、标准等方面的技术进步。当一个计算机架构被较新的架构取代时,较旧的架构变成称作遗留架构的事物。在其开发过程中,为遗留架构编写软件应用程序,诸如网络协议、用户接口、音频处理、装置驱动器、图形处理、消息传递、文字处理器、电子表格、数据库程序、游戏和其他应用程序。即使用户升级到新架构,这类遗留软件对其用户仍具有价值。因此需要能够在新架构上运行遗留软件。

新装置和遗留装置的硬件组件的性能差异可能导致新装置上发生同步错误,这可能导致遗留应用程序在新装置架构上运行时崩溃或产生不正确的输出。这种性能差异可能例如由新装置与遗留装置之间的硬件架构的差异引起。正是在这种背景下,出现了本公开的方面。

附图说明

图1a是示出根据本公开的方面导出应用程序特定的操作参数的流程图。

图1b是示出根据本公开的方面实时地调整应用程序特定的操作参数的流程图。

图2a是示出根据本公开的方面的可被配置成在向后兼容性模式中操作的中央处理单元(cpu)核心的实例的框图。

图2b是示出根据本公开的方面的cpu的可能的多核架构的实例的框图。

图3是根据本公开的方面的具有被配置成在向后兼容性模式中操作的cpu的装置的框图。

导言

为了解决因为在新装置上运行遗留应用程序时的硬件行为差异引起的问题,可以调整新硬件以运行遗留应用程序。

在测试阶段期间,遗留应用程序在遗留装置上运行,其中收集遗留架构和性能信息。性能信息的实例包括每单位时间alu指令或存储器操作的数目,以及平均并行处理硬件调度单元(例如,波前)占用率或使用寿命。可以通过在遗留装置上运行游戏和应用程序并读取计数器来直接测量性能信息(alu和存储器操作)。或者,可以从读取这类计数器或其他数据输出导出性能信息以作为测量过程的一部分。作为这种导出的实例,可以从对波前开始和停止的时间的测量来导出平均波前占用率和使用寿命。特定应用程序(例如,特定视频游戏)的组合的性能数据在本文中被称作该应用程序的性能特性。在测试阶段中为应用程序确定的性能特性可以用作在新系统上运行相同应用程序的基线以确保向后兼容性。

通过调整新装置的操作参数,可以使应用程序在新装置上的性能与该相同应用程序在遗留装置上的性能紧密匹配。操作参数的实例除了其他以外包括新装置的时钟频率、可用通用寄存器(gpr)的数目、指令发射速率等。应用程序可以在新系统上重复地运行,同时调整其操作参数以调整应用程序特定的性能特性。在新系统上进行足够数目的测试之后,可以分析应用程序在新系统上的性能特性如何随着操作参数改变而收敛。可以基于收敛分析创建一组新的操作参数。可以重复这个过程,直到针对新系统上的应用程序最优地设置操作参数为止。为了进一步优化,可以调整新硬件的执行以查看应用程序是否可以在新硬件上更快地运行而不会使其发生故障。

具体实施方式

应用程序特定的性能特性确定

图1a示出了用于在测试阶段期间导出应用程序特定的操作参数的方法10,在测试阶段中应用程序在遗留系统上运行。应用程序在遗留系统上运行12,并且对于每个代码块14,记录或导出性能信息16。运行应用程序可以包括例如加载捕获并使其运行而不输入或从头到尾播放特定游戏区域。性能信息包括关键性能度量和其他性能信息。关键性能度量是指当应用程序在新系统上运行时最重要的性能信息的子集。关键性能度量是当应用程序在新硬件上运行时必须满足的性能度量。关键性能度量的实例包括但不限于每秒帧数(例如,在视频密集的应用程序,诸如视频游戏的情况下)和分箱至程序计数器(pc)范围的每周期指令(ipc)。

其他性能信息包括但不限于pc块常驻、每单位时间发布的算术逻辑单元(alu)指令的数目(cpu和gpu)、每单位时间发布的存储器操作的数目(cpu和gpu)、每单位时间的平均并行处理硬件调度单元(例如,波前、线程束或向量宽度)占用率、平均并行处理硬件调度单元使用寿命、存储器操作的平均等待时间、每单位时间输出到渲染目标的像素计数,以及帧期间有效的总周期(alu计数是这个的特定实例)。

性能信息可以包括直接从计数器读取或从这些值和其他信息(诸如程序执行期间的事件之间的计数时钟周期)导出的值。可以在18处进一步分析性能信息并且可以组合选定性能信息以确定一组性能特性19,接着可以保存或传送所述性能特性20。

某些性能信息值可以存储在专用处理器寄存器中,所述寄存器记录与应用程序的执行相关的信息。除了其他以外,这些值的实例包括但不限于计数器值(诸如程序计数器和存储器周期的计数器)、算术逻辑单元(alu)周期,以及像素。程序计数器(pc),在因特尔x86和安腾微处理器中也称作指令指针(ip),并且有时称作指令地址寄存器(iar),或指令计数器,是指示计算机在其程序序列中的地方的处理器寄存器。

如上文所指出,可以间接地导出某些其他性能信息,诸如每单位时间的平均并行处理硬件调度单元(例如,波前、线程束或向量宽度)占用率、平均并行处理硬件调度单元使用寿命、存储器操作的平均等待时间、每单位时间输出到渲染目标的像素计数。作为实例而不是作为限制,可以通过将初始与最终程序计数器值之间的差除以初始与最终程序计数器值之间的时钟周期的数目来导出每周期指令(ipc)的数目。而且,确定平均并行处理硬件调度单元使用寿命可以涉及检测这些调度单元的开始和完成以及对其之间的时钟周期进行计数。类似地,确定并行处理硬件调度单元的每单位时间的平均占用率是在给定时间窗口期间记录开始和完成以及确定在该时间窗口内的任何给定时间平均执行多少的问题。

术语“并行处理调度单元”在本文中用作一般术语以涵盖由不同处理器硬件的制造商用来描述代码的并行处理的最小可执行单元的概念的若干不同术语。例如,在gpu的上下文中,并行处理线程在有时称作“线程束”(对于nvidia硬件)或“波前”(对于amd硬件)的事物中被捆绑为最基本的调度单元,差异主要在于分组在一起的线程数目。其他等效的定义包括:“最小可执行单元代码可以操作的”或“单个指令同时在其中的所有线程内的处理单元”或“以simd方式处理的数据的最小大小”。对于cpu硬件,最基本的并行级别的概念经常被称作“向量宽度”(例如,当在因特尔和amd处理器上使用sse指令时)。为了简单起见,术语“波前”在本文中将用作“并行处理调度单元”的取代。波前中的所有线程以锁步执行相同指令,唯一差异在于通过该指令操作的数据。

可以用多种不同方式从操作寄存器值导出其他操作信息。例如,可以通过对含有在程序执行时已被执行的指令的总数目的计数器取样来导出ipc。作为实例,可以每n个周期对这个计数器取样。可以从初始总指令执行值(tiei)以及n个周期之后的随后值(tiei+n)根据(tiei+n-tiei)/n导出ipc值。实际上,应用程序的给定部分(例如,代码块)的ipc值可以由该特定部分的pc范围分箱。此外,应用程序内的每个pc范围因此可以具有不同的潜在行为和对应的不同的ipc值。因此,例如通过代码块号码使ipc值与程序代码的识别出的部分相关联是有用的。

pc块常驻(其是指当前被执行的应用程序代码块)对于cpu比gpu可以更相关,因为gpu通常同时运行多个代码段。可以通过每n个周期对pc取样以及对样品落在同一代码块中的次数计数来导出pc块常驻。

发布alu或存储器操作的频率可以通过检测这些操作的发布以及对在给定时间窗口内发布的这些操作的数目计数来导出。类似地,可以通过对给定时间窗口内的像素输出计数来导出每单位时间输出到渲染目标的像素计数。可以通过检测高速缓存读取/写入和/或存储器存取指令的发布和完成以及对发布与完成之间的时钟周期计数来导出等待时间,诸如高速缓存等待时间或存储器操作等待时间。

在16处记录/导出性能信息可以包括检测忙碌等待。忙碌等待通常实现为短周期。从计数器角度来看,这将看起来像是pc待在非常小的范围内(并且重复)并且将存在每次通过周期时发生的某一类型的存储器读取或io读取操作。有可能的是,ipc可以因为周期而为高的,但更为实际地,ipc将很可能为低的,因为将通过等待存储器或io操作的结果返回来支配周期中的时间。可以通过寻找pc待在非常小的范围内的时间来检测忙碌等待并且通过等待存储器或io操作完成来支配时间。忙碌等待倾向于使ipc和其他性能信息测量歪斜。由于花在忙碌等待上的时间是不可预测的,因此可以将在忙碌等待时进行的测量从性能信息去除以作为在18处确定性能特性的过程的一部分。通过这么做,随后调整操作参数的过程将不会受忙碌等待的存在影响。

在18处分析记录或导出的性能信息通常涉及使性能信息缩小到一组有用的性能特性19,该组有用的性能特性通常表征应用程序在执行期间的行为。性能特性19包括但不限于对于稍后确定操作参数有用的一个或多个关键性能度量和其他性能信息,如下文所讨论。

性能特性确定阶段18可以确定哪些性能信息值对于调整操作参数是有用的,例如通过经由多变量分析确定关键性能信息值的变化与操作参数的变化之间的相关性,因为许多不同的性能信息值可以响应于给定操作参数的变化而变化。

参数调整过程

图1b描述了用于当遗留应用程序在新系统上运行时调整所述应用程序的执行以优化操作参数的方法30。新系统可以在运行遗留应用程序时(32)使用性能特性19来实时地调整一个或多个操作参数。对于每个代码块34,导出性能信息36,例如如上文所讨论。如果在38处一个或多个关键性能度量不在界限内,则可以迭代地调整一个或多个操作参数40直到其在界限内为止。一旦在38处关键性能度量在界限内,就可以更新42并通过进一步调整40优化操作参数。可以保存或传送44更新/优化后的操作参数数据43。

术语“操作参数”通常是指新系统上的应用程序的执行的方面,可以调整所述方面以影响包括关键性能度量的性能信息。操作参数的实例可以包括但不限于:时钟频率(例如针对cpu、gpu或存储器的)、指令的发射速率、alu和/或存储器操作的发射速率、资源(例如通用寄存器(gpr)、波前槽、读取和存储队列大小等)、特征废弃、高速缓存参数(例如,高速缓存大小、路数、库的数目等)、波前发射速率、来自渲染后端的像素输出速率、存储器操作延迟。

算法匹配是指使用来自遗留系统架构的算法而不是为新系统架构编写的新的并且改进的算法对新系统执行某些操作。这种算法匹配的实例将使用遗留系统的分支预测器来对新系统执行分支预测。在这个实例中,算法匹配参数将包括遗留算法中使用的参数。

其他操作参数还可以包括与资源限制相关的参数(例如,如2015年7月27日提交的美国专利申请第14/810,361号中所描述的,所述美国专利申请以引用的方式并入本文中,以及与算法匹配、特征废弃和匹配等待时间或吞吐量相关的参数(例如,如2015年7月27日提交的美国专利申请第14/810,334号中所描述,所述美国专利申请以引用的方式并入本文中。

在40处对操作参数的调整可以是简单的,例如,将新硬件上的通用寄存器(gpr)的数目设置为与遗留硬件相同的数目。或者,新硬件可以将遗留算法用于某些操作或对于遗留应用程序的操作可以停用新硬件的特征。可以调整执行以使新系统上的等待时间与遗留硬件等待时间匹配。

因为遗留硬件与新硬件之间的架构差异,对操作参数的调整可以更复杂。在一些情况下,例如通过设置稍微较大数目的gpr,与原始硬件相比可以将更多资源分配在新硬件上。

下文表i列出了应用程序特定的操作参数、如何导出所述操作参数以及如何调整所述操作参数的一些非限制性实例。

表i

所得的更新后的操作参数43可以包括应用程序特定的性能信息中的每一项的下界,在高于该下界的情况下在遗留硬件上运行的遗留应用程序的性能度量一向得到满足。在对新硬件进行进一步测试的情况下,应用程序特定的性能信息的每一项可以进一步包括上界,在高于该上界的情况下遗留应用程序不再恰当地起作用或遗留应用程序的关键性能度量在新系统上不再得到满足。应用程序特定的性能信息可以对应于下文表ii中的信息。

表ii

在表ii所示的实例中,遗留程序中的每个代码块的性能信息存在一组上界和下界。这个信息可以用于遗留游戏在新硬件上的后续操作中。这个后续操作可以如图1b所描述而进行,其中新硬件调整执行以将性能信息保持在最小值与最大值之间。

操作参数导出和调整可以与图2a至图2b和图3示出的硬件的特征相关。图2a示出了cpu核心100的一般化架构。cpu核心100通常包括分支预测单元102,分支预测单元102试图预测是否将采用分支,而且还试图(在采用分支的情况下)预测分支的目的地地址。就这些预测是正确的而言,推测地执行的代码的效率将增大;因此高度准确的分支预测非常合乎需要。分支预测单元102可以包括高度专用子单元,诸如跟踪来自子例程的返回地址的返回地址堆栈104,跟踪间接分支的目的地的间接目标阵列106,以及跟踪分支的过去历史以便更准确地预测其所得地址的分支目标缓冲器108和其相关联的预测逻辑。

cpu核心100通常包括指令提取和解码单元110,指令提取和解码单元110包括指令提取单元112、指令字节缓冲器114和指令解码单元116。cpu核心100通常还包括一些指令相关的高速缓存和指令转换后备缓冲器(itlb)120。这些可以包括itlb高速缓存层级124,itlb高速缓存层级124将虚拟地址高速缓存至物理地址转换信息,诸如页表项、页目录项等。这个信息用以将指令的虚拟地址变换为物理地址,使得指令提取单元112可以从高速缓存层级加载指令。作为实例,而不是作为限制,可以根据高速缓存层级对程序指令进行高速缓存,高速缓存层级包括常驻在核心中的1级指令高速缓存(l1i-高速缓存)122,以及在cpu核心100外部的其他高速缓存级别176;使用指令的物理地址,首先在这些高速缓存中搜索程序指令。如果未发现指令,那么从系统存储器101加载所述指令。取决于架构,也可能存在含有已解码指令的微操作高速缓存126,如下文所描述。

一旦已提取程序指令,通常将程序指令放置在指令字节缓冲器114中,等待由指令提取和解码单元110处理。解码可以是非常复杂的过程;难以在每个周期对多个指令解码,而且可能存在对指令对准或指令类型的限制,所述限制对在一个周期中可以对多少指令解码进行限制。已解码指令取决于架构可以放置在微操作高速缓存126中(如果新cpu上存在微操作高速缓存126的话),使得可以绕过解码阶段以用于随后使用程序指令。

通常将已解码指令传递至其他单元以用于分派和调度130。这些单元可以使用引退队列132以贯穿cpu管线的剩余部分跟踪指令状态。而且,由于许多cpu架构上可用的通用和simd寄存器的数目有限,因此可以执行寄存器重命名,其中当逻辑(也称作架构)寄存器遇到正被执行的指令流时,指派物理寄存器140以表示所述逻辑寄存器。物理寄存器140可以包括单指令多数据(simd)寄存器组142和通用(gp)寄存器组144,其大小可以远大于特定cpu架构上可用的逻辑寄存器的数目,且因此性能可以显著增大。在执行寄存器重命名134之后,通常将指令放置在调度队列136中,可在每一周期(基于相关性)从调度队列136中选择一些指令以供执行单元150执行。

执行单元150通常包括:simd管152,其对simd寄存器组142中含有的128位或较宽simd寄存器中含有的多个数据字段执行一些并行运算;算术和逻辑单元(alu)154,其对gp寄存器组144中含有的gpr执行一些逻辑、算术和杂项运算;以及地址生成单元(agu)156,其计算应存储或加载存储器的地址。每一类型的执行单元可以存在多个例子,而且所述例子可以具有不同的能力,例如特定simd管152可以能够执行浮点乘法运算但不执行浮点加法运算。

通常在存储队列162和加载队列164中对存储和加载进行缓冲,使得可以并行地执行许多存储器操作。为了有助于存储器操作,cpu核心100通常包括一些数据相关的高速缓存和数据转换后备缓冲器(dtlb)170。dtlb高速缓存层级172将虚拟地址高速缓存至物理地址转换,诸如页表项、页目录项等;这个信息用以将存储器操作的虚拟地址变换为物理地址,使得可以从系统存储器存储或加载数据。通常将数据高速缓存在常驻在核心中的1级数据高速缓存(l1d-高速缓存)174以及在核心100外部的其他高速缓存级别176中。

根据本公开的某些方面,cpu可以包括多个核心。作为实例而不是作为限制,图2b示出了可以结合本公开的方面使用的可能的多核cpu200的实例。具体地说,cpu200的架构可以包括m个群集器201-1…201-m,其中m是大于零的整数。每个群集器可以具有n个核心202-1、202-2…202-n,其中n是大于1的整数。本公开的方面包括不同的群集器具有不同数目个核心的实现方式。每个核心可以包括一个或多个对应的专用本地高速缓存(例如,l1指令、l1数据或l2高速缓存)。在核心不与任何其他核心共享的意义上,本地高速缓存中的每一者可以专用于特定的对应核心。每个群集器还可以包括可以在对应群集器中的核心之间共享的群集器级别高速缓存203-1…203-m。在一些实现方式中,群集器级别高速缓存不被与不同高速缓存相关联的核心共享。此外,cpu200可以包括可以在群集器之间共享的一个或多个较高级别高速缓存204。为了便于在群集器中的核心中进行通信,群集器201-1…202-m可以包括耦合至群集器的核心中的每一者以及群集器级别高速缓存的对应的局部总线205-1…205-m。同样,为了便于在群集器中进行通信,cpu200可以包括耦合至群集器201-1…201-m并且耦合至较高级别高速缓存204的一个或多个较高级别总线206。在一些实现方式中,较高级别总线206还可以耦合至其他装置,例如gpu、存储器或存储器控制器。在其他实现方式中,较高级别总线206可以连接至装置级别总线,装置级别总线连接至系统内的不同装置。在其他实现方式中,较高级别总线206可以将群集器201-1…201-m耦合至较高级别高速缓存204,并且装置级别总线208可以将较高级别高速缓存204耦合至其他装置,例如gpu、存储器或存储器控制器。作为实例而不是作为限制,关于这种装置级别总线208的实现方式可以出现,例如在较高级别高速缓存204对于所有cpu核心是l3但不用于gpu使用的情况下。

在cpu200中,os处理可以主要在某个核心或核心的某个子集上发生。类似地,应用程序级别处理可以主要在特定核心或核心的子集上发生。个别应用程序线程可以由应用程序设计以在某个核心或核心的某个子集上运行。由于共享高速缓存和总线,因此由给定应用程序线程进行的处理速度可以发生变化,这取决于与给定应用程序线程在同一群集器中运行的其他线程(例如,应用程序线程或os线程)发生的处理。取决于cpu200的特性,核心可以能够一次仅执行一个线程,或可以能够同时执行多个线程(“超线程”)。在超线程的cpu的情况下,应用程序还可以指定哪些线程与哪些其他线程可以同时执行。线程的执行受由同一核心执行的任何其他线程执行的特定处理所影响。

现在转向图3,示出了被配置用来根据本公开的方面操作的装置300的说明性实例。根据本公开的方面,装置300可以是嵌入式系统、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站、游戏控制台等。

装置300通常包括中央处理器单元(cpu)320,cpu320可以包括图1示出和上文讨论的类型的一个或多个cpu核心323。cpu320可以包括多个这类核心323以及处于与图2的cpu200中所示的类似的配置的一个或多个高速缓存325。作为实例而不是作为限制,cpu320可以是加速处理单元(apu)310的一部分,apu310包括cpu320和单个芯片上的图形处理单元(gpu)330。在替代实现方式中,可以将cpu320和gpu330实现为单独芯片上的单独硬件组件。gpu330还可以包括两个或两个以上核心332和两个或两个以上高速缓存334以及(在一些实现方式中)一个或多个总线以便于核心和高速缓存与系统的其他组件间的通信。总线可以包括用于apu310的内部总线317,和外部数据总线390。

装置300还可以包括存储器340。存储器340可以任选地包括cpu320和gpu330可访问的主存储器单元。cpu320和gpu330可以各自包括一个或多个处理器核心,例如,单核、双核、四核、八核或更多核。cpu320和gpu330可以被配置用来使用外部数据总线390访问一个或多个存储器单元,而且在一些实现方式中,装置300包括两个或两个以上不同总线可以是有用的。

存储器340可以包括呈集成电路形式的一个或多个存储器单元,集成电路提供可定址的存储器,例如ram、dram等。存储器可以含有可执行指令,所述可执行指令被配置用来在被执行后实现与图5的方法类似的方法以用于在运行最初被创建以用于在遗留cpu上执行的应用程序时确定在计时测试模式中操作装置300。另外,存储器340可以包括专用图形存储器,所述专用图形存储器用于暂时存储图形资源、图形缓冲和用于图形渲染管线的其他图形数据。

cpu320可以被配置用来执行cpu代码,cpu代码可以包括操作系统(os)321或应用程序322(例如,视频游戏)。操作系统可以包括管理来自软件(例如,应用程序322)的输入/输出(i/o)请求并且将所述请求转换为cpu320、gpu330或装置300的其他组件的数据处理指令的内核。os321还可以包括可以存储在非易失性存储器中的固件。os321可以被配置用来实现在计时测试模式中操作cpu320的某些特征,如下文详细讨论。cpu代码可以包括图形应用编程接口(api)324,api324用于基于应用程序322的状态向由gpu330实现的程序发布绘制命令或绘制调用。cpu代码还可以实现物理模拟和其他功能。可以将用于os321、应用程序322或api324中的一个或多个的代码的一部分存储在存储器340中,cpu内部或外部的高速缓存中,或cpu320可访问的大容量存储装置中。

装置300可以包括存储器控制器315。存储器控制器315可以是管理去往和来自存储器340的数据流的数字电路。作为实例而不是作为限制,存储器控制器可以是apu310的一体部分,如图3所示的实例中,或者可以是单独的硬件组件。

装置300还可以包括众所周知的支持功能350,支持功能350可以例如经由总线390与系统的其他组件通信。这类支持功能可以包括但不限于输入/输出(i/o)元件352,一个或多个时钟356,其可以包括分别用于cpu320、gpu330和存储器340的单独时钟,以及高速缓存358的一个或多个级别,其可以在cpu320和gpu330外部。装置300可以任选地包括大容量存储装置360,诸如磁盘驱动器、cd-rom驱动器、快闪存储器、磁带驱动器、蓝光驱动器等以存储程序和/或数据。在一个实例中,大容量存储装置360可以接收计算机可读介质362,计算机可读介质362含有最初被设计以在具有遗留cpu的系统上运行的遗留应用程序。或者,可以将遗留应用程序362(或其一部分)存储在存储器340中或部分存储在高速缓存358中。

装置300还可以包括显示单元380以向用户呈现由gpu330准备的渲染图形382。装置300还可以包括用户界面单元370以便于系统100与用户之间的交互。显示单元380可以呈以下形式:平板显示器、阴极射线管(crt)屏幕、触摸屏、头戴式显示器(hmd)或可以显示文字、数字、图形符号或图像的其他装置。显示器380可以显示根据本文中描述的各种技术处理的渲染图形382。用户界面370可以含有一个或多个外围装置,诸如键盘、鼠标、操纵杆、光笔、游戏控制器、触摸屏,和/或可以结合图形用户界面(gui)使用的其他装置。在某些实现方式中,可以至少部分通过经由用户界面370进行的用户输入来确定应用程序322的状态和图形的基本内容,例如,在应用程序322包括视频游戏或其他图形密集应用程序的情况下。

装置300还可以包括网络接口372以使装置能够经由网络与其他装置通信。网络可以是例如局域网(lan)、广域网(诸如因特网)、个人区域网络(诸如蓝牙网络或其他类型的网络)。可以用硬件、软件或固件,或这些中的两个或两个以上的某一组合实现示出和描述的组件中的各种组件。

下文表iii列出了上文关于图2a、图2b和图3描述的特定硬件元件可以如何用来确定性能信息和对应的将要调整的操作参数的一些非限制性实例。

表iii

应注意,当在新装置上运行遗留应用程序时记录或导出的性能信息不可能满足或超过在遗留装置上运行遗留应用程序的对应性能信息。例如,不管如何调整操作参数,新装置上的平均存储器等待时间可以高于在遗留装置上测量到的平均存储器等待时间。知道新系统的这种性能信息在调整操作参数时可以是有用的,但不应在比较在遗留装置和新装置上运行的应用程序的性能特性时使用。实际上应使用仅关键性能度量,类似于但不限于每秒帧数(fps)和每周期指令(ipc)。

可以从涉及视频游戏的以下实例理解当应用程序在新装置上运行时调整操作参数以满足在遗留装置上运行的相同应用程序的关键性能度量的过程。首先,收集在遗留装置上运行的游戏的性能数据以便确定其关键性能度量。接下来,游戏在新装置上运行,同时调整新装置的操作参数。可以通过就像游戏在遗留装置上运行时进行的一样收集新装置上的相同性能信息,并且接着比较在那两个装置上运行的游戏的关键性能度量来测量新装置的性能。尽管可能需要使新装置的性能信息完美地匹配来自遗留装置的性能数据,但这实际上是不可能的。新装置上的性能信息尽可能紧密地匹配遗留装置上的性能信息就足够了。然而,不可接受的是新装置上的关键性能度量比遗留装置上的关键性能度量差,就像崩溃(通常因为同步问题)或产生不正确的输出(出于相同原因)的应用程序或游戏一样。

现在实际地说,前几次游戏在新装置上运行,操作参数将可能设置为与在遗留装置上相同。一旦已经在新装置上运行了足够的游戏并且已经调整了其操作参数,所述经验和数据就可以用来建立可以用于额外游戏的启发。启发可以用来基于游戏的性能特性设置新装置上的操作参数的初始值。接着将在新装置上运行游戏并且可以修改操作参数以较好地匹配关键性能度量。如在新装置上测量到的所有性能数据可以用来帮助调整操作参数,而不仅仅是关键性能度量。对操作参数进行的任何调整还可以用来进一步细化启发。

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