CN104714778B - 操作微处理器的方法 - Google Patents

操作微处理器的方法 Download PDF

Info

Publication number
CN104714778B
CN104714778B CN201510115612.XA CN201510115612A CN104714778B CN 104714778 B CN104714778 B CN 104714778B CN 201510115612 A CN201510115612 A CN 201510115612A CN 104714778 B CN104714778 B CN 104714778B
Authority
CN
China
Prior art keywords
isa
instruction
microprocessor
arm
microcommand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510115612.XA
Other languages
English (en)
Other versions
CN104714778A (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
Publication of CN104714778A publication Critical patent/CN104714778A/zh
Application granted granted Critical
Publication of CN104714778B publication Critical patent/CN104714778B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/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/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 or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种操作微处理器的方法,包括:检测已经发送信号以重置一微处理器,其中由微处理器执行所述检测步骤;响应于所述检测已经发送信号以重置微处理器,确定x86ISA和ARM ISA中的哪一个被微处理器的一指标指示为微处理器的启动ISA,其中由微处理器执行所述确定步骤;初始化由启动ISA定义的微处理器的一架构状态,其中由微处理器执行所述初始化步骤;将在重置之后由微处理器从架构存储空间撷取的初始ISA指令转译为微指令以作为启动ISA的指令,其中由微处理器的一硬件指令转译器执行所述转译步骤;以及执行所述微指令以产生由启动ISA定义的结果,其中由耦接到硬件指令转译器的微处理器的一执行管线执行所述执行步骤,其中该指标包括微处理器的微编码中的预设值。

Description

操作微处理器的方法
本案是申请日为2012年4月9日、申请号为201210104287.3、发明名称为“可执行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)控制器,如果辅助存储器(AuxiliaryStorage)预先载入需要的信息,其可用于1401模式。此外,在开发高阶语言的软件时,硬件开发者对该软件在旧硬件上编译可能有很少或是无法控制,且软件开发者可能没有动机为了新的硬件去重新编译原始码,特别是如果软件开发者与硬件开发者不是属于同一个企业用户时。Silberman以及Ebcioglu提出一种增进现行的("基底(base)")复杂指令集计算机(Complex Instruction Set Computer,CISC)架构(例如IBMS/390)的软件技术,其藉由将该软件执行于一个精简指令集计算机(Reduced Instruction Set Computer,RISC)、超纯量、以及超长指令字(Very Long Instruction Word,VLIW)架构("原生(native)")的系统上,并藉由包含一个执行原生码(native code)的原生引擎以及一个执行基底目标码(object code)的迁移引擎(migrant engine),其取决于将目标码译为原始码的译码软件的有效性,而视需要切换于多种编码之间,可参考「"An Architectural Framework forSupport Heterogeneous Instruction-Set Architecture,"Siberman and EbciogluComputer,June 1993,No.6.Van Dyke et al.」,其揭示一种具有执行管线(executionpipeline)的处理器,以执行原生RISC程序指令且亦通过硬件转译及软件转译的结合将x86程序指令译为原生RISC指令,此技术亦揭示于2006/5/16所公告的U.S.patent No.7,047,394之中。Nakada等人提出一种异质同步多执行绪处理器(Simultaneous Multi-threadingProcessor,SMT),其具有针对不规则程序(例如OS)的进阶RISC机器(Advanced RISCMachine,ARM)架构前端管线(front-end pipeline),以及针对多媒体应用程序的FujitsuFR-V VLIW架构前端管线,其提供具有附加VLIW队列(queue)的FR-V VLIW后端管线(back-end pipeline),以保持来自前端管线的指令,可参考「"OROCHI:A Multiple InstructionSet SMT Processor,"Proceeding of the First International Workshop on NewFrontiers in High-performance and Hardware-aware Computing(HipHaC'08),LakeComo,Italy,November 2008(In conjunction with MICRO-41),Buchty and Weib,eds,Universitatsverlag Karlsruhe,ISBN 978-3-86644-298-6」。其所提出的方法是为了减少在异质系统芯片(System on Chip,SOC)装置上的总系统覆盖区(total systemfootprint),例如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图元(primatives)至主存储器的一部份,此部分是旧架构所无法看到,以避免在相同的旧架构编码片段的序列后续实例(instance)上发生再转译(re-translation)的情况。DAISY包含快速的编译最佳化演算法,以增加效能。QEMU为一个机器仿真器,其包含一软件动态转译器。QEMU模仿不同主机上的一些CPU(例如x86 PowerPC、ARM、SPARC、Alpha以及MIP)。如其发明人所述,“动态转译是在运转上执行目标CPU指令至主机指令集的转换,所产生的二进制编码的结果则储存在一个转译快速缓冲存储器(cache)以供重复使用。QEMU相较于其他动态转译器简单,因为QEMU将GNU C编译器离线产生的机器编码连成一串”。Fabrice Bellard,USENIX Association,FREENIX Track于2005USENIXAnnual Technical Conference所述:QEMU是一个快速且可携带的动态转译器,亦可参考Lee Wang Hao,University of Adelaide,June 19,2009的论文:"ARM Instruction SetSimulation on Multi-Core x86 Hardware"。然而,尽管以转译器为基底的软件的解答可能针对计算需要的子集提供足够的效能,其未必提供许多使用者需要的效能。
静态的二进制转码为另一个技术具有高效能的潜力的技术,然而仍有技术上的考量,例如自我修改程序码(self-modifying code)、仅在计算机运作时才得知的相关数值的非直接分支(indirect 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 指令读取单元及分支预测器
116 ARM PC
118 x86 IP
122 组态寄存器
124 x86 ISA及ARM ISA指令
126 微指令
128 微指令结果
132 指令模式
134 读取地址指标
136 环境模式指标
202 指令格式器
204 简单指令转译器
222 x86 SIT
224 ARM SIT
242 格式化的x86 ISA及ARM ISA指令
252 微编码地址
206 复杂指令转译器
232 微程序计数器
234 微编码只读存储器
235 指令间接寄存器
236 微序列器
237 微转译器
244、246 微指令
247 ROM指令
212 多工器
302 预先解码器
304 IBQ
306 长度解码器及管线逻辑器
308 MQ
312 MUXES
314 FIQ
322 ARM指令集状态
401 微指令队列
402 寄存器配置表
404 指令配送器
406 指令保留站
408 指令发出单元
412 整数/分支单元
414 介质单元
416 载入/储存单元
418 浮点单元
422 前序缓冲器
424 执行单元
602~654 微处理器的运算步骤流程
100 核心0、核心1
892 微指令高速缓存存储器
具体实施方式
术语汇编
指令集定义为一组二进制编码值对应到微处理器执行的运算的映射(mapping),其中该二进制编码值为机器语言指令。典型地,机器语言程序以二进制编码,尽管可能采用其他系统,例如一些较旧的IBM计算机的机器语言程序以十进位编码,虽然他们最终以物理讯号的集合来呈现,而这些物理讯号包含的检测电压为二进制的值。举例来说,操作机器语言指令可命令微处理器执行如下述:将第一寄存器的运算元加至第二寄存器的运算元,并将结果写入第三寄存器、将存储器地址0x12345678中的运算元减去指令规范的直接运算元(immediate operand),并将结果写入第五寄存器、以第七寄存器内的位个数字位移第六寄存器内的值、如果在该指令之后0标志被设定,分支到36位后的指令、从存储器地址0xABCD0000载入该值至寄存器8。如此,指令集定义的二进制值是每个机器语言指令必定驱使微处理器去执行所需的运算。可理解的是,指令集定义的二进制值对应到微处理器运算的映射,并非意味着单一二进制值映射到单一微处理运算。更具体来说,一些指令集中,多个二进制值可能映射到相同的微处理运算。
指令集架构(Instruction set architecture,ISA),在微处理器的家族的关系(context)中,包括(1)一个指令集(2)一个资源集(例如寄存器或存储器中的定址模式),该资源集是通过指令集的指令来存取,以及(3)一个例外集(set of exceptions),该例外集是由微处理器对应于指令集的指令处理结果所产生,该指令处理结果例如除以零、页面错误(page fault)、违反存储器保护。由于程序设计师,例如组合程序设计师或编译师,欲产生一机器语言程序可在微处理器家族上执行,因此微处理器家族的制造商典型上会在程序设计者手册中定义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发展过程中,作为SSE延伸的一部份的一组128位XMM寄存器曾被引入Intel Pentium III处理器家族,而且x86 ISA机器语言程序也被发展为使用XMM寄存器以增加效能,尽管现今的x86 ISA机器语言程序已不使用SSE延伸的XMM寄存器。此外,其他制造商已经设计且制造出可执行x86 ISA机器语言程序的微处理器。举例来说,AMD(Advanced Micro Devices)以及威盛电子(VIA)已将新的特征,例如AMD 3DNOW!SIMD向量处理指令以及VIA挂锁安全引擎随机数字产生器(PadlockSecurity Engine random number generator)及进阶解码引擎特征,其中的每一个皆是由一些x86 ISA机器语言程序所使用,但在现今的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机器语言指令(例如一x86ISA或ARM ISA机器语言指令)来作为输入,并对应地将一个或多个微指令直接输出至该微处理器的一执行管线。执行管线执行该一个或多个微指令的结果,为该ISA指令定义的结果。因此,该一个或多个微指令藉由该执行管线的序列执行「实行」该ISA指令;也就是,由硬件指令转译器输出的将执行微指令,并由执行管线在执行由ISA指令定义的输入端所定义的ISA指令规范的运算后,以产生由ISA指令定义的一结果。因此,硬件指令转译器可说是将ISA指令转译成一个或多个实行微指令。目前的揭示描述一微处理器的多个实施例,该微处理器包含一硬件指令转译器,其将x86 ISA指令及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指令的存储地址。特别地是,一指令高速缓存存储器所存取是基于维持于指令地址寄存器(例如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 programcounter,ARM PC)寄存器116(以下称ARM ISA定义程序计数器)、一由x86 ISA定义的指令指标(x86 ISA-defined instruction pointer,x86 IP)118(以下称x86 ISA定义指令指标)以及组态寄存器122,其中硬件指令转译器104用以接收来自指令高速缓存存储器102的x86ISA指令及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随后将最新读取的x86 ISA及ARM ISA机器语言指令储存在指令高速缓存存储器102中。指令读取单元及分支预测器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预测到分支将发生在所读取的数据段中、以及对应于一非由指令读取单元及分支预测器114所预测而取得执行分支指令,由执行管线112对ARMPC 116及x86 IP 118进行更新。对应于一控制流程事件,指令读取单元及分支预测器114将读取地址分别更新为例外操作装置地址、预测目标地址或执行目标地址。另一种实施例为,指令高速缓存存储器102是一个联合高速缓存存储器,其储存ISA指令124及数据。值得注意的是,在联合高速缓存存储器的实施例中,尽管联合高速缓存存储器的存取可能根据一个载入/储存地址来读取/写入数据,但当微处理器读取来自联合高速缓存存储器的ISA指令124时,联合高速缓存存储器的存取是依据ARM PC 116以及x86 IP 118的值,而非一载入/储存地址。指令高速缓存存储器102可为一个随机存取存储器(randomaccess memory,RAM)装置。
指令模式指标132描述的是关于微处理器100是否正在读取、格式化/解码、以及转译x86 ISA或ARM ISA指令124为微指令126的指标。此外,执行管线112及存储器子系统108接收会影响执行该微指令126的指令模式指标132,尽管只是微指令集中的相对小的子集。x86 IP 118维持执行下一个要执行的x86 ISA指令124的存储器地址,且ARM PC 116维持下一个要执行的ARM ISA指令124的存储器体地址。为了控制程序的流程,当微处理器100分别执行x86及ARM机器语言程序时,微处理器100更新x86 IP 118以及ARM PC 116为下一序列指令、分支地址指令的目标地址、或例外处理器地址。当微处理器100执行x86及ARM ISA机器语言程序的指令时,其读取来自系统存储器的机器语言程序的ISA指令,并将此ISA指令取代指令高速缓存存储器102中最近最少被读取(less recently fetched)的指令,然后执行该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或ARM ISA语意运用于微处理器100运算的不同执行环境方面,例如虚拟存储器、例外、高速缓存器存储器控制以及全域执行时间保护(global execution-time protection)之中。如此,指令模式指标132及环境模式指标136一同产生执行的多个模式。在第一模式中,指令模式指标132及环境模式指标136皆指示x86 ISA,微处理器100如同标准的x86 ISA处理器般的运作。在第二模式中,指令模式指标132及环境模式指标136皆指示ARM ISA,微处理器100如同标准的ARMISA处理器般运作。在第三模式中,指令模式指标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将实现x86 ISA或ARM ISA指令124。换句话说,聚集执行(collective execution)将经由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或ARMISA指令124的一个或多个即将执行的微指令126可由硬件指令转译器104以一次或依序的方式提供至执行管线112。有利的是,硬件指令转译器104直接地将微指令126提供至执行管线112,而不需要将他们储存至存储器。根据一实施例,在图1的微处理器100中,当微处理器100执行x86 ISA或ARM ISA指令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及ARM ISA。更具体地来说,微指令集在许多方面有别于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)不具有一对一的对应。如果二进制运算码值到运算映射在微指令集及x86ISA或ARM ISA指令集中恰巧是相同的,一般来说,它们之间仍不具有一对一的对应。第三,微指令集的微指令字段与x86 ISA或ARM ISA指令集的指令字段间不具有一对一的对应关系。
整体来说,微处理器100可执行x86 ISA及ARM ISA机器语言程序指令。然而,执行管线112不能执行x86 ISA及ARM ISA机器语言程序指令本身,而是能执行微处理器100的微架构的微指令集的微指令126,也就是由x86 ISA及ARM ISA指令所转译的指令。然而,尽管架构有别于x86 ISA及ARM ISA,另一实施例中,微指令集以及其他微架构特有的资源可揭示予使用者,也就是说,在另一个实施例中,微架构可有效地作为x86 ISA及ARM ISA之外的第三ISA,并由微处理器100执行其机器语言程序。
下列表1描述根据本发明的微处理器100的一实施例的微指令集的微指令126的一些字段。
表1
表2
微处理器100亦包括一些微架构特定资源,例如微架构特定的一般用途寄存器、不为x86 ISA或ARM ISA所见的介质寄存器以及片段寄存器(例如用于寄存器重新命名或微编码)及控制寄存器,以及以下将详述的私有RAM(PRAM)。此外,微架构可产生例外,其可视为微例外(其并非由x86 ISA或ARM ISA规范故在x86 ISA或ARM ISA中不可见),以执行一微指令126及相关微指令126的一重新执行(replay),例如在以下情况:执行管线112假设载入命中(load hit)但发生载入错误因而重新执行该载入的微指令126;发生一TBL错误(miss),在分页查询(page table walk)以及TBL填满之后,重新执行微指令126;在执行管线112标准化运算元之后,浮点微指令126接收一非规格化(denormal)的运算元,其推定为需要被重新执行的标准;执行一载入微指令126,但是在其之后检测到一个与较旧地址产生碰撞(older address-colliding)的储存微指令126,必须重新执行载入微指令126。可以理解的是,表1中所列的字段、表2中所列的微指令以及微架构特定资源、及微架构特定的例外状况仅为举例而已,仍有其他情况未予以列举。
寄存器文件106可包括硬件寄存器,该硬盘寄存器藉由微指令126维持来源和/或目的运算元。执行管线112将其结果129写入寄存器文件106,并为微指令126接收来自寄存器文件106的运算元。硬件寄存器指示由x86 ISA定义及由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机器语言程序改变指令模式指标132的值为x86 ISA,且将控制权传送至x86机器语言例行程序以执行一功能时可能会有利,因为x86可支持某些指令并可相较于在ARM ISA中较快地执行一特定的运算,而ARM程序可将需要的数据通过寄存器文件106中的的共享寄存器以提供给x86程序。相反地,x86程序可在寄存器文件106的共享寄存器中提供执行结果,于是ARM程序将可在x86程序返回时看见它们。类似地,在x86机器语言运算系统下执行x86机器语言程序,可能改变指令模式指标132为ARMISA,且将控制权传送至ARM机器语言程序;x86程序可将需要的数据通过寄存器文件106中的共享寄存器中给ARM程序,且ARM程序可在寄存器文件106的共享寄存器中提供执行结果,于是x86程序将可看见由ARM程序所返回的结果。第16个32位寄存器,举x86 R15D寄存器说明,其并非由ARM R15寄存器所共享,因为ARM R15为ARM PC寄存器116,其是独立被运用的实例(sepratively instatiated)。此外,在一实施例中32个32位ARM VFPv3浮点寄存器共享x86的16个128位XMM0到XMM15寄存器以及16个128位的进阶SIMD(“氖(Neon)”)寄存器的32位部分。寄存器文件106亦举标志寄存器(即为x86EFLAGS寄存器及ARM条件标志寄存器),且由x86 ISA及ARM ISA定义不同的控制及状态寄存器为例,架构控制及状态寄存器包括以x86架构特定模型寄存器(Model SpecificRegisters,MSRs)及ARM保存的共同处理器(coprocessor)(8-15)寄存器。寄存器文件106亦可举非架构寄存器,例如使用于寄存器重新命名及微编码只读存储器234使用的非架构一般用途寄存器、以及非架构x86 MSRs及执行定义(implementation-defined)或供应商定义的ARM共同处理器寄存器。寄存器文件106将对照图5详述。
存储器子系统108包含一阶层式高速缓存存储器(在一实施例中包含第一层(Level-1)指令高速缓存存储器102、第一层数据高速缓存存储器、以及共用的第二层(Level-2)高速缓存存储器)。存储器子系统108亦包含不同的存储器请求队列,例如载入、储存、填充、窥探(snoop)、写入结合(write-combine)缓冲区。存储器子系统108亦可包含一存储器管理单元,其包含后援(lookaside)缓冲区(TLBs),其最好与指令与数据TLBs分开。存储器子系统108也包含一表格通道引擎(table walk engine),用以因应于TLB错误的状况来取得虚拟至实体的位址转换。虽然所述者与图1的所示不同,但指令转译高速缓存存储器102逻辑上也是存储器子系统108的一部分。存储器子系统108的配置为x86与ARM机器语言程序所共享的存储空间,而x86与ARM机器语言程序可通过此存储空间有效的进行沟通。
存储器子系统108通过指令模式指标132以及环境模式指标136,而得知将在何种适当的ISA环境中执行不同的运算。举例来说,存储器子系统108可根据指令模式指标132指示x86或ARM ISA的情况来执行特定的存储器存取违反确认(例如限制违反确认)。举另一个例子来说,对应环境模式指标136的变化,存储器子系统108清除TLBs;然而,对应至指令模式指标132的变化,存储器子系统108并不清除TLBs,而是在指令模式指标132与环境模式指标136其中的一个指示x86而另一个指示ARM时,藉由启动上述的第三或第四模式中具有较佳执行成效者实现所需。举另一个例子,对应至一个TLB错误的助况,表格走道引擎执行分页表搜寻,并根据环境模式指标136指示x86还是ARM ISA,来决定利用x86分页表或ARM分页表以取出TLB。举另一个例子,如果状态指标136指示x86 ISA,则存储器子系统108将检查影响高速缓存手段(例如CR0 CD以及NW位)的x86 ISA控制寄存器的架构状态;如果环境模式指标136指示ARM ISA,则存储器子系统108检查ARM ISA控制寄存器的架构状态(例如SCTLRI以及C位)。举另一个例子,如果状态指标136指示x86 ISA,则存储器子系统108将检查影响存储器管理(例如CR0 PG位)的x86控制寄存器的架构状态;如果环境模式指标136指示ARMISA,则存储器子系统108检查适当的ARM ISA控制寄存器的架构状态(例如SCTLR M位)。举另一个例子,如果状态指标136指示x86 ISA,存储器检查影响对准检查(alignmentchecking)(例如CR0 AM位)的x86 ISA控制寄存器的架构状态;如果环境模式指标136指示ARM ISA,则存储器检查适当的ARM ISA控制寄存器的架构状态(例如SCTLR A位)。举另一个例子,如果状态指标136指示x86 ISA,则存储器子系统108(如同硬件指令转译器104因应优先指令)检查指定当前优先级别(current privilege level,CPL)的x86 ISA控制寄存器的架构状态;如果环境模式指标136指示ARM ISA,则存储器子系统108检查指示使用者或优先模式的ARM ISA控制状态器的架构状态。然而,在一实施例中,微处理器100的x86 ISA以及ARM ISA共享具有类似的功能的控制位/寄存器,而非对每一个ISA分别配置控制位/寄存器。
尽管分开地显示,组态寄存器122可视为寄存器文件106的一部份。组态寄存器122包括一全域组态寄存器,在关于x86 ISA及ARM ISA的不同方面,其控制微处理器100的运算,例如致能或失效的不同特征。全域组态寄存器可用以让微处理器100执行ARM ISA机器语言程序的能力失效,亦即使微处理器100成为一个x86专用的微处理器100,包括使有关其他ARM定义的能力失效,例如本文提到的启动x86以及重置至x86指令124、以及此处所称的由执行所定义的共同处理器寄存器。全域组态寄存器亦可用于使微处理器100执行x86 ISA机器语言程序的能力失效,亦即使微处理器100成为ARM专用的微处理器100,且使x86相关的能力失效,例如本文提到的启动ARM以及重置至ARM指令124、以及此处所称的新的非架构(non-architectural)MSRs。在一实施例中,微处理器100是伴随着预设的组态设定(configuration ssetting)初始化地制造,例如在只读存储器234中的写入硬件编码值,其为微编码只读存储器234在初始化时间时用来组态微处理器100,亦即写入至全域组态寄存器122。然而,一些全域组态寄存器122是由硬件设定而非由微编码只读存储器234所设定。此外,微处理器100包括可由微编码只读存储器234所读取的熔丝,其可藉由烧断来修改预设组态值。在一实施例中,微编码只读存储器234读取熔丝,并且以预定值及熔丝值来执行一异或(exclusive-OR)运算,且使用该运算结果写入全域组态寄存器122。再者,对熔丝值的修改亦可经由微编码只读存储器234的修补(patch)而实现。假设微处理器100可用以执行x86及ARM程序,则全域组态寄存器亦可被使用以决定微处理器100(或对应至图7所述的多核心部分之中的微处理器100)于重置时将被启动为x86或ARM微处理器、或对应至x86形式的INIT,其在对应至图6的说明详述。全域组态寄存器122亦可包括因应架构控制寄存器而提供的初始预设值的位,举例来说ARM ISA SCTLT以及CPACR寄存器。在一个多核心的实施例中,如对应至图7的说明所述,尽管每个核心是分开地组态,仍存在着一个单一的全域组态寄存器,举例来说,可在指令模式指标132及环境模式指标136皆分别设定至x86或ARM而启动为x86或ARM核心;此外,启动ARM指令126及启动x86指令126可用以动态地切换于x86及ARM指令模式指标132之间。在一实施例中,全域组态寄存器可通过x86 RDMSR指令读取至一新的非架构MSR,且其中控制位的一部份可通过x86 WRMSR指令读取至新的非架构MSR,且全域组态寄存器可通过ARM MCR/MCRR指令读取至一个映射至新的非架构MSR共同处理器寄存器,且其中控制位的一部份可通过ARM MRC/MRRC指令读取到映射至新的非架构MSR的ARM共同处理器寄存器。
全域组态寄存器122亦可包括不同的控制寄存器,其在非x86/ARM特定的不同方面控制微处理器100的运算,在此处亦可考虑为全域控制寄存器、非ISA控制寄存器、非x86/ARM控制寄存器、一般的(generic)控制寄存器及其类似者。在一实施例中,这些控制寄存器可通过x86 RDMSR/WRMSR指令存取至非架构MSRs,以及通过ARM MCR/MRC(或MCRR/MRRC)指令存取至新的执行定义共同处理器寄存器。举例来说,微处理器100包含非x86/ARM特定的控制寄存器,其决定精细度(fine-grained)高速缓存控制,亦即较由x86 ISA及AMR ISA控制寄存器所提供的更为精细的高速缓存控制。
在一实施例中,微处理器100提供ARM ISA机器语言程序,通过直接映射至对应的x86 MSRs的执行定义ARM ISA共同处理器寄存器来存取至x86 ISA MSRs。MSR地址是由ARMISA MSRs寄存器所指定,数据是依据MRC/MRRC/MCR/MCRR指令的指示从ARM ISA寄存器读取或写入至ARM ISA寄存器。在一实施例中,MSRs的子集合是以密码保护的,亦即,当指令尝试存取至MSR时必定提供一密码;在这个实施例,密码是在ARM R7:R6寄存器里指定。假如存取引起一x86一般保护错误,则微处理器100引起一ARM ISA UND例外。在一实施例中,ARM共同处理器4(地址:0,7,15,0)是作为存取对应的x86 MSRs。
微处理器100亦可包括一中断控制器,该中断控制器耦接于执行管线112。在一实施例中,中断控制器为一x86形式进阶可编程中断控制器(x86-style advancedprogrammable interrupt controller,APIC),APIC将x86 ISA中断映射到ARM ISA中断。在一实施例中,x86INTR映射到一个ARM IRQ中断讯号;x86 NMI映射到一个ARM IRQ中断;x86INIT从任何一个ISA(x86或ARM)中的微处理器100开始引起一个INIT重置序列,其原本是从一个硬件重置开始;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用以存取总线接口单元(businterface 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亦可在执行管线112中包括一个加密单元(encryption unit)(图未示)。在一实施例中,加密单元实质上类似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 USINGBRANCH PREDICTION TO EFFICIENTLY EXECUTE CONDITIONAL NON-BRANCH INSTRUCTIONS"所述。根据一实施例,硬件指令转译器104亦可包括一静态分支预测器,该静态分支预测器用以根据运算码、条件编码类型、后退/前进等等内容来预测对应x86及ARM分支指令的方向及分支目标地址。
其他不同的实施例亦可考虑执行x86 ISA以及ARM ISA定义的功能的不同组合。举例来说,在一实施例中,微处理器100执行ARM、Thumb、ThumbEE以及Jazelle指令集状态,但提供一个Jazelle延伸的普通实施(trivial implementation);以及执行下列指令:Thumb-2、VFPv3-D32、Advanced SIMD(“Neon”)、多重处理、以及VMSA;且不执行下列延伸:安全性延伸、快速环境切换延伸、ARM除错功能(然而,x86除错功能可通过ARM MCR/MRC由ARM程序存取至新的执行定义共同处理器寄存器)、效能监测计数器(然而,x86效能计数器可通过新的执行定义共同处理器寄存器由ARM程序存取)。举例来说,在一实施例中,微处理器100将ARMSETEND指令视为一个NOP,且仅支持Little-endian数据格式。举另一个例子,在一个实施例中,微处理器100并不执行x86 SSE 4.2的能力。
其他实施例亦被考虑,其中微处理器100为一个商业用微处理器的增版(enhancement),其由台湾/台北的威盛所制造的VIA NanoTM处理器,该处理器可执行x86ISA机器语言程序,但不能执行ARM ISA机器语言程序。Nano微处理器包括一高效能寄存器重新命名、超纯量指令发送、非循环执行管线以及一硬件转译器,该硬件转译器将x86 ISA指令转译为由执行管线所执行的微指令。Nano硬件指令转译器实质上可如本文提到,增强为可将ARM ISA机器语言指令转译为除了x86机器语言指令外,还可转译为执行管线可执行的微指令。硬件指令转译器的增强可包括简单指令转译器及复杂指令转译器,其包括微编码。此外,新的微指令可能增加至微指令集,以支持ARM ISA机器语言指令转为微指令的转译,且执行管线可增强为执行新的微指令。另外,Nano寄存器文件以及存储器系统实质上可如本文所述增强为支持ARM ISA,其包括某些寄存器的共享。分支预测单元亦可增强为如本文所述的是在x86分支之外复提供ARM分支指令预测。有利的是,一个相对轻微的修改量对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),以支持x86 PC形式系统环境中执行ARM ISA机器语言程序。
现在请参考图2,其显示图1的硬件指令转译器104的较详细的方块图。硬件指令转译器104包括硬件、或说是晶体管的集合。硬件指令转译器104包括一指令格式器202、一简单指令转译器(simple instruction translator,SIT)204、一复杂指令转译器(complexinstruction translator,CIT)及一多工器(MUX)212,该指令格式器202接收指令模式指标132以及来自图1中的指令高速缓存存储器102的x86 ISA区段及ARM ISA指令字节124,且指令格式器202输出格式化x86 ISA及ARM ISA指令242;该简单指令转译器(SIT)204接收指令模式指标132及环境模式指标136,并输出即将执行的微指令244以及微编码地址252;该复杂指令转译器(CIT)206(亦可视为一个微编码单元)接收微编码地址252及环境模式指标136,且提供即将执行的微指令246;而多工器212通过一个输入点(input)接收来自简单指令转译器204的微指令244,且通过另一个输入点接收来自复杂指令转译器206的微指令246,该多工器212提供即将执行的微指令126至图1中的执行管线112。微指令格式器202将于对照图3的说明详述。简单指令转译器204包括一个x86 SIT 222及一个ARM SIT 224。复杂指令转器206包括一个用以接收微编码地址252的微程序计数器(micro-programcounter,micro-PC)232、一用以接收来自微程序计数器232的一只读存储器地址254的微编码只读存储器(microcode read only memory,microcode ROM)234、一用以更新微程序计数器232的微序列器(microsequencer)236、一指令间接寄存器(instruction indirectionregister,IIR)235、以及一用以产生执行微指令246并由复杂指令转译器206所输出的微转译器237。由简单指令转译器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,其指出本身是实行于复杂ISA指令424中的最后一个微指令126时,RAT402控制选择输入248,以使多工器212再从简单指令转译器204中选择微指令244。此外,当重排序缓冲器422(参阅图4)准备要引退一例如带有「指示微指令126曾造成一例外状况」的状态的微指令126时,重排序缓冲器422控制选择输入248,以使多工器212从复杂指令转译器206中选择微指令246。
简单指令转译器204接收ISA指令242。如果指令模式指标132指示为x86,简单指令转译器204将ISA指令242解码成x86 ISA指令;如果指令模式指标132指示为ARM,简单指令转译器204将ISA指令242解码成ARM ISA指令。简单指令转译器204还确定ISA指令242为简单或复杂ISA指令。一简单ISA指令242为一个简单指令转译器204为了执行简单ISA指令242而发出的所有即将执行微指令126;也就是复杂指令转译器206无法提供任何即将执行微指令126至简单ISA指令242中。反之,一复杂ISA指令124需要复杂指令转译器206来提供至少部分的(即使非全部)即将执行微指令126。在一实施例中,对于ARM与x86 ISA指令集的指令124的一子集而言,简单指令转译器204发出用以执行x86/ARM ISA指令126的微指令244的一部份,然后转移控制至复杂指令转译器206,复杂指令转译器206尔后发出执行x86/ARMISA指令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发出,特别是倾向于被ARM ISA及x86 ISA机器语言程序高频率地执行的ISA指令124,只有相对小比例的即将执行微指令246需要由复杂指令转译器206来提供。依据一实施例,由复杂指令转译器206来主要实施的x86指令的范例为RDMSR/WRMSR、CPUID、复杂数学指令(例如FSQRT及非超越指令(transcendental instructions))、及IRET指令;由复杂指令转译器206来主要实施的ARM指令的范例为MCR、MRC、MSR、MRS、SRS、及RFE指令。前述所列举的绝非详尽,仅是指出可由复杂指令转译器206实行的ISA指令的种类。
当指令模式指标132指示为x86时,x86 SIT222将x86 ISA指令242解码,并将x86ISA指令242转译成即将执行微指令244;当指令模式指标132指示为ARM时,ARM SIT224将ARM ISA指令242解码,并将ARM ISA指令242转译成即将执行微指令244。在一实施例中,简单指令转译器204为一布林逻辑门的区块(block),可由熟知的合成工具来合成出。在一实施例中,x86 SIT222及ARM SIT224为分离的布林逻辑门区块;然而,在另一实施例中,x86SIT222及ARM SIT224为单一个的布林逻辑门区块。在一实施例中,简单指令转译器204于每一时钟周期中至多转译三个ISA指令242,以及提供至多六个即将执行微指令244至执行管线112。在一实施例中,简单指令转译器204包含三个子转译器(未显示),其各自转译一单一格式化指令242:第一子转译器可转译需至多三个即将执行微指令126的一格式化指令242;第二子转译器可转译需至多二个即将执行微指令126的一格式化指令242;而第三子转译器可转译需至多一个即将执行微指令126的一格式化指令242。在一实施例中,简单指令转译器204包含一硬件状态机器,其可使简单指令转译器204在多个时钟周期中,输出多个执行一ISA指令242的微指令244。
在一实施例中,简单指令转译器204还根据指令模式指标132和/或环境模式指标136,来执行各种例外检测。举例而言,如果指令模式指标132指示为x86,且x86 SIT222解码出一对于为了x86 ISA而言为无效的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,并保持在微程序计数器232中。通常地,因应简单指令转译器204对一复杂ISA指令242进行解码,微程序计数器232接收来自简单指令转译器204的微程序计数器232的初始值252。在其它例子中,例如因应一重置或例外,微程序计数器232分别接收重置微编码例行程序的地址、或是适当的微编码例外处理程序的地址。因应一控制类型微指令126的执行,例如一分支指令,微序列器236通常依据ROM指令247至微编码例行程序的序列的大小、或是ROM指令247至执行管线112产生的一目标地址的大小来更新微程序计数器232,以对微编码只读存储器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接收IIR_235的内容,且从微编码只读存储器234接收ROM247指令。对应地,微转译器237产生即将执行微指令246。微转译器237依据从IIR_235接收的信息(例如依据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),ARMISA指令可为2位或4位长度的指令,且可为2位或4位对齐。因此,指令格式器202从指令字节124的串流中,取出有不同的x86 ISA及ARM ISA指令,该指令字节124是由从指令高速缓存存储器102接收而来的数据区段组成。也就是,指令格式器202格式化x86 ISA及ARM ISA指令字节的串流,此举大大简化图2的简单指令转译器204的「解码及转译ISA指令124」的复杂工作。
指令格式器202包含一预先解码器302,其在指令模式指标132指示出x86时预先将指令字节124解码成x86指令字节、且指令模式指标132指示出ARM时预先将指令字节124解码成ARM指令字节,用以产生预先解码信息。一指令位队列(instruction byte queue,IBQ)304接收ISA指令124的数据区段以及由预先解码器302所产生的相关预先解码信息。
长度解码器及管线逻辑器306的一阵列接收IBQ304的底部项目的内容,也就是ISA指令124的数据段以及相关预先的解码信息,该长度解码器及管线逻辑器306还接收指令模式指标132以及ARM ISA指令集状态322。在一实施例中,该ARM ISA指令集状态322包含ARMISA 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指令及其相关的预先解码及解码信息、再将它们提供至一格式化指令队列(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,以产生ARM ISA指令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)。RAT_402及执行管线424接收指令模式指标132。
微指令队列在「硬件指令转译器104产生即将执行微指令126的速率」与「执行管线112执行微指令126的速率」不同的情况下401运作如一缓冲器。在一实施例中,微指令队列401包含一M至N可压缩的微指令队列,其使得执行管线112可在一特定时钟周期中,从硬件指令转译器104中接收至多M个微指令126(一实施例中,M为六个),且还可储存所接收的微指令126在一宽度为N的队列结构中(一实施例中,N为三个),以在每一时钟周期中提供至多N个微指令126至RAT_402,RAT_402可在每一时钟周期中,处里至多N个微指令126。微指令队列401为可压缩的,因为在队列的项目(entry)没有留下空洞,所以当微指令126从硬件指令转译器104接收来时,无论是在哪一个特定时钟周期中接收到微指令126,都会将微指令126连续地填入空的序列项目中。此举有利于使执行管线424(于图4中)高度利用,以达到高指令产出,且相对于不可压缩的M宽度或N宽度指令队列优点更形显著。更特别地,不可压缩的N宽度队列会需要硬件指令转译器104(特别是简单指令转译器204)于随后的一时钟周期中,将已经在前个时钟周期中转译过的一个或多个ISA指令124重新转译,这是因为不可压缩的N宽度队列在每一个时钟周期中不能接收超过N个微指令126,而重新转译浪费电能。但是,虽然不可压缩的N宽度队列不需要简单指令转译器204来重新转译,但不可压缩的N宽度队列会在队列项目中产生空洞,此举显得浪费且会需要较多的项目列,因此需要一较大、且较耗电的队列,才能实现相对的缓冲能力。
RAT402从微指令队列401接收微指令126,且产生关于位于微处理器100中、尚未处理(pending)的微指令126的附属信息,且执行寄存器重新命名,以增加微指令平行运算,以利用执行管线112的超纯量(superscalar)处理器、以及非循环(out-of-order)执行能力。如果ISA指令124指示出x86,然后RAT402产生附属信息,以及执行与微处理器100的x86 ISA寄存器106有关的寄存器重新命名;但是,如果ISA指令124指示出ARM,然后RAT_402产生附属信息,以及执行与微处理器100的ARM ISA寄存器106有关的寄存器重新命名;然而,如上所述,部分的寄存器106可由x86 ISA及ARM ISA共享。RAT_402还为了每一个微指令126依据程序顺序配置一项目于ROB422中,使得ROB_422可依据程序顺序引退微指令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,以产生执行结果128并提供予ROB_422。虽然执行单元424显然地对于其所执行的微指令126已不受限(agnostic)为从x86或ARM ISA指令124所转译,执行单元424仍使用指令模式指标132及环境模式指标136,来执行相对少量的微指令126的子集。举一例而言,执行管线112依据指令模式指标132是指示x86ISA或ARM ISA,来稍微不同地处理标志的产生,且执行管线112依据指令模式指标132是指示x86 ISA或ARM ISA,来更新x86 EFLAGS寄存器或是在PSR中的ARM状态编码标志。举另一例而言,执行管线112取样指令模式指示器132,以决定要更新x86 IP118或ARM PC116或是共同的指令,以及是否要使用x86或ARM的语意来做这些更新。一旦一微指令126变成微处理器100中最久且已完成的微指令126(也就是,在ROB_422队列的顶端且具有一完成状态),且执行相关的ISA指令124的其它全部微指令126皆完成时,ROB_422引退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及ARMISA例行程序通过寄存器来相互沟通。此外,如前所示,x86 ISA及ARM ISA的架构型控制寄存器的某些位也可作为共享寄存器506的例子。如前所示,在一实施例中,x86 MSRs可通过一以实施来定义(implementation-defined)的共同处理器寄存器而被ARM ISA指令124所存取,因此可被x86 ISA及ARM ISA所共享。共享寄存器506还可包括非架构型寄存器,例如状态标志的非架构型等效(equivalents of the condition flags),其同样也被RAT402重新命名。硬件指令转译器104知道哪一个寄存器被x86 ISA及ARM ISA共享,因此硬件指令转译器104可产生即将执行微指令126来存取正确的寄存器。
ARM特定寄存器502包含由ARM ISA定义、但不包含于共享寄存器506中的其它寄存器,x86特定寄存器504包含由x86 ISA定义、但不包含于共享寄存器506中的其它寄存器。ARM规范寄存器502的范例包含ARM PC116、CPSR、CTRL、EPSCR、CPACR、共同处理器寄存器、协同使用的(banked)一般目的寄存器、及各种例外模式的SPSR等。前述并不是预期作为ARM特定寄存器502的详细列表,但仅是提供来作为描述范例。x86规范寄存器504的范例包含x86EIP118、EFLAGS、R15D、64位R0至R15处理器的上层32位(也就是不位在共享寄存器506的部分)、区段寄存器(SS,CS,DS,ES,FS,GS)、x87 FPU寄存器、MMX寄存器、及控制寄存器(例如CR0至CR3,R8)等。前述并不是预期作为x86特定寄存器504的详细列表,但仅是提供来作为描述范例。
在一实施例中,微处理器100包含新的实施定义ARM共同处理器寄存器,其可在指令模式指示器132指出ARM ISA时被存取,以执行x86 ISA相关的运作;这些运作包含,但不限于:将微处理器100重置为一x86 ISA处理器(重置至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至x86 ISA所定义的预设值;(2)初始化ARM特定状态502至ARM ISA所定义规范的预设值;(3)初始化微处理器100的非x86特定状态至微处理器100制造商所定义的预设值;(4)初始化共享ISA状态506(例如GPRS)至x86 ISA定义的预设值;以及(5)设定指令模式指标132及环境模式指标136,以指示出x86 ISA。在一替代的实施例中,代替动作(4)及(5)的是,重置微编码初始化该共享ISA状态506至ARM ISA所定义的预设值,且设定指令模式指标132及环境模式指标136,以指示出ARM ISA。在如此的一实施例中,方块638及642将不需要执行,且在方块614之前,重置微编码将初始化该共享的ISA状态506至x86 ISA所定义的预设值,且将设定指令模式指标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去使用,举例而言,x86ISA RDMSR及WRMSR指令124。流程前进至方块618。
在方块618中,x86系统软件执行一重置至ARM指令124,该重置至ARM指令使得微处理器100重置为一ARM处理器。然而,因为没有x86特定状态504且没有非ISA特定配置状态被重置至ARM指令126所改变,所以有利于使x86系统的固件执行微处理器100的初始配置,随后将微处理器100重新启动为一ARM处理器,并保持微处理器100的非ARM配置(其由x86系统软件执行)的完整。此举可使用精简(thin)的微启动编码就得以启动一ARM操作系统,该微启动编码不需知道配置微处理器100的作法的复杂性。在一实施例中,重置至ARM指令是一x86WRMSR指令,其传送至一新的非架构性MSR。流程前进至方块622。
在方块622中,简单指令转译器204因应复杂重置至ARM指令124,将重置微编码中断。该重置微编码将ARM特定状态502初始化至ARM ISA所定义的预设值。然而,重置微编码并没改变微处理器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,以指示ARMISA。流程前进至方块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指令124将重置微编码中断,该重置微编码将x86特定状态504初始化至x86 ISA所定义的预设值。然而,重置微编码并没改变微处理器100的非ISA特定状态,此举有利于保留执行于方块646中的配置。此外,重置微编码将共享ISA状态506初始化成x86 ISA所定义的预设值。最后,重置微编码设定指令模式指标132及环境模式指标136,以指示x86 ISA。流程前进至方块654。
在方块654中,重置微编码使得微处理器100开始读取指示于x86 ARM ISA R1: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)的执行管线来执行从x86 ISA及ARM ISA指令中硬件转译来的微指令,微处理器的设计及制造比起两个分开设计及制造的微处理需要较少的资源;两个分开设计及制造的微处理是指,一个可执行x86 ISA机器语言程序,一个可执行ARM ISA机器语言程序。此外,微处理器的实施例中,尤其是那些采用超纯量处理(superscalar)非循环故障执行管线的实施例,可比目前的ARMISA处理器提供具有较高效能的ARM ISA处理器。再者,微处理器的实施例可比采用软件转译器提供较高的x86及ARM效能。最后,微处理器可包含于一个可同时且高效能地执行x86及ARM机器语言程序的系统中,这是因为该系统具备同时执行x86 ISA及ARM ISA机器语言程序的能力。
本发明的各种实施例已于本文中描述,但需了解的是,这些实施例是以范例方式来描述,而非限制。应了解的是,对于计算机相关领域的知识者而言,各种形式及细节的变化皆可能,但无法悖于本发明的范围。举例而言,软件可启动于本文描述的功能、制造、模型化、模拟、描述和/或装置及方法的测试。此举的实现可通过一般程序语言(例如C及C++)、包含Verilog HDL、VHDL等的硬件描述语言(HDL)、或其他可获得的程序。该软件可设置于任何已知的计算机可使用媒介,例如磁带、半导体、磁盘、或光盘(例如CD-ROM、DVD-ROM等)、网络或其他通讯媒介。本文所描述的装置及方法的实施例可包含于一半导体知识产权核心(emiconductor intellectual property core),例如微处理器核心(位于或规范于HDL中),且被转换成生产集成电路的硬件。此外,本文所描述的装置及方法可以一软件及硬件的组合来体现。因此本发明不应局限于本文所描述的任何范例性的实施例,仅只能依据本发明的权利要求及其均等范围来定义。特别地,本发明可实施于用于一般目的的计算机中的一微处理器装置中。
最后,本领域的技术人员应了解到,他们可容易地使用所揭示的概念及特定实施例来作为一基础,以设计或修改其他结构,来实现出与本发明相同的目的,但无法悖离本发明的权利要求所定义的范围。
【相关申请案的参考文献】
本申请案优先权的申请是根据下列美国专利临时申请案,案号,该案整体皆纳入 本案参考。

Claims (5)

1.一种操作微处理器的方法,包括:
检测已经发送信号以重置一微处理器,其中由该微处理器执行所述检测步骤;
响应于所述检测已经发送信号以重置该微处理器,确定x86指令集架构(ISA)和进阶精简指令集机器(ARM)ISA中的哪一个被该微处理器的一指标指示为该微处理器的启动ISA,其中由该微处理器执行所述确定步骤;
初始化由该启动ISA定义的该微处理器的一架构状态,其中由该微处理器执行所述初始化步骤;
将在重置之后由该微处理器从架构存储空间撷取的由所述指标指示的启动ISA指令转译为微指令以作为该启动ISA的指令,其中该微指令的编码方式有别于x86指令集架构和ARM指令集架构指令的编码方式,其中由该微处理器的一硬件指令转译器执行所述转译步骤;以及
执行所述微指令以产生由该启动ISA定义的结果,其中由耦接到该硬件指令转译器的该微处理器的一执行管线执行所述执行步骤,
其中该指标包括该微处理器的微编码中的预设值。
2.如权利要求1所述的方法,进一步包括:
响应于感测到该微处理器的一熔丝烧断,反转该微编码中的该预设值。
3.如权利要求1所述的方法,其中于该微处理器在被重置之后从架构存储空间撷取其初始ISA指令之前应用的一微编码修补能够修改该微编码中的该预设值。
4.如权利要求1所述的方法,其中该指标包括响应于重置信号而具有预设值的该微处理器的一寄存器中的一位。
5.如权利要求1所述的方法,其中该指标包括对该微处理器的外部输入。
CN201510115612.XA 2011-04-07 2012-04-09 操作微处理器的方法 Active CN104714778B (zh)

Applications Claiming Priority (9)

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 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
US13/224,310 2011-09-01
CN201210104287.3A CN102707926B (zh) 2011-04-07 2012-04-09 可执行x86指令集及ARM指令集指令的微处理器及其运作方法

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
CN104714778A CN104714778A (zh) 2015-06-17
CN104714778B true CN104714778B (zh) 2018-04-06

Family

ID=45001635

Family Applications (2)

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

Family Applications Before (1)

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

Country Status (4)

Country Link
US (2) US8880851B2 (zh)
EP (4) EP2626782B1 (zh)
CN (2) CN102707926B (zh)
TW (1) TWI514266B (zh)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
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
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
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
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
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)
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
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
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
US9720730B2 (en) * 2011-12-30 2017-08-01 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
CN105993004B (zh) * 2014-07-21 2019-04-02 上海兆芯集成电路有限公司 转译后备缓冲器、操作其的方法以及包含其的处理器
BR112017001981B1 (pt) * 2014-07-30 2023-05-02 Movidius Limited Método para gerenciar buffer de instruções, sistema e memória legível por computador relacionados
US9971535B2 (en) 2014-11-05 2018-05-15 Industrial Technology Research Institute Conversion method for reducing power consumption and computing apparatus using the same
KR101819315B1 (ko) * 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법
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
JP6678185B2 (ja) * 2015-04-10 2020-04-08 グーグル エルエルシー ネイティブ・クライアントへのバイナリ変換
GB2554553B (en) * 2015-04-10 2021-12-01 Google Llc Binary translation on shared object level
US9507891B1 (en) 2015-05-29 2016-11-29 International Business Machines Corporation Automating a microarchitecture design exploration environment
GB2546465B (en) * 2015-06-05 2018-02-28 Advanced Risc Mach Ltd Modal processing of program instructions
CN106599990B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列
CN106447035B (zh) * 2015-10-08 2019-02-26 上海兆芯集成电路有限公司 具有可变率执行单元的处理器
US10169043B2 (en) 2015-11-17 2019-01-01 Microsoft Technology Licensing, Llc Efficient emulation of guest architecture instructions
US9996329B2 (en) 2016-02-16 2018-06-12 Microsoft Technology Licensing, Llc Translating atomic read-modify-write accesses
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 國立交通大學 二元碼轉譯裝置及方法
CN107341116B (zh) * 2017-06-20 2019-12-27 太原鹏跃电子科技有限公司 基于arm的pc/104通信方法及其写入、读取时序
JP6950385B2 (ja) * 2017-09-12 2021-10-13 オムロン株式会社 制御装置および制御方法
US10552131B2 (en) * 2017-10-16 2020-02-04 Microsoft Technology Licensing, Llc Barrier reduction during code translation
CN107885504B (zh) * 2017-12-12 2021-01-12 北京四方继保自动化股份有限公司 一种异构的多平台系统控制逻辑一致性校验的方法
CN108958798B (zh) * 2018-06-15 2021-04-20 上海兆芯集成电路有限公司 指令翻译电路、处理器电路及其执行方法
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 珠海市杰理科技股份有限公司 指令获取方法、装置、计算机设备和存储介质
CN110806899B (zh) * 2019-11-01 2021-08-24 西安微电子技术研究所 一种基于指令扩展的流水线紧耦合加速器接口结构
CN111813464B (zh) * 2020-08-31 2020-12-11 新华三半导体技术有限公司 一种芯片配置方法、监测模块及芯片
CN112269597B (zh) * 2020-10-23 2023-03-24 中国人民解放军战略支援部队信息工程大学 处理器指令异常行为检测方法及系统
CN113220300A (zh) * 2021-04-29 2021-08-06 麒麟软件有限公司 一种应用于Android系统x86架构上的ARM指令集转换方法
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 (3)

* 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
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
CN101887357A (zh) * 2009-05-11 2010-11-17 美普思科技有限公司 指令集架构中的变量寄存器和立即数字段编码

Family Cites Families (141)

* 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., Schaumburg, Ill. 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
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
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
US6374346B1 (en) 1997-01-24 2002-04-16 Texas Instruments Incorporated Processor with conditional execution of every instruction
US20030061471A1 (en) 1999-07-23 2003-03-27 Masahito Matsuo Data processor
AU8495098A (en) 1997-07-16 1999-02-10 California Institute Of Technology Improved devices and methods for 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
SE520511C2 (sv) * 1997-12-02 2003-07-22 Ericsson Telefon Ab L M Processor och förfarande för instruktionsavkodning
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
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
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
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
WO2000046704A2 (en) * 1999-02-05 2000-08-10 Tensilica, Inc. Automated processor generation system and method for designing a configurable processor
EP1050803B1 (en) 1999-05-03 2007-01-17 STMicroelectronics S.A. Guarded computer instruction execution
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
US7421572B1 (en) * 1999-09-01 2008-09-02 Intel Corporation Branch instruction for processor with branching dependent on a specified bit in a register
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
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
EP1687713A1 (en) 2003-10-24 2006-08-09 Microchip Technology Incorporated Method and system for alternating instructions sets in a central processing unit
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
WO2006112045A1 (ja) 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. 演算処理装置
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
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
US8166279B2 (en) 2007-05-03 2012-04-24 International Business Machines Corporation Method for predictive decoding of a load tagged pointer instruction
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
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
CN101907984B (zh) * 2009-08-07 2014-10-29 威盛电子股份有限公司 指令处理方法以及其所适用的超纯量管线微处理器
CN101866279B (zh) * 2009-08-14 2012-05-30 威盛电子股份有限公司 微处理器及其相关方法
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
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
EP2695055B1 (en) 2011-04-07 2018-06-06 VIA Technologies, Inc. Conditional load instructions in an out-of-order execution 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
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
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
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
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
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US20120260073A1 (en) 2011-04-07 2012-10-11 Via Technologies, Inc. Emulation of execution mode banked registers
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
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)
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
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
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 (3)

* 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
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
CN101887357A (zh) * 2009-05-11 2010-11-17 美普思科技有限公司 指令集架构中的变量寄存器和立即数字段编码

Also Published As

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

Similar Documents

Publication Publication Date Title
CN104714778B (zh) 操作微处理器的方法
US9898291B2 (en) Microprocessor with arm and X86 instruction length decoders
TWI474191B (zh) 控制暫存器對應於異質指令集架構處理器
TWI450196B (zh) 非循序執行微處理器之條件儲存指令
CN105468333B (zh) 具有条件指令的微处理器及其处理方法
US9317288B2 (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
CN103530089B (zh) 微处理器及其操作方法
US20120260066A1 (en) Heterogeneous isa microprocessor that preserves non-isa-specific configuration state when reset to different isa
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
GR01 Patent grant
GR01 Patent grant