KR100401799B1 - 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 - Google Patents

명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 Download PDF

Info

Publication number
KR100401799B1
KR100401799B1 KR10-2001-7004574A KR20017004574A KR100401799B1 KR 100401799 B1 KR100401799 B1 KR 100401799B1 KR 20017004574 A KR20017004574 A KR 20017004574A KR 100401799 B1 KR100401799 B1 KR 100401799B1
Authority
KR
South Korea
Prior art keywords
data format
format
processor
bit
memory
Prior art date
Application number
KR10-2001-7004574A
Other languages
English (en)
Other versions
KR20010080104A (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 KR20010080104A publication Critical patent/KR20010080104A/ko
Application granted granted Critical
Publication of KR100401799B1 publication Critical patent/KR100401799B1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

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

Abstract

프로세서 상에서 명령어를 에뮬레이팅하기 위한 방법 및 장치가 기재되어 있다. 명령어는 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 프로세서는 제2 데이터 포맷으로 연산한다. 오퍼랜드는 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환된다. 그리고 나서, 프로세서는 제2 데이터 포맷으로 결과를 생성하기 위해 제2 데이터 포맷으로 명령어를 실행한다. 결과는 제2 데이터 포맷으로부터 제1 데이터 포맷으로 변환된다.

Description

명령어 세트 아키텍처 천이에 대한 명령어 세트의 에뮬레이션{EMULATION OF AN INSTRUCTION SET ON AN INSTRUCTION SET ARCHITECTURE TRANSITION}
프로세서에 진보된 능력이 결합되도록 개선될 때, 이전 모델로 개발된 애플리케이션을 이용하여 소프트웨어 호환성을 유지하는 것이 중요하다. 특별한 문제점 하나는 논리적 및/또는 산술적인 연산을 위한 데이터의 표현이다.
예를 들어, 부동소수점(floating-point : FP) 수 포맷은 단일-정밀도(single-precision : SP) 및 이중-정밀도(double-precision : DP) 데이터 포맷을 가진다. SP 포맷은 통상적으로 32-비트 표현에 의해 표현되고, DP 포맷은 2개의 상이한 표현 타입 - 정규 64-비트 포맷 및 확장된 82-비트 포맷 - 을 가질 수 있다. 정규 프로세서는 통상적으로 레지스터 및 메모리에 모두 저장되는 오퍼랜드에 대해 정규의 64-비트 FPDP 포맷을 사용한다. 진보된 프로세서는 통상적으로 레지스터에 저장되는 오퍼랜드에 대해서는 확장된 82-비트 FPDP 포맷을 사용하고, 메모리에 저장되는 오퍼랜드에 대해서는 정규의 64-비트 FPDP 포맷을 사용한다. 예를 들어, 인텔 아키텍처(IA) 프로세서는 32-비트 모델 및 진보된 64-비트 모델: IA-32 프로세서 및 IA-64 프로세서를 가진다. IA-32 프로세서는 레지스터 및 메모리에 모두 저장되는 오퍼랜드에 대해 64-비트 FPDP 포맷을 사용한다. IA-64 프로세서는 메모리 오퍼랜드에 대해서는 64-비트 FPDP 포맷을, 레지스터 오퍼랜드에 대해서는 확장된 82-비트 FPDP 포맷을 사용한다.
정규 데이터 포맷으로 동작하는 하나의 명령어 세트로부터 진보된 데이터 포맷으로 동작하는 다른 명령어 세트로의 천이(transition)를 명령어 세트 아키텍처(instruction set architecture : ISA) 천이라 부른다. 정규 모드의 연산(예로, 64-비트 FPDP)을 이용하여 기록된 애플리케이션 프로그램이 진보된 모드의 연산(예로, 82-비트 FPDP)을 이용하는 프로세서로 전송되거나 또는 그 역이 되는 이러한 ISA 천이에서, 오퍼랜드 부정합(mismatch)이 발생할 수 있다. 이러한 부정합은 성능 저하를 야기시키고, 많은 경우에 소프트웨어가 호환되지 않도록 야기시킬 수 있다.
따라서, 확장된 데이터 포맷으로 동작하는 프로세서 상에서의 하나의 데이터 포맷에 대한 명령어 세트를 에뮬레이팅하는 방법을 제공하는 기술의 필요성이 존재한다.
본 발명은 컴퓨터 시스템에 관한 것으로, 특히 마이크로프로세서 명령어의 에뮬레이션(emulation)에 관한 것이다.
본 발명의 특징 및 장점은 다음의 상세한 설명으로부터 명확해질 것이다.
도1은 본 발명의 일실시예가 실시될 수 있는 컴퓨터 시스템을 도시한 도면.
도2는 본 발명의 일실시예에 따른 태깅된 아키텍처를 도시한 도면.
도3은 본 발명의 일실시예에 따른 포맷 변환을 도시한 도면.
도4는 본 발명의 일실시예에 따른 모드 천이를 도시한 도면.
도5는 본 발명의 일실시예에 따른 문맥 전환을 도시한 도면.
도6은 본 발명의 일실시예에 따른 수 포맷 변환을 도시한 도면.
도7은 본 발명의 일실시예에 따른 논리 명령어를 에뮬레이팅하는 과정을 도시한 도면.
도8은 본 발명의 일실시예에 따른 호출 연산을 도시한 도면.
도9는 본 발명의 일실시예에 따른 객체 코드 천이(OCT) 과정을 도시한 순서도.
발명의 요약
본 발명은 프로세서 상에서 명령어를 에뮬레이팅하기 위한 방법 및 장치이다. 명령어는 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 프로세서는 제2 데이터 포맷으로 연산한다. 그리고 나서, 프로세서는 제2 데이터 포맷으로 결과를 생성하기 위해 제2 데이터 포맷으로 명령어를 실행한다. 그 결과는 제2 데이터 포맷으로부터 제1 데이터 포맷으로 변환된다.
본 발명은 하나의 데이터 포맷 표현(representation)으로 연산하는 명령어를 다른 데이터 포맷 표현을 가지는 프로세서 상에서 에뮬레이팅하기 위한 방법 및 장치이다. 이 기술은 많은 실시예를 포함한다. 태깅된 아키텍처는 각 레지스터에 연관되는 태그 비트를 제공한다. 데이터 표현을 변환하기 위한 다양한 구조가 제공된다. 적합한 코드로 점프하기 위한 점프 명령어를 이용한 코드 패칭(code patching)은 모드 천이(mode transition) 또는 문맥 전환(context switch)으로 사용된다. 변환 명령어는 아키텍처 및 논리 명령어에 대한 정수와 부동소수점 수 간의 데이터 표현을 변환한다. 본 발명은 프로세서 아키텍처와 진보된 프로세서 아키텍처 간에 소프트웨어 호환성을 제공한다.
다음의 설명에서는, 설명의 편의를 위해, 다양한 세목들이 본 발명의 완전한 이해를 제공하기 위해 기재된다. 그러나, 이 기술 분야의 통상의 지식을 가진 자는 이러한 특정 세목들이 본 발명을 실시하기 위해 반드시 요구되지는 않는다는 것을 이해할 것이다. 다른 예에서, 주지된 전자 구조 및 회로들은 본 발명을 모호하지 않도록 하기 위해 블록도로 도시된다.
도1은 본 발명의 일실시예가 실시될 수 있는 컴퓨터 시스템을 도시한 도면이다. 컴퓨터 시스템(100)은 프로세서(110), 호스트 버스(130), 메모리 제어기(140) 및 저장 장치(150)를 포함한다.
프로세서(110)는 CISC(complex instruction set computers), RISC(reduced instruction set computers), VLIW(very long instruction word) 또는 하이브리드아키텍처(hybrid architecture)와 같은, 모든 타입의 아키텍처의 중앙 처리 장치를 나타낸다. 이 실시예는 단일 프로세서 컴퓨터 시스템에 대해 기재되지만, 본 발명은 다수-프로세서 컴퓨터 시스템에서 구현될 수 있다.
메모리 제어기(140)는 저장 장치(150)에 대한 다양한 액세스 기능을 제공한다. 메모리 제어기(140)는 프로세서를 저장 장치(150)에 액세스하도록 하는 호스트 버스(130)에 연결된다. 저장 장치(150)는 정보를 저장하기 위한 하나 또는 그 이상의 메커니즘을 나타낸다. 예를 들어, 저장 장치(150)는 비휘발성 또는 휘발성 메모리를 포함할 수 있다. 이러한 메모리의 예는 플래시 메모리, ROM, RAM을 포함한다.
도1은 또한 그 안에 프로그램 코드(152) 및 데이터(154)를 저장하고 있는 저장 장치(150)를 도시하고 있다. 프로그램 코드(152)는 본 발명에서의 기술의 일부 및/또는 전부를 수행하기 위한 필수 코드를 나타낸다. 특히, 프로그램 코드(152)는 에뮬레이션 코드(153)를 포함한다. 에뮬레이션 코드(153)는 프로세서(110) 상에서 하나의 데이터 포맷(또는 모드)으로 명령어를 에뮬레이팅한다. 데이터 블록(154)은 프로그램 코드(154), 그래픽 데이터 및 일시적인 데이터로 사용되는 데이터를 저장한다. 물론, 저장 장치(150)는, 본 발명을 이해하는데 필요하지 않은, 추가의 소프트웨어(미도시)를 포함하는 것이 바람직하다.
도1은 또한 디코딩 유닛(112), 실행 유닛(114), 레지스터 세트(116) 및 내부 버스(111)를 포함하는 프로세서를 도시하고 있다. 물론, 프로세서(110)는, 본 발명을 이해하는데 필요하지 않은, 추가의 회로를 포함한다. 디코딩 유닛(112)은 프로세서(110)에 의해 수신된 명령어를 제어 신호 및/또는 마이크로코드 엔트리포인트(microcode entry point)로 디코딩하는데 사용된다. 이들 제어 신호 및/또는 마이크로코드 엔트리 포인트에 응답하여, 실행 유닛(114)은 적합한 연산을 수행한다. 레지스터 세트(116)는, 레지스터 포맷으로 언급된 포맷2로 표현된 데이터를 저장하는 다수의 레지스터를 포함한다.
일실시예에서, 프로세서(110)는 인텔 아키텍처(Intel Architecture-64 : IA-64) 프로세서이다. IA-64 는 64-비트 데이터를 처리하는 64-비트 프로세서이다. IA-64에서, 64-비트 부동소수점 이중-정밀도(floating-point double-precision : FPDP) 수는 레지스터 세트(116)(확장 또는 레지스터 포맷)에서는 82-비트 FPDP로 표현되지만, 메모리(155)(정규 또는 메모리 포맷)에서는 64-비트 FPDP로 표현된다. 32-비트 프로세서(예로, IA-32)는 레지스터 및 메모리 모두에서, 정규 포맷(regular format)이라 부르는 64-비트 FPDP 포맷으로 64-비트 FPDP 수를 표현한다. 32-비트 프로세서(예로, IA-32)를 위해 개발된 프로그램을 64-비트 프로세서(예로, IA-64)로 포팅(porting)시 소프트웨어 호환성을 유지하기 위해, 일부 번역(translation) 또는 변환(conversion)이 필요하다. 본 발명에서의 기술은 64-비트 프로세서 상에서 32-비트 명령어를 에뮬레이팅하도록 사용될 수 있다. 다음의 논의에서, 프로세서(110)는 플랫폼 프로세서로 언급되고, 32-비트 명령어 세트를 이용하여 기록된 프로그램 또는 소프트웨어는 포팅 프로그램 또는 소프트웨어로 언급된다.
에뮬레이션은 많은 방식으로 구현될 수 있다. 하나의 방식은 플랫폼 프로세서 상에서 가벼운 하드웨어 수정을 포함한다. 다른 방식은 포팅 프로그램에 대한패칭 코드로 데이터 포맷의 변환을 포함한다.
본 발명에서 기재된 기술을 구현한 컴퓨터 프로그램 또는 소프트웨어는 머신 판독가능 매체에 저장 및/또는 전송될 수 있다. 이러한 머신 판독가능 기록 매체의 예는 RAM, ROM, EROM, 플래시 메모리, 자기 매체, CDROM, 플로피 디스켓, 하드 디스크, 광 디스크, 신호, 반송파 등과 같은 반도체 메모리를 포함한다. 컴퓨터 프로그램 또는 코드 시퀀스는, 프로세서가 제2 데이터 포맷으로 연산하는 동안, 제1 데이터 포맷으로 적어도 하나의 오퍼랜드를 연산하는 명령어를 에뮬레이팅한다. 컴퓨터 프로그램 또는 코드 시퀀스는 많은 연산을 수행하는 코드 세그먼트, 서브-프로그램, 서브-루틴 또는 함수를 포함한다. 이들 연산의 예는 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환하는 것, 제2 데이터 포맷으로 결과를 생성하기 위해 프로세서에 의해 제2 데이터 포맷으로 명령어를 에뮬레이팅하는 것, 제2 데이터 포맷으로부터의 결과를 제1 데이터 포맷으로 변환하는 것을 포함한다. 추가의 코드 세그먼트는 다음에서 더 설명되는 다른 기능들을 수행하는데 사용된다.
도2는 본 발명의 일실시예에 따른 태깅된 아키텍처(tagged architecture)를 도시한 도면이다. 태깅된 아키텍처는 레지스터 세트에 연관되는 태그 구조를 포함한다.
도2에 도시된 바와 같이, 프로세서(110)는 레지스터 세트(116a) 및 대응 태그 세트(116b)를 포함한다. 레지스터 세트(116a)는 N개의 레지스터(2101~210N)를 포함한다. 태그 세트(116b)는 N개의 레지스터(2101~210N)에 각각 대응하는 N개의 태그(2121~212N)를 포함한다.
각 태그(2121~212N)는 대응하는 레지스터의 포맷을 지시하는 태그 비트를 저장하고 있다. 예를 들어, 태그 비트는, 레지스터 포맷이 64-비트 정규 포맷이라는 것을 나타낼 때는 0, 레지스터 포맷이 82-비트 확장 포맷이라는 것을 나타낼 때는 1이 될 수 있다. 이 기술 분야의 통상의 지식을 가진 자에게 주지된 바와 같이, 다른 비트 패턴이 사용될 수 있다. 태그 세트는 연산과 피연산자(오퍼랜드) 사이에 포맷의 부정합이 존재하는지를 검출하기 위한 수단을 제공한다. 검출 논리 회로는 연산 타입을 대응하는 태그 비트와 비교하도록 구현될 수 있다. 포맷 부정합이 존재하는 경우, 오퍼랜드의 포맷을 바꾸기 위해 마이크로-루틴에 대한 제어를 지시하도록 트랩이 일어난다. 포맷 부정합은 자주 발생하지는 않는다. 따라서, 마이크로-트랩 어시스트(micro-trap assist)에 의해 초래되는 지연(latency)이 허용될 수 있다.
레지스터로부터 메모리로 모두 저장할 때, 포맷은 확장 포맷에서 메모리 포맷으로 변경된다. 도2는 레지스터K(210K)의 컨텐츠를 메모리(230)로 옮기기 위한 저장 명령어를 도시하고 있다.
문맥 전환(context switch)에서, 레지스터 세트(116a)는 저장 명령어(예로, FXSAVE)에 의해 레지스터(24)에 저장되거나 재저장 명령어(예로, FXRESTOR)에 의해 재저장에 따라 메모리에 저장된다. 연산 및 오퍼랜드 포맷 부정합시, 데이터의 제2 사용에서 포맷이 변환된다. 태그 세트(116a)는 저장 명령어에 의해 저장되지 않는다. 태그는 재저장에 대한 메모리 포맷을 나타내도록 리셋된다.
도3은 본 발명의 일실시예에 따른 포맷 변환을 도시한 도면이다. 포맷 변환방법은 모든 연산 전에 64-비트 포맷을 82-비트 포맷으로 변환하고, 모든 연산 후에 82-비트 포맷을 64-비트 포맷으로 변환한다. 포맷 변환은 포맷1 변환기(320), 포맷2 변환기(360) 및 연산(340)을 포함한다.
도3은 오퍼랜드(310, 330, 350, 370)를 보여주고 있다. 오퍼랜드(310, 370)는 포맷1(예로, 64-비트)로, 오퍼랜드(330, 350)는 포맷2(예로, 82-비트)로 될 수 있다. 포맷1 변환기는 연산 전에 오퍼랜드(310)를 포맷1로부터 포맷2의 오퍼랜드(330)로 변환한다. 연산(340)은 포맷2를 이용하여 수행된다. 연산 후에, 오퍼랜드(350)는 포맷2 변환기(360)에 의해 포맷1의 오퍼랜드(370)로 다시 변환된다.
도4는 본 발명의 일실시예에 따른 모드 천이를 도시한 도면이다. 모드 천이(예로, ISA 천이)는 제1 모드(예로, IA32)로 실행되는 애플리케이션이 제2 모드(예로, IA64)의 애플리케이션에 대해 호출하는 경우에 발생한다.
모드 천이는 모드1 애플리케이션(410), 모드1 도메인(420), 모드2 도메인(430) 및 모드2 애플리케이션(440)을 포함한다. 모드1 애플리케이션(410)은 모드2 애플리케이션(440)으로 호출한다. 모드2 애플리케이션(440)은 모드1 포맷(예로, 레지스터 포맷)에 대해 알지 못한다. 모드1 도메인(420)은 점프 명령어(예로, JUMPE)에 의해 모드2로의 점프를 제공한다. 모드2 도메인(430)은 파라미터의 모드2 변환을 제공한다. 그리고 나서, 연산은 모드2 애플리케이션(440)에서 발생한다.
모드2 애플리케이션(440)으로부터 모드1 애플리케이션(410)으로의 모드 천이시, 분기 명령어(예로, BR_IA)가 모드2 애플리케이션(440)으로부터 모드2 애플리케이션(410)으로의 출구(exit)를 제공한다.
모드1 애플리케이션(410)에서, 이중 정밀도 데이터는 메모리 또는 레지스터에서의 확장 포맷으로 표현될 수 있다. 모드1 도메인(420)에서, 모드1 애플리케이션(410) 내의 모든 레지스터가 메모리에 저장된다. 모드2 도메인(430)은 사용에 따른 포맷으로 메모리로부터 파라미터를 로딩한다. 모드2 애플리케이션(440)에서, 이중 정밀도 데이터는 레지스터에서의 확장 포맷으로 변환된다. 연산 후에, 모드2 애플리케이션에서, 분기 명령어는 모드2 애플리케이션(410)에 대한 메모리에서의 결과 파라미터를 패스한다.
도5는 본 발명의 일실시예에 따른 문맥 전환(500)을 도시한 도면이다. 문맥 전환(500)은 인터럽트로 인해 발생하고, 모드1 애플리케이션(410) 및 모드2 운영체제(520)를 포함한다. 이 기술 분야의 통상의 지식을 가진 자에게 주지된 바와 같이, 문맥 전환을 야기시키는 다른 것으로 프로세스 스와핑(swapping), 멀티태스킹(multitasking) 등이 가능하다.
모드1 애플리케이션은 모드1 명령어 세트(예로, IA32)로 실행하는 애플리케이션이다. 모드1 애플리케이션(410)은 호출 코드(512) 및 리턴 코드(514)를 포함한다. 모드2 운영체제(OS)(520)는 모드2 명령어 세트(예로, IA64)로 실행되는 운영 체제이다. 모드2 OS(520)는 패치 코드(522), 저장 코드(524), 모드2 코드(525), 재저장 코드(526) 및 리턴 코드(528)를 포함한다.
도5에 도시된 문맥 전환(500)에서, 모드1 애플리케이션(410)은 인터럽트를 수신한다. 모드1 애플리케이션(410)의 레지스터는 메모리 및 확장 포맷으로 된다.호출 코드(512)는 모드2 OS(520)에 대해 호출한다. 제어가 모드2 OS(520)로 패스함에 따라, 패치 코드(522)는,JUMPE 명령어와 같은 패치 명령어를 실행함으로써, 에뮬레이션 모드로부터 원시 모드(native mode)로의 천이를 수행한다. 모든 레지스터는 패치 명령어에 대해 메모리 포맷으로 변환된다. 저장 코드(524)는 모든 모드1 레지스터를 비트 저장 명령어를 이용하여 비트로 저장한다. 비트 저장 명령어(예로, STF.SPILL)는 레지스터의 컨텐츠를 변환하지 않고 저장한다. 예를 들어, IA32 FP 레지스터는 변환되지 않고 16바이트로 메모리에 저장된다.
그 후, 모드2 코드(525)는 인터럽트 또는 다른 태스크를 적합하게 제공하기 위해 모드2 명령어 세트(예로, IS64)의 실행을 진행한다. 모드2 코드(525)가 실행을 완료한 후, 재저장 코드(526)는 비트 재저장 명령어를 이용하여 저장된 모드1 레지스터를 비트로 재저장한다. 비트 재저장 명령어(예로, LDF.FILL)는 비트 저장 명령어에 의해 메모리에 저장된 레지스터 비트를 레지스터로 재저장한다. 예를 들어, IA32 FP 레지스터는 변환없이 16바이트로 재저장된다. 그리고 나서, 리턴 코드(528)는 분기 명령어(예로, BR_IA)를 실행함으로써, 모드1 애플리케이션으로 리턴하는 ISA 천이를 야기시킨다. 모드1 애플리케이션(410)에서의 리턴 코드(514)에 대한 리턴시, 모든 레지스터는 메모리 포맷으로 재저장된다. 태깅된 아키텍처가 사용된 경우, 모든 내부 태그는 메모리 포맷으로 리셋된다. 모드1 애플리케이션(410)에서의 리턴 코드(514)는 모드1 환경에서의 연산을 지속한다.
도6은 본 발명의 일실시예에 따른 수 포맷 변환(number format conversion)을 도시한 도면이다. 수 포맷 변환은 패킹된 32-비트 정수(INT) 항목(610)을 패킹된 32-비트 단일 정밀도(SP) 항목(660)으로, 및 그 역으로 변환한다. 패킹된 32-비트 INT 항목(610)은 변환 시퀀스(605)에 의해 패킹된 32-비트 SP 항목(660)으로 변환된다. 패킹된 32-비트 SP 항목(660)은, fpcvt 명령어와 같은 원시 변환 명령어를 이용함으로써, 패킹된 32-비트 INT 항목(610)으로 변환된다.
변환 시퀀스(605)는, 항목(610)을 각 부분이 32-비트 INT 항목인 2개의 개별 부분으로 언패킹함으로써, 패킹된 32-비트 INT 항목(610)을 언패킹된 32-비트 INT 항목(620)으로 변환한다. 각각의 32-비트 INT 항목을 대응하는 64-비트 INT 항목으로 변환함으로써, 언패킹된 32-비트 INT 항목(620)이 언패킹된 64-비트 INT 항목(630)으로 변환된다. 그리고 나서, 각각의 64-비트 INT 항목을 대응하는 82-비트 DP 항목으로 변환함으로써, 언패킹된 64-비트 INT 항목(630)이 언패킹된 82-비트 DP 항목(640)으로 변환된다. 그리고, 82-비트 DP 항목을 패킹된 포맷으로 패킹 또는 결합함으로써, 언패킹된 82-비트 DP 항목(640)이 패킹된 82-비트 DP 항목(650)으로 변환된다. 최종적으로, 패킹된 82-비트 DP 항목(650)은 32-비트 DP 항목(660)으로 변환된다.
도7은 본 발명의 일실시예에 따른 논리 명령어를 에뮬레이팅하는 과정(700)을 도시한 도면이다.
START 후에, 프로세스(700)는 명령어가 ANDNDP, ANDDPD, ORDP, XORDP와 같은 논리적 이중 정밀도(DP) 명령어인지를 판단한다(블록710). 만일, 그렇지 않다면, 프로세스(700)는 종료된다. 만일, 그 명령어가 논리적 DP 명령어 중 하나라면, 다음으로 프로세스(700)는 오퍼랜드가 메모리 포맷인지를 판단한다(블록720). 만일,그렇지 않다면, 프로세스(700)는 종료된다. 만일, 오퍼랜드가 메모리 포맷이라면, 프로세스(700)는 유효자리(significand)가 제로인지를 판단한다. 만일, 그렇지 않다면, 프로세스(700)는 지수 필드를 0x1003E로 설정하고(블록750), 논리 연산을 수행하도록 진행한다(블록760). 만일, 유효자리가 제로라면, 프로세스(700)는 지수 필드를 0x0으로 설정하고(블록740), FAND, FANDCM, FOR, FXOR과 같은 대응하는 논리 연산(블록760)을 수행하도록 진행한다.
도8은 본 발명의 일실시예에 따른 호출 연산(800)을 도시한 도면이다. 호출 연산(800)은 호출자(caller)(810) 및 피호출자(callee)(820)를 포함한다.
호출자(810)는 하나의 데이터 포맷으로 애플리케이션을 실행하여, 피호출자(820)를 호출한다. 피호출자(820)는 다른 데이터 포맷으로 애플리케이션을 실행한다. 호출자는 그 레지스터의 사용법을 알고 있고, 이에 따라 피호출자(820)를 호출하기 전에 보존될 필요가 있는 레지스터만을 저장한다. 피호출자(820)는 레지스터를 메모리에 비트로 저장함으로써, 태그 비트에 따라 레지스터를 비운다. 연산 후에, 피호출자(820)는 메모리에 저장된 레지스터 비트를 메모리 포맷으로 재저장한다. 포맷 부정합이 존재하는 경우, 피호출자(820)는 호출자 명령어를 실행시에 다시 변환한다. 호출자(810)에게 리턴되면, 호출자는 의사 데이터 타입 변환(spurious data type conversion)을 피한다.
도9는 본 발명의 일실시예에 따른 객체 코드 번역(object code translation)을 위한 프로세스(900)를 도시한 흐름도이다.
START 후에, 프로세스(900)는 명령어가 진보된 모드(enhanced mode : EM) 원시 명령어인지를 판단한다(블록910). 만일, 그렇지 않다면, 프로세스(900)는 종료된다. 만일, 명령어가 EM 원시 명령어라면, 프로세스(900)는 그것이 패킹된 DP 명령어 중 하나인지를 판단한다. 만일, 그렇지 않다면, 프로세스(900)는 종료된다. 만일, 그 명령어가 패킹된 DP 명령어라면, 프로세스(900)는 명령어를 대응하는 원시 DP 명령어로 에뮬레이팅한다(블록930). 프로세스(900)는 메모리 포맷(예로, 64-비트 DP)을 확장 DP 포맷(예로, 82-비트 DP)으로 변환하기 위해 적합한 변환 명령어를 삽입한다. 변환 명령어는 통상적으로 저장 및 로드 시퀀스를 포함한다.
다음으로, 프로세스(900)는 DP 명령어를 확장 DP 포맷(예로, 82-비트 DP)으로 실행한다. 실행 후에, 프로세서(900)는 확장 DP 포맷(예로, 82-비트)을 메모리 포맷(예로, 64-비트)으로 변환하기 위해 변환 명령어를 삽입한다. 또한, 변환 명령어는 통상적으로 저장 및 로드 시퀀스를 포함한다. 그리고 나서, 프로세스(900)가 종료된다.
본 발명은 확장 정밀도 포맷 표현을 가진 프로세서 상에서 이중 정밀도 명령어 세트를 에뮬레이팅하는 기술을 제공한다. 이 기술은 포맷 변환, 문맥 전환, 태깅된 아키텍처, 호출 절차 및 변환 명령어를 포함한다.
본 발명이 특정한 예시적인 실시예를 참조하여 설명되었다. 그러나, 첨부된 청구항에서 기술되는 바와 같이, 본 발명의 보다 넓은 사상 및 범위에서 벗어나지 않는 한, 다양한 수정 및 변경이 가능하다는 것은 명백한 사실이다. 따라서, 본 명세서 및 도면은 제한적 관점이라기 보다는 하나의 예시로서 간주되어야 한다. 이에 따라, 본 발명의 범위는 첨부한 청구항에 의해서만 제한되어야 한다.

Claims (28)

  1. 프로세서 상에서 명령어를 에뮬레이팅하기 위한 방법 - 상기 명령어는 적어도 하나의 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 상기 프로세서는 제2 데이터 포맷으로 연산함 - 에 있어서,
    적어도 하나의 오퍼랜드를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환하는 단계;
    상기 제2 데이터 포맷으로 결과를 생성하기 위해, 상기 프로세서에 의해 상기 명령어를 상기 제2 데이터 포맷으로 실행하는 단계; 및
    상기 결과를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 데이터 포맷은 DPFP(double-precision floating-point) 포맷인
    방법.
  3. 제2항에 있어서,
    상기 제2 데이터 포맷은 EDPFP(expanded double-precision floating-point) 포맷인
    방법.
  4. 제3항에 있어서,
    상기 DPFP 포맷은 64-비트 표현(representation)을 가지는
    방법.
  5. 제4항에 있어서,
    상기 EDPFP 포맷은 82-비트 표현을 가지는
    방법.
  6. 제5항에 있어서,
    상기 64-비트 DPFP 포맷은 메모리에서 사용되고, 상기 82-비트 EDPFP 포맷은 상기 프로세서의 레지스터에서 사용되는
    방법.
  7. 제6항에 있어서,
    상기 레지스터가 상기 제1 및 제2 데이터 포맷 중의 하나로 되어있는지를 나타내기 위해, 상기 프로세서의 레지스터 중 하나에 태그 비트를 연관시키는 단계
    를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 태그 비트와 상기 대응하는 명령어 사이에 부정합(mismatch)이 존재하는 경우. 상기 프로세서는 상기 오퍼랜드를 상기 제1 및 제2 데이터 포맷 중의 하나로 변환하는
    방법.
  9. 제8항에 있어서,
    상기 레지스터 중 하나를 상기 제2 데이터 포맷으로 상기 메모리에 저장하는 단계
    를 더 포함하는 방법.
  10. 제9항에 있어서,
    문맥 전환(context switch)시에 저장 연산이 존재하는 경우, 레지스터의 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리에 저장하는 단계
    를 더 포함하는 방법.
  11. 제10항에 있어서,
    문맥 전환시에 재저장 연산이 존재하는 경우, 상기 레지스터에 저장된 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리로부터 상기 레지스터로 재저장하는 단계
    를 더 포함하는 방법.
  12. 프로세서 상에서 명령어를 에뮬레이팅하기 위해, 상기 프로세서에 의한 처리를 위한 컴퓨터 프로그램이 구현된 머신 판독가능 매체 - 상기 명령어는 적어도 하나의 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 상기 프로세서는 제2 데이터 포맷으로 연산함 - 에 있어서,
    상기 컴퓨터 프로그램은,
    적어도 하나의 오퍼랜드를 상기 제1 데이터 포맷으로부터 상기 제2 데이터포맷으로 변환하기 위한 제1 코드 세그먼트;
    상기 제2 데이터 포맷으로 결과를 생성하기 위해, 상기 프로세서에 의해 상기 명령어를 상기 제2 데이터 포맷으로 실행하기 위한 제2 코드 세그먼트; 및
    상기 제2 데이터 포맷으로부터의 상기 결과를 상기 제1 데이터 포맷으로 변환하기 위한 제3 코드 세그먼트를 포함하는
    머신 판독가능 매체.
  13. 제12항에 있어서,
    상기 제1 데이터 포맷은 DPFP 포맷인
    머신 판독가능 매체.
  14. 제13항에 있어서,
    상기 제2 데이터 포맷은 EDPFP 포맷인
    머신 판독가능 매체.
  15. 제14항에 있어서,
    상기 DPFP 포맷은 64-비트 표현을 가지는
    머신 판독가능 매체.
  16. 제15항에 있어서,
    상기 EDPFP 포맷은 82-비트 표현을 가지는
    머신 판독가능 매체.
  17. 제16항에 있어서,
    상기 64-비트 DPFP 포맷은 메모리에서 사용되고, 상기 82-비트 EDPFP 포맷은 상기 프로세서의 레지스터에서 사용되는
    머신 판독가능 매체.
  18. 제17항에 있어서,
    상기 컴퓨터 프로그램은, 상기 레지스터가 상기 제1 및 제2 데이터 포맷 중의 하나로 되어있는지를 나타내기 위해, 상기 프로세서의 레지스터 중 하나에 태그 비트를 연관시키기 위한 제4 코드 세그먼트를 더 포함하는
    머신 판독가능 매체.
  19. 제18항에 있어서,
    상기 컴퓨터 프로그램은, 상기 태그 비트와 상기 대응하는 명령어 사이에 부정합이 존재하는 경우, 상기 오퍼랜드를 상기 제1 및 제2 데이터 포맷 중의 하나로 변환하기 위한 제5 코드 세그먼트를 더 포함하는
    머신 판독가능 매체.
  20. 제19항에 있어서,
    상기 컴퓨터 프로그램은 상기 레지스터 중 하나를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제6 코드 세그먼트를 더 포함하는
    머신 판독가능 매체.
  21. 제20항에 있어서,
    상기 컴퓨터 프로그램은, 문맥 전환시에 저장 연산이 존재하는 경우, 레지스터의 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제7 코드 세그먼트를 더 포함하는
    머신 판독가능 매체.
  22. 제21항에 있어서,
    상기 컴퓨터 프로그램은, 문맥 전환시에 재저장 연산이 존재하는 경우, 상기 레지스터에 저장된 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리로부터 상기 레지스터로 재저장하기 위한 제8 코드 세그먼트를 더 포함하는
    머신 판독가능 매체.
  23. 프로세서; 및
    상기 프로세서에 연결된 메모리 - 상기 메모리는 상기 프로세서가 상기 프로세서 상에서 명령어를 에뮬레이팅하도록 야기시키는 코드 시퀀스를 저장하고, 상기 명령어는 적어도 하나의 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 상기 프로세서는 제2 데이터 포맷으로 연산함 -
    를 포함하고,
    상기 코드 시퀀스는,
    적어도 하나의 오퍼랜드를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환하기 위한 제1 코드 세그먼트;
    상기 제2 데이터 포맷으로 결과를 생성하기 위해, 상기 프로세서에 의해 상기 명령어를 상기 제2 데이터 포맷으로 실행하기 위한 제2 코드 세그먼트; 및
    상기 제2 데이터 포맷으로부터의 상기 결과를 상기 제1 데이터 포맷으로 변환하기 위한 제3 코드 세그먼트를 포함하는
    시스템.
  24. 제23항에 있어서,
    상기 코드 시퀀스는, 상기 레지스터가 상기 제1 및 제2 데이터 포맷 중의 하나로 되어있는지를 나타내기 위해, 상기 프로세서의 레지스터 중 하나에 태그 비트를 연관시키기 위한 제4 코드 세그먼트를 더 포함하는
    시스템.
  25. 제24항에 있어서,
    상기 코드 시퀀스는, 상기 태그 비트와 상기 대응하는 명령어 사이에 부정합이 존재하는 경우, 상기 오퍼랜드를 상기 제1 및 제2 데이터 포맷 중의 하나로 변환하기 위한 제5 코드 세그먼트를 더 포함하는
    시스템.
  26. 제25항에 있어서,
    상기 코드 시퀀스는 상기 레지스터 중 하나를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제6 코드 세그먼트를 더 포함하는
    시스템.
  27. 제26항에 있어서,
    상기 코드 시퀀스는, 문맥 전환시에 저장 연산이 존재하는 경우, 레지스터의 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제7 코드 세그먼트를 더 포함하는
    시스템.
  28. 제27항에 있어서,
    상기 코드 시퀀스는, 문맥 전환시에 재저장 연산이 존재하는 경우, 상기 레지스터에 저장된 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리로부터 상기 레지스터로 재저장하기 위한 제8 코드 세그먼트를 더 포함하는
    시스템.
KR10-2001-7004574A 1998-10-12 1999-10-06 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 KR100401799B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/170,131 1998-10-12
US09/170,131 US6163764A (en) 1998-10-12 1998-10-12 Emulation of an instruction set on an instruction set architecture transition

Publications (2)

Publication Number Publication Date
KR20010080104A KR20010080104A (ko) 2001-08-22
KR100401799B1 true KR100401799B1 (ko) 2003-10-17

Family

ID=22618665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7004574A KR100401799B1 (ko) 1998-10-12 1999-10-06 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션

Country Status (7)

Country Link
US (1) US6163764A (ko)
KR (1) KR100401799B1 (ko)
CN (1) CN1126034C (ko)
AU (1) AU1104000A (ko)
DE (1) DE19983632B4 (ko)
GB (1) GB2357876B (ko)
WO (1) WO2000022524A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
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
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
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
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6529862B1 (en) * 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US6516295B1 (en) * 1999-06-30 2003-02-04 Bull Hn Information Systems Inc. Method and apparatus for emulating self-modifying code
US6564179B1 (en) * 1999-07-26 2003-05-13 Agere Systems Inc. DSP emulating a microcontroller
US6845353B1 (en) 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US6609247B1 (en) * 2000-02-18 2003-08-19 Hewlett-Packard Development Company Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field
US6601163B1 (en) * 2000-05-08 2003-07-29 International Business Machines Corporation Method and system for executing adapter configuration routines utilizing different operating modes
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
US20030093774A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton State-specific variants of translated code under emulation
US7092869B2 (en) * 2001-11-14 2006-08-15 Ronald Hilton Memory address prediction under emulation
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7171546B2 (en) * 2002-05-23 2007-01-30 Adams Phillip M CPU life-extension apparatus and method
US7779407B2 (en) * 2002-05-29 2010-08-17 Adams Phillip M Computer-hardware, life-extension apparatus and method
US7299170B2 (en) * 2003-06-28 2007-11-20 Transitive Limited Method and apparatus for the emulation of high precision floating point instructions
US7287173B2 (en) * 2003-12-19 2007-10-23 Intel Corporation Method for computing power consumption levels of instruction and recompiling the program to reduce the excess power consumption
US8255882B2 (en) * 2004-12-30 2012-08-28 Intel Corporation Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture
US7447882B2 (en) * 2005-04-20 2008-11-04 Arm Limited Context switching within a data processing system having a branch prediction mechanism
US7360031B2 (en) * 2005-06-29 2008-04-15 Intel Corporation Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US7394409B1 (en) * 2007-02-20 2008-07-01 International Business Machines Corporation Method of doing pack ASCII zSeries instructions
US7408484B1 (en) * 2007-02-20 2008-08-05 International Business Machines Corporation Method of doing PACK unicode zSeries instructions
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
CN101676863B (zh) * 2008-08-15 2012-12-26 北京北大众志微系统科技有限责任公司 一种双宽度指令系统的性能无损切换方法及其应用系统
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US8694973B2 (en) * 2011-09-27 2014-04-08 Unisys Corporation Abstracting computational instructions to improve performance
US9563432B2 (en) 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction
US11263010B2 (en) 2019-07-09 2022-03-01 Micron Technology, Inc. Bit string lookup data structure

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5742794A (en) * 1995-10-13 1998-04-21 Dell Usa, L.P. Emulation techniques for computer systems having mixed processor/software configurations
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5729724A (en) * 1995-12-20 1998-03-17 Intel Corporation Adaptive 128-bit floating point load and store operations for quadruple precision compatibility
US5740093A (en) * 1995-12-20 1998-04-14 Intel Corporation 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility
US5764959A (en) * 1995-12-20 1998-06-09 Intel Corporation Adaptive 128-bit floating point load and store instructions for quad-precision compatibility
US5920721A (en) * 1997-06-11 1999-07-06 Digital Equipment Corporation Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments
US5870575A (en) * 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode

Also Published As

Publication number Publication date
GB2357876A (en) 2001-07-04
GB2357876B (en) 2003-08-27
DE19983632B4 (de) 2007-02-22
KR20010080104A (ko) 2001-08-22
CN1126034C (zh) 2003-10-29
AU1104000A (en) 2000-05-01
US6163764A (en) 2000-12-19
WO2000022524A9 (en) 2001-01-04
WO2000022524A1 (en) 2000-04-20
DE19983632T1 (de) 2001-09-27
GB0107747D0 (en) 2001-05-16
CN1328666A (zh) 2001-12-26

Similar Documents

Publication Publication Date Title
KR100401799B1 (ko) 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션
JP5501338B2 (ja) X86の仮想機をサポートするriscプロセッサ装置及び方法
RU2292581C2 (ru) Команды загрузки/перемещения и копирования для процессора
JP6456867B2 (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
US5781750A (en) Dual-instruction-set architecture CPU with hidden software emulation mode
KR100327776B1 (ko) 다중 명령세트를 사용하는 데이터 처리방법
Sites et al. Alpha AXP architecture reference manual
US7434030B2 (en) Processor system having accelerator of Java-type of programming language
US5638525A (en) Processor capable of executing programs that contain RISC and CISC instructions
US9146740B2 (en) Branch prediction preloading
GB2540948A (en) Apparatus with reduced hardware register set
JP3193650B2 (ja) オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム
JP2002512399A (ja) 外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ
JP2013242918A (ja) 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ
KR20010050792A (ko) 2개의 서로 다른 고정 길이 명령 세트를 실행하기 위한프로세서 아키텍쳐
JPH0496825A (ja) データ・プロセッサ
US5327567A (en) Method and system for returning emulated results from a trap handler
US6442676B1 (en) Processor with different width functional units ignoring extra bits of bus wider than instruction width
US5155818A (en) Unconditional wide branch instruction acceleration
US5754810A (en) Specialized millicode instruction for certain decimal operations
JP2004508607A (ja) 例外ルーチンを有するプロセッサのレジスタライトトラフィックを減じる装置及び方法
US7039792B1 (en) Method and system for implementing a floating point compare using recorded flags
JP2559929B2 (ja) プログラマブルコントローラ
CN117742727A (zh) 二进制翻译方法、装置、电子设备及存储介质
JPH06501805A (ja) 複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャ

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: 20110930

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20120919

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee