KR20170013402A - Computing platform with interface based error injection - Google Patents

Computing platform with interface based error injection Download PDF

Info

Publication number
KR20170013402A
KR20170013402A KR1020177001971A KR20177001971A KR20170013402A KR 20170013402 A KR20170013402 A KR 20170013402A KR 1020177001971 A KR1020177001971 A KR 1020177001971A KR 20177001971 A KR20177001971 A KR 20177001971A KR 20170013402 A KR20170013402 A KR 20170013402A
Authority
KR
South Korea
Prior art keywords
error
platform
operating system
injection
type
Prior art date
Application number
KR1020177001971A
Other languages
Korean (ko)
Other versions
KR101763102B1 (en
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 KR20170013402A publication Critical patent/KR20170013402A/en
Application granted granted Critical
Publication of KR101763102B1 publication Critical patent/KR101763102B1/en

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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/22Microcontrol or microprogram arrangements
    • 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
    • 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
    • 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/4418Suspend and resume; Hibernate and awake
    • 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/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • 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
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

일부 실시예들에서, 컴퓨팅 플랫폼에 대한 PPM 인터페이스에는 PPM 인터페이스를 통해 OS에, 하드웨어 구성요소 에러 인젝션을 촉진하는 기능이 제공된다.In some embodiments, the PPM interface to the computing platform is provided with the capability to facilitate hardware component error injection in the OS via the PPM interface.

Description

인터페이스 기반 에러 인젝션이 있는 컴퓨팅 플랫폼{COMPUTING PLATFORM WITH INTERFACE BASED ERROR INJECTION}[0001] COMPUTING PLATFORM WITH INTERFACE BASED ERROR INJECTION [0002]

본 출원은 2011년 11월 22일에 제출된 미국 가 특허 출원 제 61563030 호의 우선권을 주장하고 이를 본원에 참조로서 통합한다.This application claims priority to U.S. Provisional Patent Application No. 61563030, filed November 22, 2011, which is incorporated herein by reference.

본 발명은 에러 인젝션(error injection)이 있는 컴퓨팅 플랫폼(computing platform)에 관한 것이다.The present invention relates to a computing platform with error injection.

본 발명은 일반적으로 플랫폼 성능 관리 인터페이스에 관한 것이다. 특히, 본 발명은 컴퓨팅 플랫폼에서의 성능 관리 인터페이스를 통해 에러 인젝션 서비스들을 제공하는 것에 관한 것이다.The present invention generally relates to a platform performance management interface. In particular, the present invention relates to providing error injection services through a performance management interface in a computing platform.

본 발명의 실시예들은 첨부 도면들의 도들에서의 예를 통해, 그러나 한정하지 않도록 도시되고, 본 도면들에서 동일한 참조번호들은 유사한 요소들을 칭한다.
도 1은 일부 실시예들에 따라 PPM 인터페이스를 통해 제공되는 에러 인젝션 지원이 있는 컴퓨팅 플랫폼의 블록도이다.
도 2는 일부 실시예들에 따라 플랫폼 상에 구현되는 PPM 인터페이스의 추상 표현(abstracted representation)을 도시하는 도면이다.
도 3은 일부 실시예들에 따라 PPM 인터페이스를 통해 플랫폼 OS에 에러 인젝션을 제공하는 일반적인 루틴을 도시하는 도면이다.
도 4는 일부 실시예들에 따라 ACPI 인터페이스 내의 테이블 구조에 대한 루트 포인터(root pointer)를 도시하는 도면이다.
도 5는 일부 실시예들에 따라 ACPI 인터페이스에 대한 기술 테이블 구조(description table structure)를 도시하는 도면이다.
도 6은 일부 실시예들에 따라 에러 인젝션(Error Injection; EINJ) 테이블의 레이아웃을 도시하는 테이블이다.
도 7은 일부 실시예들에 따라 지원되는 에러 인젝션 동작들을 도시하는 도면이다.
도 8은 일부 실시예들에 따라 인젝션 명령어의 레이아웃을 도시하는 도면이다.
도 9는 일부 실시예들에 따라 명령어 플래그(flag)들을 도시하는 테이블이다.
도 10은 일부 실시예들에 따라 인젝션 명령어 엔트리들에 지원되는 인젝션 명령어들을 기재하는 도면이다.
도 11은 일부 실시예들에 따라 GET_COMMAMD_STATUS로부터 리턴(return)되는 에러 인젝션 상태 코드들을 정의하는 도면이다.
도 12는 일부 실시예들에 따라 GET_ERROR-TYPE로부터 리턴되는 에러 유형 코드들을 기재하는 도면이다.
도 13은 일부 실시예들에 따라 SET_ERROR_TYPE_WITH_ADDRESS 데이터 구조를 도시하는 테이블이다.
도 14는 일부 실시예들에 따라 벤더 에러 유형 확장 구조를 도시하는 테이블이다.
도 15는 일부 실시예들에 따라 트리거(trigger) 에러 동작을 도시하는 테이블이다.
BRIEF DESCRIPTION OF THE DRAWINGS Embodiments of the invention are illustrated by way of example in the figures of the accompanying drawings, but not by way of limitation, in which like reference numerals refer to like elements.
1 is a block diagram of a computing platform with error injection support provided over a PPM interface in accordance with some embodiments.
2 is a diagram illustrating an abstracted representation of a PPM interface implemented on a platform in accordance with some embodiments.
3 is a diagram illustrating a general routine for providing error injection to the platform OS over a PPM interface in accordance with some embodiments.
4 is a diagram illustrating a root pointer to a table structure in an ACPI interface in accordance with some embodiments.
5 is a diagram illustrating a description table structure for an ACPI interface in accordance with some embodiments.
Figure 6 is a table showing the layout of the Error Injection (EINJ) table according to some embodiments.
Figure 7 is a diagram illustrating error injection operations supported in accordance with some embodiments.
Figure 8 is a diagram illustrating the layout of injection commands in accordance with some embodiments.
Figure 9 is a table showing instruction flags in accordance with some embodiments.
10 is a diagram describing the injection commands supported in the injection command entries according to some embodiments.
11 is a diagram that defines error injection status codes that are returned from GET_COMMAMD_STATUS in accordance with some embodiments.
12 is a diagram describing the error type codes returned from GET_ERROR-TYPE according to some embodiments.
13 is a table showing the SET_ERROR_TYPE_WITH_ADDRESS data structure according to some embodiments.
Figure 14 is a table showing a vendor error type extension structure in accordance with some embodiments.
15 is a table illustrating trigger error operations in accordance with some embodiments.

도 1은 일부 실시예들에 따라 에러 인젝션 서비스들을 가능하게 하는 성능 및 전력 관리(performance and power management; PPM) 인터페이스가 있는 컴퓨팅 플랫폼(100)의 일부에 대한 도면이다. 일반적으로 도면에 도시된 바와 같은 컴퓨팅 플랫폼은 서버들, 데스트탑 PC들, 넷북들, 울트라북들, 태블릿들, 스마트폰들 등을 포함하지만 이로 제한되지 않는 다양한 상이한 유형의 컴퓨팅 플랫폼 유형들을 표현하도록 의도된다. 간소화 및 이해를 용이하게 하기 위해, 본 발명과 관련되지 않는 세목들 및/또는 구성요소들은 일부 플랫폼 실시예들의 경우에 생략될 것이다.1 is a diagram of a portion of a computing platform 100 having a performance and power management (PPM) interface that enables error injection services in accordance with some embodiments. In general, a computing platform as shown in the figures may be used to represent a variety of different types of computing platform types including but not limited to servers, desktop PCs, netbooks, ultrabooks, tablets, smart phones, It is intended. To facilitate simplification and understanding, features and / or components not relevant to the present invention will be omitted for some platform embodiments.

본원에서 사용되는 바와 같이, 용어 "PPM"은 performance and power management를 나타내고 적어도 관련 특징들에 관한 플랫폼 및 운영 시스템들이 이 PPM 인터페이스에 부합되는 한, 운영 시스템들 및 자체의 운영 시스템들을 통하는 애플리케이션들이 플랫폼 내의 하드웨어 구성요소들을 제어, 모니터링, 유지 등등을 행하는 것을 가능하게 하는 임의의 적절한 인터페이스를 칭한다. PPM의 예는 진보 구성 및 전력 인터페이스(Advanced Configuration and Power Interface; ACPI)이다.As used herein, the term "PPM" refers to performance and power management, and as long as platforms and operating systems for the relevant features are compliant with this PPM interface, Refers to any suitable interface that enables control, monitoring, maintenance, and so on of the hardware components within the system. An example of PPM is the Advanced Configuration and Power Interface (ACPI).

기술된 플랫폼은 CPU(102), 지각 디바이스(sensory device)들(110)(예를 들어, 자이로(gyro)들, 스피커들, 카메라들 등), 다른 디바이스들/인터페이스들(예를 들어 키패드, 포인터 디바이스, USB 포트들, PCI 포트들, 무선 인터페이스들 등)(116) 및 그래픽 프로세서(GPX)(122)를 포함하고, 이것들은 하나 이상의 버스들 및/또는 포인트-대-포인트 상호접속들을 통해 서로 결합된다. 플랫폼은 또한 메모리 제어기(106)를 통해 적어도 CPU(102)에 결합되는 메모리(108)(예를 들어 DRAM)를 포함하고 이는 또한 CPU(102)에 결합되는 펌웨어(예를 들어 플래시 메모리와 같은 비휘발성 메모리에 의해 구현되는)(104)를 포함한다. 플랫폼은 디스플레이 제어기(124)를 통해 GPX(122) 및/또는 CPU(102)에 결합되는 디스플레이(126)를 추가로 포함한다. (단일 CPU 블록이 도시될지라도, 플랫폼은 하나 이상의 OS 스레드(thread)들을 실행하고 다양한 상이한 과제들을 수행하기 위하여 다수의 CPU들 및/또는 프로세싱 코어들을 포함할 수 있다. 그러나, 간소화를 위해, 본원에서는 운영 시스템을 실행하는 단일 CPU가 도시된다.)The described platform includes a CPU 102, sensory devices 110 (e.g., gyros, speakers, cameras, etc.), other devices / interfaces (e.g., keypad, (E.g., a pointing device, USB devices, PCI ports, wireless interfaces, etc.) 116 and a graphics processor (GPX) 122, Respectively. The platform also includes a memory 108 (e.g., a DRAM) coupled to at least the CPU 102 via a memory controller 106 and also includes firmware (e. G. (E. G., Implemented by volatile memory). The platform further includes a display 126 coupled to the GPX 122 and / or the CPU 102 via a display controller 124. (Although a single CPU block is shown, the platform may include multiple CPUs and / or processing cores to execute one or more OS threads and perform a variety of different tasks. However, for simplicity, A single CPU running the operating system is shown.)

플랫폼은 저장 드라이브 제어기(112)를 통해 적어도 CPU(102)에 결합되는 저장 드라이브(114)(예를 들어 고체 드라이브)를 더 포함한다. 저장 드라이브는 데이터, 애플리케이션들 및 리눅스, Windows™, Mac OS™, Android 등의 시스템들과 같은 하나 이상의 운영 시스템들을 저장할 수 있다. 펌웨어(104)는 BIOS, EFI 또는 다른 부트/초기화 소프트웨어를 포함한다. (BIOS의 역할은 시간에 따라 변했왔음이 유념된다. 예를 들어, 일부 플랫폼들에서, BIOS는 더 복잡한 EFI(Extensible Firmware Interface)로 대체되고 있으나, 펌웨어용 BIOS는 여전히 널리 사용되고 있다. 지금까지, EFI는 2.6.1 이후의 리눅스 커널에서 GPT를 지원하는 Microsoft Windows™ 버전에서, 그리고 Mac OS에서 지원되어 왔다. 그러나, 보통의 컴퓨터 사용자는 용어에 있어서 BIOS 및 EFI의 구분을 거의 하지 않고, BIOS를 양 시스템 모두에 대한 포괄적인 용어로 표현한다. 그러나, 간소화를 위해, 용어 "펌웨어"는 일반적으로 BIOS, EFI 또는 대안의 부트/초기화 코드를 칭하는 데 사용될 것이다).The platform further includes a storage drive 114 (e.g., a solid drive) coupled to at least the CPU 102 via a storage drive controller 112. The storage drive may store one or more operating systems, such as data, applications, and systems such as Linux, Windows ", Mac OS ", and Android. The firmware 104 includes BIOS, EFI or other boot / initialization software. (Note that the role of the BIOS has changed over time.) For example, on some platforms, the BIOS has been replaced by the more complex Extensible Firmware Interface (EFI), but BIOS for firmware is still in widespread use. EFI has been supported in versions of Microsoft Windows ™ that support GPT in the Linux kernel since 2.6.1, and on Mac OS. However, ordinary computer users rarely distinguish between BIOS and EFI in terms, But for simplicity, the term "firmware" will generally be used to refer to the BIOS, EFI, or alternative boot / initialization code).

일괄하여, 운영 시스템 및 펌웨어는 플랫폼에 대한 PPM 인터페이스(146)를 구현하기 위해 소프트웨어 구성요소들을 포함한다. 도면에서 추상적으로 표현되는 바와 같이, 플랫폼이 개시되면, 초기 개시 코드를 실행한 후에, CPU는 부트 소프트웨어(펌웨어 공간(142))를 검색 및 가동하고 무엇보다도 이때에 PPM 인터페이스(146)에 대한 데이터 구조들을 설정할 수 있다. 일단 펌웨어 공간(예를 들어, BIOS, EFI)이 개시되면, OS 공간(144)은 CPU 내에서 OS 부트들로서 설정된다. 이 때, OS 내의 PPM 모듈들은 설정되어 있는 PPM 인터페이스(146)를 통해 플랫폼의 다양한 특성들을 식별할 수 있다.Collectively, the operating system and firmware include software components for implementing the PPM interface 146 for the platform. As depicted in the figure, once the platform is started, after executing the initial start code, the CPU retrieves and runs the boot software (firmware space 142) and, among other things, the data for the PPM interface 146 You can configure the structures. Once the firmware space (e.g., BIOS, EFI) is started, the OS space 144 is set as OS boots in the CPU. At this time, the PPM modules in the OS can identify various characteristics of the platform through the set PPM interface 146. [

도 2는 한편으로는 OS 전력 및 성능 기능 사이의 인터페이싱을 위한 PPM 인터페이스를, 그리고 다른 한편으로는 플랫폼 하드웨어를 추상적으로 도시하는 블록도이다. (이 도면이 향후에 본원에서 교시되는 원리들 중 일부를 편리하게 제시하는 예로서 주로 사용되는 ACPI 사양으로부터 도시되는 것이 주의되어야 한다. 그러나, 상기 도면은 본 명세서에 특정한 개념들과 부합하도록 추상화 및 수정되었다. 예를 들어, 더 일반적인 용어: "PPM"은 어떤 부분들에서는 "ACPI" 대신 사용되고 OS 공간 내에서는 "OSPM(Operating System-directed configuration and Power Management)" 대신 사용된다. ACPI는 PPM 인터페이스의 특정한 구현임이 인정되어야 한다.)Figure 2 is a block diagram that abstractly illustrates a PPM interface for interfacing between OS power and performance functions on one hand and platform hardware on the other hand. (It should be noted that this drawing is drawn from the ACPI specification, which is used primarily as an example to conveniently present some of the principles taught herein in the future. However, the drawings are not intended to be limited to abstraction and / For example, the more general term "PPM" is used in place of "ACPI" in some parts and "OSPM" in OS space. Certain implementations must be recognized.)

본 명세서와 관련하여, 플랫폼 하드웨어(202)는 CPU(102) 및 하드웨어 구성요소들(206)을 가지는 것으로 도시된다. 하드웨어 구성요소들은 사용되는 인터페이싱된 PPM에 따라 에러 인젝션 기능을 제공한다. 이 구성요소들은 특정한 회로들, 논리 유닛들, 제어기들, 실행 소프트웨어 등에 대응할 수 있다. 이것들은 OS로부터의 커맨드(command) 및 트리거(trigger)에 응답하여 PPM을 통해 에러를 생성할 수 있다.In the context of this specification, platform hardware 202 is shown having CPU 102 and hardware components 206. The hardware components provide an error injection function according to the interfaced PPM used. These components may correspond to particular circuits, logic units, controllers, execution software, and the like. They can generate errors via the PPM in response to commands and triggers from the OS.

CPU(102)는 상술한 바와 같이 펌웨어 및 OS를 실행함으로써, PPM 인터페이스(146), OS 공간(144) 및 애플리케이션 공간(240)을 설정한다. 애플리케이션 공간은 플랫폼 상에서 가동되는 애플리케이션들에 대한 API들(242)을 포함한다. OS 공간(144)은 PPM 인터페이스 드라이버(232), 디바이스 드라이버들(234), OS 커널(236) 및 PPM 시스템(238)을 포함하고, 이는 OS로부터의 성능 및 전력 관리를 용이하게 한다. 도시된 실시예에서, 플랫폼 제어 채널(platform control channel; PCC)은 OS PPM 기능 및 PPM 하드웨어 피처(feature)들 사이에서의 통신을 위해 PPM 인터페이스에 의해 구현된다.The CPU 102 sets the PPM interface 146, the OS space 144, and the application space 240 by executing the firmware and the OS as described above. The application space includes APIs 242 for applications running on the platform. OS space 144 includes a PPM interface driver 232, device drivers 234, an OS kernel 236, and a PPM system 238, which facilitates performance and power management from the OS. In the illustrated embodiment, a platform control channel (PCC) is implemented by the PPM interface for communication between OS PPM functionality and PPM hardware features.

PPM 인터페이스(146)는 PPM 레지스터들(222), PPM 펌웨어 구성요소들(224) 및 PPM 테이블들(226)을 포함한다. 레지스터들(222)은 특정한 레지스터들, 예를 들어 하드웨어 내의, 예를 들어 CPU 내의 또는 베이스보드 제어기와 같은 제어기의 일부로서의 전용 PPM 레지스터들에, 또는 소프트웨어 내에서 생성되는 가상 레지스터들에 대응할 수 있다. 레지스터들은 또한 PPM 테이블들에 의해 기술되는(적어도 장소에 있어서의), 하드웨어 인터페이스의 제한된 부분일 수 있다. ACPI는 예를 들어 ACPI 5.0 사양의 섹션 4(ACPI 하드웨어 사양)에서 기술되는 바와 같이, ACPI-호환 OS가 플랫폼 하드웨어의 핵심 전력 관리 및 성능 특징들을 제어하는 데 사용할 수 있는 하드웨어 레지스터 인터페이스를 정의한다.The PPM interface 146 includes PPM registers 222, PPM firmware components 224, and PPM tables 226. The registers 222 may correspond to dedicated registers, such as dedicated PPM registers in hardware, e.g., as part of a controller, such as in a CPU or as a baseboard controller, or in virtual registers created in software . The registers may also be a limited portion of the hardware interface (at least in place) described by the PPM tables. ACPI defines a hardware register interface that an ACPI-compliant OS can use to control core power management and performance features of the platform hardware, for example, as described in Section 4 of the ACPI 5.0 specification (ACPI Hardware Specification).

PPM 펌웨어 구성요소들(224)은 PPM 구현들에 대응하는 펌웨어의 일부분들을 포함한다. 전형적으로, 이 구성요소들은 슬립(sleep), 웨이크(wake) 및 일부 재시작 동작들에 대한 인터페이스들을 구현하는 데 사용될 수 있다. 본 명세서와 관련하여, 무엇보다도, 이 구성요소들은 에러 인젝션 서비스들에 사용되는 구성요소들을 포함하여, PPM 데이터 구조들 및 테이블들을 정의하기 위한 구성요소들을 포함할 수 있고, 이 구성요소들은 또한 테이블 내의 데이터 및/또는 어드레스들을 유지 및/또는 갱신하기 위한 하나 이상의 루틴들을 포함할 수 있다. (펌웨어 구성요소들(224)에 대응하는 ACPI 특징들 중 일부는 ACPI 5.0 사양의 섹션 5.3, "네임스페이스(Namespace)"에 기술된다).The PPM firmware components 224 include portions of the firmware corresponding to the PPM implementations. Typically, these components may be used to implement interfaces for sleep, wake and some restart operations. In the context of this specification, among other things, these components may include components for defining PPM data structures and tables, including components used in error injection services, / RTI > and / or < / RTI > (Some of the ACPI features corresponding to firmware components 224 are described in section 5.3, "Namespace" of the ACPI 5.0 specification).

PPM 테이블들은 일반적으로 하드웨어에 대한 인터페이스들을 기술한다. 일부 기술들은 구축될 수 있는 것을 제한한다. 예를 들어, 일부 제어부들은 레지스터들의 고정된 블록 내에 임베딩(embedding)될 수 있고, 테이블은 레지스터 블록의 어드레스를 명시한다. 대부분의 설명들은 하드웨어가 임의의 방식들로 구축되는 것을 가능하게 하며 하드웨어 기능을 행하는데 필요한 임의의 동작 시퀀스들을 기술할 수 있다. (본 명세서의 남은 부분의 경우, ACPI 테이블들은 적절한 PPM 테이블 구조들의 예들로서 기술될 것이다. ACPI 테이블들은 일반적으로 ACPI 5.0 사양의 섹션 5.2에서 기술된다. 게다가, 그리고 본 명세서와 관련하여, 에러 인젝션 테이블 구조들은 ACPI 5.0 사양의 섹션 18에서 기술된다.) PPM tables generally describe interfaces to hardware. Some technologies limit what can be built. For example, some controls may be embedded within a fixed block of registers, and the table specifies the address of a register block. Most of the explanations allow the hardware to be constructed in any manner and describe any sequence of operations necessary to perform the hardware function. (For the remainder of this specification, the ACPI tables will be described as examples of suitable PPM table structures.) ACPI tables are generally described in Section 5.2 of the ACPI 5.0 specification. Additionally, and with respect to this specification, The structures are described in section 18 of the ACPI 5.0 specification.)

"정의 블록(Definition Block)들"을 가지는 ACPI 테이블들은 OS에 의해 해석이 수행될 수 있는 의사 코드(pseudo-code) 유형의 언어를 사용할 수 있다. 즉, OSPM(PPM 시스템(238)에 대응한다)은 의사 코드 언어로 인코딩되고 "정의 블록들"을 포함하는 ACPI 테이블들에 저장되는 절차들을 수행하는 해석기를 포함 및 사용한다. ACPI 기계어(ACPI Machine Language; AML)로 공지되어 있는 의사 코드 언어는, 컴팩트하고, 토큰화(tokenized)된, 추상형의 기계어이다.ACPI tables having "Definition Blocks " can use a language of a pseudo-code type that can be interpreted by the OS. That is, the OSPM (which corresponds to PPM system 238) includes and uses an interpreter that is encoded in a pseudo-code language and performs procedures stored in ACPI tables that include "definition blocks ". The pseudo-code language known as ACPI Machine Language (AML) is a compact, tokenized, abstraction-type machine language.

도 3은 PPM 인터페이스를 사용하여 에러 인젝션을 프로세싱하는 루틴(302)을 도시한다.FIG. 3 shows a routine 302 for processing error injection using the PPM interface.

하드웨어 벤더들에게 자신들이 구현할 것을 선택하는 것에 있어서 유연성을 제공하기 위해, ACPI는 테이블들을 사용하여 시스템 정보, 특징들 및 상기 특징들을 제어하는 방법을 기술한다. 이 테이블들은 디바이스들, 예를 들어 시스템 보드 상의 디바이스들 또는 어떤 다른 하드웨어 표준을 사용하여 검출되거나 전력 관리될 수 없는 디바이스들을 기재한다. 이 테이블들은 지원되는 슬립 전력 상태들, 시스템 내에서 이용 가능한 파워 플레인(power plane)들 및 클럭 소스(clock source)들의 기술, 배터리들, 시스템 표시자 광들 등과 같은 시스템 케이퍼빌리티(capability)들을 기재할 수 있다. 이로 인해 OSPM(ACPI에 대한 OS 공간에서의 PPM 시스템(238)이 시스템 제어들이 어떻게 구현되는지를 인지할 필요도 없이 시스템 디바이스들을 제어할 수 있게 된다.To provide hardware vendors with flexibility in choosing what they want to implement, ACPI uses tables to describe system information, features, and how to control those features. These tables describe devices, such as devices on the system board, or devices that can not be detected or power managed using any other hardware standard. These tables describe the system capabilities such as the supported sleep power states, the description of the power planes and clock sources available in the system, the batteries, system indicator lights, can do. This allows the PPM system 238 in OS space for the OSPM (ACPI) to control system devices without having to be aware of how system controls are implemented.

도 4는 일부 실시예들에 따라 그와 같은 테이블들을 구현하는 일반적인 구조를 도시한다. 루트 시스템 기술 포인터(Root System Description Pointer; RSDP) 구조(402)는 시스템의 메모리 어드레스 공간 내에 위치되고 플랫폼 펌웨어에 의해 셋업될 수 있다. 이 구조는 데이터를 OSPM에 제공하는 다른 기술 테이블들을 참조 기재하는 확장 시스템 기술 테이블(Extended System Description Table; XSDT)(404)의 어드레스를 포함함으로써, OSPM에 베이스 시스템의 구현 및 구성에 대한 정보를 제공한다.Figure 4 illustrates a general structure for implementing such tables in accordance with some embodiments. A Root System Description Pointer (RSDP) structure 402 is located within the memory address space of the system and may be set up by the platform firmware. This structure includes information on the implementation and configuration of the base system in the OSPM by including the address of an extended system description table (XSDT) 404 that references other technology tables providing data to the OSPM do.

시스템 기술 테이블들은 동일한 헤더들로 시작해야만 한다. 시스템 기술 테이블들의 1차 목적은 OSPM에 대한 다양한 산업 표준 구현 세부사항들을 규정하는 것이다. 그와 같은 규정들로 인해 이 구현들의 다양한 부분들이 하드웨어 요건들 및 설계에 있어서 유연하면서도 여전히 OSPM이 하드웨어를 직접 제어하는데 필요한 정보를 상기 OSPM에 제공할 수 있게 된다.The system description tables must start with the same headers. The primary purpose of the system technology tables is to specify various industry standard implementation details for the OSPM. Such regulations allow various portions of these implementations to be flexible in hardware requirements and design, yet still provide the OSPM with the information necessary for the OSPM to directly control the hardware.

OSPM은 RSDP 구조에서 포인터를 따름으로써 상기 루트 시스템 기술 테이블의 위치를 결정한다. RSDP는 현재의 시스템 상에서 규정되는 다른 표준들에 대한 다양한 정보를 제공하는 다른 시스템 기술 테이블들에 대한 물리적 포인터들의 어레이에 선행하여 서명 'RSDP'로 시작한다. OSPM은 각각의 테이블을 공지된 서명에 대해 조사한다. 이 서명에 기초하여, OSPM은 그 후에 테이블 내의 구현 특정 데이터를 해석할 수 있다.The OSPM determines the location of the root system description table by following the pointer in the RSDP structure. The RSDP begins with the signature 'RSDP', preceded by an array of physical pointers to other system description tables providing various information about other standards defined on the current system. OSPM examines each table for known signatures. Based on this signature, the OSPM can then interpret the implementation specific data in the table.

도 5를 참조하여, 확장 시스템 기술 테이블(XSDT)이 더 기술된다. 이는 메모리 내의 다른 테이블들을 가리킨다. 포인터(402)에 의해 지시되는 제 1 테이블, XSDT는 고정 ACPI 기술 테이블(Fixed ACPI Description table; FADT)를 가르킨다. 이 테이블 내의 데이터는 하드웨어의 고정 ACPI 특징들을 기술하는 다양한 고정-길이 엔트리(entry)들을 포함한다. FADT 테이블은 다양한 시스템 특징들에 대한 정보 및 기술들을 포함하고 있는 차등 시스템 기술 테이블(Differentiated System Description Table; DSDT)을 나타낸다. 이 테이블들의 관계가 도 5에 도시된다.Referring to FIG. 5, an extended system description table (XSDT) is further described. It points to other tables in memory. A first table designated by the pointer 402, and an XSDT indicates a fixed ACPI description table (FADT). The data in this table includes various fixed-length entries describing fixed ACPI features of the hardware. The FADT table represents a Differentiated System Description Table (DSDT) that contains information and techniques for various system features. The relationship of these tables is shown in Fig.

OS가 부팅 동안 초기화되면, OSPM은 RSDP 구조를 찾는다. OSPM이 이 구조를 찾으면, OSPM은 루트 시스템 기술 테이블 또는 확장 시스템 기술 테이블에 대한 물리적 어드레스를 검토한다. 루트 시스템 기술 테이블은 서명 "RSDP"로 시작하고, 반면에 확장 시스템 기술 테이블은 서명 "XSDT"로 시작한다. 이 테이블들은 시스템에 대한 다양한 정보를 제공하는 다른 시스템 기술 테이블들에 대한 하나 이상의 물리적 포인터들을 포함한다. 도 5에 도시되는 바와 같이, 고정 ACPI 기술 테이블(FADT)에 대한 물리적 어드레스는 루트 시스템 기술 테이블 내에 항상 존재해야만 한다.When the OS is initialized during boot, the OSPM looks for an RSDP structure. When OSPM finds this structure, OSPM examines the physical address for the root system description table or extended system description table. The root system description table starts with the signature "RSDP", while the extended system description table starts with the signature "XSDT". These tables contain one or more physical pointers to other system description tables that provide various information about the system. As shown in FIG. 5, the physical address for the fixed ACPI description table (FADT) must always be present in the root system description table.

OSPM이 다른 테이블에 대한 물리적 포인터를 따르면, OSPM은 각각의 테이블을 공지되는 서명에 대하여 조사한다. 이 서명에 기초하여, OSPM은 그 후에 기술 테이블 내의 구현 특정 데이터를 해석할 수 있다.When OSPM follows a physical pointer to another table, OSPM examines each table for known signatures. Based on this signature, the OSPM can then interpret the implementation specific data in the description table.

FADT의 목적은 구성 및 전력 관리와 관련되는 다양한 정적 시스템 정보를 정의하는 것이다. 고정 ACPI 기술 테이블은 "FACP" 서명으로 시작한다. FADT는 플랫폼 상의 ACPI 하드웨어 레지스터들의 구현 및 구성 세부사항들을 기술한다.The purpose of the FADT is to define various static system information related to configuration and power management. The fixed ACPI technology table begins with a "FACP" signature. FADT describes the implementation and configuration details of the ACPI hardware registers on the platform.

GPEO_BLK 및 GPE1_BLK 블록들은 제어 방법들을 위한 해석 프로세싱 모델에 대한 기초를 제공한다. P_BLK 블록들은 프로세서 특징들을 제어하기 위한 것이다. ACPI 하드웨어 레지스터 구현 정보 외에, FADT는 또한 정의 블록 포맷으로 인코딩되는 차등 시스템 기술 테이블(DSDT)로서 공지된 데이터 구조에 대한 물리적 포인터를 포함한다.The GPEO_BLK and GPE1_BLK blocks provide the basis for an analytical processing model for control methods. P_BLK blocks are for controlling processor features. In addition to the ACPI hardware register implementation information, the FADT also includes a physical pointer to a known data structure as a differential system description table (DSDT) encoded in a definition block format.

정의 블록은 플랫폼의 하드웨어 구성을 표현하는 "ACPI 네임스페이스"로 공지되는 계층(hierarchical)(트리-구조식) 엔티티(entity)에 데이터 객체들이 배열되는 형태로 플랫폼의 하드웨어 구현에 대한 정보를 포함한다. OSPM에 의해 로딩되는 정의 블록들은 플랫폼을 표현하는 하나의 네임스페이스를 형성하도록 결합된다. 데이터 객체들은 ACPI 기계어 또는 요약해서 AML로서 공지되는 포맷으로 인코딩된다. AML로 인코딩되는 데이터 객체들은 AML 해석기로서 공지되는 OSPM 엔티티에 의해 "평가"된다. 이들의 값들은 정적 또는 동적일 수 있다. AML 해석기의 동적 데이터 객체 평가 케이퍼빌리티는 결과를 결정하기 위해 어드레스 공간들로의 액세스(예를 들어 I/O 또는 메모리 액세스들), 계산 및 논리 평가를 포함하는 프로그램적인 평가에 대한 지원을 포함한다. 동적 네임스페이스 객체는 "제어 방법들"로서 공지된다. OSPM은 전체 정의 블록을 논리 유닛으로서 "로딩" 또는 "언로딩" -네임스페이스에 추가하거나 네임스페이스로부터 연관되는 객체들을 제거-한다. DSDT는 부팅 시간에 OSPM에 의해 로딩되어야 하고 언로딩되지 않아야 한다. 이는 전력 관리, 열 관리 또는 ACPI 하드웨어 레지스터들에 의해 기술되는 정보의 범위를 넘는 플러그 앤 플레이(Plug and Play) 기능을 수행하기 위해 OSPM이 사용할 수 있는 구현 및 구성 정보를 포함하고 차등 정의 블록으로 칭해지는 정의 블록을 포함한다.The definition block contains information about the hardware implementation of the platform in the form of data objects arranged in a hierarchical (tree-structured) entity known as an "ACPI namespace" representing the hardware configuration of the platform. The definition blocks loaded by the OSPM are combined to form a single namespace representing the platform. The data objects are encoded in an ACPI machine language or, in summary, a format known as AML. Data objects encoded in AML are "evaluated" by OSPM entities known as AML parsers. These values may be static or dynamic. The dynamic data object evaluation capabilities of the AML parser include support for programmatic evaluation, including access to address spaces (eg, I / O or memory accesses), computation and logical evaluation to determine the results. do. Dynamic namespace objects are known as "control methods ". The OSPM "loads" or "unloads" the entire definition block as a logical unit, or removes the associated objects from the namespace. The DSDT should be loaded by OSPM at boot time and should not be unloaded. This includes implementation and configuration information that can be used by OSPM to perform Plug and Play functions beyond the scope of the information described by power management, thermal management, or ACPI hardware registers, and is referred to as a differential definition block. Decompression includes definition blocks.

정의 블록은 새로운 시스템 속성들을 정의하거나, 또는 일부 경우들에서 이전 정의들을 기반으로 할 수 있다. 정의 블록은 시스템 메모리 어드레스 공간으로부터 로딩될 수 있다. 정의 블록의 하나의 사용은 플랫폼 버전 변경들을 기술 및 배포하는 것이다.A definition block may define new system attributes, or, in some cases, may be based on previous definitions. The definition block may be loaded from the system memory address space. One use of the definition block is to describe and distribute platform version changes.

정의 블록들은 하드웨어 플랫폼 구현들의 광범위한 변화들을 합리적인 경계들로 제한하면서 이 변화들이 ACPI-호환 OS에 기술되는 것을 가능하게 한다. 정의 블록들은 서너 개의 명확히 정의된 객체 네임들을 사용함으로써 간단한 플랫폼 구현들이 표현될 수 있도록 한다.The definition blocks enable these changes to be described in an ACPI-compliant OS while limiting the wide range of hardware platform implementations to reasonable boundaries. Definition blocks allow simple platform implementations to be represented by using three or four well-defined object names.

일부 연산자들은 간단한 함수들을 수행하고 다른 연산자들은 복잡한 함수들을 완수한다. 정의 블록의 능력은 이 연산들이 OSPM에 기능을 제공하기 위하여 다수의 방식들로 서로 결합되도록 하는 자체의 능력으로부터 기원한다. 제시된 연산자들은 많은 유용한 하드웨어 설계들이 ACPI 표현되도록 하고 모든 하드웨어 설계들이 표현되지 않도록 의도된다.Some operators perform simple functions, while others perform complex functions. The ability of a definition block originates from its ability to allow these operations to be combined together in a number of ways to provide functionality to the OSPM. The proposed operators are intended to allow many useful hardware designs to be ACPI represented and not all hardware designs to be represented.

ACPI 5.0 사양의 섹션 18에서 기술되는 바와 같이, ACPI는 ACPI 플랫폼 에러 인터페이스(ACPI Platform Error Interface; APEI)들을 제공하고, 이는 플랫폼이 에러 정보를 OSPM에 전달하기 위한 수단을 제공한다. APEI는 기존의 하드웨어 에러 보고 메커니즘들을 확장하고 이 메커니즘들을 일관된 하드웨어 에러 기반구조의 구성요소들로서 서로 합한다. APEI는 오늘날의 하드웨어 디바이스들에서 이용 가능한 추가 하드웨어 에러 정보를 활용하고 시스템 펌웨어와 훨씬 더 밀접하게 통합된다.As described in Section 18 of the ACPI 5.0 specification, ACPI provides ACPI Platform Error Interfaces (APEIs), which provide a means for the platform to communicate error information to the OSPM. APEI expands existing hardware error reporting mechanisms and combines these mechanisms together as components of a coherent hardware error infrastructure. APEI takes advantage of the additional hardware error information available in today's hardware devices and integrates much more closely with system firmware.

결과적으로, APEI는 다음의 이점들을 제공할 수 있다: (a) 이는 하드웨어 에러들의 근본 원인을 결정하기 위한 표준 에러 기록 포맷에서 더 광범위한 에러 데이터가 이용 가능하게 되도록 한다; (b) 이는 하드웨어 벤더들이 자신들의 디바이스들에 새로운 그리고 더 양호한 하드웨어 에러 보고 메커니즘들을 추가할 때, APEI에 의해 플랫폼 및 OSPM이 새로운 메커니즘들을 적절하게 수용하는 것이 가능하도록, 확장 가능하다.As a result, the APEI can provide the following advantages: (a) it allows a wider range of error data to be available in the standard error recording format to determine the root cause of hardware errors; (b) It is scalable so that platform and OSPM can properly accommodate new mechanisms by APEI when hardware vendors add new and better hardware error reporting mechanisms to their devices.

이것은 시스템 설계자들이 하드웨어 에러들, 펌웨어 및 OSPM 및 에러 처리에 대한 정보에 대한 기본 사안들 및 APEI 아키텍처 구성요소들을 이해하는데 도움을 주는 정보를 제공한다.It provides information that helps system designers understand basic issues about information on hardware errors, firmware and OSPM and error handling, and APEI architecture components.

하드웨어 에러는 컴퓨터 플랫폼에서 하드웨어 구성요소의 오기능과 관련되어 기록되는 사건이다. 하드웨어 구성요소들은 하드웨어 에러 상태가 언제 존재하는지를 검출하는 에러 검출 메커니즘을 포함한다. 하드웨어 에러들은 정정된 에러들 또는 정정되지 않은 에러들로서 분류될 수 있다.A hardware error is an event that is recorded in association with a malfunction of a hardware component in a computer platform. The hardware components include an error detection mechanism that detects when a hardware error condition is present. Hardware errors can be classified as corrected errors or uncorrected errors.

OSPM 및 시스템 펌웨어는 하드웨어 에러 처리에서 중요한 역할들을 수행한다. APEI는 OSPM 및 시스템 펌웨어 모두가 하드웨어 에러 처리의 업무에 상보하는 방식으로 기여할 수 있는 방법들을 개선한다. APEI는 펌웨어 또는 OSPM이 핵심 하드웨어 에러 자원들을 소유할지를 하드웨어 플랫폼 벤더가 결정하는 것을 가능하게 한다. APEI는 또한 펌웨어가 하드웨어 에러 자원들의 제어를 적절할 때 OSPM으로 통과시키는 것을 가능하게 한다.OSPM and system firmware play important roles in hardware error handling. APEI improves methods that both OSPM and system firmware can contribute in a way that complicates the task of hardware error handling. APEI enables hardware platform vendors to determine whether firmware or OSPM will own critical hardware error resources. The APEI also enables the firmware to pass control of hardware error resources to the OSPM when appropriate.

APEI는 4개의 개별 테이블들을 포함한다: (a) 에러 기록 직렬화 테이블(Error Record Serialization Table; ERST), (b) 부트 에러 기록 테이블(BOOT Error Record Table; BERT), (c) 하드웨어 에러 소스 테이블(Hardware Error Source Table; HEST); 및 본 명세서에 특히 적절한 것으로 (d) 에러 인젝션 테이블(Error Injection Table; EINJ).The APEI includes four separate tables: (a) an Error Record Serialization Table (ERST), (b) a BOERT Error Record Table (BERT), (c) a hardware error source table Hardware Error Source Table (HEST); And (d) an Error Injection Table (EINJ), which is particularly suitable herein.

본 섹션은 OSPM이 플랫폼 특정 OSPM 레벨 소프트웨어를 요구하지 않고도 플랫폼에 하드웨어 에러들을 인젝팅(injecting)할 수 있는 범용 인터페이스 메커니즘을 가능하게 하며, EINJ로 칭해지는 ACPI 테이블 메커니즘을 약술한다. 이 메커니즘의 1차 목표는 하드웨어 에러들의 인젝션을 가능하게 함으로써 OSPM 에러 처리 스택(stack)의 테스팅을 지원하는 것이다. 이 케이퍼빌리티를 통해 OSPM은 시스템에 대한 에러 처리의 진단 및 유효성에 대한 간단한 인터페이스를 구현할 수 있다.This section outlines the ACPI table mechanism, referred to as EINJ, which enables a general-purpose interface mechanism by which OSPM can inject hardware errors into the platform without requiring platform specific OSPM level software. The primary goal of this mechanism is to support testing of the OSPM error handling stack by enabling injection of hardware errors. This capability allows OSPM to implement a simple interface to diagnose and validate error handling for the system.

도 6 내지 도 15는 ACPI 에러 인젝션의 테이블 구조를 도시한다. 도 6은 에러 인젝션(EINJ) 테이블의 레이아웃을 도시하는 테이블이고 도 7은 지원되는 에러 인젝션 동작들을 식별한다. EINJ 테이블은 OSPM이 플랫폼 특정 OS 소프트웨어를 요구하지 않고도 플랫폼에 하드웨어 에러들을 인젝팅할 수 있는 범용 인터페이스 메커니즘을 제공한다. 시스템 펌웨어는 이 테이블을 구축하는 일을 하고, 이 테이블은 인젝션 명령어 엔트리들로 구성된다.FIGS. 6 to 15 show a table structure of ACPI error injection. FIG. 6 is a table showing the layout of the error injection (EINJ) table and FIG. 7 identifies supported error injection operations. The EINJ table provides a general-purpose interface mechanism by which OSPM can inject hardware errors into the platform without requiring platform-specific OS software. The system firmware is responsible for building this table, which consists of the injection command entries.

인젝션 동작은 일반적으로 일련의 하나 이상의 인젝션 명령어들을 포함한다. 인젝션 명령어는 인젝션 명령어 엔트리에서 정의되는 바와 같은 레지스터 영역에 의해 표현되는 추상화된 하드웨어 레지스터 상에서의 원시 연산을 나타낸다.The injection operation generally comprises a series of one or more injection commands. The injection instruction represents a primitive operation on the abstracted hardware register represented by a register region as defined in the injection instruction entry.

도 8은 인젝션 명령어 엔트리의 레이아웃을 도시한다. 인젝션 명령어 엔트리는 인젝션 하드웨어 레지스터 내의 영역 및 상기 영역 상에서 수행될 인젝션 명령어를 기술한다.Fig. 8 shows the layout of the injection command entry. The injection instruction entry describes the area in the injection hardware register and the injection instruction to be executed on the area.

레지스터 영역은 범용 어드레스 구조로서 기술된다. 이 구조는 레지스터의 원하는 영역에 대응하는 비트 범위뿐만 아니라 레지스터의 물리적 어드레스를 기술한다. 비트 범위는 인젝션 명령어와 연관되는 레지스터 내의 모든 비트를 포함하는 연속 비트들의 가장 작은 세트로서 정의된다. 예를 들어, 비트들 [6:5] 및 비트들 [3·2] 모두가 인젝션 명령어에 대응하는 경우, 상기 명령어에 대한 비트 범위는 [6:2]일 것이다.The register area is described as a general purpose address structure. This structure describes the physical address of the register as well as the bit range corresponding to the desired area of the register. The bit range is defined as the smallest set of consecutive bits containing all the bits in the register associated with the injection instruction. For example, if both bits [6: 5] and bits [3 · 2] correspond to an injection instruction, the bit range for the instruction would be [6: 2].

비트 범위가 특정한 인젝션 명령어와 관련되지 않은 비트들(즉, 위의 예에서 비트 4)을 포함할 수 있으므로, 비트 마스크(bit mask)는 이 명령어들에 대응하는 영역 내의 모든 비트들을 구별하는 데 사용된다. 마스크 필드(mask field)는 이 비트 마스크인 것으로 정의되고 여기서 비트는 인젝션 명령어에 대응하는 비트 범위(레지스터 영역에 의해 규정됨) 내의 각각의 비트에 대해 '1'로 세팅된다. 비트 마스크의 비트 '0'은 비트 범위 내의 최하위 비트에 대응하는 것이 유의된다. 위에서 사용되는 예에서, 마스크는 11011b 또는 0x1B일 것이다.A bit mask may be used to distinguish all bits in an area corresponding to these instructions, since the bit range may include bits that are not associated with a particular injection instruction (i.e., bit 4 in the example above) do. The mask field is defined to be this bit mask, and the bit is set to '1' for each bit in the bit range (defined by the register region) corresponding to the injection instruction. It is noted that bit '0' of the bit mask corresponds to the least significant bit in the bit range. In the example used above, the mask would be 11011b or 0x1B.

도 10 내지 도 13이 참조된다. 도 10은 인젝션 명령어 엔트리들에 대해 지원되는 인젝션 명령어들을 기재한다. 도 11은 GET COMMAMD STATUS로부터 리턴되는 에러 인젝션 코드들을 정의한다. 도 12는 GET_ERROR TYPE로부터 리턴되는 에러 유형 코드들을 정의한다. 도 13은 SET_ERROR_TYPE_WITH_ADDRESS 데이터 구조를 도시하는 테이블이다.See Figures 10-13. Figure 10 describes the injection commands supported for the injection command entries. Figure 11 defines the error injection codes returned from GET COMMAMD STATUS. Figure 12 defines the error type codes returned from GET_ERROR TYPE. 13 is a table showing a SET_ERROR_TYPE_WITH_ADDRESS data structure.

에러 인젝션 동작은 에러가 플랫폼 내로 인젝팅되고 후속해서 트리거되는 2 단계 프로세스일 수 있다. 소프트웨어가 SET ERROR_TYPE 동작을 사용하여 에러를 플랫폼 내로 인젝팅한 후에, 소프트웨어는 이 에러를 트리거해야만 한다. 이 에러를 트리거하기 위해, 소프트웨어는 포인터를 트리거 에러 동작 테이블로 리턴시키는 GET_TRIGGER_ERROR_ACTION_TABLE 연산을 인보킹(invoking)한다. 이 테이블의 포맷은 도 15의 테이블에 도시된 바와 같다. 소프트웨어는 인젝팅된 에러를 트리거하기 위해 트리거 에러 동작 테이블(도 15) 내에 명시되는 명령어 엔트리들을 실행한다(주의: 위의 "엔트리 계수" 필터가 0이라면, TRIGGER_ERROR 동작 테이블에서 동작 구조들이 존재하지 않는다). 플랫폼은 예를 들어, 에러 인젝션 동작이 에러를 소비할뿐만 아니라 시딩(seeding)하는 경우에 TRIGGER_ERROR 동작이 필요하지 않는 상황들에서 이 필드를 0으로 만들 수 있다. 또한 TRIGGER_ERROR 명령어 엔트리들의 포맷이 도 10의 테이블에 기술되는 바와 같이 인젝션 명령어 엔트리들의 포맷과 동일한 것 또한 유의된다.The error injection operation may be a two-step process in which an error is injected into the platform and subsequently triggered. After the software has injected an error into the platform using the SET ERROR_TYPE operation, the software must trigger this error. To trigger this error, the software invokes the GET_TRIGGER_ERROR_ACTION_TABLE operation which returns the pointer to the trigger error action table. The format of this table is as shown in the table of FIG. The software executes the instruction entries specified in the trigger error operation table (Fig. 15) to trigger the injected error (Note: if the above "entry count" filter is zero, no operation structures exist in the TRIGGER_ERROR action table ). The platform may make this field 0 in situations where, for example, the TRIGGER_ERROR operation is not needed when the error injection operation consumes and seeds the error as well. It is also noted that the format of the TRIGGER_ERROR command entries is the same as the format of the injection command entries as described in the table of FIG.

에러를 인젝팅하기 위해 OSPM이 이 메커니즘을 사용할 수 있기 전에, OSPM은 GET_ERROR_TYPE 커맨드를 실행함으로써 플랫폼의 에러 인젝션 케이퍼빌리티들을 발견해야만 한다(에러 유형들의 정의들에 대한 도 12를 참조할 것).Before OSPM can use this mechanism to inject errors, OSPM must discover the error injection capabilities of the platform by executing the GET_ERROR_TYPE command (see Figure 12 for definitions of error types).

에러 인젝션 케이퍼빌리티들을 발견한 후에, OSPM은 아래에 기술되는 시퀀스를 따라 에러를 인젝팅하고 트리거할 수 있다.(에러를 플랫폼 내로 인젝팅하는 것은 에러를 자동으로 소비하지 않음에 유의한다) 에러 인젝션에 응답하여, 플랫폼은 트리거 에러 동작 테이블을 리턴시킨다. 에러를 인젝팅했던 소프트웨어는 그 후에 에러를 소비하기 위해 트리거 에러 동작 테이블 내의 동작들을 실행해야만 한다. 에러가 인젝션 시에 자동으로 소비되는 그러한 특정한 에러 유형인 경우, 플랫폼은 NO_OP 명령어를 포함하는 트리거 에러 동작 테이블을 리턴시킬 것이다.After finding the error injection capabilities, the OSPM can inject and trigger errors according to the sequence described below (note that injecting errors into the platform does not automatically consume errors) In response to the injection, the platform returns a trigger error action table. The software that injected the error must then perform the operations in the trigger error action table to consume the error. If the error is such a particular type of error that is automatically consumed at the time of injection, the platform will return a trigger error action table containing the NO_OP command.

다음은 에러들이 OS(예를 들어, OSPM)에 의해 인젝팅되는 프로세스 시퀀스이다.The following is a process sequence in which errors are projected by an OS (e.g., OSPM).

1. 플랫폼에 에러 인젝션 동작이 시작할 것임을 통지하기 위해 BEGIN_INJECTION_OPERATION 동작을 실행한다.1. Execute the BEGIN_INJECTION_OPERATION operation to notify the platform that an error injection operation will begin.

2. 시스템의 에러 인젝션 케이퍼빌리티들을 결정하기 위해 GET ERROR TYPE를 실행한다. 이 동작은 플랫폼에 의해 지원되는 에러 유형들의 DWORD 비트 맵을 리턴시킨다(에러 유형들의 정의들에 대하여 도 12를 참조할 것).2. Execute GET ERROR TYPE to determine the error injection capabilities of the system. This action returns a DWORD bitmap of error types supported by the platform (see Figure 12 for definitions of error types).

3. GET_ERROR TYPE가 BIT31 세트를 지니는 DWORD를 리턴시킨다면, 이는 도 12의 테이블에서 정의되는 표준 에러 유형들과는 별도로 벤더 정의 에러 유형이 존재하는 것을 의미한다.3. If GET_ERROR TYPE returns a DWORD with BIT31 set, this means that there is a vendor defined error type separate from the standard error types defined in the table of FIG.

4. OSPM은 인젝팅할 에러의 유형을 선택한다.4. OSPM selects the type of error to be injected.

4.1 OS PM이 지원되는 표준 에러 유형들 중 하나를 인젝팅할 것을 선택하면, 이는 SET_ERROR_TYPE_WITH_ADDRESS 커맨드를 실행함으로써 "에러 유형" 필드(도 13을 참조할 것) 내에 대응하는 비트를 세팅한다. 예를 들어, OSPM이 "메모리 접속 가능" 에러를 인젝팅할 것을 선택하면, OS PM은 0x0000_0080의 "에러 유형" 값을 가지는 SET_ERROR TYPE_WITH_ADDRESS를 실행한다.4.1 If the OS PM chooses to inject one of the supported standard error types, it sets the corresponding bit in the "Error Type" field (see FIG. 13) by executing the SET_ERROR_TYPE_WITH_ADDRESS command. For example, if OSPM chooses to inject a "memory attachable" error, OS PM executes SET_ERROR TYPE_WITH_ADDRESS with an "error type" value of 0x0000_0080.

4.1.1 선택적으로, OSPM은 에러의 유형에 따라, 메모리 범위, PCIe 세그먼트/디바이스/함수 또는 프로세서 APIC ID와 같은 인젝션의 목표를 선택할 수 있다. OSPM은 "SET ERROR TYPE WITH ADDRESS" 데이터 구조의 적절한 필드들을 채움으로써 이를 행한다(자세한 것은 도 13을 참조할 것).4.1.1 Optionally, OSPM can select the target of injection, such as memory range, PCIe segment / device / function or processor APIC ID, depending on the type of error. OSPM does this by populating the appropriate fields of the " SET ERROR TYPE WITH ADDRESS "data structure (see Figure 13 for details).

4.2 OSPM이 벤더 정의 에러 유형들 중 하나를 인젝팅할 것을 선택하면, 이는 "에러 유형" 필드 세트의 SET_ERROR_TYPE_WITH_ADDRESS를 실행한다.4.2 If OSPM chooses to inject one of the vendor-defined error types, it executes SET_ERROR_TYPE_WITH_ADDRESS in the "Error Type" field set.

4.2.1 OSPM은 "벤더 에러 유형 확장 구조 객체"를 판독함으로써, "벤더 에러 유형 확장 구조"의 위치를 얻는다(도 14를 참조할 것).4.2.1 The OSPM obtains the location of the "vendor error type extension structure" by reading the "vendor error type extended structure object " (see FIG. 14).

4.2.1.1 OS PM은 경로(PCIe 세그먼트/디바이스/함수)가 벤더 에러 유형 확장 구조의 "SBDF" 필드 내에 제공되는 PCIe config. 공간으로부터 벤더 ID, 디바이스 ID 및 Rev ID를 판독한다.4.2.1.1 OS The PM is a PCIe config where the path (PCIe segment / device / function) is provided in the "SBDF" field of the vendor error type extension structure. And reads the vendor ID, the device ID, and the Rev ID from the space.

4.2.1.2 벤더 ID/디바이스 ID 및 Rev ID들이 정합하면, OSPM은 자신이 가동하고 있는 플랫폼을 식별할 수 있고 이 플랫폼에 의해 지원되는 벤더 에러 유형들을 인지할 것이다.4.2.1.2 When the Vendor ID / Device ID and Rev IDs match, the OSPM will be able to identify the platform on which it is running and will recognize the vendor error types supported by this platform.

4.2.1.3 OSPM은 "OEM 정의 구조" 필드 내에 인젝팅할 벤더 에러 유형을 기록한다(도 14를 참조할 것).4.2.1.3 OSPM records the type of vendor error to be injected into the "OEM defined structure" field (see FIG. 14).

4.2.2 선택적으로, OSPM은 에러의 유형에 따라, 메모리 범위, PCIe 세그먼트/디바이스/함수 또는 프로세서 APIC ID와 같은 인젝션의 목표를 선택할 수 있다. OSPM은 "SET_ERROR_TYPE_WITH_ADDRESS 데이터 구조"의 적절한 필드들을 채움으로써 이를 행한다.(자세한 것은 도 13을 참조할 것)4.2.2 Optionally, OSPM can select the target of injection, such as memory range, PCIe segment / device / function, or processor APIC ID, depending on the type of error. OSPM does this by populating the appropriate fields of the " SET_ERROR_TYPE_WITH_ADDRESS data structure "(see Figure 13 for details).

5. 플랫폼에 인젝션 동작을 시작하라고 지시하기 위해 EXECUTE_OPERATION 동작을 실행.5. Execute the EXECUTE_OPERATION action to instruct the platform to start the injection operation.

6. 추상화된 비지 비트(Busy bit)를 제거하여 동작이 완료됨을 플랫폼이 표시할 때까지 CHECK BUSY_STATUS 동작을 계속해서 실행함으로써 비지 웨이팅(busy waiting)된다.6. Busy waiting occurs by continuously executing CHECK BUSY_STATUS operation until the platform indicates that the operation is completed by removing the abstracted busy bit.

7. 판독 동작의 상태를 결정하기 위해 GET COMMAND STATUS 동작을 실행.7. Execute the GET COMMAND STATUS operation to determine the status of the read operation.

8. 플랫폼이 에러들을 인젝팅할 수 없음을 상기 상태가 표시하면, 중단.8. If the above condition indicates that the platform can not inject errors, stop.

9. TRIGGER ERROR 동작 테이블에 대한 물리적 포인터를 획득하기 위해 GET_TRIGGER_ERROR_ACTION_TABLE 연산을 실행. 이는 에러를 인젝팅하는 것이 2(또는 2 이상) 단계 프로세스인 시스템들에 유연성을 제공한다.9. TRIGGER ERROR Executes the GET_TRIGGER_ERROR_ACTION_TABLE operation to obtain the physical pointer to the action table. This provides flexibility for systems where error injection is a two (or more) step process.

10. TRIGGER ERROR 동작 테이블에서 명시된 동작들을 실행.10. TRIGGER ERROR Execute the specified operations in the operation table.

11. 플랫폼에 에러 인젝션 동작이 완료됨을 통지하기 위해 END_OPERATION을 실행.11. Execute END_OPERATION to notify the platform that the error injection operation is complete.

본 발명은 기술된 실시예들로 제한되지 않지만, 첨부된 청구항들의 정신 및 범위 내에서 수정하고 변형하여 실시될 수 있다. 도면들 중 일부에서, 신호 도전체 라인들은 라인들로 표현되는 것 또한 인정되어야 한다. 일부는 더 많은 구성 신호 경로들을 표시하기 위해 더 두꺼울 수 있고/있거나, 구성 신호 경로들의 수를 표시하기 위해 수가 라벨링될 수 있고/있거나, 주 정보 흐름 방향을 표시하기 위해 하나 이상의 종단들에 화살표들을 가질 수 있다. 그러나, 이것은 제한하는 것으로 해석되어서는 안 된다. 오히려, 그와 같은 추가 세부사항들은 하나 이상의 예시적인 실시예들과 함께 사용되어 회로를 더 쉽게 이해하는 것을 촉진할 될 수 있다. 임의의 표현된 신호 라인들은, 추가 정보를 가지는지 또는 가지지 않던지, 실제로 다수의 방향들로 이동할 수 있고 임의의 적절한 유형의 신호 방식으로 구현될 수 있는 하나 이상의 신호들을 포함할 수 있다.The invention is not limited to the embodiments described, but may be practiced with modification and modification within the spirit and scope of the appended claims. In some of the figures, it should also be recognized that the signal conductor lines are represented by lines. Some may be thicker to indicate more constituent signal paths and / or may be numbered to indicate the number of constituent signal paths and / or may be labeled with arrows < RTI ID = 0.0 >Lt; / RTI > However, this should not be construed as limiting. Rather, such additional details may be used in conjunction with one or more exemplary embodiments to facilitate an easier understanding of the circuit. Any represented signal lines may include one or more signals that may or may not have additional information, may actually move in multiple directions, and may be implemented in any suitable type of signaling scheme.

Claims (25)

플랫폼 하드웨어 컴포넌트(platform hardware component)와,
운영 시스템(Operating System; OS)을 실행하는 프로세서를 포함하는 시스템으로서,
상기 운영 시스템(OS)은
상기 플랫폼 하드웨어 컴포넌트의 에러 인젝션 케이퍼빌리티(error injection capabilities)를 결정하는 GET_ERROR_TYPE 동작을 실행하고,
(i) 복수의 표준 에러 유형 및 (ii) 벤더 정의 에러 유형을 상기 플랫폼 하드웨어 컴포넌트가 지원한다는 것을 표시하는 DWORD 응답을 수신하고,
상기 복수의 표준 에러 유형 및 상기 벤더 정의 에러 유형 중에서 인젝션을 위한 제 1 에러 유형을 선택하고,
상기 플랫폼 하드웨어 컴포넌트로 하여금 상기 제 1 에러 유형을 사용하여 에러 인젝션 동작을 시작하도록 명령하는 EXECUTE_OPERATION 동작을 실행하는
시스템.
A platform hardware component,
1. A system comprising a processor running an Operating System (OS)
The operating system (OS)
Perform a GET_ERROR_TYPE operation to determine error injection capabilities of the platform hardware component,
receive a DWORD response indicating that the platform hardware component supports (i) a plurality of standard error types and (ii) a vendor defined error type,
Select a first error type for injection from among the plurality of standard error types and the vendor defined error types,
Executing an EXECUTE_OPERATION operation that instructs the platform hardware component to initiate an error injection operation using the first error type
system.
제 1 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 운영 시스템(OS)에 의해 선택된 상기 제 1 에러 유형이 상기 벤더 정의 에러 유형인 것에 응답하여 벤더 에러 유형 확장 구조(Vendor Error Type Extension Structure)에 액세스하는
시스템.
The method according to claim 1,
The operating system (OS) may also be configured to access the Vendor Error Type Extension Structure in response to the first error type selected by the operating system (OS) being the vendor defined error type
system.
제 2 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 벤더 에러 유형 확장 구조에 액세스하는 것에 응답하여 벤더 ID, 디바이스 ID 및 Rev ID를 판독하는
시스템.
3. The method of claim 2,
The operating system (OS) may also read the vendor ID, device ID, and Rev ID in response to accessing the vendor error type extension structure
system.
제 3 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 벤더 ID, 상기 디바이스 ID 및 상기 Rev ID를 판독하는 것에 응답하여 상기 플랫폼 하드웨어 컴포넌트를 식별하는
시스템.
The method of claim 3,
The operating system (OS) also identifies the platform hardware component in response to reading the vendor ID, the device ID, and the Rev ID
system.
제 3 항 또는 제 4 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 벤더 ID, 상기 디바이스 ID 및 상기 Rev ID를 판독하는 것에 응답하여 상기 벤더 정의 에러 유형을 식별하는
시스템.
The method according to claim 3 or 4,
The operating system (OS) also identifies the vendor defined error type in response to reading the vendor ID, the device ID, and the Rev ID
system.
제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 플랫폼 하드웨어 컴포넌트로 하여금 상기 에러 인젝션 동작을 시작하도록 명령하는 상기 EXECUTE_OPERATION 동작을 실행하는 것에 응답하여, 상기 플랫폼 하드웨어 컴포넌트가 플래그(flag) 내의 비지 비트(busy bit)를 제거함으로써 상기 에러 인젝션 동작이 완료됨을 표시할 때까지 CHECK_BUSY_STATUS 동작을 계속 실행하는
시스템.
5. The method according to any one of claims 1 to 4,
The operating system (OS) is further configured to cause the platform hardware component to generate a busy bit in a flag in response to executing the EXECUTE_OPERATION operation instructing the platform hardware component to begin the error injection operation. The CHECK_BUSY_STATUS operation is continuously executed until the error injection operation is completed
system.
제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 운영 시스템(OS)은 또한
상기 에러 인젝션 동작의 상태를 결정하기 위해 GET_COMMAND_STATUS 동작을 실행하고,
상기 플랫폼 하드웨어 컴포넌트가 에러를 인젝션할 수 없다는 표시를 수신하는 것에 응답하여 상기 에러 인젝션 동작을 중단하는
시스템.
5. The method according to any one of claims 1 to 4,
The operating system (OS)
Executes a GET_COMMAND_STATUS operation to determine the state of the error injection operation,
Stopping the error injection operation in response to receiving an indication that the platform hardware component can not inject an error
system.
제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 운영 시스템(OS)은 또한
TRIGGER_ERROR 동작 테이블에 대한 물리적 포인터를 획득하기 위해 GET_TRIGGER_ERROR_ACTION_TABLE 연산을 실행하고,
상기 TRIGGER_ERROR 동작 테이블에 액세스하고,
상기 TRIGGER_ERROR 동작 테이블에 특정된 하나 이상의 동작을 실행하는
시스템.
5. The method according to any one of claims 1 to 4,
The operating system (OS)
TRIGGER_ERROR Executes the GET_TRIGGER_ERROR_ACTION_TABLE operation to obtain the physical pointer to the action table,
Accesses the TRIGGER_ERROR action table,
Executing one or more operations specified in the TRIGGER_ERROR action table
system.
제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 제 1 에러 유형을 선택하는 것에 응답하여 상기 인젝션의 목표(target)를 선택하는
시스템.
5. The method according to any one of claims 1 to 4,
The operating system (OS) also selects a target of the injection in response to selecting the first error type
system.
제 9 항에 있어서,
상기 운영 시스템(OS)은 또한 메모리 범위, PCIe(Peripheral Component Interconnect Express) 세그먼트, 디바이스, 함수 또는 프로세서 중에서 상기 인젝션의 목표를 선택하는
시스템.
10. The method of claim 9,
The operating system (OS) may also be configured to select a target of the injection from a memory range, Peripheral Component Interconnect Express (PCIe) segment, device,
system.
제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 에러 인젝션 동작이 완료됨을 상기 플랫폼 하드웨어 컴포넌트에 통지하기 위해 END_OPERATION을 실행하는
시스템.
5. The method according to any one of claims 1 to 4,
The operating system (OS) also executes END_OPERATION to notify the platform hardware component that the error injection operation is complete
system.
프로세서와,
운영 시스템(OS)과 통신하는 플랫폼 컴포넌트를 포함하는 장치로서,
상기 플랫폼 컴포넌트는
상기 운영 시스템(OS)으로부터 상기 플랫폼 컴포넌트의 에러 인젝션 케이퍼빌리티를 요청하는 GET_ERROR_TYPE 동작을 수신하고,
DWORD 응답을 상기 운영 시스템(OS)에 전송 - 상기 DWORD 응답은 (i) 상기 플랫폼 컴포넌트에 의해 지원되는 복수의 표준 에러 유형 및 (ii) 상기 플랫폼 컴포넌트에 의해 지원되는 벤더 정의 에러 유형을 식별하는 비트 맵을 포함하고, 상기 운영 시스템(OS)은 상기 복수의 표준 에러 유형과 상기 벤더 정의 에러 유형 중에서 인젝션을 위한 제 1 에러 유형을 선택함 - 하고,
상기 플랫폼 컴포넌트로 하여금 상기 제 1 에러 유형을 사용하여 에러 인젝션 동작을 시작하도록 명령하는 EXECUTE_OPERATION 동작을 상기 운영 시스템(OS)으로부터 수신하는
장치.
A processor,
An apparatus comprising a platform component in communication with an operating system (OS)
The platform component
Receiving a GET_ERROR_TYPE operation requesting error injection capability of the platform component from the operating system (OS)
(I) a plurality of standard error types supported by the platform component; and (ii) a bit identifying a vendor defined error type supported by the platform component, wherein the DWORD response comprises: Wherein the operating system (OS) selects a first error type for the injection from among the plurality of standard error types and the vendor defined error types,
Receiving an EXECUTE_OPERATION operation from the operating system (OS) instructing the platform component to initiate an error injection operation using the first error type
Device.
제 12 항에 있어서,
상기 플랫폼 컴포넌트는 또한 추상화된 비지 비트를 제거함으로써 상기 에러 인젝션 동작이 완료됨을 표시하는
장치.
13. The method of claim 12,
The platform component also indicates that the error injection operation is complete by removing abstracted busy bits
Device.
제 12 항 또는 제 13 항에 있어서,
상기 플랫폼 컴포넌트는 또한 상기 에러 인젝션 동작의 상태를 요청하는 GET_COMMAND_STATUS를 상기 운영 시스템(OS)으로부터 수신하는
장치.
The method according to claim 12 or 13,
The platform component also receives GET_COMMAND_STATUS requesting the status of the error injection operation from the operating system (OS)
Device.
제 12 항 또는 제 13 항에 있어서,
상기 플랫폼 컴포넌트는 또한 상기 플랫폼 컴포넌트가 에러를 인젝션하는 것이 불가능함에 응답하여, 상기 플랫폼 컴포넌트가 에러를 인젝션하는 것이 불가능함을 표시하는 상태 보고(status report)를 상기 운영 시스템(OS)에 전송하는
장치.
The method according to claim 12 or 13,
The platform component also sends a status report to the operating system (OS) indicating that the platform component is unable to inject an error in response to the platform component being unable to inject an error
Device.
메모리와,
운영 시스템(OS)을 실행하는 프로세서를 포함하는 장치로서,
상기 운영 시스템(OS)은
플랫폼 컴포넌트의 에러 인젝션 케이퍼빌리티를 결정하는 GET_ERROR_TYPE 동작을 실행하고,
상기 플랫폼 컴포넌트로부터 DWORD 응답을 수신 - 상기 DWORD 응답의 제 1 비트는 상기 플랫폼 컴포넌트가 (i) 복수의 표준 에러 유형 및 (ii) 벤더 정의 에러 유형을 지원함을 표시하도록 설정됨 - 하고,
상기 복수의 표준 에러 유형과 상기 벤더 정의 에러 유형 중에서 인젝션을 위한 제 1 에러 유형을 선택하고,
상기 플랫폼 컴포넌트로 하여금 상기 제 1 에러 유형을 사용하여 에러 인젝션 동작을 시작하도록 명령하는 EXECUTE_OPERATION 동작을 실행하는
장치.
A memory,
An apparatus comprising a processor executing an operating system (OS), the apparatus comprising:
The operating system (OS)
Executes the GET_ERROR_TYPE operation to determine the error injection capability of the platform component,
Receiving a DWORD response from the platform component, the first bit of the DWORD response being configured to indicate that the platform component supports (i) a plurality of standard error types and (ii) a vendor defined error type,
Select a first error type for injection from among the plurality of standard error types and the vendor defined error types,
Execute an EXECUTE_OPERATION operation that instructs the platform component to initiate an error injection operation using the first error type
Device.
제 16 항에 있어서,
상기 운영 시스템(OS)은 또한
상기 운영 시스템(OS)에 의해 선택된 상기 제 1 에러 유형이 상기 벤더 정의 에러 유형인 것에 응답하여, 벤더 ID, 디바이스 ID 및 Rev ID를 판독하기 위해 벤더 에러 유형 확장 구조에 액세스하고,
상기 벤더 ID, 상기 디바이스 ID 및 상기 Rev ID를 판독하는 것에 응답하여, 상기 플랫폼 컴포넌트와 상기 벤더 정의 에러 유형을 식별하는
장치.
17. The method of claim 16,
The operating system (OS)
In response to the first error type selected by the operating system (OS) being the vendor defined error type, accessing a vendor error type extension structure to read a vendor ID, a device ID, and a Rev ID,
In response to reading the vendor ID, the device ID and the Rev ID, identifying the platform component and the vendor defined error type
Device.
제 16 항 또는 제 17 항에 있어서,
상기 운영 시스템(OS)은 또한 상기 EXECUTE_OPERATION 동작을 실행하는 것에 응답하여, 상기 플랫폼 컴포넌트가 플래그 내의 비지 비트를 제거함으로써 상기 에러 인젝션 동작이 완료됨을 표시할 때까지 CHECK_BUSY_STATUS 동작을 계속 실행하는
장치.
18. The method according to claim 16 or 17,
The operating system (OS) also continues executing the CHECK_BUSY_STATUS operation in response to executing the EXECUTE_OPERATION operation, until the platform component indicates that the error injection operation is complete by removing busy bits in the flag
Device.
제 16 항 또는 제 17 항에 있어서,
상기 운영 시스템(OS)은 또한
상기 에러 인젝션 동작의 상태를 결정하기 위해 GET_COMMAND_STATUS 동작을 실행하고,
상기 플랫폼 컴포넌트가 에러를 인젝션할 수 없다는 표시를 수신하는 것에 응답하여 상기 에러 인젝션 동작을 중단하는
장치.
18. The method according to claim 16 or 17,
The operating system (OS)
Executes a GET_COMMAND_STATUS operation to determine the state of the error injection operation,
In response to receiving an indication that the platform component can not inject an error, the error injection operation is aborted
Device.
제 16 항 또는 제 17 항에 있어서,
상기 운영 시스템(OS)은 또한
TRIGGER_ERROR 동작 테이블에 대한 물리적 포인터를 획득하기 위해 GET_TRIGGER_ERROR_ACTION_TABLE 연산을 실행하고,
상기 TRIGGER_ERROR 동작 테이블에 액세스하고,
상기 TRIGGER_ERROR 동작 테이블에 특정된 하나 이상의 동작을 실행하는
장치.
18. The method according to claim 16 or 17,
The operating system (OS)
TRIGGER_ERROR Executes the GET_TRIGGER_ERROR_ACTION_TABLE operation to obtain the physical pointer to the action table,
Accesses the TRIGGER_ERROR action table,
Executing one or more operations specified in the TRIGGER_ERROR action table
Device.
명령어를 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체로서,
상기 명령어는 디바이스에 포함된 프로세서에 의해 실행될 경우 상기 프로세서로 하여금,
플랫폼 하드웨어 컴포넌트의 에러 인젝션 케이퍼빌리티를 결정하는 GET_ERROR_TYPE 동작을 실행하고,
(i)복수의 표준 에러 유형 및 (ii) 벤더 정의 에러 유형을 상기 플랫폼 하드웨어 컴포넌트가 지원한다는 것을 표시하는 DWORD 응답을 수신하고,
상기 복수의 표준 에러 유형 및 상기 벤더 정의 에러 유형 중에서 인젝션을 위한 제 1 에러 유형을 선택하고,
상기 플랫폼 하드웨어 컴포넌트로 하여금 상기 제 1 에러 유형을 사용하여 에러 인젝션 동작을 시작하도록 명령하는 EXECUTE_OPERATION 동작을 실행하도록 하는
하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
One or more non-volatile computer-readable storage media for storing instructions,
Wherein the instructions cause the processor to, when executed by a processor included in the device,
Execute the GET_ERROR_TYPE operation that determines the error injection capability of the platform hardware component,
receive a DWORD response indicating that the platform hardware component supports (i) a plurality of standard error types and (ii) a vendor defined error type,
Select a first error type for injection from among the plurality of standard error types and the vendor defined error types,
Execute an EXECUTE_OPERATION operation that instructs the platform hardware component to initiate an error injection operation using the first error type
At least one non-volatile computer readable storage medium.
제 21 항에 있어서,
상기 명령어는 또한 상기 프로세서로 하여금,
운영 시스템(OS)에 의해 선택된 상기 제 1 에러 유형이 상기 벤더 정의 에러 유형인 것에 응답하여 벤더 에러 유형 확장 구조에 액세스하고,
상기 벤더 에러 유형 확장 구조에 액세스하는 하는 것에 응답하여, (i) 벤더 ID, 디바이스 ID 및 Rev ID를 판독하고, (ii) 상기 플랫폼 하드웨어 컴포넌트를 식별하도록 하는
하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
22. The method of claim 21,
The instructions may also cause the processor to:
Access the vendor error type extension structure in response to the first error type selected by the operating system (OS) being the vendor defined error type,
(I) reading the vendor ID, device ID, and Rev ID, and (ii) identifying the platform hardware component, in response to accessing the vendor error type extension structure,
At least one non-volatile computer readable storage medium.
제 21 항 또는 제 22 항에 있어서,
상기 명령어는 또한 상기 프로세서로 하여금,
TRIGGER_ERROR 동작 테이블에 대한 물리적 포인터를 획득하기 위해 GET_TRIGGER_ERROR_ACTION_TABLE 연산을 실행하고,
상기 TRIGGER_ERROR 동작 테이블에 액세스하고,
상기 TRIGGER_ERROR 동작 테이블에 특정된 하나 이상의 동작을 실행하도록 하는
하나 이상의 비일시적 컴퓨터 판독가능 저장 매체.
23. The method of claim 21 or 22,
The instructions may also cause the processor to:
TRIGGER_ERROR Executes the GET_TRIGGER_ERROR_ACTION_TABLE operation to obtain the physical pointer to the action table,
Accesses the TRIGGER_ERROR action table,
To execute one or more operations specified in the TRIGGER_ERROR operation table
At least one non-volatile computer readable storage medium.
플랫폼 하드웨어 컴포넌트의 에러 인젝션 케이퍼빌리티를 결정하는 GET_ERROR_TYPE 동작을 실행하는 수단과,
(i)복수의 표준 에러 유형 및 (ii) 벤더 정의 에러 유형을 상기 플랫폼 하드웨어 컴포넌트가 지원한다는 것을 표시하는 DWORD 응답을 수신하는 수단과,
상기 복수의 표준 에러 유형 및 상기 벤더 정의 에러 유형 중에서 인젝션을 위한 제 1 에러 유형을 선택하는 수단과,
상기 플랫폼 하드웨어 컴포넌트로 하여금 상기 제 1 에러 유형을 사용하여 에러 인젝션 동작을 시작하도록 명령하는 EXECUTE_OPERATION 동작을 실행하는 수단을 포함하는
장치.
Means for executing a GET_ERROR_TYPE operation determining an error injection capability of a platform hardware component,
means for receiving a DWORD response indicating that the platform hardware component supports (i) a plurality of standard error types and (ii) a vendor defined error type;
Means for selecting a first error type for injection from among the plurality of standard error types and the vendor defined error types,
Means for executing an EXECUTE_OPERATION operation instructing the platform hardware component to initiate an error injection operation using the first error type
Device.
제 24 항에 있어서,
상기 에러 인젝션 동작의 상태를 결정하기 위해 GET_COMMAND_STATUS 동작을 실행하는 수단과,
상기 플랫폼 컴포넌트가 에러를 인젝션할 수 없다는 표시를 수신하는 것에 응답하여 상기 에러 인젝션 동작을 중단하는 수단을 더 포함하는
장치.
25. The method of claim 24,
Means for executing a GET_COMMAND_STATUS operation to determine a state of the error injection operation;
And means for interrupting the error injection operation in response to receiving an indication that the platform component is unable to inject an error
Device.
KR1020177001971A 2011-11-22 2012-11-21 Computing platform with interface based error injection KR101763102B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161563030P 2011-11-22 2011-11-22
US61/563,030 2011-11-22
PCT/US2012/066402 WO2013078418A1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147013589A Division KR101723009B1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177016297A Division KR101810822B1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection

Publications (2)

Publication Number Publication Date
KR20170013402A true KR20170013402A (en) 2017-02-06
KR101763102B1 KR101763102B1 (en) 2017-08-04

Family

ID=48470182

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020177001971A KR101763102B1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection
KR1020177016297A KR101810822B1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection
KR1020147013589A KR101723009B1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020177016297A KR101810822B1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection
KR1020147013589A KR101723009B1 (en) 2011-11-22 2012-11-21 Computing platform with interface based error injection

Country Status (10)

Country Link
US (14) US9442739B2 (en)
JP (1) JP6155507B2 (en)
KR (3) KR101763102B1 (en)
CN (1) CN103946765B (en)
BR (1) BR112014012398B1 (en)
DE (1) DE112011105867B4 (en)
GB (1) GB2510091B (en)
IN (1) IN2014CN02785A (en)
TW (3) TWI502505B (en)
WO (7) WO2013077890A1 (en)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442739B2 (en) 2011-11-22 2016-09-13 Intel Corporation Collaborative processor and system performance and power management
US10095295B2 (en) * 2011-12-14 2018-10-09 Advanced Micro Devices, Inc. Method and apparatus for power management of a graphics processing core in a virtual environment
US9026817B2 (en) 2012-06-29 2015-05-05 Intel Corporation Joint optimization of processor frequencies and system sleep states
US9959225B2 (en) * 2013-01-31 2018-05-01 Mitsubishi Electric Corporation Computer apparatus and control method of computer apparatus
US9696785B2 (en) 2013-12-28 2017-07-04 Intel Corporation Electronic device having a controller to enter a low power mode
US10514942B2 (en) 2014-02-24 2019-12-24 Red Hat Israel, Ltd. Using linker scripts for loading system configuration tables
US9571465B1 (en) 2014-09-18 2017-02-14 Amazon Technologies, Inc. Security verification by message interception and modification
KR102261815B1 (en) * 2014-10-30 2021-06-07 삼성전자주식회사 Data storage device for reducing firmware update time, and data processing system including the same
US9720827B2 (en) * 2014-11-14 2017-08-01 Intel Corporation Providing multiple memory modes for a processor including internal memory
US10126950B2 (en) * 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory
US11003565B2 (en) 2015-04-21 2021-05-11 Hewlett-Packard Development Company, L.P. Performance change predictions
CN106874176B (en) * 2015-12-14 2021-04-27 创新先进技术有限公司 Intelligent test method and device
US10180793B2 (en) 2017-01-31 2019-01-15 Hewlett Packard Enterprise Development Lp Performance attributes for memory
US11182315B2 (en) 2017-02-10 2021-11-23 Intel Corporation Apparatuses, methods, and systems for hardware control of processor performance levels
US10958729B2 (en) * 2017-05-18 2021-03-23 Intel Corporation Non-volatile memory express over fabric (NVMeOF) using volume management device
US10627880B2 (en) * 2017-05-19 2020-04-21 Dell Products L.P. Systems and methods for forward compatibility of custom thermal settings
KR102388803B1 (en) 2017-11-02 2022-04-20 삼성전자주식회사 Semiconductor memory devices, memory systems including the same and methods of operating semiconductor memory devices
US10620969B2 (en) 2018-03-27 2020-04-14 Intel Corporation System, apparatus and method for providing hardware feedback information in a processor
TWI685751B (en) * 2018-04-10 2020-02-21 神雲科技股份有限公司 Error reporting function control method for server device
CN108959049B (en) * 2018-06-27 2021-12-17 郑州云海信息技术有限公司 Method and device for testing robustness and stability of SMM (SMM management system) and storage medium
US10795746B2 (en) 2018-12-13 2020-10-06 Micron Technology, Inc. Automated power down based on state of firmware
EP3999938A4 (en) * 2019-07-15 2023-08-02 INTEL Corporation Dynamic energy performance preference based on workloads using an adaptive algorithm
US11157329B2 (en) 2019-07-26 2021-10-26 Intel Corporation Technology for managing per-core performance states
US11625084B2 (en) * 2019-08-15 2023-04-11 Intel Corporation Method of optimizing device power and efficiency based on host-controlled hints prior to low-power entry for blocks and components on a PCI express device
TWI726405B (en) * 2019-09-04 2021-05-01 神雲科技股份有限公司 Boot procedure debugging system, host and method thereof
US11507157B2 (en) * 2020-04-30 2022-11-22 Dell Products L.P. Hot-inserted devices
KR20210149445A (en) 2020-06-02 2021-12-09 삼성전자주식회사 Memory module and method for operating memory module
US11106529B1 (en) * 2020-07-22 2021-08-31 Dell Products L.P. Post package repair failure memory location reporting system
US11829612B2 (en) 2020-08-20 2023-11-28 Micron Technology, Inc. Security techniques for low power mode of memory device
CN112256327A (en) * 2020-11-01 2021-01-22 屈军军 Miniature electronic mechanical device
US11934251B2 (en) * 2021-03-31 2024-03-19 Advanced Micro Devices, Inc. Data fabric clock switching
EP4359885A1 (en) 2021-06-22 2024-05-01 Microsoft Technology Licensing, LLC Power budget management using quality of service (qos)
WO2022271606A1 (en) * 2021-06-22 2022-12-29 Microsoft Technology Licensing, Llc Power budget management using quality of service (qos)
JP2023136634A (en) * 2022-03-17 2023-09-29 キヤノン株式会社 Printing management system and method
US11726855B1 (en) * 2022-04-26 2023-08-15 Dell Products L.P. Controlling access to an error record serialization table of an information handlng system
CN115543055B (en) * 2022-11-28 2023-03-14 苏州浪潮智能科技有限公司 Power management control right transfer method, device, equipment and storage medium

Family Cites Families (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646232A (en) * 1984-01-03 1987-02-24 Texas Instruments Incorporated Microprocessor with integrated CPU, RAM, timer, bus arbiter data for communication system
US4641308A (en) * 1984-01-03 1987-02-03 Texas Instruments Incorporated Method of internal self-test of microprocessor using microcode
TW282525B (en) 1994-06-17 1996-08-01 Intel Corp
US6052793A (en) * 1998-06-10 2000-04-18 Dell Usa, L.P. Wakeup event restoration after power loss
US6167511A (en) * 1998-06-15 2000-12-26 Phoenix Technologies Ltd. Method to reflect BIOS set up changes into ACPI machine language
EP1172732A4 (en) * 1999-02-24 2009-08-19 Hitachi Ltd Computer system and method of handling trouble of computer system
US7197548B1 (en) * 1999-07-20 2007-03-27 Broadcom Corporation Method and apparatus for verifying connectivity among nodes in a communications network
US6732280B1 (en) * 1999-07-26 2004-05-04 Hewlett-Packard Development Company, L.P. Computer system performing machine specific tasks before going to a low power state
EP1085396A1 (en) * 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
US6530031B1 (en) * 1999-11-08 2003-03-04 International Business Machines Corporation Method and apparatus for timing duration of initialization tasks during system initialization
US7016060B1 (en) 1999-12-08 2006-03-21 International Business Machines Corporation Method, system, and program for reconfiguring logical printers in a network printing system
US6499102B1 (en) * 1999-12-29 2002-12-24 Intel Corporation Method of dynamically changing the lowest sleeping state in ACPI
US6931553B1 (en) * 2000-04-20 2005-08-16 Microsoft Corporation Preventing general purpose event interrupt storms in a computer system
US6826701B1 (en) * 2000-04-20 2004-11-30 Microsoft Corporation Re-running general purpose event control methods in a computer system
US7085944B1 (en) 2000-09-30 2006-08-01 Intel Corporation Power management by transmitting single multiplexed signal to multiple system components to change settings of internal performance registers in response to change in power source
US6704877B2 (en) 2000-12-29 2004-03-09 Intel Corporation Dynamically changing the performance of devices in a computer platform
US7017060B2 (en) * 2001-03-19 2006-03-21 Intel Corporation Power management system that changes processor level if processor utilization crosses threshold over a period that is different for switching up or down
US7089430B2 (en) * 2001-12-21 2006-08-08 Intel Corporation Managing multiple processor performance states
US20030188146A1 (en) * 2002-03-28 2003-10-02 Hale Robert P. Method of ordered execution of firmware modules in a pre-memory execution environment
US6848057B2 (en) * 2002-05-28 2005-01-25 Nvidia Corporation Method and apparatus for providing a decoupled power management state
US20040024867A1 (en) * 2002-06-28 2004-02-05 Openwave Systems Inc. Method and apparatus for determination of device capabilities on a network
US6990576B2 (en) * 2002-08-07 2006-01-24 Hewlett-Packard Development Company, L.P. System and method for using a firmware interface table to dynamically load an ACPI SSDT
US7698583B2 (en) * 2002-10-03 2010-04-13 Via Technologies, Inc. Microprocessor capable of dynamically reducing its power consumption in response to varying operating temperature
US7131015B2 (en) 2002-11-12 2006-10-31 Arm Limited Performance level selection in a data processing system using a plurality of performance request calculating algorithms
US7219241B2 (en) 2002-11-30 2007-05-15 Intel Corporation Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode
US7007160B1 (en) * 2002-12-03 2006-02-28 Hewlett-Packard Development Company, L.P. System and method for loading an advanced configuration and power interface (ACPI) original equipment manufacturer (OEM) description table
US20040155714A1 (en) * 2003-01-15 2004-08-12 Kazuhiko Nishikawa Oscillation circuit
US7827283B2 (en) * 2003-02-19 2010-11-02 International Business Machines Corporation System for managing and controlling storage access requirements
US7502803B2 (en) 2003-05-28 2009-03-10 Hewlett-Packard Development Company, L.P. System and method for generating ACPI machine language tables
US7051215B2 (en) * 2003-06-13 2006-05-23 Intel Corporation Power management for clustered computing platforms
US7752470B2 (en) * 2003-12-03 2010-07-06 International Business Machines Corporation Method and system for power management including device controller-based device use evaluation and power-state control
US20050192788A1 (en) * 2004-02-27 2005-09-01 Hobson Louis B. Simulating processor performance states
JP4144880B2 (en) * 2004-04-09 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション Platform configuration measurement device, program and method, platform configuration authentication device, program and method, platform configuration certification device, program and method, and platform configuration disclosure device, program and method
US7360103B2 (en) * 2004-05-21 2008-04-15 Intel Corporation P-state feedback to operating system with hardware coordination
US20050283599A1 (en) * 2004-06-22 2005-12-22 Zimmerman Toby S Exposing BIOS information to an ACPI aware operating system
US7243222B2 (en) * 2004-06-24 2007-07-10 Intel Corporation Storing data related to system initialization in memory while determining and storing data if an exception has taken place during initialization
EP1770920A4 (en) * 2004-07-16 2011-10-12 Brother Ind Ltd Connection mode control device, connection mode control method, and connection mode control program
US7386688B2 (en) 2004-07-29 2008-06-10 Hewlett-Packard Development Company, L.P. Communication among partitioned devices
US7594128B2 (en) * 2004-08-04 2009-09-22 Hewlett-Packard Development Company, L.P. Systems and methods to determine processor utilization
US7565562B2 (en) 2004-09-03 2009-07-21 Intel Corporation Context based power management
US7242227B2 (en) * 2004-11-01 2007-07-10 Texas Instruments Incorporated Common mode stabilization circuit for differential bus networks
US7610497B2 (en) * 2005-02-01 2009-10-27 Via Technologies, Inc. Power management system with a bridge logic having analyzers for monitoring data quantity to modify operating clock and voltage of the processor and main memory
US7487222B2 (en) * 2005-03-29 2009-02-03 International Business Machines Corporation System management architecture for multi-node computer system
JP4838240B2 (en) * 2005-04-27 2011-12-14 パナソニック株式会社 Power control apparatus in information processing apparatus
US7454639B2 (en) * 2005-06-30 2008-11-18 Intel Corporation Various apparatuses and methods for reduced power states in system memory
US20070043965A1 (en) * 2005-08-22 2007-02-22 Intel Corporation Dynamic memory sizing for power reduction
US7562234B2 (en) * 2005-08-25 2009-07-14 Apple Inc. Methods and apparatuses for dynamic power control
US7516336B2 (en) * 2005-09-29 2009-04-07 Intel Corporation System and method for power reduction by sequestering at least one device or partition in a platform from operating system access
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US7516317B2 (en) * 2005-12-29 2009-04-07 Microsoft Corporation Measuring an operating system's boot duration
US7421601B2 (en) * 2006-02-17 2008-09-02 International Business Machines Corporation Method and system for controlling power in a chip through a power-performance monitor and control unit
US20070260761A1 (en) * 2006-03-28 2007-11-08 Inventec Corporation Inter-module data communication control method and system for ACPI and BIOS
JP2007272573A (en) * 2006-03-31 2007-10-18 Hitachi Ltd Power consumption reduction memory management method and memory management program
US7752468B2 (en) 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US20080010516A1 (en) * 2006-06-14 2008-01-10 Inventec Corporation Method and apparatus for indicating the actual progress of a booting procedure
US20080010527A1 (en) * 2006-06-26 2008-01-10 Inventec Corporation Method of solving BIST failure of CPU by means of BIOS and maximizing system performance
US7610482B1 (en) * 2006-06-28 2009-10-27 Qlogic, Corporation Method and system for managing boot trace information in host bus adapters
US7747881B2 (en) 2006-08-14 2010-06-29 Globalfoundries Inc. System and method for limiting processor performance
US20080046546A1 (en) 2006-08-18 2008-02-21 Parmar Pankaj N EFI based mechanism to export platform management capabilities to the OS
KR100770703B1 (en) * 2006-08-30 2007-10-29 삼성전자주식회사 Memory system with power throttling scheme based on power parameter of memory device
JP2008109243A (en) * 2006-10-24 2008-05-08 Renesas Technology Corp Semiconductor integrated circuit for rf communication
US20080147357A1 (en) * 2006-12-15 2008-06-19 Iintrinisyc Software International System and method of assessing performance of a processor
US7953996B2 (en) * 2006-12-18 2011-05-31 Hewlett-Packard Development Company, L.P. ACPI to firmware interface
KR100890152B1 (en) * 2006-12-22 2009-03-20 매그나칩 반도체 유한회사 Small Size, High Gain, and Low Noise Pixel for CMOS Image Sensors
US8302087B2 (en) * 2007-01-05 2012-10-30 International Business Machines Corporation Quality assurance in software systems through autonomic reliability, availability and serviceability code generation
JP4912174B2 (en) * 2007-02-07 2012-04-11 株式会社日立製作所 Storage system and storage management method
US8448024B2 (en) * 2007-05-16 2013-05-21 Intel Corporation Firmware assisted error handling scheme
TW200917006A (en) 2007-10-01 2009-04-16 Inventec Corp Apparatus and method for power management
US8250354B2 (en) * 2007-11-29 2012-08-21 GlobalFoundries, Inc. Method and apparatus for making a processor sideband interface adhere to secure mode restrictions
US20090150696A1 (en) * 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
US8151081B2 (en) * 2007-12-20 2012-04-03 Intel Corporation Method, system and apparatus for memory address mapping for sub-socket partitioning
US7831816B2 (en) * 2008-05-30 2010-11-09 Globalfoundries Inc. Non-destructive sideband reading of processor state information
US7912082B2 (en) * 2008-06-09 2011-03-22 Oracle America, Inc. Shared virtual network interface
US7984286B2 (en) * 2008-06-25 2011-07-19 Intel Corporation Apparatus and method for secure boot environment
US20090327609A1 (en) 2008-06-30 2009-12-31 Bruce Fleming Performance based cache management
US20100153523A1 (en) * 2008-12-16 2010-06-17 Microsoft Corporation Scalable interconnection of data center servers using two ports
US8458498B2 (en) 2008-12-23 2013-06-04 Intel Corporation Method and apparatus of power management of processor
US8601296B2 (en) 2008-12-31 2013-12-03 Intel Corporation Downstream device service latency reporting for power management
US8799691B2 (en) * 2009-01-07 2014-08-05 Hewlett-Packard Development Company, L.P. Hierarchical power management
WO2010084617A1 (en) * 2009-01-26 2010-07-29 富士通株式会社 Information processor provided with configuration change function, system configuration change method, and system configuration change program
JP5118074B2 (en) 2009-01-27 2013-01-16 日本電信電話株式会社 Optical fiber
US8131991B2 (en) * 2009-02-10 2012-03-06 Sony Corporation System and method for configuring plural software profiles
US8135970B2 (en) * 2009-03-06 2012-03-13 Via Technologies, Inc. Microprocessor that performs adaptive power throttling
US20100235834A1 (en) * 2009-03-16 2010-09-16 Faasse Scott P Providing a management communication channel between a software layer and platform layer for hardware management control
US8171319B2 (en) * 2009-04-16 2012-05-01 International Business Machines Corporation Managing processor power-performance states
US9244797B2 (en) * 2009-05-29 2016-01-26 Dell Products L.P. Methods for managing performance states in an information handling system
US8464038B2 (en) * 2009-10-13 2013-06-11 Google Inc. Computing device with developer mode
US8490179B2 (en) * 2009-10-27 2013-07-16 Hewlett-Packard Development Company, L.P. Computing platform
US20110131427A1 (en) 2009-12-02 2011-06-02 Jorgenson Joel A Power management states
US20110145555A1 (en) * 2009-12-15 2011-06-16 International Business Machines Corporation Controlling Power Management Policies on a Per Partition Basis in a Virtualized Environment
US8555091B2 (en) * 2009-12-23 2013-10-08 Intel Corporation Dynamic power state determination of a graphics processing unit
JP5544878B2 (en) * 2009-12-25 2014-07-09 富士通株式会社 Failure control device, processor core, arithmetic processing device, information processing device, and simulated failure control method
US9310838B2 (en) * 2010-03-19 2016-04-12 I/O Interconnect, Ltd. Power management method for switching power mode of a computer system based on detection of a human interface device
KR20110114910A (en) * 2010-04-14 2011-10-20 삼성전자주식회사 Integarated circuit and power consumption measuring method thereof
US8522066B2 (en) * 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system
US8648690B2 (en) * 2010-07-22 2014-02-11 Oracle International Corporation System and method for monitoring computer servers and network appliances
JP5598144B2 (en) 2010-08-04 2014-10-01 ソニー株式会社 Information processing apparatus, power supply control method, and program
US8495395B2 (en) * 2010-09-14 2013-07-23 Advanced Micro Devices Mechanism for controlling power consumption in a processing node
US8812825B2 (en) * 2011-01-10 2014-08-19 Dell Products L.P. Methods and systems for managing performance and power utilization of a processor employing a fully multithreaded load threshold
US9454197B2 (en) * 2011-01-28 2016-09-27 Renesas Electronics Corporation Controller and semiconductor system
US8659341B2 (en) * 2011-05-02 2014-02-25 Analog Devices, Inc. System and method for level-shifting voltage signals using a dynamic level-shifting architecture
WO2012154611A1 (en) * 2011-05-06 2012-11-15 Marvell World Trade Ltd. Memory on-demand, managing power in memory
US8966305B2 (en) * 2011-06-30 2015-02-24 Advanced Micro Devices, Inc. Managing processor-state transitions
US9026815B2 (en) * 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US9031847B2 (en) * 2011-11-15 2015-05-12 Microsoft Technology Licensing, Llc Voice-controlled camera operations
US9442739B2 (en) 2011-11-22 2016-09-13 Intel Corporation Collaborative processor and system performance and power management
US8645797B2 (en) * 2011-12-12 2014-02-04 Intel Corporation Injecting a data error into a writeback path to memory
DE112012006377B4 (en) * 2012-05-17 2022-02-24 Intel Corporation Control energy consumption and performance of computer systems

Also Published As

Publication number Publication date
US10108433B2 (en) 2018-10-23
GB2510091B (en) 2020-05-20
WO2013078418A1 (en) 2013-05-30
US20130275796A1 (en) 2013-10-17
US10078522B2 (en) 2018-09-18
TWI518586B (en) 2016-01-21
JP6155507B2 (en) 2017-07-05
US20180181407A1 (en) 2018-06-28
BR112014012398B1 (en) 2021-06-15
WO2013078387A1 (en) 2013-05-30
US20190065211A1 (en) 2019-02-28
KR20170072953A (en) 2017-06-27
US20140059368A1 (en) 2014-02-27
US10275260B2 (en) 2019-04-30
WO2013078397A1 (en) 2013-05-30
US9454380B2 (en) 2016-09-27
KR101810822B1 (en) 2017-12-19
WO2013077890A1 (en) 2013-05-30
US20130275737A1 (en) 2013-10-17
KR101763102B1 (en) 2017-08-04
CN103946765A (en) 2014-07-23
US9594570B2 (en) 2017-03-14
US11301257B2 (en) 2022-04-12
TWI467363B (en) 2015-01-01
US20130151569A1 (en) 2013-06-13
US9454379B2 (en) 2016-09-27
US10514931B2 (en) 2019-12-24
US10007528B2 (en) 2018-06-26
TW201337537A (en) 2013-09-16
TWI502505B (en) 2015-10-01
TW201335841A (en) 2013-09-01
CN103946765B (en) 2017-11-17
GB201408838D0 (en) 2014-07-02
DE112011105867T5 (en) 2014-11-06
US9898306B2 (en) 2018-02-20
IN2014CN02785A (en) 2015-07-03
KR101723009B1 (en) 2017-04-04
JP2015505388A (en) 2015-02-19
US20170147484A1 (en) 2017-05-25
WO2013077891A1 (en) 2013-05-30
US20140258701A1 (en) 2014-09-11
US20130283032A1 (en) 2013-10-24
TW201339967A (en) 2013-10-01
BR112014012398A2 (en) 2017-06-13
US20140053024A1 (en) 2014-02-20
GB2510091A (en) 2014-07-23
US20140059337A1 (en) 2014-02-27
WO2013077889A1 (en) 2013-05-30
DE112011105867B4 (en) 2020-03-19
US11221857B2 (en) 2022-01-11
US20170003724A1 (en) 2017-01-05
US20190317773A1 (en) 2019-10-17
KR20140082832A (en) 2014-07-02
WO2013078363A1 (en) 2013-05-30
US9535711B2 (en) 2017-01-03
US9442739B2 (en) 2016-09-13
US20170147358A1 (en) 2017-05-25
US10732986B2 (en) 2020-08-04

Similar Documents

Publication Publication Date Title
KR101763102B1 (en) Computing platform with interface based error injection
US7146512B2 (en) Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
US9218893B2 (en) Memory testing in a data processing system
US20050015702A1 (en) System and method for testing, simulating, and controlling computer software and hardware
US7454547B1 (en) Data exchange between a runtime environment and a computer firmware in a multi-processor computing system
US20130080754A1 (en) Service Profile Based Peripheral Component Interconnect Device Enumeration And Option ROM Loading
US10402204B1 (en) Multi-platform firmware support
US7698547B1 (en) Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware
US8370618B1 (en) Multiple platform support in computer system firmware
US7484083B1 (en) Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment
US8510543B1 (en) Firmware supporting multiple boot paths
US8078637B1 (en) Memory efficient peim-to-peim interface database
WO2022040911A1 (en) Methods and apparatus to perform pseudo-s3 protocol to update firmware and/or activate new firmware with warm reset
US10372661B1 (en) Firmware debug trace capture using serial peripheral interface
US9208112B1 (en) Permanent allocation of a large host memory
US11372653B1 (en) Runtime access to firmware platform configuration data
US10430201B1 (en) Multi-platform firmware support
CN116737488A (en) Parameter monitoring method and electronic equipment
Meyer Fast and Power-Efficient System Suspend Using Persistent Memory

Legal Events

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