KR20010005956A - 고장 허용 컴퓨터 시스템 - Google Patents

고장 허용 컴퓨터 시스템 Download PDF

Info

Publication number
KR20010005956A
KR20010005956A KR1019997009033A KR19997009033A KR20010005956A KR 20010005956 A KR20010005956 A KR 20010005956A KR 1019997009033 A KR1019997009033 A KR 1019997009033A KR 19997009033 A KR19997009033 A KR 19997009033A KR 20010005956 A KR20010005956 A KR 20010005956A
Authority
KR
South Korea
Prior art keywords
cpu
output
gate
cpus
computer
Prior art date
Application number
KR1019997009033A
Other languages
English (en)
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 KR20010005956A publication Critical patent/KR20010005956A/ko

Links

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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B9/00Safety arrangements
    • G05B9/02Safety arrangements electric
    • G05B9/03Safety arrangements electric with multiple-channel loop, i.e. redundant control systems
    • 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
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/181Eliminating the failing redundant component
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • G06F11/184Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing

Landscapes

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

Abstract

고장 허용 컴퓨터 시스템은 단일 이벤트 업셋(SEU) 및 그 외의 무작위 고장을 검출하고 보정하기 위하여 하드웨어 클록 레벨에서 여분의 투표을 이용한다. 바람직한 실시예에서, 컴퓨터930)은 "록-스텝"에서 동작하는 4개이상의 상용 처리 유니트(CPU)(32)를 포함하며, 상기 처리 유니트의 출력(33, 37)은 시스템 메모리(46) 및 시스템 버스(12)에 전달되며 주문형 IC(34)로 구현될 수 있는 게이트 어래이(50)에 의하여 투표된다. 주문형 메모리 제어기918)은 시스템 메모리(46) 및 시스템 버스(12)와 인터페이스한다. 컴퓨터(30)내의 메모리(46)에 기록하고 이로부터 판독되는 데이터 및 어드레스(35, 37)는 각각의 CPU 클록 사이클에서 투표된다. 투표 상태 및 제어 회로938)는 하드웨어 및 소프트웨어를 이용하여 투표 상태를 판독하고 CPU 상태를 제어한다. 대부분의 투표된 신호(35)는 간섭 없이 처리 동작이 연속되도록 일치하는 CPU(32)에 이용된다. 시스템 로직은 모든 CPU(32)를 재동기화시키고, 고장 CPU를 파워다운시키거나 공유 컴퓨터(30)로 스위칭하고, 대체된 CPU(32)를 리세팅하고 리부팅함으로써 검출된 고장으로부터 최상으로 회복되도록 한다.

Description

