KR101731238B1 - 조건부 비교 명령 - Google Patents

조건부 비교 명령 Download PDF

Info

Publication number
KR101731238B1
KR101731238B1 KR1020127030565A KR20127030565A KR101731238B1 KR 101731238 B1 KR101731238 B1 KR 101731238B1 KR 1020127030565 A KR1020127030565 A KR 1020127030565A KR 20127030565 A KR20127030565 A KR 20127030565A KR 101731238 B1 KR101731238 B1 KR 101731238B1
Authority
KR
South Korea
Prior art keywords
condition
comparison
conditional
instruction
current
Prior art date
Application number
KR1020127030565A
Other languages
English (en)
Other versions
KR20130100900A (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 KR20130100900A publication Critical patent/KR20130100900A/ko
Application granted granted Critical
Publication of KR101731238B1 publication Critical patent/KR101731238B1/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/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/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
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Debugging And Monitoring (AREA)

Abstract

명령 디코더(14)는 프로그램 명령에 응답하여, 상기 데이터를 처리하도록 처리 회로(4)를 제어하는 제어 신호를 생성한다. 조건부 비교 연산은: (i) 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 현재 조건 상태를 비교 연산 중에 생성된 결과 조건 상태로 설정하고; (ii) 현재 조건 상태가 시험 조건에 실패하면, 현재 조건 상태를 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함한다. 조건부 비교 명령은 각각의 개별 비교 연산이 한 쌍의 피연산자 간의 다른 종류의 관계를 시험하는 경우 연속적인 연쇄 비교 연산을 표현하는데 사용될 수 있다.

Description

조건부 비교 명령{CONDITIONAL COMPARE INSTRUCTION}
본 발명은 데이터 처리 분야에 관한 것이다. 보다 구체적으로, 본 발명은 조건부 비교 명령에 관한 것이다.
처리 장치의 현재 조건 상태를 표현하기 위해 처리 장치에 다양한 조건 플래그를 제공하는 것이 알려져 있다. 이러한 데이터 처리 장치의 일례는 ARM 명령 세트를 실행하는 영국 캠브릿지 소재의 ARM Limited 사에 의해 설계된 프로세서이다. 명령들은 조건 명령의 실행시 조건 플래그의 현재 상태가 조건 동작의 수행 여부를 제어하도록 조건에 따라 실행되도록 배열된다. 예를 들면, 일 종류의 조건 명령의 경우, 현재 조건 상태가 실행시 시험되며, 현재 조건 상태가 시험을 통과하면, 두 개의 피연산자에 대해 수행된 연산 결과에 따라 조건 플래그가 업데이트된다. 현재 조건 상태가 시험에 실패하면, 명령들은 기능없는 NOP 명령으로서 작용하여 조건 플래그를 변경되지 않게 한다.
이러한 명령은 시험과 해당 시험의 결과에 대한 논리적 연산의 소정의 조합을 구현하는데 사용될 수 있다. 예를 들면, 최초 시험 A==B 후에 AND(&&) 또는 OR(||) 연산을 이용하여 이전 연산으로부터 얻어지는 조건 플래그와 각각의 결과가 결합되는 일련의 추가 시험이 이어지는 것으로 이루어진 (A==B && C==D) || E==F의 형식의 논리적 표현은 무조건적 비교 명령과 하나 이상의 조건부 비교 명령으로 이루어진 일련의 명령을 사용하여 평가될 수 있는데, 여기서 각각의 조건부 비교 명령은 이전의 명령이 특정 조건을 만족하는 경우에만 조건을 업데이트하도록 배열되어 있다.
예를 들면, (A==B && C==D)|| E==F의 표현은 다음의 일련의 명령을 사용하여 평가될 수 있다:
CMP A,B
CMPEQ C,D
CMPNE E,F
무조건적 비교 명령(CMP A,B)은 A와 B의 값을 비교하고 비교 결과에 따라 조건 플래그를 설정한다. A와 B가 같으면, 조건 플래그는 EQ 상태로 놓여지고, A와 B가 동일하지 않으면, 조건 플래그는 NE 상태에 놓여진다.
조건부 비교 명령(CMPEQ C,D)의 실행시, 조건 플래그가 EQ 상태에 있으면(즉, 시험 A==B가 만족됨), C와 D의 비교가 수행되고 비교 결과에 따라 조건 플래그가 업데이트된다. 이와 달리, 조건 플래그가 NE 상태에 있으면(즉, A==B가 만족되지 않음), CMPEQ 명령은 NOP으로서 거동하고 조건 플래그는 변경되지 않는다. 이것은 첫 번째 두 개의 명령의 실행 후 조건 플래그는 A=B이고 C=D일 때만 EQ 상태를 지시할 것이고 그렇지 않은 경우 NE 상태를 지시할 것임을 의미한다. 이것은 AND 연산을 이용하여 A==B와 C==D 시험을 결합하기 위한 정확한 결과이다.
다음, 조건부 비교 명령(CMPNE E,F)이 실행되며, 조건 플래그가 EQ 상태(즉, 시험 A==B && C==D가 만족됨)에 있으면, CMPNE 명령은 NOP으로서 춰급될 것이므로 조건 코드는 EQ 상태에 유지될 것이다. 대안적으로, 조건 플래그가 NE 상태(즉, 시험 A==B && C==D가 만족되지 않음)에 있으면, E와 F의 비교가 수행되고 비교 결과에 따라 조건 플래그가 업데이트된다. 따라서, 최종적인 결과는 (A=B AND C=D)이거나 E=F이면 EQ가 될 것이고, 이들 시험 어느 것도 만족되지 않는 경우에만 NE가 될 것이다. 이것은 시험 (A==B && C==D)와 E==F와 OR 연산을 결합하기 위한 정확한 결과이다.
따라서, 조건부 비교 명령(CMPEQ와 CMPNE)은 (A==B && C==D)||E==F 형식의 일련의 시험을 평가하는데 사용될 수 있다. 그러나, 이들 종류의 명령은 일련의 시험 과정 내의 모든 개별 시험이 동일한 종류의 관계 또는 동일한 종류의 관계로 변환될 수 있는 다른 종류의 관계를 평가하는 경우에만 사용될 수 있다. 예를 들면, 이전의 예에서 모든 개별 시험은 "동일함"의 관계를 평가한다. 이와 달리, 조건 명령은 C<D의 관계가 A>B와 동일한 종류의 관계인 D>C로 변환될 수 있으므로 (A>B && C<D) 형식의 논리적 조건을 표현하는데 사용될 수 있다. 그러나, 예컨대 (A>B||C==D) && E<=F, 또는 A==B && C!=D와 같은 논리적 표현을 시험하는 것은 가능하지 않은데, 이는 시험되는 관계가 달라서 서로 변환될 수 없기 때문이다.
그러므로, 이들 조건 명령은 소정의 종류의 논리적 표현을 시험하는데만 사용될 수 있다. 이것은 이러한 명령을 사용하여 컴파일될 수 있는 소스 코드의 양이 제한되므로 컴파일러가 조건 명령이 특정 용례에 사용될 수 있는지 여부를 결정하는 것이 복잡함을 의미한다.
본 발명의 일 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
데이터를 처리하는 처리 회로와;
프로그램 명령에 응답하여, 상기 데이터를 처리하도록 상기 처리 회로를 제어하는 제어 신호를 생성하는 명령 디코더와;
상기 데이터의 처리 중에 변형 가능한 상기 처리 회로의 현재 조건 상태를 저장하는 상태 저장소를 포함하고;
상기 프로그램 명령은 조건부 비교 명령을 포함하고, 상기 명령 디코더는 상기 조건부 비교 명령에 응답하여, 조건부 비교 연산을 수행하도록 상기 처리 회로를 제어하는 제어 신호를 생성하며, 상기 조건부 비교 연산은:
(i) 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
(ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하는 것을 특징으로 한다.
본 발명은 처리 회로의 현재 조건 상태가 시험 조건을 통과하는지 여부를 결정하도록 처리 회로를 제어하는 조건부 비교 명령을 제공한다. 현재 조건 상태가 시험 조건을 통과 또는 실패하는지 여부에 무관하게, 현재 조건 상태는 업데이트된다. 현재 조건 상태의 새로운 값은 현재 조건 상태가 시험 조건을 통과 또는 실패하였는지 여부에 따라 다른 방식으로 결정된다. 현재 조건 상태가 시험 조건을 통과하였으면, 제1 및 제2 피연산자에 대해 비교 연산이 수행되고 현재 조건 상태는 비교 연산 중에 생성된 결과 조건 상태로 설정된다. 다른 한편, 현재 조건 상태가 시험 조건에 실패하면, 현재 조건 상태는 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정된다.
현재 조건 상태가 시험 조건에 실패하는 경우 현재 조건 상태를 대체하는 특정 실패 조건 상태 값의 특정 능력은 연쇄 연산의 일련의 다른 종류의 비교를 시험하도록 조건부 비교 명령이 사용될 수 있게 한다. 이것은 연쇄 연산 중의 하나의 비교에 대응하는 조건부 비교 명령의 경우, 실패 조건 상태가 연쇄 연산 중의 다음 비교의 시험에 필요한 특별한 조건 상태를 셋업하는데 사용될 수 있기 때문이다. 따라서, 조건부 비교 명령은 연속적 연쇄 연산 내의 관계가 동일한 종류의 관계로 변형될 수 없는 경우에도 사용될 수 있다. 예를 들면, 일련의 형식 ((S==T && U>=0)||A!=B) && C>D는 시험되는 개별 관계들인 ==, >=, !=, > 이 상이하여 서로 변형될 수 없을지라도 시험될 수 있다. 이것은 조건부 비교 명령이 이전에 알려진 조건부 비교 명령보다 더 널리 사용될 수 있고, 그에 따라 컴파일러에 의해 보다 쉽게 사용 가능함을 의미한다.
상태 저장소는 현재 조건 상태를 저장하기 위한 임의의 종류의 저장 위치일 수 있다. 일례의 실시예에서, 상기 상태 저장소는 상태 레지스터를 포함할 수 있다.
장치의 현재 조건 상태는 상태 저장소 내에 저장된 적어도 하나의 조건 코드 플래그의 값을 포함할 수 있다. 예를 들면, 조건 코드 플래그는 기존의 비교가 -값, 0의 값, 올림(carry), 또는 오버플로(overflow)로 귀결되는지 여부를 나타내기 위해 제공될 수 있다. 이후 조건 플래그에 대해 조건부로 추후의 비교가 행해짐으로써 추후의 비교의 결과는 초기의 비교와 추후의 비교 모두에 의존한다. 이것은 초기와 추후의 비교가 함께 연결되어 결합된 논리적 조건을 형성하도록 할 수 있게 한다.
조건부 비교 명령은 시험 조건을 특정하기 위한 필드를 포함할 수 있다. 시험 조건은 조건부 비교 명령을 포함하는 프로그램의 프로그래머에 의해 직접 특정되거나, 조건부 비교 명령이 원하는 논리적 표현을 표현하는 일련의 프로그램 명령의 일부일 때 컴파일러에 의해 자동으로 생성될 수 있다.
실패 조건 상태는 즉시값(immediate value)으로서 조건부 비교 명령에 의해 특정될 수 있다. 따라서, 즉시값은 조건부 비교 명령의 실행시의 현재 조건 상태가 시험 조건에 실패하는 경우 현재 조건 상태로 설정될 값을 나타낸다.
실패 조건 상태를 나타내는 즉시값은 조건부 비교 명령을 포함하는 프로그램의 프로그래머에 의해 설정된 프로그래밍 가능한 값일 수 있다. 이것은 프로그래머에 대해 실패 조건 상태를 직접 제어할 수 있게 한다.
또한, 실패 조건 상태를 나타내는 즉시값은 조건부 비교 명령을 포함하는 프로그램의 컴파일러에 의해 설정된 프로그래밍 가능한 값일 수 있는데, 컴파일러는 조건부 비교 명령에 대한 실패 조건 상태가 나중에 통과되어야 하는 원하는 조건에 따라 프로그램밍 가능한 값을 선택한다. 이 경우, 컴파일러는 소망하는 조건을 결정하고, 시험 조건이 실패되는 경우 해당 조건을 현재 조건 상태로 기록될 프로그래밍 가능한 값으로 변환할 수 있다. 예를 들면, 원하는 조건이 EQ 조건이면, 컴파일러는 시험 조건이 실패되는 경우 조건 플래그에 기록시 EQ 조건이 만족되도록 하는 프로그램밍 가능한 값을 선택할 수 있다. 다수의 가능한 프로그래밍 가능한 값 각각이 원하는 조건을 만족하는 경우, 컴파일러는 어떤 프로그래밍 가능한 값이 사용되는지를 결정하기 위한 선택 기준을 적용하고 특별한 소스 코드가 매번 컴파일러에 의해 동일한 방식으로 컴파일되는 것을 보장하도록 구성될 수 있다. 예를 들면, 컴파일러는 원하는 조건을 만족시키는 최대의 또는 최소의 값을 선택하거나 실패 조건 상태 값으로서 사용되는 하나의 값을 선택하기 위해 임의의 다른 규칙을 적용할 수 있다.
실패 조건 상태 값은 N-비트 실패 조건 상태 값으로서 특정될 수 있는데, 여기서 N은 0보다 큰 임의의 정수이며, 현재 조건 상태는 N-비트 값에 의해 표현될 수 있다. 명령 디코더는 현재 조건 상태가 시험 조건에 실패하는 경우 상태 저장소에 N-비트 실패 조건 상태 값을 기록하도록 처리 회로를 제어할 수 있다. 실패 조건 상태 및 현재 조건 상태는 현재 조건 상태가 시험 조건에 실패할 때 현재 조건 상태를 업데이트하기 위해 실패 조건 상태 값의 특정 비트가 상태 저장소에 간단히 기록될 수 있도록 동일한 방식으로 인코딩될 수 있다.
일례의 실시예에서, 상기 현재 조건 상태는 미리 정해진 조건 상태를 포함하는 복수의 조건 상태 중 임의의 상태로 설정될 수 있으며, 상기 현재 조건 상태는 상기 미리 정해진 조건 상태를 상기 실패 조건 상태로서 특정하는 조건부 비교 명령에 대해 시험 조건이 실패되면 상기 미리 정해진 조건 상태로 오직 설정될 수 있다.
조건부 비교 명령이 그 시험 조건을 실패하면, 현재 조건 상태는 명령에서 특정된 실패 조건 상태로 설정된다. 조건부 비교 명령이 그 시험 조건을 통과하면, 비교 연산이 수행되고 그 비교 연산 결과에 따라 현재 조건 상태가 업데이트된다. 비교 연산으로부터 얻어지는 업데이트된 조건 상태는 실패 조건 상태와 동일할 수 있으므로, 시험 조건이 통과 또는 실패됐는지 여부를 정확히 결정하는 것이 가능하지 않을 수 있다.
그러므로, 일례의 실시예에서, 정상적인 처리 연산으로부터는 생길 수 없는 미지 정해진 조건 상태가 제공될 수 있다. 미리 정해진 조건 상태는 조건부 비교 명령에 전용되므로 처리 회로는 미리 정해진 조건 상태를 그 실패 조건 상태로서 특정하는 조건부 비교 명령이 그 시험 조건을 실패한 경우 해당 미리 정해진 조건 상태에만 놓여질 수 있다. 따라서, 미리 정해진 조건 상태가 조건부 비교 명령의 실행 후에 생겼는지 여부를 시험하는 것에 의해, 미리 정해진 조건 상태를 실패 조건으로서 특정하는 조건부 비교 명령이 그 시험 조건을 통과 또는 실패했는지 여부를 결정하는 것이 가능하다. 이것은 예컨대, 특정 데이터 값이 주어진 데이터 값 범위 내에 있는지 여부를 시험하는데 유용할 수 있다.
조건부 비교 명령은 제1 및 제2 피연산자를 특정하기 위한 제1 및 제2 피연산자 필드를 포함할 수 있다. 제1 및 제2 피연산자 필드 중 적어도 하나는 제1 또는 제2 피연산자를 저장하는 저장 위치를 특정할 수 있다. 피연산자를 저장하는 저장 위치(예, 레지스터)의 수를 특정하는 것에 의해, 피연산자 필드는 명령 인코딩 내의 피연산자 필드에 대해 유효한 비트의 수보다 많은 수의 비트를 가지는 피연산자의 식별에 사용될 수 있다. 더욱이, 피연산자 필드 내의 저장 위치를 참조하는 것은 동일한 명령의 다중 실행 간에 달라지는 가변적인 피연산자가 특정되는 것을 허용한다.
명령 디코더는 미리 정해진 조합의 비트 값을 특정하는 피연산자 필드 중 하나에 응답하여 처리 회로를 제어하여 0의 값을 갖는 제1 및 제2 피연산자 중 대응하는 하나와 조건부 비교 연산을 수행하도록 구성될 수 있다. 예를 들면, 0의 피연산자를 나타내기 위해 모든 1 비트인 값(예, 0b11111)이 미리 정해진 조합의 비트로서 사용될 수 있다. 따라서, 미리 정해진 조합의 비트 값은 명령 디코더에 의해 저장 위치 지정자(specifier)로서 해석되지 않고, 대신에 0의 값을 식별하는데 사용된다. 이것은 0의 값과의 비교가 공통적이고 따라서 이러한 비교를 명령 구문 내에 직접 인코딩하는 능력은 0의 피연산자를 얻기 위해 저장 위치에 액세스할 필요성을 회피할 수 있음을 의미하기 때문에 유용하다.
제1 및 제2 피연산자 필드 중 하나는 즉시값을 제1 피연산자 또는 제2 피연산자로서 특정할 수 있다. 이러한 명령의 형태는 변수 값과 고정 값 사이의 비교에 유용할 수 있다. 이 경우, 연산자 필드 중 하나는 변수 피연산자를 저장하는 저장 위치를 특정하는데 사용될 수 있고, 다른 피연산자 필드는 고정 값을 나타내는 즉시값을 특정하는데 사용될 수 있다.
조건부 비교 명령의 시험 조건이 만족되는 경우 처리 회로에 의해 수행되는 비교 연산은 다양한 형태를 가질 수 있다. 예를 들면, 비교 연산은 다음의 것 중 임의의 하나를 포함할 수 있다:
(a) 제1 피연산자로부터 제2 피연산자의 감산 연산;
(b) 제2 피연산자에 제1 피연산자의 가산 연산;
(c) 제1 및 제2 피연산자에 대한 비트에 관한 배타적 OR 연산의 수행;
(d) 제1 및 제2 피연산자에 대한 비트에 관한 AND 연산의 수행;
(e) 상태 저장소의 제1 피연산자, 제2 피연산자 및 올림 비트의 가산 연산;
(f) 제1 및 제2 피연산자에 대한 비트에 관한 OR 연산의 수행.
비교 연산은 제1 및 제2 피연산자에 수행되는 다른 산술적 또는 논리적 연산을 포함할 수도 있다.
본 발명의 다른 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
데이터를 처리하기 위한 처리 수단과;
프로그램 명령에 응답하여, 상기 데이터를 처리하도록 상기 처리 수단을 제어하는 제어 신호를 생성하기 위한 명령 디코더 수단과;
상기 데이터의 처리 중에 변형 가능한 상기 처리 수단의 현재 조건 상태를 저장하기 위한 상태 저장 수단을 포함하고;
상기 프로그램 명령은 조건부 비교 명령을 포함하고, 상기 명령 디코더 수단은 상기 조건부 비교 명령에 응답하여, 조건부 비교 연산을 수행하도록 상기 처리 수단을 제어하기 위한 제어 신호를 생성하며, 상기 조건부 비교 연산은:
(i) 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
(ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하는 것을 특징으로 한다.
본 발명의 추가의 측면의 관점에서 데이터 처리 방법이 제공되며, 해당 방법은:
조건부 비교 명령을 포함하는 프로그램 명령에 응답하여, 데이터를 처리하도록 처리 회로를 제어하기 위한 제어 신호를 생성하는 단계와;
상기 데이터의 처리 중에 변형 가능한 상기 처리 회로의 현재 조건 상태를 저장하는 단계와;
상기 조건부 비교 명령에 응답하여, 조건부 비교 연산을 수행하도록 상기 처리 회로를 제어하기 위한 제어 신호를 생성하는 단계를 포함하며, 상기 조건부 비교 연산은:
(i) 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
(ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하는 것을 특징으로 한다.
본 발명의 또 다른 측면의 관점에서 데이터 처리 장치에 의한 실행을 위해 일련의 프로그램 명령을 컴파일링하는 방법이 제공되며, 상기 일련의 프로그램 명령은 두 개의 연산자에 대해 무조건적 비교 연산을 수행하고 상기 데이터 처리 장치의 현재 조건 상태를 상기 무조건적 비교 연산 중에 생성된 결과 조건 상태로 설정하도록 상기 데이터 처리 장치를 제어하기 위한 무조건적 비교 명령과, 조건부 비교 연산을 수행하도록 상기 데이터 처리 장치를 제어하기 위한 적어도 하나의 조건부 비교 명령을 포함하며, 상기 조건부 비교 연산은: (i) 상기 데이터 처리 장치의 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고; (ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하며; 상기 방법은:
(a) 하나 이상의 AND 또는 OR 연산을 이용하여 논리적으로 조합된 연속적 연쇄 연산의 일련의 1보다 큰 정수인 N개의 비교 연산을 정의하는 데이터의 입력을 수신하는 단계로서, 상기 N개의 비교 연산 각각은 각각의 피연산자가 각각의 미리 정해진 기준을 만족하는지 여부를 시험하는, 그러한 단계와;
(b) 상기 연속적 연쇄 연산 중 제1 비교 연산에 대응하는 상기 무조건적 비교 명령을 생성하는 단계와;
(c) 2와 N 사이의 i의 정수 값 각각의 경우:
(i) 상기 연속적 연쇄 연산 중 i번째 비교 연산이 AND 연산 또는 OR 연산을 이용하여 부분적 연속 연쇄 연산의 결과와 논리적으로 조합되는지 여부를 결정하는 서브 단계로서, 상기 부분적 연속 연쇄 연산은 상기 연속적 연쇄 연산 중 제1 내지 (i-1)번째 비교 연산을 포함하는, 그러한 서브 단계와;
(ii) 상기 i번째 비교 연산이 AND 연산을 이용하여 상기 부분적 연속 연쇄 연산의 상기 결과와 논리적으로 조합되면, 상기 i번째 비교 연산에 대응하는 조건부 비교 명령을 생성하는 서브 단계로서, 상기 조건부 비교 명령은 상기 (i-1)번째 비교 연산의 미리 정해진 기준이 만족될 때 통과되는 조건을 시험 조건으로서 특정하고, 상기 i번째 비교 연산의 미리 정해진 기준이 만족되지 않는 것에 대응하는 조건 상태를 실패 조건 상태로서 특정하는, 그러한 서브 단계와;
(iii) 상기 i번째 비교 연산이 OR 연산을 이용하여 상기 부분적 연속 연쇄 연산의 상기 결과와 논리적으로 조합되면, 상기 i번째 비교 연산에 대응하는 조건부 비교 명령을 생성하는 서브 단계로서, 상기 조건부 비교 명령은 상기 (i-1)번째 비교 연산의 미리 정해진 기준이 만족되지 않을 때 통과되는 조건을 시험 조건으로서 특정하고, 상기 i번째 비교 연산의 미리 정해진 기준이 만족되는 것에 대응하는 조건 상태를 실패 조건 상태로서 특정하는, 그러한 서브 단계
를 수행하는 단계와;
(d) 적어도 상기 (b) 단계에서 생성된 상기 무조건적 비교 명령과 상기 (c) 단계에서 생성된 (N-1)개의 상기 조건부 비교 명령을 상기 일련의 프로그램 명령으로서 출력하는 단계
를 포함하는 것을 특징으로 한다.
본 발명의 조건부 비교 명령은 하나 이상의 AND 또는 OR 연산을 이용하여 논리적으로 조합된 연쇄된 일련의 N개의 비교 연산을 표현하는데 사용될 수 있다. N 비교 연산 각각은 각각의 피연산자가 미리 정해진 기준을 만족하는지 여부를 시험한다. 본 발명의 조건부 비교 명령은 다른 기준이 비교 연산 각각에 시험되도록 할 수 있다. 예를 들면, 비교 연산 중 하나는 하나의 피연산자가 다른 피연산자보다 큰지 여부를 시험할 수 있고, 다음 비교 연산은 하나의 피연산자가 다른 피연산자와 같은지 여부를 시험할 수 있으며, 추가의 비교 연산은 하나의 피연산자가 다른 피연산자와 같지 않은지 여부를 시험할 수 있다.
"기준"이란 용어는 특정 비교(예, A>B 또는 C==D)에 의해 시험될 관계를 나타내는데 사용되는 반면, "조건"이란 용어는 조건부 비교 명령의 비교 연산의 수행 여부를 제어하는 시험(예, 현재 조건 상태가 H1 상태인지 여부를 보는 시험, Z 플래그가 이전 결과가 0이었음을 지시하도록 설정되는지 여부를 보는 시험, 또는 N 플래그가 이전 결과가 마이너스 였음을 지시하도록 설정되는지 여부를 보는 시험)을 나타냄에 유의하여야 한다.
연쇄된 일련의 N개의 비교 연산을 나타내는 일련의 프로그램 명령은 각각의 비교 연산(N은 1보다 큰 정수)마다 비교 명령을 생성하는 것에 의해 점진적으로 구성될 수 있다. 각각의 비교 연산은 미리 정해진 기준(예, A<B)을 특정하고, AND 또는 OR 연산에 의한 이전 비교 연산의 부분적 연쇄 연산의 결과에 링크된다. 연속적 연쇄 연산 중 제1 비교 연산의 경우, 무조건적 비교 명령이 생성된다. i번째 비교 연산의 경우(i는 2와 N 사이의 임의의 정수), 조건부 비교 명령이 생성되고, i번째 조건부 비교 명령의 시험 조건과 실패 조건 상태는 i번째 비교 연산이 AND 연산 또는 OR 연산을 이용하여 제1 내지 (i-1)번째 비교 연산으로 이루어진 부분적 연쇄 연산의 결과와 논리적으로 조합되는지 여부에 의존한다.
i번째 비교 연산이 AND 연산을 이용하여 이전의 비교 연산의 부분적 연쇄 연산의 결과와 논리적으로 조합되면, i번째 조건부 비교 명령은 (i-1)번째 비교의 미리 정해진 기준이 만족될 때 통과되는 조건을 시험 조건으로서 특정하고, i번째 비교 연산의 미리 정해진 기준이 만족되지 않는 것에 대응하는 조건 상태를 실패 조건 상태로서 특정한다. 이것은 (i-1)번째 미리 정해진 기준이 "실패" 결과를 생성하는 경우, i번째 조건부 비교 명령이 그 시험 조건을 실패하고 그에 따라 자체의 실패 조건 상태를 복귀하게 되는 반면, (i-1)번째 미리 정해진 비교 연산이 "통과" 결과를 내는 경우, i번째 비교 연산이 그 시험 조건을 통과하여 i번째 미리 정해진 기준이 만족되었는지 여부에 따라 결과 조건 상태를 생성하게 되는 것을 보장한다. 따라서, i번째 비교와 (i-1)번째 비교의 조합은 AND 연산에 대해 필요한 것인 (i-1)번째와 i번째 미리 정해진 기준 모두가 만족되는 경우 오직 통과 결과를 생성할 것이다.
다른 한편, i번째 비교 연산이 OR 연산을 이용하여 이전의 비교 연산의 부분적 연쇄 연산의 결과와 논리적으로 조합되면, i번째 비교 연산에 대응하는 조건부 비교 명령이 생성되며, 조건부 비교 명령은 (i-1)번째 비교 연산의 미리 정해진 기준이 만족되지 않을 때 통과되는 조건을 시험 조건으로서 특정하고, i번째 비교 연산의 미리 정해진 기준이 만족되는 것에 대응하는 조건 상태를 실패 조건 상태로서 특정한다. 이것은 (i-1)번째 미리 정해진 기준이 만족되는 경우, i번째 조건부 비교 명령이 그 시험 조건을 실패하고 그에 따라 만족되는 i번째 미리 정해진 기준에 대응하는 "통과" 조건 상태를 자체의 실폐 조건 상태로서 생성하는 것을 보장한다. 다른 한편, (i-1)번째 비교가 자체의 미리 정해진 기준을 만족하지 않는 경우, i번째 조건부 비교 명령은 그 시험 조건을 통과하여 i번째 미리 정해진 기준이 만족되었는지 여부에 따라 결과 조건 상태를 생성하게 된다. 이것은 (i-1)번째 및 i번째 미리 정해진 기준 중 임의의 하나의 기준이 만족되는 한, 전체 결과는 i번째 미리 정해진 기준과 관련된 "통과" 조건이 됨을 의미한다.
따라서, 이러한 형태의 일련의 조건부 비교 명령을 생성하는 것에 의해, 연속적인 연쇄 비교 연산은 일련의 프로그램 명령으로 변환될 수 있다. 생성된 일련의 명령은 이후 출력된다.
무조건적 비교 명령과 조건부 비교 명령이 생성되는 시간 순서는 중요하지 않음을 알 것이다. 예를 들면, 명령은 비교 연산의 연속적 연쇄 연산에 대응하는 시간 순서로 생성될 수 있다(즉, 카운터 i는 2부터 N까지 증분됨). 대안적으로, 명령은 연속적 연쇄 연산의 반대 시간 순서(카운터는 N부터 2까지 감분됨) 또는 임의의 시간 순서로 생성될 수 있다. 명령이 생성된 시간 순서에 무관하게, 생성된 명령의 프로그램 순서는 동일한데, 제1 명령은 연쇄 연산 중 제1 비교 연산에 대응하는 무조건적 비교 명령이고, 제2 명령은 연쇄 연산 중 제2 비교 연산에 대응하는 조건부 비교 명령인 등등이다.
컴퓨터에 의해 실행시 컴퓨터를 제어하여 일련의 전술한 프로그램 명령을 컴파일링하는 방법을 수행하는 컴퓨터 프로그램을 저장하기 위한 컴퓨터 저장 매체가 제공될 수 있다.
본 발명의 다른 측면의 관점에서 비일시적 컴퓨터 저장 매체가 제공되며, 해당 매체는 조건부 비교 연산을 수행하도록 처리 회로를 제어하기 위한 조건부 비교 명령을 포함하는 컴퓨터 프로그램을 저장하며, 상기 조건부 비교 연산은:
(i) 상기 처리 회로의 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
(ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하는 것을 특징으로 한다.
본 발명의 실시예를 단지 예시의 목적으로 하기의 첨부 도면을 참조로 설명한다.
도 1은 데이터 처리 장치를 개략적으로 예시하며;
도 2는 조건 코드 플래그의 예를 개략적으로 예시하며;
도 3a 및 3b는 시험 조건, 두 개의 레지스터 피연산자 및 즉시 실패 조건 상태 값을 특정하기 위한 필드를 포함하는 조건부 비교 명령의 예시적인 구문 및 인코딩의 예를 각각 예시하며;
도 4a 및 4b는 피연산자 중 하나가 즉시값으로서 특정된 조건부 비교 명령의 다른 예의 구문과 인코딩의 예를 각각 예시하며;
도 5는 조건부 비교 명령의 처리 방법을 예시하며;
도 6a-6f는 다른 비교 연산에 각각 대응하는 다른 종류의 조건부 비교 명령을 예시하며;
도 7a 및 7b는 연속적 연쇄 비교 연산을 나타내는 일련의 프로그램 명령을 생성하는 일례의 방법을 예시하며;
도 8은 다양한 조건 상태의 예와 각각의 조건 상태를 나타내는 조건 플래그의 조합을 예시하며;
도 9는 가상 장치 구현을 개략적으로 예시하며;
도 10은 조건부 비교 명령에 의해 전용으로 사용되는 미리 정해진 조건 상태를 포함하는 조건 상태의 예를 예시하며;
도 11은 미리 정해진 조건 상태를 그 실패 조건 상태로 특정하는 조건부 비교 명령을 사용하여 변수 X를 주어진 범위의 데이터 값으로 제한하는 예를 예시한다.
도 1은 데이터 처리 장치(2)를 예시한다. 장치(2)는 데이터를 처리하기 위한 처리 회로(4)를 포함한다. 처리 회로는 다양한 성분, 예컨대 레지스터 뱅크(6), 가산기(8), 시프터(shifter)(10) 및 곱셈기(12)를 포함할 수 있다. 가산기(8), 시프터(10) 및 곱셈기(12)는 집합적으로 레지스터 뱅크(6)에 저장된 데이터를 처리하고 처리 결과를 다시 레지스터 뱅크(6)로 기록한다. 처리 회로(4)는 이러한 구성에 한정되지 않으며, 통상적으로 간결한 표현을 위해 예시되지 않은 다른 많은 성분을 포함할 것임을 알 것이다. 데이터 처리 장치(2)는 프로그램 명령에 응답하여, 데이터를 처리하도록 처리 회로(4)를 제어하기 위한 제어 신호를 생성하는 디코더(14)를 포함한다.
데이터 처리 장치(2)는 적어도 처리 회로(4)의 현재 조건 상태를 포함하는 상태 데이터를 저장하기 위한 상태 저장소(15)를 포함한다. 도 1의 예에서, 상태 저장소(15)는 상태 레지스터이지만, 저장 위치는 다른 형태의 저장 위치를 포함할 수도 있다. 도 1에서 상태 레지스터(15)는 처리 회로(4) 내에 도시되어 있으나, 다른 실시예에서 상태 레지스터(15)는 장치(2)의 다른 부분에 위치될 수 있다. 일 실시예에서, 현재 조건 상태는 상태 레지스터(15) 내에 저장된 조건 코드 플래그의 세트에 의해 나타낸다. 조건 코드 플래그는 처리 회로(4)에 의해 생성된 이전의 처리 결과의 조건을 나타낸다.
도 2에 도시된 예의 실시예에서, 상태 레지스터(15)의 조건 코드 플래그는 이전의 처리 결과가 음수였는지 여부를 나타내기 위한 네거티브 플래그(N)와, 이전의 처리 결과가 제로였는지 여부를 나타내기 위한 제로 플래그(Z)와, 이전의 처리 결과가 생성되었을 때 올림(carry)이 생겼는지 여부를 나타내기 위한 올림 플래그(C)와, 이전의 처리 결과를 생성시 오버플로가 발생하였는지 여부를 지시하기 위한 오버플로 플래그(V)를 포함한다. 따라서, 조건 코드 플래그의 값들은 이전의 처리 결과에 대한 정보를 제공한다. 플래그는 음수, 제로 값, 올림 또는 오버플로가 발생하였음을 지시하도록 설정되고 반대인 경우를 지시하도록 소거되거나 그 반대가 될 수 있다. 예를 들면, 도 8 및 도 10에서 볼 수 있는 바와 같이 정보를 다른 조합의 조건 코드 플래그(N, Z, C, V)로 표현할 수 있다.
도 3a는 본 발명에 따른 조건부 비교 명령(CCMP)의 구문의 예를 예시한다. 조건부 비교 명령은 시험 조건, 두 개의 피연산자 및 실패 조건 상태를 특정하기 위한 필드를 가진다. 명령 디코더(14)는 조건부 비교 명령에 응답하여 처리 회로(4)를 제어함으로써 상태 레지스터(15)에 저장된 현재 조건 상태가 조건부 비교 명령과 관련된 시험 조건(cond)을 만족하는지 여부를 결정한다. 현재 조건 상태가 시험 조건을 만족하면, 처리 회로(4)는 두 개의 피연산자에 대해 비교 연산을 수행하고 처리 결과를 기초로 현재 조건 상태를 업데이트한다(예를 들면, 비교 연산 결과가 음수 값이면, 조건 플래그 N이 설정될 수 있다). 조건부 비교 명령의 실행시 현재 조건 상태가 시험 조건을 만족하지 못하면, 비교 연산은 수행되지 않으며, 조건부 비교 명령에 의해 특정된 실패 조건 상태 값이 상태 레지스터(15)에 기록되어 현재 조건 상태를 업데이트한다.
도 3b는 도 3a의 조건부 비교 명령의 인코딩의 예를 예시한다. 해당 예에서, 명령은 시험 조건을 특정하기 위한 4-비트 필드, 피연산자 레지스터를 특정하기 위한 두 개의 5-비트 필드, 실패 조건 상태를 특정하기 위한 4-비트 필드를 포함한다. 원하는 경우 각 필드마다 다른 비트 수가 사용될 수 있음을 알 것이다. 이러한 예에서, 4-비트 시험 조건 식별자 #0b0000 은 EQ 조건을 나타낸다. 명령이 실행될 때, 조건 코드는 해당 조건 코드가 EQ 시험 조건을 만족하는지 여부를 알아 보기 위해 시험된다. EQ 시험 조건이 만족되면, 피연산자 레지스터(본 예에서는 레지스터 R2, R9)에 저장된 값이 비교되고, 조건 코드는 비교 결과에 따라 업데이트된다. EQ 시험 조건이 만족되지 않으면, 실패 조건 상태 값(본 예에서는 #0b0001)이 조건 코드(NZCV)에 기록된다.
도 3a의 구문에서, 조건부 비교 명령은 레지스터 지정자 Rn, Rm을 사용하여 양자의 피연산자를 특정한다. 레지스터 지정자(Rn, Rm)는 비교 대상의 피연산자를 저장하는 레지스터 뱅크(6)의 레지스터를 식별한다. 비교 대상 피연산자는 정수 또는 이동 소수점 수일 수 있다.
도 4a에 예시된 바와 같은 다른 구문의 예에서, 피연산자(#op) 중 하나는 조건부 비교 명령 내에 즉시값으로서 특정될 수 있다. 이것은 변수와 상수가 서로 비교될 때 유용할 수 있다. 도 4b는 도 4a에 예시된 구문을 갖는 명령의 인코딩의 예를 예시한다. 시험 조건(예, LT)이 만족되면, 피연산자 레지스터(예, R7)에 저장된 값이 즉시값(예, #19)과 비교되고 해당 비교에 의존하여 조건 코드가 업데이트된다. 시험 조건이 만족되지 않으면, 조건 코드(NZCV)에 실패 조건 상태 값(#0b0000)이 기록된다.
피연산자가 레지스터 지정자를 사용하여 특정되는 경우, 명령 디코더(14)는 선택적으로, 특정 레지스터 지정자 값을 레지스터에 저장된 피연산자가 아닌 제로 피연산자를 나타내는 것으로 해석하도록 설정될 수 있다. 예를 들면, 도 3의 실시예에서, 레지스터 지정자(Rm)가 모두가 1 비트인 값(0b11111)을 특정하는 경우, 이것은 레지스터(Rn)에 저장된 피연산자가 처리 회로(4)에 의해 제로 값과 비교되어야 함을 지시하는데 사용될 수 있다.
도 3 및 도 4의 양자의 구문에서, 실패 조건 상태는 시험 조건이 실패되는 경우 상태 레지스터(15)의 조건부 코드 플래그에 기록될 비트 값을 나타내는 즉시값으로서 특정된다. 예를 들면, 도 2에 도시된 바와 같은 NZCV 조건 코드 플래그를 사용하여, 0b0100의 실패 조건 상태를 나타내는 즉시값은 0이 음수 플래그 N, 올림 플래그 C 및 오버플로 플래그 V로 기록되어야 하고 1이 제로 플래그 Z로 기록되어야 함을 지시할 수 있다. 이러한 방식으로, 조건부 비교 명령은 시험 조건이 실패했을 경우 적용되는 조건 상태를 직접적으로 특정한다. 이것은 조건부 비교 명령이 현재 조건 상태를 다음의 조건부 명령에 의해 사용되기 용이한 적절한 값으로 설정하도록 사용될 수 있게 하기 때문에 유용하다.
도 5는 본 발명의 조건부 비교 명령을 사용한 데이터 처리 방법을 예시한다. 50 단계에서, 명령 디코더(14)는 일련의 명령에서 다음 명령을 디코딩한다. 60 단계에서, 디코더(14)는 다음 명령이 조건부 비교 명령인지 여부를 결정한다. 다음 명령이 조건부 비교 명령이 아니면, 70 단계에서 명령 디코더(14)는 다음 명령에 대응하는 제어 신호를 생성하고, 다음 명령에 대응하는 연산을 수행하도록 처리 회로(4)를 제어한다. 이후 처리는 80 단계로 진행되어, 처리될 임의의 추가 명령이 존재하는지 여부가 결정된다. 추가의 명령이 처리되어야 하면, 방법은 50 단계로 돌아가서 다음 명령이 디코딩된다. 더 이상의 명령이 처리되지 않을 것이면, 방법은 종료된다.
다른 한편, 60 단계에서 다음 명령이 조건부 비교 명령이면, 명령 디코더(14)는 조건부 비교 연산을 수행하도록 처리 회로(4)를 제어하기 위한 제어 신호를 생성한다. 90 단계에서, 처리 회로(4)는 상태 레지스터(15)의 조건 코드 플래그에 의해 표현된 현재 조건 상태가 조건 비교 명령괸 관련된 시험 조건을 통과하는지 여부를 결정한다. 현재 조건 상태가 시험 조건을 통과하면, 100 단계에서 제1 및 제2 피연산자에 대해 비교 연산이 수행되도록 처리 회로(4)가 제어된다. 이후 110 단계에서는 현재 조건 상태를 100 단계에서 비교 연산을 수행하는 동안 생성된 결과 조건 상태로 설정하도록 상태 래지스터(15)가 업데이트된다.
다른 한편, 90 단계에서 현재 조건 상태가 시험 조건을 통과하지 못한 경우, 120 단계에서 현재 조건 상태는 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정된다. 예를 들면, 조건부 비교 명령에 의해 특정된 즉시값이 상태 레지스터(15)의 조건 코드 플래그에 기록된다.
90 단계에서 현재 조건 상태가 시험 조건을 통과했는지 여부에 무관하게, 방법은 80 단계로 진행되어, 처리될 임의의 추가 명령이 존재하는지 여부가 결정된다. 다른 명령이 처리되어야 하면, 방법은 다시 50 단계로 돌아간다. 그렇지 않으면, 방법은 종료된다.
도 5는 조건부 비교 명령의 현재 조건 상태가 시험 조건을 통과하는지 여부, 현재 조건 상태를 나타내는 조건 코드 플래그의 업데이트를 보여준다(시험 조건이 실패되는 경우 무연산(no-op) 명령으로서 동작하는 이전의 조건 명령에 비해). 현재 조건 상태의 업데이트된 값은 현재 조건 상태가 시험 조건을 통과하는지 여부에 의존한다. 현재 조건 상태가 시험 조건을 통과하면, 업데이트된 조건 상태는 제1 및 제2 피연산자의 비교 결과를 기초로 결정되는 반면, 현재 조건 상태가 시험 조건을 통과하지 못한 경우, 업데이트된 값은 조건부 비교 명령에 의해 특정된 실패 조건 상태가 된다. 이러한 종료의 명령은 현재 조건 상태가 시험 조건을 통과하지 못하는 경우 현재 조건 상태가 업데이트되어야 할 실패 조건 상태를 특정하는 능력에 의해 이들 명령이 다른 종류의 논리적 관계를 시험하는 일련의 연쇄 비교 연산을 나타내는데 사용될 수 있으므로 유용하다.
다양한 종류의 조건부 비교 명령이 제공될 수 있는데, 각각의 비교 명령은 도 5의 90-120 단계에 따르면서도 100 단계에서 다른 비교 연산을 사용하여 처리된다. 이들 종류의 조건부 비교 명령의 예가 도 6a-6f에 예시된다. 도 6a-6f는 제1 및 제2 피연산자가 레지스터 지정자를 사용하여 식별되는 형태의 명령을 예시하고 있지만, 연산자 중 하나가 즉시값으로서 특정되는 다른 형태를 각기 갖는 명령들도 제공될 수 있다. 또한, 이들 명령의 구문은 원하는 경우 아래 설명되는 바와 같이 실패 조건 상태를 즉시값(#imm)보다는 조건 연산 기호로서 특정하도록 변형될 수 있다.
도 6a는 조건부 비교 포지티브 명령(CCMP)을 예시한다. 조건부 비교 포지티브 명령에 의해 특정된 시험 조건이 통과되면, 처리 회로(4)는 제1 피연산자로부터 제2 피연산자를 감산하고 결과 조건 상태를 조건 플래그에 기록하도록 제어되는 반면, 시험 조건이 실패되면, 명령에서 특정된 실패 조건 상태(#imm)가 조건 플래그에 기록된다. 이러한 종류의 명령은 제1 피연산자가 제2 피연산자보다 큰지 또는 동일한지 여부를 시험하는데 유용할 수 있다.
도 6b는 조건부 비교 네거티브 명령을 예시한다. 명령에 의해 특정된 시험 조건이 현재 조건 상태에 의해 통과되면, 제1 및 제2 피연산자는 함께 가산되고 결과 조건 상태가 조건 플래그에 기록되는 반면, 현재 조건 상태가 시험 조건을 통과하지 못하면, 실패 조건 상태(#imm)가 조건 플래그에 기록된다. 이러한 종류의 명령은 제1 피연산자가 제2 피연산자에 -1을 곱하는 것으로 얻어진 갑보다 큰지 여부를 시험하는데 유용할 수 있다(제1 및 제2 피연산자의 가산은 제1 피연산자로부터의 감산(-1*제2 피연산자)과 상응하기 때문에).
도 6c는 조건부 동등 시험 명령(CTEQ)을 예시한다. 이러한 종류의 명령이 실행시, 명령에 의해 특정된 시험 조건이 통과되는 경우, 처리 회로(4)는 제1 및 제2 피연산자에 대해 배타적인 OR 연산을 수행하고 결과 조건 상태를 조건 플래그에 기록하도록 설정되는 반면, 시험 조건이 실패되면, 명령에 의해 특정된 실패 조건 상태(#imm)가 조건 플래그에 기록된다. 이러한 종류의 명령은 제1 피연산자가 제2 피연산자와 같은지 여부를 시험하는데 유용할 수 있다.
도 6d는 조건부 비트 관련 시험 명령(CTST)을 예시한다. 이러한 종류의 명령이 실행시, 시험 조건이 통과되면, 처리 회로는 제1 및 제2 피연산자에 대해 비트 관련 AND 연산을 수행하고 결과 조건 상태를 조건 플래그에 기록하는 반면, 시험 조건이 실패되면, 실패 조건 상태(#imm)가 조건 플래그에 기록된다. 이러한 종류의 명령은 제2 피연산자 내의 위치상 '1' 비트에 대응하는 제1 피연산자의 비트가 모두 제로이거나 모두 제로가 아닌지 여부를 시험하는데 사용될 수 있다. 특히 유용한 경우는 제2 피연산자가 꼭 하나의 '1' 비트를 포함하는 경우와 명령이 제1 피연산자의 대응하는 비트가 '0' 또는 '1'인지 여부를 시험하는 경우이다.
도 6e는 조건부 올림 가산 명령(CADC)을 예시한다. 이러한 명령이 실행시, 시험 조건이 통과되면, 처리 회로(4)는 제1 피연산자, 제2 피연산자 및 상태 레지스터(15) 내의 올림 플래그(C)의 현재 값을 가산하고 이러한 가산에 따른 결과 조건 상태를 조건 플래그에 기록하도록 제어된다. 다른 한편, 시험 조건이 실패되면, 실패 조건 상태(#imm)가 다른 종류의 조건부 비교 명령으로써 조건 플래그에 기록된다. 가산 올림 연산은 다중-워드 가산의 제2, 제3 또는 추가의 워드를 나타내고 올림 비트는 다중-워드 가산의 이전 워드가 올림으로 귀결되었는지 여부를 나타내는데 사용될 수 있다.
도 6f는 조건부 비트 관련 OR 시험 명령(CORRT)을 예시하는데, 해당 명령은 실행시 처리 회로(4)를 제어하여, 시험 조건이 통과되는 경우 제1 및 제2 피연산자의 비트 관련 OR을 수행하도록 한다. 비트 관련 OR로부터 얻어지는 결과 조건 상태는 조건 플래그에 기록된다. 다른 한편, 시험 조건이 실패되면, 실패 조건 상태(#imm)가 조건 플래그에 기록된다. 이러한 명령은 두 개의 레지스터 모두가 제로 값을 저장하는지 여부를 시험하는데 사용될 수 있다. 이것은 횡배각(double-width) 데이터 값이 제로와 같은지 여부를 시험하는데 특히 유용할 수 있다. 예를 들면, 횡배각 128-비트 값(RnHi/Lo)은 두 개의 64-비트 레지스터(RnHi, RnLo)를 사용하여 저장될 수 있다. 비트 관련 OR 시험 명령은 2배 값의 두 개의 절반값이 하나의 명령을 사용하여 제로에 대해 시험될 수 있게 하는데, 이는 횡배각 값의 상부 및 하부의 비트 관련 OR이 양쪽 부분이 제로와 같은 경우에만 제로 값을 가질 것이기 때문이다. 이것은 횡배각 값의 각 부분을 제로에 대해 개별 비교하는 것에 비해 더 효율적일 수 있다, 따라서, (RnHi/Lo!=0)&&(RmHi/Lo==0) 형식의 표현은 두 개의 명령을 사용하여 효율적으로 평가될 수 있다:
Figure 112012096290463-pct00001
임의의 특정 실시예에서 명령 디코더는 이들 명령 중 임의의 하나의 명령에 응답하여 처리 회로(4)를 제어함으로써 대응하는 종류의 조건부 비교 연산을 수행할 수 있음을 알 것이다. 예를 들면, 특정 실시예에서 디코더(14)는 예컨대 도 6a 및 도 6b에 예시된 종류의 조건부 비교 명령에 응답하지만 그 외의 종류의 조건부 비교 명령에는 응답하지 않도록 설정될 수 있다.
연속적 연쇄 비교 연산을 나타내는데 일련의 조건부 비교 명령이 사용될 수 있는데, 여기서 연속적 연산의 각각의 비교 연산은 AND 또는 OR 연산을 이용하여 이전의 모든 비교 연산의 조합 결과와 논리적으로 조합된다(예, (A<B && C==D || E>=F)의 연속 연산). 각각의 비교 연산은 특정 기준을 시험한다(예, 상기 예에서, 제1 비교 연산은 A<B 여부의 기준을, 제2 비교 연산은 C=D 여부의 기준을, 제3 비교 연산은 E≥F 여부의 기준을 시험한다). 이전에 알려진 조건부 명령과 달리, 본 발명의 조건부 비교 명령은 연쇄된 비교 연산이 2종 이상의 기준을 시험하는 경우 사용될 수 있다.
도 7a 및 도 7b는 특정의 연속적 연쇄 비교 연산을 일련의 비교 명령으로 변환시키는 방법의 실시예를 예시한다. 이러한 방법은 예컨대 비교 연산의 순서를 정하는 입력을 수신하고 대응하는 순서의 프로그램 명령을 생성하는 컴파일러에 의해 수행될 수 있다.
도 7a는 이러한 방법의 제1 실시예를 예시한다. 200 단계에서 연속적으로 연쇄된 N개의 비교 연산을 정하는 데이터가 입력된다(N은 1보다 큰 임의의 정수이다). 202 단계에서 카운트 변수 i가 N과 같아지도록 설정된다. 204 단계에서 연쇄된 연산의 i차 비교를 연쇄된 연산의 1차~(i-1)차 비교의 조합된 결과와 조합하는 논리적 연산이 AND 연산 또는 OR 연산인지 여부가 결정된다. 예를 들면, (A<B && C==D) || E>=F의 연산에서, i=3인 경우, 연산의 i차 비교(E>=F)는 OR 연산(||)을 통해 1차~(i-1)차 비교(A<B && C==D)의 조합에 연결되고, i=2인 경우, 연산의 i차 비교(C==D)는 AND 연산(&&)을 통해 (i-1)차 연산(A<B)에 연쇄된다.
204 단계에서 i차 비교 연산과 1차~(i-1)차 비교 연산의 부분 연쇄 연산이 AND 연산에 의해 연결되는 것이 결정되면, (i-1)차 비교가 미리 정해진 기준을 만족시킬 때 통과되는 조건으로 시험 조건(cond)이 설정되고, 실패 조건 상태 값이 만족되지 않은 i차 비교의 기준에 대응하는 임의의 값으로 설정되는 i차 비교 연산에 대한 조건부 비교 명령이 생성된다.
예를 들면, 상기 예에서 i=2인 경우, (i-1)차 비교(A<B)가 미리 정해진 기준을 만족시킬 때 통과되는 조건은 조건 LT(도 8 참조-부호있는 비교로 추정)인데, 이는 이것이 A<B를 지시할 것이기 때문이다. 따라서, 제2 조건부 비교 명령 연산에 대한 시험 조건은 LT이다. 또한, i=2인 경우, i차 비교(C==D)의 기준은 C가 D와 같지 않을 때, 즉 Z 플래그가 설정되지 않은 도 8에 예시된 NE 상태일 때 만족되지 않는다. 따라서, i차 조건부 비교 명령의 실패 조건 상태 값은 Z 플래그가 소거되는 결과를 가져오는 값의 임의의 조합으로 설정될 수 있다(예, 0b0000).
다른 한편, 204 단계에서 i차 비교 연산과 1차~(i-1)차 비교 연산의 부분적 연쇄 연산을 조합하는 논리적 연산이 OR 연산이면, 208 단계에서 (i-1)차 비교가 미리 정해진 기준을 만족시키지 못할 때 통과되는 조건으로 시험 조건이 설정되고, 실패 조건 상태 값이 만족되는 i차 비교의 기준에 대응하는 임의의 값으로 설정되는 i차 비교 연산에 대한 조건부 비교 명령이 생성된다.
예를 들면, 상기 예의 연산에서 i=3의 경우, (i-1)차 비교 연산(C==D)이 그 기준을 만족시키지 않을 때 통과되는 조건은 도 8의 NE 상태이므로, 제3 조건부 비교 연산에 대한 시험 조건은 NE가 되도록 설정된다. 또한, i=3의 경우, i차 비교(E>=F)에 대한 기준은 E가 F보다 크거나 같을 때 만족된다(예, 할당된 비교의 경우 GE 상태에서, 도 8 참조). 따라서, 실패 조건 상태 값은 GE 상태에 대응하는 조건 플래그 값의 임의의 조합으로 설정될 수 있다(예, 도 8에 따르면, 비트 N과 V는 동일하고 모든 다른 비트는 임의의 값-예, 0b0000을 가질 수 있다).
논리적 연산이 AND 또는 OR 연산인지 여부에 무관하게, 210 단계에서 카운트 변수 i가 결정되고 212 단계에서 새로운 카운트 변수 i가 2보다 크거나 같은지 여부가 결정된다. 새로운 카운트 변수 i가 2보다 크거나 같으면, i의 새로운 값에 대해 204-212 단계가 반복됨으로써 다른 비교 연산에 대해 다른 조건부 명령이 생성된다. 이러한 방식으로, 연쇄된 연산의 2차~N차 비교 연산 각각에 대해 조건부 비교 명령이 생성된다.
212 단계에서 i가 2보다 작으면, 방법은 214 단계로 진행되어, 연쇄된 연산의 제1 비교 연산에 대해 무조건적 비교 명령이 생성된다. 예를 들면, 상기 연쇄 연산에서, A<B의 여부를 결정하고 비교 결과에 따라 조건 코드 플래그를 업데이트하는 무조건적 비교 명령이 생성될 수 있다. 216 단계에서는 모든 생성된 명령이 생성의 역순으로 출력되어 연속적 연쇄 비교 연산을 나타내는 일련의 명령을 형성한다.
도 7b는 비교 연산에 대응하는 일련의 명령을 생성하는 방법의 다른 실시예를 예시한다. 도 7a의 대응하는 단계와 동일한 도 7b의 단계들은 도 7a에서와 동일한 참조 번호를 사용하여 표시되어 있다. 도 7b는 명령들이 도 7a에서와 같은 역순으로보다는 연쇄 연산 내의 대응하는 연산의 순서로 생성된다는 점에서 도 7a와 다르다. 도 7b의 214 단계에서 연쇄 연산 중 제1 비교 연산에 대한 무조건적 비교 명령이 생성된다. 220 단계에서 카운트 변수 i가 2의 값으로 초기화된다. 도 7a의 대응하는 단계와 동일한 204-208 단계가 i차 비교 연산을 위해 수행되고 i가 226 단계에서 N보다 커질 때까지 222 단계에서 I가 연속적으로 증분되는 동안 반복된다. 이것은 조건부 비교 명령이 연쇄 연산 중 2차~N차 비교 연산을 위해 생성됨을 의미한다. 일단 i가 N보다 크면, 230 단계에서, 생성된 명령이 230 단계에서의 생성 순서로 출력되어 일련의 프로그램 명령을 형성한다.
도 7a 및 도 7b로부터 알 수 있는 바와 같이, 제1 비교 연산을 위한 무조건적 비교 명령과 2차~N차 비교 연산을 위한 무조건적 비교 명령이 생성되는 순서는, 조건부 비교 명령이 2차~N차 비교 연산 각각을 위해 생성되고 무조건적 비교 명령이 제1 비교 연산을 위해 생성되며 해당 생성되는 명령들은 올바른 프로그램 순서로 출력되는 한, 특별히 중요한 것은 아니다. 당업자들은 도 7a 및 7b에 나타낸 것과 다른 생성 순서도 가능함을 알 것이다.
도 7a 및 7b의 214 단계에서 생성된 무조건적 비교 명령은 조건부 명령과 다른 구문을 갖는 명령일 수 있다. 예를 들면, 무조건적 비교 명령은 두 개의 피연산자를 특정하는 구문을 가지므로, 명령 디코더는 피연산자를 비교하도록 처리 회로(4)를 제어하기 위한 제어 신호를 생성하고 비교 결과에 따라 조건 코드 플래그(NZCV)를 업데이트한다. 무조건적 비교 명령 구문은 도 3, 도 4 또는 도 6에 예시된 조건부 비교 명령 구문의 시험 조건과 실패 조건 상태를 생략할 수 있다. 이러한 실시예에서 도 8의 AL(항상 통과) 조건 상태는 생략될 수 있다.
대안적으로, 무조건적 비교 명령과 조건부 비교 명령은 공통 구문을 가질 수 있고, 무조건적 비교 명령은 시험 조건(cond)을 조건 플래그의 값에 무관하게 언제나 만족되는 조건 상태로 설정하는 것에 의해 도 3, 도 4 또는 도 6 임의의 도면에 예시된 조건부 비교 명령 구문으로부터 형성된다. 예를 들면, 무조건적 명령의 경우, 시험 조건(cond)은 도 8의 "항상" 조건 상태(AL)와 동일하도록 설정될 수 있어서 명령은 항상 그 조건 코드를 통과한다(이 경우, 실패 조건 상태는 결코 요구되지 않을 것이므로 임의의 값으로 설정될 수 있다). 따라서, 동일 종류의 명령 구문이 해당 명령에 대해 특정된 시험 조건에 따라 무조건적 비교 명령과 조건부 비교 명령 모두로서 사용될 수 있다. 이것은 명령 인코딩 공간의 사용 효율을 향상시킬 수 있다.
도 8은 특정 조건 접미사(또는 조건 '연상 기호')에 의해 지정되는 특정 조건 상태를 각각 나타내는 조건 코드 플래그의 다른 조합을 보여주는 표를 예시한다. 예를 들면, PL 상태는 이전 처리 결과가 양의 값 또는 제로였음을 지시하고, 소거되는 "N" 조건 플래그에 의해 지정된다. 따라서, NZCV 비트 값 0b0xxx(x는 0 또는 1 중 임의의 수)의 임의의 조합은 N 비트 소거를 가져서 PL 상태를 지시할 수 있다.
도 7a 및 7b의 방법을 이하 상세히 설명한다.
다음과 같은 개별 비교의 "연쇄된" 연속 연산인 "if" 시험을 가지다고 가정한다:
Figure 112012096290463-pct00002
여기서, 예시만의 목적으로 s, t, u는 부호있는 변수이고, a, b, c, d는 부호 없는 변수(모두 똑같이 양호하게 부호 없는 변수일 수 있다)인 것으로 가정한다.
이러한 "연쇄된" 연산을 위한 코드 순서를 생성하기 위한 적절한 세트의 규칙은 다음과 같다:
1. 결과는 "연쇄" 연산 내의 최종 개별 비교에 적절한 조건에 의해 항상 반영될 것이다.
2. 연쇄된 "연산(sequence)"이 하나의 개별 비교를 포함하는 경우, 두 개의 피연산자에 대해 무조건적 비교(CMP) 명령을 사용한다(도 7a 및 7b의 214 단계 참조). 무조건적 비교 명령은 비교 결과에 따라 도 8의 조건 상태 중 하나를 형성하도록 정의된다.
3. 그렇지 않으면, 연쇄된 연산은 하나의 추가 개별 비교와 함께 짧은 연쇄된 연산(ANDed 또는 ORed)으로 이루어진다.
4. 연쇄된 연산이 하나의 추가 비교와 함께 짧은 연쇄된 연산(ANDed)로 이루어지면, 해당 짧은 연쇄된 연산에 대해 명령 시퀀스를 형성하고(도 7a 및 7b의 206 단계 참조) 그것을 다음의 것이 추종한다:
Figure 112012096290463-pct00003
여기서,
cond는 통과시 짧은 연쇄된 시퀀스에 의해 형성되는 조건;
op1과 op2는 추가 비교를 위한 두 개의 피연산자;
imm은 추가 비교로부터의 원하는 "실패된" 결과에 대응하는 조건 플래그 값(N, Z, C, V)의 임의의 세트이다.
이것은 짧은 연쇄된 연산이 자체의 "실패' 조건을 형성하는 경우, 추가 비교가 자체의 "실패된" 결과를 형성할 것이고, 짧은 연쇄된 연산이 그 "통과된" 상태를 형성했으면, 추가 비교는 추가 비교에 있어서 ANDing을 위한 올바른 동작인 개별 시험의 결과에 따라 자체의 "실패된" 결과 또는 자체의 "통과된" 결과를 형성하는 것을 보장한다.
5. 연쇄된 연산이 하나의 추가 비교와 함께 짧은 연쇄된 연산(ORed)로 이루어지면(도 7a 및 7b의 208 단계 참조), 해당 짧은 연쇄된 연산을 위해 명령 시퀀스를 형성하고 이를 다음의 것이 추종한다:
Figure 112012096290463-pct00004
여기서,
cond는 실패시 짧은 연쇄된 시퀀스에 의해 형성되는 조건;
op1과 op2는 추가 비교를 위한 두 개의 피연산자;
imm은 추가 비교로부터의 원하는 "통과된" 결과에 대응하는 조건 플래그 값(N, Z, C, V)의 임의의 세트이다.
이것은 짧은 연쇄된 연산이 자체의 "통과' 조건을 형성하는 경우, 추가 비교가 자체의 "통과된" 결과를 형성할 것이고, 짧은 연쇄된 연산이 그 "실패된" 상태를 형성했으면, 추가 비교는 추가 비교에 있어서 ORing을 위한 올바른 동작인 개별 시험의 결과에 따라 자체의 "실패된" 결과 또는 자체의 "통과된" 결과를 형성하는 것을 보장한다.
Figure 112012096290463-pct00005
에 대한 코드 시퀀스를 생성하는 상기의 예에 대해 이것을 예시하면:
연속 연산의 최종 비교는 부호 없는 >이므로, 통과시(즉, 진실) 도 8의 HI 조건의 형성 및 실패시(즉, 거짓) 도 8의 LS 조건의 형성을 목적으로 하는 규칙 1을 따른다. 따라서, 목적은:
...아직 결정되지 않은 코드 시퀀스로서...
Figure 112012096290463-pct00006
연쇄된 연산 (((s==t && u>=0) || a!=b) && c>d)은 추가의 비교 c>d를 갖는 짧은 연쇄된 연산 ((s==t && u>=0) || a!=b) ANDed이다. 전술한 규칙 4를 따르면:
* 짧은 연쇄된 연산은 그 최종 비교로서 != 시험을 가지므로, 통과시 NE 조건을 형성한다.
* 추가 비교의 원하는 "실패된" 결과는 LS=(C==0) || (Z=1)이다. 예컨대 NZCV=0b0000와 같이, 해당 조건을 만족시키는 플래그의 NZCV 세트의 임의의 값을 선택한다.
그리고 코드 시퀀스는 다음으로 한 단계 발전될 수 있다:
...아직 결정되지 않은 코드 시퀀스로서...
Figure 112012096290463-pct00007
연쇄된 연산 (((s==t && u>=0) || a!=b)은 추가의 비교 a!=b를 갖는 짧은 연쇄된 연산 ((s==t && u>=0) ORed이다. 전술한 규칙 5를 따르면:
* 짧은 연쇄된 연산은 그 최종 비교로서 부호 있는 >=시험을 가지므로, 실패시 LT 조건을 형성한다.
* 추가 비교의 원하는 "통과된" 결과는 NE=(Z==0) || (Z==0)이다. 예컨대 NZCV=0b0000와 같이, 해당 조건을 만족시키는 플래그의 NZCV 세트의 임의의 값을 선택한다.
그리고 코드 시퀀스는 다음으로 2 단계 발전될 수 있다:
...아직 결정되지 않은 코드 시퀀스로서...
Figure 112012096290463-pct00008
마지막으로, 연쇄된 "연산" s==t는 단 하나의 비교이므로, 상기 규칙 2를 따라 전술한 바와 같이 이에 대해 무조건적 비교 명령을 사용한다. 이것은 풀 코드 시퀀스를 가져온다:
Figure 112012096290463-pct00009
Figure 112012096290463-pct00010
이상의 기술은 원하는 논리적 표현을 해당 표현을 평가하기 위한 일련의 프로그램 명령으로 변환시키는 컴파일러에 의해 수행될 수 있다. 명령들은 정확한 프로그램 순서로 출력되는 한 임의의 특정 순서로 결정되거나 생성될 필요가 없으므로, 다른 실시예의 생성 방법이 가능하다(도 7a 및 7b 참조).
상기 예에서, 실패 조건 상태는 상태 레지스터(15) 내의 조건 코드에 기록될 비트 값의 조합을 특정하는 즉시값으로서 명령 구문에 의해 특정된다.
그러나, 대안적으로 구문은 도 8에 예시된 바와 같이 HI, LS, PL 등의 조건 연상 기호(접미사)로서 실패 조건 상태를 특정할 수 있다. 이러한 형태의 명령에서, 프로그래머는 실패 조건 상태에 대해 바람직한 조건 연상 기호를 특정할 수 있고, 어셈블러는 이것을 명령의 조합시 특정 즉시값으로 변환시킬 수 있다. 따라서, 명령 디코더(14)의 관점으로부터 명령의 관점은 다른 실시예에서와 동일하지만, 프로그래머의 관점으로부터 명령 구문은 다른 조건 상태의 의미가 조건 코드 값으로부터보다는 더 확실히 이해될 수 있으므로 더 직관적이다.
특정 조건 연상 기호에 응답하여, 어셈블러는 연상 기호에 의해 나타낸 조건 상태가 유지되도록 조건 플래그에 기록될 수 있는 임의의 실패 조건 상태 값을 선택할 수 있다. 동일한 조건에 대응하는 복수의 가능한 즉시값이 존재하면, 어셈블러는 조건에 대응하는 값을 선택하기 위한 규칙을 마련할 수 있다. 예를 들면, 어셈블러는 소스 코드가 매번 동일한 방식으로 조합되는 것을 보장하기 위해 최대 또는 최소의 가능한 값을 선택할 수 있다. 예를 들면, 도 8에서 EQ 상태를 만족시키는 최대의 가능한 값은 0b1111(Z 비트 설정)이다.
따라서, 실패 조건 상태가 조건 연상 기호로서 특정되는 실시예에서, 상기 예에서 결정된 최종 명령 연산은 다음과 같이 보여질 수 있다:
Figure 112012096290463-pct00011
도 9는 사용될 수 있는 가상 장치 구현을 예시한다. 서두에 언급한 실시예들은 관련 기술을 지원하는 특정 처리 하드웨어를 동작시키는 장치 및 방법과 관련하여 본 발명을 구현하고 있지만, 소위 하드웨어 기기의 가상 장치 구현을 제공하는 것도 가능하다. 이들 가상 장치 구현은 통상 가상 장치 프로그램(510)을 지원하는 호스트 운영 시스템(520)을 구동시키는 호스트 프로세서(530) 상에서 구동된다. 통상, 적절한 속도로 실행되는 가상 장치 구현의 제공에는 고출력 프로세서가 필요하지만, 이러한 접근은 예컨대, 호환성 또는 재사용의 이유로 다른 프로세서에 고유한 코드의 작동을 원하는 경우와 같이 소정의 환경에서 정당화될 수 있다. 가상 장치 프로그램(510)은 가장 장치 프로그램(510)에 의해 모델링되는 장치인 실제 하드웨어 기기에 의해 제공될 수 있는 어플리케이션 프로그램 인터페이스와 동일한 어플리케이션 프로그램 인터페이스를 어플리케이션 프로그램(500)에 제공한다. 따라서, 전술한 메모리 액세스의 제어를 포함하는 프로그램 명령은 가상 장치 프로그램(510)을 사용하여 가상 장치 하드웨어와의 상호 작용을 모델링하도록 어플리케이션 프로그램(500) 내로부터 실행될 수 있다.
도 10은 도 8에 예시된 조건 상태로의 선택적인 확장을 예시한다. 도 10의 예에서, 처리 회로(4)는 조건부 비교 명령에 전용으로 사용되는 미리 정해진 조건 상태(MZ)를 포함하는 다수의 상이한 조건 상태 중 임의의 상태로 설정될 수 있다. 처리 장치는 정상적인 처리 연산의 결과로서 MZ 조건 상태에 놓여질 수 없다. MZ 조건 상태는 해당 MZ 조건 상태를 실패 조건 상태로 특정하는 조건부 비교 명령이 시험 조건에 실패하는 경우에만 생긴다. 도 10의 예에서, MZ 상태는 "마이너스 제로" 결과를 나타내는 설정되는 N 및 Z 플래그에 의해 표현된다. "마이너스 제로" 결과는 정상적인 처리 연산에서는 생길 수 없는데, 이는 정상 처리 연산은 제로나 음수, 그러나 제로와 음수 양자 모두는 아닌 결과를 가져올 것이기 때문이다. 도 10은 OK 상태도 예시하고 있는데, OK 상태는 MZ 상태의 반대이다. 따라서, OK 상태는 N 및 Z 플래그 중 어떤 것이 소거되면 만족된다.
MZ 상태는 명령에 대해 선행하는 조건 비교 명령이 자체 시험 조건을 통과 또는 실패했는지 여부를 시험할 수 있도록 하기 때문에 유용하다. MZ 상태를 실패 조건 상태로 특정하는 조건부 비교 명령이 실행될 수 있다. 이후 후속하는 조건부 명령은 조건 플래그가 MZ 상태 또는 OK 상태에 있는지 여부를 시험할 수 있다. 조건 플래그가 MZ 상태에 있으면, 조건부 비교 명령은 그 시험 조건을 실패하였고, 조건부 플래그가 OK 상태에 있으면, 조건부 비교 명령은 그 시험 조건을 통과하였다.
도 11은 MZ 상태를 실패 조건 상태로 특정하는 조건부 비교 명령이 변수 X를 주어진 범위(BOT-TOP) 내에 제한하도록 사용될 수 있는 방법의 예를 예시한다. X가 허용 가능한 범위(BOT-TOP) 내에 있으면, X는 그 원래 값을 유지한다. X가 TOP보다 크면, X는 TOP와 같게 설정되고, X가 BOT보다 작으면, X는 BOT와 같게 설정된다. 따라서, X는 최대의 가능한 값이 TOP이고 최소의 가능한 값이 BOT가 되도록 제한된다.
도 11은 X의 값에서 이러한 제한을 실시하기 위한 예의 일련의 명령을 보여준다. 우선, X와 TOP의 값의 비교를 행하기 위해 비교 명령(CMP X, TOP)이 실행된다. 이후 비교 결과를 기초로 조건 플래그가 업데이트된다. X<TOP이면, 조건 플래그는 LT 조건 상태로 설정되는 반면, X≥TOP이면, 조건 플래그는 GE 조건 상태로 설정될 것이다.
다음, 조건부 비교 명령(CCMP LT, X, BOT, MZ)이 실행된다. LT 시험 조건이 통과되면, X와 BOT가 비교되고, 비교 결과를 기초로 조건 플래그가 LT와 GE 조건 상태 중 하나로 업데이트된다. 다른 한편, LT 시험 조건이 실패되면, 조건 플래그는 MZ 상태에 놓여진다.
다음, 조건부 선택 명령(CSEL, MZ, X, TOP, X)이 실행된다. MZ 시험 조건이 통과되면, X는 TOP의 값을 가지도록 선택되지만, 그렇지 않으면 X는 그 원래 값을 유지한다. 마지막으로, 조건부 선택 명령(CSEL LT, X, BOT, X)이 실행된다. LT 시험 조건이 통과되면, X는 BOT의 값을 가지도록 선택되지만, 그렇지 않으면 X는 원래 값을 유지한다.
도 11은 X<BOT, BOT≤X<TOP 및 TOP≤X의 경우에 대해 가능한 X의 결과를 보여준다. MZ 상태는 CCMP 명령이 시험 조건(LT)에 실패한 결과로만 생기므로 MZ 상태의 발생은 X≥TOP을 지시한다. MZ 상태가 생기지 않았으면, CCMP는 시험 조건을 통과한 것이고, 따라서 X<TOP이다. X가 BOT보다 작은지, BOT보다 크거나 같은지 여부는 LT 또는 GE 조건 상태가 CCMP 명령의 실행 후에 생겼는지 여부로부터 결정될 수 있다.
도 10 및 도 11은 시험 조건에 실패한 조건부 비교 명령에 의해서만 설정될 수 있는 조건 상태가 N 및 Z 플래그가 모두 설정된 경우 MZ "마이너스 제로"인 예를 예시한다. 그러나, 다른 실시예에서 정상 처리 중에 생길 수 없는 조건 플래그 값의 임의의 조합을 MZ 상태 대신에 사용할 수 있다.
도 10의 예에서, MZ 상태는 도 8에 예시된 "항상" AL 상태를 대체함으로써 4-비트 식별자를 사용하여 식별될 수 있는 총 16개의 활용 가능한 조건 상태를 제공한다. 다른 예에서 AL 상태와 MZ 상태 모두가 제공될 수 있음을 알 것이다.
첨부 도면을 참조로 본 발명의 예시적인 실시예들이 여기에 상세히 설명되었지만, 본 발명은 이들 정확한 실시예에 한정되지 않으며 첨부된 특허청구범위에 의해 정의되는 발명의 범위로부터 벗어나지 않고 당업자에 의해 다양하게 변경 및 변형될 수 있음을 이해하여야 한다.

Claims (20)

  1. 데이터 처리 장치로서:
    데이터를 처리하는 처리 회로와;
    프로그램 명령에 응답하여, 상기 데이터를 처리하도록 상기 처리 회로를 제어하는 제어 신호를 생성하는 명령 디코더와;
    상기 데이터의 처리 중에 변형 가능한 상기 처리 회로의 현재 조건 상태를 저장하는 상태 저장소를 포함하고;
    상기 프로그램 명령은 조건부 비교 명령을 포함하고, 상기 명령 디코더는 상기 조건부 비교 명령에 응답하여, 조건부 비교 연산을 수행하도록 상기 처리 회로를 제어하는 제어 신호를 생성하며, 상기 조건부 비교 연산은:
    (i) 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
    (ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 상태 저장소는 상태 레지스터를 포함하는 데이터 처리 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 현재 조건 상태는 상기 상태 저장소 내에 저장된 적어도 하나의 조건 코드 플래그의 값을 포함하는 데이터 처리 장치.
  4. 제1항 또는 제2항에 있어서,
    상기 조건부 비교 명령은 상기 시험 조건을 특정하기 위한 필드를 포함하는 데이터 처리 장치.
  5. 제1항 또는 제2항에 있어서,
    상기 실패 조건 상태는 즉시값으로서 상기 조건부 비교 명령에 의해 특정되는 데이터 처리 장치.
  6. 제5항에 있어서,
    상기 즉시값은 상기 조건부 비교 명령을 포함하는 프로그램의 프로그래머에 의해 설정된 프로그래밍 가능한 값인 데이터 처리 장치.
  7. 제5항에 있어서,
    상기 즉시값은 상기 조건부 비교 명령을 포함하는 프로그램의 컴파일러에 의해 설정된 프로그래밍 가능한 값이며, 상기 컴파일러는 상기 조건부 비교 명령에 대한 실패 조건 상태에 의해 통과되어야 하는 원하는 조건에 따라 상기 프로그램밍 가능한 값을 선택하는 데이터 처리 장치.
  8. 제1항 또는 제2항에 있어서,
    상기 실패 조건 상태는 0보다 큰 임의의 정수인 N-비트 실패 조건 상태 값으로서 특정되며, 상기 현재 조건 상태는 N-비트 값에 의해 표현되며;
    상기 명령 디코더는 상기 현재 조건 상태가 상기 시험 조건에 실패하는 경우 상기 상태 저장소에 상기 N-비트 실패 조건 상태 값을 기록하도록 상기 처리 회로를 제어하는 데이터 처리 장치.
  9. 제1항 또는 제2항에 있어서,
    상기 현재 조건 상태는 미리 정해진 조건 상태를 포함하는 복수의 조건 상태 중 임의의 상태로 설정될 수 있으며;
    상기 현재 조건 상태는 상기 미리 정해진 조건 상태를 상기 실패 조건 상태로서 특정하는 조건부 비교 명령에 대해 상기 시험 조건이 실패되면 상기 미리 정해진 조건 상태로 오직 설정되는 데이터 처리 장치.
  10. 제1항 또는 제2항에 있어서,
    상기 조건부 비교 명령은 상기 제1 및 제2 피연산자를 특정하기 위한 제1 및 제2 피연산자 필드를 포함하는 데이터 처리 장치.
  11. 제10항에 있어서,
    상기 제1 및 제2 피연산자 필드 중 적어도 하나는 제1 또는 제2 피연산자를 저장하는 저장 위치를 특정하는 데이터 처리 장치.
  12. 제11항에 있어서,
    상기 명령 디코더는 미리 정해진 조합의 비트 값을 특정하는 상기 제1 및 제2 피연산자 필드 중 하나에 응답하여 상기 처리 회로를 제어하여 0의 값을 갖는 상기 제1 및 제2 피연산자 중 대응하는 하나와 상기 조건부 비교 연산을 수행하는 데이터 처리 장치.
  13. 제10항에 있어서,
    상기 제1 및 제2 피연산자 필드 중 하나는 즉시값을 상기 제1 피연산자 또는 제2 피연산자로서 특정하는 데이터 처리 장치.
  14. 제1항 또는 제2항에 있어서,
    상기 비교 연산은:
    (a) 상기 제1 피연산자로부터 상기 제2 피연산자의 감산 연산;
    (b) 상기 제2 피연산자에 상기 제1 피연산자의 가산 연산;
    (c) 상기 제1 및 제2 피연산자에 대한 비트에 관한 배타적 OR 연산의 수행;
    (d) 상기 제1 및 제2 피연산자에 대한 비트에 관한 AND 연산의 수행;
    (e) 상기 상태 저장소의 상기 제1 피연산자, 제2 피연산자 및 올림 비트의 가산 연산;
    (f) 상기 제1 및 제2 피연산자에 대한 비트에 관한 OR 연산의 수행
    중 임의의 것을 포함하는 데이터 처리 장치.
  15. 데이터 처리 장치로서:
    데이터를 처리하기 위한 처리 수단과;
    프로그램 명령에 응답하여, 상기 데이터를 처리하도록 상기 처리 수단을 제어하는 제어 신호를 생성하기 위한 명령 디코더 수단과;
    상기 데이터의 처리 중에 변형 가능한 상기 처리 수단의 현재 조건 상태를 저장하기 위한 상태 저장 수단을 포함하고;
    상기 프로그램 명령은 조건부 비교 명령을 포함하고, 상기 명령 디코더 수단은 상기 조건부 비교 명령에 응답하여, 조건부 비교 연산을 수행하도록 상기 처리 수단을 제어하기 위한 제어 신호를 생성하며, 상기 조건부 비교 연산은:
    (i) 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
    (ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  16. 데이터 처리장치의 데이터 처리 방법으로서:
    명령 디코더가, 조건부 비교 명령을 포함하는 프로그램 명령에 응답하여, 데이터를 처리하도록 처리 회로를 제어하기 위한 제어 신호를 생성하는 단계와;
    상태 저장소가, 상기 데이터의 처리 중에 변형 가능한 상기 처리 회로의 현재 조건 상태를 저장하는 단계와;
    상기 명령 디코더가, 상기 조건부 비교 명령에 응답하여, 조건부 비교 연산을 수행하도록 상기 처리 회로를 제어하기 위한 제어 신호를 생성하는 단계를 포함하며, 상기 조건부 비교 연산은:
    (i) 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
    (ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  17. 데이터 처리 장치에 의한 실행을 위해 일련의 프로그램 명령을 컴파일링하는 방법으로서:
    상기 일련의 프로그램 명령은 두 개의 연산자에 대해 무조건적 비교 연산을 수행하고 상기 데이터 처리 장치의 현재 조건 상태를 상기 무조건적 비교 연산 중에 생성된 결과 조건 상태로 설정하도록 상기 데이터 처리 장치를 제어하기 위한 무조건적 비교 명령과, 조건부 비교 연산을 수행하도록 상기 데이터 처리 장치를 제어하기 위한 적어도 하나의 조건부 비교 명령을 포함하며, 상기 조건부 비교 연산은: (i) 상기 데이터 처리 장치의 상기 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고; (ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것을 포함하며; 상기 방법은:
    (a) 하나 이상의 AND 또는 OR 연산을 이용하여 논리적으로 조합된 연속적 연쇄 연산의 일련의 1보다 큰 정수인 N개의 비교 연산을 정의하는 데이터의 입력을 수신하는 단계로서, 상기 N개의 비교 연산 각각은 각각의 피연산자가 각각의 미리 정해진 기준을 만족하는지 여부를 시험하는, 그러한 단계와;
    (b) 상기 연속적 연쇄 연산 중 제1 비교 연산에 대응하는 상기 무조건적 비교 명령을 생성하는 단계와;
    (c) 2와 N 사이의 i의 정수 값 각각의 경우:
    (i) 상기 연속적 연쇄 연산 중 i번째 비교 연산이 AND 연산 또는 OR 연산을 이용하여 부분적 연속 연쇄 연산의 결과와 논리적으로 조합되는지 여부를 결정하는 서브 단계로서, 상기 부분적 연속 연쇄 연산은 상기 연속적 연쇄 연산 중 제1 내지 (i-1)번째 비교 연산을 포함하는, 그러한 서브 단계와;
    (ii) 상기 i번째 비교 연산이 AND 연산을 이용하여 상기 부분적 연속 연쇄 연산의 상기 결과와 논리적으로 조합되면, 상기 i번째 비교 연산에 대응하는 조건부 비교 명령을 생성하는 서브 단계로서, 상기 조건부 비교 명령은 상기 (i-1)번째 비교 연산의 미리 정해진 기준이 만족될 때 통과되는 조건을 시험 조건으로서 특정하고, 상기 i번째 비교 연산의 미리 정해진 기준이 만족되지 않는 것에 대응하는 조건 상태를 실패 조건 상태로서 특정하는, 그러한 서브 단계와;
    (iii) 상기 i번째 비교 연산이 OR 연산을 이용하여 상기 부분적 연속 연쇄 연산의 상기 결과와 논리적으로 조합되면, 상기 i번째 비교 연산에 대응하는 조건부 비교 명령을 생성하는 서브 단계로서, 상기 조건부 비교 명령은 상기 (i-1)번째 비교 연산의 미리 정해진 기준이 만족되지 않을 때 통과되는 조건을 시험 조건으로서 특정하고, 상기 i번째 비교 연산의 미리 정해진 기준이 만족되는 것에 대응하는 조건 상태를 실패 조건 상태로서 특정하는, 그러한 서브 단계
    를 수행하는 단계와;
    (d) 적어도 상기 (b) 단계에서 생성된 상기 무조건적 비교 명령과 상기 (c) 단계에서 생성된 (N-1)개의 상기 조건부 비교 명령을 상기 일련의 프로그램 명령으로서 출력하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  18. 컴퓨터를, 제1항 또는 제2항 기재의 데이터 처리장치로서 기능시키기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능한 저장 매체.
  19. 비일시적 컴퓨터 저장 매체로서, 컴퓨터에 의해 실행시 컴퓨터를 제어하여 제17항의 방법을 수행하는 컴퓨터 프로그램을 저장하는 것을 특징으로 하는 비일시적 컴퓨터 저장 매체.
  20. 비일시적 컴퓨터 저장 매체로서: 해당 매체는 조건부 비교 연산을 수행하도록 처리 회로를 제어하기 위한 조건부 비교 명령을 포함하는 컴퓨터 프로그램을 저장하며, 상기 조건부 비교 연산은:
    (i) 상기 처리 회로의 현재 조건 상태가 시험 조건을 통과하면, 제1 및 제2 피연산자에 대해 비교 연산을 수행하고 상기 현재 조건 상태를 상기 비교 연산 중에 생성된 결과 조건 상태로 설정하고;
    (ii) 상기 현재 조건 상태가 상기 시험 조건에 실패하면, 상기 현재 조건 상태를 상기 조건부 비교 명령에 의해 특정된 실패 조건 상태로 설정하는 것
    을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 저장 매체.
KR1020127030565A 2010-05-11 2011-04-12 조건부 비교 명령 KR101731238B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB1007890.5 2010-05-11
GB1007890A GB2480285A (en) 2010-05-11 2010-05-11 Conditional compare instruction which sets a condition code when it is not executed
GB1017144.5A GB2480338B (en) 2010-05-11 2010-10-12 Conditional compare instruction
GB1017144.5 2010-10-12
PCT/GB2011/050719 WO2011141726A2 (en) 2010-05-11 2011-04-12 Conditional compare instruction

Publications (2)

Publication Number Publication Date
KR20130100900A KR20130100900A (ko) 2013-09-12
KR101731238B1 true KR101731238B1 (ko) 2017-04-28

Family

ID=42315168

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127030565A KR101731238B1 (ko) 2010-05-11 2011-04-12 조건부 비교 명령

Country Status (10)

Country Link
US (1) US9383999B2 (ko)
EP (1) EP2569694B1 (ko)
JP (1) JP5646737B2 (ko)
KR (1) KR101731238B1 (ko)
CN (1) CN102893254B (ko)
GB (2) GB2480285A (ko)
IL (1) IL222551A0 (ko)
MY (1) MY156502A (ko)
TW (1) TWI501148B (ko)
WO (1) WO2011141726A2 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
US8924695B2 (en) * 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US20160092398A1 (en) * 2014-09-29 2016-03-31 Apple Inc. Conditional Termination and Conditional Termination Predicate Instructions
US10514911B2 (en) * 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
GB2540216B (en) * 2015-07-10 2020-01-01 Advanced Risc Mach Ltd Comparison of wide data types
CN106201935A (zh) * 2016-06-28 2016-12-07 田彬 用于处理存储队列中数据相关的装置及方法
US10761979B2 (en) * 2016-07-01 2020-09-01 Intel Corporation Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
GB2556079A (en) * 2016-11-17 2018-05-23 Kumar Oberoi Bhushan Magic card trick
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10620956B2 (en) 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10255068B2 (en) 2017-03-03 2019-04-09 International Business Machines Corporation Dynamically selecting a memory boundary to be used in performing operations
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10613862B2 (en) 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
US11709676B2 (en) 2021-08-19 2023-07-25 International Business Machines Corporation Inferring future value for speculative branch resolution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US20040006687A1 (en) 2002-07-05 2004-01-08 Fujitsu Limited Processor and instruction control method
US6704853B1 (en) 1999-08-31 2004-03-09 Matsushita Electric Industrial Co., Ltd. Digital signal processing apparatus and method for controlling the same
US20060095733A1 (en) 2004-09-08 2006-05-04 Samsung Electronics Co., Ltd. Hardware device for executing conditional instruction out-of-order fetch and execution method thereof

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system
JPH0827816B2 (ja) * 1991-09-13 1996-03-21 日本電気株式会社 ファジー三段論法推論システム
US5717947A (en) 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
JP3843594B2 (ja) * 1998-04-08 2006-11-08 松下電器産業株式会社 プロセッサ、コンパイラ及び命令列変換装置
US6009512A (en) 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
US6505345B1 (en) * 2000-01-18 2003-01-07 Intel Corporation Optimization of initialization of parallel compare predicates in a computer system
JP2001265592A (ja) 2000-03-17 2001-09-28 Matsushita Electric Ind Co Ltd 情報処理装置
US6732356B1 (en) 2000-03-31 2004-05-04 Intel Corporation System and method of using partially resolved predicates for elimination of comparison instruction
TW569136B (en) 2002-05-09 2004-01-01 Ip First Llc Apparatus and method for conditional instruction execution
JP3851228B2 (ja) * 2002-06-14 2006-11-29 松下電器産業株式会社 プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム
JP3958662B2 (ja) 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ
US7581088B1 (en) * 2003-12-30 2009-08-25 Altera Corporation Conditional execution using an efficient processor flag
US7624256B2 (en) 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
JP2007272353A (ja) 2006-03-30 2007-10-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
JP3899114B2 (ja) 2006-04-28 2007-03-28 松下電器産業株式会社 プロセッサ
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
JP2008305185A (ja) 2007-06-07 2008-12-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
US8332620B2 (en) * 2008-07-25 2012-12-11 Freescale Semiconductor, Inc. System, method and computer program product for executing a high level programming language conditional statement
US8195923B2 (en) * 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
CN101593096B (zh) 2009-05-22 2011-11-16 西安交通大学 一种共享寄存器相关性消除的实现方法
US20120079245A1 (en) * 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
US8549504B2 (en) * 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US9886277B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US6704853B1 (en) 1999-08-31 2004-03-09 Matsushita Electric Industrial Co., Ltd. Digital signal processing apparatus and method for controlling the same
US20040006687A1 (en) 2002-07-05 2004-01-08 Fujitsu Limited Processor and instruction control method
US20060095733A1 (en) 2004-09-08 2006-05-04 Samsung Electronics Co., Ltd. Hardware device for executing conditional instruction out-of-order fetch and execution method thereof

Also Published As

Publication number Publication date
CN102893254A (zh) 2013-01-23
US9383999B2 (en) 2016-07-05
EP2569694A2 (en) 2013-03-20
GB2480338A (en) 2011-11-16
WO2011141726A3 (en) 2012-04-12
GB2480338B (en) 2013-07-31
TWI501148B (zh) 2015-09-21
JP2013530450A (ja) 2013-07-25
CN102893254B (zh) 2015-11-25
GB2480285A (en) 2011-11-16
TW201203101A (en) 2012-01-16
US20130097408A1 (en) 2013-04-18
MY156502A (en) 2016-02-26
JP5646737B2 (ja) 2014-12-24
IL222551A0 (en) 2012-12-31
WO2011141726A2 (en) 2011-11-17
GB201017144D0 (en) 2010-11-24
KR20130100900A (ko) 2013-09-12
EP2569694B1 (en) 2020-12-16
GB201007890D0 (en) 2010-06-23

Similar Documents

Publication Publication Date Title
KR101731238B1 (ko) 조건부 비교 명령
US7127593B2 (en) Conditional execution with multiple destination stores
CN108780395B (zh) 矢量预测指令
JPS5812606B2 (ja) デ−タ処理システム
JP5209609B2 (ja) ハードウェアエンドループ情報の命令へのコード化
WO2012023185A1 (ja) 試験方法、演算処理装置、試験プログラム、試験プログラム生成方法、試験プログラム生成装置、及び試験プログラム生成プログラム
KR20180066146A (ko) 벡터 데이터 전송 명령어
JPH02217926A (ja) コード生成方法
CN104025022A (zh) 用于具有推测支持的向量化的装置和方法
CN107851016B (zh) 向量算术指令
JP2008052684A (ja) 分岐履歴長の表示器、分岐予測システム及び分岐予測方法
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
JP2011253253A (ja) コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
KR20200090103A (ko) 분기 예측기
JP5732139B2 (ja) データ要素の条件付き選択
JP2019503010A (ja) 第1のアーキテクチャレジスタ番号および第2のアーキテクチャレジスタ番号を識別する符号化命令
GB2069733A (en) Conditional instruction execution in a pipelined processor
JPH1196001A (ja) プログラム実行装置及びプログラム変換方法
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions
JPS623341A (ja) 条件付制御方法
JP2005149297A (ja) プロセッサおよびそのアセンブラ
WO2002042897A2 (en) Data processing apparatus

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant