KR100498272B1 - 변환된 명령들을 실행하는 동안 문맥을 보존하기 위한 방법 및 장치 - Google Patents

변환된 명령들을 실행하는 동안 문맥을 보존하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100498272B1
KR100498272B1 KR10-2002-7004740A KR20027004740A KR100498272B1 KR 100498272 B1 KR100498272 B1 KR 100498272B1 KR 20027004740 A KR20027004740 A KR 20027004740A KR 100498272 B1 KR100498272 B1 KR 100498272B1
Authority
KR
South Korea
Prior art keywords
context
translated
host
instructions
translation
Prior art date
Application number
KR10-2002-7004740A
Other languages
English (en)
Other versions
KR20020039688A (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 KR20020039688A publication Critical patent/KR20020039688A/ko
Application granted granted Critical
Publication of KR100498272B1 publication Critical patent/KR100498272B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/20Comparing separate sets of record carriers arranged in the same sequence to determine whether at least some of the data in one set is identical with that in the other set or sets
    • 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)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Steroid Compounds (AREA)

Abstract

호스트 마이크로프로세서에서 타겟 마이크로프로세서가 실행하도록 설계된 명령들로부터 변환된 명령들에 대한 변환 문맥을 유지하는 방법(도 1)에 있어서, 각각의 변환된 호스트 명령에 관련되는 변환 문맥을 저장하는 단계와, 상기 호스트 프로세서가 현재 실행하는 호스트 명령들에 대한 변환 문맥을 표시하는 단계와, 다음 호스트 명령에 대해 저장된 변환 문맥과 현재 실행되는 호스트 명령에 대한 변환 문맥을 비교하는 단계(도 2)와, 만일 상기 다음 호스트 명령과 상기 변환 실행중인 호스트 명령의 변환 문맥이 대등하면 상기 다음 호스트 명령을 실행하는 단계와, 그리고 만일 상기 다음 호스트 명령과 상기 변환 실행중인 호스트 명령의 변환 문맥이 대등하지 않으면, 현재 실행중인 상기 호스트 명령의 변환 문맥과 대등한 변환 문맥을 가진 명령을 검색(도 2)하는 단계를 포함한다.

Description

변환된 명령들을 실행하는 동안 문맥을 보존하기 위한 방법 및 장치{METHOD AND APPARATUS FOR MAINTAINING CONTEXT WHILE EXECUTING TRANSLATED INSTRUCTION}
본 발명은 컴퓨터 시스템에 관한 것으로, 좀더 구체적으로는 상이한 마이크로프로세서에서 실행하도록 설계된 프로그램으로부터 변환된 프로그램을 실행하는 마이크로프로세서의 성능을 개선하기 위한 방법 및 장치에 관한 것이다.
최근 들어, 간단하지만 빠른 호스트 프로세서("몰프 호스트(morph host)"로 불림)와 상기 몰프 호스트와는 상이한 명령 세트를 가지는 프로세서("타겟 프로세서")를 위해 설계된 응용 프로그램을 실행하기위한 소프트웨어("코드 몰핑 소프트웨어"로 간주됨)가 합쳐진 새로운 마이크로프로세서가 개발되었다. 상기 몰프 호스트 프로세서는 코드 몰프 소프트웨어를 실행하는데, 이 소프트웨어는 상기 타겟 프로그램을 원본(original) 타겟 소프트웨어의 목적을 달성할 수 있는 몰프 호스트 프로세서 명령들로 동적 변환한다. 상기 타겟 명령들이 변환되면, 상기 새로운 호스트 명령들이 해석되며, 후속 변환 없이 억세스 할 수 있도록 변환 버퍼에 저장된다. 비록 상기 프로그램의 초기 변환이 느리기는 하지만, 한번 변환되면, 프로그램을 실행하기위해 종래 하드웨어에 요구되는 일반적인 많은 단계들이 생략된다. 새로운 마이크로프로세서는 간단하고 빠른 저전력 프로세서가, 전용적으로 설계된 프로그램을 사용하는 "타겟" 프로세서가 수행하는 것과 동등한 비율로, 변환된 "타겟" 명령을 실행할 수 있다는 것을 보였다.
변환의 문제들을 어렵게 만드는 것들은 컴퓨터 시스템을 운영하기 위한 타겟 프로세서의 하드웨어 및 해당 운영 시스템에 의한 다양한 인터럽트들과 예외들이다. 타겟 컴퓨터의 동작 중에 타겟 예외가 발생하면, 상기 예외가 발생한 시점에서 상기 컴퓨터의 상태는 전형적으로 동작을 위해 마이크로코드(microcode)를 호출함으로써 저장되고, 올바른 예외 처리기(correct exception handler)가 검색되고, 상기 예외가 처리된 다음, 상기 프로그램을 계속하기 위해 이 프로그램의 올바른 지점이 검출되어야만 한다. 이는 종종 상기 프로그램이 예외가 발생된 지점에서의 타겟 컴퓨터 상태로 복귀되어야함을 필요로 한다. 이러한 동작을 위해 상기 타겟 컴퓨터의 하드웨어 및 소프트웨어에 의한 결과들은 상기 몰프 호스트 프로세서가 이러한 예외들에 정확하게 응답할 수 있도록, 어떻게든 상기 변환 프로세스(process)에 의해 제공되어져야만 한다.
다른 프로세서들을 위해 설계된 프로그램을 고속 비율로 실행할 수 있도록, 상기 몰프 호스트 프로세서는 다수의 하드웨어적 개량을 포함한다. 이러한 개량들 중 하나는 게이트(gated) 저장 버퍼인데, 이는 상기 변환 버퍼의 명령들의 변환된 시퀀스의 예외로부터 기인하는 메모리 저장내용들을 임시적으로 저장한다. 두번째 개량은 (일반적 워킹 레지스터들에 부가적인)호스트 레지스터 세트로서, 이는 타겟 명령 시퀀스가 변환되는 시점에서 상기 타겟 프로세서의 상태를 저장한다. 상기 타겟 명령들의 시퀀스는 타겟 상태가 공지된 지점들에서 시작 및 종료한다. 만일 상기 변환된 명령들이 예외를 발생시키지 않고 실행되면, 변환된 호스트 명령들의 예외로 생성되는 메모리 저장내용들은 전달 명령(commit instructions)에 의해 메모리에 저장되고 (즉, 메모리에 전달됨), 그리고 상기 타겟 상태를 유지하는 레지스터들은 상기 시퀀스가 완료되는 지점에서의 타겟 상태로 갱신된다.
그러나 만일 호스트 명령들의 시퀀스 수행 중 예외가 발생하면, 프로세스가 정지되고, 전체 동작은 상기 타겟 프로세서의 공지된 상태가 존재하는 타겟 명령 시퀀스의 시점으로 복귀 또는 되돌아간다. 이는 예외들에 대한 신속 정확한 처리를 가능하게하여 명령들을 동적으로 변환 및 실행하게된다.
상기 새로운 마이크로프로세서가 실행이 완료될 때 까지 임시 저장부에 그 효력(effects)을 둠으로써 변환들의 실행을 처리하게하는 상기 방법은 효율적인 고속 추론 방법임이 주목된다. 실제로, 상기 새로운 마이크로프로세서는 다른 동작의 결과를 추론하기위해 동일한 회로부를 사용한다. 예를 들어, 원시 변환된 명령 시퀀스들로부터 소프트웨어 스케쥴러에의해 재배열된 명령들의 실행 결과를 임시적으로 유지함으로써, 종래 기술에의해 시도되는 것 보다 더 적극적인 재배열이 달성될 수 있다. 이러한 재배열된 명령 시퀀스가 올바른 결과를 생성하도록 실행되면, 상기 재배열된 시퀀스의 실행에 기인한 메모리 내용들은 메모리로 전달되고 타겟 상태가 갱신된다. 만일 상기 재배열된 시퀀스가 실행 중 예외를 발생시키면, 상기 프로세서의 상태는 상기 시퀀스의 시점의 타겟 상태로 복귀되고, 상기 시퀀스를 실행하는데 있어 좀더 보수적인 접근이 취해진다.
상기 새로운 마이크로프로세서의 가장 이점이 되는 특징들 중 하나는 변환 된 명령들의 긴 시퀀스들을 함께 링크할 수 있는 능력이다. 일단 타겟 명령들의 짧은 시퀀스들이 변환되고 예외를 발생시키지 않으면서 실행되는 것으로 밝혀지면, 명령들의 긴 시퀀스들을 형성하기위해 많은 수의 이런 짧은 시퀀스들을 링크할 수 있게 된다. 이는 변환된 프로그램이 고속으로 실행되도록 하는 바, 그 이유는 상기 마이크로프로세서가 명령들을 실행하기위해 하드웨어 프로세서들에 의해 일반적으로 취해지는 모든 단계들(상기 짧은 변환된 시퀀스들 각각을 룩업 하는 것과 같은 단계들)을 거칠 필요가 없기 때문이다. 예상되는 것보다도 더 빠른 속도가 얻어질 수 있는 바, 이는 긴 시퀀스들이 링크되면, 최적화기(optimizer)가 생성되는 결과들을 변화시키지 않으면서 많은 단계들을 제거하는 것이 가능하기 때문이다. 하드웨어적 최적화기들은 높은 최적화를 허용하는 패턴들이 뚜렸해지도록 하기에 충분한 긴 명령 시퀀스들을 결코 최적화 할 수 없다.
프로세서가 명령들을 실행할 때마다 다양한 특성들을 가지는 특정 모드(mode)에서 구동된다. 응용 프로그램의 명령들은 올바른 결과들을 계속 생성하기위해 올바른 모드에서 실행되어야만 한다. 이러한 모드의 특성들은 상기 명령들에 대한 효율적인 배경이며 명령들의 일부로 간주될 수도 있다. 프로세서가 명령들을 실행함에 따라, 이러한 명령들의 특정 부분은 상기 특성들 및 그로 인한 동작 모드를 변경할 수 있다. 이는 이러한 상이한 모드들을 다룰 수 있도록 상이하게 설정된 마이크로프로세서의 많은 특징들을 요구한다. 명령들이 올바른 결과를 제공하도록 하기 위해서 올바르게 설정되어야만 하는 기계 상태의 특성들은 전형적으로 상기 명령들이 실행되는 문맥(context)으로서 간주된다. 문맥은 명령 실행으로부터 올바른 결과를 생성하기위해 필요한 기계의 현재 상태를 요약한 것이라고 할 수 있다.
제 1명령 세트를 가지는 타겟 프로세서를 위해 설계된 명령 시퀀스들을 상이한 명령 세트의 호스트 명령 결과들로 변환함에 있어서, 상기 새로운 마이크로프로세서가 직면하는 주된 문제점은 변환 및 실행 중 문맥을 유지할 필요가 있다는 것에서 유발된다.
프로그램을 실행하는 문맥을 구성하는데는 무수하게 많은 상이점들이 존재한다. 문맥을 구성할 수 있는 많은 요소들중 단 몇 개의 기재(recitation)on)는 바로 그 문제가 얼마나 복잡한 지를 예시하는 것이다. 당업자이면 문헌적으로 수백개의 가능한 문맥 항목들이 존재한다는 것을 이해할 수 있다.
많은 마이크로프로세서들은 사용되는 운영 시스템의 용량에 따라 8비트, 16비트 그리고 32비트 워드 길이의 명령들을 가지는 응용 프로그램들에 대해 기능하도록 설계된다. 종종 동일한 명령들은 상이한 워드 길이의 명령들로 기록된 응용프로그램에 사용된다. 그러나, 만일 상기 마이크로프로세서가 그 특성들이 32비트 명령들에서 실행하도록 설정되었고, 16비트 명령들에서 실행이 시도되면, 상기 명령들은 정상적으로 동작하지 않을 것이다. 그래서, 명령 워드 길이는 실행 목적들에 대한 타겟 프로세서 문맥으로서 간주될 수 있다.
다른 예제에서, 명령들은 상이한 허가(permission) 레벨들에서 실행된다. 그래서, 어떠한 명령들은 최대 레벨의 억세스를 가져야만 실행될 수 있고, 다른 명령들은 상위 레벨은 물론이고 하위 레벨에서 사용자에 의해 실행될 수 있다. 이는 변환된 명령들이 실행되는 경우 동일한 억세스 레벨을 유지할 필요가 있으며, 그로 인해 응용 프로그램들은 관련 없는 응용 프로그램들의 자원들과 간섭하지 않을 수 있다.
인텔 X86 기반 마이크로프로세서들은 응용 프로그램들이 메모리에 저장된 코드의 다양한 부분들(세그먼트들)과 데이터를 지명할 수 있도록 한다. 예를 들어, 프로그램은 베이스 주소들과 프로그램 세그먼트들에 대한 길이들을 지시할 수 있으며, 그로 인해 코드 세그먼트는 하나의 베이스 주소에서 시작하여 소정 메모리 양을 지나면서 연속되고, 데이터 세그먼트는 상이한 베이스 주소에서 시작하며 상이한 메모리 양을 가진다. 대안적으로, 프로그램은 모든 명령들, 데이터, 그리고 상기 프로그램의 다른 요소들을 저장하기 위해 사용되는 단일 플랫(flat) 세그먼트를 지명할 수 있다. 또한, 하나의 프로그램에 대한 모든 세그먼트들은 동일한 베이스 주소에서 시작할 수 있지만 상이한 종료 주소들로 진행한다. 결론적으로, 사용되는 베이스 주소들의 구성은 명령들을 실행하는 대단히 중요한 특성이다. 상이한 사용들에 할당되는 메모리 경계들의 혼란은 적절한 결과로 명령들을 실행하는 것으로부터 프로그램을 유지할 것이다. 그래서, 이는 문맥의 중요한 요소일 수 있다.
만일 응용 프로그램이 페이징(paging)을 허용하며 실행되도록 설계된다면, 상기 응용 프로그램은 일어날 수 있는 페이징 예외를 허용해야만 한다. 만일 응용 프로그램이 페이징 없이 설계된다면, 페이징 예외는 발생할 수 없다. 그래서 페이징은 문맥의 중요한 요소이다.
명령들이 적절한 결과들을 생성하기위해 상기 명령들에 대해 컴파일된 경우, 상기 명령들이 실행되는 매 경우마다 많은 다른 특성들은 동일해야만 한다. 인텔 X86 프로세서들에 의해 사용되는 이러한 복잡한 명령 세트들을 가지고 문맥을 구성하는 다수의 특성들은 상당히 크다.
타겟 프로세서로 명령들이 실행됨에 따라, 동일한 결과를 호스트 시스템에 의해 생성하도록 하기 위해 상기 변환된 명령들이 실행되는 경우, 타겟 명령들로부터 변환되는 호스트 명령들은 설계된 타겟 명령들에 대한 원본 프로세서의 문맥을 유지할 필요가 있다. 상기 명령들로부터 상이한 결과들이 나타나도록 영향을 주는 이러한 문맥 항목들은 실행을 위한 변환으로부터 상수를 남겨두어야 하기 때문에, 글자 그대로 수백개의 문맥 요소들은 생성된 결과가 올바르다는 보증을 위해 각 변환의 일부가 되어야 한다.
이는 프로세서 상에서 실행되는 명령이 올바른 결과들 생성하는 경우 중요하지만, 가능한 빠르게 명령들을 실행하는 것 역시 바람직하다. 이는 일반적으로 가능한 효율적으로 수행되는 코드를 생성하는 것으로 달성된다. 상기 문맥 또는 기계 상태는 생성된 코드의 효율성만을 제어한다. 명령이 실행되는 상기 기계 상태에는 많은 특성들이 존재하며, 이는 변환 및 실행의 효율에 영향을 주고 명령들을 빠르게 실행하거나 상기 실행 상에 다른 바람직한 효과를 줄 수 있다. 모든 경우에서, 타겟 마이크로프로세서 상의 특정 문맥에서 실행되는 명령들은 호스트 시스템에서 동일 모드로 명령들을 실행하기 위한 특성들의 세트를 가지는 문맥에서 실행된다는 것이 중요하다. 또한, 최적화된 코드가 실행되는 경우, 타겟 코드 변환의 최적화가 수행되는 변환 문맥이 유지된다.
결과적으로, 상이한 명령 세트를 가지는 타겟 프로세서에 대해 전용으로 설계된 명령으로부터 변환된 명령들을 실행하는 마이크로프로세서가 상기 타겟 프로세서의 문맥을 유지할 수 있고, 그로 인해 상기 변환된 명령들이 올바른 결과를 제공하도록 하는 방법 및 장치가 제공되는 것이 바람직하다.
상기 새로운 마이크로프로세서에의해 수행되는 동적 변환 및 최적화과정에서 확보되는 속도는 원래 설계된 것과 동일한 문맥에서 상기 변환이 실행됨을 보장하는 프로세스에서도 유지되어야 함이 바람직하다.
도 1은 본 발명에 따르는 방법을 예시한 흐름도이다.
도 2는 하나의 특정 명령을 수행하는데 필요한 단계들을 예시하는 다이어그램이다.
도 3은 본 발명의 수행 방법을 예시하는 흐름도이다.
도 4는 본 발명의 방법 중 일부를 예시하는 흐름도이다.
도 5는 본 발명의 방법 중 다른 일부를 예시하는 흐름도이다.
도 6은 본 발명에 따르는 문맥 표시(representation)를 예시하는 다이어그램이다.
그래서, 본 발명의 목적은 변환된 명령 실행을 늦추지 않으면서 변환된 명령들이 원래 변환된 것과 같은 동일한 변환 문맥에서 수행되고, 가능할 때마다 이를 수행한다는 것을 보장하는 것이다.
본 발명의 이러한 그리고 다른 목적들은 변환된 명령들의 각 부분에 대한 변환 문맥을 유지하고, 변환된 명령들의 새로운 부분이 실행되는 경우마다 몰프 호스트가 기능하는 변환 문맥과 변환된 명령들의 부분의 변환에서의 변환 문맥을 비교하고, 만일 상기 변환 문맥들이 동일하면 실행을 허용하고, 만일 변환 문맥들이 상이하면 상이한 변환 또는 변환된 명령들의 부분이 파생된 원본 명령들의 재변환에 대해 검색하도록 하는 방법에 의해 달성된다.
본 발명의 이러한 그리고 다른 목적들은 도면들을 참조로 한 상세한 설명으로부터 잘 이해될 것이며, 도면들에서 동일 구성요소들은 몇가지 측면들을 통해 동일한 지시 번호들로 표시된다.
전술한 바와 같이, 상기 새로운 마이크로프로세서는 타겟 명령들의 시퀀스들을 호스트 명령들의 시퀀스들로 변환하는 코드 몰핑 소프트웨어를 실행하고, 재사용을 위해 이러한 변환된 명령들의 시퀀스들을 변환 버퍼에 저장하고, 이 변환된 명령 시퀀스들의 실행을 시도하고, 상기 변환된 시퀀스들이 올바른 결과를 생성하는 경우 상태와 메모리를 갱신하며, 올바른 결과를 생성하지 못하는 변환된 명령 시퀀스들의 실행 시도의 영향들(effects)을 버린다. 상기 저장된 변환된 명령 시퀀스들은 최적화되고 보다 긴 변환된 명령 시퀀스들을 생성하기위해 서로 링크된다. 이러한 긴 시퀀스들은 그들의 길이를 줄이고 실행의 효율을 증가시키기 위해 더욱 최적화될 수 있으므로 상기 새로운 프로세서는 동작들을 원래 변환보다 훨씬 빠르게 실행할 수 있다.
변환된 명령들의 시퀀스들이 원본 명령들에 의해 생성되는 결과를 생성하도록하기위해서, 상기 새로운 프로세서는 상기 타겟 명령들 각각을 정확하게 디코드해야만 한다. 이는 상기 새로운 프로세서가, 상기 변환된 명령들이 상기 원본 명령들의 모든 문맥을 포함함으로써 이들 원본 명령들의 의미가 완전하게 변환될 수 있도록 해야함을 의미한다. 예를 들어, 변환은 세그먼트 종류와, 그의 베이스 주소와 그리고 정확한 메모리 억세스들이 수행될 수 있는 정도를 정의하는 정보를 판단할 수 있어야만 한다. 변환은 주소들이 연산되는 방법을 알기 위하여 실행시 페이징이 인에이블 되어야 하는지 및 페이지 예외가 허용되어야만 하는지를 판단할 수 있어야만 한다. 변환은, 변환이 행해진 타겟 시퀀스에 의해 성취된 결과가 상기 변환된 시퀀스가 호스트 프로세서에 의해 실행될때 성취될 수 있도록 하는 모든 다른 문맥 요소들을 판단할 수 있어야만 한다.
예를 들어서, 다음의 X86 프로세서에 대한 명령,
add $eax, 4($ebp)
는 세그먼트 오프셋을 결정하기위해 상기 "ebp" 레지스터 값에 4를 더하라고 X86 프로세서에 명령한다. 상기 세그먼트 오프셋은 억세스되는 메모리 세그먼트(스택 세그먼트)에 대한 세그먼트 경계들(boundaries)내에 자신이 존재하는 지를 판단하기 위해 검사된다. 부가적으로, 상기 X86 프로세서는 억세스되는 상기 메모리 세그먼트에 상기 명령의 읽기 그리고/또는 쓰기가 허용되는 지를 검사하고, 마지막으로, 상기 세그먼트 오프셋은 선형 주소(linear address)를 생성하도록 상기 세그먼트 베이스에 부가되는 바, 이 선형 주소는 상기 명령에 의해 억세스되는 메모리 위치의 물리적 주소를 결정하는데 사용된다. 그 후, 상기 물리적 주소는 상기 메모리 위치에 저장된 상기 값을 인출하여, 이 값을 상기 "eax" 레지스터의 값에 가산하는데 사용된다.
그러나, 상기 명령의 이들 요소들에 부가적으로, 다수의 암시적 요소들(implied elements)이 존재한다. 예를 들어, 상기 "ebp" 레지스터의 사용은 상기 스택 세그먼트의 사용을 암시한다. 상이한 레지스터의 사용은 상이한 세그먼트의 사용을 의미한다.
X86 세그먼트들은 "확장(grow up)" 또는 "축소(grow down)"될 수 있다. 스택 세그먼트들은 자주 축소되는데 반해 다른 세그먼트들은 일반적으로 확장된다. 세그먼트 오프셋이 특정 세그먼트에 대해 유효한 지 여부의 결정은 억세스 되는 상기 세그먼트가 확장되는지 아니면 축소되는지 여부에 좌우된다. 확장 세그먼트의 경우에, 상기 유효 오프셋은 0으로부터 세그먼트 한계까지의 범위이다. 축소 세그먼트의 경우에, 상기 유효 오프셋은 상기 세그먼트 한계로부터, 16비트 세그먼트들에 대해서는 (216-1)이되고 32비트 세그먼트들에 대해서는 (232-1)로 되는 최대로 가능한 오프셋까지의 범위이다.
상기 선형 주소의 연산 시, 페이징이 허용되는지 여부가 결정된다. 만일 허용되지 않으면, 상기 선형 주소는 메모리 데이터의 물리적 주소가 되며, 만일 허용이되면, 상기 물리적 주소가 연산되어야만 한다. 이들 두 경우에서, 상기 주소의 적법(legal) 여부를 판단하기 위해 상기 메모리 세그먼트의 한계들이 시험되어야만 하며, 마지막으로 상기 데이터는 억세스되어 상기 eax 레지스터의 값에 부가된다.
따라서, 이러한 간단한 명령의 경우에 있어서, ebp 레지스터는 스택 레지스터라는 지식과, 상기 메모리의 스택에 대한 베이스 주소와, 상기 세그먼트가 확장하는지 아니면 축소하는지 여부에 따른 상기 세그먼트에 대한 유효 오프셋의 범위와, 페이징의 허용 여부와, 주소 지정되는 메모리 세그먼트의 종류와, 그리고 그의 베이스 주소는 모두 문맥을 구성하는 특성들로서, 상기 변환 명령들이 실행 시 동작을 올바르게 수행할 수 있게끔 반드시 알려져야만 하는 것이다.
사실, 해석기(interpreter)가 타겟 명령을 수행할 때, 이 해석기는 상기 명령을 정확하게 실행하기 위하여 이러한 암시적(즉, 백그라운드) 단계 및 검사들 모두를 수행해야만 한다. 이러한 암시적 단계 및 검사들은 잠재적으로 엄청난 비용으로 명식적으로(explicitly) 수행되어야만 한다. 이는 타겟 명령을 호스트 명령들로 원시(naive) 변환하는데 있어서 마찬가지이다.
당업자들이면 이해할 수 있는 바와같이, 명령들은 동작 모드를 구성하는 상기 특성들 중 하나를 변경시킴으로써, 명령들이 실행을 행하는 문맥을 변경할 수 있다. 결론적으로, 상기 새로운 프로세서는 명령들을 추적해야 하며, 변환된 명령 시퀀스가 실행을 행하게 될 상기 문맥을 타겟 명령이 변경시킬 때, 문맥 요소들이 상기 변환된 시퀀스 내에서 변화될 수 있도록 해야 한다. 이러한 방식으로, 상기 변환된 시퀀스의 문맥은 상기 변환된 시퀀스가 실행을 종료할 때 상기 새로운 프로세서에 대해 올바르게 나타내어질 것이다.
변환된 명령들의 각 시퀀스는, 문맥을 구성하는 필요한 특성들 모두를 결정할 수 있는 정보를 포함해야만 할 뿐 아니라, 임의의 변환된 명령 시퀀스들이 올바르게 실행되고 그리고 다음 시퀀스가 실행을 준비할 때마다, 상기 새로운 프로세서는 현재 동작 중인 문맥은 상기 다음 시퀀스의 시작을 올바르게 실행하는데 요구되는 문맥이 됨을 보증해야만 한다. 따라서, 상기 새로운 프로세서는 변환된 명령들의 첫번째 시퀀스의 종료시 존재하는 문맥을 검사하여, 이 문맥은 다음 시퀀스의 실행 시작전에 상기 변환된 명령들의 다음 시퀀스에 의해 요구되는 문맥과 동일함을 보증할 수 있어야만 한다.
유사한 방식으로, 두개의 변환된 명령 시퀀스들을 단일 시퀀스로 링크하기 위해서, 상기 새로운 프로세서는 첫번째 시퀀스가 실행을 종료하게되는 문맥은 이 시퀀스가 링크되어 실행을 시작하게될 문맥과 동일하다는 것을 확인해야만 한다.
인식할 수 있는 바와같이, 변환된 각 명령 시퀀스의 모든 문맥 요소들을 포함해야하고 그리고 실행을 시작하기 전에 새로운 각 시퀀스의 문맥을 검사해야 할 필요성은 효율적인 코드를 생성하지 못한다.
본 발명은 이러한 문제들을 극복하고자 하는 것으로서, 코드 - 이 코드는 타겟 프로세서가 이 코드를 실행하는 속도에 필적하는 속도로 효율적으로 실행을 행할 수 있다 - 를 생성하는 것이다. 본 발명은 보다 효율적으로 실행을 행하는 코드를 생성하는데 있어 국부적 속성(property of locality)에 의존한다.
보다 구체적으로, 대부분의 경우에, 프로세서가 임의의 프로세스 혹은 프로그램에서 실행하는 명령들은 한번 이상 실행되거나 혹은 대부분 다른 명령들과 함께 실행되는 경향이 있다. 이는 상기 문맥이 첫번째의 명령 시퀀스로부터 다음의 명령 시퀀스까지 문맥이 유사하거나 동일한 결과를 가져온다. 예를 들어서, 문맥의 많은 요소들은 억세스되는 특정 메모리 세그먼트에 의존하는 바, 세그먼트 베이스 주소 및 정도, 세그먼트의 확장 또는 축소 여부, 그리고 상기 세그먼트의 기록 가능 또는 읽기 전용 여부는 모두 억세스되는 상기 세그먼트에 의존하는 요소들이다. 이러한 요소들은 상기 세그먼트가 하나의 시퀀스에서 다음 세그먼트까지 동일하면 서로 동일하다. 대부분의 경우, 제 1 시퀀스에 사용되는 메모리 세그먼트는 다음 시퀀스에 사용되는 세그먼트와 같다. 문맥의 다른 요소들 역시 국부적 특성을 표시한다. 상기 국부적 속성은 본 발명이 시퀀스들 간에서 문맥이 동일하게될 수 있음을 가정할 수 있게 해준다.
상기 문맥이 동일하다는 가정은 상기 새로운 프로세서가 명령 시퀀스들을 변환함에 있어서, 변환을 적절히 실행하기 위해 상기 문맥을 불변의 방식으로 표시할 수 있도록 한다. 그 다음, 상기 변환에 대한 문맥이 정확한지를 판단하기 위해서 필요한 각 시험들을 단계적으로 수행하지 않고, 상기 프로세서는 전체 문맥이 동일한지를 판단하기 위해 상기 표시만을 검사한다. 만일 동일하다면, 상기 변환된 시퀀스는 실행될 수 있다. 만일 동일하지 않다면, 상기 프로세서는 기준에 맞는 다른 변환을 검색한다. 만일 검색되는 것이 없으면, 새로운 변환이 생성되어야만 한다. 상기 일반적 방법은 도 1의 흐름도에 예시된다.
이러한 국부적 속성들의 사용은 변환된 명령 시퀀스가 불변으로서 처리되는 문맥 요소들에 의해 암시되는 명령들에 의해 감소될 수 있게 됨을 알 수 있을 것이다. 도 2는 상기 설명된 가산 기능의 단계들을 수행하는데 있어 해석기가 필요로하는 단계들을 나타내는 동작 시퀀스들을 예시한다. 상기한 바와 같이, 이러한 단계들 중 적어도 10개는 이 동작이 상기 가산 기능과 동일한 결과를 제공하도록 하는데 있어 문맥에 의하여 이 시퀀스들에 삽입되어야 함이 요구되는 단계들이다. 별표로 표시된 이러한 동작들은 상기 명령 시퀀스에서 제거될 수 있으며, 일부 방식에서는 상기 변환된 시퀀스의 시작시에 표시된다. 예를 들어, 두개의 상태들중 어느 하나로 될 수 있는 문맥 요소들은 각각, 문맥의 제 1 표시의 어떤 지정된 위치에 있는 단일 비트로 나타내어질 수 있으며(예를 들어 4진 워드), 반면에 보다 많은 수의 상태들을 가지는 특성들은 상기 4진 워드의 일부 다른 지정된 위치들에 있는 보다 많은 수의 비트들을 필요로 할 수 있다.
도 3은 변환된 제 1 명령 시퀀스의 실행 완료 및 다음 시퀀스를 시작하에서의 새로운 프로세서의 동작을 예시한다. 예시된 제 1단계는 다음 명령 시퀀스의 문맥에 대한 시험 단계이다. 상기 새로운 프로세서는 자신에 대한 문맥의 현재 표시를 조사하고(제 1 시퀀스가 완료되는 경우 동작된 기계에서의 문맥) 그리고 이를 다음 시퀀스의 문맥을 표시하는 문맥과 비교한다. 만일 상기 문맥이 전체적으로 동일하면, 상기 변환된 명령들의 다음 시퀀스는 이전 시퀀스와 동일한 문맥에서 실행된다. 이는 상기 문맥이 정확한지를 판단하기위해 이전 시퀀스에 요구된 모든 단계들을 무시한다. 도 2에 별표로 표시된 단계들을 수행하는 것 보다는, 상기 새로운 프로세서는 각 조건들이 충족되는 것으로 간주하고 해당 후속 단계들을 실행한다.
상기 전체 문맥이 동일하지 않으면, 상기 다음 명령 시퀀스는 실행되지 않는다. 대신에, 상기 새로운 프로세서는 상기 다음 시퀀스에 대한 기준에 부합하는 다른 변환된 명령 시퀀스들을 검색한다. 전형적으로, 이는 최종 실행된 시퀀스의 문맥 표시로서 동일한 문맥 표시를 가지는 동일한 타겟 명령 시퀀스의 다른 변환이 될 것이다. 이러한 시퀀스는 존재하지 않을 수도 있다. 만일 그렇다면, 상기 새로운 프로세서는 이러한 변환을 생성하기위해 코드 몰핑 소프트웨어를 실행하고 이후 사용을 위해 상기 변환을 그의 문맥 표시와 함께 변환 버퍼에 저장한다.
변환된 명령 시퀀스 실행의 문맥이 올바르다는 것을 확인하기 위해서, 코드 몰핑 소프트웨어는 문맥의 예측 가능한 변화들을 추적하고 변화가 발생하면 올바른 표시를 위해 문맥의 표시를 변경할 필요가 있다. 이러한 방식으로, 상기 호스트 프로세서가 현재 실행중인 문맥은 다음 시퀀스의 문맥 시험이 달성될 때 올바르게 표시될 것이다.
코드 몰핑 소프트웨어가 상기 문맥을 예측 할 수 없이 변경하는 명령을 검출할 수 있도록 하는 것 역시 중요하다. 예를 들어, 만일 명령이 새로운 세그먼트 레지스터를 로드(load)하는 경우, 세그먼트와 함께 변화하는 모든 기준도 변할 수 있다. 상기 세그먼트 레지스터를 로딩한 이후, 새로운 문맥이 존재하게되며, 이 새로운 문맥은 상기 시퀀스의 상기 지점에서부터 명령을 실행하는데 사용되어야만 한다. 상기 문맥의 영향받은 부분에 의존되는 임의의 후속 명령(예를 들어, 상기 로드된 세그먼트 레지스터에 억세스하는 모든 명령)은 상기 새로운 문맥이 적절하다는 것이 검증됨이 없이는 수행될 수 없다. 상기 코드 몰핑 소프트웨어는 이 둘 사이의 어떤 지점에서 변환을 중단하고 그리고/또는 이것이 변경되는 지점과 후속 명령이 그 갱신된 값에 의존하는 지점 사이에서 상기 문맥이 검증되도록 배열할 수 있다.
실행에 있어 유효 가속이 서로 상이한 변환 시퀀스들을 함께 링크함으로써 획득되고, 이들이 단일의 긴 시퀀스로 기능하기 때문에, 상기 링크 시퀀스의 사용은 상당히 바람직하다. 이해될 수 있는 바와 같이, 두개의 시퀀스들이 링크되면, 상기 길어진 시퀀스의 각 부분은 정확하게 실행될 필요가 있다. 결과적으로, 상기 문맥은 길어진 시퀀스들의 각 부분들을 정확히 실행하기 위해 적절해져야 할 필요가 있다. 이는 두번째로 변환된 시퀀스들의 주소를 이용하여 제 1 변환 시퀀스를 제 2 변환 시퀀스와 링크하는 본 발명의 일 실시예에 의해 달성될 수 있다. 상기 새로운 프로세서에 있어서, 상기 주소는 전형적으로 프로그램 제어 유닛에서 유지된다. 하나의 시퀀스가 다른 시퀀스와 링크되는 경우, 상기 제 1시퀀스는 상기 프로그램 제어기의 주소를 포인팅(pointing)함으로써 종료된다. 제 2시퀀스가 진입하는 경우, 상기 변환은 이것이 상기 제 2 시퀀스가 요구하는 문맥과 같다는 것을 확인하기 위하여 문맥 표시를 검사한다.
각 링크된 시퀀스를 위한 제 2 시퀀스에 의해 요구되는 문맥 표시에 대한 호스트 문맥의 시험은 약간의 동작 주기들을 소비한다. 결과적으로, 본 발명의 더욱 개선된 실시예는 상기 변환에서 문맥 시험을 제거하며, 이를 도 4에 예시된 원본 링크 프로세스에 둔다. 즉, 두개의 시퀀스들이 링크된다는 결정이 처음 내려지면, 각각에 대한 문맥 표시를 비교함으로써 제 1시퀀스가 수행되는 종단에서의 문맥은 제 2시퀀스가 수행되는 시작에서의 문맥과 비교된다. 상기 문맥 표시가 동일하면, 상기 링크가 달성된다. 그 다음, 길어진 시퀀스가 수행되면, 두개의 시퀀스들이 링크되는 지점에서의 문맥 시험은 더이상 필요 없다. 상기 제 1시퀀스의 종단은 단순히 제 2시퀀스의 주소를 지시하고, 상기 링크가 달성된다. 명령들의 실행은 링크된 시퀀스들이 수행되는 매 경우가 아닌 상기 원본 링크가 수행되는 경우에만 검사하기 때문에 가속된다.
유사한 방식으로, 변환에 대한 검색이 수행되는 매 경우, 일 실시예는 특정 변환과 특정 문맥 모두를 검사한다. 이러한 방식에서, 요구되는 변환 문맥에 대한 기계 동작 문맥의 검사는 상기 변환된 시퀀스들로부터 완전히 제거되며, 이는 도 5에 예시되는 코드 몰핑 소프트웨어의 디스패칭(dispatching) 기능에 위치된다. 상기 디스패칭 기능은 다음 변환이 필요하거나 제안된 링크가 달성되는 매 경우마다, 올바른 변환 및 올바른 문맥을 위해 상기 변환 버퍼를 검색하는 것으로 실행되는 변환된 다음 명령 시퀀스를 필수적으로 검색한다.
본 발명은 명령 실행의 속도를 더욱 개선하기 위한 확장을 제공한다. 본 발명에 의해 제공되는 하나의 확장은 명령이 문맥을 추정할 수 없이 변화하는 경우 링크를 허용한다. 상기 동작은 현재 문맥에 대한 새로운 문맥의 시험에 따라서 상기 프로그램 제어기로 유지되는 주소에 대한 링크를 허용한다. 상기 문맥들의 표현들이 동일하면, 상기 링크가 계속된다.
다른 확장(역시 도 5에 도시됨)은 호스트가 올바른 결과를 생성하기위해 실행되는 현재 문맥과 동일한 문맥을 가지는 다음 변환된 시퀀스가 항상 필수적인 것은 아니라는 사실에 기인한다. 어떠한 변환된 시퀀스들은 호스트가 실행되는 문맥 요소에 비해 더 소수의 문맥 요소들에 의존하거나 문맥 요소들을 덜 제한한다. 이러한 시퀀스들은 실행될 수 있고, 실행 전인(yet-to-be-executed) 시퀀스의 올바른 실행을 위해 필요한 문맥이 존재하는 한 이전 시퀀스들과 링크될 수 있다. 이는 상이한 문맥 요소들을 결정하기위해 실행되는 변환된 시퀀스들의 문맥 표시를 상기 호스트의 현재 문맥 표시와 비교하는 것으로 시험될 수 있다. 그 다음, 상기 상이한 요소들이 실행되는 시퀀스에 필수적인 것인지를 결정하기위해 검토되고, 만일 필수적이라면, 상기 차이점은 이들은 실행되는 시퀀스에서 덜 한정적인지를 결정하기위해 검토된다. 만일 문맥 요소들이 필요 없거나 덜 한정적이라면, 상기 시퀀스는 실행되거나 링크될 수 있다.
문맥을 표시하는 방식은 도 6에 도시된 바와 같이 광범위한 스펙트럼(spectrum)에서 가변적일 수 있다. 예를 들어서, 만일 구성 요소들이 함께 연쇄되는(concatenated) 경우, 상기 구성 요소들 모두가 기계 레지스터에 있어 원래부터 가용한 비트(예를 들어, 32 또는 64비트들)을 넘지 않으면, 상기 문맥은 이러한 연쇄로 나타내어질 수 있고, 상기 시험들은 표시들에서 간단한 비트 조작들을 수행하는 것으로 쉽게 달성될 수 있다(예를 들어, XOR 연산 및 AND 연산). 대안적으로, 문맥의 요소들의 숫자 및 크기가 레지스터에 원래부터 가용한 비트 수를 초과하면, 상기 문맥 요소들은 메모리에 데이터 구조로 저장될 수 있고, 그리고 상기 데이터 구조에 대한 포인터들은 정확한 문맥 일치들을 위한 비교에 사용될 수 있다. 상기 포인터들은 이제 문맥 표시가 된다. 문맥의 개별적 요소들에 대한 더 포함되는 비교들(완전한 일치는 아님)은 메모리의 데이터 구조들을 억세스해야만 한다.
문맥을 표시하는 다른 방법은 이러한 두 가지 기법들을 결부시키는 것이다. 상기 요소들 중 일부는 직접적으로 표시될 수 있지만, 다른 것들은 메모리에 저장된다. 상기 표시의 잔여물은 메모리의 데이터 구조에 대한 포인터/인덱스이다. 다시 말하면, 정확한 비교들은 간단해지며, 반면에 요소-종속 비교들은 더 포함될 수 있다.
비록 본 발명이 바람직한 실시예에 관하여 설명되었지만, 본 발명의 사상과 범위를 벗어나지 않으면서 다양한 변경들과 대안들이 만들어질 수 있다는 것은 당 업자들에게 명백하다. 따라서 본 발명은 다음의 청구항들로서 그 범위가 판단되어야만 한다.

Claims (12)

  1. 호스트 마이크로프로세서에서 타겟 마이크로프로세서가 실행하도록 설계된 명령들로부터 변환된 명령들에 대한 변환 문맥을 유지하는 방법에 있어서,
    각각의 변환된 호스트 명령에 관련되는 변환 문맥을 저장하는 단계와,
    상기 호스트 프로세서가 현재 실행하는 호스트 명령들에 대한 변환 문맥을 표시하는 단계와,
    다음 호스트 명령에 대해 저장된 변환 문맥과 현재 실행되는 호스트 명령에 대한 변환 문맥을 비교하는 단계와,
    만일 상기 다음 호스트 명령과 상기 변환 실행중인 호스트 명령의 변환 문맥이 대등하면 상기 다음 호스트 명령을 실행하는 단계와, 그리고
    만일 상기 다음 호스트 명령과 상기 변환 실행중인 호스트 명령의 변환 문맥이 대등하지 않으면, 현재 실행중인 상기 호스트 명령의 변환 문맥과 대등한 변환 문맥을 가진 명령을 검색하는 단계를 포함하는 것을 특징으로 하는 변환 문맥 유지 방법.
  2. 제 1항에 있어서, 상기 각각의 변환된 호스트 명령에 관련되는 변환 문맥을 저장하는 단계는 변환된 호스트 명령들의 일부로서 변환 문맥의 표시를 저장하는 단계를 포함하는 것을 특징으로 하는 변환 문맥 유지 방법.
  3. 제 2항에 있어서, 상기 표시는 변환 문맥이 저장되는 주소에 대한 포인터(pointer)인 것을 특징으로 하는 변환 문맥 유지 방법.
  4. 제 2항에 있어서, 상기 표시는 변환 문맥을 나타내는 비트들의 세트인 것을 특징으로 하는 변환 문맥 유지 방법.
  5. 제 2항에 있어서, 상기 표시는 변환 문맥을 나타내는 비트들의 세트와 부가적인 변환 문맥이 저장되는 주소에 대한 포인터인 것을 특징으로 하는 변환 문맥 유지 방법.
  6. 제 1항에 있어서, 각각의 변환된 호스트 명령에 관련되는 변환 문맥을 저장하는 상기 단계는 변환된 호스트 명령들과 분리된 변환 문맥의 표시를 저장하는 단계를 포함하는 것을 특징으로 하는 변환 문맥 유지 방법.
  7. 제 1항에 있어서, 다음 호스트 명령에 대해 저장된 변환 문맥과 현재 실행되는 호스트 명령에 대한 변환 문맥을 비교하는 상기 단계는 변환이 억세스되면 달성되는 것을 특징으로 하는 변환 문맥 유지 방법.
  8. 제 1항에 있어서, 만일 변환된 호스트 명령들의 제 1시퀀스의 변환 문맥과 후속 하는 변환된 호스트 명령들의 변환 문맥이 대등한 경우, 변환된 호스트 명령들의 제 1시퀀스를 후속 하는 변환된 호스트 명령들과 링크하는 단계를 더 포함하는 것을 특징으로 하는 변환 문맥 유지 방법.
  9. 제 8항에 있어서, 다음 호스트 명령에 대해 저장된 변환 문맥과 현재 실행되는 호스트 명령에 대한 변환 문맥을 비교하는 상기 단계는 상기 제 1변환 시퀀스가 후속 변환 시퀀스와 링크되는 경우 달성되는 것을 특징으로 하는 변환 문맥 유지 방법.
  10. 제 1항에 있어서, 만일 후속 하는 변환된 호스트 명령들에 영향을 주는 상기 제 1변환된 호스트 명령의 변환 문맥이 상기 후속 변환된 호스트 명령의 변환 문맥이 대등하면, 제 1변환된 호스트 명령을 후속 하는 변환된 호스트 명령과 링크하는 단계를 더 포함하는 것을 특징으로 하는 변환 문맥 유지 방법.
  11. 변환된 명령들의 각 부분에 대한 변환 문맥을 유지하는 방법에 있어서,
    변환된 명령들의 새로운 부분이 실행될 때마다 몰프 호스트 프로세서가 기능하는 변환 문맥을 상기 부분의 변환에서의 변환 문맥과 비교하는 단계와,
    만일 상기 새로운 부분의 정확한 실행을 위해 필요한 상기 변환 문맥들이 동일하면 실행을 허용하는 단계와, 그리고
    만일 상기 새로운 부분의 정확한 실행을 위해 필요한 상기 변환 문맥들이 상이하면, 상이한 변환의 검색을 수행하는 단계를 포함하는 것을 특징으로 하는 변환 문맥 유지 방법.
  12. 제 11항에 있어서, 만일 변환 문맥들이 상이하면 상이한 변환의 검색을 수행하는 단계는 변환된 명령들의 부분이 파생되는 원본 명령을 재변환하는 단계를 포함하는 것을 특징으로 하는 변환 문맥 유지 방법.
KR10-2002-7004740A 1999-10-13 2000-09-06 변환된 명령들을 실행하는 동안 문맥을 보존하기 위한 방법 및 장치 KR100498272B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/417,981 1999-10-13
US09/417,981 US6415379B1 (en) 1999-10-13 1999-10-13 Method and apparatus for maintaining context while executing translated instructions

Publications (2)

Publication Number Publication Date
KR20020039688A KR20020039688A (ko) 2002-05-27
KR100498272B1 true KR100498272B1 (ko) 2005-06-29

Family

ID=23656160

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-7004740A KR100498272B1 (ko) 1999-10-13 2000-09-06 변환된 명령들을 실행하는 동안 문맥을 보존하기 위한 방법 및 장치

Country Status (9)

Country Link
US (1) US6415379B1 (ko)
EP (1) EP1226492B1 (ko)
JP (1) JP3786603B2 (ko)
KR (1) KR100498272B1 (ko)
CN (2) CN100401258C (ko)
AT (1) ATE326721T1 (ko)
CA (1) CA2379976C (ko)
DE (1) DE60028069T2 (ko)
WO (1) WO2001027741A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
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
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
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
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
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
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6845353B1 (en) 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US7036106B1 (en) * 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6763327B1 (en) * 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US7681046B1 (en) 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US7694151B1 (en) * 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7496727B1 (en) 2005-12-06 2009-02-24 Transmeta Corporation Secure memory access system and method
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9250900B1 (en) 2014-10-01 2016-02-02 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4456954A (en) * 1981-06-15 1984-06-26 International Business Machines Corporation Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6591414B2 (en) * 1996-10-28 2003-07-08 Fujitsu Limited Binary program conversion apparatus, binary program conversion method and program recording medium

Also Published As

Publication number Publication date
KR20020039688A (ko) 2002-05-27
ATE326721T1 (de) 2006-06-15
CA2379976A1 (en) 2001-04-19
JP3786603B2 (ja) 2006-06-14
EP1226492A1 (en) 2002-07-31
CA2379976C (en) 2009-04-07
CN1862495A (zh) 2006-11-15
US6415379B1 (en) 2002-07-02
WO2001027741A1 (en) 2001-04-19
EP1226492B1 (en) 2006-05-17
CN1264083C (zh) 2006-07-12
DE60028069T2 (de) 2006-12-21
EP1226492A4 (en) 2005-03-30
JP2003511787A (ja) 2003-03-25
DE60028069D1 (de) 2006-06-22
CN100401258C (zh) 2008-07-09
CN1379872A (zh) 2002-11-13

Similar Documents

Publication Publication Date Title
KR100498272B1 (ko) 변환된 명령들을 실행하는 동안 문맥을 보존하기 위한 방법 및 장치
KR100463810B1 (ko) 어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기
US7461386B2 (en) Zero overhead exception handling
US7725677B1 (en) Method and apparatus for improving segmented memory addressing
JPH08508358A (ja) リロケート可能なファイルフォーマットのための装置および方法
US7823140B2 (en) Java bytecode translation method and Java interpreter performing the same
US6243668B1 (en) Instruction set interpreter which uses a register stack to efficiently map an application register state
JPH025139A (ja) シミユレーシヨン方法
CN111399990B (zh) 解释执行智能合约指令的方法及装置
US5752015A (en) Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions
JPH025140A (ja) シミュレーシヨン方法
US9235397B2 (en) Method and apparatus for increasing task-execution speed
US6714991B1 (en) Method and apparatus for implementing fast subclass and subtype checks
US20020144060A1 (en) Adapting polymorphic inline caches for multithreaded computing
JP2002366367A (ja) プログラム命令解釈
TWI743698B (zh) 解譯執行位元組碼指令流的方法及裝置
KR100421687B1 (ko) 개선된 마이크로프로세서를 위한 변환 메모리 보호 장치
KR100522468B1 (ko) 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서
JPH0668724B2 (ja) シミユレーシヨン方法
US10802854B2 (en) Method and apparatus for interpreting bytecode instruction stream
US5822607A (en) Method for fast validation checking for code and data segment descriptor loads
Kicinski et al. Xdp hardware offload: Current work, debugging and edge cases
JP3324542B2 (ja) 仮想マシン
JPH0816875B2 (ja) コンピュータ・システムのエミュレーション方法
Rohl The influence of programming languages on the design of MU5

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

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 14