CN110221862B - 指令执行方法及指令执行装置 - Google Patents
指令执行方法及指令执行装置 Download PDFInfo
- Publication number
- CN110221862B CN110221862B CN201910504891.7A CN201910504891A CN110221862B CN 110221862 B CN110221862 B CN 110221862B CN 201910504891 A CN201910504891 A CN 201910504891A CN 110221862 B CN110221862 B CN 110221862B
- Authority
- CN
- China
- Prior art keywords
- instruction
- micro
- exception
- execution
- reorder buffer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000007781 pre-processing Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/226—Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
-
- 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
-
- 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/30105—Register structure
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种指令执行方法及指令执行装置。该指令执行装置包含:处理器。处理器包括:指令翻译器(instruction translator)、重排缓冲器(reorder buffer)、架构寄存器(architecture register)以及执行单元。指令翻译器接收宏指令,并将宏指令翻译成为第一微指令、第二微指令及第三微指令;其中,指令翻译器为第一微指令及第二微指令标识相同的原子操作标志;执行单元执行第一微指令,以产生第一执行结果,将第一执行结果存储至一临时寄存器,并执行第二微指令,以产生第二执行结果,将第二执行结果存储至架构寄存器,并执行第三微指令,以从临时寄存器读取第一执行结果并将第一执行结果存入架构寄存器。
Description
技术领域
本发明涉及一种指令执行的机制,特别涉及一种针对具有原子性(atomicity)的微指令的指令执行方法及一种指令执行装置。
背景技术
一般而言,处理器的执行单元(execution unit)的数据总线(data bus)位宽(bitwidth)为固定的位数,例如为128位,即,仅能运算数据宽(data width)最多为128位的数据。然而,随着科技的发展,尤其是在需要大量处理浮点(floating point)指令或向量(vector)指令的领域,处理器需要处理的数据的位宽越来越大,且指令也越来越复杂,可能需要能够支持更多位数数据的处理,例如处理位宽为256位甚至512位的数据。
因此,如何基于目前处理器的架构,有效的扩展能够处理的指令类型,并可支持需要以较多位呈现的输出结果,已成为本领域需解决的问题之一。
发明内容
根据本揭示文件的一实施方式提出一种指令执行方法,用于一处理器中,该处理器包括一指令翻译器(instruction translator)、一执行单元、一架构寄存器(architecture register)及一重排缓冲器(reorder buffer),该指令执行方法包含:藉由指令翻译器接收一宏指令(macro-instruction),并将宏指令翻译成为一第一微指令、一第二微指令及一第三微指令;其中,指令翻译器为第一微指令及第二微指令标识相同的一原子操作标志;藉由执行单元执行第一微指令,以产生一第一执行结果,并将第一执行结果存储至一临时寄存器;藉由执行单元执行第二微指令,以产生一第二执行结果,并将第二执行结果存储至架构寄存器;以及藉由执行单元执行第三微指令,以从临时寄存器读取第一执行结果并将第一执行结果存入架构寄存器。
根据本揭示文件的另一实施方式提出一种指令执行装置,包含:一处理器。处理器包括:一指令翻译器(instruction translator)、一重排缓冲器(reorder buffer)、一架构寄存器(architecture register)以及一执行单元。指令翻译器用以接收一宏指令,并将宏指令翻译成为一第一微指令、一第二微指令及一第三微指令;其中,指令翻译器为第一微指令及第二微指令标识相同的一原子操作标志;执行单元用以执行第一微指令,以产生一第一执行结果,将第一执行结果存储至一临时寄存器,并执行第二微指令,以产生一第二执行结果,将第二执行结果存储至架构寄存器,并执行第三微指令,以从临时寄存器读取第一执行结果并将第一执行结果存入架构寄存器。
本发明所示的指令执行方法及指令执行装置可以应用指令翻译器将宏指令翻译成为多个微指令,并为此些微指令中实现该宏指令操作的微指令(例如前述的第一及第二微指令)标识相同的原子操作标志,藉此可将宏指令分成多个原子性(atomicity)的微指令以进行处理,再藉由此些微指令中的第三位微指令整合第一及第二微指令运算结果,本发明在扩展指令执行装置的所能处理的输出位数的同时,更可以藉由该原子操作标志将处理过程所发生的第一微指令的某些例外标识到与其具有原子性的第二微指令身上,而第一微指令的执行结果由于并不更新其所对应的架构寄存器而可以灵活地先退出(retire)而并不会造成该架构寄存器的错误状态,藉此可增加将宏指令分成多个微指令以进行运算时的灵活性与正确性。
附图说明
图1是依照本发明一实施例绘示指令执行装置的方块图。
图2A~2B是依照本发明一实施例绘示一指令执行方法的示意图。
图3是依照本发明一实施例绘示一指令执行方法的示意图。
图4是依照本发明一实施例绘示一指令执行方法的流程图。
图5是依照本发明一实施例绘示一指令执行方法的示意图。
【符号说明】
100:指令执行装置
102:指令高速缓冲存储器
104:指令翻译器
106:寄存器别名表
107:指令路径
108:保留站
ROB entry 1:第一重排缓冲器条目
ROB entry 2:第二重排缓冲器条目
126:架构寄存器
124:临时寄存器
112:执行单元
114:整数执行单元
116:浮点执行单元
117:载入执行指令流水线
118:存储次序缓冲器
119:存储指令执行流水线
120:系统存储器
110:重排缓冲器
160:架构寄存器文件
140:临时寄存器文件
400:指令执行方法
410~440:步骤
AO:AO
Mop:宏指令
μop1:第一微指令
μop2:第二微指令
μop3:第三微指令
具体实施方式
以下说明为完成发明的优选实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
在权利要求中使用如”第一”、"第二"、"第三"等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
在一实施例中,请参照图1,图1是依照本发明一实施例绘示指令执行装置100的方块图。在一实施例中,指令执行装置100包含一指令翻译器(instruction translator)104以及一执行单元112,指令翻译器104用以接收一宏指令(macro-instruction),并将宏指令翻译成为一第一微指令(micro-instruction)、一第二微指令及一第三微指令;其中,指令翻译器104为第一微指令及第二微指令标识相同的一原子操作(atomic operation)标志(flag),执行单元112用以执行第一微指令,以产生一第一执行结果,并将第一执行结果存储至一临时寄存器124(例如临时寄存器文件140中的多个临时寄存器之一的临时寄存器124);藉由执行单元112执行第二微指令,以产生一第二执行结果,并将第二执行结果存储至一架构寄存器(architecture register)126(例如架构寄存器文件160中的多个架构寄存器之一的架构寄存器126);以及藉由执行单元执行第三微指令,以从临时寄存器124读取第一执行结果并将第一执行结果存入架构寄存器126。
在一实施例中,指令执行装置100可以是一处理器。此外,处理器也可以由体积电路如微控制单元(micro controller)、微处理器(microprocessor)、数字信号处理器(digital signal processor)、特殊应用集成电路(application specific integratedcircuit,ASIC)或一逻辑电路来实施。
在一实施例中,如图1所示,指令执行装置100(例如以微处理器实现的)包括已下指令高速缓冲存储器(instruction cache)102,用以存储诸如x86指令集架构等的指令集架构的宏指令。此外,指令翻译器104,其接收宏指令并将其翻译成微指令(micro-instruction或μop)。然后,微指令被提供到寄存器别名表(Register Alias Table,RAT)106,寄存器别名表106会把微指令的依赖性用重排序缓存的索引(ROB index)或者物理寄存器堆的索引(PRF index)等形式做标记,依赖性是指一个指令的源操作数(sourceoperand)依赖于哪个指令的目标操作数(destination operand),例如在后的运算逻辑单元(arithmetic logic unit,ALU)指令的源操作数可能依赖于在前的载入(load)指令的目标操作数,依赖性是由程序(或者是说指令序列本身)所决定的。然后寄存器别名表106按照程序次序向保留站(reservation station,RS)108发射微指令,并经由指令路径107向重排缓冲器(reorder buffer,ROB)110发射微指令。从寄存器别名表106发射的微指令(ISSUEINST)通常可以被称为微指令。重排缓冲器110存储关于从寄存器别名表106发射的每个指令的条目。保留站108将操作数准备好(ready)的指令派遣到多个执行单元112中合适的一个执行。其中操作数是否准备好可藉由前述依赖性标记是否解除来判断。
执行单元112可以包括:一个或多个整数执行单元,诸如整数算法逻辑单元114、一个或多个浮点执行单元116、存储次序缓冲器(memory order buffer,MOB)118等。存储次序缓冲器118通常处理访问系统存储器120的存储器类型指令,存储次序缓冲器118包括载入指令执行流水线(load instruction execution pipe)117和存储指令执行流水线(storeinstruction execution pipe)119。系统存储器120可以经由数据高速缓冲存储器(例如,L2数据高速缓冲存储器,未绘示)和总线界面单元(BIU,未绘示)与存储次序缓冲器118对接。执行单元112将它们的结果提供到重排缓冲器110,这确保指令的按次序退出(retire)。
保留站108包括至少一个寄存器队列(RS queue或RS matrix),其中,当指令准备好被执行(该指令所有的操作数准备好且所有的依赖性都解除)时,由寄存器队列向对应的执行单元112调度并派遣(dispatch)对应的指令。
值得注意的是,寄存器别名表106及其之前的微指令循序执行(指令依照程序顺序在执行)的最后一级,后面保留站108和执行单元112都属于乱序执行:保留站108中操作数先准备好(ready)的微指令就先派遣到执行单元112执行(同时有多个准备好的微指令,则选择存在保留站108中时间最久的,亦即“最老的”微指令),因此,在此些阶段打破了程序顺序,而由重排缓冲器110来保证执行完以后的微指令按程序顺序退出。请参阅图2A~2B,图2A~2B是依照本发明一实施例绘示一指令执行方法的示意图。在一实施例中,执行单元112运算一次可以得到128位(bit)的执行结果输出,当执行单元112想支持256位的宏指令Mop时须要运算两次,才能得到256位的执行结果输出,例如,当指令翻译器104接收到宏指令Mop后,指令翻译器104将宏指令Mop翻译成一第一微指令μop1及一第二微指令μop2(如图2B所示)。其中,第一微指令μop及第二微指令μop2皆为128bit的微指令。因此,通过将256位的宏指令Mop翻译成两个128位的微指令(第一微指令μop1及第二微指令μop2)后,执行单元112两个128位的微指令(第一微指令μop1及第二微指令μop2),可得到256位的输出,藉此扩展执行单元112可处理指令的位数。
在一实施例中,指令翻译器104接收宏指令Mop后,可将宏指令Mop翻译为更多个微指令(例如为5个)。
指令执行装置100在越来越多的场合需要能够支持更多位数的数据处理,以AVX256指令集为例,指令执行装置100的单指令多数据(Single Instruction MultipleData,SIMD)寄存器文件(register file)所支持的位宽增加至256位,但如果执行单元112的数据总线位宽仍为128位,在这种状况下就需要由多个(例如2个)微指令(μop)来实现1个单一的AVX256宏指令的运算。但是,实现该AVX256操作的这2个微指令(后续称为“操作微指令”)由于要更新SIMD寄存器文件中的同一个256位的架构寄存器126,如果这2个操作微指令之一在执行过程中发生重演(replay)或者例外(exception),而另一正确执行的操作微指令可能退出(retire)并提交结果以更新该256位的架构寄存器126自己对应的部分,则在这种情况下,该256位的架构寄存器126就会存在一半正确而一半错误的状态,这是处理器规范/手册所不允许的,其允许架构寄存器126所有位全部正确亦或全部错误,但不允许这种不确定的中间状态。因此本发明提出了将同一宏指令对应的“操作微指令”(例如前述的第一及第二微指令)标识相同的原子操作标志,以表征第一微指令的第一目的操作数(destination)及第二微指令的第二目的操作数均指向相同的架构寄存器126,以供后续当有微指令出现执行例外状况时进行处理(后会详述)。
请一并参阅图2A~2B、3,图3是依照本发明一实施例绘示一指令执行方法的示意图。指令翻译器104将第一微指令μop及第二微指令μop2标识相同的一原子操作标志,图3用以表示原子操作(atomic operation)AO,原子操作AO可以理解为一个宏指令,例如为宏指令Mop,其可被拆解为第一微指令μop1及第二微指令μop2,换句话说,相同的原子操作标志代表第一微指令的第一目的操作数(destination operand)及第二微指令的第二目的操作数均指向相同的架构寄存器126。在一实施例中,该原子操作标志标识于第一微指令μop1及该第二微指令μop2在该重排缓冲器110中分别对应的第一重排缓冲器条目ROB entry 1及第二重排缓冲器条目ROB entry 2中。在一实施例中,定义两个以上的微指令(例如,第一微指令μop1及第二微指令μop2)视为一组原子操作AO。由于执行单元112需要执行两个128位的微指令(第一微指令μop1及第二微指令μop2)才可得到256位的输出,故第一微指令μop1及第二微指令μop2之间的相关性很强,有时执行单元112会乱序执行指令,例如,执行单元112执行第一微指令μop1后,又执行了许多其他的微指令,才执行第二微指令μop2,在这种状况下,很容易造成输入第二微指令μop2的参数不正确,而执行结果也随之错误的情形。因此,属于同一组原子操作AO的微指令(例如,第一微指令μop1及第二微指令μop2)在执行过程有发生重放(replay)、退出(retire)、例外(exception)时,需要藉由该原子操作标志进行特别的处理,以下以图3为例,说明一实施例的指令执行方法关于依据前述原子操作标志进行重放、退出及例外处理的细部技术特征
。值得注意的是,在本实例中,第一微指令μop1及第二微指令μop2的执行结果分别在第一微指令μop1和第二微指令μop2退出后会直接更新至架构寄存器126。
在一实施例中,当第一微指令μop1的执行发生例外(包括格式例外、无效例外、除数为零、精度例外、下溢例外及上溢例外等)时,则将例外状况标示到第一微指令μop1的第一重排缓冲器条目ROB entry 1中且不退出第一微指令μop1,直到与第一微指令μop1具有相同的原子操作标志的第二微指令μop2执行结束且当第一微指令μop1为重排缓冲器110中最老(oldest,即此时重排缓冲器110按序应执行第一微指令μop1的退出程序)时,进行第一微指令μop1发生的例外对应的例外处理程序。值得注意的是,必须等到第二微指令μop2执行结束的原因是因为:第二微指令μop2执行结束会更新一执行状态字(execution statusword),指令翻译器104需要根据该执行状态字的值决定执行哪个例外处理程序,当第一微指令μop1发生的例外对应的例外处理程序执行完毕,可再次经由指令翻译器104重新译码,以产生第一微指令μop1及第二微指令μop2,且第一微指令μop1及第二微指令μop2执行完毕没有任何错误后,第一微指令μop1和第二微指令μop2才能在最老的时候退出。在本实施例中,重排缓冲器110根据相同的原子操作标志来判断需要与第一微指令μop1绑定进行前述例外处理的第二微指令μop2。
在一实施例中,当第一微指令μop1的执行正常,暂时也不能退出第一微指令μop1,且第二微指令μop2发生例外时,由于第一微指令μop1具有与第二微指令μop2相同的原子操作标志,则将此例外状况标示到第一微指令μop1的第一重排缓冲器条目ROB entry 1中,当第一微指令μop1为重排缓冲器110中最老时,进行第二微指令μop2发生的例外对应的例外处理程序,当第二微指令μop2发生的例外对应的例外处理程序执行完毕,再次经由指令翻译器104重新译码产生第一微指令μop1及第二微指令μop2且执行完毕没有任何错误后,第一微指令μop1和第二微指令μop2才能在最老的时候退出。
在一实施例中,有些执行结果错误并不需要从指令翻译器104重新译码执行,可通过执行单元112重新执行一次微指令,即可能得到正确的执行结果,这种操作称之为“重放(replay)”。在一实施例中,当第一微指令μop1的执行结果错误时,执行单元112从第一微指令μop1开始重放,即重新执行第一微指令μop1及其往后的微指令(包含重新执行第二微指令μop2)。在一实施例中,当第一微指令μop1的执行结果正确而第二微指令μop2的执行结果错误时,由于第二微指令μop2与第一微指令μop1具有相同的原子操作标志,重排缓冲器110在第一微指令μop1最老时不执行第一微指令μop1的退出操作而是执行第二微指令μop2的重放,当执行单元112重新执行第二微指令μop2及其往后的微指令后,重排缓冲器110方能执行第一微指令μop1的退出。
值得注意的是,在图3所述的实施例中,第一微指令μop1尽管执行结果正确也因为与其具有原子性的第一微指令μop2发生错误而不能执行退出程序,因此本发明更提出图4和图5的实施例,其中将一宏指令翻译成为至少3个微指令,其中包括至少2个操作微指令(如第一微指令及第二微指令),其中第一微指令执行正确时可退出但并不更新架构寄存器126,而是将结果存储至临时寄存器124,当第一和第二微指令都正确执行后,再藉由第三位微指令将其第一执行结果由临时寄存器124整合至架构寄存器126,如此当第一微指令执行正确就可以退出(retire)也不会造成该架构寄存器126的错误状态,同时也不会造成硬件资源上的浪费。
请一并参阅图4~5,图4是依照本发明一实施例绘示一指令执行方法400的流程图。图5是依照本发明一实施例绘示一指令执行方法的示意图。指令执行方法400适用于一处理器中,处理器包括指令翻译器104、执行单元112、架构寄存器126及重排缓冲器110。在一实施例中,可采用图1的指令执行装置100以执行图4的指令执行方法400。
在步骤410中,指令翻译器104接收宏指令,并将宏指令翻译成为第一微指令μop1、第二微指令μop2及一第三微指令μop3(如图3所示)。
在步骤415中,指令翻译器104将第一微指令μop1及第二微指令μop2标识相同的原子操作标志,相同的原子操作标志代表第一微指令μop1及第二微指令μop2是同一宏指令的操作微指令且它们之间具备原子性(atomicity),在一实施例中,原子性表现为第一微指令μop1的第一目的操作数(destination)与第二微指令μop2的第二目的操作数均指向相同的架构寄存器(例如图1的架构寄存器126)。
在一实施例中,指令翻译器104在解码(decode)时,将该相同的原子操作标志分别标识在第一微指令μop1及第二微指令μop2在重排缓冲器110中分别对应的第一重排缓冲器条目ROB entry1及第二重排缓冲器条目ROB entry2中,代表此些微指令(第一微指令μop1及第二微指令μop2)为原子操作OA的一部分。在一实施例中,指令翻译器104将第一微指令μop1标上原子操作OA的起始标识,将及第二微指令μop2标上原子操作OA的结束标识,指令执行装置100中的其他元件可以得知起始标识至结束标识之间的微指令(当宏指令需要3个及以上的操作微指令时,例如,其译码后的程序顺序依序为:第一微指令μop1、第四微指令μop4及第二微指令μop2等来实现其运算,则第一微指令μop1及第二微指令μop2之间的第四微指令μop4可不需要标记μ)皆属于原子操作OA的一部分。
在一实施例中,当执行单元112执行一浮点指令时,若此浮点指令所需带宽(bandwith)为128位,则执行单元112在执行完毕后会输出128位的执行结果及一些标识字段至重排缓冲器110中该浮点指令对应的重排缓冲器条目中,标识字段例如包括前述的原子操作标志、重放(replay)标志、例外(exception)标志及其相关信息(例如包括指令翻译器104执行例外处理程序需要的一标识位置及一错误代码等)。
在一实施例中,指令翻译器104译码时会将原子操作标志标识在第一微指令μop1及第二微指令μop2各自的重排缓冲器条目中,在后续的各个使用到的元件(例如,重排缓冲器110、执行单元112)亦会在第一微指令μop1和/或第二微指令μop2各自的重排缓冲器条目中标识各种错误状况。在一实施例中,指令高速缓冲存储器102、保留站108和/或浮点执行单元116若检测到第一微指令μop1和/或第二微指令μop2在它们对应的处理阶段(分别为译码阶段、发射阶段及执行阶段)发生例外,则会向重排缓冲器110中所存的对应微指令的条目标上例外(exception)标志及其相关信息。
在一实施例中,若第一微指令μop1和/或第二微指令μop2在被执行单元112执行前或执行过程中被检测到有重放(replay)的状况、有例外(exception)状况(标上例外状况代码)或其他错误状况,重排缓冲器110可以依据前述标识对具备相同的原子操作标志的微指令进行处理(例如处理例外状况),例如,在浮点执行单元116执行第一微指令μop1之后,第一微指令μop1被检测到其第一执行结果发生一第一例外时,根据其原子操作标志将该第一例外标识在与其具有原子性的第二微指令μop2处,例如标识在第二微指令μop2的重排缓冲器条目中。值得注意的是,前述实施例中的第一例外可以是在第一微指令μop1被执行单元112执行之后发生的,此种例外可被称之为在后例外(post exception),在后例外例如为一精度例外(precision exception)、一下溢例外(underflow exception)或一上溢例外(overflow exception),而常见的例外状况还包括在被执行单元112执行之前发生的、与源操作数(source operand)相关联的例外,此种例外可被称之为在前例外(pre exception),在前例外例如为一格式例外(de-normal exception)、一无效例外(invalid exception)或一除数为零例外(zero divide exception)。关于不同微指令的不同例外状况的标识方式,以及不同微指令的重放(replay)状况的标识方式,将在后续段落说明。
在图4对应的实施例中,重排缓冲器110根据该原子操作标志判断一个发生例外状况的微指令是否具备原子性指令,如有,则可将较老微指令(例如前述的第一微指令μop1)的例外状况标识于较年轻的原子性指令(例如前述的第二微指令μop2)处,由于第一微指令μop1退出后其错误的结果仅更新于临时寄存器124,其并不会造成架构寄存器126的状态不确定,因此较老微指令(例如前述的第一微指令μop1)可先退出,而在该较年轻的原子性指令为最老(即执行退出程序)时,一并处理两个微指令的例外状况。其中,处理例外状况的方式例如,但不限于,重排缓冲器110传送应该至少一例外结果的一标识位置与一错误代码到指令翻译器104中的一微码(ucode,图未绘示),该微码依据标识位置与错误代码选择执行其所存储的多个例外处理程序(exception handler)之一。
在步骤420中,执行单元112执行第一微指令μop1,以产生一第一执行结果,并将第一执行结果存储至临时寄存器124。藉此,即使第一执行结果错误,也不会影响到架构寄存器126。
在步骤430中,执行单元112执行第二微指令μop2,以产生一第二执行结果,并将第二执行结果存储至架构寄存器126。
在步骤440中,执行单元112执行第三微指令μop3,以从临时寄存器124读取第一执行结果并将第一执行结果存入架构寄存器126对应的位置。
藉此,请一并参照图1及图5,第一微指令μop1/第二微指令μop2只有成功退出(retire)才能去更新临时寄存器124/架构寄存器126,所以当第一微指令μop1发生例外时,第一微指令μop1可退出并将其例外标识在第二微指令μop2身上,由于第一微指令μop1退出不会更新架构寄存器126,而第二微指令μop2在退出之前会执行例外处理程序,故错误结果不会更新至架构寄存器126,从而避免造成架构寄存器126状态不确定的问题。
为了再进一步论证无论出现哪种异常情况,本实施例描述的指令执行方法都可以解决,下面再具体描述(1)当第一微指令μop1发生在前例外(pre exception)的情形;(2)当第一微指令μop1发生在后例外(post exception)的情形;(3)当第一微指令μop1正确执行且成功退出,第二微指令μop2发生例外(无论是在前例外还是在后例外)的情形;(4)当第一微指令μop1或第二微指令μop2需要重放(replay)时。
(1)当第一微指令μop1发生在前例外(pre exception)的情形:在一实施例中,当第一微指令μop1在被执行单元112执行之前,被检测到对应到第一微指令μop1的至少一源操作数(source operand)发生一格式例外(de-normal exception)、一无效例外(invalidexception)或一除数为零(zero divide exception)时,执行单元112不退出第一微指令μop1(甚至可以根本不执行第一微指令μop1),如此避免造成架构寄存器126状态不确定的问题。其中,格式例外例如为源操作数的格式不正确,无效例外例如为源操作数的操作数无效或存在无法执行的错误,除数为零的例外均为在前例外。此些在前例外都可以在执行前被检测出来。
(2)当第一微指令μop1发生在后例外(post exception)的情形:如前所述,有一些例外的状况是在执行单元112执行微指令后,由执行结果而得知。例如,当第一执行结果包含一精度例外(precision exception)、一下溢例外(underflow exception)或一上溢例外(overflow exception)之中至少一例外结果时,这种例外称之为在后例外(postexception)。执行单元112根据该原子操作标志将第一微指令μop1的至少一在后例外(后续称之为第一例外)标识在第二微指令μop2身上,在一实施例中执行单元112将该第一例外标识在第二微指令μop2在重排缓冲器110中对应的第二重排缓冲器条目ROB entry 2中,在重排缓冲器110可当第一微指令μop1在重排缓冲器110中的条目索引为最老时退出第一微指令μop1。当第二微指令μop2在重排缓冲器110中的条目索引为最老时(即按序应执行第二微指令μop2的退出程序时),重排缓冲器110暂不退出第二微指令μop2,而是传送对应前述第一例外的一标识位置与一错误代码到指令翻译器104,指令翻译器104依据标识位置与错误代码执行对应的一例外处理程序(exception handler)。值得注意的是,当第一微指令μop1发生第一例外,而第二微指令亦发生一例外(无论是在前例外或在后例外,后续称之为第二例外)的状况下,执行单元112在检测到第一例外时仍可将该第一例外标识在第二微指令μop2身上,而第二例外被检测到时,同样标识在第二微指令μop2。重排缓冲器110可先退出第一微指令μop1,当重排缓冲器110按序应执行第二微指令μop2的退出程序时,可综合第一和第二例外谁的引起者更老,便将谁的标识位置与错误代码传送到该指令翻译器104以执行对应的例外处理程序。在这里第一微指令μop1较第二微指令μop2更老,因此仍然是将前述第一例外的标识位置与错误代码到指令翻译器104。
(3)当第一微指令μop1正确执行且成功退出,第二微指令μop2发生例外(无论是在前例外还是在后例外)的情形:当第一微指令μop1在被执行单元112执行之后第一执行结果被检测为一正常结果,且第二微指令μop2被检测到发生一第二例外时,重排缓冲器110退出第一微指令μop1(当第一微指令μop1在重排缓冲器110中的条目索引为最老时),但不更新架构寄存器126。在此例中,第二例外可以是在前例外,例如为包含一格式例外、一无效例外、一除数为零,也可以是在后例外,例如为包含一精度例外、一下溢例外或一上溢例外。在一实施例中,重排缓冲器110暂不退出第二微指令μop2(当第二微指令μop2在重排缓冲器110中的条目索引为最老时),重排缓冲器110传送对应该第二例外的一标识位置与一错误代码到指令翻译器104,指令翻译器104依据标识位置与错误代码执行对应的一例外处理程序(exception handler)。
综上所述,在图4及图5对应的实施例中,重排缓冲器110只有在第一微指令μop1发生在前例外(如前状况(1))时,不能退出第一微指令μop1,其他状况下重排缓冲器110均可得以先退出第一微指令μop1;更具体而言,在第一执行结果发生在后例外(如精度例外、下溢例外或上溢例外)或第二执行结果发生所有类型的例外(如格式例外、无效例外、除数为零、精度例外、下溢例外或上溢例外)时,执行单元112都可退出第一微指令μop1且不更新架构寄存器126,并将这些例外状况标识在第二微指令μop2,当重排缓冲器110执行第二微指令μop2的退出时(当第二微指令μop2在重排缓冲器110中最老时),暂不退出第二微指令μop2,而是依据第二微指令μop2所携带的标识进行例外处理,例如,重排缓冲器110依据第二微指令μop2所携带的标识,传送标识位置与错误代码到指令翻译器104,指令翻译器104依据标识位置与错误代码执行对应的一例外处理器程序。
(4)当第一微指令μop1或第二微指令μop2需要重放(replay)时:下面讨论执行错误为需要重放(replay)的情形,当第一执行结果错误需要重放时,执行单元112重新执行第一微指令μop1及其之后的所有微指令。当第一执行结果正确但第二执行结果错误需要重放时,执行单元112重新执行第二微指令μop2及其之后的所有微指令。不同于图3的实施方式之处在于,本实例中第一微指令μop1此时可先退出而不用等待与其具有原子性的第二微指令μop2的重放(replay)执行,在图3的实施方式中,重排缓冲器110在第一微指令μop1最老时不能执行第一微指令μop1的退出操作而是执行第二微指令μop2的重放。
值得注意的是,本发明并不限制指令翻译器104在译码宏指令时,将实现该宏指令操作的“操作微指令”的个数限制为2个,在其它实施例中,可以根据需要将该宏指令翻译成为N个(N≥2)操作微指令,其中前(N-1)个操作微指令的执行结果分别存储至(N-1)个对应的临时寄存器124,当N个操作微指令都正确执行并退出后,再藉由第N+1个微指令将(N-1)个临时寄存器124的执行结果存入架构寄存器126。
综上,本发明图4及5图所示的指令执行方法及指令执行装置可以应用指令翻译器将宏指令并将宏指令翻译成为多个微指令,并为此些微指令中实现该宏指令操作的操作微指令(例如前述的第一及第二微指令)标识相同的原子操作标志,藉此可将宏指令分成多个原子性(atomicity)的微指令以进行处理,再藉由此些微指令中的第三位微指令整合第一及第二微指令运算结果,本发明的该实施例在扩展指令执行装置的所能处理的输出位数的同时,更可藉由该原子操作标志将处理过程所发生的第一微指令的某些例外标识到与其具有原子性的第二微指令处,而第一微指令的执行结果由于并不更新其所对应的架构寄存器而可以灵活地先退出(retire)而并不会造成架构寄存器的错误状态,藉此可增加将宏指令分成多个微指令以进行运算时的灵活性与正确性。
Claims (20)
1.一种指令执行方法,用于处理器中,该处理器包括指令翻译器(instructiontranslator)、执行单元、架构寄存器(architecture register)及重排缓冲器(reorderbuffer),该指令执行方法包含:
藉由该指令翻译器接收宏指令(macro-instruction),并将该宏指令翻译成为第一微指令、第二微指令及第三微指令;其中,该指令翻译器为该第一微指令及该第二微指令标识相同的原子操作标志;
藉由该执行单元执行该第一微指令,以产生第一执行结果,并将该第一执行结果存储至临时寄存器;
藉由该执行单元执行该第二微指令,以产生第二执行结果,并将该第二执行结果存储至该架构寄存器;以及
藉由该执行单元执行该第三微指令,以从该临时寄存器读取该第一执行结果并将该第一执行结果存入该架构寄存器。
2.如权利要求1所述的指令执行方法,其中,该原子操作标志表征该第一微指令的第一目的操作数(destination)及该第二微指令的第二目的操作数均指向该架构寄存器。
3.如权利要求1所述的指令执行方法,其中,该原子操作标志标识在该第一微指令及该第二微指令在该重排缓冲器中分别对应的第一重排缓冲器条目(ROB entry)及第二重排缓冲器条目中。
4.如权利要求1所述的指令执行方法,其中,当该第一微指令在被该执行单元执行之前,该第一微指令被检测到其对应的至少一源操作数(source operand)发生在前例外时,该第一微指令不退出(retire)。
5.如权利要求1所述的指令执行方法,其中,当该第一微指令在被该执行单元执行之后,该第一微指令被检测到该第一执行结果发生第一例外时,根据该原子操作标志将该第一例外标识在该第二微指令。
6.如权利要求5所述的指令执行方法,其中将该第一例外标识在该第二微指令在该重排缓冲器中对应的第二重排缓冲器条目中,且该第一微指令退出。
7.如权利要求5所述的指令执行方法,其中该第二微指令不退出,该重排缓冲器传送对应该第一例外的标识位置与第一错误代码到该指令翻译器,使该指令翻译器依据该标识位置与该第一错误代码执行对应的例外处理程序。
8.如权利要求5所述的指令执行方法,其中该第二微指令被检测到发生第二例外时,该重排缓冲器传送对应该第一例外的标识位置与第一错误代码到该指令翻译器,使该指令翻译器依据该标识位置与该第一错误代码执行对应的例外处理程序。
9.如权利要求1所述的指令执行方法,其中,当该第一微指令在被该执行单元执行之后该第一执行结果被检测为正常结果,且该第二微指令被检测到发生第二例外时,该第一微指令退出。
10.如权利要求9所述的指令执行方法,其中该第二例外包含格式例外、无效例外、除数为零、精度例外、下溢例外或上溢例外。
11.如权利要求9所述的指令执行方法,其中该第二微指令不退出,该重排缓冲器传送对应该第二例外的标识位置与第二错误代码到该指令翻译器,使该指令翻译器依据该标识位置与该第二错误代码做预先的处理。
12.如权利要求1所述的指令执行方法,其中,当该第一微指令或该第二微指令被检测到发生例外时,该执行单元重新执行该第一微指令及该第一微指令之后的所有微指令。
13.一种指令执行装置,包含:
处理器,该处理器包括:
指令翻译器(instruction translator),用以接收宏指令(macro-instruction),并将该宏指令翻译成为第一微指令、第二微指令及第三微指令;其中,该指令翻译器为该第一微指令及该第二微指令标识相同的原子操作标志;
重排缓冲器(reorder buffer);
架构寄存器(architecture register);以及
执行单元,用以执行该第一微指令,以产生第一执行结果,将该第一执行结果存储至临时寄存器,并执行该第二微指令,以产生第二执行结果,将该第二执行结果存储至该架构寄存器,并执行该第三微指令,以从该临时寄存器读取该第一执行结果并将该第一执行结果存入该架构寄存器。
14.如权利要求13所述的指令执行装置,其中,该原子操作标志表征该第一微指令的第一目的操作数(destination)及该第二微指令的第二目的操作数均指向该架构寄存器。
15.如权利要求13所述的指令执行装置,其中,该原子操作标志标识在该第一微指令及该第二微指令在该重排缓冲器中分别对应的第一重排缓冲器条目(ROB entry)及第二重排缓冲器条目中。
16.如权利要求13所述的指令执行装置,其中,当该第一微指令在被该执行单元执行之前,该第一微指令被检测到其对应的至少一源操作数(source operand)发生在前例外时,该第一微指令不退出(retire)。
17.如权利要求13所述的指令执行装置,其中,当该第一微指令在被该执行单元执行之后,该第一微指令被检测到该第一执行结果发生第一例外时,根据该原子操作标志将该第一例外标识在该第二微指令。
18.如权利要求17所述的指令执行装置,其中将该第一例外标识在该第二微指令在该重排缓冲器中对应的第二重排缓冲器条目中,且该第一微指令退出。
19.如权利要求17所述的指令执行装置,其中该第二微指令不退出,该重排缓冲器传送对应该第一例外的标识位置与第一错误代码到该指令翻译器,使该指令翻译器依据该标识位置与该第一错误代码执行对应的例外处理程序。
20.如权利要求17所述的指令执行装置,其中该第二微指令被检测到发生第二例外时,该重排缓冲器传送对应该第一例外的标识位置与第一错误代码到该指令翻译器,使该指令翻译器依据该标识位置与该第一错误代码执行对应的例外处理程序。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010009867.9A CN111221576B (zh) | 2019-06-12 | 2019-06-12 | 指令执行方法及指令执行装置 |
CN201910504891.7A CN110221862B (zh) | 2019-06-12 | 2019-06-12 | 指令执行方法及指令执行装置 |
US16/583,514 US10990406B2 (en) | 2019-06-12 | 2019-09-26 | Instruction execution method and instruction execution device |
US17/212,194 US11281468B2 (en) | 2019-06-12 | 2021-03-25 | Instruction execution method and instruction execution device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910504891.7A CN110221862B (zh) | 2019-06-12 | 2019-06-12 | 指令执行方法及指令执行装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010009867.9A Division CN111221576B (zh) | 2019-06-12 | 2019-06-12 | 指令执行方法及指令执行装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110221862A CN110221862A (zh) | 2019-09-10 |
CN110221862B true CN110221862B (zh) | 2021-06-01 |
Family
ID=67816521
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910504891.7A Active CN110221862B (zh) | 2019-06-12 | 2019-06-12 | 指令执行方法及指令执行装置 |
CN202010009867.9A Active CN111221576B (zh) | 2019-06-12 | 2019-06-12 | 指令执行方法及指令执行装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010009867.9A Active CN111221576B (zh) | 2019-06-12 | 2019-06-12 | 指令执行方法及指令执行装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10990406B2 (zh) |
CN (2) | CN110221862B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022174542A1 (zh) * | 2021-02-19 | 2022-08-25 | 华为技术有限公司 | 一种数据处理的方法、装置、处理器和计算设备 |
CN115705194A (zh) * | 2021-08-13 | 2023-02-17 | 华为技术有限公司 | 一种硬件内存序架构下的代码处理方法及相应装置 |
CN117931293B (zh) * | 2024-03-22 | 2024-06-28 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808309A (zh) * | 2016-03-08 | 2016-07-27 | 中国科学院软件研究所 | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 |
CN106716362A (zh) * | 2014-07-25 | 2017-05-24 | 英特尔公司 | 用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8090931B2 (en) * | 2008-09-18 | 2012-01-03 | Via Technologies, Inc. | Microprocessor with fused store address/store data microinstruction |
US8069339B2 (en) * | 2009-05-20 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microinstruction-specifiable non-architectural condition code flag register |
US9501286B2 (en) * | 2009-08-07 | 2016-11-22 | Via Technologies, Inc. | Microprocessor with ALU integrated into load unit |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
US8972961B2 (en) * | 2010-05-19 | 2015-03-03 | International Business Machines Corporation | Instruction scheduling approach to improve processor performance |
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 |
CN104040482B (zh) * | 2011-12-28 | 2018-02-16 | 英特尔公司 | 用于在打包数据元素上执行增量解码的系统、装置和方法 |
US20130332778A1 (en) * | 2012-06-07 | 2013-12-12 | Vmware, Inc. | Performance-imbalance-monitoring processor features |
US10678544B2 (en) * | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US11429393B2 (en) * | 2015-11-11 | 2022-08-30 | Arm Limited | Apparatus and method for supporting out-of-order program execution of instructions |
CN107038125B (zh) * | 2017-04-25 | 2020-11-24 | 上海兆芯集成电路有限公司 | 具有加速预取请求的独立流水线的处理器高速缓存 |
CN108958798B (zh) * | 2018-06-15 | 2021-04-20 | 上海兆芯集成电路有限公司 | 指令翻译电路、处理器电路及其执行方法 |
-
2019
- 2019-06-12 CN CN201910504891.7A patent/CN110221862B/zh active Active
- 2019-06-12 CN CN202010009867.9A patent/CN111221576B/zh active Active
- 2019-09-26 US US16/583,514 patent/US10990406B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106716362A (zh) * | 2014-07-25 | 2017-05-24 | 英特尔公司 | 用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级 |
CN105808309A (zh) * | 2016-03-08 | 2016-07-27 | 中国科学院软件研究所 | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 |
Non-Patent Citations (3)
Title |
---|
KSJ-2850机宏指令处理方案的设计与实现;苗永成,康宝祥,徐利;《小型微型计算机系统》;19940731;第15卷(第7期);全文 * |
Speeding-up SIMD instructions Dynamics Binary Translstion in Embedded Processor Simulation;Luc Michel, Nicolas Fournel etc.;《2011 IEEE International Conference on Computer Science and Automation Engineering》;20111231;全文 * |
X86指令集兼容处理器中微指令的设计与验证;安建峰,樊晓桠;《西北工业大学学报》;20100430;第28卷(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111221576B (zh) | 2022-03-22 |
US10990406B2 (en) | 2021-04-27 |
US20200394043A1 (en) | 2020-12-17 |
CN111221576A (zh) | 2020-06-02 |
CN110221862A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9104399B2 (en) | Dual issuing of complex instruction set instructions | |
CN110221862B (zh) | 指令执行方法及指令执行装置 | |
US7418578B2 (en) | Simultaneously assigning corresponding entry in multiple queues of multi-stage entries for storing condition attributes for validating simultaneously executed conditional execution instruction groups | |
US6185671B1 (en) | Checking data type of operands specified by an instruction using attributes in a tagged array architecture | |
US7925868B2 (en) | Suppressing register renaming for conditional instructions predicted as not executed | |
US20120124346A1 (en) | Decoding conditional program instructions | |
TWI506550B (zh) | 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品 | |
US5828873A (en) | Assembly queue for a floating point unit | |
US8856496B2 (en) | Microprocessor that fuses load-alu-store and JCC macroinstructions | |
US9323529B2 (en) | Reducing register read ports for register pairs | |
JPH03116236A (ja) | 例外処理方法及び例外処理装置 | |
KR100472346B1 (ko) | 명령어 리플레이를 포함하는 프로세서 파이프라인 | |
EP3067794B1 (en) | System and method of reissue parking for a microprocessor | |
CN114579312A (zh) | 一种指令处理方法、处理器、芯片和电子设备 | |
US9268575B2 (en) | Flush operations in a processor | |
US11392386B2 (en) | Program counter (PC)-relative load and store addressing for fused instructions | |
US6233672B1 (en) | Piping rounding mode bits with floating point instructions to eliminate serialization | |
JP3816845B2 (ja) | プロセッサ及び命令制御方法 | |
US11281468B2 (en) | Instruction execution method and instruction execution device | |
US5887185A (en) | Interface for coupling a floating point unit to a reorder buffer | |
US9323532B2 (en) | Predicting register pairs | |
CN110209426B (zh) | 指令执行方法及指令执行装置 | |
US11720366B2 (en) | Arithmetic processing apparatus using either simple or complex instruction decoder | |
CN111857826A (zh) | 指令执行方法及指令执行装置 | |
JPH09138748A (ja) | 浮動小数点命令の早期完了方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |