KR100928757B1 - 사설 운용들을 통해 액세스되는 제어 레지스터들을 위한시스템 및 방법 - Google Patents

사설 운용들을 통해 액세스되는 제어 레지스터들을 위한시스템 및 방법 Download PDF

Info

Publication number
KR100928757B1
KR100928757B1 KR1020077014104A KR20077014104A KR100928757B1 KR 100928757 B1 KR100928757 B1 KR 100928757B1 KR 1020077014104 A KR1020077014104 A KR 1020077014104A KR 20077014104 A KR20077014104 A KR 20077014104A KR 100928757 B1 KR100928757 B1 KR 100928757B1
Authority
KR
South Korea
Prior art keywords
processor
microcode
address
control registers
microcode set
Prior art date
Application number
KR1020077014104A
Other languages
English (en)
Other versions
KR20070086506A (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 KR20070086506A publication Critical patent/KR20070086506A/ko
Application granted granted Critical
Publication of KR100928757B1 publication Critical patent/KR100928757B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

컴퓨터 시스템의 제어 레지스터들에 액세스하기 위한 시스템 및 방법이 설명된다. 일 실시예에서, 제어 레지스터에는 통상적인 입/출력 어드레스 가능 범위를 벗어나는 어드레스가 주어진다. 또한, 이러한 제어 레지스터는 물리적으로 프로세서 기능 회로와는 별도의 시스템 회로들에 배치될 수 있다. 그러한 제어 레지스터는 통상적인 사용자 입/출력 명령어들을 통해 액세스될 수 없다. 특수한 마이크로코드가 사용되어 이들 제어 레지스터들에 액세스할 수 있다. 특수한 마이크로코드는 특수한 시스템 이벤트들에 의해 실행될 수 있다. 이들 특수한 이벤트들은, 특수한 디버그 모드로 진입하는 것에 의해 또는 TAP(test access port)을 사용하는 테스트 액세스에 의해, 마이크로코드 패치를 로드하는 것을 포함할 수 있다.
제어 레지스터, 사용자 입/출력 명령어, 마이크로코드, 마이크로코드 패치

Description

사설 운용들을 통해 액세스되는 제어 레지스터들을 위한 시스템 및 방법 {SYSTEM AND METHOD FOR CONTROL REGISTERS ACCESSED VIA PRIVATE OPERATIONS}
본 발명은 일반적으로 마이크로프로세서 시스템들에 관한 것으로서, 좀더 구체적으로는, 제어 레지스터들을 사용하여 시스템 파라미터들을 설정하고 시스템 상태 정보를 제시할 수 있는 마이크로프로세서 시스템들에 관한 것이다.
마이크로프로세서 시스템들은 그것들의 운용을 지원하기 위해 다양한 형태의 제어 레지스터들을 사용할 수 있다. 제어 레지스터의 일 형태는 시스템 파라미터들을 설정하기 위해, 및 그렇지 않으면 시스템을 구성하기 위해 기입될 수 있다. 그러한 레지스터의 비트들의 다양한 조합들은, 추론적 실행(speculative execution)의 깊이 또는 캐시의 사이즈와 같은 운용 제한들을 설정할 수 있거나, 분기 예측기들(branch predictors) 및 프리페치 유닛들(prefetch units)과 같은 선택적인 기능 회로를 턴온 또는 턴오프할 수 있거나, 소정 이벤트들을 위한 인터럽트들을 인에이블(enable) 또는 디스에이블(disable)할 수 있다. 시스템 상태를 수신하기 위해 제어 레지스터들의 다른 형태들이 판독될 수 있다. 그러한 제어 레지스터들을 상태 레지스터들이라고 할 수도 있다. 상태 레지스터들은 시스템 상태, 결함 상태와 연관된 프로그램 레지스터들의 내용들, 동작 온도, 및 다른 형태의 상 태에 관한 정보를 제공할 수 있다. 다수의 제어 레지스터들은 기입될 수도 있고 판독될 수도 있다. 제어 레지스터들의 예들로는 Pentium® 클래스 호환 가능 마이크로프로세서들에 구현되는 MSR(Model Specific Register)들을 들 수 있다.
제어 레지스터들은 일반적으로 제어 레지스터 액세스를 위한 특정 명령어들을 통해 또는 입/출력(I/O) 사용자 명령어들과 같은 특정 형태의 범용 사용자 명령어들을 통해 액세스될 수 있다. 프로세서 내에 배치된 제어 레지스터들을 위해 사용될 수 있는 특정한 제어 레지스터 액세스 명령어들은 고레벨의 소프트웨어 특권(privilege) 하에서 실행되는 것으로 제한될 수 있다.
또한, 프로세서 기능 유닛들과 구조적으로 분리된 시스템 회로의 부분들에서 다양한 제어 레지스터들이 요구될 수도 있다. 예를 들어, 그러한 부분들은 다양한 칩셋 기능들을 포함할 수 있거나 다양한 시스템내(intra-system) 버스 브리지들을 포함할 수 있다. 대개, 시스템 회로의 이 부분들은 전용 회로를 통해서는 액세스될 수 없고, 시스템 버스들을 포함하는, 소정 데이터 경로들에 의해서만 액세스될 수 있다. 칩셋 내에 배치된 제어 레지스터들과 같은, 프로세서 외부에 배치된 통상적인 제어 레지스터들은 저레벨의 소프트웨어 특권 하에서 실행될 수 있는 범용 I/O 사용자 명령어들을 통해 액세스되어야 할 수도 있다.
본 개시는, 동일한 참조 번호들이 유사한 요소들을 나타내는 첨부 도면들의 도면들에서, 한정이 아닌 일례로서 예시된다.
도 1은, 본 개시의 일 실시예에 따른, 제어 레지스터들에 액세스하는 것을 도시한 도면.
도 2는, 본 개시의 일 실시예에 따른, 메모리 어드레스 공간들을 도시한 도면.
도 3은, 본 개시의 다른 실시예에 따른, 제어 레지스터들에 액세스하는 것을 도시한 도면.
도 4는, 본 개시의 다른 실시예에 따른, 제어 레지스터들에 액세스하는 것을 도시한 도면.
도 5A는, 본 개시의 일 실시예에 따른, 제어 레지스터들에 액세스할 수 있는 프로세서들을 갖춘 시스템의 개략도.
도 5B는, 본 개시의 다른 실시예에 따른, 제어 레지스터들에 액세스할 수 있는 프로세서들을 갖춘 시스템의 개략도.
다음 설명은, 향상된 액세스 보호를 가질 수 있고 프로세서 기능 블록들로부터 구조적으로 분리된 시스템 컴포넌트들에 배치될 수 있는 제어 레지스터들을 위한 기술들을 포함한다. 다음 설명에서는, 본 발명에 대한 좀더 완전한 이해를 제공하기 위해, 로직 구현들, 소프트웨어 모듈 할당, 버스 및 다른 인터페이스 시그널링 기술들, 그리고 운용의 세부 사항들과 같은, 다수의 특정 세부 사항들이 기술된다. 그러나, 당업자라면, 그러한 특정 세부 사항들 없이도 본 발명이 실시될 수 있다는 것을 알 수 있을 것이다. 다른 경우들에서, 본 발명을 불명료하게 하지 않기 위해, 제어 구조들, 게이트 레벨 회로들, 및 완전한 소프트웨어 명령어 시퀀스들을 상세하게 도시하지 않았다. 당업자들이라면, 포함된 설명들에 의해, 불필요한 실험 없이, 적합한 기능성을 구현할 수 있을 것이다. 특정 실시예들에서, 본 발명은 (Intel® Corporation에 의해 생산되는 것들과 같은) Pentium® 호환 가능 프로세서 시스템, 및 연관된 시스템 및 프로세서 펌웨어의 환경에서 개시된다. 그러나, 본 발명은, (Intel® Corporation에 의해 생산되는 것들과 같은) Itanium® 프로세서 패밀리 호환 가능 프로세서, X-Scale® 패밀리 호환 가능 프로세서, 또는 다른 벤더들이나 설계자들의 프로세서 아키텍처들 중 어떤 것으로부터의 광범위하한 서로 다른 범용 프로세서들 중 임의의 것을 갖춘 것과 같은, 다른 종류의 프로세서 시스템들로 실시될 수도 있다. 또한, 일부 실시예들은, 그것의 펌웨어와 관련하여 그래픽, 네트워크, 이미지, 통신, 또는 임의의 다른 공지되었거나 이용가능한 유형의 프로세서와 같은 특수 목적의 프로세서들을 포함할 수 있거나 특수 목적의 프로세서들일 수 있다.
이제 도 1을 참조하면, 본 개시의 일 실시예에 따른, 제어 레지스터들에 액세스하는 것을 도시한 도면이 예시되어 있다. 도 1의 시스템은 버스(150)에 의해 접속되는 프로세서(110) 및 칩셋(130)을 포함한다. 다른 실시예들에서는, 추가적인 프로세서들 및 칩셋들이 버스(150)에 접속될 수 있다. 또한, 메모리 및 입/출력(I/O) 디바이스들에 액세스하기 위한 회로들과 같은 칩셋 기능들이 다른 모듈들 사이에 분산될 수 있다. 프로세서(110) 및 칩셋(130)은 별도의 반도체 모듈들로서 구현될 수 있거나, 단일 모듈로서 함께 통합될 수 있다. 일 실시예에서, 프로세서(110)는 Pentium® 클래스 호환 가능 프로세서일 수 있고, 버스(150)는 Pentium® 호환 가능 전면 버스(front side bus)(FSB)일 수 있다.
프로세서(110)는 마이크로코드의 제어 하에서 명령어 세트로부터의 사용자 명령어들을 실행할 수 있다. 베이스 마이크로코드 세트(base microcode set)를 저장하기 위해 마이크로코드 ROM(read-only-memory)(112)이 제공될 수 있다. 또한, 다른 마이크로코드 세트를 수신하기 위해 기입 가능 마이크로코드 RAM(random-access-memory)(114)이 제공될 수 있다. 일 실시예에서, 이러한 다른 마이크로코드 세트는 시스템 메모리(142)의 마이크로코드 패치 이미지(144)로부터 또는 BIOS(basic input/output system) PROM(programmable-read-only-memory)(146)의 마이크로코드 패치 이미지(148)로부터 로드될 수 있다. 다른 실시예들에서는, 확장 가능한 펌웨어 인터페이스(extensible firmware interface)(EFI)와 같은, BIOS 이외의 다른 형태의 시스템 펌웨어가 사용될 수 있고, 플래시 메모리와 같은, PROM 이외의 다른 형태의 저장 장치가 사용될 수 있다.
도 1의 시스템은 수개의 제어 레지스터들을 사용할 수 있다. 이들 제어 레지스터들은 시스템 상태 정보를 산출하기 위해 프로세서(110)에 의해 판독될 수 있거나, 소정 시스템 운용 파라미터들을 설정하기 위해 프로세서(110)에 의해 기입될 수 있다. 일부 상황들에서는, 판독될 수 있는 제어 레지스터들을 "상태 레지스터들"이라고 할 수도 있지만, 본 개시의 목적을 위해, "제어 레지스터들"이라는 용어는 일반적으로, 판독 가능 또는 기입 가능 제어 레지스터들을 의미하거나, 판독 가능 및 기입 가능 제어 레지스터들을 의미할 것이다. 통상적인 제어 레지스터들은, 일 실시예에서, 사용자 명령어들 RDMSR(read machine specific register) 및 WRMSR(write machine specific register)의 실행에 의해 판독되거나 기입될 수 있다. 이들 사용자 명령어들은 다른 명령어들에 의해 액세스될 수 없는 별도 어드레스 공간에 배치된 제어 레지스터들에 액세스하는 것으로 제한될 수 있다. 일 실시예에서, 통상적인 사용자 I/O 명령어들은 I/O 어드레스 공간에 배치된 통상적인 제어 레지스터들에 액세스하는 데 사용될 수 있다. 일 실시예에서, 그러한 I/O 어드레스 공간은 16-비트 어드레스들로 제한될 수 있다.
일 실시예에서는, 본 개시의 새로운 실시예의 제어 레지스터들이 존재할 수 있다. 그러한 새로운 제어 레지스터들은 칩셋(130) 내에 배치된 제어 레지스터들 1-N(136-138) 및 프로세서(110) 내에 배치된 제어 레지스터들 A 및 B(120, 122)일 수 있다. 각각의 경우에서, 새로운 제어 레지스터들은 I/O 어드레스 공간을 벗어난 어드레스를 가질 수 있다. 일 실시예에서, 제어 레지스터들 1-N(136-138) 및 제어 레지스터들 A 및 B(120, 122)은 Pentium® 클래스 호환 가능 프로세서의 I/O 어드레스 공간의 상부와 물리적 어드레스 공간의 상부 사이의 어드레스들을 가진다. 다른 실시예들에서, 물리적 어드레스 공간의 상부는 (232 - 1) 또는 (264 - 1)에 위치할 수 있다. 다른 실시예들에서는, 전체의 물리적 메모리 공간으로부터 I/O 어드레스 공간을 식별하는 다른 경계들이 존재할 수 있다.
제어 레지스터들 1-N(136-138)의 어드레스가 프로세서(110)의 사용자 I/O 어드레스 공간을 벗어나므로, 제어 레지스터들은 통상적인 사용자 I/O 명령어들을 통해 액세스될 수 없다. 대신에, 일 실시예에서는, 비-사용자 액세스 가능 마이크로코드 세트가, 제어 레지스터들 1-N(136-138)로의 기입 및 제어 레지스터들 1-N(136-138)로부터의 판독을 허용하는 마이크로코드를 포함할 수 있다. 다른 실시예들에서는, 마이크로코드 실행 이외의 다른 형태의 사설 운용들이 사용되어 제어 레지스터들 1-N(136-138)을 액세스할 수 있다.
일 실시예에서는, 제어 레지스터들 1-N(136-138) 및 제어 레지스터들 A 및 B(120, 122)로의 기입 및 그로부터의 판독을 허용하는 마이크로코드가 사용자 명령어들 RDMSR 및 WRMSR을 구현하는 기존의 마이크로코드로부터 변경될 수도 있다. RDMSR 및 WRMSR을 구현하기 위한 기존의 마이크로코드는, 논리적 범용 레지스터 ECX를 표현하는 32-비트 물리적 레지스터에 포함된 데이터를 취하는 마이크로-운용(micro-operation)을 포함한다. 그 다음, 이러한 32 비트 어드레스는 제어 레지스터들을 포함하는 별도 어드레스 공간에서 원하는 MSR의 어드레스로서 발행된다.
제어 레지스터들 1-N(136-138) 및 제어 레지스터들 A 및 B(120, 122)와 같은 새로운 제어 레지스터들에 액세스할 수 있는 마이크로코드를 생성하기 위해, 사용자 명령어들 RDMSR 및 WRMSR을 위한 기존의 마이크로코드는 소정 MSR 어드레스들을 I/O 어드레스들로 변환하도록 변경될 수 있다. 일 실시예에서, 변환된 어드레스는, 통상적인 사용자 I/O 명령어들에 고유한 사용자 어드레스 가능 어드레스 범위 한계를 벗어난다. 그 다음, 이러한 변경된 결과적 마이크로코드는 다른 마이크로코드 세트에 배치될 수 있다. 다른 실시예들에서는, 변경된 RDMSR 마이크로코드 또는 변경된 WRMSR 마이크로코드 이외의 마이크로코드가 개발되어 새로운 제어 레지스터들로의 액세스를 지원할 수 있다.
제어 레지스터들 1-N(134-138)에 액세스하기 위한 이 기술은 2개의 버스 인터페이스 모듈들(118, 140)을 경유하여 버스(150)를 가로질러 운용될 수 있다는 것에 주목해야 한다. 일 실시예에서, 다른 이유 없이 단지 버스(150) 및 메모리 인터페이스(132, 152)를 가로질러 메모리 액세스들을 지원할 수 있다면, 버스(150)는 I/O 어드레스 가능 메모리 공간을 벗어난 어드레스들을 지원할 수 있다. 여기에서는 칩셋(130)의 칩셋 기능 회로들이 프로세서(110)로부터 구조적으로 분리된 모듈 상에 구현될 수 있으며, 추가적인 전용 신호선들 없이 버스(150)를 통해 접속될 수 있는 것으로 도시되어 있으므로, 제어 레지스터들에 액세스하기 위한 본 기술은 FSB와 같은 기존의 통상적인 버스들을 가로질러 수행될 수 있다.
제어 레지스터들 1-N(136-138) 및 제어 레지스터들 A 및 B(120, 122)에 액세스하기 위한 결과적인 변경된 마이크로코드는 통상적으로 사용자에게 이용 불가능하기 때문에, 그것의 실행을 위한 특정한 트리거링 조건들이 부과될 수 있다. 예를 들어, 일 실시예에서, 마이크로코드 RAM(114)으로의 마이크로코드 패치 이미지(144) 또는 마이크로코드 패치 이미지(148)의 로드는 변경된 마이크로코드의 실행을 트리거할 수 있다. (마이크로코드 패치 이미지(144) 또는 마이크로코드 패치 이미지(148)의 로드는, 프로세서(110)로부터 RESET# 신호를 제거하는 것에 의해 차례로 트리거될 수 있다.) 이런 식으로, 마이크로코드 패치로부터의 제어 비트들이 마이크로코드 패치의 로드의 일부분으로서 제어 레지스터들 1-N(136-138) 및 제어 레지스터들 A 및 B(120, 122)에 기입될 수 있다.
다른 실시예에서는, 마이크로코드 ROM(112)에 2개의 마이크로코드 세트들, 즉, 사용자 명령어 마이크로코드를 위한 하나의 세트 및 디버그 모드에서의 사용을 위한 다른 세트가 존재할 수 있다. 다른 실시예들에서는, 2개의 마이크로코드 세트들이 마이크로코드 ROM(112)과 마이크로코드 RAM(114) 사이에 분할될 수 있다. 디버그 플래그(124)가 사용되어, 프로세서(110)가 사용자 모드에 있는지 또는 디버그 모드에 있는지를 지시할 수 있다. 디버그 플래그(124)는, 일부 실시예들에서, 제조 동안에는 설정될 수 있고(논리 참) 최종적인 제조 테스트 또는 납품을 위한 준비의 소정 부분 동안에는 소거(clear)될 수 있다(논리 거짓). 일부 실시예들에서는, 디버그 플래그(124)를 설정한 다음 프로세서(110)를 납품한 이후에 디버그 플래그(124)를 소거하기 위한 특수한 전자적 절차가 존재할 수 있다.
디버그 플래그(124)가 설정되는 경우, 제2 마이크로코드 세트가 특권 사용자에 의한 실행을 위해 인에이블될 수 있다. 이런 식으로, 제어 레지스터들 1-N(136-138) 및 제어 레지스터들 A 및 B(120, 122)와 같은 선택된 새로운 제어 레지스터들에 액세스하기 위한 마이크로코드는 디버그 모드에서만 실행되는 것으로 제한될 수 있다. 디버그 플래그가 프로세서(110)의 납품 이전에 소거되는 경우, 이러한 소거는 최종 사용자들이 제어 레지스터들에 액세스하지 못하게 할 수 있다.
이제 도 2를 참조하면, 본 개시의 일 실시예에 따른, 메모리 어드레스 공간들의 도면이 도시되어 있다. I/O 어드레스 가능 메모리 공간(210)은, 어드레스 가능 메모리 공간(220)과 비교할 때, 개별적으로 어드레싱되는 것으로 도시되어 있다. 일 실시예에서, 이러한 I/O 어드레스 가능 메모리 공간(210)은 16 비트의 어드레스(즉, (216 - 1) 또는 64K bytes)로 어드레싱될 수 있는 메모리 공간일 수 있다. 다른 실시예들에서, 몇 개의 어드레스들이 추가되어, 64K bytes + N bytes의 I/O 어드레스 가능 메모리 공간(210)을 제공할 수 있는데, 일 실시예에서, N=3이다. 프로세서가 32 비트 메모리 어드레스들을 사용하는 실시예들에서, 어드레스 가능 메모리 공간(220)은 232 또는 4G bytes일 수 있고; 프로세서가 64 비트 메모리 어드레스들을 사용하는 다른 실시예들에서, 어드레스 가능 메모리 공간(220)은 264 bytes일 수 있다.
도 2에서, 메모리 운용들 및 다른 마이크로코드 운용들을 통해서만 액세스 가능한 메모리 공간 부분인 어드레스 가능 메모리 공간(220)은 I/O 어드레스 가능 메모리 공간(210)에 직교하는 것으로 도시된다. 다른 실시예들에서, I/O 어드레스 가능 메모리 공간(210)과 어드레스 가능 메모리 공간(220) 사이에 상이한 세트의 경계들이 존재할 수 있다.
이제 도 3을 참조하면, 본 개시의 다른 실시예에 따른, 제어 레지스터들에 액세스하는 것을 도시한 도면이 예시되어 있다. 프로세서(310)는 TAP(test access port)을 준수하는 IEEE(Institute of Electrical and Electronics Engineers) Std. 1149 명세에 따라 동작하도록 구성될 수 있다("IEEE Standard Test Access Port and Boundary-Scan Architecture", IEEE Std. 1149.1-1990). 여기에서, 프로세서(310)는, 프로세서(310)가 IEEE Std. 1149 호환 가능 디버그 포트(374)에 의해 액세스될 수 있게 하는 TAP 인터페이스(370)를 갖는 것으로 도시된다. 디버그 포트(374)는 인터페이스(376)를 통해 직접적으로 그리고 경계 스캔 멀티플렉서(boundary scan multiplexer)(372)에 의해 제공되는 신호 버퍼링에 의해 프로세서(310)를 제어할 수 있다.
디버그 포트(374)는, 사용자가 그 사용자에 의해 통상적으로 액세스 가능하지 않은 프로세서(310)의 논리 부분들에 액세스할 수 있게 할 수 있다. 일 실시예에서, 디버그 포트(374)는, 사용자가 비-사용자 명령어 마이크로코드를 실행할 수 있게 할 수 있다. 이로 인해, 사용자는 I/O 어드레스 가능 메모리 공간을 벗어난 어드레스들을 가진, 제어 레지스터들 1-N(334-338) 및 제어 레지스터 A(320)와 같은 제어 레지스터들에 액세스할 수 있는 마이크로코드를 실행할 수 있다. 여기에서는, 도 1의 실시예에서와 같이, 사용자 명령어들이 한 세트의 마이크로코드에 의해 구현될 수 있고, 이러한 제어 레지스터들에 액세스할 수 있는 마이크로코드는 다른 세트의 마이크로코드에 속할 수 있다.
다른 실시예들에서, 디버그 포트(374)는, 제어 레지스터들 1-N(334-338) 및 제어 레지스터 A(320)와 같은 제어 레지스터들에 직접 기입하기 위해 사용될 수 있다.
이제 도 4를 참조하면, 본 개시의 다른 실시예에 따른, 제어 레지스터들에 액세스하는 것을 도시한 도면이 예시되어 있다. 도 4의 실시예에서, 프로세서들(410 및 480)은 멀티 드롭 버스(multi-drop bus)를 통해 데이터를 교환하지 않고, 지점간 데이터 링크(point-to-point data link)(460)를 통해 데이터를 교환한다. 또한, 별도 칩셋이 사용되지 않는다. 대신에, 메모리 인터페이스(472) 및 I/O 인터페이스(466)와 같은 선택된 칩셋 기능들이 프로세서(410)와 통합된다.
프로세서(410)는, 제어 레지스터들 1-N(434-438)과 같은, 본 개시의 제어 레지스터들을 포함할 수 있다. 프로세서(480)는 또한 프로세서(410)로부터 액세스 가능한 제어 레지스터들인 제어 레지스터들 A 및 B(484, 486)를 포함할 수 있다. 제어 레지스터들 A 및 B(484, 486)에 액세스하기 위한 본 기술은, 2개의 지점간 인터페이스 모듈들(462, 464)을 경유하여 지점간 데이터 링크(460)를 가로질러 운용될 수 있다는 것에 주목해야 한다. 일 실시예에서, 다른 이유 없이 단지 지점간 데이터 링크(460)가 지점간 데이터 링크(460) 및 메모리 인터페이스(472, 452)를 가로지르는 프로세서 B(480)로부터의 메모리 액세스들을 지원할 수 있다면, 지점간 데이터 링크(460)는 I/O 어드레스 가능 메모리 공간을 벗어난 어드레스들을 지원할 수 있다. 제어 레지스터들 1-N(434-438) 및 제어 레지스터들 A 및 B(484, 486)의 각각은 I/O 어드레스 가능 메모리 공간을 벗어난 어드레스들을 가진다.
마이크로코드 ROM(412)이 제공되어 베이스 마이크로코드 세트를 저장할 수 있고, 마이크로코드 RAM(414)이 제공되어 다른 마이크로코드 세트를 수신할 수 있다. 일 실시예에서, 이러한 다른 마이크로코드 세트가 마이크로코드 패치 이미지(444)로부터 또는 마이크로코드 패치 이미지(448)로부터 로드될 수 있다. 일 실시예에서, 비-사용자 액세스 가능 마이크로코드 세트는 제어 레지스터들 1-N(434-438) 및 제어 레지스터들 A 및 B(484, 486)로의 기입 및 그로부터의 판독을 허용하는 마이크로코드를 포함할 수 있다.
제어 레지스터들 1-N(434-438) 및 제어 레지스터들 A 및 B(484, 486)에 액세스하기 위한 마이크로코드는 통상적으로 사용자에게 이용 불가능하기 때문에, 그것의 실행을 위한 특정한 트리거링 조건들이 또한 부과될 수 있다. 예를 들어, 일 실시예에서, 마이크로코드 RAM(414)으로의 마이크로코드 패치 이미지(444) 또는 마이크로코드 패치 이미지(448)의 로드는 변경된 마이크로코드의 실행을 트리거할 수 있다. 이런 식으로, 마이크로코드 패치로부터의 제어 비트들이 마이크로코드 패치의 로드의 일부분으로서 제어 레지스터들 1-N(434-438) 및 제어 레지스터들 A 및 B(484, 486)에 기입될 수 있다. 다른 방법으로는, 제2 마이크로코드 세트가 마이크로코드 ROM(412)에 존재할 수 있고, 제어 레지스터들 1-N(434-438) 및 제어 레지스터들 A 및 B(484, 486)에 액세스하기 위한 마이크로코드는 도 1과 관련하여 상술된 바와 같이 디버그 모드 동안에 또는 도 3과 관련하여 상술된 바와 같이 TAP의 액션에 의해 실행될 수 있다.
이제 도 5A 및 도 5B를 참조하면, 본 개시의 2개의 실시예들에 따른, 본 개시의 제어 레지스터들에 액세스할 수 있는 프로세서들을 갖춘 시스템들의 개략도들이 도시되어 있다. 도 5A의 시스템은 일반적으로 프로세서들, 메모리, 및 입/출력 장치들이 시스템 버스에 의해 상호 접속되는 시스템을 나타내고, 도 5B의 시스템은 일반적으로 프로세서들, 메모리, 및 입/출력 장치들이 다수의 지점간 인터페이스들에 의해 상호 접속되는 시스템을 나타낸다.
도 5A의 시스템은 하나 또는 수개의 프로세서들을 포함할 수 있는데, 명확함을 위해 여기에서는 2개의 프로세서들(40, 60)만이 도시된다. 프로세서들(40, 60)은 레벨 1 캐시들(42, 62)을 포함할 수 있다. 도 5A의 시스템은 버스 인터페이스들(44, 64, 12, 8)을 통해 시스템 버스(6)와 접속되어 있는 여러 기능들을 가질 수 있다. 일 실시예에서, 시스템 버스(6)는 Intel® Corporation에 의해 제조되는 Pentium® 클래스 마이크로프로세서들에 이용되는 FSB(front side bus)일 수 있다. 다른 실시예들에서는, 다른 버스들이 사용될 수 있다. 일부 실시예들에서는, 메모리 컨트롤러(34) 및 버스 브리지(32)를 집합적으로 칩셋이라고 할 수도 있다. 일부 실시예들에서는, 칩셋의 기능들이 도 5A의 실시예에 도시된 것과는 상이하게 물리적 칩들 사이에서 분할될 수 있다.
메모리 컨트롤러(34)는, 프로세서들(40, 60)이 시스템 메모리(10) 및 펌웨어 EPROM(erasable programmable read-only memory)(36)으로부터 판독할 수 있고 그것들에 기입할 수 있게 할 수 있다. 일부 실시예들에서, 펌웨어는 프로세서들(40, 60)의 마이크로코드 RAM(도시되지 않음)으로 로드하기 위한 마이크로코드 패치 이미지를 제공할 수 있다. 일부 실시예들에서, 펌웨어 EPROM(36)은 플래시 메모리를 이용할 수 있다. 메모리 컨트롤러(34)는, 메모리 판독 및 기입 데이터를 시스템 버스(6) 상의 버스 에이전트(bus agent)들에 그리고 버스 에이전트들로부터 전달하는 버스 인터페이스(8)를 포함할 수 있다. 메모리 컨트롤러(34)는 고성능 그래픽 인터페이스(39)를 거쳐서 고성능 그래픽 회로(38)와 접속할 수도 있다. 소정 실시예들에서, 고성능 그래픽 인터페이스(39)는 향상된 그래픽 포트(advanced graphics port)(AGP) 인터페이스일 수 있다. 메모리 컨트롤러(34)는 시스템 메모리(10)로부터의 데이터를 고성능 그래픽 인터페이스(39)를 거쳐서 고성능 그래픽 회로(38)로 보낼 수 있다.
도 5B의 시스템은 또한 하나 또는 수개의 프로세서들을 포함할 수 있는데, 명확함을 위해 2개의 프로세서들(70, 80)만이 도시된다. 프로세서들(70, 80)은 각각 메모리(2, 4) 및 펌웨어(3, 5)와 접속하기 위해 로컬 MCH(memory controller hub)(72, 82)를 포함할 수 있다. 일부 실시예들에서, 펌웨어는 프로세서들(70, 80)의 마이크로코드 RAM(도시되지 않음)으로 로드하기 위한 마이크로코드 패치 이미지를 제공할 수 있다. 프로세서들(70, 80)은 지점간 인터페이스 회로들(78, 88)을 사용하는 지점간 인터페이스(50)를 통해 데이터를 교환할 수 있다. 프로세서들(70, 80)은 각각 지점간 인터페이스 회로들(76, 94, 86, 98)을 사용하는 개개의 지점간 인터페이스들(52, 54)을 통해 칩셋(90)과 데이터를 교환할 수 있다. 칩셋(90)은 또한 고성능 그래픽 인터페이스(92)를 통해 고성능 그래픽 회로(38)와 데이터를 교환할 수 있다.
도 5A의 시스템에서, 버스 브리지(32)는 시스템 버스(6)와 버스(16) 사이의 데이터 교환들을 허용할 수 있으며, 일부 실시예들에서 ISA(industry standard architecture) 버스 또는 PCI(peripheral component interconnect) 버스일 수 있다. 도 5B의 시스템에서는, 칩셋(90)이 버스 인터페이스(96)를 통해 버스(16)와 데이터를 교환할 수 있다. 어떤 시스템에서든, 버스(16)에는, 일부 실시예들에서 저성능 그래픽 컨트롤러들, 비디오 컨트롤러들, 및 네트워킹 컨트롤러들을 포함하는 다양한 입/출력(I/O) 장치들(14)이 존재할 수 있다. 일부 실시예들에서, 버스(16)와 버스(20) 사이의 데이터 교환들을 허용하기 위해 다른 버스 브리지(18)가 사용될 수 있다. 버스(20)는, 일부 실시예들에서, SCSI(small computer system interface) 버스, IDE(integrated drive electronics) 버스, 또는 USB(universal serial bus) 버스일 수 있다. 추가적인 I/O 장치들이 버스(20)와 접속될 수 있다. 추가적인 I/O 장치들은, 마우스들을 포함하는 키보드 및 커서 제어 장치들(22), 오디오 I/O(24), 모뎀들 및 네트워크 인터페이스들을 포함하는 통신 장치들(26), 그리고 데이터 저장 장치들(28)을 포함할 수 있다. 소프트웨어 코드(30)가 데이터 저장 장치(28)에 저장될 수 있고, 일부 실시예들에서, 소프트웨어 코드(30)는 마이크로코드 패치 이미지를 포함할 수 있다. 일부 실시예들에서, 데이터 저장 장치(28)는 고정된 자기 디스크, 플로피 디스크 드라이브, 광학 디스크 드라이브, 자기-광학 디스크 드라이브, 자기 테이프, 또는 플래시 메모리를 포함하는 비-휘발성 메모리일 수 있다.
상기 명세에서, 본 발명은 그의 예시적인 특정 실시예들을 참조하여 설명되었다. 그러나, 첨부된 청구항들에 기술되는 본 발명의 광범위한 사상 및 범위로부터 벗어나지 않고 다양한 변경들 및 수정들이 이루어질 수 있다는 것이 명백할 것이다. 따라서, 명세 및 도면들은 한정적인 의미가 아니라 예시적인 것으로 간주되어야 한다.

Claims (51)

  1. 장치로서,
    상기 장치 외부의 프로세서와 연결하기 위한 버스 인터페이스; 및
    상기 프로세서의 마이크로코드 세트(microcode set)의 제어 하에서 상기 프로세서의 입/출력 어드레스 공간을 벗어난 어드레스에 의해 액세스되는 제어 레지스터
    를 포함하는 장치.
  2. 제1항에 있어서,
    상기 어드레스는 상기 버스 인터페이스에 의해 지원되는 장치.
  3. 제1항에 있어서,
    상기 어드레스는 상기 프로세서의 물리적 레지스터에 의해 지원되는 장치.
  4. 제1 마이크로코드 세트의 제어 하에서 명령어 세트를 실행하기 위한 제1 로직;
    상기 명령어 세트의 입/출력 어드레스 공간에 포함되지 않은 어드레스를 포함하기 위한 물리적 레지스터; 및
    제2 마이크로코드 세트의 제어 하에서 상기 어드레스를 사용하여 제어 레지스터에 액세스하기 위한 제2 로직
    을 포함하는 프로세서.
  5. 제4항에 있어서,
    제2 마이크로코드 세트를 수신하기 위한 제3 로직을 더 포함하는 프로세서.
  6. 제5항에 있어서,
    상기 제2 마이크로코드 세트는 상기 물리적 레지스터로부터 상기 어드레스를 발행하기 위한 마이크로코드를 포함하는 프로세서.
  7. 제5항에 있어서,
    상기 제3 로직은 상기 제2 마이크로코드 세트를 외부 메모리로부터 수신하는 프로세서.
  8. 제5항에 있어서,
    상기 어드레스를 상기 프로세서 외부로 전송하기 위한 버스 인터페이스를 더 포함하는 프로세서.
  9. 삭제
  10. 제4항에 있어서,
    상기 제2 마이크로코드 세트가 실행될 수 있다는 것을 지시하기 위한 디버그 플래그를 더 포함하는 프로세서.
  11. 제10항에 있어서,
    상기 디버그 플래그는 상기 프로세서의 합격 판정 테스트(acceptance test) 동안 소거되는 것인 프로세서.
  12. 제10항에 있어서,
    상기 디버그 플래그는 사후-합격 판정 테스트 절차(post-acceptance test procedure)에 의해 설정되는 것인 프로세서.
  13. 제4항에 있어서,
    테스트 커맨드를 수신하기 위한 TAP(test access port) 인터페이스를 더 포함하는 프로세서.
  14. 제13항에 있어서,
    상기 제2 마이크로코드 세트는 상기 테스트 커맨드에 응답하여 실행될 수 있는 프로세서.
  15. 제4항에 있어서,
    상기 어드레스를 상기 프로세서 외부로 전송하기 위한 버스 인터페이스를 더 포함하는 프로세서.
  16. 프로세서 및 칩셋을 포함하고,
    상기 프로세서는,
    제1 마이크로코드 세트의 제어 하에서 명령어 세트를 실행하기 위한 제1 로직, 상기 프로세서를 상기 프로세서 외부의 칩셋과 연결하기 위한 제1 인터페이스, 및 상기 명령어 세트의 입/출력 어드레스 공간에 포함되지 않은 어드레스를 포함하는 물리적 레지스터를 포함하고,
    상기 칩셋은,
    선택된 칩셋 기능들을 수행하기 위한 제2 로직, 상기 칩셋을 상기 프로세서와 연결하기 위한 제2 인터페이스, 및 상기 어드레스에 의해 액세스되는 제어 레지스터를 포함하는 시스템.
  17. 제16항에 있어서,
    상기 프로세서는 제2 마이크로코드 세트를 수신하기 위한 제3 로직을 포함하는 시스템.
  18. 제17항에 있어서,
    상기 제2 마이크로코드 세트는 상기 제어 레지스터에 액세스하기 위해 상기 어드레스를 상기 물리적 레지스터로부터 발행하기 위한 마이크로코드를 포함하는 시스템.
  19. 제17항에 있어서,
    상기 제2 로직 및 상기 제3 로직은 상기 제2 마이크로코드 세트를 상기 제3 로직으로 로드하는 시스템.
  20. 제19항에 있어서,
    상기 제2 마이크로코드 세트는 상기 시스템 외부에 저장된 제2 마이크로코드 세트 이미지로부터 로드되는 시스템.
  21. 제16항에 있어서,
    상기 제1 인터페이스 및 제2 인터페이스는 상기 프로세서와 상기 칩셋 사이의 버스인 시스템.
  22. 제16항에 있어서,
    상기 프로세서는 상기 어드레스를 사용하여 상기 제어 레지스터에 액세스하기 위한 마이크로코드를 포함하는 제2 마이크로코드 세트를 더 포함하는 시스템.
  23. 제22항에 있어서,
    상기 프로세서는 상기 제2 마이크로코드 세트가 실행될 수 있다는 것을 지시 하기 위한 디버그 플래그를 더 포함하는 시스템.
  24. 제23항에 있어서,
    상기 디버그 플래그는 상기 프로세서의 합격 판정 테스트 동안 소거되는 것인 시스템.
  25. 제23항에 있어서,
    상기 디버그 플래그는 사후-합격 판정 테스트 절차에 의해 설정되는 것인 시스템.
  26. 제22항에 있어서,
    상기 프로세서는 테스트 커맨드를 수신하기 위한 TAP 인터페이스를 포함하는 시스템.
  27. 제26항에 있어서,
    상기 제2 마이크로코드 세트는 상기 테스트 커맨드에 응답하여 실행될 수 있는 시스템.
  28. 제어 레지스터의 어드레스를 프로세서의 물리적 레지스터에 배치하는 단계 - 상기 어드레스는 제1 마이크로코드 세트의 제어 하에서 명령어 세트의 입/출력 어 드레스 공간에 포함되지 않음 - ; 및
    상기 물리적 레지스터로부터의 상기 어드레스를 제2 마이크로코드 세트의 제어 하에서 상기 제어 레지스터에 발행하는 단계
    를 포함하는 방법.
  29. 제28항에 있어서,
    상기 제2 마이크로코드 세트를 상기 프로세서로 로드하는 단계를 더 포함하는 방법.
  30. 제29항에 있어서,
    상기 로드하는 단계에 응답하여 상기 제2 마이크로코드 세트를 실행하는 단계를 더 포함하는 방법.
  31. 제28항에 있어서,
    디버그 플래그의 상태를 점검하여 프로세서가 디버그 모드에 있는지의 여부를 판정하는 단계를 더 포함하는 방법.
  32. 제31항에 있어서,
    상기 발행하는 단계는 상기 점검하는 단계에 응답하는 방법.
  33. 제31항에 있어서,
    합격 판정 테스트에 응답하여 상기 디버그 플래그를 소거하는 단계를 더 포함하는 방법.
  34. 제31항에 있어서,
    사후-합격 판정 테스트에 응답하여 상기 디버그 플래그를 설정하는 단계를 더 포함하는 방법.
  35. 제29항에 있어서,
    상기 발행하는 단계는 TAP 인터페이스로부터 수신되는 테스트 커맨드에 응답하는 방법.
  36. 제어 레지스터의 어드레스를 프로세서의 물리적 레지스터에 배치하기 위한 수단 - 상기 어드레스는 제1 마이크로코드 세트의 제어 하에서 명령어 세트의 입/출력 어드레스 공간에 포함되지 않음 - ; 및
    상기 물리적 레지스터로부터의 상기 어드레스를 제2 마이크로코드 세트의 제어 하에서 상기 제어 레지스터에 발행하기 위한 수단
    을 포함하는 장치.
  37. 제36항에 있어서,
    상기 제2 마이크로코드 세트를 상기 프로세서로 로드하기 위한 수단을 더 포함하는 장치.
  38. 제37항에 있어서,
    상기 로드하기 위한 수단에 응답하여 상기 제2 마이크로코드 세트를 실행하기 위한 수단을 더 포함하는 장치.
  39. 제36항에 있어서,
    디버그 플래그의 상태를 점검하여 프로세서가 디버그 모드에 있는지의 여부를 판정하기 위한 수단을 더 포함하는 장치.
  40. 제39항에 있어서,
    상기 발행하기 위한 수단은 상기 점검하기 위한 수단에 응답하는 장치.
  41. 제39항에 있어서,
    합격 판정 테스트에 응답하여 상기 디버그 플래그를 소거하기 위한 수단을 더 포함하는 장치.
  42. 제41항에 있어서,
    사후-합격 판정 테스트에 응답하여 상기 디버그 플래그를 설정하기 위한 수 단을 더 포함하는 장치.
  43. 제36항에 있어서,
    상기 발행하기 위한 수단은 TAP 인터페이스로부터 수신되는 테스트 커맨드에 응답하는 장치.
  44. 프로세서에 의해 실행될 때,
    제어 레지스터의 어드레스를 프로세서의 물리적 레지스터에 배치하는 단계 - 상기 어드레스는 제1 마이크로코드 세트의 제어 하에서 명령어 세트의 입/출력 어드레스 공간에 포함되지 않음 - ; 및
    상기 물리적 레지스터로부터의 상기 어드레스를 제2 마이크로코드 세트의 제어 하에서 상기 제어 레지스터로 발행하는 단계를 포함하는 프로세스를 수행하는 소프트웨어 코드를 포함하는 컴퓨터 판독 가능한 매체.
  45. 제44항에 있어서,
    상기 프로세서로 로드하기 위한 상기 제2 마이크로코드 세트의 이미지를 더 포함하는 컴퓨터 판독 가능한 매체.
  46. 제45항에 있어서,
    상기 제2 마이크로코드 세트의 이미지를 상기 프로세서로 로드하는 단계에 응답하여 상기 제2 마이크로코드 세트를 실행하는 단계를 더 포함하는 컴퓨터 판독 가능한 매체.
  47. 제44항에 있어서,
    디버그 플래그의 상태를 점검하여 프로세서가 디버그 모드에 있는지의 여부를 판정하는 단계를 더 포함하는 컴퓨터 판독 가능한 매체.
  48. 제47항에 있어서,
    상기 발행하는 단계는 상기 점검하는 단계에 응답하는 컴퓨터 판독 가능한 매체.
  49. 제48항에 있어서,
    합격 판정 테스트에 응답하여 상기 디버그 플래그를 소거하는 단계를 더 포함하는 컴퓨터 판독 가능한 매체.
  50. 제48항에 있어서,
    사후-합격 판정 테스트에 응답하여 상기 디버그 플래그를 설정하는 단계를 더 포함하는 컴퓨터 판독 가능한 매체.
  51. 제44항에 있어서,
    상기 발행하는 단계는 TAP 인터페이스로부터 수신되는 테스트 커맨드에 응답하는 컴퓨터 판독 가능한 매체.
KR1020077014104A 2004-12-22 2005-12-21 사설 운용들을 통해 액세스되는 제어 레지스터들을 위한시스템 및 방법 KR100928757B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/022,595 2004-12-22
US11/022,595 US20060136608A1 (en) 2004-12-22 2004-12-22 System and method for control registers accessed via private operations
PCT/US2005/046989 WO2006069364A2 (en) 2004-12-22 2005-12-21 System and method for control registers accessed via private operations

Publications (2)

Publication Number Publication Date
KR20070086506A KR20070086506A (ko) 2007-08-27
KR100928757B1 true KR100928757B1 (ko) 2009-11-25

Family

ID=36597501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077014104A KR100928757B1 (ko) 2004-12-22 2005-12-21 사설 운용들을 통해 액세스되는 제어 레지스터들을 위한시스템 및 방법

Country Status (6)

Country Link
US (1) US20060136608A1 (ko)
KR (1) KR100928757B1 (ko)
CN (1) CN100585554C (ko)
DE (1) DE112005003216T5 (ko)
TW (1) TWI334082B (ko)
WO (1) WO2006069364A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827390B2 (en) * 2007-04-10 2010-11-02 Via Technologies, Inc. Microprocessor with private microcode RAM
US20100180104A1 (en) * 2009-01-15 2010-07-15 Via Technologies, Inc. Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
US20140320608A1 (en) * 2010-12-13 2014-10-30 Nokia Corporation Method and Apparatus for 3D Capture Synchronization
US9250902B2 (en) * 2012-03-16 2016-02-02 International Business Machines Corporation Determining the status of run-time-instrumentation controls
US9323715B2 (en) 2013-11-14 2016-04-26 Cavium, Inc. Method and apparatus to represent a processor context with fewer bits
CN106559339B (zh) 2015-09-30 2019-02-19 华为技术有限公司 一种报文处理方法及装置
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US20230004391A1 (en) * 2017-06-28 2023-01-05 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US6038661A (en) 1994-09-09 2000-03-14 Hitachi, Ltd. Single-chip data processor handling synchronous and asynchronous exceptions by branching from a first exception handler to a second exception handler
KR20000074425A (ko) * 1999-05-20 2000-12-15 윤종용 어드레스 확장이 가능한 데이터 처리 시스템
US20030126454A1 (en) 2001-12-28 2003-07-03 Glew Andrew F. Authenticated code method and apparatus

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947316A (en) * 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
GB2200483B (en) * 1987-01-22 1991-10-16 Nat Semiconductor Corp Memory referencing in a high performance microprocessor
US5201039A (en) * 1987-09-30 1993-04-06 Mitsubishi Denki Kabushiki Kaisha Multiple address-space data processor with addressable register and context switching
US5182811A (en) * 1987-10-02 1993-01-26 Mitsubishi Denki Kabushiki Kaisha Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt
US5185878A (en) * 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US5136691A (en) * 1988-01-20 1992-08-04 Advanced Micro Devices, Inc. Methods and apparatus for caching interlock variables in an integrated cache memory
JP2507638B2 (ja) * 1989-12-01 1996-06-12 三菱電機株式会社 デ―タ処理装置
US5124989A (en) * 1990-01-08 1992-06-23 Microsoft Corporation Method of debugging a computer program
US5495615A (en) * 1990-12-21 1996-02-27 Intel Corp Multiprocessor interrupt controller with remote reading of interrupt control registers
US5497494A (en) * 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
JPH08272648A (ja) * 1994-12-29 1996-10-18 Hitachi Ltd デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US5544311A (en) * 1995-09-11 1996-08-06 Rockwell International Corporation On-chip debug port
US6041406A (en) * 1997-04-08 2000-03-21 Advanced Micro Devices, Inc. Parallel and serial debug port on a processor
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6314530B1 (en) * 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US6009488A (en) * 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6438664B1 (en) * 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US7073173B1 (en) * 2000-12-04 2006-07-04 Microsoft Corporation Code and thread differential addressing via multiplex page maps

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038661A (en) 1994-09-09 2000-03-14 Hitachi, Ltd. Single-chip data processor handling synchronous and asynchronous exceptions by branching from a first exception handler to a second exception handler
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
KR20000074425A (ko) * 1999-05-20 2000-12-15 윤종용 어드레스 확장이 가능한 데이터 처리 시스템
US20030126454A1 (en) 2001-12-28 2003-07-03 Glew Andrew F. Authenticated code method and apparatus

Also Published As

Publication number Publication date
DE112005003216T5 (de) 2007-10-31
CN101088064A (zh) 2007-12-12
WO2006069364A2 (en) 2006-06-29
TW200632659A (en) 2006-09-16
US20060136608A1 (en) 2006-06-22
WO2006069364A3 (en) 2006-10-05
TWI334082B (en) 2010-12-01
KR20070086506A (ko) 2007-08-27
CN100585554C (zh) 2010-01-27

Similar Documents

Publication Publication Date Title
KR100928757B1 (ko) 사설 운용들을 통해 액세스되는 제어 레지스터들을 위한시스템 및 방법
US7127579B2 (en) Hardened extended firmware interface framework
JP6306578B2 (ja) メモリ保護装置及び保護方法
US6205560B1 (en) Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
JP5668143B2 (ja) データ処理装置のデバッグ
US8443423B2 (en) Secure information processing
US7917740B1 (en) Virtualization assist for legacy x86 floating point exception handling
US8443175B2 (en) Microprocessor with first processor for debugging second processor
US5838897A (en) Debugging a processor using data output during idle bus cycles
KR101793318B1 (ko) 명령어 에뮬레이션 프로세서, 방법 및 시스템
US7467285B2 (en) Maintaining shadow page tables in a sequestered memory region
US9058163B2 (en) Known good code for on-chip device management
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
US7934076B2 (en) System and method for limiting exposure of hardware failure information for a secured execution environment
US6594756B1 (en) Multi-processor system for selecting a processor which has successfully written it's ID into write-once register after system reset as the boot-strap processor
US6775734B2 (en) Memory access using system management interrupt and associated computer system
US20190156015A1 (en) Smm protection utilizing ring separation and smi isolation
CN111556996A (zh) 控制存储器访问中的守卫标签检查
EP2817714B1 (en) Hiding logical processors from an operating system on a computer
US6473853B1 (en) Method and apparatus for initializing a computer system that includes disabling the masking of a maskable address line
US7774758B2 (en) Systems and methods for secure debugging and profiling of a computer system
CN109446755B (zh) 内核钩子函数保护方法、装置、设备以及存储介质
US9262340B1 (en) Privileged mode methods and circuits for processor systems
JP2008276691A (ja) ハードディスクインターフェースを模擬したインターフェースカード
US11216280B2 (en) Exception interception

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee