微处理器以及在微处理器中存储数据的方法转让专利

申请号 : CN200810088649.8

文献号 : CN101261577B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G·葛兰·亨利罗德尼·E·虎克泰瑞·派克斯柯林·艾迪

申请人 : 威盛电子股份有限公司

摘要 :

一种微处理器,包括用户可存取寄存器组、随机存取存储器与微代码。该随机存取存储器位于该微处理器的非用户可存取地址空间内,其中该随机存取存储器比该用户可存取寄存器组密集,且存取速度比该用户可存取寄存器组慢。该微代码包括多个该微处理器的微指令集的多个微指令。该微指令集包括第一微指令与第二微指令。该第一微指令用以将该用户可存取寄存器组的数据存储至该随机存取存储器。该第二微指令用以将该随机存取存储器的数据加载至该用户可存取寄存器组。

权利要求 :

1. 一种具有微代码的微处理器,包括:

用户可存取寄存器组;

随机存取存储器,其位于该微处理器的非用户可存取地址空间内,其中该随机存取存储器比该用户可存取寄存器组密集,且存取速度比该用户可存取寄存器组慢;以及其中该微代码包括该微处理器的微指令集的多个微指令,该微指令集包括:第一微指令,其用以将该用户可存取寄存器组的数据存储至该随机存取存储器;以及

第二微指令,其用以将该随机存取存储器的数据加载至该用户可存取寄存器组。

2. 如权利要求1所述的微处理器,其还包括:

非用户可存取寄存器组,其中该非用户可存取寄存器组不如该随机存取存储器密集,且存取速度比该随机存取存储器快;

其中该第一微指令更用以将该非用户可存取寄存器组的数据存储至该随机存取存储器,且该第二微指令用以将该随机存取存储器的数据加载至该非用户可存取寄存器组。

3. 如权利要求2所述的微处理器,其中,该微代码根据VMX VMWRITE指令执行一个或多个该第一微指令,以存储一部分的x86架构的虚拟机器延伸虚拟控制架构至该随机存取存储器。

4. 如权利要求2所述的微处理器,其中,该微代码根据VMX VMREAD指令执行一个或多个该第二微指令,以从该随机存取存储器加载一部分的x86架构的虚拟机器延伸虚拟控制架构。

5. 如权利要求2所述的微处理器,其中,该微代码根据x86架构的RSM指令执行一个或多个该第一微指令,以存储系统管理模式基地址至该随机存取存储器。

6. 如权利要求2所述的微处理器,其中,该微代码根据x86架构的系统管理中断指令执行一个或多个该第二微指令,以从该随机存取存储器加载系统管理模式基地址。

7. 如权利要求1所述的微处理器,其中,该微代码根据指定x86架构的IA32_SYSENTER_CS特别模块寄存器为目的特别模块寄存器的x86架构的WRMSR指令执行一个或多个该第一微指令,以存储特权阶级0码数据段值的数据段选择器至该随机存取存储器。

8. 如权利要求1所述的微处理器,其中,该微代码根据指定x86架构的IA32_SYSENTER_CS特别模块寄存器为来源特别模块寄存器的x86架构的RDMSR指令执行一个或多个该第二微指令,以从该随机存取存储器加载特权阶级0码数据段值的数据段选择器。

9. 如权利要求1所述的微处理器,其中,该微代码执行该第一或第二微指令以将该随机存取存储器作为暂时存储区,以存储该微代码的计算结果。

10. 如权利要求1所述的微处理器,其中,该微处理器根据该微代码指令存取的该非用户可存取地址空间而不对外部总线存取。

11. 一种在微处理器中存储数据的方法,包括下列步骤:执行第一微指令,用以将该微处理器的用户可存取寄存器组的数据存储至该微处理器的随机存取存储器,其中该随机存取存储器位于该微处理器的非用户可存取地址空间内,其中该随机存取存储器比该用户可存取寄存器组密集,且存取速度比该用户可存取寄存器组慢;以及执行第二微指令,用以将该随机存取存储器的数据加载至该用户可存取寄存器组,其中该第一与第二微指令为该微处理器的微指令集的多个微指令中的两个微指令。

12. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:执行该第一微指令,用以将非用户可存取寄存器组的数据存储至该随机存取存储器,其中该非用户可存取寄存器组不如该随机存取存储器密集,且存取速度比该随机存取存储器快;以及执行该第二微指令,用以将该随机存取存储器的数据加载至该非用户可存取寄存器组。

13. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:解码x86架构的VMX VMWRITE指令;以及

执行一个或多个该第一微指令,以存储一部分的虚拟机器延伸虚拟控制架构至该随机存取存储器。

14. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:解码x86架构的VMX VMREAD指令;以及

执行一个或多个该第二微指令,以从该随机存取存储器加载一部分的虚拟机器延伸虚拟控制架构。

15. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:解码x86架构的RSM指令;以及

执行一个或多个该第一微指令,以存储系统管理模式基地址至该随机存取存储器。

16. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:接收x86架构的系统管理中断指令;以及

执行一个或多个该第二微指令,以从该随机存取存储器加载系统管理模式基地址。

17. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:解码指定x86架构的IA32_SYSENTER_CS特别模块寄存器为目的特别模块寄存器的x86架构的WRMSR指令;以及执行一个或多个该第一微指令,以存储特权阶级0码数据段值的数据段选择器至该随机存取存储器。

18. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:解码指定x86架构的IA32_SYSENTER_CS特别模块寄存器为来源特别模块寄存器的x86架构的RDMSR指令;以及执行一个或多个该第二微指令,以从该随机存取存储器加载特权阶级0码数据段值的数据段选择器。

19. 如权利要求11所述的在微处理器中存储数据的方法,其还包括下列步骤:执行该第一或第二微指令以将该随机存取存储器作为暂时存储区,以存储微代码的计算结果。

说明书 :

微处理器以及在微处理器中存储数据的方法

技术领域

[0001] 本发明涉及一种具有微代码的微处理器,更具体地涉及一种微代码的暂时变动存储。

背景技术

[0002] 微处理器包括指令集,该指令集是为该微处理器的指令集架构(Instruction Set Architecture,以下简称为ISA)的一部分,在本文可称为微处理器的宏架构(Macroarchitecture)。该指令集定义了微处理器可执行的合法指令集。程序设计师(在本文中可称为用户)利用该指令集中的指令写入程序,以被该微处理器执行。该程序设计师可为撰写应用程序的应用程序设计师,或者为撰写操作系统或可执行软件的系统程序设计师。ISA亦包括寄存器等资源,其可被该指令集中的指令存取。常用的ISA为IntelIA-32与IA-64 ISA,可参照x86架构,其包括指令集与具有一般功用寄存器的用户可存取寄存器、数据段寄存器(Segment Registers)、堆栈与基底指针寄存器...等习知的寄存器。 [0003] 许多新型的微处理器包括微架构(Microarchitecture),其无法直接以写入程序直接存取至微处理器ISA中。该微架构包括其本身支持微指令的微指令集,其与上述ISA的用户可存取指令集不同。该ISA指令集的用户可存取指令有时可参照宏架构,以分辨其与微指令集的微指令的不同。微指令较宏指令来的简单,且可较直接地控制微处理器的硬件。微处理器设计者写入微代码,其包括微架构微指令集的微指令,且在微处理器的微架构内执行。典型上,微处理器包括指令转译器,其用以转译用户程序宏指令为微指令集的一个或多个微指令,然后分派给微处理器的执行单元以执行指令。若宏指令特别复杂,则该指令转译器可呼叫由多个微指令组成的微代码中的例行程序以执行该ISA指令。当代x86架构ISA微处理器是利用精简指令集(ReducedInstruction Set Computer,简称为RISC)微架构,其包括比IA-32宏架构集明显简单的RISC型态指令集。
[0004] 因此,微架构典型上包括除了用户可存取ISA资源以外的其它资源,例如,微代码专用的额外寄存器,其是为非用户可存取寄存器。举例来说,与许多RISC架构微处理器相比,IA-32 ISA的用户可存取寄存器的数目相对来说是较少的,举例来说像是RISC型态微指令使用的非用户可存取寄存器。
[0005] 近来在微处理器的革新,ISA增加了在微架构所需的额外寄存器总量的需求,以发展新的特色。然而,很不幸地,使用在大量额外寄存器上的实际芯片量可能会被限制。此外,微代码不应使用系统存储器以作为额外存储空间,因为通常是由操作系统来配置与管理系统存储器的。因此,所需的应是提供微代码使用的额外存储空间,其与寄存器相比相对来说速度较快且仅需要较少的芯片区。

发明内容

[0006] 本发明实施例公开了一种微处理器,包括用户可存取寄存器组、随机存取存储器与微代码。该随机存取存储器位于该微处理器的非用户可存取地址空间内,其中该随机存取存储器比该用户可存取寄存器组密集(dense),且存取速度你该用户可存取寄存器组慢。该微代码包括多个该微处理器的微指令集的多个微指令。该微指令集包括第一微指令与第二微指令。该第一微指令用以将该用户可存取寄存器组的数据存储至该随机存取存储器。
该第二微指令用以将该随机存取存储器的数据加载至该用户可存取寄存器组。
[0007] 本发明实施例还公开了一种在微处理器中存储数据的方法。执行第一微指令,用以将该微处理器的用户可存取寄存器组的数据存储至该微处理器的随机存取存储器,其中该随机存取存储器位于该微处理器的非用户可存取地址空间内,其中该随机存取存储器较比用户可存取寄存器组密集,且存取速度比该用户可存取寄存器组慢。执行第二微指令,用以将该随机存取存储器的数据加载至该用户可存取寄存器组,其中该第一与第二微指令是为该微处理器的微指令集的多个微指令中的两个微指令。

附图说明

[0008] 图1是显示本发明实施例的管线式微处理器的架构示意图,其包括私有随机存取存储器。
[0009] 图2是显示本发明实施例的不同系统存储器与私有随机存取存储器地址 空间的示意图。
[0010] 图3是显示本发明实施例的执行私有随机存取存储器的loadPRAM微指令的步骤流程图。
[0011] 图4是显示本发明实施例的执行私有随机存取存储器storePRAM微指令的步骤流程图。
[0012] 图5是显示本发明实施例的图1的微处理器执行VMWRITE宏指令的步骤流程图。 [0013] 图6是显示本发明实施例的图1的微处理器执行VMREAD宏指令的步骤流程图。 [0014] 图7是显示本发明实施例的图1的微处理器执行x86架构的WRMSR宏指令的步骤流程图。
[0015] 图8是显示本发明实施例的图1的微处理器执行x86架构的RDMSR宏指令的步骤流程图。
[0016] 图9是显示本发明实施例的图1的微处理器执行x86架构的RSM宏指令的步骤流程图。
[0017] 图10是显示本发明实施例的图1的微处理器响应接收x86架构的SMI宏指令的操作的步骤流程图。
[0018] 主要组件符号说明
[0019] 100~微处理器
[0020] 102~指令缓冲区
[0021] 104~指令收件器
[0022] 106~指令转译器
[0023] 108~指令分派器
[0024] 112~用户可存取寄存器组
[0025] 114~数据缓冲区
[0026] 122~加载/存储单元
[0027] 124~执行单元
[0028] 126~私有随机存取存储器
[0029] 128~微代码
[0030] 132~总线接口单元
[0031] 134~非用户可存取寄存器组
[0032] 136~处理器总线
[0033] 302、304、402、404、502、504、602、604、702、704、802、804、902、904、1002、1004~流程步骤

具体实施方式

[0034] 为了让本发明的目的、特征、及优点能更明显易懂,下文特举较佳实施例,并配合所附图式图1至图10,做详细的说明。本发明说明书提供不同的实施例来说明本发明不同实施方式的技术特征。其中,实施例中的各组件的配置是为说明所用,并非用以限制本发明。且实施例中图式标号的部分重复,是为了简化说明,并非意指不同实施例的间的关联性。
[0035] 图1是显示本发明实施例的管线式微处理器100的架构示意图,其包括私有随机存取存储器(Private Random Access Memory,PRAM)126。在实施例中,图1的微处理器100的组件(包括私有随机存取存储器126)是整合在单一半导体基板上。由于私有随机存取存储器126不可被用户代码宏指令存取,故其是为私有随机存取存储器,但其可被微处理器100经由其微代码128来存取。此外,微处理器100包括在其微指令集中的不同微指令,用以存取私有随机存取存储器126,如上所述。
[0036] 微处理器100包括指令缓冲区102,其用以缓冲来自耦接于微处理器100的系统存储器的用户程序宏指令。微处理器100亦包括指令收件器(Fetcher)104,其耦接于指令缓冲区102,用以自指令缓冲区102与系统存储器取得宏指令。微处理器100亦包括指令转译器106,其耦接于指令收件器104,用以解码取得的微处理器100的宏指令集的宏指令,并且转译该取得的宏指令为微处理器100的宏指令集的微指令。微处理器100亦包括loadPRAM与storePRAM微指令,而微指令亦包括一般存储器加载/存储微指令。
[0037] 微处理器100亦包括微代码128。微代码128包括该微处理器的微指令集的多个微指令。部分的微代码128包括微指令的例行程序(或序列),以执行宏指令或处理异常的情况。特别的是,当指令转译器106解码某些宏指令(例如,相对复杂的宏指令),其转换控制给微代码128中的适当的例行程序,而非直接产生转译所得的微指令。
[0038] 特别的是,微指令集包括loadPRAM微指令与storePRAM微指令,其格 式如图1所示。
[0039] loadPRAM PRAM_address,register;
[0040] storePRAM register,PRAM_address。
[0041] loadPRAM微指令的PRAM_address操作数指定私有随机存取存储器126中的来源位置,该来源位置中的数据是加载至loadPRAM微指令的寄存器操作数指定的目的寄存器。storePRAM微指令的PRAM_address操作数指定私有随机存取存储器126中的目的位置,该目的位置中的数据是来自storePRAM微指令的寄存器操作数指定的来源寄存器。指定的寄存器可为用户可存取寄存器组112中寄存器中的一个寄存器,或者为非用户可为存取寄存器组134中寄存器中的一个寄存器,其说明如下。
[0042] 指令分派器108(其耦接于指令转译器106)分派指令转译器106或微代码128的微指令给与指令分派器108相耦接的多个功能单元的其中之一。功能单元包括加载/存储单元122,以及一个或多个执行单元124,例如,整合单元、浮点单元以及单指令多数据(Single Instruction Multiple Data,SIMD)单元。特别的是,指令分派器108分派loadPRAM与storePRAM微指令给加载/存储单元122。
[0043] 微处理器100亦包括该宏架构的用户可存取寄存器组112,其提供指令操作数给上述功能单元,并且自上述功能单元接收指令运算后的结果。微处理器100亦包括该宏架构一非用户可存取寄存器组134,其提供指令操作数给上述功能单元,并且自上述功能单元接收指令运算后的结果。非用户可存取寄存器组134仅可利用微指令来存取,且不可利用用户宏指令存取。非用户可存取寄存器组134被微代码128使用以作为暂时存储之用,并用以执行运算。非用户可存取寄存器组134可被微代码128而非私有随机存取存储器126使用在某些特定目的,其较私有随机存取存储器126需要较短的潜伏期(access latency)以满足较小的存储需求。
[0044] 微处理器100亦包括数据缓冲区114,其耦接于加载/存储单元122,用以缓冲来自系统存储器的数据。数据缓冲区114是为用户可存取的,也就是说,数据缓冲区114是设置于微处理器100的系统存储器地址空间内,其可被用户宏指令所存取。总线接口单元132耦接于数据缓冲区114。总线接口 单元132耦接于处理器总线136以存取系统存储器。总线接口单元132在处理器总线136产生交易以在微处理器100与系统存储器的间传送数据,例如,当加载或存储微指令(即,一般存储器加载或存储微指令,相对于loadPRAM或storePRAM微指令)的存储器地址在数据缓冲区114中遗失时,其需要自系统存储器提取至数据缓冲区114的遗失缓冲线,或者当缓冲线自数据缓冲区114写回至系统存储器或清除掉。
[0045] 图2是显示本发明实施例的不同系统存储器与私有随机存取存储器地址空间的示意图。私有随机存取存储器126耦接于加载/存储单元122。私有随机存取存储器126设置于微处理器100的非用户可存取私有随机存取存储器地址空间中,其与微处理器100的存储器地址空间是各自独立,如图2所示。也就是说,私有随机存取存储器126无法被用户代码宏指令存取,而仅可被微处理器100本身存取,例如经由微代码128或其它内建硬件来存取。相对的,数据缓冲区114与系统存储器设置于微处理器100的存储器地址空间,其可被用户宏指令与微代码128存取,如图2所示。加载/存储单元122根据指令分派器108的loadPRAM与storePRAM微指令,分别自私有随机存取存储器126读取且写入至私有随机存取存储器126。
[0046] 在一个实施例中,私有随机存取存储器126包括4KB的存储空间。然而,在其它实施例中,私有随机存取存储器126是大于或小于4KB的存储空间。有利的是,私有随机存取存储器126比用户可存取寄存器组112与非用户可存取寄存器组134来的密集。也就是说,存储在私有随机存取存储器126中的每单位面积的数据量大于存储在用户可存取寄存器组112与非用户可存取寄存器组134中的每单位面积的数据量。因此,私有随机存取存储器126可包括相对于用户可存取寄存器组112与非用户可存取寄存器组134而言较大的存储空间。在一个实施例中,私有随机存取存储器126至少两倍密集于用户可存取寄存器组112与非用户可存取寄存器组134。在一个实施例中,由于私有随机存取存储器126包括不符合使用于制造微处理器100整合电路的特定制造技术的设计规则的客制静态随机存取存储器位细胞,但用户可存取寄存器组112与非用户可存取寄存器组134包括符合该制造技术的设计规则的位细胞,故私有随机存取存储器126比用户可存取寄存器组112与非用户可存取寄存器组134来的密集。在一个实施例中,私有随机存取存储器126由可作为数据缓冲区114的静态随机存取存储器(Static Random Access Memory,SRAM)构成。与前述相比,私有随机存取存储器126的存取速度比用户可存取寄存器组112与非用户可存取寄存器组134来的慢。私有随机存取存储器126的存取速度可能因为以下原因而比用户可存取寄存器组112与非用户可存取寄存器组134来的慢。(1)在私有随机存取存储器126比在用户可存取寄存器组112与非用户可存取寄存器组134中有较多的可寻址位置,因此私有随机存取存储器126的地址解码电路比用户可存取寄存器组112与非用户可存取寄存器组134具有较长的延迟。(2)私有随机存取存储器126位的细胞线驱动电路比用户可存取寄存器组112与非用户可存取寄存器组134的线驱动电路弱。(3)因为私有随机存取存储器126位细胞的数目较多,故私有随机存取存储器126的细胞线的加载较用户可存取寄存器组112与非用户可存取寄存器组134的细胞线的载入大。在一实施例中,私有随机存取存储器126需要四个频率周期来进行存取,但用户可存取寄存器组112与非用户可存取寄存器组134仅需要一个频率周期来进行存取。
[0047] 微处理器100亦包括用于侦测系统存储器加载/存储碰撞的逻辑。该逻辑转送碰撞加载/存储数据至微处理器100的适当阶段,以促进每秒速率所增加的指令。在一实施例中,微处理器100是为非依序执行的微处理器。上述逻辑亦可以适当的顺序来执行碰撞加载/存储。有利的是,该逻辑亦可用来侦测私有随机存取存储器126的加载/存储碰撞,以转送私有随机存取存储器126的碰撞数据,并且以适当的顺序来执行私有随机存取存储器126的碰撞加载/存储。然而,由于私有随机存取存储器126占用与系统存储器不同的地址空间,该逻辑并不会侦测系统存储器的加载/存储与私有随机存取存储器126的加载/存储间的碰撞。因此,有利的是,用于执行存储器加载/存储指令的微处理器100中相当显著数量的逻辑与数据路径可被微处理器100重复使用,以执行loadPRAM与storePRAM微指令。
[0048] 在一实施例中,加载/存储单元122并不会转译loadPRAM与storePRAM微指令指定的地址。也就是说,不像一般加载与存储指令,其指定可经由微处理器100(例如,存储器分页单元)的地址转译机制而转译为实际地址的虚拟地址,loadPRAM与storePRAM微指令指定的地址是为用于存取私有随机存取存储器126的实际地址。在一实施例中,PRAM_address操作数在loadPRAM与storePRAM微指令中被指定为常数。在另一实施例中,程序设计师可利用寻址模式来指定loadPRAM与storePRAM微指令的PRAM_address操 作数,其中loadPRAM与storePRAM微指令类似于加载/存储存储器微指令。也就是说,微处理器100中用来产生一般加载/存储微指令存储器地址的地址产生逻辑亦可用来产生私有随机存取存储器126的地址。在一实施例中,loadPRAM与storePRAM微指令可指定最多三个不同的操作数以产生PRAM_address,亦即指定用以存储操作数与固定位移字段的二个各别寄存器。举例来说,程序设计师可利用寄存器中的基地址与增加寄存器中的地址偏移值,以利用loadPRAM与storePRAM微指令依序存取私有随机存取存储器126。
[0049] 加载/存储单元122辨识出loadPRAM与storePRAM微指令的地址操作数指定位置仅存在于私有随机存取存储器126中,而非存储器空间中的地址。因此,加载/存储单元122根据私有随机存取存储器126的存取,故并未要求总线接口单元132产生处理器总线
136上的交易loadPRAM与storePRAM微指令。因此,私有随机存取存储器126的地址空间是不用缓冲的。
[0050] 图3是显示本发明实施例的加载私有随机存取存储器的loadPRAM微指令的步骤流程图,该流程由步骤302开始。
[0051] 在步骤302中,加载/存储单元122接收loadPRAM微指令,并且自私有随机存取存储器126中由PRAM_address操作数指定的位置读取数据。如上文所述,私有随机存取存储器126中的该位置的地址,可根据loadPRAM微指令指定的寻址模式并藉由地址产生逻辑来产生。接着执行步骤304。
[0052] 在步骤304中,加载/存储单元122写入在步骤302中读取的数据至loadPRAM微指令寄存器操作数指定的寄存器。如上所述,该寄存器为用户可存取寄存器组112或非用户可存取寄存器组134的寄存器。
[0053] 图4是显示本发明实施例的存储私有随机存取存储器的storePRAM微指令的步骤流程图,该流程由步骤402开始。
[0054] 在步骤402中,加载/存储单元122接收storePRAM微指令,并且自storePRAM微指令寄存器操作数指定的寄存器读取数据。接着执行步骤404。
[0055] 在步骤404中,加载/存储单元122写入在步骤402中读取的数据至私有随机存取存储器126中由PRAM_address操作数指定的该位置。
[0056] 在一实施例中,微处理器100的ISA会确认为IA-32或IA-64 ISA。特别的是,用户可存取寄存器组112会确认为IA-32或IA-64 ISA的用户可存取寄存器组,并且微处理器100的宏指令组会确认为IA-32/64宏指令组。在上述实施例中,私有随机存取存储器126可用来存储一个或多个虚拟机器延伸(Virtual-Machine Extensions,简称为VMX)虚拟控制架构(VirtualMachine Control Structure,简称为VMCS),其将在下文中的图5、6中描述。在一实施例中,微处理器100存储私有随机存取存储器126中部分或所有最近使用的虚拟控制架构。此外,私有随机存取存储器126的位置可用来说明部分IA-32/64特别模块寄存器(Model Specific Register,简称为MSR)。举例来说,IA32_SYSENTER_CS特别模块寄存器可以私有随机存取存储器126来说明,其将在下文中的图7、8中描述。此外,私有随机存取存储器126可用来存储系统管理中断(System Management Interrupt,简称为SMI)相关值。举例来说,系统管理中断基地址(System ManagementInterrupt Base Address,简称为SMBASE)值可存储在私有随机存取存储器126中,其将在下文中的图9、10中描述。
[0057] 图5是显示本发明实施例的图1的微处理器100执行一VMWRITE宏指令的步骤流程图,该流程由步骤502开始。
[0058] 在步骤502中,指令转译器106解码VMX VMWRITE宏指令,并且将控制权传送给与VMWRITE宏指令相关的微代码128的例行程序。接着执行步骤504。
[0059] 在步骤504中,VMWRITE微代码128的例行程序为:先执行loadsys_mem_address,temp_reg微指令,接着执行storePRAM temp_reg,PRAM_address微指令。该load sys_mem_address,temp_reg微指令自系统存储器地址读取数据,其中该系统存储器地址包括VMWRITE宏指令指定的VMCS字段,并且将数据写入至非用户可存取寄存器组134的暂时寄存器中。该storePRAM temp_reg,PRAM_address微指令自该暂时寄存器读取数据,并且将该数据写入至私有随机存取存储器126的位置中,其中该位置是用以存储VMWRITE宏指令指定的VMCS字段。在一实施例中,微处理器100根据VMX VMPTRLD宏指令分配私有随机存取存储器126的一些存储位置给VMCS。
[0060] 图6是显示本发明实施例的图1的微处理器100执行VMREAD宏指令的步骤流程图,该流程由步骤602开始。
[0061] 在步骤602中,指令转译器106解码VMXVMREAD宏指令,并且将控制权传送给与VMREAD宏指令相关的微代码128的例行程序。接着执行步骤604。
[0062] 在步骤604中,VMREAD微代码128的例行程序为:先执行loadPRAM PRAM_address,temp_reg微指令,再执行store temp_reg,sys_mem_address微指令。该loadPRAM PRAM_address,temp_reg微指令自私有随机存取存储器126的位置读取数据,其中该私有随机存取存储器126的位置包括非用户可存取寄存器组134的暂时寄存器。该storet emp_reg,sys_mem_address微指令自该暂时寄存器读取数据,并且将该数据写入至VMREAD宏指令指定的系统存储器的位置中。
[0063] 图5、6分别描述与存储私有随机存取存储器126的VMCS相关的VMWRITE与VMREAD宏指令的操作,其中配置了系统存储器存储空间,且宏架构并未托管微处理器100内的存储空间,使得自私有随机存取存储器126存取VMCS的速度较自系统存储器读取的VMCS速度还快。然而,本发明实施例并非用以限制在将VMCS存储在私有随机存取存储器126中。更确切的说,私有随机存取存储器126可用来存储其它数据结构,以得到较系统存储器更快的存取速度,但宏架构并不需指定微处理器100内的存储空间。
[0064] 图7是显示本发明实施例的图1的微处理器100执行一x86架构的WRMSR宏指令的步骤流程图,该流程由步骤702开始。
[0065] 在步骤702中,指令转译器106解码指定IA32_SYSENTER_CS MSR的WRMSR宏指令,并且将控制权传送给与WRMSR宏指令相关的微代码128的例行程序。在WRMSR宏指令之前,用户程序包括一个或多个指令,该指令是用以加载具有指定IA32_SYSENTER_CS MSR值的ECX寄存器以及用以加载具有用以写入到MSR值的EDX:EAX寄存器。接着执行步骤704。
[0066] 在步骤704中,WRMSR微代码128的例行程序为:执行storePRAM EDX:EAX,PRAM_address微指令。该storePRAM EDX:EAX,PRAM_address微指令自连锁的EDX:EAX寄存器读取数据,并且将数据写入至私有随机存取存储器126中的位置,其中该位置是用以说明IA32_SYSENTER_CS MSR。在一实施例中,WRMSR微代码128的例行程序加载具有指定私有随机存取存储器126中的全球基地址(global base address)的值的基底寄存器,其中该全球基地址是用以存储MSR值,且该ECX值是做为该基地址的偏移量以形成私有随机存取存储器126的实际地址。
[0067] 图8是显示本发明实施例的图1的微处理器100执行x86架构的RDMSR宏指令的步骤流程图,该流程由步骤802开始。
[0068] 在步骤802中,指令转译器106解码指定IA32_SYSENTER_CS MSR的RDMSR 宏指令,并且将控制权传送给与RDMSR宏指令相关的微代码128的例行程序。在RDMSR宏指令之前,用户程序包括一个或多个指令,该指令是用以加载具有指定IA32_SYSENTER_CS MSR值的该ECX寄存器。接着执行步骤804。
[0069] 在步骤804中,RDMSR微代码128的例行程序为:执行loadPRAMPRAM_address,EDX:EAX微指令。该loadPRAM PRAM_address,EDX:EAX微指令自私有随机存取存储器126中的位置读取数据,其中该位置是用以说明IA32_SYSENTER_CS MSR,并且将数据写入至连锁的EDX:EAX寄存器中。在一实施例中,RDMSR微代码128的例行程序加载具有指定私有随机存取存储器126中的全球基地址的值的基底寄存器,其中该全球基地址是用以存储MSR值,且该ECX值是做为该基地址的偏移量以形成私有随机存取存储器126的实际地址。 [0070] 图7、8分别描述指定特定MSR(即IA32_SYSENTER_CS MSR)的WRMSR与RDMSR宏指令的操作,从而减少MSR存储空间使用的芯片区的存储量。然而,本发明并非用以限定说明私有随机存取存储器126中的IA32_SYSENTER_CSMSR。更确切的说,私有随机存取存储器126可用来说明其它MSR,而不需立即被微处理器100的硬件存取,但可容许与存取私有随机存取存储器126相关的潜伏期(latency)。
[0071] 在说明图9、10之前,先简单说明x86架构的系统管理模式的操作。x86宏架构分配一部分的系统存储器以用于系统管理中断(System ManagementInterrupt,简称为SMI),该分配的系统存储器可称为系统管理随机存取存储器(System Management RAM,以下简称为SMRAM)。根据系统管理中断,一部分的SMRAM(可称为状态存储区(State Save Area))可被微处理器100用来存储其状态。SMRAM的基地址是由系统管理中断基地址值来指定。该状态存储区是设置在系统管理中断基地址的预设偏移量中。该系统管理中断基地址值是存储在两个地方,即在微处理器100内与SMRAM的状态存储区的预设偏移量(可称为系统管理中断基地址字段)内。当重置微处理器100时,微处理器100内的系统管理中断基底值初始为宏架构定义的默认值。当微处理器100接收系统管理中断,微处理器100存储目前微处理器100的状态至SMRAM,其中该SMRAM的基底是为微处理器100内的系统管理中断基地址值所定义。当用户程序执行x86可移动存储体管理程序(RemovableStorage Manager,简称为RSM)宏指令,微处理器100回存SMRAM的状态存 储区的处理器状态。回存SMRAM的状态存储区的处理器状态包括以系统存储器中的状态存储区中的系统管理模式基地址字段值回存(并且更新)内部存储的系统管理模式基地址值。该特色有助于多处理系统中的多处理器操作,其中主要处理器重自该初始位置配置SMRAM的位置给其它处理器。 [0072] 图9是显示本发明实施例的图1的微处理器100执行x86架构的RSM宏指令的步骤流程图,该流程由步骤902开始。
[0073] 在步骤902中,指令转译器106解码RSM宏指令,并且将控制权传送给与RSM宏指令相关的微代码128的例行程序。接着执行步骤904。
[0074] 在步骤904中,RSM微代码128的例行程序为:执行loadPRAMPRAM_address,temp_reg1微指令,接着执行load sys_mem_address,temp_reg2微指令,最后执行storePRAM temp_reg2,PRAM_address微指令。该loadPRAM PRAM_address,temp_reg1微指令读取存储在私有随机存取存储器126的位置中的存储器SMBASE值(该位置是用以存储该存储器SMBASE值),并且将该存储器SMBASE值写入至非用户可存取寄存器组134的第一暂时寄存器。该load sys_mem_address,temp_reg2微指令自系统存储器读取该SMBASE字段值,并且将其写入至非用户可存取寄存器组134的第二暂时寄存器。由于第一暂时寄存器目前持有(藉由loadPRAM PRAM_address,temp_reg1微指令的优点)SMRAM的该基底系统存储器地址,而该loadsys_mem_address,temp_reg2微指令指定系统存储器中的该SMRAM状态存储区的SMBASE字段为该第一暂时寄存器中的该基底存储器地址的预设偏移量。该storePRAM temp_reg2,PRAM_address微指令自该第二暂时寄存器读取数据,并且将该数据写入至私有随机存取存储器126的位置中,其中该位置是用以存储器该SMBASE值。需注意到,除了回存(与更新)该SMBASE值的内在形式(Internal Representation),RSM微代码128的例行程序可利用该第一暂时寄存器中的该SMBASE地址,并且经由一串系统存储器加载微指令自该SMRAM状态存储区读取微处理器100的剩余状态,以回存微处理器100的状态。微处理器100的状态回存操作亦包括回存额外的storePRAM微指令至私有随机存取存储器126的用以存储于其中的其它状态。
[0075] 图10是显示本发明实施例的图1的微处理器响应接收x86架构的SMI宏指令的操作的步骤流程图,该流程由步骤1002开始。
[0076] 在步骤1002中,微处理器100接收系统管理中断,并且将控制权传送 给与SMI异常指令相关的微代码128的例行程序。接着执行步骤1004。
[0077] 在步骤1004中,该SMI异常指令操作器的微代码128的例行程序为:执一loadPRAM PRAM_address,temp-reg微指令,再执行store temp_reg,sys_mem_address微指令。该loadPRAM PRAM_address,temp_reg微指令读取私有随机存取存储器126的位置中的存储器SMBASE值,其中该位置是用以存储该存储器SMBASE值,并且将该存储器SMBASE值写入至非用户可存取寄存器组134的暂时寄存器。该store temp_reg,sys_mem_address微指令自该暂时寄存器读取该SMBASE值,并且将其写入至系统存储器的该SMRAM状态存储区中的该SMBASE字段。写入该SMBASE字段值的该系统存储器是被指定至该store temp_reg,sys_mem_address微指令而为该基底存储器地址的预设偏移量,其中该基底存储器地址是指定给该暂时寄存器。需注意到,除了存储该SMBASE值的该内在形式至该SMRAM状态存储区的该SMBASE字段,SMI微代码128的例行程序亦可利用该暂时寄存器中该SMBASE地址,并经由一串系统存储器存储微指令将微处理器100的剩余状态写入该SMRAM状态存储区,以存储微处理器100的状态。微处理器100的存储状态操作亦包括存储额外的loadPRAM微指令,以自私有随机存取存储器126加载用以存储的其它状态。
[0078] 虽然本发明实施例、标的、特色与优点已详细公开于上文中,但亦可含其它实施例。举例来说,虽然已公开私有随机存取存储器126存储VMX MMCS,在其它实施例中私有随机存取存储器126可用来存储系统虚拟机器控制器(Hypervisor)使用的其它虚拟机器架构的数据结构,且并非用以限制VMX虚拟化典范(Virtualization Paradigm)。此外,虽然本发明实施例已公开x86宏架构,其并非用以限制本发明,但亦可利用其它的宏架构来实施本发明。
[0079] 虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明,任何熟习此技术者,在不脱离本发明的精神和范围内,可作各种更动与润饰,因此本发明的保护范围当以所附的权利要求书所界定的为准。