首页> 中国专利> 运算数的提早有条件选择

运算数的提早有条件选择

摘要

基于提早认识到完成选择运算数指令的处理并不要求所述选择运算数指令将不使用的运算数,减轻了由于等待此类运算数数据而产生的延迟。在执行之前的适当点,进行关于由所述选择运算数指令所指定的一或多个选择标准、影响所述选择标准的条件和运算数的可用性的确定。保持电路使用所述确定来控制保持信号的激活和释放,所述保持信号控制处理器管线暂停。如果所述选定运算数可用,即使将不使用的另一运算数不可用,那么也跳过等待运算数数据所需要的暂停,或提早终止暂停。维持由于等待运算数而产生的暂停,直到满足所述选择标准并提取所述选定运算数且所述选定运算数为可用为止。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-07-15

    授权

    授权

  • 2009-04-15

    实质审查的生效

    实质审查的生效

  • 2009-02-18

    公开

    公开

说明书

技术领域

本发明大体上涉及用于在处理器管线中处理指令的技术,且更明确地说,涉及基于 由在管线处理器中操作的前一指令所设置的条件而从多个运算数提早有条件地选择运 算数。

背景技术

例如手机、膝上型计算机、个人数据助理(PDA)或类似产品的常见便携式产品要 求使用执行支持通信和多媒体应用的程序的处理器。用于此类产品的处理系统包含处理 器、指令来源、输入运算数的来源和用于存储执行结果的存储空间。举例来说,指令和 输入运算数可存储在由通用寄存器和高速缓冲存储器的多层(包含例如指令高速缓冲存 储器、数据高速缓冲存储器和系统存储器)组成的分层存储器配置中。

为了提供程序执行时的高性能,处理器通常在针对应用和用以制造处理器的工艺技 术而优化的管线中执行指令。在高性能处理器中,从存储装置存取运算数的速率趋向于 比处理器指令执行速率慢。因此,从存储装置获得指令指定的运算数可导致处理器暂停 一个或一个以上循环,以解决存储装置存取时间与处理器时钟循环时间的差异。此外, 往往发生以下状况:指令指定的源运算数是执行前一指令的结果。在多级执行管线中, 要求前一执行结果的指令必须被暂停,直到完成前一指令的执行为止。这些暂停限制处 理器的性能。

发明内容

在本发明的若干方面中,本发明认识到,本发明通常有利于使在执行指令时可能发 生的暂停的数目最小化。因此,可能希望实施选择运算数指令,其使暂停最小化且有助 于避免在例如支持通信和多媒体应用的程序的程序中分支指令的使用或使分支指令的 使用最小化。对处理器的此类改进提供操作处理器时的改进的性能和效率。

本发明的一实施例应用于一种管线操作方法。所述方法涉及检测指定将要从至少两 个运算数的群组中选择至少一个运算数的指令,所述至少两个运算数中的至少一者可能 正在管线中运行。随后另一步骤是确定由指令所指定的运算数选择标准。一旦确定选择 标准,接着就评估所述选择标准以便从至少两个运算数的群组中选择至少一个运算数。 一旦所述至少一个选定运算数可用,接着就提交指令以供执行,而无需等待非选定运算 数变为可用。

本发明的另一方面提出一种用于在管线处理器中处理指令的设备。所述设备包含执 行级,其用于使用多个指令中的每一指令所要求的输入运算数数据来执行指令。使用保 持电路,其针对每一指令而产生保持,直到接收到所有输入运算数数据为止,借此完成 保持。所述设备还包含用于在完成接收输入运算数数据之前确定将要选择的运算数数据 且在确定选定运算数数据可用后相对于执行中的指令中所指定的选择标准而终止保持 的装置。

从以下具体实施方式和附图中将了解对本文中所揭示的发明概念以及进一步特征 的更完整理解。

附图说明

图1是其中可采用本发明的实施例的示范性无线通信系统的框图;

图2A是根据本发明的第一实施例其中可采用运算数函数的有条件选择的管线复合 处理器的功能框图;

图2B是根据本发明识别用于在进入处理器的执行级之前确定何时暂停处理器管线 的条件的决策表;

图2C是根据本发明的第二实施例其中可采用压缩数据运算数函数的有条件选择的 管线复合处理器的功能框图;

图3是根据本发明指定有条件的运算数选择函数的32位指令的一般格式的图形说 明;以及

图4是根据本发明在管线中提早有条件地选择运算数所要求的操作步骤的流程图。

具体实施方式

现将参看附图来更充分地描述本发明,附图中展示本发明的若干实施例。然而,本 发明可以各种形式来体现且不应理解为限于本文中所陈述的实施例。事实上,提供这些 实施例,以使得本发明将是详尽且完整的且将把本发明的范围充分地传达给所属领域的 技术人员。

最初,可用例如C、C++、、Smalltalk、、Visual 、TSQL、 Perl等高级编程语言或用各种其它编程语言来编写根据本发明的教示将要被操作或用于 执行操作的计算机程序代码或“程序代码”。将用这些语言中的一种语言编写的程序编 译成将高级程序代码转换成本地汇编程序的目标处理器结构。也可直接用本地汇编语言 来编写目标处理器结构的程序。本地汇编程序使用机器层二进制指令的指令记忆表示。 如本文中所使用的程序代码或计算机可读媒体指代机器语言代码,例如,处理器可理解 其格式的目标代码。

图1是其中可采用本发明的实施例的示范性无线通信系统100的框图。出于说明的 目的,图1展示三个远程单元120、130和150以及两个基站140。将认识到,常见的无 线通信系统可具有额外远程单元和基站。远程单元120、130和150分别包含硬件组件 125A、125B和125C,其具有用于根据本发明执行程序代码并操作的处理器。图1展示 从基站140到远程单元120、130和150的前向链路信号180,和从远程单元120、130 和150到基站140的反向链路信号190。

在图1中,远程单元120展示为移动电话、远程单元130展示为便携式计算机,且 远程单元150展示为无线本地环路系统中的固定位置远程单元。举例来说,远程单元可 以是手持式个人通信系统(PCS)单元、例如个人数据助理的便携式数据单元,或例如 仪表读数设备的固定位置数据单元。虽然图1说明根据本发明的教示的远程单元,但本 发明并不限于所说明的这些示范性单元。举例来说,通常,改进的处理效率不仅仅是如 所说明的远程装置的理想特征,而且是具有内部处理器的大多数产品的理想特征。可通 过具有其中根据本发明有条件地选择源运算数的指令来在管线处理器中获得有效执行 指令时的改进。

处理器通常使用对指令指定的运算数进行操作的不同指令集。加载、存储、加法、 乘法、移位、选择、AND(与)和OR(或)指令是可在指令集结构中提供的指令的实 例。选择指令是其中可从两个或两个以上运算数的选择项有条件地选择运算数且将选定 运算数存储到目标寄存器地址的指令的实例。为了有效地执行选择指令,在使由处理器 暂停导致的所损失的时间最少的情况下对关于选择哪个运算数的确定和提取操作进行 处理。

图2A是其中可采用运算数函数的有条件选择的示范性管线复合处理器200的功能 框图。复合处理器200包含处理器管线202、L1指令高速缓冲存储器204、L2数据高速 缓冲存储器206和存储器层级208。为了讨论的清楚性,未展示可连接到复合处理器的 外围装置。根据本发明的第一实施例,复合处理器200可适当地用于硬件组件125A到 125C中以执行存储在存储器层级208中的程序代码。

处理器管线202包含五个主要级:指令提取级210、解码级212、读取寄存器级214、 执行级216和写回级218。所属领域的技术人员将认识到,这些级中的任一者可分成执 行有关功能的若干部分的多个级,或者,管线可包含用于提供额外功能性的其它级。出 于讨论的目的,虽然针对高速设计每一级可分成两个或两个以上级,但仍将主要级中的 若干级展示为单个级。举例来说,执行级216分成三个子级:执行A220、执行B222 和执行C224。

虽然展示单个处理器管线202,但具有有条件地选择的运算数的指令的处理可应用 于超标量设计和实施并行管线的其它结构。替代实施方案中支持运算数指令的有条件选 择的处理器可具有比处理器管线202多或少的级。举例来说,针对高时钟速率而设计的 超标量处理器可具有两个或两个以上并行管线,且每一管线可将指令提取级210、解码 级212、读取寄存器级214、执行A级220、执行B级222、执行C级224以及写回级 218分成两个或两个以上管线级,从而增加总的处理器管线深度以便支持高时钟速率。

在处理器管线202中,第一级是指令提取级210。指令提取级210从L1指令高速缓 冲存储器204提取指令以供由稍后级处理。如果在L1指令高速缓冲存储器204中指令 提取未中(miss),那么从可包含第2层(L2)高速缓冲存储器和主存储器的存储器层 级208提取指令。可将来自例如启动只读存储器(ROM)、硬盘、光盘等其它来源或来 自例如因特网等外部接口的指令加载到主存储器。

指令提取级210将经提取的每一指令供应到解码级212。解码级212将指令解码成 供应到管线的接下来的级的控制位的集合且可在解码中支持与经提取的指令的执行相 关的额外操作。

可采用选择运算数类型指令的一般形式且在例如处理器管线202中执行,以便避免 分支且以便在处理之前操纵数据或合并数据,如下文进一步描述。举例来说,加载、存 储、算术、逻辑、移位、比较、位操纵指令和类似指令可添加有运算数选择函数,以便 有条件地处理运算数数据。在选择运算数加载指令和选择运算数存储指令中,在存储在 通用寄存器(GPR)堆和引用为GPR寄存器地址的至少两个存储器基址之间进行选择。 在选定加法指令中,从至少两个运算数的选择项选择运算数且将选定运算数与另一运算 数相加。在选择运算数指令的一般形式中,可基于所满足的一或多个选择标准而从运算 数的一较大群组中选择一个运算数或运算数的一个群组。将选定运算数或运算数的群组 供应到执行路径以供如由选择运算数指令所指示的进一步处理。应注意,可将一个或一 个以上标准用作用于确定选择的标准。选择运算数类型指令的一般形式的子集是选择指 令,其中从两个寄存器运算数有条件地选择运算数且将选定运算数存储到目标寄存器地 址。选择运算数指令的另一形式是指定寄存器运算数与中间值之间的选择项的指令。

另一实例是用于从两个或两个以上运算数区块(如在向量处理器中可能会使用)的 选择项选择运算数区块的选择运算数指令。由选择运算数指令中的含有指向区块开始处 的指针的字段引用每一运算数区块。另外,一般选择标准可指定例如可从多个位选择标 准获得的两个以上选择项。选择标准可指定将要从较大群组选择哪些运算数,将要选择 的运算数的数目,或如由处理器的指令集结构所指定的其它选择机制。

在执行如指令集结构中通常所指定的各种算术、逻辑和其它函数指令时,可从由处 理器设置的条件旗标产生用于确定运算数选择的条件。举例来说,负(N)位226针对 那些影响N位的指令指示执行结果是否为负。零(Z)位228针对那些影响Z位的指令 指示执行结果是否全为零。进位(C)位230针对那些影响C位的指令指示执行结果是 否涉及进位输出。溢出(V)位232针对那些影响V位的指令指示执行结果是否溢出。 这些位可存储在旗标寄存器或条件码(CC)寄存器234中,所述寄存器也可以是程序状 态寄存器的一部分。

可由各种执行级来设置条件码位,但维持改变条件码位的程序次序。举例来说,可 在执行A级220中完成例如加法、逻辑运算、位选择、地址产生和类似运算等特定运算。 这些执行A级220指令也可经指定以影响条件码寄存器234,且可在执行结束时在路径 240上发送受影响的条件码位。更复杂的运算(例如,具有寄存器移位指令的算术逻辑 单元(ALU)运算中所指定)可分成两个单独运算步骤。第一运算步骤在执行A级220 中完成,而第二运算步骤在执行B级222中完成。在完成执行B级222中的指令执行时, 可在路径242上发送对条件码寄存器234的改变。具有更复杂性质的运算可采用额外执 行级来完成。举例来说,乘法指令可采用三个级(执行A级220、执行B级222和执行 C级224)来完成乘法运算。在完成第三级时,条件码寄存器234可再次受通过路径244 发送的适当位影响。由于因执行长度的变化的缘故指令可以不同于程序次序的次序完 成,所以根据程序次序来设置条件码寄存器234中的位。出于说明的目的,用于控制条 件寄存器234位的设置的设施包含在CC控制逻辑246中。

选择运算数指令的处理可在解码级212中开始。解码级首先确定运算数选择标准, 而不是等待提取了所有运算数才确定运算数选择标准状态。为了确定运算数选择标准, 管线必须经检查以确定管线中是否已存在可影响运算数选择标准的任何指令。由于影响 条件码寄存器的指令可影响寄存器中的仅一位、所有位或位的某一组合,所以解码如由 选择运算数指令所指定的运算数选择标准以确定要求条件码寄存器中的位的什么组合。 举例来说,如果前一结果是零且设置了Z位228,那么可选择一个运算数,而如果没有 设置Z位,那么可选择不同运算数。可通过检查N位226和Z位228两者来查看所述 两者是否都设置为“0”而获得更复杂的选择标准(例如,如果前一计算导致正的非零 结果,那么选择一运算数)。通过条件码(CC)路径248将条件寄存器234值转发到其 中可对条件码位进行监视的解码级212、读取寄存器级214和执行A级220。

在解码级212中存在一选择运算数指令的情况下,可在处理器管线202中存在处于 所述选择运算数指令之前的多达四个额外指令。这四个额外指令中的三个可以在各种执 行级中。如果具有可影响相同条件码位的指令的多个执行级同时在操作中,那么执行的 程序次序指出哪个指令在设置条件码位方面具有优先权。由前视(look ahead)过程确 定影响用于运算数选择标准中的条件码位的在选择运算数指令之前的最后指令。

前视过程也在解码中开始,其中从穿过管线的每一指令解码控制位。控制位的一部 分指出指令将要影响哪些条件位(如果存在)。每一经解码的指令的控制位跟随穿过管 线的指令指定的运算,以使得每一管线级可经检查以确定所述运算级是否将要影响条件 码寄存器234。作为一实例,前视可在每一管线执行级中作为特定控制位的OR而操作。 此方法在管线执行级中没有指令影响一个或多个有关条件位的状况下可用作快速测试。 由于控制位可用于管线的每一执行级,所以也可在条件寄存器可受到影响时确定控制 位。

如果管线执行级中没有指令影响一个或多个有关条件位,那么在解码级中存在可用 于确定运算数选择标准的足够信息。一旦确定将要选择哪个运算数,处理就继续到下一 读取寄存器级214,其被给予控制信息以仅提取选定运算数。

如果管线执行级中的至少一个指令影响一个或多个有关条件位,那么处理继续到下 一读取寄存器级214,其被给予控制信息以提取选择运算数指令所要求的所有运算数。 在提取所有运算数时监视选择标准的确定。可在已提取所有运算数之前确定选择标准, 此举可用来缩短暂停时间,如下文进一步详细描述。

读取寄存器级214提取要求在例如执行A级220中处理的运算数。可从通用寄存器 (GPR)堆250或从转发网络(未图示)提取运算数。转发网络提供围绕GPR堆250的 快速路径,以便如同可从执行级获得结果运算数一样快地供应结果运算数。即使通过转 发网络,来自深执行管线的结果运算数仍可如同在处理器管线202中一样花费三个循环, 或在替代实施方案中花费三个以上循环。在这些循环期间,要求来自执行管线的结果运 算数数据的读取寄存器级214中的指令必须等待,直到结果运算数可用为止。

必须解决的暂停情形的另一实例与加载指令的执行一起发生。如果在L1数据高速 缓冲存储器206中存在未中,那么加载指令的执行可花费大量循环。加载指令可使用 GPR堆250寄存器来供应基址且在执行A级220中向基址添加中间值以产生有效地址。 可通过数据路径252将有效地址发送到L1数据高速缓冲存储器206。在L1数据高速缓 冲存储器206中存在未中的情况下,必须从可包含L2高速缓冲存储器和主存储器的存 储器层级208提取数据。在L1数据高速缓冲存储器未中之后提取数据所花费的循环期 间,要求运行中加载数据作为源运算数的指令在管线中暂停,直到运行中运算数可用为 止。暂停可视为在读取寄存器级214中或在执行A级220的开始时发生。在解决未中后, 在路径254上将加载数据转发到写回操作,所述写回操作可视为写回级218的一部分。 接着将运算数写入到GPR堆,且也可将运算数发送到转发网络。由加载操作所引起的 选择运算数指令的执行的暂停效应可得以最小化,如下文所讨论。

应注意,在一些处理器管线中,可在已开始寄存器堆存取之后发生选择标准的评估。 在这种状况下,当确定不需要且尚未接收到运算数时,指令的处理停止追踪运算数正在 哪里运行,或处理器停止向转发网络“收听”指示运算数可用的标记。与提取操作相比, 此程序是较被动的操作。每一方法可在本发明的教示内操作。

图2B是识别用于在进入处理器的执行级之前确定何时暂停处理器管线的条件的示 范性决策表265。正被评估的管线中的指令是指定从两个运算数选择项(运算数A和运 算数B)选择一个运算数的选择运算数指令。在列266和267中分别展示运算数B和运 算数A的可用性。表265基于选择标准将经确定以选择运算数A的情形。如果运算数 指示为可用,那么获得运算数并不要求额外循环。在列268中展示选择标准的状态。如 在列269中所展示,提取操作经指定以获得不可用的一个或两个运算数。运算数可为可 用的而无需暂停管线,如由转发网络提供或来自GPR堆。如果无法确定选择标准(不 可用),那么认为是由于管线中的可影响选择标准的至少一个指令的缘故。如果完成执 行的输入(包含运算数和选择标准)不可用,那么管线暂停,如在暂停列270中所展示。 由表的各行指示一般操作情形。

行271指示,两个运算数A和运算数B都不可用且选择标准也不可用。管线在读取 运算数级中暂停,同时提取两个运算数且监视一或多个选择标准条件位。行272指示, 在两个运算数变为可用之前确定了选择标准,在这种状况下,知道不需要运算数B。如 果例如在行271的情形下运算数B的提取已开始,那么可安全地终止运算数B的提取。 管线在读取级中暂停,以等待运算数A变为可用。如果运算数A或运算数B在确定选 择标准之前变为可用,如在行273和275的情形下,那么处理在读取级中维持暂停,以 等待另一运算数变为可用,或等待选择标准被确定,因为选择标准可能会影响运算数提 取操作。如果两个运算数均可用或在管线暂停已开始之后但在确定选择标准之前变为可 用,如在277的情形下,那么处理在读取级中维持暂停,以等待选择标准被确定。如果 在读取暂停已开始之后确定选择标准,且运算数A可用但运算数B不可用,如在行274 的情形下,那么终止运算数B的提取且处理在执行级中继续。如果处理在没有暂停的情 况下到达例如行274的情形,那么在读取寄存器级中将不要求暂停,因为输入可用,且 处理在执行级中继续。如果在读取暂停已开始之后确定选择标准,且运算数B可用但运 算数A不可用,如在行276的情形下,那么暂停继续,直到运算数A变为可用为止。 如果处理在没有暂停的情况下到达例如行276的情形,那么在读取寄存器级中将要求暂 停,因为运算数A不可用。如果运算数和选择标准两者都可用,那么不要求管线暂停且 处理在执行级中继续。

如本文中所教示,如果选定运算数可用,即使将不被使用的另一运算数不可用,那 么开始执行的选择运算数指令也将跳过等待运算数数据将要求的暂停,或将引起暂停的 提前终止。维持由于等待选择运算数指令的运算数而引起的暂停,直到确定了选择标准 并提取了选定运算数且选定运算数为可用为止。

一旦运算数可用于处理,就进入执行级。对于基于选择标准而在两个GPR堆运算 数中选择且将选定运算数存储到目标GPR堆地址的选择指令,操作可绕过执行级且将 选定运算数转发到写回级218和转发网络(未图示)。通常存在结果转发网络(未图示), 以便将每一执行级的结果转发到穿过管线的稍后指令。对于一般选择运算数指令,将选 定运算数转发到执行A级220,以便开始执行级处理。

每一执行级可完成指令的处理或可视指令指定的操作的复杂性而仅处理所需操作 的一部分。当每一执行级完成其操作时,可直接将结果发送到写回级218。举例来说, 如果指令在执行A级220结束时完成其指定操作,那么通过路径252将结果转发到写回 级218。同样,在执行B级222结束时完成其操作的指令通过路径258将其结果转发到 写回级218,且在执行C级224结束时完成其操作的那些指令通过路径260将其结果转 发到写回级218。写回级218将结果写回到GPR堆250中的寄存器。由于在写回级218 中可能会以不同于程序次序的次序接收结果,所以写回级218使用处理器设施,以便在 将结果写回到GPR堆250时保持程序次序。

在使用压缩数据操作的情况下,可通过使用额外旗标来扩展选择运算数类型指令。 举例来说,可在压缩数据操作中按字节设置一组旗标,例如,大于或等于(GE)旗标、 小于旗标(LE)或其它有条件指示(CI)。在32位数据类型中,可使用四个CI旗标。 在64位数据类型中,可使用八个CI旗标。

图2C是根据本发明的第二实施例其中可采用压缩数据选择运算数指令的管线复合 处理器280的功能框图。管线处理器282基于支持压缩32位运算数的CI旗标284而使 用一个或多个选择标准。程序状态字中可包含CI旗标284以及条件码寄存器286作为 组合式CC/CI寄存器288。

压缩数据选择运算数指令可使用CI旗标来从两个压缩数据运算数中选择字节。举 例来说,可在指令集结构中指定32位压缩数据选择指令以使用个别CI[3:0]旗标,如果 所述旗标是一,那么从运算数A中选择相应字节,且如果所述旗标是零,那么从运算数 B中选择相应字节。CI[3:0]=1010将从运算数A中选择字节3,从运算数B中选择字节 2,从运算数A中选择字节1,且从运算数B中选择字节0,以便产生含有选定字节的 32位目标寄存器。如果CI[3:0]=1111,那么将选择运算数A的所有字节。如果 CI[3:0]=0000,那么将选择运算数B的所有字节。对于条件CI[3:0]=1111,不要求运算数 B且不需要提取运算数B。对于条件CI[3:0]=0000,不要求运算数A且不需要提取运算 数A。由程序状态字中的CI旗标的位设置来确定选择标准。出于确定提取运算数还是 略去运算数的提取的目的,可使用基于全是一或全是零的CI旗标的选择标准。

通过使用保持电路(例如,图2A的保持电路262和图2C的保持电路290)可能会 在处理器管线中产生暂停。保持电路产生保持信号,其可例如用以选通管线级寄存器以 暂停管线中的指令。对于图2A的处理器管线202和图2C的管线282,如果不是所有输 入都可用,那么可例如在读取寄存器级中激活保持信号,以使得保持管线,直到输入到 达为止。在所有运算数变为可用且已确定选择标准时释放保持信号。可根据例如图2B 的表265中(作为实例)所指定的操作情形适当地激活和释放保持信号。

选择运算数指令的处理必需确定指令类型并检查条件码和旗标(例如,CI旗标), 从而指示条件和旗标状态以确定选择标准。指令可在指令格式中具有指示所述指令是选 择运算数指令的字段。本发明的教示可应用于多种指令格式和结构规范。

