CN109891387B - 具有可选择比较属性的浮点指令的方法、系统及存储介质 - Google Patents
具有可选择比较属性的浮点指令的方法、系统及存储介质 Download PDFInfo
- Publication number
- CN109891387B CN109891387B CN201780066088.9A CN201780066088A CN109891387B CN 109891387 B CN109891387 B CN 109891387B CN 201780066088 A CN201780066088 A CN 201780066088A CN 109891387 B CN109891387 B CN 109891387B
- Authority
- CN
- China
- Prior art keywords
- instruction
- value
- comparison
- floating point
- max
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000007667 floating Methods 0.000 title claims description 76
- 238000000034 method Methods 0.000 title claims description 31
- 230000006870 function Effects 0.000 claims abstract description 99
- 238000012545 processing Methods 0.000 claims abstract description 44
- 230000015654 memory Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/49926—Division by zero
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation of IEEE-754 Standard
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
执行用于执行第一值和第二值的比较的指令。基于所述指令的控制,确定要执行的比较功能。比较功能是针对所述指令配置的多个比较功能中的一个,并且比较功能具有用于比较的多个选项。从针对比较功能定义的多个选项中选择基于第一值和第二值的比较选项,并用于比较第一值和第二值。然后将比较的结果置放在选择位置,该结果用于计算环境中的处理。
Description
背景技术
一般而言,一个或多个方面涉及计算环境内的处理,尤其涉及改进这种处理。
在计算中,浮点数用于表示实数,并且存在用于浮点数的多个表示。这些表示包括某些操作如何使用浮点数来运行的指示。例如,电气和电子工程师协会(IEEE)提供浮点标准,其指定对浮点数的最小化和最大化操作的行为。
尽管存在该标准,但许多编程语言和程序员已选择不遵循该标准。因此,在他们的库中的各种编程语言中存在若干不同的标准和表示。即使在一种语言中,常见的约定可能是不使用库功能,而是使用导致不同行为的一些其它语言语法。这导致难以在硬件中加速这些操作,并且通常需要包括若干条件分支的一系列的多个指令来模拟。
发明内容
通过提供用于促进如权利要求1所述的计算环境中的处理的计算机程序产品,克服了现有技术的缺点并提供了额外的优点。
用于执行针对不同标准和/或表示的比较操作的指令的数量减少,从而改进了计算环境内的处理。
在一个示例中,多个选项包括可被选择用于比较的多对特定情况。该多对特定情况包括至少一对特定情况,其包括从特定情况组中选择的至少一个特定情况,该特定情况组包括:无穷大,非数字(NAN)和有符号的零。
此外,在一个示例中,多个比较功能包括多个最大化功能和多个最小化功能中的至少一个。多个最大化功能包括执行最大值比较的多个最大化技术,并且多个最小化功能包括执行最小值比较的多个最小化技术。
作为示例,第一值和第二值由指令提供,并且第一值属于指令的操作数的一个元素,第二值属于指令的另一个操作数的对应元素。
此外,在一个示例中,基于指令的另一个控制来确定该一个元素的大小。进一步地,作为示例,第一值和第二值是浮点值,并且该一个元素的大小取决于浮点值的浮点格式。另一个控制指示所选择的浮点格式。
在一个示例中,在指令的掩码中提供控制。
本文还描述并要求保护与一个或多个方面有关的方法和系统。此外,还描述并且可能在此要求保护与一个或多个方面有关的服务。
通过本文描述的技术实现了额外的特征和优点。在此详细描述了其它实施例和方面,并且这些实施例和方面被认为是所要求保护的方面的一部分。
附图说明
在说明书结论处的权利要求中,一个或多个方面作为示例被特别指出并清楚地被要求保护。通过以下结合附图的详细描述,一个或多个方面的前述内容和目的、特征和优点是显而易见的,在附图中:
图1A描绘了结合和使用本发明的一个或多个方面的计算环境的一个示例;
图1B描绘了根据本发明的一个方面的图1A中的处理器的进一步细节;
图2A描绘了结合和使用本发明的一个或多个方面的计算环境的另一示例;
图2B描绘了图2A中的存储器的进一步细节;
图3A描绘了根据本发明的一个方面的矢量浮点最大化指令的一个示例;
图3B描绘了根据本发明的一个方面的图3A中的矢量浮点最大化指令的掩码字段的一个实施例;
图3C描绘了根据本发明的一个方面的矢量浮点最小化指令的一个示例;
图3D描绘了根据本发明的一个方面的矢量浮点最大化/最小化指令的一个示例;
图4A-4T描绘了根据本发明的多个方面的针对特定比较功能的比较选项的表;
图5描绘了根据本发明的一个方面的与执行矢量浮点最大化和/或最小化指令相关联的处理的框图的一个示例;
图6A-6B描绘了根据本发明的一个方面的促进计算环境中的处理的一个示例,该处理包括执行矢量浮点最大化/最小化指令;
图7描绘了云计算环境的一个实施例;以及
图8描绘了抽象模型层的一个示例。
具体实施方式
一个或多个方面涉及通过提供用于减少指令的数量的能力以执行针对不同标准和/或表示的浮点最大化和最小化操作,改进计算环境内的处理。如本文所示,在各种编程语言中存在许多不同的针对浮点数的标准和表示。即使在一种语言中,常见的约定可能是不使用库功能,而是使用导致不同行为的一些其它语言语法。比较的不同方面中的一些方面(即特殊或特定情况)是考虑+0大于-0还是认为它们相等,如何处理与NaN(非数字)的比较,是否发送SNaN上的异常(信令NaN),如何处理无穷大,是否在结果中将SNaN转换为QNaN(静态NaN),如果两个输入都是NaN,则哪个NaN有效载荷优先,等。
多年来已经出现了不同的浮点最大化和最小化指令;但是,这些指令无法捕获针对不同表示的特殊情况的所有排列。相反,对于每个最大化和最小化操作,存在捕获不同排列的多个指令。因此,根据本发明的一个方面,提供包括各种最大化功能的单个指令(例如,硬件/软件接口处的单个体系结构机器指令),每个最大化功能处理各种选项以覆盖许多排列。此外,提供包括各种最小化功能的单个指令(例如,硬件/软件接口处的单个体系结构机器指令),每个最小化功能处理各种选项以覆盖许多排列。通过使用这两个指令来覆盖最大化和最小化的不同排列,减少了处理排列的指令的数量,从而改善了处理和性能。
在进一步的实施例中,提供支持最大化和最小化操作的各种功能以及不同的选项的单个指令(例如,处于硬件/软件级别的单个体系结构机器指令)。通过提供单个指令来处理最大化和最小化操作的不同排列,所需的指令数量进一步减少到一条指令,从而减少了要编码的指令的数量,并提高了系统性能。
参考图1A描述结合和使用本发明的一个或多个方面的计算环境的一个实施例。在一个示例中,计算环境基于由纽约阿蒙克的国际商业机器公司提供的z/体系结构。在2015年3月的IBM公开号为SA22-7832-10的“z/Architecture Principles of Operation(z/体系结构的工作原理)”中描述了z/体系结构的一个实施例。Z/ARCHITECTURE是美国纽约阿蒙克的国际商业机器公司的注册商标。
在另一个示例中,计算环境基于由纽约阿蒙克的国际商业机器公司提供的Power体系结构。在2015年4月9日的国际商业机器公司的“Power ISA TM Version 2.07B(PowerISA TM版本2.07B)”中描述了Power体系结构的一个实施例。POWER ARCHITECTURE是美国纽约阿蒙克的国际商业机器公司的注册商标。
计算环境还可以基于其它体系结构,包括但不限于英特尔x86体系结构。也存在其它例子。
如图1A所示,计算环境100包括例如具有例如计算机系统/服务器12的节点10,其可与许多其它通用或专用计算系统环境或配置一起操作。可适于与计算机系统/服务器12一起操作的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机(PC)系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在许多计算环境中实践,包括但不限于通过通信网络链接的远程处理设备执行任务的分布式云计算环境。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质上。
如图1A所示,计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16,系统存储器28,以及将包括系统存储器28的各种系统组件耦接到处理器16的总线18。
总线18表示几种类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或使用多种总线体系结构中的任何总线体系结构的局域总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线,微通道体系结构(MCA)总线,增强型ISA(EISA)总线,视频电子标准协会(VESA)局域总线和外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,它包括易失性和非易失性介质,可移动和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可以用于读写不可移动的、非易失性磁介质(未示出并且通常称为“硬盘驱动器”)。尽管未示出,但是可以提供用于对可移动非易失性磁盘(例如,“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(诸如CD-ROM,DVD-ROM或其它光学介质)读写的光盘驱动器。在这种情况下,每个驱动器可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,这些程序模块被配置为执行本发明的实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40以及作为示例而非限制的操作系统、一个或多个应用程序、其它程序模块和程序数据可以存储在存储器28中。操作系统、一个或多个应用程序,其它程序模块和程序数据中的每一个或它们的某种组合可以包括网络环境的实现。程序模块42通常执行如本文所述的本发明实施例中的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信;还可与一个或多个使得用户能够与计算机系统/服务器12交互的设备通信;和/或与使得计算机系统/服务器12能够与一个或多个其它计算设备进行通信的任何设备(例如,网卡,调制解调器等)通信。这种通信可以通过输入/输出(I/O)接口22进行。此外,计算机系统/服务器12还可以通过网络适配器20与一个或多个网络(例如局域网(LAN),广域网(WAN),和/或公共网络(例如,因特网))通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它组件通信。应该理解,尽管未示出,但是其它硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码,设备驱动器,冗余处理单元,外部磁盘驱动阵列,RAID系统,磁带驱动器和数据备份存储系统等。
作为示例,处理器16包括用于执行指令的多个功能组件。如图1B所示,这些功能组件包括:例如,用于获取要执行的指令的指令获取组件120;用于解码所获取的指令并获得解码指令的操作数的指令解码单元122;用于执行解码指令的指令执行组件124;在需要的情况下,访问用于指令执行的存储器的存储器访问组件126;以及提供执行指令的结果的写回组件130。根据本发明的一个方面,如下面进一步描述的,这些组件中的一个或多个可用于执行具有可选择的选项的浮点最大化/最小化操作136。
在一个实施例中,处理器16还包括由一个或多个功能组件使用的一个或多个寄存器140。
参考图2A描述了结合和使用一个或多个方面的计算环境的另一实施例。在该示例中,计算环境200包括:例如,本机中央处理单元(CPU)202,存储器204,以及经由例如一个或多个总线208和/或其它连接而彼此耦接的一个或多个输入/输出设备和/或接口206。作为示例,计算环境200可以包括:由纽约阿蒙克的国际商业机器公司提供的PowerPC处理器或pSeries服务器;配备由加利福尼亚州帕洛阿尔托的惠普公司提供的英特尔安腾II处理器的HP Superdome;和/或基于由国际商业机器公司、惠普,英特尔,甲骨文或其它公司提供的体系结构的其它机器。
本机中央处理单元202包括一个或多个本机寄存器210,诸如在该环境内处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括代表任何特定时间点的环境状态的信息。
此外,本机中央处理单元202执行存储在存储器204中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器204中的仿真器代码212。该代码使得在一个体系结构中配置的计算环境能够仿真另一种体系结构。例如,仿真器代码212允许基于除z/体系结构之外的体系结构的机器(诸如PowerPC处理器,pSeries服务器,HP Superdome服务器或其它)仿真z/体系结构并执行基于z/体系结构开发的软件和指令。
参考图2B描述与仿真器代码212有关的进一步细节。存储在存储器204中的访客指令250包括被开发为在不同于本机CPU 202的体系结构中执行的软件指令(例如,与机器指令相关)。例如,访客指令250可能已经被设计为在z/体系结构处理器上执行,但是相反地,其在本机CPU 202上进行仿真,本机CPU 202可以是例如英特尔安腾II处理器。在一个示例中,仿真器代码212包括指令获取例程252以从存储器204获得一个或多个访客指令250,并且可选地为所获得的指令提供本地缓存。它还包括指令转换例程254,以确定已获得的访客指令的类型,并将访客指令转换成一个或多个相应的本机指令256。该转换包括:例如,识别要由访客指令执行的功能,并选择执行该功能的本机指令。
此外,仿真器212包括仿真控制例程260以使本机指令被执行。仿真控制例程260可以使本机CPU 202执行仿真一个或多个先前获得的访客指令的本机指令的例程,并且在这种执行结束时,将控制返回到指令获得例程以仿真下一个访客指令或一组访客指示的获得。本机指令256的执行可以包括:将数据从存储器204加载到寄存器中;将数据从寄存器存储回存储器;或者执行如由转换例程确定的某种类型的算术或逻辑运算。
每个例程例如以软件实现,该软件存储在存储器中并由本机中央处理单元202执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或它们的一些组合实现。可以使用本机CPU的寄存器210或通过使用存储器204中的位置来仿真仿真处理器的寄存器。在实施例中,访客指令250,本机指令256和仿真器代码212可以驻留在相同的存储器中或者可以分配在不同的存储器设备中。
如本文所使用的,固件包括例如处理器的微代码,毫代码和/或宏代码。例如,它包括用于实现更高级机器代码的硬件级指令和/或数据结构。在一个实施例中,它包括,例如,通常作为微代码传送的专有代码,其包括特定于底层硬件的可信软件或微代码,并控制对系统硬件的操作系统访问。
已获得、转换并执行的客户指令250例如是本文描述的矢量浮点最大化指令,矢量浮点最小化指令和/或矢量浮点最大化/最小化指令。具有一种体系结构(例如,z/体系结构)的指令从存储器中获取、转换并表示为一系列的具有另一种体系结构的本机指令256(例如,PowerPC,pSeries,英特尔等)。然后执行这些本机指令。
在此描述涉及矢量浮点最大化指令,矢量浮点最小化指令和矢量浮点最大化/最小化指令的一个实施例的细节,包括指令的字段和处理器的执行(在本机或仿真系统中)。根据本发明的一个方面,矢量浮点最大化指令执行值的比较以确定多个值中的较大值,并处理多个特殊比较情况(这里也称为特定情况)。通过使用单个指令(例如,单个架构机器指令)来处理最大值比较中的多个特殊情况,处理最大值比较的特殊情况所需的指令数量减少到一个;从而改进计算机处理。
类似地,矢量浮点最小化指令执行值的比较以确定多个值中的较小值,并处理多个特殊比较情况。通过使用单个指令(例如,单个体系结构机器指令)来处理最小值比较中的多个特殊情况,处理最小值比较的特殊情况所需的指令数量减少到一个;从而改进计算机处理。
此外,矢量浮点最大化/最小化指令执行值的比较以分别确定多个值中的较大/较小值,每个指令处理多个特殊比较情况。通过使用单个指令(例如,单个体系结构机器指令),处理不同排列所需的指令数量减少到一个;从而改进计算机处理。本发明的各方面与计算机技术和计算机处理的改进密不可分。
在一个实施例中,矢量浮点最大化指令,矢量浮点最小化指令和矢量浮点最大化/最小化指令中的一个或多个是矢量设施的一部分,其提供例如范围从一到十六个元素的固定大小的矢量。每个矢量包括由该设施中定义的矢量指令操作的数据。在一个实施例中,如果矢量由多个元素组成,则每个元素与其它元素并行处理。在完成所有元素的处理之前,不会发生指令完成。在其它实施例中,元素部分地并行和/或顺序地处理。
矢量指令可以实现为各种体系结构的一部分,包括但不限于z/体系结构,Power体系结构,x86,IA-32,IA-64等。尽管本文描述的实施例是针对z/体系结构的,但是本文描述的矢量指令和一个或多个其它方面可以基于许多其它体系结构。z/体系结构只是一个例子。
在矢量设施被实现为z/体系结构的一部分以使用矢量寄存器和指令的一个实施例中,矢量启用控制和指定控制寄存器(例如,控制寄存器0)中的寄存器控制被设置为例如一。如果安装了矢量设施并且在没有启用控制集的情况下执行矢量指令,则识别数据异常。如果未安装矢量设施并执行矢量指令,则识别操作异常。
在一个实施例中,存在32个矢量寄存器,并且其它类型的寄存器可以映射到矢量寄存器的象限。例如,寄存器文件可以包括32个矢量寄存器,每个寄存器的长度为128位。16个浮点寄存器(长度为64位)可以覆盖矢量寄存器。因此,作为示例,当修改浮点寄存器2时,也修改矢量寄存器2。针对其它类型的寄存器的其它映射也是可能的。
矢量数据例如,以与其它数据格式相同的从左到右的顺序出现在存储中。编号为0-7的数据格式的位构成存储中最左侧(最低编号)字节位置的字节,位8-15构成下一个连续位置中的字节,依此类推。在另一示例中,矢量数据可以以另一序列(例如从右到左)出现在存储中。
参考图3A描述矢量浮点最大化指令的一个示例。如图所示,该指令具有多个字段,并且字段可以具有与其相关联的下标编号。与指令的字段相关联的下标编号表示该字段应用的操作数。例如,与矢量寄存器V1相关联的下标编号1表示V1中的寄存器包括第一操作数,依此类推。寄存器操作数的长度是一个寄存器,其例如是128位。
参考图3A所示,在一个实施例中,矢量浮点最大化指令300包括指示矢量浮点最大化操作的操作码字段302a、302b;用于指定第一矢量寄存器(V1)的第一矢量寄存器字段304;用于指定第二矢量寄存器(V2)的第二矢量寄存器字段306;用于指定第三矢量寄存器(V3)的第三矢量寄存器字段308;第一掩码字段(M6)309;第二掩码字段(M5)310;第三掩码字段(M4)312;寄存器扩展位(RXB)字段314,下面将描述它们中的每一个。在一个实施例中,字段是分开的并且彼此独立;然而,在其它实施例中,可以组合多于一个字段。关于这些字段的进一步信息如下所述。
矢量寄存器字段304用于指示要存储第一操作数的矢量寄存器,第一操作数是比较两个操作数的元素值以获得两个元素值中的较大值的结果。操作数元素例如被视为具有指定格式的(IEEE)二进制浮点(BFP)数。两个操作数是包含在使用矢量寄存器字段306指定的矢量寄存器中的第二操作数和包含在使用矢量寄存器字段308指定的矢量寄存器中的第三操作数。在一个示例中,使用矢量寄存器字段304、306、308中的每一个与RXB字段314一起来指定矢量寄存器。
例如,RXB字段314包括用于矢量寄存器指定的操作数的最高有效位。未由指令指定的用于寄存器指定的位被保留并设置为零。例如,将最高有效位连接到矢量寄存器字段的四位寄存器指定的左侧,以创建五位矢量寄存器指定。
在一个示例中,RXB字段包括四个位(例如,位0-3),并且如下定义该位:
0-指令的第一矢量寄存器指定的最高有效位(例如,在位8-11中)。
1-指令的第二矢量寄存器指定的最高有效位(例如,在位12-15中),如果有的话。
2-指令的第三矢量寄存器指定的最高有效位(例如,在位16-19中),如果有的话。
3-指令的第四矢量寄存器指定的最高有效位(例如,在位32-35中),如果有的话。
例如,取决于寄存器编号,每个位由汇编器设置为0或1。例如,对于寄存器0-15,该位被设置为0;对于寄存器16-31,该位设置为1,等。
在一个实施例中,每个RXB位是用于包括一个或多个矢量寄存器的指令中的特定位置的扩展位。例如,RXB的位0是位置8-11的扩展位,其被分配给例如V1等。特别地,对于矢量寄存器,使用例如寄存器字段的四位字段来指定包含操作数的寄存器,其中添加其对应的寄存器扩展位(RXB)作为最高有效位。例如,如果四位字段是0110并且扩展位是0,则五位字段00110指示寄存器编号6。在进一步的实施例中,RXB字段包括附加位,并且多于一位被用作针对每个矢量或位置的扩展。
M6字段309指定比较的特殊情况(在本文中也称为特定情况)的处理。针对每个元素的结果的详细描述显示在图4A-4J中。如果指定了保留值,则在一个示例中识别规范异常。
M4字段312指定浮点格式。浮点格式确定矢量寄存器操作数内元素的大小。如果指定了保留值,则在一个示例中识别规范异常。
如图3B所示,在一个示例中,M5字段310包括以下控制:
单元素控制(S)316:如果位0被设置为1,则操作仅在矢量中的零索引元素上发生。在一个实施例中,在没有陷阱(trapping)异常条件的情况下,第一操作数矢量中的所有其它元素的位位置是不可预测的。忽略第二和第三个操作数中所有其它元素的值。如果位0被设置为零,则操作发生在矢量中的所有元素上。
保留:位1、2和3被保留并且将为零。否则,在一个示例中识别出规范异常。
尽管描述了各种字段和寄存器,但是本发明的一个或多个方面可以使用其它,附加或更少的字段或寄存器,或其它大小的字段或寄存器等。许多变体是可能的。例如,可以使用隐含寄存器而不是指令的明确指定的寄存器或字段。此外,可以使用除了矢量寄存器之外的寄存器。同样,其它变化也是可能的。
在矢量浮点最大化指令的一个实施例的操作中,将第二操作数的一个浮点元素或多个浮点元素与第三操作数的对应一个浮点元素或对应多个浮点元素进行比较,如图4A-4J所示。两个值中较大值被置放在第一操作数的相应元素中。操作数元素都被视为具有指定格式的BFP数。
执行的比较及其结果取决于所选择的比较功能(例如,由M6指示)和针对正在执行的特定比较功能的比较选项。比较选项(例如,包括以下情况中的任何两种情况的对:-∞,+∞,-FN,+FN,-0,+0,QNAN,SNAN,作为示例,其中FN是有限数)基于被比较的第二和第三操作数元素的值来选择。每个比较功能可以具有与其相关联的不同比较选项,并且针对比较选项的结果取决于正在执行的特定比较功能。对于不同的比较功能,可以为相同的比较选项指定不同的结果。例如,如果M6=0,并且正在比较的第二和第三操作数值是-0,+0,则结果是+0(参考图4A);但是,如果M6=3,并且第二和第三操作数值仍为-0,+0,则结果为-0(参考图4D)。许多变化都是可能的。
在一个实施例中,取决于所执行的最大化功能,如果第二或第三操作数中的任何浮点元素是NaN,则可以识别IEEE无效操作异常,如图4A-4J中所指定的。如果IEEE无效操作掩码位是1,则在一个示例中,发生具有针对IEEE无效操作和对应的元素索引的VXC设置的程序中断,并且操作被禁止。
在另一实施例中,指令的字段(例如,指令的诸如M6或另一选定字段的显式字段,或指令的隐含字段)包括多个位,并且每个位是选择器,其在置位(例如,为一)时定义不同的比较选项。例如,位0在置位时指示要忽略符号;位1在置位时指示以SNAN发信号;位2在置位时指示选择例如+0,-0中的哪个值;位3在置位时指示选择例如∞,-FN中的哪个值等。许多不同的选项可以由不同的位表示。通过使不同的位对应于不同的选项,可以置位一个或多个位以使用单个指令来提供许多不同的比较选项和结果。
在另一实施例中,提供了矢量浮点最小化指令,并且参考图3C进行描述。在一个实施例中,矢量浮点最小化指令320包括指示矢量浮点最小化操作的操作码字段322a、322b;用于指定第一矢量寄存器(V1)的第一矢量寄存器字段324;用于指定第二矢量寄存器(V2)的第二矢量寄存器字段326;用于指定第三矢量寄存器(V3)的第三矢量寄存器字段328;第一掩码字段(M6)329;第二掩码字段(M5)330;第三掩码字段(M4)332;以及寄存器扩展位(RXB)字段334,在此描述它们中的每一个。在一个实施例中,字段是分开的并且彼此独立;然而,在其它实施例中,可以组合多于一个字段。关于这些字段的进一步信息如下所述。
矢量寄存器字段324用于指示要存储第一操作数的矢量寄存器,第一操作数是比较两个操作数的元素值以获得两个元素值中的较小值的结果。例如,操作数元素被视为具有指定格式的二进制浮点数。两个操作数是包含在使用矢量寄存器字段326指定的矢量寄存器中的第二操作数和包含在使用矢量寄存器字段328指定的矢量寄存器中的第三操作数。在一个示例中,如上所述,使用矢量寄存器字段324、326、328中的每一个与RXB字段334一起来指定矢量寄存器。
在该实施例中,M6字段329指定比较的特殊情况(在本文中也称为特定情况)的处理。针对每个元素的结果的详细描述显示在图4K-4T中。如果指定了保留值,则在一个示例中识别规范异常。
M4字段332指定浮点格式。浮点格式确定矢量寄存器操作数内元素的大小。如果指定了保留值,则在一个示例中识别规范异常。
如图3B所示,在一个示例中,M5字段330包括以下控制:
单元素控制(S)316:如果位0被设置为1,则操作仅发生在矢量中的零索引元素上。在没有陷阱异常条件的情况下,在一个实施例中,第一操作数矢量中的所有其它元素的位位置是不可预测的。忽略第二和第三个操作数中所有其它元素的值。如果位0被设置为零,则操作发生在矢量中的所有元素上。
尽管描述了各种字段和寄存器,但是本发明的一个或多个方面可以使用其它,附加或更少的字段或寄存器,或其它大小的字段或寄存器等。许多变体是可能的。例如,可以使用隐含寄存器而不是指令的明确指定的寄存器或字段。此外,可以使用除了矢量寄存器之外的寄存器。同样,其它变化也是可能的。
在矢量浮点最小化指令的一个实施例的操作中,将第二操作数的一个浮点元素或多个浮点元素与第三操作数的对应一个浮点元素或对应多个浮点元素进行比较。两个值中的较小值被置放在第一操作数的对应元素中。操作数元素都被视为具有指定格式的BFP数。
执行的比较及其结果取决于所选择的比较功能(例如,由M6指示)和针对正在执行的特定比较功能的比较选项。比较选项(例如,包括以下情况中的任何两种情况的对:-∞,+∞,-FN,+FN,-0,+0,QNAN,SNAN,作为示例,其中FN是有限数)基于被比较的第二和第三操作数元素的值来选择。每个比较功能可以具有与其相关联的不同比较选项,并且针对比较选项的结果取决于正在执行的特定比较功能。对于不同的比较功能,可以为相同的比较选项指定不同的结果。
在一个示例中,取决于所执行的最小化功能,如果第二或第三操作数中的任何浮点元素是NaN,则可识别IEEE无效操作异常,如图4K-4T中所指定的。如果IEEE无效操作掩码位是1,则在一个示例中,发生具有针对IEEE无效操作和对应的元素索引的VXC设置的程序中断,并且操作被禁止。
在又一个实施例中,可以提供一条指令,其中最大化/最小化是例如指令的可选控制。参考图3D描述矢量浮点最大化/最小化指令350的一个示例。在一个实施例中,矢量浮点最大化/最小化指令350包括指示矢量浮点最大化/最小化操作的操作码字段352a、352b;用于指定第一矢量寄存器(V1)的第一矢量寄存器字段354;用于指定第二矢量寄存器(V2)的第二矢量寄存器字段356;用于指定第三矢量寄存器(V3)的第三矢量寄存器字段358;第一掩码字段(M6)359;第二掩码字段(M5)360;第三掩码字段(M4)362;寄存器扩展位(RXB)字段364,在此描述它们中的每一个。在一个实施例中,字段是分开的并且彼此独立;然而,在其它实施例中,可以组合多于一个字段。关于这些字段的进一步信息如下所述。
矢量寄存器字段354用于指示要存储第一操作数的矢量寄存器,第一操作数是比较两个操作数的元素值以获得两个元素值中的较大值/较小值的结果,取决于所选功能,最大化或最小化。例如,操作数元素被视为具有指定格式的二进制浮点数。两个操作数是包含在使用矢量寄存器字段356指定的矢量寄存器中的第二操作数和包含在使用矢量寄存器字段358指定的矢量寄存器中的第三操作数。在一个示例中,如上所述,使用矢量寄存器字段354、356、358中的每一个与RXB字段364一起来指定矢量寄存器。
在该实施例中,M6字段359指定比较的特殊情况(在本文中也称为特定情况)的处理。针对每个元素的结果的详细描述显示在图4A-4T中。如果指定了保留值,则在一个示例中识别规范异常。执行的功能取决于是执行最大化还是最小化操作,以及下面的相应M6值。
在进一步的实施例中,对于所支持的每个最大化/最小化功能,可以存在单独的数字。
M4字段362指定浮点格式。浮点格式确定矢量寄存器操作数内元素的大小。如果指定了保留值,则在一个示例中识别规范异常。
如图3B所示,在一个示例中,M5字段360包括以下控制:
单元素控制(S)316:如果位0被设置为1,则操作仅在矢量中的零索引元素上发生。在没有陷阱异常条件的情况下,在一个实施例中,第一操作数矢量中的所有其它元素的位位置是不可预测的。忽略第二和第三个操作数中所有其它元素的值。如果位0被设置为零,则操作发生在矢量中的所有元素上。
尽管描述了各种字段和寄存器,但是本发明的一个或多个方面可以使用其它,附加或更少的字段或寄存器,或其它大小的字段或寄存器等。许多变体是可能的。例如,可以使用隐含寄存器而不是指令的明确指定的寄存器或字段。此外,可以使用除了矢量寄存器之外的寄存器。同样,其它变化也是可能的。
在矢量浮点最大化/最小化指令的一个实施例的操作中,将第二操作数的一个浮点元素或多个浮点元素与第三操作数的对应一个浮点元素或对应多个浮点元素进行比较。取决于是执行最大化功能还是最小化功能,这两个值中的较大值或较小值被置放在第一操作数的对应元素中。操作数元素都被视为具有指定格式的BFP数。
执行的比较及其结果取决于所选择的比较功能(例如,由M6指示)和针对正在执行的特定比较功能的比较选项。比较选项(例如,包括以下情况中的任何两种情况的对:-∞,+∞,-FN,+FN,-0,+0,QNAN,SNAN,作为示例,其中FN是有限数)基于被比较的第二和第三操作数元素的值来选择。每个比较功能可以具有与其相关联的不同比较选项,并且针对比较选项的结果取决于正在执行的特定比较功能。
在一个实施例中,取决于所执行的功能,如果第二或第三操作数中的任何浮点元素是NaN,则可以识别IEEE无效操作异常,如图4A-4T中所指定的。如果IEEE无效操作掩码位是1,则在一个示例中,发生具有针对IEEE无效操作和对应的元素索引的VXC设置的程序中断,并且操作被禁止。
参考图5描述关于矢量浮点最大化,最小化和/或最大化/最小化指令的操作的进一步细节。在一个示例中,图5的处理由至少一个处理器基于获得并执行指令中的一个指令来执行。
参考图5,首先获得要比较的第一值和第二值,步骤500。在一个示例中,第一值属于操作数2的元素,第二值属于操作数3的对应元素。(在其它实施例中,并行或顺序地比较多个元素的多个值)。
确定将基于指令的控制来执行的比较功能,步骤502。例如,如果指令是矢量浮点最大化指令并且M6=0,则执行IEEE MaxNum功能。类似地,如果指令是矢量浮点最小化指令并且M6=0,则执行IEEE MinNum功能。同样,如果指令是矢量浮点最大化/最小化指令且M6=0,则在指令为执行最大化操作的情况下,执行IEEE MaxNum功能,或者在指令为执行最小化操作的情况下,执行IEEE MinNum功能。许多其它例子都是可能的。
此后,对于所选择的比较功能(例如,IEEE MaxNum,IEEE MinNum等),从针对特定所选比较功能的多个比较选项中基于第一值和第二值来选择比较选项,步骤504。例如,如果正在执行IEEE MaxNum功能(例如,M6=0),并且第一值是-0(a)而第二值是+∞(b),则该对从为IEEE MaxNum功能提供的选项(参考图4A)中选择。使用所选择的比较选项来比较这些值以获得结果,步骤506。例如,在图4A中的输入值(-0,+∞)的交点处,是针对IEEEMaxNum功能的比较结果。因此,在该特定示例中的获得结果是T(b),其中操作数3的值被指示为比较的结果。该结果被置放在选择位置,步骤508。例如,它被放置在使用V1指定的寄存器中。然而,在另一示例中,它可以被置放在存储器位置或其它位置。
参考图6A-6B描述与促进计算环境内的处理有关的进一步细节,包括执行用于执行矢量浮点最大化,最小化和/或最大化/最小化指令的指令。
参考图6A,获得用于执行第一值和第二值的比较的指令(例如,单个体系结构机器指令),步骤600,并且该指令由至少一个处理器执行,步骤602。该执行包括例如基于指令的控制确定要执行的比较功能,步骤604。比较功能是针对指令配置的多个比较功能中的一个(606),并且比较功能具有多个用于比较的选项(608)。从用于比较功能的多个选项中选择要用于比较第一值和第二值的比较选项,步骤610。基于第一值和第二值选择比较选项。使用比较选项来比较第一值和第二值以获得结果,步骤612。该结果针对由指令的控制所指示的比较功能选择的比较选项是特定的(614)。结果被置放在选择位置,并且将用于计算环境内的处理,步骤616。
在一个示例中,多个选项包括可被选择用于比较的多对特定情况(620),并且该多对特定情况包括至少一对特定情况,该至少一对特定情况包括从特定情况组选择的至少一个特定情况,该特定情况组包括:无穷大,非数字(NAN)和有符号的零(622)。
作为示例,参考图6B,多个比较功能包括多个最大化功能和多个最小化功能中的至少一个(630);多个最大化功能包括执行最大值比较的多个最大化技术(632);多个最小化功能包括执行最小值比较的多个最小化技术(634)。
在一个实施例中,第一值和第二值由指令提供(636),并且第一值属于指令的操作数的一个元素,第二值属于指令的另一个操作数的对应元素(638)。作为示例,基于指令的另一个控制来确定该一个元素的大小(640)。
此外,在一个示例中,第一值和第二值是浮点值(642),该一个元素的大小取决于浮点值的浮点格式(644),而另一个控制指示所选择的浮点格式(646)。另外,在一个示例中,在指令的掩码中提供控制(648)。
这里描述的是用于使用单个体系结构指令来执行处理特殊情况的浮点比较的设施。该指令取代了许多指令,并改善了计算机处理和性能。
尽管提供了各种示例,但是在不脱离所要求保护的方面的精神的情况下,可以进行变化。例如,在其它实施例中,在由指令使用的寄存器和/或字段中包括的值可以在其它位置,例如存储器位置等。许多其它变体是可能的。
一个或多个方面可以涉及云计算。
应当预先理解,尽管本公开包括关于云计算的详细描述,但是本文所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是服务交付的模型,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源能够以最小的管理成本或与服务提供商进行最少的交互来快速部署和释放。可配置计算资源例如是:网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务。这种云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。
特征如下:
按需自助式服务:云的消费者在无需与服务提供商进行人为交互的情况下,能够单方面自动地按需部署计算能力,诸如服务器时间和网络存储。
广泛的网络接入:计算能力通过网络获得,并通过标准机制访问,该标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如,移动电话,膝上型电脑和PDA)的使用。
资源池:提供商的计算资源被归入资源池,以使用多租户模式为多个消费者提供服务,其中根据需求动态分配和重新分配不同的实体资源和虚拟资源。通常消费者不能控制或者并不知晓所提供的资源的确切位置,但是可能能够在更高抽象级别(例如,国家,州或数据中心)指定位置,因此具有位置无关性。
迅速弹性:可以迅速、有弹性地(有时是自动地)部署计算能力,以快速扩展,并且能迅速释放来快速缩小。对于消费者来说,用于部署的可用计算能力通常显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如,存储,处理,带宽和活跃用户帐户)的某种抽象级别的计量能力来自动控制和优化资源使用。可以监视,控制和报告资源使用,从而为所使用的服务的提供者和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用提供商在云基础架构上运行的应用。可以通过诸如网络浏览器(例如,基于网络的电子邮件)的瘦客户机接口从各种客户机设备访问应用。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统、存储、甚至单个应用能力,可能的例外是有限的特定于用户的应用配置设置。
平台即服务(PaaS):提供给消费者的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用由提供商支持的编程语言和工具创建。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统或存储,但可以控制已部署的应用以及可能的应用托管环境配置。
基础架构即服务(IaaS):提供给消费者的能力是部署处理、存储、网络和其它基础计算资源,其中消费者能够部署和运行任意软件,该软件可以包括操作系统和应用。消费者既不管理也不控制底层云基础设施,而是控制操作系统,存储,部署的应用,以及可能对选择的网络组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础架构仅为组织运行。它可以由组织或第三方管理,可以存在于该组织内部或外部。
共同体云:云基础架构由多个组织共享,并支持具有共同利害关系(例如,任务使命,安全要求,策略和合规考虑)的特定共同体。它可能由组织或第三方管理,并且可能存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供,并由销售云服务的组织所有。
混合云:云基础架构由两个或多个云(私有云,共同体云或公共云)组成,这些云仍然是独特的实体,但通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态,低耦合性,模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础设施。一个这样的节点是图1A中描绘的节点10。
计算节点10仅是合适的云计算节点的一个示例,并且不旨在对本文描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,云计算节点10能够实现和/或执行上文阐述的任何功能。
现在参考图7,描绘了示意性的云计算环境50。如图所示,云计算环境50包括云的消费者使用本地计算设备可以与其通信的一个或多个计算节点10,本地计算设备例如是个人数字助理(PDA)或蜂窝电话54A,台式计算机54B,膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以在一个或多个网络中物理地或虚拟地分组(未示出),例如如上所述的私有云,共同体云,公共云或混合云,或其组合。这样,云的消费者无需维护本地计算设备上的资源就能够允许云计算环境50提供基础架构即服务、平台即服务和/或软件即服务。应该理解,图7中所示的计算设备54A-N的类型仅仅是示意性的,而计算节点10和云计算环境50可以(例如,使用网络浏览器)通过任何类型的网络和/或网络可寻址连接与任何类型的计算设备通信。
现在参考图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应该事先理解图8中所示的组件\层和功能仅仅是示意性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73(包括虚拟私有网络);虚拟应用和操作系统74;和虚拟客户端75。
在一个示例中,管理层80可以提供下面描述的功能。资源供应功能81提供用于在云计算环境内执行任务的计算资源和其它资源的动态获取。计量和定价功能82在云计算环境内对资源的使用进行成本跟踪,并且提供用于消费这些资源的帐单或发票。在一个示例中,这些资源可以包括应用软件许可。安全功能为云的消费者和任务提供身份认证,以及为数据和其它资源提供保护。用户门户功能83为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84提供云计算资源的分配和管理,以满足所需的服务水平。服务水平协议(SLA)计划和履行功能85为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制与导航91;软件开发和生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;和指令处理96。
本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个计算机可读存储介质(或多个计算机可读存储介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、诸如在其上记录有指令的打孔卡或凹槽内凸起结构的机械编码装置、以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为瞬时信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。
这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如,因特网,局域网,广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括诸如Smalltalk,C++等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分地在用户计算机上并且部分地在远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者,可以连接到外部计算机(例如,利用互联网服务提供商来通过互联网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化定制电子电路,该电子电路执行计算机可读程序指令,以便执行本发明的各方面。
这里参考根据本发明实施例的方法,装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器来生产出机器,以使得通过计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现流程图和/或一个框图块或多个框图块中所指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,这些计算机可读程序指令可以使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,以使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或一个框图块或多个框图块中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机,其它可编程数据处理装置或其它设备上,以使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,这样在计算机、其它可编程装置或其它设备上执行的指令实现在流程图和/或一个框图块或多个框图块中指定的功能/动作。
附图中的流程图和框图示出根据本发明的各种实施例的系统,方法和计算机程序产品的可能实施方式的体系结构,功能和操作。在这方面,流程图或框图中的每个框可以表示模块、程序段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所标注的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上并行地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作,或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
除了上述之外,可以由提供客户环境管理的服务提供商提供、给予、部署、管理、服务一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以例如根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容来接收付款。
在一个方面,可以部署应用程序以执行一个或多个实施例。作为一个示例,应用程序的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。
作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括计算机可读介质,其中该计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
尽管以上描述了各种实施例,但这些仅是示例。例如,具有其它体系结构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的指令,指令格式,指令字段和/或指令值。许多变化是可能的。
此外,其它类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦接到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器,大容量存储和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少执行期间必须从大容量存储重新取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘,显示器,指示设备,DASD,磁带,CD,DVD,拇指驱动器和其它存储介质等)可以直接耦接到系统或通过介入I/O控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。
这里使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。
Claims (12)
1.一种计算机实现的方法包括:获得要执行的指令(600),所述指令为执行第一值和第二值的比较(600),并且所述方法的特征在于:
执行所述指令(602),所述指令是至少支持多个最大化功能或多个最小化功能的单个体系结构指令(300、320、350),所述多个最大化功能至少包括多个以下项:IEEE MaxNum、Java Math.Max()、C-Style Max Macro、C++Algorithm.max()、fmax()、IEEE MaxNumMag、Java Math.Max()的绝对值、C-Style Max Macro的绝对值、C++Algorithm.max()的绝对值和fmax()的绝对值,并且所述多个最小化功能至少包括多个以下项:IEEE MinNum、JavaMath.Min()、C-Style Min Macro、C++Algorithm.min()、fmin()、IEEE MinNum的绝对值、Java Math.Min()的绝对值、C-Style Min Macro的绝对值、C++Algorithm.min()的绝对值和fmin()的绝对值,所述执行包括:
基于所述指令的控制(309、329、359),确定要执行的比较功能,其中,所述比较功能是针对所述指令配置的所述多个最大化功能或所述多个最小化功能中的一个,并且其中所述比较功能具有特定用于所述比较功能的多个比较选项;
从用于所述比较功能的所述多个比较选项中选择对应于要比较的所述第一值和所述第二值的比较选项(610);
使用所述比较选项来比较所述第一值和所述第二值以获得结果(612),所述结果对于针对由所述指令的所述控制指示的所述比较功能选择的比较选项是特定的(612);以及
将所述结果置放在选择位置,所述结果被用于计算环境内的处理(616)。
2.如权利要求1所述的方法,其中,所述多个比较选项中的每个比较选项包括一对情况,所述一对情况包括以下项中的任何两项:-∞、+∞、-FN、+FN、-0、+0、QNAN、SNAN,其中FN是有限数。
3.如权利要求1所述的方法,其中,所述多个比较选项中的至少一个比较选项包括一对情况,所述一对情况包括以下项中的任何两项:-∞、+∞、-0、+0、QNAN、SNAN(622)。
4.如权利要求1所述的方法,其中,所述单个体系结构指令支持所述多个最大化功能,所述多个最大化功能包括:IEEE MaxNum、Java Math.Max()、C-Style Max Macro、C++Algorithm.max()、fmax()、IEEE MaxNumMag、Java Math.Max()的绝对值、C-Style MaxMacro的绝对值、C++Algorithm.max()的绝对值和fmax()的绝对值。
5.如权利要求1所述的方法,其中,所述单个体系结构指令支持所述多个最小化功能,所述多个最小化功能包括:IEEE MinNum、Java Math.Min()、C-Style Min Macro、C++Algorithm.min()、fmin()、IEEE MinNum的绝对值、Java Math.Min()的绝对值、C-StyleMin Macro的绝对值、C++Algorithm.min()的绝对值和fmin()的绝对值。
6.如权利要求1所述的方法,其中,所述单个体系结构指令包括所述多个最大化功能和所述多个最小化功能二者。
7.如权利要求1所述的方法,其中,所述第一值和所述第二值由所述指令提供(636),并且其中所述第一值属于所述指令的操作数的一个元素,所述第二值属于所述指令的另一个操作数的对应元素(638)。
8.如权利要求7所述的方法,其中,基于所述指令的另一个控制来确定所述一个元素的大小(640、312、332、362)。
9.如权利要求8所述的方法,其中,所述第一值和所述第二值是浮点值(642),并且所述一个元素的所述大小取决于所述浮点值的浮点格式(644),并且其中,所述另一个控制指示所选择的浮点格式(646)。
10.如权利要求1所述的方法,其中,所述控制在所述指令的掩码中提供(309、329、359)。
11.一种系统,包括适于执行根据任何一项前述方法权利要求所述的方法的所有步骤的装置。
12.一种计算机可读存储介质,所述计算机可读存储介质具有指令,所述指令可由处理器执行以使所述处理器实施根据权利要求1-10中任意一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/335,914 | 2016-10-27 | ||
US15/335,914 US9785435B1 (en) | 2016-10-27 | 2016-10-27 | Floating point instruction with selectable comparison attributes |
PCT/EP2017/076493 WO2018077671A1 (en) | 2016-10-27 | 2017-10-17 | Floating point vector comparison instruction with selectable options |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109891387A CN109891387A (zh) | 2019-06-14 |
CN109891387B true CN109891387B (zh) | 2023-03-21 |
Family
ID=59982134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780066088.9A Active CN109891387B (zh) | 2016-10-27 | 2017-10-17 | 具有可选择比较属性的浮点指令的方法、系统及存储介质 |
Country Status (13)
Country | Link |
---|---|
US (1) | US9785435B1 (zh) |
EP (1) | EP3532921B1 (zh) |
JP (1) | JP6916874B2 (zh) |
KR (1) | KR102202149B1 (zh) |
CN (1) | CN109891387B (zh) |
DK (1) | DK3532921T3 (zh) |
LT (1) | LT3532921T (zh) |
PT (1) | PT3532921T (zh) |
RU (1) | RU2729452C1 (zh) |
SI (1) | SI3532921T1 (zh) |
TW (1) | TWI656477B (zh) |
WO (1) | WO2018077671A1 (zh) |
ZA (1) | ZA201903112B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI693550B (zh) * | 2018-12-06 | 2020-05-11 | 中華電信股份有限公司 | 支援虛擬機多磁碟架構的備份方法 |
US11023205B2 (en) * | 2019-02-15 | 2021-06-01 | International Business Machines Corporation | Negative zero control in instruction execution |
GB2605568B (en) * | 2021-03-23 | 2023-05-17 | Imagination Tech Ltd | Performing operations using floating point values |
US11797270B2 (en) * | 2021-06-17 | 2023-10-24 | International Business Machines Corporation | Single function to perform multiple operations with distinct operation parameter validation |
US20230060146A1 (en) * | 2021-08-31 | 2023-03-02 | Intel Corporation | Bfloat16 classification and manipulation instructions |
US20230072105A1 (en) * | 2021-08-31 | 2023-03-09 | Intel Corporation | Bfloat16 comparison instructions |
EP4318225A1 (en) * | 2022-08-03 | 2024-02-07 | Intel Corporation | 8-bit floating point classification and manipulation instructions |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1471666A (zh) * | 2000-08-30 | 2004-01-28 | ض� | 使指令集结构同时执行原始和阴影数字信号处理子指令的方法和设备 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4683546A (en) * | 1984-01-03 | 1987-07-28 | Motorola, Inc. | Floating point condition code generation |
JPH0338724A (ja) * | 1989-07-06 | 1991-02-19 | Fujitsu Ltd | 複数の浮動小数点形式の演算を行う情報処理装置 |
US5696709A (en) * | 1995-03-31 | 1997-12-09 | International Business Machines Corporation | Program controlled rounding modes |
US6298367B1 (en) | 1998-04-06 | 2001-10-02 | Advanced Micro Devices, Inc. | Floating point addition pipeline including extreme value, comparison and accumulate functions |
US6085208A (en) * | 1997-10-23 | 2000-07-04 | Advanced Micro Devices, Inc. | Leading one prediction unit for normalizing close path subtraction results within a floating point arithmetic unit |
US6844880B1 (en) * | 1999-12-06 | 2005-01-18 | Nvidia Corporation | System, method and computer program product for an improved programmable vertex processing model with instruction set |
US7228324B2 (en) * | 2001-05-25 | 2007-06-05 | Sun Microsystems, Inc. | Circuit for selectively providing maximum or minimum of a pair of floating point operands |
US7529912B2 (en) * | 2002-02-12 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for instruction-level specification of floating point format |
US7219337B2 (en) * | 2003-03-06 | 2007-05-15 | Northrop Grumman Corporation | Direct instructions rendering emulation computer technique |
US8051118B2 (en) * | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Composition of decimal floating point data |
US8327120B2 (en) * | 2007-12-29 | 2012-12-04 | Intel Corporation | Instructions with floating point control override |
US9335993B2 (en) * | 2011-12-29 | 2016-05-10 | International Business Machines Corporation | Convert from zoned format to decimal floating point format |
US9588762B2 (en) * | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9411589B2 (en) * | 2012-12-11 | 2016-08-09 | International Business Machines Corporation | Branch-free condition evaluation |
US9715385B2 (en) * | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
RU2609745C2 (ru) * | 2014-05-28 | 2017-02-02 | Общество с ограниченной ответственностью "ПАВЛИН Технологии" | Способ осуществления операции скалярного умножения произвольного вектора на загружаемый в устройство векторный коэффициент и опционального сложения со скалярным коэффициентом |
US9916130B2 (en) | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
-
2016
- 2016-10-27 US US15/335,914 patent/US9785435B1/en active Active
-
2017
- 2017-10-17 LT LTEP17791010.6T patent/LT3532921T/lt unknown
- 2017-10-17 PT PT177910106T patent/PT3532921T/pt unknown
- 2017-10-17 JP JP2019519677A patent/JP6916874B2/ja active Active
- 2017-10-17 DK DK17791010.6T patent/DK3532921T3/da active
- 2017-10-17 KR KR1020197012987A patent/KR102202149B1/ko active IP Right Grant
- 2017-10-17 CN CN201780066088.9A patent/CN109891387B/zh active Active
- 2017-10-17 WO PCT/EP2017/076493 patent/WO2018077671A1/en unknown
- 2017-10-17 SI SI201730665T patent/SI3532921T1/sl unknown
- 2017-10-17 RU RU2019101815A patent/RU2729452C1/ru active
- 2017-10-17 EP EP17791010.6A patent/EP3532921B1/en active Active
- 2017-10-18 TW TW106135619A patent/TWI656477B/zh active
-
2019
- 2019-05-17 ZA ZA2019/03112A patent/ZA201903112B/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1471666A (zh) * | 2000-08-30 | 2004-01-28 | ض� | 使指令集结构同时执行原始和阴影数字信号处理子指令的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
JP2020504345A (ja) | 2020-02-06 |
US9785435B1 (en) | 2017-10-10 |
RU2729452C1 (ru) | 2020-08-06 |
SI3532921T1 (sl) | 2021-04-30 |
LT3532921T (lt) | 2021-04-12 |
EP3532921B1 (en) | 2021-02-24 |
KR20190061056A (ko) | 2019-06-04 |
CN109891387A (zh) | 2019-06-14 |
TWI656477B (zh) | 2019-04-11 |
DK3532921T3 (da) | 2021-03-29 |
EP3532921A1 (en) | 2019-09-04 |
ZA201903112B (en) | 2021-04-28 |
TW201820119A (zh) | 2018-06-01 |
KR102202149B1 (ko) | 2021-01-14 |
JP6916874B2 (ja) | 2021-08-11 |
PT3532921T (pt) | 2021-03-30 |
WO2018077671A1 (en) | 2018-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109891387B (zh) | 具有可选择比较属性的浮点指令的方法、系统及存储介质 | |
US10698688B2 (en) | Efficient quantization of compare results | |
US10346134B2 (en) | Perform sign operation decimal instruction | |
KR20230122163A (ko) | 16진수 부동 소수점을 스케일된 10진수로의 벡터 변환명령 | |
CN109791478B (zh) | 十进制移位和除法指令 | |
CN109791479B (zh) | 十进制乘法和移位指令 | |
US11442726B1 (en) | Vector pack and unpack instructions | |
US10990390B2 (en) | Decimal load immediate instruction | |
WO2023093524A1 (en) | Reducing data format conversion of an accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |