KR20190061056A - Floating point instruction with selectable comparison properties - Google Patents

Floating point instruction with selectable comparison properties Download PDF

Info

Publication number
KR20190061056A
KR20190061056A KR1020197012987A KR20197012987A KR20190061056A KR 20190061056 A KR20190061056 A KR 20190061056A KR 1020197012987 A KR1020197012987 A KR 1020197012987A KR 20197012987 A KR20197012987 A KR 20197012987A KR 20190061056 A KR20190061056 A KR 20190061056A
Authority
KR
South Korea
Prior art keywords
instruction
comparison
value
absolute values
max
Prior art date
Application number
KR1020197012987A
Other languages
Korean (ko)
Other versions
KR102202149B1 (en
Inventor
조나단 브래드버리
에릭 슈워츠
실비아 밀리타 뮬러
마이클 칼 그쉬윈드
브레트 올슨
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20190061056A publication Critical patent/KR20190061056A/en
Application granted granted Critical
Publication of KR102202149B1 publication Critical patent/KR102202149B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/49926Division by zero
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical 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)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

선택 가능한 비교 속성들을 갖는 부동 소수점 명령
제1 값과 제2 값의 비교(a comparison)를 수행하는 하나의 명령이 실행된다.
상기 명령의 하나의 제어에 기초하여, 수행될 비교 함수(a compare function)가 결정된다. 상기 비교 함수는 상기 명령을 위해 구성된 복수의 비교 함수들 중 하나이고, 상기 비교 함수는 비교를 위한 복수의 옵션들(a plurality of options)을 갖는다. 상기 제1값과 상기 제2 값에 기초한 하나의 비교 옵션(a compare option)이 상기 비교 함수를 위해 정의된 상기 복수의 옵션들로부터 선택되고, 상기 제1값과 상기 제2 값을 비교하기 위해 사용된다. 상기 비교의 하나의 결과(a result)는 그 다음 선택된 위치(in a select location)에 배치되고, 상기 결과는 상기 컴퓨팅 환경 내의 처리에 사용된다.
Floating point instruction with selectable comparison properties
One instruction to perform a comparison of the first value and the second value is executed.
Based on one control of the instruction, a compare function to be performed is determined. The comparison function is one of a plurality of comparison functions configured for the instruction and the comparison function has a plurality of options for comparison. Wherein a comparison option based on the first value and the second value is selected from the plurality of options defined for the comparison function and wherein the comparison of the first value with the second value Is used. A result of the comparison is placed at the next selected location and the result is used for processing in the computing environment.

Description

선택 가능한 비교 속성들을 갖는 부동 소수점 명령Floating point instruction with selectable comparison properties

[0001] 본 발명의 하나 또는 그 이상의 실시 예들은 일반적으로 컴퓨팅 환경 내에서의 처리에 관한 것으로, 특히 그러한 처리를 개선하는 것에 관한 것이다.[0001] One or more embodiments of the present invention generally relate to processing within a computing environment, and in particular, to improving such processing.

[0002] 컴퓨팅에서, 부동소수점 수들(floating point numbers)은 실수들(real numbers)을 표현하기 위해 사용되며, 부동 소수점 수들을 위해 사용되는 다수 표현들 (a number of representations) 이 있었다. 이들 표현들은 특정 연산들(certain operations)이 부동 소수점 수들로 처리되는 방법의 표시들(indications)을 포함한다. 예를 들어, IEEE(the Institute of Electrical and Electronics Engineers)는 부동 소수점 수들 상의 최소 및 최대 연산들을 위한 처리(the behavior for minimum and maximum operations)를 명시하는 부동 소수점 표준을 제공한다.[0002] In computing, floating point numbers are used to represent real numbers, and there are a number of representations used for floating point numbers. These representations include indications of how certain operations are to be handled with floating-point numbers. For example, the Institute of Electrical and Electronics Engineers (IEEE) provides a floating-point standard that specifies the behavior for minimum and maximum operations on floating-point numbers.

[0003] 비록 이러한 표준은 존재하지만, 많은 프로그래밍 언어들과 프로그래머들은 이러한 표준을 따르지 않았다. 그래서, 다양한 프로그램 언어들 사이에서는 그들의 라이브러리(libraries) 내에 여러 다른 표준들과 표현들이 존재하였다. 하나의 언어 내부에서조차, 하나의 라이브러리 함수(a library function)를 사용하는 것이 아니라, 다른 처리(differing behavior)를 가져오는 다른 언어 신택스(language syntax)를 사용하는 것이 공동 관행(the common convention)이었다. 이 때문에 하드에어에서 이들 연산들의 속도를 높이는데 어려움이 있었고, 에뮬레이트하기 위해 여러 조건 분기들(several conditional branches)을 포함하는 많은 명령들의 시퀀스가 종종 필요했다. Although these standards exist, many programming languages and programmers have not followed these standards. Thus, there were many different standards and expressions within their libraries between different programming languages. Even within a language, it was the common convention to use a different language syntax that yields differing behavior, rather than using a library function. This has made it difficult to speed up these operations in hard air, and often requires a sequence of many instructions, including several conditional branches, to emulate.

[0004] 청구항 1에서 청구한 바와 같은 컴퓨팅 환경에서 처리를 용이하게 하기 위한 컴퓨터 프로그램 제품의 제공을 통해 종래 기술의 단점들이 극복되고 부가적인 장점들이 제공된다. [0004] The disadvantages of the prior art are overcome and additional advantages are provided through the provision of a computer program product for facilitating processing in a computing environment as claimed in claim 1.

[0005] 다른 표준들 및/또는 표현들에 대한 비교연산들을 수행하기 위해 사용되는 다수의 명령들이 감소되어서, 이 때문에 컴퓨팅 환경 내의 처리가 개선된다. [0005] The number of instructions used to perform comparison operations on other standards and / or representations has been reduced, thereby improving processing within the computing environment.

[0006] 한 예에서, 복수의 옵션들(the plurality of options)은 비교를 위해 선택 가능한 복수의 쌍들의 특정 케이스들(a plurality of pairs of particular cases)을 포함한다. 상기 복수의 쌍들의 특정 케이스들은, 무한대(an infinity), NAN(a not-a-number), 및 부호 있는 영(a signed zero)를 포함하는, 특정 케이스들의 그룹으로부터 선택된 적어도 하나의 특정 케이스를 포함하는 적어도 한 쌍의 특정 케이스들을 포함한다. [0006] In one example, the plurality of options includes a plurality of pairs of selectable selectable cases for comparison. The particular cases of the plurality of pairs include at least one specific case selected from the group of specific cases, including an infinity, a not-a-number (NAN), and a signed zero And at least one pair of specific cases.

[0007] 또한, 일 예에서, 복수의 비교 함수들(the plurality of compare functions)은 복수의 최대 함수들(maximum functions)과 복수의 최소 함수들(minimum functions) 중 적어도 하나를 포함한다. 상기 복수의 최대 함수들은 최대 비교(a maximum comparison)를 수행하기 위해 복수의 최대 기법들(maximum techniques)을 포함하고, 상기 복수의 최소 함수들은 최소 비교(a minimum comparison)를 수행하기 위해 복수의 최소 기법들(minimum techniques)을 포함한다.[0007] Also, in one example, the plurality of compare functions includes at least one of a plurality of maximum functions and a plurality of minimum functions. Wherein the plurality of maximum functions comprise a plurality of maximum techniques to perform a maximum comparison and the plurality of minimum functions are selected from a plurality of minimum values to perform a minimum comparison, Techniques. ≪ / RTI >

[0008] 예들로서, 제1 값과 제2 값(the first value and the second value)은 상기 명령에 의해서 제공되고, 상기 제1 값은 상기 명령의 한 오퍼랜드의 한 엘리멘트를 가지며 상기 제2 값은 상기 명령의 다른 오퍼랜드의 대응하는 엘리멘트를 갖는다.[0008] As examples, the first value and the second value are provided by the instruction, the first value has one element of one operand of the instruction, and the second value is And a corresponding element of another operand of the instruction.

[0009] 더 나아가, 일 예에서, 상기 한 엘리멘트의 크기는 상기 명령의 다른 제어에 기초하여 결정된다. 또한, 예들로서, 상기 제1 값과 상기 제2 값은 부동 소수점 값들(floating point values)이고, 상기 한 엘리멘트의 크기는 상기 부동 소수점 값들의 부동 소수점 포맷에 따라 결정된다(depend). 상기 다른 제어는 하나의 선택된 부동 소수점 포맷을 표시한다. [0009] Further, in one example, the size of the element is determined based on another control of the instruction. Also, by way of example, the first value and the second value are floating point values, and the size of the element is dependent on the floating-point format of the floating-point values. The other control indicates one selected floating-point format.

[0010] 일 예에서, 상기 제어는 상기 명령의 한 마스크 필드 내에 제공된다.[0010] In one example, the control is provided in a mask field of the instruction.

[0011] 본 발명의 하나 또는 그 이상의 실시 예들에 관련된 방법들 및 시스템들은 또한 본 명세서에 설명되고 청구범위에 기재된다. 또한, 본 발명의 하나 또는 그 이상의 실시 예들에 관련된 서비스들도 또한 본 명세서에 설명되고 청구범위에 기재 된다.[0011] Methods and systems related to one or more embodiments of the invention are also described herein and claimed. Also, services related to one or more embodiments of the present invention are also described herein and claimed.

[0012] 추가적인 특징들 및 장점들은 본 명세서에 기술 된 기술을 통해 실현된다. 다른 실시 예들도 본 명세서에 상세히 설명되고 청구범위의 일부로서 고려된다.[0012] Additional features and advantages are realized through the techniques described herein. Other embodiments are described in detail herein and are considered a part of the claims.

[0013] 본 발명의 하나 또는 그 이상의 실시 예들이 본 명세서의 말미의 청구항들에서 예들로서 특별하게 설명되고 명확하게 청구된다. 본 발명의 하나 또는 그 이상의 실시 예들의 전술한 목적, 특징들 및 장점들은 첨부 된 도면들과 함께 설명하는 다음의 상세한 설명으로부터 명백하다.
도 1a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 일 예를 도시한다;
도 1b는, 본 발명의 한 실시 예에 따라, 도 1a의 프로세서의 추가적인 세부 사항들을 도시한다;
도 2a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다;
도 2b는도2a의 메모리의 추가적인 상세 사항들을 도시한다;
도 3a는, 본 발명의 한 실시 예에 따라, 벡터 부동 소수점 최대 명령(a Vector Floating Point Maximum instruction)의 일 예를 도시한다;
도 3b는, 본 발명의 한 실시 예에 따라, 도 3a의 벡터 부동 소수점 최대 명령의 마스크 필드(a mask field)의 일 실시 예를 도시한다;
도 3c는, 본 발명의 한 실시 예에 따라, 벡터 부동 소수점 최소 명령(a Vector Floating Point Minimum instruction)의 일 예를 도시한다;
도 3d는, 본 발명의 한 실시 예에 따라, 벡터 부동 소수점 최대/최소 명령의 일 예를 도시한다;
도 4a-4t는, 본 발명의 실시 예들에 따라, 특정 비교 함수들의 비교 옵션들의 테이블들을 도시한다;
도 5는, 본 발명의 일 실시 예에 따라, 벡터 부동 소수점 최대 및/또는 최소 명령을 실행하는 것과 연관된 처리의 블록도의 일 예를 도시한다.
도 6a-6b는, 본 발명의 일 실시 예에 따라, 벡터 부동 소수점 최대/최소 명령의 실행을 포함하는, 컴퓨팅 환경에서의 처리를 용이하게 하는 것의 일 예를 도시한다;
도 7은 클라우드 컴퓨팅 환경의 일 실시 예를 도시한다; 그리고
도 8은 추상화 모델 계층(abstraction model layers)의 일 예를 도시한다.
[0013] One or more embodiments of the present invention are specifically described and specifically claimed as examples in the claims at the end of this specification. The foregoing objects, features and advantages of one or more embodiments of the present invention are apparent from the following detailed description, taken in conjunction with the accompanying drawings.
Figure 1A illustrates an example of a computing environment for embodying and using one or more embodiments of the present invention;
Figure 1b shows additional details of the processor of Figure Ia, according to one embodiment of the present invention;
Figure 2a illustrates another example of a computing environment for embodying and using one or more embodiments of the present invention;
Figure 2b shows further details of the memory of Figure 2a;
Figure 3A illustrates an example of a Vector Floating Point Maximum instruction, according to one embodiment of the present invention;
Figure 3b illustrates one embodiment of a mask field of the vector floating point maximum instruction of Figure 3a according to one embodiment of the present invention;
Figure 3c illustrates an example of a Vector Floating Point Minimum instruction, according to one embodiment of the present invention;
FIG. 3D illustrates an example of a vector floating point maximum / minimum instruction, in accordance with one embodiment of the present invention;
Figures 4A-4T illustrate tables of comparison options of certain comparison functions, in accordance with embodiments of the present invention;
5 illustrates an example of a block diagram of processing associated with executing a vector floating-point maximum and / or minimum instruction, in accordance with one embodiment of the present invention.
6A-6B illustrate an example of facilitating processing in a computing environment, including the execution of vector floating-point min / max instructions, in accordance with an embodiment of the invention;
Figure 7 illustrates one embodiment of a cloud computing environment; And
Figure 8 shows an example of abstraction model layers.

[0014] 본 발명의 하나 또는 그 이상의 실시 예들은 표준들 및/또는 표현들과는 다른 부동 소수점 최대 및 최소 연산들을 수행하기 위해 다수의 명령들을 감소시킴으로써 컴퓨팅 환경 내의 처리를 개선하는 것과 관련된다. 본 명세서에서 언급한 바와 같이, 다양한 프로그래밍 언어들 사이에서 부동 소수점 수들에 대한 다수의 다른 표준들 및 표현들이 존재한다. 하나의 언어 내에서 조차, 공동의 관행(the common convention)은 하나의 라이브러리 함수(a library function)을 사용하지 않고, 처리를 다르게 하는 어떤 다른 언어 신택스(some other language syntax)를 사용할 수 있다. 비교들의 다른 측면들의 일부(즉, 특별 또는 특정 케이스들)는 -0보다 큰(greater) +0을 고려할 것인지, 또는 이들을 동일(equal)하다고 볼 것인지, NaN들(수가 아닌 것들)(Not-a-Number)과의 비교들은 어떻게 처리할(handle) 것인지, SNaN(신호하는 NaN)(signaling NaN)에 관한 예외를 신호할 것인지, 무한대(infinity)를 어떻게 처리할 것인지, 만일 입력들 모두가 NaN들 인 경우 NaN페이로드(NaN payload)가 우선권을 갖는, 결과에서 SNaN을 QNaN(quiet NaN)으로 변환할 것인지에 관한 것이다.[0014] One or more embodiments of the invention relate to improving processing within a computing environment by reducing multiple instructions to perform floating point maximum and minimum operations different from the standards and / or expressions. As mentioned herein, there are a number of different standards and expressions for floating point numbers among various programming languages. Even within a single language, the common convention may use some other language syntax that does not use a library function, but rather different processing. Some of the other aspects of the comparisons (i.e., special or specific cases) may be considered to consider a greater +0 than -0, or they will be considered equal, NaNs (not numbers) -Number), how to handle an exception to the SNaN (signaling NaN) (signaling NaN), how to handle the infinity, if all of the inputs are NaNs (NaN payload) has priority, and whether to convert the SNaN to a QNaN (quiet NaN) in the result.

[0015] 다른 부동 소수점 최대 및 최소 명령들이 여러 해에 걸쳐서 개발되었다; 그러나 이들 명령들은 다른 표현들을 위한 특별 케이스들에 대한 모든 순열들(all of the permutations)을 포함(capture)하지 못한다.대신에, 최대 및 최소 연산들의 각각에 대해서는, 다른 순열들을 포함하는 다수의 명령들이 존재한다. 따라서, 본 발명의 한 실시 예에 따라, 단일의 명령(예를 들어, 하드웨어/ 소프트웨어 인터페이스에서 단일의 아키텍처 된 머신 명령)이 제공되고, 이 명령은 다양한 최소 함수들(various minimum functions)을 포함하며, 이들 각각은 많은 순열들을 커버(cover)하기 위해 다양한 옵션들(various options)을 처리한다. 최대 및 최소를 위한 다른 순열들을 커버하기 위해 이들 두 명령들을 사용함에 의해서, 상기 순열들을 처리하는 명령들의 수는 감소되고, 이에 의해서 처리와 성능이 개선된다.[0015] Other floating-point maximum and minimum instructions have been developed over the years; However, these instructions do not capture all of the permutations for special cases for different expressions. Instead, for each of the maximum and minimum operations, a number of instructions including other permutations Lt; / RTI > Thus, in accordance with one embodiment of the present invention, a single instruction (e.g., a single architectured machine instruction in a hardware / software interface) is provided, which includes various minimum functions , Each of which processes various options to cover a large number of permutations. By using these two instructions to cover other permutations for maximum and minimum, the number of instructions for processing the permutations is reduced, thereby improving processing and performance.

[0016] 추가의 실시 예에서, 최대 및 최소 연산들의 다양한 함수들과 다른 옵션들을 지원하는 단일의 명령(예를 들어, 하드웨어/소프트웨어 수준에서 단일의 아키텍처된 머신 명령)이 제공된다. 최대 및 최소 연산들 모두를 위한 다른 순열들을 처리하기 위한 단일의 명령을 제공함에 의해서, 필요한 명령들의 수는 더 감소되어 하나의 명령이 되고, 이에 의해서 엔코드 되는 명령들의 수를 감소시켜, 시스템 성능을 개선한다.[0016] In a further embodiment, a single instruction (eg, a single architectured machine instruction at the hardware / software level) is provided that supports various functions of the maximum and minimum operations and other options. By providing a single instruction for handling different permutations for both the maximum and minimum operations, the number of required instructions is further reduced to one instruction, thereby reducing the number of instructions to be encoded, .

[0017] 본 발명의 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 일 실시 예가 도 1a를을 참조하여 기술된다. 한 예에서, 상기 컴퓨팅 환경은, 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는, z/아키텍처에 기초한다. z/아키텍처의 한 실시 예는, 2015년 3월 발표된 IBM 공보 No. SA22-7832-10의 " z/아키텍처 작동 원리"에 기술되어 있다. Z/ARCHITECTURE 는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.[0017] One embodiment of a computing environment for implementing and using one or more embodiments of the invention is described with reference to FIG. In one example, the computing environment is based on z / architecture, which is supplied by International Business Machines Corporation, Armonk, NY, USA. One embodiment of the z / architecture is disclosed in IBM publication no. It is described in "z / Architecture Architecture Principles" of SA22-7832-10. Z / ARCHITECTURE is a registered trademark of International Business Machines Corporation, Armonk, NY, USA.

[0018] 또 다른 예에서, 상기 컴퓨팅 환경은 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 파우어 아키텍처(Power Architecture)를 기반으로 한다. 파우어 아키텍처의 한 실시 예는 2015 년 4 월 9 일 발표된 인터내셔널 비즈니스 머신즈 코포레이션"Power ISA ™ Version 2.07B "에 설명되어 있다. POWER ARCHITECTURE는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.[0018] In another example, the computing environment is based on Power Architecture, which is supplied by International Business Machines Corporation, Ammonk, NY, USA. One embodiment of the Faure architecture is described in International Business Machines Corporation, " Power ISA (TM) Version 2.07B, " issued April 9, POWER ARCHITECTURE is a registered trademark of International Business Machines Corporation, Armonk, NY, USA.

[0019] 상기 컴퓨팅 환경은 또한 Intel x86 아키텍처를 포함하되, 이에 국한되지 않는 다른 아키텍처를 기반으로 할 수도 있다.  다른 예들도 또한 존재한다.[0019] The computing environment may also be based on other architectures including, but not limited to, the Intel x86 architecture. Other examples also exist.

[0020] 도 1a에 도시 된 바와 같이, 컴퓨팅 환경(100)은, 예를 들어, 노드(10)을 포함하고, 노드(10)은, 예를 들어, 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들과 동작 가능한, 컴퓨터 시스템/서버(12)를 갖는다. 컴퓨터 시스템/서버(12)와 함께 사용하기에 적합 할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예로는 퍼스널 컴퓨터(PC) 시스템들, 서버 컴퓨터 시스템들, 씬(thin) 클라이언트들, 씩(thick) 클라이언트들, 핸드헬드 또는 랩탑 장치들, 멀티프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그램 가능 가전 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인 프레임 컴퓨터 시스템들 및, 상기 시스템들 또는 장치들 중 어느 하나를 포함하는 분산 형 클라우드 컴퓨팅 환경 등을 포함하지만 이에 한정되는 것은 아니다.1A, a computing environment 100 includes, for example, a node 10, which may include, for example, a number of other general purpose or special purpose computing system environments / RTI > computer system / server 12, which is operable with a computer system / server or configurations. Examples of well known computing systems, environments, and / or configurations that may be suitable for use with computer system / server 12 include, but are not limited to, personal computer (PC) systems, server computer systems, thin clients , Thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems , Distributed cloud computing environments that include any of the above systems or devices, and the like.

[0021] 컴퓨터 시스템/서버(12)는, 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능 명령들의 일반적인 관점에서 설명 될 수 있다.  일반적으로, 프로그램 모듈들은 특정 작업들(particular tasks)을 수행하거나 특정 추상 데이터 유형들(particular abstract data types)을 구현하는 루틴들, 프로그램들, 객체들, 컴포넨트들, 논리들, 데이터 구조들 등을 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 통신 네트워크를 통해 링크 된 원격 처리 장치들에 의해 작업들이 수행되는 분산형 클라우드 컴퓨팅 환경들을 포함하는 많은 컴퓨팅 환경들에서 실시될 수 있지만, 이에 국한되지는 않는다. 분산형 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 장치들을 포함하는 로컬 및 원격 컴퓨터 시스템 저장 매체 모두에 위치 할 수 있다.[0021] The computer system / server 12 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types . ≪ / RTI > The computer system / server 12 may be embodied in many computing environments including, but not limited to, distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.

[0022] 도 1a에 도시 된 바와 같이, 컴퓨터 시스템/서버(12)는 범용 컴퓨팅 장치의 형태로 도시되어 있다. 컴퓨터 시스템/서버(12)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 프로세싱 유닛들(16), 시스템 메모리(28), 및 시스템 메모리(28)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(16)에 연결시키는 버스(18)를 포함 할 수 있지만, 이에 한정되는 것은 아니다.[0022] As shown in FIG. 1A, a computer system / server 12 is shown in the form of a general purpose computing device. The components of computer system / server 12 may include one or more processors or processing units 16, a system memory 28, and various system components including system memory 28, Bus 18, but is not limited thereto.

[0023] 버스(18)는, 메모리 버스 또는 메모리 제어기, 주변장치 버스(a peripheral bus), 가속 그래픽 포트(an accelerated graphics port), 및 다양한 종류의 버스 아키텍처들 중 어느 하나를 사용하는 프로세서 또는 로컬 버스를 포함하는, 여러 유형의 버스 구조들 중 하나 또는 그 이상을 나타낸다. 예를 들어, 이러한 아키텍처들에는 ISA(Industry Standard Architecture)버스, MCA(Micro Channel Architecture)버스, EISA(Enhanced ISA)버스, VESA(Video Electronics Standards Association)로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스가 포함되지만, 이에 한정되는 것은 아니다.[0023] The bus 18 may be a processor using either a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and various types of bus architectures, or a local Bus, < / RTI > and the like. For example, these architectures include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect But is not limited thereto.

[0024] 컴퓨터 시스템/서버(12)는 일반적으로 다양한 컴퓨터 시스템 판독 가능 매체를 포함한다. 이러한 매체는 컴퓨터 시스템/서버(12)에 의해 액세스 가능한 모든 이용 가능한 매체 일 수 있으며, 휘발성(volatile) 및 비 휘발성 매체, 착탈식(removable) 및 비착탈식 매체를 모두 포함한다.[0024] Computer system / server 12 generally includes a variety of computer system readable media. Such media can be any available media that is accessible by computer system / server 12 and includes both volatile and non-volatile media, removable and non-removable media.

[0025] 시스템 메모리(28)는 RAM(30) 및/또는 캐시 메모리(32)와 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 다른 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예시로서, 저장 시스템(34)은 비착탈식, 비휘발성 자기 매체(도시되지 않았고 일반적으로 "하드 드라이브"로 지칭 됨)로부터의 판독 및 이들로의 기록을 위해 제공 될 수 있다. 도시되지는 않았지만, 착탈식, 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터의 판독 및 그 자기 디스크에의 기록을 위한 자기 디스크 드라이브, 및, CD-ROM, DVD-ROM 또는 다른 광 매체와 같은, 착탈식, 비휘발성 광 디스크로부터의 판독 또는 그 광 디스크에의 기록을 위한 광 디스크 드라이브가 제공 될 수 있다. 그러한 경우들에서, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(18)에 접속 될 수 있다. 후술하는 바와 같이, 메모리(28)는 본 발명의 실시 예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트 (예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함 할 수 있다.[0025] System memory 28 may include a computer system readable medium in the form of volatile memory, such as RAM 30 and / or cache memory 32. The computer system / server 12 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, the storage system 34 may be provided for reading from and writing to non-removable, nonvolatile magnetic media (not shown and generally referred to as a " hard drive "). Although not shown, a magnetic disk drive for reading from and writing to a removable, nonvolatile magnetic disk (e.g., a "floppy disk") and a magnetic disk drive for reading from and writing to a CD- An optical disk drive for reading from or writing to a removable, nonvolatile optical disk, such as the optical disk drive, may be provided. In such cases, each may be connected to the bus 18 by one or more data media interfaces. As described below, the memory 28 may include at least one program product having a set of program modules (e.g., at least one) configured to perform the functions of the embodiments of the present invention.

[0026] 프로그램 모듈들(42)의 세트 (적어도 하나)를 갖는, 프로그램/유틸리티 (40)는 메모리(28)에 저장될 수 있으며, 이 들의 예에는 운영 체제뿐만 아니라, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터가 포함되나, 이에 한정되지는 않는다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합의 각각은 네트워킹 환경의 구현을 포함 할 수 있다. 프로그램 모듈들(42)은 일반적으로 본 명세서에서 설명 된 바와 같은 본 발명의 실시 예들의 기능들 및/또는 방법들을 수행한다.[0026] Program / utility 40, having a set of (at least one) program modules 42, may be stored in memory 28, examples of which include operating systems as well as one or more application programs But are not limited to, program modules, program modules, and program data. An operating system, one or more application programs, other program modules, and program data, or a combination thereof, each may comprise an implementation of a networking environment. Program modules 42 generally perform the functions and / or methods of embodiments of the present invention as described herein.

[0027] 컴퓨터 시스템/서버(12)는 또한, 키보드, 포인팅 장치, 디스플레이(24) 등과 같은, 하나 또는 그 이상의 외부 장치들(14)과 통신 할 수 있다. 이들 외부 장치들(14)에는 사용자가 컴퓨터 시스템/서버(12)와 상호 작용할 수 있게 하는 하나 또는 그 이상의 장치들; 및/또는 컴퓨터 시스템/서버(12)가 하나 또는 그 이상의 다른 컴퓨팅 장치와 통신 할 수 있게 하는 모든 장치들(예를 들어, 네트워크 카드, 모뎀 등)이 포함될 수 있다. 통신은 입력/출력(I/O) 인터페이스들 (22)을 통해서 일어난다. 또한, 컴퓨터 시스템/서버 (12)는 네트워크 어댑터 (20)를 통해서 근거리 통신망 (LAN), 일반 광역 통신망 (WAN) 및/또는 공중 네트워크(예를 들어, 인터넷)과 같은 하나 또는 그 이상의 네트워크들과 통신 할 수 있다. 도시 된 바와 같이, 네트워크 어댑터(20)는 버스(18)를 통해 컴퓨터 시스템/서버(12)의 다른 구성 요소들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넨트들이 컴퓨터 시스템/서버(12)와 함께 사용될 수 있음을 이해하여야 한다. 이들의 예에는 마이크로 코드, 장치 드라이버들, 리던던트 프로세싱 유닛들, 외장형 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이브 저장 장치들이 포함되지만 이에 한정되지는 않는다. [0027] The computer system / server 12 may also communicate with one or more external devices 14, such as a keyboard, pointing device, display 24, and the like. These external devices 14 include one or more devices that allow a user to interact with the computer system / server 12; And / or any device (e.g., a network card, modem, etc.) that allows the computer system / server 12 to communicate with one or more other computing devices. Communication takes place via input / output (I / O) interfaces 22. The computer system / server 12 may also communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN) and / or a public network (e.g., the Internet) Communication can be performed. As shown, the network adapter 20 communicates with other components of the computer system / server 12 via a bus 18. Although not shown, it should be understood that other hardware and / or software components may be used with the computer system / server 12. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives and data archive storage devices.

[0028] 예를 들어, 프로세서(16)는 명령들을 실행하는데 사용되는 복수의 기능 컴포넌트들을 포함한다. 도 1b에 도시 된 바와 같이, 이들 기능 컴포넌트들은, 예를 들어, 실행될 명령들을 페치하기 위한 명령 페치 컴포넌트(120); 페치된 명령들을 디코드 하고 디코된 명령들의 오퍼랜드들을 획득하기 위한 명령 디코드 유닛(122); 디코된 명령들을 실행하기 위한 명령 실행 컴포넌트들(124); 필요한 경우, 명령 실행을 위해 메모리에 액세스하는 메모리 액세스 컴포넌트(126); 및 실행 된 명령들의 결과를 제공하기 위한 라이트 백 컴포넌트(130)를 포함한다. 이들 컴포넌트들 중 하나 또는 그 이상은, 본 발명의 일 실시 예에 따라, 이하에서 더 설명되는 바와 같이, 선택 가능한 옵션들을 갖는 부동 소수점 최대/최소 연산들(floating point maximum/minimum operations with selectable options) (136)을 수행하기 위해 사용될 수 있다.[0028] For example, the processor 16 includes a plurality of functional components used to execute instructions. As shown in FIG. 1B, these functional components include, for example, an instruction fetch component 120 for fetching instructions to be executed; An instruction decode unit (122) for decoding the fetched instructions and obtaining operands of the decoded instructions; Instruction execution components (124) for executing decoded instructions; A memory access component 126 for accessing the memory for instruction execution, if necessary; And a writeback component 130 for providing the results of the executed instructions. One or more of these components may be implemented as floating point maximum / minimum operations with selectable options with selectable options, as described further below, in accordance with an embodiment of the present invention. Lt; RTI ID = 0.0 > 136 < / RTI >

[0029] 프로세서(16)는 또한, 일 실시 예에서, 하나 또는 그 이상의 기능 컴포넌트들에 의해 사용될 하나 또는 그 이상의 레지스터들(140)을 포함한다.[0029] The processor 16 also includes, in one embodiment, one or more registers 140 to be used by one or more functional components.

[0030] 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 다른 실시 예가 도 2a를 참조하여 설명된다. 이 예에서, 컴퓨팅 환경(200)은, 예컨대, 네이티브 중앙 처리 장치(CPU)(202), 메모리(204), 및, 예를 들어, 하나 또는 그 이상의 버스들(208) 및/또는 다른 접속들을 통해, 서로 연결된 하나 또는 그 이상의 입출력 장치들 및/또는 인터페이스들(206)을 포함한다. 예로서, 컴퓨팅 환경(200)은 미국 뉴욕 주 아몽크에 있는 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는 PowerPC 프로세서 또는 pSeries 서버를 포함 할 수 있으며; 미국 캘리포니아 주 팔로 알토에 있는 Hewlett Packard Co.가 공급하는 Intel Itanium II 프로세서가 장착 된 HP Superdome; 및/또는 인터내셔널 비즈니스 머신즈 코포레이션, Hewlett Packard, Intel, Oracle 또는 기타 회사들이 공급하는 아키텍처들에 기초하는 기타 머신들을 포함한다. [0030] Another embodiment of a computing environment for implementing and using one or more embodiments is described with reference to FIG. 2A. In this example, computing environment 200 may include, for example, a central processing unit (CPU) 202, a memory 204, and, for example, one or more busses 208 and / One or more input / output devices and / or interfaces 206 coupled to each other. By way of example, computing environment 200 may include a PowerPC processor or pSeries server supplied by International Business Machines Corporation, Armonk, New York, USA; HP Superdome with Intel Itanium II processor from Hewlett Packard Co., Palo Alto, CA; And / or other machines based on architectures supplied by International Business Machines Corporation, Hewlett Packard, Intel, Oracle, or other companies.

[0031] 네이티브 중앙 처리 장치(202)는 하나 또는 그 이상의 범용 레지스터들 및/또는 환경 내에서 처리 중에 사용되는 하나 또는 그 이상의 특수 목적 레지스터들과 같은 하나 또는 그 이상의 네이티브 레지스터들(210)을 포함한다. 이들 레지스터들은 특정 시점에서 환경 상태를 나타내는 정보를 포함한다.[0031] Native central processing unit 202 includes one or more general registers and / or one or more native registers 210, such as one or more special purpose registers used during processing within the environment do. These registers contain information indicating the environmental condition at a particular point in time.

[0032] 더 나아가서, 네이티브 중앙 처리 장치(202)는 메모리(204)에 저장된 명령들 및 코드를 실행한다. 하나의 특정 예에서, 상기 중앙 처리 장치는 메모리 (204)에 저장된 에뮬레이터 코드(212)를 실행한다. 이 코드는 한 아키텍처에서 구성된 컴퓨팅 환경이 다른 아키텍처를 에뮬레이트 할 수 있게 해 준다. 예를 들어, 에뮬레이터 코드(212)는 z/아키텍처가 아닌 아키텍처들에 기초한 머신들, 예를 들어 PowerPC 프로세서들, pSeries 서버들, HP Superdome 서버들, 또는 다른 서버들이 z/아키텍처를 에뮬레이트 하여 z/아키텍처에 기초하여 개발된 소프트웨어 및 명령들을 실행할 수 있게 해 준다.[0032] Further, the native central processing unit 202 executes the instructions and code stored in the memory 204. In one particular example, the central processing unit executes emulator code 212 stored in memory 204. This code allows a computing environment configured in one architecture to emulate a different architecture. For example, the emulator code 212 may be used by machines based on architectures other than z / architecture, such as PowerPC processors, pSeries servers, HP Superdome servers, or other servers emulating z / And to execute software and instructions developed on an architecture basis.

[0033] 에뮬레이터 코드(212)에 관한 더 상세한 설명은 도 2b 를 참조하여 기술된다. 메모리(204)에 저장된 게스트 명령들(250)은 네이티브 CPU(202)의 아키텍쳐가 아닌 아키텍쳐에서 실행되도록 개발 된 소프트웨어 명령들(예를 들어, 머신 명령들에 관련되는)을 포함한다. 예를 들어, 게스트 명령들(250)은 z/아키텍처 프로세서 상에서 실행하도록 설계되었지만, 예를 들어 Intel Itanium II 프로세서인, 네이티브 CPU(202)상에서 에뮬레이트 될 수 있다. 한 예에서, 에뮬레이터 코드(212)는 메모리(204)로부터 하나 또는 그 이상의 게스트 명령들 (250)을 획득하고 획득 된 명령들에 대한 로컬 버퍼링을 선택적으로 제공하기 위한 명령 페치 루틴(252)을 포함한다. 또한, 획득 된 게스트 명령의 유형을 결정하고 상기 게스트 명령을 하나 또는 그 이상의 대응하는 네이티브 명령들 (256)로 변환하기 위한 명령 변환 루틴(254)을 포함한다. 이 변환은, 예를 들어, 상기 게스트 명령에 의해 수행 될 기능을 식별하는 것과 그 기능을 수행하기 위한 네이티브 명령(들)을 선택하는 것을 포함한다.[0033] A more detailed description of the emulator code 212 is described with reference to Figure 2b. The guest instructions 250 stored in the memory 204 include software instructions (e.g., related to machine instructions) that are developed to execute on an architecture other than the architecture of the native CPU 202. For example, guest instructions 250 may be emulated on native CPU 202, which is designed to run on z / architecture processor, but is, for example, an Intel Itanium II processor. In one example, the emulator code 212 includes an instruction fetch routine 252 for obtaining one or more guest instructions 250 from the memory 204 and optionally providing local buffering for the obtained instructions do. And a command conversion routine 254 for determining the type of the acquired guest command and converting the guest command to one or more corresponding native commands 256. [ This conversion includes, for example, identifying the function to be performed by the guest command and selecting the native command (s) to perform the function.

[0034] 또한, 에뮬레이터(212)는 네이티브 명령들이 실행되도록 하는 에뮬레이션 제어 루틴(260)을 포함한다. 에뮬레이션 제어 루틴(260)은 네이티브 CPU(202)로 하여금 하나 또는 그 이상의 이전에 획득 된 게스트 명령들을 에뮬레이트하는 네이티브 명령들의 루틴을 실행하게 하고, 그러한 실행의 종료 시에, 다음 게스트 명령 또는 일 군의 게스트 명령들을 획득하는 것을 에뮬레이트 하기 위해 상기 명령 페치 루틴에 제어를 반환(return)하게 할 수 있다. 네이티브 명령들(256)의 실행은 메모리(204)로부터 레지스터로 데이터를 로드하는 단계; 레지스터로부터 데이터를 메모리에 다시 저장하는 단계; 또는 변환 루틴에 의해 결정되는 어떤 유형의 산술 또는 논리 연산을 수행하는 단계를 포함 할 수 있다.[0034] Also, the emulator 212 includes an emulation control routine 260 that allows native instructions to be executed. The emulation control routine 260 causes the native CPU 202 to execute the routine of native instructions emulating one or more previously obtained guest instructions and at the end of such execution the next guest instruction or group of And return control to the instruction fetch routine to emulate acquiring guest instructions. Execution of native instructions 256 may include loading data from memory 204 into a register; Storing the data from the register back into the memory; Or performing any type of arithmetic or logical operation as determined by the conversion routine.

[0035] 각 루틴은, 예를 들어, 소프트웨어로 구현되고, 상기 소프트웨어는 메모리에 저장되며, 네이티브 중앙 처리 장치(202)에 의해 실행된다. 다른 예들에서, 하나 또는 그 이상의 루틴들 또는 연산들은 펌웨어, 하드웨어, 소프트웨어 또는 이들의 조합으로 구현된다. 에뮬레이트된 프로세서의 레지스터들은 상기 네이티브 CPU의 레지스터들(210)을 사용하여 또는 메모리(204) 내의 위치들을 사용하여 에뮬레이트 될 수 있다. 실시 예들에서, 게스트 명령들(250), 네이티브 명령들 (256) 및 에뮬레이터 코드(212)는 동일한 메모리 내에 상주 하거나 또는 다른 메모리들 사이에서 분산 될 수 있다.[0035] Each routine is implemented, for example, in software, and the software is stored in memory and executed by the native central processing unit 202. In other instances, one or more routines or operations are implemented in firmware, hardware, software, or a combination thereof. The registers of the emulated processor may be emulated using the registers 210 of the native CPU or using locations within the memory 204. [ In embodiments, guest instructions 250, native instructions 256 and emulator code 212 may reside within the same memory or be distributed among different memories.

[0036] 본 명세서에서 사용 된 바와 같이, 펌웨어는, 예를 들어, 프로세서의 마이크로 코드, 밀리 코드 및 / 또는 매크로 코드를 포함한다. 펌웨어는, 예를 들어, 하드웨어 레벨 명령들(the hardware-level instructions) 및 / 또는 상위 레벨 머신 코드의 구현에 사용 되는 데이터 구조(data structures used in implementation of higher level machine code)를 포함한다. 일 실시 예에서, 펌웨어는, 예를 들어, 소유권 있는 코드(proprietary code)를 포함하며, 이 소유권 있는 코드는 통상적으로 마이크로 코드로 전달되며, 하부의 하드웨어(the underlying hardware)에 특정된 신뢰 소프트웨어 또는 마이크로 코드를 포함하고 시스템 하드웨어에 대한 운영 체제 액세스를 제어한다. [0036] As used herein, firmware includes, for example, microcode, millicode, and / or macrocode of a processor. The firmware includes, for example, the hardware-level instructions and / or the data structures used in the implementation of higher-level machine code. In one embodiment, the firmware includes, for example, a proprietary code, which is typically delivered in microcode, and may be trusted software specific to the underlying hardware It contains microcode and controls operating system access to system hardware.

[0037] 획득되고, 변환되고 실행되는 게스트 명령 (250)은, 예를 들어, 벡터 부동 소수점 최대 명령(a Vector Floating Point Maximum instruction), 벡터 부동 소수점 최소 명령(a Vector Floating Point Minimum instruction), 및/또는 벡터 부동 소수점 최대/최소 명령(a Vector Floating Point Maximum/Minimum instruction)이며, 이하에서 이를 설명한다. 상기 명령은, 하나의 아키텍처(예: z/Architecture)를 가지고 있고, 메모리에서 페치되어, 다른 아키텍처 (예: PowerPC, pSeries, Intel 등)의 네이티브 명령들(256)의 시퀀스로 변환되어 표현된다. 그런 다음 이들 네이티브 명령들은 실행된다.The guest instruction 250 to be acquired, transformed and executed may be, for example, a Vector Floating Point Maximum instruction, a Vector Floating Point Minimum instruction, / Or a Vector Floating Point Maximum / Minimum instruction, which is described below. The instruction has one architecture (e.g., z / Architecture) and is fetched from memory and translated into a sequence of native instructions 256 of another architecture (e.g., PowerPC, pSeries, Intel, etc.). These native instructions are then executed.

[0038] 벡터 부동 소수점 최대 명령, 벡터 부동 소수점 최소 명령, 및 벡터 부동 소수점 최대/최소 명령의 필드들 및 하나의 프로세서에 의한 실행(네이티브 또는 에뮬레이된 시스템 어디에서던지)을 포함하는, 상기 명령들의 한 예에 관한 상세한 설명이 이하에서 기술된다, 본 발명의 한 실시 예에 따라, 상기 벡터 부동 소수점 최대 명령은 다수의 값들 중 더 큰 값을 결정하기 위해 값들의 비교들을 수행하고 복수의 특별 비교 케이스들(a plurality of special comparison cases)(또한 이하에서 특정 케이스들이라 함)을 처리한다. 최대 비교들에서 다수의 특별 케이스들을 처리하는 하나의 단일의 명령(예를 들어, 단일의 아키텍처 된 머신 명령)을 사용함으로써, 최대 비교들을 위한 특별 케이스들을 처리하는 데 필요한 다수의 명령들을 하나로 감소시키고; 따라서 컴퓨터 처리를 개선한다. [0038] The instructions, including the vector floating-point maximum instruction, the vector floating-point minimum instruction, and the fields of the vector floating-point maximum / minimum instruction and execution by one processor (native or emulated system wherever) A vector floating point maximum instruction may be used to perform comparisons of values to determine a larger value of the plurality of values and to perform a plurality of special comparison < RTI ID = 0.0 > Processes a plurality of special comparison cases (also referred to below as specific cases). By using a single instruction (e.g., a single architectured machine instruction) that handles multiple special cases in maximum comparisons, the number of instructions needed to handle special cases for maximum comparisons is reduced to one ; Thus improving computer processing.

[0039] 유사하게, 상기 벡터 부동 소수점 최소 명령은 다수의 값들 중 더 적은 값을 결정하기 위해 값들의 비교들을 수행하고 복수의 특별 비교 케이스들(a plurality of special comparison cases)을 처리한다. 최소 비교들에서 다수의 특별 케이스들을 처리하는 하나의 단일의 명령(예를 들어, 단일의 아키텍처 된 머신 명령)을 사용함으로써, 최소 비교들을 위한 특별 케이스들을 처리하는 데 필요한 다수의 명령들을 하나로 감소시키고; 따라서 컴퓨터 처리를 개선한다. [0039] Similarly, the vector floating-point minimum instruction performs comparisons of values to determine fewer of the plurality of values and processes a plurality of special comparison cases. By using a single instruction (e. G., A single < / RTI > architectured machine instruction) that handles multiple special cases in minimal comparisons, the number of instructions needed to handle special cases for minimum comparisons is reduced to one ; Thus improving computer processing.

[0040] 또한, 상기 벡터 부동 소수점 최대/최소 명령은 다수의 값들 중 더 큰/더 적은 값을, 각각, 결정하기 위해 값들의 비교들을 수행하고, 각각 복수의 특별 비교 케이스들(a plurality of special comparison cases)을 처리한다. 하나의 단일의 명령(예를 들어, 단일의 아키텍처 된 머신 명령)을 사용함으로써, 다른 순열들을 처리하는 데 필요한 다수의 명령들을 하나로 감소시키고; 따라서 컴퓨터 처리를 개선한다. 본 발명의 실시 예들은 명백히 컴퓨터 기술과 관련되고, 컴퓨터 처리의 개선과 관련된다.Also, the vector floating-point maximum / minimum instruction may perform comparisons of values to determine a larger / smaller value of the plurality of values, respectively, and each of a plurality of special comparison cases comparison cases. By using a single instruction (e.g., a single architectured machine instruction), reducing the number of instructions required to process other permutations to one; Thus improving computer processing. Embodiments of the present invention are expressly associated with computer technology and relate to improvements in computer processing.

[0041] 일 실시 예에서, 벡터 부동 소수점 최대 명령, 벡터 부동 소수점 최소 명령, 및 벡터 부동 소수점 최대/최소 명령 중 하나 또는 그 이상은, 예를 들어, 1 에서 16 범위의 엘리멘트들을 갖는 고정된 크기의 벡터들(fixed sized vectors ranging from one to sixteen elements)을 제공하는, 벡터 퍼실리티의 일부(part of a vector facility)이다. 각 벡터는 상기 퍼실리티에서 정의 된 벡터 명령들에 의해 연산되는 데이터를 포함한다. 일 실시 예에서, 만일 벡터가 다수의 엘리먼트들로 구성되면, 각 엘리먼트는 다른 엘리먼트들와 병렬로 처리된다. 명령 완료는 모든 엘리멘트들의 처리가 완료 될 때까지 발생되지 않는다. 다른 실시 예들에서, 상기 엘리멘트들은 부분적으로 병렬로 및/또는 순차적으로 처리된다.[0041] In one embodiment, one or more of the vector floating-point maximum instruction, the vector floating-point minimum instruction, and the vector floating-point maximum / minimum instruction may be, for example, a fixed size Which is a part of a vector facility that provides fixed sized vectors ranging from one to sixteen elements. Each vector includes data computed by vector instructions defined in the facility. In one embodiment, if the vector consists of multiple elements, each element is processed in parallel with the other elements. Command completion does not occur until processing of all elements is completed. In other embodiments, the elements are partially processed in parallel and / or sequentially.

[0042] 벡터 명령들은 z/Architecture, Power Architecture, x86, IA-32, IA-64 등을 포함하지만, 이들에 국한하지 않는, 다양한 아키텍처들의 일부로 구현 될 수 있다. 여기에 설명된 실시 예는 z/Architecture 용이지만, 본 명세서에 설명 된 벡터 명령 및 하나 또는 그 이상의 다른 실시 예들은 많은 다른 아키텍처들에 기초 할 수 있다. z/Architecture는 한 가지 예일 뿐이다.Vector instructions may be implemented as part of various architectures, including, but not limited to z / Architecture, Power Architecture, x86, IA-32, IA-64 and the like. While the embodiments described herein are for z / Architecture, the vector instructions and one or more other embodiments described herein may be based on many different architectures. z / Architecture is just one example.

[0043] 상기 벡터 퍼실리티가 z/Architecture의 일부로서 구현되는 일 실시 예에서, 벡터 레지스터들 및 명령들을 사용하기 위해, 명시된 제어 레지스터 (예를 들어, 제어 레지스터 0) 내의 벡터 인에이블먼트 제어(a vector enablement control) 및 레지스터 제어는, 예를 들어, 1로 세트 된다. 만일 상기 벡터 퍼실리티가 설치되어 있고 벡터 명령이 상기 인에이블먼트 제어들이 세트됨이 없이 실행되면, 데이터 예외(a data exception)가 인지된다(recognized). 만일 상기 벡터 퍼실리티가 설치되어 있지 않고 벡터 명령이 실행되면, 연산 예외(an operation exception)가 인지된다.[0043] In one embodiment, in which the vector facility is implemented as part of z / Architecture, vector enablement control (a) in an explicit control register (e.g., control register 0) vector enablement control and register control are set, for example, to one. If the vector facility is installed and the vector instruction is executed without the enablement controls being set, a data exception is recognized. If the vector facility is not installed and the vector instruction is executed, an operation exception is recognized.

[0044] 일 실시 예에서, 벡터 레지스터들은 32 개이고 다른 유형의 레지스터들이 상기 벡터 레지스터들의 사분면(a quadrant)에 매핑 될 수 있다. 예를 들어, 하나의 레지스터 파일은 32 개의 벡터 레지스터들을 포함 할 수 있고 각 레지스터는 128 비트들의 길이를 가질 수 있다. 길이가 64 비트들인, 16 개의 부동 소수점 레지스터들은 상기 벡터 레지스터들을 오버레이(overlay) 할 수 있다. 따라서, 예로서, 부동 소수점 레지스터 2가 수정되면, 벡터 레지스터 2도 또한 수정된다. 다른 유형의 레지스터들에 대한 다른 매핑들도 또한 가능하다.[0044] In one embodiment, the vector registers are 32 and other types of registers may be mapped to a quadrant of the vector registers. For example, a register file may contain 32 vector registers and each register may have a length of 128 bits. Sixteen floating point registers, of length 64 bits, may overlay the vector registers. Thus, as an example, if the floating-point register 2 is modified, the vector register 2 is also modified. Other mappings for other types of registers are also possible.

[0045] 벡터 데이터는, 예를 들어, 다른 데이터 포맷들과 동일한 왼쪽에서 오른쪽 순서로 (in the same left-to-right sequence)저장소(storage)에 저장된다. 0-7의 번호가 붙은 데이터 포맷의 비트들은 저장소 내의 최좌측 (가장 낮은 번호가 매겨진) 바이트 위치의 바이트를 구성하고, 비트들 8-15는 다음 순차 위치의 바이트를 형성한다. 또 다른 예에서, 벡터 데이터는, 오른쪽에서 왼쪽과 같은, 다른 순서로 저장소에 저장될 수 있다. [0045] The vector data is stored in, for example, storage in the same left-to-right sequence as the other data formats. The bits in the data format numbered 0-7 constitute the byte at the leftmost (lowest numbered) byte position in the store, and bits 8-15 form the byte at the next sequential position. In another example, the vector data may be stored in the repository in a different order, such as from right to left.

[0046] 벡터 부동 소수점 최대 명령(a Vector Floating Point Maximum instruction)의 일 예가 도 3a를 참조하여 설명된다. 도시 된 바와 같이, 상기 명령은 복수의 필드들을 갖고, 하나의 필드는 그와 연관된 첨자 번호를 가질 수 있다. 상기 명령의 필드와 연관된 첨자 번호는 상기 필드가 지정하는 오퍼랜드를 나타낸다. 예를 들어, 벡터 레지스터 V1과 연관된 첨자 숫자는 1은 V1내의 레지스터가 제1 오퍼랜드를 포함하고 있음을 나타낸다. 하나의 레지스터 오퍼랜드는 하나의 레지스터 길이를 가지며, 예를 들어 128 비트이다.[0046] An example of a Vector Floating Point Maximum instruction is described with reference to FIG. As shown, the instruction may have a plurality of fields, and one field may have a subscript number associated with it. The subscript number associated with the field of the instruction indicates the operand that the field specifies. For example, the subscript number associated with the vector register V 1 indicates that the register in V 1 contains the first operand. A register operand has a register length of, for example, 128 bits.

[0047] 도 3a를 참조하면, 일 실시 예에서, 벡터 부동 소수점 최대 명령(a Vector Floating Point Maximum instruction)(300)은 벡터 부동 소수점 최대 연산을 표시하는 오피 코드 필드(302a, 302b); 제1벡터 레지스터 (V1)을 지정하기 위해 사용되는 제1벡터 레지스터 필드(304); 제2벡터 레지스터 (V2)을 지정하기 위해 사용되는 제2벡터 레지스터 필드(306); 제3벡터 레지스터 (V3)을 지정하기 위해 사용되는 제3벡터 레지스터 필드(308); 제1 마스크 필드(M6)(309); 제2마스크 필드(M5)(310); 제3 마스크 필드(M4)(312); 및 레지스터 확장 비트(register extension bit; RXB) 필드(314)를 포함하며, 이들 각각은 후술 될 것이다. 일 실시 예에서, 상기 필드들은 서로 분리되어 있고 서로 독립적이다. 그러나, 다른 실시 예들에서는 하나 또는 그 이상의 필드들이 결합 될 수 있다. 이들 필드들에 대한 추가적인 정보는 아래에서 설명된다.[0047] Referring to FIG. 3A, in one embodiment, a Vector Floating Point Maximum instruction 300 includes opcode fields 302a and 302b indicating a vector floating point maximum operation; A first vector register field 304 used to specify a first vector register V 1 ; A second vector register field 306 used to specify a second vector register V 2 ; A third vector register field 308 used to specify a third vector register V 3 ; A first mask field (M 6 ) 309; A second mask field (M 5) (310); The third mask field (M 4) (312); And a register extension bit (RXB) field 314, each of which will be described later. In one embodiment, the fields are separate from each other and independent of each other. However, in other embodiments, one or more fields may be combined. Additional information on these fields is described below.

[0048] 벡터 레지스터 필드(304)는 제 1 오퍼랜드를 저장할 벡터 레지스터를 표시하기 위해 사용되고, 상기 제 1 오퍼랜드는 상기 엘리멘트들의 두 값들 중 더 큰 값을 획득하기 위해 두 오퍼랜드들의 엘리멘트들의 값들을 비교한 것의 결과이다. 상기 오퍼랜드 엘리멘트들은, 예를 들어, 명시된 포맷의 (IEEE) 이진 부동 소수점(BFP) 수들로 취급된다. 상기 두 오퍼랜드들은 벡터 레지스터 필드(306)를 사용하여 명시된 벡터 레지스터 내에 포함된 제2 오퍼랜드와 벡터 레지스터 필드(308)를 사용하여 명시된 벡터 레지스터 내에 포함된 제3 오퍼랜드이다. 일 예 에서, 벡터 레지스터 필드들(304), (306), (308) 각각은 상기 벡터 레지스터를 지정하기 위해 RXB 필드(314)와 함께 사용된다.[0048] The vector register field 304 is used to indicate a vector register to store the first operand, which compares the values of the elements of both operands to obtain the larger of the two values of the elements It is the result of something. The operand elements are treated, for example, as (IEEE) binary floating point (BFP) numbers in the specified format. The two operands are the third operand contained in the specified vector register using the vector register field 306 and the third operand contained in the vector register specified using the vector register field 308. [ In one example, each of the vector register fields 304, 306, 308 is used with the RXB field 314 to specify the vector register.

[0049] 예를 들어, RXB 필드(314)는 벡터 레지스터 지정된 오퍼랜드를 위한 최상위 비트를 포함한다. 상기 명령에 의해 명시되지 않은 레지스터 지정들을 위한 비트들은 유보되고(reserved) 0으로 세트 된다. 상기 최상위 비트는, 예를 들어, 5 비트 벡터 레지스터 지정을 생성하기 위해 상기 벡터 레지스터 필드의 4 비트 레지스터 지정의 왼쪽에 연결된다(concatenated).[0049] For example, the RXB field 314 includes a most significant bit for a vector register designated operand. The bits for the register assignments not specified by the instruction are reserved and set to zero. The most significant bit is concatenated to the left of the 4-bit register designation of the vector register field, for example, to generate a 5-bit vector register designation.

[0050] 한 예에서, RXB 필드는 4 비트들(예를 들어, 비트들 0-3)을 포함하고, 상기 비트들은 다음과 같이 정의된다:   [0050] In one example, the RXB field includes 4 bits (e.g., bits 0-3), and the bits are defined as follows:

[0051] 0 - 상기 명령의 제1 벡터 레지스터 지정(예를 들어, 비트들 8-11에서)을 위한 최상위 비트.0 - the most significant bit for the first vector register designation (eg, in bits 8-11) of the instruction.

[0052] 1 - 만일 있다면, 상기 명령의 제2 벡터 레지스터 지정(예를 들어, 비트들 12-15에서)을 위한 최상위 비트.1 - Most significant bit for the second vector register designation (eg, in bits 12-15) of the instruction, if any.

[0053] 2 - 만일 있다면, 상기 명령의 제3벡터 레지스터 지정(예를 들어, 비트들 16-19에서)을 위한 최상위 비트.2 - The most significant bit for the third vector register designation (eg, in bits 16-19) of the instruction, if any.

[0054] 3 - 만일 있다면, 상기 명령의 제4 벡터 레지스터 지정(예를 들어, 비트들 32-35에서)을 위한 최상위 비트.3 - Most significant bit for the fourth vector register designation (eg, in bits 32-35) of the instruction, if any.

[0055] 각각의 비트는, 예를 들면, 상기 레지스터 번호에 따른 어셈블러에 의해서, 0 또는 1로 세트 된다. 예를 들어, 레지스터들 0-15에 대해서, 상기 비트는 0으로 세트되고, 레지스터들 16-31에 대해서, 상기 비트는 1로 세트 된다.  [0055] Each bit is set to 0 or 1, for example, by the assembler according to the register number. For example, for registers 0-15, the bit is set to zero, and for registers 16-31, the bit is set to one.

[0056] 일 실시 예에서, 각 RXB 비트는 하나 또는 그 이상의 벡터 레지스터들을 포함하는 명령 내의 특정 위치에 대한 확장 비트이다. 예를 들어, RXB의 비트0은, 예를 들어, V1에 할당된, 위치 8-11에 대한 확장 비트이다. 특히, 벡터 레지스터들에 있어서, 오퍼랜드를 포함하는 레지스터는, 예를 들어, 최상위 비트로 자신의 대응 레지스터 확장 비트(RXB)를 추가한 레지스터 필드의 4비트 필드를 사용하여 명시된다. 예를 들어, 만일 4 비트 필드가 0110이고 확장 비트가 0 인 경우, 5 비트 필드 00110은 레지스터 번호 6을 표시한다. 다른 실시 예에서, RXB 필드는 추가 비트들을 포함하고, 하나 이상의 비트가 각 벡터 또는 위치에 대한 확장으로서 사용된다.[0056] In one embodiment, each RXB bit is an extension bit for a particular position in the instruction that includes one or more vector registers. For example, bit 0 of RXB, for example, an extension bit for the, it positions 8-11 is assigned to V 1. In particular, for vector registers, the register containing the operand is specified using a 4-bit field of the register field, for example, which has its corresponding register extension bit (RXB) added to the most significant bit. For example, if the 4-bit field is 0110 and the extension bit is 0, the 5-bit field 00110 indicates register number 6. In another embodiment, the RXB field contains additional bits, and one or more bits are used as an extension to each vector or location.

[0057] M6 필드(309)는 비교를 위한 특별 케이스들(또한 여기서는 특정 케이스라고도 함)의 처리하기(handling)를 명시한다. 각 엘리멘트를 위한 결과들에 관한 상세한 설명이 도 4a-4j에 도시되어 있다. 한 예에서, 만일 유보된 값이 명시되면, 명세 예외(a specification exception)가 인지된다(recognized)[0057] The M 6 field 309 specifies the handling of special cases (also referred to herein as specific cases) for comparison. A detailed description of the results for each element is shown in Figures 4A-4J. In one example, if a reserved value is specified, a specification exception is recognized,

[0058] M6 수행되는 최대 함수(Maximum Function Performed) [0058] M 6 Maximum Function Performed [0058]

[0059] 0 IEEE MaxNum [0059] IEEE MaxNum

[0060] 1 Java Math.Max() [0060] 1 Java Math.Max ()

[0061] 2 C-Style Max Macro [0061] 2 C-Style Max Macro

[0062] 3 C++ Algorithm.max() [0062] 3 C ++ Algorithm.max ()

[0063] 4 fmax() [0063] 4 fmax ()

[0064] 5-7 유보됨(Reserved) [0064] 5-7 Reserved

[0065] 8 IEEE MaxNumMag[0065] 8 IEEE MaxNumMag

[0066] 9 절대 값들의 Java Math.Max() [0066] 9 Absolute values of Java Math.Max ()

[0067] 10 절대 값들의 C-Style Max Macro [0067] 10 Absolute values of C-Style Max Macro

[0068] 11 절대 값들의 C++ Algorithm.max()[0068] C ++ Algorithm.max () of absolute values

[0069] 12 절대 값들의 fmax() [0069] The absolute values of fmax ()

[0070] 13-15 유보됨(Reserved)[0070] 13-15 Reserved

[0071] M4 필드(312)는 부동 소수점 포맷을 명시한다. 상기 부동 소수점 포맷은 벡터 레지스터 오퍼랜드들 내의 엘리멘트들의 크기를 결정한다. 한 예에서, 만일 유보된 값이 명시되면, 명세 예외가 인지된다.[0071] The M 4 field 312 specifies the floating-point format. The floating point format determines the size of the elements in the vector register operands. In one example, if the reserved value is specified, the specification exception is recognized.

[0072] M4 부동 소수점 포맷(Floating Point Format)[0072] M4 Floating Point Format

[0073] 0-1 유보됨(Reserved) 0-1  Reserved

[0074] 2 쇼트 포맷(Short format) [0074] 2 Short format

[0075] 3 롱 포맷(Long format) [0075] 3 Long format

[0076] 4 확장된 포맷(Extended format) [0076] 4 Extended format

[0077] 5-15 유보됨(Reserved)[0077] 5-15 Reserved

[0078] M5 필드(310)은, 한 예에서, 도 3b에 도시한 바와 같이, 다음의 제어들을 포함한다.[0078] The M 5 field 310, in one example, includes the following controls, as shown in FIG. 3b.

[0079] 단일 엘리멘트 제어(Single Element Control (S))(316): 만일 비트0이 1로 세트 되면, 연산은 벡터 내 제로-인덱스된 엘리멘트(the zero-indexed element)에 관해서만 일어난다.한 실시 예에서, 트래핑 예외 조건 부재 시(in the absence of a trapping exception condition), 제1 오퍼랜드 벡터 내 모든 다른 엘리멘트들의 비트 위치들은 예측 불가능하다(unpredictable). 제2 및 제3 오퍼랜드들 내 모든 다른 엘리멘트들의 값들은 무시된다. 만일 비트0이 0으로 세트 되면, 연산은 벡터 내의 모든 엘리멘트들에 관해서 일어난다.Single Element Control (S) 316: If bit 0 is set to 1, the operation only occurs with respect to the zero-indexed element in the vector. In the example, in the absence of a trapping exception condition, the bit positions of all other elements in the first operand vector are unpredictable. The values of all other elements in the second and third operands are ignored. If bit 0 is set to 0, the operation occurs on all elements in the vector.

[0080] 유보됨(Reserved): 비트 1, 2, 및 3은 유보되고 0으로 된다. 그렇지 않으면, 한 예에서, 스펙 예외가 인지된다.Reserved: Bits 1, 2, and 3 are reserved and become zero. Otherwise, in one example, a specification exception is recognized.

[0081] 다양한 필드들과 레지스터들이 설명되었지만, 본 발명의 하나 또는 그 이상의 실시 예들은 다른, 추가적인, 또는 더 적은 수의 필드들 또는 레지스터들을 사용하거나, 또는 다른 크기의 필드들 또는 레지스터들 등을 사용할 수 있다. 많은 변형들도 가능하다. 예를 들어, 묵시적 레지스터들(implied registers)이 명확히 명시된 레지스터들 또는 상기 명령의 필드들 대신에 사용될 수 있다. 또한, 벡터 레지스터들이 아닌 레지스터들이 사용될 수 있다.  다시 말하면, 다른 변형들도 또한 가능하다.[0081] While various fields and registers have been described, one or more embodiments of the present invention may utilize other, additional, or fewer number of fields or registers, or other sizes of fields or registers, Can be used. Many variations are possible. For example, implied registers may be used in place of explicitly stated registers or fields of the instruction. In addition, registers other than vector registers may be used. In other words, other variations are also possible.

[0082] 벡터 부동 소수점 최대 명령의 한 실시 예의 연산에서, 도 4a-4j에 도시한 바와 같이, 제2 오퍼랜드의 부동 소수점 엘리멘트 또는 엘리멘트들이 제3 오퍼랜드의 대응 부동 소수점 엘리멘트 또는 엘리멘트들에 대해서 비교된다. 두 값들 중 더 큰 값이 제1오퍼랜드의 대응 엘리멘트 내에 배치된다. 상기 오퍼랜드 엘리멘트들은 모두 명시된 포맷의 BFP 수들로 취급된다. [0082] In an operation of one embodiment of the vector floating-point maximum instruction, the floating-point elements or elements of the second operand are compared against corresponding floating-point elements or elements of the third operand, as shown in Figures 4A-4J . The larger of the two values is placed in the corresponding element of the first operand. The operand elements are all treated as BFP numbers in the specified format.

[0083] 수행된 비교와 그에 관한 결과는 선택된 비교 함수(예를 들어, M6의해서 표시된)와 수행되는 특정 비교 함수를 위한 비교 옵션들에 따라 결정된다.하나의 비교 옵션(예를 들어, 다음의 케이스들 중 임의 의 2개를 포함하는 한 쌍: 예들로서, -∞, +∞, -FN, +FN, -0, +0, QNAN, SNAN, 여기서 FN은 유한의 수)이 비교되는 제2 및 제3 오퍼랜드 엘리멘트들의 값들에 기초하여 선택된다.각각의 비교 함수는 그 것과 연관된 다른 비교 옵션들을 가질 수 있고, 하나의 비교 옵션에 대한 결과는 수행되는 특정 비교 함수에 따라 결정된다. 다른 비교 함수들을 위한 동일 비교 옵션들에 대해서 다른 결과들이 명시될 수 있다. 예를 들어, 만일 M6 = 0이고, 비교되는 제2 및 제3 오퍼랜드 값들이 -0, +0이면, 결과는 +0이다(도 4a참조); 그러나, 만일 M6 = 3이고, 제2 및 제3 오퍼랜드 값들이 여전히 -0, +0이면, 결과는 -0이다(도 4d참조). 많은 변형들이 가능하다.[0083] The comparison made and the results thereof are determined according to the comparison options for the specific comparison function to be performed and the selected comparison function (denoted by M 6 , for example). One comparison option For example, -∞, + ∞, -FN, + FN, -0, +0, QNAN, SNAN, where FN is a finite number) 2 and the third operand elements. Each comparison function may have other comparison options associated with it, and the result for one comparison option is determined according to the particular comparison function being performed. Different results can be specified for the same comparison options for different comparison functions. For example, if M 6 = 0 and the compared second and third operand values are -0, +0, the result is +0 (see FIG. 4A); However, if M 6 = 3 and the second and third operand values are still -0, +0, the result is -0 (see FIG. 4D). Many variations are possible.

[0084] 한 실시 예에서, 수행되는 최대 함수에 따라서, 만일 제2 또는 제3 오퍼랜드 내의 부동 소수점 엘리멘트들 중 하나 또는 그 이상이 NaNs이면, 도 4a-4j에서 명시한 바와 같이, IEEE무효-연산 예외(an IEEE invalid-operation exception)가 인지 될 수 있다. 만일 IEEE무효-연산 마스크 비트가 1이면, 한 예에서, IEEE무효-연산을 위해 세트 되는 VXC를 갖는 프로그램 인터럽션(a program interruption with VXC)과 대응 엘리멘트 인덱스가 발생하고 상기 연산은 중단된다.[0084] In one embodiment, depending on the maximum function performed, if one or more of the floating-point elements in the second or third operand is NaNs, then an IEEE invalid-operation exception an IEEE invalid-operation exception may be acknowledged. If the IEEE invalid-operation mask bit is 1, then in one example, a program interruption with VXC set for IEEE invalid-operation and a corresponding element index occur and the operation is aborted.

[0085] 추가의 실시 예에서, 상기 명령의 하나의 필드(예를 들어, M6또는 다른 선택된 필드와 같은, 상기 명령의 명시적 필드, 또는 상기 명령의 묵시적 필드)는 복수의 비트들을 포함하고, 각 비트는 세트 될 때(예를 들어 1로) 다른 비교 옵션을 정의하는 선택자(a selector)가 된다.예를 들어, 비트0은 세트 될 때 부호(a sign)가 무시될 것임을 표시한다; 비트1은 세트 될 때 SNAN 에 관해 신호할 것을 표시한다; 비트2는 세트 될 때, 예를 들어, +0, -0 중에서 어느 값을 선택할 것인지를 표시한다; 비트3은 세트 될 때, 예를 들어, ∞, -FN 중에서 어느 값을 선택할 것인지를 표시한다. 많은 다른 옵션들이 다른 비트들에 의해서 나타낼 수 있다. 다른 옵션들에 대응하는 다른 비트들을 가짐으로써, 하나 또는 그 이상의 비트들이 단일 명령을 사용하여 많은 다른 비교 옵션들 및 결과들을 제공하기 위해 세트 될 수 있다.[0085] In a further embodiment, one field of the instruction (eg, an explicit field of the instruction, such as M 6 or another selected field, or an implied field of the instruction) contains a plurality of bits , And each bit is a selector that defines another comparison option when set (for example, 1). For example, bit 0 indicates that a sign will be ignored when set; Bit 1 indicates to signal about SNAN when set; Bit 2, when set, indicates which value to select, for example, +0, -0; Bit 3, when set, indicates which value to select, for example, ∞, -FN. Many different options can be represented by different bits. By having different bits corresponding to different options, one or more bits can be set to provide many different comparison options and results using a single instruction.

[0086] 추가의 실시 예에서, 벡터 부동 소수점 최소 명령(a Vector Floating Point Minimum instruction)이 제공되고, 도 3c를 참조하여 기술된다. 일 실시 예에서, 벡터 부동 소수점 최소 명령(320)은 벡터 부동 소수점 최소 연산을 표시하는 오피 코드 필드(322a, 322b); 제1벡터 레지스터(V1)을 지정하기 위해 사용되는 제1벡터 레지스터 필드(324); 제2벡터 레지스터(V2)을 지정하기 위해 사용되는 제2벡터 레지스터 필드(326); 제3벡터 레지스터(V3)을 지정하기 위해 사용되는 제3벡터 레지스터 필드(328); 제1 마스크 필드(M6)(329); 제2마스크 필드(M5)(330); 제3 마스크 필드(M4)(332); 및 레지스터 확장 비트(register extension bit; RXB) 필드(334)를 포함하며, 이들 각각은 후술 될 것이다. 일 실시 예에서, 상기 필드들은 서로 분리되어 있고 서로 독립적이다; 그러나, 다른 실시 예들에서는 하나 또는 그 이상의 필드들이 결합 될 수 있다. 이들 필드들에 대한 추가적인 정보는 아래에서 설명된다.[0086] In a further embodiment, a Vector Floating Point Minimum instruction is provided and described with reference to FIG. 3c. In one embodiment, the vector floating-point minimum instruction 320 includes an opcode field 322a, 322b indicating a vector floating-point minimum operation; A first vector register field 324 used to specify a first vector register V 1 ; A second vector register field 326 used to designate a second vector register (V 2 ); A third vector register field 328 used to specify the vector register 3 (V 3); A first mask field (M 6 ) 329; A second mask field (M 5) (330); A third mask field (M 4 ) 332; And a register extension bit (RXB) field 334, each of which will be described later. In one embodiment, the fields are separate from each other and independent of each other; However, in other embodiments, one or more fields may be combined. Additional information on these fields is described below.

[0087] 벡터 레지스터 필드(324)는 제 1 오퍼랜드를 저장할 벡터 레지스터를 표시하기 위해 사용되고, 상기 제 1 오퍼랜드는 상기 엘리멘트들의 두 값들 중 더 적은 값을 획득하기 위해 두 오퍼랜드들의 엘리멘트들의 값들을 비교한 것의 결과이다. 상기 오퍼랜드 엘리멘트들은, 예를 들어, 명시된 포맷의 이진 부동 소수점 수들로 취급된다. 상기 두 오퍼랜드들은 벡터 레지스터 필드(326)를 사용하여 명시된 벡터 레지스터 내에 포함된 제2 오퍼랜드와 벡터 레지스터 필드(328)를 사용하여 명시된 벡터 레지스터 내에 포함된 제3 오퍼랜드이다. 일 예 에서, 벡터 레지스터 필드들(324), (326), (328) 각각은, 전술한 바와 같이, 상기 벡터 레지스터를 지정하기 위해 RXB 필드(334)와 함께 사용된다.[0087] The vector register field 324 is used to indicate the vector register to store the first operand, which compares the values of the elements of the two operands to obtain the smaller of the two values of the elements It is the result of something. The operand elements are treated as, for example, binary floating point numbers in the specified format. The two operands are the third operand contained in the specified vector register using the vector register field 326 and the third operand contained in the vector register specified using the vector register field 328. [ In one example, each of the vector register fields 324, 326, 328 is used with the RXB field 334 to specify the vector register, as described above.

[0088] M6 필드(329)는 비교를 위한 특별 케이스들(또한 여기서는 특정 케이스라고도 함)의 처리하기(handling)를 명시한다. 각 엘리멘트를 위한 결과들에 관한 상세한 설명이 도 4k-4t에 도시되어 있다. 한 예에서, 만일 유보된 값이 명시되면, 명세 예외(a specification exception)가 인지된다(recognized)[0088] The M 6 field 329 specifies the handling of special cases (also referred to herein as specific cases) for comparison. A detailed description of the results for each element is shown in Figures 4k-4t. In one example, if a reserved value is specified, a specification exception is recognized,

[0089] M6 수행되는 최소 함수(Minimum Function Performed) [0089] M 6 Minimum Function Performed [0089]

[0090] 0 IEEE MinNum [0090] IEEE MinNum

[0091] 1 Java Math.Min() [0091] 1 Java Math.Min ()

[0092] 2 C-Style Min Macro [0092] 2 C-Style Min Macro

[0093] 3 C++ Algorithm.min() [0093] 3 C ++ Algorithm.min ()

[0094] 4 fmin() [0094] 4 fmin ()

[0095] 5-7 유보됨(Reserved) [0095] 5-7 Reserved

[0096] 8 절대 값들의 IEEE MinNum[0096] 8 IEEE MinNum of absolute values

[0097] 9 절대 값들의 Java Math.Min() [0097] 9 Absolute values of Java Math.Min ()

[0098] 10 절대 값들의 C-Style Min Macro [0098] 10 Absolute values of C-Style Min Macro

[0099] 11 절대 값들의 C++ Algorithm.min()[0099] C ++ Algorithm.min () of absolute values

[00100] 12 절대 값들의 fmin() [00100] 12 The absolute values of fmin ()

[00101] 13-15 유보됨(Reserved)[00101] 13-15 Reserved

[00102] M4 필드(332)는 부동 소수점 포맷을 명시한다. 상기 부동 소수점 포맷은 벡터 레지스터 오퍼랜드들 내의 엘리멘트들의 크기를 결정한다. 한 예에서, 만일 유보된 값이 명시되면, 명세 예외가 인지된다.[00102] The M 4 field 332 specifies the floating-point format. The floating point format determines the size of the elements in the vector register operands. In one example, if the reserved value is specified, the specification exception is recognized.

[00103] M4 부동 소수점 포맷(Floating Point Format)[00103] M4 Floating Point Format

[00104] 0-1 유보됨(Reserved) [00104] 0-1  Reserved

[00105] 2 쇼트 포맷(Short format) [00105] 2 Short format

[00106] 3 롱 포맷(Long format) [00106] 3 Long format

[00107] 4 확장된 포맷(Extended format) [00107] 4 Extended format

[00108] 5-15 유보됨(Reserved)[00108] 5-15 Reserved

[00109] M5 필드(330)은, 한 예에서, 도 3b에 도시한 바와 같이, 다음의 제어들을 포함한다.[00109] M 5 field 330, in one example, as shown in Figure 3b, comprises the following control.

[00110] 단일 엘리멘트 제어(Single Element Control(S))(316): 만일 비트0이 1로 세트 되면, 연산은 벡터 내 제로-인덱스된 엘리멘트(the zero-indexed element)에 관해서만 일어난다.한 실시 예에서, 트래핑 예외 조건 부재 시(in the absence of a trapping exception condition), 제1 오퍼랜드 벡터 내 모든 다른 엘리멘트들의 비트 위치들은 예측 불가능하다(unpredictable). 제2 및 제3 오퍼랜드들 내 모든 다른 엘리멘트들의 값들은 무시된다. 만일 비트0이 0으로 세트 되면, 연산은 벡터 내의 모든 엘리멘트들에 관해서 일어난다.[00110] Single Element Control (S) 316: If bit 0 is set to 1, the operation only occurs with respect to the zero-indexed element in the vector. In the example, in the absence of a trapping exception condition, the bit positions of all other elements in the first operand vector are unpredictable. The values of all other elements in the second and third operands are ignored. If bit 0 is set to 0, the operation occurs on all elements in the vector.

[00111] 다양한 필드들과 레지스터들이 설명되었지만, 본 발명의 하나 또는 그 이상의 실시 예들은 다른, 추가적인, 또는 더 적은 수의 필드들 또는 레지스터들을 사용하거나, 또는 다른 크기의 필드들 또는 레지스터들 등을 사용할 수 있다. 많은 변형들도 가능하다. 예를 들어, 묵시적 레지스터들(implied registers)이 명확히 명시된 레지스터들 또는 상기 명령의 필드들 대신에 사용될 수 있다. 또한, 벡터 레지스터들이 아닌 레지스터들이 사용될 수 있다.  다시 말하면, 다른 변형들도 또한 가능하다.  [00111] While various fields and registers have been described, one or more embodiments of the present invention may utilize other, additional, or fewer number of fields or registers, or other sizes of fields or registers, Can be used. Many variations are possible. For example, implied registers may be used in place of explicitly stated registers or fields of the instruction. In addition, registers other than vector registers may be used. In other words, other variations are also possible.

[00112] 벡터 부동 소수점 최소 명령의 한 실시 예의 연산에서, 제2 오퍼랜드의 부동 소수점 엘리멘트 또는 엘리멘트들이 제3 오퍼랜드의 대응 부동 소수점 엘리멘트 또는 엘리멘트들에 대해서 비교된다. 두 값들 중 더 적은 값이 제1오퍼랜드의 대응 엘리멘트 내에 배치된다. 상기 오퍼랜드 엘리멘트들은 모두 명시된 포맷의 BFP 수들로 취급된다. [00112] In an operation of one embodiment of the vector floating-point minimum instruction, the floating-point elements or elements of the second operand are compared against corresponding floating-point elements or elements of the third operand. The smaller of the two values is placed in the corresponding element of the first operand. The operand elements are all treated as BFP numbers in the specified format.

[00113] 수행된 비교와 그에 관한 결과는 선택된 비교 함수(예를 들어, M6의해서 표시된)와 수행되는 특정 비교 함수를 위한 비교 옵션들에 따라 결정된다.하나의 비교 옵션(예를 들어, 다음의 케이스들 중 임의 의 2개를 포함하는 한 쌍: 예들로서, -∞, +∞, -FN, +FN, -0, +0, QNAN, SNAN, 여기서 FN은 유한의 수)이 비교되는 제2 및 제3 오퍼랜드 엘리멘트들의 값들에 기초하여 선택된다. 각각의 비교 함수는 그 것과 연관된 다른 비교 옵션들을 가질 수 있고, 하나의 비교 옵션에 대한 결과는 수행되는 특정 비교 함수에 따라 결정된다. 다른 비교 함수들을 위한 동일 비교 옵션들에 대해서 다른 결과들이 명시될 수 있다. [00113] The comparison made and the results thereof are determined according to the comparison options for the particular comparison function being performed with the selected comparison function (denoted by, for example, M 6 ). One comparison option For example, -∞, + ∞, -FN, + FN, -0, +0, QNAN, SNAN, where FN is a finite number) 2 and the third operand elements. Each comparison function may have other comparison options associated therewith, and the result for one comparison option is determined according to the particular comparison function being performed. Different results can be specified for the same comparison options for different comparison functions.

[00114] 일 실시 예에서, 수행되는 최소 함수에 따라서, 만일 제2 또는 제3 오퍼랜드 내의 부동 소수점 엘리멘트들 중 하나 또는 그 이상이 NaNs이면, 도 4k-4t에서 명시한 바와 같이, IEEE무효-연산 예외(an IEEE invalid-operation exception)가 인지 될 수 있다. 만일 IEEE무효-연산 마스크 비트가 1이면, 한 예에서, IEEE무효-연산을 위해 세트 되는 VXC를 갖는 프로그램 인터럽션(a program interruption with VXC)과 대응 엘리멘트 인덱스가 발생하고 상기 연산은 중단된다.[00114] In one embodiment, depending on the minimal function performed, if one or more of the floating-point elements in the second or third operand is NaNs, then an IEEE invalid-operation exception an IEEE invalid-operation exception may be acknowledged. If the IEEE invalid-operation mask bit is 1, then in one example, a program interruption with VXC set for IEEE invalid-operation and a corresponding element index occur and the operation is aborted.

[00115] 추가의 실시 예에서, 최대/최소가, 예를 들어, 상기 명령의 하나의 선택 가능 제어인, 하나의 명령이 제공될 수 있다. 벡터 부동 소수점 최대/최소 명령(a Vector Floating Point Maximum/Minimum instruction)(350)의 한 예가 도 3D를 참조하여 기술된다. 일 실시 예에서, 벡터 부동 소수점 최대/최소 명령(350)은 벡터 부동 소수점 최대/최소 연산을 표시하는 오피 코드 필드(352a, 352b); 제1벡터 레지스터(V1)을 지정하기 위해 사용되는 제1벡터 레지스터 필드(354); 제2벡터 레지스터(V2)을 지정하기 위해 사용되는 제2벡터 레지스터 필드(356); 제3벡터 레지스터(V3)을 지정하기 위해 사용되는 제3벡터 레지스터 필드(358); 제1 마스크 필드(M6)(359); 제2마스크 필드(M5)(360); 제3 마스크 필드(M4)(362); 및 레지스터 확장 비트(register extension bit; RXB) 필드(364)를 포함하며, 이들 각각은 후술 될 것이다. 일 실시 예에서, 상기 필드들은 서로 분리되어 있고 서로 독립적이다; 그러나, 다른 실시 예들에서는 하나 또는 그 이상의 필드들이 결합 될 수 있다. 이들 필드들에 대한 추가적인 정보는 아래에서 설명된다.[00115] In a further embodiment, one instruction may be provided, wherein the maximum / minimum is, for example, one selectable control of the instruction. An example of a Vector Floating Point Maximum / Minimum instruction 350 is described with reference to FIG. 3D. In one embodiment, vector floating-point maximum / minimum command 350 includes opcode fields 352a and 352b indicating vector floating-point maximum / minimum operations; A first vector register field 354 used to specify a first vector register V 1 ; A second vector register field 356 used to specify a second vector register V 2 ; A third vector register field 358 used to specify the vector register 3 (V 3); A first mask field (M 6 ) 359; A second mask field (M 5) (360); The third mask field (M 4) (362); And a register extension bit (RXB) field 364, each of which will be described later. In one embodiment, the fields are separate from each other and independent of each other; However, in other embodiments, one or more fields may be combined. Additional information on these fields is described below.

[00116] 벡터 레지스터 필드(354)는 제 1 오퍼랜드를 저장할 벡터 레지스터를 표시하기 위해 사용되고, 상기 제 1 오퍼랜드는, 선택된 함수가 최대 또는 최소인지에 따라서, 상기 엘리멘트들의 두 값들 중 더 큰/더 적은 값을 획득하기 위해 두 오퍼랜드들의 엘리멘트들의 값들을 비교한 것의 결과이다. 상기 오퍼랜드 엘리멘트들은, 예를 들어, 명시된 포맷의 이진 부동 소수점 수들로 취급된다. 상기 두 오퍼랜드들은 벡터 레지스터 필드(356)를 사용하여 명시된 벡터 레지스터 내에 포함된 제2 오퍼랜드와 벡터 레지스터 필드(358)를 사용하여 명시된 벡터 레지스터 내에 포함된 제3 오퍼랜드이다. 일 예 에서, 벡터 레지스터 필드들(354), (356), (358) 각각은, 전술한 바와 같이, 상기 벡터 레지스터를 지정하기 위해 RXB 필드(364)와 함께 사용된다.[00116] The vector register field 354 is used to indicate a vector register to store a first operand, the first operand being a larger / smaller one of the two values of the elements, depending on whether the selected function is a maximum or a minimum Is the result of comparing the values of the elements of both operands to obtain a value. The operand elements are treated as, for example, binary floating point numbers in the specified format. The two operands are the third operand included in the specified vector register using the vector register field 356 and the third operand contained in the vector register specified using the vector register field 358. [ In one example, each of the vector register fields 354, 356, 358 is used with the RXB field 364 to specify the vector register, as described above.

[00117] M6 필드(359)는 비교를 위한 특별 케이스들(또한 여기서는 특정 케이스라고도 함)의 처리하기(handling)를 명시한다. 각 엘리멘트를 위한 결과들에 관한 상세한 설명이 도 4a-4t에 도시되어 있다. 한 예에서, 만일 유보된 값이 명시되면, 명세 예외(a specification exception)가 인지된다(recognized). 수행되는 상기 함수는, 아래의 각각의 M6값 뿐만 아니라, 최대 또는 최소 연산이 수행되는 지에 따라서 결정된다.[00117] The M 6 field 359 specifies the handling of special cases (also referred to herein as specific cases) for comparison. A detailed description of the results for each element is shown in Figures 4a-4t. In one example, if a reserved value is specified, a specification exception is recognized. The function to be performed is determined depending on whether the maximum or minimum operation is performed, as well as the respective M 6 values below.

[00118] M6 수행되는 함수(Function Performed) [00118] M 6 Function Performed

[00119] 0 IEEE MaxNum [00119] 0 IEEE MaxNum

[00120] 0 IEEE MinNum [00120] 0 IEEE MinNum

[00121] 1 Java Math.Max() [00121] 1 Java Math.Max ()

[00122] 1 Java Math.Min() [00122] 1 Java Math.Min ()

[00123] 2 C-Style Max Macro [00123] 2 C-Style Max Macro

[00124] 2 C-Style Min Macro [00124] 2 C-Style Min Macro

[00125] 3 C++ Algorithm.max() [00125] 3 C ++ Algorithm.max ()

[00126] 3 C++ Algorithm.min() [00126] 3 C ++ Algorithm.min ()

[00127] 4 fmax() [00127] 4 fmax ()

[00128] 4 fmin() [00128] 4 fmin ()

[00129] 5-7 유보됨(Reserved) [00129] 5-7 Reserved

[00130] 5-7 유보됨(Reserved) [00130] 5-7 Reserved

[00131] 8 IEEE MinNumMag[00131] 8 IEEE MinNumMag

[00132] 8 절대 값들의 IEEE MinNum[00132] 8 IEEE MinNum of absolute values

[00133] 9 절대 값들의 Java Math.Max() [00133] 9 Absolute values of Java Math.Max ()

[00134] 9 절대 값들의 Java Math.Min() [00134] 9 Absolute values of Java Math.Min ()

[00135] 10 절대 값들의 C-Style Max Macro [00135] 10 Absolute values of C-Style Max Macro

[00136] 10 절대 값들의 C-Style Min Macro [00136] 10 Absolute values of C-Style Min Macro

[00137] 11 절대 값들의 C++ Algorithm.max()[00137] 11 C ++ Algorithm.max () of absolute values

[00138] 11 절대 값들의 C++ Algorithm.min()[00138] 11 C ++ Algorithm.min () of absolute values

[00139] 12 절대 값들의 fmax() [00139] 12 The absolute values of fmax ()

[00140] 12 절대 값들의 fmin() [00140] 12 The absolute values of fmin ()

[00141] 13-15 유보됨(Reserved)[00141] 13-15 Reserved

[00142] 13-15 유보됨(Reserved)[00142] 13-15 Reserved

[00143] 추가적인 실시 예에서, 지원되는 각각의 최대/최소 함수를 위한 별도의 수들(separate numbers)이 있을 수 있다.[00143] In a further embodiment, there may be separate numbers for each maximum / minimum function supported.

[00144] M4 필드(362)는 부동 소수점 포맷을 명시한다. 상기 부동 소수점 포맷은 벡터 레지스터 오퍼랜드들 내의 엘리멘트들의 크기를 결정한다. 한 예에서, 만일 유보된 값이 명시되면, 명세 예외가 인지된다.[00144] The M 4 field 362 specifies the floating-point format. The floating point format determines the size of the elements in the vector register operands. In one example, if the reserved value is specified, the specification exception is recognized.

[00145] M4 부동 소수점 포맷(Floating Point Format)[00145] M4 Floating Point Format

[00146] 0-1 유보됨(Reserved) [00146] 0-1  Reserved

[00147] 2 쇼트 포맷(Short format) [00147] 2 Short format

[00148] 3 롱 포맷(Long format) [00148] 3 Long format

[00149] 4 확장된 포맷(Extended format) [00149] 4 Extended format

[00150] 5-15 유보됨(Reserved)[00150] 5-15 Reserved

[00151] M5 필드(360)은, 한 예에서, 도 3b에 도시한 바와 같이, 다음의 제어들을 포함한다.[00151] The M 5 field 360, in one example, includes the following controls, as shown in FIG. 3B.

[00152] 단일 엘리멘트 제어(Single Element Control(S))(316): 만일 비트0이 1로 세트 되면, 연산은 벡터 내 제로-인덱스된 엘리멘트(the zero-indexed element)에 관해서만 일어난다.한 실시 예에서, 트래핑 예외 조건 부재 시(in the absence of a trapping exception condition), 제1 오퍼랜드 벡터 내 모든 다른 엘리멘트들의 비트 위치들은 예측 불가능하다(unpredictable). 제2 및 제3 오퍼랜드들 내 모든 다른 엘리멘트들의 값들은 무시된다. 만일 비트0이 0으로 세트 되면, 연산은 벡터 내의 모든 엘리멘트들에 관해서 일어난다.Single Element Control (S) 316: If bit 0 is set to 1, the operation only occurs with respect to the zero-indexed element in the vector. In the example, in the absence of a trapping exception condition, the bit positions of all other elements in the first operand vector are unpredictable. The values of all other elements in the second and third operands are ignored. If bit 0 is set to 0, the operation occurs on all elements in the vector.

[00153] 다양한 필드들과 레지스터들이 설명되었지만, 본 발명의 하나 또는 그 이상의 실시 예들은 다른, 추가적인, 또는 더 적은 수의 필드들 또는 레지스터들을 사용하거나, 또는 다른 크기의 필드들 또는 레지스터들 등을 사용할 수 있다. 많은 변형들도 가능하다. 예를 들어, 묵시적 레지스터들(implied registers)이 명확히 명시된 레지스터들 또는 상기 명령의 필드들 대신에 사용될 수 있다. 또한, 벡터 레지스터들이 아닌 레지스터들이 사용될 수 있다.  다시 말하면, 다른 변형들도 또한 가능하다.[00153] While various fields and registers have been described, one or more embodiments of the present invention may utilize other, additional, or fewer number of fields or registers, or other sizes of fields or registers, Can be used. Many variations are possible. For example, implied registers may be used in place of explicitly stated registers or fields of the instruction. In addition, registers other than vector registers may be used. In other words, other variations are also possible.

[00154] 벡터 부동 소수점 최대/최소 명령의 한 실시 예의 연산에서, 제2 오퍼랜드의 부동 소수점 엘리멘트 또는 엘리멘트들이 제3 오퍼랜드의 대응 부동 소수점 엘리멘트 또는 엘리멘트들에 대해서 비교된다. 최대 또는 최소 함수가 수행되는지에 따라서, 두 값들 중 더 큰 또는 더 적은 값이 제1오퍼랜드의 대응 엘리멘트 내에 배치된다. 상기 오퍼랜드 엘리멘트들은 모두 명시된 포맷의 BFP 수들로 취급된다. [00154] In an operation of one embodiment of the vector floating-point maximum / minimum instruction, the floating-point element or elements of the second operand are compared against corresponding floating-point elements or elements of the third operand. Depending on whether the maximum or minimum function is being performed, a larger or smaller value of the two values is placed in the corresponding element of the first operand. The operand elements are all treated as BFP numbers in the specified format.

[00155] 수행된 비교와 그에 관한 결과는 선택된 비교 함수(예를 들어, M6의해서 표시된)와 수행되는 특정 비교 함수를 위한 비교 옵션들에 따라 결정된다.하나의 비교 옵션(예를 들어, 다음의 케이스들 중 임의의 2개를 포함하는 한 쌍: 예들로서, -∞, +∞, -FN, +FN, -0, +0, QNAN, SNAN, 여기서 FN은 유한의 수)이 비교되는 제2 및 제3 오퍼랜드 엘리멘트들의 값들에 기초하여 선택된다. 각각의 비교 함수는 그 것과 연관된 다른 비교 옵션들을 가질 수 있고, 하나의 비교 옵션에 대한 결과는 수행되는 특정 비교 함수에 따라 결정된다. [00155] The comparison made and the results thereof are determined according to the comparison options for the particular comparison function being performed with the selected comparison function (denoted by, for example, M 6 ). One comparison option For example, -∞, + ∞, -FN, + FN, -0, +0, QNAN, SNAN, where FN is a finite number) 2 and the third operand elements. Each comparison function may have other comparison options associated therewith, and the result for one comparison option is determined according to the particular comparison function being performed.

[00156] 한 실시 예에서, 수행되는 함수에 따라서, 만일 제2 또는 제3 오퍼랜드 내의 부동 소수점 엘리멘트들 중 하나 또는 그 이상이 NaNs이면, 도 4a-4t에서 명시한 바와 같이, IEEE무효-연산 예외(an IEEE invalid-operation exception)가 인지 될 수 있다. 만일 IEEE무효-연산 마스크 비트가 1이면, 한 예에서, IEEE무효-연산을 위해 세트 되는 VXC를 갖는 프로그램 인터럽션(a program interruption with VXC)과 대응 엘리멘트 인덱스가 발생하고 상기 연산은 중단된다.[00156] In one embodiment, depending on the function performed, if one or more of the floating-point elements in the second or third operand is NaNs, then an IEEE invalid-operation exception ( an IEEE invalid-operation exception may be acknowledged. If the IEEE invalid-operation mask bit is 1, then in one example, a program interruption with VXC set for IEEE invalid-operation and a corresponding element index occur and the operation is aborted.

[00157] 벡터 부동 소수점 최대, 최소 및/또는 최대/최소 명령의 연산에 관한 더 상세한 설명들이 도 5를 참조하여 설명된다. 일 예에서, 도 5의 처리는 상기 명령들 중 하나를 획득하고 실행하는 것에 기초하여 적어도 하나의 프로세서에 의해서 수행된다.[00157] Further details regarding the operation of the vector floating point maximum, minimum and / or maximum / minimum instructions are described with reference to FIG. In one example, the processing of FIG. 5 is performed by at least one processor based on obtaining and executing one of the instructions.

[00158] 도 5를 참조하면, 초기에 비교될 제1 값 및 제2 값이, 단계 (500)에서, 획득된다. 한 예에서, 상기 제1 값은 제2 오퍼랜드의 한 엘리멘트를 갖고 상기 제2 값은 제3 오퍼랜드의 대응 엘리멘트를 갖는다. (다른 실시 예들에서, 다수의 엘리멘트들의 다수의 값들은 병렬로 또는 순차로 비교된다)[00158] Referring to FIG. 5, a first value and a second value to be initially compared are obtained in step 500. In one example, the first value has one element of the second operand and the second value has a corresponding element of the third operand. (In other embodiments, multiple values of multiple elements are compared in parallel or sequentially)

[00159] 단계(502)에서, 상기 명령의 제어에 기초하여 수행될 비교 함수에 관한 결정이 내려진다. 예를 들어, 만일 상기 명령이 벡터 부동 소수점 최대 명령이고 M6=0이면, IEEE MaxNum 함수가 수행된다. 유사하게, 만일 상기 명령이 벡터 부동 소수점 최소 명령이고 M6=0이면, IEEE MinNum 함수가 수행된다. 마찬가지로, 만일 상기 명령이 벡터 부동 소수점 최대/최소 명령이고 M6=0이면, 상기 명령이 최대 연산을 수행하여야 하는 경우 IEEE MaxNum 함수가 수행되거나, 또는 상기 명령이 최소 연산을 수행하여야 하는 경우 IEEE MinNum 함수가 수행된다. 많은 다른 예들이 가능하다.[00159] At step 502, a determination is made regarding the comparison function to be performed based on the control of the instruction. For example, if the instruction is a vector floating point maximum instruction and M 6 = 0, the IEEE MaxNum function is performed. Similarly, if the instruction is a floating-point vector and a minimum command M 6 = 0, the IEEE MinNum function is performed. Similarly, if the instruction is a vector floating-point maximum / minimum instruction and M 6 = 0, then the IEEE MaxNum function is performed if the instruction is to perform a maximum operation, or if the instruction is to perform a minimum operation, Function is performed. Many other examples are possible.

[00160] 그 후, 단계(504)에서, 상기 선택된 비교 함수(예를 들어, IEEE MaxNum, IEEE MinNum, 등)를 위해서, 하나의 비교 옵션이, 상기 제1 값 및 상기 제2 값에 기초하여, 상기 특정의 선택된 비교 함수를 위한 복수의 비교 옵션들로부터 선택된다. 예를 들어, 만일 IEEE MaxNum함수가 수행되고(예를 들어, M6 = 0), 상기 제1 값이 -0(a)이며, 상기 제2값이 +∞(b)이면, 그 쌍이 IEEE MaxNum 함수를 위해 제공된 옵션들로부터 선택된다(도 4a참조). 상기 값들은, 단계(506)에서, 하나의 결과를 획득하기 위해 상기 선택된 비교 옵션을 사용하여 비교된다. 예를 들어, 도 4a에서, IEEE MaxNum 함수를 위한 상기 비교 결과는 상기 입력 값들(-0, +∞)의 교차점에서 표시된다. 따라서, 이 특정 예에서 획득된 결과는, 제3 오퍼랜드의 값이 상기 비교의 결과로서 표시되는, T(b)이다. 이 결과는, 단계(508)에서, 선택 위치에 배치된다. 예를 들어, V1를 사용하여 명시된 레지스터에 배치된다. 추가의 예에서, 그러나, 이 결과는 메모리 위치 또는 다른 위치에 배치될 수 있다.[00160] Then, at step 504, for the selected comparison function (e.g., IEEE MaxNum, IEEE MinNum, etc.), one comparison option is calculated based on the first value and the second value , And a plurality of comparison options for the particular selected comparison function. For example, if the IEEE MaxNum function is performed (e.g., M 6 = 0) and the first value is -0 (a) and the second value is + ∞ (b) (See Fig. 4A). The values are compared at step 506 using the selected comparison option to obtain one result. For example, in FIG. 4A, the comparison result for the IEEE MaxNum function is displayed at the intersection of the input values (-0, +?). Thus, the result obtained in this particular example is T (b), where the value of the third operand is displayed as the result of the comparison. This result is placed at the selected position in step 508. [ For example, it is placed in the specified register using V 1 . In a further example, however, this result may be placed at a memory location or other location.

[00161] 벡터 부동 소수점 최대, 최소 및/또는 최대/최소 명령을 수행하기 위한 명령을 실행하는 단계를 포함하는, 컴퓨팅 환경 내에서의 처리를 용이하게 하는 것에 관련된 더 자세한 사항들은 도 6a-6b을 참조하여 설명한다.[00161] Further details relating to facilitating processing within a computing environment, including executing instructions for performing vector floating-point maximum, minimum and / or maximum / minimum instructions, are illustrated in Figures 6A-6B. .

[00162] 도 6a를 참조하면, 제1 값 및 제2 값의 비교를 수행하기 위한 명령 (예를 들어, 단일의 아키텍처된 머신 명령)이, 단계 (600)에서, 획득되고, 단계 (602)에서, 적어도 하나의 프로세서에 의해서 실행된다. 상기 실행하는 단계는, 예를 들어, 상기 명령의 하나의 제어에 기초하여, 수행될 비교 함수를 결정하는 단계를 포함한다 (단계 604). 상기 비교 함수는 상기 명령을 위해 구성된 복수의 비교 함수들 중 하나이고(단계 606), 상기 비교 함수는 비교를 위해 복수의 옵션들을 갖는다(단계608). 상기 제1 값 및 상기 제2 값을 비교하기 위해 사용될 하나의 비교 옵션은 상기 비교 함수를 위한 복수의 옵션들로부터 선택된다 (단계610). 상기 비교 옵션은 상기 제1 값 및 상기 제2 값에 기초하여 선택된다. 상기 제1 값 및 상기 제2 값은 하나의 결과를 획득하기 위해 상기 비교 옵션을 사용하여 비교된다(단계 612). 상기 결과는 상기 명령의 제어에 의해서 표시된 상기 비교 함수를 위해 선택된 상기 비교 옵션에 대해 특정된다(specific)(단계 614). 상기 결과는 선택 위치에 배치되고, 컴퓨팅 환경 내의 처리에 사용된다(단계 616).6A, an instruction (e.g., a single architected machine instruction) to perform a comparison of a first value and a second value is obtained, at step 600, and stored at step 602, And executed by at least one processor. The executing step includes determining a comparison function to be performed based on, for example, one control of the instruction (step 604). The comparison function is one of a plurality of comparison functions configured for the command (step 606), and the comparison function has a plurality of options for comparison (step 608). One comparison option to be used to compare the first value and the second value is selected from a plurality of options for the comparison function (step 610). The comparison option is selected based on the first value and the second value. The first value and the second value are compared using the comparison option to obtain one result (step 612). The result is specific to the comparison option selected for the comparison function indicated by control of the instruction (step 614). The result is placed in the selected location and used for processing within the computing environment (step 616).

[00163] 한 예에서, 상기 복수의 옵션들은 비교를 위해 선택 가능한 특정 케이스들의 복수의 쌍들을 포함하고(단계 620), 특정 케이스들의 상기 복수의 쌍들은, 무한대(an infinity), NAN(A NOT-A-NUMBER), 및 부호 있는 영(a signed zero)을 포함하는, 특정 케이스들의 그룹으로부터 선택되는 적어도 하나의 특정 케이스를 포함하는 특정 케이스들의 적어도 한 쌍을 포함한다(단계 622).[00163] In one example, the plurality of options comprises a plurality of pairs of selectable cases (step 620), the plurality of pairs of specific cases being selected from the group consisting of an infinity, NAN And at least one particular case comprising at least one particular case selected from the group of specific cases, including a signed zero (step 622).

[00164] 예들로서, 도 6b를 참조하면, 상기 복수의 비교 함수들은 복수의 최대 함수들 및 복수의 최소 함수들 중 적어도 하나를 포함하고(단계 630); 상기 복수의 최대 함수들은 최대 비교를 수행하기 위해 복수의 최대 기법들(a plurality of maximum techniques)을 포함하며(단계 632); 그리고 상기 복수의 최저 함수들은 최저 비교를 수행하기 위해 복수의 최저 기법들(a plurality of minimum techniques)을 포함한다(단계 634).[00164] By way of example, referring to FIG. 6B, the plurality of comparison functions include at least one of a plurality of maximum functions and a plurality of minimum functions (step 630); The plurality of maximum functions include a plurality of maximum techniques to perform a maximum comparison (step 632); And the plurality of lowest functions include a plurality of minimum techniques to perform the lowest comparison (step 634).

[00165] 일 실시 예에서, 상기 제1 값 및 상기 제2 값은 상기 명령에 의해서 제공되고(단계 636), 그리고 상기 제1 값은 상기 명령의 한 오퍼랜드의 한 엘리멘트를 가지며, 그리고 상기 제2 값은 상기 명령의 다른 오퍼랜드의 대응하는 엘리멘트를 갖는다(단계 638). 예들로서, 상기 한 엘리멘트의 크기는 상기 명령의 다른 제어에 기초하여 결정된다(단계 640).[00165] In one embodiment, the first value and the second value are provided by the instruction (step 636), and the first value has one element of one operand of the instruction, The value has a corresponding element of the other operand of the instruction (step 638). By way of example, the size of the element is determined based on the other controls of the command (step 640).

[00166] 또한, 한 예에서, 상기 제1 값 및 상기 제2 값은 부동 소수점 값들이고(단계 642), 상기 한 엘리멘트의 크기는 상기 부동 소수점 값들의 부동 소수점 포맷에 의해 결정되며(depend)(단계 644), 그리고 상기 다른 제어는 선택된 부동 소수점 포맷을 표시한다(단계 646). 추가적으로, 한 예에서, 상기 제어는 상기 명령의 마스크 내에 제공된다(단계 648).[00166] In addition, in one example, the first value and the second value are floating point values (step 642) and the size of the one element is dependent on the floating point format of the floating point values Step 644), and the other control displays the selected floating point format (step 646). Additionally, in one example, the control is provided within the mask of the instruction (step 648).

[00167] 본 명세서에서 특별 케이스들을 처리하는 부동소수점 비교들을 수행하기 위한 단일의 아키텍처된 명령을 사용하기 위한 퍼실리티에 관해서 기술하였다. 이 명령은 다수의 명령들을 대체하고 컴퓨터 처리 및 성능을 향상시킨다.[00167] The facility has been described herein for the use of a single architectured instruction to perform floating-point comparisons to handle special cases. This command replaces multiple instructions and improves computer processing and performance.

[00168] 다양한 예들이 제공되었지만, 청구 범위의 정신을 벗어남이 없이 다양한 변형들이 가능하다. 예를 들어, 상기 명령에 의해서 사용되는 레지스터들 및/또는 필드들에 포함되는 값들은, 다른 실시 예들에서는, 다른 위치들, 예를 들어, 메모리 위치들에 포함될 수 있다. 많은 다른 변형들도 능하다.[00168] While various examples have been provided, various modifications are possible without departing from the scope of the claims. For example, the values contained in the registers and / or fields used by the instruction may, in other embodiments, be included in other locations, e.g., memory locations. Many other variations are also possible.

[00169] 본 발명의 하나 또는 그 이상의 실시 예들은 클라우드 컴퓨팅과 관련될 수 있다.[00169] One or more embodiments of the invention may be related to cloud computing.

[00170] 본 명세서에서 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 그러한 설명들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.[00170] Although the specification includes detailed descriptions with respect to cloud computing, it should be understood that the implementation of such descriptions is not limited to a cloud computing environment. Rather, embodiments of the invention may be implemented with any other type of computing environment now known or later developed.

[00171] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 리소스들(예를 들어, 네트워크, 네트워크 대역폭, 서버, 처리, 메모리, 저장소, 애플리케이션, 가상 머신, 및 서비스)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.[00171] Cloud computing is a rapidly evolving and rapidly evolving environment that includes configurable computing resources (eg, network, network bandwidth, server, processing, memory, etc.) that can be quickly provisioned and released with minimal management effort or interaction with a service provider Service network that enables convenient on-demand network access to shared pools of applications, storage, applications, virtual machines, and services. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[00172] 클라우드 컴퓨팅 특성들은 다음과 같다:[00172] Cloud computing characteristics are as follows:

[00173] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 기능들을 일방적으로 제공(provision)할 수 있다.[00173] On-demand self-service: A cloud consumer has the ability to perform computing functions such as server time and network storage automatically, as needed, without requiring human interaction with the service provider It can be provisioned unilaterally.

[00174] 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 랩탑, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.Broad network access: standard mechanisms that encourage use by heterogeneous thin or thick client platforms (eg, mobile phones, laptops, and PDAs) The functions accessed through the network can be used through the network.

[00175] 리소스 풀링(Resource pooling): 제공자의 컴퓨팅 리소스들은 멀티-테넌트 모델(a multi-tenant model)을 이용하여, 각기 다른 물리적 및 가상 리소스들을 요구(demand)에 따라 동적으로 할당 및 재할당하면서, 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 리소스들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다. [00175] Resource pooling: The computing resources of the provider use a multi-tenant model to dynamically allocate and reallocate different physical and virtual resources according to demand , Pooled to serve multiple consumers. Consumers generally have position independence in that they are not able to control the exact location of the provided resources, or have no knowledge of it, but can specify the location at a higher level of abstraction (e.g., country, state, or data center).

[00176] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든 구매할 수 있는 것처럼 보인다.[00176] Rapid elasticity: capabilities can be agile and resiliently provided (in some cases, automatically) to scale quickly and scale down quickly and resize quickly It can scale in. The possibilities that can be offered to consumers are often unlimited and seem to be able to buy at any time.

[00177] 측정 가능한 서비스(Measured service): 클라우드 시스템은 리소스 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 저장소, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 리소스 사용량은 모니터되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.[00177] Measured service: The cloud system automatically controls and optimizes resource usage, and at a level of abstraction appropriate to the type of service (eg, storage, processing, bandwidth, and active user account) some level of abstraction). Resource usage can be monitored, controlled, and reported, thereby providing transparency to both the provider and the user of the service being used.

[00178] 서비스 모델들(Service Models)은 다음과 같다:[00178] Service Models are as follows:

[00179] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다.[00179] Software as a Service (SaaS): The service provided to the consumer allows the use of the provider's applications running on the cloud infrastructure. Applications are accessible from multiple client devices through a thin client interface, such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including network, server, operating system, storage, or individual application performance. However, limited user-specific application configuration settings are possible as an exception.

[00180] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 저장소를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.[00180] Platform as a Service (PaaS): A service provided to a consumer is a service that enables the placement of consumer-generated or acquired applications created using programming languages and tools supported by the provider in the cloud infrastructure will be. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or repositories. However, you can control for deployed applications and, where possible, for application hosting environment configurations.

[00181] 인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 저장소, 네트워크, 및 기타 기본 컴퓨팅 리소스들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.Infrastructure as a Service (IaaS): A service provided to a consumer provides processing, storage, network, and other basic computing resources, where the consumer can deploy and execute arbitrary software The software may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but can control for limited control of the operating system, storage, deployed applications, and possibly selected networking components (e.g., host firewalls).

[00182] 배치 모델들(Deployment Models)은 다음과 같다:[00182] Deployment Models are as follows:

[00183] 사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.[00183] Private cloud: A cloud infrastructure is operated for an organization only and can be managed by the organization or a third party and can be managed on-premises or on-premises ). ≪ / RTI >

[00184] 커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.[00184] Community cloud: A cloud infrastructure supports a specific community that is shared by multiple organizations and shares interests (eg, mission, security requirements, policy, and compliance audits) Or by a third party, and may be located on-premises or on-premises.

[00185] 공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.[00185] Public cloud: A cloud infrastructure is available to the general public or a large industrial group and is owned by an organization that sells cloud services.

[00186] 하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 독립체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.[00186] Hybrid cloud: A cloud infrastructure is a hybrid configuration of two or more clouds (private, community, or public), which are unique entities, but have data and application portability. (E.g., cloud bursting for load balancing among the clouds) that allows for the availability of a standardized or proprietary technology.

[00187] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다. 하나의 그러한 노드가 도 1a에 도시한 노드(10)이다.[00187] The cloud computing environment is oriented toward services that focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes. One such node is the node 10 shown in Fig.

[00188] 컴퓨팅 노드(10)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 본 명세서에서 기술된 본 발명의 실시 예들의 사용 또는 기능의 범위를 한정하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(10)는 전술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.[00188] The computing node 10 is only one example of a suitable cloud computing node and is not intended to limit the scope of use or functionality of the embodiments of the invention described herein. In any case, the cloud computing node 10 is capable of implementing and / or performing all of the functions described above.

[00189] 이제 도 7을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54a), 데스크탑 컴퓨터(54b), 랩탑 컴퓨터(54c), 및/또는 자동차용 컴퓨터 시스템(54n)과 통신할 수 있다. 노드들(10)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 리소스들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 7에 도시된 컴퓨팅 장치들(54a-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(10)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 장치와 통신할 수 있다는 것을 이해해야 한다.[00189] Referring now to FIG. 7, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10, which may be, for example, a personal digital assistant (PDA) or mobile phone 54a, a desktop computer 54b, A laptop computer 54c, and / or an automotive computer system 54n. The nodes 10 can communicate with each other. Which may be physically or virtually grouped (not shown) in one or more networks, such as private, community, public, or hybrid clouds, or combinations thereof, as described herein. This allows the cloud computing environment 50 to provide infrastructure, platforms and / or software as a service so that the cloud consumer does not have to maintain resources on the local computing device. The types of computing devices 54a-N shown in FIG. 7 are described for illustrative purposes only and the computing nodes 10 and the cloud computing environment 50 may be any type of network and / or network addressable connections (E. G., Using a web browser) to communicate with any type of computerized device. ≪ RTI ID = 0.0 >

[00190] 이제 도 8을 참조하면, 클라우드 컴퓨팅 환경(50)(도 7)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 8에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다:[00190] Referring now to FIG. 8, a set of functional abstraction layers provided by the cloud computing environment 50 (FIG. 7) are shown. It should be understood that the components, layers, and functions illustrated in FIG. 8 are for purposes of illustration only and that preferred embodiments of the invention are not so limited. As shown, the following layers and corresponding functions are provided:

[00191] 하드웨어 및 소프트웨어 계층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 저장장치들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다. [00191] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include main frames 61; Reduced Instruction Set Computer (RISC) architecture based servers 62; Servers 63; Blade servers 64; Storage devices 65; And network and networking components 66. In some embodiments, the software components include network application server software 67 and database software 68.

[00192] 가상화 계층(70)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 저장소(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영체제들(74); 및 가상 클라이언트들(75).[00192] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71; Virtual storage 72; Virtual networks 73, including virtual private networks; Virtual applications and operating systems 74; And virtual clients (75).

[00193] 한 예에서, 관리 계층(80)은 아래에 기술하는 기능들을 제공한다. 리소스 제공(Resource provisioning)(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 리소스들 및 기타 리소스들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(82)은 리소스들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 리소스들의 소비에 대한 요금 청구를 제공한다. 한 예에서, 이 리소스들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 리소스들뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(84)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 리소스 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 계획 및 충족(planning and fulfillment)(85)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 리소스들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.[00193] In one example, the management layer 80 provides the functions described below. Resource provisioning 81 provides dynamic procurement of computing resources and other resources used to perform tasks within a cloud computing environment. Metering and Pricing 82 provides cost tracking and billing for the consumption of these resources when they are used in a cloud computing environment. In one example, these resources may include application software licenses. Security provides identification of data and other resources as well as cloud consumers and operations. A user portal 83 provides consumers and system administrators access to the cloud computing environment. Service level management 84 provides cloud computing resource allocation and management to meet the required service levels. Service Level Agreement (SLA) planning and fulfillment (85) provides pre-arrangement and procurement of cloud computing resources that meet the anticipated future requirements for SLAs.

[00194] 워크로드 계층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 명령 처리(96).[00194] The workload layer 90 provides examples of functions in which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided in this layer are: mapping and navigation 91; Software Development and Lifecycle Management (92); Deliver virtual classroom education (93); Data analysis processing 94; Transaction processing 95; And command processing (96).

[00195] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 수준에서 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 저장 매체를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.[00195] The present invention may be a computer program product at all possible technical levels of system, method, and / or integration. The computer program product may include a computer readable storage medium having computer readable program instructions for causing a processor to perform the embodiments of the present invention.

[00196] 상기 컴퓨터 판독 가능 저장 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 장치일 수 있다. 상기 컴퓨터 판독 가능 저장 매체는, 예를 들면, 전자 저장 장치, 자기 저장 장치, 광 저장 장치, 전자기 저장 장치, 반도체 저장 장치, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 저장 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 저장 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.[00196] The computer-readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing, . A non-exhaustive list of more specific examples of computer-readable storage media may include: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable and programmable read- (ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, perforation-cards, or instructions may be written to a memory, such as a memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read- A mechanically encoded device such as elevated structures in the grooves, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium refers to a computer-readable medium having stored thereon an electromagnetic wave that propagates through radio waves or other freely propagating electromagnetic waves, waveguides or other transmission media (e.g., optical pulses transmitted through a fiber optic cable) It is not interpreted as transitory signals per se, such as electrical signals transmitted through a wire.

[00197] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 저장 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 저장 장치로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 장치 내의 컴퓨터 판독 가능 저장 매체에 저장하기 위해 전송한다.[00197] The computer-readable instructions described herein may be read from a computer-readable storage medium via a communication network such as, for example, the Internet, a local area network, a wide area network, and / Or from an external storage device to an external computer. The communication network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the communication network and transmits the computer readable program instructions for storage in a computer readable storage medium in a respective computing / processing device.

[00198] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.[00198] Computer-readable program instructions for carrying out the operations of the present invention may be stored in a conventional procedural programming language such as an object-oriented programming language such as Smalltalk, C ++, or the like, and a " C " (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-of-the-art instructions, Setting data, configuration data for an integrated circuit, or source code or object code. The computer-readable program instructions may be executed entirely on a user's computer, partly on a user's computer, as a stand-alone software package, partially on a user's computer and partially on a remote computer or entirely on a remote computer or server . In the last case above, the remote computer may be connected to the user's computer through any kind of network, including a local area network (LAN) or wide area network (WAN) (Via the Internet). In some embodiments, electronic circuits, including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) The computer readable program instructions can be executed to utilize state information of the computer readable program instructions to customize the computer readable program instructions.

[00199] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 순서 예시도들 및/또는 블록도들의 각 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.[00199] Embodiments of the present invention will now be described with reference to exemplary diagrams and / or block diagrams of methods, devices (systems), and computer program products in accordance with embodiments of the present invention. It will be appreciated that each block and sequence of flowchart illustrations and / or block diagrams and / or combinations of blocks within the block diagrams may be implemented by computer readable program instructions.

[00200] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 장치들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 저장 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.[00200] These computer-readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to create a machine so that the instructions may be processed by the computer or other programmable data processing May be implemented through a processor of the apparatus to generate means for implementing the functions / operations specified in the blocks or blocks of the flowchart and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium, and the computer-readable storage medium on which the instructions may be stored may be stored on a computer, a programmable data processing apparatus, and / Blocks may be made to function in a particular manner to include an article of manufacture including instructions that implement the features / acts specified in the blocks or blocks of the block diagrams.

[00201] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.[00201] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operating steps to be performed on the computer, other programmable apparatus, And thus the instructions that execute on the computer, other programmable apparatus, or other apparatus may implement the functions / acts specified in the flowchart and / or block or blocks of the block diagrams.

[00202] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.[00202] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products in accordance with various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a portion of a module, segment, or instruction that includes one or more executable instructions for implementing the specified logical function (s). In some other implementations, the functions referred to in the block may occur differently from the order noted in the figures. For example, two blocks shown in succession may actually be executed substantially concurrently, or the two blocks may sometimes be executed in reverse order, depending on the associated function. Each block of block diagrams and / or example illustrations, and combinations of blocks within the block diagrams and / or the example illustrations, are intended to include specific features or operations that perform the specified functions or operations of the special purpose hardware and computer instructions, It should also be noted that it may be implemented by any applicable hardware-based systems.

[00203] 전술한 것에 추가하여, 본 발명의 하나 또는 그 이상의 실시 예들은 고객 환경들의 관리를 공급하는 서비스 제공자에 의해 제공, 공급, 배치, 관리, 서비스 될 수 있다. 예를 들면, 서비스 제공자는 하나 또는 그 이상의 고객들을 위해 본 발명의 하나 또는 그 이상의 실시 예들을 수행하는 컴퓨터 코드 및/또는 컴퓨터 인프라스트럭처의 제작, 유지, 지원 등을 할 수 있다. 그 대가로, 서비스 제공자는, 예를 들어, 가입제(subscription) 및/또는 수수료 약정에 따라 고객으로부터 대금을 수령할 수 있다. 추가적으로 또는 선택적으로, 서비스 제공자는 하나 또는 그 이상의 제3자들에게 광고 콘텐츠를 판매하고 대금을 수령할 수 있다.[00203] In addition to the foregoing, one or more embodiments of the present invention may be provided, provisioned, managed, and serviced by a service provider that provides management of customer environments. For example, a service provider may create, maintain, support, etc. computer code and / or computer infrastructure to perform one or more embodiments of the present invention for one or more customers. In return, the service provider may receive payment from the customer, for example, in accordance with a subscription and / or fee arrangement. Additionally or alternatively, the service provider may sell the ad content to one or more third parties and receive the payment.

[00204] 한 예에서, 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 하나의 애플리케이션이 배치될 수 있다. 한 예로서, 하나의 애플리케이션의 배치는 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 동작 가능한 컴퓨터 인프라스트럭처를 제공하는 것을 포함할 수 있다.[00204] In one example, one application may be deployed to perform one or more embodiments of the present invention. As an example, the deployment of one application may include providing a computer infrastructure operable to perform one or more embodiments of the present invention.

[00205] 추가의 예로서, 컴퓨터 판독 가능 코드를 컴퓨팅 시스템으로 통합하는 것을 포함하는 컴퓨팅 인프라스트럭처가 배치될 수 있으며, 그 컴퓨팅 시스템에서 상기 코드는 상기 컴퓨팅 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.[00205] As a further example, a computing infrastructure may be deployed that includes integrating computer readable code into a computing system in which the code is coupled to the one or more of the invention Embodiments may be practiced.

[00206] 추가 예로서, 컴퓨터 판독 가능 코드를 컴퓨터 시스템으로 통합시키는 것을 포함하는 컴퓨팅 인프라스트럭처를 통합하기 위한 프로세스가 제공될 수 있다. 상기 컴퓨터 시스템은 컴퓨터 판독 가능 매체를 포함하고, 상기 컴퓨터 시스템에서 상기 컴퓨터 매체는 본 발명의 하나 또는 그 이상의 실시 예들을 포함한다. 상기 코드는 상기 컴퓨터 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.[00206] As a further example, a process may be provided for integrating a computing infrastructure, including integrating computer readable code into a computer system. The computer system includes a computer readable medium in which the computer medium comprises one or more embodiments of the present invention. The code may be combined with the computer system to perform one or more embodiments of the invention.

[00207] 위에서 다양한 실시 예들이 기술되었지만, 이들은 단지 예시들일 뿐이다. 예를 들면, 다른 아키텍처들의 컴퓨팅 환경들이 본 발명의 하나 또는 그 이상의 실시 예들을 포함하고 사용하는 데 사용될 수 있다. 또한, 다른(different) 명령들, 명령 포맷들, 명령 필드들 및/또는 명령 값들이 사용될 수 있다. 많은 변형들이 가능하다.[00207] While various embodiments have been described above, they are merely illustrative. For example, computing environments of different architectures can be used to include and use one or more embodiments of the present invention. In addition, different instructions, command formats, command fields, and / or command values may be used. Many variations are possible.

[00208] 또한, 다른 유형의 컴퓨팅 환경들도 유익을 얻을 수 있고 사용될 수 있다. 예로서, 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템이 사용될 수 있으며, 이 시스템은 시스템 버스를 통해서 메모리 엘리먼트들에 직접적으로 또는 간접적으로 결합된 적어도 두 개의 프로세서를 포함한다. 상기 메모리 엘리먼트들은, 예를 들어 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 대용량 저장소(bulk storage), 및 코드가 실행 동안에 대용량 저장소로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 저장(temporary storage)을 제공하는 캐시 메모리를 포함한다.[00208] Other types of computing environments may also benefit and be used. By way of example, a data processing system suitable for storing and / or executing program code may be used, the system comprising at least two processors directly or indirectly coupled to memory elements via a system bus. The memory elements may include, for example, local memory used during the actual execution of the program code, bulk storage, and at least some of the program code's temporary storage to reduce the number of times code must be retrieved from the mass storage during execution. and a cache memory that provides storage.

[00209] 입력/출력 또는 I/O 장치들(키보드, 디스플레이, 포인팅 장치, DASD, 테이프, CD들, DVD들, 썸 드라이브들 및 기타 메모리 매체 등을 포함하나 이에 한정되지는 않음)은 직접 또는 중개(intervening) I/O 제어기들을 통해서 상기 시스템에 결합될 수 있다. 네트워크 어댑터 또한 상기 시스템에 결합되어 상기 데이터 처리 시스템이 중개하는 사설 또는 공공 네트워크를 통해서 기타 데이터 처리 시스템 또는 원격 포인터 또는 저장 장치에 결합되는 것을 가능하게 한다. 모뎀, 케이블 모뎀, 및 이더넷 카드는 이용 가능한 유형의 네트워크 어댑터들의 단지 일부 예이다.Input / output or I / O devices (including but not limited to keyboards, displays, pointing devices, DASDs, tapes, CDs, DVDs, thumb drives and other memory media, etc.) And may be coupled to the system through intervening I / O controllers. A network adapter may also be coupled to the system to enable it to be coupled to other data processing systems or remote pointers or storage devices via a private or public network mediated by the data processing system. Modems, cable modems, and ethernet cards are just some examples of the types of network adapters available.

[00210] 본 명세서 내에 사용된 용어들은 단지 본 발명의 특정 실시 예들을 기술할 목적으로 사용된 것이지 한정하려는 의도로 사용된 것은 아니다. 본 명세서에서 사용할 때, 단수 형태는 그 컨텍스트에서 그렇지 않은 것으로 명시되어 있지 않으면, 복수 형태도 또한 포함할 의도로 기술된 것이다. 또한, "포함한다" 및/또는 "포함하는" 이라는 말들은 본 명세서에서 사용될 때, 언급되는 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하는 것은 아니라는 것을 이해할 수 있을 것이다.[00210] The terminology used herein is for the purpose of describing particular embodiments of the invention only, and is not intended to be limiting. When used in this specification, a singular form is also intended to include plural forms, unless the context clearly dictates otherwise. Also, the words " comprises " and / or " comprising " when used in this specification specify the presence of stated features, integers, steps, operations, elements, and / Steps, operations, elements, components, and / or groups of elements, integers, steps, operations, elements, components, and / or groups.

[00211] 이하의 청구항들에서, 대응하는 구조들(structures), 재료들(materials), 동작들(acts), 및 모든 수단의 등가물들 또는 단계 플러스 기능 엘리먼트들은, 만일 있다면, 구체적으로 청구되는 다른 청구된 엘리먼트들과 함께 그 기능을 수행하기 위한 구조, 재료, 또는 동작을 포함할 의도가 있다. 본 발명의 하나 또는 그 이상의 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 많은 수정들 및 변형들이 있을 수 있다는 것을 알 수 있다. 본 발명의 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 수정들을 갖는 다양한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.[00211] In the following claims, corresponding structures, materials, acts, and equivalents of all means or step-plus functional elements, if any, There is an intention to include a structure, material, or action for performing the function with the claimed elements. The description of one or more embodiments of the invention is provided for the purposes of illustration and description, and is not intended to be exhaustive or to limit the invention to the precise form disclosed. It will be appreciated by those of ordinary skill in the art that many modifications and variations may be made. The embodiments of the invention are described in order to best explain the various features and practical applications and to enable those of ordinary skill in the art to understand the various embodiments with various modifications as are suited to the particular use contemplated , Were selected and described.

Claims (12)

컴퓨터 구현 방법(a computer-implemented method)에 있어서, 상기 방법은 실행될 명령을 획득하는 단계(600)를 포함하고 - 상기 명령은 제1 값과 제2 값의 비교(a comparison)를 수행함(600)-, 상기 방법은:
상기 명령을 실행하는 단계(602)에 의해서 특징을 가지며, 상기 명령은, 적어도, 다양한 최대 함수들(various maximum functions) 또는 다양한 최소 함수들(various minimum functions) 을 지원하는 단일의 아키텍처된 명령(a single architected instruction)이고, 상기 다양한 최대 함수들은 적어도 복수의 다음: 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, Java Math.Min(), C-Style Min Macro, C++ Algorithm.min(), fmin(), IEEE MinNumMag, 절대 값들의 Java Math.Min(), 절대 값들의 C-Style Min Macro, 절대 값들의 C++ Algorithm.min(), 및 절대 값들의 fmin() 을 포함하고, 상기 명령을 실행하는 단계(executing)는:
상기 명령의 하나의 제어(309, 329,359)에 기초하여, 수행되는 비교 함수(a compare function)를 결정하는 단계(determining) - 상기 비교 함수는 상기 명령을 위해 구성된 상기 다양한 최대 함수들 또는 상기 다양한 최소 함수들 중 하나이고, 상기 비교 함수는 상기 비교 함수에 특정한(particular) 복수의 비교 옵션들(a plurality of compare options)을 가짐-;
상기 비교 함수를 위한 상기 복수의 비교 옵션들로부터, 비교될 상기 제1값과 상기 제2 값에 대응하는 하나의 비교 옵션(a compare option)을 선택하는 단계(selecting)(610);
하나의 결과(a result)를 획득하기 위해 상기 비교 옵션을 사용하여 상기 제1 값과 상기 제2 값을 비교하는 단계(comparing)(612)- 상기 결과는 상기 명령의 제어에 의해서 표시된 상기 비교 함수를 위해 선택된 상기 비교 옵션에 대해 특정됨(specific)(612)-; 및
선택된 위치(in a select location)에 상기 결과를 배치하는 단계(placing)- 상기 결과는 상기 컴퓨팅 환경 내의 처리에 사용됨(616)-를 포함하는
컴퓨터 구현 방법.
In a computer-implemented method, the method includes obtaining (600) a command to be executed, the command performing (600) a comparison of a first value and a second value, -, said method comprising:
(602) of executing the instruction, wherein the instruction comprises at least a single architectural instruction (a) that supports various maximum functions or various minimum functions a single architected instruction), and the various maximum functions include at least a plurality of the following: IEEE MaxNum, Java Math.Max (), C-Style Max Macro, C ++ Algorithm.max (), fmax (), Math.Max (), C-Style Max Macro of absolute values, C ++ Algorithm.max () of absolute values and fmax () of absolute values, C-Style Min Macro, C ++ Algorithm.min (), fmin (), IEEE MinNumMag, Java Math.Min () of absolute values, C-Style Min Macro of absolute values, C ++ Algorithm.min (), and fmin () of absolute values, and executing the command includes:
Determining a compare function to be performed based on one control of the instruction (309, 329, 359), the comparison function determining whether the various maximum functions configured for the instruction or the various minimum Functions, the comparison function having a plurality of comparison options that are specific to the comparison function;
Selecting (610) a comparison option (a compare option) corresponding to the first value and the second value to be compared, from the plurality of comparison options for the comparison function;
Comparing (612) the first value and the second value using the comparison option to obtain a result, the result being compared to the comparison function indicated by the control of the instruction (612) specific to the comparison option selected for the comparison option; And
Placing the result at a selected location, the result being used for processing in the computing environment (616)
Computer implemented method.
제 1 항에 있어서, 상기 복수의 비교 옵션들 중 각각의 비교 옵션은 한 쌍의 케이스들(a pair of cases)을 포함하고, 상기 한 쌍의 케이스들은 다음:-∞, +∞, -FN, +FN, -0, +0, QNAN, SNAN,-여기서 FN은 유한의 수임- 중 적어도 2개를 포함하는
컴퓨터 구현 방법.
2. The method of claim 1, wherein each of the plurality of comparison options comprises a pair of cases, the pair of cases having the following: -∞, + ∞, -FN, + FN, -0, +0, QNAN, SNAN, where FN is a finite number
Computer implemented method.
제 1 항에 있어서, 상기 복수의 비교 옵션들 중 적어도 하나의 비교 옵션은 한 쌍의 케이스들(a pair of cases)을 포함하고, 상기 한 쌍의 케이스들은 다음:-∞, +∞, -0, +0, QNAN, SNAN 중 적어도 2개를 포함하는(622)
컴퓨터 구현 방법.
2. The method of claim 1, wherein at least one of the plurality of comparison options comprises a pair of cases, the pair of cases comprising: -∞, + ∞, -0 , ≪ / RTI > +0, QNAN, SNAN (622)
Computer implemented method.
제 1 항에 있어서, 상기 단일의 아키텍처된 명령은 상기 다양한 최대 함수들을 지원 하고, 상기 다양한 최대 함수들은 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()을 포함하는 컴퓨터 구현 방법.
2. The method of claim 1, wherein the single architectural instruction supports the various maximum functions, and the various maximum functions include IEEE MaxNum, Java Math.Max (), C-Style Max Macro, C ++ Algorithm.max (), IEEE MaxNumMag, Java Math.Max () of absolute values, C-Style Max Macro of absolute values, C ++ Algorithm.max () of absolute values, and fmax () of absolute values.
제 1 항에 있어서, 상기 단일의 아키텍처된 명령은 상기 다양한 최소 함수들을 지원 하고, 상기 다양한 최소 함수들은 IEEE MinNum, Java Math.Min(), C-Style Min Macro, C++ Algorithm.min(), fmin(), IEEE MinNumMag, 절대 값들의 Java Math.Min(), 절대 값들의 C-Style Min Macro, 절대 값들의 C++ Algorithm.min(), 및 절대 값들의 fmin()을 포함하는
컴퓨터 구현 방법.
2. The method of claim 1, wherein the single architectured instruction supports the various minima functions, and the various minima are selected from IEEE MinNum, Java Math.Min (), C-Style Min Macro, C ++ Algorithm.min (), IEEE MinNumMag, Java Math.Min () of absolute values, C-Style Min Macro of absolute values, C ++ Algorithm.min () of absolute values, and fmin
Computer implemented method.
제 1 항에 있어서, 상기 단일의 아키텍처된 명령은 상기 다양한 최소 함수들 및
상기 다양한 최소 함수들 모두를 포함하는
컴퓨터 구현 방법.
2. The method of claim 1, wherein the single architectural instruction further comprises:
It should be noted that all of the various minimum functions
Computer implemented method.
제 1 항에 있어서, 상기 제1 값과 상기 제2 값은 상기 명령에 의해서 제공되고(636), 상기 제1 값은 상기 명령의 한 오퍼랜드의 한 엘리멘트를 가지며 상기 제2 값은 상기 명령의 다른 오퍼랜드의 대응하는 엘리멘트를 가지는
컴퓨터 구현 방법.
The method of claim 1, wherein the first value and the second value are provided by the instruction (636), the first value having one element of one operand of the instruction, With the corresponding element of the operand
Computer implemented method.
제 7 항에 있어서, 상기 한 엘리멘트의 크기는 상기 명령의 다른 제어에 기초하여 결정되는(640, 312, 332, 362)
컴퓨터 구현 방법.
8. The method of claim 7, wherein the size of the element is determined based on another control of the command (640, 312, 332, 362)
Computer implemented method.
제 8 항에 있어서,
상기 제1 값과 상기 제2 값은 부동 소수점 값들(floating point values)이고(642), 상기 한 엘리멘트의 크기는 상기 부동 소수점 값들의 부동 소수점 포맷에 따라 결정되며(depend)(644), 상기 다른 제어는 선택된 부동 소수점 포맷을 표시하는(646)
컴퓨터 구현 방법.
9. The method of claim 8,
The first value and the second value are floating point values 642 and the size of the element is dependent on the floating point format of the floating point values 644, The control displays the selected floating point format (646)
Computer implemented method.
제 1 항에 있어서, 상기 제어는 상기 명령의 마스크 내에 제공되는(309, 329, 359)
컴퓨터 구현 방법.
2. The method of claim 1, wherein the control is provided in a mask of the command (309, 329, 359)
Computer implemented method.
제 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 또는 11항에 따른 방법의 모든 단계들을 실행하도록 구성된 수단들을 포함하는
시스템.
Comprising means configured to perform all steps of the method according to the first, second, third, fourth, fifth, sixth, seventh, eighth, ninth,
system.
제 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 또는 11항에 따른 방법들의 모든 단계들을 실행하는 명령들을 포함하는 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 컴퓨터 시스템 상에서 실행되는
컴퓨터 프로그램.
11. A computer program comprising instructions for executing all steps of the methods according to claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or 11,
Computer program.
KR1020197012987A 2016-10-27 2017-10-17 Floating point instruction with selectable comparison attributes KR102202149B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/335,914 US9785435B1 (en) 2016-10-27 2016-10-27 Floating point instruction with selectable comparison attributes
US15/335,914 2016-10-27
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
KR20190061056A true KR20190061056A (en) 2019-06-04
KR102202149B1 KR102202149B1 (en) 2021-01-14

Family

ID=59982134

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197012987A KR102202149B1 (en) 2016-10-27 2017-10-17 Floating point instruction with selectable comparison attributes

Country Status (13)

Country Link
US (1) US9785435B1 (en)
EP (1) EP3532921B1 (en)
JP (1) JP6916874B2 (en)
KR (1) KR102202149B1 (en)
CN (1) CN109891387B (en)
DK (1) DK3532921T3 (en)
LT (1) LT3532921T (en)
PT (1) PT3532921T (en)
RU (1) RU2729452C1 (en)
SI (1) SI3532921T1 (en)
TW (1) TWI656477B (en)
WO (1) WO2018077671A1 (en)
ZA (1) ZA201903112B (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI693550B (en) * 2018-12-06 2020-05-11 中華電信股份有限公司 Backup method for supporting multi-dsik architecture of virtual machine
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
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140098099A (en) * 2011-12-29 2014-08-07 인터내셔널 비지네스 머신즈 코포레이션 Convert from zoned format to decimal floating point format
KR20140107339A (en) * 2012-03-15 2014-09-04 인터내셔널 비지네스 머신즈 코포레이션 Vector find element not equal instruction

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4683546A (en) * 1984-01-03 1987-07-28 Motorola, Inc. Floating point condition code generation
JPH0338724A (en) * 1989-07-06 1991-02-19 Fujitsu Ltd Information processor capable of carrying out plural floating point type arithmetic operation
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
US6408376B1 (en) * 1999-10-25 2002-06-18 Intel Corporation Method and apparatus for instruction set architecture to perform primary and shadow digital signal processing sub-instructions simultaneously
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
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 (en) * 2014-05-28 2017-02-02 Общество с ограниченной ответственностью "ПАВЛИН Технологии" Method of arbitrary vector scalar multiplication on loaded into device vector coefficient and optional summation with scalar coefficient
US9916130B2 (en) 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140098099A (en) * 2011-12-29 2014-08-07 인터내셔널 비지네스 머신즈 코포레이션 Convert from zoned format to decimal floating point format
KR20140107339A (en) * 2012-03-15 2014-09-04 인터내셔널 비지네스 머신즈 코포레이션 Vector find element not equal instruction

Also Published As

Publication number Publication date
US9785435B1 (en) 2017-10-10
WO2018077671A1 (en) 2018-05-03
TWI656477B (en) 2019-04-11
JP2020504345A (en) 2020-02-06
TW201820119A (en) 2018-06-01
ZA201903112B (en) 2021-04-28
SI3532921T1 (en) 2021-04-30
DK3532921T3 (en) 2021-03-29
CN109891387B (en) 2023-03-21
JP6916874B2 (en) 2021-08-11
EP3532921B1 (en) 2021-02-24
EP3532921A1 (en) 2019-09-04
KR102202149B1 (en) 2021-01-14
PT3532921T (en) 2021-03-30
LT3532921T (en) 2021-04-12
CN109891387A (en) 2019-06-14
RU2729452C1 (en) 2020-08-06

Similar Documents

Publication Publication Date Title
KR102202149B1 (en) Floating point instruction with selectable comparison attributes
US10698688B2 (en) Efficient quantization of compare results
US10346134B2 (en) Perform sign operation decimal instruction
KR20230121152A (en) Convert and divide commands to decimal scale and hexadecimal floating point
KR20190086502A (en) Temporarily Forbidden Restricted Storage Operand Request Processing
KR20230122163A (en) Hexadecimal floating point to scaled decimal vector conversion command
KR102178288B1 (en) Decimal shift and division command
KR102178290B1 (en) Decimal multiply and shift command
KR20230124088A (en) Vector Pack and Unpack Commands
US10990390B2 (en) Decimal load immediate instruction
KR20230131935A (en) Hexadecimal floating point multiplication and addition instructions

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant