通过算法匹配、禁用特征或限制性能的向后兼容性的制作方法

文档序号:11133579阅读:458来源:国知局
通过算法匹配、禁用特征或限制性能的向后兼容性的制造方法与工艺

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

背景

现代计算机系统经常针对不同计算任务使用若干不同处理器。例如,除了若干中央处理单元(CPU),现代计算机还可以具有专用于图形管线中的某些计算任务的图形处理单元(GPU),或专用于针对音频的数字信号处理的单元,所有这些单元潜在地是加速处理单元(APU)的一部分,所述APU也可以包含其他单元。使用可以在APU内部或在外部位于计算机的母板上的总线将这些处理器连接到各种类型的存储器。

通常针对诸如视频游戏控制台或智能电话(“旧版装置”)的计算机系统创建一组应用程序,并且当发布计算机系统的变体或更先进版本(“新装置”)时,希望旧版装置的应用程序在新装置上完美地运行,而不需要考虑到新装置的性质而进行的重新编译或任何修改。如新装置的硬件体系结构、固件和操作系统中所包含,新装置的这个方面经常被称为“向后兼容性”。

向后兼容性经常通过二进制兼容性来实现,其中新装置能够执行针对旧版装置创建的程序。然而,当这种装置的实时行为对于它们的操作很重要时,如在视频游戏控制台或智能电话的情况下,新装置的操作速度的显著差别可能使其不能相对于旧版装置向后兼容。如果新装置具有比旧版装置低的性能,那么阻止向后兼容性的问题可能出现;如果新装置具有更高的性能或与旧版装置相比具有不同的性能特性,也是这样。

本公开的各个方面正是在此背景下产生。

附图说明

通过结合附图考虑以下详述,可以轻易地理解本公开的教义,在附图中:

图1是示出根据本公开的各方面的中央处理单元(CPU)核心的一个实例的框图,所述CPU核心可以被配置来以向后兼容模式操作。

图2是示出根据本公开的各方面的用于以向后兼容模式操作CPU的可能过程流程的一个实例的流程图。

图3是根据本公开的各方面的具有被配置来以向后兼容模式操作的CPU的装置的框图。

具体实施方式

尽管以下详述为了说明目的包括许多特定细节,但是本领域任何普通技术人员将理解的是,对于以下细节的许多变化和改变在本发明的范围内。因此,以下描述的本发明的示例性实施方案是在不损害本发明的一般性也不对要求保护的发明强加任何限制的情况下陈述的。

介绍

即使新装置的CPU与旧版装置二进制兼容(即,能够执行针对旧版装置创建的程序),新装置的CPU与旧版装置的CPU之间的性能特性的差别仍可能导致旧版应用程序中的错误,并且因此新装置将不是向后兼容的。

如果新装置的CPU具有低于旧版装置的CPU的性能,那么旧版应用程序中的许多错误可能由于不能满足由显示定时、音频流出等等强加的实时期限而产生。如果新装置的CPU具有实质上高于旧版装置的CPU的性能,那么旧版应用程序中的许多错误可能由于这种高速操作的未测试结果而产生。例如,在生产者-消费者模型中,如果数据消费者(例如,CPU)以比初始预期更高的速度操作,那么它可能试图在数据生产者(例如,计算机的一些其他部件)使数据可用之前访问数据。可选地,如果数据生产者(例如,CPU)以比初始预期更高的速度操作,那么它可能覆写数据消费者(例如,计算机的一些其他部件)仍在使用的数据。

另外,由于CPU执行代码的速度取决于被执行的特定代码的特性,因此可能的是,新装置的CPU的性能相对于旧版装置增加的程度将取决于被执行的特定代码。这可以导致上述生产者-消费者模型中的问题,其中生产者和消费者都是CPU,但是以在旧版硬件上没有遇到的相对速度执行旧版应用程序的代码。

实施方案

本公开的各方面描述可以允许相对于旧版计算机系统的更高程度向后兼容性的计算机系统和方法。

在本公开的实现方式中,当以向后兼容模式(“BC模式”)执行时,与CPU有关的某些资源被限制并且CPU的操作的各方面被更改。

由于各种资源的限制,CPU在BC模式中的性能可能变得更接近旧版CPU的性能,从而导致旧版应用程序中由CPU的非预期性能特性引起的错误更少。

另外,旧版CPU上不存在的某些CPU特征可以在BC模式中被禁用;CPU的指令执行的延时可以在BC模式中更改为等于或变得更接近旧版CPU的延时;并且CPU的各种单元的操作的算法细节可以在BC模式中更改为匹配或近似于旧版CPU的那些单元的操作的算法细节。因此,当在BC模式中时,新CPU的性能可以变得更接近旧版CPU的性能,从而导致旧版应用程序中由新CPU的非预期性能特性引起的错误更少。

下文描述CPU的一般体系结构以及本公开的各方面,这些方面与当在BC模式中时特定资源的限制、特征的禁用、延时的更改和操作的算法细节的更改有关。

图1描述CPU核心100的一般体系结构。CPU核心100通常包括分支预测单元102,其试图预测分支是否将被采用,并且还试图(在所述分支被采用的情况下)预测所述分支的目标地址。在这些预测是正确的情况下,推测地执行的代码的效率将增加;因此高度准确的分支预测是极度需要的。分支预测单元102可以包括高度专门化的子单元,诸如追踪来自子例程的返回地址的返回地址堆栈104、追踪间接分支的目的地的间接目标阵列106,以及追踪分支的过去历史以便更准确地预测分支的所得地址的分支目标缓冲器108和其相关联预测逻辑。

根据本公开的某些方面,在BC模式中,新CPU的间接目标阵列106的大小、返回地址堆栈104的大小或分支目标缓冲器108的大小可以被减小以匹配或更紧密地近似于它们针对旧版CPU的相应大小。为了清楚起见,这种减小采取减小资源的可用部分的形式,例如,不允许使用返回地址堆栈的一部分,并且因此减小可以追踪的调用和相关联返回的数量;当不在BC模式中时,全部资源是可用的。

根据本公开的某些方面,在BC模式中,新CPU的分支目标缓冲器108和其相关联预测逻辑的操作的算法细节可以被更改以匹配旧版CPU的算法细节。以举例而不是限制的方式,如果旧版CPU在其追踪彼此接近的分支指令的能力方面受到限制,那么在BC模式中,新CPU可以匹配这个旧版CPU行为;或如果旧版CPU使用实质上不同风格的分支预测逻辑(例如,饱和计数器而不是自适应预测器),那么新CPU可以包括旧版CPU的逻辑并且在BC模式中启用所述逻辑。

根据本公开的某些方面,如果新CPU的分支目标缓冲器108和其相关联预测逻辑包括专用循环预测器,但是旧版CPU上不存在专用循环预测器,那么在BC模式中,可以禁用新CPU的专用循环预测器。

CPU核心100通常包括指令提取和解码单元110,其包括指令提取单元112、指令字节缓冲器114和指令解码单元116。CPU核心100通常还包括若干指令相关的高速缓存和指令转换后备缓冲器(ITLB)120。这些可以包括ITLB高速缓存层次结构124,其将虚拟地址高速缓存到物理地址转换信息,诸如页面表条目、页面目录条目等等。使用这个信息来将指令的虚拟地址变换成物理地址,使得指令提取单元112可以从高速缓存层次结构加载指令。以举例而不是限制的方式,可以根据高速缓存层次结构来高速缓存程序指令,所述高速缓存层次结构包括驻留在核心中的1级指令高速缓存(L1I-高速缓存)122以及在CPU核心100外部的其他高速缓存级别176;使用指令的物理地址,首先搜索这些高速缓存来找到程序指令。如果未找到指令,那么从系统存储器101加载指令。取决于体系结构,还可以存在如下文所述的包含已解码指令的微操作(micro-op)高速缓存126。

在本公开的某些方面中,在BC模式中,L1I-高速缓存124、微操作高速缓存126或ITLB高速缓存层次结构122的各种级别的大小或关联性可以被改变以匹配或更紧密地近似于它们针对旧版CPU的相应大小和关联性。以举例而不是限制的方式,改变(例如减小)ITLB高速缓存层次结构124的大小可以涉及(1)减小级别的数量;或(2)改变一个或多个级别的大小(例如,高速缓存大小、块大小、一组中的块数)。更改高速缓存的关联性可以涉及例如使全关联高速缓存作为四向或双向高速缓存来操作。尽管本公开的各方面包括指令相关的高速缓存或ITLB的大小或关联性被减小的实现方式,但是本公开不限于此类实现方式。例如,有可能旧版CPU必须具有更大的高速缓存,所述高速缓存的关联性在旧版CPU中更小(例如,双向而不是四向)。在这种情况下,新CPU可以在BC模式中运行,其中对应高速缓存的大小增加并且关联性减小以匹配或近似于旧版CPU上的高速缓存的行为。

一旦提取了程序指令,通常将指令放在指令字节缓冲器114中,等待由指令提取和解码单元110处理。解码可以是非常复杂的过程;难以每个循环解码多个指令,并且可能存在对指令对准或指令类型的限制,这限制了一个循环中可以解码多少个指令。取决于体系结构,可以将已解码指令放在微操作高速缓存126中(如果在新CPU上存在微操作高速缓存),使得可以绕过解码阶段以便随后使用程序指令。

在本公开的某些方面中,在BC模式中,新CPU的指令提取和解码单元110的操作的算法细节可以被更改以匹配旧版CPU的算法细节。以举例而不是限制的方式,如果旧版CPU将解码限于在指令字节缓冲器114中的特定区域内具有操作码的指令,那么新CPU可以类似地限制解码。

在本公开的某些方面中,如果微操作高速缓存126在新CPU上存在并且在旧版CPU上不存在,那么在BC模式中,可以禁用新CPU的微操作高速缓存126。

通常将已解码指令传送到其他用于分派和调度的单元130。这些单元可以使用停用队列132来追踪遍及CPU管线的剩余部分的指令的状态。并且,由于在许多CPU体系结构上可用的通用和SIMD寄存器的数量有限,可以执行寄存器重命名,其中当在被执行的指令流中遇到逻辑(也称为体系结构的)寄存器时,指派物理寄存器140来表示它们。物理寄存器140可以包括单指令多数据(SIMD)寄存器组142和通用(GP)寄存器组144,其大小可以远大于在特定CPU体系结构上可用的逻辑寄存器的数量,并且因此性能可以得到显著增加。在执行寄存器重命名134后,通常将指令放在调度队列136中,每个循环可以从调度队列136选择若干指令(基于依赖性)来由执行单元150执行。

在本公开的某些方面中,在BC模式中,CPU的停用队列132的大小、调度队列136的大小或SIMD寄存器组142或GP寄存器组144的大小可以被减小以匹配或更紧密地近似于它们针对旧版CPU的相应大小。为了清楚起见,这种减小采取减小资源的可用部分的形式,例如,限制在BC模式中可供应用程序使用的物理寄存器的数量;当不在BC模式中时,全部寄存器组将可供应用程序使用。

执行单元150通常包括:对SIMD寄存器组142中所包含的128位或更宽SIMD寄存器中所包含的多个数据字段执行若干并行操作的SIMD管152、对GP寄存器组144中所包含的GPR执行若干逻辑运算、算术运算和混杂运算的算术和逻辑单元(ALU)154,以及计算地址的地址生成单元(AGU)156,存储器应从所述地址进行存储或加载。每个类型的执行单元可以有多个实例,并且所述实例可以具有不同能力,例如特定SIMD管152可以能够执行浮点乘法运算但是不能执行浮点加法运算。

在本公开的某些方面中,在BC模式中,ALU、AGU或SIMD管的可用数量可以被减小以匹配或更紧密地近似于存在于旧版CPU上的此类单元的相应数量。

在本公开的某些方面中,在BC模式中,新CPU的指令执行的延时可以用这种方式更改以便等于或更接近旧版CPU的延时;例如,在BC模式中,新CPU上的除法运算的延时可以延长(例如,通过更缓慢地计算结果,或通过延迟将结果传输到管线的后续阶段)以匹配或更紧密地近似于旧版CPU上的除法运算的延时。

存储和加载通常在存储队列162和加载队列164中进行缓冲,使得许多存储操作可以并行执行。为了帮助存储器操作,CPU核心100通常包括若干数据相关的高速缓存和数据转换后备缓冲器(DTLB)170。DTLB高速缓存层次结构172将虚拟地址高速缓存到物理地址转换,诸如页面表条目、页面目录条目等等;使用这个信息来将存储器操作的虚拟地址变换成物理地址,使得可以从系统存储器存储或加载数据。数据通常被高速缓存在驻留在核心中的1级数据高速缓存(L1D-高速缓存)174以及在核心100外部的其他高速缓存级别176中。

在本公开的某些方面中,在BC模式中,L1D-高速缓存174或DTLB高速缓存层次结构172的各种级别的大小或关联性可以被减小以匹配或更紧密地近似于它们针对旧版CPU的相应大小和关联性。在本公开的某些方面中,在BC模式中,CPU的存储队列162或加载队列164的大小(例如,可允许的未完成存储或加载的数量)可以被减小以匹配或更紧密地近似于它们针对旧版CPU的相应大小。

图2是示出根据本公开的各方面的方法的可能过程流程的一个实例的流程图。所述方法在201处开始,例如,从将应用程序加载到具有新CPU的系统上开始。经由检查软件ID、软件校验和、与软件相关联的元数据、媒体类型或其他机制,确定应用程序是针对新CPU设计的还是针对系统的先前版本设计的,如210处所指示。这种确定可以在系统上运行的软件中或在系统的硬件中实现。当确定所加载应用程序意图用于新CPU时,系统可以正常运行,如220处所指示。例如,CPU可以在不限制可用资源、不禁用特征、不更改指令执行的延时或不更改算法细节的情况下正常运行以便匹配或近似于旧版CPU的行为。

当确定所加载应用程序意图用于旧版CPU时,CPU在BC模式中运行,其中所选择可用资源受到限制242,在旧版CPU上不存在的所选择特征被禁用244,指令执行的延时被更改246,或算法细节被更改248,或这些中的两个或更多个的某种组合,以便匹配或近似于旧版CPU的行为。以上讨论了这些可能性的实例。

以举例而不是限制的方式,为了在所选择资源受到限制242的情况下操作所述CPU,BC模式可以由新CPU的硬件的合适配置、由运行CPU的操作系统的合适配置或两者的某种组合来实现。例如,如上文所讨论,在BC模式中,CPU的间接目标阵列106的大小、返回地址堆栈104的大小或分支目标缓冲器108的大小可以被减小以匹配或更紧密地近似于它们针对旧版CPU的相应大小。以举例而不是限制的方式,相关硬件可以被配置成使得在BC模式中,操作系统或CPU固件可以减小间接目标阵列106的大小以便匹配或更紧密地近似于它们针对旧版CPU的相应大小。以下伪码示出如何可以实现这种情况的实例:

可以用类似的方式减小返回地址堆栈104的大小或分支目标缓冲器108的大小或其他可用资源。

以类似的方式,为了在所选择特征被禁用244的情况下操作CPU,新CPU上存在的在旧版CPU上不存在的某些硬件资源(例如,微操作高速缓存126)可以被配置成使得它们可以在BC模式中由操作系统或CPU固件禁用。可选地,新CPU上存在的在旧版CPU上不存在的硬件资源可以被配置成使得它们在BC模式中被应用程序忽略。

以举例而不是限制的方式,为了在新CPU的指令执行的延时被更改246以匹配或近似于旧版CPU的延时的情况下操作所述CPU,执行单元150的硬件可以被配置成在BC模式中添加“无操作”指令的等效物来获得BC模式中所需的延时。

以举例而不是限制的方式,为了在新CPU的一个或多个单元的操作的算法细节被更改248的情况下操作新CPU。以举例而不是限制的方式,分支预测单元102的操作的算法细节可以在BC模式中被更改。例如,如上文所讨论,如果旧版CPU在其追踪彼此接近的分支指令的行为的能力方面受到限制,那么在BC模式中,分支预测单元102可以被配置成在BC模式中匹配这个旧版CPU行为。可选地,如果旧版CPU使用实质上不同风格的分支预测逻辑(例如,饱和计数器而不是自适应预测器),那么新CPU的分支预测单元102可以包括旧版CPU的可以在BC模式中启用的逻辑。在其他实现方式中,可以利用可以在BC模式中启用的旧版逻辑来类似地配置新CPU的指令提取和解码单元110、分派和调度单元130或执行单元150的操作的算法细节。

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

系统300总体上包括中央处理单元(CPU)320,所述CPU 320可以包括CPU核心和在图1中描述并且在上文讨论的类型的其他特征。以举例而不是限制的方式,CPU 320可以是加速处理单元(APU)310的一部分,所述APU 310包括处于单个芯片上的CPU 320和图形处理单元(GPU)330。在替代实现方式中,CPU 320和GPU 330可以实现为单独芯片上的单独硬件部件。

系统300还可以包括存储器340。存储器340可以任选地包括可供CPU 320和GPU 330访问的主存储器单元。CPU 320和GPU 330可以各自包括一个或多个处理器核心,例如,单个核心、两个核心、四个核心、八个核心或更多个核心。CPU 320和GPU 330可被配置来使用数据总线390访问一个或多个存储器单元,并且在一些实现方式中,系统300包括两个或更多个不同总线可能是有用的。

存储器340可以包括呈集成电路形式的一个或多个存储器单元,所述集成电路提供可访问的存储器,例如,RAM、DRAM等等。存储器包含可执行指令,所述可执行指令被配置来在执行时实现图2的方法以便确定当运行原始针对在旧版CPU上执行所创建的应用程序时,以BC模式操作CPU 320。另外,存储器340可以包括专用图形存储器,用于暂时存储图形资源、图形缓冲器和用于图形渲染管线的其他图形数据。

CPU 320可以被配置来执行CPU代码,所述代码可以包括操作系统(OS)321或应用程序322(例如,视频游戏)。OS 321可以被配置来实现以BC模式操作CPU 320的某些特征,如上文所讨论。CPU代码可以包括图形应用程序编程接口(API)324,用于基于应用程序322的状态向由GPU 330实现的程序发出绘图命令或绘图调用。CPU代码还可以实现物理模拟和其他功能。所述代码的用于OS 321、应用程序322或API 324中的一个或多个的部分可以存储在存储器340中、在CPU内部或外部的高速缓存中或可供CPU 320访问的大容量存储装置中。

系统300还可以包括众所周知的支持功能350,所述支持功能350可以例如通过总线390与系统的其他部件通信。此类支持功能可以包括但不限于输入/输出(I/O)元件352、可以包括分别用于CPU和GPU的单独时钟的一个或多个时钟356,以及可以在CPU 320外部的一个或多个级别的高速缓存358。系统300可以任选地包括大容量存储装置360,诸如磁盘驱动器、CD-ROM驱动器、闪存、磁带驱动器、蓝光驱动器等等,用来存储程序和/或数据。在一个实例中,大容量存储装置360可以接收计算机可读介质362,所述计算机可读介质362包含原始设计成在具有旧版CPU的系统上运行的旧版应用程序。可选地,旧版应用程序362(或其部分)可以存储在存储器340中或部分地存储在高速缓存358中。

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

系统300还可以包括网络接口372,用来使所述装置能够通过网络与其他装置通信。网络可以是例如局域网(LAN)、广域网(诸如因特网)、个人局域网(诸如蓝牙网络)或其他类型的网络。所示出并且描述的部件中的各个部件可以在硬件、软件或固件或这些中的两个或更多个的某种组合中实现。

根据本公开的各方面,CPU 320可以包括硬件部件,诸如图1的CPU核心100的部件,所述部件可以在BC模式中操作,其中所选择可用资源受到限制242,在旧版CPU上不存在的所选择特征被禁用244,指令执行的延时被更改246,或算法细节被更改248或这些中的两个或更多个的某种组合,以便匹配或近似于旧版CPU的行为,如以上参考图2所讨论。

本公开的各方面克服了在针对旧版系统编写的程序在更强大的新系统上运行时产生的向后兼容性问题。通过在所选择可用资源受到限制、在旧版CPU上不存在的所选择特征被禁用、指令执行的延时被更改或算法细节被更改或这些中的两个或更多个的某种组合的情况下以BC模式运行新CPU,新CPU可以匹配或近似于旧版CPU的行为。

虽然以上是对本发明的优选实施方案的完整描述,但是可以使用各种替代、修改和等效物。因此,本发明的范围不应参考以上描述来确定,而是应参考随附权利要求书以及其完整的等效物范围来确定。本文所描述的任何特征(不论优选与否)可与本文所描述的任何其他特征组合(不论优选与否)。在以下权利要求书中,不定冠词“一个”或“一种”是指冠词后的一个或多个项目的数量,除非另外明确说明。如本文所用,在替代例中的一列元件中,术语“或”用作包括含义,例如,“X或Y”只涵盖X、只涵盖Y或涵盖X和Y两者一起,除非另外明确说明。作为替代例列出的两个或更多个元件可以组合在一起。随附权利要求书不应被理解为包括装置加功能限制,除非在给定权利要求中使用短语“用于……的装置”明确陈述了这种限制。

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