고장 허용 컴퓨터 시스템{FAULT TOLERANT COMPUTER SYSTEM}
지상 및 공간에서의 자연의 방사능 환경은 컴퓨터에 사용된 반도체 디바이스들을 짧은 기간 및 긴 기간의 성능 저하를 종종 야기시킨다. 이러한 해저드(hazard)는 무고장 동작을 요하는 컴퓨터에서는 문제이다. 이러한 방사능 영향들뿐 만 아니라, 컴퓨터 칩은 언젠가는 발생되는 미검출 결점 및 약점에 기인한 우발 고장에 직면하게 된다. 반도체 팩키지내의 미량의 방사능 물질은 또한 고장을 야기시킬 수 있다. 컴퓨터가 원거리 떨어진 환경에서 오랜 기간 동작되어야 하는 경우, 또는 이러한 디바이스들이 오랜 시간동안 고장없이 동작해야만 하는 곳에서, 장애 또는 고장으로부터 보호된 시스템에 대한 필요는 매우 중요하게 되었다. 원거리 또는 취약한 환경으로는 원거리의 오일 플랫폼, 잠수함, 항공기 및 남극과 같은 고립된 장소들이 있다. 지구 괘도 및 그 이상에서 동작하는 시스템은 특히 이러한 방사능 해저드에 취약하다. 코스믹 레이(cosmic rays) 및 반 알렌 방사능 띠 근처 공간에서의 아주 높은 에너지 입자들은 단일 이벤트 효과(SEE; single event effect) 또는 단일 이벤트 업셋(SEU; single event upset)라고 일컬는 교란을 발생시킬 수 있다. 지구 자계는 입자들을 반사시키며, 그들의 에너지 레벨 및 속성을 변화시킨다. 지구 자계는 또한 태양 및 다른 별들로부터 지구로 향하는 대전된 입자들을 가둔다. 지자기에 의해 갇히지 않은 몇몇 입자들은 자계에 의해 극 근처의 대기로 향한다. 이러한 입자들은 위성내의 전자 디바이스들을 관통할 수 있다.
높은 에너지 입자 및 감마선(gamma rays)이 반도체 디바이스를 관통하게 되는 경우, 전하가 컴퓨터 회로내에 축적되고, 과도 현상 및/또는 노이즈를 야기시킨다. 이러한 현상은 메모리 회로들을 교란(upset)시킬 수 있다. 교란의 한 타입은 칩의 메모리내에 저장된 데이터의 단일 비트가 방사능에 의해 그 값이 변하게 되는 경우 발생한다. 상기 예에서, 논리 "1"의 값은 논리 "0" 값으로 변할 수 있으며, 그 역 또한 참이다. 교란을 일반적으로 소자의 오류 출력으로 정의할 수 있다. 이러한 출력은 하나 이상의 비트들을 포함할 수 있다.
방사능은 또한 칩내의 회로의 "래치업(latchup)"시킬 수 있다. 래치업은 높은 에너지 입자들에 의한 반도체 회로내의 전하의 축적으로 인해 디바이스의 출력이 포화되거고 유지되는 반도체의 전기적 상태이다. 상기 래치 상태의 원인은 단지 임의의 교란 때문이다. 만일, 파워를 제거한 다음 다시 공급한다면, 소자들은 통상적으로 동작할 것이다.
소자의 교란 비율은 크기, 동작 전압, 온도 및 내부 회로 설계를 포함하는 칩의 구조 특성에 의존한다. 특정 부분에 대한 교란 비율은 상업적인 1 메가비트 랜덤 엑세스 메모리 칩(RAM)에 대해 하루에 10번으로부터 방사능-경화 1 메가비트 RAM 에 대한 2800년마다 한번 꼴로 변할 수 있다. 방사능-경화 소자는 방사능 해저드에 저항 할 수 있도록 설계 및 형성된 디바이스이다. 이러한 디바이스는 고가이고 통상의 칩들보다 훨씬 느린 경향이 있다. 이러한 디바이스들은 전형적으로 1 내지 3년마다 그 기술이 지체된다.
지상에서 통상 응용에 이용되는 현재의 컴퓨터 칩들은 일반적으로 우주의 방사능에 의한 영향받지 않는다. 이러한 면책은 지구 대기가 제공하는 보호에 기인한다. 그러나, 몇몇의 육상의 컴퓨터 칩 용도는 방사능 교란에 직면한다. 반도체 팩키지내의 미량의 방사능 물질은 교란을 야기시킬 수 있다. 진단 또는 치료용 의학 디바이스들로부터 방출된 방사능은 반도체 소자들에 유사한 영향을 입힐 수 있다. 디바이스들이 더욱 복잡해짐에 따라, 대기를 관통한 우주 방사능의 이차 및 3차 입자들은 디바이스들를 교란시키게 될 것이다.
"상업적 우주선 이상 및 단일-이벤트-효과 발생에 대한 검토"라는 명칭의 논문에서, 캐서린 바리롯 외(Catherine Barillot et al.)은 1975년 이 후 우주에서 목격된 교란 사건들을 설명하고 있다. 사건들 및 그 원인들을 추적 및 이론화되었다. TDRS 위성에서 직면한 교란 발생의 횟수가 태양 순환에 따른 우주선(cosmic rays)의 변조를 따른다는 것을 나타내는 데이터를 제시하고 있다.
코로라도 대학교의 엘. 디. 에이커즈 (L. D. Akers of University of Colorado)는 "마이크로프로세서 기술 및 단일 이벤트 교란 감도"라는 명칭으로 교란에 관한 논문을 발표하였다. 작가는 우주선의 모든 국면을 통제하기 위한 강력한 마이크로회로들을 채용하고 있는 현재의 위성들은 무거운 이온 유입 SEU에 매우 취약하다라고 지적하고 있다. 작가는 큰 태양 플레어으로부터의 기대되는 입자들의 증가와 결합하여, 보다 낮은 파워 및 보다 높은 스피드를 갖은 마이크로디바이스들의 출현은 보다 높은 SEU의 비율들을 발생시킬 것이라고 예언했다. 작가는 작은 위성의 설계자들은 미래의 위성 관제를 확실히 하기 위해 SEU 완화 기술을 실행할 필요가 있다라고 믿고있다.
컴퓨터 칩에 영향을 입히는 방사능 해저드를 완화하기 위한 종래의 시도는 혼합된 결과들에 직면하였다. 고장 허용 컴퓨터들에 관한 연구는 원리적으로는 높은 레벨, 예컨데, 레지스터 레벨에서의 에러 검출을 취급하는 것이다. "용장성 실시간 시스템에서의 동기 및 고장-마스킹"이라는 명칭으로 1984년, IEEE, 페이지 152-157에 제시된 논문에서, 엠. 크리쉬나 외(M. Krishna et al.)는 "부당한(malicious)" 고장의 출현시의 다수의 위상-록 클럭들의 하드웨어 및 소프트 동기를 설명하고 있다. 작가들은 클럭의 출력 값들을 기준 클럭의 입력 신호와 비교하는 단순한 하드웨어 투표 전략을 설명하고 있다. 비고장 클럭들은 동위상으로 록된다. 프로세서들이 고장나면, 이용가능한 여분의 프로세서로 교체된다. 이러한 방법은 닫힌 동기에서 동작하는 다수의 클럭들을 갖는 용장성 컴퓨터들에 적용하고 있다. 크리쉬나 외는 많은 프로세서들의 시스템이 닫힌 동기에서 동작할 수 있도록 소프트 알고리즘의 사용에 대해 설명하였다.
크리쉬나 등에 의해 이용된 그와 같은 소프웨어 솔루션은 소프트웨어 블록 레벨에서 투표하는 과정을 채용한다. 이러한 솔루션은 일반적으로 각 분리된 컴퓨터가 상호 동의하는지를 알아보기 위해 고레벨에의 컴퓨터 출력을 비교하는 단계를 포함한다. 이러한 시스템은 높은 레벨의 용장성을 성취하기 위해 소모된 무게, 벌크, 비용 및 파워로 높은 비용을 들여야 한다.
크리쉬나 등은 시스템의 순간적인 교란 문제를 취급하지는 않고 있다. 작가들은 프로세서의 어떤 한 소자에 국한시켜 오동작 문제를 취급하지 않았다. 크리쉬나 외에 의해 설명된 바와 같은, 시스템에서의 오동작 인식은 전체 디바이스가 오동작하고 있다는 것을 의미한다. 그러나, 방사능 교란은 반드시 디바이스의 오동작을 야기시키지 않는다. 교란 조건은 임의일 수 있다.
"위성 시스템에서 단일 이벤트 교란 및 래치업에 민감한 디바이스들"이라는 명칭으로 존 홉킨스 대학교 응용 물리 실험실에서 발표한 논문에서, 리챠드 엠. 마우러(Richard M. Maurer) 및 제임스 디. 키니슨(James D. Kinnison)은 단일 이벤트 교란 및 래치업(latchup)의 해저드를 인정하고 있다. 그들은 설계로부터의 단윈 이벤트 영향에 민감한 부분들의 제거 목적으로서 판단 트리 또는 부분들이 동작하는 회로의 설계에서의 몇몇 보호 계측을 제공하기 위한 SEE 민감 부분들의 "에즈-이즈(as-is)"를 제시하고 있다.
신뢰성에 관한 IEEE 논문, 1975년 12월 5호 Vol. R-24에 발표된 "일반 모듈러 용장성 시스템의 신뢰성 모델링 및 이론"이라는 기사에서, 프랜시스 마더(Francis Mather) 및 폴 티. 데 소오사(Paulo T. de Sousa)는 고장 허용 디지털 시스템 설계에 이용된 하드웨어 용장성을 설명하고 있다. 이들은 하드웨어 용장성 구조로서의 용장성 모듈들의 주요 투표 및 사중 논리(4개의 게이트들에 의한 모든 하드웨어 게이트들의 대체)를 설명하고 있다.
이. 제이. 멕러스키(E. J. McClusky)는 1986년 8월 25일 산타나 크르즈에 위치한 캘리포니아 대학교의 컴퓨터 과학 16번째 년간 학회에서 "하드웨어 오동작 허용"이라는 명칭의 논문을 발표하였다. 멕러스키는 하드웨어 오동작 허용의 기본 개념 및 기술을 설명하였다. 그러한 기술들중 하나가 에러가 시스템 출력에서 발생되는 것을 방지하는 능력인, "에러 마스킹(error masking)"이다. 멕러스키에 의하면, "대량의 중복성(massive redundancy)"으로 에러 마스킹을 성취할 수 있다. 시스템 출력들은 오동작이 없는 경우에는 동일한 신호들의 투표로써 결정된다. 대용량 용장성의 일반 형태는 트리플-모듈러 중복성(triple-modular redundancy), 4중 소자들, 4중 및 투표 로직이 있다. 멕러스키 보고서에 의하면, 투표된 로직은 모듈의 모든 복사들을 투표기로의 연결을 포함한다. 각 모듈의 출력들은 시스템의 다른 부분들로의 전송 이전에 상기 튜표기를 통과한다. 투표는 전체 시스템에서 고 레벨에서 이행된다. 모든 로직 게이트들을 4개의 게이트로 대체로서 4중 로직이 설명된다. 오동작은 게이트들의 내부연결 패턴에 의해 자동으로 정정된다. 그러한 시스템은 방사능 해저드로부터의 시스템을 보호에 무게, 파워 및 비용 대가를 명백히 지불하게 될 것이다.
비록, 멕러스키가 전체 컴퓨터 뿐 만 아니라 복사용 작은 유니트들에 적용할 수 있는 3중-모듈러 중복을 제시하였지만, 그는 에러 정정 코드의 사용 및 어떤 소프트웨어 프로그램을 제외하고는, 어떻케 그러한 기구가 이행되는지에 대해서는 설명하고 있지는 않다. 에러 정정 코드 방법은 오류 정보 비트들을 가변시키는 에러 정정 회로에 의존하며, 그에 따라, 에러 정정 회로의 오류가 없을 때에 만 유효하다. 멕러시가 다룬 소프트웨어 방법은 독립적으로 작성된 몇몇 프로그램 버젼들을 필요로 한다. 각각의 프로그램은 동일한 데이터상에서 동작되며, 그 출력들은 투표로써 얻을 수 있다. 그러한 기술은 임의의 오류에 효과적이지만, 아주 많은 시간 및 시스템 오버헤드를 요구한다.
에치. 스키미트 외(H. Schmidt et al.)는 1984년 IEEE 페이지 36-41의 "재구성 가능한 제어 컴퓨터의 설계에서의 중요 문제점"에서의 실시간 제어 시스템에 사용되는 컴퓨터들과 같은, 재구성 가능한 컴퓨터의 상세한 설계 이전에 해결해야 할 많은 중요 문제들을 다루고 있다.
1985년 1월 컴퓨터에 관한 IEEE 논문집 제1 호 Vol. 34에 발표된 "오동작 허용 다중프로세서 링크 및 버스 네트워크 구조"라는 제목의 논문에서, 디히라 케이. 파드하(Dhiraj K. Pardha)는 집적 시스템에서의 내부결선된 아주 많은 수의 연산 요소들에 대한 적절한 또는 근사적으로 적절한 오동작 허용을 제공하는 정규 네트워크의 일반 분류를 제시하고 있다.
초기의 고성능 프로세서들은 다수의 로직 칩들, 플로트 포인트 칩 및 국부 캐쉬로서 사용되는 많은 메모리 칩들을 포함하고 있었다. 현재의 프로세서들은 단일 칩에 이러한 모든 기능을 담고 있다. 이러한 기능들의 단일 칩으로의 집중화는 오차-허용을 하드웨어 레벨에서 프로세서 시스템내의 단지 몇몇 칩들로 적용시키는 허용한다. 다욱 많은 디바이스들이 하나의 기판상에 포함됨에 따라, 프로세서 칩들은 더욱 고밀화된다. 특히, 이러한 디바이스들은 보완적인 금속 옥사이드, 갈륨-아세나이드, 및 바이폴라 반도체 디바이스들 및 그 밖에 것들은 방사능에 더욱 영향받는다.
1992년에 디지털 출판사에 의해 "신뢰성있는 컴퓨터 시스템" 이라는 명칭의 책 2판에서, 다니엘 피 시웨오렉(Daniel P. Siewiorek) 및 로버트 에서. 스웰즈(Robert S. Swarz)는 에러 검출, 보호 중복, 오류 허용 소프트웨어, 및 신뢰성 기술들에 포함되는 평가 기준을 다루고 있다. 이 책의 단원 3에서는 시스템 레벨, 레지스터 또는 전송 레벨, 버스 레벨, 모듈 레벨, 및 게이트 레벨에서의 컴퓨터 출력에 대한 비교를 제시하고 있다. 작가들은 오류가 모듈 출력에 도달하기 전에 오류의 영향을 고립 또는 정정하는 3중-중복 모듈들 더하기 투표를 설명하고 있다. 작가들은 또한, 하이브리드 중복 시스템(hybrid redundant system)에서의 백-업 스페어들(back-up spares)의 사용을 설명하고 있다. 즉, 그 코어내에서 실패한 모듈들을 대체하기 위해 스위치될 수 있는 투표기 판단 시스템 출력 및 백-업 스페어 모듈들을 구비한 병렬 N-모듈 동작의 코어. 이 책의 도 3-31에는 3개의 모듈 및/또는 3개의 투표기들의 출력들에서 주요 투표를 도시하고 있다. 시웨오렉 외는 이러한 기술은 신호 지연 및 성능의 저하를 낳는다라고 주장하고 있다. 도 3-57은 공통 시시얼 버스 및 모두 중복으로 내부결선된, 프로세서/캐쉬, 메모리 및 입력/출력 모듈들로부터 이행되는 홉킨스, 스미스, 및 라라(1978년; Hopkins, Smith, Lala)의 오동작 허용 컴퓨터를 도시하고 있다. 상기 컴퓨터의 연산들은 3가(triads)로 이행된다: 투표 모드에서 동일한 동작을 이행하며, 클럭 레벨에서 동기된 3개의 프로세서/캐쉬들 및 3개의 메모리들. 대부분의 처리 과정은 캐쉬를 이용하기 때문에, 투표는 모든 클럭 사이클 마다 이행되지는 않으며, 단지 데이터가 버스를 통해 전송될 때마다 이행된다. 작가들은 단일 메모리에 연결된 투표기 출력을 구비하나, 개별적인 버스들에 의해 투표기에 결합된 다중 프로세서들을 포함하는 시스템을 설명하지는 않았다. 시웨오렉 및 스웰즈는 그 프로세서 입출력들이 각 클럭 사이클마다 투표하는 시스템을 설명하지는 않았다. 작가들은 그러한 시스템의 부분으로서의 역기능 프로세서들의 파워를 제어하기 위한 수단을 설명하지는 않았다.
군사적 및 상업적 우주 운송 수단에서 사용하기 위한 상업적으로 이용가능한 부분들을 기초로하는 오동작 허용 컴퓨터의 개발은 충분한 조작상의 및 비용상의 이점들을 제시해야 될 것이다. 그러한 발명은 방사능에 강한 칩들을 기초로한 현존하는 접근 방식보다 보다 저렴한 제조 비용 및 보다 높은 레벨의 성능을 제공해야 한다. 본 발명은 받아들일 수 없을 정도의 높은 비율에서 단일 이벤트 업세트들(single event upsets)을 발생시키는 무작위 오류 또는 방사능 환경에 대한 원거리 장작 컴퓨터 시스템 및 그 밖의 프로세서들에 사용될 수 있다. 그러한 방사능 업세트 보호는 에러를 발견 및 정정하는 것이다. 만일, 오동작 허용 방법이 매우 낮은 하드웨어 레벨 예컨데, 컴퓨터 레지스터 또는 컴퓨터 모듈들의 출력 대신에 프로세서 칩내에서 적용할 수 있다면, 매우 유익할 것이다. 그러한 시스템은 특정 컴퓨터 불모의 위성 산업에서 오랜기간 절신한 필요성을 충족시킬 수 있을 것이다.
본 발명은 높은 성능의 고장 허용 컴퓨터에 관한 것이다. 특히, 본 발명은 높은 하드웨어 클럭 레벨에서 중복 투표(redundant voting) 방법 및 장치를 제공한다. 본 발명은 컴퓨터에서 에러 검출 및 정정에 채용될 수 있으며, 특히 궤도내의 우주선과 같은 원거리에 설치된 컴퓨터로 채용될 수 있다.
도 1a는 시스템 (I/O) 버스에 연결된 중복 컴퓨터들을 나타낸 컴퓨터 시스템의 구성도이다.
도 1b는 병렬로 "록단계(lockstep)" 동작을 이행하며, "투표된(voted)" 시스템 메모리로의 출력들을 갖는 다수의 상업적 중앙 연산 장치들(CPU)를 구비하는 컴퓨터를 나타낸 본 발명의 구성도이다.
도 2는 그 출력이 투표되지 않았은 성분, 3개의 투표중 2개에 의해 비교된 성분들, 및 그 출력이 4개의 투표중 2개에 의해 비교되는 성분에 대한 하루마다 일어라는 개별적인 부분 업셋들의 수 대 년간 업셋트들의 수를 설명하기 위한 흐름도이다. 상기 흐름도는 시스템 업세트들이 크기의 많은 차수들만큼씩 성분의 출력의 비투표 이상으로 투표를 위해 감소되는 것을 보여주고 있다.
도 3은 본 발명을 구현한 상업적인 방사능 비보호 CPU들을 사용한 컴퓨터의 일 바람직한 실시예의 블록 구성도이다.
도 4는 도 1b 및 도 3에 도시된 "4중 투표(quad voting)"을 구현하는 투표기에 대한 전형적인 회로의 구성도이다.
도 5는 오류 검출 및 정정에 대한 시스템 반응을 나타낸 본 발명의 예의 상태를 도시한 도면이다.
도 6은 파워 온, 명령 또는 업세트에 의한 디스어블되었을 때의 개별적 프로세서의 다양한 상태들, 및 한 상태에서 다른 상태로의 전이 나타낸 CPU 제어 상태 도표이다.
도 7은 상기 CPU들을 재동기 및 에러로부터 회복시키는 하드웨어 및 소프트웨어를 도시한 흐름도이다.
본 발명은 방사능에 의해 야기된 단일 이벤트 업세트들(SEU) 및 하드웨어 클럭 레벨에서 투표를 이용하는 그 밖의 다른 무작위 실패들에 의해 발생된 에러들을 검출 및 정정한다. 하드웨어 클럭 레벨에서의 투표는 매 클럭 사이클마다 다수의 중앙 연산 유니트들의 데이터 및 어드레스 신호들을 비교하는 것을 말한다. 과거에는, 투표 기술이 오랜동안의 우주에서의 생명 유지 응용들에서 고 시스템 레벨들에서 이용되어 왔었다. 최근의 반도 기술의 진전은 하드웨어 클럭 레벨에서 비방사능 방지의 상업적 성분들을 위한 중복 투표의 사용을 가능하게 하였다. 현재 이용가능한 보다 고집적화 레벨들은 단지 몇몇 디바이스들을 사용하는 전체 시스템을 위해 중복 기능들을 사용할 수 있게 하고 있다. 이전에는, 고성능 프로세서는 몇몇 로직 칩들, 플로팅 포인트 칩 및 국부 캐쉬로서의 많은 메모리 칩들로 구성되어었다. 오늘날, 이러한 모든 기능들은 단일의 칩에 포함된다. 중복 기능들은 이러한 칩을 사용하는 하나의 모듈 및 단지 소수의 다른것들내에서 수행될 수 있다.
본 발명을 수행하는 컴퓨터 구조의 일 바람직한 실시예는 4개의 상업적 단일 칩의 중앙 연산 장치들(CPUs), 투표기, 메모리 제어기 및 시스템 메모리를 구비하는 컴퓨터를 포함한다. 선택적인 실시예는 3개의 상업적 CPU들을 포함한다. 상기 CPU들은 엄격히 "록스텝(lockstep)"으로 동작한다. 즉, 각 CPU의 각 동작은 병렬로, 대체로 동시에 다른 CPU들과 동시에 이루어진다. 상기 CPU들은 록(lock)을 유지하는 통상의 페이즈 록 루프 회로로 동작한다. 모든 4개의 CPU 출력들은 상기 시스템을 위한 용어 "쿼드-투표(quad-voted)"를 야기시키는 투표기내의 각 CPU 클럭 사이클에서 투표된다. 상기 투표기는 방사능 경화일 수 있다. 투표 과정에 있어서, CPU 출력 신호들 각각은 매 클럭 사이클마다 투표기에 의해 상호 비교된다. 상기 프로세서들은 단일 시스템 메모리 및 단일 메모리 버스를 공유한다. 상기 프로세서들이 록스텝 상태에 있으므로, 상기 모든 프로세서들은 동시에 동일 메모리 접속을 요구한다. 투표된 어드레스들은 메모리 접속에 사용되며, 투표된 데이터는 메모리 제어기를 통해 메모리 및 시스템 컴퓨터(I/O) 버스에 기재된다. 디바이스 "래치업(latchup)"에 의해 발생된 에러 정정은 래치 조건으로 인한 파괴적인 손상을 방지하기 위해 프로세서 유니트 또는 다른 성분들로부터의 파워 감소 또는 제거에 대한 필연성을 포함한다. 상기 투표기 및 메모리 제어기는 주문형 집적 회로(ASIC)로 구현할 수 있다. 투표기 및 메모리 ASIC들은 방사능 경화성일 수 있다.
메모리 및 시시템 I/O 버스로부터 독출된 데이터는 동시에 4개의 프로세서 칩들 모두에 제공된다. 메모리로부터의 "독출(reads)"은 통상의 기술을 사용하여 검사한다. 예컨데, 공지된 바와 같이, 메모리 칩 하드웨어에서 구현되는 "햄밍 코드(Hamming codes)"는 단일 비트 에러를 검사 및 정정할 수 있으며, 2중 비트 에러를 검출할 수 있다.
각 CPU로부터의 출력은 모든 다른 CPU들로부터의 출력과의 동의를 위해 비교된다. 상기 투표기에 제공된 주요 CPU 출력 신호들의 동의는 절대 다수의 값을 갖는 표결된 출력 신호를 발생시킨다. 절대 다수에 동의하지 않는 CPU 출력 신호는 에러 신호를 발생하여 투표기에 의해 검출된다. 상기 에러 신호는 여러 방식으로 재반응하는 메모리 제어기에 전송된다:
1. 절대 다수의 표결된 신호는 인터럽트없이 CPU 처리 동작을 계속하도록 동의하는 CPU들에 의해 사용된다.
2. 비동의 CPU는 또 다른 투표로부터 배제된다.
3. 시스템 관리 인터럽트(SMI)를 다른 CPU들에 발생시킨다.
4. 잠시 후에, 소프트웨어는 배제된 CPU를 회복시키는 재동기 과정을 초기화한다.
컴퓨터 고장의 경우, 여분의 에러-프리(error-free) 컴퓨터로 대체된다. 그러나, 본 발명의 실시예에 따른 방법 및 장치의 사용은 여분의 컴퓨터로의 대체에 의존할 필요없이 오류에 대한 정정을 기대할 수 있다.
본 발명의 목적들 및 의도들의 진가 및 본 발명의 완전하고 포괄적인 이해는 도면을 참조로한 바람직한 실시예에의 다음의 상세한 설명을 통해 얻을 수 있을 것이다.
기본 구조
도 1a는 컴퓨더(11a, b)내의 중앙 연산 장치(CPU) 성분들의 오동작을 허용 및 관리하는 컴퓨터 시스템의 최상위 레벨의 블록 구성도이다. 상기 컴퓨터(11a, b)는 기록 또는 다른 디바이스들을 구동하기 위한 시스템 컴퓨터(I/O) 버스(12)에 데이터 및 제어 신호를 제공한다. 본 발명은 컴퓨터 에러들을 "마스크(mask)"한다. 이러한 에러들은 디자인 및 수명 끝의 오동작 또는 방사능에 의한 단일 이벤트 업세트들(SEU)에 의해 발생된다. 본 발명은 또한 반도체 팩키지내로의 방사능 물질들(알파 입자들)의 투사에 의한 임의의 또는 영구적인 오동작, 또는 X-레이를 사용하는 진단 또는 치료용 의료 장비에 노출과 같은 다른 경우들에 의해 야기된 오동작을 허용한다. 업세트는 성분들이 오동작이라는 것을 반드시 지적하는 것은 아니다. 간헐적인 또는 완전한 고장은 동작 중지시키거나 또는 대체되어야 할 오동작 성분을 지적한다.
오동작 허용 컴퓨터가 도 1b에 도시되어 있다. 본 발명의 이러한 구성도에 있어서, 병렬 "록스템(lockstep)"으로 동작하는 4개의 상업적 중앙 연산 장치들(22; CPU)가 도시되어 있다. 상기 CPU들은 상기 록(lock)을 유지하는 통상의 페이즈 록 루프 회로에서 동작한다. 각 CPU(22)의 각각의 동작 단계는 다른 CPU들(22)와 병렬 및 대개 동시적으로 동작한다. 시스템 메모리(20)로의 모든 CPU 출력 신호들(15)은 투표기(16)를 통과한다. 상기 CPU 출력 신호들(15)은 "투표(vote)"된다. 4개의 CPU가 사용되는 경우, 하드웨어 구성은 "쿼드-투표(quad-voted)" 시스템이라 일컬는다. 투표 과정에서, CPU 출력 신호들 각각은 매 CPU 클럭마다 투표기에 의해 상호 비교된다. 상기 CPU(20)는 단일 시스템 메모리(20) 및 CPU 버스(17)을 공유한다. 상기 CPU(22)들이 록스텝 상태에 있으므로, 상기 모든 CPU(22)들은 동시에 동일한 메모리 접속을 요구한다. 투표된 어드레스들은 시스템 메모리(20) 접속에 사용된다. CPU 버스(17)상의 투표된 데이터(17A)는 메모리(20)에 기재되며, 메모리 제어기(18)를 통해 시스템 컴퓨터(I/O) 버스(12)에 재공된다. 상기 투표기(16) 및 메모리 제어기(18)는 주문형 집적 회로들(ASIC)에서 구현될 수 있다. 상기 투표기(16) 및 메모리 제어기(18)는 방사능 경화성일 수 있다.
메모리(20) 및 시시템 I/O 버스(12)로부터 독출된 데이터 신호들(19, 21)은 4개의 CPU들(22) 모두에 동시에 제공된다. 상기 메모리(20)로부터의 "독출(reads)"은 통상의 기술을 사용하여 검사된다. 메모리 칩 하드웨어에서 구현되는 공지된 "햄밍 코드(Hamming codes)"는 단일 비트 에러를 검사 및 정정할 수 있으며, 2중 비트 에러를 검출할 수 있다.
각 CPU(22)로부터의 출력(15)은 투표기(16)내의 모든 다른 CPU들(22)로부터의 출력(15)에 동의하는지를 위해 비교된다. 상기 투표기(16)에 제공된 대다수의 CPU 출력 신호들(15)의 동의는 절대 다수의 값을 갖는 표결된 출력 신호(17a)를 발생시킨다. 절대 다수에 동의하지 않는 CPU 출력 신호(15)는 투표기(16)에 의해 검출되며 이어, 상기 투표기(16)는 에러 신호를 발생시킨다. 상기 에러 신호는 투표 상태 및 제어 회로에 전송된다. 상기 회로는 상기 메모리 제어기(18) 또는 상기 투표기(16)내에서어 구현된다. 상기 투표 상태 및 제어 회로는 여러 방식들로 반응한다:
1. 절대 다수의 표결된 신호는 인터럽트없이 연속적으로 CPU 처리 동작을 위해 사용된다.
2. 시스템 관리 인터럽트(SMI)가 발생되고 다른 CPU들(22)에 옮겨진다.
3. 잠시 후에, 소프트웨어는 배제된 CPU(22)를 회복시키는 재동기 과정을 초기화한다. 만일 CPU 출력 신호(15)가 임의의 업세트의 결과로서 일치하지 않는 다면, 모든 CPU들(22)은 마지막-투표된 CPU 내부 상태를 동등하게 모든 CPU들(22)에 분배하므로써 재동기된다.
상기 시스템 로직은 모든 CPU들(22)을 재동기화함으로써, 오동작 CPU(22)의 파워를 제거함으로써, 또는 여분의 컴퓨터(11b)에 스위칭하고 대체된 CPU들을 재부팅 및 재동작시킴으로써, 검출된 오동작으로부터의 회복의 최선의 기회를 선택한다.
만일, 동작가능한 CPU들(22)이 3개 미만이고, 동의하는 CPU(22)들이 2개 미만일 때 상기 CPU 출력 신호(15) 비동의가 CPU(22)의 임의의 업세트 또는 영구 실패를 지적하는 경우, 여분의 에러-프리(error-free) 컴퓨터(11b)로 대체되고 상기 시스템은 리세트(보통 모든 레지스터들을 제로로 설정하여)되고, 재부팅된다. 그러나, 본 발명에서 실시된 기술의 사용으로 여분의 컴퓨터(11b)의 대체에 의존할 필요없이 설명된 오류들에 대한 정정이 예상된다. 제2 컴퓨터는 보다 큰 오동작 허용을 제공하기 위한 본 발명의 바람직한 실시예의 일부분을 형성하지만, 단일의 생존한 컴퓨터는 임의의 업세트 이 후, 미션을 계속 유지한다는 점을 인정해야 한다.
동일한 클럭 사이클동안 모든 신호들(14)이 모든 CPU들(22)에 제시되는 것을 확인하기 위해, 상기 시스템의 다른 부분들에서 비롯되는 모든 신호들(17b, 21)은 투표기(16)내의 시스템 클럭에 동기되며, 각 CPU(22)에 제공된다. 예컨데, 그러한 신호들은 리세트 및 인터럽트를 포함한다.
도 2는 24년마다 일어나는 시스템 업세트들의 수 대 그 출력이 투표되지 않았은(28a) 성분, 3개의 투표(28b)중 2개에 의해 비교된 성분들, 및 그 출력이 4개의 투표(28c)중 2개에 의해 비교된 성분에 대한 26일마다 일어라는 개별적인 부분의 업세트들의 수를 설명하기 위한 도면이다. 하루동안 일어하는 업세트들의 주어진 수, 예컨데, 10에 대해, 상기 도표는 매년 상기 시스템 업세트들이 약 10의 3승(103)씩 비투표 성분의 출력 이상으로 4중 2의 성분들에 대해서 감소하는 것을 나타내고 있다. 매일마다 부품당 10개의 업세트들은 4중 2 투표 시스템에서 약 500년 동안 한 번의 시스템 업세트만을 발생시킨다. 3중 2 시스템에서 조차 동일한 부품 업세트 비율에 대해 년간 수차례의 시스템 업세트를 발생시킨다. 본 발명의 예에서, 4개의 CPU들(22)중 하나가 영구히 망가지지않는 한 4개의 투표기들은 사용가능하다. 상기 4중 2 투표 세트는 4개의 멤버들로 시작하나, 어느 한 멤버가 실패하자만자 3중 2 세트로 감소한다. 위성 제어 소프트웨어 시스템의 하나의 제2 사이클 시간내에 회복에 일관되게 상기 업세트 연산을 위해 재동기에 대한 절반의 제2 평균 시간이 사용된다. 대부분의 경우에는, 보다 낮은 시스템 업세트 비율을 발생시키는 보다 짧은 사이클 시간이 가능하다.
오동작 허용 컴퓨터
도 3은 오동작 허용 컴퓨터(30)의 바람직한 실시예의 구현을 상세히 도시한 도면이다. 바람직한 실시예에서, 컴퓨터(30)는 동기되어 동작하는 4개의 CPU들(32)을 갖는다. 그러나, 사용된 CPU들(32)의 수는 사용자가 받아들일 수 있는 오동작 허용에 의존하여 적어도 3개 이상에서 가변적일 수 있다. 도 3에 도시된 상기 CPU들(32)은 축소 명령 집합 컴퓨터 칩들(RISC)이다. RISC 칩들은 고속 메모리들을 구비하고 다른 사용가능 CPU칩들보다 작은 오버헤드를 요구함으로로, RISC 칩들이 바람직하다. 상기 컴퓨터(30)는 ASIC에서 구현되는 바와 같이 도시된 투표기(34)를 포함한다. 선택적인 실시예에서, 상기 투표기(34)는 현장 프로그램 가능 논리 배열들로 구성될 수 있다. 상기 투표기(34)는 각각의 CPU들(32)와 결합된다. 상기 투표기(34)는 투표 상태 및 제어 회로(38)을 구비한 메모리 제어기(36)에 연결된다. 상기 메모리 제어기(36)는 상기 투표기(34)와 분리된 ASIC로 구현되는 것으로서 도시되어 있다. 비록 핀 수의 제한이 투표기(34) 및 메모리 제어기(36)에 대해 두개 이상의 IC들을 요구하지만, 이들은 하나의 설계일 수 있다.
도 3에는 또한 메모리 인터페이스(40)을 통해 투표된 CPU 신호들(35)를 수신하는 메모리가 도시되어 있다. 상기 투표된 CPU 신호들(35)은 또는 버스 인터페이스(42)를 통해 시스템 컴퓨터(I/O) 버스(12)에 전송된다. 상기 메모리 출력 신호들(37a)은 상기 CPU 버스(35a)을 거쳐 상기 메모리 제어기(36) 및 상기 투표기(34)통해 입력 신호들(33a)로서 상기 CPU들(32) 각각에 공평히 분배된다.
상기 다수의 CPU들(32)은 비교를 위해 입력 신호로서 CPU 출력 신호들(33b)을 상기 투표기(34)에 제공한다. 상기 투표기(34)에서 절대 다수로서 동의된 상기 CPU 출력 신호들(33b)은 절대 다수 값을 가즌 투결된 출력 신호(35)로서 상기 투표기(34)로부터 발생된다. 상기 투표기(34)에 의해 입력 신호로서(37b)로서 상기 시스템 메모리(46)에 제공된 상기 표결된 출력 신호(35)는 또한 투표 상태 및 제어 회로(38) 및 상기 시스템 컴퓨터(I/O) 버스(12)에 제공된다.
절대 다수의 CPU 출력 신호들(33b)에 일치하지 않는 CPU 출력 신호들(33b)는 투표기(34)에 의해 검출된다. 에러 신호(39b)는 투표기(34)에 의해 발생되고, 투표 상태 및 제어 회로(38)에 제공된다. 절대 다수의 표결된 신호들(35)은 인터럽트 없이 처리 동작을 계속 진행하는 동의 CPU들(32)에 의해 사용된다. 상기 투표 상태 및 제어 회로(38)는 시스템 관리 인터럽트를 발생시킴으로써 상기 에러 신호들(39b)에 반응한다. 이 후, 상기 시스템 관리 인터럽트에 대한 반응중, 소프트웨어는 에러가 단일 이벤트 업세트에 의해 발생하는 경우 다수의 CPU들(32)의 재동기화를 이행한다. 상기 투표 상태 및 제어 회로(38)는 3개 미만의 CPU들(32)이 구동 가능하고 다수의 CPU들(32)중 2개 미만이 동의하는 하는 경우 절대 다수에 동의하기 위해, 상기 컴퓨터 시스템(10)에 오동작 컴퓨터(30)대신에 에러-프리 컴퓨터(30)로 대체하므로써, CPU(32)의 실패에 의해발생된 에러 신호들(39b)에 반응한다. 단순화를 위해 도 3에 도시되지 않은 "재구성 유니트"라 명명되는 통상의 제어 회로는 스위칭 과정을 구현한다.
오동작 검출
오동작 검출은 투표기(34)에서 발생된다. 도 4에는 투표를 구현하는 투표기(34)내의 전형적인 게이트 어레이(50)가 도시되어 있다. CPU 출력 신호들(33b)로부터 도출되는 데이터 신호들(52)에 대한 게이트 어레이(50)를 설명한다. 유사한 게이트 어레이가 투표된 어드레스 신호들 및 투표된 제어 신호들을 얻기 위해 사용된다. 이러한 신호들은 또한 상기 CPU 출력 신호들(33b)로부터 유래한다. 상기 게이트 어레이(50)는 제1 AND 게이트 어레이(53), 제2 AND 게이트 어레이(55), 제1 OR 게이트(63), 및 배타적 OR 게이트들의 어레이(65)로 구성된다. 이러한 게이트 어레이들은 상기 CPU 출력 신호들(33b)을 비교하고, 상기 메모리 버스 및 I/O 버스에 투표된 출력을 제시하며, 그리고 CPU(32)로부터의 에러 출력(33b)을 검출한다. 상기 투표기(34)는 상기 시스템을 검사하는 데에 사용되는 바이패스 게이트 어레이(55)를 또한 포함한다. 상기 바이패스 게이트 어레이(55)는 병렬의 AND 게이트들(51) 및 OR 게이트(62)를 포함한다. 상기 바이패스 게이트 어레이(55)는 단지 일 기능의 CPU(32)가 동작 상태를 유지할 때 그 시스템(10)을 구동하기를 원하는 경우에, 상기 투표기(34)의 오버라이드(override)로서 채용될 수 있다.
설명한 상기 회로에서, 상기 제1 AND 게이트 어레이(53)의 각각의 제1 AND 게이트(58)는 제1 입력(52a-d)으로서 데이터 신호(52)인 CPU 출력 신호(33b)를 갖는다. 각각의 제1 AND 게이트는 제2 입력 신호(54a-d)로서 인에블 신호(54)인 투표 상태 및 제어 신호(39a)를 갖는다. 각각의 제1 AND 게이트(58)는 출력(60)을 갖는다. 상기 제2 AND 게이트 어레이(57)의 각각의 게이트(59)는 제1 입력으로서 상기 제1 AND 게이트 어레이(53)의 일 게이트(58)로부터의 출력(60)을 갖으며, 제2 입력으로서 상기 제1 AND 게이트 어레이(53)의 다른 게이트(58)로부터의 출력(60)을 갖는다. 각각의 제2 AND 게이트(59)는 출력(61)을 갖는다.
상기 제1 OR 게이트(63)는 입력으로서 상기 제2 AND 게이트 어레이(57)의 각 게이트(59)의 출력(61)을 갖으며, 출력(66)을 갖는다. 상기 바이패스 게이트 어레이(55)는 또한 출력(61a)을 제1 OR 게이트(63)에 제공한다.
상기 배타적 OR 게이트 어레이(65)의 각 게이트(64)는 상기 제1 OR 게이트(63)의 출력(66)과 결합된다. 상기 어레이(65)의 상기 배타적 OR 게이트들(64)의 각 게이트는 데이터 신호들 각각과 결합되며, 출력(68)을 갖는다.
상기 제1 AND 게이트 어레이(53)의 제1 터미널에 입력되는 데이터 신호(52)는 각 인에블 신호(54)를 상기 어레이(53)의 대응하는 게이트의 제2 입력 터미널에 적용함으로써 출력들(60)로서의 어레이(53)으로부터 나타난다. 상기 제1 AND 게이트 어레이(53)에 입력된 다른 데이터 신호들(52)의 값에 동의하지 않는 상기 제2 AND 게이트 어레이(57)의 출력들(60)은 논리 "0"의 값이 될 것이다. 출력들(61)은 다른 데이터 신호들(52)에 동의하는 그러한 데이터 신호들(52)에 대한 논리 AND되며, 그러한 데이터 신호들(52)을 갖는다.
제1 OR 게이트(63)으로부터의 출력(66)은 출력들(61)로서 상기 제2 AND 게이트 어레이(57)로부터 나타나는 동의하는 데이터 신호들(52)의 값을 갖는다. 제1 OR 게이트(63)으로부터의 출력(66)은 상기 배타적 OR 게이트 어레이(65)의 각 게이트(64)의 제1 입력에 적용된다. 상기 제1 OR 게이트(63)로부터의 상기 적용된 데이터 신호(52) 및 상기 적용된 출력(66)이 일치하지 않는 경우, 업세트 또는 오동작을 지적하는 에러 신호(68)는 상기 배타적 OR 게이트 어레이(65)의 각 게이트(64)에 의해 발생된다.
도 4에 도시된 바와 같이, 데이터 신호(52)로서 나타나는 각 CPU 출력 신호는 바이패스 신호(56)을 상기 바이패스 게이트 어레이(55)내의 게이트(51)의 일 터미널에 적용시키므로써, 투표 과정 주변에서 바이패스 될 수 있다. 상기 데이터 신호는 상기 입력 라인(54a-d)로부터 그 각각의 게이트로의 상기 인에블 신호(54)제거함으로써 투표로부터 제외, 즉 디스어블된다. 만일 단지 하나의 CPU(32)만이 인에블된다면, 그리고 그 나머지가 디스어블인 경우, 투표기 데이터 출력(66)은 그 바이패스된 CPU의 출력(33b)를 따를 것이다. 만일 하나 이상의 CPU(32)가 인에이블이라면, 데이터 출력(66)은 모든 바이패스된 CPU 출력들(33b)의 논리 OR일 것이다. 만일, CPU(32)가 바이패스되고 디스어블된다면, 그 출력(33b)은 상기 OR 게이트(63)에 제시될 것이다. 유사한 바이패스가 신호들을 동시에 어드레스하기 위해 발생된다.
오류 정정
도 5는 4개의 CPU들(32)를 구비한 예시적인 본 발명의 두개의 중복 컴퓨터들(30)중 하나에 대한 상태를 도시한 도면이다. 상기 도면에는 오동작의 오동작 검출 및 정정에 대한 시스템 반응이 도시되어 있다. 본 실시예의 하나의 CPU(32)가 업세트되거나 또는 오동작하는 경우, 상기 컴퓨터(30)는 나머지 3개의 CPU들(32)를 가지고 동작하게 될 것이다. 만일 제2 CPU(32)가 일시적으로 업세트된다면, 상기 컴퓨터(30)는 동의로 두 개의 CPU들(32)의해 기능을 계속 수행하게 되며, 모든 CPU들(32)은 모든 4개의 CPU들(32)이 일치하도록 재동기될 것이다. 본 바람직한 실시예의 로직은 두 CPU들(32)의 영구 오동작 및 제3의 업세트인 경우 오동작 컴퓨터(30)대신에 여분의 컴퓨터(30)로 대체하는 동작을 수행한다. 비일치가 감지될 때 상기 투표기(34) 및 투표 상태 및 제어 회로(38)가 CPU를 인에블 및 투표 상태로부터 비일 치 및 디스어블 상태로 이동한다는 점을 제외하고는, 상기 로직은 상기 CPU들(32)내에서 구동되는 소프트웨어에 의해 원리적으로 제어된다.
"비투표(unvoted)"된 부분 또는 성분에 비교하면, 3개의 CPU들(32)의 투표 세트는 멤버들의 하나가 업세트 및 올바르게 동작하지 않는 경우에서 조차 정정된 출력들을 제공한다. 3개의 CPU들(32)중 하나가 동작하지 않는 조건에서, 만일 단지 두 개의 유효 투표기들이 있다면 과반수 투표는 승인되므로, 다른 두 CPU들(32)중 하나의 업세트는 시스템 업세트를 초래한다. 한번, CPU(32)가 업세트되면 내부 기계 상태의 복합성에 의해 다른 CPU들(32)와는 다르게 동작이 연속적을 일어날 수 있다. 오동작 CPU(32)를 투표 세트에 재저장하기 위해서는 재동기가 패요하다. 상기 시스템 업세트 레벨은 개별적인 CPU들(32)의 상기 업세트 비율 및 재 동기가 초기화되기 이전 시간의 평균 길이에 의존한다.
도 5의 도표는 상기 시스템 로직을 도시하고 있다. CPU 상태는 폐쇄된 박스들로 도시되어 있다. 한 상태로부터 다른 상태로의 변이가 라인들로 도시되어 있으며, 화살표는 변이의 방향을 지적하고 있다. 상기 컴퓨터(30)는 "4개의 CPU 동의" 상태에서 시작된다. 만일, 하나의 CPU 출력(33b)가 다른 3개의 CPU들의 출력들과 일지하지 않다면, 비일치를 지적하는 에러 신호가 앞서 설명한 바와 같이, 투표기(34)에 의해 발생된다. 상기 컴퓨터(30)는 "3개의 CPU들 동의(108)"로 변이된다(104).
상기 컴퓨터(30)가 상태(108)로 변이되는 경우, 재동기를 수행할 것을 요구하는 인터럽트가 상기 CPU들(32)에 발생된다. "3개의 CPU들 동의 상태(108)"로부터 상기 컴퓨터(30)는 "재동기 상태(114)"를 통한 변이된다(110). 이어, 상기 컴퓨터(30)는 얼마나 많은 CPU들(32)이 영구 고장 또는 파워제거된 및 "재동기 상태(114)"동안 동이로 이동하는가에 의존하여, 상태(102)로 변이(116), 상태(108)로의 변이, 또는 상태(126)로의 변이된다(128).
상기 컴퓨터(30)가 "3개의 CPU들 동의 상태(108)"에 있는 동안, 만일 3개의 투표 CPU들(32)중 비동의가 검출되면, 비동의 CPU(32)는 디스어블되고 상기 컴퓨터는 "2개의 CPU들 동의 상태(126)"로 변이된다(122). 상태(122)에서 상태(126)으로의 변이중에 시스템 관리 인터럽트가 재동기를 이행이 요구되는 CPU들(32)에서 발생된다. "2개의 CPU들 동의 상태(126)"로부터, 재동기(114)를 통한 변이(130)는 얼마나 많은 CPU들(32)이 영구적인 고장인지 또는 파워가 재거되거나 또는 "재동기 상태(114)"동안 동의로 이동할 수 없는지에 의존하여 상기 컴퓨터(30)로 하여금 상태들(102, 108, 또는 126)를 다시 재경유하게 한다.
컴퓨터가 "2개의 CPU 동의 상태(126)"에 있는 동안, 만일 두개의 CPU들(32)에서 비동의가 검출되면, 상기 컴퓨터(30)는 "고장 컴퓨터 상태(136)"로 전이(134)될 것이다,
"고장 컴퓨터 상태(136)"로 전이되자 마자, 상기 컴퓨너(30)는 재구성 유니트에 고장 조건을 지적하고, "에러-프리 중복 컴퓨터 상태로의 스위치(140)"로의 전이(138)가 이행된다. 스위치가 이행되면, 컴퓨터(30)는 리세트(대개 모든 레지스터들을 제로로)로 되며, 상기 시스템(10)은 상기 에러-프리 중복 컴퓨터(30)에 의해 재부팅된다. 대체된 컴퓨더(30)는 "4개의 CPU들 동의 상태(102)"로 변이된다(148).
CPU 상태 제어
개별적인 CPU들(32)은 다음의 상태들중 어느 한 상태에 있을 수 있다:
1. 인에블 및 투표;
2. 명령 디스어블;
3. 비동의 디스어블;
4. 바이패스;
5. 재동기; 또는
6. 파워 다운.
본 발명의 일 실시예에서, 주문형 집적 회로(34; ASIC)는 CPU(32)에 대한 인터페이스 핀들이 비스트레스(non-stress) 조건으로 구동되는 것을 보증하므로써, 파워가 감소된 CPU(32)를 지지한다. 파워가 인터럽트되는 경우의 디바이스상에서의 스트레스 제어는 그 디바이스의 신뢰성 감소를 방지한다.
상기 투표 상태 및 제어 회로(38)는 파워 감소 상태(174)에 머물게하는 경우의 디스어블 상태(186)하에, CPU(32)를 비동의에 늘 놓으므로써 파워 감소 상태(174)로부터 인에이블 및 투표 상태(156)로의 직접적인 이동을 방지한다.
상기 컴퓨터(30)의 구동중 발생된 상기 CPU 제어 및 상태 신호들(39a, 39b)는 다음과 같다:
1. 투표기(34)로부터의 에러 신호(68)이고, 각 CPU(32)에 대해 하나;
2. 투표 상태 및 제어 회로(38)로부터 투표기(34)로의 인에블 신호(54) 및 바이패스 신호(56)이고, 각 CPU(32)에 대해 하나;
3. 투표 상태 및 제어 회로(38)로부터 각 CPU(32)로의 시스템 관리 인터럽트 및 리세트 신호(54); 및
4. 각 CPU(32)의 파워 제어 회로로의 파워 온/오프 신호.
상기 시스템 관리 인터럽트 및 리세트 신호들은 클럭 동기를 위해 투표기(34)를 통과한다. 각 CPU(32) 상태에 대한 제어 신호들의 정적 상태가 표 1에 도시되어 있다.
도 6은 파워가 명령에 의한 디스어블 및 업세트 및 한 상태에서 다른 상태로의 전이에 의해 디스어블된 개별적인 CPU들(32)이 파워 온될 때의 다양한 상태들을 나타낸 상태 제어 도표(150)이다. 상기 도표에서, CPU 상태들이 폐쇄된 박스들로 도시되어 있으며, 한 상태에서 다른 상태로의 변이가 라인으로서 도시되어 있다. 화살표에 의해 변이의 방향을 나타내었다. 사이클은 파워 온 명령(152)에 의해 시작된다. 컴퓨터(30)에서 각 CPU(32)는 "투표 및 인에이블 상태(156)"으로 전이된다(154). 상기 컴퓨터(30)에서 각 CPU(32)는 전이(158)에 의한 소프트웨어로부터의 명령에 의해 디스어블될 수 있다. 디스어블 명령은 오랜 기간의 임무 또는 낮은 버스 파워를 위한 파워의 보존을 위해 사용될 수 있다. 이러한 명령은 태양 플레어의 활동이 비교적 낮고 고려해야 할 업세트들의 수가 감소하는 경우, 위성의 파워 보존에 유용하다. 만일 파워 소모가 많다면, 파워의 감소는 최대 오동작 허용에 위해 또한 바람직할 것이다. 영구 오동작이 인식 또는 감지되는 경우, 상기 컴퓨터(30)는 또한 디스어블될 것이다. 상기 "명령 디스어블 상태(160)"가 변이(162)에 의해 반전될 수 있다. 상기 "명령 디스어블 상태(160)"로부터 상기 CPU들은 재동기되어 "재동기 상태(168)"로부터 및 "재동기 상태(168)"로의 변이(166)에 의해 지적된 바와 같이, "명령 디스어블 상태(160)"로 되돌아 갈 수 있다.
CPU는 "투표 및 인에이블 상태(156)"로부터 "파워 다운 상태(174)"로의 변이(170) 또는 "명령 디스어블 상태(160)"로부터의 변이(172)를 경유하는 이동이 있을 수 있다. CPU(32)는 "비동의 디스어블 상태(186)"로부터의 변이(186)에 의해 파워 감소가 있을 수 있다. 상기 "비동의 디스어블 상태(186)"는 업세트에 의한 에러 신호(68)에 의해 발생된 "동작 투표 인에이블 상태(156)"로부터의 변이(190)에 의해 성취된다. 만일 업세트 CPU가 동작을 위해 복구될 수 있다면, "재동기 변이 상태(194)"로의 변이(188)가 이행된다. 상기 CPU들(32)은 재동기되어 변이(196)에 의해 "동작 투표 인에이블 상태(156)"으로 되돌아 간다. CPU(32)가 비동의 및 하위의 재동기 이 후, 재동기에 실패하는 경우, 래치업(latchup)이 예상된다. CPU(32)는 "파워 감소 상태(174)"로부터 "비동의 디스어블 상태(186)"을 통한 파워 업 변이(182)에 의해 다시 시작될 수 있다.
재동기 동작
재동기 동작(194)은 CPU들(32)내부에서 구동되는 소프트웨어에 의해 명령받는다. 명령을 받았을 때, 모든 CPU들(32)은 "리세트"에 위치한다. "비동의 디스어블 상태(186; 투표에 대해)"에 있는 CPU들(32)은 "동작 투표 인에블 상태(156)"으로 되돌아 간다. 만일 CPU(32)가 명령에 의해 디스어블되어 있다면(또는 바이패스 상태라면), 그 CPU는 "재동기 변이 상태(168)" 이 후 그 조건을 유지하게 한다. 재동기 동작이 도 7에 도시되어 있다.
CPU 리세트
먼저 파워가 상기 컴퓨터(30)에 인가되는 경우, 모든 CPU들(32)은 파워, 동작, 및 투표 인에블된다(156). CPU가 "비동의 디스어블 상태(186)"으로 변이하는 경우(190), 시스템 관리 인터럽트(SMI)가 투표 상태 및 제어 회로(38)에서 발생되어 상기 CPU(32)에 전송된다. 상기 SMI은 재동기 과정을 시작한다. 인터럽트 소프트웨어 프로그램은 재동기 동작(194)으로의 변이(188)을 초기화한다.
CPU들을 재동기시킴으로써의 에러 정정
도 7은 상기 CPU들(32)을 재동기시키는 하드웨어(201) 및 소프트웨어(205)를 나타낸 흐름도(200)이다. 그 처리 과정의 일부가 하드웨어(201), 원리적으로는 CPU(32), 투표기(34), 및 투표 상태 및 제어 회로(38)에서 발생된다. 다른 처리 과정들은 상기 CPU들(32)에서 구동되는 소프트웨어에 의해 제어된다. 에러 정정 과정이 과반수의 다른 CPU들(32)에 비동의하는 CPU(32)가 투표기(34)에 의해 검출(202)될 때 시작된다. 만일 두개의 CPU들(32)이 동의하지 않는다면, 그 시스템이 고장인 것으로 간주한다. 이러한 경우, 대체된 여분의 컴퓨터(30)에 의해 시스템 재시작이 시도될 것이다. 모든 소프트웨어가 재시작되지만 컴퓨터 기능들의 주요 혼란이 발생할 것이다.
만일 에러가 검출되고 두개 이상의 CPU들(32)이 여전히 동의하고 있다면, 비동의 CPU(32)는 투표 참여로부터 디스어블(208)된다. SMI가 하드웨어에 의해 발생된다. 상기 SMI는 재부팅이 바로는 아니지만 멀지 않아 필요하게 될 것이라는 것을 지적하는 플레그(flag)를 발생시킨다. 상기 적용된 소프트웨어 프로그램은 인터럽트없이 계속 진행한다. 비동의 CPU(32)를 디스어블시킴으로써, 부가적인 업세트들 또는 나머지 CPU들(32)의 고장을 검출하게 하는 투표 과정이 붕괴되는 것을 방지한다. 그 후, CPU들(32)의 인터럽트 인에이블 및 이전의 세팅들에 의해 결정된 바와 같이, 상기 시스템은 시스템 관리 인터럽트(210)에 응답한다(212). 이러한 응답(212)의 부분으로서, 현재 동작중인 프로그램이 인터럽트된 시점을 포함하는 소프트웨어 상태는 메모리(46)에 저장된다. 이러한 정보는 인터럽트된 프로그램이 종료된 정확한 시점에서 다시 시작할 수 있도록 이 후에 사용된다.
상기 인터럽트 서비스 소프트웨어 프로그램(203)은 투표기(34)를 통해 CPU 레지스터들 모두를 메모리(46)에 기입한다. 적어도 두개의 CPU들(32)이 동의하므로로, 상기 레지스터들은 올바른 값들을 갖게 되고, 그 저장된 값들은 에러로부터 벗어나게 될 것이다. 상기 재동기 과정 동안, 이러한 값들은 에러 값들을 모든 CPU들(32)에 재공급하여 비동의 CPU(32)에 재위치시키게 된다. 상기 인터럽트 서비스 소프트웨어 프로그램(203)은 CPU(32)에 의해 변형되었으나 투표기(34)를 통해 메모리(46)으로 아직 기입되지 않은 데이터 캐시내의 위치들을 상기 투표기(34)를 통해 메모리로 기입되게 할 것이다. 다양한 CPU들(32)은 그들의 캐쉬내에 다른 값들을 갖는다면, 투표 과정은 메모리(46)가 단지 옳은 값들을 갖고 있다는 것을 확인한다.
상기 인터럽트 서비스 소프트웨어 프로그램(203)은 이어 재동기화(218)을 구동하고 하드웨어 시퀀스를 시작한다. 첫째, 도 7에 도시된 바와 같이, 리세트 형태가 재동기화에 설정되며(220), 상기 리세트 형태 정보가 전용 레지스터내에 상주하게 된다. 다른 리세트 형태들은 과반수 실패, 파워 업 및 외부 신호를 포함한다. 두째, 리세트 펄스가 발생되고(222), 모든 CPU들(32)에 제공된다. 각 CPU(32)내에서, 상기 리세트 펄스는 모든 CPU들(32)내의 레지스터들이 동일한 값, 통상 제로로 설정되게 한다. 상기 리세트 펄스는 또한 모든 CPU들(32) 캐시들의 내용을 삭제시킨다. CPU(32) 캐시들이 사용되기 전에 새로운 데이터가 메모리(46)으로부터 독출되어야 한다. 마지막으로, 모든 리세트 기능이 이행된 다음, 모든 CPU들(32)은 동일한 기계 상태를 갖으며, 한 번더 동일한 동작을 수행한다. 상기 CPU들(32)은 리세트 벡터라는 특정 어드레스로부터 프로그램 실행(226)을 시작한다.
상기 레세트 벡터 어드레스에 상주하는 상기 리세트 서비스 소프트웨어(229)는 리세트 형태 레지스터를 고찰하고 발생된 리세트 형태를 판단한다. 본 예에서, 리세트 형태가 CPU들(32)의 재동기화를 지적하도록 설정되어 있기 때문에, 소프트웨어(229)는 앞서 메모리(46)에 기입된 CPU 레지스터 데이터를 CPU 레지스터들에 재공급하게 될 것이다. 상기 투표 과정은 단지 하나의 세트 값들이 메모리(46)에 저장되게 하였으므로, 모든 CPU들(32)은 동일한 값을 받는다. 시스템이 인터럽트된 때의 기계 상태를 특징으로 하는 정보는 상기 레지스터들에 재저장된다(234). 리세트 서비스 소프트웨어(229)는 종료된 시점의 원래의 적용 프로그램으로 되돌아 가는 "인터럽트로부터의 복귀(return from interrupt)" 과정을 실행한다.
리세트 펄스에 의해 그 내용이 제거된 상기 CPU 캐시들에는 프로그램이 진행함에 따라 새로운 데이터가 채워진다. 그들의 능동적인 특성 때문에, 캐시의 내용은 비동의가 없다면 동일하지 않거나 또는, 모든 CPU들(32)의 캐시들이 동일할 수도 있다.
재동기화 과정에 필요한 시간 지연보다는 원래의 적용 프로그램이 비동의 및 하부의 재동기화 과정에 의해 그 동작 또는 결과에 영향을 주지는 않는다.
결론
비록 본 발명을 특정 바람직한 실시예 및 선택적인 실시예들을 참조로 상세히 설명하였지만, 본 발명이 속하는 기술의 당업자는 다음의 청구항들의 정신 및 범위로부터 벗어나지 않고 다양한 변형 실시할 수 있을 것이다. 위에서 제시한 다양한 회로들 및 성분들은 바람직한 실시예들을 독자에게 설명하기 위한 것이며, 본 발명을 제한 또는 청구항들의 범위를 제한하기 위한 것은 아니다. 아래의 도면 부호의 목록은 독자에게 명세서 및 도면의 본발명의 요소들을 나타내는 편리한 수단을 제공하기 위한 것이다. 이러한 목록은 청구항의 범위를 한정하거나 좁히기 위한 것은 아니다.
〈도면 부호들의 목록〉
10: 오동작 허용 컴퓨터 시스템 11a-b: 오동작 허용 컴퓨터
12: 시스템 컴퓨터 (I/O) 버스 14: CPU 입력 신호들
15: CPU 출력 신호들 16: 투표기
17: CPU 버스 17a: 투표된 출력
17b: 투표기로의 시스템 입력들 18: 메모리 제어기
19a: 메모리 출력 신호들 19b: 메모리 입력 신호들
20: 시스템 메모리 21: 시스템 버스 입력/출력
22: 상업적 중앙 연상 장치들(CPU) 24: 시스템 업세트-대-년 축
26: 부분 업세트들-대-날(day) 축
28a: 비투표된 성분에 대한 업세트 비율
28b: 3개 성분들중 두개의 투표에 대한 업세트 비율
28c: 4개 성분들중 두개의 투표에 대한 업세트 비율
12: 시스템 컴퓨터 (I/O) 버스 30: 컴퓨터
32: 축소 명령 집합 컴퓨터(RISC) 제어 프로세서 유니트
33a: CPU 입력 신호들 33b: CPU 출력 신호들
34: 주문형 집적 회로(ASIC)
35: 메모리 인터페이스 및 시스템 버스 인터페이스로의 입력/출력 신호들
36: 메모리 제어-주문형 집적 회로
37a: 시스템 메모리로부터의 출력 신호들
37b: 시스템 메모리로부터의 입력 신호들
38: 투표 상태 및 제어 회로
39a-b: 투표 상태 및 제어 회로 입력/출력 신호들
40: 메모리 인터페이스 회로
41: 시스템 버스로의 입력/출력 신호들
42: 시스템 컴퓨터 (I/O) 버스 인터페이스 회로
46: 시스템 메모리(RAM 및 EEPROM)
50: 게이트 어레이 51: 바이패스 AND 게이트
52: CPU 데이터 신호 52a-d: 데이터 라인들
53: 제1 AND 게이트 어레이
54: 투표 상태 및 제어 회로로부터의 인에이블 신호
54a-d: 인에이블 신호 라인들 55: 바이패스 게이트 어레이
57: 제2 AND 게이트 어레이 58: 제1 AND 게이트
59: 제2 AND 게이트 60: 제1 AND 게이트 출력
61: 제2 AND 게이트 출력 61a: 바이패스 게이트 어레이 출력
62: 제2 OR 게이트 63: 제1 OR 게이트
64: 베타적 OR RPDLXM 65: 베타적 OR 게이트 어레이
66: 메모리 및 버스 인터페이스들로의 데이터 신호
68: 투표 상태 및 제어 회로로의 에러 신호들
69: 바이패스 AND 게이트 출력 100: 오동작 검출 및 반응 상태 도표
102: "4개의 CPU들 동의" 상태 104: 일 CPU의 신호들 비동의
108: "3개의 CPU들" 동의 상태 110: 재동기화 초기 구동
114: CPU들의 재동기화
116: 모든 CPU 신호들 동의(고장 CPU 전무)
122: 하나의 CPU 비동의 124: 하나의 CPU 고장
126: "두개의 CPU들 동의" 상태 128: 두개의 CPU들 고장
130: 재동기화 구동 134: CPU 신호들 비동의
136: "고장 컴퓨터" 상태 138: 선언된 "고장 컴퓨터" 상태
140: "중복 컴퓨터로의 스위치" 상태
142: 중복 컴퓨터 인에블 신호 146: CPU들 리세트 및 시스템 재부팅
148: 4개의 CPU 신호들 동의 150: 프로세서 제어 상태 도표
152: "시스템 파워 온" 상태 154: 시스템 인에블 신호
156: "CPU들 구동, 투표 인에이블" 상태
158: 디스어블 구동 신호 160: "CPU 명령 디스어블" 상태
162: CPU들 구동 신호 164: CPU들 재동기화 신호
166: 재동기화 CPU들 신호 168: "CPU들 재동기화" 변이 신호
170: 파워 다운 신호 172: 파워 다운 신호
174: "CPU 파워 다운" 상태 182: 파워 업 CPU 신호
184: 파워 다운 CPU 신호
186: CPU들의 비동의, 디스어블 에러 CPU
188: 재동기화 CPU 신호 192: 재동기화 CPU 신호
194: "CPU 재동기화" 변이 상태 196: CPU 재동기화 신호
200: 하드웨어 및 소프트웨어에 대한 재동기화 시퀀스의 흐름도
201: 재동기화용 하드웨어 202: CPU 비동의 검출
203: 인터럽트 서비스 소프트웨어 프로그램
204: "두개의 CPU들 여전히 동의?" 205: 재동기화에 사용된 소프트웨어
206: 시스템 고장
208: 비동의 CPU를 위한 디스어블 투표
210: 시스템 관리 인터럽트(SMI) 발생
212: SMI에 대한 응답
214: 투표기를 통해 모든 레지스터들을 메모리에 기입
216: 투표기를 통해 변형된 데이터 캐시 위치들을 메모리에 기입
218: 재동기화 시퀀스 구동
220: "재동기화"에 재동기화 형태 설정
222: 리세트 펄스 발생, 알려진 값들로 레지스터들 설정, 캐시 내용 제거
224: 모든 CPU들을 위한 인에블 투표
226: 리세트 벡터에서 실행 시작 228: "리세트 형태?"
229: 리세트-서비스 소프트웨어 프로그램
230: 다른 시퀀스들 구동 232: CPU들 재동기화
234: 레지스터들 재저장 236: 현재의 적용 프로그램으로 복귀

Claims (35)

  1. 고장 허용 컴퓨터 시스템(10)에 있어서,
    동기적으로 동작하는 다수의 중앙 처리 유니트(CPU)(22)를 포함하는데, 상기 각각의 CPU(22)의 각각의 동작 단계는 상기 CPU(22)의 각각의 클록 사이클동안 상기 다수의 CPU(22)중 다른 각각의 CPU(22)와 병렬로 동시에 수행되며, 상기 각각의 CPU(22)는 CPU 입력(14) 및 CPU 출력(15)을 가지며; 및
    상기 각각의 CPU 입력(14) 및 CPU 출력(15)에 연결된 투표기(16)를 포함하며,
    상기 투표기(16)는 상기 다수의 CPU(22) 대부분의 상기 CPU 출력(15)과 일치하지 않는 CPU 출력(15)을 가진 상기 다수의 CPU(22)중 하나에서 에러와 고장을 검출하기 위하여 상기 CPU 출력(15)의 여분 투표를 이용하며,
    상기 각각의 CPU 출력(15)은 각각의 클록 사이클 동안 상기 투표기(16)에 의하여 서로 비교되는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  2. 제 1항에 있어서, 상기 다수의 CPU(22)는 적어도 4개 이상인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  3. 제 1항에 있어서, 상기 CPU(22)는 비발광 경화 칩인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  4. 제 1항에 있어서,
    시스템 버스(12); 및
    상기 다수의 CPU(22) 및 상기 투표기(16)를 포함하며 상기 시스템 버스(12)에 연결된 제 1컴퓨터(11a)를 더 포함하며,
    상기 제 1컴퓨터(11a)는 시스템 메모리(20); 및 상기 투표기(16), 상기 메모리(20) 및 상기 시스템 버스912)에 연결된 메모리 제어기(18)를 포함하며,
    상기 시스템 메모리(20)는 상기 메모리 제어기(18)에 메모리 출력 신호(19a)를 제공하며; 상기 메모리 출력 신호(19a)는 상기 메모리 제어기(18) 및 투표기(16)를 통하여 상기 CPU 입력(14)으로서 상기 각각의 CPU(22)에 동일하게 분배되며,
    상기 투표기(16)에서 대부분의 CPU 출력(15)의 일치는 투표된 출력 신호(17a)를 발생하며, 상기 투표된 출력 신호(17a)는 상기 대부분의 CPU 출력(15)의 값을 가지며,
    대부분의 CPU 출력(15)과 어떤 CPU 출력(15)의 불일치는 상기 투표기(16)에 의하여 검출되며, 상기 불일치에 의하여 발생되는 에러 신호는 상기 제 1컴퓨터(11a)의 상기 다수의 CPU(22)의 재동기화를 야기하는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  5. 제 1항에 있어서, 상기 다수의 CPU(32)는 한정 명령 세트 컴퓨터(RISC)인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  6. 제 4항에 있어서,
    상기 제 1컴퓨터(11a)와 유사한 제 2컴퓨터(11b)를 더 포함하며,
    사기 제 2컴퓨터(11b)는 상기 시스템 버스(12)에 연결되며 상기 제 1컴퓨터(11a)에 대한 무에러 대치용으로 유지되며,
    상기 에러 신호에 의하여 상기 다수의 CPU(32)중 두 개 이하가 일치할 때 그리고 3개 이하의 CPU(22)가 동작할 때 상기 제 1컴퓨터(11a)대신 상기 제 2컴퓨터(11b)를 대체되는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  7. 제 4항에 있어서, 상기 제 1컴퓨터(11a)의 상기 CPU(22)의 재동기화는 상기 다수의 CPU(22)에 의하여 실행되는 소프트웨어에 의하여 제어되는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  8. 제 4항에 있어서, 상기 투표기(34)는 에이식(ASIC)을 포함하는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  9. 제 4항에 있어서, 상기 투표기(34)는 게이트 어래이(50)를 포함하며,
    상기 게이트 어래이(50)는:
    제 1 AND 게이트 어래이(53)를 포함하는데, 상기 제 1 AND 게이트 어래이(53)의 각각의 게이트(58)는 제 1입력(52a-d)으로서 상기 CPU 출력(33b)으로부터 유도되는 CPU 신호(52), 제 2입력(54a-d)으로서 상기 투표 상태로부터 유도되는 인에이블 신호(54) 및 제어 신호(39a)를 가지며, 상기 게이트(58)는 출력(60)을 가지며;
    제 2 AND 게이트 어래이(57)를 포함하는데, 상기 제 2 AND 게이트 어래이(53)의 각각의 게이트(59)는 제 1입력으로서 상기 제 1 AND 게이트 어래이(53)의 하나의 게이트(58)로부터의 출력(60), 제 2입력으로서 상기 제 1 AND 게이트 어래이(53)의 다른 게이트(58)로부터의 출력(60)을 가지며, 상기 게이트(59)는 출력(61)을 가지며;
    입력으로서 상기 제 2 AND 게이트 어래이(57)의 상기 각각의 게이트(59)의 상기 출력(61)을 가지며 또한 출력(66)을 가지는 제 1 OR게이트(63); 및
    상기 제 1 OR 게이트(63)의 출력(66)에 연결되며 각각 상기 각각의 CPU 신호(52)에 연결된 배타적 OR 게이트 어래이(65)를 포함하며,
    상기 제 1 AND 게이트 어래이(53)에 입력되는 상기 각각의 CPU 신호(52)는 상기 각각의 인에이블 신호(54)를 대응하는 상기 제 1 AND 게이트 어래이(53)의 게이트에 인가함으로써 출력되며, 상기 제 1 AND 게이트 어래이(53)의 출력(60)은 상기 제 2 AND 게이트 어래이(57)에서 서로 비교되며,
    상기 제 2 AND 게이트 어래이(57)로부터의 출력(61)은 일치하는 상기 대부분의 CPU 신호(52)의 값을 가지며,
    상기 제 2 AND 게이트 어래이(57)로부터 출력(61)으로서 발생되는 상기 신호(52)는 상기 제 1 OR 게이트(63)로부터의 출력(66)이며, 상기 제 1 OR 게이트 출력(66)은 일치하는 상기 CPU 신호(52)의 값을 가지며,
    상기 제 1 OR 게이트(63)로부터의 출력(66)은 제 1입력으로서 상기 배타적 OR 게이트 어래이(65)의 각각의 게이트(64)로 인가되며 상기 CPU 신호(52)는 각각 제 2입력으로서 상기 배타적 OR 게이트 어래이(65)의 각각의 게이트(64)로 인가되며,
    상기 인가된 CPU 신호(52) 및 상기 제 1 OR 게이트(63)로부터 인가된 출력(66)이 일치하는 않을 경우 상기 배타적 OR 게이트 어래이(665)의 각각의 게이트(64)로부터 에러 신호(68)가 출력되는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  10. 제 9항에 있어서, 상기 게이트 어래이(50)는:
    제 1입력으로서 상기 CPU 신호(52)를 가지며 제 2입력으로서 바이패스 신호(56)를 가지는 게이트(51) 및 상기 바이패스 신호(56)에 의하여 인에이블될 때 출력(65)을 가지는 바이패스 AND 게이트 어래이(55); 및
    입력으로 상기 바이패스 AND 게이트 어래이(55)의 출력(69)을 가지며 상기 제 1 OR 게이트(63)에 입력되는 출력(61a)을 가지는 바이패스 OR 게이트(62)를 포함하며,
    상기 바이패스 AND 게이트 어래이(55)의 게이트(51)에 입력되는 상기 CPU 신호(52)는 상기 각각의 바이패스 신호(56)는 대응하는 상기 바이패스 AND 게이트 어래이(55)의 게이트(51)에 인가함으로써 상기 바이패스 OR 게이트(62)에 입력되며,
    상기 바이패스 신호(56)는 상기 투표기 작동을 테스트 또는 바이패스하기 위한 원격 명령시 투표 상태 및 제어 신호(39a)로부터 유도되는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  11. 제 9항에 있어서, 상기 CPU 신호(52)는 데이터 신호인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  12. 제 9항에 있어서, 상기 CPU 신호(52)는 어드레스 신호인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  13. 제 11항에 있어서, 상기 각각의 CPU(22)는 다음의 안정된 상태, 즉 인에이블 및 투표; 명령 디세이블; 불일치 및 디세이블; 바이패스; 및 파워다운 중 하나인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  14. 고장 허용 컴퓨터 시스템에 있어서,
    동기적으로 동작하는 다수의 한정 명령 세트(RIS) 중앙 처리 유니트(CPU)(32)를 포함하는데, 상기 각각의 중앙 처리 유니트(32)의 각각의 동작 단계는 CPU 클록 사이클 동안 상기 다수의 RIS CPU(32)중 다른 각각의 RIS CPU(32)와 병렬로 동시에 수행되며, 상기 각각의 RIS CPU(32)는 CPU 출력(33b) 및 CPU 입력(33a)을 가지며;
    시스템 버스(12);
    CPU 버스(35a);
    상기 CPU 버스(35a)를 통해 전달되는 투표된 출력(35)을 가지며, 상기 각각의 RIS CPU(32)에 연결된 투표기(34)를 포함하는데, 상기 CPU 출력(33b)은 상기 각각의 클록 사이클 동안 상기 투표기(34)에서 서로 비교되며;
    메모리(46);
    투표 상태 및 제어 회로(38)를 가진 메모리 제어기(36); 및
    메모리 인터페이스(40) 및 버스 인터페이스(42)를 포함하며,
    상기 메모리 제어기(36)는 상기 CPU 버스(35a)를 통하여 상기 투표기(34)에 연결되고 상기 버스 인터페이스(42)를 통하여 상기 시스템 버스(22)에 연결되고 그리고 상기 메모리 인터페이스(40)를 통하여 상기 메모리(46)에 연결되며,
    상기 메모리(46)는 상기 메모리 제어기(36)에 메모리 출력(37a)을 제공하며, 상기 메모리 출력(37a)은 상기 메모리 제어기(36) 및 상기 투표기(34)를 통하여 상기 각각의 RIS CPU(32)에 상기 CPU 입력(33a)으로서 동일하게 분배되며,
    상기 투표된 출력(35)은 입력으로서 상기 메모리 제어기(36)에 의하여 상기 시스템 메모리(46), 투표 상태 및 제어 회로(38) 및 상기 시스템 컴퓨터 버스(22)에 제공되며,
    상기 CPU 출력(33b)의 대부분의 일치는 투표기(34)에 투표된 출력(35)을 발생시키고, 상기 투표된 출력은 상기 CPU 출력(33b) 대부분의 값을 가지며,
    상기 CPU 출력(33b)의 대부분과 일치하지 않는 CPU 출력(33b)은 상기 투표기(34)에 의하여 검출되며 이에 의하여 발생된 에러 신호는 투표 상태 및 제어 회로(38)에 전달되며,
    상기 투표 상태 및 제어 회로(38)는 상기 CPU 출력(33b)의 불일치를 나타내는 에러 신호에 반응하며 상기 다수의 RIS CPU(32)을 재동기화시키는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  15. 제 14항에 있어서, 상기 다수의 RIS CPU(32)는 적어도 4개 이상인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  16. 제 14항에 있어서, 상기 다수의 RIS CPU(32)는 비발광 경화 칩인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  17. 제 14항에 있어서, 제 1컴퓨터(30) 및 제 2컴퓨터(30)를 더 포함하며,
    상기 제 1컴퓨터(30)는 다수의 CPU(32), 투표기(34), 메모리(46), 메모리 제어기(36) 및 CPU 버스(35a)를 포함하며,
    상기 제 2컴퓨터(30)는 다수의 CPU(32), 투표기(34), 메모리(46), 메모리 제어기(36) 및 CPU 버스(35a)를 포함하며,
    상기 제 1컴퓨터(30)는 상기 시스템 버스(12)에 연결되며,
    상기 제 2컴퓨터(30)는 상기 시스템 버스(12)에 연결되고 상기 제 1컴퓨터(30) 대신 대체되며,
    상기 에러 신호는 다수의 RIS CPU(32)중 3개 이하가 동작하고 두 개 이하가 일치할 때 상기 투표 상태 및 제어 회로(36)가 반응하여 상기 제 1컴퓨터(30) 대신 제 2컴퓨터(30)를 대체하도록 하는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  18. 제 17항에 있어서, 상기 RIS CPU(32)의 재동기화 및 상기 컴퓨터(30)의 대체는 상기 RIS CPU(32)에 의하여 실행되는 소프트웨어에 의하여 제어되는 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  19. 제 17항에 있어서, 상기 각각의 RIS CPU(32)는 다음의 안정된 상태, 즉 인에이블 및 투표; 명령 디세이블; 불일치 및 디세이블; 바이패스; 및 파워다운 중 하나인 것을 특징으로 하는 고장 허용 컴퓨터 시스템.
  20. 컴퓨터 시스템(10)에서 고장 관리 방법에 있어서,
    다수의 중앙 처리 유니트(CPU)(22)를 동기적으로 동작시키는 단계 포함하는데, 상기 각각의 CPU(22)의 각각의 동작 단계는 상기 CPU(22)의 각각의 클록 사이클동안 상기 다수의 CPU(22)중 다른 각각의 CPU(22)와 병렬로 동시에 수행되며, 상기 각각의 CPU(22)는 CPU 입력(14) 및 CPU 출력(15)을 가지며;
    상기 각각의 CPU 입력(14) 및 CPU 출력(15)에 투표기(16)를 연결하는 단계;
    상기 투표기(16)에서 상기 CPU 출력(15)의 여분 투표을 이용하여 상기 다수의 CPU(22) 대부분의 상기 CPU 출력(15)과 일치하지 않는 CPU 출력(15)을 가진 상기 다수의 CPU(22)중 하나에서 에러와 고장을 검출하는 단계; 및
    상기 각각의 CPU 출력(15)을 각각의 클록 사이클 동안 상기 투표기(16)에 의하여 서로 비교하는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  21. 제 20항에 있어서, 상기 다수의 CPU(22)를 동작시키는 단계는 적어도 4개의 CPU(22)를 동작시키는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  22. 제 20항에 있어서, 상기 다수의 CPU(22)를 동작시키는 단계는 다수의 비발광 경화 CPU 칩을 동작시키는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  23. 제 20항에 있어서, 상기 다수의 CPU(22)를 동작시키는 단계는 한정 명령 세트 컴퓨터(RISC) CPU(32)를 동작시키는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  24. 제 20항에 있어서,
    시스템 버스(12)를 제공하는 단계;
    상기 다수의 CPU(22), 투표기(34), 시스템 메모리(20) 및 메모리 제어기(18)를 포함하는 제 1컴퓨터(11a)를 제공하는 단계;
    상기 메모리 제어기(18)를 상기 투표기(34), 상기 메모리(20) 및 상기 시스템 버스(12)에 연결하는 단계;
    상기 제 1컴퓨터(11a)와 유사한 제 2컴퓨터(11b)를 제공하는 단계;
    상기 시스템 버스(12)에 상기 제 2컴퓨터(11b)를 연결하고 상기 제 1컴퓨터(11a) 대신 제 2중앙 프로세서(11b)를 유지하는 단계;
    상기 메모리 제어기(18)에 상기 시스템 메모리(20)로부터의 메모리 출력(19)을 제공하는 단계;
    상기 메모리 제어기(18) 및 상기 투표기(34)를 통하여 CPU 입력(14)으로서 상기 메모리 출력(19)을 상기 각각의 CPU(22)에 동일하게 분배하는 단계;
    상기 투표기(16)에서 상기 CPU 출력(15) 대부분의 일치에 따라 삭이 대부분의 CPU 출력(15) 값을 가진 투표된 출력 신호(17a)를 얻는 단계;
    상기 투표기(16)에 의하여 상기 CPU 출력 신호(15) 대부분과 상기 소정 CPU 출력(15)과의 불일치를 검출하고 이에 의하여 에러 신호를 발생시키는 단계;
    상기 에러 신호를 상기 메모리 제어기(18)로 보내는 단계; 및
    상기 에러 신호에 반응하는 단계와 상기 메모리 제어기(18)의 작동에 의하여 상기 제 1컴퓨터(11a)의 다수의 CPU(22)를 재동기화시키는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  25. 제 24항에 있어서, 상기 에러 신호에 반응하는 단계는 상기 CPU(22)중 세개 이하가 동작되고 두 개 이하가 상기 투표기(16)에서 일치할 때 상기 제 1컴퓨터(11a) 대신 상기 제 2컴퓨터(11b)를 대치하는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  26. 제 24항에 있어서, 상기 에러 신호에 반응하는 단계는 상기 제 1컴퓨터(11a)의 다수의 상기 CPU(22)중 두개 이하가 동작될 때 상기 제 1컴퓨터(11a) 대신 상기 제 2컴퓨터(11b)를 대치하는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  27. 제 24항에 있어서, 상기 CPU(22)를 재동기화시키는 단계는 상기 다수의 CPU(22)에 의하여 실행되는 소프트웨어에 의하여 제어되는 것을 특징으로 하는 고장 관리 방법.
  28. 제 24항에 있어서, 상기 투표기(16)를 포함하는 상기 제 1컴퓨터(11a)를 제공하는 단계는:
    출력(69)을 가지는 각각의 게이트를 가진 제 1 AND 게이트 어래이(53)를 포함하는 게이트 어래이(50)를 제공하는 단계;
    상기 CPU 출력(33a)으로부터 CPU 신호(52)를 유도하고 제 1 AND 게이트 어래이(53)의 각각의 게이트(58)에 제 1입력(52a-d)으로서 상기 CPU 신호(52)제공하는 단계;
    제 2입력으로서 상기 메모리 제어기(18)로부터 유도되는 인에이블 신호(54)를 상기 제 1 AND 게이트 어래이(53)의 각각의 게이트(58)에 제공하는 단계;
    출력(61)을 가진 각각의 게이트(59)를 가진 제 2 AND 게이트 어래이(57)를 제공하는 단계;
    상기 제 2 AND 게이트 어래이(53)의 각각의 게이트(59)에 제 1입력으로서 상기 제 1 AND 게이트 어래이(53)의 하나의 게이트(58)로부터의 출력(60)을 제공하는 단계;
    제 2입력으로서 상기 제 1 AND 게이트 어래이(53)의 다른 게이트(58)로부터의 출력(60)을 상기 제 2 AND 게이트 어래이(53)의 각각의 게이트(59)에 제공하는 단계;
    출력(66)을 가진 제 1OR 게이트(63)를 제공하는 단계;
    입력으로서 상기 제 2 AND 게이트 어래이(57)의 상기 각각의 게이트(59)의 상기 출력(61)을 제 1 OR게이트(63)에 제공하는 단계;
    출력(68)을 가진 각각의 게이트(64)를 가진 배타적 OR 게이트 어래이(65)를 제공하는 단계;
    배타적 OR 게이트 어래이(65)의 각각의 게이트(64)에 상기 제 1 OR 게이트(63)를 연결하는 단계;
    상기 제 1 AND 게이트 어래이(53)에 대한 제 1입력에 배타적 OR 게이트 어래이(65)의 각각의 게이트(64)를 연결하는 단계;
    상기 인에이블 신호(54)를 대응하는 상기 제 1 AND 게이트 어래이(53)의 게이트에 인가함으로써 상기 제 1 AND 게이트 어래이(53)에 입력되는 상기 각각의 CPU 신호(52)의 출력(60)을 인에이블시키는 단계;
    상기 제 2 AND 게이트 어래이(57)의 출력(60)을 서로 비교하는 단계와 상기 제 2 AND 게이트 어래이(59)의 게이트(59)의 출력(61)을 얻는 단계를 포함하는데, 상기 제 2 AND 게이트 어래이(59)로부터의 각각의 출력(61)은 일치하는 상기 CPU 신호(52) 값을 가지며;
    상기 제 2 AND 게이트 어래이(57)로부터의 출력(61)을 상기 제 1 OR 게이트(63)에 인가하는 단계를 포함하는데, 상기 제 1 OR 게이트(63)로부터의 출력(66)은 상기 제 2 AND 게이트 어래이(57)의 게이트(59)로부터의 출력(60) 값을 가지며;
    상기 배타적 OR 게이트 어래이(65)의 각각의 게이트(64)의 제 1입력에 상기 제 1 OR 게이트(63)로부터의 출력을 인가하는 단계;
    상기 배타적 OR 게이트 어래이(65)의 각각의 게이트(64)의 제 2입력에 상기 CPU 신호(52)를 인가하는 단계; 및
    상기 인가된 CPU 신호(52) 및 상기 제 1 OR 게이트(63)로부터 인가된 출력(66)이 일치하는 않을 경우 상기 배타적 OR 게이트 어래이(665)의 각각의 게이트(64)로부터 에러 신호(68) 출력을 얻는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  29. 제 28항에 있어서, 상기 게이트 어래이(50)를 제공하는 단계는:
    바이패스 AND 게이트 어래이(55)를 제공하는 단계;
    상기 바이패스 AND 게이트 어래이(55)의 각각의 게이트(51)에 제 1입력(52a-d)으로서 상기 CPU 신호(52)를 제공하는 단계;
    상기 바이패스 AND 게이트 어래이(55)의 각각의 게이트(51)에 제 2입력(56a-d)으로서 바이패스 신호(56)를 제공하는 단계를 포함하는데, 상기 바이패스 AND 게이트 어래이(55)의 각각의 게이트(51)는 상기 바이패스 신호(56)에 의하여 인에이블될 때 출력(69)을 가지며;
    바이패스 OR 게이트(62)를 제공하는 단계;
    상기 바이패스 AND 게이트 어래이(55)의 출력(69)을 입력으로서 상기 바이패스 OR 게이트(62)에 제공하는 단계를 포함하는데, 상기 바이패스 OR 게이트(62)는 상기 제 1 OR 게이트(63)에 입력되는 출력(61a)을 가지며; 및
    상기 바이패스 AND 게이트 어래이(55)의 대응하는 게이트(51)에 인가되는 상기 각각의 바이패스 신호(56)를 인가함으로써 상기 바이패스 OR 게이트(65)의 입력에 상기 바이패스 AND 게이트 어래이(55)의 게이트(51)에 상기 CPU 신호(52)를 인가하는 단계를 포함하며,
    상기 바이패스 신호는 상기 투표기(16)의 작동을 테스트 또는 바이패스시키도록 하는 원격 명령이 발생할 때 상기 메모리 제어기(18)로부터 유도되는 것을 특징으로 하는 고장 관리 방법.
  30. 제 28항에 있어서, 상기 바이패스 AND 게이트 어래이(55)의 각각의 게이트(51)에 제 1입력(52a-d)으로서 상기 CPU 신호(52)를 제공하는 단계는 데이터 신호를 제공하는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  31. 제 28항에 있어서, 상기 바이패스 AND 게이트 어래이(55)의 각각의 게이트(51)에 제 1입력(52a-d)으로서 상기 CPU 신호(52)를 제공하는 단계는 어드레스 신호를 제공하는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  32. 제 29항에 있어서, 상기 각각의 CPU(22)는 다음의 안정된 상태, 즉 인에이블 및 투표; 명령 디세이블; 불일치 및 디세이블; 바이패스; 및 파워다운 중 하나로 되는 것을 특징으로 하는 고장 관리 방법.
  33. 컴퓨터 시스템용 고장 관리 방법에 있어서,
    다수의 한정 명령 세트(RIS) 중앙 처리 유니트(CPU)(32)를 가진 제 1컴퓨터(30)를 제공하는 단계;
    상기 다수의 RIS CPU(32)를 동기적으로 동작시키는 단계를 포함하는데, 상기 각각의 RIS CPU(32)의 동작 단계는 상기 다수의 RIS CPU(32)중 다른 각각의 RIS CPU(32)와 병렬로 동시에 수행되며;
    상기 컴퓨터(30)내에 투표기(34)를 제공하는 단계;
    상기 각각의 RIS CPU(32)의 출력(33b)에 투표기(34)를 연결하고, 상기 투표기(34)의 출력(33a)에 상기 각각의 RIS CPU(32)를 연결하는 단계;
    메모리(46)를 제공하는 단계;
    시스템 버스(12)를 제공하는 단계;
    투표 상태 및 제어 회로(38)를 가진 메모리 제어기(36), 메모리 인터페이스(40) 및 버스 인터페이스(42)를 제공하는 단계;
    상기 메모리 제어기(36)를 상기 투표기(34)에 연결하고, 상기 버스 인터페이스(42)를 통하여 상기 시스템 버스(22)에 연결하고, 그리고 상기 메모리 인터페이스(40)를 통하여 상기 메모리(46)에 연결하는 단계;
    상기 메모리(46)로부터 상기 메모리 제어기(36)에 메모리 출력(37a)을 제공하며, 상기 메모리 출력(37a)을 상기 메모리 제어기(36) 및 상기 투표기(34)를 통하여 상기 각각의 RIS CPU(32)에 상기 CPU 입력(33a)으로서 동일하게 분배하는 단계;
    상기 다수의 RIS CPU(32)로부터의 CPU 출력(33b)은 입력으로 상기 투표기(34)에 비교를 위하여 제공되는 단계;
    상기 투표기(34)에서 상기 CPU 출력(33b)을 비교하는 단계를 포함하는데, 상기 투표기(34)에 공급된 상기 CPU 출력 신호(33b)의 대부분의 일치는 투표기(34)에 투표된 출력(35)을 발생시키고, 상기 투표된 출력은 상기 CPU 출력 신호(33b) 대부분의 값을 가지며;
    상기 투표기(34)의 상기 투표된 출력(35)은 입력 신호(37b)로서 상기 시스템 메모리(46)에, 입력으로서 상기 투표 상태 및 제어 회로(38)에 그리고 입력(41)으로서 상기 시스템 컴퓨터 버스(22)에 제공되는 단계;
    상기 CPU 출력(33b)의 대부분과 CPU 출력(33b)이 일치하지 않는 것을 상기 투표기(34)에 의하여 검출하며, 이에 의하여 에러 신호(39b)를 발생시키는 단계; 및
    상기 투표 상태 및 제어 회로(38)에 상기 에러 신호(39b)를 공급하고; 그리고 상기 투표 상태 및 제어 회로(36)의 동작에 의하여 상기 다수의 RIS CPU(32)을 재동기화시키는 단계를 포함하는 것을 특징으로 하는 고장 관리 방법.
  34. 제 33항에 있어서, 상기 다수의 RIS CPU(32)중 3개 이하가 동작가능하고 두 개 이하가 일치할 때 상기 투표 상태 및 제어 회로(36)의 작동에 의하여 상기 제 1컴퓨터(30)의 고장에 대하여 에러가 없는 제 2컴퓨터(30)를 대체하는 단계를 더 포함하는 것을 특징으로 하는 고장 관리 방법.
  35. 제 33항에 있어서, 상기 RIS CPU(32)중 두 개 이하가 동작가능할 때 에러가 없는 컴퓨터(30)를 대체하는 단계를 더 포함하는 것을 특징으로 하는 고장 관리 방법.
