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

文档序号:9240015阅读:来源:国知局
的元素大小中的位数,则该值W元素中的位数为模减小。
[0183] 在一个实例中,使用此处描述的VGM指令生成被包括在第=操作数中的掩码。
[0184] 条件码:代码保持不变。
[0185] 程序异常:
[0186] *具有数据异常码值XOFE的数据,向量指令,指示未启用向量工具
[0187] *操作(如果未安装用于z/Architec化re的向量工具)
[01蝴*规范
[0189] *事务约束
[0190] 编程注释:
[0191] 1.VERIM和VGM的组合可被用于完成旋转和插入选定位指令的全部功能。
[0192] 2.尽管L字段的位被定义为包含指定要向左旋转每个元素的位数的无符号二进 制整数,但是也可对有效地指定向右旋转量的负值进行编码。
[0193] 参考图8B和8C描述有关向量元素旋转和掩码下插入指令的执行的进一步细节。 具体而言,图8B示出与由处理器执行的向量元素旋转和掩码下插入指令关联的逻辑的一 个实施例,图8CW图形的方式示出向量元素旋转和掩码下插入指令的执行的一个实例。
[0194] 参考图8B,按照第四操作数中指定的量巧20)旋转第二操作数的选定元素(步骤 830)。如果第四操作数中指定的值大于元素大小巧22)中指定的位数,则该值W元素中的 位数为模减小。
[01巧]在旋转元素的位之后,执行掩码下合并(步骤832)。例如,对于第S操作数中为1 的每个位巧24),第二操作数中已旋转的元素的对应位替换第一操作数中的对应位。
[0196] 随后,判定是否存在更多要被旋转的元素(询问834)。如果存在更多要被旋转的 元素,则处理继续执行步骤830。否则,处理完成(步骤836)。
[0197] 参考图8C,如图所示,基于输入820和822旋转830第二操作数的元素。此外,使 用输入824执行832掩码下合并。在第一操作数850中提供输出。
[019引上面描述了向量元素旋转和掩码下插入指令的一个实例。该指令被用于按照已定 义的位数旋转选定操作数中的元素。尽管位已被指定,但是在另一实施例中,元素能够按照 位置数旋转,并且位置可W是位W外的位置。此外,该指令可被用于不同的元素大小。
[0199] 作为一个实例,此类指令被用于从表查找的编号中选择特定位范围。
[0200] 在执行特定向量指令或其他SIMD操作期间,可能出现异常。当在SIMD操作上出 现异常时,通常不知道向量寄存器的哪个元素导致了异常。软件中断处理机必须提取每个 元素并在标量模式中重新执行计算W判定哪个或哪些元素导致了异常。但是,根据一个方 面,当机器(例如,处理器)处理由向量运算导致的程序中断时,将报告元素索引,该索引例 如指示向量中导致异常的最低索引元素。软件中断处理机然后能够立即跳向有问题的元素 并执行任何所需或希望的动作。
[020U 例如,在一个实施例中,当向量数据异常导致程序中断时,向量异常码(VXC)例如 被存储在真实存储位置(例如,位置147狂1931))处,并且0被存储在例如真实存储位置 144-146狂I901-Xl921)处。在另一实施例中,如果指定的控制寄存器(例如,CR0)的 指定位(例如,位45)为1,则VXC也被放入浮点控制寄存器的数据异常码值XC)字段内。 当控制寄存器O的位45为0,并且控制寄存器O的位46为I时,FPC寄存器的DXC和位置 147狂I93I)处的存储内容不可预测。
[0202] 在一个实施例中,VXC区分多种类型的向量浮点异常,并指示哪个元素导致了异 常。在一个实例中,如图9A所示,向量异常码900包括向量索引(VI幻902、向量中断码 (VIO904。在一个实例中,向量索引包括向量异常码的位0-3,并且其值是识别到异常的选 定向量寄存器的最左侧元素的索引。此外,向量中断码被包括在向量异常码的位4-7中,并 且具有例如W下值;
[0203]
[0204] 在另一实施例中,VXC仅包括导致异常的元素的向量索引或其他位置指示符。
[0205] 在一个实施例中,可通过多个指令来设置VXC,所述指令例如包括W下指令: VectorFloatingPoint(FP)AdcUVectorFPCompareScalar、VectorFPCompareEqual、 VectorFPCompareHighorEqual、VectorFPConvertFromFixed64-Bit、Vector FPConvertFromLogical64-Bit、VectorFPConverttoFixed64-Bit、VectorFP ConverttoLogical64-Bit、VectorFPDivide、VectorLoadFPInteger、VectorFP LoadLengthened、VectorFPLoadRounded、VectorFPMultiply、VectorFPMultiply andAdcUVectorFPMultipleandSubtract、VectorFPSquareRoot臥及VectorFP Subtract,W及其他类型的向量浮点指令和/或其他指令。
[0206] 参考图9B描述有关设置向量异常码的进一步细节。在一个实施例中,计算环境的 处理器执行该逻辑。
[0207] 参考图9B,首先,执行针对向量寄存器执行操作的指令,例如上面列出的指令之一 或其他指令(步骤920)。在执行指令期间,遇到异常状况(步骤922)。在一个例子中,该 异常状况导致中断。判定向量寄存器的哪个元素导致了异常(步骤924)。例如,针对向量 寄存器的一个或多个元素执行计算的处理器的一个或多个硬件单元判定异常并提供信号。 例如,如果多个硬件单元针对向量寄存器的多个元素并行地执行计算,并且在处理一个或 多个元素期间遇到异常,则执行处理的遇到异常的硬件单元(多个)发信号通知异常状况, W及它正在处理的元素的指示。在另一实施例中,如果向量的元素被按顺序执行,并且在处 理元素期间遇到异常,则硬件将指示当异常发生时它正在处理序列中的什么元素。
[0208] 基于发信号通知异常,设置向量异常码(步骤926)。该例如包括指示向量寄存器 中导致异常的元素的位置,W及中断码。
[0209] 上面详细描述了提供有效向量异常处理的向量异常码。在一个实例中,当机器处 理由向量运算导致的程序中断时,将报告元素索引,该索引指示向量寄存器中导致了异常 的最低索引元素。作为一个特定实例,如果正在执行vectoradd(向量加法),并且每个向 量寄存器具有两个元素,从而提供AO+BO和Al+Bl,并且针对AO+BO而非Al+Bl接收到不准 确的结果,则VIX被设置为0,且VIC被设置为等于0101。在另一实例中,如果发生A0+B0 未接收到异常,但是A1+B1接收到异常,则VIX被设置为等于1(VIC= 0101)。如果该两者 均遇到异常,则VIX被设置为0,因此它是最左侧的索引位置,并且VIC= 0101。
[0210] 上面详细描述了多种向量指令W及向量异常码,该异常码指示向量寄存器内异常 的位置。在所提供的流程图中,某些处理可按顺序地出现;但是,在一个或多个实施例中,元 素被并行地处理,因此,例如可能不需要检查是否存在更多要被处理的元素。许多其他变型 也是可能的。
[0211] 此外,在其他实施例中,指令的一个或多个字段的内容可在通用寄存器中提供,在 存储器中提供,在向量寄存器的元素中(根据元素而存在差异)提供,通过地址计算提供。 它们可被包括为指令的显式操作数或包括为隐式操作数或输入。此外,一个或多个指令可 使用更少的操作数或输入,并且相反地,一个或多个操作数可被用于多个操作或步骤。
[0212] 此外,如上所述,可通过其他方式提供元素大小控制,而非在指令的字段中包括元 素大小控制。此外,元素大小可由操作码指定。例如,指令的特定操作码指定操作W及元素 的大小等。
[0213] 在此,存储器、主存储器、存储装置和主存储装置被互换地使用,除非另外明确地 或通过上下文指出。
[0214] 所属技术领域的技术人员知道,本发明可W实现为系统、方法或计算机程序产品。 因此,本公开可W具体实现为W下形式,即;可W是完全的硬件、也可W是完全的软件(包 括固件、驻留软件、微代码等),还可W是硬件和软件结合的形式,本文一般称为"电路"、"模 块"或"系统"。此外,在一些实施例中,本发明还可W实现为在一个或多个计算机可读介质 中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0215] 可W采用一个或多个计算机可读的介质的任意组合。计算机可读介质可W是计 算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可W是一-但不限 于一-电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意W上的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括;具有一个或多个导线的电连接、便 携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储 器巧PROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、 或者上述的任意合适的组合。在本文件中,计算机可读存储介质可W是任何包含或存储程 序的有形介质,该程序可W被指令执行系统、装置或者器件使用或者与其结合使用。
[0216] 现在参考图10,在一个例子中,计算机程序产品1000包括,例如,一个或多个非临 时计算机可读存储介质1002,在其上存储有计算机可读的程序代码装置或逻辑1004,W提 供并方便本发明的一个或多个方面。
[0217] 体现在计算机可读介质上的程序代码可W用任何适当的介质传输,所述介质包括 但不限于;无线、有线、光缆、RF等,或上述的任意合适的组合。
[0218] 可WW-种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机 程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如化va、Smalltalk、C++, 还包括常规的过程式程序设计语言一诸如"C"语言或类似的程序设计语言。程序代码可W 完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部 分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在 设及远程计算机的情形中,远程计算机可W通过任意种类的网络一-包括局域网(LAN)或 广域网(WAN)-连接到用户计算机,或者,可W连接到外部计算机(例如利用因特网服务提 供商来通过因特网连接)。
[0219] 本文中将参照根据一个或多个实施例的方法、装置(系统)和计算机程序产品的 流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框W及流程图和/ 或框图中各方框的组合,都可W由计算机程序指令实现。该些计算机程序指令可W提供给 通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,该些 计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框 图中的方框中规定的功能/操作的装置。
[0220] 也可W把该些计算机程序指令存储在能使得计算机或其它可编程数据处理装置 W特定方式工作的计算机可读介质中,该样,存储在计算机可读介质中的指令就产生出一 个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的审ij造品(manufacture)。
[0221] 也可W把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备 上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,W产生计 算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图 和/或框图中的方框中规定的功能/操作的过程。
[0222] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在该点上,流程图或框图中的每个方框可W 代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可WW不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可W 基本并行地执行,它们有时也可W按相反的顺序执行,该依所设及的功能而定。也要注意的 是,框图和/或流程图中的每个方框、化及框图和/或流程图中的方框的组合,可W用执行 规定的功能或操作的专用的基于硬件的系统来实现,或者可W用专用硬件与计算机指令的 组合来实现。
[0223] 除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管 理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计 算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反 过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,月良 务提供商可从向一个或多个第=方销售广告内容接受付费。
[0224] 在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一 个例子,部署应用包括提供计算机基础设施,其可操作W执行本发明的一个或多个方面。
[0225] 作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成 到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
[0226] 作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集 成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的 一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
[0227] 尽管上面描述了多个实施例,但是该些实施例仅作为实例。例如,具有其他架构的 计算环境可结合和使用一个或多个方面。此外,可使用具有其他大小的向量,并且可在不偏 离一个或多个方面的情况下做出对指令的更改。此外,可使用除向量寄存器W外的寄存器。 此外,在其他实施例中,向量操作数可W是存储位置,而非向量寄存器。其他变型也是可能 的。
[0228] 而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,可使用 适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接 禪合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地 存储器、大容量存储器W及高速缓冲存储器,其提供至少一些程序代码的临时存储,W便减 少在执行期间必须从大容量存储器取回代码的次数。
[0229] 输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、 DVD、拇指驱动器(thumb化ive)W及其他的存储介质等)可直接或通过介于其间的I/O控 制器被禪合到系统。网络适配器也可被禪合到系统W使得数据处理系统能够通过介于其间 的私有或公共网络而禪合到其他的数据处理系统或远程打印机或存储设备。调制解调器、 电缆调制解调器和W太网卡仅是一些可获得的网络适配器类型。
[0230] 参考图11,其描述了实施本发明的一个或多个方面的主机计算机系统5000的代 表性组件。代表性主机计算机5000包括与计算机存储器(即,中央存储器)5002通信的一 个或多个CPU5001,W及到存储介质设备5011和网络5010的I/O接口,W用于与其他计算 机或SAN等通信。CPU5001符合具有架构指令集和架构功能的架构。CPU5001可具有动态 地址转换(DAT) 5003,其用于将程序地址(虚拟地址)转变为存储器的真实地址。DAT典型 地包括用于高速缓存转换的转换后备缓冲器(TLB) 5007,该样稍后对计算机存储器5002块 的访问不需要地址转换的延迟。典型地,高速缓存5009被使用在计算机存储器5002和处 理器5001之间。高速缓存5009可W是分层的,具有可被多于一个的CPU获得的大高速缓 存,W及大高速缓存和每个CPU之间的较小、较快(较低级)的高速缓存。在一些实施方式 中,较低级的高速缓存被拆分W为指令获取和数据访问提供单独的低级高速缓存。在一个 实施例中,由指令获取单元5004经由高速缓存5009从存储器5002获取指令。指令在指令 解码单元5006中被解码,且(在一些实施例中与其他指令一起)被发送到一个或多个指令 执行单元5008。典型地,使用若干执行单元5008,例如算术执行单元、浮点执行单元和分支 指令执行单元。指令被执行单元执行,如需要,从指令指定的寄存器或存储器访问操作数。 如果将从存储器5002访问(加载或存储)操作数,加载/存储单元5005典型地在被执行 的指令的控制下处理该访问。指令可在硬件电路或内部微代码(固件)中或其组合中被执 行。
[0231] 需注意的是,计算机系统包括本地(或主)存储器中的信息,W及寻址、保护W及 引用和改变记录。寻址的一些方面包括地址格式、地址空间的概念、地址的各种类型和其中 一种类型的地址被转换为另一种类型的地址的方式。一些主存储器包括永久分配的存储位 置。主存储器向系统提供直接可被寻址的快速访问的数据存储。数据和程序在可被处理之 前都将(从输入设备)被加载到主存储器。
[0232] 主存储器可包括一个或多个更小、更快速访问的缓冲存储器,有时候被称为高速 缓存。高速缓存典型地与CPU或I/O处理器物理地关联。物理结构W及不同存储介质的使 用的效果,除了在性能上,通常不会被程序观察到。
[0233] 可维护用于指令和数据操作数的单独的高速缓存。高速缓存中的信息可被维护为 相邻的字节,所述字节位于被称为高速缓存块或高速缓存线(或简称为线)的整数界限上。 模型可提供EXTRACTCACHE
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1