KR19980702137A - 프로세서의 명령어 집합간의 변환 방법 및 장치 - Google Patents
프로세서의 명령어 집합간의 변환 방법 및 장치 Download PDFInfo
- Publication number
- KR19980702137A KR19980702137A KR1019970705532A KR19970705532A KR19980702137A KR 19980702137 A KR19980702137 A KR 19980702137A KR 1019970705532 A KR1019970705532 A KR 1019970705532A KR 19970705532 A KR19970705532 A KR 19970705532A KR 19980702137 A KR19980702137 A KR 19980702137A
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- instruction set
- decoder
- instructions
- set mode
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 36
- 238000004590 computer program Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 42
- 230000007704 transition Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 102100040051 Aprataxin and PNK-like factor Human genes 0.000 description 1
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 description 1
- 101000890463 Homo sapiens Aprataxin and PNK-like factor Proteins 0.000 description 1
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical compound [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229910052698 phosphorus Inorganic materials 0.000 description 1
- 239000011574 phosphorus Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
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/22—Microcontrol or microprogram arrangements
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/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
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
데이타 프로세서(104)에 대해 설명한다. 이 데이타 프로세서(104)는 제1명령어 집합의 제1명령어(212)와 제2명령어 집합의 제2명령어(213-219)을 디코딩 및 실행할 수 있으며, 이때 상기 제1명령어(212)와 상기 제2명령어(213-219)는 단일 컴퓨터 프로그램(210-211)으로부터 생긴다. 또한, 상기 데이타 프로세서(104)는 제1명령어 집합 모드에서 제1명령어 집합의 제1명령어(212)를 실행하고, 제1명령어 집합 모드에서 제1인터럽트 지시를 수신하며, 제2명령어 집합 모드에서 제1인터럽트 지시를 서비스하고, 제1명령어 집합 모드로 복귀하며, 상기 제1명령어 집합 모드에서 제2인터럽트 지시를 수신하고, 그리고 제1명령어 집합 모드에서 제2인터럽트 지시를 서비스한다.
Description
전통적으로, 프로세서는 특정 프로세서용 명령어 집합의 운영 체계 및 응용 프로그램만을 받아들일 수 있었다. 상기 프로세서는 다른 명령어 집합의 운영 쳬계 및 응용 프로그램을 받아들 일 수 없었다. 따라서, 프로세서 구조 및 명령어 집합이 새로운 프로세서의 기술적 진보를 포함하도록 수정되면, 운영 체계 및 응용 프로그램의 기존 소프트웨어 베이스는 이용될 수 없었다. 새로운 운영 체계와 응용 프로그램이 개발되어야 한다.
한가지 종래 프로세서는 정말로 하나의 명령어 집합(VAX 코드)의 응용 프로그램을 받아들일 수 있고, 그리고 또한 초기 명령어 집합(PDP-11 코드)의 응용 프로그램을 받아들일 수 있는 능력을 가지고 있었다. 하지만, 상기 종래 프로세서는 하나의 명령어 집합(VAX 코드)의 운영 체계만을 받아들일 수 있었고 다른 명령어 집합, 예컨대 PDP-11 코드의 운영 체계는 받아들 일 수 없었다. 또한, 종래 운영 쳬계는 하나의 명령어 집합, 즉 VAX 코드 또는 PDP-11 코드의 응용 프로그램만을 전적으로 받아들일 수 있었지만, 두 명령어 집합으로부터의 명령어를 가지고 있는 응용 프로그램을 받아들일 수는 없었다. 이전에 인식되지 않은 두가지 문제가 상기 종래 프로세서내에 존재하고 있었다. 그 한가지는, 상기 종래 프로세서가 하나의 명령어 집합(VAX 코드)의 운영 체계만을 받아들일 수 있었으므로, 전혀 새로운 운영 체계가 많은 비용이 들어 개발되었다. 보다 오래된 운영 체계의 기존 기능은 기술적 진보가 그 기능에 이점을 제공해 주지 않았더라도 이용될 수 없었다. 다른 한가지는, 상기 종래 프로세서가 하나의 명령어 집합 또는 다른 명령어 집합의 응용 프로그램만을 받아들일 수 있었으므로, 소프트웨어 개발자들은 전혀 새로운 응용 프로그램을 개발하는데 또는 새로운 명령어 집합에 의해 제공된 기술적 진보의 이점을 보류하는데 있어서 매우 많은 개발 비용을 초래하는 선택을 해야 하는 어려움이 있었다. 이들은 성능 이점에 의해 정당화된 새로운 명령어 집합을 구현하고 비용을 감안함으로써 정당화된 기존의 소프트웨어를 이용하는 옵션을 정말로 가지고 있었다.
이와같이, 복수의 운영 체계를 받아들일 수 있는 능력을 가지고 있는 프로세서가 필요하다. 또한, 복수의 명령어 집합으로부터의 명령어를 가지고 있는 응용 프로그램을 받아들 일 수 있는 능력을 가지고 있는 프로세서가 필요하다.
본 발명은 전자적 데이타 처리 장치 분야에 관한 것이다. 특히, 본 발명은 데이타 프로세서의 동작에 관한 것이다.
도 1은 본 발명의 제1실시예의 컴퓨터시스템을 블록도 형태로 보인 도면.
도 2은 본 발명의 제2실시예의 프로세서에 의해 실행되는 응용 프로그램을 보인 도면.
도 3은 본 발명의 제3실시예의 프로세서를 블록도 형태로 보인 도면.
도 4은 본 발명의 제4실시예의 프로세서를 블록도 형태로 보인 도면.
도 5은 본 발명의 제5실시예의 프로세서를 블록도 형태로 보인 도면.
도 6은 본 발명의 제6실시예의 프로세서를 블록도 형태로 보인 도면.
도 7은 본 발명의 제7실시예의 프로세서를 블록도 형태로 보인 도면.
새로운 데이타 프로세서에 대해 설명한다. 이 데이타 프로세서는 제1명령어 집합의 제1명령어와 제2명령어 집합의 제2명령어를 수신할 수 있는 버스 인터페이스 유닛을 구비하고 있다. 상기 제1명령어와 제2명령어는 단일 컴퓨터 프로그램으로부터 생긴다. 상기 데이타 프로세서는 또한 버스 인터페이스 유닛에 접속되어, 이 버스 인터페이스 유닛으로부터의 제1명령어 집합의 제1명령어와 제2명령어 집합의 제2명령어를 전송할 수 있는 내부 버스를 구비하고 있고, 그리고 또한 상기 내부 버스에 접속되어, 제1명령어 집합의 제1명령어와 제2명령어 집합의 제2명령어를 디코딩 및 실행할 수 있는 명령어 유닛을 구비하고 있다.
제1실시예 하에서, 상기 명령어 유닛은 상기 내부 버스에 접속되어, 상기 제1명령어와 상기 제2명령어를 저장할 수 있는 명령어 캐시; 이 명령어 캐시에 접속되어, 상기 제1명령어 집합의 상기 제1명령어를 디코딩할 수 있는 제1디코더; 상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 디코딩할 수 있는 제2디코더; 상기 제1디코더와 상기 제2디코더에 접속되어, 신호에 응답하여 상기 제1디코더와 상기 제2디코더로부터 선택할 수 있는 멀티플렉서; 및 상기 멀티플렉서에 접속되어, 상기 멀티플렉서로부터 선택된 디코딩 명령어를 실행할 수 있는 실행 유닛을 구비하고 있다. 상기 명령어 유닛은 또한 상기 제1디코더, 상기 제2디코터, 및 상기 멀티플렉서에 접속되어, 상기 제1디코더 또는 상기 제2디코더로부터 현재 모드를 전환하라는 명령어에 응답하여 상기 멀티플렉서측으로 상기 신호를 전송할 수 있는 명령어 집합 모드 선택기를 더 구비하고 있다.
제2실시예 하에서, 상기 명령어 유닛은 상기 내부 버스에 접속되어, 상기 제1명령어를 저장할 수 있는 제1명령어 캐시; 이 제1명령어 캐시에 접속되어, 상기 제1명령어를 디코딩할 수 있는 제1디코더; 이 제1디코더에 접속되어, 상기 제1명령어를 실행할 수 있는 제1실행 유닛; 상기 내부 버스에 접속되어, 상기 제2명령어를 저장할 수 있는 제2명령어 캐시; 이 제2명령어 캐시에 접속되어, 상기 제2명령어를 디코딩할 수 있는 제2디코더; 및 이 제2디코더에 접속되어, 상기 제2명령어를 실행할 수 있는 제2실행 유닛을 구비하고 있다. 상기 제1실행 유닛은 실행을 개시하라는 신호에 응답하고, 상기 제2실행 유닛은 실행을 개시하라는 신호에 응답한다.
제3실시예 하에서, 상기 명령어 유닛은 상기 내부 버스에 접속되어, 상기 제1명령어 집합의 상기 제1명령어를 상기 제2명령어 집합의 대응 명령어로 변환하는 변환기; 상기 내부 버스에 접속되어 그리고 상기 변환기에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 저장할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 저장할 수 있는 명령어 캐시; 및 상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 실행할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 실행할 수 있는 실행 유닛을 구비하고 있다. 상기 명령어 유닛은 또한 상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 디코딩할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 디코딩할 수 있는 디코더를 구비하고 있다. 상기 프로세서는 또한 마이크로코드 명령어를 저장하는 제어 판독 전용 메모리 디바이스를 구비하고 있을 수 있다. 상기 변환기는 상기 제1명령어 집합의 제1명령어를 제2명령어 집합의 대응 명령어로 변환하기 위해 마이크로코드 명령어를 수신한다.
프로세서내의 컴퓨터 프로그램의 명령어를 실행하는 방법에 대해서도 설명한다. 이 방법은 제1명령어 집합의 제1명령어를 실행하는 단계, 제1전환 명령어를 실행하는 단계, 제1명령어 집합 모드로부터 제2명령어 집합 모드로 전환하는 단계, 및 제2명령어 집합의 제2명령어를 실행하는 단계를 포함하고 있다. 상기 방법은 또한 제2전환 명령어를 실행하는 단계, 제2명령어 집합 모드로부터 제1명령어 집합 모드로 전환하는 단계, 및 제1명령어 집합의 제2명령어를 실행하는 단계를 포함하고 있을 수 있다. 또한, 상기 방법은 제1명령어 집합 모드에서 제명령어 집합의 제1명령어를 실행하는 단계, 제1명령어 집합 모드에서 제1인터럽트 지시를 수신하는 단계, 제2명령어 집합 모드에서 제1인터럽트 지시를 서비스하는 단계, 제1명령어 집합 모드로 복귀하는 단계, 제1명령어 집합 모드에서 제2인터럽트 지시를 수신하는 단계, 및 제1명령어 집합모드에서 제2인터럽트 지시를 서비스하는 단계를 포함하고 있을 수 있다. 제2명령어 집합 모드에서 제1인터럽트 지시를 서비스하는 단계는 제1인터럽트를 결정하는 단계, 제1인터럽트의 기술어(descriptor) 엔트리 수를 결정하는 단계, 상기 기술어 엔트리 수와 관련된 64 비트 인터셉트 게이트를 저장하는 단계로서 이 인터셉트 게이트가 메모리 주소를 참조하는 단계, 및 상기 메모리 주소에서 시작하는 제1사건에 대해 64 비트 명령어 집합 모드에서 서비스 루틴을 실행하는 단계를 포함하고 있을 수 있다. 제1명령어 집합 모드에서 상기 제2인터럽트 지시를 서비스하는 단계는 제2인터럽트를 결정하는 단계, 제2인터럽트의 기술어 엔트리 수를 결정하는 단계, 상기 기술어 엔트리 수와 관련된 기술어 게이트를 저장하는 단계로서 이 기술어 게이트가 메모리 주소를 참조하는 단계, 및 상기 메모리 주소에서 시작하는 제1사건에 대해 16 비트 및 32 비트 명령어 집합 모드에서 서비스 루틴을 실행하는 단계를 포함하고 있을 수 있다.
본 발명은 첨부 도면에 제한이 아닌 예로서 도시되어 있으며, 이때 이 도면에서 동일한 참조 부호는 유사한 소자를 나타낸다.
명령어 집합들간을 변환할 수 있는 새로운 데이타 프로세서에 대해 설명한다. 이하의 상세한 설명에서는, 본 발명의 철저한 이해를 제공하기 위해 다수의 특정 사항에 대해 설명한다. 하지만, 본 발명은 이들 특정 사항없이 실시될 수도 있음을 당업자는 이해할 수 있다. 기타 다른 예에서, 본 발명을 모호하게 하지 않도록 잘 알려진 방법, 절차, 구성 요소 및 회로에 대해서는 설명하지 않는다.
후술되는 상세한 설명의 일부는 컴퓨터 메모리내의 데이타 비트에 대한 동작의 알고리즘 및 심벌 표현에 의해 제시되어 있다. 이들 알고리즘 설명과 표현은 당업자에게 그 작업의 실체를 가장 효과적으로 전달해 줄 수 있도록 하기 위해 데이타 처리분야의 숙련자에 의해 사용되는 수단들이다. 여기에서 알고리즘은 일반적으로 원하는 결과를 가져오는 단계들의 일관성이 있는 시퀀스임을 알 수 있다. 이들 단계는 물리적인 양의 물리적인 처리를 필요로 하는 단계들이다. 통상적으로, 이들 양은 반드시 그런 것은 아니지만, 저장, 전송, 조합, 비교, 및 기타 다른 처리가 행해질 수 있는 전기 신호 또는 자기 신호의 형태를 가지고 있다. 이들 신호를 비트, 값, 요소, 기호, 문자, 용어, 수자 등으로서 참조하는 것이 대체로 일반적인 용도라는 이유 때문에 때때로 편리한 것으로 알려져 있다. 하지만, 이들 용어 및 이와 유사한 용어 모두는 적절한 물리적인 양과 관련되어 있어야 하고 그리고 이들 양에 적용되기에 단지 편리한 표시에 불과함을 주의해야 한다. 이하의 설명으로부터 명백한 바와같이 특별하게 달리 언급이 없는 한, 본 발명 전체에 걸쳐서 처리 또는 컴퓨팅 또는 산출 또는 결정 또는 디스플레이 등과 같은 용어를 이용하여 행해지는 설명은 컴퓨터 시스템, 또는 이와 유사한 전자 컴퓨팅 디바이스의 동작 및 처리를 말하며, 이때 이 디바이스는 컴퓨터 시스템의 레지스터와 메모리내의 물리적인(전자적인) 양으로서 표현되는 데이타를 처리하여, 상기 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 다른 그러한 정보 기억, 전송 또는 디스플레이장치내의 물리적인 양으로서 이와 유사하게 표현되는 기타 다른 데이타로 변환한다.
도 1에는 본 발명의 일실시예의 컴퓨터 시스템이 블록도 형태로 예시되어 있다. 상기 컴퓨터 시스템은 버스(100), 키보드 인터페이스(101), 외부 메모리(102), 대용량 기억 장치(103) 및 프로세서(104)를 구비하고 있다. 버스(100)는 단일 버스 또는 복수 버스의 조합일 수 있다. 일예로서, 버스(100)는 공업 규격 구조(ISA) 버스, 확장 공업 규격 구조(EISA) 버스, 시스템 버스, X 버스, PS/2 버스, 주변 장치 상호접속(PCI) 버스, 퍼스널 컴퓨터 메모리 카드 국제 협회(PCMCIA) 버스 또는 기타 다른 버스를 구비하고 있을 수 있다. 버스(100)는 또한 어떤 버스의 조합을 구비하고 있을 수 있다. 버스(100)는 상기 컴퓨터 시스템의 구성 요소들 사이에 통신 링크를 제공한다. 키보드 제어기(101)는 전용 디바이스일 수 있거나, 버스 제어기 또는 기타 다른 제어기와 같은 다른 디바이스내에 있을 수도 있다. 키보드 제어기(101)는 상기 컴퓨터 시스템에의 키보드의 접속을 가능하게 하고, 키보드로부터 상기 컴퓨터 시스템측으로 신호를 전송한다. 외부 메모리(102)는 동적 랜덤 액세스 메모리(DRAM) 디바이스, 정적 랜덤 액세스 메모리(SRAM) 디바이스, 또는 기타 다른 메모리 디바이스를 구비하고 있을 수 있다. 외부 메모리(102)는 대용량 기억 장치(103)와 프로세서(104)로부터의 정보를 프로세서(104)에 의한 사용을 위해 저장한다. 대용량 기억 장치(103)는 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM 디바이스, 또는 플래시 메모리 디바이스일 수 있다. 대용량 기억 장치(104)는 외부 메모리(102)에 정보를 제공한다. 프로세서(104)는 마이크로프로세서일 수 있고 그리고 다수의 명령어 집합으로부터의 명령어를 가지고 있는 응용 프로그램 또는 운영 체계와 컴퓨터 프로그램을 디코딩 및 실행할 수 있다.
도 2에는 본 발명의 제2실시예의 프로세서에 의해 실행되는 컴퓨터 프로그램이 예시되어 있다. 이 컴퓨터 프로그램은 제1명령어 집합의 명령어(210)와 제2명령어 집합의 명령어(211)를 포함하고 있다. 상기 제1명령어 집합은 복잡한 명령어 집합 컴퓨팅(CISC) 프로세서용 명령어 집합 또는 간략화된 명령어 집합 컴퓨팅(RISC) 프로세서용 명령어 집합일 수 있다. 상기 제1명령어 집합은 또한 16 비트 및 32 비트 명령어 집합 또는 64 비트 명령어 집합일 수도 있다. 상기 제2명령어 집합은 상기 제1명령어 집합과는 다른 명령어 집합이다. 제2명령어 집합은 16 비트 및 32 비트 명령어 집합일 수 있다. 상기 제1 및 제2명령어 집합은 기타 다른 종류의 명령어 집합일 수 있음을 알 수 있다.
명령어(210)는 전환 명령어(212)를 포함하고 있다. 프로세서(104)는 명령어(210)의 각각의 명령어를 디코딩 및 실행한다. 이 명령어(210)의 각각의 명령어는 제1명령어 집합으로부터의 명령어이다. 따라서, 프로세서(104)는 제1명령어 집합 모드에서 상기 각각의 명령어를 디코딩 및 실행한다. 프로세서(104)가 전환 명령어(212)를 디코딩 및 실행하면, 프로세서(104)는 제1명령어 집합 모드로부터 제2명령어 집합 모드로 전환된다. 이 실시예에서, 전환 명령어(212)는 값을 뒤에 가지고 있는 jmpx이다. 이 값은 프로세서(104)에 의한 디코딩 및 실행을 위해 다음 명령어의 위치를 지시하는 주소로 프로세서(104)에 의해 변환될 수 있다. 이 예에서, 주소는 4,000이다. 이때, 상기 프로세서는 명령어(211)의 시작을 또한 표시해 주는 주소(4,000)에서 시작하는 명령어를 디코딩 및 실행한다.
명령어(211)는 제2명령어 집합의 개별적인 명령어를 포함하고 있다. 제2명령어 집합 모드로 이미 전환되었으면, 프로세서(104)는 제2명령어 집합의 명령어에 대해 디코딩 및 실행을 진행한다. 프로세서(104)가 명령어(213)로부터의 이동을 디코딩 및 실행하면, 프로세서(104)는 제1명령어 집합의 특정 레지스터의 값을 제2명령어 집합의 특정 레지스터에 기록한다. 이하의 설명에서 사용된 용어 x86은 인텔 코포레이션에 의해 개발된 인텔 구조를 말한다.
x86mf 명령어는 특정 x86 정수 레지스터의 값을 특정 64 비트 정수 레지스터측으로 이동시킬 것을 프로세서(104)에게 명령한다. 이때, 프로세서(104)는 상기 64 비트 정수 레지스터의 값을 이용하여 동작을 수행한다. 프로세서(104)가 명령어(214)측으로의 이동을 디코딩 및 실행하면, 프로세서(104)는 제2명령어 집합의 특정 레지스터의 값을 제1명령어 집합의 특정 레지스터측으로 로드한다. 상기 x86mt 명령어는 특정 64 비트 정수 레지스터로부터 특정 x86 정수 레지스터측으로 값을 로드할 것을 프로세서(104)에게 명령한다. 프로세서(104)가 x86smf 명령어(215)를 디코딩 및 실행하면, 프로세서(104)는 특정 x86 세그먼트 선택기 또는 기술어 레지스터로부터의 값을 특정 64 비트 정수 레지스터측으로 로드한다. 이때, 프로세서(104)는 상기 특정 x86 세그먼트 선택기 또는 기술어 레지스터로부터의 값을 사용하여 동작을 수행한다. 프로세서(104)가 x86smt 명령어(216)를 디코딩 및 실행하면, 프로세서(104)는 특정 64 비트 정수 레지스터로부터 특정 x86 세그먼트 선택기 또는 기술어 레지스터측으로 값을 로드한다. 프로세서(104)가 x86fmf 명령어(217)를 디코딩 및 실행하면, 프로세서(104)는 상기 제2명령어 집합에 대해 특정 x86 부동 소수점 레지스터, 부동 소수점 제어, 상태 또는 예외 레지스터로부터 특정 부동 소수점 레지스터측으로 값을 로드한다. 이때, 프로세서(104)는 상기 특정 부동 소수점 레지스터, 부동 소수점 제어, 상태 또는 예외 레지스터로부터의 값을 사용하여 동작을 수행한다. 프로세서(104)가 x86fmt 명령어(218)를 디코딩 및 실행하면, 프로세서(104)는 제2명령어 집합의 특정 부동 소수점 레지스터로부터의 값을 특정 x86 부동 소수점 레지스터, 부동 소수점 제어, 상태 또는 예외 레지스터측으로 로드한다. 프로세서(104)가 전환 명령어(219)를 디코딩 및 실행하면, 상기 프로세서(104)는 제1명령어 집합 모드로 전환되어, 특정 주소에서부터 시작하는 명령어를 실행한다.
이 예에서, 전환 명령어(219)는 x86jmp이고 상기 특정 주소는 1011이다. 표 1에는 프로세서(104)에 의해 받아들일 수 있는 프로세서 명령어가 요약되어 있다. 표 1의 특정 명령어와 이들의 특징은 단지 예시용으로 설명되어 있다. 본 발명의 특징을 포함하고 있는 기타 명령어를 또한 이용할 수 있음을 알 수 있다.
EVRET | 사건 리턴 |
형식 | evret |
설명 | EVRET 명령어는 사건 처리기로부터 복귀하는데 사용된다. 이 명령어는 또한 하위 특권 레벨에서 처리를 디스페치하는데 사용될 수 있다. EVRET는 XIP1와 XPCR1에 포함되어 있는 목표 실행 환경을 XIP와 XPCR에 재저장한다. EVRET는 특권 명령어이다.EVTET는:1) 명령어 스트림으로부터의 명령어 페치에 영향을 미치는 XPCR 및 TLB로의 모든 변화는 다음 명령어 경계에 의해 알 수 있다;2) 명령어의 실제 실행에 영향을 미치는 XPCR 및 TLB로의 모든 변화는 다음 명령어 경계에 의해 알 수 있다.3) 피연산자 자원(후속되는 명령어에 대한 입력 피연산자일 수 있는 프로세서내의 자원)으로의 모든 변화는 다음 명령어 경계에 의해 알 수 있다.EVRET는 모든 이전 명령어가 완료되는 것을 보장한다. EVRET는 또한 후속되는 명령어 페치 및 실행이 XPCR과 TLB의 갱신 값을 사용하는 것을 보장한다. 주의 : EVRET는 메모리 펜스(fence) 동작을 수행하지 않으며, 또한 SRLZ 명령어 처럼 수행되는 풀 시리얼라이제이션(full serialization)이 아니다.x86 호환 구현시에, EVRET는 XPCR1.ISA에 의해 특정된 x86-ISA 또는 64 비트 ISA에 대한 제어로 복귀한다. 제어가 x86 ISA에서 재개되고 목표 XIP가 CS 제한을 초과하면, x86 GP 폴트(fault)가 목표 x86 ISA 명령어에 대해 보고된다. XPCR1.d86i 또는 XPCR.d86r이 설정되면, EVRET가 완료되고 디스에이블된 x86 ISA 또는 디스에이블된 x86 레지스터 폴트가 상기 목표 명령어에 대해 발생된다.이와 유사하게, 제어가 64 비트 ISA에서 재개되고 XPCR1.dxi가 설정되면, EVRET가 완료되고 디스에이블된 64 비트 ISA 폴트가 상기 목표 명령어에 대해 발생된다.주의: 64 비트 사건 전달과 EVRET는 CS의 이전 값을 세이브 또는 재저장하지 않는다. 사건 처리기내에서 수정되면 CS의 세이브/복원은 스프트웨어의 일이다. |
예외 | 특권 명령어 폴트, GP 폴트, 디스에이블된 x86 ISA 폴트, 디스에이블된 64비트 ISA 폴트, 디스에이블된 x86 레지스터 폴트, 예약된 필드 폴트 |
x86JMP | x86 ISA로의 점프 및 변화 |
형식 | x86jmp re117x86jmp isrcl |
설명 | 프로세서는 x86 명령어 집합으로 실행을 전환하고, 목표 주소의 다음 명령어를 실행한다. 비교 형태는 현재의 XIP 및 코드 세그먼트 베이스, 즉 XIP=XIP+rel17*4-CS_base에 대해 64 비트 ISA의 목표 주소를 산출한다. 목표 명령어 포인터는 유효 주소 공간으로 변환됨에 주의하자. rel17은 부호 확장되고 rel17에는 4가 곱해진다. 상기 목표 XIP는 32 비트로 절단된다.레지스터 형태는 isrcl[47:32]의 16 비트 선택기에 의해 특정된 코드 세그먼트와 iscr1[31:0]에서 특정된 32비트 오프셋을 로드함으로써 원격 제어 전송을 수행한다. EFLAGS.VM86이 설정되면, 프로세서는 CS 베이스를 로드하기 위해 16 비트 선택기를 4비트 레프트 시프트시킨다. EFLAGS.VM86이 제로이면, 프로세서는 LDT/GDT용 CS 기술어를 로드하고 세그먼테이션 보호 체크를 수행한다. 목표 XIP는 32비트로 절단된다.X86JMP는 어느 특권 레벨에서 수행될 수 있고 상기 프로세서의 특권 레벨을 변화시키지 않는다.목표 XIP가 CS 한계를 초과하면, x86 GP 폴트가 목표 명령어에 대해 보고된다. CS 세그먼트 보호 폴트는 목표 명령어에 대해 보고된다. 게이트 기술어는 허용되지 않으며 목표 명령어에 대한 GP 폴트를 일으킨다. XPCR.d86i 또는 XPCR.d86r이 설정되면, 명령어는 무효로 되고, 디스에이블된 x86 ISA 폴트 또는 디스에이블된 x86 레지스터 폴트는 X86JMP 명령어에 대해 발생된다. 점프 브레이크포인트가 인에이블되면, 점프 디버그 트랩이 상기 명령어 완료 후에 행해진다.64비트 전용 서브세트 구현시에, X86JMP에 의해 예약된 옵코드 폴트가 생긴다. |
예외 | 디스에이블된 x86 ISA 폴트, 디스에이블된 x86 레지스터 폴트, GP 폴트, 예약된 옵코드 폴트, 디버그 점프 브레이크포인트 |
x86MT | x86 레지스터로의 이동 |
형식 | x86mt isrc2,dest |
설명 | dest에 의해 특정된 x86 32비트 정수 레지스터가 64 비트 확장 정수 레지스터(isrc2)로부터 로드된다. x86 32비트 정수 레지스터로의 전송은 isrc2의 하위 32 비트로부터 절단된다. x86 16비트와 8비트 서브레지스터(AX,AL 등)는 별도로 액세스될 수 없다.x86 레지스터가 XPCR.d86r로 디스에이블되면, 디스에이블된 x86 레지스터 폴트가 발생된다. 예약된 레지스터에 대한 액세스에 의해, 예약된 옵코드 폴트가 생긴다. 64비트 전용 서브세트 구현시에, X86MT에 의해 예약된 옵코드 폴트가 생긴다. |
예외 | 디스에이블된 x86 레지스터 폴트,특권 명령어 폴트,예약된 옵코드 폴트 |
x86MT | x86 레지스터로의 이동 |
형식 | x86mf src2,idest |
설명 | src2에 의해 특정된 x86 32 비트 정수 레지스터는 64비트 확장 정수 레지스터(idest)에 기록된다. 목적 레지스터는 64비트로 제로 확장된다. x86 8비트와 16 비트 서브 레지스터(AX, AL 등)는 별도로 액세스될 수 없다.x86 레지스터가 XPCR.d86r에 의해 디스에이블되면, 디스에이블된 x86 레지스터 폴트가 발생된다. 예약된 레지스터에 대한 액세스에 의해, 예약된 옵코드 디폴트가 생긴다. 64비트 전용 서브세트 구현시에, X86MF에 의해, 예약된 옵코드 폴트가 생긴다. |
예외 | 디스에이블된 x86 레지스터 폴트예약된 옵코드 폴트 |
x86SMT | x86 세그먼트 레지스터로의 이동 |
형식 | x86smt isrc2,dest |
설명 | dest에 의해 특정된 x86 64 비트 세그먼트 선택기 또는 기술어 레지스터가 64 비트 확장 정수 레지스터(isrc2)로부터 로드된다. 전송은 목적 레지스터 크기로 절단된다.이 명령어는 커늘(kernel) 모드에서 실행될 수 있을 뿐이고 특권 명령어 폴트가 생긴다.x86 레지스터가 XPCR.d86r에 의해 디스에이블되면, 디스에이블된 x86레지스터 폴트가 발생된다. 예약된 레지스터에의 액세스에 의해, 예약된 옵코드 폴트가 생긴다. 64비트 전용 서브세트 구현시에, x86SMT에 의해 예약된 옵코드 폴트가 생긴다. |
예외 | 디스에이블된 x86 레지스터 폴트, 특권 명령어 폴트, 예약된 옵코드 폴트. |
x86SMF | x86 세그먼트 레지스터로부터의 이동 |
형식 | x86smf src2,idest |
설명 | src2에 의해 특정된 x86 64 비트 세그먼트 선택기 또는 기술어 레지스터가 64 비트 확장 정수 레지스터(idest)로 로드된다. 전송은 16비트 또는 32 비트에서부터 64비트까지 제로 확장된다.x86 레지스터가 XPCR.d86r에 의해 디스에이블되면, 디스에이블된 x86레지스터 폴트가 발생된다. 예약된 레지스터에의 액세스에 의해, 예약된 옵코드 폴트가 생긴다. 64비트 전용 서브세트 구현시에, x86SMF에 의해, 예약된 옵코드 폴트가 생긴다. |
예외 | 디스에이블된 x86 레지스터 폴트, 예약된 옵코드 폴트. |
x86SMT | x86 레지스터로의 부동 소수점 이동 |
형식 | x86smt fsrc2,dest |
설명 | dest에 의해 특정된 x86 80비트 부동 소수점 레지스터 또는 32/16 비트 플로팅 부동 소수점 제어, 상태 또는 예외 레지스터가 확장 부동 소수점 레지스터(fsrc2)로부터 로드된다. Dest는 절대 레지스터(id)이지 스택 레지스터가 아니다.확장 80 비트 부동 소수점 레지스터로부터 x86 부동 소수점 스택으로의 전송은 x86 80비트 부동 소수점 형식으로 변환된다. 소프트웨어는 먼저 전송이 수행되기 전에 비규준화된 단일 또는 이중 정밀도를 규준화하기 위해 확장 레지스터상에 FNORM을 발생해야 한다.16/32비트 부동 소수점 제어, 상태 및 예외 레지스터로의 전송은 fsrc2의 유효한 하위 32/16 비트로부터 절단된다.x86 부동 소수점 레지스터가 XPCR.d86f에 의해 디스에이블되면, 디스에이블된 x86 부동 소수점 레지스터 폴트가 발생된다. 확장 부동 소수점 레지스터가 XPCR.dxf에 의해 디스에이블되면, 디스에이블된 부동 소수점 폴트가 발생된다.예약된 레지스터에의 액세스에 의해, 예약된 옵코드 폴트가 생긴다. 64비트 전용 서브세트 구현시에, x86FMT에 의해, 예약된 옵코드 폴트가 생긴다. |
예외 | 디스에이블된 부동 소수점 폴트, 디스에이블된 x86 부동 소수점 레지스터 폴트, 예약된 옵코드 폴트. |
x86FMF | x86 레지스터로부터의 부동 소수점 이동 |
형식 | x86fmf src2,fdest |
설명 | src2에 의해 특정된 x86 80비트 부동 소수점 레지스터 또는 32/16 비트 부동 소수점 제어, 상태 또는 예외 레지스터가 80비트 확장 부동 소수점 레지스터(fdest)내로 로드된다. Src2는 절대 레지스터(id)이지 스택 레지스터가 아니다.x86 80비트 부동 소수점 스택으로부터 상기 확장 레지스터로 전송된 데이타는 확장 레지스터 형식으로 변환된다.16/32비트 부동 소수점 제어, 상태 또는 예외 레지스터로부터의 전송은 64비트로 제로 확장된 후, 유효 fdest내에 기록된다. fdest의 부호 지수 필드는 제로로 기록된다.x86 부동 소수점 레지스터가 XPCR.d86f에 의해 디스에이블되면, 디스에이블된 x86 부동 소수점 레지스터 폴트가 발생된다. 확장 부동 소수점 레지스터가 XPCR.dxf에 의해 디스에이블되면, 디스에이블된 부동 소수점 폴트가 발생된다.예약된 레지스터에의 액세스에 의해, 예약된 옵코드 폴트가 생긴다. 64비트 전용 서브세트 구현시에, x86FMF에 의해, 예약된 옵코드 폴트가 생긴다. |
예외 | 디스에이블된 부동 소수점 폴트, 디스에이블된 x86 부동 소수점 레지스터 폴트, 예약된 옵코드 폴트. |
JMPX | 64 비트 ISA로의 점프 및 변화 |
형식 | jmpx rel32/16jmpx r/m32/16 |
설명 | 프로세서는 점프하고 실행은 64비트 ISA의 목표 명령어에서 시작된다. 2가예외지 형식, 즉 레지스터/메모리 간접 형식 및 비교 형식이 존재한다.비교 형식은 현재의 XIP와 코드 세그먼트 베이스에 대해 64비트 ISA의 목표 주소, 즉 XIP=XIP+rel32/16 + CS_base를 계산한다. 목표 명령어 포인터는 선형 주소 공간에서 변환됨에 주의하자. 목표 XIP는 32비트로 절단된다.간접 형식은 r/m32/16에 의해 특정된 레지스터 또는 메모리 위치를 판독하고 선형 목표 명령어 포인터를 그 값으로 설정한다. 목표 XIP는 32비트로 절단된다.JMPX는 어느 특권 레벨에서 수행될 수 있고 프로세서의 특권 레벨을 변화시키지 않는다. JMPX는 모든 현저한 x86 부동 소수점 동작이 완료되는 것을 보장한다.XPCR.dxi가 설정되면, 명령어는 무효로 되고 디스에이블된 64비트 ISA 폴트가 발생된다. 64 비트 확장이 디스에이블되면, JMPX는 오류 x86 ISA 옵코드가 된다. 점프 브레이크포인트가 인에이블되면, 점프 디버그 트랩이 명령어가 완료된 후에 행해진다. |
예외 | 디스에이블된 64 비트 ISA 폴트, 오류 옵코드 폴트, 디버그 점프 브레이크포인트 |
IRET | 인터럽트 리턴 |
형식 | iret |
설명 | 64 비트 확장이 인에이블되면, IRET는 IRET가 실행되기 전에 스택 프레임에서 XPCR.ISA에 의해 특정된 x86-ISA 또는 64비트 ISA에 대한 제어로 리턴한다. IRET는 아래에 보인 확장된 x86 스택 프레임을 사용한다.64비트 확장이 인에이블되면, IRET는 다음의 수정으로 P5 PRM에서 특정된 바와같이 수행된다.1) XPCR[63:16]은 EFLAGS 대신에 팝된다. XPCR[15:2]는 수정되지 않은채 유지된다.2) XPCR[1:0]이 원래 환경의 목표 CPL, 즉 팝된 CS 선택기의 하위 2비트로 설정된다.3) XIP[31:0]은 EIP 대신에 팝된다. XIP[63:32]는 제로로 설정된다.제어가 x86ISA에서 재개되고, 목표 XIP가 CS 한계를 초과하면, x86 GPF 폴트가 IRET 명령어에 대해 보고된다. 새로운 XPCR.d86i 또는 XPCR.d86r이 설정되면, IRET는 무효로 되고 디스에이블된 x86 ISA 폴트 또는 디스에이블된 x86 레지스터 폴트가 발생된다.이와 유사하게, 제어가 64 비트 ISA에서 재개되고 새로운 XPCR.dxi가 설정되면, IRET는 무효로 되고 디스에이블된 64 비트 ISA폴트가 발생된다.IRET는 명령어 실행을 시리얼화한다. |
예외 | 디스에이블된 64비트 ISA 폴트, 디스에이블된 x86 ISA 폴트, 디스에이블된 x86 레지스터 폴트, GP 폴트 |
이 실시예에서, 상기 프로세서는 별개의 두 세트의 레지스터, 즉 제1명령어집합 모드용의 하나의 세트와 제2명령어 집합 모드용의 하나의 세트를 가지고 있다. x86mt 명령어, x86mf 명령어, x86smt 명령어, x86smf 명령어, x86fmt 명령어, 및 x86fmf 명령어는 상기 두 세트의 레지스터 사이에서 값을 전송하도록 프로세서에게 명령하는데 사용된다. 다른 실시예 하에서, 상기 프로세서는 제1명령어 집합 모드와 제2명령어 집합 모드용으로 사용되는 하나의 세트의 레지스터만을 가지고 있다. 하나의 세트의 레지스터를 가지고 있는 이 상황에서, x86mt 명령어, x86mf 명령어, x86smt 명령어, x86smf 명령어, x86fmt 명령어, 및 x86fmf 명령어는 사용되지 않는다.
본 발명의 제2실시예 하에서, 프로세서(104)는 제1명령어 집합 또는 제2명령어 집합에 속하는 운영 체계를 받아들일 수 있다. 이 예에서, 제1명령어 집합은 x86 코드이고, 제2명령어 집합은 64 비트 코드이다. 용어 x86 코드는 마이크로프로세서의 인텔 구조 패밀리, 예컨대 인텔 코포레이션에 의해 제조된 8086, 80286, 80386, 80486, 및 펜티엄 프로세서에 의해 사용되는 명령어 집합을 말한다. x86 코드의 운영 체계의 일예는 MS-DOS이다. 프로세서(104)가 초기에 턴온되면, 프로세서(104)는 제1명령어 집합 모드에서 시작하여 제1명령어 집합의 운영 체계를 받아들 수 있다. MS-DOS와 같은 제1명령어 집합의 운영 체계가 사용되면, 프로세서(104)는 제1명령어 집합 모드를 유지한다. 한편, 제2명령어 집합의 운영 체계가 사용되면, 이 운영 체계는 jmpx 프로세서 명령어를 가지게 된다. 상기 jmpx 명령어의 수신시에, 프로세서(104)는 제2명령어 집합 모드로 전환된다. 이때, 프로세서(104)는 제2명령어 집합 모드에서 상기 운영 체계의 나머지를 실행한다.
이 실시예에서, 프로세서(104)는 또한 제1명령어 집합과 제2명령어 집합으로부터의 명령어를 가지고 운영 체계로부터 동작할 수 있다. 프로세서(104)는 제1명령어 집합 모드를 사용하여 제1명령어 집합으로부터의 명령어를 실행할 수 있고, 또한 제2명령어 집합 모드를 사용하여 제2명령어 집합으로부터의 명령어를 실행할 수 있다. 제1명령어 집합 모드로부터 제2명령어 집합 모드로의 전환 또는 제2명령어 집합 모드로부터 제1명령어 집합 모드로의 전환은 프로세서(104)와 상기 컴퓨터 시스템의 나머지 부분의 재부팅없이도 행해질 수 있다.
프로세서(104)가 초기에 파워 업되면, 프로세서(104)는 제1명령어 집합의 운영 체계 또는 제2명령어 집합의 운영 체계로부터 동작할 수 있다. 또한, 프로세서(104)는 제1명령어 집합와 제2명령어 집합으로부터의 명령어를 가지고 있는 단일의 통일 운영 체계로부터 동작할 수 있다. 이때, 프로세서(104)는 제1명령어 집합의 응용 프로그램을 실행할 수 있다. 제1명령어 집합의 응용 프로그램의 실행중에, 프로세서(104)는 사건 지시를 수신할 수 있다. 이 사건은 예외, 머신 체크 또는 인터럽트일 수 있다. 이 사건 지시의 수신후에, 프로세서(104)는 특정 사건의 성질을 결정한다. 프로세서(104)는 상기 컴퓨터 시스템의 프로그래머블 인터럽트 제어기로부터 사건을 생성하는 디바이스의 확인을 요구함으로써 상기 특정 사건의 성질을 결정한다. 각각의 디바이스가 사건 라인과 이 라인에 관련된 개수를 가지고 있다. 이때, 프로세서(104)는 상기 특정 사건에 대한 기술어 엔트리 수를 결정한다. x86 운영 체계 또는 제2명령어 집합의 운영 체계의 일부분과 더불어 어떤 x86 운영 체계 구성을 가지고 있는 운영 체계에서, 기술어 엔트리 수는 상기 프로그래머블 인터럽트 제어기로부터의 정보를 요구함으로써 결정된다. 상기 프로그래머블 인터럽트 제어기는 상기 인터럽트 서비스 루틴 레지스터의 최상위 액티브 비트의 3비트 2진값을 초기화 명령어 워드 레지스터에 저장된 베이스 주소에 더한다. 프로세서(104)는 상기 기술어 엔트리 수를 수신하고 상기 디스크립트 사건 수에 4를 곱함으로써 상기 사건에 대한 실제 시작 메모리 주소를 결정한다. 이때, 프로세서(104)는 기술어 테이블로부터 시작 메모리 주소의 게이트를 검색하고 이 게이트의 명령어 또는 상기 게이트에 의해 참조된 명령어를 실행한다.
제2명령어 집합의 운영 체계의 일부와 더불어 어떤 x86 운영 체계 구성을 가지고 있는 운영 체계에서, 상기 게이트는 64 비트 인터셉트를 가지고 있을 수 있다. 상기 게이트가 64 비트 인터셉트를 가지고 있으면, 상기 64 비트 인터셉트는 제1명령어 집합 모드로의 전환을 위해 제2명령어 집합의 명령어 또는 특정 비트 패턴와 더불어 jmpx 프로세서 명령어를 포함하게 된다. 또한, 제2명령어 집합 또는 특정 비트 패턴의 jmpx 명령어와 운영 체계는 64 비트 인터셉트 게이트의 기준 주소를 가지고 있는 메모리의 어느 위치에 위치될 수 있다. 상기 jmpx 명령어에 의해 프로세서(104)는 제2명령어 집합 모드로 전환될 수 있다. 또한, 상기 특정 비트 패턴에 의해 프로세서(104)는 제2명령어 집합 모드로 전환될 수 있다. 이때, 프로세서(104)는 64 비트 인터셉트의 제2명령어 집합의 명령어를 실행한다. 상기 64 비트 인터셉트의 제2명령어 집합의 명령어는 상기 사건용 사건 처리 루틴이며, 이 루틴은 상기 제2명령어 집합의 운영 체계의 일부를 포함하고 있다. 이 방법으로, 프로세서(104)는 제1명령어 집합의 운영 체계의 일부로부터 제2명령어 집합의 운영 체계의 일부로 전환되고, 제1명령어 집합 모드에서 제2명령어 집합 모드로 전환된다. 상기 사건 처리 루틴의 끝부분에서, 프로세서(104)는 evret 명령어를 수신한다. 이 evret 명령어는 프로세서(104)를 사건 처리 루틴으로부터 응용 프로그램으로 복귀시키고 목표 실행 환경을 재저장한다.
한편, 상기 게이트가 64 비트 인터셉트를 가지고 있지 않고 대신에 x86 게이트이면, 프로세서(104)는 제1명령어 집합 모드를 유지하고 제2명령어 집합 모드로 전환되지 않는다. 이 경우에, 상기 게이트에 의해 전환은 제2명령어 집합 모드로 행해지지 않는다. x86 인터럽트, 호출 또는 작업 전환 기구가 사용된다.
또한, 프로세서(104)는 제2명령어 집합의 응용 프로그램을 실행할 수 있다. 이 응용 프로그램을 실행하는 동안에, 프로세서(104)는 이전의 예에서와 마찬가지로 사건 지시를 수신할 수 있다. 상기 사건은 예외, 머신 체크 또는 인터럽트일 수 있다. 상기 사건 지시를 수신한 후에, 프로세서(104)는 특정 시건의 발생원을 결정한다. 프로세서(104)는 상기 컴퓨터 시스템의 프로그래머블 인터럽트 제어기로부터 사건을 생성하는 디바이스의 확인을 요구함으로써 특정 사건의 발생원을 결정한다. 각각의 디바이스는 사건 라인과 이와 관련된 수를 가지고 있다. 이때, 프로세서(104)는 특정 사건에 대한 기술어 엔트리 수를 결정한다.
상기 기술어 엔트리 수는 상기 프로그래머블 인터럽트 제어기로부터 정보를 요구함으로써 결정될 수 있다. 상기 프로그래머블 인터럽트 제어기는 인터럽트 서비스 루틴 레지스터의 최상위 액티브 비트의 3비트 2진 값을 초기화 명령어 워드 레지스터에 저장된 베이스 주소에 더한다. 또한, 상기 프로그래머블 인터럽트 제어기는 특정 사건의 성질을 지시하는 정보를 전송한다. 상기 정보는 프로세서(104)내의 제어 레지스터 또는 복수의 제어 레지스터에 프로세서(104)에 의해 저장된다. 프로세서(104)는 기술어 엔트리 수를 수신하고 상기 기술어 사건 수에 4를 곱함으로써 상기 사건의 처리기 선택기의 실제 시작 메모리 주소를 결정한다. 이때, 프로세서(104)는 기술어 테이블로부터 시작 메모리 주소의 처리기 선택기를 검색하고 이 처리기 선택기에서 명령어를 실행한다. 상기 처리기 선택기에서의 명령어 실행시에, 프로세서(104)는 상기 특정 사건의 성질을 지시하는 프로세서(104)내의 하나 이상의 제어 레지스터로부터의 하나의 값 또는 복수의 값을 검색한다. 상기 하나의 값 또는 복수의 값으로부터, 프로세서(104)는 특정 사건에 대한 상기 처리기의 실제 시작 메모리 주소를 결정한다. 이때, 프로세서(104)는 시작 메모리 주소에서 처리를 검색하고 상기 처리기의 명령어 또는 상기 처리기에 의해 참조된 명령어를 실행한다. 프로세서(104)는 제2명령어 집합 모드에서 명령어를 실행한다.
도 3에는 본 발명의 제3실시예의 프로세서가 블록도 형태로 도시되어 있다. 이 실시예 하에서, 프로세서(104)는 명령어 캐시(320), 디멀티플렉서(321), x86 디코더(322), 64 비트 디코더(323), 멀티플렉서(324), 명령어 집합 모드 선택기(325), 실행 유닛(326), 레지스터(327), 및 레지스터(328)를 구비하고 있다. 명령어 캐시(320)는 외부 메모리에 접속되어, 이 외부 메모리로부터 명령어를 수신한다. 이 명령어는 제1명령어 집합의 명령어 또는 제2명령어 집합의 명령어일 수 있다. 명령어 캐시(320)는 디코딩 및 실행될 때까지 상기 명령어를 저장한다. 명령어를 디코딩하기에 적절한 시간에, 명령어 캐시(320)의 각각의 명령어는 디멀티플렉서(321)를 통해 전송되다. 디멀티플렉서(321)는 제1명령어 집합 모드에서 명령어 캐시(320)로부터의 명령어의 디코딩하는 x86 디코더(322)를 선택하거나, 제2명령어 집합 모드에서 명령어 캐시(320)로부터의 명령어를 디코딩하는 64 비트 디코더(323)를 선택한다. 디멀티플렉서(321)의 선택은 명령어 집합 모드 선택기(325)로부터 디멀티플렉서(321)에 의해 수신된 신호를 기초로 하고 있다. 명령어 집합 모드 선택기(325)로부터의 제1신호에 의해 디멀티플렉서(321)는 x86 디코더(322)와 제1명령어 집합 모드를 선택할 수 있다. 명령어 집합 모드 선택기(325)로부터의 제2신호에 의해, 디멀티플렉서(321)는 64 비트 디코더(323)와 제2명령어 집합 모드를 선택할 수 있다. 프로세서(104)가 초기에 파워 업되면, 프로세서(104)는 초기화 절차에 따라 제1명령어 집합 모드 또는 제2명령어 집합 모드에서 파워 업될 수 있다. 초기값이 명령어 집합 모드 선택기(325)측으로 전송되며, 명령어 집합 모드 선택기(325)는 상기 값에 응답하여 제1신호 또는 제2신호를 전송한다.
이 예에서, 프로세서(104)는 제1명령어 집합 모드에서 파워 업된다. 따라서, 디멀티플렉서(321)는 초기에 명령어 집합 모드 선택기(325)로부터 제1신호를 수신하고 x86 디코더(322)를 선택한다. 디멀티플렉서(321)를 통해 명령어 캐시(320)로부터 전송된 명령어는 x86 디코더(322)에 의해 디코딩된다. 이때, 명령어는 멀티플렉서(324)측으로 전송된다. 디멀티플렉서(321)처럼, 멀티플렉서(324)도 또한 명령어 집합 모드 선택기(325)에 의해 제어된다. 멀티플렉서(324)가 명령어 집합 모드 선택기(325)로부터 제1신호를 수신하면, 멀티플렉서(324)는 x86 디코더(322)를 입력으로서 선택한다. 한편, 멀티플렉서(324)가 명령어 집합 모드 선택기(325)로부터 제2신호를 수신하면, 멀티플렉서(324)는 64비트 디코더(323)를 입력으로서 선택한다.
멀티플렉서(324) 이후에, 상기 명령어는 실행 유닛(326)측으로 전송된다. 실행 유닛(326)은 디코딩된 명령어를 실행한다. 실행 유닛(326)이 x86 디코더(322) 또는 64비트 디코더(323)로부터 명령어를 검색할 수 있다. 실행 유닛(326)은 또한 프로세서(104)가 제1명령어 집합 모드일 때의 값을 저장하는 레지스터(327)에 접속되어 있다. 실행 유닛(326)은 또한 프로세서(104)가 제2명령어 집합 모드일 때의 값을 저장하는 레지스터(328)에 접속되어 있다. 따라서, x86mf, x86smf, 및 x86fmf 명령어에 응답하여, 실행 유닛(436)은 제2명령어 집합의 프로세서 명령어를 실행하는 동안에 사용하기 위해 레지스터(327)로부터 값을 검색할 수 있다. 마찬가지로, x86mt, x86smt, 및 x86fmt 명령어에 응답하여, 실행 유닛(326)은 또한 값을 레지스터(327)에 저장할 수 있다. x86 디코더(322)가 jmpx 명령어를 디코딩하면, x86 디코더(322)는 명령어 집합 모드 선택기(325)측으로 전환 명령어를 보낸다. 이 신호에 응답하여, 명령어 집합 모드 선택기(324)는 제2신호를 디멀티플렉서(321)와 멀티플렉서(324)측으로 전송한다. 이 제2신호에 의해, 디멀티플렉서(321)는 명령어 캐시(320)로부터의 명령어를 64비트 디코더(323)측으로 전송할 수 있다. 또한, 제2신호에 의해 멀티플렉서(324)는 입력(64)으로서 64 비트 디코더(323)를 선택할 수 있다. 64 비트 디코더(323)로부터의 명령어는 멀티플렉서(324)로부터 실행 유닛(326)측으로 전송된다. 64 비트 디코더(323)가 x86jmp 명령어를 디코딩하면, 이 64 비트 디코더(323)는 전환 신호를 명령어 집합 모드 선택기(325)측으로 전송한다. 이 제1신호에 응답하여, 명령어 집합 모드 선택기(325)는 제1신호를 디멀티플렉서(321)와 멀티플렉서(324)측으로 전송한다. 이 제1신호에 의해, 디멀티플렉서(321)는 x86 디코더(322)를 선택할 수 있고 멀티플렉서(324)는 x86 디코더(322)를 입력으로서 선택할 수 있다. 이 방법으로, 프로세서(104)는 제1명령어 집합 모드로 다시 복귀한다.
프로세서(104)는 또한 jmpx 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 jmpx 디스에이블 레지스터는 x86 디코더(322) 또는 명령어 집합 모드 선택기(325)에 접속되어 있다. 이 jmpx 디스에이블 레지스터가 설정되면, 상기 jmpx 명령어는 무효로 되고 jmpx명령어에 의해 디스에이블된 64 비트 ISA 폴트가 생긴다. 프로세서(104)는 jmpx 명령어에 응답하여 제2명령어 집합 모드로 전환되지 않는다. 마찬가지로, 프로세서(104)는 또한 x86jmp 디스에이블 레지스터를 구비하고 있을 수 있다. 이 x86jmp 디스에이블 레지스터는 64 비트 디코더(323) 또는 명령어 집합 모드 선택기(325)에 접속되어 있다. 이 x86jmp 디스에이블 레지스터가 설정되면, x86jmp 명령어는 무효로 되고 x86jmp 명령어에 의해 디스에이블된 64 비트 x86 ISA 폴트가 생긴다. 프로세서(104)는 x86jmp 명령어에 응답하여 제1명령어 집합 모드로 전환되지 않는다.
또한, 레지스터(327)는 프로세서(104)가 상기 제1명령어 집합 모드일 때의 값을 저장하고, 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장한다. 이 경우에, 레지스터(327)는 레지스터(328)의 기능을 수행하고, 레지스터(328)가 제거되어 레지스터(327)내에 포함되게 된다. 이와같이, 한 세트의 레지스터를 사용하므로, x86mt, x86mf, x86smf, x86fmt 및 x86fmf 명령어는 사용되지 않게 된다.
도 4에는 본 발명의 제4실시예의 프로세서가 블록도 형태로 도시되어 있다. 이 실시예 하에서, 프로세서(104)는 명령어 집합 모드 선택기 상태 머신(430), 명령어 캐시(432), 디코더(433), 실행 유닛(434), 레지스터(435), 명령어 캐시(436), 디코더(437), 실행 유닛(438), 및 레지스터(439)를 구비하고 있다. 상태 머신(430)은 외부 메모리로부터 명령어를 수신한다. 상태 머신(430)은 실행 유닛(434) 또는 실행유닛(438)으로부터 수신된 신호를 기초로 명령어 캐시(432) 또는 명령어 캐시(436)를 선택한다. 실행 유닛(438)이 상태 머신(430)측으로 제1신호를 전송하면, 상태 머신(430)은 명령어 캐시(432)를 선택하고 메모리로부터의 명령어를 명령어 캐시(432)측으로 전송한다. 프로세서(104)는 제1명령어 집합 모드에서 명령어를 디코딩 및 실행한다. 실행 유닛(436)이 상태 머신(430)측으로 제2신호를 전송하면, 상태 머신(430)은 명령어 캐시(436)를 선택하고 메모리로부터의 명령어를 명령어 캐시(436)측으로 전송한다. 이때, 프로세서(104)는 제2명령어 집합 모드에서 명령어를 디코딩 및 실행한다.
제3실시예처럼, 프로세서(104)가 파워 업되면, 프로세서는 초기화 절차에 따라 제1명령어 집합 모드 또는 제2명령어 집합 모드에서 파워 업될 수 있다. 프로세서(104)가 제1명령어 집합 모드에서 파워 업되면, 제1신호가 초기에 실행 유닛(438)으로부터 상태 머신(430)측으로 전송된다. 한편, 프로세서(104)가 제2명령어 집합 모드에서 파워 업되면, 제2신호가 실행 유닛(438)으로부터 상태 머신(430)측으로 전송된다.
이 실시예에서, 프로세서(104)는 제1명령어 집합 모드에서 파워 업된다. 따라서, 초기값이 실행 유닛(438)측으로 전송되며, 이에따라 실행 유닛(438)은 상태 머신(430)측으로 제1신호를 전송할 수 있다. 외부 메모리로부터의 명령어는 상태 머신(430)을 통해 명령어 캐시(432)측으로 전송된다. 명령어 캐시(432)는 상기 명령어가 프로세서(104)에 의해 디코딩 및 실행될 때까지 제1명령어 집합의 명령어를 저장한다. 적절한 시간에, 각각의 명령어가 명령어 캐시(432)로부터 디코더(433)측으로 전송된다. 디코더(433)는 명령어 캐시(432)로부터의 명령어를 디코딩한다. 명령어 캐시(432)로부터의 명령어는 제1명령어 집합의 명령어이다. 제1명령어 집합의 명령어의 디코딩 후에, 실행 유닛(434)은 명령어를 실행한다. 실행 유닛(434)은 레지스터(435)에 접속되어 있고, 그리고 레지스터(435)에 값을 저장한다.
실행 유닛(434)이 jmpx 명령어를 실행하면, 실행 유닛(434)은 상태 머신(430)측으로 제2신호를 보낸다. 이 제2신호에 응답하여, 상태 머신(430)은 후속되는 각각의 명령어의 목적지로서 명령어 캐시(436)를 선택한다. 상기 후속되는 각각의 명령어는 제2명령어 집합의 명령어이다. 명령어 캐시(436)는 외부 메모리로부터의 각각의 명령어를 저장한다. 적절한 시간에, 디코더(437)는 명령어 캐시(436)로부터 각각의 명령어를 검색하고 이 명령어를 디코딩한다. 이때, 실행 유닛(438)은 제2명령어 집합 모드에서 디코더(437)로부터 디코딩된 명령어를 실행한다. 실행 유닛(438)은 레지스터(439)에 접속되어, 이 레지스터(439)에 값을 저장한다. 실행 유닛(438)은 또한 실행 유닛(434)에 접속되어 있고, 이 실행 유닛(434)은 레지스터(435)에 접속되어 있다. 따라서, x86mf, x86smf, 및 x86fmf 명령어에 응답하여, 실행 유닛(438)은 제2명령어 집합의 프로세서 명령어를 실행하는 동안에 사용하기 위해 레지스터(435)로부터 값을 검색할 수 있다. 마찬가지로, x86mt, x86smt, 및 x86fmt 명령어에 응답하여, 실행 유닛(438)은 또한 값을 레지스터(435)에 저장할 수 있다. 실행 유닛(438)은 x86jmp 명령어를 실행할 때, 이 실행 유닛(438)은 제1신호를 상태 머신(430)측으로 전송한다. 이 제1신호에 응답하여, 상태 머신(430)은 외부 메모리로부터 후속되는 명령어를 위해 명령어 캐시(432)를 선택한다.
프로세서(104)는 또한 jmpx 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 jmpx 디스에이블 레지스터는 실행 유닛(434)에 접속되어 있다. 이 jmpx 디스에이블 레지스터가 설정되면, 상기 jmpx 명령어는 무효로 되고 jmpx명령어에 의해 디스에이블된 64 비트 ISA 폴트가 생긴다. 프로세서(104)는 jmpx 명령어에 응답하여 제2명령어 집합 모드로 전환되지 않는다. 마찬가지로, 프로세서(104)는 또한 x86jmp 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 x86jmp 디스에이블 레지스터는 실행 유닛(438)에 접속되어 있다. 이 x86jmp 디스에이블 레지스터가 설정되면, x86jmp 명령어는 무효로 되고 x86jmp 명령어에 의해 디스에이블된 64 비트 x86 ISA 폴트가 생긴다. 프로세서(104)는 x86jmp 명령어에 응답하여 제1명령어 집합 모드로 전환되지 않는다.
또한, 레지스터(435)는 실행 유닛(434)과 실행 유닛(438)에 접속되어 있다. 레지스터(435)는 프로세서(104)가 상기 제1명령어 집합 모드일 때의 값을 저장하고, 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장한다. 이 경우에, 레지스터(445)는 레지스터(439)의 기능을 수행하고, 레지스터(439)가 제거되어 레지스터(435)내에 포함되게 된다. 이와같이, 한 세트의 레지스터를 사용하고 있으므로, x86mt, x86mf, x86smf, x86fmt 및 x86fmf 명령어는 사용되지 않게 된다.
도 5에는 본 발명의 제5실시예의 프로세서가 블록도 형태로 도시되어 있다. 이 실시예하에서, 프로세서(104)는 디멀티플렉서(540), 변환기(541), 명령어 캐시(542), 디코더(543), 실행 유닛(544), 레지스터(545) 및 레지스터(546)를 구비하고 있다. 디멀티플렉서(540)는 외부 메모리에 접속되어, 이 외부 메모리로부터 명령어를 수신한다. 이 명령어는 제1명령어 집합의 명령어일 수도 있고 제2명령어 집합의 명령어일 수도 있다. 디멀티플렉서(540)는 외부 메모리로부터의 명령어를 제2명령어 집합의 명령어로 변환하는 변환기(541)를 선택하거나, 디코딩 및 실행될 때까지 외부 메모리로부터의 명령어를 저장하는 명령어 캐시(542)를 선택한다. 디멀티플렉서(540)의 선택은 디코더(543)로부터 디멀티플렉서(540)에 의해 수신된 신호를 기초로 하고 있다. 디코더(543)로부터의 제1신호에 의해, 디멀티플렉서(540)는 변환기(541)와 제1명령어 집합 모드를 선택할 수 있다. 디코더(543)로부터의 제2신호에 의해 디멀티플렉서(540)는 명령어 캐시(542)와 제2명령어 집합 모드를 선택할 수 있다. 초기에, 프로세서(104)가 파워 업되면, 프로세서(104)는 초기화 절차에 따라 제1명령어 집합 모드 또는 제2명령어 집합 모드에서 파워 업될 수 있다. 초기값은 디코더(543)측으로 전송되며, 이 디코더(543)는 상기 값에 응답하여 제1신호 또는 제2신호를 전송한다. 이 예에서, 디멀티플렉서(540)는 초기에 디코더(543)로부터 제1신호를 수신하고 변환기(541)를 선택한다. 디멀티플렉서(540)를 통해 외부 메모리로부터 전송된 명령어는 변환기(541)에 의해 제2명령어 집합의 명령어로 변환된다. 변환기(541)는 제1명령어 집합의 명령어를 제2명령어 집합의 명령어로 변환하는 회로를 구비하고 있다. 이때, 변환된 명령어는 명령어 캐시(542)측으로 전송된다. 명령어 캐시(542)는 디코딩 및 실행될 때까지 명령어를 저장한다. 명령어를 디코딩하기에 적절한 시간에, 명령어 캐시(542)의 명령어는 명령어 캐시(542)로부터의 명령어를 디코딩하는 디코더(543)측으로 전송된다. 명령어 캐시(542)로부터의 명령어는 상기 제2명령어 집합의 명령어이다. 디코딩 후에, 제2명령어 집합의 명령어가 실행 유닛(544)측으로 전송된다. 실행 유닛(544)은 디코더(543)로부터 상기 디코딩된 명령어를 실행한다. 실행 유닛(544)은 또한 프로세서(104)가 제1명령어 집합 모드일 때의 값을 저장하는 레지스터(545)측에 접속되어 있다. 실행 유닛(544)은 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장하는 레지스터(546)에 접속되어 있다. 따라서, x86mf 명령어, x86smf 명령어, 또는 x86fmf 명령어에 응답하여, 실행 유닛(544)은 제2명령어 집합의 프로세서 명령어를 실행하는 동안에 사용된 레지스터(545)로부터의 값을 검색할 수 있다. 마찬가지로, x86mt 명령어, x86smt 명령어, 또는 x86fmt 명령어에 응답하여, 실행 유닛(544)은 또한 값을 레지스터(545)에 저장할 수 있다.
디코더(543)가 jmpx 명령어를 디코딩하면, 디코더(543)는 디멀티플렉서(540)측으로 제2신호를 보낸다. 이 제2신호에 의해 디멀티플렉서(540)는 명령어 캐시(542)를 선택할 수 있고 외부 메모리로부터 명령어 캐시(542)측으로 명령어를 전송할 수 있다. 이 방법으로, 프로세서(104)는 제2명령어 집합 모드로 전환된다. 디코더(543)가 x86jmp 명령어를 디코딩하면, 디코더(543)는 디멀티플렉서(540)측으로 제1신호를 보낸다. 이 제1신호에 응답하여, 디멀티플렉서(540)는 변환기(541)를 선택하고 외부 메모리로부터의 명령어를 변환기(541)측으로 전송한다. 이 방법으로, 프로세서(104)는 제1명령어 집합 모드로 다시 복귀한다.
프로세서(104)는 또한 jmpx 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 jmpx 디스에이블 레지스터는 디코더(543)에 접속되어 있다. 이 jmpx 디스에이블 레지스터가 설정되면, jmpx 명령어는 무효로 되고 jmpx명령어에 의해 디스에이블된 64 비트 ISA 폴트가 생긴다. 프로세서(104)는 jmpx 명령어에 응답하여 제2명령어 집합 모드로 전환되지 않는다. 마찬가지로, 프로세서(104)는 또한 x86jmp 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 x86jmp 디스에이블 레지스터는 디코더(543)에 접속되어 있다. 이 x86jmp 디스에이블 레지스터가 설정되면, x86jmp 명령어는 무효로 되고 x86jmp 명령어에 의해 디스에이블된 64 비트 x86 ISA 폴트가 생긴다. 프로세서(104)는 x86jmp 명령어에 응답하여 제1명령어 집합 모드로 전환되지 않는다.
또한, 레지스터(545)는 프로세서(104)가 상기 제1명령어 집합 모드일 때의 값을 저장하고, 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장한다. 이 경우에, 레지스터(545)는 레지스터(546)의 기능을 수행하고, 레지스터(546)가 제거되어 레지스터(545)내에 포함되게 된다. 이와같이, 한 세트의 레지스터를 사용하고 있으므로, x86mt, x86mf, x86smt, x86smf, x86fmt 및 x86fmf 명령어는 사용되지 않게 된다.
도 6에는 본 발명의 제6실시예의 프로세서가 블록도 형태로 예시되어 있다. 제6실시예의 프로세서는 다음과 같은 예외를 가지고 제5실시예의 프로세서와 유사하다. 명령어 캐시(642)는 외부 메모리에 접속되어 있다. 디멀티플렉서(640)는 명령어 캐시(642)에 접속되어 있다. 변환기(641)와 디코더(643)는 디멀티플렉서(640)에 접속되어 있다. 디코더(643)도 또한 변환기(641)에 접속되어 있다. 실행 유닛(644)은 디코더(643)에 접속되어 있다. 레지스터(645)와 레지스터(646)는 실행 유닛(644)에 접속되어 있다.
명령어 캐시(642)는 외부 메모리로부터 명령어를 수신한다. 이 명령어는 제1명령어 집합의 명령어일 수도 있고 제2명령어 집합의 명령어일 수도 있다. 디멀티플렉서(640)는 명령어 캐시(642)로부터 명령어를 수신한다. 디멀티플렉서(640)는 명령어 캐시(642)로부터의 명령어를 제2명령어 집합의 명령어로 변환하는 변환기(641)를 선택하거나, 명령어 캐시(642)로부터의 명령어를 디코딩하는 디코더(643)를 선택한다. 디멀티플렉서(640)의 선택은 디코더(643)로부터 디멀티플렉서(640)에 의해 수신된 신호를 기초로 하고 있다. 디코더(643)로부터의 제1신호에 의해, 디멀티플렉서(640)는 변환기(641)와 제1명령어 집합 모드를 선택할 수 있다. 디코더(643)로부터의 제2신호에 의해 디멀티플렉서(640)는 디코더(643)와 제2명령어 집합 모드를 선택할 수 있다. 초기에, 프로세서(104)가 파워 업되면, 프로세서(104)는 초기화 절차에 따라 제1명령어 집합 모드 또는 제2명령어 집합 모드에서 파워 업될 수 있다. 초기값은 디코더(643)측으로 전송되며, 이 디코더(643)는 상기 값에 응답하여 제1신호 또는 제2신호를 전송한다. 이 예에서, 프로세서(104)는 제1명령어 집합 모드에서 파워 업된다. 따라서, 디멀티플렉서(640)는 초기에 디코더(643)로부터 제1신호를 수신하고 변환기(641)를 선택한다. 디멀티플렉서(640)를 통해 명령어 캐시(642)로부터 전송된 명령어는 변환기(641)에 의해 제2명령어 집합의 명령어로 변환된다. 변환기(641)는 제1명령어 집합의 명령어를 제2명령어 집합의 명령어로 변환하는 회로를 구비하고 있다. 이때, 변환된 명령어는 디코더(643)측으로 전송된다. 디코딩 후에, 제2명령어 집합의 명령어가 실행 유닛(644)측으로 전송된다. 실행 유닛(644)은 디코더(643)로부터 상기 디코딩된 명령어를 실행한다. 실행 유닛(644)은 또한 프로세서(104)가 제1명령어 집합 모드일 때의 값을 저장하는 레지스터(645)측에 접속되어 있다. 실행 유닛(644)은 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장하는 레지스터(646)에 접속되어 있다. 따라서, x86mf 명령어, x86smf 명령어, 또는 x86fmf 명령어에 응답하여, 실행 유닛(644)은 제2명령어 집합의 프로세서 명령어를 실행하는 동안에 사용된 레지스터(645)로부터의 값을 검색할 수 있다. 마찬가지로, x86mt 명령어, x86smt 명령어 또는 x86fmt 명령어에 응답하여, 실행 유닛(644)은 또한 값을 레지스터(645)에 저장할 수 있다.
디코더(643)가 jmpx 명령어를 디코딩하면, 디코더(643)는 디멀티플렉서(640)측으로 제2신호를 보낸다. 이 제2신호에 의해 디멀티플렉서(640)는 디코더(643)를 선택할 수 있고 명령어 캐시(642)로부터의 명령어를 디코더(643)측으로 전송할 수 있다. 이 방법으로, 프로세서(104)는 제2명령어 집합 모드로 전환된다. 디코더(643)가 x86jmp 명령어를 디코딩하면, 디코더(643)는 디멀티플렉서(640)측으로 제1신호를 보낸다. 이 제1신호에 응답하여, 디멀티플렉서(640)는 변환기(641)를 선택하고 명령어 캐시(642)로부터의 명령어를 변환기(641)측으로 전송한다. 이 방법으로, 프로세서(104)는 제1명령어 집합 모드로 다시 복귀할 수 있다.
프로세서(104)는 또한 jmpx 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 jmpx 디스에이블 레지스터는 디코더(643)에 접속되어 있다. 이 jmpx 디스에이블 레지스터가 설정되면, jmpx 명령어는 무효로 되고 jmpx 명령어에 의해 디스에이블된 64 비트 ISA 폴트가 생긴다. 프로세서(104)는 jmpx 명령어에 응답하여 제2명령어 집합 모드로 전환되지 않는다. 마찬가지로, 프로세서(104)는 또한 x86jmp 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 x86jmp 디스에이블 레지스터는 디코더(643)에 접속되어 있다. 이 x86jmp 디스에이블 레지스터가 설정되면, x86jmp 명령어는 무효로 되고 x86jmp 명령어에 의해 디스에이블된 64 비트 x86 ISA 폴트가 생긴다. 프로세서(104)는 x86jmp 명령어에 응답하여 제1명령어 집합 모드로 전환되지 않는다.
또한, 레지스터(645)는 프로세서(104)가 상기 제1명령어 집합 모드일 때의 값을 저장하고, 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장한다. 이 경우에, 레지스터(645)는 레지스터(646)의 기능을 수행하고, 레지스터(646)가 제거되어 레지스터(645)내에 포함되게 된다. 이와같이, 한 세트의 레지스터를 사용하고 있으므로, x86mt 명령어, x86mf 명령어, x86smf 명령어, x86fmt 명령어 및 x86fmf 명령어는 사용되지 않게 된다.
도 7에는 본 발명의 제7실시예의 프로세서가 블록도 형태로 예시되어 있다. 제7실시예의 프로세서는 다음과 같은 예외를 가지고 제6실시예의 프로세서와 유사하다. 명령어 캐시(742)는 외부 메모리에 접속되어 있다. 디멀티플렉서(740)는 명령어 캐시(742)에 접속되어 있다. 변환기(741)와 디코더(743)는 디멀티플렉서(740)에 접속되어 있다. 실행 유닛(744)은 디코더(743)와 변환기(741)에 접속되어 있다. 레지스터(745)와 레지스터(746)는 실행 유닛(744)에 접속되어 있다.
명령어 캐시(742)는 외부 메모리로부터 명령어를 수신한다. 이 명령어는 제1명령어 집합의 명령어일 수도 있고 제2명령어 집합의 명령어일 수도 있다. 디멀티플렉서(740)는 명령어 캐시(742)로부터 명령어를 수신한다. 디멀티플렉서(740)는 명령어 캐시(742)로부터의 명령어를 변환 및 디코딩하는 변환기(741)를 선택하거나, 명령어 캐시(742)로부터의 명령어를 디코딩하는 디코더(743)를 선택한다. 디멀티플렉서(740)의 선택은 디코더(743)와 변환기(741)로부터 디멀티플렉서(740)에 의해 수신된 신호를 기초로 하고 있다. 디코더(743)로부터의 제1신호에 의해, 디멀티플렉서(740)는 변환기(741)와 제1명령어 집합 모드를 선택할 수 있다. 변환기(741)로부터의 제2신호에 의해 디멀티플렉서(740)는 디코더(743)와 제2명령어 집합 모드를 선택할 수 있다. 초기에, 프로세서(104)가 파워 업되면, 프로세서(104)는 초기화 절차에 따라 제1명령어 집합 모드 또는 제2명령어 집합에서 파워 업될 수 있다. 초기값이 디코더(743)와 변환기(741)측으로 전송된다. 디코더(743) 또는 변환기(741)는 차례로 상기 값에 응답하여 제1신호 또는 제2신호를 전송한다. 이 예에서, 프로세서(104)는 제1명령어 집합 모드에서 파워 업된다. 따라서, 디멀티플렉서(740)는 초기에 디코더(743)로부터 제1신호를 수신하고 변환기(741)를 선택한다. 디멀티플렉서(740)를 통해 명령어 캐시(742)로부터 전송된 명령어는 변환기(741)에 의해 변환 및 디코딩된다. 변환기(741)는 제1명령어 집합의 명령어를 변환 및 디코딩하는 회로를 구비하고 있다. 이때, 변환 및 디코딩된 명령어는 디코딩된 명령어를 실행하는 실행 유닛(744)측으로 전송된다. 실행 유닛(744)은 프로세서(104)가 제1명령어 집합 모드일 때의 값을 저장하는 레지스터(745)측에 접속되어 있다. 실행 유닛(744)은 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장하는 레지스터(746)에 접속되어 있다. 따라서, x86mf 명령어, x86smf 명령어, 또는 x86fmf 명령어에 응답하여, 실행 유닛(744)은 제2명령어 집합의 프로세서 명령어를 실행하는 동안에 사용된 레지스터(745)로부터의 값을 검색할 수 있다. 마찬가지로, x86mt 명령어, x86smt 명령어, 또는 x86fmt 명령어에 응답하여, 실행 유닛(744)은 또한 값을 레지스터(745)에 저장할 수 있다.
변환기(741)가 jmpx 명령어를 수신하면, 변환기(741)는 디멀티플렉서(740)측으로 제2신호를 보낸다. 이 제2신호에 의해 디멀티플렉서(740)는 디코더(743)를 선택할 수 있고 명령어 캐시(742)로부터의 명령어를 디코더(743)측으로 전송할 수 있다. 이 방법으로, 프로세서(104)는 제2명령어 집합 모드로 전환된다. 디코더(743)가 x86jmp 명령어를 디코딩하면, 디코더(743)는 디멀티플렉서(740)측으로 제1신호를 보낸다. 이 제1신호에 응답하여, 디멀티플렉서(740)는 변환기(741)를 선택할 수 있고 명령어 캐시(742)로부터의 명령어를 변환기(741)측으로 전송할 수 있다. 이 방법으로, 프로세서(104)는 제1명령어 집합 모드로 다시 복귀할 수 있다.
프로세서(104)는 또한 jmpx 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 jmpx 디스에이블 레지스터는 변환기(741)에 접속되어 있다. 이 jmpx 디스에이블 레지스터가 설정되면, jmpx 명령어는 무효로 되고 jmpx명령어에 의해 디스에이블된 64 비트 ISA 폴트가 생긴다. 프로세서(104)는 jmpx 명령어에 응답하여 제2명령어 집합 모드로 전환되지 않는다. 마찬가지로, 프로세서(104)는 또한 x86jmp 디스에이블 레지스터를 구비하고 있을 수 있다. 상기 x86jmp 디스에이블 레지스터는 디코더(743)에 접속되어 있다. 이 x86jmp 디스에이블 레지스터가 설정되면, x86jmp 명령어는 무효로 되고 x86jmp 명령어에 의해 디스에이블된 x86 ISA 폴트가 생긴다. 프로세서(104)는 x86jmp 명령어에 응답하여 제1명령어 집합 모드로 전환되지 않는다.
또한, 레지스터(745)는 프로세서(104)가 상기 제1명령어 집합 모드일 때의 값을 저장하고, 또한 프로세서(104)가 제2명령어 집합모드일 때의 값을 저장한다. 이 경우에, 레지스터(745)는 레지스터(746)의 기능을 수행하고, 레지스터(746)가 제거되어 레지스터(745)내에 포함되게 된다. 이와같이, 한 세트의 레지스터를 사용하고 있으므로, x86mt 명령어, x86mf 명령어, x86smf 명령어, x86fmt 명령어 및 x86fmf 명령어는 사용되지 않게 된다.
상기 설명에서, 본 발명은 특정 실시예를 참조하여 설명되었다. 하지만, 첨부된 청구의 범위에 설명된 본 발명의 보다 넓은 취지 및 범위로부터 이탈하지 않고 각종 수정예 및 변형예가 행해질 수 있음은 명백하다. 따라서, 명세서와 도면은 한정적인 의미보다는 예시적인 것으로 간주되어야 한다.
본 발명의 다수의 변형예 및 수정예는 이상의 설명을 읽은 후에 당업자에게 이해될 수 있지만, 예로서 도시 및 설명된 특정 실시예는 한정하는 것으로 간주되도록 전혀 의도되지 않았음을 이해해야 한다. 그러므로, 특정 실시예의 상세한 설명에 대한 참조는 청구의 범위를 한정하는 것으로 의도되지 않고 이들 실시예에서 본 발명에 필수적인 것으로 간주되는 구성들만을 설명한 것이다.
이와같이, 프로세서의 명령어 집합 변환 방법 및 장치에 대해 설명하였다.
Claims (43)
- 제1명령어 집합의 제1명령어와 제2명령어 집합의 제2명령어를 수신할 수 있는 버스 인터페이스 유닛으로서, 상기 제1명령어와 제2명령어는 단일 컴퓨터 프로그램으로부터 생기는 버스 인터페이스 유닛;상기 버스 인터페이스 유닛에 접속되어, 이 버스 인터페이스 유닛으로부터의 상기 제1명령어 집합의 상기 제1명령어와 상기 제2명령어 집합의 상기 제2명령어를 전송할 수 있는 내부 버스; 및상기 내부 버스에 접속되어, 제1명령어 집합의 상기 제1명령어와 제2명령어 집합의 상기 제2명령어를 디코딩 및 실행할 수 있는 명령어 유닛을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 제 1 항에 있어서, 상기 제1명령어 집합은 복잡한 명령어 집합이고 상기 제2명령어 집합은 간략화된 명령어 집합인 것을 특징으로 하는 데이타 프로세서.
- 제 1 항에 있어서, 상기 제1명령어 집합은 16 비트 및 32 비트 명령어 집합이고 상기 제2명령어 집합은 64비트 명령어 집합인 것을 특징으로 하는 데이타 프로세서.
- 제 1 항에 있어서, 상기 명령어 유닛은 상기 내부 버스에 접속되어, 상기 제1명령어와 상기 제2명령어를 저장할 수 있는 명령어 캐시;상기 명령어 캐시에 접속되어, 상기 제1명령어 집합의 상기 제1명령어를 디코딩할 수 있는 제1디코더;상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 디코딩할 수 있는 제2디코더;상기 제1디코더와 상기 제2디코더에 접속되어, 신호에 응답하여 상기 제1디코더와 상기 제2디코더로부터 선택할 수 있는 멀티플렉서; 및상기 멀티플렉서에 접속되어, 상기 멀티플렉서로부터의 선택된 디코딩 명령어를 실행할 수 있는 실행 유닛을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 제 4 항에 있어서, 상기 명령어 유닛은 상기 제1디코더, 상기 제2디코터, 및 상기 멀티플렉서에 접속되어, 상기 제1디코더 또는 상기 제2디코더로부터 현재 모드를 전환하라는 명령어에 응답하여 상기 멀티플렉서측으로 상기 신호를 전송할 수 있는 명령어 집합 모드 선택기를 더 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 제 5 항에 있어서, 상기 명령어 캐시에 접속되어, 상기 신호에 응답하여 상기 제1디코더 또는 상기 제2디코더를 선택할 수 있는 디멀티플렉서를 더 구비하고 있고, 상기 명령어 집합 모드 선택기는 상기 제1디코더 또는 상기 제2디코더로부터 현재 모드를 전환하라는 명령어에 응답하여 상기 디멀티플렉서측으로 상기 신호를 전송할 수 있는 것을 특징으로 하는 데이타 프로세서.
- 제 1 항에 있어서, 상기 명령어 유닛은 상기 내부 버스에 접속되어, 상기 제1명령어를 저장할 수 있는 제1명령어 캐시;상기 제1명령어 캐시에 접속되어, 상기 제1명령어를 디코딩할 수 있는 제1디코더;상기 제1디코더에 접속되어, 상기 제1명령어를 실행할 수 있는 제1실행 유닛으로서, 실행을 개시하라는 신호에 응답하는 제1실행 유닛;상기 내부 버스에 접속되어, 상기 제2명령어를 저장할 수 있는 제2명령어 캐시;상기 제2명령어 캐시에 접속되어, 상기 제2명령어를 디코딩할 수 있는 제2디코더; 및상기 제2디코더에 접속되어, 상기 제2명령어를 실행할 수 있는 제2실행 유닛으로서, 실행을 개시하라는 상기 신호에 응답하는 제2실행 유닛을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 제 7 항에 있어서, 상기 제1실행 유닛은 제1전환 명령어에 응답하여 실행을 개시하라는 상기 신호를 상기 제2실행 유닛측으로 전송하고, 상기 제1실행 유닛은 상기 제1전환 명령어에 응답하여 실행을 중지하는 것을 특징으로 하는 데이타 프로세서.
- 제 7 항에 있어서, 상기 제2실행 유닛은 제2전환 명령어에 응답하여 실행을 개시하라는 상기 신호를 상기 제1실행 유닛측으로 전송하고, 상기 제2실행 유닛은 상기 제2전환 명령어에 응답하여 실행을 중지하는 것을 특징으로 하는 데이타 프로세서.
- 제 1 항에 있어서, 상기 명령어 유닛은 상기 내부 버스에 접속되어, 상기 제1명령어 집합의 상기 제1명령어를 상기 제2명령어 집합의 대응 명령어로 변환하는 변환기;상기 내부 버스에 접속되어 그리고 상기 변환기에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 저장할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 저장할 수 있는 명령어 캐시; 및상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 실행할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 실행할 수 있는 실행 유닛을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 제 10 항에 있어서, 상기 명령어 유닛은 상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 디코딩할 수 있고 상기 제2명령어 집합의 상기 대응하는 명령어를 디코딩할 수 있는 디코더를 더 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 제 10 항에 있어서, 상기 변환기는 상태 머신을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 제 10 항에 있어서, 상기 변환기는 논리 디바이스인 것을 특징으로 하는 데이타 프로세서.
- 제 10 항에 있어서, 상기 프로세서는 마이크로코드 명령어를 저장하는 제어 판독 전용 메모리 디바이스를 더 구비하고 있고, 상기 변환기는 상기 마이크로코드 명령어를 수신하여 상기 제1명령어 집합의 상기 제1명령어를 상기 제2명령어 집합의 대응 명령어로 변환하는 것을 특징으로 하는 데이타 프로세서.
- 제 1 항에 있어서, 상기 명령어 유닛은 상기 내부 버스에 접속되어 그리고 상기 변환기에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 저장할 수 있고 상기 제1명령어 집합의 상기 제1명령어를 저장할 수 있는 명령어 캐시;상기 명령어 캐시에 접속되어, 상기 제1명령어 집합의 상기 제1명령어를 상기 제2명령어 집합의 대응 명령어로 변환하는 변환기; 및상기 명령어 캐시와 상기 변환기에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 디코딩할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 디코딩할 수 있는 디코더; 및상기 디코더에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 실행할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 실행할 수 있는 실행 유닛을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 컴퓨터 시스템에 있어서,상기 컴퓨터 시스템의 구성 요소들 사이에 통신 링크를 제공하는 버스;상기 버스에 접속되어, 상기 컴퓨터 시스템에의 키보드의 접속을 가능하게 하는 키보드 제어기;상기 버스에 접속되어, 정보를 저장할 수 있는 외부 메모리; 및상기 외부 메모리와 상기 버스에 접속되어, 상기 제1명령어 집합의 제1명령어와 상기 제2명령어 집합의 제2명령어를 디코딩 및 실행할 수 있는 마이크로프로세서로서, 상기 제1명령어와 상기 제2명령어가 단일 컴퓨터 프로그램으로부터 생기는 마이크로프로세서를 구비하고 있는 것을 특징으로 하는 컴퓨터 시스템.
- 제 16 항에 있어서, 상기 제1명령어 집합은 복잡한 명령어 집합이고 상기 제2명령어 집합은 간략화된 명령어 집합인 것을 특징으로 하는 컴퓨터 시스템.
- 제 16 항에 있어서, 상기 마이크로프로세서는 상기 제1명령어와 상기 제2명령어를 저장할 수 있는 명령어 캐시;상기 명령어 캐시에 접속되어, 상기 제1명령어 집합의 상기 제1명령어를 디코딩할 수 있는 제1디코더;상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 디코딩할 수 있는 제2디코더;상기 제1디코더와 상기 제2디코더에 접속되어, 신호에 응답하여 상기 제1디코더와 상기 제2디코더로부터 선택할 수 있는 제1멀티플렉서; 및상기 멀티플렉서에 접속되어, 상기 멀티플렉서로부터의 선택된 명령어를 실행할 수 있는 실행 유닛을 구비하고 있는 것을 특징으로 하는 컴퓨터 시스템.
- 제 16 항에 있어서, 상기 마이크로프로세서는 상기 제1명령어를 저장할 수 있는 제1명령어 캐시;상기 제1명령어 캐시에 접속되어, 상기 제1명령어를 디코딩할 수 있는 제1디코더;상기 제1디코더에 접속되어, 상기 제1명령어를 실행할 수 있는 제1실행 유닛으로서, 실행을 개시하라는 신호에 응답하는 제1실행 유닛;상기 제2명령어를 저장할 수 있는 제2명령어 캐시;상기 제2명령어 캐시에 접속되어, 상기 제2명령어를 디코딩할 수 있는 제2디코더; 및상기 제2디코더에 접속되어, 상기 제2명령어를 실행할 수 있는 제2실행 유닛으로서, 실행을 개시하라는 상기 신호에 응답하는 제2실행 유닛을 구비하고 있는 것을 특징으로 하는 컴퓨터 시스템.
- 제 16 항에 있어서, 상기 마이크로프로세서는 상기 제1명령어 집합의 상기 제1명령어를 상기 제2명령어 집합의 대응 명령어로 변환할 수 있는 변환기;상기 변환기에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 저장할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 저장할 수 있는 명령어 캐시; 및상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 실행할 수 있고 상기 제2명령어 집합의 상기 대응 명령어를 실행할 수 있는 실행 유닛을 구비하고 있는 것을 특징으로 하는 컴퓨터 시스템.
- 제 20 항에 있어서, 상기 마이크로프로세서는 상기 명령어 캐시에 접속되어, 상기 제2명령어 집합의 상기 제2명령어를 디코딩할 수 있고 상기 제2명령어 집합의 상기 대응하는 명령어를 디코딩할 수 있는 디코더를 더 구비하고 있는 것을 특징으로 하는 컴퓨터 시스템.
- 프로세서에서, 컴퓨터 프로그램의 명령어를 실행하는 방법에 있어서,제1명령어 집합의 제1명령어를 실행하는 단계;제1전환 명령어를 실행하는 단계;제1명령어 집합 모드로부터 제2명령어 집합 모드로 전환하는 단계; 및제2명령어 집합의 제2명령어를 실행하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제 22 항에 있어서, 상기 제1전환 명령어는 jmpx인 것을 특징으로 하는 방법.
- 제 22 항에 있어서, 상기 제1전환 명령어는 x86jmp인 것을 특징으로 하는 방법.
- 제 22 항에 있어서, 제2전환 명령어를 실행하는 단계;상기 제2명령어 집합 모드로부터 상기 제1명령어 집합 모드로 전환하는 단계; 및상기 제1명령어 집합의 제2명령어를 실행하는 단계를 더 포함하고 있는 것을 특징으로 하는 방법.
- 제 22 항에 있어서, 상기 제1명령어 집합의 상기 제2명령어는 상기 제1명령어 집합의 레지스터로부터 상기 제2명령어 집합의 레지스터로 값을 이동시키는 명령어인 것을 특징으로 하는 방법.
- 제 26 항에 있어서, 값을 이동시키는 상기 명령어는 x86mf인 것을 특징으로 하는 방법.
- 제 26 항에 있어서, 값을 이동시키는 상기 명령어는 x86smf인 것을 특징으로 하는 방법.
- 제 26 항에 있어서, 값을 이동시키는 상기 명령어는 x86fmf인 것을 특징으로 하는 방법.
- 제 26 항에 있어서, 값을 이동시키는 상기 명령어는 x86mt인 것을 특징으로 하는 방법.
- 제 26 항에 있어서, 값을 이동시키는 상기 명령어는 x86smt인 것을 특징으로 하는 방법.
- 제 26 항에 있어서, 값을 이동시키는 상기 명령어는 x86fmt인 것을 특징으로 하는 방법.
- 프로세서에서, 컴퓨터 프로그램의 명령어를 실행하는 방법에 있어서,제1명령어 집합 모드에서 제1명령어 집합의 제1명령어를 실행하는 단계;상기 제1명령어 집합 모드에서 제1명령어 지시를 수신하는 단계;제2명령어 집합 모드에서 상기 제1인터럽트 지시를 서비스하는 단계;상기 제1명령어 집합 모드로 복귀하는 단계;상기 제1명령어 집합 모드에서 제2인터럽트 지시를 수신하는 단계; 및상기 제1명령어 집합 모드에서 상기 제2인터럽트 지시를 서비스하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 상기 제1명령어 집합 모드는 복잡한 명령어 집합 모드이고 상기 제2명령어 집합 모드는 간략화된 명령어 집합 모드인 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 상기 제1명령어 집합 모드는 간략화된 명령어 집합 모드이고, 상기 제2명령어 집합 모드는 복잡한 명령어 집합 모드인 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 상기 제1명령어 집합 모드는 64 비트 명령어 집합 모드이고, 상기 제2명령어 집합 모드는 16 비트 및 32 비트 명령어 집합 모드인 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 상기 제1명령어 집합 모드로 복귀하는 단계는 IRET 명령어를 실행하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 상기 제1명령어 집합 모드는 16 비트 및 32 비트 명령어 집합 모드이고, 상기 제2명령어 집합 모드는 64 비트 명령어 집합 모드인 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 제2명령어 집합 모드에서 상기 제1인터럽트 지시를 서비스하는 단계는 상기 제1인터럽트를 결정하는 단계;상기 제1인터럽트에 대한 기술어 엔트리 수를 결정하는 단계;상기 기술어 엔트리 수와 관련된 64 비트 인터셉트 게이트를 저장하는 단계로서, 상기 인터셉트 게이트가 메모리 주소를 참조하는 단계; 및상기 메모리 주소에서 시작하는 상기 제1사건에 대한 상기 64 비트 명령어집합 모드에서 서비스 루틴을 실행하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 상기 제1명령어 집합 모드에서 상기 제2인터럽트 지시를 서비스하는 단계는 상기 제2인터럽트를 결정하는 단계;상기 제2인터럽트에 대한 기술어 엔트리 수를 결정하는 단계;상기 기술어 엔트리 수와 관련된 기술어 게이트를 저장하는 단계로서, 상기 디스크립터 게이트가 메모리 주소를 참조하는 단계; 및상기 메모리 주소에서 시작하는 상기 제2사건에 대한 상기 16 비트 및 32 비트 명령어 집합 모드에서 서비스 루틴을 실행하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 제 33 항에 있어서, 상기 제1명령어 집합 모드로 복귀하는 단계는EVRET 명령어를 실행하는 단계를 포함하고 있는 것을 특징으로 하는 방법.
- 컴퓨터 프로그램의 명령어를 실행하는 데이타 프로세서에 있어서,제1명령어 집합의 제1명령어를 실행하는 수단;제1전환 명령어를 실행하는 수단;제1명령어 집합 모드를 제2명령어 집합 모드로 전환하는 수단; 및제2명령어 집합의 제2명령어를 실행하는 수단을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
- 컴퓨터 프로그램의 명령어를 실행하는 데이타 프로세서에 있어서,제1명령어 집합 모드에서 제1명령어 집합의 제1명령어를 실행하는 수단;상기 제1명령어 집합 모드에서 제1사건 지시를 수신하는 수단;제2명령어 집합 모드에서 상기 제1사건 지시를 서비스하는 수단;상기 제1명령어 집합 모드로 복귀하는 수단;상기 제1명령어 집합 모드에서 제2사건 지시를 수신하는 수단; 및상기 제1명령어 집합 모드에서 상기 제2사건 지시를 서비스하는 수단을 구비하고 있는 것을 특징으로 하는 데이타 프로세서.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/386,931 | 1995-02-10 | ||
US08/386,931 US5638525A (en) | 1995-02-10 | 1995-02-10 | Processor capable of executing programs that contain RISC and CISC instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980702137A true KR19980702137A (ko) | 1998-07-15 |
KR100271947B1 KR100271947B1 (ko) | 2000-11-15 |
Family
ID=23527690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970705532A KR100271947B1 (ko) | 1995-02-10 | 1996-02-05 | 프로세서의 명령어 집합간의 변환 방법 및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5638525A (ko) |
EP (1) | EP0808485A4 (ko) |
JP (1) | JPH11503846A (ko) |
KR (1) | KR100271947B1 (ko) |
AU (1) | AU4775796A (ko) |
WO (1) | WO1996024895A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100834180B1 (ko) * | 2004-06-28 | 2008-05-30 | 씨아오보 리 | 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서 |
KR100879825B1 (ko) * | 2005-12-29 | 2009-01-21 | 인텔 코오퍼레이션 | 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 |
KR100890243B1 (ko) * | 2000-10-05 | 2009-03-24 | 에이알엠 리미티드 | 변환된 명령어의 재시작 |
Families Citing this family (155)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2290395B (en) | 1994-06-10 | 1997-05-28 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5889973A (en) * | 1995-03-31 | 1999-03-30 | Motorola, Inc. | Method and apparatus for selectively controlling interrupt latency in a data processing system |
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
JP3451595B2 (ja) * | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US5926642A (en) | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US5848284A (en) * | 1995-11-28 | 1998-12-08 | Intel Corporation | Method of transferring data between moderately coupled integer and floating point units |
WO1997022922A1 (en) * | 1995-12-15 | 1997-06-26 | Intel Corporation | Instruction encoding techniques for microcontroller architecture |
US5930490A (en) * | 1996-01-02 | 1999-07-27 | Advanced Micro Devices, Inc. | Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions |
US5802350A (en) * | 1996-01-18 | 1998-09-01 | International Business Machines Corporation | System and method for selecting an interrupt system based upon the operating system of a multiprocessor system |
US5925123A (en) * | 1996-01-24 | 1999-07-20 | Sun Microsystems, Inc. | Processor for executing instruction sets received from a network or from a local memory |
JP3634379B2 (ja) * | 1996-01-24 | 2005-03-30 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
JP3623840B2 (ja) | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
US5790824A (en) * | 1996-03-18 | 1998-08-04 | Advanced Micro Devices, Inc. | Central processing unit including a DSP function preprocessor which scans instruction sequences for DSP functions |
US6179489B1 (en) | 1997-04-04 | 2001-01-30 | Texas Instruments Incorporated | Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto |
US5987590A (en) * | 1996-04-02 | 1999-11-16 | Texas Instruments Incorporated | PC circuits, systems and methods |
US6711667B1 (en) * | 1996-06-28 | 2004-03-23 | Legerity, Inc. | Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions |
US5958061A (en) * | 1996-07-24 | 1999-09-28 | Transmeta Corporation | Host microprocessor with apparatus for temporarily holding target processor state |
US6199152B1 (en) | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US5925124A (en) * | 1997-02-27 | 1999-07-20 | International Business Machines Corporation | Dynamic conversion between different instruction codes by recombination of instruction elements |
US5909567A (en) * | 1997-02-28 | 1999-06-01 | Advanced Micro Devices, Inc. | Apparatus and method for native mode processing in a RISC-based CISC processor |
US6105119A (en) * | 1997-04-04 | 2000-08-15 | Texas Instruments Incorporated | Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems |
US5909559A (en) * | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
US5930491A (en) * | 1997-06-18 | 1999-07-27 | International Business Machines Corporation | Identification of related instructions resulting from external to internal translation by use of common ID field for each group |
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 |
US6021484A (en) * | 1997-11-14 | 2000-02-01 | Samsung Electronics Co., Ltd. | Dual instruction set architecture |
US6134650A (en) * | 1997-12-12 | 2000-10-17 | Advanced Micro Devices, Inc. | Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data |
US6480952B2 (en) | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
US6988183B1 (en) * | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
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 |
US6430674B1 (en) | 1998-12-30 | 2002-08-06 | Intel Corporation | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time |
US6253310B1 (en) * | 1998-12-31 | 2001-06-26 | Intel Corporation | Delayed deallocation of an arithmetic flags register |
US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US7013456B1 (en) | 1999-01-28 | 2006-03-14 | Ati International Srl | Profiling execution of computer programs |
US7065633B1 (en) | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6978462B1 (en) | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US8127121B2 (en) * | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US6826748B1 (en) | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US7111290B1 (en) | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US6779107B1 (en) | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
US7254806B1 (en) | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
JP2001195250A (ja) * | 2000-01-13 | 2001-07-19 | Mitsubishi Electric Corp | 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置 |
US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6618801B1 (en) | 2000-02-02 | 2003-09-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information |
US7353368B2 (en) * | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
US7171543B1 (en) * | 2000-03-28 | 2007-01-30 | Intel Corp. | Method and apparatus for executing a 32-bit application by confining the application to a 32-bit address space subset in a 64-bit processor |
US6968469B1 (en) | 2000-06-16 | 2005-11-22 | Transmeta Corporation | System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored |
US6895494B1 (en) * | 2000-06-26 | 2005-05-17 | Texas Instruments Incorporated | Sub-pipelined and pipelined execution in a VLIW |
US20020004897A1 (en) * | 2000-07-05 | 2002-01-10 | Min-Cheng Kao | Data processing apparatus for executing multiple instruction sets |
US7162612B2 (en) * | 2000-08-16 | 2007-01-09 | Ip-First, Llc | Mechanism in a microprocessor for executing native instructions directly from memory |
US20020069402A1 (en) * | 2000-10-05 | 2002-06-06 | Nevill Edward Colles | Scheduling control within a system having mixed hardware and software based instruction execution |
GB2367654B (en) | 2000-10-05 | 2004-10-27 | Advanced Risc Mach Ltd | Storing stack operands in registers |
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 |
US6775892B2 (en) * | 2000-12-22 | 2004-08-17 | Diebolt International, Inc. | Retaining ring installation tool |
US7873814B1 (en) * | 2000-12-22 | 2011-01-18 | Lsi Corporation | Microcode based hardware translator to support a multitude of processors |
JP2002215387A (ja) * | 2001-01-22 | 2002-08-02 | Mitsubishi Electric Corp | 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置 |
US7356673B2 (en) * | 2001-04-30 | 2008-04-08 | International Business Machines Corporation | System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form |
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 |
GB2376098B (en) * | 2001-05-31 | 2004-11-24 | Advanced Risc Mach Ltd | Unhandled operation handling in multiple instruction set systems |
GB2376099B (en) * | 2001-05-31 | 2005-11-16 | Advanced Risc Mach Ltd | Program instruction interpretation |
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 |
JP3528922B2 (ja) * | 2001-08-31 | 2004-05-24 | 日本電気株式会社 | アレイ型プロセッサ、データ処理システム |
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 |
US7017030B2 (en) * | 2002-02-20 | 2006-03-21 | Arm Limited | Prediction of instructions in a data processing apparatus |
TW591405B (en) * | 2002-04-19 | 2004-06-11 | Ind Tech Res Inst | Non-copy shared stack and register set device and dual language processor structure using the same |
US6970985B2 (en) | 2002-07-09 | 2005-11-29 | Bluerisc Inc. | Statically speculative memory accessing |
US7131118B2 (en) * | 2002-07-25 | 2006-10-31 | Arm Limited | Write-through caching a JAVA® local variable within a register of a register bank |
EP1387254B1 (en) * | 2002-07-31 | 2012-12-12 | Texas Instruments Incorporated | Skip instruction carrying out a test with immediate value |
EP1387256B1 (en) | 2002-07-31 | 2018-11-21 | Texas Instruments Incorporated | Program counter adjustment based on the detection of an instruction prefix |
GB2396451B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Delivering data processing requests to a suspended operating system |
US7600096B2 (en) * | 2002-11-19 | 2009-10-06 | Stmicroelectronics, Inc. | Coprocessor extension architecture built using a novel split-instruction transaction model |
US20040163082A1 (en) * | 2003-02-13 | 2004-08-19 | Marc Tremblay | Commit instruction to support transactional program execution |
GB2399897B (en) * | 2003-03-26 | 2006-02-01 | Advanced Risc Mach Ltd | Memory recycling in computer systems |
TWI224281B (en) * | 2003-07-16 | 2004-11-21 | Sunplus Technology Co Ltd | A processor executing script with different length and method thereof |
US20050114850A1 (en) | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US7707389B2 (en) * | 2003-10-31 | 2010-04-27 | Mips Technologies, Inc. | Multi-ISA instruction fetch unit for a processor, and applications thereof |
US7996671B2 (en) | 2003-11-17 | 2011-08-09 | Bluerisc Inc. | Security of program executables and microprocessors based on compiler-architecture interaction |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
GB2412192B (en) * | 2004-03-18 | 2007-08-29 | Advanced Risc Mach Ltd | Function calling mechanism |
US7930526B2 (en) | 2004-03-24 | 2011-04-19 | Arm Limited | Compare and branch mechanism |
US7802080B2 (en) | 2004-03-24 | 2010-09-21 | Arm Limited | Null exception handling |
US9189230B2 (en) | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
US20050262278A1 (en) * | 2004-05-20 | 2005-11-24 | Schmidt Dominik J | Integrated circuit with a plurality of host processor family types |
DE102004025419A1 (de) * | 2004-05-24 | 2005-12-22 | Infineon Technologies Ag | Controller und Verfahren zum Verarbeiten von Befehlen |
DE102004025418A1 (de) * | 2004-05-24 | 2005-12-22 | Infineon Technologies Ag | Controller mit einer Decodiereinrichtung |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
TWI318359B (en) * | 2005-04-13 | 2009-12-11 | Ind Tech Res Inst | Unified single-core & multi-mode processor and its program execution method |
US7673119B2 (en) * | 2005-05-13 | 2010-03-02 | Texas Instruments Incorporated | VLIW optional fetch packet header extends instruction set space |
US7769983B2 (en) * | 2005-05-18 | 2010-08-03 | Qualcomm Incorporated | Caching instructions for a multiple-state processor |
US8250348B2 (en) * | 2005-05-19 | 2012-08-21 | International Business Machines Corporation | Methods and apparatus for dynamically switching processor mode |
US20060265555A1 (en) * | 2005-05-19 | 2006-11-23 | International Business Machines Corporation | Methods and apparatus for sharing processor resources |
US7725695B2 (en) * | 2005-05-31 | 2010-05-25 | Arm Limited | Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch |
US8352713B2 (en) * | 2006-08-09 | 2013-01-08 | Qualcomm Incorporated | Debug circuit comparing processor instruction set operating mode |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US7783867B2 (en) * | 2007-02-01 | 2010-08-24 | International Business Machines Corporation | Controlling instruction execution in a processing environment |
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 |
US7836285B2 (en) * | 2007-08-08 | 2010-11-16 | Analog Devices, Inc. | Implementation of variable length instruction encoding using alias addressing |
EP2203814A4 (en) * | 2007-09-19 | 2012-11-07 | Kpit Cummins Infosystems Ltd | MECHANISM FOR RELEASING PLUG AND PLAY HARDWARE COMPONENTS FOR SEMI-AUTOMATIC SOFTWARE MIGRATION |
US7979685B1 (en) | 2007-11-27 | 2011-07-12 | Oracle America, Inc. | Multiple instruction execution mode resource-constrained device |
CN101187858B (zh) * | 2007-12-05 | 2011-08-31 | 中国科学院计算技术研究所 | 一种risc处理器装置及其多模式下数据处理方法 |
US8195923B2 (en) * | 2009-04-07 | 2012-06-05 | Oracle America, Inc. | Methods and mechanisms to support multiple features for a number of opcodes |
US20120159127A1 (en) * | 2010-12-16 | 2012-06-21 | Microsoft Corporation | Security sandbox |
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 |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
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 |
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 |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
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 |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
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 |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
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) |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
EP2624126B1 (en) * | 2011-04-07 | 2016-11-02 | VIA Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
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 |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
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 |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
WO2013132767A1 (ja) * | 2012-03-09 | 2013-09-12 | パナソニック株式会社 | プロセッサ、マルチプロセッサシステム、コンパイラ、ソフトウェアシステム、メモリ制御システムおよびコンピュータシステム |
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 |
US9294567B2 (en) | 2014-05-02 | 2016-03-22 | Cavium, Inc. | Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller |
US20170228173A9 (en) * | 2014-05-02 | 2017-08-10 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
GB2530050B (en) * | 2014-09-10 | 2021-07-21 | Advanced Risc Mach Ltd | Debugging in a data processing apparatus |
US9971535B2 (en) * | 2014-11-05 | 2018-05-15 | Industrial Technology Research Institute | Conversion method for reducing power consumption and computing apparatus using the same |
GB2546465B (en) * | 2015-06-05 | 2018-02-28 | Advanced Risc Mach Ltd | Modal processing of program instructions |
US10303498B2 (en) | 2015-10-01 | 2019-05-28 | Microsoft Technology Licensing, Llc | Performance optimizations for emulators |
US10579125B2 (en) * | 2016-02-27 | 2020-03-03 | Intel Corporation | Processors, methods, and systems to adjust maximum clock frequencies based on instruction type |
US10572259B2 (en) * | 2018-01-22 | 2020-02-25 | Arm Limited | Hints in a data processing apparatus |
FR3097345B1 (fr) | 2019-06-13 | 2021-06-25 | Stmicroelectronics Grand Ouest Sas | Procede de gestion du fonctionnement d’une unite de calcul capable de fonctionner avec des instructions de tailles differentes et circuit integre correspondant |
GB2597708B (en) * | 2020-07-30 | 2022-11-02 | Advanced Risc Mach Ltd | Vector processing |
US11403100B2 (en) | 2020-08-31 | 2022-08-02 | Microsoft Technology Licensing, Llc | Dual architecture function pointers having consistent reference addresses |
US11231918B1 (en) | 2020-08-31 | 2022-01-25 | Microsoft Technologly Licensing, LLC | Native emulation compatible application binary interface for supporting emulation of foreign code |
US11042422B1 (en) | 2020-08-31 | 2021-06-22 | Microsoft Technology Licensing, Llc | Hybrid binaries supporting code stream folding |
US20240036866A1 (en) * | 2022-07-28 | 2024-02-01 | Texas Instruments Incorporated | Multiple instruction set architectures on a processing device |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6133546A (ja) * | 1984-07-25 | 1986-02-17 | Nec Corp | 情報処理装置 |
US5115500A (en) * | 1988-01-11 | 1992-05-19 | International Business Machines Corporation | Plural incompatible instruction format decode method and apparatus |
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 |
-
1995
- 1995-02-10 US US08/386,931 patent/US5638525A/en not_active Expired - Lifetime
-
1996
- 1996-02-05 AU AU47757/96A patent/AU4775796A/en not_active Abandoned
- 1996-02-05 EP EP96903781A patent/EP0808485A4/en not_active Withdrawn
- 1996-02-05 WO PCT/US1996/001516 patent/WO1996024895A1/en active IP Right Grant
- 1996-02-05 KR KR1019970705532A patent/KR100271947B1/ko not_active IP Right Cessation
- 1996-02-05 JP JP8524358A patent/JPH11503846A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100890243B1 (ko) * | 2000-10-05 | 2009-03-24 | 에이알엠 리미티드 | 변환된 명령어의 재시작 |
KR100834180B1 (ko) * | 2004-06-28 | 2008-05-30 | 씨아오보 리 | 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서 |
KR100879825B1 (ko) * | 2005-12-29 | 2009-01-21 | 인텔 코오퍼레이션 | 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 |
Also Published As
Publication number | Publication date |
---|---|
AU4775796A (en) | 1996-08-27 |
EP0808485A4 (en) | 2003-01-02 |
JPH11503846A (ja) | 1999-03-30 |
US5638525A (en) | 1997-06-10 |
WO1996024895A1 (en) | 1996-08-15 |
EP0808485A1 (en) | 1997-11-26 |
KR100271947B1 (ko) | 2000-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100271947B1 (ko) | 프로세서의 명령어 집합간의 변환 방법 및 장치 | |
US6219774B1 (en) | Address translation with/bypassing intermediate segmentation translation to accommodate two different instruction set architecture | |
US6408386B1 (en) | Method and apparatus for providing event handling functionality in a computer system | |
US5781750A (en) | Dual-instruction-set architecture CPU with hidden software emulation mode | |
JP3451595B2 (ja) | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ | |
KR101793318B1 (ko) | 명령어 에뮬레이션 프로세서, 방법 및 시스템 | |
US6757771B2 (en) | Stack switching mechanism in a computer system | |
US8874883B2 (en) | Debugging of a data processing apparatus | |
KR100403405B1 (ko) | 분산형버스액세스및제어조정에따라다수개의내부신호버스를공유하는다수개의회로기능요소를갖는집적회로 | |
US7243213B2 (en) | Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product | |
EP1320800B1 (en) | Cpu accessing an extended register set in an extended register mode and corresponding method | |
US6898697B1 (en) | Efficient method for mode change detection and synchronization | |
US5926646A (en) | Context-dependent memory-mapped registers for transparent expansion of a register file | |
US5909567A (en) | Apparatus and method for native mode processing in a RISC-based CISC processor | |
US5838897A (en) | Debugging a processor using data output during idle bus cycles | |
US5812823A (en) | Method and system for performing an emulation context save and restore that is transparent to the operating system | |
JPS6122331B2 (ko) | ||
JP3707581B2 (ja) | 自己整合スタック・ポインタを有するデータ処理システムおよびその方法 | |
EP0039227A2 (en) | Data processing system | |
US5404471A (en) | Method and apparatus for switching address generation modes in CPU having plural address generation modes | |
EP4315051A1 (en) | Apparatus and method for managing unsupported instruction set architecture (isa) features in a virtualized environment | |
JP2021157766A (ja) | シャドウスタックを効率的に管理および処理するための装置および方法 | |
EP0915416B1 (en) | System for allowing a two word instruction to be executed in a single cycle and method therefor | |
US5117491A (en) | Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding | |
US6081886A (en) | Holding mechanism for changing operation modes in a pipelined computer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20121102 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20130801 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20150730 Year of fee payment: 16 |
|
EXPY | Expiration of term |