向量异常码的制作方法_3

文档序号:9240054阅读:来源:国知局
校验和。如果具有来自整数算术运算的进位,则该进位(额外的I) 被加到当前和(runningsum)中。
[0125] 尽管此处描述了校验和,但是类似的技术也可被用于其他端回进位加法。
[0126] 根据一个方面提供的另一指令为向量伽罗瓦域乘法求和与累加(VGFMA)指令,该 指令的一个实例在图6A中示出。在一个例子中,向量伽罗瓦域乘法求和与累加指令600包 括;操作码字段602a(例如,位0-7)、602b(例如,位40-47),其指示向量伽罗瓦域乘法求和 与累加操作;第一向量字段604(例如,位8-11),其被用于指定第一向量寄存器(Vi);第二 向量寄存器字段606(例如,位12-15),其被用于指定第二向量寄存器(V2);第S向量寄存 器字段608 (例如,位16-19),其被用于指定第=向量寄存器(Vs);掩码字段(Me) 610 (例如, 位20-23);第四向量寄存器字段612(例如,位32-35),其被用于指定第四向量寄存器(V4); W及RXB字段614 (例如,位36-39)。在一个例子中,字段604-614中的每一个都与操作码 字段(多个)分离并且独立于操作码字段(多个)。此外,在一个实施例中,它们相互分离 和独立;但是,在其他实施例中,一个W上字段可进行组合。
[0127] 在一个实例中,由操作码字段602a指定的操作码的选定位(例如,前两位)指定 指令的长度。在该特定实例中,选定位指示长度为=个半字。此外,指令的格式为具有扩展 操作码字段的向量寄存器和寄存器操作。每个向量(V)字段连同其由RXB指定的对应扩展 位一起指定向量寄存器。具体而言,对于向量寄存器,包含操作数的寄存器例如使用加上其 对应的寄存器扩展位(RXB)作为最高位的寄存器字段的四位字段进行指定。
[012引 Mg字段610例如具有四个位0-3,并且指定元素大小巧巧控制。元素大小控制指 定向量寄存器操作数2和3中的元素的大小;第一和第四操作数中的元素是ES控制所指定 的元素大小的两倍。例如,Mg中的值0指示单字节大小的元素;1指示半字;2指示单字;W 及3指示双字。
[0129] 在执行向量伽罗瓦域乘法求和与累加指令的一个实施例时,第二操作数的每个元 素在伽罗瓦域(即,具有有限数量元素的有限域)中与第=操作数的对应元素相乘。也就 是说,使用无进位乘法使第二操作数的每个元素与第=操作数的对应元素相乘。在一个实 例中,伽罗瓦域为二阶。该乘法类似于标准的二进制乘法,它并非将移位后的被乘数相加, 而是异或狂OR)。例如,得到的奇-偶双元素大小的乘积对相互进行异或,并且与第四操作 数的对应元素(例如,双宽元素)进行异或。结果被例如放入第一操作数的双宽元素。
[0130] 条件码:代码保持不变。
[0131] 程序异常:
[0132] *具有数据异常码值XOFE的数据,向量指令,指示未启用向量工具
[0133] *操作(如果未安装用于z/Architec化re的向量工具)
[0134] * 规范
[0135] *事务约束
[0136] 在另一实施例中,所述指令可包括一个或更少的操作数。例如,要被异或的值位于 第一操作数中,而非位于第四操作数中,第一操作数也将包括结果。其他变型也是可能的。
[0137] 参考图6B和6C描述有关向量伽罗瓦域乘法求和与累加指令的执行的一个实施例 的进一步细节。在一个实例中,图6B示出由处理器执行W执行向量伽罗瓦域乘法求和与累 加指令的逻辑的一个实施例,图6C是示出逻辑执行的框图的一个实例。
[0138] 参考图6B,首先,从第二操作数(0P2)、第S操作数(0P3)和第四操作数(0P4)提 取奇/偶对(步骤630),并且执行无进位乘法求和累加功能(步骤632)。例如,当在幕为 2的伽罗瓦域中执行运算时,无进位乘法是移位或XOR(异或),它有效地忽略了任何进位。 结果被放入第一操作数(OPl)内(步骤634),并且判定是否存在更多要被提取的对(询问 636)。如果存在更多对,则处理继续执行步骤630;否则,处理完成(步骤638)。在一个例 子中,元素大小631到步骤630-634的输入。
[0139] 参考图6C描述步骤632的无进位乘法求和累加功能的进一步细节。如图所示,从 第二操作数650提取一对操作数0P2H652a、OP化652b。此外,从第S操作数660提取操 作数对0P3H662a、OP:3L662b,从第四操作数670提取操作数对0P4H672a和OP化672b。 操作数0P2H652a通过无进位乘法与操作数0P3H662a相乘,然后提供结果H680a。类似 地,OP化65化使用无进位乘法与操作数OP化66化相乘,然后提供结果L680b。接着,结 果H680a与结果L68化进行异或运算,所得结果与操作数0P4H672a和OP化67化进行 异或运算,接着将结果放入0Pm690a、OPlL69化内。
[0140] 此处描述了执行无进位乘法运算,然后执行最后的异或运算W创建累积和的向量 指令。此技术可用于在二阶有限域中执行运算的错误检测代码和密码学的多个方面。
[0141] 在一个实例中,所述指令针对向量寄存器的多个元素执行无进位乘法运算W获取 总和。此外,所述指令针对总和执行最终的异或W产生累加和。当被执行时,所述指令在 伽罗瓦域中将第二向量和第=向量中的对应元素进行相乘,并且对移位后的被乘数执行异 或。每个双宽乘积相互进行异或,所得结果与第一向量的双宽对应元素进行异或。结果被 存储在第一向量寄存器中。尽管上面描述了双字元素,但是也可使用具有其他元素大小的 单字大小的元素。所述指令能够针对多个不同的元素大小执行操作。
[0142] 根据一个方面提供的另一指令为向量生成掩码(VGM)指令,参考图7A描述该指 令的一个实例。在一个实例中,向量生成掩码指令700包括;操作码字段702a(例如,位 0-7)、702b(例如,位40-47),其指示向量生成掩码操作;第一向量寄存器字段704 (例如, 位8-11),其被用于指定第一向量寄存器(Vi);第一立即字段12706(例如,位16-24),其被 用于指定第一值;第二立即字段(Is) 708 (例如,位24-32),其被用于指定第二值;掩码字段 (Ma) 710 (例如,位32-35) ;W及RXB字段712 (例如,位36-39)。在一个实例中,字段704-712 中的每一个都与操作码字段(多个)分离并且独立于操作码字段(多个)。此外,在一个实 施例中,它们相互分离和独立;但是,在其他实施例中,一个W上字段可进行组合。
[0143] 在另一实施例中,第一值和/或第二值可W在通用寄存器中提供,在存储器中提 供,在向量寄存器的元素中(根据元素而存在差异)提供,通过地址计算提供。它可作为指 令的显式操作数或作为隐式操作数或输入而被包括。
[0144] 在一个实例中,由操作码字段702a指定的操作码的选定位(例如,前两位)指定 指令的长度。在该特定实例中,选定位指示长度为=个半字。此外,指令的格式为具有扩展 操作码字段的向量寄存器和立即操作。每个向量(V)字段连同其由RXB指定的对应扩展位 一起指定向量寄存器。具体而言,对于向量寄存器,包含操作数的寄存器例如使用加上其对 应的寄存器扩展位(RXB)作为最高位的寄存器字段的四位字段进行指定。
[0145] 字段例如指定元素大小控制巧巧。元素大小控制指定向量寄存器操作数中的元 素的大小。在一个例子中,字段的位0指定单字节;位1指定半字(例如,2字节);位2 指定单字(例如,4字节;即,全字);W及位3指定双字。
[0146] 在执行向量生成掩码指令的一个实施例时,对于第一操作数中的每个元素,生成 位掩码。所述掩码包括被设置为1的位,该些位从例如12中的无符号整数值指定的位位置 开始,到例如Is中的无符号整数值指定的位位置结束。所有其他位位置被设置为0。在一 个实例中,仅从12和I 3字段使用表示指定的元素大小的所有位位置所需的位数;其他位被 忽略。如果12字段中的位位置大于I 3字段中的位位置,则位的范围在针对指定元素大小的 最大位位置处绕回(wrap)。例如,假设单字节大小的元素,如果12=1且I3=6,,则得到 的掩码为Xl7EI或Bl0111111〇1。但是,如果12=6且13=1,,则得到的掩码为Xl81 '或b' 10000001'。
[0147] 条件码:代码保持不变。
[0148] 程序异常:
[0149] *具有数据异常码值XOFE的数据,向量指令,指示未启用向量工具
[0150] *操作(如果未安装用于z/Architec化re的向量工具)
[0151] *规范
[0152] *事务约束
[0153] 参考图7B和7C描述有关向量生成掩码指令的一个实施例的进一步细节。具体而 言,图7B示出与由处理器执行的向量生成掩码指令关联的逻辑的一个实施例;图7C是示出 向量生成掩码指令的执行的一个实施例的框图的一个实例。
[0154] 参考图7B,首先,针对第一操作数中的每个元素生成掩码(步骤720)。此步骤使 用多个输入,其中包括在第二操作数字段中指定为起始位置的值(722)、在第=操作数字段 中指定为结束位置的值(724),W及在M4字段中指定的元素的大小(726)。该些输入被用于 生成掩码并填充第一操作数(OPl)的选定元素(例如,元素0)的位置(步骤730)。例如, 第一操作数(OPl)的元素0包括多个位置(例如,位位置),并且从12中的无符号整数值指 定的位置开始,到Is中的无符号整数值指定的位置结束,第一操作数的元素0的位置(例 如,位)被设置为1。其他位位置被设置为0。随后,判定第一操作数中是否存在更多元素 (询问734)。如果存在更多元素,则处理继续执行步骤720。否则,处理完成(步骤736)。
[0155] 掩码的生成和第一操作数的填充W图形的形式在图7C中示出。如图所示,第一操 作数的每个元素的掩码使用输入(例如,722-726)生成720,并且生成掩码的结果被存储在 第一操作数740的元素中。
[0156] 上面详细描述了生成向量的每个元素的位掩码的指令。在一个实施例中,该指令 采用起始位位置和结束位位置,并产生针对每个元素重复的位掩码。该指令指定位范围,此 范围内的每个位针对向量寄存器的每个元素被设置为1,而其他位被设置为0。
[0157] 在一个实施例中,使用指令生成位掩码较之例如从存储器加载位掩码提供了优 点,从存储器加载位掩增加了指令流的缓存占用,并且取决于所需的掩码数,可增加关键环 路的延迟。
[015引根据一个方面提供的再一指令为向量元素旋转和掩码下插入(VERIM)指令,该指 令的一个实例在图8A中示出。在一个例子中,向量元素旋转和掩码下插入指令800包括: 操作码字段802a(例如,位0-7)、802b(例如,位40-47),其指示向量元素旋转和掩码下插 入操作;第一向量寄存器字段804(例如,位8-11),其被用于指定第一向量寄存器(Vi);第 二向量寄存器字段806(例如,位12-15),其被用于指定第二向量寄存器八);第S向量寄 存器字段808 (例如,位16-19),其被用于指定第S向量寄存器(Vs);立即字段(14)812(例 如,位24-31),其例如包括无符号二进制整数,该整数指定用于旋转每个元素的位数;掩码 字段(Mg) 814 (例如,位32-35);W及RXB字段816 (例如,位36-39)。在一个实例中,字段 804-816中的每一个都与操作码字段(多个)分离并且独立于操作码字段(多个)。此外, 在一个实施例中,它们相互分离和独立;但是,在其他实施例中,一个W上字段可进行组合。
[0159] 在一个实例中,由操作码字段802a指定的操作码的选定位(例如,前两位)指定 指令的长度。在该特定实例中,选定位指示长度为=个半字。此外,指令的格式为具有扩展 操作码字段的向量寄存器和立即操作。每个向量(V)字段连同其由RXB指定的对应扩展位 一起指定向量寄存器。具体而言,对于向量寄存器,包含操作数的寄存器例如使用加上其对 应的寄存器扩展位(RXB)作为最高位的寄存器字段的四位字段进行指定。
[0160]Mg字段指定元素大小控制巧巧。元素大小控制指定向量寄存器操作数中的元素 的大小。在一个例子中,Mg字段的位0指定单字节;位1指定半字(例如,2字节);位2指 定单字(例如,4字节;即,全字);W及位3指定双字。
[0161] 在执行向量元素旋转和掩码下插入指令时,第二操作数的每个元素根据第四操作 数指定的位数向左旋转。从元素的最左侧位位置移位出的每个位再次进入元素的最右侧位 位置。第=操作数在每个元素中包括掩码。对于第=操作数中为1的每个位,第二操作数 中已旋转的元素的对应位替换第一操作数中的对应位。也就是说,已旋转的元素的对应位 的值替换第一操作数中对应位的值。对于第=操作数中为0的每个位,第一操作数的对应 位保持不变。除了当第一操作数与第二或第=操作数相同的情况之外,第二和第=操作数 保持不变。
[0162] 第四操作数例如为无符号二进制整数,该整数指定第二操作数中每个元素被旋转 的位数。如果该值大于指定的元素大小中的位数,则该值W元素中的位数为模减小。
[0163] 在一个实例中,使用此处描述的VGM指令生成被包括在第=操作数中的掩码。
[0164] 条件码:代码保持不变。
[0165] 程序异常:
[0166] *具有数据异常码值XOFE的数据,向量指令,指示未启用向量工具
[0167] *操作(如果未安装用于z/Architec化re的向量工具)
[016引 *规范
[0169] *事务约束
[0170] 编程注释:
[0171] 1.VERIM和VGM的组合可被用于完成旋转和插入选定位指令的全部功能。
[0172] 2.尽管L字段的位被定义为包含指定要向左旋转每个元素的位数的无符号二进 制整数,但是也可对有效地指定向右旋转量的负值进行编码。
[0173] 参考图8B和8C描述有关向量元素旋转和掩码下插入指令的执行的进一步细节。 具体而言,图8B示出与由处理器执行的向量元素旋转和掩码下插入指令关联的逻辑的一 个实施例,图8CW图形的方式示出向量元素旋转和掩码下插入指令的执行的一个实例。
[0174] 参考图8B,按照第四操作数中指定的量巧20)旋转第二操作数的选定元素(步骤 830)。如果第四操作数中指定的值大于元素大小巧22)中指定的位数,则该值W元素中的 位数为模减小。
[0175] 在旋转元素的位之后,执行掩码下合并(步骤832)。例如,对于第=操作数中为1 的每个位巧24),第二操作数中已旋转的元素的对应位替换第一操作数中的对应位。
[0176] 随后,判定是否存在更多要被旋转的元素(询问834)。如果存在更多要被旋转的 元素,则处理继续执行步骤830。否则,处理完成(步骤836)。
[0177] 参考图8C,如图所示,基于输入820和822旋转830第二操作数的元素。此外,使 用输入824执行832掩码下合并。在第一操作数850中提供输出。
[017引上面描述了向量元素旋转和掩码下插入指令的一个实例。该指令被用于按照已定 义的位数旋转选定操作数中的元素。尽管位已被指定,但是在另一实施例中,元素能够按照 位置数旋转,并且位置可W是位W外的位置。此外,该指令可被用于不同的元素大小。
[0179] 作为一个实例,此类指令被用于从表查找的编号中选择特定位范围。
[0180] 在执行特定向量指令或其他SIMD操作期间,可能出现异常。当在SIMD操作上出 现异常时,通常不知道向量寄存器的哪个元素导致了异常。软件
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1