完成其执行而不读取进位标志的循环指令的制作方法

文档序号:6635503阅读:169来源:国知局
完成其执行而不读取进位标志的循环指令的制作方法
【专利摘要】本公开涉及一种处理元件和芯片组系统,用于完成对循环指令的执行且不读取进位标志。本公开的一个方面包括接收循环指令。该循环指令可指示源操作数和循环量。结果可存储在由循环指令指示的目的操作数中。该结果可使得源操作数循环了所述循环量。可以完成对循环指令的执行而不读取进位标志,不读取溢出标志,不读取符号标志、不读取零标志,并且不写入进位标志、不写入溢出标志、不写入符号标志、不写入零标志。
【专利说明】完成其执行而不读取进位标志的循环指令
[0001] 本申请是美国优先权号为12/655, 213、中国申请号为201010623118. 1、题为"完 成其执行而不读取进位标志的循环指令"的申请的分案申请。 发明领域
[0002] 各种不同的实施例涉及指令、执行所述指令的方法、执行指令的执行单元或包含 这类执行单元的设备。尤其,各种不同的实施例涉及完成执行而不读取进位标志的循环指 令、执行所述指令的方法、执行所述指令的执行单元或包含这类执行单元的设备。

【背景技术】
[0003] 循环指令通常包含在指令集架构(ISA)中。循环指令允许设备对数据进行循环。
[0004] -种已知的循环指令是ROR指令-循环右移指令。ROR指令记载在英特尔架构软 件开发者手册的第2卷"指令集说明",序号:243192, 1999年中。
[0005] 除了会引起循环之外,ROR指令还读取进位标志。读取这种算术标志容易花费额 外的时间。此外,对读取进位标志的需要容易增加串行化,从而容易限制并行处理和/或预 测执行。
[0006] 此外,ROR指令还会用目的操作数覆写源操作数。一旦ROR指令执行完成,就会破 坏源操作数。在一些场合下,可能需要额外的数据移动指令或操作来保留源操作数。这些 数据移动指令或操作容易花费额外的时间。
[0007] 由于快速、有效处理数据的重要性,新的且不同的循环指令将是有益的。

【专利附图】

【附图说明】
[0008] 通过参考以下用来阐述本发明实施例的描述和附图,可最大程度地理解本发明。 在附图中:
[0009] 图1是指令处理装置的一示例性实施例的方框图。
[0010] 图2是处理一循环指令实施例的方法实施例的方框流程图。
[0011] 图3示出了代表合适标志寄存器一特定示例性实施例并具有进位标志(CF)和溢 出标志(OF)的EFLAGS寄存器。
[0012] 图4示出了合适的32位通用寄存器组的一个特定示例性实施例。
[0013] 图5示出了合适的64位通用寄存器组的另一特定示例性实施例。
[0014] 图6示出了对代表循环指令一特定示例性实施例的RORX指令的说明。
[0015] 图7示出了对代表循环指令一特定示例性实施例的RORX指令进行伪代码操作。
[0016] 图8是合适的计算机系统的第一示例性实施例的方框图。
[0017] 图9是合适的计算机系统的第二示例性实施例的方框图。

【具体实施方式】
[0018] 在下面的记述中,阐述了众多具体细节,例如指令执行明细、数据类型、寄存器类 型、寄存器安排、处理器类型、系统配置,及类似物。然而应该理解,本发明的实施例在没有 这些特定细节的情况下也可以实施。在其它例子中,为了不使记述内容难以理解,未详细说 明公知的电路、结构和特征。
[0019] 实施例涉及具有执行单元的指令处理装置,其中所述执行单元用来执行循环指令 并完成对循环指令的执行而不读取进位标志。
[0020] 图1是指令处理装置100的示例性实施例的方框图。在一个或多个实施例中,指令 处理装置可以是通用处理器。该处理器可以是多种复杂指令集计算(CISC)处理器、多种精 简指令集计算(RISC)处理器、多种非常长指令字(VLIW)处理器、前述处理器的多种混合形 式,或完全其它类型的处理器中的任何一者。在一个或多个实施例中,处理器可以是由加利 福尼亚州圣克拉拉市的英特尔公司制造的那种类型的通用处理器,尽管这不是必需的。可 从英特尔公司获得的通用处理器的特殊示例包括但不局限于,Intel?C〇re?i7处理器至 尊版、,Intel?C〇re?i7 处理器、Intel?C〇re?i5 处理器、Intel?C〇re?2 至尊版处理 器、Intel? core?2 四核处理器、Intel?C〇re?2 双核处理器、Intel?Pentium?处理 器,以及Intel?Celeron?处理器。
[0021] 作为替代,指令处理装置可以是专用处理器。合适的专用处理器的代表例包括但 不局限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器,以 及数字信号处理器(DSP),这里仅列举出一些例子。这些处理器也可基于CISC、RISC、VLIW、 其混合形式,或完全其它类型的处理器。
[0022] 在又一些其它实施例中,指令处理装置可以是控制器(例如,微控制器),或者能 处理指令的其它类型的逻辑电路。在又一些其它实施例中,指令处理装置可以是指令执行 加密电路。
[0023] 再次参见图1,在使用中,指令处理装置可接收循环指令102的一个实施例。作为 示例,可从存储器或软件接收循环指令。循环指令可代表由指令处理装置识别的机器指令 或控制信号。指令处理装置可具有专门或特定的电路或其它逻辑(例如,与硬件和/或固 件组合的软件),它们可操作用于响应循环指令和/或根据循环指令的规定,对数据执行循 环操作,以及用于响应机器指令或作为机器指令的结果,存储循环结果。
[0024] 指令处理装置的图示实施例包括指令解码器104。解码器可接收并解码循环指令。 解码器可产生并输出反映原始循环指令或从原始循环指令导出的一个或多个微操作、微代 码入口点、微指令、其它指令,或者其它控制信号。解码器可使用多种不同机构来实现。合 适结构的示例包括但不局限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵 列(PLA),以及类似物。
[0025] 解码器不是该装置的必备组件。在一个或多个其它实施例中,装置可改为具有指 令仿真器、指令翻译器、指令变形器、指令解释器,或者其它指令转换逻辑。多种不同类型的 指令仿真器、指令变形器、指令翻译器,以及类似物是业内已知的。指令变换逻辑可接收循 环指令,仿真、翻译、变形、解释或以其它方式变换循环指令,并输出与原始循环指令对应的 一个或多个指令或控制信号。指令变换逻辑可用软件、硬件、固件或其组合来实现。在一些 情形下,一些或全部指令变换逻辑可与指令处理装置的其余部分一起位于芯片外,例如位 于分离的芯片或系统存储器中。在一些情形下,指令处理装置可既具有解码器又具有指令 变换逻辑。
[0026] 再次参见图1,指令处理装置包括执行单元106。作为示例,执行单元可包括算术 逻辑单元,或其它类型的能执行循环操作的逻辑单元。执行单元包括循环单元108。不同类 型的循环单元是业内已知的,例如桶式循环器。本发明不局限于任何已知类型的循环电路 或单元。
[0027] 在图示的实施例中,执行单元与解码器的输出耦合,或以其它方式与其通信。术语 "耦合"可表示两个或更多个元件直接电气接触或连接。然而,"耦合"也可指两个或更多个 元件彼此并不直接连接,但它们仍然彼此协作或交互(例如,通过居间组件)。作为一个示 例,解码器和执行单元可通过居间的可选缓冲器或业内已知的可能耦合在解码器和执行单 元之间的其它组件而相互耦合。作为解码器对循环指令的解码结果,执行单元可接收反映 循环指令或从循环指令导出的一个或多个微操作、微代码入口点、微指令、其它指令,或者 其它控制信号。作为替代,执行单元可接收和执行来自前述指令变换逻辑的指令或控制信 号。
[0028] 在一个或多个实施例中,由于指示了源操作数(SRC)和循环量的循环指令102,执 行单元可操作用于在由循环指令指示的目的操作数(DEST)中存储一结果,其中该结果使 得源操作数循环了所述循环量。在一个或多个实施例中,循环指令可以是循环右移指令,其 中循环右移指令可使数据向右循环。被循环移出最低有效位(LSB)的那些位可通过最高有 效位(MSB)转回或绕回。作为替代,循环指令可以是循环左移指令。在循环中,数据没有丢 失而仅仅是被循环或重置了。执行单元可以包括可操作用于执行从循环指令导出的指令或 其它控制信号并对源操作数作所述循环量的循环操作的电路或其它执行逻辑(例如,与硬 件和/或固件组合的软件)。
[0029] 循环指令可以隐含地指示和/或显式地指定(例如,通过一个或多个专用字段或 位组)源操作数、目的操作数,以及循环量。作为示例的操作数和循环量的合适源包括,寄 存器、存储器、指令的直接数,及其组合。在各种实施例中,源操作数和目的操作数可以是16 位、32位或64位操作数,尽管这不是必需的。
[0030] 在一个或多个实施例中,一些或全部的源操作数和目的操作数可存储在寄存器组 110的寄存器中。寄存器组可以是寄存器栈的一部分,而寄存器栈还有其它寄存器,例如状 态寄存器、标志寄存器,等等。寄存器可以是用来存储数据的存储单元(storagelocation) 或装置。寄存器组通常与执行单元一起实体位于芯片上。从处理器外部或从编程者的角度, 寄存器可以是可见的。例如,指令可以规定存储在寄存器中的操作数。各种不同类型的寄 存器是适用的,只要它们能如本文所述地存储和提供数据即可。这些寄存器可以或可以不 被重命名。合适寄存器的示例包括但不局限于,专用物理寄存器、使用寄存器重命名的动态 分配的物理寄存器、专用物理寄存器和动态分配的物理寄存器的组合,等等。作为替代,可 以将一个或多个源操作数和目的操作数存储在除寄存器以外的存储单元中,例如系统存储 器中的某个单元。
[0031] 再次参见附图,处理器或其它指令执行装置可包括多个算术标志114。算术标志至 少包括进位标志116。在一个或多个实施例中,标志可包含在寄存器112中,例如状态寄存 器、标志寄存器,或者条件码寄存器(CCR)。
[0032] 处理器和多种其它类型的逻辑器件经常利用算术标志。通常在寄存器中,标志可 以包括一个或多个位。标志不一定是寄存器中的位。标志可以包括触发器电路。位标志可 存储二进制值,例如二进制1或二进制0。多个位可存储二进制值序列,或者代码。这类二 进制值或者二进制值序列可代表标志的不同值。标志的这些不同值对于处理器或其它逻辑 器件可以具有赋予或明白的含义。标志可用于各种不同的目的。在一些情形下,标志可用 来将运算的状态、情形、条件或结果记录在处理器或其它逻辑器件中。
[0033] 进位标志是在处理器和其它逻辑器件中常见的公知类型的算术标志。进位标志可 用来指示算术运算中是否存在溢出。例如,如果在前计算过程中存在溢出,则进位标志可具 有第一值,或者如果不存在这样的溢出,则进位标志可具有第二值。进位标志可用来指示, 算术运算已产生大小大于给定寄存器中的或者存储单元所能表示的位数的结果。例如,在 一个或多个实施例中,进位标志可以是一个位,如果算术运算产生超出结果的最高有效位 的进位或借位,则将该位设为1,否则就将进位标志设为0。进位标志经常用于算术运算 中,例如加法和减法。
[0034] 在一个或多个实施例中,算术标志也可包括溢出标志。溢出标志是在处理器和其 它逻辑器件中常见的另一种公知类型的算术标志。溢出标志通常是寄存器中的一个位。溢 出标志粗略地对应于进位标志的符号形式。溢出指示何时运算中发生了算术溢出。当最高 有效位(MSB)被置位或清零时,就对溢出标志置位。如果结果是太大的正数或者是太小的 负数,可以对溢出标志置位,以适应目的操作数。溢出标志可用来指示前一运算导致了一带 符号的数,而其符号与产生它的操作数的符号不同。例如,当两个正数相加产生一负数结果 时,或者当两个负数相加产生一正数结果时,就可对溢出标志置位。充分彻底地理解进位标 志和溢出标志的功能和用途对于理解本文公开的实施例并非那么重要。
[0035] 在一个或多个实施例中,算术标志也可包括一种或多种其它类型的算术标志。有 时包含在处理器或某些其它逻辑器件中的其它算术标志包括符号标志、零标志、辅助进位 标志或奇偶标志,或者其组合。不是全部这些标志都包含在所有处理器或其它逻辑器件中。 另外,对于这些不同的标志,有时使用不同的名称。
[0036] 在一个或多个实施例中,执行单元可操作用于完成对循环操作的执行而不读取进 位标志。示图中用通过箭头的大"X"对此作概念上的表示。
[0037] 在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不读取溢 出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不写入进 位或溢出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不 读取任何进位标志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多 个实施例中,执行单元可操作用于完成对循环指令的执行,既不读取也不写入任何进位标 志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多个实施例中,执行 单元可操作用于完成对循环指令的执行,既不读取也不写入任何算术标志。作为替代,在一 个或多个实施例中,执行单元可操作用于写入全部算术标志而不读取任何算术标志。
[0038] 为了避免使记述内容难以理解,示出和描述了相对简单的指令处理装置。应该理 解,其它实施例可以具有多个执行单元。例如,指令处理装置可以包括多个不同类型的执行 单元,例如逻辑单元、算术逻辑单元(ALU)、算术单元、整数单元,等等。这些单元中的至少 一个单元可以对本文公开的循环指令的实施例作出响应。又一些其它的实施例可以具有多 核、逻辑处理器,或者执行引擎。如本文公开的可操作用于执行循环指令的执行单元可以包 含在至少一个、至少两个、大多数或全部内核、逻辑处理器或执行引擎内。
[0039] 指令处理装置也可以可选地包括一个或多个其它公知的组件。例如,其它实施例 可以可选择地包括取指令逻辑、预解码逻辑、调度逻辑、重新排序缓冲器、分支预测逻辑、退 移逻辑、寄存器重命名逻辑,及类似物,或者其某些组合。这些组件可以按传统方式实现, 或者在实现时,基于本文公开进行本领域技术人员显而易见的微小改动。不需要为了理解 本文实施例而对这些组件作进一步的说明,尽管该进一步说明在必要时很容易从公开文献 中获得。确实存在业内已知的这些组件的许多不同的组合和配置。本发明的范围不局限于 任何已知的这类组合或配置。实施例可以采用这些附加组件或不采用这些附加组件来实 现。
[0040] 图2是处理一循环指令实施例的方法实施例220的方框流程图。在各种实施例 中,该方法可通过通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、硬件加 速器(例如,加密加速器),或者另一类型的逻辑器件或指令处理装置来实现。
[0041] 可在方框221接收循环指令。该循环指令可指示源操作数和循环量。
[0042] 可在方框222将结果存储在由循环指令指示的目的操作数中。所述结果可使得源 操作数循环了所述循环量。
[0043] 对循环指令的执行可在方框223完成。在一个或多个实施例中,可完成对循环指 令的执行而不读取进位标志。
[0044] 在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不读取溢 出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不写入进 位或溢出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不 读取任何进位标志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多 个实施例中,执行单元可操作用于完成对循环指令的执行,既不读取也不写入任何进位标 志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多个实施例中,执行 单元可完成对循环指令的执行,既不读取也不写入任何算术标志。作为替代,在一个或多个 实施例中,执行单元可操作用于写入全部算术标志而不读取任何算术标志。
[0045] 完成对循环指令的执行而不读取进位标志,或者在某些情形下不读取进位标志或 溢出标志,或者在某些情形下不读取任何算术标志,可以有助于增加循环指令的执行速度。 读取进位标志要花费时间。此外,即使读取,进位标志和其它算术标志也经常不被循环指令 所使用。从而,由于读取这些标志要花费时间,并且由于这些标志常常不被使用,因此可以 通过不读取进位标志和/或溢出标志以及一个或多个其它标志,来提高循环指令的执行速 度。
[0046] 另外,完成对循环指令的执行而不读取进位标志,或者在某些情形下不读取进位 标志或溢出标志,或者在某些情形下不读取任何算术标志,可以有助于减少由于标志依存 性而引起的串行化。减少这种串行化允许更好地开发并行处理、无序执行和/或预测执行, 这些可以有助于提高许多算法的速度。
[0047] 循环指令经常与修改标志的其它指令一起包含在算法中。例如,循环指令经常与 逻辑指令一起包含在算法中,例如AND指令、XOR指令,及类似物。这类逻辑指令通常更新标 志。公知的ROR指令可以读取标志,并因此对标志具有依存性。结果,ROR指令可能需要在 它能够执行或至少完全执行之前,等待完成对在前逻辑指令的执行。这容易因标志依存性 而导致串行化。注意,这不是由数据依存性引起的,而是因标志依存性引起的。有些算法, 例如散列算法和加密算法,往往使用相对大比例的逻辑指令和循环指令两者。因此,这类算 法中依赖于标志的串行化的量可能相对较高。
[0048] 这种串行化往往会妨碍并行处理、无序执行和/或预测执行。例如,即使可能不存 在数据依存性,无序机仍可能无法在逻辑指令之前执行公知的ROR指令。这往往会减慢对 这些算法的执行。
[0049] 然而如前所述,在一个或多个实施例中,循环指令可完成而不读取进位标志,或者 在一些情形下不读取进位标志或溢出标志,或者在一些情形下不读取任何算术标志。这可 以有助于减少对一个或多个标志的依存性,在循环指令与修改标志的逻辑或其它指令一起 使用的情形下,这样做可以有助于减少算法的串行化。结果,可以在并行处理、无序执行和/ 或预测执行等方面获得更大的优势。这容易提高散列、加密和其它算法的速度和/或效率。
[0050] 在一个或多个实施例中,循环指令可以具有进一步帮助提高各种算法的执行速度 的操作数定义。记住,公知的ROR指令使源操作数被目的操作数覆写。结果,除非移动(例 如,通过MOV或其它移动指令)源操作数或以其它方式保留源操作数,否则对ROR指令的执 行将使得源操作数被目的操作数覆写。换句话说,源操作数将被破坏。然而,在一些算法中, 可能在执行循环指令之后需要源操作数。因此,这些算法常常包括额外的MOV或其它移动 指令,或者其它类型的用于保留源操作数的指令。在极端情形下,这些额外指令的数目可以 相当大。这些额外的指令需要被译码、可能被缓冲、并被执行。
[0051] 在一个或多个实施例中,循环指令可显式地指定源操作数并显式地指定目的操作 数。较为有利地,这可以允许为源操作数和目的操作数显式地指定不同的寄存器或其它存 储单元,以防止源操作数被目的操作数覆写。结果,在循环指令完成时,源操作数和目的操 作数两者均可用。这可以具有若干可能的优势。首先,这可以有助于避免数据移动指令或 者用于保留源操作数的其它类型指令。较为有利地,这可以有助于减少需要被译码、可能被 缓冲、并被执行的指令的数目。其次,如果拟使用解码流缓冲器(DSB)或类似物,则减少指 令数目可以有助于将解码指令环装入DSB内。较为有利地,这可以有助于通过避免限速解 码操作而增加处理速度。
[0052] 容易大量使用循环指令的两个领域是散列和加密。在过去的几年,对散列和加密 两者的使用已有显著的增加。越来越多的因特网和其它网络交易正以加密方式得到保护。 结果,专用加密加速器、嵌入式加密处理器、支持许多连接的服务器及类似物会非常频繁地 执行这些加密算法。因此,这些设备的性能可能受到它们能够执行这些加密算法的速度和/ 或效率的重大影响。尽管可能不那么频繁,但台式计算机和膝上计算机以及其它设备也会 被要求执行这类加密算法。另外,循环指令在某些散列和加密算法中的比例往往相对较高。 例如,在一些散列和加密算法中,大约10%或更多的指令会是循环指令。结果,提高循环指 令的执行速度会对算法执行的总速度产生重大影响。当然,除散列和加密用途之外,循环指 令还具有很多各种其它用途(例如,数据压缩、解压缩、数据扰码、解扰码,等等)。
[0053] 现在讨论循环量,循环指令的各个不同的实施例可以按各种不同方式指定循环 量。在一个或多个实施例中,循环指令可通过直接数(immediate)指示或指定循环量。直 接数可代表被直接编码而作为循环指令的一部分或包含在循环指令中的操作数。直接字节 值经常由i_8表示。
[0054] 作为另一种选择,在一个或多个实施例中,循环指令可隐含地指示具有循环量的 第二源操作数。例如,循环量可存储在隐含寄存器或其它存储单元中。在一个特定示例性 实施例中,隐含寄存器可以是被称为CL的通用寄存器。
[0055] 作为又一种选择,在一个或多个实施例中,循环指令可显式地指定第二源操作数, 例如具有循环量的寄存器。例如,在一个或多个实施例中,循环指令可选择地使用VEX编 码。VEX编码可允许指令显式地指定一额外的操作数。作为一个特例,循环指令可指定操作 DEST=ROTATE(SRC/SRC2)。如有需要,可在Intel? 64和IA-32架构软件开发者手册第 2A卷"指令集说明",A-M,序号:253666-032US,2009年9月中获得对VEX的进一步描述。
[0056] 图3示出代表合适标志寄存器的一特定实施例的EFLAGS寄存器330。该特殊寄存 器和这些特殊标志当然不是必需的。
[0057]EFLAGS寄存器是包括一组状态标志、控制标志和一组系统标志的32位寄存器。状 态标志包括进位标志(CF,位0)、奇偶标志(PF,位2)、辅助进位标志(AF,位4)、零标志(ZF, 位6)、符号标志(SF,位7)以及溢出标志(OF,位11)。
[0058]系统标志包括陷阱标志(TF,位8)、中断使能标志(IF,位9)、I/O特权级(IOPL, 位12-13)、嵌套任务(NT,位14)、恢复标志(RF,位16)、虚拟-8086模式(VM,位17)、对齐校 验(AC,位18)、虚拟中断标志(VIF,位19)、虚拟中断待定(VIP,位20)以及ID标志(ID,位 21)。控制标志包括方向标志(DF,位10)。EFLAGS的位22-31被预留。
[0059]EFLAGS寄存器是早先16位FLAGS寄存器的后继者。另外,64位模式处理器中的 EFLAGS寄存器已通过RFLAGS寄存器而后继并扩展至64位。RFLAGS的低32位与EFLAGS 的相同。在FLAGS、EFLAGS和RFLAGS寄存器的每一个中,进位标志(CF)是位0而溢出标志 (OF)是位11。对EFLAGS/RFLAGS寄存器以及进位标志的额外说明,需要时,可从Intel? 64andIA-32架构软件开发者手册第1卷"基础架构",序号:253665-032US,2009年9月中 获得。
[0060] 在一个或多个实施例中,循环指令可指示通用寄存器组中的源操作数和/或目的 操作数。为了进一步说明某些概念,将阐述可在各种X86架构处理器中用到的合适通用寄 存器的示例性实施例,但是这些特定寄存器当然不是必需的。
[0061] 图4示出了合适的32位通用寄存器432的一个特定示例性实施例。32位寄存器 组包括八个32位或双字通用寄存器。这些寄存器被表示为EAX、EBX、ECX、EDX、ESI、EDI、 EBP和ESP。这些32位寄存器也可按16位和8位模式寻址。EAX、EBX、ECX和EDX寄存器 的低16位分别被表示为AX、BX、CX和DX。例如,具有16位的字无符号整数可分别存储在 寄存器BX、CX和DX中。具有32位的双字无符号整数可存储在寄存器EAX、EBX、ECX、EDX、 ESI、EDI、EBP、ESP、R8D-R15D中。
[0062] 图5示出合适的64位通用寄存器组534的另一特定示例性实施例。该64位寄 存器组包括16个64位或四字通用寄存器。这些寄存器被表示为RAX、RBX、RCX、RDX、RSI、 RDI、RBP、RSP、R8、R9、R10、R11、R12、R13、R14 和R15。这些寄存器对 32 位操作数工作在 32 位模式,而对64位操作数工作在64位模式。RAX、RBX、RCX、RDX、RSI、RDI、RBP和RSP寄存 器的低32位分别对应于EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP寄存器。寄存器R8-R15 的低32位也可按32位模式寻址,并用R8D-R1?表示。作为示例,具有64位的四字无符号 整数可存储在寄存器RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP或R8-R15 中。
[0063] 如有需要,可在Intel? 64和IA-32架构软件开发者手册第I卷"基础架构",序 号:253665-032US,2009年9月中获得对通用寄存器的额外描述。这些特定寄存器只是示 例性的,而非必需的。
[0064] 根据一个特定示例性实施例,循环指令是不影响标志的循环右移逻辑(RORX)指 令。RORX指令是双操作数指令,其中两个操作数都是显式操作数。表1示出了RORX指令的 指令操作数编码。
[0065] 表I.RORX操作数编码
[0066]

【权利要求】
1. 一种处理元件,包括: 高速缓存; 执行单元,耦合到所述高速缓存,用于响应于一循环右移指令,完成所述循环右移指令 的执行,并将结果存储在由所述循环右移指令指示的目的操作数中, 其中,所述循环右移指令还指示源操作数和循环量;以及 所述执行单元完成对所述循环右移指令的执行而不读取进位标志,不读取溢出标志, 不读取符号标志、不读取零标志,并且不写入进位标志、不写入溢出标志、不写入符号标志、 不写入零标志。
2. 如权利要求1所述的处理元件,其特征在于,所述处理元件能工作在32位模式或64 位模式中。
3. 如权利要求2所述的处理元件,其特征在于,所述循环量由直接数来指示,或被存储 在寄存器中。
4. 如权利要求3所述的处理元件,其特征在于,所述高速缓存还包括一个或多个中级 高速缓存。
5. 如权利要求2-4中任意一项所述的处理元件,其特征在于,所述源操作数被显式地 指定在所述循环右移指令中,并且指示源寄存器可被用在32位模式或64位模式中。
6. 如权利要求2-4中任意一项所述的处理元件,其特征在于,所述目的操作数被显式 地指定在所述循环右移指令中,并且指示目的寄存器可被用在32位模式或64位模式中。
7. -种64位的芯片组系统,包括: 多核处理器,包括两个以上的核,其中每个核包括: 至少一个处理元件,包括: 高速缓存; 执行单元,耦合到所述高速缓存,用于响应于一循环右移指令,完成所述循环右移指令 的执行,并将结果存储在由所述循环右移指令指示的目的操作数中, 其中,所述循环右移指令还指示源操作数和循环量;以及 所述执行单元完成对所述循环右移指令的执行而不读取进位标志,不读取溢出标志, 不读取符号标志、不读取零标志,并且不写入进位标志、不写入溢出标志、不写入符号标志、 不写入零标志。
8. 如权利要求7所述的芯片组系统,其特征在于,所述多核处理器包括四个核。
9. 如权利要求7所述的芯片组系统,其特征在于,所述多核处理器包括八个核。
10. 如权利要求7所述的芯片组系统,其特征在于,所述循环量由直接数来指示,或被 存储在寄存器中。
11. 如权利要求7所述的芯片组系统,其特征在于,所述高速缓存还包括一个或多个中 级高速缓存。
12. 如权利要求7-11中任意一项所述的芯片组系统,其特征在于,所述源操作数被显 式地指定在所述循环右移指令中,并且指示源寄存器具有64位的大小。
13. 如权利要求7-11中任意一项所述的芯片组系统件,其特征在于,所述目的操作数 被显式地指定在所述循环右移指令中,并且指示目的寄存器具有64位的大小。
【文档编号】G06F9/30GK104484154SQ201410680656
【公开日】2015年4月1日 申请日期:2010年12月24日 优先权日:2009年12月26日
【发明者】V·戈帕尔, J·D·吉尔福德, G·M·沃尔里齐, W·K·费格哈利, E·奥兹图科, M·G·迪克森, S·P·米莱克斯, B·L·托尔, M·洛克西金, M·C·戴维斯, A·J·法希 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1