向量算术指令的制作方法

文档序号:14033602阅读:142来源:国知局
向量算术指令的制作方法

本公开涉及数据处理系统的领域。更具体地,本公开涉及支持向量算术指令的数据处理系统。



背景技术:

已知提供了支持具有用作相应输入操作数的多个向量元素的向量算术指令的数据处理系统。向量算术指令可采用两个这种向量输入操作数,并且对来自两个向量操作数内的相应的向量元素对执行由该指令指定的算术操作。向量处理促进并行计算。



技术实现要素:

本公开的至少一些实施例提供一种用于处理数据的装置,其包括:

处理电路,用于执行处理操作;以及解码器电路,用于对程序指令进行解码,以生成控制信号来控制该处理电路执行该处理操作;其中

该解码器电路响应于至少一个混合元素大小的向量算术指令,以生成控制信号来控制该处理电路对具有第一位大小的第一源操作数元素的第一向量和具有第二位大小的第二源操作数元素的第二向量执行算术处理操作,该第二位大小大于该第一位大小。

本公开的至少一些实施例提供了一种用于处理数据的装置,包括:

处理装置,用于执行处理操作;以及解码器装置,用于对程序指令进行解码,以生成控制信号来控制该处理电路执行该处理操作;其中

该解码器装置响应于至少一个混合元素大小的向量算术指令,以生成控制信号来控制该处理装置对具有第一位大小的第一源操作数元素的第一向量和具有第二位大小的第二源操作数元素的第二向量执行算术处理操作,该第二位大小大于该第一位大小。

本公开的至少一些实施例提供了一种处理数据的方法,包括:

对至少一个混合元素大小的向量算术指令进行解码,以生成控制信号来控制处理电路对具有第一位大小的第一源操作数元素的第一向量和具有第二位大小的第二源操作数元素的第二向量执行算术处理操作,该第二位大小大于该第一位大小。

附图说明

现在将参考附图仅通过示例的方式来描述实施例,其中:

图1示意性地示出了支持向量算术指令的数据处理系统;

图2示意性地示出了混合元素大小的向量算术指令的操作和语法;

图3示意性地示出算术指令的目的操作数中的给定位如何取决于从不同位位置取得的输入操作数位;以及

图4是示意性地示出混合元素大小的向量算术指令的用途的流程图;以及

图5示意地示出虚拟机实现方式。

具体实施方式

图1示意性地示出包括耦接到存储器6的处理器4的数据处理系统2。存储器6存储将被操纵的数据值8和指定将由处理器4执行的数据处理操作的程序指令10。程序指令10由指令提取单元12取出并传递到解码器电路14。解码器电路14生成控制信号16,该控制信号16用于控制处理器4内的处理电路18、20、22、24以执行由经解码的指令指定的处理操作。

处理器4支持向量操作和标量操作两者。作用于存储在向量寄存器文件22内的向量操作数的向量处理电路18,用于执行向量处理操作。作用于存储在标量寄存器文件24内的标量操作数值的标量处理电路20,用于执行标量处理操作。应当理解,向量处理操作可采取各种不同的形式。例如,simd(单指令多数据)处理操作是向量处理操作的一种形式。更一般地,对一起形成向量操作数的多个向量元素执行向量处理操作。

常规整数算术指令中的源操作数和目的操作数的向量元素相匹配。例如,长度为256位的向量操作数可由每个具有16位长度的16个向量元素形成。对单独向量元素执行的处理操作通常将至少部分地并行执行,但情况并非总是如此。利用包括单个值的输入操作数执行标量处理操作,例如,可对两个64位标量输入操作数执行64位标量处理操作,并且生成64位标量输出操作数。

根据本公开形成了向量处理电路18,以支持在控制信号16的控制下执行的至少一个混合元素大小的向量算术指令,当混合元素大小的向量算术指令被取出、解码并执行时,解码器电路14生成该控制信号16。

图2示意性地示出了混合元素大小的向量算术指令的操作和汇编语法。混合元素大小的向量算术指令对第一源操作数元素ai的第一向量执行算术处理操作(诸如,逻辑移位、除法或比较)。在这个示例中,存在16个第一源操作数元素a0-a15。这些第一源操作数元素ai中的每一个具有位大小a。在这个示例中,将16个第一源操作数元素ai布置成4个不相交子集a0-a3、a4-a7、a8-a11和a12-a15。混合元素大小的向量算术指令具有第二源操作数元素bi的第二向量。在这个示例中,第二源操作数元素的第二向量由4个第二源操作数元素(即,第二源操作数元素b0-b3)形成,每一个具有位大小b。

虽然在这个示例的实施例中存在16个第一源操作数元素和4个第二源操作数元素,但更一般地可以存在n个第一源操作数元素和m个第二源操作数元素。第二源操作数元素具有比第一源操作数元素位大小a大的位大小b。在示例中,在存在数量为第二源操作数元素的四倍的第一源操作数元素的情况下,第二源操作数元素的位大小b比第一源操作数元素的位大小a的比率可以是4:1。这与第一源操作数元素的数目n比第二源操作数元素的数目m的比率相同。

在这个示例的实施例中,第一源操作数元素的每个不相交的子集经历算术处理操作,其中第二源操作数元素中的相应一个是第二操作数输入。更具体地,第一源操作数元素a1-a3经历算术处理操作,其中第二源操作数元素b0是该算术处理操作的第二输入。例如,第一源操作数元素a0-a3中的每一个可以分别经历移位量由第二源操作数元素b0指定的逻辑右移。所得的输出操作数具有与第一源操作数元素相同的位大小a。可对混合元素大小的向量算术指令执行其它示例的算术处理操作,例如,第一源操作数元素ai除以相应的第二源操作数元素bj,或第一源操作数元素ai经历与相应的第二源操作数元素bj的比较(减法)。

在图2的底部示出了混合元素大小的向量算术指令的一个示例的语法。诸如逻辑移位、除法或比较的算术处理操作由诸如lsr、div或cmp的简字符号指定。指令随后指定第一源操作数元素的元素大小,即它们为字节b、半字h、字w还是双字d。在64位双字d的情况下,512位向量操作数将包含8个此类双字。这种情况下的第二源操作数元素可以是例如128位向量元素,其中双字第一源操作数元素中的两个与128位第二源操作数元素中的每一个相关联。应当理解,取决于执行的特定指令集或处理的实现方式和要求,可采用许多其它不同的总向量大小和向量元素大小。

混合元素大小的向量算术指令的语法通过指定目的向量寄存器zd和其元素位大小a而继续。然后,指定第一源操作数的向量寄存器即zs1和其元素位大小a。最后,指定第二源操作数的向量寄存器zs2和其元素位大小b。这是具有两个输入操作数和一个输出操作数的混合元素大小的向量算术指令的示例。在比较指令的情况下,可指定两个输入操作数,其中结果被写入判定寄存器pd,该判定寄存器pd包含对应于将zs1中的每个元素与zs2中的较宽元素进行比较(减法)的结果的“真”或“假”结果。

在混合元素大小的向量移位指令lsr的情况下,处理操作是将第一源操作数元素移位由相应的第二源操作数元素指定的移位量的移位操作。在混合元素大小的向量算术指令是除法指令的情况下,算术处理操作是将第一源操作数元素除以由相应的第二源操作数元素指定的除数的除法操作。在混合元素大小的向量算术指令是比较指令的情况下,算术处理操作是将第一源操作数元素与相应的第二源操作数元素进行比较的比较操作。

如上所述,第一源操作数元素的元素位大小由元素大小字段“x”指定,其指定第一源操作数元素是具有8位、16位、32位还是64位的大小。在一些示例的实施例中,第二源操作数元素可具有由混合元素大小的指令内的字段指定的位大小。然而,在其它示例的实施例中,诸如图2中所示的实施例中,第二源操作数元素可具有固定大小,诸如64位或128位。第一源操作数元素的位大小小于第二源元素的位大小。如果第二源操作数元素具有64的位大小,则第一源操作数元素将具有8、16或32之一的位大小。

图3示意性地示出了算术指令如何操作,使得取决于相应的第一操作数元素28和第二源操作数元素30中的至少一个内的具有不同位有效性的一个或多个位值而设置目的操作数元素内的位值26。在第一源操作数元素ai右移由第二源操作数元素bj指定的右移量的情况下,目的操作数di中的各自的位位置26取决于第一源操作数元素28内具有较高阶有效性的相应位29、和指定将施加的右移量的第二源操作数30内的所有位31。

本公开教导了其中支持混合元素大小的向量算术指令的系统。这与本领域的正常技术偏见相反。通常,算术指令的所有源操作数都具有共同元素大小。本公开认识到,在某些情况下,混合元素大小的向量算术指令的提供,提供了证明此类指令在由处理器4支持并由解码器电路14解码的指令集内消耗的指令位空间的优点。当并行执行程序循环的多个操作并且该程序循环具有标量值操作数时,可使用混合元素大小的向量算术指令以存储不与第一源操作数元素共享相同的位大小的标量操作数的副本,以用于循环的相应操作。在实际层面,混合元素大小的向量算术指令的提供可以避免在每次循环迭代时将来自标量寄存器文件24的标量操作数复制到向量处理电路18的需要,与向量处理电路18访问与其更直接耦接的向量寄存器文件22相比,这可以是比较慢的过程。因此,例如,本公开提供的混合元素大小的向量算术指令的一个用途,是将来自标量寄存器文件24的包含比第一源向量元素更有效的位的标量操作数值复制到第二向量操作数内的较宽的第二源操作数元素中的每一个。随后第二向量可以用作对混合元素大小的向量算术指令的向量操作数输入中的一个,该混合元素大小的向量算术指令使用标量操作数已复制到的较宽的第二源操作数元素来对多个第一源向量操作数元素进行操作。

图4是示意性地示出上述类型的操作的一个示例的流程图。在步骤32处,将来自标量寄存器xi的64位值直接复制到向量操作数zs2的所有向量寄存器元件。随后,步骤34将来自向量寄存器元件的该64位值复制到已经在第二向量的所有其它向量寄存器元件上复制的内容。在步骤36处,进入将执行的处理循环。步骤38对第一输入向量zs1和第二输入向量zs2执行混合元素大小的向量算术指令以生成输出向量zd。在此阶段,标量寄存器的多个副本存在于第二向量的适当元素内,并因此在处理进行时不需要从标量寄存器文件24移动到向量寄存器文件22。在步骤40处,退出执行的循环。

应当理解,以上仅是混合元素大小的向量算术指令的一个示例用途。在图2的示例中,在第一源操作数元素ai与第二源操作数元素bj之间存在多对一的关系,即不相交的子集排列,由此第一源操作数元素的每个不相交子集具有单个相关联的第二源操作数元素。应当理解,在一些实施例中,不需要提供第一源操作数元素的除法和与第二源操作数元素的关联。上面的示例讨论了移位操作、除法操作和比较操作形式的算术处理操作。应当理解,也可支持其它形式的算术操作。算术操作所作用的操作数可以是二进制数值,其中每个位具有不同的位置有效性,使得第一源操作数元素包含二进制数值,第二源操作数元素包含二进制数值,并且目的操作数元素包含目的操作数二进制数值。以此方式,对二进制数值整体执行处理操作,而不是独立于不同位置处的其它位执行独立逐位操作(诸如or、xor或and)。

图5示出可使用的虚拟机实现。尽管前文描述的实施例根据操作支持相关技术的特定处理硬件的设备和方法方面而实现了本发明,但还可以提供所谓的硬件设备的虚拟机实现方式。这些虚拟机实现方式在运行支持虚拟机程序510的主机操作系统520的主机处理系统530上运行。通常,需要大型强大的处理器来提供以合理速度执行的虚拟机实现方式,但在某些情况下该种方法可以是合理的,诸如当期望为了兼容性或重用原因而运行另一处理器本地的代码时。虚拟机程序510向应用程序500提供应用程序接口,其与将由实际硬件提供的应用程序接口相同,该实际硬件是由虚拟机程序510建模的设备。因此,可以使用虚拟机程序510从应用程序500内执行包括上述存储器访问的控制的程序指令以便对它们与虚拟机硬件的交互进行建模。

尽管本文已参照附图详细描述了发明的说明性实施例,但应当理解,发明并不限定于这种精确实施例,并且在不背离本发明的范围和精神的情况下,本领域技术人员可以在对其进行各种改变、增加和修改。例如,在不背离本发明的范围和精神的情况下,独立权利要求的特征可以与从属权利要求的特征进行各种组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1