KR100828755B1 - 시스템을 부팅하기 위해 프로세서들 및 관련 펌웨어의양호한 그룹을 결정하는 시스템 및 방법 - Google Patents

시스템을 부팅하기 위해 프로세서들 및 관련 펌웨어의양호한 그룹을 결정하는 시스템 및 방법 Download PDF

Info

Publication number
KR100828755B1
KR100828755B1 KR1020047020183A KR20047020183A KR100828755B1 KR 100828755 B1 KR100828755 B1 KR 100828755B1 KR 1020047020183 A KR1020047020183 A KR 1020047020183A KR 20047020183 A KR20047020183 A KR 20047020183A KR 100828755 B1 KR100828755 B1 KR 100828755B1
Authority
KR
South Korea
Prior art keywords
processor
health state
copy
determining
abstraction layer
Prior art date
Application number
KR1020047020183A
Other languages
English (en)
Other versions
KR20050016545A (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 KR20050016545A publication Critical patent/KR20050016545A/ko
Application granted granted Critical
Publication of KR100828755B1 publication Critical patent/KR100828755B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

리세팅 이벤트 후에 시스템을 부팅하기 위한 프로세서들 및 관련 펌웨어의 양호한 그룹을 결정하는 시스템 및 방법이 개시된다. 프로세서 특정 펌웨어의 용장성 카피들이 유효성에 대해 검사된다. 프로세서들은 그들 자신의 헬스 상태를 결정하고, 하나의 프로세서는 가장 이용가능한 헬스 상태를 갖는 프로세서들의 그룹을 결정한다. 프로세서간 인터럽트 메시지들은 통신 메카니즘을 제공하여 알고리즘이 시스템 부팅을 계속하는 프로세서들의 그룹을 결정하게 한다.
펌웨어, 카피, 인터럽트, 헬스 상태, 시스템 부팅

Description

시스템을 부팅하기 위해 프로세서들 및 관련 펌웨어의 양호한 그룹을 결정하는 시스템 및 방법{SYSTEM AND METHOD TO DETERMINE A HEALTHY GROUP OF PROCESSORS AND ASSOCIATED FIRMWARE FOR BOOTING A SYSTEM}
본 발명은 일반적으로 마이크로프로세서 시스템에 관한 것으로, 특히 필드 업그레이드가능한 펌웨어(field upgradeable firmware)에 의해 다수의 프로세서 동작이 가능한 마이크로프로세서 시스템에 관한 것이다.
마이크로프로세서 시스템 내의 프로세서들은 리세팅 이벤트에 후속하여 셀프 테스트를 수행하고 동작들을 개시하기 위해 펌웨어에 의존할 수 있다. 다수의 프로세서 시스템에서, 동일한 일반적 프로세서 군 내에 있는 프로세서들조차도 프로세서 속도, 스테핑 레벨(stepping level), 소정의 아키텍쳐 변경, 및 많은 기타 파라미터들로 인해 서로 상이할 수 있다. 이러한 이유로, 펌웨어는 일반적 프로세서 군 내에 있는 프로세서들의 한 그룹에 각각 특유한 다수의 모듈들을 포함할 수 있다.
부가적으로, 이러한 펌웨어 모듈들에 필드 업그레이드를 수행할 이유가 존재할 수 있다. 플래시 메모리 또는 기타 필드 업그레이드가능한 메모리들은 초기 펌웨어 모듈들을 초기에 포함할 수 있고, 이러한 모듈들은 나중에 업데이트된 펌웨어 모듈들로 재기입될 수 있다. 그러나, 플래시 메모리에 기입되기 때문에, 손상될 가능성이 있다. 펌웨어의 업데이트를 제어하는 펌웨어 자신이 손상될 수 있어, 시스템의 필드 복구를 방해한다. 이러한 경우에 시스템은 제조업자에게 반환되어 플래시 메모리를 손상되지 않은 펌웨어를 포함하는 새로운 플래시 메모리 모듈로 물리적으로 대체할 필요가 있을 수 있다.
본 발명은 유사한 구성 요소에 유사한 참조 번호를 부기한 첨부 도면에서 한정적인 의미가 아니라, 예시적으로 설명된다.
도 1은 일 실시예에 따른 시스템 하드웨어 컴포넌트들의 개략적인 도면.
도 2는 일 실시예에 따른 메모리의 소프트웨어 컴포넌트들을 도시하는 도면.
도 3은 본 발명의 일 실시예에 따른 컴포넌트간 메시징(inter-component messaging) 도면.
도 4는 본 발명의 일 실시예에 따른 로컬 프로세서 헬스 상태(health status)의 유도(derivation)을 도시하는 흐름도.
도 5는 본 발명의 일 실시예에 따른 양호한 프로세서들의 선택 및 초기화를 도시하는 흐름도.
이하의 설명은 다수의 프로세서 시스템에 있는 프로세서들을 선택 및 초기화하는 기술을 설명한다. 이하의 설명에서는, 본 발명의 보다 완전한 이해를 제공하기 위해 로직 구현, 소프트웨어 모듈 할당, 버스 시그널링 기술과 같은 다수의 특 정 상세, 및 동작의 상세가 개시되어 있다. 그러나, 본 기술 분야의 당업자라면, 본 발명은 이러한 특정 상세 없이 실시될 수 있음을 이해할 것이다. 다른 경우에, 본 발명을 모호하게 하지 않기 위해, 제어 구조, 게이트 레벨 회로 및 완전한 소프트웨어 명령어 시퀀스들은 상세히 도시되지 않는다. 본 기술분야의 당업자들은, 포함되어 있는 설명을 가지고, 과도한 실험없이 적절한 기능을 구현할 수 있을 것이다. 본 발명은 마이크로프로세서 시스템 내의 하드웨어의 형태로 개시되어 있다. 그러나, 본 발명은 디지털 신호 프로세서, 미니컴퓨터, 또는 메인프레임 컴퓨터와 같은 다른 형태의 프로세서에서 실시될 수 있다. 마찬가지로, 프로세서간 인터럽트를 사용하는 본 발명이 프로세서들 사이의 시그널링(signaling) 방법으로서 개시되어 있다. 그러나, 본 발명은 다른 형태의 시그널링을 사용하여 수행될 수 있다.
일 실시예에서는, 멀티프로세서 내의 양호한 프로세서(healthy processor)의 선택 및 초기화는 각 프로세서가 그 자신의 동작에 요구되는 펌웨어 모듈들을 검사하는 것에 의해 개시된다. 그 후 각 프로세서는 그 자신의 프로세서 헬스 상태를 결정한다. 그 후 결정론적 방법에 의해 프로세서들의 모든 헬스 상태를 수집하는 임시 마스터 프로세서가 선택되고, 모든 프로세서 중 가장 높은 이용가능한 프로세서 헬스 상태를 갖는 프로세서 그룹이 결정된다. 그 후 임시 마스터 프로세서는 이러한 그룹의 멤버인 프로세서들이 부팅 동작을 계속할 수 있도록 인에이블하고, 이러한 그룹의 멤버가 아닌 프로세서들(필요하다면 그 자신도 포함함)의 실행을 중단시키거나 디스에이블시킨다.
이제 도 1을 참조하면, 일 실시예에 따른 시스템 하드웨어 컴포넌트들의 개략적인 도면이 도시된다. 다수의 프로세서들, 즉 중앙 처리 장치 CPU A(110), CPU B(114), CPU C(118), 및 CPU D(122)이 도시되어 있다. 다른 실시예들에서는, 단지 하나의 프로세서만 존재할 수도 있거나, 또는 한쌍의 프로세서, 또는 4개 이상의 프로세서가 존재할 수 있다. 일 실시예에서, 프로세서들은 인텔
Figure 112004058383319-pct00001
Itaniumtm 프로세서 군과 호환가능할 수 있다. CPU A(110), CPU B(114), CPU C(118), 및 CPU D(122)와 같은 프로세서들은, 도시된 IRR(112, 116, 120, 124)와 같은 하나 이상의 IRR(interrupt request register)를 각각 포함할 수 있다. CPU A(110)와 같은 프로세서로 송신되는 일반적인 인터럽트는 인터럽트를 서비스하기 위해 요구되는 메모리 위치를 일반적으로 기술하는 벡터를 포함할 수 있는 IRR(112)에 값을 기입할 수 있다. CPU A(110)는 인터럽트 서비스를 인에이블 또는 디스에이블할 수 있다. 인터럽트 서비스가 디스에이블되면, IRR(112)은 여전히 벡터를 수신할 수 있지만 CPU A(110)는 자동적으로 인터럽트를 서비스하지 못할 수 있다. 그러나, CPU A(110)은 여전히 IRR(112) 내에 포함된 벡터를 판독할 수 있다. 인터럽트 서비스가 디스에이블되는 방식으로 동작하는 것은 종종 "폴링된 모드(polled mode)"라고 지칭된다. 또한, 각 프로세서는 LID라고 지칭되는 고유 ID를 포함한다. LID는 시스템 버스 상에서 프로세서의 고유 어드레스로 작용한다. 인터럽트들은 특히 공지되어 있는 LID를 갖는 프로세서로 향할 수 있다. LID 값은 CPU A(110), CPU B(114), CPU C(118) 및 CPU D(122)의 LID 레지스터(102, 104, 106 및 108)과 같은 LID 레지스터에 저장될 수 있다. 다른 실시예들에서는, LID값들은 레지스터 이외의 회로 요소들에 저장될 수 있다.
프로세서 CPU A(110), CPU B(114), CPU C(118), 및 CPU D(122)는 시스템 버스(130)를 통해 서로 접속되고, 칩셋(134)과 접속될 수 있다. 시스템 버스(130) 및 칩셋(134)을 통한 접속에 의해 프로세서들은 RAM(136), BIOS 플래시 메모리(138), 및 그래픽 제어기(140)와 각종 프로그램 저장 디바이스와 같은 각종 입출력(I/O) 디바이스들에 액세스할 수 있다. 이러한 프로그램 저장 디바이스들은 시스템 고정 디스크(144) 및 착탈 가능 매체(146)용 드라이브를 포함할 수 있다. 각종 실시예들에서, 착탈 가능 매체(146)용 드라이브는 자기 테이프, 착탈 가능 자기 디스크, 디스켓, 전기-광 디스크, 또는 CD-ROM(compact disk-read only memory) 또는 DVD-ROM(digital versatile disk-read only memory)와 같은 광디스크일 수 있다. I/O 디바이스들은 AGP(advanced graphics port)(142)와 같은 전용 인터페이스를 통해서, 또는 PCI(peripheral component interconnect) 버스(도시 안됨), USB(universal serial bus)(도시 안됨), 또는 IDE(integrated drive electronics) 버스(148)를 통해 칩셋(134)에 접속될 수 있다. 추가 I/O 디바이스들은 LAN(150) 또는 WAN(152)과의 접속을 포함할 수 있다. 기타 실시예들에서는, 많은 기타 인터페이스들이 사용될 수 있다.
컴퓨터 시스템(100)은 그 아키텍쳐 내의 어느 부분에 하드웨어 세마포어 레지스터(hardware semaphore register)를 포함할 수 있다. 하드웨어 세마포어 레지스터는 리세팅 이벤트 후의 제1 판독에 대한 하나의 값과, 제1 판독 후의 후속 판독들에 대한 또 다른 값을 리턴시키는 레지스터로서 정의될 수 있다. 일 실시예에서는, 칩셋(134)은 하드웨어 세마포어 레지스터의 특정한 일례인 부트 플래그(BOFL) 레지스터(154)를 포함할 수 있다. BOFL 레지스터(154)는 CPU A(110), CPU B(114), CPU C(118), 및 CPU D(122) 중 어떤 프로세서가 임시 마스터 프로세서로서 작용할 수 있는지를 결정하기 위해 시스템 초기화 동안 사용될 수 있다. 일 실시예에서는, BOFL 레지스터(154)는 리세팅 이벤트 후의 제1 판독에 대한 하나의 값과, 후속 판독들에 대한 또 다른 값을 리턴시킬 수 있다. 또 다른 실시예에서는, 프로세서가 리세팅 이벤트 후에 BOFL 레지스터(154)를 판독할 때마다, 소정 시퀀스 내에 상이한 번호가 주어진다. BOFL 레지스터(154)를 판독하는 제1 프로세서는 0의 값을 수신한다. BOFL 레지스터(154)의 후속 판독들은 0이 아닌 값을 리턴시킨다. 마스터 프로세서는 BOFL로부터 0의 값을 성공적으로 판독하는 프로세서이다.
일 실시예에서는, 시스템 고정 디스크(144) 상에 오퍼레이팅 시스템이 설치될 수 있고 오퍼레이팅 시스템의 커널은 시스템 RAM(136)으로 로딩될 수 있다. 다른 실시예들에서는, 오퍼레이팅 시스템은 LAN(150) 또는 WAN(152)을 통해 로딩되거나 실행될 수 있다.
이제 도 2를 참조하면, 일 실시예에 따른 메모리 내의 소프트웨어 컴포넌트들을 도시하는 도면이 도시된다. 일 실시예에서, BIOS 컴포넌트들은 도 1의 BIOS 플래시 메모리(138) 내에 상주하는 것으로 도시되지만, 다른 실시예들에서는 BIOS는 다른 형태의 불휘발성 메모리 내에 상주하거나 또는 다른 형태의 휘발성 메모리에 상주할 수도 있다. 소프트웨어 컴포넌트들이 불휘발성 메모리 내에 상주하는 경우, 이들은 펌웨어라 지칭될 수 있다.
BIOS는 일반적으로 PAL(processor abstraction layer) 펌웨어와 같은 프로세서 관련 모듈, 또는 일반적으로 SAL(system abstraction layer)와 같은 비프로세서 시스템 관련 모듈을 포함할 수 있다. 상이한 프로세서들은 부분적으로 프로세서 개정시 차이점 때문에 상이한 개정 또는 타입의 PAL 펌웨어를 요구할 수 있다. 시스템 내에서 PAL 또는 SAL 펌웨어의 버전들을 업데이트하고 플래시 메모리를 수정하여 업데이트된 버전을 수용하는 것이 유리할 수 있다.
그러나, 플래시 메모리의 BIOS를 업데이트하고자 할 때 심각한 문제가 발생할 수 있다. 하나의 간단한 예로서, 업데이트시 전력이 차단되면, 플래시 메모리는, 플래시 메모리에 대한 기입을 제어하는 BIOS 부분을 포함하여, BIOS의 손상된 카피(copy)를 포함할 수 있다. 이것이 발생하면, 정확한 코드를 포함하는 새로운 플래시 메모리와 납땜하는 것 이외에는 복구 방법이 없을 수 있다. 이러한 문제들이 발생하는 빈도를 감소시키기 위해, 일 실시예에서는 PAL 코드 및 SAL 코드가 분할될 수 있다. PAL 코드는 PAL-A로 명명되는, 시스템 초기화에 최소한으로 요구되는 PAL 부분과, 일 실시예에서 PAL-B로 명명될 수 있는 나머지 코드로 분할될 수 있다. 또한, PAL-A는 다시 프로세서 독립형인 기본 PAL-A(PAL-A generic) 및 소정 프로세서 개정에 특정된 PAL-A 코드(PAL-A specific)로 세분될 수 있다. 일반 PAL-A는 프로세서 독립형이기 때문에, 업데이트될 필요가 없고 따라서 업데이트가 디스에이블되는 플래시 메모리의 영역 내에 상주할 수 있다. 마찬가지로, SAL은 SAL-A 및 SAL-B로 분할될 수 있는데, SAL-A는 플래시 메모리 업데이트를 포함하여, 시스템 초기화 또는 복구에 최소한으로 요구되는 SAL 부분이다. SAL-A는 나중에 업데이트되지 않는 기본 SAL-A(일반 SAL-A)와 때때로 업데이트될 필요가 있는 SAL-A(특정 SAL-A)로 더 세분될 수 있다. 업데이트시 손상되는 것을 막기 위해, 일 실시예에서는 일반 PAL-A 및 일반 SAL-A는 수정되지 않을 수 있는 플래시 메모리의 보호되는 부분에 배치될 수 있다.
시스템 이용가능성 및 신뢰성을 증가시키기 위해, 특정 PAL-A 및 특정 SAL-A는 다수의 카피에서 발생할 수 있다. 시스템이 편의상 타입 1 및 타입 2 프로세서로 이름이 붙여질 수 있는 2가지의 개정 레벨(revision level)의 프로세서를 포함할 수 있다고 생각하자. 기타 실시예들에서는 추가의 개정 레벨들의 부가적인 프로세서들이 존재할 수 있다. 도 2의 실시예에서는, 일반 PAL-A(220)의 한 카피(copy)가 존재할 수 있지만, 타입 1 프로세서에 대해서는 특정 PAL-A의 2개의 카피(제1의 특정 PAL-A 타입 1(230) 및 제2의 특정 PAL-A 타입 1(240))이 존재할 수 있다. 마찬가지로, 타입 2 프로세서에 대해서는 특정 PAL-A의 2개의 카피(제1의 특정 PAL-A 타입 2(232) 및 제2의 특정 PAL-A 타입 2(242))가 존재할 수 있다. 일반 SAL-A(222)의 한 카피와 특정 SAL-A의 2개의 카피, 제1의 특정 SAL-A(246) 및 제2의 특정 SAL-A(260)가 존재할 수도 있다. 다른 실시예들에서는 플래시 메모리 내에 배치된 펌웨어의 추가 카피 및 추가 타입들이 존재할 수 있다. 일 실시예에서는, 카피들은 정확한 카피일 수 있지만, 다른 실시예들에서는 카피는 정확한 카피가 아니라 기능적으로 유사할 수 있다.
예를 들어 타입 1 중 하나인 프로세서가 리세팅 이벤트에 이어 실행을 시작하면, 프로세서는 일반 PAL-A(220) 내에서 리셋 벡터라고 불리는 미리 결정된 위치에서 실행을 시작한다. 일반 PAL-A(220)을 실행하는 프로세서는 제1의 FIT(firmware interface table)(224) 또는 제2의 FIT(234)를 사용하여 다른 코드 모듈들의 위치를 발견할 수 있다. 일반 PAL-A(220) 코드는, 고정된 위치들 내에 배치된 벡터들, 제1의 FIT 포인터(210) 및 제2의 FIT 포인터(212)에 의해 제1의 FIT(224) 및 제2의 FIT(234)의 엔트리 지점들을 알고 있다. 프로세서 상에서 실행되는 일반 PAL-A(220)는 이러한 FIT 포인터들을 사용하여 FIT의 위치를 정한 후 이어서 이 FIT를 사용하여 기타 소프트웨어 모듈들의 위치를 알아내고 확인할 수 있다. 예를 들어, 타입 1 프로세서는 제1의 FIT 포인터(210)를 사용하여 제1의 FIT(224)의 위치를 발견할 수 있다. 그 후 타입 1 프로세서는 제1의 FIT(224) 내의 위치, 사이즈, 체크섬(checksum) 및 다른 파라미터들을 사용하여 제1의 특정 PAL-A 타입 1(230)의 위치를 알아내고 검사한다. 타입 1 프로세서가 제1의 특정 PAL-A 타입 1(230)의 위치를 알아내거나 확인할 수 없으면, 제2의 FIT 포인터(212) 및 제2의 FIT(234)를 사용하여 제2의 특정 PAL-A 타입 1(240)의 위치를 알아내고 검사할 수 있다.
타입 1 프로세서가 제1의 특정 PAL-A 타입 1(230) 또는 제2의 특정 PAL-A 타입 1(240)중 어느 하나의 위치를 알아내고 확인하면, 타입 1 프로세서는 그 후 SAL-A의 위치를 알아내고 검사하려고 할 수 있다. 일반 PAL-A(220)은 제1의 특정 PAL-A 타입 1(230) 또는 제2의 특정 PAL-A 타입 1(240)중 어느 하나의 엔트리 지점의 위치를 알아내고, 그 실행을 시작한다. 그 후 제1의 특정 PAL-A 타입 1(230) 또는 제2의 특정 PAL-A 타입 1(240)중 어느 하나는, 다음에 제1의 특정 SAL-A(246) 또는 제2의 특정 SAL-A(260)중 어느 하나와 그 자신을 확인하는 일반 SAL-A(222)의 엔트리 지점의 위치를 알아내고, 그에 대한 제어를 핸드오프한다. 일 실시예에서는, 타입 1 프로세서는 제1의 FIT 포인터(210) 및 제1의 FIT(224)를 사용하여 제1의 특정 SAL-A(246)의 위치를 알아내고 검사한다. 타입 1 프로세서가 제1의 특정 SAL-A(246)의 위치를 알아내고 확인할 수 없으면, 그 후, 타입 1 프로세서는 제2의 FIT 포인터(212) 및 제2의 FIT(234)를 사용하여 제2의 특정 SAL-A(260)의 위치를 알아내고 검사할 수 있다.
초기화 또는 복구에 필요한 PAL 및 SAL의 이러한 부분들의 위치를 알아내고 확인한 후, 프로세서에서 실행되는 일반 SAL-A(222)은 그 프로세서에 관한 프로세서 헬스 상태를 결정할 수 있다. 헬스 상태의 산출은 체크섬을 포함하여 다양한 펌웨어 유효성 검사들에 기초하고, 또한 일반 SAL-A(222)에 대한 제어의 핸드오프시 특정 PAL-A에 의해 제공되는 핸드오프 상태 코드에 기초하여 일반 SAL-A(222)에 의해 수행될 수 있다. 프로세서 헬스 상태는, 만족스러운 헬스 상태를 소유하기 위해 펌웨어 컴포넌트들의 어떤 조합이 결정되느냐에 따라 등급이 매겨질 수도 있다. 일 실시예에서는, 제1의 특정 SAL-A 및 제1의 특정 PAL-A의 카피가 발견되고 확인된다면, 프로세서 헬스 상태가 더 높다고 결정될 수 있다. 제2의 특정 SAL-A 및 제2의 특정 PAL-A의 카피가 발견되고 확인되면 다소 낮은 프로세서 헬스 상태가 결정될 수 있다. 제1의 특정 PAL-A 및 제2의 특정 SAL-A, 또는 제2의 특정 PAL-A 및 제1의 특정 SAL-A의 카피만이 발견되고 확인된다면, 더 낮은 프로세서 헬스 상 태가 결정될 수 있다. 마지막으로 특정 PAL-A 또는 특정 SAL-A 중 어느 하나의 카피도 발견되고 확인되지 않는다면 최저 또는 "치명적인" 프로세서 헬스 상태가 결정될 수 있다.
이제 도 3을 참조하면, 본 발명의 일 실시예에 따른 컴포넌트간 메시징 도면이 도시된다. 일 실시예에서는, 메시지들은 각각 IPI(inter-processor interrupt)에 운반될 수 있다. 프로세서들의 셀프 테스트들을 개시한 리세팅 이벤트 후에, 프로세서들은 인터럽트들을 디스에이블할 수 있다. 인터럽트들이 프로세서에 의해 디스에이블되는 경우 또는 프로세서가 "폴링된(polled)" 인터럽트 모드에 있는 경우, 그 프로세서에 IPI를 송신함으로써 여전히 그 프로세서의 IRR에 벡터를 기입할 수 있다. 이 경우, 프로세서의 IRR 내에 축적된 벡터들이 메시지 송신자의 LID, 상대적인 헬스값, 또는 기타 데이터를 나타낼 수 있다. 다른 실시예들에서는, 데이터 버스 상에 다중화된 특별한 신호들을 가짐으로써 전용 하드웨어 프로세서간 신호와 같은 메시지를 운반하는 다른 수단이 사용될 수 있다. 도 3의 실시예에서는, 3개의 프로세서들, CPU A(302), CPU B(304), 및 CPU C(306)이 도시되지만, 다른 실시예들에서는 보다 많거나 적은 프로세서가 이 프로세스에 참가할 수 있다. 리세팅 이벤트 후에, 3개의 프로세서들, CPU A(302), CPU B(304), 및 CPU C(306) 각각은 셀프 테스트들을 수행한다. 일 실시예에서는, 셀프 테스트들은 도 2와 관련하여 상술한 프로세서 헬스 상태의 결정을 포함할 수 있다. 각 프로세서가 자신의 프로세서 헬스 상태를 결정하면, 가장 이용가능한 프로세서 헬스 상태를 갖는 프로세서들만이 부팅 동작을 계속하도록 하는 것이 바람직할 수 있다. 다른 실시 예들에서는, 성능 요구조건에 따라, 수용가능한 프로세서 헬스 상태를 갖는 가장 큰 그룹이 부팅 동작들을 계속하도록 하는 것이 바람직하게 될 수 있다.
도 3의 예에서는, 모든 3개의 프로세서들이 치명적이지 않은 프로세서 헬스 상태를 결정한다. 각 프로세서는 우선 마스터라고 가정하고 스스로 마스터 LID를 할당한다. 이 단계는 체크-인 벡터 통신(check-in vector communications)이 소실되지 않는다는 것을 보장하기 위해 요구된다. 그 후 각각은 이러한 결정에 후속하여 칩셋(308)의 BOFL 레지스터(310)를 판독한다. 이러한 CPU B(304)의 예에서, 가장 먼저 자신의 프로세서 헬스 상태를 결정하는 프로세서는, 리세팅 이벤트에 후속하여 가장 먼저 BOFL 레지스터(310)로부터 BOFL 레지스터 판독(312)을 수행한다. 따라서 CPU B(304)는 마스터가 되고 프로세서간 통신용 식별자로서 마스터 LID를 계속 사용한다. 이 예에서, CPU A(302)는 그의 프로세서 헬스 상태를 결정하는 두 번째 프로세서로서, 두 번째로 BOFL 레지스터 판독(314)을 수행한다. 따라서 CPU A(302)는 슬레이브가 되고 프로세서간 통신용 식별자로서 고유의 비마스터(non-master) LID(슬레이브 1 LID)를 사용한다. 마지막으로, 이 예에서는, CPU C(306)은 그의 프로세서 헬스 상태를 결정하는 세 번째 프로세서로서, 세 번째로 BOFL 레지스터 판독(316)을 수행한다. 따라서, CPU C(306)는 슬레이브로 되고 프로세서간 통신용 식별자로서 고유의 비마스터 LID(슬레이브 2 LID)를 사용한다.
프로세서가 슬레이브라고 결정하면, 고유의 슬레이브 LID를 산출하고, 자신의 LID를 나타내는 체크인 메시지(check-in message)를 미리 결정된 마스터 LID를 사용하는 프로세서로 송신하도록 진행한다. 일 실시예에서는, 고유의 슬레이브 LID들은 PAL로부터 SAL로 전달되는 지리적으로 고유한 식별자들을 사용함으로써 산출될 수 있다. 일 실시예에서 PAL은 물리적 프로세서 패키지 상의 하나 이상의 핀들로부터 판독된 값들로부터 이러한 식별자들을 결정할 수 있다. 도 3의 예에서는, CPU A(302) 및 CPU C(306)은 각각 그들의 체크인 메시지(320, 322)를 CPU B(304)로 송신한다. 일 실시예에서는, CPU B(304)는 체크인 메시지를 송신한 프로세서에 대해 대응하는 헬스 요청 메시지로 체크인 메시지의 수신에 즉시 응답할 수 있다. 다른 실시예들에서는, CPU B(304)는 미리 결정된 시간을 대기하여 헬스 요청 메시지들로 응답하기 전에 모든 체크인 메시지들을 수신할 수 있다. 도 3의 예에 있어서, CPU B(304)는 헬스 요청 메시지(330, 332)를 CPU A(302) 및 CPU C(306)에 각각 전송한다. 그 후 CPU A(302) 및 CPU C(306)은 그들의 프로세서 헬스 상태의 카피를 각각 헬스 응답 메시지(340, 342)의 형태로 CPU B(304)로 전송한다. 다른 실시예에서는, 실제 헬스 상태는 특정 헬스 상태값들과 미리 정의된 관계를 갖는 벡터들로 대체될 수 있다.
이러한 CPU B(304) 예에서는, 마스터 LID를 갖는 프로세서가 모든 응답하는 프로세서들의 프로세서 헬스 상태를 수신하면, 가장 높게 등급이 매겨진 이용가능한 프로세서 헬스 상태를 결정할 수 있다. 이러한 그룹의 공통 프로세서 헬스 상태는 그룹 헬스 상태라고 지칭될 수 있다. 다른 실시예들에서, 성능이 이슈가 될 수 있는 경우, 결정된 프로세서들의 그룹을 수용가능한 프로세서 헬스 상태를 갖는 가장 큰 수의 프로세서들을 갖는 그룹으로 대신할 수 있다. 어느 하나의 실시예에서는, 이러한 CPU B(304)의 예에서 마스터 LID를 갖는 프로세서는 그 후 모든 슬레 이브 프로세서 및 그 자신에게도 해제 세마포어 메시지(release semaphore message)를 송신한다. 해제 세마포어는 그룹 헬스 상태의 카피를 포함할 수 있다. 다른 실시예들에서는, 실제 그룹 헬스 상태가 그룹 헬스 상태와 미리 정의된 관계를 갖는 벡터로 대체될 수 있다.
도 3의 예에서는, CPU B(304)는 해제 세마포어(350)를 CPU A(302)로, 해제 세마포어(352)를 CPU C(306)로, 해제 세마포어(354)를 그 자신에게로 송신한다. 그 후 각 프로세서는 대응하는 해제 세마포어에 의해 표시되는 그룹 헬스 상태를 자신의 프로세서 헬스 상태와 비교한다. 일치하면, 해당 프로세서는 부팅 동작을 계속한다. 그러나, 일치하지 않으면, 그 후 해당 프로세서가 정지하거나 그렇지 않으면 비활성 상태로 되고, 부팅 동작을 계속하지 않는다.
이제 도 4를 참조하면, 흐름도는 본 발명의 일 실시예에 따른, 로컬 프로세서 헬스 상태의 유도(derivation)를 도시한다. 다른 실시예들에서, 기타 펌웨어의 테스트들, 하드웨어의 테스트들, 또는 그들의 몇몇 조합을 수행하여 또 다른 형태의 로컬 프로세서 헬스 상태를 산출할 수 있다. 도 4의 프로세스는, 리세팅 이벤트 직후에 PAL이 제어를 획득하는 블록 410에서 시작하고, 블록 412에서, PAL 핸드오프 상태를 산출하고 그것을 SAL이 사용할 레지스터 내에 저장한다. 그 후 PAL은 SAL에 대한 제어를 핸드오프한다. PAL은 이러한 핸드오프 상태를 복구 검사(recovery check)로의 진입시 제공할 수 있는데, 이것은 PAL이 현재의 프로세서와 호환가능한지 또는 프로세서가 충분히 기능하는지를 결정하는 것을 포함할 수 있다. 그 후 블록 414에서 SAL은 이전에 저장된 PAL 핸드오프 상태를 검사한다. PAL 핸드오프 상태는 SAL에 의해 수행되는 추가의 테스트들과 함께 사용되어 복합 로컬 헬스(composite local health)를 산출한다. PAL 핸드오프 상태는 다수의 가능한 에러들에 대한 정보를 전달할 수 있다. 일 실시예에서는, 가능한 에러들은 다음의 4가지 상태의 카테고리 그룹, 즉 제1의 펌웨어 카피를 이용하는 통상 동작; 제2의 펌웨어 카피를 이용하는 장애극복(failover) 동작; 비용장성(non-redundant) 또는 중요하지 않은 펌웨어 컴포넌트들에서의 고장(failure); 및 치명적인 고장과 상관될 수 있다.
그 후 블록 418에서, 제1의 FIT 포인터 및 제2의 FIT 포인터의 범위 체크(bounds check)가 수행될 수 있다. 이것은, 잠재적으로 시스템 반응없음(system hang) 상태로 될 수 있는 메모리 어드레스 공간 내의 보호, 또는 예비 영역들에 대한 우발적인 액세스를 방지하기 위해 필요할 수 있다. 블록 422에서, 제1의 FIT 및 제2의 FIT에 대해 체크섬 테스트가 수행될 수 있다. 이러한 테스트들에 의해 반환되는 체크섬들은 손상된 코드의 실행을 방지하거나 손상된 플래시 테이블들의 탐색을 방지하는데 사용될 수 있다. 그 후 블록 426에서, 제1의 FIT 및 제2의 FIT는 대응하는 제1의 특정 SAL-A 및 제2의 특정 SAL-A가 각각 존재하는지의 여부를 판정하기 위해 검사될 수 있다. 이러한 테스트는, 임의의 필요한 SAL-A 테스트들을 지원하는 적합한 펌웨어의 존재를 보장할 수 있다. 그 후 블록 430에서는, 블록 426에서 검출된 특정 SAL-A의 카피들에 대해 체크섬 테스트를 수행할 수 있다. 이러한 테스트들에 의해 반환되는 체크섬들은 손상된 코드의 실행을 방지하거나 손상된 플래시 테이블들의 탐색을 방지하는데 다시 사용될 수 있다.
블록 434에서 선행하는 블록들의 결과를 사용하여 복합 로컬 프로세서 헬스 상태를 형성할 수 있다. 일 실시예에서는, 5가지 레벨의 프로세서 헬스 상태가 유도될 수 있다. 다른 실시예들에서는, 기타 레벨의 프로세서 헬스 상태가 유도될 수 있다. 최상의 프로세서 헬스 상태는, 유효한 제1의 특정 PAL-A 및 유효한 제1의 특정 SAL-A가 발견되는 경우에 결정될 수 있다. 두번째 최상의 프로세서 헬스 상태는 유효한 제2의 특정 PAL-A 및 유효한 제2의 특정 SAL-A만이 발견되는 경우에 결정될 수 있다. 세번째 촤상의 프로세서 헬스 상태는 유효한 제1의 특정 PAL-A 및 유효한 제2의 특정 SAL-A만이 발견되는 경우에 결정될 수 있다. 네번째 최상의 프로세서 헬스 상태는 유효한 제2의 특정 PAL-A 및 유효한 제1의 특정 SAL-A만이 발견되는 경우에 결정될 수 있다. 마지막으로 최악의 프로세서 헬스 상태는 PAL-A 및 SAL-A의 유효 조합이 발견되지 않는 경우에 결정될 수 있고, 다른 심각한 에러 조건들에 의해 결정될 수도 있다.
이제 도 5를 참조하면, 흐름도는 본 발명의 일 실시예에 따른 양호한 프로세서(healthy processor)들의 선택 및 초기화를 도시한다. 시스템 내의 각 프로세서는 도 5의 프로세스를 수행할 수 있다. 프로세스는 블록 510에서 리세팅 이벤트시 시작된다. 로컬 프로세서 헬스 상태를 결정하면, 프로세서는 자신에게 마스터 LID를 할당하여 후속 체크인 이벤트들이 소실되지 않는다는 것을 보장한다. 그 후 프로세서는 블록 514에서 BOFL 레지스터를 판독한다. 그 후 판정 블록 518에서, 프로세서는, BOFL로부터 판독된 값에 기초하여 마스터 프로세서가 되었는지를 판정한다. 그렇다면, 프로세스는 YES 경로를 통해 판정 블록 518을 탈출하고, 프로세서 는 체크인 타임아웃 기간을 개시한다. 판정 블록 522에서, 프로세스는 타임 아웃 기간이 종료하였는지를 판정한다. 그렇지 않으면, 그 후 프로세스는 NO 경로를 통해 판정 블록 522를 탈출하고, 프로세서는 블록 526에서 (존재할 경우) 존재하는 임의의 체크인 메시지를 수신한다. 프로세서는 체크인 메시지의 송신자에 대응하는 LID들을 결정한다. 블록 530에서, 프로세서는 대응하는 슬레이브 프로세서로 헬스 요청 메시지를 전송함으로써 블록 526에서 발견된 임의의 체크인 메시지들에 응답한다. 그 후 프로세스는 판정 블록 522로 리턴한다. 타임 아웃 기간이 종료하면, 프로세스는 YES 경로를 통해 판정 블록 522를 탈출한다. 블록 534에서, 프로세서는 그룹 헬스 상태를 결정하고 그룹 헬스 상태를 포함하는 메시지를 수신된 체크인 메시지들로부터 식별된 모든 LID들로 전송한다. 그 후 프로세서는, 판정 블록 538에서, 그룹 헬스 상태가 자신의 프로세서 헬스 상태와 일치하는지를 판정한다. 그렇다면, 그 후 프로세스는 YES 경로를 통해 판정 블록 538을 탈출하고, 프로세서는 블록 540에서 부팅 동작들을 계속한다. 그러나, 그렇지 않으면, 그 후 프로세스는 NO 경로를 통해 판정 블록 538을 탈출하고, 프로세서는 블록 544에서 정지하거나 그렇지 않으면 비활성화된다.
그러나, 판정 블록 518에서 프로세서가 슬레이브 프로세서라고 결정하면, 프로세서는 NO 경로를 통해 판정 블록 518을 탈출한다. 그 후 프로세서는 자신에게 고유의 슬레이브 LID를 할당한다. 그 후 프로세서는 블록 550에서 자신의 LID 값을 나타내는 체크인 메시지를 마스터 LID를 갖는 프로세서로 송신한다. 그 후 프로세서는 블록 554에서 대응하는 헬스 요청 메시지를 대기 및 수신한다. 그 후 프 로세서는 블록 558에서 헬스 응답 메시지 내에 자신의 프로세서 헬스 상태를 송신한다. 프로세서는 블록 560에서 해제 세마포어 메시지를 대기 및 수신한다. 그 후 프로세서는 판정 블록 562에서, 자신의 프로세서 헬스 상태가 그룹 헬스 상태와 일치하는지를 결정한다. 그렇다면, 프로세스는 YES 경로를 통해 판정 블록 562를 탈출하고, 프로세서는 블록 566에서 부팅 동작을 계속한다. 그러나, 그렇지 않으면, 그 후 프로세스는 NO 경로를 통해 판정 블록 562를 탈출하고, 프로세서는 블록 544에서 정지하거나 그렇지 않으면 비활성화된다.
상기 명세서에서, 본 발명은 특정의 예시적인 실시예들을 참조하여 설명되었다. 그러나, 첨부된 청구범위에 개시되어 있는 발명의 폭넓은 정신 및 범위로부터 벗어나지 않고 각종 변경 및 변화가 이루어질 수 있음이 명백할 것이다. 따라서 명세서 및 도면은 제한적이라기 보다는 예시적인 것으로 간주되어야 한다.

Claims (57)

  1. 제1 프로세서;
    상기 제1 프로세서에서 실행되는 일반 펌웨어(generic firmware); 및
    제1 프로세서 특정 펌웨어(processor specific firmware)의 제1 카피(copy)
    를 포함하며,
    상기 제1 프로세서는, 상기 제1 프로세서 특정 펌웨어의 상기 제1 카피를 이용하여 제1 프로세서 헬스 상태(processor health status)를 결정하고, 이로써 시스템 내의 프로세서 그룹 중 가장 높은 이용가능한 프로세서 헬스 상태를 갖는 프로세서가 부팅 프로세스를 시도할 수 있게 하는, 시스템.
  2. 제1항에 있어서,
    상기 제1 프로세서 특정 펌웨어의 상기 제1 카피의 위치를 알아내기 위한(locate) 제1 테이블을 더 포함하는 시스템.
  3. 제2항에 있어서,
    상기 제1 프로세서 특정 펌웨어의 제2 카피 및 상기 제1 프로세서 특정 펌웨어의 상기 제2 카피의 위치를 알아내기 위한 제2 테이블을 더 포함하는 시스템.
  4. 제3항에 있어서,
    상기 제1 프로세서 헬스 상태는 상기 제1 테이블 및 상기 제2 테이블을 테스트함으로써 결정되는 시스템.
  5. 제3항에 있어서,
    상기 제1 프로세서 특정 펌웨어를 사용하는 제2 프로세서를 더 포함하는 시스템.
  6. 제5항에 있어서,
    상기 제2 프로세서는, 상기 제1 프로세서 특정 펌웨어의 상기 제1 카피 및 상기 제1 프로세서 특정 펌웨어의 상기 제2 카피를 사용하여 제2 프로세서 헬스 상태를 결정하는 시스템.
  7. 제6항에 있어서,
    상기 제1 프로세서는, 상기 제1 프로세서 헬스 상태 및 상기 제2 프로세서 헬스 상태를 사용하여 그룹 헬스 상태를 결정하는 시스템.
  8. 제7항에 있어서,
    상기 제1 프로세서는 상기 그룹 헬스 상태를 포함하는 제2 프로세서 해제 메시지(processor release massage)를 전송하는 시스템.
  9. 제4항에 있어서,
    제3 프로세서, 제3 프로세서 특정 펌웨어의 제1 카피, 및 상기 제3 프로세서 특정 펌웨어의 제2 카피를 더 포함하는 시스템.
  10. 제9항에 있어서,
    상기 제3 프로세서는, 상기 제3 프로세서 특정 펌웨어의 상기 제1 카피 및 상기 제3 프로세서 특정 펌웨어의 상기 제2 카피를 사용하여 제3 프로세서 헬스 상태를 결정하는 시스템.
  11. 제10항에 있어서,
    상기 제1 프로세서는, 상기 제1 프로세서 헬스 상태 및 상기 제3 프로세서 헬스 상태를 사용하여 그룹 헬스 상태를 결정하는 시스템.
  12. 제1 프로세서 헬스 상태를 결정하는 제1 프로세서;
    상기 제1 프로세서에 결합되어 제2 프로세서 헬스 상태를 결정하는 제2 프로세서; 및
    상기 제1 프로세서 및 상기 제2 프로세서에 결합된 하드웨어 세마포어 레지스터(hardware semaphore register)
    를 포함하고,
    상기 제1 프로세서 또는 상기 제2 프로세서 중 어느 하나 또는 양자 모두는, 상기 제1 프로세서 헬스 상태 및 상기 제2 프로세서 헬스 상태에 기초하여 부팅 프로세스를 시도하도록 동작하는, 시스템.
  13. 제12항에 있어서,
    상기 제1 프로세서는, 상기 제1 프로세서가 상기 제2 프로세서 이전에 상기 하드웨어 세마포어 레지스터로부터 판독하는 경우에 상기 제1 프로세서 헬스 상태 및 상기 제2 프로세서 헬스 상태를 사용하여 그룹 헬스 상태를 결정하는 시스템.
  14. 제13항에 있어서,
    상기 제1 프로세서는 상기 제2 프로세서에 상기 그룹 헬스 상태를 포함하는 해제 메시지(release message)를 전송하는 시스템.
  15. 제14항에 있어서,
    상기 제2 프로세서는, 상기 그룹 헬스 상태가 상기 제2 프로세서 헬스 상태에 대응하는 경우에 부팅 동작들을 계속하는 시스템.
  16. 제14항에 있어서,
    상기 제1 프로세서는 상기 하드웨어 세마포어 레지스터로부터 제1 값을 판독하고, 상기 제2 프로세서는 상기 하드웨어 세마포어 레지스터로부터 제2 값을 판독하는 시스템.
  17. 제16항에 있어서,
    상기 제1 프로세서는 제1 프로세서 인터럽트 요청 레지스터를 포함하고 상기 제2 프로세서는 제2 프로세서 인터럽트 요청 레지스터를 포함하며, 상기 제2 프로세서는 상기 제2 프로세서 헬스 상태를 상기 제1 프로세서 인터럽트 요청 레지스터 로 전송하는 시스템.
  18. 제17항에 있어서,
    상기 제1 프로세서는 상기 그룹 헬스 상태를 상기 제2 프로세서 인터럽트 요청 레지스터로 전송하는 시스템.
  19. 제1 프로세서 헬스 상태를 결정하는 단계;
    제2 프로세서 헬스 상태를 결정하는 단계;
    상기 제2 프로세서 헬스 상태를 제1 프로세서로 전송하는 단계;
    상기 제1 프로세서 헬스 상태 및 상기 제2 프로세서 헬스 상태로부터 그룹 헬스 상태를 결정하는 단계; 및
    상기 그룹 헬스 상태가 상기 제2 프로세서 헬스 상태에 대응하는 경우에 제2 프로세서가 부팅 동작들을 계속하도록 상기 제2 프로세서를 인에이블하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 제2 프로세서를 인에이블하는 상기 단계는 상기 그룹 헬스 상태를 상기 제2 프로세서로 전송하는 단계를 포함하는 방법.
  21. 제20항에 있어서,
    상기 제2 프로세서 헬스 상태를 전송하는 상기 단계는 헬스 상태 요청에 응답하는 방법.
  22. 제21항에 있어서,
    상기 제2 프로세서에 의해 하드웨어 세마포어 레지스터를 판독하기 전에 상기 제1 프로세서에 의해 상기 하드웨어 세마포어 레지스터를 판독하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서,
    상기 제1 프로세서에 의해 하드웨어 세마포어 레지스터를 판독하는 상기 단계는 제1 값을 수신하는 단계를 포함하는 방법.
  24. 제19항에 있어서,
    상기 제1 프로세서 헬스 상태를 결정하는 상기 단계는 일반 프로세서 추상화 계층(generic processor abstraction layer)을 사용하여 제1 펌웨어 인터페이스 테이블 및 제2 펌웨어 인터페이스 테이블을 검사하는 단계를 포함하는 방법.
  25. 제24항에 있어서,
    일반 프로세서 추상화 계층을 사용하는 상기 단계는 제1 프로세서 특정 프로세서 추상화 계층의 제1 카피 및 제1 프로세서 특정 프로세서 추상화 계층의 제2 카피를 검사하는 단계를 포함하는 방법.
  26. 제25항에 있어서,
    상기 제1 프로세서 헬스 상태를 결정하는 상기 단계는, 제1 프로세서 특정 프로세서 추상화 계층의 상기 제1 카피가 시스템 추상화 계층의 연관된 제1 카피를 가지는지를 결정하는 단계를 포함하고, 또한 제1 프로세서 특정 프로세서 추상화 계층의 상기 제2 카피가 시스템 추상화 계층의 연관된 제2 카피를 가지는지를 결정하는 단계를 포함하는 방법.
  27. 제19항에 있어서,
    상기 제2 프로세서 헬스 상태를 제1 프로세서에 전송하는 상기 단계는 프로세서간 인터럽트(inter-processor interrupt)를 상기 제1 프로세서에 전송하는 단계를 포함하는 방법.
  28. 제27항에 있어서,
    프로세서간 인터럽트를 상기 제1 프로세서로 전송하는 상기 단계는, 상기 제1 프로세서의 인터럽트들이 디스에이블되는 경우에 상기 제2 프로세서 헬스 상태를 제1 프로세서 인터럽트 요청 레지스터로 전송하는 단계를 포함하는 방법.
  29. 제28항에 있어서,
    그룹 헬스 상태를 결정하는 상기 단계는 상기 제1 프로세서 인터럽트 요청 레지스터로부터 상기 제2 프로세서 헬스 상태를 검색하는 단계를 포함하는 방법.
  30. 제29항에 있어서,
    상기 제2 프로세서에게 제2 프로세서 해제 메시지를 전송함으로써 상기 제2 프로세서가 부팅 동작들을 계속하도록 상기 제2 프로세서를 인에이블하는 단계를 더 포함하는 방법.
  31. 제30항에 있어서,
    상기 제2 프로세서를 인에이블하는 상기 단계는, 상기 제2 프로세서 해제 메시지가 상기 제2 프로세서 헬스 상태와 일치하는 상기 그룹 헬스 상태를 포함하는 경우에 상기 제2 프로세서를 인에이블하는 방법.
  32. 제1 프로세서 헬스 상태를 결정하는 수단;
    제2 프로세서 헬스 상태를 결정하는 수단;
    상기 제2 프로세서 헬스 상태를 제1 프로세서로 전송하는 수단;
    상기 제1 프로세서 헬스 상태 및 상기 제2 프로세서 헬스 상태로부터 그룹 헬스 상태를 결정하는 수단; 및
    상기 그룹 헬스 상태가 상기 제2 프로세서 헬스 상태에 대응하는 경우에 제2 프로세서가 부팅 동작들을 계속하도록 상기 제2 프로세서를 인에이블하는 수단
    를 포함하는 장치.
  33. 제32항에 있어서,
    상기 제2 프로세서를 인에이블하는 상기 수단은 상기 그룹 헬스 상태를 상기 제2 프로세서로 전송하는 수단을 포함하는 장치.
  34. 제33항에 있어서,
    상기 제2 프로세서 헬스 상태를 전송하는 상기 수단은 헬스 상태 요청에 응답하는 장치.
  35. 제34항에 있어서,
    상기 제2 프로세서에 의해 하드웨어 세마포어 레지스터를 판독하기 전에 상기 제1 프로세서에 의해 상기 하드웨어 세마포어 레지스터를 판독하는 수단을 더 포함하는 장치.
  36. 제35항에 있어서,
    상기 제1 프로세서에 의해 하드웨어 세마포어 레지스터를 판독하는 상기 수단은 제1 값을 수신하는 수단을 포함하는 장치.
  37. 제32항에 있어서,
    상기 제1 프로세서 헬스 상태를 결정하는 상기 수단은 일반 프로세서 추상화 계층을 사용하여 제1 펌웨어 인터페이스 테이블 및 제2 펌웨어 인터페이스 테이블을 검사하는 수단을 포함하는 장치.
  38. 제37항에 있어서,
    일반 프로세서 추상화 계층을 사용하여 제1 펌웨어 인터페이스 테이블 및 제2 펌웨어 인터페이스 테이블을 검사하는 상기 수단은, 제1 프로세서 특정 프로세서 추상화 계층의 제1 카피 및 제1 프로세서 특정 프로세서 추상화 계층의 제2 카피를 검사하는 수단을 포함하는 장치.
  39. 제38항에 있어서,
    상기 제1 프로세서 헬스 상태를 결정하는 상기 수단은, 제1 프로세서 특정 프로세서 추상화 계층의 상기 제1 카피가 시스템 추상화 계층의 연관된 제1 카피를 가지는지를 결정하는 수단을 포함하고, 또한 제1 프로세서 특정 프로세서 추상화 계층의 상기 제2 카피가 시스템 추상화 계층의 연관된 제2 카피를 가지는지를 결정하는 수단을 포함하는 장치.
  40. 제39항에 있어서,
    상기 제2 프로세서 헬스 상태를 제1 프로세서에 전송하는 상기 수단은 프로세서간 인터럽트를 상기 제1 프로세서에 전송하는 수단을 포함하는 장치.
  41. 제40항에 있어서,
    프로세서간 인터럽트를 상기 제1 프로세서로 전송하는 상기 수단은, 상기 제1 프로세서의 인터럽트들이 디스에이블되는 경우에 상기 제2 프로세서 헬스 상태를 제1 프로세서 인터럽트 요청 레지스터로 전송하는 수단을 포함하는 장치.
  42. 제41항에 있어서,
    그룹 헬스 상태를 결정하는 상기 수단은 상기 제1 프로세서 인터럽트 요청 레지스터로부터 상기 제2 프로세서 헬스 상태를 검색하는 수단을 포함하는 장치.
  43. 제42항에 있어서,
    상기 제2 프로세서에게 제2 프로세서 해제 메시지를 전송함으로써 상기 제2 프로세서가 부팅 동작들을 계속하도록 상기 제2 프로세서를 인에이블하는 수단을 더 포함하는 장치.
  44. 제43항에 있어서,
    상기 제2 프로세서를 인에이블하는 상기 수단은, 상기 제2 프로세서 해제 메시지가 상기 제2 프로세서 헬스 상태와 일치하는 상기 그룹 헬스 상태를 포함하는 경우에 상기 제2 프로세서를 인에이블하는 수단을 포함하는 장치.
  45. 제1 프로세서 헬스 상태를 결정하는 단계;
    제2 프로세서 헬스 상태를 결정하는 단계;
    상기 제2 프로세서 헬스 상태를 제1 프로세서로 전송하는 단계;
    상기 제1 프로세서 헬스 상태 및 상기 제2 프로세서 헬스 상태로부터 그룹 헬스 상태를 결정하는 단계; 및
    상기 그룹 헬스 상태가 상기 제2 프로세서 헬스 상태에 대응하는 경우에 제2 프로세서가 부팅 동작들을 계속하도록 상기 제2 프로세서를 인에이블하는 단계
    를 포함하는 프로세스를 기계가 실행할 수 있는 프로그램을 포함하는 컴퓨터 판독가능 매체.
  46. 제45항에 있어서,
    상기 제2 프로세서를 인에이블하는 상기 단계는 상기 그룹 헬스 상태를 상기 제2 프로세서로 전송하는 단계를 포함하는 컴퓨터 판독가능 매체.
  47. 제46항에 있어서,
    상기 제2 프로세서 헬스 상태를 전송하는 상기 단계는 헬스 상태 요청에 응답하는 컴퓨터 판독가능 매체.
  48. 제47항에 있어서,
    상기 제2 프로세서에 의해 하드웨어 세마포어 레지스터를 판독하기 전에 상기 제1 프로세서에 의해 상기 하드웨어 세마포어 레지스터를 판독하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  49. 제48항에 있어서,
    상기 제1 프로세서에 의해 하드웨어 세마포어 레지스터를 판독하는 상기 단계는 제1 값을 수신하는 단계를 포함하는 컴퓨터 판독가능 매체.
  50. 제45항에 있어서,
    상기 제1 프로세서 헬스 상태를 결정하는 상기 단계는, 일반 프로세서 추상화 계층을 사용하여 제1 펌웨어 인터페이스 테이블 및 제2 펌웨어 인터페이스 테이블을 검사하는 단계를 포함하는 컴퓨터 판독가능 매체.
  51. 제50항에 있어서,
    일반 프로세서 추상화 계층을 사용하여 제1 펌웨어 인터페이스 테이블 및 제2 펌웨어 인터페이스 테이블을 검사하는 상기 단계는, 제1 프로세서 특정 프로세서 추상화 계층의 제1 카피 및 제1 프로세서 특정 프로세서 추상화 계층의 제2 카피를 검사하는 단계를 포함하는 컴퓨터 판독가능 매체.
  52. 제51항에 있어서,
    상기 제1 프로세서 헬스 상태를 결정하는 상기 단계는, 제1 프로세서 특정 프로세서 추상화 계층의 상기 제1 카피가 시스템 추상화 계층의 연관된 제1 카피를 가지는지를 결정하는 단계를 포함하고, 또한 제1 프로세서 특정 프로세서 추상화 계층의 상기 제2 카피가 시스템 추상화 계층의 연관된 제2 카피를 가지는지를 결정하는 단계를 포함하는 컴퓨터 판독가능 매체.
  53. 제45항에 있어서,
    상기 제2 프로세서 헬스 상태를 제1 프로세서에 전송하는 상기 단계는 프로세서간 인터럽트를 상기 제1 프로세서에 전송하는 단계를 포함하는 컴퓨터 판독가능 매체.
  54. 제53항에 있어서,
    프로세서간 인터럽트를 상기 제1 프로세서로 전송하는 상기 단계는, 상기 제1 프로세서의 인터럽트들이 디스에이블되는 경우에 상기 제2 프로세서 헬스 상태를 제1 프로세서 인터럽트 요청 레지스터로 전송하는 단계를 포함하는 컴퓨터 판독가능 매체.
  55. 제54항에 있어서,
    그룹 헬스 상태를 결정하는 상기 단계는 상기 제1 프로세서 인터럽트 요청 레지스터로부터 상기 제2 프로세서 헬스 상태를 검색하는 단계를 포함하는 컴퓨터 판독가능 매체.
  56. 제55항에 있어서,
    상기 제2 프로세서에게 제2 프로세서 해제 메시지를 전송함으로써 상기 제2 프로세서가 부팅 동작들을 계속하도록 인에이블하는 단계를 더 포함하는 컴퓨터 판 독가능 매체.
  57. 제56항에 있어서,
    상기 제2 프로세서를 인에이블하는 상기 단계는, 상기 제2 프로세서 해제 메시지가 상기 제2 프로세서 헬스 상태와 일치하는 상기 그룹 헬스 상태를 포함하는 경우에 상기 제2 프로세서를 인에이블하는 컴퓨터 판독가능 매체.
KR1020047020183A 2002-06-11 2003-05-09 시스템을 부팅하기 위해 프로세서들 및 관련 펌웨어의양호한 그룹을 결정하는 시스템 및 방법 KR100828755B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/171,210 US7350063B2 (en) 2002-06-11 2002-06-11 System and method to filter processors by health during early firmware for split recovery architecture
US10/171,210 2002-06-11
PCT/US2003/014877 WO2003104994A2 (en) 2002-06-11 2003-05-09 System and method to filter processors by health during early firmware for split recovery architecture

Publications (2)

Publication Number Publication Date
KR20050016545A KR20050016545A (ko) 2005-02-21
KR100828755B1 true KR100828755B1 (ko) 2008-05-09

Family

ID=29711058

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047020183A KR100828755B1 (ko) 2002-06-11 2003-05-09 시스템을 부팅하기 위해 프로세서들 및 관련 펌웨어의양호한 그룹을 결정하는 시스템 및 방법

Country Status (9)

Country Link
US (1) US7350063B2 (ko)
JP (2) JP4263690B2 (ko)
KR (1) KR100828755B1 (ko)
CN (1) CN100498728C (ko)
AU (1) AU2003241420A1 (ko)
DE (1) DE10392810T5 (ko)
HK (1) HK1096744A1 (ko)
TW (1) TWI225204B (ko)
WO (1) WO2003104994A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036421B2 (en) 2018-09-17 2021-06-15 SK Hynix Inc. Apparatus and method for retaining firmware in memory system

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0308708D0 (en) * 2003-04-15 2003-05-21 British Telecomm A computer system
US7673125B2 (en) * 2003-06-26 2010-03-02 Hewlett-Packard Development Company, L.P. Resetting multiple cells within a partition of a multiple partition computer system
US7434102B2 (en) * 2004-12-29 2008-10-07 Intel Corporation High density compute center resilient booting
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7971098B2 (en) * 2008-03-24 2011-06-28 Globalfoundries Inc. Bootstrap device and methods thereof
US8046631B2 (en) * 2009-04-29 2011-10-25 Lsi Corporation Firmware recovery in a raid controller by using a dual firmware configuration
US8364775B2 (en) 2010-08-12 2013-01-29 International Business Machines Corporation High availability management system for stateless components in a distributed master-slave component topology
CN102214114B (zh) * 2011-06-24 2014-06-04 深圳市江波龙电子有限公司 一种双cpu系统客户机程序的升级方法及系统
US9015455B2 (en) * 2011-07-07 2015-04-21 Intel Corporation Processsor integral technologies for BIOS flash attack protection and notification
US8849647B2 (en) 2011-10-19 2014-09-30 Lsi Corporation Dual-firmware for next generation emulation
CN103279700A (zh) * 2013-06-08 2013-09-04 北京时代奥视数码技术有限公司 液晶监视器的固件版本验证方法和液晶监视器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP0747819A1 (en) * 1995-06-06 1996-12-11 International Business Machines Corporation Disk drive incompatible firmware recovery
US5904733A (en) 1997-07-31 1999-05-18 Intel Corporation Bootstrap processor selection architecture in SMP systems
US5918047A (en) 1996-01-26 1999-06-29 Texas Instruments Incorporated Initializing a processing system
US6842857B2 (en) 2001-04-12 2005-01-11 International Business Machines Corporation Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0821025B2 (ja) * 1986-09-29 1996-03-04 株式会社東芝 マルチプロセッサシステムおよび同システムの初期化方法
JPH03269759A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd マルチプロセッサ制御方式
JPH05324370A (ja) * 1992-05-21 1993-12-07 Yamatake Honeywell Co Ltd プログラム自己診断方法
JP3447404B2 (ja) * 1994-12-08 2003-09-16 日本電気株式会社 マルチプロセッサシステム
US5724527A (en) * 1995-12-28 1998-03-03 Intel Corporation Fault-tolerant boot strap mechanism for a multiprocessor system
US5790850A (en) 1996-09-30 1998-08-04 Intel Corporation Fault resilient booting for multiprocessor computer systems
US6058475A (en) * 1997-09-22 2000-05-02 Ncr Corporation Booting method for multi-processor computer
JPH11224244A (ja) * 1998-02-09 1999-08-17 Nec Corp 情報処理装置及びそのシステム構成情報の自動生成方法及び記録媒体
US6381693B2 (en) * 1998-12-31 2002-04-30 Intel Corp. Arrangements having firmware support for different processor types
US6601165B2 (en) 1999-03-26 2003-07-29 Hewlett-Packard Company Apparatus and method for implementing fault resilient booting in a multi-processor system by using a flush command to control resetting of the processors and isolating failed processors
US6549961B1 (en) * 1999-10-27 2003-04-15 Infineon Technologies North America Corporation Semaphore access in a multiprocessor system
US6564348B1 (en) * 1999-11-04 2003-05-13 International Business Machines Corporation Method and apparatus for storing and using chipset built-in self-test signatures
JP3833117B2 (ja) * 2000-01-31 2006-10-11 富士通株式会社 サーバ決定方法及び装置
US6889341B2 (en) * 2002-06-28 2005-05-03 Hewlett-Packard Development Company, L.P. Method and apparatus for maintaining data integrity using a system management processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP0747819A1 (en) * 1995-06-06 1996-12-11 International Business Machines Corporation Disk drive incompatible firmware recovery
US5918047A (en) 1996-01-26 1999-06-29 Texas Instruments Incorporated Initializing a processing system
US5904733A (en) 1997-07-31 1999-05-18 Intel Corporation Bootstrap processor selection architecture in SMP systems
US6842857B2 (en) 2001-04-12 2005-01-11 International Business Machines Corporation Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036421B2 (en) 2018-09-17 2021-06-15 SK Hynix Inc. Apparatus and method for retaining firmware in memory system

Also Published As

Publication number Publication date
WO2003104994A3 (en) 2004-06-03
JP2008117401A (ja) 2008-05-22
DE10392810T5 (de) 2005-07-14
JP2005529406A (ja) 2005-09-29
JP4813442B2 (ja) 2011-11-09
US20030229775A1 (en) 2003-12-11
TWI225204B (en) 2004-12-11
JP4263690B2 (ja) 2009-05-13
CN1856772A (zh) 2006-11-01
US7350063B2 (en) 2008-03-25
AU2003241420A8 (en) 2003-12-22
HK1096744A1 (en) 2007-06-08
TW200405173A (en) 2004-04-01
KR20050016545A (ko) 2005-02-21
WO2003104994A2 (en) 2003-12-18
AU2003241420A1 (en) 2003-12-22
CN100498728C (zh) 2009-06-10

Similar Documents

Publication Publication Date Title
JP4813442B2 (ja) システム起動処理のための良好な状態のプロセッサグループ及び関連するファームフェアを決定するシステム及び方法
US6675324B2 (en) Rendezvous of processors with OS coordination
US6425094B1 (en) Diagnostic cage for testing redundant system controllers
US7627781B2 (en) System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor
US6571360B1 (en) Cage for dynamic attach testing of I/O boards
US20100313061A1 (en) Method and system for reliable exception handling in a computer system
US9372702B2 (en) Non-disruptive code update of a single processor in a multi-processor computing system
US7366948B2 (en) System and method for maintaining in a multi-processor system a spare processor that is in lockstep for use in recovering from loss of lockstep for another processor
CN112015599A (zh) 错误恢复的方法和装置
EP0683456B1 (en) Fault-tolerant computer system with online reintegration and shutdown/restart
US7502958B2 (en) System and method for providing firmware recoverable lockstep protection
US7536694B2 (en) Exception handling in a multiprocessor system
US20160292108A1 (en) Information processing device, control program for information processing device, and control method for information processing device
US9612915B2 (en) Flash memory-hosted local and remote out-of-service platform manageability
EP1703393B1 (en) Error notification method and apparatus for an information processing system carrying out mirror operation
KR20150075867A (ko) 부트로더 실행 방법 및 장치
US7624302B2 (en) System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor
US7069471B2 (en) System PROM integrity checker
CN118377661A (zh) 总线错误测试方法、装置、设备、存储介质及程序产品
JPS5952351A (ja) 命令再試行方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20120502

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee