用于向后兼容性的欺骗CPUID的制作方法

文档序号:16049864发布日期:2018-11-24 11:11阅读:951来源:国知局

本申请要求提交于2016年1月22日的在共同转让之前的美国临时专利申请号62/286,280的权益,该专利申请的全部内容以引用的方式并入本文。

背景技术

当新版本计算机系统(“新的装置”)发布时,希望为该系统的先前版本(“遗留装置”)编写的应用程序在新的装置上完美地运行。这种能力通常被称为相当于“遗留应用程序”的“向后兼容性”。即使新的装置能够执行为遗留装置创建的遗留应用程序,新的装置在运行那些应用程序时仍可能会无法向后兼容。新的装置和遗留装置的硬件部件的性能差异可能导致新的装置上的同步错误。这种性能差异可能源于例如新的装置的中央处理单元(cpu)相对于遗留装置的能力差异。例如,如果新的装置上的cpu比遗留装置上的cpu快,那么新的装置的另一部件仍在使用的数据可能过早地被cpu重写。

附图说明

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

图1是示出根据本公开的方面的用于实现向后兼容性的方法的流程图。

图2是示出中央处理单元(cpu)的方框图,其中用于执行图1的方法的可执行软件实现在只读存储器(rom)中。

图3是包括图2中所示的类型的cpu的装置的方框图。



技术实现要素:

与现有技术相关联的缺点通过本公开的方面克服,本公开的方面涉及一种方法,其中计算装置通过返回关于与所述计算装置上的处理器不同的处理器的信息来对来自应用程序的对关于所述计算装置上的所述处理器的信息的调用作出响应。

具体实施方式

虽然以下详细描述出于说明目的而含有许多特定细节,但是本领域的任何普通技术人员将了解,对以下细节的许多变化和更改在本发明的范围内。因此,以下描述的本发明的示例性实施方案在不失去一般性且未暗示要求保护的本发明的限制的情况下进行阐述。

引言

为了解决因cpu行为相对于遗留装置的差异造成的问题,新的装置可以在运行遗留应用程序时模仿遗留装置cpu的某些功能。模仿遗留装置的能力的关键特征是骗遗留应用程序来像其在遗留装置上运行那样作用。由于许多应用程序被设计为在不同的处理器上运行,因此现代处理器通常实现操作码或寄存器以允许软件应用程序发现处理器的细节。为了有助于向后兼容性,新的装置上的处理器可以执行操作码或供应寄存器值,以此方式响应于来自遗留应用程序的调用而返回不同的处理器信息。不同信息在本文中被称为“欺骗的处理器id”。欺骗的处理器id将选择性地将新的装置的某些特征标识为与实际上所支持的特征是不同的或完全不受支持而事实上受支持的。

方法

图1中所示的流程图中示出的方法100示出了这将如何工作的实例。具体地讲,在装置上运行的请求应用程序101从运行应用程序的处理器请求处理器id,如102处所示。处理器在104处确定请求应用程序101是否是遗留应用程序,即,最初为早期版本的装置编写的应用程序。处理器可以通过多种方式确定应用程序是为新的装置还是为遗留装置编写的。一种方式将是,如果为新的装置编写的所有应用程序在加载时向处理器报告了信息,那么将应用程序识别为是为新的装置编写的。此类信息的报告将会将应用程序识别为是为新的装置编写的,并且未能报告此类信息将会将应用程序识别为遗留应用程序。

由处理器返回到请求应用程序101的信息将会基于应用程序101是遗留应用程序还是新的应用程序(即,被编写来在装置上运行的应用程序)而有所不同。如果请求应用程序101是新的应用程序,那么处理器返回真实处理器信息,例如,运行应用程序的装置上的处理器的正确的处理器id103,如106处指示。如果请求应用程序101是遗留应用程序,那么处理器返回欺骗的处理器信息,例如,欺骗的处理器id105,如108处指示。被返回的信息可以将处理器事实上所支持的某些特征识别为是不受支持的,或指明运行应用程序的处理器是遗留处理器。

作为实例而非限制,欺骗的处理器id105可能会被经修改的cpuid指令返回,经修改的cpuid指令是受x86架构支持的操作码。通过使用cpuid操作码,软件可以确定处理器类型以及诸如各种sse指令集架构的实现方式的特征的存在。在x86架构上,cpuid操作码是字节0fh和a2h,并且eax寄存器以及在某些情况下ecx寄存器中的值指定要返回的信息。

在汇编语言中,cpuid指令不带参数,而替代地隐式使用eax寄存器来确定被返回的信息的主要类别,这通常被称为cpuid叶。在eax=0的情况下调用cpuid的应用程序将在eax寄存器中接收在返回时cpu支持的最高eax调用参数(叶),并且其它寄存器含有标识cpu制造商的供应商id。为了获得扩展功能信息,可以在eax设置的最高有效位的情况下调用cpuid。为了确定最高扩展功能调用参数,可以在eax=80000000h的情况下调用cpuid。一些叶也有子叶,在调用cpuid之前经由ecx寄存器选择子叶。

在eax=1的情况下调用cpuid返回关于eax中的cpu的步进模型、型号和系列信息(也被称为cpu的签名)、edx和ecx中的特征标志以及ebx中的附加的特征信息的信息。在eax=2的情况下调用cpuid返回指示eax、ebx、ecx和edx寄存器中的高速缓存和转换旁视缓冲器(tlb)功能的描述符列表。其它eax值返回诸如处理器序列号、线程/核心和高速缓存拓扑、扩展特征、处理器品牌、l1高速缓存和tlb标识符、经扩展的l2高速缓存特征、电源管理特征标识符以及虚拟和物理地址大小的信息。图1中所示的类型的程序可以在遗留应用程序进行查询的情况下返回对于这些值的任何或全部的正确值不同的值。

cpu

图1中所示的处理器id欺骗功能可以通过多种不同方式中的任一种实现在新的装置上。例如,新的装置可以包括rom或ram中的特殊微码,其响应于来自遗留应用程序的查询而返回欺骗的处理器id信息。图2示出了cpu200的一种可能实现方式,其中微码在作为cpu核心202的一部分的rom中实现。cpu可以包括一个或多个这样的核心。cpu核心202可以共用公共2级高速缓存204和总线接口206。每个核心202可以含有用于加载、存储、调度、解码和执行指令的逻辑单元208以及寄存器210、高速缓存212和用于指令和数据的转换旁视缓冲器(tlb)214。

在图2中所示的特定实现方式中,cpuid指令是由存储在rom218中的微码实现216,微码含有一个处理器id程序和两个不同的处理器id数据集。一个数据集(id1)用于新的装置应用程序,并且另一个数据集(id2)用于遗留装置应用程序。

在替代实现方式中,可能存在两个不同的处理器id程序,一个用于遗留应用程序,并且另一个用于新的装置应用程序。在此类实现方式中,cpu200可以在执行cpuid指令时选择性地运行一个程序或另一个程序,这取决于它正在运行的应用程序是遗留应用程序还是新的装置应用程序。在其它替代实施方式中,处理器id程序可以通过特殊专用硬件实现,例如,返回处理器id信息的某些方面可以通过硬件逻辑而不是存储在rom218中的微码来实现。在其它替代实施方式中,微码可以存储在随机存取存储器(ram)中而不是rom中。

系统

图2中所示的类型的cpu可以结合到新的装置中。如图3可见,新的装置300可以包括具有多个核心202的cpu200和具有多个计算单元(cu)304的gpu302。cpu和gpu可以经由l2高速缓存204、304、总线接口206、306和前侧总线308彼此通信并与存储器和i/o控制器310通信。存储器和i/o控制器310管理经由适当地配置的总线322往来于cpu200和gpu302与存储器312(例如,ram)、存储装置314(例如,磁盘驱动器或闪存存储器)、视频卡316、外围装置318和网络320之间的数据传送。

装置300通过在cpu200和gpu302上执行其指令来运行应用程序101。应用程序101的部分可以加载到存储器312中。在一个特定实现方式中,cpuid指令由含有处理器id程序和两个不同的处理器id数据集的微码来实现,例如,如以上关于图2所讨论。

如上指出,在替代实现方式中,可能存在两个不同的处理器id程序,一个用于遗留应用程序,并且另一个用于新的装置应用程序。在此类实现方式中,cpu200可以在执行cpuid指令时选择性地运行一个程序或另一个程序,这取决于它正在运行的应用程序是遗留应用程序还是新的装置应用程序。在其它替代实现方式中,单个处理器id程序可以返回处理器id数据,处理器id数据在一些细节上不同,这取决于查询程序是遗留应用程序还是新的装置应用程序。在其它替代实现方式中,处理器id码216可以通过特殊专用硬件实现,例如返回处理器id信息的某些方面可以通过硬件逻辑而不是存储在cpu核心202的rom218中的微码来实现。在其它替代实现方式中,微码可以存储在随机存取存储器(ram)312(例如,主存储器)中而不是rom中。

通过阻止应用程序利用即使受到支持也可能会导致定时问题的特征(如果遗留应用程序试图使用它们的话),返回欺骗的处理器特征信息可以有助于解决向后兼容性问题。

虽然以上是本发明的优选实施方案的完整描述,但是使用各种替代、修改和等效物是可能的。因此,本发明的范围不应参考以上描述进行确定,而是应替代地参考随附权利要求书以及其整个等效物范围进行确定。任何特征(不论是否是优选的)可与任何其它特征组合(不论是否是优选的)。在随附权利要求书中,除非另有明确表述,否则不定冠词“一个”或“一种”是指接在冠词之后的项中的一个或多个的数量。随附权利要求书不应被解释为包括构件加功能限制,除非这种限制在给定权利要中使用短语“用于……的构件”来明确地陈述。权利要求中没有明确表述“用于”执行指定功能的“构件”的任何元件不应被解释为35usc§112(f)中制定的“构件”或“步骤”子句。

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