CN102707988B - 微处理器及其操作方法 - Google Patents
微处理器及其操作方法 Download PDFInfo
- Publication number
- CN102707988B CN102707988B CN201210103608.8A CN201210103608A CN102707988B CN 102707988 B CN102707988 B CN 102707988B CN 201210103608 A CN201210103608 A CN 201210103608A CN 102707988 B CN102707988 B CN 102707988B
- Authority
- CN
- China
- Prior art keywords
- instruction
- memory
- data
- microprocessor
- isa
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
Abstract
一种包含处理模式的微处理器,处理模式包含使用者模式与多个例外事件模式。执行单元在指定于程序指令的操作数上执行算数运算。第一存储元件组具有第一操作数子集,并供第一操作数子集给其耦接的执行单元。第二存储元件组关联于各处理模式,并具有第二操作数子集,且第二存储元件组无法直接提供第二操作数子集给执行单元。在自当前的模式进入新的模式时,逻辑单元将第一存储元件组中的第一操作数子集存储至关联于当前处理模式的第二存储元件组,并将关联于新处理模式的第二存储元件组中的第二操作数子集恢复至第一存储元件组。
Description
相关申请的交叉引用
本申请是同在申请中美国专利正式申请的部分连续申请,这些申请整体都纳入本申请参考:
申请号 | 申请日 |
13/224,310(CNTR.2575) | 09/01/2011 |
13/333,520(CNTR.2569) | 12/21/2011 |
13/333,572(CNTR.2572) | 12/21/2011 |
13/333,631(CNTR.2618) | 12/21/2011 |
本申请是引用于以下美国临时专利申请作优先权,每一申请整体都纳入本申请参考:
申请号 | 申请日 |
61/473,062(CNTR.2547) | 04/07/2011 |
61/473,067(CNTR.2552) | 04/07/2011 |
61/473,069(CNTR.2556) | 04/07/2011 |
61/537,473(CNTR.2569) | 09/21/2011 |
61/541,307(CNTR.2585) | 09/30/2011 |
61/547,449(CNTR.2573) | 10/14/2011 |
61/555,023(CNTR.2564) | 11/03/2011 |
61/604,561(CNTR.2552) | 02/29/2012 |
美国正式专利申请
13/224,310(CNTR.2575) | 09/01/2011 |
是引用下列美国临时申请的优先权:
61/473,062(CNTR.2547) | 04/07/2011 |
61/473,067(CNTR.2552) | 04/07/2011 |
61/473,069(CNTR.2556) | 04/07/2011 |
以下三个本美国正式申请
13/333,520(CNTR.2569) | 12/21/2011 |
13/333,572(CNTR.2572) | 12/21/2011 |
13/333,631(CNTR.2618) | 12/21/2011 |
都是以下美国正式申请的延续申请:
13/224,310(CNTR.2575) | 09/01/2011 |
并引用下列美国临时申请的优先权:
61/473,062(CNTR.2547) | 04/07/2011 |
61/473,067(CNTR.2552) | 04/07/2011 |
61/473,069(CNTR.2556) | 04/07/2011 |
61/537,473(CNTR.2569) | 09/21/2011 |
本申请是以下美国正式专利申请的相关申请:
13/413,258(CNTR.2552) | 03/06/2012 |
13/412,888(CNTR.2580) | 03/06/2012 |
13/412,904(CNTR.2583) | 03/06/2012 |
13/412,914(CNTR.2585) | 03/06/2012 |
13/413,346(CNTR.2573) | 03/06/2012 |
13/413,300(CNTR.2564) | 03/06/2012 |
13/413,314(CNTR.2568) | 03/06/2012 |
技术领域
本发明是关于微处理器的技术领域,特别是关于在指令集中具有条件指令的微处理器。
背景技术
由Intel Corporation of Santa Clara,California开发出来的x86处理器架构以及由ARM Ltd.of Cambridge,UK开发出来的先进精简指令集机器(advanced risc machines,ARM)架构是电脑领域中两种广为人知的处理器架构。许多使用ARM或x86处理器的电脑系统已经出现,并且,对于此电脑系统的需求正在快速成长。现今,ARM架构处理核心是主宰低功耗、低价位的电脑市场,例如手机、手持式电子产品、平板电脑、网路路由器与集线器、 机上盒等。举例来说,苹果iPhone与iPad主要的处理能力即是由ARM架构的处理核心提供。另一方面,x86架构处理器则是主宰需要高效能的高价位市场,例如膝上电脑、桌上型电脑与服务器等。然而,随着ARM核心效能的提升,以及某些x86处理器在功耗与成本的改善,前述低价位与高价位市场的界线逐渐模糊。在移动运算市场,如智能型手机,这两种架构已经开始激烈竞争。在膝上电脑、桌上型电脑与服务器市场,可以预期这两种架构将会有更频繁的竞争。
前述竞争态势使得电脑装置制造业者与消费者陷入两难,因无从判断哪一个架构将会主宰市场,更精确来说,无法判定哪一种架构的软件开发商将会开发更多软件。举例来说,一些每月或每年会定期购买大量电脑系统的消费个体,基于成本效率的考虑,例如大量采购的价格优惠与系统维修的简化等,会倾向于购买具有相同系统配置设定的电脑系统。然而,这些大型消费个体中的使用者群体,对于这些具有相同系统配置设定的电脑系统,往往有各种各样的运算需求。具体来说,部分使用者的需求是希望能够在ARM架构处理器上执行程序,其他部分使用者的需求是希望能够在x86架构处理器上执行程序,甚至有部分使用者希望能够同时在两种架构上执行程序。此外,新的、预期外的运算需求也可能出现而需要使用另一种架构。在这些情况下,这些大型个体所投入的部分资金就变成浪费。在另一个例子中,使用者具有一个重要的应用程序只能在x86架构上执行,因而他购买了x86架构的电脑系统(反之亦然)。不过,这个应用程序的后续版本改为针对ARM架构开发,并且优于原本的x86版本。使用者会希望转换架构来执行新版本的应用程序,但不幸地,他已经对于不倾向使用的架构投入相当成本。同样地,使用者原本投资于只能在ARM架构上执行的应用程序,但是后来也希望能够使用针对x86架构开发而未见于ARM架构的应用程序或是优于以ARM架构开发的应用程序,也会遭遇这样的问题,反之亦然。值得注意的是,虽然小实体或是个人投入的金额较大实体为小,然而投资损失比例可能更高。其他类似的投资损失的例子可能出现在各种不同的运算市场中,例如由x86架构转换至ARM架构或是由ARM架构转换至x86架构的情况。最后,投资大量资源来开发新产品的运算装置制造业者,例如OEM厂商,也会陷入此架构选择的困境。若是制造业者基于x86或ARM架构研发制造大量产品,而使用者的需求突然改变,则会导致许多有价值的研发资源的浪费。
对于运算装置的制造业者与消费者,能够保有其投资免于受到二种架构中何者胜出的影响是有帮助的,因而有必要提出一种解决方法让系统制造业者发展出可让使用者同时执行x86架构与ARM架构的程序的运算装置。
使系统能够执行多个指令集程序的需求由来已久,这些需求主要是因为消费者会投入相当成本在旧硬件上执行的软件程序,而其指令集往往不兼容于新硬件。举例来说,IBM360系统Model30即具有兼容于IBM1401系统的特征来缓和使用者由1401系统转换至较高效能与改良特征的360系统的痛苦。Model30具有360系统与1401系统的只读存储控制(Read Only Storage,ROS)),使其在辅助存储空间预先存入所需信息的情况下能够使用于1401系统。此外,在软件程序以高阶语言开发的情况下,新的硬件开发商几乎没有办法控制为旧硬件所编译的软件程序,软件开发商也欠缺动力为新硬件重新编译(re-compile)源码,此情形尤其发生在软件开发商与硬件开发商是不同个体的情况。Siberman与Ebcioglu于Computer,June1993,No.6提出的文章“AnArchitectural Framework for Supporting Heterogeneous Instruction-Set Architectures”中公开一种利用执行于精简指令集(RISC)、超纯量架构(superscalar)与超长指令字(VLIW)架构(下称原生架构)的系统来改善既存复杂指令集(CISC)架构(例如IBM S/390)执行效率的技术,其所公开的系统包含有执行原生码的原生引擎(native engine)与执行目的码的迁移引擎(migrant engine),并可依据转译软件将目的码(object bode)转译为原生码(native code)的转译效果,在这两种编码间视需要进行转换。请参照2006年5月16日公开的美国专利第7,047,394号专利案,Van Dyke等公开一处理器,具有用以执行原生精简指令集(Tapestry)的程序指令的执行管线,并利用硬件转译与软件转译的结合,将x86程序指令转译为原生精简指令集的指令。Nakada等提出具有ARM架构的前端管线与Fujitsu FR-V(超长指令字)架构的前端管线的异质多线程处理器(heterogeneous SMT processor),ARM架构前端管线是用于非规则软件程序(如操作系统),而Fujitsu FR-V(超长指令字)架构的前端管线是用于多介质应用程序以将一增加的超长指令字队列汇入FR-V超长指令字的后端管线以维持来自前端管线的指令。请参照Buchty与Weib,eds,Universitatsverlag Karlsruhe于2008年11月在First International Workshop on New Frontiers in High-performance and Hardware-aware Computing(HipHaC’08),Lake Como,Italy,(配合MICRO-41)发表的论文集(ISBN 978-3-86644-298-6)的文章“OROCHI:A Multiple Instruction Set SMTProcessor”。文中提出的方法是用以降低整个系统在异质系统单晶片(SOC)装置(如德州仪器OMAP应用处理器)内所占据的空间。此异质系统单晶片装置具有一个ARM处理器核心加上一个或多个协同处理器(co-processors)(例如TMS320、多种数字信号处理器、或是多种图形处理单元(GPUs))。这些协同处理器并不分享指令执行资源,只是整合于同一晶片上的不同处理核心。
软件转译器(software translator)、或称软件模拟器(software emulator,software simulator)、动态二进制码转译器等,也被用于支持将软件程序在与此软件程序架构不同的处理器上执行的能力。其中受欢迎的商用实例如搭配苹果麦金塔(Macintosh)电脑的Motorola68K-to-PowerPC模拟器,其可在具有PowerPC处理器的麦金塔电脑上执行68K程序,以及后续研发出来的PowerPC-to-x86模拟器其可在具有x86处理器的麦金塔电脑上执行68K程序。位于加州圣塔克拉拉(Santa Clara,California)的全美达公司,结合超长指令字(VLIW)的核心硬件与“纯粹软件指令的转译器(也即程序码转译软件(Code Morphing Software))以动态地编译或模拟(emulate)x86程序码序列”以执行x86程序码,请参照2011年维基百科针对全美达(Transmeta)的说明<http://en.wikipedia.org/wiki/Transmeta>。另外,参照1998年11月3日由Kelly等提出的美国专利第5,832,205号公告案。IBM的DAISY(Dynamic Architecture Instruction Set from Yorktown)系统具有超长指令字(VLIW)机器与动态二进制软件转译,可提供100%的旧架构软件相容模拟。DAISY具有位于只读存储器内的虚拟机器监视器(Virtual Machine Monitor),以并行处理(parallelize)与存储超长指令字原始码(VLIW primitives)至未见于旧有系统架构的部分主要存储器内,期能避免这些旧有体系架构的程序码片段在后续程序被重新编译(re-translation)。DAISY具有高速编译器优化演算法(fast compiler optimization algorithms)以提升效能。QEMU是具有软件动态转译器的机器模拟器(machine emulator)。QEMU可在多种主机(host),如x86、PowerPC、ARM、SPARC、Alpha与MIPS,模拟多种中央处理器,如x86、PowerPC、ARM与SPARC。请参照QEMU,a Fast and Portable Dynamic Translator,Fabrice Bellard,USENIX Association,FREENIX Track:2005USENIX Annual Technical Conference,如同其开发者所称“动态转译器对目标处理器指令执行时的转换(runtime conversion),将其转换至主机指令集,所 产生的二进制码存储于一转译高速缓冲存储器以利重复取用。QEMU[较之其他动态转译器]远为简单,因为它只连接GNC C编译器于离线(off line)时所产生的机器码片段”。同时可参照2009年6月19日Adelaide大学Lee WangHao的学位论文“ARM Instruction Set Simulation on Multi-core x86Hardware”。虽然以软件转译为基础的解决方案所提供的处理效能可以满足多个运算需求的一部分,但是不大能够满足多个使用者的情况。
静态(static)二进位制转译是另一种具有高效能潜力的技术。不过,二进位制转译技术的使用存在技术上的问题(例如自我修改程序码(self-modifyingcode)、只在执行时(run-time)可知的间接分支(indirect branches)数值)以及商业与法律上的障碍(例如:此技术可能需要硬件开发商配合开发发布新程序所需的管道;对原程序发布者存在潜在的授权或是著作权侵害的风险)。
发明内容
本发明的一实施例提供一微处理器。该微处理器包含多个处理模式,该处理模式包含一使用者模式与多个例外事件模式。该微处理器还包含至少一执行单元,用以在程序指令指定的操作数上执行算数运算;该微处理器还包含一第一存储元件组,耦接于该执行单元,其中,该第一存储元件组包含第一操作数子集,并提供该第一操作数子集给该执行单元;该微处理器还包含一第二存储元件组,关联于各处理模式,其中,该第二存储元件组包含一第二操作数子集,其中,该第二存储元件组无法直接提供该第二操作数子集给该执行单元;以及,该微处理器还包含一逻辑,其中,当从一当前处理模式进入至一新处理模式时,该逻辑将该第一存储元件组中的该第一操作数子集存储至关联于该当前处理模式的第二存储元件组,并将关联于该新处理模式的该第二存储元件组中的该第二操作数子集恢复至该第一存储元件组。
本发明的另一实施例提供用于操作一种微处理器的方法,该微处理器包含多个处理模式,该些处理模式具有一使用者模式以及多个例外事件模式,其中该微处理器还包含至少一执行单元,该执行单元通过特定程序指令在操作数上执行算数运算,该方法包含:当该微处理器在该些处理模式中的一当前处理模式运行时,自一第一存储元件组中提供一第一操作数集至该执行单元以执行算数运算;而当自该当前的处理模式进入该些处理模式中的一新处理模式时,则包含以下步骤:将该第一存储元件组的该第一操作数集存储至 关联于该当前处理模式的一第二存储单元组;将该关联于该新处理模式的一第三存储元件组的一第二操作数集恢复至该第一存储元件组;以及当该微处理器于该新处理模式中运行时,自该第一存储元件组提供该第二操作数集至该执行单元以执行算数运算。
本发明的又一实施例提供一种电脑程序产品。此电脑程序产品编码于至少一电脑可读取存储介质以使用于一运算装置。此电脑程序产品具有适用于前述介质的电脑可读取程序码,该电脑程序产品包括:适用于该介质的电脑可读取程序码,用以指定一微处理器,该电脑可读取程序码包含第一程序码,用以指定于多个处理模式,该些处理模式包含一使用者模式与多个例外事件模式;电脑可读取程序码还包含第二程序码,用以指定于至少一执行单元,该执行单元通过特定程序指令在操作数上执行算数运算;该电脑可读取程序码还包含第三程序码,用以指定于一第一存储元件组,该第一存储元件组耦接于该执行单元,其中该第一存储元件组具有一第一操作数子集,并提供该第一操作数子集至该执行单元;该电脑可读取程序码还包含第四程序码,用以指定关联于该些处理模式的一第二存储元件组。其中该第二存储元件组具有一第二操作数子集,其中该第二操作数不可直接提供该第二操作数子集至该执行单元;以及该电脑可读取程序码还包含第五程序码,用以指定一逻辑,其中当自依当前处理模式进入该些处理模式的一新处理模式时,该逻辑存储该第一存储元件组的该第一操作数子集至关联于该当前处理模式的该第二存储元件组,并恢复关联于该新处理模式的该第二存储元件组的该第二操作数子集至该第一存储元件组。
本发明的一实施例提供一种微处理器,其支持一ISA,该ISA指定于多个处理模式以及指定于多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定一载入多重指令,该载入多重指令指示该微处理器自存储器内载入数据,并传入指定于该载入多重指令的一个或多个架构寄存器,该微处理器包含:直接存储器,其具有关联于该些架构寄存器的一第一部分的数据,并耦接于该微处理器的至少一执行单元,以提供该数据给该执行单元;该微处理器还包含间接存储器,其具有关联于该些架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该些架构寄存器的该第一部分与该些架构寄存器的该第 二部分;以及,其中各架构寄存器指定于该载入多重指令:若当该架构寄存器位于该第一部分,该微处理器自存储器内载入数据,并传入至直接存储器;以及若当该架构寄存器位于该第二部分,该微处理器自存储器内载入数据,并传入至该直接存储器,而后将该直接存储器的数据转至该间接存储器。
本发明的另一实施例提供用于操作一种微处理器的方法,其支持一ISA,该ISA指定于多个处理模式、指定于关联于各处理模式的多个架构寄存器,以及指定于一载入多重指令,该载入多重指令指示该微处理器自存储器内载入数据,并传入指定于该载入多重指令的一个或多个架构寄存器,该方法包含,对于指定于载入多重指令的各架构寄存器,若该架构寄存器位于该第一部分,则自存储器内载入数据至该微处理器的直接存储器,而若该架构寄存器位于该第二部分,则自存储器内载入数据至该直接存储器,并接着将该直接存储器的数据存储至该间接存储器。该直接存储器具有关联于该些架构寄存器的一第一部分的数据,并耦接于该处理器的至少一执行单元,以提供该数据给该执行单元;间接存储器具有关联于该些架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分。
本发明的另一实施例提供一种微处理器,其支持一ISA,该ISA指定多个处理模式以及指定多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定于一存储多重指令,该存储多重指令指示该微处理器将数据自指定于该存储多重指令的一个或多个架构寄存器中转存至该存储器,该微处理器包含直接存储器,具有关联于该些架构寄存器的一第一部分的数据,并耦接于该微处理器的至少一执行单元,以提供该数据给该执行单元;该微处理器还包含间接存储器,具有关联于该些架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分;以及,其中,各架构寄存器指定于该存储多重指令:若当该架构寄存器位于该第一部分,该微处理器将数据自该直接存储器转存至存储器;以及若当该架构寄存器位于该第二部分,该微处理器自该间接存储器内载入数据,并传入至该 直接存储器,而后将数据自该直接存储器转存至存储器。
本发明的又一实施例提供一种用以操作一微处理器的方法,该微处理器支持一ISA,该ISA指定多个处理模式以及指定多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定一存储多重指令,该存储多重指令指示该微处理器将数据自指定于该存储多重指令一个或多个架构寄存器中转存至该存储器,该方法包含:各架构寄存器指定于该存储多重指令:若当该架构寄存器位于该第一部分,则将数据自该该微处理器的直接存储器转存至存储器;以及若当该架构寄存器位于该第二部分,则自该间接存储器内载入数据,并传入至该直接存储器,而后将数据自该直接存储器转存至存储器。其中,该直接存储器具有关联于该架构寄存器的一第一部分的数据,并耦接于该微处理器的至少一执行单元以提供该数据至该执行单元;其中,该间接存储器具有关连于该架构寄存器的一第二部分的数据。该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分。
本发明的又一实施例提供一种电脑程序产品,此电脑程序产品编码于至少一电脑可读取存储介质,以使用于一运算装置,该电脑程序产品包括:适用于该介质的电脑可读取程序码,用以指定一微处理器,该微处理器支持一ISA,该ISA指定多个处理模式以及指定多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定于一载入多重指令,该载入多重指令指令该微处理器自存储器内载入数据,并传入指定于该载入多重指令一个或多个架构寄存器,该电脑可读取程序码包含第一程序码,用以指定于直接存储器,该直接存储器具有关联于该架构寄存器的一第一部分的数据,且并耦接于该微处理器的至少一执行单元,以提供该数据给该执行单元;该电脑可读取程序码还包含第二程序码,用以指定于间接存储器,该间接存储器具有关联于该些架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分;其中,各架构寄存器指定于该载入多重指令:若当该架构寄存器位于该第一部分,该微处理器自存储器内载入数据,并传入至该直接存储器;以及若当该架构寄存器位于该第二部分,则该 微处理器自存储器内载入数据,并传入至该直接存储器,而后将该直接存储器的数据转至该间接存储器。
关于本发明的优点与精神可以通过以下的发明详述及所附图式得到进一步的了解。
附图说明
图1是本发明执行x86程序集架构与ARM程序集架构机器语言程序的微处理器一实施例的方块图;
图2是一方块图,详细显示图1的硬件指令转译器;
图3是一方块图,详细显示图2的指令格式化程序(instructionformatter);
图4是一方块图,详细显示图1的执行管线;
图5是一方块图,详细显示图1的寄存器文件;
图6(包含图6A与图6B)是一流程图,显示图1的微处理器的操作步骤;
图7是本发明一双核心微处理器的方块图;
图8是本发明执行x86ISA与ARM ISA机器语言程序的微处理器另一实施例的方块图;
图9是一已知硬件寄存器文件架构示意图;
图10是本发明的系统方块图,详细显示图1的微处理器;
图11(包含图11A与图11B)是显示在本发明中,如图10的微处理器100操作的流程图;
图12是一流程图,显示图10的微处理器依据图11,数据在直接存储器与间接存储器间流动;
图13(包含图13A与图13B)是一流程图,显示在本发明中如图1的微处理器100执行一LDM指令的流程图;
图14(包含图14A与图14B)是一流程图,显示在本发明中如图1的微处理器100执行一LDM指令的另一流程图;
图15(包含图15A与图15B)是一流程图,显示在本发明中如图1的微处理器100执行一STM指令的流程图;以及
图16(包含图16A与图16B)是一流程图,显示在本发明中如图1的微处理器100执行一STM指令的另一流程图。
【主要元件符号说明】
微处理器(处理核心)100
指令高速缓冲存储器102
硬件指令转译器104
寄存器文件106
存储器子系统108
执行管线112
指令撷取单元与分支预测器114
ARM程序计数器(PC)寄存器116
x86指令指示符(IP)寄存器118
配置寄存器(configuration register)122
ISA指令124
微指令126
结果128
指令模式指示符(instruction mode indicator)132
撷取地址134
环境模式指示符(environment mode indicator)136
指令格式化程序202
简单指令转译器(SIT)204
复杂指令转译器(CIT)206
多工器(mux)212
x86简单指令转译器222
ARM简单指令转译器224
微程序计数器(micro-program counter,micro-PC)232
微码只读存储器234
微序列器(microsequencer)236
指令间接寄存器(instruction indirection register,IIR)235
微转译器(microtranslator)237
格式化ISA指令242
实行微指令(implementing microinstructions)244
实行微指令246
选择输入248
微码地址252
只读存储器地址254
ISA指令信息255
预解码器(pre-decoder)302
指令比特组队列(IBQ)304
长度解码器(length decoders)与纹波逻辑(ripple logic)306
多工器队列(mux queue,MQ)308
多工器312
格式化指令队列(formatted instruction queue,FIQ)314
ARM指令集状态322
微指令队列401
寄存器分配表(register allocation table,RAT)402
指令调度器(instruction dispatcher)404
保留站(reservation station)406
指令发送单元(instruction issue unit)408
整数/分支(integer/branch)单元412
介质单元(media unit)414
载入/存储(load/store)单元416
浮点(floating point)单元418
重排缓冲器(reorder buffer,ROB)422
执行单元424
ARM特定寄存器502
x86特定寄存器504
共享寄存器506
双核心微处理器700
微指令高速缓冲存储器892
硬件寄存器文件902
硬件多工逻辑904
硬件寄存器906
硬件多工逻辑908
寄存器地址912
处理模式914
多工器1004、1006、1008、1014、1016、1018
具体实施方式
名词定义
指令集,定义二进位制编码值的集合(即机器语言指令)与微处理器所执行操作间的对应关系。机器语言程序基本上以二进位制进行编码,不过也可使用其他进位制的系统,如部分早期IBM电脑的机器语言程序,虽然最终也是以电压高低呈现二进位值的物理信号来表现,不过却是以十进位制进行编码。机器语言指令指示微处理器执行的操作如:将寄存器1内的操作数与寄存器2内的操作数相加并将结果写入寄存器3、将存储器地址0x12345678的操作数减掉指令所指定的立即操作数并将结果写入寄存器5、依据寄存器7所指定的比特数移动寄存器6内的数值、若是零旗标被设定时,分支到指令后方的36个比特组、将存储器地址0xABCD0000的数值载入寄存器8。因此,指令集定义各个机器语言指令使微处理器执行所要执行的操作的二进位编码值。需要了解的是,指令集定义二进位值与微处理器操作间的对应关系,并不意味着单一个二进位值就会对应至单一个微处理器操作。具体来说,在部分指令集中,多个二进位值可能会对应至同一个微处理器操作。
指令集架构(ISA),从微处理器家族的脉络来看包含(1)指令集;(2)指令集的指令所能存取的资源集(例如:存储器定址所需的寄存器与模式);以及(3)微处理器回应指令集的指令执行所产生的例外事件集(例如:除以零、分页错误、存储器保护违反等)。因为程序撰写者,如组译器与编译器的撰写者,想要作出机器语言程序在一微处理器家族执行时,就需要此微处理器家族的ISA定义。所以微处理器家族的制造者通常会将ISA定义于操作者操作手册中。举例来说,2009年3月公布的Intel64与IA-32架构软件开发者手册(Intel64and IA-32Architectures Software Developer’s Manual)即定义Intel64与IA-32处理器架构的ISA。此软件开发者手册包含有五个章节,第一章是基本架构;第二A章是指令集参考A至M;第二B章是指令集参考N至Z;第三A章是系统编程指南;第三B章是系统编程指南第二部分,此手册列为本申请的参考文件。此种处理器架构通常被称为x86架构,本文中则是以x86、 x86ISA、x86ISA家族、x86家族或是相似用语来说明。在另一个例子中,2010年公布的ARM架构参考手册,ARM v7-A与ARM v7-R版本Erratamarkup,定义ARM处理器架构的ISA。此参考手册列为参考文件。此ARM处理器架构的ISA在此也被称为ARM、ARM ISA、ARM ISA家族、ARM家族或是相似用语。其他众所周知的ISA家族还有IBM System/360/370/390与z/Architecture、DEC VAX、Motorola68k、MIPS、SPARC、PowerPC与DEC Alpha等等。ISA的定义会涵盖处理器家族,因为处理器家族的发展中,制造者会通过在指令集中增加新指令、以及/或在寄存器组中增加新的寄存器等方式来改进原始处理器的ISA。举例来说,随着x86程序集架构的发展,其于IntelPentium III处理器家族导入一组128比特的多介质扩展指令集(MMX)寄存器作为单指令多重数据流扩展(SSE)指令集的一部分,而x86ISA机器语言程序已经开发来利用XMM寄存器以提升效能,虽然现存的x86ISA机器语言程序并不使用单指令多重数据流扩展指令集的XMM寄存器。此外,其他制造商也设计且制造出可执行x86ISA机器语言程序的微处理器。例如,超微半导体(AMD)与威盛电子(VIA Technologies)即在x86ISA增加新技术特征,如超微半导体的3DNOW!单指令多重数据流(SIMD)向量处理指令,以及威盛电子的Padlock安全引擎随机数生成器(random number generator)与先进译码引擎(advanced cryptography engine)的技术,前述技术都是采用x86ISA的机器语言程序,但却非由现有的Intel微处理器实现。以另一个实例来说明,ARMISA原本定义ARM指令集状态具有4比特组的指令。然而,随着ARM ISA的发展而增加其他指令集状态,如具有2比特组指令以提升编码密度的Thumb指令集状态以及用以加速Java比特组码程序的Jazelle指令集状态,ARM ISA机器语言程序已被发展来使用部分或所有其他ARM ISA指令集状态,即使现存的ARM ISA机器语言程序产生之初并非采用这些其他ARM ISA指令集状态。
指令集架构(ISA)机器语言程序,包含ISA指令序列,即ISA指令集对应至程序撰写者要程序执行的操作序列的二进位编码值序列。因此,x86ISA机器语言程序包含x86ISA指令序列,ARM ISA机器语言程序则包含ARM ISA指令序列。机器语言程序指令存放于存储器内,且由微处理器撷取并执行。
硬件指令转译器,包含多个电晶体的配置,用以接收ISA机器语言指令(例如x86ISA或是ARM ISA机器语言指令)作为输入,并对应地输出一个 或多个微指令至微处理器的执行管线。执行管线执行微指令的执行结果由ISA指令所定义。因此,执行管线通过对这些微指令的集体执行来“实现”ISA指令。也就是说,执行管线通过对于硬件指令转译器输出的实行微指令的集体执行,实现所输入ISA指令所指定的操作,以产生此ISA指令定义的结果。因此,硬件指令转译器可视为是将ISA指令“转译(translate)”为一个或多个实行微指令。本实施例所描述的微处理器具有硬件指令转译器以将x86ISA指令与ARM ISA指令转译为微指令。不过,需要理解的是,硬件指令转译器并非必然可对x86使用者操作手册或是ARM使用者操作手册所定义的整个指令集进行转译,而往往只能转译这些指令中一个子集合,如同绝大多数x86ISA与ARM ISA处理器只支持其相对应的使用者操作手册所定义的一个指令子集合。具体来说,x86使用者操作手册定义由硬件指令转译器转译的指令子集合,不必然就对应至所有既有的x86ISA处理器,ARM使用者操作手册定义而由硬件指令转译器转译的指令子集合,不必然就对应至所有现存的ARM ISA处理器。
执行管线,是一多层级序列(sequence of stages)。此多层级序列的各个层级分别具有硬件逻辑与一硬件寄存器。硬件寄存器保持硬件逻辑的输出信号,并依据微处理器的时钟信号,将此输出信号提供至多层级序列的下一层级。执行管线可以具有多个多层序列,例多重执行管线。执行管线接收微指令作为输入信号,并相应地执行微指令所指定的操作以输出执行结果。微指令所指定且由执行管线的硬件逻辑所执行的操作包括但不限于算数、逻辑、存储器载入/存储、比较、测试、与分支解析,对进行操作的数据格式包括但不限于整数、浮点数、字母、二进编码十进数(BCD)、与压缩格式(packed format)。执行管线执行微指令以实现ISA指令(如x86与ARM),藉以产生ISA指令所定义的结果。执行管线不同于硬件指令转译器。具体来说,硬件指令转译器产生实行微指令,执行管线则是执行这些指令,但不产生这些实行微指令。
指令高速缓冲存储器,是微处理器内的一个随机存取装置,微处理器将ISA机器语言程序的指令(例如x86ISA与ARM ISA的机器语言指令)放置其中,这些指令撷取自系统存储器并由微处理器依据ISA机器语言程序的执行流程,来执行。具体来说,ISA定义一指令地址寄存器以持有下一个待执行ISA指令的存储器地址(举例来说,在x86ISA定义为指令指示符(IP)而在ARM ISA定义为程序计数器(PC)),而在微处理器执行机器语言程序以控制 程序流程时,微处理器会更新指令地址寄存器的内容。ISA指令被高速缓冲存储器来供后续撷取之用。当该寄存器所包含的下一个机器语言程式的ISA指令位址位于目前的指令快取中,可依据指令寄存器的内容快速地指令高速缓冲存储器撷取ISA指令由系统存储器中取出该ISA指令。尤其是,此程序是基于指令地址寄存器(如指令指示符(IP)或是程序计数器(PC))的存储器地址向指令高速缓冲存储器取得数据,而非特定运用一载入或存储指令所特定的存储器地址进行数据撷取。因此,将指令集架构的指令视为数据(例如采用软件转译的系统的硬件部分所呈现的数据)的专用数据高速缓冲存储器,特地运用一载入/存储地址,而非基于指令地址寄存器的数值做存取的,就不是此处所称的指令高速缓冲存储器。此外,可取得指令与数据的混合式高速缓冲存储器,基于指令地址寄存器的数值以及基于载入/存储地址,而非仅仅基于载入/存储地址,也被涵盖在本说明对指令高速缓冲存储器的定义内。在本说明内容中,载入指令是指将数据由存储器载入至微处理器的指令,存储指令是指将数据由微处理器写入存储器的指令。
微指令集,是微处理器的执行管线能够执行的指令(微指令)的集合。
实施例说明
本发明实施例公开的微处理器可通过硬件将其对应的x86ISA与ARMISA指令转译为由微处理器执行管线直接执行的微指令,以达到可执行x86ISA与ARM ISA机器语言程序的目的。此微指令由不同于x86与ARM ISA的微处理器的微架构(microarchitecture)的微指令集所定义。由于本文所述的微处理器需要执行x86与ARM机器语言程序,微处理器的硬件指令转译器会将x86与ARM指令转译为微指令,并将这些微指令提供至微处理器的执行管线,由微处理器执行这些微指令以实现前述x86与ARM指令。由于这些实行微指令是直接由硬件指令转译器提供至执行管线来执行,而不同于采用软件转译器的系统需于执行管线执行指令前,将预先存储本机(host)指令至存储器,因此,前述微处理器具有潜力能够以较快的执行速度执行x86与ARM机器语言程序。
图1是一方块图显示本发明能够执行x86ISA与ARM ISA机器语言程序的微处理器100的实施例。此微处理器100具有一指令高速缓冲存储器102;一硬件指令转译器104,用以由指令高速缓冲存储器102接收x86ISA指令与ARM ISA指令124并将其转译为微指令126;一执行管线112,执行由硬件 指令转译器104接收的微指令126以产生微指令结果128,该结果是以操作数的型式回传至执行管线112;一寄存器文件106与一存储器子系统108,分别提供操作数至执行管线112并由执行管线112接收微指令结果128;一指令撷取单元与分支预测器114,提供一撷取地址134至指令高速缓冲存储器102;一ARM ISA定义的程序计数器寄存器116与一x86ISA定义的指令指示符寄存器118,依据微指令结果128进行更新,并且提供其内容至指令撷取单元与分支预测器114;以及多个配置寄存器122,提供一指令模式指示符132与一环境模式指示符136至硬件指令转译器104与指令撷取单元与分支预测器114,并基于微指令结果128进行更新。
由于微处理器100可执行x86ISA与ARM ISA机器语言指令,微处理器100依据程序流程由系统存储器(未图示)撷取指令至微处理器100。微处理器100存取最近撷取的x86ISA与ARM ISA的机器语言指令至指令高速缓冲存储器102。指令撷取单元114将依据由系统存储器撷取的x86或ARM指令比特组区段,产生一撷取地址134。若是命中指令高速缓冲存储器102,指令高速缓冲存储器102将位于撷取地址134的x86或ARM指令比特组区段提供至硬件指令转译器104,否则由系统存储器中撷取指令集架构的指令124。指令撷取单元114是基于ARM程序计数器116与x86指令指示符118的值产生撷取地址134。具体来说,指令撷取单元114会在一撷取地址寄存器中维持一撷取地址。任何时候指令撷取单元114撷取到新的ISA指令比特组区段,它就会依据此区段的大小更新撷取地址,并依据既有方式依序进行,直到出现一控制流程事件。控制流程事件包含例外事件的产生、分支预测器114的预测显示撷取区段内有一将发生的分支(taken branch)、以及执行管线112回应一非由分支预测器114所预测的将发生分支指令的执行结果,而对ARM程序计数器116与x86指令指示符118进行的更新。指令撷取单元114将撷取地址相应地更新为例外处理程序地址、预测目标地址或是执行目标地址以回应一控制流程事件。在一实施例中,指令高速缓冲存储器102是一混合高速缓冲存储器,以存取ISA指令124与数据。值得注意的是,在此混合高速缓冲存储器的实施例中,虽然混合高速缓冲存储器可基于一载入/存储地址将数据写入高速缓冲存储器或由高速缓冲存储器载入数据,在微处理器100由混合高速缓冲存储器撷取指令集架构的指令124的情况下,混合高速缓冲存储器是基于ARM程序计数器116与x86指令指示符118的数值来存取,而非基 于载入/存储地址。指令高速缓冲存储器102可以是一随机存取存储器装置。
指令模式指示符132是一状态指示微处理器100当前是否正在撷取、格式化/解码、以及将x86ISA或ARM ISA指令124转译为微指令126。此外,执行管线112与存储器子系统108接收此指令模式指示符132,此指令模式指示符132会影响微指令126的执行方式,尽管只是微指令集内的一个小集合受影响而已。x86指令指示符寄存器118持有下一个待执行的x86ISA指令124的存储器地址,ARM程序计数器寄存器116持有下一个待执行的ARMISA指令124的存储器地址。为了控制程序流程,微处理器100在其执行x86与ARM机器语言程序时,分别更新x86指令指示符寄存器118与ARM程序计数器寄存器116,至下一个指令、分支指令的目标地址或是例外处理程序地址。在微处理器100执行x86与ARM ISA的机器语言程序的指令时,微处理器100由系统存储器撷取机器语言程序的指令集架构的指令,并将其置入指令高速缓冲存储器102以取代最近较不被撷取与执行的指令。此指令撷取单元114基于x86指令指示符寄存器118或是ARM程序计数器寄存器116的数值,并依据指令模式指示符132指示微处理器100正在撷取的ISA指令124是x86或是ARM模式来产生撷取地址134。在一实施例中,x86指令指示符寄存器118与ARM程序计数器寄存器116可实施为一共享的硬件指令地址寄存器,用以提供其内容至指令撷取单元与分支预测器114并由执行管线112依据指令模式指示符132指示的模式是x86或ARM与x86或ARM的语意(semantics)来进行更新。
环境模式指示符136是一状态是指示微处理器100是使用x86或ARMISA的语意于此微处理器100所操作的多种执行环境,例如虚拟存储器、例外事件、高速缓冲存储器控制、与全域执行时间保护。因此,指令模式指示符132与环境模式指示符136共同产生多个执行模式。在第一种模式中,指令模式指示符132与环境模式指示符136都指向x86ISA,微处理器100是作为一般的x86ISA处理器。在第二种模式中,指令模式指示符132与环境模式指示符136都指向ARM ISA,微处理器100是作为一般的ARM ISA处理器。在第三种模式中,指令模式指示符132指向x86ISA,不过环境模式指示符136则是指向ARM ISA,此模式有利于在ARM操作系统或是超管理器的控制下执行使用者模式x86机器语言程序;相反地,在第四种模式中,指令模式指示符132是指向ARM ISA,不过环境模式指示符136则是指向x86 ISA,此模式有利于在x86操作系统或超管理器的控制下执行使用者模式ARM机器语言程序。指令模式指示符132与环境模式指示符136的数值在重置(reset)之初就已确定。在一实施例中,此初始值被视为微码常数进行编码,不过可通过熔断配置熔丝与/或使用微码修补进行修改。在另一实施例中,此初始值则是由一外部输入提供至微处理器100。在一实施例中,环境模式指示符136只在由一重置至ARM(reset-to-ARM)指令124或是一重置至x86(reset-to-x86)指令124执行重置后才会改变(请参照下述图6A以及图6B);也即,在微处理器100正常运行而未由一般重置、重置至x86或重置至ARM指令124执行重置时,环境模式指示符136并不会改变。
硬件指令转译器104接收x86与ARM ISA的机器语言指令124作为输入,相应地提供一个或多个微指令126作为输出信号以实现x86或ARM ISA指令124。执行管线112执行前述一个或多个微指令126,其集体执行的结果实现x86或ARM ISA指令124。也就是说,这些微指令126的集体执行可依据输入端所指定的x86或ARM ISA指令124,来执行x86或是ARM ISA指令124所指定的操作,以产生x86或ARM ISA指令124所定义的结果。因此,硬件指令转译器104将x86或ARM ISA指令124转译为一个或多个微指令126。硬件指令转译器104包含一组电晶体,以一预设方式进行配置来将x86ISA与ARM ISA的机器语言指令124转译为实行微指令126。硬件指令转译器104并具有布林逻辑闸以产生实行微指令126(如图2所示的简单指令转译器204)。在一实施例中,硬件指令转译器104并具有一微码只读存储器(如图2中复杂指令转译器206的元件234)。硬件指令转译器104利用此微码只读存储器,并依据复杂ISA指令124产生实行微指令126,这部分将在图2的说明内容会有进一步的说明。就一较佳实施例而言,硬件指令转译器104不必然要能转译x86使用者操作手册或是ARM使用者操作手册所定义的整个ISA指令124集,而只要能够转译这些指令的一个子集合即可。具体来说,由x86使用者操作手册定义且由硬件指令转译器104转译的ISA指令124的子集合,并不必然对应至任何Intel开发的既有x86ISA处理器,而由ARM使用者操作手册定义且由硬件指令转译器104转译的ISA指令124的子集合并不必然对应至任何由ARM Ltd.开发的既有的ISA处理器。前述一个或多个用以实现x86或ARM ISA指令124的实行微指令126,可由硬件指令转译器104一次全部提供至执行管线112或是依序提供。本实施例的优点在于,硬 件指令转译器104可将实行微指令126直接提供至执行管线112执行,而不需要将这些微指令126存储于设置两者间的存储器。在图1的微处理器100的实施例中,当微处理器100执行x86或是ARM机器语言程序时,微处理器100每一次执行x86或是ARM指令124时,硬件指令转译器104就会将x86或ARM机器语言指令124转译为一个或多个微指令126。不过,图8的实施例则是利用一微指令高速缓冲存储器以避免微处理器100每次执行x86或ARM ISA指令124所会遭遇到的重复转译的问题。硬件指令转译器104的实施例在图2会有更详细的说明。
执行管线112执行由硬件指令转译器104提供的实行微指令126。基本上,执行管线112是一通用高速微指令处理器。虽然本文所描述的功能由具有x86/ARM特定特征的执行管线112执行,但大多数x86/ARM特定功能其实是由此微处理器100的其他部分,如硬件指令转译器104,来执行。在一实施例中,执行管线112执行由硬件指令转译器104接收到的实行微指令126的寄存器重命名、超纯量技术、与非循序执行。执行管线112在图4会有更详细的说明。
微处理器100的微架构包含:(1)微指令集;(2)微指令集的微指令126所能取用的资源集,此资源集是x86与ARM ISA的资源的超集合(superset);以及(3)微处理器100相应于微指令126的执行所定义的微例外事件(micro-exception)集,此微例外事件集是x86ISA与ARM ISA的例外事件的超集合。此微架构不同于x86ISA与ARM ISA。具体来说,此微指令集在许多面向是不同于x86ISA与ARM ISA的指令集。首先,微指令集的微指令指示执行管线112执行的操作与x86ISA与ARM ISA的指令集的指令指示微处理器执行的操作并非一对一对应。虽然其中许多操作相同,不过,仍有一些微指令集指定的操作并非x86ISA和/或ARM ISA指令集所指定。相反地,有一些x86ISA和/或ARM ISA指令集特定的操作并非微指令集所指定。其次,微指令集的微指令是以不同于x86ISA与ARM ISA指令集的指令的编码方式进行编码。亦即,虽然有许多相同的操作(如:相加、偏移、载入、返回)在微指令集以及x86与ARM ISA指令集中都有指定,微指令集与x86或ARM ISA指令集的二进制操作码值对应表并没有一对一对应。微指令集与x86或ARM ISA指令集的二进制操作码值对应表相同通常是巧合,其间仍不具有一对一的对应关系。第三,微指令集的微指令的比特栏与x86或是ARM ISA指令集的指令比特栏也不是一对一对应。
整体而言,微处理器100可执行x86ISA与ARM ISA机器语言程序指令。然而,执行管线112本身无法执行x86或ARM ISA机器语言指令;而是执行由x86ISA与ARM ISA指令转译成的微处理器100微架构的微指令集的实行微指令126。然而,虽然此微架构与x86ISA以及ARM ISA不同,本发明也提出其他实施例将微指令集与其他微架构特定的资源系开放给使用者。在这些实施例中,此微架构可有效地作为在x86ISA与ARM ISA外的一个具有微处理器所能执行的机器语言程序的第三ISA。
下表(表一)描述本发明微处理器100的一实施例的微指令集的微指令126的一些比特栏。
表一
下表(表二)描述本发明微处理器100的一实施例的微指令集的一些微指令。
表二
微处理器100也包含一些微架构特定的资源,如微架构特定的通用寄存器、介质寄存器与区段寄存器(如用于重命名的寄存器或由微码所使用的寄存器)以及未见于x86或ARM ISA的控制寄存器,以及一私有随机存取存储器(PRAM)。此外,此微架构可产生例外事件,也即前述的微例外事件。这些例外事件未见于x86或ARM ISA或是由它们所指定,而通常是微指令126与相关微指令126的重新执行。举例来说,这些情形包含:载入错过(load miss)的情况,其是执行管线112假设载入动作并于错过时重新执行此载入微指令126;错过转译后备缓冲区(TLB),在查表(page table walk)与转译后备缓冲区填满后,重新执行微指令126;浮点微指令126接收一异常操作数(denormal operand)但此操作数被评估为正常,需在执行管线112正常化此操作数后重新执行微指令126;一载入微指令126执行后侦测到一个更早的存储微指令126与其地址冲突(address-colliding)需要重新执行此载入微指令126。需理解的是,本文表一所列的比特栏,表二所列的微指令,以及微架构特定的资源与微架构特定的例外事件,只是作为例示说明本发明的微架构,而非穷尽本发明的所有可能实施例。
寄存器文件106包含微指令126所使用的硬件寄存器,以持有资源与/或目的操作数。执行管线112将其结果128写入寄存器文件106,并由寄存器文件106为微指令126接收操作数。硬件寄存器是引用(instantiate)x86ISA定义与ARM ISA定义通用寄存器是共享寄存器文件106中的一些寄存器。举例来说,在一实施例中,寄存器文件106是引用十五个32比特的寄存器,由ARM ISA寄存器R0至R14以及x86ISA累积寄存器(EAX register)至R14D 寄存器所共享。因此,若是一第一微指令126将一数值写入ARM R2寄存器,随后一后续的第二微指令126读取x86累积寄存器将会接收到与第一微指令126写入相同的数值,反之亦然。此技术特征有利于使x86ISA与ARM ISA的机器语言程序得以快速通过寄存器进行沟通。举例来说假设在ARM机器语言操作系统执行的ARM机器语言程序能够使指令模式132改变为x86ISA,并将控制权转换至一x86机器语言程序以执行特定功能,因为x86ISA可支援一些指令,其执行操作的速度快于ARM ISA,在这种情形下将有利于执行速度的提升。ARM程序可通过寄存器文件106的共享寄存器提供需要的数据给x86执行程序。反之,x86执行程序可将执行结果提供至寄存器文件106的共享寄存器内,以使ARM程序在x86执行程序回复后可见到此执行结果。相似地,在x86机器语言操作系统执行的x86机器语言程序可使指令模式132改变为ARM ISA并将控制权转换至ARM机器语言程序;此x86程序通过寄存器文件106的共享寄存器提供所需的数据给ARM执行程序,而此ARM执行程序可通过寄存器文件106的共享寄存器提供执行结果,以使x86程序在ARM执行程序回复后可见到此执行结果。因为ARM R15寄存器是一独立引用的ARM程序计数器寄存器116,因此,引用x86R15D寄存器的第十六32比特寄存器并不分享给ARM R15寄存器。此外,在一实施例中,x86的十六个128比特XMM0至XMM15寄存器与十六个128比特先进单指令多重数据扩展(Advanced SIMD(“Neon”))寄存器的32比特区段是分享给三十二个32比特ARM VFPv3浮点寄存器。寄存器文件106也引用旗标寄存器(即x86EFLAGS寄存器与ARM条件旗标寄存器),以及x86ISA与ARM ISA所定义的多种控制权与状态寄存器,这些架构控制与状态寄存器包括x86架构的特定模型寄存器(model specific registers,MSRs)与保留给ARM架构的协同处理器(8-15)寄存器。此寄存器文件106也引用非架构寄存器,如用于寄存器重命名或是由微码234所使用的非架构通用寄存器,以及非架构x86特定模型寄存器与实作定义的或是由制造商指定的ARM协同处理器寄存器。寄存器文件106在图5会有更进一步的说明。
存储器子系统108包含一由高速缓冲存储器存储器构成的高速缓冲存储器存储器阶层架构(在一实施例中包含第1层(level-1)指令高速缓冲存储器102、第1层(level-1)数据高速缓冲存储器与第2层混合高速缓冲存储器)。此存储器子系统108并包含多种存储器请求队列,如载入、存储、填入、窥探、 合并写入归并缓冲区。存储器子系统也包含一存储器管理单元(MMU)。存储器管理单元具有转译后备缓冲区(TLBs),尤以独立的指令与数据转译后备缓冲区为佳。存储器子系统还包含一查表引擎(table walk engine)以获得虚拟与实体地址间的转译,来回应转译后备缓冲区的错失。虽然在图1中指令高速缓冲存储器102与存储器子系统108是显示为各自独立,不过,在逻辑上,指令高速缓冲存储器102也是存储器子系统108的一部分。存储器子系统108是设定来使x86与ARM机器语言程序分享一共同的记忆空间,以使x86与ARM机器语言程序容易通过存储器互相沟通。
存储器子系统108得知指令模式132与环境模式136,使其能够在适当ISA内容中执行多种操作。举例来说,存储器子系统108依据指令模式指示符132指示为x86或ARM ISA,来执行特定存储器存取违规的检验(例如过限检验(limit violation check))。在另一实施例中,回应环境模式指示符136的改变,存储器子系统108会更新(flush)转译后备缓冲区;不过在指令模式指示符132改变时,存储器子系统108并不相应地更新转译后备缓冲区,以在前述指令模式指示符132与环境模式指示符136分指x86与ARM的第三与第四模式中提供较佳的效能。在另一实施例中,回应一转译后备缓冲区错失(TKB miss),查表引擎依据环境模式指示符136指示为x86或ARM ISA,从而决定利用x86分页表或ARM分页表执行一分页查表动作以取出转译后备缓冲区。在另一实施例中,若是环境状态指示符136指示为x86ISA,存储器次系统108检查会影响高速缓冲存储器策略的x86ISA控制寄存器(如CR0CD与NW比特)的架构状态;若是环境模式指示符136指示为ARM ISA,则检查相关的ARM ISA控制寄存器(如SCTLR I与C比特)的架构模式。在另一实施例中,若是状态指示符136指示为x86ISA,存储器子系统108检查会影响存储器管理的x86ISA控制寄存器(如CR0PG比特)的架构状态;若是环境模式指示符136指示为ARM ISA,则检查相关的ARM ISA控制寄存器(如SCTLR M比特)的架构模式。在另一实施例中,若是状态指示符136指示为x86ISA,存储器次系统108检查会影响对准检测的x86ISA控制寄存器(如CR0AM比特)的架构状态,若是环境模式指示符136指示为ARM ISA,则检查相关的ARM ISA控制寄存器(如SCTLR A比特)的架构模式。在另一实施例中,若是状态指示符136指示为x86ISA,存储器子系统108(以及用于特权指令的硬件指令转译器104)检查当前所指定特权级 (CPL)的x86ISA控制寄存器的架构状态;若是环境模式指示符136指示为ARM ISA,则检查指示使用者或特权模式的相关ARM ISA控制寄存器的架构模式。不过,在一实施例中,x86ISA与ARM ISA是分享微处理器100中具有相似功能的控制比特组/寄存器,微处理器100并不对各个指令集架构引用独立的控制比特组/寄存器。
虽然配置寄存器122与寄存器文件106在图示中是各自独立,不过配置寄存器122可被理解为寄存器文件106的一部分。配置寄存器122具有一全域配置寄存器,用以控制微处理器100在x86ISA与ARM ISA各种不同面向的操作,例如使多种特征生效或失效的功能。全域配置寄存器可使微处理器100执行ARM ISA机器语言程序的能力失效,即让微处理器100成为一个仅能执行x86指令的微处理器100,并可使其他相关且专属于ARM的能力(如启动x86(launch-x86)与重置至x86(reset-to-x86)的指令124与本文所称的实作定义(implementation-defined)协同处理器寄存器)失效。全域配置寄存器也可使微处理器100执行x86ISA机器语言程序的能力失效,也即让微处理器100成为一个仅能执行ARM指令的微处理器100,并可使其他相关的能力(如启动ARM与重置至ARM的指令124与本文所称的新的非架构特定模型寄存器)失效。在一实施例中,微处理器100在制造时具有预设的配置设定,如微码234中的硬式编码值,此微码234在启动时利用此硬式编码值来设定微处理器100的配置,例如写入编码寄存器122。不过,部分编码寄存器122是以硬件而非以微码234进行设定。此外,微处理器100具有多个熔丝,可由微码234进行读取。这些熔丝可被熔断以修改预设配置值。在一实施例中,微码234读取熔丝值,对预设值与熔丝值执行一互斥或操作,并将操作结果写入配置寄存器122。此外,对于熔丝值修改的效果可利用一微码234修补而恢复。在微处理器100能够执行x86与ARM程序的情况下,全域配置寄存器可用于确认微处理器100(或如图7所示处理器的一多核心部分的一特定核心100)在重置或如图6A或图6B所示在回应x86形式的INIT指令时,会以x86微处理器的形态还是以ARM微处理器的形态进行开机。全域配置寄存器并具有一些比特提供起始预设值给特定的架构控制寄存器,如ARMISA SCTLT与CPACR寄存器。图7所示的多核心的实施例中仅具有一个全域配置寄存器,即使各核心的配置可分别设定,如在指令模式指示符132与环境模式指示符136都设定为x86或ARM时,选择以x86核心或是ARM核心 开机。此外,启动ARM指令126与启动x86指令126可用以在x86与ARM指令模式132间动态切换。在一实施例中,全域配置寄存器可通过一x86RDMSR指令对一新的非架构特定模型寄存器进行读取,并且其中部分的控制比特可通过x86WRMSR指令对前述新的非架构特定模型寄存器的写入来进行写入操作。全域配置寄存器还可通过ARM MCR/MCRR指令对一对应至前述新的非架构特定模型寄存器的ARM协处理器寄存器进行读取,而其中部分的控制比特可通过ARM MRC/MRRC指令对应至此新的非架构特定模型寄存器的ARM协处理器寄存器的写入来进行写入操作。
配置寄存器122并包含多种不同的控制寄存器从不同面向控制微处理器100的操作。这些非x86(non-x86)/ARM的控制寄存器包括本文所称的全域控制寄存器、非指令集架构控制寄存器、非x86/ARM控制寄存器、通用控制寄存器、以及其他类似的寄存器。在一实施例中,这些控制寄存器可利用x86RDMSR/WRMSR指令至非架构特定模型寄存器(MSRs)进行存取、以及利用ARM MCR/MRC(或MCRR/MRRC)指令至新实作定义的协同处理器寄存器进行存取。举例来说,微处理器100包含非专属于x86/ARM的控制寄存器,以确认微型(fine-grained)高速缓冲存储器控制,此微型高速缓冲存储器控制小于x86ISA与ARM ISA控制寄存器所能提供者。
在一实施例中,微处理器100提供ARM ISA机器语言程序通过实作定义ARM ISA协同处理器寄存器存取x86ISA特定模型寄存器,这些实作定义ARM ISA协同处理器寄存器是直接对应于相对应的x86特定模型寄存器。此特定模型寄存器的地址指定于ARM ISA R1寄存器。此数据由MRC/MRRC/MCR/MCRR指令所指定的ARM ISA寄存器读出或写入。在一实施例中,特定模型寄存器的一子集合是以密码保护,也即指令在尝试存取特定模型寄存器时必须使用密码。在此实施例中,密码指定于ARM R7:R6寄存器。若是此存取动作导致x86通用保护错误,微处理器100随即产生一ARM ISA未定义指令中止模式(UND)例外事件。在一实施例中,ARM协同处理器4(地址为:0,7,15,0)存取相对应的x86特定模型寄存器。
微处理器100并包含一个耦接至执行管线112的中断控制器(未图示)。在一实施例中,此中断控制器是一x86型式的先进可程序化中断控制器(APIC)。中断控制器将x86ISA中断事件对应至ARM ISA中断事件。在一实施例中,x86INTR是对应至ARM IRQ中断事件;x86NMI是对应至ARM IRQ 中断事件;x86INIT在微处理器100启动时引发起动重置循序过程(INIT-reset sequence),无论那一个指令集架构(x86或ARM)原本是由硬件重置启动的;x86SMI是对应至ARM FIQ中断事件;以及x86STPCLK、A20、Thermal、PREQ、与Rebranch则不对应至ARM中断事件。ARM机器语言能通过新的实作定义的ARM协同处理器寄存器存取先进可程序化中断控制器的功能。在一实施例中,APIC寄存器地址指定于ARM R0寄存器,此APIC寄存器的地址与x86的地址相同。在一实施例中,ARM协同处理器6是通常用于操作系统通常需执行的特权模式功能(privileged mode functions)。此ARM协同处理器6的地址为:0,7,nn,0;其中nn是15时可存取先进可程序化中断控制器;nn是12-14以存取汇流排介面单元(BIU)藉以在处理器汇流排上执行8比特、16比特与32比特输入/输出循环。微处理器100并包含一汇流排介面单元(未图示),此汇流排介面单元耦接至存储器子系统108与执行管线112,作为微处理器100与处理器汇流排的介面。在一实施例中,处理器汇流排符合一个Intel Pentium微处理器家族的微处理器汇流排的规格。ARM机器语言程序可通过新的实作定义的ARM协同处理器寄存器存取汇流排介面单元的功能以在处理器汇流排上产生输入/输出循环,即由输入输出汇流排传送至输入输出空间的一特定地址,藉以与系统晶片组沟通。举例来说,ARM机器语言程序可产生一SMI认可的特定循环或是关于C状态转换的输入输出循环。在一实施例中,输入输出地址指定于ARM R0寄存器。在一实施例中,微处理器100具有电力管理能力,如已知的P-state与C-state管理。ARM机器语言程序可通过新的实作定义ARM同协处理器寄存器执行电力管理。在一实施例中,微处理器100包含一加密单元(未图示),此加密单元位于执行管线112内。在一实施例中,此加密单元实质上类似于具有Padlock安全科技功能的VIA微处理器的加密单元。ARM机器语言程序能通过新的实作定义的ARM协同处理器寄存器取得加密单元的功能,如加密指令。在一实施例中,ARM协同处理器5系用于通常由使用者模式应用程序执行的使用者模式功能,例如那些使用加密单元的技术特征所产生的功能。
在微处理器100执行x86ISA与ARM ISA机器语言程序时,每一次微处理器100执行x86或是ARM ISA指令124,硬件指令转译器104就会执行硬件转译。反之,采用软件转译的系统则能在多个事件中重复使用同一个转译,而非对之前已转译过的机器语言指令重复转译,因而有助于改善效能。此外, 图8的实施例使用微指令高速缓冲存储器以避免微处理器每一次执行x86或ARM ISA指令124时可能发生的重复转译动作。本发明的前述各个实施例所描述的方式配合不同的程序的特征及其执行环境,因此确实有助于改善效能。
分支预测器114存取之前执行过的x86与ARM分支指令的历史数据。分支预测器114依据之前的高速缓冲存储器历史数据,来分析由指令高速缓冲存储器102所取得高速缓冲存储器线是否存在x86与ARM分支指令以及其目标地址。在一实施例中,高速缓冲存储器历史数据包含分支指令124的存储器地址、分支目标地址、一个方向指示符、分支指令的种类、分支指令在高速缓冲存储器线的起始比特组、以及一个显示是否横跨多个高速缓冲存储器管线的指标。在一实施例中,如2011年4月7日提出的美国第61/473,067号临时申请案“APPARATUS AND METHOD FOR USING BRANCHPREDICTION TO EFFICIENTLY EXECUTE CONDITIONAL NON-BRANCHINSTRUCTIONS”,其提供改善分支预测器114的效能以使其能预测ARM ISA条件非分支指令方向的方法。在一实施例中,硬件指令转译器104并包含一静态分支预测器,可依据执行码、条件码的类型、向后(backward)或向前(forward)等等数据,预测x86与ARM分支指令的方向与分支目标地址。
本发明也思及多种不同的实施例以实现x86ISA与ARM ISA定义的不同特征的组合。举例来说,在一实施例中,微处理器100实现ARM、Thumb、ThumbEE与Jazelle指令集状态,但对Jazelle扩充指令集则是提供无意义的实现(trivial implementation);微处理器100并实现下述扩充指令集,包含:Thumb-2、VFPv3-D32、先进单指令多重数据(Advanced SIMD(Neon))、多重处理、与VMSA;但不实现下述扩充指令集,包含:安全性扩充、快速内容切换扩充、ARM除错(ARM程序可通过ARM MCR/MRC指令至新的实作定义协处理器寄存器取得x86除错功能)、效能侦测计数器(ARM程序可通过新的实作定义协处理器寄存器取得x86效能计数器)。举例来说,在一实施例中,微处理器100将ARM SETEND指令视为一无操作指令(NOP)并且只支持Little-endian数据格式。在另一实施例中,微处理器100并不实现x86SSE4.2的功能。
本发明考量多个实施例的微处理器100的改良,例如对台湾台北的威盛电子股份有限公司所生产的商用微处理器VIA NanoTM进行改良。此Nano微处理器能够执行x86ISA机器语言程序,但无法执行ARM ISA机器语言程序。 Nano微处理器包含高效能寄存器重命名、超纯量指令技术、非循序执行管线与一硬件转译器以将x86ISA指令转译为微指令供执行管线执行。本发明对于Nano硬件指令转译器的改良,使其除了可转译x86机器语言指令外,还可将ARM ISA机器语言指令转译为微指令供执行管线执行。硬件指令转译器的改良包含简单指令转译器的改良与复杂指令转译器的改良,也包含微码在内。此外,微指令集可加入新的微指令以支持ARM ISA机器语言指令与微指令间的转译,并可改善执行管线使能执行新的微指令。此外,Nano寄存器文件与存储器子系统也可经改善使其能支持ARM ISA,也包含特定寄存器的共享。分支预测单元可通过改善使其在x86分支预测外,也能适用于ARM分支指令预测。此实施例的优点在于,因为在很大的程度上于ISA无关(largely ISA-agnostic)的限制,因而只需对于Nano微处理器的执行管线进行轻微的修改,即可适用于ARM ISA指令。对于执行管线的改良包含条件码旗标的产生与使用方式、用以更新与回报指令指示符寄存器的语意、存取特权保护方法、以及多种存储器管理相关的功能,如存取违规检测、分页与转译后备缓冲区(TLB)的使用、与高速缓冲存储器策略等。前述内容仅为例示,而非限定本案发明,其中部分特征在后续内容会有进一步的说明。最后,如前述,x86ISA与ARM ISA定义的部分特征可能无法为前述对Nano微处理器进行改良的实施例所支持,这些特征如x86SSE4.2与ARM安全性扩充、快速内容切换扩充、除错与效能计数器,其中部分特征在后续内容会有更进一步的说明。此外,前述通过对于Nano处理器的改良以支持ARM ISA机器语言程序,为一整合使用设计、测试与制造资源以完成能够执行x86与ARM机器语言程序的单积体电路产品的实施例,此单积体电路产品涵盖市场绝大多数既存的机器语言程序,而符合现今市场潮流。本文所述的微处理器100的实施例实质上可被配置为x86微处理器、ARM微处理器、或是可同时执行x86ISA与ARM ISA机器语言程序微处理器。此微处理器可通过在单一微处理器100(或是图7的核心100)上的x86与ARM指令模式132间的动态切换以取得同时执行x86ISA与ARM ISA机器语言程序的能力,也可通过将多核心微处理100(对应于图7所示)的一个或多个核心配置为ARM核心而一个或多个核心配置为x86核心,也即通过在多核心100的每一个核心上进行x86与ARM指令间的动态切换,以取得同时执行x86ISA与ARM ISA机器语言程序的能力。此外,传统上,ARM ISA核心被设计作为知识产权核心,而被各个第三 者协力厂商纳入其应用,如系统晶片与/或嵌入式应用。因此,ARM ISA并不具有一特定的标准处理器汇流排,作为ARM核心与系统的其他部分(如晶片组或其他周边设备)间的介面。有利的是,Nano处理器已具有一高速x86型式处理器汇流排作为连接至存储器与周边设备的介面,以及一存储器一致性结构可协同微处理器100在x86电脑系统环境下支持ARM ISA机器语言程序的执行。
请参照图2,图中是以方块图详细显示图1的硬件指令转译器104。此硬件指令转译器104包含硬件,更具体来说,就是电晶体的集合。硬件指令转译器104包含一指令格式化程序202,由图1的指令高速缓冲存储器102接收指令模式指示符132以及x86ISA与ARM ISA指令比特组124的区块,并输出格式化的x86ISA与ARM ISA指令242;一简单指令转译器(SIT)204接收指令模式指示符132与环境模式指示符136,并输出实行微指令244与一微码地址252;一复杂指令转译器(CIT)206(也称为一微码单元),接收微码地址252与环境模式指示符136,并提供实行微指令246;以及一多工器212,其一输入端由简单指令转译器204接收微指令244,另一输入端由复杂指令转译器206接收微指令246,并提供实行微指令126至图1的执行管线112。指令格式化程序202在图3会有更详细的说明。简单指令转译器204包含一x86简单指令转译器222与一ARM简单指令转译器224。复杂指令转译器206包含一接收微码地址252的微程序计数器232,一由微程序计数器232接收只读存储器地址254的微码只读存储器234,一用以更新微程序计数器的微序列器236、一指令间接寄存器(instruction indirection register,IIR)235、以及一用以产生复杂指令转译器所输出的实行微指令246的微转译器(microtranslator)237。由简单指令转译器204所产生的实行微指令244与由复杂指令转译器206所产生的实行微指令246都属于微处理器100的微架构的微指令集的微指令126,并且都可直接由执行管线112执行。
多工器212受到一选择输入248所控制。一般的时候,多工器212会选择来自简单指令转译器204的微指令;然而,当简单指令转译器204遭遇一复杂x86或ARM ISA指令242,而将控制权转移、或遭遇陷阱(traps)、以转移至复杂指令转译器206时,简单指令转译器204控制选择输入248让多工器212选择来自复杂指令转译器的微指令246。当寄存器分配表(RAT)402(请参照图4)遭遇到一个微指令126具有一特定比特组指出其为实现复杂ISA 指令242序列的最后一个微指令126时,寄存器分配表402随即控制选择输入248使多工器212恢复至选择来自简单指令转译器204的微指令244。此外,当重排缓冲器422(请参照图4)准备要使微指令126引退且该指令的状态指出需要选择来自复杂指令器的微指令时,重排缓冲器422控制选择输入248使多工器212选择来自复杂指令转译器206的微指令246。前述需引退微指令126的情形如:微指令126已经导致一例外条件产生。
简单指令转译器204接收ISA指令242,并且在指令模式指示符132指示为x86时,将这些指令视为x86ISA指令进行解码,而在指令模式指示符132指示为ARM时,将这些指令视为ARM ISA指令进行解码。简单指令转译器204并确认此ISA指令242为简单或是复杂ISA指令。简单指令转译器204能够为简单ISA指令242,输出所有用以实现此ISA指令242的实行微指令126;也就是说,复杂指令转译器206并不提供任何实行微指令126给简单ISA指令124。反之,复杂ISA指令124要求复杂指令转译器206提供至少部分(若非全部)的实行微指令126。在一实施例中,对ARM与x86ISA指令集的指令124的子集合而言,简单指令转译器204输出部分实现x86/ARMISA指令126的微指令244,随后将控制权转移至复杂指令转译器206,由复杂指令转译器206接续输出剩下的微指令246来实现x86/ARM ISA指令126。多工器212受到控制,首先提供来自简单指令转译器204的实行微指令244作为提供至执行管线112的微指令126,随后提供来自复杂指令转译器206的实行微指令246作为提供至执行管线112的微指令126。简单指令转译器204知道由硬件指令转译器104执行,以针对多个不同复杂ISA指令124产生实行微指令126的多个微码程序中的起始微码只读存储器234的地址,并且,当简单指令转译器204对一复杂ISA指令242进行解码时,简单指令转译器204会提供相对应的微码程序地址252至复杂指令转译器206的微程序计数器232。简单指令转译器204输出实现ARM与x86ISA指令集中相当大比例的指令124所需的微指令244,尤其是对于需要由x86ISA与ARM ISA机器语言程序来说较常执行的ISA指令124,而只有相对少数的指令124需要由复杂指令转译器206提供实行微指令246。依据一实施例,主要由复杂指令转译器206实现的x86指令如RDMSR/WRMSR、CPUID、复杂运算指令(如FSQRT与超越指令(transcendental instruction))、以及IRET指令;主要由复杂指令转译器206实现的ARM指令如MCR、MRC、MSR、MRS、 SRS、与RFE指令。前述列出的指令并非限定本案发明,仅例示指出本案复杂指令转译器206所能实现的ISA指令的种类。
当指令模式指示符132指示为x86,x86简单指令转译器222对于x86ISA指令242进行解码,并且将其转译为实行微指令244;当指令模式指示符132指示为ARM,ARM简单指令转译器224对于ARM ISA指令242进行解码,并将其转译为实行微指令244。在一实施例中,简单指令转译器204是一可由已知合成工具合成的布林逻辑方块。在一实施例中,x86简单指令转译器222与ARM简单指令转译器224是独立的布林逻辑方块;不过,在另一实施例中,x86简单指令转译器222与ARM简单指令转译器224位于同一个布林逻辑方块。在一实施例中,简单指令转译器204在单一时脉周期中转译最多三个ISA指令242并提供最多六个实行微指令244至执行管线112。在一实施例中,简单指令转译器204包含三个次转译器(未图示),各个次转译器转译单一个格式化的ISA指令242,其中,第一个转译器能够转译需要不多于三个实行微指令126的格式化ISA指令242;第二个转译器能够转译需要不多于两个实行微指令126的格式化ISA指令242;第三次转译器能后转译需要不多于一个实行微指令126的格式化ISA指令242。在一实施例中,简单指令转译器204包含一硬件状态机器使其能够在多个时脉周期输出多个微指令244以实现一个ISA指令242。
在一实施例中,简单指令转译器204并依据指令模式指示符132与/或环境模式指示符136,执行多个不同的例外事件检测。举例来说,若是指令模式指示符132指示为x86且x86简单指令转译器222对一个就x86ISA而言是无效的ISA指令124进行解码,简单指令转译器204随即产生一个x86无效操作码例外事件;相似地,若是指令模式指示符132指示为ARM且ARM简单指令转译器224对一个就ARM ISA而言是无效的ISA指令124进行解码,简单指令转译器204随即产生一个ARM未定义指令例外事件。在另一实施例中,若是环境模式指示符136指示为x86ISA,简单指令转译器204随即检测是否其所遭遇的每个x86ISA指令242需要一特别特权级(particular privilege level),若是,检测当前特权级(CPL)是否满足此x86ISA指令242所需的特别特权级,并于不满足时产生一例外事件;相似地,若是环境模式指示符136指示为ARM ISA,简单指令转译器204随即检测是否每个格式化ARM ISA指令242需要一特权模式指令,若是,检测当前的模式是否为特权 模式,并于现在模式为使用者模式时,产生一例外事件。复杂指令转译器206对于特定复杂ISA指令242也执行类似的功能。
复杂指令转译器206输出一系列实行微指令246至多工器212。微码只读存储器234存储微码程序的只读存储器指令247。微码只读存储器234输出只读存储器指令247以回应由微码只读存储器234取得的下一个只读存储器指令247的地址,并由微程序计数器232所持有。一般来说,微程序计数器232由简单指令转译器204接收其起始值252,以回应简单指令转译器204对于一复杂ISA指令242的解码动作。在其他情形,例如回应一重置或例外事件,微程序计数器232分别接收重置微码程序地址或适当的微码例外事件处理地址。微序列器236通常依据只读存储器指令247的大小,将微程序计数器232更新为微码程序的序列以及选择性地更新为执行管线112回应控制型微指令126(如分支指令)执行所产生的目标地址,以使指向微码只读存储器234内的非程序地址的分支生效。微码只读存储器234是制造于微处理器100的半导体晶片内。
除了用来实现简单ISA指令124或部分复杂ISA指令124的微指令244外,简单指令转译器204也产生ISA指令信息255以写入指令间接寄存器235。存储于指令间接寄存器(IIR)235的ISA指令信息255包含关于被转译的ISA指令124的信息,例如,确认由ISA指令所特定的来源与目的寄存器的信息以及ISA指令124的格式,如ISA指令124是在存储器的一操作数上或是在微处理器100的一架构寄存器106内执行。这样可藉此使微码程序能够变为通用,也即不需对于各个不同的来源与/或目的架构寄存器106使用不同的微码程序。尤其是,简单指令转译器204知道寄存器文件106的内容,包含哪些寄存器是共享寄存器504,而能将x86ISA与ARM ISA指令124内提供的寄存器信息,通过ISA指令信息255的使用,转译至寄存器文件106内的适当的寄存器。ISA指令信息255包含一移位栏、一立即栏、一常数栏、各个来源操作数与微指令126本身的重命名信息、用以实现ISA指令124的一系列微指令126中指示第一个与最后一个微指令126的信息、以及存储由硬件指令转译器104对ISA指令124转译时所搜集到的有用信息的其他位元。
微转译器237由微码只读存储器234与间接指令寄存器235的内容接收只读存储器指令247,并相应地产生实行微指令246。微转译器237依据由间接指令寄存器235接收的信息,如依据ISA指令124的格式以及由其所指定 的来源与/或目的架构寄存器106组合,来将特定只读存储器指令247转译为不同的微指令246系列。在一些实施例中,许多ISA指令信息255与只读存储器指令247合并以产生实行微指令246。在一实施例中,各个只读存储器指令247大约有40比特宽,并且各个微指令246大约有200比特宽。在一实施例中,微转译器237最多能够由一个微读存储器指令247产生三个微指令246。微转译器237包含多个布林逻辑以产生实行微指令246。
使用微转译器237的优点在于,由于简单指令转译器204本身就会产生ISA指令信息255,微码只读存储器234不需要存储间接指令寄存器235提供的ISA指令信息255,因此可以减少其大小。此外,因为微码只读存储器234不需要为了各个不同的ISA指令格式、以及各个来源与/或目的架构寄存器106的组合,提供一独立的程序,微码只读存储器234程序可包含较少的条件分支指令。举例来说,若是复杂ISA指令124是存储器格式,简单指令转译器204会产生微指令244的逻辑编程,包含将源操作数由存储器载入一暂时寄存器106的微指令244,并且微转译器237会产生微指令246将结果由暂时寄存器106存储至存储器。然而,若是复杂ISA指令124是寄存器格式(register form),此逻辑编程会将源操作数由ISA指令124所特定的来源寄存器移动至暂时寄存器,并且微转译器237会产生微指令246用以将结果由暂时寄存器移动至由间接指令寄存器235所指定的架构目的寄存器106。在一实施例中,微转译器237的许多面向是类似于2010年4月23日提出的美国专利第12/766,244号申请案,在此系列为参考数据。不过,本案的微转译器237除了x86ISA指令124外,也经改良以转译ARM ISA指令124。
值得注意的是,微程序计数器232不同于ARM程序计数器116与x86指令指示符118,也即,微程序计数器232并不持有ISA指令124的地址,微程序计数器232所持有的地址也不落于系统存储器地址空间内。此外,更值得注意的是,微指令246由硬件指令转译器104所产生,并且直接提供给执行管线112执行,而非作为执行管线112的执行结果128。
请参照图3,图中是以方块图详述图2的指令格式化程序202。指令格式化程序202由图1的指令高速缓冲存储器102接收x86ISA与ARM ISA指令比特组124区块。凭借x86ISA指令长度可变的特性,x86指令124可以由指令比特组124区块的任何比特组开始。由于x86ISA容许首码比特组的长度会受到当前地址长度与操作数长度预设值的影响,因此确认高速缓冲存储 器区块内的x86ISA指令的长度与位置的任务会更为复杂。此外,依据当前ARM指令集状态322与ARM ISA指令124的操作码,ARM ISA指令的长度不是2比特组就是4比特组,因而不是2比特组对齐就是4比特组对齐。因此,指令格式化程序202由指令比特组124串(stream)撷取不同的x86ISA与ARM ISA指令,此指令比特组124串由指令高速缓冲存储器102接收的区块所构成。也就是说,指令格式化程序202格式化x86ISA与ARM ISA指令比特组串,因而大幅简化图2的简单指令转译器对ISA指令124进行解码与转译的困难任务。
指令格式化程序202包含一预解码器302,在指令模式指示符132指示为x86时,预解码器302预先将指令比特组124视为x86指令比特组进行解码以产生预解码信息,在指令模式指示符132指示为ARM时,预解码器302预先将指令比特组124视为ARM指令比特组进行解码以产生预解码信息。指令比特组队列(IBQ)304接收ISA指令比特组124区块以及由预解码器302产生的相关预解码信息。
一个由长度解码器与纹波逻辑306构成的阵列接收指令比特组队列304的底部项目(bottom entry)的内容,也即ISA指令比特组124区块与相关的预解码信息。此长度解码器与纹波逻辑306也接收指令模式指示符132与ARMISA指令集状态322。在一实施例中,ARM ISA指令集状态322包含ARM ISACPSR寄存器的J与T比特。为了回应其输入信息,此长度解码器与纹波逻辑306产生解码信息,此解码信息包含ISA指令比特组124区块内的x86与ARM指令的长度、x86首码信息、以及关于各个ISA指令比特组124的指示符,此指示符指出此比特组是否为ISA指令124的起始比特组、终止比特组、以及/或一有效比特组。一多工器队列308接收ISA指令比特组126区块、由预解码器302产生的相关预解码信息、以及由长度解码器与纹波逻辑306产生的相关解码信息。
控制逻辑(未图示)检验多工器队列(MQ)308底部项目的内容,并控制多工器312撷取不同的或格式化的ISA指令与相关的预解码与解码信息,所撷取的信息提供至一格式化指令队列(FIQ)314。格式化指令队列(FIQ)314在格式化ISA指令242与提供至图2的简单指令转译器204的相关信息间作为缓冲。在一实施例中,多工器312在每一个时钟周期内撷取至多三个格式化ISA指令与相关的信息。
在一实施例中,指令格式化程序202在许多方面类似于2009年10月1日提出的美国专利第12/571,997号、第12/572,002号、第12/572,045号、第12/572,024号、第12/572,052号与第12/572,058号申请案共同公开的XIBQ、指令格式化程序、与FIQ,这些申请案在此系列为参考数据。然而,前述专利申请案所揭示的XIBQ、指令格式化程序、与FIQ通过修改,使其能在格式化x86ISA指令124外,还能格式化ARM ISA指令124。长度解码器306被修改,使能对ARM ISA指令124进行解码以产生长度以及起点、终点与有效性的比特组指示符。尤其,若是指令模式指示符132指示为ARM ISA,长度解码器306检测当前ARM指令集状态322与ARM ISA指令124的操作码,以确认ARM指令124是一个2比特组长度或是4比特组长度的指令。在一实施例中,长度解码器306包含多个独立的长度解码器分别用以产生x86ISA指令124的长度数据以及ARM ISA指令124的长度数据,这些独立的长度解码器的再以连线或(wire-ORed)耦接在一起,以提供输出至纹波逻辑306。在一实施例中,此格式化指令队列314包含独立的队列以持有格式化指令242的多个互相分离的部分。在一实施例中,指令格式化程序202在单一时脉周期内,提供简单指令转译器204至多三个格式化ISA指令242。
请参照图4,图中是以方块图详细显示图1的执行管线112,此执行管线112耦接至硬件指令转译器104以直接接收来自图2的硬件指令转译器104的实行微指令。执行管线112包含一微指令队列401,以接收微指令126;一寄存器分配表402,由微指令队列401接收微指令;一指令调度器404,耦接至寄存器分配表402;多个保留站406,耦接至指令调度器404;一指令发送单元408,耦接至保留站406;一重排缓冲器422,耦接至寄存器分配表402、指令调度器404与保留站406;以及执行单元424耦接至保留站406、指令发送单元408与重排缓冲器422。寄存器分配表402与执行单元424接收指令模式指示符132。
在硬件指令转译器104产生实行微指令126的速率不同于执行管线112执行微指令126的情况下,微指令队列401是作为一缓冲器。在一实施例中,微指令队列401包含一个M至N可压缩微指令队列。此可压缩微指令队列使执行管线112能够在一给定的时脉周期内,从硬件指令转译器104接收至多M个(在一实施例中,M是六)微指令126,并且随后将接收到的微指令126存储至宽度为N(在一实施例中,N是三)的队列结构,以在每个时钟周期 提供至多N个微指令126至寄存器分配表402,此寄存器分配表402能够在每个时脉周期处理最多N个微指令126。微指令队列401是可压缩的,因它不论接收到微指令126的特定时脉周期为何,都会依序将由硬件指令转译器104所传送的微指令126时填满队列的空项目,因而不会在队列项目中留下空洞。此方法的优点为能够充分利用执行单元424(请参照图4),因为它可对不可压缩宽度M或宽度M的指令队列提供较高指令储存效能。具体来说,不可压缩宽度N的队列会需要硬件指令转译器104,尤其是简单指令转译器204,在之后的时脉周期内会重复转译一个或多个已经在之前的时脉周期内已经被转译过的ISA指令124。会这样做的原因是,不可压缩宽度N的队列无法在同一个时脉周期接收多于N个微指令126,而重复转译将导致电力耗损。不过,不可压缩宽度M的队列虽然不需要简单指令转译器204重复转译,但却会在队列项目中产生空洞而导致浪费,因而需要更多列项目以及一个较大且更耗能的队列来提供相当的缓冲能力。
寄存器分配表402由微指令队列401接收微指令126并产生与微处理器100内进行中的微指令126的附属信息,寄存器分配表402并执行寄存器重命名动作增加微指令平行处理,以利于执行管线112的超纯量、非循序执行能力。若是ISA指令124指示为x86,寄存器分配表402会对应于微处理器100的x86ISA寄存器106,产生附属信息且执行相对应的寄存器重命名动作;反之,若是ISA指令124指示为ARM,寄存器分配表402就会对应于微处理器100的ARM ISA寄存器106,产生附属信息且执行相对应的寄存器重命名动作;不过,如前述,部分寄存器106可能是由x86ISA与ARM ISA所共享。寄存器分配表402也在重排缓冲器422中依据程序顺序配置一项目给各个微指令126,因此重排缓冲器422可使微指令126以及其相关的x86ISA与ARMISA指令124依据程序顺序进行引退,即使微指令126的执行对应于其所欲实现的x86ISA与ARM ISA指令124而言是以非循序的方式进行的。重排缓冲器422包含一环形队列,此环形队列的各个项目用以存储关于进行中的微指令126的信息,此信息除了其他事项,还包含微指令126执行状态、一个确认微指令126是由x86或是ARM ISA指令124所转译的标签、以及用以存储微指令126的结果的存储空间。
指令调度器404由寄存器分配表402接收寄存器重命名微指令126与附属信息,并依据指令的种类以及执行单元424的可利用性,将微指令126及 其附属信息分派至关联于适当的执行单元424的保留站406。此执行单元424将会执行微指令126。
对各个在保留站406中等待的微指令126而言,指令发布单元408测得相关执行单元424可被运用且其附属信息被满足(如来源操作数可被运用)时,即发布微指令126至执行单元424供执行。如前述,指令发布单元408所发布的微指令126,可以非循序执行于程序次序外以及以超纯量方式执行。
在一实施例中,执行单元424包含整数/分支(integer/branch)单元412、介质单元414、载入/存储单元416、以及浮点单元418。执行单元424执行微指令126以产生结果128并提供至重排缓冲器422。虽然执行单元424并不大受到其所执行的微指令126由x86或是ARM ISA指令124转译而来的影响,执行单元424仍会使用指令模式指示符132与环境模式指示符136以执行相对较小的微指令126子集。举例来说,执行管线112管理旗标的产生,其管理会依据指令模式指示符132指示为x86ISA或是ARM ISA而有些微不同,并且,执行管线112依据指令模式指示符132指示为x86ISA或是ARM ISA,对x86EFLAGS寄存器或是程序状态寄存器(PSR)内的ARM条件码旗标进行更新。在另一实例中,执行管线112对指令模式指示符132进行取样以决定去更新x86指令指示符(IP)118或ARM程序计数器(PC)116,还是更新共通的指令地址寄存器。此外,执行管线122也藉此来决定使用x86或是ARM语意(semantics)执行前述动作。一旦微指令126变成微处理器100中最旧的已完成微指令126(也即,在重排缓冲器422队列的排头且呈现已完成的状态)且其他用以实现相关的ISA指令124的所有微指令126均已完成,重排缓冲器422就会引退ISA指令124并释放与实行微指令126相关的项目。在一实施例中,微处理器100可在一时脉周期内引退至多三个ISA指令124。此处理方法的优点在于,执行管线112是一高效能、通用执行引擎,其可执行支持x86ISA与ARM ISA指令124的微处理器100微架构的微指令126。
请参照图5,图中是以方块图详述图1的寄存器文件106。就一较佳实施例而言,寄存器文件106为独立的寄存器区块实体。在一实施例中,通用寄存器由一具有多个读出埠与写入埠的寄存器文件实体来实现;其他寄存器可在实体上独立于此通用寄存器文件以及其他会存取这些寄存器但具有较少的读取写入埠的邻近功能方块。在一实施例中,部分非通用寄存器,尤其是那些不直接控制微处理器100的硬件而仅存储微码234会使用到的数值的寄存 器(如部分x86MSR或是ARM协同处理器寄存器),则是在一个微码234可存取的私有随机存取存储器(PRAM)内实现。不过,x86ISA与ARM ISA编程者无法见到此私有随机存取存储器,也即此存储器并不在ISA系统存储器地址空间内。
总的来说,如图5所示,寄存器文件106在逻辑上是区分为三种,也即ARM特定的寄存器502、x86特定的寄存器504、以及共享寄存器506。在一实施例中,共享寄存器506包含十五个32比特寄存器,由ARM ISA寄存器R0至R14以及x86ISA EAX至R14D寄存器所共享,另外有十六个128比特寄存器由x86ISA XMM0至XMM15寄存器以及ARM ISA先进单指令多重数据扩展(Neon)寄存器所共享,这些寄存器的部分是重迭于三十二个32比特ARM VFPv3浮点寄存器。如前文图1所述,通用寄存器的共享意指由x86ISA指令124写入一共享寄存器的数值,会被ARM ISA指令124在随后读取此共享寄存器时见到,反之亦然。此方式的优点在于,能够使x86ISA与ARM ISA程序通过寄存器互相沟通。此外,如前述,x86ISA与ARM ISA的架构控制寄存器的特定比特也可被引用为共享寄存器506。如前述,在一实施例中,x86特定模型寄存器可被ARM ISA指令124通过实作定义协处理器寄存器存取,因而是由x86ISA与ARM ISA所共享。此共享寄存器506可包含非架构寄存器,例如条件旗标的非架构同等物,这些非架构寄存器同样由寄存器分配表402重命名。硬件指令转译器104知道哪一个寄存器由x86ISA与ARMISA所共享,因而会产生实行微指令126来存取正确的寄存器。
ARM特定的寄存器502包含ARM ISA所定义但未被包含于共享寄存器506的其他寄存器,而x86特定的寄存器502包含x86ISA所定义但未被包含于共享寄存器506的其他寄存器。举例来说,ARM特定的寄存器502包含ARM程序计数器116、CPSR、SCTRL、FPSCR、CPACR、协处理器寄存器、多种例外事件模式的备用(banked)通用寄存器与程序状态保存寄存器(saved program status registers,SPSRs)等等。前文列出的ARM特定寄存器502并非为限定本案发明,仅为例示以说明本发明。另外,举例来说,x86特定的寄存器504包含x86指令指示符(EIP或IP)118、EFLAGS、R15D、64比特的R0至R15寄存器的上面32比特(也即未落于共享寄存器506的部分)、区段寄存器(SS,CS,DS,ES,FS,GS)、x87FPU寄存器、MMX寄存器、控制寄存器(如CR0-CR3、CR8)等。前文列出的x86特定寄存器504并非为限定 本案发明,而仅为例示以说明本发明。
在一实施例中,微处理器100包含新的实作定义ARM协同处理器寄存器,在指令模式指示符132指示为ARM ISA时,此实作定义协同处理器寄存器可被存取以执行x86ISA相关的操作。这些操作包含但不限于:将微处理器100重置为一x86ISA处理器(重置至x86指令)的能力;将微处理器100初始化为x86特定的状态,将指令模式指示符132切换至x86,并开始在一特定x86目标地址撷取x86指令124(启动至x86指令)的能力;存取前述全域配置寄存器的能力;存取x86特定寄存器(如EFLAGS)的能力,此x86寄存器是指定在ARM R0寄存器中,存取电力管理(如P状态与C状态的转换),存取处理器汇流排功能(如输入/输出循环)、中断控制器的存取、以及加密加速功能的存取。此外,在一实施例中,微处理器100包含新的x86非架构特定模型寄存器,在指令模式指示符132指示为x86ISA时,此非架构特定模型寄存器可被存取以执行ARM ISA相关的操作。这些操作包含但不限于:将微处理器100重置为一ARM ISA处理器(重置至ARM指令)的能力;将微处理器100初始化为ARM特定的状态,将指令模式指示符132切换至ARM,且开始在一特定ARM目标地址撷取ARM指令124(启动至ARM指令)的能力;存取前述全域配置寄存器的能力;存取ARM特定寄存器(如CPSR)的能力,此ARM寄存器是指定在EAX寄存器内。
请参照第6A与6B图,图中显示一流程说明图1的微处理器100的操作程序。此流程始于步骤602。
如步骤602所示,微处理器100被重置。可向微处理器100的重置输入端发出信号来进行此重置动作。此外,在一实施例中,此微处理器汇流排是一x86型式的处理器汇流排,此重置动作可由x86型式的INIT命令进行。回应此重置动作,微码234的重置程序是被调用来执行。此重置微码的动作包含:(1)将x86特定的状态504初始化为x86ISA所指定的预设数值;(2)将ARM特定的状态502初始化为ARM ISA所指定的预设数值;(3)将微处理器100的非ISA特定的状态初始化为微处理器100制造商所指定的预设数值;(4)将共享ISA状态506,如GPRs,初始化为x86ISA所指定的预设数值;以及(5)将指令模式指示符132与环境模式指示符136设定为指示x86ISA。在另一实施例中,不同于前述动作(4)与(5),此重置微码将共享ISA状态506初始化为ARM ISA特定的预设数值,并将指令模式指示符132与环境模式指示符136 设定为指示ARM ISA。在此实施例中,步骤638与642的动作不需要被执行,并且,在步骤614之前,此重置微码会将共享ISA状态506初始化为x86ISA所指定的预设数值,并将指令模式指示符132与环境模式指示符136设定为指示x86ISA。接下来进入步骤604。
在步骤604,重置微码确认微处理器100是配置为一个x86处理器或是一个ARM处理器来进行开机。在一实施例中,如前述,预设ISA开机模式是硬式编码于微码,不过可通过熔断配置熔丝的方式,或利用一微码修补来修改。在一实施例中,此预设ISA开机模式作为一外部输入提供至微处理器100,例如一外部输入接脚。接下来进入步骤606。在步骤606中,若是预设ISA开机模式为x86,就会进入步骤614;反之,若是预设开机模式为ARM,就会进入步骤638。
在步骤614中,重置微码使微处理器100开始由x86ISA指定的重置向量地址撷取x86指令124。接下来进入步骤616。
在步骤616中,x86系统软件(如BIOS)是配置微处理器100来使用如x86ISA RDMSR与WRMSR指令124。接下来进入步骤618。
在步骤618中,x86系统软件执行一重置至ARM的指令124。此重置至ARM的指令使微处理器100重置并以一ARM处理器的状态离开重置程序。然而,因为x86特定状态504以及非ISA特定配置状态不会因为重置至ARM的指令126而改变,此方式有利于使x86系统韧体执行微处理器100的初步设定并使微处理器100随后以ARM处理器的状态重开机,而同时还能使x86系统软件执行的微处理器100的非ARM配置配置维持完好。藉此,此方法能够使用“小型的”微开机码来执行ARM操作系统的开机程序,而不需要使用微开机码来解决如何配置微处理器100的复杂问题。在一实施例中,此重置至ARM指令是一x86WRMSR指令至一新的非架构特定模型寄存器。接下来进入步骤622。
在步骤622,简单指令转译器204进入陷阱至重置微码,以回应复杂重置至ARM(complex reset-to-ARM)指令124。此重置微码使ARM特定状态502初始化至由ARM ISA指定的预设数值。不过,重置微码并不修改微处理器100的非ISA特定状态,因而有利于保存步骤616执行所需的配置设定。此外,重置微码使共享ISA状态506初始化至ARM ISA指定的预设数值。最后,重置微码设定指令模式指示符132与环境模式指示符136以指示ARM ISA。接下来进入步骤624。
在步骤624中,重置微码使微处理器100开始在x86ISA EDX:EAX寄存器指定的地址撷取ARM指令124。此流程结束于步骤624。
在步骤638中,重置微码将共享ISA状态506,如GPRs,初始化至ARMISA指定的预设数值。接下来进入步骤642。
在步骤642中,重置微码设定指令模式指示符132与环境模式指示符136以指示ARM ISA。接下来进入步骤644。
在步骤644中,重置微码使微处理器100开始在ARM ISA指定的重置向量地址撷取ARM指令124。此ARM ISA定义两个重置向量地址,并可由一输入来选择。在一实施例中,微处理器100包含一外部输入,以在两个ARMISA定义的重置向量地址间进行选择。在另一实施例中,微码234包含在两个ARM ISA定义的重置向量地址间的一预设选择,此预设选则可通过熔断熔丝以及/或是微码修补来修改。接下来进入步骤646。
在步骤646中,ARM系统软件设定微处理器100来使用特定指令,如ARM ISA MCR与MRC指令124。接下来进入步骤648。
在步骤648中,ARM系统软件执行一重置至x86的指令124,来使微处理器100重置并以一x86处理器的状态离开重置程序。然而,因为ARM特定状态502以及非ISA特定配置状态不会因为重置至x86的指令126而改变,此方式有利于使ARM系统韧体执行微处理器100的初步设定并使微处理器100随后以x86处理器的状态重开机,而同时还能使由ARM系统软件执行的微处理器100的非x86配置配置维持完好。藉此,此方法能够使用“小型的”微开机码来执行x86操作系统的开机程序,而不需要使用微开机码来解决如何配置微处理器100的复杂问题。在一实施例中,此重置至x86指令是一ARMMRC/MRCC指令至一新的实作定义协同处理器寄存器。接下来进入步骤652。
在步骤652中,简单指令转译器204进入陷阱至重置微码,以回应复杂重置至x86指令124。重置微码使x86特定状态504初始化至x86ISA所特定的预设数值。不过,重置微码并不修改微处理器100的非ISA特定状态,此处理有利于保存步骤646所执行的配置设定。此外,重置微码使共享ISA状态506初始化至x86ISA所指定的预设数值。最后,重置微码设定指令模式指示符132与环境模式指示符136以指示x86ISA。接下来进入步骤654。
在步骤654中,重置微码使微处理器100开始在ARM ISA R1:R0寄存器 所指定的地址撷取ARM指令124。此流程终止于步骤654。
请参照图7,图中是以一方块图说明本发明的一双核心微处理器700。此双核心微处理器700包含两个处理核心100,各个核心100包含有图1的微处理器100所具有的元件,藉此,各个核心均可执行x86ISA与ARM ISA机器语言程序。这些核心100可被设定为两个核心100都执行x86ISA程序、两个核心100都执行ARM ISA程序、或是一个核心100执行x86ISA程序而另一个核心100则是执行ARM ISA程序。在微处理器700的操作过程中,前述三种设定方式可混合且动态改变。如图6A和图6B的说明内容所述,各个核心100对于其指令模式指示符132与环境模式指示符136均具有一预设数值,此预设数值可利用熔丝或微码修补做修改,藉此,各个核心100可以独立地通过重置改变为x86或是ARM处理器。虽然图7的实施例仅具有二个核心100,在其他实施例中,微处理器700可具有多于二个核心100,而各个核心均可执行x86ISA与ARM ISA机器语言程序。
请参照图8,图中是以一方块图说明本发明另一实施例的可执行x86ISA与ARM ISA机器语言程序的微处理器100。图8的微处理器100是类似于图1的微处理器100,其中的元件也相似。然而,图8的微处理器100也包含一微指令高速缓冲存储器892,此微指令高速缓冲存储器892存取由硬件指令转译器104产生且直接提供给执行管线112的微指令126。微指令高速缓冲存储器892由指令撷取单元114所产生的撷取地址做索引。若是撷取地址134命中微指令高速缓冲存储器892,执行管线112内的多工器(未图示)就选择来自微指令高速缓冲存储器892的微指令126,而非来自硬件指令转译器104的微指令126;反之,多工器则是选择直接由硬件指令转译器104提供的微指令126。微指令高速缓冲存储器的操作,通常也称为追踪高速缓冲存储器,是微处理器设计的技术领域所已知的技术。微指令高速缓冲存储器892所带来的优点在于,由微指令高速缓冲存储器892撷取微指令126所需的时间通常会少于由指令高速缓冲存储器102撷取指令124并且利用硬件指令转译器将其转译为微指令126的时间。在图8的实施例中,微处理器100在执行x86或是ARM ISA机器语言程序时,硬件指令转译器104不需要在每次执行x86或ARM ISA指令124时都执行硬件转译,也即当实行微指令126已经存在于微指令高速缓冲存储器892,就不需要执行硬件转译。
在此所述的微处理器的实施例的优点在于,其通过内建的硬件指令转译 器来将x86ISA与ARM ISA指令转译为微指令集的微指令,而能执行x86ISA与ARM ISA机器语言程序,此微指令集是不同于x86ISA与ARM ISA指令集,且微指令可利用微处理器的共用的执行管线来执行以提供实行微指令。在此所述的微处理器的实施例的优点在于,通过协同利用大量与ISA的执行管线来执行由x86ISA与ARM ISA指令硬件转译来的微指令,微处理器的设计与制造所需的资源会少于两个独立设计制造的微处理器(也即一个能够执行x86ISA机器语言程序,一个能够执行ARM ISA机器语言程序)所需的资源。此外,这些微处理器的实施例中,尤其是那些使用超纯量非循序执行管线的微处理器,具有潜力能提供相较于既有ARM ISA处理器更高的效能。此外,这些微处理器的实施例,相较于采用软件转译器的系统,也在x86与ARM的执行上可更具潜力地提供更高的效能。最后,由于微处理器可执行x86ISA与ARM ISA机器语言程序,此微处理器有利于建构一个能够高效地同时执行x86与ARM机器语言程序的系统。
备份寄存器模拟该ARM ISA包含一备份寄存器的特征,如表三所示,该表是摘录自ARM使用者手册(ARM programmer’s manual)中第B1-9页的图B1-1。在第B1章节里描述了一ARM ISA核心的该系统层级程序开发者模型,其包含了详细的ARM核心寄存器与备份寄存器的布局(scheme)。如ARM程序开发者手册第B1.3.2章节所述:
如第A2-11页ARM核心寄存器所述的该ARM寄存器文件的应用层级架构。此一架构提供了16个ARM核心寄存器,即R0-R15,其包含了堆迭指示符器(Stack Pointer,SP)、连结寄存器(Link Register,LR)以及程序记数器(Program Counter,PC)。该些寄存器是选自总数31或33个的寄存器,其依据是否实现了安全性扩充而定。如第B1-1图所示,当前的执行模式决定寄存器的组别选择,其显示寄存器的设置依据当前执行模式的选择,而重制某些寄存器的内容。此一设置称之为寄存器备份,而该重制部分的寄存器是称为备份寄存器。
表三
因此如表三所示,一个ARM ISA的核心可能执行八种不同执行模式之一。执行模式也可称为处理模式或操作方法。应用层级程序是执行于使用者模式,且不能存取受保护的系统资源,而且除非有例外事件发生外否则不能切换执行模式。相比之下,其他七个模式则统称为特权模式,其具有存取系统资源,并可随意更改核心的处理模式。特权模式中的六者,被称为例外事件模式,其是在有例外事件时进入该些模式,而特权模式的第七种也即系统模式,进入此一模式并非因为例外事件的发生,其通常是因为一指令的执行而进入。
从前述表三中可知,ARM ISA包含了16种通用核心寄存器R0-R15,用以供应用层级程序在使用者模式中执行。R13-R15寄存器各具有专属用途:R13为堆迭寄存器(SP);R14为连结寄存器(LR);以及R15为程序记数器(PC)。 该16个相同的通用寄存器R0-R15同样可于系统模式中被操作系统所取用。
在六个例外事件模式中,如表三所示,每一模式都由相关于SP与LR寄存器的备份版本,以避免在使用时遭遇例外事件而导致SP与LR寄存器的损毁。也就是说,当遭遇例外事件时,核心是存取相关于例外事件模式的SP与LR寄存器,而非使用者模式下的SP与LR寄存器(或是另一例外事件模式下的SP与LR寄存器)。更具体地说,当遭遇例外事件,核心存储一特定于例外事件的例外事件回传地址于LR寄存器中,其中该LR寄存器相关于所遭遇例外事件的例外事件模式(如LR_abt),而非存储该回传地址于使用者模式下的LR寄存器(LR_usr)。此外,当例外事件管理程序的指令存取SP或LR寄存器时,核心是存取相关于例外事件的SP或LR寄存器的备份版本(除非该指令另有明确指定),而非使用者模式的SP与LR寄存器(或是另一例外事件模式下的SP与LR寄存器)。举例而言,在一管理者模式下执行的包含连结指令的Branch,将会将次一指令的地址放置于LR_svc寄存器,而非LR_ust寄存器。在另一例子中,在IRQ模式下执行的一Push或Pop指令将会使用SP_irq寄存器而非SP_usr寄存器,以存储器中存取相关于该IRQ例外事件模式的一堆迭(a stack),而非存取使用者模式的堆迭(假设该SP_irq寄存器已依据操作系统的初始化,而得以存取一不同的存储器堆迭而非使用者模式堆迭)。
此外,FIQ模式具有R8-R12寄存器的备份版本,其可使FIQ中断管理程序避免必须自存储器中保存与恢复R8-R12寄存器,因此FIQ中断管理程序的执行速度会比其他例外事件处理程序来的快。当FIQ例外事件处理程序的指令存取R8-R12寄存器时,该核心存取R8-R12的FIQ备份版本(如标注于表三的R8_q至R12_q)(除非该指令另由明确指定),而非使用者模式的R8-R12寄存器。举例而言,执行于FIQ模式下的存取R10寄存器的Add指令,其是存取R10_q寄存器而非R10_user寄存器。因此,实行了安全性扩充的ISA ARM核心,将从一组共33个寄存器选出相关监视模式备份寄存器,包含:16种使用者模式寄存器、相关于各六种例外事件模式的SP与LR的寄存器备份版本,以及相关于FIQ模式的R8-R12的备份版本;相反的,未实行安全性扩充的ARM ISA核心将从一组共31个寄存器中选出相关监视模式备份寄存器,也就是说并不包含LR_mon与SP_mon寄存器。
最后,指定于当前程序状态处理器(Current program status register,CPSR) 的ARM ISA包含条件码旗标,执行状态比特、例外事件遮罩比特、以及定义当前处理模式的比特。CPSR应用层级程序的模组被称为应用程序状态寄存器(Application Program Status Register,APSR),并且仅提供存取条件码旗标。每一例外事件具有其自身的CPSR备份版本,如前述表三所示。当遭遇例外事件时,该CPSR数值的副本将写入相关于该所进入例外事件的SPSR中。如此可令该例外事件管理程序自该例外事件中恢复时,复原该CPSR至遭遇例外事件前的数值,以便检视例外事件发生时该CPSR的数值。
图9为一传统的实施例,其ARM ISA通用寄存器是实施为如同硬件寄存器906,硬件寄存器906位于包含该ARM ISA例外事件模式备份寄存器的硬件寄存器文件902中(电脑于图中未示)。如图9所示,寄存器文件902包含硬件多工逻辑908,依据当前处理模式914,以选择R8至R12寄存器的合适版本以及R13与R14寄存器的合适版本。额外的硬件多工逻辑904是基于指令所指定的寄存器地址912,以选择指定于执行指令的寄存器。(一般的寄存器文件是实施为如同多埠寄存器文件,其包含二载入埠与一写入埠,是以一指令可指定二来源操作数以及一目的操作数,因此该硬件多工逻辑908与904可重复设置三次,各对应于一埠)实施例可合并操作模式硬件多工逻辑908与寄存器地址硬件多工逻辑904;然而,这样的做法在处理模式914中需要额外的复杂度、电晶体、与电源组件,方能进行寄存器的选择。
典型地,处理器在一所提供的处理模式下执行许多指令(有时达到上千种),而当一例外事件模式发生或者是执行模式切换指令以切换至新处理模式时,接着许多指令执行于一新处理模式,而后又发生新的模式切换等等。几乎(即使不是全部)所有被执行的指令存取包含备份版本的R8-R14的通用寄存器902。依据该传统实施例,每一存取至该通用寄存器文件通过如第9图所示的硬件多工逻辑908,以选择合适的备份寄存器(R8-R14寄存器),其增加每一存取连接至供应暂存文件902的延迟。此一现象同样发生于相对不那么频繁的处理模式切换上,以及相较于使用者模式寄存器的存取不那么频繁的备份寄存器的存取上。或者说,即使该选择输入914至该硬件多工逻辑908的更新的较不频繁,每一指令的执行而存取该寄存器文件902的操作也将导致硬件多工处理器908的延迟。基本上,存取寄存器文件902对处理器而言是一关键的硬件时序路程,其可能需要降低核心时脉,抑或将存取较高比例较高的部分被切割为较低频率分格窗口(bin)。因此,需要一种可避免硬件多 工逻辑908延迟的解决方案。
在本实施例所提供的微处理器,其提供改良ARM ISA通用寄存器文件(其余部分均相同),由于本微处理器简化了在硬件多工逻辑中,并基于处理模式输入以不同方式选择合适寄存器,故相较传统的通用寄存文件有更加的存取性能。替代的,本实施例所描述的R8-R14的备份版本是模拟的,而非实际存在于寄存器文件(此寄存器文件会直接提供操作数给微处理器的执行单元),故而只有一个单独的实体寄存器R8-R14存在于寄存器文件中。更具体的说,该微处理器包含间接存储器以放置该模拟文件。在另一实施例中,该间接存储器是一私有随机存取存储器,其包含于该微处理器的存储器子系统中。为了因应处理模式的切换,硬件寄存器R13-R14的数值(或是R8-R14,若切换至FIQ模式)系先存储于间接存储器中的相关于该旧处理模式的位置,且硬件寄存器R13-R14(或是R8-R14,若切换至FIQ模式)接着在新处理模式中自间接存储器中的相联位置而恢复。此外,在切换至FIQ模式的情况下,R8-R12的内容存储至全域间接存储器,而在从FIQ模式做切换的情况下,其内容系由全域间接存储器中恢复。应注意的是,该存储与恢复的操作系利用该微处理器的微码进行。因此,随后的执行单元自直接寄存器文件(direct register file)中的R8-R14单一副本,存取相关于新处理模式的数值。是以,从概念上来说,本实施例的优点在于,相对较不频繁的处里模式切换通过一个虚拟多工器执行,而非频繁通过一实体多工器执行每一寄存器的存取。本实施例的另一优点在于,由于处理模式的切换相对来说较不频繁,因此用相关于模式切换所造成额外的延迟做代价以获得其他益处,譬如在缺乏相关硬件多工逻辑且基于处理模式输入的自多个寄存器中选择的情况下,能更快的寄存器文件存取等等。
请参阅图10,图10是本发明的系统方块图,详细显示图1的微处理器。如先前所述,在实施例中微处理器100的微架构在许多方面系类似于由威盛电子所制造的VIA NanoTM处理器,但其已修改为支持ARM ISA,更具体的说,可模拟ARM ISA的备份寄存器模式。
微处理器100包含:如图1的寄存器文件106,在图10中系标示为直接存储器106;多工器1014、1016与1018耦接于直接存储器106,以接收直接存储器106的输出;多工器1004、1006与1008耦接于多工器1014、1016与1018以接收多工器1014、1016与1018的输出;载入单元416、存储单元416, 以及如图4的整数/分支单元、介质单元与浮点单元412/414/418(在图10中称为ALU单元412/414/418),系分别耦接于多工器1004、1006与1008,以接收多工器1004、1006与1008的输出;如图4的重排缓冲器(ROB)422耦接于载入单元416、存储单元416以及ALU单元412/414/418,以接收载入单元416、存储单元416以及ALU单元412/414/418的结果128;以及间接存储器1002,间接存储器1002耦接于重排缓冲器422与多工器1008,用以自重排缓冲器422接收微指令126的结果128,以及将其输出作为一输入传至多工器1008。
重排缓冲器422保留微指令126的结果128于其的重新命名寄存器(rename registers),直到结果128引退至架构寄存器。每一多工器1014/1016/1018基于相关于微指令126所指定的寄存器地址,以自直接存储器106中选择一操作数。每一多工器1004/1006/1008基于指定于微指令126的操作数类型,以自其输入来源中选择一操作数。虽然在各执行单元中仅显示一组操作数多工器对,1014对应1004、1016对1006与1018对1008,需了解的是,一多工器对系存在于每一源操作数与每一执行单元之间。此外,除了分别与多工器1014/1016/1018的输出耦接之外,多工器1004、1006、1008还耦接每一执行单元以自各执行单元接收结果128,以及存储于重排缓冲器422中的结果128。此外,载入单元416也自多工器1008接收间接存储器1002的输出。本发明的优点在于,当处理模式切换时,为了模拟ARM ISA备份寄存器,微处理器100可利用微码234在直接存储器106或间接存储器1002间存储或恢多个值,下面将会对其工作方式作进一步描述。
如图10所示,直接存储器106包含多个寄存器以存储数据或操作数,以供ARM R0-R14通用寄存器的运用。虽然驻留在实体寄存器文件的通用寄存器与CPSR(以及自PC)不同,但直接存储器106仍包含一用以存储CPSR的寄存器。在一实施例中,一硬件寄存器文件包含直接存储器106。
间接存储器1002包含R13、R14与SPSR存储器,其系关连于每一ARMISA的处理模式,也即使用者(User)、管理者(SVC)、终止(ABT)、未定(UND)、IRQ以及FIQ处理模式。此外,间接存储器1002包含关连于FIQ处理模式的R8-R12存储器。最后,除了FIQ模式的外,间接存储器1002包含关连于全域(GLOBAL)的全部处理模式。这些包含在间接存储器1002中不同存储器地址的运用将描述于后。
在一实施例中,间接存储器1002包含属于存储器子系统108的一私有随机存取存储器(PRAM),如先前所述,该PRAM系利用如图2的微码234加以定址,但此一操作对于x86ISA与ARM ISA程序员不可见的,也就是说并不存在于ISA系统存储器地址空间。在2010年2月11日所发布的美国专利第7,827,390中所描述的PRAM实施例中,在此,将其列入参考。特别是,间接存储器1002系仅可利用载入单元416来加以载入,以及仅可利用存储单元416来加以存储。更具体的说,间接存储器1002仅可由载入单元416所执行的间接存储器1002的载入微指令126(在此其系对应于load_PRAM微指令)、以及由存储单元416所执行的间接存储器1002的存储微指令126(在此其系对应于store_PRM微指令)予以定址。故此,其他的执行单元412/141/418不可载入或写入间接存储器1002。该load_PRAM微指令指示载入单元416自间接存储器1002中的一指定地址载入数据至寄存器文件106的一特定寄存器,该特定寄存器可为如图10所示的一架构寄存器或是可由微码234存取的一非架构寄存器(也可称为一临时寄存器)。相反的,该store_PRAM微指令指令存储单元416自寄存器文件106中的一指定寄存器,存储数据至间接存储器1002中的一指定地址中。
请参阅至图11A及图11B,图11A及图11B是显示在本发明图10的微处理器100的操作流程图,该流程系始于步骤1102。
如步骤1102,硬件指令转译器104侦测一自当前处理模式切换至新处理模式的要求,并回应地将进入陷阱而前往如图2微码234中的适当的程序,其是设定用以管理处理模式切换的要求。指令转译器104可通过不同的方式以侦测切换处理模式要求,但不设限于以下所述的方法。首先,指令转译器104可能遭遇一明确要求切换处理模式的ISA指令124,例如一ARM ISA切换处理状态指令(CPS)、管理者呼叫(SVC)指令、安全监视呼叫(SMC)指令或者是移动至特殊寄存器(MSR)。其次,指令转译器104可能遭遇一隐含处理模式切换要求的ISA指令124,如一ARM ISA自例外事件返回(RFE)指令、载入多重(自例外事件返回)、SUBS PC、LR或断点(BKPT)指令。第三,指令转译器104可能遭遇一由未定义指令例外事件(Undefined instruction exception)所导致的未定义ISA指令124。第四,指令转译器104可能接收到另一单元的微处理器100所发出一遭遇例外事件的信号。举例而言,指令转译器104可能自微处理器100的存储器子系统(未显示)中收到一信号,该 信号表示有一指令要求一不在存取权限中的存取动作,譬如当微处理器并非处于一特权模式却请求存取一仅供特权存取的存储器区块时,则建立一数据终止例外事件条件(Data Abort exception condition);或者是当一指令被提取(fetched)以及要求执行一无效指令时,指令转译器104可能接收到一发生存储器终止的指示,并建立一预先提取的终止例外事件条件(Prefetch Abort exception condition);或者是指令转译器104可能自微处理器100的汇流排介面单元接受到一信号,该信号指示要求一中断操作(IRQ或FIQ)。第五,该指令转译器104可能遭遇一用以存取如先前所述的全域配置寄存器122的x86RDMSR/WRMSR指令124,或者x86launch-ARM,或者如先前所述的reset-to-ARM指令124。微码234基于特定模式转换的种类执行多个动作,譬如准备更新中断遮罩比特、条件旗标或是在CPSR中的其他比特。此外,在步骤1114更新直接存储器106CPSR之前,微码234可存储当前的直接存储器106CPSR数值至SPSR在间接寄存器1002中关连于新处理模式的位置。更进一步的说,ARM SIT224可在进入陷阱至微码234前执行其他动作。举例来说在ARM ISA LDM(自例外事件恢复)指令124的情况下,ARM SIT224可发送载入微指令126以要求自存储器内载入特定的寄存器,接下来进入步骤1104。
在步骤1104中,微码234判断在步骤1102中所要求的新处理模式是否与当前处理模式相同,假如相同则流程结束;若不相同则进入步骤1106。
在步骤1106,微码234将直接存储器106的寄存器R13与R14的数值存储在间接存储器1002中相关于当前处理模式所对应的位置。举例而言,假若该当前处理模式系管理者模式,微码234将直接存储器106的R13/R14的数值存储至间接存储器1002的SVC部分中R13/R14的位置,如图12的箭头(1)所示。而在另一例子中,假若当前处理模式系FIQ模式,微码234将直接存储器106的R13/R14数值存储至间接存储器1002的FIQ部分的R13/R14的位置,如图12的箭头(5)所示。有利的是,该微码可包含一store_PRAM微指令126的序列,以自直接存储器106中存储数值至间接存储器1002。接着进入步骤1108。
在步骤1108,微码234判断当前处理模式是否为FIQ处理模式,若是,则进入步骤1112;若否则进入步骤1114。
在步骤1112,微码234将直接存储器106的寄存器R8-R12的数值,存 储至间接存储器1002中的关连于FIQ模式所对应的位置,如图12的箭头(6)所示。此外,微码234将间接存储器1002中相关于全域的非FIQ模式的数值恢复至直接存储器106的寄存器R8-R12中,如图12的箭头(7)所示。有利的是,执行回复的微码可包含一load_PRAM微指令126的序列,以自间接存储器1002中载入数值至直接存储器106。接着进入步骤1114。
在步骤1114中,微码234将步骤1102中所要求的新处理模式来更新CPSR106的模式(Mode)比特。CPSR106的写入还包含对CPSR106在模式比特旁的其他比特的更新。接着进入步骤1116。
在步骤1116中,微码234将间接存储器1002中关连于新处理模式的相对应位置的数值,恢复至直接存储器106的R13与R14寄存器中。举例而言,若新处理模式为FIQ模式,微码234将间接存储器1002的FIQ部分的R13/R14位置的数值恢复至直接存储器106的R13/R14,如图12的箭头(2)所示。举例而言,假若新处理模式系UND模式,微码234将间接存储器的UND部分的R13/R14位置的数值恢复至直接存储器106的R13/R14,如图12的箭头(8)所示。接着进入步骤1118。
在步骤1118,微码234判断该新处理模式是否为FIQ模式,若是则进入步骤1122;若否则进入步骤1124。
在步骤1122,微码234将直接存储器106的R8-R12寄存器的数值,存储至间接存储器1002中关连于全域的非FIQ模式所对应的位置,如图12的箭头(3)所示。此外,微码234自间接存储器1002中关连于FIQ模式的相对应位置数值,恢复至直接存储器106的R8-R12寄存器,如图12的箭头(4)所示,接着进入步骤1124。
在步骤1124中,微码234执行更多基于特定模式切换类型的动作,举例来说,若在一例外事件发生后,微码234将一更新过的数值填入直接存储器106的R14寄存器(也就是LR寄存器)中,其中该更新过的数值依据ARM手册中第B1-34与第B1-35页中的表B1-4,随后再跳跃至典型的例外事件管理程序,也即将控制权还给ARM ISA程序。流程结束于步骤1124。
可从图12中观察到,即使执行一自第一处理模式(譬如SVC)至FIQ模式的切换,接着在没有立即恢复至该第一处理模式即切换至第三处理模式(譬如UND)的情况下,使用该全域间接存储器1002的位置的优点在于仍可使微处理器100在直接存储器106的R8-R12寄存器中保持正确的数值,从 而模拟ARM ISA备份寄存器。
从前述内容可知,一种用以将ARM ISA备份寄存器的模拟的构思蓝图如下所述。当微处理器100系切换至一个新处理模式时,微处理器100将正确的数值存放至直接存储器106中,其为已知ARM处理器中新处理模式的备份寄存器。举例而言,在切换至FIQ模式后,直接存储器106的R0-R14寄存器具有在已知ARM处理器的R0_usr-R7_usr以及R8_fiq-R14_fiq的内容。因此,FIQ处理模式的操作数可直接由直接存储器106中供给ALU单元412/414/418,以在FIQ模式下的微处理器100(也即FIQ例外事件管理程序指令)可执行转译自ARM ISA数据处理指令124的微指令126。在另一个例子中,在切换至UND模式后,直接存储器106的R0-R14寄存器将具有已知ARM处理器的R0_usr-R12_usr以及R13_und-R14_und的内容,因此,UND处理模式的操作数可直接由直接存储器106中供给ALU单元412/414/418,以使在UND模式下的微处理器100可执行转译自ARM ISA数据处理指令124的微指令126。为了达成此一功效,该微码将直接存储器中合适的现有数值存储至间接存储器1002中所规划的位置(以便在随后的模式切换时可将其恢复),并且自间接存储器1002中其他规划的位置中恢复先前所存储的数值至直接存储器106。一般而言,可通过存储直接存储器106的R13与R14中当前或是旧的数值至间接存储器1002中旧的处理模式的位置,并且自间接存储器1002中新处理模式的位置恢复至直接存储器106的R13与R14。然而,在切换至FIQ模式或是自FIQ模式中切换出来时,有着更多处理要求。当自模式X切换至FIQ模式并随后自FIQ模式切换至模式Y时,直接存储器106的R8-R12寄存器中的数值必须与在模式Y中时相同,虽然他们均系切换自模式X,且该模式X可能与模式Y有着不同数值。因此在此一情况下,间接存储器1002中的全域位置系有利于自直接存储器106的R8-R16寄存器中存储与恢多个值。
从前述内容更可得知,在此所描述的模拟备份寄存器可能在切换处理模式时,由于系利用微码将数值在直接存储器106与间接存储器1002间存储与恢复,相较传统的设计将导致些微的额外负荷。然而,此潜在额外负担所产生的潜在优势,可使直接存储器106相较传统的设计有着更快的存取。这系因为在此所述的实施例中,可避免在传统设计中由于硬件多工器必须考虑处理模式对于相对较不频繁备份寄存器的使用,所导致的额外传送延迟。由于 硬件多工器系典型的位于重要的时序路程中,使得硬件多工器加速运行将有利于时脉的提升,因此这系十分重要的。此外,在直接存储器106中的寄存器数量将少于传统设计,其可减少存取直接存储器106的时间。此外,实施例中的另一优点为,其仅需对现存的微架构进行相对些微的修改即可支持ARM ISA备份寄存器。更进一步的,实施例的另一优点在于,其可减轻RAT106中的相依检查器(dependency checke)在区分处理模式间的不同时的负担。另一优点在于,其也可减少寄存器更名表的大小,或者是避免在部分处理模式切换中要求序列化(如更新管线,即RAT与ROB)。最后,实施例的另一优点在于,因为切换系利用微码实施而非硬件上的切换,故可增加切换一架构至ARM ISA备份寄存器等事件的弹性。总结地说,在此所描述的实施例,虽然可能增加处理模式切换所需的时间,但相对而言模式切换系较不频繁的,并可据此换取在一般情况下提供更高的效能表现,其中,在此所述的一般情况是指为获得ALU操作数的主要寄存器的存取。
虽然前述的实施例中,微码系执行将数值在直接存储器与间接存储器的间的存储与恢复功能,在其他实施例中系利用具有硬件组合逻辑的微处理器,以执行回应处理模式切换所需的将数值在直接存储器与间接存储器之间的存储与恢复功能,而非利用微码执行的。更进一步的说,虽然在前述的实施例中,用以存储旧的处理模式数值的间接存储器为PRAM,在其他实施例中系利用硬件寄存器作为间接存储器,但其不可由ALU单元直接存取。再更进一步的说,虽然前述的实施例系关于ARM ISA,在其他实施例中系拟应用于其他关连于不同处理模式的特定备份寄存器的ISA。
载入多重/存储多重ARM ISA指令
另一个关于ARM ISA的特征系载入多重(LDM)与存储多重(STM)指令。载入多重指令自存储器中载入每一指定于指令的通用寄存器,如ARM手册中第A8-110至A8-116页中所述。相反地,STM指令自每一指定于指令的通用寄存器中存储至存储器,如ARM手册中第A8-374页至A8-381页中所述。在此说述的实施例,其系如前述的微处理器100的超纯量非循序执行微架构上实行LDM指令与STM指令。更具体而言,ARM ISA指定自例外事件模式存取架构使用者模式寄存器的LDM指令与STM指令的版本(也即当微处理器100并非处于使用者模式下时)。这些指令版本系对应LDM(使用者寄存器)指令与STM(使用者寄存器)指令,如ARM手册中第B6-7页至第B6-8 页以及第B6-22页至第B6-23中所述。在此所述的实施例中,其系在微处理器100的微架构上实行LDM(使用者寄存器)指令与STM(使用者寄存器)指令,微处理器100的微架构包含用以模拟前述的备份寄存器的间接存储器1002。
请参阅至图13A及图13B,其是显示在本发明图1的微处理器100执行一LDM指令的流程图,该流程系始于步骤1302。
在步骤1302中,如图2的软件指令转译器204接收到一LDM指令124。尤其是,指令模式指示符132指示ARM ISA以及图2的ARM SIT224对LDM指令124解码。LDM指令124指定一组用以载入数据的通用寄存器,以及将被载入数据的连续存储器地址。此外,LDM指令124指定该指令是否为LDM(使用者寄存器)指令124。接着进入步骤1304。
在步骤1304中,ARM SIT224考虑指定于LDM指令124的次一(或第一)寄存器,接着进入步骤1306。
在步骤1306中,ARM SIT224判断指令124是否为LDM(使用者寄存器)指令124,若是,则进入步骤1312;若否,则进入步骤1308。
在步骤1308,ARM SIT224发出载入微指令126以自指定于LDM指令124的存储器内中的次一(或第一)位置载入数据,并送至如图10的直接存储器106的特定寄存器(其系于步骤1306被考虑)。载入微指令126将会送往执行管线112而被载入单元416所执行。接着进入步骤1318。
在步骤1312,ARM SIT224判断寄存器是否为R8-R12其中的一种,以及当前处理模式是否为FIQ模式。若是,进入步骤1314;若否,则进入步骤1316。
在步骤1314,ARM SIT224发出载入微指令126以自指定于LDM指令124的存储器内中的次一(或第一)位置载入数据,并送至非架构的、或是临时的直接存储器106的寄存器。载入微指令126将送往执行管线112而被载入单元416所执行,如后述的步骤1324,数据将会持续的自临时寄存器中,存储至间接存储器1002。接着进入步骤1318。
在步骤1316,ARM SIT224判断寄存器是否为R13或是R14寄存器,若是,则进入步骤1314;若否,则进入步骤1308。
在步骤1318,ARM SIT224判断是否有其他特定于LDM指令124的寄存器尚未考虑,也即硬件指令转译器104尚未发送的相关微指令126。若尚 有其他寄存器时,则回到步骤1304以考虑特定于LDM指令124的次一寄存器;若否,则进入步骤1322。
在步骤1322,ARM SIT224判断在步骤1314中是否有发送任何微指令126以载入数据至临时寄存器106,若有,则进入步骤1324;若否,则流程结束。
在步骤1324,SIT204转移控制权至如图2的复杂指令转译器(CIT)206,CIT206是基于微码234以产生store_PRAM微指令126,用以于将步骤1314中所载入的数据,自临时寄存器106中存储至间接存储器1002中的合适位置。更具体而言,在间接存储器1002中的合适位置是指关连于使用者模式的R13与R14位置,以及全域性关连于非FIQ处理模式的R8-R12位置。存储微指令126送往执行管线112被存储单元416所执行,且流程结束于步骤1324。
请参阅至图14A及图14B,其显示在本发明图1的微处理器100执行一LDM指令的另一流程图,在图14A及图14B中许多步骤类似于图13A及图13B的步骤,且具有相同的标号。然而,在图14A及图14B中,若于步骤1318中,ARM SIT224判断并无其他寄存器待考虑,则流程结束;故此,在图14A及图14B的流程中系不具有步骤1322与步骤1324。此外,系有自步骤1314进入的新步骤1424,以及自新步骤1424进入步骤1318的流程。
在步骤1424中,ARM SIT224发送store_PRAM微指令126,以将在步骤1314中所载入的数据自临时寄存器106存储至间接存储器1002中的合适位置。
从图14A及图14B中可知,本实施例中的优点在于LDM(使用者寄存器)微指令的执行并不需要将控制权转移至微码234。而缺点则在于其增加了ARM SIT224的复杂度。具体而言,在ARM SIT224必须发送store_PRAM微指令126的前提之下,ARM SIT224必须知道关于间接存储器1002中的合适位置,以及数据必须被存储至该处的相关信息,因此与图13A及图13B的实施例有所不同。
请参阅图15A及图15B,其是显示本发明中图1的微处理器100执行一STM指令的流程图,该流程系始于步骤1502。
在步骤1302中,如图2的软件指令转译器204接收到一STM指令124。尤其是,指令模式指示符132指示ARM ISA而图2的ARM SIT224对STM指令124进行解码。STM指令124指定用以存储的通用寄存器以及将存储数 据的连续存储器地址。此外,STM指令124指定指令为STM(使用者寄存器)指令124。接着进入步骤1504。
在步骤1504中,ARM SIT224考虑指定于STM指令124的次一(或第一)寄存器,接着进入步骤1506。
在步骤1506中,ARM SIT224判断指令124是否为SDM(使用者寄存器)指令124,若是,则进入步骤1512;若否,则进入步骤1508。
在步骤1508,ARM SIT224发出存储微指令126以将数据自如图10的直接存储器106的指定寄存器中,存储至特定于STM指令124的存储器中的次一(或第一)位置(其系已考虑于步骤1504中)。存储微指令126将会送往执行管线112并被存储单元416所执行。接着进入步骤1518。
在步骤1512,ARM SIT224判断寄存器是否为R8-R12其中的一种,以及当前处理模式是否为FIQ模式。若是,进入步骤1514;若否,则进入步骤1516。
在步骤1514,ARM SIT224略过此特定寄存器,并随后于步骤1524中的微码234处理,接着进入步骤1518。
在步骤1516,ARM SIT224判断寄存器是否为R13或是R14寄存器,若是,则进入步骤1514;若否,则进入步骤1508。
在步骤1518,ARM SIT224判断是否有其他指定于STM指令124的寄存器尚未考虑,也即硬件指令转译器104尚未发送关连的微指令126(或于步骤1514中略过)。若尚有其他寄存器时,则回到步骤1504以考虑指定于STM指令124的次一寄存器;若否,则进入步骤1522。
在步骤1522,ARM SIT224判断是否有任何寄存器于步骤1514中被略过,若有,则进入步骤1524;若否,则流程结束。
步骤1524,SIT204转移控制权至图2的复杂指令转译器(CIT)206,CIT206是基于微码234以对步骤1514所略过的每一寄存器产生一微指令126对(pair)。具体而言,微指令126对包含伴随一存储微指令126的载入微指令load_PRAM微指令126,load_PRAM微指令126自间接存储器1002中的合适位置载入数据,至一非架构,或临时的直接存储器106的寄存器。存储微指令126将临时寄存器的数据存储至存储器内指定于STM指令124的位置。更具体而言,在间接存储器1002中的合适位置是指关连于使用者模式的R13与R14位置,以及关连于全域性非FIQ处理模式的R8-R12位置。load_PRAM 与存储微指令126将会送往执行管线112而分别被存储单元416与载入单元416所执行,且流程结束于步骤1524。
请参阅至图16A及图16B,其是显示本发明中图1的微处理器100执行一STM指令的另一流程图,在图16A及图16B中许多步骤类似于图15A及图15B的步骤,且具有相同的标号。然而,在图16A及图16B中,若于步骤1518中,ARM SIT224判断并无其他寄存器待考虑则流程结束;故此,在图16A及图16B的流程中系不具有步骤1522与步骤1524。此外,在步骤1512与1516判断为”是”的流程后具有新的流程,其系进入新步骤1624,以及自新步骤1624至新步骤1614,与自新步骤1624至步骤1518。
在步骤1624中,ARM SIT224发送load_PRAM微指令126,以自间接存储器1002中的合适位置载入数据至临时寄存器106,接着进入步骤1614。
在步骤1614中,ARM SIT224发送存储微指令126,以将在临时寄存器106中,已于步骤1624时所载入的数据,存储至存储器内特定于STM指令124的次一(或是第一)位置,接着进入步骤1518。
从图16A及图16B中可知,在本实施例中的优点在于,STM(使用者寄存器)微指令的执行并不需要将控制转移至微码234,而缺点则在于其增加了ARM SIT224的复杂度。具体而言,在ARM SIT224必须发送载入微指令126/store_PRAM微指令126的前提之下,ARM SIT224必须知道关于间接存储器1002中的合适位置,以及数据必须被存储至该处的相关信息,因此与图15A及图15B的实施例有所不同。
如先前所述,ARM SIT224其优点在于包含一状态机器,以在多重的时脉周期中,发送多重微指令126来实行ISA指令124。
ARM ISA也包含一存储恢复状态(SRS)指令124,SRS指令124将当前处理模式的LR与SPSR寄存器存储于由SRS指令124所指定的目标处理模式的存储器堆迭中,其中SRS指令124可与当前处理模式不同。因此,SRS指令124需要微处理器100以载入目标处理模式的架构SP寄存器的数值,以便存取其存储器堆迭。在一实施例中,当ARM SIT224解码一ARM ISA SRS指令124,其产生一load_PRAM微指令126,以自间接存储器1002的目标模式部分的R13位置中载入目标模式的SP数值,并送至直接存储器106的临时寄存器,以存取目标模式的存储器堆迭。
然而各种有关于本发明的实施例已在本文详述,应可充分了解如何实施 并且不限于这些实施方式。举凡所属技术领域中具有通常知识者当可依据本发明的上述实施例说明而作其它种种的改良及变化。举例来说,软件可以启动如功能、制造、模型、模拟、描述及/或测试本文所述的装置及方法。可以通过一般程序语言(如C及C++)、硬件描述语言(Hardware Description Languages;HDL)或其他可用程序的使用来达成,其中硬件描述语言(Hardware Description languages;HDL)包含Verilog HDL、VHDL等硬件描述语言。这样的软件能在任何所知的计算机可用介质中处理执行,例如磁带、半导体、磁碟或光碟(如CD-ROM及DVD-ROM等)、网路、有线电缆、无线网路或其他通信介质。本文所述的装置及方法的实施例中,可包含在智能型核心半导体内,并且转换为积体电路产品的硬件,其中智能型核心半导体如微处理器核心(如硬件描述语言内的实施或设定)。此外,本文所述的装置及方法可由硬件及软件的结合来实施。因此,本发明并不局限于任何本发明所述的实施例,但系根据下述的专利范围及等效的专利范围而定义。具体来说,本发明能在普遍使用的微处理器装置里执行实施。最后,熟练于本技术领域的应能体会他们能很快地以本文所公开的观念及具体的实施例为基础,并且在没有背离本发明所述的附属项范围下,来设计或修正其他结构而实行与本发明的同样目的。
Claims (38)
1.一种微处理器,包含:
多个处理模式,包含一使用者模式与多个例外事件模式;
至少一执行单元,用以在程序指令指定的操作数上执行多个算数运算;
一第一存储元件组,耦接于该执行单元,其中该第一存储元件组包含一第一操作数子集,并提供该第一操作数子集给该执行单元;
一第二存储元件组,关联于各处理模式,其中该第二存储元件组包含一第二操作数子集,其中该第二存储元件组无法直接提供该第二操作数子集给该执行单元;以及
一逻辑单元,其中,当从该些处理模式中的一当前处理模式进入一新处理模式时,该逻辑单元将该第一存储元件组中的该第一操作数子集存储至关联于该当前处理模式的第二存储元件组,并将关联于该新处理模式的该第二存储元件组中的该第二操作数子集恢复至该第一存储元件组。
2.如权利要求1所述的微处理器,还包含:
一第三存储元件组,耦接于该执行单元,其中该第三存储元件组包含一第三操作数子集,并提供该第三操作数子集至该执行单元;
其中该新处理模式是该些例外事件模式中的一第一例外事件模式;
一第四存储元件组,关联于该第一例外事件模式,其中该第四存储元件组包含一第四操作数子集,其中该第四存储元件组无法直接提供该第四操作数子集至该执行单元;以及
一第五存储元件组,全域性地关联于除了该第一例外事件模式之外的所有该些处理模式,其中该第五存储元件组包含一第五操作数子集,其中该第五存储元件组无法直接提供该第五操作数子集至该执行单元;
其中,当从该当前处理模式进入该新处理模式或该第一例外事件模式时,该逻辑单元额外将该第三存储单元组的该第三操作数子集存储至该第五存储单元,并将该第四存储元件组中的该第四操作数子集恢复至该第三存储元件组;
其中,当从该第一例外事件模式进入该些例外事件模式的一第二例外事件模式时,该逻辑单元将该第三存储单元组的该第四操作数子集存储至该第四存储单元,并将关联于该新处理模式的该第五存储元件组中的该第三操作数子集恢复至该第三存储元件组。
3.如权利要求2所述的微处理器,
其中,该微处理器利用该第一存储元件组的一第一存储元件以保存ARMISA的一堆迭式指示符寄存器操作数,并利用该第一存储元件组的一第二存储元件以保存该执行单元执行该些算数运算的ARM ISA的一连结寄存器操作数;
其中,该第二存储元件组包含一第一存储元件以保存一ARM ISA堆迭式指示符寄存器操作数,以及一第二存储元件以保存用以关联处理模式的一ARM ISA连结寄存器操作数;
其中,该微处理器利用该第三存储元件组以保存该执行单元执行该些算数运算的ARM ISA R8-R12通用寄存器的操作数;
其中,该第四存储元件组包含多个用以保存ARM ISA R8-R12通用寄存器操作数的存储元件,以对应ARM ISA FIQ例外事件模式;
其中,该第五存储元件组包含多个用以保存ARM ISA R8-R12通用寄存器操作数的存储元件,以对应除了ARM ISA FIQ例外事件模式之外的全域性ARM ISA处理模式。
4.如权利要求1所述的微处理器,其中该微处理器利用该第一存储元件组的一第一存储元件以保存ARM ISA的一堆迭式指示符寄存器操作数,以及利用该第一存储元件组的一第二存储元件以保存该执行单元执行该些算数运算的该ARM ISA的一连结寄存器操作数。
5.如权利要求1所述的微处理器,其中该第一存储元件组包含多个硬件寄存器,其中该第二存储元件组包含一随机存取存储器(RAM)。
6.如权利要求5所述的微处理器,
其中该随机存取存储器可通过该微处理器的微码进行载入或写入;
其中该随机存取存储器不可通过ISA机器语言程序指令进行载入或写入。
7.如权利要求1所述的微处理器,还包含:
一超纯量非循序执行管线,包含:
至少一执行单元;以及
一载入单元,耦接于该第一存储元件组,其中该第二存储元件组提供该第二操作数子集至该载入单元,其中该载入单元提供该第二操作数子集至该执行单元。
8.如权利要求1所述的微处理器,其中该些例外事件模式包含ARM ISA例外事件模式。
9.如权利要求1所述的微处理器,其中该逻辑单元包含该微处理器的微码。
10.如权利要求1所述的微处理器,其中该逻辑单元包含一硬件组合逻辑单元。
11.如权利要求1所述的微处理器,还包含:
一指令转译器,用以将ARM ISA机器语言的指令转译至多个微指令,其中至少一ARM ISA指令指示该微处理器自该当前处理模式进入至该新处理模式;以及
一执行管线,用以执行该些微指令以将该第一存储元件组的该第一操作数子集存储至关联于该当前处理模式的该第二存储元件组,以及恢复关联于该新处理模式的该第二存储元件组的该第二操作数子集至该第一存储元件组。
12.如权利要求11所述的微处理器,其中该指令转译器还将x86ISA机器语言的指令转译为多个微指令,其中该些微指令是以不同于x86ISA指令集的指令编码方式进行编码,其中该执行管线还执行该些微指令以产生由x86ISA指令所定义的结果。
13.一种操作一微处理器的方法,该微处理器包含多个处理模式,该些处理模式具有一使用者模式以及多个例外事件模式,其中该微处理器还包含至少一执行单元,该执行单元通过特定程序指令在操作数上执行多个算数运算,该方法包含:
当该微处理器在该些处理模式中的一当前处理模式运行时,自一第一存储元件组中提供一第一操作数子集至该执行单元以执行该些算数运算;
当自该当前处理模式进入该些处理模式的一新处理模式时,包含以下步骤:
将该第一存储元件组的该第一操作数子集存储至关联于该当前处理模式的一第二存储单元组;
将该关联于该新处理模式的一第三存储元件组的一第二操作数子集恢复至该第一存储元件组;以及
当该微处理器于该新处理模式中运行时,自该第一存储元件组提供该第二操作数子集至该执行单元以执行该些算数运算。
14.如权利要求13所述的方法,还包含:
当该微处理器于该当前处理模式下运行时,自一第四存储元件组提供一第三操作数子集至该执行单元以执行该些算数运算;
其中当自该当前处理模式进入该新处理模式时,还包含:
将该第四存储元件组的该第三操作数子集存储至关联于该新处理模式的一第五存储元件组;以及
将一第六存储元件组的一第四操作数子集恢复至该第四存储元件组,且该第六存储元件组全域性关联于除了该第一例外事件模式之外的该些处理模式;
当该微处理器于该新处理模式下运行时,自该第四存储元件组提供该第四操作数子集至该执行单元以执行该些算数运算;
当自该新处理模式进入该些处理模式的一第三处理模式时,包含:
自该第四存储元件组的第四操作数子集存储至该第六存储元件组;以及
将该第五存储元件组的该第三操作数子集恢复至该第四存储元件组:以及
当该微处理器于该第三处理模式下运行时,自该第四存储元件组提供该第三操作数子集至该执行单元以执行该些算数运算。
15.如权利要求14所述的方法,其中该第一存储元件组的一第一存储元件具有一ARM ISA的堆迭式寄存器操作数以及该第一存储元件组的一第二存储元件具有一该执行单元执行该些算数运算的ARM ISA的连结寄存器操作数;
其中,该第二存储元件组与该第三存储元件组各包含具有一ARM ISA堆迭式指示符寄存器操作数的一第一存储元件以及一关联于该些处理模式并具有一ARM ISA连结寄存器操作数的一第二存储元件;
其中,该第四存储元件组具有该执行单元执行该些算数运算的ARM ISAR8-R12通用寄存器;
其中,该第五存储元件组具有ARM ISA R8-R12通用寄存器操作数的存储元件,以对应ARM ISA FIQ例外事件模式;
其中,该第六存储元件组包含具有ARM ISA R8-R12通用寄存器操作数的存储元件,以全域性地对应该除了ARM ISA FIQ例外事件模式外所有的ARM ISA处理模式。
16.如权利要求13所述的方法,其中该第一存储元件组的一第一存储元件具有ARM ISA的一堆迭式指示符寄存器操作数,以及该第一存储元件组的一第二存储元件具有该执行单元执行该些算数运算的ARM ISA的一连结寄存器操作数。
17.如权利要求13所述的方法,其中该些例外事件模式包含ARM ISA例外事件模式。
18.如权利要求13所述的方法,还包含:
将ARM ISA机器指令语言的指令转译至多个微指令,其中至少一ARMISA的指令指示该微处理器自该当前处理模式进入该新处理模式;以及
执行该些微指令以将该第一存储元件组的该第一操作数子集存储至关联于该当前处理模式的该第二存储元件组,以及将关联于该新处理模式的该第二存储元件组的该第二操作数子集恢复至该第一存储元件组。
19.如权利要求18所述的方法,还包含:
将x86ISA机器指令语言的指令转译至该些微指令,其中该些微指令是以不同于x86ISA指令集的指令的编码方式进行编码。
20.一种微处理器,其支持一ISA,该ISA指定多个处理模式以及指定多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定一载入多重指令,该载入多重指令指示该微处理器自存储器内载入数据,并传入被该载入多重指令指定的一个或多个架构寄存器,该微处理器包含:
一直接存储器,具有关联于该些架构寄存器的一第一部分的数据,并耦接于该处理器的至少一执行单元,以提供该数据给该执行单元;
一间接存储器,具有关联于该些架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;
其中,该些架构寄存器依据该些处理模式中的一当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分;以及
其中,各架构寄存器被该载入多重指令指定:
若当该架构寄存器位于该第一部分,该微处理器自存储器内载入数据,并传入至该直接存储器;以及
若当该架构寄存器位于该第二部分,该微处理器自存储器内载入数据,并传入至该直接存储器,而后将该直接存储器的数据转至该间接存储器。
21.如权利要求20所述的微处理器,其中该微处理器所支持的该ISA包含ARM ISA,其中指定于ISA的该些处理模式包含ARM ISA使用者、系统、管理者、终止、未定、IRQ以及FIQ处理模式,其中指定于该ISA的该架构寄存器包含关联于该使用者处理模式的ARM ISA R0-R14寄存器,以及关联于该管理者、终止、未定、IRQ与FIQ处理模式的备份寄存器,其中指定于该ISA的该载入多重指令包含ARM ISA载入多重指令。
22.如权利要求20所述的微处理器,还包含:
一指令转译器,用以将该载入多重指令转译为该微处理器可执行的多个微指令,其中各架构寄存器被该载入多重指令指定:
若当该架构寄存器位于该第一部分,该指令转译器发送一微指令,以自该存储器载入数据转入至该直接存储器;
若当该架构寄存器位于该第二部分,该指令转译器发送一第一微指令,以自该存储器载入数据转入至该直接存储器,并且发送一第二微指令以将该直接存储器的数据转至该间接存储器。
23.如权利要求22所述的微处理器,其中该指令转译器包含:
一第一部分,发送该微指令以自存储器内载入数据,并送入该直接存储器,以及发送该第一微指令以自存储器内载入数据并送入该直接存储器,其中该第一部分包含一硬件状态机器;以及
一第二部分,发送该第二微指令以将该直接存储器的数据转至该间接存储器,其中该第二部分包含一微码。
24.如权利要求22所述的微处理器,其中一硬件指令转译器将x86ISA机器语言指令ARM ISA机器语言指令的指令转译为该些微指令,其中该些微指令是以不同于x86ISA与ARM ISA指令集的指令编码方式进行编码,其中该微处理器还包含一执行管线,耦接于该硬件指令转译器,其中该执行管线执行该些微指令以产生由x86ISA与ARM ISA指令所定义的结果。
25.如权利要求21所述的微处理器,
其中,若该当前处理模式为该ARM ISA使用者模式,则该直接存储器具有关联于该使用者模式架构寄存器的数据,且该间接存储器具有关联于ARM ISA例外事件模式的R13-R14架构寄存器的数据以及关联于ARM ISAFIQ模式的R8-R12架构寄存器的数据;
其中,若该当前处理模式为该ARM ISA FIQ模式,则该直接存储器具有关联于该FIQ架构寄存器的数据,且该间接存储器具有关连于该ARM ISA使用者模式与non-FIQ例外事件模式的R13-R14架构寄存器的数据,以及关联于早于该当前处理模式的该ARM ISA模式的R8-R12架构寄存器的数据;
其中,若该当前处理模式为一ARM ISA non-FIQ例外事件模式,则该直接存储器具有关联于该non-FIQ例外事件模式架构寄存器的数据,且该间接存储器具有关联于该ARM ISA使用者模式与非当前的例外事件模式的R13-R14架构寄存器的数据,以及关联于该ARM ISA FIQ模式的R8-R12架构寄存器的数据。
26.一种用以操作一微处理器的方法,该处理器支持一ISA,该ISA指定多个处理模式以及指定多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定一载入多重指令,该载入多重指令指示该微处理器自存储器内载入数据,并传入被该载入多重指令指定的一个或多个架构寄存器,该方法包含:
各架构寄存器被该载入多重指令指定:
若当该架构寄存器位于一第一部分,则自存储器内载入数据,并传入至该微处理器的直接存储器;以及
若当该架构寄存器位于一第二部分,则自存储器内载入数据并传入至该直接存储器,而后将该直接存储器的数据转至该间接存储器;
其中,该直接存储器具有关联于该架构寄存器的一第一部分的数据,并耦接于该微处理器的至少一执行单元以提供该数据至该执行单元;
其中,该间接存储器具有关连于该架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;
其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分。
27.如权利要求26所述的方法,其中该微处理器所支持的该ISA包含ARM ISA,其中指定于ISA的该些处理模式包含ARM ISA使用者、系统、管理者、终止、未定、IRQ以及FIQ处理模式,其中指定于该ISA的该架构寄存器包含关联于该使用者处理模式的ARM ISA R0-R14寄存器,以及关联于该管理者、终止、未定、IRQ与FIQ处理模式的备份寄存器,其中指定于该ISA的该载入多重指令包含ARM ISA载入多重指令。
28.如权利要求27所述的方法,还包含:
利用该微处理器将该载入多重指令转译为该微处理器可执行的多个微指令,其中各架构寄存器被该载入多重指令指定:
若当该架构寄存器位于该第一部分,该指令转译器发送一微指令,以自该存储器载入数据转入至该直接存储器;
若当该架构寄存器位于该第二部分,该指令转译器发送一第一微指令,以自该存储器载入数据转入至该直接存储器,并且发送一第二微指令以将该直接存储器的数据转至该间接存储器。
29.如权利要求28所述的方法,其中通过一硬件状态机器发送该微指令,以自存储器内载入数据并送入该直接存储器,其中通过一微码发送该第二微指令,以将该直接存储器的数据转至该间接存储器。
30.如权利要求27所述的方法,
其中,若该当前处理模式为该ARM ISA使用者模式,则该直接存储器具有关联于该使用者模式架构寄存器的数据,且该间接存储器具有关联于ARM ISA例外事件模式的R13-R14架构寄存器的数据以及关联于ARM ISAFIQ模式的R8-R12架构寄存器的数据;
其中,若该当前处理模式为该ARM ISA FIQ模式,则该直接存储器具有关联于该FIQ架构寄存器的数据,且该间接存储器具有关连于该ARM ISA使用者模式与non-FIQ例外事件模式的R13-R14架构寄存器的数据,以及关联于早于该当前处理模式的该ARM ISA模式的R8-R12架构寄存器的数据;
其中,若该当前处理模式为一ARM ISA non-FIQ例外事件模式,则该直接存储器具有关联于该non-FIQ例外事件模式架构寄存器的数据,且该间接存储器具有关联于该ARM ISA使用者模式与非当前的例外事件模式的R13-R14架构寄存器的数据,以及关联于该ARM ISA FIQ模式的R8-R12架构寄存器的数据。
31.一种微处理器,其支持一ISA,该ISA指定多个处理模式以及指定多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定一存储多重指令,该存储多重指令指令该微处理器将数据自被该存储多重指令指定的一个或多个架构寄存器中转存至一存储器,该微处理器包含:
一直接存储器,具有关联于该些架构寄存器的一第一部分的数据,并耦接于该处理器的至少一执行单元,以提供该数据给该执行单元;
一间接存储器,具有关联于该些架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;
其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分;以及
其中,各架构寄存器被该存储多重指令指定:
若当该架构寄存器位于该第一部分,该微处理器将数据自该直接存储器转存至存储器;以及
若当该架构寄存器位于该第二部分,该微处理器自该间接存储器内载入数据,并传入至该直接存储器,而后将数据自该直接存储器转存至存储器。
32.如权利要求31所述的微处理器,其中该微处理器所支持的该ISA包含ARM ISA,其中指定于ISA的该些处理模式包含ARM ISA使用者、系统、管理者、终止、未定、IRQ以及FIQ处理模式,其中指定于该ISA的该架构寄存器包含关联于该使用者处理模式的ARM ISA R0-R14寄存器,以及关联于该管理者、终止、未定、IRQ与FIQ处理模式的备份寄存器,其中指定于该ISA的该存储多重指令包含ARM ISA存储多重指令。
33.如权利要求32所述的微处理器,还包含
一指令转译器,用以将该存储多重指令转译为该微处理器可执行的多个微指令,其中各架构寄存器被该存储多重指令指定:
若当该架构寄存器位于该第一部分,该指令转译器发送一微指令,以将数据自该直接存储器转存至存储器;
若当该架构寄存器位于该第二部分,该指令转译器发送一第一微指令,以自该间接存储器内载入数据并传入至该直接存储器,而后将数据自该直接存储器转存至存储器。
34.如权利要求32所述的微处理器,其中,若该当前处理模式为该ARMISA使用者模式,则该直接存储器具有关联于该使用者模式架构寄存器的数据,且该间接存储器具有关联于ARM ISA例外事件模式的R13-R14架构寄存器的数据以及关联于ARM ISA FIQ模式的R8-R12架构寄存器的数据;其中,若该当前处理模式为该ARM ISA FIQ模式,则该直接存储器具有关联于该FIQ架构寄存器的数据,且该间接存储器具有关连于该ARM ISA使用者模式与non-FIQ例外事件模式的R13-R14架构寄存器的数据,以及关联于早于该当前处理模式的该ARM ISA模式的R8-R12架构寄存器的数据;其中,若该当前处理模式为一ARM ISA non-FIQ例外事件模式,则该直接存储器具有关联于该non-FIQ例外事件模式架构寄存器的数据,且该间接存储器具有关联于该ARM ISA使用者模式与非当前的例外事件模式的R13-R14架构寄存器的数据,以及关联于该ARM ISA FIQ模式的R8-R12架构寄存器的数据。
35.一种用以操作一微处理器的方法,该处理器支持一ISA,该ISA指定多个处理模式以及指定多个架构寄存器,且该些架构寄存器关联于各处理模式,以及指定一存储多重指令该存储多重指令指示该微处理器将数据自被该存储多重指令指定的一个或多个架构寄存器中转存至一存储器,该方法包含:
各架构寄存器被该存储多重指令指定:
若当该架构寄存器位于该第一部分,则将数据自该该微处理器的直接存储器转存至存储器;以及
若当该架构寄存器位于该第二部分,则自该间接存储器内载入数据并传入至该直接存储器,而后将数据自该直接存储器转存至存储器;
其中,该直接存储器具有关联于该架构寄存器的一第一部分的数据,并耦接于该微处理器的至少一执行单元以提供该数据至该执行单元;
其中,该间接存储器具有关连于该架构寄存器的一第二部分的数据,其中该间接存储器无法直接提供关联于该架构寄存器的该第二部分的数据至该执行单元;
其中,该些架构寄存器依据该些处理模式中的该当前处理模式,动态地分布于该架构寄存器的该第一部分与该架构寄存器的该第二部分。
36.如权利要求35所述的方法,其中该微处理器所支持的该ISA包含ARM ISA,其中指定于ISA的该些处理模式包含ARM ISA使用者、系统、管理者、终止、未定、IRQ以及FIQ处理模式,其中指定于该ISA的该架构寄存器包含关联于该使用者处理模式的ARM ISA R0-R14寄存器,以及关联于该管理者、终止、未定、IRQ与FIQ处理模式的备份寄存器,其中指定于该ISA的该存储多重指令包含ARM ISA存储多重指令。
37.如权利要求36所述的方法,还包含
利用该微处理器将该存储多重指令转译为该微处理器可执行的多个微指令,其中各架构寄存器被该存储多重指令指定:
若当该架构寄存器位于该第一部分,该指令转译器发送一微指令,以将数据自该直接存储器转存至存储器;
若当该架构寄存器位于该第二部分,该指令转译器发送一第一微指令,以自该间接存储器内载入数据,并传入至该直接存储器,而后将数据自该直接存储器转存至存储器。
38.如权利要求35所述的方法,其中若该当前处理模式为该ARM ISA使用者模式,则该直接存储器具有关联于该使用者模式架构寄存器的数据,且该间接存储器具有关联于ARM ISA例外事件模式的R13-R14架构寄存器的数据以及关联于ARM ISA FIQ模式的R8-R12架构寄存器的数据;
其中,若该当前处理模式为该ARM ISA FIQ模式,则该直接存储器具有关联于该FIQ架构寄存器的数据,且该间接存储器具有关连于该ARM ISA使用者模式与non-FIQ例外事件模式的R13-R14架构寄存器的数据,以及关联于早于该当前处理模式的该ARM ISA模式的R8-R12架构寄存器的数据;
其中,若该当前处理模式为一ARM ISA non-FIQ例外事件模式,则该直接存储器具有关联于该non-FIQ例外事件模式架构寄存器的数据,且该间接存储器具有关联于该ARM ISA使用者模式与非当前的例外事件模式的R13-R14架构寄存器的数据,以及关联于该ARM ISA FIQ模式的R8-R12架构寄存器的数据。
Applications Claiming Priority (28)
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,062 | 2011-04-07 | ||
US61/473,067 | 2011-04-07 | ||
US61/473,069 | 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 | ||
US201161537473P | 2011-09-21 | 2011-09-21 | |
US61/537,473 | 2011-09-21 | ||
US201161541307P | 2011-09-30 | 2011-09-30 | |
US61/541,307 | 2011-09-30 | ||
US201161547449P | 2011-10-14 | 2011-10-14 | |
US61/547,449 | 2011-10-14 | ||
US201161555023P | 2011-11-03 | 2011-11-03 | |
US61/555,023 | 2011-11-03 | ||
US13/333,572 US8880857B2 (en) | 2011-04-07 | 2011-12-21 | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US13/333,631 | 2011-12-21 | ||
US13/333,520 US9032189B2 (en) | 2011-04-07 | 2011-12-21 | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US13/333,631 US8924695B2 (en) | 2011-04-07 | 2011-12-21 | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US13/333,572 | 2011-12-21 | ||
US13/333,520 | 2011-12-21 | ||
US201261604561P | 2012-02-29 | 2012-02-29 | |
US61/604,561 | 2012-02-29 | ||
US13/413,300 US20120260073A1 (en) | 2011-04-07 | 2012-03-06 | Emulation of execution mode banked registers |
US13/413,300 | 2012-03-06 | ||
US13/413,314 US9176733B2 (en) | 2011-04-07 | 2012-03-06 | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US13/413,314 | 2012-03-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102707988A CN102707988A (zh) | 2012-10-03 |
CN102707988B true CN102707988B (zh) | 2015-09-09 |
Family
ID=46900805
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210102141.5A Active CN103218203B (zh) | 2011-04-07 | 2012-04-09 | 具有条件指令的微处理器及其处理方法 |
CN201210103608.8A Active CN102707988B (zh) | 2011-04-07 | 2012-04-09 | 微处理器及其操作方法 |
CN201711069237.5A Active CN107832083B (zh) | 2011-04-07 | 2012-04-09 | 具有条件指令的微处理器及其处理方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210102141.5A Active CN103218203B (zh) | 2011-04-07 | 2012-04-09 | 具有条件指令的微处理器及其处理方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711069237.5A Active CN107832083B (zh) | 2011-04-07 | 2012-04-09 | 具有条件指令的微处理器及其处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN103218203B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9483263B2 (en) * | 2013-03-26 | 2016-11-01 | Via Technologies, Inc. | Uncore microcode ROM |
CN103984530B (zh) * | 2014-05-15 | 2016-08-17 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种提高store指令执行效率的流水线结构及方法 |
CN104765590B (zh) * | 2015-04-29 | 2017-06-13 | 清华大学 | 一种支持超标量与超长指令字混合架构处理器的分支预测方法 |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10678544B2 (en) * | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10282204B2 (en) * | 2016-07-02 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for strided load |
CN106406814B (zh) * | 2016-09-30 | 2019-06-14 | 上海兆芯集成电路有限公司 | 处理器和将架构指令转译成微指令的方法 |
CN114205415A (zh) * | 2020-09-17 | 2022-03-18 | 深圳市中兴微电子技术有限公司 | 报文修改方法、装置、计算机设备、介质 |
CN114090077B (zh) * | 2021-11-24 | 2023-01-31 | 海光信息技术股份有限公司 | 调取指令的方法及装置、处理装置及存储介质 |
CN113868899B (zh) * | 2021-12-03 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 一种分支指令处理方法、系统、设备及计算机存储介质 |
TWI806581B (zh) * | 2022-04-29 | 2023-06-21 | 瑞昱半導體股份有限公司 | 用來在管線化架構中檢查並更新程式計數器數值的邏輯電路以及方法 |
CN116414463B (zh) * | 2023-04-13 | 2024-04-12 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
CN116700795B (zh) * | 2023-08-01 | 2023-12-01 | 广州中基国威电子科技有限公司 | 一种位操作控制系统及控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854913A (en) * | 1995-06-07 | 1998-12-29 | International Business Machines Corporation | Microprocessor with an architecture mode control capable of supporting extensions of two distinct instruction-set architectures |
CN101116053A (zh) * | 2005-02-09 | 2008-01-30 | 先进微装置公司 | 适用于高效数字信号处理的数据处理器及其方法 |
CN101689107A (zh) * | 2007-06-27 | 2010-03-31 | 高通股份有限公司 | 用于将条件指令扩展为无条件指令与选择指令的方法和系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6442678B1 (en) * | 1998-12-31 | 2002-08-27 | Intel Corporation | Method and apparatus for providing data to a processor pipeline |
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 |
GB2367654B (en) * | 2000-10-05 | 2004-10-27 | Advanced Risc Mach Ltd | Storing stack operands in registers |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
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 |
US20050188185A1 (en) * | 2004-02-20 | 2005-08-25 | Grochowski Edward T. | Method and apparatus for predicate implementation using selective conversion to micro-operations |
US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
US7421566B2 (en) * | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US8166279B2 (en) * | 2007-05-03 | 2012-04-24 | International Business Machines Corporation | Method for predictive decoding of a load tagged pointer instruction |
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
-
2012
- 2012-04-09 CN CN201210102141.5A patent/CN103218203B/zh active Active
- 2012-04-09 CN CN201210103608.8A patent/CN102707988B/zh active Active
- 2012-04-09 CN CN201711069237.5A patent/CN107832083B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854913A (en) * | 1995-06-07 | 1998-12-29 | International Business Machines Corporation | Microprocessor with an architecture mode control capable of supporting extensions of two distinct instruction-set architectures |
CN101116053A (zh) * | 2005-02-09 | 2008-01-30 | 先进微装置公司 | 适用于高效数字信号处理的数据处理器及其方法 |
CN101689107A (zh) * | 2007-06-27 | 2010-03-31 | 高通股份有限公司 | 用于将条件指令扩展为无条件指令与选择指令的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107832083A (zh) | 2018-03-23 |
CN107832083B (zh) | 2020-06-12 |
CN103218203B (zh) | 2016-03-16 |
CN102707988A (zh) | 2012-10-03 |
CN103218203A (zh) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102707988B (zh) | 微处理器及其操作方法 | |
CN102707927B (zh) | 具有条件指令的微处理器及其处理方法 | |
CN102937889B (zh) | 控制寄存器对应于异质指令集架构处理器 | |
TWI569203B (zh) | 非循序執行微處理器之條件載入指令 | |
CN102707926B (zh) | 可执行x86指令集及ARM指令集指令的微处理器及其运作方法 | |
CN103530089B (zh) | 微处理器及其操作方法 | |
TWI478065B (zh) | 執行模式備份暫存器之模擬 | |
EP2704002B1 (en) | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program | |
EP2704001B1 (en) | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
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 |