KR100315739B1 - 다중명령세트를사용하는데이터처리장치 - Google Patents

다중명령세트를사용하는데이터처리장치 Download PDF

Info

Publication number
KR100315739B1
KR100315739B1 KR1019960706181A KR19960706181A KR100315739B1 KR 100315739 B1 KR100315739 B1 KR 100315739B1 KR 1019960706181 A KR1019960706181 A KR 1019960706181A KR 19960706181 A KR19960706181 A KR 19960706181A KR 100315739 B1 KR100315739 B1 KR 100315739B1
Authority
KR
South Korea
Prior art keywords
program
instruction
bit
instruction set
word
Prior art date
Application number
KR1019960706181A
Other languages
English (en)
Other versions
KR970703011A (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 KR970703011A publication Critical patent/KR970703011A/ko
Application granted granted Critical
Publication of KR100315739B1 publication Critical patent/KR100315739B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/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
    • 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

Abstract

데이터 프로세싱 시스템을 2개의 명령 세트를 사용하여 설명된다.
양 명령 세트는 프로세서 코어(2)내의 완전 N-비트 데이터 통로를 사용하는 프로세싱을 제어한다.
1개의 명령 세트는 32-비트 명령 세트이고, 다른 하나는 16-비트 명령 세트이다.
양 명령 세트는 영구적으로 설치되고, 관련된 명령 디코딩 하드웨어(30, 36,38)를 갖는다.

Description

다중 명령세트를 사용하는 데이터 처리장치
본 발명은 데이터 처리 분야에 관한 것이다. 특히, 본 발명은 다중 프로그램명령 워드의 세트를 사용하는 데이터 처리에 관한 것이다.
데이터 처리 시스템은 프로그램 명령 워드의 제어 하에 연산하는 프로세서 코어를 이용하고, 디코드된 경우에 프로세서 코어 내의 서로 다른 소자를 제어하기위해 코어 제어 신호를 발생하여 필요한 기능들을 수행하여 프로그램 명령 워드 내에 특정된 처리를 달성한다.
전형적인 프로세서 코어는 주어진 명령에 응답하여 처리될 수 있는 데이터 워드의 길이를 제한하는 일정한 비트 폭의 데이터 경로를 갖는다. 데이터 처리 분야에 있어서는 이들 데이터 경로 폭이 꾸준하게 증가하는 경향이 있었고, 예를 들면, 8-비트 구조에서 16비트, 32-비트 및 64-비트 구조로 점차 이동하는 경향이 있었다. 동시에 이것이 데이터 경로 폭을 증가시킴에 따라, 이 명령세트는 (CISC 및 RISC 원리에서) 가능한 명령의 개수와 이들 명령의 비트 길이를 증가시켰다. 예를들면, 16-비트 명령세트를 갖는 16-비트 구조를 사용하는 것에서 32-비트 명령세트를 갖는 32-비트 구조를 사용하는 것으로 이동이 있었다.
구조 폭이 증가하는 쪽으로 이동하는 문제점은 선행의 기계의 발생에 대해서 기록된 프로그램 소프트웨어와 뒤떨어진 호환성을 유지하기를 희망한다는 것이다. 이것을 처리하는 하나의 방법은 호환성 모드를 신규의 시스템에 제공하는 것이었다. 예를 들면, 디지털 이큅먼트 사(Digital Equipment Corporation)의 VAX11 컴퓨터는 그들이 초기에 PDP11 컴퓨터의 명령을 디코드할 수 있는 호환성 모드를 갖는다. 이것에 의해 초기의 프로그램 소프트웨어가 사용될 수 있지만, 그러한 사용은 실행하고 있는 새로운 처리 시스템의 증가된 능력을 이용하고 있지 않고, 예컨대, 아마도 다중 스테이지 16-비트 연산만이 실제로 그 시스템이 32-비트 연산을 지지하는 하드웨어를 갖고 있을 때에 사용된다.
그러한 구조 폭의 변화와 관계된 또 다른 문제점은 신규의 증가된 비트 폭 명령세트를 사용하는 컴퓨터 프로그램의 크기가 증가하는 경향이 있다는 것이다 (32-비트 프로그램 명령 워드는 16-비트 프로그램 명령 워드의 저장 공간을 2배 점령한다). 사전에 1 이상의 보다 짧은 명령을 요구했던 연산을 지정하기 위해 단일명령에 의해 오프셋된 어떤 범위까지 크기가 증가되고 있는 동안에, 여전히 프로그램 사이즈가 증가되는 경향이 있다.
이 프로그램을 처리하는 방법은 사용자가 그들 소유의 명령세트를 효율적으로 지정할 수 있도록 하는 것이다. IBM사(International Business Machines Corporation)에 의해 제조된 IBM370 컴퓨터는 사용자가 프로세서 코어의 서로 다른 부분에 의해 소망의 작동으로 명령 프로그램 워드를 맵핑하는 그들 소유의 개개의 명령세트를 설정하는 기록가능한 제어 기억장치를 내장하고 있다. 이 방법은 좋은 유연성을 주지만, 고속으로 연산하는 것은 어렵고, 또 기록 가능한 제어 기억 장치는 불리하게 집적회로의 큰영역을 차지한다. 또한, 효율적으로 맞춘 명령세트를 설계하는 것은 사용자에게 번거로운 일이다.
유럽 공개 특허(European Published Patent Application) EP-A-0169565에는 16-비트 프로세서 코어를 갖는 시스템이 개시되어 있다. 제1 모드에 있어서, 이 시스템은 16-비트 데이터 처리 동작을 지정하는 16-비트 명령에 대하여 동작한다. 제2 모드에 있어서, 이 시스템은 8-비트 데이터 처리 동작을 지정하는 8-비트 명령에 대하여 동작한다. 8-비트 명령은 프로그램된 메모리를 사용하여 리코드되는 16-비트 명령으로 맵핑된다. 이 디코된 16-비트 명령은 특정된 8-비트 데이터 처리 동작을 수행한다.
또, 단일 명령세트가 서로 다른 길이의 프로그램 명령 워드를 갖는 시스템을 제공한다는 것을 알 수 있다. 이 방법의 일례로서는 MOS 테크놀로지에 의해 제조된 6502 마이크로프로세서가 있다. 이 프로세서는 오퍼랜드 바이트의 가변수 전에 오는 8-비트 연산 코드를 사용한다. 이 연산 코드는 먼저 오퍼랜드가 식별되어 그 명령이 달성되기 전에 디코드되어야 한다. 이것은 다중 메모리 페치를 요구하고, 공지된 일정한 길이의 프로그램 명령 워드(즉, 연산 코드 및 어떤 오퍼랜드)와 비교해서 시스템 성능에 대하여 상당한 압박을 나타낸다.
IBM Technical Disclosure Bulletin Vol. 15, No. 3. August 1972, page 920에는 17-비트 명령을 20-비트 명령으로 변환하는 시스템이 개시되어 있다.
유럽 공개 특허출원 EP-A-0199173에는 명령 디코더를 포함하는 마이크로프로세서가 개시되어 있다.
본 발명의 데이터 처리장치는, N-비트 데이터 경로를 갖고 복수의 코어 제어신호에 응답하는 프로세서 코어(2)와, N-비트 데이터 처리 동작을 지정해서 영구적인 제1 명령세트로부터 X-비트 프로그램 명령워드를 디코딩하여 그 N-비트 데이터 경로를 이용하는 처리를 트리거하는 그 코어 제어신호를 발생하는 제1 디코딩 수단(30)과, 영구적인 제2 명령세트로부터 Y-비트 프로그램 명령워드를 디코딩하여 처리를 트리거하는 그 코어 제어신호를 발생하고 Y는 X보다 작은 제2 디코딩 수단(36)과, 수신된 프로그램 명령워드에 관하여 그 제1 디코딩 수단을 사용하는 제1 처리 모드 또는 수신된 프로그램 명령워드에 관하여 그 제2 디코딩 수단을 사용하는 제2 처리 모드 중 어느 하나를 선택하는 명령세트 스위치를 구비함에 있어서, 그 Y-비트 프로그램 명령워드는 그 N-비트 데이터 경로를 이용하는 N-비트 데이터 처리 동작을 지정하는 것을 특징으로 한다.
본 발명은 폭이 넓은 기준 X-비트 명령세트 및 N-비트 데이터 경로를 갖는 시스템에 있어서 (예컨대, 32비트 명령세트는 32비트 데이터 통로에 대하여 동작한다), X-비트 명령세트의 완전한 능력이 종종 통상의 프로그래밍에 사용된다는 것을 인지한다. 이것의 일례로서는 32-비트 브랜치(branch) 명령이 있다. 이 브랜치 명령은 매우 가끔 사용되는 32메가 바이트 범위를 가질 수도 있다. 이와 같이, 대부분의 경우에 있어서, 소수의 명령에 대한 이 브랜치만 있을 것이고, 32-비트 명령 내의 대부분의 비트는 어떠한 정보도 지니고 있지 않을 것이다. 32-비트 명령세트를 사용하여 기록된 많은 프로그램은 낮은 코드밀도를 갖고, 필요한 것보다 더 많은 프로그램 저장 공간을 이용한다.
본 발명은 독립된 영구적인 Y-비트 명령세트를 제공함으로써 이 문제점을 처리하고, 여기서 Y는 X보다 작고, 그것은 여전히 풀 N-비트 데이터 경로에 대하여동작한다. 이와 같이, 코드 밀도가 X-비트 명령세트의 복잡화를 요구하지 않는 이들 애플리케이션에 대해여 증가되는 동안 N-비트 데이터 통로의 성능이 이용된다.
2개의 영구적인 명령세트를 제공할 때에는 시너지(synergy)가 있다. 사용자는 유연하게 프로그램의 상황에 맞게 사용하고 있는 명령세트를 변경할 수 있고, 이 명령세트는 제조업자(상대적인 타이밍이 중요한 RISC 프로세서 등의 고성능 시스템에 있어서의 임계)에 의해 효율적으로 실행되며, N-비트 데이터 경로를 사용하지 않는다.
이것의 또 다른 이점은 보다 소수의 프로그램 코드의 바이트가 Y-비트 명령세트에 의해 동작하고 있을 때 단위 시간마다 실행되기 때문에, 프로그램 코드를 기억하는 메모리 시스템의 데이터 전송 능력에는 엄중한 요구들이 있지 않다는 것이다. 이것은 복잡성을 줄이고 비용도 줄인다.
또한, 본 발명은 이 분야에 있어서 통상의 경향과 반대 방향으로 움직인다. 프로세서의 각각의 신규 발생에 의해, 명령세트가 더 많은 명령을 수용하기 위해 더 넓어지면서 더 많은 명령이 명령세트에 더해지는 경향이 있다.
대조적으로, 본 발명은 폭이 넓은 매우 복합한 명령세트로 시작한 후에 폭이 넓은 명령세트의 전 범위가 요구되지 않는 위치에서 사용하기 위해 폭이 좁은 명령세트(다수의 명령에 대하여 적은 공간을 갖는다)를 더한다.
제1 명령세트 및 제2 명령세트가 완전히 의존한다는 것을 알 수 있을 것이다. 그러나, 본 발명의 바람직한 실시예에 있어서, 상기 제2 명령세트는 상기 제1 명령세트에 의해 제공된 동작의 서브세트를 제공한다. 제2 명령세트가 제1 명령세트의 서브세트라면, 프로세서 코어의 하드웨어 소자가 양 명령세트에 알맞도록 보다 용이하게 설정되기 때문에 보다 효율적인 연산이 가능하다. 증가된 비트 길이의 프로그램 명령 워드의 명령세트가 현 프로그램 명령세트에 더해졌을 때, 2개의 명령세트로부터의 프로그램 명령워드가 직교한다는 것을 확보할 수 있다.
그러나, 명령세트 스위치에 의해 이 압박이 회피될 수 있어, 이 명령세트 스위치는 상기 제2 명령세트가 상기 제1 명령세트와 직교하지 않는 시스템을 허용한다. 직교하지 않는 명령세트를 사용하는 것에 대한 자유는 시스템 설계자의 일을 용하게 하고, 명령세트 설계의 다른 관점이 보다 효율적으로 처리되는 것을 가능하게 한다. 명령세트 스위치는 어떤 수동의 개입에 의해 설정된 하드웨어형 스위치일 것이다.
그러나, 본 발명의 바람직한 실시예에 있어서, 상기 명령세트 스위치는 명령세트 플래그에 응답하는 수단을 구비하고, 상기 명령세트 플래그는 사용자의 프로그램 제어 하에 설정될 수 있다. 소프트웨어 제어 하에 제1 명령세트 및 제2 명령세트 사이에서 전환하도록 명령세트 스위치가 사용되는 것이 가능하면, 상당한 이점이 있다.
예를 들면, 프로그래머는 다수의 프로그램의 코드 밀도가 증가했다는 이유로 그것의 Y-비트 프로그램 명령 워드를 가진 제2 명령세트를 이용하고, 제1 명령세트의 복잡화와 증가된 전원을 요구하는 작은 부분의 프로그램에 대하여 그것의 X-비트 프로그램 명령 워드를 가진 제1 명령세트로 일시적으로 전환한다. 2개의 독립된 명령세트의 지원은 부가적인 복잡성을 시스템 내에 삽입한다.
본 발명의 바람직한 실시예에 있어서, 그 프로세서 코어는 현재 적용가능한 처리 상태 데이터 및 세이브된 프로그램 상태 레지스터(SPSR)를 기억하는 프로그램상태 레지스터(CPSR)를 구비하고, 그 세이브된 프로그램 상태 레지스터는 프로그램예외가 발생하여 예외 처리 프로그램을 실행시킬 때에 주 프로그램과 관련된 처리상태 데이터를 기억하기 위해 이용되며, 그 명령세트 플래그(T)는 그 처리 상태 데이터의 일부분이다.
프로그램 및 상태 데이터의 일부분으로서 명령세트 플래그를 설치하면 예외가 발생할 때 명령세트 플래그가 기억된다는 것을 확실하게 한다.
이와 같이, 단일 예외 핸들러(handler)는 양 처리 모드로부터의 예외를 처리할 수 있고, 세이브된 프로그램 상태 레지스터 내의 세이브된 명령세트 플래그에 대한 액세스를 허가받을 수 있다.
또한, 예외 핸들러는 어느 한쪽의 명령세트를 사용할 수 있어 설계 압박을 요구함에 따라 그것의 속도 또는 코드밀도 중 어느 하나를 향상시킨다.
서로 다른 명령세트의 다른 비트 길이를 처리하기 위해, 본 발명의 바람직한 실시예에서, 그 프로세서 코어는 프로그램 카운터 레지스터(22)와 다음의 프로그램명령 워드로 향하기 위해 그 프로그램 카운터 레지스터 내에 기억된 프로그램 카운터 값을 증가시키는 프로그램 카운터 증분기(24)를 구비하고, 그 프로그램 카운터 증분기는 그 제2 처리 모드에서와는 다른 그 제1 처리 모드에서의 증분 스텝을 적용한다.
제2 명령세트의 보다 짧은 프로그램 명령워드는 제1 명령세트의 프로그램 명령워드만큼 많은 정보를 포함할 수 없다는 것을 알 수 있을 것이다. 이것을 수용하기 위해, 오퍼랜드 범위를 감소시킴으로써 제2 명령세트 내에 세이브된 공간이 프로그램 명령 워드 내에 지정되는 것이 바람직하다.
본 발명의 바람직한 실시예에 있어서, 그 프로세서 코어는 Y-비트 데이터 버스에 의해 메모리 시스템(4)에 결합되어, 그 제2 명령세트로부터의 프로그램 명령워드는 단일의 페치 사이클을 요구하고, 그 제1 명령세트로부터의 프로그램 명령워드는 복수의 페치 사이클을 요구한다.
Y-비트 데이터 버스와 메모리 시스템을 사용함으로써 적어도 제2 명령세트의 각 프로그램 명령 워드에 대한 단일 인출 사이클을 여전히 가능하게 하는 동안에 전체적으로 적은 비용의 시스템이 구축될 수 있다.
제1 디코딩 수단과 제2 디코딩 수단은 완전히 분리될 수도 있다. 그러나, 본 발명의 바람직한 실시예에 있어서, 상기 제2 디코딩 수단은 적어도 상기 제1 디코멍 수단의 일부를 재사용한다.
제2 디코덩 수단에 의해 적어도 제1 디코딩 수단의 일부를 재사용하면 전체회로 면적이 감소된다. 또한, 제1 명령세트가 일반적으로 제2 명령세트보다 덜 복잡하고, 같은 프로세서 코어를 구동하기 때문에, 재사용이 가능한 상당한 양의 제2 디코딩 수단이 있을 것이다.
본 발명의 실시예에 대해서는 첨부도면을 참조하면서 설명한다.
제1 도는 프로세서 코어와 메모리 시스템을 내장하는 데이터 처리장치를 개략적으로 나타낸 도면이고,
제2 도는 단일 명령세트를 갖는 시스템에 대한 명령 디코더 및 명령을 개략적으로 나타낸 도면이며,
제3 도는 2개의 명령세트를 갖는 시스템에서 사용하는 명령 디코더와 명령 파이프라인을 나타내는 도면이고,
제4 도는 X-비트 프로그램 명령 워드의 리코딩을 나타내는 도면이며,
제5 도 및 제6 도는 X-비트 프로그램 명령 워드로의 Y-비트 프로그램 명령 워드의 맵핑을 나타낸 도면이고,
제7 도는 X-비트 명령세트를 나타낸 도면이며,
제8 도는 Y-비트 명령세트를 나타낸 도면이고,
제9 도는 제1 명령세트 및 제2 명령세트에 이용될 수 있는 처리 레지스터를나타낸 도면이다.
제1 도는 Y-비트 메모리 시스템(4)에 결합된 프로세서 코어(2)를 구비하는 (집적회로의 부분으로서 형성된)데이터 처리 시스템을 나타낸다. 이 경우에 있어서, Y는 16이다.
프로세서 코어(2)는 레지스터 탱크(6), 부드(Booths) 곱셈기(8), 배럴 시프터(barrel shifter)(10), 32-비트 연산 논리장치(12) 및 기록 데이터 레지스터(14)를 포함한다. 명령 파이프라인(16), 명령 디코더(18) 및 판독 데이터 레지스터(20)는 프로세서 코어(2)와 메모리 시스템(4) 사이에 삽입된다. 프로세서 코어(2)의 일부분이고, 메모리 시스템(4)을 어드레스하는 프로그램 카운터 레지스터(22)가 나타나 있다. 각 명령이 실행되고, 신규의 명령이 명령 파이프라인(16)에 대해 페치되어야 하기 때문에 프로그램 카운터 증분기(24)는 프로그램 카운터 레지스터(22) 내의 프로그램 카운터 값을 증가시키는 기능을 한다.
프로세서 코어(2)는 다양한 기능 유니트 사이의 N-비트 데이터 경로(이 경우에 32-비트 데이터 경로)를 내장한다. 동작중, 명령 파이프라인(16) 내의 명령은 프로세서 코어(2) 내의 서로 다른 기능 소자에 전달되는 다양한 코어 제어신호를 생성하는 명령 디코더(18)에 의해 디코드된다. 이들 코어 제어신호에 응답하여, 프로세서 코어의 다른 부분은 32-비트 곱셈, 32-비트 덧셈 및 32-비트 논리 동작 등의 32-비트 처리 동작을 행한다.
레지스터 뱅크(6)는 현 프로그래밍 상태 레지스터(26)와 세이브된 프로그램상태 레지스터(28)를 포함한다. 현 프로그래밍 상태 레지스터(26)는 프로세서 코어(3)에 대하여 다양한 조건 및 상태 플러그를 보유한다. 이들 플래그는 산술연산 등에 있어서 0의 발생을 나타내는 플래그뿐만 아니라 처리 모드 플래그(예컨대, 시스템 모드, 유저 모드, 메모리 중단 모드 등)를 포함한다. (뱅크된 복수의 세이드된 프로그래밍 상태 레지스터 중 하나인)세이브된 프로그래밍 상태 레지스터(28)는 처리모드 스위치를 트리거하는 예외가 발생하면, 현 프로그래밍 상태 레지스터(26)의 내용을 일시적으로 기억하기 위해 사용된다. 이와 같이, 예외 처리는 보다 빠르고, 보다 효율적일 것이다.
명령세트 플래그 T는 현재의 프로그램 및 상태 레지스터(26) 내에 포함된다. 이 명령세트 플래그는 명령 디코더(18) 및 프로그램 카운터 증분기(24)에 공급된다. 이 명령세트 플래그 T가 설정되면, 이 시스템은 제2 명령세트의 명령(즉, Y-비트 프로그램 명령워드, 이 경우에 16-비트 프로그램 명령워드)에 의해 동작한다. 명령세트 플래그 T는 프로그램 카운터 증분기(24)를 제어하여 제2 명령세트에 의해 동작된 경우에 보다 작은 증분 스텝을 채택한다. 이것은 보다 작은 제2 명령세트의 프로그램 명령워드와 일관되어, 메모리 시스템(4)의 메모리 위치 내에 보다 친밀하게 간격을 두고 있다.
상술한 바와 같이, 메모리 시스템(4)은 16-비트 데이터 버스를 통해서 판독데이터 레지스터(20) 및 명령 파이프라인(16)에 접속된 16-비트 메모리 시스템이다. 이러한 16-비트 메모리 시스템은 보다 좋은 성능의 32-비트 메모리 시스템에 비하여 보다 간다하고 가격이 저렴하다. 이러한 16-비트 메모리 시스템을 사용하여, 16-비트 프로그램 명령워드가 단일 사이클에서 페치될 수 있다. 그러나, 제2 명령세트로부터 32-비트 명령이 사용되면(명령세트 플래그 T에 의해 지시된 것처럼), 명령 파이프라인(16)의 단일 32-비트 명령을 회복시키기 위해 2개의 명령의 페치가 요구된다.
요구된 프로그램 명령워드가 메모리 시스템(4)으로부터 회복되었다면, 이들 프로그램 명령워드는 명령 디코더에 의해 디코드되고, 그 명령이 16-비트 명령인지 또는 32-비트 명령인지에 관계없이 프로세서 코어(2) 내의 32-비트 처리를 시작한다.
명령 디코더(18)는 단일 블록으로서 제1 도에 도시되어 있다. 그러나, 1개 이상의 명령세트를 처리하기 위해, 그 명령 디코더(18)는 제2 도 및 제3 도에 나타낸 바와 같이 보다 복잡한 구조를 갖는다.
제2 도는 단일 명령세트를 처리하는 명령 디코더(18) 및 명령 파이프라인 (16)을 나타낸다. 이 경우에 있어서, 명령 디코더(18)는 32-비트 명령을 디코드하도록 동작하는 제1 디코딩 수단(30)만 포함한다 이 디코딩 수단(30)은 프로그래머블 논리 어레이(PLA)를 이용하는 제1 명령세트(ASM 명령세트)를 디코드하여 프로세서 코어(2)에 공급되는 복수의 코어 제어 신호(32)를 생성한다. 또한, 일반적으로 디코드되는(즉, 현 코어 제어 신호(32)를 산출하는) 프로그램 명령워드는 명령 레지스터(34) 내에 보유된다. 프로세서 코어(2) 내의 기능 소자(즉, 부드(Booths) 곱셈기(8) 또는 레지스터 뱅크(6))는 이 명령 레지스터(34)로부터 직접 그들의 처리 동작에 필요한 오퍼랜드를 판독한다.
그러한 배열 동작의 특징은 제1 디코딩 수단이 동작하는 클럭 사이클에서 초기에 제1 디코딩 수단(30)이 그것의 어떤 입력(PipeC 파이프라인 스테이지로부터 나타나는 실선으로서 표시된 P비트)을 요구하는 것이다. 이것은 코어 제어신호(32)가 프로세서 코어(2) 내의 필요한 소자를 구동하기 위해 때를 맞춰 발생되는 것을 확실하게 하는 것이다. 제1 디코딩 수단(30)은 비교적 크고, 느린 프로그래머블 논리 어레이 구조이므로, 그러한 타이밍을 고려하는 것은 중요하다.
명령 디코딩을 수행하는 그러한 프로그래머블 논리 어레이 구조의 설계는 종래의 기술에 포함되어 있다. 1세트의 입력은 이들 입력으로부터 생성되는 소망의 출력과 함께 한정된다. 상업적으로 이용할 수 있는 소프트웨어는 특정한 입력 세트로부터 특정한 출력 세트를 발생하는 PLA구조를 고안하기 위해 사용된다.
제3 도는 제1 명령세트 및 제2 명령세트를 디코드하는 것을 처리하도록 변조된 제2 도의 시스템을 나타낸다. 제1 명령세트가 명령세트 플래그(T)에 의해 선택되면, 그 시스템은 제2 도에서 설명한 바와 같이 동작한다. 명령 파이프라인(16)내의 명령이 제2 명령세트로부터 유래된다는 것을 명령세트 플래그 T가 나타내면, 제2 디코딩 수단(36)이 활성화된다.
이 제2 디코딩 수단은 빠른 PLA(38) 및 병렬의 느린 PLA(40)를 활용하는 16-비트 명령(섬(Thumb)명령)을 디코드한다. 빠른 PLA(38)은 제1 디코딩 수단(30)을 구동하는데 필요한 대응하는 32-비트 ARM명령의 P비트로 16-비트 섬 명령의 비트의 서브세트(Q비트)를 맵핑하는 기능을 한다. 비교적 작은 비트수가 이 맵핑을 하는데 요구되기 때문에, 빠른 PLA(38)은 비교적 얇을 수도 있어, 충분한 시간으로 제1 디코딩 수단이 파이프 C의 내용에 응답하여 코어 제어신호(32)를 발생할 수 있을 만큼 충분히 빨리 동작한다. 빠른 PLA(38)은 작동을 고려하여 완전 명령을 맵핑하는 어떤 불필요한 시간을 소비하지 않고 제1 디코딩 수단의 대응하는 32-비트 명령의 임계 비트를 "페이크(fake)"할 수 있다.
그러나, 근본적인 변경 및 중요한 부가 회로소자 없이 풀 32-비트 명령이 동작할 수 있으면, 프로세서 코어(2)에 의해 여전히 풀 32-비트 명령이 요구된다. 시간 임계 맵핑이 빠른 PLA(38)에 의해 처리되면서, 병렬로 접속된 느린 PLA(40)가 대응하는 32-비트 명령으로 16-비트 명령을 맵핑하여, 이것을 명령 레지스터(34)내에 배치하는 기능을 한다. 보다 복잡한 맵핑은 빠른 PLA(38) 및 제1 디코딩 수단(30)이 동작하는데 걸리는 전 시간에 걸쳐서 발생할 수 있다. 중요한 인자는 32-비트 명령이 프로세서 코어(2)에 대해서 작동하는 코어 제어신호(32)에 응답하여 어떤 오퍼랜드가 판독되는 충분한 시간 동안에 명령 레지스터(34) 내에 존재해야 한다는 것이다.
제2 명령세트를 디코딩할 때에 제3 도의 시스템의 전체 동작은 그들이 명령파이프라인(16)을 따라 진행함에 따라 제2 명령세트로부터의 16-비트 명령을 제1 명령세트로부터의 32-비트 명령으로 변환하는 것이라는 것을 알 수 있다. 이것은 제2 명령세트가 제1 명령세트의 서브세트로 됨으로써 실질적인 가능성을 갖게 되어 제1 명령세트 내의 명령으로 제2 명령세트로부터의 명령의 1:1 맵핑이 있다는 것을 확실하게 한다.
명령세트 플래그 T를 제공함으로써 제2 명령세트가 제1 명령세트와 직교되지 않게 할 수 있다. 이것은 특히 직교의 명령세트가 검출되어 디코드될 수 있도록 사용될 수 있는 어떤 프리비트 없이 제1 명령세트가 현존하는 명령세트라는 상황에서 유용하다.
제4 도는 32-비트 명령의 디코딩을 나타낸다. 제4 도의 윗부분에는, 페치동작, 디코드동작 및 마지막으로 실행동작이 행해지는 연속적인 처리 클럭 사이클이 도시되어 있다. 따라서, 특별한 명령(즉, 곱셈 명령)이 요구되면, 1 이상의 부가 실행 사이클이 더해져도 된다.
32-비트 명령(42)은 복수의 서로 다른 필드로 구성된다. 이들 필드 간의 경계는 나중의 제7 도에 나타낸 바와 같이 명령마다 다를 것이다.
명령(42) 내의 일부 비트는 주 디코드 위상 내부에서 디코딩을 요구한다. 이들 P비트는 비트(4-7, 20 및 22-27)이다. 이들은 제1 디코딩 수단(30)에 의해 요구되고, 빠른 PLA(38)에 의해 "페이쳐"되어야 하는 비트이다. 이들 비트는 제1 디코딩 수단에 적용되고, 그것에 의해 디코드되어 디코드 사이클의 제1 부분의 끝부분으로 적당한 코어 제어 신호(32)를 발생해야 한다. 필요하다면, 전 명령의 디코딩은 디코드 사이클의 끝부분만큼 오랜 시간이 걸릴 수 있다. 디코드 사이클의 끝부분에서, 명령 내의 오퍼랜드는 실행 사이클 동안 프로세서(2)에 의해 명령 레지스터(34)로부터 판독된다. 이들 오퍼랜드는 레지스터 지정자, 오프셋 또는 다른 변수일 것이다.
제5 도는 32-비트 명령으로의 16-비트 명령의 맵핑을 나타낸다. 굵은 선은 32-비트 명령 내의 P비트로 맵핑을 요구하는 16-비트 명령 내의 Q비트에서 시작하기 때문에, 그들은 제1 디코딩 수단(30)에 적용될 것이다. 대부분의 이들 비트가 일직선으로 교차하여 복사되거나 또는 단순한 맵핑을 수반한다는 것을 보여줄 것이다. 오퍼랜드 RN' 및 Rd와 16-비트 명령 내의 즉치(immediate)는 0을 가진 그들의 최상위 단부에서 패딩(padding)을 요구하여 32-비트 명령을 충족시킨다. 16-비트 명령 오퍼랜드보다 큰 범위를 갖는 32-비트 명령 오퍼랜드의 결과로서 이 패딩이 필요하다. 32-비트 명령이 16-비트 명령에 의해 표시되는 그 명령의 서브세트보다 상당히 더 유연성을 허용한다. 것을 제5 도의 아래부분에서 주어진 32-비트 명령의 일반화된 형태로부터 알 수 있을 것이다. 예를 들면, 32-비트 명령은 조건부로 실행할 수 있는 명령을 주는 조건 코드 Cond보다 앞서게 된다. 반대로, 16-비트 명령은 그들 자체의 어떤 조건 코드를 지니고 있지 않고, 16-비트 명령이 맵핑되는 32-비트 명령의 조건코드는 조건 실행 상태 "올웨이즈(always)"와 같은 "1110"의 값으로 설정된다.
제6 도는 그러한 또 다른 명령 맵핑을 나타낸다. 이 경우에 있어서의 16-비트 명령은 제5 도에 설명된 것과 다른 형태의 로드/저장(Load/Store) 명령이다. 그러나, 이 명령은 여전히 32-비트 명령세트의 단일 데이터 전송 명령의 서브세트이다.
제7 도는 32-비트 명령세트의 11개의 서로 다른 형태의 명령형식을 개략적으로 나타낸다. 이들 명령은 다음과 같이 차례로 있다.
1. 데이터 처리 PSR 전송;
2. 곱셈;
3. 단일 데이터 스왑(swap);
4. 단일 데이터 전송;
5. 확정되지 않음;
6. 블록 데이터 전송;
7. 브랜치 ;
8. 코프로세서 데이터 전송;
9. 코프로세서 데이터 동작; 및
10. 코프로세서 레지스터 전송.
11. 소프트웨어 인터럽트;
이 명령세트의 완전한 설명은 Advanced RISC Machines Limited에 의해 제조된 ARM6 프로세서의 데이터 시이트(Data Sheet)에서 알게 될 것이다. 제7 도 내에서 강조된 명령은 제5 도 및 제6 도에 나타낸 것이다.
제8 도는 32-비트 명령세트에 덧붙여 제공되는 16-비트 명령세트를 나타낸다. 이 명령세트 내에서 강조된 명령은 제5 도 및 제6 도에 나타낸 것들이다. 16-비트 명령세트 내의 명령이 단일 32-비트 명령으로 모두 맵핑되어 32-비트 명령세트의 서브세트를 형성하도록 16-비트 명령세트 내의 명령이 선택되었다.
이 명령세트 내의 각 명령 사이에 차례로 전달하면, 그 형식은 다음과 같이 지정된다.
형식 1: Op=0, 1. 양쪽 Op는 조건 코드 플래그를 설정한다.
0: ADD Rd, Rs, #즉치 3
1: SUB Rd, Rs, #즉치 3
형식 2: Op=0, 1. 양쪽 op는 조건 코드 플래그를 설정한다.
0: ADD Rd, Rm, Rn
1: SUB Rd, Rm, Rn
형식 3: 3개의 연산코드. 큰 즉치를 확립했다.
1= ADD Rd, Rd, #즉치 8<<8
2= ADD Rd, Rd, #즉치 8<<16
3= ADD Rd, Rd, #즉치 8<<24
형식 4: Op는 3개의 연산코드를 주고, 모든 연산은 MOVS Rd, Ra SHIFT #즉치 5이며, 여기서 SHIFT란,
0 is LSL
1 is LSR
2 is ASR
ARM으로 규정한 바와 같이, 0만큼 시프트한다.
형식 5: Op1 * 8 + Op2는 32개의 ALU 연산코드를 주고, Rd = Rd op Rn. 모든 연산은 조건 코드 플래그를 설정한다.
이 연산은,
AND, OR, EOR, BIC (AND NOT), NEGATE, CMP, CMN, MUL, TST, TEQ, MOV, MVN(NOT), LSL, LSR, ASR, ROR
분실한 ADC, SBC, MULL
ARM으로 규정한 바와 같이 0만큼, 31보다 크게 시프트한다.
8개의 특별한 연산코드, LO은 Reg 0-7을 지정하고, HI는 레지스터 8-15를 지정한다.
SPECIAL는 CPSR or SPSR이다.
MOV HI, LO (은폐된 레지스터를 눈에 보이는 레지스터로 이동)
MOV LO, HI (눈에 보이는 레지스터를 은폐된 레지스터 로 이동)
MOV HI, HI (예컨대 진행 리턴)
MOVS HI, HI (예컨대 예외 리턴)
MOVS HI, LO (예컨대 인터럽트 리턴, SUBS HI, HI, #4 수도 있음)
MOV SPECIAL, LO (MSR)
MOV LO, SPECIAL (MSR)
CMP HI, HI (스택 제한 체크)
8개의 자유 연산코드
형식 6: Op 4개의 연산코드를 준다. 모든 연산은 조건 코드 플래그를 설정 한다.
0: MOV Rd, #즉치 8
1: CMP Rs, #즉치 8
2: ADD Rd, Rd, #즉치 8
ADD Rd, Rs, #즉치 5에 대한 ADD를 교환할 수 있다.
형식 7: 워드 PC + 오프셋(256 워드, 1024 바이트)을 로드한다. 오프셋이 정렬된 워드이어야 한다는 것에 유의.
LDR Rd, [PC, #+ 1024]
이 명령은 다음의 리터럴 풀에 액세스하여, 상부, 어드레스 등을 로드하기 위해 사용된다.
형식 8: SP (r7) + 256 워드(1024 바이트)로부터 워드를 로드하여 저장한다.
SP(r7) + 256 바이트로부터 바이트를 로드하여 저장한다.
LRD Rd, [SP, # + 1024)
LDRB Rd, [SP, # + 256]
이들 명령은 스택 및 프레임 액세스를 위한 것이다.
형식 9: 워드(또는 바이트)를 로드하여 저장, 부호가 있는 3 비트 즉치 오프셋(사후 Inc/Dec), 강요된 라이트백(Writeback)
L은 로드/저장, U는 업/다운 (덧셈/뺄셈 오프셋), B는 바이트/워드
LDR {B} Rd, [Rb], # +/- 오프셋 3
STR {B} Rd, [Rb], # +/- 오프셋 3
이들 명령은 어레이 액세스를 위한 것이다.
이 오프셋은 바이트의 0∼7을 인코드하고, 워드의 0, 4∼28을 인코드한다.
형식 10: 부호가 있는 레지스터로 워드(또는 바이트)를 로드 및 저장한다.
오프셋(사전 Inc/Dec), 라이트백 금지
L은 로드/저장, U는 업/다운 (덧셈/뺄셈 오프셋), B는 바이트/워드
LDR Rd, [Rb, +/- Ro, LSL#22]
STR Sd, [Rb, +/- Ro, LSL#21]
LDRB Rd, [Rb, +/- Ro]
STRB Rd, [Rb, +/- Ro]
이들 명령은 베이스 + 오프셋 포인터 액세스를 위한 것이고, 매우 빠른 즉치오프셋 액세스를 주는 8-비트 MOV, ADD, SUB와 결합된다.
형식 11: 부호가 있는 5비트에 대하여 워드(또는 바이트)를 로드 및 저장.
즉치 오프셋(사전 Inc/Dec), 라이트백 금지
L은 로드/저장 B는 바이트/워드
LDR{B} Rd, [Rb, # + Offset5]
STR{B} Rd, [Rb, # + Offset5]
이들 명령은 구조 액세스를 위한 것이다.
이 오프셋은 바이트의 0∼31와, 워드의 0, 4∼124를 인코드한다.
형식 12: 배수(강요된 라이트백)를 로드/저장
LDMIA Rb ! , {Rlist}
STMIA Rb ! , {Rlist}
Rlist는 레지스터 rO∼r7을 지정한다.
이들 명령의 서브클래스는 한 쌍의 서브루틴 호출 및 리턴 명령이다.
LDM에 대하여, r7이 베이스이고, 비트 7이 rlist에서 설명되면, PC는 로드된다.
STM에 대하여, r7이 베이스이고, 비트t 7이 rlist에서 설정되면, LR이 저장된다.
r7이 베이스 레지스터로서 사용되면, sp가 대신 사용된다.
양쪽의 경우에 있어서, 풀 강하 스택이 실행되고, 즉 LDM은 같은 ARM's LDMFD이고, STM은 같은 ARM's STMFD이다.
그러므로 블록 복사에 대해서는, 엔드 포인터로서 r7을 사용한다.
r7이 베이스가 아니면, LDM 및 STM은 같은 ARMs LDMIA, SMIA이다.
형식 13: 어드레스를 로드, 이 명령은 8비트의 부호가 없는 상수를 PC 또는 스택포인터 중 어느 하나에 더하고, 수신지 레지스터 내에 그 결과를 저장한다.
ADD Rd, sp, + 256 바이트
ADD Rd, pc, + 256 워드(1024 바이트)
SP 또는 PC가 소스이면, SP 비트가 나타난다.
SP가 소스이고, r7이 수신지 레지스터로서 지정되면, SP는 수신지 레지스터로서 사용된다.
형식 14: 조건 브랜치, +/-128 바이트, 여기서 cond는 조건 코드(ARM와 같이)를 규정하고, cond = 15는 SWI로서 인코드한다(오직 256개만이 충분).
형식 15: 긴 브랜치 및 링크의 비트 22:12를 설정 MOV lr, #오프셋 <<12.
형식 16: 긴 브랜치 및 링크를 수행한다. 연산은 SUB newlr, PC, #4; ORR pc, oldlr, #오프셋 << 1이다. newlr 및 oldlr은 연산 전후의 lr 레지스터를 의미한다.
상술한 바와 같이, 16-비트 명령세트는 32-비트 명령세트와 비교하여 감소된 오퍼랜드 범위를 갖는다. 이것과 알맞게, 16-비트 명령세트는 풀 32-비트 명령세트에 대해 제공되는 레지스터(6)의 서브세트를 사용한다. 제9 도는 16-비트 명령세트에 사용되는 레지스터의 서브세트를 나타낸다.

Claims (10)

  1. N-비트 데이터 경로를 갖고, 복수의 코어 제어신호에 응답하는 프로세서 코어(2)와,
    N-비트 데이터 처리 동작을 지정해서 영구적인 제1 명령세트로부터 X-비트 프로그램 명령워드를 디코딩하여, 상기 N-비트 데이터 경로를 이용하는 처리를 트리거하는 상기 코어 제어신호를 발생하는 제1 디코딩 수단(30)과,
    영구적인 제2 명령제트로부터 Y-비트 프로그램 명령워드를 디코딩하여, 처리를 트리거하는 상기 코어 제어신호를 발생하고, Y는 X보다 작은 제2 디코딩 수단(36)과,
    수신된 프로그램 명령워드에 관하여 상기 제1 디코딩 수단을 사용하는 제1 처리 모드 또는 수신된 프로그램 명령워드에 관하여 상기 제2 디코딩 수단을 사용하는 제2 처리 모드 중 어느 하나를 선택하는 명령세트 스위치를 구비하는 데이터 처리장치에 있어서,
    상기 Y-비트 프로그램 명령워드는 상기 N-비트 데이터 경로를 이용하는 N-비트 데이터 처리 동작을 지정하는 것을 특징으로 하는 데이터 처리장치.
  2. 제1 항에 있어서,
    상기 제2 명령세트는 상기 제1 명령세트에 의해 제공된 연산의 서브세트를 제공하는 것을 특징으로 하는 데이터 처리장치.
  3. 제1 항 또는 제2 항에 있어서,
    상기 제2 명령세트는 상기 제1 명령세트와 직교하지 않는 것을 특징으로 하는 데이터 처리장치.
  4. 제1 항에 있어서,
    상기 명령세트 스위치는 명령세트 플래그(T)에 응답하는 수단을 구비하고,
    상기 명령세트 플래그는 사용자 프로그램 제어하에 설정될 수 있는 것을 특징으로 하는 데이터 처리장치.
  5. 제4 항에 있어서,
    상기 프로세서 코어는 현재 적용가능한 처리 상태 데이터 및 세이브된 프로 그램 상태 레지스터(SPSR)를 기억하는 프로그램 상태 레지스터(CPSR)를 구비하고,
    상기 세이브된 프로그램 상태 레지스터는 프로그램 예외가 발생하여 예외 처리 프로그램을 실행시킬 때에 주 프로그램과 관련된 처리 상태 데이터를 기억하기위해 이용되며,
    상기 명령세트 플래그(T)는 상기 처리 상태 데이터의 일부분인 것을 특징으로 하는 데이터 처리장치.
  6. 제1 항 또는 제5 항에 있어서,
    상기 프로세서 코어는 프로그램 카운터 레지스터(22)와, 다음의 프로그램 명령 워드로 향하기 위해 상기 프로그램 카운터 레지스터 내에 기억된 프로그램 카운터 값을 증가시키는 프로그램 카운터 증분기(24)를 구비하고,
    상기 프로그램 카운터 증분기는 상기 제2 처리 모드에서와는 다른 상기 제1 처리 모드에서의 증분 스텝을 적용하는 것을 특징으로 하는 데이터 처리장치.
  7. 제1 항 또는 제2 항에 있어서,
    상기 제2 명령세트 내의 적어도 한 개의 프로그램 명령워드는 상기 제1 명령세트 내의 대응하는 프로그램 명령워드와 비교하여 감소된 오퍼랜드 범위를 갖는것을 특징으로 하는 데이터 처리장치.
  8. 제1 항 또는 제5 창에 있어서,
    상기 프로세서 코어는 Y-비트 데이터 버스에 의해 메모리 시스템(4)에 결합되어, 상기 제2 명령세트로부터의 프로그램 명령워드는 단일의 패치 사이클을 요구하고, 상기 제1 명령세트로부터의 프로그램 명령워드는 복수의 폐치 사이클을 요구하는 것을 특징으로 하는 데이터 처리장치.
  9. 제1 항에 있어서,
    상기 제2 디코딩 수단은 상기 제1 디코딩 수단의 적어도 일부를 재이용하는 것을 특징으로 하는 데이터 처리장치.
  10. 제1 항과 제2 항과 제4 항과 제5 항과 제9 항 중 어느 한 항에 있어서,
    상기 장치는 집적회로인 것을 특징으로 하는 데이터 처리장치.
KR1019960706181A 1994-05-03 1995-02-15 다중명령세트를사용하는데이터처리장치 KR100315739B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9408765A GB2289353B (en) 1994-05-03 1994-05-03 Data processing with multiple instruction sets
GB9408765.7 1994-05-03
PCT/GB1995/000315 WO1995030188A1 (en) 1994-05-03 1995-02-15 Data processing with multiple instruction sets

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020017002524A Division KR100327776B1 (ko) 1994-05-03 1995-02-15 다중 명령세트를 사용하는 데이터 처리방법

Publications (2)

Publication Number Publication Date
KR970703011A KR970703011A (ko) 1997-06-10
KR100315739B1 true KR100315739B1 (ko) 2002-02-28

Family

ID=10754489

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020017002524A KR100327776B1 (ko) 1994-05-03 1995-02-15 다중 명령세트를 사용하는 데이터 처리방법
KR1019960706181A KR100315739B1 (ko) 1994-05-03 1995-02-15 다중명령세트를사용하는데이터처리장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020017002524A KR100327776B1 (ko) 1994-05-03 1995-02-15 다중 명령세트를 사용하는 데이터 처리방법

Country Status (13)

Country Link
US (1) US5740461A (ko)
EP (3) EP0813144B1 (ko)
JP (3) JP3173793B2 (ko)
KR (2) KR100327776B1 (ko)
CN (2) CN1089460C (ko)
DE (2) DE69502098T2 (ko)
GB (1) GB2289353B (ko)
IL (1) IL113153A (ko)
IN (1) IN190632B (ko)
MY (1) MY113751A (ko)
RU (1) RU2137183C1 (ko)
TW (1) TW242184B (ko)
WO (1) WO1995030188A1 (ko)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2307072B (en) 1994-06-10 1998-05-13 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5867726A (en) * 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
AU3480897A (en) * 1996-06-10 1998-01-07 Lsi Logic Corporation An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
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
US5905893A (en) * 1996-06-10 1999-05-18 Lsi Logic Corporation Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
US6002876A (en) * 1996-09-27 1999-12-14 Texas Instruments Incorporated Maintaining code consistency among plural instruction sets via function naming convention
JP3781519B2 (ja) * 1997-08-20 2006-05-31 富士通株式会社 プロセッサの命令制御機構
US6230259B1 (en) * 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6438679B1 (en) * 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
US6012138A (en) * 1997-12-19 2000-01-04 Lsi Logic Corporation Dynamically variable length CPU pipeline for efficiently executing two instruction sets
EP0942357A3 (en) 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
US6079010A (en) * 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6327650B1 (en) * 1999-02-12 2001-12-04 Vsli Technology, Inc. Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
EP1050798A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Decoding instructions
EP1050796A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics S.A. A decode unit and method of decoding
US6662087B1 (en) * 2000-01-03 2003-12-09 Spx Corporation Backward compatible diagnostic tool
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
US6775732B2 (en) * 2000-09-08 2004-08-10 Texas Instruments Incorporated Multiple transaction bus system
GB2367654B (en) 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
GB2367915B (en) * 2000-10-09 2002-11-13 Siroyan Ltd Instruction sets for processors
EP1197847A3 (en) * 2000-10-10 2003-05-21 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US7149878B1 (en) 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
GB2369464B (en) 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US7076771B2 (en) 2000-12-01 2006-07-11 Arm Limited Instruction interpretation within a data processing system
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
GB2376097B (en) 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
GB2376100B (en) * 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7493470B1 (en) 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
EP1324191A1 (en) * 2001-12-27 2003-07-02 STMicroelectronics S.r.l. Processor architecture, related system and method of operation
EP1470476A4 (en) * 2002-01-31 2007-05-30 Arc Int CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE
US7131118B2 (en) * 2002-07-25 2006-10-31 Arm Limited Write-through caching a JAVA® local variable within a register of a register bank
GB2399897B (en) * 2003-03-26 2006-02-01 Advanced Risc Mach Ltd Memory recycling in computer systems
US7194601B2 (en) 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US7437532B1 (en) 2003-05-07 2008-10-14 Marvell International Ltd. Memory mapped register file
US6983359B2 (en) 2003-08-13 2006-01-03 Via-Cyrix, Inc. Processor and method for pre-fetching out-of-order instructions
USH2212H1 (en) * 2003-09-26 2008-04-01 The United States Of America As Represented By The Secretary Of The Navy Method and apparatus for producing an ion-ion plasma continuous in time
US7096345B1 (en) 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US20050091474A1 (en) * 2003-10-24 2005-04-28 Microchip Technology Incorporated Fuse configurable alternate behavior of a central processing unit
US7707389B2 (en) 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
GB2412192B (en) * 2004-03-18 2007-08-29 Advanced Risc Mach Ltd Function calling mechanism
US7802080B2 (en) 2004-03-24 2010-09-21 Arm Limited Null exception handling
US7930526B2 (en) 2004-03-24 2011-04-19 Arm Limited Compare and branch mechanism
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7650453B2 (en) * 2004-09-16 2010-01-19 Nec Corporation Information processing apparatus having multiple processing units sharing multiple resources
US7406406B2 (en) * 2004-12-07 2008-07-29 Bull Hn Information Systems Inc. Instructions to load and store containing words in a computer system emulator with host word size larger than that of emulated machine
KR100633773B1 (ko) 2005-07-01 2006-10-13 삼성전자주식회사 버스 시스템 및 버스 중재 방법
EP1966684B1 (en) * 2005-12-23 2010-03-17 Koninklijke KPN N.V. Processor lock
US9652210B2 (en) 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US8832679B2 (en) * 2007-08-28 2014-09-09 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US7917735B2 (en) * 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US7925867B2 (en) * 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US8037286B2 (en) * 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
TWI379230B (en) * 2008-11-14 2012-12-11 Realtek Semiconductor Corp Instruction mode identification apparatus and instruction mode identification method
US9274796B2 (en) * 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
CN101840328B (zh) * 2010-04-15 2014-05-07 华为技术有限公司 一种数据处理方法及系统以及相关设备
US8914619B2 (en) * 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions
GB2484489A (en) * 2010-10-12 2012-04-18 Advanced Risc Mach Ltd Instruction decoder using an instruction set identifier to determine the decode rules to use.
CN102360281B (zh) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 用于微处理器的多功能定点乘加单元mac运算装置
US9875108B2 (en) * 2013-03-16 2018-01-23 Intel Corporation Shared memory interleavings for instruction atomicity violations
US9965320B2 (en) 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
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
KR102180972B1 (ko) * 2014-04-23 2020-11-20 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
CN104991759B (zh) * 2015-07-28 2018-01-16 成都腾悦科技有限公司 一种可变指令集微处理器及其实现方法
US10007520B1 (en) * 2016-02-25 2018-06-26 Jpmorgan Chase Bank, N.A. Systems and methods for using alternate computer instruction sets
US10120688B2 (en) * 2016-11-15 2018-11-06 Andes Technology Corporation Data processing system and method for executing block call and block return instructions
CN111090465B (zh) * 2019-12-19 2022-08-19 四川长虹电器股份有限公司 一种rv32ic指令集的译码系统及其译码方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5317240A (en) * 1976-07-31 1978-02-17 Toshiba Corp Controller
US4236204A (en) * 1978-03-13 1980-11-25 Motorola, Inc. Instruction set modifier register
US4338663A (en) * 1978-10-25 1982-07-06 Digital Equipment Corporation Calling instructions for a data processing system
US4876639A (en) * 1983-09-20 1989-10-24 Mensch Jr William D Method and circuitry for causing sixteen bit microprocessor to execute eight bit op codes to produce either internal sixteen bit operation or internal eight bit operation in accordance with an emulation bit
JPS6133546A (ja) * 1984-07-25 1986-02-17 Nec Corp 情報処理装置
EP0476722B1 (en) * 1985-04-08 1997-02-26 Hitachi, Ltd. Data processing system
JPS62262146A (ja) * 1986-05-09 1987-11-14 Hitachi Ltd 処理装置
JP2845433B2 (ja) * 1987-09-07 1999-01-13 日本電気株式会社 集積回路装置
US5115500A (en) * 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
EP0407911B1 (en) * 1989-07-07 1998-12-09 Hitachi, Ltd. Parallel processing apparatus and parallel processing method
JPH0476626A (ja) * 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
DE69227604T2 (de) * 1991-03-11 1999-06-24 Silicon Graphics Inc Mountain Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum
US5327566A (en) * 1991-07-12 1994-07-05 Hewlett Packard Company Stage saving and restoring hardware mechanism
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
GB2284492B (en) * 1993-12-06 1998-05-13 Graeme Roy Smith Improvements to computer control units
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline

Also Published As

Publication number Publication date
RU2137183C1 (ru) 1999-09-10
EP0758464A1 (en) 1997-02-19
JP3173793B2 (ja) 2001-06-04
EP0813144A3 (en) 1998-01-14
DE69530520D1 (de) 2003-05-28
IN190632B (ko) 2003-08-16
CN1395168A (zh) 2003-02-05
WO1995030188A1 (en) 1995-11-09
EP0813144A2 (en) 1997-12-17
EP0758464B1 (en) 1998-04-15
IL113153A (en) 1998-07-15
EP0813144B1 (en) 2003-04-23
MY113751A (en) 2002-05-31
GB2289353B (en) 1997-08-27
TW242184B (en) 1995-03-01
GB2289353A (en) 1995-11-15
JPH09512652A (ja) 1997-12-16
JP2002366348A (ja) 2002-12-20
US5740461A (en) 1998-04-14
IL113153A0 (en) 1995-06-29
GB9408765D0 (en) 1994-06-22
CN1147307A (zh) 1997-04-09
DE69502098T2 (de) 1998-08-06
KR970703011A (ko) 1997-06-10
JP2006079652A (ja) 2006-03-23
EP1296225A2 (en) 2003-03-26
DE69502098D1 (de) 1998-05-20
CN1174313C (zh) 2004-11-03
EP1296225A3 (en) 2007-07-25
DE69530520T2 (de) 2003-12-24
KR100327776B1 (ko) 2002-03-15
CN1089460C (zh) 2002-08-21

Similar Documents

Publication Publication Date Title
KR100315739B1 (ko) 다중명령세트를사용하는데이터처리장치
KR100323191B1 (ko) 다중명령세트를이용한데이터프로세싱장치
US5701442A (en) Method of modifying an instruction set architecture of a computer processor to maintain backward compatibility
US20020049894A1 (en) Method and apparatus for interfacing a processor to a coprocessor
KR100385495B1 (ko) 워드정렬브랜치타겟을가지는처리시스템
EP0227117A2 (en) Program skip operation control system
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
KR100322726B1 (ko) 번역 및 테스트를 위한 전문 밀리코드 명령
KR100317769B1 (ko) 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령
JPH07120284B2 (ja) データ処理装置
EP0206653A2 (en) Method and means for loading and storing data in a reduced instruction set computer
KR960011683A (ko) 연산 코드의 일부로 사용되는 부분을 포함한 오퍼랜드 필드를 갖는 명령어를 실행하는 마이크로프로세서
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
JP3504355B2 (ja) プロセッサ
US5754810A (en) Specialized millicode instruction for certain decimal operations
Lemieux Introduction to ARM thumb
Chalk et al. Fetching and Executing Instructions
JPH01184534A (ja) オペランドアクセス制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131017

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20141022

Year of fee payment: 14