KR101812569B1 - 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑 - Google Patents
다중 명령 세트에 의해 사용되는 레지스터 간의 매핑 Download PDFInfo
- Publication number
- KR101812569B1 KR101812569B1 KR1020127025937A KR20127025937A KR101812569B1 KR 101812569 B1 KR101812569 B1 KR 101812569B1 KR 1020127025937 A KR1020127025937 A KR 1020127025937A KR 20127025937 A KR20127025937 A KR 20127025937A KR 101812569 B1 KR101812569 B1 KR 101812569B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- instruction
- registers
- program
- instruction set
- Prior art date
Links
- 238000013507 mapping Methods 0.000 title claims description 54
- 238000000034 method Methods 0.000 claims description 63
- 230000004044 response Effects 0.000 claims description 13
- 238000003672 processing method Methods 0.000 claims description 6
- 238000011387 Li's method Methods 0.000 claims 1
- 210000003813 thumb Anatomy 0.000 description 8
- 230000003993 interaction Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, 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
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 보다 상세하게, 본 발명은 다중 명령 세트와 해당 다중 명령 세트에 의해 사용되는 레지스터의 제공 방식을 지원하는 데이터 처리 시스템에 관한 것이다.
다중 명령 세트를 지원하는 데이터 처리 시스템을 제공하는 것이 공지되어 있다. 이러한 데이터 처리 시스템의 소정의 예는 영국 캠브릿지 소재의 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는 가상 장치 구현을 개략적으로 나타낸다.
도 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 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 양의 정수인 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항에 있어서,
M=2N인 데이터 처리 장치.
- 제1항 또는 제2항에 있어서,
상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 장치.
- 제1항 또는 제2항에 있어서,
상기 복수의 레지스터는 복수의 M-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 M-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 장치.
- 제1항 또는 제2항에 있어서,
N=32인 데이터 처리 장치.
- 제1항 또는 제2항에 있어서,
상기 제1 명령세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코더는 상기 복수의 레지스터 중 어떤 레지스터가 액세스 되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하도록 구성되고, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 장치.
- 제6항에 있어서,
상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 장치.
- 제7항에 있어서,
상기 명령 디코더는, 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 상기 매핑을 제공하도록 구성된 데이터 처리 장치.
- 제1항 또는 제2항에 있어서,
상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값(null value)을 저장하는 널값 레지스터를 포함하는 데이터 처리 장치.
- 제9항에 있어서,
상기 제1 세트의 레지스터는 상기 널값 레지스터에 매핑된 아키텍처 레지스터를 갖지 않는 데이터 처리 장치.
- 제1항 또는 제2항에 있어서,
상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 매핑되는 상기 제1 세트의 외부에 있는 데이터 처리 장치.
- 제1항 또는 제2항에 있어서,
상기 공통의 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 액세스될 때, 상기 비공유 부분은 0의 값, 비변경된 값, 미정의된 값 중 하나인 데이터 처리 장치.
- 다중 명령 세트와 해당 다중 명령 세트에 의해 사용되는 레지스터의 제공 방식을 지원하는 데이터 처리 장치로서, 해당 장치는:
처리될 데이터 값을 저장하기 위한 복수의 레지스터 수단과;
상기 복수의 레지스터 수단에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하기 위한 처리 수단과;
소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하기 위한 명령 디코딩 수단을 포함하고;
상기 명령 디코딩 수단은 제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 명령 세트의 프로그램 명령을 사용하여 액세스되지 않는 것을 특징으로 하는 데이터 처리 방법.
- 제14항에 있어서,
M=2N인 데이터 처리 방법.
- 제14항 또는 제15항에 있어서,
상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 방법.
- 제14항 또는 제15항에 있어서,
상기 복수의 레지스터는 복수의 M-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 M-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 방법.
- 제14항 또는 제15항에 있어서,
N=32인 데이터 처리 방법.
- 제14항 또는 제15항에 있어서,
상기 제1 명령세트의 프로그램 명령을 실행시, 복수의 예외 상태 중 하나로 동작하고, 상기 디코딩은 상기 복수의 레지스터 중 어떤 레지스터가 액세스 되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 상기 레지스터 특정 필드를 디코딩하며, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 방법.
- 제19항에 있어서,
상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 방법.
- 제20항에 있어서,
상기 디코딩은 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 상기 매핑을 제공하는 데이터 처리 방법.
- 제14항 또는 제15항에 있어서,
상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값을 저장하는 널값 레지스터를 포함하는 데이터 처리 방법.
- 제22항에 있어서,
상기 제1 세트의 레지스터는 상기 널값 레지스터에 매핑된 아키텍처 레지스터를 갖지 않는 데이터 처리 방법.
- 제14항 또는 제15항에 있어서,
상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 매핑되는 상기 제1 세트의 외부에 있는 데이터 처리 방법.
- 제14항 또는 제15항에 있어서,
상기 공통의 레지스터가 상기 제1 명령 세트의 프로그램 명령에 의해 액세스될 때, 상기 비공유 부분은 0의 값, 비변경된 값, 미정의된 값 중 하나인 데이터 처리 방법.
- 삭제
- 다중 명령 세트와 해당 다중 명령 세트에 의해 사용되는 레지스터의 제공 방식을 지원하는 데이터 처리 장치로서, 해당 장치는:
처리될 데이터 값을 저장하도록 구성된 복수의 레지스터와;
상기 복수의 레지스터에 결합되고, 상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하도록 구성된 처리 회로와;
상기 처리 회로에 결합되고, 소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하는 명령 디코더를 포함하고;
상기 명령 디코더는 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
상기 제1 명령 세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코더는 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코더는 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 회로를 제어하며;
상기 명령 디코더는 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
- 제27항에 있어서,
상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 장치.
- 제27항 또는 제28항에 있어서,
상기 복수의 레지스터는 복수의 2N-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 2N-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 장치.
- 제29항에 있어서,
N=32인 데이터 처리 장치.
- 제27항 또는 제28항에 있어서,
상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 장치.
- 제31항에 있어서,
상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 장치.
- 제32항에 있어서,
상기 명령 디코더는, 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 구성된 데이터 처리 장치.
- 제27항 또는 제28항에 있어서,
상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값을 저장하는 널값 레지스터를 포함하고 상기 제1 세트는 상기 널값 레지스터에 대응하는 레지스터를 갖지 않는 데이터 처리 장치.
- 제34항에 있어서,
상기 제1 세트는 상기 널값 레지스터에 대응하는 아키텍처 레지스터를 갖지 않는 데이터 처리 장치.
- 제27항 또는 제28항에 있어서,
상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 대응하는 상기 제1 세트의 외부에 있는 데이터 처리 장치.
- 다중 명령 세트와 해당 다중 명령 세트에 의해 사용되는 레지스터의 제공 방식을 지원하는 데이터 처리 장치로서, 해당 장치는:
처리될 데이터 값을 저장하기 위한 복수의 레지스터 수단과;
상기 복수의 레지스터 수단에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하기 위한 처리 수단과;
소정 흐름의 프로그램 명령에 응답하여, 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하기 위한 명령 디코딩 수단을 포함하고;
상기 명령 디코딩 수단은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터 수단에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
상기 제1 명령세트의 프로그램 명령을 실행시 상기 장치는 복수의 예외 상태로 동작하도록 구성되고, 상기 명령 디코딩 수단은 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성되고;
상기 명령 디코딩 수단은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작을 수행하도록 상기 처리 수단을 제어하며;
상기 명령 디코딩 수단은 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하도록 구성된 것을 특징으로 하는 데이터 처리 장치. - 다중 명령 세트와 해당 다중 명령 세트에 의해 사용되는 레지스터의 제공 방식을 지원하는 데이터 처리 방법으로서, 해당 방법은:
처리될 데이터 값을 복수의 레지스터에 저장하는 단계와;
상기 복수의 레지스터에 저장된 데이터 값에 대해 데이터 처리 동작을 수행하는 단계와;
상기 데이터 처리 동작의 수행을 제어하도록 소정 흐름의 프로그램 명령을 디코딩하는 단계로,
상기 디코딩은 제1 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되는 제1 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하는, 그러한 디코딩 단계와;
상기 제1 명령 세트의 프로그램 명령을 실행시, 복수의 예외 상태 중 하나로 동작하고, 어떤 아키텍처 레지스터가 사용되는지를 결정할 때 상기 복수의 예외 상태 중 현재 예외 상태와 함께, 상기 제1 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하는 단계를 포함하고;
상기 디코딩은 제2 명령 세트의 프로그램 명령에 응답하여, 상기 복수의 레지스터에 의해 제공되고 상기 제1 명령 세트의 프로그램 명령과 공유되는 제2 세트의 아키텍처 레지스터를 사용하여 상기 데이터 처리 동작의 수행을 제어하고;
상기 디코딩은 어떤 아키텍처 레지스터가 사용되는지를 결정하는 예외 상태에 의존하지 않고 상기 제2 명령 세트의 프로그램 명령 내의 레지스터 특정 필드를 디코딩하는 것을 특징으로 하는 데이터 처리 방법.
- 제38항에 있어서,
상기 제1 및 제2 세트는 공통된 갯수의 레지스터를 포함하는 데이터 처리 방법.
- 제38항 또는 제39항에 있어서,
상기 복수의 레지스터는 복수의 2N-비트 레지스터를 포함하고, 상기 제1 명령 세트의 프로그램 명령은 상기 2N-비트 레지스터의 최하위 N-비트를 액세스하는 데이터 처리 방법.
- 제40항에 있어서,
N=32인 데이터 처리 방법.
- 제38항 또는 제39항에 있어서,
상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드와 다른 예외 상태의 공통의 값에 대응하는 상기 제1 세트 내의 레지스터의 그룹은 레지스터의 뱅킹 그룹인 데이터 처리 방법.
- 제42항에 있어서,
상기 레지스터의 뱅킹 그룹 내에서, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 최하위 비트의 값은 상기 제2 명령 세트의 상기 프로그램 명령의 상기 레지스터 특정 필드의 최하위 비트의 값과 공통인 데이터 처리 방법.
- 제43항에 있어서,
상기 디코딩은 상기 제2 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 일련의 증분 값에 대응하는 상기 제2 세트의 상기 레지스터의 일부의 경우, 상기 제1 명령 세트의 상기 프로그램 명령 내의 상기 레지스터 특정 필드의 대응하는 값이 2개의 값 사이에서 오가도록 행해지는 데이터 처리 방법.
- 제38항 또는 제39항에 있어서,
상기 복수의 레지스터는 상기 제2 명령 세트의 프로그램 명령과 액세스시 미리 정해진 널값을 저장하는 널값 레지스터를 포함하고, 상기 제1 세트는 상기 널값 레지스터에 대응하는 레지스터를 갖지 않는 데이터 처리 방법.
- 제45항에 있어서,
상기 제1 세트는 상기 널값 레지스터에 대응하는 아키텍처 레지스터를 갖지 않는 데이터 처리 방법.
- 제38항 또는 제39항에 있어서,
상기 제1 명령 세트의 프로그램 명령의 실행시, 프로그램 카운터 레지스터는 실행되는 프로그램 명령의 메모리 어드레스를 나타내는 값을 저장하고, 상기 프로그램 카운터 레지스터는 상기 제2 세트의 레지스터에 대응하는 상기 제1 세트의 외부에 있는 데이터 처리 방법.
- 삭제
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 KR20130016246A (ko) | 2013-02-14 |
KR101812569B1 true 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)
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 |
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 |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
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 |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load 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 |
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) |
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 |
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 |
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 |
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 |
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 |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
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 |
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 |
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 |
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
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 | 海光信息技术股份有限公司 | 一种并行译码的方法、处理器、芯片及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126520A1 (en) * | 2001-12-31 | 2003-07-03 | Globespanvirata | System and method for separating exception vectors in a multiprocessor data processing system |
US20040186981A1 (en) * | 2000-08-09 | 2004-09-23 | Christie David S. | Uniform register addressing using prefix byte |
US20050015574A1 (en) * | 2003-07-16 | 2005-01-20 | Sunplus Technology Co., Ltd. | Processor and method capable of executing instruction sets with different lengths |
US20060107076A1 (en) * | 2004-11-15 | 2006-05-18 | Via Technologies, Inc. | System, method, and apparatus for reducing power consumption a microprocessor with multiple decoding capabilities |
Family Cites Families (10)
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 |
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 |
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 |
AU2006277225B2 (en) | 2005-08-09 | 2011-06-09 | Panasonic Corporation | 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 |
-
2010
- 2010-03-15 GB GB1004293.5A patent/GB2478726B/en active Active
-
2011
- 2011-02-16 EP EP11705237.3A patent/EP2524303B1/en active Active
- 2011-02-16 MY MYPI2012003358A patent/MY156118A/en unknown
- 2011-02-16 CN CN201180014383.2A patent/CN103098020B/zh active Active
- 2011-02-16 JP JP2012557603A patent/JP5646656B2/ja active Active
- 2011-02-16 KR KR1020127025937A patent/KR101812569B1/ko active IP Right Grant
- 2011-02-16 WO PCT/GB2011/050306 patent/WO2011114121A1/en active Application Filing
- 2011-02-22 US US12/929,865 patent/US9092215B2/en active Active
- 2011-03-15 TW TW100108781A patent/TWI489386B/zh active
-
2012
- 2012-07-17 IL IL220987A patent/IL220987A/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040186981A1 (en) * | 2000-08-09 | 2004-09-23 | Christie David S. | 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 |
US20050015574A1 (en) * | 2003-07-16 | 2005-01-20 | Sunplus Technology Co., Ltd. | Processor and method capable of executing instruction sets with different lengths |
US20060107076A1 (en) * | 2004-11-15 | 2006-05-18 | Via Technologies, Inc. | System, method, and apparatus for reducing power consumption a microprocessor with multiple decoding capabilities |
Also Published As
Publication number | Publication date |
---|---|
KR20130016246A (ko) | 2013-02-14 |
CN103098020A (zh) | 2013-05-08 |
IL220987A0 (en) | 2012-09-24 |
MY156118A (en) | 2016-01-15 |
TWI489386B (zh) | 2015-06-21 |
CN103098020B (zh) | 2016-04-27 |
US20110225397A1 (en) | 2011-09-15 |
IL220987A (en) | 2016-05-31 |
TW201203110A (en) | 2012-01-16 |
EP2524303B1 (en) | 2019-08-07 |
GB2478726B (en) | 2013-12-25 |
GB201004293D0 (en) | 2010-04-28 |
EP2524303A1 (en) | 2012-11-21 |
GB2478726A (en) | 2011-09-21 |
US9092215B2 (en) | 2015-07-28 |
JP2013522749A (ja) | 2013-06-13 |
JP5646656B2 (ja) | 2014-12-24 |
WO2011114121A1 (en) | 2011-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101812569B1 (ko) | 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑 | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
KR101597774B1 (ko) | 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들 | |
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
US9804851B2 (en) | Operand size control | |
US9575753B2 (en) | SIMD compare instruction using permute logic for distributed register files | |
US10901744B2 (en) | Buffered instruction dispatching to an issue queue | |
JPH03147021A (ja) | 命令指定方法及び命令実行方式 | |
KR20190114745A (ko) | 체인화된 타일 연산들을 구현하기 위한 시스템들 및 방법들 | |
CN101802779A (zh) | 具有可重新组构的浮点单元的处理器 | |
TWI733825B (zh) | 用於執行重新排列操作的設備及方法 | |
KR102161682B1 (ko) | 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법 | |
JP3905552B2 (ja) | 複数の命令セットを有するデータ処理装置内における命令エンコード | |
EP3329361B1 (en) | Vector operand bitsize control | |
JPH03233630A (ja) | 情報処理装置 | |
KR20130112909A (ko) | 권한 레벨에 관계없는 세그먼트 레지스터 판독 및 기입용 시스템, 장치, 및 방법 | |
EP1987422A1 (en) | Instruction sets for microprocessors | |
JPS6217773B2 (ko) | ||
JP2011209859A (ja) | 情報処理装置 | |
JPH07110769A (ja) | Vliw型計算機 | |
EP4052121A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage | |
JP4151497B2 (ja) | パイプライン処理装置 | |
JP2005227848A (ja) | ベクトルプロセッサおよびメモリアクセス方法 | |
JPH07104780B2 (ja) | マイクロプロセッサ | |
JPH04102921A (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 |