KR101365370B1 - 동적 시스템 재구성 - Google Patents

동적 시스템 재구성 Download PDF

Info

Publication number
KR101365370B1
KR101365370B1 KR1020117031359A KR20117031359A KR101365370B1 KR 101365370 B1 KR101365370 B1 KR 101365370B1 KR 1020117031359 A KR1020117031359 A KR 1020117031359A KR 20117031359 A KR20117031359 A KR 20117031359A KR 101365370 B1 KR101365370 B1 KR 101365370B1
Authority
KR
South Korea
Prior art keywords
reconfiguration
hot
memory
processor
dynamic hardware
Prior art date
Application number
KR1020117031359A
Other languages
English (en)
Other versions
KR20120026576A (ko
Inventor
무루가사미 케이. 나치무투
모한 제이. 쿠마르
충-치 왕
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20120026576A publication Critical patent/KR20120026576A/ko
Application granted granted Critical
Publication of KR101365370B1 publication Critical patent/KR101365370B1/ko

Links

Images

Classifications

    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)

Abstract

일부 실시예들에서, 복수의 프로세서 코어를 포함하는 시스템의 동적 하드웨어 재구성을 수행하는 데 사용될 시스템 재구성 코드 및 데이터가 캐싱되고, 동적 하드웨어 재구성 동안에 임의의 직접 또는 간접 메모리 액세스가 방지된다. 프로세서 코어들 중 하나는 하드웨어를 동적으로 재구성하기 위해 캐싱된 시스템 재구성 코드 및 데이터를 실행한다. 다른 실시예들이 설명되고 청구된다.

Description

동적 시스템 재구성{DYNAMIC SYSTEM RECONFIGURATION}
본 발명은 일반적으로 동적 시스템 재구성에 관한 것이다.
(예를 들어, 128개의 소켓을 갖는) 대형 멀티프로세서(MP) 시스템들을 구축하는 능력을 가진 스케일링 가능한 고속 경로 상호접속(QPI) 서버들의 도입과 더불어, 시스템들의 재구성은 매우 복잡해지고 있다. 메모리 제어기들은 각각의 프로세서 소켓 내에 통합되고 있다. 게다가, (IO 루트 컴플렉스(root complex), IO 장치 등과 같은) 다른 컴포넌트들도 미래에 하나 이상의 프로세서 소켓들 내에 통합될 수 있다. 이것은 어드레스 라우팅에 추가적인 복잡성을 더한다. 예를 들어 프로세서 핫 플러그(hot plug) 및 입출력 허브(IOH) 핫 플러그, 메모리 이전(migration), CPU 이전 등과 같은 신뢰성, 가용성 및 서비스성(RAS) 특징들이 특징 리스트에 추가된다. 이러한 추가적인 복잡성 및 새로운 특징들과 더불어, 하드웨어에서 동적 시스템 재구성 솔루션을 구현하는 것은 개발하고 검증하기에 매우 복잡하고 비용이 많이 든다.
RAS 동작들(특히, 실행 시간에 시스템 구성에 영향을 미치는 동작)은 현재 시스템 관리 인터럽트(SMI)를 이용하여 구현되며, SMI는 모든 프로세서들을 결합하고, (프로세서들, IOH들 등과 같은) QPI 에이전트들의 정지(quiesce)를 수행하고, (QPI 라우트들, 어드레스 디코더들 등과 같은) 시스템 구성을 재프로그래밍한다. 그러나, QPI 상호접속의 링크 특성에도 불구하고, 모든 QPI 에이전트들(프로세서들, IO 허브 등)에 대한 변경들은 데이터 트래픽의 미스라우팅을 방지하기 위해 원자적으로(atomically) 수행되어야 한다. 이것은 이러한 구성이 코히어런트 메모리로부터 스스로 실행되는 SMI 코드에 의해 수행될 때 특별한 난제를 제기하며, 이것은 QPI 라우트 변경들 동안에 허용될 수 없다. SMI 동작은 운영 체제(OS)에 투명하며, 따라서 신뢰성 있는 시스템 동작을 위해서는 SMI 지연을 최소로(통상적으로 수백 마이크로초 정도로) 유지하는 것이 필요하다는 점에도 유의한다.
본 발명은 아래에 주어지는 상세한 설명으로부터 그리고 본 발명의 일부 실시예들의 첨부 도면들로부터 더 충분히 이해될 것이지만, 첨부 도면들은 본 발명을 설명되는 특정 실시예들로 한정하는 것으로 간주되지 않아야 하며, 단지 설명 및 이해를 위한 것일 뿐이다.
도 1은 본 발명의 일부 실시예들에 따른 시스템을 나타낸다.
도 2는 본 발명의 일부 실시예들에 따른 시스템을 나타낸다.
도 3은 본 발명의 일부 실시예들에 따른 시스템을 나타낸다.
도 4는 본 발명의 일부 실시예들에 따른 흐름을 나타낸다.
도 5는 본 발명의 일부 실시예들에 따른 흐름을 나타낸다.
도 6은 본 발명의 일부 실시예들에 따른 흐름을 나타낸다.
도 7은 본 발명의 일부 실시예들에 따른 흐름을 나타낸다.
도 8은 본 발명의 일부 실시예들에 따른 시스템을 나타낸다.
도 9는 본 발명의 일부 실시예들에 따른 시스템을 나타낸다.
도 10은 본 발명의 일부 실시예들에 따른 흐름을 나타낸다.
도 11은 본 발명의 일부 실시예들에 따른 흐름을 나타낸다.
본 발명의 일부 실시예들은 동적 시스템 재구성에 관한 것이다.
도 1은 일부 실시예들에 따른 시스템(100)을 나타낸다. 일부 실시예들에서, 시스템(100)은 예컨대 CPU0(102), CPU1(104), CPU2(106) 및 CPU3(108)을 포함하는 복수의 프로세서 및/또는 중앙 처리 유닛(CPU)을 포함한다. 일부 실시예들에서, 시스템(100)은 예를 들어 메모리(112), 메모리(114), 메모리(116) 및 메모리(118)를 포함하는 복수의 메모리를 더 포함한다. 일부 실시예들에서, 프로세서들(102, 104, 106, 108)의 각각은 메모리 제어기를 구비한다. 일부 실시예들에서, 시스템(100)은 예를 들어 IOH0(122) 및 IOH1(124)을 포함하는 하나 이상의 입출력 허브(IOH)를 더 포함한다. 일부 실시예들에서, IOH1(124)은 PCI 익스프레스 버스(132) 및/또는 PCI 익스프레스 버스(134)에 결합되며, 그리고/또는 IOH0(122)은 PCI 익스프레스 버스(136), PCI 익스프레스 버스(138) 및/또는 입출력 제어기 허브(ICH)(140)에 결합된다. 일부 실시예들에서, 프로세서들(102, 104, 106, 108)과 IOH(122) 및 IOH(124)는 복수의 링크 및/또는 상호접속에 의해 함께 결합된다. 일부 실시예들에서, 프로세서들(102, 104, 106, 108)과 IOH0(122) 및 IOH1(124)를 결합하는 링크들 및/또는 상호접속들은 예를 들어 일부 실시예들에서 고속 경로 상호접속(QPI) 링크들 및/또는 복수의 공통 시스템 인터페이스(CSI) 링크와 같은 복수의 코히어런트 링크이다.
일부 실시예들에서, 시스템(100)은 4 소켓 QPI 기반 시스템이다. 일부 실시예들에서, QPI 컴포넌트들(예를 들어, 프로세서 소켓들 및/또는 I/O 허브들)은 인텔 QPI 링크들을 이용하여 접속되며, 인텔 QPI 포트들을 통해 제어된다. 일부 실시예들에서, QPI 컴포넌트들 사이의 통신은 소스 어드레스 디코더들(SAD) 및 라우터들(RTA)을 이용하여 가능해진다. 소스 어드레스 디코더(SAD)는 대역내 어드레스 액세스를 특정 노드 어드레스로 디코딩한다. QPI 라우터는 QPI 컴포넌트들 내의 트래픽을 다른 QPI 컴포넌트들로 라우팅한다.
일부 실시예들에 따르면, QPI 플랫폼들은 트래픽의 미스라우팅을 방지하기 위해 시스템 내의 모든 소스 어드레스 디코더들 및 라우터들이 동일하게 프로그래밍될 것을 요구한다. 부트 동작 동안, 이러한 프로그래밍은 임의의 제어가 운영 체제(OS)로 넘겨지기 전에 기본 입출력 시스템(BIOS)에서 달성될 수 있다.
일부 실시예들에서는, 시스템이 OS로 부팅된 후에, 신뢰성, 가용성 및 서비스성(RAS) 이벤트들이 시스템 구성을 변경할 수 있다. 예를 들어, RAS 이벤트들은 프로세서 추가, 프로세서 제거, IOH 추가, IOH 제거, 메모리 추가, 메모리 이동, 메모리 이전, 메모리 미러링, 메모리 예비화, 프로세서 핫 플러그, 메모리 핫 플러그, 핫 플러그 소켓, 핫 플러그 IOH(I/O 허브), 도메인 분할 등과 같은 동작들을 포함한다. 이들 및 다른 타입의 RAS 이벤트들은 OS가 계속 실행되는 동안에 QPI 컴포넌트들이 동적으로 프로그래밍될 것을 요구한다. 이들은 OS가 실행되는 동안에 시스템을 동적으로 변경하는 것을 필요로 한다. SAD 및 라우터들이 항상 동일하게 프로그래밍되어야 한다는 요구로 인해, 이러한 RAS 동작들은 QPI 구성에 대한 임의의 갱신이 "원자적으로" 수행될 것을(즉, QPI가 재구성되는 동안에는 어떠한 코히어런트 트래픽도 진행되지 않아야 하는 것을) 요구한다. 게다가, OS는 그러한 RAS 이벤트들 동안 계속 실행되므로, OS 타임아웃을 방지하기 위하여 재구성은 좁은 시간 윈도 내에(예로서, 통상적으로 수백 마이크로초 정도에) 달성되어야 한다.
예를 들어 핫 플러그 소켓, 핫 플러그 프로세서, 핫 플러그 메모리, 핫 플러그 I/O 허브(IOH), 메모리의 핫 플러그, I/O 칩셋의 핫 플러그, I/O 제어기 허브(ICH)의 핫 플러그, 프로세서의 온라인/오프라인, 메모리의 온라인/오프라인, I/O 칩셋의 온라인/오프라인, I/O 제어기 허브(ICH)의 온라인/오프라인, 메모리 이전, 메모리 미러링, 프로세서(및/또는 CPU) 이전, 도메인 분할 등과 같은 고급 RAS 특징들은 고급 미션 크리티컬(mission critical) 멀티프로세서 서버 플랫폼들에 대한 주요 식별자들이다. QPI와 같은 링크에 기초하는 서버 및/또는 멀티프로세서 플랫폼들은 예를 들어 그러한 것들과 같은 고급 RAS 특징들을 제공하도록 설계된다. 전술한 바와 같이, QPI 기반 시스템들에서의 이러한 RAS 흐름들에 대한 일반적인 요구는 모든 QPI 에이전트들 상에서(예를 들어, 모든 프로세서들 및/또는 I/O 허브들 상에서) QPI 구성(예를 들어, QPI 라우팅 변경들, 소스 어드레스 디코더 변경들, 방송 리스트 등)을 원자적으로 갱신하기 위한 필요성이다.
원자적인 것에 더하여, 이러한 변경들은 실행중인 OS에 영향을 미치지 않고 OS에 투명한 방식으로 수행되는 것이 필요하다. 일부 실시예들에 따르면, 시스템 관리 인터럽트(SMI)를 이용하여 라우팅 변경들을 달성하기 위하여 시스템 관리 모드(SMM)가 이용된다. 전통적인 SMI 코드 실행은 시스템 내의 임의의 QPI 소켓 상에 위치할 수 있는 메모리로부터 실행된다. 그러나, QPI 구성 변경 동안 액세스되는 메모리는 패킷들을 잠재적으로 미스라우팅하며, 재구성 동안에 메모리 액세스가 방지되지 않으면 시스템의 보전성을 손상시킨다. 게다가, SMI 지연은 OS 실시간 액세스 예측으로 인해 수백 마이크로초 정도로 제한된다.
일부 실시예들에 따르면, 동적 QPI 시스템 재구성은 원자 방식으로 수행되며(즉, 재구성이 진행되는 동안에는 메모리 액세스와 같은 어떠한 코히어런트 트래픽도 발생하지 않는다), 운영 체제/가상 메모리 관리자(OS/VMM) 실시간 응답 요구들을 충족시킨다.
도 2는 일부 실시예들에 따른 시스템(200)을 나타낸다. 일부 실시예들에서, 시스템(200)은 예를 들어 CPU0(202), CPU1(204), CPU2(206) 및 CPU3(208)을 포함하는 복수의 프로세서 및/또는 중앙 처리 유닛(CPU)을 포함한다. 일부 실시예들에서, 시스템(200)은 예를 들어 메모리(212), 메모리(214), 메모리(216) 및 메모리(218)를 포함하는 복수의 메모리를 더 포함한다. 일부 실시예들에서, 프로세서들(202, 204, 206, 208) 각각은 메모리 제어기를 구비한다. 일부 실시예들에서, 시스템(200)은 예를 들어 IOH0(222) 및 IOH1(224)을 포함하는 하나 이상의 입출력 허브(IOH)를 더 포함한다. 일부 실시예들에서, 프로세서들(202, 204, 206, 208)과 IOH(222) 및 IOH(224)는 복수의 링크 및/또는 상호접속에 의해 함께 결합된다. 일부 실시예들에서, 프로세서들(202, 204, 206, 208)과 IOH0(222) 및 IOH1(224)을 결합하는 링크들 및/또는 상호접속들은 예를 들어 일부 실시예들에서 고속 경로 상호접속(QPI) 링크들 및/또는 복수의 공통 시스템 인터페이스(CSI) 링크와 같은 복수의 코히어런트 링크이다.
도 2의 시스템(200)은, 시스템이 부팅될 때 CPU3(208)(및/또는 도 1의 시스템 내의 CPU3(108))이 존재하지 않고, CPU3(208)이 실행중인 시스템에 바로 추가되는 것이 필요한 것으로 가정한다. 도 2는 시스템 내의 QPI 에이전트들(202, 204, 206, 208, 222, 224) 각각에 대한 포트 정보를 나타낸다. 다른 프로세서들(202, 204, 206)과 IOH들(222, 224) 사이의 링크들(예로서, QPI 링크들)은 초기화되고 동작하는 링크들로서 도시되지만, CPU3(208)과 다른 컴포넌트들 사이의 링크들은 도 2에서 점선들을 이용하여 도시되는데, 이는 이러한 링크들이 아직 초기화되지 않았기 때문이다. CPU3(208)의 핫 추가(hot add)를 처리하기 위해서는, 실행중인 시스템이 추가된 CPU3(208)과 어떻게 접속하는지에 관한 발견이 먼저 수행되는 것이 필요하다. 일부 실시예들에 따르면, CPU3(208) 및 모든 다른 QPI 컴포넌트들(202, 204, 206, 222, 224) 양자 상의 라우터(RTA) 및 소스 어드레스 디코더들(SAD)은 CPU3(208) 및 메모리(218)가 실행중인 시스템에 추가될 수 있도록 구성(또는 재구성)되는 것이 필요하다.
도 3은 일부 실시예들에 따른 시스템(300)을 나타낸다. 일부 실시예들에서, 시스템(300)은 예를 들어 CPU0(302), CPU1(304), CPU2(306) 및 CPU3(308)을 포함하는 복수의 프로세서 및/또는 중앙 처리 유닛(CPU)을 포함한다. 일부 실시예들에서, 시스템(300)은 예를 들어 메모리(312), 메모리(314), 메모리(316) 및 메모리(318)를 포함하는 복수의 메모리를 더 포함한다. 일부 실시예들에서, 프로세서들(302, 304, 306, 308) 각각은 메모리 제어기를 구비한다. 일부 실시예들에서, 시스템(300)은 예를 들어 IOH0(322) 및 IOH1(324)을 포함하는 하나 이상의 입출력 허브(IOH)를 더 포함한다. 일부 실시예들에서, 프로세서들(302, 304, 306, 308)과 IOH(322) 및 IOH(324)는 복수의 링크 및/또는 상호접속에 의해 함께 결합된다. 일부 실시예들에서, 프로세서들(302, 304, 306, 308)과 IOH0(322) 및 IOH1(324)을 결합하는 링크들 및/또는 상호접속들은 예를 들어 일부 실시예들에서 고속 경로 상호접속(QPI) 링크들 및/또는 복수의 공통 시스템 인터페이스(CSI) 링크와 같은 복수의 코히어런트 링크이다.
도 3의 시스템(300)은, 시스템이 부팅될 때 IOH1(324)(및/또는 도 1의 시스템 내의 IOH1(124) 및/또는 도 2의 시스템 내의 IOH1(224))이 존재하지 않고, IOH1(324)이 실행중인 시스템에 바로 추가되는 것이 필요한 것으로 가정한다. 도 3은 시스템 내의 QPI 에이전트들(302, 304, 306, 308, 322, 324) 각각에 대한 포트 정보를 나타낸다. 프로세서들(302, 304, 306, 308)과 다른 IOH0(322) 사이의 링크들(예로서, QPI 링크들)은 초기화되고 동작하는 링크들로서 도시되지만, IOH1(324)과 다른 컴포넌트들 사이의 링크들은 도 3에서 점선들을 이용하여 도시되는데, 이는 이러한 링크들이 아직 초기화되지 않았기 때문이다. IOH1(324)의 핫 추가를 처리하기 위해서는, 실행중인 시스템이 추가된 IOH1(324)과 어떻게 접속하는지에 관한 발견이 먼저 수행되는 것이 필요하다. IOH1(324) 및 모든 다른 QPI 컴포넌트들(302, 304, 306, 308, 322) 양자 상의 라우터(RTA) 및 소스 어드레스 디코더들(SAD)은 IOH1(324)이 실행중인 시스템에 추가될 수 있도록 구성(또는 재구성)되는 것이 필요하다.
일부 실시예들에 따르면, 시스템 재구성 코드 및 데이터가 캐싱되며, 메모리에 대한 어떠한 직접 또는 간접 액세스도 방지된다. 일부 실시예들에서, 시스템 재구성은 캐시로부터 실행되는 동안에 수행되므로, 임의의 QPI 링크 라우트 또는 소스 어드레스 디코더 변경들은 코드 실행에 영향을 미치지 않을 것이다.
일부 실시예들에 따르면, 재구성 시간 윈도 동안에 하나의 프로세서 코어만이 실행되는 것이 허가되며, 모든 다른 코어들은 어떠한 외부 액세스도 수행하지 못한다. 일부 실시예들에서, 재구성 데이터는 SMI 지연을 줄이기 위하여 정지-정지 해제(Quiesce-Unquiesce) 윈도 밖에서 계산된다. 일부 실시예들에 따르면, QPI 플랫폼의 동적 재구성은 QPI 정지 동작을 이용하는 실행 시간 펌웨어 흐름을 이용하여 달성된다.
일부 실시예들에서, 정지 코드는 메모리로부터 정지 코드를 판독함으로써 캐싱된다. 정지 데이터가 캐싱되며, 데이터 판독 및 기입 동작을 수행하여 캐시 라인이 변경된 상태에 있게 함으로써, 메모리에 다시 기입되는 데이터의 어떠한 변경도 방지된다. 시스템 재구성 코드 실행 동안에 메모리 액세스를 방지하기 위하여 프리페치(prefetch)가 불능화된다. 정지 코드 및 데이터 외의 모든 다른 어드레스 영역들을 회피함으로써 메모리로부터의 추론적 로드들(speculative loads)이 행해지지 않는다. 임의의 시스템 재구성 동작을 수행하기 전에 모든 미결 트랜잭션들이 완료되는 것을 보증하기 위해 언코어(uncore)가 플러시(flush)된다. 코어 내에서 실행되는 시스템 재구성 코드 내에서 모든 다른 스레드들이 동기화되어, 이들이 캐시 밖에서 실행되고 있는 것을 보증한다. 모든 대역외(OOB) 디버그 훅들이 시스템 재구성 윈도 동안 중지된다.
일부 실시예들에 따르면, QPI 컴포넌트들은 정지를 제외한 모든 QPI 에이전트들에 의해 정상 트래픽이 중지되는 정지 모드를 지원한다. 일부 실시예들에 따르면, 프로세서의 정지 모델 고유 레지스터(MSR)의 정의가 아래에 설명된다. 이러한 레지스터는 일부 실시예들에 따르면 소프트웨어가 프로세서 MSR을 통해 정지, 정지 해제 및 언코어 펜스(fence) 동작들을 개시하는 데 사용될 수 있다.
비트 디폴트
2 0 언코어 펜스. MSR 기입이 실행된 코어에 의해 발행된 모든 미결 언코어 트랜잭션은 물론, 그러한 트랜잭션들의 임의의 캐시 부작용들을 플러시한다.
1 - 언코어 펜스
0 - 변경 없음
1 0 정지 해제. 시스템의 정지 해제 동작을 개시한다. 방송 리스트 내에 목록화된 모든 QPI 에이전트들이 동작을 재개하는 것이 허가된다.
1 - 정지 상태를 벗어남
0 - 변경 없음
0 0 정지. 시스템의 정지 동작을 개시한다. 방송 리스트 내에 목록화된 QPI 에이전트들이 정지 상태에 들어간다.
1 - 정지 상태에 들어감
0 - 변경 없음
도 4는 일부 실시예들에 따른 흐름(400)을 나타낸다. 일부 실시예들에서, 흐름(400)은 정지 데이터 생성 흐름이다. 먼저, 402에서 RAS 동작이 결정 및/또는 식별된다. 이어서, 필요한 경우에 404에서 새로운 링크들(예로서, QPI 링크들)이 초기화된다. 이어서, 406에서 (예로서, 필요한 경우에 주기적 SMI를 이용하여) 예를 들어 SAD, 링크 라우트(및/또는 QPI 라우트), 방송 리스트 등과 같은 정지 데이터가 계산된다. 408에서 정지 요청 플래그가 설정된다. 이어서, 410에서 정지 SMI#이 생성된다.
일부 실시예들에서는, 재구성 윈도들 동안에 하나의 프로세서 코어(예로서, "군주(Monarch)" 프로세서)만이 실행이 허가되며, 모든 다른 코어들은 어떠한 외부 액세스도 차단된다. 일부 실시예들에서, 재구성 데이터는 SMI 지연을 줄이기 위하여 정지-정지 해제 윈도 밖에서 계산된다.
도 5, 6 및 7은 일부 실시예들에 따른 흐름들(500, 600, 700)을 나타낸다. 일부 실시예들에서, 흐름들(500, 600, 700)은 QPI 플랫폼과 같은 플랫폼의 동적 재구성을 달성하기 위한 흐름을 나타낸다. 일부 실시예들에서, 흐름들(500, 600, 700)은 QPI 정지를 구현하는 실행시간 펌웨어 흐름을 이용한다.
정지, 시스템 재구성 및 정지 해제 동작들을 수행하기 위해 시스템 내의 모든 이용 가능한 코어들 중에서 정지 군주 코어가 선택된다. 정지 코어는 다수의 스레드를 가질 수 있다. 정지 코어 스레드들 각각은 그가 재구성 동작 동안에 어떠한 메모리도 액세스하지 않는 것을 보증하는 것이 필요하다. 이러한 동작은 예를 들어 도 5, 6 및/또는 7에서 군주 AP(애플리케이션 프로세서 - 즉, 비군주 프로세서) 스레드로서 설명된다.
도 5의 502에서, 재구성 동안에 실행이 허가된 하나의 프로세서로서 식별된 군주 QPI 에이전트(예컨대, 군주 프로세서) 상에서 SMI가 실행되고 있는지에 관한 결정이 이루어진다. 502에서 SMI 군주가 아닌 경우, 504에서 정규 SMI AP(애플리케이션 프로세서 - 즉, 비군주 프로세서) 스핀 루프가 수행된다. 502에서 SMI 군주인 경우, 506에서 정지 요청 플래그가 설정되었는지에 관한 결정이 이루어진다. 506에서 정지 요청 플래그가 설정되지 않은 경우, 508에서 정규 SMI 군주 코드가 수행된다. 그러나, 506에서 정지 요청 플래그가 설정된 경우, 510에서 (예로서, 군주 AP 스레드가 활성인 경우) 웨이크-업(wake-up) 군주 AP 스레드가 구현된다. 일부 실시예들에서는, AP 스핀 루프에 들어가기 전에 각각의 스레드가 정지 요청 플래그를 검사하는 경우에는 웨이크 업이 회피될 수 있다.
512에서 정지 군주는 메모리 또는 구성 예비 레지스터들(CSR)에 대한 임의의 외부 에이전트들의 액세스를 불능화한다. RTA 및 SAD는 통상적으로 CSR로서 구현되며, 따라서 재구성 단계 동안의 CSR에 대한 액세스는 잘못된 콘텐츠를 제공할 수도 있다. 이것은 일부 실시예들에서는 구현 고유 MSR을 구성함으로써 또는 예를 들어 기저대역 관리 제어기(BMC), 시스템 서비스 프로세서(SSP) 및/또는 관리 엔진(ME)과 같은 대역외(OOB) 장치들을 요청함으로써 달성된다. 512에서의 메모리 또는 CSR에 대한 외부 에이전트들의 액세스는 일부 실시예들에서 예를 들어 프로세서 디버그 훅들을 불능화함으로써 또는 프로세서 측파대 인터페이스들을 통한 액세스를 불능화함으로써 구현될 수 있다. 514에서 외부 에이전트들의 CSR 액세스가 불능화되었는지에 관한 결정이 행해진다. 514에서 불능화되지 않은 경우, 해당 스레드에서의 흐름은 514에서 외부 에이전트들의 CSR 액세스가 불능화될 때까지 보류된다. 514에서 외부 에이전트들의 CSR 액세스가 불능화된 것으로 결정되면, 516에서 QUIESCE_CTL 레지스터 내의 정지 비트를 설정하고(예로서, QUIESCE_CTL1.Quiesce=1을 설정하고), 일부 실시예들에서는 군주 상태를 "QUIESCE_ON"으로 설정함으로써 정지 동작이 개시된다. 이러한 동작은 모든 QPI 에이전트들이 정지 상태에 들어가고 어떠한 새로운 트랜잭션도 개시하지 않는 것을 보증한다. 군주 AP 스레드에서, 522에서 군주 상태가 "QUIESCE_ON"으로 설정되었다는 결정이 행해질 때까지 흐름이 보류된다. 516으로부터의 흐름은 도 6의 "Mon1"로 이동하고, 522로부터의 흐름은 도 6의 "MAPT1"로 이동한다.
시스템이 정지 상태에 있는 경우, 도 6의 군주 스레드 흐름에 도시된 바와 같이, 군주 스레드는 코드 및 데이터 양자를 캐싱하고, 외부 메모리 액세스 없이 캐시로부터 실행을 개시한다. 602에서, 군주 AP 상태(MonarchAPStatus)가 "재구성 준비가 되었는지(READY FOR RECONFIGURATION)"에 대한 결정이 이루어진다. 이것은 일부 실시예들에서 군주 AP가 존재하는 경우에만 검사된다. 군주 AP 상태가 "재구성 준비가 된" 경우, 604에서 프리페치 불능화 동작이 이루어진다. 일부 실시예들에서, 이것은 604에서 MISC_FEATURE_CONTROL을 저장한 후에 "MFENCE"(메모리 펜스 - 예를 들어, MFENCE 명령어에 이어지는 임의의 로드 또는 저장 명령어가 전역적으로 보이기 전에 프로그램 순서에서 MFENCE 명령어에 선행하는 모든 로드 및 저장 명령어가 전역적으로 보이는 것을 보증하는 직렬화 동작)를 수행하고 그리고/또는 이어서 MISC_FEATURE_CONTROL을 0Fh로 설정함으로써 달성된다. 일부 실시예들에서, 이것은 604에서 프리페치 제어들 MFENCE를 저장하고 프리페치를 불능화함으로써 달성된다. 606에서, 페이지 표들이 정지 코드 및 데이터 영역에 대해 WB(후기입 캐싱 속성) 속성들을 이용하여 그리고 CSR 액세스 영역에 대해 UC(언캐시드 캐싱 속성) 속성들을 이용하여 셋업된다. 페이지 표들은 정지 코드 영역 밖에서 추론적 로드들이 존재하지 않도록 셋업된다. 페이지 표들은 정지 코드 영역만이 UC이도록 셋업된다. 이것은 추론적 부하들이 정지 코드 영역 밖에서 수행되지 않는 것을 간접적으로 보증한다. 608에서, 정지 코드 영역을 판독하여 코드를 캐싱한다. 610에서, 정지 데이터 영역의 판독 및 기입이 수행된다. (도 6에 도시되지 않은) 일부 실시예들에서는, 이어서 캐싱된 코드로의 점프(예로서, 정지 군주 코드로의 점프)가 수행된다. 이 단계에서, 코드는 메모리가 아니라 캐시로부터 실행된다. 614에서, UnCoreFence 비트가 설정된다(예로서, QUIESCE_CTL1.UnCoreFence=1).
정지 군주 코드는 도 6에서 정지 코드 및 데이터를 캐싱하는 데 사용된다. 예컨대, 622에서, 프리페치 불능화 동작이 수행된다. 일부 실시예들에서, 프리페치 제어들 MFENCE가 저장되고, 프리페치가 불능화된다. 일부 실시예들에서, 이것은 622에서 MISC_FEATURE_CONTROL을 저장한 후에 "MFENCE"(메모리 펜스)를 수행하고 그리고/또는 이어서 MISC_FEATURE_CONTROL을 0Fh로 설정함으로써 달성된다. 624에서, 페이지 표들이 정지 코드 영역에 대해 WB 속성들을 이용하여 그리고 CSR 액세스 영역에 대해 UC 속성들을 이용하여 셋업된다. 페이지 표들은 정지 코드 및 데이터 영역 밖에서 추론적 로드들이 존재하지 않도록 셋업된다. 페이지 표들은 정지 코드 및 데이터 영역들만이 UC이도록 셋업된다. 이것은 추론적 부하들이 정지 코드 및 데이터 영역 밖에서 수행되지 않는 것을 간접적으로 보증한다. 626에서, 정지 코드 영역을 판독하여 코드를 캐싱한다. 정지 데이터 영역을 판독하고 기입하여 데이터를 변경된 상태로 캐싱한다. 이것은 시스템 재구성 동안의 임의의 정지 데이터 액세스가 메모리 액세스를 유발하지 않는 것을 보증한다. 628에서, 정지 군주 코드(및/또는 정지 AP 코드)로의 점프가 구현된다. 이 단계에서, 코드는 캐시로부터 실행된다. 630에서, 군주 AP 상태가 "재구성이 준비된" 상태로 설정된다. 614로부터의 흐름은 도 7의 "Mon2"로 이동하고, 630으로부터의 흐름은 도 7의 "MAPT2"로 이동한다. 코어들, 언코어 및 소켓들로부터의 캐시 희생 트래픽을 포함하는 모든 미결 트랜잭션들이 드레인되는 것을 보장하기 위해 언코어 펜스가 수행된다. 이 시점에서, 모든 코드 및 데이터 액세스들은 캐시로부터 이루어지며, 메모리 액세스는 수행되지 않는다.
일부 실시예들에 따르면, 군주 정지는 각각의 소켓 상에서 RTA, SAD 등을 프로그래밍함으로써 시스템을 재구성하기 위한 것이다. 시스템은 정지 해제로 설정되며, 모든 코어들은 이전에 중지된 위치들로부터 계속할 수 있다. 프리페치들 및 외부 에이전트들의 CSR 액세스들이 복원된다. 이것은 예를 들어 도 7에 따라 달성된다. 702에서, (예로서, QPI 라우트들, SAD, 방송 리스트 등을 프로그래밍함으로써) 시스템이 재구성된다. 704에서, 군주 상태가 "재구성 완료(RECONFIGURATION DONE)"으로 설정된다. 706에서, 군주 AP 상태가 "AP 완료(AP_DONE)"인지에 관한 결정이 이루어진다. 일부 실시예들에서, 이것은 군주 AP가 존재하는 경우에만 검사된다. 706에서 군주 AP 상태가 "AP 완료"인 것으로 결정되면, 708에서 프리페치 제어들이 복원된다. 710에서 "QUIESCE_CTL1.UnQuiesce" 비트가 "1"로 설정되고, "QuiesceStatus"가 "QUIESCE_OFF"로 설정된다. 이어서, 712에서 정규 SMI 군주 코드로의 복귀가 수행된다.
722에서, 군주 상태가 "재구성 완료"로 설정되었는지에 관한 결정이 이루어진다. 그러한 경우, 724에서 프리페치 제어들이 복원된다. 726에서 군주 AP 상태가 "AP 완료"로 설정된다. 이어서, 728에서 정규 SMI AP 코드로의 복귀가 수행된다.
QPI, 다수의 프로세서(MP), 다수의 메모리 제어기 및 다수의 칩셋과 같은 코히어런트 링크들을 갖는 시스템들이 설계되고, 점점 더 일반화되고 있다. 프로세서 핫 플러그, 프로세서 이전, 메모리 핫 플러그, 메모리 미러링, 메모리 이전 및 메모리 예비화를 포함하지만 이에 한정되지 않는 고급 RAS 특징들이 서버 마켓 세그먼트들에서 일반화될 것이다. RAS 특징들은 실행 시간 동안 기본 입출력 시스템(BIOS)에 의해 많은 작업이 수행될 것을 요구한다. 일부 실시예들에 따르면, 고가의 하드웨어 훅들을 필요로 하지 않고 시스템 재구성이 구현된다.
고속 경로 상호접속(QPI)(및/또는 CSI) 기반 서버 시스템들은 프로세서 핫 플러그, 메모리 핫 플러그, 메모리 미러링, 메모리 이전, 메모리 예비화 등을 포함하지만 이에 한정되지 않는 고급 RAS 특징들을 도입한다. 이러한 특징들은 운영 체제(OS)가 실행되는 동안에 시스템 구성을 동적으로 변경하는 것을 필요로 한다. 이러한 동작들은 일반적으로 시스템 관리 인터럽트(SMI)를 이용하여 구현되며, SMI는 모든 프로세서들을 결합하고, (프로세서들, IOH들 등과 같은) API 에이전트들의 정지를 수행하고, (QPI 라우트들, 어드레스 디코더들 등과 같은) 시스템 구성을 재프로그래밍한다. 그러나, SMI는 메모리 밖에서 실행되며, 이는 QPI 라우트 변경들 동안에는 허용되지 않는다. 따라서, 일부 실시예들에서는, SMI 핸들러 코드 및 데이터가 캐시에 로딩되고 그로부터 실행된다. 이것은 실행시간 구성 흐름을 캐시 아키텍처에 매우 종속적이게 한다. 게다가, 코드를 캐싱하고, SMI 코드 실행에 의해 QPI 라우트들 및 어드레스 디코더들을 재프로그래밍하는 것은 상당한 양의 시간이 걸릴 것이다. SMI 지연에 대한 OS 제한으로 인해, SMI 정지 및 QPI 프로그래밍 코드는 지연 요구들을 충족시키기 위해 엄격한 타이밍 제한들과 더불어 주의 깊게 작성되어야 한다. 이러한 팩터들은 이전의 정지 흐름을 매우 복잡하게 하고, 코딩 및 검증을 어렵게 한다.
일부 실시예들에 따르면, 쉐도우 레지스터는 하드웨어가 정지 하의 어떠한 BIOS 및/또는 SMI 코드도 실행하지 않고 정지 동작을 수행하고 시스템 구성을 변경할 수 있게 한다. 이것은 시스템 구성에 대한 빠른 변경, 낮은 SMI 지연(또는 SMI 비지연)을 가능하게 하며, 프로세서 캐시 아키텍처에 대한 종속성 및 관련 복잡성을 제거한다.
도 8은 일부 실시예들에 따른 시스템(800)을 나타낸다. 일부 실시예들에서, 시스템(800)은 예를 들어 CPU0(802), CPU1(804), CPU2(806) 및 CPU3(808)을 포함하는 복수의 프로세서 및/또는 중앙 처리 유닛(CPU)을 포함한다. 일부 실시예들에서, 시스템(800)은 예를 들어 메모리(812), 메모리(814), 메모리(816) 및 메모리(818)를 포함하는 복수의 메모리를 더 포함한다. 일부 실시예들에서, 프로세서들(802, 804, 806, 808) 각각은 메모리 제어기를 구비한다. 일부 실시예들에서, 시스템(800)은 예를 들어 IOH0(822) 및 IOH1(824)을 포함하는 하나 이상의 입출력 허브(IOH)를 더 포함한다. 일부 실시예들에서, 프로세서들(802, 804, 806, 808)과 IOH(822) 및 IOH(824)는 복수의 링크 및/또는 상호접속에 의해 함께 결합된다. 일부 실시예들에서, 프로세서들(802, 804, 806, 808)과 IOH0(822) 및 IOH1(824)을 결합하는 링크들 및/또는 상호접속들은 예를 들어 일부 실시예들에서 고속 경로 상호접속(QPI) 링크들 및/또는 복수의 공통 시스템 인터페이스(CSI) 링크와 같은 복수의 코히어런트 링크이다.
도 8의 시스템(800)은, 시스템이 부팅될 때 CPU3(808)(및/또는 도 1의 시스템의 CPU3(108))이 존재하지만, 실행중인 시스템으로부터 바로 제거되어야 하는 것으로 가정한다. 다른 프로세서들(802, 804, 806)과 IOH들(822, 824) 사이의 링크들(예를 들어, 코히어런트 링크들 및/또는 QPI 링크들)은 초기화되고 동작하는 링크들로서 도시되지만, CPU3(808)과 다른 컴포넌트들 사이의 링크들은 도 8에 점선들을 이용하여 도시되는데, 이는 그러한 링크들이 CPU3(808)을 바로 제거한 후에 더 이상의 활성일 필요가 없기 때문이다. CPU3(808)의 핫 제거(hot remove)를 처리하기 위하여, OS는 CPU3(808) 및 CPU3(808)에 결합된 메모리(818)의 사용을 중지하는 것이 필요할 것이다. 시스템이 정지되어야 하고, 모든 소켓들에서의 CPU3(808) 어드레스 라우팅이 제거되어야 하며, CPU3(808)으로의 링크 라우팅(예로서, QPI 라우팅)이 모든 소켓들에서 제거되어야 한다. 이어서, 시스템은 OS를 계속하기 위하여 정지 해제되어야 한다.
도 9는 일부 실시예들에 따른 시스템(900)을 나타낸다. 일부 실시예들에서, 시스템(900)은 예를 들어 CPU0(902), CPU1(904), CPU2(906) 및 CPU3(908)을 포함하는 복수의 프로세서 및/또는 중앙 처리 유닛(CPU)을 포함한다. 일부 실시예들에서, 시스템(900)은 예를 들어 메모리(912), 메모리(914), 메모리(916) 및 메모리(918)를 포함하는 복수의 메모리를 더 포함한다. 일부 실시예들에서, 프로세서들(902, 904, 906, 908) 각각은 메모리 제어기를 구비한다. 일부 실시예들에서, 시스템(900)은 예를 들어 IOH0(922) 및 IOH1(924)을 포함하는 하나 이상의 입출력 허브(IOH)를 더 포함한다. 일부 실시예들에서, 프로세서들(902, 904, 906, 908)과 IOH(922) 및 IOH(924)는 복수의 링크 및/또는 상호접속에 의해 함께 결합된다. 일부 실시예들에서, 프로세서들(902, 904, 906, 908)과 IOH0(922) 및 IOH1(924)을 결합하는 링크들 및/또는 상호접속들은 예를 들어 일부 실시예들에서 고속 경로 상호접속(QPI) 링크들 및/또는 복수의 공통 시스템 인터페이스(CSI) 링크와 같은 복수의 코히어런트 링크이다.
도 9의 시스템(900)은, 시스템이 부팅될 때 IOH1(924)(및/또는 도 1의 시스템의 IOH1(124))이 존재하지만, 실행중인 시스템으로부터 바로 제거되어야 하는 것으로 가정한다. 프로세서들(902, 904, 906, 908)과 다른 IOH0(922) 사이의 링크들(예를 들어, 코히어런트 링크들 및/또는 QPI 링크들)은 초기화되고 동작하는 링크드로서 도시되지만, IOH1(924)과 다른 컴포넌트들 사이의 링크들은 도 9에 점선들을 이용하여 도시되는데, 이는 그러한 링크들이 IOH1(924)을 바로 제거한 후에 더 이상의 활성일 필요가 없기 때문이다. IOH1(924)의 핫 제거를 처리하기 위하여, OS는 IOH1(924)의 사용을 중지하는 것이 필요할 것이다. 시스템이 정지되어야 하고, 모든 소켓들에서의 IOH1(924) 어드레스 라우팅이 제거되어야 하며, IOH1(924)로의 링크 라우팅(예로서, QPI 라우팅)이 모든 소켓들에서 제거되어야 한다. 이어서, 시스템은 OS를 계속하기 위하여 정지 해제되어야 한다.
일부 실시예들에서, 각각의 에이전트(예로서, 각각의 QPI 에이전트)는 링크 라우팅(예를 들어, QPI 라우팅)을 위한 한 세트의 쉐도우 레지스터들, 어드레스 디코더, 방송 리스트, 및 시스템 재구성에 영향을 미치는 임의의 다른 레지스터를 제공한다. 구성 변경을 수행하기 위하여, 일부 실시예들에서, 쉐도우 레지스터들은 소프트웨어에 의해 새로운 구성 레지스터들로 프로그래밍되며, 소프트웨어는 하드웨어 요청을 개시하여 구성 전환을 수행한다. 새로운 구성은 구성 전환이 완료되자마자 효력이 발생한다.
도 10은 일부 실시예들에 따른 흐름(1000)을 나타낸다. 일부 실시예들에서, 흐름(1000)은 구성 변경 소프트웨어 흐름이다. 흐름(1000)은 1002에서 시작된다. 1004에서, 쉐도우 레지스터들이 새로운 세트의 구성 값들로 프로그래밍된다. 1006에서, 구성 변경 후에 제거되지 않는 QPI 에이전트와 같은 에이전트로부터 구성 변경 요청이 개시된다. 구성 변경은 모델 고유 레지스터(MSR) 또는 구성 공간 레지스터(CSR)와 같은 하드웨어 레지스터에 기입함으로써 개시된다. 1008에서, 하드웨어가 구성 변경 동작을 수행한다. 일부 실시예들에서, 하드웨어는 1008에서 예를 들어 도 11에 도시되고 아래에 더 상세히 설명되는 흐름(1100)과 유사하거나 동일한 방식으로 구성 변경 동작을 수행한다. 하드웨어는 정지를 수행하고, (예를 들어, 일부 실시예들에서, 도 11에 더 도시되고 아래에 설명되는 바와 같이) 쉐도우 레지스터들에 기초하여 새로운 구성 레지스터들로 전환한다. 1010에서, 시스템은 이제 새로운 구성을 포함하며, 시스템 동작은 이제 새로운 구성으로 계속된다. 흐름(1000)은 1012에서 종료된다.
도 11은 일부 실시예들에 따른 흐름(1100)을 나타낸다. 일부 실시예들에서, 흐름(1100)은 하드웨어 구성 변경 흐름을 나타낸다. 흐름(1100)은 1102에서 시작된다. 1104에서 각각의 QPI 에이전트(일부 실시예들에서는 다른 타입의 에이전트)를 정지하기 위한 요청이 전송된다. 이것은 직접 메모리 액세스(DMA)를 차단하며, 정지 개시 에이전트가 아닌 임의의 다른 QPI 에이전트로부터의 어떠한 새로운 트랜잭션 생성도 차단한다. 일부 실시예들에서는, 모든 미결 트랜잭션들이 완료되었는지에 대한 폴링이 행해진다. 1106에서, 흐름(1100)은 모든 QPI 에이전트들이 에이전트가 정지 상태에 들어갔고 모든 미결 트랜잭션들이 드레인되었음을 알리는 수신응답을 반환하기를 기다린다. 모든 QPI 에이전트들이 쉐도우 레지스터들로부터 레지스터 세트(및/또는 새로운 구성)를 재프로그래밍하기 위한 (그리고/또는 레지스터 세트를 쉐도우 레지스터들로 전환하기 위한) 요청이 행해진다. 예를 들어, 쉐도우 레지스터 내에 설정된 정보에 기초하여 수신 응답이 반송된다. 일부 실시예들에서, 레지스터 데이터는 스패닝 트리(spanning tree)에 기초하여 누가 응답할지를 포함한다. 일부 실시예들에서 이것이 어떻게 이루어지는지에 대한 추가 정보가 예를 들어 "Method, System, and Apparatus for System Level Initialization"이라는 제목으로 2006년 6월 15일자로 미국 특허 공개 US-2006-0126656-A1로 공개된 미국 특허 출원 제11/011,801호에서 발견될 수 있다.
1108에서, 구성 변경 요청이 방송된다. 1110에서 모든 자식 스패닝 트리들이 완료를 반환하였는지에 대한 결정이 이루어진다. 일부 실시예들에서, 시스템 재구성이 완료되었다는 수신 응답이 이루어진다. 1110에서 모든 자식 스패닝 트리들이 완료를 반환한 경우, 1112에서 정지 해제 요청이 모든 QPI 에이전트(및/또는 새로운 에이전트들)로 전송된다. 1114에서, 모든 에이전트들(및/또는 새로운 에이전트들)이 수신 응답을 반환하였는지에 대한 결정이 이루어진다. 모든 에이전트들(및/또는 새로운 에이전트들)이 1114에서 수신 응답을 반환한 경우, 1116에서 정상 동작이 재개된다. 이것은 DMA의 차단을 해제하며, (예를 들어, 실행 코드로 복귀함으로써) 트랜잭션들이 계속되게 한다.
일부 실시예들에서는, 쉐도우(및/또는 복제) 레지스터들이 새로운 구성 정보를 유지한다. 일부 실시예들에서는 소프트웨어에 의해 구성 변경의 개시가 구현된다. 일부 실시예들에서는, 하드웨어가 시스템 정지를 수행하고, 쉐도우 구성을 현재 구성으로 전환하며, 또한 정지 해제를 수행한 후에 시스템 동작을 계속한다. 일부 실시예들에서, 하드웨어는 구성 레지스터 전환 동작을 개시하기 전에 모든 QPI 에이전트들이 정지 상태에 있는 것을 보증하기 위해 검사를 수행한다. 일부 실시예들에서는, 스패닝 트리를 포함하는 쉐도우 레지스터들을 이용하여 재구성 후에 데이터를 반환한다.
현재의 서버 시스템들은 정지 및 정지 해제를 개시하기 위해 MSR 기반 메커니즘을 구현한다. SMI 코드는 모든 프로세서들을 결합하고 정지를 개시하는 것이 필요하다. SMI는 코드 및 데이터를 캐싱하는 것이 필요하며, 시스템을 변경하기 전에 프리페치 및 추론적 로드들이 방지되는 것을 보증하는 것이 필요하다(프로세서들은 추론적 로드들을 불능화하기 위한 직접 제어를 제공하지 못하며, 따라서 복잡한 캐싱되지 않은 그리고 캐싱된 코드 설정 시퀀스들이 필요하다). 그렇지 않은 경우, 메모리 액세스, 스누프들(snoops), 프리페치들 및 추론적 로드들은 QPI 라우트 변경들 동안에 SMI 코드/데이터 액세스 문제들을 유발하여 시스템 에러를 유발할 것이다. 특징을 형성하는 데 수반되는 SMI 코드 및 다른 설정들의 검증은 매우 복잡하며, SMI 지연이 SMI에 대한 OS 허가 시간 제한들을 초과하게 할 수 있다.
일부 실시예들에서는, SMI 및/또는 정지/정지 해제 시간 윈도 밖에서 계산되고 프로그래밍될 수 있는 쉐도우 레지스터 세트가 사용된다. 게다가, 쉐도우 레지스터 전환은 복잡한 소프트웨어 흐름이 아니라 하드웨어에 의해 수행된다. 이것은 SMI 지연의 감소를 돕는다.
일부 실시예들은 코드 및/또는 데이터 캐싱 거동에 의존하지 않으며, 따라서 아키텍처에 의존하지 않는다.
일부 실시예들에서는, 쉐도우 레지스터 전환이 하드웨어에서 발생하고, QPI 에이전트들 각각이 쉐도우 레지스터 세트를 포함하므로, 스케일링 가능한 솔루션이 제공된다. 기존의 SMI 기반 솔루션들은 SMI 내의 모든 스레드들을 필요로 한다. QPI 에이전트들 및/또는 코어들의 수가 증가함에 따라, 동작을 완료하는 데 더 긴 시간이 걸려, OS SMI 지연 요구가 위반된다. 일부 실시예들에서는, 솔루션이 하나의 세대에서 다른 세대로 더 확장될 수 있으며, 스케일링 가능하다(예로서, 방향 전반에서 스케일링 가능하다).
일부 실시예들에서, (예로서, 시스템 서비스 프로세서, 즉 SSP와 같은) 대역외(OOB) 펌웨어는 느린 측파대 인터페이스를 사용하는 경우에도 OS 지연 한계를 초과하지 않고 시스템 구성을 변경하는 것이 허가된다. SSP는 기존의 솔루션들을 이용할 때 실행시간 시스템 구성을 변경할 수 없다.
(QPI 플랫폼들 상에서의 RAS 특징들의 지원에 중요한) 현재의 QPI 솔루션들은 캐시 아키텍처에 의존하고, 매우 복잡하며, 검증하기 어렵고, 펌웨어 핸들러들은 OS 지연 요구들에 맞추기 위해 수동 조정되는 것이 필요하다. 정지를 실행하고, 직접 접속된 플래시로부터 QPI 라우트들 및 어드레스 디코더들을 재프로그래밍하는 것과 같은 다른 대안들은 매우 느리며, SMI 지연에 대한 OS 요구들을 위반한다. 이러한 문제들은 일부 실시예들에 따라 극복된다. 일부 실시예들에서, 쉐도우 레지스터들의 프로그래밍은 정지 기간 내에 수행되지 않으며, 따라서 정지 동안의 지연은 물론, 정지 및 시스템 구성 변경 흐름을 수행하는 펌웨어의 복잡성을 줄인다. 일부 실시예들에 따르면, 캐시 아키텍처에 대한 의존성들이 제거되고, 복잡한 펌웨어 흐름에 대한 필요가 제거된다.
일부 실시예들에서는, 구성 변경이 하드웨어에 의해 수행되며, 구성 변경 동안에 하드웨어 개입이 필요하지 않다. 이러한 방식으로, 시스템 구성의 변경에 관한 전체 지연이 기존 솔루션들보다 훨씬 적고, 최종 사용자에 대한 실시간 응답이 가능해진다.
본 명세서에 설명되는 바와 같이, 프로세서, 메모리의 핫 플러그, 온라인화/오프라인화 등을 포함하지만 이에 한정되지 않는 고급 RAS 특징들에 대한 지원은 고급 서버 마켓 세그먼트 내의 플랫폼들에 중요하다. 이러한 RAS 흐름들을 구현하기 위해서는 효과적인 QPI 동작이 필요하다. RAS에 대한 현재의 QPI 정지 흐름은 캐시 아키텍처 의존성으로 인해 프로세서 생성에 고유한데, 이는 외부 메모리 액세스/스누프/추론적 로드 등을 생성하지 않고 정지 코드가 캐시로부터 실행되어야 하기 때문이다. 그러한 흐름은 코딩하기가 매우 복잡하고, 검증하기 어려우며, 따라서 QPI에 대한 RAS 지원을 심하게 제한할 수 있다. 일부 실시예들에서는, 프로세서 캐시 아키텍처에 의존하지 않는 더 간단한 정지 솔루션이 이용된다. 게다가, 더 큰 멀티프로세서(MP) 플랫폼들에 대해 양호하게 스케일링되는 QPI 플랫폼들 상에서 고급 RAS 특징들에 대한 지원이 가능하다.
일부 실시예들은 본 명세서에서 시스템 관리 인터럽트(SMI) 기술에 적용 가능한 것으로 설명되었다. 그러나, 다른 구현들은 다른 실행시간 인터페이스들과 관련된다. 예로서, 일부 실시예들에서는 플랫폼 관리 인터럽트(PMI)가 사용된다.
일부 실시예들은 예를 들어 프로세서 코어 및/또는 집적 메모리를 포함하는 소켓으로 본 명세서에서 설명되고 도시되었다. 그러나, 일부 실시예들에서는 추가 컴포넌트들이 소켓 내에 통합된다. 예를 들어, 일부 실시예들에서는 I/O 루트 컴플렉스가 예로서 프로세서 소켓 내에 통합된다. 일부 실시예들에서는 I/O 장치들이 프로세서 소켓 내에 통합된다. 프로세서 소켓 내에 통합되는 추가 컴포넌트들의 추가 실시예들도 실시예들의 현재 및 미래의 구현들에서 명백하다.
일부 실시예들은 본 명세서에서 QPI 기반 시스템들에 적용 가능한 것으로 설명되었지만, 일부 실시예들에 따르면, 이러한 특정 구현들은 필요하지 않을 수 있다. 즉, 본 명세서에서 설명되는 실시예들은 일부 실시예들에서 임의의 코히어런트 링크에 적용 가능하며, QPI로 한정되지 않는다. 일부 실시예들에서는, 논-QPI 기반 시스템들이 구현된다. 일부 실시예들에서는 노드 제어기 기반 시스템들이 구현된다.
일부 실시예들은 특정 구현들을 참조하여 설명되었지만, 일부 실시예들에 따르면 다른 구현들이 가능하다. 게다가, 도면들에 도시되고 그리고/또는 본 명세서에서 설명되는 회로 요소들 또는 다른 특징들의 배열 및/또는 순서는 도시되고 설명되는 특정 방식으로 배열된 필요가 없다. 일부 실시예들에 따르면 많은 다른 배열이 가능하다.
도면에 도시된 각각의 시스템에서, 일부 예들에서의 요소들은 표시되는 요소들이 상이하고 그리고/또는 유사할 수 있다는 것을 암시하기 위해 각각 동일한 참조 번호 또는 상이한 참조 번호를 가질 수 있다. 그러나, 요소는 상이한 구현들을 갖고, 본 명세서에 도시되거나 설명된 시스템들 중 일부 또는 전부에서 동작할 만큼 충분히 유연할 수 있다. 도면들에 도시된 다양한 요소들은 동일하거나 상이할 수 있다. 어느 것이 제1 요소로서 지칭되고, 어느 것이 제2 요소로서 지칭되는지는 임의적이다.
설명 및 청구항들에서는, "결합된" 및 "접속된"이라는 용어들이 이들의 파생어들과 더불어 사용될 수 있다. 이러한 용어들은 서로에 대한 동의어인 것을 의도하지 않는다는 것을 이해해야 한다. 오히려, 특정 실시예들에서, "접속된"은 둘 이상의 요소가 서로 직접 물리적 또는 전기적 접촉하는 것을 지시하는 데 사용될 수 있다. "결합된"은 둘 이상의 요소가 직접 물리적 또는 전기적 접속하는 것을 의미할 수 있다. 그러나, "결합된"은 또한 둘 이상의 요소가 서로 직접 접촉하지 않지만, 여전히 서로 협력하거나 상호작용한다는 것을 의미할 수 있다.
알고리즘은 본 명세서에서 그리고 일반적으로 원하는 결과를 유도하는 단계들 또는 동작들의 일관된 시퀀스인 것으로 간주된다. 이들은 물리량들의 물리적 조작들을 포함한다. 일반적으로, 반드시 그렇지는 않지만, 이러한 양들은 저장, 전송, 결합, 비교, 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 갖는다. 이러한 신호들을 비트들, 값들, 요소들, 심벌들, 문자들, 용어들, 숫자들 등으로 지칭하는 것이 때때로 주로 일반적인 사용의 이유로 편리한 것으로 입증되었다. 그러나, 이들 및 유사한 용어들 모두는 적절한 물리량들과 연관되어야 하며, 그러한 양들에 적용되는 편리한 라벨들일 뿐이라는 것을 이해해야 한다.
일부 실시예들은 하드웨어, 펌웨어 및 소프트웨어 중 하나 또는 조합으로 구현될 수 있다. 일부 실시예들은 본 명세서에서 설명되는 동작들을 수행하기 위해 컴퓨팅 플랫폼에 의해 판독되고 실행될 수 있는 기계 판독 가능 매체 상에 저장된 명령어들로서 구현될 수도 있다. 기계 판독 가능 매체는 기계(예로서, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함할 수 있다. 예컨대, 기계 판독 가능 매체는 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 장치; 전기, 광학, 음향 또는 다른 형태의 전파 신호(예로서, 반송파, 적외선 신호, 디지털 신호, 신호들을 송신 및/또는 수신하는 인터페이스 등) 등을 포함할 수 있다.
실시예는 본 발명의 구현 또는 예이다. 명세서에서 "일 실시예", "하나의 실시예", "일부 실시예들" 또는 "다른 실시예들"에 대한 참조는 그 실시예들과 관련하여 설명되는 특정 특징, 구조 또는 특성이 본 발명의 반드시 모든 실시예는 아니지만 적어도 일부 실시예들에 포함된다는 것을 의미한다. "일 실시예", "하나의 실시예" 또는 "일부 실시예들의 다양한 출현들은 모두가 반드시 동일 실시예들을 지칭하지는 않는다.
여기에 설명되고 도시되는 모든 컴포넌트들, 특징들, 구조들, 특성들 등이 특정 실시예 또는 실시예들에 포함될 필요는 없다. 명세서에서 컴포넌트, 특징, 구조 또는 특성이 예를 들어 포함될 "수 있다", "수도 있다"고 설명되는 경우, 그러한 특정 컴포넌트, 특징, 구조 또는 특성은 포함될 필요가 없다. 명세서 또는 청구항에서 "하나"의 요소를 지칭하는 경우, 이것은 그 요소가 하나만 존재한다는 것을 의미하지 않는다. 명세서 또는 청구항들에서 "추가적인" 요소를 지칭하는 경우, 이것은 추가적인 요소가 둘 이상 존재하는 것을 배제하지 않는다.
본 명세서에서 흐름도들 및/또는 상태도들을 이용하여 실시예들을 설명하였지만, 본 발명은 그러한 도면들로 또는 본 명세서에서의 그에 대응하는 설명들로 한정되지 않는다. 예컨대, 흐름은 각각의 도시된 박스 또는 상태를 통해 또는 본 명세서에 도시되고 설명된 것과 정확히 동일한 순서로 이동할 필요가 없다.
본 발명은 본 명세서에 설명된 특정 상세들로 한정되지 않는다. 사실상, 본 명세서의 이익을 갖는 이 분야의 기술자들은 본 발명의 범위 내에서 전술한 설명 및 도면들로부터의 많은 다른 변형이 이루어질 수 있다는 것을 알 것이다. 따라서, 본 발명의 범위를 정하는 것은 임의의 보정들을 포함하는 아래의 청구항들이다.

Claims (33)

  1. 복수의 프로세서 코어를 포함하는 시스템의 동적 하드웨어 재구성을 수행하는 데 사용될 시스템 재구성 코드 및 데이터를 캐싱하는 단계;
    상기 동적 하드웨어 재구성 동안에 어떠한 직접 또는 간접 메모리 액세스들도 방지하는 단계;
    상기 캐싱된 시스템 재구성 코드 및 데이터를 실행하는 상기 프로세서 코어들 또는 스레드들 중 하나에 의해 상기 동적 하드웨어 재구성을 구현하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복수의 프로세서 코어 중 하나의 프로세서 코어만이 상기 동적 하드웨어 재구성 동안에 실행되도록 허가하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 허가된 하나의 프로세서 코어가 아닌 다른 모든 상기 복수의 프로세서 코어를 어떠한 외부(outbound) 메모리 액세스들로부터도 차단하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 동적 하드웨어 재구성 동안에 메모리 액세스들을 방지하기 위해 프리페치(prefetch)를 불능화하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서,
    추론적 메모리 로드들(speculative memory loads)을 방지하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 동적 하드웨어 재구성을 수행하기 전에 모든 미결 트랜잭션들이 완료되는 것을 보증하기 위하여 상기 복수의 프로세서 코어 중 하나 이상을 플러싱(flushing)하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 동적 하드웨어 재구성 동안에 어떠한 대역외 디버그 훅들(hooks)도 방지하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 동적 하드웨어 재구성을 수행하기 위해 상기 복수의 프로세서 코어 중 하나의 프로세서 코어를 선택하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 동적 하드웨어 재구성은 핫 추가(hot add), 핫 제거(hot remove), 핫 플러그(hot plug), 핫 스왑(hot swap), 핫 프로세서 추가, 핫 프로세서 제거, 핫 메모리 추가, 핫 메모리 제거, 핫 칩셋 추가, 핫 칩셋 제거, 핫 입출력 허브 추가, 핫 입출력 허브 제거, 메모리 이전(memory migration), 메모리 미러링, 실행시간 링크 재구성, 실행시간 에러 삽입 및/또는 프로세서 이전 중 하나 이상을 포함하는 방법.
  10. 제1항에 있어서,
    상기 동적 하드웨어 재구성은 신뢰성, 가용성 및 서비스성 특징들을 포함하는 방법.
  11. 제1항에 있어서,
    상기 동적 하드웨어 재구성은 운영 체제에 투명한 방식으로 수행되는 방법.
  12. 제1항에 있어서,
    상기 동적 하드웨어 재구성은 상기 시스템 내의 하나 이상의 하드웨어 장치들의 원자 갱신(atomic updating)인 방법.
  13. 제1항에 있어서,
    상기 동적 하드웨어 재구성은 정지(quiesce) 동작을 포함하는 방법.
  14. 제1항에 있어서,
    쉐도우 레지스터들을 새로운 세트의 구성 값들로 프로그래밍하는 단계를 더 포함하는 방법.
  15. 제1항에 있어서,
    하드웨어 레지스터에 기입함으로써 구성 변경을 개시하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 하드웨어 레지스터는 모델 고유 레지스터 또는 구성 공간 레지스터인 방법.
  17. 제1항에 있어서,
    하드웨어 레지스터 내의 값에 응답하여 구성 변경을 수행하는 단계를 더 포함하는 방법.
  18. 동적 하드웨어 재구성을 수행하는 데 사용될 시스템 재구성 코드 및 데이터의 캐싱을 저장하기 위한 캐시; 및
    복수의 프로세서 코어
    를 포함하고,
    상기 프로세서 코어들 중 하나는 상기 동적 하드웨어 재구성을 수행하도록 상기 캐싱된 시스템 재구성 코드 및 데이터를 실행하고, 상기 동적 하드웨어 재구성 동안에는 상기 복수의 프로세서 코어에 의한 직접 또는 간접 메모리 액세스가 방지되는 장치.
  19. 제18항에 있어서,
    상기 복수의 프로세서 코어 중 하나의 프로세서 코어만이 상기 동적 하드웨어 재구성 동안에 실행되도록 허가되는 장치.
  20. 제19항에 있어서,
    상기 허가된 하나의 프로세서 코어가 아닌 다른 모든 상기 복수의 프로세서 코어가 어떠한 외부 메모리 액세스들로부터도 차단되는 장치.
  21. 제18항에 있어서,
    상기 동적 하드웨어 재구성 동안에 메모리 액세스들을 방지하기 위해 프리페치가 불능화되는 장치.
  22. 제18항에 있어서,
    추론적 메모리 로드들이 방지되는 장치.
  23. 제18항에 있어서,
    상기 동적 하드웨어 재구성을 수행하기 전에 모든 미결 트랜잭션들이 완료되는 것을 보증하기 위해 상기 복수의 프로세서 코어 중 하나 이상이 플러싱되는 장치.
  24. 제18항에 있어서,
    상기 동적 하드웨어 재구성 동안에 어떠한 대역외 디버그 훅들도 방지되는 장치.
  25. 제18항에 있어서,
    상기 동적 하드웨어 재구성은 핫 추가, 핫 제거, 핫 플러그, 핫 스왑, 핫 프로세서 추가, 핫 프로세서 제거, 핫 메모리 추가, 핫 메모리 제거, 핫 칩셋 추가, 핫 칩셋 제거, 핫 입출력 허브 추가, 핫 입출력 허브 제거, 메모리 이전, 메모리 미러링, 실행시간 링크 재구성, 실행시간 에러 삽입 및/또는 프로세서 이전 중 하나 이상을 포함하는 장치.
  26. 제18항에 있어서,
    상기 동적 하드웨어 재구성은 신뢰성, 가용성 및 서비스성 특징들을 포함하는 장치.
  27. 제18항에 있어서,
    상기 동적 하드웨어 재구성은 운영 체제에 투명한 방식으로 수행되는 장치.
  28. 제18항에 있어서,
    상기 동적 하드웨어 재구성은 시스템 내의 하나 이상의 하드웨어 장치들의 원자 갱신인 장치.
  29. 제18항에 있어서,
    상기 동적 하드웨어 재구성은 정지 동작을 포함하는 장치.
  30. 제18항에 있어서,
    새로운 세트의 구성 값들로 프로그래밍된 쉐도우 레지스터들을 더 포함하는 장치.
  31. 제18항에 있어서,
    상기 복수의 프로세서 코어 중 적어도 하나는 하드웨어 레지스터에 기입함으로써 구성 변경을 개시하는 장치.
  32. 제31항에 있어서,
    상기 하드웨어 레지스터는 모델 고유 레지스터 또는 구성 공간 레지스터인 장치.
  33. 제18항에 있어서,
    값을 저장하는 하드웨어 레지스터를 더 포함하고, 상기 복수의 프로세서 코어 중 상기 하나의 프로세서 코어는 상기 하드웨어 레지스터에 저장된 값에 응답하여 구성 변경을 수행하는 장치.
KR1020117031359A 2009-12-31 2010-12-10 동적 시스템 재구성 KR101365370B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/655,586 2009-12-31
US12/655,586 US20110161592A1 (en) 2009-12-31 2009-12-31 Dynamic system reconfiguration
PCT/US2010/059815 WO2011081840A2 (en) 2009-12-31 2010-12-10 Dynamic system reconfiguration

Publications (2)

Publication Number Publication Date
KR20120026576A KR20120026576A (ko) 2012-03-19
KR101365370B1 true KR101365370B1 (ko) 2014-02-24

Family

ID=44188870

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117031359A KR101365370B1 (ko) 2009-12-31 2010-12-10 동적 시스템 재구성

Country Status (6)

Country Link
US (1) US20110161592A1 (ko)
EP (1) EP2519892A4 (ko)
JP (1) JP5392404B2 (ko)
KR (1) KR101365370B1 (ko)
CN (1) CN102473169B (ko)
WO (1) WO2011081840A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179311A1 (en) * 2009-12-31 2011-07-21 Nachimuthu Murugasamy K Injecting error and/or migrating memory in a computing system
WO2012050590A1 (en) * 2010-10-16 2012-04-19 Hewlett-Packard Development Company, L.P. Device hardware agent
US20120155273A1 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Split traffic routing in a processor
CN103890733B (zh) 2011-09-29 2018-05-15 英特尔公司 用于将错误注入存储器的方法和装置
TWI454905B (zh) * 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
DE112011106032B4 (de) 2011-12-22 2022-06-15 Intel Corporation Energieeinsparung durch Speicherkanal-Abschaltung
CN104115125B (zh) 2011-12-29 2017-12-01 英特尔公司 安全的错误处理
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
KR101733903B1 (ko) * 2013-03-07 2017-05-08 인텔 코포레이션 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(ras) 흐름들을 지원하기 위한 메커니즘
CN103488436B (zh) * 2013-09-25 2017-04-26 华为技术有限公司 内存扩展系统及方法
WO2015061731A1 (en) * 2013-10-27 2015-04-30 Advanced Micro Devices, Inc. Input/output memory map unit and northbridge
US9569267B2 (en) * 2015-03-16 2017-02-14 Intel Corporation Hardware-based inter-device resource sharing
US9811491B2 (en) 2015-04-07 2017-11-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Minimizing thermal impacts of local-access PCI devices
CN106708551B (zh) * 2015-11-17 2020-01-17 华为技术有限公司 一种热添加中央处理器cpu的配置方法及系统
CN106844258B (zh) * 2015-12-03 2019-09-20 华为技术有限公司 热添加CPU使能x2APIC的方法和服务器系统
EP3575977A1 (en) * 2015-12-29 2019-12-04 Huawei Technologies Co., Ltd. Cpu and multi-cpu system management method
US10430580B2 (en) * 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
CN106055436A (zh) * 2016-05-19 2016-10-26 浪潮电子信息产业股份有限公司 一种测试QPI data lane Degrade功能的方法
WO2020000354A1 (en) * 2018-06-29 2020-01-02 Intel Corporation Cpu hot-swapping
US10572430B2 (en) * 2018-10-11 2020-02-25 Intel Corporation Methods and apparatus for programming an integrated circuit using a configuration memory module

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133710A1 (en) 2003-01-06 2004-07-08 Lsi Logic Corporation Dynamic configuration of a time division multiplexing port and associated direct memory access controller
US20060184480A1 (en) 2004-12-13 2006-08-17 Mani Ayyar Method, system, and apparatus for dynamic reconfiguration of resources
US20080307082A1 (en) 2007-06-05 2008-12-11 Xiaohua Cai Dynamically discovering a system topology
US20090006829A1 (en) 2007-06-28 2009-01-01 William Cai Method and apparatus for changing a configuration of a computing system

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US955010A (en) * 1909-01-11 1910-04-12 Monarch Typewriter Co Type-writing machine.
UST955010I4 (en) * 1975-03-12 1977-02-01 International Business Machines Corporation Hardware/software monitoring system
US5493668A (en) * 1990-12-14 1996-02-20 International Business Machines Corporation Multiple processor system having software for selecting shared cache entries of an associated castout class for transfer to a DASD with one I/O operation
US5604863A (en) * 1993-11-01 1997-02-18 International Business Machines Corporation Method for coordinating executing programs in a data processing system
US6304984B1 (en) * 1998-09-29 2001-10-16 International Business Machines Corporation Method and system for injecting errors to a device within a computer system
JP2000259586A (ja) * 1999-03-08 2000-09-22 Hitachi Ltd マルチプロセッサシステムの構成制御方法
US6725317B1 (en) * 2000-04-29 2004-04-20 Hewlett-Packard Development Company, L.P. System and method for managing a computer system having a plurality of partitions
US6629315B1 (en) * 2000-08-10 2003-09-30 International Business Machines Corporation Method, computer program product, and system for dynamically refreshing software modules within an actively running computer system
US6775728B2 (en) * 2001-11-15 2004-08-10 Intel Corporation Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US7254676B2 (en) * 2002-11-15 2007-08-07 Intel Corporation Processor cache memory as RAM for execution of boot code
JP3986950B2 (ja) * 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US6990545B2 (en) * 2003-04-28 2006-01-24 International Business Machines Corporation Non-disruptive, dynamic hot-plug and hot-remove of server nodes in an SMP
US20050114687A1 (en) * 2003-11-21 2005-05-26 Zimmer Vincent J. Methods and apparatus to provide protection for firmware resources
JP4320247B2 (ja) * 2003-12-24 2009-08-26 株式会社日立製作所 構成情報設定方法および装置
US7302539B2 (en) * 2005-04-20 2007-11-27 Hewlett-Packard Development Company, L.P. Migrating data in a storage system
US7386662B1 (en) * 2005-06-20 2008-06-10 Symantec Operating Corporation Coordination of caching and I/O management in a multi-layer virtualized storage environment
US7818736B2 (en) * 2005-09-14 2010-10-19 International Business Machines Corporation Dynamic update mechanisms in operating systems
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
US7533249B2 (en) * 2006-10-24 2009-05-12 Panasonic Corporation Reconfigurable integrated circuit, circuit reconfiguration method and circuit reconfiguration apparatus
US7640453B2 (en) * 2006-12-29 2009-12-29 Intel Corporation Methods and apparatus to change a configuration of a processor system
US7900029B2 (en) * 2007-06-26 2011-03-01 Jason Liu Method and apparatus to simplify configuration calculation and management of a processor system
JP2011503710A (ja) * 2007-11-09 2011-01-27 プルラリティー リミテッド しっかりと連結されたマルチプロセッサのための共有メモリ・システム
US7921286B2 (en) * 2007-11-14 2011-04-05 Microsoft Corporation Computer initialization for secure kernel
US7925857B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation Method for increasing cache directory associativity classes via efficient tag bit reclaimation
US7987336B2 (en) * 2008-05-14 2011-07-26 International Business Machines Corporation Reducing power-on time by simulating operating system memory hot add
US20100281222A1 (en) * 2009-04-29 2010-11-04 Faraday Technology Corp. Cache system and controlling method thereof
US20110179311A1 (en) * 2009-12-31 2011-07-21 Nachimuthu Murugasamy K Injecting error and/or migrating memory in a computing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133710A1 (en) 2003-01-06 2004-07-08 Lsi Logic Corporation Dynamic configuration of a time division multiplexing port and associated direct memory access controller
US20060184480A1 (en) 2004-12-13 2006-08-17 Mani Ayyar Method, system, and apparatus for dynamic reconfiguration of resources
US20080307082A1 (en) 2007-06-05 2008-12-11 Xiaohua Cai Dynamically discovering a system topology
US20090006829A1 (en) 2007-06-28 2009-01-01 William Cai Method and apparatus for changing a configuration of a computing system

Also Published As

Publication number Publication date
KR20120026576A (ko) 2012-03-19
JP2012530327A (ja) 2012-11-29
US20110161592A1 (en) 2011-06-30
EP2519892A2 (en) 2012-11-07
WO2011081840A3 (en) 2011-11-17
WO2011081840A2 (en) 2011-07-07
EP2519892A4 (en) 2017-08-16
CN102473169A (zh) 2012-05-23
JP5392404B2 (ja) 2014-01-22
CN102473169B (zh) 2014-12-03

Similar Documents

Publication Publication Date Title
KR101365370B1 (ko) 동적 시스템 재구성
US20110179311A1 (en) Injecting error and/or migrating memory in a computing system
US7254676B2 (en) Processor cache memory as RAM for execution of boot code
US20180143923A1 (en) Providing State Storage in a Processor for System Management Mode
JP5771327B2 (ja) プロセッサの非コア回路の消費電力の低減
US7779244B2 (en) Multi-socket boot
US20090144524A1 (en) Method and System for Handling Transaction Buffer Overflow In A Multiprocessor System
US7761696B1 (en) Quiescing and de-quiescing point-to-point links
US9690719B2 (en) Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof
US11893379B2 (en) Interface and warm reset path for memory device firmware upgrades
US11972243B2 (en) Memory device firmware update and activation without memory access quiescence
BR112016022282B1 (pt) Equipamento, método e suporte físico para execução de segmentos múltiplos em computador
US8898653B2 (en) Non-disruptive code update of a single processor in a multi-processor computing system
US20080147975A1 (en) Frozen ring cache
JP2023020861A (ja) ファームウェアの更新
US20200081735A1 (en) Efficient virtual machine memory monitoring with hyper-threading
US11656796B2 (en) Adaptive memory consistency in disaggregated datacenters
US20090077322A1 (en) System and Method for Getllar Hit Cache Line Data Forward Via Data-Only Transfer Protocol Through BEB Bus
JPS62130430A (ja) I/oエミユレ−タ−

Legal Events

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

Payment date: 20170201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 7