CN103530089B - 微处理器及其操作方法 - Google Patents
微处理器及其操作方法 Download PDFInfo
- Publication number
- CN103530089B CN103530089B CN201310390517.1A CN201310390517A CN103530089B CN 103530089 B CN103530089 B CN 103530089B CN 201310390517 A CN201310390517 A CN 201310390517A CN 103530089 B CN103530089 B CN 103530089B
- Authority
- CN
- China
- Prior art keywords
- register
- microprocessor
- registers
- general
- instruction
- 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.)
- Active
Links
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
微处理器及其操作方法。该微处理器包含引用IA‑32架构的EDX与EAX通用寄存器的寄存器及引用Intel64架构的R8至R15通用寄存器的硬件寄存器。对于R8至R15各该通用寄存器分别关联相对应的唯一特定模式寄存器地址。因应特定的该相对应的唯一MSR地址的IA‑32架构读取特定模式寄存器指令,将引用R8至R15中特定的通用寄存器的寄存器的内容读入引用EDX:EAX寄存器的寄存器。因应特定R8至R15其中之一的唯一MSR地址的IA‑32架构写入MSR指令,将引用EDX:EAX寄存器的寄存器的内容写入引用R8至R15中特定的通用寄存器的寄存器。此微处理器即使在非64位模式下亦如此运作。
Description
技术领域
本发明涉及微处理器的技术领域,特别涉及微处理器多重指令集架构的支持。
背景技术
由Intel Corporation of Santa Clara,California开发出来的x86处理器架构以及由ARM Ltd.of Cambridge,UK开发出来的进阶精简指令集机器(advanced riscmachines,ARM)架构是计算机领域中两种广为人知的处理器架构。许多使用ARM或x86处理器的计算机***已经出现,并且,对于此计算机***的需求正在快速成长。现今,ARM架构处理内核主宰低功耗、低价位的计算机市场,例如手机、手持式电子产品、平板计算机、网络路由器与集线器、机顶盒等。举例来说,苹果iPhone与iPad主要的处理能力即是由ARM架构的处理内核提供。另一方面,x86架构处理器则是主宰需要高效能的高价位市场,例如膝上计算机、桌上型计算机与服务器等。然而,随着ARM内核效能的提升,以及某些x86处理器在功耗与成本的改善,前述低价位与高价位市场的界线逐渐模糊。在移动运算市场,如智能手机,这两种架构已经开始激烈竞争。在膝上计算机、桌上型计算机与服务器市场,可以预期这两种架构将会有更频繁的竞争。
前述竞争态势使得计算机装置制造业者与消费者陷入两难,因无从判断哪一个架构将会主宰市场,更精确来说,无法判定哪一种架构的软件开发商将会开发更多软件。举例来说,一些每月或每年会定期购买大量计算机***的消费个体,基于成本效率的考虑,例如大量采购的价格优惠与***维修的简化等,会倾向于购买具有相同***配置设定的计算机***。然而,这些大型消费个体中的使用者群体,对于这些具有相同***配置设定的计算机***,往往有各种各样的运算需求。具体来说,部分使用者的需求是希望能够在ARM架构处理器上执行程序,其他部分使用者的需求是希望能够在x86架构处理器上执行程序,甚至有部分使用者希望能够同时在两种架构上执行程序。此外,新的、预期外的运算需求也可能出现而需要使用另一种架构。在这些情况下,这些大型个体所投入的部分资金就变成浪费。在另一个例子中,使用者具有一个重要的应用程序只能在x86架构上执行,因而他购买了x86架构的计算机***(反之亦然)。不过,这个应用程序的后续版本改为针对ARM架构开发,并且优于原本的x86版本。使用者会希望转换架构来执行新版本的应用程序,但不幸地,他已经对于不倾向使用的架构投入相当成本。同样地,使用者原本投资于只能在ARM架构上执行的应用程序,但是后来也希望能够使用针对x86架构开发而未见于ARM架构的应用程序或是优于以ARM架构开发的应用程序,亦会遭遇这样的问题,反之亦然。值得注意的是,虽然小实体或是个人投入的金额较大实体为小,然而投资损失比例可能更高。其他类似的投资损失的例子可能出现在各种不同的运算市场中,例如由x86架构转换至ARM架构或是由ARM架构转换至x86架构的情况。最后,投资大量资源来开发新产品的运算装置制造业者,例如OEM厂商,也会陷入此架构选择的困境。如果是制造业者基于x86或ARM架构研发制造大量产品,而使用者的需求突然改变,则会导致许多有价值的研发资源的浪费。
对于运算装置的制造业者与消费者,能够保有其投资免于受到二种架构中何者胜出的影响是有帮助的,因而有必要提出一种解决方法让***制造业者发展出可让使用者同时执行x86架构与ARM架构的程序的运算装置。
使***能够执行多个指令集程序的需求由来已久,这些需求主要是因为消费者会投入相当成本在旧硬件上执行的软件程序,而其指令集往往不相容于新硬件。举例来说,IBM360***Model30即具有相容于IBM1401***的特征来缓和使用者由1401***转换至较高效能与改良特征的360***的痛苦。Model30具有360***与1401***的只读存储控制(Read Only Storage,ROS)),使其在辅助存储空间预先存入所需信息的情况下能够使用于1401***。此外,在软件程序以高阶语言开发的情况下,新的硬件开发商几乎没有办法控制为旧硬件所编译的软件程序,而软件开发商也欠缺动力为新硬件重新编译(re-compile)源代码,此情形尤其发生在软件开发商与硬件开发商是不同个体的情况。Siberman与Ebcioglu于Computer,June1993,No.6提出的文章“An Architectural Framework forSupporting HeterogeneousInstruction-Set Architectures”中公开一种利用执行于精简指令集(RISC)、超标量架构(superscalar)与超长指令字(VLIW)架构(下称原生架构)的***来改善既存复杂指令集(CISC)架构(例如IBM S/390)执行效率的技术,其所公开的***包含执行原生代码的原生引擎(native engine)与执行目的代码的迁移引擎(migrantengine),并可依据转译软件将目的代码(object code)转译为原生代码(native code)的转译效果,在这两种编码间视需要进行转换。请参照2006年5月16日公告的美国专利第7,047,394号专利案,Van Dyke et al.公开一处理器,具有用以执行原生精简指令集(Tapestry)的程序指令的执行管线,并利用硬件转译与软件转译的结合,将x86程序指令转译为原生精简指令集的指令。Nakada et al.提出具有ARM架构的前端管线与Fujitsu FR-V(超长指令字)架构的前端管线的异质多线程处理器(heterogeneous SMT processor),ARM架构前端管线用于非规则(irregular)软件程序(如操作***),而Fujitsu FR-V(超长指令字)架构的前端管线用于多媒体应用程序,其将一增加的超长指令字队列提供给FR-V超长指令字的后端管线以维持来自前端管线的指令。请参照Buchty与Weib,eds,Universitatsverlag Karlsruhe于2008年11月在First International Workshop on NewFrontiers in High-performance and Hardware-aware Computing(HipHaC’08),LakeComo,Italy,(配合MICRO-41)发表的论文集(ISBN978-3-86644-298-6)的文章“OROCHI:AMultiple Instruction Set SMT Processor”。文中提出的方法用以降低整个***在异质***单芯片(SOC)装置(如德州仪器OMAP应用处理器)内所占据的空间,此异质***单芯片装置具有一个ARM处理器内核加上一个或多个协同处理器(co-processors)(例如TMS320、多种数字信号处理器、或是多种图形处理单元(GPUs))。这些协同处理器并不分享指令执行资源,只是整合于同一芯片上的不同处理内核。
软件转译器(software translator)、或称软件模拟器(software emulator,software simulator)、动态二进制码转译器等,亦被用于支持将软件程序在与此软件程序架构不同的处理器上执行的能力。其中受欢迎的商用实例如搭配苹果麦金塔(Macintosh)计算机的Motorola68K-to-PowerPC模拟器,其可在具有PowerPC处理器的麦金塔计算机上执行68K程序,以及后续研发出来的PowerPC-to-x86模拟器,其可在具有x86处理器的麦金塔计算机上执行68K程序。位于加州圣塔克拉拉(Santa Clara,California)的全美达公司,结合超长指令字(VLIW)的内核硬件与“纯粹软件指令的转译器(亦即程序代码转译软件(Code Morphing Software))以动态地编译或模拟(emulate)x86程序代码序列”以执行x86程序代码,请参照2011年***针对全美达(Transmeta)的说明<http://en.wikipedia.org/wiki/Transmeta>。另外,参照1998年11月3日由Kelly et al.提出的美国专利第5,832,205号公告案。IBM的DAISY(Dynamic Architecture Instruction Setfrom Yorktown)***具有超长指令字(VLIW)机器与动态二进制软件转译,可提供100%的旧架构软件相容模拟。DAISY具有位于只读存储器内的虚拟机器观测器(Virtual MachineMonitor),以并行处理(parallelize)与存储超长指令字原始码(VLIW primitives)至未见于旧有***架构的部分主要存储器内,期能避免这些旧有体系架构的程序代码片段在后续程序被重新编译(re-translation)。DAISY具有高速编译器优化算法(fast compileroptimization algorithms)以提升效能。QEMU是一具有软件动态转译器的机器模拟器(machine emulator)。QEMU可在多种主***(host),如x86、PowerPC、ARM、SPARC、Alpha与MIPS,模拟多种中央处理器,如x86、PowerPC、ARM与SPARC。请参照QEMU,a Fast andPortable Dynamic Translator,Fabrice Bellard,USENIX Association,FREENIX Track:2005USENIX Annual Technical Conference,如同其开发者所称“动态转译器对目标处理器指令执行时的转换(runtime conversion),将其转换至主***指令集,所产生的二进制码存储于一转译快取以利重复取用。…QEMU[较的其他动态转译器]远为简单,因为它只连接GNC C编译器于离线(off line)时所产生的机器码片段”。同时可参照2009年6月19日Adelaide大学Lee Wang Hao的学位论文“ARM Instruction Set Simulation on Multi-core x86Hardware”。虽然以软件转译为基础的解决方案所提供的处理效能可以满足多个运算需求的一部分,但是不大能够满足多个使用者的情况。
静态(static)二进制转译是另一种具有高效能潜力的技术。不过,二进制转译技术的使用存在技术上的问题(例如自我修改程序代码(self-modifying code)、只在执行时(run-time)可知的间接分支(indirect branches)数值)以及商业与法律上的障碍(例如:此技术可能需要硬件开发商配合开发散布新程序所需的管道;对原程序散布者存在潜在的授权或是著作权侵害的风险)。
发明内容
本发明的一实施例提供一微处理器。此微处理器包含多个引用(instantiate)IA-32架构的EDX与EAX通用寄存器(GPR)的硬件寄存器以及多个引用Intel64架构的R8至R15通用寄存器的硬件寄存器。此微处理器对于R8至R15各该通用寄存器中的每一个都关联有一相对应唯一(unique)特定模式寄存器(MSR)地址。回应一特定R8至R15这些通用寄存器其中之一的该相对应唯一特定模式寄存器地址的IA-32架构的读取特定模式寄存器(RDMSR)指令,此微处理器将引用R8至R15这些通用寄存器中特定的该通用寄存器的该硬件寄存器的内容读入引用该EDX:EAX寄存器的该硬件寄存器。
本发明的一实施例提供一种微处理器的操作方法。此微处理器包含多个引用(instantiate)IA-32架构的EDX与EAX通用寄存器(GPR)的硬件寄存器以及多个引用Intel64架构的R8至R15通用寄存器的硬件寄存器。此方法包含:利用该微处理器对于R8至R15各该通用寄存器中的每一个都关联(associating)一相对应的唯一(unique)特定模式寄存器(MSR)地址。此方法并包含:该微处理器遭遇一特定R8至R15这些通用寄存器其中之一的该相对应唯一特定模式寄存器地址的IA-32架构的RDMSR指令。此方法还包含:利用该微处理器将引用R8至R15这些通用寄存器中特定的该通用寄存器的该硬件寄存器的内容读入引用该EDX:EAX寄存器的该硬件寄存器。
本发明的一实施例提供一种微处理器。此微处理器包含多个引用(instantiate)IA-32架构的EDX与EAX通用寄存器(GPR)的硬件寄存器以及多个引用Intel64架构的R8至R15通用寄存器的硬件寄存器。此微处理器对于R8至R15各该通用寄存器中的每一个都关联有一相对应唯一(unique)特定模式寄存器(MSR)地址。回应一特定R8至R15这些通用寄存器其中之一的该相对应唯一特定模式寄存器地址的IA-32架构的写入特定模式寄存器(WRMSR)指令,此微处理器将引用该EDX:EAX寄存器的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中特定的该通用寄存器的该硬件寄存器。
本发明的一实施例提供一种微处理器的操作方法。此微处理器包含多个引用(instantiate)IA-32架构的EDX与EAX通用寄存器(GPR)的硬件寄存器以及多个引用Intel64架构的R8至R15通用寄存器的硬件寄存器。此方法包含:利用该微处理器对于R8至R15各该通用寄存器中的每一个都关联(associating)一相对应的唯一(unique)特定模式寄存器(MSR)地址。此方法并包含:该微处理器遭遇一特定R8至R15这些通用寄存器其中之一的该相对应唯一特定模式寄存器地址的IA-32架构的WRMSR指令。此方法还包含:利用该微处理器将引用该EDX:EAX寄存器的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中特定的该通用寄存器的该硬件寄存器。
本发明的一实施例提供一种微处理器。此微处理器包含多个引用Intel64架构的R8至R15通用寄存器的硬件寄存器。此微处理器对于R8至R15各该通用寄存器中的每一个都关联有一相对应唯一(unique)特定模式寄存器(MSR)地址。此微处理器并包含多个引用(instantiate)进阶精简指令集机器(ARM)架构的通用寄存器(GPR)的硬件寄存器。回应一特定R8至R15这些通用寄存器其中之一的该相对应唯一特定模式寄存器地址的ARM架构的MRRC指令,此微处理器将引用R8至R15这些通用寄存器中特定的该通用寄存器的该硬件寄存器的内容读入引用这些ARM架构通用寄存器其中之二的该硬件寄存器。
本发明的一实施例提供一种微处理器。此微处理器包含多个引用Intel64架构的R8至R15通用寄存器的硬件寄存器。此微处理器对于R8至R15各该通用寄存器中的每一个都关联有一相对应唯一(unique)特定模式寄存器(MSR)地址。此微处理器并包含多个引用(instantiate)进阶精简指令集机器(ARM)架构的通用寄存器(GPR)的硬件寄存器。回应一特定R8至R15这些通用寄存器其中之一的该相对应唯一特定模式寄存器地址的ARM架构的MCRR指令,此微处理器将引用这些ARM架构通用寄存器其中之二的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中特定的该通用寄存器的该硬件寄存器。
本发明的一实施例提供一种方法。此方法包含:当一处理器处于一IA-32架构的非64位操作模式时,运作于该处理器的一第一程序,将一数据值写入Intel64架构64位通用寄存器的其中之一。此方法并包含:由该第一程序,使该处理器由运作于该IA-32架构的非64位操作模式切换至运作于一ARM架构操作模式。此方法还包含:当该处理器处于该ARM架构操作模式时,运作于该处理器的一第二程序,由该Intel64架构64位通用寄存器的该其中之一读取至少部分由该第一程序写入的该数据值。
本发明的一实施例提供一种方法。此方法包含:当处于一ARM架构操作模式时,运作于一处理器的一第一程序,将一数据值写入Intel64架构64位通用寄存器的其中之一的至少一部分。此方法亦包含:由该第一程序,使该处理器由运作于该ARM架构操作模式切换至运作于一IA-32架构操作模式。此方法还包含:当处于该IA-32架构操作模式时,运作于该处理器的一第二程序,由该Intel64架构64位通用寄存器的该其中之一读取至少部分由该第一程序写入的该数据值。
附图说明
图1是本发明执行x86程序集架构与ARM程序集架构机器语言程序的微处理器一实施例的方块图。
图2是一方块图,详细显示图1的硬件指令转译器。
图3是一方块图,详细显示图2的指令格式化程序(instruction formatter)。
图4是一方块图,详细显示图1的执行管线。
图5是一方块图,详细显示图1的寄存器档案。
图6A是一流程图,显示图1的微处理器的操作步骤。
图6B是一流程图,显示图1的微处理器的操作步骤。
图7是本发明一双内核微处理器的方块图。
图8是本发明执行x86ISA与ARM ISA机器语言程序的微处理器另一实施例的方块图。
图9是一方块图,详细显示微处理器通过启动x86ISA及ARM ISA程序来存取图1的微处理器的特定模式寄存器。
图10是一流程图,显示图1的微处理器执行存取特定模式寄存器的指令。
图11是微代码的虚拟代码处理存取特定模式寄存器的指令示意图。
图12是一方块图,显示传统x86指令集架构的AX、EAX、与RAX寄存器。
图13是一方块图,显示传统Intel64架构的十六个64位通用寄存器。
图14是一方块图,显示本发明图1的微处理器中,引用Intel64架构所定义的RAX至R15十六个64位通用寄存器的十六个64位硬件寄存器的一实施例。
图15是一方块图,显示传统Intel64架构处理器的一特定模式寄存器地址空间。
图16是一方块图,显示本发明图1的微处理器的特定模式寄存器地址空间的一实施例。
图17是一流程图,显示图1的微处理器执行x86的RDMSR指令,藉以在微处理器的特定模式寄存器地址空间内,特定一64位通用寄存器的一实施例。
图18是一方块图,显示图1的微处理器依据图17的流程所进行的操作的一实施例。
图19是一流程图显示图1的微处理器执行x86的WRMSR指令,藉以在微处理器的特定模式寄存器地址空间内,特定一64位通用寄存器的一实施例。
图20是一方块图,显示图1的微处理器依据图19的流程所进行的操作的一实施例。
图21是一流程图显示图1的微处理器执行x86的RDMSR指令,藉以在微处理器的特定模式寄存器地址空间内,特定一64位通用寄存器的另一实施例。
图22是一方块图,显示图1的微处理器依据图21的流程所进行的操作的一实施例。
图23是一流程图用以显示图1的微处理器执行x86的WRMSR指令,藉以在微处理器的特定模式寄存器地址空间内,特定一64位通用寄存器的另一实施例。
图24是一方块图,显示图1的微处理器依据图23的流程所进行的操作的一实施例。
图25是一方块图,显示图1的微处理器的特定模式寄存器地址空间的另一实施例。
图26是一流程图,显示本发明图1的微处理器在非64位操作模式下,通过特定模式寄存器地址空间取用RAX至R15这十六个x8664位通用寄存器,来提供程序除错能力。
图27是一流程图,显示本发明图1的微处理器在非64位操作模式下,通过特定模式寄存器地址空间取用RAX至R15这十六个x8664位通用寄存器,来执行对于微处理器和/或包含此微处理器的***的诊断。
图28是一方块图显示本发明图1的微处理器中,引用Intel64架构所定义的RAX至R15十六个64位通用寄存器的十六个64位硬件寄存器的一实施例,而这十六个硬件寄存器亦引用ARM指令集架构的R0至R15十六个32位通用寄存器。
图29是一流程图显示本发明图1的微处理器执行ARM指令集架构MRRC指令,此MRRC指令特定微处理器的特定模式寄存器地址空间内的x8664位通用寄存器的一实施例。
图30是一方块图,显示图1的微处理器依据图29的流程所进行的操作的一实施例。
图31是一流程图显示本发明图1的微处理器执行ARM指令集架构MCRR指令,此MCRR指令特定微处理器的特定模式寄存器地址空间内的x8664位通用寄存器的一实施例。
图32是一方块图,显示图1的微处理器依据图31的流程所进行的操作的一实施例。
图33是一流程图用以显示本发明图1的微处理器,使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个执行于非64位操作模式的x86指令集架构开机载入程序传递至ARM指令集架构操作***。
图34是一流程图用以显示本发明图1的微处理器,使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个执行于非64位操作模式的x86指令集架构开机载入程序传递至ARM指令集架构操作***的另一实施例。
图35是一流程图用以显示本发明图1的微处理器,使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个ARM指令集架构开机载入程序传递至x86指令集架构操作***的一实施例。
图36是一流程图用以显示本发明图1的微处理器,使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个ARM指令集架构开机载入程序传递至x86指令集架构操作***的另一实施例。
【符号说明】
微处理器(处理内核)100
指令快取102
硬件指令转译器104
寄存器档案106
存储器子***108
执行管线112
指令提取单元与分支预测器114
ARM程序计数器(PC)寄存器116
x86指令指标(IP)寄存器118
配置寄存器(configuration register)122
ISA指令124
微指令126
结果128
指令模式指标(instruction mode indicator)132
提取地址134
环境模式指标(environment mode indicator)136
指令格式化程序202
简单指令转译器(SIT)204
复杂指令转译器(CIT)206
多工器(mux)212
x86简单指令转译器222
ARM简单指令转译器224
微程序计数器(micro-program counter,micro-PC)232
微代码只读存储器234
微程序器(microsequencer)236
指令间接寄存器(instruction indirection register,IIR)235
微转译器(microtranslator)237
格式化ISA指令242
实行微指令(implementing microinstructions)244
实行微指令246
选择输入248
微代码地址252
只读存储器地址254
ISA指令信息255
预解码器(pre-decoder)302
指令字节队列(IBQ)304
长度解码器(length decoders)与纹波逻辑门(ripple logic)306
多工器队列(mux queue,MQ)308
多工器312
格式化指令队列(formatted instruction queue,FIQ)314
ARM指令集状态322
微指令队列401
寄存器配置表(register allocation table,RAT)402
指令调度器(instruction dispatcher)404
保留站(reservation station)406
指令发送单元(instruction issue unit)408
整数/分支(integer/branch)单元412
媒体单元(media unit)414
载入/存储(load/store)单元416
浮点(floating point)单元418
重排缓冲器(reorder buffer,ROB)422
执行单元424
ARM特定寄存器502
x86特定寄存器504
共享寄存器506
MSR地址空间1502
MSR地址空间1602
GPR MSR子地址空间2202
具体实施方式
名词定义
指令集,是定义二进制编码值的集合(即机器语言指令)与微处理器所执行操作间的对应关系。机器语言程序基本上以二进制进行编码,不过也可使用其他进位制的***,如部分早期IBM计算机的机器语言程序,虽然最终亦是以电压高低呈现二进位值的物理信号来表现,不过却是以十进位制进行编码。机器语言指令指示微处理器执行的操作如:将寄存器1内的运算元与寄存器2内的运算元相加并将结果写入寄存器3、将存储器地址0x12345678的运算元减掉指令所指定的立即运算元并将结果写入寄存器5、依据寄存器7所指定的位数移动寄存器6内的数值、若是零标志被设定时,分支到指令后方的36个字节、将存储器地址0xABCD0000的数值载入寄存器8。因此,指令集是定义各个机器语言指令使微处理器执行所欲执行的操作的二进位编码值。需了解的是,指令集定义二进位值与微处理器操作间的对应关系,并不意味着单一个二进位值就会对应至单一个微处理器操作。具体来说,在部分指令集中,多个二进位值可能会对应至同一个微处理器操作。
指令集架构(ISA),从微处理器家族的脉络来看包含(1)指令集;(2)指令集的指令所能存取的资源集(例如:存储器定址所需的寄存器与模式);以及(3)微处理器回应指令集的指令执行所产生的例外事件集(例如:除以零、分页错误、存储器保护违反等)。因为程序撰写者,如组译器与编译器的撰写者,想要作出机器语言程序在一微处理器家族执行时,就需要此微处理器家族的ISA定义,所以微处理器家族的制造者通常会将ISA定义于操作者操作手册中。举例来说,2009年3月公布的Intel64与IA-32架构软件开发者手册(Intel64andIA-32Architectures Software Developer’s Manual)即定义Intel64与IA-32处理器架构的ISA。此软件开发者手册包含有五个章节,第一章是基本架构;第二A章是指令集参考A至M;第二B章是指令集参考N至Z;第三A章是***编程指南;第三B章是***编程指南第二部分,此手册系列为本申请的参考文件。此种处理器架构通常被称为x86架构,本文中则是以x86、x86ISA、x86ISA家族、x86家族或是相似用语来说明。在另一个例子中,2010年公布的ARM架构参考手册,ARM v7-A与ARM v7-R版本Errata markup,定义ARM处理器架构的ISA。此参考手册系列为参考文件。此ARM处理器架构的ISA在此亦被称为ARM、ARM ISA、ARM ISA家族、ARM家族或是相似用语。其他众所周知的ISA家族还有IBMSystem/360/370/390与z/Architecture、DEC VAX、Motorola68k、MIPS、SPARC、PowerPC与DEC Alpha等等。ISA的定义会涵盖处理器家族,因为处理器家族的发展中,制造者会通过在指令集中增加新指令、和/或在寄存器组中增加新的寄存器等方式来改进原始处理器的ISA。举例来说,随着x86程序集架构的发展,其于Intel Pentium III处理器家族导入一组128位的多媒体扩展指令集(MMX)寄存器作为单指令多重数据流扩展(SSE)指令集的一部分,而x86ISA机器语言程序已经开发来利用XMM寄存器以提升效能,虽然现存的x86ISA机器语言程序并不使用单指令多重数据流扩展指令集的XMM寄存器。此外,其他制造商亦设计且制造出可执行x86ISA机器语言程序的微处理器。例如,超微半导体(AMD)与威盛电子(VIA Technologies)即在x86ISA增加新技术特征,如超微半导体的3DNOW!单指令多重数据流(SIMD)向量处理指令,以及威盛电子的Padlock安全引擎随机数产生器(random number generator)与先进译码引擎(advanced cryptography engine)的技术,前述技术都是采用x86ISA的机器语言程序,但却非由现有的Intel微处理器实现。以另一个实例来说明,ARM ISA原本定义ARM指令集状态具有4字节的指令。然而,随着ARM ISA的发展而增加其他指令集状态,如具有2字节指令以提升编码密度的Thumb指令集状态以及用以加速Java字节代码程序的Jazelle指令集状态,而ARM ISA机器语言程序已被发展来使用部分或所有其他ARM ISA指令集状态,即使现存的ARM ISA机器语言程序并非采用这些其他ARM ISA指令集状态。
指令集架构(ISA)机器语言程序,包含ISA指令序列,即ISA指令集对应至程序撰写者要程序执行的操作序列的二进位编码值序列。因此,x86ISA机器语言程序包含x86ISA指令序列,ARM ISA机器语言程序则包含ARM ISA指令序列。机器语言程序指令存放于存储器内,且由微处理器提取并执行。
硬件指令转译器,包含多个晶体管的配置,用以接收ISA机器语言指令(例如x86ISA或是ARM ISA机器语言指令)作为输入,并对应地输出一个或多个微指令至微处理器的执行管线。执行管线执行微指令的执行结果由ISA指令所定义。因此,执行管线通过对这些微指令的集体执行来“实现”ISA指令。也就是说,执行管线通过对于硬件指令转译器输出的实行微指令的集体执行,实现所输入ISA指令所指定的操作,以产生此ISA指令定义的结果。因此,硬件指令转译器可视为是将ISA指令“转译(translate)”为一个或多个实行微指令。本实施例所描述的微处理器具有硬件指令转译器以将x86ISA指令与ARM ISA指令转译为微指令。不过,需理解的是,硬件指令转译器并非必然可对x86使用者操作手册或是ARM使用者操作手册所定义的整个指令集进行转译,而往往只能转译这些指令中一个子集合,如同绝大多数x86ISA与ARM ISA处理器只支持其对应的使用者操作手册所定义的一个指令子集合。具体来说,x86使用者操作手册定义由硬件指令转译器转译的指令子集合,不必然就对应至所有现存的x86ISA处理器,ARM使用者操作手册定义由硬件指令转译器转译的指令子集合,不必然就对应至所有现存的ARM ISA处理器。
执行管线,是一多层级序列(sequence of stages)。此多层级序列的各个层级分别具有硬件逻辑与一硬件寄存器。硬件寄存器保持硬件逻辑的输出信号,并依据微处理器的时钟信号,将此输出信号提供至多层级序列的下一层级。执行管线可以具有多个多层级序列,例多重执行管线。执行管线接收微指令作为输入信号,并相应地执行微指令所指定的操作以输出执行结果。微指令所指定且由执行管线的硬件逻辑所执行的操作包括但不限于算数、逻辑、存储器载入/存储、比较、测试、与分支解析,对进行操作的数据格式包括但不限于整数、浮点数、字元、二进编码十进数(BCD)、与压缩格式(packed format)。执行管线执行微指令以实现ISA指令(如x86与ARM),藉以产生ISA指令所定义的结果。执行管线不同于硬件指令转译器。具体来说,硬件指令转译器产生实行微指令,执行管线则是执行这些指令,但不产生这些实行微指令。
指令快取,是微处理器内的一个随机存取存储器装置,微处理器将ISA机器语言程序的指令(例如x86ISA与ARM ISA的机器语言指令)放置其中,这些指令提取自***存储器并由微处理器依据ISA机器语言程序的执行流程来执行。具体来说,ISA定义一指令地址寄存器以持有下一个待执行ISA指令的存储器地址(举例来说,在x86ISA被定义为指令指标(IP)而在ARM ISA被定义为程序计数器(PC)),而在微处理器执行机器语言程序以控制程序流程时,微处理器会更新指令地址寄存器的内容。ISA指令被快取来供后续提取之用。当该寄存器所包含的下一个机器语言程序的ISA指令地址位于目前的指令快取中,可依据指令寄存器的内容快速地从指令快取提取ISA指令由***存储器中取出该ISA指令。尤其是,此程序基于指令地址寄存器(如指令指标(IP)或是程序计数器(PC))的存储器地址向指令快取取得数据,而非特地运用一载入或存储指令所指定的存储器地址来进行数据提取。因此,将指令集架构的指令视为数据(例如采用软件转译的***的硬件部分所呈现的数据)的专用数据快取,特地运用一载入/存储地址,而非基于指令地址寄存器的数值做存取的,就不是此处所称的指令快取。此外,可取得指令与数据的混合式快取,是基于指令地址寄存器的数值以及基于载入/存储地址,而非仅仅基于载入/存储地址,亦被涵盖在本说明对指令快取的定义内。在本说明内容中,载入指令是指将数据由存储器读取至微处理器的指令,存储指令是指将数据由微处理器写入存储器的指令。
微指令集,是微处理器的执行管线能够执行的指令(微指令)的集合。
实施例说明
本发明实施例公开的微处理器可通过硬件将其对应的x86ISA与ARMISA指令转译为由微处理器执行管线直接执行的微指令,以达到可执行x86ISA与ARM ISA机器语言程序的目的。此微指令由不同于x86ISA与ARMISA的微处理器微架构(microarchitecture)的微指令集所定义。由于本文所述的微处理器需要执行x86与ARM机器语言程序,微处理器的硬件指令转译器会将x86与ARM指令转译为微指令,并将这些微指令提供至微处理器的执行管线,由微处理器执行这些微指令以实现前述x86与ARM指令。由于这些实行微指令直接由硬件指令转译器提供至执行管线来执行,而不同于采用软件转译器的***需于执行管线执行指令前,将预先存储本机(host)指令至存储器,因此,前述微处理器具有潜力能够以较快的执行速度执行x86与ARM机器语言程序。
图1是一方块图显示本发明执行x86ISA与ARM ISA机器语言程序的微处理器100的实施例。此微处理器100具有一指令快取102;一硬件指令转译器104,用以由指令快取102接收x86ISA指令与ARM ISA指令124并将其转译为微指令126;一执行管线112,执行由硬件指令转译器104接收的微指令126以产生微指令结果128,该结果以运算元的形式回传至执行管线112;一寄存器档案106与一存储器子***108,分别提供运算元至执行管线112并由执行管线112接收微指令结果128;一指令提取单元与分支预测器114,提供一提取地址134至指令快取102;一ARM ISA定义的程序计数器寄存器116与一x86ISA定义的指令指标寄存器118,其依据微指令结果128进行更新,且提供其内容至指令提取单元与分支预测器114;以及多个配置寄存器122,提供一指令模式指标132与一环境模式指标136至硬件指令转译器104与指令提取单元与分支预测器114,并基于微指令结果128进行更新。
由于微处理器100可执行x86ISA与ARM ISA机器语言指令,微处理器100依据程序流程由***存储器(未图示)提取指令至微处理器100。微处理器100存取最近提取的x86ISA与ARM ISA的机器语言指令至指令快取102。指令提取单元114将依据由***存储器提取的x86或ARM指令字节区段,产生一提取地址134。如果是命中指令快取102,指令快取102将位于提取地址134的x86或ARM指令字节区段提供至硬件指令转译器104,否则由***存储器中提取指令集架构的指令124。指令提取单元114基于ARM程序计数器116与x86指令指标118的值产生提取地址134。具体来说,指令提取单元114会在一提取地址寄存器中维持一提取地址。任何时候指令提取单元114提取到新的ISA指令字节区段,它就会依据此区段的大小更新提取地址,并依据既有方式依序进行,直到出现一控制流程事件。控制流程事件包含例外事件的产生、分支预测器114的预测显示提取区段内有一将发生的分支(taken branch)、以及由执行管线112回应一非由分支预测器114所预测的将发生分支指令的执行结果,而对ARM程序计数器116与x86指令指标118进行的更新。指令提取单元114将提取地址相应地更新为例外处理程序地址、预测目标地址或是执行目标地址以回应一控制流程事件。在一实施例中,指令快取102是一混合快取,以存取ISA指令124与数据。值得注意的是,在此混合快取的实施例中,虽然混合快取可基于一载入/存储地址将数据写入快取或由快取读取数据,在微处理器100由混合快取提取指令集架构的指令124的情况下,混合快取基于ARM程序计数器116与x86指令指标118的数值来存取,而非基于载入/存储地址。指令快取102可以是一随机存取存储器装置。
指令模式指标132是一状态指示微处理器100当前是否正在提取、格式化(formatting)/解码、以及将x86ISA或ARM ISA指令124转译为微指令126。此外,执行管线112与存储器子***108接收此指令模式指标132,此指令模式指标132会影响微指令126的执行方式,尽管只是微指令集内的一个小集合受影响而已。x86指令指标寄存器118持有下一个待执行的x86ISA指令124的存储器地址,ARM程序计数器寄存器116持有下一个待执行的ARMISA指令124的存储器地址。为了控制程序流程,微处理器100在其执行x86与ARM机器语言程序时,分别更新x86指令指标寄存器118与ARM程序计数器寄存器116,至下一个指令、分支指令的目标地址或是例外处理程序地址。在微处理器100执行x86与ARM ISA的机器语言程序的指令时,微处理器100由***存储器提取机器语言程序的指令集架构的指令,并将其置入指令快取102以取代最近较不被提取与执行的指令。此指令提取单元114基于x86指令指标寄存器118或是ARM程序计数器寄存器116的数值,并依据指令模式指标132指示微处理器100正在提取的ISA指令124是x86或是ARM模式来产生提取地址134。在一实施例中,x86指令指标寄存器118与ARM程序计数器寄存器116可实施为一共享的硬件指令地址寄存器,用以提供其内容至指令提取单元与分支预测器114并由执行管线112依据指令模式指标132指示的模式是x86或ARM与x86或ARM的语意(semantics)来进行更新。
环境模式指标136是一状态指示微处理器100是使用x86或ARM ISA的语意在此微处理器100所操作的多种执行环境,例如虚拟存储器、例外事件、快取控制、与全局执行时间保护。因此,指令模式指标132与环境模式指标136共同产生多个执行模式。在第一种模式中,指令模式指标132与环境模式指标136都指向x86ISA,微处理器100作为一般的x86ISA处理器。在第二种模式中,指令模式指标132与环境模式指标136都指向ARM ISA,微处理器100作为一般的ARM ISA处理器。在第三种模式中,指令模式指标132指向x86ISA,不过环境模式指标136则是指向ARM ISA,此模式有利于在ARM操作***或是超管理器的控制下执行使用者模式x86机器语言程序;相反地,在第四种模式中,指令模式指标132是指向ARM ISA,不过环境模式指标136则是指向x86ISA,此模式有利于在x86操作***或超管理器的控制下执行使用者模式ARM机器语言程序。指令模式指标132与环境模式指标136的数值在重置(reset)之初就已确定。在一实施例中,此初始值被视为微代码常数进行编码,不过可通过熔断配置熔丝和/或使用微代码修补进行修改。在另一实施例中,此初始值则是由一外部输入提供至微处理器100。在一实施例中,环境模式指标136只在由一重置至ARM(reset-to-ARM)指令124或是一重置至x86(reset-to-x86)指令124执行重置后才会改变(请参照下述图6A及图6B);亦即,在微处理器100正常运作而未由一般重置、重置至x86或重置至ARM指令124执行重置时,环境模式指标136并不会改变。
硬件指令转译器104接收x86与ARM ISA的机器语言指令124作为输入,相应地提供一个或多个微指令126作为输出信号以实现x86或ARM ISA指令124。执行管线112执行前述一个或多个微指令126,其集体执行的结果实现x86或ARM ISA指令124。也就是说,这些微指令126的集体执行可依据输入端所指定的x86或ARM ISA指令124,来执行x86或是ARM ISA指令124所指定的操作,以产生x86或ARM ISA指令124所定义的结果。因此,硬件指令转译器104将x86或ARM ISA指令124转译为一个或多个微指令126。硬件指令转译器104包含一组晶体管,以一预设方式进行配置来将x86ISA与ARM ISA的机器语言指令124转译为实行微指令126。硬件指令转译器104并具有布林逻辑门以产生实行微指令126(如图2所示的简单指令转译器204)。在一实施例中,硬件指令转译器104并具有一微代码只读存储器(如图2中复杂指令转译器206的元件234),硬件指令转译器104利用此微代码只读存储器,并依据复杂ISA指令124产生实行微指令126,这部分将在图2的说明内容会有进一步的说明。就一优选实施例而言,硬件指令转译器104不必然要能转译x86使用者操作手册或是ARM使用者操作手册所定义的整个ISA指令124集,而只要能够转译这些指令的一个子集合即可。具体来说,由x86使用者操作手册定义且由硬件指令转译器104转译的ISA指令124的子集合,并不必然对应至任何Intel开发的既有x86ISA处理器,而由ARM使用者操作手册定义且由硬件指令转译器104转译的ISA指令124的子集合并不必然对应至任何由ARM Ltd.开发的既有的ISA处理器。前述一个或多个用以实现x86或ARM ISA指令124的实行微指令126,可由硬件指令转译器104一次全部提供至执行管线112或是依序提供。本实施例的优点在于,硬件指令转译器104可将实行微指令126直接提供至执行管线112执行,而不需要将这些微指令126存储于设置两者间的存储器。在图1的微处理器100的实施例中,当微处理器100执行x86或是ARM机器语言程序时,微处理器100每一次执行x86或是ARM指令124时,硬件指令转译器104就会将x86或ARM机器语言指令124转译为一个或多个微指令126。不过,图8的实施例则是利用一微指令快取以避免微处理器100每次执行x86或ARM ISA指令124所会遭遇到的重复转译的问题。硬件指令转译器104的实施例在图2会有更详细的说明。
执行管线112执行由硬件指令转译器104提供的实行微指令126。基本上,执行管线112是一通用高速微指令处理器。虽然本文所描述的功能由具有x86/ARM特定特征的执行管线112执行,但大多数x86/ARM特定功能其实是由此微处理器100的其他部分,如硬件指令转译器104,来执行。在一实施例中,执行管线112执行由硬件指令转译器104接收到的实行微指令126的寄存器重命名、超标量发布、与非循序执行。执行管线112在图4会有更详细的说明。
微处理器100的微架构包含:(1)微指令集;(2)微指令集的微指令126所能取用的资源集,此资源集是x86与ARM ISA的资源的超集合(superset);以及(3)微处理器100相应于微指令126的执行所定义的微例外事件(micro-exception)集,此微例外事件集是x86ISA与ARM ISA的例外事件的超集合。此微架构不同于x86ISA与ARM ISA。具体来说,此微指令集在许多面向不同于x86ISA与ARM ISA的指令集。首先,微指令集的微指令指示执行管线112执行的操作与x86ISA与ARM ISA的指令集的指令指示微处理器执行的操作并非一对一对应。虽然其中许多操作相同,不过,仍有一些微指令集指定的操作并非x86ISA和/或ARM ISA指令集所指定。相反地,有一些x86ISA和/或ARM ISA指令集指定的操作并非微指令集所指定。其次,微指令集的微指令以不同于x86ISA与ARM ISA指令集的指令的编码方式进行编码。亦即,虽然有许多相同的操作(如:相加、偏移、载入、返回)在微指令集以及x86与ARMISA指令集中都有指定,微指令集与x86或ARMISA指令集的二进制操作码值对应表并没有一对一对应。微指令集与x86或ARM ISA指令集的二进制操作码值对应表相同通常是巧合,其间仍不具有一对一的对应关系。第三,微指令集的微指令位栏与x86或是ARM ISA指令集的指令位栏也不是一对一对应。
整体而言,微处理器100可执行x86ISA与ARM ISA机器语言程序指令。然而,执行管线112本身无法执行x86或ARM ISA机器语言指令;而是执行由x86ISA与ARM ISA指令转译成的微处理器100微架构的微指令集的实行微指令126。然而,虽然此微架构与x86ISA以及ARMISA不同,本发明亦提出其他实施例将微指令集与其他微架构特定的资源开放给使用者。在这些实施例中,此微架构可有效地作为在x86ISA与ARM ISA外之一个具有微处理器所能执行的机器语言程序的第三ISA。
下表(表1)描述本发明微处理器100的一实施例的微指令集的微指令126的一些位栏。
表1
下表(表2)描述本发明微处理器100的一实施例的微指令集的一些微指令。
表2
微处理器100也包含一些微架构特定的资源,如微架构特定的通用寄存器、媒体寄存器与区段寄存器(如用于重命名的寄存器或由微代码所使用的寄存器)以及未见于x86或ARM ISA的控制寄存器,以及一私有随机存取存储器(PRAM)。此外,此微架构可产生例外事件,亦即前述的微例外事件。这些例外事件未见于x86或ARM ISA或是由它们所指定,通常是微指令126与相关微指令126的重新执行(replay)。举例来说,这些情形包含:载入错过(load miss)的情况,其执行管线112假设载入动作并于错过时重新执行此载入微指令126;错过转译后备缓冲区(TLB),在查表(page table walk)与转译后备缓冲区填满后,重新执行此微指令126;浮点微指令126接收一异常运算元(denormal operand)但此运算元被评估为正常,需在执行管线112正常化此运算元后重新执行此微指令126;一载入微指令126执行后检测到一个更早的存储微指令126与其地址冲突(address-colliding),需要重新执行此载入微指令126。需理解的是,本文表1所列的位栏,表2所列的微指令,以及微架构特定的资源与微架构特定的例外事件,只是作为例示说明本发明的微架构,而非穷尽本发明的所有可能实施例。
寄存器档案106包含微指令126所使用的硬件寄存器,以持有资源和/或目的运算元。执行管线112将其结果128写入寄存器档案106,并由寄存器档案106为微指令126接收运算元。硬件寄存器是引用(instantiate)x86ISA定义与ARM ISA定义的通用寄存器共享寄存器档案106中的一些寄存器。举例来说,在一实施例中,寄存器档案106引用十五个32位的寄存器,由ARM ISA寄存器R0至R14以及x86ISA累积寄存器(EAX register)至R14D寄存器所共享。因此,如果是一第一微指令126将一数值写入ARM R2寄存器,随后一后续的第二微指令126读取x86累积寄存器将会接收到与第一微指令126写入相同的数值,反之亦然。此技术特征有利于使x86ISA与ARM ISA的机器语言程序得以快速通过寄存器进行沟通。举例来说,假设在ARM机器语言操作***执行的ARM机器语言程序能使指令模式132改变为x86ISA,并将控制权转换至一x86机器语言程序以执行特定功能,因为x86ISA可支持一些指令,其执行操作的速度快于ARM ISA,在这种情形下将有利于执行速度的提升。ARM程序可通过寄存器档案106的共享寄存器提供需要的数据给x86执行程序。反之,x86执行程序可将执行结果提供至寄存器档案106的共享寄存器内,以使ARM程序在x86执行程序回复后可见到此执行结果。相似地,在x86机器语言操作***执行的x86机器语言程序可使指令模式132改变为ARM ISA并将控制权转换至ARM机器语言程序;此x86程序可通过寄存器档案106的共享寄存器提供所需的数据给ARM执行程序,而此ARM执行程序可通过寄存器档案106的共享寄存器提供执行结果,以使x86程序在ARM执行程序回复后可见到此执行结果。因为ARM R15寄存器是一独立引用的ARM程序计数器寄存器116,因此,引用x86R15D寄存器的第十六个32位寄存器并不分享给ARM R15寄存器。此外,在一实施例中,x86的十六个128位XMM0至XMM15寄存器与十六个128位进阶单指令多重数据扩展(Advanced SIMD(“Neon”))寄存器的32位区段被分享给三十二个32位ARM VFPv3浮点寄存器。寄存器档案106亦引用标志寄存器(即x86EFLAGS寄存器与ARM条件标志寄存器),以及x86ISA与ARM ISA所定义的多种控制权与状态寄存器,这些架构控制与状态寄存器包括x86架构的特定模式寄存器(model specific registers,MSRs)与保留给ARM架构的协同处理器(8-15)寄存器。此寄存器档案106亦引用非架构寄存器,如用于寄存器重命名或是由微代码234所使用的非架构通用寄存器,以及非架构x86特定模式寄存器与实作定义的或是由制造商指定的ARM协同处理器寄存器。寄存器档案106在图5会有更进一步的说明。
存储器次***108包含一由快取存储器构成的快取存储器阶层架构(在一实施例中包含第1层(level-1)指令快取102、第1层(level-1)数据快取与第2层混合快取)。此存储器次***108包含多种存储器请求队列,如载入、存储、填入、窥探、合并写入归并缓冲区。存储器次***亦包含一存储器管理单元(MMU)。存储器管理单元具有转译后备缓冲区(TLBs),尤以独立的指令与数据转译后备缓冲区为佳。存储器次***还包含一查表引擎(tablewalk engine)以获得虚拟与实体地址间的转译,来回应转译后备缓冲区的错失。虽然在图1中指令快取102与存储器次***108显示为各自独立,不过,在逻辑上,指令快取102亦是存储器次***108的一部分。存储器次***108被设定使x86与ARM机器语言程序分享一共同的存储器空间,以使x86与ARM机器语言程序容易通过存储器互相沟通。
存储器次***108得知指令模式132与环境模式136,使其能够在适当ISA内容中执行多种操作。举例来说,存储器次***108依据指令模式指标132指示为x86或ARM ISA,来执行特定存储器存取违规的检验(例如过限检验(limit violation check))。在另一实施例中,回应环境模式指标136的改变,存储器次***108会更新(flush)转译后备缓冲区;不过在指令模式指标132改变时,存储器次***108并不相应地更新转译后备缓冲区,以在前述指令模式指标132与环境模式指标136分指x86与ARM的第三与第四模式中提供较佳的效能。在另一实施例中,回应一转译后备缓冲区错失(TKB miss),查表引擎依据环境模式指标136指示为x86或ARM ISA,从而决定利用x86分页表或ARM分页表来执行一分页查表动作以取出转译后备缓冲区。在另一实施例中,如果是环境状态指标136指示为x86ISA,存储器次***108检查会影响快取策略的x86ISA控制寄存器(如CR0CD与NW位)的架构状态;如果是环境模式指标136指示为ARM ISA,则检查相关的ARM ISA控制寄存器(如SCTLR I与C位)的架构模式。在另一实施例中,如果是状态指标136指示为x86ISA,存储器次***108检查会影响存储器管理的x86ISA控制寄存器(如CR0PG位)的架构状态;如果是环境模式指标136指示为ARMISA,则检查相关的ARM ISA控制寄存器(如SCTLR M位)的架构模式。在另一实施例中,如果是状态指标136指示为x86ISA,存储器次***108检查会影响对准检测的x86ISA控制寄存器(如CR0AM位)的架构状态,如果是环境模式指标136指示为ARM ISA,则检查相关的ARM ISA控制寄存器(如SCTLR A位)的架构模式。在另一实施例中,如果是状态指标136指示为x86ISA,存储器次***108(以及用于特权指令的硬件指令转译器104)检查当前所指定特权级(CPL)的x86ISA控制寄存器的架构状态;如果是环境模式指标136指示为ARM ISA,则检查指示使用者或特权模式的相关ARM ISA控制寄存器的架构模式。不过,在一实施例中,x86ISA与ARM ISA分享微处理器100中具有相似功能的控制字节/寄存器,微处理器100并不对各个指令集架构引用独立的控制字节/寄存器。
虽然配置寄存器122与寄存器档案106在图示中是各自独立,不过配置寄存器122可被理解为寄存器档案106的一部分。配置寄存器122具有一全局配置寄存器,用以控制微处理器100在x86ISA与ARM ISA各种不同面向的操作,例如使多种特征生效或失效的功能。全局配置寄存器可使微处理器100执行ARM ISA机器语言程序的能力失效,即让微处理器100成为一个仅能执行x86指令的微处理器100,并可使其他相关且专属于ARM的能力(如启动x86(launch-x86)与重置至x86的指令124与本文所称的实作定义(implementation-defined)协同处理器寄存器)失效。全局配置寄存器也可使微处理器100执行x86ISA机器语言程序的能力失效,亦即让微处理器100成为一个仅能执行ARM指令的微处理器100,并可使其他相关的能力(如启动ARM与重置至ARM的指令124与本文所称的新的非架构特定模式寄存器)失效。在一实施例中,微处理器100在制造时具有预设的配置设定,如微代码234中的硬式编码值,此微代码234在启动时利用此硬式编码值来设定微处理器100的配置,例如写入编码寄存器122。不过,部分编码寄存器122以硬件而非以微代码234进行设定。此外,微处理器100具有多个熔丝,可由微代码234进行读取。这些熔丝可被熔断以修改预设配置值。在一实施例中,微代码234读取熔丝值,对预设值与熔丝值执行一互斥或操作,并将操作结果写入配置寄存器122。此外,对于熔丝值修改的效果可利用一微代码234修补而回复。在微处理器100能够执行x86与ARM程序的情况下,全局配置寄存器可用于确认微处理器100(或如图7所示处理器的多内核部分的一特定内核100)在重置或如图6A及图6B所示在回应x86形式的INIT指令时,会以x86微处理器的形态还是以ARM微处理器的形态进行开机。全局配置寄存器并具有一些位提供起始预设值给特定的架构控制寄存器,如ARMISA SCTLT与CPACR寄存器。图7所示的多内核的实施例中仅具有一个全局配置寄存器,即使各内核的配置可分别设定,如在指令模式指标132与环境模式指标136都设定为x86或ARM时,选择以x86内核或是ARM内核开机。此外,启动ARM指令126与启动x86指令126可用以在x86与ARM指令模式132间动态切换。在一实施例中,全局配置寄存器可通过一x86RDMSR指令对一新的非架构特定模式寄存器进行读取,并且其中部分的控制位可通过x86WRMSR指令对前述新的非架构特定模式寄存器的写入来进行写入操作。全局配置寄存器还可通过ARM MCR/MCRR指令对一对应至前述新的非架构特定模式寄存器的ARM协同处理器寄存器进行读取,而其中部分的控制位可通过ARM MRC/MRRC指令对应至此新的非架构特定模式寄存器的ARM协同处理器寄存器的写入来进行写入操作。
配置寄存器122并包含多种不同的控制寄存器从不同面向控制微处理器100的操作。这些非x86(non-x86)/ARM的控制寄存器包括本文所称的全局控制寄存器、非指令集架构控制寄存器、非x86/ARM控制寄存器、通用控制寄存器、以及其他类似的寄存器。在一实施例中,这些控制寄存器可利用x86RDMSR/WRMSR指令至非架构特定模式寄存器(MSRs)进行存取、以及利用ARM MCR/MRC(或MCRR/MRRC)指令至新实作定义的协同处理器寄存器进行存取。举例来说,微处理器100包含非x86/ARM的控制寄存器,以确认微型(fine-grained)快取控制,此微型快取控制小于x86ISA与ARM ISA控制寄存器所能提供者。
在一实施例中,微处理器100提供ARM ISA机器语言程序通过实作定义ARM ISA协同处理器寄存器存取x86ISA特定模式寄存器,这些实作定义ARM ISA协同处理器寄存器直接对应于相对应的x86特定模式寄存器。此特定模式寄存器的地址是指定于ARM ISA R1寄存器。此数据由MRC/MRRC/MCR/MCRR指令所指定的ARM ISA寄存器读出或写入。在一实施例中,特定模式寄存器的一子集合以密码保护,亦即指令在尝试存取特定模式寄存器时必须使用密码。在此实施例中,密码是指定于ARM R7:R6寄存器。如果是此存取动作导致x86通用保护错误,微处理器100随即产生一ARM ISA未定义指令中止模式(UND)例外事件。在一实施例中,ARM协同处理器4(地址为:0,7,15,0)存取相对应的x86特定模式寄存器
微处理器100并包含一个耦接至执行管线112的中断控制器(未图示)。在一实施例中,此中断控制器是一x86形式的先进可编程中断控制器(APIC)。中断控制器将x86ISA中断事件对应至ARM ISA中断事件。在一实施例中,x86INTR对应至ARM IRQ中断事件;x86NMI对应至ARM IRQ中断事件;x86INIT在微处理器100启动时引发起动重置循序过程(INIT-resetsequence),无论那一个指令集架构(x86或ARM)原本是由硬件重置启动的;x86SMI对应至ARM FIQ中断事件;以及x86STPCLK、A20、Thermal、PREQ、与Rebranch则不对应至ARM中断事件。ARM机器语言能通过新的实作定义的ARM协同处理器寄存器存取先进可编程中断控制器的功能。在一实施例中,APIC寄存器地址是指定于ARM R0寄存器,此APIC寄存器的地址与x86的地址相同。在一实施例中,ARM协同处理器6通常用于操作***执行的特权模式功能,此ARM协同处理器6的地址为:0,7,nn,0;其中nn为15时可存取先进可编程中断控制器;nn是12-14以存取总线接口单元,藉以在处理器总线上执行8位、16位与32位输入/输出循环。微处理器100并包含一总线接口单元(未图示),此总线接口单元耦接至存储器次***108与执行管线112,作为微处理器100与处理器总线的接口。在一实施例中,处理器总线符合一个Intel Pentium微处理器家族的微处理器总线的规格。ARM机器语言程序可够通过新的实作定义的ARM协同处理器寄存器存取总线接口单元的功能以在处理器总线上产生输入/输出循环,即由输入输出总线传送至输入输出空间的一特定地址,藉以与***芯片组沟通,举例来说,ARM机器语言程序可产生一SMI认可的特定循环或是关于C状态转换的输入输出循环。在一实施例中,输入输出地址是指定于ARM R0寄存器。在一实施例中,微处理器100具有电力管理能力,如已知的P-state与C-state管理。ARM机器语言程序可通过新的实作定义ARM协同处理器寄存器执行电力管理。在一实施例中,微处理器100包含一加密单元(未图示),此加密单元位于执行管线112内。在一实施例中,此加密单元实质上类似于具有Padlock安全科技功能的VIA微处理器的加密单元。ARM机器语言程序能通过新的实作定义的ARM协同处理器寄存器取得加密单元的功能,如加密指令。在一实施例中,ARM协同处理器用于通常由使用者模式应用程序执行的使用者模式功能,例如那些使用加密单元的技术特征所产生的功能。
在微处理器100执行x86ISA与ARM ISA机器语言程序时,每一次微处理器100执行x86或是ARM ISA指令124,硬件指令转译器104就会执行硬件转译。反之,采用软件转译的***则能在多个事件中重复使用同一个转译,而非对之前已转译过的机器语言指令重复转译,因而有助于改善效能。此外,图8的实施例使用微指令快取以避免微处理器每一次执行x86或ARM ISA指令124时可能发生的重复转译动作。本发明的前述各个实施例所描述的方式配合不同的程序特征及其执行环境,因此确实有助于改善效能。
分支预测器114存取之前执行过的x86与ARM分支指令的历史数据。分支预测器114依据之前的快取历史数据,来分析由指令快取102所取得快取线是否存在x86与ARM分支指令以及其目标地址。在一实施例中,快取历史数据包含分支指令124的存储器地址、分支目标地址、一个方向指标、分支指令的种类、分支指令在快取线的起始字节、以及一个显示是否横跨多个快取线的指标。在一实施例中,如2011年4月7日提出的美国第61/473,067号临时申请案“APPARATUS AND METHOD FOR USING BRANCHPREDICTION TO EFFICIENTLYEXECUTE CONDITIONAL NON-BRANCHINSTRUCTIONS”,其提供改善分支预测器114的效能以使其能预测ARM ISA条件非分支指令方向的方法。在一实施例中,硬件指令转译器104并包含一静态分支预测器,可依据执行码、条件码的类型、向后(backward)或向前(forward)等等数据,预测x86与ARM分支指令的方向与分支目标地址。
本发明亦考虑多种不同的实施例以实现x86ISA与ARM ISA定义的不同特征的组合。举例来说,在一实施例中,微处理器100实现ARM、Thumb、ThumbEE与Jazelle指令集状态,但对Jazelle扩充指令集则是提供无意义的实现(trivial implementation);微处理器100并实现下述扩充指令集,包含:Thumb-2、VFPv3-D32、进阶单指令多重数据(Advanced SIMD(Neon))、多重处理、与VMSA;但不实现下述扩充指令集,包含:安全性扩充、快速内容切换扩充、ARM除错(ARM程序可通过ARM MCR/MRC指令至新的实作定义协同处理器寄存器取得x86除错功能)、效能检测计数器(ARM程序可通过新的实作定义协同处理器寄存器取得x86效能计数器)。举例来说,在一实施例中,微处理器100将ARM SETEND指令视为一无操作指令(NOP)并且只支持Little-endian数据格式。在另一实施例中,微处理器100并不实现x86SSE4.2的功能。
本发明考虑多个实施例的微处理器100的改良,例如对中国台湾台北的威盛电子股份有限公司所生产的商用微处理器VIA NanoTM进行改良。此Nano微处理器能够执行x86ISA机器语言程序,但无法执行ARM ISA机器语言程序。Nano微处理器包含高效能寄存器重命名、超标量指令技术、非循序执行管线与一硬件转译器以将x86ISA指令转译为微指令供执行管线执行。本发明对于Nano硬件指令转译器的改良,使其除了可转译x86机器语言指令外,还可将ARM ISA机器语言指令转译为微指令供执行管线执行。硬件指令转译器的改良包含简单指令转译器的改良与复杂指令转译器的改良(亦包含微代码在内)。此外,微指令集可加入新的微指令以支持ARM ISA机器语言指令与微指令间的转译,并可改善执行管线使能执行新的微指令。此外,Nano寄存器档案与存储器次***也可经改善使其能支持ARMISA,亦包含特定寄存器的共享。分支预测单元可通过改善使其在x86分支预测外,亦能适用于ARM分支指令预测。此实施例的优点在于,因为在很大程度上与ISA无关(largelyISA-agnostic)的限制,因而只需对于Nano微处理器的执行管线进行轻微的修改,即可适用于ARM ISA指令。对于执行管线的改良包含条件码标志的产生与使用方式、用以更新与回报指令指标寄存器的语意、存取特权保护方法、以及多种存储器管理相关的功能,如存取违规检测、分页与转译后备缓冲区(TLB)的使用、与快取策略等。前述内容仅为例示,而非限定本申请发明,其中部分特征在后续内容会有进一步的说明。最后,如前述,x86ISA与ARMISA定义的部分特征可能无法为前述对Nano微处理器进行改良的实施例所支持,这些特征如x86SSE4.2与ARM安全性扩充、快速内容切换扩充、除错与效能计数器,其中部分特征在后续内容会有更进一步的说明。此外,前述通过对于Nano处理器的改良以支持ARM ISA机器语言程序,为一整合使用设计、测试与制造资源以完成能够执行x86与ARM机器语言程序的单集成电路产品的实施例,此单集成电路产品涵盖市场绝大多数既存的机器语言程序,而符合现今市场潮流。本文所述的微处理器100的实施例实质上可被配置为x86微处理器、ARM微处理器、或是可同时执行x86ISA与ARM ISA机器语言程序微处理器。此微处理器可通过在单一微处理器100(或是图7的内核100)上的x86与ARM指令模式132间的动态切换以取得同时执行x86ISA与ARM ISA机器语言程序的能力,也可通过将多内核微处理100(对应于图7所示)的一个或多个内核配置为ARM内核而一或多个内核配置为x86内核,亦即通过在多内核100的每一个内核上进行x86与ARM指令间的动态切换,以取得同时执行x86ISA与ARM ISA机器语言程序的能力。此外,传统上,ARM ISA内核被设计作为知识产权内核,而被各个第三者协力厂商纳入其应用,如***芯片和/或嵌入式应用。因此,ARM ISA并不具有一特定的标准处理器总线,作为ARM内核与***的其他部分(如芯片组或其他***设备)间的接口。有利的是,Nano处理器已具有一高速x86形式处理器总线作为连接至存储器与***设备的接口,以及一存储器一致性结构可协同微处理器100在x86计算机***环境下支持ARM ISA机器语言程序的执行。
请参照图2,图中以方块图详细显示图1的硬件指令转译器104。此硬件指令转译器104包含硬件,更具体来说,就是晶体管的集合。硬件指令转译器104包含一指令格式化程序202,由图1的指令快取102接收指令模式指标132以及x86ISA与ARM ISA指令字节124的区块,并输出格式化的x86ISA与ARM ISA指令242;一简单指令转译器(SIT)204接收指令模式指标132与环境模式指标136,并输出实行微指令244与一微代码地址252;一复杂指令转译器(CIT)206(亦称为一微代码单元),接收微代码地址252与环境模式指标136,并提供实行微指令246;以及一多工器212,其一输入端由简单指令转译器204接收微指令244,另一输入端由复杂指令转译器206接收微指令246,并提供实行微指令126至图1的执行管线112。指令格式化程序202在图3会有更详细的说明。简单指令转译器204包含一x86简单指令转译器222与一ARM简单指令转译器224。复杂指令转译器206包含一接收微代码地址252的微程序计数器(micro-PC)232,一由微程序计数器232接收只读存储器地址254的微代码只读存储器234,一用以更新微程序计数器的微序列器236、一指令间接寄存器(instructionindirection register,IIR)235、以及一用以产生复杂指令转译器所输出的实行微指令246的微转译器(microtranslator)237。由简单指令转译器204所产生的实行微指令244与由复杂指令转译器206所产生的实行微指令246都属于微处理器100的微架构的微指令集的微指令126,并且都可直接由执行管线112执行。
多工器212受到一选择输入248所控制。一般的时候,多工器212会选择来自简单指令转译器204的微指令;然而,当简单指令转译器204遭遇一复杂x86或ARM ISA指令242而将控制权移转、或遭遇陷阱(traps)、以转移至复杂指令转译器206时,简单指令转译器204控制选择输入248让多工器212选择来自复杂指令转译器的微指令246。当寄存器配置表(RAT)402(请参照图4)遭遇到一个微指令126具有一特定位指出其为实现复杂ISA指令242序列的最后一个微指令126时,寄存器配置表402随即控制选择输入248使多工器212回复至选择来自简单指令转译器204的微指令244。此外,当重排缓冲器422(请参照图4)准备要使微指令126引退且该指令的状态指出需要选择来自复杂指令器的微指令时,重排缓冲器422控制选择输入248使多工器212选择来自复杂指令转译器206的微指令246。前述需引退微指令126的情形如:微指令126已经导致一例外条件产生。
简单指令转译器204接收ISA指令242,并且在指令模式指标132指示为x86时,将这些指令视为x86ISA指令进行解码,而在指令模式指标132指示为ARM时,将这些指令视为ARMISA指令进行解码。简单指令转译器204并确认此ISA指令242为简单或是复杂ISA指令。简单指令转译器204能够为简单ISA指令242,输出所有用以实现此ISA指令242的实行微指令126;也就是说,复杂指令转译器206并不提供任何实行微指令126给简单ISA指令124。反之,复杂ISA指令124要求复杂指令转译器206提供至少部分(若非全部)的实行微指令126。在一实施例中,对ARM与x86ISA指令集的指令124的子集合而言,简单指令转译器204输出部分实现x86/ARM ISA指令126的微指令244,随后将控制权转移至复杂指令转译器206,由复杂指令转译器206接续输出剩下的微指令246来实现x86/ARM ISA指令126。多工器212受到控制,首先提供来自简单指令转译器204的实行微指令244作为提供至执行管线112的微指令126,随后提供来自复杂指令转译器206的实行微指令246作为提供至执行管线112的微指令126。简单指令转译器204知道由硬件指令转译器104执行,以针对多个不同复杂ISA指令124产生实行微指令126的多个微代码程序中的起始微代码只读存储器234的地址,并且当简单指令转译器204对一复杂ISA指令242进行解码时,简单指令转译器204会提供相对应的微代码程序地址252至复杂指令转译器206的微程序计数器232。简单指令转译器204输出实现ARM与x86ISA指令集中相当大比例的指令124所需的微指令244,尤其是对于需要由x86ISA与ARMISA机器语言程序来说较常执行的ISA指令124,而只有相对少数的指令124需要由复杂指令转译器206提供实行微指令246。依据一实施例,主要由复杂指令转译器206实现的x86指令如RDMSR/WRMSR、CPUID、复杂运算指令(如FSQRT与超越指令(transcendentalinstruction))、以及IRET指令;主要由复杂指令转译器206实现的ARM指令如MCR、MRC、MSR、MRS、SRS、与RFE指令。前述列出的指令并非限定本申请发明,仅例示指出本申请复杂指令转译器206所能实现的ISA指令的种类。
当指令模式指标132指示为x86,x86简单指令转译器222对于x86ISA指令242进行解码,并且将其转译为实行微指令244;当指令模式指标132指示为ARM,ARM简单指令转译器224对于ARM ISA指令242进行解码,并将其转译为实行微指令244。在一实施例中,简单指令转译器204是一可由已知合成工具合成的布林逻辑门方块。在一实施例中,x86简单指令转译器222与ARM简单指令转译器224是独立的布林逻辑门方块;不过,在另一实施例中,x86简单指令转译器222与ARM简单指令转译器224位于同一个布林逻辑门方块。在一实施例中,简单指令转译器204在单一时钟周期中转译最多三个ISA指令242并提供最多六个实行微指令244至执行管线112。在一实施例中,简单指令转译器204包含三个次转译器(未图示),各个次转译器转译单一个格式化的ISA指令242,其中,第一个转译器能够转译需要不多于三个实行微指令126的格式化ISA指令242;第二个转译器能够转译需要不多于两个实行微指令126的格式化ISA指令242;第三个转译器能后转译需要不多于一个实行微指令126的格式化ISA指令242。在一实施例中,简单指令转译器204包含一硬件状态机器使其能够在多个时钟周期输出多个微指令244以实现一个ISA指令242。
在一实施例中,简单指令转译器204并依据指令模式指标132和/或环境模式指标136,执行多个不同的例外事件检测。举例来说,如果是指令模式指标132指示为x86且x86简单指令转译器222对一个就x86ISA而言是无效的ISA指令124进行解码,简单指令转译器204随即产生一个x86无效操作码例外事件;相似地,如果是指令模式指标132指示为ARM且ARM简单指令转译器224对一个就ARM ISA而言是无效的ISA指令124进行解码,简单指令转译器204随即产生一个ARM未定义指令例外事件。在另一实施例中,如果是环境模式指标136指示为x86ISA,简单指令转译器204随即检测是否其所遭遇的每个x86ISA指令242需要一特别特权级(particular privilege level),如果是,检测当前特权级(CPL)是否满足此x86ISA指令242所需的特别特权级,并于不满足时产生一例外事件;相似地,如果是环境模式指标136指示为ARM ISA,简单指令转译器204随即检测是否每个格式化ARM ISA指令242需要一特权模式指令,如果是,检测当前的模式是否为特权模式,并于现在模式为使用者模式时,产生一例外事件。复杂指令转译器206对于特定复杂ISA指令242亦执行类似的功能。
复杂指令转译器206输出一系列实行微指令246至多工器212。微代码只读存储器234存储微代码程序的只读存储器指令247。微代码只读存储器234输出只读存储器指令247以回应由微代码只读存储器234取得之下一个只读存储器指令247的地址,并由微程序计数器232所持有。一般来说,微程序计数器232由简单指令转译器204接收其起始值252,以回应简单指令转译器204对于一复杂ISA指令242的解码动作。在其他情形,例如回应一重置或例外事件,微程序计数器232分别接收重置微代码程序地址或适当的微代码例外事件处理地址。微程序器236通常依据只读存储器指令247的大小,将微程序计数器232更新为微代码程序的序列以及选择性地更新为执行管线112回应控制型微指令126(如分支指令)执行所产生的目标地址,以使指向微代码只读存储器234内的非程序地址的分支生效。微代码只读存储器234被制造于微处理器100的半导体芯片内。
除了用来实现简单ISA指令124或部分复杂ISA指令124的微指令244外,简单指令转译器204也产生ISA指令信息255以写入指令间接寄存器235。存储于指令间接寄存器235的ISA指令信息255包含关于被转译的ISA指令124的信息,例如,确认由ISA指令所指定的来源与目的寄存器的信息以及ISA指令124的格式,如ISA指令124是在存储器的一运算元上或是在微处理器100的一架构寄存器106内执行。这样可藉此使微代码程序能够变为通用,亦即不需对于各个不同的来源和/或目的架构寄存器106使用不同的微代码程序。尤其是,简单指令转译器204知道寄存器档案106的内容,包含哪些寄存器是共享寄存器504,而能将x86ISA与ARM ISA指令124内提供的寄存器信息,通过ISA指令信息255的使用,转译至寄存器档案106内的适当的寄存器。ISA指令信息255包含一移位栏、一立即栏、一常数栏、各个来源运算元与微指令126本身的重命名信息、用以实现ISA指令124的一系列微指令126中指示第一个与最后一个微指令126的信息、以及存储由硬件指令转译器104对ISA指令124转译时所搜集到的有用信息的其他位。
微转译器237由微代码只读存储器234与间接指令寄存器235的内容接收只读存储器指令247,并相应地产生实行微指令246。微转译器237依据由间接指令寄存器235接收的信息,如依据ISA指令124的格式以及由其所指定的来源和/或目的架构寄存器106组合,来将特定只读存储器指令247转译为不同的微指令246系列。在一些实施例中,许多ISA指令信息255被与只读存储器指令247合并以产生实行微指令246。在一实施例中,各个只读存储器指令247大约有40位宽,并且各个微指令246大约有200位宽。在一实施例中,微转译器237最多能够由一个微读存储器指令247产生三个微指令246。微转译器237包含多个布林逻辑门以产生实行微指令246。
使用微转译器237的优点在于,由于简单指令转译器204本身就会产生ISA指令信息255,微代码只读存储器234不需要存储间接指令寄存器235提供的ISA指令信息255,因而可以降低减少其大小。此外,因为微代码只读存储器234不需要为了各个不同的ISA指令格式、以及各个来源和/或目的架构寄存器106的组合,提供一独立的程序,微代码只读存储器234程序可包含较少的条件分支指令。举例来说,如果复杂ISA指令124是存储器格式,简单指令转译器204会产生微指令244的逻辑编程,其包含将来源运算元由存储器载入一暂时寄存器106的微指令244,并且微转译器237会产生微指令246用以将结果由暂时寄存器106存储至存储器;然而,如果复杂ISA指令124是寄存器格式,此逻辑编程会将来源运算元由ISA指令124所指定的来源寄存器移动至暂时寄存器,并且微转译器237会产生微指令246用以将结果由暂时寄存器移动至由间接指令寄存器235所指定的架构目的寄存器106。在一实施例中,微转译器237的许多面向类似于2010年4月23日提出的美国专利第12/766,244号申请案,在此系列为参考数据。不过,本申请的微转译器237除了x86ISA指令124外,亦经改良以转译ARM ISA指令124。
值得注意的是,微程序计数器232不同于ARM程序计数器116与x86指令指标118,亦即微程序计数器232并不持有ISA指令124的地址,微程序计数器232所持有的地址亦不落于***存储器地址空间内。此外,更值得注意的是,微指令246由硬件指令转译器104所产生,并且直接提供给执行管线112执行,而非作为执行管线112的执行结果128。
请参照图3,图中以方块图详述图2的指令格式化器202。指令格式化器202由图1的指令快取102接收x86ISA与ARM ISA指令字节124区块。凭借x86ISA指令长度可变的特性,x86指令124可以由指令字节124区块的任何字节开始。由于x86ISA容许首码字节的长度会受到当前地址长度与运算元长度预设值的影响,因此确认快取区块内的x86ISA指令的长度与位置的任务会更为复杂。此外,依据当前ARM指令集状态322与ARM ISA指令124的操作码,ARM ISA指令的长度不是2字节就是4字节,因而不是2字节对齐就是4字节对齐。因此,指令格式化器202由指令字节124串(stream)提取不同的x86ISA与ARM ISA指令,此指令字节124串由指令快取102接收的区块所构成。也就是说,指令格式化器202格式化x86ISA与ARM ISA指令字节串,因而大幅简化图2的简单指令转译器对ISA指令124进行解码与转译的困难任务。
指令格式化器202包含一预解码器302,在指令模式指标132指示为x86时,预解码器302预先将指令字节124视为x86指令字节进行解码以产生预解码信息,在指令模式指标132指示为ARM时,预解码器302预先将指令字节124视为ARM指令字节进行解码以产生预解码信息。指令字节队列(IBQ)304接收ISA指令字节124区块以及由预解码器302产生的相关预解码信息。
一个由长度解码器与纹波逻辑门306构成的阵列接收指令字节队列304底部项目(bottom entry)的内容,亦即ISA指令字节124区块与相关的预解码信息。此长度解码器与纹波逻辑门306亦接收指令模式指标132与ARM ISA指令集状态322。在一实施例中,ARM ISA指令集状态322包含ARM ISACPSR寄存器的J与T位。为了回应其输入信息,此长度解码器与纹波逻辑门306产生解码信息,此解码信息包含ISA指令字节124区块内的x86与ARM指令的长度、x86首码信息、以及关于各个ISA指令字节124的指标,此指标指出此字节是否为ISA指令124的起始字节、终止字节、和/或一有效字节。一多工器队列308接收ISA指令字节126区块、由预解码器302产生的相关预解码信息、以及由长度解码器与纹波逻辑门306产生的相关解码信息。
控制逻辑(未图示)检验多工器队列(MQ)308底部项目的内容,并控制多工器312提取不同的、或格式化的ISA指令与相关的预解码与解码信息,所提取的信息提供至一格式化指令队列(FIQ)314。格式化指令队列314在格式化ISA指令242与提供至图2的简单指令转译器204的相关信息间作为缓冲。在一实施例中,多工器312在每一个时钟周期内提取至多三个格式化ISA指令与相关的信息。
在一实施例中,指令格式化程序202在许多方面类似于2009年10月1日提出的美国专利第12/571,997号、第12/572,002号、第12/572,045号、第12/572,024号、第12/572,052号与第12/572,058号申请案共同公开的XIBQ、指令格式化程序、与FIQ,这些申请案在此列为参考数据。然而,前述专利申请案所揭示的XIBQ、指令格式化程序、与FIQ通过修改,使其能在格式化x86ISA指令124外,还能格式化ARM ISA指令124。长度解码器306被修改,使能对ARM ISA指令124进行解码以产生长度以及起点、终点与有效性的字节指标。尤其,如果是指令模式指标132指示为ARM ISA,长度解码器306检测当前ARM指令集状态322与ARM ISA指令124的操作码,以确认ARM指令124是一个2字节长度或是4字节长度的指令。在一实施例中,长度解码器306包含多个独立的长度解码器分别用以产生x86ISA指令124的长度数据以及ARM ISA指令124的长度数据,这些独立的长度解码器的输出再以连线或(wire-ORed)耦接在一起,以提供输出至纹波逻辑门306。在一实施例中,此格式化指令队列314包含独立的队列以持有格式化指令242的多个互相分离的部分。在一实施例中,指令格式化程序202在单一时钟周期内,提供简单指令转译器204至多三个格式化ISA指令242。
请参照图4,图中以方块图详细显示图1的执行管线112,此执行管线112耦接至硬件指令转译器104以直接接收来自图2的硬件指令转译器104的实行微指令。执行管线112包含一微指令队列401,以接收微指令126;一寄存器配置表402,由微指令队列401接收微指令;一指令调度器404,耦接至寄存器配置表402;多个保留站406,耦接至指令调度器404;一指令发送单元408,耦接至保留站406;一重排缓冲器422,耦接至寄存器配置表402、指令调度器404与保留站406;以及,执行单元424耦接至保留站406、指令发送单元408与重排缓冲器422。寄存器配置表402与执行单元424接收指令模式指标132。
在硬件指令转译器104产生实行微指令126的速率不同于执行管线112执行微指令126的情况下,微指令队列401被作为一缓冲器。在一实施例中,微指令队列401包含一个M至N可压缩微指令队列。此可压缩微指令队列使执行管线112能够在一给定的时钟周期内,从硬件指令转译器104接收至多M个(在一实施例中,M是六)微指令126,并且随后将接收到的微指令126存储至宽度为N(在一实施例中,N是三)的队列结构,以在每个时钟周期提供至多N个微指令126至寄存器配置表402,此寄存器配置表402能够在每个时钟周期处理最多N个微指令126。微指令队列401是可压缩的,因它不论接收到微指令126的特定时钟周期为何,皆会依序将由硬件指令转译器104所传送的微指令126时填满队列的空项目,因而不会在队列项目中留下空洞。此方法的优点为能够充分利用执行单元424(请参照图4),因为它可比不可压缩宽度M或宽度M的指令队列提供较高的指令存储效能。具体来说,不可压缩宽度N的队列会需要硬件指令转译器104,尤其是简单指令转译器204,在之后的时钟周期内会重复转译一个或多个已经在之前的时钟周期内已经被转译过的ISA指令124。会这样做的原因是,不可压缩宽度N的队列无法在同一个时钟周期接收多于N个微指令126,而重复转译将导致电力耗损。不过,不可压缩宽度M的队列虽然不需要简单指令转译器204重复转译,但却会在队列项目中产生空洞而导致浪费,因而需要更多列项目以及一个较大且更耗能的队列来提供相当的缓冲能力。
寄存器配置表402由微指令队列401接收微指令126并产生与微处理器100内进行中的微指令126的附属信息,寄存器配置表402并执行寄存器重命名动作来增加微指令并行处理的能力,以利于执行管线112的超标量、非循序执行能力。如果是ISA指令124指示为x86,寄存器配置表402会对应于微处理器100的x86ISA寄存器106,产生附属信息且执行相对应的寄存器重命名动作;反之,如果是ISA指令124指示为ARM,寄存器配置表402就会对应于微处理器100的ARM ISA寄存器106,产生附属信息且执行相对应的寄存器重命名动作;不过,如前述,部分寄存器106可能是由x86ISA与ARM ISA所共享。寄存器配置表402亦在重排缓冲器422中依据程序顺序配置一项目给各个微指令126,因此重排缓冲器422可使微指令126以及其相关的x86ISA与ARM ISA指令124依据程序顺序进行引退,即使微指令126的执行对应于其所欲实现的x86ISA与ARM ISA指令124而言是以非循序的方式进行的。重排缓冲器422包含一环形队列,此环形队列的各个项目用以存储关于进行中的微指令126的信息,此信息除了其他事项,还包含微指令126执行状态、一个确认微指令126由x86或是ARM ISA指令124所转译的标签、以及用以存储微指令126的结果的存储空间。
指令调度器404由寄存器配置表402接收寄存器重命名微指令126与附属信息,并依据指令的种类以及执行单元424的可利用性,将微指令126及其附属信息分派至关联于适当的执行单元424的保留站406。此执行单元424将会执行微指令126。
对各个在保留站406中等待的微指令126而言,指令发布单元408测得相关执行单元424可被运用且其附属信息被满足(如来源运算元可被运用)时,即发布微指令126至执行单元424供执行。如前述,指令发布单元408所发布的微指令126,可以非循序以及以超标量方式来执行。
在一实施例中,执行单元424包含整数/分支单元412、媒体单元414、载入/存储单元416、以及浮点单元418。执行单元424执行微指令126以产生结果128并提供至重排缓冲器422。虽然执行单元424并不大受到其所执行的微指令126由x86或是ARM ISA指令124转译而来的影响,执行单元424仍会使用指令模式指标132与环境模式指标136以执行相对较小的微指令126子集。举例来说,执行管线112管理标志的产生,其管理会依据指令模式指标132指示为x86ISA或是ARM ISA而有些微不同,并且,执行管线112依据指令模式指标132指示为x86ISA或是ARM ISA,对x86EFLAGS寄存器或是程序状态寄存器(PSR)内的ARM条件码标志进行更新。在另一实例中,执行管线112对指令模式指标132进行取样以决定去更新x86指令指标(IP)118或ARM程序计数器(PC)116,还是更新共通的指令地址寄存器。此外,执行管线122亦藉此来决定使用x86或是ARM语意执行前述动作。一旦微指令126变成微处理器100中最旧的已完成微指令126(亦即,在重排缓冲器422队列的排头且呈现已完成的状态)且其他用以实现相关的ISA指令124的所有微指令126均已完成,重排缓冲器422就会引退ISA指令124并释放与实行微指令126相关的项目。在一实施例中,微处理器100可在一时钟周期内引退至多三个ISA指令124。此处理方法的优点在于,执行管线112是一高效能、通用执行引擎,其可执行支持x86ISA与ARM ISA指令124的微处理器100微架构的微指令126。
请参照图5,图中以方块图详述图1的寄存器档案106。就一优选实施例而言,寄存器档案106为独立的寄存器区块实体。在一实施例中,通用寄存器由一具有多个读出端口与写入端口的寄存器档案实体来实现;其他寄存器可在实体上独立在此通用寄存器档案以及其他会存取这些寄存器但具有较少的读取写入端口的邻近功能方块。在一实施例中,部分非通用寄存器,尤其是那些不直接控制微处理器100的硬件而仅存储微代码234会使用到的数值的寄存器(如部分x86MSR或是ARM协同处理器寄存器),则是在一个微代码234可存取的私有随机存取存储器(PRAM)内实现。不过,x86ISA与ARMISA程序者无法见到此私有随机存取存储器,亦即此存储器并不在ISA***存储器地址空间内。
总括来说,如图5所示,寄存器档案106在逻辑上被区分为三种,亦即ARM特定的寄存器502、x86特定的寄存器504、以及共享寄存器506。在一实施例中,共享寄存器506包含十五个32位寄存器,由ARM ISA寄存器R0至R14以及x86ISA EAX至R14D寄存器所共享,另外有十六个128位寄存器由x86ISA XMM0至XMM15寄存器以及ARM ISA进阶单指令多重数据扩展(Neon)寄存器所共享,这些寄存器的部分被重叠于三十二个32位ARMVFPv3浮点寄存器。如前文图1所述,通用寄存器的共享意指由x86ISA指令124写入一共享寄存器的数值,会被ARMISA指令124在随后读取此共享寄存器时见到,反之亦然。此方式的优点在于,能够使x86ISA与ARM ISA程序通过寄存器互相沟通。此外,如前述,x86ISA与ARM ISA的架构控制寄存器的特定位也可被引用为共享寄存器506。如前述,在一实施例中,x86特定模式寄存器可被ARMISA指令124通过实作定义协同处理器寄存器存取,因而是由x86ISA与ARM ISA所共享。此共享寄存器506可包含非架构寄存器,例如条件标志的非架构同等物,这些非架构寄存器同样由寄存器配置表402重命名。硬件指令转译器104知道哪一个寄存器由x86ISA与ARMISA所共享,因而会产生实行微指令126来存取正确的寄存器。
ARM特定的寄存器502包含ARM ISA所定义但未被包含于共享寄存器506的其他寄存器,而x86特定的寄存器502包含x86ISA所定义但未被包含于共享寄存器506的其他寄存器。举例来说,ARM特定的寄存器502包含ARM程序计数器116、CPSR、SCTRL、FPSCR、CPACR、协同处理器寄存器、多种例外事件模式的备用通用寄存器与程序状态保存寄存器(savedprogram status registers,SPSRs)等等。前文列出的ARM特定寄存器502并非为限定本申请发明,仅为例示以说明本发明。另外,举例来说,x86特定的寄存器504包含x86指令指标(EIP或IP)118、EFLAGS、R15D、64位的R0至R15寄存器的上面32位(亦即未落于共享寄存器506的部分)、区段寄存器(SS,CS,DS,ES,FS,GS)、x87FPU寄存器、MMX寄存器、控制寄存器(如CR0-CR3、CR8)等。前文列出的x86特定寄存器504并非为限定本申请发明,仅为例示以说明本发明。
在一实施例中,微处理器100包含新的实作定义ARM协同处理器寄存器,在指令模式指标132指示为ARM ISA时,此实作定义协同处理器寄存器可被存取以执行x86ISA相关的操作。这些操作包含但不限于:将微处理器100重置为一x86ISA处理器(重置至x86指令)的能力;将微处理器100初始化为x86特定的状态,将指令模式指标132切换至x86,并开始在一特定x86目标地址提取x86指令124(启动至x86指令)的能力;存取前述全局(全域)配置寄存器的能力;存取x86特定寄存器(如EFLAGS)的能力,此x86寄存器是指定在ARM R0寄存器中,存取电力管理(如P状态与C状态的转换),存取处理器总线功能(如输入/输出循环)、中断控制器的存取、以及加密加速功能的存取。此外,在一实施例中,微处理器100包含新的x86非架构特定模式寄存器,在指令模式指标132指示为x86ISA时,此非架构特定模式寄存器可被存取以执行ARM ISA相关的操作。这些操作包含但不限于:将微处理器100重置为一ARM ISA处理器(重置至ARM指令)的能力;将微处理器100初始化为ARM特定的状态,将指令模式指标132切换至ARM,且开始在一特定ARM目标地址提取ARM指令124(启动至ARM指令)的能力;存取前述全局配置寄存器的能力;存取ARM特定寄存器(如CPSR)的能力,此ARM寄存器是指定在EAX寄存器内。
请参照图6A与图6B,图中显示一流程说明图1的微处理器100的操作程序。此流程始在步骤602。
如步骤602所示,微处理器100被重置。可向微处理器100的重置输入端发出信号来进行此重置动作。此外,在一实施例中,此微处理器总线是一x86形式的处理器总线,此重置动作可由x86形式的INIT命令进行。回应此重置动作,微代码234的重置程序被调用来执行。此重置微代码的动作包含:(1)将x86特定的状态504初始化为x86ISA所指定的预设数值;(2)将ARM特定的状态502初始化为ARM ISA所指定的预设数值;(3)将微处理器100的非ISA特定的状态初始化为微处理器100制造商所指定的预设数值;(4)将共享ISA状态506,如GPRs,初始化为x86ISA所指定的预设数值;以及(5)将指令模式指标132与环境模式指标136设定为指示x86ISA。在另一实施例中,不同于前述动作(4)与(5),此重置微代码将共享ISA状态506初始化为ARM ISA特定的预设数值,并将指令模式指标132与环境模式指标136设定为指示ARM ISA。在此实施例中,步骤638与642的动作不需要被执行,并且,在步骤614之前,此重置微代码会将共享ISA状态506初始化为x86ISA所指定的预设数值,并将指令模式指标132与环境模式指标136设定为指示x86ISA。接下来进入步骤604。
在步骤604,重置微代码确认微处理器100被配置为一个x86处理器或是一个ARM处理器来进行开机。在一实施例中,如前述,预设ISA开机模式是硬式编码于微代码,不过可通过熔断配置熔丝的方式,或利用一微代码修补来修改。在一实施例中,此预设ISA开机模式作为一外部输入提供至微处理器100,例如一外部输入引脚。接下来进入步骤606。在步骤606中,如果是预设ISA开机模式为x86,就会进入步骤614;反之,如果是预设开机模式为ARM,就会进入步骤638。
在步骤614中,重置微代码使微处理器100开始由x86ISA指定的重置向量地址提取x86指令124。接下来进入步骤616。
在步骤616中,x86***软件(如BIOS)被配置微处理器100来使用如x86ISA RDMSR与WRMSR指令124。接下来进入步骤618。
在步骤618中,x86***软件执行一重置至ARM的指令124。此重置至ARM的指令使微处理器100重置并以一ARM处理器的状态离开重置程序。然而,因为x86特定状态504以及非ISA特定配置状态不会因为重置至ARM的指令126而改变,此方式有利于使x86***固件执行微处理器100的初步设定并使微处理器100随后以ARM处理器的状态重开机,而同时还能使x86***软件执行的微处理器100的非ARM配置配置维持完好。藉此,此方法能够使用“小型的”微开机码来执行ARM操作***的开机程序,而不需要使用微开机码来解决如何配置微处理器100的复杂问题。在一实施例中,此重置至ARM指令是一x86WRMSR指令至一新的非架构特定模式寄存器。接下来进入步骤622。
在步骤622,简单指令转译器204进入陷阱至重置微代码,以回应复杂重置至ARM(complex reset-to-ARM)指令124。此重置微代码使ARM特定状态502初始化至由ARM ISA指定的预设数值。不过,重置微代码并不修改微处理器100的非ISA特定状态,因而有利于保存步骤616执行所需的配置设定。此外,重置微代码使共享ISA状态506初始化至ARM ISA指定的预设数值。最后,重置微代码设定指令模式指标132与环境模式指标136以指示ARM ISA。接下来进入步骤624。
在步骤624中,重置微代码使微处理器100开始在x86ISA EDX:EAX寄存器指定的地址提取ARM指令124。此流程结束在步骤624。
在步骤638中,重置微代码将共享ISA状态506,如GPRs,初始化至ARM ISA指定的预设数值。接下来进入步骤642。
在步骤642中,重置微代码设定指令模式指标132与环境模式指标136以指示ARMISA。接下来进入步骤644。
在步骤644中,重置微代码使微处理器100开始在ARM ISA指定的重置向量地址提取ARM指令124。此ARM ISA定义两个重置向量地址,并可由一输入来选择。在一实施例中,微处理器100包含一外部输入,以在两个ARMISA定义的重置向量地址间进行选择。在另一实施例中,微代码234包含在两个ARM ISA定义的重置向量地址间的一预设选择,此预设选择可通过熔断熔丝和/或是微代码修补来修改。接下来进入步骤646。
在步骤646中,ARM***软件设定微处理器100来使用特定指令,如ARM ISA MCR与MRC指令124。接下来进入步骤648。
在步骤648中,ARM***软件执行一重置至x86的指令124,来使微处理器100重置并以一x86处理器的状态离开重置程序。然而,因为ARM特定状态502以及非ISA特定配置状态不会因为重置至x86的指令126而改变,此方式有利于使ARM***固件执行微处理器100的初步设定并使微处理器100随后以x86处理器的状态重开机,而同时还能使由ARM***软件执行的微处理器100的非x86配置配置维持完好。藉此,此方法能够使用“小型的”微开机码来执行x86操作***的开机程序,而不需要使用微开机码来解决如何配置微处理器100的复杂问题。在一实施例中,此重置至x86指令是一ARMMRC/MRCC指令至一新的实作定义协同处理器寄存器。接下来进入步骤652。
在步骤652中,简单指令转译器204进入陷阱至重置微代码,以回应复杂重置至x86指令124。重置微代码使x86特定状态504初始化至x86ISA所指定的预设数值。不过,重置微代码并不修改微处理器100的非ISA特定状态,此处理有利于保存步骤646所执行的配置设定。此外,重置微代码使共享ISA状态506初始化至x86ISA所指定的预设数值。最后,重置微代码设定指令模式指标132与环境模式指标136以指示x86ISA。接下来进入步骤654
在步骤654中,重置微代码使微处理器100开始在ARM ISA R1:R0寄存器所指定的地址提取ARM指令124。此流程终止在步骤654。
请参照图7,图中以一方块图说明本发明的一双内核微处理器700。此双内核微处理器700包含两个处理内核100,各个内核100包含图1微处理器100所具有的元件,藉此,各个内核均可执行x86ISA与ARM ISA机器语言程序。这些内核100可被设定为两个内核100都执行x86ISA程序、两个内核100都执行ARM ISA程序、或是一个内核100执行x86ISA程序而另一个内核100则是执行ARM ISA程序。在微处理器700的操作过程中,前述三种设定方式可混合且动态改变。如图6A及图6B的说明内容所述,各个内核100对于其指令模式指标132与环境模式指标136均具有一预设数值,此预设数值可利用熔丝或微代码修补做修改,藉此,各个内核100可以独立地通过重置改变为x86或是ARM处理器。虽然图7的实施例仅具有二个内核100,在其他实施例中,微处理器700可具有多于二个内核100,而各个内核均可执行x86ISA与ARM ISA机器语言程序。
请参照图8,图中以一方块图说明本发明另一实施例的可执行x86ISA与ARM ISA机器语言程序的微处理器100。图8的微处理器100类似于图1的微处理器100,其中的元件编号亦相似。然而,图8的微处理器100亦包含一微指令快取892,此微指令快取892存取由硬件指令转译器104产生且直接提供给执行管线112的微指令126。微指令快取892由指令提取单元114所产生的提取地址做索引。如果是提取地址134命中微指令快取892,执行管线112内的多工器(未图示)就选择来自微指令快取892的微指令126,而非来自硬件指令转译器104的微指令126;反之,多工器则是选择直接由硬件指令转译器104提供的微指令126。微指令快取的操作,通常亦称为追踪快取,是微处理器设计的技术领域所已知的技术。微指令快取892所带来的优点在于,由微指令快取892提取微指令126所需的时间通常会少于由指令快取102提取指令124并且利用硬件指令转译器将其转译为微指令126的时间。在图8的实施例中,微处理器100在执行x86或是ARM ISA机器语言程序时,硬件指令转译器104不需要在每次执行x86或ARM ISA指令124时都执行硬件转译,亦即当实行微指令126已经存在于微指令快取892,就不需要执行硬件转译。
在此所述的微处理器的实施例的优点在于,其通过内建的硬件指令转译器来将x86ISA与ARM ISA指令转译为微指令集的微指令,而能执行x86ISA与ARM ISA机器语言程序,此微指令集不同于x86ISA与ARM ISA指令集,且微指令可利用微处理器的共用的执行管线来执行以提供实行微指令。在此所述的微处理器的实施例的优点在于,通过协同利用大量与ISA无关的执行管线来执行由x86ISA与ARM ISA指令硬件转译来的微指令,微处理器的设计与制造所需的资源会少于两个独立设计制造的微处理器(亦即一个能够执行x86ISA机器语言程序,一个能够执行ARM ISA机器语言程序)所需的资源。此外,这些微处理器的实施例中,尤其是那些使用超标量非循序执行管线的微处理器,具有潜力能提供相较于既有ARMISA处理器更高的效能。此外,这些微处理器的实施例,相较于采用软件转译器的***,亦在x86与ARM的执行上可更具潜力地提供更高的效能。最后,由于微处理器可执行x86ISA与ARMISA机器语言程序,此微处理器有利于建构一个能够高效地同时执行x86与ARM机器语言程序的***。
控制与状态寄存器对应
如上所述,图1的配置寄存器122以不同方式控制微处理器100的操作。本文所述的配置寄存器122亦为控制及状态寄存器122。典型但不完全地,控制及状态寄存器122由***固件(如BIOS)及***软件(如操作***)所读写,藉以配置所需要的微处理器100。
x86ISA提供一通用机制来存取控制及状态寄存器,在x86ISA中,许多控制及状态寄存器被称为特定模式寄存器,其可分别经由读取特定模式寄存器(Read MSR;RDMSR)以及写入特定模式寄存器(Write MSR;WRMSR)指令而读写。具体来说,RDMSR指令将64位特定模式寄存器的内容读取到EDX:EAX寄存器,且64位特定模式寄存器的地址是在ECX寄存器内所指定;相反地,WRMSR指令将EDX:EAX寄存器的内容写入64位特定模式寄存器,且64位特定模式寄存器的地址是在ECX寄存器内所指定。特定模式寄存器地址是由微处理器制造商所定义。
有利的是,本发明实施例提供一种让ARM ISA程序存取图1微处理器100的x86特定模式寄存器122的机制。具体来说,微处理器100采用ARMISA协同处理器寄存器机制来存取x86特定模式寄存器122。
从协同处理器移至ARM寄存器(Move to ARM Register from Coprocessor;MRC)指令以及从协同处理器移至两个ARM寄存器(Move to two ARM Registers fromCoprocessor;MRRC)指令中,其分别将协同处理器(coprocessor; CP)的内容移至一或两个32位通用寄存器。从ARM寄存器移至协同处理器(Move to Coprocessor from ARMRegister;MCR)指令,以及从两个ARM寄存器移至协同处理器(Move to Coprocessor fromtwo ARM Registers;MCRR)指令,其分别将一或两个32位通用寄存器的内容移至协同处理器(coprocessor;CP)。协同处理器是由一协同处理器编号所辨识。有利的是,当一MCR/MCRR/MRC/MRRC指令124指定一预设执行定义的(implementation-defined)ARM ISA协同处理器寄存器空间的协同处理器寄存器时,微处理器100即知道指令124是指示它来存取(如读写)特定模式寄存器122。在一实施例中,特定模式寄存器122地址被在预设的ARM ISA通用寄存器中所指定。如上所述以及本文所公开的微处理器100的特定模式寄存器122由x86ISA及ARM ISA所分享的方式,在后面会有更详细的描述。
包含通过特定模式寄存器122控制微处理器100操作方式的实施例,包含但不限于:存储器排序缓冲器控制及状态、分页错误编码、清除分页目录快取存储器及后备缓冲区入口、控制微处理器100的快取存储器层内不同的快取存储器,例如使部分或所有快取失效、从部分或所有快取移除电源、以及使快取标签无效;微代码修补机制控制;除错控制、处理器总线控制;硬件数据及指令预取控制;电源管理控制,例如休眠及唤醒控制、P状态及C状态转换,以及使对各种功能方块的时钟或电源失效;合并指令的控制及状态、错误更正编码存储器错误状态;总线校验错误状态;热管理控制及状态;服务处理器控制及状态;内核间通讯;芯片间通讯;与微处理器100的熔丝相关功能;稳压器模块电压识别符号(voltageidentifier;VID)控制;锁相回路控制;快取窥探控制、合并写入缓冲器控制及状态;超频功能控制;中断控制器控制及状态;温度感应器控制及状态;使多种功能启动或失效,例如加密/解密、特定模式寄存器保护密码、对L2快取及处理器总线提出并行要求(makingparallel requests);个别分支预测功能、指令合并、微指令超时、执行计数器、存储转发(store forwarding),以及预测性查表(speculative tablewalks);载入队列大小;快取存储器大小;控制如何存取至已处理的未定义特定模型存器;以及多内核配置。这些方式是通用于微处理器100的操作,例如它们对x86ISA及ARM ISA来说是非特定的。也就是说,尽管是指令模式指标132所指示的特别ISA,通用的微处理器的操作方式还是会影响指令的处理。举例来说,控制寄存器内的位将确定快取存储器的配置,像是取消选择在快取存储器内位单元(bitcells)的损坏行,并且用位单元的冗余行来取代它。对所有ISA来说,这样的快取存储器配置会影响微处理器100的操作,也因此微处理器的操作方式是通用的。其他实施例如通用的微处理器100的操作方式是微处理器100的锁相回路工作周期和/或时钟比、以及是设定电压识别符号引脚,而设定电压识别符号引脚是对微处理器100控制电压源。一般来说,ARM ISA指令124所存取的是通用特定模式寄存器122通过,而非x86指定的特定模式寄存器122。
如上所述,在一实施例中,微处理器100是商用微处理器的增强型,此微处理器100可执行x86ISA程序,且更特别的是,其可执行x86ISARDMSR/WRMSR指令来存取特定模式寄存器122。商用微处理器是根据本文实施例所提供特定模式寄存器122存取至ARM ISA程序而获得增强。在一实施例中,图2的复杂指令转译器206使用经由微代码只读存储器234所输出的只读存储器指令247,藉以产生微指令126来执行RDMSR/WRMSR指令。这样的实施例的优点在于增加ARM ISA MRC/MRRC/MCR/MCRR指令来存取特定模式寄存器通用控制及状态寄存器的功能时,只需要在现有提供x86ISA RDMSR/WRMSR指令存取上述特定模式寄存器通用控制及状态寄存器功能的微代码234增加相对较小数量的微代码234即可。
请参阅图9,其是一方块图,用以详细描述微处理器100通过启动x86ISA及ARM ISA程序来存取图1的微处理器100的特定模式寄存器。多个64位特定模式寄存器122已公开于图中,每一特定模式寄存器122具有不同的特定模式寄存器地址(例如0x1110,0x1234,0x2220,0x3330,0x4440)。如上所述,特定模式寄存器122可视为图1寄存器档案106中的一部分。
图9是显示x86ISA程序,具体来说是RDMSR/WRMSR指令124,当指令模式指标132指示x86ISA时,x86ISA程序存取特定模式寄存器122中的一个寄存器。在图9的实施例中,作为存取的特定模式寄存器122具有地址0x1234。因此,如x86ISA所指定的,特定模式寄存器122地址数值已通过在RDMSR/WRMSR指令124之前的x86程序,而被存储在x86ECX寄存器106中。此外,在RDMSR指令124的情况中,如x86ISA所指定的,微处理器100从地址0x1234的特定模式寄存器122读取64位数据数值,然后复制到x86EDX:EAX寄存器106。而在WRMSR指令124的情况中,如x86ISA所指定的,微处理器100将x86EDX:EAX寄存器106内的64位数据数值,复制到在地址0x1234的特定模式寄存器122。
图9亦显示ARM ISA程序,具体来说是MRRC/MCRR指令124,当指令模式指标132指示ARM ISA时,x86ISA程序存取特定模式寄存器122中地址为0x1234的寄存器。特定模式寄存器122地址数值0x1234已通过在MRRC/MCRR指令124之前的ARM程序,而被存储在ARM R1寄存器106。此外,在MRRC指令124的情况中,微处理器100从地址0x1234的特定模式寄存器122读取64位数据数值,然后复制到ARM R2:R0寄存器106;而在MCRR指令124的情况中,微处理器100将ARM R2:R0寄存器106内的64位数据数值,复制到在地址0x1234的特定模式寄存器122。MRRC/MCRR指令124指定一预设的ARM协同处理器编号。在一实施例中,预设的ARM协同处理器编号是4。MRRC/MCRR指令124亦指定一预设ARM寄存器编号。在一实施例中,预设的ARM寄存器编号是(0,7,15,0),其是分别表示CRn、opc1、CRm以及opc2栏(field)的数值。在MRC/MCR指令124的情况、以及MRRC/MCRR指令124的情况中,表示opc1栏为7且CRm栏为15。在一实施例中,如果ARM ISA指令124是MRC或MCR指令,那么只有比所指定的64位特定模式寄存器的低32位(lower32bits)才被读写。
在一实施例中,如上所述,由x86ISA及ARM ISA所定义的通用寄存器,分享寄存器档案106物理寄存器(physical register)的实例。在一实施例中,对应关系如下表所示。
EAX | R0 |
ECX | R1 |
EDX | R2 |
EBX | R3 |
ESP | R4 |
EBP | R5 |
ESI | R6 |
EDI | R7 |
上表所示的对应关系可观察到ARM R1寄存器对应到x86ECX寄存器,且ARM R2:R0寄存器对应到x86EDX:EAX寄存器,其优点在于可将微代码234简单化。
虽然可经由上述所公开的实施例了解到R1寄存器是预设的ARM寄存器,且是用来指定特定模式寄存器122地址,但其他通过其他方式来指定特定模式寄存器122地址的实施例亦被考虑在本发明中,例如,但不限于此,另一通用寄存器是预设寄存器或在MRRC/MCRR指令124本身指定寄存器。同样地,虽然上述实施例公开R2:R0寄存器是预设的ARM寄存器,且是用来处理数据,但其他可设想到的实施例中,用来处理数据的寄存器是通过其他方式所指定的实施例亦被本发明所考虑,例如,但不限于此,其他通用寄存器是预设寄存器,或是在MRRC/MCRR指令124本身指定寄存器。此外,虽然上述实施例公开协同处理器4的寄存器(0,7,15,0)是预设ARM协同处理器寄存器,且是用来存取特定模式寄存器122,但其他可设想到的实施例中,是用另一预设ARM协同处理器寄存器亦被本发明所考虑。最后,虽然上述实施例公开x86ISA或ARM ISA的通用寄存器分享物理寄存器档案,但它们彼此不分享、或是以不同于前述方式做对应的其他实施例亦被本发明所考虑。
请参阅图10,图10是一流程图,描述图1的微处理器100执行存取特定模式寄存器122的指令124。
在步骤1002中,微处理器100提取一ISA指令124,并且将其提供至图1的硬件指令转译器104,接着执行步骤1004。
在步骤1004中,如果指令模式指标132指示x86ISA,则执行步骤1012,而若指令模式指标132指示ARM ISA,则执行步骤1022。
在步骤1012中,图2的x86简单指令转译器222遭遇x86ISARDMSR/WRMSR指令124,并进入陷阱而到图2的复杂指令转译器206。具体来说,简单指令转译器204提供微代码地址252给微程序计数器232,此微代码地址252是进入在微代码只读存储器234中用以处理RDMSR/WRMSR指令124的例行程序的入口点。接着执行步骤1014。
在步骤1014中复杂指令转译器206利用处理RDMSR/WRMSR指令124的例行程序的微代码只读存储器指令247,用以产生微指令126来执行RDMSR/WRMSR指令124。图11是显示处理RDMSR/WRMSR指令124的微代码234例行程序的虚拟代码。如图11所示,TEMP1及TEMP2是指被用来存储暂时数值的暂时(例如非架构)64位寄存器。接着执行步骤1016。
在步骤1016中,执行管线112执行在步骤1014所产生的微指令126,藉以执行RDMSR/WRMSR指令124。也就是说,在RDMSR指令124的情况中,微指令126将特定模式寄存器122内的数值复制到EDX:EAX寄存器,而特定模式寄存器122的地址是由ECX寄存器所指定;相反地,在WRMSR指令124的情况中,微指令126将EDX:EAX寄存器内的数值复制到特定模式寄存器122,而特定模式寄存器122的地址是由ECX寄存器所指定。在执行步骤1016后结束。
在步骤1022中,图2的ARM简单指令转译器224遭遇ARM ISAMRRC/MCRR指令124,并进入陷阱而到复杂指令转译器206。具体来说,简单指令转译器204提供微代码地址252给微程序计数器232,此微代码地址252是在微代码只读存储器234中用以处理MRRC/MCRR指令124的例行程序的入口点。接着执行步骤1024。
在步骤1024中,复杂指令转译器206利用处理RDMSR/WRMSR指令124的例行程序的微代码只读存储器指令247,用以产生微指令126来执行MRRC/MCRR指令124。图11亦显示处理RDMSR/WRMSR指令124的微代码234例行程序的虚拟代码。如图11所示,共同子程序(RDMSR_COMMON)可被用以处理RDMSR指令124的微代码程序、以及用来处理WRMSR指令124的微代码程序两者所呼叫。同样地,共同子程序(WRMSR_COMMON)可被用来处理MCRR指令124的微代码例行程序、以及被用来处理WRMSR指令124的微代码例行程序两者所呼叫。这样做是有其优点的,因为大量的操作可通过共同子程序来执行,使得只需要相对较少的微代码234即可支持ARM MRRC/MCRR指令124。此外,处理MRRC/MCRR指令124的例行程序用以确定预设的协同处理器编号已被指定(例如协同处理器4),以及预设的协同处理器寄存器地址已被指定(如(0,7,15,0)),否则,微代码将分支到处理存取至其他寄存器的例行程序,如非特定模式寄存器、协同处理器寄存器。在一实施例中,程序亦判断微处理器100不在ARM ISA使用者模式;否则,微代码将产生一例外。此外,例行程序判断启动ARM ISA程序来存取特定模式寄存器122的功能已启动;否则,微代码把MRRC/MCRR指令124视为无执行任何操作。接着执行步骤1026。
在步骤1026中,执行管线112执行在步骤1014产生的微指令126,藉以执行MRRC/MCRR指令124。也就是说,在MRRC指令124的情况中,微指令126将特定模式寄存器122内的数值复制到R2:R0寄存器,而特定模式寄存器122的地址是在R1寄存器内被指定,相反地,在MCRR指令124的情况中,微指令126将R2:R0寄存器内的数值复制到特定模式寄存器122,而特定模式寄存器122的地址是在R1寄存器内被指定。在执行步骤1026后结束。
虽然已于图9至图11公开MRRC/MCRR指令124相关的实施例,如上所述的实施例还提供ARM MCR/MRC指令124的功能来存取特定模式寄存器122低32位。进一步来说,虽然实施例已公开特定模式寄存器122是经由MRRC/MCRR/MCR/MRC指令124而被存取,但其他的实施例,例如运用ARM ISA LDC/STC指令124来存取特定模式寄存器122亦被考虑于本发明中。也就是说,数据是从存储器被读取或存储在存储器,而不是从ARM ISA通用寄存器(被读取或存储其中)。
从上述可了解到本发明实施例是对ARM ISA程序提供一有效的机制来存取微处理器100的特定模式寄存器122。其他可想到的实施例中,每一特定模式寄存器122具有自己的协同处理器寄存器编号,且协同处理器寄存器编号是在ARM ISA协同处理器寄存器空间的MRRC/MCRR opc1及CRm栏位内被指定。本实施例的缺点在于可能会在ARM ISA协同处理器寄存器空间中,消耗相对较多数量的寄存器。此外,还可能需要对现有微代码中明显扩编,这样将会消耗微代码只读存储器234内的有效空间。在一这样的实施例中,ECX数值(或至少较低的位)被拆散成片段(pieces),并且被分布至opc1及CRm栏位。微代码将片段组合成原始的ECX数值。
通过特定模式寄存器(MSR)地址空间取得64位通用寄存器(GPR)的实施例
图12是一方块图显示传统x86指令集架构的AX、EAX、与RAX寄存器。传统的8086与8088处理器具有搭个16位通用寄存器,如图中所示的16位AX寄存器。此16位通用寄存器的各个字节(byte)可独立存取。举例来说,图中的AX寄存器的两个字节AH与AL即可被独立存取。随着80386处理器的出现,原本的通用寄存器被扩张为32位寄存器。举例来说,图中的16位AX寄存器被扩张为32位EAX寄存器,而32位EAX寄存器的底部16位被对应至AX寄存器。Intel64架构更进一步将通用寄存器扩张为64位寄存器。举例来说,图中的32位EAX寄存器被扩张为64位RAX寄存器,而64位RAX寄存器的底部32位对应至EAX寄存器。此外,Intel64架构还额外增加八个64位寄存器,亦即图13中的R8至R15寄存器。
如Intel软件开发者手册(Intel Software Developer’s Manual)所述,IA-32架构支持三个基本的操作模式:保护模式(protected mode)、实体地址模式(real-addressmode)与***管理模式(system management mode,SMM)。IA-32操作模式是一非64位的操作模式。Intel64架构增加一个IA-32e模式,此模式具有二个子模式:(1)兼容模式(compatibility mode),以及(2)64位模式,通常亦称为长模式(long mode)。兼容模式是一非64位操作模式。在非64位操作模式下提供程序执行于Intel64架构处理器的基本执行环境不同于在64位操作模式下的基本执行环境,这部分在图13会有相关说明。
图13是一方块图显示传统的Intel64架构的十六个64位通用寄存器。具体而言,就是图中显示的RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP,以及R8至R15一共十六个64位通用寄存器。这十六个64位通用寄存器的每一个都区分为上半部32位与下半部32位。如图中所示,RAX,RBX,RCX,RDX,RSI,RDI,RBP与RSP通用寄存器的下半部即构成八个32位通用寄存器,即EAX,EBX,ECX,EDX,ESI,EDI,EBP与ESP通用寄存器,而R8至R15通用寄存器的下半部即构成R8D至R15D八个寄存器。在长模式下,这十六个64位寄存器的所有位都可被执行于Intel64架构处理器的程序所取用。举例来说,当传统处理器执行于长模式,程序内的x86四倍字移动(MOVQ)指令可特定这些寄存器中的任何一个作为其来源或目的寄存器。进一步来说,只有在处理器执行于长模式的情况下,这些寄存器才能被程序取用。相反地,在非64位模式下(即不同于长模式的其他模式),只有EAX,EBX,ECX,EDX,ESI,EDI,EBP与ESP这八个寄存器可被程序取用,以向下相容于长模式外的其他模式的程序。
本实施例所描述的微处理器具有的优点在于,微处理器的十六个64位寄存器内的所有位都可被程序所取用,即使此微处理器执行于非64位操作模式。具体来说,本发明的微处理器使64位寄存器出现于微处理器的特定模式寄存器地址空间内,藉以让这些寄存器可通过RDMSR/WRMSR指令被程序取用。这在下文会有更详细的描述。
图14是一方块图显示本发明图1的微处理器100中,引用Intel64架构所定义的RAX至R15十六个64位通用寄存器的十六个64位硬件寄存器106的一实施例。RAX至R15这十六个64位通用寄存器106引用于图1的微处理器100的硬件寄存器档案106的其中之一内。如前述,这些通用寄存器106是图1的微指令126用来存放来源和/或目的运算元所使用的硬件寄存器。执行管线112将执行结果128写入RAX至R15这十六个64位通用寄存器106,并为了微指令126由RAX至R15这十六个64位通用寄存器106接收运算元。RAX至R15这些64位通用寄存器106出现于微处理器100的特定模式寄存器地址空间内,藉此,当微处理器100执行于非64位模式时,程序还是可以通过RDMSR/WRMSR指令124取用这些通用寄存器106。这在下文会有更详细的描述。
图15是一方块图显示传统Intel64架构处理器的一特定模式寄存器地址空间。如前述,x86的RDMSR与WRMSR指令是特定32位的ECX寄存器内所能存取的特定模式寄存器的地址。此ECX寄存器是一个32位寄存器。因此,如图中所示,地址空间1502内可能出现特定模式寄存器的地址为0x0000_00000至0xFFFF_FFFF。基本上,x86处理器的特定模式寄存器空间内的特定模式寄存器的数量稀少,亦即,此特定模式寄存器空间1502的地址中,只有相当少的比例确实存在一个特定模式寄存器。此外,这些特定模式寄存器地址不必然是相邻的,亦即,特定模式寄存器地址空间1502内的特定模式寄存器间可能存在间隙。如图中所示,传统的x86处理器的特定模式寄存器地址空间1502并不包含任何一个x86通用寄存器。
图16是一方块图显示本发明图1的微处理器100的特定模式寄存器地址空间1602的一实施例。图16的特定模式寄存器地址空间1602类似于图15的特定模式寄存器地址空间1502。亦即,特定模式寄存器地址空间1602包含微处理器100的特定模式寄存器106/122,并且类似于图9所示,每个特定模式寄存器都具有一个唯一的特定模式寄存器地址。不过,图16的微处理器100的特定模式寄存器地址空间1602包含图14所示的RAX至R15这十六个64位通用寄存器106。也就是说,RAX至R15这十六个64位通用寄存器106中的每一个都具有它自己相关联且唯一存在于特定模式寄存器地址空间内的特定模式寄存器地址(在图16的实施例中,RAX至R15通用寄存器106分别具有相关联的特定模式寄存器地址0xD000_0000至0xD000_000F;不过,此例仅为说明,本发明的实施例并不限于这些特殊的特定模式寄存器地址数值)。藉此,当微处理器100执行于非64位模式时,程序还是可以通过RDMSR/WRMSR指令124取用RAX至R15这十六个64位通用寄存器106。也就是说,操作于非64位操作模式的程序可包含一RDMSR/WRMSR指令124来特定这十六个64位通用寄存器106的其中之一,以读取/写入被特定的64位通用寄存器106。
图17是一流程图显示图1的微处理器100执行x86的RDMSR指令124,藉以在微处理器100的特定模式寄存器地址空间1602内,特定一64位通用寄存器106的一实施例。此流程始在步骤1702。
在步骤1702中,微处理器100处于非64位操作模式,且面临一个RDMSR指令124。就一实施例而言,在此步骤中,x86简单指令转译器222检测到RDMSR指令124并将其捕捉(traps)到复杂指令转译器206以产生微指令126来实行RDMSR指令124。接下来流程前进至步骤1704。
在步骤1704中,微处理器100由x86ECX寄存器106取得所要读取的特定模式寄存器的地址(此ECX寄存器内存放有早于RDMSR指令的程序指令)。此特定模式寄存器地址是特定RAX至R15这十六个64位通用寄存器106的其中之一。就一实施例而言,前文所述实行RDMSR指令124的微指令126类似于图11中所描述的微指令,并且更进一步能够辨识关联于RAX至R15这十六个64位通用寄存器106的特定模式寄存器地址。接下来流程前进至步骤1706。
在步骤1706中,微处理器100读取图14的RAX至R15这十六个64位通用寄存器106中由RDMSR指令124所特定的通用寄存器的内容,并将此内容写入图14的EDX:EAX寄存器106。举例来说,如果是ECX寄存器106内特定的特定模式寄存器地址关联于RBX寄存器,如图18所示,此微处理器100就会读取RBX寄存器106的内容,并将其写入EDX:EAX寄存器106。就一实施例而言,微处理器100执行步骤1702至1706以实行RDMSR指令的方式与前述图9至图11所描述的方式相类似。此流程结束在步骤1706。
图19是一流程图显示图1的微处理器100执行x86的WRMSR指令124,藉以在微处理器100的特定模式寄存器地址空间1602内,特定一64位通用寄存器106的一实施例。此流程始在步骤1902。
在步骤1902中,微处理器100处于非64位操作模式,且面临一个WRMSR指令124。就一实施例而言,在此步骤中,x86简单指令转译器222检测到RDMSR指令124并将其捕捉(traps)到复杂指令转译器206,以产生微指令126来实行WRMSR指令124。接下来流程前进至步骤1904。
在步骤1904中,微处理器100由x86ECX寄存器106取得所要读取的特定模式寄存器的地址(此ECX寄存器内存放有早于WRMSR指令的程序指令)。此特定模式寄存器地址是特定RAX至R15这十六个64位通用寄存器106的其中之一。就一实施例而言,前文所述实行WRMSR指令124的微指令126类似于图11中所描述的微指令,并且更进一步能够辨识关联于RAX至R15这十六个64位通用寄存器106的特定模式寄存器地址。接下来流程前进至步骤1906。
在步骤1906中,微处理器100将图14的EDX:EAX寄存器106的内容写入图14的RAX至R15这十六个64位通用寄存器106中由WRMSR指令124所特定的通用寄存器。举例来说,如果ECX寄存器106内特定的特定模式寄存器地址关联于RBX寄存器,如图20所示,此微处理器100就会读取EDX:EAX寄存器106的内容,并将其写入RBX寄存器106。就一实施例而言,微处理器100执行步骤1902至1906以实行WRMSR指令的方式与前述图9至图11所描述的方式相类似。此流程结束在步骤1906。
值得注意的是,当处于64位操作模式,微处理器100将会执行RDMSR/WRMSR指令来特定RAX至R15这十六个64位通用寄存器106其中之一,即使微处理器所执行的程序可使用其他指令,如x86MOVQ、PUSH、或POP指令,或是其他会读取或写入通用寄存器的x86指令,来存取RAX至R15这十六个64位通用寄存器106。
图21是一流程图显示图1的微处理器100执行x86的RDMSR指令124,藉以在微处理器100的特定模式寄存器地址空间1602内,特定一64位通用寄存器106的另一实施例。图21的流程类似于图17的流程,图中相同的步骤以相同的标号表示。不过,图17的步骤1704被图21的步骤2104所取代。步骤2104采用不同的方式来取得通用寄存器106的特定模式寄存器地址。此流程始在步骤1702。
在步骤1702中,微处理器100处于非64位操作模式,且面临一个RDMSR指令124。接下来流程前进至步骤2104。
在步骤2104中,微处理器100确认ECX寄存器特定有一全局(global)通用寄存器特定模式寄存器地址(GPR MSR address),此地址是一由微处理器100制造商预先设定的数值(此ECX寄存器内存放有早于RDMSR指令的程序指令)。全局GPR MSR地址全局关联于RAX至R15这十六个64位通用寄存器106,并且指出这十六个64位通用寄存器106中被ESI寄存器106内的GPR MSR子地址所特定的一个。藉此,微处理器100可由ESI寄存器106取得RAX至R15这十六个64位通用寄存器106中所要读取的通用寄存器的GPR MSR子地址(此ESI寄存器106内存放有早于RDMSR指令的程序指令)(在图22的实施例中,全局GPR MSR地址是0xE000_0000;不过,此例仅为说明本发明,本实施例并不限于此特殊的特定模式寄存器地址值)。GPRMSR子地址位于一GPR MSR子地址空间2202内。就一实施例而言,如图22所示,RAX至R15这十六个64位通用寄存器106的子地址为0至15。就一实施例而言,RAX至R15这十六个64位通用寄存器106的子地址对应于x86指令集架构的其他指令,如MOVQ指令,所特定的x86通用寄存器的地址。不过,在其他实施例中,也可考虑使用其他GPR MSR子地址空间2022内的其他的GPR MSR子地址数值。虽然本实施例所描述的GPR MSR子地址特定于ESI寄存器内,不过,本发明并不限于此。在其他实施例中,此GPR MSR子地址也可特定于除了ECX寄存器106外的其他x8632位通用寄存器内。接下来流程前进至步骤1706。
在步骤1706中,微处理器100读取图14的RAX至R15这十六个64位通用寄存器106中由RDMSR指令124所特定的通用寄存器的内容,并将此内容写入图14的EDX:EAX寄存器106。举例来说,如果是ESI寄存器106内特定的特定模式寄存器子地址关联于RBX寄存器,如图22所示,此微处理器100就会读取RBX寄存器106的内容,并将其写入EDX:EAX寄存器106。此流程结束在步骤1706。
图23是一流程图用以显示图1的微处理器100执行x86的WRMSR指令124,藉以在微处理器100的特定模式寄存器地址空间1602内,特定一64位通用寄存器106的另一实施例。图23的流程类似于图19的流程,图中相同的步骤以相同的标号表示。不过,图19的步骤1904由图23的步骤2304所取代,步骤2304采用不同的方式来取得通用寄存器106的特定模式寄存器地址。此流程始在步骤1902。
在步骤1902中,微处理器100处于非64位操作模式,且面临一个WRMSR指令124。接下来流程前进至步骤2304。
在步骤2304中,微处理器100确认ECX寄存器特定有一全局(global)通用寄存器特定模式寄存器地址(GPR MSR address)(此ECX寄存器内存放有早于WRMSR指令的程序指令)。藉此,微处理器100可由ESI寄存器106取得RAX至R15这十六个64位通用寄存器106中所要读取的通用寄存器的GPRMSR子地址(此ESI寄存器106内存放有早于WRMSR指令的程序指令)。接下来流程前进至步骤1906。
在步骤1906中,微处理器100读取图14的EDX:EAX寄存器106的内容并将其写入图14的RAX至R15这十六个64位通用寄存器106中由WRMSR指令124所特定的通用寄存器。举例来说,如果是ESI寄存器106内特定的特定模式寄存器子地址关联于RBX寄存器,如图24所示,此微处理器100就会将RBX寄存器106的内容写入EDX:EAX寄存器106。此流程结束在步骤1906。
虽然前述实施例描述RAX至R15这十六个x8664位通用寄存器可经由特定模式寄存器空间地址由非64位模式的程序取用,不过,本发明并不限于此。其他实施例,例如其他x8664位寄存器,如RFLAGS与RIP寄存器106,经由特定模式寄存器空间地址由非64位模式的程序取用,亦为本发明所涵盖。
虽然前述实施例描述RAX至R15这十六个x8664位通用寄存器可经由特定模式寄存器空间地址由非64位模式的程序取用,不过,本发明并不限于此。其他实施例,如图25所示的x86128位XMM寄存器106(SSE模式)经由特定模式寄存器空间地址由程序取用,即使微处理器并未开启支持SSE的功能(例如:x86CR4与CR0寄存器内适当的地址并未被写入以开启支持SSE的功能),亦为本发明所涵盖。另外,其他实施例,如图25所示的x86256位YMM寄存器106(YMM模式,Intel AVX指令执行在此模式)经由特定模式寄存器空间地址由程序取用,即使微处理器并未开启支持YMM的功能(例如:x86CR4与CR0寄存器内适当的地址并未被写入以开启支持YMM的功能),亦为本发明所涵盖。本发明可在各种不同的情况下提供额外的存储空间,例如供诊断(diagnostics)、除错(debugging)、传递开机载入参数(bootloaderparameter passing)、以及其他类似于本文所描述经由特定模式寄存器空间地址在非64位模式下取用RAX至R15这十六个x8664位通用寄存器的情况,所使用的高速暂存存储器空间(scratchpad space)。其次,本发明不需开启微处理器100支持SSE模式和/或YMM模式的功能,因而可维持小程序代码尺寸(code size),避免使用相对较大尺寸的SSE和/或AVX指令。此特征对于存储于只读存储器的程序,或是在微处理器100与主机***完成测试前执行的BIOS程序,特别重要。
图26是一流程图用以显示本发明图1的微处理器100在非64位操作模式下,通过特定模式寄存器地址空间取用RAX至R15这十六个x8664位通用寄存器106,来提供程序除错能力。此流程始在步骤2602。
如步骤2602所示,微处理器100上具有一程序执行于非64位操作模式。此程序可为BIOS、可延伸固件接口(EFI)、或是其他相类似的程序。不过并不限于此。接下来流程前进至步骤2604。
如步骤2604所示,此程序包含WRMSR指令策略性地分布在此程序内以存储除错数据至RAX至R15这十六个x8664位通用寄存器106的至少其中之一。具体而言,WRMSR指令将除错信息写入R8至R15寄存器106,和/或RAX至RSP寄存器106的上部分32位。因为是处于非64位操作模式,寄存器106的这些部分除了在此情况下会被程序取用外,并不会在一般的运作目的下被取用。另外,除错数据可视觉化为导览列(面包屑)(Bread Crumbs)或是暗示(clues)以利于程序人员对程序进行除错。举例来说,随着程序的进行,此程序可将一系列数值写入64位寄存器106内,而这些数值可供后续使用来确认是否程序失控(crash)和/或程序失控的原因。相较之下,将除错数据存储于存储器中速度较慢且较不安全。由于这些位除了经由特定模式寄存器地址空间外来取用外,并不会在非64位模式下被取用,因此,即使程序具有异常(bug)或失控,这些位也不大可能被程序覆写。如前述,XMM与YMM寄存器106也可如此使用,而不需启用支持SSE和/或YMM模式的功能。接下来流程前进至步骤2606。
在步骤2606中,控制权被移转至一除错程序。控制权移转至除错程序可能是由于面临一个除错中断点(debug breakpoint)、或是遭遇到错误(fault)、陷阱(trap)或是其他例外事件、又或者程序陷入无限循环(infinite loop)、或是其他程序出现异于程序设计者预想行为的情况。接下来流程前进至步骤2608。
在步骤2608中,程序人员使用除错程序从RAX至R15这十六个64位通用寄存器106和/或XMM和/或YMM寄存器106内读取除错数据以对程序进行除错。此流程终止在步骤2608。
图27是一流程图用以显示本发明图1的微处理器100在非64位操作模式下,通过特定模式寄存器地址空间取用RAX至R15这十六个x8664位通用寄存器106,来执行对于微处理器100和/或包含此微处理器100的***的诊断。此流程始在步骤2702。
在步骤2702中,此微处理器100上具有一诊断程序执行于非64位操作模式。此诊断程序可诊断微处理器100本身和/或包含此微处理器100的***的其他部分。举例来说,此诊断程序可诊断此***的***装置,如直接存储器存取(DMA)控制器、存储器控制器、视频控制器、软盘控制器、网络接口控制器等等。接下来流程前进至步骤2704。
如步骤2704所示,诊断程序包含RDMSR/WRMSR指令,用以从RAX至R15这十六个x8664位通用寄存器106其中至少一个寄存器读取数据或是将数据写入,以将其作为高速暂存存储器空间。此特征在存储器尚未测试而诊断程序尚未能使用存储器来存储数据的情况下特别有用。此时,在原本32位EAX至ESP寄存器106以外,R8至R15寄存器106与RAX至RSP寄存器的上部分32位所提供的额外存储空间特别有帮助。如前述,XMM与YMM寄存器106也可如此使用,而不需启用支持SSE和/或YMM模式的功能。此流程终止在步骤2704。
图28是一方块图显示本发明图1的微处理器100中,引用Intel64架构定义的RAX至R15十六个64位通用寄存器的十六个64位硬件寄存器106的一实施例,这十六个硬件寄存器106亦引用ARM指令集架构的R0至R15十六个32位通用寄存器。亦即,这十六个64位硬件寄存器由微处理器100中执行于ARM指令集架构模式与x86指令集架构模式的程序所共享。图28的方块图类似于图14的方块图。不过如图中所示,R0至R15这十六个ARM指令集架构的32位通用寄存器分享这些引用RAX至R15十六个64位通用寄存器的硬件寄存器106的下部分32位。此特征可同时参照前述第1、5、6、以及9至11图的微处理器100。这些32位ARM通用寄存器106通常可通过ARM指令集架构的指令,例如LDR、STR、ADD、SUB指令,所取用。如对应于图9至图11的段落所述,微处理器100可让x86指令集架构与ARM指令集架构的程序来存取微处理器100的特定模式寄存器。因此,由于RAX至R15这十六个64位通用寄存器106可通过微处理器100的特定模式寄存器地址空间被取用,它们也可通过ARM指令集架构的MRRC/MCRR指令124被一个ARM指令集架构的程序所取用。这部分在下文会有更详细的描述。虽然图28是显示ARM指令集架构的R15寄存器与x86R15D寄存器共享的情况,不过,就一优选实施例而言,由于ARM R15寄存器是一程序记数(PC)寄存器,这两个寄存器被分别引用。另外值得注意的是,R8至R15的命名方式在图28与本文其他部分是同时用来表示八个ARM指令集架构32位通用寄存器与八个x86指令集架构64位通用寄存器。此处所采用的说明方式是试着在文字描述无法清楚说明时,利用命名方式表达所指向的寄存器。
图29是一流程图显示本发明图1的微处理器100执行ARM指令集架构MRRC指令,而此MRRC指令特定微处理器100的特定模式寄存器地址空间1602内的x8664位通用寄存器106的一实施例。此流程始在步骤2902。
在步骤2902中,执行于ARM ISA指令模式的微处理器100面临一MRRC指令。就一实施例而言,在此步骤中,x86简单指令转译器222检测到MRRC指令124并抓取至复杂指令转译器206以产生微指令126来实行MRRC指令124。接下来流程前进至步骤2904。
在步骤2904中,微处理器100由ARM的R1寄存器取得所要读取的特定模式寄存器的地址(此R1寄存器106内存放有早于MRRC指令的程序指令)。在此情况下,特定模式寄存器地址特定RAX至R15这十六个64位通用寄存器106的其中之一。就一实施例而言,前述实行MRRC指令的微指令126类似于图11中所描述者,不过更进一步能够辨识关联于RAX至R15这十六个64位通用寄存器106的特定模式寄存器地址。接下来流程前进至步骤2906。
在步骤2906中,微处理器100读取图14的RAX至R15这十六个64位通用寄存器106中由MRRC指令124所特定的通用寄存器的内容,并将其写入图14的R2:R0寄存器内。举例来说,如图30所示,如果是R1寄存器106所特定的特定模式寄存器地址关联于RBX寄存器,微处理器100就会读取RBX寄存器106的内容并将其写入R2:R0寄存器106。就一实施例而言,此微处理器100依据步骤2902至2906执行MRRC指令的方式大致与前述关于图9至图11的描述相同。在另一实施例中,这两个ARM ISA目的寄存器由MRRC指令124本身的位所特定,而非如本实施例是将R2:R0寄存器106预设为目的寄存器。此流程终止在步骤2906。
图31是一流程图显示本发明图1的微处理器100执行ARM指令集架构MCRR指令,而此MCRR指令特定微处理器100的特定模式寄存器地址空间1602内的x86 64位通用寄存器106的一实施例。此流程始在步骤3102。
在步骤3102中,执行于ARM ISA指令模式的微处理器100面临一MCRR指令。就一实施例而言,在本步骤中,x86简单指令转译器222检测到MCRR指令124并抓取至复杂指令转译器206以产生微指令126来实行MCRR指令124。接下来流程前进至步骤3104。
在步骤3104中,微处理器100由ARM的R1寄存器取得所要写入的特定模式寄存器的地址(此R1寄存器106内存放有早于MCRR指令的程序指令)。在此情况下,特定模式寄存器地址被特定RAX至R15这十六个64位通用寄存器106的其中之一。就一实施例而言,实行MCRR指令的微指令126类似于图11中所描述者,不过更进一步能够辨识关联于RAX至R15这十六个64位通用寄存器106的特定模式寄存器地址。接下来流程前进至步骤3106。
在步骤3106中,微处理器100将图14的R2:R0寄存器的内容,写入图14的RAX至R15这十六个64位通用寄存器106中由MCRR指令124所特定的通用寄存器。举例来说,如图32所示,如果是R1寄存器106所特定的特定模式寄存器地址关联于RBX寄存器,微处理器100就会读取R2:R0寄存器106的内容并将其写入RBX寄存器106。就一实施例而言,此微处理器100依据步骤3102至3106执行MCRR指令的方式大致与前述关于图9至图11的描述相同。在另一实施例中,这两个ARM ISA目的寄存器由MCRR指令124本身的位所特定,而非如本实施例是将R2:R0寄存器106预设为目的寄存器。此流程终止在步骤3106。
其他类似于本发明图29至图32,执行ARM指令集架构MRRC/MCRR指令124以特定特定模式寄存器地址空间内的64位通用寄存器106的实施例,以及类似于本发明图21至图24,使用全局GPR MSR地址与GPR MSR子地址的实施例,亦为本发明所涵盖。在这些实施例中,GPR MSR子地址可特定于R1寄存器106以外的任何ARM ISA通用寄存器。此外,图29至图32所描述的实施例可在一个x86指令集架构与ARM指令集架构共享对于硬件寄存器106的引用的微处理器100上执行,也可以在一个x86指令集架构与ARM指令集架构不共享对于硬件寄存器106的引用的微处理器100上执行,后者即是具有独立的硬件寄存器档案106引用x86指令集架构与ARM指令集架构的通用寄存器。
图33是一流程图用以显示本发明图1的微处理器100使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个执行于非64位操作模式的x86指令集架构开机载入程序传递至ARM指令集架构操作***。此流程始在步骤3302。
在步骤3302中,在微处理器100上具有一个x86指令集架构的程序,例如开机载入程序(boot loader),执行于非64位操作模式。此开机载入程序包含至少一个WRMSR指令用以将数据写入RAX至R15这十六个64位通用寄存器的至少其中之一,例如RBX寄存器。这些数据或参数将会被传递至如下所述的ARM指令集架构的程序以供使用。举例来说,Linux内核(Kernal)即可让开机载入程序传递这些参数。这些参数可以利用本文所描述的方式从开机载入程序传递至Linux内核。举例来说,由开机载入程序确认的***和/或处理器的配置信息即可利用本文所描述的方式传递至操作***。就一实施例而言,虽然64位通用寄存器的64个位都被WRMSR指令写入,不过,只有上部分32位存放传递至ARM指令集架构程序的数据。虽然本实施例所描述的x86指令集架构程序是一开机载入程序,不过,其他x86指令集架构程序也可经由特定模式寄存器地址空间写入64位的RAX至R15通用寄存器106内,以将信息传递至ARM指令集架构的程序。又,虽然本实施例所描述的ARM指令集架构程序是一ARM操作***,其他ARM指令集架构的程序也可通过本文所描述的64位的RAX至R15通用寄存器106取得x86程序的数据。此外,虽然本实施例仅使用单一个WRMSR指令来将一个参数从x86程序,通过64位的RAX至R15通用寄存器106,传递至ARM程序,不过,此x86程序也可内含多个WRMSR指令,经由64位的RAX至R15通用寄存器106,将多个参数传递至ARM程序。接下来流程前进至步骤3304。
在步骤3304中,微处理器100执行开机载入程序的一重置至ARM(reset-to-ARM)指令。微处理器100执行此重置至ARM指令的方式在前面关于图6的说明部分已有详细描述。其中,步骤3304所执行的动作类似于步骤618。接下来流程前进至步骤3306。
在步骤3306中,因应此重置至ARM指令,微处理器100初始化其专属于ARM的状态502以及其指令集架构共享的状态506至ARM指令集架构所特定的预设值,而不去调整非专属于指令集架构(non-ISA-specific)的状态。此专属于ARM的状态502、专属于x86的状态504、以及指令集架构共享的状态506在前文尤其是关于图5的描述内容已有详细说明。虽然RAX至R15这十六个64位通用寄存器106的下部分32位由x86指令集架构与ARM指令集架构所共享,亦即虽然这十六个64位硬件寄存器106的下部分32位引用x86指令集架构RAX至R1564位通用寄存器的下部分32位与ARM指令集架构R0至R1532位通用寄存器,这十六个64位寄存器106的上部分32位并非处于指令集架构共享的状态506,因此并不会因为重置至ARM指令而初始化,反而是会维持其于微处理器100执行重置至ARM指令前的状态。因此,步骤3302写入64位通用寄存器106上部分32位的数据会保留下来。最后,重置微代码会将指令模式指标132与环境模式指标设定为ARM指令集架构。步骤3306所执行的动作类似于步骤622。接下来流程前进至步骤3308。
在步骤3308中,微处理器100开始在特定于x86指令集架构EDX:EAX寄存器内的地址抓取ARM指令124。当微处理器100切换至ARM指令集架构模式时,一个或多个早于重置至ARM指令的x86指令集架构程序将所要抓取的ARM指令集架构程序的第一ARM指令集架构指令的地址存放至EDX:EAX寄存器。当微处理器100执行重置至ARM指令时,其将ARM ISA指令特定于EDX:EAX寄存器内的抓取地址存储到其他地方,然后再在步骤3306中,初始化指令集架构共享的状态506。如前述,在本发明的一实施例中,此重置至ARM指令是一WRMSR指令指向唯一的特定模式寄存器地址,微处理器100将此指令视为将处理器重置为一个ARM指令集架构处理器的指令,此指令将在重置开始时所要抓取的第一ARM指令集架构指令的存储器地址特定于EDX:EAX寄存器106内。步骤3308所执行的动作类似于步骤624。接下来流程前进至步骤3312。
如步骤3312所示,此ARM指令集架构程序包含一ARM指令集架构MRRC指令,微处理器100执行此指令在RAX至R15这十六个64位通用寄存器106中特定其中之一,例如RBX,作为来源寄存器。如步骤3302所述,参数是被x86指令集架构开机载入程序写入被特定的通用寄存器。而依据图9至图11的实施例,此被特定的64位来源通用寄存器106的内容,被此MRRC指令写入ARM指令集架构R0:R2寄存器106。藉此,此ARM R2寄存器106存储由x86开机载入程序传递过来的参数。而ARM操作***的指令,如ADD或SUB,则可使用R2寄存器106内的参数来控制包含有此微处理器100的计算机***。如下列实施例所述,此参数也可通过由MRRC指令所特定的其他的ARM指令集架构寄存器106来传递,而非预设的R2寄存器。此流程终止在步骤3312。
图34是一流程图用以显示本发明图1的微处理器,使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个执行于非64位操作模式的x86指令集架构开机载入程序传递至ARM指令集架构操作***的另一实施例。此流程始在步骤3402。此步骤类似于图33的步骤3302,不过,本实施例所使用的64位寄存器106是x86R10寄存器106而非RBX寄存器106。
在步骤3304中,微处理器100执行开机载入程序的一重置至ARM指令。接下来流程前进至步骤3406。
在步骤3406中,回应此重置至ARM指令,微处理器100将其状态初始化至类似于图33的步骤3304的情形,并将模式指标132/136设定为ARM指令集架构。不过,在图34的实施例中,因应此重置至ARM指令,微处理器100并不初始化指令集架构共享(shared ISA)的状态506。其优点在于,在步骤3402中写入64位通用寄存器106的下部分32位(与上部分32位)的数据,在重置至ARM指令的执行过程中会被保留下来,使参数能够被传递至64位通用寄存器106的下部分32位。不过,此ARM指令集架构操作***必须初始化其通用寄存器106,因为这些通用寄存器在面临到重置至ARM指令时并未执行初始化的动作。接下来流程前进至步骤3308。
在步骤3308中,微处理器100开始从x86指令集架构的EDX:EAX寄存器所特定的地址抓取ARM指令124。接下来流程前进至步骤3412。
在步骤3412中,由于引用x8664位通用寄存器R10的64位硬件寄存器106的下部分32位同时引用32位ARM指令集架构R10寄存器,即如图28所述的寄存器共享,步骤3402中由x86指令集架构开机载入程序写入的参数存储于ARM指令集架构R10寄存器106。藉此,ARM操作***的指令,如ADD或SUB,即可使用ARM R10寄存器106内的参数来控制包含此微处理器100的计算机***的运作。
值得注意的是,图34的实施例并不需要图33的MRRC指令来存取来自开机载入程序的参数;不过,在图34的实施例中,只有ARM指令集架构寄存器R8至R14的32位被使用于传递参数,相较之下,在图33的实施例中则是RAX至R15的上部分32位用于传递参数。值得注意的是,虽然图33所描述的实施例应用于微处理器100的硬件寄存器106由不同架构的通用寄存器共享的情形,此方法也可应用于微处理器100的硬件寄存器106不会被不同架构的通用寄存器共享的情形。在这样的实施例中,因为引用x8664位通用寄存器106的硬件寄存器不会因为重置至ARM指令被初始化,通用寄存器的全部64位都可被用来传递参数;因而可以有更多的通用寄存器存储空间被取用以传递更多参数。最后,在另一实施例中,微处理器100具有共享ISA GPR的状态106,不过并不使其初始化(类似于图34的实施例),而ARM指令集架构操作***则是利用步骤3312/3314的MRRC指令,以获得更多通用寄存器存储空间来传递相较于图33与图34的实施例,更多的参数。
图35是一流程图用以显示本发明图1的微处理器,使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个ARM指令集架构开机载入程序传递至x86指令集架构操作***的一实施例。此流程始在步骤3502。
在步骤3502中,在微处理器100上执行有一个ARM指令集架构的程序,例如开机载入程序(boot loader)。此开机载入程序包含至少一个MCRR指令以将数据写入RAX至R15这十六个64位通用寄存器的至少其中之一,例如R10寄存器。这些数据或参数将会被传递至如下所述的x86指令集架构程序以供使用。虽然本实施例所描述的ARM指令集架构程序是一开机载入程序,其他ARM指令集架构程序也可经由特定模式寄存器地址空间写入64位的RAX至R15通用寄存器106内,以将信息传递至x86指令集架构的程序。又,虽然本实施例所描述的x86指令集架构程序是一x86操作***,其他x86指令集架构的程序也可通过本文所描述的64位的RAX至R15通用寄存器106取得ARM程序的数据。此外,虽然本实施例仅使用单一个MCRR指令来将一个参数从ARM程序,通过64位的RAX至R15通用寄存器106,传递至x86程序,不过,此ARM程序也可内含多个MCRR指令,经由64位的RAX至R15通用寄存器106,将多个参数传递至x86程序。接下来流程前进至步骤3504。
在步骤3504中,微处理器100执行来自开机载入程序的一重置至x86指令。关于微处理器100如何执行重置至x86指令可参照前文关于图6的说明。步骤3504所执行的动作类似于步骤648。接下来流程前进至步骤3506。
在步骤3506中,回应此重置至x86指令,微处理器100初始化其专属于x86的状态504至x86指令集架构特定的预设值,不过,并不会对非专属于指令集架构的状态或是指令集架构共享的状态506进行调整。特别是,这十六个64位寄存器106并不会因为此重置至x86指令被初始化,反而是维持其在微处理器100执行此重置至x86指令前的状态。因此,在步骤3502写入一个或多个64位通用寄存器106的数据,在重置至x86指令的执行过程中,可以被保留下来。最后,重置微代码设定指令模式指标132与环境模式指标136为x86指令集架构。接下来流程前进至步骤3508。
在步骤3508中,微处理器100开始在ARM指令集架构R1:R0寄存器内特定的地址抓取x86指令124。在微处理器100切换至x86指令集架构模式时,一个或多个早在此重置至x86指令的ARM指令集架构程序将所要抓取的x86指令集架构程序的第一x86指令集架构指令的地址,存放至R0:R2寄存器。步骤3508所执行的动作类似于步骤654。接下来流程前进至步骤3512。
在步骤3512中,此x86指令集架构程序包含一指令,例如MOVQ,微处理器100执行此指令在RAX至R15这十六个64位通用寄存器106中特定其中之一,例如R10,作为来源寄存器。而步骤3502所述,参数被ARM指令集架构开机载入程序写入此被特定的通用寄存器内。如果是x86操作***是一非64位操作***,微处理器就可以利用RDMSR/WRMSR指令来存取此参数。此流程终止在步骤3512。
图36是一流程图用以显示本发明图1的微处理器,使用特定模式寄存器地址空间所提供的通用寄存器,将参数从一个ARM指令集架构开机载入程序传递至x86指令集架构操作***的另一实施例。图36类似于图35,除了图中的步骤3502被步骤3602所取代,而步骤3512被步骤3612所取代。步骤3602与步骤3502的差异在于,在步骤3602中,ARM指令集架构的开机载入程序仅仅将参数写入ARM32位寄存器106,例如R10寄存器,而不需使用MCRR指令,例如使用ARM指令集架构的LDR或MOV指令。因此,此x8664位R10寄存器106的上部分32位不会被写入。由此可知,步骤3612与步骤3512的差异在于,在步骤3612中,x86操作***通过如x86MOVD指令,使用传递至x86R10寄存器106的下部分32位内的参数。
前述参数传递方法的优点在于,此方法其不需使用存储器位置来传递参数。
虽然前述实施例是让Intel64架构的64位寄存器,通过特定模式寄存器地址空间,在非64位模式下被使用。不过,其他64位架构的64位寄存器,例如AMD64架构,通过特定模式寄存器地址空间在非64位模式下被使用,亦为本发明所涵盖。
虽然本文所述的实施例中,关联至各个64位通用寄存器的唯一的特定模式寄存器地址是微处理器定义的GPR MSR子地址空间内的唯一值,并且此唯一值被特定于一个预设的32位通用寄存器,不过,其他对于此唯一值的特定方式也可适用于本发明。举例来说,此唯一值可以特定于一个由微处理器指令集架构为此目的所提供的新的寄存器,或是特定在两个RDMSR/WRMSR操作码字节后的额外的指令字节。
虽然本文所述的实施例是让Intel64架构的64位寄存器可经由特定模式寄存器,在非64位操作模式下被取用,不过,本发明并不限与此。此改良方式可应用于其他处理器架构,只要这个处理器架构具有:指令所执行的动作类似于RDMSR/WRMSR指令以及一提醒(notion)类似于特定模型指令集地址空间,并且具有多个操作模式,其中部分模式无法存取在其他模式下可存取的通用寄存器。举例来说,如果是未来在ARM指令集架构中增加新的64位寄存器(或是扩张既有的32位寄存器为64位),而这些64位寄存器仅能在新的操作模式下被取用,此实施例的提醒即可调整以使用MCRR/MRRC指令,并将64位通用寄存器包含至协同处理器寄存器空间。
虽然本文所述的实施例中,Intel64架构的64位寄存器可通过RDMSR指令在非64位操作模式下被读取,不过,其他实施例,例如此64位寄存器通过x86PDPMC指令被读取,亦为本发明所涵盖。
然而各种有关于本发明的实施例已在本文详述,应可充分了解如何实施并且不限于这些实施方式。举凡本领域技术人员当可依据本发明的上述实施例说明而作其它种种的改良及变化。举例来说,软件可以启动如功能、制造、模型、模拟、描述和/或测试本文所述的装置及方法。可以通过一般程序语言(如C及C++)、硬件描述语言(Hardware DescriptionLanguages;HDL)或其他可用程序的使用来达成,其中硬件描述语言(HardwareDescription languages;HDL)包含Verilog HDL、VHDL等硬件描述语言。这样的软件能在任何所知的计算机可用媒介中处理执行,例如磁带、半导体、磁盘或光盘(如CD-ROM及DVD-ROM等)、网络、有线电缆、无线网络或其他通讯媒介。本文所述的装置及方法的实施例中,可包含在智慧型内核半导体内,并且转换为集成电路产品的硬件,其中智慧型内核半导体如微处理器内核(如硬件描述语言内的实施或设定)。此外,本文所述的装置及方法可由硬件及软件的结合来实施。因此,本发明并不局限于任何本发明所述的实施例,但根据所附的权利要求书及等效的专利范围而定义。具体来说,本发明能在普遍使用的微处理器装置里执行实施。最后,熟练于本技术领域的应能体会他们能很快地以本文所公开的观念及具体的实施例为基础,并且在没有背离本发明所述的附属项范围下,来设计或修正其他结构而实行与本发明的同样目的。
然而以上所述仅为本发明的优选实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明权利要求书及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或申请专利范围不须达成本发明所公开的全部目的或优点或特点。此外,摘要部分和标题仅是用来辅助专利文件搜寻之用,并非用来限制本发明的权利范围。
【相关申请案的参考文献】
本申请案是同在申请中美国专利正式申请案的部分连续案,这些案件整体皆纳入本申请参考:
案号 | 申请日 |
13/224,310(CNTR.2575) | 09/01/2011 |
13/333,520(CNTR.2569) | 12/21/2011 |
13/333,572(CNTR.2572) | 12/21/2011 |
13/333,631(CNTR.2618) | 12/21/2011 |
本申请案引用于以下美国临时专利申请案作优先权,每一申请案整体皆纳入本申请参考:
案号 | 申请日 |
61/473,062(CNTR.2547) | 04/07/2011 |
61/473,067(CNTR.2552) | 04/07/2011 |
61/473,069(CNTR.2556) | 04/07/2011 |
61/537,473(CNTR.2569) | 09/21/2011 |
61/541,307(CNTR.2585) | 09/30/2011 |
61/547,449(CNTR.2573) | 10/14/2011 |
61/555,023(CNTR.2564) | 11/03/2011 |
61/604,561(CNTR.2552) | 02/29/2012 |
美国正式专利申请案
13/224,310(CNTR.2575) | 09/01/2011 |
引用下列美国临时申请案的优先权:
61/473,062(CNTR.2547) | 04/07/2011 |
61/473,067(CNTR.2552) | 04/07/2011 |
61/473,069(CNTR.2556) | 04/07/2011 |
以下三个本美国正式申请案
13/333,520(CNTR.2569) | 12/21/2011 |
13/333,572(CNTR.2572) | 12/21/2011 |
13/333,631(CNTR.2618) | 12/21/2011 |
皆是以下美国正式申请式的延续案:
13/224,310(CNTR.2575) | 09/01/2011 |
并引用下列美国临时申请案的优先权:
61/473,062(CNTR.2547) | 04/07/2011 |
61/473,067(CNTR.2552) | 04/07/2011 |
61/473,069(CNTR.2556) | 04/07/2011 |
61/537,473(CNTR.2569) | 09/21/2011 |
Claims (60)
1.一种微处理器,包含:
多个引用IA-32架构的EDX与EAX通用寄存器GPR的硬件寄存器;以及
多个引用Intel 64架构的R8至R15通用寄存器的硬件寄存器;
其中,该微处理器对于R8至R15各该通用寄存器关联一相对应的唯一的特定模式寄存器MSR地址;其中,回应一R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的读取特定模式寄存器RDMSR指令,该微处理器将引用R8至R15这些通用寄存器其中之一的通用寄存器的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
2.如权利要求1所述的微处理器,其中,该微处理器能够编程执行于多个操作模式,这些操作模式包含一Intel 64架构64位操作模式与多个非64位操作模式;其中,回应该RDMSR指令,该微处理器将引用R8至R15这些通用寄存器其中之一的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器,即使该微处理器执行于该非64位操作模式。
3.如权利要求2所述的微处理器,其中,R8至R15这些通用寄存器仅在该微处理器执行于该Intel 64架构64位操作模式下,能够被该Intel 64架构的四倍字移动MOVQ指令取用。
4.如权利要求1所述的微处理器,其中,关联于R8至R15各该通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一特定模式寄存器地址空间内的一相对应唯一值;其中,该微处理器从该IA-32架构的ECX通用寄存器中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
5.如权利要求1所述的微处理器,其中,该微处理器在一特定模式寄存器地址空间内定义一唯一GPR MSR地址,其中该唯一GPR MSR地址全局关联于该微处理器的一组通用寄存器,该组通用寄存器包含R8至R15这些通用寄存器;其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一GPR MSR子地址空间内的一相对应唯一值;
其中,当该IA-32架构ECX通用寄存器包含该全局关联的唯一GPR MSR地址,该微处理器从该IA-32架构EAX、EBX、EDX、EBP、ESP、ESI与EDI通用寄存器中预设的一个中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
6.如权利要求1所述的微处理器,还包含:多个硬件寄存器,用以引用该Intel 64架构的RAX-RSP通用寄存器;其中,该微处理器将RAX-RSP各该通用寄存器关联至一相对应的唯一的特定模式寄存器地址;其中,回应RAX-RSP这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用RAX-RSP这些通用寄存器中其中之一的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
7.如权利要求1所述的微处理器,还包含:多个引用数据流单指令多数据扩展指令集SSE XMM寄存器的硬件寄存器;其中,该微处理器对于这些XMM寄存器的每一个半部分都关联有一相对应的唯一的特定模式寄存器地址,该半部分是64位;其中,回应这些XMM寄存器其中一个半部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用这些XMM寄存器中其中一个半部分的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
8.如权利要求7所述的微处理器,回应这些XMM寄存器其中一个半部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用这些XMM寄存器中其中一个半部分的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器,即使该微处理器并未开启支持SSE的功能。
9.如权利要求1所述的微处理器,还包含:多个引用先进向量扩充指令集AVX YMM寄存器的硬件寄存器;其中,该微处理器对于这些YMM寄存器中每一个四分之一部分都关联有一相对应的唯一的特定模式寄存器MSR地址,该四分之一部分是64位;其中,回应这些YMM寄存器其中一个四分之一部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用这些YMM寄存器中其中一个四分之一部分的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
10.如权利要求9所述的微处理器,回应这些YMM寄存器其中一个四分之一部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用这些YMM寄存器中其中一个四分之一部分的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器,即使该微处理器并未开启支持YMM的功能。
11.如权利要求1所述的微处理器,其中,回应R8至R15这些通用寄存器的其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构性能监控计数器RDPMC指令,该微处理器将引用R8至R15通用寄存器其中之一的硬件寄存器的内容读入引用该EDX与EAX寄存器的硬件寄存器。
12.一种微处理器的操作方法,该微处理器包含多个引用IA-32架构的EDX与EAX通用寄存器GPR的硬件寄存器以及多个引用Intel 64架构的R8至R15通用寄存器的硬件寄存器,该方法包含:
该微处理器对于R8至R15各该通用寄存器中的每一个都关联一相对应的唯一的特定模式寄存器MSR地址;
该微处理器面临R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的读取特定模式寄存器RDMSR指令;以及
该微处理器将引用R8至R15这些通用寄存器其中之一的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
13.如权利要求12所述的方法,其中,该微处理器能够编程执行于多个操作模式,这些操作模式包含一Intel 64架构64位操作模式与多个非64位操作模式;其中,该微处理器将引用R8至R15这些通用寄存器中其中之一的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器,即使该微处理器执行于该非64位操作模式。
14.如权利要求12所述的方法,其中,关联于R8至R15各该通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一特定模式寄存器地址空间内的一相对应唯一值;该方法还包含:该微处理器从该IA-32架构的ECX通用寄存器中,取得R8至R15这些通用寄存器的该相对应的唯一特定模式寄存器地址。
15.如权利要求12所述的方法,其中,该微处理器在一特定模式寄存器地址空间内定义一唯一的GPR MSR地址,其中,该唯一的GPR MSR地址全局关联于该微处理器的一组通用寄存器,该组通用寄存器包含R8至R15这些通用寄存器;其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一GPR MSR子地址空间内的一相对应唯一值;该方法还包含:当该IA-32架构ECX通用寄存器包含该全局关联的唯一的GPR MSR地址,该微处理器从该IA-32架构EAX、EBX、EDX、EBP、ESP、ESI与EDI通用寄存器中预设的一个中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
16.如权利要求12所述的方法,其中,该微处理器包含多个引用该Intel 64架构的RAX-RSP通用寄存器的硬件寄存器;其中,该微处理器将各该RAX-RSP通用寄存器关联至一相对应的唯一的特定模式寄存器地址;该方法还包含:回应RAX-RSP这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用RAX-RSP这些通用寄存器中其中之一的硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
17.如权利要求12所述的方法,该微处理器包含多个引用数据流单指令多数据扩展指令集SSE XMM寄存器的硬件寄存器;其中,该微处理器对于这些XMM寄存器中每一个半部分都关联有一相对应的唯一的特定模式寄存器地址,该半部分是64位;该方法还包含:回应这些XMM寄存器其中一个半部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用这些XMM寄存器中其中一个半部分的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
18.如权利要求12所述的方法,其中,该微处理器包含多个引用先进向量扩充指令集AVX YMM寄存器的硬件寄存器;其中,该微处理器对于这些YMM寄存器中每一个四分之一部分都关联有一相对应的唯一的特定模式寄存器地址,该四分之一部分是64位;该方法还包含:回应这些YMM寄存器其中一个四分之一部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的RDMSR指令,该微处理器将引用这些YMM寄存器中其中一个四分之一部分的该硬件寄存器的内容读入引用该EDX与EAX寄存器的该硬件寄存器。
19.一种微处理器,包含:多个引用IA-32架构的EDX与EAX通用寄存器GPR的硬件寄存器;以及
多个引用Intel 64架构的R8至R15通用寄存器的硬件寄存器;
其中,该微处理器对于R8至R15各该通用寄存器中的每一个都关联有一相对应的唯一的特定模式寄存器MSR地址;其中,回应R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的写入特定模式寄存器WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中其中之一的硬件寄存器。
20.如权利要求19所述的微处理器,其中,该微处理器能够编程执行于多个操作模式,这些操作模式包含一Intel 64架构64位操作模式与多个非64位操作模式;其中,回应该WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中其中之一的硬件寄存器,即使该微处理器执行于该非64位操作模式。
21.如权利要求20所述的微处理器,其中,R8至R15这些通用寄存器仅在该微处理器执行于该Intel 64架构64位操作模式下,能够被该Intel 64架构的四倍字移动MOVQ指令取用。
22.如权利要求19所述的微处理器,其中,关联于R8至R15各该通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一特定模式寄存器地址空间内的一相对应唯一值;其中,该微处理器从该IA-32架构的ECX通用寄存器中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
23.如权利要求19所述的微处理器,其中,该微处理器在一特定模式寄存器地址空间内定义一唯一的GPR MSR地址,其中该唯一的GPR MSR地址全局关联于该微处理器的一组通用寄存器,该组通用寄存器包含R8至R15这些通用寄存器;其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一GPR MSR子地址空间内的一相对应唯一值;
其中,当该IA-32架构ECX通用寄存器包含该全局关联的唯一的GPR MSR地址,该微处理器从该IA-32架构EAX、EBX、EDX、EBP、ESP、ESI与EDI通用寄存器中预设的一个中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
24.如权利要求19所述的微处理器,还包含:多个引用该Intel 64架构的RAX-RSP通用寄存器的硬件寄存器;其中,该微处理器将各该RAX-RSP通用寄存器关联至一相对应的唯一的特定模式寄存器地址;其中,回应RAX-RSP这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用EDX-EAX寄存器的该硬件寄存器的内容写入引用RAX-RSP这些通用寄存器中其中之一的硬件寄存器。
25.如权利要求19所述的微处理器,还包含:多个引用数据流单指令多数据扩展指令集SSE XMM寄存器的硬件寄存器;其中,该微处理器对于这些XMM寄存器中每一个半部分都关联有一相对应的唯一的特定模式寄存器地址,该半部分是64位;其中,回应这些XMM寄存器其中一个半部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用这些XMM寄存器中其中一个半部分的硬件寄存器。
26.如权利要求25所述的微处理器,回应这些XMM寄存器其中一个半部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用这些XMM寄存器中其中一个半部分的硬件寄存器,即使该微处理器并未开启支持SSE的功能。
27.如权利要求19所述的微处理器,还包含:多个引用先进向量扩充指令集AVX YMM寄存器的硬件寄存器;其中,该微处理器对于这些YMM寄存器中每一个四分之一部分都关联有一相对应的唯一的特定模式寄存器地址,该四分之一部分是64位;其中,回应这些YMM寄存器其中一个四分之一部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用这些YMM寄存器中其中一个四分之一部分的硬件寄存器。
28.如权利要求27所述的微处理器,回应这些YMM寄存器其中一个四分之一部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用这些YMM寄存器中其中一个四分之一部分的硬件寄存器,即使该微处理器并未开启支持YMM的功能。
29.一种微处理器的操作方法,该微处理器包含多个引用IA-32架构的EDX与EAX通用寄存器GPR的硬件寄存器以及多个引用Intel 64架构的R8至R15通用寄存器的硬件寄存器,该方法包含:
该微处理器对于R8至R15各该通用寄存器中的每一个都关联一相对应的唯一的特定模式寄存器MSR地址;
该微处理器遭遇R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的写入特定模式寄存器WRMSR指令;以及
该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中其中之一的硬件寄存器。
30.如权利要求29所述的方法,其中,该微处理器能够编程执行于多个操作模式,这些操作模式包含一Intel 64架构64位操作模式与多个非64位操作模式;其中,该微处理器将引用EDX-EAX寄存器的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中其中之一的硬件寄存器,即使该微处理器执行于该非64位操作模式。
31.如权利要求29所述的方法,其中,关联于R8至R15各该通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一特定模式寄存器地址空间内的一相对应唯一值;该方法还包含:该微处理器从该IA-32架构的ECX通用寄存器中,取得R8至R15这些通用寄存器的该相对应的唯一特定模式寄存器地址。
32.如权利要求29所述的方法,其中,该微处理器在一特定模式寄存器地址空间内定义一唯一的GPR MSR地址,其中,该唯一的GPR MSR地址全局关联于该微处理器的一组通用寄存器,该组通用寄存器包含R8至R15这些通用寄存器;其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一GPR MSR子地址空间内的一相对应唯一值;该方法还包含:当该IA-32架构ECX通用寄存器包含该全局关联的唯一的GPR MSR地址,该微处理器从该IA-32架构EAX、EBX、EDX、EBP、ESP、ESI与EDI通用寄存器中预设的一个中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
33.如权利要求29所述的方法,其中,该微处理器包含多个引用该Intel 64架构的RAX-RSP通用寄存器的硬件寄存器;其中,该微处理器将各该RAX-RSP通用寄存器关联至一相对应的唯一的特定模式寄存器地址;该方法还包含:回应RAX-RSP这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用EDX-EAX寄存器的该硬件寄存器的内容写入引用RAX-RSP这些通用寄存器中其中之一的硬件寄存器。
34.如权利要求29所述的方法,该微处理器包含多个引用数据流单指令多数据扩展指令集SSE XMM寄存器的硬件寄存器;其中,该微处理器对于这些XMM寄存器中每一个半部分都关联有一相对应的唯一的特定模式寄存器MSR地址,该半部分是64位;该方法还包含:回应这些XMM寄存器其中一个半部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用这些XMM寄存器中其中一个半部分的硬件寄存器。
35.如权利要求29所述的方法,其中,该微处理器包含多个引用先进向量扩充指令集AVX YMM寄存器的硬件寄存器;其中,该微处理器对于这些YMM寄存器中每一个四分之一部分都关联有一相对应的唯一的特定模式寄存器MSR地址,该四分之一部分是64位;该方法还包含:回应这些YMM寄存器其中一个四分之一部分的该相对应的唯一的特定模式寄存器地址的IA-32架构的WRMSR指令,该微处理器将引用该EDX与EAX寄存器的该硬件寄存器的内容写入引用这些YMM寄存器中其中一个四分之一部分的硬件寄存器。
36.如权利要求29所述的方法,其中,该WRMSR指令包含于该微处理器处于一Intel 64架构非64位操作模式所执行的一程序内,其中,该WRMSR指令写入除错数据至引用这些R8至R15通用寄存器其中之一的该硬件寄存器内,以对该程序进行除错。
37.一种微处理器,包含:
多个引用Intel 64架构的R8至R15通用寄存器的硬件寄存器,其中,该微处理器对于R8至R15各该通用寄存器中的每一个都关联有一相对应的唯一的特定模式寄存器MSR地址;
多个引用进阶精简指令集机器ARM架构的通用寄存器GPR的硬件寄存器;以及
其中,回应R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的ARM架构的从协同处理器移至两个ARM寄存器MRRC指令,该微处理器将引用R8至R15这些通用寄存器中其中之一的硬件寄存器的内容读入引用这些ARM架构通用寄存器其中之二的该硬件寄存器。
38.如权利要求37所述的微处理器,其中,这些ARM架构通用寄存器的该其中之二预设为该ARM架构R2与R0通用寄存器。
39.如权利要求37所述的微处理器,其中,这些ARM架构通用寄存器的该其中之二由该MRRC指令所指定。
40.如权利要求37所述的微处理器,其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一特定模式寄存器地址空间内的一相对应唯一值;其中,该微处理器由该ARM架构R1通用寄存器取得R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址。
41.如权利要求37所述的微处理器,其中,该微处理器在一特定模式寄存器地址空间内定义一唯一的GPR MSR地址,其中该唯一的GPR MSR地址全局关联于该微处理器的一组通用寄存器,该组通用寄存器包含R8至R15这些通用寄存器;其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一GPR MSR子地址空间内的一相对应唯一值;
其中,当该ARM架构R1通用寄存器包含该全局关联的唯一的GPR MSR地址,该微处理器从该ARM架构R1通用寄存器以外的其他通用寄存器中预设的一个中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
42.一种微处理器,包含:
多个引用Intel 64架构的R8至R15通用寄存器的硬件寄存器,其中,该微处理器对于R8至R15各该通用寄存器中的每一个都关联有一相对应的唯一的特定模式寄存器MSR地址;
多个引用进阶精简指令集机器ARM架构的通用寄存器GPR的硬件寄存器;以及
其中,回应R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址的ARM架构的从两个ARM寄存器移至协同处理器MCRR指令,该微处理器将引用这些ARM架构通用寄存器其中之二的该硬件寄存器的内容写入引用R8至R15这些通用寄存器中其中之一的硬件寄存器。
43.如权利要求42所述的微处理器,其中,这些ARM架构通用寄存器的该其中之二预设为该ARM架构R2与R0通用寄存器。
44.如权利要求42所述的微处理器,其中,这些ARM架构通用寄存器的该其中之二由该MCRR指令所指定。
45.如权利要求42所述的微处理器,其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一特定模式寄存器地址空间内的一相对应唯一值;其中,该微处理器由该ARM架构R1通用寄存器取得R8至R15这些通用寄存器其中之一的该相对应的唯一的特定模式寄存器地址。
46.如权利要求42所述的微处理器,其中,该微处理器在一特定模式寄存器地址空间内定义一唯一的GPR MSR地址,其中该唯一的GPR MSR地址全局关联于该微处理器的一组通用寄存器,该组通用寄存器包含R8至R15这些通用寄存器;其中,关联于R8至R15各该通用寄存器的该相对应的唯一的特定模式寄存器地址是该微处理器定义的一GPR MSR子地址空间内的一相对应唯一值;
其中,当该ARM架构R1通用寄存器包含该全局关联的唯一的GPR MSR地址,该微处理器从该ARM架构R1通用寄存器以外的其他通用寄存器中预设的一个中,取得R8至R15这些通用寄存器的该相对应的唯一的特定模式寄存器地址。
47.一种用于处理器的方法,包含:
当该处理器处于一IA-32架构的非64位操作模式时,运作于该处理器的一第一程序,将一数据值写入Intel 64架构64位通用寄存器的其中之一;
由该第一程序,使该处理器由运作于该IA-32架构的非64位操作模式切换至运作于一ARM架构操作模式;以及
当该处理器处于该ARM架构操作模式时,运作于该处理器的一第二程序由该Intel 64架构64位通用寄存器的该其中之一读取至少部分由该第一程序写入的该数据值。
48.如权利要求47所述的方法,其中,该处理器对于该Intel 64架构64位通用寄存器中的每一个都关联有一相对应的唯一的特定模式寄存器MSR地址。
49.如权利要求47所述的方法,其中,将一数据值写入Intel 64架构64位通用寄存器的该其中之一的步骤包括:处于一IA-32架构的非64位操作模式时,运作于该处理器的该第一程序,使用一IA-32架构写入特定模式寄存器WRMSR指令将该数据值写入Intel 64架构64位通用寄存器的该其中之一。
50.如权利要求47所述的方法,其中,由该Intel 64架构64位通用寄存器的该其中之一读取至少部分由该第一程序写入的该数据值的步骤包括:使用一ARM架构从协同处理器移至两个ARM寄存器MRRC指令由该Intel 64架构64位通用寄存器的该其中之一读取至少部分由该第一程序写入的该数据值。
51.如权利要求47所述的方法,其中,该处理器包含多个硬件寄存器,由引用该ARM架构的R0至R14十五个通用寄存器与相对应的该Intel 64架构32位EAX-R14D十五个通用寄存器共享。
52.如权利要求51所述的方法,其中,使该处理器由运作于该IA-32架构的非64位操作模式切换至运作于一ARM架构操作模式的步骤包含:
使该处理器重置;以及
该处理器避免因应该重置对于这些共享的硬件寄存器的调整。
53.如权利要求51所述的方法,其中,由该Intel 64架构64位通用寄存器的该其中之一读取至少部分由该第一程序写入的该数据值的步骤包括:使用一ARM架构指令从对应于该Intel 64架构64位通用寄存器的该其中之一的ARM架构R0至R14通用寄存器中读取由该第一程序写入的该数据值的下部分32位。
54.如权利要求47所述的方法,其中,该第一程序包含一开机载入程序,该第二程序包含一操作***,其中,至少部分数据值包含一个或多个由该开机载入程序传递至该操作***的参数。
55.一种用于处理器的方法,包含:
当处于一ARM架构操作模式时,运作于该处理器的一第一程序,将一数据值写入Intel64架构64位通用寄存器的其中之一的至少一部分;
由该第一程序,使该处理器由运作于该ARM架构操作模式切换至运作于一IA-32架构操作模式;以及
当处于该IA-32架构操作模式时,运作于该处理器的一第二程序,由该Intel 64架构64位通用寄存器的该其中之一读取至少部分由该第一程序写入的该数据值。
56.如权利要求55所述的方法,其中,该处理器对于该Intel 64架构64位通用寄存器中的每一个都关联有一相对应的唯一的特定模式寄存器MSR地址。
57.如权利要求55所述的方法,其中,将一数据值写入Intel 64架构64位通用寄存器的该其中之一的至少一部分的步骤包括:处于一ARM架构操作模式时,运作于该处理器的该第一程序,使用一ARM架构从两个ARM寄存器移至协同处理器MCRR指令将该数据值写入Intel64架构64位通用寄存器的该其中之一的至少一部分。
58.如权利要求55所述的方法,其中,该处理器包含多个硬件寄存器,由引用该ARM架构的R0至R14十五个通用寄存器与相对应的该Intel 64架构32位EAX-R14D十五个通用寄存器共享。
59.如权利要求58所述的方法,其中,使该处理器由运作于该ARM架构操作模式切换至运作于一IA-32架构操作模式的步骤包含:
使该处理器重置;以及
该处理器避免因应该重置对于这些共享的硬件寄存器的调整。
60.如权利要求55所述的方法,其中,该第一程序包含一开机载入程序,该第二程序包含一操作***,其中,至少部分数据值包含一个或多个由该开机载入程序传递至该操作***的参数。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261695572P | 2012-08-31 | 2012-08-31 | |
US61/695,572 | 2012-08-31 | ||
US13/874,878 | 2013-05-01 | ||
US13/874,878 US9292470B2 (en) | 2011-04-07 | 2013-05-01 | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US13/874,838 | 2013-05-01 | ||
US13/874,838 US9336180B2 (en) | 2011-04-07 | 2013-05-01 | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103530089A CN103530089A (zh) | 2014-01-22 |
CN103530089B true CN103530089B (zh) | 2018-06-15 |
Family
ID=49932136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310390517.1A Active CN103530089B (zh) | 2012-08-31 | 2013-08-30 | 微处理器及其操作方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103530089B (zh) |
TW (1) | TWI569205B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
US9921835B2 (en) * | 2014-03-24 | 2018-03-20 | Inesc Tec—Instituto De Engenharia De Sistemas E Computadores, Tecnologia E Ciã?Ncia | Control module for multiple mixed-signal resources management |
WO2016097811A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on fuse array access in out-of-order processor |
US20170177359A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
US10747647B2 (en) * | 2015-12-22 | 2020-08-18 | Arm Limited | Method, apparatus and system for diagnosing a processor executing a stream of instructions |
GB2548604B (en) * | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
US10324730B2 (en) * | 2016-03-24 | 2019-06-18 | Mediatek, Inc. | Memory shuffle engine for efficient work execution in a parallel computing system |
US10761979B2 (en) * | 2016-07-01 | 2020-09-01 | Intel Corporation | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value |
GB2569098B (en) * | 2017-10-20 | 2020-01-08 | Graphcore Ltd | Combining states of multiple threads in a multi-threaded processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0747808A3 (en) * | 1995-06-07 | 1997-01-15 | International Business Machines Corporation | Processor capable of supporting two distinct instruction set architectures |
US6496922B1 (en) * | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
CN101151589A (zh) * | 2005-01-13 | 2008-03-26 | Nxp股份有限公司 | 处理器及其指令发布方法 |
CN101430656A (zh) * | 2007-11-08 | 2009-05-13 | 英业达股份有限公司 | 特别模块寄存器的读写方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6076156A (en) * | 1997-07-17 | 2000-06-13 | Advanced Micro Devices, Inc. | Instruction redefinition using model specific registers |
JP2001195250A (ja) * | 2000-01-13 | 2001-07-19 | Mitsubishi Electric Corp | 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置 |
US9189230B2 (en) * | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
CN100555225C (zh) * | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
-
2013
- 2013-08-30 CN CN201310390517.1A patent/CN103530089B/zh active Active
- 2013-08-30 TW TW102131233A patent/TWI569205B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6496922B1 (en) * | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
EP0747808A3 (en) * | 1995-06-07 | 1997-01-15 | International Business Machines Corporation | Processor capable of supporting two distinct instruction set architectures |
CN101151589A (zh) * | 2005-01-13 | 2008-03-26 | Nxp股份有限公司 | 处理器及其指令发布方法 |
CN101430656A (zh) * | 2007-11-08 | 2009-05-13 | 英业达股份有限公司 | 特别模块寄存器的读写方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201409353A (zh) | 2014-03-01 |
TWI569205B (zh) | 2017-02-01 |
CN103530089A (zh) | 2014-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615411B (zh) | 控制寄存器对应于异质指令集架构处理器 | |
CN103530089B (zh) | 微处理器及其操作方法 | |
CN105468333B (zh) | 具有条件指令的微处理器及其处理方法 | |
TWI450196B (zh) | 非循序執行微處理器之條件儲存指令 | |
CN104714778B (zh) | 操作微处理器的方法 | |
CN102707988B (zh) | 微处理器及其操作方法 | |
US20120260065A1 (en) | Multi-core microprocessor that performs x86 isa and arm isa machine language program instructions by hardware translation into microinstructions executed by common execution pipeline | |
US20120260066A1 (en) | Heterogeneous isa microprocessor that preserves non-isa-specific configuration state when reset to different isa | |
EP2508982B1 (en) | Control register mapping in heterogenous instruction set architecture processor | |
TWI478065B (zh) | 執行模式備份暫存器之模擬 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |