CN02825327.2
2002.12.12
CN1605062A
2005.04.06
授权
有权
授权|||实质审查的生效|||公开
G06F9/315; G06F9/312
英特尔公司;
P·罗塞尔
美国加利福尼亚州
2001.12.20 US 10/032,144
上海专利商标事务所
李家麟
一种方法包括,在处理器中,装入/移动源的第一部分位到目标寄存器的第一部分并在目标寄存器的后续部分中复制所述第一部分位。
1. 一种计算机指令,其特征在于,所述指令包含:移动和复制指令,所述指令促使处理器将源的第一部分位装入目的寄存器的第一部分,并在所述目的寄存器的后续部分中复制所述第一部分位。2. 如权利要求1所述的指令,其特征在于,所述源的所述第一部分是代表存储器位置中的双浮点数据类型的64位。3. 如权利要求1所述的指令,其特征在于,所述源的所述第一部分是代表源寄存器中的双浮点数据类型的64位。4. 如权利要求1所述的指令,其特征在于,所述目的寄存器的所述第一部分被装入所述源的所述第一部分的位[63-0],且所述目的寄存器的所述后续部分被装入所述源的所述第一部分的位[63-0]。5. 一种方法,其特征在于,所述方法包含:在处理器中,将源的第一部分位装入到目的寄存器的第一部分;以及在所述目的寄存器的后续部分中复制所述第一部分位。6. 如权利要求5所述的方法,其特征在于,所述源的所述第一部分是代表存储器位置中双浮点数据类型的64位。7. 如权利要求5所述的方法,其特征在于,所述源的所述第一部分是代表源寄存器中双浮点数据类型的64位。8. 如权利要求5所述的方法,其特征在于,所述目的寄存器的所述第一部分被装入所述源的所述第一部分的位[63-0],且所述目的寄存器的所述后续部分被装入所述源的所述第一部分的位[63-0]。9. 一种驻留在计算机可读媒体上的计算机程序产品,其特征在于,具有保存于其上的指令,所述指令当由所述处理器执行时,促使所述处理器:将源的第一部分位装入到目的寄存器的第一部分中;以及在所述目的寄存器的后续部分中复制所述第一部分位。10. 如权利要求9所述的计算机程序产品,其特征在于,所述源的所述第一部分是代表存储器位置中双浮点数据类型的64位。11. 如权利要求9所述的计算机程序产品,其特征在于,所述源的所述第一部分是代表源寄存器中双浮点数据类型的64位。12. 如权利要求9所述的计算机程序产品,其特征在于,所述目的寄存器的所述第一部分被装入所述源的所述第一部分的位[63-0],且所述目的寄存器的所述后续部分被装入所述源的所述第一部分的位[63-0]。13. 一种计算机指令,其特征在于,所述指令包含:移动一个双浮点以及复制这样的指令,所述促使处理器装入源的64位并返回目的的较低一半和目的的较高一半中的所述64位。14. 如权利要求13所述的指令,其特征在于,进一步包含:源操作数;以及目的操作数。15. 如权利要求13所述的指令,其特征在于,所述源操作数是存储器位置。16. 如权利要求15所述的指令,其特征在于,所述存储器位置具有代表双浮点数据类型的128位数值。17. 如权利要求13所述的指令,其特征在于,所述源操作数是128位源寄存器。18. 如权利要求17所述的指令,其特征在于,所述源寄存器具有代表双浮点数据类型的128位数值。19. 一种在处理器中执行的方法,其特征在于,所述方法包含:将来自源的第一个数N个位装入到2N宽位的目的寄存器的较低一半中和2N位宽的目的寄存器的较高一半中。20. 如权利要求19所述的方法,其特征在于,所述源是存储器位置,而且那里N是64位。 21.如权利要求20所述的方法,其特征在于,所述存储器位置包含双浮点数据类型。22. 如权利要求19所述的方法,其特征在于,所述源是128位源寄存器,且N是64位。23. 如权利要求19所述的方法,其特征在于,所述128位源寄存器包含双浮点数据类型。24. 一种驻留在计算机可读媒体上的计算机程序产品,其特征在于,具有保存于其上的指令,所述指令当由所述处理器执行时,促使所述处理器:将来自源的64位装入到128位的目的寄存器的较低一半中以及所述128位的目的寄存器的较高一半中。25. 如权利要求24所述的计算机程序产品,其特征在于,所述源是包含128位双浮点数据类型的存储器位置。26. 如权利要求24所述的计算机程序产品,其特征在于,所述源是包含128位双浮点数据类型的128位源寄存器。27. 一种计算机指令,其特征在于,所述指令包含:移动封包单浮点高和复制这样的指令,所述指令促使处理器装入源的位[127-0],并在128位的目的寄存器的位[31-0]中返回所述源的位[63-32]、在所述目的寄存器的位[63-32]中返回源的位[63-32]、在所述目的寄存器的位[95-64]中返回源的位[127-96]以及在所述目的寄存器的位[127-96]中返回所述源的位[127-96]。28. 如权利要求27所述的指令,其特征在于,进一步包含:源操作数字段;以及目的操作数字段。29. 如权利要求27所述的指令,其特征在于,所述源操作数是存储器位置。30. 如权利要求29所述的指令,其特征在于,所述存储器位置具有代表封包单浮点数据类型的128位。31. 如权利要求27所述的指令,其特征在于,所述源操作数是128位源寄存器。32. 如权利要求31所述的指令,其特征在于,所述源寄存器具有代表封包单浮点数据类型的128位。33. 一种在处理器中执行的方法,其特征在于,所述方法包含:访问源的位[127-0];以及在所述目的寄存器的位[31-0]和位[63-32]中返回所述源的位[63-32];以及在所述目的寄存器的位[95-64]和位[127-96]中返回所述源的位[127-96]。34. 如权利要求33所述的方法,其特征在于,所述源是存储器位置。35. 如权利要求34所述的方法,其特征在于,所述存储器位置包含封包单浮点数据类型。36. 如权利要求33所述的方法,其特征在于,所述源是128位源寄存器。37. 如权利要求36所述的方法,其特征在于,所述128位源寄存器包含封包单浮点数据类型。38. 一种驻留在计算机可读媒体上的计算机程序产品,其特征在于,具有保存于其上的指令,所述指令当由所述处理器执行时,促使所述处理器:装入源的位[127-0];在128位的目的寄存器的位[31-0]中返回所述源的位[63-32];在所述目的寄存器的位[63-32]中返回所述源的位[63-32];在所述目的寄存器的位[95-64]中返回所述源的位[127-96];以及在所述目的寄存器的位[127-96]中返回所述源的位[127-96]。39. 如权利要求38所述的计算机程序产品,其特征在于,所述源是存储器位置。40. 如权利要求39所述的计算机程序产品,其特征在于,所述存储器位置包含封包单浮点数据类型。41. 如权利要求38所述的计算机程序产品,其特征在于,所述源是128位源寄存器。42. 如权利要求41所述的计算机程序产品,其特征在于,所述128位源寄存器包含封包单浮点数据类型。43. 一种计算机指令,其特征在于,所述指令包含:移动封包单浮点低和复制这样的指令,所述指令促使处理器装入源的位[127-0]并在128位的目的寄存器的位[31-0]中返回源的位[31-0]、在所述目的寄存器的位[63-32]中返回所述源的位[31-0]、在所述目的寄存器的位[95-64]中返回所述源的位[95-64]以及在所述目的寄存器的位[127-96]中返回所述源的位[95-64]。44. 如权利要求43所述的指令,其特征在于,进一步包含:源地址字段;以及目的寄存器。45. 如权利要求44所述的指令,其特征在于,所述源是存储器位置。46. 如权利要求45所述的指令,其特征在于,所述存储器位置包含代表封包单浮点数据类型的128位。47. 如权利要求43所述的指令,其特征在于,所述源是128位源寄存器。48. 如权利要求47所述的指令,其特征在于,所述源寄存器包含代表封包单浮点数据类型的128位。49. 一种方法,其特征在于,所述方法包含:在处理器中,装入源的位[127-0];在128位的目的寄存器的位[31-0]中返回所述源的位[31-0];在所述目的寄存器的位[63-32]中返回所述源的位[31-0];在所述目的寄存器的位[95-64]中返回所述源的位[95-64];以及在所述目的寄存器的位[127-96]中返回所述源的位[95-64]。50. 如权利要求49所述的方法,其特征在于,所述源是存储器位置。51. 如权利要求50所述的方法,其特征在于,所述存储器位置包含封包单浮点数据类型。52. 如权利要求51所述的方法,其特征在于,所述源是128位源寄存器。53. 如权利要求52所述的方法,其特征在于,所述128位源寄存器包含封包单浮点数据类型。54. 一种驻留在计算机可读媒体上的计算机程序产品,其特征在于,具有保存于其上的指令,所述指令当由所述处理器执行时,促使所述处理器:装入源的位[127-0];在128位的目的寄存器的位[31-0]中返回所述源的位[31-0];在所述目的寄存器的位[63-32]中返回所述源的位[31-0];在所述目的寄存器的位[95-64]中返回所述源的位[95-64];以及在所述目的寄存器的位[127-96]中返回所述源的位[95-64]。55. 如权利要求54所述的计算机程序产品,其特征在于,所述源是存储器位置。56. 如权利要求55所述的计算机程序产品,其特征在于,所述存储器位置包含封包单浮点数据类型。57. 如权利要求54所述的计算机程序产品,其特征在于,所述源是128位源寄存器。58. 如权利要求57所述的计算机程序产品,其特征在于,所述128位源寄存器包含封包单浮点数据类型。
处理器的装入/移动以及复制指令 技术领域 本发明涉及处理器的装入/移动以及复制指令。 发明背景 系统体系结构说明处理器操作的模式以及被提供用于支持操作系统的机制,该机制包括面向系统的寄存器和数据结构以及面向系统的指令。该系统体系结构也提供用于在实际地址和保护模式之间切换的必要机制。 对系统体系结构引入单指令、多数据(SIMD)技术提供了对包含于64位寄存器内的封包整数数据的并行计算。SIMD对例如高级媒体、图像处理和数据压缩应用中的处理器提供增强性能。 图1是处理器的框图。 图2是执行环境的框图。 图3是字节顺序基本数据类型的框图。 图4示出浮点格式。 图5示出概括各种SIMD扩展、数据类型以及该数据类型如何被封包到寄存器中的表。 参考图1,示出处理器10。该处理器10是三路超级计数器、管道体系结构。处理器10通过使用并行处理技术,平均能够在每个时钟周期中解码、分派以及完成(引出)三条指令的执行。为处理这个水平的指令吞吐量,处理器10使用分离的12阶段管道,该管道支持无序的指令执行。处理器10的微体系结构管道被分为4个部分,即,一级高速缓存12和二级高速缓存14、前端16、无序执行核心18,以及引出部分20。指令和数据通过与系统总线24连接的总线接口单元22供给给这些单元。前端16以程序顺序向该无序核心18供给指令,该核心具有非常高的执行带宽且能够执行具有1/2时钟周期延时的基本整数操作。前端16读取指令并将指令解码为称作微操作(μ-ops)的简单操作。前端16能以最初的程序顺序在每周期将多个微操作提交到无序核心18。前端16执行几个基本功能。例如,前端16执行很有可能被执行的预取指令、读取还没有被预取的指令、将指令解码为微操作、产生复杂指令和特殊用途码的微码、递送来自执行轨迹高速缓存26的已经解码的指令,以及使用分支预测单元28中的高级算法来预测分支。 处理器10的前端16被设计为以高速处理管道微处理器中的某些普通问题。例如,这些问题中的两个是延迟的主要来源。这是解码从目标读取且由于高速缓存线中间的分支或分支目标而浪费解码带宽的指令的时间。 执行轨迹高速缓存26通过保存已经解码的指令而处理这两个问题。通过转换引擎(未示出)来读取指令并对指令进行解码,且该指令成为被称作轨迹的微操作序列的一部分。这些微操作轨迹被保存在轨迹高速缓存26中。来自最有可能的分支目标的指令立即跟随在该分支的后面,而不考虑指令地址的连续性。一旦建立轨迹,则搜索轨迹高速缓存26查找跟随在该轨迹后面的指令。若该指令显现为现有轨迹内的第一条指令,则对来自存储器层次的指令30的读取和解码就停止,且轨迹高速缓存26变成新的指令源。 执行轨迹高速缓存18和转换引擎(未示出)具有协同操作分支预测硬件。使用分支目标缓冲器(BTBS)28,基于分支目标的线性地址来预测该分支目标,且尽快读取该分支目标。若分支目标确实被缓冲在那里,则从轨迹高速缓存26读取该分支目标;否则,从存储器层次读取该分支目标。转换引擎的分支预测信息被用来沿着最有可能的路径来形成轨迹。 核心18无序地执行指令,允许处理器10重排序指令,以使若一个微操作在 等待数据或竞争执行资源时被延迟,则其它在程序顺序中较后的微操作可在其周围继续进行。处理器10使用几个缓冲器来使T操作(T-ops)流平滑。这意味着当管道的一部分经历延迟时,该延迟可被其它并行执行的操作或者在缓冲器中先前排队等候的微操作执行覆盖。 核心18被设计为促进并行执行。核心18每周期最多可分派6个微操作;注意这个超过轨迹高速缓存26以及引出20微操作带宽。绝大多数的管道可在每周期开始执行新的微操作,以使可在任何时间对每个管道处理几个指令。多个算术逻辑单元(ALU)指令可在每周期开始两个,且多个浮点指令可在每两个周期开始一个。最终,微操作的数据输入一准备好且资源一旦可用,微指令就可开始无序的执行。 引出部分20接收来自执行核心18的执行微操作的结果,并对该结果进行处理,以使根据最初程序顺序来更新适当的体系结构状态。为语义上的正确执行,执行的结果在其引出之前是以最初的程序顺序进行的。可将异常作为引出的指令触发。这样,异常不能随机地出现。它们以正确的顺序出现,并且处理器10可在执行后正确的重新启动。 当微操作完成其结果并将其结果写到目地文件的时候,该微操作引出。每周期引出的微操作可达3个。引出部分20中的重排序缓冲器(ROB)(未示出)是处理器10中的单元,它缓冲已完成的微操作、按照顺序更新体系结构状态,并管理异常的排序。 引出部分20也跟踪分支并将已更新的分支目标信息发送到BTB 28,以更新分支历史。如此,不再需要的轨迹可从轨迹高速缓存26中清除,并且可读取新的分支路径,这是基于已更新的分支历史信息的。 参考图2,示出执行环境50。给予处理器10上运行的任何程序或任务(图1中的)一组资源,用于执行指令并用于保存代码、数据和状态信息。这些资源组成处理器10的执行环境50。在处理器10上运行的应用程序和操作系统或者可执行文件共同使用执行环境50。执行环境50包括基本程序执行寄存器52、地址空间54、浮点单元(FPU)寄存器56、多媒体扩展寄存器(MMX)58,以及SIMD扩展(SSE和SSE2)寄存器60。 在处理器10上运行的任何任务或程序可寻址直到4G字节(232字节)的线性地址基54以及直到64G字节(236字节)的物理地址空间。地址空间54可为平坦的或为分段的。使用物理地址扩展机制,可寻址236-1的物理地址空间。 基本程序执行寄存器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的内容已经被传递到过程栈或通用寄存器之后,可使用处理器10位操作指令来检查和修改该标记。 当暂停任务时,处理器10自动保存正被暂停任务的任务状态段(TSS)(未示出)中的EFLAGS寄存器66的状态。当将其自身绑定到新的任务时,处理器10从新的任务程序状态寄存器(PSS,未示出)将数据装入EFLAGS寄存器66。 当调用中断或异常处理程序过程时,处理器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中指定的格式。 指针是存储器中位置的地址。处理器10定义两种类型的指针:近指针(32位)和远指针(48位)。近指针是段内32位偏移量(也称作有效地址)。当隐含地确定了被访问的段的身份时,近指针被用于平坦存储器模型中的所有存储器参考或分段模型中的参考。远指针是48位逻辑地址,其包含16位段选择器和32位偏移量。远指针被用于存储器参考和已分段的存储器模型,那里正被访问段的身份必须被明确指定。 位字段是连续的位序列。它可开始于存储器中任何字节的任何比特位置,且其包含的位可达32位。串可为位、字节、字或双字的连续序列。位串可开始于任何字节的任何数位位置,且其包含的位可达232-1位。字节串可包含字节、字或双字,其范围可从零到232-1字节(4G字节)。 二进制编码的十进制整数(BCD整数)是具有范围从0到9的有效值的无符号4位整数。处理器10定义对位于一个或多个通用寄存器62或在一个或多个FPU寄存器56中的BCD整数的操作。 参考图4,实数被表达为FPU 56浮点寄存器70中的浮点格式100。该浮点格式包括3部分,即,符号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字节被装入或被保存。当使用寄存器-寄存器形式的操作时,128位源寄存器的内容被复制到128位目的寄存器中。 MOVSHDUP指令是移动填塞的单浮点高,并复制装入/移动128位并复制作为结果的寄存器中的条目1和3的SSE2指令。在128位源寄存器带宽的例子中,每个条目是32位。特别地,具有为3/2/1/0条目的源(0是低的单精度条目,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位目的寄存器中。 因此,其它的实施例在下面权利要求书的范围内。
《处理器的装入/移动以及复制指令.pdf》由会员分享,可在线阅读,更多相关《处理器的装入/移动以及复制指令.pdf(21页珍藏版)》请在专利查询网上搜索。
一种方法包括,在处理器中,装入/移动源的第一部分位到目标寄存器的第一部分并在目标寄存器的后续部分中复制所述第一部分位。。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1