KR100633827B1 - 멀티 노드 컴퓨터 시스템의 목록화를 위한 방법 및 장치 - Google Patents
멀티 노드 컴퓨터 시스템의 목록화를 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR100633827B1 KR100633827B1 KR1020047007458A KR20047007458A KR100633827B1 KR 100633827 B1 KR100633827 B1 KR 100633827B1 KR 1020047007458 A KR1020047007458 A KR 1020047007458A KR 20047007458 A KR20047007458 A KR 20047007458A KR 100633827 B1 KR100633827 B1 KR 100633827B1
- Authority
- KR
- South Korea
- Prior art keywords
- local
- node
- processor
- local node
- elements
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
멀티 노드 컴퓨터 시스템의 목록화를 위한 방법 및 장치가 개시되어 있다. 로컬 부트스트랩 프로세서는 로컬 노드 프로세서들의 그룹으로부터 로컬 부트 플래그 레지스터를 사용하여 선택된다. 로컬 부트스트랩 프로세서는 로컬 노드 소자들의 목록화를 담당한다. 글로벌 부트스트랩 프로세서는 글로벌 부트 플래그 레지스터를 사용하여 선택되고 시스템의 컴포넌트들의 목록화를 담당한다. 서버 관리 디바이스는 목록화 진행을 모니터한다.
멀티 노드, 목록화, 로컬 부트스트랩 프로세서, 글로벌 부트스트랩 프로세서
Description
본 발명은 복합 컴퓨터 시스템을 초기화하는 분야에 관한 것이다. 특히, 복합 멀티 노드 컴퓨터 시스템을 효과적으로 목록화(enumerate)하는데 사용되는 방법 및 장치에 관한 것이다.
신뢰성있는 HA(High Availability) 시스템들은 서비스 혼란을 최소화하고, 최대 가동 시간을 달성하고, 계획하지 않은 정전 가능성을 감소시키도록 고안된다. HA 시스템들은 군용 애플리케이션에 대한 서비스 뿐만 아니라, 비상 호출 센터 및 증권 거래와 같은 중요한 서비스를 용이하게 하도록 사용될 수 있다. HA 시스템들은 일반적으로 신뢰성, 서비스 능력, 및 유용성(RAS : reliability, serviceability, and availability) 조건들을 대해 벤치 마킹된다. RAS 능력들은 일반적으로 HA 시스템이 가동되어 99.999% 이상의 시간 동안 운영되는 것을 요구한다.
복합 컴퓨터 시스템일 수 있는 서버들은 RAS 능력들을 요구하는 중요한 서비스를 제공한다. 최대 가동 시간을 달성하는 서버들은 일반적으로 시스템의 단일 장애점(single point of failure)이 없도록 리던던시를 갖고 설계된다. 특정 시스 템 컴포넌트가 작업 오동작을 수행하면, 또 다른 시스템 컴포넌트가 그 작업을 완료하도록 이용가능하다. 종종 유사한 기능을 갖는 독립적인 시스템 소자들의 그룹은 일반적으로 노드라 칭해진다. 신뢰성은 시스템이 채용하는 리던던시의 양과 직접 상관될 수 있다. 따라서, 특정 기능을 수행하기 위해 더 많은 노드들을 갖는 시스템은 보다 안정적일 수 있다.
복합 시스템이 오동작 또는 계획된 서비스로 인해 정지하는 경우, 시스템 개시 절차가 효율적이라면 중단 시간이 최소화될 수 있고 단기간 내에 시스템의 많은 노드들을 초기화할 수 있다. 부트 프로세스(boot process)라고도 불리우는 개시 절차(start procedure)는 일반적으로 시스템 자원들을 식별하고 그 자원들이 적절하게 기능하고 있는지를 확인하는 목록화 프로세스를 포함한다. 본 발명은 효율적인 목록화 프로세스를 위한 방법 및 장치를 포함한다. 목록화 작업들의 일부를 노드들에 국한되어 존재하는 프로세서들에 위임하고 목록화 작업들의 일부를 병렬로 수행함으로써, 본 발명은 개시 시간의 현저한 감소를 달성한다.
도 1A는 멀티 노드 시스템의 일 실시예를 도시한 도면.
도 1B는 멀티 노드 시스템을 목록화하는 일 실시예에 대한 흐름도.
도 2는 노드의 일 실시예를 도시한 도면.
도 3A는 노드를 부팅하는 일 실시예에 대한 흐름도.
도 3B는 노드 소자 목록화를 위한 일 실시예의 흐름도.
도 4는 멀티 노드 스위치형 시스템에 대한 하나의 상세한 실시예를 도시한 도면.
도 5는 멀티 노드 시스템을 목록화하는 하나의 상세한 실시예에 대한 흐름도.
도 6A는 서버 관리 디바이스를 갖는 멀티 노드 시스템의 일 실시예를 도시한 도면.
도 6B는 서버 관리 디바이스로 노드 목록화를 모니터링하는 일 실시예에 대한 흐름도.
도 7은 HA 멀티 노드 시스템의 일 실시예를 도시한 도면.
도 8은 서버 관리 디바이스로 시스템 목록화를 모니터링하는 일 실시예에 대한 흐름도.
도 1A는 본 발명을 수행하기 위한 멀티 노드 시스템(100)의 일 실시예를 도시한다. 멀티 노드 시스템(100)은 4개의 독립적인 노드들(105)을 포함한다. 실제로는, 노드들(105)의 수는 변할 수 있고 단지 4개로 한정되지 않는다. 일 실시예에서, 소정의 노드(105)는 적어도 하나의 프로세서를 포함할 수 있는 독립적인 시스템 소자들의 그룹일 수 있다. 하나 이상의 노드들(105)은 인터페이스 라인(128)에 의해 스위치(110)와 직접 인터페이스될 수 있다. 스위치(110)는 컴포넌트 고유 식별자들 또는 어드레스들에 기초하여 패킷들을 특정 시스템 컴포넌트들에 송신하도록 프로그램될 수 있다. 시스템 컴포넌트들의 예들로는 개별적인 노드들(105), 스위치(110), 입출력(I/O) 브리지(120), 및 하나 이상의 I/O 디바이스들(125)일 수 있다. 스위치(110)는 노드(105)와 I/O 브리지(120) 사이의 통신 뿐만 아니라 노드간 통신을 용이하게 한다. I/O 브리지(120)는 인터페이스 라인들(128)에 의해 스위치(110)와 I/O 디바이스들(125)에 직접 접속될 수 있다. 인터페이스 라인들(128)은 또한 버스일 수 있다. I/O 브리지(120)는 시스템에 I/O 디바이스들(125)에 대한 액세스를 제공한다. I/O 디바이스들(125)의 예들로는 프린터들, 디스크 드라이브들, 및 LAN 접속들과 같은 다른 시스템들과의 네트워크 접속을 포함한다. 노드들(105)은 인터페이스 라인들(128)을 통해 정보를 I/O 브리지(120)로 라우팅하는 스위치(110)를 통해 정보를 송수신함으로써 I/O 디바이스들(125)과 통신할 수 있다.
일 실시예에서, I/O 브리지(120)는 퍼스널 컴퓨터들에 대한 소정의 인텔(Intel Corporation, Santa Clara, California) 아키텍쳐들에서 사용되는 사우스브리지(southbridge)의 일부이다. 사우스브리지는 USB, 직렬 포트들, 및 오디오를 포함하는 가장 기본적인 형태의 I/O 인터페이싱을 포함한다. 또 다른 실시예에서, I/O 브리지(120)는 PCI(peripheral component interface)를 포함하고 IHA(intel Hub Architecture)의 일부인 I/O 제어기 허브의 일부일 수 있다.
도 1B는 도 1A의 시스템(100)과 같은 멀티 노드 시스템을 목록화하기 위한 예시적인 흐름도(130)를 도시한다. 목록화는 일반적으로 자원들을 식별하고, 자원들을 테스트하여 기능을 확인하고, 자원에 대한 정보로 목록화 리스트를 발생하는 프로세스이다. 시스템이 파워업된 후(블럭 140), 로컬 부트스트랩(bootstrap) 프로세서가 개별적인 노드들에 대해 선택된다(블록 150). 일 실시예에서, 로컬 부트 스트랩 프로세서는 노드에 국한된 자원들을 식별 및 테스트하는 것을 담당한다. 로컬 소자들이라고도 칭해지는 로컬 노드 자원들은 프로세서들 및 메모리 디바이스들을 포함할 수 있다. 노드들에 대해 로컬 부트스트랩 프로세서를 선택한 후(블록 150), 개별적인 노드들은 그들 각각의 로컬 부트스트랩 프로세서들에 의해 목록화된다(블록 160). 노드 목록화에 이어(블록 160), 글로벌 부트스트랩 프로세서가 선택될 수 있다(블록 170). 일 실시예에서, 글로벌 부트스트랩 프로세서는 모든 시스템 컴포넌트들의 목록화를 담당한다. 시스템 컴포넌트들의 예들을 노드들, 스위치들, 및 I/O 브리지들이다. 다음, 글로벌 부트스트랩 프로세서는 전체 시스템의 컴포넌트들을 목록화한다(블록 180). 전체 시스템이 목록화된 후(블록 180), 시스템의 제어는 오퍼레이팅 시스템(OS)으로 전달된다(블록 190). OS는 목록화 리스트 내에 제공된 정보에 기초하여 시스템 자원들에 대한 작업을 효율적으로 관리 및 할당할 수 있다.
일 실시예에서, 흐름(130)은 동일한 시간 프레임 동안 병렬로 노드들을 독립적으로 목록화함으로써(블록 160), 시스템 부트 시간을 현저하게 감소시키는데 사용될 수 있다. N개의 노드들에 대한 병렬 노드 목록화 방식은 단일 노드를 목록화하는데 걸리는 개략적인 시간인, T초 내에 완료될 수 있다. 노드 단위로 노드 목록화를 수행하는 N개의 노드에 대한 직렬 노드 목록화 방식은, 차례로 대략 N*T초 내에 완료될 수 있다. 복합 멀티 노드 시스템들은 다수의 노드들을 가질 수 있으며, 병렬 목록화 방식은 부트 성능을 크게 개선시킨다. 예를 들어, 50개의 노드들로 병렬 노드 목록화 방식을 이용하는 시스템은 직렬 노드 목록화 방식을 이용하는 것에 비해 50배 빠르게 노드 목록화를 완료할 것이다. 또한, 로컬 부트스트랩 프로세서는 개별적인 노드에 대해 선택될 수 있기 때문에, 모든 노드들을 목록화하는 단일 부트스트랩 프로세서를 선택하기 위해 노드들 사이를 중재하는 시간 낭비가 없다.
도 2는 본 발명을 수행하기 위한 멀티 프로세서 노드(200)의 일 실시예를 도시한다. 노드(200)는 4개의 로컬 프로세서들(205)을 갖는다. 노드는 임의 개수의 소자들을 가질 수 있고, 프로세서 노드는 임의 개수의 프로세서들(205)을 가질 수 있다. 멀티 프로세서 노드(200) 내의 프로세서들은 칩간 접속(210)에 의해 결합될 수 있다. 칩간 접속(210)은 프로세서들(205) 사이에 인터페이스를 제공하여 프로세서들이 통신할 수 있게 한다. 일 실시예에서, 프로세서들(205)이 노드(200)의 다른 소자들과 통신하도록 하기 위해 별개의 인터페이스가 사용될 수 있다. 칩간 접속(210)에 결합된 메모리 제어기(230)는 프로세서들(205)이 로컬 노드 메모리와 같은 다른 소자들과 통신할 수 있게 하는 인터페이스의 일례이다.
일 실시예에서, 칩간 접속(210)은 FSB(Front Side Bus)일 수 있고, 메모리 제어기(230)는 노스브리지 제어기일 수 있으며, 이들 모두는 퍼스널 컴퓨터용의 소정의 인텔 아키텍쳐들에서 사용된다. 노스브리지는 FSB를 통해 프로세서들과 통신하며 메모리, AGP(accelerated graphics port) 및 PCI에 대한 제어기로서 작용한다. 또 다른 실시예에서, 칩간 접속(210) 및 메모리 제어기(230)는 IHA의 일부일 수 있다. IHA는 FSB와 그래픽 및 AGP 메모리 제어기 허브를 포함하며, 노스브리지와 유사하지만 보다 높은 버스 속도가 가능하고 PCI 인테페이스를 포함하지 않는 다.
메모리 제어기(230)에 결합된 로컬 노드 메모리의 일 실시예는 DRAM(dynamic random access memory : 240)일 수 있다. 메모리 제어기(230)를 통해 액세스될 수 있는 또 다른 로컬 노드 소자는 플래시 메모리(250) 내에 저장된 BIOS(basic input/output system software)(1)이다. BIOS(1) 플래시 메모리(250)는 노드(200)를 목록화하는 소프트웨어를 포함하고 메모리 제어기(230)에 결합된다. 일 실시예에서, BIOS(1) 플래시 메모리(250)는 전체 시스템을 목록화하는데 필요한 소프트웨어를 포함하지 않을 수 있다. 다른 실시예에서, BIOS(1) 소프트웨어는 ROM 내에 저장될 수 있다. 노드(200)는 노드(200)를 목록화하는데 필요한 모든 소자들을 포함할 수 있다.
노드(200)는 로컬 노드 프로세서들(205)에 의해 액세스될 수 있는 로컬 부트 플래그 레지스터(220)를 포함한다. 일 실시예에서, 로컬 부트 플래그 레지스터(220)는 칩간 접속(210)에 결합될 수 있다. 로컬 부트 플래그 레지스터(220)는 메모리 제어기(230)에 결합될 수 있다. 로컬 부트 플래그 레지스터(220)는 노드(200) 내의 프로스세들(205) 중 어느 것이 노드(200)의 목록화를 담당하는 로컬 부트스트랩 프로세서인지를 결정하는데 사용될 수 있다. 로컬 부트 플래그 레지스터(220)는 디폴트로서 제로 상태에 있고 처음으로 액세스되거나 판독된 후까지는 제로 상태를 유지하는 레지스터이다.
로컬 부트 플래그 레지스터(220)가 한번 판독된 후에, 로컬 부트 플래그 레지스터(220)가 리셋되지 않으면, 로컬 부트 플래그 레지스터는 모든 후속 판독동안 비제로 상태일 수 있다. 따라서, 노드(200)의 다수의 프로세서들(205)로부터 로컬 부트스트랩 프로세서를 선택하는 효율적인 방식은 개별적인 프로세서들(205)로 하여금 로컬 부트 플래그 레지스터(220)를 판독하고 로컬 부트스트랩 프로세서를 로컬 부트 플래그 레지스터(220)로부터 제로 상태를 판독하는 프로세서(205)로서 식별하게 하는 것이다. 이 방식은 로컬 부트스트랩 프로세서가 어느 것인지를 결정하는 노드 프로세서들(205) 사이의 임의의 오랜 중재를 회피한다. 본 기술 분야에 숙련된 자라면, 로컬 부트스트랩 프로세서의 선택을 개시하는 특정 상태 뿐만 아니라, 로컬 부트 플래그 레지스터(230)의 상태를 변경하는데 필요한, 판독 및 기입을 포함하는 액세스의 수가 본 발명의 범위 내에서 많은 조합들을 취할 수 있음을 이해해야 한다.
또 다른 실시예에서, 노드(200)는 로컬 부트 플래그 레지스터(220) 대신에 로컬 카운터를 포함할 수 있다. 프로세서(205)가 카운터를 판독하면, 카운트가 증가한다. 로컬 부트스트랩 프로세서는 로컬 카운터로부터 특정 카운트를 판독하는 프로세서(205)일 수 있다. 로컬 부트스트랩 프로세서로서 하나의 프로세서(205)를 선택하는데 사용될 수 있는, 많은 다비이스들, 특정 논리 레벨들, 및 판독, 기입, 및 인터럽트와 같은 액세스들이 있다는 것은 본 기술 분야에 숙련된 자에게 명백하다.
노드(200)는 대형 시스템의 많은 컴포넌트들중 하나일 수 있다. 링크 인터페이스(260)는 노드(200)와 시스템의 다른 컴포넌트들 사이에 인터페이스를 제공한다. 링크 인터페이스(260)는 노드(200)의 파워업 시 디스에이블될 수 있다. 노드(200)와 시스템의 모든 다른 컴포넌트들 사이의 링크 인터페이스(260)가 파워업시 디스에이블되면, 노드(200)는 링크 인터페이스(260)가 인에이블될 때까지 대형 시스템의 나머지로부터 분리된 채로 유지된다. 링크 인터페이스(260)는 일단 프로세서 노드가 성공적으로 목록화되면 인에이블된다. 따라서, 노드(200)는 적절하게 기능하는 경우에만 다른 컴포넌트들과 인터페이스될 수 있다. 성공적인 목록화에 의해 기초 단계의 기능을 요구하는, 목록화 리스트의 자원들을 식별, 테스트, 및 작성하는 것이 완료될 수 있다.
도 3A는 노드를 부팅하는 일 실시예에 대한 흐름도(300)를 도시한다. 파워업 후(블록 310), 노드에 대한 링크 인터페이스는 디스에이블된다(블록 315). 도시된 실시예에서, 링크 인터페이스는 레지스터를 액세스함으로써 제어될 수 있다. 예를 들어, 파워업 후(블록 310), 링크 인터페이스는 링크 인터페이스 제어 레지스터로의 기록에 의해 디스에이블될 수 있다(블록 315). 또 다른 실시예에서, 링크 인터페이스는 파워업 후에 디폴트로 디스에이블될 수 있으며(블록 310), 링크 인터페이스를 디스에이블하는 처리가 필요하지 않다(블록 315). 노드에 대한 링크 인터페이스가 디스에이블된 후(블록 315), 노드의 개별적인 소자들은 BIST(built-in-self-test)를 실행한다(블럭 320). 일 실시예에서, BIST는 기본적인 기능을 확인할 기초적 테스트 세트이다. 일반적으로, BIST는 노드 소자 자체의 외부에 있는 정보를 액세스할 필요가 없는 독립형 테스트이고, 로컬 노드 소자들 사이의 어떤 상호 작용도 요구하지 않는다. BIST의 실행후(블록 320), 노드 내의 프로세서 소자들은 로컬 부트 플래그 레지스터를 판독한다(블록 325). 일례에서, 로컬 부트 플래그 레지스터는 처음으로 판독될 때까지 제로 상태일 수 있고 처음으로 판독된 후, 리셋되지 않는다면 비제로 상태를 유지한다. 따라서, 로컬 부트 플래그 레지스터로부터 판독한 제1 노드 프로세서는 제로 상태를 판독하고 그것이 로컬 노드 부트스트랩 프로세서가 되어야하는 것을 인지할 수 있다.
프로세서들이 로컬 부트 플래그 레지스터를 판독한 후(블록 325), 프로세서들은 로컬 부트 플래그 레지스터가 제로 상태에 있는지를 판정한다(블록 330). 프로세서가 처음으로 로컬 부트 플래그 레지스터를 판독하고(블록 325), 로컬 부트 플래그 레지스터가 제로 상태라는 것을 판정하면(블록 330), 그 프로세서는 로컬 노드 부트스트랩 프로세서(블록 340)이다. 로컬 부트 플래그 레지스터가 제로 상태가 아니라고 프로세서가 판정하면(블록 330), 프로세서는 비활성화된다(블록 335). 일 실시예에서, 프로세서는 하이버네이션(hibernation) 상태로 들어감으로써 비활성화될 수 있다(블록 335). 하이버네이션 상태는 저전력 상태이다. 또 다른 실시예에서, 프로세서는 대기 루프로 들어감으로써 비활성화될 수 있다(블록 335). 다음, 로컬 노드 부트스트랩 프로세서는 노드를 목록화한다(블록 345). 일 실시예에서, 로컬 노드 부트스트랩 프로세서는 노드 내의 모든 소자들에 대해 모든 종류의 기능 테스트를 수행할 수 있다. 노드를 목록화한 후(블록 345), 로컬 노드 부트스트랩 프로세서는 링크 인터페이스를 인에이블한다(블록 350). 본 기술 분야에 숙련된 자들은 로컬 노드 프로세서들의 그룹으로부터 로컬 부트스트랩 프로세서를 선택하는 방법이 많음을 알 것이다.
도 3B는 노드 소자 목록화에 대한 일 실시예의 흐름도(360)이다. 우선, 로 컬 노드 부트스트랩 프로세서는 노드 소자의 기능을 테스트한다(블록 361). 예를 들어, 모든 종류의 기능 테스트는 메모리 소자 내의 메모리 섹터들을 분석하는 메모리 소자에 대해 수행될 수 있다. 또한, 메모리와 메모리 제어기 및 다른 디바이스들과의 상호 작용도 테스트될 수 있다. 그 후 소자가 충분히 기능하는지의 여부가 결정된다(블록 365). 소자가 충분히 기능하면, 노드 소자는 목록화 리스트 내에 충분히 기능하는 것으로서 작성된다(블록 370).
일 실시예에서, 목록화 리스트는 도 1의 BIOS(1) 플래시 메모리(250)와 같은 플래시 메모리 디바이스 내에 저장될 수 있다. 소자가 충분히 기능하지 않으면, 소자는 로컬 노드 부트스트랩 프로세서에 의해 제거된다(블록 375). 제거는 오동작하는 노드 소자 또는 시스템 컴포넌트의 작업 부분들을 구제하는 프로세스이다. 예를 들어, 노드 소자가 메모리 디바이스이고 메모리 디바이스가 30%의 오동작하는 메모리 섹터들 및 70%의 올바르게 동작하는 메모리 섹터들을 가지면, 로컬 노드 부트스트랩 프로세서는 메모리 디바이스가 계속 유용하다고 판정할 수 있으며 작업 섹터 어드레스들을 식별할 수 있다. 소자의 제거시(블록 375), 로컬 노드 부트스트랩 프로세서가 소자가 부분적으로 기능한다고 판정하면(블록 380), 목록화 리스트 내에 부분적으로 기능하는 소자를 포함할 수 있다(블록 370).
소자가 부분적으로 기능하지 않는다고 로컬 노드 부트스트랩 프로세서가 판정하면(블록 380), 소자는 노드로부터 절단된다(블록 385). 절단은 노드의 소자, 또는 시스템의 컴포넌트를 디스에이블시키는 것이므로, 더이상 액세스 가능하지 않다. 일 실시예에서, 절단된 노드 소자들은 목록화 리스트 내에 작성될 수 없을 것 이다. 또 다른 실시에에서, 절단된 소자들은 목록화 리스트 내에 작성될 수 있고 부적합한 기능을 나타내도록 표시될 수 있다.
도 4는 또 다른 멀티 노드 스위치형 시스템(400)의 상세한 설명을 도시한다. 스위치형 시스템(400)은 4개의 프로세서 노드들(405)을 포함하지만, 멀티 노드 스위치형 시스템은 임의 개수의 프로세서 노드들(405)을 포함할 수 있다. 일 실시예에서, 프로세서 노드들(405)은 도 2에 도시된 프로세서 노드일 수 있다. 프로세서 노드들(405)은 개별적인 링크 인터페이스(409)를 통해 스위치(410)에 인터페이스될 수 있다. 링크 인터페이스(409)는 프로세서 노드들(405)이 스위치(410)에 접속된 모든 다른 컴포넌트들과 통신하게 한다. I/O 브리지(420)는 스위치(410)에 연결될 수 있는 시스템(400)의 모든 컴포넌트들과, 링크 인터페이스들(409)을 통해 I/O 브리지(420)에 직접 연결된 각종 I/O 디바이스들 사이에 인터페이스를 제공한다. I/O 브리지(420)에 직접 연결된 디바이스들의 예들은 디스크 드라이브(440), 프린터(450), LAN 접속(460), 및 메모리 디바이스(470)가 있다. 일례에서, I/O 브리지(420)에 직접 연결된 또 다른 디바이스는 BIOS(2) 플래시 메모리(430)일 수 있다. 일 실시예에서, BIOS(2) 플래시 메모리는 전체 시스템(400)을 목록화하는 소프트웨어를 포함한다. 스위치(410)와 I/O 브리지(420) 사이의 링크 인터페이스(409)는 파워업시 인에이블될 수 있다.
스위치(410)는 글로벌 부트 플래그 레지스터(415)를 포함한다. 글로벌 부트 플래그 레지스터(415)는 글로벌 부트스트랩 프로세서를 선택하는데 사용될 수 있다. 글로벌 부트스트랩 프로세서는 스위치(410), I/O 브리지(420) 및 노드들(405) 과 같은 시스템(400)의 컴포넌트들의 목록화를 담당하는 한편, 로컬 노드 부트스트랩 프로세서는 특정 노드(405)의 내부 소자들의 목록화를 담당한다. 일 실시예에서, 글로벌 부트 플래그 레지스터(415)는 I/O 브리지(420) 내에 존재할 수 있다.
도 5는 멀티 노드 시스템을 목록화하는 하나의 상세한 실시예에 대한 흐름도를 도시한다. 파워업 시(블록 502), 임의의 스위치와 임의의 I/O 브리지 사이의 링크 인터페이스가 인에이블되고, 임의의 노드와 임의의 스위치 사이의 링크 인터페이스가 디스에이블된다(블록 505). 다음, 개별적인 노드들이 목록화되고 노드들 사이의 링크 인터페이스가 인에이블될 수 있다(블록 510). 노드들은 도 3A 및 도 3B에 기재된 방법을 사용하여 목록화될 수 있다. 일 실시예에서, 노드가 성공적으로 목록화되지 않으면, 노드 링크 인터페이스는 디스에이블 상태로 유지되고 노드는 시스템으로부터 효과적으로 절단된다. 일단 노드 목록화가 완료되고 링크 인터페이스가 인에이블되면(블록 510), 로컬 노드 부트스트랩 프로세서들은 글로벌 부트 플래그 레지스터를 판독하기 시작한다(블록 515). 로컬 노드 부트스트랩 프로세서가 처음으로 글로벌 부트 플래그 레지스터를 판독하고 글로벌 부트 플래그 레지스터가 제로 상태에 있다고 판정하면(블록 520), 그 후 로컬 노드 부트스트랩 프로세서는 글로벌 부트스트랩 프로세서이다(블록 535). 부트스트랩 프로세서로서 하나의 프로세서를 선택하는데 사용될 수 있는, 많은 디바이스들, 특정 논리 레벨들, 및 판독, 기입, 및 인터럽트와 같은 액세스들이 존재한다는 것은 본 기술 분야에 숙련된 자에게 명백할 것이다.
로컬 노드 부트스트랩 프로세서가 글로벌 부트 플래그 레지스터를 판독하는 것이 처음이 아니고, 글로벌 부트 플래그 레지스터가 제로 상태에 있지 않다고 판정하면(블록 520), 그 후, 로컬 노드 부트스트랩 프로세서는 그 로컬 노드에 대한 목록화 결과를 저장한다(블록 525). 일 실시예에서, 로컬 노드 목록화 결과는 노드에 국한된 BIOS(1) 플래시 메모리 내에 저장될 수 있다. 또 다른 실시예에서, 로컬 노드 목록화 결과는 I/O 브리지에 직접 연결될 수 있는 BIOS(2) 플래시 메모리 내에 저장될 수 있다.
목록화 결과를 저장한 후(블록 525), 로컬 노드 부트스트랩 프로세서는 비활성화한다(블록 530). 일 실시예에서, 로컬 노드 부트스트랩 프로세서는 대기 루프로 들어간다. 또 다른 실시예에서, 로컬 부트스트랩 프로세서는 하이버네이션 상태로 들어간다. 글로벌 부트스트랩 프로세서는 모든 로컬 노드 부트스트랩 프로세서들이 그들 각각의 노드들의 목록화를 완료하고 로컬 목록화 결과들을 저장하기를 기다린다(블록 540). 모든 로컬 노드 부트스트랩 프로세서들이 그들의 목록화 결과들을 저장하기를 완료하면(블록 530), 글로벌 부트스트랩 프로세서는 BIOS 소프트웨어가 최신 버전인지를 체크하도록 진행한다(블록 545). 일 실시예에서 글로벌 부트스트랩 프로세서는 노드에 국한된 BIOS(1) 소프트웨어를 체크한다. 또 다른 실시예에서, 글로벌 부트스트랩 프로세서는 I/O 브리지에 연결된 BIOS(2) 소프트웨어를 체크한다. 또 다른 실시예에서, 글로벌 부트스트랩 프로세서는 BIOS(1) 및 BIOS(2) 소프트웨어 모두를 체크한다. BIOS 소프트웨어가 최신이면, 글로벌 부트스트랩 프로세서는 전체 시스템을 목록화한다(블록 550). 일단 시스템 목록화(블록 550)가 완료하면, 시스템의 제어는 글로벌 부트스트랩 프로세서로부터 OS로 전 달된다(블록 555). BIOS 소프트웨어가 최신 버전이 아닌 것으로 판정되면(블록 545), BIOS 소프트웨어는 갱신되고(블록 560), 글로벌 부트스트랩 프로세서는 전체 부트 프로세스를 재개하기 위해 시스템 리셋을 발행한다(블록 565).
도 6A는 SM(Server Management) 디바이스(601)를 갖는 멀티 노드 시스템(600)의 또 다른 예를 도시한다. 이 실시예에서, SM 디바이스(601)는 프로세서일 수 있다. 멀티 노드 시스템(600)은 2개의 멀티 프로세서 노드들(605)을 포함한다. 노드들(605)은 로컬 상태 레지스터(610)가 추가된 것을 제외하고는 도 2에 도시된 노드와 동일할 수 있다. 도 2를 다시 참조하면, 로컬 상태 레지스터(610)는 칩간 접속(210)에 결합될 수 있다. 또 다른 실시예에서, 로컬 상태 레지스터(610)는 메모리 제어기(230)에 결합될 수 있다. 로컬 상태 레지스터(610)는 목록화 프로세스의 작업을 완료한 후 로컬 노드 부트스트랩 프로세서에 의해 기록될 수 있다. SM 디바이스(601)는 SM 디바이스(601)를 노드들(605)에 결합시키는 SM 제어 라인(615)을 통해 로컬 상태 레지스터(610)에 액세스할 수 있고, 노드 목록화의 진행을 모니터할 수 있다. 노드 목록화의 진행에 문제가 있는 경우, SM 디바이스(601)는 목록화 프로세스를 간섭할 수 있다. 예를 들어, 부트 프로세스 동안의 온도 변화에 의해 로컬 노드 부트스트랩 프로세서가 목록화를 개시하고 목록화 도중에 실패할 가능성이 있다.
SM 디바이스(601)는 목록화가 소정의 시간 내에 완료되지 않는 등의 로컬 노드 부트스트랩 실패에 의해 야기되는 목록화 진행 문제점이 있다고 판정할 수 있다. 로컬 상태 레지스터(610)를 통해 목록화의 진행을 모니터링하는 동안, SM 디 바이스(601)는 목록화 문제점을 인식하고 그 문제점을 해결하거나 그 노드를 절단할 수 있다. 일 실시예에서, SM 제어 라인(615)은 SM 디바이스(601)가 노드의 소자들을 액세스할 수 있게 하여 SM 디바이스(601)는 목록화 진행 문제점이 있다면 그 노드를 제거할 수 있다.
도 6B는 SM 디바이스(640)로 노드 목록화를 모니터링하는 일 실시예에 대한 흐름도를 도시한다. SM 디바이스는 노드 목록화가 개시할 때까지 기다린다(블록 650). 일 실시예에서, SM 디바이스는 로컬 상태 레지스터를 판독함으로써 노드 목록화가 개시했음을 판정할 수 있다. 일단 노드 목록화가 개시되면, SM 디바이스는 타이머를 개시한다(블록 655). 타이머 개시 후(블록 655), SM 디바이스는 로컬 상태 레지스터를 판독함으로써 노드 목록화의 진행을 모니터한다(블록 660). 로컬 상태 레지스터를 판독한 후(블록 660), SM 디바이스는 목록화 진행 문제점이 있는지를 판정한다(블록 665). 일 실시예에서, 목록화 진행 문제점은 로컬 상태 레지스터 내의 로컬 부트스트랩 프로세서에 의해 표시될 수 있다. 또 다른 실시예에서, SM 디바이스는 목록화 작업의 개시와 그 작업의 완료 사이에 얼마나 많은 시간이 지났는지에 기초하여 목록화 진행 문제점이 있을 것이라고 판단한다. 예를 들어, SM 디바이스는 노드 목록화의 연속 작업들에 대한 시간 제한과 전체 노드 목록화 프로세스에 대한 시간 제한에 관한 소정의 리스트를 가질 수 있다. 시간 참조로서 타이머를 사용하여, SM 디바이스는 특정 목록화 작업이 소정의 시간 제한보다 길게 걸렸기 때문에 목록화 진행에 문제점이 있다고 판정할 수 있다.
목록화 진행 문제점이 없으면(블록 665), 그 후 서버 관리 디바이스는 목록 화 진행을 계속해서 모니터한다(블록 660). 목록화 진행 문제점이 있다고 판정하면(블록 665), SM 디바이스는 그 노드에 대해 삭제 및/또는 절단을 수행한다(블록 670). 일 실시예에서, SM 디바이스는 로컬 상태 레지스터를 통해 부분적으로 또는 전체적으로 오동작하는 것으로 표시된 노드의 소자들을 절단한다. 또 다른 실시예에서는, 목록화 진행 문제점이 있다면 SM 디바이스는 그 전체 노드를 절단한다.
삭제 및 절단시(블록 670), 로컬 노드 부트스트랩 프로세서가 기능하는지의 여부가 결정된다(블록 675). 목록화 진행 문제점이 SM 디바이스에 의해 수행된 삭제/절단(블록 670)의 결과로서 해결되고, 로컬 노드 부트스트랩 프로세서가 기능하면(블록 675), SM 디바이스는 계속해서 목록화 진행을 모니터한다(블록 660). 로컬 노드 부트스트랩 프로세서가 기능하지 않으면, 새로운 로컬 노드 부트스트랩 프로세서가 선택될 수 있다(블록 680). 일 실시예에서, 이전의 로컬 노드 부트스트랩 프로세서를 절단하고 로컬 노드 부트스트랩 프로세서로서 그 외의 노드 프로세서들중 하나를 선택함으로써 새로운 로컬 노드 부트스트랩 프로세서가 SM 디바이스에 의해 선택될 수 있다. 또 다른 실시예에서, SM 디바이스는 도 3A에 도시된 흐름에 따라 새로운 로컬 부트스트랩 프로세서를 결정하기 위해 노드의 로컬 부트 플래그 레지스터를 리셋시키고, 절단되지 않는 모든 프로세서들을 인에이블하여 로컬 부트 플래그 레지스터로 레이스(race)하도록 한다. 목록화 진행 문제점이 새로운 로컬 노드 부트스트랩 프로세서를 선택한 결과로서 해결되면(블록 680), SM 디바이스는 계속해서 목록화 진행을 모니터한다(블록 660).
도 7은 신뢰성있는 HA 멀티 노드 시스템(700)의 일 실시예를 도시한다. 도 시된 실시예는 4개의 노드들(705), 2개의 스위치들(710), 및 2개의 I/O 브리지들(730)을 포함한다. 컴포넌트들 또는 디바이스들의 개수는 시스템의 설계에 따라 변할 수 있음을 이해할 것이다. 노드들(705) 및 I/O 브리지들(730)은 링크 인터페이스(760)에 의해 스위치들(710)과 인터페이스된다. SM 디바이스(740)는 서버 관리 제어 라인(750)을 통해 시스템의 컴포넌트들과 결합된다. 대안의 실시예에서, SM 디바이스는 제한된 수의 시스템 컴포넌트들과 결합될 수 있다. 시스템(700)은 단일 장애점을 갖지 않기 때문에 신뢰성있다. 시스템중 임의의 컴포넌트가 고장나면 동일한 기능을 수행할 수 있는 시스템의 적어도 하나의 다른 컴포넌트가 존재한다. 스위치들(710)은 글로벌 상태 레지스터(715) 및 글로벌 부트 플래그 레지스터(720)를 포함한다. 일 실시예에서, 글로벌 상태 레지스터(710)는 시스템 목록화의 상태를 나타내는 글로벌 부트스트랩 프로세서에 의해 기록될 수 있다.
일 실시예에서, 시스템(700)은 도 6B의 SM 노드 목록화 모니터링을 포함하는 도 3A 및 도 3B에 기재된 흐름을 사용하여 노드 목록화의 프로세스를 수행한다. 노드 목록화 프로세스에 이어, 시스템(700)은 도 5에 도시된 컴포넌트 목록화 프로세스를 수행할 수 있다. 도 6A의 시스템의 SM 제어와 매우 유사하게, 시스템 관리 디바이스(740)는 시스템 컴포넌트 목록화의 진행을 모니터하는데 사용될 수 있다. 일 실시예에서, 서버 관리 디바이스(740)는 시스템 목록화 동안 글로벌 부트스트랩 프로세서에 의해 기록되는, 글로벌 상태 레지스터(715)를 통한 시스템 목록화 진행을 모니터한다. 도시된 실시예에서, 글로벌 상태 레지스터(715) 및 글로벌 부트 플래그 레지스터(720)는 스위치들(710) 내에 존재한다. 또 다른 실시예에서, 글로벌 상태 레지스터(715) 및 글로벌 부트 플래그 레지스터(720)는 I/O 브리지들(730) 내에 존재할 수 있다. 또 다른 실시예에서, 글로벌 상태 레지스터(715) 및 글로벌 부트 플래그 레지스터(720)는 스위치들(710) 또는 I/O 브리지들(730) 내에 별도로 존재할 수 있다. 노드들(705)과 스위치들(710) 사이의 링크 인터페이스들(760)은 디스에이블될 수 있고, I/O 브리지들(730)과 스위치들(710) 사이의 링크 인터페이스들(760)은 파워업시 인에이블될 수 있다.
모든 스위치들(710)은 디폴트로 동시에 사용될 수 있다. 다수의 스위치들(710)은 통신 작업들을 인터리빙함으로써 시스템 컴포넌트들 사이에서 통신을 라우팅하는데 동시에 사용될 수 있으며, 통신 작업은 작업들을 분할하고 작업들중 일부를 상이한 스위치들(710)로 위임하는 방법이다. 또 다른 실시예에서, 스위치들(710)중 하나는 디폴트로 사용될 수 있고 모든 다른 스위치들(710)은 디폴트 스위치(710)가 실패하는 경우에만 활성화될 수 있다. 단지 하나의 I/O 브리지(730)만이 디폴트로 사용될 수 있고, 또는 모든 I/O 브리지들(730)이 동시에 사용될 수 있다.
도 8은 서버 관리(800)를 이용하는 시스템 컴포넌트 목록화에 대한 일 실시에의 흐름도를 도시한다. SM 디바이스는 시스템 컴포넌트 목록화가 개시하기를 기다린다(블록 810). 일 실시예에서, 글로벌 부트스트랩 프로세서에 의해 기록될 수 있는 글로벌 상태 레지스터를 판독함으로써 시스템 목록화가 개시했다고 SM 디바이스가 판정한다. 시스템 목록화가 개시하면, SM 디바이스는 타이버를 개시한다(블 록 815). 타이머 개시후(블록 815), SM 디바이스는 글로벌 상태 레지스터를 판독함으로써 시스템 컴포넌트 목록화의 진행을 모니터한다(블록 820). 글로벌 상태 레지스터로부터 판독된 콘텐츠에 기초하여, SM 디바이스는 목록화 진행에 문제점이 있다고 판정한다(블록 825). 목록화 진행에 문제점이 없으면 그 후 SM 디바이스는 계속해서 시스템 컴포넌트 목록화의 진행을 모니터한다(블록 820). 목록화 진행에 문제점이 있으면, SM 디바이스는 삭제 및 절단을 수행한다(블록 830). 일 실시예에서, 글로벌 상태 레지스터로부터 판독된 정보는 시스템중 어떤 컴포넌트가 오동작하는지를 나타낸다. 또 다른 실시예에서, SM 디바이스는 타이머 및 작업에 대한 소정의 시간 제한에 기초하여 얼마나 오랫동안 목록화 작업이 이루어지는지를 평가함으로써 목록화 진행에 문제점이 존재할 수 있다는 것을 판정한다.
SM 디바이스가 오동작하는 디바이스를 삭제 및/또는 절단한 후(블록 830), SM 디바이스는 글로벌 부트스트랩 프로세서가 기능하고 있다고 판정한다(블록 835). 글로벌 부트스트랩 프로세서가 적절하게 기능하지 않으면, 그 후 새로운 글로벌 부트스트랩 프로세서가 선택되고(블록 850), 이전의 글로벌 부트스트랩 프로세서는 절단된다. 글로벌 부트스트랩 프로세서가 기능한다면, 또는, 새로운 글로벌 부트스트랩 프로세서를 선택한 후(블록 850), SM 디바이스는 스위치들이 기능하고 있는지를 판정한다(블록 840). 일 실시예에서, 시스템 내에서의 스위치들 중 임의의 것이 적절하게 동작하고 있지 않으면, SM 디바이스는 적절하게 동작하고 있는 임의의 스위치를 재프로그램하여 오동작하는 스위치를 우회하도록 모든 통신 트래픽을 처리하여(블록 855), 오동작 스위치를 효과적으로 절단한다. 다음, SM 디 바이스는 디폴트 I/O 브리지가 적절하게 동작하는지를 판정한다(블록 845). 디폴트 I/O 브리지가 적절하게 동작하지 않으면, 디폴트 I/O 브리지는 절단될 수 있고 백업 브리지가 인에이블될 수 있다(블록 860). 디폴트 브리지가 기능하거나 백업 브리지가 디폴트 브리지를 대신하면, 목록화가 계속되고 SM 디바이스는 계속해서 시스템 컴포넌트 목록화의 진행을 모니터한다(블록 820).
본 기술 분야에 숙련된 자라면, 노드 그 자체는 서브 노드라 칭해지는 노드 그 자체인 임의 개수의 소자들을 포함하며, 노드에 후속하여, 시스템 컴포넌트들에 후속하여 서브 노드들을 목록화하는 계층적 목록화 프로세스가 본 발명의 범위내에 있다는 것을 이해해야 한다. 도 1A, 도 4, 및 도 7의 시스템 실시예들은 마찬가지의 기능을 갖는 노드 소자들에 필적하는 독립적인 시스템 컴포넌트들의 그룹들을 포함하는 노드들이다. 이들 상이한 실시예들은 대형 시스템의 일부일 수 있다. 예를 들어, 도 1A의 노드들(105)은 도 4 또는 도 7에 도시된 시스템을 포함할 수 있다. 따라서, 본 발명은 노드들 내의 노드들을 목록화하는 것에 적용되고, 반복적으로 사용될 수 있다.
또한, 본 기술 분야에 숙련된 자라면, SM 디바이스는 노드 내의 소자들의 일부 또는 모든 소자들의 목록화 진행을 모니터하기 위해 사용될 수 있다는 것을 이해해야 한다. 마찬가지로, SM 디바이스는 시스템 내의 모든 컴포넌트들 또는 컴포넌트들의 일부의 목록화 진행을 모니터하기 위해 사용될 수 있다.
대안의 실시예들에서, 본 발명은 개별적인 하드웨어 또는 펌웨어로 구현될 수 있다. 예를 들어, 로컬 및 글로벌 부트 플래그 레지스터들은 파워업 시 특정값 으로 설정되는 메모리 디바이스 내의 위치로서 구현될 수 있고, 처음에 메모리 위치가 프로세서에 의해 판독된 후 변경될 수 있다.
상기한 설명에서, 본 발명은 그 예시적인 특정 실시예들을 참조하여 설명되었다. 그러나, 첨부된 청구범위 내에 개시된 바와 같은 본 발명의 보다 넓은 사상 및 범위로부터 벗어나지 않고 각종 수정 및 변경들이 행해질 수 있음은 자명하다. 명세서 및 도면들은 한정적 의미보다는 예시적인 것으로 여겨져야 한다.
Claims (30)
- 제1 노드 내의 복수의 로컬 노드 소자 중에서 로컬 노드 소자들로 이루어진 제1 부분을 선택하는 단계 - 상기 복수의 로컬 노드 소자는 활성 상태이고 목록화되어(enumerated) 있지 않음 - ;로컬 노드 소자들로 이루어진 나머지 부분을 비활성화(deactivating)하는 단계; 및상기 로컬 노드 소자들로 이루어진 선택된 제1 부분을 이용하여 상기 제1 노드 내의 상기 복수의 로컬 노드 소자를, 제2 노드 내의 로컬 노드 소자들의 로컬 목록화와 실질적으로 병행하여, 목록화하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 제1 부분을 선택하는 단계는 상기 복수의 로컬 노드 소자에 의해 공유되는 소정의 디바이스를 맨 먼저 액세스하는 부분을 선택하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 제1 부분을 선택하는 단계는 상기 로컬 노드 프로세서 소자들로 이루어진 제1 부분을 선택하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 나머지 부분을 비활성화하는 단계는 상기 나머지 부분을 하이버네이션 상태(hibernation state)로 두는 단계를 포함하는 방법.
- 제1항에 있어서,파워업시 로컬 노드와 대형(lager) 시스템 사이의 링크 인터페이스를 디스에이블하는 단계를 더 포함하며, 상기 대형 시스템은 상기 제1 노드 및 상기 제2 노드를 포함하고 상기 링크 인터페이스에 의해 상기 로컬 노드와 상기 대형 시스템의 컴포넌트들 사이에서 정보가 통신되는 방법.
- 제1항에 있어서,상기 복수의 로컬 노드 소자를 목록화하는 단계는,상기 복수의 로컬 노드 소자가 기능하는지를 판정하는 단계;완전히 오동작하는 로컬 노드 소자들을 절단(amputating)하여 상기 오동작하는 로컬 노드 소자들을 디스에이블하는 단계;부분적으로 기능하는 로컬 노드 소자들을 제거(pruning)하여 상기 부분적으로 기능하는 로컬 노드 소자들중 오동작하는 부분들만을 디스에이블하고 상기 부분적으로 기능하는 로컬 노드 소자들중 기능하는 부분들을 인에이블하는 단계; 및목록화 결과들의 리스트를 컴파일하여 노드 내의 로컬 자원들 및 상기 로컬 자원들의 기능을 작성(list)하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 복수의 로컬 노드 소자의 목록화 진행(enumerating progress)을 모니터링하는 단계;목록화 진행에 문제점이 있으면 상기 복수의 로컬 노드 소자 중에서 로컬 노드 소자들로 이루어진 제2 부분을 선택하는 단계; 및목록화 진행에 문제점이 있으면 상기 로컬 노드 소자들로 이루어진 제2 부분을 이용하여 상기 복수의 로컬 노드 소자를 목록화하는 단계를 더 포함하는 방법.
- 제2항에 있어서,상기 공유되는 소정의 디바이스를 맨 먼저 액세스하는 부분을 선택하는 단계는 맨 먼저 공유 레지스터로부터 판독을 행하는 부분을 선택하는 단계를 포함하는 방법.
- 제5항에 있어서,상기 로컬 노드를 목록화한 후에 상기 링크 인터페이스를 인에이블하는 단계를 더 포함하는 방법.
- 복수의 로컬 노드 소자를 포함하는 노드 - 상기 노드는 서로 연결된 복수의 노드 중 하나임 - 및상기 복수의 로컬 노드 소자를 목록화하는 제1 로컬 부트스트랩 소자(a first local bootstrap element) - 상기 제1 로컬 부트스트랩 소자는 상기 복수의 로컬 노드 소자 중 하나임 - 를 포함하고,상기 복수의 로컬 노드 소자의 목록화는 상기 복수의 노드 각각의 목록화와 실질적으로 동시에 수행되는 장치.
- 제10항에 있어서,상기 복수의 로컬 노드 소자 중 어느 것이 상기 제1 로컬 부트스트랩 소자인지 선택하기 위하여 공유 로컬 디바이스를 더 포함하는 장치.
- 제11항에 있어서,상기 공유 로컬 디바이스는 상기 공유 로컬 디바이스의 제1 액세스의 이전에 제1 논리 상태에 있고, 상기 공유 로컬 디바이스에 대한 상기 제1 액세스의 직후 실질적으로 그와 다른 제2 논리 상태가 되는 장치.
- 제10항에 있어서,로컬 노드 목록화의 진행을 모니터링하고, 상기 로컬 노드 목록화의 진행이 소정의 요건을 충족시키지 못하는 경우 상기 복수의 로컬 노드 소자 중에서 제2 로컬 부트스트랩 소자를 선택하게 하고 상기 제1 로컬 부트스트랩 소자를 절단하는, 상기 복수의 노드 각각에 연결된 서버 관리 디바이스를 더 포함하는 장치.
- 제11항에 있어서,상기 공유 로컬 디바이스는 레지스터로서 로컬 노드 소자에 의한 상기 레지스터의 첫번째 판독 이전에 제1 논리 상태를 갖고 로컬 노드 소자에 의한 상기 레지스터의 첫번째 판독 이후 제2 논리 상태를 갖는 레지스터인 장치.
- 삭제
- 제13항에 있어서,상기 소정의 요건은 시간 제한인 장치.
- 일련의 명령어들을 저장하고 있는 컴퓨터 판독가능 매체로서, 상기 일련의 명령어들은 프로세서에 의해 실행되는 경우에 상기 프로세서로 하여금,제1 노드 내의 복수의 로컬 노드 소자 중에서 로컬 노드 소자들로 이루어진 제1 부분을 선택하는 단계 - 상기 복수의 로컬 노드 소자는 활성 상태이고 목록화되어 있지 않음 - ;로컬 노드 소자들로 이루어진 나머지 부분을 비활성화하는 단계; 및상기 제1 부분을 이용하여 상기 제1 노드 내의 상기 복수의 로컬 노드 소자를, 제2 노드 내의 로컬 노드 소자들의 로컬 목록화와 실질적으로 병행하여, 목록화하는 단계를 수행시키는 명령어들을 포함하는 컴퓨터 판독가능 매체.
- 제17항에 있어서,상기 프로세서에 의해 실행되는 경우에, 상기 프로세서로 하여금,상기 복수의 로컬 노드 소자에 의해 공유되는 디바이스를 맨 먼저 액세스하는 부분으로서 상기 제1 부분을 선택하는 단계를 수행시키는 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
- 제17항에 있어서,상기 프로세서에 의해 실행되는 경우에, 상기 프로세서로 하여금,로컬 노드와 대형 시스템 사이의 링크 인터페이스를 인에이블하는 단계 - 상기 대형 시스템은 다수의 노드들을 포함하고 상기 링크 인터페이스에 의해 상기 로컬 노드와 상기 대형 시스템의 컴포넌트들 사이에서 정보가 전달됨 -을 수행시키는 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
- 복수의 프로세서 노드 - 프로세서 노드는 복수의 로컬 소자를 포함함 - ;복수의 I/O 디바이스에 결합된 I/O 브리지;상기 I/O 브리지를 통해 상기 복수의 프로세서 노드와 상기 복수의 I/O 디바이스 사이에서 통신을 인에이블하는 스위치;상기 노드들과 상기 스위치들 사이에서 통신을 가능하게 하는 복수의 노드 링크 인터페이스 - 상기 노드 링크 인터페이스들은 파워업시 디스에이블됨 - ;상기 복수의 프로세서 노드 내에 있는 상기 프로세서 노드들의 로컬 소자들을 목록화하는 복수의 제1 로컬 부트스트랩 프로세서 - 상기 프로세서 노드들은 상기 노드들에 대해 국부적인 제1 로컬 부트스트랩 프로세서를 포함함 - ;상기 복수의 제1 로컬 부트스트랩 프로세서를 선택하기 위한 상기 프로세서 노드들 내의 복수의 로컬 공유 디바이스 - 상기 개별적인 프로세서 노드들은 상기 노드에 대해 국부적인 로컬 공유 디바이스를 포함함 - ;장치의 컴포넌트들을 목록화하는 제1 글로벌 부트스트랩 프로세서; 및상기 제1 글로벌 부트스트랩 프로세서를 선택하기 위해 상기 개별적인 프로세서 노드들에 액세스 가능한 글로벌 공유 디바이스를 포함하고,상기 복수의 제1 로컬 부트스트랩 프로세서는 상기 복수의 로컬 프로세서 노드 소자를 실질적으로 동시에 목록화하는 장치.
- 제20항에 있어서,상기 글로벌 공유 디바이스는 상기 스위치에 결합되는 장치.
- 제20항에 있어서,상기 글로벌 공유 디바이스는 상기 I/O 브리지에 결합되는 장치.
- 제20항에 있어서,개별적인 노드 목록화의 진행을 모니터하고, 상기 복수의 노드들 중 임의의 노드에 대해 상기 노드 목록화가 소정의 시간 프레임 내에 완료되지 않는 경우 상기 복수의 로컬 노드 소자 중에서 제2 로컬 부트스트랩 프로세서를 선택하고 상기 제1 로컬 부트스트랩 소자를 절단하게 하는 적어도 하나의 서버 관리 디바이스를 더 포함하는 장치.
- 제20항에 있어서,시스템 컴포넌트 목록화의 진행을 모니터하고, 시스템 목록화가 소정의 시간 프레임 내에 완료되지 않으면 상기 복수의 시스템 컴포넌트 중에서 제2 글로벌 부트스트랩 프로세서를 선택하고 상기 제1 글로벌 부트스트랩 프로세서를 절단하게 하는 적어도 하나의 서버 관리 디바이스를 더 포함하는 장치.
- 제20항에 있어서,상기 복수의 로컬 공유 디바이스 및 상기 글로벌 공유 디바이스는 독립적으로 상기 공유 디바이스에 대한 제1 액세스 이전에 제1 논리 상태를 갖고 상기 공유 디바이스에 대한 상기 제1 액세스 직후에 실질적으로 그와 다른 제2 논리 상태를 갖는 장치.
- 제20항에 있어서,상기 복수의 노드의 상기 개별적 노드들에 대한 상기 복수의 제1 로컬 부트스트랩 프로세서는 실질적으로 동시에 선택되는 장치.
- 제25항에 있어서,상기 로컬 공유 디바이스들 및 상기 글로벌 공유 디바이스는 레지스터로서 프로세서 소자에 의한 상기 레지스터의 제1 판독 이전에 "0"의 제1 논리 상태를 갖고 프로세서 소자에 의한 상기 레지스터의 상기 제1 판독 직후에 실질적으로 "0"이 아닌 제2 논리 상태를 갖는 레지스터인 장치.
- 컴퓨터 시스템으로서,제1 노드;제2 노드 - 상기 제2 노드는 복수의 프로세서, BIOS 명령어들 및 목록화 결과들을 저장하는 로컬 메모리 디바이스, 부트스트랩 프로세서를 선택하기 위한 부트 플래그 레지스터 및 상기 제1 노드 내의 디바이스들의 목록화와 실질적으로 동시에 상기 제2 노드 내의 디바이스들을 목록화하는 부트스트랩 프로세서를 포함함 - 및상기 컴퓨터 시스템과 스위치 사이의 통신을 가능하게 하는 링크 인터페이스를 포함하는 컴퓨터 시스템.
- 제28항에 있어서,상기 링크 인터페이스는 파워업시 디스에이블되고 성공적인 목록화 후에 인에이블되는 컴퓨터 시스템.
- 제28항에 있어서,상기 부트스트랩 프로세서는 상기 복수의 프로세서 중 상기 부트 플래그 레지스터를 판독하는 첫번째 프로세서인 컴퓨터 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/992,725 | 2001-11-14 | ||
US09/992,725 US20030093510A1 (en) | 2001-11-14 | 2001-11-14 | Method and apparatus for enumeration of a multi-node computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050058241A KR20050058241A (ko) | 2005-06-16 |
KR100633827B1 true KR100633827B1 (ko) | 2006-10-13 |
Family
ID=25538668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020047007458A KR100633827B1 (ko) | 2001-11-14 | 2002-11-08 | 멀티 노드 컴퓨터 시스템의 목록화를 위한 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20030093510A1 (ko) |
EP (1) | EP1444573A2 (ko) |
KR (1) | KR100633827B1 (ko) |
CN (1) | CN1324463C (ko) |
AU (1) | AU2002352572A1 (ko) |
TW (1) | TWI229266B (ko) |
WO (1) | WO2003042829A2 (ko) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484125B2 (en) * | 2003-07-07 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing updated processor polling information |
CN100356325C (zh) * | 2005-03-30 | 2007-12-19 | 中国人民解放军国防科学技术大学 | 大规模并行计算机***分组并行启动方法 |
JP4945949B2 (ja) * | 2005-08-03 | 2012-06-06 | 日本電気株式会社 | 情報処理装置、cpu、情報処理装置の起動方法およびプログラム |
US7600109B2 (en) | 2006-06-01 | 2009-10-06 | Dell Products L.P. | Method and system for initializing application processors in a multi-processor system prior to the initialization of main memory |
US7856551B2 (en) * | 2007-06-05 | 2010-12-21 | Intel Corporation | Dynamically discovering a system topology |
US7925876B2 (en) * | 2007-08-14 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Computer with extensible firmware interface implementing parallel storage-device enumeration |
KR101400597B1 (ko) * | 2008-02-18 | 2014-05-27 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 통신 결합 방법 및 시스템 |
US20090213755A1 (en) * | 2008-02-26 | 2009-08-27 | Yinghai Lu | Method for establishing a routing map in a computer system including multiple processing nodes |
JP5042372B2 (ja) * | 2008-02-26 | 2012-10-03 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | ホスト列挙プロセスを実行するための方法及び装置 |
US9442540B2 (en) * | 2009-08-28 | 2016-09-13 | Advanced Green Computing Machines-Ip, Limited | High density multi node computer with integrated shared resources |
WO2012119406A1 (zh) * | 2011-08-22 | 2012-09-13 | 华为技术有限公司 | 枚举输入输出设备的方法和设备 |
CN102508679A (zh) * | 2011-11-01 | 2012-06-20 | 大唐移动通信设备有限公司 | 一种软件加载方法及装置 |
US9311138B2 (en) * | 2013-03-13 | 2016-04-12 | Intel Corporation | System management interrupt handling for multi-core processors |
CN103530254B (zh) * | 2013-10-11 | 2016-11-23 | 杭州华为数字技术有限公司 | 多节点***的外部设备互联枚举方法和装置 |
US10108253B2 (en) | 2014-01-30 | 2018-10-23 | Hewlett Packard Enterprise Development Lp | Multiple compute nodes |
CN105335526A (zh) * | 2015-12-04 | 2016-02-17 | 北京京东尚科信息技术有限公司 | 一种图片加载方法及装置 |
US10599442B2 (en) * | 2017-03-02 | 2020-03-24 | Qualcomm Incorporated | Selectable boot CPU |
CN116340270B (zh) * | 2023-05-31 | 2023-07-28 | 深圳市科力锐科技有限公司 | 并发遍历枚举方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768542A (en) * | 1994-06-08 | 1998-06-16 | Intel Corporation | Method and apparatus for automatically configuring circuit cards in a computer system |
JP3447404B2 (ja) * | 1994-12-08 | 2003-09-16 | 日本電気株式会社 | マルチプロセッサシステム |
US5524209A (en) * | 1995-02-27 | 1996-06-04 | Parker; Robert F. | System and method for controlling the competition between processors, in an at-compatible multiprocessor array, to initialize a test sequence |
-
2001
- 2001-11-14 US US09/992,725 patent/US20030093510A1/en not_active Abandoned
-
2002
- 2002-11-08 CN CNB028227379A patent/CN1324463C/zh not_active Expired - Fee Related
- 2002-11-08 WO PCT/US2002/035946 patent/WO2003042829A2/en active Search and Examination
- 2002-11-08 KR KR1020047007458A patent/KR100633827B1/ko not_active IP Right Cessation
- 2002-11-08 EP EP02789530A patent/EP1444573A2/en not_active Ceased
- 2002-11-08 AU AU2002352572A patent/AU2002352572A1/en not_active Abandoned
- 2002-11-08 TW TW091132907A patent/TWI229266B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20030093510A1 (en) | 2003-05-15 |
CN1324463C (zh) | 2007-07-04 |
TW200301427A (en) | 2003-07-01 |
WO2003042829A2 (en) | 2003-05-22 |
KR20050058241A (ko) | 2005-06-16 |
EP1444573A2 (en) | 2004-08-11 |
WO2003042829A3 (en) | 2004-04-15 |
TWI229266B (en) | 2005-03-11 |
CN1592888A (zh) | 2005-03-09 |
AU2002352572A1 (en) | 2003-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100633827B1 (ko) | 멀티 노드 컴퓨터 시스템의 목록화를 위한 방법 및 장치 | |
JP3954088B2 (ja) | 論理分割された(lpar)計算機でシステム・ファームウェア更新を安全に実行する機構 | |
US7251736B2 (en) | Remote power control in a multi-node, partitioned data processing system via network interface cards | |
JP4641546B2 (ja) | 入出力(i/o)エラーをハンドリングするための方法及びシステム | |
JP5798485B2 (ja) | 実行中における物理的ハードウェアのエミュレーションとの交換 | |
US10241868B2 (en) | Server control method and server control device | |
US6640203B2 (en) | Process monitoring in a computer system | |
US9122816B2 (en) | High performance system that includes reconfigurable protocol tables within an ASIC wherein a first protocol block implements an inter-ASIC communications protocol and a second block implements an intra-ASIC function | |
US20060036832A1 (en) | Virtual computer system and firmware updating method in virtual computer system | |
US9372702B2 (en) | Non-disruptive code update of a single processor in a multi-processor computing system | |
US20090083467A1 (en) | Method and System for Handling Interrupts Within Computer System During Hardware Resource Migration | |
US20040122973A1 (en) | System and method for programming hyper transport routing tables on multiprocessor systems | |
US8166273B2 (en) | Degeneration method and information processing apparatus | |
JP2013508839A (ja) | ノード故障の対処 | |
US10474517B2 (en) | Techniques of storing operational states of processes at particular memory locations of an embedded-system device | |
CN105808391A (zh) | 一种热替换cpu节点的方法及装置 | |
US7694175B2 (en) | Methods and systems for conducting processor health-checks | |
US20020099876A1 (en) | Method and apparatus for preservation of data structures for hardware components discovery and initialization | |
US7607040B2 (en) | Methods and systems for conducting processor health-checks | |
CN106227653B (zh) | 一种Linux内核调试***及方法 | |
US9785519B1 (en) | Driver switch for device error recovery for assigned devices | |
KR101564144B1 (ko) | 펌웨어 관리 장치 및 방법 | |
JPH096547A (ja) | 情報処理装置および外部記憶装置の駆動方法 | |
JP2007157060A (ja) | マルチプロセッサシステムと初期立ち上げ方法およびプログラム | |
TW200521837A (en) | Method for switching to boot multi-processor computer system |
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: 20090923 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |