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

文档序号:9304411阅读:来源:国知局
也可能是与源操作数之一相同的寄存器或存储单元。根据具体实现,操作数和寄存器可 能是诸如32、64和256位等的其它长度,并且具有字节、双字或四字大小的数据元素。虽然 该实例的数据元素为字大小,但是,同样的概念可扩展到字节和双字大小的元素。在其中的 数据操作数为64位宽的一个实施例中,MMX寄存器用来代替XMM寄存器。
[0061]该实例中的第一操作数410包括八个数据元素的集合:A3、A2、A1和A0。各个单独 的数据元素对应于所得结果440中的数据元素位置。第二操作数420包括八个数据段的另 一个集合:B3、B2、B1和B0。在这里,数据段具有相等长度,并且各包括数据的单字(32位)。 但是,数据元素和数据元素位置可具有与字不同的其它粒度(granularity)。若各数据元素 为字节(8位)、双字(32位)或四字(64位),则128位操作数分别具有十六字节宽、四个双字 宽或者两个四字宽的数据元素。本发明的实施例不限于特定长度的数据操作数或数据段, 而是可能对于各实现来适当地确定大小。
[0062] 操作数410、420可驻留在寄存器或存储单元或寄存器文件或者它们的组合中。数 据操作数410、420与点积指令一起被发送到处理器中的执行单元的点积计算逻辑430。在 一个实施例中,当点积指令到达执行单元时,先前应当已经在处理器流水线中对指令进行 了解码。因此,点积指令可能采取微操作(y〇P)或者某种其它已解码格式的形式。对于一 个实施例,在点积计算逻辑430上接收两个数据操作数410、420。点积计算逻辑430产生第 一操作数410的两个数据元素的第一乘积,以及处于第二操作数420的对应数据元素位置 中的两个数据元素的第二乘积,以及将第一和第二乘积之和存储在所得结果440中的适当 位置中,所得结果可能与第一或第二操作数对应于相同的存储单元。在一个实施例中,第一 和第二操作数中的数据元素为单精度(例如32位),而在其它实施例中,第一和第二操作数 中的数据元素为双精度(例如64位)。
[0063] 对于一个实施例,并行处理所有数据位置的数据元素。在另一个实施例中,一次 可一起处理某个部分的数据元素位置。在一个实施例中,根据是执行DPro还是DPPS,所得 结果440分别包括两个或四个可能的点积结果位置:dot-productA31。、dot-productA63 32、 D0T-PR0DUCTA95 64、D0T-PR0DUCTA127 96 (对于DPPS指令的结果),以及dot-productA63。、 dot-producta127 64 (对于DPro指令的结果)。
[0064] 在一个实施例中,所得结果440中的点积结果的位置取决于与点积指令相关联 的选择字段。例如,对于DPPS指令,所得结果440中的点积结果的位置在选择字段等于 第一值时为dot-productA31。,在选择字段等于第二值时为dot-productA63 32,在选择字段 等于第三值时为dot-productA95 64,以及在选择字段等于第四值时为dot-producta127 64。 在DPro指令的情况下,所得结果440中的点积结果的位置在选择字段为第一值时是 dot-productA63。,在选择字段为第二值时是dot-producta127 64。
[0065] 图5A示出根据本发明的一个实施例的点积指令的操作。具体来说,图5A示出根 据一个实施例的DPPS指令的操作。在一个实施例中,图5A所示的实例的点积操作实质上 可由图4的点积计算逻辑430来执行。在其它实施例中,图5A的点积操作可由包括硬件、 软件或者它们的某种结合在内的其它逻辑来执行。
[0066] 在其它实施例中,图4、图5A和图5B所示的操作可按照任何组合或顺序来执行,以 产生点积结果。在一个实施例中,图5A示出包括总共存储各为32位的四个单精度浮点或整 数值A0-A3的存储单元的128位源寄存器501a。类似地,图5A中所示的是包括总共存储各 为32位的四个单精度浮点或整数值B0-B3的存储单元的128位目标寄存器505a。在一个 实施例中,源寄存器中存储的各值A0-A3与目标寄存器的对应位置中存储的对应值B0-B3 相乘,以及各所得值A0*B0、A1*B1、A2*B2、A3*B3 (本文中称作"乘积")存储在包括总共存 储各为32位的四个单精度浮点或整数值的存储单元的第一 128位临时寄存器("TEMPI") 510a的对应存储单元中。
[0067] 在一个实施例中,将乘积对相加在一起,以及各个和数(本文中称作"中间和数") 存储到第二128位临时寄存器("TEMP2")515a和第三128位临时寄存器("TEMP3")520a的 存储单元中。在一个实施例中,乘积存储到第一和第二临时寄存器的最低有效32位元素存 储单元中。在其它实施例中,它们可存储在第一和第二临时寄存器的其它元素存储单元中。 此外,在一些实施例中,乘积可存储在相同寄存器(如第一或第二临时寄存器)中。
[0068] 在一个实施例中,中间和数相加在一起(本文中称作"最终和数"),并存储到第四 128位临时寄存器("TEMP4")525a的存储单元中。在一个实施例中,最终和数存储到TEMP4 的最低有效32位存储单元中,而在其它实施例中,最终和数存储到TEMP4的其它存储单元 中。最终和数然后存储到目标寄存器505a的存储单元中。最终和数将要存储到其中的准 确存储单元可取决于点积指令中可配置的变量。在一个实施例中,包含多个位存储单元的 立即字段("IMMy[x] ")可用来确定最终和数将要存储到其中的目标寄存器存储单元。例如, 在一个实施例中,若IMM8 [0]字段包含第一值(例如" 1"),则最终和数存储到目标寄存器的 存储单元BO中,若IMM8[1]字段包含第一值(例如"1"),则最终和数存储到存储单元B1中, 若IMM8 [2]字段包含第一值(例如"1"),则最终和数存储到目标寄存器的存储单元B2中, 以及若IMM8 [3]字段包含第一值(例如" 1"),则最终和数存储到目标寄存器的存储单元B3 中。在其它实施例中,其它立即字段可用来确定最终和数将要存储到其中的目标寄存器中 的存储单元。
[0069] 在一个实施例中,立即字段可用来控制各乘法和加法运算是否在图5A所示的操 作中执行。例如,IMM8[4]可用来表明(例如通过设置为"0"或"1")A0是否将与B0相乘且 结果被存储到TEMPI中。类似地,IMM8 [5]可用来表明(例如通过设置为"0"或"1")A1是 否将与B1相乘且结果被存储到TEMPI中。同样,IMM8 [6]可用来表明(例如通过设置为"0" 或"1")A2是否将与B2相乘且结果被存储到TEMPI中。最后,IMM8[7]可用来表明(例如通 过设置为"〇"或" 1")A3是否将与B3相乘且结果被存储到TEMPI中。
[0070] 图5B示出根据一个实施例的DPH)指令的操作。DPPS与DPH)指令之间的一个差 别在于,DPH)对双精度浮点和整数值(例如64位值)而不是单精度值进行操作。相应地,在 一个实施例中,执行DPH)指令与执行DPPS指令相比,存在更少要管理的数据元素,因此涉 及更少的中间操作和存储装置(例如寄存器)。
[0071] 在一个实施例中,图5B示出包括总共存储各为64位的两个双精度浮点或整数值 A0-A1的存储单元的128位源寄存器501b。类似地,图5B中所示的是包括总共存储各为64 位的两个双精度浮点或整数值B0-B1的存储单元的128位目标寄存器505b。在一个实施 例中,源寄存器中存储的各个值A0-A1与目标寄存器的对应位置中存储的对应值B0-B1相 乘,以及各所得结果值A0*B0、A1*B1 (本文中称作"乘积")存储在包括总共存储各为64位 的两个双精度浮点或整数值的存储单元的第一 128位临时寄存器("TEMPl")510b的对应存 储单元中。
[0072] 在一个实施例中,乘积对相加在一起,以及各个和数(本文中称作"最终和数")存 储到第二128位临时寄存器("TEMP2")515b的存储单元中。在一个实施例中,乘积与最终 和数分别存储到第一和第二临时寄存器的最低有效64位元素存储单元中。在其它实施例 中,它们可存储在第一和第二临时寄存器的其它元素存储单元中。
[0073] 在一个实施例中,最终和数存储到目标寄存器505b的存储单元中。最终和数将要 存储到其中的准确存储单元可取决于点积指令中可配置的变量。在一个实施例中,包含多 个位存储单元的立即字段("IMMy[x] ")可用来确定最终和数将要存储到其中的目标寄存器 存储单元。例如,在一个实施例中,若IMM8 [0]字段包含第一值(例如" 1"),则最终和数存储 到目标寄存器的存储单元B0中,若IMM8 [1]字段包含第一值(例如" 1"),则最终和数存储到 存储单元B1中。在其它实施例中,其它立即字段可用来确定最终和数将要存储到其中的目 标寄存器中的存储单元。
[0074] 在一个实施例中,立即字段可用来控制各乘法运算是否在图5B所示的点积操作 中执行。例如,IMM8[4]可用来表明(例如通过设置为"0"或"1")A0是否将与B0相乘且结 果被存储到TEMPI中。类似地,IMM8 [5]可用来表明(例如通过设置为"0"或"1")A1是否 将与B1相乘且结果被存储到TEMPI中。在其它实施例中,可采用用于确定是否执行点积的 乘法运算的其它控制技术。
[0075]图6A是根据一个实施例对单精度整数或浮点值执行点积操作的电路600a的框 图。该实施例的电路600a通过乘法器610a-613a将两个寄存器601a和605a的对应单精度 元素相乘,其结果可采用立即字段IMM8[7:4]由复用器615a-618a进行选择。作为备选的方 案,复用器615a_618a可选择零值而不是各兀素的乘法运算的对应乘积。复用器615a_618a 选择的结果然后由加法器620a相加在一起,且相加的结果被存储在结果寄存器630a的单 元的任一个中,根据立即字段IMM8 [3:0]的值,所述结果寄存器采用复用器625a-628a来选 择来自加法器620a的对应和数结果。在一个实施例中,若和数结果没有被选择来存储在结 果单元中,则复用器625a-628a可选择零值来填充结果寄存器630a的单元。在其它实施例 中,更多加法器可用来产生各个乘积之和。此外,在一些实施例中,中间存储单元可用来存 储乘积或和数结果
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1