KR100971626B1 - 다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의명령어 부호화 - Google Patents

다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의명령어 부호화 Download PDF

Info

Publication number
KR100971626B1
KR100971626B1 KR1020057023835A KR20057023835A KR100971626B1 KR 100971626 B1 KR100971626 B1 KR 100971626B1 KR 1020057023835 A KR1020057023835 A KR 1020057023835A KR 20057023835 A KR20057023835 A KR 20057023835A KR 100971626 B1 KR100971626 B1 KR 100971626B1
Authority
KR
South Korea
Prior art keywords
instruction
instructions
data processing
instruction set
common
Prior art date
Application number
KR1020057023835A
Other languages
English (en)
Other versions
KR20060021370A (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 KR20060021370A publication Critical patent/KR20060021370A/ko
Application granted granted Critical
Publication of KR100971626B1 publication Critical patent/KR100971626B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

2개의 명령어 세트를 지원하는 데이터 처리 장치(2)가 제공된다. 이 2개의 명령어 세트는 모든 코프로세서 명령어와 같은 하나 이상의 명령어 등급을 포함하는 공통 명령어 서브세트를 공유한다. 이 공통 명령어 서브세트는 메모리 내의 기억 순서 때문에 생기는 어떠한 차이, 예컨대 엔디언(endianness)이 보완되면 동일한 명령어 부호화를 갖는다.
Figure R1020057023835
ARM 명령어, Thumb 명령어, 엔디언, 코프로세서, 명령어 세트

Description

다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의 명령어 부호화{INSTRUCTION ENCODING WITHIN A DATA PROCESSING APPARATUS HAVING MULTIPLE INSTRUCTION SETS}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 더욱 구체적으로, 본 발명은 다수의 명령어 세트를 갖는 데이터 처리 시스템과, 이러한 다수의 명령어 세트를 부호화하는 방법에 관한 것이다.
데이터 처리 시스템에 다수의 명령어 세트를 제공하는 것은 알려져 있다. 이러한 데이터 처리 시스템의 일례에는 영국의 캠브리지에 소재하는 ARM사(社)가 생산하고 ARM 명령어 세트와 Thumb 명령어 세트 양쪽 모두를 지원하는 프로세서 코어가 있다. ARM 명령어 세트는 32 비트 명령어 세트이고, Thumb 명령어 세트는 16 비트 명령어 세트이다. 다수의 명령어 세트를 지원하는 데이터 처리 시스템은 프로그램 연산이 표현될 수 있고 향상된 코드 밀도와 같은 이점을 만들어 낼 수 있는 방법으로 유리한 정도의 유연성을 가능하게 하지만, 다수의 명령어 세트를 지원하는데 요구되는 하드웨어 크기가 확대되는 것이 일반적이다.
일 형태의 관점에서, 본 발명은 데이터 처리 장치로서,
데이터 처리 연산을 수행하도록 동작가능한 데이터 처리 로직과,
상기 데이터 처리 로직에 의해 수행될 데이터 처리 연산을 지정하고, 상기 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 프로그램 명령어를 복호화하도록 동작가능한 명령어 복호화기를 포함하고,
상기 명령어 복호화기는 제1 명령어 세트의 프로그램 명령가 복호화되는 제1 모드와 제2 명령어 세트의 프로그램 명령어가 복호화되는 제2 모드에서 동작가능하고,
상기 제1 명령어 세트의 프로그램 명령어의 서브세트는, 기억 순서 차이를 보상한 후에 모든 비트가 동일하도록, 상기 제2 명령어 세트의 프로그램 명령어의 서브세트에 의한 공통 비트 길이 및 공통 기억 순서 보상 부호화를 가지고, 하나 이상의 명령어 등급을 나타내는 공통 명령어 서브세트를 형성하며,
상기 공통 명령어 서브세트는 상기 명령어 복호화기가 상기 제1 모드 또는 상기 제2 모드에서 동작하는지에 관계없이 동일한 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 것인 데이터 처리 장치를 제공한다.
삭제
삭제
삭제
본 발명은, 공통 서브세트가 동일 부호화를 공유하도록 명령 세트의 부호화를 정함으로써(적어도, 기억 순서, 예컨대 엔디언(endianness)에 의한 어떤 변화가 보상된 후에), 이러한 시스템이 구현시에 유리하게 간략화될 수 있고, 그 동작의 다른 측면도 개선된다는 점을 인식하고 있다. 일례로서, 지정된 처리 동작을 구현하는 공통 부호화 로직 및/또는 공통 처리 로직은 다수의 명령 세트를 지원하는데 요구되는 하드웨어 부담을 감소시켜 더욱 쉽게 이용될 수 있다.
본 발명의 바람직한 실시예에서, 공통 명령어 서브세트 내에 포함되는 명령어들의 등급(예컨대, 로드/저장 명령어, 곱셈 명령어 등의 유사한 기능을 갖는 명령어 그룹인 것으로 간주하는 등급)은 동일한 코프로세서 로직이 제1 명령어 세트 와 제2 명령어 세트 양쪽 모두에 의해서 사용될 수 있도록 코프로세서 명령어를 포함한다. 이것은 많은 수의 코프로세서 설계가 존재하면서도 단 1개의 명령어 세트에 대해서 개발되어 왔고, 이 동일한 코프로세서 설계를 추가 명령어 세트와 함께 재사용할 수 있는 능력은 상당한 이점이기 때문에 매우 큰 장점이다. 이것은, 코프로세서의 공통 그룹의 완전한 상호연산능력이 어느 하나의 명령어 세트에 의해서 제공될 수 있도록 모든 코프로세서 명령어가 공통 서브세트 내에 존재하는 경우에 특히 바람직하다.
제1 명령어 세트와 제2 명령어 세트는 많은 수의 상이한 특징을 가질 수 있다는 점이 이해될 것이지만, 제1 명령어 세트는 종래와 같이 32 비트 명령어 또는 16 비트 명령어의 고정 길이 명령어 세트이고, 제2 명령어 세트는 가변 길이 명령어 세트인 것이 바람직하다.
공통 명령어 서브세트는 공통 데이터 처리 연산을 수행하지만, 반드시, 이들 공통 데이터 처리 연산이 동일한 결과의 데이터 값을 항상 생성하는 것은 아니라는 점이 이해될 것이다. 이것은 하드웨어 절감과 전술한 다른 이점을 손상하는 것은 아니지만, 사용되고 있는 명령어 세트에 따라 임의의 데이터 값과 관련된 특유의 성질을 입력 오퍼랜드로서 이용하는 결과가 될 수 있다. 명령어 세트가 특유의 성질을 가지게 할 수 있는 입력 오퍼랜드로서의 역할을 하는 데이터 값의 예에는, 사용되는 명령어 세트에 따라 상이한 값을 갖도록 실행되는 명령어에 대해 상대적으로 유지되는 프로그램 카운터 값, 및/또는 사용되고 있는 명령어 세트를 나타내는 하나 이상의 비트를 유지하고, 그 결과, 사용되고 있는 명령어 세트에 따라 상이한 값을 가질 수 있는 프로그램 상태 레지스터 값이 있다.
다른 형태의 관점에서, 본 발명은 데이터 처리 방법으로서,
데이터 처리 로직을 이용하여 데이터 처리 연산을 수행하는 단계와,
명령어 복호화기를 이용하여, 상기 데이터 처리 로직에 의해 수행될 데이터 처리 연산을 지정하고, 상기 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 프로그램 명령어를 복호화하는 단계를 포함하고,
제1 모드에서는 제1 명령어 세트의 프로그램 명령어가 복호화되며 제2 모드에서는 제2 명령어 세트의 프로그램 명령어가 복호화되고,
상기 제1 명령어 세트의 프로그램 명령어의 서브세트는, 기억 순서 차이를 보상한 후에 모든 비트가 동일하도록, 상기 제2 명령어 세트의 프로그램 명령어의 서브세트에 의한 공통 비트 길이 및 공통 기억 순서 보상 부호화를 가지고, 하나 이상의 명령어 등급을 나타내는 공통 명령어 서브세트를 형성하며,
상기 공통 명령어 서브세트는 상기 명령어 복호화기가 상기 제1 모드 또는 상기 제2 모드에서 동작하는지에 관계없이 동일한 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 것인 데이터 처리 방법을 제공한다.
삭제
삭제
삭제
또 다른 관점에서, 본 발명은 데이터 처리 연산을 수행하는 데이터 처리 로직을 내장한 데이터 처리 장치를 제어하도록 동작가능한 컴퓨터 프로그램을 갖는 컴퓨터 판독가능한 기록매체로서,
상기 데이터 처리 로직을 제어하여 상기 데이터 처리 연산을 수행할 수 있도록 하는 제1 명령어 세트의 프로그램 명령어 및 제2 명령어 세트의 프로그램 명령어를 포함하고,
상기 제1 명령어 세트의 프로그램 명령어의 서브세트는, 기억 순서 차이를 보상한 후에 모든 비트가 동일하도록, 상기 제2 명령어 세트의 프로그램 명령어의 서브세트에 의한 공통 비트 길이 및 공통 기억 순서 보상 부호화를 가지고, 하나 이상의 명령어 등급을 나타내는 공통 명령어 서브세트를 형성하며,
상기 공통 명령어 서브세트는 상기 제1 명령어 세트의 명령어 또는 상기 제2 명령어 세트의 명령어가 복호화되는지와는 상관없이 동일한 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 것인 컴퓨터 판독가능한 기록매체를 제공한다.
삭제
삭제
이제, 단지 예로서, 첨부 도면을 참조하여 본 발명의 실시예를 설명한다.
도 1은 다수의 명령어 세트를 이용하고 관련 코프로세서를 구비하는 데이터 처리 장치를 나타내는 개략도이다.
도 2는 Thumb 명령어 세트에서 BL 명령어와 BLX 명령어의 부호화를 나타내는 도면이다.
도 3은 증보판(增補版) Thumb 명령어 세트에서 16 비트 명령어의 부호화와 32 비트 명령어의 부호화가 서로 간에 어떻게 구별되는 지를 나타내는 도면이다.
도 4는 ARM 명령어 세트에서의 코프로세서 명령어의 부호화를 나타내는 도면이다.
도 5는 증보판 Thumb 명령어 세트에서 무조건 코프로세서 명령어의 부호화를 나타내는 도면이다.
도 6은 ARM 명령어 세트와 증보판 Thumb 명령어 세트에서 무조건 CDP 코프로 세서 명령어의 기억 순서의 차이를 나타내는 도면이다.
도 7은 ARM 및 Thumb 명령어 세트를 위한 명령어 부호화기가 설계될 수 있는 제1 방법을 나타내는 도면이다.
도 8은 ARM 및 Thumb 명령어 세트를 위한 명령어 부호화기가 설계될 수 있는 제2 방법을 나타내는 도면이다.
도 9는 도 8의 명령어 복호화기를 변형시켜서 ARM 명령어 세트와 Thumb 명령어 세트를 복호화하는 방법을 나타내는 도면이다.
도 10은 전술한 기술에 따라 프로그램 명령어를 구성할 수 있는 범용 컴퓨터의 아키텍처를 나타내는 개략도이다.
도 1은 데이터 처리 장치(2)를 보여주는 도면이다. 데이터 처리 장치(2)는 레지스터 뱅크(4), 승산기(6), 시프터(8), 가산기(10), 명령어 복호화기(12)[공통 서브세트 명령어 복호화기(13)를 포함함], 명령어 프리페치(prefetch) 버퍼(14), 명령어 프리페치 유닛(16) 및 프로그램 상태 레지스터(18)를 내장하는 프로세서 코어(3)를 포함한다. 레지스터 뱅크(4) 내의 레지스터들 중 하나의 레지스터는 카운터 레지스터(20)로서, 현재 실행 중인 프로그램 명령어의 어드레스 값과 미리 정해진 관계를 갖는 어드레스 값을 기억하고 있다. 이 관계는 현재 시점에서 사용되고 있는 명령어 세트, 예컨대 현재 명령어 어드레스 + 4, 현재 명령어 어드레스 + 8 등에 따라서 변화할 수 있다. 도 1에는 코프로세서를 1개만 도시하고 있지만, 코프로세서는 복수 개가 첨부될 수 있으며, 이 경우, 상이한 코프로세서에 의해서 실행 되는 명령어는 각 코프로세서 명령어에서의 코프로세서 번호 필드에 의해서 구별된다는 점이 이해될 것이다.
코프로세서(22)는 프로세서 코어(3)와 연결되고, 프로세서 코어(3)와 명령어 워드 및 데이터 워드를 공유한다. 코프로세서(22)는 명령어 프리페치 유닛(16)에 의해서 페치되는 명령어 스트림 내의 코프로세서 명령어에 응답한다.
코프로세서 명령어는 코프로세서(22)와 연계하는 프로세서 코어(3)에 의해서 실행된다. 예시한 장치에 있어서, 코프로세서(22)는 내부 레지스터 뱅크 및 내부 데이터 처리 로직을 구비한다. 코프로세서 명령어는 공통 서브세트 명령어 복호화기(12)에 의해서 식별되고, 코프로세서 명령어가 실행될 때를 결정하는 제어 신호와 함께 코프로세서에 전달된다.
코프로세서의 일부 명령어는 그들의 모든 오퍼랜드를 코프로세서의 내부 레지스터 뱅크로부터 판독하고 그들의 모든 결과를 코프로세서의 내부 레지스터 뱅크에 기록하므로, 더 이상 프로세서 코어(3)와의 상호작용을 필요로 하지 않는다. 코프로세서의 다른 명령어는 코프로세서(22)에 전달되는 데이터 값을 필요로 하지 않는다. 이들 데이터 값에 대한 가능한 소스는 레지스터 뱅크(4), 프로그램 상태 레지스터(18) 및 메모리(도시하지 않음)를 포함한다. 예시한 장치에 있어서, 프로세서 코어(3)는 소망하는 위치로부터 이러한 데이터 값을 획득하고, 이들을 데이터 인터페이스(D)를 거쳐 코프로세서(22)에 전송한다. 코프로세서의 또 다른 명령어는 코프로세서(22)에 의해서 생성된 데이터 값을 코프로세서(22)의 외부에 있는 목적지, 예컨대 레지스터 뱅크(4), 프로그램 상태 레지스터(18) 및 메모리에 전송한다. 예시한 장치에 있어서, 이러한 데이터 값은 데이터 인터페이스(D)를 거쳐 프로세서 코어(3)에 전송되고, 프로세서 코어(3)는 이들을 소망하는 목적지에 기록한다.
이러한 종류의 코프로세서 연산에 관한 많은 변형이 가능하고, 이 기술 범위 내에 포함된다는 것이 이해될 것이다. 제1 예는, 코프로세서(22)에서 내부 레지스터 뱅크를 생략하는 것이고, 이에 따라서 내부 데이터 처리 로직은 데이터 인터페이스(D)를 거쳐 프로세서 코어(3)로부터 전송된 데이터 값에 항상 반응하여, 그의 결과 값은 다시 데이터 인터페이스(D)를 거쳐 프로세서 코어(3)에 전송한다. 제2 예는 코프로세서(22)가 메모리에 연결되는 별도의 인터페이스를 구비하는 것이고, 이에 따라서 코프로세서(22)는 메모리로부터의 데이터 값을 로드시키고 이들을 프로세서 코어(3)를 연계시키는 일 없이 메모리에 저장할 수 있다. 이 경우, 데이터 인터페이스(D)는 프로세서 코어(3)의 내부에 있는 위치, 예컨대 레지스터 뱅크(4) 및 프로그램 상태 레지스터(18)와 송수신하는 데이터 값에 대해서만 사용될 뿐이다. 이와 달리, 데이터 인터페이스(D)는 완전히 생략될 수 있고, 이에 따라서 데이터 값은, 우선 이 데이터 값을 프로세서 코어(3)와 코프로세서(22) 중 하나로부터 메모리에 저장한 후 이 데이터 값을 메모리에서 다른 하나로 로드함으로써 프로세서 코어(3)와 코프로세서(22) 간에만 전송될 수 있을 뿐이다.
연산 시에 프로그램 명령어는 메모리(예시하지 않음) 내부의 메모리 어드레스로부터 페치되어 명령어 프리페치 버퍼(14)에 전달되는 것이 이해될 것이다. 프로그램 명령어가 명령어 프리페치 버퍼(14) 내부의 복호화 스테이지에 도달하면, 명령어 복호화기(12)는 이 명령어를 복호화하고, 프로세서 코어(3), 필요시에는 코프로세서(22)의 내부에 있는 처리 로직에 제공되는 제어 신호를 생성하여, 이들 다른 엘리먼트를 제어함으로써, 지정된 데이터 처리 연산을 실행한다. 프로세서 코어(3)는 제1 명령어가 복호화되는 제1 모드와 제2 명령어가 복호화되는 제2 모드에서 연산 가능하다. 프로세서 코어(3)의 모드를 나타내는 한가지 방법은 프로그램 상태 레지스터(18)들 중 하나의 프로그램 상태 레지스터 내부에 있는 플래그 값을 사용하는 것이다. 현재 활성 상태에 있는 명령어 세트에 따라서, 명령어 복호화기(12)는 현재 활성 중인 명령어 세트 및 그의 부호화(encoding)에 따라서 수신되는 명령어를 해석할 것이다. 이 기술에 따라서, 지원되는 2개의 명령어 세트는 모든 무조건 코프로세서 명령어와 같은 하나 이상의 명령어 등급을 포함하는 공통 명령어 서브세트에 대한 공통 부호화를 공유하고, 이것에 의해서 동일한 물리적 하드웨어를 준비된 재사용을 통해서 상기 공통 처리 연산을 구현하는 것이 가능하다. 상이한 명령어 세트로부터의 프로그램 명령어의 기억 순서는, 예컨대 엔디언 차(endianness difference), 명령어 워드 크기 차 등으로 인해 변화할 수 있지만, 공통 명령어 서브세트는 일단 기억 순서가 후술하는 바와 같이 보완되면 부호화를 공유한다는 것이 이해될 것이다.
이 실시예에 있어서, 프로세서 코어(3)는 2개의 명령어 세트, ARM 명령어 세트 및 증보판(增補版) Thumb 명령어 세트를 지원한다(현재의 ARM 및 Thumb 명령어 세트의 세부에 대해서는 ARM Architecture Reference Manual을 참조). Thumb 명령어 세트에 대한 증보는 많은 수의 32 비트 명령어를 추가할 수 있게 하는 BL 명령어 및 BLX 명령어에 대한 변경을 포함한다.
Thumb 명령어 세트에 대한 증보 전에, 그의 BL 명령어 및 BLX 명령어는 도 2에 도시한 형태의 명령어 스트림에서 2개의 연속 1/2 워드로 이루어진다. 유효한 프로그램에 있어서, 최상위 5 비트가 11101, 11110 또는 11111인 명령어 1/2 워드는 이들 2가지 형태의 쌍들로만 표현된다. BL 명령어 및 BLX 명령어 이외의 다른 모든 명령어는 최상위 5 비트가 00000에서 11100까지의 범위에 있는 단일 1/2 워드로 이루어진다.
일 구성례에서는 BL 명령어 또는 BLX 명령어의 2개의 1/2 워드를 연속해서 실행할 수 있고, 이와 같이 실행하는 결합 효과에 의해서 BL 명령어 또는 BLX 명령어의 소망하는 효과가 생성되어, Thumb 서브루틴(BL용) 또는 ARM 서브루틴(BLX용)이라고 부르는 서브루틴을 수행할 수 있게 된다. 더욱 구체적으로, 명령어가 BLX인 경우에는 ARM 명령어 세트를 통해서 전환하는 목표 어드레스로 분기하고, 레지스터(14)에 있는 두 번째 1/2 워드 다음에 있고 ARM/Thumb 명령어 세트 아키텍처의 서브루틴 링크 레지스터인 명령어에 포인터를 위치시키는 것이다. 상기 서브루틴은 이 포인터로 분기함으로써 리턴할 수 있다.
이와 달리, 일 구성례에서는 32 비트 명령어로서 2개의 1/2 워드를 일체로 복호화하여, BL 명령어 또는 BLX 명령어의 소망하는 효과를 직접 성취할 수 있다. 증보판이 아닌 Thumb 명령어 세트에 있어서, 이것은 BL 명령어 또는 BLX 명령어를 더욱 효율적으로 실행될 수 있게 하는 최적의 방법이기는 하지만, 근본적인 것은 아니다.
그 대신, 증보판 Thumb 명령어 세트는 (설명된다는 조건 하에서) 명령어 스 트림으로부터 연속하는 2개의 1/2 워드가 서로 순서대로 실행되는 2개의 16의 1/2 워드가 아닌 32 비트 명령어로서 취급되는 것을 필요로 한다. 구체적으로, 도 3에 도시된 바와 같이, 실행될 다음 1/2 워드의 상위 5 비트가 00000부터 11100까지의 값 중 어느 값을 취하는 경우, 이것은 16 비트 명령어로서 취급된다. 상기 실행될 다음 1/2 워드의 상위 5 비트가 11101, 11110 및 11111의 값 중 하나를 취하는 경우, 이것과 후속 1/2 워드는 일체로 32 비트 명령어로서 취급된다. 따라서, 현재의 모든 BL 명령어 및 BLX 명령어는 32 비트 명령어로서 취급될 필요가 있다.
증보판이 아닌 Thumb 명령어 세트의 모든 명령어는 32 비트 명령어인 증보판 BL 및 BLX에서 여전히 이용 가능하고, 다른 모든 명령어는 16 비트 명령어로서 이용 가능하다. 도 2와 도 3을 비교하면, 이용 가능한 32 비트 명령어 중 적은 부분만이 BL 명령어 및 BLX 명령어인 것이 명백하다. 다른 32 비트 명령어는 증보판이 아닌 버전에서 제공하지 않는 추가 기능을 제공하도록 증보판 버전에서 사용될 수 있다. 특히, ARM 명령어 세트는 증보되지 않은 Thumb 명령어 세트에서 이용할 수 없는 많은 명령어 그룹을 내포하고 있고, BL 및 BLX 이외의 32 비트 명령어는 증보판 Thumb 명령어 세트에 있는 전술한 명령어와 등가인 Thumb 명령어를 제공하도록 사용될 수 있다.
코프로세서 명령어는 이러한 명령어 그룹의 일례이다. 코프로세서 명령어는 ARM 명령어 세트에서 제공되고 있지만, 증보되지 않은 Thumb 명령어 세트에 있는 등가 명령어를 갖지 않는다. ARM 명령어는 32 비트 워드이다. 즉, 이러한 명령어의 비트[27:24]가 1100, 1101 및 1110의 값 중 하나의 값을 취하는 경우, 이 명령어는 코프로세서 명령어이다. 도 4는 이러한 명령어의 다수 그룹을 보여주는 것이다. 이 명령어 그룹은 다음을 포함한다.
LDC 명령어: 데이터 값을 메모리에서 코프로세서로 전송한다.
STC 명령어: 데이터 값을 코프로세서에서 메모리로 전송한다.
MCR 명령어: 데이터 값을 프로세서 코어 레지스터에서 코프로세서로 전송한다.
MCRR 명령어: 2개의 데이터 값을 프로세서 코어 레지스터에서 코프로세서로 전송한다.
MRC 명령어: 데이터 값을 코프로세서에서 프로세서 코어 레지스터로 전송한다.
MRRC 명령어: 2개의 데이터 값을 코프로세서에서 프로세서 코어 레지스터로 전송한다.
CDP 명령어: 코프로세서에 대해서 입출력 전송되는 데이터 값을 필요로 하지 않는 코프로세서 내부 연산을 수행한다.
정의되지 않은 명령어: 프로세서 코어(3)에서 정의되지 않은 명령어인 예외를 발생한다.
코프로세서의 이들 명령어 모두는 명령어가 목적하는 코프로세서를 식별하는 cpnum 필드와 cond 필드를 내포하고 있다. cond의 값은 무조건 코프로세서 명령어에 대해서 1110 또는 1111이고, 0000부터 1101까지의 범위에 있는 값은 cond=1110을 갖는 등가 명령어의 조건 형태를 생성한다. (cond=1111을 갖는 무조건 명령어는 조건 형태를 갖지 않는다).
코프로세서의 이들 명령어 모두는 전술한 기술을 이용하여 데이터 처리 장치(2) 상에서 실행될 수 있다.
무조건 ARM 코프로세서 명령어의 등가 명령어는 도 5에 도시된 바와 같이 증보판 Thumb 명령어 세트로 부호화된다. 이것을 도 4와 비교하고, 무조건 ARM 명령어에 대한 cond=1110 또는 1111인 점을 주목하면, 각 무조건 Thumb 코프로세서 명령어의 부호화는, 기억 순서에 대한 고려는 별문제로 하고, 등가의 ARM 코프로세서 명령어의 부호화와 같다. 또한, 이들 무조건 Thumb 코프로세서 명령어 모두는 HW1[15:11]=11101 또는 11111인 부호화를 가지며, 따라서, 도 3에 예시한 규칙에 따른 32 비트 명령어이다.
기억 순서의 문제는 ARM 명령어 워드 및 Thumb 명령어 1/2 워드가 리틀 엔디안(little-endian) 순서, 즉 가장 낮은 메모리 어드레스에 최하위 바이트가 위치하는 순서로 저장되는 것이 보통이라는 사실 때문에 발생한다. 일례로서, 메모리 어드레스가 A인 ARM 무조건 CDP 명령어는 도 6의 왼쪽에 나타낸 바와 같은 어드레스 A, A+1, A+2 및 A+3의 4개 바이트에 유지될 것이다. 증보판 Thumb 명령어 세트의 등가 명령어는 어드레스 A에 첫 번째 1/2 워드 HW1이 유지되고 어드레스 A+2에 두 번째 1/2 워드 HW2가 유지될 것이므로, 명령어는 도 6의 오른쪽에 나타낸 바와 같은 4개 바이트에 유지되는 결과가 될 것이다. 왼쪽과 오른쪽을 비교하면, Thumb 명령어는 ARM 명령어와 바이트 수가 같지만, 기억 순서는 다르다. 즉, 어드레스 A의 바이트와 어드레스 A+2의 바이트가 서로 바뀌어 있고, 어드레스 A+1의 바이트와 어 드레스 A+3의 바이트도 마찬가지이다. 기억 순서에서와 동일한 차이가 정확한 명령어 타입과 무관하게 모든 무조건 코프로세서 명령어에 대해서 존재한다는 것이 이해될 것이다.
증보판 Thumb 명령어 세트는 16 비트 명령어와 32 비트 명령어 모두를 내포하고 있는 가변 길이의 명령어 세트이다. 이러한 명령어 세트를 복호화함에 있어서의 첫 번째 단계는 명령어 프리페치 버퍼(14)의 개별 명령어를 식별하는 것이다. 이 실시예에서, 명령어 프리페치 버퍼(14)의 각 엔트리는 명령어 프리페치 유닛(16)이 이전에 메모리로부터 페치한 워드 정렬형 워드(word-aligned word)이다. 버퍼의 선두에 있는 엔트리를 WORD1이라고 표시하고 다음 엔트리를 WORD2라고 표시하면, 명령어 복호화기(12)에 전달되는 명령어는 아래의 규칙에 따라서 결정된다.
현재
명령어
세트
명령어
어드레스
mod 4
WORD1[15:11] WORD[31:26] 복호화기에 전송된 명령어
bits[31:16]


bits[15:0]
ARM 항상 0 any any WORD1[31:16] WORD1[15:0]
Thumb 0 00000-11100 any 0 WORD1[15:0]
Thumb 0 11101-11111 any WORD1[15:0] WORD1[31:16]
Thumb 2 any 00000-11100 0 WORD1[31:16]
Thumb 2 any 11101-11111 WORD1[31:16] WORD1[15:0]
이 규칙은 보완한 기억 순서를 갖는 정확한 명령어를 명령어 복호화기(12)에 전송한다. 이것은 항상 32 비트로서 전송되는데, 최상위 14 비트는 16 비트 Thumb 명령어에 대해서 제로이다. Thumb 명령어 세트의 경우, 명령어가 16 비트 명령어인지 32 비트 명령어 인지를 명령어 복호화기(12)에 전달하기 위한 비트 분리는 필요치 않다는 점이 이해될 것이다. 즉, 명령어 복호화기(12)에 전송되는 32 비트의 최상위 비트는 16 비트 명령어와 32 비트 명령어의 경우에 항상 0이다.
프로세서 코어의 구성례는 그 구성례가 명령어를 어떻게 프리페치하는지와 그 구성례가 한 번에 얼마나 많은 수의 명령어를 복호화하는지에 따라서 큰 폭으로 변형되고, 따라서 개별 명령어를 식별하는 이 방법은 프로세서 코어의 구성례의 상기 형태 또는 다른 형태에 따라서 변형될 필요가 있다는 점이 이해될 것이다.
ARM 명령어 세트와 Thumb 명령어 세트 양쪽 모두를 처리할 수 있도록 명령어 복호화기(12)를 구성하는 현재의 공통된 방법은 2 가지가 있다. 명령어 복호화기(12)를 구성하는 현재의 제1 공통 방법은 도 7에 예시된 것으로서, Thumb/ARM 변환기는 각 Thumb 명령어를 대응 ARM 명령어로 변환하는 로직을 내장하고 있다. 다중화기는 ARM 코드가 실행 중인 경우에 원래 명령어를 선택하고, Thumb 명령어가 실행 중인 경우에 변환 명령어를 선택한다. 이어서, 다중화기의 출력은 ARM 복호화기에 의해서 복호화된다.
이 형태의 명령어 복호화기(12)는, 원래 명령어의 bits[27:24]가 1100, 1101 또는 1110(이들 비트는 16 비트 Thumb 명령어의 경우에 항상 0000이고, 코프로세서 32 비트 Thumb 명령어가 아닌 경우에 1100, 1101 또는 1110 이외의 어떤 값이다)인 경우에, 원래 명령어를 변경 없이 다중화기에 전달하게 함으로써, 증보판 Thumb 명령어 세트에 포함된 무조건 코프로세서 명령어를 복호화하도록 변형될 수 있다. 증보판 Thumb 명령어 세트는 BL 명령어, BLX 명령어 및 무조건 코프로세서 명령어 외에도 추가의 32 비트 명령어를 가질 수 있다는 점이 이해될 것이다. 그러한 경우에는, 상기한 명령어들을 처리하는 Thumb/ARM 변환기에 대해서 추가의 변형이 이루어질 수 있다.
명령어 복호화기(12)를 구성하는 현재의 제1 공통 방법은 도 8에 예시된 바 와 같이 ARM 명령어 세트용 복호화기와 Thumb 명령어 세트용 복호화기를 분리하여 사용하는 것이다. 이어서, 다중화기를 사용하여, ARM 코드가 실행 중인 경우에 ARM 복호화기의 출력을 선택하고, Thumb 코드가 실행 중인 경우에 Thumb 복호화기의 출력을 선택한다.
이러한 형태의 명령어 복호화기(12)는 도 9에 예시된 바와 같이 ARM 복호화기를, 코프로세서 명령어를 복호화하는 부분과 넌(non)-코프로세서의 ARM 명령어를복호화하는 부분으로 분할함으로써 무조건 코프로세서 명령어를 복호화하도록 변형될 수 있다. 증보판 Thumb 명령어 세트가 BL 명령어, BLX 명령어 및 무조건 코프로세서 명령어 외에도 추가의 32 비트 명령어를 포함하는 경우, 넌-코프로세서 Thumb 복호화기는 상기 명령어들을 처리하도록 변형된다. 이어서, 최종의 다중화기는 명령어의 bits[27:24]가 1100, 1101 또는 1110인 경우에 코프로세서 복호화기의 출력을 선택하고, 그 외에는, 최종의 다중화기는 ARM 코드가 실행 중인 경우에 넌-코프로세서 ARM 복호화기의 출력을 선택하고, Thumb 코드가 실행 중인 경우에 넌-코프로세서 Thumb 복호화기의 출력을 선택한다.
명령어 복호화기(12)의 제1 형태에 있어서, 공통 서브세트 명령어 복호화기(13)는 코프로세서 명령어를 복호화하는 ARM 복호화기의 부분이다. 명령어 복호화기(12)의 제2 형태에 있어서, 그것은 코프로세서 복호화기이다.
ARM 명령어 세트 및 증보판 Thumb 명령어 세트의 무조건 코프로세서 명령어에 대한 공통 기억 순서 보완 부호화를 사용하는 것은 요구되는 로직의 크기와 소비되는 전력량을 감소시킨다는 점에서 명령어 세트마다 상이한 부호화를 사용하는 것에 비해 명령어 복호화기(12)의 양쪽 모두의 형태에 대해서 상당한 이점을 갖는다. 추가의 이점은 Thumb 명령어 세트에 대한 증보 이전에 있을 수 있던 것과 동일한 명령어를 실행할 수 있기만 하면 된다는 점이다. 이것은, 코프로세서가 필요로 하는 로직과 소비 전력의 증가를 막을 뿐만 아니라, 현재의 코프로세서가 증보판 Thumb 명령어 세트로부터 이용가능하도록 변형되지 않아도 된다는 것을 의미하기도 한다.
전술한 기술은 설계상의 내부, 예컨대 도 7의 Thumb/ARM 변환기 내부의 다른 위치에서 기억 순서 보완을 수행하도록 변형될 수 있다는 점과, 다른 어떤 로직 설계와 같이, 전술한 기술이 논리적으로 동등한 많은 설계로 치환될 수 있다는 점이 이해될 것이다. 본 발명의 기술은 이러한 모든 변형과 치환을 포괄한다.
도 10은 전술한 기술에 따라 프로그램 명령어를 구성할 수 있는 범용 컴퓨터(200)를 나타내는 개략도이다. 범용 컴퓨터(200)는 중앙 처리 장치(CPU)(202), 랜덤 액세스 메모리(RAM)(204), 판독 전용 메모리(ROM)(206), 네트워크 인터페이스 카드(NIC)(208), 하드 디스크 드라이브(HDD)(210), 디스플레이 드라이버(212) 및 모니터(214), 및 키보드(218)와 마우스(220) 모두가 공통 버스(222)를 거쳐 접속되어 있는 사용자 입출력 회로(216)를 포함한다. 연산 시에, 중앙 처리 장치(202)는 랜덤 액세스 메모리(204), 판독 전용 메모리(206) 및 하드 디스크 드라이브(210) 중 하나 이상에 저장될 수 있고, 또는 네트워크 인터페이스 카드(208)를 거쳐 동적으로 다운로드될 수 있는 컴퓨터 프로그램 명령어를 실행한다. 수행된 처리 결과는 디스플레이 드라이버(212) 및 모니터(214)를 거쳐 사용자에게 표시될 수 있다. 범 용 컴퓨터(200)의 연산을 제어하는 사용자 입력은 키보드(218) 또는 마우스(220)로부터 사용자 입출력 회로(216)를 거쳐 수신될 수 있다. 컴퓨터 프로그램은 다양하고 상이한 컴퓨터 언어로 작성될 수 있다는 점이 이해될 것이다. 컴퓨터 프로그램은 기록 매체에 저장 및 분산되어도 좋고, 또는 범용 컴퓨터(200)에 동적으로 다운로드되어도 좋다. 적절한 컴퓨터 프로그램의 제어 하에서 연산할 때, 범용 컴퓨터(200)는 전술한 기술을 수행할 수 있고, 전술한 기술을 수행하는 장치를 구성하도록 고려될 수 있다. 범용 컴퓨터(200)의 아키텍처는 큰 폭으로 변형될 수 있고, 도 10은 단지 일례에 불과하다.

Claims (33)

  1. 데이터 처리 장치로서,
    데이터 처리 연산을 수행하도록 동작가능한 데이터 처리 로직과,
    상기 데이터 처리 로직에 의해 수행될 데이터 처리 연산을 지정하고, 상기 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 프로그램 명령어를 복호화하도록 동작가능한 명령어 복호화기를 포함하고,
    상기 명령어 복호화기는 제1 명령어 세트의 프로그램 명령가 복호화되는 제1 모드와 제2 명령어 세트의 프로그램 명령어가 복호화되는 제2 모드에서 동작가능하고,
    상기 제1 명령어 세트의 프로그램 명령어의 서브세트는, 기억 순서 차이를 보상한 후에 모든 비트가 동일하도록, 상기 제2 명령어 세트의 프로그램 명령어의 서브세트에 의한 공통 비트 길이 및 공통 기억 순서 보상 부호화를 가지고, 하나 이상의 명령어 등급을 나타내는 공통 명령어 서브세트를 형성하며,
    상기 공통 명령어 서브세트는 상기 명령어 복호화기가 상기 제1 모드 또는 상기 제2 모드에서 동작하는지에 관계없이 동일한 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 명령어 복호화기는 상기 데이터 처리 로직의 공통 부분을 이용하여 상기 공통 명령어 서브세트의 명령어들을 실행하도록 동작가능한 것을 특징으로 하는 데이터 처리 장치.
  3. 제1항에 있어서,
    상기 공통 명령어 서브세트는 상기 제1 명령어 세트 및 상기 제2 명령어 세트에 공통인 코프로세서 로직을 이용하여 코프로세서 데이터 처리 연산을 제어하도록 연산할 수 있는 코프로세서 명령어인 명령어 등급을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  4. 제3항에 있어서,
    모든 무조건 코프로세서 명령어는 상기 공통 명령어 서브세트 내에 있는 것을 특징으로 하는 데이터 처리 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 명령어 세트는 N 비트 명령어의 고정 길이 명령어 세트인 것을 특징으로 하는 데이터 처리 장치.
  6. 제5항에 있어서,
    상기 N은 32와 16 중 하나인 것을 특징으로 하는 데이터 처리 장치.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제2 명령어 세트는 가변 길이 명령어 세트인 것을 특징으로 하는 데이터 처리 장치.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 공통 명령어 서브세트 내의 하나 이상의 프로그램 명령어는 상기 제1 모드와 상기 제2 모드 중 어느 하나에서 공통 데이터 처리 연산을 수행하지만, 상기 명령어 복호화기가 상기 제1 모드에서 연산하는지 상기 제2 모드에서 연산하는지에 따라서 상이한 결과의 데이터 값을 발생하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제8항에 있어서,
    상이한 결과의 데이터 값을 발생하는 상기 하나 이상의 프로그램 명령어는 입력 오퍼랜드로서 프로그램 카운터 값을 포함하는 것을 특징으로 하는 데이터 처 리 장치.
  10. 제9항에 있어서,
    상기 프로그램 카운터 값과, 상기 명령어 복호화기가 상기 제1 모드에서 연산하는지 상기 제2 모드에서 연산하는지에 따라서 실행되는 명령어의 어드레스 간에는 상이한 관계가 유지되는 것을 특징으로 하는 데이터 처리 장치.
  11. 제8항에 있어서,
    상이한 결과의 데이터 값을 발생하는 상기 하나 이상의 프로그램 명령어는 입력 오퍼랜드로서 프로그램 상태 레지스터 값을 포함하는 것을 특징으로 하는 데이터 처리 장치.
  12. 데이터 처리 방법으로서,
    데이터 처리 로직을 이용하여 데이터 처리 연산을 수행하는 단계와,
    명령어 복호화기를 이용하여, 상기 데이터 처리 로직에 의해 수행될 데이터 처리 연산을 지정하고, 상기 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 프로그램 명령어를 복호화하는 단계를 포함하고,
    제1 모드에서는 제1 명령어 세트의 프로그램 명령어가 복호화되며 제2 모드에서는 제2 명령어 세트의 프로그램 명령어가 복호화되고,
    상기 제1 명령어 세트의 프로그램 명령어의 서브세트는, 기억 순서 차이를 보상한 후에 모든 비트가 동일하도록, 상기 제2 명령어 세트의 프로그램 명령어의 서브세트에 의한 공통 비트 길이 및 공통 기억 순서 보상 부호화를 가지고, 하나 이상의 명령어 등급을 나타내는 공통 명령어 서브세트를 형성하며,
    상기 공통 명령어 서브세트는 상기 명령어 복호화기가 상기 제1 모드 또는 상기 제2 모드에서 동작하는지에 관계없이 동일한 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 것을 특징으로 하는 데이터 처리 방법.
  13. 제12항에 있어서,
    상기 데이터 처리 로직의 공통 부분은 상기 공통 명령어 서브세트의 명령어들을 실행하는데 이용되는 것을 특징으로 하는 데이터 처리 방법.
  14. 제12항에 있어서,
    상기 공통 명령어 서브세트는 상기 제1 명령어 세트 및 상기 제2 명령어 세트에 공통인 코프로세서 로직을 이용하여 코프로세서 데이터 처리 연산을 제어하도록 연산할 수 있는 코프로세서 명령어인 명령어 등급을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  15. 제14항에 있어서,
    모든 무조건 코프로세서 명령어는 상기 공통 명령어 서브세트 내에 있는 것을 특징으로 하는 데이터 처리 방법.
  16. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 제1 명령어 세트는 N 비트 명령어의 고정 길이 명령어 세트인 것을 특징으로 하는 데이터 처리 방법.
  17. 제16항에 있어서,
    상기 N은 32와 16 중 하나인 것을 특징으로 하는 데이터 처리 방법.
  18. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 제2 명령어 세트는 가변 길이 명령어 세트인 것을 특징으로 하는 데이터 처리 방법.
  19. 제12항 내지 제15항 중 어느 한 항에 있어서,
    상기 공통 명령어 서브세트 내의 하나 이상의 프로그램 명령어는 상기 제1 모드와 상기 제2 모드 중 어느 하나에서 공통 데이터 처리 연산을 수행하지만, 상기 명령어 복호화기가 상기 제1 모드에서 연산하는지 상기 제2 모드에서 연산하는지에 따라서 상이한 결과의 데이터 값을 발생하는 것을 특징으로 하는 데이터 처리 방법.
  20. 제19항에 있어서,
    상이한 결과의 데이터 값을 발생하는 상기 하나 이상의 프로그램 명령어는 입력 오퍼랜드로서 프로그램 카운터 값을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  21. 제20항에 있어서,
    상기 프로그램 카운터 값과, 상기 명령어 복호화기가 상기 제1 모드에서 연산하는지 상기 제2 모드에서 연산하는지에 따라서 실행되는 명령어의 어드레스 간에는 상이한 관계가 유지되는 것을 특징으로 하는 데이터 처리 방법.
  22. 제19항에 있어서,
    상이한 결과의 데이터 값을 발생하는 상기 하나 이상의 프로그램 명령어는 입력 오퍼랜드로서 프로그램 상태 레지스터 값을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  23. 데이터 처리 연산을 수행하는 데이터 처리 로직을 내장한 데이터 처리 장치를 제어하도록 동작가능한 컴퓨터 프로그램을 갖는 컴퓨터 판독가능한 기록매체로서,
    상기 데이터 처리 로직을 제어하여 상기 데이터 처리 연산을 수행할 수 있도록 하는 제1 명령어 세트의 프로그램 명령어 및 제2 명령어 세트의 프로그램 명령어를 포함하고,
    상기 제1 명령어 세트의 프로그램 명령어의 서브세트는, 기억 순서 차이를 보상한 후에 모든 비트가 동일하도록, 상기 제2 명령어 세트의 프로그램 명령어의 서브세트에 의한 공통 비트 길이 및 공통 기억 순서 보상 부호화를 가지고, 하나 이상의 명령어 등급을 나타내는 공통 명령어 서브세트를 형성하며,
    상기 공통 명령어 서브세트는 상기 제1 명령어 세트의 명령어 또는 상기 제2 명령어 세트의 명령어가 복호화되는지와는 상관없이 동일한 데이터 처리 연산을 수행하도록 상기 데이터 처리 로직을 제어하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  24. 제23항에 있어서,
    상기 데이터 처리 로직의 공통 부분은 상기 공통 명령어 서브세트의 명령어들을 실행하도록 이용되는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  25. 제23항에 있어서,
    상기 공통 명령어 서브세트는 상기 제1 명령어 세트 및 상기 제2 명령어 세트에 공통인 코프로세서 로직을 이용하여 코프로세서 데이터 처리 연산을 제어하도록 연산할 수 있는 코프로세서 명령어인 명령어 등급을 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  26. 제25항에 있어서,
    모든 무조건 코프로세서 명령어는 상기 공통 명령어 서브세트 내에 있는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  27. 제23항 내지 제26항 중 어느 한 항에 있어서,
    상기 제1 명령어 세트는 N 비트 명령어의 고정 길이 명령어 세트인 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  28. 제27항에 있어서,
    상기 N은 32와 16 중 하나인 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  29. 제23항 내지 제26항 중 어느 한 항에 있어서,
    상기 제2 명령어 세트는 가변 길이 명령어 세트인 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  30. 제23항 내지 제26항 중 어느 한 항에 있어서,
    상기 공통 명령어 서브세트 내의 하나 이상의 프로그램 명령어는 상기 제1 명령어 세트와 상기 제2 명령어 세트 중 어느 하나의 명령어가 복호화되고 있을 때 공통 데이터 처리 연산을 수행하지만, 상기 명령어 복호화기가 상기 제1 모드에서 연산하는지 상기 제2 모드에서 연산하는지에 따라서 상이한 결과의 데이터 값을 발생하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  31. 제30항에 있어서,
    상이한 결과의 데이터 값을 발생하는 상기 하나 이상의 프로그램 명령어는 입력 오퍼랜드로서 프로그램 카운터 값을 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  32. 제31항에 있어서,
    상기 프로그램 카운터 값과, 상기 명령어 복호화기가 상기 제1 모드에서 연산하는지 상기 제2 모드에서 연산하는지에 따라서 실행되는 명령어의 어드레스 간에는 상이한 관계가 유지되는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  33. 제30항에 있어서,
    상이한 결과의 데이터 값을 발생하는 상기 하나 이상의 프로그램 명령어는 입력 오퍼랜드로서 프로그램 상태 레지스터 값을 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
KR1020057023835A 2003-06-13 2004-01-20 다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의명령어 부호화 KR100971626B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0313770.0 2003-06-13
GB0313770A GB2402764B (en) 2003-06-13 2003-06-13 Instruction encoding within a data processing apparatus having multiple instruction sets

Publications (2)

Publication Number Publication Date
KR20060021370A KR20060021370A (ko) 2006-03-07
KR100971626B1 true KR100971626B1 (ko) 2010-07-22

Family

ID=27636510

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057023835A KR100971626B1 (ko) 2003-06-13 2004-01-20 다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의명령어 부호화

Country Status (11)

Country Link
US (1) US7788472B2 (ko)
EP (1) EP1680735B1 (ko)
JP (1) JP3905552B2 (ko)
KR (1) KR100971626B1 (ko)
CN (1) CN100380315C (ko)
DE (1) DE602004028951D1 (ko)
GB (1) GB2402764B (ko)
MY (1) MY131744A (ko)
RU (1) RU2006101165A (ko)
TW (1) TWI314702B (ko)
WO (1) WO2004111836A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793078B2 (en) 2005-04-01 2010-09-07 Arm Limited Multiple instruction set data processing system with conditional branch instructions of a first instruction set and a second instruction set sharing a same instruction encoding
US7958335B2 (en) * 2005-08-05 2011-06-07 Arm Limited Multiple instruction set decoding
US8914618B2 (en) 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
GB2435116B (en) * 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
KR100922862B1 (ko) * 2007-11-14 2009-10-20 성균관대학교산학협력단 명령어의 부호화를 통한 시스템 보안방법
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US8819399B1 (en) * 2009-07-31 2014-08-26 Google Inc. Predicated control flow and store instructions for native code module security
US8561183B2 (en) 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures
GB2479780B (en) * 2010-04-22 2018-04-04 Advanced Risc Mach Ltd Preload instruction control
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
CN102436367A (zh) * 2011-09-26 2012-05-02 杭州中天微系统有限公司 16/32位混合架构指令预取缓冲器装置
CN106485315B (zh) * 2015-10-08 2019-06-04 上海兆芯集成电路有限公司 具有输出缓冲器反馈与遮蔽功能的神经网络单元
CN106921482B (zh) * 2017-02-17 2019-04-05 武汉斗鱼网络科技有限公司 一种基于arm指令构造数据加解密算法的方法及系统
US10261791B2 (en) * 2017-02-24 2019-04-16 International Business Machines Corporation Bypassing memory access for a load instruction using instruction address mapping
US11263014B2 (en) 2019-08-05 2022-03-01 Arm Limited Sharing instruction encoding space between a coprocessor and auxiliary execution circuitry

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060002881A1 (en) * 2004-04-30 2006-01-05 Ching-An Peng Perfluorocarbon-soluble compounds

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021991A (en) * 1983-04-18 1991-06-04 Motorola, Inc. Coprocessor instruction format
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
WO1991019244A1 (en) * 1990-06-04 1991-12-12 3Com Corporation Method for optimizing software for any one of a plurality of variant architectures
JPH07281890A (ja) 1994-04-06 1995-10-27 Mitsubishi Electric Corp 命令セット及びそのマイクロコンピュータによる実行方法
GB2289354B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
JP3781519B2 (ja) 1997-08-20 2006-05-31 富士通株式会社 プロセッサの命令制御機構
US6438678B1 (en) 1998-06-15 2002-08-20 Cisco Technology, Inc. Apparatus and method for operating on data in a data communications system
US6282633B1 (en) 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
JP2001142692A (ja) 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
US6895489B2 (en) * 2002-08-07 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for operating in endian independent mode
US20040059848A1 (en) * 2002-09-23 2004-03-25 Institute For Information Industry Device for automatically switching endian order
US6968444B1 (en) * 2002-11-04 2005-11-22 Advanced Micro Devices, Inc. Microprocessor employing a fixed position dispatch unit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060002881A1 (en) * 2004-04-30 2006-01-05 Ching-An Peng Perfluorocarbon-soluble compounds

Also Published As

Publication number Publication date
TWI314702B (en) 2009-09-11
JP3905552B2 (ja) 2007-04-18
CN100380315C (zh) 2008-04-09
RU2006101165A (ru) 2006-05-27
GB2402764B (en) 2006-02-22
JP2006527435A (ja) 2006-11-30
US20040255097A1 (en) 2004-12-16
WO2004111836A2 (en) 2004-12-23
CN1806225A (zh) 2006-07-19
KR20060021370A (ko) 2006-03-07
EP1680735B1 (en) 2010-09-01
WO2004111836A3 (en) 2005-11-03
DE602004028951D1 (de) 2010-10-14
EP1680735A2 (en) 2006-07-19
US7788472B2 (en) 2010-08-31
MY131744A (en) 2007-08-30
GB2402764A (en) 2004-12-15
GB0313770D0 (en) 2003-07-23
TW200428277A (en) 2004-12-16

Similar Documents

Publication Publication Date Title
KR100971626B1 (ko) 다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의명령어 부호화
US7966476B2 (en) Determining length of instruction with escape and addressing form bytes without evaluating opcode
US7287152B2 (en) Conditional execution per lane
US7447871B2 (en) Data access program instruction encoding
JP2001142697A (ja) データ処理装置
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
GB2352536A (en) Conditional instruction execution
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US20230325189A1 (en) Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
GB2352308A (en) Conditional instruction execution
US6209080B1 (en) Constant reconstruction processor that supports reductions in code size and processing time
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
US20040024992A1 (en) Decoding method for a multi-length-mode instruction set
US7120779B2 (en) Address offset generation within a data processing system

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
FPAY Annual fee payment

Payment date: 20130621

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140124

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150618

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160616

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 10