向量异常码的制作方法

文档序号:9240054阅读:244来源:国知局
向量异常码的制作方法
【专利说明】向量异常码
【背景技术】
[0001] 一个或多个方面一般地设及计算环境内的处理,更具体地说,设及此类环境内的 向量处理。
[0002] 计算环境内的处理包括控制一个或多个中央处理单元(CPU)的操作。一般而言, 中央处理单元的操作通过存储装置中的指令控制。指令可具有不同的格式并且通常指定要 在执行多种操作时使用的寄存器。
[0003] 取决于中央处理单元的架构,可使用多种类型的寄存器,包括例如通用寄存器、专 用寄存器、浮点寄存器和/或向量寄存器。不同类型的寄存器可与不同类型的指令一起使 用。例如,浮点寄存器存储要由浮点指令使用的浮点数;向量寄存器保存用于由包括向量指 令的单指令多数据(SMID)指令执行的向量处理的数据。

【发明内容】

[0004] 通过提供用于执行机器指令的计算机程序产品,克服了现有技术的缺点并提供了 优点。所述计算机程序产品包括计算机可读存储介质,其可被处理电路读取并且存储由所 述处理电路执行W执行一种方法的指令。所述方法例如包括;由处理器确定在计算环境内 执行的指令已经导致异常,所述指令针对包括多个元素的向量寄存器执行操作;W及基于 所述异常获得向量异常码,所述向量异常码包括所述向量寄存器的所述多个元素中导致所 述异常的元素的位置。
[0005] 此处还描述并要求保护与一个或多个方面相关的方法和系统。进一步地,此处还 描述并可W要求保护与一个或多个方面相关的服务。
[0006] 通过一个或多个方面的技术实现其他特征和优点。其他实施例和方面在此做出详 细描述并且被视为权利要求的一部分。
【附图说明】
[0007] 在说明书结尾处的权利要求中作为实例具体指出并明确要求保护一个或多个方 面。当结合附图阅读下面的详细说明时,上述及其他目标、特征和优点是显而易见的,该些 附图是:
[0008] 图1示出结合和使用一个或多个方面的计算环境的一个实例;
[0009] 图2A示出结合和使用一个或多个方面的计算环境的另一实例;
[0010] 图2B示出图2A的存储器的进一步细节;
[0011] 图3示出寄存器文件的一个实例;
[0012] 图4A示出向量浮点测试数据类立即指令的格式的一个实例;
[0013] 图4B示出图4A的向量浮点测试数据类立即指令的第S操作数的位值的一个实 例;
[0014] 图4C示出与图4A的向量浮点测试数据类立即指令关联的逻辑的一个实施例;
[0015] 图4D示出图4A的向量浮点测试数据类立即指令的执行的框图的一个实例;
[0016]图4E示出二进制浮点数据的多种类的定义的一个实例;
[0017]图5A示出向量校验和指令的格式的一个实例;
[001引图5B示出与图5A的向量校验和指令关联的逻辑的一个实施例;
[0019] 图5C示出图5A的向量校验和指令的执行的框图的一个实例;
[0020] 图6A示出向量伽罗瓦域乘法求和与累加指令的格式的一个实例;
[0021] 图6B示出与图6A的向量伽罗瓦域乘法求和与累加指令关联的逻辑的一个实施 例;
[0022] 图6C示出图6A的向量伽罗瓦域乘法求和与累加指令的执行的框图的一个实例;
[0023] 图7A示出向量生成掩码指令的格式的一个实例;
[0024] 图7B示出与图7A的向量生成掩码指令关联的逻辑的一个实施例;
[0025] 图7C示出图7A的向量生成掩码指令的执行的框图的一个实例;
[0026] 图8A示出向量元素旋转和掩码下插入指令的一个实例;
[0027] 图8B示出与图8A的向量元素旋转和掩码下插入指令关联的逻辑的一个实施例;
[0028] 图8C示出图8A的向量元素旋转和掩码下插入指令的执行的框图的一个实例;
[0029] 图9A示出向量异常码的一个实例;
[0030] 图9B示出设置图9A的向量异常码的逻辑的一个实施例;
[0031] 图10示出结合一个或多个方面的计算机程序产品的一个实施例;
[0032] 图11示出主计算机系统的一个实施例;
[0033] 图12示出计算机系统的进一步实例;
[0034]图13示出包括计算机网络的计算机系统的另一实例;
[00巧]图14示出计算机系统的各种元素的一个实施例;
[0036]图15A示出图14的计算机系统的执行单元的一个实施例;
[0037] 图15B示出图14的计算机系统的分支单元的一个实施例;
[0038]图15C示出图14的计算机系统的加载/存储单元的一个实施例;W及
[0039] 图16示出仿真主计算机系统的一个实施例。
【具体实施方式】
[0040] 根据一个或多个方面,提供了包括多种向量指令W及向量异常处理的向量工具。 此处描述的每个指令是使用一个或多个向量寄存器(在此也称为向量)的单指令多数据 (SIMD)指令。向量寄存器例如是处理器寄存器(也称为硬件寄存器),它是作为中央处理 单元(CPU)或其他处理器的一部分可用的少量存储(例如,非主存储器)。每个向量寄存器 包含具有一个或多个元素的向量操作数,元素的长度例如为1、2、4或8个字节。在其他实 施例中,元素能够具有其他大小,并且向量指令无需为SIMD指令。
[0041] 参考图1描述结合和使用一个或多个方面的计算环境的一个实施例。计算环境 100例如包括处理器102 (例如,中央处理单元)、存储器104 (例如,主存储器),W及一个 或多个输入/输出(I/O)设备和/或接口 106,该些元件例如经由一个或多个总线108和/ 或其他连接相互禪接。
[0042] 在一个实例中,处理器102基于国际商业机器公司提供的z/Architecture,并 且是诸如SystemZ服务器之类的服务器的一部分,该服务器也由国际商业机器公司提 供并实现z/Architec1:ure。z/Architec1:ure的一个实施例在标题为"z/Architec1:ure PrinciplesofOperation(z/Architec1:ure操作原理,编号为SA22-7832-09 的IBM? 出版物,第十版,2012年9月)的IBM?出版物中描述,该出版物的全部内容在此纳入作 为参考。在一个实例中,执行诸如z/OS的操作系统的处理器也由国际商业机器公司提供。 IBM⑧、Z/ARCHITECTURE⑧和Z/OS⑧是位于美国纽约阿蒙克的国际商业机 器公司的注册商标。此处使用的其他名称可W是国际商业机器公司或其他公司的注册商 标、商标或产品名。
[0043] 在进一步实施例中,处理器102基于国际商业机器公司提供的化wer Architec1:ure。PowerArchitec1:ure的一个实施例在叩owerISA?版本 2. 06,修订B(国 际商业机器公司,2010年7月23日)"中描述,该出版物的全部内容在此纳入作为参考。 POW邸ARCHITECTURE風是国际商业机器公司的注册商标。
[0044] 在另一实施例中,处理器102基于英特尔公司提供的Intel架构。Intel 架构的一个实施例在"In化1⑩64andIA-32Architec1:uresDeveloper,S Manual:Vol.2B,InstructionsSetReference,A-L(Intel⑩ 64 和IA-32 架构开发 者指南:卷2B,指令集参考,A-U订单号:253666-04抓S,2013年I月)"和"Intel⑩ 64andIA-32ArchitecturesDeveloper'sManual:Vol. 2B,InstructionsSet Reference,M-Z(]ntd⑩64和IA-32架构开发者指南:卷2B,指令集参考,M-Z,订单号; 253667-04抓S,2013年1月)"中描述,它们全部内容均在此纳入作为参考。Intel?.是位 于加利福巧亚州圣克拉拉的英特尔公司的注册商标。
[0045] 参考图2A描述结合和使用一个或多个方面的计算环境的另一实施例。在该实例 中,计算环境200例如包括本机中央处理单元202、存储器204,W及一个或多个输入/输 出设备和/或接口 206,该些元件例如经由一个或多个总线208和/或其他连接相互禪接。 例如,计算环境200可W包括位于纽约阿蒙克的国际商业机器公司提供的化werPC处理 器、pSeries服务器或xSeries服务器;位于加利福巧亚帕洛阿尔托的惠普公司提供的带有 IntelItaniumII处理器的HPSuperdome;和/或其他基于国际商业机器公司、惠普公司、 英特尔、化acle或其他公司提供的架构的机器。
[0046] 本机中央处理单元202包括一个或多个本机寄存器210,例如在环境内的处理期 间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。该些寄存器包括表示环境 在任何特定时刻的状态的信息。
[0047] 此外,本机中央处理单元202执行存储在存储器204中的指令和代码。在一个特 定实例中,中央处理单元执行存储在存储器204中的仿真器代码212。该代码使得在一个架 构配置中的处理环境能够仿真另一架构。例如,仿真器代码212允许基于z/Architec化re W外的架构(例如化werPC处理器、pSeries服务器、xSeries服务器、HPSuperdome服务 器等)的机器仿真z/Architec化re并且执行基于z/Architec化re开发的软件和指令。
[0048] 参考图2B描述与仿真器代码212相关的进一步细节。存储在存储器204中的来 宾指令250包括被开发为在本机CPU202的架构W外的架构中执行的软件指令(例如,与 机器指令相关联)。例如,来宾指令250可能已被设计为在z/Architec化re处理器102上 执行,但是实际上,在例如可W是IntelItaniumII处理器的本机CPU202上被仿真。在 一个实例中,仿真器代码212包括指令获取例程252W从存储器204获得一个或多个来宾 指令250,W及可选地为所获得的指令提供本地缓冲。它还包括指令转换例程254W确定已 被获得的来宾指令的类型W及将来宾指令转换成一个或多个对应的本机指令256。该转换 例如包括标识要由来宾指令执行的功能,W及选择执行此功能的本机指令(多个)。
[0049] 进一步地,仿真器212包括仿真控制例程260W导致执行本机指令。仿真控制例 程260可使本机CPU202执行仿真一个或多个之前获得的来宾指令的本机指令的例程,并 且在此类执行结束时,将控制返回到指令获取例程W仿真获得下一来宾指令或下一组来宾 指令。本机指令256的执行可包括将数据从存储器204加载到寄存器内;将数据从寄存器 存储回存储器;或执行转换例程所确定的某些类型的算术或逻辑运算。
[0050] 每个例程例如通过存储在存储器中并由本机中央处理单元202执行的软件实现。 在其他实例中,一个或多个例程或操作通过固件、硬件、软件或它们的某种组合实现。被仿 真的处理器的寄存器可使用本机CPU的寄存器210或使用存储器204中的位置进行仿真。 在多个实施例中,来宾指令250、本机指令256和仿真器代码212可驻留在同一存储器中,也 可分布在不同的存储设备之间。
[0051] 如此处所用,固件例如包括处理器的微代码、毫码和/或宏代码。它例如包括在较 高级机器代码的实现中使用的硬件级指令和/或数据结构。在一个实施例中,它例如包括 专用代码,此专用代码典型地作为微代码(包括特定于底层硬件的可信软件或微代码)提 供并且控制对系统硬件的操作系统访问。
[0052] 在一个实例中,被获得、转换和执行的来宾指令250是此处描述的指令。具有一种 架构(例如,z/Architec化re)的指令被从存储器取回,被转换,并且被表示为具有另一种 架构(例如,化we巧C、pSeries、xSeries、Intel等)的一系列本机指令256。该些本机指 令然后被执行。
[0053] 在一个实施例中,此处描述的指令是作为向量工具的一部分的向量指令。向量工 具例如提供具有从1到16个元素的固定大小的向量。每个向量包括被工具中定义的向量 指令操作的数据。在一个实施例中,如果向量包括多个元素,则每个元素与其他元素并行地 被处理。直到所有元素的处理完成时才发生指令完成。在其他实施例中,元素被部分地并 行处理和/或按顺序处理。
[0054] 向量指令可作为多种架构的一部分被实现,该些架构包括但不限于Z/ Architec1:ure、Powe;r、x86、IA-32、IA-64 等。尽管此处描述的实施例针对z/Architec1:ure, 但是此处描述的向量指令W及一个或多个其他方面可基于许多其他架构。z/Architec化re 只是一个实例。
[00巧]在其中向量工具作为z/Architec化re的一部分被实现的一个实施例中,为了使 用向量寄存器和指令,指定的控制寄存器(例如,控制寄存器0)中的向量使能控制和寄存 器控制例如被设置为1。如果安装向量工具并执行向量指令而不设置使能控制,则识别到数 据异常。如果未安装向量工具并执行向量指令,则识别到操作异常。
[0056] 在一个实施例中,存在32个向量寄存器,并且其他类型的寄存器可被映射到四分 之一的所述向量寄存器。例如,如图3所示,寄存器文件300包括32个向量寄存器302,并 且每个寄存器的长度为128位。十六个浮点寄存器304 (长度为64位)可覆盖向量寄存器。 因此,作为一个实例,当浮点寄存器2被修改时,向量寄存器2也被修改。其他类型的寄存 器的其他映射也是可能的。
[0057] 向量数据例如W与其他数据格式相同的从左到右的顺序出现在存储装置中。数据 格式的编号为0-7的位构成存储装置中的最左边(编号最低)字节位置中的字节,位8-15 形成下一顺序位置中的字节,W此类推。在进一步实例中,向量数据可WW另一顺序(例如 从右到左)出现在存储装置中。
[0058] 此处描述的每个向量指令具有多个字段,并且一个或多个字段具有与其关联的下 标号。与指令的字段关联的下标号表示该字段适用的操作数。例如,与向量寄存器Vi关联 的下标号1表示Vi中的寄存器包括第一操作数,W此类推。寄存器操作数的长度为1个寄 存器,该长度例如为128位。
[0059] 进一步地,使用向量工具提供的许多向量指令具有包括指定位的字段。该字段 (也称为寄存器扩展位或RXB)包括每个向量寄存器命名的操作数的最高位。寄存器命名 (registerdesignation)的未被指令指定的位将被保留并被设置为0。最高位例如被串接 到四位寄存器命名的左侧W创建五位向量寄存器命名。
[0060] 在一个实例中,RXB字段包括四个位(例如,位0-3),该些位的定义如下;
[006。 0-指令的第一向量寄存器命名(例如,在位8-11中)的最高位。
[006引 1-指令的第二向量寄存器命名(例如,在位12-15中)的最高位(如果有)。
[0063] 2-指令的第S向量寄存器命名(例如,在位16-19中)的最高位(如果有)。
[0064] 3-指令的第四向量寄存器命名(例如,在位32-35中)的最高位(如果有)。
[0065] 每个位例如通过汇编器设置为0或1,具体取决于寄存器编号。例如,对于寄存器 0-15,位被设置为0 ;对于寄存器16-31,位被设置为1,等等。
[0066] 在一个实施例中,每个RXB位都是包括一个或多个向量寄存器的指令中的特定位 置的扩展位。例如,在一个或多个向量指令中,RXB的位0是位置8-11的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1