用于执行点积运算的指令和逻辑的制作方法_4

文档序号:9304411阅读:来源:国知局
本文中用来表示用作标识操作数的宏指令的一部分的板载 (on-board)处理器存储单元。换言之,本文提到的寄存器是从处理器外部(从程序员的角 度)可见的。但是,实施例的寄存器的含义不应当限于特定类型的电路。而是,实施例的寄 存器只需要能够存储和提供数据以及执行本文所述的功能。本文所述的寄存器可通过处理 器中的电路采用任何数量的不同技术来实现,例如专用物理寄存器、采用寄存器重命名的 动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存 器存储32位整数数据。一个实施例的寄存器文件还包含用于打包数据的16个XMM和通 用寄存器、8个多媒体(例如"EM64T"加法)多媒体SB?寄存器。对于以下论述,寄存器被 理解为设计成保存打包数据的数据寄存器,例如采用IntelCorporation(SantaClara, California)开发的MMX技术实现的微处理器中的64位宽MMX?寄存器(在某些情况下又称 作"mm"寄存器)。可用于整数和浮点这两种形式的这些MMX寄存器可与伴随S頂D和SSE指 令的打包数据元素配合操作。类似地,与SSE2、SSE3、SSE4或者以上(一般性地称作"SSEx") 的技术有关的128位宽XMM寄存器也可用于保存这类打包数据操作数。在该实施例中,在 存储打包数据和整数数据时,寄存器无需区分这两种数据类型。
[0052] 在以下附图的实例中,描述了多个数据操作数。图3A示出根据本发明的一个实施 例的多媒体寄存器中的各种打包数据类型表示。图3A示出128位宽操作数的打包字节310、 打包字320和打包双字(dword) 330的数据类型。该实例的打包字节格式310是128位长 的,并包含16个打包字节数据元素。字节在这里定义为8位的数据。各字节数据元素的信 息是这样存储的:字节〇存储在〇至7位,字节1存储在8至15位,字节2存储在16至23 位,以及最后,字节15存储在120至127位。这样,寄存器中的所有可用的位都被使用。这 种存储设置增加了处理器的存储效率。另外,通过访问16个数据元素,现在可并行地对16 个数据元素执行一个操作。
[0053] -般来说,数据元素是与相同长度的其它数据元素一起存储在单个寄存器或存储 单元中的一段单独的数据。在与SSEx技术相关的打包数据序列中,XMM寄存器中存储的数 据元素的数量是128位除以单独的数据元素的位的长度。类似地,在与MMX和SSE技术相 关的打包数据序列中,MMX寄存器中存储的数据元素的数量是64位除以单独的数据元素的 位的长度。虽然图3A所示的数据类型为128位长,但是,本发明的实施例还可与64位宽或 者其它大小的操作数配合操作。该实例的打包字格式320是128位长的,并且包含8个打 包字数据元素。各打包字包含16位的信息。图3A的打包双字格式330是128位长,并且 包含四个打包双字数据元素。各打包双字数据元素包含32位的信息。打包四字是128位 长的,并包含两个打包四字数据元素。
[0054] 图3B示出备选的寄存器中数据存储格式。各打包数据可包括一个以上独立数据 元素。示出三种打包数据格式,即打包半字341、打包单字342和打包双字343。打包半字 341、打包单字342和打包双字343的一个实施例包含定点数据元素。对于一备选实施例, 打包半字341、打包单字342和打包双字343这三者中的一个或多个可包含浮点数据元素。 打包半字341的一个备选实施例是包含八个16位数据元素的128位长的。打包单字342的 一个实施例为128位长,并且包含四个32位数据元素。打包双字343的一个实施例为128 位长,并且包含两个64位数据元素。大家会理解,这类打包数据格式还可扩展到其它寄存 器长度,例如扩展到96位、160位、192位、224位、256位或者更大的长度。
[0055] 图3C示出根据本发明的一个实施例的多媒体寄存器中的各种有符号和无符号打 包数据类型表示。无符号打包字节表示344示出在SHffi寄存器中的无符号打包字节的存 储。各字节数据元素的信息是这样存储的:字节零存储在零至七位,字节一存储在八至十五 位,字节二存储在十六至二十三位,以及最后,字节十五存储在一百二十至一百二十七位。 这样,寄存器中的所有可用的位都被使用。这种存储设置可增加处理器的存储效率。另外, 通过访问十六个数据元素,现在可通过并行方式对十六个数据元素执行一个操作。有符号 打包字节表示345示出有符号打包字节的存储。注意,每一个字节数据元素的第八位是符 号指示符。无符号打包字表示346示出如何在SHffi寄存器中存储字七至字零。有符号打 包字表示347与无符号打包字的寄存器内(in-register)表示346相似。注意,各字数据 元素的第十六位是符号指示符。无符号打包双字表示348示出如何存储双字数据元素。有 符号打包双字表示349与无符号打包双字的寄存器内表示348相似。注意,必要的符号位 是各双字数据元素的第三十二位。
[0056] 图3D是对操作编码(操作码)格式360的一个实施例的描述,其中具有三十二或者 更多位,以及寄存器/存储器操作数寻址模式符合在以下文献中描述的一种类型的操作码 格式:"IA-32Intel体系结构软件开发人员手册第2卷:指令集参考",可在万维网(胃w) 的intel.com/design/litcentr上从IntelCorporation(SantaClara,CA)获得。在一 个实施例中,点积操作可通过字段361和362这两者中的一个或多个来编码。可识别每个 指令总共两个操作数位置,包括总共两个源操作数标识符364和365。对于点积指令的一个 实施例,目标操作数标识符366与源操作数标识符364相同,而在其它实施例中,它们是不 同的。对于一备选实施例,目标操作数标识符366与源操作数标识符365相同,而在其它实 施例中,它们是不同的。在点积指令的一个实施例中,通过源操作数标识符364和365标识 的源操作数之一被点积操作的结果重写,而在其它实施例中,标识符364对应于源寄存器 元件,以及标识符365对应于目标寄存器元件。对于点积指令的一个实施例,操作数标识符 364和365可用来标识32位或64位源和目标操作数。
[0057] 图3E是对具有四十或更多位的另一种备选操作编码(操作码)格式370的描述。 操作码格式370与操作码格式360 -致,并包括任选的前置字节378。点积操作的类型可通 过字段378、371和372这三者中的一个或多个来编码。可通过源操作数标识符374和375 以及通过前置字节378来标识每个指令总共两个操作数位置。对于点积指令的一个实施 例,前置字节378可用来标识32位或64位源和目标操作数。对于点积指令的一个实施例, 目标操作数标识符376与源操作数标识符374相同,而在其它实施例中,它们是不同的。对 于一备选实施例,目标操作数标识符376与源操作数标识符375相同,而在其它实施例中, 它们是不同的。在一个实施例中,点积操作将操作数标识符374和375所标识的操作数之 一与操作数标识符374和375所标识的另一个操作数相乘,该点积操作的结果会重写所述 操作数中的一个,而在其它实施例中,标识符374和375所标识的操作数的点积被写入另 一个寄存器中的另一个数据元素。操作码格式360和370允许部分由MOD字段363和373 以及由任选的scale-index-base和偏移字节(displacementbyte)指定的寄存器到寄存 器(registertoregister)、存储器到寄存器(memorytoregister)、寄存器通过存储器 (registerbymemory)、寄存器通过寄存器(registerbyregister)、寄存器通过立即寻址 (registerbyimmediate)、寄存器到存储器(registertomemory)的寻址。
[0058] 接下来看图3F,在一些备选实施例中,64位单指令多数据(SHffi)算术运算可通过 协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380示出具有CDP操作码字 段382和389的一种这样的⑶P指令。对于点积操作的备选实施例,⑶P指令的类型可通 过字段383、384、387和388这四者中的一个或多个来编码。可标识每个指令总共三个操作 数位置,包括总共两个源操作数标识符385、390和一个目标操作数标识符386。协处理器 的一个实施例可对8、16、32和64位的值进行操作。对于一个实施例,对整数数据元素执行 点积操作。在一些实施例中,可采用选择字段381来有条件地执行点积指令。对于一些点 积指令,源数据大小可通过字段383来编码。在点积指令的一些实施例中,可在sn?字段 上进行零(Z)、负值(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可通过字段 384来编码。
[0059] 图4是根据本发明对打包数据操作数执行点积操作的逻辑的一个实施例的框图。 本发明的实施例可实现为与诸如以上所述之类的各种类型的操作数配合工作。对于一种实 现,根据本发明的点积操作实现为对指定数据类型进行操作的指令集。例如,提供点积打包 单精度(DPPS)指令以确定包括整数和浮点在内的32位数据类型的点积。类似地,提供点 积打包双精度(DPPD)指令以确定包括整数和浮点在内的64位数据类型的点积。虽然这些 指令具有不同名称,但它们执行的一般点积操作是相似的。为了简洁起见,以下论述和实例 在处理数据元素的点积指令的上下文中进行。
[0060] 在一个实施例中,点积指令识别各种信息,包括:第一数据操作数DATAA410的 标识符和第二数据操作数DATAB420的标识符,以及点积操作的所得结果RESULTANT440 的标识符(在一个实施例中,它可能与第一数据操作数标识符之一相同)。对于以下论述, DATAA、DATAB和RESULTANT-般称作操作数或数据块,但不限于此,并且还包括寄存器、寄 存器文件和存储单元。在一个实施例中,将各点积指令(DPPS、DPH))解码为一个微操作。在 一备选实施例中,可将各指令解码为各种数量的微操作,以对数据操作数执行点积操作。对 于该实例,操作数410、420是在具有字宽数据元素的源寄存器/存储器中存储的128位宽 的信息段。在一个实施例中,操作数410、420保存在128位长的SB?寄存器(如128位SSEx XMM寄存器)中。对于一个实施例,RESULTANT440也是XMM数据寄存器。此外,RESULTANT 440
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1