图3是根据本发明的教示指定有条件的运算数选择函数的32位指令300的一般格 式。选择运算数指令300含有:操作码302,其将指令识别为选择运算数指令;以及至 少两个源运算数地址字段Ra 304和Rb 306。操作码302指定选择标准和例如加法、乘 法、移位、逻辑、位操纵和类似操作的指令操作两者。或者,可在指令格式中指定一或 多个单独位来将指令识别为选择运算数指令,且操作码仅用于函数规范。其它位字段 308、310和312可以是供使用的指令特定字段,例如,用于控制执行指令还是不执行指 令的条件字段、目标寄存器地址字段、数据类型和类似字段。

图4是说明在处理器管线中提早有条件地选择运算数所要求的操作步骤的流程图 400。举例来说,在步骤404中,在解码级(例如,解码级212)中解码经提取的指令。 在步骤406中,确定所述指令是否是选择运算数指令。如果指令不是选择运算数指令, 那么处理移动到步骤408。在步骤408处,例如从通用寄存器堆(例如,GPR堆250) 将所有运算数适当地存取到读取寄存器级214。如果如步骤410中所确定,运算数并非 立即可用,那么如步骤412中所指示,指令必须暂停以等待所有运算数。如步骤410中 所确定,一旦所有运算数可用,就在步骤414中允许指令在执行管线中继续,例如在图 2A的执行1级220中开始。

考虑在步骤404中提取并解码选择运算数指令的另一情形。在这种状况下,在步骤 406处,确定经提取的指令是选择运算数指令,且处理移动到步骤416。在步骤416中, 进行测试以决定是否可基于条件码寄存器(例如,图2A的CC寄存器234或图2C的 CC/CI寄存器288)的当前状态而确定运算数选择标准。如果正在管线中运行的一或多 个先前指令可影响条件旗标且随后可影响运算数选择标准,那么可能无法确定选择标 准。如果可基于CC或CI寄存器的当前状态而确定运算数选择标准,那么处理移动到步 骤418。在步骤418中,提取基于选择标准而选择的运算数。处理继续到步骤420,从 而到达例如读取寄存器级214。在步骤420处,确定选定运算数是否可用。如果如步骤 420中所确定,选定运算数并非立即可用,那么如步骤422中所指示,指令必须暂停以 等待选定运算数。

如步骤420中所确定,一旦选定运算数可用,处理就继续到步骤424,其确定指令 是否是一般选择运算数指令类型的子集或一般选择运算数指令类型的选择指令。如果指 令是选择指令,那么处理继续到步骤426,其中绕过执行级(例如,执行级216)且将 运算数转发到写回级(例如,写回级218)。也可将运算数发送到转发网络。如果指令是 一般选择运算数指令,那么处理例如通过在执行1级220处开始而继续到步骤414。

可能发生步骤416中的测试确定正在管线中运行的一或多个先前指令可影响CC寄 存器234或CC/CI寄存器288且随后可影响运算数选择标准的情形。在这种状况下,处 理继续到步骤430,其中开始一过程以提取所有运算数,且监视条件旗标以进行更新。 在步骤432中进行测试以确定是否已更新与确定选择标准有关的所有CC或CI位。如果 尚未更新有关CC或CI位,那么处理返回到步骤430且继续所有运算数的提取。如在步 骤432中所确定,一旦已更新所有有关CC或CI位,处理就继续到步骤434,其中停止 提取如由选择标准所确定的不需要的运算数。处理接着继续到步骤420,其中确定选定 运算数是否可用。如果不可用,那么如在步骤422中所指示,指令的处理必须暂停,直 到确定选定运算数可用为止。

一旦选定运算数可用,处理就继续到步骤424,其确定指令是否是一般选择运算数 指令类型的子集或一般选择运算数指令类型的选择指令。如果指令是选择指令,那么处 理继续到步骤426,其中绕过执行级(例如,执行级216)且将运算数转发到写回级(例 如,写回级218)。还将运算数发送到转发网络。如果指令是一般选择运算数指令,那么 处理例如通过在执行1级220处开始而继续到步骤414。

虽然已在当前优选的情境下揭示本发明,但将认识到,本发明的教示可适用于与本 揭示内容和所附权利要求书一致的多种情境。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号