KR20100038159A - 동기 제어 장치, 정보 처리 장치 및 동기 관리 방법 - Google Patents

동기 제어 장치, 정보 처리 장치 및 동기 관리 방법 Download PDF

Info

Publication number
KR20100038159A
KR20100038159A KR1020090093924A KR20090093924A KR20100038159A KR 20100038159 A KR20100038159 A KR 20100038159A KR 1020090093924 A KR1020090093924 A KR 1020090093924A KR 20090093924 A KR20090093924 A KR 20090093924A KR 20100038159 A KR20100038159 A KR 20100038159A
Authority
KR
South Korea
Prior art keywords
cpu
synchronization
arithmetic processing
unit
time
Prior art date
Application number
KR1020090093924A
Other languages
English (en)
Other versions
KR101121116B1 (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 KR20100038159A publication Critical patent/KR20100038159A/ko
Application granted granted Critical
Publication of KR101121116B1 publication Critical patent/KR101121116B1/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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)

Abstract

소정의 시간 내에 용장(冗長: redundant) CPU의 재(再) 동기가 이루어지지 않은 경우에는, 강제적으로 정상 CPU의 단독 운용으로 전환하여, 초기에 통상 운용 처리를 재개시키는 동기 제어 장치를 제공하는 것을 과제로 한다.
과제를 해결하기 위한 수단으로서, 전환/재동기 제어 회로(14)는, 어느 CPU(6)의 동기 늦음을 검출하면, 정상 CPU(6)에 인터럽트를 일으킨다. 그렇게 하면, 정상 CPU(6)는, 재동기 타이머 레지스터(timer register)(162)에 의한 경과 시간 계측을 개시시킨다. 그 후에, 전환/재동기 제어 회로(14)는, 전체 CPU에 대하여 리셋을 발행한다. 리셋된 각 CPU(6)는, 펌웨어(firmware)를 따라서 기동한다. 그 사이에, 재동기 타이머 레지스터(162)에 의해서 계측된 경과 시간이 상한 시간에 도달한 것이 타이머/상한 시간 비교 회로(161)에 의해 검출되면, 전환/재동기 제어 회로(14)는 이상(異常) CPU(6)를 정지시키고, 정상 CPU(6)만을 리셋시킨다.
Figure P1020090093924
용장 CPU, 이상 CPU, 정상 CPU, 전환/재동기 제어 회로, 재동기 타이머 레지스터, 타이머/상한 시간 비교 회로

Description

동기 제어 장치, 정보 처리 장치 및 동기 관리 방법{SYNCHRONIZATION CONTROL APPARATUS, INFORMATION PROCESSING APPARATUS, AND SYNCHRONIZATION MANAGEMENT METHOD}
본 발명은 복수의 연산 처리 회로가 용장화되어, 이들 복수의 연산 처리 회로를 동기 운전시키는 시스템에 있어서, 연산 처리 회로간의 동기 늦음이 발생했을 때에 재동기를 행하게 하는 동기 제어 장치, 이들 연산 처리 회로 및 동기 제어 장치를 포함하여 구성되는 정보 처리 장치, 및 동기 제어 장치에 의한 연산 처리 회로에 대한 동기 관리 방법에 관한 것이다.
근래에 대규모 미션크리티컬 서버 시스템(mission-critical server system}에서는, 하드웨어의 고장 등에 따라 시스템 전체가 정지하지 않도록, 하드웨어 구성을 용장화시키는 것이 일반적이다. 이 때문에, CPU(Central Processing Unit)에 대하여도, 동일 구성의 복수의 CPU를 미리 시스템에 조립해 두고, 상시, 이들 2개의 CPU에 대하여 동일한 처리를 동시에 실시시켜, 임의의 CPU로부터의 처리 결과를 외부출력하지만, 어느 CPU가 고장 났을 경우에는, 고장 난 상기 CPU를 시스템으로부터 절리(切籬)하는 한편, 정상인 나머지 한 개의 CPU로 처리를 속행시켜, 그 정 상인 CPU로부터의 처리 결과를 외부출력하는 용장 CPU의 기술이 개발되고 있다.
또한, 하드적인 고장이 아니라 소프트적인 에러에 따라 한쪽의 CPU의 처리만이 지연 내지 정지되고, 이에 따라 복수 CPU 사이의 동기 늦음이 발생할 경우도 있을 수 있다. 이러한 경우에는, 에러의 정도 여하에 따라서는, 이상이 생긴 CPU를 일단 정지시키고, 정상인 CPU의 내부 정보를 전자(前者) 내에서 재현(초기화)함으로써, 양쪽 CPU가 서로 동기한 상태(즉, 용장 구성)를 회복하는 것이 가능한 경우도 있을 수 있다.
그래서, 양쪽 CPU의 동기 늦음의 유무를 감시하고, 동기 늦음이 발생한 경우에, 고장이 생긴 CPU를 리셋 및 초기화함으로써 재동기시키는 재동기 처리를 실행하여, 재시도하는 동기 제어 장치가 필요하게 된다.
[특허 문헌 1] 일본국 특개2006-302289호 공보
[특허 문헌 2] 일본국 특개2005-285119호 공보
이러한 동기 제어 장치를 사용한 재동기 처리를 성공시키기 위해서는, 동기 늦음이 검출되고나서 재동기 처리 완료까지의 사이, 이상이 생긴 CPU는 물론, 정상인 CPU에 대하여도 전자(前者) 내에서 재현해야 할 내부 정보를 확정할 필요가 있으므로, 재동기를 위한 처리 이외를 행할 수 없게 된다. 따라서, 그 사이는 통상 운용 처리(예를 들면, 0S가 실시하려고 하고 있었던 처리)가 정지되는 것이 되므로, 재동기 처리에는, 너무 시간이 걸리게 해서는 안된다.
그러나, 종래의 동기 제어 장치에 의하면, 재동기 처리중에 양쪽 CPU 사이에 동기 늦음이 생겼을 경우에는, 재동기 처리를 반복하여 재시도하기 때문에, 총 재동기 처리의 시간이 길어지게 되고, 이 때문에, 통상 운용 처리가 정지하는 기간이 길어져 버린다고 하는 문제가 있었다.
이 점, 통상 운용 처리의 정지 시간이 길어지는 것을 제한하기 위하여, 재동기 처리를 재시도 가능한 회수의 상한값을 미리 설정하고, 실제의 재시도 회수가 그 상한값에 달하면, 이후의 재동기 처리의 재시도를 금지하고, 정상인 CPU만의 단독운용으로 전환하는 것도 생각된다.
그러나, 재동기 처리의 재시도의 개시로부터 동기 늦음이 재검출될 때까지의 시간폭은, 항상 일정한 것은 아니다. 예를 들면, 시스템 보드에 탑재되는 CPU의 수(용장 CPU의 조수(組數))에 따라, 정상 CPU의 내부 정보를 메모리에 퇴피시키는 처리나 CPU의 내부 정보를 복원하는 처리에 요하는 시간은 다르기 때문이다. 이 때문에, 재동기 가능 회수의 상한값의 설정에 의해, 통상 운용 정지 시간을 항상(예를 들면, 구성에 따르지 않고) 일정하게 하는 것이 곤란하여, 통상 운용에서 허용되는 정지 시간을 초과할 가능성이 있다.
본 안은 이상의 문제점을 감안하여 이루어진 것이며, 그 과제는, 재동기 처리의 실행 및 재시도를 위하여 통상 운용 처리가 정지하는 시간 바로 그것에 제한을 마련하고, 그 시간 내에 재동기가 이루어지지 않은 경우에는, 강제적으로 정상 CPU의 단독운용으로 전환하여, 초기에 통상 운용 처리를 재개시키는 것에 있다.
본 안이 적용된 동기 제어 장치는, 제 1 연산 처리 장치의 출력과 상기 제 2 연산 처리 장치의 출력을 비교함으로써, 상기 제 1 및 제 2 연산 처리 장치의 동기를 감시하고, 이에 의해, 상기 제 1 연산 처리 장치와 상기 제 2 연산 처리 장치의 출력이 일치하지 않는 것을 검출한 경우에는, 동기 늦음이 생긴 것으로 하여, 계수를 개시함으로써 경과 시간에 대응하는 계수 정보를 카운트업해 간다. 그리고 이러한 계수 정보와 소정의 타임 아웃 시간을 비교하고, 양자가 일치한 것을 검출하면, 동기 늦음이 발생한 연산 처리 장치를 정지시킴으로써, 정상인 연산 처리 장치의 단독운용으로 이행한다.
이러한 구성에 의해, 동기 제어 장치가, 재동기 처리를 개시하는 시점인 양쪽 연산 처리 장치의 출력이 일치하지 않는 것을 검출한 타이밍으로, 계수를 개시(경과 시간의 계측을 개시)하고, 계수 정보(경과 시간)가 타임 아웃 시간에 달한 시점에서, 재동기 처리의 재시도 회수 여하에 관계없이, 동기 늦음이 발생한 연산 처리 장치를 정지시킴으로써 재동기 처리의 속행을 중단하고, 정상인 연산 처리 장치의 단독운용으로 전환한다. 따라서, 단독운용되는 것으로 된 당해 정상인 연산 처리 장치에 의해, 통상 운용 처리를 확실히 조기 재개시키는 것이 가능하기 때문에, 통상 운용 처리에서 허용되는 정지 시간을 초과하는 것을 막는 것이 가능하다.
개시된 정보 처리 장치에 의하면, 재동기 처리의 실행 및 재시도를 위하여 통상 운용 처리가 정지하는 시간 바로 그것에 제한을 마련하고, 그 시간 내에 재동기가 이루어지지 않은 경우에는, 강제적으로 정상 CPU의 단독운용으로 전환하여, 초기에 통상 운용 처리를 재개시키는 것이 가능하다.
이하, 도면에 기초하여, 개시된 정보 처리 장치의 실시예인 서버 시스템을 설명한다.
<하드웨어 구성>
먼저, 당해 서버 시스템의 하드웨어 구성을 도 1 내지 도 3의 블록도를 참조하여 설명한다.
도 1은 당해 서버 시스템의 기본 구성을 나타낸 블록도이다. 이 도 1에 나타낸 바와 같이, 당해 서버 시스템은 복수의 시스템 보드(#O∼#n)(1)를 구비하는 멀티 프로세서 시스템으로 실현된다. 이들 복수의 시스템 보드(#O∼#n)(1)는, 글로벌 어드레스 크로스바(global address crossbar)(3) 및 글로벌 데이터 크로스바(4)를 통하여 서로 접속되어 있다. 더욱이 이들 글로벌 어드레스 크로스바(3) 및 글로벌 데이터 크로스바(4)에는, 동일한 같은 복수의 시리얼 넘버(#0∼#n)의 시스템 보드(#0∼#n)(1)에 각기 대응한 복수의 IO 유닛(#0∼#n)(2)에도 접속되어 있다.
이 글로벌 어드레스 크로스바(3)는, 각 시스템 보드(#0∼#n)(1)로부터 발행된 명령 및 명령의 대상이 되는 어드레스를 다른 시스템 보드(#0∼#n)(1) 및 IO 유닛(#0~#n)(2)에 대하여 중계하는 어드레스 중계 수단이다.
또한, 글로벌 데이터 크로스바(4)는 시스템 보드(#0∼#n)(1) 상호 간, IO 유닛(#0∼#n)(2) 상호 간, 및 시스템 보드(#0∼#n)(1)와 IO 유닛(#0∼#n)(2)과의 사이에서, 데이터를 중계하는 처리 수단인 있다.
더욱이, 각 시스템 보드(#0∼#n)(1) 및 IO 유닛(#0∼#n)(2)에는, 시스템 제어/관리 장치(5)가 접속되어 있다. 이 시스템 제어/관리 장치(5)는 시스템 관리자가 입력하는 제어 신호를 따라서, 각 시스템 보드(#0∼#n)(1)와 IO 유닛(#0∼#n)(2)이 구비하는 레지스터 군(그 상세에 대해서는, 도 2 및 도 3에 근거하여 후술한다)에 각종 설정 값을 설정하거나, 파티션의 구성을 설정하는 것으로 한 시스템 전체의 관리를 행하는 서비스 프로세서 내지 콘솔 장치이다. 또한, 파티션은 시스템 보드(#0∼#n)(1) 및 IO 유닛(#O∼#n)(2)의 조합에 의해 구성되는 시스템이다.
도 2는 각 시스템 보드(#0∼#n)(1) 위에 탑재된 회로 구성을 나타낸 블록도이다. 이 도 2에 나타낸 바와 같이, 시스템 보드(1) 위에는, 서로 동일구성을 갖는 동시에 동기 운전에 의한 용장화된 CPU의 조(組)(용장 CPU)인 제 1 연산 처리 장치로서의 CPU(0)(6) 및 제 2 연산 처리 장치로서의 CPU(1)(6)가, 각기에 대응한 CPU 버스(0)(7), CPU 버스(1)(7)에 접속된 상태로, 설치되어 있다.
그리고, 이들 복수의 CPU(0∼1)(6) 및 CPU 버스(0∼1)(7)나, 클록 제어 회로(23, 23), 펌웨어 허브(FWH)(15), 노스 브리지(north bridge)(6), 메모리(12) 및 메모리 컨트롤러(10)로부터, 당해 시스템 보드(1) 위에 탑재된 멀티프로세서(용장 CPU) 시스템으로 이루어지는 정보 처리 장치가, 구성된다. 또한, 상술한 글로벌 어드레스 크로스바(3)로부터 통지된 명령 및 어드레스는, 펌웨어 허브(FWH)(15) 및 메모리 컨트롤러(10)에 입력되는 동시에, 각 CPU 버스(0∼1)(7)를 통하여, 각 CPU(0∼1)(6)에 입력된다.
클록 제어 회로(23, 23)는, 시스템 보드(1) 이외에 마련된 도시되지 않은 클록 발생 장치로부터 각 CPU 버스(0∼1)(7)에 공급되는 클록(제 1 클록으로서의 외부 클록)을 각기 통과 또는 차단하는 스위치이며, 노스 브리지(6) 중의 후술하는 전환/재동기 제어 회로(14)에 의해 제어된다. 또한, 클록 제어 회로(23)에 의해 클록 공급을 차단한 CPU 버스(0∼1)(7)에 접속된 CPU(0∼1)(6)는 클록이 입력되지 않기 때문에 동작 불능으로 되어서 축퇴(縮退)되게 된다.
펌웨어 허브(FWH)(15)는, 각 CPU(0∼1)(6)가 상술한 바와 같이 CPU 리셋 또는 인터럽트를 건 때에 최초로 판독한 펌웨어(BIOS)를 저장한 불휘발의 플래시 메모리이며, 이러한 판독을 위해서 각 CPU(0∼1)(6)에 각기 접속되어 있다. 또한, 각 CPU(0∼1)(6)는, 그 당해 펌웨어(BIOS)를 따라서, 재동기 처리, 즉, 후술하는 노스 브리지(6)(전환/재동기 제어 회로(14))에 의해 인터럽트를 건 경우에는 인터 럽트 펌 처리(도 4 및 도 5에 나타낸「정상 CPU 인터럽트 펌 처리」), 리셋을 건 경우에는, 초기 처리(도 4에 나타낸「Reset의 펌웨어 초기 처리」)를, 각기 실행한다.
또한, 메모리 컨트롤러(10)는, 각종의 데이터가 기억되는 메모리(12)에 접속되어 있고, 글로벌 데이터 크로스바(4)로부터 입력된 데이터를 메모리(12)에서의 상기 입력된 어드레스가 나타낸 기억 위치에 기입하는 라이트 처리, 및 그 기억 위치부터 판독한 데이터를 읽어들여 글로벌 데이터 크로스바(4) 또는 각 CPU(0∼1)(6)에 송출하는 리드 처리를 실행하는 장치이다.
다음으로, 노스 브리지(6)는, 용장 CPU를 구성하는 CPU(0∼1)(6) 중 한쪽의 CPU(편계 CPU)에서 고장, 축퇴(縮退)가 발생하고, 동기 붕괴가 발생한 것을 검출하고, 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어(BIOS)를 따라서 동작하는 CPU(0∼1)(6)와 동기하여 용장 CPU의 재동기 처리를 행하는, 동기 제어 장치에 상당하는 회로 군이다.
또한, 여기에서 「동기 붕괴」는, 용장 CPU를 구성하는 CPU의 페어(pair)가 동기 운전할 수 없는 것을 말하고, 한쪽의 CPU(0∼1)(6)의 처리가 다른 쪽 CPU(0∼1)(6)의 처리로부터 늦어지는「동기 늦음」을, 그 단서로 한다. 또한, 「용장 CPU의 재동기 처리」는, 양쪽 CPU(0∼1)(6)를 재차 용장 구성으로 되돌리기 위한 처리이다. 노스 브리지(6)는, CPU(0∼1)(6)와는 독립하여 동작하는 하드웨어로 이루어지므로, 이러한 용장 CPU의 재동기 처리를, 시스템상에서 가동하고 있는 OS를 셧다운(shutdown)/재기동시키는 일 없이 실행할 수 있다.
도 2에서, 파선에 의해 둘러싸인 각 검사 회로(11, 11), CPU 버스 동기 검사 회로(13), 전환/재동기 제어 회로(14), 재동기 타이머 및 타임 아웃 제어 회로(16), 전환 스위치(17), 리셋 제어 레지스터(18), 재동기 제어 레지스터(19), 에러 지적 레지스터(20), 명령 디코더(21), 위상 동기 회로(PLL0)(22)가, 노스 브리지(6)를 구성한다. 이하, 노스 브리지(6)를 구성하는 이들 각 회로마다, 그 기능을 설명한다.
먼저, 명령 디코더(21)는, 시스템 제어/관리 장치(5)로부터 노스 브리지(6)에 대하여 발행된 명령을 디코드하고 디코드 결과에 따라서 재동기 제어 레지스터(19) 및 재동기 타이머 및 타임 아웃 제어 회로(16)(재동기 상한 시간 설정 레지스터(163))에 대한 설정 값의 기입/판독을 행한다.
각 검사 회로(11, 11)는, 대응하는 CPU 버스(0∼1)(7)를 통하여 CPU(0∼1)(6)의 출력 단자에 접속되어 있고, 대응하는 CPU 버스(0∼1)(7)를 통해서, CPU(0∼1)(6)로부터 글로벌 어드레스 크로스바(3)로 향하여 송신된 패킷(packet)을 수취하고, ECC 및 패리티 등의 검사를 행한다. 검사에 의해 에러를 검출하면, 전환/재동기 제어 회로(14)에 에러 통지를 행한다.
CPU 버스 동기 감사 회로(13)는, 각 CPU 버스(0∼1)(7)에 접속되어 있고, CPU 버스 단위로 동기 검사를 행한다. 다시 말해, CPU 버스 동기 검사 회로(13)는, 용장 CPU를 구성하는 CPU 페어가 동기 운전을 행하고 있는지를 검사한다. 그리고, CPU 버스 동기 검사 회로(13)가, 동기 어긋남을 검출하면, 전환/재동기 제어 회로(14)에 에러 통지를 행한다.
또한, CPU(0~1)(6) 내부에서 에러가 검출되었을 경우에는, 에러가 검출된 CPU(0∼1)(6)의 자체가, 전환/재동기 제어 회로(14)에 대하여 에러 통지(내부 에러 통지)를 행한다.
당해 전환/재동기 제어 회로(14)에는, 상술한 각 CPU(0∼1)(6), 각 검사 회로(11, 11) 및 CPU 버스 동기 검사 회로(13) 외에, 재동기 타이머 및 타임 아웃 제어 회로(16)(타이머/상한 시간 비교 회로(161)), 리셋 제어 레지스터(18), 재동기 제어 레지스터(19), 전환 스위치(7) 및 에러 지적 레지스터(20)가 접속되어 있다.
이 중 전환 스위치(17)는, 전환/재동기 제어 회로(14)의 지시에 따라서 CPU 버스(0∼1)(7)의 전환을 행한다. 전환 스위치(17)가 CPU 버스(0∼1)(7)의 전환을 행함으로써, 예를 들면, CPU 버스(0)(7) 또는 CPU 버스(1)(7) 중 어느 쪽을 통하여 발행된 명령이 글로벌 어드레스 크로스바(3)에 투입될지가 결정된다.
리셋 제어 레지스터(18)는, 각 CPU(0∼1)(6)에 관한 리셋 제어를 위해서, 각 CPU(0∼1)(6)의 상태를 관리하는 레지스터이다. 예를 들면, 용장 CPU의 재동기 처리에서 정상인 CPU(0∼1)(6)의 캐시 데이터의 메모리(12)에의 퇴피가 완료되면, 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어에 근거하여 정상인 CPU(0∼1)(6)에 의한 제어(정상 CPU 인터럽트 펌 처리)에 의해, 리셋 제어 레지스터(18) 내에 정상인 CPU에 대응하는 퇴피 완료 플래그가 세워진다(S106, S110).
재동기 제어 레지스터는, 양쪽 CPU(0∼1)(6)에 대한 재동기 처리의 실행 회수, 그 상한값(재동기 가능 상한값), 및 재동기 가부 플래그가 설정되는 레지스터이다. 재동기 가능 상한값은, 명령 디코더(21)를 통하여, 시스템 관리자가 조작하 는 시스템 제어/관리 장치(5)에 의해서 설정된다. 또한, 재동기 가부 플래그는, 양쪽 CPU(0∼1)(6)의 재동기가 가능한지 여부를 나타낸 플래그이다. 그리고, 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어(BIOS)를 따라서 동작하는 정상인 CPU(0∼1)(6)는, 실제의 재동기 처리의 실행 회수를 재동기 제어 레지스터(19)에 기록하는 동시에(S308), 당해 재동기 제어 레지스터(19)에 설정된 재동기 가능 상한값과 비교하고(S306, S307), 실행 회수가 재동기 가능 상한값 미만일 경우에는, 재동기 처리가 더욱더 재시도 가능한지 판단하고, 재동기 제어 레지스터(19)에 재동기 가부 플래그로서 예를 들면 플래그 1을 설정하지만(S308), 실행 회수가 재동기 가능 상한값에 달하면, 재동기 처리가 더욱더 재시도 불가능하다고 판단하고, 재동기 가부 플래그로서 예를 들면 플래그 0을 설정한다(S309).
에러 지적 레지스터(20)는, 노스 브리지(6)(전환/재동기 제어 회로(14), 재동기 타이머 및 타임 아웃 제어 회로(16)(타이머/상한 시간 비교 회로(161)))가 검출한 각종 장해의 정보를 저장하는 레지스터이다. 예를 들면, 전환/재동기 제어 회로(14)가 상기 각 에러 통지를 받은 경우에, 통지된 에러의 내용이, 당해 에러 지적 레지스터(20)에 저장된다. 아직, 동기 늦음이 발생한 이상(異常) CPU 버스(7)의 ID가, 당해 에러 지적 레지스터(20)에 저장된다. 더욱이, 재동기 처리 실행 회수가 상한에 달한 경우나 재동기 기간이 상한에 달한 경우에, 동기 불가 플래그(동기 늦음 정보에 상당)가, 동기 늦음 정보 유지부로서의 당해 에러 지적 레지스터(20)에 저장된다.
펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어에 근거하여 Reset의 펌웨어 초기 설정 처리를 실행하는 CPU(0∼1)(6)는, 기동 후에 에러 지적 레지스터(20)에 동기 불가 플래그가 설정되어 있는지의 여부에 근거하여, 재동기 처리를 실행할지(동기 불가 플래그가 설정되어있지 않은 경우: S302∼), 단독으로 기동한다(동기 불가 플래그가 설정되어 있는 경우: S310∼). 그리고, 예를 들면, 에러 지적 레지스터(20)에 저장되어 있는 그 밖의 에러의 정보를 획득하고, 그 정보를 시스템 제어/관리 장치(5)에 통지함으로써, 시스템 관리자에게 장해 정보를 통지해도 좋다.
재동기 타이머 및 타임 아웃 제어 회로(16)는, 명령 레코더(21)를 통하여 시스템 제어/관리 장치(5)에 의해 설정된 재동기 상한 시간과 재동기에 필요한 시간을 비교하고, 재동기 상한 시간을 초과하면 전환/재동기 제어 회로(14)에 대하여 정상 CPU(6) 및 정상 CPU 버스(7)만을 유효하게 하여 리셋을 실행하도록 의뢰하는 회로이다.
이 재동기 타이머 및 타임 아웃 제어 회로(16)는, 도 3에 나타낸 바와 같이, 재동기 상한 시간 설정 레지스터(163), 재동기 타이머 레지스터(162), 및 타이머/상한 시간 비교 회로(161)로 구성되어 있다.
재동기 상한 시간 설정 레지스터(163)에는, 명령 레코더(21)를 통하여, 시스템 관리자가 조작하는 시스템 제어/관리 장치(5)에 의해, 재동기 처리 시간 상한(타임 아웃 시간)이 설정된다(타임 아웃 시간 유지부에 상당).
재동기 타이머 레지스터(162)는, 위상 동기 회로(PLLO)(22)로부터 공급되는 클록(제 1 클록)을 사용하여 레지스터 값(계수 정보에 상당)을 카운트 업 함으로써, 재동기 시간을 계측한다(계수부에 상당). 이렇게, CPU 클록과는 별도 계통의 위상 동기 회로(PLLO)(22)로부터의 클록을 사용하고 있으므로, 각 CPU(0∼1)(6)의 상태에 의존하지 않고 시간을 계측할 수 있고, 또한, 재동기를 위한 리셋에 의해 레지스터 값이 클리어될 일도 없다. 또한, 재동기 타이머 레지스터(162)는 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어에 근거하는 정상인 CPU(0∼1)(6)에 의한 제어(정상 CPU 인터럽트 펌 처리, 펌웨어의 초기 처리)에 의해, 0 클리어되는 동시에 카운트 업 개시되고(S101), 정지되는 것 외에(S107, S305), 타이머/상한 시간 비교 회로(161)에 의해서도 정지된다(S501).
타이머/상한 시간 비교 회로(161)는, 재동기 상한 시간 설정 레지스터(163)의 값과 재동기 타이머 레지스터(162)의 값을 비교하고, 양자가 일치하면, 재동기 타이머 레지스터(162)를 0 클리어 하여 카운트 업을 정지시키는 동시에(S501), 에러 지적 레지스터(20)에 동기 불가 플래그를 세우고(S502), 전환/재동기 제어 회로(14)에 대하여, 정상 CPU(6) 및 정상 CPU 버스(7)만을 유효하게 하여 리셋을 실시하도록 의뢰한다(S503)(비교부에 상당).
전환/재동기 제어 회로(14)는 각 CPU(0∼1)(6), 각 검사 회로(11, 11), CPU 버스 동기 검사 회로(13)로부터 에러 통지를 수신함으로써, 두 개의 CPU(0∼1)(6)의 쌍방 또는 정상인 한 쪽에 대하여 CPU 리셋 또는 인터럽트를 걸고, 전환 스위치(17)의 동작을 제어하고, 또한, 에러 지적 레지스터(20)에 플래그를 세트하는 회로이다.
구체적으로는, 전환/재동기 제어 회로(14)는 에러 통지를 받았을 경우, 에러가 발생한 CPU(0∼1)(6)가 접속되어 있는 CPU 버스(0∼1)(7)에의 클록 공급을 정지 하도록 클록 제어 회로(23)를 설정함으로써, 당해 CPU 버스(0∼1)(7)를 무효로 하고(S002), 당해 CPU 버스(0∼1)(7)로부터 글로벌 어드레스 크로스바(3)에의 명령의 발행을 정지하는 동시에, 어느 CPU 버스(0∼1)(7)를 무효로 했는지를, 에러 지적 레지스터(20)에 기록한다.
또한, 전환/재동기 제어 회로(14)는, 에러 통지를 받은 것을 계기로 하여, 정상인 CPU 버스(0∼1)(7)에 접속되어 있는 정상인 CPU(0∼1)(6)에 대하여, 인터럽트를 통지한다(S003). 그 결과, 그 정상인 CPU(0∼1)(6)가, 상술한 바와 같이, 도 4 및 도 5에 나타낸「정상 CPU 인터럽트 펌 처리」를 실행한다. 즉, 동기 늦음이 발생하지 않는 쪽의 연산 처리 장치(CPU(6))를 초기화한다.
또한, 전환/재동기 제어 회로(14)는, 리셋 제어 레지스터(18) 및 재동기 제어 레지스터(19)를 감시하고, 정상인 CPU(0∼1)(6)에 대하여 상술한 퇴피 완료 플래그가 세워져 있는 것을 확인하면, 재동기 가부 플래그 = 1이 성립되어 있으면, 모든 CPU(0∼1)(6)에 리셋을 발행하고(S202), 재동기 가부 플래그 = 0이 성립되어 있으면, 에러 지적 레지스터(20)에 동기 불가 플래그를 세우는 동시에(S401), 에러 지적 레지스터(20)에 저장되어 있는 무효인 CPU 버스(0∼1)(7)의 ID를 참조하여, 이상(異常)인 CPU(0∼1)(6) 측의 클록 제어 회로(23)에 대하여, CPU 버스(0∼1)(7)에의 클록 공급을 정지시키는 동시에(S402), 정상인 CPU(0∼1)(6)에만 리셋을 발행하고(S403), 전환 스위치(7)를, 강제적으로, 정상인 CPU(0∼1)(6) 측으로 전환시킨다(S404). 이러한 리셋을 발행한 CPU(0∼1)(6)가, 상술한 바와 같이, 초기 처리(도 4에 나타낸 「Reset의 펌웨어 초기 처리」)를 실행한다.
또한, 전환/재동기 제어 회로(14)는, 타이머/상한 시간 비교 회로(161)로부터 정상 CPU(6) 및 정상 CPU 버스(7)만을 유효하게 하여 리셋을 실시하도록 의뢰되면, 에러 지적 레지스터(20)에 저장되어 있는 무효인 CPU 버스(0∼1)(7)의 기록을 참조하여, 이상인 CPU(0∼1)(6) 측의 클록 제어 회로(23)에 대하여, CPU 버스(0∼1)(7)에의 클록 공급을 정지시키는 동시에(S503), 정상인 CPU(0∼1)(6)에만 리셋을 발행하고(S504), 전환 스위치(17)를, 강제적으로, 정상인 CPU(0∼1)(6) 측으로 전환시킨다(S505).
이상으로 설명한 각 CPU(0∼1)(6), 펌웨어 허브(FWH)(15), CPU 버스 동기 검사 회로(13), 전환/재동기 제어 회로(14)가, 상기 제 1 연산 처리 장치(CPU(0)(6))의 출력과 상기 제 2 연산 처리 장치(CPU(1)(6))의 출력을 비교함으로써, 상기 제 1 및 제 2 연산 처리 장치의 동기를 감시하고(CPU 버스 동기 검사 회로(13)의 기능), 상기 제 1 연산 처리 장치와 상기 제 2 연산 처리 장치의 출력이 일치하지 않는 경우에, 상기 계수부를 초기화하여 계수를 개시시키고(전환/재동기 제어 회로(14), 각 CPU(0∼1)(6) 및 펌웨어 허브(FWH)(15)의 기능), 더욱이, 상기 비교부가 상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 때에는, 동기 늦음이 발생한 상기 제 1 또는 제 2 연산 처리 장치의 어느 하나를 정지시키는(전환/재동기 제어 회로(14)의 기능) 동기 제어부에 상당한다.
<재동기 처리>
다음으로, 상술한 노스 브리지(6)의 동작 시퀸스 및 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어(BIOS)에 근거하여 CPU(0∼1)(6)에 의한 처리의 흐름을, 도 4 내지 도 6의 플로차트에 근거하여 설명한다. 또한, 이들 각 도면에서, α의 열은 노스 브리지(6)의 동작 시퀸스를 나타내고, β의 열은 펌웨어(BIOS)에 근거하여 CPU(0∼1)(6)에 의한 처리의 흐름을 나타낸다.
먼저, 전환/재동기 제어 회로(14)는, 주전원 투입에 의해 도 4(α)의 동작을 개시하고, 최초의 S001에서, 각 CPU(0∼1)(6), 각 검사 회로(11, 11) 또는 CPU 버스 동기 검사 회로(13)로부터 수신하는 에러 통지에 근거하여, 어느 CPU(6)의 동기 늦음, 즉, 용장 CPU의 동기 붕괴를 감시한다.
그리고, 전환/재동기 제어 회로(14)는, 용장 CPU의 동기 붕괴를 검출하면, 처리를 S001로부터 S002로 진행하고, 동기 늦음이 생긴 CPU(0∼1)(6)(이하,「이상CPU(6)」라고 함)가 접속되어 있는 CPU 버스(0∼1)(7)(이하,「이상 CPU 버스(7)」라고 함)에의 클록 공급을 정지함으로써, 그 동작을 정지시킨다.
다음의 S003에서는, 전환/재동기 제어 회로(14)는, 동작이 정지하지 않고 있는 측의 CPU 버스(0∼1)(7)(이하,「정상 CPU 버스(7)」라고 함)에 접속되어 있는 CPU(0∼1)(6)(이하,「정상 CPU(6)」라고 함)에 대하여, 이상 CPU(6)가 정지했다는 취지, 즉,「편계(片系) 정지」를, 인터럽트 통지한다.
이렇게 하면, 인터럽트 통지를 받은 정상 CPU(6)는, 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어(BlOS)를 판독하고, 도 4(β)에 나타낸 정상 CPU 인터럽트 펌 처리를 스타트한다. 그리고, 정상 CPU(6)는, 스타트 후 최초의 S100에서, 재동기타이머 레지스터(162)의 상태를 확인한다. 그리고, 정상 CPU(6)는, 재동기 타이머 레지스터(162)가 타이머 카운트 중이면, 그대로 처리를 S103으로 진행하고, 재동기 타이머 레지스터(162)가 정지 중에서 아직 타이머 카운트가 개시되고 있지 않으면, 처리를 S101로 진행시킨다.
S101에서는, 정상 CPU(6)는 재동기 타이머 레지스터(162)를 일단 제로 클리어(zero clear)한 후에 카운트 업을 개시시키는 동시에, 타이머/상한 시간 비교 회로(14)에 대하여, 상기 재동기 타이머 레지스터(162)의 계수값과 재동기 상한값 설정 레지스터(163)의 값의 비교를 개시시킨다.
다음의 S102에서는, 정상 CPU(6)는, S002에서 동작을 정지시켜진 CPU 버스(7)의 ID를, 에러 지적 레지스터(20)에 기록한다. S102를 완료하면, 정상 CPU(6)는, 처리를 S103으로 진행시킨다.
S103에서는, 정상 CPU(6)는, 재동기 제어 레지스터(19) 중에 설정되어 있는 재동기 가부 플래그를 참조하여, 용장 CPU의 재동기의 실시의 가부를 판단한다. 그리고, 정상 CPU(6)는, 재동기 가능을 나타낸 값(상술한 예에서는 플래그 1)이 설정되어 있기 때문에, 용장 CPU의 재동기의 실시가 가능하다고 판단한 경우에는, 처리를 S104로 진행시킨다. 이에 대하여, 재동기 불능을 나타낸 값(상술한 예에서는 플래그 0)이 설정되어 있기 때문에, 용장 CPU의 재동기의 실시를 할 수 없다(NG)고 판단한 경우에는, 처리를 S107로 진행시키고, 편계(정상 CPU 버스)에서 동작을 계속시킨다.
S104에서는, 정상 CPU(6)는, 당해 정상 CPU(6)의 내부 정보(CPU 내 레지스터 등의 내용이며, 동기 붕괴 직전의 어드레스도 포함함)를, 메모리(12)에 퇴피(카피(copy))시킨다. 단, 재동기 처리를 재시도하고 있는 경우(후술하는 S309 또는 S308을 실행 후에 처리가 루프(loop)한 경우)에는, 이미 상기 내부 정보가 메모리(12)에 퇴피 완료이므로, 더 이상 메모리 퇴피는 행하지 않는다.
다음의 S105에서, 정상 CPU(6)는 당해 정상 CPU(6) 내부에 유지하고 있는 캐시 데이터를, 메모리에 반영(캐시 플래시) 시킨다. 캐시 데이터의 메모리에의 퇴피가 완료하면, 정상 CPU(6)는 처리를 S106로 진행한다.
S106에서는, 정상 CPU(6)는, 리셋 제어 레지스터(18) 내에, 당해 정상 CPU(6)에 대응한 퇴피 완료 플래그를 설정한다. 그 후, 당해 정상 CPU에 의한 정상 CPU 인터럽트 펌 처리는 대기 상태(무한 루프)로 된다.
한편, 전환/재동기 제어 회로(14)는 리셋 제어 레지스터(18) 내에 퇴피 완료 플래그가 설정되는 것을 계기로 기동하고, 재동기 제어 레지스터(19) 중에 재동기 불능을 나타낸 값(상술한 예에서는 플래그 0)의 재동기 가부 플래그가 설정되어 있지 않은 것을 조건으로, 도 4(α)의 S201이하의 동작을 행한다. 또한, 재동기 제어 레지스터(19) 중에 재동기 불능을 나타낸 값(상술한 예에서는 플래그 0)의 재동기 가부 플래그가 설정되어 있는 경우에는, 전환/재동기 제어 회로(14)는, 도 5(α)에 나타낸 S401 이하의 동작을 행하는 것으로 된다.
S201에서는, 전환/재동기 제어 회로(14)는, 모든 CPU 버스(0∼1)(7)에 대하여 클록을 공급시키고, 클록 제어 회로(23, 23)를 설정한다.
다음의 S202에서는, 전환/재동기 제어 회로(14)는, 당해 시스템 보드(1) 내의 모든 CPU(0∼1)(6)에 대하여, 리셋을 발행한다. 또한, 이 리셋에서는 메모리의 내용은 그대로 유지된다.
S202에서의 리셋 발행의 결과로서 리셋 된 각 CPU(0∼1)(6)는, 각기 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어(BIOS)를 판독하고, 도 4(β)에 나타낸 Reset의 펌웨어 처리를 스타트한다. 그리고, 스타트 후 최초의 S301에서, CPU(6)는, 에러 지적 레지스터(20)에 동기 불가 플래그가 설정되어 있는지의 여부를 체크한다. 그리고, 동기 불가 플래그가 설정되어 있으면 처리를 S310으로 진행시키지만, 동기 불가 플래그가 설정되어 있지 않으면 처리를 S302로 진행시킨다. 전환/재동기 제어 회로(14)가 S202를 실행함으로써 리셋 발행한 경우에는, 동기 불가 플래그가 설정되어 있지 않으므로, S302 이하의 처리가 실행되게 된다. S310 이하 처리는 편의상, 도 5의 설명을 한 후에 행한다.
S302에서는, CPU(6)는, 메모리(12)에 퇴피되어 있는 정상 CPU의 내부 정보의 복원을 개시한다. 처리 주체인 CPU(6)가, 이상 CPU 버스(7)에 접속되어 있는 이상CPU(6)이었다고 해도 정상 CPU(6)의 내부 정보를 사용하여 복원을 행하므로, 정상 CPU(6)와의 용장 구성의 회복이 가능해 지는 것이다.
다음의 S303에서는, CPU(6)는, 에러 지적 레지스터(20)의 기록을 확인함으로써, S302에서의 CPU 내부 정보 복원 처리의 개시 후에 동기 벗어남이 있었는지 없었는지를 체크한다. 그리고 동기 벗어남이 있었을 경우에는 처리를 S306로 진행시키고, 동기 벗어남이 없이 CPU 내부 정보 복원 처리가 완료하면, 처리를 S304로 진행시킨다.
S306에서는, CPU(6)는 재동기 제어 레지스터(19)에 설정되어 있는 재동기 처리의 실행 회수와 재동기 가능 상한값을 비교한다. 그리고, CPU(6)는, 실행 회수 가 재동기 가능 상한값에 달하고 있다면(S307: yes), 재동기 처리의 더 이상의 재시도는 불가능하다고 판단하고, S309에서, 재동기 불능을 나타낸 값(예를 들면 플래그 0)을 재동기 제어 레지스터(19)에 설정한다. 이에 대하여, 실행 회수가 아직 재동기 가능 상한값 미만이면(S307: no), CPU(6)는, 재동기 처리의 재시도가 가능하다고 판단하고, S308에서, 재동기 제어 레지스터(19) 중에 기록되어 있는 실행 회수의 값을 한 개 증가시키는 동시에, 재동기 가능을 나타낸 값(예를 들면, 플래그 1)을 재동기 제어 레지스터(19)에 설정한다. 그리고, 어느 경우에서도, CPU(6)는, 전환/재동기 제어 회로(14)에 대하여, S002 이하의 동작을 재차 실행해야 할 것을 통지한다.
한편, S304에서는, CPU(6)는 용장 CPU의 페어가 되는 다른 쪽 CPU(6)에서의 S302에 의한 내부 정보 복원의 완료를 대기한다. 그리고, 다른 쪽 CPU(6)에서도 CPU 내부 정보 복원 처리가 완료하면, 전체 CPU가 동기 붕괴 직전의 어드레스로 복귀하므로, 처리를 S305로 진행시킨다.
S305에서는, CPU(6)는, 타이머/상한 시간 비교 회로(161)의 비교를 무효로 하고, 재동기 타이머 레지스터(162)의 타이머 카운트를 정지시키고, 그 레지스터 값을 0 클리어 한다. S305를 완료하면, CPU(6)는, 용장 CPU에서의 통상처리를 재개하는 것이 가능하다(S312).
다음으로, S103에서 재동기 불능이라고 판단된 경우에 실행되는 S107 이하의 처리를, 도 5를 참조하여 설명한다.
S107에서는 CPU(6)는 타이머/상한 시간 비교 회로(161)의 비교를 무효로 하 고, 재동기 타이머 레지스터(162)의 타이머 카운트를 정지시키고, 그 레지스터 값을 0 클리어 한다.
다음의 S108에서 CPU(6)는, 그 정상 CPU(6)의 내부 정보(CPU 내 레지스터 등으로, 동기 붕괴 직전의 어드레스도 포함함)를, 메모리(12)에 퇴피(카피) 시킨다.단, 재동기 처리를 재시도하고 있는 경우에는, 이미 상기 내부 정보가 메모리(12)에 퇴피 완료이므로, 더 이상 메모리 퇴피는 행하지 않는다.
다음의 S109에서는, 정상 CPU(6)는, 당해 정상 CPU(6) 내부에 유지하고 있는 캐시 데이터를, 메모리에 반영(캐시 플래시) 시킨다. 캐시 데이터의 메모리(12)에의 퇴피가 완료하면, 정상 CPU(6)는, 처리를 S110로 진행시킨다.
S110에서는, 「정상 CPU(6)는, 리셋 제어 레지스터(18) 내에, 당해 정상 CPU(6)에 대응한 퇴피 완료 플래그를 설정한다. 그 후, 당해 정상 CPU에 의한 정상 CPU 인터럽트 펌 처리는, 대기 상태(무산 루프)로 된다.
한편, 전환/재동기 제어 회로(14)는, 리셋 제어 레지스터(18) 내에 퇴피 완료 플래그가 설정되는 것을 계기로 기동하고, 재동기 제어 레지스터(19) 중에 재동기 불능을 나타낸 값(상술한 예에서는 플래그 0)의 재동기 가부 플래그가 설정되어 있는 것을 조건으로, 도 5(α)의 S401 이하의 동작을 행한다.
S401에서는, 전환/재동기 제어 회로(14)는, 동기 불가 플래그를, 에러 지적 레지스터(20)에 설정한다.
다음의 S402에서는, 전환/재동기 제어 회로(14)는, 에러 지적 레지스터(20)에 기록되어 있는 이상 CPU 버스(7)의 ID가 나타낸 이상 버스(7)에 대한 클록 제어 를 차단시키기 위해, 당해 이상 버스(7)에 접속된 클록 제어 회로(23)를 설정함으로써, 당해 이상 버스(7)를 퇴피시킨다.
계속해서, 전환/재동기 제어 회로(14)는, S403에서, 정상 CPU(6)(즉, 에러 지적 레지스터(20)에 기록되어 있는 ID가 나타낸 이상 CPU 버스(7)가 아닌 쪽의 CPU 버스(7), 즉 정상 CPU(7)에 접속되어 있는 쪽의 CPU(6))에 대해서만 리셋을 발행하는 동시에, S404에서, 전환 스위치(17)를 정상 CPU 버스(7) 측에 고정시킨다.
이 리셋에서는 이상 CPU 버스(7) 및 이상 CPU(6)에의 클록 공급을 정지시킨 상태로, 정상 CPU(6)와 정상 CPU 버스(7)만이 동작을 재개한다. 다시 말해, 리셋 된 정상 CPU(6)는, 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어(BI0S)를 판독하고, 도 4(β)에 나타낸 Reset의 펌웨어 처리를 스타트한다. 그리고, 스타트 후 최초의 S301에서, CPU(6)는 에러 지적 레지스터(20)에 동기 불가 플래그가 설정되어 있는지의 여부를 체크 하지만, 이 경우에는, 동기 불가 플래그가 설정되어 있으므로 S310 이하의 처리가 실행된다.
S310에서는, 정상 CPU(6)는 에러 지적 레지스터(20)를 참조하여, 설정되어 있는 에러의 내용을, 시스템 제어/관리 장치(5)에 통지한다.
다음의 S311에서는, 정상 CPU(6)는, 메모리(12)에 퇴피되어 있는 정상 CPU(6)의 내부 정보의 복원을 개시한다. 이 복원 처리가 완료되면, 정상 CPU(6)는, 단독 운용에서의 통상처리를 재개할 수 있다(S312).
이상으로 설명한 바와 같이, 전환/재동기 제어 회로(14)가 동작하고 각 CPU(6)가 펌웨어를 따른 처리를 실행하고 있는 사이에도, S101에서 비교를 개시시 킬 수 있었던 타이머/상한 시간 비교 회로(16)는, S107에서 비교를 무효로 하지 않는 한, 재동기 타이머 레지스터(162)의 계수값과 재동기 상한값 설정 레지스터(163)의 값의 비교를 계속한다. 그리고, 전자가 후자에 달한 것을 검출하면, 그 취지를 전환/재동기 제어 회로(14)에 통지한다. 이 통지를 받은 전환/재동기 제어 회로(14)는 인터럽트에 의해, 도 6에 나타낸 동작을 개시한다. 이 인터럽트가 있으면, 전환/재동기 제어 회로(14)는, 최초의 S501에서, 타이머/상한 시간 비교 회로(161)의 비교를 무효로 하고, 재동기 타이머 레지스터(162)의 타이머 카운트를 정지시키고, 그 레지스터 값을 0 클리어한다.
다음의 S502에서는, 전환/재동기 제어 회로(14)는, 동기 불가 플래그를, 에러 지적 레지스터(20)에 설정한다.
다음의 S503에서는, 전환/재동기 제어 회로(14)는, 에러 지적 레지스터(20)에 기록되어 있는 이상 CPU 버스의 ID가 나타낸 이상 버스(7)에 대한 클록 제어를 차단하기 위해, 당해 이상 버스에 접속된 클록 제어 회로(23)를 설정함으로써, 당해 이상 버스(7)를 퇴피시킨다.
계속해서, 전환/재동기 제어 회로(14)는, S504에서, 정상 CPU(6)(즉, 에러 지적 레지스터(20)에 기록되어 있는 ID가 나타낸 이상 CPU 버스(7)가 아닌 쪽의 CPU 버스(7), 즉 정상 CPU 버스(7)에 접속되어 있는 쪽의 CPU(6))에 대해서만 리셋을 발행하는 동시에, S505에서, 전환 스위치(17)를 정상 CPU 버스(7) 측에 고정시킨다.
이 리셋에서는, 이상 CPU 버스(7) 및 이상 CPU(6)에의 클록 공급을 정지시킨 상태로, 정상 CPU(6)와 정상 CPU 버스(7)만이 동작을 재개한다. 다시 말해, 리셋 된 정상 CPU(6)는, 펌웨어 허브(FWH)(15)에 저장되어 있는 펌웨어(BI0S)를 판독하고, 도 4(β)에 나타낸 Reset의 펌웨어 처리를 스타트한다. 그리고, 스타트 후 최초의 S301에서, CPU(6)는 에러 지적 레지스터(20)에 동기 불가 플래그가 설정되어 있는지의 여부를 체크 하지만, 이 경우에는, 동기 불가 플래그가 설정되어 있으므로 S310 이하의 처리가 실행된다.
S310에서는, 정상 CPU(6)는, 에러 지적 레지스터(20)를 참조하여, 설정되어 있는 에러의 내용을, 시스템 제어/관리 장치(5)에 통지한다.
다음의 S311에서는, 정상 CPU(6)는, 메모리(12)에 퇴피되어 있는 정상 CPU(6)의 내부 정보의 복원을 시작한다. 이 복원 처리가 완료되면, 정상 CPU(6)는, 단독 운용에서의 통상처리를 재개하는 것이 가능하다(S312).
<실시예에 의한 작용>
이상과 같이 구성된 서버 시스템에 의하면, 용장 CPU를 구성하는 2개의 CPU(0∼1)(6) 중 한쪽에 동기 늦음이 생겼기 때문에, 재동기 처리를 시도했음에도 불구하고, 그 도중에 동기 벗어남이 생겨버렸을 경우에는, 당해 재동기 처리의 재시도 하는 것이 되지만, 동기 늦음의 원인이 심각하기 때문에 재동기 처리가 몇 번이나 반복할 경우이어도, 재동기 처리를 개시하고 나서의 경과 시간이 재동기 타이머 레지스터(162)에 의해 계측되고, 그 경과 시간이 재동기 상한 시간 설정 레지스터(163)에 등록되어 있는 재동기 처리 시간 상한에 달한 것이 타이머/상한 시간 비교 회로(161)에 의해 검출되면, 동기 늦음이 생긴 이상 CPU에 접속된 이상 CPU 버 스에의 클록이 중단되고, 이후, 동기 늦음이 생긴 정상 CPU만이 리셋 되므로, 당해 정상 CPU의 단독운용에 의해, 조기의 통상처리의 재개가 도모되므로, 통상 처리가 장기에 걸쳐서 정지해버리는 오류를 회피할 수 있다.
도 1은 서버 시스템의 개략 구성을 나타낸 블록도.
도 2는 시스템 보드 상의 회로 구성을 나타낸 블록도.
도 3은 재동기 타이머 및 타임 아웃 제어 회로 내부의 구성을 나타낸 블록도.
도 4는 재동기 처리의 내용을 나타낸 플로차트.
도 5는 재동기 처리의 내용을 나타낸 플로차트.
도 6은 재동기 처리의 내용을 나타낸 플로차트.
*도면의 주요 부분에 대한 부호의 설명*
6: CPU
14: 전환/재동기 제어 회로
15: 펌웨어 허브
16: 재동기 타이머 및 타임 아웃 제어 회로
18: 리셋 제어 레지스터
19: 재동기 제어 레지스터
20: 에러 지적 레지스터
161: 타이머/상한 시간 비교 회로
162: 재동기 타이머 레지스터
163: 재동기 상한 시간 설정 레지스터

Claims (10)

  1. 제 1 연산 처리 장치 및 제 2 연산 처리 장치에 접속되는 동기 제어 장치에 있어서,
    계수를 행하는 동시에, 상기 계수한 계수 정보를 출력하는 계수부와,
    소정의 타임 아웃 시간을 유지하는 동시에, 상기 타임 아웃 시간을 출력하는 타임 아웃 시간 유지부와,
    상기 계수부가 출력하는 상기 계수 정보와 상기 타임 아웃 시간 설정 유지부가 출력하는 상기 타임 아웃 시간을 비교하는 비교부와,
    상기 제 1 연산 처리 장치의 출력과 상기 제 2 연산 처리 장치의 출력을 비교함으로써, 상기 제 1 및 제 2 연산 처리 장치의 동기를 감시하고, 상기 제 1 연산 처리 장치와 상기 제 2 연산 처리 장치의 출력이 일치하지 않을 경우에, 상기 계수부를 초기화하여 계수를 개시시키고, 또한, 상기 비교부가 상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 때에는, 동기 늦음이 발생한 상기 제 1 또는 제 2 연산 처리 장치 중 어느 하나를 정지시키는 동기 제어부를 갖는 것을 특징으로 하는 동기 제어 장치.
  2. 제 1 항에 있어서,
    상기 동기 제어 장치는, 또한
    상기 계수부가 계수를 개시 후, 상기 비교부가 상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 경우에는, 상기 제 1 및 제 2 연산 처리 장치 중, 상기 동기 늦음이 발생하지 않고 있는 쪽의 연산 처리 장치를 초기화하는 동시에, 상기 제 1 연산 처리 장치의 출력과 상기 제 2 연산 처리 장치의 출력의 비교를 정지하는 것을 특징으로 하는 동기 제어 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 동기 제어 장치는, 또한
    동기 늦음 정보 유지부를 갖고,
    상기 계수부가 계수를 개시 후, 상기 비교부가 상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 경우에는, 상기 동기 늦음 정보 유지부에 동기 늦음 정보를 저장하는 것을 특징으로 하는 동기 제어 장치.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 계수부는,
    외부로부터 상기 동기 제어 장치에 입력되는 제 1 클록에 근거하여 계수를 행하는 것을 특징으로 하는 동기 제어 장치.
  5. 제 1 연산 처리 장치, 제 2 연산 처리 장치, 및 이들 제 1 및 제 2 연산 처리 장치에 각기 접속된 동기 제어 장치를 갖는 정보 처리 장치에 있어서,
    상기 동기 제어 장치가,
    계수를 행하는 동시에, 상기 계수한 계수 정보를 출력하는 계수부와,
    소정의 타임 아웃 시간을 유지하는 동시에, 상기 타임 아웃 시간을 출력하는 타임 아웃 시간 유지부와,
    상기 계수부가 출력하는 상기 계수 정보와 상기 타임 아웃 시간 설정 유지부가 출력하는 상기 타임 아웃 시간을 비교하는 비교부와,
    상기 제 1 연산 처리 장치의 출력과 상기 제 2 연산 처리 장치의 출력을 비교함으로써, 상기 제 1 및 제 2 연산 처리 장치의 동기를 감시하고, 상기 제 1 연산 처리 장치와 상기 제 2 연산 처리 장치의 출력이 일치하지 않을 경우에, 상기 계수부를 초기화하여 계수를 개시시키고, 또한, 상기 비교부가 상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 때에는, 동기 늦음이 발생한 상기 제 1 또는 제 2 연산 처리 장치 중 어느 하나를 정지시키는 동기 제어부를 갖는 것을 특징으로 하는 정보 처리 장치.
  6. 제 5 항에 있어서,
    상기 동기 제어 장치는, 또한
    상기 계수부가 계수를 개시 후, 상기 비교부가 상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 경우에는, 상기 제 1 및 제 2 연산 처리 장치 중, 상기 동기 늦음이 발생하지 않고 있는 쪽의 연산 처리 장치를 초기화하는 동시에, 상기 제 1 연산 처리 장치의 출력과 상기 제 2 연산 처리 장치의 출력의 비교를 정지하는 것을 특징으로 하는 정보 처리 장치.
  7. 제 5 항 또는 제 6 항에 있어서,
    상기 동기 제어 장치는, 또한
    동기 늦음 정보 유지부를 갖고,
    상기 계수부가 계수를 개시 후, 상기 비교부가 상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 경우에는, 상기 동기 늦음 정보 유지부에 동기 늦음 정보를 저장하는 것을 특징으로 하는 정보 처리 장치.
  8. 제 5 항 또는 제 6 항에 있어서,
    상기 계수부는,
    외부로부터 상기 동기 제어 장치에 입력되는 제 1 클록에 근거하여 계수를 행하는 것을 특징으로 하는 정보 처리 장치.
  9. 제 1 연산 처리 장치 및 제 2 연산 처리 장치에 각기 접속된 동기 제어 장치에 의해, 이들 연산 처리 장치의 동기를 관리하는 동기 관리 방법으로서,
    상기 동기 제어 장치는,
    상기 제 1 연산 처리 장치의 출력과 상기 제 2 연산 처리 장치의 출력을 비교함으로써, 상기 제 1 및 제 2 연산 처리 장치의 동기를 감시하고,
    상기 제 1 연산 처리 장치와 상기 제 2 연산 처리 장치의 출력이 일치하지 않을 경우에, 계수를 개시하고,
    계수 개시 후의 계수 정보와 소정의 타임 아웃 시간을 비교하고,
    상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 때에는, 동기 늦음이 발생한 상기 제 1 또는 제 2 연산 처리 장치 중 어느 하나를 정지시키는 것을 특징으로 하는 동기 관리 방법.
  10. 제 9 항에 있어서,
    상기 동기 제어 장치는, 또한
    상기 계수 정보와 상기 타임 아웃 시간이 일치하는 것을 검출한 경우에는, 상기 제 1 및 제 2 연산 처리 장치 중, 상기 동기 늦음이 발생하지 않고 있는 쪽의 연산 처리 장치를 초기화하는 동시에, 상기 제 1 연산 처리 장치의 출력과 상기 제 2 연산 처리 장치의 출력의 비교를 정지하는 것을 특징으로 하는 동기 제어 방법.
KR1020090093924A 2008-10-03 2009-10-01 동기 제어 장치, 정보 처리 장치 및 동기 관리 방법 KR101121116B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008258728A JP5347414B2 (ja) 2008-10-03 2008-10-03 同期制御装置,情報処理装置及び同期管理方法
JPJP-P-2008-258728 2008-10-03

Publications (2)

Publication Number Publication Date
KR20100038159A true KR20100038159A (ko) 2010-04-13
KR101121116B1 KR101121116B1 (ko) 2012-03-20

Family

ID=41360116

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090093924A KR101121116B1 (ko) 2008-10-03 2009-10-01 동기 제어 장치, 정보 처리 장치 및 동기 관리 방법

Country Status (5)

Country Link
US (1) US8667315B2 (ko)
EP (1) EP2175371B1 (ko)
JP (1) JP5347414B2 (ko)
KR (1) KR101121116B1 (ko)
CN (1) CN101714108B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009050161A1 (de) * 2009-10-21 2011-04-28 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten
CN102469474A (zh) * 2010-11-15 2012-05-23 中兴通讯股份有限公司 一种通信设备异常信息的处理方法及装置
CN102043690A (zh) * 2010-12-31 2011-05-04 上海华为技术有限公司 多核处理器故障处理方法及多核处理器
DE102012010143B3 (de) 2012-05-24 2013-11-14 Phoenix Contact Gmbh & Co. Kg Analogsignal-Eingangsschaltung mit einer Anzahl von Analogsignal-Erfassungskanälen
JP5601353B2 (ja) * 2012-06-29 2014-10-08 横河電機株式会社 ネットワーク管理システム
JP6050083B2 (ja) * 2012-10-18 2016-12-21 ルネサスエレクトロニクス株式会社 半導体装置
TWI571712B (zh) * 2015-10-29 2017-02-21 行政院原子能委員會核能研究所 多重容錯控制系統及其同步方法
JP6729407B2 (ja) * 2017-01-13 2020-07-22 株式会社デンソー マイクロコンピュータ
FR3071688B1 (fr) * 2017-09-22 2019-09-27 Thales Procede de syncronisation d'un ensemble de dispositifs, programme d'ordinateur et systeme de syncronisation associes
US10599513B2 (en) 2017-11-21 2020-03-24 The Boeing Company Message synchronization system
US10528077B2 (en) * 2017-11-21 2020-01-07 The Boeing Company Instruction processing alignment system
JP7298442B2 (ja) * 2019-10-25 2023-06-27 株式会社リコー 電子制御装置、電子制御装置のメインプロセッサによる制御方法および電子制御装置のメインプロセッサが実行する制御プログラム
CN113050752B (zh) * 2021-03-29 2023-02-21 中车青岛四方车辆研究所有限公司 用于两个中央处理器时间同步的方法和存储介质
CN113886039B (zh) * 2021-09-18 2023-12-22 中汽创智科技有限公司 一种调度表同步方法、装置、电子设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1253309A (en) * 1969-11-21 1971-11-10 Marconi Co Ltd Improvements in or relating to data processing arrangements
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
US4358823A (en) * 1977-03-25 1982-11-09 Trw, Inc. Double redundant processor
US4490561A (en) * 1983-10-13 1984-12-25 Conoco Inc. Method for alkoxylating fluorinated alcohols
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
JPH0630094B2 (ja) * 1989-03-13 1994-04-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセツサ・システム
GB2268817B (en) * 1992-07-17 1996-05-01 Integrated Micro Products Ltd A fault-tolerant computer system
US5748873A (en) * 1992-09-17 1998-05-05 Hitachi,Ltd. Fault recovering system provided in highly reliable computer system having duplicated processors
US6393582B1 (en) * 1998-12-10 2002-05-21 Compaq Computer Corporation Error self-checking and recovery using lock-step processor pair architecture
JP2004046599A (ja) * 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7426656B2 (en) 2004-03-30 2008-09-16 Hewlett-Packard Development Company, L.P. Method and system executing user programs on non-deterministic processors
JP4117684B2 (ja) * 2004-12-20 2008-07-16 日本電気株式会社 フォルトトレラント・二重化コンピュータシステムとその制御方法
JP2006178616A (ja) * 2004-12-21 2006-07-06 Nec Corp フォールトトレラントシステム、これで用いる制御装置、動作方法、及び動作プログラム
US8826288B2 (en) 2005-04-19 2014-09-02 Hewlett-Packard Development Company, L.P. Computing with both lock-step and free-step processor modes
JP5013309B2 (ja) * 2006-08-18 2012-08-29 日本電気株式会社 フォールトトレラントコンピュータ、そのトランザクション同期制御方法

Also Published As

Publication number Publication date
CN101714108B (zh) 2014-05-07
EP2175371B1 (en) 2015-03-18
US20100088535A1 (en) 2010-04-08
EP2175371A1 (en) 2010-04-14
JP5347414B2 (ja) 2013-11-20
CN101714108A (zh) 2010-05-26
KR101121116B1 (ko) 2012-03-20
JP2010092105A (ja) 2010-04-22
US8667315B2 (en) 2014-03-04

Similar Documents

Publication Publication Date Title
KR101121116B1 (ko) 동기 제어 장치, 정보 처리 장치 및 동기 관리 방법
US7496786B2 (en) Systems and methods for maintaining lock step operation
KR100566338B1 (ko) 폴트 톨러런트 컴퓨터 시스템, 그의 재동기화 방법 및 재동기화 프로그램이 기록된 컴퓨터 판독가능 기억매체
CN100375050C (zh) 高可靠性处理器的片上机制
US6802023B2 (en) Redundant controller data storage system having hot insertion system and method
US7085959B2 (en) Method and apparatus for recovery from loss of lock step
US7774646B2 (en) Surviving storage system takeover by replaying operations in an operations log mirror
JP2008046685A (ja) 二重化システム及び系切り換え方法
JP3030658B2 (ja) 電源故障対策を備えたコンピュータシステム及びその動作方法
KR100566340B1 (ko) 정보 처리 장치
JP5287974B2 (ja) 演算処理システム、再同期方法、およびファームプログラム
KR101038464B1 (ko) 정보 처리 장치 및 제어 방법
JP2006178659A (ja) フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法
JP4629793B2 (ja) 情報処理装置、エラー処理方法
JP3536293B2 (ja) 二重化コンピュータ装置
WO2014112039A1 (ja) 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム
JP3415636B2 (ja) プロセッサ装置
JP2004013723A (ja) 共有メモリを使ったクラスタ構成を採用した情報処理システムの障害処理装置と方法
JPH05216855A (ja) マルチcpu制御方式
JP3539687B2 (ja) プロセッサ二重化方式の情報処理装置
JPH04360242A (ja) 二重化システムの系切替装置およびその方法
JP2001175545A (ja) サーバシステムおよび障害診断方法ならびに記録媒体
JP2005235214A (ja) 不具合が存在するときにスイッチ障害を防止する方法、装置及びソフトウエア
JPH04211841A (ja) 二重化処理装置
JPH0594326A (ja) バス障害検出時のアダプタ処理方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee