CN102707926A - 可执行x86指令集及ARM指令集指令的微处理器及其运作方法 - Google Patents

可执行x86指令集及ARM指令集指令的微处理器及其运作方法 Download PDF

Info

Publication number
CN102707926A
CN102707926A CN2012101042873A CN201210104287A CN102707926A CN 102707926 A CN102707926 A CN 102707926A CN 2012101042873 A CN2012101042873 A CN 2012101042873A CN 201210104287 A CN201210104287 A CN 201210104287A CN 102707926 A CN102707926 A CN 102707926A
Authority
CN
China
Prior art keywords
instruction
microprocessor
micro
arm
instruction set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012101042873A
Other languages
English (en)
Other versions
CN102707926B (zh
Inventor
G·葛兰·亨利
泰瑞·派克斯
罗德尼·E·虎克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Priority to CN201510115612.XA priority Critical patent/CN104714778B/zh
Publication of CN102707926A publication Critical patent/CN102707926A/zh
Application granted granted Critical
Publication of CN102707926B publication Critical patent/CN102707926B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • G06F9/265Microinstruction selection based on results of processing by address selection on input of storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation

Abstract

可执行x86指令集及ARM指令集指令的微处理器及其运作方法。微处理器包含硬件指令转译器,将x86指令集架构及ARM指令集架构机器语言程序指令转译成微指令,其编码方式有别于x86指令集架构及ARM指令。执行管线执行微指令,产生由x86指令集架构/ARM定义的结果。微指令有别于执行管线执行微指令所产生的结果。转译器直接提供微指令至执行管线。微处理器每一次执行x86指令集架构及ARM指令集架构指令的其中之一时,转译器将它转译为微指令。指标指示x86或ARM何者为一启动指令集架构。重置后,微处理器初始化其架构状态,从重置地址读取其第一指令,依据启动指令集架构的定义,将第一指令全部转译。指令高速缓存存储器将x86及ARM指令存入高速缓存存储器,且提供给转译器。

Description

可执行x86指令集及ARM指令集指令的微处理器及其运作方法
技术领域
本发明涉及一种微处理器,特别是涉及一种关于多重指令集架构的支持。 
背景技术
由美国加州圣克拉拉的intel公司所独创地开发的x86处理器架构,以及由英国剑桥的ARM公司所独创地开发的进阶精简指令集机器(Advanced RISC Machines,ARM)架构,皆是计算机技术领域所熟知。许多计算机系统中存在,包括ARM处理器或x86处理器,以及对他们的需求似乎迅速地增加。目前,ARM架构处理核心的需求在计算机市场中的低功率及低成本部分似乎占有主要的地位,例如手机、个人数字助理(PDA)、平板计算机(tablet PCs)、网络路由器及集线器以及机顶盒(例如苹果公司的iPhone以及iPad的主要处理电源是由ARM架构处理器核心所提供)。而x86架构处理器的需求在计算机市场中的讲求高效能及需要高成本的部分似乎占有主要的地位,例如笔记型计算机、桌上型计算机及伺服器。然而,随着ARM核心的效能增加以及x86处理器的某种模型的消耗功率及成本减少,不同市场的界线显然地消失,且两个架构即将互相对抗,举例来说,在行动计算机市场如智慧型手机,且两个架构很可能即将在笔记型计算机、桌上型计算机及伺服器的市场上更频繁地对抗。 
这种情况造成计算机元件制造商及消费者对于两个架构中何者占有优势而处于两难,特别是两个架构软件开发者为此将开发更多的软件。举例来说,一些企业用户每个月或每年购买非常大量的计算机系统。这些企业用户因为大量购买相同系统以及简化系统维持及维修的成本效益,将非常积极地购买相同组态的系统。然而,这些大企业用户的使用者对单一设置的计算机具有不同的计算需求。更具体地来说,一些有计算需求的使用者想要在一 ARM架构处理器上执行软件,而另一些有计算需求的使用者想要在x86架构处理器上执行软件,甚至还有一些想要在两者架构处理器上执行软件。更进一步地来说,新的先前未预料到对一个架构或另一个架构的计算需求可能出现。在这些情况下,这些大企业用户所做的庞大的投资的一部份可能已经浪废掉。举另一个例子来说,一特定的使用者可能有一重要的应用程序,该运用只能在x86架构上执行,因此,该使用者购买x86架构系统,但是应用程序的版本是为ARM架构而开发,其优于x86的版本(反之亦然),因此使用者想要切换版本。不幸地,使用者已经对他不偏好的架构投入金钱。更进一步地来说,一个特定的使用者已经对应用软件投资,该应用软件仅能在ARM架构上执行,然而使用者欲将应用软件使用于其他已经为x86开发的领域,该领域并未对ARM架构所存在,或是优于为ARM架构所开发的相当的软件(反之亦然)。值得注意的是,尽管小企业用户或个人使用者对应用软件的投资可能没有大企业用户在数量级上来得多,然而,浪费的投资相对地可能要来得多。许多投资的浪费的其他类似的例子,在多变的计算机元件市场中切换占有优势时可能存在或出现,例如从x86架构切换到ARM架构,反之亦然。最后,计算机元件制造商,例如原始设备制造商(Original Equipment Manufacture,OEM)在新产品上投入大量的资源。制造商亦将陷入两难,且如果他们开发并制造了大量的围绕x86或ARM架构的系统,将可能浪费掉一些他们宝贵的开发资源,然后使用者的需求突然地相对地改变。 
对计算机元件的制造商及消费者来说,可以不在乎两个架构中的哪一个盛行而保有他们的投资资源是有益的。因此,一种解决方案是有必要的,其允许系统制造商开发一种计算机元件,该计算机元件是可以让使用者执行x86架构及ARM架构的程序。 
一种可执行一种以上指令集的程序的系统的需求已长久存在,主要是因为顾客可能作出重要的投资在一种软件上,该软件只能在旧的硬件上执行,其指令集不同于新的硬件的指令集。举例来说,IBM System/360 Model 30包含一个IBM System 1401相容性特征可减缓转换至高效能及功能增强的system/360的痛苦。Model 30包含System/360以及System/1401只读存储器(Read Only Storage,ROS)控制器,如果辅助存储器(Auxiliary Storage)预先载入需要的信息,其可用于1401模式。此外,开发出高阶语言的软件时,硬件开发者对该软件在旧硬件上编译可能有很少或是无法控制,且软件开发者 可能没有动机为了新的硬件去重新编译原始码,特别是如果软件开发者与硬件开发者不是属于同一个企业用户时。Silberman以及Ebcioglu提出一种增进现行的(″基底(base)″)复杂指令集计算机(Complex Instruction Set Computer,CISC)架构(例如IBMS/390)的软件的技术,其藉由将该软件于一个精简指令集计算机(Reduced Instruction Set Computer,RISC)上执行来实现,超纯量,以及超长指令字(Very Long Instruction Word,VLIW)架构(″原生(native)″)系统,其藉由包含一个原生引擎来执行原生码(native code)以及一个迁移引擎(migrant engine)来执行基底目标码(object code),可视需要切换于多种编码之间,其取决于将目标码译为原始码的译码软件的有效性。可参考「″An Architectural Framework for Support Heterogeneous Instruction-Set Architecture,″Siberman and Ebcioglu Computer,June 1993,No.6.Van Dyke et a1.」揭示一种具有执行管线(execution pipeline)的处理器,其执行原生RISC程序指令且亦通过硬件转译及软件转译的结合将x86程序指令译为原生RISC指令。参考于2006/5/16核准的U.S.patent No.7,047,394,Nakada等人提出一种异质同步多执行绪处理器(Simultaneous Multi-threading Processor,SMT),其具有针对不规则程序(例如OS)的进阶RISC机器(Advanced RISC Machine,ARM)架构前端管线(front-end pipeline),以及针对多媒体应用程序的Fujitsu FR-V VLIW架构前端管线,其提供具有附加VLIW队列(queue)的FR-V VLIW后端管线(back-end pipeline),以保持来自前端管线的指令。参考「″OROCHI:A Multiple Instruction Set SMT Processor,″Proceeding of the First International Workshop on New Frontiers in High-performance and Hardware-aware Computing(HipHaC′08),Lake Como,Italy,November 2008(In conjunction with MICRO-41),Buchty and Weib,eds,Universitatsverlag Karlsruhe,ISBN 978-3-86644-298-6」。其所提出的方法是为了减少在异质系统芯片(System on Chip,SOC)装置上的总系统覆盖区,例如Texas Instruments OMAP包括一个ARM处理器核心加上一个或一个以上的协处理器(co-processor),例如TMS320、各式各样的数字讯号处理器或是各式各样的GPUs,他们并不会共享指令执行资源,而是实质上以不同的处理核心整合于一个单一的芯片上。 
软件转译器(Software translator),亦或是软件仿真器(Software emulator)、软件模拟器(Software simulator)、动态二进制码转译器及其类似者,亦可用 来执行位于架构上的处理器上的不同架构的程序。一个大众商业例子如Motorola 68K-to-PowerPC仿真器,其伴随着Apple Macintosh计算机以允许68K程序在具有PowerPC处理器的Macintosh执行,且之后开发的PowerPC-to-x86仿真器可允许PowerPC程序在具有x86处理器的Macintosh执行。加州圣克拉拉的Transmeta公司将VLIW核心硬件耦接于一个以软件为基底的指令转译器,参照″Code Morphing Software″,其动态地编译或仿真x86编码序列以执行x86编码。亦可参考1998/11/3核准由Kelly所申请的U.S.Patent No.5,832,205。来自Yorktown的IBM动态架构指令集(Dynamic Architected Instruction Set,DAISY)系统包括VLIW机器及动态二进制码软件转译器,用以提供100%软件相容仿真给旧的架构。DAISY包含一个虚拟机器监视器(Virtual Machine Monitor)常驻在ROM里,其原始的平行并储存VLIW至主存储器的一部份,而非可见的至旧架构,这是为了避免在相同的旧架构编码片段的序列实例上发生再转译(re-translation)。DAISY包含快速的编译最佳化演算法,以增加效能。QEMU为一个机器仿真器,其包含一软件动态转译器。QEMU模仿不同主机上的一些CPU(例如x86 PowerPC、ARM、SPARC、Alpha以及MIP)。如发明人所述,动态转译执行进入主机指令集的目标CPU指令的计算机运作时间的转换。二进制编码的结果储存在一个转译快速缓冲存储器(cache),可减少计算机运作的时间。QEMU相较于其他动态转译器简单,因为QEMU将GNU C编译器离线产生的机器编码连成一串。Fabrice Bellard,USENIX Association,FREENIX Track于2005USENIX Annual Technical Conference:QEMU是一个快速且可携带的动态转译器。亦参考Lee Wang Hao,University of Adelaide,June 19,2009的论文:″ARM Instruction Set Simulation on Multi-Core x86 Hardware″。然而,尽管以转译器为基底的软件的解答可能针对计算需要的一子集提供足够的效能,其未必提供许多使用者需要的效能。 
静态的二进制转码为另一个技术,其具有高效能的浅力。然而,仍有技术上的考量,例如自我修改程序码(self-modifying code)、直接转移(direct branch)其价值仅在计算机作业时间,以及与静态二进制转译有关的商业/合法障碍,例如硬件开发者为了新的程序需要开发通道,以及对于原始程序分配者具有潜在的许可及著作权的违反问题。 
发明内容
本发明的各种实施例将于以下描述,其藉由提出一单一处理器设计来解决前述所指出的需求,该设计可执行x86指令集架构(instruction set architecture,ISA)机器语言程序以及ARM指令集架构机器语言程序。 
根据一实施例,本发明提供一微处理器。微处理器包含:一硬件指令转译器,其将多个指令转译为多个微指令,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序,这些微指令由该微处理器的一微指令集定义。这些微指令的编码方式有别于这些指令的编码方式,这些指令由这些x86指令集架构及ARM指令集架构的指令集所定义。微处理器还包含一执行管线,耦接于该硬件指令转译器。该执行管线执行这些微指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果。硬件指令转译器直接提供这些微指令至该执行管线以供执行,来产生由这些x86指令集架构及ARM指令集架构指令所定义的该结果。 
根据另一实施例,本发明提供一运作微处理器的方法该微处理器包含一指标,该指标指示x86指令集架构或ARM指令集架构。该方法包含:确定该指标是指示该x86指令集架构或是ARM指令集架构的何者。该方法也包含:当该指标指示为该x86指令集架构时,依据该x86指令集架构将多个机器语言指令转译为多个微指令,当该指标指示为该ARM指令集架构时,依据该ARM指令集架构将多个机器语言指令转译为多个微指令。这些微指令是由该微处理器的一微指令集所定义,且这些微指令的编码方式有别于该x86指令集架构或是ARM指令集架构的这些指令集所定义的这些指令的编码方式。该转译步骤是由该微处理器的一硬件指令转译器实行。该方法也包含:当该指标指示为该x86指令集架构时,执行这些微指令,以产生由该x86指令集架构所定义的结果,当该指标指示为该ARM指令集架构时,执行这些微指令,以产生由该ARM指令集架构所定义的结果。执行步骤是由该微处理器的一执行管线实行,该执行管线耦接于该硬件指令转译器。 
根据另一实施例,本发明提供一微处理器。该微处理器包含多个寄存器,其维持该处理器的一架构状态。该微处理器还包含一指标,其指示该微处理器的一启动指令集架构为该x86指令集架构或该ARM指令集架构。该微处理器还包含一硬件指令转译器,其将多个x86 ISA指令及多个ARM指令集架构指令转译为多个微指令。该硬件指令转译器依据该启动指令集架构的指 示,转译这些初始指令集架构指令,这些初始指令集架构指令是该微处理器在接收一重置讯号后,从架构型存储空间读取出。该微处理器还包含一执行管线,其耦接于该硬件指令转译器。该执行管线执行这些微处理器,以产生这些x86指令集架构及ARM指令集架构指令所定义的结果。在该微处理器读取这些初始指令集架构指令前,该微处理器因应该重置讯号,初始化位于这些寄存器中且由该启动ISA定义的架构状态。 
根据另一实施例,本发明提供一种运作微处理器方法。该方法包含:检测一微处理器的一已发送的重置讯号,其中该检测步骤是由该微处理器实行。该方法还包含:因应该检测步骤来决定该微处理器的一已发送的重置讯号,于该x86指令指令集架构以及该ARM指令集架构之中,该微处理器的一指标所指示的,是该微处理器的一启动指令集架构。该决定步骤是由该微处理器实行。该方法还包含:初始化由该启动指令集架构定义的该微处理器的一架构状态。该初始化步骤是由该微处理器实行。该方法还包含:转译成多个微指令,该微处理器在这些初始ISA指令重置后,从架构型存储空间读取这些初始ISA指令。该转译步骤是由该微处理器的一硬件指令转译器实行。该方法还包含:执行这些微指令,以产生该初始指令集架构定义的结果。该执行步骤是由该微处理器的一执行管线实行,该执行管线耦接于该硬件指令转译器。 
根据另一实施例,本发明提供一微处理器。该微处理器包含一指令高速缓存存储器,其将多个指令存入高速缓存存储器,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序。该微处理器还包含一硬件指令转译器,其耦接于该指令高速缓存存储器。该硬件指令转译器从该指令高速缓存存储器接收这些x86指令集架构及ARM指令集架构指令,并因应地将这些x86指令集架构及ARM指令集架构指令转译成多个微指令,其中这些微指令的编码方式有别于这些指令的编码方式,这些指令由这些x86指令集架构及ARM指令集架构的指令集所定义。该微处理器还包含一执行管线,其耦接于该硬件指令转译器。该执行管线执行这些微指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果。 
根据另一实施例,本发明提供一微处理器。该处理器包含一硬件指令转译器,其将多个指令转译为多个微指令,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序,这些微指令由该微 处理器的一微指令集定义。这些微指令的编码方式有别于这些指令的编码方式,这些指令由该x86指令集架构及ARM指令集架构的指令集所定义。该处理器还包含一执行管线,耦接于该硬件指令转译器。该执行管线执行这些微指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果。该微处理器每一次实行这些x86指令集架构及ARM指令集架构指令的其中之一时,该硬件指令转译器将该指令集架构指令转译为这些微指令,以供该执行管线执行。 
根据另一实施例,本发明提供一微处理器。该处理器包含一硬件指令转译器,其将多个指令转译为多个微指令,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序,这些微指令由该微处理器的一微指令集定义。这些微指令的编码方式有别于这些指令的编码方式,这些指令由该x86指令集架构及ARM指令集架构的指令集所定义。该处理器还包含一执行管线,耦接于该硬件指令转译器。该执行管线执行这些微指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果。由该硬件指令转译器提供给该执行管线的这些微指令有别于该执行管线执行这些微指令所产生的结果。 
附图说明
图1显示本发明的微处理器的一实施例的方块图。 
图2显示图1的硬件指令转译器的一实施例的方块图。 
图3显示图2的指令格式器的一实施例的方块图。 
图4显示图1的执行管线的一实施例的方块图。 
图5显示图1的寄存器文件的一实施例的方块图。 
图6A-6B显示图1的微处理器的运算步骤的一实施例的流程图。 
图7显示本发明的双核心处理器的一实施例的方块图。 
图8显示本发明的微处理器的一实施例的方块图。 
附图符号说明 
100微处理器 
102指令高速缓存存储器 
104硬件指令转译器 
106寄存器文件 
108存储器子系统 
112执行管线 
114指令读取单元及转移预测器 
116ARM PC 
118x86IP 
122组态寄存器 
124x86 ISA及ARM ISA指令 
126微指令 
128微指令结果 
132指令模式 
134读取地址指标 
136环境模式指标 
202指令格式器 
204简单指令转译器 
222x86 SIT 
224ARM SIT 
242格式化的x86 ISA及ARM ISA指令 
252微编码地址 
206复杂指令转译器 
232微程序计数器 
234微编码只读存储器 
235指令间接寄存器 
236微序列器 
237微转译器 
244微指令 
246微指令 
247ROM指令 
212多工器 
302预先解码器 
304IBQ 
306长度解码器及管线逻辑器 
308MQ 
312MUXES 
314FIQ 
322ARM指令集状态 
401微指令队列 
402寄存器配置表 
404指令配送器 
406指令保留器 
408指令发出单元 
412整数/转移单元 
414介质单元 
416载入/储存单元 
418浮点单元 
422前序缓冲器 
424执行单元 
602~654微处理器的运算步骤流程 
100核心0 
100核心1 
892微指令高速缓存存储器 
具体实施方式
术语汇编 
指令集定义为一组二进制编码值对应到微处理器执行的运算的映射(mapping),其中该二进制编码值为机器语言指令。典型地,机器语言程序以二进制编码,尽管可能采用其他系统,一些较旧的IBM计算机的机器语言程序以十进位编码,虽然他们最终以物理讯号的集合来呈现,这些物理讯号包含的检测电压为二进制的值。举例来说,操作机器语言指令可命令微处理器执行如下述:将第一寄存器的运算域加至第二寄存器的运算域,并将结果写入第三寄存器,将存储器地址0x12345678中的运算域减去指令规范的最近的运算域,并将结果写入第五寄存器,以第七寄存器内的位个数字移第六 寄存器内的值,如果0标志被设定,在该指令之后,转移为指令36位,从存储器地址0xABCD0000载入该值至寄存器8。如此,指令集定义的二进制值是每个机器语言指令必定使微处理器去执行需要的运算。可理解的是,指令集定义的二进制值对应到微处理器运算的映射并非意味着单一二进制值映射到单一微处理运算。更具体来说,一些指令集中,复合的二进制值可能映射到相同的微处理运算。 
指令集架构(Instruction set architecture,ISA),在微处理器的家族的上下文中,包括(1)一个指令集(2)一个资源集(例如分配存储器中的寄存器或模式的地址),该资源集是通过指令集的指令来存取,以及(3)一个例外集/异常集(set of exceptions),该异常集是由微处理器对应于指令集的指令的处理所产生,该指令集例如除以零、页面故障(page fault)、违反存储器保护。由于程序设计师,例如组合程序设计师或编译师,欲产生一机器语言程序可在微处理器家族上执行,如此需要一个ISA的定义,因此典型地微处理器家族的制造商以程序设计者人工的方式定义ISA。举例来说,在ISA出版的同时,在2009年3月Intel 64以及IA-32架构软件开发者的手册(包括5种版本,即版本1:基础架构,版本2A:指令集参考A-M,版本2B:指令集参考N-Z,版本3A:系统程序导引,版本3B:系统程序导引的第2部),藉此为各种目的将全部的内容以参考数据的方式合并于本文,以定义Intel 64以及IA-32处理器架构,这对于参考x86架构以及文中的x86、x86 ISA、x86 ISA家族、x86家族或相似者是常见的。举另一个例子来说,当ARM架构参考手册于2010年出版的同时,ARM v7-A以及ARM v7-R版本错误标示,为各种目的将全部的内容以参考数据的方式合并于本文,以定义ARM处理器架构的ISA,在此亦可参考ARM、ARM ISA、ARM ISA家族、ARM家族或及其类似者。公知的ISA家族的其他例子如IBM System/360/370/390、z/Architecture、DEC VAX、Motorola 68k、MIPS、SPARC、PowerPC以及DEC Alpha。ISA定义涵盖了处理器的一个家族,因为在ISA处理器家族的使用期限中,制造商可能藉由增加新的指令至指令集和/或增加新的寄存器至架构寄存器集,来增强家族中的原始处理器的ISA。举例详述,当x86 ISA发展至被Intel Pentium III处理器家族采用时,一组128位XMM寄存器作为SSE延伸的一部份,且x86 ISA机器语言程序已发展为使用XMM寄存器以增加效能,尽管x86 ISA机器语言程序现令不使用SSE延伸的XMM寄存器。此外,其他 制造商已经设计且制造出可执行x86 ISA机器语言程序的微处理器。举例来说,AMD(Advanced Micro Devices)以及VIA科技已将新的特征,例如AMD3DNOW!SIMD向量处理指令以及VIA挂锁安全引擎随机数字产生器(Padlock Security Engine random number generator)及进阶解码引擎特征,其中的每一个皆是由一些x86ISA机器语言程序所使用,但并非在现令的Intel微处理器中所使用。以其他例子更详尽地说明,ARM ISA原本定义ARM指令集状态,包括4位的指令。然而,ARM ISA逐渐发展为用来以2位指令来增加Thumb指令集状态,以增加编码的密度以及Jazelle指令集状态,并加速Java位编码程序,且ARM ISA机器语言程序已开发为使用一些或所有其他ARM ISA指令集状态,尽管ARM ISA机器语言程序现令并非使用其他ARM ISA指令集状态。 
ISA机器语言程序包含该ISA的一序列的指令,也就是,一序列的二进制编码值,其为该ISA指令对于运算序列设定硬射,该运算序列为程序设计者预期要执行的。因此,一x86 ISA机器语言程序包含一x86 ISA指令的序列;且一ARM ISA机器语言程序包含一ARM ISA指令的序列。该机器语言程序指令位于存储器中,且由微处理器提取及执行。 
硬件指令转译器包含一晶体管的配置,其接收一ISA机器语言指令(例如一x86 ISA或ARM ISA机器语言指令)来作为输入,并对应地将一个或多个微指令直接输出至该微处理器的一执行管线。执行管线执行该一个或多个微指令的结果,为该ISA指令定义的结果。因此,该一个或多个微指令藉由该执行管线的序列执行「实行」该ISA指令;也就是,由硬件指令转译器输出的实行微指令的执行管线所执行的序列执行,在由ISA指令定义的输入端执行了ISA指令规范的运算,以产生由ISA指令定义的一结果。因此,硬件指令转译器可说是将ISA指令转译成一个或多个实行微指令。目前的揭示描述一微处理器的多个实施例,该微处理器包含一硬件指令转译器,其将x86ISA指令及ARM ISA指令转译成微指令。需了解的是,该硬件指令转译器不是一定要能转译由x86程序设计者的手册或ARM程序设计者的手册定义的全部指令集,只要能转译这些指令的一子集(subset),因为大多数的x86 ISA及ARM ISA处理器只支持这些指令的一子集,其由为他们各自的程序设计者的手册所定义。较特别的是,由x86程序设计者的手册定义、且由硬件指令转译器转译的该指令子集,不一定要对应任何正存在的x86 ISA处理器; 以及,由ARM程序设计者的手册定义、且由硬件指令转译器转译的该指令子集,不一定要对应任何正存在的ARM ISA处理器。 
执行管线为一多个阶段的序列,其中各阶段包含硬件逻辑及一硬件寄存器,用以保持该硬件逻辑的输出,以依据微处理器的一时钟序号,提供至该序列的下一阶段。该执行管线可包含多个如此的阶段的序列,也就是指,多个转线。该执行管线接收输入微指令,然后回应地执行由微指令规范的运算,以输出结果。各种的管线的该硬件逻辑执行由微指令规范的运算,其可包括,但不局限于,算数、逻辑、记载存取、比较、测试及分歧分析,并且在格式化上数据上执行运算,其可包括,但不局限于,整数、浮点数、字符、二进码十进数(BCD)及压缩。该执行管线执行微指令,其实行一ISA指令(例如x86及ARM),以产生由ISA指令定义的结果。该执行管线区别于硬件指令转译器;较特别地是,该硬件指令转译器产生这些实行微指令,而执行管线执行他们;此外,该执行管线不产生这些实行微指令。 
指令高速缓存存储器(instruction cache)为一随机存取存储装置,位于一微处理器中,该微处理器将一ISA机器语言程序(例如x86 ISA及ARM ISA机器语言指令)的指令放置于该随机存取存储装置中,这些指令最近从系统存储器取出,并被微处理器于执行ISA机器语言程序中执行。较特别地是,ISA定义一指令地址寄存器,其维持下一个要执行的ISA指令的存储器地址(举例而言,经由x86 ISA定义为一指令指标(instruction pointer,IP),且经由ARM ISA定义为一程序计数器(program counter,PC)),且当微处理器执行机器语言程序来控制程序的流程时,微处理器更新指令地址寄存器的内容。基于指令地址寄存器的内容,该ISA指令被存入高速缓存存储器中,以为了后续能相较于从系统存储器中,较快速地从指令高速缓存存储器中取用ISA指令,下一次该机器语言程序的流程为,寄存器维持一存在于指令高速缓存存储器中的ISA指令的存储地址。特别地是,一指令高速缓存存储器的存取是基于维持于指令地址寄存器(例如IP或PC)中的存储器地址,而非仅基于由一独取或储存指令规范的一存储器地址。是以,将ISA指令维持为数据的一专用数据高速缓存存储器(例如可存在于一装载一软件转译器的系统的硬件部分),其只能基于一读取/储存地址来存取,而非基于一指令地址寄存器数值,并非是一指令高速缓存存储器。此外,一统一规格高速缓存存储器是预期涵盖于一指令高速缓存存储器的定义中,为了本揭示的目的,该统一规格 高速缓存存储器将指令及数据两者存入高速缓存存储器,也就是,其基于一指令地址寄存器数值以及一读取/储存地址来存取,而非只是基于一读取/储存地址。在本文中,一读取指令为一指令,其从存储器读取数据至微处理器,而一储存指令为一指令,其从微处理器写入数据至存储器中。 
微指令集为多个指令(微指令)的组合,这些指令(微指令)可被微处理器的执行管线执行。 
实施例 
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭示内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。结合参考这些内容,本领域的技术人员应能理解其他可能的实施方式以及本发明的优点。因此,本发明不限于以下显示及描述的实施例,然应授予符合下述操作原理及新颖特征的最广范围。 
本说明书揭示一种微处理器的实施例,可由硬件分别将x86以及ARMISA指令转译为微指令来执行x86以及ARM ISA机器语言程序,其是藉由该微处理器的一个执行管线直接执行。该微指令由有别于x86及ARM ISA的微处理器的微架构的微指令集定义。如本发明实施例所述的微处理器执行x86以及ARM ISA机器语言程序,微处理器的硬件指令转译器将x86及ARM指令转译为微指令,且将微指令提供给微处理器的执行管线,该执行管线执行该微指令,以实现x86及ARM指令。有利的是,微处理器执行x86及ARM机器指令程序的速度可能相较于使用一软件转译器的系统来得快,这是因为执行的微指令是为了执行而由硬件指令转译器直接提供至执行管线,而非如软件转译器系统在执行管线执行之前将主机指令储存至存储器。 
参考图1,其绘示本发明微处理器的一实施例的方块图。如图1所示,微处理器100可执行x86及ARM ISA机器语言程序。微处理器100包括一指令高速缓存存储器102、一硬件指令转译器104、一执行管线112、一寄存器文件106、一存储器子系统108、一指令读取单元及转移预测单元114、一由ARM ISA定义的程序计数器(ARM ISA-defined program counter,ARM PC)寄存器116(以下称ARM ISA定义程序计数器)、一由x86 ISA定义的指令指标(x86 ISA-defined instruction pointer,x86 IP)118(以下称x86 ISA定义指令指标)以及组态寄存器122,其中硬件指令转译器104用以接收来自指令高速缓 存存储器102的x86 ISA指令及ARM ISA指令124,并将x86 ISA指令及ARM ISA指令124转译为微指令126,执行管线112用以接收来自硬件指令转译器104的微指令126,并执行微指令126以产生微指令结果128,微指令结果128传送回执行管线112,以作为运算域,寄存器文件106及存储器子系统108中的每一个提供运算域至执行管线112,且接收微指令结果128,指令读取单元及转移预测单元114提供一读取地址134至指令高速缓存存储器,ARM PC 116及x86 IP 118以微指令结果128来更新,且其内容提供至指令读取单元及转移预测器114,组态寄存器122提供一指令模式指标132及一环境模式指标136至硬件指令转译器104及指令读取单元及转移预测器114,且其是由微指令结果128更新。 
当微处理器100执行x86 ISA及ARM ISA机器语言指令,其根据程序的流程读取了来自系统存储器(图未示)的指令。微处理器100用以储存指令高速缓存存储器102中最新读取的x86 ISA及ARM ISA机器语言指令。指令读取单元及转移预测器114用以产生一读取地址134,由此以读取来自系统存储器中的x86 ISA或ARM ISA指令位124的一数据段(block)。指令高速缓存存储器102用以在该ISA指令位124命中进该指令高速缓存存储器102时将位于读取地址134的x86 ISA或ARM ISA指令位124的数据段提供给硬件指令转译器104,否则由系统存储器读取ISA指令位124。指令读取单元及转移预测器114用以根据ARM PC 116及x86 IP 118中的值来产生读取地址134。更具体体地来说,指令读取单元及转移预测器114在读取地址寄存器中保有一读取地址。每当指令读取单元及转移预测器114读取ISA指令位124中的一个新的数据段,指令读取单元及转移预测器114以该数据段的大小更新读取地址,并且持续以这种方式直到控制流程事件(control flow event)发生。控制流程事件包括一个异常的产生、指令读取单元及转移预测器114所产生的一预测以及执行管线112的一更新,其中一个取得的转移出现在读取的数据段中,该更新是藉由执行管线112传送至ARM PC 116及x86IP 118,其对应至一取得的执行转移指令,该执行转移指令并非由指令读取单元及转移预测器114所预测取得。对应于一控制流程事件,指令读取单元及转移预测器114将读取地址分别更新为异常操作装置地址、预测目标地址或执行目标地址。另一种实施例为,指令高速缓存存储器102是一个联合高速缓存存储器,其储存ISA指令124及数据。值得注意的是,在联合高速缓 存存储器的实施例中,尽管联合高速缓存存储器的存取可能根据一个载入/储存地址来读取/写入数据,当微处理器读取来自联合高速缓存存储器的ISA指令124,联合高速缓存存储器的存取是依据ARM PC 116以及x86 IP 118的值,而非一载入/储存地址。指令高速缓存存储器102可为一个随机存取存储器(random access memory,RAM)装置。 
指令模式指标132描述的是关于微处理器100是否正在读取、格式化/解码以及转译x86 ISA或ARM ISA指令124为微指令126的指标。此外,执行管线112及存储器子系统108接收指令模式指标132,尽管为了微指令集中的相对小的子集,其影响执行该微指令126。x86 IP 118维持执行下一个x86 ISA指令124的存储器地址,且ARM PC 116维持执行下一个ARMISA指令124的存储器体地址。为了控制程序的流程,当微处理器100分别执行x86及ARM机器语言程序时,微处理器100更新x86 IP 118以及ARMPC 116,更新至下一序列指令、转移地址指令的目标地址或异常处理器地址。当微处理器100执行x86及ARM ISA机器语言程序的指令时,其读取来自系统存储器的机器语言程序的ISA指令,以ISA指令取代指令高速缓存存储器102中最近读取的指令,并执行该ISA指令。指令读取单元及转移预测器114依据指令模式指标132指示的处理器100是否正在读取x86或ARM模式中的ISA指令124,而根据x86 IP 118或ARM PC 116的值产生读取地址134。根据一实施例,x86 IP 118及ARM PC 116可如同一共享硬件指令地址寄存器,其提供其内容至指令读取单元及转移预测器114,且由执行管线112根据x86或ARM的语义(semantics)来更新其内容,该语意是基于指令模式指标132是否分别地指示x86或ARM。 
环境模式指标136描述的是关于微处理器100是否将x86 ISA或ARMISA语意运用于微处理器100运算的不同执行环境方面,例如虚拟存储器、异常、高速缓存器存储器控制以及全球执行时间保护(global execution-time protection)。如此,指令模式指标132及环境模式指标136一同产生执行的多个模式。在第一模式中,指令模式指标132及环境模式指标136皆指示x86 ISA,微处理器100如同标准的x86 ISA处理器般的运作。在第二模式中,指令模式指标132及环境模式指标136皆指示ARM ISA,微处理器100如同标准的ARM ISA处理器般运作。在第三模式中,指令模式指标132指示x86 ISA,然而环境模式指标136指示ARM ISA,可能有利于在ARM运算 系统或超管理器(hypervisor)的控制下执行使用者模式x86机器语言程序。相反地,在第四模式中,指令模式指标132指示ARM ISA,然而环境模式指标136指示x86 ISA,可能有利于在x86运算系统或超管理器(hypervisor)的控制下执行使用者模式ARM机器语言程序。指令模式指标132及环境模式指标136值在重置时被初始化地决定。在一实施例中,初始的值编码为微编码常数,但可能由布林组态引信和/或微编码路径修正。另一实施例中,初始值由一外部输入(external input)提供至微处理器100。在一实施例中,环境模式指标136可能仅在由一个重置至ARM(reset-to-ARM)124或重置至x86(reset-to-x86)指令124(详述如图6)重置后改变,也就是说,环境模式指标136可能在微处理器100的标准运算期间改变,而不需要重置微处理器100,或是藉由一标准重置或由reset-to-x86或reset-to-ARM指令124。硬件指令转译器104接收x86 ISA及ARM ISA机器语言指令124以作为输入,且对应地提供一个或多个微指令126以作为输出,其实现了x86 ISA或ARM ISA指令124。一个或多个来自执行管线112的微指令126的聚集执行(collective execution)实现了x86 ISA或ARM ISA指令124。聚集执行在由x86 ISA或ARM ISA指令124规范的输入实现了由x86 ISA或ARM ISA指令124规范的运算,以产生由x86 ISA或ARM ISA指令124定义的结果。如此,硬件指令转译器104将x86 ISA或ARM ISA指令124转译为一个或多个微指令126。硬件指令转译器104包含一个预定安排的晶体管的集合,用以将x86 ISA及ARM ISA机器语言指令124转译为微指令126。硬件指令转译器104亦可包括布林逻辑门(即图2中的简单指令转译器204),其用以产生微指令126。根据一实施例,硬件指令转译器104亦可包括一微编码只读存储器(microcode ROM)(即图2中的复杂指令转译器206中的元件234),硬件指令转译器104利用微编码只读存储器234因ISA指令124产生微指令126,其详述对应图2所述。较佳地,硬件指令转译器104不需要转译由x86程序设计者手册及ARM程序设计者手册定义的ISA指令124的所有指令集,而是将ISA指令124的一子集转译。更具体地来说,硬件指令转译器104转译的x86程序设计者手册定义的ISA指令124的子集并不需要对应至Intel开发的x86 ISA处理器,且硬件指令转译器104转译的ARM程序设计者手册定义的ISA指令124并不需要对应至ARM公司开发的ISA处理器。有关执行x86 ISA或ARM ISA指令124的一个或多个微指令126可由硬件指令转 译器104一次或依序地提供至执行管线112。有利的是,硬件指令转译器104直接地将微指令126提供至执行管线112,而不需要将他们储存至存储器。根据一实施例,图1的微处理器100,当微处理器100执行x86 ISA或ARMISA指令124时,微处理器100每一次执行x86 ISA或ARM ISA指令124时,硬件指令转译器104将x86或ARM机器语言指令124转译为一个或多个微指令126。然而另一个实施例,如图8所示,微处理器100采用一微指令高速缓存存储器,以避免微处理器100每一次执行x86 ISA或ARM ISA指令124时,发生再转译(re-translation)。硬件指令转译器104的实施例将详述于图2。 
执行管线112用已执行由硬件指令转译器104所提供的微指令126。广义地来说,执行管线112为一个一般用途高速微指令处理器,而微处理器100的其他部分,例如硬件指令转译器104用以执行大量x86/ARM规范的功能,尽管该功能如本文所述,理论上是由执行管线112所执行。根据一实施例,执行管线112用以执行来自硬件指令转译器104的寄存器重新命名、超标问题(superscalar issue)以及微指令126的故障执行。执行管线112将对照图4详述。 
微处理器100的微架构包括(1)微指令集;(2)以微指令集的微指令126存取的资源集,其为x86 ISA及ARM ISA资源的超集合(superset);以及(3)异常集,该异常集是由微处理器100定义,并对应微指令126的异常所产生,其为x86 ISA及ARM ISA异常的一超集合。微架构有别于x86 ISA及ARMISA。更具体地来说,微指令集在许多方面有别于x86 ISA及ARM ISA指令集。第一,微指令集的微指令指示执行管线112执行的运算集与x86 ISA及ARM ISA指令集的指令指示微处理器执行的运算集之间没有一对一的对应。尽管许多运算可能一样,由微指令规范的一些运算并非由x86 ISA和/或ARM ISA指令集所规范。相反地,由x86 ISA和/或ARM ISA指令集所规范的一些运算并非由微指令集所规范。第二微指令集的微指令的编码有别于x86 ISA及ARM ISA指令集的编码。也就是说,尽管微指令集以及x86 ISA及ARM ISA指令集规范的运算有许多相同,例如加、位移、载入、回传,微指令集与x86 ISA或ARM ISA指令集之间的二进制运算码值至运算(value-to-operation)的映射(mapping)不具有一对一的对应。如果二进制运算码值到运算映射在微指令集及x86 ISA或ARM ISA指令集中恰巧是相同的, 一般来说,它们之间仍不具有一对一的对应。微指令集的微指令的字段与x86 ISA或ARM ISA指令集的指令的字段不具有一对一的对应。 
整体来说,微处理器100可执行x86 ISA及ARM ISA机器语言程序指令。然而,执行管线112不能执行x86 ISA及ARM ISA机器语言程序指令本身,而能执行微处理器100的微架构的微指令集的微指令126,也就是将x86 ISA及ARM ISA指令转译。然而,尽管为架构有别于x86 ISA及ARMISA,另一实施例中,使用者可接触到微指令集以及其他微架构规范的资源,也就是说,在另一个实施例中,微架构可有效地作为第三ISA,此外,微处理器100可执行x86 ISA及ARM ISA机器语言程序。 
下列表1描述根据本发明的微处理器100的一实施例的微指令集的微指令126的一些字段。 
表1
Figure BSA00000699167200201
表2
微处理器100亦包括一些微架构规范的资源,例如微架构规范的一般用途寄存器、介质寄存器以及片段寄存器(例如用于寄存器重新命名或藉由微编码)及控制寄存器,皆为x86 ISA或ARM ISA不可见的,以及私有RAM(PRAM),以下将详述。此外,微架构可产生例外,其可视为微例外,其并非由x86 ISA或ARM ISA规范,且在x86ISA或ARM ISA中不可见,以执行一微指令126及独立微指令126的一重新执行(replay),例如在以下情况:假如错过一载入,执行管线112取得一载入位及重新执行该载入的微指令126;一TBL错过(miss),在分页表走道(page table walk)以及TBL填满之后,重新执行微指令126;在执行管线112标准化运算元之后,浮点微指令126接收一非规格化(denormal)的运算元,其推定为需要被重新执行的标准;执行一载入微指令126,但是在其之后,可检测到一个较旧的地址碰撞(address-colliding)储存微指令126,必须重新执行载入微指令126。可以理解的是,表1中所列的字段、表2中所列的微指令以及微架构规范的资源及微架构规范的例外,仅为举例而已,并非详尽列举。 
寄存器文件106可包括硬件寄存器,该硬盘寄存器藉由微指令126维持来源和/或目的运算元。执行管线112将其结果129写入寄存器文件106,并因应微指令126接收来自寄存器文件106的运算元。硬件寄存器指示由x86ISA定义及由ARM ISA定义的寄存器。在一实施例中,许多由x86 ISA定义及由ARM ISA定义的一般用途寄存器共享一些寄存器文件106的寄存器的惯例(instances)。举例来说,在一实施例中,寄存器文件106实体化15个32位的寄存器,其由ARM ISA寄存器R0至R14以及x86 ISA EAX至R14D寄存器共享。如此,若一个第一微指令126写入一个值到ARM R2寄存器,然后一个随后的第二微指令126读取x86 ECX寄存器将接收由第一微指令126写入的相同值。如此有利x86 ISA及ARM ISA机器语言程序通过多个 寄存器快速的沟通。举例来说,ARM机器语言运算系统执行的ARM机器语言程序造成在传送至x86 ISA的指令模式指标132中的变化,且控制传送至x86机器语言例行程序,以执行一功能,有利的是,如此x86可支持某些指令,其可相较于在ARM ISA中较快地执行一特定的运算。ARM程序可提供需要的数据至寄存器文件106的共享的寄存器中的x86例行程序。相反地,x86例行程序可提供寄存器文件106中的共享寄存器中的结果,在x86例行程序回复之上,ARM程序将可看见的。类似地,在x86机器语言运算系统下执行x86机器语言程序,可能造成在传送至ARM ISA的指令模式指标132中的一个变化,且控制传送至ARM机器语言例行程序;x86程序可提供需要的数据至在寄存器文件106的共享寄存器中的ARM例行程序,且ARM例行程序可提供寄存器文件106的共享寄存器中的结果,在ARM例行程序回复之上,x86程序将可看见的。第16个32位寄存器,举x86 R15D寄存器说明,其并非由ARM R15寄存器共享,因为ARM R15为ARM PC寄存器116,其分别地示例。此外,在一实施例中32个32位ARM VFPv3浮点寄存器共享x86的16个128位XMM0到XMM15寄存器以及16个128位的进阶SIMD(“氖(Neon)”)寄存器的32位部分。寄存器文件106亦举标志寄存器为例(即为x86EFLAGS寄存器及ARM条件标志寄存器),且由x86 ISA及ARM ISA定义不同的控制及状态寄存器。架构控制及状态寄存器包括以x86架构模型规范的寄存器(MSRs)(以下称x86架构模型规范寄存器)及ARM保存的共处理器(coprocessor)(8-15)寄存器。寄存器文件106亦可举非架构寄存器为例,例如使用于寄存器保存及微编码只读存储器234使用的非架构一般用途寄存器,如同非架构x86 MSRs及执行定义或供应商规范的ARM共处理器寄存器。寄存器文件106将对照图5详述。 
存储器子系统108用以检测指令模式指标132以及环境模式指标136,可在适当的ISA上下文中执行不同的运算。举例来说,存储器子系统108可根据指令模式指标132是否指示x86或ARM ISA来执行某些存储器存取违反确认(例如限制违反确认)。举另一个例子来说,对应至环境模式指标136的一个变化,存储器子系统108清除TLBs;然而,对应至指令模式指标132的一个变化,存储器子系统108并不清除TLBs,藉此,可较佳地在上述的第三或第四模式中执行,其中指令模式指标132或环境模式指标136中的一个指示x86,而另一个指示ARM。举另一个例子,对应至一个TLB遗漏, 表格走道引擎执行分页表走道,根据环境模式指标136指示x86还是ARMISA,来决定利用x86分页表或ARM分页表迁移TLB。举另一个例子,如果状态指标136指示x86 ISA,则存储器子系统108检查x86 ISA控制寄存器的架构状态,其影响高速缓存手段(例如CR0CD以及NW位);如果环境模式指标136指示ARM ISA,则存储器子系统108检查ARM ISA控制寄存器的架构状态(例如SCTLR I以及C位)。举另一个例子,如果状态指标136指示x86 ISA,则存储器子系统108检查x86控制寄存器的架构状态,其影响存储器管理(例如CR0 PG位),如果环境模式指标136指示ARM ISA,则存储器子系统108检查ARM ISA控制寄存器的架构状态。举另一个例子,如果状态指标136指示x86 ISA,存储器检查x86ISA控制寄存器的架构状态,其影响对准检查(alignment checking)(例如CR0AM位);如果环境模式指标136指示ARM ISA,则存储器检查ARM ISA控制寄存器的架构状态。举另一个例子,如果状态指标136指示s86 ISA,则存储器子系统108(如同硬件指令转译器104因应优先指令)检查x86 ISA控制寄存器的架构状态,其规范了当前优先级别(current privilege level,CPL);如果环境模式指标136指示ARM ISA,则存储器子系统108检查ARM ISA控制状态器的架构状态,其指示使用者或优先模式。然而,在一实施例中,微处理器100的x86 ISA以及ARM ISA共享控制位/寄存器具有类似的功能,而非微处理器100为了每一个ISA列举分散控制位/寄存器。 
尽管分开地显示,组态寄存器122可视为寄存器文件106的一部份。组态寄存器122包括一全球组态寄存器,在关于x86 ISA及ARM ISA的不同方面,其控制微处理器100的运算,例如致能或失效的不同特征。全球组态寄存器可用以让微处理器100执行ARM ISA机器语言程序的能力失效,即使微处理器100成为一个x86专用的微处理器100,包括使有关其他ARM规范的能力失效,例如本文提到的发射x86以及重置至x86指令124及以执行定义的共处理器寄存器(以下称执行定义ARM ISA共处理器寄存器)。全球组态寄存器亦可用于使微处理器100执行x86 ISA机器语言程序的能力失效,即使微处理器100成为ARM专用的微处理器100,且使有关其的能力失效,例如本文提到的发射ARM以及重置至ARM指令124及新的无架构MSRs。在一实施例中,微处理器100是伴随着预设的组态设定(configuration ssetting)初始化地制造,例如微编码只读存储器234中的硬件编码值,其为 微编码只读存储器234在初始化时间时使用,用以组态微处理器100,即写入至全球组态寄存器122。然而,一些全球组态寄存器122是由硬件设定而非由微编码只读存储器234设定。此外,微处理器100包括引信,其可由微编码只读存储器234读取,其可藉由断开来修改预设组态值。在一实施例中,微编码只读存储器234读取引信且以预定值及引信值来执行一户斥(exclusive-OR)运算,且使用该运算结果写入全球组态寄存器122。再者,引信的修改效果可能由微编码只读存储器234插线而反转。全球组态寄存器亦可被使用,假设微处理器100用以执行x86及ARM程序,以决定微处理器100(或对应至图7所述的多核心部分之中的微处理器100)于重置时,将被启动为x86或ARM微处理器,或对应至x86形式的INIT,其在对应至图6的说明详述。全球组态寄存器122亦可包括因应架构控制寄存器所提供的初始预设值的位,举例来说ARM ISA SCTLT以及CPACR寄存器。在一个多核心的实施例中,如对应至图7的说明所述,尽管每个核心是分开地组态,仍存在着一个单一的全球组态寄存器,举例来说,为了启动为x86或ARM核心,即以指令模式指标132及环境模式指标136皆分别设定至x86或ARM,此外,发射ARM指令126及发射x86指令126可用以动态地切换于x86及ARM指令模式指标132之间。在一实施例中,全球组态寄存器可通过x86RDMSR指令读取至一新的非架构MSR,且其中控制位的一部份可通过x86WRMSR指令读取至新的非架构MSR,且全球组态寄存器可通过ARMMCR/MCRR指令读取至一个映射至新的非架构MSR共处理器寄存器,且其中控制位的一部份可通过ARM MRC/MRRC指令读取到映射至新的非架构MSR的ARM共处理器寄存器。 
全球组态寄存器122亦可包括不同的控制寄存器,其在非x86/ARM规范的不同方面控制微处理器100的运算,在本文亦可考虑为全球控制寄存器、非ISA控制寄存器、非x86/ARM控制寄存器、一般的(generic)控制寄存器及其类似者。在一实施例中,这些控制寄存器可通过x86RDMSR/WRMSR指令存取至非架构MSRs,以及通过ARM MCR/MRC(或MCRR/MRRC)指令存取至新的执行定义共处理器寄存器。举例来说,微处理器100包含非x86/ARM规范的控制寄存器,其决定精细度(fine-grained)高速缓存控制,即较由x86 ISA及AMR ISA控制寄存器提供的更为精细。 
在一实施例中,微处理器100提供ARM ISA机器语言程序通过执行定 义ARM ISA共处理器寄存器存取至x86 ISA MSRs,其直接映射至对应的x86MSRs。MSR地址是规范在ARM ISA MSRs寄存器里。数据是由MRC/MRRC/MCR/MCRR指令规范从ARM ISA寄存器读取或写入至ARMISA寄存器。在一实施例中,MSRs的子集合是以密码保护的,集指令尝试存取至MSR必定提供一密码;在这个实施例,密码是规范在ARM R7:R6寄存器里。假如存取引起一x86一般保护错误,则微处理器100引起一ARMISA UND异常。在一实施例中,ARM共处理4(地址:0,7,15,0)作为存取对应的x86MSRs。 
微处理器100亦可包括一中断控制器,该中断控制器耦接于执行管线112。在一实施例中,中断控制器为一x86形式进阶可编程中断控制器(x86-style advanced programmable interrupt controller,APIC),APIC将x86 ISA中断讯号映射到ARM ISA中断讯号。在一实施例中,x86 INTR映射到一个ARM IRQ中断讯号;x86 NMI映射到一个ARM IRQ中断讯号;x86 INIT引起一个INIT重置序列,从任何一个ISA(x86或ARM)中的微处理器100开始,其原本是从一个硬件重置开始;x86 SMI映射到一个ARM FIQ中断讯号;以及x86 STPCLK、A20、Thermal、PREQ以及Rebranch并非映射到ARM中断讯号。 
ARM机器语言程序可通过新的实行定义ARM共处理器寄存器来存取APIC功能(function)。在一个实施例中,APIC寄存器地址是规范于ARM R0寄存器中,且APIC寄存器地址如x86地址是一样的。在一实施例中,ARM共处理器6(地址:0,7,nn,0,其中nn为15,用以存取APIC,且12-14用以存取总线接口单元(bus interface unit),以执行在处理器总线上的8位、16位及32位输入/输出循环(cycle))用于优先模式(privileged mode)功能,该优先模式功能典型地是由运算系统所采用。微处理器100亦可包括一总线接口单元(图未示),该总线接口单元耦接于存储器系统108及执行管线112,以作为微处理器100至处理总线的一接口。在一实施例中,处理器总线与不同的Intel Pentium家族的其中一个的微处理器总线相符合。 
ARM机器语言程序可通过新的执行定义ARM共处理器寄存器存取总线接口单元功能,以产生处理器总线上的输入/输出(I/O)循环,即输入(IN)及输出(OUT)总线传送至I/O空间规范的地址。该地址必须与系统的芯片组(chipset)沟通,例如产生一SMI认可的规范循环,或产生与C状态(C-state) 变迁有关的I/O出循环。在一实施例中,I/O地址规范在ARM R0寄存器中。在一实施例,微处理器100亦具有电源管理功能,例如公众所知的P状态(P-state)以及C-state管理。ARM机器语言程序可通过新的执行定义ARM共处理器寄存器来执行电源管理。在一实施例中,微处理器100亦可包括一个加密单元(encryption unit)(图未示),该加密单元位于执行管线112中。在一实施例中,加密单元实质上类似VIA微处理器中的加密单元,VIA微处理器中的加密单元具有挂锁能力。ARM机器语言程序可存取加密单元功能,例如通过新的执行定义ARM共处理器寄存器。在一实施例中,ARM共处理器5用于使用者模式功能,使用者模式功能典型地由使用者模式运用程序所采用,例如使用加密单元特征。 
当微处理器100执行x86 ISA以及ARM ISA机器语言程序,则在微处理器100每一次执行x86或ARM ISA指令124时,硬件指令转译器104执行硬件指令转译。值得注意的是,相反地,软件转译基底系统可藉由在许多情况下再利用(re-using)一个转译,而非再转译(re-translation)一个之前已经转译过的机器语言指令。此外,图8的实施例使用一个微指令高速缓存存储器,以避免微处理器100每一次执行x86或ARM ISA指令124时发生再转译。每一种方法依照程序特色及程序执行的特定情况而具有不同的执行优点。 
转移预测器114储存有关先前已执行过的x86以及ARM转移指令的历史数据。当来自指令快速存储器102的x86以及ARM转移指令124被读取时,转移预测器114预测高速缓存线内的x86以及ARM转移指令124的转移及目标地址。在一实施例中,高速缓存历史包括记转移指令124、转移目标地址、方向(taken/not taken)指标、转移指令类型、转移指令的高速缓存线内的起始位以及指令缠绕(wrap)是否横越多个高速缓存线指标的存储器地址。根据一实施例,转移预测器114可增强用来预测ARM ISA有条件的非转移指令,如于2011年4月7日申请的美国临时申请案No.61/473,037″APPARATUS AND METHOD FOR USING BRANCH PREDICTION TO EFFICIENTLY EXECUTE CONDITIONAL NON-BRANCH INSTRUCTIONS″所述。根据一实施例,硬件指令转译器104亦可包括一静态转移预测器,该静态转移预测器用以根据运算码、条件编码类型、预测x86以及ARM转移指令、后退/前进等等来预测对应x86及ARM转移指令的一方向及转译目标。 
其他不同的实施例亦可考虑执行x86 ISA以及ARM ISA定义的功能的不同组合。举例来说,在一实施例中,微处理器100执行ARM、Thumb、ThumbEE以及Jazelle指令集状态,但提供一个Jazelle延伸的琐碎实施;以及执行下列指令:Thumb-2、VFPv3-D32、Advanced SIMD(“Neon”)多重处理以及VMSA;且不执行下列延伸:安全延伸、快速上下文切换延伸、ARM除错功能(然而,x86除错功能可通过ARM MCR/MRC由ARM程序存取至新的执行定义共处理器寄存器)、效能监测计数器(然而,x86效能计数器可通过新的执行定义共处理器寄存器由ARM程序存取)。举例来说,在一实施例中,微处理器100将ARM SETEND指令视为一个NOP,且仅支持Little-endian数据格式。举另一个例子,在一个实施例中,微处理器100并不执行x86 SSE 4.2能力。 
其他实施例亦被考虑,其中微处理器100为一个商业用微处理器的增强(enhancement),即一个由台湾VIA科技公司制造的VIA NanoTM处理器,该处理器可执行x86 ISA机器语言程序,但不能执行ARM ISA机器语言程序。Nano微处理器包括一高效能寄存器重新命名、超纯量指令发送、故障执行管线以及一硬件转译器,该硬件转译器将x86 ISA指令转译为执行管线执行的微指令。Nano硬件指令转译器实质上可如本文提到,增强为可将ARMISA机器语言指令转译为除了x86机器语言指令外,还可转译为执行管线可执行的微指令。硬件指令转译器的增强可包括简单指令转译器及复杂指令转译器,其包括微编码。此外,新的微指令可能增加至微指令集,以支持ARMISA机器语言指令转为微指令的转译,且执行管线可增强为执行新的微指令。另外,Nano寄存器文件以及存储器系统实质上可如本文所述增强为支持ARM ISA,其包括某些寄存器的共享。转移预测单元亦可增强为如本文所述的提供ARM转移指令预测及x86转移。有利的是,一个相对轻微的修改量对Nano微处理器的执行管线来说是有其必要的,以提供ARM ISA指令,这是因为这已是主要地不受ISA限制(ISA-agnostic)。对于执行线的增强可能包括产生及使用条件码标志、用以更新及报告指令指标寄存器的语义(semantics)、存取优先保护方法以及不同的存储器管理关系功能,例如存取违反检查、分页及TLB使用以及高速缓存手段,上述仅为举例而已,然其中一些将在下文详述。最后,如上所述,定义于x86 ISA以及ARM ISA里的不同功能在Nano增强的实施例中不被支持,例如x86 SSE 4.2以及ARM 安全延伸、快速上下文切换延伸、除错以及效能计数器功能,上述例子仅用以举例,其中的一些将于下文详述。Nano处理器的增强可支持执行ARM ISA机器语言程序,此为一个产生设计、测试以及制造资源的协同(synergistic)使用的实施例,以带给及时流行的市场一个单一整合电路设计,该电路可执行x86及ARM机器语言程序,其代表了绝大部分现有的机器语言程序。特别的是,微处理器100的实施例的设计如本文所述,可作为一个x86微处理器、ARM微处理器或是一个可同时执行x86 ISA以及ARM ISA机器语言程序的微处理器。可同时执行x86 ISA以及ARM ISA机器语言程序的微处理器的能力可通过动态切换单一微处理器100(或核心100,请见图7)上的x86与ARM指令模式132之间来实现,通过将多核心处理器100(可参考对应图7的说明)中的一个或一个以上的核心100配置为一个ARM核心,以及将将一个或多个核心100配置为x86核心,或通过两者的结合,即动态切换于每个多核心100上的x86以及ARM指令模式132之间。此外,根据过往历史事实,ARM ISA核心已设计作为知识产权核心,且被第三方贩卖者纳入应用中,例如SOC且/或嵌入式应用。因此,ARM ISA不会规范一标准的处理器总线以作为ARM核心到系统的测试端的接口,例如芯片组及其他周边元件。有利的是,Nano处理器已包括一个用于存储器与周边设备的高速x86形式处理器总线接口,以及一个由处理器100协同地利用的存储器同调结构(coherency structure),以支持x86PC形式系统环境中执行ARM ISA机器语言程序。 
现在请参考图2,其显示图1的硬件指令转译器104的较详细的方块图。硬件指令转译器104包括一个转译器的集合的硬件。硬件指令转译器104包括一指令格式器202、一简单指令转译器(simple instruction translator,SIT)204、一复杂指令转译器(complex instruction translator,CIT)及一多工器(MUX)212,该指令格式器202接收指令模式指标132以及大量来自图1中的指令高速缓存存储器102的x86ISA及ARM ISA指令位124,且指令格式器202输出格式化x86 ISA及ARM ISA指令242;该简单指令转译器204接收指令模式指标132及环境模式指标136,并输出执行微指令244以及微编码地址252;该复杂指令转译器206(亦可视为一个微编码单元)接收微编码地址252及环境模式指标136,且提供执行微指令246;而多工器212通过一个输入点(input)接收来自简单指令转译器204的微指令244,且通过另一 个输入点接收来自复杂指令转译器206的微指令246,该多工器212提供执行微指令126至图1中的执行管线112。微指令格式器202将于对照图3的说明详述。简单指令转译器204包括一个x86 SIT 222及一个ARM SIT 224。复杂指令转器206包括一个微程序计数器(micro-program counter,micro-PC)232、一微编码只读存储器(microcode read only memory,microcode ROM)234、一微序列器(microsequencer)236、一指令间接寄存器(instruction indirection register,IIR)235以及一微转译器237,微程序计数器232用以接收微编码地址252;微编码只读存储器234接收来自微程序计数器232的一只读存储器地址254;微序列器236用以更新微程序计数器232;微转译器237产生执行微指令246,并由复杂指令转译器206输出。由简单指令转译器204产生的执行微指令244以及由复杂指令转译器206产生的微指令246皆为微处理器100的微架构的微指令集的微指令126,且该微指令126可由执行管线112直接地执行。 
多工器212由一选择输入248控制。通常情况下,多工器212从简单指令转译器204中选择微指令;然而,当简单指令转译器204遇到一复杂x86或ARM ISA指令242,且转移控制至或中断复杂指令转译器206时,简单指令转译器204控制选择输入248,以使多工器212从复杂指令转译器206中选择微指令246。当RAT402(如图4所示)遇到一个带有一特殊位集的微指令126时,RAT402控制选择输入248,以使多工器212再从简单指令转译器204中选择微指令244;特殊位集可指示出,微指令为实行于复杂ISA指令424中的最后一个微指令126。此外,当前序缓冲器422(参阅图4)准备要收取回一例如带有「指示微指令126曾造成一异常状况」的状态的微指令126时,前序缓冲器422控制选择输入248,以使多工器212从复杂指令转译器206中选择微指令246。 
简单指令转译器204接收ISA指令242;如果指令模式指标132指示为x86,简单指令转译器204将ISA指令242解码成x86 ISA指令;如果指令模式指标132指示为ARM,简单指令转译器204将ISA指令242解码成ARMISA指令。简单指令转译器204还确定ISA指令242为简单或复杂ISA指令。一简单ISA指令242为:简单指令转译器204可发出实行简单ISA指令242的实行微指令126至其中;也就是复杂指令转译器206无法提供任何实行微指令126至简单ISA指令242中。反之,一复杂ISA指令124需要复杂指令 转译器206来提供至少部分的(如果非全部的)实施微指令126。在一实施例中,对于指令124的一子集以及x86 ISA指令集而言,简单指令转译器204发出实行x86/ARM ISA指令126的微指令244的一部份,然后转移控制至复杂指令转译器206;复杂指令转译器206尔后发出实行x86/ARM ISA指令126的微指令246的剩余部份。多工器212受控制,以首先从简单指令转译器204中将实行微指令244提供如微指令126,至执行管线112中,且接着从复杂指令转译器206中将实行微指令246提供如微指令126,至执行管线112中。简单指令转译器204知道硬件指令转译器104所使用的各种微编码例行程序的开始微编码只读存储器234地址,以产生用于各种复杂ISA指令124的实行微指令126;当简单指令转译器204将一复杂ISA指令242解码时,简单指令转译器204提供相关的微编码例行程序地址252至复杂指令转译器206的微程序计数器232中。简单微指令204将实行ARM及x86 ISA指令集的相对大比例的指令124所需的微指令244发出,特别是易于被ARMISA及x86 ISA机器语言程序高频率地执行的ISA指令124;只有相对小比例需要复杂指令转译器206来提供实行微指令246。依据一实施例,由复杂指令转译器206来主要实施的x86指令的范例为RDMSR/WRMSR、CPUID、复杂数学指令(例如FSQRT及非代数指令)、及IRET指令;由复杂指令转译器206来主要实施的ARM指令的范例为MCR、MRC、MSR、MRS、SRS、及RFE指令。前述所列举的绝非详尽,仅是指出可由复杂指令转译器206实行的ISA指令的种类。 
当指令模式指标132指示为x86时,x86 SIT222将x86 ISA指令242解码,并将x86 ISA指令242转译成实行微指令244;当指令模式指标132指示为ARM时,ARM SIT224将ARM ISA指令242解码,并将ARM ISA指令242转译成实行微指令244。在一实施例中,简单指令转译器204为一布林逻辑门的区块(block),可由熟知的合成工具来合成出。在一实施例中,x86SIT222及ARM SIT224为分离的布林逻辑门区块;然而,在另一实施例中,x86 SIT222及ARM SIT224为单一个的布林逻辑门区块。在一实施例中,简单指令转译器204至多转译三个ISA指令242,并于每一时钟周期中,提供至多六个实行微指令244至执行管线112。在一实施例中,简单指令转译器204包含三个子转译器(未显示),各转译一单一格式化指令242;第一子转译器可转译需至多三个实行微指令126的一格式化指令242;第二子转译器可 转译需至多二个实行微指令126的一格式化指令242;而第三子转译器可转译需至多一个实行微指令126的一格式化指令242。在一实施例中,简单指令转译器204包含一硬件状态机器,硬件状态机器可使简单指令转译器204在多个时钟周期中,输出多个实行一ISA指令242的微指令244。 
在一实施例中,简单指令转译器204还根据指令模式指标132和/或环境模式指标136,来执行各种异常(exception)检测。举例而言,如果指令模式指标132指示为x86,且x86 SIT222解码出一对于为了x86ISA而言为无效的ISA指令124时,此时简单指令转译器204产生一x86无效运作码(opcode)异常;类似地,如果指令模式指标132指示为ARM,且ARM SIT224解码出一对于为了ARM ISA而言为无效的ISA指令124时,此时简单指令转译器204产生一ARM无效运作码异常。举另一例而言,如果环境模式指标136指示为x86时,此时简单指令转译器204检测每一个所遭遇的x86 ISA指令242是否需要一特殊优先层级;如果为是,简单指令转译器204检测CPL是否满足用于x86 ISA指令242的所需优先层级;如果为否,简单指令转译器204则产生一异常。类似地,如果环境模式指标136指示为ARM ISA时,此时简单指令转译器204检测每一个格式化ARM ISA指令242是否为一优先模式指令;如果为是,简单指令转译器204检测目前模式是否为一优先模式;如果目前模式为一使用者模式,简单指令转译器204则产生一异常。复杂指令转译器206执行用于某些复杂ISA指令242的类似功能。 
复杂指令转译器206输出一序列的实行微指令246至多工器212。微编码只读存储器234储存微编码例行程序的ROM指令247。因应下个欲从微编码只读存储器234读取出且储存于微程序计数器232的ROM指令247地址,微编码只读存储器234输出ROM指令247。通常地,因应简单指令转译器204将一复杂ISA指令242解码,微程序计数器232接收来自简单指令转译器204的微程序计数器232的初始值252。在其它例子中,例如因应一重置或异常,微程序计数器232分别接收重置微编码例行程序地址的地址,或是适当的微编码异常处理程序地址。因应一控制类型微指令126的执行,例如一转移(branch)指令,微序列器236通常依据ROM指令247的大小来更新微程序计数器232至微编码例行程序的序列以及替代地至执行管线112产生的一目标地址,以对微编码只读存储器234中的非序列地址进行转移。微编码只读存储器234是制造于微处理器100的半导体芯片中。 
除了微指令244(其实施一简单ISA指令124或一复杂ISA指令124的一部份)外,该简单指令转译器204还产生ISA指令信息255,该ISA指令信息255是写入至指令间接寄存器(instruction indirection register,IIR)235。储存于IIR235中的该ISA指令信息255包含关于ISA指令124的被转译的信息,举例而言,用以识别来源及目标寄存器的信息(其由ISA指令124规范)以及ISA指令124的形式,例如ISA指令124是否在存储器的运算元或是在微处理器100的架构型寄存器106上运作。此举可使微编码的例行程序(routines)为一般的(generic),也就是说,不必为了不同的来源和/或目标架构型寄存器106,而有不同的微编码程序。 
特别地,简单指令转译器204对寄存器文件106有丰富知识,其包含:哪一个寄存器为共享寄存器504,及通过ISA指令信息255将x86 ISA及ARM ISA指令124所提供的寄存器信息转译至寄存器文件106中的适当寄存器。ISA指令信息255还包含:一位移栏,一立即栏、一恒定栏、用于来源运算元及微指令126本身的重新命名信息、用以指示出位于微指令126(其实施该ISA指令124)序列中的第一及最后微指令126的信息、以及从硬件指令转译器104所解码的ISA指令中收集而来的有用信息。 
微转译器237接收IIR235的内容,且从微编码只读存储器234接收ROM247指令。对应地,微转译器237产生实施微指令246。微转译器237依据从IIR235接收的信息(例如依据ISA只另124的形式以及来源和/或目标架构型寄存器106的他们所规范的组合),将某些ROM指令247转译成不同的微指令246序列。在很多例子中,多数的ISA指令信息255与ROM指令247结合,以产生实施微指令246。在一实施例中,每一个ROM指令247大约为40位组宽,而每一微指令246大约为200位宽。在一实施例中,微转译器237可从一ROM指令247产生至多三个的微指令246。微转译器237包含多个布林逻辑门,这些布林逻辑门产生实施微指令246。 
微编译器237所具有的优点为微编码只读存储器234的大小可缩减,因为IIR235所提供的ISA指令信息255不需被储存,因为简单指令转译器204产生ISA指令信息255。此外,微编码只读存储器234例行程序可包含较少的状态转移指令,因为不需为了每一个不同ISA指令形式以及每一个来源和/或目标架构型寄存器106组合,包含个别例行程序。举例而言,假如复杂ISA指令124为一存储器形式,简单指令转译器204可产生微指令244的 prolog程序语言(其可包含从存储器读取来源运算元至一暂时寄存器106的微指令244),且微转译器237可产生一微指令246以将来自暂时寄存器的结果储存至存储器。反之,如果复杂ISA指令124为一寄存器形式,prolog程序语言可将来源运算元从规范于ISA指令的来源寄存器,移至暂时寄存器,且微转译器237可产生一微指令246,以将IIR235所规范的结果,从暂时寄存器移至架构型目标寄存器106。在一实施例中,微转译器237在很多方面类似于2010年4月23日申请的美国专利申请号12/766,244所述的转译器237,其在此为了全部目的,以参考形式并入本文;但修改为除了x86 ISA指令124外,还可转译ARM ISA指令。 
要注意的是,微程序计数器232有别于ARM PC116及x86 IP118;也就是说,微程序计数器232没有维持IS指令124的地址,而维持于微程序计数器232的地址并非位于系统存储地址空间中。进一步要注意的是,微指令246是由硬件指令转译器104所产生,且直接提供至执行管线112以供执行,而不是执行管线112的结果128。 
现参阅图3,其显示一方块图,更为详细地描述图2的指令格式器202。指令格式器202从图1的指令高速缓存存储器102接收x86 ISA及ARM ISA指令位组124的一数据段。由于x86 ISA指令的可变长度,一x86指令124可为任一位于指令位组124的一数据段中的位。确定出「位于一高速缓存数据段中的一x86 ISA指令的长度及地址」的工作,较为复杂,因为x86 ISA允许前置位组及长度可被目前的地址长度及运算元长度预设值影响。此外,依据目前的ARM的指令集状态322以及ARM ISA指令124的运作码(opcode),ARM ISA指令可为2位或4位长度的指令,且可为2位或4位对齐。因此,指令格式器202从指令位组124的串流中,取出有区别的x86 ISA及ARM ISA指令,该指令位组124是由从指令高速缓存存储器102接收而来的数据段组成。也就是,指令格式器202格式化x86 ISA及ARM ISA指令位组的串流,此举大大简化图2的简单指令转译器204的「解码及转译ISA指令124」的复杂工作。 
指令格式器202包含一预先解码器302,其预先将指令位组124解码成x86指令位组,如果指令模式指标132指示出x86;且其预先将指令位组124解码成ARM指令位组,如果指令模式指标132指示出ARM,以产生预先解码信息。一指令位队列(instruction byte queue,IBQ)304接收ISA指令124 的数据段以及由预先解码器302所产生的相关预先解码信息。 
长度解码器及管线逻辑器306的一阵列接收IBQ304的底部入口的内容,也就是ISA指令124的数据段以及相关预先的解码信息。该长度解码器及管线逻辑器306还接收指令模式指标132以及ARM ISA指令集状态322。在一实施例中,该ARM ISA指令集状态322包含ARM ISA CPSR寄存器的该J及T位。因应其输入,该长度解码器及管线逻辑器306产生解码信息,该解码信息包含:位于ISA指令位组124的数据段中的x86及ARM指令的长度、x86前置信息、以及多个指标。这些指标与下列各一相关:ISA指令位组124(其指示哪一个位为一ISA指令124的开始位)、一ISA指令124的结束位、以和/或一ISA指令124的一有效位。一多工队列(mux queue,MQ)308接收ISA指令位组126的一数据段,其相关的预先解码信息是由预先解码器302产生,该相关解码信息是由长度解码器及管线逻辑器306产收。 
控制逻辑(图未示)审查底部MQ308入口的内容,且控制多工器312去取得格式化的ISA指令及相关的预先解码及解码信息;格式化的ISA指令及相关的预先解码及解码信息提供至一格式化指令队列(formatted instruction queue,FIQ)314。FIQ314缓冲该格式化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被修改成,除了x86 ISA指令124外,还可格式化ARM ISA指令124。长度解码器306被修改,以解码ARM ISA指令124,以产生ARMISA指令124的长度以及开始、结束及有效位指标。特别地,如果指令模式指标132指出ARM ISA,长度解码器306检视目前的ARM指令集状态322以及ARM ISA指令124的运作码,以确定ARM指令124为一2位或是四位长度指令。在一实施例中,长度解码器306包含用以产生x86ISA指令124的长度及产生ARM ISA指令124的长度的多个分离长度解码器,这些分离长度解码器的三状态输出一起被线或(wire-ORed),以提供至管线逻辑器306。在一实施例中,格式化指令队列(FIQ)314包含用以维持格式化指令242 的分离部分的多个分离队列。在一实施例中,在每一时钟周期中,指令格式器202提供简单指令转译器204至多三个格式化ISA指令242。 
现参阅图4,其显示一方块图,更为详细地描述图1的执行管线112。执行管线112耦接以直接地从图2的硬件指令转译器104接收实行微指令126。执行管线112包含:一微指令队列401(其接收微指令126)、一寄存器配置表(register allocation table,RAT)402(其从微指令队列401接收微指令)、一指令配送器404(其耦接至RAT402)、指令保留器406(其耦接至指令配送器404)、一指令发出单元408(其耦接指令保留器406)、一重排序缓冲器(reorder buffer,ROB)422(其耦接至RAT402、指令配送器404及指令保留器406)、以及执行单元424(其耦接至指令保留器406、指令发出单元408及重排序缓冲器422)。RAT402及执行管线424接收指令模式指标132。 
在「硬件指令转译器104产生实行微指令126的速率」与「执行管线112执行微指令126的速率」不同的情况下,微指令队列401运作如一缓冲器。在一实施例中,微指令队列401包含一M至N可压缩的微指令队列,其使得执行管线112可在一特定时钟中,从硬件指令转译器104中接收至多M个微指令126(一实施例中,M为六个),且还可储存所接收的微指令126在一N长度队列结构中(一实施例中,N为三个),以在每一时钟周期中提供至多N个微指令126至RAT402;RAT402可在每一时钟周期中,处里至多N个微指令126。微指令队列401为可压缩的,因为在队列的入口没有留下空洞,但反而是,当微指令126从硬件指令转译器104接收来时,连续地将微指令126填入空的序列的入口,无论是在哪一个特定时钟周期中接收到微指令126。此举有利于使执行管线424(于图4中)高度利用,以达到高指令产出,且相对于不可压缩的M宽度或N宽度指令队列有优点。更特别地,不可压缩的N宽度队列会需要硬件指令转译器104(特别是简单指令转译器204)于随后的一时钟周期中,将已经在前个时钟周期中转译过的一个或多个ISA指令124,重新转译;这是因为不可压缩的N宽度队列在每一个时钟周期中,不能接收超过N个微指令126;重新转译浪费电能。但是,虽然不需要简单指令转译器204来重新转译,不可压缩的N宽度队列会在队列入口制造空洞,此举显得浪费且会需要较多的入口列,以及因此需要一较大量电能消耗的队列,来实现可比得上的缓冲能力。 
RAT402从微指令队列401接收微指令126,且产生关于位于微处理器 100中、尚未处理的微指令126的附属信息,且实行寄存器重新命名,以增加微指令平行运算,以利用超纯量(superscalar)处理器、执行管线112的故障(out-of-order)执行能力。如果ISA指令124指示出x86,然后RAT402产生附属信息,以及执行与微处理器100的x86 ISA寄存器106有关的寄存器重新命名;但是,如果ISA指令124指示出ARM,然后RAT402产生附属信息,以及执行与微处理器100的ARM ISA寄存器106有关的寄存器重新命名;然而,如上所述,部分的寄存器106可由x86 ISA及ARM ISA共享。RAT402还为了在程序顺序中的每一个微指令126,配置一入口于ROB422,使得ROB422可在程序顺序中,收回微指令126和微指令126相关的x86 ISA及ARM ISA指令124,既使微指令126可在程序顺序外执行,该程序顺序与x86 ISA及ARM ISA指令所实行的相关。ROB422包括这些入口的一循环队列,每一个用以储存有关未处里的微指令126的信息。除了其它物体外,该信息还包含:微指令126执行状态、一标签(其从已经转译的微指令126中辨识x86或ARM ISA指令124)、以及用以储存微指令126的结果的存储区。 
指令配送器404从RAT402接收寄存器重新命名的微指令126及附属信息,且依据指令的形式和执行单元424的可用性,配送微处理器126及其相关的附属信息至指令保留器406;该指令保留器406与适当的执行单元424相关,执行单元424将执行微指令126。 
指令发出单元408为了每一个在指令保留器406等待的微指令126,检测相关的执行单元424可使用与附属信息已满足(例如,来源运算元可使用),且发出微指令126至执行单元424以供执行。如果所述,指令发出单元408可发出微指令126,以在程序顺序外以及超纯量处理器的方式下执行。 
在一实施例中,执行单元424包含整数/转移单元412、介质单元414、载入/储存单元416、以及浮点单元418。执行单元424执行微指令126,以产生ROB422提供的结果128。虽然执行单元424显然地对于其所执行的微指令126是否已从x86或ARM ISA指令124转译,为不受限制的(agnostic),执行单元424使用指令模式指标132及环境模式指标136,来执行相对少量的微指令126的子集。举一例而言,执行管线112依据指令模式指标132是指示x86 ISA或ARM ISA,来稍微不同地处理标志的产生,且执行管线112依据指令模式指标132是指示x86 ISA或ARM ISA,来更新x86 EFLAGS 寄存器或是在PSR中的ARM状态编码标志。举另一例而言,执行管线112取样指令模式指示器132,以决定要更新x86 IP118或ARM PC116,或是共同的指令,且决定要使用x86或ARM的语意来为之。一旦一微指令126变成微处理器100中最久且已完成的微指令126(也就是,在ROB422队列的标头具有一完成状态),且执行相关的ISA指令124的其它全部微指令126皆完成时,ROB422收回ISA指令124并释放与实行微指令126相关的入口。在一实施例中,每一个时钟周期中,微处理器100能收回至多三个ISA指令124。有利地,执行管线112为一高性能、通用目的的执行引擎,其执行微处理器100的微架构的微指令126,且x86 ISA及ARM ISA指令124两者皆支持。 
现参阅图5,其显示一方块图,更为详细地描述图1的寄存器文件106。较佳地,寄存器文件106实施为寄存器的分离的实体信息段。在一实施例中,一般目的的寄存器被实行在一个实体寄存器文件中,实体寄存器文件具有多个读取端口及写入端口;然而,其它寄存器可为与一般目的的寄存器文件以及接近的功能方块,实体地分离;且比起一般目的寄存器文件而言,其它寄存器可具有较少的读取/写入端口。在一实施例中,部分的非一般目的寄存器,特别是那些不直接控制微处理器100的硬件,但仅是储存微编码只读存储器234所用的数值(例如某些x86 MSR或是ARM共处理器寄存器),是被实行于一私用随机存取存储器(PRAM),其可被微编码只读存储器234存取但对于x86 ISA及ARM ISA程序设计者而言是看不见的,也就是不位在ISA系统存储器地址空间中。 
一般来说,寄存器文件106逻辑上被分为三个类别,如图5所示,也就是ARM规范的寄存器502、x86规范的寄存器504、及共享寄存器506。在一实施例中,共享寄存器506包含十五个32位寄存器,其由ARM ISA寄存器R0至R14以及x86 ISAEAX至R14D寄存器共享,且包含十六个128位寄存器,其由x86 ISA XMM0至XMM15寄存器和ARM ISA进阶SIMD(Neon)寄存器共享;其中一部分还与32位ARM VFPv3浮点寄存器重迭。如先前关于图1的描述,一般目的寄存器的共享意味着,由一x86 ISA指令124写入至一共享寄存器的数值,可被一尔后读取该共享寄存器的ARM ISA指令124看到,反之亦然。此举有利于使x86 ISA及ARM ISA例行程序通过寄存器来相互沟通。此外,如前所示,x86 ISA及ARM ISA的架构型控制寄 存器的某些位也可作为共享寄存器506的例子。如前所示,在一实施例中,x86MSRs可通过一以实行来定义的共处理器寄存器,被ARM ISA指令124存取,并因此被x86 ISA及ARM ISA共享。共享寄存器506还可包括非架构型寄存器,例如状态标志的非架构型等效,其同样也被RAT402重新命名。硬件指令转译器104知道哪一个寄存器被x86 ISA及ARM ISA共享,因此硬件指令转译器104可产生实行微指令126来存取正确的寄存器。 
以ARM规范的寄存器502(以下称ARM规范寄存器502)包含由ARMISA定义、但不包含于共享寄存器506中的其它寄存器,以x86规范的寄存器504(以下称x86规范寄存器504)包含由x86 ISA定义、但不包含于共享寄存器506中的其它寄存器。ARM规范寄存器502的范例包含ARM PC116、CPSR、CTRL、EPSCR、CPACR、共处理器寄存器、预备一般目的寄存器、及各种例外模式的SPSR等。前述并不是预期作为ARM规范寄存器502的详细列表,但仅是提供来作为描述范例。x86规范寄存器504的范例包含x86EIP118、EFLAGS、R15D、64位R0至R15处理器的上层32位(也就是不位在共享寄存器506的部分)、x87FPU寄存器、MMX寄存器、及控制寄存器(例如CR0至CR3,R8)等。前述并不是预期作为x86规范寄存器504的详细列表,但仅是提供来作为描述范例。 
在一实施例中,微处理器100包含新的实施定义ARM共处理器寄存器,其可在指令模式指示器132指出ARM ISA时被存取,以执行x86 ISA相关的运作;这些运作包含,但不具限:将微处理器100重置为一x86ISA处理器(重置至x86指令)的能力;初始化微处理器100的x86规范状态、切换指令模式指标132至x86、及在一规范x86目标地址上读取x86指令124(启动x86指令)的能力;存取先期讨论过的全域配置寄存器的能力;以及存取x86规范寄存器(例如EFLAGS)的能力,其中欲存取的x86规范寄存器被确认于ARM R0寄存器、电能管理(例如P状态及C状态转变)、处理器缓冲功能(例如I/O循环)、中断控制器存取、以及加密加速(encryption acceleration)能力存取。此外,在一实施例中,微处理器100包含新的x86非架构型MSR,其可在指令模式指示器132指出x86 ISA时被存取,以执行ARM ISA相关的运作;这些运作包含,但不具限:将微处理器100重置为一ARM ISA处理器(重置至ARM指令)的能力;初始化微处理器100的ARM规范状态、切换指令模式指标132至ARM、及在一规范ARM目标地址上读取ARM指令 124(启动ARM指令)的能力;存取先期讨论过的全域配置寄存器的能力;以及存取ARM规范寄存器(例如CPSR)的能力,其中欲存取的ARM规范寄存器被确认于EAX寄存器。 
现参阅图6,其包含图6A及图6B,其显示一描述图1的微处理器100运作的流程。流程开始于方块602。 
在方块602中,微处理器100被重置。此重置可在重置输入上发讯至微处理器100。进一步,在一实施例中,处理器总线为一x86形式处理器总线,而重置可由一x86形式INIT发讯。因应该重置,在微编码243中的重置程序被唤起。该重置微编码包含:(1)初始化x86规范状态504至x86ISA规范的预设值;(2)初始化ARM规范状态502至ARM ISA规范的预设值;(3)初始化微处理器100的非x86规范状态至微处理器100制造商所规范的预设值;(4)初始化共享ISA状态506(例如GPR’S)至x86 ISA规范的预设值;以及(5)设定指令模式指标132及环境模式指标136,以指示出x86 ISA。在一替代的实施例中,代替动作(4)及(5)的是,重置微编码初始化该共享ISA状态506至ARM ISA规范的预设值,且设定指令模式指标132及环境模式指标136,以指示出ARM ISA。在如此的一实施例中,方块638及642将不需要执行;且在方块614之前,重置微编码将初始化该共同ISA状态506至x86ISA规范的预设值,且将设定指令模式指标132及环境模式指标136,以指示出x86 ISA。流程进行至方块604。 
在方块604,重置微编码确定微处理器100要设置来启动为一x86处理器或一ARM处理器。在一实施例中,如前所述,该预设ISA启动模式在微编码中被硬编码(hardcoded),但可被一烧断的引信架构和/或一微编码插线(pathc)修改。在另一实施例中,该预设ISA启动模式被提供为一给至该微处理器的外部输入,例如一外部输入接脚。流程前进至方块606。在决策方块606中,如果预设ISA启动模式为x86,流程进行至方块614;反之,如果预设ISA启动模式为ARM,流程前进至方块638。 
在方块614中,重置微编码造成微处理器100在x86 ISA规范的重置向量地址上,开始读取x86指令124。流程前进至方块616 
在方块616中,x86系统软件(例如BIOS)设定微处理器100去使用,举例而言,x86 ISA RDMSR及WRMSR指令124。流程前进至方块618。 
在方块618中,x86系统软件实现一「重置至ARM指令」124。该「重 置至ARM指令」造成微处理器100重置,重置后变为一ARM处理器。然而,因为没有x86规范状态504且没有非ISA规范配置状态被「重置至ARM指令」126改变,可有利于使x86系统的固件实现微处理器100的初始配置,且有利于之后将微处理器100重新启动为一ARM处理器,并保持微处理器100的非ARM配置(其由x86系统软件实施)完整。此举可使薄的微启动编码就得以启动一ARM作业替统,该微启动编码不需要去知道配置微处理器100的作法的复杂性。在一实施例中,「重置至ARM指令」是一x86WRMSR指令,其传送一新的非架构性MSR。流程前进至方块622。 
在方块622中,简单指令转译器204因应复杂「重置至ARM指令」124,将重置微编码中断。该重置微编码将ARM规范状态502初始化成至ARMISA所规范的预设值。然而,重置微编码并没改变微处理器100的非ISA规范状态,此举有利于保留执行于方块616中的配置。此外,重置微编码将共享ISA状态506初始化成ARM ISA所规范的预设值。最后,重置微编码设定指令模式指标132及环境模式指标136,以指示ARM ISA。流程前进至方块624。 
在方块624中,重置微编码造成微处理器100在规范于x86 ISA EDX:EAX寄存器中的地址上,开始读取x86指令124。流程结束于方块624。 
在方块638中,重置微编码将共享ISA状态506(例如GPRS)初始化成由ARM ISA规范的预设值。流程前进至方块642。 
在方块642中,重置微编码设定指令模式指标132及环境模式指标136,以指示ARM ISA。流程前进至方块644。 
在方块644中,重置微编码造成微处理器100在规范于ARM ISA中的重置向量地址上,开始读取ARM指令124。ARM ISA定义了两个重置向量地址,其可由一输入来选择。在一实施例中,微处理器100包含一外部输入,以在两个ARM ISA定义的重置向量地址之间作选择。在另一实施例中,微编码只读存储器234包含两个ARM ISA定义的重置向量地址之间的一预设选择,其可被一烧断引信和/或一微编码插线改变。流程前进至方块646。 
在方块622中,ARM系统软件配置微处理器100去使用,举例而言,ARM ISA MCR及MCR指令124。流程前进至方块648。 
在方块648中,ARM系统软件实现一「重置至x86指令」124。该「重置至x86指令」造成微处理器100重置,重置后变为一x86处理器。然而, 因为没有ARM规范状态502且没有非ISA规范配置状态被「重置至x86指令」126改变,可有利于使ARM系统的固件实现微处理器100的初始配置,且有利于之后将微处理器100重新启动为一x86处理器,并保持微处理器100的非x86配置(其由ARM系统软件实施)完整。此举可使薄的微启动编码就得以启动一x86作业替统,该微启动编码不需要去知道配置微处理器100的作法的复杂性。在一实施例中,「重置至x86指令」是一ARM MRC/MRCC指令,其传送一新的实行定义的共处理器寄存器。流程前进至方块652。 
在方块652中,简单指令转译器204因应复杂「重置至x86指令」24,将重置微编码中断。该重置微编码将x86规范状态504初始化成至x86 ISA所规范的预设值。然而,重置微编码并没改变微处理器100的非ISA规范状态,此举有利于保留执行于方块646中的配置。此外,重置微编码将共享ISA状态506初始化成x86 ISA所规范的预设值。最后,重置微编码设定指令模式指标132及环境模式指标136,以指示x86 ISA。流程前进至方块654。 
在方块654中,重置微编码造成微处理器100在规范于x86 ARM ISAR1:R0寄存器中的地址上,开始读取ARM指令124。流程结束于方块654。 
现参阅图7,其显示依据本发明的一双核心微处理器700的一方块图。双核心微处理器700包含两个处理核心100,每一个核心100包含图1的微处理器100的元件,以致于可执行x86 ISA或ARM ISA机器语言程序。核心100可被配置成两个核心100同时执行x86 ISA程序、两个核心100同时执行ARM ISA程序、或一个核心执行x86 ISA程序而另一个核心100执行ARM ISA程序;在微处理器700运作途中,三个配置的混合可不断地改变。如先前关于图6所述,每一个核心100有一个用于其指令模式指标132及一环境模式指标136的预设值,其可被一引信和/或微编码插线反转,使得每个核心100可单独地重置成为一x86或一ARM处理器。虽然图7的实施例包含两个核心100,在其它实施例中,微处理器700包含两个以上的核心100,每个可执行x86及ARM ISA机器语言程序。 
现参阅图8,其显示依据本发明的一替代实施例的一微处理器100的一方块图,该微处理器100可执行x86及ARM ISA机器语言程序。图8的微处理器100类似图1的微处理器100,且相似标号的元件为类似的。然而,图8的微处理器100还包含一微指令高速缓存存储器892。微指令高速缓存存储器892将由硬件指令转译器104产生的微指令126存入高速缓存存储 器,其直接提供至执行管线112。微指令高速缓存存储器892由读取地址134所指引,而读取地址134是由指令读取单元114所产生。假如读取地址134命中(hit in)微指令高速缓存存储器892时,然后执行管线112的一多工器(图未示)从微指令高速缓存存储器892选择出微指令126,而非从硬件指令转译器104;除此之外,多工器选择由硬件指令转译器104直接提供的微指令126。微指令高速缓存存储器892通常也被视为一追踪高速缓存存储器,而微指令高速缓存存储器892的运作是微处理器设计领域中的通常知识。微指令高速缓存存储器892的优点为,由微指令高速缓存存储器892读取微指令126的所需时间,通常比由指令高速缓存存储器102读取ISA指令124,然后由硬件指令转译器104将ISA指令124转译成微指令126的所需时间,还少。在图8的一实施例中,当微处理器100执行一x86或ARM ISA机器语言程序时,硬件指令转译器104可不需在每一次x86或ARM ISA指令124执行时,都施行硬件转译(hardware translation);也就是说,如果实行微指令126已经存在于微指令高速缓存存储器892中。 
有利地,于本文描述的微处理的这些实施例可执行x86 ISA及ARM ISA机器语言程序,这是因为包含一硬件指令转译器,其将x86 ISA及ARM ISA指令转译成一微指令集的微指令,该微指令有别于x86 ISA及ARM ISA指令集;其中微指令可被微处理器的一通常执行管线执行,而实行微指令被提供。本文所描述的微处理器的这些实施例的优点为,藉由协同地(synergistically)利用大量的不受ISA限制(ISA-agnostic)的执行管线来执行从x86ISA及ARM ISA指令中硬件转译来的微指令,微处理器的设计及制造比起两个分开设计及制造的微处理,可需较少的资源;两个分开设计及制造的微处理是指,一个可执行x86ISA机器语言程序,一个可执行ARM ISA机器语言程序。此外,微处理器的这些实施例,尤其是那些采用超纯量处理(superscalar)故障执行管线的实施例,可能可提供较高效能的ARM ISA处理器,与目前存在的相比。再者,微处理器的这些实施例可能可提供较高的x86及ARM效能,与采用软件转译器的系统相比。最后,微处理器可包含于一系统中,x86及ARM机器语言程序可同时且高效能地执行于该系统中,这是因为该系统的同时执行x86 ISA及ARM ISA机器语言程序的能力。 
本发明的各种实施例已于本文中描述,但需了解的是,这些实施例是以范例方式来描述,而非限制。应了解的是,对于计算机相关领域的知识者而 言,各种形式及细节的变化皆可能,但无法悖于本发明的范围。举例而言,软件可启动于本文描述的功能、制造、模型化、模拟、描述和/或装置及方法的测试。此举的实现可通过一般程序语言(例如C及C++)、包含VerilogHDL、VHDL等的硬件描述语言(HDL)、或其他可获得的程序。该软件可设置于任何已知的计算机可使用媒介,例如磁带、半导体、磁盘、或光盘(例如CD-ROM、DVD-ROM等)、网络或其他通讯媒介。本文所描述的装置及方法的实施例可包含于一半导体知识产权核心(emiconductor intellectual property core),例如微处理器核心(位于或规范于HDL中),且被转换成生产集成电路的硬件。此外,本文所描述的装置及方法可以一软件及硬件的组合来体现。因此本发明不应局限于本文所描述的任何范例性的实施例,仅只能依据本发明的权利要求及其均等范围来定义。特别地,本发明可实施于用于一般目的的计算机中的一微处理器装置中。 
最后,本领域的技术人员应了解到,他们可容易地使用所揭示的概念及特定实施例来作为一基础,以设计或修改其他结构,来实现出与本发明相同的目的,但无法悖离本发明的权利要求所定义的范围。 

Claims (31)

1.一种微处理器,包含:
一硬件指令转译器,用以将多个指令转译为多个微指令,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序,这些微指令由该微处理器的一微指令集定义,其中这些微指令的编码方式有别于这些指令的编码方式,这些指令由这些x86指令集架构及ARM指令集架构的指令集所定义;以及
一执行管线,耦接该硬件指令转译器,其中该执行管线执行这些微指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果;
其中,该硬件指令转译器直接提供这些微指令至该执行管线以供执行,来产生由这些x86指令集架构及ARM指令集架构指令所定义的该结果。
2.如权利要求1所述的微处理器,其中由该硬件指令转译器提供给该执行管线的这些微指令有别于该执行管线执行这些微指令所产生的结果。
3.如权利要求1所述的微处理器,其中这些微指令是由该硬件指令转译器提供给该执行管线来执行,而不是该执行管线的结果。
4.如权利要求1所述的微处理器,其中该微处理器每一次执行这些x86指令集架构及ARM指令集架构指令的其中之一时,该硬件指令转译器将该指令集架构指令转译为这些微指令,以供该执行管线执行。
5.如权利要求1所述的微处理器,其中该硬件指令转译器还包含:
一微指令高速缓存存储器,用以储存这些微指令至高速缓存存储器;
其中当这些微指令存在于该微指令高速缓存存储器时,该执行管线从该微指令高速缓存存储器接收这些微指令,而非从该硬件指令转译器接收。
6.如权利要求1所述的微处理器,其中该执行管线不能直接执行这些x86指令集架构及ARM指令集架构指令。
7.如权利要求1所述的微处理器,还包含:
一指令模式指标,用以指示该微处理是否正在读取及转译这些x86指令集架构或ARM指令集架构指令并执行从该微处理转译来的这些微指令。
8.如权利要求1所述的微处理器,其中该硬件指令转译器包含:
一布林门的第一合成逻辑区块,用以将这些x86指令集架构指令转译为这些微指令;及
一布林门的第二合成逻辑区块,用以将这些ARM指令集架构指令转译为这些微指令。
9.如权利要求1所述的微处理器,其中该硬件指令转译器接收一指令模式输入,藉由该指令模式输入确认这些指令集架构指令为x86指令集架构或ARM指令集架构指令。
10.如权利要求9所述的微处理器,其中该硬件指令转译器包含:
多个布林逻辑门,包含多个晶体管,这些布林逻辑门用以依据该指令模式输入,将作为这些x86指令集架构指令或ARM指令集架构指令的这些指令集架构指令转译成这些微指令。
11.如权利要求10所述的微处理器,其中这些布林逻辑门提供因应这些x86指令集架构或ARM指令集架构指令中的一第一子集这些微指令,其中该硬件指令转译器包含:
一只读存储器,制造于一半导体芯片中,该半导体芯片包含该微处理器,其中该只读存储器用以提供多个只读存储器指令,这些只读存储器指令用以产生因应这些x86指令集架构或ARM指令集架构指令中的一第二子集的这些微指令。
12.如权利要求1所述的微处理器,其中该微处理器包含:
至少第一及第二处理核心,每一个处理核心包含该硬件指令转换器及该执行管线的一个。
13.一种运作微处理器的方法,该微处理器包含一指标,该指标指示x86指令集架构或ARM指令集架构,该方法包含:
确定该指标是指示该x86指令集架构或是ARM指令集架构的何者;
当该指标指示为该x86指令集架构时,依据该x86指令集架构将多个机器语言指令转译为多个微指令,当该指标指示为该ARM指令集架构时,依据该ARM指令集架构将多个机器语言指令转译为多个微指令,其中这些微指令是由该微处理器的一微指令集所定义,且这些微指令的编码方式有别于该x86指令集架构或是ARM指令集架构的这些指令集所定义的这些指令的编码方式,其中该转译步骤是由该微处理器的一硬件指令转译器实行;以及
当该指标指示为该x86指令集架构时,执行这些微指令,以产生由该x86指令集架构所定义的结果,当该指标指示为该ARM指令集架构时,执行这些微指令,以产生由该ARM指令集架构所定义的结果,其中该执行步骤是由该微处理器的一执行管线实行,该执行管线耦接于该硬件指令转译器。
14.如权利要求13所述的运作微处理器的方法,还包括:
直接从该硬件指令转译器提供这些微指令至该执行管线以供执行。
15.如权利要求13所述的运作微处理器的方法,其中由该硬件指令转译器所转译的这些微指令有别于该执行管线执行这些微指令所产生的结果。
16.如权利要求13所述的运作微处理器的方法,其中该执行步骤所产生的这些结果,并非该硬件指令转译器所转译的这些微指令。
17.如权利要求13所述的运作微处理器的方法,其中该微处理器每一次实行这些x86指令集架构及ARM指令集架构指令的其中之一个时,该硬件指令转译器实行该转译步骤,而该执行管线实行该执行步骤。
18.一种微处理器,包含:
多个寄存器,用以维持该处理器的一架构状态;
一指标,用以指示该微处理器的一启动指令集架构为该x86指令集架构或该ARM指令集架构;
一硬件指令转译器,用以将多个x86指令集架构指令及多个ARM指令集架构指令转译为多个微指令,其中该硬件指令转译器依据该启动指令集架构的指示,转译这些初始指令集架构指令,这些初始指令集架构指令是该微处理器在接收一重置讯号后,从架构型存储空间读取出;
一执行管线,耦接该硬件指令转译器,该执行管线用以执行这些微处理器,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果;以及
其中,在该微处理器读取这些初始指令集架构指令前,该微处理器因应该重置讯号,初始化位于这些寄存器中且由该启动指令集架构定义的架构状态。
19.如权利要求18所述的微处理器,其中该指标包含位于该微处理器的微编码中的一预设值。
20.如权利要求19所述的微处理器,还包含:
一引信,可被烧断以反转该微编码中的预设值。
21.如权利要求19所述的微处理器,其中在该处理器被重置后,且在该微处理器读取架构型存储空间中的其初始指令集架构指令前,该微编码中的该预设值可由一微编码插线修改。
22.如权利要求18所述的微处理器,其中该指标包含位于该微处理器的一暂存中的一位,该位具有因应该重置讯号的一预设值。
23.如权利要求18所述的微处理器,其中该指标包含传送至该微处理器的一外部输入。
24.如权利要求18所述的微处理器,其中该微处理器因应该重置讯号,于该启动指令集架构定义的一地址上,从架构型存储空间读取该初始指令集架构指令。
25.一种运作微处理器的方法,包含:
检测一微处理器的一被发送的重置讯号,其中该检测步骤是由该微处理器实行;
因应该检测步骤来决定该微处理器的一被发送的重置讯号,于该x86指令指令集架构以及该ARM指令集架构之中,该微处理器的一指标所指示的是该微处理器的一启动指令集架构,其中该决定步骤是由该微处理器实行;
初始化由该启动指令集架构定义的该微处理器的一架构状态,其中该初始化步骤是由该微处理器实行;
转译成多个微指令,该微处理器在这些初始指令集架构指令重置后,从架构型存储空间读取这些初始指令集架构指令,其中该转译步骤是由该微处理器的一硬件指令转译器实行;以及
执行这些微指令,以产生由该初始指令集架构定义的结果,其中该执行步骤是由该微处理器的一执行管线实行,该执行管线耦接于该硬件指令转译器。
26.如权利要求25所述的运作微处理器的方法,还包含:
在位于该启动指令集架构定义的一地址上重置后,读取这些初始指令集架构指令。
27.一种微处理器,包含:
一指令高速缓存存储器,用以将多个指令储存至高速缓存存储器,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序;
一硬件指令转译器,耦接该指令高速缓存存储器,其中该硬件指令转译器用以从该指令高速缓存存储器接收这些x86指令集架构及ARM指令集架构指令,并因应地将这些x86指令集架构及ARM指令集架构指令转译成多个微指令,其中这些微指令的编码方式有别于这些指令的编码方式,这些指令由这些x86指令集架构及ARM指令集架构的指令集所定义;以及
一执行管线,耦接于该硬件指令转译器,其中该执行管线执行这些微指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果。
28.如权利要求27所述的微处理器,还包含:
一指令模式指标,用以指示出该x86指令集架构或ARM指令集架构;以及
一指令地址寄存器,用以维持一存储器地址,该存储器地址与下一个要实行的指令集架构机器语言程序指令相关;
其中该微处理器依据由该指令模式指标指示出的该指令集架构的语意来更新该指令地址寄存器;
其中该微处理器依据维持于该指令模式指标中的该存储器地址,从该指令高速缓存存储器中读取这些指令集架构指令。
29.如权利要求28所述的微处理器,其中该硬件指令转译器包含:
一只读存储器,用以维持多个只读存储器指令,这些只读存储器指令用以产生这些微指令的至少一部份,以提供至该执行管线;以及
一微指令地址寄存器,用以维持一地址,该地址指标至该只读存储器中的下一个该只读存储器指令,其中该微指令地址寄存器有别于该架构型指令地址寄存器。
30.一种微处理器,包含:
一硬件指令转译器,用以将多个指令转译为多个微指令,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序,这些微指令由该微处理器的一微指令集定义,其中这些微指令的编码方式有别于这些指令的编码方式,这些指令由该x86指令集架构及ARM指令集架构的指令集所定义;以及
一执行管线,耦接于该硬件指令转译器,其中该执行管线执行这些微指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果;
其中该微处理器每一次实行这些x86指令集架构及ARM指令集架构指令的其中之一时,该硬件指令转译器将该指令集架构指令转译为这些微指令,以提供该执行管线执行。
31.一种微处理器,包含:
一硬件指令转译器,用以将多个指令转译为多个微指令,这些指令包含多个x86指令集架构机器语言程序以及多个ARM指令集架构机器语言程序,这些微指令由该微处理器的一微指令集定义,其中这些微指令的编码方式有别于这些指令的编码方式,这些指令由该x86指令集架构及ARM指令集架构的指令集所定义;以及
一执行管线,耦接该硬件指令转译器,其中该执行管线执行该微些指令,以产生由这些x86指令集架构及ARM指令集架构指令所定义的结果;
其中由该硬件指令转译器提供给该执行管线的这些微指令有别于该执行管线执行这些微指令所产生的结果。
CN201210104287.3A 2011-04-07 2012-04-09 可执行x86指令集及ARM指令集指令的微处理器及其运作方法 Active CN102707926B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510115612.XA CN104714778B (zh) 2011-04-07 2012-04-09 操作微处理器的方法

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201161473062P 2011-04-07 2011-04-07
US201161473067P 2011-04-07 2011-04-07
US201161473069P 2011-04-07 2011-04-07
US61/473,067 2011-04-07
US61/473,069 2011-04-07
US61/473,062 2011-04-07
US13/224,310 2011-09-01
US13/224,310 US8880851B2 (en) 2011-04-07 2011-09-01 Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510115612.XA Division CN104714778B (zh) 2011-04-07 2012-04-09 操作微处理器的方法

Publications (2)

Publication Number Publication Date
CN102707926A true CN102707926A (zh) 2012-10-03
CN102707926B CN102707926B (zh) 2015-04-08

Family

ID=45001635

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510115612.XA Active CN104714778B (zh) 2011-04-07 2012-04-09 操作微处理器的方法
CN201210104287.3A Active CN102707926B (zh) 2011-04-07 2012-04-09 可执行x86指令集及ARM指令集指令的微处理器及其运作方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510115612.XA Active CN104714778B (zh) 2011-04-07 2012-04-09 操作微处理器的方法

Country Status (4)

Country Link
US (2) US8880851B2 (zh)
EP (4) EP2667300B1 (zh)
CN (2) CN104714778B (zh)
TW (1) TWI514266B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993003A (zh) * 2014-07-21 2016-10-05 上海兆芯集成电路有限公司 同时无效化所有关联于一x86进程内容标识符的地址转译快取项目
CN106445468A (zh) * 2015-10-08 2017-02-22 上海兆芯集成电路有限公司 利用处理器架构指令加载架构缓存器文件的微运算的执行单元的直接执行
CN106598545A (zh) * 2015-10-08 2017-04-26 上海兆芯集成电路有限公司 执行于处理器的架构程序与执行于处理器执行单元的非架构程序间关于共享资源的沟通机制
CN107341116A (zh) * 2017-06-20 2017-11-10 太原鹏跃电子科技有限公司 基于arm的pc/104通信方法及其写入、读取时序
CN107667344A (zh) * 2015-06-05 2018-02-06 Arm 有限公司 可变长度指令处理模式
CN107885504A (zh) * 2017-12-12 2018-04-06 北京四方继保自动化股份有限公司 一种异构的多平台系统控制逻辑一致性校验的方法
CN108701049A (zh) * 2016-02-16 2018-10-23 微软技术许可有限责任公司 转换原子读取-修改-写入访问
CN108958798A (zh) * 2018-06-15 2018-12-07 上海兆芯集成电路有限公司 指令翻译电路、处理器电路及其执行方法
CN109491307A (zh) * 2017-09-12 2019-03-19 欧姆龙株式会社 控制装置及控制方法
CN110515658A (zh) * 2014-07-30 2019-11-29 莫维迪厄斯有限公司 用于管理可变长度指令的方法和设备
CN110806899A (zh) * 2019-11-01 2020-02-18 西安微电子技术研究所 一种基于指令扩展的流水线紧耦合加速器接口结构
CN111279308A (zh) * 2017-10-16 2020-06-12 微软技术许可有限责任公司 代码转换期间的屏障减少
CN111813464A (zh) * 2020-08-31 2020-10-23 新华三半导体技术有限公司 一种芯片配置方法、监测模块及芯片
CN112269597A (zh) * 2020-10-23 2021-01-26 中国人民解放军战略支援部队信息工程大学 处理器指令异常行为检测方法及系统
CN113220300A (zh) * 2021-04-29 2021-08-06 麒麟软件有限公司 一种应用于Android系统x86架构上的ARM指令集转换方法

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336180B2 (en) * 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
WO2013101139A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
US9836316B2 (en) * 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
US9256427B2 (en) * 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9377957B2 (en) * 2013-02-12 2016-06-28 Marvell World Trade Ltd. Method and apparatus for latency reduction
TWI492157B (zh) * 2013-03-05 2015-07-11 Andes Technology Corp 處理中斷要求事件的裝置與方法
US9525586B2 (en) * 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming
US9330028B2 (en) * 2014-03-27 2016-05-03 Intel Corporation Instruction and logic for a binary translation mechanism for control-flow security
GB2526849B (en) * 2014-06-05 2021-04-14 Advanced Risc Mach Ltd Dynamic cache allocation policy adaptation in a data processing apparatus
US9940733B2 (en) * 2014-06-26 2018-04-10 Intel Corporation Virtual memory supported compression control surfaces
US9971535B2 (en) 2014-11-05 2018-05-15 Industrial Technology Research Institute Conversion method for reducing power consumption and computing apparatus using the same
US10133580B2 (en) * 2014-12-14 2018-11-20 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US10146540B2 (en) * 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US10387159B2 (en) * 2015-02-04 2019-08-20 Intel Corporation Apparatus and method for architectural performance monitoring in binary translation systems
CN107408053B (zh) * 2015-04-10 2021-04-16 谷歌有限责任公司 用于到本原客户端的二进制翻译的方法、系统和介质
KR102023668B1 (ko) * 2015-04-10 2019-09-20 구글 엘엘씨 공유된 객체 레벨에 대한 이진 트랜슬레이션
US9507891B1 (en) 2015-05-29 2016-11-29 International Business Machines Corporation Automating a microarchitecture design exploration environment
US10169043B2 (en) 2015-11-17 2019-01-01 Microsoft Technology Licensing, Llc Efficient emulation of guest architecture instructions
US10157164B2 (en) * 2016-09-20 2018-12-18 Qualcomm Incorporated Hierarchical synthesis of computer machine instructions
CN106406814B (zh) * 2016-09-30 2019-06-14 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
TWI660307B (zh) * 2017-06-09 2019-05-21 國立交通大學 二元碼轉譯裝置及方法
US10884751B2 (en) 2018-07-13 2021-01-05 Advanced Micro Devices, Inc. Method and apparatus for virtualizing the micro-op cache
CN110851182B (zh) * 2019-10-24 2021-12-03 珠海市杰理科技股份有限公司 指令获取方法、装置、计算机设备和存储介质
EP4357957A1 (en) * 2022-10-18 2024-04-24 Thales Dis France Sas Method for securing against physical or logical attacks an execution of a machine language instructions code

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0747808A2 (en) * 1995-06-07 1996-12-11 International Business Machines Corporation Processor capable of supporting two distinct instruction set architectures
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US6611909B1 (en) * 1997-12-02 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for dynamically translating program instructions to microcode instructions
CN101866279A (zh) * 2009-08-14 2010-10-20 威盛电子股份有限公司 微处理器及其相关方法
CN101907984A (zh) * 2009-08-07 2010-12-08 威盛电子股份有限公司 指令处理方法以及其所适用的超纯量管线微处理器

Family Cites Families (139)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4388682A (en) * 1979-09-04 1983-06-14 Raytheon Company Microprogrammable instruction translator
US5235686A (en) 1987-02-24 1993-08-10 Texas Instruments Incorporated Computer system having mixed macrocode and microcode
US6112287A (en) 1993-03-01 2000-08-29 Busless Computers Sarl Shared memory multiprocessor system using a set of serial links as processors-memory switch
US5617574A (en) 1989-05-04 1997-04-01 Texas Instruments Incorporated Devices, systems and methods for conditional instructions
US5307504A (en) 1991-03-07 1994-04-26 Digital Equipment Corporation System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5226164A (en) 1991-04-24 1993-07-06 International Business Machines Corporation Millicode register management and pipeline reset
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5396634A (en) 1992-09-30 1995-03-07 Intel Corporation Method and apparatus for increasing the decoding speed of a microprocessor
GB2282245B (en) 1993-09-23 1998-04-15 Advanced Risc Mach Ltd Execution of data processing instructions
US6378062B1 (en) 1994-01-04 2002-04-23 Intel Corporation Method and apparatus for performing a store operation
US5781750A (en) 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5781457A (en) 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
US5574927A (en) 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
DE69506623T2 (de) 1994-06-03 1999-07-22 Motorola Inc Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
US5685009A (en) 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5481693A (en) 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5796981A (en) 1994-09-16 1998-08-18 Cirrus Logic, Inc. Method and apparatus for providing register compatibility between non-identical integrated circuits
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
US5832297A (en) 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5887152A (en) 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
JP3505266B2 (ja) 1995-06-15 2004-03-08 三洋電機株式会社 プログラム実行装置
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US6076155A (en) 1995-10-24 2000-06-13 S3 Incorporated Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
US6185668B1 (en) 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5752014A (en) 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
GB9622684D0 (en) * 1996-10-31 1997-01-08 Sgs Thomson Microelectronics An integrated circuit device and method of communication therwith
US20030061471A1 (en) 1999-07-23 2003-03-27 Masahito Matsuo Data processor
US6374346B1 (en) 1997-01-24 2002-04-16 Texas Instruments Incorporated Processor with conditional execution of every instruction
US6381692B1 (en) 1997-07-16 2002-04-30 California Institute Of Technology Pipelined asynchronous processing
US5926646A (en) 1997-09-11 1999-07-20 Advanced Micro Devices, Inc. Context-dependent memory-mapped registers for transparent expansion of a register file
US6178482B1 (en) 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
US6438679B1 (en) 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
JP3570188B2 (ja) 1997-12-25 2004-09-29 富士通株式会社 可変長符号処理機構を有するデータ処理装置
US6353883B1 (en) 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6684323B2 (en) 1998-10-27 2004-01-27 Stmicroelectronics, Inc. Virtual condition codes
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
AU3484100A (en) * 1999-02-05 2000-08-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor andmethod for the same
DE69934875D1 (de) 1999-05-03 2007-03-08 St Microelectronics Sa Geschützte Ausführung von Rechnerbefehlen
GB2355084B (en) 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US6442679B1 (en) 1999-08-17 2002-08-27 Compaq Computer Technologies Group, L.P. Apparatus and method for guard outcome prediction
CA2383526A1 (en) * 1999-09-01 2001-03-15 Intel Corporation Branch instruction for multithreaded processor
US6880152B1 (en) 1999-10-13 2005-04-12 Transmeta Corporation Method of determining a mode of code generation
US6651159B1 (en) 1999-11-29 2003-11-18 Ati International Srl Floating point register stack management for CISC
JP2001195250A (ja) 2000-01-13 2001-07-19 Mitsubishi Electric Corp 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
US7124286B2 (en) 2000-01-14 2006-10-17 Advanced Micro Devices, Inc. Establishing an operating mode in a processor
US7191310B2 (en) 2000-01-19 2007-03-13 Ricoh Company, Ltd. Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers
US7353368B2 (en) 2000-02-15 2008-04-01 Intel Corporation Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support
US6654875B1 (en) 2000-05-17 2003-11-25 Unisys Corporation Dual microcode RAM address mode instruction execution using operation code RAM storing control words with alternate address indicator
US6647489B1 (en) 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US6571316B1 (en) 2000-06-16 2003-05-27 Transmeta Corporation Cache memory array for multiple address spaces
US6871273B1 (en) 2000-06-22 2005-03-22 International Business Machines Corporation Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US7873814B1 (en) 2000-12-22 2011-01-18 Lsi Corporation Microcode based hardware translator to support a multitude of processors
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US6889312B1 (en) 2001-04-02 2005-05-03 Advanced Micro Devices, Inc. Selective zero extension based on operand size
US6666383B2 (en) 2001-05-31 2003-12-23 Koninklijke Philips Electronics N.V. Selective access to multiple registers having a common name
US6807616B1 (en) 2001-08-09 2004-10-19 Advanced Micro Devices, Inc. Memory address checking in a proccesor that support both a segmented and a unsegmented address space
US7272622B2 (en) 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US20100274988A1 (en) 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US6898697B1 (en) 2002-03-29 2005-05-24 Advanced Micro Devices, Inc. Efficient method for mode change detection and synchronization
US7155598B2 (en) 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
US7051190B2 (en) 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US6920546B2 (en) 2002-08-13 2005-07-19 Intel Corporation Fusion of processor micro-operations
US6981131B2 (en) 2002-09-04 2005-12-27 Arm Limited Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
JP3958662B2 (ja) 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ
US7299343B2 (en) 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor
US20040064684A1 (en) 2002-09-30 2004-04-01 Kalluri Seshagiri P. System and method for selectively updating pointers used in conditionally executed load/store with update instructions
US20040148496A1 (en) 2003-01-27 2004-07-29 Thimmannagari Chandra Mohan Reddy Method for handling a conditional move instruction in an out of order multi-issue processor
EP1447742A1 (en) 2003-02-11 2004-08-18 STMicroelectronics S.r.l. Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor
US7437532B1 (en) 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
GB2402510A (en) 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system
US20040255103A1 (en) 2003-06-11 2004-12-16 Via-Cyrix, Inc. Method and system for terminating unnecessary processing of a conditional instruction in a processor
US7260815B1 (en) 2003-06-30 2007-08-21 Vmware, Inc. Method and apparatus for managing registers in a binary translator
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
TWI223756B (en) 2003-10-09 2004-11-11 Univ Nat Sun Yat Sen Automatic register backup/restore system and method
US9977674B2 (en) 2003-10-14 2018-05-22 Intel Corporation Micro-operation generator for deriving a plurality of single-destination micro-operations from a given predicated instruction
KR20060125740A (ko) 2003-10-24 2006-12-06 마이크로칩 테크놀로지 인코포레이티드 중앙처리장치에서 명령어 세트를 바꾸기 위한 방법 및시스템
GB2409059B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411973B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US20050188185A1 (en) 2004-02-20 2005-08-25 Grochowski Edward T. Method and apparatus for predicate implementation using selective conversion to micro-operations
US20050216714A1 (en) 2004-03-25 2005-09-29 Intel Corporation Method and apparatus for predicting confidence and value
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
US7478388B1 (en) 2004-04-21 2009-01-13 Vmware, Inc. Switching between multiple software entities using different operating modes of a processor in a computer system
US7647480B2 (en) 2004-07-27 2010-01-12 Arm Limited Handling of conditional instructions in a data processing apparatus
US7146491B2 (en) 2004-10-26 2006-12-05 Arm Limited Apparatus and method for generating constant values
US20060155974A1 (en) 2005-01-07 2006-07-13 Moyer William C Data processing system having flexible instruction capability and selection mechanism
US7210024B2 (en) 2005-02-10 2007-04-24 Qualcomm Incorporated Conditional instruction execution via emissary instruction for condition evaluation
CN100552622C (zh) 2005-03-31 2009-10-21 松下电器产业株式会社 运算处理装置
US7624256B2 (en) 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
US8082430B2 (en) 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
US7421566B2 (en) 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
JP4986431B2 (ja) 2005-09-29 2012-07-25 ルネサスエレクトロニクス株式会社 プロセッサ
US8904151B2 (en) 2006-05-02 2014-12-02 International Business Machines Corporation Method and apparatus for the dynamic identification and merging of instructions for execution on a wide datapath
JP2008071130A (ja) 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
US7925868B2 (en) 2007-01-24 2011-04-12 Arm Limited Suppressing register renaming for conditional instructions predicted as not executed
US7827390B2 (en) 2007-04-10 2010-11-02 Via Technologies, Inc. Microprocessor with private microcode RAM
US8166279B2 (en) 2007-05-03 2012-04-24 International Business Machines Corporation Method for predictive decoding of a load tagged pointer instruction
US8555039B2 (en) 2007-05-03 2013-10-08 Qualcomm Incorporated System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
US7793079B2 (en) 2007-06-27 2010-09-07 Qualcomm Incorporated Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US7818550B2 (en) 2007-07-23 2010-10-19 International Business Machines Corporation Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system
US7836278B2 (en) 2007-07-25 2010-11-16 Advanced Micro Devices, Inc. Three operand instruction extension for X86 architecture
TWI403954B (zh) 2007-08-17 2013-08-01 O2Micro Int Ltd 具有指令集之電子系統、微控制器及其指令執行方法
US8069340B2 (en) 2008-02-08 2011-11-29 Via Technologies, Inc. Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
US8090931B2 (en) 2008-09-18 2012-01-03 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
US9274796B2 (en) 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US8069339B2 (en) 2009-05-20 2011-11-29 Via Technologies, Inc. Microprocessor with microinstruction-specifiable non-architectural condition code flag register
CN101866280B (zh) 2009-05-29 2014-10-29 威盛电子股份有限公司 微处理器及其执行方法
US8301865B2 (en) 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US9501286B2 (en) 2009-08-07 2016-11-22 Via Technologies, Inc. Microprocessor with ALU integrated into load unit
US20110047357A1 (en) 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8826261B1 (en) * 2010-02-25 2014-09-02 Bloom Energy Corporation Programming processors through CAN interface without changing the boot mode select pins
GB2478726B (en) 2010-03-15 2013-12-25 Advanced Risc Mach Ltd Mapping between registers used by multiple instruction sets
GB2480285A (en) 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
US8479176B2 (en) 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
US20120124346A1 (en) 2010-11-15 2012-05-17 Arm Limited Decoding conditional program instructions
US8914624B2 (en) * 2010-12-22 2014-12-16 Silicon Laboratories Inc. Changing the reset state of a processor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US20120260073A1 (en) 2011-04-07 2012-10-11 Via Technologies, Inc. Emulation of execution mode banked registers
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
WO2012138950A2 (en) 2011-04-07 2012-10-11 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US20140095847A1 (en) 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
EP0747808A2 (en) * 1995-06-07 1996-12-11 International Business Machines Corporation Processor capable of supporting two distinct instruction set architectures
US6611909B1 (en) * 1997-12-02 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for dynamically translating program instructions to microcode instructions
CN101907984A (zh) * 2009-08-07 2010-12-08 威盛电子股份有限公司 指令处理方法以及其所适用的超纯量管线微处理器
CN101866279A (zh) * 2009-08-14 2010-10-20 威盛电子股份有限公司 微处理器及其相关方法

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993003A (zh) * 2014-07-21 2016-10-05 上海兆芯集成电路有限公司 同时无效化所有关联于一x86进程内容标识符的地址转译快取项目
CN105993003B (zh) * 2014-07-21 2019-04-09 上海兆芯集成电路有限公司 转译后备缓冲器、操作转译后备缓冲器的方法以及处理器
CN110515658A (zh) * 2014-07-30 2019-11-29 莫维迪厄斯有限公司 用于管理可变长度指令的方法和设备
US11379237B2 (en) 2015-06-05 2022-07-05 Arm Limited Variable-length-instruction processing modes
CN107667344A (zh) * 2015-06-05 2018-02-06 Arm 有限公司 可变长度指令处理模式
CN106445468A (zh) * 2015-10-08 2017-02-22 上海兆芯集成电路有限公司 利用处理器架构指令加载架构缓存器文件的微运算的执行单元的直接执行
CN106598545A (zh) * 2015-10-08 2017-04-26 上海兆芯集成电路有限公司 执行于处理器的架构程序与执行于处理器执行单元的非架构程序间关于共享资源的沟通机制
CN106598545B (zh) * 2015-10-08 2020-04-14 上海兆芯集成电路有限公司 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体
CN106445468B (zh) * 2015-10-08 2019-03-15 上海兆芯集成电路有限公司 利用处理器架构指令加载架构缓存器文件的微运算的执行单元的直接执行
CN108701049B (zh) * 2016-02-16 2021-12-31 微软技术许可有限责任公司 转换原子读取-修改-写入访问
CN108701049A (zh) * 2016-02-16 2018-10-23 微软技术许可有限责任公司 转换原子读取-修改-写入访问
CN107341116B (zh) * 2017-06-20 2019-12-27 太原鹏跃电子科技有限公司 基于arm的pc/104通信方法及其写入、读取时序
CN107341116A (zh) * 2017-06-20 2017-11-10 太原鹏跃电子科技有限公司 基于arm的pc/104通信方法及其写入、读取时序
CN109491307A (zh) * 2017-09-12 2019-03-19 欧姆龙株式会社 控制装置及控制方法
CN109491307B (zh) * 2017-09-12 2022-02-15 欧姆龙株式会社 控制装置及控制方法
CN111279308B (zh) * 2017-10-16 2023-09-26 微软技术许可有限责任公司 代码转换期间的屏障减少
CN111279308A (zh) * 2017-10-16 2020-06-12 微软技术许可有限责任公司 代码转换期间的屏障减少
CN107885504A (zh) * 2017-12-12 2018-04-06 北京四方继保自动化股份有限公司 一种异构的多平台系统控制逻辑一致性校验的方法
CN107885504B (zh) * 2017-12-12 2021-01-12 北京四方继保自动化股份有限公司 一种异构的多平台系统控制逻辑一致性校验的方法
CN108958798B (zh) * 2018-06-15 2021-04-20 上海兆芯集成电路有限公司 指令翻译电路、处理器电路及其执行方法
CN108958798A (zh) * 2018-06-15 2018-12-07 上海兆芯集成电路有限公司 指令翻译电路、处理器电路及其执行方法
CN110806899A (zh) * 2019-11-01 2020-02-18 西安微电子技术研究所 一种基于指令扩展的流水线紧耦合加速器接口结构
CN111813464A (zh) * 2020-08-31 2020-10-23 新华三半导体技术有限公司 一种芯片配置方法、监测模块及芯片
CN112269597A (zh) * 2020-10-23 2021-01-26 中国人民解放军战略支援部队信息工程大学 处理器指令异常行为检测方法及系统
CN112269597B (zh) * 2020-10-23 2023-03-24 中国人民解放军战略支援部队信息工程大学 处理器指令异常行为检测方法及系统
CN113220300A (zh) * 2021-04-29 2021-08-06 麒麟软件有限公司 一种应用于Android系统x86架构上的ARM指令集转换方法

Also Published As

Publication number Publication date
EP2624127A1 (en) 2013-08-07
TWI514266B (zh) 2015-12-21
US9317301B2 (en) 2016-04-19
CN104714778B (zh) 2018-04-06
EP2626782B1 (en) 2017-03-01
EP2667300A2 (en) 2013-11-27
US8880851B2 (en) 2014-11-04
EP2626782A3 (en) 2013-12-25
EP2508978A1 (en) 2012-10-10
EP2626782A2 (en) 2013-08-14
TW201303720A (zh) 2013-01-16
CN102707926B (zh) 2015-04-08
EP2667300A3 (en) 2013-12-25
US20150067301A1 (en) 2015-03-05
EP2624127B1 (en) 2016-09-28
CN104714778A (zh) 2015-06-17
EP2508978B1 (en) 2015-12-30
EP2667300B1 (en) 2017-03-01
US20120260067A1 (en) 2012-10-11

Similar Documents

Publication Publication Date Title
CN102707926B (zh) 可执行x86指令集及ARM指令集指令的微处理器及其运作方法
TWI450196B (zh) 非循序執行微處理器之條件儲存指令
US9898291B2 (en) Microprocessor with arm and X86 instruction length decoders
TWI474191B (zh) 控制暫存器對應於異質指令集架構處理器
TWI450188B (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
CN103530089B (zh) 微处理器及其操作方法
CN103218203A (zh) 具有条件指令的微处理器及其处理方法
EP2508982B1 (en) Control register mapping in heterogenous instruction set architecture processor
TWI478065B (zh) 執行模式備份暫存器之模擬

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant