向量伽罗瓦域乘法求和与累加指令的制作方法_2

文档序号:9240015阅读:来源:国知局
配置中的处理环境能够仿真另一架构。例如,仿真器代码212允许基于z/Architec化re W外的架构(例如化werPC处理器、pSeries服务器、xSeries服务器、HPSuperdome服务 器等)的机器仿真z/Architec化re并且执行基于z/Architec化re开发的软件和指令。
[0068] 参考图2B描述与仿真器代码212相关的进一步细节。存储在存储器204中的来 宾指令250包括被开发为在本机CPU202的架构W外的架构中执行的软件指令(例如,与 机器指令相关联)。例如,来宾指令250可能已被设计为在z/Architec化re处理器102上 执行,但是实际上,在例如可W是IntelItaniumII处理器的本机CPU202上被仿真。在 一个实例中,仿真器代码212包括指令获取例程252W从存储器204获得一个或多个来宾 指令250,W及可选地为所获得的指令提供本地缓冲。它还包括指令转换例程254W确定已 被获得的来宾指令的类型W及将来宾指令转换成一个或多个对应的本机指令256。该转换 例如包括标识要由来宾指令执行的功能,W及选择执行此功能的本机指令(多个)。
[0069] 进一步地,仿真器212包括仿真控制例程260W导致执行本机指令。仿真控制例 程260可使本机CPU202执行仿真一个或多个之前获得的来宾指令的本机指令的例程,并 且在此类执行结束时,将控制返回到指令获取例程W仿真获得下一来宾指令或下一组来宾 指令。本机指令256的执行可包括将数据从存储器204加载到寄存器内;将数据从寄存器 存储回存储器;或执行转换例程所确定的某些类型的算术或逻辑运算。
[0070] 每个例程例如通过存储在存储器中并由本机中央处理单元202执行的软件实现。 在其他实例中,一个或多个例程或操作通过固件、硬件、软件或它们的某种组合实现。被仿 真的处理器的寄存器可使用本机CPU的寄存器210或使用存储器204中的位置进行仿真。 在多个实施例中,来宾指令250、本机指令256和仿真器代码212可驻留在同一存储器中,也 可分布在不同的存储设备之间。
[0071] 如此处所用,固件例如包括处理器的微代码、毫码和/或宏代码。它例如包括在较 高级机器代码的实现中使用的硬件级指令和/或数据结构。在一个实施例中,它例如包括 专用代码,此专用代码典型地作为微代码(包括特定于底层硬件的可信软件或微代码)提 供并且控制对系统硬件的操作系统访问。
[0072] 在一个实例中,被获得、转换和执行的来宾指令250是此处描述的指令。具有一种 架构(例如,z/Architec化re)的指令被从存储器取回,被转换,并且被表示为具有另一种 架构(例如,化we巧C、pSeries、xSeries、Intel等)的一系列本机指令256。该些本机指 令然后被执行。
[0073] 在一个实施例中,此处描述的指令是作为向量工具的一部分的向量指令。向量工 具例如提供具有从1到16个元素的固定大小的向量。每个向量包括被工具中定义的向量 指令操作的数据。在一个实施例中,如果向量包括多个元素,则每个元素与其他元素并行地 被处理。直到所有元素的处理完成时才发生指令完成。在其他实施例中,元素被部分地并 行处理和/或按顺序处理。
[0074] 向量指令可作为多种架构的一部分被实现,该些架构包括但不限于Z/ Architec1:ure、Powe;r、x86、IA-32、IA-64 等。尽管此处描述的实施例针对z/Architec1:ure, 但是此处描述的向量指令W及一个或多个其他方面可基于许多其他架构。z/Architecture 只是一个实例。
[0075] 在其中向量工具作为z/Architec化re的一部分被实现的一个实施例中,为了使 用向量寄存器和指令,指定的控制寄存器(例如,控制寄存器0)中的向量使能控制和寄存 器控制例如被设置为1。如果安装向量工具并执行向量指令而不设置使能控制,则识别到数 据异常。如果未安装向量工具并执行向量指令,则识别到操作异常。
[0076] 在一个实施例中,存在32个向量寄存器,并且其他类型的寄存器可被映射到四分 之一的所述向量寄存器。例如,如图3所示,寄存器文件300包括32个向量寄存器302,并 且每个寄存器的长度为128位。十六个浮点寄存器304 (长度为64位)可覆盖向量寄存器。 因此,作为一个实例,当浮点寄存器2被修改时,向量寄存器2也被修改。其他类型的寄存 器的其他映射也是可能的。
[0077] 向量数据例如W与其他数据格式相同的从左到右的顺序出现在存储装置中。数据 格式的编号为0-7的位构成存储装置中的最左边(编号最低)字节位置中的字节,位8-15 形成下一顺序位置中的字节,W此类推。在进一步实例中,向量数据可WW另一顺序(例如 从右到左)出现在存储装置中。
[007引此处描述的每个向量指令具有多个字段,并且一个或多个字段具有与其关联的下 标号。与指令的字段关联的下标号表示该字段适用的操作数。例如,与向量寄存器Vi关联 的下标号1表示Vi中的寄存器包括第一操作数,W此类推。寄存器操作数的长度为1个寄 存器,该长度例如为128位。
[0079] 进一步地,使用向量工具提供的许多向量指令具有包括指定位的字段。该字段 (也称为寄存器扩展位或RXB)包括每个向量寄存器命名的操作数的最高位。寄存器命名 (registerdesignation)的未被指令指定的位将被保留并被设置为0。最高位例如被串接 到四位寄存器命名的左侧W创建五位向量寄存器命名。
[0080]在一个实例中,RXB字段包括四个位(例如,位0-3),该些位的定义如下;
[0081] 0-指令的第一向量寄存器命名(例如,在位8-11中)的最高位。
[0082] 1-指令的第二向量寄存器命名(例如,在位12-15中)的最高位(如果有)。
[0083] 2-指令的第S向量寄存器命名(例如,在位16-19中)的最高位(如果有)。
[0084] 3-指令的第四向量寄存器命名(例如,在位32-35中)的最高位(如果有)。
[0085] 每个位例如通过汇编器设置为0或1,具体取决于寄存器编号。例如,对于寄存器 0-15,位被设置为0 ;对于寄存器16-31,位被设置为1,等等。
[0086] 在一个实施例中,每个RXB位都是包括一个或多个向量寄存器的指令中的特定位 置的扩展位。例如,在一个或多个向量指令中,RXB的位0是位置8-11的扩展位,该扩展位 例如被分配给Vi;RXB的位1是位置12-15的扩展位,该扩展位例如被分配给V2;W此类推。 在另一实施例中,RXB字段包括附加位,并且一个W上的位被用作每个向量或位置的扩展。
[0087] 根据包括RXB字段的一方面提供的一个指令为向量浮点测试数据类立即(VFTCI) 指令,该指令的一个实例在图4A中示出。在一个实例中,向量浮点测试数据类立即指令400 包括;操作码字段402a(例如,位0-7)、402b(例如,位40-47),其指示向量浮点测试数据类 立即操作;第一向量寄存器字段404(例如,位8-11),其被用于指定第一向量寄存器(Vi); 第二向量寄存器字段406(例如,位12-15),其被用于指定第二向量寄存器(V2);立即字段 (Is) 408 (例如,位16-27),其包括位掩码;第一掩码字段(Me) 410 (例如,位28-31);第二掩 码字段(Ma) 412 (例如,位32-35) ;W及RXB字段414 (例如,位36-39)。在一个实例中,字 段404-414中的每一个都与操作码字段(多个)分离并且独立于操作码字段(多个)。进 一步地,在一个实施例中,它们相互分离和独立;但是,在其他实施例中,一个W上字段可进 行组合。有关该些字段的使用的进一步信息在下面进行描述。
[008引在一个实例中,由操作码字段402a指定的操作码的选定位(例如,前两位)指定 指令的长度。在该特定实例中,选定位指示长度为=个半字。进一步地,指令的格式为具有 扩展操作码字段的向量寄存器和立即操作。每个向量(V)字段连同其由RXB指定的对应扩 展位一起指定向量寄存器。具体而言,对于向量寄存器,包含操作数的寄存器例如使用加上 其对应的寄存器扩展位(RXB)作为最高位的寄存器字段的四位字段进行指定。例如,如果 四位字段为0110,并且扩展位为0,则五位字段OOllO指示寄存器编号6。
[0089] 进一步地,在VFTCI指令的一个实施例中,Vi404和V2406针对指令指定分别包括 第一操作数和第二操作数的向量寄存器。此外,13408包括具有多个位的位掩码,并且每个 位被用于表示二进制浮点元素类和符号(正或负),如下面进一步详细描述的那样。
[0090] 在另一实施例中,例如,位掩码可在通用寄存器中提供,在存储器中提供,在向量 寄存器的元素中(根据元素而存在差异)提供,通过地址计算提供。可作为指令的显式操 作数或作为隐式操作数或输入而包括位掩码。
[0091]Mg字段410例如具有四个位0-3,并且例如在位0中指定单元素控制(S)。如果位 0被设置为1,则操作仅针对向量中的零索引元素发生。第一操作数向量中的所有其他元素 的位位置是不可预测的。如果位0被设置为0,则针对向量中的所有元素发生操作。
[0092]M4字段412例如被用于指定指令的第二操作数中的浮点数的大小。在一个实例中, 该字段被设置为3,从而指示双精度二进制浮点数。其他实例也是可能的。
[0093] 在执行向量浮点测试数据类立即指令的一个实施例时,检查第二操作数的浮点元 素(多个)的类和符号W从第S操作数选择一个或多个位。如果设置选定位,则第一操作 数中的对应元素的所有位位置被设置为1 ;否则,它们被设置为0。也就是说,如果第二操作 数的元素中包含的浮点数的类/符号与第S操作数中的已设置位(即,位被设置为例如1) 匹配,则对应于第二操作数的元素的第一操作数的元素被设置为1。在一个实例中,所有操 作数元素包含长格式BFP(二进制浮点)数。
[0094] 如此处所指示的,第S操作数的12个位(指令本文的位16-27)被用于指定BFP数 据类和符号的12个组合。在一个实例中,如图4B所示,BFP操作数元素被分为六类430 ;0、 规范数、非规范数、无限大、静默NaN(非数值)、信令NaN,并且每个类具有与其关联的符号 432 (正或负)。因此,例如,Is的位O指定具有正号的O类,位1指定具有负号的O类等。
[0095] 一个或多个第=操作数位可被设置为1。进一步地,在一个实施例中,指令可同时 对一个或多个元素执行操作。
[0096] 在不导致IE邸异常的情况下检查包括SNaN(信令NaN)和QNaN(静默NaN)的操 作数元素。
[0097] 得到的所有元素的概要条件码:
[009引0对于所有元素,选定位为1(匹配)
[0099] 1对于至少一个元素,而非所有元素,选定位为1(当S位为0时)
[0100] 2-
[0101] 3对于所有元素,选定位为0(不匹配)
[010引 IE邸异常:无
[0103] 程序异常:
[0104] *具有数据异常码值XOFE的数据,向量指令,指示未启用向量工具 [01化]*操作(如果未安装用于z/Architec化re的向量工具)
[0106] * 规范
[0107] *事务约束
[0108] 编程注释:
[0109] 1.该指令提供一种在没有异常或设置IEEE标志的风险的情况下测试操作数元素 的方式。
[0110] 2.当设置了S位时,不使用条件码1。
[0111] 参考图4C和4D描述与向量浮点测试数据类立即指令相关的一个实施例的进一步 细节。具体而言,图4C示出与由处理器(例如,CPU)执行的向量浮点测试数据类立即指令 关联的逻辑的一个实施例,图4D是示出向量浮点测试数据类立即指令的执行的框图的一 个实例。
[0112] 参考图4C,首先,将被称为元素索引巧i)的变量初始化为0(步骤450)。然后,从 指令的第二操作数(例如,从被存储在V2指定的寄存器中的操作数)提取元素Ei中的值 (在此情况下为元素0)(步骤452)。该值(其是长格式二进制浮点值)被转换为型数W获 得第二操作数的浮点元素的类和符号,如下所述(步骤454)。在一个实例中,浮点数453的 大小被输入到转换逻辑。所获得的类和符号与特定的类/符号位关联,如参考图4B所述。 例如,如果转换指示浮点数为正的规范数,则位2与该浮点数关联。
[0113] 在转换之后,检验第=操作数中与基于转换确定的特定位对应的位(被称为选定 位)(步骤456)。如果选定位被设置(询问458),则第一操作数中与元素巧i)对应的元素 被设置为等于全1 (步骤460);否则,第一操作数中的该元素被设置为等于0 (步骤462)。 例如,如果元素0中的浮点数的转换指示正的规范数,则位2与该数关联。因此,检验第S 操作数的位2,并且如果被设置为1,则第一操作数的元素0被设置为全1。
[0114] 之后,判定Ei是否等于第二操作数的元素的最大数量(询问464)。如果否,则Ei 例如递增1 (步骤466),然后处理继续执行步骤452。否则,如果Ei等于元素的最大数量, 则生成概要条件码(步骤468)。概要条件码概述第二操作数的所有元素的处理。例如,如 果对于所有元素,选定位为I(匹配),则得到的条件码为0。另一方面,如果对于至少一个 元素(而非所有元素),选定位为1 (当S位不为0时),则条件码为1,并且如果对于所有元 素,选定位为0 (不匹配),则条件码为3。
[0115] 上述处理W图形方式在图4D的框图中示出。如图所示,向量寄存器480包括多个 元素482a-482n,每个元素包括浮点数。浮点数483a-48化的每个浮点数和大小被输入到转 换为型数逻辑484a-484n,并且输出是表示浮点数的类/符号的特定位。然后,检验每个掩 码486a-486b中对应于每个特定位的选定位。取决于选定位是否被设置,设置向量寄存器 488中的第一操作数。例如,如果对于第二操作数的元素0,选定位被设置,则将第一操作数 的元素490a设置为全1。类似地,如果第二操作数的元素1的选定位未被设置(例如,被设 置为0),则将第一操作数的元素49化设置为0等。
[0116] 现在描述转换为型数逻辑的一个实施例的进一步细节。首先,将是标准IE邸二进 制浮点数的浮点数转换为S部分;符号、指数巧位)+127,W及尾数(化action) (32位),如 所公知的那样。然后,检验该S部分的值W确定类和符号,如图4E所示。例如,符号是符号 部的值,并且类(也就是图4E中的实体)基于指数和尾数(图4E中的单元位是尾数的隐 式位)的值。作为一个实例,如果指数和尾数(包括单元位)的值为0,则类为0,如果符号 部为正,则符号为正。该样,位〇(图4B)表示该浮点数的类/符号。
[0117] 上面描述了测试向量中的元素的浮点数类的指令和设置得到的位掩码的一个实 施例。向量浮点测试数据类立即指令具有立即字段,该字段中的每个位表示要检测的浮点 数的类。输入向量的每个浮点元素被测试W查看值是否属于由该指令指定的任一类。如果 浮点元素属于其中一类,则输出向量的对应元素的位位置被设置为1。该提供了在不导致任 何异常或中断的情况下确定有关二进制浮点数的某些属性(例如,类和符号)的技术。
[0118] 在另一实施例中,可通过W下方式执行测试;检验第=操作数中的哪些位被设置 (例如,被设置为1),然后判定第二操作数的一个或多个元素的类/符号是否与已设置位中 的一个相同。然后基于比较设置第一操作数。
[0119] 在另一方面,提供向量校验和指令,该指令的一个实例在图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上字段可进行组合。
[0120] 在另一实施例中,第=向量寄存器字段不作为指令的显式操作数被包括在内,相 反地,它是隐式操作数或输入。进一步地,在操作数中提供的值可通过其他方式提供,例如 在通用寄存器中提供,在存储器中提供,作为地址计算提供等。
[0121] 在再一实施例中,根本不提供显式或隐式的第=操作数。
[0122] 在一个实例中,由操作码字段502a指定的操作码的选定位(例如,前两位)指定 指令的长度。在该特定实例中,选定位指示长度为=个半字。进一步地,指令的格式为具有 扩展操作码字段的向量寄存器和寄存器操作。每个向量(V)字段连同其由RXB指定的对应 扩展位一起指定向量寄存器。具体而言,对于向量寄存器,包含操作数的寄存器例如使用加 上其对应的寄存器扩展位(RXB)作为最高位的寄存器字段的四位字段进行指定。
[0123] 在执行向量校验和指令的一个实施例时,来自第二操作数的元素(例如,单字大 小的元素)连同第=操作数的选定元素(例如,第=操作数的字1中的元素)一起被逐个加 在一起。(在另一实施例中,第=操作数的选定元素的相加是可选的)。总和被放入第一操 作数的选定位置(例如,字1)内。0被置于第一操作数的其他字
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1