KR20130016246A - 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑 - Google Patents

다중 명령 세트에 의해 사용되는 레지스터 간의 매핑 Download PDF

Info

Publication number
KR20130016246A
KR20130016246A KR1020127025937A KR20127025937A KR20130016246A KR 20130016246 A KR20130016246 A KR 20130016246A KR 1020127025937 A KR1020127025937 A KR 1020127025937A KR 20127025937 A KR20127025937 A KR 20127025937A KR 20130016246 A KR20130016246 A KR 20130016246A
Authority
KR
South Korea
Prior art keywords
instruction
register
registers
program
instruction set
Prior art date
Application number
KR1020127025937A
Other languages
English (en)
Other versions
KR101812569B1 (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 KR20130016246A publication Critical patent/KR20130016246A/ko
Application granted granted Critical
Publication of KR101812569B1 publication Critical patent/KR101812569B1/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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Advance Control (AREA)

Abstract

32-비트 아키텍처 레지스터를 특정하는 제1 명령 세트와 64-비트 아키텍처 레지스터를 특정하는 제2 명령 세트를 지원하는 프로세서(4)가 제공된다. 각각의 명령 세트는 사용을 위해 자체의 아키텍처 레지스터 세트로 제공된다. 제1 명령 세트에 제공된 제1 세트의 레지스터는 제2 명령 세트에 제공된 제2 세트의 레지스터와 1:1 매핑된다. 하드웨어에 제공된 레지스터는 64-비트 레지스터이다. 소정의 실시예에서, 제1 명령 세트의 프로그램 명령의 실행시, 64-비트 레지스터 중 최하위 부분만 액세스되고 조작되며, 레지스터의 나머지 최하위 부분은 변경되지 않은 상태로 유지된다. 제1 명령 세트의 명령 내의 레지스터 특정 필드는 어떤 아키텍처 레지스터가 사용되는지를 결정하기 위해 현재 예외 모드와 함께 디코딩되는 반면, 제2 명령 세트는 어떤 아키텍처 레지스터가 사용될지를 결정하기 위해 예외 모드에 의존하지 않고 레지스터 특정 필드를 사용한다.

Description

다중 명령 세트에 의해 사용되는 레지스터 간의 매핑{MAPPING BETWEEN REGISTERS USED BY MULTIPLE INSTRUCTION SETS}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 보다 상세하게, 본 발명은 다중 명령 세트와 해당 다중 명령 세트에 의해 사용되는 레지스터의 제공 방식을 지원하는 데이터 처리 시스템에 관한 것이다.
다중 명령 세트를 지원하는 데이터 처리 시스템을 제공하는 것이 공지되어 있다. 이러한 데이터 처리 시스템의 소정의 예는 영국 캠브릿지 소재의 ARM Limited 사에 의해 제조된 프로세서 설계로, ARM 명령 세트와 Thumb 명령 세트 모두를 지원하는 시스템이 있다. ARM 명령 세트는 32-비트로 인코딩되고, 32-비트 레지스터 내에 유지된 데이터 값에 대해 수행되는 32-비트 데이터 처리 연산(예, ADD, SUB, LDR, STR 등)을 특정한다. Thumb 명령은 16-비트로 인코딩되고, 32-비트 레지스터 내에 유지된 데이터 값에 대해 수행되는 32-비트 데이터 처리 연산을 특정한다.
ARM Limited 사에 의해 설계된 Neon 및 VFP 아키텍처 확장 각각은 프로그램 제어하에 특정된 크기의 레지스터 내에 저장된 데이터 값에 대해 수행되는 SIMD 및 플로팅 포인트 명령을 제공한다.
프로세서의 제공시 필요한 회로 리소스의 양을 줄이는 것이 바람직하다. 레지스터를 형성하는 회로 요소의 제공은 하나의 이러한 회로 리소스를 나타낸다.
본 발명의 일 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
처리될 데이터 값을 저장하도록 구성된 복수의 레지스터와;
상기 복수의 레지스터에 결합되고, 상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하도록 구성된 처리 회로와;
상기 처리 회로에 결합되고, 소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하는 명령 디코더를 포함하고;
상기 명령 디코더는 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 N-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
상기 명령 디코더는 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 M-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며, 상기 복수의 레지스터 중 적어도 일부는 상기 제1 명령 세트의 프로그램 명령과 상기 제2 세트의 프로그램 명령에 의해 공유되며;
상기 명령 디코더는 상기 복수의 레지스터 중 어떤 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제1 세트의 N-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코더는 상기 복수의 레지스터 중 어떤 레지스터가 상기 제2 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제2 세트의 M-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코더는 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제1 매핑과 상기 제2 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제2 매핑을 제공하도록 구성되고, 상기 제1 매핑은 상기 제2 매핑과 상이하며, 상기 제1 매핑과 제2 매핑은 상기 제1 세트의 각각의 레지스터가 상기 제2 세트의 레지스터에 대해 미리 정해진 1:1 매핑을 가지며 상기 제2 세트의 상기 레지스터와는 상기 복수의 레지스터 내의 공통의 레지스터의 공유 부분을 공유하며 상기 제2 세트의 레지스터를 사용하여 액세스 가능한 값을 저장하도록 이루어지며, 상기 공통의 레지스터의 비공유 부분은 상기 제1 명령 세트의 명령을 사용하여 액세스되지 않는 것을 특징으로 한다.
본 발명의 기술은 다른 명령 세트가 다른 폭의 아키텍처 레지스터에 동작하는 경우, 복수의 레지스터의 리소스를 공유할 수 있음을 인지하고 있다. 또한, 2개의 명령 세트에 의해 사용되는 레지스터 지정자(specifier) 사이를 미리 정해진 1:1 매핑으로 배열하는 것에 의해, 명령 세트 중 적어도 하나가 그 외의 명령 세트에 의해 레지스터 내에 저장된 모든 값에 액세스하는 것이 가능하다. 이것은 2개의 명령 세트 내에 기록된 프로그램의 상호 동작, 예컨대, 2개의 명령 세트 중 다른 하나를 사용하여 기록된 프로그램 간의 데이터 값의 공유에 유리하다. 명령은 통상 2개 이상의 레지스터 특정 필드를 포함할 수 있다. 일부 명령은 특정 레지스터의 사용을 내재적으로 특정할 수 있는데, 예컨대 PUSH 및 POP 명령은 스택 포인터 레지스터의 사용을 내재적으로 특정한다.
제1 명령 세트에 제공되는 제1 세트의 레지스터는 제2 명령 세트에 제공되는 제2 세트의 레지스터에 대해 갯수가 다를 수 있지만, 최소한 바람직한 실시예에서, 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함한다. 이것은 2개의 명령 세트 간의 효율적인 상호 동작성을 가능하게 하는 것과 함께 제공된 레지스터 리소스를 높은 수준으로 재사용할 수 있도록 하는 것에 도움이 된다.
M-비트 아키텍처 레지스터는 2N-비트 아키텍처 레지스터일 수 있다.
복수의 레지스터는 제2 명령 세트에 의한 2N-비트 데이터 값의 조작을 용이하게 하기 위해 2N-비트 레지스터일 수 있다. 이 경우, 제1 명령 세트는 2N-비트 레지스터의 최하위 2N-비트를 액세스하도록 구성될 수 있다.
레지스터 크기와 데이터 폭은 변할 수 있지만, 적어도 소정의 바람직한 실시예에서 N=32이다.
액세스될 레지스터는 프로그램 명령 내의 레지스터 특정 필드에 의해 완전히 특정될 수 있다. 대안적으로, 현재 예외 상태와 같은 부가적인 상태가 레지스터 특정 필드와 결합되어 어떤 아키텍처 레지스터가 액세스될지를 결정할 수 있다. 본 발명의 적어도 소정의 바람직한 실시예에서, 제1 명령 세트는 이렇게 동작한다.
어떤 아키텍처 레지스터가 레지스터 특정 필드의 주어진 값에 대해 사용될 수 있는지를 특정함에 있어서 예외 상태가 추가의 자유도를 제공할 때, 레지스터 특정 필드와 다른 예외 상태의 공통의 값으로 액세스되는 아키텍처 레지스터의 그룹은 레지스터의 뱅킹 그룹으로 지칭된다. 이러한 구성은 신속한 예외 처리의 지원에 도움이 될 수 있다.
예컨대, 비정렬(out-of-order) 처리를 용이하게 하기 위해, 레지스터 개명을 이용한 실시예에서, 아키텍처 레지스터에 매핑된 물리적 레지스터는 변할 것이고 처리 중 임의의 주어진 포인트에는 동일한 아키텍처 레지스터에 대응하지만 프로그램 명령의 다른 포인트에 위치된 다수의 물리적 레지스터가 존재할 수 있음을 알 것이다.
명령 디코딩을 단순화하고 사용될 정확한 아키텍처 레지스터를 식별하기 위해, 명령 디코더가 수행하는 매핑은, 레지스터의 뱅킹 그룹 내에서, 해당 뱅킹 레지스터 중 하나를 특정하는 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드의 최하위 비트의 값이 동일한 아키텍처 레지스터에 매핑되는 제2 명령 세트의 프로그램 명령의 레지스터 특정 필드의 최하위 비트와 공통되는 공통 값이 되게 배열되도록 이루어질 수 있다. 이는 디코딩을 단순화시킨다.
뱅킹 레지스터와 관련하여 상기 구성을 사용하는 소정의 실시예의 특징은 명령 디코더의 구성이, 제2 세트의 프로그램 명령 내의 레지스터 특정 필드의 일련의 증분 값에 대응하는 제2 세트의 레지스터의 일부의 경우, 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 매핑을 제공하는 것이다.
제공되는 복수의 레지스터는 제2 명령 세트의 프로그램 명령으로 액세스시 미리 정해진 널값(null value)을 저장하는 널값 레지스터를 포함하며, 상기 제1 명령 세트는 상기 널값 레지스터에 매핑되는 레지스터가 없다. 이러한 널값 레지스터는 판독시 널값을 리턴시킬 수 있으며, 널값 레지스터를 기록 레지스터로 특정하는 명령은 버려지는 결과를 가지는 것으로 해석된다.
소정의 실시예에서, 상기 널값은 0이다.
제1 명령 세트의 프로그램 명령을 실행시의 소정의 실시예에서, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 제2 세트의 레지스터에 매핑되는 제1 세트의 외부에 있다. 따라서, 전술한 바와 같이 명령 디코더에 의해 제공되는 1:1 매핑은 프로그램 카운터 레지스터를 포함하지 않는다.
본 발명의 추가의 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
처리될 데이터 값을 저장하기 위한 복수의 레지스터 수단과;
상기 복수의 레지스터 수단에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하기 위한 처리 수단과;
소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하기 위한 명령 디코딩 수단을 포함하고;
상기 명령 디코딩 수단은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터 수단에 의해 제공되는 양의 정수인 N-비트의 아키텍처 레지스터 수단을 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
상기 명령 디코딩 수단은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터 수단에 의해 제공되는 양의 정수인 M-비트의 아키텍처 레지스터 수단을 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며, 상기 복수의 레지스터 수단 중 적어도 일부는 상기 제1 명령 세트의 프로그램 명령과 상기 제2 세트의 프로그램 명령에 의해 공유되며;
상기 명령 디코딩 수단은 상기 복수의 레지스터 수단 중 어떤 레지스터 수단이 상기 제1 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제1 세트의 N-비트 아키텍처 레지스터 수단의 일부로서 액세스되는지를 결정할 때 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코딩 수단은 상기 복수의 레지스터 수단 중 어떤 레지스터 수단이 상기 제2 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제2 세트의 M-비트 아키텍처 레지스터 수단의 일부로서 액세스되는지를 결정할 때 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코딩 수단은 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터 수단의 값 사이에 제1 매핑과 상기 제2 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터 수단의 값 사이에 제2 매핑을 제공하도록 구성되고, 상기 제1 매핑은 상기 제2 매핑과 상이하며, 상기 제1 매핑과 제2 매핑은 상기 제1 세트의 각각의 레지스터 수단이 상기 제2 세트의 레지스터 수단에 대해 미리 정해진 1:1 매핑을 가지며 상기 제2 세트의 상기 레지스터 수단과는 상기 복수의 레지스터 수단 내의 공통의 레지스터 수단의 공유 부분을 공유하며 상기 제2 세트의 레지스터 수단을 사용하여 액세스 가능한 값을 저장하도록 이루어지며, 상기 공통의 레지스터 수단의 비공유 부분은 상기 제1 명령 세트의 명령을 사용하여 액세스되지 않는 것을 특징으로 한다.
본 발명의 다른 측면의 관점에서 데이터 처리 방법이 제공되며, 해당 방법은:
처리될 데이터 값을 복수의 레지스터에 저장하는 단계와;
상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하는 단계와;
상기 데이터 처리 동작의 상기 수행을 제어하도록 소정 흐름의 프로그램 명령을 디코딩하는 단계를 포함하고;
상기 디코딩은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 N-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하며;
상기 디코딩은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 M-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하며, 상기 복수의 레지스터 중 적어도 일부는 상기 제1 명령 세트의 프로그램 명령과 상기 제2 세트의 프로그램 명령에 의해 공유되며;
상기 디코딩은 상기 복수의 레지스터 중 어떤 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제1 세트의 N-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하고;
상기 디코딩은 상기 복수의 레지스터 중 어떤 레지스터가 상기 제2 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제2 세트의 M-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하고;
상기 디코딩은 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제1 매핑과 상기 제2 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제2 매핑을 제공하고, 상기 제1 매핑은 상기 제2 매핑과 상이하며, 상기 제1 매핑과 제2 매핑은 상기 제1 세트의 각각의 레지스터가 상기 제2 세트의 레지스터에 대해 미리 정해진 1:1 매핑을 가지며 상기 제2 세트의 상기 레지스터와는 상기 복수의 레지스터 내의 공통의 레지스터의 공유 부분을 공유하며 상기 제2 세트의 레지스터를 사용하여 액세스 가능한 값을 저장하며, 상기 공통의 레지스터의 비공유 부분은 상기 제1 명령 세트의 명령을 사용하여 액세스되지 않는 것을 특징으로 한다.
본 발명의 추가 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
처리될 데이터 값을 저장하도록 구성된 복수의 레지스터와;
상기 복수의 레지스터에 결합되고, 상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하도록 구성된 처리 회로와;
상기 처리 회로에 결합되고, 소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하는 명령 디코더를 포함하고;
상기 명령 디코더는 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
상기 제1 명령세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코더는 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코더는 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
상기 명령 디코더는 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성된 것을 특징으로 한다.
본 발명의 추가의 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는:
처리될 데이터 값을 저장하기 위한 복수의 레지스터 수단과;
상기 복수의 레지스터 수단에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하기 위한 처리 수단과;
소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하기 위한 명령 디코딩 수단을 포함하고;
상기 명령 디코딩 수단은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터 수단에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
상기 제1 명령세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코딩 수단은 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코딩 수단은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
상기 명령 디코딩 수단은 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성된 것을 특징으로 한다.
본 발명의 추가의 측면의 관점에서 데이터 처리 방법이 제공되며, 해당 방법은:
처리될 데이터 값을 복수의 레지스터에 저장하는 단계와;
상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하는 단계와;
상기 데이터 처리 동작의 수행을 제어하도록 소정 흐름의 프로그램 명령을 디코딩하는 단계로,
상기 디코딩은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하는, 그러한 디코딩 단계와;
상기 제1 명령 세트의 프로그램 명령을 실행시, 복수의 예외 상태 중 하나로 동작하고, 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하는 단계를 포함하고;
상기 디코딩은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하고;
상기 디코딩은 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하는 것을 특징으로 한다.
첨부 도면을 참조로 본 발명의 실시예들을 단지 예시적인 목적으로 설명한다.
도 1은 32-비트 데이터 값에 대해 동작하는 제1 명령 세트와 64-비트 데이터 값에 대해 동작하는 제2 명령 세트를 지원하는 데이터 처리 시스템을 개략적으로 나타내고;
도 2는 도 1의 데이터 처리 시스템의 64-비트 범용 레지스터를 개략적으로 나타내고;
도 3은 도 2의 범용 레지스터를 사용하여 32-비트 데이터 처리 값에 대해 동작하는 데이터 처리 명령의 동작을 개략적으로 나타내며;
도 4는 도 2의 범용 레지스터를 사용하여 64-비트 데이터 처리 값에 대해 동작하는 데이터 처리 명령의 동작을 개략적으로 나타내며;
도 5는 32-비트 데이터 처리 값에 대해 동작하고 레지스터 특정 필드를 포함하는 명령의 예를 개략적으로 나타내며;
도 6은 64-비트 데이터 처리 값에 대해 동작하고 레지스터 특정 필드를 포함하는 명령의 예를 개략적으로 나타내며;
도 7은 32-비트 데이터 처리 값에 대해 동작하는 제1 명령 세트의 프로그램 명령에 제공되는 레지스터를 개략적으로 나타내며;
도 8은 64-비트 데이터 처리 값에 대해 동작하는 제2 명령 세트에 제공되는 레지스터를 개략적으로 나타내며;
도 9는 도 7 및 도 8의 레지스터 사이의 매핑을 개략적으로 나타내며;
도 10은 명령의 디코딩을 개략적으로 나타낸 흐름도이고;
도 11은 프로그램 명령의 필드를 다른 명령 세트로부터 특정하는 레지스터의 디코딩을 개략적으로 나타내며;
도 12는 가상 장치 구현을 개략적으로 나타낸다.
도 1은 메모리(6)에 결합된 프로세서(4)를 포함한 데이터 처리 시스템(2)을 개략적으로 예시하고 있다. 프로세서(4)는 31개의 범용 레지스터로서 형성된 복수의 레지스터(8)와, 항상 제로값으로 복귀하는 하나의 널 레지스터(null 레지스터)를 포함한다. 이들 레지스터는 레지스터 개명처리(renaming)를 사용하지 않는 실시형태에서 프로세서(4)라는 하드웨어에 의해 제공되는 레지스터들이다. 레지스터 개명처리를 사용하는 실시형태에서는 아키텍처 레지스터(예컨대 명령(명령어)에 의해 특정되고 프로그래머의 모델에서 고려되는 레지스터)가 상이한 물리적인 레지스터들에 매핑될 수도 있고, 다중 물리적인 레지스터들이 프로그램 순서에 따라 상이한 시간에 동일한 아키텍처 레지스터에 대응하는 값들을 동시에 유지할 수도 있다.
레지스터(8)는 32-비트로 엔코딩된 명령을 포함하는 제1 명령 세트에 제공되고 32-비트 데이터 값(32-비트 명령)으로 동작하는 제1 세트의 레지스터(한 세트의 32-비트 아키텍처 레지스터)에 의해, 그리고 32-비트로 엔코딩된 명령을 포함하는 제2 명령 세트에 제공되고 64-비트 데이터 값(64-비트 명령)으로 동작하는 제2 세트의 레지스터(한 세트의 64-비트 아키텍처 레지스터)에 의해 사용된다. 이들 명령 세트 양자 내의 명령들은 32-비트를 사용하여 엔코딩되지만, 이들 명령 세트에 의해 영향을 받는 데이터 값들의 폭은 상이하다.
처리 회로(10)는 복수의 레지스터(8)에 결합되고, 체배기(12), 천이기(14) 및 가산기(16)를 포함하여 데이터 경로의 형태를 취한다. 명령 디코더(18)(레지스터 매핑 회로를 포함한다)는 명령 디코더(18)에 의해 디코딩된 프로그램 명령에 응답하여 제어 신호(20)를 발생시킨다. 이들 제어 신호(20)는 처리 회로(10)를 제어 및 구성할 뿐만 아니라 복수의 범용 레지스터(8) 내의 레지스터에 대한 액세스를 제어한다. 처리 회로(10)는 명료성을 향상시키기 위해 단순화한 형태로 보여주고 있고 실제로 더 많은 회로 요소가 존재할 수도 있다는 것이 이해될 것이다.
데이터 처리 시스템(2) 상태 데이터(사용자 판독이 있거나 없을 수 있다)를 사용해서 프로그램 명령이 제1 명령 세트의 프로그램 명령 또는 제2 명령 세트의 프로그램 명령으로서 디코딩되는 지의 여부를 제어하며, 예컨대, 모드 비트 또는 모드 상태가 어느 명령 세트가 사용 중인 지를 나타내도록 설정될 수도 있다. 상이한 명령 세트 내에서 명령을 엔코딩하는 것은 동일한 명령 비트 패턴이 양자의 명령 세트에서 발생하고 이들 명령 세트 내의 상이한 명령에 대응한다는 점에서 비직교형일 수도 있다.
디코딩 대상 프로그램 명령은 제1 명령 세트의 프로그램(24)과 제2 명령 세트의 프로그램(26) 양자를 저장한 메모리(6)로부터 명령 파이프라인(22)으로 인출된다. 프로그램 명령이 명령 파이프라인(22) 내의 디코드 스테이지(decode stage)에 도달하면, 이들 명령은 디코딩을 위한 명령 디코더(18)로 전송되어 제어 신호(20)를 발생시킨다. 명령 디코더(18)는 또한 명령 세트 선택 회로(28)로부터의 신호에 응답하여 어느 명령 세트가 현재 사용 중인 지를, 따라서 명령 파이프라인(22)에 의해 디코딩을 위해 제공된 프로그램 명령이 제1 명령 세트의 32-비트 명령 또는 제2 명령 세트의 64-비트 명령로서 디코딩되어야 하는 지를 나타낸다. 명령 디코더(18)가 제1 명령 세트(32-비트 명령)로부터 명령을 디코딩하는 경우, 명령 디코더는 또한 어느 모드에서 프로세서(4)가 현재 동작하고 있는 지를 나타내는 32-비트 예외 모드 회로(30)로부터 신호에 응답한다. 제1 명령 세트에 제공된 제1 세트의 레지스터들 중에서 어느 레지스터를 특정하기 위해 제1 명령 세트의 프로그램 명령을 실행하는 것이 필요한 경우 현재 예외 모드가 후술하는 바와 같이 사용될 것이다.
도 2는 도 1의 복수의 범용 레지스터(8) 중의 하나를 예시하고 있다. 범용 레지스터는 64-비트 레지스터이다. 제1 명령 세트의 프로그램 명령(32-비트 명령)를 실행하는 경우, 도 2의 레지스터의 최하위 비트 부분이 액세스 및 조작된다. 바람직한 실시형태에서, 최하위 비트 부분은 제로로 될 수 있거나 어떤 불확정값으로 설정되더라도 그러한 조작 동안 변화없이 유지된다. 도 2의 레지스터가 제2 명령 세트의 프로그램 명령에 의해 액세스되는 경우, 레지스터의 전체 64-비트가 사용된다. 따라서 두 명령 세트가 상이한 데이터 폭으로 동작하더라도, 이들 명령 세트는 도 1의 복수의 레지스터(8)에 제공된 물리적인 레지스터의 사용을 공유할 수 있다. 레지스터의 최상위 32-비트는 두 명령 세트 사이에서 공유되지 아니하는 레지스터의 일부이다.
도 3은 제1 명령 세트로부터 가산 동작을 수행할 때의 레지스터의 사용을 개략적으로 예시하고 있다. 알 수 있듯이, 각각의 레지스터의 하부가 사용되어 입력 연산자 또는 수행된 처리 동작을 위한 수신지를 제공한다. 레지스터의 상부는 무시되고, 바람직한 실시형태에서는 변화 없이 유지된다.
도 4에는 제2 명령 세트(64-비트 명령)의 가산 동작이 유사하게 예시되어 있다. 이 경우 입력 연산자와 수신지 모두가 도 2의 레지스터 전체 폭을 사용한다는 것을 도 4로부터 알 수 있다.
도 5는 3개의 레지스터 특정 필드를 포함한 제1 명령 세트(32-비트 명령)의 명령을 개략적으로 예시하고 있다. 이들 레지스터 특정 필드는 16개의 상이한 값이 각각의 레지스터 특정 필드에 의해 특정되는 것을 허용하는 4 비트 필드이다. 2개의 출발지 레지스터 특정 필드, 즉 Rra 및 Rn가 예시되어 있다. 하나의 수신지 레지스터 특정 필드, 즉 R4가 예시되어 있다. 도 5에 개략적으로 예시되어 있는 명령의 나머지는 어느 데이터 처리 조작이 수행될 것인 지를 나타내는 데에 사용되는 연산 코드이다. 레지스터 특정 필드는 또한 레지스터 지정자(specifier)의 일부 비트와 분리되어 있는 레지스터 지정자의 다른 비트와 비인접 상태(non-contiguous)로 될 수도 있다.
도 6은 도 5와 유사하며, 이 경우 다른 점은 제2 명령 세트(64-비트 명령)로부터 명령이 예시되어 있다는 것이다. 이 경우 레지스터 특정 필드는 각각의 레지스터 특정 필드를 위해 32개의 상이한 값까지 나타내는 것을 허용하는 5 비트 필드이다. 소스 레지스터 특정 필드는 Xm 및 Xn이며, 수신지 레지스터 특정 필드는 Xd이다.
도 7은 제1 명령 세트에 제공된 제1 세트의 아키텍처 레지스터를 예시하고 있다. 이러한 세트의 아키텍처 레지스터는 잉글랜드, 캠브리지에 소재하는 ARM사에 의해 설계된 프로세서의 ARM 명령 세트에 제공되어 있다. 레지스터 특정 필드는 0에서 15까지의 값이 특정되는 것을 허용하는 4 비트 필드이다. 레지스터 R15는 프로그램 카운터로서 사용을 위해 예비 보존되어 있다. 프로그램 카운터로서 R15의 사용은 특별한 목적을 위한 사용이고, 프로그램 카운터는 후술하는 64-비트 명령 세트에 제공되는 제2 세트의 아키텍처 레지스터에 매핑되는 ARM 명령 세트(제1 명령 세트)에 제공되는 제1 세트의 아키텍처 레지스터들 중의 하나를 형성하지 않는다.
도 7에 예시되어 있는 바와 같이, 사용자 및 시스템 모드에는 15개의 범용 레지스터 RO 내지 R14가 제공된다. 도 5에 예시되어 있는 명령 내의 레지스터 특정 필드는 이들 레지스터 중의 어느 것이 수행 중인 데이터 처리 동작의 일부로서 액세스될 것인 지를 특정하는 데에 사용된다. 많은 데이터 처리 동작이 액세스 대상 다중 레지스터를 특정한다는 것이 이해될 것이다.
실제로 레지스터 R13은 스택 포인트(stack pointer)로서의 용도를 위해 유보되어 있고, 레지스터 R14는 예컨대 함수 호출에 대해 복귀 주소를 저장하기 위한 복귀 주소 레지스터로서 사용된다.
도 7은 프로세서(4)가 예외 모드 중의 하나에서[32-비트 예외 모드 회로(30)에 의해 명령 디코더(18)에 나타낸 바와 같이] 동작하고 있는 경우, 상이한 아키텍처 레지스터가 특정의 레지스터 특정 값을 사용할 때의 제1 명령 세트에 제공된다는 것을 예시하고 있다. 따라서, 일례로서, 레지스터 특정 값이 "13"인 경우, (임의의 레지스터 개명 전에) 사용될 수 있는 7개의 상이한 아키텍처 레지스터가 존재한다. 이들 아키텍처 레지스터 중의 제1 아키텍처 레지스터는 사용자 또는 시스템 모드에서 사용된다. 나머지 6개의 아키텍처 레지스터는 사용자 또는 시스템 모드에서 사용된 아키텍처 레지스터 대신에 효과적으로 대체되는데, 현재 예외 모드에 따라 또는 프로세서가 하이퍼바이저 모드(hypervisor mode)에서 실행되는지에 따라 선택된다. 만약 프로세서(4)가 하이퍼바이저 모드에서 실행되면, 이것은 도 1에 예시된 바와 같이 명령 디코더(18)에 입력된 신호로 표시된다.
사용자 또는 시스템 모드의 R13 레지스터를 대체할 수 있는 6개의 아키텍처 레지스터는 하나의 그룹으로서 뱅킹 예외 레지스터(banked exception registers)로 불리운다. 상이한 아키텍처 레지스터는 상이한 개수의 뱅킹 등가물을 가지며, 모든 아키텍처 레지스터가 뱅킹 등가물을 가지는 것이 아니라는 것을 알 것이다. 이들 뱅킹 레지스터를 제공하면, 어떤 상황에서는 더 빠른 예외 처리를 용이하게 할 수도 있다.
도 8은 제2 명령 세트에 제공되는 제2 세트의 아키텍처 레지스터를 개략적으로 예시하고 있다. 이러한 제2 세트의 아키텍처 레지스터는 도 7에 예시된 제1 세트의 아키텍처 레지스터와 비교하여 단순한 구조를 가진다. 제2 세트의 아키텍처 레지스터는 31개의 범용 레지스터로 구성되고, 각각은 64-비트 레지스터이다. 이들 레지스터는 X0 내지 X30로 표시되어 있다. 도 6에 예시되어 있는 5 비트 레지스터 특정 필드는 이들 아키텍처 레지스터 중의 어느 것이 액세스될 수 있는지를 특정하는 데에 사용된다. 도 8에 예시되어 있는 아키텍처 레지스터는 64-비트 레지스터로서 액세스되며, 모든 64-비트가 특정된 데이터 처리 동작에 의해 조작된다. 이와 달리, 도 7의 아키텍처 레지스터는 하부 물리적인 레지스터(underlying physical register)가 도 2에 도시된 바와 같이 64-비트 레지스터이더라도 32-비트 레지스터이다.
도 8에는 널값(예컨대, 0)을 저장하는 널 레지스터 X31도 또한 예시되어 있다. 이러한 널 레지스터가 판독시마다, 널값은 복귀된다. 이러한 널 레지스터가 기록될 때마다, 널값은 시도된 기록에 상관없이 널 레지스터에 저장된 상태로 유지된다. 도 7에 예시된 제1 명령 세트에 제공되는 아키텍처 레지스터 중에는 도 8의 널 레지스터에 대응하는 것은 없다. 따라서, 널 레지스터는 제1 세트 및 제2 세트의 레지스터 사이의 1:1 매핑이 이루어지는 제2 세트의 아키텍처 레지스터에 포함되지 않는다.
도 9는 제1 세트 및 제2 세트의 레지스터 사이의 매핑을 예시하고 있다. 예시된 바와 같이, 레지스터 X0 내지 X7은 각각 레지스터 R0 내지 R7와 마찬가지로 동일한 64-비트 레지스터에 액세스한다. 이것은 예시된 바와 같은 매핑을 이용하여 추가의 레지스터를 위해 계속된다. 주목할 특징은 레지스터 R13 및 R14에 대해 제1 명령 세트에서 사용된 레지스터 지정자의 최하위 비트가 제2 명령 세트의 해당 레지스터를 위해 사용되는 레지스터 지정자의 최하위 비트에 대응한다는 점이다. 이것은 레지스터 지정자의 디코딩 및 예외 모드를 단순화해서 물리적인 레지스터를 선택한다. 이러한 매핑에 대한 추가의 특징은 레지스터 X16 내지 X23을 위한 레지스터 지정자의 증분 시퀀스가 값이 교번하는 제1 명령 세트 중의 R14 및 R13의 레지스터 값에 대응한다는 점이다.
제1 명령 세트에 제공된 제1 세트의 레지스터와 제2 명령 세트에 제공된 제2 세트의 레지스터 사이의 1:1 매핑이 존재하는 것은 도 9로부터 알 수 있을 것이다. 제1 세트의 레지스터들은 모두 제2 명령 세트의 프로그램 명령에 액세스할 수 있다. 이것은 명령 세트 사이의 상호 동작성을 가능케 한다. 따라서 제1 명령 세트의 명령이 실행되는 동안 뱅킹 레지스터 내에 포함된 어떤 값이 프로그램 명령에 이용될 수 없는데, 이는 현재 예외 모드가 그러한 뱅킹 레지스터들을 사용 상태로 매핑시킬 수 없기 때문이다. 그러나, 제2 명령 세트의 실행 명령으로의 스위칭은 제1 세트의 레지스터들 전부를 제2 세트의 레지스터들에 매핑시키며, 그 결과 이들 레지스터는 모두 임의의 현재 모드와 독립적으로 액세스 가능하다.
도 10은 명령 디코더(18)의 동작을 개략적으로 예시하는 흐름도이다. 단계 32에서는 명령이 수신될 때까지 처리가 대기 상태이다. 단계 34에서는 명령이 제2 명령 세트로부터 나온 것인 지의 여부에 대하여, 즉 명령이 64-비트 명령인 지에 대하여 판단이 이루어진다. 만약 명령이 64-비트 명령이면, 단계 36은 64-비트 명령을 디코딩한다. 단계 38은 5-비트 필드인 레지스터 특정 필드에 사용되도록 레지스터들을 매핑시킨다. 다음에 단계 40은 5-비트 레지스터 특정 필드에 의해 특정된 레지스터에 액세스한다. 단계 42는 명령을 실행시킨다.
명령이 64-비트 명령이 아니라고 단계 34에서 판단하면, 단계 44는 명령을 32-비트 명령로서 디코딩한다. 단계 46은 4-비트 레지스터 특정 필드 및 전술한 현재 예외 모드(그리고 하이퍼바이저 상태)를 이용하여 사용될 레지스터들을 매핑시킨다. 다음에 단계 40 및 단계 42는 식별되었던 레지스터에 액세스해서 명령을 실행시킨다.
도 11은 명령 디코더(18)의 일부에 의해 수행되는 상이한 명령 세트로부터 프로그램 명령의 디코딩을 개략적으로 예시하고 있다. 이들 명령 세트는 32-비트 데이터 값을 조작하는 32-비트 명령로서 엔코딩된 ARM 명령 세트, 32-비트 데이터 값을 조작하는 16-bit 명령로서 엔코딩된 Thumb 명령 세트, 그리고 64-비트 데이터 값을 조작하는 32-비트 명령로서 엔코딩된 64-비트 명령 세트이다. ARM 명령은 16개의 상이한 아키텍처 레지스터가 특정되는 것을 허용하는, 길이가 y-비트, 예컨대 4 비트인 레지스터 필드를 포함한다. Thumb 명령은 8개의 아키텍처 레지스터가 정상적으로 어드레싱되는 것을 허용하는, 일부 명령에 사용되는 H 비트만큼 증가되고 일부 명령을 위해 16개의 아키텍처 레지스터가 어드레싱되는 것을 허용하는 H 비트만큼 증가된 x 비트, 예컨대 3 비트의 레지스터 특정 필드를 사용한다. 64-비트 명령은 32개 아키텍처 레지스터가 어드레싱되는 것을 허용하는 z-비트 레지스터 특정 필드, 예컨대 5 비트 레지스터 특정 필드이다.
프로세서(4) 내의 상태가 어느 명령 세트가 현재 사용 중인 지를 제어한다. 이러한 상태는 일부 실시형태에서는 프로그래머가 볼 수도 있다. 현재 사용 중인 명령 세트는 명령 세트 선택 명령을 사용하여 선택될 수 있으며, 이들 선택 명령은 이따금 분기 동작, 예컨대 명령 세트의 스위치를 가진 분기와 관련될 수도 있다. 상이한 명령 세트의 명령 엔코딩은 비직교형이며, 결국 ARM 명령을 특정하는 동일한 32-비트 패턴이 64-비트 명령 세트 내의 상이한 명령에 대응할 수도 있다. 이러한 32-비트 패턴의 올바른 디코딩은 어느 명령 세트가 현재 사용 중인 지를 식별하는 상태와 조합하여 수행될 수 있다. .
Thumb 명령의 레지스터 특정 필드에 대한 디코딩은 먼저 변환 회로(50)를 이용하여 x 비트 및 H 비트를 y-비트 필드로 변환함으로써 일어난다. 이러한 y-비트 필드는 ARM 명령 내의 y-비트 필드에 대응한다. 다음에 멀티플렉서(52)가 ARM 또는 Thumb 명령 세트 중의 어느 것이 현재 사용 중인 지에 따라 변환 회로(50)로부터의 y-비트 레지스터 특정 필드 또는 ARM 명령로부터 뱅킹 레지스터 매핑 회로(54) 상으로 판독된 y 비트 특정 필드를 통과하도록 선택된다. .
도 7과 관련하여 전술한 바와 같이, ARM 명령 세트(그리고 Thumb 명령 세트)는 뱅킹 레지스터를 제공한다. 특정 아키텍처 레지스터에 액세스하기 위해, y-비트 레지스터 특정 필드와 현재 예외 모드 양자는 뱅킹 레지스터 매핑 회로(54)에 의해 디코딩되어 z-비트 아키텍처적으로 평탄한 레지스터 수(AFRN)를 발생시킬 필요가 있다. ARM 명령 또는 Thumb 명령로부터 발생된 주어진 y-비트 레지스터 특정 필드는 예컨대 레지스터 R13을 특정할 수도 있다. 그러나 도 7에 예시된 바와 같이, 이러한 y-비트 필드에 대응한 7개의 아키텍처 레지스터가 존재하고, 현재 예외 모드는 대응하는 아키텍처적으로 평탄한 레지스터 수를 발생시키기 위해 이들 7개의 상이한 아키텍처 레지스터 사이에서 선택을 위해 사용된다.
64-비트 명령 세트는 뱅킹 레지스터를 사용하지 않는다. 따라서, z-비트 레지스터 특정 필드는 아키텍처적으로 평탄한 레지스터 수로서 직접 사용되어 액세스 대상 아키텍처 레지스터를 특정할 수도 있다. 멀티플렉서(56)는 64-비트 명령으로부터 판독된 아키텍처적으로 평탄한 레지스터 수 또는 뱅킹 레지스터 매핑 회로(54)에 의해 발생된 아키텍처적으로 평탄한 레지스터 수 사이에서 선택하여 레지스터 개명 회로(58)로 전송되는 아키텍처적으로 평탄한 레지스터 수를 제공한다. 레지스터 개명 회로는 복수의 레지스터(60) 내의 물리적인 레지스터를 어드레싱하는 데에 사용되는 레지스터 지정자(z5)를 발생시키기 위해 공지의 비정렬 처리 기법에 따라 레지스터 개명 동작을 수행할 수 있다.
도 11의 배열은 레지스터 개명 회로(58)가 상이한 명령 세트 사이에서 공유되는 것을 허용뿐만 아니라 복수의 레지스터(60)의 공유를 허용한다. 아키텍처적으로 평탄한 레지스터 수의 공통 발생은 디코딩과 복수의 레지스터(60)의 공유를 단순화한다. 레지스터 개명 회로(58)는 모든 실시형태에서 제공될 필요는 없다.
도 12는 사용될 수 있는 가상 장치 구현을 예시한다. 서두에 언급한 실시예들은 관련 기술을 지원하는 특정 처리 하드웨어를 동작시키는 장치 및 방법과 관련하여 본 발명을 구현하고 있지만, 소위 하드웨어 기기의 가상 장치 구현을 제공하는 것도 가능하다. 이들 가상 장치 구현은 통상 가상 장치 프로그램(510)을 지원하는 호스트 운영 시스템(520)을 구동시키는 호스트 프로세서(530) 상에서 구동된다. 통상, 적절한 속도로 실행되는 가상 장치 구현의 제공에는 고출력 프로세서가 필요하지만, 이러한 액세스는 예컨대, 호환성 또는 재사용의 이유로 다른 프로세서에 고유한 코드의 작동을 원하는 경우와 같이 소정의 환경에서 정당화될 수 있다. 가상 장치 프로그램(510)은 가장 장치 프로그램(510)에 의해 모델링되는 장치인 실제 하드웨어 기기에 의해 제공될 수 있는 어플리케이션 프로그램 인터페이스와 동일한 어플리케이션 프로그램 인터페이스를 어플리케이션 프로그램(500)에 제공한다. 따라서, 전술한 메모리 액세스의 제어를 포함하는 프로그램 명령은 가상 장치 프로그램(510)을 사용하여 가상 장치 하드웨어와의 상호 작용을 모델링하도록 어플리케이션 프로그램(500) 내로부터 실행될 수 있다.

Claims (48)

  1. 데이터 처리 장치로서, 해당 장치는:
    처리될 데이터 값을 저장하도록 구성된 복수의 레지스터와;
    상기 복수의 레지스터에 결합되고, 상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하도록 구성된 처리 회로와;
    상기 처리 회로에 결합되고, 소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하는 명령 디코더를 포함하고;
    상기 명령 디코더는 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 N-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
    상기 명령 디코더는 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 M-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며, 상기 복수의 레지스터 중 적어도 일부는 상기 제1 명령 세트의 프로그램 명령과 상기 제2 세트의 프로그램 명령에 의해 공유되며;
    상기 명령 디코더는 상기 복수의 레지스터 중 어떤 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제1 세트의 N-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
    상기 명령 디코더는 상기 복수의 레지스터 중 어떤 레지스터가 상기 제2 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제2 세트의 M-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
    상기 명령 디코더는 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제1 매핑과 상기 제2 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제2 매핑을 제공하도록 구성되고, 상기 제1 매핑은 상기 제2 매핑과 상이하며, 상기 제1 매핑과 제2 매핑은 상기 제1 세트의 각각의 레지스터가 상기 제2 세트의 레지스터에 대해 미리 정해진 1:1 매핑을 가지며 상기 제2 세트의 상기 레지스터와는 상기 복수의 레지스터 내의 공통의 레지스터의 공유 부분을 공유하며 상기 제2 세트의 레지스터를 사용하여 액세스 가능한 값을 저장하도록 이루어지며, 상기 공통의 레지스터의 비공유 부분은 상기 제1 명령 세트의 명령을 사용하여 액세스되지 않는 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    M=2N인 데이터 처리 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 복수의 레지스터는 복수의 M-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 M-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    N=32인 데이터 처리 장치.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 명령세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코더는 상기 복수의 레지스터 중 어떤 레지스터가 액세스 되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하도록 구성되고, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 장치.
  7. 제6항에 있어서,
    상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 장치.
  8. 제7항에 있어서,
    상기 명령 디코더는, 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 상기 매핑을 제공하도록 구성된 데이터 처리 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값(null value)을 저장하는 널값 레지스터를 포함하는 데이터 처리 장치.
  10. 제9항에 있어서,
    상기 제1 세트의 레지스터는 상기 널값 레지스터에 매핑된 아키텍처 레지스터를 갖지 않는 데이터 처리 장치.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 매핑되는 상기 제1 세트의 외부에 있는 데이터 처리 장치.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 공통의 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 액세스될 때, 상기 비공유 부분은 0의 값, 비변경된 값, 미정의된 값 중 하나인 데이터 처리 장치.
  13. 데이터 처리 장치로서, 해당 장치는:
    처리될 데이터 값을 저장하기 위한 복수의 레지스터 수단과;
    상기 복수의 레지스터 수단에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하기 위한 처리 수단과;
    소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하기 위한 명령 디코딩 수단을 포함하고;
    상기 명령 디코딩 수단은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터 수단에 의해 제공되는 양의 정수인 N-비트의 아키텍처 레지스터 수단을 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
    상기 명령 디코딩 수단은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터 수단에 의해 제공되는 양의 정수인 M-비트의 아키텍처 레지스터 수단을 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며, 상기 복수의 레지스터 수단 중 적어도 일부는 상기 제1 명령 세트의 프로그램 명령과 상기 제2 세트의 프로그램 명령에 의해 공유되며;
    상기 명령 디코딩 수단은 상기 복수의 레지스터 수단 중 어떤 레지스터 수단이 상기 제1 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제1 세트의 N-비트 아키텍처 레지스터 수단의 일부로서 액세스되는지를 결정할 때 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
    상기 명령 디코딩 수단은 상기 복수의 레지스터 수단 중 어떤 레지스터 수단이 상기 제2 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제2 세트의 M-비트 아키텍처 레지스터 수단의 일부로서 액세스되는지를 결정할 때 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
    상기 명령 디코딩 수단은 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터 수단의 값 사이에 제1 매핑과 상기 제2 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터 수단의 값 사이에 제2 매핑을 제공하도록 구성되고, 상기 제1 매핑은 상기 제2 매핑과 상이하며, 상기 제1 매핑과 제2 매핑은 상기 제1 세트의 각각의 레지스터 수단이 상기 제2 세트의 레지스터 수단에 대해 미리 정해진 1:1 매핑을 가지며 상기 제2 세트의 상기 레지스터 수단과는 상기 복수의 레지스터 수단 내의 공통의 레지스터 수단의 공유 부분을 공유하며 상기 제2 세트의 레지스터 수단을 사용하여 액세스 가능한 값을 저장하도록 이루어지며, 상기 공통의 레지스터 수단의 비공유 부분은 상기 제1 명령 세트의 명령을 사용하여 액세스되지 않는 것을 특징으로 하는 데이터 처리 장치.
  14. 데이터 처리 방법으로서, 해당 방법은:
    처리될 데이터 값을 복수의 레지스터에 저장하는 단계와;
    상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하는 단계와;
    상기 데이터 처리 동작의 상기 수행을 제어하도록 소정 흐름의 프로그램 명령을 디코딩하는 단계를 포함하고;
    상기 디코딩은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 N-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하며;
    상기 디코딩은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 M-비트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하며, 상기 복수의 레지스터 중 적어도 일부는 상기 제1 명령 세트의 프로그램 명령과 상기 제2 세트의 프로그램 명령에 의해 공유되며;
    상기 디코딩은 상기 복수의 레지스터 중 어떤 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제1 세트의 N-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하고;
    상기 디코딩은 상기 복수의 레지스터 중 어떤 레지스터가 상기 제2 명령 세트의 프로그램 명령에 의해 사용되도록 제공된 제2 세트의 M-비트 아키텍처 레지스터의 일부로서 액세스되는지를 결정할 때 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하고;
    상기 디코딩은 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제1 매핑과 상기 제2 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드와 상기 복수의 레지스터의 값 사이에 제2 매핑을 제공하고, 상기 제1 매핑은 상기 제2 매핑과 상이하며, 상기 제1 매핑과 제2 매핑은 상기 제1 세트의 각각의 레지스터가 상기 제2 세트의 레지스터에 대해 미리 정해진 1:1 매핑을 가지며 상기 제2 세트의 상기 레지스터와는 상기 복수의 레지스터 내의 공통의 레지스터의 공유 부분을 공유하며 상기 제2 세트의 레지스터를 사용하여 액세스 가능한 값을 저장하며, 상기 공통의 레지스터의 비공유 부분은 상기 제1 명령 세트의 명령을 사용하여 액세스되지 않는 것을 특징으로 하는 데이터 처리 방법.
  15. 제14항에 있어서,
    M=2N인 데이터 처리 방법.
  16. 제14항 또는 제15항에 있어서,
    상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 방법.
  17. 제14항 내지 제16항 중 어느 한 항에 있어서,
    상기 복수의 레지스터는 복수의 M-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 M-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 방법.
  18. 제14항 내지 제17항 중 어느 한 항에 있어서,
    N=32인 데이터 처리 방법.
  19. 제14항 내지 제18항 중 어느 한 항에 있어서,
    상기 제1 명령세트의 프로그램 명령을 실행시, 복수의 예외 상태 중 하나로 동작하고, 상기 디코딩은 상기 복수의 레지스터 중 어떤 레지스터가 액세스 되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하며, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 방법.
  20. 제19항에 있어서,
    상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 방법.
  21. 제20항에 있어서,
    상기 디코딩은 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 상기 매핑을 제공하는 데이터 처리 방법.
  22. 제14항 내지 제21항 중 어느 한 항에 있어서,
    상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값을 저장하는 널값 레지스터를 포함하는 데이터 처리 방법.
  23. 제22항에 있어서,
    상기 제1 세트의 레지스터는 상기 널값 레지스터에 매핑된 아키텍처 레지스터를 갖지 않는 데이터 처리 방법.
  24. 제14항 내지 제23항 중 어느 한 항에 있어서,
    상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 매핑되는 상기 제1 세트의 외부에 있는 데이터 처리 방법.
  25. 제14항 내지 제24항 중 어느 한 항에 있어서,
    상기 공통의 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 액세스될 때, 상기 비공유 부분은 0의 값, 비변경된 값, 미정의된 값 중 하나인 데이터 처리 방법.
  26. 데이터 처리 장치에 대해 실행되는 컴퓨터 프로그램에 의해 제공되는 가상 장치로서, 상기 가상 장치는 제1항 내지 제12항 중 어느 한 항의 장치에 대응하는 명령 실행 환경을 제공하는 것을 특징으로 하는 가상 장치.
  27. 데이터 처리 장치로서, 해당 장치는:
    처리될 데이터 값을 저장하도록 구성된 복수의 레지스터와;
    상기 복수의 레지스터에 결합되고, 상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하도록 구성된 처리 회로와;
    상기 처리 회로에 결합되고, 소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하는 명령 디코더를 포함하고;
    상기 명령 디코더는 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
    상기 제1 명령 세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코더는 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하도록 구성되고;
    상기 명령 디코더는 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
    상기 명령 디코더는 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
  28. 제27항에 있어서,
    상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 장치.
  29. 제27항 또는 제28항에 있어서,
    상기 복수의 레지스터는 복수의 2N-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 2N-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 장치.
  30. 제29항에 있어서,
    N=32인 데이터 처리 장치.
  31. 제27항 내지 제30항 중 어느 한 항에 있어서,
    상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 장치.
  32. 제31항에 있어서,
    상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 장치.
  33. 제32항에 있어서,
    상기 명령 디코더는, 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 구성된 데이터 처리 장치.
  34. 제27항 내지 제33항 중 어느 한 항에 있어서,
    상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값을 저장하는 널값 레지스터를 포함하고 상기 제1 세트는 상기 널값 레지스터에 대응하는 레지스터를 갖지 않는 데이터 처리 장치.
  35. 제34항에 있어서,
    상기 제1 세트는 상기 널값 레지스터에 대응하는 아키텍처 레지스터를 갖지 않는 데이터 처리 장치.
  36. 제27항 내지 제35항 중 어느 한 항에 있어서,
    상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 대응하는 상기 제1 세트의 외부에 있는 데이터 처리 장치.
  37. 데이터 처리 장치로서, 해당 장치는:
    처리될 데이터 값을 저장하기 위한 복수의 레지스터 수단과;
    상기 복수의 레지스터 수단에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하기 위한 처리 수단과;
    소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하기 위한 명령 디코딩 수단을 포함하고;
    상기 명령 디코딩 수단은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터 수단에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
    상기 제1 명령세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코딩 수단은 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하도록 구성되고;
    상기 명령 디코딩 수단은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
    상기 명령 디코딩 수단은 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
  38. 데이터 처리 방법으로서, 해당 방법은:
    처리될 데이터 값을 복수의 레지스터에 저장하는 단계와;
    상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하는 단계와;
    상기 데이터 처리 동작의 수행을 제어하도록 소정 흐름의 프로그램 명령을 디코딩하는 단계로,
    상기 디코딩은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하는, 그러한 디코딩 단계와;
    상기 제1 명령 세트의 프로그램 명령을 실행시, 복수의 예외 상태 중 하나로 동작하고, 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하는 단계를 포함하고;
    상기 디코딩은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하고;
    상기 디코딩은 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하는 것을 특징으로 하는 데이터 처리 방법.
  39. 제38항에 있어서,
    상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 방법.
  40. 제38항 또는 제39항에 있어서,
    상기 복수의 레지스터는 복수의 2N-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 2N-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 방법.
  41. 제40항에 있어서,
    N=32인 데이터 처리 방법.
  42. 제38항 내지 제41항 중 어느 한 항에 있어서,
    상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 방법.
  43. 제42항에 있어서,
    상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 방법.
  44. 제43항에 있어서,
    상기 디코딩은 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 행해지는 데이터 처리 방법.
  45. 제38항 내지 제44항 중 어느 한 항에 있어서,
    상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값을 저장하는 널값 레지스터를 포함하고, 상기 제1 세트는 상기 널값 레지스터에 대응하는 레지스터를 갖지 않는 데이터 처리 방법.
  46. 제45항에 있어서,
    상기 제1 세트는 상기 널값 레지스터에 대응하는 아키텍처 레지스터를 갖지 않는 데이터 처리 방법.
  47. 제38항 내지 제46항 중 어느 한 항에 있어서,
    상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 대응하는 상기 제1 세트의 외부에 있는 데이터 처리 방법.
  48. 데이터 처리 장치에 대해 실행되는 컴퓨터 프로그램에 의해 제공되는 가상 장치로서, 상기 가상 장치는 제27항 내지 제36항 중 어느 한 항의 장치에 대응하는 명령 실행 환경을 제공하는 것을 특징으로 하는 가상 장치.
KR1020127025937A 2010-03-15 2011-02-16 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑 KR101812569B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1004293.5A GB2478726B (en) 2010-03-15 2010-03-15 Mapping between registers used by multiple instruction sets
GB1004293.5 2010-03-15
PCT/GB2011/050306 WO2011114121A1 (en) 2010-03-15 2011-02-16 Mapping between registers used by multiple instruction sets

Publications (2)

Publication Number Publication Date
KR20130016246A true KR20130016246A (ko) 2013-02-14
KR101812569B1 KR101812569B1 (ko) 2017-12-27

Family

ID=42261608

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127025937A KR101812569B1 (ko) 2010-03-15 2011-02-16 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑

Country Status (10)

Country Link
US (1) US9092215B2 (ko)
EP (1) EP2524303B1 (ko)
JP (1) JP5646656B2 (ko)
KR (1) KR101812569B1 (ko)
CN (1) CN103098020B (ko)
GB (1) GB2478726B (ko)
IL (1) IL220987A (ko)
MY (1) MY156118A (ko)
TW (1) TWI489386B (ko)
WO (1) WO2011114121A1 (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9631528B2 (en) * 2009-09-03 2017-04-25 Clean Emissions Technologies, Inc. Vehicle reduced emission deployment
US9158541B2 (en) * 2010-11-03 2015-10-13 Apple Inc. Register renamer that handles multiple register sizes aliased to the same storage locations
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
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
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
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
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)
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
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
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked 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
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
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
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
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
US9430243B2 (en) * 2012-04-30 2016-08-30 Apple Inc. Optimizing register initialization operations
EP2704001B1 (en) * 2012-08-31 2016-10-19 VIA Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
EP2704002B1 (en) * 2012-08-31 2016-10-26 VIA Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
KR102180972B1 (ko) * 2014-04-23 2020-11-20 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
GB2538237B (en) * 2015-05-11 2018-01-10 Advanced Risc Mach Ltd Available register control for register renaming
GB2546465B (en) * 2015-06-05 2018-02-28 Advanced Risc Mach Ltd Modal processing of program instructions
GB2540971B (en) 2015-07-31 2018-03-14 Advanced Risc Mach Ltd Graphics processing systems
US20170046160A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Efficient handling of register files
GB2547912B (en) * 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
CN115525343B (zh) * 2022-10-31 2023-07-25 海光信息技术股份有限公司 一种并行译码的方法、处理器、芯片及电子设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0827716B2 (ja) 1985-10-25 1996-03-21 株式会社日立製作所 データ処理装置及びデータ処理方法
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2349252B (en) * 1996-06-10 2001-02-14 Lsi Logic Corp An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US6499046B1 (en) 1999-05-20 2002-12-24 International Business Machines Corporation Saturation detection apparatus and method therefor
US6981132B2 (en) * 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US20030126520A1 (en) * 2001-12-31 2003-07-03 Globespanvirata System and method for separating exception vectors in a multiprocessor data processing system
JP2004157636A (ja) * 2002-11-05 2004-06-03 Renesas Technology Corp データ処理装置
EP1447742A1 (en) * 2003-02-11 2004-08-18 STMicroelectronics S.r.l. Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor
TWI224281B (en) * 2003-07-16 2004-11-21 Sunplus Technology Co Ltd A processor executing script with different length and method thereof
TW200511111A (en) * 2003-07-30 2005-03-16 Koninkl Philips Electronics Nv Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set
US7263621B2 (en) * 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
WO2007018308A1 (en) 2005-08-09 2007-02-15 Matsushita Electric Industrial Co., Ltd. Recording medium, playback apparatus, method and program
US8245016B2 (en) * 2007-09-28 2012-08-14 International Business Machines Corporation Multi-threaded processing
GB2478731B (en) * 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control

Also Published As

Publication number Publication date
US9092215B2 (en) 2015-07-28
TW201203110A (en) 2012-01-16
MY156118A (en) 2016-01-15
EP2524303B1 (en) 2019-08-07
US20110225397A1 (en) 2011-09-15
KR101812569B1 (ko) 2017-12-27
EP2524303A1 (en) 2012-11-21
WO2011114121A1 (en) 2011-09-22
GB2478726A (en) 2011-09-21
GB2478726B (en) 2013-12-25
CN103098020B (zh) 2016-04-27
JP5646656B2 (ja) 2014-12-24
IL220987A0 (en) 2012-09-24
CN103098020A (zh) 2013-05-08
GB201004293D0 (en) 2010-04-28
TWI489386B (zh) 2015-06-21
IL220987A (en) 2016-05-31
JP2013522749A (ja) 2013-06-13

Similar Documents

Publication Publication Date Title
KR101812569B1 (ko) 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
US9804851B2 (en) Operand size control
JP6143872B2 (ja) 装置、方法、およびシステム
KR101597774B1 (ko) 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들
US4954943A (en) Data processing system
CN101802779A (zh) 具有可重新组构的浮点单元的处理器
TWI733825B (zh) 用於執行重新排列操作的設備及方法
JP3905552B2 (ja) 複数の命令セットを有するデータ処理装置内における命令エンコード
EP3329361B1 (en) Vector operand bitsize control
KR101528130B1 (ko) 권한 레벨에 관계없는 세그먼트 레지스터 판독 및 기입용 시스템, 장치, 및 방법
US10437598B2 (en) Method and apparatus for selecting among a plurality of instruction sets to a microprocessor
JPH03171231A (ja) マイクロコンピュータシステム
US9176738B2 (en) Method and apparatus for fast decoding and enhancing execution speed of an instruction
WO2021087103A1 (en) Shadow latches in a shadow-latch configured register file for thread storage
JPH0367331A (ja) マイクロプロセッサ
JPS6160457B2 (ko)
JPH04260131A (ja) マイクロプログラム制御方式
JP2005227848A (ja) ベクトルプロセッサおよびメモリアクセス方法
KR20070092093A (ko) 다중 마이크로컨트롤러 시스템, 명령어, 및 그의 명령어실행 방법
JPH0833820B2 (ja) マイクロプログラム制御装置

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