KR1019997009033A 1997-04-02 1998-03-31 고장 허용 컴퓨터 시스템 KR20010005956A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/832,479 US5903717A (en) 1997-04-02 1997-04-02 Fault tolerant computer system
US8/832,479 1997-04-02
PCT/US1998/006554 WO1998044416A1 (en) 1997-04-02 1998-03-31 Fault tolerant computer system

Publications (1)

Publication Number Publication Date
KR20010005956A true KR20010005956A (ko) 2001-01-15

Family

ID=25261774

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997009033A KR20010005956A (ko) 1997-04-02 1998-03-31 고장 허용 컴퓨터 시스템

Country Status (8)

Country Link
US (1) US5903717A (ko)
EP (1) EP0972244A4 (ko)
JP (1) JP2001505338A (ko)
KR (1) KR20010005956A (ko)
CN (1) CN1259212A (ko)
IL (1) IL132075A0 (ko)
TW (1) TW366447B (ko)
WO (1) WO1998044416A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100583214B1 (ko) * 2002-07-11 2006-05-24 닛본 덴끼 가부시끼가이샤 정보 처리 장치

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141769A (en) * 1996-05-16 2000-10-31 Resilience Corporation Triple modular redundant computer system and associated method
US7714778B2 (en) 1997-08-20 2010-05-11 Tracbeam Llc Wireless location gateway and applications therefor
US5923830A (en) * 1997-05-07 1999-07-13 General Dynamics Information Systems, Inc. Non-interrupting power control for fault tolerant computer systems
US6044487A (en) * 1997-12-16 2000-03-28 International Business Machines Corporation Majority voting scheme for hard error sites
US6412082B1 (en) * 1997-12-17 2002-06-25 Sony Corporation Method and apparatus for selecting computer programs based on an error detection mechanism
US6085350A (en) * 1998-03-04 2000-07-04 Motorola, Inc. Single event upset tolerant system and method
DE19831720A1 (de) * 1998-07-15 2000-01-20 Alcatel Sa Verfahren zur Ermittlung einer einheitlichen globalen Sicht vom Systemzustand eines verteilten Rechnernetzwerks
JP3293125B2 (ja) * 1998-07-24 2002-06-17 日本電気株式会社 オンチップマルチプロセッサシステムにおける初期設定・診断方式
EP1157324A4 (en) * 1998-12-18 2009-06-17 Triconex Corp PROCESS AND DEVICE FOR PROCESSING CONTROL USING A MULTIPLE REDUNDANT PROCESS CONTROL SYSTEM
US6801951B1 (en) * 1999-10-08 2004-10-05 Honeywell International Inc. System and method for fault-tolerant clock synchronization using interactive convergence
US6732300B1 (en) * 2000-02-18 2004-05-04 Lev Freydel Hybrid triple redundant computer system
US6820213B1 (en) 2000-04-13 2004-11-16 Stratus Technologies Bermuda, Ltd. Fault-tolerant computer system with voter delay buffer
US6687851B1 (en) * 2000-04-13 2004-02-03 Stratus Technologies Bermuda Ltd. Method and system for upgrading fault-tolerant systems
US20010042202A1 (en) * 2000-04-14 2001-11-15 Horvath Charles J. Dynamically extendible firewall
US6504411B2 (en) 2000-11-02 2003-01-07 Intersil Americas Inc. Redundant latch circuit and associated methods
US6563347B2 (en) 2000-11-20 2003-05-13 Intersil Americas Inc. Redundant comparator design for improved offset voltage and single event effects hardness
US6525590B2 (en) 2001-02-01 2003-02-25 Intersil Americas Inc. Spatially redundant and complementary semiconductor device-based, single event transient-resistant linear amplifier circuit architecture
EP1239369A1 (de) 2001-03-07 2002-09-11 Siemens Aktiengesellschaft Fehlertolerante Rechneranordnung und Verfahren zum Betrieb einer derartigen Anordnung
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
US6862693B2 (en) * 2001-04-13 2005-03-01 Sun Microsystems, Inc. Providing fault-tolerance by comparing addresses and data from redundant processors running in lock-step
US6952756B1 (en) * 2001-05-08 2005-10-04 Lewiz Communications Method and apparatus for speculative loading of a memory
KR100402757B1 (ko) * 2001-08-22 2003-10-22 한국전자통신연구원 시스템보드의 오류검사 장치 및 방법
KR100449232B1 (ko) * 2001-12-04 2004-09-18 한국전기연구원 다중화 제어기용 펄스 보우팅 방법
JP2003316599A (ja) * 2002-02-22 2003-11-07 Seiko Epson Corp 集積回路
JP2004046455A (ja) * 2002-07-10 2004-02-12 Nec Corp 情報処理装置
JP3982353B2 (ja) * 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7260742B2 (en) * 2003-01-28 2007-08-21 Czajkowski David R SEU and SEFI fault tolerant computer
US7467326B2 (en) * 2003-02-28 2008-12-16 Maxwell Technologies, Inc. Self-correcting computer
JP3737810B2 (ja) * 2003-05-09 2006-01-25 株式会社東芝 計算機システム及び故障計算機代替制御プログラム
US7134104B2 (en) * 2003-12-05 2006-11-07 International Business Machines Corporation Method of selectively building redundant logic structures to improve fault tolerance
JP3808874B2 (ja) * 2004-03-12 2006-08-16 東芝ソリューション株式会社 分散システム及び多重化制御方法
JP4452533B2 (ja) * 2004-03-19 2010-04-21 株式会社日立製作所 システムおよび記憶装置システム
US20050240806A1 (en) * 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US20050273653A1 (en) * 2004-05-19 2005-12-08 Honeywell International Inc. Single fault tolerance in an architecture with redundant systems
US7392426B2 (en) * 2004-06-15 2008-06-24 Honeywell International Inc. Redundant processing architecture for single fault tolerance
US7684654B2 (en) * 2004-06-30 2010-03-23 General Electric Company System and method for fault detection and recovery in a medical imaging system
TWI306241B (en) * 2004-07-12 2009-02-11 Infortrend Technology Inc A controller capable of self-monitoring, a redundant storage system having the same, and its method
US7308605B2 (en) * 2004-07-20 2007-12-11 Hewlett-Packard Development Company, L.P. Latent error detection
US7404105B2 (en) * 2004-08-16 2008-07-22 International Business Machines Corporation High availability multi-processor system
US7328371B1 (en) * 2004-10-15 2008-02-05 Advanced Micro Devices, Inc. Core redundancy in a chip multiprocessor for highly reliable systems
US7971095B2 (en) 2005-02-16 2011-06-28 Honeywell International Inc. Fault recovery for real-time, multi-tasking computer system
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit
US20060212677A1 (en) * 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
US20060236168A1 (en) * 2005-04-01 2006-10-19 Honeywell International Inc. System and method for dynamically optimizing performance and reliability of redundant processing systems
WO2007018651A1 (en) * 2005-08-05 2007-02-15 Honeywell International, Inc. Method for redunancy management of distributed and recoverable digital control system
US7765427B2 (en) * 2005-08-05 2010-07-27 Honeywell International Inc. Monitoring system and methods for a distributed and recoverable digital control system
WO2007018652A1 (en) * 2005-08-05 2007-02-15 Honeywell International, Inc. Distributed and recoverable digital control system
DE102005037236A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Vorrichtung und Verfahren zur Konfiguration einer Halbleiterschaltung
US7502957B2 (en) * 2005-09-09 2009-03-10 International Business Machines Corporation Method and system to execute recovery in non-homogeneous multi processor environments
US7421601B2 (en) * 2006-02-17 2008-09-02 International Business Machines Corporation Method and system for controlling power in a chip through a power-performance monitor and control unit
US20070220369A1 (en) * 2006-02-21 2007-09-20 International Business Machines Corporation Fault isolation and availability mechanism for multi-processor system
US7587663B2 (en) * 2006-05-22 2009-09-08 Intel Corporation Fault detection using redundant virtual machines
US7793147B2 (en) * 2006-07-18 2010-09-07 Honeywell International Inc. Methods and systems for providing reconfigurable and recoverable computing resources
US7898937B2 (en) * 2006-12-06 2011-03-01 Cisco Technology, Inc. Voting to establish a new network master device after a network failover
US8412981B2 (en) * 2006-12-29 2013-04-02 Intel Corporation Core sparing on multi-core platforms
US7797575B2 (en) * 2007-04-04 2010-09-14 International Business Machines Corporation Triple voting cell processors for single event upset protection
JP2009238068A (ja) * 2008-03-28 2009-10-15 Fujitsu Ltd 通信制御装置、通信制御方法
US8856196B2 (en) * 2008-07-22 2014-10-07 Toyota Jidosha Kabushiki Kaisha System and method for transferring tasks in a multi-core processor based on trial execution and core node
US8090984B2 (en) * 2008-12-10 2012-01-03 Freescale Semiconductor, Inc. Error detection and communication of an error location in multi-processor data processing system having processors operating in Lockstep
CN101478428B (zh) * 2009-01-20 2011-03-23 北京全路通信信号研究设计院 软硬件协同的以太网故障安全通信系统和数据传输方法
US8082425B2 (en) * 2009-04-29 2011-12-20 Advanced Micro Devices, Inc. Reliable execution using compare and transfer instruction on an SMT machine
US8566633B2 (en) * 2011-02-10 2013-10-22 GM Global Technology Operations LLC Method of dynamic allocation on a statically allocated and embedded software architecture
JP5699057B2 (ja) * 2011-08-24 2015-04-08 株式会社日立製作所 プログラマブルデバイス、プログラマブルデバイスのリコンフィグ方法および電子デバイス
WO2013081587A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Instruction and logic to provide vector horizontal majority voting functionality
US8954794B2 (en) * 2012-06-05 2015-02-10 Infineon Technologies Ag Method and system for detection of latent faults in microcontrollers
US9146882B2 (en) * 2013-02-04 2015-09-29 International Business Machines Corporation Securing the contents of a memory device
US9274909B2 (en) * 2013-08-23 2016-03-01 Scaleo Chip Method and apparatus for error management of an integrated circuit system
CN104765587B (zh) 2014-01-08 2018-12-14 雅特生嵌入式计算有限公司 用于使处理器同步到相同的计算点的系统和方法
KR101764680B1 (ko) * 2014-12-29 2017-08-03 주식회사 효성 이중화 제어 시스템
US10956265B2 (en) 2015-02-03 2021-03-23 Hamilton Sundstrand Corporation Method of performing single event upset testing
JP2017021617A (ja) * 2015-07-13 2017-01-26 株式会社東芝 多重化制御装置
DE102015218898A1 (de) * 2015-09-30 2017-03-30 Robert Bosch Gmbh Verfahren zur redundanten Verarbeitung von Daten
CN105398472B (zh) * 2015-11-06 2017-08-11 湖南中车时代通信信号有限公司 一种平台主机插件
DE112015007095B4 (de) * 2015-12-03 2018-11-22 Mitsubishi Electric Corporation Multiplexsystem
US10481963B1 (en) * 2016-06-29 2019-11-19 Amazon Technologies, Inc. Load-balancing for achieving transaction fault tolerance
CN106648998A (zh) * 2016-12-23 2017-05-10 北京交通大学 一种基于cmc芯片的安全计算机系统
EP3531286B1 (en) * 2018-02-26 2020-08-05 ARM Limited Circuitry
CN109933374B (zh) * 2019-01-23 2021-10-22 西安微电子技术研究所 一种计算机启动方法
CN109828449A (zh) * 2019-01-25 2019-05-31 杭州电子科技大学 一种三模冗余控制计算表决系统及方法
SG11202111296TA (en) 2019-04-25 2021-11-29 Aerovironment Inc Methods of climb and glide operations of a high altitude long endurance aircraft
SG11202111384PA (en) * 2019-04-25 2021-11-29 Aerovironment Inc Systems and methods for distributed control computing for a high altitude long endurance aircraft
CN111431651B (zh) * 2020-03-04 2021-12-07 上海航天控制技术研究所 一种适用于火星探测的多计算机同步运行与时间对准方法
CN111651118B (zh) * 2020-04-27 2023-11-21 中国科学院微电子研究所 存储器系统、控制方法和控制装置
WO2021101643A2 (en) * 2020-10-16 2021-05-27 Futurewei Technologies, Inc. Cpu-gpu lockstep system
CN112558461B (zh) * 2021-02-25 2021-05-14 四川腾盾科技有限公司 一种多余度无人机飞机管理计算机输出信号表决方法
JP2024009696A (ja) * 2022-07-11 2024-01-23 横河電機株式会社 制御装置、制御システム、制御方法、及び制御プログラム
CN117215177A (zh) * 2023-11-09 2023-12-12 北京控制工程研究所 一种天地往返一体化控制系统及控制方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1373014A (en) * 1972-03-23 1974-11-06 Marconi Co Ltd Processor security arrangements
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US5280487A (en) * 1989-06-16 1994-01-18 Telefonaktiebolaget L M Ericsson Method and arrangement for detecting and localizing errors or faults in a multi-plane unit incorporated in a digital time switch
US5295258A (en) * 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
EP0496506B1 (en) * 1991-01-25 2000-09-20 Hitachi, Ltd. Fault tolerant computer system incorporating processing units which have at least three processors
US5339404A (en) * 1991-05-28 1994-08-16 International Business Machines Corporation Asynchronous TMR processing system
US5233615A (en) * 1991-06-06 1993-08-03 Honeywell Inc. Interrupt driven, separately clocked, fault tolerant processor synchronization
US5349654A (en) * 1992-02-20 1994-09-20 The Boeing Company Fault tolerant data exchange unit
US5680408A (en) * 1994-12-28 1997-10-21 Intel Corporation Method and apparatus for determining a value of a majority of operands
US5742753A (en) * 1996-06-06 1998-04-21 The Boeing Company Mesh interconnected array in a fault-tolerant computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100583214B1 (ko) * 2002-07-11 2006-05-24 닛본 덴끼 가부시끼가이샤 정보 처리 장치

Also Published As

Publication number Publication date
CN1259212A (zh) 2000-07-05
WO1998044416A1 (en) 1998-10-08
EP0972244A1 (en) 2000-01-19
EP0972244A4 (en) 2000-11-15
TW366447B (en) 1999-08-11
JP2001505338A (ja) 2001-04-17
IL132075A0 (en) 2001-03-19
US5903717A (en) 1999-05-11

Similar Documents

Publication Publication Date Title
KR20010005956A (ko) 고장 허용 컴퓨터 시스템
US6141770A (en) Fault tolerant computer system
US6938183B2 (en) Fault tolerant processing architecture
US7613948B2 (en) Cache coherency during resynchronization of self-correcting computer
Nelson Fault-tolerant computing: Fundamental concepts
Siewiorek Architecture of fault-tolerant computers: An historical perspective
US7793147B2 (en) Methods and systems for providing reconfigurable and recoverable computing resources
Villalpando et al. Reliable multicore processors for NASA space missions
US6851074B2 (en) System and method for recovering from memory failures in computer systems
US20100318746A1 (en) Memory change track logging
Wensley Sift: software implemented fault tolerance
JPH02253344A (ja) ディジタル演算システム
US20030135790A1 (en) Computer system that tolerates transient errors and method for management in a system of this type
EP1146423B1 (en) Voted processing system
US20090249174A1 (en) Fault Tolerant Self-Correcting Non-Glitching Low Power Circuit for Static and Dynamic Data Storage
Kaschmitter et al. Operation of commercial R3000 processors in the low earth orbit (LEO) space environment
Shernta et al. Using triple modular redundant (tmr) technique in critical systems operation
Gkiokas et al. A fault-tolerant time-predictable processor
Shinghal et al. Design and analysis of a fault tolerant microprocessor based on triple modular redundancy using VHDL
Beningo A review of watchdog architectures and their application to Cubesats
Li et al. Transient Fault Tolerance on Multicore Processor in AMP mode
Maxion et al. Techniques and architectures for fault-tolerant computing
Yang et al. A framework for design of self-repairing digital systems
Lee et al. Fault recovery time analysis for coarse-grained reconfigurable architectures
Laplante Computing requirements for self-repairing space systems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee