CN106406849A - 通过算法匹配、禁用特征或限制性能的向后兼容性 - Google Patents

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

Info

Publication number
CN106406849A
CN106406849A CN201610576520.6A CN201610576520A CN106406849A CN 106406849 A CN106406849 A CN 106406849A CN 201610576520 A CN201610576520 A CN 201610576520A CN 106406849 A CN106406849 A CN 106406849A
Authority
CN
China
Prior art keywords
cpu
old edition
application program
new cpu
new
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610576520.6A
Other languages
English (en)
Other versions
CN106406849B (zh
Inventor
M.E.塞尔尼
D.辛普森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment America LLC
Original Assignee
Sony Computer Entertainment America LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment America LLC filed Critical Sony Computer Entertainment America LLC
Publication of CN106406849A publication Critical patent/CN106406849A/zh
Application granted granted Critical
Publication of CN106406849B publication Critical patent/CN106406849B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

在新CPU上执行应用程序的新装置确定所述应用程序是否是用于具有旧版CPU的旧版装置。当所述应用程序是用于所述旧版装置时,所述新CPU在所述新CPU的在所述旧版CPU上不存在的所选择特征被禁用的情况下,或在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下,或在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下,执行所述应用程序。

Description

通过算法匹配、禁用特征或限制性能的向后兼容性
技术领域
本公开的各方面涉及在计算机系统上执行计算机应用程序。具体地说,本公开的各方面涉及一种为针对计算机系统的较旧版本所设计的应用程序/标题提供向后兼容性的系统或方法。
背景
现代计算机系统经常针对不同计算任务使用若干不同处理器。例如,除了若干中央处理单元(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和GPU330访问的主存储器单元。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两者一起,除非另外明确说明。作为替代例列出的两个或更多个元件可以组合在一起。随附权利要求书不应被理解为包括装置加功能限制,除非在给定权利要求中使用短语“用于……的装置”明确陈述了这种限制。

Claims (23)

1.一种方法,其包括:
利用在新CPU上执行应用程序的新装置,确定所述应用程序是否是用于具有旧版CPU的旧版装置;以及
当所述新装置确定所述应用程序是用于所述旧版装置时,在所述新CPU的在所述旧版CPU上不存在的所选择特征被禁用的情况下,或在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下,或在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下,在所述新CPU上执行所述应用程序。
2.如权利要求1所述的方法,其中在所述新CPU上执行所述应用程序包括:在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下在所述新CPU上执行所述应用程序。
3.如权利要求2所述的方法,其中在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下在所述新CPU上执行所述应用程序包括:在所述新CPU的分支目标缓冲器和相关联预测逻辑的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应分支目标缓冲器的操作的算法细节的情况下操作所述新CPU。
4.如权利要求2所述的方法,其中在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下在所述新CPU上执行所述应用程序包括:在所述CPU的指令解码单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的指令解码单元的操作的算法细节的情况下操作所述新CPU。
5.如权利要求1所述的方法,其中在所述新CPU上执行所述应用程序包括:在所述新CPU的在旧版CPU上不存在的所选择特征被禁用的情况下在所述新CPU上执行所述应用程序。
6.如权利要求5所述的方法,其中在所述新CPU的在所述旧版CPU上不存在的所选择特征被禁用的情况下在所述新CPU上执行所述应用程序包括:当所述新CPU和其相关联预测逻辑包括专用循环预测器但是所述旧版CPU不包括时,禁用所述新CPU的所述专用循环预测器。
7.如权利要求5所述的方法,其中在所述新CPU的在旧版CPU上不存在的所选择特征被禁用的情况下在所述新CPU上执行所述应用程序包括:当所述新CPU包括微操作高速缓存但是所述旧版CPU不包括时,禁用所述新CPU的所述微操作高速缓存。
8.如权利要求1所述的方法,其中在所述新CPU上执行所述应用程序包括:在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下在所述新CPU上执行所述应用程序。
9.如权利要求8所述的方法,其中在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下在所述新CPU上执行所述应用程序包括:延长所述新CPU的操作的延时以匹配或近似于所述旧版CPU的所述操作的延时。
10.如权利要求9所述的方法,其中延长所述新CPU的所述操作的所述延时包括使所述新CPU上对结果的计算减速。
11.如权利要求9所述的方法,其中延长所述新CPU的所述操作的所述延时包括延迟将结果传输到CPU管线的后续阶段。
12.一种系统,其包括,
新的中央处理单元(CPU),其被配置来执行应用程序的指令,所述新CPU具有逻辑单元,所述逻辑单元被配置来:确定所述应用程序是否是用于具有旧版CPU的旧版装置的,并且当所述应用程序是用于所述旧版装置时,在所述新CPU的在所述旧版CPU上不存在的所选择特征被禁用的情况下,或在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下,或在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下,执行所述应用程序。
13.如权利要求12所述的系统,其中所述新CPU被配置来:当所述应用程序是用于所述旧版装置时,在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下执行所述应用程序。
14.如权利要求13所述的系统,其中所述新CPU被配置来:通过更改所述新CPU的分支目标缓冲器和相关联预测逻辑的操作的算法细节以匹配或近似于所述旧版CPU的对应分支目标缓冲器的操作的算法细节,来在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下执行所述应用程序。
15.如权利要求13所述的系统,其中所述新CPU被配置来:通过更改指令解码单元的操作的算法细节以匹配或近似于所述旧版CPU的指令解码单元的操作的算法细节,来在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下执行所述应用程序。
16.如权利要求12所述的系统,其中所述新CPU被配置来:当所述应用程序是用于所述旧版装置时,在所述新CPU的在旧版CPU上不存在的所选择特征被禁用的情况下执行所述应用程序。
17.如权利要求16所述的系统,其中所述新CPU被配置来:当所述新CPU和其相关联预测逻辑包括专用循环预测器但是所述旧版CPU不包括时,通过禁用所述新CPU的所述专用循环预测器,来在所述新CPU的在所述旧版CPU上不存在的所选择特征被禁用的情况下执行所述应用程序。
18.如权利要求16所述的系统,其中所述新CPU被配置来:当所述新CPU包括微操作高速缓存但是所述旧版CPU不包括时,通过禁用所述新CPU的所述微操作高速缓存来在所述新CPU的在旧版CPU上不存在的所选择特征被禁用的情况下执行所述应用程序。
19.如权利要求12所述的系统,其中所述新CPU被配置来:在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下执行所述应用程序。
20.如权利要求19所述的系统,其中所述新CPU被配置来:通过延长所述新CPU的操作的延时以匹配或近似于所述旧版CPU的所述操作的延时,来在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下执行所述应用程序。
21.如权利要求20所述的系统,其中延长所述新CPU的所述操作的所述延时包括使所述新CPU上对结果的计算减速。
22.如权利要求20所述的系统,其中延长所述新CPU的所述操作的所述延时包括延迟将结果传输到CPU管线的后续阶段。
23.一种非暂态计算机可读介质,其具有在其中体现的可执行指令,所述指令被配置来在所述指令执行时实现方法,所述方法包括:
利用在新CPU上执行应用程序的新装置,确定所述应用程序是否是用于具有旧版CPU的旧版装置;以及
当所述新装置确定所述应用程序是用于所述旧版装置时,在所述新CPU的在所述旧版CPU上不存在的所选择特征被禁用的情况下,或在所述新CPU的指令执行的延时被更改以匹配或近似于所述旧版CPU的延时的情况下,或在所述新CPU的一个或多个单元的操作的算法细节被更改以匹配或近似于所述旧版CPU的对应单元的操作的算法细节的情况下,在所述新CPU上执行所述应用程序。
CN201610576520.6A 2015-07-27 2016-07-20 提供向后兼容性的方法和系统、非暂态计算机可读介质 Active CN106406849B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/810,334 US10235219B2 (en) 2015-07-27 2015-07-27 Backward compatibility by algorithm matching, disabling features, or throttling performance
US14/810,334 2015-07-27

Publications (2)

Publication Number Publication Date
CN106406849A true CN106406849A (zh) 2017-02-15
CN106406849B CN106406849B (zh) 2020-01-03

Family

ID=57883554

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610576520.6A Active CN106406849B (zh) 2015-07-27 2016-07-20 提供向后兼容性的方法和系统、非暂态计算机可读介质

Country Status (5)

Country Link
US (1) US10235219B2 (zh)
JP (3) JP6837011B2 (zh)
CN (1) CN106406849B (zh)
TW (1) TWI654562B (zh)
WO (1) WO2017019287A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471658A (zh) * 2018-11-19 2019-03-15 四川长虹电器股份有限公司 一种基于容器的快速搭建靶机环境的方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9760113B2 (en) 2015-02-20 2017-09-12 Sony Interactive Entertainment America Llc Backward compatibility through use of spoof clock and fine grain frequency control
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing
KR102455675B1 (ko) 2016-01-22 2022-10-17 주식회사 소니 인터랙티브 엔터테인먼트 하위 호환성을 위한 cpuid 스푸핑
JP6728370B2 (ja) 2016-01-22 2020-07-22 株式会社ソニー・インタラクティブエンタテインメント 下位互換性のためのレガシーバス動作のシミュレーション
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10275239B2 (en) 2016-03-30 2019-04-30 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
US10684846B2 (en) * 2017-10-17 2020-06-16 Microsoft Technology Licensing, Llc Using semantic annotations to control compatibility behaviors

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772315B1 (en) * 2001-05-24 2004-08-03 Rambus Inc Translation lookaside buffer extended to provide physical and main-memory addresses
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
CN101192148A (zh) * 2006-12-01 2008-06-04 深圳迈瑞生物医疗电子股份有限公司 兼容新旧应用程序的数据处理方法及其数据存储方法
CN101896892A (zh) * 2007-11-07 2010-11-24 高通股份有限公司 可配置的翻译旁视缓冲器
CN104011669A (zh) * 2011-12-22 2014-08-27 英特尔公司 用于提交指令的选择性执行的方法、设备和系统
US20140282425A1 (en) * 2013-03-18 2014-09-18 Microsoft Corporation Application testing and analysis

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS649528A (en) * 1987-07-02 1989-01-12 Pfu Ltd Function control system by mask register
US7081893B2 (en) 2001-10-10 2006-07-25 Sony Computer Entertainment America Inc. System and method for point pushing to render polygons in environments with changing levels of detail
AU2002335799A1 (en) 2001-10-10 2003-04-22 Sony Computer Entertainment America Inc. System and method for environment mapping
US7024519B2 (en) 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US20050154915A1 (en) 2004-01-09 2005-07-14 Peterson Matthew T. Networked computer user identification and authentication apparatus method and system
US7401058B2 (en) * 2004-04-29 2008-07-15 University Of Massachusetts Artificial neuron with phase-encoded logic
US7260702B2 (en) 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
US8914606B2 (en) 2004-07-08 2014-12-16 Hewlett-Packard Development Company, L.P. System and method for soft partitioning a computer system
US8888600B2 (en) * 2004-08-25 2014-11-18 Igt Emulation methods and devices for a gaming machine
US7437581B2 (en) 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US7467280B2 (en) 2006-07-05 2008-12-16 International Business Machines Corporation Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache
US8462676B2 (en) 2006-10-17 2013-06-11 Intel Corporation Frame structure for support of large delay spread deployment scenarios
US8149242B2 (en) 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
JP4230504B2 (ja) 2006-11-30 2009-02-25 株式会社日立製作所 データプロセッサ
KR101358853B1 (ko) * 2007-07-11 2014-02-05 삼성전자주식회사 클럭 신호의 위상 변경 방법 및 그 방법을 이용한 메모리칩
US7836285B2 (en) * 2007-08-08 2010-11-16 Analog Devices, Inc. Implementation of variable length instruction encoding using alias addressing
JP2009110450A (ja) * 2007-10-31 2009-05-21 Sharp Corp 大規模集積回路装置
US8782384B2 (en) 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US8789138B2 (en) 2010-12-27 2014-07-22 Microsoft Corporation Application execution in a restricted application execution environment
US9411585B2 (en) * 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US20130339649A1 (en) 2012-06-15 2013-12-19 Intel Corporation Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
US9088181B2 (en) * 2012-07-27 2015-07-21 Zon Sunshades with solar power supplies for charging electronic devices
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
US9568919B2 (en) 2012-10-24 2017-02-14 Aurora Flight Sciences Corporation System and methods for automatically landing aircraft
US20140281398A1 (en) 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10134102B2 (en) 2013-06-10 2018-11-20 Sony Interactive Entertainment Inc. Graphics processing hardware for using compute shaders as front end for vertex shaders
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US10438312B2 (en) 2014-04-05 2019-10-08 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9703951B2 (en) 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing
US20170192796A1 (en) 2015-12-30 2017-07-06 Robert Bosch Gmbh Methods and systems for configuring a device using a firmware configuration block

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772315B1 (en) * 2001-05-24 2004-08-03 Rambus Inc Translation lookaside buffer extended to provide physical and main-memory addresses
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
CN101192148A (zh) * 2006-12-01 2008-06-04 深圳迈瑞生物医疗电子股份有限公司 兼容新旧应用程序的数据处理方法及其数据存储方法
CN101896892A (zh) * 2007-11-07 2010-11-24 高通股份有限公司 可配置的翻译旁视缓冲器
CN104011669A (zh) * 2011-12-22 2014-08-27 英特尔公司 用于提交指令的选择性执行的方法、设备和系统
US20140282425A1 (en) * 2013-03-18 2014-09-18 Microsoft Corporation Application testing and analysis

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109471658A (zh) * 2018-11-19 2019-03-15 四川长虹电器股份有限公司 一种基于容器的快速搭建靶机环境的方法

Also Published As

Publication number Publication date
CN106406849B (zh) 2020-01-03
US20170031732A1 (en) 2017-02-02
US10235219B2 (en) 2019-03-19
JP2021077408A (ja) 2021-05-20
JP2018522335A (ja) 2018-08-09
TW201704991A (zh) 2017-02-01
JP7284199B2 (ja) 2023-05-30
TWI654562B (zh) 2019-03-21
JP2023106502A (ja) 2023-08-01
JP6837011B2 (ja) 2021-03-03
WO2017019287A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
CN106406849A (zh) 通过算法匹配、禁用特征或限制性能的向后兼容性
US11853763B2 (en) Backward compatibility by restriction of hardware resources
US8769539B2 (en) Scheduling scheme for load/store operations
US9361242B2 (en) Return stack buffer having multiple address slots per stack entry
US6393555B1 (en) Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US6405305B1 (en) Rapid execution of floating point load control word instructions
US20120124115A1 (en) Methods and apparatuses for converting floating point representations
US9354886B2 (en) Maintaining the integrity of an execution return address stack
US9405544B2 (en) Next fetch predictor return address stack
CN105302543A (zh) 在64位机器上运行32位操作系统
US9652242B2 (en) Apparatus for predicate calculation in processor instruction set
US20150121010A1 (en) Unified store queue
US10838729B1 (en) System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction
US10678542B2 (en) Non-shifting reservation station
US9626185B2 (en) IT instruction pre-decode
US10747539B1 (en) Scan-on-fill next fetch target prediction
US6370637B1 (en) Optimized allocation of multi-pipeline executable and specific pipeline executable instructions to execution pipelines based on criteria
JP6911102B2 (ja) アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法
US20190187990A1 (en) System and method for a lightweight fencing operation
US11422821B1 (en) Age tracking for independent pipelines
CN104823153A (zh) 引导变化预测器逻辑
US10628164B1 (en) Branch resolve pointer optimization

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant