KR20130101052A - 데이터 요소의 조건적 선택 - Google Patents

데이터 요소의 조건적 선택 Download PDF

Info

Publication number
KR20130101052A
KR20130101052A KR1020137009023A KR20137009023A KR20130101052A KR 20130101052 A KR20130101052 A KR 20130101052A KR 1020137009023 A KR1020137009023 A KR 1020137009023A KR 20137009023 A KR20137009023 A KR 20137009023A KR 20130101052 A KR20130101052 A KR 20130101052A
Authority
KR
South Korea
Prior art keywords
storage element
data
condition
selection instruction
conditional selection
Prior art date
Application number
KR1020137009023A
Other languages
English (en)
Other versions
KR101802740B1 (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 KR20130101052A publication Critical patent/KR20130101052A/ko
Application granted granted Critical
Publication of KR101802740B1 publication Critical patent/KR101802740B1/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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • G06F9/265Microinstruction selection based on results of processing by address selection on input of storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

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)

Abstract

레지스터 등의 일 데이터 요소에 대해 연산을 수행하고나서 그 레지스터나 연산을 행하지 않은 또 다른 레지스터 중 어느 한쪽을 조건적으로 선택하는 데이터 처리장치, 방법 및 컴퓨터 프로그램. 상기 데이터 처리장치는, 1차 소스 레지스터, 2차 소스 레지스터, 목적지 레지스터, 조건, 및 상기 2차 소스 레지스터로부터 데이터 요소에 대해 행해지는 연산을 특정하는 적어도 하나의 조건적 선택 명령어를 디코딩하도록 구성된 명령어 디코더; 상기 명령어 디코더에 의해 제어된 데이터 처리연산을 행하도록 구성된 데이터 프로세서를 구비하고, 상기 데이터 프로세서는 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 소정의 결과를 갖는 상기 조건에 응답하여, 상기 2차 소스 레지스터로부터 상기 데이터 요소에 대해 상기 연산을 행하여 결과적 데이터 요소를 구성하고, 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 상기 소정의 결과를 갖지 않는 상기 조건에 응답하여, 상기 1차 레지스터에서 상기 데이터 요소로부터 상기 결과적 데이터 요소를 구성하고, 상기 결과적 데이터 요소를 상기 목적지 레지스터에 저장한다.

Description

데이터 요소의 조건적 선택{CONDITIONAL SELECTION OF DATA ELEMENTS}
본 발명은, 데이터 처리장치의 분야에 관한 것으로, 특히 조건에 의거하여 소스 데이터 요소를 선택하기 위한 조건적 선택 명령어의 분야에 관한 것이다.
조건적 명령어는, 예를 들어 영국 캠브릿지의 ARM®에 의해 처리할 때 사용되고 있고, 이들 명령어는 프로세서에게 소정의 충족 조건에 따라서만 처리 연산을 행하도록 지시한다. 충족되는데 필요할 수도 있는 조건들의 예들은, 미만, 이상, 동일, 네가티브, 캐리 인(carry in), 제로 등이 있다.
적어도 부분적으로 서로 병렬로 명령어를 행하는 특히 하이 엔드(end) 처리장치에서의 이들 조건적 명령어의 단점은, 입력에서와 같이 상기 조건적 명령어의 결과를 필요로 하는 명령어 스트림에 있어서 상기 조건적 명령어 이후의 명령어가, 상기 조건의 충족 여부에 따른 원시값이나 갱신된 결과값을 필요로 하기도 하는 점이다. 상기 이후의 명령어가 파이프라인에 입력될 수도 있고 상기 조건적 명령어가 계속 상기 파이프라인내에 있으므로, 상기 원시값 또는 상기 결과값 중 어느 한쪽을 상기 이후의 명령어에 대해 상기 파이프라인에서 이용하는데 필요하기도 하다. 이것은, 속도와 전력면에서 아주 높은 오버헤드를 갖는 원시값을 추가로 판독할 필요도 있다.
목적지 레지스터에 기록되는 결과를 충족 조건에 의거한 2개의 소스 레지스터의 선택으로부터 프로세서에 의해 선택하게 하는 선택 명령어도, 알려져 있다.
성능을 계속 유지하면서 상기 조건적 명령어의 많은 기능성을 유지할 수 있는 것이 바람직할 것이다.
제1 국면에서 본 본 발명의 데이터 처리장치는, 데이터 요소를 저장하기 위한 복수의 저장요소를 포함한 데이터 저장부; 1차 소스 저장요소, 2차 소스 저장요소, 조건, 및 상기 2차 소스 저장요소에 저장된 데이터 요소에 대해 행해지는 연산을 특정하는 적어도 하나의 조건적 선택 명령어를 디코딩하도록 구성된 명령어 디코더; 상기 명령어 디코더에 의해 제어된 데이터 처리연산을 행하도록 구성된 데이터 프로세서를 구비하고, 상기 데이터 프로세서는 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 소정의 결과를 갖는 상기 조건에 응답하여, 상기 2차 소스 저장요소로부터 상기 데이터 요소에 대해 상기 연산을 행하여 결과적 데이터 요소를 구성하고; 상기 데이터 프로세서는 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 상기 소정의 결과를 갖지 않는 상기 조건에 응답하여, 상기 1차 저장요소내의 상기 데이터 요소로부터 상기 결과적 데이터 요소를 구성한다.
본 발명에 의해 안 것은, 조건적 선택 명령어가, 조건의 소정의 결과에 응답하여 저장요소에 저장된 특별한 값을 선택하는 효율적인 방식이다는 것이다. 그 소정의 결과는, 충족 조건이거나 충족 조건이 아니어도 된다. 또한, 본 발명에 의해 안 것은, 상기 조건적 선택 명령어가 상기 저장요소 중 하나에 있어서의 어떤 값에 대해 연산이 행해지게 하는 경우, 이것이 많은 성능 단점없이 종래의 조건적 명령어의 많은 특성을 명령어에 제공할 수 있고, 액세스에 관해서는 2개의 저장요소 중 결과 요소가 간단히 선택된다는 것이다.
일부의 실시예에서, 상기 명령어는 목적지 저장요소를 더욱 특정하고, 상기 데이터 프로세서는 상기 적어도 하나의 조건적 선택 명령어에 응답하여 상기 결과적 데이터 요소를 상기 목적지 저장요소에 저장한다.
상기 명령어는, 상기 결과적 데이터 요소가 저장되거나, 소정의 저장장소를 상기 결과적 데이터 요소와 간단히 겹쳐쓰도록 구성되어도 되는 목적지 저장요소를 특정하여도 된다.
일부의 실시예에서, 상기 목적지 저장요소는 소스 저장요소 중 하나이어도 되고, 다른 실시예에서, 상기 목적지 저장요소는 다른 저장요소이어도 된다.
일부의 실시예에서, 상기 데이터 프로세서는, 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 상기 소정의 결과를 갖지 않는 상기 조건에 응답하여, 상기 2차 소스 저장요소내의 상기 데이터 요소에 대해 상기 연산을 행하고, 상기 1차 저장요소내의 상기 데이터 요소로부터 상기 결과적 데이터 요소를 구성한다.
상기 조건이 상기 소정의 결과를 갖지 않는 경우, 상기 조건은 상기 결과적 데이터 요소의 소스로서 선택된 상기 1차 저장요소이다. 일부의 실시예에서, 상기 1차 저장요소가 선택되긴 하지만, 상기 조건적 선택 명령어가 특정한 상기 연산은 상기 2차 소스 저장요소내의 상기 데이터 요소에 대해 계속 행해진다. 그러나, 이 경우에, 비록 본 연산의 결과를 필요로 하지 않을지라도, 상기 명령어의 상당한 실행시간이 걸리고, 이에 따라, 상기 조건이 소정의 결과를 갖는 경우 알려지기 전에 상기 2차 저장요소에서 상기 연산이 행해지면, 일단 상기 조건의 결과가 결정되고 그 순서의 지연이 감소되면 양쪽의 저장요소를 준비하여 선택하는 상기 조건의 결과를 결정하고 있는 것이 일반적이므로 어쨌든 본 연산을 행하는 것이 이로울 수 있다.
일부의 실시예에서, 상기 적어도 하나의 조건적 선택 명령어는 증가 조건적 선택 명령어를 포함하고, 상기 연산은 상기 2차 소스 저장요소로부터 상기 데이터 요소를 증가하는 것을 포함한다.
상기 조건적 선택 명령어는, 이 명령어와 연계된 서로 다른 연산을 가질 수 있지만, 일부의 실시예에서 증가 조건적 선택 명령어를 포함하고, 여기서 상기 연산은 상기 선택된 데이터 요소를 증가하는 것을 포함한다.
다른 실시예에서, 상기 조건적 선택 명령어는, 반전 조건적 선택 명령어를 포함하고, 여기서 상기 연산은 논리적으로 상기 선택된 데이터 요소를 반전하여 논리적으로 비트 반전된 저장요소값을 발생한다.
일부의 실시예에서, 이들 2개의 연산을 조합하여, 반전 증가 조건적 선택 명령어를 구성한다. 논리적으로 비트식으로 반전하고 나서 어떤 값을 증가하는 것은, 상기 데이터 요소의 산술 부정을 발생한다.
일부의 실시예에서, 상기 저장요소 데이터 저장부는, 제로 값으로 매핑하는 저장요소명을 포함한다.
제로 값으로 매핑하는 저장요소의 가능성뿐만 아니라 반전 및 증가등의 상기 조건적 선택 명령어들과 연계된 연산을 갖는 상기 조건적 선택 명령어들의 제공은, 많은 레거시 조건적 명령어로 행해진 연산에 대한 매핑을 하는 서로 다른 많은 연산을 행할 수 있는 처리장치를 제공한다. 나중에 이들을 예로 든다. 이렇게 하여, 레거시 시스템에 설치된 많은 조건적 명령어는, 이러한 조건적 선택 기능을 사용하여 적절한 방식으로 모방될 수 있다. 이러한 조건적 선택 기능은, 많은 성능 단점없이 레거시 조건적 명령어의 기능성을 제공하는 효율적이고 편리한 방식을 제공한다.
당업자에게 있어서 상기 저장요소는 다수의 것일 수 있다는 것, 예를 들면 상기 저장요소는 일부의 실시예에서는 레지스터일 수 있고 다른 실시예에서는 기억 장소이어도 된다는 것이 명백할 것이다.
일부의 실시예에서, 상기 명령어 디코더는 상기 조건적 선택 명령어에 응답하여 증가 제어신호를 출력하도록 구성되고, 상기 디코딩된 조건적 선택 명령어를 처리하도록 구성된 상기 프로세서는, 상기 2차 저장요소로부터의 값들과 캐리 인 신호를 수신하도록 구성된 가산기; 상기 1차 저장요소로부터의 신호와 상기 가산기의 출력으로부터의 신호를 수신하고, 상기 조건을 포함하는 다중화기의 선택신호를 수신하도록 구성되어, 상기 소정의 결과를 갖는 상기 조건이 상기 다중화기를 기동하여 상기 가산기의 상기 출력을 선택하는 상기 다중화기를 구비하고, 설정되는 상기 증가 제어신호에 따라, 상기 캐리 인 신호는 1로 설정되고, 상기 가산기는 상기 적어도 하나의 소스 저장요소로부터의 수신 값을 증가시킨다.
본 발명의 또 다른 실시예의 이점은, 이들 기능을 구현하는데 필요한 회로가, 많은 경우에 프로세서에 존재하여도 되고 상기 필요한 기능성을 제공하는데 재사용될 수 있는 간단한 처리회로이다는 것이다. 예를 들면, 상기 증가 연산은, 가산기와 캐리 인 신호를 사용하여 제공될 수 있고, 상기 증가 제어신호는 상기 캐리 인 신호를 설정하고 상기 다중화기의 선택 기능은 상기 조건의 결과이다.
일부의 실시예에서, 상기 명령어 디코더는, 상기 조건적 선택 명령어에 응답하여 반전 제어신호를 출력하도록 구성되고; 상기 디코딩된 조건적 선택 명령어를 처리하도록 구성된 상기 프로세서는, 설정되는 상기 반전 제어신호에 응답하여 인버터를 통해 상기 2차 소스 저장요소로부터의 값들을 수신하고, 설정되지 않은 상기 반전 제어신호에 응답하여 상기 인버터를 통과하지 않은 상기 2차 소스 저장요소로부터의 값들을 수신하도록 구성된 가산기; 상기 1차 저장요소로부터의 신호와 상기 가산기의 출력으로부터의 신호를 수신하고, 상기 조건을 포함하는 다중화기의 선택신호를 수신하도록 구성되어, 상기 소정의 결과를 갖는 상기 조건이 상기 다중화기를 기동하여 상기 가산기의 상기 출력을 선택하는 상기 다중화기를 구비한다.
반전 기능성은 인버터를 사용하여 제공될 수 있고, 이 인버터가 가산기와 결합되면, 반전과 증가는 필요한 경우 조합될 수 있다.
예를 들면, 일부의 실시예에서, 상기 명령어 디코더는, 상기 조건적 선택 명령어에 응답하여 증가 제어신호와 반전 제어신호를 출력하도록 구성되고; 상기 설정되는 증가신호에 응답하여, 상기 캐리 인 신호는 1로 설정되고, 상기 설정되는 상기 반전 신호에 응답하여, 상기 가산기는 상기 2차 소스 저장요소로부터 상기 수신된 반전값을 증가시킨다.
반전 및 증가 능력을 제공한다는 것은, 산술부정값이 2의 보수값의 형태로 제공될 수 있다는 것을 의미한다.
일부의 실시예에서, 상기 1차 소스 저장요소와 상기 2차 소스 저장요소는 동일한 저장요소이다.
서로 다른 소스 저장요소를 사용할 수 있지만, 일부의 실시예에서, 그들은 동일한 저장요소이다. 이 경우에, 상기 조건이 소정의 결과를 가지면, 결과 요소는 연산을 행하고 있던 저장요소에서의 값으로 구성되고, 상기 조건이 상기 소정의 결과를 갖지 않으면, 상기 저장된 데이터 요소는 결과적 데이터 요소를 구성하는데 사용된다. 이것은, 상기 조건적 선택은, 조건이 소정의 결과를 가지면 상기 연산을 수행하게 되고, 조건이 소정의 결과를 갖지 않으면 상기 연산을 수행하지 않게 된다는 점에서 이로울 가능성도 있다. 이를 구현하기 위한 일 방식은, 상기 저장요소로부터, 상기 연산을 수행하는 기능회로를 통과하는 일 경로와 상기 저장요소로부터 직접 가는 다른 경로와의 2개의 경로를 형성하는데 있고, 결과적 요소를 송신하는데 선택된 경로는 상기 조건의 결과에 좌우된다.
일부의 실시예에서, 상기 조건의 결과는, 적어도 하나의 이전의 데이터 처리연산에 응답하여 설정된 산술 논리 플래그로부터 결정된다.
상기 조건이 소정의 결과를 갖는지의 여부는, 적어도 하나의 이전의 데이터 처리연산에 응답하여 컴퓨터의 상태 저장요소에 설정된 산술논리 플래그로부터 결정되어도 된다. 이들의 이전의 데이터 처리연산은 상기 조건적 선택 명령어에 앞서 수행된 적어도 하나의 명령어에 응답하여 수행되고, 이들의 연산은, 상기 조건의 결과, 즉 조건 충족여부 및 이것에 따른 플래그의 설정 여부를 결정한다. 이에 따라, 상기 조건이 특정한 결과를 갖는지를 결정하기 위해서, 특정한 조건 코드를 상기 플래그와 비교하여, 일치하는 경우, 상기 조건이 상기 소정의 결과를 갖는다고 결정하고, 불일치하는 경우에는, 상기 조건이 상기 소정의 결과를 갖지 않는다고 결정한다. 본 시스템은 불일치가 상기 소정의 결과이고 상기 일치가 상기 소정의 결과가 아니도록 반전될 수 있었다는 것이 명백하다.
이전의 데이터 처리연산은 다수의 일일지도 모르지만, 일부의 실시예에서는, 이 데이터 처리연산이 상기 소스 저장요소 중 적어도 하나의 요소내에 데이터 요소를 또 다른 값과 비교하는 것을 포함한다.
조건 코드는 무엇인가, 이를테면 특정값 미만의 소스 저장요소 B에 있는 값일 수도 있다. 이 조건의 결과를 결정하기 위해서는, 저장요소 B에 저장된 값은, 상기 저장요소 B로부터 상기 특정값을 감산하여서 미만이고 이에 따라 산술 논리 플래그를 설정하는 상기 특정값과 비교된다. 이 연산은 명령어 스트림내에서 앞의 명령어에 응답하여 행해진다. 이에 따라, 네가티브 플래그가 설정되면 상기 조건이 충족된다.
다른 실시예에서, 상기 적어도 하나의 이전의 데이터 처리연산은, 상기 1차 소스 저장요소에서의 데이터 요소와 상기 2차 소스 저장요소에서의 데이터 요소를 비교하는 것을 포함한다.
상기 2개의 소스 저장요소에서의 값들을 비교하고 상기 2개의 소스 저장요소가 서로 특정한 관계를 가지면 특정한 연산만을 행하는 것이 적절하다. 이것이 조건이라면, 다시 상기 앞의 처리연산은, 이들의 값을 비교하여 플래그를 설정하고 상기 상태 플래그로부터 충족 또는 불충족 조건을 결정할 수 있는 것이다.
상기 조건은 다수의 것일 수 있다, 예를 들면 같지 않음, 같음, 미만, 초과, 이상, 이하, 제로 또는 네가티브일 수 있다. 이들 조건 모두는, 상기 조건 플래그로부터 결정될 수 있다.
산술 논리 플래그는, 결과 네가티브 플래그, 결과 제로 플래그, 캐리 아웃 플래그 및 부호 오버플로우 플래그 중 적어도 하나를 포함한다. 따라서, 값의 비교는 감산이고, 네가티브 결과는 그 값들 중 한쪽이 다른쪽보다 컸다는 것을 나타내고, 마찬가지로 제로 결과는 그들이 같았다는 것 등을 나타낸다.
일부의 실시예에서, 상기 조건의 소정의 결과는, 상기 충족 조건을 포함한다.
상술한 것처럼, 상기 조건의 상기 소정의 결과는 충족 조건일 수 있고, 이와는 달리 불충족 조건일 수도 있다.
일부의 실시예에서, 상기 데이터 처리장치는, 산술 명령어에 따라 가산 및 감산연산을 행하는 산술회로를 구비하고, 상기 조건적 선택 명령어에 따라 상기 2차 소스 저장요소내의 상기 데이터 요소에 대한 상기 연산을 행하기 위한 상기 회로의 적어도 일부는 상기 산술회로를 구비한다.
상술한 것처럼, 상기 조건적 선택 기능이 행하는 증가 등의 연산은, 산술회로를 사용하여 행해져도 된다. 이러한 산술회로가 가산 및 감산연산을 행하는 프로세서에 이미 존재하는 경우, 상기 조건적 선택 명령어를 행하기 위해 이 회로를 재사용하는 것이 편리하기도 하다. 이러한 경우에, 이러한 명령어의 기능성은, 별도의 많은 회로를 추가하지 않고 구성되어서, 상기 회로 영역을 효율적으로 이용할 수 있다.
일부의 실시예에서, 상기 조건적 선택 명령어는, 상기 소스 및 목적지 저장요소의 폭을 나타내는 지시자(indicator)를 포함한다.
본 발명의 실시예들은, 서로 다른 폭의 저장요소를 사용하는 장치에 사용하는데 적절하다. 따라서, 예를 들면, 하드웨어는, 64비트 폭의 하드웨어의 저장요소인 레지스터를 갖지만, 필요에 따라 32비트 폭의 저장요소를 사용하는 실행 코드이어도 된다. 이러한 경우에, 상기 지시자가 설정될 수 있고 상기 레지스터의 관련 부분이 액세스될 수 있다.
본 발명의 제2 국면의 데이터 처리장치의 방법은, 1차 소스 저장요소, 2차 소스 저장요소, 목적지 저장요소, 조건, 및 상기 2차 소스 저장요소내의 데이터 요소에 대해 행해지는 연산을, 특정하는 적어도 하나의 조건적 선택 명령어를 수신하는 단계; 상기 적어도 하나의 수신된 조건적 선택 명령어를 디코딩하는 단계; 상기 조건이 소정의 결과를 갖는지를 판정하는 단계; 상기 조건이 상기 소정의 결과를 갖는 경우, 상기 2차 소스 저장요소를 선택하고, 상기 선택된 저장요소로부터 데이터 요소에 대해 상기 연산을 행하여 결과적 데이터 요소를 구성하는 단계; 및 상기 조건이 상기 소정의 결과를 갖지 않는 경우, 상기 1차 저장요소내의 상기 데이터 요소를 선택하여 상기 결과적 데이터 요소를 구성하는 단계를 포함한다.
본 발명의 제3 국면에서는, 조건적 선택 명령어를 갖는 컴퓨터 프로그램을 기억한 컴퓨터 프로그램 제품으로서, 데이터 프로세서의 실행시에 상기 데이터 프로세서에게 본 발명의 제2 국면에 따른 방법의 단계들을 실행시킬 수 있는 컴퓨터 프로그램 제품을 제공한다.
본 발명의 제4 국면의 데이터 처리수단은, 데이터 요소를 저장요소에 저장하기 위한 저장요소 저장수단; 1차 소스 저장요소, 2차 소스 저장요소, 조건, 및 상기 2차 소스 저장요소로부터 데이터 요소에 대해 행해지는 연산을 특정하는 적어도 하나의 조건적 선택 명령어를 디코딩하는 명령어 디코딩수단; 상기 명령어 디코딩수단에 의해 제어된 데이터 처리연산을 행하는 처리수단을 구비하고, 상기 처리수단은 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 소정의 결과를 갖는 상기 조건에 응답하여, 상기 2차 소스 저장요소로부터 상기 데이터 요소에 대해 상기 연산을 행하여 결과적 데이터 요소를 구성하고; 상기 처리수단은 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 상기 소정의 결과를 갖지 않는 상기 조건에 응답하여, 상기 1차 저장요소내의 상기 데이터 요소로부터 상기 결과적 데이터 요소를 구성한다.
본 발명의 제5 국면에서는, 데이터 처리장치에 관해 실행하는 컴퓨터프로그램에 의해 제공된 가상 머신을 제공하고, 상기 가상 머신은 본 발명의 제1 국면의 상기 데이터 처리장치에 따른 명령어 실행 환경을 제공한다.
이하, 본 발명은, 아래의 첨부도면에서 설명된 것처럼 본 발명의 한 실시예들을 참조하여 예시로만 더욱 설명하겠다:
도 1은 본 발명의 일 실시예에 따른 데이터 처리장치를 도시한 것이고,
도 2는 본 발명의 일 실시예에 따른 조건적 선택 명령어를 실행하기 위한 처리회로를 도시한 것이고,
도 3은 본 발명의 일 실시예에 따른 조건적 선택 명령어를 실행하기 위해 재사용되고 있는 데이터 처리장치내의 산술회로를 도시한 것이고,
도 4는 본 발명의 일 실시예에 따른 조건적 선택 명령어와 예시 상태 플래그를 도시한 것이며,
도 5는 상기 조건적 선택 명령어를 사용하여 레거시 조건 명령어를 모방하는 기능을 수행할 수 있는 예시들을 도시한 것이고,
도 6은 본 발명의 일 실시예에 따른 방법을 설명하는 흐름도이고,
도 7은 상기 조건적 선택 명령어의 예시 인코딩을 도시한 것이며,
도 8은 본 기술의 가상 머신 구현을 개략적으로 설명하는 도면이다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리장치(10)를 도시한 것이다. 이 데이터 처리장치(10)는, 처리되는 명령어를 저장하기 위한 데이터 저장부(20)를 갖는다. 데이터 처리장치(10)는, 상기 명령어 저장부(20)로부터 명령어들을 불러오는 페치(fetch)부(32), 이들 명령어를 디코딩하는 명령어 디코더(34) 및 상기 디코딩된 명령어를 처리하는 처리부(36)로 이루어진, 상기 명령어를 처리하는 파이프라인(30)을 갖는다.
복수의 레지스터로 이루어진 레지스터 뱅크(40)도 있다. 처리부(36)는, 이들 레지스터에 및 레지스터로부터 데이터를 기록 및 판독한다. 상기 레지스터 뱅크는, 상기 프로세서의 상태 플래그를 포함하는 프로그램 상태 레지스터 CPSR을 구비한다. 이들의 상태 플래그는, 처리연산에 따라 설정되고, 상기 프로세서에 의해 상기 프로세서의 특별한 조건이나 상태를 결정하는데 사용될 수 있다.
본 실시예에서는, 0으로 매핑한 레지스터 X31도 있다. 이렇게, 이 레지스터를 명령어에 의해 선택할 때, 항상 0값이 주어진다.
상기 디코더(34)가 디코딩하도록 구성된 하나의 명령어는, 조건적 선택 명령어다. 이렇게 디코딩된 명령어에 따라, 상기 프로세서는 이 명령어에서 특정한 연산을, 상기 명령어에서 특정한 상기 소스 레지스터 중 하나에 대해 수행한 후, 이 소스 레지스터나 또 다른 레지스터 중 한쪽을 상기 결과적 요소가 기록된 목적지 레지스터로서 선택한다.
도 2는 상기와 같은 조건적 선택 명령어에 따라 이들 처리연산을 수행하는데 사용될 수 있는 처리부(36)내의 처리회로의 일례를 도시한 것이다.
본 발명의 실시예에서, 상기 조건적 선택 명령어는, 상기 레지스터들 중 한쪽에 있는 값에 대해 2개의 연산 중 하나를 수행할 수 있다. 상기 조건적 선택 명령어는, 설정되는 증가 제어신호에 따라 그것을 증가시킬 수 있거나, 설정되는 반전 제어 플래그에 따라 저장된 값에서 비트마다의 논리적 비트의 반전을 수행함으로써 상기 값을 반전할 수 있다. 상기 조건적 선택 명령어는, 조건에 좌우되고, 이에 따라, 조건 충족 여부를 판정한 결과에 따라 상기 레지스터의 한쪽이나 다른쪽이 출력된다.
따라서, 도 2의 실시예에서는, 2개의 소스 레지스터 Rn 및 Rm이 있다. 본 실시예에서, 상기 소스 레지스터들이 모두 32비트 폭이지만, 다른 실시예에서는 64비트 폭이어도 된다. 다른 실시예에서는, 그들이 64비트 폭이지만, 그들은 상기 조건적 선택 명령어에서 설정되는 선택비트에 따라 32비트 레지스터로서 취급되고, 하위 또는 상위 32비트만이 기록 또는 판독된다.
상기 레지스터Rm의 하나는, 상기 조건적 선택 명령어가 특정하는 어떠한 연산도 행해지는 2차 레지스터다. 이렇게 하여, 본 실시예에서, 상기 조건적 선택 명령어는, 반전 연산, 증가연산 또는 양쪽 또는 어느쪽도 아님을 특정하여도 된다. 어느쪽도 아님이 특정되면, 상기 조건적 선택 기능은 다중화기(50)를 사용하여 레지스터 Rm 또는 레지스터 Rn 중 한쪽을 간단히 선택한다.
이때, 레지스터 Rm 및 Rn이 비록 서로 다른 레지스터로서 도시되어 있을지라도, 그들은, 본 발명의 실시예들에서, 상기 레지스터로부터 직접 다중화기로 진행하고 또 다른 레지스터로부터 기능회로를 거쳐 진행하는 데이터 경로를 갖는 동일한 레지스터일 수 있다.
상기 다중화기(50)의 선택신호는 평가부(60)에 의해 평가된 명령어와 연계된 조건으로부터 결정된다. 본 실시예에서, 상기 평가부(60)는, 이 명령어와 연계된 조건 코드와, 상기 처리장치의 CPSR 레지스터에 저장된 산술 논리 플래그를 비교한다. 상기 조건 코드와 상기 플래그가 일치하는 경우, 그 조건이 충족되고 레지스터 Rm이 선택된다고 판정한다. 불일치하는 경우, 상기 레지스터 Rn이 선택된다.
이에 따라, 반전신호도 증가신호도 설정되지 않은 기본적인 경우에는, 상기 명령어는 조건적 선택 기능 명령어로서 작용하고, Rm 또는 Rn이 조건 충족 또는 조건 불충족에 따라 선택된다. 그러나, 그것이 반전 조건적 선택 명령어인 경우, 상기 반전신호가 설정되고 XOR 게이트(70)는 레지스터 Rm의 비트들 각각을 비트 반전을 행하고, 반전된 값은 가산기(75)를 거쳐 다중화기(50)에 출력된다. 상기 증가신호가 설정되지 않은 경우, 그것은 상기 선택기능이 레지스터 Rm을 선택하면 상기 목적지 레지스터 Rd에 출력된 비트 반전값일뿐이다. 상기 선택 기능이 레지스터 Rn을 선택하면, 상기 비트 반전을 수행하지만, 반전결과를 선택하지 않고 목적지 레지스터에 출력된다.
이 처리회로에 입력되는 증가신호도 있고, 이것은 캐리 인 신호로서 가산기(75)에 도달하여서, 그 증가신호가 설정될 때 상기 가산기는 캐리 인을 수신한다. 상기 증가신호가 설정될 때, 상기 XOR게이트(70)로부터 출력된, 반전이 설정되지 않은 경우 레지스터 Rm에 저장된 값이고 반전이 설정된 경우 레지스터 Rm에 저장된 반전된 값은, 증가되고, 그 조건이 소정의 결과를 가지면 다중화기(50)에 의해 선택된다. 반전신호와 증가신호 모두가 설정되는 경우, 출력된 값은 레지스터 Rm에 저장된 값의 부정 2의 보수값이다. 증가신호만이 설정되는 경우, 그 값은 1씩 증가된 레지스터 Rm에 저장된 값일뿐이다.
이때, 레지스터 Rm에 저장된 값에 대해 수행된 연산을 수행한 후 다중화기(50)를 사용하여 선택한다. 따라서, 레지스터 Rm이 선택되지 않은 경우, 이들 연산은 목적없이 수행된다. 그렇지만, 상기 조건 코드의 평가는 상당한 시간이 걸리는 것이 일반적이어서, 이것의 결과가 수행될 연산의 끝까지 필요한 경우만 이로울 수 있다.
도 3은 도 2에 도시된 것과 유사하지만 상기 처리장치의 일반 산술회로내에 가산회로(75)를 재사용하고 있는, 상기 처리회로의 다른 실시예를 도시한 것이다. 따라서, 도 2와 비교하면, 상기 처리회로가 조건적 선택 명령어를 수행하여 가산기(75)에 입력된 레지스터A를 마스크 아웃하고 있을 때 사용되는 AND 게이트(80)가 추가되어 있다. 따라서, 상기 조건적 선택 명령어가 실행되고 있을 때, 0이 AND 게이트에 입력되어 상기 레지스터A에 저장된 값이 상기 가산기에 도달하지 않는다. 일반적인 처리연산을 위한 산술회로의 일부로서 사용될 때, AND 게이트는 레지스터 A 입력을 마스크 아웃하지 않고 가산기(75)는 레지스터B의 반전값을 갖는 레지스터 A와 B 또는 레지스터A를 가산하는데 사용되어도 된다.
조건적 선택 기능일 경우에, 상기 가산기(75)를 사용하여 레지스터B에 저장된 값을 증가시키거나 레지스터B에 저장된 반전 값을 증가시켜서, 일반적인 산술 명령어를 수행하기 위해 존재하는 상기 가산기(레지스터A)에의 다른 입력은, AND 게이트(80)에 의해 마스크 아웃된다. 다른 방식에 있어서, 이 회로는 도 2의 회로와 같다.
XOR 논리는, INVERT신호와 레지스터 B내의 각 비트를 비트 배타적 OR을 행하는 것에 근거한 중간결과를 생성함으로써 반전기능을 제공한다. 이 회로는 도 3에 도시된 것처럼 프로세서의 메인 산술부와 병합되거나 도 2에 도시된 것과 같은 별도의 회로로서 구축되어도 된다는 것을 알아야 한다.
도 4는 서로 다른 종류의 조건적 선택 명령어와 그들이 출력하는 값들의 예시를 도시한 것이다. 따라서, 반전신호 또는 증가신호가 없는 조건적 선택 명령어에 응답하여, 1차 레지스터 Rn에 저장된 값 또는 2차 레지스터 Rm에 저장된 값 중 한쪽은, 상기 조건의 산술 논리 플래그와의 일치 여부에 따라 목적지 레지스터에 출력된다.
상기 증가신호가 설정된 조건적 선택 명령어에 응답하여, 레지스터 Rm으로부터 수신된 값이 증가되고, 다시 한번 상기 조건과 상기 플래그에 따라, 증가되었던 상기 레지스터 Rn에 저장된 값 또는 상기 레지스터 Rm에 저장된 값 중 한쪽은, 목적지 레지스터에 출력된다.
반전신호가 설정되는 경우, 레지스터 Rm으로부터의 값은 비트 반전되고, 다시 한번 상기 조건 코드와 상기 플래그의 일치 여부에 따라, Rm의 반전값 또는 Rn에 저장된 값 중 한쪽은 목적지 레지스터에 기록된다.
상기 반전 및 증가비트가 설정되는 경우, 레지스터 Rm으로부터의 값의 반전 및 증가 양쪽이 이루어진다. 이것은, 원시값의 산술 부정 버전인 Rm에 저장된 값의 2개의 보수값을 발생한다. 다시 한번 상기 조건 코드와 상기 플래그의 일치 여부에 따라, 레지스터 Rn에 저장된 값 또는 레지스터 Rm으로부터 반전된 증가값 중 한쪽은 목적지 레지스터에 기록된다.
상기 조건 코드에 관해서, 본 실시예에서, 이것은, 선택용 레지스터 Rn가 아닌 레지스터 Rm을 선택하는데 필요한 플래그의 패턴을 나타내는 4비트 코드이다. 상기 플래그는, CPSR 레지스터에 4비트 값으로서 저장되고, N, Z, C 및 B를 포함한다. N은 네가티브 결과를 나타내고, Z는 0의 결과를 나타내고, C는 캐리 아웃을 나타내고, B는 부호 산술 오버플로우를 나타낸다. 이들 플래그는, 앞의 데이터 처리연산에 의해 설정된다. 따라서, 상기 조건적 선택 명령어가 실행되기에 앞서, 상기 조건적 선택 명령어의 조건이 충족 여부를 판정하는데 필요한 비교를 수행하는 연산을 실행한다. 이들 연산은, 그들의 비교 결과로서 플래그를 설정하는 비교 명령어에 응답하여 수행되어도 된다. 조건 충족 여부를 판정하기 위해서, 조건 충족을 나타내는 특정 플래그 값과 일치하는 조건 코드는 상기 조건적 선택 명령어내에 인코딩될 수 있고 상기 플래그에 대한 이 조건 코드의 단순 비교는 조건 충족 여부를 판정할 것이다.
이들의 앞의 처리 명령어는, 소스 레지스터 중 하나에 있는 값과 소스 레지스터의 또 다른 값을 비교하거나, 소스 레지스터 값과 설정 값을 비교해도 되는 비교 명령어를 취하여도 된다. 일반적으로, 상기 비교 명령어는 감산연산을 행하고 이것의 결과는 산술 플래그를 설정한다. 따라서, 상기 명령어와 조건 코드가 A가 B미만이면 B가 증가하는 경우, 상기 비교는 B에서 A를 감산하고, 또 상기 결과가 네가티브인 경우 상기 N개의 플래그가 설정되어서, 상기 조건 코드는 상기 설정되는 N개의 플래그와 일치하는 패턴을 가져야 한다. 이러한 비교 명령어는, 상기 산술 논리 플래그를 설정하는 중간 명령어가 없다면 일부의 명령어가 미리 수행될 수도 있는 상기 조건적 선택 명령어보다 앞에서 수행될 수 있다.
상술한 것처럼, 상기 조건적 선택 명령어의 이점 중 하나는, 약간의 단점도 없이 이전의 조건적 명령어의 기능을 제공할 수 있다는 것이다. 도 5는 상기 조건적 선택 명령어가 마찬가지의 기능성을 제공할 수 있는 예시 조건 명령어를 도시한 것이다.
따라서, 제1 예시에서는, 상기 조건적 선택 명령어가 1과 0간에 선택할 수 있다. 이것은 0으로 매핑하는 레지스터를 사용한다. 본 도 5에서, 이것은 R0으로서 간략히 도시되었다. 하지만 도 1에 도시된 실시예에서는 그것이 0의 값으로 매핑되게 설정되어 있던 레지스터 31이었다. 이 경우에, 0으로 매핑된 상기 레지스터는 소스 레지스터 양쪽으로서 사용되고, 상기 증가 기능은, 0의 값이 선택될 수 있거나 또는 0의 값의 증가가 상기 조건에 따라 선택될 수 있어서, 상기 조건에 따라 0 또는 1이 출력될 수 있도록 사용된다.
또한, 상기 조건적 선택 명령어를 사용하여 0값과 모두 1의 마스크간에 선택할 수 있다. 이 경우에, 상기 반전 연산을 사용하여 다시 한번 0으로 매핑되는 레지스터를 2개의 소스 레지스터로서 사용한다. 이 경우에, 이 레지스터를 목적지 레지스터로서 사용하거나 또는 이 레지스터의 반전버전을 선택한다. 이 레지스터의 반전 버전은, 1의 마스크이어서, 상기 조건 충족 여부에 따라 0값의 레지스터나 0의 마스크 중 한쪽이 상기 목적지 레지스터에 제공된다.
또한, 상기 조건적 선택 명령어를 사용하여 레지스터에 저장된 절대치를 출력할 수 있다. 이러한 기능성을 제공하기 위해서, 상기 조건 플래그는, 본 예시에서 R3으로서 주어진 본 레지스터내의 값과 0의 값을 초기에 비교하여서 설정된다. 그 후, 상기 증가 및 반전 기능이 선택된 상기 조건적 선택 명령어는, 레지스터 R3이 소스 레지스터와 목적지 레지스터 양쪽으로서 사용되고, 그 조건은 미만이다. 따라서, R3이 0미만인 경우, 달리 말하면 그것이 네가티브 값인 경우, R3에 저장된 값은 이러한 값의 2의 보수값 달리 말하면 네가티브 값을 제공하도록 증가 및 반전된다. 따라서, R3에 저장된 값이 네가티브인 경우, 그것은 부정된다는 것이 의미하는 것은 R3에 저장된 값의 포지티브 버전이 출력된다는 것이다. 그러나, R3에 저장된 값이 포지티브인 경우, 미만의 조건이 충족되지 않고, R3인 1차 레지스터에 저장된 값이 출력된다. 따라서, 이러한 특별한 조건적 선택 명령어를 사용하여서 절대치 명령어를 제공한다.
다음의 예시는 어떤 값까지 조건적으로 증가하고, 이 경우에 상기 조건적 선택 명령어의 증가 연산이 선택되었다. 이 경우에, 1차 레지스터를 R3으로 하고, 2차 레지스터를 목적지 레지스터로 한다. 상기 조건은 R3에 저장된 값이 R4에 저장된 증가된 값과 같은 것이어서, 이것이 사실인 경우에, R3에 저장된 값이 출력된다. 이것이 사실이 아닌 경우에, R4에 저장된 값이 증가되어 R4에 저장된다.
이하의 명령어들은, 명령어에 관련된 조건이 소스 레지스터에 저장된 값들에는 좌우되지 않지만 또 다른 레지스터에 저장된 값에는 관련되기도 하는 모양을 보이고 있다. 이 경우의 상기 조건적 선택 명령어는, B에 저장된 값이 0이면 A에 저장된 값이 증가되어야 하는 조건적 명령어를 모방하는데 사용된다. 이는 상기 조건적 선택 명령어를 사용하여 수행하기 위해서는, 상기 플래그를 설정하는데 사용된 초기의 명령어는, 레지스터 B의 값과 0의 비교다. 그 후 실행되는 상기 조건적 선택 명령어는, 증가 연산이 수행되고 상기 소스 및 목적지 레지스터가 동일하고 상기 조건이 동일한 경우의 명령어다. 따라서, 레지스터 B와 0과의 비교 명령어가 동일하였다면, Z 플래그는 이 비교 명령어가 실제로 감산이었을 때 설정되었을 것이다.
상기 명령어의 조건 코드는 플래그 0이 설정되어야 하는 것을 나타낸다. 이것이 사실인 경우에, 증가되고 있는 2차 레지스터의 값은 레지스터 A에 저장된다, 즉 A가 증가된다. 상기 0의 플래그가 설정되지 않았으면, 즉 레지스터 B에 저장된 값이 0이 아니었으면, 레지스터A인 1차 레지스터내의 값이 출력된다. 이 경우에 상기 1차 레지스터에서 연산이 행해지지 않아서, 그 1차 레지스터의 증가된 값이 아닌 값이 출력된다.
도 5의 최종 예시는, B가 0보다 큰 경우, 조건적 선택 명령어를 사용하여 A를 1로 설정할 수 있고 그렇지 않은 경우 A를 0으로 설정할 수 있는 모양을 도시한 것이다. 이 경우에, 그 후 실행된 상기 조건적 선택 명령어의 증가신호가 설정되었고, 소스 레지스터가 0으로 매핑된 레지스터와 목적지 레지스터이고, 이 경우에는 레지스터 A다. 따라서, 레지스터 B와 0과의 비교 명령어에 의해 밝혀진 것이 레지스터 B가 0보다 컸던 경우에는, 2차 레지스터가 선택되고, 증가 값이 설정됨에 따라 이러한 0의 값 입력은 1씩 증가되었고 1은 레지스터 A에 저장된다. 그 조건이 충족되지 않아 B가 0보다 크지 않았을 경우에, 상기 1차 레지스터는 레지스터 0이고 0이 레지스터A에 저장되도록 선택된다.
따라서, 상기 예시에서 알 수 있듯이, 상기 조건적 선택 명령어를 사용하여 조건부로 실행되는 여러 가지 서로 다른 기능을 제공할 수 있다. 또한, 앞의 도면에서 명백하듯이, 상기 조건적 선택 명령어는 간단한 회로로 구현될 수 있다.
도 6은 본 발명의 일 실시예에 따른 예시 조건적 선택 기능을 도시한 것이다. 본 예시에서는, 상기 명령어가 32비트 레지스터나 64비트 레지스터상에서 연산되고 있는지를 나타내는 선택 지시자 SF가 있다. 이에 따라 그 명령어가 32비트 값이나 64비트 값 중 어느 한쪽을 처리할 수 있는 프로세서에서 사용될 수 있다. 이때, 다른 실시예들에서는, 상기 플래그를 사용하여, 상기 명령어가 사용되는 상기 프로세서의 특성에 따라 크기가 서로 다른 값 사이에서 선택할 수 있었다.
도 2 및 도 3의 XOR 논리를 제어하고 상기 2차 레지스터에서의 값의 반전여부를 판정하는 단일 비트 반전 필드가 있다. 이어서, 이 명령어를 조건적 선택 명령어로서 독특하게 확인하는 9비트 필드인 오피코드(opcode)가 있다. 이어서, 상기 명령어를 위한 1차 소스 레지스터인 레지스터를 확인하는 4비트의 2차 소스 레지스터 지정자 Rn가 있고, 이어서 목적지 레지스터 지정자 Rd가 있다. 이에 관해서, 상기 1차 및 2차 소스 레지스터를, "1차" 및 "2차"라고 하는데, 이는, 기록될 때 명령어에 보이고 추가의 의미가 없는 순서이기 때문이다.
이때, 상기 레지스터 연산코드의 예시 명령어 코딩과 폭일 뿐이고, 조건 필드들은, 지시할 뿐이며 상기 처리장치가 지원하는 명령어 레지스터의 수와 시험 조건에 좌우된다. 또한, 본 예시에서는 레지스터들을 사용하여 상기 소스 및 목적지 요소에 저장하긴 하지만, 다른 실시예에서는 상기 소스 및 목적지 저장요소가 메모리에서의 장소이고 이 경우에 상기 데이터 요소 지정자는 기억 장소의 어드레스들일 것이다.
도 7은 상기 조건적 선택 명령어를 실행하는 방법에서 수행된 단계들을 나타내는 흐름도를 도시한 것이다. 따라서, 초기에 상기 디코딩된 조건적 선택 명령어를 수신하고 이는 2개의 레지스터, 즉 레지스터1과 레지스터2를 특정한다.
레지스터2로부터 중간값을 할당한다. 반전이 설정되었는지를 판단한다. 반전이 설정되는 경우, 상기 중간값을 논리적으로 반전한다. 증가가 설정되어 있는지를 판단한다. 증가가 설정되어 있는 경우, 상기 중간값을 증가시킨다. 그 후, 목적지 레지스터에 출력하기 위한 값을, 상기 조건적 명령어가 특정한 조건의 충족 여부에 따라 선택한다. 따라서, 상기 중간값 또는 레지스터1로부터의 값 중 어느 한쪽이 목적지 레지스터에 출력된다. 일부의 실시예에서 상기 조건이 충족되는 경우, 목적지 레지스터에 출력되는 것이 중간값이고, 또한 그 조건이 불충족되는 경우는 레지스터1로부터의 값이다. 하지만, 다른 실시예에서는, 충족되는 조건에 응답하여 출력되는 레지스터1의 값과 충족되지 않는 조건에 응답하여 출력되는 중간값일 수도 있다.
출력되는 것이 중간값일 경우, 이 값은, 레지스터2로부터의 원시값이어도 되고, 상기 조건적 선택 명령어가 반전연산 및/또는 증가 연산을 특정했는지에 따라, 1씩 증가된 원시값, 논리적으로 반전된 원시값, 또는 논리적으로 반전된 후 1씩 증가된 원시값이어도 된다.
도 8은 사용되어도 되는 가상 머신 구현을 도시한 것이다. 앞에 설명한 실시예들은 관련 기술을 지원하는 특정 처리용 하드웨어를 작동하는 장치 및 방법의 관점에서 본 발명을 구현하였지만, 소위 하드웨어 디바이스의 가상 머신 구현을 제공하는 것도 가능하다. 이들 가상 머신 구현은, 가상 머신 프로그램(510)을 지원하는 호스트 운영체계(520)를 실행하는 호스트 프로세서(5300 상에서 실행한다. 일반적으로, 적당한 속도로 실행하는 가상 머신 구현을 제공하는데 아주 강력한 프로세서를 필요로 하지만, 이러한 방법은 특정한 경우에, 이를테면, 호환성이나 재사용 목적을 위해 또 다른 프로세서 고유의 코드를 실행하기를 원하는 경우에 정당화되기도 한다. 가상 머신 프로그램(510)은, 가상 머신 프로그램(510)에 의해 모델링되는 디바이스인 실제의 하드웨어에서 제공할 애플리케이션 프로그램 인터페이스와 같은 애플리케이션 프로그램(500)에 대한 애플리케이션 프로그램 인터페이스를 제공한다. 따라서, 상술한 메모리 액세스의 제어를 포함한 프로그램 명령어는, 가상 머신 프로그램(510)을 사용하여 가상 머신 하드웨어와의 그 명령어들의 상호작용을 모델링하는 상기 애플리케이션 프로그램(500)내에서 실행되어도 된다.
본 발명의 여러 가지의 또 다른 국면 및 특징들은, 첨부된 청구항에 기재되어 있다. 여기에서는 본 발명의 범위를 벗어나지 않고 앞서 설명한 실시예를 여러 가지로 변형할 수 있다.

Claims (35)

  1. 데이터 요소를 저장하기 위한 복수의 저장요소를 포함한 데이터 저장부;
    1차 소스 저장요소, 2차 소스 저장요소, 조건, 및 상기 2차 소스 저장요소에 저장된 데이터 요소에 대해 행해지는 연산을 특정하는 적어도 하나의 조건적 선택 명령어를 디코딩하도록 구성된 명령어 디코더;
    상기 명령어 디코더에 의해 제어된 데이터 처리연산을 행하도록 구성된 데이터 프로세서를 구비하고,
    상기 데이터 프로세서는 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 소정의 결과를 갖는 상기 조건에 응답하여, 상기 2차 소스 저장요소로부터 상기 데이터 요소에 대해 상기 연산을 행하여 결과적 데이터 요소를 구성하고;
    상기 데이터 프로세서는 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 상기 소정의 결과를 갖지 않는 상기 조건에 응답하여, 상기 1차 저장요소내의 상기 데이터 요소로부터 상기 결과적 데이터 요소를 구성하는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 명령어는 목적지 저장요소를 더욱 특정하고, 상기 데이터 프로세서는 상기 적어도 하나의 조건적 선택 명령어에 응답하여 상기 결과적 데이터 요소를 상기 목적지 저장요소에 저장하는, 데이터 처리장치.
  3. 제 2 항에 있어서,
    상기 목적지 저장요소는 상기 1차 및 2차 소스 저장요소 중 하나를 포함하는, 데이터 처리장치.
  4. 제 1 항에 있어서,
    상기 데이터 프로세서는, 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 상기 소정의 결과를 갖지 않는 상기 조건에 응답하여, 상기 2차 소스 저장요소내의 상기 데이터 요소에 대해 상기 연산을 행하고, 상기 1차 저장요소내의 상기 데이터 요소로부터 상기 결과적 데이터 요소를 구성하는, 데이터 처리장치.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 조건적 선택 명령어는 증가 조건적 선택 명령어를 포함하고, 상기 연산은 상기 2차 소스 저장요소로부터 상기 데이터 요소를 증가하는 것을 포함하는, 데이터 처리장치.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 조건적 선택 명령어는 반전 조건적 선택 명령어를 포함하고, 상기 연산은 상기 2차 소스 저장요소로부터 상기 데이터 요소를 논리적으로 반전하여 논리적으로 비트 반전된 저장요소값을 발생하는 것을 포함하는, 데이터 처리장치.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 조건적 선택 명령어는 반전 증가 조건적 선택 명령어를 포함하고, 상기 연산은 상기 2차 소스 저장요소로부터 상기 데이터 요소를 논리적으로 반전하여 증가시켜 상기 데이터 요소의 산술부정을 발생하는 것을 포함하는, 데이터 처리장치.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 저장요소 데이터 저장부는, 제로 값으로 매핑하는 저장요소명을 포함하는, 데이터 처리장치.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 저장요소는 레지스터를 포함하고, 상기 저장요소 데이터 저장부는 레지스터 뱅크를 포함하는, 데이터 처리장치.
  10. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 저장요소는 기억 장소를 포함하고, 상기 저장요소 데이터 저장부는 메모리를 포함하는, 데이터 처리장치.
  11. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 명령어 디코더는 상기 조건적 선택 명령어에 응답하여 증가 제어신호를 출력하도록 구성되고,
    상기 디코딩된 조건적 선택 명령어를 처리하도록 구성된 상기 프로세서는,
    상기 2차 저장요소로부터의 값들과 캐리 인(carry in) 신호를 수신하도록 구성된 가산기;
    상기 1차 저장요소로부터의 신호와 상기 가산기의 출력으로부터의 신호를 수신하고, 상기 조건을 포함하는 다중화기의 선택신호를 수신하도록 구성되어, 상기 소정의 결과를 갖는 상기 조건이 상기 다중화기를 기동하여 상기 가산기의 상기 출력을 선택하는 상기 다중화기를 구비하고,
    설정되는 상기 증가 제어신호에 따라, 상기 캐리 인 신호는 1로 설정되고, 상기 가산기는 상기 적어도 하나의 소스 저장요소로부터의 수신 값을 증가시키는, 데이터 처리장치.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 명령어 디코더는, 상기 조건적 선택 명령어에 응답하여 반전 제어신호를 출력하도록 구성되고,
    상기 디코딩된 조건적 선택 명령어를 처리하도록 구성된 상기 프로세서는,
    설정되는 상기 반전 제어신호에 응답하여 인버터를 통해 상기 2차 소스 저장요소로부터의 값들을 수신하고, 설정되지 않은 상기 반전 제어신호에 응답하여 상기 인버터를 통과하지 않은 상기 2차 소스 저장요소로부터의 값들을 수신하도록 구성된 가산기;
    상기 1차 저장요소로부터의 신호와 상기 가산기의 출력으로부터의 신호를 수신하고, 상기 조건을 포함하는 다중화기의 선택신호를 수신하도록 구성되어, 상기 소정의 결과를 갖는 상기 조건이 상기 다중화기를 기동하여 상기 가산기의 상기 출력을 선택하는 상기 다중화기를 구비한, 데이터 처리장치.
  13. 제 11 항에 있어서,
    상기 명령어 디코더는, 상기 조건적 선택 명령어에 응답하여 증가 제어신호와 반전 제어신호를 출력하도록 구성되고,
    상기 설정되는 증가신호에 응답하여, 상기 캐리 인 신호는 1로 설정되고, 상기 설정되는 상기 반전 신호에 응답하여, 상기 가산기는 상기 2차 소스 저장요소로부터 상기 수신된 반전값을 증가시키는, 데이터 처리장치.
  14. 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 1차 소스 저장요소와 상기 2차 소스 저장요소는 동일한 저장요소인, 데이터 처리장치.
  15. 제 1 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 조건의 결과는, 적어도 하나의 이전의 데이터 처리연산에 응답하여 설정된 산술 논리 플래그로부터 결정되는, 데이터 처리장치.
  16. 제 15 항에 있어서,
    상기 적어도 하나의 이전의 데이터 처리연산은, 상기 소스 저장요소 중 적어도 하나의 요소내에 데이터 요소를 또 다른 값과 비교하는 것을 포함하는, 데이터 처리장치.
  17. 제 16 항에 있어서,
    상기 적어도 하나의 이전의 데이터 처리연산은, 상기 1차 소스 저장요소에서의 데이터 요소와 상기 2차 소스 저장요소에서의 데이터 요소를 비교하는 것을 포함하는, 데이터 처리장치.
  18. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 조건은, 같지 않음, 같음, 미만, 초과, 이상, 이하, 제로 또는 네가티브를 포함하는, 데이터 처리장치.
  19. 제 15 항 내지 제 18 항 중 어느 한 항에 있어서,
    상기 산술 논리 플래그는, 결과 네가티브 플래그, 결과 제로 플래그, 캐리 아웃 플래그 및 부호 오버플로우 플래그 중 적어도 하나를 포함하는, 데이터 처리장치.
  20. 제 1 항 내지 제 19 항 중 어느 한 항에 있어서,
    상기 조건의 상기 소정의 결과는 상기 충족 조건을 포함하는, 데이터 처리장치.
  21. 제 1 항 내지 제 20 항 중 어느 한 항에 있어서,
    상기 조건적 선택 명령어는, 상기 소스 및 목적지 저장요소의 폭을 나타내는 지시자를 포함하는, 데이터 처리장치.
  22. 제 1 항 내지 제 21 항 중 어느 한 항에 있어서,
    상기 데이터 처리장치는 산술 명령어에 따라 가산 및 감산연산을 행하는 산술회로를 구비하고, 상기 조건적 선택 명령어에 따라 상기 2차 소스 저장요소내의 상기 데이터 요소에 대한 상기 연산을 행하기 위한 상기 회로의 적어도 일부는 상기 산술회로를 구비한, 데이터 처리장치.
  23. 1차 소스 저장요소, 2차 소스 저장요소, 조건, 및 상기 2차 소스 저장요소내의 데이터 요소에 대해 행해지는 연산을, 특정하는 적어도 하나의 조건적 선택 명령어를 수신하는 단계;
    상기 적어도 하나의 수신된 조건적 선택 명령어를 디코딩하는 단계;
    상기 조건이 소정의 결과를 갖는지를 판정하는 단계;
    상기 조건이 상기 소정의 결과를 갖는 경우, 상기 2차 소스 저장요소를 선택하고, 상기 선택된 저장요소로부터 데이터 요소에 대해 상기 연산을 행하여 결과적 데이터 요소를 구성하는 단계; 및
    상기 조건이 상기 소정의 결과를 갖지 않는 경우, 상기 1차 저장요소내의 상기 데이터 요소를 선택하여 상기 결과적 데이터 요소를 구성하는 단계를 포함하는, 데이터 처리장치의 방법.
  24. 제 23 항에 있어서,
    상기 적어도 하나의 조건적 선택 명령어가 특정한 목적지 저장요소에 상기 결과적 데이터 요소를 저장하는 추가의 단계를 행하는 것을 포함하는, 데이터 처리장치의 방법.
  25. 제 23 항 또는 제 24 항에 있어서,
    상기 조건이 상기 소정의 결과를 갖는지를 판정하는 단계는, 상기 2차 소스 저장요소로부터 상기 데이터 요소에 대해 상기 연산을 행한 후 행해지는, 데이터 처리방법.
  26. 제 23 항 내지 제 25 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 조건적 선택 명령어는 증가 조건적 선택 명령어를 포함하고, 상기 연산은 상기 2차 소스 저장요소로부터 상기 데이터 요소를 증가하는 것을 포함하는, 데이터 처리방법.
  27. 제 23 항 내지 제 26 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 조건적 선택 명령어는 반전 조건적 선택 명령어를 포함하고, 상기 연산은 상기 2차 소스 저장요소로부터 상기 데이터 요소를 논리적으로 반전하여 논리적으로 비트 반전된 저장요소값을 발생하는 것을 포함하는, 데이터 처리방법.
  28. 제 23 항 내지 제 27 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 조건적 선택 명령어는 반전 증가 조건적 선택 명령어를 포함하고, 상기 연산은 상기 2차 소스 저장요소로부터 상기 데이터 요소를 논리적으로 반전하여 증가시켜 상기 데이터 요소의 산술부정을 발생하는 것을 포함하는, 데이터 처리장치의 방법.
  29. 조건적 선택 명령어를 갖는 컴퓨터 프로그램을 기억한 컴퓨터 프로그램 제품으로서, 데이터 프로세서의 실행시에 상기 데이터 프로세서에게 청구항 23 내지 28 중 어느 한 항에 따른 방법의 단계들을 실행시킬 수 있는, 컴퓨터 프로그램 제품.
  30. 데이터 요소를 저장요소에 저장하기 위한 저장요소 저장수단;
    1차 소스 저장요소, 2차 소스 저장요소, 조건, 및 상기 2차 소스 저장요소로부터 데이터 요소에 대해 행해지는 연산을 특정하는 적어도 하나의 조건적 선택 명령어를 디코딩하는 명령어 디코딩수단;
    상기 명령어 디코딩수단에 의해 제어된 데이터 처리연산을 행하는 처리수단을 구비하고,
    상기 처리수단은 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 소정의 결과를 갖는 상기 조건에 응답하여, 상기 2차 소스 저장요소로부터 상기 데이터 요소에 대해 상기 연산을 행하여 결과적 데이터 요소를 구성하고;
    상기 처리수단은 상기 디코딩된 적어도 하나의 조건적 선택 명령어와 상기 소정의 결과를 갖지 않는 상기 조건에 응답하여, 상기 1차 저장요소내의 상기 데이터 요소로부터 상기 결과적 데이터 요소를 구성한, 데이터 처리수단.
  31. 데이터 처리장치에 관해 실행하는 컴퓨터 프로그램에 의해 제공된 가상 머신으로서, 상기 가상 머신은 청구항 1 내지 22 중 어느 한 항에 기재된 것과 같은 상기 데이터 처리장치에 따른 명령어 실행 환경을 제공하는, 가상 머신.
  32. 첨부된 도면을 참조하여 실질적으로 상술한 것과 같은 데이터 처리장치.
  33. 첨부된 도면을 참조하여 실질적으로 상술한 것과 같은 데이터 처리방법.
  34. 첨부된 도면을 참조하여 실질적으로 상술한 것과 같은 컴퓨터 프로그램 제품.
  35. 첨부된 도면을 참조하여 실질적으로 상술한 것과 같은 가상 머신.
KR1020137009023A 2010-10-12 2011-09-29 데이터 요소의 조건적 선택 KR101802740B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1017176.7 2010-10-12
GB1017176.7A GB2484654B (en) 2010-10-12 2010-10-12 Conditional selection of data elements
PCT/GB2011/051847 WO2012049474A1 (en) 2010-10-12 2011-09-29 Conditional selection of data elements

Publications (2)

Publication Number Publication Date
KR20130101052A true KR20130101052A (ko) 2013-09-12
KR101802740B1 KR101802740B1 (ko) 2017-12-28

Family

ID=43304419

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137009023A KR101802740B1 (ko) 2010-10-12 2011-09-29 데이터 요소의 조건적 선택

Country Status (10)

Country Link
US (2) US9753724B2 (ko)
EP (1) EP2628073B1 (ko)
JP (1) JP5732139B2 (ko)
KR (1) KR101802740B1 (ko)
CN (1) CN103282876B (ko)
GB (1) GB2484654B (ko)
IL (1) IL225614A (ko)
MY (1) MY164515A (ko)
TW (1) TWI536261B (ko)
WO (1) WO2012049474A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2228597A (en) * 1989-02-27 1990-08-29 Ibm Data processor with conditional instructions
JPH04363722A (ja) * 1991-05-17 1992-12-16 Toshiba Corp 情報処理装置
US5805913A (en) * 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US20020002666A1 (en) * 1998-10-12 2002-01-03 Carole Dulong Conditional operand selection using mask operations
JP2001022576A (ja) 1999-07-12 2001-01-26 Hitachi Ltd データ処理装置
GB2352308B (en) * 1999-07-21 2004-06-30 Element 14 Ltd Accessing a test condition
AU2003224042A1 (en) 2002-04-05 2003-10-20 Optimization Methods Deutschland Gmbh Method and device for optimizing the order of assignment of a number of supplies to a number of demanders
WO2006010872A1 (en) * 2004-07-27 2006-02-02 Arm Limited Handling of conditional instructions in a data processing apparatus
JP4891252B2 (ja) 2004-11-10 2012-03-07 エヌヴィディア コーポレイション 汎用乗算加算機能ユニット
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US7624256B2 (en) 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
JP2009163624A (ja) 2008-01-09 2009-07-23 Nec Electronics Corp プロセッサ装置及び条件分岐処理方法
JP4962476B2 (ja) * 2008-11-28 2012-06-27 ソニー株式会社 算術復号装置
GB2480285A (en) 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed

Also Published As

Publication number Publication date
EP2628073A1 (en) 2013-08-21
WO2012049474A1 (en) 2012-04-19
EP2628073B1 (en) 2017-05-03
US20170329603A1 (en) 2017-11-16
KR101802740B1 (ko) 2017-12-28
IL225614A0 (en) 2013-06-27
CN103282876B (zh) 2016-02-03
TW201216154A (en) 2012-04-16
GB2484654B (en) 2013-10-09
GB201017176D0 (en) 2010-11-24
US9983872B2 (en) 2018-05-29
IL225614A (en) 2017-02-28
JP5732139B2 (ja) 2015-06-10
US9753724B2 (en) 2017-09-05
US20120089817A1 (en) 2012-04-12
GB2484654A (en) 2012-04-25
JP2013539882A (ja) 2013-10-28
CN103282876A (zh) 2013-09-04
MY164515A (en) 2017-12-29
TWI536261B (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
TWI501148B (zh) 條件式比較指令
TWI489381B (zh) 多暫存器散布指令
KR20170097008A (ko) 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치
KR20060063790A (ko) 데이터 처리 시스템 내의 예측 명령
KR20180066146A (ko) 벡터 데이터 전송 명령어
KR20040016829A (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
KR101713841B1 (ko) 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법
JP5947879B2 (ja) マスクレジスタを用いてジャンプを行うシステム、装置、および方法
WO2012136975A1 (en) A data processing apparatus and method for performing vector operations
KR20130064797A (ko) 범용 논리 연산 방법 및 장치
KR20180067582A (ko) 벡터 로드 명령어
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
KR20180035211A (ko) 벡터 산술 명령
KR20170097015A (ko) 마스크를 마스크 값들의 벡터로 확장하기 위한 방법 및 장치
US9983872B2 (en) Conditional selection of data elements
KR20170099860A (ko) 벡터 포화된 더블워드/쿼드워드 덧셈을 수행하기 위한 명령어 및 로직
JP2017534982A (ja) 4d座標から4dのz曲線インデックスを計算するための機械レベル命令
CN110914801B (zh) 在数据处理设备中的向量交叉
KR102321941B1 (ko) 스핀-루프 점프를 수행하기 위한 장치 및 방법

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