CN101329622B - 微处理器以及宏指令执行方法 - Google Patents

微处理器以及宏指令执行方法 Download PDF

Info

Publication number
CN101329622B
CN101329622B CN2008101461211A CN200810146121A CN101329622B CN 101329622 B CN101329622 B CN 101329622B CN 2008101461211 A CN2008101461211 A CN 2008101461211A CN 200810146121 A CN200810146121 A CN 200810146121A CN 101329622 B CN101329622 B CN 101329622B
Authority
CN
China
Prior art keywords
mentioned
micro
order
microprocessor
instruction
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
CN2008101461211A
Other languages
English (en)
Other versions
CN101329622A (zh
Inventor
吉拉德·M·卡尔
柯林·艾迪
罗德尼·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 CN101329622A publication Critical patent/CN101329622A/zh
Application granted granted Critical
Publication of CN101329622B publication Critical patent/CN101329622B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags

Abstract

微处理器包括指令编译器,指令编译器将微处理器的宏架构中的宏指令集的一宏指令转换成三个微指令以对存储器操作数执行读取/修改/写入运算。第一微指令指示微处理器从存储器位置加载存储器操作数至微处理器内,以及计算存储器位置的目的地址。第二微指令指示微处理器对所加载的存储器操作数执行算术或逻辑运算以产生结果值。第三微指令指示微处理器将结果值写入存储器位置,存储器位置的目的地址是由第一微指令所计算。第一执行单元接收第一微指令以对应地将存储器操作数从存储器位置加载至微处理器内。另外不同的第二执行单元亦接收第一微指令,并且对应地计算存储器位置的目的地址。

Description

微处理器以及宏指令执行方法
技术领域
本发明是有关于微处理器领域,特别是有关于一种用来减少用以执行特定的常见宏架构指令的微架构指令的数目的系统和方法。
背景技术
计算机中的数据处理运算通常于微处理器中执行。一般而言,用来监控和执行各种数据处理任务的微处理器包括了用来处理指令和数据的硬件元件。指令和数据通常储存于计算机的存储器子系统,其可包括只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、硬盘装置或其它装置。存储器子系统一般与微处理器物理分离,即使复制的指令和数据于程序执行期间暂时存放于微处理器之内。
指令是指一群用来告知微处理器执行特定运算的位,指令又包括了运算码的部分,运算码是指一群用来记载一个要被微处理器所执行的运算的位。举例来说,运算码中可记载诸如加法、减法、分支程序的执行或储存一个值于存储器等等之类的运算。指令的其余部分通常用来提供运算的数据来源,又称为操作数。操作数可记载于指令本身内、微处理器的暂存器内或存储器位置内。
一个微处理器的架构包括微处理器的指令集以及可供指令集的各种指令所使用的资源集合,例如暂存器和存储器地址空间。许多现代的微处理器同时具有宏架构和微架构,特别是许多用来执行由英特尔架构(又称为IA-32或x86架构)所指定的指令的微处理器。宏架构是使用者可见的架构,例如程序设计者可使用的指令集和资源。宏指令是宏架构指令集中的指令,一些早期较流行的处理器的宏架构(例如x86架构)包括了非常复杂的指令。相较之下,微架构包括了微指令集以及可被微指令集的各种指令所使用的资源集合。微指令集所包括的指令一般比宏指令集简单得多,且通常为非使用者可见,即使一些微处理器可将微指令集和宏指令集设定为使用者可见。微处理器的执行单元实际上是执行微指令而非宏指令。
微处理器包括了指令编译器,用以将每一个宏指令转换成一或多个微指令,其由执行单元根据宏指令的运算码和操作数所执行。指令编译器的宽度(亦即编译器每频率周期可产生的微指令的数目)是具有利益平衡考虑的设计抉择。举例来说,当指令编译器愈窄的时候,其本身的尺寸可变得较小并且较不那样地复杂,这在成本、硅芯片空间、速度和散热等方面的考虑是有帮助的。另一方面,当指令编译器愈宽的时候,其相对更有能力提供足够的微指令比率使执行单元维持运作,这在超纯量、加扰执行的微处理器设计中是一个重要的考虑。
许多具有分离的宏架构和微架构的现代微处理器除了指令编译器之外也包括了微指令只读存储器(microinstruction ROM)。微指令只读存储器一般用以处理更复杂且不常用的宏指令,其需要相对多数的微指令来执行相关的宏指令所指定的运算。微指令只读存储器包括了与个别宏指令相关的微指令的序列。当指令编译器处理到某些宏指令时,其将控制权交给微指令只读存储器中的一个微指令序列,而非纯粹地产生微指令(或是除了产生微指令之外),而当微指令序列执行完成之后,其将控制权交回给指令编译器。然而,相对于指令编译器纯粹产生微指令以执行相关的宏指令运算的方式而言,把控制权交给微码只读存储器序列可能会对执行效能产生影响。举例来说,由于撷取单元无法提供足够的微指令来维持执行单元的运作,因此可于执行单元管线中采用泡沫排序法(bubble)的机制。另一方面,指令编译器的宽度限制了其每频率周期可产生的微指令数目,因此微指令只读存储器可更符合经济效益地扩展来处理某些所需的微指令比指令编译器于给定频率周期内所能产生的微指令还多的宏指令。
宏指令需要相对多数的微指令的例子就是一个用来对存储器中的操作数执行读取/修改/写入等运算的宏指令。用以对存储器中的操作数执行读取/修改/写入等运算的宏指令称为LdAluSt宏指令,因为它们包括了一个用来从存储器中取得操作数至微处理器内的存储器加载运算、一个用来修改存储器操作数的算术逻辑单元运算、以及一个用来将修改后的结果值写回原来的存储器位置的存储器储存运算。每一个加载、算术逻辑单元和储存运算可能需要一或多个微指令以执行个别的运算。一个LdAluSt宏指令的例子就是x86的ADD[mem],EXA指令,此指令从[mem]地址所记载的存储器位置加载操作数至微处理器、将存储器操作数与EAX暂存器中的值相加,并且储存加法运算后的结果值于[mem]地址所记载的存储器位置中。
LdAluSt宏指令的每一个加载、算术逻辑单元和储存运算可能需要一或多个微指令执行个别的运算。如果执行LdAluSt宏指令所必须产生的微指令的数目比指令编译器的宽度还大,则必须使用微指令只读存储器,否则指令编译器需要于多重频率周期内产生这些微指令,这将可能大大地增加指令编译器的复杂度。然而,由于LdAluSt宏指令常常于很多程序中使用,因此有需要避免跳至微指令只读存储器序列来执行所有或一部分的LdAluSt宏指令。
发明内容
本发明提供一种超纯量加扰执行微处理器,其于其微指令集中包括了新的合并的加载数据/储存地址微指令。上述加载数据/储存地址微指令执行了结合的运算,上述结合的运算原本须由不同的加载数据和储存地址微指令所执行。不若传统的微指令发送到单一执行单元的方式,加载数据/储存地址微指令是发送到两个执行单元,换言之,分别是加载数据单元和储存地址单元。虽然每一个加载数据单元和储存地址单元执行了加载数据/储存地址微指令,但加载数据/储存地址微指令于微处理器的重新序列缓冲器内占据单一位置。执行单元皆必须显示它们已经完成加载数据/储存地址微指令的执行后,重新序列缓冲器才可撤回加载数据/储存地址微指令。
本发明的发明人理解到加载数据微指令的操作数是储存地址微指令的一个子集合,并可因此将这两个微指令合并入单一的加载数据/储存地址微指令内。这个做法是具有优势的,因为其允许指令编译器将LdAluSt宏指令转换成三个微指令,而非四个微指令。根据微处理器的一实施例所述,这使得指令编译器可为三个指令宽的编译器,比起四个指令宽的编译器来说,其具有更小、更快速以及较低消耗功率的潜在优势。此外,其不需借着将控制权转移给微码只读存储器来处理经常使用到的LdAluSt宏指令。在另一实施例中,指令编译器大于三个指令的宽度,然而,单一加载数据/储存地址微指允许指令编译器于同一频率周期内转换LdAluSt宏指令和另一宏指令。
在一方面,本发明提供一种微处理器,于其宏架构中具有宏指令集,宏指令集包括宏指令,宏指令指示微处理器对存储器中的操作数执行读取/修改/写入运算。指令编译器将宏指令转换成三个微指令,三个微指令用以对存储器操作数执行读取/修改/写入运算。第一微指令指示微处理器从存储器位置加载存储器操作数至微处理器内,以及计算存储器位置的目的地址。第二微指令指示微处理器对所加载的存储器操作数执行算术或逻辑运算以产生结果值。第三微指令指示微处理器将结果值写入存储器位置,存储器位置的目的地址是由第一微指令所计算。第一执行单元接收第一微指令以相应地将存储器操作数从存储器位置加载至微处理器内。第二执行单元接收第一微指令以及计算存储器位置的目的地址,第一和第二执行单元是上述微处理器内不同的执行单元。
另一方面,本发明提供一种宏指令执行方法,适用于执行微处理器内的宏指令。宏指令指示微处理器对存储器中的操作数执行读取/修改/写入运算。第一微指令指示微处理器从存储器位置加载存储器操作数至微处理器内,以及计算存储器位置的目的地址。第二微指令指示微处理器修改所加载的存储器操作数以产生结果值。第三微指令指示微处理器将结果值写入存储器位置,存储器位置的目的地址是由第一微指令所计算。微处理器的第一和第二执行单元皆接收上述第一微指令。对应第一微指令的接收,微处理器的第一执行单元将存储器操作数从存储器位置加载微处理器。对应第一微指令的接收,第二执行单元计算存储器位置的目的地址。第一和第二执行单元是上述微处理器内不同的执行单元。
附图说明
通过以下的图示可更了解本发明所揭露的所有实施例的各个观点。同一个标号于全文代表同一个元件。
图1显示根据本发明的微处理器100的方块图;
图2显示根据本发明图1的微处理器100的执行单元124的方块图;
图3显示根据本发明所述的加载数据/储存地址微指令304的详细示意图;
图4显示根据本发明图1的重新序列缓冲器128内条目404的字段示意图;
图5显示根据本发明图1对应于LdAluSt宏指令104所产生的微指令114的方块图,包括了图3的加载数据/储存地址微指令304;以及
图6A和图6B显示根据本发明图1的微处理器100执行图5的LdAluSt宏指令104的操作流程图。
具体实施方式
图1显示根据本发明的微处理器100的方块图。微处理器100包括指令编译器108、耦接至指令编译器108的微指令只读存储器112、耦接至指令编译器108的暂存器配置表116、耦接至暂存器配置表116的执行单元124、耦接至暂存器配置表116和执行单元124的重新序列缓冲器128,以及耦接至暂存器配置表116和执行单元124的存储器子系统132。存储器子系统132包括高速缓存138,用以快取此系统存储器的数据。在一实施例中,高速缓存138执行了读取快取和写入快取。高速缓存138可包括分离的指令与数据快取或单一统一存储器,或是两者。高速缓存138可包括存储器的等级结构,例如一或多个第一级快取(L1 cache)和一第二级快取(L2 cache)。存储器子系统132也包括存储缓冲器134,用来缓冲送至存储器的数据,其可包括微处理器100的高速缓存,以及用来缓冲从存储器所接收的数据的加载缓冲器136。微处理器100是超纯量执行处理器,因为其有能力于每频率周期发出多重微指令给执行单元124。此外,微处理器100是加扰执行处理器,因为执行单元124可以用不同于它们所对应的宏指令的程序顺序的一个顺序来单独或一起地执行它们个别的微指令,不论个别或整体。在一实施例中,微处理器100具有x86宏架构,也就是说其支持IA-32指令集且包括了IA-32使用者可见的暂存器集合。
指令编译器108从指令快取(图未显示)接收宏指令104,并且对应地转换每一个宏指令104为一或多个共同地执行宏指令104所指定的运算的微指令114。在一实施例中,指令编译器108的宽度为三。换言之,指令编译器108每频率周期可产生多达三个的微指令114。根据宏指令104的调配,指令编译器108可于一频率周期内由一、二或三个宏指令104产生三个微指令114。也就是说,如果每下三个要编译的宏指令104只需要单一的微指令114,那么所有三个宏指令104可于单一频率周期内编译。另一种方式中,如果下两个宏指令104中的其中一个需要两个微指令114而另一个需要一个微指令114,那么这两个宏指令104可于单一频率周期内编译。另一种方式中,如果下一个要编译的宏指令104需要三个微指令114,那么这个宏指令104可于单一频率周期内编译。另一种方式中,如果下一个要编译的宏指令104需要超过三个的微指令114,则转移控制权给微指令只读存储器112中的一个微指令114序列以提供超过指令编译器108的能力的额外微指令114。有利的是,本发明的指令编译器108将LdAluSt宏指令104转换成三个微指令114,其避免将控制权转换给微指令只读存储器112中的微指令114序列,因而潜在地提供了更佳的执行效能。更具优势的是,微处理器100的微指令集包括了一个新的加载数据/储存地址微指令304(于图3说明),其为指令编译器108转换LdAluSt宏指令104后所产生的三个微指令114中的其中一个。加载数据/储存地址微指令304具有独特的特性,因为它是传送到两个不同的执行单元124,而非如同传统的微指令114只传送到一个执行单元124。加载数据/储存地址微指令304的产生、运作和撤回将于以下详细说明。
在详细描述图1的微处理器100以及其如何根据本发明所述的实施例处理LdAluSt宏指令之前,将先简单说明微处理器100可以用一个不同的方式处理LdAluSt宏指令,因此读者可更彻底了解本发明的优点。
微处理器100的微指令集也包括加载数据微指令、各种的算术逻辑单元微指令(例如图5的算术逻辑单元微指令508)、储存地址微指令以及储存数据微指令(例如图5的储存数据微指令516)。加载数据微指令指示微处理器100从加载数据微指令的操作数所计算出的加载存储器地址中,将数据(例如存储器操作数)加载至微处理器100的目的暂存器。算术逻辑单元微指令指示微处理器100对微处理器100的暂存器中一或多个的操作数执行算术或逻辑运算以产生结果值,其储存于微处理器100的一个暂存器中。储存地址微指令指示微处理器100从储存地址微指令的操作数计算出储存存储器地址,并且将计算出的储存存储器地址写入之前分配给储存地址微指令的一个存储缓冲器。储存数据微指令指示微处理器100将数据从微处理器100的暂存器写入存储缓冲器,例如配置给储存地址微指令的存储缓冲器,因此微处理器100的存储器子系统可接着将数据写入存储器中。微处理器100的指令编译器108可将一LdAluSt宏指令104转换成四个不同的微指令114(上述的加载数据、算术逻辑单元、储存地址及储存数据微指令),其将分别由四个不同的执行单元124(图2的加载数据单元220、简单整数单元212、储存地址单元224以及储存数据单元228)所执行。然而,对三个微指令宽度的指令编译器108的情况来说,这不是需要四个微指令宽度的指令编译器108就是必须转换到微码只读存储器112中的微码序列。如本发明所述,新的加载数据/储存地址微指令304容许指令编译器108为三个微指令宽度的编译器。亦即本发明的加载数据/储存地址微指令304可以于同一个LdAluSt宏指令周期内编译第二个LdAluSt宏指令104,如果第二个LdAluSt宏指令104只需要单一个微指令114的话。
具有优势的是,加载数据/储存地址微指令304将个别的加载数据和储存地址微指令114结合成单一的微指令114。这两个微指令是可结合在一起,因为储存地址微指令114包括了与加载数据微指令114相同的操作数,其用来计算存储器操作数的相同存储器地址。微处理器100将本发明的加载数据/储存地址微指令304同时发送给加载数据单元220和储存地址单元224。宏指令通常取得存储器操作数、对其执行运算,以及将结果储存回操作数原本的存储器位置。新的加载数据/储存地址微指令114对于LdAluSt宏指令这方面是占优势的,也就是说,来源和目的的存储器地址是相同的。
因为加载数据/储存地址微指令304是发送到两个不同的执行单元,因此在两个执行单元皆完成执行后,才可将其从重新序列缓冲器128中撤回。因此,在每一个重新序列缓冲器128的条目404(图4)中加入一个旗标408,以提供加载数据/储存地址微指令304是否占据重新序列缓冲器的条目(Entry)404的指示。此外,加入旗标412和416(图4)以显示加载数据单元220和储存地址单元224是否皆个别完成所执行的工作。如此一来,在两个执行单元皆处理完加载数据/储存地址微指令304,并且设定分配给加载数据/储存地址微指令304的重新序列缓冲器的条目中的个别旗标412和416之前,加载数据/储存地址微指令304都不会被撤回。
再次参考图1,暂存器配置表116从指令编译器108和微指令只读存储器112接收微指令114,并且确认微指令114间的依附关系。因为微处理器100是加扰处理器,因此执行单元124用暂存器配置表116所产生的依附关系信息来确认何时微指令114的所有来源操作数皆可取得,因而执行单元124可执行微指令114。暂存器配置表116也分配重新序列缓冲器128中下个可用的条目404给每一个微指令114。一旦暂存器配置表116计算了依附关系并且分配重新序列缓冲器的条目404后,暂存器配置表116发送微指令114给用来执行特定类型的微指令114的适当执行单元124。虽然执行单元124以不同于宏指令的程序顺序的加扰方式执行微指令114,但重新序列缓冲器128是以程序顺序撤回微指令114和其相关的宏指令104。此外,指令编译器108是以程序顺序转换宏指令104,且以程序顺序产生相关的微指令114。另外,暂存器配置表116是以程序顺序分配重新序列缓冲器128中的条目404。
重新序列缓冲器128是一个以程序顺序从暂存器配置表116接收微指令114的环状先进先出缓冲器。在一实施例中,重新序列缓冲器128包括48个条目404,每一个重新序列缓冲器的条目404具有索引,或标签420(图4)。标签420用以于重新序列缓冲器的条目404中辨识微指令114,当执行单元124完成微指令114的执行时,执行单元124将所执行的微指令114的标签420传送给重新序列缓冲器128。然后重新序列缓冲器128更新与所执行的微指令114相关的条目404中的旗标412和416以显示微指令114已准备被撤回。每一个重新序列缓冲器128的条目404中包括了加载数据/储存地址旗标408(显示于图4中),用以显示重新序列缓冲器128的条目404中的微指令114是否为加载数据/储存地址微指令304。在一实施例中,每一个重新序列缓冲器128的条目404包括加载数据执行完成旗标412以及储存地址执行完成旗标416(显示于图4中),其由个别的执行单元124于完成它们个别部分的加载数据/储存地址微指令304后所设定。
执行单元124执行个别的微指令114,然后发送执行完成的信号给重新序列缓冲器128。当最早的微指令114的完成旗标显示其已执行完成后,重新序列缓冲器128将以程序的顺序撤回微指令114。以加载数据/储存地址微指令304的例子来说,重新序列缓冲器128等待加载数据执行完成旗标412和储存地址执行完成旗标416(显示于图4中)两者皆显示执行完成的状态,如以下的详细说明。在一实施例中,重新序列缓冲器128每一频率周期可以撤回三个之多的微指令。每一执行单元124包括了指令队列,又称为保留站(reservation station),用以从暂存器配置表116和重新序列缓冲器128接收要执行的微指令114。在每一频率周期中,每一个执行单元124可从其个别的保留站接收一个微指令114。只有那些来源操作数为备妥状态的微指令114才可从保留站发送到执行单元124。
当暂存器配置表116于给定频率周期输出微指令114于其输出总线上时,每一执行单元124会监控这些微指令114以检测这些微指令114中是否有任何的微指令是要被个别的执行单元124所执行。如果有微指令要被执行单元124所执行,且执行单元124的保留站中有一个空的位置(entry),则执行单元124将微指令114加载至保留站中该空的缓冲位置内。如果执行单元124没有空的保留站位置,则重新序列缓冲器128于随后输出微指令114,一直到其被执行单元124接收为止。以加载数据/储存地址微指令304的情况来说,两个加载数据单元220和储存地址单元224(图2)皆把加载数据/储存地址微指令304接收入它们各自的保留站中以便于稍后执行。
另外,当暂存器配置表116于给定频率周期输出微指令114于其输出总线上时,存储器子系统132监控微指令114以检测微指令114中是否有任何的微指令为加载数据/储存地址微指令304或加载数据微指令。如果有的话,存储器子系统132分配加载缓冲器136给加载数据/储存地址微指令304或加载数据微指令。存储器子系统132将暂存器配置表116所输出的加载数据/储存地址微指令304或加载数据微指令其相关的重新序列缓冲器128的标签420做存盘,并且储存所分配的载入缓冲器136的辨识指针于加载数据/储存地址微指令304或加载数据微指令其相关的重新序列缓冲器的条目404内。如上所述,暂存器配置表116以程序顺序输出微指令114,且存储器子系统132也以程序顺序配置加载缓冲器136。同样地,当暂存器配置表116于给定频率周期输出微指令114于其输出总线上时,存储器子系统132监控微指令114以检测微指令114中是否有任何的微指令为加载数据/储存地址微指令304或储存地址微指令。如果有的话,存储器子系统132分配存储缓冲器134给加载数据/储存地址微指令304或储存地址微指令。存储器子系统132将暂存器配置表116所输出的加载数据/储存地址微指令304或储存地址微指令其相关的重新序列缓冲器128的标签420做存盘,并且储存所分配的存储缓冲器134的辨识指针于加载数据/储存地址微指令304或储存地址微指令其相关的重新序列缓冲器的条目404内。如上所述,暂存器配置表116以程序顺序输出微指令114,且存储器子系统132也以程序顺序配置存储缓冲器134。
图2显示根据本发明图1的微处理器100的执行单元124的方块图。执行单元124平行地执行微指令114,并且相互间是独立的。
图2的实施例包括七个个别的执行单元124,标号204至228。第一执行单元标号为媒体A 204,用以执行浮点微指令114。第二执行单元标号为媒体B 208,用以执行乘法微指令114。第三执行单元标号为SINT(Simple Integer,简单整数)212,用以执行专门处理整数的算术或逻辑运算的整数算术逻辑单元微指令114,例如指令编译器108所产生的对应于LdAluSt宏指令104的算术逻辑单元微指令508(图5)。第四执行单元标号MOV/BR(Move/Branch,移动/分支)216,用以执行移动或分支微指令,以及简单整数单元212亦执行的简单算术逻辑单元运算。第五执行单元标号LD(Load Data,加载数据)220,针对用来执行存储器加载运算的微指令114,用以将来源操作数从存储器撷取至微处理器100的暂存器内,例如加载数据/储存地址微指令304(图3)。为了要由存储器撷取来源操作数,加载数据单元220为那些用以执行存储器加载运算的微指令114计算来源存储器地址,例如加载数据/储存地址微指令304。在一实施例中,加载数据单元220是唯一为那些用以执行存储器加载(或读取)运算的微指令114计算来源存储器地址的执行单元124。第六执行单元标号STA(Store Address,储存地址)224,用以为那些用来执行存储器储存运算的微指令114计算目的存储器地址,例如加载数据/储存地址微指令304(图3)。在一实施例中,储存地址单元224是唯一为那些用以执行存储器储存(或写入)运算的微指令114计算目的存储器地址的执行单元124。储存地址单元224也将所计算的目的存储器地址写入之前分配给用以执行存储器储存运算的微指令114的存储缓冲器134内,例如加载数据/储存地址微指令304。第七执行单元标号STD(Store Data,储存数据)228,针对用来执行存储器储存运算的微指令114,用以将微指令114的结果值从暂存器储存到储存地址单元224所记载的存储器中的一个地址,例如指令编译器108所产生的对应于LdAluSt宏指令104的储存数据微指令516(图5)。虽然图2中显示了七个执行单元,但其它实施例也可根据设计的需求和限制来增加或减少执行单元124的数量。
图3显示根据本发明所述的加载数据/储存地址微指令304的详细示意图。加载数据/储存地址微指令304包括五个字段:运算码308、来源A 312、来源B 316、目的320和撤回324。运算码308的字段值特别用来于微处理器100的微架构指令集内的微指令当中辨识出加载数据/储存地址微指令304。每个来源操作数A 312和来源操作数B 316的字段皆记载了个别的暂存器,例如结构一般用途暂存器或临时暂存器,其内的值为加载数据单元220和储存地址单元224所用来计算它们个别的加载数据存储器地址和储存数据存储器地址。目的320的字段记载了一个暂存器,将用来接收由加载数据单元220所计算的加载数据存储器地址所记载的存储器位置内的来源操作数。撤回324的字段包括一个常数,该常数加到来源操作数A 312所记载的暂存器中所储存的值、来源操作数B 316所记载的暂存器中所储存的值,以及区段暂存器(在x86的实施例中,区段暂存器DS/CS/ES/SS中的一者)中所储存的值,以得到加载数据单元220和储存地址单元224所计算的存储器地址。
本发明的发明人观察到加载数据单元220和储存地址单元224是使用相同的操作数字段计算它们个别的存储器地址。具有优势的是,发明人将个别的加载数据微指令114和储存地址微指令114的功能结合成本发明所述的加载数据/储存地址微指令304,其是具有不同的运算码308值。目的320的字段是未被储存地址单元224所使用。
图4显示根据本发明图1的重新序列缓冲器128内条目404的字段示意图。每一个重新序列缓冲器的条目包括了以下的字段:微指令114、加载数据/储存地址旗标408、加载数据执行完成旗标412、储存地址执行完成旗标416以及标签420。每一个重新序列缓冲器的条目404亦包括其它未显示的字段。在一实施例中,加载数据执行完成旗标412为通用的单一指令完成旗标,其用以为除了加载数据/储存地址微指令304外的所有的微指令114显示该微指令执行完成的消息。如果暂存器配置表116将加载数据/储存地址微指令304填入重新序列缓冲器的条目404中,它将会设定加载数据/储存地址旗标408,用以表示必须有两个执行单元124执行加载数据/储存地址微指令304。特别地说,加载数据单元220和储存地址单元224在可撤销加载数据/储存地址微指令304之前必须先发出执行完成的信号。加载数据单元220设定加载数据执行完成旗标412来告知重新序列缓冲器128其已经完成加载数据/储存地址微指令304的执行,而储存地址单元224设定储存地址执行完成旗标416来告知重新序列缓冲器128其已经完成加载数据/储存地址微指令304的执行。重新序列缓冲器条目404中的标签420是条目404于重新序列缓冲器128内的索引,并且为微处理器100的各种电路用来辨识微指令114。
图5显示根据本发明图1对应于LdAluSt宏指令104所产生的微指令114的方块图,包括了图3的加载数据/储存地址微指令304。图5包括了图1的指令编译器108、暂存器配置表116和重新序列缓冲器128。图5也包括了图2的加载数据单元220、储存地址单元224、简单整数单元212和储存数据单元228。指令编译器108接收LdAluSt宏指令104并且于单一频率周期内以如下的顺序产生三个微指令:加载数据/储存地址微指令304、算术逻辑单元微指令508以及储存数据微指令516。这三个指令执行和LdAluSt宏指令104有关的所有运算。加载数据单元220产生加载数据执行完成信号524、储存地址单元224产生储存地址执行完成信号528、简单整数单元212产生算术逻辑单元执行完成信号520、储存数据单元228产生储存数据执行完成信号532,以下将于图6A和图6B中做更详细的解释。图5的重新序列缓冲器128说明了图4中三个不同的条目404。在图5的范例中,暂存器配置表116将重新序列缓冲器的条目404以7的标签(或索引)分配给加载数据/储存地址微指令304、以8的标签分配给算术逻辑单元微指令508,以及以9的标签分配给储存数据微指令516。现在,将以图6A和6B的流程图来详细说明图5。
图6A和图6B显示根据本发明图1的微处理器100执行图5的LdAluSt宏指令104的操作流程图。流程起始于方块604。
在方块604中,指令编译器108以如下的形式接收LdAluSt宏指令104:
[Mem]←[Mem][整数算术逻辑单元运算][算术逻辑单元来源]。举例来说,LdAluSt宏指令104可以是以上讨论的x86ADD[Mem],EAX指令。[Mem]是根据宏架构的其中一种寻址模式所计算出来的存储器地址,举例来说,这在x86架构中包括由单一暂存器、常数或暂存器和常数的结合而产生一个地址。[算术逻辑单元运算]是指由算术逻辑单元(例如图2中的简单整数单元212或移动/分支单元216)所执行的算术或逻辑的运算,例如加法、减法、布尔逻辑运算、比较、移位、旋转(rotate)、移动、位扫描等等。[算术逻辑单元来源]由结构暂存器所提供,或者也可以是常数。必须注意的是,存储器操作数同时皆为来源操作数和目的操作数,因此LdAluSt宏指令104的目的存储器地址和来源存储器地址皆相同。结果,用来计算加载地址的微指令114的来源操作数将与用来计算储存地址的微指令114的来源操作数相同。流程进行至方块608。
在方块608中,指令编译器108于单一频率周期以如下的顺序产生对应于LdAluSt宏指令104的三个微指令:图3的加载数据/储存地址微指令304、图5的算术逻辑单元微指令508以及储存数据微指令516。这三个微指令304/508/516执行了LdAluSt宏指令104所需执行的所有运算。流程进行至方块612。
在方块612中,暂存器配置表116由指令编译器108接收三个微指令304/508/516,并且计算它们之间的依附关系,以及它们与(或)其它微指令之间的依附关系,上述其它微指令是属于宏指令串流内其它宏指令所产生的微指令串流内的微指令。算术逻辑单元微指令508是依附至加载数据/储存地址微指令304的结果值之上,因为算术逻辑单元微指令508的其中一个来源操作数是由加载数据/储存地址微指令304所加载的存储器操作数。算术逻辑单元微指令508也可依附至用来提供其它来源操作数的另一个微指令114的结果值之上,例如以上讨论的x86指令ADD[mem],EAX例子中为EAX暂存器的值。储存数据微指令516依附至算术逻辑单元微指令508的结果值之上,因为算术逻辑单元微指令508的结果值为储存数据微指令516将要写入存储缓冲器134以便随后储存到存储器(例如系统存储器或快取138)的数据。在加载数据/储存地址微指令304将储存地址写入存储缓冲器134,且储存数据微指令516将算术逻辑单元微指令508的结果值写入存储缓冲器134后,分配给加载数据/储存地址微指令304的写入存储缓冲器134将此结果值写入存储器。加载数据/储存地址微指令304和储存数据微指令516并未彼此依附,因此可对另一者执行加扰处理。这对加载数据/储存地址微指令304而言尤其适用,因为其于加载数据单元220和储存地址单元224两者内执行。然而,因为加载数据/储存地址微指令304于加载数据单元220和储存地址单元224两者内执行,其可依附至用以提供图3中的来源A 312操作数和来源B 316操作数的其它指令的结果值之上,上述来源A 312操作数和来源B 316操作数是用来分别计算加载存储器地址和储存存储器地址,例如一般用途暂存器的操作数或区段暂存器的操作数。流程进行至方块616。
在方块616中,暂存器配置表116依照顺序分配重新序列缓冲器的条目404给每一个微指令304/508/516,并且将每个微指令的依附信息写入每一个微指令304/508/516所分配到的重新序列缓冲器的条目404中。当暂存器配置表116分配重新序列缓冲器的条目404时,重新序列缓冲器128将每一个所分配的重新序列缓冲器条目404的加载数据/储存地址旗标408、加载数据执行完成旗标412以及储存地址执行完成旗标416(如图4中所示)清除。暂存器配置表116也将这三个微指令304/508/516于其输出总线上发送(或输出)给重新序列缓冲器128和执行单元124。重新序列缓冲器128将三个微指令304/508/516接收入它们所个别分配的条目404中。在图5的实施例中,重新序列缓冲器的条目7接收了加载数据/储存地址微指令304,重新序列缓冲器的条目8接收了算术逻辑单元微指令508,以及重新序列缓冲器的条目9接收了储存数据微指令516。同样的,加载数据单元220和储存地址单元224监看暂存器配置表116的总线,并且都将加载数据/储存地址微指令304接收至它们个别的保留站。简单整数单元212监看暂存器配置表116的总线,并且将算术逻辑单元微指令508接收至它的保留站。储存数据单元228监看暂存器配置表116的总线,并且将储存数据微指令516接收至它的保留站,皆如图5所示。另外,暂存器配置表116也将分配给加载数据/储存地址微指令304的重新序列缓冲器条目404中的加载数据/储存地址旗标408设定,其于图5的实施例中是条目7。流程进行至方块620。
在方块620中,存储器子系统132监看暂存器配置表116的总线、检测加载数据/储存地址微指令304,并且个别地分配存储缓冲器134和载入缓冲器136给加载数据/储存地址微指令304。流程从方块620进行至方块624和方块636。
在方块624中,一旦所有的加载数据/储存地址微指令304的来源操作数都备妥,加载数据单元220根据来源A 312、来源B 316和撤回324的字段所记载的操作数计算加载存储器地址,并且要求存储器子系统132将所计算的加载存储器地址所载明的数据撷取至方块620中所分配的加载缓冲器136。当数据接收至加载缓冲器136时,加载数据单元220将此数据写入微处理器100内图3中目的320字段所记载的一个暂存器。然后加载数据单元220设置图5中的加载数据执行完成信号524,以设定方块616中分配给加载数据/储存地址微指令304的重新序列缓冲器条目7中的加载数据执行完成旗标412。流程从方块624进行至方块628。
在方块628中,一旦加载数据单元220于方块624中完成执行其部分的加载数据/储存地址微指令304,简单整数单元212对方块624中所加载的数据执行算术逻辑单元微指令508所指定的算术逻辑单元运算来产生结果值。简单整数单元212也设置图5中的算术逻辑单元执行完成信号520,以设定方块616中分配给算术逻辑单元微指令508的重新序列缓冲器条目8中的加载数据执行完成旗标412。值得注意的是,算术逻辑单元微指令508亦可由图2中的移动/分支单元216所执行。流程进行至方块632。
在方块632中,一旦简单整数单元212于方块628完成算术逻辑单元微指令508,储存数据单元228将算术逻辑单元微指令508的结果值写入于方块620中分配的存储缓冲器134。储存数据单元228也设置图5中的储存数据执行完成信号532,以设定方块616中分配给储存数据微指令516的重新序列缓冲器条目9中的加载数据执行完成旗标412。流程从方块632进行至方块640。
在方块636中,一旦所有的加载数据/储存地址微指令304的来源操作数都备妥,储存地址单元224根据来源A 312、来源B 316和撤回324的字段所记载的操作数计算储存存储器地址,并且将所计算的储存存储器地址写入方块620中所分配的存储缓冲器134中。如上所述,加载数据/储存地址微指令304的目的320字段不为储存地址单元224所使用。此后储存地址单元224设置图5中的储存地址执行完成信号528,以设定方块616中分配给加载数据/储存地址微指令304的重新序列缓冲器条目7中的储存地址执行完成旗标416。流程从方块636进行至方块640。
在方块640中,重新序列缓冲器128检测到加载数据/储存地址微指令304是重新序列缓冲器128中最早执行完成的微指令。也就是说,重新序列缓冲器128检测到加载数据/储存地址微指令304位于环状重新序列缓冲器128队列的第一个条目。在图5范例的条目7中,加载数据/储存地址旗标408(根据方块616)、加载数据执行完成旗标412(根据方块624),以及储存地址执行完成旗标416(根据方块636)皆被设定。流程进行至方块644。
在方块644中,重新序列缓冲器128检测到除了加载数据/储存地址微指令304已经完成之外,算术逻辑单元微指令508也已经执行完成(根据方块628)而储存数据微指令516也已经执行完成(根据方块632),因此对应地撤回LdAluSt宏指令104。流程进行至方块648。
在方块648中,存储器子系统132最后将写入存储缓冲器134的数据写入存储器,例如系统存储器或高速缓存138。流程结束于方块648。
虽然本文详细说明了本发明及其目的、特征和优点,但在不脱离本发明的范畴内,亦可有其它方式的实施例。举例来说,虽然实施例中说明了指令编译器于每一频率周期产生三个微指令,但也可有指令编译器于每一频率周期产生超过三个微指令的实施例。例如对于具有四个微指令宽度的编译器的处理器来说,单一加载数据/储存地址微指令允许指令编译器将一LdAluSt宏指令转换成三个微指令,并且于相同频率周期内将第二宏指令转换成第四微指令。
本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。

Claims (14)

1.一种微处理器,于其宏架构中具有宏指令集,上述宏指令集包括宏指令,上述宏指令指示上述微处理器对存储器中的操作数执行读取/修改/写入运算,包括:
指令编译器,用来将上述宏指令转换成三个的微指令,上述三个微指令用以对上述存储器操作数执行上述读取/修改/写入运算,其中上述三个微指令是第一、第二和第三微指令;
其中上述第一微指令指示上述微处理器从存储器位置加载上述存储器操作数至上述微处理器内,以及计算上述存储器位置的目的地址;
其中上述第二微指令指示上述微处理器对所加载的上述存储器操作数执行算术或逻辑运算以产生结果值;
其中上述第三微指令指示上述微处理器将上述结果值写入上述存储器位置,上述存储器位置的目的地址是由上述第一微指令所计算;
第一执行单元,用来接收上述第一微指令以对应地将上述存储器操作数从上述存储器位置加载至上述微处理器;以及
第二执行单元,用来接收上述第一微指令以对应地计算上述存储器位置的上述目的地址,其中上述第一和第二执行单元是上述微处理器内不同的执行单元。
2.根据权利要求1所述的微处理器,其中上述指令编译器用以于每频率周期中输出至多三个的微指令。
3.根据权利要求1所述的微处理器,其中上述指令编译器用以于每频率周期中输出超过三个的微指令,其中上述指令编译器于上述指令编译器转换上述宏指令为上述三个微指令的相同频率周期内,将第二宏指令转换成第四微指令。
4.根据权利要求1所述的微处理器,还包括重新序列缓冲器,耦接至上述指令编译器以及上述第一和第二执行单元,用以将上述第一微指令储存至上述重新序列缓冲器的单一条目中,即使上述第一微指令为上述第一和第二执行单元两者所执行。
5.根据权利要求4所述的微处理器,其中每一上述第一和第二执行单元还于随后提供个别标示,用以显示上述第一微指令已被执行,上述重新序列缓冲器在接收到上述第一和第二执行单元用以显示上述第一微指令已被执行的上述个别标示后,撤回上述第一微指令。
6.根据权利要求4所述的微处理器,其中上述重新序列缓冲器的上述单一条目包括旗标,用来表示上述第一微指令是上述微处理器的微指令集内,要被上述微处理器的上述第一和第二执行单元两者所执行的类型的微指令。
7.根据权利要求1所述的微处理器,还包括第三执行单元以及第四执行单元,其中上述第三执行单元对应于上述第二微指令,对所加载的上述存储器操作数执行算术或逻辑运算以产生结果值,上述第四执行单元对应于上述第三微指令,将上述结果值写入上述存储器位置,上述存储器位置的目的地址是由上述第二执行单元所计算而得。
8.根据权利要求1所述的微处理器,还包括高速缓存,用以快取包括上述存储器操作数的数据。
9.一种宏指令执行方法,适用于执行微处理器内的宏指令,上述微处理器在其宏架构中具有包括上述宏指令的宏指令集,上述宏指令是用来指示上述微处理器对存储器中的操作数执行读取/修改/写入运算,包括:
将上述宏指令转换成三个的微指令,以便对上述存储器操作数执行上述读取/修改/写入运算,其中上述三个微指令是第一、第二和第三微指令;
其中上述第一微指令指示上述微处理器从存储器位置加载上述存储器操作数至上述微处理器内,以及计算上述存储器位置的目的地址;
其中上述第二微指令指示上述微处理器修改所加载的上述存储器操作数以产生结果值;
其中上述第三微指令指示上述微处理器将上述结果值写入上述存储器位置,上述存储器位置的目的地址是由上述第一微指令所计算;
以上述微处理器的第一和第二执行单元两者接收上述第一微指令;
将上述存储器操作数从上述存储器位置加载至上述微处理器,其中上述加载操作是由上述微处理器的第一执行单元对应于上述接收操作所执行;以及
计算上述存储器位置的上述目的地址,其中上述计算操作是由上述微处理器的第二执行单元对应于上述接收操作所执行,上述第一和第二执行单元是上述微处理器内不同的执行单元。
10.根据权利要求9所述的宏指令执行方法,其中上述的转换操作是由上述微处理器内的指令编译器所执行,上述指令编译器用来于每频率周期中输出至多三个的微指令。
11.根据权利要求9所述的宏指令执行方法,其中上述的转换操作是由上述微处理器内的指令编译器所执行,上述指令编译器用来于每频率周期中输出超过三个的微指令,还包括:
于上述指令编译器转换上述宏指令为上述三个微指令的相同频率周期内,将第二宏指令转换成第四微指令。
12.根据权利要求9所述的宏指令执行方法,还包括储存上述第一微指令于上述微处理器的重新序列缓冲器的单一条目中,即使上述第一微指令为上述第一和第二执行单元两者所执行。
13.根据权利要求12所述的宏指令执行方法,还包括:
提供第一标示,用以显示上述第一微指令已于上述加载操作后被执行,其中上述第一标示的提供操作是由上述第一执行单元所执行;以及
提供第二标示,用以显示上述第一微指令已于上述计算操作后被执行,其中上述第二标示的提供操作是由上述第二执行单元所执行;
其中当接收到显示上述第一微指令已被执行的上述第一和第二标示后,撤回上述第一微指令。
14.根据权利要求12所述的宏指令执行方法,其中上述重新序列缓冲器的上述单一条目包括旗标,用来表示上述第一微指令是上述微处理器的微指令集内,要被上述微处理器的上述第一和第二执行单元两者所执行的类型的微指令。
CN2008101461211A 2008-02-08 2008-08-06 微处理器以及宏指令执行方法 Active CN101329622B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US2706008P 2008-02-08 2008-02-08
US61/027,060 2008-02-08
US12/100,616 2008-04-10
US12/100,616 US8069340B2 (en) 2008-02-08 2008-04-10 Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions

Publications (2)

Publication Number Publication Date
CN101329622A CN101329622A (zh) 2008-12-24
CN101329622B true CN101329622B (zh) 2011-09-21

Family

ID=40205442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101461211A Active CN101329622B (zh) 2008-02-08 2008-08-06 微处理器以及宏指令执行方法

Country Status (3)

Country Link
US (1) US8069340B2 (zh)
CN (1) CN101329622B (zh)
TW (1) TWI370390B (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880854B2 (en) * 2009-02-11 2014-11-04 Via Technologies, Inc. Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register
CN101887359B (zh) * 2009-07-15 2013-12-04 威盛电子股份有限公司 适用于微处理器中执行位扫描指令的硬件装置与方法
CN101944012B (zh) * 2009-08-07 2014-04-23 威盛电子股份有限公司 指令处理方法以及其所适用的超纯量管线微处理器
CN101907984B (zh) * 2009-08-07 2014-10-29 威盛电子股份有限公司 指令处理方法以及其所适用的超纯量管线微处理器
US9631528B2 (en) * 2009-09-03 2017-04-25 Clean Emissions Technologies, Inc. Vehicle reduced emission deployment
US8843729B2 (en) 2010-04-27 2014-09-23 Via Technologies, Inc. Microprocessor that fuses MOV/ALU instructions
CN102163139B (zh) * 2010-04-27 2014-04-02 威盛电子股份有限公司 微处理器融合载入算术/逻辑运算及跳跃宏指令
US8856496B2 (en) * 2010-04-27 2014-10-07 Via Technologies, Inc. Microprocessor that fuses load-alu-store and JCC macroinstructions
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
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
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
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
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
EP3151109B1 (en) * 2011-04-07 2019-12-25 VIA Technologies, Inc. Microprocessor that translates conditional load or store instructions into a variable number of microinstructions
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
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
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
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
CN104156241B (zh) * 2014-07-31 2019-08-13 中国船舶重工集团公司第七0九研究所 处理器微程序的初始化配置方法及系统
CN108416431B (zh) * 2018-01-19 2021-06-01 上海兆芯集成电路有限公司 神经网络微处理器与宏指令处理方法
US11281468B2 (en) * 2019-06-12 2022-03-22 Shanghai Zhaoxin Semiconductor Co., Ltd. Instruction execution method and instruction execution device
CN116909628B (zh) * 2023-09-13 2023-12-26 腾讯科技(深圳)有限公司 直接内存访问系统、数据搬运方法、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396634A (en) * 1992-09-30 1995-03-07 Intel Corporation Method and apparatus for increasing the decoding speed of a microprocessor
CN1103467C (zh) * 1994-10-13 2003-03-19 北京南思达科技发展有限公司 宏指令集对称式并行体系结构微处理器
CN1236380C (zh) * 2002-11-20 2006-01-11 智慧第一公司 具随机数产生器及用于存储随机数数据的指令的微处理器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995010804A1 (en) * 1993-10-12 1995-04-20 Wang Laboratories, Inc. Hardware assisted modify count instruction
US6370625B1 (en) * 1999-12-29 2002-04-09 Intel Corporation Method and apparatus for lock synchronization in a microprocessor system
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US6920546B2 (en) * 2002-08-13 2005-07-19 Intel Corporation Fusion of processor micro-operations
US7529914B2 (en) * 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396634A (en) * 1992-09-30 1995-03-07 Intel Corporation Method and apparatus for increasing the decoding speed of a microprocessor
CN1103467C (zh) * 1994-10-13 2003-03-19 北京南思达科技发展有限公司 宏指令集对称式并行体系结构微处理器
CN1236380C (zh) * 2002-11-20 2006-01-11 智慧第一公司 具随机数产生器及用于存储随机数数据的指令的微处理器

Also Published As

Publication number Publication date
TWI370390B (en) 2012-08-11
US8069340B2 (en) 2011-11-29
TW200935300A (en) 2009-08-16
US20090204800A1 (en) 2009-08-13
CN101329622A (zh) 2008-12-24

Similar Documents

Publication Publication Date Title
CN101329622B (zh) 微处理器以及宏指令执行方法
Farkas et al. The multicluster architecture: Reducing cycle time through partitioning
EP3350710B1 (en) Prefetching instruction blocks
CN107003837B (zh) 用于推测性编译器优化的轻量级受限事务存储器
JP6143872B2 (ja) 装置、方法、およびシステム
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
CN101299185B (zh) 一种基于cisc结构的微处理器结构
US6625723B1 (en) Unified renaming scheme for load and store instructions
US7062762B2 (en) Partitioning symmetric nodes efficiently in a split register file architecture
CN113050990A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
WO2003058435A1 (en) Dependence-chain processors
WO2018144408A1 (en) Executing multiple programs simultaneously on a processor core
US20040003211A1 (en) Extending a register file utilizing stack and queue techniques
KR20220151134A (ko) 이종 처리 자원들에 대한 작업을 적응적으로 스케줄링하기 위한 장치 및 방법
CN102708009A (zh) 一种基于cuda实现多任务共享gpu的方法
CN112130901A (zh) 基于risc-v的协处理器、数据处理方法及存储介质
US6957323B2 (en) Operand file using pointers and reference counters and a method of use
US8387009B2 (en) Pointer renaming in workqueuing execution model
Kavi et al. Execution and Cache Performance of the Scheduled Dataflow Architecture.
CN103294449A (zh) 发散操作的预调度重演
US20130061213A1 (en) Methods and systems for optimizing execution of a program in a parallel processing environment
Li et al. Compiler techniques for concurrent multithreading with hardware speculation support
JP7383390B2 (ja) 情報処理ユニット、情報処理装置、情報処理方法及びプログラム
CN109683959B (zh) 处理器的指令执行方法及其处理器
CN100390755C (zh) 含有显式高速缓冲存储器的计算机微体系结构

Legal Events

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