向量异常码的制作方法_2

文档序号:9240054阅读:来源:国知局
扩展位,该扩展位 例如被分配给Vi;RXB的位1是位置12-15的扩展位,该扩展位例如被分配给V2;W此类推。 在另一实施例中,RXB字段包括附加位,并且一个W上的位被用作每个向量或位置的扩展。
[0067] 根据包括RXB字段的一方面提供的一个指令为向量浮点测试数据类立即(VFTCI) 指令,该指令的一个实例在图4A中示出。在一个实例中,向量浮点测试数据类立即指令400 包括;操作码字段402a(例如,位0-7)、402b(例如,位40-47),其指示向量浮点测试数据类 立即操作;第一向量寄存器字段404(例如,位8-11),其被用于指定第一向量寄存器(Vi); 第二向量寄存器字段406(例如,位12-15),其被用于指定第二向量寄存器(V2);立即字段 (Is) 408 (例如,位16-27),其包括位掩码;第一掩码字段(Ms) 410 (例如,位28-31);第二掩 码字段(Ma) 412 (例如,位32-35) ;W及RXB字段414 (例如,位36-39)。在一个实例中,字 段404-414中的每一个都与操作码字段(多个)分离并且独立于操作码字段(多个)。进 一步地,在一个实施例中,它们相互分离和独立;但是,在其他实施例中,一个W上字段可进 行组合。有关该些字段的使用的进一步信息在下面进行描述。
[0068] 在一个实例中,由操作码字段402a指定的操作码的选定位(例如,前两位)指定 指令的长度。在该特定实例中,选定位指示长度为=个半字。进一步地,指令的格式为具有 扩展操作码字段的向量寄存器和立即操作。每个向量(V)字段连同其由RXB指定的对应扩 展位一起指定向量寄存器。具体而言,对于向量寄存器,包含操作数的寄存器例如使用加上 其对应的寄存器扩展位(RXB)作为最高位的寄存器字段的四位字段进行指定。例如,如果 四位字段为0110,并且扩展位为0,则五位字段OOllO指示寄存器编号6。
[0069] 进一步地,在VFTCI指令的一个实施例中,Vi404和V2406针对指令指定分别包括 第一操作数和第二操作数的向量寄存器。此外,13408包括具有多个位的位掩码,并且每个 位被用于表示二进制浮点元素类和符号(正或负),如下面进一步详细描述的那样。
[0070] 在另一实施例中,例如,位掩码可在通用寄存器中提供,在存储器中提供,在向量 寄存器的元素中(根据元素而存在差异)提供,通过地址计算提供。可作为指令的显式操 作数或作为隐式操作数或输入而包括位掩码。
[0071]M岸段410例如具有四个位0-3,并且例如在位0中指定单元素控制(S)。如果位 0被设置为1,则操作仅针对向量中的零索引元素发生。第一操作数向量中的所有其他元素 的位位置是不可预测的。如果位0被设置为0,则针对向量中的所有元素发生操作。
[0072]Ma字段412例如被用于指定指令的第二操作数中的浮点数的大小。在一个实例中, 该字段被设置为3,从而指示双精度二进制浮点数。其他实例也是可能的。
[0073] 在执行向量浮点测试数据类立即指令的一个实施例时,检查第二操作数的浮点元 素(多个)的类和符号W从第S操作数选择一个或多个位。如果设置选定位,则第一操作 数中的对应元素的所有位位置被设置为1 ;否则,它们被设置为0。也就是说,如果第二操作 数的元素中包含的浮点数的类/符号与第S操作数中的已设置位(即,位被设置为例如1) 匹配,则对应于第二操作数的元素的第一操作数的元素被设置为1。在一个实例中,所有操 作数元素包含长格式BFP(二进制浮点)数。
[0074] 如此处所指示的,第S操作数的12个位(指令本文的位16-27)被用于指定BFP数 据类和符号的12个组合。在一个实例中,如图4B所示,BFP操作数元素被分为六类430 ;0、 规范数、非规范数、无限大、静默NaN(非数值)、信令NaN,并且每个类具有与其关联的符号 432 (正或负)。因此,例如,Is的位0指定具有正号的0类,位1指定具有负号的0类等。 [00巧]一个或多个第=操作数位可被设置为1。进一步地,在一个实施例中,指令可同时 对一个或多个元素执行操作。
[0076] 在不导致IE邸异常的情况下检查包括SNaN(信令NaN)和QNaN(静默NaN)的操 作数元素。
[0077] 得到的所有元素的概要条件码:
[0078] 0对于所有元素,选定位为1(匹配)
[0079] 1对于至少一个元素,而非所有元素,选定位为1(当S位为0时)
[0080] 2-
[0081] 3对于所有元素,选定位为0(不匹配)
[008引 IE邸异常:无
[008引程序异常:
[0084] *具有数据异常码值XOFE的数据,向量指令,指示未启用向量工具
[0085] *操作(如果未安装用于z/Architec化re的向量工具)
[0086] * 规范
[0087] *事务约束 [008引编程注释;
[0089]I.该指令提供一种在没有异常或设置IEEE标志的风险的情况下测试操作数元素 的方式。
[0090] 2.当设置了S位时,不使用条件码1。
[0091] 参考图4C和4D描述与向量浮点测试数据类立即指令相关的一个实施例的进一步 细节。具体而言,图4C示出与由处理器(例如,CPU)执行的向量浮点测试数据类立即指令 关联的逻辑的一个实施例,图4D是示出向量浮点测试数据类立即指令的执行的框图的一 个实例。
[0092] 参考图4C,首先,将被称为元素索引巧i)的变量初始化为0(步骤450)。然后,从 指令的第二操作数(例如,从被存储在V2指定的寄存器中的操作数)提取元素Ei中的值 (在此情况下为元素0)(步骤452)。该值(其是长格式二进制浮点值)被转换为型数W获 得第二操作数的浮点元素的类和符号,如下所述(步骤454)。在一个实例中,浮点数453的 大小被输入到转换逻辑。所获得的类和符号与特定的类/符号位关联,如参考图4B所述。 例如,如果转换指示浮点数为正的规范数,则位2与该浮点数关联。
[0093] 在转换之后,检验第=操作数中与基于转换确定的特定位对应的位(被称为选定 位)(步骤456)。如果选定位被设置(询问458),则第一操作数中与元素巧i)对应的元素 被设置为等于全1 (步骤460);否则,第一操作数中的该元素被设置为等于0 (步骤462)。 例如,如果元素0中的浮点数的转换指示正的规范数,则位2与该数关联。因此,检验第S 操作数的位2,并且如果被设置为1,则第一操作数的元素0被设置为全1。
[0094] 之后,判定Ei是否等于第二操作数的元素的最大数量(询问464)。如果否,则Ei 例如递增1 (步骤466),然后处理继续执行步骤452。否则,如果Ei等于元素的最大数量, 则生成概要条件码(步骤468)。概要条件码概述第二操作数的所有元素的处理。例如,如 果对于所有元素,选定位为1 (匹配),则得到的条件码为0。另一方面,如果对于至少一个 元素(而非所有元素),选定位为1 (当S位不为0时),则条件码为1,并且如果对于所有元 素,选定位为0 (不匹配),则条件码为3。
[0095] 上述处理W图形方式在图4D的框图中示出。如图所示,向量寄存器480包括多个 元素482a-482n,每个元素包括浮点数。浮点数483a-48化的每个浮点数和大小被输入到转 换为型数逻辑484a-484n,并且输出是表示浮点数的类/符号的特定位。然后,检验每个掩 码486a-486b中对应于每个特定位的选定位。取决于选定位是否被设置,设置向量寄存器 488中的第一操作数。例如,如果对于第二操作数的元素0,选定位被设置,则将第一操作数 的元素490a设置为全1。类似地,如果第二操作数的元素1的选定位未被设置(例如,被设 置为0),则将第一操作数的元素49化设置为0等。
[0096] 现在描述转换为型数逻辑的一个实施例的进一步细节。首先,将是标准IE邸二进 制浮点数的浮点数转换为S部分;符号、指数巧位)+127,W及尾数(化action) (32位),如 所公知的那样。然后,检验该S部分的值W确定类和符号,如图4E所示。例如,符号是符号 部的值,并且类(也就是图4E中的实体)基于指数和尾数(图4E中的单元位是尾数的隐 式位)的值。作为一个实例,如果指数和尾数(包括单元位)的值为0,则类为0,如果符号 部为正,则符号为正。该样,位〇(图4B)表示该浮点数的类/符号。
[0097] 上面描述了测试向量中的元素的浮点数类的指令和设置得到的位掩码的一个实 施例。向量浮点测试数据类立即指令具有立即字段,该字段中的每个位表示要检测的浮点 数的类。输入向量的每个浮点元素被测试W查看值是否属于由该指令指定的任一类。如果 浮点元素属于其中一类,则输出向量的对应元素的位位置被设置为1。该提供了在不导致任 何异常或中断的情况下确定有关二进制浮点数的某些属性(例如,类和符号)的技术。
[0098] 在另一实施例中,可通过W下方式执行测试;检验第=操作数中的哪些位被设置 (例如,被设置为1),然后判定第二操作数的一个或多个元素的类/符号是否与已设置位中 的一个相同。然后基于比较设置第一操作数。
[0099] 在另一方面,提供向量校验和指令,该指令的一个实例在图5A中示出。在一个实 例中,向量校验和指令500包括;操作码字段502a(例如,位0-7)、502b(例如,位40-47),其 指示向量校验和操作;第一向量寄存器字段504 (例如,位8-11),其被用于指定第一向量寄 存器(Vi);第二向量寄存器字段506 (例如,位12-巧),其被用于指定第二向量寄存器(V2); 第S向量寄存器字段508 (例如,位16-19),其被用于指定第S向量寄存器(Vs) ;W及RXB 字段510 (例如,位36-39)。在一个实例中,字段504-510中的每一个都与操作码字段(多 个)分离并且独立于操作码字段(多个)。进一步地,在一个实施例中,它们相互分离和独 立;但是,在其他实施例中,一个W上字段可进行组合。
[0100] 在另一实施例中,第S向量寄存器字段不作为指令的显式操作数被包括在内,相 反地,它是隐式操作数或输入。进一步地,在操作数中提供的值可通过其他方式提供,例如 在通用寄存器中提供,在存储器中提供,作为地址计算提供等。
[0101] 在再一实施例中,根本不提供显式或隐式的第=操作数。
[0102] 在一个实例中,由操作码字段502a指定的操作码的选定位(例如,前两位)指定 指令的长度。在该特定实例中,选定位指示长度为=个半字。进一步地,指令的格式为具有 扩展操作码字段的向量寄存器和寄存器操作。每个向量(V)字段连同其由RXB指定的对应 扩展位一起指定向量寄存器。具体而言,对于向量寄存器,包含操作数的寄存器例如使用加 上其对应的寄存器扩展位(RXB)作为最高位的寄存器字段的四位字段进行指定。
[0103] 在执行向量校验和指令的一个实施例时,来自第二操作数的元素(例如,单字大 小的元素)连同第=操作数的选定元素(例如,第=操作数的字1中的元素)一起被逐个加 在一起。(在另一实施例中,第=操作数的选定元素的相加是可选的)。总和被放入第一操 作数的选定位置(例如,字1)内。0被置于第一操作数的其他字元素(例如,字元素0,W 及2-3)内。单字大小的元素全部被视为32位无符号二进制整数。在加上每个元素之后, 来自总和的进位(例如,位位置0)例如被加到在第一操作数的字元素1中的结果的位位置 31。
[0104] 条件码:代码保持不变。
[0105] 程序异常:
[0106] *具有数据异常码值XOFE的数据,向量指令,指示未启用向量工具
[0107] *操作(如果未安装用于z/Architec化re的向量工具)
[010引 *事务约束
[0109] 编程注释:
[0110] 1.第=操作数的内容将在检验和计算算法的开头包含0。
[0111] 2. 16位校验和例如被用于TCP/IP应用。下面的程序可在已计算32位校验和之后 执行:
[0112] VE化LFV2,VI,16 (0) (VE化LF-向量元素旋转左逻辑-4字节值)
[0113]VAFV2,VI,V2 (VAF-向量加法-4 字节值)
[0114] 元素2中的半字包含16位校验和。
[0115] 参考图5B和5C描述有关向量校验和指令的进一步细节。在一个实例中,图5B示 出在执行向量校验和指令时由处理器执行的逻辑的一个实施例,图5C示出执行向量校验 和指令的一个实例的框图。
[0116] 参考图5B,首先,将第一操作数(OPl)的元素索引巧y)例如设置为1,从而指示第 一操作数的元素U步骤530)。类似地,将第=操作数(0P3)的元素索引巧X)例如设置为 1,从而指示第=操作数的元素1(步骤532)。然后,将元素索引巧i)设置为等于0,并且元 素索引巧y)处的元素(即,该实例中的元素1)被初始化为〇(步骤534)。在进一步实施例 中,Ex和Ey可被设置为任何有效的元素索引。
[0117]执行端回进位(EAC,endaroundcarry)加法,其中OPl(Ey)= OPl(Ey) +0P2 (Ei) +0P2 (Ei+1)(步骤536)。该样,输出向量(OPl)的元素1被设置为等于该 元素的内容加上第二操作数(0P2)的元素0中的值和第二操作数的元素1中的值。通过端 回进位加法,执行加法操作,并且来自加法的任何进位被加回总和W产生新的总和。
[0118] 在另一实施例中,不执行上述加法,而是执行W下操作:定义临时累加器值并将其 初始化为0,然后一次加上一个元素。作为另一实施例,所有字被并行地相加,并且不存在临 时累加器。其他变型也是可能的。
[0119] 之后,判定是否有其他元素要被加到第二操作数中(询问538)。例如,Ei-2是否 小于第二操作数的元素数。如果存在更多要被相加的第二操作数元素,则Ei例如递增2 (步 骤540),然后处理继续执行步骤536。
[0120] 在跨第二操作数加上元素之后,结果被加到第=操作数中的值。例如,执行第一操 作数的元素巧y)(其是跨所有第二操作数元素的EAC加法的总和)与第S操作数(0P3)的 元素巧X)中的值的端回进位加法(即,EACA孤OPl(Ey)+0P3 (Ex))(步骤542)。该在图5C 中W图形的形式示出。
[0121] 如图5C所示,第二操作数550包括多个元素552a-552n,并且该些元素连同第=操 作数560的字1 (562)中的元素一起被逐个相加在一起。结果被放入第一操作数570的元 素1巧72)。该在数学上由W下等式示出;Ey=Ex+Ei的总和,其中i= 0到n,并且加法为 端回进位加法。
[0122] 上面描述了跨向量寄存器的元素执行校验和,而非执行莱恩算术(lane arithmetic)的向量校验和指令的一个实施例。在一个实施例中,向量校验和指令通过借助 端回进位加法执行跨越求和(sum-across)来执行校验和。在一个实例中,向量校验和指令 从向量寄存器获取四个4字节整数元素并将它们加在一起。来自加法的任何进位都被加回 总和。4字节总和被加到另一操作数中的4字节元素,然后被保存在再一向量寄存器中(例 如,向量寄存器的低阶4字节元素,且0被存储在该向量寄存器的高阶元素中)。
[0123] 在另一实施例中,不使用进一步的向量寄存器或另一寄存器来保存值,而是使用 其他寄存器(即,操作数)之一作为累加器。
[0124] 所提供的校验和可被用于保持数据完整性。校验和经常被应用于数据并且在增杂 信道上发送W检验所接收到的数据是否正确。在该实例中,如此处所述,通过将连续的4字 节整数加在一起来计算
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1