KR19990029286A - 데이타 처리 시스템의 에뮬레이션 모드를 위한 어드레스번역 버퍼 - Google Patents

데이타 처리 시스템의 에뮬레이션 모드를 위한 어드레스번역 버퍼 Download PDF

Info

Publication number
KR19990029286A
KR19990029286A KR1019980032561A KR19980032561A KR19990029286A KR 19990029286 A KR19990029286 A KR 19990029286A KR 1019980032561 A KR1019980032561 A KR 1019980032561A KR 19980032561 A KR19980032561 A KR 19980032561A KR 19990029286 A KR19990029286 A KR 19990029286A
Authority
KR
South Korea
Prior art keywords
customer
address
instruction
instructions
command
Prior art date
Application number
KR1019980032561A
Other languages
English (en)
Other versions
KR100317770B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25465857&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR19990029286(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR19990029286A publication Critical patent/KR19990029286A/ko
Application granted granted Critical
Publication of KR100317770B1 publication Critical patent/KR100317770B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

원시 명령 세트(a native instruction set)를 가지며 고객 명령 세트(a guest instruction set)내의 명령들을 에뮬레이트하는(emulate) 프로세스를 운영하기 위한 장치 및 방법이 개시된다. 본 발명의 방법에 따르면, 고객 명령 세트로부터의 일련의 고객 명령(a series of guest instructions)은 메모리 내에 저장된다. 일련의 고객 명령은 고객 어드레스 공간(guest address space)내의 고객 논리 어드레스(a guest logical address)를 나타내는 고객 메모리 액세스 명령(a guest memory access instruction)을 포함한다. 일련의 고객 명령 내의 각 고객 명령에 대하여, 원시 명령 세트로부터의 원시 명령들의 의미 루틴(a semantic routine)은 메모리 내에 저장된다. 원시 어드레스 공간 내의 원시 어드레스들(native addresses in native address space)을 이용하는 의미 루틴은 고객 명령의 에뮬레이션을 위해 실행될 수 있다. 에뮬레이션을 위한 고객 메모리 액세스 명령의 수신에 응답하여, 고객 논리적 어드레스는 고객 실제 어드레스(a guest real address)로 번역되며, 그 후 고객 실제 어드레스는 원시 물리적 어드레스(a native physical address)로 번역된다. 고객 메모리 액세스 명령을 에뮬레이트하는 의미 루틴은 원시 물리적 어드레스를 이용하여 실행된다.

Description

데이타 처리 시스템의 에뮬레이션 모드를 위한 어드레스 번역 버퍼
본 발명은 일반적으로 데이터 처리를 위한 방법 및 시스템에 관한 것으로서, 특히 데이터 처리 시스템에서 여러 다른 구조의 에뮬레이션을 위한(for emulating differing architectures) 방법 및 시스템에 관한 것이다. 더욱 상세하게는, 본 발명은 데이터 처리 시스템에서 고객 명령 에뮬레이션 동안 어드레스 번역을 위한(for address translation during emulation of guest instructions) 방법 및 시스템에 관한 것이다.
PowerPCTM구조는 컴퓨터 시스템 패밀리(a family of computer systems)에 대한 명령 세트, 레지스터, 어드레싱 모드 등의 정의(a definition of the instruction set, registers, addressing modes, and the like)를 제공하는 고성능 축소 명령형 컴퓨터(high-performance reduced instruction set (RISC)) 프로세서 구조이다. PowerPCTM구조는 특정 구성의 마이크로프로세서 칩 또는 그 구조의 사례(an instance of the architecture)를 구현하는데 이용되는 칩과는 어느 정도 무관하기 때문에, PowerPC 601TM, 602TM, 603TM및 604TM을 비롯하여 다양한 구현 형태로 구성되어 왔다. 이들 프로세서의 구성 및 동작은PowerPC 604 TM RISC Microprocessor User's Manual와 같은 공개 매뉴얼에서 설명되고 있는데, 이 매뉴얼은 IBM Microelectronics로부터 Order No. MPR604UMU-01으로서 구입가능한 것으로서 본 출원 명세서에 참고로 인용된다.
현시대의 많은 프로세서에 있어서 사실이듯이, RISC 구조는 CISC (복합 명령형 컴퓨터(complex instruction set computer)) 구조와 비교해 볼 때 그의 고유한 고성능 잠재성 덕분에 PowerPCTM용으로서 선택되고 있다. RISC 프로세서의 구성을 최적화시켜 원시(native) RISC 명령의 실행시에 프로세서의 성능을 극대화하는 것이 바람직한데, CISC 프로세서 예로서 Intel x86 및 Motorola 68K용으로 작성된 상용 소프트웨어를 수용할 수 있게 하는 것에 의해 호환성을 증진시키는 것도 바람직하다.
따라서, 에뮬레이션 메카니즘(emulator mechanism)을 미국 특허 출원 제 08/591,291 호 및 제 08/581,793 호에 개시된 바와 같이 PowerPCTM프로세서 내에 도입할 수 있다. 이 개시된 에뮬레이션 메카니즘은 고객 명령(예로서, 가변길이(variable-length) CISC 명령)이 에뮬레이트될 수 있게 하는데, 이는 원시 RISC 명령으로부터 형성된 대응하는 의미 루틴(corresponding semantic routines)을 실행함으로써 이루어 진다. 따라서, 프로세서는 두개의 명령 스트림, 즉, 에뮬레이트될 명령을 포함하는 고객 명령 스트림과 고객 명령의 에뮬레이션을 위해 이용되는 의미 루틴 내의 원시 명령을 포함하는 원시 명령 스트림을 관리해야만 한다. 고객 명령의 에뮬레이션 시에 고성능을 유지하기 위해서는, 그들 고객 및 원시 명령 스트림을 관리하는 프로세서 내에, 브랜칭, 어드레스 번역 버퍼 관리 및 예외 처리(branching, address translation buffer management, and exception handling) 기능을 갖춘 효과적인 메카니즘이 필요하다.
Intel x86 급 마이크로프로세서의 구조는 Intel Corporation이 공개 번호 230843으로서 공개한Microprocessors, Vol. Ⅰ and Vol. II, 1993에 개시되고 있다. Intel x86 명령 세트는, 그 명령이 1 바이트 내지 수 바이트의 가변길이를 갖는다는 점에서, 또한 산술 및 논리 연산이 메모리 액세스를 포함한다는(즉, 그 연산이 메모리-메모리 연산일 수 있다는) 점에서, 또한 메모리 인다이렉트(memory indirect)와 같은 복합 어드레싱 모드(complex addressing modes)가 허용된다는 점에서 특징이 있다. Motorola 68K 급의 마이크로프로세서는 MC68030 -- Enhanced 32-bit Microprocessor User's Manual(Prentice Hall, 1990))과 같은 다양한 공개 문서에 개시되고 있는 것으로서, 이 마이크로프로세서는 상기한 바와 유사하게 복합 어드레싱 모드 및 메모리-메모리 연산을 특정할 수 있는 가변길이 명령을 사용한다.
RISC 명령과 CISC 명령간의 차이 때문에, 또한 서로 다른 메모리 관리 및 구조를 사용한다. 예를 들어, Intel x86 구조는 가변길이 세그먼트를 허용하는 식으로 메모리 세그먼트 기법 및 페이징(memory segmentation and paging)을 구현하는 반면에, PowerPCTM구조는 고정길이(fixed-length) 메모리 세그먼트를 이용한다. 이같은 차이 때문에 또한 PowerPC 및 x86 구조의 세그먼트 기법과 페이징 메카니즘간의 다른 많은 차이 때문에, 페이지 테이블 및 번역 버퍼 엔트리의 내용(the contents of page table and translation buffer entries)은 완전히 다른 로직에 의해 계산된다.
따라서, 본 발명은 원시(예를 들어, PowerPCTM) 구조가 고객(예를 들어, x86) 명령의 메모리 관리 방안에 맞추어진 페이지 테이블 및 번역 버퍼 엔트리를 사용할 수 있게 하면서도 원시 어드레싱 메카니즘을 이용하여 물리적인 메모리에 대한 실제 액세스를 수행할 수 있게 하는 방법 및 장치를 제공하는 것이 바람직할 것이라는 인식에 기초를 두고 있다.
따라서, 본 발명의 목적은 데이터 처리를 위한 개선된 방법 및 시스템을 제공하는 데에 있다.
본 발명의 다른 목적은 데이터 처리 시스템에서 서로 다른 구조를 에뮬레이트하기 위한(for emulating differing architectures) 방법 및 시스템을 제공하는 데에 있다.
본 발명의 또다른 목적은 데이터 처리 시스템에서 고객 명령 에뮬레이션 동안 어드레스 번역을 위한(for address translation during emulation of guest instructions) 방법 및 시스템을 제공하는 데에 있다.
상기한 목적들은 후술하는 바와 같이 달성된다. 본 발명의 일 실시예에 따르면, 호스트 컴퓨터 시스템에 대한 에뮬레이션 메카니즘(an emulation mechanism for a host computer system)은 고객 명령(guest instructions)이 원시 명령(native instructions)으로 이루어진 의미 루틴(semantic routines)에 의해서 실행될 수 있게 한다. 호스트 프로세서에 대한 원시 명령(native instructions)은 특정 포맷 예로서 RISC 구조에 의해 특정되는 포맷을 갖는 반면에, 고객 명령은 다른 컴퓨터 구조에 대한 포맷 예로서 가변길이 CISC 명령 포맷을 갖는다. 프로세서는 수신 순서로 현재 인출되는 고객 명령을 저장하기 위해 다중-엔트리 큐(multiple-entry queue)를 이용하는 고객 명령 인출 및 처리를 위한 에뮬레이션 유니트(emulator unit)를 포함한다. 큐 내의 각 엔트리는 관련 고객 명령에 대한 의미 루틴의 메모리 내의 위치를 나타내는 오프셋(offset), (만일 있다면) 고객 명령에 대한 직접 데이터(immediate data), 대응 의미 루틴(corresponding semantic routine)의 길이, 고객 명령에 의한 산술/논리 연산의 결과를 나타내는 조건부 필드(condition field), 유효 비트(valid bits) 및 다른 적절한 데이터를 포함한다. 프로세서는 큐 내의 엔트리의 내용을 사용해서 루틴을 인출하는 식으로 큐 내의 엔트리에 응답하여 의미 루틴을 실행한다. 프로세서가 관련 고객 명령에 대한 의미 루틴을 완료한 때 큐로부터 엔트리가 제거된다.
고객 명령에 대한 메모리 관리 방안은 원시 명령이 메모리 관리 방안과 다르다. 따라서, 고객 가상 어드레스(guest virtual addresses)를 고객 실제 어드레스(guest real addresses)로 번역하는 것은 다른 논리 방안에 입각해서 행해진다. 본 발명에 따르면, 고객 논리 어드레스(guest logical address)는 고객 실제 어드레스로 번역되고, 이 고객 실제 어드레스는 그다음 원시 물리 어드레스(native physical address)로 번역된다. 이때, 메모리를 액세스하는 고객 명령을 에뮬레이트하는 의미 루틴은 원시 물리 어드레스에 의해 실행된다.
본 발명의 상기 및 다른 목적, 특징 및 장점은 다음의 상세 설명으로부터 명백해 질 것이다.
본 발명의 신규한 특징은 특허청구범위에 기재한다. 그러나, 본 발명 자체, 양호한 사용 모드, 또다른 목적 및 장점은 도면을 참조한 예시적 실시예에 대한 다음의 상세 설명으로부터 가장 잘 이해될 것이다.
도 1은 본 발명의 방법 및 시스템이 유리하게 이용될 수 있는 데이터 처리 시스템의 실시예를 도시한 도면.
도 2는 도 1에 도시한 프로세서의 상세 블록도.
도 3은 도 2에 도시한 프로세서 내의 에뮬레이션 지원 유니트(EAU)의 상세 블록도.
도 4는 도 3에 도시한 EAU내의 고객 명령 큐의 상세 블록도.
도 5는 도 2의 실시예에서 이용되는 CPU(4)의 메모리 관리 방안을 도시한 도면.
도 6은 도 1 내지 3의 실시예에 사용되는 고객 명령의 메모리 관리 방안을 도시한 도면.
도 7은 도 1 내지 6의 실시예에 사용되는 고객 명령의 어드레스 번역 방안을 도시한 도면.
도 8은 예시 실시예에 따라 고객 TLB를 발생하기 위한 방법의 상위 레벨 플로우챠트.
도 9는 도 7 및 8에 도시한 어드레스 번역 방안에 사용되는 레지스터들의 블록도.
도면의 주요부분에 대한 부호의 설명
2 : 데이터 처리 시스템 4 : CPU
5 : 메모리 제어기 6 : 메인 메모리
7 : 시스템 버스 8 : I/O 구성요소
10 : 주변 구성요소 11 : PCI 호스트 브리지
12 : PCI 버스 14 : 메모리 맵
16 : 응용 프로그램 18 : 운영 시스템
19 : 의미 루틴 20 : 고객 명령
30: 버스 인터페이스 유니트(BIU) 32 : 명령 캐시
34 : 데이터 캐시 36 : 순차 인출기
38 : 브랜치 처리 유니트 40 : 명령 큐
42 : 디스패치 유니트 44 : 완료 유니트
50 : 고정-소수점 유니트(FXU) 52 : 로드/저장 유니트(LSU)
54 : 부동-소수점 유니트(FPU) 56, 58 : 명령 관리 유니트(IMMU)
57 : DTLB 59 : ITLB
60 : 범용 레지스터(GPR) 62 : GPR 명칭변경 버퍼
64 : 부동-소수점 레지스터(FPR) 66 : FPR 명칭변경 버퍼
70 : 에뮬레이션 지원 유니트(EAU) 72 : 명령 버퍼
74 : 명령 사전인출
75 : 코드 세그먼트 베이스 레지스터(CSBR)
76 : 세그먼트 전용 레지스터(SPR) 78 : 명령 디코더
80 : 고객 브랜치 유니트 82 : 브랜치 히스토리 테이블(BHT)
83 : 고객 플래그 90 : 태그 발생 유니트
92 : 고객 캐시 94 : 고객 디스패치 유니트
95 : 현재 엔트리 포인터 97 : 다음의 가장 오래된 엔트리(EP)
100 : 고객 명령 큐
이제 도면 특히 도 1을 참조하면, 본 발명에 따른 데이터 처리 시스템(2)의 상위 레벨 블록도를 볼 수 있다. 도시한 바와 같이, 데이터 컴퓨터 시스템을 구성하는 데이터 처리 시스템(2)은 하나 이상의 CPU(4)을 포함하는데, 이 CPU(4)는 표준 하드웨어 구성을 가진 데이터 처리 시스템(2)의 다른 구성요소에 연결된다. 예를 들어, 메모리 제어기(5) 및 시스템 버스(7)를 통해 메인 메모리(6)와 상호접속된다. 시스템 버스(7)는 또한 PCI(Peripheral Component Interconnect) 호스트 브리지(host bridge)(11)에 의해서 PCI 버스에 연결됨으로써, 시스템 버스(7)에 연결된 디바이스들과 주변 구성요소(10) 및 I/O 구성요소(8) 간의 통신이 가능하게 된다. 설명 목적 상, CPU(4)를 IBM 사가 제조한 PowerPCTM급 프로세서 중의 하나에 의해 구현한 예시적인 실시예를 참조해서 본 발명을 후술할 것이나, 다양한 다른 프로세서를 이용할 수도 있음을 알 수 있을 것이다.
PowerPCTM프로세서로서 구현하는 경우에는, 각각의 CPU(4)가 각종 레지스터, 버퍼, 실행 유니트 및 축소 명령형 컴퓨팅(reduced instruction set computing(RISC)) 기법에 따라 동작하는 기능 유니트를 포함하는 단일 집적 회로 슈퍼스칼라 마이크로프로세서(single integrated circuit superscalar microprocessor)를 구비하는 것이 추론적. 각각의 CPU(4)는 메모리 맵(memory map)(14)으로부터 제공되는 (예를 들어, 응용 프로그램(16) 및 운영 시스템/커널(operating system/kernel)(18)을 형성하는 명령과 같은) PowerPCTM명령 세트 구조의 RISC 명령을 실행한다. CPU(4)에 대해 원시적인 PowerPCTM명령 세트 구조는 다수의 공개 문헌 예를 들어PowerPC TM Instruction Set ArchitecturePowerPC TM 603 RISC Microprocessor User's Manual (Order No. MPR603UMCI-01)에서 정의되어 있으며, 이들 문헌은 IBM Microelectronics으로부터 구입할 수 있다. RISC 명령 예를 들어 PowerPCTM명령 세트 구조에 의해서 정의되는 명령은 레지스터-레지스터 및 레지스터-메모리 동작만을 포함하고 메모리-메모리 동작은 포함하지 않으며 종종 1-기계 사이클(one machine cycle)에서 마이크로코딩 없이(without microcoding) 실행되는 고정된 명령 길이(fixed instruction length)(예를 들어 32-비트)를 갖는 것으로서 특징화할 수 있다. 각각의 CPU(4)는 또한 본 발명에 따라 적용되어 에뮬레이션에 의해 고객 명령(예를 들어, CPU(4)에 대해 원시적이지 않은 CISC 명령 또는 어떤 다른 명령 세트)을 실행한다. 후술하는 바와 같이, 고객 명령(20)은 제각기 둘 이상의 원시 명령을 포함하는 하나 이상의 의미 루틴(19)을 인출해서 실행하는 것에 의해 제각기 에뮬레이트된다. 예를 들어, 고객 명령(20)은 메모리-메모리 CISC 명령 예를 들어:
ADD MEM1, MEM2, MEM3
일 수도 있는데, 이것은 메모리 위치 #1의 내용을 메모리 위치 #2의 내용에 가산하고 그 결과를 메모리 위치 #3에 저장하는 것.을 의미한다. 고객 CISC 명령을 에뮬레이트하기 위한 의미 루틴(19)은 다음의 원시 RISC 명령:
LOAD REG1, MEM1
LOAD REG2, MEM2
ADD REG3, REG2, REG1
STORE REG3, MEM3
를 포함할 수도 있다. 이 대표적인 의미 루틴(19)은 메모리 위치 #1 및 #2의 각각의 내용을 레지스터 #1 and #2에 제각기 로딩하고, 레지스터 #1 및 #2의 내용을 가산하고, 그 가산 결과를 레지스터 #3에 저장하며, 레지스터 #3의 내용을 메모리 위치 #3에 저장한다. 도 1에 또한 도시한 바와 같이, 메모리 맵(14)은 양호하게는 또한 의미 루틴 합성 코드(semantic routine synthesis code)(22)를 포함하는데, 이 코드는 고객 명령에 대응하는 의미 루틴이 영역(19) 내에 있는 의미 루틴 중의 하나가 아닌 경우에 그 의미 루틴을 합성하는데 사용될 수 있는 사용자-레벨 코드(user-level code)를 포함한다.
도 2를 참조하면, CPU(4)의 보다 상세한 블록도를 볼 수 있다. 도시한 바와 같이, CPU(4)는 버스 인터페이스 유니트(bus interface unit : BIU)(30)를 통해서 시스템 버스(12)에 연결된다. BIU(30)는 시스템 버스(12)에 연결된 디바이스와 CPU(4)간의 정보 전달을 제어한다. BIU(30)는 또한 명령 캐시(cache)(32)와 데이터 캐시(34)에도 연결된다. 명령 캐시(32)와 데이터 캐시(34)는 고속 캐시로서, CPU(4)가 메인 메모리(6)로부터 이전에 전달된 명령 및 데이터에 비교적 신속하게 액세스할 수 있게 함으로써 데이터 처리 시스템(2)의 동작 속도를 향상시킨다. 명령 캐시(32)는 또한 순차 인출기(sequential fetcher)(36)에 연결되는데, 이 순차 인출기는 각각의 실행 사이클 동안 명령 캐시(32)로부터 원시 명령을 인출한다. 순차 인출기(32)는 명령 캐시(32)로부터 인출된 브랜치 명령(branch instructions)을 실행을 위해 브랜치 처리 유니트(branch processing unit : BPU)(38)로 전송하나, 명령 큐(40) 내에 임시적으로 순차 명령을 버퍼링한다. 명령 큐(40) 내에 저장된 순차 명령은 디스패치 유니트(dispatch unit)(42)에 의해서 CPU(4)의 순차 실행 회로에 순차적으로 디스패칭된다.
도시한 예시적인 실시예에서, CPU(4)의 순차 실행 회로는 3개의(또는 4개 이상의) 실행 유니트 즉 고정-소수점 유니트(fixed-point unit : FXU)(50), 로드/저장 유니트(load/store unit : LSU)(52) 및 부동-소수점 유니트(floating-point unit : FPU)(54)를 포함한다. 이들 3개 실행 유니트의 각각은 1개 이상 클래스의 원시 명령을 실행할 수 있으며, 이들 모든 실행 유니트는 각각의 프로세서 사이클 동안 동시적으로 동작할 수 있다. 예를 들어, FXU(50)는 고정-소수점 수학 연산 예로서 가산, 감산, AND, OR 및 XOR를 특정화된 범용 레지스터(specified general purpose registers : GPR)(60) 또는 GPR 명칭변경 버퍼(rename buffers)(62)로부터 수신된 소스 피연산자(source operands)를 이용하여 수행한다. 고정-소수점 명령의 실행 후, FXU(50)는 그 명령의 데이터 결과를 GPR 명칭변경 버퍼(62)에 출력하고, 이 버퍼는 명령 처리의 되기록 단계(writeback stage) 동안 데이터 결과가 GPR(60)의 적어도 하나에 기록될 때까지 그 데이터 결과를 임시 저장한다. 이와 유사하게, FPU(54)는 부동-소수점 연산 예로서 부동-소수점 승산, 제산을 부동-소수점 레지스터(floating-point registers : FPR)(64) 또는 FPR 명칭변경 버퍼(66)로부터 수신된 소스 피연산자를 이용하여 수행한다. FPU(54)는 부동-소수점 명령의 실행 결과에 따른 데이터를 선택된 FPR 명칭변경 버퍼(66)에 출력하고, 이 버퍼는 명령 처리의 되기록 단계 동안 데이터 결과가 선택된 FPR(64)에 기록될 때까지 그 데이터 결과를 임시 저장한다. 그의 명칭이 의미하는 바와 같이, LSU(52)는 부동-소수점 및 고정-소수점 명령을 실행하는데, 이들 명령은 메모리(즉, 데이터 캐시(34) 또는 메인 메모리(6))로부터의 데이터를 선택된 GPR(60) 또는 FPR(64)에 로딩하거나 GPR(60), GPR 명칭변경 버퍼(62), FPR(64) 및 FPR 명칭변경 버퍼(66) 중의 선택된 하나를 데이터 캐시(34) 또는 메인 메모리(6)에 저장한다.
CPU(4)는 명령의 파이프라이닝 및 무순서 실행(pipelining and out-of-order execution of instructions)을 이용하여 그의 슈퍼스칼라 구조 성능을 더욱 향상시킨다. 따라서, 순차 명령들간에서 데이터 종속성 및 반종속성(data dependencies and antidependencies)이 관찰되는 한 다수의 명령이 BPU(38), FXU(50), LSU(52) 및 FPU(54)에 의해서 어떤 순서로 동시에 실행된다. 또한, 명령은 인출, 디코드/디스패치, 실행, 최종처리 및 완료/되기록(fetch, decode/dispatch, execute, finish and completion/writeback)을 비롯한 일련의 파이프라인 단계에서 각각의 FXU(50), LSU(52) 및 FPU(54)에 의해서 처리된다. 그러나, 당업자라면 인지할 수 있듯이, 어떤 구성을 구현하는데 있어서는 몇몇 파이프라인 단계들을 감소시키거나 조합할 수 있다.
인출 단계 동안, 순차 인출기(36)는 명령 캐시(32)로부터 하나 이상의 메모리 어드레스와 관련된 하나 이상의 원시 명령을 검색한다. 상술한 바와 같이, 명령 캐시(32)로부터 인출된 순차 명령은 명령 큐(40) 내에 순차 인출기(36)에 의해서 저장된다. 이와는 달리, 순차 인출기(36)는 브랜치 명령을 명령 스트림으로부터 이동시켜(폴드 아웃하여(folds out)) 실행을 위해서 BPU(38)에 보낸다. BPU(38)는 양호하게는 브랜치 예측 메카니즘(branch prediction mechanism)을 포함하는데, 이 메카니즘은 도시한 실시예에서 BPU(38)가 브랜치를 취할 것인지 아닌 지의 여부를 예측하는 것에 의해 분석되지 않은 조건부 브랜치 명령(unresolved conditional branch instructions)을 추론적으로 실행할 수 있게 하는 브랜치 히스토리 테이블(branch history table)과 같은 동적 예측 메카니즘을 포함한다.
디코드/디스패치 단계 동안, 디스패치-종속 실행 자원(dispatch- dependent execution resources)이 이용가능하게 되는 때에 디스패치 유니트(42)는 명령 큐(40)로부터의 하나 이상의 원시 명령을 디코딩하여 순차 실행 유니트(50, 52 및 54) 중의 적당한 것에 디스패칭한다. 이들 실행 자원은 디스패치 유니트(42)에 의해서 할당되는 것으로서, 그들 자원으로서는 완료 유니트(44)의 완료 버퍼 내에 있는 엔트리 및 각 디스패치된 명령의 데이터 결과에 대한 GPR 명칭변경 버퍼(60) 또는 FPR 명칭변경 버퍼(66) 내의 명칭변경 버퍼가 있다.
실행 단계 동안, 지시된 연산에 대한 피연산자 및 실행 자원이 이용가능하게 되는 때에 실행 유니트(50, 52 및 54)는 임기웅변적으로 디스패치 유니트(42)로부터 수신된 원시 명령을 실행한다. 디스패치 스톨(dispatch stalls)을 최소화하기 위해, 실행 유니트(50, 52 및 54)의 각각은 양호하게는 피연산자 또는 실행 자원을 이용할 수 없게 되는 디스패치된 명령을 저장하는 예약 테이블(reservation table)을 갖추고 있다.
원시 명령이 지시하는 연산을 수행한 후, 그 연산의 데이터 결과는 실행 유니트(50, 52 및 54)에 의해서 명령 유형에 따라 GPR 명칭변경 버퍼(62) 또는 FPR 명칭변경 버퍼(66) 내에 저장된다. 그다음, 실행 유니트(50, 52 및 54)는 그가 명령을 최종처리했음을 완료 유니트(44)에 신호한다. 최종처리 신호의 수신에 응답하여, 완료 유니트(44)는 최종처리 신호에 의해 특정된 명령의 완료 버퍼 엔트리를 완료로서 표시한다. 그런 후, 완료로서 표시된 명령은 되기록 단계로 진입하고, 이 단계에서 GPR 명령변경 버퍼(62)로부터 GPR(60)로 또는 FPR 명칭변경 버퍼(66)로부터 FPR(64)로 제각기 데이터를 전달하는 것에 의해 명령 결과는 구조화된 상태(architected state)로 기록된다. 정확한 예외 처리(precise exception handling)를 지원하기 위해, 원시 명령은 프로그램 순서로 되기록된다.
도 2에 도시한 바와 같이, 고객 명령의 에뮬레이션을 용이하게 하기 위해, CPU(4)는 에뮬레이션 지원 유니트(emulation assist unit : EAU)(70)를 포함하는데, 이 유니트는 도 3에 더욱 상세히 도시된다. 도 3에 도시한 바와 같이, EAU(70)는 특히 고객 명령을 포함하는 고객 어드레스 공간 세그먼트에 대한 논리적 베이스 어드레스(logical base address)를 저장하기 위한 다수의 전용 레지스터(a number of special purpose registers : SPR)(76)를 구비한다. SPR(76)은 현재 세그먼트의 베이스 어드레스 및 현재 고객 명령에 대한 오프셋을 저장하는 코드 세그먼트 베이스 레지스터(code segment base register : CSBR)(75)를 포함한다. EAU(70)는 또한 데이터 캐시(34)로부터 고객 명령을 인출하기 위한 명령 사전인출 유니트(instruction prefetch unit)(74) 및 데이터 캐시(34)로부터 검색된 고객 명령을 임시적으로 저장하기 위한 명령 버퍼(72)를 포함한다. 또한, EAU(70)는 고객 명령을 디코딩하기 위한 명령 디코더(78), 고객 브랜치 명령을 실행하기 위한 고객 브랜치 유니트(80), 각각의 순차 고객 명령에 대한 연산 코드 태그(opcode tags)를 생성하기 위한 태그 생성 유니트(tag generation unit)(90), 다수의 연산 코드의 각각과 연관하여 의미 루틴(SR)을 저장하기 위한 고객 캐시(92), 고객 명령과 연관된 정보를 저장하기 위한 고객 명령 큐(100) 및 순차 인출기(36)에 SR 어드레스를 제공하기 위한 고객 디스패치 유니트(94)를 포함한다.
도 4에는 고객 명령 큐(100)가 더욱 상세히 도시되는데, 이 고객 명령 큐(100)는 고객 명령 스트림과 원시 명령 스트림간의 동기점(synchronization point)을 제공한다. 다음의 설명으로부터 명백하듯이, 고객 명령 큐(100)는 CPU(100)가 에뮬레이트한 고객 명령이 사전처리되어 각종 에뮬레이션 파이프라인 단계와 연관된 대기시간(latency)이 겹쳐질 수 있게 한다.
도시한 실시예에서, 고객 명령 큐(100)는 5개의 엔트리를 포함하는데, 이들 엔트리의 각각은 다음의 필드(112-134)를 포함한다.
VI: 이것은 직접 필드(116)의 내용(content of immediate)이 유효한 지의
여부를 나타낸다.
VO: 이것은 SR 오프셋 필드(118)의 내용(content of SR offset field)이 유
효한지의 여부를 나타낸다.
직접(Immediate) : 이것은 고객 명령에 의해 특정되어 파라미터로서 대응하
는 의미 루틴으로 통과되는 직접 데이터를 저장한다.
SR 오프셋 : 이것은 (CSBR(75) 내에 유지되는) 고객 명령의 베이스 어드레스
와 대응하는 의미 루틴간의 오프셋이다.
L : 이것은 원시 명령 내의 의미 루틴 길이이다.
GIP : 이것은 고객 어드레스 공간에서 CSBR(75)로부터 고객 명령까지의 오프
셋 포인터(offset pointer)이다.
DE : 이것은 2개의 고객 명령 큐 엔트리(및 2개의 의미 루틴)가 단일 고객
명령의 에뮬레이션에서 이용되는 지의 여부를 나타낸다.
S : 이것은 고객 명령이 고객 명령 스트림의 추론적인(즉, 예측된) 실행 경
로 내에 있는 지의 여부를 나타낸다.
BBID : 이것은 BBID의 풀(pool)로부터 각각의 의미 루틴에 순차적으로 할당
된 독특한 기본적인 블록 ID 번호(unique basic block ID number)이다.
GCR: 이것은 이후의 고객 브랜치 명령을 예측하는데 이용될 수도 있는 조건
(예로서, 동일함/동일하지 않음)을 나타내는 고객 조건 레지스터이다.
CRM: 이것은 GCR 필드 내의 어떤 비트들이 고객 명령에 의해 변경될 것인가
를 나타내는 고객 조건 레지스터 마스크(guest condition register mask)이
다.
VB: 이것은 GCR 필드(130)의 값을 세팅할 의미 루틴 원시 명령이 실행되었
는 지의 여부를 나타낸다.
도 4에 도시한 바와 같이, 고객 명령 큐(100)는 연관된 에뮬레이션 명령 포인터 레지스터(an associated emulation instruction pointer
register : EIPR)(140)를 갖는데, 이 레지스터는 양호하게는 소프트웨어-액세스가능 전용 레지스터(software-accessible special purpose register : SPR)로서 구현되는 것으로서, 이 레지스터는 CSBR(75)에 의해 특정된 베이스 어드레스로부터 해석 중인 현재 고객 명령까지의 오프셋을 포함한다. EAU(70)는 원시 명령 세트 내의 새롭게 정의된 고객 디스패치 완료(guest dispatch completion(gdispc) 명령의 실행에 응답하여 또한 고객 브랜치 유니트(80)에 의한 고객 브랜치 명령의 실행에 응답하여 의미 루틴의 호출 없이 EIPR(140)의 내용을 갱신한다. 또다른 전용 레지스터인 에뮬레이션 명령 포인터 다음(emulation instruction pointer next : EIP_NEXT) 레지스터(142)는 CSBR(75)에 의해 특정된 베이스 어드레스로부터 해석할 다음 고객 명령까지의 오프셋을 포함한다. EAU(70)는 gdispc 명령이 실행되는 때, SPR 명령에 대한 특정 이동(즉, mtspr[EIP NEXT])이 EIP_NEXT 레지스터(142)를 타겟으로서 실행되는 때 그리고 의미 루틴의 호출 없이 고객 브랜치 또는 고객 NOOP 명령이 에뮬레이트되는 때 EIP_NEXT 레지스터(142)의 내용을 갱신한다. 이들 2개의 오프셋 포인터는 고객 명령 스트림의 상태가 예를 들어 예외로부터의 복귀한 때 문맥 전환(context switch) 다음에 용이하게 복원될 수 있게 한다. 즉, 현재 EIP 및 다음 EIP을 저장함으로써, 현재 EIP가 가리키는 인터럽트 시에 에뮬레이션 중에 있는 고객 명령은 현재 EIP 및 다음 EIP 모두를 저장하는 경우 다음 EIP의 계산을 위해 재실행할 필요가 없다.
고객 명령 큐(100)는 또한 그와 관련하는 프레딕티드 테이큰 플래그(predicted taken flag : PTF)(144)를 갖는데, 이 플래그는 분석되지 않은 고객 브랜치 명령이 취해질 것으로서 예측되는 지의 여부 따라서 추론적인 것으로서 표시한 순차 고객 명령(즉, S 필드가 세팅됨)이 타겟 또는 순차 실행 경로 내에 있는 지의 여부를 나타낸다.
X플래그(Xflags)(150)는 구조화된 조건 레지스터로서, 이 레지스터에 대해 각 엔트리(110)내의 GCR(130)은 명칭변경된 버젼(renamed version)이다. 엔트리(110)가 고객 명령 큐(100)의 최하부로부터 제거되는 때, 엔트리(110)내의 CRM(132)에 의해서 특정된 X플래그(150)내의 비트들은 GCR(130)내의 대응하는 비트 값들에 의해서 갱신된다. X플래그(150), GCR 필드(130), CRM 필드(132) 및 VB필드(134)(그리고, 관련 액세스 회로)는 도 3에서 간단히 고객 플래그(83)로서 식별되는 것으로서, 이들은 후술하는 바와 같이 고객 브랜치 명령의 분석을 위해 고객 브랜치 유니트(80)에 의해서 참조될 수 있다.
각 고객 명령을 단일 의미 루틴을 실행하는 것에 의해 에뮬레이트하는 경우, 각 고객 명령에는 고객 명령 큐(100) 내의 단일 엔트리(110) 만이 할당된다. 그러나, 어떤 경우에는, 둘 이상의 엔트리(110)를 단일 순차 고객 명령에 할당할 수도 있다. 예를 들어, 고객 명령이 x86 명령인 실시예의 경우에는, 대다수의 순차 고객 명령이 두개의 독특한 부분 즉 소스(들)의 어드레스 및 데이터의 수신지(the addresses of the source(s) and destination of the data)를 결정하는 방법을 특정하는 제 1 부분과 데이터에 대해 행할 동작을 특정하는 제 2 부분을 포함한다. 이러한 경우에는, 제 1 의미 루틴을 이용하여 데이터 소스 및 수신지 어드레스의 결정에 관련된 명령 실행 부분을 에뮬레이트하고, 제 2 의미 루틴을 이용하여 데이터에 대한 동작을 수행하는데 관련된 명령 실행 부분을 에뮬레이트한다. 따라서, 고객 명령에는 고객 명령 큐(100)내의 두개의 엔트리(110)가 할당된다. 이들 두 엔트리 중의 하나는 제 1 의미 루틴에 관련된 정보를 포함하고 다른 하나는 제 2 의미 루틴에 관련된 정보를 포함한다. 이러한 이중 엔트리 고객 명령은 두 엔트리(110)의 구(제 1) 엔트리 내에 있는 DE(이중 엔트리) 필드(124)를 세팅함으로써 고객 명령 큐(100)내에 표시된다. DE 필드를 세팅함으로써, 두 엔트리(110)는 두 의미 루틴이 (제 2 의미 루틴을 종료시키는 gdispc 명령에 응답하여) 완료되는 때 고객 명령 큐(100)로부터 철수될 것이다. 두 의미 루틴을 양호하게 이용하여 고객 명령을 에뮬레이트함으로써, 어떤 루틴들은 다수의 고객 명령에 의해서 공유될 수 있게 되어, 의미 루틴(19)의 전체적인 메모리 점유면적이 감소될 수 있다.
고객 명령 큐(100)내의 엔트리 순서화는 고객 명령 큐(100)내의 가장 오래된 엔트리(oldest entry)를 가리키는 현재 엔트리 포인터(95) 및 다음의 가장 오래된 엔트리(next oldest entry)를 가리키는 다음 엔트리 포인터(97)에 의해서 유지된다. gdispc 명령의 인출 및 완료에 응답하여, 현재 엔트리 포인터(95)에 표시되는 고객 명령 큐 엔트리가 철수되며, 현재 엔트리 포인터(95) 및 다음 엔트리 포인터(97)가 갱신된다. 따라서, 엔트리들이 고객 명령 큐(100)의 최하부(bottom)로부터 소멸되며 최상부(top)에 삽입된다.
이제 도 2 내지 4를 참조하여 EAU(70)의 동작을 설명하겠다.
EAU 초기화
에뮬레이션을 위해 EAU(70)를 초기화하기 위해서, EIP_NEXT 레지스터(142)를 타겟으로 하는 원시적인 SPR로의 이동(mtspr) 명령(즉, PowerPCTM명령 세트에서 mtspr[EIP_NEXT])을 실행함으로써 EIP_NEXT 레지스터(142)내로 에뮬레이트할 제 1 고객 명령에 대한 어드레스 오프셋을 로딩한다. 양호한 실시예에서, 이 원시 명령은 고객 브랜치 명령과 같은데, 이는 그러한 고객 브랜치 명령의 기능이 EIP_NEXT 레지스터(142)에 (CSBR(75))내의 오프셋 값인) 실행될 다음 고객 명령에 대한 포인터를 로딩하고자 하는 것이기 때문일 것이다. 고객 명령 큐(100)내에 있는 가장 오래된 엔트리(110)의 VI필드(112) 및 VO필드(114)는 모두 mtspr[EIP_NEXT] 명령에 응답하여 클리어된다. 그 후, 데이터 캐시(34)로부터의 고객 명령의 사전인출은 gdispc 명령에 의해 트리거될 수 있다.
고객 명령 큐(100)내에 있는 가장 오래된 엔트리(110)의 VI필드(112) 및 VO필드(114)는 또한 mtspr[EIP] 및 mtspr[CSBR] 명령에 응답하여 그리고 고객 브랜치 명령이 잘못 예견된 것으로서 분석되는 경우에 클리어된다.
고객 명령 사전인출
상술한 바와 같이, 데이터 캐시(34)로부터의 고객 명령 사전인출은 고객 명령을 원시 명령 스트림 내에 배치함으로서 트리거된다. 순차 인출기(36)에 의해 인출되는 경우, gdispc 명령은 고객 명령 큐(100)내의 가장 오래된 엔트리(110)의 VO필드(114)가 세트될 때까지 순차 인출기(36)에 의한 인출을 연기시키는 인터록(interlock)으로서 작용한다. 순차 인출기(36)의 연기에 응답하여, EAU(70)내의 명령 사전인출 유니트(74)는 CSBR(75)내에 포함된 베이스 어드레스 및 오프셋에 의해 특정되는 어드레스의 고객 명령에 대한 인출 요구를 데이터 캐시(34)에 대해 만든다.
고객 명령 디코딩
명령 사전인출 유니트(74)로부터의 인출 요구에 응답하여 데이터 캐시(34)가 공급하는 고객 명령은 명령 버퍼(72)내에 임시 저장되며, 그 다음 명령 디코더(78)내로 한번에 하나씩 로딩된다. 이 디코더는 적어도 부분적으로 각 고객 명령을 디코딩하여, 명령의 길이와, 고객 명령이 브랜치 명령인지의 여부와, 고객 명령의 직접 데이터(있는 경우)를 결정한다.
고객 브랜치 명령 처리
명령 디코더(78)가 고객 명령이 브랜치 명령이라고 결정하면, 고객 브랜치 명령은 고객 큐(100)의 가장 오래된 미사용 엔트리(110)를 고객 브랜치 명령의 할당 후에 처리하기 위해서 고객 브랜치 유니트(80)에 보내진다. (다른 실시예에서, 고객 명령 순서화는 고객 명령 큐 엔트리를 고객 브랜치 명령에 할당하지 않고서도 유지될 수 있다). 고객 브랜치 유니트(80)는 먼저 조건부 고객 브랜치 명령을 고객 플래그(83)를 참조하여 분석하려고 한다. 고객 브랜치가 의존하는 비트(들)가 CRM 필드(132)내에 세팅되고 VB필드(134)가 바로 앞선 순차 고객 명령에 대응하는 엔트리(110)내에서 유효한 것으로 표시되면, 고객 브랜치 유니트(80)는 고객 브랜치 명령을 바로 앞선 순차 고객 명령의 엔트리(110)의 GCR 필드(130)를 참조하여 분석한다. 그러나, 바로 앞선 순차 고객 명령에 대응하는 엔트리(110)내에 있는 CRM(132)내의 관련 비트(들)가 세팅되지 않았으면, 고객 브랜치 명령은 유효한 것으로서 표시된 CRM 필드(132) 및 VB필드(134)내에 세팅된 관련 비트들을 가진 가장 새로운 선행하는 엔트리(110)(있는 경우)를 참조하여 또는 그 엔트리가 없는 경우에는 X플래그(150)를 참조하여 분석된다. 한편, 고객 브랜치 유니트(80)는 고객 브랜치에 관련된 비트(들)가 GCR 필드(130)내에 세팅되는 가장 새로운 선행하는 엔트리(110)내에 VB필드(134)가 유효한 것으로서 표시되는 경우 통상적인 브랜치 히스토리 테이블(BHT)(82)을 참조하여 조건부 고객 브랜치 명령을 예측(즉, 추론적으로 실행)한다. 분석된 또는 예측된 실행 경로의 어드레스에 있는 고객 명령은 그 후 데이터 캐시(34)로부터 명령 사전인출 유니트(74)를 통해 인출된다. 고객 브랜치 명령의 처리에 대한 세부적인 사항은 미국 출원 제 호(IBM Docket No, AA9-96-004) 및 제 호(IBM Docket No, AA9-96-005)에 개시되고 있는데, 이들은 본 명세서에 참고로 인용된다.
순차 고객 명령 처리
명령 디코더(78)에 의해 디코딩된 고객 명령이 순차 명령인 경우, 고객 명령 큐(100)의 적어도 가장 오래된 미사용 엔트리(110)가 고객 명령에 할당된다. 도 3에 도시한 바와 같이, 명령 디코더(78)는 그 다음 직접 데이터(있을 경우)및 고객 명령에 대한 오프셋 포인터를 할당된 엔트리(110)의 직접 필드(116) 및 IP 필드(122)내에 제각기 저장한다. 명령 디코더(78)가 직접 데이터를 직접 필드(116)내로 로딩하는 것에 응답하여, VI필드(112)가 세팅된다.
순차 고객 명령은 그 다음 명령 디코더(78)로부터 태그 발생 유니트(90)로 보내지며, 이 태그 발생 유니트는 고객 명령을 독특한 연산 태그로 변환한다. 본 발명의 양호한 실시예에 따라면, 여러 다른 연산 태그가 여러 다른 고객 명령들간의 구별을 위해서 뿐만 아니라 여러 다른 레지스터들을 액세스하는 동일한 고객 명령들간의 구별을 위해서도 이용된다. 따라서, 여러 다른 연산 태그는 고객 제산 및 고객 승산 명령(guest divide (gdiv) and guest multiply (gmult) instructions)에 대해서 또한 여러 다른 레지스터를 타겟으로 하는 gmult R3, R2, R1 및 gmult R4, R2, R1 명령에 대해서도 이용된다. 태그 발생 유니트(90)가 발생하는 독특한 연산 태그는 고객 캐시(92)내에 인덱스를 형성하는데, 이것은 고객 명령에 대응하는 의미 루틴의 유효 어드레스를 결정하기 위해서 이용되는 오프셋을 포함하는 특정 캐시 엔트리를 선택한다.
도시한 바와 같이, 설명적인 실시예에서, 고객 캐시(92)는 4 K바이트 엔트리를 제각기 포함하는 256 라인을 가진 4-웨이 세트 결합 캐시(four-way set associative cache)를 포함한다. 고객 캐시(92)에서의 실패(miss)는 사용자-레벨 인터럽트를 발생하는데, 이 인터럽트는 의미 루틴 합성 코드(semantic routine synthesis code)(22)의 실행에 의해서 서비스된다. 전술한 바와 같이, 의미 루틴 합성 코드(22)는 원시 명령으로부터의 고객 명령에 대응하는 의미 루틴을 합성하여 그 루틴을 메모리 맵(14)의 영역(19)내에 저장한다. 고객 명령의 베이스 어드레스로부터 새롭게 합성된 의미 루틴의 위치까지의 오프셋은 그 다음 후속 철회(subsequent recall)를 위해 고객 캐시(92)내에 저장된다. 고객 명령 세트들은 전형적으로 완전하게 안정되기 때문에, 전형적으로 고객 캐시(92)가 99% 이상의 적중률(hit rates)을 달성한다.
의미 루틴((SR) 오프셋이 고객 캐시(92)내에 위치(또는 저장)되는 것에 응답하여, SR 오프셋은 할당된 엔트리(110)의 SR 오프셋 필드(118)내에 저장됨으로써, VO필드(114)는 유효한 것으로서 표시된다. 이때까지, VO는 세팅되어 SR 오프셋 필드(118)의 내용이 유효하고, L 필드(120), DE 필드(124), S 필드(126), BBID 필드(128) 및 CRM 필드(132)가 또한 할당된 엔트리(110)내에서 유효함을 나타낸다. 상술한 바와 같이, GCR 필드(130)는 VB필드(134)에 의해서 개별적으로 유효한 것으로서 표시된다.
고객 명령 큐(100)내의 가장 오래된 엔트리(110)의 VO필드(114)가 에뮬레이션 개시 시에 EAU(70)내의 제 1 고객 명령의 처리에 의해서 세팅되면, EIP_NEXT 레지스터(142)내의 값은 EIPR(140)로 전달되는데, 이는 고객 명령 큐(100)내의 가장 오래된(즉, 제 1) 명령이 현재 처리되고 있는 고객 명령임을 나타낸다. 이같은 이벤트에 응답하여, 고객 디스패치 유니트(94)는 SR 오프셋 필드(118)내의 SR 오프셋을 순차 인출기(36)로 전달하며, 이 인출기는 제 1 고객 명령에 대응하는 의미 루틴내의 원시 명령을 인출하기 시작한다. 도 4에 도시한 바와 같이, EAU(70)는 고객 디스패치 유니트(94)내의 인출 PTR(152)에 의해 의미 루틴이 인출되고 있는 고객 명령을 추적한다.
의미 루틴 처리
CPU(4)의 표준 명령 세트 내에 있는 의미 루틴(즉, 원시) 명령은 도 2를 참조하여 상술한 바와 같이 CPU(4)에 의해서 처리된다. 고객 명령 에뮬레이션을 지원하도록 세팅된 원시 명령 내로 삽입된 특정 명령은 후술하는 바와 같이 처리된다.
고객 명령을 연속적인 고객 명령 스트림내로 연결하기 위해서는, 고객 명령들이 제각기 단일의 의미 루틴에 의해서 표현되는 경우에는 gdispc 명령을 각 의미 루틴의 끝에 삽입하고 또는 고객 명령이 다수의 의미 루틴에 의해서 에뮬레이트되는 경우에는 그 명령을 고객 명령에 대응하는 최종 의미 루틴의 끝에 삽입하는 것이 추론적. gdispc 명령은 특정 형태의 원시 브랜치 명령으로서 정의하여 순차 인출기(36)에 의해 명령 캐시(32)로부터 인출되는 때 gdispc 명령이 원시명령 스트림으로부터 폴드 아웃되어 BPU(38)으로 보내지게 하는 것이 추론적. gdispc 명령의 검출에 응답하여, BPU(38)는 신호 라인(96)을 가정한다(assert). 고객 디스패치 유니트(94)는 현재 고객 명령에 대응하는 모든 엔트리(110)를 고객 명령 큐(100)로부터 제거하여 다음 엔트리 내에 저장된 의미 루틴 오프셋을 신호 라인(98)을 통해 순차 인출기(36)에 보내는 것에 의해서 신호 라인(96)의 가정에 응답한다. 상술한 바와 같이, 순차 인출기(36)는 그 다음 고객 명령의 베이스 어드레스에 의미 루틴 오프셋을 가산하는 것에 의해 다음 고객 명령에 대응하는 의미 루틴의 유효 어드레스(EA)를 계산하고 CPU(4)에 의한 실행을 위해 그 의미 루틴을 메모리로부터 인출한다.
다수의 의미 루틴을 이용하여 단일 고객 명령을 에뮬레이트하는 경우, 최종 의미 루틴이 아닌 의미 루틴은 gdispc 명령의 변종인 고객 디스패치 프롤로그 완료(guest dispatch prolog completion) (gdispp) 명령에 의해서 종료된다. 일반적으로, gdispp 명령은 gdispc 명령과 같이 처리된다. 예를 들어, gdispc 명령과 같이, gdispp 명령은 다음 의미 루틴의 인출을 트리거한다. 또한, gdispp 명령을 포함하는 의미 루틴에 대응하는 고객 명령 큐 엔트리(110)내의 VO필드(114)는 gdispp 명령이 실행되도록 세팅되어야만 한다. 그러나, gdispc 명령의 처리와는 대조적으로, gdispp 명령의 완료는 고객 명령 큐(100)로부터 엔트리(110)의 제거 또는 EIPR(140) 및 EIP_NEXT 레지스터(142)의 갱신을 트리거하지 않는다.
가산 명령의 형태로서 세팅된 원시 명령 내로 삽입된 다른 특정 명령은 고객 가산 직접 프롤로그[워드 또는 반워드(word or half word)] (gaddpi [w, h] 명령이다. gaddpi[w, h] 명령의 기능은 고객 명령에 할당된 두 고객 명령 큐 엔트리 중의 제 1 엔트리 내에 특정된 직접 데이터를 특정된 GPR(60)내의 값과 가산하여 그 합을 다른 GPR(60)내에 저장하는 것이다. 제 1 엔트리(110)에 대한 VI필드(112)는 대응하는 의미 루틴이 실행될 수 있게 세팅되어야만 한다.
상기한 것과 유사한 고객 가산 직접 완료[워드 또는 반워드] (gaddci [w, h] 명령은 고객 명령에 할당된 두 고객 명령 큐 엔트리 중의 제 2 엔트리 내에 저장된 직접 데이터를 특정된 GPR(60)의 값과 가산하여 그 합을 다른 GPR(60)내에 저장하는데 이용된다. 제 2 엔트리(110)에 대한 VI필드(112)는 대응하는 의미 루틴이 실행되도록 세팅되어야만 한다.
인터럽트 및 예외 처리
고객 명령 또는 원시 명령 예외에 응답하여, 명령 사전인출 유니트(74)에 의한 고객 명령 인출을 디스에이블링하는 비-구조화된 예외 플래그가 세팅된다. 최소한, 고객 명령 스트림의 문맥(context)은 인터럽트/예외 처리 동안 저장되고 인터럽트/예외로부터의 복귀 시에 EIPR(140) 및 EIP_NEXT 레지스터(142)의 내용을 SPR(76)내에 저장하는 것에 의해 복원된다. 실제 문제로서, 고객 명령 큐(100)의 전체 최하부 엔트리(110)를 SPR(76)내에 저장하여 인터럽트/예외에 후속하는 에뮬레이션의 재개시를 촉진하는 것이 추론적.
인터럽트로부터의 복귀에 후속하는 데이터 캐시(34)로부터의 고객 명령 사전 인출은 고객 명령 큐(100)내에 있는 적당한 엔트리(110)의 VI필드(112)가 세팅될 때가지 순차 인출기(36)를 인터록킹하여 연기시키는 gaddpi[w, h] 명령 또는 gaddci[w, h] 명령의 실행에 의해서 트리거될 수 있다. gdisp[p, c] 또는 gadd[p, c]i[w, h] 명령의 실행은 예외 플래그를 클리어한다.
메모리 관리
도 2를 참조하면, 명령 캐시(32)(및 메인 메모리(6))가 명령 관리 유니트(instruction memory management unit : IMMU)(58)를 통해 액세스되며, 마찬가지로 데이터 캐시(34)(및 메인 메모리(6))가 데이터 메모리 관리 유니트((instruction memory management unit : DMMU)(56)를 통해 액세스된다. 각 메모리 관리 유니트(56 또는 58)는 제각기의 번역 룩어사이드 버퍼(translation lookaside buffer)를 가지므로, ITLB(59) 및 별개의 DTLB(57)가 있다. TLB(57, 59)의 각각은 메모리(6)내의 페이지 테이블로부터의 페이지 테이블 엔트리 복사본을 포함하는데, 이 복사본은 메모리 내에 있는 페이지의 실제(물리적) 어드레스들을 명령 및 데이터에 대해 CPU(4)가 발생한 논리적(유효) 어드레스들과 상관시킨다. 고객(예를 들어, Intel x86) 명령 구조에 대한 메모리 관리는 원시 PowerPCTM체제와 상당히 다르기 때문에, 메모리 관리 유니트(MMU)(56, 58)는 메모리를 참조하는 고객 명령에 대한 어드레스 번역 기능을 포함한다.
도 5를 참조하면, 원시 명령의 처리 동안 논리적(유효) 어드레스를 물리적 어드레스로 번역하기 위해 MMU(56, 58)가 이용하는 체제가 도시된다. 도시한 바와 같이, MMU(56, 58)가 32-비트 논리적(유효) 어드레스(60)를 수신하는 것에 응답하여, 어드레스 번역이 인에이블링되는 지의 여부가 판단된다. 어드레스 번역이 인에이블링되지 않는다고 판단되면, 도면 부호(174)로서 도시한 바와 같이, 논리적 어드레스는 물리적 어드레스(174)로서 이용된다. 그러나 어드레스 번역이 인에블링되는 것으로 판단되면, 도면 부호(162)로서 도시한 바와 같이, MMU는 논리적 어드레스로부터 4개의 고차 비트들(high order bits)을 이용하여 24-비트 세그먼트 어드레스를 포함하는 세그먼트 레지스터를 선택한다. 세그먼트 레지스터의 선택과 병행하여, 도면 부호(164)로서 도시한 바와 같이, 논리적 어드레스는 블록 어드레스 번역(Block Address Translation : BAT) 어레이 내에 정의된 어드레스 범위와 비교된다. 논리적 어드레스가 BAT 어레이 내에 정의된 어드레스 범위에 속하면, 도면 부호(166)로서 도시한 바와 같이 블록 어드레스 번역을 수행하여 32-비트 물리적 어드레스를 얻는다.
그러나, BAT 어레이 내에서 논리적 어드레스에 대한 정합(match)이 발견되지 않으면, 선택된 세그먼트의 서술자(descriptor)내에 있는 제어 비트를 테스트하여 메모리 또는 I/O 제어기 인터페이스 공간에 대한 액세스가 있는지의 여부를 판단한다. 세그먼트 서술자내의 제어 비트가 I/O 제어기 인터페이스 공간에 대한 액세스가 있음을 나타내는 경우에는, 도면 부호(168)로서 도시한 바와 같이 I/O 제어기 인터페이스 번역을 수행하여 32-비트 I/O 제어기 인터페이스 어드레스를 얻는다. 그렇지 않은 경우에는, 24-비트 세그먼트 어드레스를 논리적 어드레스의 저차 28개 비트와 연결하여 52-비트 가상 어드레스를 생성하고 그 다음 (도면 부호(172)로서 도시한 바와 같이) 그 52-비트 가상 어드레스를 페이지 테이블 엔트리를 참조하여 32-비트 어드레스로 번역하는 것에 의해서(가능한 경우) 페이지 어드레스 번역을 수행한다. 요구되는 페이지 테이블 엔트리(PTE)가 DTLB(57) 및 ITLB(59) 중의 관련된 것에 있으면, 논리적 어드레스에 대응하는 물리적 어드레스는 즉시 이용가능하다. 그러나, TLB 실패가 발생하면, 예외를 취해 메모리 내의 페이지 테이블에서 정합 PTE를 조사한다.
페이지 어드레스 번역, 블록 어드레스 번역 또는 직접 어드레스 번역의 수행 여부와 관계없이, 결과의 32-비트 물리적 어드레스를 이용하여 명령 캐시(32) 및 데이터 캐시(34) 중의 하나를 액세스하고 캐시 실패의 발생 시에는 메인 메모리(6)를 액세스 한다.
도 6을 참조하면, Intel x86 구조의 통상적인 2-레벨 번역 체제가 도시된다. 도시된 바와 같이, 32-비트 선형 어드레스(linear address)(180)는 제 1 분할 선형 어드레스(180)를 10-비트 디렉토리(directory) 필드(182), l0-비트 테이블 필드(1840 및 12-비트 오프셋 필드(186)로 번역된다. 디렉토리 필드(182)의 값은 제어 레지스터(192)내에 저장된 루트 어드레스(root address)에 가산되는 경우 페이지 디렉토리(190)내의 엔트리(194)를 액세스하는 오프셋으로서 이용된다. 페이지 디렉토리 엔트리(194)는 페이지 테이블(200)의 베이스 어드레스를 식별하는 포인터를 포함한다. 테이블 필드(184)의 값은 디렉토리 엔트리(194)의 값에 가산되는 경우 메모리내의 페이지(204)의 베이스 어드레스를 특정하는 페이지 테이블 엔트리(202)를 선택하는 오프셋 포인터를 형성한다.
도 6에 도시된 바와 같이, 선형 어드레스(180)의 20개의 고차 비트들은 또한 x86 TLB(220)에서 정합 페이지 테이블 엔트리를 조사하기 위해 병렬로 이용된다. x86 TLB(220)에서 정합이 발견되면, 그 정합 페이지 테이블 엔트리를 이용하여 페이지 디렉토리(190) 및 페이지 테이블(200) 대신에 선형-실제 어드레스 번역을 수행하는데, 이것은 메모리 액세스를 필요로 한다.
도 5 및 6을 비교하면 명백하듯이, 고객 명령들은 원시 명령과 다른 페이지 어드레스 번역 체제를 필요로 한다. 따라서, 이제 도 7을 참조하면, 고객 선형 어드레스를 원시 실제(물리적) 어드레스로 번역하기 위해 본 발명이 이용하는 방법이 도시된다. 본 발명에 따르면, 먼저, 고객 명령 인출, 고객 데이터 로드 또는 고객 데이터 저장의 타겟 어드레스들일 수도 있는 각 고객 선형 어드레스들(240)을 먼저 도 6에 도시한 바와 같은 논리적으로 등가의 어드레스 번역 체제를 사용하여 고객 실제 어드레스(242)로 번역한다. 그 다음, 일정한 오프셋(0일 수도 있음)과 같은 간단한 정합 번역을 수행하여 원시 유효 어드레스(244)를 얻는다. 그런 후, 원시 물리적(실제) 어드레스(246)를 도 5에 도시한 논리적으로 등가의 프로세스에 의해 계산한다.
이제 도 8을 참조하면, 도 7에 도시한 고객 어드레스 번역 프로세스가 CPU(4)내에서 어떤 식으로 양호하게 구현되는가를 나타내는 논리적인 플로우챠트가 도시된다. 양호한 실시예에서, 모든 고객 저장 액세스(즉, 고객 명령 인출, 데이터 로드 및 데이터 저장)는 CPU(4)에 의해서 데이터 액세스로서 취급되므로, 따라서 DMMU(56)에 의해 액세스된다. 도 9에는 고객 어드레스들을 번역하기 위해 DMMU(56)가 이용하는 레지스터들이 도시된다.
도 8에 도시한 바와 같이, 고객 어드레스 번역 프로세스는 DMMU(56)가 고객 선형 어드레스를 수신하는 것에 응답하여 블록(250)에서 개시된다. DMMU(56)는 메모리 액세스 명령이 디코딩된 경우에 발생되는 비트가 있다는 것(또는 없다는 것)에 의해 입력으로서 수신되는 고객 선형 어드레스와 원시 유효 어드레스를 구별한다. 프로세스는 블록(250)으로부터 블록(252)으로 진행하여, 여기서, DTLB(57)이 고객 선형 어드레스를 원시 물리적 어드레스에 맵핑하는 고객(guest) 엔트리를 포함하는 지의 여부를 판단한다. 양호한 실시예에서, DTLB(57)는 원시 엔트리 및 고객 엔트리를 포함하는데, 이들은 예를 들어 1로 세팅된 X 비트에 의해 표시된다. 그러나, 다른 실시예들에서는, DTLB(57)가 원시 및 고객 엔트리에 대해 개별적인 TLB를 포함할 수도 있다. 어떤 경우에서도, 블록(252)의 판정은 예를 들어 32-비트 고객 선형 어드레스를 각 고객 엔트리의 제 1의 32-비트와 비교함으로써 행해진다. DTLB(57)에서의 적중에 응답하여, 프로세스는 블록(252)으로부터 블록(253)으로 진행하는데, 이 블록(253)은 DMMU(56)가 정합 DTLB 엔트리내의 원시 실제 페이지 어드레스를 이용하여 원시 물리적 어드레스를 계산하는 것을 예시하는데, 이에 대해서는 후술한다. 다음, 블록(254)에 도시한 바와 같이, DMMU(56)는 원시 물리적 어드레스를 이용하여 데이터 캐시(34) 또는 메인 메모리(6)내의 요구된 데이터를 액세스한다. 프로세스는 블록(270)에서 종료된다.
블록(252)을 다시 참조하면, DTLB(57)에 응답하여, 고객 DTLB 실패 예외가 발생한다. 적당한 예외 처리기(exception handler)로의 브랜치 전에, CPU(4)내의 하드웨어는 DTLB 실패 예외가 EAU_SRRO(296)로서 지정되는 SPR(76) 중의 하나에서 발생되는 의미 루틴 원시 명령의 어드레스를 저장한다. 양호한 실시예에서, 이 원시 명령은 완료 유니트(44)내의 완료 버퍼 엔트리에 포함된다. 또한, 하드웨어는 고객 페이지 인덱스(guest page index : GPI) 레지스터(282)로서 지정되는 SPR(76)에서의 DTLB 실패를 초래하는 고객 선형 어드레스(180)의 20개 고차 비트들을 저장한다. 그 다음 CPU(4)에 의한 예외는 고객 브랜치 레지스터(guest branch register : GBR)(298)내에 저장된 값으로부터 사전설정된 오프셋에 위치하는 사용자-레벨 예외 처리기(user-level exception handler)로 브랜치된다. 예외 처리 논리를 간단히 하기 위해서는, 고객 DTLB 실패 예외 처리기의 오프셋을 원시 DTLB 실패 예외 처리기에 할당된 오프셋과 동일하게 하는 것이 좋다.
도 8의 블록(260)에 도시한 바와 같이, 고객 DTLB 예외 처리기는 도 6에 도시한 논리적으로 등가의 어드레스 번역 프로세스를 이용하여 GPI 레지스터(282)내에 저장된 고객 선형 어드레스로부터 고객 실제 어드레스(242)를 발생한다. 고객 실제 어드레스(242)는 그 다음 범용 레지스터 GPRy내에 저장된다. 블록(262)에 도시한 바와 같이, 일정한 오프셋 값(0일 수도 있음)은 고객 실제 어드레스에 가산되어 원시 유효 어드레스를 생성하며, 이 어드레스는 GPRx(290)로 지정된 GPR(60) 중의 하나에 저장된다.
그 다음 프로세스는 블록(262)으로부터 블록(264)으로 진행하는데, 이는 예외 처리기 루틴에서 고객 TLB 로드(guest TLB load) (gtlbld) 명령의 실행을 예시한다. gtlbld 명령은 고객 TLB 엔트리의 제 1 워드를 구축하는 원시 명령 세트의 새롭게 정의된 동작이다. 도 9에 도시한 바와 같이, gtlbld 명령의 실행에 의해 CPU(4)내의 하드웨어는 통상적인 PPC-DCMP 레지스터(286)에 GPRx(290)의 비트 4-9(단축 페이지 인덱스(abbreviated page index : API)) 및 GPRx(290)의 4개의 상위 비트가 선택한 원시 세그먼트 레지스터(288)내에 저장된 값을 로딩하게 된다. 따라서, PPC-DCMP 레지스터(286)는 통상적인 원시 DTLB 엔트리의 제 1 워드와 동일한 포맷을 갖는다. gtlbld 명령의 실행에 의해 또한 CPU(4)내의 하드웨어는 (고객) X-DCMP 레지스터(280)의 선택된 필드들에 GPI 레지스터(282)의 4개 고차 비트 및 원시 세그먼트 레지스터(288)에 저장된 가상 페이지 번호들과 유사하게 고객 명령 및 데이터에 할당된 가상 페이지 번호의 고차 비트들을 특정하는 gSegID(284)의 19-비트 값을 로딩하게 된다. gtlbld 명령은 또한 X-DMISS 레지스터(292)에 GPI 레지스터(282)의 내용을 로딩하며, GPI 레지스터(282)는 DTLB 실패를 야기한 고객 선형 어드레스(180)의 20개 고차 비트를 저장한다. 마지막으로, 도 8의 블록(266)에 도시한 바와 같이, gtlbld 명령은 통상적인 PowerPCTM관리자-레벨 페이지 테이블 워크 루틴(supervisor-level page table walk routine)을 호출하는 하드웨어 예외를 발생한다. 페이지 테이블 워크 루틴은 고객 선형 어드레스가 맵핑되는 PowerPCTM(원시) 실제 페이지 어드레스를 판단하고 DTLB(57)내에 고객 엔트리를 생성하여 고객 선형 어드레스를 번역한다.
테이블 워크 루틴은 정합이 발견될 때까지 PPC-DCMP 레지스터(286)의 값을 메모리(데이터 캐시(34) 및 메인 메모리(6))내의 페이지 테이블 엔트리의 제 1 워드와 비교하는 것에 의해 개시한다. 페이지 테이블에서 정합 엔트리를 발견하는 것에 응답하여, 관리자-레벨 테이블 워크 루틴은 실제 페이지 어드레스(real page address : RPA) 레지스터(294)에 페이지 테이블 엔트리의 제 2 워드를 로딩한다. 그 다음 관리자-레벨 테이블 워크 루틴내의 원시 TLB 로드(tlbld) 명령을 실행한다. tlbld 명령에 응답하여, CPU(4)의 하드웨어는 X-DMISS 레지스터(292)의 비트들 15-19를 이용해서 양호하게는 32개 엔트리 2-웨이 세트 결합 TLB 어레이를 포함하는 DTLB(57)내의 엔트리를 선택한다. 도시한 실시예에서, 각 DTLB 엔트리는 36개 비트를 포함하는 제 1 세트와 32개 비트를 포함하는 제 2 세트를 포함한다. 도 8의 블록(268)에 도시한 바와 같이, 그 다음 tlbld 명령은 X-DCMP 레지스터(280)의 비트들 1-23이 선택된 DTLB 엔트리의 제 1 세트의 비트들 2-24내로 로딩되게 하고, X-DMISS 레지스터(292)의 비트들 4-14가 선택된 DTLB 엔트리의 제 1 세트의 비트들 25-35내로 로딩되게 하며, RPA 레지스터(294)의 값이 선택된 DTLB 엔트리의 제 2 세트 내로 로딩되게 한다. 선택된 DTLB 엔트리가 고객 어드레스 번역을 포함하는 것을 나타내기 위해, gtlbld 명령은 또한 X 비트를 세팅하는데, 이 비트는 선택된 DTLB 엔트리의 제 1 세트의 비트 1(즉, 제 2의 최상위 비트)을 포함한다. 관리자-레벨 테이블 워크 루틴은 그 다음 원시 인터럽트로부터의 복귀(return from interrupt) (rfi) 명령을 실행하여 제어를 사용자-레벨 예외 처리기로 복귀시킨다.
그 후, 사용자-레벨 예외 처리기는 다음과 같은 시퀀스의 원시 명령을 이용하여 고객 명령의 에뮬레이션으로 복귀한다.
mfspr GPRz, EAU_SRRO
mtctr GPRz
bcctr BO[0] = 1
mfspr (SPR로부터 이동) 명령은 예외가 EAU_SRRO(296)으로부터 발생된 명령의 유효 어드레스를 GPRz내로 로딩한다. 그 다음 유효 어드레스를 GPRz로부터 PowerPCTM카운트 레지스터(count register)내로 mtctr (카운트 레지스터로 이동(move to count register)) 명령을 이용하여 전달한다. 그 다음, bcctr (카운트 레지스터에 대해 조건적인 브랜치(branch conditional to count register)) 명령을 실행하는 것에 의해 EAU(70)의 고객 문맥을 그의 사전-예외 상태(pre-exception state)로 복원하는데, bcctr 명령은 순차 인출기(36)가 특정된 유효 어드레스에서(즉, 순차 인출기(36)가 DTLB 실패 예외에 응답하여 원시 명령을 인출을 중단하는 점에서) 원시 명령 인출을 재개하게 한다. 예외가 발생한 원시 명령이 다시 실행되면, 블록(252)에 도시한 바와 같이 고객 선형 어드레스를 번역을 위해 DMMU(56)로 다시 보낸다. 이때, 고객 선행 어드레스는 DTLB(57)에서 적중하며, 프로세스는 블록(253)으로 진행한다. 블록(253)은 정합 DTLB 엔트리의 제 2 세트의 19개 고차 비트(실제 페이지 번호)를 고객 선형 어드레스와 연결하는 것에 의해 원시 물리적 어드레스의 형성을 도시한다. 블록(254)에 도시한 바와 같이, DMMU(56)는 그 다음 원시 실제 어드레스를 이용하여 메모리 액세스를 수행한다. 그런 후, 프로세스는 블록(270)에서 종료한다.
본 발명의 예시적 실시예를 도시하고 설명하였으나, 당업자라면, 본 발명의 사상 및 범주를 벗어나지 않고서도 형태 및 세부적 사항이 다양하게 변경될 수도 있음을 이해할 수 있을 것이다. 예를 들어, CPU(4)내에서 에뮬레이트된 고객 명령이 x86인 실시예를 참조하여 본 발명을 설명하였지만, 다른 고객 명령들을 다른 식으로 에뮬레이트할 수도 있음을 이해할 수도 있을 것이다.
본 발명에 따르면, 원시(예를 들어, PowerPCTM) 구조가 고객(예를 들어, x86) 명령의 메모리 관리 방안에 맞추어진 페이지 테이블 및 번역 버퍼 엔트리를 사용할 수 있으면서도 원시 어드레싱 메카니즘을 이용하여 물리적인 메모리에 대한 실제 액세스를 수행할 수 있다

Claims (9)

  1. 원시 명령 세트(a native instruction set)를 가지며 고객 명령 세트(a guest instruction set)내의 명령들을 에뮬레이트하는(emulate) 프로세서를 운영하기 위한 방법에 있어서,
    상기 고객 명령 세트로부터의 일련의 고객 명령(a series of guest instructions)을 메모리 내에 저장하는 단계 ― 상기 일련의 고객 명령은 고객 어드레스 공간(guest address space)내의 고객 논리적 어드레스(a guest logical address)를 나타내는 고객 메모리 액세스 명령(a guest memory access instruction)임 ― 와,
    상기 일련의 고객 명령 내의 각 고객 명령에 대하여, 상기 각 고객 명령의 에뮬레이션을 위해 상기 원시 명령 세트로부터의 원시 명령들의 의미 루틴(a semantic routine)을 메모리 내에 저장하는 단계 ― 상기 원시 명령들은 원시 어드레스 공간 내의 원시 어드레스들(native addresses in native address space)을 이용함 ― 와,
    에뮬레이션을 위한 상기 고객 메모리 액세스 명령의 수신에 응답하여, 상기 고객 논리적 어드레스를 고객 실제 어드레스(a guest real address)로 번역한 후 상기 고객 실제 어드레스를 원시 물리적 어드레스(a native physical address)로 번역하는 단계와,
    상기 원시 물리적 어드레스를 이용하여 상기 고객 메모리 액세스 명령을 에뮬레이트하는 의미 루틴을 실행하는 단계
    를 포함하는 프로세서 운영 방법.
  2. 원시 명령 세트를 가지며 고객 명령 세트 내의 명령들을 에뮬레이트하는 프로세서 -상기 프로세서는 상기 고객 명령 세트로부터의 일련의 고객 명령을 저장하기 위한 관련 메모리를 가지고, 상기 일련의 고객 명령은 고객 어드레스 공간내의 고객 논리적 어드레스를 나타내는 고객 메모리 액세스 명령을 포함하며, 상기 관련 메모리는 상기 일련의 고객 명령을 에뮬레이트하기 위해 원시 명령들의 다수의 의미 루틴을 또한 저장함- 에 있어서,
    에뮬레이션을 위한 상기 고객 메모리 액세스 명령의 수신에 응답하여, 고객 논리적 어드레스를 고객 실제 어드레스로 번역한 후 상기 고객 실제 어드레스를 원시 물리적 어드레스로 번역하기 위한 수단과,
    상기 원시 물리적 어드레스를 이용하여 상기 고객 메모리 액세스 명령을 에뮬레이트하는 의미 루틴을 실행하기 위한 수단
    을 포함하는 프로세서.
  3. 제2항에 있어서,
    상기 고객 메모리 액세스 명령은 고객 로드 명령 및 고객 저장 명령 중의 하나를 포함하는 프로세서.
  4. 제2항에 있어서,
    상기 고객 메모리 액세스 명령은 상기 일련의 고객 명령 내의 고객 명령을 상기 관련 메모리로부터 인출하는 것을 초기화하는 고객 명령을 포함하는 프로세서.
  5. 제2항에 있어서,
    상기 고객 메모리 액세스 명령을 에뮬레이트하는 의미 루틴을 실행하기 위한 수단은 상기 원시 물리적 어드레스를 이용하여 상기 메모리를 액세스하는 수단을 포함하는 프로세서.
  6. 제2항에 있어서,
    상기 고객 실제 어드레스를 원시 물리적 어드레스로 번역하기 위한 수단은 상기 고객 실제 어드레스를 원시 유효 어드레스로 번역한 다음에 상기 원시 유효 어드레스를 상기 원시 물리적 어드레스로 번역하기 위한 수단을 포함하는 프로세서.
  7. 제2항에 있어서,
    상기 프로세서는 어드레스 번역을 위해 이용되는 엔트리를 포함하는 번역 룩어사이드 버퍼(TLB)를 포함하며,
    상기 고객 논리적 어드레스를 고객 실제 어드레스로 번역한 후 상기 고객 실제 어드레스를 원시 물리적 어드레스로 번역하기 위한 수단은,
    상기 번역 룩어사이드 버퍼가 상기 원시 물리적 어드레스를 얻는데 이용될 수 있는 엔트리를 포함하는 지의 여부를 판단하기 위한 수단과,
    상기 번역 룩어사이드 버퍼가 상기 원시 물리적 어드레스를 얻는데 이용될 수 있는 엔트리를 포함한다는 판단에 응답하여, 상기 번역 룩어사이드 버퍼(TLB) 엔트리를 이용해서 상기 고객 논리적 어드레스를 고객 실제 어드레스로 번역한 후 상기 고객 실제 어드레스를 원시 물리적 어드레스로 번역하기 위한 수단
    을 포함하는 프로세서.
  8. 제7항에 있어서,
    상기 번역 룩어사이드 버퍼가 상기 원시 물리적 어드레스를 얻는데 이용될 수 있는 엔트리를 포함하지 않는다는 판단에 응답하여, 상기 번역 룩어사이드 버퍼 내에 상기 원시 물리적 어드레스를 얻는데 이용될 수 있는 엔트리를 생성하기 위한 수단을 더 포함하는 프로세서.
  9. 제2항에 있어서,
    상기 번역 수단은 사용자-레벨 의미 루틴을 수행하기 위한 수단을 포함하는 프로세서.
KR1019980032561A 1997-09-22 1998-08-11 데이터처리시스템의에뮬레이션모드를위한어드레스변환버퍼 KR100317770B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/934,645 1997-09-22
US8/934,645 1997-09-22
US08/934,645 US5953520A (en) 1997-09-22 1997-09-22 Address translation buffer for data processing system emulation mode

Publications (2)

Publication Number Publication Date
KR19990029286A true KR19990029286A (ko) 1999-04-26
KR100317770B1 KR100317770B1 (ko) 2002-02-19

Family

ID=25465857

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980032561A KR100317770B1 (ko) 1997-09-22 1998-08-11 데이터처리시스템의에뮬레이션모드를위한어드레스변환버퍼

Country Status (2)

Country Link
US (1) US5953520A (ko)
KR (1) KR100317770B1 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
US6298428B1 (en) * 1998-03-30 2001-10-02 International Business Machines Corporation Method and apparatus for shared persistent virtual storage on existing operating systems
US6249906B1 (en) * 1998-06-26 2001-06-19 International Business Machines Corp. Adaptive method and system to minimize the effect of long table walks
US6243668B1 (en) * 1998-08-07 2001-06-05 Hewlett-Packard Company Instruction set interpreter which uses a register stack to efficiently map an application register state
US6446034B1 (en) * 1998-12-16 2002-09-03 Bull Hn Information Systems Inc. Processor emulation virtual memory address translation
US6385712B1 (en) * 1999-10-25 2002-05-07 Ati International Srl Method and apparatus for segregation of virtual address space
US6467027B1 (en) * 1999-12-30 2002-10-15 Intel Corporation Method and system for an INUSE field resource management scheme
JP2001195250A (ja) * 2000-01-13 2001-07-19 Mitsubishi Electric Corp 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
GB2367654B (en) * 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US7620955B1 (en) * 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
US6615337B1 (en) * 2001-08-09 2003-09-02 Advanced Micro Devices, Inc. Method and apparatus for maintaining coherency in a translation lookaside buffer
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7260815B1 (en) 2003-06-30 2007-08-21 Vmware, Inc. Method and apparatus for managing registers in a binary translator
US20080282055A1 (en) * 2005-12-29 2008-11-13 Rongzhen Yang Virtual Translation Lookaside Buffer
US7685399B2 (en) * 2007-01-07 2010-03-23 International Business Machines Corporation Method, system, and computer program products for data movement within processor storage
US8726248B2 (en) * 2008-06-12 2014-05-13 Oracle America, Inc. Method and apparatus for enregistering memory locations
US8428930B2 (en) * 2009-09-18 2013-04-23 International Business Machines Corporation Page mapped spatially aware emulation of a computer instruction set
US8949106B2 (en) * 2009-09-18 2015-02-03 International Business Machines Corporation Just in time compiler in spatially aware emulation of a guest computer instruction set
US8447583B2 (en) * 2009-09-18 2013-05-21 International Business Machines Corporation Self initialized host cell spatially aware emulation of a computer instruction set
US9158566B2 (en) 2009-09-18 2015-10-13 International Business Machines Corporation Page mapped spatially aware emulation of computer instruction set
US8617049B2 (en) * 2009-09-18 2013-12-31 Ethicon Endo-Surgery, Inc. Symmetrical drive system for an implantable restriction device
US8301434B2 (en) 2009-09-18 2012-10-30 International Buisness Machines Corporation Host cell spatially aware emulation of a guest wild branch
US8880549B2 (en) * 2009-11-09 2014-11-04 International Business Machines Corporation Concurrent database access by production and prototype applications
EP2507710B1 (en) * 2009-11-30 2018-10-31 Hewlett-Packard Enterprise Development LP Remapping for memory wear leveling
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
EP2668565B1 (en) 2011-01-27 2019-11-06 Intel Corporation Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
WO2012103245A2 (en) * 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103373A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
US9063760B2 (en) * 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated
US20130132061A1 (en) * 2011-11-18 2013-05-23 Michael J. Rieschl Just-in-time static translation system for emulated computing environments
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
US10198265B2 (en) 2013-03-15 2019-02-05 Intel Corporation Microprocessor for gating a load operation based on entries of a prediction table
US10467010B2 (en) 2013-03-15 2019-11-05 Intel Corporation Method and apparatus for nearest potential store tagging
EP2972798B1 (en) * 2013-03-15 2020-06-17 Intel Corporation Method and apparatus for guest return address stack emulation supporting speculation
WO2014158128A1 (en) * 2013-03-25 2014-10-02 Hewlett-Packard Development Company, L.P. Extensible firmware abstraction
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
CN105993004B (zh) 2014-07-21 2019-04-02 上海兆芯集成电路有限公司 转译后备缓冲器、操作其的方法以及包含其的处理器
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
US10042691B2 (en) * 2016-04-26 2018-08-07 International Business Machines Corporation Operation of a multi-slice processor implementing exception handling in a nested translation environment

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63106836A (ja) * 1986-10-24 1988-05-11 Hitachi Ltd 異ア−キテクチヤ・エミユレ−シヨン方式
WO1993013482A1 (en) * 1992-01-02 1993-07-08 Amdahl Corporation Computer system with two levels of guests
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5790825A (en) * 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5742802A (en) * 1996-02-16 1998-04-21 International Business Machines Corporation Method and system for efficiently mapping guest instruction in an emulation assist unit

Also Published As

Publication number Publication date
US5953520A (en) 1999-09-14
KR100317770B1 (ko) 2002-02-19

Similar Documents

Publication Publication Date Title
KR100317770B1 (ko) 데이터처리시스템의에뮬레이션모드를위한어드레스변환버퍼
KR100284788B1 (ko) 데이터 처리 시스템에서 에뮬레이션 동안의 브랜치 처리 방법및 시스템
US5870575A (en) Indirect unconditional branches in data processing system emulation mode
KR100341533B1 (ko) 데이타처리시스템의에뮬레이션동안의인터럽트처리방법및시스템
US6122638A (en) Object-oriented processor and method for caching intermediate data in an object-oriented processor
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US6253306B1 (en) Prefetch instruction mechanism for processor
JP3751049B2 (ja) パイプラインプロセッサおよびその動作方法
US5854913A (en) Microprocessor with an architecture mode control capable of supporting extensions of two distinct instruction-set architectures
JP3628379B2 (ja) 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置
JP3866918B2 (ja) ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ
EP0463978A2 (en) Granularity hint for translation buffer in high performance processor
EP0463975A2 (en) Byte-compare operation for high-performance processor
EP0463973A2 (en) Branch prediction in high performance processor
EP0465322A2 (en) In-register data manipulation in reduced instruction set processor
EP0463976A2 (en) Data prefetch instruction in a reduced instruction set processor
EP0463977A2 (en) Branching in a pipelined processor
US5812823A (en) Method and system for performing an emulation context save and restore that is transparent to the operating system
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
US5263153A (en) Monitoring control flow in a microprocessor
WO1994027215A1 (en) Method for decoding guest instructions for a host computer
US5873123A (en) Processor and method for translating a nonphysical address into a physical address utilizing a selectively nonsequential search of page table entries
WO1994027214A1 (en) Method for decoding sequences of guest instructions for a host computer
EP0465328A2 (en) Branch elimination in a reduced instruction set processor
US6446189B1 (en) Computer system including a novel address translation mechanism

Legal Events

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

Payment date: 20121127

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20131128

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20151127

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20161128

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20171128

Year of fee payment: 17

EXPY Expiration of term