KR102178288B1 - 십진수 시프트 및 나누기 명령 - Google Patents
십진수 시프트 및 나누기 명령 Download PDFInfo
- Publication number
- KR102178288B1 KR102178288B1 KR1020197009417A KR20197009417A KR102178288B1 KR 102178288 B1 KR102178288 B1 KR 102178288B1 KR 1020197009417 A KR1020197009417 A KR 1020197009417A KR 20197009417 A KR20197009417 A KR 20197009417A KR 102178288 B1 KR102178288 B1 KR 102178288B1
- Authority
- KR
- South Korea
- Prior art keywords
- digits
- quotient
- result
- instruction
- register
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/4915—Multiplying; Dividing
- G06F7/4917—Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/003—Reformatting, i.e. changing the format of data representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Calculators And Similar Devices (AREA)
Abstract
시프트 및 나누기 연산을 수행하는 명령이 실행된다. 상기 실행하는 단계는 하나의 피제수를 제공하기 위해 선택된 양 만큼 명시된 방향으로 하나의 값을 시프트 하는 단계를 포함하고, 상기 선택된 양은 사용자-정의된다. 상기 피제수는 하나의 몫을 획득하기 위해 제수에 의해서 나누어진다. 상기 몫의 적어도 하나의 서브세트가 하나의 결과로서 선택된다. 상기 결과는 컴퓨팅 환경 내의 처리에 사용된다.
Description
[0001] 본 발명의 하나 또는 그 이상의 실시 예들은 일반적으로 컴퓨팅 환경 내에서의 처리에 관한 것으로, 특히 그러한 처리를 개선하는 것에 관한 것이다.
[0002] 컴퓨팅 환경의 프로세서 내에서 실행되는 애플리케이션들은 프로세서의 동작을 제어한다. 상기 애플리케이션들은 프로세서에 명령을 전달하도록 설계된 프로그래밍 언어들을 사용하여 작성된다. 다양한 유형의 프로그래밍 언어들이 있으며 각 언어는 데이터를 표시하기 위해 하나 또는 그 이상의 유형의 인코딩들(encodings)을 사용할 수 있다.
[0003] 예를 들어, 스케일된 십진수 정수들(scaled decimal integers)(또한 스케일된 이진화 십진수/스케일된BCD로도 알려진)은, DB2데이터베이스 관리 시스템들에서 뿐만 아니라, 많은 COBOL 및 PL/I 프로그램들에서의 공동 데이터 유형(a common data type)이다. 스케일된 BCD 수는 포맷 디스크립터(n.k)가 더해진 BCD수(a BCD number plus a format descriptor (n.k))이며, 여기서 BCD수는 소수점 전에 n디지트를, 소수점 후에 k디지트(즉, k프랙션 디지트)를 갖는 것으로, 또는 10-k 가 곱해지는 십진수 정수를 갖는 것으로 해석된다.
[0004] 동일 k- 파라미터를 갖는 스케일 된 BCD 데이터에서 더하기 및 빼기를 수행하는 것은 곧바로(straight forward) 진행할 수 있다. 왜냐하면 데이터가 올바르게 정렬되어 있고(correctly aligned) 그 결과는 동일 수의 프랙션 디지트들(fraction digits)을 갖기 때문이다. 나누기는 더 복잡하다. 왜냐하면 두 숫자들의 정수 나누기가 몫(the quotient )의 정수 부분을 전달하지만, k 프랙션 디지트들은 누락되기 때문이다.
[0005] 예를 들어, 만일 A = 4444.44, B = 3333.33, Q = 0001.333 이라면
[0006] 보통의 정수 나누기는 Q = 1 의 몫은 전달하지만 프랙션 디지트들은 전달하지 않는다. 또한, BCD 나누기 연산을 수행하기 위한 종래의 코드는 상당히 복잡 할 수 있으며, 연산들의 긴 시퀀스를 필요로 할 수 있다.
[0007] 컴퓨팅 환경에서 처리 를 용이하게 하기 위한 컴퓨터 프로그램 제품의 제공을 통해 종래 기술의 단점들이 극복되고 부가적인 장점들이 제공된다. 상기 컴퓨터 프로그램 제품은 방법을 수행하기 위해 처리 회로에 의해 판독 가능하고 처리 회로에 의한 실행을 위한 명령들을 저장하는 저장 매체를 포함한다. 상기 방법은, 예를 들어, 실행을 위한 명령을 획득하는 단계 를 포함하고, 상기 명령은 시프트 및 나누기 연산을 수행한다. 상기 명령은 실행되고, 실행하는 단계는 하나의 피제수(a dividend)를 제공하기 위해 선택된 양 만큼(by a selected amount) 명시된 방향으로(in a specified direction) 하나의 값(a value)을 시프트 하는 단계를 포함한다. 상기 선택된 양은 사용자-정의된다. 상기 피제수는 하나의 몫을 획득하기 위해 제수(a divisor)에 의해서 나누어진다. 상기 몫의 적어도 하나의 서브세트(at least a subset of the quotient)가 하나의 결과로서 선택된다. 상기 결과는 선택된 위치에 배치되고, 컴퓨팅 환경 내의 처리에 사용된다. 스케일된 BCD 나누기 연산을 수행하기 위해 단일의 명령을 사용하면, 긴 명령 시퀀스를 제거할 수 있고, 페치될, 디코드될, 그리고 실행될 명령들의 수를 감소시킬 수 있어서 성능을 개선한다.
[0008] 한 예에서, 상기 값은 십진수 정수(a decimal integer)이고, 상기 몫의 적어도 하나의 서브세트는 상기 몫의 선택된 수의 디지트들(a selected number of digits of the quotient)이다. 상기 선택된 수의 디지트들은 다수의 정수 디지트들(a number of integer digits )과 다수의 프랙션 디지트들(a number of fraction digits)을 포함한다.
[0009]또한, 한 실시 예에서, 상기 실행하는 단계(executing)는 상기 결과에 대한 부호를 결정하는 단계(determining) 및 상기 선택된 위치에 상기 부호를 포함하는 단계(including)를 포함한다.
[0010] 더 나아가서, 한 실시 예에서, 상기 실행하는 단계는 상기 명령의 하나 또는 그 이상의 필드들로부터 상기 값을 획득하는 단계; 상기 값의 유효성을 검사하는 단계; 및 상기 검사하는 단계가 상기 값이 유효하다고 표시하는 것에 기초하여, 상기 시프트하는 것을 수행하는 단계를 포함한다.
[0011] 예들에서, 상기 명시된 방향은 왼쪽(left)이고; 상기 선택된 양은 상기 명령의 하나의 필드로부터 획득되며; 그리고 상기 선택된 위치는 하나의 레지스터이고, 상기 레지스터는 상기 명령의 적어도 하나의 필드를 사용하여 명시된다. 상기 적어도 하나의 필드는 레지스터 번호를 명시하는 레지스터 필드와 상기 레지스터 번호에 추가될 확장 값을 명시하는 확장 필드를 포함한다.
[0012] 본 발명의 하나 또는 그 이상의 실시 예들에 관련된 방법들 및 시스템들은 또한 본 명세서에 설명되고 청구범위에 기재된다. 또한, 본 발명의 하나 또는 그 이상의 실시 예들에 관련된 서비스들도 또한 본 명세서에 설명되고 청구범위에 기재 된다.
[0013] 추가적인 특징들 및 장점들은 본 명세서에 기술 된 기술을 통해 실현된다. 다른 실시 예들도 본 명세서에 상세히 설명되고 청구범위의 일부로서 고려된다.
[0014] 본 발명의 하나 또는 그 이상의 실시 예들이 본 명세서의 말미의 청구항들에서 예들로서 특별하게 설명되고 명확하게 청구된다. 본 발명의 하나 또는 그 이상의 실시 예들의 전술한 목적, 특징들 및 장점들은 첨부 된 도면들과 함께 설명하는 다음의 상세한 설명으로부터 명백하다.
도 1a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 일 예를 도시한다;
도 1b는, 본 발명의 한 실시 예에 따라, 도 1a의 프로세서의 추가적인 세부 사항들을 도시한다;
도 2a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다;
도 2b는도2a의 메모리의 추가적인 상세 사항들을 도시한다;
도 3a는, 본 발명의 한 실시 예에 따라, 벡터 십진수 시프트 및 나누기 명령(a Vector Shift and Divide Decimal instruction)의 일 예를 도시한다;
도 3b, 본 발명의 한 실시 예에 따라, 도 3a의 벡터 십진수 시프트 및 나누기 명령의 직접 필드(an immediate field )의 일 실시 예를 도시한다;
도 3c는, 본 발명의 한 실시 예에 따라, 도 3a 의 벡터 십진수 시프트 및 나누기 명령의 마스크 필드의 일 실시 예를 도시한다;
도 4는, 본 발명의 일 실시 예에 따라, 벡터 십진수 시프트 및 나누기 명령의 실행의 블록도의 일 예를 도시한다;
도 5a는, BCD 나누기 연산의 일 예를 도시한다.
도 5b는, BCD 나누기 연산의 다른 예를 도시한다.
도 5c-5d는, 본 발명의 일 실시 예에 따라, BCD 시프트 및 나누기 연산의 예들을 도시한다.
도 6a-6b는, 본 발명의 일 실시 예에 따라, 벡터 십진수 시프트 및 나누기 명령의 실행을 포함하는, 컴퓨팅 환경에서의 처리를 용이하게 하는 것의 일 예를 도시한다;
도 7은 클라우드 컴퓨팅 환경의 일 실시 예를 도시한다; 그리고
도 8은 추상화 모델 계층(abstraction model layers)의 일 예를 도시한다.
도 1a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 일 예를 도시한다;
도 1b는, 본 발명의 한 실시 예에 따라, 도 1a의 프로세서의 추가적인 세부 사항들을 도시한다;
도 2a는 본 발명의 하나 또는 그 이상의 실시 예들을 구체화하고 사용하기 위한 컴퓨팅 환경의 다른 예를 도시한다;
도 2b는도2a의 메모리의 추가적인 상세 사항들을 도시한다;
도 3a는, 본 발명의 한 실시 예에 따라, 벡터 십진수 시프트 및 나누기 명령(a Vector Shift and Divide Decimal instruction)의 일 예를 도시한다;
도 3b, 본 발명의 한 실시 예에 따라, 도 3a의 벡터 십진수 시프트 및 나누기 명령의 직접 필드(an immediate field )의 일 실시 예를 도시한다;
도 3c는, 본 발명의 한 실시 예에 따라, 도 3a 의 벡터 십진수 시프트 및 나누기 명령의 마스크 필드의 일 실시 예를 도시한다;
도 4는, 본 발명의 일 실시 예에 따라, 벡터 십진수 시프트 및 나누기 명령의 실행의 블록도의 일 예를 도시한다;
도 5a는, BCD 나누기 연산의 일 예를 도시한다.
도 5b는, BCD 나누기 연산의 다른 예를 도시한다.
도 5c-5d는, 본 발명의 일 실시 예에 따라, BCD 시프트 및 나누기 연산의 예들을 도시한다.
도 6a-6b는, 본 발명의 일 실시 예에 따라, 벡터 십진수 시프트 및 나누기 명령의 실행을 포함하는, 컴퓨팅 환경에서의 처리를 용이하게 하는 것의 일 예를 도시한다;
도 7은 클라우드 컴퓨팅 환경의 일 실시 예를 도시한다; 그리고
도 8은 추상화 모델 계층(abstraction model layers)의 일 예를 도시한다.
[0015] 본 발명의 하나 또는 그 이상의 실시 예들은 시프트 및 나누기 연산을 수행하기 위해 긴 명령 시퀀스를 하나의 단일 명령(예를 들어, 하드웨어/소프트웨어 인터페이스에서 단일의 아키텍처된 머신 명령)으로 대체하는 기능을 제공함으로써 컴퓨팅 환경 내의 처리를 개선하는 것과 관련된다. 일 예에서, 상기 명령은, 벡터 십진수 시프트 및 나누기 명령(a Vector Shift and Divide Decimal instruction)이라 하며, 피제수(a dividend)를 제공하기 위해 사용자-정의된 양 만큼 입력 값을 시프트하고 그 다음에 몫(a quotient)을 제공하기 위해 제수(a divisor)에 의해서 상기 피제수를 나누기 한다. 상기 몫의 적어도 일부가 결과로서 제공된다.
[0016] 상기 명령은, 예를 들어, 정수 디지트들과 k 프랙션 디지트들을 갖는 몫을 제공하는 십진수 정수 나누기 연산(a decimal integer divide operation)을 수행하며, 여기서 k는 상기 명령에 대한 입력 파라미터이다. k는 얼마나 많은 프랙션 디지트들이 계산되는 지를 명시한다.
[0017] 본 발명의 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 일 실시 예가 도 1a를을 참조하여 기술된다. 한 예에서, 컴퓨팅 환경은, 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는, z/아키텍처에 기초한다. z/아키텍처의 한 실시 예는, 2015년 3월 발표된 IBM 공보 No. SA22-7832-10의 " z/아키텍처 작동 원리"에 기술되어 있고, 이 공보는 전체로서 본 명세서에 참조로 포함된다. Z/ARCHITECTURE 는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.
[0018] 또 다른 예에서, 컴퓨팅 환경은 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션에 의해 공급되는 파우어 아키텍처(Power Architecture)를 기반으로 한다. 파우어 아키텍처의 한 실시 예는 2015 년 4 월 9 일 발표된 인터내셔널 비즈니스 머신즈 코포레이션"Power ISA ™ Version 2.07B "에 설명되어 있고, 이 공보는 전체로서 본 명세서에 참조로 포함된다. POWER ARCHITECTURE는 미국, 뉴욕주 아몽크에 소재하는 인터내셔널 비즈니스 머신즈 코포레이션의 등록 상표이다.
[0019] 상기 컴퓨팅 환경은 또한 Intel x86 아키텍처를 포함하되, 이에 국한되지 않는 다른 아키텍처를 기반으로 할 수도 있다. 다른 예들도 또한 있다.
[0020] 도 1a에 도시 된 바와 같이, 컴퓨팅 환경 (100)은, 예를 들어, 노드 (10)을 포함하고, 노드 (10)은, 예를 들어, 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들과 동작 가능한, 컴퓨터 시스템/서버(12)를 갖는다. 컴퓨터 시스템/서버(12)와 함께 사용하기에 적합 할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예로는 퍼스널 컴퓨터(PC) 시스템들, 서버 컴퓨터 시스템들, 씬(thin) 클라이언트들, 씩(thick) 클라이언트들, 핸드헬드 또는 랩탑 장치들, 멀티프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그램 가능 가전 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인 프레임 컴퓨터 시스템들 및, 상기 시스템들 또는 장치들 중 어느 하나를 포함하는 분산 형 클라우드 컴퓨팅 환경 등을 포함하지만 이에 한정되는 것은 아니다.
[0021] 컴퓨터 시스템/서버(12)는, 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능 명령들의 일반적인 관점에서 설명 될 수 있다. 일반적으로, 프로그램 모듈들은 특정 작업들(particular tasks)을 수행하거나 특정 추상 데이터 유형들(particular abstract data types)을 구현하는 루틴들, 프로그램들, 객체들, 컴포넨트들, 논리들, 데이터 구조들 등을 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 통신 네트워크를 통해 링크 된 원격 처리 장치들에 의해 작업들이 수행되는 분산형 클라우드 컴퓨팅 환경들을 포함하는 많은 컴퓨팅 환경들에서 실시될 수 있지만, 이에 국한되지는 않는다. 분산형 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 장치들을 포함하는 로컬 및 원격 컴퓨터 시스템 저장 매체 모두에 위치 할 수 있다.
[0022] 도 1a에 도시 된 바와 같이, 컴퓨터 시스템/서버(12)는 범용 컴퓨팅 장치의 형태로 도시되어 있다. 컴퓨터 시스템/서버(12)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 프로세싱 유닛들(16), 시스템 메모리(28), 및 시스템 메모리(28)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(16)에 연결시키는 버스(18)를 포함 할 수 있지만, 이에 한정되는 것은 아니다.
[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) 버스가 포함되지만, 이에 한정되는 것은 아니다.
[0024] 컴퓨터 시스템/서버 (12)는 일반적으로 다양한 컴퓨터 시스템 판독 가능 매체를 포함한다. 이러한 매체는 컴퓨터 시스템/서버 (12)에 의해 액세스 가능한 모든 이용 가능한 매체 일 수 있으며, 휘발성(volatile) 및 비 휘발성 매체, 착탈식(removable) 및 비착탈식 매체를 모두 포함한다.
[0025] 시스템 메모리(28)는 RAM(30) 및 / 또는 캐시 메모리(32)와 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함 할 수 있다. 컴퓨터 시스템/서버(12)는 다른 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예시로서, 저장 시스템(34)은 비착탈식, 비휘발성 자기 매체(도시되지 않았고 일반적으로 "하드 드라이브"로 지칭 됨)로부터의 판독 및 이들로의 기록을 위해 제공 될 수 있다. 도시되지는 않았지만, 착탈식, 비휘발성 자기 디스크(예를 들어, "플로피 디스크")로부터의 판독 및 그 자기 디스크에의 기록을 위한 자기 디스크 드라이브, 및, CD-ROM, DVD-ROM 또는 다른 광 매체와 같은, 착탈식, 비휘발성 광 디스크로부터의 판독 또는 그 광 디스크에의 기록을 위한 광 디스크 드라이브가 제공 될 수 있다. 그러한 경우들에서, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(18)에 접속 될 수 있다. 후술하는 바와 같이, 메모리(28)는 본 발명의 실시 예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트 (예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함 할 수 있다.
[0026] 프로그램 모듈들(42)의 세트 (적어도 하나)를 갖는, 프로그램/유틸리티 (40)는 메모리(28)에 저장될 수 있으며, 이 들의 예에는 운영 체제뿐만 아니라, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터가 포함되나, 이에 한정되지는 않는다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 다른 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합의 각각은 네트워킹 환경의 구현을 포함 할 수 있다. 프로그램 모듈들(42)은 일반적으로 본 명세서에서 설명 된 바와 같은 본 발명의 실시 예들의 기능들 및/또는 방법들을 수행한다.
[0027] 컴퓨터 시스템/서버(12)는 또한, 키보드, 포인팅 장치, 디스플레이(24) 등과 같은, 하나 또는 그 이상의 외부 장치들(14)과 통신 할 수 있다. 이들 외부 장치들(14)에는 사용자가 컴퓨터 시스템/서버(12)와 상호 작용할 수 있게 하는 하나 또는 그 이상의 장치들; 및/또는 컴퓨터 시스템/서버(12)가 하나 또는 그 이상의 다른 컴퓨팅 장치와 통신 할 수 있게 하는 모든 장치들(예를 들어, 네트워크 카드, 모뎀 등)이 포함될 수 있다. 통신은 입력/출력(I/O) 인터페이스들 (22)을 통해서 일어난다. 또한, 컴퓨터 시스템/서버 (12)는 네트워크 어댑터 (20)를 통해서 근거리 통신망 (LAN), 일반 광역 통신망 (WAN) 및/또는 공중 네트워크(예를 들어, 인터넷)과 같은 하나 또는 그 이상의 네트워크들과 통신 할 수 있다. 도시 된 바와 같이, 네트워크 어댑터(20)는 버스(18)를 통해 컴퓨터 시스템/서버(12)의 다른 구성 요소들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넨트들이 컴퓨터 시스템/서버(12)와 함께 사용될 수 있음을 이해하여야 한다. 이들의 예에는 마이크로 코드, 장치 드라이버들, 리던던트 프로세싱 유닛들, 외장형 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이브 저장 장치들이 포함되지만 이에 한정되지는 않는다.
[0028] 예를 들어, 프로세서(16)는 명령들을 실행하는데 사용되는 복수의 기능 컴포넌트들을 포함한다. 도 1b에 도시 된 바와 같이, 이들 기능 컴포넌트들은, 예를 들어, 실행될 명령들을 페치하기 위한 명령 페치 컴포넌트(120); 페치된 명령들을 디코드 하고 디코된 명령들의 오퍼랜드들을 획득하기 위한 명령 디코드 유닛(122); 디코된 명령들을 실행하기 위한 명령 실행 컴포넌트들(124); 필요한 경우, 명령 실행을 위해 메모리에 액세스하는 메모리 액세스 컴포넌트(126); 및 실행 된 명령들의 결과를 제공하기 위한 라이트 백 컴포넌트(130)를 포함한다. 이들 컴포넌트들 중 하나 또는 그 이상은, 본 발명의 일 실시 예에 따라, 이하에서 더 설명되는 바와 같이, 십진수 시프트 및 나누기 연산(136)을 수행하기 위해 사용될 수 있다.
[0029] 프로세서(16)는 또한, 일 실시 예에서, 하나 또는 그 이상의 기능 컴포넌트들에 의해 사용될 하나 또는 그 이상의 레지스터들(140)을 포함한다.
[0030] 하나 또는 그 이상의 실시 예들을 구현하고 사용하는 컴퓨팅 환경의 다른 실시 예가 도 2a를 참조하여 설명된다. 이 예에서, 컴퓨팅 환경(200)은, 예컨대, 네이티브 중앙 처리 장치(CPU)(202), 메모리(204), 및, 예를 들어, 하나 또는 그 이상의 버스들(208) 및/또는 다른 접속들을 통해, 서로 연결된 하나 또는 그 이상의 입출력 장치들 및/또는 인터페이스들(206)을 포함한다. 예로서, 컴퓨팅 환경(200)은 미국 뉴욕 주 아몽크에 있는 인터내셔널 비즈니스 머신즈 코포레이션이 공급하는 PowerPC 프로세서 또는 pSeries 서버를 포함 할 수 있으며; 미국 캘리포니아 주 팔로 알토에 있는 Hewlett Packard Co.가 공급하는 Intel Itanium II 프로세서가 장착 된 HP Superdome; 및/또는 인터내셔널 비즈니스 머신즈 코포레이션, Hewlett Packard, Intel, Oracle 또는 기타 회사들이 공급하는 아키텍처들에 기초하는 기타 머신들이 포함된다.
[0031] 네이티브 중앙 처리 장치(202)는 하나 또는 그 이상의 범용 레지스터들 및/또는 환경 내에서 처리 중에 사용되는 하나 또는 그 이상의 특수 목적 레지스터들과 같은 하나 또는 그 이상의 네이티브 레지스터들(210)을 포함한다. 이들 레지스터들은 특정 시점에서 환경 상태를 나타내는 정보를 포함한다.
[0032] 더 나아가서, 네이티브 중앙 처리 장치(202)는 메모리(204)에 저장된 명령들 및 코드를 실행한다. 하나의 특정 예에서, 상기 중앙 처리 장치는 메모리 (204)에 저장된 에뮬레이터 코드(212)를 실행한다. 이 코드는 한 아키텍처에서 구성된 컴퓨팅 환경이 다른 아키텍처를 에뮬레이트 할 수 있게 해 준다. 예를 들어, 에뮬레이터 코드(212)는 z/아키텍처가 아닌 아키텍처들에 기초한 머신들, 예를 들어 PowerPC 프로세서들, pSeries 서버들, HP Superdome 서버들, 또는 다른 서버들이 z/아키텍처를 에뮬레이트 하여 z/아키텍처에 기초하여 개발된 소프트웨어 및 명령들을 실행할 수 있게 해 준다.
[0033] 에뮬레이터 코드(212)에 관한 더 상세한 설명은 도 2b 를 참조하여 기술된다. 메모리(204)에 저장된 게스트 명령들(250)은 네이티브 CPU(202)의 아키텍쳐가 아닌 아키텍쳐에서 실행되도록 개발 된 소프트웨어 명령들(예를 들어, 머신 명령들에 관련되는)을 포함한다. 예를 들어, 게스트 명령들(250)은 z/아키텍처 프로세서 상에서 실행하도록 설계되었지만, 예를 들어 Intel Itanium II 프로세서인, 네이티브 CPU(202)상에서 에뮬레이트 될 수 있다. 한 예에서, 에뮬레이터 코드(212)는 메모리(204)로부터 하나 또는 그 이상의 게스트 명령들 (250)을 획득하고 획득 된 명령들에 대한 로컬 버퍼링을 선택적으로 제공하기 위한 명령 페치 루틴(252)을 포함한다. 또한, 획득 된 게스트 명령의 유형을 결정하고 상기 게스트 명령을 하나 또는 그 이상의 대응하는 네이티브 명령들 (256)로 변환하기 위한 명령 변환 루틴(254)을 포함한다. 이 변환은, 예를 들어, 상기 게스트 명령에 의해 수행 될 기능을 식별하는 것과 그 기능을 수행하기 위한 네이티브 명령(들)을 선택하는 것을 포함한다.
[0034] 또한, 에뮬레이터(212)는 네이티브 명령들이 실행되도록 하는 에뮬레이션 제어 루틴(260)을 포함한다. 에뮬레이션 제어 루틴(260)은 네이티브 CPU(202)로 하여금 하나 또는 그 이상의 이전에 획득 된 게스트 명령들을 에뮬레이트하는 네이티브 명령들의 루틴을 실행하게 하고, 그러한 실행의 종료 시에, 다음 게스트 명령 또는 일 군의 게스트 명령들을 획득하는 것을 에뮬레이트 하기 위해 상기 명령 페치 루틴에 제어를 반환(return)하게 할 수 있다. 네이티브 명령들(256)의 실행은 메모리(204)로부터 레지스터로 데이터를 로드하는 단계; 레지스터로부터 데이터를 메모리에 다시 저장하는 단계; 또는 변환 루틴에 의해 결정되는 어떤 유형의 산술 또는 논리 연산을 수행하는 단계를 포함 할 수 있다.
[0035] 각 루틴은, 예를 들어, 소프트웨어로 구현되고, 상기 소프트웨어는 메모리에 저장되며, 네이티브 중앙 처리 장치(202)에 의해 실행된다. 다른 예들에서, 하나 또는 그 이상의 루틴들 또는 연산들은 펌웨어, 하드웨어, 소프트웨어 또는 이들의 조합으로 구현된다. 에뮬레이트된 프로세서의 레지스터들은 상기 네이티브 CPU의 레지스터들(210)을 사용하여 또는 메모리(204) 내의 위치들을 사용하여 에뮬레이트 될 수 있다. 실시 예들에서, 게스트 명령들(250), 네이티브 명령들 (256) 및 에뮬레이터 코드(212)는 동일한 메모리 내에 상주 하거나 또는 다른 메모리들 사이에서 분산 될 수 있다.
[0036] 본 명세서에서 사용 된 바와 같이, 펌웨어는, 예를 들어, 프로세서의 마이크로 코드, 밀리 코드 및 / 또는 매크로 코드를 포함한다. 펌웨어는, 예를 들어, 하드웨어 레벨 명령들(the hardware-level instructions) 및 / 또는 상위 레벨 머신 코드의 구현에 사용 되는 데이터 구조(data structures used in implementation of higher level machine code)를 포함한다. 일 실시 예에서, 펌웨어는, 예를 들어, 소유권 있는 코드(proprietary code)를 포함하며, 이 소유권 있는 코드는 통상적으로 마이크로 코드로 전달되며, 하부의 하드웨어(the underlying hardware)에 특정된 신뢰 소프트웨어 또는 마이크로 코드를 포함하고 시스템 하드웨어에 대한 운영 체제 액세스를 제어한다.
[0037] 획득되고, 변환되고 실행되는 게스트 명령 (250)은, 예를 들어, 벡터 십진수 시프트 및 나누기 명령(a Vector Shift and Divide Decimal instruction)이며, 이하에서 이를 설명한다. 상기 명령은, 하나의 아키텍처(예: z/Architecture)를 가지고 있고, 메모리에서 페치되어, 다른 아키텍처 (예: PowerPC, pSeries, Intel 등)의 네이티브 명령들(256)의 시퀀스로 변환되어 표현된다. 그런 다음 이들 네이티브 명령들은 실행된다.
[0038] 벡터 십진수 시프트 및 나누기 명령의 필드들 및 적어도 하나의 프로세서에 의한 실행(네이티브 또는 에뮬레이된 시스템 어디에서던지)을 포함하는, 상기 명령의 한 예에 관한 상세한 설명이 이하에서 기술된다, 본 발명의 한 실시 예에 따라, 상기 벡터 십진수 시프트 및 나누기 명령은 하나의 피제수(a dividend)를 제공하기 위해 사용자-정의된 양 만큼(by a user-defined amount) 입력 값(a input value)을 시프트 하고 그 다음 하나의 몫(a quotient)을 생성하기 위해 제수(a divisor)에 의해서 상기 피제수를 나누기 한다. 상기 몫의 적어도 일부가 하나의 결과(a result)로서 제공된다. 이 결과는 정수 디지트들과 k프랙션 디지트들을 포함하고, 여기서 k는 시프트 양과 같다(equal). 이 것은 BCD 나누기 연산을 수행하기 위한 긴 명령 시퀀스를 단일의 명령(예를 들어, 단일의 아키텍처된 머신 명령)으로 대체함으로써 컴퓨터 성능을 개선한다. 따라서, 본 발명의 실시 예들은 컴퓨터 기술과 컴퓨터 처리의 개선에 밀접하게 관련되어 있다.
[0039] 일 실시 예에서, 벡터 십진수 시프트 및 나누기 명령은, 예를 들어, 1 에서 16 범위의 엘리멘트들을 갖는 고정된 크기의 벡터들(fixed sized vectors ranging from one to sixteen elements)을 제공하는, 벡터 퍼실리티의 일부(part of a vector facility)이다. 각 벡터는 상기 퍼실리티에서 정의 된 벡터 명령들에 의해 연산되는 데이터를 포함한다. 일 실시 예에서, 만일 벡터가 다수의 엘리먼트들로 구성되면, 각 엘리먼트는 다른 엘리먼트들와 병렬로 처리된다. 명령 완료는 모든 엘리멘트들의 처리가 완료 될 때까지 발생되지 않는다. 다른 실시 예들에서, 상기 엘리멘트들은 부분적으로 병렬 및/또는 순차적으로 처리된다.
[0040] 벡터 명령들은 z/Architecture, Power Architecture, x86, IA-32, IA-64 등을 포함하지만, 이들에 국한하지 않는, 다양한 아키텍처들의 일부로 구현 될 수 있다. 여기에 설명된 실시 예는 z/Architecture 용이지만, 본 명세서에 설명 된 벡터 명령 및 하나 또는 그 이상의 다른 실시 예들은 많은 다른 아키텍처들에 기초 할 수 있다. z/Architecture는 한 가지 예일 뿐이다.
[0041] 상기 벡터 퍼실리티가 z/Architecture의 일부로서 구현되는 일 실시 예에서, 벡터 레지스터들 및 명령들을 사용하기 위해, 명시된 제어 레지스터 (예를 들어, 제어 레지스터 0) 내의 벡터 인에이블먼트 제어(a vector enablement control) 및 레지스터 제어는, 예를 들어, 1로 세트된다. 만일 상기 벡터 퍼실리티가 설치되어 있고 벡터 명령이 상기 인에이블먼트 제어들이 세트됨이 없이 실행되면, 데이터 예외(a data exception )가 인지된다(recognized). 만일 상기 벡터 퍼실리티가 설치되어 있지 않고 벡터 명령이 실행되면, 연산 예외(an operation exception )가 인지된다.
[0042] 일 실시 예에서, 벡터 레지스터들은 32 개이고 다른 유형의 레지스터들이 상기 벡터 레지스터들의 사분면(a quadrant )에 매핑 될 수 있다. 예를 들어, 하나의 레지스터 파일은 32 개의 벡터 레지스터들을 포함 할 수 있고 각 레지스터는 128 비트들의 길이를 가질 수 있다. 길이가 64 비트들 인, 16 개의 부동 소수점 레지스터들은 상기 벡터 레지스터들을 오버레이(overlay) 할 수 있다. 따라서, 예로서, 부동 소수점 레지스터 2가 수정되면, 벡터 레지스터 2도 또한 수정된다. 다른 유형의 레지스터들에 대한 다른 매핑들도 또한 가능하다.
[0043] 벡터 데이터는, 예를 들어, 다른 데이터 포맷들과 동일한 왼쪽에서 오른쪽 순서로 (in the same left-to-right sequence )저장소(storage )에 저장된다. 0-7의 번호가 붙은 데이터 포맷의 비트들은 저장소 내의 최좌측 (가장 낮은 번호가 매겨진) 바이트 위치의 바이트를 구성하고, 비트들 8-15는 다음 순차 위치의 바이트를 형성한다. 또 다른 예에서, 벡터 데이터는, 오른쪽에서 왼쪽과 같은, 다른 순서로 저장소에 저장될 수 있다.
[0044] 벡터 십진수 시프트 및 나누기 명령(a Vector Shift and Divide Decimal instruction)의 일 예가 도 3a-3c를 참조하여 설명된다. 도시 된 바와 같이, 상기 명령은 복수의 필드들을 갖고, 하나의 필드는 그와 연관된 첨자 번호를 가질 수 있다. 상기 명령의 필드와 연관된 첨자 번호는 상기 필드가 지정하는 오퍼랜드를 나타낸다. 예를 들어, 벡터 레지스터 V1과 연관된 첨자 숫자는 1은 V1내의 레지스터가 제1 오퍼랜드를 포함하고 있음을 나타낸다. 하나의 레지스터 오퍼랜드는 하나의 레지스터 길이를 가지며, 예를 들어 128 비트이다.
[0045] 도 3a를 참조하면, 일 실시 예에서, 벡터 십진수 시프트 및 나누기 명령(a Vector Shift and Divide Decimal instruction)(300)은 벡터 십진수 시프트 및 나누기 연산을 표시하는 오피 코드 필드(302a, 302b); 제1벡터 레지스터 (V1)을 지정하기 위해 사용 되는 제1벡터 레지스터 필드(304); 제2벡터 레지스터 (V2)을 지정하기 위해 사용 되는 제2벡터 레지스터 필드(306); 제3벡터 레지스터 (V3)을 지정하기 위해 사용 되는 제3벡터 레지스터 필드(308);마스크 필드(M5)(310); 직접 필드 (I4)(312); 및 레지스터 확장 비트 (register extension bit; RXB) 필드(314)를 포함하며, 이들 각각은 후술 될 것이다. 일 실시 예에서, 상기 필드들은 서로 분리되어 있고 서로 독립적이다. 그러나, 다른 실시 예들에서는 하나 또는 그 이상의 필드들이 결합 될 수 있다. 이들 필드들에 대한 자세한 내용은 아래에서 설명된다.
[0046] 벡터 레지스터 필드(304)는 제 1 오퍼랜드를 저장할 벡터 레지스터를 표시하기 위해 사용되고, 상기 제 1 오퍼랜드는 하나의 피제수(a dividend)를 획득하기 위해 제2오퍼랜드를 시프트 하고, 하나의 몫(a quotient)을 획득하기 위해 제3 오퍼랜드(제수)에 의해서 상기 피제수를 나누기 하며, 그리고 상기 몫의 적어도 일부를 하나의 결과(a result)로서 선택한 것의 결과이다. 상기 제 2오퍼랜드는 벡터 레지스터 필드(306)를 사용하여 명시된 벡터 레지스터 내에 포함되고 상기 제3 오퍼랜드(제수)는 벡터 레지스터 필드(308)을 사용하여 명시된 벡터 레지스터 내에 포함된다. 일 예 에서, 벡터 레지스터 필드들(304), (306), (308) 각각은 상기 벡터 레지스터를 지정하기 위해 RXB 필드(314)와 함께 사용된다.
[0047] 예를 들어, RXB 필드(314)는 벡터 레지스터 지정된 오퍼랜드의 최상위 비트를 포함한다. 상기 명령에 의해 명시되지 않은 레지스터 지정들을 위한 비트들은 유보되고(reserved) 0으로 세트된다. 상기 최상위 비트는, 예를 들어, 5 비트 벡터 레지스터 지정을 생성하기 위해 상기 벡터 레지스터 필드의 4 비트 레지스터 지정의 왼쪽에 연결된다(concatenated).
[0048] 한 예에서, RXB 필드는 4 비트들(예를 들어, 비트들 0-3)을 포함하고, 상기 비트들은 다음과 같이 정의된다:
0 - 상기 명령의 제1 벡터 레지스터 지정(예를 들어, 비트들 8-11에서)을 위한 최상위 비트.
1 - 만일 있다면, 상기 명령의 제2 벡터 레지스터 지정(예를 들어, 비트들 12-15에서)을 위한 최상위 비트.
2 - 만일 있다면, 상기 명령의 제3벡터 레지스터 지정(예를 들어, 비트들 16-19에서)을 위한 최상위 비트.
3 - 만일 있다면, 상기 명령의 제4 벡터 레지스터 지정(예를 들어, 비트들 32-35에서)을 위한 최상위 비트.
[0049] 각각의 비트는, 예를 들면, 상기 레지스터 번호에 따른 어셈블러에 의해서, 0 또는 1로 세트된다. 예를 들어, 레지스터들 0-15에 대해서, 상기 비트는 0으로 세트되고, 레지스터들 16-31에 대해서, 상기 비트는 1로 세트된다.
[0050] 일 실시 예에서, 각 RXB 비트는 하나 또는 그 이상의 벡터 레지스터들을 포함하는 명령 내의 특정 위치에 대한 확장 비트이다. 예를 들어, RXB의 비트0은, 예를 들어, V1에 할당된, 위치 8-11에 대한 확장 비트이다. 특히, 벡터 레지스터들에 있어서, 오퍼랜드를 포함하는 레지스터는, 예를 들어, 최상위 비트로 자신의 대응 레지스터 확장 비트(RXB)를 추가한 레지스터 필드의 4비트 필드를 사용하여 명시된다. 예를 들어, 만일 4 비트 필드가 0110이고 확장 비트가 0 인 경우, 5 비트 필드 00110은 레지스터 번호 6을 표시한다. 다른 실시 예에서, RXB 필드는 추가 비트들을 포함하고, 하나 이상의 비트가 각 벡터 또는 위치에 대해 확장으로서 사용된다.
[0051] 직접(I4)필드(312)는 시프트 제어를 포함하는 제4 오퍼랜드를 명시한다. 예를 들어, I4필드(312)는, 도3b에 도시 된 바와 같이, 다음을 포함한다:
* 유보됨(Reserved): 비트들0-2는 유보되고 0들을 포함한다. 한 예에서, 그렇지 않으면, 명세 예외(a specification exception)가 인지된다.
* 시프트 양(SHAMT)(330): 비트들3-7은 상기 피제수를 형성하기 위해 상기 제2 오퍼랜드가, 예를 들어, 외쪽으로, 시프트되는 디지트들의 수를 명시하는 부호 없는 이진수를 포함한다. 부호의 위치는 상기 시프트에 참여하지 않는다. 영들은 비어지는 디지트 위치들(the vacated digit positions)을 위해 공급된다.
[0052] 한 예에서, M5 필드(310)는, 도 3c에서 도시한 바와 같이, 다음 제어들을 포함한다:
* 강제 오퍼랜드 2 양(P2)(Force Operand 2 Positive (P2))(340): 비트0이 1이면, 제2 오퍼랜드 부호는 양의 부호로 취급되고 유효성에 대해서는 검사되지 않는다. 비트0이 0이면, 제2 오퍼랜드 부호는 연산에 사용되고 유효성에 대해서 검사된다.
* 강제 오퍼랜드 3 양(P3)(Force Operand 3 Positive (P3))(342): 비트1이 1이면, 제3 오퍼랜드 부호는 양의 부호로 취급되고 유효성에 대해서 검사되지 않는다. 비트1이 0이면, 제3 오퍼랜드 부호는 연산에 사용되고 유효성에 대해서 검사된다.
* 강제 오퍼랜드 1 양(P1)(Force Operand 1 Positive (P1))(344): 비트2가 1이면, 제1오퍼랜드 내 배치된 결과의 부호는 강제로 양이되고 1111의 부호코드가 사용된다. 비트2가 0이면, 제1오퍼랜드 내 배치된 결과의 부호는 상기 몫의 부호를 위해 선택된 부호코드이다.
* 조건 코드 세트(CS)(Condition Code Set (CS))(346): 비트3이 0이면, 조건 코드는 세트되지 않고 변함이 없다. 비트3이 1이면, 조건 코드는 아래의 최종 조건 코드 섹션(the resulting condition code section below)에서 명시된 대로 세트된다.
[0053] 최종 조건 코드(Resulting Condition Code):
CS비트가 1이면, 조건 코드는, 한 예에서, 다음과 같이 세트된다:
0 결과는 0 ; 오버플로 없음
1 결과는 0보다 적음; 오버플로 없음
2 결과는 0보다 큼; 오버플로 없음
3 오버플로
[0054] 다양한 필드들과 레지스터들이 설명되었지만, 본 발명의 하나 또는 그 이상의 실시 예들은 다른, 추가적인, 또는 더 적은 수의 필드들 또는 레지스터들을 사용하거나, 또는 다른 크기의 필드들 또는 레지스터들 등을 사용할 수 있다. 많은 변형들도 가능하다. 예를 들어, 묵시적 레지스터들(implied registers)이 명확히 명시된 레지스터들 또는 상기 명령의 필드들 대신에 사용될 수 있다. 또한, 벡터 레지스터들이 아닌 레지스터들이 사용될 수 있다. 다시 말하면, 다른 변형들도 또한 가능하다.
[0055] 연산에서, 제4 오퍼랜드에 명시된 디지트들 수 만큼 왼쪽으로 시프트된, 제2 오퍼랜드(피제수)는 제3 오퍼랜드(제수)에 의해서 나누어지고, 선택된 수의 디지트들, 예를 들어, 상기 몫의 최우측 31디지트들은 제1오퍼랜드 위치에 배치된다. 상기 오퍼랜드들과 결과는, 예를 들어, 부호 있는 팩된 십진수 포맷으로(in the signed-packed decimal format) 표시된다.
[0056] 일 예에서, 부호있는 팩된 십진수 포맷에서, 각 바이트는, 십진수 디지트의 오른쪽에 부호(S)를 포함하는, 최우측 바이트를 제외하고, 두 개의 십진수 디지트들(D)을 포함한다. 십진수 산술 연산(decimal arithmetic )은 오퍼랜드들로 수행되고 부호있는 팩된 십진수 포맷으로 결과들을 생성한다.
[0057] 상기 제 2 및 제 3 오퍼랜드들의 부호 코드들은 상기 강제 오퍼랜드 2 양 (P2) 제어 및 상기 강제 오퍼랜드 3 양 (P3) 제어 각각에 의한 연산에서 사용되기 위해 수정 될 수있다.
[0058] 일 예에서, 모든 디지트 코드들은 유효성에 대해서 검사된다. 상기 부호 코드들은 상기 강제 오퍼랜드 2 양 (P2) 또는 강제 오퍼랜드 3 양 (P3) 제어들에 의해서 오버라이드되지 않는 한 유효성에 대해서 검사된다
[0059] 만일 상기 제1 오퍼랜드가 상기 몫의 모든 최좌측 0이 아닌 디지트들(all leftmost nonzero digits )을 포함할 수 없다면, 십진수 오버플로(a decimal overflow)가 발생한다. 상기 연산은 완료되고 상기 결과는 상기 오버플로 디지트들을 무시함으로써 획득된다. 만일 상기 조건 코드 세트(CS)플래그가 1이면, 조건 코드 3이 세트된다. 만일 프로그램 마스크 내, 예를 들어, 프로그램 상태 워드의 일부로서(as part of the program status word) 포함된, 십진수 오버플로 제어가 1이면, 십진수 오버플로에 대한 프로그램 인터럽트가 발생한다.
[0060] 상기 몫의 최우측 31디지트들이 0이 아니고(non-zero) 상기 강제 오퍼랜드 1 양(P1) 제어가 0 이면, 상기 피제수 및 제수 부호들로부터 대수 규칙들(rules of algebra )이 상기 결과의 부호를 결정하고 하나의 선택된 부호 코드가 사용된다. 상기 몫의 최우측 31디지트들이 0이고 상기 P1 제어는 0 이면, 상기 결과의 부호는 양이 되고 선택된 부호 코드는 1100이 된다. 상기 P1 제어가 1이면, 상기 결과의 부호는 양이 되고 부호 코드는 1111이 된다.
[0061] 만일 상기 제수가 0이고 사용된 상기 제수 부호 코드가 유효하면, 십진수 나누기 예외(a decimal divide exception )가 인지된다. 이 것은 0에 의한 0의 나누기 경우를 포함한다. 사용된 상기 제수 부호 코드는 상기 강제 오퍼랜드 3 양(P3) 비트가 0일 때 는 제3 오퍼랜드 부호 코드이고, 상기 강제 오퍼랜드 3 양(P3) 비트가 1일 때는 양의 부호 코드이다.
[0062] 상기 명령의 연산에 관한 더 자세한 사항들은 도 4를 참조하여 설명한다. 일 예에서, 도 4의 논리는 벡터 십진수 시프트 및 나누기 명령을 획득하고 실행하는 것에 기초하여 적어도 하나의 프로세서에 의해서 수행된다.
[0063] 도 4참조하면, 초기에, 상기 제2 오퍼랜드와 상기 제3오퍼랜드(제수)는, 단계(400)에서, 상기 명령의 V2 및 V3 필드들을 사용하여 지정된 레지스터들로부터 획득된다. 일 예시에서, 상기 제 2 및 제 3 오퍼랜드들의 디지트들은 유효성에 대해 검사된다. 특히, 일 예에서, 모든 디지트 코드들이 유효성에 대해 검사된다. 만일, 질의단계(402)에서, 하나 또는 그 이상의 디지트들이 유효하지 않다면, 일 예에서 처리는 완료되고 오류가 표시 될 수 있다. 그러나, 만일 상기 제2 및 제3 오퍼랜드들의 디지트들이 유효하면, 처리는 시프트 양을 획득하는 단계(404)로 진행한다. 한 예에서, 상기 시프트 양은 사용자-정의되고 상기 명령에 의해 제공된다(예를 들어, I4 (312)에서).
[0064] 상기 제 2 오퍼랜드는, 단계(406)에서, 피제수를 획득하기 위한 시프트 양만큼 명시된 방향(예를 들어, 왼쪽)으로 시프트 된다. 상기 피제수는, 단계(408)에서, 하나의 몫을 획득하기 위해 상기 제3 오퍼랜드에 의해서 나누어진다. 상기 몫의 선택된 범위의 디지트들(예를 들어, 최우측 31디지트들)은, 단계(410)에서, 결과로서 선택되고, 상기 결과는 제1 오퍼랜드 위치(예를 들면, V1 을 사용하여 지정된 레지스터)에 배치된다.
[0065] 더 나아가, 상기 결과의 부호는, 단계(412)에서, 결정된다. 예를 들어, 상기 몫의 최우측 31디지트들이 0이 아니고(non-zero) 상기 강제 오퍼랜드 1양 (P1) 제어가 0이면, 상기 피제수 및 제수 부호들로부터의 대수 규칙들이 상기 결과의 부호를 결정하고 선택된 부호 코드가 사용된다. 상기 몫의 최우측 31디지트들이 0이고 상기 P1 제어가 0 이면, 상기 결과의 부호는 양이 되고 선택된 부호 코드는 1100이다. 상기 P1 제어가 1이면, 상기 결과의 부호는 양이 되고 부호 코드는 1111이다.
[0066] 만일 상기 제수가 0이고 사용된 상기 제수 부호 코드가 유효하면, 십진수 나누기 예외(a decimal divide exception )가 인지된다. 이 것은 0에 의한 0의 나누기 경우를 포함한다. 사용된 상기 제수 부호 코드는 상기 강제 오퍼랜드 3 양(P3) 비트가 0일 때는 제3 오퍼랜드 부호 코드이고, 상기 강제 오퍼랜드 3 양(P3) 비트가 1일 때는 양의 부호 코드이다.
[0067] 상기 결정된 부호의 부호 코드는, 단계(414)에서, 상기 제1 오퍼랜드 위치(예를 들어, 오른쪽에) 배치된다. 이로서 상기 시프트 및 나누기 명령의 일 실시 예의 처리가 완료된다.
[0068] 추가의 실시 예에서, 상기 시프트는 오른쪽이 될 수 있고/또는 상기 시프트의 방향은 상기 명령의 제어에 의해서 선택가능 할 수 있다. 다른 변형들도 가능하다.
[0069] 십진수 정수 나누기들(decimal integer divides)에 관한 더 상세한 설명은 아래에서 제공된다.
[0070] 한 이전의 십진수 나누기 명령, DP는 B에 의해서 나누어지는 A에 대하여, A = Q*B+R 가 되도록, 몫 Q와 나머지 R을 계산한다. A는 31-디지트 길이까지 가질 수 있지만, B는 기껏해야 15디지트들을 가질 수 있고, A보다 적은 디지트들을 가져야만 했다. 상기 제수의 길이의 제한 때문에, 심각한 제한이 상기 유형의 나누기들에 부여되었다.
[0071] 다른 십진수 명령, VMP에서, A 및 B 모두는 31 디지트들까지 전폭(a full width of up to 31 digits)을 가질 수 있다; 이는 상기 DP 명령의 길이 제한들을 완화한다. 그러나, 2개의 명령들 모두에서 오직 정수 부분만 제공되고; 프랙션 디지트들은 제공되지 않는다.
[0072] 스케일된 BCD 나누기(n.k)에서는, 상기 몫의 정수 부분들에 더하여 k프랙션 디지트들을 획득하기 위해 다수의 나누기 연산들을 갖는 긴 루틴들이 사용된다.
[0073] 위에서 설명한 내용에 관해서, 도 5a-5b를 참조하여 더 상세하게 설명한다.
[0074] 도 5a에 도시한 바와 같이, 2 개의 전폭 BCD 수들 (502a, 502b) (예를 들어, 31 디지트들)의 정수 나누기(500)을 수행 할 때, 몫(504)은 기껏해야, 예를 들어, 31비트들을 갖는 BCD정수이고; 프랙션 디지트들은 제공되지 않는다.
[0075] 스케일된 BCD 나누기 연산에서는, 31 디지트들의 입력은 "n" 정수 디지트들(소수점 전)과 "k" 프랙션 디지트들(소수점 후)로 해석된다. 원하는 몫은 일반적으로 오퍼랜드들과 동일 수의 프랙션 디지트들을 갖는다.
[0076] 도 5b에서 도시한 바와 같은, 예: Q(7.3) = A(4.3)/B(4.3)를 살펴본다.
[0077] 도 5b와 아래의 예들은 강화된 VDP조차 상기 몫의 정수 부분만을 제공하고, 원하는 프랙션 디지트들은 제공하지 않음을 나타낸다.
[0078] 몇가지 예를 들면 다음과 같다:
[0079] 상기 몫의 원하는 수의 프랙션 디지트들을 획득하기 위해서는, 여분의 처리가 필요하다.
[0080] (n.k)를 갖는 스케일된 BCD 나누기에 있어서, 다음의 경우들을 생각해보자:
1. n+k+k < 32이면:“A”는 나누기 연산 전에 k만큼 시프트되어, A'= A*10k가 획득될 수 있다. 그 다음 k프랙션 디지트들을 갖는 원하는 몫이 A'(n+k,0) 및 B(n.k)의 정규 십진수 나누기에 의해서 획득될 수 있다.
2. n+k+k > 31이면:“A” 는 k만큼 오른쪽으로 시프트될 수 없는데, 최대 수의 디지트들을 초과할 것이기 때문이다. B가 단지 반의 길이(half length)를 가질 수 있는 지(DP) 또는 B가 완전한 길이(full length)를 가질 수 있는 지(VDP)에 따라 결과는 달라진다.
[0081] 반의 길이 이고, k<15인 경우에는
DP: A= Q1*B + R1이고―몫과 나머지를 계산한다. 여기서 R1<B이며 기껏해야 15디지트들을 갖는다는 것에 주목해야 한다
SRP: R'= R1<<k이면
DP: R'= Q2*B + R2이고 ―몫의 나머지가 필요하지 않게 계산한다
Q=(Q1<<k) + Q2가 된다.
[0082] B가 31디지트인 경우에, 상기 앨고리즘은 작동하지 않으며, 따라서, 상기 오퍼랜드들은 십진 부동 소수점(DFP)으로 변환되어, 부동 소수점 나누기가 수행되고, 원하는 가수 디지트들(the desired mantissa digits)이 추출된다(extracted). 또한, DFP의 구현에 따라서, 이 것으로 여전히 충분하지 않을 수 있으며, 더 복잡한 기법이 사용될 수도 있다.
[0083] 따라서, 어느 경우이던지, 스케일된 BCD 나누기를 수행하는 데에는 긴 루틴이 필요하다.
[0084] 본 발명의 일 실시 에에 따라, 스케일된 BCD나누기를 수행하기 위한 긴 명령 시퀀스는 십진수 시프트 및 나누기 연산을 수행하는 단일의 명령(예를 들어, 아키텍처된 하드웨어 명령과 같은 아키텍처된 명령)에 의해서 대체된다.
[0085] 도 5c에 도시 된 바와 같은, 일 실시 예에서, 벡터 십진수 시프트 및 나누기 명령은, 본 발명의 일 실시 예에 따라, 폭, sh(550)을 명시한다. A 오퍼랜드(552)는 sh 디지트들만큼 왼쪽으로 시프트되어 A'= A << sh = A*10sh가 획득된다. 그 다음 A는 B 오퍼랜드(554)에 의해서 나누어져서 정수 몫 Q(556)이 획득된다. 일 예에서, 최우측의 31디지트들이 결과(558)로서 선택된다 . 몫 Q가 31유효 디지트들 이상을 가지면 오버플로(560)가 검출된다.
[0086] 도5d에서 도시 된 바와 같이, 이것은 또한, A/B의 몫(570)의 정수 및 프랙션 부분을 계산하고, 결과로서 sh 프랙션 디지트들(572) 및 31-sh정수 디지트들(574)을 선택하는 것으로 해석 될 수 있다.
[0087] 본 발명의 일 실시 예에 따라 제공되는 상기 명령은 폭 (n.k)을 갖는 스케일 된 BCD 나누기 연산을 sh = k를 갖는 단일의 시프트 및 나누기 명령으로 전환하는데, 이 때문에 긴 명령 시퀀스를 단일 명령으로 대체할 수 있어서, 스케일 된 BCD 나누기 연산을 수행하는 속도를 상당히 증가시키고, 컴퓨팅 환경 내에서 처리를 개선시킨다. 상기 명령은 또한 임의의(즉, 고정되지 않은 가변적인) 스케일링 k를 갖는 스케일 된 나누기가 제공되는 경우에 있어서 더 많은 유연성을 제공한다. 상기 명령은 몫의 정수 및 프랙션 디지트들의 비트 세트의 임의의 정의를 제공하며 상기 임의의 비트 세트에 기초한 오버플로 검사를 수행한다. 이러한 연산들은 많은 유형의 애플리케이션들 및 컴퓨팅 환경의 다른 처리에 의해 사용될 수있다.
[0088] 시프트 및 나누기 연산을 수행하기 위한 명령을 실행하는 단계를 포함하는, 컴퓨팅 환경 내에서의 처리를 용이하게 하는 것에 관련된 더 자세한 사항들은 도 6a-6b을 참조하여 설명한다.
[0089] 도 6a를 참조하면, 시프트 및 나누기 연산을 수행하기위한 명령 (예를 들어, 아키텍처된 머신 명령)이, 단계 (600)에서, 획득되고, 단계 (602)에서, 적어도 하나의 프로세서에 의해서 실행된다. 상기 실행하는 단계는, 예를 들어, 하나의 피제수를 제공하기 위해 선택된 양 만큼 명시된 방향으로 하나의 값을 시프트하는 단계를 포함하고, 상기 선택된 양은 사용자-정의된다 (단계 604). 상기 피제수는 하나의 몫을 획득하기 위해 하나의 제수에 의해서 나누어진다(단계 606). 상기 몫의 적어도 하나의 서브세트(예를 들어, 최우측 31디지트들)가 하나의 결과로서 선택된다(단계608). 상기 결과는 선택된 위치에 배치되고, 상기 결과는 컴퓨팅 환경 내의 처리에서 사용된다(단계610).
[0090] 한 예로서, 상기 값은 십진수 정수이고(단계612), 상기 몫의 적어도 하나의 서브세트는 상기 몫의 선택된 수의 디지트들이고, 상기 선택된 수의 디지트들은, 다수의 정수 디지트들과 프랙션 디지트들을 포함한다(단계614),
[0091] 추가의 실시 예에서, 상기 실행하는 단계는 상기 결과에 대한 부호를 결정하는 단계(단계616); 및 상기 선택된 위치에 상기 부호를 포함하는 단계를 더 포함한다(단계618). 한 예에서, 상기 부호를 결정하는 단계는 상기 명령에 의해 제공된 하나의 제어를 검사하는 단계를 포함하고(단계620); 상기 제어는, 예를 들어, 상기 명령의 하나의 마스크 필드 내에 제공된다(단계622).
[0092] 또한, 도 6b를 참조하면, 일 예에서, 상기 실행하는 단계는 상기 명령의 하나 또는 그 이상의 필드들로부터 상기 값을 획득하는 단계(단계624); 상기 값의 유효성을 검사하는 단계(단계626); 및 상기 검사하는 단계가 상기 값이 유효함을 표시하는 것에 기초하여, 시프트 하는 것을 수행하는 단계를 포함한다(628).
[0093] 예들로서, 상기 명시된 방향은 왼쪽이고(단계630); 상기 선택된 양은 상기 명령의 필드로부터 획득되며(단계632), 그리고 상기 선택된 위치는 하나의 레지스터이고, 상기 레지스터는 상기 명령의 적어도 한 필드를 사용하여 명시된다(단계634). 상기 적어도 하나의 필드는 레지스터 번호를 명시하는 레지스터 필드와 상기 레지스터 번호에 추가될 확장 값을 명시하는 확장 필드를 포함한다(단계636).
[0094] 본 명세서에서 BCD 나누기를 수행하기 위한 단일의 아키텍처된 명령을 사용하기 위한 퍼실리티에 관해서 기술하였다. 이 명령은 긴 명령 시퀀스를 대체하고 컴퓨터 처리 및 성능을 향상시킨다.
[0095] 다양한 예들이 제공되었지만, 청구 범위의 정신을 벗어남이 없이 다양한 변형들이 가능하다. 예를 들어, 상기 명령에 의해서 사용되는 레지스터들 및/또는 필드들에 포함되는 값들은, 다른 실시 예들에서는, 다른 위치들, 예를 들어, 메모리 위치들에 포함될 수 있다. 많은 다른 변형들도 능하다.
[0096] 본 발명의 하나 또는 그 이상의 실시 예들은 클라우드 컴퓨팅과 관련될 수 있다.
[0097] 본 명세서에서 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 그러한 설명들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해 하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0098] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 리소스들(예를 들어, 네트워크, 네트워크 대역폭, 서버, 처리, 메모리, 저장소, 애플리케이션, 가상 머신, 및 서비스)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0099] 클라우드 컴퓨팅 특성들은 다음과 같다:
주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 기능들을 일방적으로 제공(provision)할 수 있다.
광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 랩탑, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
리소스 풀링(Resource pooling): 제공자의 컴퓨팅 리소스들은 멀티-테넌트 모델(a multi-tenant model)을 이용하여, 각기 다른 물리적 및 가상 리소스들을 요구(demand)에 따라 동적으로 할당 및 재할당하면서, 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 리소스들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든 구매할 수 있는 것처럼 보인다.
측정 가능한 서비스(Measured service): 클라우드 시스템은 리소스 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 저장소, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 리소스 사용량은 모니터되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[00100] 서비스 모델들(Service Models)은 다음과 같다:
소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다.
플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 저장소를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
인프라스트럭처 서비스(Infrastructure as a Service )(IaaS): 소비자에게 제공되는 서비스는 처리, 저장소, 네트워크, 및 기타 기본 컴퓨팅 리소스들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽)에 대하여 제어할 수 있다.
[00101] 배치 모델들(Deployment Models)은 다음과 같다:
사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 독립체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[00102] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다. 하나의 그러한 노드가 도 1a에 도시한 노드(10)이다.
[00103] 컴퓨팅 노드(10)는 적절한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 본 명세서에서 기술된 본 발명의 실시 예들의 사용 또는 기능의 범위를 한정하려는 의도가 있는 것은 아니다. 여하간, 클라우드 컴퓨팅 노드(10)는 전술한 모든 기능이 구현가능하고 그리고/또는 수행하는 것이 가능하다.
[00104] 이제 도 7을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 통신할 수 있다. 노드들(10)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 리소스들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 7에 도시된 컴퓨팅 장치들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(10)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 장치와 통신할 수 있다는 것을 이해해야 한다.
[00105] 이제 도 8을 참조하면, 클라우드 컴퓨팅 환경(50) (도 7)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 8에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다:
포함한다. 하드웨어 컴포넌트들의 예들에는 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 저장장치들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
가상화 계층(70)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 저장소(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영체제들(74); 및 가상 클라이언트들(75).
한 예에서, 관리 계층(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)을 제공한다.
워크로드 계층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 명령 처리(96).
[00106] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 수준에서 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 저장 매체를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[00107] 상기 컴퓨터 판독 가능 저장 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 장치일 수 있다. 상기 컴퓨터 판독 가능 저장 매체는, 예를 들면, 전자 저장 장치, 자기 저장 장치, 광 저장 장치, 전자기 저장 장치, 반도체 저장 장치, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 저장 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코딩된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 저장 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[00108] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 저장 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 저장 장치로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 장치 내의 컴퓨터 판독 가능 저장 매체에 저장하기 위해 전송한다.
[00109] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.---
[00110] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 순서 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 순서 예시도들 및/또는 블록도들의 각 블록과 순서 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00111] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 장치들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 저장 매체가 상기 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00112] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 장치 상에서 실행되는 명령들이 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00113] 도면들 내 순서도 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 동작(operation)을 예시한다. 이와 관련하여, 상기 순서도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의한다.
[00114] 전술한 것에 추가하여, 본 발명의 하나 또는 그 이상의 실시 예들은 고객 환경들의 관리를 공급하는 서비스 제공자에 의해 제공, 공급, 배치, 관리, 서비스 될 수 있다. 예를 들면, 서비스 제공자는 하나 또는 그 이상의 고객들을 위해 본 발명의 하나 또는 그 이상의 실시 예들을 수행하는 컴퓨터 코드 및/또는 컴퓨터 인프라스트럭처의 제작, 유지, 지원 등을 할 수 있다. 그 대가로, 서비스 제공자는, 예를 들어, 가입제(subscription) 및/또는 수수료 약정에 따라 고객으로부터 대금을 수령할 수 있다. 추가적으로 또는 선택적으로, 서비스 제공자는 하나 또는 그 이상의 제3자들에게 광고 콘텐츠를 판매하고 대금을 수령할 수 있다.
[00115] 한 예에서, 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 하나의 애플리케이션이 배치될 수 있다. 한 예로서, 하나의 애플리케이션의 배치는 본 발명의 하나 또는 그 이상의 실시 예들을 수행하기 위해 동작 가능한 컴퓨터 인프라스트럭처를 제공하는 것을 포함할 수 있다.
[00116] 추가의 예로서, 컴퓨터 판독 가능 코드를 컴퓨팅 시스템으로 통합하는 것을 포함하는 컴퓨팅 인프라스트럭처가 배치될 수 있으며, 그 컴퓨팅 시스템에서 상기 코드는 상기 컴퓨팅 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.
[00117] 추가 예로서, 컴퓨터 판독 가능 코드를 컴퓨터 시스템으로 통합시키는 것을 포함하는 컴퓨팅 인프라스트럭처를 통합하기 위한 프로세스가 제공될 수 있다. 상기 컴퓨터 시스템은 컴퓨터 판독 가능 매체를 포함하고, 상기 컴퓨터 시스템에서 상기 컴퓨터 매체는 본 발명의 하나 또는 그 이상의 실시 예들을 포함한다. 상기 코드는 상기 컴퓨터 시스템과 결합하여 본 발명의 하나 또는 그 이상의 실시 예들을 수행할 수 있다.
[00118] 위에서 다양한 실시 예들이 기술되었지만, 이들은 단지 예시들일 뿐이다. 예를 들면, 다른 아키텍처들의 컴퓨팅 환경들이 본 발명의 하나 또는 그 이상의 실시 예들을 포함하고 사용하는 데 사용될 수 있다. 또한, 다른(different) 명령들, 명령 포맷들, 명령 필드들 및/또는 명령 값들이 사용될 수 있다. 많은 변형들이 가능하다.
[00119] 또한, 다른 유형의 컴퓨팅 환경들도 유익을 얻을 수 있고 사용될 수 있다. 예로서, 프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템이 사용될 수 있으며, 이 시스템은 시스템 버스를 통해서 메모리 엘리먼트들에 직접적으로 또는 간접적으로 결합된 적어도 두 개의 프로세서를 포함한다. 상기 메모리 엘리먼트들은, 예를 들어 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 대용량 스토리지(bulk storage), 및 코드가 실행 동안에 대용량 저장소로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 저장(temporary storage)을 제공하는 캐시 메모리를 포함한다.
[00120] 입력/출력 또는 I/O 장치들(키보드, 디스플레이, 포인팅 장치, DASD, 테이프, CD, DVD, 썸 드라이브 및 기타 메모리 매체 등을 포함하나 이에 한정되지는 않음)은 직접 또는 중개(intervening) I/O 제어기들을 통해서 상기 시스템에 결합될 수 있다. 네트워크 어댑터 또한 상기 시스템에 결합되어 상기 데이터 처리 시스템이 중개하는 사설 또는 공공 네트워크를 통해서 기타 데이터 처리 시스템 또는 원격 포인터 또는 저장 장치에 결합되는 것을 가능하게 한다. 모뎀, 케이블 모뎀, 및 이더넷 카드는 이용 가능한 유형의 네트워크 어댑터들의 단지 일부 예이다.
[00121] 본 명세서 내에 사용된 용어들은 단지 본 발명의 특정 실시 예들을 기술할 목적으로 사용된 것이지 한정하려는 의도로 사용된 것은 아니다. 본 명세서에서 사용할 때, 단수 형태는 그 컨텍스트에서 그렇지 않은 것으로 명시되어 있지 않으면, 복수 형태도 또한 포함할 의도로 기술된 것이다. 또한, "포함한다" 및/또는 "포함하는" 이라는 말들은 본 명세서에서 사용될 때, 언급되는 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하는 것은 아니라는 것을 이해할 수 있을 것이다.
[00122] 이하의 청구항들에서, 대응하는 구조들(structures), 재료들(materials), 동작들(acts), 및 모든 수단의 등가물들 또는 단계 플러스 기능 엘리먼트들은 구체적으로 청구되는 다른 청구된 엘리먼트들과 함께 그 기능을 수행하기 위한 구조, 재료, 또는 동작을 포함할 의도가 있다. 본 발명의 하나 또는 그 이상의 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 많은 수정들 및 변형들이 있을 수 있다는 것을 알 수 있다. 본 발명의 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 수정들을 갖는 다양한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.
Claims (20)
- 컴퓨팅 환경 내에서 처리를 용이하게 하기 위한 방법을 수행하기 위해 처리 회로에 의해 판독 가능하고, 상기 처리 회로에 의한 실행 명령들을 저장하는 컴퓨터 판독 가능 저장 매체로서, 상기 방법은:
실행을 위한 단일의 명령(a single instruction)을 획득하는 단계(obtaining) - 상기 단일의 명령은 시프트 및 나누기 연산(a shift and divide operation)을 수행함-; 및
상기 단일의 명령을 실행하는 단계(executing)를 포함하고, 상기 실행하는 단계는:
하나의 피제수(a dividend)를 제공하기 위해 선택된 양 만큼(by a selected amount) 명시된 방향으로(in a specified direction) 하나의 값(a value)을 시프트 하는 단계(shifting) - 상기 선택된 양은 사용자-정의됨(user-defined)-;
하나의 몫(a quotient)을 획득하기 위해 제수(a divisor)에 의해서 상기 피제수를 나누는 단계(dividing);
부호 있는 팩된 십진 포맷의 하나의 결과(a result in a signed packed decimal format)로서 상기 몫의 적어도 하나의 서브세트(at least a subset of the quotient)를 선택하는 단계(selecting);
상기 단일의 명령의 마스크 필드(a mask field)로부터 상기 결과에 대한 부호(a sign)를 결정하는 단계(determining); 및
선택된 위치에 상기 결과 및 상기 부호를 배치하는 단계(placing)- 상기 부호는 상기 선택된 위치 내 상기 결과의 상기 부호 있는 팩된 십진 포맷의 십진 디지트의 오른 쪽에 배치되고, 상기 결과는 상기 컴퓨팅 환경 내의 처리에 사용됨 -를 포함하는
컴퓨터 판독 가능 저장 매체. - 제 1 항에 있어서, 상기 값은 십진 정수(a decimal integer)이고, 상기 몫의 적어도 하나의 서브세트는 상기 몫의 선택된 수의 디지트들(a selected number of digits of the quotient)이며, 상기 몫의 선택된 수의 디지트들은 다수의 정수 디지트들(a number of integer digits)과 다수의 프랙션 디지트들(a number of fraction digits)을 포함하는
컴퓨터 판독 가능 저장 매체. - 제 1 항에 있어서, 상기 단일 명령의 마스크 필드는 상기 단일 명령에 의해 제공되는 하나의 제어(a control)를 포함하는
컴퓨터 판독 가능 저장 매체. - 제 1 항에 있어서, 상기 실행하는 단계는:
상기 단일 명령의 하나 또는 그 이상의 필드들로부터 상기 값(the value)을 획득하는 단계(obtaining);
상기 값의 유효성을 검사하는 단계(checking);
상기 검사하는 단계가 상기 값이 유효하다고 표시하는 것에 기초하여, 상기 시프트하는 단계를 수행하는 단계를 더 포함하는
컴퓨터 판독 가능 저장 매체. - 제 1 항에 있어서, 상기 명시된 방향은 왼쪽(left)인
컴퓨터 판독 가능 저장 매체. - 제 1 항에 있어서, 상기 실행하는 단계(executing)는:
상기 단일 명령의 하나의 필드로부터 상기 선택된 양(the selected amount)을 획득하는 단계(obtaining)를 더 포함하는
컴퓨터 판독 가능 저장 매체. - 제 1 항에 있어서, 상기 선택된 위치는 하나의 레지스터(a register)이고, 상기 레지스터는 상기 단일 명령의 적어도 하나의 필드를 사용하여 명시되는
컴퓨터 판독 가능 저장 매체. - 제 7 항에 있어서, 상기 적어도 하나의 필드는 레지스터 번호(a register number)를 명시하는 레지스터 필드와 상기 레지스터 번호에 추가되는 확장 값(an extension value)을 명시하는 확장 필드를 포함하는
컴퓨터 판독 가능 저장 매체. - 삭제
- 삭제
- 컴퓨팅 환경 내에서 처리를 용이하게 하기 위한 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은:
메모리; 및
상기 메모리와 통신하는 프로세서를 포함하고, 상기 컴퓨터 시스템은 방법을 수행하도록 구성되며, 상기 방법은:
실행을 위한 단일의 명령(a single instruction)을 획득하는 단계(obtaining) - 상기 단일의 명령은 시프트 및 나누기 연산(a shift and divide operation)을 수행함-; 및
상기 단일의 명령을 실행하는 단계(executing)를 포함하고, 상기 실행하는 단계는:
하나의 피제수(a dividend)를 제공하기 위해 선택된 양 만큼(by a selected amount) 명시된 방향으로(in a specified direction) 하나의 값(a value)을 시프트 하는 단계(shifting) - 상기 선택된 양은 사용자-정의됨(user-defined)-;
하나의 몫(a quotient)을 획득하기 위해 제수(a divisor)에 의해서 상기 피제수를 나누는 단계(dividing);
부호 있는 팩된 십진 포맷의 하나의 결과(a result in a signed packed decimal format)로서 상기 몫의 적어도 하나의 서브세트(at least a subset of the quotient)를 선택하는 단계(selecting);
상기 단일의 명령의 마스크 필드(a mask field)로부터 상기 결과에 대한 부호(a sign)를 결정하는 단계(determining); 및
선택된 위치에 상기 결과 및 상기 부호를 배치하는 단계(placing)- 상기 부호는 상기 선택된 위치 내 상기 결과의 상기 부호 있는 팩된 십진 포맷의 십진 디지트의 오른 쪽에 배치되고, 상기 결과는 상기 컴퓨팅 환경 내의 처리에 사용됨 -를 포함하는
컴퓨터 시스템. - 제 11 항에 있어서, 상기 값은 십진 정수(a decimal integer)이고, 상기 몫의 적어도 하나의 서브세트는 상기 몫의 선택된 수의 디지트들(a selected number of digits of the quotient)이며, 상기 몫의 선택된 수의 디지트들은 다수의 정수 디지트들과 다수의 프랙션 디지트들을 포함하는
컴퓨터 시스템. - 제 11 항에 있어서, 상기 단일 명령의 마스크 필드는 상기 단일 명령에 의해 제공되는 하나의 제어(a control)를 포함하는
컴퓨터 시스템. - 제 11 항에 있어서, 상기 실행하는 단계(executing)는:
상기 단일 명령의 하나의 필드로부터 상기 선택된 양(the selected amount)을 획득하는 단계(obtaining)를 더 포함하는
컴퓨터 시스템. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/281,245 | 2016-09-30 | ||
US15/281,245 US10241757B2 (en) | 2016-09-30 | 2016-09-30 | Decimal shift and divide instruction |
PCT/EP2017/073875 WO2018060040A1 (en) | 2016-09-30 | 2017-09-21 | Decimal shift and divide instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190060777A KR20190060777A (ko) | 2019-06-03 |
KR102178288B1 true KR102178288B1 (ko) | 2020-11-12 |
Family
ID=59955558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197009417A KR102178288B1 (ko) | 2016-09-30 | 2017-09-21 | 십진수 시프트 및 나누기 명령 |
Country Status (19)
Country | Link |
---|---|
US (2) | US10241757B2 (ko) |
EP (1) | EP3519939B1 (ko) |
JP (1) | JP6909284B2 (ko) |
KR (1) | KR102178288B1 (ko) |
CN (1) | CN109791478B (ko) |
AU (1) | AU2017333768B2 (ko) |
BR (1) | BR112019006622B1 (ko) |
CA (1) | CA3036122A1 (ko) |
DK (1) | DK3519939T3 (ko) |
HU (1) | HUE048701T2 (ko) |
IL (1) | IL264740B (ko) |
LT (1) | LT3519939T (ko) |
MX (1) | MX2019003607A (ko) |
PT (1) | PT3519939T (ko) |
RU (1) | RU2726147C1 (ko) |
SI (1) | SI3519939T1 (ko) |
TW (1) | TWI636397B (ko) |
WO (1) | WO2018060040A1 (ko) |
ZA (1) | ZA201902291B (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11360769B1 (en) | 2021-02-26 | 2022-06-14 | International Business Machines Corporation | Decimal scale and convert and split to hexadecimal floating point instruction |
US11663004B2 (en) | 2021-02-26 | 2023-05-30 | International Business Machines Corporation | Vector convert hexadecimal floating point to scaled decimal instruction |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150378681A1 (en) | 2014-06-26 | 2015-12-31 | Arm Limited | Apparatus and method for efficient division performance |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4390961A (en) | 1980-12-24 | 1983-06-28 | Honeywell Information Systems Inc. | Data processor performing a decimal multiply operation using a read only memory |
JPH0383127A (ja) | 1989-08-28 | 1991-04-09 | Nec Corp | 10進除算器 |
US5426600A (en) | 1993-09-27 | 1995-06-20 | Hitachi America, Ltd. | Double precision division circuit and method for digital signal processor |
US5969326A (en) * | 1998-01-14 | 1999-10-19 | Intermec Ip Corp. | Method and apparatus of autodiscriminating in symbol reader employing prioritized and updated table of symbologies |
US6067617A (en) * | 1998-04-07 | 2000-05-23 | International Business Machines Corporation | Specialized millicode instructions for packed decimal division |
US6401108B1 (en) * | 1999-03-31 | 2002-06-04 | International Business Machines Corp. | Floating point compare apparatus and methods therefor |
JP2001034472A (ja) | 1999-07-16 | 2001-02-09 | Mitsubishi Electric Corp | データ処理装置および除算、剰余算アルゴリズム |
JP3886870B2 (ja) | 2002-09-06 | 2007-02-28 | 株式会社ルネサステクノロジ | データ処理装置 |
US7167889B2 (en) | 2003-05-12 | 2007-01-23 | International Business Machines Corporation | Decimal multiplication for superscaler processors |
US7689641B2 (en) | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
JP2007034731A (ja) * | 2005-07-27 | 2007-02-08 | Toshiba Corp | パイプラインプロセッサ |
US7584237B1 (en) | 2005-10-11 | 2009-09-01 | Advanced Micro Devices, Inc. | Fast hardware divider |
US7912890B2 (en) | 2006-05-11 | 2011-03-22 | Intel Corporation | Method and apparatus for decimal number multiplication using hardware for binary number operations |
CN101178644B (zh) * | 2006-11-10 | 2012-01-25 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
US8051117B2 (en) | 2007-04-26 | 2011-11-01 | International Business Machines Corporation | Shift significand of decimal floating point data |
RU2417409C2 (ru) * | 2009-01-27 | 2011-04-27 | Межрегиональное общественное учреждение "Институт инженерной физики" | Отказоустойчивый процессор |
US8725786B2 (en) | 2009-04-29 | 2014-05-13 | University Of Massachusetts | Approximate SRT division method |
US9459868B2 (en) * | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
JP5966764B2 (ja) | 2012-08-22 | 2016-08-10 | 富士通株式会社 | 乗算装置及び乗算方法 |
JP5966763B2 (ja) | 2012-08-22 | 2016-08-10 | 富士通株式会社 | 除算装置及び除算方法 |
CN104731551B (zh) * | 2013-12-23 | 2018-02-16 | 浙江大华技术股份有限公司 | 基于fpga进行除法操作的方法及装置 |
CN106325811B (zh) | 2014-07-02 | 2020-02-07 | 上海兆芯集成电路有限公司 | 微处理器中的方法 |
US20160034256A1 (en) * | 2014-08-01 | 2016-02-04 | Imagination Technologies, Limited | Fast integer division |
US9747961B2 (en) * | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
-
2016
- 2016-09-30 US US15/281,245 patent/US10241757B2/en active Active
-
2017
- 2017-09-21 EP EP17772026.5A patent/EP3519939B1/en active Active
- 2017-09-21 RU RU2018146394A patent/RU2726147C1/ru active
- 2017-09-21 SI SI201730220T patent/SI3519939T1/sl unknown
- 2017-09-21 LT LTEP17772026.5T patent/LT3519939T/lt unknown
- 2017-09-21 CN CN201780060585.8A patent/CN109791478B/zh active Active
- 2017-09-21 AU AU2017333768A patent/AU2017333768B2/en active Active
- 2017-09-21 BR BR112019006622-5A patent/BR112019006622B1/pt active IP Right Grant
- 2017-09-21 KR KR1020197009417A patent/KR102178288B1/ko active IP Right Grant
- 2017-09-21 DK DK17772026.5T patent/DK3519939T3/da active
- 2017-09-21 MX MX2019003607A patent/MX2019003607A/es unknown
- 2017-09-21 HU HUE17772026A patent/HUE048701T2/hu unknown
- 2017-09-21 CA CA3036122A patent/CA3036122A1/en active Pending
- 2017-09-21 WO PCT/EP2017/073875 patent/WO2018060040A1/en unknown
- 2017-09-21 PT PT177720265T patent/PT3519939T/pt unknown
- 2017-09-21 JP JP2019516375A patent/JP6909284B2/ja active Active
- 2017-09-29 TW TW106133570A patent/TWI636397B/zh active
- 2017-11-08 US US15/806,862 patent/US10235137B2/en active Active
-
2019
- 2019-02-07 IL IL264740A patent/IL264740B/en active IP Right Grant
- 2019-04-11 ZA ZA2019/02291A patent/ZA201902291B/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150378681A1 (en) | 2014-06-26 | 2015-12-31 | Arm Limited | Apparatus and method for efficient division performance |
Also Published As
Publication number | Publication date |
---|---|
CA3036122A1 (en) | 2018-04-05 |
CN109791478B (zh) | 2023-05-26 |
KR20190060777A (ko) | 2019-06-03 |
RU2726147C1 (ru) | 2020-07-09 |
TW201816594A (zh) | 2018-05-01 |
AU2017333768A1 (en) | 2019-04-04 |
JP6909284B2 (ja) | 2021-07-28 |
US20180095725A1 (en) | 2018-04-05 |
PT3519939T (pt) | 2020-05-15 |
US10235137B2 (en) | 2019-03-19 |
SI3519939T1 (sl) | 2020-07-31 |
US10241757B2 (en) | 2019-03-26 |
DK3519939T3 (da) | 2020-04-27 |
JP2019530097A (ja) | 2019-10-17 |
BR112019006622A2 (pt) | 2019-07-02 |
ZA201902291B (en) | 2021-04-28 |
EP3519939A1 (en) | 2019-08-07 |
EP3519939B1 (en) | 2020-03-25 |
US20180095724A1 (en) | 2018-04-05 |
WO2018060040A1 (en) | 2018-04-05 |
HUE048701T2 (hu) | 2020-08-28 |
CN109791478A (zh) | 2019-05-21 |
TWI636397B (zh) | 2018-09-21 |
BR112019006622B1 (pt) | 2022-06-14 |
IL264740B (en) | 2021-02-28 |
AU2017333768B2 (en) | 2020-07-09 |
LT3519939T (lt) | 2020-05-11 |
MX2019003607A (es) | 2019-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102202149B1 (ko) | 선택 가능한 비교 속성들을 갖는 부동 소수점 명령 | |
KR102238189B1 (ko) | 십진수 부호 연산 수행 명령 | |
KR102178288B1 (ko) | 십진수 시프트 및 나누기 명령 | |
KR102178290B1 (ko) | 십진수 곱하기 및 시프트 명령 | |
US10990390B2 (en) | Decimal load immediate instruction | |
KR20230122163A (ko) | 16진수 부동 소수점을 스케일된 10진수로의 벡터 변환명령 |
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 |