CN104484154B - 处理元件、64位芯片组系统、多核处理器、片上系统和蜂窝电话 - Google Patents
处理元件、64位芯片组系统、多核处理器、片上系统和蜂窝电话 Download PDFInfo
- Publication number
- CN104484154B CN104484154B CN201410680656.2A CN201410680656A CN104484154B CN 104484154 B CN104484154 B CN 104484154B CN 201410680656 A CN201410680656 A CN 201410680656A CN 104484154 B CN104484154 B CN 104484154B
- Authority
- CN
- China
- Prior art keywords
- instruction
- ring shift
- shift right
- operand
- source operand
- 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
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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开涉及一种处理元件和芯片组系统,用于完成对循环指令的执行且不读取进位标志。本公开的一个方面包括接收循环指令。该循环指令可指示源操作数和循环量。结果可存储在由循环指令指示的目的操作数中。该结果可使得源操作数循环了所述循环量。可以完成对循环指令的执行而不读取进位标志,不读取溢出标志,不读取符号标志、不读取零标志,并且不写入进位标志、不写入溢出标志、不写入符号标志、不写入零标志。
Description
本申请是美国优先权号为12/655,213、中国申请号为201010623118.1、题为“完成其执行而不读取进位标志的循环指令”的申请的分案申请。
发明领域
各种不同的实施例涉及指令、执行所述指令的方法、执行指令的执行单元或包含这类执行单元的设备。尤其,各种不同的实施例涉及完成执行而不读取进位标志的循环指令、执行所述指令的方法、执行所述指令的执行单元或包含这类执行单元的设备。
背景技术
循环指令通常包含在指令集架构(ISA)中。循环指令允许设备对数据进行循环。
一种已知的循环指令是ROR指令-循环右移指令。ROR指令记载在英特尔架构软件开发者手册的第2卷“指令集说明”,序号:243192,1999年中。
除了会引起循环之外,ROR指令还读取进位标志。读取这种算术标志容易花费额外的时间。此外,对读取进位标志的需要容易增加串行化,从而容易限制并行处理和/或预测执行。
此外,ROR指令还会用目的操作数覆写源操作数。一旦ROR指令执行完成,就会破坏源操作数。在一些场合下,可能需要额外的数据移动指令或操作来保留源操作数。这些数据移动指令或操作容易花费额外的时间。
由于快速、有效处理数据的重要性,新的且不同的循环指令将是有益的。
附图说明
通过参考以下用来阐述本发明实施例的描述和附图,可最大程度地理解本发明。在附图中:
图1是指令处理装置的一示例性实施例的方框图。
图2是处理一循环指令实施例的方法实施例的方框流程图。
图3示出了代表合适标志寄存器一特定示例性实施例并具有进位标志 (CF)和溢出标志(OF)的EFLAGS寄存器。
图4示出了合适的32位通用寄存器组的一个特定示例性实施例。
图5示出了合适的64位通用寄存器组的另一特定示例性实施例。
图6示出了对代表循环指令一特定示例性实施例的RORX指令的说明。
图7示出了对代表循环指令一特定示例性实施例的RORX指令进行伪代码操作。
图8是合适的计算机系统的第一示例性实施例的方框图。
图9是合适的计算机系统的第二示例性实施例的方框图。
具体实施方式
在下面的记述中,阐述了众多具体细节,例如指令执行明细、数据类型、寄存器类型、寄存器安排、处理器类型、系统配置,及类似物。然而应该理解,本发明的实施例在没有这些特定细节的情况下也可以实施。在其它例子中,为了不使记述内容难以理解,未详细说明公知的电路、结构和特征。
实施例涉及具有执行单元的指令处理装置,其中所述执行单元用来执行循环指令并完成对循环指令的执行而不读取进位标志。
图1是指令处理装置100的示例性实施例的方框图。在一个或多个实施例中,指令处理装置可以是通用处理器。该处理器可以是多种复杂指令集计算(CISC)处理器、多种精简指令集计算(RISC)处理器、多种非常长指令字(VLIW)处理器、前述处理器的多种混合形式,或完全其它类型的处理器中的任何一者。在一个或多个实施例中,处理器可以是由加利福尼亚州圣克拉拉市的英特尔公司制造的那种类型的通用处理器,尽管这不是必需的。可从英特尔公司获得的通用处理器的特殊示例包括但不局限于, CoreTMi7处理器至尊版、,CoreTMi7处理器、CoreTM i5处理器、CoreTM2至尊版处理器、CoreTM2四核处理器、CoreTM2双核处理器、处理器,以及 处理器。
作为替代,指令处理装置可以是专用处理器。合适的专用处理器的代表例包括但不局限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器,以及数字信号处理器(DSP),这里仅列举出一些例子。这些处理器也可基于CISC、RISC、VLIW、其混合形式,或完全其它类型的处理器。
在又一些其它实施例中,指令处理装置可以是控制器(例如,微控制器),或者能处理指令的其它类型的逻辑电路。在又一些其它实施例中,指令处理装置可以是指令执行加密电路。
再次参见图1,在使用中,指令处理装置可接收循环指令102的一个实施例。作为示例,可从存储器或软件接收循环指令。循环指令可代表由指令处理装置识别的机器指令或控制信号。指令处理装置可具有专门或特定的电路或其它逻辑(例如,与硬件和/或固件组合的软件),它们可操作用于响应循环指令和/或根据循环指令的规定,对数据执行循环操作,以及用于响应机器指令或作为机器指令的结果,存储循环结果。
指令处理装置的图示实施例包括指令解码器104。解码器可接收并解码循环指令。解码器可产生并输出反映原始循环指令或从原始循环指令导出的一个或多个微操作、微代码入口点、微指令、其它指令,或者其它控制信号。解码器可使用多种不同机构来实现。合适结构的示例包括但不局限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA),以及类似物。
解码器不是该装置的必备组件。在一个或多个其它实施例中,装置可改为具有指令仿真器、指令翻译器、指令变形器、指令解释器,或者其它指令转换逻辑。多种不同类型的指令仿真器、指令变形器、指令翻译器,以及类似物是业内已知的。指令变换逻辑可接收循环指令,仿真、翻译、变形、解释或以其它方式变换循环指令,并输出与原始循环指令对应的一个或多个指令或控制信号。指令变换逻辑可用软件、硬件、固件或其组合来实现。在一些情形下,一些或全部指令变换逻辑可与指令处理装置的其余部分一起位于芯片外,例如位于分离的芯片或系统存储器中。在一些情形下,指令处理装置可既具有解码器又具有指令变换逻辑。
再次参见图1,指令处理装置包括执行单元106。作为示例,执行单元可包括算术逻辑单元,或其它类型的能执行循环操作的逻辑单元。执行单元包括循环单元108。不同类型的循环单元是业内已知的,例如桶式循环器。本发明不局限于任何已知类型的循环电路或单元。
在图示的实施例中,执行单元与解码器的输出耦合,或以其它方式与其通信。术语“耦合”可表示两个或更多个元件直接电气接触或连接。然而,“耦合”也可指两个或更多个元件彼此并不直接连接,但它们仍然彼此协作或交互(例如,通过居间组件)。作为一个示例,解码器和执行单元可通过居间的可选缓冲器或业内已知的可能耦合在解码器和执行单元之间的其它组件而相互耦合。作为解码器对循环指令的解码结果,执行单元可接收反映循环指令或从循环指令导出的一个或多个微操作、微代码入口点、微指令、其它指令,或者其它控制信号。作为替代,执行单元可接收和执行来自前述指令变换逻辑的指令或控制信号。
在一个或多个实施例中,由于指示了源操作数(SRC)和循环量的循环指令102,执行单元可操作用于在由循环指令指示的目的操作数(DEST)中存储一结果,其中该结果使得源操作数循环了所述循环量。在一个或多个实施例中,循环指令可以是循环右移指令,其中循环右移指令可使数据向右循环。被循环移出最低有效位(LSB)的那些位可通过最高有效位(MSB)转回或绕回。作为替代,循环指令可以是循环左移指令。在循环中,数据没有丢失而仅仅是被循环或重置了。执行单元可以包括可操作用于执行从循环指令导出的指令或其它控制信号并对源操作数作所述循环量的循环操作的电路或其它执行逻辑(例如,与硬件和/或固件组合的软件)。
循环指令可以隐含地指示和/或显式地指定(例如,通过一个或多个专用字段或位组)源操作数、目的操作数,以及循环量。作为示例的操作数和循环量的合适源包括,寄存器、存储器、指令的立即数,及其组合。在各种实施例中,源操作数和目的操作数可以是16位、32位或64位操作数,尽管这不是必需的。
在一个或多个实施例中,一些或全部的源操作数和目的操作数可存储在寄存器组110的寄存器中。寄存器组可以是寄存器栈的一部分,而寄存器栈还有其它寄存器,例如状态寄存器、标志寄存器,等等。寄存器可以是用来存储数据的存储单元(storage location)或装置。寄存器组通常与执行单元一起实体位于芯片上。从处理器外部或从编程者的角度,寄存器可以是可见的。例如,指令可以规定存储在寄存器中的操作数。各种不同类型的寄存器是适用的,只要它们能如本文所述地存储和提供数据即可。这些寄存器可以或可以不被重命名。合适寄存器的示例包括但不局限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用物理寄存器和动态分配的物理寄存器的组合,等等。作为替代,可以将一个或多个源操作数和目的操作数存储在除寄存器以外的存储单元中,例如系统存储器中的某个单元。
再次参见附图,处理器或其它指令执行装置可包括多个算术标志114。算术标志至少包括进位标志116。在一个或多个实施例中,标志可包含在寄存器112中,例如状态寄存器、标志寄存器,或者条件码寄存器(CCR)。
处理器和多种其它类型的逻辑器件经常利用算术标志。通常在寄存器中,标志可以包括一个或多个位。标志不一定是寄存器中的位。标志可以包括触发器电路。位标志可存储二进制值,例如二进制1或二进制0。多个位可存储二进制值序列,或者代码。这类二进制值或者二进制值序列可代表标志的不同值。标志的这些不同值对于处理器或其它逻辑器件可以具有赋予或明白的含义。标志可用于各种不同的目的。在一些情形下,标志可用来将运算的状态、情形、条件或结果记录在处理器或其它逻辑器件中。
进位标志是在处理器和其它逻辑器件中常见的公知类型的算术标志。进位标志可用来指示算术运算中是否存在溢出。例如,如果在前计算过程中存在溢出,则进位标志可具有第一值,或者如果不存在这样的溢出,则进位标志可具有第二值。进位标志可用来指示,算术运算已产生大小大于给定寄存器中的或者存储单元所能表示的位数的结果。例如,在一个或多个实施例中,进位标志可以是一个位,如果算术运算产生超出结果的最高有效位的进位或借位,则将该位设为1,否则就将进位标志设为0。进位标志经常用于算术运算中,例如加法和减法。
在一个或多个实施例中,算术标志也可包括溢出标志。溢出标志是在处理器和其它逻辑器件中常见的另一种公知类型的算术标志。溢出标志通常是寄存器中的一个位。溢出标志粗略地对应于进位标志的符号形式。溢出指示何时运算中发生了算术溢出。当最高有效位(MSB)被置位或清零时,就对溢出标志置位。如果结果是太大的正数或者是太小的负数,可以对溢出标志置位,以适应目的操作数。溢出标志可用来指示前一运算导致了一带符号的数,而其符号与产生它的操作数的符号不同。例如,当两个正数相加产生一负数结果时,或者当两个负数相加产生一正数结果时,就可对溢出标志置位。充分彻底地理解进位标志和溢出标志的功能和用途对于理解本文公开的实施例并非那么重要。
在一个或多个实施例中,算术标志也可包括一种或多种其它类型的算术标志。有时包含在处理器或某些其它逻辑器件中的其它算术标志包括符号标志、零标志、辅助进位标志或奇偶标志,或者其组合。不是全部这些标志都包含在所有处理器或其它逻辑器件中。另外,对于这些不同的标志,有时使用不同的名称。
在一个或多个实施例中,执行单元可操作用于完成对循环操作的执行而不读取进位标志。示图中用通过箭头的大“X”对此作概念上的表示。
在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不读取溢出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不写入进位或溢出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不读取任何进位标志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行,既不读取也不写入任何进位标志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行,既不读取也不写入任何算术标志。作为替代,在一个或多个实施例中,执行单元可操作用于写入全部算术标志而不读取任何算术标志。
为了避免使记述内容难以理解,示出和描述了相对简单的指令处理装置。应该理解,其它实施例可以具有多个执行单元。例如,指令处理装置可以包括多个不同类型的执行单元,例如逻辑单元、算术逻辑单元(ALU)、算术单元、整数单元,等等。这些单元中的至少一个单元可以对本文公开的循环指令的实施例作出响应。又一些其它的实施例可以具有多核、逻辑处理器,或者执行引擎。如本文公开的可操作用于执行循环指令的执行单元可以包含在至少一个、至少两个、大多数或全部内核、逻辑处理器或执行引擎内。
指令处理装置也可以可选地包括一个或多个其它公知的组件。例如,其它实施例可以可选择地包括取指令逻辑、预解码逻辑、调度逻辑、重新排序缓冲器、分支预测逻辑、退移逻辑、寄存器重命名逻辑,及类似物,或者其某些组合。这些组件可以按传统方式实现,或者在实现时,基于本文公开进行本领域技术人员显而易见的微小改动。不需要为了理解本文实施例而对这些组件作进一步的说明,尽管该进一步说明在必要时很容易从公开文献中获得。确实存在业内已知的这些组件的许多不同的组合和配置。本发明的范围不局限于任何已知的这类组合或配置。实施例可以采用这些附加组件或不采用这些附加组件来实现。
图2是处理一循环指令实施例的方法实施例220的方框流程图。在各种实施例中,该方法可通过通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、硬件加速器(例如,加密加速器),或者另一类型的逻辑器件或指令处理装置来实现。
可在方框221接收循环指令。该循环指令可指示源操作数和循环量。
可在方框222将结果存储在由循环指令指示的目的操作数中。所述结果可使得源操作数循环了所述循环量。
对循环指令的执行可在方框223完成。在一个或多个实施例中,可完成对循环指令的执行而不读取进位标志。
在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不读取溢出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不写入进位或溢出标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行而不读取任何进位标志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多个实施例中,执行单元可操作用于完成对循环指令的执行,既不读取也不写入任何进位标志、溢出标志、符号标志、零标志、辅助进位标志,或奇偶标志。在一个或多个实施例中,执行单元可完成对循环指令的执行,既不读取也不写入任何算术标志。作为替代,在一个或多个实施例中,执行单元可操作用于写入全部算术标志而不读取任何算术标志。
完成对循环指令的执行而不读取进位标志,或者在某些情形下不读取进位标志或溢出标志,或者在某些情形下不读取任何算术标志,可以有助于增加循环指令的执行速度。读取进位标志要花费时间。此外,即使读取,进位标志和其它算术标志也经常不被循环指令所使用。从而,由于读取这些标志要花费时间,并且由于这些标志常常不被使用,因此可以通过不读取进位标志和/或溢出标志以及一个或多个其它标志,来提高循环指令的执行速度。
另外,完成对循环指令的执行而不读取进位标志,或者在某些情形下不读取进位标志或溢出标志,或者在某些情形下不读取任何算术标志,可以有助于减少由于标志依存性而引起的串行化。减少这种串行化允许更好地开发并行处理、无序执行和/或预测执行,这些可以有助于提高许多算法的速度。
循环指令经常与修改标志的其它指令一起包含在算法中。例如,循环指令经常与逻辑指令一起包含在算法中,例如AND指令、XOR指令,及类似物。这类逻辑指令通常更新标志。公知的ROR指令可以读取标志,并因此对标志具有依存性。结果,ROR指令可能需要在它能够执行或至少完全执行之前,等待完成对在前逻辑指令的执行。这容易因标志依存性而导致串行化。注意,这不是由数据依存性引起的,而是因标志依存性引起的。有些算法,例如散列算法和加密算法,往往使用相对大比例的逻辑指令和循环指令两者。因此,这类算法中依赖于标志的串行化的量可能相对较高。
这种串行化往往会妨碍并行处理、无序执行和/或预测执行。例如,即使可能不存在数据依存性,无序机仍可能无法在逻辑指令之前执行公知的ROR指令。这往往会减慢对这些算法的执行。
然而如前所述,在一个或多个实施例中,循环指令可完成而不读取进位标志,或者在一些情形下不读取进位标志或溢出标志,或者在一些情形下不读取任何算术标志。这可以有助于减少对一个或多个标志的依存性,在循环指令与修改标志的逻辑或其它指令一起使用的情形下,这样做可以有助于减少算法的串行化。结果,可以在并行处理、无序执行和/或预测执行等方面获得更大的优势。这容易提高散列、加密和其它算法的速度和/或效率。
在一个或多个实施例中,循环指令可以具有进一步帮助提高各种算法的执行速度的操作数定义。记住,公知的ROR指令使源操作数被目的操作数覆写。结果,除非移动(例如,通过MOV或其它移动指令)源操作数或以其它方式保留源操作数,否则对ROR指令的执行将使得源操作数被目的操作数覆写。换句话说,源操作数将被破坏。然而,在一些算法中,可能在执行循环指令之后需要源操作数。因此,这些算法常常包括额外的MOV或其它移动指令,或者其它类型的用于保留源操作数的指令。在极端情形下,这些额外指令的数目可以相当大。这些额外的指令需要被译码、可能被缓冲、并被执行。
在一个或多个实施例中,循环指令可显式地指定源操作数并显式地指定目的操作数。较为有利地,这可以允许为源操作数和目的操作数显式地指定不同的寄存器或其它存储单元,以防止源操作数被目的操作数覆写。结果,在循环指令完成时,源操作数和目的操作数两者均可用。这可以具有若干可能的优势。首先,这可以有助于避免数据移动指令或者用于保留源操作数的其它类型指令。较为有利地,这可以有助于减少需要被译码、可能被缓冲、并被执行的指令的数目。其次,如果拟使用解码流缓冲器(DSB) 或类似物,则减少指令数目可以有助于将解码指令环装入DSB内。较为有利地,这可以有助于通过避免限速解码操作而增加处理速度。
容易大量使用循环指令的两个领域是散列和加密。在过去的几年,对散列和加密两者的使用已有显著的增加。越来越多的因特网和其它网络交易正以加密方式得到保护。结果,专用加密加速器、嵌入式加密处理器、支持许多连接的服务器及类似物会非常频繁地执行这些加密算法。因此,这些设备的性能可能受到它们能够执行这些加密算法的速度和/或效率的重大影响。尽管可能不那么频繁,但台式计算机和膝上计算机以及其它设备也会被要求执行这类加密算法。另外,循环指令在某些散列和加密算法中的比例往往相对较高。例如,在一些散列和加密算法中,大约10%或更多的指令会是循环指令。结果,提高循环指令的执行速度会对算法执行的总速度产生重大影响。当然,除散列和加密用途之外,循环指令还具有很多各种其它用途(例如,数据压缩、解压缩、数据扰码、解扰码,等等)。
现在讨论循环量,循环指令的各个不同的实施例可以按各种不同方式指定循环量。在一个或多个实施例中,循环指令可通过立即数(immediate) 指示或指定循环量。立即数可代表被直接编码而作为循环指令的一部分或包含在循环指令中的操作数。直接字节值经常由imm8表示。
作为另一种选择,在一个或多个实施例中,循环指令可隐含地指示具有循环量的第二源操作数。例如,循环量可存储在隐含寄存器或其它存储单元中。在一个特定示例性实施例中,隐含寄存器可以是被称为CL的通用寄存器。
作为又一种选择,在一个或多个实施例中,循环指令可显式地指定第二源操作数,例如具有循环量的寄存器。例如,在一个或多个实施例中,循环指令可选择地使用VEX编码。VEX编码可允许指令显式地指定一额外的操作数。作为一个特例,循环指令可指定操作DEST=ROTATE(SRC/SRC2)。如有需要,可在64和IA-32架构软件开发者手册第2A卷“指令集说明”,A-M,序号:253666-032US,2009年9月中获得对VEX的进一步描述。
图3示出代表合适标志寄存器的一特定实施例的EFLAGS寄存器330。该特殊寄存器和这些特殊标志当然不是必需的。
EFLAGS寄存器是包括一组状态标志、控制标志和一组系统标志的32 位寄存器。状态标志包括进位标志(CF,位0)、奇偶标志(PF,位2)、辅助进位标志(AF,位4)、零标志(ZF,位6)、符号标志(SF,位7)以及溢出标志(OF,位11)。
系统标志包括陷阱标志(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被预留。
EFLAGS寄存器是早先16位FLAGS寄存器的后继者。另外,64位模式处理器中的EFLAGS寄存器已通过RFLAGS寄存器而后继并扩展至64位。 RFLAGS的低32位与EFLAGS的相同。在FLAGS、EFLAGS和RFLAGS寄存器的每一个中,进位标志(CF)是位0而溢出标志(OF)是位11。对 EFLAGS/RFLAGS寄存器以及进位标志的额外说明,需要时,可从64 and IA-32架构软件开发者手册第1卷“基础架构”,序号:253665-032US, 2009年9月中获得。
在一个或多个实施例中,循环指令可指示通用寄存器组中的源操作数和/或目的操作数。为了进一步说明某些概念,将阐述可在各种x86架构处理器中用到的合适通用寄存器的示例性实施例,但是这些特定寄存器当然不是必需的。
图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中。
图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-R15D表示。作为示例,具有64位的四字无符号整数可存储在寄存器RAX、RBX、RCX、RDX、 RSI、RDI、RBP、RSP或R8-R15中。
如有需要,可在64和IA-32架构软件开发者手册第1卷“基础架构”,序号:253665-032US,2009年9月中获得对通用寄存器的额外描述。这些特定寄存器只是示例性的,而非必需的。
根据一个特定示例性实施例,循环指令是不影响标志的循环右移逻辑 (RORX)指令。RORX指令是双操作数指令,其中两个操作数都是显式操作数。表1示出了RORX指令的指令操作数编码。
表1.RORX操作数编码
操作数1是被显式指定的,并且可在32位通用寄存器(reg)中用于32 位模式指令,或在64位通用寄存器中用于64位模式指令。对操作数1允许写入(W)。
操作数2是被显式指定的,并且可在32位通用寄存器(r)或存储器(m) 中用于32位模式指令,或在64位通用寄存器或存储器中用于64位模式指令。对操作数2允许读取(R)。
操作数3和操作数4对RORX来说是不可用的。RORX具有直接字节 (imm8),用来指定循环量。
图6示出了对代表循环指令一特定示例性实施例的RORX指令的说明。 16位操作数大小在当前是不可编码的,尽管这样也是可行的。
图7示出了对代表循环指令一特定示例性实施例的RORX指令的伪代码的操作。SRC是指被显式指定的源操作数,DEST是指目的操作数,imm8是指用来指定循环量的直接字节,符号“>>”表示向右移,符号“<<”指向左移,符号“|”表示逐位OR。这示出了如何将循环视为两次移位。
没有标志会受RORX的影响。对于RORX,没有SIMD浮点例外。如有需要,可从64和IA-32架构软件开发者手册第2A卷“指令集说明”,A-M,序号:253666-032US,2009年9月中获得对操作码、编码、REX,和 VEX前缀的进一步描述。
一个或多个实施例包括一制造产品,该产品包括存储有循环指令的、机器可访问和/或机器可读的有形介质,如果所述循环指令被机器(例如,执行单元或处理器)执行,则引起数据循环操作,并完成执行而不读取进位标志。有形介质可包括一种或多种固体材料。介质可包括一种以机器可访问的形式提供(例如,存储)信息的机制。例如,介质可选地包括可记录介质,例如软盘、光存储介质、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电擦除可编程 ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存,及其组合形式。
合适的机器包括但不局限于,执行单元、通用处理器、专用处理器(例如,图形处理器和加密处理器)、加密加速器、网络通信处理器、计算机系统、网络设备、调制解调器、个人数字助理(PDA)、蜂窝电话,以及众多种具有一个或多个执行单元的其它电子设备,这里仅给出很少一部分例子。
又一些其它实施例涉及具有执行单元和/或执行本文所述方法的、计算机系统、嵌入式系统或其它电子设备。
图8是合适的计算机系统801的第一示例性实施例的方框图。计算机系统包括处理器800。处理器包括能执行至少一个循环指令802的至少一个执行单元806。
处理器经由总线(例如,前侧总线)或其它互连结构880耦合于芯片集 881。互连结构可用来经由芯片集在处理器和其它组件之间传输数据信号。
芯片集包括称为存储器控制器中枢(MCH)882的系统逻辑芯片。MCH耦合于前侧总线或其它互连结构880。
存储器886耦合于MCH。在各种实施例中,存储器可包括随机存取存储器(RAM)。DRAM是用于一些但非全部计算机系统中的RAM的一个示例。如图所示,存储器可用来存储诸如一个或多个循环指令等指令887,以及数据 888。
组件互连结构885也与MCH耦合。在一个或多个实施例中,组件互连结构可包括一个或多个外设部件互连快速(PCIe)接口。组件互连结构可允许其它组件通过芯片集耦合于系统的其余部分。这些组件的一个示例是图形芯片或其它图形设备,尽管这是可选用的而非必需的。
芯片集还包括输入/输出(I/O)控制器中枢(ICH)884。ICH通过中枢接口总线或其它互连结构883耦合于MCH。在一个或多个实施例中,总线或其它互连结构883可包括直接媒体接口(DMI)。
数据存储器889耦合于ICH。在各种实施例中,数据存储器可包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或类似物,或其组合形式。
第二组件互连结构890也与ICH耦合。在一个或多个实施例中,第二组件互连结构可包括一个或多个外设部件互连快速(PCIe)接口。第二组件互连结构可允许多种类型的组件通过芯片集耦合于系统的其余部分。
串行扩展端口891也与ICH耦合。在一个或多个实施例中,串行扩展端口可包括一个或多个通用串行总线(USB)端口。串行扩展端口可允许多种其它类型的输入/输出设备通过芯片集耦合于系统的其余部分。
可选用地耦合于ICH的其它组件的少量示例性实施例包括但不局限于,音频控制器、无线收发机,以及用户输入设备(例如,键盘、鼠标)。
网络控制器892也耦合于ICH。网络控制器可允许本系统与网络耦合。
在一个或多个实施例中,所述计算机系统可以执行能够从华盛顿州雷蒙德市场的微软公司获得的WINDOWSTM操作系统版本。作为替代,可使用诸如UNIX、Linux或嵌入式系统等其它操作系统。
这只是合适的计算机系统的一个特例。例如,在一个或多个替代实施例中,处理器可具有多个内核。又如,在一个或多个替代实施例中,MCH 882 可与处理器800一起实体集成在芯片上,并且处理器可通过集成的MCH与存储器886直接耦合。再如,在一个或多个替代实施例中,可以将其它组件与处理器一起集成在芯片上,从而例如提供单片系统(SoC)设计。再如,在一个或多个替代实施例中,计算机系统可具有多个处理器。
图9是合适的用计算机系统901的第二示例性实施例的方框图。第二示例性实施例与前面描述的第一示例性计算机系统具有某些相似点。为简明起见,以下描述将倾向于突出其不同点,而不对所有的相似点予以重复。
类似于前述的第一示例性实施例,计算机系统包括处理器900以及具有I/O控制器中枢(ICH)984的芯片集981。同样与第一示例性实施例相似的,计算机系统包括耦合于芯片集的第一组件互连结构985、耦合于ICH 的第二组件互连结构990、耦合于ICH的串行扩展端口991、耦合于ICH的网络控制器992,以及耦合于ICH的数据存储器989。
在该第二实施例中,处理器900是多核处理器。该多核处理器包括处理器核994-1至994-M,其中M可以是大于或等于2的整数(例如,2、4、7 或更大的整数)。每个核可包括至少一个执行单元,该执行单元能执行如本文披露的指令的至少一个实施例。如图所示,核-1包括高速缓存995(例如, L1高速缓存)。每个其它核可相似地包括专门的高速缓存。处理器核可在单个集成电路(IC)芯片上实现。
处理器也包括至少一个共享高速缓存996。共享高速缓存可存储由处理器的一个或多个组件(例如,核)利用的数据(例如,指令)。例如,共享高速缓存可在本地对存储在存储器986中的数据进行高速缓存,以便处理器组件更快速地访问。在一个或多个实施例中,共享高速缓存可包括一个或多个中级高速缓存,例如级2(L2)、级3(L3)、级4(L4),或其它级的高速缓存、最末级高速缓存(LLC),和/或其组合形式。
处理器核和共享高速缓存分别耦合于总线或其它互连结构997。总线或其它互连结构可将核和共享高速缓存耦合并允许通信。
处理器还包括存储器控制器中枢设备(MCH)982。如该示例性实施例所示,MCH与处理器900集成。例如,MCH可与处理器核一起位于芯片上。处理器通过MCH耦合于存储器986。存储器986可包括指令987和数据988。在一个或多个实施例中,存储器可包括DRAM,尽管这不是必需的。
芯片集包括输入/输出(I/O)中枢设备993。I/O中枢设备通过总线(例如。QuickPath互连结构(QPI))或其它互连结构980耦合于处理器。第一组件互连结构985耦合于I/O中枢设备993。
这只是合适系统的一个特例。用于膝上机、台式机、手持PC机、个人数字助理、工程设计工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、电视游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及多种其它电子设备的业内已知的其它系统设计和配置也是适用的。总地来说,能够包含如本文披露的处理器和/或执行单元的众多各种系统或电子设备一般都是适用的。
在以上描述中,出于说明目的,阐述了众多具体细节以便透彻理解本发明的诸实施例。然而,对本领域技术人员来说显而易见的是,没有这些具体细节也可实践一个或多个其它实施例。提供所描述的各具体实施例不是为了限制本发明,而是为了说明本发明的实施例。本发明的范围不是由以上提供的各具体示例来确定的,而是仅由下面的权利要求书来确定。在其它情况下,以方框图的形式示出了公知的电路、结构、设备和操作,不示出其细节以避免对本说明书理解的混淆。只要认为合适,附图标记或附图标记的尾部在附图中被重复,以表示相应或相似的部件,它们可选择地具有相似的特性。
某些操作可通过硬件件组件来实现,或体现为机器可执行指令,所述机器可执行指令可用来使得或至少导致用该指令编程的电路或硬件执行这些操作。所述电路可包括通用或专用处理器或逻辑电路,这里仅列举出一些示例。所述操作也可选择地由硬件和软件的组合来执行。执行单元和/或处理器可包括专用或特殊电路或其它逻辑,它们响应机器指令或从机器指令导出的一个或多个控制信号,来存储指令指定的结果操作数。
还应该理解,本说明书全文中提及的“一个实施例”、“一实施例”或“一个或多个实施例”例如表示,在实践本发明实施例的过程中,可包含某个特定特征。同样应该理解,在本说明书中,有时将多个特征组合在一个实施例、一张附图或其描述中,以便使公开内容流畅,并帮助理解创新性的各个方面。然而,这种公开方式不应被解释为反映了这样一种意图,即本发明需要比在每一权利要求中明确表述的特征更多的特征。相反,如下面的权利要求书所反映的,创新性方面可以存在于比所揭示的单个实施例中的所有特征更少的特征中。因此,在“具体实施方式”部分之后的权利要求书的内容据此被明确包含在此“具体实施方式”部分中,每一项权利要求都独立作为本发明的一个单独的实施例。
Claims (41)
1.一种处理元件,包括:
高速缓存;
执行单元,耦合到所述高速缓存,用于响应于一循环右移指令,完成所述循环右移指令的执行,并将结果存储在由所述循环右移指令指示的目的操作数中,
其中,所述循环右移指令还用于指示源操作数和循环量,
其中,所述结果包括经过循环所述循环量的所述源操作数,以及
所述执行单元用于完成对所述循环右移指令的执行而不读取进位标志、不读取溢出标志、不读取符号标志、不读取零标志、并且不写入任何标志,包括不写入进位标志、不写入溢出标志、不写入符号标志、并且不写入零标志。
2.如权利要求1所述的处理元件,其特征在于,所述循环量由立即数来指示,或被存储在寄存器中。
3.如权利要求2所述的处理元件,其特征在于,所述高速缓存还包括一个或多个中级高速缓存,并且所述处理元件还用于执行第二循环右移指令,所述第二循环右移指令在被执行时用于读取所述进位标志。
4.如权利要求1-3中任意一项所述的处理元件,其特征在于,所述源操作数被显式地指定在所述循环右移指令中,并且用于指示源寄存器可被用在32位模式或64位模式中。
5.如权利要求1-3中任意一项所述的处理元件,其特征在于,所述目的操作数被显式地指定在所述循环右移指令中,并且用于指示目的寄存器可被用在32位模式或64位模式中。
6.如权利要求1所述的处理元件,其特征在于,所述处理元件用于工作在32位模式或64位模式中。
7.一种64位的芯片组系统,包括:
多核处理器,包括两个以上的核,其中每个核包括:
至少一个处理元件,包括:
高速缓存;
执行单元,耦合到所述高速缓存,用于响应于一循环右移指令,完成所述循环右移指令的执行,并将结果存储在由所述循环右移指令指示的目的操作数中,
其中,所述循环右移指令还用于指示源操作数和循环量,
其中,所述结果包括经过循环所述循环量的所述源操作数,以及
所述执行单元用于完成对所述循环右移指令的执行而不读取进位标志,不读取溢出标志,不读取符号标志、不读取零标志、并且不写入任何标志,包括不写入进位标志、不写入溢出标志、不写入符号标志、并且不写入零标志。
8.如权利要求7所述的芯片组系统,其特征在于,所述多核处理器包括四个核。
9.如权利要求7所述的芯片组系统,其特征在于,所述多核处理器包括八个核。
10.如权利要求7所述的芯片组系统,其特征在于,所述循环量由立即数来指示,或被存储在寄存器中。
11.如权利要求7所述的芯片组系统,其特征在于,所述高速缓存还包括一个或多个中级高速缓存,并且所述处理元件还用于执行第二循环右移指令,所述第二循环右移指令在被执行时用于读取所述进位标志。
12.如权利要求7-11中任意一项所述的芯片组系统,其特征在于,所述源操作数被显式地指定在所述循环右移指令中,并且用于指示源寄存器具有64位的大小。
13.如权利要求7-11中任意一项所述的芯片组系统,其特征在于,所述目的操作数被显式地指定在所述循环右移指令中,并且用于指示目的寄存器具有64位的大小。
14.一种多核处理器,包括:
至少四个核,其中所述至少四个核中的每一个包括:
至少一个第一级L1高速缓存;
寄存器,用于存储多个标志,包括:进位标志、符号标志、零标志、以及溢出标志;
至少十六个64位通用寄存器,其中所述64位通用寄存器在64位模式下用于存储64位操作数,并且在32位模式下用于存储32位操作数,其中所述32位操作数被存储在所述64位通用寄存器的低32位中;
分支预测逻辑单元;
指令提取逻辑单元,用于提取循环右移指令;
解码器,用于解码所述循环右移指令,其中所述循环右移指令指示64位操作数大小、第一64位源操作数、第二64位源操作数、以及64位通用寄存器;
寄存器重命名逻辑单元,用于对所述至少十六个64位通用寄存器进行重命名;
重排序缓冲器;以及
多个执行单元,包括:第一执行单元,用于执行所述循环右移指令,所述循环右移指令将所述第一64位源操作数循环右移由所述第二64位源操作数所指定的数量,所述第一64位源操作数的最低有效位所循环移除的诸个位被循环进入所述第一64位源操作数的最高有效位,其中包括经过循环的所述第一64位源操作数的结果被存储在所述循环右移指令所指示的所述64位通用寄存器中,并且对所述循环右移指令而言,隐含的是完成所述循环右移指令的执行而不写入任何标志,包括不写入所述进位标志、不写入所述符号标志、不写入所述零标志、且不写入所述溢出标志。
15.如权利要求14所述的多核处理器,其特征在于,所述处理器包括精简指令集计算RISC处理器。
16.如权利要求14所述的多核处理器,其特征在于,还包括:共享的第二级L2高速缓存,由所述至少四个核所共享,其中完成所述循环右移指令的执行而不读取所述进位标志,并且所述循环右移指令被包含在具有第二循环右移指令的指令集中,所述第二循环右移指令在被执行时用于读取所述进位标志。
17.如权利要求14所述的多核处理器,其特征在于,所述循环右移指令具有至少一个位以指示所述64位操作数大小。
18.如权利要求14、15和17中的任一项所述的多核处理器,其特征在于,完成所述循环右移指令的执行而不读取所述进位标志。
19.一种多核处理器,包括:
至少四个核,其中所述至少四个核中的每一个包括:
至少一个第一级L1高速缓存;
寄存器,用于存储多个标志,包括:进位标志、符号标志、零标志、以及溢出标志;
至少十六个64位通用寄存器,其中所述64位通用寄存器在64位模式下用于存储64位操作数,并且在32位模式下用于存储32位操作数,其中所述32位操作数被存储在所述64位通用寄存器的低32位中;
分支预测逻辑单元;
指令提取逻辑单元,用于提取循环右移指令;
解码器,用于解码所述循环右移指令,其中所述循环右移指令指示64位操作数大小、第一64位源操作数、第二64位源操作数、以及64位通用寄存器;
寄存器重命名逻辑单元,用于对所述至少十六个64位通用寄存器进行重命名;
重排序缓冲器;以及
多个执行单元,包括:第一执行单元,用于执行所述循环右移指令,所述循环右移指令将所述第一64位源操作数循环右移由所述第二64位源操作数所指定的数量,所述第一64位源操作数的最低有效位所循环移除的诸个位被循环进入所述第一64位源操作数的最高有效位,其中包括经过循环的所述第一64位源操作数的结果被存储在所述循环右移指令所指示的所述64位通用寄存器中,并且完成所述循环右移指令的执行而不读取所述进位标志,不读取所述符号标志,不读取所述零标志、且不读取所述溢出标志、并且不写入任何标志。
20.如权利要求19所述的多核处理器,其特征在于,所述处理器包括精简指令集计算RISC处理器。
21.如权利要求19所述的多核处理器,其特征在于,还包括:共享的第二级L2高速缓存,由所述至少四个核所共享,其中所述循环右移指令被包含在具有第二循环右移指令的指令集中,所述第二循环右移指令在被执行时用于读取所述进位标志。
22.如权利要求19所述的多核处理器,其特征在于,所述循环右移指令具有至少一个位以指示所述64位操作数大小。
23.一种片上系统SoC,包括:
芯片上存储器控制器;
芯片上图形设备;
芯片上用于通用串行总线USB端口的控制器;以及
芯片上多核处理器,包括:
至少四个核,其中所述至少四个核中的每一个包括:
至少一个第一级L1高速缓存;
寄存器,用于存储多个标志,包括:进位标志、符号标志、零标志、以及溢出标志;
至少十六个64位通用寄存器,其中所述64位通用寄存器在64位模式下用于存储64位操作数,并且在32位模式下用于存储32位操作数,其中所述32位操作数被存储在所述64位通用寄存器的低32位中;
分支预测逻辑单元;
指令提取逻辑单元,用于提取循环右移指令;
解码器,用于解码所述循环右移指令,其中所述循环右移指令指示64位操作数大小、第一64位源操作数、第二64位源操作数、以及64位通用寄存器;
寄存器重命名逻辑单元,用于对所述至少十六个64位通用寄存器进行重命名;
重排序缓冲器;以及
多个执行单元,包括:第一执行单元,用于执行所述循环右移指令,所述循环右移指令将所述第一64位源操作数循环右移由所述第二64位源操作数所指定的数量,所述第一64位源操作数的最低有效位所循环移除的诸个位被循环进入所述第一64位源操作数的最高有效位,其中包括经过循环的所述第一64位源操作数的结果被存储在所述循环右移指令所指示的所述64位通用寄存器中,并且对所述循环右移指令而言,隐含的是完成所述循环右移指令的执行而不写入任何标志,包括不写入所述进位标志,不写入所述符号标志,不写入所述零标志、且不写入所述溢出标志。
24.如权利要求23所述的SoC,其特征在于,所述处理器包括精简指令集计算RISC处理器。
25.如权利要求23所述的SoC,其特征在于,还包括:共享的第二级L2高速缓存,由所述至少四个核所共享,其中完成所述循环右移指令的执行而不读取所述进位标志,并且所述循环右移指令被包含在具有第二循环右移指令的指令集中,所述第二循环右移指令在被执行时用于读取所述进位标志。
26.如权利要求23所述的SoC,其特征在于,所述循环右移指令具有至少一个位以指示所述64位操作数大小。
27.如权利要求23、24和26中的任一项所述的SoC,其特征在于,完成所述循环右移指令的执行而不读取所述进位标志。
28.一种片上系统SoC,包括:
芯片上存储器控制器;
芯片上图形设备;
芯片上用于通用串行总线USB端口的控制器;以及
芯片上多核处理器,包括:
至少四个核,其中所述至少四个核中的每一个包括:
至少一个第一级L1高速缓存;
寄存器,用于存储多个标志,包括:进位标志、符号标志、零标志、以及溢出标志;
至少十六个64位通用寄存器,其中所述64位通用寄存器在64位模式下用于存储64位操作数,并且在32位模式下用于存储32位操作数,其中所述32位操作数被存储在所述64位通用寄存器的低32位中;
分支预测逻辑单元;
指令提取逻辑单元,用于提取循环右移指令;
解码器,用于解码所述循环右移指令,其中所述循环右移指令指示64位操作数大小、第一64位源操作数、第二64位源操作数、以及64位通用寄存器;
寄存器重命名逻辑单元,用于对所述至少十六个64位通用寄存器进行重命名;
重排序缓冲器;以及
多个执行单元,包括:第一执行单元,用于执行所述循环右移指令,所述循环右移指令将所述第一64位源操作数循环右移由所述第二64位源操作数所指定的数量,所述第一64位源操作数的最低有效位所循环移除的诸个位被循环进入所述第一64位源操作数的最高有效位,其中包括经过循环的所述第一64位源操作数的结果被存储在所述循环右移指令所指示的所述64位通用寄存器中,并且完成所述循环右移指令的执行而不读取所述进位标志,不读取所述符号标志,不读取所述零标志、且不读取所述溢出标志、并且不写入任何标志。
29.如权利要求28所述的SoC,其特征在于,所述处理器包括精简指令集计算RISC处理器。
30.如权利要求28所述的SoC,其特征在于,还包括:共享的第二级L2高速缓存,由所述至少四个核所共享,其中所述循环右移指令被包含在具有第二循环右移指令的指令集中,所述第二循环右移指令在被执行时用于读取所述进位标志。
31.如权利要求28所述的SoC,其特征在于,所述循环右移指令具有至少一个位以指示所述64位操作数大小。
32.一种蜂窝电话,包括:
随机存取存储器RAM;
无线收发机;以及
多核处理器,包括:
至少四个核,其中所述至少四个核中的每一个包括:
至少一个第一级L1高速缓存;
寄存器,用于存储多个标志,包括:进位标志、符号标志、零标志、以及溢出标志;
至少十六个64位通用寄存器,其中所述64位通用寄存器在64位模式下用于存储64位操作数,并且在32位模式下用于存储32位操作数,其中所述32位操作数被存储在所述64位通用寄存器的低32位中;
分支预测逻辑单元;
指令提取逻辑单元,用于提取循环右移指令;
解码器,用于解码所述循环右移指令,其中所述循环右移指令指示64位操作数大小、第一64位源操作数、第二64位源操作数、以及64位通用寄存器;
寄存器重命名逻辑单元,用于对所述64位通用寄存器进行重命名;
重排序缓冲器;以及
多个执行单元,包括:第一执行单元,用于执行所述循环右移指令,所述循环右移指令将所述第一64位源操作数循环右移由所述第二64位源操作数所指定的数量,所述第一64位源操作数的最低有效位所循环移除的诸个位被循环进入所述第一64位源操作数的最高有效位,其中包括经过循环的所述第一64位源操作数的结果被存储在所述循环右移指令所指示的所述64位通用寄存器中,并且对所述循环右移指令而言,隐含的是完成所述循环右移指令的执行而不写入任何标志,包括不写入所述进位标志、不写入所述符号标志、不写入所述零标志、且不写入所述溢出标志。
33.如权利要求32所述的蜂窝电话,其特征在于,还包括:共享的第二级L2高速缓存,由所述至少四个核所共享,其中完成所述循环右移指令的执行而不读取所述进位标志,并且所述循环右移指令被包含在具有第二循环右移指令的指令集中,所述第二循环右移指令在被执行时用于读取所述进位标志。
34.如权利要求32所述的蜂窝电话,其特征在于,所述处理器包括精简指令集计算RISC处理器。
35.如权利要求32所述的蜂窝电话,其特征在于,所述循环右移指令具有至少一个位以指示所述64位操作数大小。
36.如权利要求32、34和35中的任一项所述的蜂窝电话,其特征在于,完成所述循环右移指令的执行而不读取所述进位标志。
37.一种蜂窝电话,包括:
随机存取存储器RAM;
无线收发机;以及
多核处理器,包括:
至少四个核,其中所述至少四个核中的每一个包括:
至少一个第一级L1高速缓存;
寄存器,用于存储多个标志,包括:进位标志、符号标志、零标志、以及溢出标志;
至少十六个64位通用寄存器,其中所述64位通用寄存器在64位模式下用于存储64位操作数,并且在32位模式下用于存储32位操作数,其中所述32位操作数被存储在所述64位通用寄存器的低32位中;
分支预测逻辑单元;
指令提取逻辑单元,用于提取循环右移指令;
解码器,用于解码所述循环右移指令,其中所述循环右移指令指示64位操作数大小、第一64位源操作数、第二64位源操作数、以及64位通用寄存器;
寄存器重命名逻辑单元,用于对所述64位通用寄存器进行重命名;
重排序缓冲器;以及
多个执行单元,包括:第一执行单元,用于执行所述循环右移指令,所述循环右移指令将所述第一64位源操作数循环右移由所述第二64位源操作数所指定的数量,所述第一64位源操作数的最低有效位所循环移除的诸个位被循环进入所述第一64位源操作数的最高有效位,其中包括经过循环的所述第一64位源操作数的结果被存储在所述循环右移指令所指示的所述64位通用寄存器中,并且完成所述循环右移指令的执行而不读取所述进位标志、不读取所述符号标志、不读取所述零标志、且不读取所述溢出标志、并且不写入任何标志。
38.如权利要求37所述的蜂窝电话,其特征在于,所述处理器包括精简指令集计算RISC处理器。
39.如权利要求37所述的蜂窝电话,其特征在于,还包括:共享的第二级L2高速缓存,由所述至少四个核所共享,其中完成所述循环右移指令的执行而不读取所述进位标志,并且所述循环右移指令被包含在具有第二循环右移指令的指令集中,所述第二循环右移指令在被执行时用于读取所述进位标志。
40.如权利要求37所述的蜂窝电话,其特征在于,所述循环右移指令具有至少一个位以指示所述64位操作数大小。
41.一种处理元件,包括:
高速缓存;
32位EFLAGS寄存器,所述EFLAGS寄存器包括进位标志、奇偶标志、辅助进位标志、溢出标志、符号标志、零标志、陷阱标志、中断使能标志、I/O特权级、嵌套任务、恢复标志、方向标志,其中所述EFLAGS寄存器的22-31位被预留;
执行单元,耦合到所述高速缓存,用于响应于第一循环右移指令,完成所述第一循环右移指令的执行,并读取所述EFLAGS寄存器中的进位标志;
其中,所述第一循环右移指令还用于指示源操作数,并且所述执行单元用于完成所述第一循环右移指令的执行,并用于隐式地利用目的操作数覆写源操作数,其中所述处理元件还用于执行第二循环右移指令,所述第二循环右移指令在被执行时不读取所述进位标志并且不影响任何标志,其中所述第二循环右移指令用于允许源操作数的显式指定以及目的地操作数的显式指定,所述源操作数用于包括要进行循环的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/655,213 | 2009-12-26 | ||
US12/655,213 US8504807B2 (en) | 2009-12-26 | 2009-12-26 | Rotate instructions that complete execution without reading carry flag |
CN201010623118.1A CN102109976B (zh) | 2009-12-26 | 2010-12-24 | 完成其执行而不读取进位标志的循环指令 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010623118.1A Division CN102109976B (zh) | 2009-12-26 | 2010-12-24 | 完成其执行而不读取进位标志的循环指令 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104484154A CN104484154A (zh) | 2015-04-01 |
CN104484154B true CN104484154B (zh) | 2019-02-15 |
Family
ID=44174154
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510116867.8A Active CN104636116B (zh) | 2009-12-26 | 2010-12-24 | 完成其执行而不读取进位标志的循环指令 |
CN201010623118.1A Active CN102109976B (zh) | 2009-12-26 | 2010-12-24 | 完成其执行而不读取进位标志的循环指令 |
CN201410680656.2A Active CN104484154B (zh) | 2009-12-26 | 2010-12-24 | 处理元件、64位芯片组系统、多核处理器、片上系统和蜂窝电话 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510116867.8A Active CN104636116B (zh) | 2009-12-26 | 2010-12-24 | 完成其执行而不读取进位标志的循环指令 |
CN201010623118.1A Active CN102109976B (zh) | 2009-12-26 | 2010-12-24 | 完成其执行而不读取进位标志的循环指令 |
Country Status (6)
Country | Link |
---|---|
US (7) | US8504807B2 (zh) |
JP (3) | JP5665221B2 (zh) |
CN (3) | CN104636116B (zh) |
BR (1) | BRPI1005543B1 (zh) |
DE (2) | DE102010064599A1 (zh) |
TW (2) | TWI556166B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8504807B2 (en) * | 2009-12-26 | 2013-08-06 | Intel Corporation | Rotate instructions that complete execution without reading carry flag |
US8464030B2 (en) * | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
US10565283B2 (en) | 2011-12-22 | 2020-02-18 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
US10866807B2 (en) | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
US10223111B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
CN104011653B (zh) * | 2011-12-29 | 2017-09-15 | 英特尔公司 | 打包数据操作掩码比较处理器、方法、系统 |
CN104025033B (zh) | 2011-12-30 | 2017-11-21 | 英特尔公司 | 利用控制操纵的simd可变移位和循环 |
US9128698B2 (en) * | 2012-09-28 | 2015-09-08 | Intel Corporation | Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction |
US9207941B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses, and methods for reducing the number of short integer multiplications |
US20190196820A1 (en) * | 2017-12-21 | 2019-06-27 | Intel Corporation | Apparatus and method for right shifting packed quadwords and extracting packed doublewords |
US20190196821A1 (en) * | 2017-12-21 | 2019-06-27 | Intel Corporation | Apparatus and method for right-shifting packed quadwords and extracting packed words |
CN117555600B (zh) * | 2023-10-20 | 2024-08-23 | 海光信息技术(成都)有限公司 | 用于数据通路的操作方法、计算装置及存储介质 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3040326C1 (de) | 1980-10-25 | 1981-10-08 | Eurosil GmbH, 8000 München | Mikroprozessor mit Ruecksetz-Schaltanordnung |
US4433390A (en) | 1981-07-30 | 1984-02-21 | The Bendix Corporation | Power processing reset system for a microprocessor responding to sudden deregulation of a voltage |
DE3373759D1 (en) | 1982-06-09 | 1987-10-22 | Fujitsu Ltd | One-chip semiconductor device incorporating a power-supply-potential detecting circuit with reset function |
US4569016A (en) * | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
JPS6019220A (ja) | 1983-07-13 | 1985-01-31 | Fujitsu Ltd | マイクロコンピユ−タ |
JPS60143360A (ja) | 1983-12-30 | 1985-07-29 | Casio Comput Co Ltd | 画像形成装置 |
JPS62106524A (ja) | 1985-11-01 | 1987-05-18 | Clarion Co Ltd | 車載用の機器のマイクロコンピユ−タリセツト回路 |
JPH0241353A (ja) | 1988-08-01 | 1990-02-09 | Mitsui Toatsu Chem Inc | 半導体封止用樹脂組成物 |
JPH04278638A (ja) * | 1991-03-07 | 1992-10-05 | Seiko Epson Corp | 情報処理装置 |
JP3043861B2 (ja) * | 1991-09-30 | 2000-05-22 | 株式会社東芝 | データ処理装置 |
DE69231230T2 (de) | 1991-11-12 | 2001-03-01 | Microchip Technology Inc., Chandler | Einschaltverzoegerung fuer mikrokontroller |
CN101794213B (zh) | 1995-08-31 | 2014-09-17 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
US5906002A (en) * | 1997-02-10 | 1999-05-18 | International Business Machines Corporation | Method and apparatus for saving and restoring the context of registers using different instruction sets for different sized registers |
US5881274A (en) * | 1997-07-25 | 1999-03-09 | International Business Machines Corporation | Method and apparatus for performing add and rotate as a single instruction within a processor |
US6715063B1 (en) * | 2000-01-14 | 2004-03-30 | Advanced Micro Devices, Inc. | Call gate expansion for 64 bit addressing |
JP4454810B2 (ja) | 2000-08-04 | 2010-04-21 | Necエレクトロニクス株式会社 | デジタル位相制御方法及びデジタル位相制御回路 |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7185180B2 (en) * | 2002-04-02 | 2007-02-27 | Ip-First, Llc | Apparatus and method for selective control of condition code write back |
TW583583B (en) * | 2002-05-09 | 2004-04-11 | Ip First Llc | Apparatus and method for selective control of condition code write back |
US6944744B2 (en) * | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
CN1438574A (zh) * | 2003-02-21 | 2003-08-27 | 中国航天科技集团公司第九研究院七七一研究所 | 一种16位微处理器指令集 |
US7107435B2 (en) * | 2003-05-27 | 2006-09-12 | International Business Machines Corporation | System and method for using hardware assist functions to process multiple arbitrary sized data elements in a register |
US7373514B2 (en) | 2003-07-23 | 2008-05-13 | Intel Corporation | High-performance hashing system |
JP5088014B2 (ja) | 2007-06-22 | 2012-12-05 | トヨタ自動車株式会社 | 車両用サスペンションシステム |
US7743232B2 (en) * | 2007-07-18 | 2010-06-22 | Advanced Micro Devices, Inc. | Multiple-core processor with hierarchical microcode store |
US7840783B1 (en) * | 2007-09-10 | 2010-11-23 | Netlogic Microsystems, Inc. | System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths |
JP2009282744A (ja) * | 2008-05-22 | 2009-12-03 | Toshiba Corp | 演算器及び半導体集積回路装置 |
US8914621B2 (en) * | 2009-04-02 | 2014-12-16 | Infineon Technologies Ag | Processing unit that detects manipulations thereof, device comprising two processing units, method for testing a processing unit and a device comprising two processing units |
US8504807B2 (en) * | 2009-12-26 | 2013-08-06 | Intel Corporation | Rotate instructions that complete execution without reading carry flag |
-
2009
- 2009-12-26 US US12/655,213 patent/US8504807B2/en active Active
-
2010
- 2010-12-07 JP JP2010272961A patent/JP5665221B2/ja active Active
- 2010-12-08 TW TW104135844A patent/TWI556166B/zh active
- 2010-12-08 TW TW099142779A patent/TWI517034B/zh active
- 2010-12-13 DE DE102010064599.0A patent/DE102010064599A1/de active Pending
- 2010-12-13 DE DE102010054267A patent/DE102010054267A1/de not_active Ceased
- 2010-12-22 BR BRPI1005543-6A patent/BRPI1005543B1/pt active IP Right Grant
- 2010-12-24 CN CN201510116867.8A patent/CN104636116B/zh active Active
- 2010-12-24 CN CN201010623118.1A patent/CN102109976B/zh active Active
- 2010-12-24 CN CN201410680656.2A patent/CN104484154B/zh active Active
-
2013
- 2013-07-22 US US13/947,958 patent/US9164762B2/en active Active
-
2014
- 2014-10-21 JP JP2014214502A patent/JP6034352B2/ja active Active
- 2014-12-05 US US14/562,145 patent/US9916160B2/en active Active
- 2014-12-05 US US14/562,310 patent/US9940131B2/en active Active
- 2014-12-05 US US14/562,223 patent/US9940130B2/en active Active
-
2016
- 2016-10-27 JP JP2016210149A patent/JP6509181B2/ja active Active
-
2018
- 2018-03-29 US US15/939,693 patent/US11106461B2/en active Active
-
2021
- 2021-08-30 US US17/461,949 patent/US11900108B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104484154B (zh) | 处理元件、64位芯片组系统、多核处理器、片上系统和蜂窝电话 | |
JP6375280B2 (ja) | プロセッサ、システム、および装置 | |
CN105786446B (zh) | 支持带三个源操作数的加法指令的处理器及含该指令的介质 | |
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
KR20210086447A (ko) | 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들 | |
ES2934513T3 (es) | Sistemas y métodos para omitir operaciones matriciales intrascendentes | |
CN107250993A (zh) | 向量缓存行写回处理器、方法、系统和指令 | |
US10649774B2 (en) | Multiplication instruction for which execution completes without writing a carry flag | |
CN107003986A (zh) | 用于利用索引和立即数实行向量重组的方法和装置 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
JP2018507453A (ja) | 命令フローを最適化するチェックを実行するための装置および方法 | |
CN107077333A (zh) | 用于实行向量位聚集的方法和装置 | |
ES2951658T3 (es) | Sistemas, aparatos y métodos para generar un índice por orden de clasificación y reordenar elementos basándose en el orden de clasificación | |
CN107003851A (zh) | 用于压缩掩码值的方法和装置 | |
CN116339827A (zh) | 用于利用描述符实现基于能力的分区切换的电路系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |