CN101261577B - 微处理器以及在微处理器中存储数据的方法 - Google Patents

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

Info

Publication number
CN101261577B
CN101261577B CN2008100886498A CN200810088649A CN101261577B CN 101261577 B CN101261577 B CN 101261577B CN 2008100886498 A CN2008100886498 A CN 2008100886498A CN 200810088649 A CN200810088649 A CN 200810088649A CN 101261577 B CN101261577 B CN 101261577B
Authority
CN
China
Prior art keywords
microprocessor
random access
micro
access memory
order
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008100886498A
Other languages
English (en)
Other versions
CN101261577A (zh
Inventor
G·葛兰·亨利
罗德尼·E·虎克
泰瑞·派克斯
柯林·艾迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN101261577A publication Critical patent/CN101261577A/zh
Application granted granted Critical
Publication of CN101261577B publication Critical patent/CN101261577B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage

Abstract

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

Description

微处理器以及在微处理器中存储数据的方法 
技术领域
本发明涉及一种具有微代码的微处理器,更具体地涉及一种微代码的暂时变动存储。 
背景技术
微处理器包括指令集,该指令集是为该微处理器的指令集架构(Instruction Set Architecture,以下简称为ISA)的一部分,在本文可称为微处理器的宏架构(Macroarchitecture)。该指令集定义了微处理器可执行的合法指令集。程序设计师(在本文中可称为用户)利用该指令集中的指令写入程序,以被该微处理器执行。该程序设计师可为撰写应用程序的应用程序设计师,或者为撰写操作系统或可执行软件的系统程序设计师。ISA亦包括寄存器等资源,其可被该指令集中的指令存取。常用的ISA为IntelIA-32与IA-64 ISA,可参照x86架构,其包括指令集与具有一般功用寄存器的用户可存取寄存器、数据段寄存器(Segment Registers)、堆栈与基底指针寄存器...等习知的寄存器。 
许多新型的微处理器包括微架构(Microarchitecture),其无法直接以写入程序直接存取至微处理器ISA中。该微架构包括其本身支持微指令的微指令集,其与上述ISA的用户可存取指令集不同。该ISA指令集的用户可存取指令有时可参照宏架构,以分辨其与微指令集的微指令的不同。微指令较宏指令来的简单,且可较直接地控制微处理器的硬件。微处理器设计者写入微代码,其包括微架构微指令集的微指令,且在微处理器的微架构内执行。典型上,微处理器包括指令转译器,其用以转译用户程序宏指令为微指令集的一个或多个微指令,然后分派给微处理器的执行单元以执行指令。若宏指令特别复杂,则该指令转译器可呼叫由多个微指令组成的微代码中的例行程序以执行该ISA指令。当代x86架构ISA微处理器是利用精简指令集(ReducedInstruction Set Computer,简称为RISC)微架构,其包括比IA-32宏架构集明显简单的RISC型态指令集。 
因此,微架构典型上包括除了用户可存取ISA资源以外的其它资源,例如,微代码专用的额外寄存器,其是为非用户可存取寄存器。举例来说,与许多RISC架构微处理器相比,IA-32 ISA的用户可存取寄存器的数目相对来说是较少的,举例来说像是RISC型态微指令使用的非用户可存取寄存器。 
近来在微处理器的革新,ISA增加了在微架构所需的额外寄存器总量的需求,以发展新的特色。然而,很不幸地,使用在大量额外寄存器上的实际芯片量可能会被限制。此外,微代码不应使用系统存储器以作为额外存储空间,因为通常是由操作系统来配置与管理系统存储器的。因此,所需的应是提供微代码使用的额外存储空间,其与寄存器相比相对来说速度较快且仅需要较少的芯片区。 
发明内容
本发明实施例公开了一种微处理器,包括用户可存取寄存器组、随机存取存储器与微代码。该随机存取存储器位于该微处理器的非用户可存取地址空间内,其中该随机存取存储器比该用户可存取寄存器组密集(dense),且存取速度你该用户可存取寄存器组慢。该微代码包括多个该微处理器的微指令集的多个微指令。该微指令集包括第一微指令与第二微指令。该第一微指令用以将该用户可存取寄存器组的数据存储至该随机存取存储器。该第二微指令用以将该随机存取存储器的数据加载至该用户可存取寄存器组。 
本发明实施例还公开了一种在微处理器中存储数据的方法。执行第一微指令,用以将该微处理器的用户可存取寄存器组的数据存储至该微处理器的随机存取存储器,其中该随机存取存储器位于该微处理器的非用户可存取地址空间内,其中该随机存取存储器较比用户可存取寄存器组密集,且存取速度比该用户可存取寄存器组慢。执行第二微指令,用以将该随机存取存储器的数据加载至该用户可存取寄存器组,其中该第一与第二微指令是为该微处理器的微指令集的多个微指令中的两个微指令。 
附图说明
图1是显示本发明实施例的管线式微处理器的架构示意图,其包括私有随机存取存储器。 
图2是显示本发明实施例的不同系统存储器与私有随机存取存储器地址 空间的示意图。 
图3是显示本发明实施例的执行私有随机存取存储器的loadPRAM微指令的步骤流程图。 
图4是显示本发明实施例的执行私有随机存取存储器storePRAM微指令的步骤流程图。 
图5是显示本发明实施例的图1的微处理器执行VMWRITE宏指令的步骤流程图。 
图6是显示本发明实施例的图1的微处理器执行VMREAD宏指令的步骤流程图。 
图7是显示本发明实施例的图1的微处理器执行x86架构的WRMSR宏指令的步骤流程图。 
图8是显示本发明实施例的图1的微处理器执行x86架构的RDMSR宏指令的步骤流程图。 
图9是显示本发明实施例的图1的微处理器执行x86架构的RSM宏指令的步骤流程图。 
图10是显示本发明实施例的图1的微处理器响应接收x86架构的SMI宏指令的操作的步骤流程图。 
主要组件符号说明 
100~微处理器 
102~指令缓冲区 
104~指令收件器 
106~指令转译器 
108~指令分派器 
112~用户可存取寄存器组 
114~数据缓冲区 
122~加载/存储单元 
124~执行单元 
126~私有随机存取存储器 
128~微代码 
132~总线接口单元 
134~非用户可存取寄存器组 
136~处理器总线 
302、304、402、404、502、504、602、604、702、704、802、804、902、904、1002、1004~流程步骤 
具体实施方式
为了让本发明的目的、特征、及优点能更明显易懂,下文特举较佳实施例,并配合所附图式图1至图10,做详细的说明。本发明说明书提供不同的实施例来说明本发明不同实施方式的技术特征。其中,实施例中的各组件的配置是为说明所用,并非用以限制本发明。且实施例中图式标号的部分重复,是为了简化说明,并非意指不同实施例的间的关联性。 
图1是显示本发明实施例的管线式微处理器100的架构示意图,其包括私有随机存取存储器(Private Random Access Memory,PRAM)126。在实施例中,图1的微处理器100的组件(包括私有随机存取存储器126)是整合在单一半导体基板上。由于私有随机存取存储器126不可被用户代码宏指令存取,故其是为私有随机存取存储器,但其可被微处理器100经由其微代码128来存取。此外,微处理器100包括在其微指令集中的不同微指令,用以存取私有随机存取存储器126,如上所述。 
微处理器100包括指令缓冲区102,其用以缓冲来自耦接于微处理器100的系统存储器的用户程序宏指令。微处理器100亦包括指令收件器(Fetcher)104,其耦接于指令缓冲区102,用以自指令缓冲区102与系统存储器取得宏指令。微处理器100亦包括指令转译器106,其耦接于指令收件器104,用以解码取得的微处理器100的宏指令集的宏指令,并且转译该取得的宏指令为微处理器100的宏指令集的微指令。微处理器100亦包括loadPRAM与storePRAM微指令,而微指令亦包括一般存储器加载/存储微指令。 
微处理器100亦包括微代码128。微代码128包括该微处理器的微指令集的多个微指令。部分的微代码128包括微指令的例行程序(或序列),以执行宏指令或处理异常的情况。特别的是,当指令转译器106解码某些宏指令(例如,相对复杂的宏指令),其转换控制给微代码128中的适当的例行程序,而非直接产生转译所得的微指令。 
特别的是,微指令集包括loadPRAM微指令与storePRAM微指令,其格 式如图1所示。 
loadPRAM PRAM_address,register; 
storePRAM register,PRAM_address。 
loadPRAM微指令的PRAM_address操作数指定私有随机存取存储器126中的来源位置,该来源位置中的数据是加载至loadPRAM微指令的寄存器操作数指定的目的寄存器。storePRAM微指令的PRAM_address操作数指定私有随机存取存储器126中的目的位置,该目的位置中的数据是来自storePRAM微指令的寄存器操作数指定的来源寄存器。指定的寄存器可为用户可存取寄存器组112中寄存器中的一个寄存器,或者为非用户可为存取寄存器组134中寄存器中的一个寄存器,其说明如下。 
指令分派器108(其耦接于指令转译器106)分派指令转译器106或微代码128的微指令给与指令分派器108相耦接的多个功能单元的其中之一。功能单元包括加载/存储单元122,以及一个或多个执行单元124,例如,整合单元、浮点单元以及单指令多数据(Single Instruction Multiple Data,SIMD)单元。特别的是,指令分派器108分派loadPRAM与storePRAM微指令给加载/存储单元122。 
微处理器100亦包括该宏架构的用户可存取寄存器组112,其提供指令操作数给上述功能单元,并且自上述功能单元接收指令运算后的结果。微处理器100亦包括该宏架构一非用户可存取寄存器组134,其提供指令操作数给上述功能单元,并且自上述功能单元接收指令运算后的结果。非用户可存取寄存器组134仅可利用微指令来存取,且不可利用用户宏指令存取。非用户可存取寄存器组134被微代码128使用以作为暂时存储之用,并用以执行运算。非用户可存取寄存器组134可被微代码128而非私有随机存取存储器126使用在某些特定目的,其较私有随机存取存储器126需要较短的潜伏期(access latency)以满足较小的存储需求。 
微处理器100亦包括数据缓冲区114,其耦接于加载/存储单元122,用以缓冲来自系统存储器的数据。数据缓冲区114是为用户可存取的,也就是说,数据缓冲区114是设置于微处理器100的系统存储器地址空间内,其可被用户宏指令所存取。总线接口单元132耦接于数据缓冲区114。总线接口 单元132耦接于处理器总线136以存取系统存储器。总线接口单元132在处理器总线136产生交易以在微处理器100与系统存储器的间传送数据,例如,当加载或存储微指令(即,一般存储器加载或存储微指令,相对于loadPRAM或storePRAM微指令)的存储器地址在数据缓冲区114中遗失时,其需要自系统存储器提取至数据缓冲区114的遗失缓冲线,或者当缓冲线自数据缓冲区114写回至系统存储器或清除掉。 
图2是显示本发明实施例的不同系统存储器与私有随机存取存储器地址空间的示意图。私有随机存取存储器126耦接于加载/存储单元122。私有随机存取存储器126设置于微处理器100的非用户可存取私有随机存取存储器地址空间中,其与微处理器100的存储器地址空间是各自独立,如图2所示。也就是说,私有随机存取存储器126无法被用户代码宏指令存取,而仅可被微处理器100本身存取,例如经由微代码128或其它内建硬件来存取。相对的,数据缓冲区114与系统存储器设置于微处理器100的存储器地址空间,其可被用户宏指令与微代码128存取,如图2所示。加载/存储单元122根据指令分派器108的loadPRAM与storePRAM微指令,分别自私有随机存取存储器126读取且写入至私有随机存取存储器126。 
在一个实施例中,私有随机存取存储器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仅需要一个频率周期来进行存取。 
微处理器100亦包括用于侦测系统存储器加载/存储碰撞的逻辑。该逻辑转送碰撞加载/存储数据至微处理器100的适当阶段,以促进每秒速率所增加的指令。在一实施例中,微处理器100是为非依序执行的微处理器。上述逻辑亦可以适当的顺序来执行碰撞加载/存储。有利的是,该逻辑亦可用来侦测私有随机存取存储器126的加载/存储碰撞,以转送私有随机存取存储器126的碰撞数据,并且以适当的顺序来执行私有随机存取存储器126的碰撞加载/存储。然而,由于私有随机存取存储器126占用与系统存储器不同的地址空间,该逻辑并不会侦测系统存储器的加载/存储与私有随机存取存储器126的加载/存储间的碰撞。因此,有利的是,用于执行存储器加载/存储指令的微处理器100中相当显著数量的逻辑与数据路径可被微处理器100重复使用,以执行loadPRAM与storePRAM微指令。 
在一实施例中,加载/存储单元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。 
加载/存储单元122辨识出loadPRAM与storePRAM微指令的地址操作数指定位置仅存在于私有随机存取存储器126中,而非存储器空间中的地址。因此,加载/存储单元122根据私有随机存取存储器126的存取,故并未要求总线接口单元132产生处理器总线136上的交易loadPRAM与storePRAM微指令。因此,私有随机存取存储器126的地址空间是不用缓冲的。 
图3是显示本发明实施例的加载私有随机存取存储器的loadPRAM微指令的步骤流程图,该流程由步骤302开始。 
在步骤302中,加载/存储单元122接收loadPRAM微指令,并且自私有随机存取存储器126中由PRAM_address操作数指定的位置读取数据。如上文所述,私有随机存取存储器126中的该位置的地址,可根据loadPRAM微指令指定的寻址模式并藉由地址产生逻辑来产生。接着执行步骤304。 
在步骤304中,加载/存储单元122写入在步骤302中读取的数据至loadPRAM微指令寄存器操作数指定的寄存器。如上所述,该寄存器为用户可存取寄存器组112或非用户可存取寄存器组134的寄存器。 
图4是显示本发明实施例的存储私有随机存取存储器的storePRAM微指令的步骤流程图,该流程由步骤402开始。 
在步骤402中,加载/存储单元122接收storePRAM微指令,并且自storePRAM微指令寄存器操作数指定的寄存器读取数据。接着执行步骤404。 
在步骤404中,加载/存储单元122写入在步骤402中读取的数据至私有随机存取存储器126中由PRAM_address操作数指定的该位置。 
在一实施例中,微处理器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中描述。
图5是显示本发明实施例的图1的微处理器100执行一VMWRITE宏指令的步骤流程图,该流程由步骤502开始。 
在步骤502中,指令转译器106解码VMX VMWRITE宏指令,并且将控制权传送给与VMWRITE宏指令相关的微代码128的例行程序。接着执行步骤504。 
在步骤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。 
图6是显示本发明实施例的图1的微处理器100执行VMREAD宏指令的步骤流程图,该流程由步骤602开始。 
在步骤602中,指令转译器106解码VMXVMREAD宏指令,并且将控制权传送给与VMREAD宏指令相关的微代码128的例行程序。接着执行步骤604。 
在步骤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宏指令指定的系统存储器的位置中。 
图5、6分别描述与存储私有随机存取存储器126的VMCS相关的VMWRITE与VMREAD宏指令的操作,其中配置了系统存储器存储空间,且宏架构并未托管微处理器100内的存储空间,使得自私有随机存取存储器126存取VMCS的速度较自系统存储器读取的VMCS速度还快。然而,本发明实施例并非用以限制在将VMCS存储在私有随机存取存储器126中。更确切的说,私有随机存取存储器126可用来存储其它数据结构,以得到较系统存储器更快的存取速度,但宏架构并不需指定微处理器100内的存储空间。 
图7是显示本发明实施例的图1的微处理器100执行一x86架构的WRMSR宏指令的步骤流程图,该流程由步骤702开始。 
在步骤702中,指令转译器106解码指定IA32_SYSENTER_CS MSR的WRMSR宏指令,并且将控制权传送给与WRMSR宏指令相关的微代码128的例行程序。在WRMSR宏指令之前,用户程序包括一个或多个指令,该指令是用以加载具有指定IA32_SYSENTER_CS MSR值的ECX寄存器以及用以加载具有用以写入到MSR值的EDX:EAX寄存器。接着执行步骤704。 
在步骤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的实际地址。 
图8是显示本发明实施例的图1的微处理器100执行x86架构的RDMSR宏指令的步骤流程图,该流程由步骤802开始。 
在步骤802中,指令转译器106解码指定IA32_SYSENTER_CS MSR的RDMSR 宏指令,并且将控制权传送给与RDMSR宏指令相关的微代码128的例行程序。在RDMSR宏指令之前,用户程序包括一个或多个指令,该指令是用以加载具有指定IA32_SYSENTER_CS MSR值的该ECX寄存器。接着执行步骤804。 
在步骤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的实际地址。 
图7、8分别描述指定特定MSR(即IA32_SYSENTER_CS MSR)的WRMSR与RDMSR宏指令的操作,从而减少MSR存储空间使用的芯片区的存储量。然而,本发明并非用以限定说明私有随机存取存储器126中的IA32_SYSENTER_CSMSR。更确切的说,私有随机存取存储器126可用来说明其它MSR,而不需立即被微处理器100的硬件存取,但可容许与存取私有随机存取存储器126相关的潜伏期(latency)。 
在说明图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的位置给其它处理器。 
图9是显示本发明实施例的图1的微处理器100执行x86架构的RSM宏指令的步骤流程图,该流程由步骤902开始。 
在步骤902中,指令转译器106解码RSM宏指令,并且将控制权传送给与RSM宏指令相关的微代码128的例行程序。接着执行步骤904。 
在步骤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的用以存储于其中的其它状态。 
图10是显示本发明实施例的图1的微处理器响应接收x86架构的SMI宏指令的操作的步骤流程图,该流程由步骤1002开始。 
在步骤1002中,微处理器100接收系统管理中断,并且将控制权传送 给与SMI异常指令相关的微代码128的例行程序。接着执行步骤1004。 
在步骤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加载用以存储的其它状态。 
虽然本发明实施例、标的、特色与优点已详细公开于上文中,但亦可含其它实施例。举例来说,虽然已公开私有随机存取存储器126存储VMX MMCS,在其它实施例中私有随机存取存储器126可用来存储系统虚拟机器控制器(Hypervisor)使用的其它虚拟机器架构的数据结构,且并非用以限制VMX虚拟化典范(Virtualization Paradigm)。此外,虽然本发明实施例已公开x86宏架构,其并非用以限制本发明,但亦可利用其它的宏架构来实施本发明。 
虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明,任何熟习此技术者,在不脱离本发明的精神和范围内,可作各种更动与润饰,因此本发明的保护范围当以所附的权利要求书所界定的为准。 

Claims (19)

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所述的在微处理器中存储数据的方法,其还包括下列步骤:
执行该第一或第二微指令以将该随机存取存储器作为暂时存储区,以存储微代码的计算结果。
CN2008100886498A 2007-04-10 2008-04-10 微处理器以及在微处理器中存储数据的方法 Active CN101261577B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US91098207P 2007-04-10 2007-04-10
US60/910,982 2007-04-10
US12/034,503 US7827390B2 (en) 2007-04-10 2008-02-20 Microprocessor with private microcode RAM
US12/034,503 2008-02-20

Publications (2)

Publication Number Publication Date
CN101261577A CN101261577A (zh) 2008-09-10
CN101261577B true CN101261577B (zh) 2011-03-02

Family

ID=39854825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100886498A Active CN101261577B (zh) 2007-04-10 2008-04-10 微处理器以及在微处理器中存储数据的方法

Country Status (3)

Country Link
US (1) US7827390B2 (zh)
CN (1) CN101261577B (zh)
TW (1) TWI407366B (zh)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734873B2 (en) * 2007-05-29 2010-06-08 Advanced Micro Devices, Inc. Caching of microcode emulation memory
US8234543B2 (en) * 2009-03-06 2012-07-31 Via Technologies, Inc. Detection and correction of fuse re-growth in a microprocessor
US8281223B2 (en) * 2009-08-07 2012-10-02 Via Technologies, Inc. Detection of fuse re-growth in a microprocessor
US9952875B2 (en) * 2009-08-07 2018-04-24 Via Technologies, Inc. Microprocessor with ALU integrated into store unit
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
US8639919B2 (en) * 2011-01-18 2014-01-28 Via Technologies, Inc. Tracer configuration and enablement by reset microcode
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
EP2508984B1 (en) * 2011-04-07 2018-08-01 VIA Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9146742B2 (en) * 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9141389B2 (en) * 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US20120260073A1 (en) * 2011-04-07 2012-10-11 Via Technologies, Inc. Emulation of execution mode banked registers
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9176733B2 (en) * 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
EP3179363B1 (en) * 2012-08-31 2019-04-24 VIA Technologies, Inc. Microprocessor that enables arm isa program to access general purpose registers written by x86 isa program
EP2704001B1 (en) * 2012-08-31 2016-10-19 VIA Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9483263B2 (en) * 2013-03-26 2016-11-01 Via Technologies, Inc. Uncore microcode ROM
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US10146547B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US9804845B2 (en) 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
US10114794B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
WO2016097792A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor
WO2016097803A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
WO2016097811A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on fuse array access in out-of-order processor
US10146546B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Load replay precluding mechanism
JP6286066B2 (ja) 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム
US10089112B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
US10146540B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
WO2016097793A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on off-die control element access in out-of-order processor
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
WO2016097796A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude i/o-dependent load replays in out-of-order processor
EP3055769B1 (en) 2014-12-14 2018-10-31 VIA Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on page walks in out-of-order processor
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
JP6286065B2 (ja) 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法
US10108428B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
WO2016097815A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor
US10108429B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
US10175984B2 (en) 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US9998284B2 (en) 2015-09-24 2018-06-12 Intel Corporation Methods and apparatus to provide isolated execution environments
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10884751B2 (en) 2018-07-13 2021-01-05 Advanced Micro Devices, Inc. Method and apparatus for virtualizing the micro-op cache

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5642491A (en) * 1994-09-21 1997-06-24 International Business Machines Corporation Method for expanding addressable memory range in real-mode processing to facilitate loading of large programs into high memory
WO1997008618A1 (en) * 1995-08-29 1997-03-06 International Business Machines Corporation Data processing apparatus and method for correcting faulty microcode
US5829012A (en) * 1996-04-19 1998-10-27 Unisys Corporation System for programmably providing modified read signals within a ROM-based memory
US6081888A (en) * 1997-08-21 2000-06-27 Advanced Micro Devices Inc. Adaptive microprocessor with dynamically reconfigurable microcode responsive to external signals to initiate microcode reloading
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6014757A (en) * 1997-12-19 2000-01-11 Bull Hn Information Systems Inc. Fast domain switch and error recovery in a secure CPU architecture
US6751737B1 (en) * 1999-10-07 2004-06-15 Advanced Micro Devices Multiple protected mode execution environments using multiple register sets and meta-protected instructions
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
US7219112B2 (en) * 2001-11-20 2007-05-15 Ip-First, Llc Microprocessor with instruction translator for translating an instruction for storing random data bytes
US7937525B2 (en) * 2004-06-25 2011-05-03 Intel Corporation Method and apparatus for decoding a virtual machine control structure identification
US20060136608A1 (en) * 2004-12-22 2006-06-22 Gilbert Jeffrey D System and method for control registers accessed via private operations

Also Published As

Publication number Publication date
US7827390B2 (en) 2010-11-02
TWI407366B (zh) 2013-09-01
TW200841233A (en) 2008-10-16
US20080256336A1 (en) 2008-10-16
CN101261577A (zh) 2008-09-10

Similar Documents

Publication Publication Date Title
CN101261577B (zh) 微处理器以及在微处理器中存储数据的方法
US10318407B2 (en) Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
US8099541B2 (en) Minivisor entry point in virtual machine monitor address space
US7424599B2 (en) Apparatus, method, and instruction for software management of multiple computational contexts in a multithreaded microprocessor
EP2831721B1 (en) Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
JP3546678B2 (ja) マルチos構成方法
JP5945292B2 (ja) 異種システムをブートし、コアの対称的なビューを表示する方法
EP1936500A2 (en) Structured exception handling for application-managed thread units
CN104951296A (zh) 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块
JP2013524386A (ja) ランスペース方法、システムおよび装置
KR20050085699A (ko) 가상 기계 제어 방법 및 시스템
CN102981808A (zh) 用于持续性用户级线程的设备、系统和方法
JP2007183952A (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
Suzuki et al. Gpuvm: Gpu virtualization at the hypervisor
CN113196234A (zh) 使用硬件分页提示的进程空间标识符虚拟化
CN117130729A (zh) 孔径访问处理器、方法、系统和指令
TW201005649A (en) Operating system fast run command
Suzuki Making gpus first-class citizen computing resources in multitenant cloud environments
CN109416640B (zh) 孔径访问处理器、方法、系统和指令
Shriver et al. An implementation scheme for a virtual machine monitor to be realized on user-microprogrammable minicomputers
Goddard Division of labor in embedded systems
Compton et al. Operating System Support for Reconfigurable Computing
Doran Migration of an operating system to an object-oriented paradigm

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