KR100237987B1 - 전용 레지스터의 내용 상에서 동작하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템 - Google Patents

전용 레지스터의 내용 상에서 동작하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR100237987B1
KR100237987B1 KR1019960046662A KR19960046662A KR100237987B1 KR 100237987 B1 KR100237987 B1 KR 100237987B1 KR 1019960046662 A KR1019960046662 A KR 1019960046662A KR 19960046662 A KR19960046662 A KR 19960046662A KR 100237987 B1 KR100237987 B1 KR 100237987B1
Authority
KR
South Korea
Prior art keywords
instruction
processor
operand
register
unit
Prior art date
Application number
KR1019960046662A
Other languages
English (en)
Other versions
KR970059922A (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 KR970059922A publication Critical patent/KR970059922A/ko
Application granted granted Critical
Publication of KR100237987B1 publication Critical patent/KR100237987B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code

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

제1 오퍼랜드와 제2 오퍼랜드를 갖는 게스트 명령어를 에뮬레이팅하는 프로세서의 성능을 향상시키기 위한 시스템 및 방법이 제안되었다. 상기 제1 오퍼랜드는 범용 레지스터에 저장되어 있고, 상기 제2 오퍼랜드는 전용 레지스터에 저장되어 있다. 본 방법 및 시스템은 상기 제2 오퍼랜드를 전용 레지스터로부터 범용 레지스터로 이동시키지 않고 제1 오퍼랜드와 제2오퍼랜드를 사용하여 연산을 수행하는 호스트 명령을 제공한다. 본 발명은 게스트 명령어로부터 제공된 즉치 데이타 상에서 동작하기 위해 필요한 시맨틱 루틴의 명령어 개수를 감소시켜, 에뮬레이션 성능을 향상시킨다.

Description

전용 레지스터의 내용 상에서 동작하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템
본 발명은 호스트 프로세서에서 게스트 명령어(guest instructions)를 에뮬레이팅하기 위한 방법 및 시스템에 관한 것으로서, 특히 전용 레지스터의 내용(special purpose register contents) 상에서 동작하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템에 관한 것이다.
모토롤라 파워 PCTM과 같은 호스트 프로세서 상에서 인텔 x86 명령어 셋과 같은 게스트 명령어 셋의 소프트웨어를 에뮬레이팅하는 방법에는 두 가지가 있다. 첫번째 방법은 해석 프로그램(interpreter)을 사용하는 해석 방법이고, 두번째 방법은 동적 변환 프로그램(dynamic translator)을 사용하는 동적 변환 방법이다. 종래의 호스트 프로세서에서, 해석 프로그램은 하드웨어로 수행되는 페치, 디코딩, 그리고 실행 사이클을 모의한다(mimic). 동적 변환 프로그램은 게스트 명령어의 명령어 블록을 페치 및 디코딩하여 이를 호스트 명령으로 변환하고, 나중에 이들을 재사용한다. 상기 각 방법은 장점과 단점을 가지고 있다.
전형적으로, 해석 프로그램은 동적 변환 프로그램에 비해 적은 메모리를 사용하는 반면, 동작 속도가 느리다. 동적 변환 프로그램은 게스트 프로그램에서 특정 부분이 자주 사용되는 경우에 양호하게 동작한다. 그러나, 게스트 프로그램에서 이전에 변환된 부분이 수정되는 경우에는 동적 변환 프로그램의 실행 성능은 저하된다.
본 발명은 양수인은 상기 양 방법의 장점, 즉 해석 프로그램의 작은 사이즈와 동적 변환 프로그램의 빠른 실행 속도를 모두 갖춘 해답은 얻기 위해서, 소프트웨어 에뮬레이션 방법을 보조하는 하드웨어를 개발하였다. 상기 보조 하드웨어가 사용되기 전에는, 각 게스트 명령어의 기능을 수행하기 위해 필요한 호스트 명령 시퀀스가 시맨틱 루틴(semantic routines)이라고 불리는 별개의 함수로 컴파일되어 메모리에 저장되었다. 하드웨어와 소프트웨어가 협력하여 게스트 명령어를 페치하고 디코딩하며, 이에 대응하는 시맨틱 루틴을 호스트 프로세서로 디스패치(dispatch)한다.
소정의 게스트 명령어는 하나 이상의 소오스 오퍼랜드(source operand) 상에서 연산을 수행하고, 그 결과는 행선 오퍼랜드(destination operand)에 저장한다. 전형적으로, 2개의 오퍼랜드는 레지스터 내용이거나 즉치 데이타(immediate data)인데, 여기에서 상기 즉치 데이타는 상수이다.
게스트 명령어를 에뮬레이팅할 때, 하드웨어 보조 유닛은 전형적으로 게스트 명령어로부터의 소오스 오퍼랜드를 호스트 프로세서 내의 하나 이상의 범용 레지스터(GPRs)에 저장한다. 그러나, 즉치 데이타인 소오스 오퍼랜드는 전형적으로 상기 하드웨어 보조 유닛 내의 전용 레지스터(SPRs)에 저장된다.
게스트 명령어가 소오스 오퍼랜드와 즉치 데이타 상에서 가산 연산과 같은 소정의 연산을 수행하는 때에는, GPR 내의 소오스 오퍼랜드가 SPR 내의 즉치 데이타에 가산되어야 한다. 그러나, 상기 가산 동작은 GPR의 내용을 가산하는 기능밖에 가지고 있지 못한, 호스트 프로세서 내의 정수 유닛에 의해 수행된다. 따라서, SPR의 내용 상에서 연산을 수행하는 시맨틱 루틴은 상기 SPR의 내용을 GPR로 이동시키는 부가적인 호스트 명령을 포함하여야 한다. 그렇게 하면, 정수 유닛이 제1 GPR 내의 오퍼랜드와 제2 GPR 내의 즉치 데이타를 가산할 수 있다. 이러한 방법의 단점은 시맨틱 루틴 내의 상기 부가적인 이동 명령을 실행함으로써 호스트 프로세서의 에뮬레이션 성능이 현저히 저하된다는 것이다.
따라서, 상기 전용 레지스터의 내용 상에서 동작하는 명령을 사용함으로써 에뮬레이션 성능을 향상시킬 수 있는 방법 및 시스템이 요구된다.
본 발명은 게스트 명령어가 제1제2 오퍼랜드를 포함할 때, 상기 게스트 명령어를 에뮬레이팅하는 프로세서의 성능을 향상시키기 위한 방법 및 시스템을 제공한다. 상기 제1 오퍼랜드는 범용 레지스터에 저장되고 있고, 상기 제2 오퍼랜드는 전용 레지스터에 저장되어 있다. 본 방법 및 시스템은 상기 제2 오퍼랜드를 전용 레지스터로부터 범용 레지스터로 이동시키지 않고 제1 오퍼랜드와 제2 오퍼랜드를 사용하여 연산을 수행하는 호스트 명령을 제공한다.
본 명세서에 개시된 방법 및 시스템에 따르면, 본 발명은 즉치 데이타 상에서 동작하기 위해 필요한 시맨틱 루틴의 명령어 개수를 감소시켜, 시맨틱 루틴의 실행 시간을 감소시키고 에뮬레이션 성능을 향상시킨다.
제1도는 호스트 프로세서의 하이 레벨 구조를 나타내는 블록도.
제2도는 에뮬레이션 보조 유닛의 블록도.
제3도는 종래 기술의 정수 유닛의 블록도.
제4도는 본 발명에 따른 정수 유닛을 도시하는 블록도.
제5도는 전용 레지스터에 저장된 즉치 데이타 상에서 동작하는 호스트 명령어 셋을 나열하는 표.
* 도면의 주요부분에 대한 부호의 설명
12 : 게스트 명령어 14 : L2 캐시
16 : 데이타 캐시 18 : 명령어 캐시
20 : 명령어 큐 22 : 분기점 예측 유닛
24-32 : 기능 유닛 34 : 완료 버퍼
38 : 메모리 40 : 시맨틱 루틴
본 발명은 호스트 프로세서에서 게스트 명령어의 에뮬레이팅 성능을 개선하는 것에 관한 것이다. 본 명세서의 이하의 설명은 본 기술 분야의 통상의 지식을 가진 자가 본 발명을 이용할 수 있도록 하기 위해 제공된 것이며, 특허 출원을 위한 것이다. 본 발명의 바람직한 실시예에 대한 다양한 수정이 본 기술 분야에서 통상의 지식을 가진 자에게는 용이하고, 본 명세서의 상위 개념적인 원리가 다른 실시예에도 적용될 수 있다. 따라서, 본 발명은 개시되는 실시예에 제한되지 않으며, 본 명세서에서 설명된 원리와 특징에 부합하는 해석 가능한 가장 넓은 범위를 갖는다.
제1도는 호스트 프로세서(10)의 하이 레벨 구조를 도시하는 블록도이다. 전형적으로, 상기 프로세서(10)은 메모리(12), 레벨2(L2) 캐시(14), 데이타 캐시(16), 명령어 캐시(IC ; 18), 명령어 큐(IQ ; 20), 분기점 예측 유닛(22), 기능 유닛(24-32), 및 완료 버퍼(34)와 같은 다양한 하드웨어 요소를 사용하여 고유의 소프트웨어 명령을 실행한다.
본 발명의 바람직한 실시예에서, 상기 프로세서(10)은 파워 PC(PPC) 명령어 셋을 실행하는 모토롤라에서 생산한 파워 PC이다. PPC 명령어 셋을 실행할 뿐만 아니라, 상기 프로세서(10)은 인텔 x86 명령어, 모토롤라 68K 복합 명령어 셋 컴퓨터(CISC)의 명령어와 같은 여러가지 게스트 명령어(38)을 에뮬레이팅할 수 있다.
게스트 명령어(38)을 에뮬레이팅함에 있어서 프로세서(10)을 보조하는 역할을 담당하는 요소는 에뮬레이션 보조 유닛(EAU ; 36)이다. 프로세서(10)이 게스트 명령어(38)을 에뮬레이팅할 수 있도록 하기 위해서는, 각 게스트 명령어(38)은 먼저 시맨틱 루틴(40)이라고 불리는 호스트 명령어 셋으로 변환되는데, 상기 호스트 명령어 셋은 호스트 프로세서(10)에서 게스트 명령어(38)의 기능을 수행한다. 각 시맨틱 루틴(40)은 메모리(12) 내의 특정 어드레스 위치에 저장된다. 게스트 명령어(38) (및 데이타) 또한 메모리(12)에 저장된다.
연산 시에, 프로세서(10)은 게스트 명령어(38)와 데이타를 각각 L2 캐시(14)와 데이타 캐시(16)으로 캐싱한다. EAU(36)은 상기 게스트 명령어(38)을 페치 및 디코딩한 후, 각 게스트 명령어(38)를 이에 대응하는 시맨틱 루틴(40)의 호스트 메모리 어드레스에 매핑한다. 프로세서(10)은 특정 메모리 어드레스에 위치한 시맨틱 루틴(40)을 명령어 캐시(18)로 페치한다. 이어서, 상기 시맨틱 루틴(40)에 포함되어 있는 호스트 명령어가 IQ(20)으로 전달된다. 이어서, 각 호스트 명령은 분기점 예측 유닛(22)과 기능 유닛(24-32)를 사용하여 디코딩되고 실행된다. 시맨틱 루틴(40)을 실행하여 그 실행 결과를 완료 버퍼(34)에 저장한 후, EAU(36)은 다음의 게스트 명령어(38)의 호스트 어드레스로 매핑되고, 상기 과정을 반복한다.
제2도는 EAU(36)의 블록도를 도시하고 있다. EAU(36)은 명령어 버퍼(50), 프리페치 유닛(pre-fetch unit ; 52), 전용 레지스터(SPRs ; 54), 디코딩 유닛(56), 분기기록표(58), 태그 발생 유닛(tag generation unit ; 60), 게스트 캐시(gcache ; 62), 및 게스트 캐시 명령어 큐(64)를 포함한다. EAU(36)의 기능은 게스트 명령어(38)을 에뮬레이팅함에 있어서 직접 매핑 방법(direct mapping scheme)을 이용하여 프로세서(10)을 보조하는 것이다.
게스트 명령어(38)은 먼저 프리페치 유닛(52)에 의해 데이타 캐시(16)으로부터 프리패치된다. 이어서, 게스트 명령어(38)은 명령어(38)은 명령어 버퍼(50)으로 로딩되고, 디코딩 유닛(56)으로 전달된다. 게스트 명령어(38)를 호스트 어드레스로 직접 매핑하는 것은 그 명령어 구문상(by its syntax) 복잡하기 때문에, 디코딩 유닛(56)이 게스트 명령어(38)을 구문 분석(parse)하거나 디코딩하여 길이, 분기 타입, 및 즉치 데이타를 결정한다. 게스트 명령어(38)이 분기 명령인 경우에는, 분기 기록표(58)이 사용되어 다음의 프리페치 어드레스를 예측한다.
게스트 캐시(62)는 각 시맨틱 루틴(40)에 대한 엔트리(entry)와 이에 대응하는 호스트 메모리 어드레스를 포함하는 배열이다. 게스트 명령어(38)이 디코딩된 후, 태그 발생 유닛(60)은 상기 명령어(38)을 유일의 연산 코드 태그(op code tag)로 변환하고, 상기 연산 코드 태그는 상기 게스트 캐시(62)에 대한 인덱스로서 상기 대응하는 시맨틱 루틴(40) 어드레스를 액세스하는 데에 사용된다.
게스트 명령어(38)이 디코딩되고 이에 대응하는 시맨틱 루틴(40)이 알려지면, 시맨틱 루틴(40)과 그 어드레스가 게스트 캐시 명령어 큐(64)에 저장된다. 게스트 캐시 명령어 큐(64)의 각 엔트리는 오프셋 필드(offset field)와 데이타 필드를 포함한다. 오프셋 필드는 시맨틱 루틴(40)의 호스트(PPC) 어드레스에 대한 포인터이다. 데이타 필드는 시맨틱 루틴(40)이 처리하고자 하는 게스트 명령어로부터의 즉치 데이타를 포함한다. 본 발명의 바람직한 실시예에서, 오프셋 필드와, 즉치 데이타를 포함하는 데이타 필드는 SPRs(54)에 저장된다.
제1도와 제2도를 참조하면, 프로세서(10)은 라인(66)을 통해 명령어 큐(64) 내의 제1 엔트리를 페치하고, 이의 실행을 위해 메모리(12)로부터 적절한 시맨틱 루틴(40)을 검색한다. 각 시맨틱 루틴(40)의 마지막 명령은 분기 명령으로서, 바람직한 실시예에서는 게스트 디스패치 완료(gdisc) 명령(68)이다. 프로세서(10)이 gdisc 명령(68)을 페치 및 디코딩하면, 프로세서(10)은 명령어 큐(64)로부터 라인(68)을 통해 다음 시맨틱 루틴(40)의 어드레스를 페치한다.
바람직한 실시예에서, 실행될 다음 시맨틱 루틴(40)의 어드레스는 현재 명령어 포인터(current IP ; 70)에 저장된다. gdisc 명령(68)을 디코딩하면, 다음 IP(72)가 현재 IP(72)로 이동된다. 바람직한 실시예에서 gdisc 명령은 무조건 분기 명령이나, 프로세서가 다음의 시맨틱 루틴을 패치하도록 하는 명령이라면 어느 것이든 사용될 수 있다.
전형적으로, 데이타 전송, 연산 및 논리 명령과 같은 여러가지 유형의 게스트 명령이 있다. 명령어 유형은 그 연산의 수행이 즉치 데이타, 레지스터 또는 메모리 위치 중 어디에 기초하여 이루어질 것인지를 특정한다. 예를 들어, 게스트 명령어가 다음과 같다고 하자.
ADD G1, ′4
위에서, “ADD” 명령은 GPR의 내용과 즉치 4를 가산한다. 제2도를 참조하면, 상기 게스트 명령어(38)은 프로세서(10)에서 게스트 “ADD”명령에 대응하는 시맨틱 루틴(40)을 사용하여 에뮬레이팅된다. 상기 시맨틱 루틴(40)이 디스패치되면, 정수 유닛(28,30) 중의 어느 하나에 의해 실행된다. 본 실시예에서는, 정수 유닛(28,30)이 동일하다고 가정한다.
제3도는 종래 기술의 정수 유닛(IU)을 도시하는 블록도이다. IU(31)은 복수의 범용 레지스터(100), 정수 명령 유닛(102), 산술 논리 유닛(ALU ; 104), 멀티플렉서(106), 및 재명명 버퍼(108)을 포함한다.
“ADD”와 같은 호스트 정수 명령어가 IU(31)에 전달되면, 정수 명령 유닛(102)이 상기 명령어를 수신하여 디코딩 및 실행을 수행한다. GPRs(100)은 호스트 정수 명령어의 오퍼랜드를 저장한다. 오퍼랜드는 ALU(104)의 입력으로 사용되고, 상기 ALU(104)는 상기 오퍼랜드에 대한 특정의 산술 연산을 수행한다. ALU(104)의 연산 결과는 멀티플렉서(106)에 입력되고, 상기 멀티플렉서(106)의 출력은 재명명 버퍼(108)에 저장된다. 재명명 버퍼의 내용은 나중에 GPRs(100)으로 이동될 수도 있다.
IQ(64)의 엔트리를 저장하는 SPRs(54)는 gbus(110)을 통해 IU(28)의 멀티플렉서(106)에 연결된다. 게스트 명령어에 의해 GPR(100)의 오퍼랜드가 즉치 데이타에 가산되도록 특정된 경우에는, 상기 가산 연산을 수행할 시맨틱 루틴은 SPRs(54)로부터 GPRs(100)으로 상기 즉치 데이타를 이동시키는 호스트 명령을 포함하여야 한다.
상기 게스트 가산 명령어를 에뮬레이팅하는 시맨틱 루틴(40)의 한 예는 다음의 명령을 포함할 수 있다:
MFSPR imm., temp
ADD G1, temp
GDISC
호스트 명령어 MFSPR (Move From SPR)은 상기 즉치 데이타를 SPR(54)로부터 GPRs(100)에 저장된 임시 변수 temp에 복사하기 위한 이동 명령이다. 상기 호스트 “ADD”명령어에 의해 AL(U104)는 G1의 내용과 temp를 저장하는 GPR(100)의 내용을 가산한다. 그리고 나서, 상기 가산 결과는 재명명 버퍼(108)에 저장된다. 전술한 바와 같이, GDISC 명령어에 의해 프로세서는 실행할 다음 시맨틱 루틴을 페치한다.
전술한 시맨틱 루틴의 예에 포함된 부가적인 “MFSPR”명령어는 프로세서(10)의 에뮬레이션 성능을 현저히 감소시킨다. 이는 시맨틱 루틴이 SPR(54)에 저장된 즉치 데이타 상에서 연산을 수행할 때마다 상기 MFSPR 명령어를 실행하기 위해 부가적 프로세서 사이클을 필요로 하기 때문이다.
본 발명은 SPR(54) 내용 상에서 직접 연산을 수행하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템을 제공하는 것이다. 본 발명에 따른 방법 및 시스템을 보다 자세히 살표보기 위해서, 이러한 시스템의 한 실시예의 블록도를 도시하는 제4도를 참조한다.
제4도는 본 발명에 따른 정수 유닛(IU ; 28)을 도시하는 블록도이다. 본 발명에 따르면, gbus가 제공되어 SPRs(54)와 ALU(104)를 직접 연결한다. 이에 의해, SPRs(54)의 내용을 GPRs(100)으로 이동시키지 않더라고 ALU(104)가 SPRs(54) 내용에 대해 연산을 수행할 수 있다.
본 발명은 상기 새로운 특징을 이용할 수 있는 새로운 호스트 명령어 셋을 정의하였다. 이러한 새로운 명령어 셋이 즉치 데이타를 갖는 게스트 명령어(38)을 에뮬레이팅하는 시맨틱 루틴(40)에서 사용된다.
제5도에 도시된 표는 SPR(54)에 저장된 즉치 데이타 상에서 동작하는 새로운 PPC 명령어 셋을 나열한다. 명령어에서 니모닉(mnemonic) “RT”는 GPR(100)이 행선으로서 사용된다는 것을 나타내고, 니모닉 “RA”는 GPR(100)이 소오스로서 사용된다는 것을 나타낸다.
명령어 MFGI는 SPR(54)로부터 즉치 데이타를 이동시켜 그 데이타를 RT에 저장한다. 명령어 ADDFGI는 SPR(54)로부터의 즉치 데이타를 RA의 오퍼랜드에 가산하여, 그 결과를 RT에 저장한다. 명령어 SUBFGI는 SPR(54)의 즉치 데이타에서 RA의 오퍼랜드를 감산하여, 그 결과를 RT에 저장한다. 명령어 SHIFTFGI는 SPR(54)의 즉치 데이타를 RA의 오퍼랜드에 의해 지정된 만큼 쉬프트시켜, 그 결과를 RT에 저장한다.
상기 명령어 이전에는, SPRs(54)의 즉치 데이타 상에서 연산을 수행하기 위해서는 둘 이상의 호스트 명령어가 필요하였다. 본 발명의 호스트 명령어에서는, 이러한 연산을 위해서 호스트 명령어 한 개만 있으면 충분하다. 이에 의해, 시맨틱 루틴(40)에서 프로세서(10)이 실행하여야 하는 명령어의 수가 감소하여 에뮬레이션 성능이 향상된다.
SPRs(54)를 IU(28)의 ALU(104)에 연결시켜서 실행이 가능한 새로운 명령어 셋은 제5도에 나열한 호스트 명령어에 국한되지 않는다. 제5도에 나열된 데이타 전송, 산술 및 논리 명령어는 단지 예로서 제시된 것이다.
이상, SPRs을 정수 유닛의 ALU에 연결하여 호스트 명령이 SPR 내용 상에서 직접 연산을 수행할 수 있도록 함으로써 에뮬레이션 성능을 향상시킬 수 있는 방법 및 시스템을 개시하였다. 본 명세서에서는 특정 실시예와 관련하여 본 발명을 설명하였지만, 본 기술 분야에서 통상의 지식을 가지고 있는 자는 이러한 실시예를 다양하게 수정할 수 있다는 것과 이러한 수정된 실시예가 본 발명의 본질 및 범위에 포함된다는 것을 인식할 수 있다. 따라서, 본 기술 분야에서 통상의 지식을 가지고 있는 자에 의해서 첨부된 특허 청구의 범위의 본질 및 범위를 벗어나지 않고 많은 수정이 이루어질 수 있다.

Claims (18)

  1. 제1, 제2 오퍼랜드를 포함하는 게스트 명령어를 에뮬레이팅하는 프로세서의 성능을 향상시키기 위한 방법에 있어서, (a) 상기 제1 오퍼랜드를 범용 레지스터에 저장하고 상기 제2 오퍼랜드를 전용 레지스터에 저장하는 단계와 (b) 상기 전용 레지스터로부터 상기 범용 레지스터로 상기 제2 오퍼랜드를 이동시키지 않고, 상기 제1 오퍼랜드와 제2 오퍼랜드를 사용하여 연산을 수행하는 명령을 제공하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 프로세서가 에뮬레이션 보조 유닛을 포함하고, 상기 단계 (a)가 (a1) 상기 에뮬레이션 보조 유닛에 상기 전용 레지스터를 제공하는 단계를 포함하는 방법.
  3. 제2항에 있어서, 상기 프로세서가 산술 논리 유닛과 멀티플렉서를 포함하고, 상기 산술 논리 유닛이 상기 범용 레지스터와 상기 멀티플렉서 사이에 연결되어 있으며, 상기 단계 (a)가 (a2) 상기 산술 논리 유닛에 상기 전용 레지스터를 연결하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서, 상기 단계 (b)가 (b1) 제2 범용 레지스터에 연산 결과를 저장하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 연산이 산술 연산인 방법.
  6. 제5항에 있어서, 상기 연산이 데이타 전송 연산인 방법.
  7. 제6항에 있어서, 상기 연산이 논리 연산인 방법.
  8. 제7항에 있어서, 상기 프로세서가 시맨틱 루틴을 사용하여 상기 게스트 명령어를 에뮬레이팅하고, 상기 명령어가 상기 시맨틱 루틴 내의 명령어인 방법.
  9. 제1, 제2 오퍼랜드를 포함하는 게스트 명령어를 에뮬레이팅하는 프로세서에 있어서, ① 상기 제1 오퍼랜드를 범용 레지스터에 저장하고 상기 제2 오퍼랜드를 전용 레지스터에 저장하기 위한 수단과 ② 상기 전용 레지스터로부터 상기 범용 레지스터로 상기 제2 오퍼랜드를 이동시키지 않고, 상기 제1 오퍼랜드와 제2 오퍼랜드를 사용하여 연산을 수행하는 명령어 수단을 포함하는 프로세서.
  10. 제9항에 있어서, 상기 프로세서가 에뮬레이션 보조 유닛을 더 포함하고, 상기 전용 레지스터가 상기 에뮬레이션 보조 유닛의 부분인 프로세서.
  11. 제10항에 있어서, 상기 프로세서가 산술 논리 유닛과 멀티플렉서를 더 포함하고, 상기 산술 논리 유닛이 상기 범용 레지스터와 상기 멀티플렉서 사이에 연결되어 있으며, 상기 전용 레지스터가 상기 산술 논리 유닛에 연결되어 있는 프로세서.
  12. 제11항에 있어서, 상기 명령어 수단이, 연산 결과를 제3 범용 레지스터에 저장하기 위한 수단을 더 포함하는 프로세서.
  13. 제12항에 있어서, 상기 명령어 수단이 산술 연산 수단인 프로세서.
  14. 제13항에 있어서, 상기 명령어 수단이 데이타 전송 연산 수단인 프로세서.
  15. 제14항에 있어서, 상기 명령어 수단이 논리 연산 수단인 프로세서.
  16. 제15항에 있어서, 상기 프로세서가 시맨틱 루틴을 사용하여 게스트 명령어를 에뮬레이팅하고, 상기 명령어 수단이 상기 시맨틱 루틴 내의 명령어인 프로세서.
  17. 즉치 데이타를 포함하는 명령어를 다수 갖는 게스트 명령어를 에뮬레이팅하기 위한 프로세서에 있어서, ① 복수의 시멘틱 루틴 - 각 시멘틱 루틴은 상기 게스트 명령어의 기능을 에뮬레이팅하기 위한 호스트 명령어의 블록을 포함 - 을 특정 어드레스에 저장하기 위한 메모리, ② 상기 게스트 명령어를 디코딩하고 이에 대응하는 시맨틱 루틴을 디스패치하기 위한 에뮬레이션 보조 유닛으로서, 상기 시맨틱 루틴의 메모리 어드레스에 대한 포인터 오프셋 필드와 상기 게스트 명령어로부터의 즉치 데이타인 데이타 필드를 각각 포함하는 복수의 엔트리를 저장하기 위한 복수의 전용 레지스터를 포함하는 에뮬레이션 보조 유닛, ③ 오퍼랜드를 저장하기 위한 복수의 범용 레지스터 및 ④ 상기 즉치 데이타를 상기 전용 레지스터로부터 상기 범용 레지스터로 이동시키지 않고, 상기 즉치 데이타와 상기 범용 레지스터의 상기 오퍼랜드를 사용하여 연산을 수행하는 상기 시맨틱 루틴 내의 복수의 호스트 명령어를 포함하는 프로세서.
  18. 제17항에 있어서, 상기 프로세서가 호스트 명령어를 실행하기 위한 정수 유닛을 더 포함하고, 상기 정수 유닛이 산술 논리 유닛과 멀티플렉서를 포함하며, 상기 산술 논리 유닛은 상기 복수의 범용 레지스터와 상기 멀티플렉서 사이에 연결되어 있으며, 상기 전용 레지스터가 상기 산술 논리 유닛에 연결되어 있는 프로세서.
KR1019960046662A 1996-01-25 1996-10-18 전용 레지스터의 내용 상에서 동작하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템 KR100237987B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/581,793 1996-01-25
US08/581,793 1996-01-25
US08/581,793 US5758140A (en) 1996-01-25 1996-01-25 Method and system for emulating instructions by performing an operation directly using special-purpose register contents

Publications (2)

Publication Number Publication Date
KR970059922A KR970059922A (ko) 1997-08-12
KR100237987B1 true KR100237987B1 (ko) 2000-01-15

Family

ID=24326583

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960046662A KR100237987B1 (ko) 1996-01-25 1996-10-18 전용 레지스터의 내용 상에서 동작하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US5758140A (ko)
EP (1) EP0786722A1 (ko)
JP (1) JP3193651B2 (ko)
KR (1) KR100237987B1 (ko)
TW (1) TW417064B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044220A (en) * 1997-02-25 2000-03-28 Motorola, Inc. Method and apparatus for operating a data processor to execute software written using a foreign instruction set
US6223339B1 (en) * 1998-09-08 2001-04-24 Hewlett-Packard Company System, method, and product for memory management in a dynamic translator
US6308318B2 (en) * 1998-10-07 2001-10-23 Hewlett-Packard Company Method and apparatus for handling asynchronous exceptions in a dynamic translation system
WO2001025900A1 (en) * 1999-10-06 2001-04-12 Cradle Technologies Risc processor using register codes for expanded instruction set
US6711672B1 (en) * 2000-09-22 2004-03-23 Vmware, Inc. Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers
KR100388943B1 (ko) * 2000-10-23 2003-06-25 아스텔 주식회사 디지털 신호 처리 프로세서의 즉시 데이터 처리 장치
US7219337B2 (en) * 2003-03-06 2007-05-15 Northrop Grumman Corporation Direct instructions rendering emulation computer technique
US7290253B1 (en) 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
GB2426083A (en) * 2005-05-09 2006-11-15 Sony Comp Entertainment Europe Software emulation of a pipeline processor
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
CN100447702C (zh) * 2005-05-23 2008-12-31 联想(北京)有限公司 一种防止未被授权程序在计算机系统运行的方法及其系统
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
JP5367020B2 (ja) * 2011-06-24 2013-12-11 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、プログラム及び情報記憶媒体

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253430A5 (ko) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253435A5 (ko) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US3891974A (en) * 1973-12-17 1975-06-24 Honeywell Inf Systems Data processing system having emulation capability for providing wait state simulation function
US4084235A (en) * 1975-04-14 1978-04-11 Honeywell Information Systems Inc. Emulation apparatus
US4587612A (en) * 1982-10-22 1986-05-06 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
JPH07109589B2 (ja) * 1985-07-25 1995-11-22 日本電気株式会社 命令処理方式
US4841476A (en) * 1986-10-06 1989-06-20 International Business Machines Corporation Extended floating point operations supporting emulation of source instruction execution
EP0264215A3 (en) * 1986-10-14 1991-10-23 Amdahl Corporation Fast entry to emulation
JPS63106836A (ja) * 1986-10-24 1988-05-11 Hitachi Ltd 異ア−キテクチヤ・エミユレ−シヨン方式
JPH02236734A (ja) * 1989-03-10 1990-09-19 Nec Corp マイクロプロセッサのエミュレーション方式
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
JPH05181671A (ja) * 1992-01-07 1993-07-23 Kobe Nippon Denki Software Kk ソフトウェア命令のエミュレーション方式
DE4232053C1 (de) * 1992-09-24 1993-11-25 Siemens Ag Schaltung zur Emulationsbeschleunigung
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
WO1994027214A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding sequences of guest instructions for a host computer

Also Published As

Publication number Publication date
KR970059922A (ko) 1997-08-12
JPH09212370A (ja) 1997-08-15
EP0786722A1 (en) 1997-07-30
US5758140A (en) 1998-05-26
JP3193651B2 (ja) 2001-07-30
TW417064B (en) 2001-01-01

Similar Documents

Publication Publication Date Title
JP3186798B2 (ja) 部分的にデコードした命令キャッシュ
US5742802A (en) Method and system for efficiently mapping guest instruction in an emulation assist unit
US8473718B2 (en) Java hardware accelerator using microcode engine
US8185882B2 (en) Java virtual machine hardware for RISC and CISC processors
KR100317770B1 (ko) 데이터처리시스템의에뮬레이션모드를위한어드레스변환버퍼
US20180341504A1 (en) Virtual machine coprocessor for accelerating software execution
US6349377B1 (en) Processing device for executing virtual machine instructions that includes instruction refeeding means
US6122638A (en) Object-oriented processor and method for caching intermediate data in an object-oriented processor
KR100237987B1 (ko) 전용 레지스터의 내용 상에서 동작하는 명령을 제공함으로써 에뮬레이션 성능을 향상시키기 위한 방법 및 시스템
KR100258650B1 (ko) 에뮬레이션 문맥 스위치 저장 및 복구를 수행하는 방법 및 프로세서
KR100284788B1 (ko) 데이터 처리 시스템에서 에뮬레이션 동안의 브랜치 처리 방법및 시스템
US20010010072A1 (en) Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them
EP1447742A1 (en) Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor
WO2000034844A9 (en) Java virtual machine hardware for risc and cisc processors
JP2001508908A (ja) 可変命令セットコンピュータ
US8769508B2 (en) Virtual machine hardware for RISC and CISC processors
US7225436B1 (en) Java hardware accelerator using microcode engine
US5732235A (en) Method and system for minimizing the number of cycles required to execute semantic routines
US7251594B2 (en) Execution time modification of instruction emulation parameters
KR100267434B1 (ko) 제 1 처리 환경내에서 제 1 명령어를 에뮬레이션 환경내에서의제 2 명령어 처리 개시에 응하여 처리하는 방법 및 시스템
Wong A stack addressing scheme based on windowing

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

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee