用于装入/移动以及复制指令的处理器、系统和方法

文档序号:6577688阅读:167来源:国知局
专利名称:用于装入/移动以及复制指令的处理器、系统和方法
技术领域
本发明涉及处理器的装入/移动以及复制指令。
背景技术
系统体系结构说明处理器操作的模式以及被提供用于支持操作系统的机制, 该机制包括面向系统的寄存器和数据结构以及面向系统的指令。该系统体系结构也 提供用于在实际地址和保护模式之间切换的必要机制。
对系统体系结构引入单指令、多数据(SIMD)技术提供了对包含于64位寄 存器内的封包整数数据的并行计算。SIMD对例如高级媒体、图像处理和数据 压縮应用中的处理器提供增强性能。

发明内容
为了解决以上问题,本发明的第一方面提供了一种处理器,包括存储单 元;控制器逻辑;以及执行单元数据路径,包括算术逻辑单元和通用寄存器组, 所述算术逻辑单元响应于指令执行功能,其中一个指令包括移动和复制指令, 促使算术处理器将源的多个位组装入目的寄存器的多个不连续的位组,并把所 述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
本发明的第二方面提供一种方法,所述方法包含在处理器中,将源的多 个位组装入到目的寄存器的多个不连续的位组;以及把所述目的寄存器中的所 述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
本发明的第三方面提供一种系统,包括存储第一指令的存储器;执行所 述第一指令的处理器,使得该处理器将源的多个位组装入到目的寄存器的多 个不连续的位组中;以及把所述目的寄存器中的所述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
本发明的第四方面提供一种处理器,包括存储单元;控制器逻辑;以及 执行单元数据路径,包括算术逻辑单元和通用寄存器组,所述算术逻辑单元响 应于指令执行功能,其中一个指令包括移动封包单浮点高和复制指令,该指令 促使处理器将源的位[63-32]装入128位的目的寄存器的位[31-0]中,将目的寄 存器的位[31-0]复制到目的寄存器的位[63-32]中,将源的位[127-96]装入目的寄 存器的位[95-64]中,以及在所述目的寄存器的位[127-96]中复制目的寄存器的 位[95-64]。
本发明的第五方面提供一种在处理器中执行的方法,所述方法包含访问 源的位[127-0];以及在目的寄存器的位[31-0]中装入源的位[63-32],并在目的 寄存器的位[63-32]中复制目的寄存器的位[31-0];以及在所述目的寄存器的位 [95-64]中装入源的位[127-96],并且在目的寄存器的位[127-96]中复制目的寄存 器的位[95-64]。
本发明的第六方面提供一种系统,包括存储第一指令的存储器;执行所 述第一指令的处理器,使得所述处理器在128位的目的寄存器的位[31-0]中 装入源的位[63-32];在所述目的寄存器的位[63-32]中复制所述目的寄存器的位 [31-0];在所述目的寄存器的位[95-64]中装入源的位[127-96];以及在所述目的 寄存器的位[127-96]中复制所述目的寄存器的位[95-64]。
本发明的第七方面提供一种处理器,包括存储单元;控制器逻辑;以及 执行单元数据路径,包括算术逻辑单元和通用寄存器组,所述算术逻辑单元响 应于指令执行功能,其中一个指令包括移动封包单浮点低和复制指令,该指令 促使处理器把源的位[31-0]装入到128位的目的寄存器的位[31-0]中,在所述目 的寄存器的位[63-32]中复制该目的寄存器的位[31-0],在所述目的寄存器的位 [95-64]中装入所述源的位[95-64],以及在所述目的寄存器的位[127-96]中复制 所述目的寄存器的位[95-64〗。
本发明的第八方面提供一种方法,所述方法包含在处理器中,在128位 的目的寄存器的位[31-0]中装入源的位[31-0];在所述目的寄存器的位[63-32]中 复制目的寄存器的位[31-0];在所述目的寄存器的位[95-64]中装入所述源的位 [95-64];以及在所述目的寄存器的位[127-96]中复制所述目的寄存器的位 [95-64]。
本发明的第九方面提供一种系统,包括存储第一指令的存储器;执行所述第一指令的处理器,使得所述处理器在128位的目的寄存器的位[31-0]中 装入源的位[31-0];在所述目的寄存器的位[63-32]中复制所述目的寄存器的位 [31-0];在所述目的寄存器的位[95-64]中装入所述源的位[95-64];以及在所述 目的寄存器的位[127-96]中复制所述目的寄存器的位[95-64]。


图1是处理器的框图。
图2是执行环境的框图。
图3是字节顺序基本数据类型的框图。
图4示出浮点格式。
图5示出概括各种SIMD扩展、数据类型以及该数据类型如何被封包到寄 存器中的表。
具体实施例方式
参考图1,示出处理器10。该处理器IO是三路超级计数器、管道体系结 构。处理器10通过使用并行处理技术,平均能够在每个时钟周期中解码、分 派以及完成(引出)三条指令的执行。为处理这个水平的指令吞吐量,处理器 IO使用去耦的12阶段管道,该管道支持无序的指令执行。处理器10的微体系 结构管道被分为4个部分,g卩, 一级高速缓存12和二级高速缓存14、前端16、 无序执行核心18,以及引出部分20。指令和数据通过与系统总线24连接的总 线接口单元22供给给这些单元。前端16以程序顺序向该无序核心18供给指 令,该核心具有非常高的执行带宽且能够执行具有1/2时钟周期延时的基本整 数操作。前端16读取指令并将指令解码为称作微操作()i-ops)的简单操作。前端 16能以最初的程序顺序在每周期将多个微操作提交到无序核心18。前端16执 行几个基本功能。例如,前端16执行很有可能被执行的预取指令、读取还没 有被预取的指令、将指令解码为微操作、产生复杂指令和专用码的微码、递送 来自执行轨迹高速缓存26的己经解码的指令,以及使用分支预测单元28中的 高级算法来预测分支。
处理器IO的前端16被设计为解决高速管道微处理器中的某些普通问题。 例如,这些问题中的两个是延迟的主要来源。这是解码从目标读取且由于高速 缓存线中间的分支或分支目标而浪费解码带宽的指令的时间。执行轨迹高速缓存26通过保存已经解码的指令而处理这两个问题。通过 转换引擎(未示出)来读取指令并对指令进行解码,且将该指令构建成称作轨 迹的微操作序列。这些微操作轨迹被保存在轨迹高速缓存26中。来自最有可 能的分支目标的指令立即跟随在该分支的后面,而不考虑指令地址的连续性。 一旦建立轨迹,则搜索轨迹高速缓存26查找跟随在该轨迹后面的指令。若该 指令显现为现有轨迹内的第一条指令,则对来自存储器层次的指令30的读取 和解码就停止,且轨迹高速缓存26变成新的指令源。
执行轨迹高速缓存18和转换引擎(未示出)具有协同操作分支预测硬件。 使用分支目标缓冲器(BTBS)28,基于分支目标的线性地址来预测该分支目标, 且尽快读取该分支目标。若分支目标确实被缓冲在那里,则从轨迹高速缓存26 读取该分支目标;否则,从存储器层次读取该分支目标。转换引擎的分支预测 信息被用来沿着最有可能的路径来形成轨迹。
核心18无序地执行指令,允许处理器IO重排序指令,以使若一个微操作 在等待数据或竞争执行资源时被延迟,则其它在程序顺序中较后的微操作可在 其周围继续进行。处理器10使用几个缓冲器来使T操作(T-ops)流平滑。这意 味着当管道的一部分经历延迟时,该延迟可被其它并行执行的操作或者在缓冲 器中先前排队等候的微操作执行覆盖。
核心18被设计为促进并行执行。核心18每周期最多可分派6个微操作; 注意这个超过轨迹高速缓存26以及引出20微操作带宽。绝大多数的管道可在 每周期开始执行新的微操作,以使可在任何时间对每个管道处理几个指令。多 个算术逻辑单元(ALU)指令可在每周期开始两个,且多个浮点指令可在每两个 周期开始一个。最终,微操作的数据输入一准备好且资源一旦可用,微指令就 可开始无序的执行。
引出部分20接收来自执行核心18的执行微操作的结果,并对该结果进行 处理,以使根据最初程序顺序来更新适当的体系结构状态。为语义上的正确执 行,执行的结果在其引出之前是以最初的程序顺序进行的。可将异常作为引出 的指令触发。这样,异常不能随机地出现。它们以正确的顺序出现,并且处理 器10可在执行后正确的重新启动。
当微操作完成其结果并将其结果写到目的文件的时候,该微操作引出。每 周期引出的微操作可达3个。引出部分20中的重排序缓冲器(ROB)(未示出) 是处理器10中的单元,它缓冲已完成的微操作、按照顺序更新体系结构状态,并管理异常的排序。引出部分20也跟踪分支并将已更新的分支目标信息发送到BTB28,以更 新分支历史。如此,不再需要的轨迹可从轨迹高速缓存26中清除,并且可读 取新的分支路径,这是基于已更新的分支历史信息的。参考图2,示出执行环境50。给予处理器10上运行的任何程序或任务(图 1中的) 一组资源,用于执行指令并用于保存代码、数据和状态信息。这些资 源组成处理器10的执行环境50。在处理器10上运行的应用程序和操作系统或 者可执行文件共同使用执行环境50。执行环境50包括基本程序执行寄存器52、 地址空间54、浮点单元(FPU)寄存器56、多媒体扩展寄存器(MMX)58,以及 SIMD扩展(SSE和SSE2)寄存器60。在处理器10上运行的任何任务或程序可寻址直到40字节(232字节)的线性 地址基54以及直到640字节(236字节)的物理地址空间。地址空间54可为平坦 的或为分段的。使用物理地址扩展机制,可寻址236"的物理地址空间。基本程序执行寄存器52包括8个通用寄存器62、6个段寄存器64、EFLAGS 寄存器66,以及EIP (指令指针)寄存器68。基本程序执行寄存器52提供基 本执行环境,在其中执行一组通用指令。这些指令对字节、字和双字整数执行 基本整数算术,处理程序流控制,操作位和字节强度,并寻址存储器。FPU寄存器56包括8个FPU数据寄存器70、 FPU控制寄存器72、状态 寄存器74、 FPU指令指针寄存器76、 FPU操作数(数据)指针寄存器78、 FPU 标签寄存器80以及FPU操作码寄存器82。 FPU寄存器56提供执行环境,用 于操作单精度、双精度,以及双扩展精度浮点值,字、双字,以及四字整数, 还有二进制编码的十进制(BCD)值。8个多媒体扩展寄存器58支持64位封包字节、字和双字整数上的单指令、 多数据(SIMD)操作的执行。SIMD扩展(SSE和SSE2)寄存器60包括8个扩展多媒体(XMM)数据寄存 器84和MXCSR寄存器86。 SIMD扩展(SSE和SSE2)寄存器60支持128位封 包单精度和双精度浮点值以及128位封包字节、字、双字以及四字整数上的 SIMD操作的执行。桟(未示出)支持过程或子例程调用以及过程或子例程之间的参数传递。通用寄存器62可用于保存操作数和指针。段寄存器64保存的段选择器可 达6个。EFLAGS (程序状态和控制)寄存器66报告正被执行的程序状态,并允许处理器的有限(应用程序级)控制。EIP (指令指针)寄存器68包含指向 下一条要执行的指令的32位指针。32位通用寄存器62被提供用于保存逻辑和算术操作的操作数、地址计算 的操作数,以及存储器指针。段寄存器64保存64位段选择器。段选择器是识 别存储器中段的特别指针。为访问存储器中的特定段,该段的段选择器必须出 现在适当的段寄存器64中。当编写应用代码时,程序员通常用汇编命令和符号生成段选择器。然后, 汇编程序和其它的工具产生与这些命令和符号相关联的实际段选择器值。若写 系统代码,则程序设计员可能需要直接产生段选择器。如何使用段寄存器64取决于操作系统或可执行文件正使用的存储器管理 模式的类型。当使用平坦(未分段)存储器模式时,段寄存器64被装入指向 重叠段的段选择器,它们每个开始于线性地址空间上的地址零。然后,这些重 叠的段包括该程序的线性地址空间。通常,两个重叠段被定义 一个用于代码, 而另一个用于数据和栈。段寄存器64的CS段寄存器(未示出)指向代码段, 且所有其它的段寄存器指向数据和栈段。当使用分段存储器模式时,每个段寄存器64 —般被装入不同的段选择器, 以使每个段寄存器64指向线性地址空间内的不同段。在任何时间,程序可这 样访问直到线性地址空间中的6个段。为访问没有被其中一个段寄存器64指 到的段,程序首先装入要被访问的段选择器到段寄存器64中。32位EFLAGS寄存器66包含一组状态标记、控制标记,以及一组系统标 记。可使用专用指令来直接修改EFLAGS寄存器66中的某些标记。没有指令 允许整个寄存器66被直接检查或修改。然而,下面的指令可被用来将移动标 记组移入或移出过程栈或通用寄存器LAHF、 SAHF、 push-F、 push-FD、 pop-F, 以及pop-FD。在EFLAGS寄存器66的内容已经被传递到过程栈或通用寄存器 之后,可使用处理器IO位操作指令来检查和修改该标记。当暂停任务时,处理器10自动保存正被暂停任务的任务状态段(TSS)(未 示出)中的EFLAGS寄存器66的状态。当将其自身绑定到新的任务时,处理 器10将来自新的任务程序状态寄存器(PSS,未示出)的数据装入EFLAGS寄存 器66o当调用中断或异常处理程序过程时,处理器10自动保存过程栈上的 EFLAGS寄存器66的状态。当用任务开关来处理中断或异常时,EFLAGS寄存器66的状态被保存在正被暂停任务的TSS上。用在处理器10中的基本数据类型是字节、字、双字、四字和双四字。字 节是8位,字是两个字节(16位),双字是4个字节(32位),四字是8个 字节(64位),以及双四字是16个字节(128位)。参考图3,它示出每个基本数据类型在作为存储器中的操作数引用时的字 节顺序。每个数据类型的低字节(位0 7)占用存储器中的最低地址,且该地 址也是该操作数的地址。字、双字和四字不必在存储器中在自然边界上对齐。字、双字、四字的自 然边界分别是已编号为偶数的地址、可被4整除的地址,以及被8整除的地址。 然而,为改善程序的性能,数据结构(尤其是栈)每逢可能的时候就应在自然 边界上对齐。关于这个的原因是处理器10需要两个存储器访问来进行不对齐 的存储器访问,然而已经对齐的访问需要一个存储器访问。跨越4字节边界的 字或双字操作数或者跨越8字节边界的四字操作数被认为是未对齐,且需要两 个单独的存储器总线周期来访问。开始于奇地址但不跨越字边界的字被认为是 已经对齐的,且其仍旧能够在一个总线周期内被访问。对双四字操作的某些指令需要存储器操作数在自然边界上对齐。若未对齐 的操作数被指定的话,则这些指令产生普通保护异常^GP)。双四字的自然边界 是任何可被16整除的地址。其它对双四字操作的指令允许未对齐的访问,而 不产生普通保护异常,然而,我们需要附加的存储器总线周期来从存储器访问 未对齐数据。尽管字节、字和双字是处理器10的基本数据类型,但是某些指令支持这 些数据类型的附加解释,以允许对数字数据类型执行操作。例如,处理器10 定义两种类型的整数无符号的和有符号的。无符号的整数是范围从零到最大正数的普通二进制数值,可在选择的操作数大小内对其进行编码。有符号的整 数是二的补码二进制数值,其既可被用来代表正整数值,也可以被用来代表负整数值。处理器10定义并操作3种浮点数据类型单精度浮点、双精度浮点,以 及双扩展精度浮点。这些数据类型的数据格式直接对应于二进制浮点算术如在 IEEE标准754中指定的格式。指针是存储器中位置的地址。处理器IO定义两种类型的指针近指针(32 位)和远指针(48位)。近指针是段内32位偏移量(也称作有效地址)。当隐含地确定了被访问的段的身份时,近指针被用于平坦存储器模型中的所有存储器参考或分段模型中的参考。远指针是48位逻辑地址,其包含16位段选择 器和32位偏移量。远指针被用于存储器参考和已分段的存储器模型,那里正 被访问段的身份必须被显式指定。位字段是连续的位序列。它可开始于存储器中任何字节的任何比特位置, 且其包含的位可达32位。串可为位、字节、字或双字的连续序列。位串可开 始于任何字节的任何比特位置,且其包含的位可达232—'位。字节串可包含字节、 字或双字,其范围可从零到232— 字节(4G字节)。二进制编码的十进制整数(BCD整数)是具有范围从0到9的有效值的无 符号4位整数。处理器10定义对位于一个或多个通用寄存器62或在一个或多 个FPU寄存器56中的BCD整数的操作。参考图4,实数被表达为FPU 56浮点寄存器70中的浮点格式100。该浮 点格式包括3部分,S卩,符号102、有效数104和指数106。符号102是表明 该数是正(0)或负(1)的二进制数值。有效数104有两个部分1位二进制 整数(也称为J位)108和二进制分数110。整数位108通常没有被表达,而是 隐含的值。指数106是表达与有效数104相乘的以2为底的幂的二进制整数。处理器10定义一组64位和128位封包数据类型并对其操作,这用于SIMD 操作中。这些数据类型包括基本数据类型(封包字节、字、双字和四字)以及 用于封包整数和封包浮点操作中的基本数据类型的数字解释。主要在64位多媒体扩展寄存器58中操作64位SIMD数据类型。基本的 64位封包数据类型是封包字节、封包字和封包双字。当在多媒体扩展寄存器 58中的这些数据类型上执行数字SIMD操作时,这些数据类型被解释为包含字 节、字,或双字整数值。主要在128位扩展多媒体(MMX)寄存器84和存储器54中操作128位封包 SIMD数据类型。基本的128位封包数据类型是封包字节、封包字、封包双字 和封包四字。当在扩展多媒体(MMX)寄存器84中的这些基本数据类型上执行 SIMD操作时,这些数据类型被解释为包含封包的或定标器单精度浮点或双精 度浮点值,或者被解释为包含封包的字节、字、双字、四字整数值。参考图5,表120示出这样的概要,它包含各种SIMD扩展、被操作的数 据类型,以及这些数据类型如何被封包到多媒体扩展寄存器58和扩展多媒体 (XMM)寄存器84中。如上所述,多媒体扩展指令操作包含于存储器54、多媒体扩展寄存器58, 和/或通用寄存器62内的封包字节、字、双字或四字整数操作数。这些多媒体 扩展指令包括数据传递指令、转换指令、封包算术指令、比较指令、逻辑指令、 移位和旋转指令以及状态管理指令。SIMD扩展(SSE和SSE2)指令被分为一些组,如4组SIMD单精度浮点 指令,它在扩展多媒体(XMM)寄存器84上操作,MXSCR指令,它在MXCSR 寄存器86上操作,64位SIMD整数指令,它在MMX寄存器58上操作,以及 可高速缓存性控制、预取还有对指令进行排序的指令。一类指令是移动/装入以及复制类型指令。这些指令被称为"组合的"指令, 这是因为它们不需要在被装入的数值上进行显式操作来获得例如位的复制。本 体系结构包括MOVDDUP指令、MOVSHDUP指令和MOVSLDUP指令。提供 这些指令以支持具有封包单精度和封包双精度浮点数据类型的复杂算术。这些 指令可被用在不同的应用中。例如,这些指令可改善信号处理应用和包括处理 自然数据类型的应用的效率。MOVDDUP指令是装入/移动64位(若源是寄存器的话,就是位[63-0]) 的移动一个双浮点并复制的SSE2指令。MOVDDUP指令的执行返回和同一结 果寄存器的较低和较高的一半两者中的相同的64位,也就是说,从该源复制 64位。这样,若该源具有条目1/0,则该目的文件将具有条目1/0/1/0。 MOVEDDUP指令具有下面的格式MOVEDDUP目的,源其中源操作数是存储器位置54或第二个扩展多媒体(XMM)寄存器84,且 该目的操作数是第一个扩展多媒体(XMM)寄存器84。该源包含双浮点数据类型。在操作中,若源操作数是存储器地址,则第一个扩展多媒体(XMM)寄存器 的位[63-0]用该存储器地址的位[63-0]来装入,且第一个扩展多媒体(XMM)寄存 器的位[127-64]用存储器位置的位[63-0]来装入。若源操作数是第二个扩展多媒 体(XMM)寄存器,则第一个扩展多媒体(XMM)寄存器的位[63-0]被设置为与第 二个扩展多媒体(XMM)寄存器的位[63-0]相等,且第一个扩展多媒体(XMM)寄 存器的位[127-64]被设置为与第二个扩展多媒体(XMM)寄存器的位[63-0]相等。线性地址对应于参考存储器数据的最低有效字节的地址。当指出存储器地 址时,位于存储器位置数据的16字节被装入或被保存。当使用寄存器一寄存13器形式的操作时,128位源寄存器的内容被复制到128位目的寄存器中。
MOVSHDUP指令是装入/移动128位并复制作为结果的寄存器中的条目1和3的移动封包单浮点高并复制的SSE2指令。在128位源寄存器带宽的例子中,每个条目是32位。特别地,具有为3/2/1/0条目的源(O是低的单精度条目,3是高的单精度条目),在MOVSHDUP指令执行之后的结果寄存器将保存被复制以提供条目3/3/1/1的条目3和1。 MOVSHDUP具有下面的格式MOVSHDUP目的,源
其中源操作数代表存储器位置54或第二个扩展多媒体(XMM)寄存器84,且该目的操作数是第一个扩展多媒体(XMM)寄存器84。该源操作数具有封包单浮点数据类型。
在操作中,若该源操作数是存储器地址,则第一个扩展多媒体(XMM)寄存器的位[31-0]用该存储器地址的位[63-32]来装入,第一个扩展多媒体(XMM)寄存器的位63-32用存储器地址的位[63-32]来装入,第一个扩展多媒体(XMM)寄存器的位95-64用存储器地址的位[127-96]来装入,且第一个扩展多媒体(XMM)寄存器的位127-96用存储器地址的位[127-96]来装入。
若源操作数是第二个扩展多媒体(XMM)寄存器,则第一个扩展多媒体(XMM)寄存器的位[31-0]被设置为与第二个扩展多媒体(XMM)寄存器的为[63-32]相等,第一个扩展多媒体(XMM)寄存器的位[63-32]被设置为与第二个扩展多媒体(XMM)寄存器的位[83-32]相等,第一个扩展多媒体(XMM)寄存器的位[95-64]被设置为与第二个扩展多媒体(XMM)寄存器的位[127-96]相等,且第一个扩展多媒体(XMM)寄存器的位[127-96]被设置为与第二个扩展多媒体(XMM)寄存器的位[127-96]相等。
线性地址对应于参考存储器数据的最低有效字节的地址。当指示存储器地址时,位于存储器位置数据的16字节被装入或被保存。当使用寄存器一寄存器形式的操作时,128位源寄存器的内容被复制到128位目的寄存器中。
MOVSHDUP指令是复制装入/移动128位并复制条目0和2的移动封包单浮点低并复制的SSE2指令。特别地,具有为3/2/1/0的源(0是较低的单精度条目),结果寄存器将保存条目2/2/0/0。 MOVSLDUP指令具有下面的格式
MOVSLDUP目的,源
其中该源操作数是存储器位置54或第二个扩展多媒体(XMM)寄存器84,且该目的操作数是第一个扩展多媒体(XMM)寄存器84。该源操作数包含封包单浮点数据类型。
在操作中,若该源操作数是存储器地址,则第一个扩展多媒体(XMM)寄存
器的位[31-0]用该存储器地址的位[31-0]来装入,第一个扩展多媒体(XMM)寄存器的位[63-32]用存储器地址的位[31-0]来装入,第一个扩展多媒体(XMM)寄存器的位[95-64]用存储器地址的位[95-64]来装入,且第一个扩展多媒体(XMM)寄存器的位[127-96]用存储器地址的位[95-64]来装入。若源操作数是寄存器,则第一个扩展多媒体(XMM)寄存器的位[31-0]被设置为与第二个扩展多媒体(XMM)寄存器的位[31-0]相等,第一个扩展多媒体(XMM)寄存器的位[63-32]被设置为与第二个扩展多媒体(XMM)寄存器的位[31-0]相等,第一个扩展多媒体(XMM)寄存器的位[95-64]被设置为与第二个扩展多媒体(XMM)寄存器的位[95-64]相等,且第一个扩展多媒体(XMM)寄存器的位[127-96]被设置为与第二个扩展多媒体(XMM)寄存器的位[95-64]相等。
线性地址对应于参考存储器数据的最低有效字节的地址。当指示存储器地址时,位于存储器位置数据的16字节被装入或被保存。当使用寄存器—寄存器形式的操作时,128位源寄存器的内容被复制到128位目的寄存器中。
因此,其它的实施例在下面权利要求书的范围内。
权利要求
1. 一种处理器,包括一级数据缓存;二级缓存;分支预测单元;通用寄存器组;解码单元,以解码包括移动和复制指令的多个封包的数据指令;以及执行单元,以响应于指令执行功能,其中一个指令包括移动和复制指令,使得所述处理器将将源的多个位组装入目的寄存器的多个不连续的位组,并把所述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
2. 如权利要求1所述的处理器,其特征在于,所述源的所述多个位组是代表存储器位置中的双封包双浮点数据的128位。
3. 如权利要求1所述的处理器,其特征在于,所述源的所述多个位组是代表源寄存器中的双封包双浮点的128位。
4. 如权利要求1所述的处理器,其特征在于,所述目的寄存器的多个位组被装入所述源的第一组的位[63-0]。
5. 如权利要求1所述的处理器,其特征在于,所述源是第一寄存器,用于存储128位的封包数据,也用作存储浮点数据的浮点寄存器。
6. 如权利要求1所述的处理器,还包括退役(retirement)单元。
7. —种处理器,包括一级数据缓存;二级缓存;分支预测单元;控制器逻辑单元;通用寄存器组;解码单元,以解码包括移动和复制指令的多个封包的数据指令;以及执行单元,以响应于指令执行功能,其中一个指令包括移动封包单浮点高和复制指令,以使得处理器将源的位[63-32]装入128位的目的寄存器的位[31-0]中,将目的寄存器的位[31-0]复制到该目的寄存器的位[63-32]中,将源的位[127-96]装入目的寄存器的位[95-64]中,以及在所述目的寄存器的位[127-96]中复制所述目的寄存器的位[95-64〗。
8. 如权利要求7所述的处理器,其特征在于,所述移动和复制指令还包括源操作数字段;以及目的操作数字段。
9. 如权利要求7所述的处理器,其特征在于,所述源是128位源寄存器。
10. 如权利要求7所述的处理器,其特征在于,所述源的所述多个位组是代表存储器位置中的四封包单浮点数据的128位。
11. 如权利要求7所述的处理器,其特征在于,所述源的所述多个位组是代表源寄存器中的四封包双浮点的128位。
12. 如权利要求7所述的处理器,其特征在于,所述源是第一寄存器,用于存储128位的封包数据,也用作存储浮点数据的浮点寄存器。
13. 如权利要求7所述的处理器,还包括退役单元。
14. 一种处理器,包括一级数据缓存;二级缓存;分支预测单元;通用寄存器组;解码单元,以解码包括移动和复制指令的多个封包的数据指令;以及执行单元,以响应于指令执行功能,其中一个指令包括移动封包单浮点低和复制指令,以使得处理器把源的位[31-0]装入到128位的目的寄存器的位[31-0]中,在所述目的寄存器的位[63-32]中复制该目的寄存器的位[31-0],在所述目的寄存器的位[95-64]中装入所述源的位[95-64],以及在所述目的寄存器的位[127-96]中复制所述目的寄存器的位[95-64]。
15. 如权利要求14所述的处理器,其特征在于,所述移动和复制指令还包括源操作数字段;以及目的操作数字段。
16. 如权利要求14所述的处理器,其特征在于,所述源是128位源寄存器。
17. 如权利要求14所述的处理器,其特征在于,所述源的所述多个位组是代表存储器位置中的四封包单浮点数据的128位。
18. 如权利要求14所述的处理器,其特征在于,所述源的所述多个位组是代表源寄存器中的四封包双浮点的128位。
19. 如权利要求14所述的处理器,其特征在于,所述源是第一寄存器,用于存储128位的封包数据,也用作存储浮点数据的浮点寄存器。
20. 如权利要求14所述的处理器,还包括退役单元。
全文摘要
一种方法包括,在处理器中,装入/移动源的第一部分位到目标寄存器的第一部分并在目标寄存器的后续部分中复制所述第一部分位。
文档编号G06F1/00GK101520723SQ20091013316
公开日2009年9月2日 申请日期2002年12月12日 优先权日2001年12月20日
发明者P·罗塞尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1