KR100238926B1 - 분산 메모리형 멀티프로세서 시스템 및 고장 회복방법 - Google Patents

분산 메모리형 멀티프로세서 시스템 및 고장 회복방법 Download PDF

Info

Publication number
KR100238926B1
KR100238926B1 KR1019970008909A KR19970008909A KR100238926B1 KR 100238926 B1 KR100238926 B1 KR 100238926B1 KR 1019970008909 A KR1019970008909 A KR 1019970008909A KR 19970008909 A KR19970008909 A KR 19970008909A KR 100238926 B1 KR100238926 B1 KR 100238926B1
Authority
KR
South Korea
Prior art keywords
node
checkpoint
nodes
acquisition
communication
Prior art date
Application number
KR1019970008909A
Other languages
English (en)
Other versions
KR970066900A (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 KR970066900A publication Critical patent/KR970066900A/ko
Application granted granted Critical
Publication of KR100238926B1 publication Critical patent/KR100238926B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)

Abstract

노드에 체크 포인트/롤백 방식의 계산기를 이용하였을 때의 노드간 통신을 고속화하는 것을 가능하게 한다. 노드 1, 2, …, N이 통신 스위치(10)를 통해 접속되어, 통신 스위치(10)를 경유하여 노드간 통신을 행하는 시스템에 있어서, 노드는 고장 발생시의 재실행을 가능하게 하기 위해서, 어떤 시점에서 자기(自)노드에 관한 체크 포인트를 취득하여, 고장 발생시에는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 기능을 가지며, 이 기능에 의한 체크 포인트의 취득의 개시를, 통신 스위치(10)를 통한 다른 노드에 대한 데이타 송신을 억제하여, 통신 스위치(10)를 경유하여 송신되는 데이타의 수신을 완료시키고, 통신 스위치(10)에 송신중의 데이타가 존재하지 않은 상태에서 다른 모든 노드와 동기하여 행한다.

Description

분산 메모리형 멀티프로세서 시스템 및 고장 회복 방법
본 발명은 대규모의 과학 기술 계산이나 데이타 베이스 처리등으로 사용되는 분산 메모리형(distributed memory) 멀티프로세서 시스템, 특히 시스템 전체가 높은 신뢰도를 갖는 분산 메모리형 멀티프로세서 시스템에 관한 것이다.
높은 신뢰도를 갖는 계산기를 구현하는 기술의 하나로서, 체크 포인트/롤백(check point/rollback) 방식이 있고, 예컨대 계산기 네트워크로 사용되는 서버 계산기의 신뢰도를 향상시키는 기술로서 채용되고 있다.
도 26은 체크 포인트/롤백 방식 계산기의 동작의 기본 원리를 나타낸 개념도이다. 체크 포인트/롤백 방식 계산기에서는 통상의 데이타 처리의 합간에 정기적으로 체크 포인트를 취득하고 있다. 여기서 말하는 체크 포인트란 재개시 가능한 상태인 것이다.
그리고, 혹시 하드웨어(HW)에 고장이 발생했을 경우, 예컨대, 고장난 HW 기기를 리셋하는 등으로, 고장 원인을 제거한 뒤에, 최후에 취득한 체크 포인트에 시스템을 롤백하여, 그 후, 시스템을 재개시시킨다. 이것이, 체크 포인트/롤백 방식의 계산기의 기본 원리이다.
계산기를 완전히 초기화하는 것과 비교하여, 서비스의 중단이 거의 없다고 하는 장점이 있다.
그런데, 복수의 노드를 고속의 통신로에 결합하여, 대규모의 과학 기술 계산이나 데이타 베이스 처리를 각 계산기에 분산시켜 실행시키는 분산 메모리형 멀티프로세서 시스템이 보급되고 있다. 이 종류의 시스템에서는 노드의 수가 수백 내지 수천이 될 때도 있고, 어느쪽의 노드에서 고장이 발생하면, 전체 시스템을 정지시켜 시스템의 초기화로부터 다시 하던지, 또는 예컨대 고장난 노드가 담당하던 기능을 일시적으로 하여 사용 불가로 할 필요가 있다.
분산 메모리형 멀티프로세서 시스템 전체의 신뢰성(가동률)은 어떤 노드의 고장이 다른 노드의 신뢰성에 영향을 미치지 않는다고 가정하면, 각 노드의 신뢰성(가동률)의 곱으로 표시된다. 예컨대, 각 노드의 가동률을 99.99%로 하여, 노드수를 1024로 하면, 시스템으로서의 가동률은, 90.27%가 되고, 노드수가 증가하면, 전체의 신뢰성(가동률)의 열화를 무시할 수 없게 된다.
그래서, 분산 메모리형 멀티프로세서 시스템의 신뢰성(가동률)을 향상시키는 방법중 하나는 각 노드로서 체크 포인트/롤백 방식의 계산기를 채용하여, 각 노드의 신뢰성(가동률)을 향상시키는 것을 생각할 수 있다. 예컨대, 각 노드의 가동률을 99.999%로 하고, 노드수를 1024로 하면, 시스템으로서의 가동률은 98.98% 가 된다.
이와 같이, 분산 메모리형 멀티프로세서 시스템중의 각 노드로서, 체크 포인트/롤백 방식의 계산기를 채용하는 경우, 통신로를 사용한 노드간의 데이타 통신(이후, 「노드간 통신」이라 함)이 지연된다는 문제가 있다. 즉, 체크 포인트/롤백 방식의 계산기로서는 일반적으로 계산기 외부에 대한 출력 요구에 대해서, 그것을 실제로 출력하는 것을 다음 체크 포인트 취득후까지 지연시키기 위함이다.
도 27은 종래의 체크 포인트/롤백 방식의 분산 메모리형 멀티프로세서 시스템에 있어서의 두개의 노드(계산기 A, 계산기 B)와의 사이에서 데이타 통신을 행하는 경우의 처리 경과를 나타내고 있다. 도 27 에 도시된 바와 같이, 체크 포인트/롤백 방식의 계산기 A가 시각 T1에 있어서 체크 포인트 CKP1을 취득한 후, 다른 계산기 B가 생성한 처리요구(a)를 수신하여, 즉시 처리요구(a)에 대한 처리를 행하고, 응답(b)을 계산기 B로 되돌린 후의 시각 T2에, 고장이 발생했을 경우, 계산기 A는 직전의 시각 T1의 체크 포인트 CKP1으로 되돌아온다. 한편, 계산기 B는 계산기 A가 계산기 B로부터의 처리요구(a)를 수신하지 않은 상태로 되돌아가고 있음에도 불구하고, 계산기 이미 처리요구(a)에 대한 응답(b)을 수취하고 있으므로, 양자간에서 모순이 생기게 된다.
종래의 체크 포인트/롤백 방식의 계산기에서는 이러한 부적합함을 피하기 위해서, 통신 출력등 외부에 영향을 미치게 하는 처리에 관해서는, 그러한 처리요구(a) 응답을 즉시 출력하지 않고서, 다음 체크 포인트의 취득이 완료될 때까지 기다리게한 후, 통신 출력 처리를 개시하도록 되어 있다.
즉, 도 28에 도시된 바와 같이, 계산기 A는 계산기 B로부터의 처리요구(a) 에 대한 처리를 행하고, 계산기 B에 응답을 되돌리기 위한 요구 블록을 작성한 후에 통신 출력 처리를 지연시킨다. 계산기 A는 도 30에 도시된 바와 같이, 시각 T3로, 다음 체크 포인트 CKP2의 취득이 완료한 시점에서 계산기 B에 대하여 실제로 응답을 되돌린다.
그 후, HW의 고장이 발생하여도, 시각 T3에서 취득한 체크 포인트 CKP2로부터 재개시되므로, 계산기 B에 대한 응답(b')은 확실히 계산기 B로 건네 주게 된다.
또한, 도 30에 도시된 바와 같이, 계산기 A는 시각 T3이 되기 전에, 시각 T2에 있어서 HW의 고장 FLT1이 발생했을 경우, 시각 T1에서 취득한 체크 포인트 CKP1로부터 재개시 된다. 이 경우, 계산기 A는 계산기 B로부터 처리요구(a)를 수신한 것도 소거되고 있는 것에 대하여, 계산기 B는 처리 요구 (a)를 보내고, 계산기 A가 수신한 것을 기억하고 있다. 그러나, 이 경우에는, 계산기 B는 어떤 일정 시간을 경과하여도, 처리요구(a)에 대한 응답이 계산기 A로부터 되돌아오지 않기 때문에, 계산기 A의 이상을 검출할 수 있다. 즉, 계산기 B는 처리요구(a)를 다시 송신하는 등의 처리에 의해, 정상적인 상태로 복귀할 수 있다.
따라서, 분산 메모리형 멀티프로세서 시스템의 각 노드에, 종래의 체크 포인트/롤백 방식의 계산기를 채용하면, 노드간 통신에 관해서, 평균적으로 체크 포인트 취득 간격의 절반 시간만큼 지연된다.
체크 포인트 취득의 간격은 시스템에 따라 다양하지만, 체크 포인트 취득 자체에 어느 정도의 시간이 걸리기 때문에, 짧은 경우라도 수밀리초보다 짧게 하는 것은 실제적이지 않다. 따라서, 일반적으로는, 조심스럽게 견적하여도, 노드간 통신은 평균적으로 1밀리초 이상의 지연 시간을 동반하게 된다.
한편, 분산 메모리형 멀티프로세서 시스템에 있어서의 노드간 통신의 지연 시간은 애플리케이션 프로그램이 하드웨어를 직접 제어하는 경우, 수십마이크로초 정도이다.
따라서, 체크 포인트/롤백 방식의 계산기를 단순히 노드로서 채용하면, 본래, 수십마이크로초 정도의 데이타 통신에 1밀리초 이상의 지연 시간을 수반하게 되며, 노드사이에서 데이타 통신이 빈번히 발생하는 경우에는, 시스템 전체가 현저한 성능 저하를 초래하게 된다.
본 발명은 상기한 바와 같은 사정을 고려하여 이루어진 것으로, 노드에 체크 포인트/롤백 방식의 계산기를 이용했을 때의 노드간 통신을 고속화하는 것이 가능한 분산 메모리형 멀티프로세서 시스템을 제공하는 것을 목적으로 한다.
도 1은 본 발명의 실시의 형태에 관계되는 체크 포인트/롤백 방식의 분산 메모리형 멀티 프로세서 시스템의 구성을 나타내는 블록도.
도 2의 (a) 및 (b)는 BIB를 이용한 데이타의 보존과 롤백를 설명하기 위한 도면.
도 3은 실시형태에 있어서의 노드간 통신의 송신측 동작을 나타내는 흐름도.
도 4는 실시형태에 있어서의 노드간 통신의 수신측 동작을 나타내는 흐름도.
도 5는 실시형태에 있어서의 노드간 통신을 지연없이 실행하여도 문제가 없는 것을 설명하기 위한 도면.
도 6은 실시형태에 있어서의 노드간 통신을 지연없이 실행하여도 문제가 없는 것을 설명하기 위한 도면.
도 7은 각 노드의 CPU1-1, 2-1, …, N-1이, 일제히 체크 포인트 취득을 행하는 동작을 설명하기 위한 흐름도.
도 8은 복수의 노드 1, 2, …, N에 있어서의 통상 데이타 처리와 체크 포인트 취득의 타임차트를 나타내는 도면.
도 9의 (a), (b) 및 (c)는 각 노드를 논리적으로 대응시키는 2진 트리를 나타내는 도면.
도 10은 BIB 테이블의 일례를 나타내는 도면.
도 11은 2개의 BIB 카운터와 2개의 BIB의 대응 관계를 나타내는 도면.
도 12는 멀티프로세서 시스템으로 실행되는 체크 포인트 취득 처리 전체의 흐름을 나타내는 도면.
도 13은 체크 포인트 취득 처리의 순서를 나타내는 흐름도.
도 14는 체크 포인트로 롤백하여 재개시하는 방법을 설명하기 위한 흐름도.
도 15의 (a), (b) 및 (c)는 장해 발생시의 노드간 통신을 설명하기 위한 2진 트리를 나타내는 그림.
도 16의 (a), (b) 및 (c)는 체크 포인트 취득의 개시를 동기시키기 위한 노드간 통신을 설명하기 위한 2진 트리를 나타내는 도면.
도 17은 체크 포인트 취득의 개시 지시 요구를 수신했을 때의 노드의 동작을 설명하기 위한 흐름도.
도 18은 체크 포인트 취득의 개시를 노드간에서 동기시키는 동작을 설명하기 위한 흐름도.
도 19는 노드간 통신의 송신측 동작을 나타내는 흐름도.
도 20은 체크 포인트 취득의 개시를 노드간에서 동기시키는 동작을 설명하기 위한 흐름도.
도 21의 (a) 및 (b)는 노드간 통신의 수신 처리를 설명하기 위한 흐름도.
도 22는 2단계 체크 포인트 방식의 동작을 나타내는 타임차트.
도 23은 노드가 2단계 체크 포인트를 행하기 위한 캐시 플래시의 제어 방법을 나타내는 흐름도.
도 24는 복수의 노드 A∼P에 대한 그룹화의 개념을 나타내는 도면.
도 25는 복수의 노드 A∼P에 대한 그룹화의 개념을 나타내는 도면.
도 26은 체크 포인트/롤백 방식 계산기의 동작의 기본 원리를 나타낸 개념도.
도 27은 2개의 노드(계산기 A, 계산기 B)와의 사이에서 데이타 통신을 행할 때의 통신 처리 요구를 즉석으로 실행한 경우의 부적합함의 예를 나타내는 도면.
도 28은 2개의 노드(계산기 A, 계산기 B)와의 사이에서 데이타 통신을 행할 때의 통신 처리 요구를 지연시키는 예를 나타내는 도면.
도 29는 2개의 노드(계산기 A, 계산기 B)와의 사이에서 데이타 통신을 행할 때의 통신 처리 요구를 지연시킨 후의 새로운 체크 포인트를 채취한 예를 나타내는 도면.
도 30은 2개의 노드(계산기 A, 계산기 B)와의 사이에서 데이타 통신을 행할 때의 통신 처리 요구를 지연시킨 후에 고장이 발생한 경우의 예를 나타내는 도면.
<도면의주요부분에대한부호의설명>
1∼N : 노드
1-1∼N-1 : CPU
1-2∼N-2 : 통신 어댑터
1-3∼N-3 : 메인 메모리
1-4∼N-4 : BIB
1-5∼N-5 : 캐시 메모리
10 ; 통신 스위치
본 발명은 적어도 프로세서와 메인 메모리를 포함하는 노드가 통신로를 통해 2개이상 접속되며, 상기 통신로를 경유하여 노드간 통신을 행하는 분산 메모리형 멀티프로세서 시스템에 있어서, 상기 노드는 고장 발생시의 재실행을 가능하게 하기 위해, 어떤 시점에서 자기 노드에 관한 체크 포인트를 취득하여, 고장 발생시에는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 기능을 가지며, 상기 기능에 의한 체크 포인트의 취득의 개시를, 상기 통신로를 통한 다른 노드에 대한 데이타 송신을 억제하고, 상기 통신로를 경유하여 송신되는 데이타의 수신을 완료시켜, 상기 통신로에 송신중인 데이타가 존재하지 않은 상태에서, 다른 모든 노드와 동기하여 행하는 것을 특징으로 한다.
이것에 의해, 체크 포인트를 취득할 때, 통신로를 통해 전송중인 데이타가 존재하지 않은 상태에서 분산 메모리형 멀티프로세서 시스템을 구성하는 모든 노드에 대해서, 체크 포인트를 동기하여 취득한다. 그리고, 어떠한 고장이 발생했을 경우에는 통신로에 관해서는, 전송중인 데이타가 존재하지 않은 상태를 재현하여, 각 노드에 대해서 직전에 취득한 체크 포인트에 롤백한 후, 데이타 처리를 재개시한다.
즉, 분산 메모리형 멀티프로세서 시스템 전체로 체크 포인트를 취득하는 동안, 통신로를 통한 노드간의 통신을 행하지 않음으로써, 통신로의 상태를 보존할 필요를 없앨 수 있다.
또한, 상기 노드는 모든 다른 노드와 동기하여 취득한 체크 포인트를 모든 노드에서 다음 체크 포인트의 취득이 완료될 때까지 유지시키고, 어느 하나의 노드에 고장이 발생했을 경우에, 다음 체크 포인트의 취득까지 다른 모든 노드와 동기하여 고장 발생이 통지되는 것으로서, 상기 노드는 통상의 데이타 처리에 동반하는 노드간의 데이타 송신을 다음 체크 포인트의 취득후까지 지연시키지 않고, 즉시 실행하는 것을 특징으로 한다.
이것에 의해, 각 노드는 노드간의 데이타 전송을 다음 체크 포인트까지 지연시키지 않고서 행하지만, 그 이외의 데이타 송신은 다음 체크 포인트의 취득후까지 지연시키므로, 노드간에서 전송되는 데이타가 고장 발생전 데이타 처리의 경우와, 고장 발생에 동반하는 롤백후의 데이타 처리의 경우로 달랐다고 해도, 그 영향은 다음 체크 포인트의 취득이 종료되지 않은 동안은 분산 메모리형 멀티프로세서 시스템을 구성하는 노드내에 머물고 있다.
따라서, 통신로를 통한 노드간의 통신은 지연시키지 않고 행할 수 있다.
또한, 상기 노드의 프로세서에 카피백형의 캐시 메모리가 설치되고, 상기 체크 포인트가 상기 메인 메모리상에 취득되는 것으로, 상기 노드는, 모든 다른 노드와 동기하여 행하는 체크 포인트의 취득전에, 통상의 데이타 처리와 병행하여 모든 다른 노드와 동기하며, 상기 캐시 메모리중에 존재하는 더티한 데이타의 일부를 강제적으로 상기 메인 메모리로 재기록하는 것을 특징으로 한다.
일반적으로, 카피백형의 캐시 메모리를 갖는 프로세서로, 체크 포인트를 메인 메모리상에 취득하는 방식의 체크 포인트/롤백 방식의 분산 메모리형 멀티프로세서 시스템의 경우, 체크 포인트 시간의 대부분이 캐시 메모리중에 존재하는 더티한 데이타를 메인 메모리에 재기록하는 처리에 소비되고 있다. 이것을 단축시키기 위해, 통상의 데이타 처리중에 캐시 메모리중에 존재하는 더티한 데이타를 메인 메모리에 강제적으로 재기록함으로써, 체크 포인트의 취득을 행하기 전에, 캐시 메모리중에 존재하는 더티한 데이타의 양이 감소된다.
또한, 상기 노드의 각각은 어떤 시각이 된 시점에서 상기 체크 포인트의 취득을 개시하여, 다른 모든 노드와 상기 체크 포인트의 취득을 동기시키는 것을 특징으로 한다.
이렇게 하여, 각 노드는 어떤 시각이 된 시점에서 동시에 체크 포인트의 취득을 개시하는 것을 미리 결정해 놓음으로써, 체크 포인트의 취득의 개시를 서로 통지할 필요가 없으며, 그것에 의해 모든 노드가 동기를 취하는 오버 헤드를 경감시킬 수 있다.
또한, 상기 노드 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초한 관계의 어떤 노드에 대하여 체크 포인트의 취득 개시의 동기를 취하기 위한 데이타 송신을 행하는 것이며, 체크 포인트의 취득을 개시해야 하는 것을 검출한 노드는, 부모 노드에 대하여 상기 체크 포인트 취득 개시 요구를 송신하고, 상기 체크 포인트 취득 개시 요구를 자식 노드로부터 수신한 노드는, 부모 노드에 상기 체크 포인트 취득 개시 요구를 송신하는 것이고, 루트 노드에까지 순차적으로, 상기 체크 포인트 취득 개시 요구를 송신하며, 상기 체크 포인트 취득 개시 요구를 자식 노드로부터 수신한 루트 노드는, 모든 자식 노드에 대하여 체크 포인트 취득 지시를 송신하고, 상기 체크 포인트 취득 지시를 부모 노드로부터 수신한 노드는, 자식 노드에 상기 체크 포인트 취득 지시를 송신하는 것으로, 모든 노드에 대하여 체크 포인트 취득 지시를 부여하여, 모든 노드에서 체크 포인트의 취득의 개시의 동기를 취하는 것을 특징으로 한다.
이것에 의해, 어떤 노드에서 체크 포인트의 취득을 개시해야 하는 것을 검출하면, 체크 포인트 취득의 개시 요구가 트리 구조의 경로를 통하여, 우선 루트 노드에 통지되며, 그 후, 루트 노드로부터 자식 노드에 대하여 체크 포인트 취득 지시를 부여하는 것으로, 순차적으로 모든 노드에 체크 포인트 취득 지시가 통지된다.
또한, 상기 노드 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초한 관계의 어떤 노드에 대하여 체크 포인트의 취득 개시의 동기를 취하기 위한 데이타 송신을 행하는 것으로, 체크 포인트의 취득을 개시해야 하는 것을 검출한 노드는 부모 노드 및 모든 자식 노드에 대하여 체크 포인트 취득 지시를 송신하고, 상기 체크 포인트 취득 지시를 수신한 노드는 부모 노드 및 모든 자식 노드중 상기 체크 포인트 취득 지시를 송신해 온 노드를 제외한 모든 노드에 대하여 상기 체크 포인트 취득 지시를 송신하는 것으로, 모든 노드에서 체크 포인트의 취득의 개시의 동기를 취하는 것을 특징으로 한다.
이것에 의해, 어떤 노드에서 체크 포인트의 취득을 개시해야 하는 것을 검출하면, 체크 포인트 취득의 개시 지시 요구가 트리 구조의 경로를 통하여 모든 노드에 전해진다. 이 때, 2개이상의 노드로부터 체크 포인트 취득의 개시 지시 요구가 제시된 경우에도, 2개이상의 노드로부터 체크 포인트 취득의 개시 지시 요구를 받은 노드는, 지연되어 수신한 쪽을 버림으로써 요구를 중복하여 보내는 것을 회피할 수 있다.
또한, 적어도 프로세서와 메인 메모리를 포함하는 노드가 통신로를 통해 2개이상 접속되고, 상기 통신로를 경유하여 노드간 통신을 행하는 분산 메모리형 멀티프로세서 시스템에 있어서, 상기 노드는 고장 발생시의 재실행을 가능하게 하기 위해서, 어떤 시점에서 자기 노드에 관한 체크 포인트를 취득하여, 고장 발생시에는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 기능과, 상기 기능에 의해 체크 포인트를 채취할 때, 자기 노드가 데이타 수신 불가가 되도록 상기 통신로를 제어하는 제 1 통신 수단과, 통상의 데이타 처리에 동반하는 노드간의 데이타 송신을 상대 노드가 데이타 수신 불가인지의 여부를 확인하는 제 2 통신 수단을 구비하며, 모든 다른 노드와 동기하여 취득한 체크 포인트를 모든 노드에서 다음 체크 포인트의 취득이 완료될 때까지 유지하고, 어느 하나의 노드에 고장이 발생한 경우에, 다음 체크 포인트의 취득까지 다른 모든 노드와 동기하여 고장 발생이 통지되는 것으로, 통상의 데이타 처리에 동반하는 노드간의 데이타 송신을 다음 체크 포인트의 취득후까지 지연시키지 않고 즉시 실행하며, 그 결과 상기 제 2 통신 수단에 의해서 상대 노드가 데이타 수신 불가인 것을 확인했을 때, 데이타 송신이 가능하게 될때가지 대기 상태가 되는 것을 특징으로 한다.
이것에 의해, 각 노드는 체크 포인트의 취득을 개시할 때, 데이타 수신 불가가 되도록 통신로를 제어하여, 데이타를 다른 데이타에 송신하는 경우 상대 노드가 데이타 수신 가능한지의 여부를 확인하므로, 체크 포인트 취득을 개시한 노드가, 새로운 데이타의 수신에 의해, 체크 포인트의 취득을 다시 할 필요가 없다.
또한, 적어도 프로세서와 메인 메모리를 포함하는 노드가 통신로를 통해 2개이상 접속되고, 상기 통신로를 경유하여 노드간 통신을 행하는 분산 메모리형 멀티프로세서 시스템에 있어서, 상기 노드는 고장 발생시의 재실행을 가능하게 하기 위해서, 어떤 시점에서 자기 노드에 관한 체크 포인트를 취득하여, 고장 발생시에는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 기능을 가지며, 모든 다른 노드와 동기하여 취득한 체크 포인트를 모든 노드에서 다음 체크 포인트의 취득이 완료될 때까지 유지하며, 어느 하나의 노드에 고장이 발생한 경우에, 다음 체크 포인트의 취득까지 다른 모든 노드와 동기하여 고장 발생이 통지되는 것이며, 상기 기능에 의해서 체크 포인트의 취득을 개시한 후, 다른 노드로부터 통상의 데이타 처리에 동반하는 노드간의 데이타 송신을 수신한 경우에, 고장 발생을 통지하는 것인 경우에는, 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하여, 그 이외의 통지인 경우에는, 체크 포인트의 취득을 다시 하는 것을 특징으로 한다.
이것에 의해, 모든 노드에 체크 포인트 취득의 개시 요구가 행한 것을 확인한 후, 자기 노드에 있어서의 체크 포인트 취득을 개시할 필요가 반드시 있는 것은 아니며, 개시 요구를 확인하지 않고서 체크 포인트 취득을 개시할 수 있다.
또한, 상기 노드 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초한 관계의 어떤 노드에 대하여 체크 포인트의 취득 완료의 동기에 관해서 데이타 송신을 행하는 것으로, 모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 노드는 부모 노드에 체크 포인트 완료의 준비 완료를 송신하여, 모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 루트 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 송신하는 동시에 체크 포인트 취득을 완료시켜, 통상의 데이타 처리를 재개하며, 부모 노드로부터 체크 포인트 완료 지시를 받았을 때, 또는 이미 통상의 데이타 처리를 재개한 노드로부터 통상의 데이타 통신을 수취했을 때, 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 보내는 동시에 체크 포인트 취득을 완료시켜, 통상의 데이타 처리를 재개하는 것을 특징으로 한다.
이와 같이, 체크 포인트 완료의 준비 완료 통지는 「트리」의 잎노드로부터 루트 노드에 전해진다. 그리고, 루트 노드가 모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수취한 시점에서 시스템 전체의 체크 포인트를 취득할 수 있게 된다. 이어서, 루트 노드로부터 체크 포인트 완료 지시가 잎노드를 향하여 전해짐으로써, 각 노드에 있어서 통상의 데이타 처리를 재개한다.
또한, 상기 노드 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초한 관계의 어떤 노드에 대하여 체크 포인트의 취득 완료의 동기를 취하기 위한 데이타 송신을 행하는 것으로, 상기 각 노드는 체크 포인트의 취득을 개시한 시점에서, 다른 노드로부터의 데이타 수신을 불가능으로 하고, 체크 포인트의 취득이 완료하기 직전에, 다른 노드로부터의 데이타 수신을 가능하게 하는 동시에 통상의 데이타 처리를 재개하는 것으로, 모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 노드는 부모 노드에 체크 포인트 완료의 준비 완료를 송신하고, 모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 루트 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 송신하는 동시에 체크 포인트 취득을 완료시켜, 이전의 체크 포인트를 파기하여, 부모 노드로부터 체크 포인트 완료 지시를 수취했을 때, 또는 이미 통상의 데이타 처리를 재개한 노드로부터 통상의 데이타 통신을 수취했을 때, 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 보내는 동시에 체크 포인트 취득을 완료시켜, 이전의 체크 포인트를 파기하는 것을 특징으로 한다.
이와 같이, 통상의 데이타 처리를 미리 재개할 수 있기 때문에, 보다 효과적으로 시스템 전체의 성능 향상을 실현할 수 있다.
이렇게 해서, 통신로를 사용하여 각 노드가 일제히 통상의 데이타 처리의 재개 또는 직전의 체크 포인트의 데이타의 파기를 행하는 것이 아니라, 통신로와는 별도의 배리어 동기 기구를 설치함으로써, 동기를 위한 노드간 통신을 행할 필요가 없어지고, 보다 성능을 향상시킬 수 있다.
또한, 상기 부모 노드에 있어서 모든 자식 노드로부터의 체크 포인트 취득의 완료의 준비 완료가 일정 시각까지 수취할 수 있는지의 여부에 따라 고장을 검출하는 것을 특징으로 한다.
이렇게 해서, 노드에 관한 고장에는 그 노드가 다른 노드에서 보아 무응답 상태가 되는 것도 포함된다. 그 경우, 어떤 정해진 시간을 경과하여도 루트 노드에는 모든 자식 노드로부터 체크 포인트 취득의 종료 통지를 수취할 수 없게 된다. 그래서, 모든 노드에 대하여, 필요하면 프로세서(CPU)의 초기화를 행함으로써, 이러한 무응답 상태로부터 빠져 나오게 하는 동시에, 직전의 체크 포인트로의 롤백를 지시함으로써, 시스템 전체로서 고장 발생전의 상태로부터 통상의 데이타 처리를 재개할 수 있다.
또한, 상기 각 노드는 상기 기능에 의해 체크 포인트를 취득하는 취득 노드인지, 체크 포인트의 취득을 행하지 않은 비취득 노드인지를 설정하는 수단을 가지며, 상기 수단에 의해서 상기 취득 노드에 설정된 노드는 체크 포인트의 취득 시간이 상기 통신로를 통한 다른 노드에 대한 데이타 송신을 억제하고, 상기 통신로를 경유하여 송신되는 데이타의 수신을 완료하며, 상기 수단에 의해서 상기 비취득 노드에 설정된 노드는 상기 통신로를 통한 취득 노드에 대한 데이타 송신을 억제하고, 상기 통신로에 취득 노드에 대하여 송신중인 데이타가 존재하지 않는 상태에서, 다른 모든 노드와 동기하여 행하며, 어느 하나의 상기 취득 노드에 고장이 발생했을 때, 상기 비취득 노드는 상기 통신로로의 데이타 송신을 억제하며, 상기 통신로를 경유하여 송신되는 데이타의 수신을 완료시켜, 상기 통신로에 통신중인 데이타가 없도록 한 상태로, 상기 취득 노드는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 것을 특징으로 한다.
이것에 의해, 분산 메모리형 멀티프로세서 시스템내의 복수의 노드를 그룹화하여, 각 그룹마다 다른 애플리케이션(예컨대 데이타 베이스 시스템, 의사 결정 지원 시스템 등)을 실행하는 경우에, 노드 단위로 실행하는 애플리케이션에 따른 체크 포인트 취득의 유무(취득 노드, 비취득 노드)를 선택 설정할 수 있다. 그 때, 노드간 통신이 취득 노드 또는 비취득 노드중 어느 하나의 사이에서 행해지는지에 따라 데이타 전송이 제어된다.
또한, 상기 노드가 그룹화되어 그룹마다 다른 애플리케이션을 실행하고, 각그룹에 속하는 노드마다 체크 포인트를 취득하는 것으로, 어떤 그룹에 속하는 각 노드가 체크 포인트를 취득하고 있을 때, 다른 그룹에 속하는 노드는 상기 통신로를 통해 다른 노드로의 데이타 송신을 행하며, 다른 그룹에 속하는 노드사이의 데이타간 통신은 다음 체크 포인트의 취득후까지 지연시켜, 어떤 그룹에 속하는 어떤 노드에서 고장이 발생했을 때는 다른 그룹에 속하는 모든 노드는, 상기 통신로로의 데이타 송신을 억제하고, 상기 통신로를 경유하여 송신하고 있는 데이타의 수신을 완료시키며, 상기 통신로에 통신중인 데이타가 없도록 하여, 고장이 발생한 그룹에 속하는 모든 노드는 각각 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 것을 특징으로 한다.
이것에 의해, 분산 메모리형 멀티프로세서 시스템내의 복수의 노드를 실행하는 애플리케이션마다 그룹화하는 것으로 체크 포인트 취득에 관한 다른 노드와의 동기 제어가 그룹마다 행해지므로, 체크 포인트에 필요한 처리 부담(오버 헤드)이 경감된다. 단, 다른 그룹의 노드사이에서의 통신로를 통한 데이타 송신은 그룹사이에서 부정합이 생기지 않도록 제어된다.
이하, 도면을 참조하여 본 발명의 실시의 형태에 대해서 설명한다. 도 1은 제 1 의 실시형태에 관계되는 체크 포인트/롤백 방식의 분산 메모리형 멀티프로세서 시스템의 구성을 나타내는 블록도이다. 도 1에 도시된 분산 메모리형 멀티프로세서 시스템은 복수개(N개)의 노드(계산기) 1, 2, …, N을 가지며, 통신 스위치(10)(통신로)에 의해 서로 접속되어 있다.
각 노드 1, 2, …, N은 CPU1-1, 2-1, …, N-1과, 통신 어댑터 1-2, 2-2, …, N-2와, 메인 메모리 1-3, 2-3, …, N-3과, BIB(Before Image Buffer) 1-4, 2-4, …, N-4와, 캐시 1-5, 2-5, …, N-5를 가지고 있다. 각 노드의 통신 어댑터 2-1, 2-2, …, N-2는 통신 스위치(10)와 접속되어 있다.
각 노드 1, 2, …, N은 고장 발생시의 재실행을 가능하게 하기 위해, 정기적으로 자기 노드에 관한 체크 포인트를 취득하고, 고장 발생시에는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 기능을 가지며, 이 기능을 실현하기 위해서 BIB1-4, 2-4, …, N-4라 불리우는 특수한 하드웨어 기구가 설치되어 있다.
또, 도 1에 나타난 제 1 실시형태의 구성에서는 각 노드 1, 2, …, N이 갖는 CPU의 수는 각각 하나로 하고 있지만, 하나의 노드가 갖는 CPU의 수가 2이상인 멀티프로세서 구성이어도 좋다. 또한, BIB는 체크 포인트/롤백 방식의 계산기를 실현하는 하나의 수단이며, 다른 실현법을 적용하여도 좋다.
또, 노드에 의해서 CPU의 수나 CPU의 종류, 메인 메모리의 용량, 오퍼레이팅 시스템의 종류 등이 달라도 상관없다. 다만, 시스템을 관리하는 관점에서는 각 노드가 같은 하드웨어 구성으로 동일한 오퍼레이팅 시스템인 쪽이 바람직하다.
도 2의 (a) 및 (b)는 도 1의 노드 1, 2, …, N에 있어서, BIB라는 로컬 메모리를 사용한 데이타의 보존과 롤백를 설명하는 도면으로, 메인 메모리의 데이타가 갱신될 때에, 갱신이 발생한 어드레스와 갱신전의 데이타를 BIB에 보존하여(도 2의 (a)), BIB를 사용하여 메인 메모리를 원래의 상태로 되돌리는(롤백) 상태를 나타내고 있다(도 2의 (b)).
우선 BIB4는 CPU1이 캐시 메모리(5)속에서 데이타를 갱신했을 때, 시스템 버스(6)에 제시되는 캐시 메모리의 일관성(coherency)을 유지하기 위한 버스 명령을 모니터링하는 것으로, 어떤 어드레스의 데이타가 재기록 되었는지를 검지한다. BIB는 메인 메모리중의 재기록 요구가 있었던 어드레스의 데이타(아직 갱신되기전의 데이타)를 독출하여, 그들 어드레스와 데이타와의 쌍을 버퍼에 보존한다.
예컨대, 도 2의 (a)에 있어서, CPU1이 캐시 메모리상에서 100번지에 X를 기록할 때, BIB4는 100번지에 기록이 행해진 것을 검지하여, 메인 메모리로부터 100번지의 내용 A를 독출하고, BIB내에 100번지의 내용이 원래는 A이었던 것을 기억한다.
그 후, 고장이 발생하는 등으로 하여, 메인 메모리를 원래의 상태로 롤백하는 경우, 도 2의 (b)에 도시된 바와 같이, 캐시 메모리(5)의 내용을 무효화하고, BIB4에 보존되어 있는 어드레스와 원래의 값을 사용하여, 메인 메모리의 내용을 원래의 상태로 되돌린다. 메인 메모리의 내용이 직전의 체크 포인트의 상태로 되돌아가면 BIB를 클리어하여 통상의 데이타 처리로 되돌아간다.
노드 1, 2, …, N은 체크 포인트를 각각의 메인 메모리 1-3, 2-3, …, N-3위에 취득한다. 그리고, BIB에 체크 포인트로부터의 메인 메모리 1-3, 2-3, …, N-3에 대한 갱신 이력을 보존함으로써, 고장이 발생한 경우의 메인 메모리의 롤백을 가능하게 하고 있다.
노드 1, 2, …, N에서, 새로운 체크 포인트를 메인 메모리상에 취득하는 순서는 다음과 같다.
A1에서는 CPU의 콘텍스트(레지스터의 값등)를 메인 메모리상에 보존한다.
A2에서는 캐시 메모리상에서 갱신된 데이타를 메인 메모리에 재기록(플래시)한다.
A3에서는 BIB의 내용을 클리어하여, 체크 포인트 처리를 종료하고, 통상의 데이타 처리로 되돌아간다.
여기서, A3의 처리는, 체크 포인트 취득의 완료를 의미하며, A3을 실행하지 않는 동안에, 고장이 발생한 경우는 하나 앞(직전)의 체크 포인트로 롤백된다. 한편, A3을 실행한 후에, 고장이 발생한 경우는 이 체크 포인트(즉 A3이 완료한 시점)으로 롤백된다.
시스템에 고장이 발생했을 경우에, 직전의 체크 포인트로 롤백하여 재개시하는 순서는 다음과 같다.
B1에서는 캐시 메모리를 무효화(invalidate)한다.
B2에서는 BIB에 기록되어 있는 어드레스와 갱신전의 데이타의 값을 사용하여, 메인 메모리를 직전의 체크 포인트로 되돌린다.
B3에서는 메모리상에 보존된 CPU의 콘텍스트를 CPU로 복원함으로써, 재개시한다.
다음에, 노드간 통신에 대해서 설명한다. 제 1 실시형태에 있어서, 어떤 노드(송신 노드)로부터 다른 노드(수신 노드)로의 메세지 전송은 다음과 같은 순서로 행해진다.
C1에서는 송신 노드의 메인 메모리상에 메세지를 작성한다.
C2에서는 송신 노드의 통신 어댑터의 기동한다.
C3에서는 통신 스위치(10)에 의한 루틴한다.
C4에서는 수신 노드의 통신 어댑터의 기동한다.
C5에서는 수신 노드의 메인 메모리상에 메세지를 격납.
여기서, 애플리케이션 프로그램과 노드간 통신 제어부(제 1 실시형태에서는 시스템 프로그램의 일부로서 실현된다)의 연계에 대해서 설명한다. 여기서는, 설명을 간단하게 하기 위해서 노드 1을 송신측 노드, 노드 N을 수신측 노드로서 설명한다.
도 3은 노드간 통신의 송신측 동작을 나타내는 흐름도이다. 애플리케이션 프로그램이 다른 노드 N으로 송신하는 송신 메세지를 메인 메모리 1-3상에 작성하면(단계 Al), 시스템 콜을 실행하고, 시스템 프로그램중의 노드간 통신 제어부를 콜한다(단계 A2).
노드간 통신 제어부는 CPU1-1을 인터럽트 금지로 하여(단계 A3), 통신 어댑터 1-2의 제어 레지스터에 송신 메세지를 지정된 노드 N으로 보내기 위한 제어 정보를 세트하여, 통신 어댑터를 기동한다(단계 A4). 그 후, CPU의 인터럽트 금지를 해제한다(단계 A5).
CPU를 인터럽트 금지로 하는 것은 일반 I/0 기기의 제어에 있어서, 올바른 동작을 행하게 하기 위해서 널리 행해지고 있는 것이다. 그러나, 본 발명과 같이 체크 포인트/롤백 방식의 계산기를 이용하는 구성에 있어서는, 통신 어댑터를 조작하고 있는 도중이라는 어중간한 상태로 체크 포인트가 취득되는 것을 막기 위함이라는 의미도 갖는다.
일반적으로, I/O 기기의 레지스터를 조작중에 체크 포인트 처리를 행하면, 고장이 발생하여, 그 I/O 기기의 레지스터 조작의 도중에 재개시하게 되어, 동작을 보증할 수 없다. I/O 기기의 레지스터 조작의 도중에 체크 포인트 처리를 개시하지 않은 것 자체는 본 발명의 특징이 아니라, 종래의 체크 포인트/재개시 방식의 계산기로 채용되고 있다.
최후에 통신 어댑터 1-2의 송신 종료에 의해, 다른 노드 N에 대한 송신 처리의 종료를 확인하고(단계 A6), 노드간 통신 제어부는 메세지의 송신을 요구한 애플리케이션 프로그램(송신 요구 공정)을 실행 가능 상태로 한다(단계 A7).
도 4는 노드간 통신의 수신측 동작을 나타내는 흐름도이다. 우선, 다른 노드 1로부터 메세지의 수신 요구를 통신 어댑터 N-2가 검출하면, 인터럽트가 발생하고, 노드간 통신 제어부에서의 처리가 시작된다(단계 B1).
노드간 통신 제어부는 메세지 격납용 영역인 수신 버퍼를 메인 메모리 N-3상에 할당하여(단계 B2), 통신 어댑터 N-2에 의해서 수신한 메세지를 수신 버퍼에 격납하도록 제어 레지스터에 제어 정보를 세트한 후, 통신 어댑터를 기동한다(단계 B3).
통신 어댑터 N-2에서의 수신이 종료되면(단계 B4), 노드간 통신 제어부는 수신한 메세지가 다른 노드에서의 고장 발생을 통지하는 메세지인지 조사한다(단계 B5).
여기서, 수신한 메세지가 다른 노드에서의 고장 발생을 통지하는 메세지인 경우(단계 B5의 예), 장해 처리부로 점프하고, 모든 노드가 하나 앞의 체크 포인트에 롤백하여, 재개시하기 위한 처리를 행한다.
한편, 수신한 메세지가 고장 발생을 통지하는 메세지 이외인 경우, 즉 통상의 데이타 처리에 관한 메세지인 경우에는(단계 B5의 아니오), 그 메세지를 수신해야 할 애플리케이션 프로그램이 메세지 수신 대기로 되어 있으면, 그 애플리케이션 프로그램을 실행 가능 상태로 한다.
본 발명에 의한 분산 메모리형 멀티프로세서 시스템에서는 노드간 통신의 요구가 발생하면, 다음 체크 포인트 취득 완료까지 기다리지 않고 즉석으로 노드간 통신을 실행함으로써, 노드간 통신을 고속화한다.
이것을 가능하게 하기 위해서는 고장이 발생한 경우에의 대처가 필요해진다.
본 발명의 제 1 실시형태에서는 다음과 같은 구성 또는 방법 D1 내지 D4를 설치함으로써, 체크 포인트 취득 완료까지 기다리지 않고 즉석으로 노드간 통신이 가능하도록 하고 있다.
D1에서는 모든 노드가 동기하여 체크 포인트를 취득한다(불완전한 동기에 의해 실현하는 방법에 대해서는 후술하는 제 3 실시형태, 제 4 실시형태에 있어서 설명한다).
D2에서는 어떤 노드에서 고장이 발생한 경우, 모든 노드가, 다음 체크 포인트의 취득을 완료하기(BIB를 클리어하기전)까지, 그 장해가 발생한 것을 알고, 모든 노드가 직전의 체크 포인트로 롤백한다.
D3에서는 노드간 통신 이외의 I/O 기기로의 입출력이나 다른 계산기(예컨대, 다른 애플리케이션을 실행하는 별도의 노드 그룹중의 계산기)와의 통신의 요구는 다음 체크 포인트를 취득한 후까지, 그 실행을 지연시킨다.
D4에서는 체크 포인트의 취득중에는 통신로에 전송중인 데이타가 존재하지 않는 상태로 한다. 즉, 체크 포인트를 취득할 때, 통신 스위치(10)를 통한 다른 노드에 대한 데이타 송신을 억제하며, 또한 통신 스위치(10)를 경유하는 다른 노드로부터의 데이타 수신을 완료시킨다.
D4의 방법에 의해, 어떤 노드에서 고장이 발생하여, 모든 노드가 동기하여, 각각 하나 앞의 체크 포인트로 롤백하는 경우에도, 통신 스위치(10)에 관해서는 아무런 특별한 처리를 필요로 하지 않는, 혹은 통신 스위치(10)를 리셋하는 정도로 마치도록 한다.
다음에, 전술한 D1 내지 D4의 구성에 의해, 노드간 통신의 요구를 즉석으로 실행함으로써, 노드간 통신을 고속화하는 예에 대해서 설명한다. 여기서는 2개의 예(제 1 예, 제 2 예)를 사용하여, 노드간 통신을 지연없이 실행하여도 문제가 없는 것을 설명한다.
제 1 예는 도 5에 도시된 바와 같이, 시각 CKP0에 있어서, 모든 노드 1, 2, 3이 체크 포인트를 취득한 후, 고장 발생전의 노드간 통신으로, 노드 1에서 노드 2에 메세지가 보내어지고, 노드 2에 있어서, 그 메세지에 기초하여, 노드 2에서 노드 3으로 메세지가 보내어진 경우이다.
노드 2에서 노드 3으로 메시지 송신한 후, 시각 FLT0에서 노드1에 있어서 고장이 발생한 것으로 한다. 이 경우, 각 노드 1, 2, 3이 체크 포인트 취득을 완료하기전, 즉, BIB의 내용을 클리어하기 전에, 각 노드가 노드 1에 있어서 고장이 발생한 것을 검지하여, 시각 CKP0의 시점의 체크 포인트로 롤백한다.
즉, 모든 노드 1, 2, 3에 있어서, 동기하여 체크 포인트를 취득하고, 또한, 어느 하나의 노드에서 고장이 발생한 경우에는 모든 노드가 동일한 시각에 취득한 체크 포인트로 롤백함으로써, 시각 T0후에 노드간 통신이 있어도 노드간에서 모순이 생기지 않는다. 따라서, 노드간 통신을 기다리지 않고, 노드간 통신을 할 수 있다.
제 2 예는 도 6에 도시된 바와 같이, 고장 발생전의 노드간 통신으로 노드 1에서 노드 2에 메세지가 보내어지고, 노드 2에 있어서, 그 메세지에 기초하여, I/O 기기(여기서는 디스크 장치)로의 기록이 행해지는 경우이다.
본 발명에서는 노드간 통신은 즉시에 행해지지만, 디스크로의 기록은 체크 포인트의 처리가 완료될 때까지 기다리게 된다. 여기서, 어느 하나의 노드에서 고장이 발생한 경우에는, 모든 노드가 같은 시각에 취득한 체크 포인트로 롤백함으로써, 노드 1로부터 메세지 송신하지 않으며, 또한 노드 2에서는 디스크로의 기록은 행해지지 않는 상태이므로 노드간에 모순이 생기지 않는다.
이와 같이, 본 발명의 제 1 실시형태에서는 노드간 통신 및 노드간 통신에 따르는 각 노드에서의 통상의 데이타 처리는 지체없이 실행되지만, 외부 기억 장치등의 I/O 기기에 대한 입출력 요구나, 다른 계산기(예컨대 다른 애플리케이션을 실행하는 별도의 노드 그룹중의 계산기)와의 통신에 관해서는 그 처리 요구를 모든 노드에서 동기하여 체크 포인트를 취득한 후에 실행한다. 이것에 의해, 노드간 통신과, 이 노드간 통신에 의한 메세지에 기초한 통상의 데이타 처리는 전술한 제 1 및 제 2 예에 도시된 바와 같이, 지체없이 실행할 수 있다.
다음에, 제 1 실시형태에 있어서, 모든 노드에서 동기하여 일제히 체크 포인트를 취득하는 방법에 대해서 설명한다.
체크 포인트의 취득이 개시되는 타이밍으로서는 일반적으로,다음중 어느 하나가 채용된다.
E1, 일정시간 경과한 경우.
E2, BIB의 잔용량이 있는 정해진 값을 밑돌 경우.
E3, 지연되고 있는 I/O 요구의 수가 있는 정해진 값을 상회한 경우 등이다. 어느 하나의 방식을 채용할지 또는, 복수의 방식을 병용할지는 시스템이 사용되어지는 방법이나 BIB의 용량에 따라서 정할 수 있다.
제 1 실시형태에서는 E1인 일정 시간 경과했을 경우에만, 각 노드가 일제히 체크 포인트 취득을 개시하는 것으로 한다. 이것에 의해, 체크 포인트의 개시에 관해서, 각 노드간에서 동기를 취하기 위한 노드간 통신을 행할 필요가 없어진다.
도 7은 각 노드의 CPU1-1, 2-1, …, N-1이 일제히 체크 포인트 취득을 행하는 동작을 설명하기 위한 흐름도이다. 또한, 도 8은 복수의 노드 1, 2, N에 있어서의 통상의 데이타 처리와 체크 포인트 취득의 타이밍을 나타내는 타임차트이다.
각 노드는 시각 T1까지는 통상의 데이타 처리를 행한다(단계 C1). 그 동안, 각 노드간에서 발생하는 노드간 통신 요구는 지연되지 않고 즉석으로 실행된다. 또한, 다른 노드로부터 수신한 메세지는 지체없이 애플리케이션 프로그램으로 건네 주게 된다.
각 노드는 시각 T1에 도달하면, 통상의 데이타 처리의 실행을 정지한다(단계 C2). 또, 시각 T1은 미리 결정된 어떤 시각을 기준으로 하는 소정의 시간후의 시점이다.
시각 T1 내지 T2에서는 타노드로의 메세지 송신은 원칙적으로는 행해지지 않지만, 통신 어댑터의 기동(도 3에 있어서의 단계 A4)는, CPU의 인터럽트 금지 상태에서 실행되므로, 시각 T1의 직전에 요구가 었었던 타노드로부터의 메세지 송신이 시각 T1을 지나서 수신될 때도 있을 수 있다(단계 C3). 그러나, 그러한 메세지 송신도 시각 T2 전에는 종료한다. 또한, 타노드로부터 수신한 메세지는 메인 메모리상의 수신 버퍼에 격납되지만, 그것을 받은 애플리케이션 프로그램에 CPU를 부여하지 않는 것으로 통상의 데이타 처리가 시작되는 것을 막는다.
시각 T2가 되면, CPU를 인터럽트 금지로 한다(단계 C5). 이것은, CPU가 어떠한 인터럽트 처리를 하는 것을 막고, 캐시 메모리의 플래시를 확실히 행하게 하기 위함이다.
시각 T2에 도달하면, 각 노드는 일제히 체크 포인트 취득의 일환으로서, CPU의 콘텍스트(레지스터의 내용)을 메인 메모리에 보존하며, 캐시 메모리를 플래시한다(단계 C6, C7). 이 후, CPU를 인터럽트 허가로 한다(단계 C8).
최후에, 모든 노드에서 체크 포인트 처리의 종료(BIB의 내용의 클리어)를 동기적으로 행할 필요가 있다. 즉, 체크 포인트의 취득에 요하는 시간은 모든 노드에서 동일하지 않기 때문에, 각 노드가 BIB의 내용의 클리어를 각자에게 행한 경우, 모든 노드가 BIB의 내용이 클리어하기 전에 장해등이 발생하면, 모든 노드가 같은 체크 포인트로 롤백할 수 없게 되기 때문이다.
제 1 실시형태에서는 분산 메모리형 멀티프로세서 시스템내의 각 노드를 트리 구조의 각 절(노드)에 대응시키고, 이 대응에 의한 부모 노드와 자식 노드의 관계에 있는 노드사이에서, 체크 포인트 완료의 준비 완료와 체크 포인트 완료의 통지(메세지)를 노드간 통신에 의해서 송수신하는 것으로 동기를 취한다. 또, 체크 포인트 완료의 준비 완료는 캐시 플래시가 완료하여 BIB의 내용을 클리어할 수 있는 직전의 상태가 된 것을 나타낸다.
여기서는, 논리적으로 2진 트리의 각 노드(절) 시스템중의 각 노드(계산기)와 1:1로 대응시킨다.
도 9의 (a)에 도시된 바와 같이, 노드 1을 2진 트리의 루트 노드(根노드)와 대응시키고, 노드 2, 3을 노드 1의 자식 노드가 되도록 대응시킨다. 일반적으로, 노드 2n, 및 노드 2n+1이, 노드 n의 자식 노드로서 대응된다. 이 대응은 노드의 식별 번호를 바탕으로 각 노드사이를 논리적으로 대응시키는 것으로, 특별한 하드웨어는 필요없다.
어떤 노드에서 캐시 메모리의 플래시가 종료하면, CPU 인터럽트 허가로 하고(단계 C8), 2진 트리상의 자식 노드로부터의 체크 포인트 완료의 준비 완료 통지의 수신 대기가 된다(단계 C9). 다만, 2진 트리상의 자식 노드를 가지지 않는 경우에는 이 처리는 행하지 않는다.
자식 노드로부터의 체크 포인트 완료의 준비 완료 통지를 받으면, 다음에, 노드는 2진 트리상의 부모 노드로의 체크 포인트 완료의 준비 완료 통지를 송신한다(단계 C10). 단, 노드 1에 관해서는 2진 트리상의 부모 노드를 가지지 않기 때문에 이 처리는 행하지 않는다.
도 9의 (b)에 도시된 바와 같이, 체크 포인트 완료의 준비 완료 통지는 2진 트리의 자식 노드로부터 부모 노드를 향해 순서대로 송신이 행해지고, 노드 1이, 노드 2 및 3으로부터 체크 포인트 완료의 준비 완료 통지를 수신한 시점에서, 모든 노드에서 캐시 플래시가 완료된 것을 보증할 수 있다.
다음에, 노드 1은 모든 자식 노드, 즉 노드 2 및 노드 3에 체크 포인트 완료 지시의 통지를 보내고, 그 메세지가 도 9의 (c)에 도시된 바와 같이, 이번에는 2진 트리의 부모 노드로부터 자식 노드를 향해 순서대로 송신이 행해진다.
어떤 노드는 부모 노드로의 체크 포인트 완료의 준비 완료 통지를 송신하면, 부모 노드로부터의 체크 포인트 완료 지시의 통지의 수신 대기가 된다. 여기서, 부모 노드로부터의 체크 포인트 완료 지시의 통지를 받은 노드는 자식 노드로의 체크 포인트 완료의 통지를 송신한다(단계 C11, Cl2).
또, 다음 체크 포인트 취득을 동기하여 개시하기 위해, 시각 T11 및 시각 T12를 결정할 필요가 있다. 이들 시각은 노드 1이 도 8에 있어서의 시각 T13을 기준으로, 거기에서 소정의 시간후를, 다음 체크 포인트 취득에 있어서의 시각 T1, T2라고 결정하여, 체크 포인트 완료 지시의 파라미터로서 각 노드에 전할 수 있다.
체크 포인트 완료 지시를 수신한 노드는 BIB의 내용을 클리어하여(단계 C13), 통상의 데이타 처리를 재개한다.
이렇게 해서, 제 1 실시형태에서는 각 노드를 2진 트리의 노드와 논리적으로 대응시켜, 체크 포인트 완료의 준비 완료 또는 체크 포인트 완료 통지를 결정된 순서, 즉 부모 노드와 자식 노드의 관계에 따라서 순차적으로, 주고 받음으로써, 모든 노드에 대해서 체크 포인트 취득의 완료 동기를 효과적으로 행할 수 있다.
예컨대, 노드수가 1023인 경우, 상향의 메세지 전송 9단과 하향의 메세지 전송 9단에서 실현할 수 있다.
또한, 각 노드를 2진 트리의 트리 구조의 노드와 대응시키는 대신에, 자식 노드가 3개이상 있는 일반 트리의 노드와 대응시키는 것도 가능하다.
또한, 보다 성능을 향상시키기 위해, 각 노드는 도 7중의 단계 C8이 종료한 시점에서, 단계 C9 내지 C12의 처리를 행하면서 통상의 데이타 처리를 재개하는 것도 가능하다.
이를 위해서는 체크 포인트 취득을 완료시키지 않는 동안, 통상의 데이타 처리를 재개하는 기구가 필요하다.
예컨대, 노드가, 멀티프로세서 구성인 경우에는, 2개의 BIB를 설치한 구성에 의해 실현된다.
또한, 싱글 프로세서일 때는 롤백일 때, BIB가 적당한 범위의 내용을 메인 메모리에 재기록하면 좋다.
또한, 모든 노드에 있어서, 체크 포인트 취득이 완료한 시점에서, 각각의 프로세서가 일제히 통상의 데이타 처리를 개시하는 동기는 일반적으로 배리어 동기라고 불리운다. 하드웨어로 배리어 동기를 취하는 기구는 예컨대 「와이어드·AND」로 실현할 수 있다. 「와이어드·AND」를 사용하는 하드웨어를 구비하는 것으로, 전술한 바와 같은 노드간 통신을 사용하여 동기를 취하는 방법으로 바꿀 수 있다.
여기서, 노드가 멀티프로세서인 경우에, 2개의 BIB를 설치한 구성의 개략에 대해서, 도 10 및 도 13을 이용하여 설명한다. 각 CPU가 어떤 BIB를 사용해야 되는지를 결정하기 위해서, 도 10에 도시된 바와 같은 BIB (로그) 테이블이 사용된다. BIB 테이블은 예컨대 버스 컨트롤러(도시 생략)에 설치된다.
도 10에 도시된 바와 같이, BIB 테이블은 CPU 각각의 CPU 번호와, 그들 CPU가 현재 사용하고 있는 BIB의 번호(커런트 BIB 번호)와의 관계를 유지하고 있다.
여기서, 커런트 BIB 번호 "0"은 BIB6a를 사용하는 것을 나타내며, 커런트 BIB 번호 "1"은 BIB6b를 사용하는 것을 나타낸다. 이 시스템의 개시에 있어서는 모든 CPU의 커런트 BIB 번호는 "0"을 나타내고 있고, 모든 CPU는 BIB6a를 사용하도록 설정된다.
도 14에는 2개의 BIB 카운터(52a,52b)와 2개의 BIB6a, 6b의 관계가 도시되어 있다. BIB 카운터(52a)는 BIB6a의 갱신 이력 정보 격납 위치를 지정하는 포인터를 유지하고 있고, 그 포인터값은 갱신 이력 정보가 BIB6a에 기록될 때에, BIB6a의 선두 번지에서 최종 번지를 향해 +1씩 증분된다. BIB 카운터(52b)는 BIB6b의 갱신 이력 정보 격납 위치를 지정하는 포인터를 유지하고 있고, 그 포인터값은 갱신 이력 정보가 BIB6b에 기록될 때에, BIB6b의 선두 번지에서 최종 번지르 향해 +1씩 증분된다.
통상의 프로그램 실행 처리의 기간에 있어서는, 각 CPU는 메인 메모리에의 기록이 필요해졌을 때, 버스 컨트롤러에 대하여,
(1) CPU의 ID
(2) 메모리 어드레스
(3) 메모리 데이타
를 건네 준다. 버스 컨트롤러는 이 기록 요구를 검출하면, CPU의 ID(CPU 번호)로부터, 어떤 BIB를 사용할지 결정하여(여기서는 BIB6a를 사용하는 것으로 한다), 그 BIB6a에 대응한 BIB 카운터(52a)의 값을 수득하여, 그 카운터에 대응한 BIB6a의 위치에, 메모리어드레스와 그 메모리 어드레스의 갱신전 데이타를 갱신 이력 정보로서 기록한다. 그리고, 메인 메모리를 갱신한다.
그 후, 각 CPU는 소정의 시간이 경과한 것, 또는 BIB6a의 남아 있는 용량이 소정의 양을 밑도는 것을 버스 컨트롤러로부터의 인터럽트 신호나 폴링 처리에 의해서 검지할 때, 체크 포인트 취득 처리를 개시한다. 체크 포인트 취득 처리에서는 각 CPU의 내부 상태 복원를 위해 필요한 레지스터의 값, 및 캐시 메모리내의 데이타중, 아직 메인 메모리에 반영되어 있지 않은 데이타가 버스 컨트롤러를 통해, 메인 메모리에 기록된다. 이 경우의 갱신 이력에 대해서도, 전술과 동일하게 BIB6a에 기록된다.
여기까지 종료한 각 CPU는 사용하는 BIB를 전환하기 위해 BIB 테이블의 커런트 BIB 번호를 "0"에서 "1"로 재기록하고(여기서는 BIB6b를 다음에 사용하는 것으로 한다), 그 후, 즉석으로 통상의 프로그램 처리를 재개한다.
이와 같이 체크 포인트 취득 처리를 완료한 CPU의 순으로 사용하는 BIB를 그때까지 사용하고 있는 BIB에서 다른쪽의 BIB로 전환함으로써, 그때까지 사용하고 있는 BIB의 내용을 파괴하지 않고, 통상의 프로그램 실행 처리를 재개할 수 있다. 따라서, 각 CPU가 자신의 체크 포인트 취득 처리를 완료한 시점에서 즉석으로 통상의 프로그램 실행 처리를 재개할 수 있게 되어, 시스템 전체의 대기 시간을 대폭 감소시킬 수 있다.
다음에, 도 12를 참조하여, 체크 포인트 취득 처리 전체의 흐름에 대해서 설명한다.
지금, 도 13에 도시된 바와 같이, CPU2a∼2c가 병렬로 가동하고 있는 것과, 즉, 각각의 CPU2a∼2c가 통상의 데이타 처리를 각각 행하고 있는 것으로 한다(도 12의 (1)). 그리고, 이 때에 사용되고 있는 BIB는 BIB6a로 한다(도 12의 (2)).
그 후, 각 CPU2a∼2c의 가동중에 BIB6a의 남아 있는 용량이 미리 설정된 소정량을 밑돌 때에(도 12의 (3)), CPU2a∼2c 각각은, 그 취지를 검지하여, 체크 포인트 처리를 개시한다(도 12의 (4)).
이 체크 포인트 취득 처리의 개시 및 소요 시간은, 상술한 바와 같이, 그 검지 타이밍이나, 검지했을 때에 처리중인 프로그램의 종류, 캐시 메모리의 상태 등에 따라 다르다.
그러나, 각 CPU2a, 2c각각은 자신의 체크 포인트 처리가 종료했을 때에, 사용하는 BIB를 전환하여, 즉석으로 통상 처리를 재개한다(도 12의 (5)). 이것에 의해, 통상의 데이타 처리를 재개한 CPU에 대해서는 BIB6b로의 갱신 이력의 채취가 개시된다(도 12의 (6)).
한편, 모든 CPU2a∼2c의 체크 포인트 처리가 종료했을 때에(도 12의 (7)), BIB6a의 리셋, 즉, BIB6a에 기록된 갱신 이력의 파기가 행해진다.
다음에, 도 13의 흐름도를 참조하여, 각 CPU가 실행하는 체크 포인트 취득 처리의 순서에 대해서 설명한다.
각 CPU는 통상의 데이타 처리를 행하고 있을 때에(단계 S1), 기록중의 BIB의 남아 있는 용량이 미리 설정된 소정량을 밑돈 것을 검지한 경우(단계 S2), 체크 포인트 취득 처리를 개시한다(단계 S3). 이 체크 포인트 취득 처리에서는 CPU의 각종 레지스터를 포함하는 그 CPU의 내부 상태(콘텍스트)와, 메인 메모리에 반영되지 않는 캐시 메모리의 내용이 메인 메모리에 기록된다. 다음에, 그 CPU는 사용하는 BIB를 전환하기 위해서 BIB 테이블의 해당하는 커런트 BIB 번호를 "0"에서 "1"로, 재기록한다(단계 S4).
다음으로, 그 CPU는 자신이 체크 포인트 취득 처리를 완료한 최후의 CPU인지의 여부를 판단한다(단계 S5). 이것은, BIB 테이블을 참조하여, 커런트 BIB 번호를 재기록하지 않는 CPU가 존재하는지의 여부를 조사함으로써 행해진다. 모든 CPU의 커런트 BIB 번호가 새로운 번호로 재기록되어 있으면, 그 CPU가 체크 포인트 취득 처리를 완료한 최후의 CPU이다. 이 경우, 그 CPU는 지금까지 사용하고 있는 BIB의 내용을 파기하기 위해, 그 BIB를 클리어한다(단계 S6). 이 클리어 처리에서는 그 BIB에 대응하는 BIB 카운터의 포인터값이 "0"으로 되돌려진다. 이 후, 그 CPU는 체크 포인트 취득 처리에서 중단한 통상의 프로그램 실행 처리를 재개한다(단계 S7).
또, 반드시, 물리적으로 2개의 메모리를 BIB로서 이용할 필요는 없으며, 1개의 물리 메모리를 2개의 논리적인 메모리(BIB)로서도 이용하는 것도 가능하다.
이상, 제 1 실시형태에 있어서, 모든 노드에서 동기하여 체크 포인트를 취득하는 방법, 체크 포인트 취득시에, 노드간 통신을 행하지 않음으로써, 통신로에 관한 체크 포인트를 취득할 필요가 없는 것을 설명하였다.
다음에, 제 1 실시형태에 있어서, 어떤 노드에서 고장이 발생한 경우, 모든 노드가 하나 앞(직전)의 체크 포인트로 롤백하여, 재개시하는 방법에 대해서 도 15에 도시된 흐름도를 참조하면서 설명한다.
여기서의 전제는 고장이 발생한 노드에 관해서는 앞의 체크 포인트에 롤백함으로써 통상의 데이타 처리를 재개시할 수 있는 것이다. 어떤 노드에서 고장이 발생하여, 그 노드가 완전히 동작하지 않는 상태에 빠진 경우에 대해서는 분산 메모리형 멀티프로세서 전체를 리셋하는 것이 적당하다.
어떤 노드에서 고장의 발생을 검출했을 때 또는, 다른 노드로부터 고장의 발생 통지를 수신했을 때(도 4의 장해 처리부(단계 B6)), 도 15에 도시된 흐름도에 실행되는 장해 처리부를 기동하여 회복 처리를 시작한다.
우선, 본 노드에서 고장이 발생한 경우에는, 고장난 HW의 리셋 등, 필요한 고장 회복 처리를 행한다(단계 D1).
다음에, 2진 트리상의 부모 노드로, 고장 발생 통지를 송신한다(단계 D2).
도 15의 (a)에 도시된 바와 같이, 장해 발생 통지는 고장이 발생한 노드로부터 차례로 부모 노드에 전해지며, 최종적으로 노드 1에 도달한다.
도 15의 (b)에 도시된 바와 같이, 복수의 노드에서 거의 동시에 고장이 발생한 경우는 2진 트리상의 어느 하나의 노드는 거의 동시에 또는, 시간을 두고 2개의 자식 노드로부터 고장 발생 통지를 수신하게 된다. 그 경우, 부모 노드에는 고장 발생 통지를 1개만 송신하면 좋다.
노드 1은 고장 발생 통지를 수신하면, 자식 노드에 대하여, 롤백 지시를 보낸다. 2진 트리상의 부모 노드로부터의 롤백 지시를 수신한 노드는(단계 D3), 2진 트리상의 자식 노드로 롤백 지시를 송신한다(단계 D4). 이렇게 해서, 도 15의 (c)에 도시된 바와 같이, 롤백 지시는 노드 1로부터 자식 노드로 차례로 전해진다.
롤백 지시를 수신한 노드에서는 캐시 메모리가 무효화(단계 P5)되고, BIB의 내용을 참조함으로써 메인 메모리의 롤백(단계 D6)을 행하며, 체크 포인트로부터 통상의 데이타 처리를 재개시한다.
또, 체크 포인트를 취득중에 어떤 노드에서 고장이 발생한 경우, 그 고장 발생 통지는 체크 포인트 완료의 준비 완료를 송수신하는 타이밍으로 다른 노드에 전해지게 된다. 이 경우, 최종적으로 노드 1에 고장 발생이 통지된다. 그리고, 노드 1로부터 자식 노드를 향해 롤백 지시가 전해지고, BIB의 내용을 클리어하기 직전의 노드에 대해서도 하나 앞의 체크 포인트로의 롤백이 행해진다.
또한, 고장의 종류에 따라서는 고장이 발생한 노드에 있어서, 일체의 데이타 처리가 계속되지 않을 수도 있다. 이러한 경우, 그 노드로부터는 체크 포인트 취득 완료의 준비 완료 통지가 그 부모 노드에 전해지지 않으므로 부모 노드에서 자식 노드로부터의 체크 포인트 취득 완료의 준비 완료 통지 수신에 관한 타임아웃을 감시함으로써 고장 발생을 검출할 수 있다.
그리고, 부모 노드로부터 고장이 발생한 자식 노드에 리셋을 거는 등의 방법으로, 상기 자식 노드로부터 CPU가 다시 동작하는 경우에는 상기에 진술한 회복 처리를 적용할 수 있다.
이상, 제 1 실시예에 있어서, 모든 노드가 동기하여 체크 포인트를 취득하는 구성 및 방법에 대해서 설명하며, 그 때, 다른 노드로의 송신을 억제함으로써, 통신 스위치(10)나 통신 어댑터 1-2, 2-2, …, N-2에 어중간한 상태가 되는 것을 회피하는 것, 어느 하나의 노드에서 고장이 발생했을 때, 모든 노드가 하나 앞의 체크 포인트로 롤백하여 통상의 데이타 처리를 재개시하는 것, 이들 장치에 의해 노드간 통신은 지연없이 실행할 수 있는 것을 나타내었다.
다음에, 제 2 의 실시형태에 대해서 설명한다.
제 1 실시형태에서는 일정 시간 경과했을 경우에만, 각 노드 1, 2, …, N이 일제히 체크 포인트 취득을 개시하는 경우에 대해서 설명하였다.
제 2 의 실시형태에서는 어떤 노드에서, BIB의 남아 있는 용량이 어떤 정해진 값을 밑돌 경우에, 모든 노드에서 동기하여 체크 포인트 취득을 개시하는 방법에 대해서 설명한다. 여기서, BIB의 남아 있는 용량이 어떤 정해진 값을 밑도는 노드를 체크 포인트 처리 개시 요구 노드라고 부르기로 한다.
제 2 의 실시형태는 제 1 실시형태와 가까우므로, 상이한 부분을 중심으로 설명한다. 제 2 의 실시형태에 있어서도, 제 1 실시형태와 같이, 각 노드는 논리적으로 2진 트리의 노드와 1:1로 대응되고 있다.
도 16의 (a)에 도시된 바와 같이, 체크 포인트 처리 개시 요구 노드(노드 5)는 부모 노드(노드 2)에 대하여 체크 포인트 취득의 개시 지시 요구를 보내고, 그것을 수취한 부모 노드(노드 2)는 그 요구를 자신의 부모 노드(노드 1)에 보내는 것으로 노드에 체크 포인트 취득의 개시 지시 요구를 전한다.
2진 트리의 형상을 따라 전하는 것은 다수의 노드가 노드 1에 대하여 체크 포인트 취득의 개시 지시 요구를 보내는 것을 막기 위함이다.
노드 1이 노드 2와 노드 3에 대하여 체크 포인트 취득 지시를 보내고, 도 16의 (b)에 도시된 바와 같이, 2진 트리의 형상을 따라 모든 노드에 체크 포인트 취득 지시가 전해진다.
각 노드는 BIB의 남아 있는 용량이 어떤 임계치를 밑돌았을 경우 또는, 자식 노드로부터 체크 포인트 취득의 개시 지시 요구를 수신하면 도 17의 흐름도에 나타낸 처리를 행한다.
우선, 조건에 해당한 노드는 부모 노드로 체크 포인트 취득 개시 요구를 보낸다(단계 E1). 단, 노드 1에 관해서는 부모 노드는 없으므로 이 단계는 행해지지 않는다.
체크 포인트 취득 개시 요구가 노드 1까지 전해지면, 노드 1은 자식 노드, 즉 노드 2, 3으로 체크 포인트 취득 지시를 보낸다(단계 E2). 노드 1은 부모 노드를 가지지 않기 때문에, 단계 E2는 실행되지 않는다.
노드 2, 3은 노드 1로부터 보내져온 체크 포인트 취득 지시를 자신의 자식 노드로 보낸다(단계 E3). 각 노드가 단계 E2, 및 단계 E3의 단계를 실행함으로써, 모든 노드에 체크 포인트 취득 지시가 전해진다.
각 노드는 통상의 데이타 처리를 중단하고, 노드간 통신의 수신 처리를 시각 T4까지 실행한다(단계 E4, E5). 이것은 체크 포인트 취득 지시가 2진 트리의 잎에 대응하는 노드에 도달할 때까지의 동안, 통상의 데이타 처리에 동반하는 노드간 통신이 일어날 수 있기 때문에, 그것을 전부 수신할 필요가 있다.
또, 시각 T4는 노드 1이 단계 E3을 실행할 때에 결정하는 것이 바람직하다.
시각 T4가 되면, 통신로(통신 스위치(10))상에 노드간 통신의 데이타가 없어지므로, 도 7의 단계 C5 내지 C13과 같이, 체크 포인트 취득 및 취득 완료의 동기 처리를 행한다(단계 E6 내지 E14). 상세한 설명에 대해서는 전술한 도 7에 도시된 흐름도에 있어서의 단계 C5 내지 C13과 같은 순서로 실행된다.
또, 제 2 실시형태에서는 어떤 노드에 있어서, BIB의 남아 있는 용량이 어떤 임계치를 밑돌았을 경우, 우선 도 16의 (a)에 도시된 바와 같이, 체크 포인트 취득의 개시 지시 요구를 루트 노드(노드 1)까지 전달시키고, 도 16의 (b)에 도시된 바와 같이, 루트 노드로부터 체크 포인트 취득 지시를 나타내는 것으로서 설명하였지만, 별도의 방법도 가능하다.
바람직한 방법으로서는, 도 16의 (c)에 도시된 바와 같이, BIB의 남아 있는 용량이 어떤 임계치를 밑도는 것을 검출한 체크 포인트 처리 개시 요구 노드(도 16의 (c)에서는 노드 5)로부터, 부모 노드 및 모든 자식 노드에 체크 포인트 취득 지시를 보내고, 체크 포인트 취득 지시를 수신한 노드는 자신의 부모 노드 및 모든 자식 노드에 체크 포인트 취득 지시를 보냄으로써, 모든 노드에 체크 포인트 취득 지시를 보내는 방법을 이용할 수도 있다.
이 경우, 어떤 노드로부터 체크 포인트 취득 지시를 수신한 경우, 다음 2개가 필요하다.
F1, 체크 포인트 취득 지시를 송신해 온 노드에 대하여, 체크 포인트 취득 지시를 보내지 않는다.
F2, 2개 이상의 체크 포인트 취득 지시를 수신했을 경우, 2번째 이후에 수신한 체크 포인트 취득 지시를 버린다.
이상으로, 제 2 실시형태에 있어서, 어떤 노드에 있어서 체크 포인트 취득 개시의 필요가 생겼을 경우, 즉 BIB의 남아 있는 용량이 어떤 정해진 값을 밑돌았을 경우에, 체크 포인트 처리 개시 요구를 모든 노드에 전하고, 노드간 통신이 없는 상태에서, 모든 노드가 동기하여 체크 포인트를 취득하는 방법에 대해서 설명하였다.
다음에, 제 3 실시형태에 대해서 설명한다.
제 2 의 실시형태에서는 도 17의 단계 E5에 있어서, 체크 포인트 취득 지시가 2진 트리의 잎에 대응하는 노드에 도달할 때까지 일어날 수 있는 노드간 통신의 수신 처리를 행하기 위해, 시각 T4가 될 때까지 기다리는 것으로 하였다. 제 3 실시형태에서는 시각 T4까지 기다리지 않도록 하는 것으로, 보다 노드간 통신을 고속화하는 방법에 대해서 나타낸다.
제 3 실시형태에서는 통신 어댑터 1-2, 2-2, …, N-2에 관하여, 하기의 기능을 가정한다.
G1, 각 노드의 CPU는 그 노드의 통신 어댑터에 대하여, 수신 거부 모드를 설정할 수 있다.
G2, 노드 A에서 노드 B에 데이타를 송신하기 위해, 노드 A의 통신 어댑터를 기동하고, 또한, 노드 B의 통신 어댑터가 수신 거부 모드로 설정되어 있는 경우, 실제로는 통신이 행해지지 않으며, 노드 A의 통신 어댑터는 노드 A의 CPU에 인터럽트하는 것으로, 이상 종료한 것, 및 이상 종료의 원인을 전한다.
통신 어댑터 1-2, 2-2, …, N-2이 전술한 G1 및 G2의 기능을 갖는 경우, 도 17의 흐름도에 도시된 체크 포인트 취득의 개시를 노드사이에서 동기시키는 방법, 및 도 3의 흐름도에 도시된 노드간 통신의 송신측(송신 제어부)의 동작 방법을, 각각 도 18 및 도 19와 같이 변경함으로써, 부모 노드로부터 체크 포인트 취득 지시를 하고나서의 기다리는 시간을 뺄 수 있다.
각 노드는 체크 포인트를 개시할 때(단계 F1), 통신 어댑터를 수신 거부 모드로 설정한다(단계 F2).
여기서, 노드 A는 송신 메세지를 작성하여(단계 G1), 통신 어댑터를 기동하고(단계 G2 내지 G4), 노드 B에 대하여 데이타 송신을 행하려고 한다(단계 G5 및 G6). 한편, 노드 B는 체크 포인트 취득을 개시하기 위해, 통신 어댑터를 수신 거부 모드로 설정한다(단계 F2).
이 경우, 노드 A에서는 도 19의 단계 G6에 있어서 상대측의 통신 어댑터가 수신 거부 모드로 설정되어 있는 것을 검지하여, 노드 A에 대한 메세지의 송신은 일정 기간 행하지 않는다(단계 G9).
통상적으로, 이 대기 기간중에, 노드 A에 대해서도 체크 포인트 취득 지시가 보내져 오기 때문에, 통상의 데이타 처리가 중단되어, 체크 포인트 취득이 개시되게 된다.
이상, 통신 어댑터가 수신 거부 모드를 설정할 수 있는 경우에는, 체크 포인트 취득의 개시에 관하여, 통상의 데이타 처리에 동반하는 노드간 통신이 없어질 때까지, 일정 시간 기다릴 필요가 없는 것을 설명하였다.
또, 제 3 실시형태에 있어서의 방법은 제 1 실시형태에 대해서도 적용 가능하며, 그 경우에는, 도 7의 단계 C3 및 C4에 있어서, 시각 T2가 경과할 때까지 노드간 통신의 수신 처리를 계속할 필요가 없어진다.
다음에, 제 4 실시형태에 대해서 설명한다.
제 3 실시형태에서는 통신 어댑터가 수신 거부 모드를 설정할 수 있는 경우에, 체크 포인트 취득의 개시에 관하여, 통상의 데이타 처리에 동반하는 노드간 통신이 없어질 때까지, 일정 시간 기다릴 필요가 없는 것을 설명하였다. 제 4 실시형태에서는 통신 어댑터에 수신 거부 모드를 설정할 수 있는 기능이 없어도, 일정시간 기다리지 않도록 할 수 있는 방법에 대해서 나타낸다.
도 20의 흐름도에 도시된 바와 같이, 체크 포인트를 개시할 때(단계 H1), CPU의 콘텍스트를 메인 메모리상에 보존하는 처리(단계 H2)와, 캐시 메모리 플래시(1)(단계 H3)를, CPU 인터럽트를 허가한 상태에서 행한다. 다만, 캐시 메모리 플래시(1)라고 하는 것은 캐시 메모리의 일부에 대해서만 플래시하는 처리이다.
이것에 의해, 단계 H2 또는 H3의 실행중에, 다른 노드로부터 데이타 송신이 있는 경우에는, 통신 어댑터로부터의 인터럽트로서, 데이타 수신 요구가 CPU로 전해진다.
이 경우, 수신측 노드의 CPU는 도 21의 흐름도에 나타낸 노드간 통신의 수신 처리를 실행한다. 수신측 노드의 CPU는 캐시 메모리 플래시의 도중에, 통신 어댑터로부터의 인터럽트를 처리함으로써(단계 I2 내지 I4), 캐시 메모리 플래시(1)에 의해 캐시 메모리의 플래시가 끝난 부분에도, 재기록된 데이타가 존재할 가능성이 생긴다.
이 때문에, 수신측 노드는 메세지 수신 처리 후(단계 I5, I7, I8), 단계 19에 있어서, 수신 요구 인터럽트가 발생했을 때에 체크 포인트 취득중이었는지 체크한다. 체크 포인트 취득중이었을 경우에는, 도 21의 단계 H2의 처리로 되돌아가서 체크 포인트 취득을 다시 한다.
이 방법은 메세지의 도착이 있는지의 여부가 불분명한 상태에서 대기하는 것보다는 도착이 없는 것으로 하여 캐시 메모리의 플래시를 어느정도 실행하여, 그 사이에 도착이 있으면, 캐시 메모리의 플래시를 다시 실행하면 좋다는 사고방식에 기초하고 있다. 이것에 의해, 시스템 전체의 성능 향상을 기대할 수 있다.
또, 제 4 실시형태에서는 메세지 도착이 있는 경우, 단계 H2에 있어서, CPU의 콘텍스트를 메인 메모리상에 보존하는 처리도 다시 실행한다고 설명하고 있지만, CPU의 콘텍스트의 보존 방법에 따라서는 메세지 도착전에 보존한 것을 변경할 필요는 없다. 즉, 어느시점에서 콘텍스트를 보존하는지에 의하지만, 예컨대 체크 포인트 취득 메세지를 수신하면, 통신 어댑터로부터의 인터럽트가 있어서 체크 포인트 취득을 개시하지만, 그때까지 행하여 데이타 통상의 데이타 처리에서의 레지스터의 내용이 보존되어 있으면, 고쳐서 콘텍스트를 보존하여 앞의 데이타를 변경하는 것은 아니라, 앞의 데이타를 그대로 이용할 수도 있다.
다음에, 제 5 실시형태에 대해서 설명한다.
체크 포인트/롤백 방식의 계산기에서는 체크 포인트 취득에 요하는 시간의 대부분을 캐시 메모리의 플래시에 요하고 있기 때문에, 그 시간을 실효적으로 감소시키는 방식으로서, 2단계 체크 포인트를 이용한다. 이 경우, 노드중의 캐시 메모리는 카피백형인 것으로 한다.
종래의 체크 포인트 방식에서는 도 22의 (a)에 도시된 바와 같이, 통상 처리, 체크 포인트 처리, 통상 처리, 체크 포인트 처리, …라는 반복을 행하고 있으며, 여기서의 오버 헤드는 체크 포인트 처리/(통상처리+ 체크 포인트 처리)가 된다. 이 체크 포인트 처리중에서, 시간적으로 가장 큰 비율을 차지하는 것이 캐시상의 갱신 데이타를 메인 메모리에 재기록(플래시)하는 시간이다.
종래의 체크 포인트 처리의 오버 헤드중에 가장 큰 비율을 차지하는 「캐시상의 갱신 데이타를 메인 메모리에 재기록(플래시)하는 시간」을 단축하기 위해서, 아래와 같은 순서에 의해, 2단계 체크 포인트 처리를 행한다. 도 23의 (b)에는 2단계 체크 포인트 방식 동작의 타임차트를 도시하고 있다.
H1, 통상의 데이타 처리.
H2, 제 1 단계인 통상의 데이타 처리와 병행하여, 플래시하기 위한 전용 하드웨어인 캐시 플래시 장치로 캐시 플래시를 실행한다.
H3, 제 2 단계인 통상의 데이타 처리를 행하지 않고, CPU의 콘텍스트를 메인 메모리상에 보존한 후, 캐시 메모리의 캐시 플래시를 캐시 플래시 장치로 실행한다.
제 1 단계중에서, 통상의 데이타 처리를 행하면서, 캐시 플래시를 실행하는 것으로, 제 2 단계 개시 시점에서는, 캐시 메모리로부터 메인 메모리에 재기록되어야 할 데이타의 양이 상당히 감소한다. 따라서, 통상의 데이타 처리를 실행할 수 없으며, 제 2 단계의 소요 시간을 줄일 수 있다.
제 5 실시형태에서는 이 2단계 체크 포인트 방식을 채용한 계산기를 분산 메모리형 멀티프로세서 시스템에 있어서의 각 노드로서 채용하는 경우에 대해서 설명한다.
도 23에는 각 노드가 2단계 체크 포인트를 행하기 위한, 캐시 플래시 장치의 제어 방법을 나타내고 있다.
우선, 통상의 데이타 처리를 실행하고 있을 때에 제 1 단계를 개시해야 할 요인이 발생하면(단계 J1, J2), 캐시 플래시 하드웨어, 즉 캐시 플래시 장치가 기동된다(단계 J3). 이것에 의해, 캐시 플래시 장치에 의해 캐시 플래시를 행하는 한편, 병행하여 통상의 데이타 처리를 행할 수 있다(단계 J4).
여기서, 제 2 단계를 개시해야 할 요인이 발생하면(단계 J5), 통상의 데이타 처리는 행하지 않고, CPU 인터럽트 금지로 하며, CPU의 콘텍스트를 메인 메모리상에 보존한다(단계 J6, J7). 이 후, 캐시 플래시 장치를 멈추고, 재기동하여, 캐시 플래시의 대상을 캐시 메모리 전체로 되돌리며, 캐시 플래시 장치에 의해 제 2 단계에 있어서의 캐시 플래시를 실행한다(단계 J8, J9). 제 2 단계에서는 캐시 메모리 전체를 대상으로 하여도, 제 1 단계에서 재기록이 완료하지 않은 만큼과, 제 1 단계의 실행중에 갱신된 데이타뿐이므로, 재기록 데이타량이 적다. 따라서, 통상의 데이타 처리를 실행할 수 없는 시간을 단축할 수 있다.
캐시 플래시 장치에 의한 캐시 플래시가 종료되면, CPU 인터럽트 허가와 노드사이에서의 완료 동기를 행한 후, BIB를 클리어하여, 통상의 데이타 처리로 되돌아간다(단계 J10 내지 J12).
또, 단계 J11 에 있어서의 노드사이에서의 체크 포인트 완료 동기는 전술한 제 1 실시형태에 있어서 설명한 방법을 이용할 수 있다. 이것에 의해, 체크 포인트의 취득 자체에 요하는 시간을 단축시킴으로써, 통상의 데이타 처리를 실행할 수 없는 시간, 즉 노드간 통신을 행할 수 없는 시간을 단축시키는 동시에, 모든 노드에서 동기하여 체크 포인트를 취득하는 것으로 노드간 통신의 요구를 즉석으로 실행할 수 있는 본 발명을 적용하여 노드간 통신을 고속화할 수 있다.
또, 제 1 단계 및 제 2 단계로 이행하는 타이밍, 즉 단계 J2 및 단계 J5 에 있어서의 판정조건에는 여러가지 후보가 있을 수 있다.
단계 J2에 관해서는 각 노드가 하기중 어느 하나의 조건 I1 내지 I3이 성립했는지의 여부를 독립하여 판정하는 방법과, 어느 하나의 노드에서 하기의 조건 I1 내지 13이 성립한 것을 검출했을 때, 그것을 노드간 통신으로 다른 노드에 전하는 방법이 있다.
I1, 각 노드가 통상의 데이타 처리를 재개하고나서 일정 시간이 경과하였다.
I2, 캐시 메모리중의 재기록이 필요한 데이타의 양이 임계치를 초과하였다.
I3, BIB의 잔용량이 임계치를 밑돌았다.
또한, 단계 J5에 관해서는 각 노드가 하기의 조건 J1 내지 J3이 성립했는지의 여부를 독립하여 판정하는 방법과, 어느 하나의 노드에서 하기의 조건 J1 내지 J3이 성립한 것을 검출했을 때, 그것을 노드간 통신으로 다른 노드에 전하는 방법이 있다.
J1, 각 노드가 제 1 단계을 개시하고나서 일정시간이 경과하였다.
J2, 캐시 플래시 장치가 모든 캐시 블록의 검사 및 그것에 수반하는 데이타의 메인 메모리로의 재기록을 종료하였다.
이들 후보중, 어느것이 가장 적합할지는 각 노드에서의 데이타 처리의 내용에 따라 다르므로, 시행착오적으로 선택할 수 있는 것이 바람직하다.
또한, 조건 I1, I3, J1 및 J2를 노드간 통신으로 다른 노드에 통지하는 방법은 전술한 제 1 실시형태 내지 제 4 실시형태에 있어서 설명한 방법을 이용할 수 있다.
이상, 2단계 체크 포인트 방식의 계산기를 이용하는 경우에 대해서 설명하였다.
다음에, 분산 메모리형 멀티프로세서 시스템중의 노드를 그룹화하는 경우에 본 발명을 적용하는 예에 대해서 설명한다. 분산 메모리형 멀티프로세서 시스템에 있어서, 복수의 애플리케이션을 실행시키는 경우, 시스템중에 존재하는 복수의 노드를 논리적인 몇개의 그룹으로 나누어, 각 그룹마다 다른 애플리케이션을 실행시킬 때도 있다.
도 24에는 복수의 노드를 그룹화한 상황을 개념적으로 나타내고 있다. 각 노드는 통신로를 통해 접속되어 있으며(도시 생략), 서로 데이타 송수신이 가능하다.
예컨대, 많은 원격 단말로부터의 조회 업무를 접수하는 대규모의 데이타 베이스 시스템과, 그 데이타 베이스도 참조하는 의사 결정 지원 시스템을 예로 생각한다. 이 경우, 데이타 베이스 시스템은 계산기의 다운에 의해 서비스가 정지하는것을 회피해야 하지만, 의사 결정 지원 시스템은 계산기의 다운이 있어 처음부터 재실행하는 일이 있어도, 그다지 심각한 영향은 없다고 생각된다.
그래서, 분산 메모리형 멀티프로세서 시스템이 체크 포인트를 취득하는 경우, 데이타 베이스 시스템을 실행하는 그룹에 속하는 노드로서는 체크 포인트를 취득하지만, 의사 결정 지원 시스템을 실행하는 노드(소수라는 전제)에서는 체크 포인트를 취득하지 않도록 한다.
여기서, 체크 포인트 취득을 지시하는 노드를 취득 노드, 체크 포인트 취득을 지시하지 않는 노드를 비취득 노드로 한다. 도 24에 있어서는 체크 포인트 채취 그룹(데이타 베이스 시스템)에 포함되는 노드(예컨대 노드 B, F)가 취득 노드, 체크 포인트 비채취 그룹(의사 결정 지원 시스템)에 포함되는 노드(예컨대 노드 C, H)가 비취득 노드가 된다.
본 실시형태에서는 각 노드에 자기 노드에 체크 포인트를 취득시키는지 아닌지, 즉 체크 포인트 취득 노드 또는 비취득 노드중 어느것인지를 설정하는 수단을 설치하여, 체크 포인트 취득의 유무를 노드 단위로 선택하는 것으로 한다.
이러한, 체크 포인트 취득 노드와 비취득 노드가 혼재한 구성의 분산 메모리형 멀티프로세서 시스템의 경우, 다음과 같은 노드간 통신이 발생한다.
K1, 데이타 베이스 시스템을 실행하는 그룹(체크 포인트 채취 그룹)에 속하는 노드간 통신.
K2, 의사 결정 지원 시스템(체크 포인트 비채취 그룹)으로부터 데이타 베이스로 문의 송신에 따르는 노드간 통신.
K3, 데이타 베이스로부터 의사 결정 지원 시스템으로의 결과 송신에 따르는 노드간 통신이다.
Kl은 예컨대 도 24중의 노드 B에서 노드 F로의 데이타 통신(1)이고, 체크 포인트 취득시에는 데이타 송신을 억제하지만, 체크 포인트 채취 그룹내에서 동기하여 체크 포인트 채취를 행하므로, 지연 없음의 데이타 통신이 가능하다. 체크 포인트 취득 시에는 데이타 송신을 억제하는 것으로, 통신로에 전송중인 데이타가 존재하지 않는 상태에서 체크 포인트를 취득할 수 있다.
K2는, 예컨대 24도중 노드 C에서 노드 G로의 데이타 통신(2)이고, 데이타 베이스 실행 가능측에서, 체크 포인트 취득중일때만 데이타 송신을 억제한다.
K3는, 예컨대 24도중 노드 G에서 노드 C로의 데이타 통신(3)이고, 체크 포인트 채취 그룹만이 롤백되는, 또는 체크 포인트 비채취 그룹만이 재부팅되는 경우가 있으며, 양 그룹사이에서 상태에 모순이 생길 때도 있으므로, 데이타 송신은 다음 체크 포인트 취득후까지 지연된다.
또한, 데이타 베이스 시스템을 실행하는 그룹에 속하는 노드(취득 노드)에서 고장이 발생한 경우, 그 그룹에 속하는 모든 노드가 직전의 체크 포인트까지 되돌아가서 통상의 데이타 처리를 재개하지만, 의사 결정 지원 시스템을 실행하는 노드(비취득 노드)에 대해서는 통상의 처리를 계속한다.
한편, 의사 결정 지원 시스템을 실행하는 노드(비취득 노드)에서 고장이 발생한 경우, 재부팅를 행하고, 통상적으로, 의사 결정 지원 시스템을 처음부터 실행하여 고친다. 데이타 베이스 시스템을 실행하는 그룹에 속하는 노드(취득 노드)에 대해서는 통상의 처리를 계속한다.
이렇게 해서, 분산 메모리형 멀티프로세서 시스템중에, 노드단위로 설정된 체크 포인트 취득 노드와 비취득 노드를 혼재시켜, 효과적인 체크 포인트/롤백 방식의 분산 메모리형 멀티프로세서 시스템을 구축할 수 있다.
다음에, 전술한 대규모의 데이타 베이스 시스템과, 그 데이타 베이스도 참조하는 수·발주 관리 시스템에 각각 노드 그룹을 할당하여, 각 노드 그룹마다에서 체크 포인트를 취득하면서 체크 포인트 처리를 실행하는 경우에 대해서 설명한다.
예컨대, 도 25에 도시된 바와 같이, 통신로를 통해 서로 접속된 복수의 노드가 3개의 그룹으로 그룹화되고, 예컨대 한쪽 체크 포인트 채취 그룹 X의 노드 그룹에서 대규모의 데이타 베이스 시스템을 실현하고, 다른쪽 체크 포인트 채취 그룹 Y의 노드 그룹에서 수·발주 관리 시스템을 실현하고 있는 것으로 한다. 또한, 체크 포인트 비채취 그룹도 존재한다. 여기서는, 노드 그룹마다 동기하여 체크 포인트 취득을 행한다.
이 경우, 데이타 베이스 시스템을 실행하는 그룹내, 및 수·발주 관리 시스템을 실행하는 그룹내에서는 빈번히 데이타 통신이 발생하지만, 양 그룹에 속하는 노드사이에서의 데이타 통신은 적다고 예상된다. 그래서, 양 그룹에 속하는 모든 노드사이에서 동기하여 체크 포인트를 취득하는 대신에, 각각의 그룹내에서는 동기하여 체크 포인트를 취득하며, 양 그룹사이에서는 동기시키지 않는다.
예컨대, 도 25중에 있어서는, 어떤 그룹에 속하는 각 노드가 체크 포인트를 취득하고 있을 때, 다른 그룹에 속하는 노드는 통신로를 통해 다른 노드로의 데이타 송신을 행한다. 예컨대, 체크 포인트 채취 그룹 X에 있어서 체크 포인트를 취득하고 있을 때, 체크 포인트 채취 그룹 Y의 노드 M은 노드 N에 데이타 송신(1)을 행한다.
한편, 다른 그룹에 속하는 노드간, 예컨대 노드 K와 노드 O에서의 데이타 송신(2)은 다음 체크 포인트 취득후까지 지연시킨다.
어떤 그룹에 속하는 어떤 노드에 고장이 발생한 경우는, 다른 그룹에 속한 모든 노드는 통신로로의 데이타 송신을 억제하며, 통신로를 경유하여 전송하고 있는 데이타에 대해서는 수신을 완료시킨 후, 통신로상에 통신중인 데이타가 없도록, 필요하면 초기화한다.
또한, 고장이 발생한 노드를 포함하는 그룹에 속하는 모든 노드는, 각각 직전의 체크 포인트로 롤백한 후, 통상의 데이타 처리를 재개한다. 이렇게 해서, 노드 그룹마다 동기하여 체크 포인트를 취득할 수 있다.
이렇게 해서 노드 그룹 단위로 동기하여 체크 포인트를 취득함으로써, 노드사이에서의 체크 포인트 취득의 개시의 동기, 및 체크 포인트 취득후의 통상의 데이타 처리 개시에 관한 처리에 대한 오버헤드를 감소할 수 있다.
또, 도 24 및 25에 있어서 설명한 구성에 있어서는, 필요에 따라서, 체크 포인트 취득에 관계되는 데이타간 통신의 방법을, 전술한 제 1 실시형태 내지 제 4 실시형태에 있어서 설명한 방법을 이용할 수 있다.
또, 본 발명은 종래의 분산 메모리형 멀티프로세서 시스템에 있어서의 노드를 체크 포인트/롤백 기구를 구비한 것으로 변경해야만 하지만, 노트간을 접속하는 통신로(통신 스위치(10))는 그대로 사용할 수 있으므로 분산 메모리형 멀티프로세서 시스템에 널리 응용할 수 있다. 또한, 본 발명을 적용한 분산 메모리형 멀티프로세서 시스템은 대규모의 과학 기술 계산이나 데이타 베이스 처리를 비롯하여, 넓은 용도로 적용할 수 있으며, 높은 신뢰성을 가질 수 있다.
이상 상세히 기술한 바와 같이 본 발명에 따르면, 노드에 체크 포인트/롤백 방식의 계산기를 이용했을 때에도, 노드간 통신을 즉시 실행하는 것으로 노드간 통신을 고속화하는 것이 가능해지는 것이다.

Claims (11)

  1. 적어도 프로세서와 메인 메모리를 포함하는 노드가 통신로를 통해 2개 이상 접속되어, 상기 통신로를 경유하여 노드간 통신을 행하는 분산 메모리형 멀티프로세서 시스템에 있어서,
    상기 노드는 고장 발생시에 어떤 시점에서 자기노드에 관한 체크 포인트를 취득하여, 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하여 재실행을 할 수 있으며,
    상기 노드의 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초하여 관계가 있는 어떤 노드에 대하여 체크 포인트의 취득 개시의 동기를 취하기 위한 데이타 송신을 행하는 것으로, 체크 포인트의 취득을 개시해야 하는 것을 검출한 노드는 부모 노드에 대하여 상기 체크 포인트 취득 개시 요구를 송신하며,
    상기 체크 포인트 취득 개시 요구를 자식노드로부터 수신한 노드는 부모노드에 상기 체크 포인트 취득 개시 요구를 송신하는 것으로, 루트노드에까지 순차적으로, 상기 체크 포인트 취득 개시 요구를 송신하고,
    상기 체크 포인트 취득 개시 요구를 자식노드로부터 수신한 루트노드는 모든 자식노드에 대하여 체크 포인트 취득 지시를 송신하며,
    상기 체크 포인트 취득 지시를 부모노드로부터 수신한 노드는 자식노드에 상기 체크 포인트 취득 지시를 송신하는 것으로, 모든 노드에 대하여 체크 포인트 취득 지시를 부여하며, 모든 노드로 체크 포인트의 취득 개시의 동기를 취하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  2. 제 1 항에 있어서, 상기 노드의 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초하여 관계가 있는 어떤 노드에 대하여 체크 포인트의 취득 개시의 동기를 취하기 위한 데이타 송신을 행하는 것으로, 체크 포인트의 취득을 개시해야 하는 것을 검출한 노드는 부모노드 및 모든 자식노드에 대하여 체크 포인트 취득 지시를 송신하며,
    상기 체크 포인트 취득 지시를 수신한 노드는 부모노드 및 모든 자식노드중 상기 체크 포인트 취득 지시를 송신해 온 노드를 제외한 모두 노드에 대하여 상기 체크 포인트 취득 지시를 송신하는 것으로, 모든 노드로 체크 포인트의 취득 개시의 동기를 취하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  3. 제 1 항에 있어서, 상기 노드의 프로세서에는 카피백형의 캐시 메모리가 설치되고, 상기 체크 포인트는 상기 메인 메모리상에 취득되며,
    상기 노드는 모든 다른 노드와 동기하여 행하는 체크 포인트의 취득전에, 통상의 데이타 처리와 병행하여 모든 다른 노드와 동기하고, 상기 캐시 메모리중에 존재하는 더티한 데이타의 일부를 강제적으로 상기 메인 메모리에 재기록하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템
  4. 제 1 항에 있어서, 상기 노드의 각각은 어떤 시각이 된 시점에서 상기 체크 포인트의 취득을 개시하고, 다른 모든 노드와 상기 체크 포인트의 취득을 동기시키는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템
  5. 적어도 프로세서와 메인 메모리를 포함하는 노드가 통신로를 통해 2개이상 접속되고, 상기 통신로를 경유하여 노드간 통신을 행하는 분산 메모리형 멀티프로세서 시스템에 있어서,
    상기 노드는 고장 발생시에 재실행을 가능하게 하기 위해서, 어떤 시점에서 자기 노드에 관한 체크 포인트를 취득하며, 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 기능과,
    상기 기능에 의해 체크 포인트를 채취할 때, 자기 노드가 데이타 수신 불가가 되도록 상기 통신로를 제어하는 제 1 통신 수단과,
    통상의 데이타 처리에 동반하는 노드간의 데이타 송신을 상대 노드가 데이타 수신 불가인지의 여부를 확인하는 제 2 통신 수단을 구비하며,
    모든 다른 노드와 동기하여 취득한 체크 포인트를 모든 노드에서 다음 체크 포인트의 취득이 완료될 때까지 유지하고, 어느 하나의 노드에 고장이 발생한 경우에, 다음 체크 포인트의 취득까지 다른 모든 노드와 동기하여 고장 발생이 통지되는 것으로, 통상의 데이타 처리에 동반하는 노드간의 데이타 송신을, 다음 체크 포인트의 취득후까지 지연시키는 일 없이 즉시 실행하고,
    그 결과, 상기 제 2 통신 수단에 의해서 상대 노드가 데이타 수신 불가인 것을 확인하였을 때, 데이타 송신이 가능해질 때까지 대기 상태가 되는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  6. 적어도 프로세서와 메인 메모리를 포함하는 노드가 통신로를 통해 2개이상 접속되고, 상기 통신로를 경유하여 노드간 통신을 행하는 분산 메모리형 멀티프로세서 시스템에 있어서,
    상기 노드는 고장 발생시에 재실행을 가능하게 하기 위해서, 어떤 시점에서 자기 노드에 관한 체크 포인트를 취득하며, 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 기능을 가지며,
    모든 다른 노드와 동기하여 취득한 체크 포인트를 모든 노드에서 다음 체크 포인트의 취득이 완료될 때까지 유지하고, 어느 하나의 노드에 고장이 발생한 경우에, 다음 체크 포인트의 취득까지 다른 모든 노드와 동기하여 고장 발생이 통지되는 것으로, 상기 기능에 의해 체크 포인트의 취득을 개시한 후, 다른 노드로부터 통상의 데이타 처리에 동반하는 노드간의 데이타 송신을 수신한 경우에, 고장 발생을 통지할 때는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하고, 그 이외의 통지인 경우에는 체크 포인트의 취득을 다시 하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  7. 제 1 항에 있어서, 상기 노드의 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초하여 관계가 있는 어떤 노드에 대하여 체크 포인트의 취득 완료의 동기를 취하기 위한 데이타 송신을 행하는 것으로, 모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 노드는, 부모 노드에 체크 포인트 완료의 준비 완료를 송신하며,
    모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 루트 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 송신하는 동시에 체크 포인트 취득을 완료시키고, 통상의 데이타 처리를 재개하며,
    부모 노드로부터 체크 포인트 완료 지시를 받았을 때, 또는 이미 통상의 데이타 처리를 재개한 노드로부터 통상의 데이타 통신을 수취했을 때, 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 보내는 동시에 체크 포인트 취득을 완료시키고, 통상의 데이타 처리를 재개하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  8. 제 1 항 또는 제 2 항에 있어서, 상기 노드의 각각은 트리 구조중 어느 하나의 노드와 대응되고, 이 대응에 기초하여 관계가 있는 어떤 노드에 대하여 체크 포인트의 취득 완료의 동기를 취하기 위한 데이타 송신을 행하는 것으로,
    상기 각 노드는 체크 포인트의 취득을 개시한 시점에서, 다른 노드로부터의 데이타 수신을 불가로 하고, 체크 포인트의 취득이 완료하기 직전에, 다른 노드로부터의 데이타 수신을 가능하게 하는 동시에 통상의 데이타 처리를 재개하는 것으로,
    모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 노드는 부모 노드에 체크 포인트 완료의 준비 완료를 송신하며,
    모든 자식 노드로부터 체크 포인트 완료의 준비 완료 통지를 수신한 루트 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 송신하는 동시에 체크 포인트 취득을 완료시키고, 이전의 체크 포인트를 파기하여,
    부모 노드로부터 체크 포인트 완료 지시를 받았을 때, 또는 이미 통상의 데이타 처리를 재개한 노드로부터 통상의 데이타 통신을 수취했을 때, 노드는 모든 자식 노드에 대하여 체크 포인트 완료 지시를 보내는 동시에 체크 포인트 취득을 완료시키며, 이전의 체크 포인트를 파기하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  9. 제 7 항 또는 제 8 항에 있어서, 상기 부모 노드에 있어서 모든 자식 노드로부터의 체크 포인트 취득 완료의 준비 완료가 일정 시각까지 수취할 수 있는지의 여부에 따라 고장을 검출하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  10. 제 1 항 또는 제 2 항에 있어서, 상기 각 노드는 상기 기능에 의해 체크 포인트를 취득하는 취득 노드인지, 체크 포인트의 취득을 행하지 않는 비취득 노드인지를 설정하는 수단을 가지며,
    상기 수단에 의해서 상기 취득 노드에 설정된 노드는 체크 포인트의 취득 시에는 상기 통신로를 통한 다른 노드에 대한 데이타 송신을 억제하며, 상기 통신로를 경유하여 송신되는 데이타의 수신을 완료하고,
    상기 수단에 의해서 상기 비취득 노드에 설정된 노드는 상기 통신로를 통한 취득 노드에 대한 데이타 송신을 억제하며,
    상기 통신로에 취득 노드에 대하여 송신중인 데이타가 존재하지 않는 상태에서, 다른 모든 노드와 동기하여 행하고,
    어느 하나의 상기 취득 노드에 고장이 발생했을 때,
    상기 비취득 노드는 상기 통신로로의 데이타 송신을 억제하며, 상기 통신로를 경유하여 송신되는 데이타의 수신을 완료시켜, 상기 통신로에 통신중인 데이타가 없도록 하며,
    상기 취득 노드는 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
  11. 제 1 항 또는 제 2 항에 있어서, 상기 노드가 그룹화되어 그룹마다 다른 애플리케이션을 실행하여, 각 그룹에 속하는 노드마다 체크 포인트를 취득하는 것이며,
    어떤 그룹에 속하는 각 노드가 체크 포인트를 취득할 때, 다른 그룹에 속하는 노드는, 상기 통신로를 통해 다른 노드로의 데이타 송신을 행하고,
    다른 그룹에 속하는 노드사이의 데이타간 통신은, 다음 체크 포인트의 취득후까지 지연시키며,
    어떤 그룹에 속하는 어떤 노드에서 고장이 발생하였을 때에,
    다른 그룹에 속하는 모든 노드는 상기 통신로로의 데이타 송신을 억제하고, 상기 통신로를 경유하여 송신하고 있는 데이타의 수신을 완료시켜, 상기 통신로에 통신중인 데이타가 없도록 하며,
    고장이 발생한 그룹에 속하는 모든 노드는 각각 직전에 취득한 체크 포인트로부터 데이타 처리를 재개하는 것을 특징으로 하는 분산 메모리형 멀티프로세서 시스템.
KR1019970008909A 1996-03-19 1997-03-17 분산 메모리형 멀티프로세서 시스템 및 고장 회복방법 KR100238926B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP96-063407 1996-03-19
JP08063407A JP3120033B2 (ja) 1996-03-19 1996-03-19 分散メモリ型マルチプロセッサシステム及び故障回復方法

Publications (2)

Publication Number Publication Date
KR970066900A KR970066900A (ko) 1997-10-13
KR100238926B1 true KR100238926B1 (ko) 2000-01-15

Family

ID=13228425

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970008909A KR100238926B1 (ko) 1996-03-19 1997-03-17 분산 메모리형 멀티프로세서 시스템 및 고장 회복방법

Country Status (4)

Country Link
US (1) US5922078A (ko)
JP (1) JP3120033B2 (ko)
KR (1) KR100238926B1 (ko)
CN (1) CN1225709C (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185702B1 (en) * 1997-01-24 2001-02-06 Kabushiki Kaisha Toshiba Method and system for process state management using checkpoints
JP3253883B2 (ja) * 1997-01-31 2002-02-04 株式会社東芝 プロセスリスタート方法及びプロセス監視装置
JP3390824B2 (ja) * 1997-03-19 2003-03-31 株式会社日立製作所 多重化制御装置及びその障害回復方法
JPH10320274A (ja) * 1997-03-19 1998-12-04 Toshiba Corp キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
CA2221661A1 (en) * 1997-11-20 1999-05-20 Crosskeys Systems Corporation Transaction roll forward
US7065540B2 (en) 1998-11-24 2006-06-20 Oracle International Corporation Managing checkpoint queues in a multiple node system
US6467012B1 (en) * 1999-07-08 2002-10-15 International Business Machines Corporation Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
JP4242155B2 (ja) * 2001-03-07 2009-03-18 オラクル・インターナショナル・コーポレイション 永続的記憶装置へのダーティデータ項目の書込を調整するための方法、当該方法をコンピュータに行なわせるためのプログラムを格納したコンピュータ読出可能な媒体、および、永続的記憶装置へのダーティデータ項目の書込を調整するための装置
US6834358B2 (en) * 2001-03-28 2004-12-21 Ncr Corporation Restartable database loads using parallel data streams
JP3897994B2 (ja) * 2001-05-31 2007-03-28 富士通株式会社 スイッチ装置およびデータ転送システム
US7512676B2 (en) * 2001-09-13 2009-03-31 Network Foundation Technologies, Llc Systems for distributing data over a computer network and methods for arranging nodes for distribution of data over a computer network
KR100395071B1 (ko) * 2001-12-20 2003-08-19 엘지전자 주식회사 멀티프로세스 운영체계에서의 프로세스 복구 시스템 및 방법
US7065549B2 (en) * 2002-03-29 2006-06-20 Illinois Institute Of Technology Communication and process migration protocols for distributed heterogeneous computing
US7124323B2 (en) * 2003-06-18 2006-10-17 International Business Machines Corporation Method, system, and program for recovery of a reverse restore operation
US7562254B2 (en) * 2003-07-01 2009-07-14 International Business Machines Corporation Checkpointing and restarting long running web services
JP2005332370A (ja) * 2004-04-19 2005-12-02 Toshiba Corp 制御装置
JP4773715B2 (ja) * 2004-12-01 2011-09-14 富士通株式会社 チェックポイント取得方法
CN100387002C (zh) * 2004-12-24 2008-05-07 华为技术有限公司 一种数据回退机制的测试方法
US7478278B2 (en) * 2005-04-14 2009-01-13 International Business Machines Corporation Template based parallel checkpointing in a massively parallel computer system
US7779295B1 (en) * 2005-06-28 2010-08-17 Symantec Operating Corporation Method and apparatus for creating and using persistent images of distributed shared memory segments and in-memory checkpoints
US7457985B2 (en) * 2005-09-09 2008-11-25 International Business Machines Corporation Method to detect errors in computer systems by using state tracking
JP4421592B2 (ja) * 2006-11-09 2010-02-24 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、その制御方法、プログラム及び情報記憶媒体
US7610510B2 (en) * 2007-02-16 2009-10-27 Symantec Corporation Method and apparatus for transactional fault tolerance in a client-server system
JP5595633B2 (ja) * 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
CN103443774A (zh) * 2007-09-25 2013-12-11 富士通株式会社 信息处理装置和控制方法
CN101452379B (zh) * 2007-11-28 2012-05-23 无锡江南计算技术研究所 内存空间的分析方法和装置、检查点的保留方法和装置
JP5759203B2 (ja) * 2011-02-25 2015-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 反復法の並列コンピュータ計算における非同期なチェックポイント取得とそこからの回復
US8689048B1 (en) * 2011-09-22 2014-04-01 Emc Corporation Non-logging resumable distributed cluster
US9588685B1 (en) * 2013-05-03 2017-03-07 EMC IP Holding Company LLC Distributed workflow manager
KR101575547B1 (ko) * 2014-12-09 2015-12-22 현대오트론 주식회사 캔 통신 시스템의 에러 분산감지 방법 및 캔 통신 시스템
CN105138428B (zh) * 2015-08-22 2018-03-06 西安电子科技大学 基于前驱依赖的故障恢复方法
US10169137B2 (en) 2015-11-18 2019-01-01 International Business Machines Corporation Dynamically detecting and interrupting excessive execution time
CN109831342A (zh) * 2019-03-19 2019-05-31 江苏汇智达信息科技有限公司 一种基于分布式系统的故障恢复方法
CN111756580B (zh) * 2020-06-28 2021-02-12 涵涡智航科技(玉溪)有限公司 一种多节点系统的协同作业同步方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02287858A (ja) * 1989-04-28 1990-11-27 Toshiba Corp 分散処理システムのリスタート方式
JP3270216B2 (ja) * 1993-10-08 2002-04-02 富士通株式会社 ファイル名検出方式
US5630047A (en) * 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints

Also Published As

Publication number Publication date
JPH09259098A (ja) 1997-10-03
JP3120033B2 (ja) 2000-12-25
US5922078A (en) 1999-07-13
CN1225709C (zh) 2005-11-02
KR970066900A (ko) 1997-10-13
CN1164710A (zh) 1997-11-12

Similar Documents

Publication Publication Date Title
KR100238926B1 (ko) 분산 메모리형 멀티프로세서 시스템 및 고장 회복방법
US5440726A (en) Progressive retry method and apparatus having reusable software modules for software failure recovery in multi-process message-passing applications
US5590277A (en) Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US8868492B2 (en) Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
JP2505928B2 (ja) フォ―ルト・トレラント・システムのためのチェックポイント機構
US5530802A (en) Input sequence reordering method for software failure recovery
JP3790589B2 (ja) 分散データベーストランザクションのコミットメント方法
US4941087A (en) System for bumpless changeover between active units and backup units by establishing rollback points and logging write and read operations
EP0988596B1 (en) Method and system for recovery in a partitioned shared nothing database system using virtual shared disks
US8788879B2 (en) Non-volatile memory for checkpoint storage
JPH0969082A (ja) マルチプロセッサシステム
KR20000011835A (ko) 네트워크의분산애플리케이션에대한고장검출및소정의복제스타일로복구하는방법및장치
EP0864126A2 (en) Remote checkpoint memory system and protocol for fault-tolerant computer system
JPH02287858A (ja) 分散処理システムのリスタート方式
KR19990082867A (ko) 갱신 트랜잭션 완성 방법 및 장치
JP2002522845A (ja) フォールトトレラント・コンピュータシステム
JPH1083351A (ja) キャッシュフラッシュ装置および同装置を適用した計算機システム
US20170199760A1 (en) Multi-transactional system using transactional memory logs
CN111400086B (zh) 虚拟机容错的实现方法和系统
JP5287974B2 (ja) 演算処理システム、再同期方法、およびファームプログラム
JP6291711B2 (ja) フォールトトレラントシステム
JP3447347B2 (ja) 障害検出方法
JP3026350B2 (ja) 二重化システムの系切り替え方法
JP2002312333A (ja) マルチプロセッサ初期化/並行診断方法
JP2002108640A (ja) デュープレックスシステム、シングルプロセッサシステム、及びサブボード

Legal Events

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

Payment date: 20050930

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee