KR100573446B1 - 미세 단위 변환 식별 - Google Patents

미세 단위 변환 식별 Download PDF

Info

Publication number
KR100573446B1
KR100573446B1 KR1020027004731A KR20027004731A KR100573446B1 KR 100573446 B1 KR100573446 B1 KR 100573446B1 KR 1020027004731 A KR1020027004731 A KR 1020027004731A KR 20027004731 A KR20027004731 A KR 20027004731A KR 100573446 B1 KR100573446 B1 KR 100573446B1
Authority
KR
South Korea
Prior art keywords
instructions
target
sub
host
system memory
Prior art date
Application number
KR1020027004731A
Other languages
English (en)
Other versions
KR20020039685A (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 KR20020039685A publication Critical patent/KR20020039685A/ko
Application granted granted Critical
Publication of KR100573446B1 publication Critical patent/KR100573446B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Medicines Containing Plant Substances (AREA)
  • Liquid Crystal Substances (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

명령들을 타겟 명령 세트에서 호스트 명령 세트로 변환하는 컴퓨터에서 메모리 페이지에 대한 기입들이 호스트 명령들로 변환된 타겟 명령들과 관계하는지 여부를 결정하는 방법은, 호스트 명령들로 변환된 타겟 명령들을 저장하는 메모리 페이지에 대한 기입을 검출하는 단계와, 기입이 행해진 상기 메모리 페이지 서브 영역이 변환된 타겟 명령들을 저장하는지 여부를 검출하는 단계와, 그리고 어드레스된 타겟 명령들에서 변환된 호스트 명령들을 무효화하는 단계를 포함한다.

Description

미세 단위 변환 식별{FINE GRAIN TRANSLATION DISCRIMINATION}
본 발명은 컴퓨터 시스템들에 관한 것으로, 좀더 구체적으로는 이미 변환된 타겟 명령들을 저장하는 메모리에 기입을 위해서, 타겟 명령세트로 부터 호스트 명령 세트로 명령들을 동적변환하는 마이크로 프로세서의 기입 시도들을 검출하는 방법들 및 장치들에 관한 것이다.
최근 들어, 간단하지만 빠른 호스트 프로세서("몰프 호스트(morph host)"로 불림)와 상기 몰프 호스트와는 상이한 명령 세트를 가지는 프로세서("타겟 프로세서")를 위해 설계된 응용 프로그램을 실행하기위한 소프트웨어("코드 몰핑 소프트웨어"로 간주됨)가 결합된 새로운 마이크로프로세서가 개발되었다. 상기 몰프 호스트 프로세서는 코드 몰프 소프트웨어를 실행하는데, 이 소프트웨어는 상기 타겟 프로그램을 원본(original) 타겟 소프트웨어의 목적을 달성할 수 있는 몰프 호스트 프로세서 명령들로 동적 변환한다. 상기 명령들이 변환되면, 이들은 변환버퍼에 저장되며, 이 버퍼에서 이 명령들은 추가의 변환없이 실행될 수 있게 된다. 비록 상기 프로그램의 초기 변환이 느리기는 하지만, 일단 변환되면, 하드웨어가 프로그램을 실행하는데 요구되는 일반적인 많은 단계들이 생략된다. 이 새로운 마이크로프로세서는 변환된 타겟 프로그램이 설계된 "타겟 프로세서만큼 빠르게 이 타겟 프로그램을 실행할 수 있는 것으로 입증되었다.
상기 몰프 호스트 프로세서는 다수의 하드웨어 개량들을 포함하는데, 이는 상기 타겟 프로세서의 공지된 상태들에 미치는 타겟 명령들의 시퀀스가 호스트 명령들로 변환되게하고, 후속 사용을 위해 변환 버퍼에 저장되게 하며, 상기 변환된 명령들이 올바르게 실행되었는지를 결정하기 위해 테스트되게 한다. 이러한 하드웨어 개량들은 실행이 성공할 때까지 변환 실행의 결과들을 버퍼링할 수 있도록 한다. 메모리 저장내용들과 타겟 프로세서 상태는 "커미트(commit)"로 언급되는 프로세스에서의 성공적 실행하에서 갱신된다. 이러한 하드웨어 개량들은 예외들에 대한 빠르고 정밀한 처리를 가능하게 하는바, 이 예외들은 상기 호스트 명령 시퀀스들의 실행 중에, 상기 타겟 프로세서의 공지된 상태가 존재하는 명령 시퀀스들의 시작 지점으로 실행을 복귀시킴으로써 발생된다. 상기 동작들을 타겟 상태가 공지된 실행 지점으로 복귀시키는 것은 "롤백(rollback)"으로 불린다. 상기 새로운 마이크로 프로세서는 본 발명의 양수인에게 양도되었으며 1998년 11월 3일 켈리 등에게 허여된 미국 특허 제5,832,205호(발명의 명칭 : Memory Controller for a Microprocessor for Detecting a Failure of Speculation on the Physical Nature of a Component being addressed)에 자세히 설명된다.
상기 새로운 프로세서에서 야기되는 한가지 문제는 타겟 프로세서용의 일부 운영 체제 및 응용들에서 메모리에 저장된 타겟 명령들에 기입이 행해질 가능성이 있다는 점이다. 만일 이러한 일이 일어나면, 덮어 쓰여진 타겟 명령들의 변환들인 호스트 명령들은 더이상 유효하지 않게된다. 유효하지 않은 호스트 변환들이 이용되지 않도록 하기 위해서, 상기 새로운 프로세서는 "T 비트"라는 용어의 지시자(indicator)를 이용한다. 상기 T 비트는 변환 룩어사이드(lookaside) 버퍼(TLB)에서 물리적 페이지 어드레스와 함께 저장된다. 룩어사이드 버퍼는, 페이지 테이블들(page tables)을 통하는 것보다 더 빠르게 메모리가 억세스 되도록, 최근 메모리 억세스들의 가상(virtual) 메모리 및 물리적 메모리 어드레스들 모두를 포함하는 엔트리들(entries)을 저장한다. 상기 새로운 프로세서 TLB의 각 엔트리는 어드레스된 메모리 페이지 상의 명령들이 호스트 명령들로 변환될 때 마다 설정(set)되는 T 비트를 포함한다. 만일 T 비트에 의해 보호되는 메모리 페이지에 기입이 시도되면, T 비트 예외가 발생된다. T 비트 예외는 예외 처리기(handler)가 T 비트에 의해 보호되는 페이지 상의 타겟 명령들로부터 변환된 호스트 명령들의 어드레스들에 대한 참조들을 유지하는 데이터 구조를 룩업(lookup)하도록 한다. 상기 예외 처리기는 상기 TLB 엔트리의 T 비트 보호를 해제시킴으로써 이러한 변환들을 무효화한다.
T 비트들의 이용에 대한 구성은 본 발명의 양수인에게 양도된 1996년 8월 22일 켈리 등에 의한 미국 특허 출원 제08/702,771 (발명의 명칭 "Translated Memory Protection Apparatus for An Advanced Microprocessor")에 자세히 설명된다.
비록 TLB 엔트리들의 T 비트들을 이용하는 구성은 대부분의 경우 효과적으로 기능하지만, 동작상 몇 가지 문제들이 존재한다. 이러한 문제들 중 하나는 특정 타겟 프로세서들이 명령들과 데이터가 저장된 영역들간을 구별하지 않는 운영체제들을 적용한다는 점이다. 예를 들어, 마이크로소프트사의 윈도우즈는 명령들을 위한 전용 세그먼트들과 데이터를 위한 다른 전용 세그먼트들이 동일한 메모리 페이지들에 저장되는 것을 허용한다.
만일 이러한 경우가 발생하면, 이러한 메모리 페이지에 데이터를 기입하려는 시도는 T 비트 장해를 야기한다. 그 결과 발생하는 예외는 비록 데이터에의 기입이 타겟 명령들이 전혀 변경되었음을 나타내지 않는다 하더라도, 특정 T 비트로 보호되는 메모리 페이지 상의 타겟 명령들의 모든 변환들이 무효화되게 한다. 상기 메모리 페이지 상에서의 올바른 변환의 무효화는, 상기 새로운 마이크로프로세서의 동작을 현저히 느리게한다.
T 비트들에 의해 보호되는 메모리 페이지들에 대한 기입에 의해 영향받지 않는 변환들의 무효화를 배제하고 그리고 발생한다 하더라도 변환들의 무효화를 유발하지 않도록 T 비트 트랩들의 수를 줄임으로써, 상기 새로운 마이크로프로세서의 동작 속도를 개선할 필요가 있다.
그래서, 본 발명의 한 목적은 다른 마이크로프로세서용으로 설계된 운영 체제 및 응용 프로그램들과 호환성이 있고 이들을 실행하며, 다른 마이크로프로세서들 보다 빠르게 실행할 수 있는 마이크로프로세서를 제공하는 것이다.
본 발명의 상기 및 기타 목적들은 명령들을 타겟 명령 세트에서 호스트 명령세트로 변환하는 컴퓨터에 있어서, 메모리 페이지로의 기입들이, 명령들을 타겟 명령 세트에서 호스트 명령 세트로 변환하는 컴퓨터용의 호스트 명령들로 변환된 타겟 명령들에 따르는지를 결정하는 방법을 통해 타겟 명령 세트에서 호스트 명령 세트로 명령들을 변환하는 컴퓨터에서 실현되는 바, 상기 방법은, 호스트 명령들로 변환된 타겟 명령들을 저장하는 메모리 페이지에 대한 기입을 검출하는 단계와, 기입이 어드레스되는 상기 메모리 페이지의 서브 영역이 변환된 타겟 명령들을 저장하는가를 검출하는 단계와, 그리고 어드레스된 타겟 명령들에서 변환된 호스트 명령들을 무효화하는 단계를 포함한다.
본 발명의 이러한 그리고 다른 특징들은 다음의 자세한 설명을 도면들과 같이 참조함으로써 더욱 이해하기 쉬울 것이며, 상기 도면들에서 유사한 구성 요소들은 일부 도면을 통하여 동일한 부호로 표시하였다.
도 1은 본 발명을 이용하는 마이크로프로세서를 예시하는 블록 다이어그램이다.
도 2는 본 발명의 일부를 적용한 하드웨어를 예시하는 블록 다이어그램이다.
도 3은 본 발명의 동작을 예시하는 흐름도이다.
도 4는 본 발명의 적용에 대한 호스트메모리의 데이터 구조들을 예시하는 블록 다이어그램이다.
도 1은 본 발명을 이용할 수 있는 마이크로프로세서(11)를 예시한다. 상기 도시된 마이크로프로세서는 미국 특허 제 5,832,205호에 자세히 설명된다. 상기 마이크로프로세서는 부동소수점 유닛(12), 정수 유닛(13), 시스템 메모리의 일부인 변환 버퍼(14), 시스템 메모리의 다른 일부인 타겟 메모리(15), 그리고 메모리 관리 유닛의 일부인 변환 룩어사이드 버퍼(16)를 포함한다.
상기 설명된 바와 같이, 상기 새로운 마이크로프로세서는 변환 명령들이 타겟 명령들 - 이 타겟 명령으로부터 상기 변환 명령들이 변환되었음 - 과 동일한 상태를 유지되게 하는 독특한 방법을 사용한다. 상기 방법은 "T 비트 예외"로 언급된다. T 비트는 상기 변환 룩어사이드 버퍼(16)의 엔트리에 위치되어, 기입이 시도된 타겟 메모리(15)의 메모리 페이지가 변환 버퍼(14)에 저장된 호스트 명령들로 변환된 타겟 명령들을 저장하고 있음을 신호한다. 변환된 타겟 명령들을 저장하는 메모리 페이지에 기입이 시도되면 T 비트 예외가 생성된다.
상기 T 비트의 목적은 변환된 명령들이 무효화되도록 하여, 상기 변환이 발생된 상기 타겟 명령들이 변경되는 경우 상기 변환이 사용되지 않도록(또는 적어도 사용 전에 이들이 여전히 유효한지를 결정하기 위해 검사되도록)하기 위한 것이다. "무효화(invalidate)"는 본 명세서에서 두 가지 의미들을 포함하는 것으로 사용된다. 그러나, 어떠한 타겟 프로세서들(특히 X86 계열)에서, 메모리 페이지들은 변환된 명령들 및 데이터 둘다를 포함할 수도 있다. 메모리 페이지로의 데이터 기입은 상기 페이지 상의 명령들을 변경하지 않으므로 상기 메모리 페이지 상의 명령들로부터 변환된 호스트 명령들을 무효화 할 이유가 없다. 결과적으로, 코드 몰핑 소프트웨어로 하여금 메모리 페이지에 대한 기입 시도가 변환된 명령들에 대한 것인지 데이터에 대한 것인지를 판단하여 상기 페이지 상의 명령 변환들을 무효화하지 않으면서 이 데이터에 대한 기입을 행할 수 있게 하는 새로운 프로세스가 창안되었다. 또한, 이 새로운 프로세스는 명령들에의 기입이 상기 페이지에 미치는 영향을 실제 기입되는 메모리 페이지의 영역들에만 국한시킨다.
본 발명의 프로세스는 T 비트에 의해 보호되는 메모리 페이지들의 더 정밀한 미세 단위 분할(division)을 제공한다. 상기 프로세스는 보호 대상의 페이지들을 다수의 동일 크기의 서브 영역들로 분할하여 이 메모리 페이지의 서브 영역들 각각에 대한 지시자(indicator)들을 저장한다. 일 실시예에서, 상기 지시자는 상기 다수의 서브 영역들 각각에 대해 한 비트를 제공하는 마스크를 형성하며, 상기 마스크는 T 비트로 보호되는 메모리 페이지의 일부로서 저장될 수 있다. 상기 보호되는 각 서브 영역에 대한 지시자들은 "미세 단위(fine-grain) T 비트들"로 언급된다. 일 실시예에서, 상기 마스크는 32비트 워드로 되어있어, 각 미세 단위 T 비트가 4096 바이트 메모리 페이지의 128 바이트 서브 영역을 보호하게된다. 타겟 명령들을 포함하는 각 서브 영역에 대해서, 미세 단위 T 비트가 설정된다. T 비트 예외가 발생하면, 예외 처리기는 기입이 시도되는 메모리 페이지에 대해 미세 단위 T 비트보호가 제공되었는지를 결정하기 위하여 상기 지시자들을 테스트한다.
상기 테스트를 가속하기 위해서, 액세스되는 어드레스의 하위 12비트들이 마스크를 발생하는데 사용된다. 상기 마스크는 상기 어드레스 바이트의 위치에서 1을 가진다(그리고, 만일 상기 저장된 데이터가 다음 서브 영역으로 진행하기에 충분히 길다면, 다음 순차적 비트 위치에서 1을 가진다). 상기 하위 어드레스 비트들의 마스크와 미세 단위 T 비트 마스크는 AND연산 된다. 임의의 위치에서의 결과가 0이면 이는 미세 단위 T 비트가 상기 서브 영역에 대해 설정됨을 표시하며, 따라서 상기 T 비트 예외가 발생되어야만 한다.
만일 메모리 페이지가 서브 영역들로 분할되지 않으면(즉, 타겟 명령들만이 상기 페이지에 기입되었다면), 상기 페이지에 관련된 변환 버퍼의 변환들을 무효화하는 상기 T 비트 예외가 발생한다. 만일 상기 메모리 페이지가 서브 영역들로 분할되어 미세 단위 T 비트 지시자들이 존재하고 상기 룩업은 상기 기입이 미세 단위T 비트에 의해 지정되지 않은 하나 이상의 서브 영역들에 대한 것임을 보이는 경우, 원래의 T 비트 예외는 소프트웨어에 의해 무시된다, 만일 상기 메모리 페이지가 서브 영역들로 분할되고 상기 룩업은 상기 기입이 미세 단위의 T 비트에 의해 지정된 하나 이상의 서브 영역(명령을 저장하는 영역)들에 대한 것임을 보이는 경우, 원래의 T 비트 예외가 발생하고, 그리고 상기 예외 처리기가 상기 보호된 메모리 페이지 상의 특정 서브 영역에 저장된 타겟 명령들로부터 변환되어 상기 변환 버퍼에 저장되어있는 호스트 명령들을 무효화한다.
도시된 바와 같이, 미세 단위 T 비트 보호는 새로운 프로세서에 의해 발생된 T 비트 예외들의 상당 부분을 제거한다. 또한, 미세 단위 T 비트 보호는 폐기되는 변환들을 상기 기입이 행해진 서브 영역들의 명령들을 변환하여 되는 변환들로 국한시킨다. 따라서, 본 발명의 프로세스는 전체 메모리 페이지를 지속적으로 폐기하는 것에 비해 훨씬 더 빠르다.
비록, 상기 코드 몰핑 소프트웨어 및 소프트웨어 예외 처리기를 이용하는 프로세스는 기본 T 비트 보호보다도 빠르지만, 이는 더욱 가속될 수 있다. 본 발명의 프로세스 속도를 개선하기 위해서, 도 2의 하드웨어 실시예가 구성된다. 이 실시예는 이전에 논의된 TLB의 방식으로 구성된 제 1의 TLB(21)를 가지는 회로(20)를 포함한다. 상기 TLB는, 각각 메모리 페이지의 가상 어드레스, 상기 가상 어드레스에 의해 어드레스되어 정보가 실제 저장되는 물리적 페이지 어드레스 및 T 비트를 포함하는 엔트리들을 저장하기 위한 위치들을 제공한다. 만일, 유효 메모리 페이지가 변환된 타겟 명령들을 저장하고 있다면, 상기 TLB(21)의 엔트리에 대해 상기 T 비트가 설정된다.
또한, 상기 회로(20)는 "미세 단위 T 비트 룩업 테이블"로 간주되는 제 2의 TLB-형 구조(23)를 포함한다. 전형적으로 상기 미세 단위 T 비트 룩업 테이블(23)은 TLB(21)보다 작은 수의 엔트리들을 가지는데, 이는 변환된 타겟 명령을 저장하는 일부 메모리 페이지들이 또한 데이터를 저장할 것으로 예상될 수 있기 때문이다. 상기 테이블(23)은 엔트리들을 저장하기 위한 위치들을 제공하는 바, 이들 위치 각각은 변환된 데이터 및 타겟 명령들을 저장하는 메모리 페이지의 물리적 페이지 어드레스를 포함한다. 상기 테이블(23)의 각 엔트리는 또한, 미세 단위 T 비트들에 의해 실제 보호되는 서브 영역들을 표시하는, 상기 소프트웨어 실시예에서 사용되는 동일 세트의 지시자들 (예를 들어, 32비트 워드 마스크)을 저장한다.
상기 회로(20)의 동작은 도 3의 흐름도로 예시된다. 메모리 페이지에 기입이 시도되면, 어드레스된 메모리 페이지에 대한 엔트리가 테이블(23)에 존재하는지 여부를 결정하기 위해 상기 테이블(23)이 검색된다. 이를 달성하기 위해서, 가상 메모리 어드레스를 포함하는 엔트리에 대해 검색이 실시된다. 만일 엔트리가 존재하면, 상기 페이지의 물리적 어드레스가 검출되고 그리고 상기 페이지에 대한 T 비트의 조건이 결정된다. 만일 상기 T 비트가 설정되지 않았으면, 상기 메모리 페이지는 변환된 타겟 명령들을 저장하는 페이지가 아니므로, 이 페이지는 사실 T 비트 보호를 가지는 페이지가 아니다. 만일 상기 메모리 페이지가 변환된 타겟 명령들을 저장하고 있으면, 이는 설정된 T 비트에 의해 보호되어 상기 페이지에 대한 T 비트트랩(trap)이 발생되고, 그리고 상기 엔트리의 물리적 어드레스가 상기 미세 단위 T 비트 룩업 테이블(23)에 전달된다.
물리적 어드레스를 포함하는 엔트리에 대한 검색이 테이블(23)에서 실시된다. 만일 물리적 어드레스를 포함하는 엔트리가 상기 테이블(23)에 존재하지 않으면, (1)상기 메모리 페이지는 데이터 및 변환된 타겟 명령 둘다를 저장하지 않거나, 혹은 (2) 상기 메모리 페이지가 데이터 및 변환된 타겟 명령들 둘다를 저장하지만은 상기 메모리 페이지에 대한 엔트리가 테이블(23)에 기입되지 않는다. 첫 번째 경우에 있어서, TLB(21) 엔트리의 상기 설정된 T 비트는 상기 페이지가 변환된 타겟 명령들을 포함하고 있음을 표시하기 때문에, T 비트 트랩 예외가 발생되는 바, 이는 상기 페이지에 관련된 변환 버퍼에 저장된 변환들을 무효화시킨다. 두 번째 상황에서, 상기 물리적 어드레스에 대한 엔트리가 상기 테이블(23)에 적재되고 기입이 재시도된다.
만일 미세 단위 T 비트 룩업 테이블(23)에서 적중(hit)이 존재하면, 상기 어드레스된 서브 영역이 미세 단위 T 비트에 의해 보호되는가를 결정하기 위해 상기 페이지의 특정 서브 영역에 대한 테스트가 실시된다. 만일 미세 단위 T 비트가 상기 서브 영역에 대해 설정되지 않으면, T 비트 트랩 예외는 발생되지 않으며 따라서 데이터가 상기 메모리 페이지에 저장된다. 만일 미세 단위 T 비트가 상기 서브영역에 대해 설정된다면, T 비트 트랩 예외가 발생되어 상기 메모리 페이지의 특정서브 영역과, 상기 TLB(21)의 엔트리와 그리고 상기 메모리 페이지의 특정 서브 영역에 관련되어 상기 변환 버퍼에 저장되어있는 변환들을 무효화한다.
미세 단위 T 비트가 어드레스된 영역에 대해 설정되었는가를 결정하기 위해서, 본 발명의 일 실시예에 따르면, 상기 회로(20)의 테이블(23)에서 물리적 어드레스 매칭(matching)은 미세 단위 T 비트들로 보호된 서브 영역들을 표시하는 마스크가 레지스터(25)에 위치되도록 한다. 그 다음, 어드레스된 서브 영역이 미세 단위 T 비트들에 의해 보호되는 지를 결정하는데 가상 어드레스의 하위 비트들이 사용된다. 이러한 하위 비트들은 상기 어드레스된 메모리 페이지 내부에서의 기입 억세스에 의해 억세스되는 어드레스를 정의한다. 기입 억세스가 어드레스되는 상기 페이지의 특정 서브 영역은, 상기 어드레스가 미세 단위 T 비트에 의해 보호된 하나 이상의 서브 영역들 내부에 있는지를 결정하기 위해 상기 레지스터(25) 마스크의 32비트 T 비트 지시자와 매칭된다. 만일 상기 기입이 미세 단위 T 비트에 의해 보호된 서브 영역에 대한 것이라면, 상기 트랩은 T 비트 예외를 발생시켜 상기 특정 서브 영역들과 이들 서브 영역들에 저장된 명령들의 변환들과 그리고 상기 TLB(21)의 어드레스된 엔트리를 무효화시키게 한다.
메모리 페이지의 어드레스된 서브 영역이 미세 단위 T 비트 보호를 받는 지를 결정하기 위해서, 본 발명의 일 실시예는 32개 서브 영역들 중 어느 서브 영역이 연루되는지를 결정하기 위해 하위 12개 어드레스 비트들 중 5개의 상위 비트들을 이용한다. 이러한 서브 영역들 각각은 4096 바이트의 한 페이지에 대해 128 바이트들을 포함한다. 특정 어드레스된 서브 영역이 결정되면, 상기 어드레스의 하위 7 비트들은 상기 서브 영역에서 어드레스된 특정 바이트를 결정하는데 사용된다. 상기 어드레스된 바이트들이 결정되면, 미세 단위 T 비트가 설정되었는지를 결정하기 위해, 미세 단위 T 비트들에 의해 보호되는 상기 서브 영역들을 표시하는 상기 마스크 (레지스터(25)의 마스크)의 어드레스된 서브 영역을 위한 지시자를 유지하는 상기 비트 위치가 테스트된다. 일 실시예에서, 기입은 8 바이트만큼을 포함할 수 있기 때문에, 상기 기입이 다음 서브 영역으로 진행하는지를 결정하기 위해, 상기 서브 영역 내의 바이트 어드레스 시작 부분에 상기 저장된 데이터의 길이(1 보다 작음)가 더해진다. 만일 상기 기입이 다음 서브 영역까지 이어진다면, 미세 단위 T 비트가 상기 다음 서브 영역에 대해 설정되는지를 결정하기 위해 상기 마스크 역시 테스트된다.
하드웨어는 T 비트 마스크 레지스터에 위치되는 비트 벡터를 취해서, 이를 상기 12 비트 페이지 오프셋(offset)의 상위 5 비트로 하향 쉬프트시킨다. 이는 상기 하위 비트 위치에 기입된 특정 서브 영역에 대해 상기 비트를 이동시키는 한편, 다음 하위 비트 위치에 기입된 다음 서브 영역에 대해 상기 비트를 이동시킨다. 그 다음, 1개 (만일 다음 서브 영역이 기입되었으면, 2개)의 하위 비트가 테스트된다. 만일 이들 중 어느 하나라도 설정되었으면, T 비트 예외가 발생된다.
미국 특허 출원 제 08/702,771호에 기재된 기본 T 비트 보호는 T 비트에 의해 보호된 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들의 어드레스를 포함하는 데이터 구조를 이용한다. 본 발명에 의해 최적으로 제공되는 T 비트 보호의 미세 단위 양상(aspects)들을 이용하기 위해서, 상기 데이터 구조는 도 4에 예시되는 방식으로 변경된다. 상기 코드 몰핑 소프트웨어는 물리적 페이지 맵(map)으로 불리는 엔트리들의 배열을 이용한다. 물리적 페이지 맵의 엔트리는 상기 물리적 어드레스의 상위 비트들로 인덱스(index)된다. 각 엔트리는 해당하는 물리적 페이지로부터 타겟 명령들을 변환하는 상기 변환들을 식별하는 데이터 구조들에 대한 포인터이다. 상기 물리적 페이지 상의 타겟 명령들의 각 변환은 미세 단위 T 비트들로 보호되는 변환된 타겟 명령들을 포함하는 상기 메모리 페이지 서브 영역들을 식별하는 미세 단위 T 비트 지시자(예를 들어, 32비트 워드 마스크)를 가진다. T 비트 예외가 있는 경우, 상기 저장 어드레스의 하위 비트들과 상기 저장 크기로부터 생성되는 상기 마스크는, 각 변환에 대해서, 상기 물리적 페이지의 억세스된 서브 영역으로부터 명령들을 변환할지를 결정하는데 있어 상기 설명된 바와 같은 방식으로 사용된다.
상기 물리적 페이지 맵의 각 엔트리는 변환들에 대한 포인터들의 목록을 가리킨다. 각 변환은 T 비트 마스크와 관련된다. 만일 페이지에 대한 그러한 목록 상의 변환에 대한 T 비트 마스크들이 함께 OR연산 된다면, 상기 페이지에 대한 T 비트 마스크가 형성된다. 이들은 저장되어, 상기 테이블(23)을 빠르게 채우고 그리고 상기 테이블(23)에 새로운 페이지를 적재하는데 사용될 수 있으며, 상기 마스크들은 새로운 변환들이 상기 목록에 추가되거나 또는 또는 상기 목록 상의 변환이 무효화되는 경우에는 항상 재연산된다.
주목할 사항으로, 타겟 명령 또는 타겟 명령들의 시퀀스가 변환되는 경우, 호스트 명령들의 시퀀스가 발생된다. 종종 이러한 호스트 명령들은 상기 컴퓨터의 동작 속도를 개선하기위해 재배열 및 스케줄링된다. 결과적으로, 본 발명의 일 실시예에서, 저장으로 인해 변환이 무효화되면, 상기 변환에 관련된 호스트 명령들의 모든 시퀀스는 상기 저장에 의해 억세스 되지 않는 영역들로부터 타겟 명령들을 변환할지라도 무효화된다.
예시된 바람직한 실시예 외의 다양한 대안적 실시예들 역시 사용될 수 있다. 예를 들어, 상기 T 비트 버퍼(23)는 물리적 어드레스보다는 가상 어드레스들을 이용하여 억세스 될 수 있다. 이러한 변경은 상기 버퍼들(21과 23)이 동일한 클럭으로 억세스될 수 있도록 한다. 상기 버퍼(23)를 제거하고 상기 TLB(21)의 단일 비트보다 전체 T 비트 마스크를 저장하는 다른 실시예 역시 가능하다. 다른 구체적 실시예들 역시 당업자들에 의해 구현될 수 있다.
본 발명은 미세 단위 T 비트 보호가 제공되는 상이한 크기들의 서브 영역들을 생성함으로써 더욱 개선될 수 있다. 상기 결과를 달성하기 위한 일 실시예는 상기 설명된 더 큰 서브 영역들에 대한 미세 단위 T 비트 보호와 동일한 방식으로 상기 서브 영역들을 미세 단위 T 비트 보호가 제공되는 더 작은 서브 영역들로 다시 분할하고, 상기 테이블(23)과 유사한 부가적인 테이블을 생성하는 회로를 제공하며, 시도된 저장들이 상기 더 작은 서브 영역들 중 보호되는 것에 실시되는지를 결정하기 위한 회로부와 관계한다.
비록 본 발명이 바람직한 실시예의 방법으로 설명되었지만, 다양한 변경들과 대안들 역시 본 발명의 사상과 범위를 벗어나지 않으면서 당업자들에 의해 실시될 수 있다는 것은 명백하다. 그로 인해 본 발명은 다음의 청구항들로서 판단되어야만 한다.

Claims (20)

  1. 삭제
  2. 명령들을 타겟 명령 세트에서 호스트 명령 세트로 변환하는 컴퓨터에서 메모리 페이지에 대한 기입들이, 호스트 명령들로 변환된 타겟 명령들에 관한 것인지 여부를 결정하는 방법에 있어서,
    a) 호스트 명령들로 변환된 타겟 명령들을 저장하는 물리적 메모리 페이지에 대한 물리적으로 어드레스된(physically-addressed) 기입을 검출하는 단계와, 여기서 상기 검출 단계는 호스트 명령들로 변환된 타겟 명령들을 저장하는 각 물리적 메모리 페이지에 대한 지시자를 물리적으로 어드레스 가능한 (physically-addressable) 메모리에 저장하는 단계와, 그리고 상기 물리적 메모리 페이지에 기입이 시도되는 경우, 상기 지시자를 검출하는 단계를 포함하며;
    b) 상기 기입이 어드레스된 물리적 메모리 페이지의 서브 영역이, 변환된 타겟 명령들을 저장하는지를 검출하는 단계와; 그리고
    c) 물리적으로 어드레스된 타겟 명령들에서 변환된 호스트 명령들을 무효화하는 단계를 포함하는 것을 특징으로 하는 메모리 페이지에 대한 기입 방법.
  3. 제 2항에 있어서,
    상기 단계 b)는 호스트 명령들로 변환된 타겟 명령들을 저장하는 물리적 메모리 페이지의 각 서브 영역에 대한 지시자를, 물리적으로 어드레스 가능한 메모리에 저장하는 단계와; 그리고 상기 물리적 메모리 페이지의 각 서브 영역에 기입이 시도되는 경우, 상기 서브 영역에 대한 지시자를 검출하는 단계를 포함하는 것을 특징으로 하는 메모리 페이지에 대한 기입 방법.
  4. 제 2항에 있어서,
    상기 단계 c)는 오직 타겟 명령들만을 저장하는 물리적 메모리 페이지 상에 저장된, 물리적으로 어드레스된 타겟 명령들로부터 변환된 모든 호스트 명령들을 무효화하는 단계를 포함하는 것을 특징으로 하는 메모리 페이지에 대한 기입 방법.
  5. 제 2항에 있어서, 상기 단계 c)는 상기 기입이 어드레스된 메모리 페이지의 서브 영역에 저장된 물리적으로 어드레스된 타겟 명령들로부터 변환된 호스트 명령들만을 무효화하는 단계를 포함하는 것을 특징으로 하는 메모리 페이지에 대한 기입 방법.
  6. 제 2항에 있어서, 상기 단계 c)는 상기 기입이 어드레스된 물리적 메모리 페이지의 임의의 서브 영역에 저장된 물리적으로 어드레스된 타겟 명령들로부터의 변환의 부분이 되는 모든 호스트 명령들을 무효화하는 단계를 포함하는 것을 특징으로 하는 메모리 페이지에 대한 기입 방법.
  7. 명령들을 타겟 명령 세트에서 호스트 명령 세트로 변환하는 컴퓨터에 있어서,
    a) 호스트 명령들을 실행하는 처리 유닛과;
    b) 시스템 메모리와; 그리고
    c) 시스템 메모리로의 억세스를 제어하기 위한 메모리 관리 유닛을 포함하며,
    상기 메모리 관리 유닛은:
    호스트 명령들로 변환된 타겟 명령들을 저장하는 시스템 메모리의 물리적 페이지들을 지시하기 위한 수단과;
    물리적으로 어드레스된 명령들에 응답하여, 호스트 명령들로 변환된 타겟 명령들을 저장하는 시스템 메모리의 물리적 페이지들의 서브 영역들을 지시하기위한 수단과,
    상기 시스템 메모리의 물리적 페이지들에 기입이 시도되는 경우, 오로지 타겟 명령들만을 저장하는 시스템 메모리의 물리적 페이지들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화하기 위한 수단과; 그리고
    상기 서브 영역들에 기입이 시도되는 경우, 타겟 명령들을 저장하는 상기 시스템 메모리의 물리적 페이지들의 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화하기 위한 수단을 구비하는 것을 특징으로 하는 명령 변환컴퓨터.
  8. 제 7항에 있어서, 상기 시스템 메모리의 물리적 페이지들의 서브 영역들의 서브 영역들에 기입이 시도되는 경우, 타겟 명령을 저장하는 시스템 메모리의 물리적 페이지들의 서브 영역들의 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화 하기 위한 수단을 더 포함하는 것을 특징으로 하는 명령 변환 컴퓨터.
  9. 제 7항에 있어서, 상기 호스트 명령들로 변환된 타겟 명령들을 저장하는 시스템 메모리의 물리적 페이지들을 지시하기 위한 수단은:
    시스템 메모리의 물리적 페이지들에 대한 가상 어드레스로 어드레스가능한 엔트리들을 저장하기 위한 변환 룩어사이드(lookaside) 버퍼를 포함하며, 상기 각 엔트리는 시스템 메모리의 페이지의 물리적 어드레스와, 그리고 상기 변환된 타겟명령들의 상기 페이지에의 저장여부를 나타내는 지시자를 포함하는 것을 특징으로 하는 명령 변환 컴퓨터.
  10. 제 7항에 있어서, 물리적으로 어드레스된 명령들에 응답하여, 상기 호스트 명령들로 변환된 타겟 명령들을 저장하는 시스템 메모리의 물리적 페이지들의 서브영역들을 지시하기 위한 수단은:
    물리적 어드레스들에 의해 어드레스가능한 시스템 메모리 페이지들에 대한 엔트리들을 저장하기 위한 테이블을 포함하며, 상기 각 엔트리는 변환된 타겟 명령들이 저장된 서브 영역들을 구별할 수 있는 지시자들을 포함하는 것을 특징으로 하는 명령 변환 컴퓨터.
  11. 제 10항에 있어서,
    상기 서브 영역들은 동일한 크기이고, 그리고
    상기 각 엔트리의 지시자들은 변환된 타겟 명령들의 저장소와 상기 페이지의 서브 영역을 나타내는 위치를 구별하는 조건의 비트 위치들인 것을 특징으로 하는 명령 변환 컴퓨터.
  12. 제 11항에 있어서, 상기 서브 영역들에 기입이 시도되는 경우 타겟 명령들을 저장하는 시스템 메모리의 물리적 페이지들의 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화 하기 위한 수단은:
    호스트 명령들로 변환된 타겟 명령들을 저장하는 서브 영역에 대한 기입에 응답하여, 상기 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화 하기 위한 예외 관리 수단을 포함하는 것을 특징으로 하는 명령 변환 컴퓨터.
  13. 제 12항에 있어서, 상기 페이지들에 기입이 시도되면 변환된 타겟 명령들로부터 변환되는 호스트 명령들을 저장하는 시스템 메모리의 페이지들을 무효화 하기 위한 예외 처리 수단을 더 포함하는 것을 특징으로 하는 명령 변환 컴퓨터.
  14. 명령들을 타겟 명령 세트에서 호스트 명령 세트로 변환하는 컴퓨터에서 시스템 메모리에 억세스하기 위한 메모리 관리 유닛에 있어서,
    물리적으로 어드레스된 명령들에 응답하여, 호스트 명령들로 변환된 타겟 명령들을 저장하는 시스템 메모리 페이지들을 지시하기 위한 수단과;
    물리적으로 어드레스된 명령들에 응답하여, 호스트 명령들로 변환된 타겟 명령들을 저장하는 시스템 메모리의 페이지들의 서브 영역들을 지시하기 위한 수단과;
    상기 시스템 메모리의 페이지들에 기입이 시도되는 경우, 오직 타겟 명령들만을 저장하는 시스템 메모리의 페이지들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화하기 위한 수단과, 그리고
    시스템 메모리의 상기 서브 영역들에 기입이 시도되는 경우, 타겟 명령들을 저장하는 시스템 메모리의 페이지들의 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화 하기 위한 수단을 구비하는 것을 특징으로 하는 메모리 관리 유닛.
  15. 제 14항에 있어서, 상기 시스템 메모리 페이지들의 서브 영역들의 서브 영역들에 기입이 시도되는 경우, 타겟 명령이 저장된 시스템 메모리 페이지들의 서브 영역들의 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화하기 위한 수단을 더 포함하는 것을 특징으로 하는 메모리 관리 유닛.
  16. 제 14항에 있어서, 상기 호스트 명령들로 변환된 타겟 명령들을 저장하는 물리적 시스템 메모리 페이지들을 지시하기 위한 수단은:
    물리적 시스템 메모리 페이지들에 대한 가상 어드레스들로 어드레스가능한 엔트리들을 저장하기 위한 변환 룩어사이드 버퍼를 포함하며, 상기 각 엔트리는 물리적 시스템 메모리의 페이지의 물리적 어드레스와, 그리고 변환된 타겟 명령들의 상기 페이지에의 저장 여부를 나타내는 지시자를 포함하는 것을 특징으로 하는 메모리 관리 유닛.
  17. 제 14항에 있어서, 상기 물리적으로 어드레스된 명령들에 응답하여, 호스트 명령들로 변환된 타겟 명령들을 저장하는 시스템 메모리 페이지들의 서브 영역들을 지시하기 위한 수단은:
    물리적 어드레스들로 어드레스가능한 시스템 메모리의 페이지들에 대한 엔트리들을 저장하기 위한 테이블을 포함하며, 상기 각 엔트리는 변환된 타겟 명령들이 저장된 서브 영역들을 구별할 수 있는 지시자들을 포함하는 것을 특징으로 하는 메모리 관리 유닛.
  18. 제 17항에 있어서, 상기 서브 영역들은 동일한 크기이고, 그리고
    상기 각 엔트리의 지시자들은 변환된 타겟 명령들의 저장소와 상기 페이지의 서브 영역을 나타내는 위치를 구별하는 조건의 비트 위치들인 것을 특징으로 하는 메모리 관리 유닛.
  19. 제 16항에 있어서, 상기 물리적으로 어드레스된 명령들에 응답하여, 서브 영역들에 기입이 시도되는 경우, 타겟 명령들을 저장하는 시스템 메모리 페이지들의 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화 하기 위한 수단은:
    호스트 명령들로 변환된 타겟 명령들을 저장하는 서브 영역에 대한 기입에 응답하여, 상기 서브 영역들에 저장된 타겟 명령들로부터 변환된 호스트 명령들을 무효화 하기 위한 예외 관리 수단을 포함하는 것을 특징으로 하는 메모리 관리 유닛.
  20. 제 19항에 있어서, 상기 페이지들에 기입이 시도되는 경우, 변환된 타겟 명령들로부터 변환되는 호스트 명령들을 저장하는 시스템 메모리의 페이지들을 무효화 하기 위한 예외 처리 수단을 더 포함하는 것을 특징으로 하는 메모리 관리 유닛.
KR1020027004731A 1999-10-13 2000-09-06 미세 단위 변환 식별 KR100573446B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/417,356 1999-10-13
US09/417,356 US6363336B1 (en) 1999-10-13 1999-10-13 Fine grain translation discrimination

Publications (2)

Publication Number Publication Date
KR20020039685A KR20020039685A (ko) 2002-05-27
KR100573446B1 true KR100573446B1 (ko) 2006-04-26

Family

ID=23653666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027004731A KR100573446B1 (ko) 1999-10-13 2000-09-06 미세 단위 변환 식별

Country Status (9)

Country Link
US (1) US6363336B1 (ko)
EP (1) EP1240582B1 (ko)
JP (2) JP4275884B2 (ko)
KR (1) KR100573446B1 (ko)
CN (1) CN1196994C (ko)
AT (1) ATE377212T1 (ko)
CA (1) CA2384254C (ko)
DE (1) DE60036960T2 (ko)
WO (1) WO2001027743A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
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
US7680999B1 (en) * 2000-02-08 2010-03-16 Hewlett-Packard Development Company, L.P. Privilege promotion based on check of previous privilege level
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
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
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
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
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
JP4520790B2 (ja) * 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US8006055B2 (en) 2008-03-04 2011-08-23 Microsoft Corporation Fine granularity hierarchiacal memory protection
JP5246014B2 (ja) * 2009-04-22 2013-07-24 富士通株式会社 仮想化プログラム、仮想化処理方法及び装置
WO2014105030A1 (en) 2012-12-27 2014-07-03 Intel Corporation Handling of binary translated self modifying code and cross modifying code
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589092A (en) * 1983-12-12 1986-05-13 International Business Machines Corporation Data buffer having separate lock bit storage array
US4638462A (en) * 1985-01-31 1987-01-20 International Business Machines Corporation Self-timed precharge circuit
US4794522A (en) * 1985-09-30 1988-12-27 International Business Machines Corporation Method for detecting modified object code in an emulator
EP0425771A3 (en) * 1989-11-03 1992-09-02 International Business Machines Corporation An efficient mechanism for providing fine grain storage protection intervals
CA2078310A1 (en) * 1991-09-20 1993-03-21 Mark A. Kaufman Digital processor with distributed memory system
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US5548746A (en) * 1993-11-12 1996-08-20 International Business Machines Corporation Non-contiguous mapping of I/O addresses to use page protection of a process
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5577231A (en) * 1994-12-06 1996-11-19 International Business Machines Corporation Storage access authorization controls in a computer system using dynamic translation of large addresses
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
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

Also Published As

Publication number Publication date
EP1240582A1 (en) 2002-09-18
DE60036960D1 (de) 2007-12-13
JP2006244516A (ja) 2006-09-14
JP4275884B2 (ja) 2009-06-10
JP4417346B2 (ja) 2010-02-17
CN1196994C (zh) 2005-04-13
CN1399735A (zh) 2003-02-26
KR20020039685A (ko) 2002-05-27
DE60036960T2 (de) 2008-08-14
CA2384254A1 (en) 2001-04-19
ATE377212T1 (de) 2007-11-15
EP1240582A4 (en) 2005-08-31
CA2384254C (en) 2004-11-02
EP1240582B1 (en) 2007-10-31
JP2003511788A (ja) 2003-03-25
US6363336B1 (en) 2002-03-26
WO2001027743A1 (en) 2001-04-19

Similar Documents

Publication Publication Date Title
KR100573446B1 (ko) 미세 단위 변환 식별
US7360054B2 (en) Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems
KR960001946B1 (ko) 우선 변환 참조버퍼
JP4608484B2 (ja) ストレージの無効化、バッファ・エントリの消去
US7096460B1 (en) Switching to original modifiable instruction copy comparison check to validate prior translation when translated sub-area protection exception slows down operation
US8028341B2 (en) Providing extended memory protection
EP0118828B1 (en) Instruction fetch apparatus and method of operating same
JP2618175B2 (ja) キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
JPH10133950A (ja) ページテーブル更新方法および装置
JPH04232551A (ja) 多重仮想アドレス変換方法及び装置
GB2458295A (en) Cache way accessing using pointers in a micro tag
JP2004503870A (ja) 変換索引バッファのフラッシュフィルタ
US11138128B2 (en) Controlling guard tag checking in memory accesses
CN112639750A (zh) 用于控制存储器存取的装置及方法
US5764944A (en) Method and apparatus for TLB invalidation mechanism for protective page fault
US5226132A (en) Multiple virtual addressing using/comparing translation pairs of addresses comprising a space address and an origin address (sto) while using space registers as storage devices for a data processing system
EP0173909B1 (en) Look-aside buffer least recently used marker controller
US11397541B2 (en) Controlling guard tag checking in memory accesses
US6324635B1 (en) Method and apparatus for address paging emulation
Cohn et al. Protection by Hiding: Eliminating the Need for Kernel Mode
JPH02287850A (ja) 仮想メモリ装置
JPH0343652B2 (ko)

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20120329

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee