KR102560424B1 - 와이드 데이터 타입들의 비교 - Google Patents

와이드 데이터 타입들의 비교 Download PDF

Info

Publication number
KR102560424B1
KR102560424B1 KR1020187003192A KR20187003192A KR102560424B1 KR 102560424 B1 KR102560424 B1 KR 102560424B1 KR 1020187003192 A KR1020187003192 A KR 1020187003192A KR 20187003192 A KR20187003192 A KR 20187003192A KR 102560424 B1 KR102560424 B1 KR 102560424B1
Authority
KR
South Korea
Prior art keywords
comparison
value
comparison operation
sequence
bits
Prior art date
Application number
KR1020187003192A
Other languages
English (en)
Other versions
KR20180027537A (ko
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 KR20180027537A publication Critical patent/KR20180027537A/ko
Application granted granted Critical
Publication of KR102560424B1 publication Critical patent/KR102560424B1/ko

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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

와이드 데이터 타입들을 비교하는 장치 및 방법을 제공한다. 상기 장치는, 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 처리회로를 구비하고, 상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산한다. 상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 상기 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶인다.

Description

와이드 데이터 타입들의 비교
본 기술은 데이터 처리 분야에 관한 것이다. 특히, 본 기술은, 와이드 데이터 타입들을 비교하는 분야에 관한 것이다.
정수 등의 2개의 데이터 값간에 비교를 행하는 것이 바람직한 경우가 많다. 데이터 처리장치에서는, 2개의 데이터 값간에 비교를 행하기 위해서 명령어를 발행할 수도 있다. 그 명령어는, 행해지는 값들의 2개의 장소를 가리킬 수도 있다. 그렇지만, 상기 데이터 처리장치는, 저장 가능한 데이터 값들의 사이즈면에서 제한될 수도 있다. 예를 들면, 단일의 값을 저장하는데 사용될 수도 있는 각 레지스터는, 단일의 32비트 값만을 저장 가능하여도 된다. 이에 따라, 이러한 비교 명령어는, 통상 2개의 32비트 값들만을 비교 가능하여도 된다.
훨씬 넓은 수, 즉 표현되는 32비트보다 많은 비트를 필요로 하는 수에 관해 비교를 행하는 것이 바람직할 경우, 이것은 각 수를 다수의 청크들로 분할하고 나서 청크마다 비교를 행함으로써 이루어질 수 있다. 그 후, 개개의 각 비교 결과는, 종료 결과를 생성하기 위해서 해석될 수 있다. 그렇지만, 이 프로세스는, 그 개개의 결과를 저장하기 위해서 스토리지를 필요로 한다. 스토리지에 대한 필요성은, 각 개개의 비교를 분기구조로 배치함으로써 없어질 수 있다. 그렇지만, 이에 따라, 코드 시퀀스가 보다 커지게 될 수 있고, 오예측을 야기하는 분기 예측으로 인해, 스토리지를 사용하여 그 개개의 결과를 저장하였을 경우보다 코드를 실행하는데 보다 길어질 수 있다.
제1 구성 예에서는, 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 처리회로를 제공하고, 상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산하고; 상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 상기 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶인다.
제2 구성 예에서는, 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 단계를 포함하는 방법을 제공하고, 상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산하고; 상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶인다.
제3 구성 예에서는, 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 처리수단을 제공하고, 상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산하고; 상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 상기 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶인다.
본 기술들은, 아래의 첨부도면에 나타낸 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명한다:
도 1은 일 실시예에 따라 본 기술의 연산을 개략적으로 도시한 것이고,
도 2는 일 실시예에 따라 와이드 데이터 값을 비교하기 위해서 다수의 비교 연산을 어떻게 함께 묶는지를 도시한 것이고,
도 3은 일 실시예에 따라 비교함수의 값들의 예를 나타내는 테이블이고,
도 4는 일 실시예에 따라 누적결과의 예를 도시한 것이고,
도 5는 일 실시예에 따라 디스크립터의 예를 도시한 것이고,
도 6은 와이드 데이터 타입을 비교하기 위해 조합에서 사용되는 3개의 상이한 명령어의 예시도이고,
도 7은 와이드 데이터 타입을 비교하기 위한 도 6에 도시된 명령어들을 사용하는 방법의 흐름도를 도시한 것이고,
도 8은 일 실시예에 따라 조기 분기하는 예를 도시한 도면이고,
도 9는 2개의 와이드 부동소수점 수를 비교하기 위한 흐름도를 도시한 것이다.
첨부도면을 참조하여 실시예들을 설명하기 전에, 아래의 실시예들에 대한 설명과 관련된 이점을 제공한다.
일 구성 예에서는, 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 처리회로를 제공하고, 상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산하고; 상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 상기 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶인다.
위의 구성에서는, 복수의 비교 연산을 행하여서 (각각 N비트들보다 많은 비트를 갖는) 상기 제1 값과 상기 제2 값을 비교하고, 각 비교 연산은, 상기 제1 값의 N비트들과 대응한 상기 제2 값의 N비트들에 관해 연산한다. 각 비교 연산은, 상이한 세트의 N비트들을 고려한다. 그 비교 연산들은 묶여 있다. 달리 말하면, 최종의 비교 연산을 제외하고, 각 비교 연산은, 다음 비교 연산에 의해 상기 시퀀스에서 사용되는 누적 비교 결과(ACR)를 제공한다. 이에 따라, 상기 ACR은, 가장 최근에 실행된 비교 연산까지의 상기 비교의 결과를 고려한다. 예를 들면, 각각 상기 제1 값의 N비트들과 상기 제2 값의 N비트들을 비교하는 X비교 연산들을 행하였다면, 상기 비교 여산 X의 상기 ACR은 상기 제1 값의 제1 XN비트들과 상기 제2 값의 제1 XN비트들의 비교 결과를 표현한다. 최종의 비교 연산은, 후계자(successor)가 없어, ACR을 출력하지 않는다. 대신에, 그 최종의 비교 연산은, 상기 제1 값과 상기 제2 값의 비교 결과를 표현하는 비교 결과를 제공한다.
이렇게 상기 비교 연산들을 묶음으로써, 중간 결과를 저장할 필요성은 저감될 수 있고, 일부의 경우에는 함께 제거되어도 된다. 또한, 이렇게 비교 연산들을 묶는 것은, ACR이 상기 비교 연산간을 통과하기 때문에 분기 또는 긴 복합 코드 구조를 필요로 하지 않는다. 이에 따라, 2개의 와이드 데이터 타입들의 비교는, 대량의 스토리지를 필요로 하지 않으며 기초 코드의 사이즈와 복잡성을 증가시키지 않고, 효율적으로 시행될 수 있다. 이에 따라, 와이드 데이터 타입들의 비교를 보다 효율적으로 행함으로써 컴퓨터 보다 좋아지게 된다.
일부의 실시예에서, 상기 처리회로는, 상기 시퀀스에서 제1 비교 연산 후에 적어도 비교 연산마다, 그 비교 연산을 위한 입력으로서 사용하기 위한 디스크립터를 수신하도록 배치되고; 상기 디스크립터는 상기 시퀀스에서 이전의 비교 연산으로부터의 상기 누적 비교 결과를 포함한다. 상기 디스크립터는, 연속적인 비교 연산간에 중간 데이터를 통과하여서, 각 비교 연산에 대한 대량의 중간 데이터를 저장할 필요가 없도록 사용된다.
비교 연산마다 상기 디스크립터를 제공할 수도 있는 방식은 많이 있다. 일부의 실시예에서, 상기 처리회로는, 복수의 비교 명령어에 응답하여, 상기 복수의 비교 연산을 행하는 회로이고, 제1 비교 명령어이외의 적어도 각 비교 명령어는 입력 파라미터에서의 상기 디스크립터를 식별한다. 이에 따라, 상기 명령어 자신들은, 파라미터로서 상기 디스크립터를 포함하거나, 상기 디스크립터가 (예를 들면, 레지스터 등의 저장회로에) 위치되는 레퍼런스를 포함하는 파라미터를 포함하여도 된다. 달리 말하면, 상기 디스크립터는, 명백히 제공되어도 된다. 일부의 다른 실시예에서, 상기 처리회로는, 복수의 비교 명령어에 응답하여, 상기 복수의 비교 연산을 행하는 회로이고, 최종의 비교 연산이외의 상기 복수의 비교 연산의 각각은 상기 저장회로에 저장된 상기 디스크립터를 갱신함으로써 상기 다음 비교 연산에 의해 상기 시퀀스에 상기 입력으로서 사용하기 위해 상기 누적 비교 결과를 제공한다. 이들 실시예에서, 상기 디스크립터는 암시적으로 제공되고, 상기 처리회로는 디스크립터를 발견하는 장소를 명백히 듣지 않고 상기 디스크립터를 위치시킬 수 있다. 예를 들면, 그 디스크립터를 저장하는 특수한 전용 스토리지 구조가 제공되어도 된다.
일부의 실시예에서, 상기 복수의 비교 명령어는 체인드(chained) 비교 명령어를 포함하고, 상기 처리회로는, 상기 체인드 비교 명령어에 응답하여, 상기 시퀀스에서의 관련 비교 연산을 행하는 회로이고, 상기 관련 비교 연산은 연산되는 상기 제1 및 제2 값의 N비트들과, 입력 디스크립터를, 입력으로서 사용하고, 상기 처리회로는, 상기 관련 비교 연산의 결과로서, 이후의 비교 연산을 위한 입력으로서 사용되는 상기 디스크립터를 출력하도록 배치된다. 상기 체인드 비교 연산 자체는, 특정한 상황에서 선택적이다. 예를 들면, 상기 제1 값과 상기 제2 값이 각각 2N비트들을 포함하고, 각 비교 연산이 N비트들에 관해 연산하는 경우, (각각 아래에 설명된) 제1의 체인드 비교 명령어와 최종의 체인드 비교 명령어만을 사용하여서 상기 제1 값과 상기 제2 값을 비교하는 것이 가능할 수도 있다. 일 실시예에서, 상기 체인드 비교 명령어는, 입력 오퍼랜드들로서 상기 관련 비교 연산의 입력들 모두를 지정한다.
일부의 실시예에서, 상기 복수의 비교 명령어는 최종의 체인드 비교 명령어를 포함하고, 상기 처리회로는, 상기 최종의 체인드 비교 명령어에 응답하여, 상기 시퀀스에서의 상기 최종의 비교 연산을 행하는 회로이고, 상기 최종의 비교 연산은 연산되는 상기 제1 및 제2 값의 N비트들과, 입력 디스크립터를, 입력으로서 사용하고, 상기 처리회로는, 상기 최종의 비교 연산의 결과로서, 상기 제1 및 제2 값을 비교하기 위한 비교 결과를 출력하도록 배치된다. 상기 최종의 체인드 비교 명령어는, 상기 시퀀스에서 상기 최종의 비교 명령어이고, 상기 제1 값과 상기 제2 값을 비교한 결과 전체를 생성한다. 일 실시예에서, 상기 최종의 체인드 비교 명령어는, 입력 오퍼랜드들로서 상기 최종의 비교 연산의 입력들 모두를 지정한다.
일부의 실시예에서, 상기 복수의 비교 명령어는 제1의 체인드 비교 명령어를 포함하고, 상기 처리회로는, 상기 제1의 체인드 비교 명령어에 응답하여, 제1의 비교 연산을 행하는 회로이고, 상기 제1의 비교 연산은 연산되는 상기 제1 및 제2 값의 N비트들을 입력으로서 사용하고, 상기 처리회로는, 상기 제1의 비교 연산의 결과로서, 이후의 비교 연산을 위한 입력으로서 사용되는 상기 디스크립터를 출력하도록 배치된다. 이러한 제1의 체인드 비교 명령어는, 선택적이고, 그 대신에, 제공된 상기 디스크립터가 지금까지 상기 비트들의 비교가 같았다는 것을 가리키는 ACR을 갖는 상기 체인드 비교 명령어로 대체되어도 된다. 그렇지만, 상기 제1의 명령어로서 체인드 비교 명령어를 제공하는 것이 아닌 제1의 체인드 비교 명령어를 사용함으로써, 명령어 삽입 상수를 제공하거나, 초기의 ACR값을 상기 체인드 비교 명령어에 사전 로딩하는 명령어를 이용하는 것을 피할 수 있다. 일 실시예에서, 상기 제1의 체인드 비교 명령어는, 입력 오퍼랜드들로서 상기 제1의 비교 연산의 입력들 모두를 지정한다.
일부의 실시예에서, 비교 함수는 상기 복수의 비교 연산에 입력으로서 제공되고, 상기 비교 함수는 상기 제1 값과 상기 제2 값의 사이에서 행해지는 비교의 타입을 규정한다. 그 비교의 타입은, 예를 들면, 상기 비교가, 상기 제1 값과 상기 제2 값을 부호 또는 비부호 수로서 고려하는 것을 가리킬 수도 있다. 별개로, 상기 비교의 타입은, 상기 비교가, 상기 제1 값이 상기 제2 값보다 크고, 상기 제2 값이상이고, 상기 제2 값과 같거나, 상기 제2 값과 같지 않은지를 판정하는 것을 가리킬 수도 있다. 또한, 상기 비교의 타입은, 상기 비교가, 상기 제1 값이 상기 제2 값미만인지 또는, 상기 제2 값미만인지 또는 상기 제2 값이하인지를 고려하는 것을 가리킬 수도 있다.
상기 비교 함수가 상기 복수의 비교 연산에 제공되어도 되는 방식이 많이 있다. 일부의 실시예에서, 상기 비교 함수는 상기 제1 비교 연산에 입력으로서 제공되고; 상기 제1 비교 연산이외의 각 비교 연산에 의해 입력으로서 사용하기 위해 제공된 상기 디스크립터는, 상기 제1 비교 연산에 입력으로서 사용하기 위해 제공된 상기 비교 함수를 식별한다. 일부의 다른 실시예에서, 상기 비교 함수는, 상기 시퀀스에서 상기 최종의 비교 연산에 의해 입력으로서 사용하기 위해 제공된다. 상기 ACR은, 상기 비교 함수에 의해 규정된, 상기 제1 값과 상기 제2 값을 서로 어떻게 비교하는지의 지식없이 각 비교 연산에 의해 결정되어도 된다. 이 때문에, 상기 ACR은, 상기 제1 값과 상기 제2 값이 어떻게 서로 다른지의 표시를 제공할 수도 있고, 상기 최종의 비교 연산이 행해질 때만, 상기 제1 값과 상기 제2 값간의 차이가 상기 비교 함수 자체가 요구중인 것의 범위내에 속하는지를 판정하는데 사용된 비교 함수이다. 이 처리는, 디스크립터의 사이즈를 축소하는데 사용될 수 있다는 점에서 이로울 수도 있는데, 그 이유는, 상기 최종의 비교 연산을 행할 때까지 상기 비교 함수가 제공될 필요가 없기 때문이다. 그러므로, 이것은 디스크립터를 저장하기 위한 저장 요구사항을 저감시킬 수도 있고, 그 밖의 비교 명령어들이 실행된다.
일부의 실시예에서, 상기 제1 값과 상기 제2 값 양쪽은 정수다. 그 밖의 실시예에서, 상기 제1 값과 상기 제2 값 양쪽은 부동소수점 수다. 그 밖의 타입들을 비교하고 상이한 타입들(예를 들면, 정수와 부동소수점 수)을 비교하는 것도 가능할 수도 있다.
상기 제1 값과 상기 제2 값의 사이즈가 임의의 비트수이어도 되지만, 일부의 실시예에서, 상기 제1 값과 상기 제2 값 각각의 길이는 N비트의 배수다. 따라서, 상기 제1 값과 상기 제2 값의 비트들은, 상기 다수의 비교 연산 사이에서 정확히 분할되어도 된다. 그 밖의 실시예에서, 상기 비교 연산(일반적으로, 상기 제1 연산 또는 최종의 연산) 중 한쪽은, 그 비트들의 수의 부족분을 채우기 위해서 확장되어도 된다. 예를 들면, N이 32일 경우, 38비트 수는 2개의 비교 연산을 필요로 할 수도 있다. 상기 연산 중 한쪽은 32비트에 관해 연산할 수 있고, 다른쪽 연산은 32비트까지 확장된 나머지 6비트에 관해 연산할 수 있다.
일부의 실시예에서, 상기 시퀀스에서의 제1 비교 연산이외의 각 비교 연산은, 이전의 비교 연산보다 상기 제1 및 제2의 값의 상위 비트에 관해 연산한다. 그러므로, 상기 비교 연산은, 연속적인 비교 연산 전체에 걸쳐 최하위 비트부터 최상위 비트까지 연산되어도 된다. 최하위 비트부터 최상위 비트까지의 상기 비교를 행하는 것은, 비교 입력들 중 하나가 캐리를 포함한 덧셈(add-with-carry) 명령어들의 체인에 의해 생성된 멀티 폭(multi-width) 덧셈 결과인 경우에 유용할 수도 있다. 이러한 경우에, 그 덧셈의 결과를 어디에도 저장하지 않고, 천천히 점진적으로 상기 비교에 반영하는 것이 가능하다.
그 밖의 실시예에서, 상기 시퀀스에서의 제1 비교 연산이외의 각 비교 연산은, 이전의 비교 연산보다 상기 제1 및 제2의 값의 하위 비트에 관해 연산한다. 그러므로, 상기 비교 연산은, 최상위 비트부터 최하위 비트까지 연산되어도 된다.
이들 실시예 중 일부에 있어서, 상기 처리회로는, 소정의 조건을 가리키는 상기 누적 비교 결과에 응답하여, 상기 시퀀스에서의 이후의 비교 연산을 우회시키는 조기 분기 연산을 행하는 회로다. 최상위 비트부터 최하위 비트까지 비트들을 비교할 때, 적은 수의 비트들을 비교한 후에만 상기 비교의 결과를 결정하는 것이 가능할 수도 있다. 예를 들면, 상기 비교는 2개의 비부호 수들 중 어느 것이 가장 크고, 제1 값이 그것의 최상위 비트에 대해서는 '1'이고 제2 값이 그것의 최하위 비트에 대해서는 '0'인지를 판정하는 것인 경우, 그 비교 결과는 이미 알려져 있다(제1 값이 보다 크다). 이에 따라, 상기 결과가 조기에 알려져 있는지를 알고 필요한 경우 나머지 비교 연산을 우회하기 위해 조기 분기 명령어를 상기 세트의 비교 연산내에 삽입하는 것이 바람직할 수도 있다. 이것은, 일부의 상황에서, 불필요한 명령어의 실행을 방지할 수도 있다.
이전에 언급된 소정의 조건은, 상기 누적 비교 결과가 이전의 비교 연산들로 비교한 비트들의 동일성을 가리키는지에 기초할 수도 있다. 예를 들면, 지금까지 비교되었던 상기 제1 값과 상기 제2 값의 비트들이 동일한지의 여부는, 그 비교 결과가 조기에 알려졌는지 아닌지와 이 때문에 이후의 비교 연산들이 우회될 수 있는지 없는지를 판정할 것이다.
이하, 상기 도면들을 참조하여 구체적인 실시예들에 대해서 설명하겠다. 도 1에는 2개의 와이드 데이터 타입(105, 110)간의 비교를 행하기 위한 장치(100)가 도시되어 있다. 이들의 각 데이터 타입의 길이는 128비트다. 도 1에 도시된 실시예인, 상기 처리회로(115)는, 32비트 값에 관해서만 연산할 수 있다. 따라서, 2개의 128비트 값들을 비교하기 위해서는, 상기 장치(100)는, 비교 명령어들의 시퀀스를 행하되, 그 비교 명령어 각각은, 처리회로(115)에 의해 관련 비교 연산을 행하게 한다. 상기 명령어들(115)의 시퀀스에서 각 명령어는, 상기 128비트 값들의 상이한 32비트들을 고려한다. 예를 들면, 도 1은 그 128비트 값들의 각각(105, 110)이 4개의 32비트 값들(1A, 1B, 1C, 1D)과 (2A, 2B, 2C, 2D)로 어떻게 분리될 수 있는지를 도시한 것이다. 그 후, 각 비교 명령어는, 32비트 값들의 관련 쌍(1A와 2A, 1B와 2B, 1C와 2C 및 1D와 2D)을 비교한다. 이 때문에, 상기 처리회로(115)는, 선택적인 누적 비교 결과(ACR)와 함께 입력들로서 2개의 오퍼랜드를 취한다. 상기 ACR은, 이전의 비교 연산으로 출력된 디스크립터의 일부를 구성한다. 상기 디스크립터의 형식을 도 5를 참조하여 후술하겠다. 도 1에 도시된 실시예에서, 상기 디스크립터는, 상기 비교 명령어의 일부로서 제공된다. 이것은, 그 명령어의 파라미터로서 통과되는 디스크립터를 포함할 수도 있거나, 대신에 상기 디스크립터가 저장되는 저장장소를 참조함으로써 이루어질 수도 있다. 그렇지만, 그 밖의 실시예에서는, 제어 스토리지(120)가 제공될 수도 있다. 이들의 그 밖의 실시예에서, 상기 디스크립터는, 상기 비교 명령어의 일부로서 통과되지 않고, 그 대신에 상기 비교 연산동안에 상기 처리회로(115)에 의해 기지의 장소(상기 제어 스토리지(120))로부터 액세스된다.
도 1에 도시된 실시예는 4개의 비교 명령어로 이루어진다. 이 비교 명령어들은, 초기 비교 명령어(ICMP32I)에서 시작한 후에, 2개의 체인드 비교 명령어(ICMP32M) 후, 최종의 비교 명령어(ICMP32F)를 행한다. 도 1에 도시된 실시예에서, 제1 비교 명령어는, 입력 파라미터로서 비교 함수(cmpf)를 수신한다. 이것은, 행해지는 비교 타입을 가리킨다. 그 비교 타입은, 상기 2개의 128비트 값간에 행해지는 비교의 타입을 가리킨다. 그 비교 타입에 대한 가능한 값의 예들에 대해서는 도 3을 참조하여 설명한다. 상기 제1 비교 명령어는, 입력 파라미터로서 출력 변경자(M1)도 수신한다. 이 출력 변경자는, 비교 연산의 상기 체인의 끝에서 상기 최종의 비교 결과 출력에 영향을 주는데 사용된다. 특히, 그 변경자는, 그 비교 결과가 참(true)일 경우 정수 1 또는 모두 1의 벡터인지를 제어한다. 그 결과가 거짓(false)일 경우, 그 출력은 모두 0의 벡터다. 상기 제1 비교 명령어를 제외한 각 비교 명령어는 상기 입력 파라미터들 중 하나로서 디스크립터를 수신한다. 상기 디스크립터의 형식에 대해서는 도 5를 참조하여 설명한다.
또한, 도 1의 실시예에 도시된 것처럼, 최종의 비교 명령어로부터의 출력은, 상기 2개의 128비트 값들(105, 110)을 비교하는 최종의 비교 결과다. 이 최종의 비교 결과는, 상기 비교의 결과를 가리킨다. 그 출력은, 상기 출력 변경자(M1)의 값에 따라, (상기 비교의 결과가 거짓일 경우) 모두 0의 벡터이거나, (상기 비교의 결과가 참일 경우) 모두 1의 벡터나 정수 1이다.
도 2가 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 묶는 일례를 도시함으로써, 상기 제1 값과 제2 값은 와이드 데이터 타입들이다. 특히, 상기 제1 값과 제2 값이 각각 64비트이고 상기 처리회로(115)가 한번에 최대 32비트를 비교할 수 있는 시스템에 있어서, 상기 제1 값과 제2 값의 비교는, 처리회로(115)에 대해, 상기 제1 값과 제2 값의 제1의 32비트에 관한 제1 또는 초기의 비교 연산과, 상기 제1 값과 제2 값의 최종의 32비트에 관한 최종의 비교 연산을 행하게 하는 초기의 비교 명령어(ICMP32I)를 사용하여서 실시되어도 된다. 상기 제1 비교의 결과는, 상기 제2 비교 명령어(ICMP32F)에 입력으로서 제공되는 디스크립터다. 상기 최종의 비교 연산의 출력은, 상기 제1 값과 제2 값의 비교의 결과다.
상기 제1 값과 제2 값의 폭이 64비트보다 넓은 경우, 상기 체인은, 상기 처리회로(115)에 의해 또 다른 비교 연산을 행하게 하는 체인드 비교 명령어(ICMP32M)가 포함된 것을 포함할 수도 있다. 이들의 또 다른 비교 연산을, "체인드" 비교 연산이라고 한다. 각 체인드 비교 연산은, 입력으로서 상기 이전의 비교 연산에 의해 제공된 디스크립터를 취한다. 그 비교 연산의 결과는, 이후의 비교 연산에 입력되는 상기 디스크립터의 일부를 구성하는 ACR이 출력되게 된다. 도 2에 도시된 실시예에서는, 상기 제1 값과 제2 값의 비트 길이가, 상기 처리회로(115)가 한번에 비교 가능한 비트들의 수의 배수이다고 가정한다. 예를 들면, 이 경우에, 상기 처리회로(115)는, 2세트의 32비트를 한번에 비교 가능하다. 이 때문에, 상기 제1 값과 제2 값의 비트 길이가 32비트의 배수이다고 가정한다. 그렇지만, 그 밖의 수의 비트에 대한 비교도 가능하다는 것을 알 것이다. 이것은, 비교되는 수들을 확장함으로써 이루어질 수도 있다. 예를 들면, 상기 제1 값과 상기 제2 값이 100비트 값일 경우, 추가의 28비트들은, 그 값이 실제로 128비트 값으로서 취급되도록 제공되어도 된다. 예를 들면, 100비트 비부호 값에 대해서는, 비교용 128비트 값을 생성하기 위해서 정상 비트들에 28개의 0을 추가하여도 된다.
도 3은 일 실시예에 따라 상기 비교 함수(cmpf)의 상이한 값들의 일례를 설명하는 테이블을 도시한 것이다. 이전에 설명된 것처럼, 상기 비교 값은, 상기 제1 값과 상기 제2 값간에 행해지는 비교의 타입을 가리킨다. 도 3에 도시된 실시예의 경우에, 상기 비교 함수의 값이 0이면, 상기 비교는 부호 있는 보다 큰 함수이다. 그 값이 1이면, 상기 함수는 부호 있는 보다 크거나 같은 함수이다. 그 값이 2이면, 그 함수는 부호 없는 보다 큰 함수이다. 그 값이 3이면, 그 함수는 부호 없는 보다 크거나 같은 함수이다. 그 값이 4이면, 그 함수는 동일성을 위한 것이다. 그 값이 5이면, 그 함수는 비동일성을 위한 것이다. 그 값 6과 7은, 예를 들면 추후 사용하기 위해 보류되어 있다. 일례로서, 비교되는 제1 값이 5이고 비교되는 제2 값이 12이면, 그 비교 함수가 1이면, 그 결과는, 5가 12보다 크거나 같지 않기 때문에 0 또는 거짓이다. 이와는 달리, 그 비교 함수의 값이 5이면, 그 결과는, 5가 12와 같지 않기 때문에 1 또는 참이다. 상기 함수가 부호 있는 함수인지 부호 없는 함수인지의 여부는, 상기 제1 값과 상기 제2 값이 부호 있는 번호로 매겨지거나 부호 없는 번호로 매겨진 수로서 취급되는지 아닌지를 가리킨다.
도 4는 상기 ACR에 대한 예시 값들로 이루어진 테이블을 도시한 것이다. 이전에 설명된 것처럼, 상기 ACR은, 상기 제1 값과 상기 제2 값의 비트들의 일부분을 비교하는 결과를 가리킨다. 달리 말하면, 상기 ACR은, 지금까지 접한 비트들 모두를 비교한 결과를 포함한다. 예를 들면, 각 비교 연산이 상기 제1 값으로부터 32비트를 취하여 상기 제2 값의 32비트와 비교하면, 제3 비교 연산에서의 상기 ACR은 상기 제1 값의 제1의 96비트와 상기 제2 값의 96비트를 비교한 결과이다. 상기 ACR의 값이 1이면, 이것은, 지금까지의 비교가 상기 제1 값이 상기 제2 값미만인 것을 가리킨다는 것을 의미한다. 그 값이 2이면, 이것은, 지금까지의 비교가 상기 제1 값이 상기 제2 값보다 큰 것을 가리킨다는 것을 의미한다. 그 값이 3이면, 이것은, 지금까지의 비교가 상기 제1 값과 상기 제2 값이 같다는 것을 가리킨다는 것을 의미한다. 그 값 0은, 예를 들면 추후 사용하기 위해 보류되어 있다.
도 5는 일 실시예에 따라 상기 디스크립터의 일례를 도시한 것이다. 이 디스크립터는, 상기 비교 연산을 함께 묶기 위해서 비교 연산간을 통과할 수도 있다. 예를 들면, 하나의 비교 연산의 출력은, 파라미터로서 이후의 비교 연산에 제공되어도 된다. 도 5에 도시된 실시예에서, 상기 디스크립터는 32비트로 구성된다. 제1의 3비트(0-2)는, 도 3을 참조하여 이전에 설명된 것과 같은 상기 비교 함수(cmpf)를 포함한다. 다음의 2비트(3-4)는, 도 4를 참조하여 이전에 설명한 것처럼, 상기 ACR을 포함한다. 다음의 비트(5)는, 상기 출력 변경자(M1)를 저장하는데 사용된다. 이것은, 상기 비교 결과가 참일 경우 체인드 비교 연산의 시퀀스의 끝에서 출력된 상기 결과가 정수 1 또는 모두 1의 벡터인지를 제어한다. 그 결과가 거짓일 경우, 상기 출력은, 모두 0의 벡터이다. 나머지 비트들(6-31)은, 예를 들면 추후 사용하기 위해 보류되어 있다.
도 6은 3개의 비교 연산의 체인에 의해 제1 값과 제2 값을 비교함에 따라서, 비교 결과를 출력하는, 3개의 비교 명령어의 이용을 나타내는 일례를 도시한 것이다. 그 프로세스는, 제1 비교 명령어(ICMP32I)(205)에서 시작한다. 이것은, 각기 32비트의 한 쌍의 오퍼랜드(오퍼랜드 0과 오퍼랜드 1)를 수신한다. 실제, 이들은, 상기 제1 값과 상기 제2 값의 제1의 32비트가 각각 저장되는 2개의 32비트 레지스터를 말할 수도 있다. 또한, 그 명령어는 상기 비교 함수(cmpf)를 포함한다. 도 3을 참조하여 이전에 설명된 것처럼, 이것은, 상기 제1 값과 상기 제2 값을 어떻게 비교하는지를 가리킨다. 끝으로, 상기 명령어는, 상기 출력이 어떻게 포맷이 만들어질지를 가리키는 상기 출력 변경자(M1)를 포함한다. 제1 비교 명령어(205)에 의해, 오퍼랜드 0과 오퍼랜드 1 사이에서 비교 연산이 행해지게 된다. 그 결과는, 상기 출력 변경자(M1) 및 상기 비교 함수(cmpf)와 함께 제2 비교 명령어(ICMP32M)(210)에 제공되는 디스크립터를 구성하는 ACR이다. 이 제2 비교 명령어도, 한 쌍의 오퍼랜드(오퍼랜드 0과 오퍼랜드 1)를 취한다. 비록 이 오퍼랜드들도 각각 32비트이지만, 그들은 상기 제1 비교 명령어(205)에 의해 연산된 상기 한 쌍의 오퍼랜드와는 다른 쌍의 오퍼랜드일 것이다. 이에 따라, 상기 제2 비교 명령어(210)는, 상기 제1 비교 명령어와는 다른 세트의 비트들에 관해 연산한다. 제2 비교 명령어(210)에 의해, 제2 비교 연산을 발생한다. 제2 비교 연산은, 상기 제2 비교 명령어(210)에 의해 제공된 상기 한 쌍의 오퍼랜드를 취한다. 또한, 제2 비교 연산은, 이전의 비교 연산에 의해 제공된 디스크립터로부터 상기 비교 함수(cmpf)와 상기 ACR을 얻는다. 상기 제2 비교 연산을 행한 결과는, 상기 입력 디스크립터로부터 상기 출력 변경자(M1) 및 상기 비교 함수(cmpf)와 함께 새로운 디스크립터를 구성하는 ACR이다. 이 새로운 디스크립터는, 최종의 비교 명령어(ICMP32F)(215)에 제공된다. 이 최종의 비교 명령어(215)에 의해, 최종의 비교 연산을 행한다. 그 명령어는, 다시 상기 제1 비교 명령어(205) 또는 상기 제2 비교 명령어(210)에 의해 제공된 상기 한 쌍의 오퍼랜드와는 다른 한 쌍의 오퍼랜드를 포함한다. 또한, 제3 비교 명령어(215)는, 상기 출력 변경자(M1)를 포함하는 상기 제2 비교 명령어(210)를 행한 결과로서 출력되는 상기 디스크립터를, 입력으로서 취한다. 또 다시, 상기 비교 명령어(215) 때문에, 상기 제공된 한 쌍의 오퍼랜드에 관해 비교 연산을 행한다. 이것의 결과는, 상기 제1 값과 상기 제2 값(각 값의 길이는 96비트임)을 비교한 전체 결과인 비교 결과다.
본 실시예가 초기의 비교 명령어(ICMP32I)(205)를 이용한다는 것을 주목한다. 그러나, 그 밖의 실시예들에서, 상기 제1 비교 명령어는, 제2 비교 명령어(ICMP32M)(210)로 설명된 형태를 가질 수도 있다. 이러한 실시예들에서, 상기 제1 비교 명령어에 제공된 상기 디스크립터는, 지금까지 비교된 비트들이 같고, 이에 따라서 상기 제1 비교 연산에 영향을 주지 않는다는 것을 가리키는 ACR을 포함한다.
각 경우에 있어서, 상기 비교 연산의 작용은 명백해야 한다. 각 경우에, 상기 비교 연산은, 새로운 ACR을 출력 디스크립터의 일부로서 출력하도록 상기 제1 값과 상기 제2 값의 일부분의 비트들에 관해 비교를 행하는 것과 아울러, 상기 입력 디스크립터의 일부로서 제공된 상기 ACR을 고려한다.
상기 비교 연산들이 최하위 비트부터 최상위 비트까지 연산하는 경우, 상기 출력된 ACR은, 입력 오퍼랜드들이 같으면 상기 입력된 ACR과 같다. 그 입력 오퍼랜드들이 같지 않으면, 상기 출력된 ACR은 그 입력 오퍼랜드들을 비교한 결과로 설정된다. 최종의 비교 명령어의 작용은, 상기 ACR이 출력되지 않는 것을 제외하고는 유사할 수도 있다. 대신에, 상기 ACR은 상기 비교 함수(cmpf)에 의해, 상기 비교 함수가 가리킨 상기 조건이 통과되는지 아닌지를 판정하는데 사용된다.
상기 비교 연산들이 최상위 비트부터 최하위 비트까지 연산하는 경우, 상기 입력된 ACR은, 그 입력된 ACR이, 지금까지 해석된 비트들이 같지 않는 것을 가리키면, 상기 출력된 ACR로서 제공된다. 상기 입력된 ACR이, 지금까지 해석된 비트들이 같은 것을 가리키면, 상기 출력된 ACR은 상기 입력 오퍼랜드들을 비교한 결과로 설정된다.
도 7은 상기 비교 명령어들을 실행하기 위한 일반적인 방법을 가리키는 흐름도(300)를 도시한 것이다. 단계 310에서는, 다음 명령어를 불러온다. 단계 320에서는, 상기 제1 오퍼랜드와 상기 제2 오퍼랜드를 수신한다. 이 오퍼랜드들은, 직접 제공되거나, 상기 명령어의 하나 이상의 파라미터에서 참조하는 (레지스터와 같은) 저장장소들에 제공되어도 된다. 아무튼, 단계 330에서는, 상기 명령어가 ICMP32I 명령어인지 아닌지를 판정한다. 아닐 경우, 단계 340에서는, 상기 ACR을 포함하는 상기 디스크립터를 취득하고 단계 350의 흐름으로 계속된다. 단계 330에서 상기 명령어가 ICMP32I 명령어이면, 직접 단계 350의 흐름으로 진행된다. 단계 360에서는, 상기 명령어가 ICMP32F 명령어인지 아닌지를 판정한다. 달리 말하면, 그 명령어가 상기 시퀀스에서 최종의 비교 명령어인지 아닌지를 판정한다. 아닐 경우, 출력 디스크립터는, 단계 350에서 행해진 상기 비교 연산으로부터 상기 ACR을 포함하게 형성된다. 그후, 단계 310의 흐름으로 진행되어, 이전에 설명된 것처럼 다음 명령어를 불러온다. 이 때문에, 그 시퀀스는, 단계 360에서, 최종의 비교 명령어에 도달할 때까지 상기 명령어 모두에 걸쳐 반복한다. 이때, 단계 380의 흐름으로 진행되어, 최종의 비교 결과가 출력된다. 최종의 비교는, 상기 비교 함수(cmpf), 상기 최종의 비교 연산의 결과, 및 상기 입력된 ACR의 결과에 좌우된다. 최종의 비교 결과는, 상기 출력 변경자(M1)에 의해서도 변경될 수도 있다.
도 8은, 비교 명령어들의 스트림/시퀀스에서 조기 분기 연산의 일례를 도시한 것이다. 도 8에서, 대다수의 비교 명령어들은, 와이드 데이터 타입의 상이한 비트들에 관해 연산한다. 상기 연산들의 시퀀스는, 최상위 비트부터 최하위 비트까지의 비트들을 비교한다. 이에 따라, 상기 비교 연산의 결과를 조기에 판정하는 것도 가능할 수도 있다. 예를 들면, 그 비트들이 다르게 시작하자마자, 그 2개의 값들 중 어느 값이 보다 크거나 보다 작은지가 알려질 것이고, 그 2개의 값들이 같지 않다는 것도 알려질 것이다. 이에 따라, 조건 분기 명령어는, 조기 분기를 가능하게 하여서 비트들의 또 다른 비교를 방지하는데 사용되어도 된다. 이 때문에, 도 8에 도시된 명령어 스트림은, 상기 비교 결과가 이미 알려져 있을 경우 나중의 명령어를 우회할 수 있도록 상기 스트림의 중간에 조건 분기 명령어를 포함한다. 상기 분기 일어나는 조건은, 미리 정해져도 된다. 예를 들면, 상기 분기 명령어에 의해, 지금까지 검사된 비트들의 동일성(또는 그것의 부족)에 따라 분기가 일어날 수도 있다. 도 6의 설명으로부터, 이러한 조건에 의해 비트들의 도 다른 비교가 필요한지를 판정할 수도 있다는 것을 알 것이다.
이러한 조건 분기 명령어가 신중하게 사용되어도 된다는 것을 주목해야 한다. 특히, 분기 예측 때문에, 잘못된 명령어가 사전에 불려온 체인드 비교 명령어이어도 된다는 것이 가능하다. 이것이 발생할 때, 부정확한 예측으로 인해 사전에 불려왔던 명령어들을 정정하기 위해서 아주 많은 처리 사이클이 걸릴 수도 있다. 이것은, 명령어 실행의 속도를 다운시킬 수 있기 때문에 바람직하지 못하다. 이에 따라, 상기 조기 분기 명령어들은, 대다수의 비교 명령어가 후속할 때, 즉 잠재적으로 상당한 이득을 얻을 경우, 또한, 상기 결과가 이미 알려져 있다는 좋은 기회가 있을 경우, 즉 오예측이 일어날 기회가 적을 경우, 가장 좋게 배치된다.
일부의 실시예에서는, 비교 명령어 자체가, 적절한 경우, 상기 조기 분기 연산을 행하여도 된다. 예를 들면, 나머지 비교의 수가 체인드 비교 명령어(ICMP32M)로 알려진 경우와 그 비교의 결과가 지금까지 비교된 비트들에 의한 것인지가 이미 알려져 있을 경우, 상기 체인드 비교 연산은, 그 체인의 끝으로 분기하여서, 나중의 명령어들을 우회할 수도 있다.
본 기술은, 2개의 와이드 부동소수점 수의 비교시에 사용되어도 된다. 이것이 이루어지는 방식은, TotalOrder 비교가 행해져야 하는지 아닌지에 좌우되어도 된다. TotalOrder 비교는, 부동소수점 수 모두에 대해 규정된 총 오더링을 이용한다. 통상, 숫자가 아닌(NaN; not-a-number) 값들은, 명령되지 않은 것으로서 취급되고, -0과 +0은 동일한 것으로서 취급된다. 그렇지만, TotalOrder 비교는, 이 경우들을 명령할 뿐만 아니라, 부동소수점 수 표현법에 특별할 수도 있는 다른 상황들을 처리할 수도 있을 것이다.
도 9는 TotalOrder 비교를 사용하여 2개의 부동소수점 수에 관해 체인드 비교를 행하는 흐름도(400)를 도시한 것이다. 단계 410에서는, 양쪽의 값(상기 제1 값과 상기 제2 값)이 양의 값인지 아닌지를 판정한다. 그럴 경우, 단계 420에서는, 이전에 설명된 것처럼, 부호 비트들을 제외한 상기 제1 값과 상기 제2 값에 관해 체인드 비교 연산을 행한다. 그렇지 않을 경우, 단계 430에서는, 양쪽의 값이 음의 값인지 아닌지를 판정한다. 아닐 경우, 단계 440에서는, 부호 비트들에 근거하여서만 상기 비교의 결과를 결정한다. 예를 들면, (이 시점에서 다른) 상기 부호 비트들에 근거하여서만, 그 값들이 동일하지 않고 이 때문에 하나의 값(양의 값)이 나머지 값(음의 값)보다 크다고 결정할 수 있다. 이와는 달리, 양쪽의 값이 단계 430에서 음의의 값일 경우, 단계 450에서는, 이전에 설명된 것처럼, 비부호 비트들에 관해 체인드 비교 연산을 행한다. 단계 460에서는, 상기 비교 함수(cmpf)가 (보다 작거나 같은 함수뿐만 아니라 보다 크거나 같은 함수도 포함하는) 보다 크거나 보다 작은 함수를 포함하는지 포함하지 않는지를 판정한다. 포함할 경우, 단계 470에서는, 그 결과를 반전시켜 출력한다. 포함하지 않을 경우, 단계 480에서는, 그 결과를 직접 출력한다.
그 밖의 타입의 비교(즉, TotalOrder가 아님)에 대해서는, 자리(significand)가 0 또는 0이 아닌지와, 지수가 모두 0, 모두 1, 또는 또 다른 것인지를 계속 추적하는 것이 필요하다. 이를 달성하기 위해서는, 그 때문에, 상기 부호, 지수 및 자리간의 경계가 상기 부동소수점 수의 표현법에 어디에 있는지를 아는 것이 필요하다. 이러한 정보를 계속 추적함으로써, 주어진 값이 (상기 지수와 상기 자리가 0일 경우) 0, (상기 지수가 모두 1이고 가수가 0일 경우) 무한대, NaN(상기 지수가 모두 1이고 상기 가수가 0이 아닐 경우), 또는 정규수(그 외의 경우)인지를 판정하는 것이 가능하다. 양쪽의 값이 정규수일 경우, 또는 한쪽의 값이 정규수이고 다른쪽의 값이 0일 경우, 또는 한쪽의 값이 무한대이고 다른쪽의 수가 정규수 또는 0일 경우에, 도 9의 흐름도에 도시된 같은 방식으로 비교를 행하는 것이 가능하다. 그외의 경우에는, 2개의 0이 동일하다고 생각되고(달리 말하면, 음의 0과 양의 0이 동일하다고 생각되고), 부호가 같은 2개의 무한대는 동일하고, 부호가 다른 2개의 무한대는 그들의 부호에 따라 비교되고(음의 무한대는 양의 무한대보다 작다), NaN을 포함하는 어떠한 비교도 실패한다.
최상위 비트부터 최하위 비트까지 비교를 행하는 경우, 당신이 상기 지수로부터 상기 자리에 가로지르는 지점에서, 당신이 각 수를 정규, 무한대, NaN, 또는 잠재적으로 0으로서 분류하는데 충분한 정보를 갖는다. 모든 3개의 비트들은, 오퍼랜드(자리가 0/논제로, 지수가 모두 0/모두 1/기타)마다 추적될 수 있다. 그렇지만, 그 오퍼랜드마다 2개의 비트를 추적하기에 충분하다. 지수를 비교할 때, 그 지수가 모두 0, 모두 1, 또는 기타인지를 추적한다. 상기 자리의 비교로 전환할 때는, 전체 값이 0/무한대/NaN/정규인지를 추적한다.
최하위 비트부터 최상위 비트까지 상기 비교를 행하고, 유사한 추적을 행하는 것이 가능하지만, 상기 "자리 0/논제로" 비트를 먼저 판정하는 경우, 상기 부동소수점 수가 0/무한대/NaN/정규인지 아닌지를 판정하기 위해서 상기 지수값을 고려한다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 규정된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 규정된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 규정된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 변형을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (19)

  1. 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 처리회로를 구비하는 장치로서,
    상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산하고;
    상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 상기 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶이는, 장치.
  2. 제 1 항에 있어서,
    상기 처리회로는, 상기 시퀀스에서 제1 비교 연산 후에 적어도 비교 연산마다, 그 비교 연산을 위한 입력으로서 사용하기 위한 디스크립터를 수신하도록 배치되고;
    상기 디스크립터는 상기 시퀀스에서 이전의 비교 연산으로부터의 상기 누적 비교 결과를 포함하는, 장치.
  3. 제 2 항에 있어서,
    상기 처리회로는, 복수의 비교 명령어에 응답하여, 상기 복수의 비교 연산을 행하는 회로이고, 제1 비교 명령어이외의 적어도 각 비교 명령어는 입력 파라미터에서의 상기 디스크립터를 식별하는, 장치.
  4. 제 2 항에 있어서,
    상기 처리회로는, 복수의 비교 명령어에 응답하여, 상기 복수의 비교 연산을 행하는 회로이고, 최종의 비교 연산이외의 상기 복수의 비교 연산의 각각은 저장회로에 저장된 상기 디스크립터를 갱신함으로써 상기 다음 비교 연산에 의해 상기 시퀀스에 입력으로서 사용하기 위해 상기 누적 비교 결과를 제공하는, 장치.
  5. 제 2 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 복수의 비교 명령어는 체인드 비교 명령어를 포함하고,
    상기 처리회로는, 상기 체인드 비교 명령어에 응답하여, 상기 시퀀스에서의 관련 비교 연산을 행하는 회로이고, 상기 관련 비교 연산은 연산되는 상기 제1 및 제2 값의 N비트들과, 입력 디스크립터를, 입력으로서 사용하고, 상기 처리회로는, 상기 관련 비교 연산의 결과로서, 이후의 비교 연산을 위한 입력으로서 사용되는 상기 디스크립터를 출력하도록 배치되는, 장치.
  6. 제 2 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 복수의 비교 명령어는 최종의 체인드 비교 명령어를 포함하고,
    상기 처리회로는, 상기 최종의 체인드 비교 명령어에 응답하여, 상기 시퀀스에서의 상기 최종의 비교 연산을 행하는 회로이고, 상기 최종의 비교 연산은 연산되는 상기 제1 및 제2 값의 N비트들과, 입력 디스크립터를, 입력으로서 사용하고, 상기 처리회로는, 상기 최종의 비교 연산의 결과로서, 상기 제1 및 제2 값을 비교하기 위한 비교 결과를 출력하도록 배치되는, 장치.
  7. 제 2 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 복수의 비교 명령어는 제1의 체인드 비교 명령어를 포함하고,
    상기 처리회로는, 상기 제1의 체인드 비교 명령어에 응답하여, 제1의 비교 연산을 행하는 회로이고, 상기 제1의 비교 연산은 연산되는 상기 제1 및 제2 값의 N비트들을 입력으로서 사용하고, 상기 처리회로는, 상기 제1의 비교 연산의 결과로서, 이후의 비교 연산을 위한 입력으로서 사용되는 상기 디스크립터를 출력하도록 배치되는, 장치.
  8. 제 2 항 내지 제 4 항 중 어느 한 항에 있어서,
    비교 함수는 상기 복수의 비교 연산에 입력으로서 제공되고, 상기 비교 함수는 상기 제1 값과 상기 제2 값의 사이에서 행해지는 비교의 타입을 규정하는, 장치.
  9. 제 8 항에 있어서,
    상기 비교 함수는 상기 제1 비교 연산에 입력으로서 제공되고,
    상기 제1 비교 연산이외의 각 비교 연산에 의해 입력으로서 사용하기 위해 제공된 상기 디스크립터는, 상기 제1 비교 연산에 입력으로서 사용하기 위해 제공된 상기 비교 함수를 식별하는, 장치.
  10. 제 8 항에 있어서,
    상기 비교 함수는, 상기 시퀀스에서 상기 최종의 비교 연산에 의해 입력으로서 사용하기 위해 제공되는, 장치.
  11. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 제1 값과 상기 제2 값 양쪽은 정수인, 장치.
  12. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 제1 값과 상기 제2 값 양쪽은 부동소수점 수인, 장치.
  13. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 제1 값과 상기 제2 값 각각의 길이는 N비트의 배수인, 장치.
  14. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 시퀀스에서의 제1 비교 연산이외의 각 비교 연산은, 이전의 비교 연산보다 상기 제1 및 제2의 값의 상위 비트에 관해 연산하는, 장치.
  15. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 시퀀스에서의 제1 비교 연산이외의 각 비교 연산은, 이전의 비교 연산보다 상기 제1 및 제2의 값의 하위 비트에 관해 연산하는, 장치.
  16. 제 15 항에 있어서,
    상기 처리회로는, 소정의 조건을 가리키는 상기 누적 비교 결과에 응답하여, 상기 시퀀스에서의 이후의 비교 연산을 우회시키는 조기 분기 연산을 행하는 회로인, 장치.
  17. 제 16 항에 있어서,
    상기 소정의 조건은, 상기 누적 비교 결과가 이전의 비교 연산들로 비교한 비트들의 동일성을 가리키는지에 기초하는, 장치.
  18. 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 단계를 포함하는 방법으로서,
    상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산하고;
    상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶이는, 방법.
  19. 제1 값과 제2 값을 비교하기 위해서 복수의 비교 연산을 행하는 처리수단을 구비하는 장치로서,
    상기 제1 값과 제2 값의 각각은 N비트보다 큰 길이를 갖고, 각 비교 연산은 상기 제1 값과 제2 값의 대응한 N비트에 관해 연산하고;
    상기 복수의 비교 연산은, 각 비교 연산이 임의의 이전의 비교 연산에 의한 비교 결과를 시퀀스에 포함하는 누적 비교 결과를 출력하게 배치되도록, 또한 상기 시퀀스에서 최종의 비교 연산이외의 비교 연산마다 상기 누적 비교 결과가 다음 비교 연산에 의해 상기 시퀀스에 입력으로서 사용하기 위해 제공되도록, 상기 시퀀스를 형성하기 위해 묶이는, 장치.
KR1020187003192A 2015-07-10 2016-05-25 와이드 데이터 타입들의 비교 KR102560424B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1512140.3 2015-07-10
GB201512140A GB2540216B (en) 2015-07-10 2015-07-10 Comparison of wide data types
PCT/GB2016/051506 WO2017009596A1 (en) 2015-07-10 2016-05-25 Comparison of wide data types

Publications (2)

Publication Number Publication Date
KR20180027537A KR20180027537A (ko) 2018-03-14
KR102560424B1 true KR102560424B1 (ko) 2023-07-27

Family

ID=54013803

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187003192A KR102560424B1 (ko) 2015-07-10 2016-05-25 와이드 데이터 타입들의 비교

Country Status (5)

Country Link
US (1) US10474427B2 (ko)
KR (1) KR102560424B1 (ko)
CN (1) CN107851007B (ko)
GB (1) GB2540216B (ko)
WO (1) WO2017009596A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111381806A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 数据比较器、数据处理方法、芯片及电子设备
CN111381804A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 数据比较器、数据处理方法、芯片及电子设备
CN111381875B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 数据比较器、数据处理方法、芯片及电子设备
CN117519637A (zh) * 2018-12-28 2024-02-06 上海寒武纪信息科技有限公司 数据比较器、数据处理方法、芯片及电子设备
CN117519636A (zh) * 2018-12-28 2024-02-06 上海寒武纪信息科技有限公司 数据比较器、数据处理方法、芯片及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097408A1 (en) * 2010-05-11 2013-04-18 Arm Limited Conditional compare instruction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226082A (en) * 1992-07-02 1993-07-06 At&T Bell Laboratories Variable length decoder
US6384713B1 (en) * 2000-04-21 2002-05-07 Marvell International, Ltd. Serial comparator
US6384627B1 (en) * 2001-02-16 2002-05-07 Xilinx, Inc. Logic block used as dynamically configurable logic function
US7281006B2 (en) * 2003-10-23 2007-10-09 International Business Machines Corporation System and method for dividing data into predominantly fixed-sized chunks so that duplicate data chunks may be identified
US7453286B1 (en) * 2007-04-19 2008-11-18 Xilinx, Inc. Comparator and method of implementing a comparator in a device having programmable logic
US8453043B2 (en) * 2010-09-13 2013-05-28 Taiwan Semiconductor Manufacturing Company, Ltd. Built-in bit error rate test circuit
US8407245B2 (en) * 2010-11-24 2013-03-26 Microsoft Corporation Efficient string pattern matching for large pattern sets
US9176733B2 (en) * 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US8581624B2 (en) * 2012-03-29 2013-11-12 Altera Corporation Integrated circuits with multi-stage logic regions
CN103605485B (zh) * 2013-11-29 2017-01-18 深圳市道通科技股份有限公司 一种变长数据的存储方法与装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097408A1 (en) * 2010-05-11 2013-04-18 Arm Limited Conditional compare instruction

Also Published As

Publication number Publication date
US20190087155A1 (en) 2019-03-21
CN107851007B (zh) 2022-05-06
US10474427B2 (en) 2019-11-12
CN107851007A (zh) 2018-03-27
WO2017009596A1 (en) 2017-01-19
GB2540216A (en) 2017-01-11
KR20180027537A (ko) 2018-03-14
GB201512140D0 (en) 2015-08-19
GB2540216B (en) 2020-01-01

Similar Documents

Publication Publication Date Title
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
US9557995B2 (en) Data processing apparatus and method for performing segmented operations
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
US9146901B2 (en) Vector floating point argument reduction
US10678540B2 (en) Arithmetic operation with shift
JP6744913B2 (ja) 浮動小数点数の丸め処理
CN111767516A (zh) 用于利用所选择的舍入来执行浮点加法的系统和方法
CN105320491B (zh) 实现高效除法性能的装置和方法
JP2019057249A (ja) 演算処理装置および演算処理方法
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
US9256434B2 (en) Generalized bit manipulation instructions for a computer processor
CN114691217A (zh) 用于8位浮点矩阵点积指令的装置、方法和系统
EP3921942A1 (en) Encoding special value in anchored-data element
JP6886927B2 (ja) 浮動小数点値の処理のための装置及び方法
US8892623B2 (en) Data processing apparatus and method
US8700887B2 (en) Register, processor, and method of controlling a processor using data type information
TW202223633A (zh) 用於實施16位元浮點矩陣點積指令的裝置、方法及系統
US11080054B2 (en) Data processing apparatus and method for generating a status flag using predicate indicators
US11966740B2 (en) Use of multiple different variants of floating point number formats in floating point operations on a per-operand basis
WO2020246598A1 (ja) 演算装置、演算方法、および演算プログラム
US9747074B2 (en) Division circuit and microprocessor
KR20220125116A (ko) 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법
US9448806B2 (en) Circuit and method for identifying exception cases in a floating-point unit and graphics processing unit employing the same

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