具有条件指令的微处理器及其处理方法

文档序号:6367833阅读:114来源:国知局

专利名称::具有条件指令的微处理器及其处理方法
技术领域
:本发明是关于微处理器的
技术领域
,特别是关于在指令集中具有条件指令的微处理器。
背景技术
:由IntelCorporationofSantaClara,California开发出来的x86处理器架构以及由ARMLtd.0fCambridge,UK开发出来的进阶精简指令集机器(advancedrisemachines,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系统的只读储存控制(ReadOnlyStorage,ROS)),使其在辅助储存空间预先存入所需信息的情况下能够使用于1401系统。此外,在软件程序以高级语言开发的情况下,新的硬件开发商几乎没有办法控制为旧硬件所编译的软件程序,软件开发商也欠缺动力为新硬件重新编译(re-compile)源码,此情形尤其发生在软件开发商与硬件开发商是不同个体的情况。请参照Siberman与Ebcioglu于Computer,June1993,N0.6提出的文章“AnArchitecturalFrameworkforSupportingHeterogeneousInstruction-SetArchitectures,,。Silberman与Ebcioglu提出的系统内含有执行原生码的原生引擎(nativeengine)与执行目的码的迁移引擎(migrantengine),可依据转译软件将目的码(objectbode)转译为原生码(nativecode)的转译效果,在这两种编码间视需要进行转换,以使既存复杂指令集(CISC)架构(下称基础架构,例如IBMS/390)的软件程序执行于精简指令集(RISC)、超纯量架构(superscalar)与超长指令字(VLIW)架构(下称原生架构)系统,藉以改善软件程序的效能。请参照2006年5月16日公告的美国专利第7,047,394号专利案,VanDykeetal.揭露一处理器,具有用以执行原生精简指令集(Tapestry)的程序指令的执行管线,并利用硬件转译与软件转译的结合,将x86程序指令转译为原生精简指令集的指令。Nakadaetal.提出具有ARM架构的前端管线与FujitsuFR-V(超长指令字)架构的前端管线的异质多线程处理器(heterogeneousSMTprocessor)。ARM架构前端管线用于非规则软件程序(如操作系统),FujitsuFR-V(超长指令字)架构的前端管线用于多媒体应用程序以将一增加的超长指令字队列汇入FR-V超长指令字的后端管线以维持来自前端管线的指令。请参照Buchty与Weib,eds,UniversitatsverlagKarlsruhe于2008年11月在FirstInternationalWorkshoponNewFrontiersinHigh-performanceandHardware-awareComputing(HipHaC,08),LakeComo,Italy,(配合MICRO-41)发表的论文集(ISBN978-3-86644-298-6)的文章“0R0CH1:AMultipleInstructionSetSMTProcessor^文中提出的方法用以降低整个系统在异质系统单芯片(SOC)装置,如德州仪器OMAP应用处理器,内所占据的空间。此异质系统单芯片装置具有一个ARM处理器核心加上一个或多个协处理器(co-processors)(例如TMS320、多种数字信号处理器、或是多种图形处理单元(GPUs))。这些协处理器并不分享指令执行资源,而只是集成于同一芯片上的不同处理核心。软件转译器(softwaretranslator)、或称软件仿真器(softwareemulator,softwaresimulator)、动态二进制码转译器等,亦被用于支持将软件程序在与此软件程序架构不同的处理器上执行的能力。其中受欢迎的产品如搭配苹果麦金塔(Macintosh)计算机的Motorola68K-to_PowerPC仿真器,以及后续研发出来的PowerPC-to_x86仿真器,Motorola68K-to-PowerPC仿真器可在具有PowerPC处理器的麦金塔计算机上执行68K程序,PowerPC-to-x86仿真器可在具有x86处理器的麦金塔计算机上执行68K程序。位于加州圣塔克拉拉(SantaClara,California)的全美达公司,结合超长指令字(VLIW)的核心硬件与“纯粹软件指令的转译器(亦即程序码转译软件(CodeMorphingSoftware))以动态地编译或仿真(emUlate)X86程序码序列”以执行x86程序码,请参照2011年维基百科针对全美达(Transmeta)的说明<http://en.wikipedia.0rg/wiki/Transmeta>。另外,参照1998年11月3日由Kellyetal.提出的美国专利第5,832,205号公告案。IBM的DAISY(来自Yorktown的动态体系结构指令集)系统具有超长指令字(VLIW)机器与动态二进制软件转译,可完全通过软件方式仿真旧有体系结构。DAISY具有位于只读存储器内的虚拟机器观测器(VirtualMachineMonitor),以并行处理(parallelize)与储存超长指令字原始码(VLIWprimitives)至未见于旧有系统架构的部分主要存储器内,期能避免这些旧有体系架构的程序码碎片在后续程序被重新编译(re-translation)。DAISY具有高速编译器优化算法(fastcompileroptimizationalgorithms)以提升效能。QEMU是一具有软件动态转译器的机器仿真器(machineemulator)。QEMU可在多种主系统(host),如x86、PowerPC、ARM、SPARC、Alpha与MIPS,模拟多种中央处理器,如x86、PowerPC、ARM与SPARC。请参照QEMU,aFastandPortableDynamicTranslator,FabriceBellard,USENIXAssociation,FREENIXTrack:2005USENIXAnnualTechnicalConference,如同其开发者所称“动态转译器对于目标处理器指令执行规律转换,将其转换至主系统指令集。产生的二进制码是储存于一转译快取以利重复取用。...QEMU[较之其它动态转译器]远为简单,因为它只串接至GNCC编译器于离线(offline)时产生的机器码片段”。同时可参照2009年6月19日Adelaide大学LeeWangHao的学位论文“ARMInstructionSetSimulationonMult1-corex86Hardware”。虽然软件转译的解决方案所提供的处理效能可以满足多个运算需求的子集合的情况,但是不大能够满足多个使用者的情况。静态(static)二进制制转译是另一种具有高效能潜力的技术。不过,二进制制转译技术的使用存在技术上的问题(例如:自修改程序码(self-modifyingcode)、只在执行时(run-time)可知的间接分支(indirectbranches)数值)以及商业与法律上的障碍(例如:此技术可能需要硬件开发商配合开发散布新程序所需的管道;对原程序散布者存在潜在的授权或是著作权侵害的风险)。ARM指令集架构(ISA)具有条件指令执行的特色。如ARM架构参考手册(ARMArchitectureReferenceManual)第A4-3页所述:“大部分ARM指令可被有条件地执行(conditionallyexecuted)。意谓若是APSR中的N、Z、C与V旗标满足指令所特定的条件,他们才会在程序者的模式操作、存储器与协处理器发挥正常的效果。若是这些旗标不满足条件,指令就会如同一个不操作(NOP)机器指令,此指令执行至下一个正常指令,包括对于例外事件(exception)实行的所有相关的确认操作,但不会有其它效果。”条件执行有利于缩小指令码的尺寸,并能通过缩减分支指令的数量以及减少指令错误预测伴随而来的效能减损,来提升效能。因此,如何有效率地执行条件指令,尤其在支持高微处理器时钟的情况,是亟待解决的问题。
发明内容本发明的一实施例提供一个执行条件非分支指令的微处理器。其中,各个条件非分支指令是特定一条件。在条件满足时,各个条件非分支指令指示微处理器执行一操作,而在条件不满足微处理器的条件旗标时,就不去执行此操作。此微处理器具有一预测器,以提供关于此条件非分支指令的预测。此微处理器并具有一指令转译器。此指令转译器,在前述预测预测条件将不会被满足时,将条件非分支指令转译为一不操作微指令,而在前述预测预测条件将会被满足时,将条件非分支指令转译为一个或多个微指令构成的一微指令组以非条件地执行此操作。此微处理器亦具有一执行管线,以执行不操作微指令或是由指令转译器提供的微指令组。本发明的另一实施例提供一种利用一微处理器执行条件非分支指令的方法。其中,各个条件非分支指令是特定一条件。各个条件非分支指令在条件满足时,指示微处理器执行一操作,而在条件不满足微处理器的条件旗标时,不去执行此操作。此方法包含的步骤如下:提供关于一条件非分支指令(conditionalnon-branchinstruction)的预测;在前述预测预测条件将不会被满足时,将条件非分支指令转译为一不操作(no-operation)微指令;在前述预测预测条件将会被满足时,将条件非分支指令转译为一个或多个微指令构成的一微指令组以非条件地(unconditionally)执行操作;以及执行前述不操作微指令或是由指令转译器提供的微指令组,其中,此执行是由微处理器的一硬件执行管线所执行。本发明的又一实施例提供一适用于该媒介的计算机可读取程序码,用以特定(specifying)一微处理器以执行条件非分支指令。其中,各个条件非分支指令是特定一条件。各个条件非分支指令在条件满足时,指示微处理器执行一操作,而在条件不满足微处理器的条件旗标时,不去执行操作。此计算机可读取程序码包含第一程序码以特定一预测器(predictor),提供关于一条件非分支指令(conditionalnon-branchinstruction)的预测。此计算机可读取程序码并包含第二程序码,以特定一指令转译器,用以在前述预测预测条件将不会被满足时,将条件非分支指令转译为一不操作(no-operation)微指令,而在前述预测预测条件将会被满足时,将条件非分支指令转译为一个或多个微指令构成的一微指令组以非条件地(unconditionally)执行此操作。此计算机可读取程序码并包含第三程序码,以特定一执行管线,执行前述不操作微指令或是由指令转译器提供的微指令组。本发明的一实施例提供一种具有一指令集架构的微处理器。此指令集架构是定义有至少一指令。此指令包含一立即字段(immediatefield),立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值。此指令指示微处理器执行一操作将一固定数值作为其中之一的源操作数,固定数值是将第一数值基于第二数值转动/移动一定数量的位而获得。微处理器具有一指令转译器,用以将至少一指令转译为一个或多个微指令。此微指令是以不同于指令集架构所定义的指令的编码方式进行编码。此微处理器并具有一执行管线,用以执行由指令转译器所产生的微指令,以产生一由指令集架构定义的结果。其中,指令转译器,而非执行管线,是依据第一与第二数值产生的固定数值作为至少一微指令的一源操作数,供执行管线执行。本发明的另一实施例提供一种方法,由一具有一指令集架构的微处理器执行。此指令集架构是定义有至少一指令,此指令包含一立即字段(immediatefield),立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值。指令是指示微处理器执行一操作将一固定数值作为其中之一的源操作数,此固定数值是将第一数值基于第二数值转动/移动一定数量的位而获得。此方法包含的步骤如下:将至少一指令转译为一个或多个微指令,此微指令是以不同于指令集架构所定义的指令的编码方式进行编码,并且,此转译步骤是由微处理器的一指令转译器执行;执行由指令转译器所产生的微指令,以产生一由指令集架构定义的结果,此执行步骤是由微处理器的一执行管线执行;以及由指令转译器,而非执行管线,依据第一与第二数值产生固定数值作为至少一微指令的一源操作数,供执行管线执行。本发明的另一实施例提供一种具有一指令集架构的微处理器。此指令集架构是定义有至少一指令,此指令包含一立即字段(immediatefield),立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值。指令是指示微处理器执行一操作将一固定数值作为其中之一的源操作数,此固定数值是将第一数值基于第二数值转动/移动一定数量的位而获得。此微处理器具有一指令转译器,用以将至少一指令转译为一个或多个微指令。此微处理器并具有一执行管线,执行由指令转译器所产生的微指令,以产生一由指令集架构定义的结果。当立即字段的一数值是落于一预定的数值子集内:指令转译器将指令转译为至少一个微指令;指令转译器,而非执行管线,是依据第一与第二数值产生固定数值;以及执行管线利用指令转译器产生的固定数值作为其中之一的源操作数,执行至少一微指令。当立即字段的数值并不落于该预定的数值子集内:指令转译器将指令转译为至少第一与第二微指令;执行管线,而非指令转译器,通过执行第一微指令,产生固定数值;以及执行管线通过利用第一微指令执行产生的固定数值作为其中之一的源操作数,以执行第二微指令。本发明的另一实施例提供一种方法,由具有一指令集架构的一微处理器执行。此指令集架构是定义有至少一指令。此指令包含一立即字段(immediatefield),立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值。指令是指示微处理器执行一操作将一固定数值作为其中之一的源操作数,此固定数值是将第一数值基于第二数值转动/移动一定数量的位而获得。此微处理器并包含一指令转译器与一执行管线。此方法包含下列步骤:利用指令转译器,确认立即字段的一数值是否落于一预定的数值子集内。此方法并包含下列步骤:当立即字段的数值是落于预定的数值子集内,利用指令转译器将指令转译为至少一个微指令;利用指令转译器,而非执行管线,依据第一与第二数值产生固定数值;以及利用执行管线,将指令转译器产生的固定数值作为其中之一的源操作数,来执行前述至少一微指令。此方法并包含下列步骤:当立即字段的数值并不落于预定的数值子集内:利用指令转译器,将指令转译为至少第一与第二微指令;利用执行管线,而非指令转译器,通过执行第一微指令,以产生固定数值;以及利用执行管线,通过利用第一微指令执行产生的固定数值作为其中之一的源操作数,以执行第二微指令。本发明的又一实施例提供一种计算机程序产品,编码于至少一计算机可读取储存媒介,以使用于一运算装置。此计算机程序产品包括适用于此媒介的计算机可读取程序码,用以特定一微处理器。此微处理器具有一指令集架构,指令集架构是定义有至少一指令。此指令包含一立即字段(immediatefield),立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值。指令是指示微处理器执行一操作将一固定数值作为其中之一的源操作数。此固定数值是将第一数值基于第二数值转动/移动一定数量的位而获得。此计算机可读取程序码具有第一程序码,特定一指令转译器,用以将至少一指令转译为一个或多个微指令,其中,该指令是以不同于指令集架构所定义的指令的编码方式进行编码。此计算机可读取程序码并具有第二程序码,特定一执行管线,用以执行由指令转译器所产生的微指令,以产生一由该指令集架构定义的结果。其中,指令转译器,而非执行管线,是依据第一与第二数值产生的固定数值作为至少一微指令的一源操作数,供执行管线执行。关于本发明的优点与精神可以通过以下的发明详述及所附图式得到进一步的了解。图1是本发明执行x86程序集架构与ARM程序集架构机器语言程序的微处理器一实施例的方块图。图2是一方块图,详细显示图1的硬件指令转译器。图3是一方块图,详细显示图2的指令格式化程序(instructionformatter)。图4是一方块图,详细显示图1的执行管线。图5是一方块图,详细显示图1的寄存器文件。图6A和图6B是一流程图,显示图1的微处理器的操作步骤。图7是本发明一双核心微处理器的方块图。图8是本发明执行X86ISA与ARMISA机器语言程序的微处理器另一实施例的方块图。图9是一方块图,详细显示部分图1的微处理器。图1OA和图1OB是一流程图,显示图1的硬件指令转译器转译条件ALU指令的操作步骤。图11是一流程图,显示图4的执行单元执行一移位微指令的操作步骤。图12A和图12B是一流程图,显示图4的执行单元执行一条件ALU微指令的操作步骤。图13是一流程图,显示图4的执行单元执行一条件移动微指令(conditionalmovemicroinstruction)的操作步骤。图14至20是方块图,显示图1的执行管线112执行依据图10的转译操作所转译的各种形式的条件ALU指令的操作步骤。图21A和图21B是一流程图,显示图1的硬件指令转译器转译条件ALU指令,以指出(specify)来源寄存器(sourceregister)的其中之一与目的寄存器为同一的操作步骤。图22至28是方块图,显示图1的执行管线112执行依据图21的转译操作所转译的各种形式的条件ALU指令的操作步骤。图29是一方块图,显示本发明对于非条件分支指令进行预测的微处理器100的一实施例。图30是一方块示意图,显示图29的指令转译器对于条件ALU指令的转译的一实施例。图31A和图31B是一流程图显示本发明图29的微处理器执行图30的一条件ALU指令的一实施例。图32是一方块图,显示本发明在转译过程中处理修正后立即常数的微处理器的一实施例。图33是一方块图,显示本发明将一立即操作数指令选择性地转译为一个ROR微指令与一ALU微指令或是转译为一立即ALU微指令的一实施例。图34A和图34B是一流程图,显示本发明图32的微处理器100执行图33的一立即操作数指令的操作的一实施例。[主要元件标号说明]微处理器(处理核心)100指令快取102硬件指令转译器104寄存器文件106存储器子系统108执行管线112指令撷取单元与分支预测器114ARM程序计数器(PC)寄存器116x86指令指针(IP)寄存器118配置寄存器(configurationregister)122ISA指令124微指令126结果128指令模式指针(instructionmodeindicator)132撷取地址134环境模式指针(environmentmodeindicator)136指令格式化程序202简单指令转译器(SIT)204复杂指令转译器(CIT)206多工器(mux)212x86简单指令转译器222ARM简单指令转译器224微程序计数器(micro-programcounter,micro-PC)232微码只读存储器234微程序器(microsequencer)236指令间接寄存器(instructionindirectionregister,HR)235微转译器(microtranslator)237格式化ISA指令242实行微指令(implementingmicroinstructions)244实行微指令246选择输入248微码地址252只读存储器地址254ISA指令信息255预解码器(pre-decoder)302指令字节队列(IBQ)304长度解码器(lengthdecoders)与链波逻辑门(ripplelogic)306多工器队列(muxqueue,MQ)308多工器312格式化指令队列(formattedinstructionqueue,FIQ)314ARM指令集状态322微指令队列401寄存器配置表(registerallocationtable,RAT)402指令调度器(instructiondispatcher)404保留站(reservationstation)406指令发送单兀(instructionissueunit)408整数/分支(integer/branch)单兀412媒体单兀(mediaunit)414加载/储存(load/store)单元416浮点(floatingpoint)单兀418重排缓冲器(reorderbuffer,ROB)422执行单元424ARM特定寄存器502x86特定寄存器504共享寄存器506双核心微处理器700微指令快取892条件旗标寄存器926多工器922旗标总线928条件旗标数值928/924ISA条件旗标902条件满足(SAT)位904预移位进位(PSC)位906使用移位进位(USE)位908动态预测器2932预测器选择器2934静态预测器2936动态预测2982预测选择2984静态预测2986历史更新2974误预测2976ALU微指令3044条件移动微指令3046具条件码的条件ALU微指令3045具条件码的不操作微指令3047操作码字段a202,a212,a222,a252,a272条件码字段a204,a224,a254,a274来源寄存器I与2的字段a206,a216,a256目的寄存器字段a208,a218,a232,a258来源寄存器I的字段a226来源寄存器2的字段a228立即操作数3266ROR微指令3344ALU微指令3346立即ALU微指令3348操作码字段b202,b212,b222,b232来源寄存器I的字段b204,b214,b234来源寄存器2的字段b235目的寄存器字段b206,b216,b226,b236立即字段b207immed_8字段b208,b228rotate_imm字段b209,b229immediate_32字段b218具体实施方式名词定义指令集,是定义二进制制编码值(binaryencodedvalue)的集合(即机器语言指令)与微处理器所执行的操作间的对应关系(mapping)。机器语言程序基本上是以二进制制进行编码,不过亦可使用其它进位制的系统,如部分早期IBM计算机的机器语言程序,虽然最终亦是以电压高低呈现二进制值的物理信号来表现,不过却是以十进制制进行编码。机器语言指令指示微处理器执行的操作如:将寄存器I内的操作数与寄存器2内的操作数相加并将结果写入寄存器3、将存储器地址0x12345678的操作数减掉指令所特定的立即操作数(immediateoperand)并将结果写入寄存器5、依据寄存器7所特定的位数移动寄存器6内的数值、若是零旗标被设定,在指令后方分割出36个字节给这个指令、将存储器地址OxABCDOOOO的数值加载寄存器8。因此,指令集是定义各个机器语言指令使微处理器执行所欲执行的操作的二进制编码值。须要了解的是,指令集定义二进制值与微处理器操作间的对应关系,并不意味着单一个二进制值就会对应至单一个微处理器操作。具体来说,在部分指令集中,多个二进制值可能会对应至同一个微处理器操作。指令集架构(ISA),从微处理器家族的脉络来看是包含(I)指令集;(2)指令集的指令所能存取的资源集(例如:存储器寻址所需的寄存器与模式);以及(3)微处理器响应指令集的指令执行所产生的例外事件集(setofexceptions)(例如:除以零、分页错误(pagefault)、存储器保护违反等)。程序者,如组译器(assembler)与编译器(compiler)的撰写者,想要作出机器语言程序在一微处理器家族执行,就需要此微处理器家族的ISA定义。微处理器家族的制造者通常会将ISA定义于程序员操作手册。举例来说,2009年3月公布的Intel64与IA-32架构软件开发者手册(Intel64andIA-32ArchitecturesSoftwareDeveloper’sManual)即定义Intel64与IA-32处理器架构的ISA。此软件开发者手册包含有五个章节,第一章是基本架构;第二A章是指令集参考A至M;第二B章是指令集参考N至Z;第三A章是系统编程指南;第三B章是系统编程指南第二部分。此手册系列为参考文件。此种处理器架构通常被称为x86架构,本文中则是以x86、x86ISA、x86ISA家族、x86家族或是相似用语来说明。在另一个例子中,2010年公布的ARM架构参考手册,ARMv7-A与ARMv7-R版本Erratamarkup,定义ARM处理器架构的ISA。此参考手册系列为参考文件。此ARM处理器架构的ISA在此亦被称为ARM、ARMISA、ARMISA家族、ARM家族或是相似用语。其它众所周知的ISA家族还有IBMSystem/360/370/390与z/Architecture、DECVAX、Motorola68k、MIPS、SPARC、PowerPC与DECAlpha等等。ISA的定义会涵盖处理器家族,因为处理器家族的发展中,制造者会通过在指令集中增加新指令、在寄存器组中增加新的寄存器等方式来改进原始处理器的ISA。举例来说,随着x86程序集架构的发展,其于IntelPentiumIII处理器家族导入一组128位的多媒体扩展指令集(MultiMediaextension,MMX)寄存器作为单指令多重数据流扩展(SSE)指令集的一部分,而虽然x86ISA机器语言程序并不使用单指令多重数据流扩展指令集的XMM寄存器,X86ISA机器语言程序已经开发来利用XMM寄存器以提升效能。此外,其它制造商亦设计且制造出可执行X86ISA机器语言程序的微处理器。例如,超微半导体(AdvancedMicroDevices,AMD)与威盛电子(VIATechnologies)即在x86ISA增加新技术特征,如超微半导体的3DN0W!单指令多重数据流(SMD)向量(vector)处理指令以及威盛电子的Padlock安全引擎随机数产生器(randomnumbergenerator)与先进角军石马弓丨擎(advancedcryptographyengine)的技术,前述技术都是采用X86ISA的机器语言程序,但却非由现有的Intel微处理器实现。以另一个实例来说明,ARMISA原本定义ARM指令集状态(state)具有4字节的指令。然而,随着ARMISA的发展而增加其它指令集状态,如具有2字节指令以提升编码密度的Thumb指令集状态以及用以加速Java字节码(bytecode)程序的Jazelle指令集状态。ARMISA机器语言程序已被发展来使用部分或所有其它ARMISA指令集状态,即使ARMISA机器语言程序产生之初并非采用其它ARMISA指令集状态。指令集架构(ISA)机器语言程序,包含ISA指令序列,即ISA指令集对应至程序者要程序执行的操作序列的二进制编码值序列。因此,X86ISA机器语言程序包含X86ISA指令序列,ARMISA机器语言程序则包含ARMISA指令序列。机器语言程序指令是存放于存储器内,且由微处理器撷取并执行。硬件指令转译器,包含多个晶体管的配置,用以接收ISA机器语言指令(例如X86ISA或是ARMISA机器语言指令)作为输入,并相对应地输出一个或多个微指令至微处理器的执行管线(pipeline)。执行管线执行微指令的执行结果是由ISA指令所定义。因此,执行管线是通过对这些微指令的集体执行(collectiveexecution)来“实现(implement)”ISA指令。也就是说,执行管线通过对于硬件指令转译器输出的实行微指令(implementingmicroinstruction)的集体执行,实现ISA指令所特定的操作于ISA指令所特定的输入,以产生此ISA指令定义的结果。因此,硬件指令转译器可视为是将ISA指令“转译(translate)”为一个或多个微指令。本实施例所描述的微处理器具有硬件指令转译器以将X86ISA指令与ARMISA指令转译为微指令。不过,需要理解的是,硬件指令转译器并非必然可对x86程序员操作手册或是ARM程序员操作手册所定义的整个指令集进行转译,而往往只能转译这些指令中一个子集合(subset),如同绝大多数x86ISA与ARMISA处理器只支持其相对应的程序员操作手册所定义的一个指令子集合。具体来说,x86程序员操作手册定义而由硬件指令转译器转译的指令子集合,不必然就对应至所有既有的X86ISA处理器,ARM程序员操作手册定义而由硬件指令转译器转译的指令子集合,不必然就对应至所有既有的ARMISA处理器。执行管线(pipeline),是一多层序列(sequenceofstages)。此多层序列的各个层分别具有硬件逻辑与一硬件寄存器。硬件寄存器抓取硬件逻辑的输出信号,并依据微处理器的时钟信号,将此输出信号提供至多层序列的下一层。执行管线可以具有多个多层序列,例多重执行管线(multiplepipelines)。执行管线接收微指令作为输入信号,并相应地执行微指令所特定的操作以输出执行结果。微指令所特定,而由执行管线的硬件逻辑所执行的操作包括但不限于算术(arithmetic)、逻辑(logical)、存储器加载/储存(memoryload/store)、比较(compare)、测试(test)、与分支解析(branchresolution),对进行操作的数据格式包括但不限于整数、浮点数、字母、二进编码十进数(BCD)、与紧缩格式(packedformat)。执行管线执行微指令以实现ISA指令(如x86与ARM),藉以产生ISA指令所定义的结果。执行管线不同于硬件指令转译器。具体来说,硬件指令转译器产生微指令,执行管线则是执行这些指令,但不产生这些微指令。指令快取,是微处理器内的一个随机存取存储装置,微处理器将ISA机器语言程序的指令(例如X86ISA与ARMISA的机器语言指令)放置其中。这些指令是撷取自系统存储器并由微处理器依据ISA机器语言程序的执行流程(course)来执行。具体来说,ISA定义一指令地址寄存器以抓取下一个待执行的ISA指令的存储器地址(举例来说,在x86ISA是定义为指令指针(instructionpointer,IP)而在ARMISA是定义为程序计数器(programcounter,PC)),而在微处理器执行机器语言程序以控制程序流程时,微处理器会更新指令地址寄存器的内容。ISA指令是被快取来供后续撷取之用。依据指令寄存器的内容抓取指令快取所呈现的ISA指令的存储器地址,即可更快速地取得ISA指令,而非在机器语言程序的下一次流程中由系统存储器存取。尤其是,此程序是基于指令地址寄存器(如指令指针(IP)或是程序计数器(PC))的存储器地址向指令快取取得数据,而非仅仅基于一加载或储存指令所特定的存储器地址。因此,将指令集架构的指令视为数据(例如采用软件转译的系统的硬件部分所呈现的数据)来抓取的专用数据快取,仅是基于一加载/储存地址来存取,而非基于指令地址寄存器的数值,就不是此处所称的指令快取。此外,会取得指令与数据的混合式快取,是基于指令地址寄存器的数值以及基于加载/储存地址,而非仅仅基于加载/储存地址,在本说明内容则被涵盖在指令快取的定义内。在本说明内容中,加载(load)指令是指将数据由存储器读取至微处理器的指令,储存(store)指令是指将数据由微处理器写入存储器的指令。微指令集,是微处理器的执行管线能够执行的指令(微指令)的集合。实施例说明本发明的实施例揭露的微处理器可通过硬件将其相对应的X86ISA与ARMISA指令转译为由微处理器的执行管线直接执行的微指令,以达到可在X86ISA与ARMISA机器语言程序执行的目的。此微指令是由微处理器的微架构的微指令集所定义,并且会因采用X86ISA与ARMISA而有不同。由于本文所述的微处理器需要执行x86与ARM机器语言程序,微处理器的硬件指令转译器会将x86与ARM指令转译为微指令,并将这些微指令提供至微处理器的执行管线。微处理器执行这些微指令以实现前述x86与ARM指令。由于这些实行微指令(implementingmicroinstruction)是直接由硬件指令转译器提供至执行管线来执行,而不同于采用软件转译器的系统需于执行管线执行指令前,预先储存本机(host)指令至存储器,因此,前揭微处理器具有潜力能够以较快的执行速度执行x86与ARM机器语言程序。图1是一方块图显示本发明能够执行X86ISA与ARMISA的机器语言程序的微处理器100的一实施例。此微处理器100具有一指令快取102;—硬件指令转译器104,用以由指令快取102接收X86ISA指令与ARMISA指令124并将其转译为微指令126执行管线112,执行由硬件指令转译器104接收的微指令126以产生微指令结果128,该结果是以操作数的型式回传至执行管线112;—寄存器文件106与一存储器子系统108,分别提供操作数至执行管线112并由执行管线112接收微指令结果128;—指令撷取单元与分支预测器114,提供一撷取地址134至指令快取102;-ARMISA定义的程序计数器(PC)寄存器116与一X86ISA定义的指令指针(IP)寄存器118,依据微指令结果128进行更新,并且,其内容是提供至指令撷取单元与分支预测器114;以及多个配置寄存器(configurationregister)122,提供一指令模式指针(instructionmodeindicator)132与一环境模式指针(environmentmodeindicator)136至硬件指令转译器104与指令掘取单兀与分支预测器114,并且是基于微指令结果128进行更新。由于微处理器100可执行x86ISA与ARMISA机器语言指令,微处理器100依据程序流程由系统存储器(未图标)撷取指令至微处理器100。微处理器100存取最近撷取的X86ISA与ARMISA的机器语言指令至指令快取102。指令撷取单元114依据由系统存储器撷取的x86或ARM指令字节区段,产生一撷取地址134。若是命中指令快取102,指令快取102将位于撷取地址134的x86或ARM指令字节区段提供至硬件指令转译器104,否则就是由系统存储器中撷取指令集架构的指令124。指令撷取单元114基于ARM程序计数器(PC)116与x86指令指针(IP)118的值产生撷取地址134。具体来说,指令撷取单元114会在一撷取地址寄存器中维持一撷取地址。任何时候指令撷取单元114撷取到新的ISA指令字节区段,它就会依据此区段的尺寸更新撷取地址,并依据既有方式依序进行,直到出现一控制流程事件(controlflowevent)。控制流程事件包含例外事件(exception)的产生、分支预测器114的预测显示撷取区段内有一被占用的分支、以及执行管线112响应一非分支预测器114所预测的被占用执行分支指令而对ARM程序计数器116与x86指令指针118的更新。指令撷取单元114将撷取地址相应地更新为例外处理程序地址(exceptionhandleraddress)、预测目标地址(predictedtargetaddress)或是执行目标地址(executedtargetaddress)以响应一控制流程事件。在一实施例中,指令快取102是一混合快取,以存取ISA指令124与数据。值得注意的是,在此混合快取的实施例中,虽然混合快取可基于一加载/储存地址将数据写入快取或由快取读取数据,在微处理器100是由混合快取撷取指令集架构的指令124的情况下,混合快取是基于ARM程序计数器116与x86指令指针118的数值来存取,而非基于加载/储存地址。指令快取102可以是一随机存取存储器(RAM)装置。指令模式指针132是一状态指示微处理器100当前是否正在撷取(fetching)、格式化(formatting)/解码(decoding)、以及将x86ISA或ARMISA指令124转译为微指令126。此外,执行管线112与存储器子系统108接收此指令模式指针132,此指令模式指针132会影响微指令126的执行方式,尽管只是微指令集内的一个小集合。x86指令指针寄存器118抓取下一个待执行的X86ISA指令124的存储器地址,ARM程序计数器寄存器116抓取下一个待执行的ARMISA指令124的存储器地址。为了控制程序流程,微处理器100在其执行x86与ARM机器语言程序时,分别更新x86指令指针寄存器118与ARM程序计数器寄存器116,至下一个指令、分支指令的目标地址或是例外处理程序地址。在微处理器100执行x86与ARMISA的机器语言程序的指令时,微处理器100由系统存储器撷取机器语言程序的指令集架构的指令,并将其置入指令快取102以取代最近较不被撷取与执行的指令。此指令撷取单元114基于x86指令指针寄存器118或是ARM程序计数器寄存器116的数值,并依据指令模式指针132指示微处理器100正在撷取的ISA指令124是x86或是ARM模式来产生撷取地址134。在一实施例中,x86指令指针寄存器118与ARM程序计数器寄存器116是一共享的硬件指令地址寄存器,提供其内容至指令撷取单元与分支预测器114并由执行管线112依据x86或ARM的语意(semantics),并基于指令模式指针132指示的模式是x86或ARM,来进行更新。环境模式指针136是一状态指示微处理器100是使用x86或ARMISA的语意于此微处理器100操作的多种执行环境,例如虚拟存储器(virtualmemory)、例外事件(exception)、快取控制(cachecontrol)、与全域执行时间保护(globalexecution-timeprotection)。因此,指令模式指针132与环境模式指针136共同产生多个执行模式。在第一种模式中,指令模式指针132与环境模式指针136都指向X86ISA,微处理器100是作为一般的X86ISA处理器。在第二种模式中,指令模式指针132与环境模式指针136都指向ARMISA,微处理器100是作为一般的ARMISA处理器。在第三种模式中,指令模式指针132指向X86ISA,不过环境模式指针136则是指向ARMISA,此模式有利于在ARM操作系统或是超管理器(hypervisor)的控制下执行使用者模式x86机器语言程序;相反地,在第四种模式中,指令模式指针132是指向ARMISA,不过环境模式指针136则是指向x86ISA,此模式有利于在x86操作系统或超管理器的控制下执行使用者模式ARM机器语言程序。指令模式指针132与环境模式指针136的数值在重置(reset)之初就已确定。在一实施例中,此初始值是被视为微码常数(miCTocodeconstants)进行编码,不过可通过熔断配置熔丝(configurationfuse)与/或使用微码补丁(microcodepatch)进行修改。在另一实施例中,此初始值则是由一外部输入提供至微处理器100。在一实施例中,环境模式指针136只在由一重置至ARM(reset~to~ARM)指令124或是一重置至x86(reset-to_x86)指令124执行重置后才会改变(请参照下述图6);亦即,在微处理器100正常运作而未由一般重置、重置至x86或重置至ARM指令124执行重置时,环境模式指针136并不会改变。硬件指令转译器104接收x86与ARMISA的机器语言指令124作为输入信号,相应地提供一个或多个微指令126作为输出信号以实现x86或ARMISA指令124。执行管线112执行前揭一个或多个微指令126,其集体执行的结果实现x86或ARMISA指令124。也就是说,这些微指令126的集体执行可在x86或ARMISA指令124所特定的输入端执行x86或是ARMISA指令124所特定的操作,以产生x86或ARMISA指令124所定义的结果。因此,硬件指令转译器104将x86或ARMISA指令124转译为一个或多个微指令126。硬件指令转译器104包含一组晶体管,以一预设方式进行配置来将X86ISA与ARMISA的机器语言指令124转译为微指令126。硬件指令转译器104并具有布尔逻辑(Booleanlogic)门以产生微指令126(如图2所示的简单指令转译器204)。在一实施例中,硬件指令转译器104并具有一微码只读存储器(如图2中复杂指令转译器206的元件234)。硬件指令转译器104利用此微码只读存储器,并依据复杂ISA指令124产生微指令126。这在图2的说明内容会有进一步的说明。就一较佳实施例而言,硬件指令转译器104不必然要能转译x86程序员操作手册或是ARM程序员操作手册所定义的整个ISA指令124集,而只要能够转译这些指令的一个子集合(subset)即可。具体来说,由x86程序员操作手册定义且由硬件指令转译器104转译的ISA指令124的子集合,并不必然对应至任何Intel开发的既有x86ISA处理器,而由ARM程序员操作手册定义且由硬件指令转译器104转译的ISA指令124的子集合并不必然对应至任何由ARMLtd.开发的既有的ISA处理器。前揭一个或多个用以实现x86或ARMISA指令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或ARMISA指令124所会遭遇到的重复转译的问题。硬件指令转译器104的实施例在图2会有更详细的说明。执行管线112执行由硬件指令转译器104提供的微指令126。基本上,执行管线112是一通用高速微指令处理器。虽然本文所描述的功能是由具有X86/ARM特定特征的执行管线112执行,不过,大多数X86/ARM特定功能其实是由此微处理器100的其它部分,如硬件指令转译器104,来执行。在一实施例中,执行管线112执行由硬件指令转译器104接收到的微指令126的寄存器重命名(registerrenaming)、超纯量技术(superscalarissue)、与脱序执行(out-of-orderexecution)。执行管线112在图4会有更详细的说明。微处理器100的微架构包含:(I)微指令集;(2)微指令集的微指令126所能取用的资源集,此资源集是x86与ARMISA的资源的超集(superset);以及(3)微处理器100相应于微指令126的执行所定义的微例外事件(micro-exception)集,此微例外事件集是X86ISA与ARMISA的例外事件的超集。此微架构不同于x86ISA与ARMISA。具体来说,此微指令集在许多面向是不同于X86ISA与ARMISA的指令集。第一点,微指令集的微指令指示执行管线112执行的操作与X86ISA与ARMISA的指令集的指令指示微处理器执行的操作并非一对一对应。虽然其中许多操作相同,不过,仍有一些微指令集特定的操作并非X86ISA与/或ARMISA指令集所特定。相反地,有一些x86ISA与/或ARMISA指令集特定的操作并非微指令集所特定。第二点,微指令集的微指令是以不同于X86ISA与ARMISA指令集的指令的编码方式进行编码。也就是说,虽然有许多相同的操作(如:相加(add)、偏移(shift)、加载(load)、返回(return))在微指令集以及x86与ARMISA指令集中都有特定,微指令集与x86或ARMISA指令集的二进制操作码值对应表(binaryopcodevalue-to-operationmapping)并没有一对一对应。微指令集与x86或ARMISA指令集的二进制操作码值对应表相同通常是巧合,其间仍不具有一对一的对应关系。第三点,微指令集的微指令的位字段(field)与x86或是ARMISA指令集的指令的位字段也不是一对一对应。整体而言,微处理器100可执行X86ISA与ARMISA机器语言程序指令。然而,执行管线112本身无法执行x86或ARMISA机器语言指令;而是执行由x86ISA与ARMISA指令转译成的微处理器100微架构的微指令集的微指令126。然而,虽然此微架构与X86ISA以及ARMISA不同,本发明亦提出其它实施例将微指令集与其它微架构特定的资源是开放给使用者。在这些实施例中,此微架构可有效地作为在X86ISA与ARMISA外的一个具有微处理器所能执行的机器语言程序的第三ISA。下表(表I)描述本发明微处理器100的一实施例的微指令集的微指令126的一些位字段。权利要求1.一种微处理器,执行条件非分支指令,其中,各该条件非分支指令是特定一条件,各该条件非分支指令在该条件满足时,指示该微处理器执行一操作,而在该条件不满足该微处理器的条件旗标时,不去执行该操作,该微处理器包含:一预测器,用以提供关于一条件非分支指令的预测;一指令转译器,用以:在该预测预测该条件将不会被满足时,将该条件非分支指令转译为一不操作微指令;以及在该预测预测该条件将会被满足时,将该条件非分支指令转译为一个或多个微指令构成的一微指令组以非条件地执行该操作;以及一执行管线,用以执行该不操作微指令或是由该指令转译器提供的该微指令组。2.根据权利要求1所述的微处理器,其中该预测器包含:一静态预测器,用以解译该条件非分支指令,并基于对该条件非分支指令的解译,提供该预测至该指令转译器。3.根据权利要求1所述的微处理器,其中该预测器包含:一动态预测器,用以维持该条件在该条件非分支指令之前的执行历程是否被满足的一历史数据,并基于该历史数据,提供该预测至该指令转译器。4.根据权利要求3所述的微处理器,其中,在该条件非分支指令是由位于该微处理器的一撷取地址的一指令快取撷取时,该动态预测器用以提供对应于该撷取地址的该预测,并且不去解译该条件非分支指令。5.根据权利要求1所述的微处理器,其中该预测器包含:一静态预测器,用以解译该条件非分支指令,并基于对该条件非分支指令的解译,提供一静态预测至该指令转译器;一动态预测器,用以维持该条件在该条件非分支指令之前的执行历程是否被满足的一历史数据,并基于该历史数据,提供一动态预测至该指令转译器;以及一选择器,用以维持该静态与该动态预测器在该条件非分支指令之前的执行历程的一准确度历史数据,并基于该准确度历史数据,提供一选择以选择该静态预测或是该动态预测作为该预测。6.根据权利要求5所述的微处理器,其中,在该条件非分支指令是由位于该微处理器的一撷取地址的一指令快取撷取时,该动态预测器用以提供对应于该撷取地址的该预测,并且不去解译该条件非分支指令;其中,在该条件非分支指令是由位于该撷取地址的该指令快取撷取时,该选择器用以提供对应于该撷取地址的该选择,并且不去解译该条件非分支指令。7.根据权利要求1所述的微处理器,其中,该指令转译器还用以:在该预测不预测是否该条件将会被满足时,将该条件非分支指令转译为一个或多个微指令构成的一第二微指令组以条件执行该操作。8.根据权利要求1所述的微处理器,其中,该不操作微指令或是由一个或多个微指令构成的该微指令组包含由该条件非分支指令特定的该条件;其中,该执行管线依据该条件与该条件旗标确认该预测是否是一误预测,以执行该不操作微指令或是由该指令转译器提供的该微指令组,并且在该预测为该误预测时,将该误预测指定给该指令转译器;其中,对应于该误预测的指定,该指令转译器还用以将该条件非分支指令再转译为一个或多个微指令构成的一第二微指令组以条件执行该操作。9.根据权利要求1所述的微处理器,其中,该预测器用以维持该条件在该条件非分支指令之前的执行历程是否被满足的一历史数据,并基于该历史数据,提供该预测至该指令转译器;其中,该不操作微指令或是一个或多个微指令构成的该微指令组包含由该条件非分支指令特定的该条件;其中,该执行管线对于该条件旗标是否满足该条件作出一决定,以执行该不操作微指令或是由该指令转译器提供的该微指令组,并且提供该决定至该预测器;其中,该预测器用以依据来自该执行管线的该决定,更新该历史数据。10.根据权利要求9所述的微处理器,其中,该预测器包含:一静态预测器,提供对应于该条件非分支指令的解译的一静态预测;一动态预测器,提供基于该历史数据的一动态预测;以及一选择器,选择该静态预测或是该动态预测;其中,该选择器用以维持该静态与该动态预测器在该条件非分支指令之前的执行历程的一准确度历史数据;其中,该选择器用以依据来自该执行管线的该决定,更新该准确度历史数据。11.根据权利要求1所述的微处理器,其中,该条件非分支指令是由ARM指令集架构定义的指令。12.根据权利要求1所述的微处理器,其中,该条件非分支指令是由x86指令集架构定义的指令。13.根据权利要求1所述的微处理器,其中,该指令转译器将x86指令集架构程序的指令与ARM指令集架构的程序转译为由该微处理器的一微指令集定义的微指令,其中,该微指令是以不同于该x86指令集架构与ARM指令集架构的该些指令集所定义的该些指令的编码方式进行编码。14.一种利用一微处理器执行条件非分支指令的方法,其中,各该条件非分支指令是特定一条件,各该条件非分支指令在该条件满足时,指示该微处理器执行一操作,而在该条件不满足该微处理器的条件旗标时,不去执行该操作,该方法包含:提供关于一条件非分支指令的预测;在该预测预测该条件将不会被满足时,将该条件非分支指令转译为一不操作微指令;在该预测预测该条件将会被满足时,将该条件非分支指令转译为一个或多个微指令构成的一微指令组以非条件地执行该操作;以及执行该不操作微指令或是由该指令转译器提供的该微指令组,该执行是由该微处理器的一硬件执行管线所执行。15.根据权利要求14所述的方法,还包含:解译该条件非分支指令;其中,提供该预测的步骤包含基于对该条件非分支指令的解译,提供该预测至该指令转译器。16.根据权利要求14所述的方法,还包含:维持该条件在该条件非分支指令之前的执行历程是否被满足的一历史数据;其中,提供该预测的步骤包含基于该历史数据,提供该预测至该指令转译器。17.根据权利要求14所述的方法,还包含:维持该条件在该条件非分支指令之前的执行历程是否被满足的一历史数据;以及维持静态预测与动态预测在该条件非分支指令之前的执行历程的一准确度历史数据;其中,提供该预测的步骤包含:基于对该条件非分支指令的解译,提供该静态预测;基于该条件在该条件非分支指令之前的执行历程是否被满足的该历史数据,提供该动态预测;以及基于该准确度历史数据,选择该静态预测或是该动态预测作为该预测。18.根据权利要求14所述的方法,还包含:在该预测不去预测该条件是否将被满足时,将该条件非分支指令转译为一个或多个微指令构成的一第二微指令组以条件执行该操作。19.根据权利要求14所述的方法,其中,该不操作微指令或是该一个或多个微指令构成的该微指令组包含该条件非分支指令特定的该条件;其中,执行该不操作微指令或是由该指令转译器提供的该微指令组的步骤包含,依据该条件与该条件旗标确认该预测是否是一误预测,并且,在该预测是该误预测时,指定该误预测;该方法还包含:对应于指定该误预测的步骤,将该条件非分支指令再转译为一个或多个微指令构成的一第二微指令组以条件执行该操作。20.根据权利要求14所述的方法,还包含:维持该条件在该条件非分支指令之前的执行历程是否被满足的一历史数据;其中,提供关于该条件非分支指令的该预测的步骤包含提供基于该历史数据的该预测;其中,该不操作微指令或是一个或多个微指令构成的该微指令集包含该条件非分支指令特定的该条件;其中,执行该不操作微指令或是由该指令转译器提供的该微指令组的步骤包含,作出该条件旗标是否满足该条件的一决定,并提供该决定;该方法还包含:对应于作出该决定的步骤,更新该历史数据。21.根据权利要求20所述的方法,其中,提供关于该条件非分支指令的该预测的步骤包含:提供对应于解译该条件非分支指令的一静态预测;提供基于该历史数据的一动态预测;以及选择该静态预测或是该动态预测;其中,该方法还包含:维持该静态与该动态预测在该条件非分支指令之前的执行历程的一准确度历史数据;以及对应于该决定,更新该准确度历史数据。22.—种计算机程序产品,编码于至少一计算机可读取储存媒介,以使用于一运算装置,该计算机程序产品包括:用于该媒介的计算机可读取程序码,用以特定一微处理器以执行条件非分支指令,其中,各该条件非分支指令是特定一条件,各该条件非分支指令在该条件满足时,指示该微处理器执行一操作,而在该条件不满足该微处理器的条件旗标时,不去执行该操作,该计算机可读取程序码包含:第一程序码,特定一预测器,用以提供关于一条件非分支指令的预测;第二程序码,特定一指令转译器,用以:在该预测预测该条件将不会被满足时,将该条件非分支指令转译为一不操作微指令;以及在该预测预测该条件将会被满足时,将该条件非分支指令转译为一个或多个微指令构成的一微指令组以非条件地执行该操作;以及第三程序码,特定一执行管线,用以执行该不操作微指令或是由该指令转译器提供的该微指令组。23.根据权利要求22所述的计算机程序产品,其中,该至少一计算机可读取储存媒介是选自由盘片、磁带、或是其它磁性、光学或电子的储存媒介以及网络、缆线、无线或其它通讯媒介所构成的一群组。24.一种具有一指令集架构的微处理器,该指令集架构是定义有至少一指令,该指令包含一立即字段,该立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值,该指令指示该微处理器执行一操作将一固定数值作为其中之一的源操作数,该固定数值是将该第一数值基于该第二数值转动/移动一定数量的位而获得,该微处理器包含:一指令转译器,将该至少一指令转译为一个或多个微指令,其中,该微指令是以不同于该指令集架构所定义的指令的编码方式进行编码;以及一执行管线,执行由该指令转译器所产生的该微指令,以产生一由该指令集架构定义的结果;其中,该指令转译器,而非该执行管线,依据该第一与该第二数值产生该固定数值作为至少一该微指令的一源操作数,供该执行管线执行。25.根据权利要求24所述的微处理器,其中,该指令转译器依据该立即字段的一数值是否落于一预定的数值子集内,以将该指令转译为不同的微指令。26.根据权利要求24所述的微处理器,其中,该执行管线包含:多个执行单元,执行该微指令以产生该结果;以及一发送单元,将该指令转译器产生的该固定数值发送给至少一个该执行单元,该固定数值是作为由该至少一该执行管线执行的该至少一该微指令的该源操作数。27.根据权利要求24所述的微处理器,其中,该执行管线包含:多个执行单元,执行该微指令以产生该结果;其中,该微处理器还包含:一个或多个第一总线,将来自该执行单元的该微指令的执行结果传送回该执行单元,作为其它微指令的源操作数;以及一第二总线,提供由该指令转译器产生的该固定数值给该执行管线,其中该第二总线不同于该一个或多个第一总线。28.根据权利要求27所述的微处理器,还包含:多个寄存器,接收来自该执行单元的该微指令的执行结果,由该指令转译器产生的该固定数值不会被该微处理器写入该寄存器。29.根据权利要求24所述的微处理器,其中,该固定数值是将该第一数值转动/移动两倍于该第二数值的数量的位而获得。30.根据权利要求24所述的该微处理器,其中,该至少一指令包含ARM指令集架构的数据处理指令,该数据处理指令特定一修正后立即常数。31.根据权利要求30所述的微处理器,其中,该ARM指令集架构的特定一修正后立即常数的该数据处理指令包含特定一修正后立即常数的条件ALU指令。32.一种方法,由一具有一指令集架构的微处理器执行,该指令集架构是定义有至少一指令,该指令包含一立即字段,该立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值,该指令指示该微处理器执行一操作将一固定数值作为其中之一的源操作数,该固定数值是将该第一数值基于该第二数值转动/移动一定数量的位而获得,该方法包含:将该至少一指令转译为一个或多个微指令,其中,该微指令是以不同于该指令集架构所定义的指令的编码方式进行编码,其中,该转译步骤是由该微处理器的一指令转译器执行;以及执行由该指令转译器所产生的该微指令,以产生一由该指令集架构定义的结果,其中,该执行步骤是由该微处理器的一执行管线执行;其中,由该指令转译器,而非该执行管线,依据该第一与该第二数值产生该固定数值作为至少一该微指令的一源操作数,供该执行管线执行。33.根据权利要求32所述的方法,其中该转译步骤包含依据该立即字段的一数值是否落于一预定的数值子集内,将该指令转译为不同的微指令。34.根据权利要求32所述的方法,其中,该固定数值是将该第一数值转动/移动两倍于该第二数值的数量的位而获得。35.根据权利要求32所述的方法,其中,该至少一指令包含ARM指令集架构的数据处理指令,该数据处理指令特定一修正后立即常数。36.根据权利要求35所述的方法,其中,该至少一指令包含ARM指令集架构的数据处理指令,该数据处理指令特定一修正后立即常数。37.一种具有一指令集架构的微处理器,该指令集架构是定义有至少一指令,该指令包含一立即字段,该立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值,该指令指示该微处理器执行一操作将一固定数值作为其中之一的源操作数,该固定数值是将该第一数值基于该第二数值转动/移动一定数量的位而获得,该微处理器包含:一指令转译器,将该至少一指令转译为一个或多个微指令;以及一执行管线,执行由该指令转译器所产生的该微指令,以产生一由该指令集架构定义的结果;其中,当该立即字段的一数值是落于一预定的数值子集内:该指令转译器将该指令转译为至少一个微指令;该指令转译器,而非该执行管线,依据该第一与该第二数值产生该固定数值;以及该执行管线利用该指令转译器产生的该固定数值作为其中之一的源操作数,执行该至少一微指令;以及其中,当该立即字段的该数值并不落于该预定的数值子集内:该指令转译器将该指令转译为至少第一与第二微指令;该执行管线,而非该指令转译器,通过执行该第一微指令,产生该固定数值;以及该执行管线通过利用该第一微指令执行产生的该固定数值作为其中之一的源操作数,以执行该第二微指令。38.根据权利要求37所述的微处理器,其中该执行管线包含:一寄存器配置表,产生该第二微指令与该第一微指令执行产生的该固定数值的关联性。39.根据权利要求37所述的微处理器,其中,该微指令是由该微处理器的一微架构所定义,并且是以不同于该指令集架构定义的指令的编码方式进行编码。40.根据权利要求37所述的微处理器,其中该第一微指令是一移位/转动微指令。41.一种方法,由具有一指令集架构的一微处理器执行,该指令集架构是定义有至少一指令,该指令包含一立即字段,该立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值,该指令指示该微处理器执行一操作将一固定数值作为其中之一的源操作数,该固定数值是将该第一数值基于该第二数值转动/移动一定数量的位而获得,该微处理器并包含一指令转译器与一执行管线,该方法包含:利用该指令转译器,确认该立即字段的一数值是否落于一预定的数值子集内;当该立即字段的该数值是落于该预定的数值子集内:利用该指令转译器将该指令转译为至少一个微指令;利用该指令转译器,而非该执行管线,依据该第一与该第二数值产生该固定数值;以及利用该执行管线,将该指令转译器产生的该固定数值作为其中之一的源操作数,来执行该至少一微指令;以及其中,当该立即字段的该数值并不落于该预定的数值子集内:利用该指令转译器,将该指令转译为至少第一与第二微指令;利用该执行管线,而非该指令转译器,通过执行该第一微指令,以产生该固定数值;以及利用该执行管线,通过利用该第一微指令执行产生的该固定数值作为其中之一的源操作数,以执行该第二微指令。42.根据权利要求41所述的方法,还包含:产生该第二微指令与该第一微指令执行产生的该固定数值的关联性,其中,产生该关联性的步骤是由该微处理器的一寄存器配置表实现。43.根据权利要求41所述的方法,其中,该微指令是由该微处理器的一微架构所定义,并且是以不同于该指令集架构定义的指令的编码方式进行编码。44.一种计算机程序产品,编码于至少一计算机可读取储存媒介,以使用于一运算装置,该计算机程序产品包括:适用于该媒介的计算机可读取程序码,用以特定一微处理器,该微处理器具有一指令集架构,该指令集架构是定义有至少一指令,该指令包含一立即字段,该立即字段内具有一第一部分特定一第一数值与一第二部分特定一第二数值,该指令指示该微处理器执行一操作将一固定数值作为其中之一的源操作数,该固定数值是将该第一数值基于该第二数值转动/移动一定数量的位而获得,该计算机可读取程序码包含:第一程序码,特定一指令转译器,用以将该至少一指令转译为一个或多个微指令,其中,该微指令是以不同于该指令集架构所定义的指令的编码方式进行编码;以及第二程序码,特定一执行管线,用以执行由该指令转译器所产生的该微指令,以产生一由该指令集架构定义的结果;其中,该指令转译器,而非该执行管线,依据该第一与该第二数值产生该固定数值作为至少一该微指令的一源操作数,供该执行管线执行。45.根据权利要求44所述的计算机程序产品,其中,该至少一计算机可读取储存媒介是选自由盘片、磁带、或是其它磁性、光学或电子的储存媒介以及网络、缆线、无线或其它通讯媒介所构成的一群组。全文摘要一个执行条件非分支指令的微处理器。条件非分支指令是特定一条件并在条件满足时,指示微处理器执行一操作,否则就不去执行此操作。一预测器提供关于此条件非分支指令的预测。一指令转译器,在前述预测预测条件将不会被满足时,将条件非分支指令转译为一不操作微指令,而在前述预测预测条件将会被满足时,将条件非分支指令转译为一个或多个微指令构成的一微指令组以非条件地执行此操作。一执行管线,用以执行不操作微指令或是微指令组。在未作出预测的时候,此预测器转译出一个或多个微指令构成的一第二微指令组以条件执行前述操作。在误预测的情况下,此转译器将条件非分支指令再转译为第二微指令组。文档编号G06F9/30GK103218203SQ20121010214公开日2013年7月24日申请日期2012年4月9日优先权日2011年4月7日发明者G.葛兰.亨利,泰瑞.派克斯,罗德尼.E.虎克申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1