KR101733903B1 - 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(ras) 흐름들을 지원하기 위한 메커니즘 - Google Patents

피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(ras) 흐름들을 지원하기 위한 메커니즘 Download PDF

Info

Publication number
KR101733903B1
KR101733903B1 KR1020157020222A KR20157020222A KR101733903B1 KR 101733903 B1 KR101733903 B1 KR 101733903B1 KR 1020157020222 A KR1020157020222 A KR 1020157020222A KR 20157020222 A KR20157020222 A KR 20157020222A KR 101733903 B1 KR101733903 B1 KR 101733903B1
Authority
KR
South Korea
Prior art keywords
stm
ram
bios
memory
hot plug
Prior art date
Application number
KR1020157020222A
Other languages
English (en)
Other versions
KR20150102090A (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 KR20150102090A publication Critical patent/KR20150102090A/ko
Application granted granted Critical
Publication of KR101733903B1 publication Critical patent/KR101733903B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

피어 모니터에서 신뢰성, 이용 가능성, 서비스 가능성(RAS) 흐름들을 지원하기 위한 메커니즘이 개시된다. 본 개시내용의 방법은 처리 디바이스에 의해 시스템 관리 인터럽트(SMI) 이벤트를 수신하는 단계를 포함한다. 이 방법은 SMI 이벤트에 응답하여, 판독 전용 메모리(ROM) 엔트리 포인트로부터 실행할 특권 관리자를 호출하여 SMI 이벤트를 처리하는 단계를 더 포함하고, 특권 관리자는 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공하는 핫 플러그 서비스 모듈을 포함한다.

Description

피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 메커니즘{MECHANISM TO SUPPORT RELIABILITY, AVAILABILITY, AND SERVICEABILITY (RAS) FLOWS IN A PEER MONITOR}
본 개시내용의 실시예들은 일반적으로 컴퓨터 보안에 관한 것으로서, 더욱 구체적으로는 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS; reliability, availability, and serviceability) 흐름들을 지원하기 위한 메커니즘에 관한 것이다.
SMM은 (OS를 포함하는) 모든 정상적인 실행이 중지되고 특수한 별개의 소프트웨어(통상적으로 펌웨어 또는 하드웨어 지원 디버거)가 고특권 모드(high-privilege mode)로 실행되는 동작 모드이다. SMM은 격리된 메모리 및 실행 환경을 제공하며, SMM 코드는 OS에게 보이지 않지만, 풀 액세스(full access)를 유지하여 물리 메모리를 호스트하고 주변 하드웨어에 대한 제어를 완료한다. SMM이 개시될 때, 프로세서의 현재 상태가 저장되고, 모든 다른 프로세스들이 중단된다. 디버깅, 하드웨어 관리, 보안 기능들, 에뮬레이션 등과 같은 고특권 동작들이 SMM 모드에서 수행될 수 있으며, 이어서 컴퓨팅 디바이스는 프로세서의 저장 상태에 기초하여 동작을 재개할 수 있다. SMI의 발생시에, 컴퓨팅 디바이스는 SMM에 들어갈 수 있다.
SMM 코드 구현들에서의 취약성들은 컴퓨팅 디바이스들 내의 일부 현행 보안 스킴들의 도입을 유도하였으며, 이러한 스킴들에서는 디바이스 동작에 중요한 소프트웨어가 격리를 통해 보호된다. 예를 들어, 일부 처리 디바이스들 상에 포함된 예를 들어 가상화 기술(VT; Virtualization Technology) 기능과 같은 가상 기계(VM; virtual machine) 환경에서는, 하나 이상의 기계 관리자가 상이한 동작 환경들에서 동작하는 VM들을 제어할 수 있다. 예를 들어, VT는 (하이퍼바이저들로도 알려진) 가상 기계 관리자들(VMM)이 게스트 운영 체제들(OS)의 특권을 박탈할 수 있는 주요 모니터 모드를 정의한다. 유사하게, VT는 시스템 관리 인터럽트(SMI) 핸들러의 특권을 박탈(de-privilege)할 수 있는 시스템 관리 모드 전달 모니터(STM)도 제공하며, 따라서 SMI 핸들러는 시스템 관리 모드(SMM)에서 STM의 게스트로서 동작한다.
그러나, STM의 현재의 구현들은 신뢰성, 이용 가능성 및 서비스 가능성(RAS; reliability, availability, and serviceability)을 지원하지 않는다. RAS는 데이터 무결성을 보호하고 컴퓨터 시스템으로 하여금 장애 없이 오랜 기간 동안 이용 가능하게 유지되는 것을 가능하게 하는 다수의 특징을 기술하는 데 사용되는 관련 속성들의 세트이다. RAS 속성들은 컴퓨터 제품 또는 컴포넌트를 설계, 제조, 구매 또는 이용할 때 고려될 수 있다. 현재의 STM 구현들은 핫 플러그(hot plug), 판독 전용 메모리(ROM) SMI 핸들러 특징 및 다른 RAS 액션들을 지원할 때 RAS 요건들을 충족시키지 못한다.
예를 들어, 핫 플러그 지원의 경우, 현재의 STM 구현들은 CPU 또는 메모리 핫 플러그 지원을 제공하지 못한다. ROM SMI 핸들러 특징 지원의 경우, 현재의 STM 구현들은 동적 랜덤 액세스 메모리(DRAM)에 대한 STM을 지원할 뿐이다.
본 개시내용은 아래에 제공되는 상세한 설명으로부터 그리고 본 개시내용의 다양한 실시예들의 첨부 도면들로부터 더 충분히 이해될 것이다. 그러나, 도면들은 본 개시내용을 특정 실시예들로 한정하는 것으로 간주되지 않아야 하며, 설명 및 이해를 위한 것일 뿐이다.
도 1은 본 개시내용의 일 실시예에 따른, 피어 모니터(peer monitor)에서 신뢰성, 이용 가능성, 서비스 가능성(RAS) 흐름들을 지원하는 디바이스의 블록도이다.
도 2는 본 개시내용의 일 실시예에 따른, 피어 모니터의 ROM 기반 실행을 구현하기 위한 메모리 모듈을 나타내는 블록도이다.
도 3은 본 개시내용의 일 실시예에 따른, RAS를 지원하기 위한 피어 모니터의 판독 전용 메모리(ROM) 기반 실행을 위한 방법의 흐름도이다.
도 4는 본 개시내용의 실시예들에 따른, 피어 모니터에 의한 RAS에 대한 핫 플러그 지원을 나타내는 블록도이다.
도 5a 및 5b는 본 개시내용의 일 실시예에 따른, 메모리의 추가 또는 제거 시의 STM에 의한 핫 플러그 지원을 위한 방법들을 나타내는 흐름도들이다.
도 6a 및 6b는 본 개시내용의 일 실시예에 따른, 프로세서들의 추가 또는 제거 시의 STM에 의한 핫 플러그 지원을 위한 방법을 나타내는 흐름도들이다.
도 7은 컴퓨터 시스템의 일 실시예의 블록도를 나타낸다.
본 개시내용의 실시예들은 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 메커니즘을 제공한다. 일 실시예에서, RAS 가능 고특권(HP) 관리자가 시스템 관리 인터럽트(SMI) 전달 모니터(STM)와 같은 피어 모니터로서 동작한다. STM은 SMI 핸들러의 특권을 박탈할 수 있고, 따라서 SMI 핸들러는 시스템 관리 모드(SMM)에서 STM의 게스트로서 동작한다. STM의 현재의 구현들은 RAS 흐름을 지원하지 않으므로, 본 개시내용의 실시예들은 RAS의 특징들을 지원하도록 구성되는 RAS 가능 HP 관리자를 구현한다. 구체적으로, STM과 같은 RAS 가능 HP 관리자는 ROM 기반 실행 및 핫 플러그 기능 지원을 구현할 수 있다.
일 실시예에서, 본 개시내용의 방법은 처리 디바이스에 의해 시스템 관리 인터럽트(SMI) 이벤트를 수신하는 단계를 포함한다. 방법은 SMI 이벤트에 응답하여, 판독 전용 메모리(ROM) 엔트리 포인트로부터 실행할 특권 관리자를 호출하여 SMI 이벤트를 처리하는 단계를 더 포함하며, 특권 관리자는 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공하기 위한 핫 플러스 서비스 모듈을 포함한다.
도 1은 본 개시내용의 일 실시예에 따른, 피어 모니터에서 RAS 흐름들을 지원하는 디바이스(100)의 블록도이다. 디바이스(100)의 일부 예들은 셀룰러 핸드셋 또는 스마트폰과 같은 이동 통신 디바이스, 태블릿 컴퓨터, 넷북, 노트북 컴퓨터, 랩탑 컴퓨터와 같은 이동 컴퓨팅 디바이스, 데스크탑 컴퓨터, 서버 컴퓨터 등을 포함할 수 있지만 이에 한정되지 않는다.
디바이스(100)는 예를 들어 디바이스(100)에 대한 기준선 동작들을 처리하기 위한 호스트(102)를 포함할 수 있다. 호스트(102)는 예를 들어 처리 모듈(104), 브리징 모듈(106), 메모리 모듈(108) 및 다른 모듈들(110)을 포함할 수 있다. 처리 모듈(104)은 분리된 컴포넌트 내에 위치하는 (처리 디바이스들로도 알려진) 하나 이상의 프로세서 또는 대안으로서 예를 들어 시스템-온-칩(SOC; System-on-a-Chip) 구성으로 배열된 단일 집적 회로(IC) 내에 구현된 하나 이상의 처리 코어를 포함할 수 있다.
브리징 모듈(106)은 처리 모듈(104)을 지원하도록 구성되는 회로를 포함할 수 있다. 예시적인 회로는 디바이스(100) 내의 다양한 버스들을 이용하여 통신을 처리하도록 구성될 수 있는 인터페이스/브리징 회로(예로서, 집적 회로들(IC들)의 그룹)를 포함할 수 있다. 예를 들어, 브리징 모듈(106)은 통신의 하나의 타입/속도로부터 다른 타입/속도로 변환함으로써 다양한 모듈들 간의 시그널링을 처리할 수 있으며, 또한 다양한 상이한 디바이스들과 호환되어 상이한 시스템 구현들, 업그레이드들 등을 가능하게 할 수 있다. 브리징 모듈(106)의 기능 중 일부는 처리 모듈(104), 메모리 모듈(108) 또는 다른 모듈들(110) 내에 통합될 수도 있다.
처리 모듈(104)은 명령어들을 실행할 수 있다. 명령어들은 처리 모듈(104)이 데이터 판독, 데이터 기록, 데이터 처리, 데이터 형성(formulating data), 데이터 변환, 데이터 변형 등과 같은, 그러나 이에 한정되지 않는 활동들을 수행하게 하기 위한 프로그램 코드를 포함할 수 있다. 명령어들, 데이터 등을 포함하는 정보가 메모리 모듈(108)에 저장될 수 있다.
메모리 모듈(108)은 고정 또는 이동식 포맷의 랜덤 액세스 메모리(RAM) 또는 판독 전용 메모리(ROM)를 포함할 수 있다. RAM은 디바이스(100)의 동작 동안 정보를 유지하기 위한 메모리, 예를 들어 정적 RAM(SRAM) 또는 동적 RAM(DRAM)을 포함할 수 있다. ROM은 디바이스(100)가 작동할 때 명령어들을 제공하기 위한 컴퓨팅 디바이스 BIOS 메모리, 전자 프로그래밍 가능 ROM(EPROM)과 같은 프로그래밍 가능 메모리, 플래시 등과 같은 메모리들을 포함할 수 있다. 다른 고정 및/또는 이동식 메모리는 플로피 디스크, 하드 드라이브 등과 같은 자기 메모리들, 반도체 플래시 메모리(예로서, eMMC 등)와 같은 전자 메모리들, 이동식 메모리 카드 또는 스틱(예로서, USB, 마이크로-SD 등), 컴팩트 디스크 기반 ROM(CD-ROM), 홀로그래픽과 같은 광학 메모리들 등을 포함할 수 있다.
다른 모듈들(110)은 디바이스(100) 내의 다른 기능의 지원과 관련된 모듈들을 포함할 수 있다. 다른 모듈들(110)은 예를 들어 디바이스(100)에 전력을 공급하기 위한 모듈들, 디바이스(100)에서 유선 및/또는 무선 통신을 지원하기 위한 모듈들, 디바이스(100)에서 사용자 인터페이스(UI) 특징들을 제공하기 위한 모듈들, 특수 기능을 지원하기 위한 모듈들 등을 포함할 수 있다. 다른 모듈들(100)의 구성은 예를 들어 폼 팩터, 디바이스(100)가 구성된 용도 등에 따라 변할 수 있다.
본 개시내용의 일 실시예에 따른 메모리 모듈(108)의 일 실시예가 108'에 확대도로 도시된다. 메모리 모듈(108')은 고특권 실행 환경(112) 및 저특권 실행 환경(120)을 포함할 수 있다. 고특권 실행 환경(112)에서 실행되는 소프트웨어는 디바이스(100) 내의 다른 소프트웨어의 동작에 영향을 줄 수 있지만(예를 들어, 저특권 실행 환경(120) 내의 소프트웨어를 판독, 기록 및/또는 실행할 수 있지만), 저특권 실행 환경(120)에서 실행되는 소프트웨어는 고특권 실행 환경(112)에서 실행되는 임의의 소프트웨어에 영향을 주지 못한다. 고특권 실행 환경(112)은 BIOS 게스트(116) 및 다른 게스트들(118)의 동작들을 관리하기 위한 신뢰성, 이용 가능성, 서비스 가능성(RAS) 가능 고특권(HP) 관리자(114)를 포함할 수 있다. 저특권 실행 환경(120)은 OS 게스트 1(124) 및 OS 게스트 2(126)의 동작들을 관리하기 위한 저특권(LP) 관리자(122)를 포함할 수 있다. 2개의 OS 게스트(124, 126)가 도시되지만, 본 개시내용에 따른 실시예들은 2개의 게스트만으로 한정되지 않는다.
적어도 일 실시예에서, 고특권 실행 환경(112)에서의 소정의 활동들은 디바이스(100)가 특정 보안 모드에 들어갈 때 발생할 수 있다. 이러한 보안 모드에서는, 처리 모듈(104)에서 모든 다른 처리 활동이 중단될 수 있고, 처리 모듈(104)의 현재 상황이 저장될 수 있으며, 이어서 디바이스(100)의 정상 동작으로 복귀하기 전에 고특권 실행 환경(112)과 관련된 임의의 동작들이 수행될 수 있다. 이러한 보안 모드는 RAS 가능 HP 관리자(114)에 의해 구성될 수 있다.
본 개시내용의 실시예들에서, RAS 가능 HP 관리자(114)는 시스템 관리 인터럽트(SMI) 전달 모니터(STM)와 같은 피어 모니터일 수 있다. STM(114)은 시스템 관리 인터럽트(SMI) 핸들러의 특권을 박탈할 수 있으며, 따라서 SMI 핸들러는 시스템 관리 모드(SMM)에서 STM(114)의 게스트로서 동작한다. 본 개시내용의 실시예들은 RAS의 특징들을 지원함으로 인해 RAS 가능한 것으로서 간주되는 STM(114)을 제공한다. 구체적으로, RAS 가능 HP 관리자(114)는 STM(114)의 ROM 기반 실행 및 핫 플러그 기능에 대한 STM(114) 지원을 구현할 수 있다. 핫 플러그는 시스템의 셧다운 또는 리부팅 없이 컴퓨터 시스템 컴포넌트들을 추가 또는 대체하는 기능들을 기술한다. 도 2 및 4는 본 개시내용의 실시예들에서 STM(114)에 의해 지원되는 ROM 기반 실행 및 핫 플러그의 RAS 특징들의 추가 상세를 제공한다.
도 2는 본 개시내용의 일 실시예에 따른, 피어 모니터의 ROM 기반 실행을 구현하기 위한 메모리 모듈(200)을 나타내는 블록도이다. 일 실시예에서, 메모리 모듈(200)은 도 1과 관련하여 설명된 메모리 모듈(108)과 동일하다. 다른 실시예에서, 피어 모니터는 도 1과 관련하여 설명된 STM(114)과 같은 STM이다. 메모리 모듈(200)은 ROM(210) 영역 및 RAM(220) 영역 양자를 포함할 수 있다.
본 개시내용의 실시예들은 ROM(210) 내에 STM 이미지(211)를 배치한다. 게다가, STM 페이지 테이블 및 전역적 기술 테이블(GDT; global description table)(212)이 생성되고, STM 이미지(211)와 함께 ROM(210) 내에 배치된다. STM 페이지 테이블 및 STM GDT(212)는 STM 이미지(211)가 롱 모드(예로서, x64 비트 모드)에서 실행되는 것을 가능하게 한다. 일 실시예에서, STM 페이지 테이블 및 GDT(212)에 대한 액세스 비트(access bit) 및 더티 비트(dirty bit)는 디폴트로 설정된다. ROM STM(211)은 ROM STM(211)에 대한 페이지 테이블 및 GDT(212)를 저장하는 STM 헤더(214)도 포함할 수 있다.
일 실시예에서, ROM STM은 컴퓨터 시스템의 BIOS의 부트-업 프로세스 동안 초기화될 수 있다. BIOS SMM 모듈(도시되지 않음)이 ROM STM 이미지(211)의 주소를 BIOS 및 STM 코드를 실행하는 프로세서의 특수 레지스터 내에 배치할 수 있다. 이러한 ROM STM 이미지(211) 주소는 ROM STM 이미지(211)에 대한 엔트리 포인트(215)이며, 여기서 STM 코드에 대한 스택(213)이 STM 코드의 실행을 위해 셋업된다. 일 실시예에서, ROM STM 엔트리 포인트(215)를 저장하는 특수 레지스터는 IA32_SMM_MONITOR MSR이다.
실행 시간에, SMI가 발생할 때, 프로세서는 (특수 레지스터에 있는 주소를 이용하여) 먼저 ROM STM 엔트리 포인트(215)를 호출할 수 있다. 이어서, ROM STM(211)은 메모리 모듈(200)의 RAM(220) 영역에서 메모리 에러가 발생하는지를 검사할 수 있다. 메모리 검사가 RAM(220) 내에 에러가 존재하지 않는다는 것을 나타내는 경우, STM 코드의 동작은 RAM STM 엔트리 포인트(225)의 호출에 의해 RAM STM(221)으로 전달될 수 있다. 일 실시예에서, RAM STM 엔트리 포인트(225)는 ROM STM(211)에 저장된다. 일 실시예에서, RAM STM(221)은 STM 코드가 통상적으로 상주하는 RAM(220)의 영역 내에, 예를 들어 RAM(220)의 톱 세그먼트(TSEG; top segment)의 모니터 세그먼트(MSEG; monitor segment) 영역 내에 상주한다.
한편, ROM STM(211)이 RAM 에러가 존재하는 것을 검출하는 경우, ROM STM(211)은 RAM STM(221)을 호출하지 못한다. 대신, ROM STM(211)은 BIOS ROM SMM 핸들러를 직접 호출하여, 손상된 RAM(220)을 처리하거나 에러를 (BIOS SMM 핸들러 선택에 따라) 달리 처리할 수 있다. 일 실시예에서, BIOS ROM SMM 핸들러에 대한 엔트리 포인트는 TXT DESC SMM SAVE STATE MSR과 같은 다른 특수 레지스터 내에 정의될 수 있다.
본 개시내용의 실시예들에서, ROM STM(211)과 RAM STM(221) 사이의 전이(transition)를 위해 STM 전이 상태 데이터 구조(STM transition state data structure)(222)가 사용된다. 일 실시예에서, STM 전이 상태 데이터 구조(222)는 RAM(220)의 MSEG 부분의 선두(beginning)에 포함된다. 메모리 모듈(200)을 갖는 시스템의 초기화 동안, BIOS SMM이 ROM STM(211)의 상태 및 RAM STM(221)의 상태를 결정할 수 있다. 전이 데이터 구조는 ROM STM의 크기, RAM STM의 크기, CRC, 검사, 해시 또는 다른 암호 마커를 포함할 수 있지만 이에 한정되지 않는다. ROM STM(211)은 전이 데이터 구조를 이용하여, 제어의 전달 전에 RAM STM의 무결성을 검증할 수 있다.
전술한 ROM 기반 STM 실행은 실행 시간 동안 메모리 에러들을 처리하는 것을 가능하게 하며, 이는 RAS 특징이다. 이것은 STM의 초기 흐름들이 ROM 안으로 푸시되어, RAM STM 또는 임의의 다른 RAM 부분이 손상되는 시나리오를 해결하는 것을 가능하게 한다.
도 3은 본 개시내용의 일 실시예에 따른, RAS를 지원하기 위한 피어 모니터의 ROM 기반 실행을 위한 방법(300)의 흐름도이다. 방법(300)은 하드웨어(예로서, 회로, 전용 로직, 프로그래밍 가능 로직, 마이크로코드 등), 소프트웨어(예로서, 처리 디바이스 상에서 실행되는 명령어들), 펌웨어 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일 실시예에서, 방법(300)은 도 1과 관련하여 설명된 디바이스(100)에 의해 수행된다.
방법(300)은 블록 310에서 시작되며, 여기서 SMI 이벤트의 검출시에 ROM 영역 내의 STM 코드가 호출된다. 일 실시예에서, 프로세서가 SMI 이벤트를 검출하고, 프로세서의 레지스터에 저장된 ROM STM의 엔트리 포인트에 대한 주소에 기초하여 ROM STM 코드를 호출한다. 이어서, 블록 320에서, ROM STM 코드는 RAM 메모리에 대해 에러 검사를 행한다. 결정 블록 330에서, RAM 메모리에 에러가 존재했는지를 결정한다.
결정 블록 330에서 RAM 에러가 존재하고, 메모리 에러가 OEM SMM 코드의 영역 내에 속하지 않는 경우, 방법(300)은 블록 340으로 진행하며, 여기서 BIOS SMM 핸들러가 ROM STM 코드로부터 직접 호출된다. 일 실시예에서, BIOS SMM 핸들러에 대한 엔트리 포인트 주소가 프로세서의 레지스터 내에 저장되고, BIOS SMM 핸들러를 호출하기 위해 ROM STM에 의해 사용될 수 있다. 블록 350에서, BIOS SMM 핸들러가 RAM 내의 메모리 에러를 해결하도록 실행 제어가 ROM STM 코드로부터 BIOS SMM 핸들러로 전달된다.
결정 블록 330에서 RAM 메모리 에러가 존재하고, 메모리가 OEM SMRAM과 오버랩되는 경우, STM은 메모리 위치의 정보를 갖는 기계 검사 로그를 셋업할 수 있다. 이어서, 펌웨어는 기계 검사를 삽입하여 기계를 중지 및/또는 재설정함으로써 호스트 환경으로 복귀할 수 있다. 어느 경우에나, OS 에이전트가 기계 검사 로그로부터 에러 정보를 확인할 수 있다.
결정 블록 330에서 RAM 에러가 검출되지 않는 경우, 방법(300)은 블록 360으로 진행하며, 여기서 ROM STM 코드로부터 RAM STM 코드가 호출된다. 일 실시예에서, STM 전이 데이터 구조를 이용하여 ROM STM으로부터 RAM STM으로 전이한다. ROM STM은 전이 구조를 이용하여 제어를 전달하고, 또한 ROM STM이 메모리 에러가 보고된 메모리 범위와 오버랩되는지를 확인할 수 있다. 이어서, 블록 370에서, RAM STM이 통상적인 STM 액션을 취하여 SMM 게스트를 호출하고, SMI 이벤트로부터 예외를 처리하고, 시스템 관리 모드로부터 재개(RSM; Resume from System Management Mode)를 획득하고, 최초의 실행 환경으로 복귀하도록 실행 제어가 ROM STM으로부터 RAM STM으로 전달된다.
도 4는 본 개시내용의 실시예들에 따른, 피어 모니터에 의한 RAS에 대한 핫 플러그 지원을 나타내는 블록도이다. 본 명세서에서 설명되는 실시예들 중 일부는 많은 마이크로프로세서에서 현재 이용 가능한 가상화 기술(VT)과 관련된 용어를 이용하여 설명될 수 있다. VT는 둘 이상의 가상 기계(VM)가 물리 처리 자원들에 대한 액세스를 안전하고 효율적인 방식으로 동시에 공유하는 것을 가능하게 하는 기능이다. 그러나, 이러한 용어들의 사용은 본 명세서에서의 설명을 위한 것이며, 본 개시내용에 따른 구현들은 이러한 용어의 사용으로 한정되지 않는다. 예를 들어, 유사한 특징들을 제공하는 다른 하드웨어(예로서, 마이크로프로세서) 및/또는 소프트웨어도 본 명세서에서 개시되는 바와 같은 다양한 실시예들에 따르는 방식으로 사용될 수도 있다.
도 4의 예시적인 구현에서, 고특권 실행 환경 메모리(112), STM(114), BIOS 게스트(116) 및 저특권 실행 환경 메모리(120)는 그들과 동일한 번호를 갖는 도 1의 대응물들과 동일하다. STM은 BIOS SMM 게스트(116)의 동작을 관리하도록 구성된다. 일 실시예에서, 도 1의 LP 관리자(122)는 저특권 실행 환경 메모리(120)의 측정된 론치 환경(Measured Launch Environment; MLE)(122)으로서 도시된다. STM(114)은 다양한 상이한 VMCALL 커맨드들을 이용하여 BIOS SMM(116) 및 MLE(122)와 통신하며, 그 역도 같다. VMCALL 커맨드는 하이퍼바이저와 게스트 사이 또는 2개의 상이한 하이퍼바이저 사이의 명령어를 포함할 수 있다. 일부 실시예들에서, VMCall은 MLE 또는 BIOS SMM과 같은 가상 기계 게스트가 STM과 같은 하이퍼바이저와 통신하는 데 사용할 수 있는 메커니즘이다.
일 실시예에서, 애플리케이션 프로그래밍 인터페이스(API; Application Programming Interface)들에 대한 확장들의 세트를 정의하여 RAS 가능 STM에 대한 핫 플러그 기능을 지원하기 위해 STM(114)에 핫 플러그 서비스 모듈(420)이 추가된다. 핫 플러그 서비스 모듈(420)은 BIOS SMM(116) 및 MLE(122) 내의 대응하는 핫 플러그 모듈들(410, 430)과 통신할 수 있다.
일 실시예에서, 핫 플러그 서비스 모듈(420)은 메모리 핫 플러그 동작들 및 프로세서 핫 플러그 동작들에 대한 지원을 제공한다. 메모리 핫 플러그와 관련하여, 2개의 새로운 BIOS-대-STM VMCALL 커맨드, 즉 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL이 도입된다. 본 명세서에서의 설명은 구체적으로 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL을 참조하지만, 그러한 명령어들의 다른 식별들도 사용될 수 있으며, 본 개시내용의 실시예들은 본 명세서에서 사용되는 특정 명칭들로 한정되지 않는다. 아래의 도 5a 및 5b는 본 개시내용의 실시예들에 따른, STM을 통한 핫 플러그 지원을 이용하여 메모리를 추가 및 제거하기 위한 예시적인 흐름들을 설명한다.
프로세서 핫 플러그와 관련하여, 2개의 새로운 BIOS-대-STM VMCALL 커맨드, 즉 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL이 도입된다. 본 명세서에서의 설명은 구체적으로 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL을 참조하지만, 그러한 명령어들의 다른 식별들도 사용될 수 있으며, 본 개시내용의 실시예들은 본 명세서에서 사용되는 특정 명칭들로 한정되지 않는다. 아래의 도 6a 및 6b는 본 개시내용의 실시예들에 따른, STM을 통한 핫 플러그 지원을 이용하여 프로세서들을 추가 및 제거하기 위한 예시적인 흐름들을 설명한다.
도 5a는 본 개시내용의 일 실시예에 따른, 컴퓨터 시스템에 메모리를 추가할 때의 STM에 의한 핫 플러그 지원을 위한 방법(500)의 흐름도이다. 방법(500)은 하드웨어(예로서, 회로, 전용 로직, 프로그래밍 가능 로직, 마이크로코드 등), 소프트웨어(예로서, 처리 디바이스 상에서 실행되는 명령어들), 펌웨어 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일 실시예에서, 방법(500)은 도 4와 관련하여 설명된 STM(114)에 의해 수행된다.
방법(500)은 블록 505에서 시작되며, 여기서 BIOS 자원 추가 VMCALL이 BIOS로부터 STM에서 수신된다. 일 실시예에서, BIOS 자원 추가 VMCALL은 BIOS가 SMI 이벤트를 통해 새로운 메모리가 추가된다는 통지를 수신한 후에 수신된다. 결정 블록 510에서, STM은 메모리의 MLE 보호 영역과, 새로운 메모리와 관련될 메모리의 영역 사이에 오버랩이 존재하는지를 결정한다. 일 실시예에서, STM은 BIOS 및 MLE에 의해 요구되는 자원들의 리스트를 유지하며, 결정 블록 510에서의 오버랩 결정을 위해 이 리스트를 교차 검사(cross-check)할 수 있다. 결정 블록 510에서 오버랩이 검출되는 경우, 블록 545에서 STM은 예외를 생성하고, 새로운 메모리의 추가를 거절한다.
한편, 결정 블록 510에서 오버랩이 검출되지 않은 경우, 방법(500)은 블록 515로 진행하며, 여기서 STM은 새로운 메모리를 추가하기 위해 확인(confirmation)을 BIOS로 전송한다. 이어서, 블록 520에서, STM은 BIOS로부터 BIOS 자원 제거 VMCALL을 수신한다. 이것은 STM이 BIOS에게 오버랩이 존재하지 않는다는 것을 확인시킨 후에 BIOS가 새로운 메모리에 일시적으로 액세스하는 것에 대한 응답일 수 있다.
블록 525에서, BIOS 자원 제거 VMCALL에 응답하여, STM은 새로운 메모리에 대한 메모리 보호를 MLE에 대해 개방한다. 일 실시예에서, 새로운 메모리에 대한 메모리 보호가 MLE에 대해 개방되면, MLE는 시스템 제어 인터럽트(SCI) 이벤트를 통해 추가된 새로운 메모리를 수신할 수 있다. 블록 530에서, STM은 MLE로부터 자원 보호 VMCALL을 수신한다. 그에 응답하여, STM은 결정 블록 535에서 BIOS 선언 자원 영역과, 새로운 메모리와 관련된 영역의 메모리 사이에 오버랩이 존재하는지를 결정한다.
오버랩이 검출되는 경우, 방법(500)은 블록 545로 진행하며, 여기서 STM에 의해 예외가 생성되고, 새로운 메모리의 추가가 거절된다. 한편, 오버랩이 검출되지 않는 경우, 블록 540에서 새로운 메모리 영역이 STM에 의해 MLE에 대해 보호된다. 일 실시예에서, 새로운 메모리 자원은 STM에 의해 유지되는 MLE 자원의 리스트에 추가된다. 이어서, MLE는 새로운 메모리를 추가하는 게스트에 가상 SCI를 삽입할 수 있으며, 따라서 게스트는 새로운 메모리를 사용할 수 있다.
도 5b는 본 개시내용의 일 실시예에 따른, 컴퓨터 시스템으로부터 메모리를 제거할 때의 STM에 의한 핫 플러그 지원을 위한 방법(550)의 흐름도이다. 방법(550)은 하드웨어(예로서, 회로, 전용 로직, 프로그래밍 가능 로직, 마이크로코드 등), 소프트웨어(예로서, 처리 디바이스 상에서 실행되는 명령어들), 펌웨어 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일 실시예에서, 방법(550)은 도 4와 관련하여 설명된 STM(114)에 의해 수행된다.
방법(550)은 블록 560에서 시작되며, 여기서 STM은 MLE로부터 자원 비보호 VMCALL을 수신한다. 일 실시예에서, 자원 비보호 VMCALL은 MLE가 MLE의 게스트들 중 하나와 관련된 메모리를 제거하는 것에 응답하여 MLE에 의해 STM으로 전송된다. 게스트는 메모리를 제거할 수 있으며, 이는 SMI를 통한 BIOS로의 메모리 제거 요청을 생성한다. 이어서, BIOS는 SCI를 트리거하여 MLE에게 통지할 수 있으며, MLE는 가상 SCI를 게스트에 삽입할 수 있고, 따라서 게스트는 메모리를 제거한다. 메모리가 제거되면, MLE는 블록 560에서 STM에 대한 자원 비보호 VMCALL을 호출할 수 있다.
이어서, 블록 570에서, STM은 STM에 의해 유지되는 리스트(또는 리스트들)에서 메모리에 대한 MLE 보호를 제거한다. 이어서, 블록 580에서 BIOS는 메모리를 제거하고, STM에 의해 수신되는 BIOS 자원 제거 VMCALL을 호출할 수 있다. BIOS 자원 제거 VMCALL에 응답하여, STM은 블록 590에서 STM에 의해 유지되는 BIOS 자원리스트로부터 메모리를 제거한다.
도 6a는 본 개시내용의 일 실시예에 따른, 컴퓨터 시스템에 프로세서를 추가할 때의 STM에 의한 핫 플러그 지원을 위한 방법(600)의 흐름도이다. 방법(600)은 하드웨어(예로서, 회로, 전용 로직, 프로그래밍 가능 로직, 마이크로코드 등), 소프트웨어(예로서, 처리 디바이스 상에서 실행되는 명령어들), 펌웨어 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일 실시예에서, 방법(600)은 도 4와 관련하여 설명된 STM(114)에 의해 수행된다.
방법(600)은 블록 610에서 시작되며, 여기서 프로세서 추가 VMCALL이 컴퓨터 시스템 상에서 이미 동작하고 있는 본래의 프로세서를 통해 BIOS로부터 수신된다. 일 실시예에서, BIOS가 새로운 프로세서의 추가를 지시하는 SMI 이벤트를 수신하는 것에 응답하여 프로세서 추가 VMCALL이 수신된다. 블록 620에서, STM은 STM에 의해 유지되는 BIOS 자원들의 리스트에 새로운 프로세서를 추가한다. 일 실시예에서, BIOS 자원들의 리스트는 컴퓨터 시스템의 프로세서들을 상술하는 링크 리스트(linked list)와 같은 데이터 구조를 포함한다.
블록 630에서, 보호 초기화 VMCALL이 새로운 프로세서를 통해 MLE로부터 STM에 의해 수신된다. 일 실시예에서, 보호 초기화 VMCALL은 MLE가 SCI 이벤트를 통해 추가되는 새로운 프로세서를 수신하는 것에 응답하여 수신된다. 블록 640에서, STM은 STM에 의해 새로운 프로세서에 대해 인에이블된다. STM이 새로운 프로세서에 대해 인에이블되면, MLE는 새로운 프로세서를 추가하는 게스트에 가상 SCI를 삽입할 수 있으며, 따라서 게스트는 프로세서를 사용할 수 있다.
도 6b는 본 개시내용의 일 실시예에 따른, 컴퓨터 시스템으로부터 프로세서를 제거할 때의 STM에 의한 핫 플러그 지원을 위한 방법(650)의 흐름도이다. 방법(650)은 하드웨어(예로서, 회로, 전용 로직, 프로그래밍 가능 로직, 마이크로코드 등), 소프트웨어(예로서, 처리 디바이스 상에서 실행되는 명령어들), 펌웨어 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일 실시예에서, 방법(650)은 도 4와 관련하여 설명된 STM(114)에 의해 수행된다.
방법(650)은 블록 660에서 시작되며, 여기서 STM은 MLE로부터 STM 중단 VMCALL을 수신한다. 일 실시예에서, STM 중단 VMCALL은 MLE가 MLE의 게스트들 중 하나와 관련된 프로세서를 제거하는 것에 응답하여 MLE에 의해 STM으로 전송된다. 게스트는 프로세서를 제거할 수 있으며, 이는 SMI를 통한 BIOS로의 프로세서 제거 요청을 생성한다. 이어서, BIOS는 SCI를 트리거하여 MLE에 통지할 수 있으며, MLE는 가상 SCI를 게스트에 삽입할 수 있고, 따라서 게스트는 프로세서를 제거한다. 프로세서가 제거되면, MLE는 블록 660에서 STM에 대한 STM 중단 VMCALL을 호출할 수 있다.
이어서, 블록 670에서, STM은 STM 중단 VMCALL에 응답하여 제거되는 프로세서에 대한 STM 서비스들을 중단한다. 이어서, 블록 680에서 BIOS는 프로세서를 제거하고, STM에 의해 수신되는 프로세서 제거 VMCALL을 호출할 수 있다. 프로세서 제거 VMCALL에 응답하여, STM은 블록 690에서 STM에 의해 유지되는 프로세서와 관련된 데이터 구조를 파괴함으로써 프로세서를 제거한다.
도 7은 기계가 본 명세서에서 설명되는 방법들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들의 세트를 실행할 수 있는 컴퓨터 시스템(700)의 예시적인 형태의 기계의 개략도를 나타낸다. 대안 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷 또는 인터넷 내에서 다른 기계들과 접속(예로서, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 디바이스의 용량 내에서 또는 피어 대 피어(또는 분산) 네트워크 환경에서 피어 기계(peer machine)로서 동작할 수 있다. 기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인 휴대 단말기(PDA), 셀룰러 전화, 웹 설비(web appliance), 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 그 기계에 의해 취해질 액션들을 지정하는 (순차적인 또는 다른) 명령어들의 세트를 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계만이 도시되지만, 용어 "기계"는 본 명세서에서 설명되는 방법들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다수의 세트)를 개별적으로 또는 공동으로 실행하는 기계들의 임의의 집합(collection)을 포함하는 것으로도 간주되어야 한다.
컴퓨터 시스템(700)은 버스(730)를 통해 서로 통신하는 처리 디바이스(702), 메인 메모리(704)(예로서, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM)(예로서, 동기 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등), 정적 메모리(706)(예로서, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 데이터 저장 디바이스(718)를 포함한다.
처리 디바이스(702)는 마이크로프로세서, 중앙 처리 유닛 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 더 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computer) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 디바이스(702)는 주문형 집적 회로(ASIC; application specific integrated circuit), 필드 프로그래머블 게이트 어레이(FPGA; field programmable gate array), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수도 있다. 일 실시예에서, 처리 디바이스(702)는 하나 이상의 처리 코어를 포함할 수 있다. 처리 디바이스(702)는 본 명세서에서 설명되는 동작들 및 단계들을 수행하기 위해 처리 로직(726)을 실행하도록 구성된다. 일 실시예에서, 처리 디바이스(702)는 STM과 같은 RAS 가능 HP 관리자를 구현하는 도 1과 관련하여 설명된 처리 디바이스(100)와 동일하다. 예를 들어, 처리 디바이스(702)는 도 1의 STM(114)과 같은 RAS 가능 HP 관리자를 포함할 수 있다.
컴퓨터 시스템(700)은 네트워크(720)에 통신 가능하게 결합되는 네트워크 인터페이스 디바이스(708)를 더 포함할 수 있다. 컴퓨터 시스템(700)은 비디오 디스플레이 유닛(710)(예로서, 액정 디스플레이(LCD) 또는 음극성관(CRT)), 영숫자 입력 디바이스(712)(예로서, 키보드), 커서 제어 디바이스(714)(예로서, 마우스) 및 신호 생성 디바이스(716)(예로서, 스피커)도 포함할 수 있다. 더구나, 컴퓨터 시스템(700)은 그래픽 처리 유닛(722), 비디오 처리 유닛(728) 및 오디오 처리 유닛(732)을 포함할 수 있다.
데이터 저장 디바이스(718)는 본 명세서에서 설명되는 기능들의 방법들 중 임의의 하나 이상을 구현하는, 예를 들어 전술한 바와 같은 제한된 엔트리들을 가진 RS를 구현하는 소프트웨어(726)를 저장하는 기계 액세스 가능 저장 매체(724)를 포함할 수 있다. 소프트웨어(726)는 또한 완전히 또는 적어도 부분적으로 메인 메모리(704) 내에 명령어들(726)로서 그리고/또는 컴퓨터 시스템(700)에 의한 그의 실행 동안 처리 디바이스(702) 내에 처리 로직(726)으로서 존재할 수 있으며, 메인 메모리(704) 및 처리 디바이스(702)는 또한 기계 액세스 가능 저장 매체를 구성할 수 있다.
기계 판독 가능 저장 매체(724)는 또한 도 1의 디바이스(100)와 관련하여 설명된 바와 같은 RAS 가능 HP 관리자 및/또는 위의 애플리케이션들을 호출하는 방법들을 포함하는 소프트웨어 라이브러리를 구현하는 명령어들(726)을 저장하는 데 사용될 수 있다. 기계 액세스 가능 저장 매체(728)는 예시적인 실시예에서 단일 매체인 것으로 도시되지만, 용어 "기계 액세스 가능 저장 매체"는 명령어들의 하나 이상의 세트를 저장하는 단일 매체 또는 다수의 매체(예로서, 중앙 또는 분산 데이터베이스 및/또는 관련 캐시들 및 서버들)를 포함하는 것으로 간주되어야 한다. 용어 "기계 액세스 가능 저장 매체"는 또한, 기계에 의해 실행하기 위한 명령어 세트를 저장, 인코딩 또는 운반할 수 있고, 기계로 하여금 본 개시내용의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, 용어 "기계 액세스 가능 저장 매체"는 반도체 메모리들 및 광학 및 자기 매체들을 포함하지만 이에 한정되지 않는 것으로 간주되어야 한다.
아래의 예들은 추가 실시예들과 관련된다. 예 1은 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 방법이며, 이 방법은 처리 디바이스에 의해 시스템 관리 인터럽트(SMI) 이벤트를 수신하는 단계; 및 상기 처리 디바이스에 의해 상기 SMI 이벤트에 응답하여, 판독 전용 메모리(ROM) 엔트리 포인트로부터 실행할 특권 관리자를 호출하여 상기 SMI 이벤트를 처리하는 단계를 포함하며, 상기 특권 관리자는 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공하는 핫 플러그 서비스 모듈을 포함한다. 예 2에서, 예 1의 발명은 선택적으로 상기 특권 관리자가 시스템 관리 인터럽트(SMI) 전달 모니터(STM)를 포함하는 것을 포함할 수 있다. 예 3에서, 예 1-2 중 어느 하나의 발명은 선택적으로 상기 특권 관리자가 기본 입출력 시스템(BIOS)의 시스템 관리 모드(SMM) 코드를 실행하는 하이퍼바이저를 상기 특권 관리자의 게스트로서 포함하는 것을 포함할 수 있다.
예 4에서, 예 1-3 중 어느 하나의 발명은 선택적으로 상기 특권 관리자가 호출에 이어서 판독 액세스 메모리(RAM)에 대해 에러 검사를 실행하는 것을 포함할 수 있다. 예 5에서, 예 1-4 중 어느 하나의 발명은 선택적으로 상기 특권 관리자가 전이 데이터 구조에 액세스하여 상기 에러 검사에 대한 상기 RAM의 무결성을 검증하는 것을 포함할 수 있다. 예 6에서, 예 1-5 중 어느 하나의 발명은 선택적으로 상기 전이 데이터 구조가 상기 ROM 내의 상기 특권 관리자의 크기, 상기 RAM 내의 상기 특권 관리자의 크기, 순환 중복 검사(CRC) 값, 검사 값, 해시 또는 암호 마커 중 적어도 하나를 포함하는 데이터를 유지하는 것을 포함할 수 있다.
예 7에서, 예 1-6 중 어느 하나의 발명은 선택적으로 상기 에러 검사가 상기 RAM 내에 에러가 있다고 지시할 경우, 상기 특권 관리자가 BIOS SMM 핸들러를 호출하여 상기 RAM 내의 상기 에러를 해결하는 것을 포함할 수 있다. 예 8에서, 예 1-6 중 어느 하나의 발명은 선택적으로 상기 에러 검사가 상기 RAM 내에 에러가 없다고 지시할 경우, 상기 특권 관리자가 상기 RAM에서 실행되는 상기 특권 관리자의 다른 버전으로 제어를 전달하는 것을 포함할 수 있다.
예 9에서, 예 1-8 중 어느 하나의 발명은 선택적으로 상기 핫 플러그 서비스 모듈이 메모리에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL을 포함하는 것을 포함할 수 있다. 예 10에서, 예 1-9 중 어느 하나의 발명은 선택적으로 상기 핫 플러그 서비스 모듈이 프로세서에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL을 포함하는 것을 포함할 수 있다.
예 11은 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 장치이며, 이 장치는 특권 실행 환경 및 저특권 실행 환경을 포함하는 메모리 모듈; 및 상기 메모리 모듈에 통신 가능하게 결합되는 처리 디바이스를 포함한다. 예 11에서, 상기 처리 디바이스는 시스템 관리 인터럽트(SMI) 이벤트를 수신하고; 상기 SMI 이벤트에 응답하여, 판독 전용 메모리(ROM) 엔트리 포인트로부터 실행할 SMI 전달 모니터(STM)를 호출하여 상기 SMI 이벤트를 처리하고; 상기 STM에 의해, 상기 STM의 핫 플러그 서비스 모듈을 통해 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공한다. 예 12에서, 예 11의 발명은 선택적으로 상기 STM이 하이퍼바이저로서 실행되고, 상기 장치의 기본 입출력 시스템(BIOS)의 시스템 관리 모드(SMM) 코드를 상기 STM의 게스트로서 가상화하는 것을 포함할 수 있다.
예 13에서, 예 11-12 중 어느 하나의 발명은 선택적으로 상기 STM이 호출에 이어서 판독 액세스 메모리(RAM)에 대해 에러 검사를 실행하는 것을 포함할 수 있다. 예 14에서, 예 11-13 중 어느 하나의 발명은 선택적으로 상기 에러 검사가 상기 RAM 내에 에러가 있다고 지시할 경우, 상기 STM이 BIOS SMM 핸들러를 호출하여 상기 RAM 내의 상기 에러를 해결하는 것을 포함할 수 있다. 예 15에서, 예 11-14 중 어느 하나의 발명은 선택적으로 상기 에러 검사가 상기 RAM 내에 에러가 없다고 지시할 경우, 상기 STM이 상기 RAM에서 실행되는 상기 특권 관리자의 다른 버전으로 제어를 전달하는 것을 포함할 수 있다.
예 16에서, 예 11-15 중 어느 하나의 발명은 선택적으로 상기 핫 플러그 서비스 모듈이 상기 메모리에 대한 상기 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 STM 사이에서 통신되는 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL을 포함하는 것을 포함할 수 있다.
예 17에서, 예 11-16 중 어느 하나의 발명은 선택적으로 상기 핫 플러그 서비스 모듈이 상기 프로세서에 대한 상기 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 STM 사이에서 통신되는 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL을 포함하는 것을 포함할 수 있다. 전술한 장치의 모든 선택적인 특징들은 본 명세서에서 설명되는 방법 또는 프로세스와 관련하여 구현될 수도 있다.
예 18은 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 비일시적 기계 판독 가능 저장 매체이다. 예 18에서, 상기 비일시적 기계 판독 가능 매체는, 처리 디바이스에 의해 액세스될 때 상기 처리 디바이스로 하여금, 판독 전용 메모리(ROM) 엔트리 포인트로부터 상기 처리 디바이스에 의해 실행되는 특권 관리자에 의해, 판독 액세스 메모리(RAM)의 무결성을 추적하는 전이 데이터 구조에 액세스하는 동작 - 상기 액세스는 상기 처리 디바이스가 시스템 관리 인터럽트(SMI) 이벤트를 수신하는 것에 응답함 - 을 포함하는 동작들을 수행하게 하는 데이터를 포함한다. 게다가, 예 18에서, 상기 동작들은 상기 특권 관리자에 의해 상기 전이 데이터 구조에 기초하여, 상기 RAM에 대해 에러 검사를 실행하는 동작; 및 상기 에러 검사가 상기 RAM 내에 에러가 없다고 지시할 경우, 상기 특권 관리자에 의해, 상기 RAM에서 실행되는 상기 특권 관리자의 다른 버전으로 제어를 전달하여, 상기 SMI 이벤트를 처리하는 동작 - 상기 특권 관리자는 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공하는 핫 플러그 서비스 모듈을 포함함 - 을 더 포함한다.
예 19에서, 예 18의 발명은 선택적으로 상기 특권 관리자가 하이퍼바이저로서 실행되는 시스템 관리 인터럽트(SMI) 전달 모니터(STM)이고, 상기 STM은 기본 입출력 시스템(BIOS)의 시스템 관리 모드(SMM) 코드를 상기 STM의 게스트로서 가상화하는 것을 포함할 수 있다. 예 20에서, 예 18-19 중 어느 하나의 발명은 선택적으로 상기 에러 검사가 상기 RAM 내에 에러가 있다고 지시할 경우, 상기 특권 관리자에 의해, BIOS SMM 핸들러를 호출하여 상기 RAM 내의 상기 에러를 해결하는 것을 포함할 수 있다.
예 21에서, 예 18-20 중 어느 하나의 발명은 선택적으로 상기 핫 플러그 서비스 모듈이 메모리에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL을 포함하는 것을 포함할 수 있다. 예 22에서, 예 18-21 중 어느 하나의 발명은 선택적으로 상기 핫 플러그 서비스 모듈이 프로세서에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL을 포함하는 것을 포함할 수 있다.
예 23은 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 장치이며, 이 장치는 판독 전용 메모리(ROM) 엔트리 포인트를 통해, 판독 액세스 메모리(RAM)의 무결성을 추적하는 전이 데이터 구조에 액세스하기 위한 수단 - 상기 액세스는 시스템 관리 인터럽트(SMI) 이벤트의 수신에 응답함 - 을 포함한다. 예 23의 장치는 상기 전이 데이터 구조에 기초하여, 상기 RAM에 대해 에러 검사를 실행하기 위한 수단, 및 상기 에러 검사가 상기 RAM 내에 에러가 없다고 지시할 경우, 상기 RAM에서 실행되는 특권 관리자의 버전으로 제어를 전달하여 상기 SMI 이벤트를 처리하기 위한 수단을 더 포함하고, 액세스하기 위한 상기 수단은 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공하는 핫 플러그 서비스 모듈을 포함한다. 예 24에서, 예 22의 발명은 선택적으로 상기 장치가 예 2 내지 10 중 어느 하나의 방법을 수행하도록 더 구성되는 것을 포함할 수 있다.
예 25는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금 예 1-10 중 어느 하나에 따른 방법을 수행하게 하는 복수의 명령어를 포함하는 적어도 하나의 기계 판독 가능 매체이다. 예 26은 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 장치이며, 이 장치는 예 1-10 중 어느 하나의 방법을 수행하도록 구성된다. 예 27은 예 1-10 중 어느 하나의 방법을 수행하기 위한 수단을 포함하는 장치이다. 예들의 상세들은 하나 이상의 실시예에서 어디에서도 사용될 수 있다.
본 개시내용은 제한된 수의 실시예들과 관련하여 설명되었지만, 통상의 기술자들은 그들로부터의 다수의 변경들 및 변형들을 인식할 것이다. 첨부된 청구항들은 본 개시내용의 진정한 사상 및 범위 내에 속하는 바와 같은 모든 그러한 변경들 및 변형들을 포함하는 것을 의도한다.
설계는 생성으로부터 시뮬레이션, 제조에 이르는 다양한 단계들을 통해 진행될 수 있다. 설계를 표현하는 데이터는 설계를 다수의 방식으로 표현할 수 있다. 먼저, 시뮬레이션에 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어 또는 다른 기능 기술 언어를 이용하여 표현될 수 있다. 게다가, 로직 및/또는 트랜지스터 게이트들을 갖는 회로 레벨 모델이 설계 프로세스의 일부 단계들에서 생성될 수 있다. 더구나, 대부분의 설계들은 일부 단계에서 하드웨어 모델 내의 다양한 디바이스들의 물리적 배치를 표현하는 데이터의 레벨에 도달한다. 전통적인 반도체 제조 기술들이 사용되는 경우, 하드웨어 모델을 표현하는 데이터는 집적 회로를 생성하는 데 사용되는 마스크들을 위한 상이한 마스크 층들 상의 다양한 특징들의 존재 또는 부재를 지정하는 데이터일 수 있다. 설계의 임의의 표현에서, 데이터는 임의 형태의 기계 판독 가능 매체 내에 저장될 수 있다. 메모리 또는 디스크와 같은 자기 또는 광학 저장 디바이스는 정보를 전송하도록 변조되거나 달리 생성된 광 또는 전기 파동을 통해 전송된 그러한 정보를 저장하기 위한 기계 판독 가능 매체일 수 있다. 코드 또는 설계를 지시하거나 운반하는 전기 반송파가 전송될 때, 전기 신호의 복제, 버퍼링 또는 재전송이 수행되는 경우, 새로운 사본이 형성된다. 따라서, 통신 제공자 또는 네트워크 제공자는 본 개시내용의 실시예들의 기술들을 구현하는, 반송파 내에 인코딩된 정보와 같은 항목(article)을 유형의 기계 판독 가능 매체 상에 적어도 일시적으로 저장할 수 있다.
본 명세서에서 사용되는 바와 같은 모듈은 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합을 지칭한다. 일례로서, 모듈은 마이크로컨트롤러에 의해 실행되도록 적응된 코드를 저장하기 위한 비일시적 매체와 관련된, 마이크로컨트롤러와 같은 하드웨어를 포함한다. 따라서, 일 실시예에서, 모듈에 대한 참조는 비일시적 매체 상에 유지되는 코드를 인식 및/또는 실행하도록 특별히 구성되는 하드웨어를 지칭한다. 더구나, 다른 실시예에서, 모듈의 사용은 미리 결정된 동작들을 수행하기 위해 마이크로컨트롤러에 의해 실행되도록 특별히 적응되는 코드를 포함하는 비일시적 매체를 지칭한다. 그리고, 추정될 수 있는 바와 같이, 또 다른 실시예에서, (이 예에서) 모듈이라는 용어는 마이크로컨트롤러와 비일시적 매체의 조합을 지칭할 수 있다. 종종, 분리된 것으로서 설명되는 모듈 경계들은 일반적으로 변하며, 잠재적으로 오버랩된다. 예를 들어, 제1 및 제2 모듈이 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합을 공유할 수 있지만, 잠재적으로는 일부 독립적인 하드웨어, 소프트웨어 또는 펌웨어를 보유할 수 있다. 일 실시예에서, 로직이라는 용어의 사용은 하드웨어, 예를 들어 트랜지스터, 레지스터 또는 다른 하드웨어, 예로서 프로그래밍 가능 로직 디바이스를 포함한다.
일 실시예에서, "~하도록 구성되는"이라는 표현의 사용은 지정되거나 결정된 작업을 수행하도록 장치, 하드웨어, 로직 또는 요소를 배열하고, 함께 배치하고, 제조하고, 판매 제의하고(offering to sell), 임포팅(importing)하고/하거나, 설계하는 것을 지칭한다. 이 예에서, 동작하고 있지 않은 장치 또는 그의 요소도 지정된 작업을 수행하도록 설계되고 결합되고/되거나 상호 접속되는 경우에는 상기 지정된 작업을 수행"하도록 구성"된다. 순전히 설명의 예로서, 로직 게이트는 동작 동안 0 또는 1을 제공할 수 있다. 그러나, 클럭에 인에이블 신호를 제공"하도록 구성되는" 로직 게이트는 1 또는 0을 제공할 수 있는 모든 잠재적인 로직 게이트를 포함하지 않는다. 대신, 로직 게이트는 동작 동안 1 또는 0 출력이 클럭을 인에이블하는 일부 방식으로 결합되는 것이다. "~하도록 구성되는"이라는 용어의 사용은 동작을 필요로 하지 않는 대신에, 장치, 하드웨어 및/또는 요소의 잠재적인 상태에 집중한다는 점에 다시 한 번 유의하며, 잠재적인 상태에서 장치, 하드웨어 및/또는 요소는 장치, 하드웨어 및/또는 요소가 동작할 때 특정 작업을 수행하도록 설계된다.
더구나, 일 실시예에서, "~하도록", "~할 수 있는/~하도록 할 수 있는" 및/또는 "~하도록 동작할 수 있는"이라는 표현들의 사용은 일부 장치, 로직, 하드웨어 및/또는 요소가 지정된 방식으로 장치, 로직, 하드웨어 및/또는 요소의 사용을 가능하게 하도록 설계된다는 것을 말한다. 위에서와 같이, 일 실시예에서, "~하도록", "~하도록 할 수 있는" 또는 "~하도록 동작할 수 있는"이라는 표현들의 사용은 장치, 로직, 하드웨어 및/또는 요소의 잠재적인 상태를 지칭하며, 장치, 로직, 하드웨어 및/또는 요소는 동작하지 않지만, 지정된 방식으로 장치의 사용을 가능하게 하도록 설계된다는 점에 유의한다.
본 명세서에서 사용되는 바와 같이, 값은 숫자, 상태, 논리 상태 또는 이진 논리 상태의 임의의 공지된 표현을 포함한다. 종종, 논리 레벨들, 논리 값들 또는 논리적인 값들의 사용은 이진 논리 상태들을 간단히 표현하는 1들 및 0들로서 지칭된다. 예를 들어, 1은 하이 논리 레벨을 지칭하고, 0은 로우 논리 레벨을 지칭한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은 단일 논리 값 또는 다수의 논리 값을 유지할 수 있다. 그러나, 컴퓨터 시스템들에서는 값들의 다른 표현들이 사용되어 왔다. 예를 들어, 십진수 10은 이진 값 1010 및 16진법 문자 A로도 표현될 수 있다. 따라서, 값은 컴퓨터 시스템 내에 유지될 수 있는 정보의 임의 표현을 포함한다.
더욱이, 상태들은 값들 또는 값들의 부분들에 의해 표현될 수 있다. 일례로서, 논리 1과 같은 제1 값은 디폴트 또는 초기 상태를 표현할 수 있는 반면, 논리 0과 같은 제2 값은 비-디폴트 상태를 표현할 수 있다. 게다가, 일 실시예에서, 재설정 및 설정이라는 용어는 각각 디폴트 및 갱신 값 또는 상태를 지칭한다. 예를 들어, 디폴트 값은 잠재적으로 하이 논리 값, 즉 재설정을 포함하는 반면, 갱신 값은 잠재적으로 로우 논리 값, 즉 설정을 포함한다. 값들의 임의 조합이 임의 수의 상태들을 표현하는 데 사용될 수 있다는 점에 유의한다.
전술한 방법들, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예들은 처리 요소에 의해 실행 가능한 기계 액세스 가능, 기계 판독 가능, 컴퓨터 액세스 가능 또는 컴퓨터 판독 가능 매체 상에 저장된 명령어들 또는 코드를 통해 구현될 수 있다. 비일시적 기계 액세스 가능/판독 가능 매체는 컴퓨터 또는 전자 시스템과 같은 기계에 의해 판독 가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 예를 들어, 비일시적 기계 액세스 가능 매체는 랜덤 액세스 메모리(RAM), 예로서 정적 RAM(SRAM) 또는 동적 RAM(DRAM); ROM; 자기 또는 광학 저장 매체; 플래시 메모리 디바이스; 전기 저장 디바이스; 광학 저장 디바이스; 음향 저장 디바이스; 그들로부터 정보를 수신할 수 있는 비일시적 매체들과 구별되는, 일시적 (전파) 신호들(예로서, 반송파, 적외선 신호, 디지털 신호)로부터 수신된 정보를 유지하기 위한 다른 형태의 저장 디바이스 등을 포함한다.
본 개시내용의 실시예들을 수행하도록 로직을 프로그래밍하는 데 사용되는 명령어들은 DRAM, 캐시, 플래시 메모리 또는 다른 저장 디바이스와 같은 시스템 내의 메모리 내에 저장될 수 있다. 더구나, 명령어들은 네트워크를 통해 또는 다른 컴퓨터 판독 가능 매체들에 의해 배포될 수 있다. 따라서, 기계 판독 가능 매체는 기계(예로서, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘, 예를 들어 플로피 디스켓, 광 디스크, CD-ROM(Compact Disc, Read-Only Memory) 및 광자기 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거 및 프로그래밍 가능 판독 전용 메모리(EPROM), 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM), 자기 또는 광학 카드, 플래시 메모리, 또는 인터넷을 통해 전기, 광, 음향 또는 다른 형태의 전파 신호(예로서, 반송파, 적외선 신호, 디지털 신호 등)를 통해 정보를 전송하는 데 사용되는 유형의 기계 판독 가능 저장 디바이스를 포함할 수 있지만 이에 한정되지 않는다. 따라서, 컴퓨터 판독 가능 매체는 기계(예로서, 컴퓨터)에 의해 판독 가능한 형태로 전자 명령어들 또는 정보를 저장 또는 전송하는 데 적합한 임의 타입의 유형의 기계 판독 가능 매체를 포함한다.
본 명세서 전반에서 "일 실시예" 또는 "실시예"에 대한 참조는 그 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 본 개시내용의 적어도 하나의 실시예 내에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에서 다양한 곳에서의 "일 실시예에서" 또는 "실시예에서"라는 표현들의 출현들은 반드시 모두가 동일 실시예를 지칭하지는 않는다. 더구나, 특정 특징들, 구조들 또는 특성들은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다.
전술한 명세서에서는 특정 예시적 실시예들을 참조하여 상세한 설명이 제공되었다. 그러나, 첨부된 청구항들에서 설명되는 바와 같은 본 개시내용의 더 넓은 사상 및 범위로부터 벗어나지 않고서 실시예들에 대한 다양한 수정들 및 변경들이 이루어질 수 있다는 것이 명백할 것이다. 따라서, 명세서 및 도면들은 한정의 의미가 아니라 예시적인 의미로 간주되어야 한다. 더구나, 실시예 및 다른 예시적인 언어의 전술한 사용은 반드시 동일 실시예 또는 동일 예를 지칭하지는 않으며, 잠재적으로 동일한 실시예는 물론, 상이한 그리고 별개의 실시예들을 지칭할 수 있다.

Claims (25)

  1. 피어 모니터(peer monitor)에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS; reliability, availability, and serviceability) 흐름들을 지원하기 위한 방법으로서,
    처리 디바이스에 의해 시스템 관리 인터럽트(SMI; system management interrupt) 이벤트를 수신하는 단계; 및
    상기 처리 디바이스에 의해, 상기 SMI 이벤트에 응답하여, 실행할 특권 관리자(privilege manager)를 판독 전용 메모리(ROM; read-only memory) 엔트리 포인트(entry point)로부터 호출하여 상기 SMI 이벤트를 처리하는 단계
    를 포함하며,
    상기 특권 관리자는 메모리 핫 플러그 기능(memory hot plug functionality) 및 프로세서 핫 플러그 기능(processor hot plug functionality)에 대한 지원을 제공하는 핫 플러그 서비스 모듈(hot plug service module)을 포함하고,
    상기 특권 관리자는 호출에 이어서 판독 액세스 메모리(RAM; read-access memory)에 대해 에러 검사를 실행하는 방법.
  2. 제1항에 있어서,
    상기 특권 관리자는 시스템 관리 인터럽트(SMI) 전달 모니터(STM)인, 방법.
  3. 제1항에 있어서,
    상기 특권 관리자는 기본 입출력 시스템(BIOS)의 시스템 관리 모드(SMM; system management mode) 코드를 실행하는 하이퍼바이저(hypervisor)를 상기 특권 관리자의 게스트(guest)로서 포함하는 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 특권 관리자는 전이 데이터 구조(transition data structure)에 액세스하여 상기 에러 검사에 대한 상기 RAM의 무결성을 검증하는 방법.
  6. 제5항에 있어서,
    상기 전이 데이터 구조는 상기 ROM 내의 상기 특권 관리자의 크기, 상기 RAM 내의 상기 특권 관리자의 크기, 순환 중복 검사(CRC) 값, 검사 값, 해시 또는 암호 마커(cryptographic marker) 중 적어도 하나를 포함하는 데이터를 유지하는 방법.
  7. 제1항에 있어서,
    상기 에러 검사가 상기 RAM 내에 에러가 있다고 지시할 경우, 상기 특권 관리자는 BIOS SMM 핸들러를 호출하여 상기 RAM 내의 상기 에러를 해결하는 방법.
  8. 제1항에 있어서,
    상기 에러 검사가 상기 RAM 내에 에러가 없다고 지시할 경우, 상기 특권 관리자는 상기 RAM에서 실행되는 상기 특권 관리자의 다른 버전으로 제어를 전달하는 방법.
  9. 제1항에 있어서,
    상기 핫 플러그 서비스 모듈은 메모리에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스(API; Application Programming Interface)들에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL을 포함하는 방법.
  10. 제1항에 있어서,
    상기 핫 플러그 서비스 모듈은 프로세서에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL을 포함하는 방법.
  11. 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(RAS) 흐름들을 지원하기 위한 장치로서,
    특권 실행 환경 및 저특권 실행 환경(low privilege execution environment)을 포함하는 메모리 모듈; 및
    상기 메모리 모듈에 통신 가능하게 결합되는 처리 디바이스
    를 포함하고,
    상기 처리 디바이스는,
    시스템 관리 인터럽트(SMI) 이벤트를 수신하고,
    상기 SMI 이벤트에 응답하여, 실행할 SMI 전달 모니터(STM)를 판독 전용 메모리(ROM) 엔트리 포인트로부터 호출하여 상기 SMI 이벤트를 처리하고,
    상기 STM에 의해, 상기 STM의 핫 플러그 서비스 모듈을 통해 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공하고,
    상기 STM은 호출에 이어서 판독 액세스 메모리(RAM)에 대해 에러 검사를 실행하는 장치.
  12. 제11항에 있어서,
    상기 STM은 하이퍼바이저로서 실행되고, 상기 장치의 기본 입출력 시스템(BIOS)의 시스템 관리 모드(SMM) 코드를 상기 STM의 게스트로서 가상화하는 장치.
  13. 삭제
  14. 제11항에 있어서,
    상기 에러 검사가 상기 RAM 내에 에러가 있다고 지시할 경우, 상기 STM은 BIOS SMM 핸들러를 호출하여 상기 RAM 내의 상기 에러를 해결하는 장치.
  15. 제11항에 있어서,
    상기 에러 검사가 상기 RAM 내에 에러가 없다고 지시할 경우, 상기 STM은 상기 RAM에서 실행되는 특권 관리자의 다른 버전으로 제어를 전달하는 장치.
  16. 제11항에 있어서,
    상기 핫 플러그 서비스 모듈은 상기 메모리에 대한 상기 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 STM 사이에서 통신되는 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL을 포함하는 장치.
  17. 제11항에 있어서,
    상기 핫 플러그 서비스 모듈은 상기 프로세서에 대한 상기 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 STM 사이에서 통신되는 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL을 포함하는 장치.
  18. 처리 디바이스에 의해 액세스될 때, 상기 처리 디바이스로 하여금,
    상기 처리 디바이스에 의해 판독 전용 메모리(ROM) 엔트리 포인트로부터 호출되고, 상기 처리 디바이스에 의해 실행되는 특권 관리자에 의해, 판독 액세스 메모리(RAM)의 무결성을 추적하는 전이 데이터 구조에 액세스하는 동작 - 상기 액세스는 상기 처리 디바이스가 시스템 관리 인터럽트(SMI) 이벤트를 수신하는 것에 응답한 것임 -;
    상기 특권 관리자에 의해 상기 전이 데이터 구조에 기초하여, 상기 RAM에 대해 에러 검사를 실행하는 동작; 및
    상기 에러 검사가 상기 RAM 내에 에러가 없다고 지시할 경우, 상기 특권 관리자에 의해, 상기 RAM에서 실행되는 상기 특권 관리자의 다른 버전으로 제어를 전달하여, 상기 SMI 이벤트를 처리하는 동작 - 상기 특권 관리자는 메모리 핫 플러그 기능 및 프로세서 핫 플러그 기능에 대한 지원을 제공하는 핫 플러그 서비스 모듈을 포함함 -
    을 포함하는 동작들을 수행하게 하는 데이터를 포함하는 비일시적 기계 판독 가능 저장 매체.
  19. 제18항에 있어서,
    상기 특권 관리자는 하이퍼바이저로서 실행되는 시스템 관리 인터럽트(SMI) 전달 모니터(STM)이고, 상기 STM은 기본 입출력 시스템(BIOS)의 시스템 관리 모드(SMM) 코드를 상기 STM의 게스트로서 가상화하는 비일시적 기계 판독 가능 저장 매체.
  20. 제18항에 있어서,
    상기 동작들은 상기 에러 검사가 상기 RAM 내에 에러가 있다고 지시할 경우, 상기 특권 관리자에 의해, BIOS SMM 핸들러를 호출하여 상기 RAM 내의 상기 에러를 해결하는 동작을 더 포함하는 비일시적 기계 판독 가능 저장 매체.
  21. 제18항에 있어서,
    상기 핫 플러그 서비스 모듈은 메모리에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 BIOS 자원 추가 VMCALL 및 BIOS 자원 제거 VMCALL을 포함하는 비일시적 기계 판독 가능 저장 매체.
  22. 제18항에 있어서,
    상기 핫 플러그 서비스 모듈은 프로세서에 대한 핫 플러그 기능을 지원하기 위해 애플리케이션 프로그래밍 인터페이스들(API들)에 대한 확장들의 세트를 포함하고, 상기 API들에 대한 상기 확장들은 기본 입출력 시스템(BIOS)과 상기 특권 관리자 사이에서 통신되는 프로세서 추가 VMCALL 및 프로세서 제거 VMCALL을 포함하는 비일시적 기계 판독 가능 저장 매체.
  23. 삭제
  24. 삭제
  25. 삭제
KR1020157020222A 2013-03-07 2013-03-07 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(ras) 흐름들을 지원하기 위한 메커니즘 KR101733903B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/072294 WO2014134808A1 (en) 2013-03-07 2013-03-07 Mechanism to support reliability, availability, and serviceability (ras) flows in a peer monitor

Publications (2)

Publication Number Publication Date
KR20150102090A KR20150102090A (ko) 2015-09-04
KR101733903B1 true KR101733903B1 (ko) 2017-05-08

Family

ID=51490579

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157020222A KR101733903B1 (ko) 2013-03-07 2013-03-07 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(ras) 흐름들을 지원하기 위한 메커니즘

Country Status (7)

Country Link
US (1) US9311177B2 (ko)
EP (1) EP2965246A4 (ko)
JP (1) JP6017706B2 (ko)
KR (1) KR101733903B1 (ko)
CN (1) CN104981812B (ko)
BR (1) BR112015018459A2 (ko)
WO (1) WO2014134808A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014118940A1 (ja) * 2013-01-31 2014-08-07 三菱電機株式会社 計算機装置及び計算機装置の制御方法
US10353765B2 (en) * 2013-03-08 2019-07-16 Insyde Software Corp. Method and device to perform event thresholding in a firmware environment utilizing a scalable sliding time-window
CN104572561A (zh) * 2015-01-30 2015-04-29 浪潮电子信息产业股份有限公司 实现clump整体热插拔的方法和***
US10127137B2 (en) * 2015-06-03 2018-11-13 Fengwei Zhang Methods and systems for increased debugging transparency
WO2017049594A1 (en) 2015-09-25 2017-03-30 Intel Corporation Efficient memory activation at runtime
US9734013B2 (en) * 2015-10-09 2017-08-15 Qualcomm Incorporated System and method for providing operating system independent error control in a computing device
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
EP3413532A1 (en) * 2017-06-07 2018-12-12 Hewlett-Packard Development Company, L.P. Monitoring control-flow integrity
US11138072B2 (en) * 2017-12-22 2021-10-05 Intel Corporation Protected runtime mode
US11036543B1 (en) * 2019-06-14 2021-06-15 Amazon Technologies, Inc. Integrated reliability, availability, and serviceability state machine for central processing units
CN112906009A (zh) * 2021-03-09 2021-06-04 南昌华勤电子科技有限公司 工作日志生成方法、计算设备及存储介质
CN113032737B (zh) * 2021-03-15 2021-11-30 清华大学 软件的保护方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007109238A (ja) * 2005-10-14 2007-04-26 Dell Products Lp 回復可能なエラーのロギングのためのシステム及び方法
US20080115138A1 (en) * 2006-08-31 2008-05-15 Murugasamy Nachimuthu Systems and methods for implementing reliability, availability and serviceability in a computer system
US20080163209A1 (en) * 2006-12-29 2008-07-03 Rozas Carlos V Methods and apparatus for remeasuring a virtual machine monitor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117311B1 (en) * 2001-12-19 2006-10-03 Intel Corporation Hot plug cache coherent interface method and apparatus
US7447943B2 (en) * 2003-05-28 2008-11-04 Hewlett-Packard Development Company, L.P. Handling memory errors in response to adding new memory to a system
US7222062B2 (en) * 2003-12-23 2007-05-22 Intel Corporation Method and system to support a trusted set of operational environments using emulated trusted hardware
JP2005011381A (ja) * 2004-09-27 2005-01-13 Toshiba Corp コンピュータシステム
US7222200B2 (en) * 2004-10-14 2007-05-22 Dell Products L.P. Method for synchronizing processors in SMI following a memory hot plug event
US7574593B2 (en) * 2004-12-03 2009-08-11 Hewlett-Packard Development Company, L.P. Persistent memory manipulation using EFI
US7694298B2 (en) * 2004-12-10 2010-04-06 Intel Corporation Method and apparatus for providing virtual server blades
US20060294149A1 (en) * 2005-06-24 2006-12-28 Intel Corporation Method and apparatus for supporting memory hotplug operations using a dedicated processor core
US20090119748A1 (en) * 2007-08-30 2009-05-07 Jiewen Yao System management mode isolation in firmware
US8151027B2 (en) * 2009-04-08 2012-04-03 Intel Corporation System management mode inter-processor interrupt redirection
US8069228B2 (en) * 2009-05-08 2011-11-29 Hewlett-Packard Development Company, L.P. Preventing access of a network facility in response to an operation
US20110161592A1 (en) * 2009-12-31 2011-06-30 Nachimuthu Murugasamy K Dynamic system reconfiguration
US9575788B2 (en) * 2012-09-04 2017-02-21 Red Hat Israel, Ltd. Hypervisor handling of processor hotplug requests

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007109238A (ja) * 2005-10-14 2007-04-26 Dell Products Lp 回復可能なエラーのロギングのためのシステム及び方法
US20080115138A1 (en) * 2006-08-31 2008-05-15 Murugasamy Nachimuthu Systems and methods for implementing reliability, availability and serviceability in a computer system
US20080163209A1 (en) * 2006-12-29 2008-07-03 Rozas Carlos V Methods and apparatus for remeasuring a virtual machine monitor

Also Published As

Publication number Publication date
EP2965246A1 (en) 2016-01-13
US20150186322A1 (en) 2015-07-02
BR112015018459A2 (pt) 2017-07-18
WO2014134808A1 (en) 2014-09-12
JP6017706B2 (ja) 2016-11-02
US9311177B2 (en) 2016-04-12
CN104981812A (zh) 2015-10-14
EP2965246A4 (en) 2016-10-19
JP2016508645A (ja) 2016-03-22
KR20150102090A (ko) 2015-09-04
CN104981812B (zh) 2018-05-29

Similar Documents

Publication Publication Date Title
KR101733903B1 (ko) 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(ras) 흐름들을 지원하기 위한 메커니즘
US10719400B2 (en) System and method for self-healing basic input/output system boot image and secure recovery
US10853179B2 (en) Information handling system and method for restoring firmware in one or more regions of a flash memory device
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
EP3047419B1 (en) Virtual secure mode for virtual machines
JP4688862B2 (ja) 仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供すること
US10445154B2 (en) Firmware-related event notification
US10592434B2 (en) Hypervisor-enforced self encrypting memory in computing fabric
US20180088988A1 (en) Return Flow Guard Using Control Stack Identified By Processor Register
US9563439B2 (en) Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS)
US8132167B2 (en) Context based virtualization
CN102207896A (zh) 虚拟机崩溃文件生成技术
US10430589B2 (en) Dynamic firmware module loader in a trusted execution environment container
KR20220050895A (ko) 메모리 애퍼처 플러쉬 순서를 사용한 데이터 보존 기법
US8473945B2 (en) Enabling system management mode in a secure system
US10565141B1 (en) Systems and methods for hiding operating system kernel data in system management mode memory to thwart user mode side-channel attacks
WO2016115737A1 (en) Aligned variable reclamation
CN114741233A (zh) 快速启动方法
US20200319975A1 (en) Early boot event logging system
CN116225765A (zh) 一种在虚拟机中执行指令的方法和一种虚拟机监视器
WO2018214482A1 (zh) 一种虚拟机的监控方法和装置

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