微处理器中用以执行弹出比较微指令的装置及系统的制作方法

文档序号:6465774阅读:113来源:国知局
专利名称:微处理器中用以执行弹出比较微指令的装置及系统的制作方法
技术领域
本发明有关于微电子的领域,特别是有关于管线微处理器中用以有效执 行字符串扫描及比较运算的装置及系统。
背景技术
早期的微处理器一次只能执行一个指令。因此,每个个别的指令会从存 储器中提取出来,并且该指令所指定的所有功能会由微处理器内的功能单元 来执行,直到所有功能完成。此时,会将个别指令丢弃,并从存储器中,提 取下个指令来执行。
虽然早期微处理器中的程序指令的执行易于了解,但是其实际的执行效 果是相当缓慢的。从那时起,微处理器的设计者即已不断着力于修改微处理 器的架构,来改善指令的执行速度或处理量(throughput)。近来,管线架构在 此技术领域中己很普遍用来作为增加指令处理量的手段。管线架构将微处理 器的功能单元拆解成一连串的连续运算,与装配线的层分化非常类似。因此, 在一应用程序中,当微处理器的一特定层正执行由第一指令所指定的运算 H寸, 一紧接在该特定层前的层则执行由接在第一指令后的第二指令所指定的 另一运算,这种情形是非常可能的(并且,从处理量的观点来看,是非常理想 的)。当所有管线层都在执行运算时,就能使微处理器达到有效率的处理還:。 但当一特定管线层执行其指定运算花费太久的时间时,就会产生无效率的问 题。在此情况中, 一停顿(stall)信号会被送到先前的管线层,强制其暂停运作, 直到该特定管线层完成其功能为止。
管线架构已持续发展到如下程度许多程序指令(亦称为宏指令)所指定
的运算可于通过管线一次即完成。例如,寄存器对寄存器的加法运算可在一 寄存器层内,从寄存器中同时提取两个寄存器操作数,并在后续的一个执行 层中将其相加产生结果,最后并在执行层后的一结果写回层中,将结果写回 到一结果寄存器。因此,用以执行寄存器对寄存器的加法运算的单一指令, 会被组态为与一管线频率同步而通过连续的管线层,而最终结果则为使用者 可在单一管线周期内,执行寄存器对寄存器的加法。
虽然许多宏指令所指定的运算可经由通过管线一次而完成执行,但仍有 很多指令,其指定运算是如此复杂,以致无法通过管线在一个处理期间即完 成。所谓的字符串比较指令即是一种这样类型的宏指令,如扫描字符串指令 或比较字符串指令。这种类型的指令会间接指定一或两个操作数(其必须从数 据存储器中读取,并且相互比较,或与储存于内部寄存器中的一第三操作数 进行比较,以产生比较结果)的位置。此种型式的运算称为载入比较运算。然 而,大部份的现代微处理器具有一特定管线层,其可进行这样的操作l)存 取存储器中的操作数,或是2)使用提供的操作数来执行算术或逻辑计算。因 此,在此特定层内的相同管线周期期间,不能同时执行这些型式的运算。因 此,载入比较运算需要执行两个子运算。首先,操作数必须从存储器中读取。 紧接于此的是,读取的操作数必须进行比较,以产生结果。因此,当执行从 存储器中读取操作数的运算(亦即,第一子运算)时,后续指令的提取必须暂 停。而当执行加法运算(亦即,第二子运算)时,才恢复提取的动作。
从处理量的观点而言,使管线暂停一或多个周期是不利的。- 一个单一载 入比较运算会导致至少一次管线暂停。特别是当字符串比较宏指令重复使用 很多次时(通常可在很多应用程序内见到),原本因重复一次字符串比较运算 所导致的暂停,会随着所指定的重复次数增加,而变得更为不利。
在一管线微处理器中,任何需要多个管线周期来完成的运算,都会面临 管线层的运作缺乏效率的问题。当这种无效率的运作因为前述重复状况而加 重时,微处理器的执行速度会变差。因此,需要一种微处理器中的装置及系 统,使载入比较运算能在单一管线周期中完成。

发明内容
除了别的应用外,本发明针对解决现有技术的这些及其它问题及缺点。
具体来讲,按照本发明一个方面,提供了一种在微处理器中用以执行一 重复弹出比较运算的装置,包括 一成对运算转译逻辑器,用以接收该重复 弹出比较运算的一宏指令,并产生一弹出微指令、 一弹出比较微指令、 一递 减微指令,其中,该弹出微指令指示一微处理器中的管线层执行弹出运算, 该弹出比较微指令指示一微处理器中的管线层执行弹出比较运算,该递增或 递减微指令执行对计数寄存器的递增或递减运算; 一载入逻辑器,耦接至该 成对运算转译逻辑器,用以接收该弹出比较微指令,并从存储器的一地址读 取一第二操作数,其中,该地址由第二寄存器的内容所指定,该第二寄存器 由该弹出比较微指令指定;以及一执行逻辑器,耦接至该载入逻辑器,用以 接收该第二操作数,并将该第二操作数与一第一操作数进行比较,该第一操 作数是由所述转译得到的多个微指令之中的弹出微指令读取的,其中,该载 入逻辑器包括该管线层中的一第一层,而该执行逻辑器包括该管线层中的---第二层,其中,该第二层位于该第一层之后,该弹出比较微指令于一单一管 线周期中处理该第一层与该第二层其中之一。
按照本发明另一个方面,提供了一种在一微处理器中用以执行一扫描字 符串指令或一比较字符串指令的装置,包括 一成对运算转译器,组态为将 该扫描字符串指令或该比较字符串指令转译成对应的多个微指令,其中,该 对应的多个微指令包括一弹出微指令以及一弹出比较微指令,其中该弹出微 指令指示一微处理器中的管线层执行弹出运算,该弹出比较微指令指示该微 处理器执行两种运算,其中该两种运算由该微处理器的两个连续层执行,该 两个连续层包括 一载入层,组态为执行该两种运算中的一第一运算,该第 一运算包括从存储器之一位置读取一第二操作数;以及一执行层,耦接至该 载入层,组态为执行该两种运算中的一第二运算,该第二运算包括接收该第 二操作数,并将该第二操作数与一第一操作数进行比较,以产生一结果,其 中该第一操作数是由所述转译得到的多个微指令之中的弹出微指令读取的, 其中,在该微处理器中,该执行层跟随该载入层,该弹出比较微指令是于一 单一管线周期中处理该载入层与该执行层其中之一。
按照本发明另一个方面,提供了一种在一管线微处理器中用以执行一重 复弹出比较运算的系统,包括 一转译逻辑器,该转译逻辑器接收及转译该 重复弹出比较运算的一宏指令,并产生一弹出微指令、--弹出比较微指令、
一递减微指令;以及一载入逻辑器,组态为接收该弹出比较微指令,并从一 存储器位置读取一第二操作数,且将该第二操作数传送到该管线微处理器的 一后续层中的执行逻辑器,其中,该执行逻辑器在一单一管线周期中比较该 第二操作数与一第一操作数,并产生一比较结果,该第一操作数是由所述转
译得到的多个微指令之中的弹出微指令读取的,其中,该弹出比较微指令是 于一单一管线周期中处理该载入层。
本发明提出一种技术,用以达成管线微处理器中的载入比较及弹出比较 运算。本发明提出一种微处理器装置,用以执行弹出比较运算。此微处理器 装置包括一成对运算转译逻辑器、 一载入逻辑器以及一执行逻辑器。成对运 算转译逻辑器接收指定弹出比较运算的宏指令,并产生弹出比较微指令。弹 出比较微指令会指示微处理器中的管线层执行弹出比较运算。载入逻辑器耦 接至成对运算转译逻辑器,用以接收弹出比较微指令,并从存储器的-一 地址 中,读取第一操作数,其中,此地址由一寄存器的内容所指定。此寄存器由 弹出比较微指令来指定。执行逻辑器则耦接至载入逻辑器,用以接收第一操 作数,并将第一操作数与一第二操作数进行比较。
其中,该弹出比较微指令指示该载入逻辑器读取该第一操作数,并指示 该执行逻辑器将该第一操作数与该第二操作数进行比较。该载入逻辑器包括 该管线层中的一第一层,而该执行逻辑器包括该管线层中的一第二层,其中, 该第二层位于该第一层之后。该弹出比较微指令于一单一管线周期中处理该 第一层与该第二层其中之一。该第一层将该第一操作数及该弹出比较微指令 传送到该第二层,以进行该第一操作数与该第二操作数的比较。该执行逻辑 器根据该第一操作数与该第二操作数的一比较结果,更新一标志寄存器。该 标志寄存器包括一零标志、 一进位标志及一溢位标志。该执行逻辑器同时递 增或递减该寄存器的该内容,使该内容指向该存储器中下一个地址,以供该 执行逻辑器于下一个弹出比较运算期间进行比较。
另一方面,本发明提出一种微处理器中的装置,用以执行扫描字符串指 令或比较字符串指令。此装置具有一成对运算转译器,其组态为将扫描字符 串指令或比较字符串指令转译成对应的微指令。对应微指令包括弹出比较微 指令,用以指示微处理器,执行两种运算,其中这两种运算由微处理器的两 个连续层来执行。这两个连续层包括载入层及执行层。载入层用以执行这两种运算中的第一种。这两种运算中的第一种包括从存储器的一位置中,读取 第一操作数。执行层耦接至载入层。执行层用以执行这两种运算中的第二利1。 这两种运算中的第二种包括接收第一操作数,并将第一操作数与一第二操作 数进行比较,而产生结果。
其中,在该微处理器中,该执行层跟随该载入层。该弹出比较微指令是 于一单一管线周期中处理该载入层与该执行层其中之一。该载入层将该第-
操作数及该弹出比较微指令传送到该执行层,以进行该第一操作数与该第二 操作数的比较。该执行层依据该结果更新一标志寄存器。该执行层同吋递增 或递减一寄存器的内容,使该内容指向该存储器的下一个地址,该存储器的 该地址存储器有下一个操作数,以供该执行层于下一个弹出比较运算期间进 行比较。
另一方面,本发明提出一种管线微处理器中的系统,用以执行弹出比较 运算。此系统具有一转入逻辑器及一载入逻辑器。该转入逻辑器所接收及转 译的一宏指令对应于一弹出比较微指令。载入逻辑器接收该弹出比较微指 令,并从一存储器位置中,读取第一操作数,且将第一-操作数传送到管线微 处理器的一后续层中的执行逻辑器。执行逻辑器在单一管线周期中,会将第 --操作数与一第二操作数进行比较,而产生比较结果。
其中,该弹出比较微指令指示该载入逻辑器读取该第一操作数,并指示 该执行逻辑器比较该第一操作数与该第二操作数。该弹出比较微指令是于一 单一管线周期中处理该载入层。


图1为一相关技术的管线微处理器的管线层的方框图; 图2为由图1的微处理器来执行重复字符串比较运算的表; 图3为依据本发明绘示的用以进行成对载入比较或弹出比较运算的微处 理器300的方框图;以及
图4为由图3的微处理器来执行重复弹出比较运算的表。
其中,附图标记说明如下
100, 300:微处理器 101:提取层
102:转译层 103:寄存器层
跳 106: 109:
200,
302: 303: 305: 307:
309,
312: 314: 316: 318:
322:
地址层 写回层
外部指令存储器
400:表
外部存储器或指 指令缓冲器 微指令队列 寄存器文件
319:微指令缓冲器
载入逻辑器 微指令缓冲器 读取操作数缓冲器 执行逻辑器 标志寄存器
105:数据/ALU层 107,108:寄存器
110:外部数据存储器 301:提取逻辑器
高速缓存
304:成对运算转译逻辑器 306:队列缓冲器 308, 321:内部寄存器
310, 311:操作数寄存器 313:数据存储器 315:操作数l缓冲器
317:操作数2缓冲器
320:结果寄存器
具体实施例方式
以下说明是在一特定实施例及其必要条件的脉络下而提供,可使一般本 领域技术人员能够利用本发明。然而,各种对该较佳实施例所作的修改,对 本领域技术人员而言是显而易见的,并且,在此所讨论的一般原理,亦可应 用至其它实施例。
考虑以上有关现有的管线微处理器中执行载入比较运算的背景讨论,现
将配合图1及2进行现有的技术例子的讨论,其清楚地解说传统管线架构中, 会妨碍载入比较运算及弹出比较运算的有效执行的限制。接着,会配合图3 及4说明本发明。在本发明所提出的微处理器中,执行弹出比较运算所需的
微指令(以及相对应的管线周期)的数量会比实施扫描字符串宏指令的所需的
数量少一半,亦比实施比较字符串指令的所需的数量少1/3。
图1为相关技术的管线微处理器100的层方框图。微处理器100包括一 提取层101、转译层102、寄存器层103、地址层104、数据/ALU层105以 及写回层106。
运作上,提取层101会从外部指令存储器109中读取宏指令,由微处理
器100来执行。转译层102会将提取的宏指令转译成相对应的微指令。寄存
器层103会从寄存器文件内的寄存器107中,读取由微指令所指定的操作数, 而给管线的后续层104-106来使用。地址层104会产生由微指令所指定的存 储器地址,用于数据储存及读取运算。数据/ALU层105会执行算术、逻辑 或其它指定运算,以使用读取自寄存器107的操作数来产生结果;或存取外 部数据存储器110,而使用地址层104所产生的地址来储存或读取存储器操 作数。数据/ALU层105会使用寄存器108(亦即,寄存器T1及T2),来储存 操作数,并于一结果寄存器RESLT中提供结果,且另外更新一标志寄存器 FLAGS,来表示RESLT的内容的某些特性(例如,零标志表示零的结果等)。 写回层106会以在数据/ALU层105中,从数据存储器110中所产生或得到 的结果,来更新寄存器文件中的寄存器107。微指令会与管线频率信号(未显 示)同步,依序处理管线的每个相连层。为了达成最佳管线效能,当--已知微 指令在一己知管线层执行时, 一先前的微指令应在一后续管线层中执行,而 --随后的微指令应在一先前的管线层中执行。换句话说,在任何已知的管绿 周期期间,微处理器100的所有层101-106应该执行其设计的功能;没有层 会闲置。
但是最佳管线处理量很难达成,这是因为由宏指令所指定的许多运算是 如此复杂,以致于这些运算必须拆解成二次或更多次的子运算,其中每个子 运算由对应的微指令所指定。因此,当这种型式的宏指令中的-一个送到转译 层102时,虽然转译层102会产生微指令来完成复杂运算,但是在转译层102 之前的管线层必须暂停。若宏指令所指定的特定运算可经由能畅通地处理管 线的单一微指令来实施,则所指定的运算称为单一周期运算。若特定的运算 需要三个微指令,则其称为3-周期运算。清楚可知的是,将实施宏指令的指 定运算所需的微指令数目降低是有帮助的。
宏指令所指定的运算或功能之所以被认为很复杂,其原因很多。其中-个特定因素,亦即本发明所要处理的,来自于现有管线微处理器中的逻辑功 能的架构性布局或配置。例如,若宏指令指定一种运算,其需要在特定管线 层101-106中执行一次以上的互斥(mutuallyexclusive)子运算,则此宏指令必
须拆解成对应的微指令,每个微指令指定互斥子运算其中之一。因此, 一第 一微指令会指示特定管线层101-106,来执行第一互斥子运算。第--微指令后跟着一第二微指令,其会指示特定管线层101-106,来执行第二互斥子运 算。后续微指令会持续产生,直到所有的互斥子运算己被执行。 现将配合图2说明前述多重微指令问题的一特定例子。
图2为一表格200,其显示由图1的微处理器100来执行重复比较字符 串指令。表200有七行,每一行对应于前述图1所讨论的各个管线层101-106 以及一周期行,其中,此周期行用来显示指令传经微处理器100的管线层 101-106时所对应的管线周期。周期行中的数字表示连续的管线周期,每一 个周期则对应于微处理器100内一管线频率信号(或称核心频率信号,图中未 显示)的特定数量的周期。本领域的技术人员将了解到, 一般来说,在现有的 管线微处理器100中, 一个管线周期对应一个核心频率周期。本讨论所关注 的指令明显地显示于提取-写回行中;与本讨论不相关的先前及后续指令则显 示为「一」。微处理器管线中的暂停标示为"停顿(STALL)"。在-一管线周 期内,若其对应的特定管线层101-106无法执行所指定的功能,则会产生停
' 图2的例子描述常用微处理器100的限制,其会衍生多个微指令的需求, 以完成一特定宏指令(即CMPSD)所指定运算的相关互斥子运算。此特定宏指 令(CMPSD)为根据符合x86兼容微处理器的架构性常规所产生的比较字符串 宏指令,且为了进行解说,在CMPSD宏指令前加上x86的"若相等则重复 执行"的前置码REPE (repeat if equal)。此例所以选用x86的常规,是因为 x86-兼容微处理器及其相关宏指令是业界所熟知的,然而,本领域技术人员 将能了解到,下面所讨论的问题亦遍及于其它非x86的微处理器架构。
在周期1期间,微处理器100的提取层101中的逻辑会从指令存储器109 中,读取或提取具有重复前置码的比较字符串宏指令(REPE.CMPSD)。本领
域技术人员将了解到,此处在管线微处理系统的脉络下所使用的"存储器" L09 —词,可应用于任何形式的可编程或中间的程序储存媒体,包括盘片、 只读存储器(ROM)、随机存取存储器(RAM)、芯片外及芯片上的高速缓存等。 宏运算码(CMPSD)会指示微处理器100执行两个操作数的比较。此两个操作 数位于数据存储器110中。其中,第一操作数位于由寄存器ES1 107的内容 所指定的第一操作数地址,而第二操作数则位于由寄存器EDI 107的内容所 指定的第二操作数地址。在寄存器ECX 107内,指定了比较运算要重复执行
的次数。在第一次重复执行结束时,于比较第一及第二操作数之后,
REPE.CMPSD会指示微处理器100,将标志寄存器108内的位更新,以显示 比较结果的属性,如其是否等于O(由标志寄存器FLAGS 108内的零标志(图 中未显示)来显示),或结果是否会产生进位(carry)(由标志寄存器FLAGS 108 内的进位标志(图中未显示)来显示)。在此特定例子中,REPE前置码会检查 零标志的状态,若零标志显示两个所比较的操作数不相等,则会停止重复动 作。因此,重复比较字符串指令是非常有用的,因为其使程序员能指示微处 理器,将存储器110的两个区域进行比较,并可快速地决定这些区域是否包 含相同数据。
重复比较字符串指令REPE.CMPSD会比较数据存储器110的区块,以 判断其是否相等。重复扫描字符串指令REPE.SCASD则指示微处理器100, 扫描一数据区块IIO,其起始地址由寄存器ESI 107指定,而扫描次数则由 寄存器ECX107指定,并且,比较数据区块110与寄存器EAX107的内容。 因此,比较字符串运算会比较位于存储器110中的两个操作数,而扫描字符 串运算则将存储器110中的操作数与寄存器EAX 107的内容进行比较。在第 一次比较后,字符串指针寄存器(在扫描字符串运算的情况下为ESI 107;在 比较字符串运算的情况下,则为ESI 107及EDI 107)的内容会根据一字节数 f:l而递增或递减。此字节数目可供字符串比较或字符串扫描运算于进行下一 次重复时,指向每一字符串内新数据项的位置。在x86雜容的微处理器中, FLAGS 108内的方向标志(未显示)会判断字符串指针寄存器是否递增或递 减。再者,在每次重复后,寄存器ECX的内容会递减。当计数寄存器(ECX 107) 递减为零,或当重复的条件不再满足时,重复字符串扫描及字符串比较的重 复执行就会停止。在图2的例子中,若零标志显示两个比较操作数不相等, 则重复字符串比较运算即停止。
在周期2期间,重复比较字符串宏指令(REPE.CMPSD)会处理转译层 t02。其中,重复比较字符串宏指令(REPE.CMPSD)被转译成具有四个微指令 的重复序列。第一微指令(POP Tl, [ESI])会指示微处理器100: l)从寄存器 ESI 107中,读取数据存储器110中的第一操作数的第--地址,2)递增或递减 ESI 107的内容,以指向下次重复该比较运算时所用的下个第一操作数,3) 使用ESI所提供的地址,从数据存储器110中,读取第一操作数,以及4)
将读取的第一操作数储存于寄存器T1 108中。第二微指令(P0PT2, [EDI])会 指示微处理器100: l)从寄存器EDI 107中,读取数据存储器110中的第二 操作数的第二地址,2)递增或递减EDI 107的内容,以指向下次重复该比较 运算时所用的下个第二操作数,3)使用EDI所提供的地址,从数据存储器110 中,读取第二操作数,以及4)将读取的第二操作数储存于寄存器T2 108中。 该重复序列的第三微指令(CMPT2,T1)会指示微处理器100,将储存于T1中 的第-一操作数与储存于T2中的第二操作数进行比较,在结果寄存器RESLT L08中,产生比较结果,并基于结果的属性,来更新标志寄存器FLAGS 108。 在x86兼容的处理器中,Tl的内容减去T2的内容会产生比较结果。然而, 本领域技术人员会了解到,可使用其它的技术,来比较两个操作数。例如, 可用T2的内容减去Tl的内容,来产生比较结果。第四微指令(DEC ECX) 则指示微处理器100,递减计数寄存器ECX 107,而完成一次重复序列的执 行。因此,为了重复执行一次字符串比较运算,会从数据存储器110中提取 第一操作数且储存于寄存器Tl 108中,并从数据存储器110中提取第二操作 数且储存于寄存器T2 108中,再将T1 108与T2 108的内容进行比较。最后, 计数寄存器会递减。重复序列会持续执行,直到转译层102从数据/ALU层 t05中,接收到重复条件不为真(在此例中,即零标志显示RESLT108的内容 不为零)或预定重复次数已完成的信号(未显示)。
因为两种互斥子运算必须在数据/ALU层105中执行,以达成一次完整 的重复,所以重复字符串比较宏指令(REPE.CMPSD)所指定的弹出比较运算 必须拆解成四个微指令POPTl,[ESI]、 POPT2,[EDI]、 CMPT2,T1及DEC ECX。从前述图1的讨论中可知,数据/ALU层105会使用读取自寄存器107 的操作数,来执行算术、逻辑或其它指定运算,而产生结果;或使用地址层 104所产生的地址,来存取数据存储器110,以储存或读取存储器操作数。 并且,为了达成一次弹出比较运算的重复,数据/ALU层105必须l)存取数 据存储器110,以读取第二操作数,并且2)将第二操作数与储存于T1 108中 的第一操作数进行比较,以产生比较结果。但是,因为在已知管线周期期间, 数据/ALU层105只能执行这两种子运算其中之--,所以需要两个微指令POP T2, [EDI]及CMP T2, Tl。
因此,在周期2期间,转译层102会产生第一微指令POPTl,[ES]。再
者,在周期2期间,因为转译层102需要额外的管线周期,以产生重复序列
中的其它微指令,所以停顿(STALL)信号会送到提取层101,以避免提取后 续的指令。
在周期3期间,第一微指令POPTl, [ESI]会处理寄存器层103。其中, 寄存器ESI 107会被存取,以读取第一操作数的第一地址。再者,在周期3 期间,转译层102会产生第二微指令POPT2, [EDI]。此外,在周期3期间, 停顿会持续,以避免提取层101将后续指令送到转译层102。
在周期4期间,P0PT1,[ESI]会处理地址层104。其中,会转译在周期3 期间读取自ESI 107的第一地址,而送到数据存储器10。本领域技术人员 将会了解到,现代的微处理器IOO时常使用需要将虚拟地址转译成实体地址 的虚拟地址架构,以存取存储器IIO。再者,在周期4期间,P0PT2,[EDI] 会处理寄存器层103。其中,会存取寄存器EDI 107,以读取第二操作数的 第二地址。此外,在周期4期间,第三微指令CMP T2, Tl会由转译层102 产生。再者,在周期4期间,停顿会持续,以避免提取层101将后续指令送 到转译层102。
在周期5期间,P0PT1,[ESI]会处理数据/ALU层105。其中,会使用地 址层104所提供的转译后的第一地址,来存取存储器110中的第一位置,以 读取用于弹出比较运算的第一操作数,而第一操作数会储存亍寄存器T1 108 屮,可由后续的微指令进行存取。再者,在周期5期间,POP T2, [EDI]会处 理地址层104。其中,会转译在周期4期间读取自EDI 107的第二地址,而 送到数据存储器110。此外,在周期5期间,第三微指令CMPT2,T1会处理 寄存器层103。这其中,不需要进行任何运算。此外,在周期5期间,第四 微指令DEC ECX由转译层102产生,以完成重复字符串比较运算的微指令 的一次重复。停顿会持续,以避免提取层101将后续指令送到转译层102。
在周期6期间,POP Tl, [ESI]会处理写回层106。其中,当来源寄存器 ESI 107的内容被写回到寄存器层103,且第一微指令POP Tl, [ESI]完成执行 之后,来源寄存器ESI 107的内容会被递增或递减。再者,在周期6期间, POPT2,[EDI]会处理数据/ALU层105。其中,会使用地址层104所提供的转 译过的第二地址,来存取存储器110中的第二位置,以读取用于弹出比较运 算的第二操作数,而第二操作数会储存于寄存器T2 108中,可由后续的微指 令进行存取。此外,在周期6期间,第三微指令CMP T2, Tl会处理地址层 104。这其中,不需要进行任何运算。再者,在周期6期间,第四微指令DEC ECX会处理寄存器层103。其中,计数寄存器ECX107的内容会从寄存器文 件中读取。此外,在周期6期间,转译层102会产生重复字符串比较运算的 第二次重复所对应的第一微指令POPTl, [ESI]。本领域技术人员将了解到, 在此周期期间,在ESI 107的内容被读取出来,用以指示进行重复字符串比 较运算的第二次重复的前,会进行ESI 107的写入动作。
在周期7期间,P0PT2, [EDI]会处理写回层106。其中,当目的寄存器 EDI 107的内容被写回到寄存器层103,且第二微指令POP Tl, [ESI]完成执 行之后,目的寄存器EDI 107的内容会被递增或递减。再者,在周期7期间, CMPT2,T1会处理数据/ALU层105。其中,T2108与T1 108的内容会进行 比较,并且比较的结果会送到结果寄存器RESLT108,而标志寄存器FLAGS i08会更新,以反映RESLT108的属性。此外,在周期7期间,第四微指令 DECECX会处理地址层104。其中,不需要进行任何运算。此外,在周期7 期间,转译层102会产生重复字符串比较运算的第二次重复所对应的第二微 指令POP T2, [EDI]。本领域技术人员将会了解到,在此周期期间,在EDI 107 的内容被读取出来,用以指示进行重复字符串比较运算的第二次重复的前, 会进行EDI 107的写入动作。
在周期8期间,第四微指令CMP T2, Tl会处理写回层。其中,不需要 进行任何运算,并且重复字符串比较运算的第一次重复会完成。
要注意的是,需要四个微指令来达成重复字符串比较运算的一次重复, 如前所述。其中一个微指令,即DEC ECX,需记录一适当的重复计数值, 而其它的三个微指令(POP Tl, [ESI]、 POP T2, [EDI]及CMP T2, Tl)则需从存 储器110中,载入两个操作数,以执行比较。具体来说,微处理器100的架 构会防止数据/ALU层105执行操作数载入及比较运算。因此,由EDI 107 所指向的第二位置所储存的第二操作数必须送到寄存器T2 108,然后必须产 生后续的指令CMPT2,T1,以比较第一及第二操作数。
本发明己提及重复字符卑比较运算及重复字符串扫描运算系广泛地用 于桌上型或膝上型计算机的现有应用程序。因此,以上配合图1及2所讨论 的管线没有效率会导致执行较慢,从使用者的观点而言,是不利的。在重复字符串扫描运算的情况中,只有一个操作数必须从数据存储器110中提取; 另外的操作数会储存于寄存器EAX107中。因此,为了使重复扫描字符串运
算重复,第二微指令POP T2, [EDI]将会从序列中去除,并且CMP T2, Tl微 指令将由CMP EAX, Tl来取代。而甚至在重复扫描字符串运算的情况中, 架构性的问题仍会阻止ESI 107所指定的第一操作数在相同的管线周期期 间,从存储器110中载入,并与EAX107的内容进行比较。因此,本发明是 要克服上述的问题。本发明(以下配合图3及4进行讨论)通过对微处理器管 线内功能及对应逻辑的新配置,及利用这些新管线特征的对应的弹出比较微 指令,而能从重复弹出比较运算的微指令序列中移除一微指令。
图3为依据本发明绘示的用以进行成对载入比较或弹出比较运算的微处 理器300的方框图。微处理器300具有包括提取逻辑器301的提取层、包括 成对运算转译逻辑器304与微指令队列305的转译层、具有寄存器文件307 的寄存器层、包括载入逻辑器312的载入层,以及包括执行逻辑器318的执 行层。为了清楚起见,图中不显示载入层之前的层(如地址层),以及执行层 后的层(如写回层)。与图1-2所讨论的常用微处理器100相对的是,本发明 的微处理器300已将存储器读取功能配置于用以从数据存储器313中载入操 作数的载入层,其与用以执行算术与逻辑功能的执行层分开。微处理器300 还包括成对运算转译逻辑器304,可有助于利用分离的载入及执行层,以降 低执行成对载入比较及弹出比较功能所需(如当执行由比较字符串或扫描字 符串宏指令所指定的运算时,载入及比较操作数所需)的管线周期的数目。
运作上,提取逻辑器301会从外部存储器302或指令高速缓存302中, 提取宏指令,并且会将这些宏指令送到指令缓冲器303。成对运算转译逻辑 器304会从指令缓冲器303中,接收宏指令,并且会将宏指令转译成对应序 列的微指令,用以指示微处理器300,完成宏指令所指定的运算。每个产生 的微指令会循序地传送到微指令队列中的队列缓冲器306。
若扫描字符串宏指令或比较字符串宏指令从指令缓冲器303中被读取出 来(为了说明方便,在缓冲器303中,显示作为范例的重复扫描字符串宏指令 REP.SCASD),则成对运算转译逻辑器304会将宏指令转译成对应序列的微 指令,以完成指定的运算。对于单一扫描字符串宏指令或单一比较字符串宏 指令而言,对应序列中的一个微指令包括载入比较微指令LDCMP XX, [ESI],
用以指示微处理器,从数据高速缓存303中,载入操作数(其中,操作数的地
址是由寄存器ESI 308(或寄存器EDI 308,若如此指定)的内容来指向),并且 会将此操作数与内部寄存器308、 321中所储存的第二操作数进行比较。在 单一扫描字符串宏指令SCASD的情况中,内部寄存器308位于寄存器文件 307内。在比较字符串宏指令CMPSD的情况中,内部寄存器321是由执行 逻辑器318来存取,并且包含先前已从数据存储器313中读取的第二操作数。 若将重复前置码用于扫描字符串宏指令REP.SCASD,或比较字符串宏指令 REP.CMPSD,则对应序列中的一个微指令包括弹出比较微指令POPCMP XX, [ESI],用以指示微处理器300,执行与上述的载入比较微指令相同的运 算,但此外,对于每次重复,会指示将一指针寄存器(即寄存器ESI 308或 EDI 308)的内容递增或递减,且将-一计数寄存器ECX 308的内容递减。在- 实施例中,寄存器文件逻辑307将上述寄存器308递增或递减。在另一实施 例中,对于每次所指定的重复,会发出明确的微指令,而使寄存器308递增 或递减。
因为存储器数据(亦即第一操作数)的读取以及执行层中第一与第二操作 数的比较两者不再是互斥运算,所以由本发明的单一微指令来指定一成对弹 出比较工作是可行的。事实上,虽然弹出比较运算作为说明本发明内容的手 段,但是本领域技术人员会了解到,本发明的范围可纳入任何形式的成对载 入执行功能,如载入算术、载入逻辑或载入跳跃功能,其中,功能中的计算 所需的操作数必须从存储器313中读取。
寄存器层会从微指令队列305的队列位置306中,依序读取微指令。若 读取的微指令指示要存取寄存器文件307内的寄存器308,则寄存器文件307 会存取指定的寄存器308,并在操作数寄存器310、311中提供其内容。此外, 微指令会被转送到微指令缓冲器309中的下个管线层。
微指令及相关的操作数会经由后面的层,往下传送直到其到达载入层, 其中若由微指令进行如此的指定,则载入逻辑器312会被用来存取数据存储 器313,以读取数据。载入逻辑器312从数据存储器313中读取数据,并送 入读取操作数缓冲器316中,以由执行逻辑器318来存取。寄存器操作数也 会转送到操作数1缓冲器315及操作数2缓冲器317中的执行层。此外,微 指令及其它相关信息会转送到微指令缓冲器314中的执行层。在本发明的弹
出比较微指令POPCMP的特定情况中,载入逻辑器312会存取数据存储器 313,以读取弹出比较运算的操作数,并提供操作数,以由操作数3缓冲器 316中的执行逻辑来存取。
执行逻辑器318会从微指令缓冲器314接收微指令,并从操作数缓冲器 315-317接收相关的操作数数据,且执行指定运算,以产生结果,送到一结 果寄存器320。此外,微指令及相关的信息会经由微指令缓冲器319,而传 送到后续的层。在弹出比较微指令POPCMP的特定情况中,执行逻辑器318 会从操作数3缓冲器316读取操作数,并将其与一第二操作数进行比较,该 第二操作数为l)由一寄存器文件寄存器308所提供(在扫描字符串运算的情 况中),或2)由寄存器T1321所提供(在比较字符串运算的情况中,其中一先 前的载入微指令已指示微处理器300,从数据存储器313载入第二操作数, 并将其储存于T1 321中)。比较运算的结果会送到结果寄存器320,并且标 志寄存器FLAGS 322会被更新,以反映结果的属性。在一实施例中,扫描字 符串指令系x86扫描字符串宏指令,而比较运算包含取得以下两者间的差值 存于架构性寄存器EAX30S的第一操作数,与读取自数据存储器313且由架 构性寄存器EDI 308的内容所指向的第二操作数。在另一实施例中,比较字 符串指令是x86比较字符串宏指令,而比较运算包含取得以下两者间的差值 读取自数据存储器313且由架构性寄存器ESI 308的内容所指向的第一操作 数,与读取自数据存储器313且由架构性寄存器EDI 308的内容所指向的第 二操作数。
图4为一表格400,其显示由图3的微处理器300来执行重复比较字符 串宏指令。表400有七行,每一行对应于前述图3所讨论的各个相关管线层 以及一周期行,此周期行用来显示指令传经微处理器300的管线层时所对应 的管线周期。虽然为了清楚起见,未将地址层显示于图3的方块图中,但是 地址层行会显示于表400中,以说明相关微指令的执行情形。再者,为了清 楚起见,表400只显示了本发明的微处理器300的管线中,到执行层为止的 管线层。与前述讨论图2的表200时类似,所关注的指令明确地显示于提取 -执行行中;与本发明不相关的先前及后续指令则显示为「--」。
图4的例子描述了本发明的管线微处理器300如何克服常用微处理器 100的限制,这些限制会衍生多个微指令的需求,以完成互斥的子运算。在
图4的例子中,这些子运算与特定x86重复比较字符串宏指令REPE.CMPSD 所指定的运算有关,然而,此处特定宏指令仅是用来作为范例以说明本发明 的内容。值得注意的是,本发明可应用于其它的微处理器指令集架构及复杂 的宏指令,在其中需要于载入操作数后进行计算动作。
在周期1期间,提取逻辑器301会从指令存储器302中,读取或提取具 重复前置码的比较字符串宏指令REPE.CMPSD。如前述关于图2部分所提及 的,此处在管线微处理系统的脉络下所使用的"存储器"302 —词,可应用 于任何形式的可编程或中间的程序储存媒体,包括盘片、只读存储器(ROM)、 随机存取存储器(RAM)、芯片外及芯片上的高速缓存等。宏运算码(CMPSD) 会指示微处理器300执行两个操作数的比较。此两个操作数位于数据存储器 313中。第一操作数位于由寄存器ESI 308的内容所指定的第一操作数地址, 而第二操作数则位于由寄存器EDI 308的内容所指定的第二操作数地址。在 寄存器ECX 308内,指定了比较运算要重复执行的次数。在第一次重复执行 结束时,于比较第一及第二操作数之后,REPE.CMPSD会指示微处理器300, 将标志寄存器FLAGS 322内的位更新,以显示比较结果的属性,如其是否等 于O(由标志寄存器FLAGS 322内的零标志(图中未显示)来显示),或结果是 否会产生进位(由标志寄存器FLAGS 322内的进位标志(图中未显示)来显 示)。在此特定例子中,REPE前置码会检查零标志的状态,若零标志显示两 个所比较的操作数不相等,则会停止重复动作。
重复比较字符串指令REPE.CMPSD会比较数据存储器313的区块,以 判断其是否相等。重复扫描字符串指令REPE.SCASD则指示微处理器300, 扫描一数据存储器313,其起始地址由寄存器ESI 308指定,而扫描次数则 由寄存器ECX 308指定,并且,比较数据存储器313与寄存器EAX 308的 内容。在第一次比较后,字符串指针寄存器(在扫描字符串运算的情况下为 ESI 308;在比较字符串运算的情况下则为ESI 308及EDI 308)的内容会根据 一字节数目而递增或递减。此字节数目可供字符串比较或字符串扫描运算于 进行下一次重复时,指向每一字符串内新数据项的位置。在x86兼容的微处 理器中,FLAGS 108内的方向标志(未显示)会判断字符串指针寄存器是否递 增或递减。此外,在x86兼容的微处理器中,扫描字符串指令或比较字符串 指令的特定编码方式会指示微处理器去比较字节、字组或双字组,以此决定
字符串指针寄存器308所要递增或递减的量。再者,在每次重复后,寄存器 ECX的内容会递减。当寄存器ECX 308递减为零,或当重复的条件不再满 足时,重复字符串扫描及字符串比较的重复执行就会停止。在此例中,若零 标志显示两个比较操作数不相等,则重复字符串比较运算即停止。
在周期2期间,重复比较字符串宏指令(REPE.CMPSD)会处理转译层 102。其中,重复比较字符串宏指令(REPE.CMPSD)被转译成具有三个微指令 的重复序列。第一微指令(POP Tl, [ESI])会指示微处理器300: l)从寄存器 ESI 308中,读取数据存储器313中的第一操作数的第一地址,2)递增或递减 ESI 308的内容,以指向下次重复该比较运算时所用的下个第一操作数,3) 使用ESI 308所提供的地址,从数据存储器313中,读取第一操作数,以及 4)将读取的第一操作数储存于寄存器T1 321中。第二微指令(POPCMP [EDI], Tl))会指示微处理器300: 1)从寄存器EDI 308中,读取数据存储器313中的 第二操作数的第二地址,2)递增或递减EDI 308的内容,以指向下次重复该 比较运算吋所用的下个第二操作数,3)使用EDI 308所提供的地址,从数据 存储器313中,读取第二操作数,4)将读取的第二操作数,与储存于寄存器 TI 321的第一操作数进行比较,以及5)产生比较结果于结果寄存器RESLT 320中,并基于结果的属性,来更新标志寄存器FLAGS 322。在一实施例中, 计算两个操作数的差值以产生比较结果。第三微指令(DEC ECX)会指示微处 理器300,递减计数寄存器ECX 308,而完成一次重复序列的执行。在一实 施例中,明确的微指令DECECX用来指示微处理器300,将计数寄存器3()8 递减。在另一实施例中,在每次重复执行期间,如微运算码POPCMP,或弹 出比较微指令POPCMP [EDI], Tl所指示的,计数寄存器ECX 308会自动被 递减。重复序列会持续执行,直到转译逻辑304从执行逻辑器318中,接收 到重复条件不为真(在此例中,即零标志显示RESLT320的内容不为零)或预 定重复次数已完成的信号(未显示)。
与常用微处理器100不同的是,本发明的微处理器300只需要将重复字 符串比较宏指令REPE.CMPSD所指定的弹出比较运算拆解成三个微指令 POP Tl, [ESI]、 POPCMP [EDI], Tl以及DEC ECX,且因为载入及比较运算 被配置到不同的层(即载入层及执行层),所以两者不再是互斥。因此,当弹 出比较运算执行于本发明的微处理器300时,会变成单一周期运算。由于弹
出比较运算是由单一弹出比较微指令POPCMP(其在单一管线周期中,会处 理本发明的微处理器300的每个层)来达成,所以此运算称为单--周期运算。
因此,在周期2期间,成对运算转译器304会产生第一微指令POP Tl, [ESI]。再者,在周期2期间,因为转译逻辑304需要额外的管线周期,以产 生重复序列中的其它微指令,所以停顿(STALL)信号会送到提取逻辑器301 , 以避免提取后续的指令。
在周期3期间,第一微指令P0PT1,[ESI]会处理寄存器层。其中,寄存 器ESI 308会被存取,以读取第一操作数的第一地址。再者,在周期3期间, 转译层102会产生弹出比较微指令POPCMP [EDI],T1。此外,在周期3期间, 停顿会持续,以避免提取逻辑器301将后续指令送到转译器304。
在周期4期间,P0PT1,[ESI]会处理地址层104(图3中未显示)。其中, 会转译在周期3期间读取自ESI 308的第一地址,而送到数据存储器313, 类似于图2例子所叙述的运算。再者,在周期4期间,弹出比较微指令 P0PCMP[EDI],T1会处理寄存器层。其中,会存取寄存器EDI 308,以读取 第二操作数的第二地址。此外,在周期4期间,第三微指令DEC ECX会由 成对运算转译逻辑器304产生。再者,在周期4期间,停顿会持续,以避免 提取逻辑器301将后续指令送到转译逻辑304。
在周期5期间,POP Tl, [ESI]会处理载入层。其中,会使用地址层104 所提供的转译后的第一地址,来存取数据存储器313中的第一位置,以读取 用于弹出比较运算的第一操作数,并且第操作数会传送到操作数缓冲器3 316中的执行层。再者,在周期5期间,POPCMP [EDI],T1会处理地址层104。 其中,会转译在周期4期间,读取自EDI 308的第二地址,而送到313。此 外,在周期5期间,第三微指令DEC ECX会处理寄存器层。其中,寄存器 ECX 308的内容从寄存器文件307中读取,并被送到操作数寄存器310、 3]
其中之一。在一实施例中,ECX 308的内容会被传送到执行逻辑器318,以 进行递减,并写入至寄存器ECX 308。在另一实施例中,寄存器逻辑307被 组态为不需要传送到执行逻辑器318,即递减ECX 308。并且,如上所述, 本发明的第三实施例于执行弹出比较微指令的运算码POPCMP时,ECX308 即可自动递减。此外,在周期5期间,转译逻辑304会产生重复字符串比较 运算的第二次重复所需的第一微指令P0PT1, [ESI]。本领域技术人员将了解到,寄存器ESI 308递增(或递减)的内容,可通过此处所讨论的实施例来提 供,或由常用的旁路总线技术来提供,此技术用以将一层的结果传送到先前
的层。再者,在周期5期间,停顿会持续,以避免提取逻辑器301将后续指 令送到转译逻辑304。
在周期6期间,P0PT1, [ESI]会处理微处理器300的执行层。其中,执 行逻辑器318会从缓冲器316读取第一操作数,并将其储存,用以在寄存器 Tl 32中之后续管线周期期间进行比较。再者,在周期6期间,P0PCMP [EDI] Tl会处理载入层。其中,会使用由地址层所提供的转译后的第二地址,来存 取数据高速缓313中的第二位置,以读取用于弹出比较运算的第二操作数, 并且第二操作数会被传送到缓冲器316中的执行逻辑器318。此外,在周期 6期间,第三微指令DECECX会处理地址层104。此外,在周期6期间,第 二次重复所对应的第一微指令会处理寄存器层,并且转译逻辑304会产生:t 复字符串比较运算的第二次重复所对应的第二弹出比较微指令POPCMP [EDI], Tl 。
在周期7期间,POPCMP [EDI], Tl会处理执行层。其中,执行逻辑器 318从寄存器Tl 321接收第一操作数,并从缓冲器316接收第二操作数,再 对此两个操作数进行比较。比较的结果会被送到结果寄存器320,且FLAGS 322会被更新,因而完成该比较字符串运算的第一次重复。再者,在周期7 期间,DEC ECX会处理载入层。其中,不需要进行任何运算。此外,在周 期7期间,该比较字符串运算的第二次重复所对应的微指令会处理转译层、 寄存器层以及地址层。
在管线频率的后续周期期间,重复比较字符串运算的后续次重复所对应 的微指令,会处理本发明的微处理器300的各个连续层,直到重复条件不再 为真,或是计数寄存器ECX 308变为零。
与常用微处理器IOO不同的是,根据本发明来执行重复比较字符串或扫 描字符串运算不需要额外的寄存器储存(如图2例子中的寄存器T2)。并且, 在单一管线周期中,会使用单一微指令POPCMP来执行成对弹出比较运算, 因此可改善比较字符串及扫描字符串运算的整体效率。
虽然本发明及其目的、特征与优点已详细叙述,其它实施例亦可包含在 本发明的范围内。例如,前文有提到,执行单一或重复扫描字符串运算或比
较字符串运算所需的微指令及对应管线周期的数量,可藉由采用本发明的有 利特征的而显著地降低。然而,任何型式的载入-执行运算,如载入-相加、 载入-相减及载入-逻辑运算,亦可享受到相同的好处。
此外,虽然前文是依据x86兼容的微处理器架构的宏指令来进行说明, 但本领域技术人员会了解到,对于其管线层将载入及执行功能归入两个连续 子运算的任何管线架构,本发明皆可适用。
总之,以上所述仅为本发明的较佳实施例而己,当不能以之限定本发明 所实施的范围。大凡依本发明权利要求所作的均等变化与修饰,皆应仍属于 本发明专利涵盖的范围内。
权利要求
1.一种在微处理器中用以执行一重复弹出比较运算的装置,包括一成对运算转译逻辑器,用以接收该重复弹出比较运算的一宏指令,并产生一弹出微指令、一弹出比较微指令、一递减微指令,其中,该弹出微指令指示一微处理器中的管线层执行弹出运算,该弹出比较微指令指示一微处理器中的管线层执行弹出比较运算,该递增或递减微指令执行对计数寄存器的递增或递减运算;一载入逻辑器,耦接至该成对运算转译逻辑器,用以接收该弹出比较微指令,并从存储器的一地址读取一第二操作数,其中,该地址由第二寄存器的内容所指定,该第二寄存器由该弹出比较微指令指定;以及一执行逻辑器,耦接至该载入逻辑器,用以接收该第二操作数,并将该第二操作数与一第一操作数进行比较,该第一操作数是由所述转译得到的多个微指令之中的弹出微指令读取的,其中,该载入逻辑器包括该管线层中的一第一层,而该执行逻辑器包括该管线层中的一第二层,其中,该第二层位于该第一层之后,该弹出比较微指令于一单一管线周期中处理该第一层与该第二层其中之一。
2. 如权利要求1所述的装置,其中,该弹出比较微指令指示该载入逻 辑器读取该第二操作数,并指示该执行逻辑器将该第二操作数与该第一操作 数进行比较。
3. 如权利要求I所述的装置,其中,该第一层将该第二操作数及该弹 出比较微指令传送到该第二层,以进行该第二操作数与该第一操作数的比
4. 如权利要求1所述的装置,其中,该执行逻辑器根据该第二操作数 与该第一操作数的一比较结果,更新一标志寄存器。
5. 如权利要求4所述的装置,其中,该标志寄存器包括-一零标志、--进位标志及一溢位标志。
6. 如权利要求1所述的装置,其中,该执行逻辑器同时递增或递减该 第二寄存器的该内容,使该内容指向该存储器中下一个地址,以供该执行逻 辑器于下一个弹出比较运算期间进行比较。
7 . —种在一微处理器中用以执行一扫描字符串指令或一 比较字符串指 令的装置,包括一成对运算转译器,组态为将该扫描字符串指令或该比较字符串指令转 译成对应的多个微指令,其中,该对应的多个微指令包括一弹出微指令以及 一弹出比较微指令,其中该弹出微指令指示一微处理器中的管线层执行弹出 运算,该弹出比较微指令指示该微处理器执行两种运算,其中该两种运算由 该微处理器的两个连续层执行,该两个连续层包括一载入层,组态为执行该两种运算中的一第一运算,该第一运算包括从 存储器之一位置读取一第二操作数;以及一执行层,耦接至该载入层,组态为执行该两种运算中的一第二运算,该第二运算包括接收该第二操作数,并将该第二操作数与一第一操作数进行比较,以产生一结果,其中该第一操作数是由所述转译得到的多个微指令之中的弹出微指令读取的,其中,在该微处理器中,该执行层跟随该载入层,该弹出比较微指令是于一单一管线周期中处理该载入层与该执行层 其中之一。
8. 如权利要求7所述的装置,其中,该载入层将该第二操作数及该弹 出比较微指令传送到该执行层,以进行该第二操作数与该第一操作数的比
9. 如权利要求8所述的装置,其中,该执行层依据该结果更新一标志寄存器。
10. 如权利要求7所述的装置,其中,该执行层同时递增或递减一寄存 器的内容,使该内容指向该存储器的下一个地址,该存储器的该地址存储有 下一个操作数,以供该执行层于下一个弹出比较运算期间进行比较。
11. 一种在一管线微处理器中用以执行一重复弹出比较运算的系统,包括一转译逻辑器,该转译逻辑器接收及转译该重复弹出比较运算的一宏指 令,并产生一弹出微指令、 一弹出比较微指令、 一递减微指令;以及一载入逻辑器,组态为接收该弹出比较微指令,并从一存储器位置读取一第二操作数,且将该第二操作数传送到该管线微处理器的一后续层中的执行逻辑器,其中,该执行逻辑器在一单一管线周期中比较该第二操作数与一第一操作数,并产生一比较结果,该第一操作数是由所述转译得到的多个微指令之中的弹出微指令读取的,其中,该弹出比较微指令是于一单一管线周期中处理该载入层。
12.如权利要求11所述的系统,其中,该弹出比较微指令指示该载入 逻辑器读取该第二操作数,并指示该执行逻辑器比较该第二操作数与该第一 操作数。
全文摘要
本发明提出一种微处理器中用以执行弹出比较微指令的装置及系统,用以执行弹出比较运算。此微处理器中的装置包括成对运算转译逻辑器、载入逻辑器及执行逻辑器。成对运算转译逻辑器接收一指定弹出比较运算的宏指令,并产生弹出比较微指令。弹出比较微指令会指示微处理器中的管线层执行弹出比较运算。载入逻辑器耦接至成对运算转译逻辑器,用以接收弹出比较微指令,并从存储器的一地址中,读取第一操作数,其中,此地址由一寄存器的内容所指定。此寄存器由弹出比较微指令来指定。执行逻辑器则耦接至载入逻辑器,用以接收第一操作数,并将第一操作数与一第二操作数进行比较。
文档编号G06F9/28GK101349969SQ20081013384
公开日2009年1月21日 申请日期2004年4月1日 优先权日2004年4月1日
发明者G·葛兰·亨利, 泰瑞·派克斯, 葛拉·M·柯尔 申请人:智慧第一公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1