KR20020091066A - 프로세서에서 동작 모드의 확립 - Google Patents

프로세서에서 동작 모드의 확립 Download PDF

Info

Publication number
KR20020091066A
KR20020091066A KR1020027008331A KR20027008331A KR20020091066A KR 20020091066 A KR20020091066 A KR 20020091066A KR 1020027008331 A KR1020027008331 A KR 1020027008331A KR 20027008331 A KR20027008331 A KR 20027008331A KR 20020091066 A KR20020091066 A KR 20020091066A
Authority
KR
South Korea
Prior art keywords
processor
operating mode
segment
bit
mode
Prior art date
Application number
KR1020027008331A
Other languages
English (en)
Other versions
KR100636413B1 (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 KR20020091066A publication Critical patent/KR20020091066A/ko
Application granted granted Critical
Publication of KR100636413B1 publication Critical patent/KR100636413B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 주소 크기가 32비트보다 더 크고, 오퍼랜드 크기가 32비트 또는 64비트인 처리 모드를 지원하는 프로세서에 관한 것이다. 비록 상기 프로세서의 다양한 실시예들이 상기 처리 모드에서 32비트를 초과하여 64비트까지 및 64비트를 포함하는 주소 크기를 구현하지만, 상기 주소 크기는 일반적으로 64비트로서 표시된다. 상기 처리 모드는 제어 레지스터 내의 인에이블 지시를 인에이블 상태로 설정하고, 세그먼트 기술자 내의 제 1 동작 모드 지시와 제 2 동작 모드 지시를 기정의된 상태들로 설정함으로써 확립된다. 상기 제 1 동작 모드 지시와 제 2 동작 모드 지시의 다른 결합들이 (상기 인에이블 상태에 남아있는 인에이블 지시와 함께) x86 프로세서 아키텍쳐와의 호환성을 지닌 32비트 및 16비트 처리를 위한 호환가능 모드를 전송하는데 사용될 것이다.

Description

프로세서에서 동작 모드의 확립{ESTABLISHING AN OPERATING MODE IN A PROCESSOR}
x86 아키텍쳐(IA-32 아키텍쳐로 알려진)는 시장에서 폭넓은 채용과 성공을 거두고 있다. 따라서, x86 아키텍쳐에 따라 프로세서들을 설계하는 것이 이롭다. 이러한 프로세서들은 x86 아키텍쳐에 기록된 전체의 소프트웨어로부터 이득을 볼 것이다(이러한 프로세서들이 상기 소프트웨어를 실행하고, 따라서 상기 프로세서들을 채용하는 컴퓨터는 상당량의 사용가능한 소프트웨어로 인하여 시장에서 증가된 채용을 누리고 있기 때문에).
컴퓨터 시스템들이 발전함에 따라, 64비트 주소 크기(및 때로는 오퍼랜드 크기)가 바람직해지고 있다. 더 커진 주소 크기는 더 큰 메모리 밑넓이(상기 프로그램 내의 명령들과 상기 프로그램에 의해 동작되는 데이터에 의해 차지된 메모리의 양)을 지닌 프로그램들이 상기 메모리 공간에서 동작하도록 한다. 더 큰 오퍼랜드 크기는 더 큰 오퍼랜드들 상에서의 동작 또는 오퍼랜드에서의 보다 정확성을 가능하게 한다. 보다 강력한 응용 프로그램 및/또는 운영 시스템들은 64비트 주소 및/또는 오퍼랜드 크기들을 사용함으로써 가능할 것이다.
불행하게도, x86 아키텍쳐는 최대 32비트 오퍼랜드 크기와 32비트 주소 크기로 제한된다. 상기 오퍼랜드 크기는 상기 프로세서에 의해 동작되는 비트들의 개수를 나타낸다(예를 들면, 소스 또는 목적 오퍼랜드에서의 비트들의 개수). 상기 주소 크기는 상기 프로세서에 의해 생성된 주소에서의 비트들의 개수를 나타낸다. 따라서, x86 아키텍쳐를 채용하는 프로세서들은 64비트 주소 또는 오퍼랜드 크기들로부터 이득을 볼 수 있는 응용 프로그램들의 필요를 해결하지 못한다.
본 발명은 프로세서 분야에 관한 것으로서, 특히 프로세서에서의 주소와 오퍼랜드 크기들에 관한 것이다.
본 발명의 다른 목적들과 장점들은 하기의 도면을 참조하고 하기의 상세한 설명에서 명백해질 것이다:
도 1은 프로세서의 일실시예의 블록 다이아그램이다.
도 2는 32/64모드를 위한 세그먼트 기술자의 일실시예의 블록 다이아그램이다.
도 3은 호환가능 모드를 위한 세그먼트 기술자의 일실시예의 블록 다이아그램이다.
도 4는 도 1의 프로세서의 일실시예에 따른 호환가능 모드와 레거시 모드에서의 동작의 블록다이아그램이다.
도 5는 세그먼트 기술자와 제어 레지스터값들의 함수로서의 동작 모드들의 일실시예를 나타내는 표이다.
도 6은 디폴트 동작 모드들을 무효화하기 위한 명령 프리픽스의 사용의 일실시예를 나타내는 표이다.
도 7은 레지스터의 일실시예의 블록 다이아그램이다.
도 8은 전체 기술자 테이블과 국부 기술자 테이블의 일실시예를 나타내는 다이아그램이다.
도 9는 32/64 호출 게이트 기술자의 일실시예의 블록 다이아그램이다.
도 10은 명령 포멧의 블록 다이아그램이다.
도 11은 도 1의 프로세서를 포함하는 컴퓨터 시스템의 일실시예의 블록 다이아그램이다.
도 12는 도 1의 프로세서를 포함하는 컴퓨터 시스템의 다른 실시예의 블록 다이아그램이다.
본 발명은 다양한 변경들과 대체가능한 형태로의 변형이 용이하고, 그 특정 실시예는 도면들에서 예시적인 방법으로 도시되고 상세히 설명될 것이다. 상기 도면과 그에 대한 상세한 설명은 본 발명은 특정 형태로 제한하도록 의도된 것이 아니고, 본 발명은 첨부된 청구범위에 의해 정의된 본 발명의 정신과 범위 내에서의 모든 변경들과 균등물들과 대체 형태를 포함하는 것임이 인식되어야 한다.
상술된 문제들은 하기의 프로세서에 의해 대부분 해결된다. 상기 프로세서는 상기 주소 크기가 32비트보다 크고 상기 오퍼랜드 크기가 32 또는 64비트인 제 1 처리 모드를 지원한다. 비록 상기 프로세서의 많은 실시예들이 제 1 처리 모드에서 32비트를 초과하여 그 이상인 64비트를 포함하는 주소 크기를 구현하지만, 상기 주소 크기는 64비트로서 명목상 지적된다. 상기 제 1 처리 모드는 제어 레지스터 내의 인에이블 지시를 인에이블된 상태로 놓음으로써 또한 세그먼트 기술자(descriptor) 내의 제 1 동작 모드 지시와 제 2 동작 모드 지시를 기정의된 상태들로 설정함으로써 확립된다. 제 1 동작 모드 지시와 제 2 동작 모드 지시의 다른 조합은 x86 프로세서 아키텍쳐와 호환가능한 32 비트 및 16비트 처리를 위해 화환가능 모드들을 제공하는데 사용될 것이다(상기 인에이블된 상태에 잔존하는 인에이블 지시로).
장점으로, 64비트 처리는 x86 프로세서 아키텍쳐와의 호환성을 제공하고 따라서 x86 프로세서 아키텍쳐에 기록된 현존하는 코드를 지원할 때 제공될 것이다.
또한, 제 1 처리 모드를 위한 인에이블 지시가 상기 제어 레지스터 내의 인에이블된 상태에 남아있는 동안 32 비트 및 16 비트 처리를 위한 호환가능 모드들을 제공함으로써, 소프트웨어 호환가능성은 단순해질 것이다. 예를 들면, 제 1 처리 모드를 이용하기 위해 코드된 운영 시스템은 32 또는 16 비트 모드로 기록된 어플리케이션들을 착수할 것이다. 상기 프로세서는 운영 시스템 코드를 실행하는 동안 제 1 처리 모드에서 동작할 것이다. 어플리케이션 코드를 실행하는 동안, 상기 프로세서는 32 또는 16비트 모드에서 동작할 것이다(대응하는 세그먼트 기술자들에서의 제 1 및 제 2 동작 모드에 의해 지시되기 때문에). 그러나, 상기 운영 시스템에 대한 호출이 수행되는 때 또는 예외 또는 인터럽트가 운영 시스템 코드가 실행되도록 하는 때, 상기 인에이블 지시는 상기 프로세서에게 상기 운영 시스템 코드가 제 1 처리 모드에 있을 것이고, 따라서 상기 제 1 처리 모드가 스위치에서 확립되도록 할 것이라는 것을 지시할 것이다(상기 운영 시스템에 대응하는 세그먼트 기술자에서의 제 1 및 제 2 동작 모드를 기준으로 하여).
따라서, 상기 프로세서는 만약 상기 제어 레지스터 내의 인에이블 지시가 디스에이블 상태에 있다면 상기 16 및 32비트 x86 동작 모드들을 지원할 것이다. 제 1 동작 모드 지시는 만약 상기 인에이블 지시가 디스에이블된다면 정의되지 않을 것이고, 상기 제 2 동작 모드 지시는 상기 프로세서의 동작 모드가 16 또는 32 비트인지를 결정한다. 이러한 모드들은 예를 들면 만약 상기 프로세서가 다른 방식으로 제 1 동작 모드 지시를 정의하는 세그먼트 기술자를 지원한다면, 사용될 것이다.
널리 말하면, 프로세서가 발명된다. 상기 프로세서는 세그먼트 레지스터와 제어 레지스터를 구비한다. 상기 세그먼트 레지스터는 제 1 동작 모드 지시와 제 2 동작 모드 지시를 포함하는 세그먼트 기술자를 식별하는 세그먼트 선택자(selector)를 저장하도록 된다. 상기 제어 레지스터는 인에이블 지시를 저장하도록 된다. 상기 인에이블 지시와, 상기 제 1 동작 모드 지시 및 제 2 동작 모드 지시에 응답하여, 상기 프로세서는 동작 모드를 확립하도록 된다.
또한, 인에이블 지시를 저장하도록 된 제어 레지스터와 세그먼트 레지스터를 구비하는 프로세서가 발명된다. 상기 세그먼트 레지스터는 세그먼트 기술자로부터의 정보와 세그먼트 선택자를 저장하도록 된다. 상기 세그먼트 선택자는 상기 프로세서가 연결된 메모리 내에 저장된 세그먼트 기술자 테이블에 대한 인덱스를 구비하고, 상기 세그먼트 기술자는 상기 인덱스에 의해 지시된 엔트리 내의 세그먼트 기술자 내에 저장된다. 상기 프로세서는 상기 세그먼트 선택자에 응답하여 상기 세그먼트 기술자 테이블로부터 상기 세그먼트 기술자를 판독하도록 되고, 상기 세그먼트 기술자는 동작 모드 지시를 포함한다. 상기 프로세서는 가상 주소들이 인에이블 상태에 있는 인에이블 지시와 제 1 상태에 있는 동작 모드 지시에 응답하여 32비트보다 더 큰 경우의 동작 모드에서 동작하도록 된다.
또한, 방법이 발명된다. 동작 모드는 상기 프로세서 내의 제어 레지스터 내의 인에이블 지시와, 세그먼트 기술자 내의 제 1 동작 모드 지시 및 상기 세그먼트 기술자 내의 제 2 동작 모드 지시에 응답하여 프로세서 내에 확립된다. 오퍼랜드들이 인출되고 주소들이 상기 동작 모드에 응답하여 생성된다.
도 1은 프로세서(10)의 일실시예를 나타내는 블록 다이아그램이다. 다른 실시예들이 가능하고 계획된다. 도 1의 실시예에서, 상기 프로세서(10)는 명령 캐시(12)와, 실행 코어(14)와 데이터 캐시(16), 외부 인터페이스 유닛(18)과, 메모리 관리 유닛(memory management unit:MMU)(20) 및 레지스터 파일(22)을 구비한다. 도시된 실시예에서, 상기 MMU(20)는 일련의 세그먼트 레지스터들(24)과, 제 1 제어 레지스터(26)와 제 2 제어 레지스터(28), 국부 기술자 테이블 레지스터(local descriptor table register: LDTR)(30) 및 전체기술자 테이블 레지스터(global descriptor table register: GDTR)(32)를 구비한다. 상기 명령 캐시(12)는 상기 외부 인터페이스 유닛(18)과 실행 코어(14) 및 MMU(20)에 연결된다. 상기 실행 코어(14)는 추가적으로 상기 MMU(20)와, 레지스터 파일(22) 및 데이터 캐시(16)에연결된다. 상기 데이터 캐시(16)는 추가적으로 상기 MMU(20)와 외부 인터페이스 유닛(18)에 연결된다. 상기 외부 인터페이스 유닛(18)은 추가적으로 상기 MMU(20)와 외부 인터페이스에 연결된다.
널리 말하면, 상기 프로세서(10)는 x86 아키텍쳐와 호환가능하고, 64 비트 처리를 지원하기 위해 추가적인 아키텍쳐 특징들을 구비하는 프로세서 아키텍쳐를 채용한다. 상기 프로세서(10)는 현재 실행 코드에 대응하는 코드 세그먼트 기술자 내에 저장된 정보에 응답하여, 또한 하나 또는 그 이상의 제어 레지스터들 내에 저장된 하나 또는 그 이상의 인에이블 지시들에 응답하여 동작 모드를 확립하도록 된다. 여기에서, "동작 모드"는 다양한 프로그램가능하게 선택가능한 프로세서 특성들을 위한 디폴트값들을 나타낸다. 예를 들면, 상기 동작 모드는 디폴트 오퍼랜드 크기 및 디폴트 주소 크기를 나타낸다. 상기 디폴트 오퍼랜드 크기는 만약 명령의 인코딩이 상기 디폴트를 무효화하지 못하면, 명령의 오퍼랜드 내의 비트들의 개수를 나타낸다. 상기 디폴트 주소 크기는 만약 명령의 인코딩이 상기 디폴트를 무효화하지 못하면 명령의 메모리 오퍼랜드의 주소에서의 비트들의 개수를 나타낸다. 상기 디폴트 주소 크기는 메모리 오퍼랜드들의 적어도 가상 주소의 크기를 나타내고, 물리적 주소의 크기를 나타낸다. 또한, 상기 물리적 주소의 크기는 상기 디폴트 주소 크기에 독립적이고, 대신에 하기의 LME 비트에 종속하고(예를 들면, 상기 물리적 주소는 만약 상기 LME 비트들이 소거되면 32비트이고, 만약 상기 LME 비트가 세트되면, 32비트보다 더 크고 64비트 보다 작은 구현-종속 크기일 것이다), 또는 다른 제어 비트에 종속한다(예를 들면 다른 제어 레지스터 내의 물리적 주소 확장 비트, 또는 PAE 비트). 여기에서, "가상 주소(virtual address)"는 주소 번역 메커니즘(예를 들면 페이징 메커니즘)을 통하여 "물리적 주소"로 번역되기 이전에 생성된 주소로서, 메모리에 접근하기 위해 사용된 주소이다. 또한, 여기에서, "세그먼트 기술자"는 소프트웨어에 의해 생성되고 메모리의 세그먼트에 대한 접근 제어 및 상태를 정의하기 위해 상기 프로세서에 의해 사용되는 데이터 구조이다. "세그먼트 기술자 테이블"은 다수의 엔트리들을 지닌 메모리 내의 테이블이고, 각 엔트리는 세그먼트 기술자를 저장할 수 있다.
개시된 실시예에서, 상기 MMU(20)는 동작 모드를 생성하고 상기 동작 모드를 실행 코어(14)로 전송한다. 상기 실행 코어(14)는 상기 동작 모드를 사용하여 명령들을 실행한다. 특히, 상기 실행 코어(14)는 만약 특정 명령의 인코딩이 상기 디폴트 오퍼랜드 크기를 무효화하지 못하면, 상기 레지스터 파일(22) 또는 메모리로부터 (만약 상기 메모리 오퍼랜드들이 캐시가능하고 적중하면(hit) 데이터 캐시(16)를 통하여, 또는 만약 상기 메모리 오퍼랜드들이 캐시가능하지 않거나 데이터 캐시(16)를 놓치면 상기 외부 인터페이스 유닛(18)을 통하여) 상기 디폴트 오퍼랜드 크기를 지닌 오퍼랜드들을 인출하고, 이 경우 무효화 오퍼랜드 크기가 사용된다. 유사하게, 상기 실행 코어(14)는 메모리 오퍼랜드들의 주소들을 생성하고, 이때 상기 주소들은 만약 특정 명령의 인코딩이 상기 디폴트 주소 크기를 무효화하지 않으면, 상기 디폴트 주소 크기를 지니고, 이 경우 상기 무효화 주소 크기가 사용된다. 다른 실시예들에서, 상기 동작 모드를 생성하기 위해 사용된 정보는 상기 작동 모드를 사용하는 프로세서들(10)의 부분들(예를 들면, 실행 코어(14))에서 국부적으로 새도되고(shadowed), 상기 동작 모드는 상기 국부 새도 복사들로부터 결정될 것이다.
상술된 바와 같이, 상기 MMU(20)는 실행될 코드에 대응하는 코드 세그먼트 기술자에 응답하여 또한 제어 레지스터들 내의 하나 또는 그 이상의 값들에 응답하여 상기 동작 모드를 생성한다. 상기 코드 세그먼트 기술자로부터의 정보는 상기 세그먼트 레지스터들(24) 중의 하나에 저장된다(CS 즉 코드 세그먼트(code segment)로 지시되는 레지스터). 또한, 상기 제어 레지스터(26)는 상기 디폴트 크기가 32비트보다 큰 동작 모드("32/64 모드") 뿐만 아니라 32비트 및 16비트 동작 모드들을 위한 소정의 호환가능 모드들을 인에이블시키는데 사용되는 인에이블 지시(LME)를 저장한다. 상기 디폴트 오퍼랜드 크기는 32/64 모드에서의 32비트일 것이나, 명령들은 원하는 때 64 비트 오퍼랜드 크기로 상기 디폴트 32 비트 오퍼랜드 크기를 무효화할 것이다. 만약 상기 LME 지시가 디스에이블 상태이면, 32/64 모드는 디스에이블된다. 일실시예에서, 32/64 모드에서의 상기 디폴트 주소 크기는 구현-종속적일 것이나, 그 이상의 값일 것이고, 64비트를 포함할 것이다. 또한, 상기 가상 주소의 크기는 그 구현에서의 물리적 주소의 크기와 다를 것이다.
인에이블 지시들은 상기 비트의 세트 상태인 인에이블된 상태와 상기 비트의 소거 상태인 디스에이블된 상태를 지닌 비트들로서 개시됨이 인식된다. 그러나, 다수의 비트들이 사용되는 인코딩 및 상기 인에이블된 상태가 소거 상태이고 디스에이블된 상태가 세트 상태인 인코딩을 포함하여 다양한 인코딩이 가능하다. 따라서, 본 설명의 남은 부분은 상기 인에이블된 상태가 세트이고 상기 디스에이블된 상태가 소거(clear)인 LME 비트로서 상기 제어 레지스터(26) 내의 상기 LME 지시를 지시한다. 그러나, 상기 LME 지시의 다른 인코딩이 상술된 바와 같이, 고려될 수 있다.
상기 세그먼트 레지스터(24)는 상기 프로세서(10)에 의해 실행되는 코드에 의해 현재 사용중인 상기 세그먼트 기술자들로부터의 정보를 저장한다. 상술된 바와 같이, CS는 세그먼트 레지스터들(24) 중의 하나이고, 메모리의 코드 세그먼트를 특정한다. 상기 코드 세그먼트는 실행되는 코드를 저장한다. 다른 세그먼트 레지스터들은 다양한 데이터 세그먼트들(예를 들면, SS 세그먼트 레지스터에 의해 정의된 스택 데이터 세그먼트 및 DS, ES, FS, GS 세그먼트 레지스터들에 의해 정의된 4개까지의 데이터 세그먼트들)을 정의할 수 있다. 도 1은 선택자 필드(24AA)와 기술자 필드(24AB)를 포함하는 예시적인 세그먼트 레지스터(24A)의 내용을 도시한다. 상기 선택자 필드(24AA)는 상기 실행 코어(14)에 의해 실행되는 소정의 세그먼트 로드 명령에 응답하여 특정 세그먼트를 활성화시키기 위해 세그먼트 선택자로 로드된다. 상기 세그먼트 선택자는 메모리 내의 세그먼트 기술자 테이블 내에서 상기 세그먼트 기술자를 식별한다. 특히, 상기 프로세서(10)는 2개의 세그먼트 기술자 테이블들을 채용한다: 국부 기술자 테이블과 전체 기술자 테이블. 상기 국부 기술자 테이블의 베이스 주소는 상기 LDTR(30) 내에 저장된다. 유사하게, 상기 전체 기술자 테이블의 베이스 주소는 GDTR(32) 내에 저장된다. 상기 세그먼트 선택자 내의 비트(테이블 지시 비트)는 상기 기술자 테이블을 선택하고, 상기 세그먼트 선택자의 남은 부분은 상기 선택된 테이블로의 인덱스로서 사용된다. 명령이 세그먼트 선택자를 상기 세그먼트 레지스터들(24) 중의 하나로 로드한 때, 상기 MMU(20)는 상기 선택된 세그먼트 기술자 테이블로부터 대응하는 세그먼트 기술자를 판독하고, 상기 세그먼트 기술자로부터의 정보를 상기 세그먼트 기술자 필드(예를 들면 상기 세그먼트 레지스터(24A)를 위한 세그먼트 기술자 필드(24AB))에 저장한다. 상기 세그먼트 기술자 필드 내에 저장된 정보는 모든 세그먼트 기술자를 포함하고, 상기 세그먼트 기술자의 적절한 하부집합도 구비한다. 또한, 상기 세그먼트 기술자 또는 다른 소스들로부터 유도된 다른 정보는 상기 세그먼트 기술자 필드에 저장될 것이다. 예를 들면, 일실시예는 상기 코드 세그먼트 기술자로부터의 동작 모드 지시들을 디코드하고 상기 동작 모드 지시들의 원래 값들이 아닌 상기 디코드된 값을 저장한다. 만약 명령이 CS가 세그먼트 선택자로 로드되도록 한다면, 상기 코드 세그먼트는 변화하고, 따라서, 상기 프로세서(10)의 동작 모드도 변화한다. 세그먼트 기술자 테이블들이 하기에서 상세하게 설명된다.
일실시예에서, 오직 상기 CS 세그먼트 레지스터만이 32/64 모드에서 사용된다. 상기 데이터 세그먼트 레지스터들은 무시된다. 16 및 32 비트 모드에서, 상기 코드 세그먼트와 데이터 세그먼트들이 활성화될 것이다. 또한, 상기 제어 레지스터(28) 내의 제 2 인에이블 지시(PE)는 상기 MMU(20)의 동작에 영향을 미친다. 상기 PE 인에이블 지시는 보호 모드를 인에이블시키기 위해 사용될 것이고, 이때 세그먼테이션 및/또는 페이징 주소 번역 메커니즘이 사용될 것이다. 만약 상기 PE 인에이블 지시가 디스에이블된 상태에 있다면, 세그먼테이션 및 페이징 메커니즘은 디스에이블되고, 상기 프로세서(10)는 "실제 모드(real mode)"에 있다(이때상기 실행 코어(14)에 의해 생성된 주소들은 물리적 주소들이다). 상기 LME 지시와 유사하게, 상기 PE 지시는 인에이블 상태가 세트된 비트이고, 디스에이블된 상태가 소거된 비트인 비트이다. 그러나, 다른 실시예들도 상술된 바와 같이 고려될 수 있다.
상기 MMU(20)는 추가적인 하드웨어 메커니즘들을 채용함이 인식되어야 한다. 예를 들면, 상기 MMU(20)는 가상 주소들로부터 물리적 주소들로의 페이징 주소 번역을 구현하기 위한 페이징 하드웨어를 구비한다. 상기 페이징 하드웨어는 페이지 번역들을 저장하기 위한 번역 룩어사이드 버퍼(translation lookaside buffer: TLB)를 구비할 것이다.
상기 제어 레지스터들(26),(28)이 아키텍쳐 제어 레지스터들로서 구현될 것이다(예를 들면, 상기 제어 레지스터(26)는 CR4이고, 상기 제어 레지스터(28)는 CR0일 것이다). 또한, 상기 제어 레지스터들 중의 하나 또는 모두는 모델 특정 레지스터들로서 구현됨으로써 32/64 모드를 간섭함이 없이 상기 아키텍쳐 제어 레지스터들의 다른 사용들을 가능하게 한다.
일반적으로, 상기 명령 캐시(12)는 명령 바이트들을 저장하기 위한 고속 캐기 메모리이다. 상기 실행 코어(14)는 실행을 위해 상기 명령 캐시(12)로부터 명령들을 인출한다. 상기 명령 캐시(12)는 직접-사상, 세트 어소시어티브 및 완전 연관 구성들을 포함하여, 적절한 캐시 구성을 채용한다. 만약 명령 패치가 명령 캐시(12)에서 놓치면, 상기 명령 캐시(12)는 상기 명령 캐시(12)로의 놓친 캐시 라인을 수행하기 위해 상기 외부 인터페이스 유닛(18)과 통신할 것이다. 또한, 상기명령 캐시(12)는 상기 명령 캐시(12)로부터 인출된 가상 주소들을 위해 물리적 주소 번역들을 수신하기 위해 상기 MMU(20)와 통신할 것이다.
상기 실행 코어(14)는 상기 명령 캐시(12)로부터 인출된 명령들을 실행한다. 상기 실행 코어(14)는 상기 레지스터 파일(22)로부터 레지스터 오퍼랜드들을 인출하고 상기 레지스터 파일(22) 내의 목적 레지스터들을 갱신한다. 상기 레지스터 오퍼랜드들의 크기는 동작 모드에 의해 또한 특정 명령에 대한 동작 모드의 무효화에 의해 제어된다. 유사하게, 상기 실행 코어(14)는 상기 데이터 캐시(16)로부터 메모리 오퍼랜드들을 인출하고, 상기 메모리 오퍼랜드들의 캐시가능성에 의존하고, 상기 데이터 캐시(16)에서 적중하여, 상기 데이터 캐시(16) 내의 목적 메모리 위치들을 갱신한다. 상기 메모리 오퍼랜드들의 크기는 상기 동작 모드에 의해서, 또한 특정 명령을 위한 상기 동작 모드의 무효화에 의해 유사하게 제어된다. 또한, 상기 실행 코어(14)에 의해 생성된 상기 메모리 오퍼랜드들의 주소들의 크기는 상기 동작 모드에 의해서 또한 특정 명령을 위한 상기 동작 모드의 무효화에 의해서 제어된다.
상기 실행 코어(14)는 적절한 구성을 채용할 것이다. 예를 들면, 상기 실행 코어(14)는 슈퍼파이프라인(superpipelined) 코어, 슈퍼스칼라 코어 또는 이들의 조합일 것이다. 상기 실행 코어(14)는 설계 선택에 따라 추리적(speculative) 실행 순서를 벗어나서 또는 실행 순서로 채용할 것이다.
상기 레지스터 파일(22)은 상기 프로세서(10)의 동작 모드와 특정 명령에 대한 무효화에 의해 나타나는 것과 같아. 64비트, 32비트, 16비트 또는 8비트로서 접근될 수 있는 64비트 레지스터들을 구비할 것이다. 일실시예에서의 레지스터 포멧이 도 7에 관련되어 하기에서 개시된다. 상기 레지스터 파일(22)에 포함된 레지스터들은 LEAX, LEBX, LECX, LEDX, LEDI, LESI, LESP 및 LEBP 레지스터들을 구비할 것이다. 상기 레지스터 파일(22)은 추가적으로 LEIP 레지스터를 구비할 것이다. 또한, 상기 실행 코어(14)는 상기 레지스터 파일(22) 내에서 아키텍쳐 레지스터로 사상될 수 있는 레지스터 내의 레지스터 이름변경(renaming)의 형태를 채용할 것이다. 상기 레지스터 파일(22) 내의 레지스터들의 개수는 이러한 실시예에 있어서 구현 종속적이다.
상기 데이터 캐시(16)는 데이터를 저장하도록 된 고속 캐시 메모리이다. 상기 데이터 캐시(16)는 직접-사상, 세트 어소시어티브, 완전연관 4구성들을 구비하는 적절한 캐시 구성을 채용할 것이다. 만약 데이터 인출이나 갱신이 상기 데이터 캐시(16)에서 놓쳐지면, 상기 데이터 캐시(16)는 상기 데이터 캐시(16)에 상기 놓쳐진 캐시 라인을 채우기 위해 외부 인터페이스 유닛(18)과 통신할 것이다. 또한, 만약 상기 데이터 캐시(16)가 라이트백 캐시 방식(writeback caching policy)을 채용하면, 상기 데이터 캐시(16)로부터 버려지는 갱신된 캐시 라인들은 상기 외부 인터페이스 유닛(18)과 통신됨으로써 메모리로 다시 기록된다. 상기 데이터 캐시(16)는 상기 MMU(20)와 통신함으로써 상기 데이터 캐시(16)로 제시되는 가상 주소들을 위한 물리적 주소 번역들을 수신하도록 된다.
상기 외부 인터페이스 유닛(18)은 상기 프로세서(10)의 외부인 상기 시스템의 부분들과 통신한다. 상기 외부 인터페이스 유닛(18)은 상술된 바와 같이, 명령캐시(12)와 데이터 캐시(16)를 위해 캐시 라인들을 전달하고, 상기 MMU(20)와 통신한다. 예를 들면, 상기 외부 인터페이스 유닛(18)은 상기 MMU(20) 대신에 상기 세그먼트 기술자 테이블들 및/또는 페이징 테이블들에 접근할 것이다.
상기 프로세서(10)는 원하다면, 집적 레벨2(L2) 캐시를 구비할 수 있음이 인식되어야 한다. 또한, 상기 외부 인터페이스 유닛(18)은 상기 시스템과의 통신에 추가하여, 백사이드 캐시와 통신하도록 된다.
도 2는 32/64 모드를 위한 코드 세그먼트 기술자의 일실시예의 블록 다이아그램을 도시한다. 다른 실시예들이 가능하고 고려된다. 도 2의 실시예에서, 상기 코드 세그먼트 기술자(40)는 최하위 4바이트 위에 나타난 최상위 4 바이트로 이루어진 8바이트로 구성된다. 상기 최상위 4바이트는 상기 최하위 4바이트보다 수적으로 큰 주소에 저장된다. 4 바이트의 각 그룹의 최상위 비트는 도 2의 비트 31로 나타나고(또한 도 3), 상기 최하위 비트는 비트 0으로 나타난다. 상기 4 바이트 내의 짧은 수직 라인들은 각 비트의 한계를 정하고, 긴 수직 선들은 비트의 한계를 정하고 또한 필드의 한계를 정한다(도 2 및 도 3).
하기의 도 3에 개시된 32비트 및 16비트 코드 세그먼트 기술자들과 달리, 상기 코드 세그먼트 기술자(40)는 베이스 주소 또는 리미트(limit)를 구비하지 않는다. 상기 프로세서(10)는 32/64비트 모드를 위해 (32비트 및 16비트 모드들에서 채용되는 세그먼트 선형 주소 공간이 아닌) 플렛 가상 주소 공간을 채용한다. 따라서, 상기 베이스 주소와 리미트를 저장하는 코드 세그먼트 기술자(40)의 일부분들은 상기 세그먼트 기술자(40)에 예약된다. 세그먼테이션을 통하여 제공된 가상 주소는 본 명세서에서 "선형 주소(linear address)"로 지시됨이 인식되어야 한다. 상기 용어 "가상 주소"는 비-세그먼트 아키텍쳐에서 생성된 선형 주소들과 다른 가상 주소들을 포함하고, 메모리의 주소지정에 실제적으로 사용되는 물리적 주소로 번역 메커니즘을 통하여 번역되는 모든 주소를 포함한다.
상기 세그먼트 기술자(40)는 D 비트(42)와, L 비트(44)(32/64 모드 코드 세그먼트를 위해 1로 설정), 사용가능한 비트(available bit: AVL)(46), 현재(present: P) 비트(48)과, 기술자 특권 레벨(descriptor privilege level: DPL)(50) 및 타입 필드(52)를 구비한다. 상기 D 비트(42)와 L 비트(44)는 하기의 도 5에 개시된 바와 같이, 상기 프로세서(10)의 동작 모드를 결정하는데 사용된다. 상기 AVL 비트(46)는 시스템 소프트웨어(예를 들면, 운영 시스템)에 의한 사용을 위해 사용가능하다. 상기 P 비트(48)는 상기 세그먼트가 메모리에 존재하는지의 여부를 나타내는데 사용된다. 만약 상기 P 비트(48)가 설정되었으면, 상기 세그먼트는 존재하고 코드는 상기 세그먼트로부터 인출될 것이다. 만약 상기 P 비트(48)가 소거되었으면, 상기 세그먼트는 존재하지 않으며, 상기 세그먼트를 메모리로 로드하기 위해 예외가 생성된다(예를 들면, 디스크 저장장소로부터 또는 네트워크 연결을 통하여). 상기 DLP는 상기 세그먼트의 특권 레벨을 나타낸다. 상기 프로세서(10)는 4개의 특권 레벨들을 채용한다(레벨 0이 가장 높은 특권 레벨이고, DPL 필드 내에 0 내지 3으로서 인코드된다). 소정의 명령들과 프로세서 자원들(예를 들면, 환경설정 및 제어 레지스터들)은 가장 높은 특권 레벨에서 실행가능하거나 접근될 수 있고, 더 낮은 특권 레벨들에서 상기 명령들을 실행하거나 상기 자원들에 접근하려고 시도한다. 상기 코드 세그먼트(40)로부터의 정보가 상기 CS 세그먼트 레지스터로 로드되는 때, 상기 DPL은 상기 프로세서(10)의 현재 특권 레벨(current privilege level: CPL)이 된다. 상기 타입 필드(52)는 세그먼트의 형태(type)를 인코드한다. 코드 세그먼트들에 있어서, 상기 타입 필드(52)의 최상위비트의 2개 비트들이 설정되고(시스템 세그먼트로부터 코드 또는 데이터 세그먼트를 구별하는 최상위 비트와, 데이터 세그먼트로부터 코드 세그먼트를 구별하는 두번째의 최상위 비트), 나머지 비트들은 추가적인 세그먼트 형태 정보를 인코드할 것이다(예를 들면, 실행만 하거나, 실행하고 판독하고나, 실행하고 판독만하거나, 일치시키고 상기 코드 세그먼트가 접근되고 있는지).
상기 코드 세그먼트 기술자에서의 다수의 지시들(indications)은 소정의 의미를 지닌 설정 또는 소거 값들을 지닌 비트들로서 나타나고, 다른 실시예들은 반대의 인코딩을 채용할 수 있고, 다수의 비트들을 사용할 수 있다. 따라서, 예를 들면, 상기 D 비트(42)와 L 비트(44)는 상술된 인에이블 지시와 유사한, 하나 또는 그 이상의 비트들인 동작 모드 지시의 일실시예일 것이다.
도 3은 32 및 16 비트 호환가능 모드에 있어서의 코드 세그먼트 기술자(54)의 일실시예의 블록 다이아그램이다. 다른 실시예들이 가능하고 고려된다. 도 2의 실시예에서, 상기 코드 세그먼트 기술자(54)는 최하위 4바이트 위에 개시된 최상위 4바이트로 이루어진 8바이트로 구성된다.
상기 코드 세그먼트 기술자(54)는 상술된 코드 세그먼트 기술자(40)와 유사한, D 비트(42)와, L 비트(44)와, AVL 비트(46)와, P 비트(48)와, DPL(50) 및 타입필드(52)를 구비한다. 또한, 상기 코드 세그먼트 기술자(54)는 베이스 주소 필드(참조 번호 56A, 56B, 56C), 리미트 필드(참조 번호 57A, 57B) 및 G 비트(58)를 구비한다. 상기 베이스 주소 필드는 페이징 번역 메커니즘을 통하여 물리적 주소로 선택적으로 번역되는 명령의 선형 주소를 형성하기 위해 상기 논리 인출 주소(logical fetch address)(상기 LEIP 레지스터에 저장된)에 부가되는 베이스 주소를 저장한다. 상기 리미트 필드는 상기 세그먼트의 크기를 정의하는 세그먼트 리미트를 저장한다. 상기 세그먼트 리미트보다 더 큰 논리 주소에서 바이트에 접근하려는 시도는 허용되지 않고 예외를 야기한다. 상기 G 비트(58)는 상기 세그먼트 리미트 필드의 스켈링을 결정한다. 만약 상기 G 비트(58)가 설정되었으면, 상기 리미트는 4K바이트 페이지로 조정된다(예를 들면 12개의 최하위 0들이 상기 리미트 필드 내의 상기 리미트에 부가된다). 만약 상기 G 비트(58)가 소거되었으면, 상기 리미트는 있는 그대로 사용된다.
32/64 모드가 상기 제어 레지스터(26) 내의 상기 LME 비트를 통하여 인에이블되지 않은 때, 32 및 16비트 모드들에 있어서의 코드 세그먼트 기술자들은 상기 L 비트가 예약되어지고 0으로 정의되는 점을 제외하면, 상기 코드 세그먼트 기술자(54)와 유사할 것임이 인식되어야 한다. 또한, 일실시예에 따른 32 및 16비트 모드들(상기 LME 비트가 설정된 호환가능 모드와 상기 LME 비트가 소거된 모드)에서, 상기 데이터 세그먼트들이 사용된다. 상기 데이터 세그먼트 기술자들은 상기 D 비트(42)가 상기 세그먼트의 상위 경계를 지시하거나 디폴트 스택 크기(스택 세그먼트들에 대한)를 정의하도록 되어지는 점을 제외하면, 상기 코드 세그먼트 기술자(54)와 유사할 것이다.
도 4는 상기 32/64모드 및 32 및 16 비트 모드들을 구현할 때의 높은 정도의 유연성을 가능하게 하기 위해 상기 제어 레지스터(26) 내의 상기 LME 비트와 상기 호환가능 모드들의 예시적인 사용을 나타내는 다이아그램이다. 박스(60)는 상기 LME 비트가 설정된 때의 예시적인 동작을 나타내고, 박스(62)는 상기 LME가 소거된 때의 예시적인 동작을 나타낸다.
상기 박스(60)에 도시된 바와 같이, 상기 LME 비트가 설정된 때 지원되는 상기 호환가능 모드들은 32비트 응용 프로그램(즉, 32비트 오퍼랜드와 주소 크기를 사용하여 기록된 응용 프로그램)으로 동작하는 64비트 운영 시스템(즉, 32비트 및/또는 64비트의 데이터 오퍼랜드를 초과하는 가상 및 물리적 주소 공간들을 이용하기 위해 고안된 운영 시스템)을 가능하게 할 것이다. 상기 운영 시스템을 위한 코드 세그먼트는 도 2에 도시된 상기 32/64 모드 코드 세그먼트 기술자(40)에 의해 정의될 수 있고, 따라서, 상기 L 비트가 설정된다. 따라서, 상기 운영 시스템은 상기 운영 시스템에 의해 관리되는 (예를 들면 세그먼트 기술자 테이블들과 페이징 번역 테이블들을 포함하여) 데이터 구조들과 운영 시스템 코드를 위한 확장된 가상 주소 공간과 물리적 주소 공간을 이용한다. 상기 운영 시스템은 상기 디폴트 32비트 오퍼랜드 크기를 무효화하는 명령 인코딩들을 사용하여 32/64 모드로 정의된 64비트 데이터 형태를 사용할 것이다. 또한, 상기 운영 시스템은 상기 세그먼트 기술자 테이블 내의 하나 또는 그 이상의 호환가능 모드 세그먼트 기술자들(L비트는 소거되고, D비트는 설정되고, 예를 들면 도 2에 도시된 세그먼트 기술자)을 확립함으로써 또한 상기 호환가능 모드 세그먼트들 중의 하나로 분기함으로써 32비트 응용 프로그램을 개시한다. 유사하게, 상기 운영 시스템은 상기 세그먼트 기술자 테이블 내의 하나 또는 그 이상의 16비트 호환가능 모드 세그먼트 기술자들(L비트는 소거되고, D비트는 설정되고, 예를 들면 도 2에 도시된 세그먼트 기술자(54))을 확립함으로써 또한 상기 호환가능 모드 세그먼트들 중의 하나로 분기함으로써 16비트 응용 프로그램을 개시한다. 따라서, 64비트 운영 시스템은 상기 호환가능 모드에서 현존하는 32비트 및 16비트 응용 프로그램들을 실행할 수 있는 능력을 보유한다. 특정 응용 프로그램은 만약 상기 확장된 능력들이 상기 프로그램을 위해 요구되거나 32비트 또는 16비트를 유지하면 32/64모드로 이동될 것이다.
상기 프로세서(10)가 상기 32비트 응용 프로그램을 실행중인 때, 상기 프로세서(10)의 동작 모드는 32비트이다. 따라서, 상기 응용 프로그램은 상기 LME 비트가 소거된 32비트 모드에서 실행되는 것과 같이, 동일한 방식으로 일반적으로 실행할 것이다(예를 들면, 상기 운영 시스템이 32비트 운영 시스템일 때). 그러나, 상기 응용 프로그램은 운영 시스템 서비스를 호출하거나 예외를 당하거나 종료할 것이다. 이러한 경우들의 각각에서, 상기 프로세서(10)는 운영 시스템 코드를 실행하는 단계로 복귀할 것이다(도 4의 화살표(64)에 도시된 것과 같이). 상기 운영 시스템이 32/64모드에서 동작하기 때문에, 상기 운영 시스템 서비스 루틴, 예외 처리기(handler) 등의 주소는 32비트를 초과할 것이다. 따라서, 상기 프로세서(10)는 상기 운영 시스템 코드로 복귀하기 이전에 32비트보다 더 큰 주소를 생성할 필요가 있다. 상기 LME 비트는 비록 현재 운영 모드가 32비트일지라도, 상기 운영 시스템이 32/64모드로 동작하고 있음을 나타내는 지시를 상기 프로세서(10)에 제공하고, 따라서, 상기 프로세서(10)는 운영 시스템 호출과 예외들을 위해 보다 큰 주소 공간을 제공할 것이다.
일실시예에서, 예외들이 인터럽트 세그먼트 기술자 테이블에 저장된 인터럽트 세그먼트 기술자들을 사용하여 처리된다. 만약 상기 LME가 설정되면, 상기 인터럽트 세그먼트 기술자들은 상기 예외를 처리하는 운영 시스템 루틴의 64비트 주소를 포함하는 16바이트 엔트리들일 것이다. 만약 상기 LME가 소거되면, 상기 인터럽트 세그먼트 기술자들은 32비트 주소를 포함하는 8바이트 엔트리들일 것이다. 따라서, 상기 프로세서(10)는 상기 LME 지시에 응답하는 상기 인터럽트 기술자 테이블에 접근한다(즉, 만약 상기 LME 비트가 설정되면 16바이트를 판독하고, 만약 상기 LME 비트가 소거되면 8바이트 엔트리를 판독한다). 따라서, 비록 상기 응용 프로그램이 32비트 호환가능 모드로 실행하는 중에도, 예외들은 상기 64비트 운영 시스템에 의해 처리된다. 또한, 상기 프로세서(10)는 만약 상기 LME 비트가 소거되면, 32비트(또는 16비트) 운영 시스템을 지원한다.
유사하게, 상기 프로세서(10) 내의 호출 메커니즘은 상기 LME 비트의 상태를 기준으로 하여 다른 방식으로 동작한다. 상기 운영 시스템은 일반적으로 상기 응용 프로그램보다 더 높은 특권 레벨에서 실행하기 때문에, 상기 응용 프로그램으로부터 상기 운영 시스템으로의 변환은 상기 응용 프로그램이 허용된 운영 시스템 루틴들을 실행할 수만 있는 것을 확증하기 위해 조심스럽게 제어된다. 보다 일반적으로, 특권 레벨의 변화는 조심스럽게 제어된다. 일실시예에서, 상기 프로세서(10)는운영 시스템 호출을 수행하기 위해 적어도 2개의 메커니즘들을 지원한다. 하나의 방법은 상기 세그먼트 기술자 테이블들 내의 호출 게이트를 통하는 것이다(하기에서 보다 상세하게 기술된다). 다른 방법은 상기 프로세서(10)에 의해 지원되는 STSCALL 명령으로, 상기 운영 시스템 루틴의 주소의 소스로서 모델 특정 레지스터를 사용한다. 상기 모델 특정 레지스터들을 갱신시키는 것은 특권 동작이고, 따라서 더 높은 특권 레벨에서의 코드 실행이 (예를 들면 운영 시스템 코드) 상기 SYSCALL 명령에 의해 사용된 상기 모델 특정 레지스터 내에 주소를 확립한다. 상기 SYSCALL 방법에 있어서, 제 2 모델 특정 레지스터는 상기 운영 시스템 루틴의 주소의 최상위 32비트들을 저장하도록 정의될 것이다. 따라서, 만약 상기 LME 비트가 설정되면, 상기 주소는 상기 2개의 모델 특정 레지스터들로부터 판독된다. 만약 사익 LME 비트가 소거되면, 상기 주소는 최하위 32비트를 저장하는 상기 모델 특정 레지스터로부터 판독된다. 또한, 상기 SYSCALL 명령에 의해 사용된 모델 특정 레지스터는 64비트로 확장되고, 상기 주소는 상기 LME 비트의 상태를 기준으로 한 32비트(상기 모델 특정 레지스터의 최하위 32비트) 또는 64비트이다.
상술된 바와 같이, 상기 LME 비트를 설정하는 것은 상기 프로세서(10)로 하여금 상기 운영 시스템이 64비트이고 하나 또는 그 이상의 응용 프로그램이 64비트가 아닌 (예를 들면 상술된 설명과 유사한 방법으로 동작하는 32비트 또는 16비트) 시스템에서 동작하도록 한다. 또한, 상기 박스(62)에 개시된 바와 같이, 상기 LME 비트를 소거하는 것은 상기 프로세서(10)로 하여금 x86 아키텍쳐와 호환가능한 32비트 또는 16비트 모드들에서 동작하도록 한다. 상술된 바와 같이, 예외와 운영 시스템 호출을 처리하는 메커니즘은 상기 LME 비트를 설정하거나 소거하도록 처리하도록 되고, 따라서 상기 32비트 및 16비트 모드들은 비록 상기 프로세서(10)가 32/64모드에서 동작할 수 있을지라도, 변경됨이 없이 동작한다. 또한, 상기 LME 비트가 소거된 때 x86 호화가능 16 및 32비트 모드들을 제공함으로써, (이들 모드들에서 예약된 상기 L 비트를 무시함으로써), 상기 프로세서(10)는 상기 L 비트가 32/64모드에 있어서와는 다른 목적을 위해 정의되는 시스템에서 동작하고, 여전히 만약 상기 LME 비트가 설정되면 32/64 모드를 지원한다. 따라서, 32비트 운영 시스템과 32비트 또는 16비트 응용 프로그램들을 채용하는 시스템이 상기 프로세서(10)를 채용할 것이다. 후속하여, 상기 시스템은 상기 프로세서(10)를 변화시킴이 없이 64비트 운영 시스템으로 갱신될 수 있다.
상기 LME 비트가 설정된 64비트 운영 시스템과 64 비트 응용 프로그램들이 도 4에 개시되지 않는다. 상기 64비트 운영 시스템과 32비트 응용 프로그램을 위한 상술된 운영 시스템 루틴을 호출하기 위한 메커니즘은 상기 64비트 응용 프로그램에 동일하게 적용될 수 있다. 또한, 64비트의 오프셋을 지원하는 호출 게이트들이 지원된다(이는 하기에서 상세하게 개시된다).
도 5는 상기 LME 비트와, 상기 코드 세그먼트 기술자 내의 상기 L 비트 및 상기 코드 세그먼트 기술자 내의 상기 D 비트의 상태들과, 일실시예에 따른 상기 프로세서(10)의 대응하는 동작 모드를 개시하는 테이블(70)을 개시한다. 다른 실시예들이 가능하고 고려된다. 상기 테이블(70)이 개시하는 바와 같이, 만약 상기 LME 비트가 소거되면, 상기 L 비트가 예약된다(0으로 정의된다). 그러나, 상기 프로세서(10)는 만약 상기 LME 비트가 소거되면 상기 L 비트를 무시(don't care)로 취급한다. 따라서, 상기 x86 호환가능 16비트 및 32비트 모드들이 만약 상기 LME 비트가 소거되면 상기 프로세서(10)에 의해 공급된다. 만약 상기 LME 비트가 설정되고 상기 코드 세그먼트 내의 L 비트가 소거되면, 호환가능 동작 모드가 상기 프로세서(10)에 의해 확립되고, 상기 D 비트는 16비트 또는 32비트 모드를 선택한다. 만약 상기 LME 비트 및 L 비트가 설정되고 상기 D 비트가 소거되면, 32/64모드는 상기 프로세서(10)를 위해 선택된다. 결과적으로, 만약 상기 LME, L 및 D 비트들이 모두 설정되면 선택되는 모드가 예약된다.
도 6에 개시되고 나타나는 바와 같이, 상기 32/64 동작 모드는 32비트들을 초과하는 디폴트 주소 크기(64비트까지 종속하는 구현) 및 32비트의 디폴트 오퍼랜드 크기를 구비한다. 32비트의 디폴트 오퍼랜드 크기는 특정 명령의 인코딩을 통하여 64비트로 치환된다. 32비트의 디폴트 오퍼랜드 크기는 32비트가 프로그램에 의해 수행된 다수의 데이터 조작기능들에게 충분한 프로그램들을 위한 평균 명령 길이를 (64비트로의 치환이 상기 명령 길이를 증가시키는 명령 인코딩에서의 명령 프리픽스를 구비한다) 최소화하기 위해 선택된다. 이러한 프로그램들에 있어서(현재적으로 존재하는 실질적인 개수의 프로그램들인), 64비트 오퍼랜드 크기로 이동하는 것은 상기 프로그램에 의해 성취된 실행 성능을 실제적으로 감소시킨다(즉, 증가된 실행 시간). 부분적으로, 상기 감소는 64비트 값들이 저장된 때 상기 프로그램에 의해 사용된 데이터 구조의 메모리 내의 크기를 두 배로 하는 것에 기여한다. 만약 32비트가 충분하면, 상기 데이터 구조는 32비트 값들을 저장한다. 따라서, 상기 데이터 구조가 접근된 때 접근된 바이트의 개수는 만약 64비트값들이 32비트값들이 충분한 경우에 사용되면 증가하고, 상기 증가된 메모리 대역폭(및 각 값에 의해 차지된 증가된 캐시 공간)은 증가된 실행 시간을 야기한다. 따라서, 상기 디폴트 오퍼랜드 크기와 디폴트가 특정 명령의 인코딩을 통하여 무효되는 때, 32비트들이 선택된다.
도 6은 특정 명령을 위한 동작 모드를 무효화하기 위한 명령 프리픽스들의 사용의 일실시예를 나타낸다. 다른 실시예들이 가능하고 고려된다. 상기 실행 코어(14)는 상기 테이블(72)에 따라 특정 명령을 위한 주소 크기와 오퍼랜드 크기를 결정한다. 도 6에 도시된 실시예에서, 명령 프리픽스 바이트(상기 주소 크기 오버라이드(override) 프리픽스 바이트)가 상기 디폴트 주소 크기를 무효화시키기 위해 사용되고, 다른 명령 프리픽스 바이트(상기 오퍼랜드 크기 오버라이드 프리픽스 바이트)가 상기 디폴트 오퍼랜드 크기를 무효화시키기 위해 사용된다. 상기 주소 크기 오버라이드 프리픽스 바이트는 67(16진수로)로 인코드되고, 상기 오퍼랜드 크기 오버라이드 프리픽스 바이트는 66(16진수로)으로 인코드된다. 상기 특정 명령 내의 오버라이드 프리픽스의 개수는 상기 테이블의 행을 형성한다. 상기 테이블의 열들은 대응하는 행에서의 오버라이드 프리픽스들의 개수와 동작 모드를 기준으로 한, 상기 특정 명령의 오퍼랜드 크기와 주소 크기를 나타낸다. 오버라이드 프리픽스들의 개수는 대응하는 형태의 오버라이드 프리픽스의 개수를 나타낸다(예를 들면, 주소 크기 열들은 주소 크기 오버라이드 프리픽스의 개수를 기준으로 한 주소 크기이고, 상기 오퍼랜드 크기 열들은 오퍼랜드 크기 오버라이드 프리픽스들의 개수를 기준으로 한 오퍼랜드 크기이다).
오버라이드 프리픽스들의 개수에 있어서의 "0"으로 표시된 행은 각 동작 모드에 있어서의 디폴트 오퍼랜드 크기와 주소 크기를 나타낸다. 상기 32비트와 16비트 모드 열들은 호환가능 모드들(설정된 LME)과 표준 모드들(소거된 LME)을 나타낸다. 또한, 상기 디폴트 주소 크기는 32/64모드 내의 64비트인 때, 주소 비트의 실제적 개수는 상술된 바와 같이 종속 구현이다.
32/64비트 모드에서의 하나의 주소 크기 오버라이드 프리픽스의 구비는 상기 테이블(72)에 도시된 바와 같이, 상기 주소 크기를 64비트로부터 (소정의 구현에 있어서 64비트들보다 더 작고 32비트보다 더 큰) 32비트로 변경한다. 16 비트 오퍼랜드를 위해서 제공되는 것이 바람직하다(예를 들면 "C" 프로그래밍 언어로 숏(short) 정수 데이터 형태를 지원하는 것). 따라서, 32/64모드에서의 2개의 오퍼랜드 크기 오버라이드 프리픽스들의 구비는 16비트의 오퍼랜드 크기를 선택한다. 2개 이상의 오퍼랜드 크기 오버라이드 프리픽스들의 구비는 2개의 오퍼랜드 크기 오버라이드 프리픽스들의 구비와 같이 동일한 오퍼랜드 크기를 야기한다. 유사하게, 하나 이상의 주소 크기 오버라이드 프리픽스의 구비는 하나의 주소 크기 오버라이드 프리픽스의 구비와 같이 동일한 주소 크기를 야기한다.
상기 32비트 모드들에 있어서, 하나의 오버라이드 프리픽스의 구비는 상기 디폴트 32비트 크기를 16비트로 토글시키고, 하나 이상의 오버라이드 프리픽스의 구비는 하나의 오버라이드 프리픽스의 구비와 같은 동일한 효과를 지닌다. 유사하게, 16비트 모드에 있어서, 하나의 오버라이드 프리픽스의 구비는 상기 디폴트 16비트 크기를 32비트로 토글하고, 하나 이상의 오버라이드 프리픽스의 구비는 하나의 오버라이드 프리픽스의 구비와 같은 동일한 효과를 지닌다.
도 7은 상기 LEAX 레지스터(74)의 일실시예를 나타내는 다이아그램을 도시한다. 상기 레지스터 파일(22) 내의 다른 레지스터들과 유사하다. 다른 실시예들이 가능하고 고려된다. 도 7의 실시예에서, 상기 레지스터(74)는 최상위 비트는 비트 63으로 표시되고, 최하위 비트는 비트 0으로 표시되는 64비트를 구비한다. 도 7은 명령의 오퍼랜드 크기를 기준으로 하여 접속된 상기 LEAX 레지스터의 부분들을 개시한다(만약 A 레지스터가 오퍼랜드로서 선택된다면). 특히 전체 레지스터(74)는 만약 상기 오퍼랜드 크기가 64비트이면(도 7에서 "LEAX" 괄호에 의해 개시된 것과 같이), 접근된다. 만약 상기 오퍼랜드 크기가 32비트이면, 레지스터(74)의 비트 31:0은 (도 7에서 "EAX" 괄호에 의해 개시되는 바와 같이) 접근된다. 만약 상기 오퍼랜드 크기가 16비트이면, 상기 레지스터의 비트 16:0이 접근된다(도 7에서 "AX" 괄호에 의해 나타나짐). 상기 오퍼랜드 크기들은 상기 동작 모드와 오버라이드 프리픽스의 구비를 기준으로 하여 선택된다. 그러나, 8비트 레지스터(도 7에서의 AH 또는 AL)에 접근하는 소정의 명령 오피코드들이 정의된다.
도 8은 전체 기술자 테이블(80)과 국부 기술자 테이블(82)의 일실시예의 블록 다이아그램이 도시된다. 다른 실시예들이 가능하고 고려된다. 도 8과 상술된 개시에서, 전체 기술자 테이블(82)의 베이스 주소는 GDTR(32)에 의해 제공되고, 국부 기술자 테이블(80)의 베이스 주소는 LDTR(30)에 의해 제공된다. 따라서, 상기 가상 주소 공간 내에서 전체 기술자 테이블(80)과 국부 기술자 테이블(82)을 임의적으로위치시키는 것을 지원하기 위해, GDTR(32)와 LDTR(30)은 64비트 베이스 주소들을 저장한다. 만약 상기 LME 비트가 소거되면, 상기 베이스 주소의 최하위 32비트는 상기 기술자 테이블들을 찾는데 사용된다.
전체 기술자 테이블(80)과 국부 기술자 테이블(82)은 모두 다양한 형태의 세그먼트 기술자들을 저장하도록 된다. 예를 들면, 32/64모드 코드 세그먼트 기술자(84), (86) 및 (90)과 호환가능 모드 기술자들(92) 및 (94)이 도 8에 개시된다. 각 기술자들(84) 내지 (94)은 대응하는 기술자 테이블 내의 엔트리를 차지하고, 하나의 엔트리는 하나의 세그먼트 기술자를 저장할 수 있다(예를 들면, 도 2 및 3에 개시된 실시예들에서의 8바이트). 전체 기술자 테이블(80) 내의 다른 형태의 기술자는 국부 기술자 테이블 기술자(96)이고, 상기 국부 기술자 테이블(82)을 위한 시스템 세그먼트를 정의하고 상기 LDTR(30)에 저장된 베이스 주소를 제공한다. 상기 LDTR(30)은 오퍼랜드로서 전체 기술자 테이블(80) 내의 세그먼트 선택자 위치지정 기술자(96)를 지닌 LLDT 명령을 사용함으로써 초기화된다. 상기 전체 기술자 테이블(80)은 다른 국부 기술자 테이블들을 찾는 다수의 LDT 기술자들을 저장한다. 상기 LDT 기술자(96)가 만약 상기 LME 비트가 설정되면 64비트를 저장하기 때문에, 상기 LDT 기술자(96)는 상기 전체 기술자 테이블(80) 내의 2개의 엔트리들을 차지한다. 만약 상기 LME 비트가 소거되면, 상기 LDT 기술자(96)는 상기 전체 기술자 테이블(80) 내의 단일 엔트리를 차지한다. 유사하게, 각 작업은 상기 작업에 관련된 소정의 정보를 저장하는 기술자 테이블들(80) 및 (82) 중의 하나에서의 작업 상태 세그먼트(task state segment: TSS) 기술자를 지닌다. 따라서, TSS 기술자는 상기 64 비트 주소 공간의 어느 부분에 TSS 정보가 저장되도록 하는 2개의 엔트리들을 차지한다.
상기 국부 및 전체 기술자 테이블들은 호출 게이트 기술자를 저장한다. 예를 들면, 도 8은 호출 게이트 기술자들(100), (102) 및 (104)을 개시한다. 상기 호출 게이트 기술자들은 64비트 오프셋을 지원하고, 따라서 대응하는 기술자 테이블 내의 2개의 엔트리들을 차지한다. 예시적인 32/64 호출 게이트 기술자가 하기의 도 9에 개시된다.
상기 세그먼트 기술자 테이블들(80) 및 (82)을 8바이트로 유지하고, 64비트 오프셋을 구비하는 기술자들을 위해 2개의 엔트리들을 사용함으로써, 16 및 32 비트 모드들을 위한 기술자들은 64비트 오프셋을 구비하는 기술자들과 동일한 테이블들 내에 저장된다. 따라서, 호환가능 모드들에서 동작하는 응용 프로그램들은 상기 64비트 운영 시스템들과 동일한 세그먼트 기술자 테이블들에서의 적절한 기술자들을 구비한다.
일반적으로, 호출 게이트들은 더 낮은 특권 레벨을 지닌 코드 세그먼트와 더 높은 특권 레벨을 지닌 코드 세그먼트 간의 변환을 조종하는데 사용된다(예를 들면 운영 시스템 루틴을 호출하는 응용 프로그램). 상기 더 낮은 특권 코드는 타겟으로서 세그먼트 선택자를 특정하는 호출 또는 다른 브랜치 명령을 구비한다(또한 이 경우에는 무시되는 상기 세그먼트로의 오프셋). 상기 세그먼트 선택자는 상기 기술자 테이블들 내에서 호출 게이트 기술자를 식별하고 상기 호출 게이트 기술자는 더 높은 특권 레벨 코드를 실행하기 위해 요구되는 최소 특권 레벨을 구비한다. 상기프로세서(10)가 상기 호출 또는 다른 브랜치 명령을 실행하는 때, 상기 프로세서(10)는 상기 기술자 테이블들을 상기 세그먼트 선택자로 인덱스하고 상기 호출 게이트를 찾는다. 만약 상기 프로세서(10)의 현재 특권 레벨과 (상기 세그먼트 선택자의 일부분이고 특권 검사 목적을 위해 현재 특권 레벨을 낮추는데 사용되는) 요청자 특권 레벨이 충분한 특권을 나타내면 (예를 들면, 상기 특권 레벨들이 상기 호출 게이트 기술자 내에 상기 최소 특권 레벨과 수적으로 동일하거나 더 작다), 상기 호출이 진행한다. 상기 호출 게이트 기술자는 상기 타겟 세그먼트(더 높은 특권 레벨을 지닌 코드 세그먼트)를 위한 세그먼트 선택자와, 코드 인출이 개시되는 타겟 세그먼트 내에 오프셋을 구비한다. 상기 프로세서(10)는 상기 호출 게이트 기술자로부터 상기 세그먼트 선택자와 오프셋을 추출하여 상기 타겟 세그먼트 기술자를 판독하여 더 높은 특권 레벨을 지닌 코드를 인출하기 시작한다. 반면에, 만약 현재 특권 레벨 또는 요청자 특권 레벨 또는 상기 요청자 특권 레벨이 상기 호출 게이트 기술자 내의 상기 최소 특권 레벨보다 더 낮은 특권 레벨이면(예를 들면, 상기 현재 또는 요청자 특권 레벨이 상기 최소 특권 레벨보다 수적으로 더 크다), 상기 프로세서(10)는 상기 호출 게이트 기술자를 접근한 후 상기 타겟 기술자에 접근함이 없이 예외를 전송한다. 따라서, 더 높은 특권 레벨에서의 코드 실행에 대한 접근은 조심스럽게 제어된다.
상술된 바와 같이, 상기 호출 게이트 기술자는 상기 세그먼트 내에 타겟 세그먼트 선택자와 오프셋을 구비한다. 상기 타겟 세그먼트 기술자에 대한 참조는 도 8에서 호출 게이트 기술자로부터 다른 기술자로의 화살표로 나타난다. 예를 들면,상기 호출 게이트 기술자(100)는 모드 기술자(90)를 참조한다; 상기 호출 게이트 기술자(102)는 32/64 모드 기술자(86)를 참조하고, 상기 게이트 호출 기술자(104)는 32/64 모드 기술자(84)를 참조한다. 도 8에 개시된 바와 같이, 호출 게이트 기술자는 기술자 테이블 중의 하나에 저장되고 다른 테이블 또는 동일한 테이블에서의 기술자를 참조한다. 또한, 호출 게이트 기술자는 32/64 모드 기술자 또는 호환가능 모드 기술자를 참조한다.
일반적으로, 상기 프로세서(10)가 세그먼트 선택자를 사용하여 상기 기술자 테이블들 중의 하나로부터 기술자를 판독한 때, 하나의 기술자 테이블이 판독된다. 그러나, 만약 상기 LME 비트가 설정되고 상기 프로세서(10)가 상기 엔트리가 호출 게이트 기술자 또는 LDT 기술자 또는 TSS 기술자임을 검출한다면, 상기 프로세서(10)는 상기 기술자자의 남은 부분을 획득하기 위해 상기 테이블 내의 차기 후속하는 엔트리를 판독한다. 따라서, 호출 게이트 기술자들과, LDT 기술자들 및 TSS 기술자들은 상기 테이블 엔트리들을 재정의함이 없이 또한 하나의 엔트리를 차지하는 기술자들을 위해 상기 테이블이 조절되는 방법에 관계없이 다른 크기인 호환가능 모드 기술자들(또는 표준 모드 기술자들)과 함께 테이블 내에 공존한다. 또한, 상기 호출 게이트 기술자, LDT 기술자 및 TSS 기술자의 제 2 부분이 세그먼트 기술자로서 접근되기 때문에, 상기 제 2 부분 애의 기술자의 타입 필드인 기술자의 부분은 상기 기술자가 도 9에 도시된 바와 같이, 상기 기술자 테이블에 저장되는 때 무효 형태로 설정된다. 또한, 상기 프로세서(10)가 기술자 테이블 판독이 수행되는 때마다 기술자 테이블로부터 2개의 연속하는 엔트리들을 판독하고, 만약상기 제 1 엔트리가 호출 게이트, LDT 기술자 형태, 또는 TSS 기술자 형태이면 상기 제 2 엔트리가 사용된다.
동작 모드(32/64모드, 32비트 호환가능, 또는 16비트 호환가능 모드)에서의 코드 동작은 상기 LME 비트가 설정된 때 호출 게이트 기술자를 참조하는 것이 인식되어야 한다. 따라서, 32 또는 16 비트 응용 프로그램은 만약 상기 루틴의 주소가 상기 32 비트 또는 16비트 주소 공간의 외부이면 상기 호출 게이트 메커니즘을 사용하여 운영 시스템 루틴을 호출한다. 또한, 호출 게이트 기술자는 동작 모드를 지닌 코드 세그먼트를 참조한다. 상기 운영 시스템은 상기 호출 게이트 내의 오프셋의 최상위 32비트가 0(32비트 타겟 세그먼트에 대하여)이거나 상기 호출 게이트 내의 오프셋의 최상위 48비트가 0(16비트 타겟 세그먼트에 대하여)임을 확증한다.
도 9는 호출 게이트 기술자(120)의 일실시예의 블록 다이아그램을 도시한다. 다른 실시예들이 가능하고 고려된다. 도 2 및 3과 유사하게, 최상위 바이트가 최하위 바이트 상에 나타난다. 4바이트의 각 그룹의 최상위 비트는 비트(31)로 나타나고, 최하위 비트는 비트(0)로 나타난다. 상기 4 바이트 내의 짧은 수직선들은 각 비트의 경계를 정하고, 긴 수직선들은 비트의 경계를 정하고 또한 필드의 경계를 정한다. 상술된 바와 같이, 호출 게이트 기술자는 기술자 테이블 내에 2개의 엔트리들을 차지한다. 도 9의 수평 점선은 호출 게이트 기술자(120)를 상위부분(상기 점선의 위)과 하위부분(상기 점선의 아래)으로 분리한다. 상기 하위부분은 상기 호출 게이트의 세그먼트 선택자에 의해 인덱스되는 엔트리 내에 저장되고, 상기 상위부분은 차기의 후속하는 엔트리 내에 저장된다.
상기 게이트 호출 기술자(120)는 타겟 세그먼트 선택자(필드(122)), 오프셋(필드(124A), (124B), (124C)), 현재(P) 비트(126), 기술자 특권 레벨(DPL)(128), 타입 필드(130) 및 의사-형태 필드(132)를 구비한다. 상기 P 비트는 상술된 P 비트(48)와 유사하다. 상기 타겟 세그먼트 선택자는 (더 높은 특권 레벨을 지닌) 상기 타겟 세그먼트 기술자가 저장되는 상기 기술자 테이블들 중의 하나 내에서 엔트리를 식별한다. 상기 오프셋은 코드 인출이 시작되는 주소를 식별한다. 32/64모드에서, 상기 코드 세그먼트가 베이스 주소를 지니지 않고 플렛 선형 주소지정이 사용되기 때문에, 상기 오프셋은 코드 인출이 개시되는 주소이다. 다른 모드들에서, 상기 오프셋은 상기 타겟 세그먼트 기술자에 의해 정의된 세그먼트 베이스에 부가됨으로써 코드 인출이 개시되는 주소를 생성한다. 상술된 바와 같이, 상기 오프셋은 현재 실시예에서 64비트로 구성된다.
상기 DPL(128)은 상기 호출 게이트를 통하여 전달되어 상기 타겟 세그먼트 기술자 내의 특정 특권 레벨에서 상기 호출된 루틴을 실행하는 (현재 특권 레벨과 요청된 특권 레벨에서) 최소 특권 레벨의 호출 루틴을 저장한다.
상기 타입 필드(130)는 호출 게이트 기술자 형태로 코드된다. 일실시예에서, 상기 형태는 x86 아키텍쳐에서 정의된 32비트 호출 게이트 형태와 같이 코드된다. 또는 다른 인코딩도 사용된다. 최종적으로, 상기 의사-형태 필드(132)는 만약 호출 게이트 기술자(120)의 상위 절반을 저장하는 상기 세그먼트 테이블 엔트리를 식별하는 세그먼트 선택자가 현존하면, 예외가 상기 프로세서(10)에 의해 전송되도록 확증하기 위해 무효 형태(예를 들면, 0)로 코드된다.
LDT 기술자(96)의 하위절반은 상기 32비트 LDT 기술자와 유사하고, 상기 LDT 기술자(96)의 상위 절반은 호출 게이트 기술자(120)의 상위 절반과 유사함이 인식되어야 한다.
도 10은 상기 프로세서(10)에 의해 수행된 명령들에 대한 명령 포멧(140)의 블록 다이아그램이다. 다른 실시예들이 가능하고 고려된다. 도 10의 실시예에서, 상기 명령 포멧(140)은 프리픽스 필드(142)와, 오피코드 필드(144), 모드(mod) R/M(레지스터/메모리) 필드(146), SIB(scale index base) 필드(148), 변위 필드(150) 및 임시 필드(152)를 구비한다. 상기 오피코드 필드(144)를 제외한 상기 필드들은 선택적이다. 따라서, 상기 명령 포멧(140)은 가변 길이 명령을 정의한다.
상기 프리픽스 필드(142)는 상기 명령에 대한 명령 프리픽스들을 위해 사용된다. 상술된 바와 같이, 오퍼랜드 크기 오버라이드 프리픽스와 주소 크기 오버라이드 프리픽스는 상기 프로세서(10)의 동작 모드를 무효화하기 위해 명령으로 인코드된다. 이러한 오버라이드 프리픽스들은 프리픽스 필드(142)에 포함된다. 상술된 바와 같이, 상기 오퍼랜드 크기 오버라이드 프리픽스와 주소 크기 오버라이드 프리픽스는 상기 프리픽스 필드(142) 내에 바이트별로 구비된다.
상기 오피코드 필드(144)는 상기 명령의 오피코드(즉, 상기 명령 집합에서의 명령이 실행되는)를 포함한다. 몇몇 명령들에 있어서, 오퍼랜드들이 상기 오피코드 필드(144) 내에서 특정된다. 다른 명령들에서, 상기 오피코드의 일부분이 상기 모드 R/M/ 필드(146) 내에 구비된다. 또한, 소정의 오피코드들이 오퍼랜드로서 8비트 또는 16비트 레지스터에 특성을 부여한다. 따라서 오피코드 인코딩은 상기 프로세서(10)의 동작 모드에 의해 지시된 디폴트들을 무효화하는 작용을 한다.
상기 모드 R/M 필드(146)와 SIB 필드(148)는 상기 명령의 오퍼랜드들을 지시한다. 상기 변위 필드(150)는 변위 정보를 포함하고, 상기 임시 필드(152)는 임시 오퍼랜드를 포함한다.
컴퓨터 시스템
도 11은 버스 브리지(202)를 통하여 다양한 시스템 구성요소들과 연결된 프로세서(10)를 포함하는 컴퓨터 시스템(200)의 일실시예의 블록 다이아그램을 도시한다. 다른 실시예들이 가능하고 고려된다. 도시된 시스템에서, 주 메모리(204)는 메모리 버스(206)를 통하여 상기 버스 브리지(202)에 연결되고, 그래픽 콘트롤러(208)는 AGP 버스(210)를 통하여 상기 버스 브리지(202)에 연결된다. 마지막으로, 다수의 PCI 디바이스들(212A-212B)가 PCI 버스(214)를 통하여 상기 버스 브리지(202)에 연결된다. 제 2 버스 브리지(216)는 EISA/ISA 버스(220)를 통하여 하나 또는 그 이상의 EISA 또는 ISA 디바이스들(218)로의 전기적 인터페이스를 제공하기 위해 추가적으로 구비된다. 상기 프로세서(10)는 CPU 버스(224)를 통하여 상기 버스 브리지(202)에 연결되고 선택적 L2 캐시(228)에 연결된다. 도한, 상기 CPU 버스(224)와 상기 L2 캐시(228)로의 인터페이스는 외부 인터페이스 유닛(18)이 연결되는 외부 인터페이스를 구비한다.
상기 버스 브리지(202)는 상기 프로세서(10)와, 주 메모리(204)와, 그래픽 콘트롤러(208) 및 상기 PCI 버스(214)에 부착된 디바이스들 간의 인터페이스를 제공한다. 상기 버스 브리지(202)에 연결된 상기 디바이스들 중의 하나로부터 동작이수신되는 때, 상기 버스 브리지(202)는 상기 동작의 타겟(예를 들면 특정 디바이스 또는 PCI 버스(214)의 경우, 상기 타겟이 PCI 버스(214))을 식별한다. 상기 버스 브리지(202)는 상기 동작을 상기 타겟 디바이스로 전송한다. 상기 버스 브리지(202)는 상기 자원 디바이스에 의해 사용된 프로토콜로부터 상기 타겟 디바이스 또는 버스에 의해 사용된 프로토콜로 동작을 일반적으로 번역한다.
상기 PCI 버스(214)에게 ISA/EISA 버스로의 인터페이스를 제공함에 추가하여, 제 2 버스 브리지(216)가 추가적인 기능을 결합한다. 상기 제 2 버스 브리지(216)의 외부에 또는 결합된 입력/출력 콘트롤러(도시되지 않음)가 상기 컴퓨터 시스템(200) 내에 구비됨으로써 동작 지원을 키보드 및 마우스(222)와 다양한 직렬 및 병렬 포트들에게 제공한다. 외부 캐시 유닛(도시되지 않음)은 다른 실시예에서 상기 프로세서(10)와 버스 브리지(202) 간의 상기 CPU 버스(224)에 추가적으로 연결된다. 또한, 상기 외부 캐시는 상기 버스 브리지(202)에 연결되고, 외부 캐시를 위한 캐시 제어 로직은 상기 버스 브리지(202)로 집적된다. 상기 L2 캐시(228)는 상기 프로세서(10)로의 백사이드 구성에 추가적으로 도시된다. 상기 L2 캐시(228)는 상기 프로세서(10)로부터 분리되거나 상기 프로세서(10)와 함께 카트리지(예를 들면 슬롯1 또는 슬롯A)에 집적되거나 상기 프로세서(10)와 함께 반도체 기판상에 집적됨이 인식되어야 한다.
상기 주 메모리(204)는 응용 프로그램이 저장되고, 상기 프로세서(10)가 주로 실행하는 메모리이다. 적절한 주 메모리(204)는 DRAM으로 구성된다. 예를 들면, 다수의 뱅크의 SDRAM, 또는 램버스 DRAM이 적절하다.
상기 PCI 디바이스들(212A-212B)은 예를 들면 네트워크 인터페이스 카드들, 비디오 가속기, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 드라이브 콘트롤러, SCSI 어댑터 및 전화카드와 같은 다양한 주변 디바이스들로 설명된다. 유사하게 상기 ISA 디바이스(218)는 예를 들면 모뎀, 사운드 카드, 필드 버스 인터페이스 카드 또는 GPIB와 같은 다양한 데이터 획득 카드들과 같은 다양한 종류의 주변 디바이스로 설명된다.
상기 그래픽 콘트롤러(208)는 디스플레이(226) 상의 텍스트와 이미지의 표현을 제어하기 위해 제공된다. 상기 그래픽 콘트롤러(208)는 상기 주 메모리(204)로 및 주 메모리(204)로부터 효율적으로 이동될 수 있는 3차원 데이터 구조를 표현하기 위한 종래에 잘 알려진 그래픽 가속기를 구현한다. 상기 그래픽 콘트롤러(208)는 상기 버스 브리지(202) 내의 타겟 인터페이스로의 접근을 요청하고 수신함으로서 상기 주 메모리(204)로의 접근을 획득하는 점에서 주된 AGP 버스(210)일 것이다. 전용 그래픽 버스는 상기 주 메모리(204)로부터의 데이터의 고속 검색을 조절한다. 소정의 동작들에서, 상기 그래픽 콘트롤러(208)는 상기 AGP 버스(210) 상에서 PCI 프로토콜 트랜잭션을 생성하도록 된다. 상기 버스 브리지(202)의 AGP 인터페이스는 PCI 프로토콜 타겟 및 개시자(initiator) 트랜잭션들뿐만 아니라 AGP 프로토콜 트랜잭션을 지원하는 기능을 지닌다. 상기 디스플레이(226)는 이미지 또는 텍스트가 표시될 수 있는 전기적 디스플레이이다. 적절한 디스플레이(226)는 음극선 튜브("CRT"), 액체 결정 디스플레이("LCD") 등을 포함한다.
상기 AGP, PCI, 및 ISA 도는 EISA 버스들이 상술된 설명에서 예시적으로 사용되는 때, 다른 버스 아키텍쳐는 대체될 수 있음이 인식되어야 한다. 상기 컴퓨터 시스템(200)이 추가적인 프로세서들(예를 들면 상기 컴퓨터 시스템(200)의 선택적 구성요소로서 도시된 프로세서(10a))를 구비하는 다중처리 컴퓨터 시스템일 수 있음이 인식되어야 한다. 상기 프로세서(10a)는 상기 프로세서(10)와 유사하다. 특히, 상기 프로세서(10a)는 상기 프로세서(10)와 동일하다. 상기 프로세서(10a)는 독립된 버스를 통하여 상기 버스 브리지(202)에 연결되거나 (도 11에 도시된 바와 같이), 상기 CPU 버스(224)를 상기 프로세서(10)와 공유한다. 또한, 상기 프로세서(10a)는 상기 L2 캐시(228)와 유사한 선택적 L2 캐시(228a)에 연결된다.
도 12는 컴퓨터 시스템(300)의 다른 실시예를 도시한다. 다른 실시예들이 가능하고 고려된다. 도 12의 실시예에서, 상기 컴퓨터 시스템(300)은 다수의 처리 노드들(312A), (312B), (312C), (312D)을 구비한다. 각 처리 노드는 각 개별 처리 노드(312A-312D) 내에 구비된 메모리 콘트롤러(316A-316D)를 통하여 개별 메모리(314A-314D)에 연결된다. 또한, 상기 처리 노드들(312A-312D)은 상기 처리 노드들(312A-312D) 간에서 통신하는데 사용되는 인터페이스 로직을 구비한다. 예를 들면, 상기 처리 노드(312A)는 처리 노드(312B)와의 통신을 위해 인터페이스 로직(318A)과, 상기 처리 노드(312C)과의 통신을 위해 인터페이스 로직(318B)와, 다른 처리 노드(도시되지 않음)과의 통신을 위해 제 3 인터페이스 로직(318C)을 구비한다. 유사하게, 상기 처리 노드(312B)는 인터페이스 로직(318D), (318E), (318F)을 구비하고; 상기 처리 노드(312C)는 인터페이스 로직(318G), (318H), (318I)를 구비하고; 상기 처리 노드(312D)는 인터페이스 로직(318J), (318K),(318L)을 구비한다. 상기 처리 노드(312D)는 인터페이스 로직(318L)을 통하여 다수의 입력/출력 디바이스들(예를 들면, 데이지 체인 구성에서의 디바이스들(320A-320B))과 통신하도록 연결된다. 다른 처리 노드들도 유사한 방법으로 다른 I/O 디바이스들과 통신한다.
상기 처리 노드들(312A-312D)은 내부-처리 노드 통신을 위한 패킷-기반 링크를 구현한다. 상기 실시예에서, 상기 링크는 일련의 일방향 라인들로서 구현된다(예를 들면 라인들(324A)은 상기 처리 노드(312A)로부터 상기 처리 노드(312B)로 패킷들을 전송하는데 사용되고, 라인들(324B)은 상기 처리 노드(312B)로부터 상기 처리 노드(312A)로 패킷들을 전송하는데 사용된다). 다른 일련의 라인들(324C-324H)는 도 12에 도시된 바와 같이, 다른 처리 노드들 간에 패킷들을 전송하는데 사용된다. 일반적으로 각 라인들(324)은 하나 또는 그 이상의 데이터 라인들과, 상기 데이터 라인들에 대응하는 하나 또는 그 이상의 클록 라인들 및, 전송되는 패킷의 형태를 나타내는 하나 또는 그 이상의 제어 라인들을 구비한다. 상기 링크는 처리 노드들 간의 통신을 위한 캐시 동기 방법으로 또는 처리 노드와 I/O 디바이스(또는 상기 PCI 버스 또는 ISA 버스와 같은 종래의 구성의 I/O 버스로의 버스 브리지) 간의 통신을 위한 비동기 방법으로 동작된다. 또한, 상기 링크는 도시된 바와 같이 I/O 디바이스들 간의 데이지-체인 구조를 사용하는 비-동기 방법으로 동작된다. 하나의 처리 노드로부터 다른 처리 노드로 전송되는 패킷은 하나 또는 그 이상의 중간매개 노드를 통하여 전달되는 것이 인식되어야 한다. 예를 들면, 상기 처리 노드(312A)에 의해 상기 처리 노드(312D)로 전송되는 패킷은 도 12에 도시된 바와같이 상기 처리 노드(312B) 또는 처리 노드(312C)를 통하여 전달된다. 다른 적절한 라우팅 알고리즘이 사용될 수 있다. 상기 컴퓨터 시스템(300)의 다른 실시예들은 도 12에 도시된 실시예에서보다 더 많거나 더 적은 처리 노드들을 구비할 수 있다.
일반적으로, 상기 패킷들은 노드들 간에 라인들(324) 상에서 하나 또는 그 이상의 비트 시간으로서 전송된다. 비트 시간은 대응하는 클록 라인들 상에서 상기 클록 신호의 상승 에지 또는 하강 에지이다. 상기 패킷들은 트랜잭션을 개시하는 명령 패킷들과, 캐시 일치를 유지하는 프로브 패킷들과 상기 프로브들과 명령들에 응답하는 응답 패킷들을 구비한다.
상기 처리 노드들(312A-312D)은 메모리 콘트롤러 및 인터페이스 로직에 추가하여 하나 또는 그 이상의 프로세서들을 구비한다. 널리 말하면, 처리 노드는 적어도 하나의 프로세서를 구비하고 메모리와 다른 로직과의 통신을 위한 메모리 콘트롤러를 선택적으로 구비한다. 특히, 각 처리 노드들(312A-312D)은 하나 또는 그 이상의 프로세서(10)와 동일한 프로세서로 구성된다. 외부 인터페이스 유닛(18)은 상기 메모리 콘트롤러(316)뿐만 아니라 상기 노드 내의 상기 인터페이스 로직(318)을 구비한다.
상기 메모리들(314A-314D)는 소정의 적절한 메모리 디바이스들로 구성된다. 예를 들면, 메모리(314A-314D)은 하나 또는 그 이상의 램버스 DRAM(RDRAM), 동기 DRAM(SDRAM), 정적 RAM 등으로 이루어진다. 상기 컴퓨터 시스템(300)의 주소 공간은 메모리들(314A-314D) 중에서 분할된다. 각 처리 노드(312A-312D)는 특정 주소에 대한 메모리 요청이 전송되어야 하는 메모리들(314A-314D)로, 결과적으로 처리 노드(312A-312D)로 사상되는 주소들이 어느 것인지를 결정하는데 사용된다. 일실시예에서, 상기 컴퓨터 시스템(300) 내의 주소에 대한 응집점은 상기 주소에 대응하는 메모리 저장 바이트들에 연결된 메모리 콘트롤러(316A-316D)이다. 달리 말하면, 상기 메모리 콘트롤러(316A-316D)는 대응하는 메모리(314A-314D)에 대한 각 메모리 접근이 캐시 동조 방식으로 야기되는 것을 확증하는 것을 담당한다. 상기 메모리 콘트롤러(316A-316D)는 상기 메모리들(314A-314D)에 대한 인터페이스를 위한 제어 회로를 구비한다. 또한, 상기 메모리 콘트롤러(316A-316D)는 메모리 요청들을 대기행렬로 하기 위한 요청 큐들을 구비한다.
일반적으로, 상기 인터페이스 로직(318A-318L)은 상기 링크로부터 패킷을 수신하고, 상기 링크로 전송된 패킷들을 버퍼링하는 다양한 버퍼들로 이루어진다. 상기 컴퓨터 시스템(300)은 패킷들을 전송하기 위한 적절한 흐름 제어 메커니즘을 채용한다. 예를 들면, 일실시예에서, 각 인터페이스 로직(318)은 상기 인터페이스 로직이 연결되는 링크의 일단부에서 상기 수신기 내의 각 형태의 버퍼의 개수를 저장한다. 상기 인터페이스 로직은 만약 상기 수신 인터페이스 로직이 상기 패킷을 저장하는 자유 버퍼를 구비하지 않으면 패킷을 전송하지 않는다. 수신 버퍼가 패킷을 전송함으로써 비어있게 됨에 따라, 상기 수신 인터페이스 로직은 상기 버퍼가 비어있음을 나타내는 메시지를 상기 전송 인터페이스 로직에 전송한다. 이러한 메커니즘은 "쿠폰-기반(coupon-based)" 시스템으로 지칭된다.
상기 I/O 디바이스들(320A-320B)은 적절한 I/O 디바이스들일 것이다. 예를 들면, 상기 I/O 디바이스들(320A-320B)은 네트워크 인터페이스 카드들과, 비디오가속기들과, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 드라이브 콘트롤러들, SCSI(소형 컴퓨터 시스템 인터페이스) 어댑터 및 전화 카드들, 모뎀, 사운드 카드 및 GPIB 또는 필드 버스 인터페이스 카드와 같은 다양한 데이터 획득 카드들을 구비할 것이다.
수많은 변형들과 변경들이 본 명세서를 충분히 이해한 종래 기술에 익숙한 사람에 의해 명백해질 것이다. 하기의 청구범위는 이러한 변형들과 변경들을 포함하도록 의도되었다.

Claims (22)

  1. 프로세서에 있어서, 상기 프로세서는:
    제 1 동작 모드 지시와 제 2 동작 모드 지시를 구비하는 세그먼트 기술자를 식별하는 세그먼트 선택자를 저장하도록 된 세그먼트 레지스터 및;
    인에이블 지시를 저장하도록 된 제어 레지스터로 구성되고, 상기 프로세서는 상기 인에이블 지시와 제 1 동작 모드 지시 및 제 2 동작 모드 지시에 응답하여 동작 모드를 확립하도록 되는 것을 특징으로 하는 프로세서.
  2. 제 1 항에 있어서, 상기 동작 모드는 만약 상기 인에이블 지시가 인에이블 상태이고 상기 제 1 동작 모드 지시가 제 1 상태이면 제 1 동작 모드이고, 상기 동작 모드는 만약 상기 인에이블 지시가 상기 인에이블 상태이고, 상기 제 1 동작 모드 지시가 제 2 상태이고, 상기 제 2 동작 모드가 상기 제 1 상태이면 제 2 동작 모드인 것을 특징으로 하는 프로세서.
  3. 제 2 항에 있어서, 상기 제 2 동작 모드는 만약 상기 인에이블 지시가 상기 인에이블 상태이고 상기 제 1 동작 모드가 상기 제 2 상태이면 다수의 사용가능한 동작 모드들 중의 하나이고, 상기 다수의 동작 모드들 중의 하나는 상기 제 2 동작 모드 지시의 상태에 응답하여 선택되는 것을 특징으로 하는 프로세서.
  4. 제 3 항에 있어서, 상기 다수의 동작 모드들 중의 하나는 32비트 동작 모드인 것을 특징으로 하는 프로세서.
  5. 제 3 항에 있어서, 상기 다수의 동작 모드들 중의 하나는 16비트 동작 모드인 것을 특징으로 하는 프로세서.
  6. 재 2 항에 있어서, 상기 제 1 동작 모드는 32비트보다 더 큰 디폴트 주소 크기를 구비하는 것을 특징으로 하는 프로세서.
  7. 제 6 항에 있어서, 상기 디폴트 주소 크기는 상기 프로세서에 의해 생성된 가상 주소들에 해당하는 것을 특징으로 하는 프로세서.
  8. 제 7 항에 있어서, 상기 가상 주소는 상기 프로세서에 의해 채용된 세그먼테이션 메커니즘에 따라 생성되는 것을 특징으로 하는 프로세서.
  9. 제 7 항에 있어서, 상기 디폴트 주소 크기는 상기 프로세서에 의해 생성된 물리적 주소에 추가적으로 해당하는 것을 특징으로 하는 프로세서.
  10. 제 1 항에 있어서, 만약 상기 인에이블 지시가 디스에이블 상태이면, 상기 제 1 동작 모드 지시는 정의되지 않고, 상기 프로세서는 상기 제 2 동작 모드 지시에 응답하여 상기 동작 모드를 확립하도록 되는 것을 특징으로 하는 프로세서.
  11. 프로세서에 있어서, 상기 프로세서는:
    세그먼트 기술자로부터의 세그먼트 선택자와 정보를 저장하도록 되는 세그먼트 레지스터들과, 이때 상기 세그먼트 선택자는 상기 프로세서가 연결되는 메모리에 저장된 세그먼트 테이블로의 인덱스를 구비하고, 상기 세그먼트 기술자는 상기 인덱스에 의해 지시된 엔트리 내의 상기 세그먼트 기술자 테이블에 저장되고, 상기 프로세서는 상기 세그먼트 선택자에 응답하여 상기 세그먼트 기술자 테이블로부터 상기 세그먼트 기술자를 판독하도록 되고, 상기 세그먼트 기술자는 동작 모드 지시를 구비하고;
    인에이블 지시를 저장하도록 된 제어 레지스터로 구성되고;
    상기 프로세서는 가상 주소들이 인에이블 상태인 상기 인에이블 지시와 제 1 상태인 상기 동작 모드 지시에 응답하여 32비트보다 더 큰 동작 모드에서 동작하도록 되는 것을 특징으로 하는 프로세서.
  12. 제 11 항에 있어서, 상기 물리적 주소들은 상기 동작 모드에서 32비트보다 더 큰 것을 특징으로 하는 프로세서.
  13. 제 12 항에 있어서, 상기 물리적 주소들은 64비트보다 작거나 동일한 제 1 개수의 비트들인 것을 특징으로 하는 프로세서.
  14. 제 11 항에 있어서, 상기 가상 주소는 64비트보다 작거나 동일한 제 1 개수의 비트들인 것을 특징으로 하는 프로세서.
  15. 제 11 항에 있어서, 상기 세그먼트 기술자는 추가적으로 특권 레벨을 구비하는 것을 특징으로 하는 프로세서.
  16. 제 11 항에 있어서, 상기 프로세서는 제 2 인에이블 지시를 저장하도록 된 제 2 제어 레지스터를 추가적으로 구비하고, 상기 프로세서는 상기 인에이블 상태인 제 2 인에이블 지시에 응답하여 상기 세그먼트 기술자 테이블로부터 상기 세그먼트 기술자를 판독하도록 되는 것을 특징으로 하는 프로세서.
  17. 프로세서 내의 제어 레지스터 내의 인에이블 지시와, 세그먼트 기술자 내의 제 1 동작 모드 지시와, 상기 세그먼트 기술자 내의 제 2 동작 모드 지시에 응답하여 상기 프로세서 내에 동작 모드를 확립하는 단계와;
    상기 동작 모드에 응답하여 오퍼랜드들을 인출하고 주소들을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제 17 항에 있어서, 상기 동작 모드를 확립하는 단계는 인에이블 상태인 상기 인에이블 지시와, 제 1 상태인 상기 제 1 동작 모드 지시에 응답하여 제 1 동작모드를 확립하는 단계로 이루어지고, 상기 제 1 동작 모드는 32비트보다 더 큰 디폴트 주소 크기를 지니는 것을 특징으로 하는 방법.
  19. 제 18 항에 있어서, 상기 디폴트 주소 크기는 가상 주소에 해당하는 것을 특징으로 하는 방법.
  20. 제 19 항에 있어서, 상기 디폴트 주소 크기는 물리적 주소에 해당하는 것을 특징으로 하는 방법.
  21. 제 18 항에 있어서, 상기 동작 모드를 확립하는 단계는 인에이블 상태인 상기 인에이블 지시와, 제 2 상태인 상기 제 1 동작 모드 지시 및 상기 제 1 상태인 상기 제 2 동작 모드 지시에 응답하여 제 2 동작 모드를 확립하는 단계를 추가적으로 포함하고, 상기 제 1 동작 모드는 32비트의 디폴트 주소 크기를 구비하는 것을 특징으로 하는 방법.
  22. 제 18 항에 있어서, 상기 동작 모드를 확립하는 단계는 만약 상기 인에이블 지시가 상기 인에이블 상태이고 상기 제 1 동작 모드 지시가 제 2 상태이면, 다수의 동작 모드들 중의 하나를 확립하는 단계를 추가적으로 포함하고, 상기 다수의 동작 모드들 중의 하나는 상기 제 2 동작 모드 지시의 상태에 응답하여 선택되는 것을 특징으로 하는 방법.
KR1020027008331A 2000-01-14 2000-07-19 프로세서에서의 동작 모드의 확립 KR100636413B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/483,101 US6973562B1 (en) 2000-01-14 2000-01-14 Establishing an operating mode in a processor
US09/483,101 2000-01-14

Publications (2)

Publication Number Publication Date
KR20020091066A true KR20020091066A (ko) 2002-12-05
KR100636413B1 KR100636413B1 (ko) 2006-10-19

Family

ID=23918664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027008331A KR100636413B1 (ko) 2000-01-14 2000-07-19 프로세서에서의 동작 모드의 확립

Country Status (8)

Country Link
US (1) US6973562B1 (ko)
EP (1) EP1247171B1 (ko)
JP (1) JP4520683B2 (ko)
KR (1) KR100636413B1 (ko)
CN (1) CN100419671C (ko)
DE (1) DE60005219T2 (ko)
TW (1) TW567434B (ko)
WO (1) WO2001052058A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101137170B1 (ko) * 2004-03-29 2012-04-19 마이크로소프트 코포레이션 단층화된 계층적 구조에서 의미 있는 이름의 생성
KR20180015660A (ko) * 2015-06-05 2018-02-13 에이알엠 리미티드 가변 길이 명령 처리 모드

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387250B8 (en) * 2002-07-31 2012-02-29 Texas Instruments Inc. Processor that accomodates multiple instruction sets and multiple decode modes
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
US20060282606A1 (en) * 2005-06-08 2006-12-14 Dell Products L.P. System and method for automatically optimizing available virtual memory
JP5289688B2 (ja) * 2006-07-05 2013-09-11 ルネサスエレクトロニクス株式会社 プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
US7451298B2 (en) * 2006-08-03 2008-11-11 Apple Inc. Processing exceptions from 64-bit application program executing in 64-bit processor with 32-bit OS kernel by switching to 32-bit processor mode
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
US8528083B2 (en) * 2011-03-10 2013-09-03 Adobe Systems Incorporated Using a call gate to prevent secure sandbox leakage
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN102331978A (zh) * 2011-07-07 2012-01-25 曙光信息产业股份有限公司 一种龙芯刀片大内存地址设备dma控制器访问的实现方法
CN105094870A (zh) * 2014-05-13 2015-11-25 中标软件有限公司 64位Linux操作系统兼容32位应用软件的方法
GB2522290B (en) 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
CN107870736B (zh) * 2016-09-28 2021-08-10 龙芯中科技术股份有限公司 支持大于4gb非线性闪存的方法及装置
CN111026452B (zh) * 2019-11-20 2023-10-20 北京明朝万达科技股份有限公司 一种远程32位进程注入64位进程的方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4620274A (en) 1983-04-01 1986-10-28 Honeywell Information Systems Inc. Data available indicator for an exhausted operand string
US4701946A (en) 1984-10-23 1987-10-20 Oliva Raymond A Device for controlling the application of power to a computer
US4868740A (en) 1986-06-04 1989-09-19 Hitachi, Ltd. System for processing data with multiple virtual address and data word lengths
JPS63174145A (ja) * 1987-01-14 1988-07-18 Hitachi Ltd デ−タ処理装置
JP2507756B2 (ja) * 1987-10-05 1996-06-19 株式会社日立製作所 情報処理装置
US5381537A (en) * 1991-12-06 1995-01-10 International Business Machines Corporation Large logical addressing method and means
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5517651A (en) 1993-12-29 1996-05-14 Intel Corporation Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5758116A (en) 1994-09-30 1998-05-26 Intel Corporation Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions
US5644755A (en) 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
US5787495A (en) 1995-12-18 1998-07-28 Integrated Device Technology, Inc. Method and apparatus for selector storing and restoration
US5784638A (en) 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US5826074A (en) 1996-11-22 1998-10-20 S3 Incorporated Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US6086623A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. Method and implementation for intercepting and processing system calls in programmed digital computer to emulate retrograde operating system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101137170B1 (ko) * 2004-03-29 2012-04-19 마이크로소프트 코포레이션 단층화된 계층적 구조에서 의미 있는 이름의 생성
KR20180015660A (ko) * 2015-06-05 2018-02-13 에이알엠 리미티드 가변 길이 명령 처리 모드

Also Published As

Publication number Publication date
DE60005219D1 (de) 2003-10-16
CN100419671C (zh) 2008-09-17
WO2001052058A1 (en) 2001-07-19
US6973562B1 (en) 2005-12-06
EP1247171A1 (en) 2002-10-09
KR100636413B1 (ko) 2006-10-19
JP2003519868A (ja) 2003-06-24
EP1247171B1 (en) 2003-09-10
CN1423773A (zh) 2003-06-11
TW567434B (en) 2003-12-21
JP4520683B2 (ja) 2010-08-11
DE60005219T2 (de) 2004-06-24

Similar Documents

Publication Publication Date Title
US6560694B1 (en) Double prefix overrides to provide 16-bit operand size in a 32/64 operating mode
US6457115B1 (en) Apparatus and method for generating 64 bit addresses using a 32 bit adder
US6671791B1 (en) Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US7124286B2 (en) Establishing an operating mode in a processor
US7284115B2 (en) Processor which overrides default operand size for implicit stack pointer references and near branches
US6901505B2 (en) Instruction causing swap of base address from segment register with address from another register
US6898697B1 (en) Efficient method for mode change detection and synchronization
US6757771B2 (en) Stack switching mechanism in a computer system
US6807616B1 (en) Memory address checking in a proccesor that support both a segmented and a unsegmented address space
US7100028B2 (en) Multiple entry points for system call instructions
US6889312B1 (en) Selective zero extension based on operand size
KR100880681B1 (ko) 확장 레지스터 모드로 확장 레지스터 세트를 액세스하는 중앙 처리 장치
US6968446B1 (en) Flags handling for system call instructions
US6687806B1 (en) Apparatus and method for generating 64 bit displacement and immediate values
KR100636413B1 (ko) 프로세서에서의 동작 모드의 확립
US8156308B1 (en) Supporting multiple byte order formats in a computer system
US6807617B2 (en) Processor, method and apparatus with descriptor table storing segment descriptors of varying size
US7058791B1 (en) Establishing a mode indication responsive to two or more indications
US6981132B2 (en) Uniform register addressing using prefix byte
KR20130054966A (ko) 컴퓨팅 환경의 인에이블/디스에이블 어댑터들
US6571330B1 (en) Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor
US6810476B2 (en) Variable state save formats based on operand size of state save instruction
KR100643874B1 (ko) 64비트 주소지정을 위한 호출 게이트 확장
US6880068B1 (en) Mode dependent segment use with mode independent segment update
US6463517B1 (en) Apparatus and method for generating virtual addresses for different memory models

Legal Events

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

Payment date: 20120927

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 14