CN1497432A - 微处理器标记寄存器屏蔽移入弹出装置和方法 - Google Patents
微处理器标记寄存器屏蔽移入弹出装置和方法 Download PDFInfo
- Publication number
- CN1497432A CN1497432A CNA031597815A CN03159781A CN1497432A CN 1497432 A CN1497432 A CN 1497432A CN A031597815 A CNA031597815 A CN A031597815A CN 03159781 A CN03159781 A CN 03159781A CN 1497432 A CN1497432 A CN 1497432A
- Authority
- CN
- China
- Prior art keywords
- register
- flag register
- microprocessor
- eflags
- written
- 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.)
- Granted
Links
Images
Abstract
一种写入到微处理器内EFLAGS寄存器或从该寄存器读出的方法和装置。对于特定写入到EFLAGS请求,采用写入操作目标信息和写入操作优先级信息生成一屏蔽。随后,该屏蔽与EFLAGS的新值信息进行逻辑乘的操作,所得结果在单个指令周期内写入到EFLAGS寄存器。对于特定从EFLAGS读出请求,采用根据当前优先级信息读取操作过程中与更新多位标记寄存器那些字节有关的优先级信息生成一屏蔽。随后,该屏蔽与EFLAGS寄存器内容进行逻辑乘的操作,所得结果存储到存储器堆栈内。
Description
技术领域
本发明涉及计算机系统之内的指令执行,且特别涉及一种降低执行标记(EFLAGS)寄存器写入及读出所需指令周期次数的装置和方法。
背景技术
在x86管道式微处理器内,完成一个EFLAGS寄存器弹出指令(例如:POPF/POPFD、CLI/STI、CLD/STD、CLC/STC)需要多个执行周期。原因是写入到EFLAGS寄存器的操作取决于当前的I/O优先等级(IOPL)和写入时EFLAGS寄存器内的特定位的状态。在Micfosoft Windows操作系统内,当每次从一调用子程序返回时,EFLAGS寄存器都从堆栈内弹出,从而导致明显的操作系统延迟现象。
因此,现在需要一种运行微处理器的技术,该技术可减轻延迟现象,此延迟现象相关于完成写入到EFLAGS寄存器的指令,例如弹出指令。
同样地,在x86管道式微处理器内,EFLAGS寄存器的堆栈的移入指令(PUSHF/PUSHFD)也需要相当多个执行周期。原因是从EFLAGS寄存器读出时位的状态和微处理器的执行状态取决于当前I/O优先等级(IOPL)和堆栈移入时EFLAGS寄存器内的特定位的状态。在Microsoft Windows操作系统内,每次子程序的调用均导致EFLAGS寄存器移入至堆栈内,从而导致明显的操作系统延迟现象。
因此,现在需要一种运行微处理器的技术,该技术可减轻延迟现象,此延迟现象相关于这些完成从EFLAGS读出操作的EFLAGS堆栈移入指令。
发明内容
依照本发明的一实施例,本发明提供一种执行写入操作到微处理器内多位标记寄存器的方法。该方法包括通过微处理器的翻译级来接收一请求写入到多位标记寄存器的宏指令。该方法还包括通过翻译级来生成一用于在单个写入周期内写入到多位标记寄存器的微指令。该方法还进一步包括生成一个标记屏蔽,并将该标记屏蔽与一规定操作数加以逻辑乘运算后生成一结果。随后,该结果存储到多位标记寄存器内,在特定实施例的中,多位标记寄存器系为执行标记(EFLAGS)寄存器。
本发明有助于在单个指令周期之内,通过完成一写入操作,而执行写入到EFLAGS寄存器时,减少微处理器的延迟现象。
依照本发明的另一实施例,本发明提供一种从多位标记寄存器执行读取操作的方法。该方法包括通过微处理器的翻译级来接收一请求从多位标记寄存器读出的宏指令。该方法还包括通过翻译级来生成一用于在单个写入周期内从多位标记寄存器读出的微指令。该方法还包括生成一个标记屏蔽,该标记屏蔽包含根据当前优先级信息在读取操作过程中与更新多位标记寄存器的那些字节有关的优先级信息。该方法还可进一步包括将该标记屏蔽与该多位标记寄存器加以逻辑乘运算后生成一结果的步骤。另外,该方法还可进一步包括存储该结果在存储器堆栈内。
本发明有助于减少发生在微处理器内于EFLAGS寄存器堆栈移入过程中与EFLAGS寄存器读取有关的延迟现象。本发明所述的方法和装置可在单个指令周期之内完成执行标记堆栈移入的操作。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并结合附图详细说明如下。
附图说明
图1表示已知的微处理器的管道等级的方块图。
图2表示本发明的微处理器的一实施例的方块图。
图3表示图2所示微处理器运行的流程图。
图4表示本发明的微处理器的另一实施例的方块图。
图5表示图4所示微处理器运行的流程图。
附图标记说明
105:读取级
110:翻译级
115:寄存级
120:地址级
125:数据/算术逻辑单元级(执行级)
130:反写级
132:EFLAGS寄存器(执行标记寄存器)
202:读取级
204:指令读取逻辑器
206:指令存储器
208:指令指针
210:翻译器
212:翻译级
216:数据/算术逻辑单元-执行级
218:XIQ(翻译指令队列)
220:MTEF指令
222:寄存级
224:寄存器文件
226:ESP(扩展子库)
228:OP1寄存器
230:OP2寄存器
232:载入级
234:MTEF寄存器
236:加载/对位逻辑器
238:数据存储器
240:OP3寄存器
242:OP1寄存器
244:OP2寄存器
246:TVAL寄存器(新值寄存器)
248:TMASK寄存器(屏蔽寄存器)
250:AND门
252:PRIV寄存器(优先级寄存器)
254:结果寄存器
256:执行逻辑器
402:读取级
404:指令读取逻辑器
406:指令存储器
408:指令指针
410:翻译器
412:翻译级
414:EFLAGS寄存器(执行标记寄存器)
416:执行逻辑器
418:数据/算术逻辑单元-执行级
419:XIQ(翻译指令队列)
420:MTEF指令
422:寄存级
424:寄存器文件
426:ESP(扩展子库)
428:OP1寄存器
430:OP2寄存器
431:地址级
432:MTEF寄存器
434:载入级
436:加载/对位逻辑器
438:数据存储器
440:OP3寄存器
442:OP1寄存器
444:OP2寄存器
445:存储器内堆栈
446:PRIV寄存器(优先级寄存器)
448:FMASK寄存器
450:AND门
452:结果寄存器
454:存储逻辑器
456:存储级
具体实施方式
以下描述是为了使本领域的技术人员能够根据特定应用领域及其要求来顺利地应用本发明。然而,对于本领域技术人员来说,很明显的情况是,可对所提供的几个较佳实施例实施加以修改,并且此处所定义的一般原理也适用于其它实施例。因此,本发明并非仅局限于此处所述的特定实施例,而是适用于与本发明所述原理和新特征相关的一个较广的领域。
图1表示已知的管道式微处理器100的管道等级的方块图。微处理器100包括读取级105、翻译级110、寄存级115、地址级120、数据/算术逻辑部件或执行级125和反写级130。
在运作时,读取级105从存储器(未标出)读取微处理器100所需执行的宏指令。翻译级110将所读取的宏指令翻译成相关的微指令。
每一微指令命令微处理器100完成一与读取宏指令规定操作相关的具体子任务。寄存级115从一在管道内的后续等级所使用的寄存器文件(未标出)中,检索这些微指令所规定的操作数。地址级120计算这些由微指令所指定的存储器地址,以使用于数据存储和检索操作。数据/算术逻辑部件级125要么完成从寄存器文件中检索数据的算术逻辑单元运算,要么使用地址级120计算所得存储器地址来将数据写入到存储器或从存储器读取数据。反写级130将数据读取操作的结果或算术逻辑单元运算的结果写入到寄存器文件。因此,总结如下,宏指令通过读取级105读取,并通过翻译级110译码翻译成微指令。经翻译后的微指令通过等级115-130来执行。微处理器100就是这样提供管道操作。
为更好理解本发明所披露的技术,下面所描述的内容将采用x86微处理器术语。然而,本领域技术人员将认同x86寄存器和宏指令的使用仅是作为例证性说明的目的。同样可轻易地采用其它微处理器或结构形式来完成本发明的例证性说明。
数据/算术逻辑单元级125包括EFLAGS寄存器132,该寄存器132记录有微处理器的状态。EFLAGS寄存器132可被很多指令所修改,且用于进行参数比较、条件循环和条件跳跃。EFLAGS寄存器的每一位都含有一个上一指令特定参数的状态。下述表1所示32位与每一位的功能合在一起就组成EFLAGS寄存器。
表1
执行标记寄存器 | ||
位编号 | 名称 | 功能 |
31:22 | 保留位 | “低位” |
21 | ID | ID标记 |
20 | VIP | 虚拟中断待决 |
19 | VIF | 虚拟中断标记 |
18 | AC | 对位检查 |
17 | VM | 虚拟方式 |
16 | RF | 回复标记 |
15 | 0 | “低位” |
14 | NT | 嵌套任务标记 |
13:12 | IOPL | I/O优先级 |
11 | OF | 溢出标记 |
10 | DF | 方向标记 |
9 | IF | 允许中断标记 |
8 | TF | 陷阱标记 |
7 | SF | 符号标记 |
6 | ZF | 零标记 |
5 | 0 | “低位” |
4 | AF | 辅助进位标记 |
3 | 0 | “低位” |
2 | PF | 同位标记(同位) |
1 | 1 | “高位” |
0 | CF | 进位标记 |
在当今管道式的微处理器内,例如在微处理器100内,执行任何一个写入到EFLAGS寄存器(即:POPF/POPFD、CLI/STI、CLD/STD、CLC/STC)的指令都需要运行很多次机器周期。原因是写入到EFLAGS寄存器132的操作取决于写入时当前I/O优先级和EFLAGS寄存器内特定位的状态。更具体地说,位1、3、5、15和22-31均为保留位,它们的具体状态并不能被更改。另外,当微处理器运行在受保护模式的优先级为0(或实地址模式,其等同于优先级0)时,除了VIP、VIF、VM位以外,所有非保留位均可更改。VIP、VIF标记必须清除掉,而VM标记则必须保持其当前状态。
执行任何将数据写入到EFLAGS寄存器132的前述宏指令都会产生几个微指令。更详细地说,首先执行一个微指令以确定当前I/O优先级(IOPL)。后续微指令读取例如VM、PF、IOPL、VIP、IF等特定EFLAGS寄存器位的状态,并为将要写入到EFLAGS寄存器的新数据建立多个位状态。最后执行一微指令以将新数据写入到EFLAGS寄存器132。
上述EFLAGS寄存器更新的传统方法的明显缺点是为完成一写入到EFLAGS寄存器的操作必须执行很多微指令。由于要生成并处理多个微指令,故EFLAGS寄存器的每次更新所需有效时间就会延长。这会对微处理器的效率产生不良影响。
本申请的发明人已经认知到在Microsoft Windows操作系统中,当从子程序返回时,EFLAGS寄存器每次都会从堆栈弹出。他们同样也注意到该情况同样也发生在写入到当今常用桌上型计算机应用程序执行标记寄存器的其它微指令。由于这些指令属于常规使用指令类型,故希望能最大限度地缩减与它们相关的执行时间。
本发明的微处理器技术披露于此的目的是减少完成写入到执行标记寄存器所需指令周期的数目。为达到该目的,本发明提供了一种动态产生执行标记屏蔽的装置和方法。该屏蔽与规定操作数(即弹出执行标记寄存器或选定的执行标记位状态)进行逻辑乘的操作,所得结果写入到执行标记寄存器。此处所述的新的微处理器有助于使用单一微指令,其名为移动到执行标记寄存器(MTEF)指令,搭配执行级的专用逻辑器,可在单一指令周期之内完成写入到执行标记寄存器的操作。
图2所示为使用单个微指令MTEF在单个指令周期内完成写入到执行标记寄存器的操作的微处理器200方块图。微处理器200包括读取级202,其包含一与指令存储器206相连接的指令读取逻辑器204。指令指针208连接到读取逻辑器204,以便命令读取逻辑器204到存储器206的特定位置,且当前指令就从该特定位置读取。
当读取逻辑器204读取例如POPF/POPFD、CLI/STI、CLD/STD或CLC/STC等宏指令时,翻译级212的翻译器210作为响应会生成一MTEF D,S微指令,该指令在数据/算术逻辑单元-执行级216内执行一移动到执行标记寄存器214的操作。在MTEF D,S微指令之内,S表示一信息源,其表示信息源将传送到执行标记寄存器214。D表示在执行标记寄存器之内将要进行写入操作的这些位。
在介绍MTEF微指令之前,先介绍微处理器200的其它结构。如图所示,MTEF D,S微指令提供到翻译指令队列(XIQ)218。然后,微指令MTEF D,S继续行进到寄存级222的MTEF寄存器220。寄存级222包括一存储微处理器200的结构状态的寄存器文件224。寄存器文件224还包括扩展子库(ESP)寄存器226。如图所示,寄存级222还包括OP1寄存器228和OP2寄存器230。
寄存级222通过一地址级(在图中并未标出)而连接到载入级232。该微处理器使用一传统地址级来计算这些微处理器200进行指令处理的地址。MTEF寄存器的内容传送并存储到载入级232的相应MTEF寄存器234内。加载级232包括加载/对位逻辑器236,如图所示,其连接到寄存级222的OP1寄存器228和OP2寄存器230。加载对位逻辑器236连接到数据存储器238。加载对位逻辑器236的输出端连接到OP3寄存器240。如图所示,寄存级222的OP1寄存器228和OP2寄存器230的内容分别提供到加载级232的OP1寄存器242和OP2寄存器244。
微处理器200还包括一含有前述的执行标记寄存器214的数据/算术逻辑单元或执行级216。数据/算术逻辑单元级216包括TVAL寄存器246和TMASK寄存器248,其内容借助于AND门250而逻辑乘到一起。该逻辑乘操作的结果存储到执行标记寄存器214之内。该逻辑乘操作和TMASK寄存器248所提供的屏蔽的操作将在随后讨论。数据/算术逻辑单元级216包括优先级寄存器PRIV 252,该优先级寄存器提供与当前执行到TMASK寄存器248指令相关的优先级信息。指令执行结果提供到结果寄存器254。该结果通过结果总线(图中未标出)反写到寄存器文件224内。
如同前面简述过的情况,为响应读取逻辑器204所提供到翻译器210的读取宏指令POPF/POPFD、CLI/STI、CLD/STD、CLC/STC,翻译器210生成单个微指令MTEF D,S,该微指令随后提供到翻译队列(XIQ)216和连接到该位置的寄存级222。MTEF微指令包括一信息源S和一目标区D。目标区D规定要写入的执行标记寄存器214的这些位。例如:若目标区D=0,则表示写入到表1所示执行标记寄存器214内0位的进位标记CF。再比如,若目标区D=9,则表示写入到执行标记寄存器内的IF位,若目标区D=10,则表示写入到执行标记寄存器内的DF位。若将翻译器210生成的微指令MTEF D,S中的D设置成D=31就表示执行标记寄存器214从堆栈弹出。
微指令MTEF D,S的信息源S规定这些写入到执行标记寄存器214位的状态。例如:若D=10,S=0表示命令微处理器200清除DF。若D=0,S=1表示命令微处理器200设置进位标记。换句话说,在微指令MTEF D,S内,S=0表示清除目标位,S=1表示目标位的一种设置。对于POP EFLAGS指令来说,可忽略S字段。
数据/算术逻辑单元执行级216内的执行逻辑器256在写入到执行标记寄存器时提供一屏蔽,以便保证仅写入到正确的位位置。TMASK寄存器248的内容在执行MTEF微指令时动态生成。数据/算术逻辑单元执行级216的执行逻辑器256从优先级寄存器PRIV 252存取当前运行模式,并从执行标记寄存器214存取其它位的状态。S字段的值或从加载级232堆栈内所读取的执行标记寄存器被提供到新值寄存器TVAL 246。如图2所示,TVAL借助于AND门250与TMASK进行逻辑乘运算,所得结果写入到执行标记寄存器214。该方法的优点是,TMASK仅用于更改从PRIV寄存器252获得的特定当前运行模式函数允许的那些位。根据该实施例,指令所能具有的最高优先等级数为3,在更新执行标记寄存器内具体位时,该最高优先级为3的指令具有最大更改范围。具有较低优先级的指令根据它们更新执行标记的能力,具有严格限制的更改范围。最低优先级数值为0。作为一实施例,屏蔽包括与执行标记寄存器相同数量的位。根据PRIV寄存器446提供的当前优先级,若设定一个特定屏蔽位,这表示它可被更新,而若没有设定一个特定屏蔽位,则表示它不能被更新。简而言之,TVAL提供了要写入到执行标记的特定值,TMASK根据存储在PRIV寄存器252特定指令相关的优先级信息,以确定是否允许实施这样一个写入操作。
本发明所提供技术的优点是可以在单个指令周期之内执行写入到执行标记寄存器指令,从而可显著地增加微处理器的处理能力。
图3表示微处理器200根据本发明的先进方法执行写入到执行标记寄存器的操作时高度简化的处理过程流程图。例如POPF/POPFD、CLI/STI、CLC/STC或CLD/STD等宏指令可依照方块300从存储器读取。当翻译器210依照方块305翻译该宏指令时,该宏指令就会产生一个写入到执行标记寄存器214的请求。EFLAGS屏蔽就会依照方块310在EFLAGS屏蔽寄存器TMASK 248内产生。此时,如同前述,执行宏指令产生的要写入到EFLAGS的新值就会载入到方块315内的TVAL寄存器246。依照步骤320将目标信息提供到TMASK寄存器。同时也将当前优先级提供到TMASK寄存器,以便为TMASK寄存器配置一个值,假设依照方块325优先级信息允许更改该单个位或多个位的话,该值允许更改目标信息指定的特定EFLAGS位。依照方块330,TMASK寄存器内容与新值TVAL寄存器内容进行逻辑乘的操作,以便确保只有当前优先级允许的应该更新的那些EFLAGS位依照方块335在EFLAGS内获得更新。
前述已经注意到,在传统管道式微处理器之内,执行将EFLAGS寄存器移入至堆栈的命令PUSHF/PUSHFD时,需要运行相当多个微处理器周期。原因是从EFLAGS寄存器的读取操作取决于当前I/O优先级(IOPL)和写入时EFLAGS内特定位状态。更具体地说,位1、5、15和22-31为保留位,其具体状态不能更改。另外,不能拷贝EFLAGS寄存器的VM和RF标记(位16和17)。反倒是,在存储到堆栈的EFLAGS寄存器图像内要清除这些标记值。
当x86微处理器运行在虚拟8086模式且I/O优先级(IOPL)小于3时,执行PUSHF/PUSHFD指令肯定会引起通用保护故障或异常。然而,在真实地址模式之下,若在执行指令PUSHF/PUSHFD时,ESP寄存器或SP寄存器为1、3或5,则会由于堆栈空间不足而导致微处理器关闭。
在例如微处理器100等当今管道式微处理器之内,执行任何PUSHF/PUSHFD指令都会导致生成多个微指令。首先,执行一微指令将EFLAGS内容移动到临时寄存器。然后执行一微指令清除VM、PF位。随后,执行一微指令确定当前I/O优先级IOPL,目的是让微处理器清楚是否应生成异常或关闭微处理器。最后,执行一微指令将EFLAGS图像存储回堆栈。
上面所讨论的传统微处理器的一个明显缺点是为了完成一EFLAGS移入到堆栈的操作,必须执行很多微指令。其中某些微指令是必须的,原因是在将EFLAGS移动到堆栈之前,必须询问当前I/O优先级(IOPL)。其中还有某些微指令的所以必须的原因是在移入之前要清除EFLAGS内的特定位。另外,由于当前管道式微处理器结构不适合同时执行包括算术逻辑单元操作和存储操作的指令,如此则必须生成更多微指令。当前所知的执行级逻辑器仅允许执行算术逻辑单元和存储器存取操作中的某一单一功能。因此,任何后续含有存储类型操作的规定算术逻辑单元类型操作指令都必须生成两个连续微指令,以便在连续的单个机器周期内完成这两个操作。发明人注意到在例如Microsoft Windows等操作系统中,EFLAGS寄存器在每次调用子程序时均移入至堆栈。由于调用现象很频繁,因此非常希望能降低与EFLAGS移入到堆栈相关的执行时间。
图4所示微处理器400的优点是提供了一种单个微指令,从EFLAGS移动指令(MFEF),将EFLAGS寄存器414的内容移动到堆栈。数据/算术逻辑单元或执行级418的执行逻辑器416和加载-算术逻辑单元存储管线式结构使得EFLAGS移入的操作可在单个指令周期内完成。因此也就显著地改善了微处理器的效率。
微处理器400包括读取级402,其将命令读取逻辑器404连接到指令存储器406。指令指针408系连接到读取逻辑器404,以命令读取逻辑器404指定到指令存储器406的特定位置,且可从该位置读取当前指令。
当读取逻辑器404读取例如PUSHF/PUSHFD等宏指令时,翻译级412的翻译器410响应生成MFEF微指令,该微指令完成从EFLAGS寄存器414移动到数据/算术逻辑单元-执行级418的操作。
如图所示,MFEF微指令提供到翻译指令队列(XIQ)419。该MFEF微指令行进到寄存级422的MFEF寄存器420。寄存级422包括存储微处理器400的结构状态的寄存器文件424。寄存器文件424包括堆栈指针寄存器ESP 426。如图所示,寄存级222包括OP1寄存器428和OP2寄存器430。地址级431紧邻寄存级422。地址级431计算存储值地址,以便可从存储器检索它们并将它们写入到存储器。
提供MFEF寄存器420内容,并将它们存储在载入级434的相应MFEF寄存器432内。加载级434包括加载/对位逻辑器436,如图所示,该逻辑器436连接到寄存级422的OP1寄存器428和OP2寄存器430。加载对位逻辑器436连接到数据存储器438。加载对位逻辑器436的输出端连接到OP3寄存器440。如图所示,寄存级422的OP1寄存器428和OP2寄存器430的内容提供到加载级232的OP1寄存器442和OP2寄存器444。
MFEF寄存器432、OP1寄存器442、OP2寄存器444和OP3寄存器440连接到数据/算术逻辑单元级418的执行逻辑器416,以便将这些寄存器中每一寄存器数值提供到执行逻辑器416。
现在描述MFEF微指令从翻译级412到数据/算术逻辑单元执行级418的过程。当翻译器410接收到一个PUSHF或PUSHFD指令时,翻译器410会在其输出端响应生成一个MFEF微指令。该MFEF微指令命令微处理器400执行递减和读取的操作,并进一步命令堆栈指针寄存器ESP 426读取EFLAGS寄存器414,并依照当前操作状态函数对EFLAGS图像进行动态修正。然后将该EFLAGS图像存储到存储器445的堆栈内。
数据/算术逻辑单元执行级418的执行逻辑器416包括存储当前执行指令优先级信息或IOPL的优先级寄存器PRIV 446。优先级寄存器PRIV 446连接到FMASK寄存器448。EFLAGS寄存器414连接到FMASK寄存器448,以便向FMASK寄存器448提供第二个输入端。执行逻辑器416提供了一个屏蔽,名为FMASK,该屏蔽在执行MFEF微指令时动态产生。作为一实施例,该屏蔽含有与EFLAGS寄存器数量相同的位。根据PRIV寄存器446提供的当前优先级,若设定一个特定屏蔽位,这表示它可被更新,而若一个特定屏蔽位没有设定,则表示它不能被更新。执行逻辑器416从优先级寄存器PRIV 446存取当前操作模式,从EFLAGS寄存器414存取其它位状态。然后,读取EFLAGS寄存器内容,并将其与FMASK逻辑乘生成一结果,该结果存储到结果寄存器452。更详细地说,FMASK寄存器448的输出端连接到AND门450的一个输入端。AND门450的其它输入端连接到EFLAGS寄存器414。
在下一机器周期,存储在结果寄存器452内的结果写入到存储器堆栈内,写入地址由ESP寄存器426指定。由于在紧接着的下个机器周期,该结果将提供到寄存级456的存储逻辑器454,故不需要对EFLAGS图像进行临时存储。存储逻辑器454发送该结果,以便将其存储在存储器458堆栈内。
微处理器400的优点是可在单个指令周期内运行PUSHF PUSHFD指令,这显著地增加了微处理器的效率。
图5表示根据本发明所述先进技术微处理器400执行从EFLAGS读取操作以便进行堆栈移入时微处理器工作流程图。作为一实施例,读取器404从指令存储器检索PUSHF或PUSHFD宏指令。根据该种方式,在微指令传送到堆栈之前,就已经读取了依据方块500需要从EFLAGS寄存器414读取的微指令。方块505表示翻译器410将宏指令翻译成一用于在单个微指令周期内从EFLAGS寄存器读取操作的MFEF微指令。依照方块510,在FMASK寄存器448内生成一个EFLAGS屏蔽。作为一实施例,该EFLAGS屏蔽具有与EFLAGS本身数目相等的位。因此,在FMASK寄存器内EFLAGS屏蔽位与EFLAGS寄存器位之间存在一一对应关系。为在方块515内生成EFLAGS屏蔽,执行逻辑器416检查优先级情况,并设置与根据特定当前优先级允许更改的特定EFLAGS位相关的屏蔽位。相应于不能被更改EFLAGS位的其它屏蔽位则处于未设置状态或等于零状态。然后,该屏蔽依照方块520与EFLAGS寄存器的内容进行逻辑乘的操作,所得结果依照方块525写入到堆栈。
上面结合图2及图3所示内容描述了一种增加写入到EFLAGS寄存器的操作微处理器效率的装置和方法。结合图4及图5所示内容描述了一种增加执行从EFLAGS寄存器读取操作微处理器效率的装置和方法。该方法的优点是写入到EFLAGS的操作和从EFLAGS读取的操作均可在单个指令周期内完成,而不像过去所用微处理器那样需要多个周期。
尽管在此已详细描述了本发明及其目标、特征和优点,但本发明还包括其它实施例。除了采用硬件来实施本发明以外,本发明还可适用于可处理计算机程序代码(例如软件),例如可应用于存储该代码的计算机可用(可读)介质。该代码实现本发明的功能、制造、建模、模拟和/或测试。例如可通过形式为通用编程语言(例如C、C++等),GDSII,包括VERILOG HDL、VHDL、AHDL(Altera硬件描述语言)等硬件描述语言(HDL)等,或其它数据库,本技术领域编程和/或电路(图解)捕获工具之类计算机可读程序编码来完成。该编码可在任何可知计算机可用介质上处理,这些介质包括半导体存储器、磁盘、光盘(如:CD-ROM、DVD-ROM等)、实施在计算机可用(可读)传输介质(如:载波或包括数字、光学或类似介质的任何其它介质)的计算机数据信号。这样,该代码就可在包括因特网和局域网络的通信网路上传播。在此可认为上述本发明的功能和/或结构可适用于实施为编码(如:HDL、GDSII等)、并可转变为集成电路部分硬件的微处理器。同样该发明可实施为硬件与编码组合态的形式。
虽然本发明已以二个较佳实施例披露如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围内,可作若干的更动与润饰,因此本发明的保护范围视后附的权利要求为准。
Claims (10)
1.一种完成写入到微处理器中一多位标记寄存器操作的方法,该方法包括:
在一翻译级接收一请求写入到该多位标记寄存器的一宏指令;以及
在该翻译级生成一写入周期之内可写入到该多位标记寄存器的一微指令。
2.如权利要求1所述的完成写入到微处理器多位标记寄存器操作的方法,还包括生成一标记屏蔽。
3.如权利要求2所述的完成写入到微处理器多位标记寄存器操作的方法,还包括将该标记屏蔽与一规定操作数进行逻辑乘的操作生成一结果。
4.如权利要求3所述的完成写入到微处理器多位标记寄存器操作的方法,还包括将该结果存储到该多位标记寄存器。
5.如权利要求4所述的完成写入到微处理器多位标记寄存器操作的方法,其中该多位标记寄存器为一执行标记寄存器。
6.如权利要求1所述的完成写入到微处理器多位标记寄存器操作的方法,其中该宏指令为下列类型之一:POPF、POPFD、CLI、STI、CLC、STC、CLD和STD。
7.一种从一多位标记寄存器完成一读取操作的方法,该方法包括:
在一翻译级接收一请求从一多位标记寄存器读出的一宏指令;以及
在该翻译级生成一写入周期内可从该多位标记寄存器读出的一微指令。
8.如权利要求7所述的完成从多位标记寄存器读取操作的方法,还包括生成一个标记屏蔽,该标记屏蔽包含根据当前优先级信息的一读取操作过程中与更新该多位标记寄存器的那些字节有关的优先级信息。
9.如权利要求8所述的完成从多位标记寄存器读取操作的方法,还包括将该标记屏蔽与该多位标记寄存器逻辑乘运算后生成一结果。
10.如权利要求7所述的完成从多位标记寄存器读取操作的方法,其中该多位标记寄存器为一EFLAGS寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/279,206 | 2002-10-22 | ||
US10/279,206 US7058794B2 (en) | 2001-10-23 | 2002-10-22 | Apparatus and method for masked move to and from flags register in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1497432A true CN1497432A (zh) | 2004-05-19 |
CN1497432B CN1497432B (zh) | 2010-05-12 |
Family
ID=34272194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 03159781 Expired - Lifetime CN1497432B (zh) | 2002-10-22 | 2003-09-25 | 微处理器标记寄存器屏蔽移入弹出装置和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1497432B (zh) |
TW (1) | TWI223193B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853188A (zh) * | 2009-05-21 | 2010-10-06 | 威盛电子股份有限公司 | 检测载入-储存冲突的方法及其装置 |
CN110221807B (zh) * | 2019-06-06 | 2021-08-03 | 龙芯中科(合肥)技术有限公司 | 数据移位方法、装置、设备及计算机可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703558B2 (en) | 2011-12-23 | 2017-07-11 | Intel Corporation | Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6145075A (en) * | 1998-02-06 | 2000-11-07 | Ip-First, L.L.C. | Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file |
US6108773A (en) * | 1998-03-31 | 2000-08-22 | Ip-First, Llc | Apparatus and method for branch target address calculation during instruction decode |
-
2003
- 2003-09-17 TW TW92125561A patent/TWI223193B/zh not_active IP Right Cessation
- 2003-09-25 CN CN 03159781 patent/CN1497432B/zh not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853188A (zh) * | 2009-05-21 | 2010-10-06 | 威盛电子股份有限公司 | 检测载入-储存冲突的方法及其装置 |
CN101853188B (zh) * | 2009-05-21 | 2012-11-21 | 威盛电子股份有限公司 | 检测载入-储存冲突的方法及其装置 |
CN110221807B (zh) * | 2019-06-06 | 2021-08-03 | 龙芯中科(合肥)技术有限公司 | 数据移位方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TW200406700A (en) | 2004-05-01 |
CN1497432B (zh) | 2010-05-12 |
TWI223193B (en) | 2004-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1202480C (zh) | 高级微处理器中增强调度的方法和设备 | |
CN1089460C (zh) | 多指令集的数据处理 | |
CN1141647C (zh) | 赋予高级微处理器内存储器数据别名的方法和装置 | |
CN1099078C (zh) | 在多处理器系统中的处理器之间传送消息的方法与装置 | |
CN1266589C (zh) | 多重高速缓冲存储器线写回和作废技术 | |
CN1308274A (zh) | 在处理器中传送指令结果及处理器的编译方法 | |
CN1121014C (zh) | 具有risc结构的八位微控制器 | |
CN1492323A (zh) | 多处理器地址转换的高效仿真方法和系统 | |
US10565131B2 (en) | Main memory including hardware accelerator and method of operating the same | |
CN1794236A (zh) | 高效的基于cam在分组有效载荷中进行串搜索的技术 | |
CN1766834A (zh) | 双算术逻辑单元精简指令集8位微控制器 | |
CN101079083A (zh) | 一种对访存操作进行权限检查的系统、装置及方法 | |
CN101061466A (zh) | 用于处理闪速存储器的数据的装置和方法 | |
CN106156301B (zh) | 一种大字段数据的处理方法及装置 | |
TW201911034A (zh) | 資料處理設備中的資料項中的計數元件 | |
CN1862495A (zh) | 用于在执行被转换指令时维持环境的方法和装置 | |
US10261918B2 (en) | Process running method and apparatus | |
TW201741867A (zh) | 記憶體複製指令、處理器、方法及系統 | |
CN1716189A (zh) | 设计用户可定制的处理器的方法以及装置 | |
CN1955946A (zh) | 允许运行在逻辑分区上的程序访问资源的方法与系统 | |
CN1367440A (zh) | 在使用卷标的管线化微处理器中执行结合写入的装置及方法 | |
US20130346714A1 (en) | Hardware-Based Accelerator For Managing Copy-On-Write | |
CN104391803A (zh) | 一种分区操作系统的存储管理方法 | |
CN1381797A (zh) | 高速信息检索系统 | |
US20100153619A1 (en) | Data processing and addressing methods for use in an electronic apparatus |
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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20100512 |