JP3301992B2 - 電源故障対策を備えたコンピュータシステム及びその動作方法 - Google Patents

電源故障対策を備えたコンピュータシステム及びその動作方法

Info

Publication number
JP3301992B2
JP3301992B2 JP19816699A JP19816699A JP3301992B2 JP 3301992 B2 JP3301992 B2 JP 3301992B2 JP 19816699 A JP19816699 A JP 19816699A JP 19816699 A JP19816699 A JP 19816699A JP 3301992 B2 JP3301992 B2 JP 3301992B2
Authority
JP
Japan
Prior art keywords
memory
cpu
bus
procedure
processor
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP19816699A
Other languages
English (en)
Other versions
JP2000112584A (ja
Inventor
ダグラス・イー・ジュエット
トム・ベレイター
ブライアン・ヴェター
ランダル・ジー・バントン
リチャード・ダブリュ・カッツ,ジュニア
ドナルド・シー・ウェストブルック
キラン・ダブリュ・フェイ,ジュニア
ジョン・ポズロー
ケネス・シー・ドゥバッカー
ニクヘル・エィ・メータ
フィル・ウェブスター
デイヴ・アルドリッジ
ピーター・シー・ノーウッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
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
Priority claimed from US07/461,250 external-priority patent/US5295258A/en
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of JP2000112584A publication Critical patent/JP2000112584A/ja
Application granted granted Critical
Publication of JP3301992B2 publication Critical patent/JP3301992B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/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/1441Resetting or repowering
    • 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/2015Redundant power supplies
    • 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)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Power Sources (AREA)
  • Retry When Errors Occur (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムに関し、特に、故障コンポーネントを検出及び再組
込みに関し、さらに、全ての故障許容多重プロセッサシ
ステム内の機能を構成するために用いれるファイルシス
テム及び電源故障の事象における遮断及び再始動に関す
る。
【0002】
【従来の技術】高い信頼性を有するディジタル処理は、
冗長性を備えた各種コンピュータアーキテクチャにおい
て達成される。例えば、TMR(3重モジュラー冗長
性)システムでは、3つの別の主メモリ装置及び機能を
二重化する別のI/O装置を備えた、同じ命令ストリー
ムを実行する同じ3つのCPUを用いており、装置の内
のどれかが故障した場合であっても、システムは動作し
続ける。別の故障許容型システムが、タンデム・コンピ
ュータ・インコーポレイテッドに譲渡されたカッツマン
(Katzman)らにより出願された米国特許出願第4,1
18,496号の「多重プロセッサシステム(Multipro
cessor System)に開示されている。冗長システムにお
ける装置を同期させるためには色々な方法がある。例え
ば、「疎(loose)」同調の方法が開示されているが、
他方においては、ステータス・コンピュータ・インコー
ポレイテッドに譲渡された米国特許第4,453,21
5号の「故障許容計算用中央処理装置(Central Proces
sing Apparatus for Fault-Tolerant Computing)」に
開示されているような、単一クロックを用いたロック段
同調を採用した方法がある。「同調ボーティング(sync
hronization voting)」と呼ばれている技法が、デービ
ス及びウェイカリー(Davies & Wakerly)による「冗長
システムにおける同調及び整合(Synchronization and
Matching in Redundant Systems)」(IEEEコンピ
ュータトランザクション、1978年6月号、531頁
乃至539頁)に開示されている。冗長故障許容システ
ム内の割り込み同期の方法については、ヨンデア(Yond
ea)その他による1985年6月のフォルトトレラント
・コンピューティング(Fault-Tolerant Computing)に
おける第15回年次シンポジウムの議事録の246頁乃
至251頁における「疎同期化されたTMRシステムに
関する割り込みハンドラの実施(Implementation ofInt
errupt Handler for Loosely Synchronized TMR System
s)」に開示されている。「故障許容型実時間クロック
(Fault-Tolerant Real Time Clock)」に関する米国特
許第4,644,498号にはTMRコンピュータシス
テム内で用いる3重モジュラー冗長クロック構成が開示
されている。「多重冗長コンピュータのフレーム同調
(Frame Synchronization of Multiply Redundant Comp
uters)」に関する米国特許第4,733,353号
は、同期フレームを実行することにより周期的に同期化
される個別にクロックされる複数のCPUを用いた同期
化方法が開示されている。
【0003】上で言及したような故障許容コンピュータ
システムの重要な特徴は、データの損失又は破壊無しに
電源を復活するためのシステム上で稼働するプロセスに
関する能力である。電源故障に起因する損失を防止する
ための一つの方法は、もちろん、電源故障自体を防止す
ることである。この目的のために、冗長AC電源供給及
び電源バックアップ装置を用いることが可能である。し
かし、電源バックアップ装置から供給可能な電力供給時
間には制限があるし、また格納電源装置の費用、寸法及
び重量に関する制限も存在するため、AC電源故障が生
じた場合にシステムを順序よく遮断することが好まし
い。
【0004】高性能マイクロプロセッサ装置は、より高
速のクロック速度で用いること及びより大きな容量を備
えることが可能となっており、さらにメモリ、ディスク
ドライブなどのコンピュータの他の要素も対応して廉価
となり、より大きな容量を備えることが可能となってく
るにつれて、高い信頼性を有するプロセッサの動作性能
及び費用も同じ潮流に乗ることが要求されてきている。
さらに、一般的に、コンピュータ産業におけるいくつか
のオペレーティングシステム上の標準化がアプリケーシ
ョンソフトウェアの有効性を飛躍的に増加させており、
同様の要求が高信頼性システムの分野でも要求されてき
ている。すなわち標準オペレーティングシステムが有効
でなければならない。
【0005】従来の特許及び公開文献に開示されている
ような故障許容型コンピュータシステムでは、特注のオ
ペレーティングシステム及び各システム用に特別に書か
れたアプリケーションソフトウェアが、より広範に用い
られているアプリケーションソフトウェアのような一般
化されたオペレーティングシステムを用いる代わりに、
用いられてきている。従って、アプリケーションソフト
ウェアの種類は限定されており、しかもその使用には高
い費用がかかる。このために、説明してきたようなシス
テムでは、UNIXTMのような標準的オペレーティング
システムを使用することを企図している。
【0006】冗長モジュールを備えているような故障許
容型コンピュータシステムにおいては、システムは多く
の種類の構成で動作し続けることが可能である。CPU
モジュール、メモリモジュール又はI/Oモジュール
を、各コンポーネント部分が動作している間に、システ
ムから取り外し可能である。しかしながら、オペレーテ
ィングシステムは、ある時間における、システム構成が
何であるか、すなわちどのモジュールが存在しており、
全負荷で動作しているかに関する正確な記録を有してい
なければならない。しかしながら、UNIXTMシステム
の構成を調べることは困難である。このためには通常は
「/dev entry」が用いられるがこの「/deventry」入力
は、何がインストールされているかを示すのではなく
て、何がインストール可能であるかを示すものである。
UNIXシステムは、通常は、一連の特殊ファイル(/d
ev entry)を介してハードウェアコンポーネント及びソ
フトウェアモジュールにアクセスする。これらのファイ
ルはシステム管理者により作られて、システム構成が変
更されたときには常に正確に変更される必要がある。
【0007】
【発明が解決しようとする課題】従って、本発明の基本
的な目的は、特に故障許容型の改良型高信頼性コンピュ
ータシステムを提供することにある。さらに、本発明目
的は、高性能でありかつ低コストであり、特に通常は高
い冗長システムに伴うものである動作性能に対する負荷
を回避可能な、改良型冗長性故障許容型計算システムを
提供することにある。さらに、本発明の別な目的は、信
頼性、速度及びソフトウェア互換性の観点から測定され
た動作性能が、他のより低い動作性能を有するシステム
に比較してコスト面で改良されているような、高性能コ
ンピュータシステムを提供することにある。さらに、本
発明の目的は、要求時ページングを備えた仮想メモリ管
理を用いたオペレーティングシステムを実行可能であ
り、プロテクト(監視又は「カーネル(核)」)モード
を備え、特に多重プロセスを実行可能であり、しかもこ
れらが全て高水準の動作性能を有しているような、高信
頼性コンピュータシステムを提供することにある。さら
に、本発明の別目的は、故障したシステムのコンポーネ
ントを検出してそれらをオフラインに置き、システムを
遮断せずに、修復されたシステムコンポーネントを再組
込み可能な高信頼性冗長コンピュータシステムを提供す
ることにある。本発明のさらに別の目的は、特に故障許
容型の高信頼性コンピュータシステムにおける、改良さ
れた電源故障手続を提供することにある。さらに、本発
明の別の目的は、信頼性及び高い動作性能を有し低コス
トで、電源故障時の、冗長性、故障許容型計算システム
の改良された動作を提供することにある。さらに本発明
の別の目的は、特に故障許容型の高信頼性コンピュータ
システムの動作の改良された方法を提供することにあ
る。さらに別の目的は、信頼性及び高い動作性能を有し
低コストで、システムを動作し続けながら、故障したハ
ードウェアコンポーネントをシステムから外し置き換え
ることが可能な状況における冗長性故障許容型計算シス
テムの改良された動作を提供することにある。
【0008】
【課題を解決するための手段】 本発明は、中央処理部
(CPU)と、揮発性メモリ及び不揮発性格納手段を含
む記憶手段と、主電源供給手段と、バックアップ電源
と、複数の周辺デバイスとを具備するコンピュータシス
テムを動作する方法であって、(a)前記主電源供給手
段が前記コンピュータシステムに電源を供給している
間、記憶手段の記憶に基づき前記中央処理部で各プロセ
スを実行するステップと;(b)前記主電源供給手段の
故障を検出し、それに応答して前記コンピュータシステ
ムに前記バックアップ電源を供給し、かつ、前記中央処
理部で遮断手順を実行するステップであって、この遮断
手順は、まず、前記コンピュータシステムの差し迫った
遮断を前記各プロセスに警告し、それから、前記コンピ
ュータシステムの状態情報を前記揮発性メモリから前記
不揮発性格納手段に保存することを含んでおり、前記状
態情報は前記プロセスの状態情報と前記デバイスの状態
情報とを含むことと;(c)前記遮断手順が完了した後
に、前記主電源供給手段による主電源供給が回復された
ならば、再始動手順を開始するステップと;(d)前記
再始動手順を実行するステップであって、この再始動手
順は、前記不揮発性格納手段から前記保存された状態情
報を読み出して前記プロセスを再始動し、再ブートせず
にその実行を継続させることを含んでいることと;
(e)前記遮断手順の完了後所定時間内に前記主電源供
給が回復されない場合には、前記バックアップ電源を自
動的に遮断して、前記中央処理部による実行を停止する
ステップと;を具備し、前記中央処理部で各プロセスを
実行するステップが、通常の動作時において、記憶手段
からのコードを中央処理部によって実行し、かつこの実
行が所要のデバイスに対する呼び出しを含んでおり;前
記遮断手順が、実行中のプロセスの状態を保存すべく前
記中央処理部による該遮断手順の実行を継続している
間、前記デバイスに対する一連のデバイス呼び出しを発
行することを含み、該デバイス呼び出しが、(i) 電源
故障を指示する第1のデバイス呼び出しと、(ii) 更な
るデバイス動作の停止を指示する第2のデバイス呼び出
しと、(iii) 状態情報を保存するために前記デバイスに
よって必要とされたメモリ量を指示する第3のデバイス
呼び出しと、(iv) 前記デバイスの状態を保存するため
に前記記憶手段内のアドレスを含む第4のデバイス呼び
出しとを含み、前記 記憶手段内の前記アドレスに前記デ
バイスによって書き込まれたデータを前記不揮発性格納
手段に格納し;前記中央処理部による実行を停止するス
テップが、中央処理部によるコードの実行を停止するこ
とを含む;ことを特徴とする。また、本発明は、中央処
理部(CPU)と、揮発性メモリ及び不揮発性格納手段
を含む記憶手段と、主電源供給手段と、バックアップ電
源と、複数の周辺デバイスとを具備するコンピュータシ
ステムを動作する方法であって、(a)前記主電源供給
手段が前記コンピュータシステムに電源を供給している
間、記憶手段の記憶に基づき前記中央処理部で各プロセ
スを実行するステップと;(b)前記主電源供給手段の
故障を検出し、それに応答して前記コンピュータシステ
ムに前記バックアップ電源を供給し、かつ、前記中央処
理部で遮断手順を実行するステップであって、この遮断
手順は、まず、前記コンピュータシステムの差し迫った
遮断を前記各プロセスに警告し、それから、前記コンピ
ュータシステムの状態情報を前記揮発性メモリから前記
不揮発性格納手段に保存することを含んでおり、前記状
態情報は前記プロセスの状態情報と前記デバイスの状態
情報とを含むことと;(c)前記遮断手順が完了した後
に、前記主電源供給手段による主電源供給が回復された
ならば、再始動手順を開始するステップと;(d)前記
再始動手順を実行するステップであって、この再始動手
順は、前記不揮発性格納手段から前記保存された状態情
報を読み出して前記プロセスを再始動し、再ブートせず
にその実行を継続させることを含んでいることと;
(e)前記遮断手順の完了後所定時間内に前記主電源供
給が回復されない場合には、前記バックアップ電源を自
動的に遮断して、前記中央処理部による実行を停止する
ステップと;を具備し、前記中央処理部で各プロセスを
実行するステップが、通常の動作時において、記憶手段
からのコードを中央処理部によって実行し、かつこの実
行がプロセスに対する信号を含んでおり;前記遮断手順
が、実行中のプロセスの状態を保存すべく前記中央処理
部による該遮断手順の実行を継続している間、前記プロ
セスに対する一連の信号を発行することを含み、該プロ
セスに対する信号が、(i) コードPFRESTART
を備えたSIGPWRによって後続される遮断の間でコ
ードPFQUIESCEを備えたSIGPWR、又は(i
i) SIGKILLによって後続されるコードPFQU
IESCEを備えたSIGTERMを含み;更に、電源
障時のキルに関するプロセスをマーキングするステッ
を具備することを特徴とする。
【0009】本発明の実施例によれば、コンピュータシ
ステムは、通常は同じ指令ストリームを実行する3つの
別個のCPUを採用し、さらに同じデータの複製を格納
する2つの別個の自己診断メモリモジュールを備えてい
る。3つのCPUによるメモリ参照は、2つのメモリモ
ジュールの各々3つの別個のポートに接続された3つの
別個のバッファにより行われる。CPU上での故障許容
動作の動作性能負担の強要及び故障許容クロックの高価
かつ複雑なタイミング問題の強要を回避するために、3
つのCPUの各々はそれぞれ別個独立のクロックを備え
ているが、メモリ参照のような事象を検出し、全てが同
時に機能を実行するまで他のCPUの前方にあるCPU
の機能を停止することにより、緩やかに同期化され;C
PUが指令ストリームの同じ地点で割り込みを実行する
ことを保証するように、割り込みもCPUに対して同期
化されている。別個のCPU対メモリバッファを介する
非同期式メモリ参照は、メモリ要求時に各メモリモジュ
ールの3つの別のポートで採決(vote)されるが、CP
Uに戻るときには採決されることはない。2つのメモリ
は共に、CPU又はI/Oバスから受け取った全ての書
き込み要求を実行し、最新の状態を保持するが、一方の
メモリモジュールだけが読み出し要求に応答してCPU
に対して戻される読み出しデータを提示する。読み出し
データを発生する一方のメモリモジュールは「第1」メ
モリとして想定され、他方のメモリモジュールはバック
アップ用として想定されている。2つのメモリは共にI
/O要求に応答してI/Oプロセッサ(IOP)に読み
出しデータを提示する。2つのメモリモジュールに対す
るメモリ要求は、採決が行われている間に実行され、読
み出しデータは、CPUの最後の一つが要求を行った後
の短い遅れでCPUに対して有効となる。書き込み周期
でさえも本質的にオーバーラップ可能である。というの
も、これらのメモリモジュール用のDRAMが単に読み
出し及び再生に対して書き込みアクセスの大部分を使用
しており、書き込み周期の最後の部分に関するストーブ
が存在しない場合には、読み出しは非破壊的であり、従
って、第1のCPUが要求を行うと同時に書き込み周期
が開始されるが、最後の要求が受信され、良好であると
採決されるまでは、完了することはないからである。非
採決読み出しデータ戻り及びオーバーラップアクセスの
これらの特徴により、複雑さ及びコストを最少に抑えつ
つ、高い動作性能で故障許容を動作させることが可能に
なる。
【0010】I/O機能は2つのI/Oバスを用いるこ
とにより実行可能であり、バスの各々は一方のメモリモ
ジュールのみに別個に接続されている。多くのI/Oプ
ロセッサが2つのI/Oバスに接続され、I/O装置は
一対のI/Oプロセッサに連結されるが、一度にはI/
Oプロセッサの内の一方のみによりアクセスされる。C
PUはメモリモジュールを介してI/Oプロセッサにア
クセス可能である(各アクセスはメモリアクセスが採決
されるように採決される。)が、I/OプロセッサはC
PUではなく、メモリモジュールにアクセス可能なのみ
である。I/OプロセッサはCPUに対して割り込みを
送ることのみが可能であり、これらの割り込みはCPU
に提示される前にメモリモジュールに集められる。I/
Oプロセッサが故障した場合には、対の内の他方が、C
PU、メモリモジュール及び残りのI/Oプロセッサを
備えたある制御レジスタを操作し、オペレーティングシ
ステムのデータ構成を変更することにより、システムの
ソフトウェアを介してこのI/Oシステム用のI/O装
置の制御を引き継ぐことが可能である。これにより、I
/O装置の故障許容及び再組込みを、システムを遮断さ
せずに行うことが可能である。
【0011】好適な実施例で用いられるメモリシステム
はいくつかのレベルに階層化されている。各CPUは、
ほぼCPUのクロック速度で動作する自身のキャッシュ
を備えている。さらに、各CPUは、他のCPUにより
アクセス可能な局所メモリを備えており、仮想メモリ管
理は、オペレーティングシステムのカーネル及び現タス
クに関するページを要求することはないが、それらが強
制された採決(ボーティング)のオーバーヘッド無しに
高速でアクセス可能な全ての3つのCPUに関する局所
メモリ内に存在することを許容する。次は、大域メモリ
として言及されるメモリモジュールレベルである。そこ
ではボーティング及び同期化が行われて、いくつかのア
クセス時間負担が導入される。けれども、大域メモリの
速度はディスクアクセスよりもかなり高速なので、この
レベルは、要求時ページングの第1レベルに関するディ
スクを用いずに、最高速領域内の最頻データを保持する
局所メモリでページスワッピングを行うために用いられ
る。
【0012】本発明の開示された特徴の1つは、故障冗
長性装置又はFRU(CPU、メモリモジュール、IO
P、電源モジュール、I/O制御器など)を、システム
を遮断せずに交換する能力である。従って、システム
は、コンポーネントが故障して交換が必要となっても、
連続的に使用するために有効である。さらに、より少な
いシステムコンポーネントで、すなわち、故障許容句ロ
ッキングを必要とせずに、3つの代わりにわずか2つの
メモリを用いて、ボーティング回路を最少にした高水準
故障許容を獲得する能力は、故障するコンポーネントを
減少させることを意味し、信頼性を強化する。すなわ
ち、コンポーネントが少ないので故障も少なく、故障が
あった場合でも、、コンポーネントをシステムを遮断さ
せずに置き換える間、システムを稼働させるべくコンポ
ーネントを分離可能である。
【0013】好適実施例おけるシステムは、高度の故障
許容性及び非常に高いシステム有効性に不可避なアプリ
ケーションに関するデータ保全性を提供する。故障許容
性は、冗長プロセッサ及び、二重I/Oを備えたメモリ
及び大容量格納システム(例えば、鏡面ディスクを含
む)、冗長バッテリーバックアップを備えた冗長割り込
み不能電源供給を介して達成される。故障検出及びモジ
ュール不能化及び再組込みに関する方法により、ハード
ウェア故障が存在しても、データの保全性と妥協せずに
動作を継続することが可能になる。
【0014】交換モジュールを再組込みする前に、モジ
ュール上の電源オン自己診断を実行し、次の各行程を含
む、モジュール依存同期化アクティビティを実行するこ
とにより検査可能である。すなわち、(1) CPUに関
し、2つの良好CPUモジュールの現状態がセーブさ
れ、全ての3つのモジュールが同期化されて、大域メモ
リからの同じ指令ストリームの実行が開始され、この指
令ストリームは大域メモリに対する2つの良好なCPU
の局所メモリの内容を読み出し、全ての3つのCPUに
局所メモリのデータを書き戻す複写ルーチンであり;
(2) メモリモジュールに関し、交換モジュールが良好な
メモリの内容をCPU上の局所メモリに複写し、それら
の内容を2つのメモリモジュールに再複写し、この機能
は通常のシステム処理でブロック転送及び時分割により
実行され、その間にCPU又はI/Oプロセッサが再組
込みが2つのメモリモジュールで実行されている間に生
じたことを書き込み;(3) I/Oプロセッサが新しいI
/Oプロセッサ上のインタフェース及びI/Oプロセッ
サレジスタを起動させ、I/O制御器を交換I/Oプロ
セッサに再割り当てすることにより再組込みされ;(4)
交換I/O制御器の再組込みには、電源アップ、I/O
プロセッサに対する割当て、ホスト及び制御器データ構
造の再起動が含まれ;(5) I/O装置の再組込みには、
装置が接続される(ユーザレベルのソフトウェアが可能
になる)I/O制御器に割当てられるオペレーティング
システムの装置ドライバにより実行される装置特殊アク
ティビティが含まれる。
【0015】システムは、以下の最少構成が維持されて
いる限り、複数のハードウェア故障が存在しても機能し
続ける。すなわち、最少構成は、(1) 3つの内の2つの
CPU;(2) 2つの内の1つのメモリモジュール;(3)
I/Oプロセッサの1つ;(4) ディスクサブシステムの
1つ;及び(5) 上述の構成を支援するための適当な電源
サブシステムモジュールである。
【0016】故障監視及び検出システムは、壊れたデー
タを検出して、壊れたデータの永久保存を自動的に禁止
するために用いることも可能である。各種の故障検出機
構がシステムにおいて用いられる。該故障検出機構は、
(1) (CPU及びメモリ領域内の)反復動作が採決され
て高いデータ保全性を確保するために必要な回路を検査
する回数を減少させ;(2) エラー検出コードがデータ格
納及び転送(パリティ、データのブロック上の検査合計
を含む)に関して用いられ;(3) (サービスに関する要
求が監視され、刻時され、状態報告され)ハードウェア
モジュールの間の通信のタイミングが検査され;(4) 自
己診断回路が用いられ;(5)ソフトエラーが監視され報
告される、各ステップが含まれる。
【0017】本発明の特徴によれば、故障許容コンピュ
ータシステムは、AC電源故障時に、システムが順序通
りの遮断を実行して、状態をディスクにセーブするため
の電源バックアップを含む電源供給システムを用いてい
る。再始動手順は、遮断が生じる時までにAC電源が回
復した場合には、電源故障の時に存在した状態を回復す
る。
【0018】本発明の別の特徴によれば、故障許容コン
ピュータシステムは、動的にハードウェアコンポーネン
トを管理するための疑似ファイルシステムを用いてい
る。ファイルシステム内の標準的な階層ディレクトリと
して表れるディレクトリには、各コンポーネントに関す
るファイルが含まれる。各ファイルはハードウェアコン
ポーネント又はソフトウェアモジュールをマップする。
疑似ファイルシステムの階層は、システム機能中に決定
され、ソフトウェア又はハードウェア構成が変更する度
に自動的に更新される。ここに提示する階層的方法は、
コンポーネントの間の関係を説明するための自然な方法
を提供する。システムの現状態の正確なマップはファイ
ルをリスティングするための標準的なツールを用いて見
ることが可能である。ここでは「/config」フィルシス
テムと呼ばれる疑似ファイルシステムは、UNIXのフ
ァイルシステムスイッチ内でUNIX流ファイルシステ
ムとして実行される。内部的には「/conifg」ファイル
は一組のサブシステム内にグループ化される(すなわ
ち、ソフトウェア、CPU、メモリ装置、I/Oプロセ
ッサなどに関するサブディレクトリ)ないにグループ化
される。各ファイルは、それが表すサブシステム及びコ
ンポーネントに関する情報を核のする情報ノード(inod
e)により表される。ファイルシステムが読み出し、書
き込み又は修正を要求する場合には、「inode」が対応
するサブシステムに対してパスされる要求を受け取る。
サブシステムからの戻り状態はファイルシステム要求か
らの状態として戻される。オペレーティングシステムが
システム構成の変更(すなわち、コンポーネントの故
障)を検出すると「/config」ファイルシステム内の対
応する「inode」が変更される。
【0019】
【発明の実施の形態】本発明の特徴と信じられた点につ
いては、特許請求の範囲に記載されている。しかしなが
ら、他の特徴及び利点と同時に、本発明自体について
は、添付図面との関連において、以下の実施例に関する
詳細な説明において言及される。
【0020】図1を参照するに、本発明の特徴を備えた
コンピュータシステムが、CPU−A、CPU−B、C
PU−Cとして示された3つの同一プロセッサ11,1
2,13を備えた実施例として示されている。各CPU
は論理プロセッサとして動作する。3つのCPUは典型
的には全て同じ指令ストリームを実行しない唯一の時間
は、電源アップの自己試験、診断などの動作時である。
3つのプロセッサは、メモリ−#1及びメモリ−#2と
して示された2つのメモリモジュール14,15に接続
されている。各メモリは、同じ論理アドレス空間内に同
じデータを格納している。好適な実施例においては、プ
ロセッサ11,12及び13のそれぞれは、このメモリ
を含むプロセッサのみがアクセス可能な自身の局所メモ
リ16を含んでいる。図1は、本発明に基づく再組込
み、電源故障及び再始動のような特徴を備えた種類のコ
ンピュータシステムを示している。もちろん、これらの
特徴は、冗長性を有さないより一般的な型のシステムで
用いることも可能であるが、故障許容許容ステムにおい
てより好適な用途を見いだすであろう。
【0021】各メモリモジュール14,15と同様に、
各プロセッサ11,12及び13は自身の個別クロック
発信器17を備えている。この実施例では、プロセッサ
は「ロックステップ」で稼働せず、代わりに緩やかに同
期化される。すなわち、外部メモリ参照などの事象を用
いてCPUを同期化させる。外部割り込みは、各プロセ
ッサから他の2つに対する割り込み要求及び状態を結合
するための一組のバス18を用いる技法により3つのC
PU内で同期化される。プロセッサCPU−A、CPU
−B及びCPU−Cのそれぞれは3つの割り込み要求、
すなわち自身のものと他のCPUから受け取った2つの
ものとに応答して、実行ストリームの同じ地点でCPU
に割り込みを提示する。メモリモジュール14,15は
メモリ参照を採決し、メモリ参照は全てのCPUが同じ
要求を成した場合にのみ(故障だとして)許可される。
このようにして、プロセッサは外部事象(メモリ参照)
時に同期化されて、結果的にプロセッサは典型的には同
じ指令ストリームを同じシーケンスで実行するが、同期
化事象の間の時間の整合されたクロック周期の間に行う
必要はなくなる。さらに、外部割り込みは同期化され
て、各CPUの指令ストリームの同じ地点で実行され
る。
【0022】CPU−Aプロセッサ11は、バス21に
よりメモリ−#1モジュール14及びメモリ−#2モジ
ュール15に接続される。同様にして、CPU−Bはバ
ス22によりモジュール14及び15に接続され、CP
U−Cはバス23によりメモリモジュールに接続され
る。これらのバス21,22,23は、それぞれ、32
ビット多重化アドレス/データバス、指令バス及びアド
レス及びデータストローブに関する制御ラインを含んで
いる。CPUはバス21,22,23の制御を有してお
り、調停(arbitration)、又はバス要求及びバス許諾
(bus-grat)は存在しない。
【0023】メモリモジュール14及び15のそれぞれ
は、個別に別の入力/出力バス24又は25に接続さ
れ、これらのバスのそれぞれは、2つ(又はそれ以上)
の入力/出力プロセッサ26及び27に接続される。シ
ステムは、特別のシステム構成に必要なI/O装置を受
け入れるために必要な多重I/Oプロセッサを備えるこ
とも可能である。入力/出力プロセッサ26及び27の
それぞれは、バス28に接続され、各バス28は、「V
MEbusTM」のような標準I/O制御器30とのインタ
フェースを行うための1又はそれ以上のバスインタフェ
ースモジュール29に接続される。各バスインタフェー
スモジュール29はバス28の内の2つに接続されて、
I/Oプロセッサ26又は27の内の一方の故障、又は
バスチャネル28の内の1つの故障が許容される。I/
Oプロセッサ26,27は、メモリモジュール14及び
15を介してCPU11,12,13によりアドレス可
能であり、メモリモジュールを介してCPUに割り込み
信号を送ることが可能である。ディスクドライブ、CR
Tスクリーン及びキーボードを備えた端末、及びネット
ワークアダプタは、典型的には制御器30により動作さ
れる周辺機器である。制御器30はメモリモジュール1
4及び15に対するDMA型参照を成すことが可能であ
り、データブロックを転送する。I/Oプロセッサ2
6,27などの各々は、バス要求、バス許諾などための
メモリモジュールの1つに直接接続された別個のライン
を備えており、これらのポイント対ポイント接続は「ラ
ジアル(radial)」と称されており、ラジアルライン3
1のグループ内に含まれる。
【0024】システム状態バス32は、各CPU11,
12,13の内の1つ、各メモリモジュール14,15
及び各I/Oプロセッサ26,27に接続されて、各素
子の状態に関する情報を提供する。この状態バスは、C
PU、メモリモジュール及びI/Oプロセッサが現在シ
ステム内にあるかについての情報を提供しており、この
情報は、本発明の1つの特徴に基づいて「/config」フ
ァイルシステム内に保持される。
【0025】3つのCPU及び2つのメモリモジュール
に接続する応答/状態バス33は別個のラインを含んで
おり、このラインにより、モジュール14及び15は、
メモリ要求がCPUにより作られて、同時に状態フィー
ルドが送られて指令の状態及び正確に実行されているか
どうかについて報告を行う場合に、CPUに対して応答
信号を送る。メモリモジュールは大域メモリから読み出
された又は大域メモリに書き込まれたデータに関するパ
リティをチェックするだけでなく、I/Oバス24及び
25に対する又はI/Oバス24及び25からのメモリ
モジュールを介して送られるデータに関するパリティも
チェックし、さらに命令の有効性についてもチェックを
行う。これらのチェックがCPU11,12,13に対
して報告されるのはバス33内の状態ラインを介してで
あり、エラーが生じた場合には、故障ルーチンに入って
故障したコンポーネントを切り離す。
【0026】2つのメモリモジュール14及び15は、
大域メモリに同じデータを格納し、二重に各メモリ参照
を行うように動作するにもかかわらず、これらのメモリ
モジュールの一方は、任意の時点において、第1メモリ
として想定され、他方のものはバックアップとして想定
されている。メモリ書き込み動作は、2つのメモリが共
にカレントにあるように2つのメモリモジュールにより
実行され、メモリ読み出し動作は2つのメモリモジュー
ルにより実行されるが、第1モジュールのみが正確にバ
ス21,22,23に戻される読み出しデータをロード
し、第1メモリモジュールのみが多重主バス24及び2
5に関する調停を制御する。同じ動作を行う第1及びバ
ックアップモジュールを保持するために、バス34第1
モジュールからバックアップモジュールへと制御情報を
伝達する。いずれかのモジュールがブートアップ時に第
1モジュールとしての役割を果たすものと仮定すれば、
この役割は、ソフトウェアの制御により動作の間切換可
能である。この役割はさらに、選択されたエラー条件が
CPUその他のシステムのエラー応答部品により検出さ
れた場合に、切換可能である。
【0027】CPU内で発生されるある割り込みは、メ
モリモジュール14及び15により採決される。CPU
が割り込み状態(但し、機能停止はしない)となる場合
には、それらは、割り込みバス35内の個々のラインに
よってメモリモジュールに対して割り込み要求信号を送
り、CPUからの3つの割り込み要求が採決される。全
ての割り込みが採決されると、メモリモジュールのそれ
ぞれが、バスを介して3つのCPUに対して採決された
割り込み信号を送る。この割り込みの採決はCPUの動
作をチェックするように機能する。3つのCPUは内部
CPUバス18を介して採決された割り込みCPU割り
込み信号を同期する。この割り込み同期はどのCPUを
も停止させることなく行われる。
【0028】〔CPUモジュール〕図2を参照するに、
プロセッサ11,12,13の内の1つがさらに詳細に
示されている。好適な実施例においては、3つの全ての
CPUモジュールが同じ構造であり、ここではCPU−
Aのみが示されている。コストを適当な範囲に保ち、既
に展開されているソフトウェア及びオペレーティングシ
ステムにアクセス可能にするために、商業的に流通して
いるマイクロプロセッサを用いることが好ましく、多く
の装置から選択可能である。RISC(少ない命令セッ
ト)アーキテクチャは上述の緩い同期を実行することに
関していくつかのメリットを有している。しかし、モト
ローラ社の68030デバイスや、インテル社の803
86デバイス(20MHz及び25MHzで稼働する)
のようなより一般的なCICS(複雑な命令セット)マ
イクロプロセッサを用いることも可能である。高速32
ビットRISCマイクロプロセッサ装置は、3つのタイ
プを基本にいくつかのメーカーから販売されている。モ
トローラ社は部品番号88000のような装置を製造し
ており、MIPSコンピュータ・システムズ社などはM
IPSタイプと呼ばれているチップを製造しており、サ
ン・マイクロシステムズ社はSPARCTM(スケール可
能プロセッサアーキテクチャ)タイプの装置を製造して
いる。例えば、カリフォルニア州、サン・ノゼのサイプ
レス・セミコンダクタ社は、SPARC標準をサポート
し、33MHzのクロックを有し、20MIPS(10
0万回の指令/毎秒)で動作する部品番号CY7C60
1を製造しており、さらに富士通社は、同様にSPAR
C標準をサポートする、部品番号S−25である、CM
OS−RISCを製造している。
【0029】例として用いられている、図示の実施例の
CPUボード又はモジュールは、この場合には、MIP
Sコンピュータ・システムズ社により設計され、インテ
グレーテッド・デバイス・テクノロジー・インコーポレ
イテッド社により製造されたR2000のようなマイク
ロプロセッサチップ40を採用している。R2000装
置は、16.67MHzのクロック割合で12MIPS
の高性能を発揮するRISCアーキテクチャを用いた3
2ビットプロセッサである。代わりに、この装置の高速
バージョンである、25MHzクロック割合で20MI
PSを発揮するR3000を用いることも可能である。
プロセッサ40は、物理的アドレスに対する論理の変換
をキャッシュするための変換ルックアサイドバッファを
含む、メモリ管理用に用いられるコプロセッサである。
プロセッサ40は、データバス41、アドレスバス42
及び制御バス43を備えた局所バスに接続されている。
個々の命令及びデータキャッシュメモリ44及び45箱
の局所バスに接続されている。これらのキャッシュは、
それぞれ、例えば64Kバイトの寸法を有しており、プ
ロセッサ40の単一のクロック周期内でアクセスされ
る。数値又は浮動小数点コプロセッサ46が、このタイ
プの計算にさらに付加性能が必要な場合には、局所バス
に接続される。この数値プロセッサ装置は、商業的に
は、部品番号R2010としてMIPSコンピュータ・
システムズ社より販売されている。局所バス41,4
2,43は、書き込みバッファ50及び読出しバッファ
51を介して内部バス構造に接続されている。この書き
込みバッファは、商業的には部品番号R2020として
販売されており、このバッファは、書き込み動作に関す
る書き込みバッファ50内のデータ及びアドレスを格納
した後にも、書き込みが完了するまで機能停止周期を実
行することなく、ラン周期を実行し続ける。
【0030】書き込みバッファ50を介しての経路に加
えて、書き込みバッファ50をバイパスする書き込み動
作をプロセッサ40に実行させるための経路が設けられ
る。この経路は、ソフトウェア選択の下で、プロセッサ
に同期的書き込みを行わせるための書き込みバッファバ
イパス52である。書き込みバッファバイパス52が使
用許可され(書き込みバッファ50は使用許可されな
い)、プロセッサが書き込みを実行すると、プロセッサ
は書き込みが完了するまで機能を停止する。これとは逆
に、書き込みが、書き込みバッファバイパス52がしよ
う不許可状態で実行された場合には、データは(書き込
みバッファが一杯にならない限り)書き込みバッファ5
0内に書き込まれるので、プロセッサは機能を停止しな
い。プロセッサ40が書き込み動作を実行する時に書き
込みバッファ50が使用許可されると、書き込みバッフ
ァ50はバス41からの出力データ及びバス42からの
アドレスをバス43からの制御と共に捕捉する。書き込
みバッファ50は、4つのデータアドレスセットを持続
することが可能である。書き込みバッファはプロセッサ
チップ40のクロック17と同期して駆動する。プロセ
ッサ対バッファ転送は同期的でありプロセッサの機械周
期割合で行われる。書き込みバッファ50は、それが一
杯でデータにアクセスできない場合に、プロセッサに信
号を送る。プロセッサ40による読み出し動作は、4つ
のディープ書き込みバッファ50に含まれるアドレスに
対してチェックされ、読み出しがメモリ16又は大域メ
モリに対して書き込まれる書き込みバッファ内で待機す
るデータワードの1つに対して試みられる。
【0031】書き込み及び読出しバッファ50及び51
が、データバス53、アドレスバス54及び制御バス5
5を備えた内部バス構造に接続される。局所メモリ16
が、この内部バスによってアクセスされ、内部バスに接
続されたバスインタフェース56がシステムバス21
(又は他のCPUのバス22又は23)にアクセスする
ために用いられる。(局所バスのバス41及び42から
引き出された)内部バスの別個のデータ及びアドレスバ
ス53及び54が、システムバス21内の多重アドレス
/データバス57に変換されて、指令及び制御ライン
が、対応して、この外部バス内の指令ライン58及び制
御ラインに変換される。
【0032】バスインタフェースユニット56は、さら
に、メモリモジュール14及び15から確認/状態ライ
ン33を受け取る。このライン33においては、別個の
状態ライン33−1又は33−2が、モジュール14及
び15のそれぞれから接続されて、2つのメモリモジュ
ールからの応答が、CPU及び大域メモリの間で、転送
(読み出し又は書き込み)の事象について評価される。
【0033】実施例における局所メモリ16は、プロセ
ッサ40の3又は4の機械周期内でアクセス可能なRA
Mの8メガバイトから成る。このアクセスはこのCPU
のクロック17と同期して、他方、モジュール14及び
15にタするメモリアクセス時間は局所メモリよりも大
きく、メモリモジュール14及び15に対するアクセス
は非同期的であり、全てのCPUを待機することにより
強制される同期オーバーヘッドに従って、要求、さらに
採決を形成する。比較のため、I/Oプロセッサ26,
27,29を介する典型的な市販のディスクメモリに対
するアクセスは、ミリ秒で測定されるが、モジュール1
4及び15に対するアクセスよりも相当に遅い。このよ
うに、CPUチップ40によりメモリアクセスの階層が
形成され、最も高次のものは命令及びデータキャッシュ
44及び45であり、64Kバイトのキャッシュサイズ
及び好適なフィルアルゴリズムを用いた場合に、約95
%のヒット率を示す。2番面に高次なものは、局所メモ
リ16であり、再び、現在の仮想メモリ管理アルゴリズ
ムを用いることにより、約95%のヒット率が各メモリ
参照に関して獲得され、それに対してキャッシュのミス
が生じるが、局所メモリ16内のヒットも、例えば、局
所メモリサイズが8メガバイトの場合に発見される。結
果的に、プロセッサチップ40の観点からは、99%以
上のメモリ参照(I/O参照ではない)が同期的であ
り、それは、3又は4の機械周期において、または同じ
機械周期において生じるのである。局所メモリ16は、
アドレスバス54からのアドレス及び、制御バス55か
らのアドレスストローブを受け取り、別個の行及び列の
アドレス、RAS及びCAS制御を、例えば、局所メモ
リ16が、通常用いられる多重アドレッシングを備えた
DRAMを用いている場合に、発生する。データは、デ
ータバス53を介して局所メモリから書き込まれ、又は
読出される。さらに、いくつかのレジスタ61、さらに
NVRAMのような不揮発性メモリ62、及びオペレー
ティングシステムで用いられるような高速PROM63
などが、内部バスによりアクセスされる。メモリのこの
部分の中には、パワーオン時にのみ用いられるものがあ
り、さらに、オペレーティングシステムによって用いら
れるものもあり、キャッシュ44内でほとんど連続的に
用いることが可能なものもある。また、メモリマップの
非キャッシュ部分内で用いることが可能なものもある。
【0034】外部割り込みが、第2図のCPUモジュー
ル内の割り込み回路65から制御バス43又は55のピ
ンの1つによりプロセッサ40に与えられる。この種の
割り込みは、回路65内で採決されて、割り込みがプロ
セッサ40により実行される前に、3つの全てのCPU
が割り込みを提示されるかどうかが判断される。このた
めに、回路65は、他の2つのCPU12及び13から
割り込み中入力66を受け取り、他の2つのCPUにラ
イン67を介して割り込み中信号を送る。これらのライ
ンはCPU11,12,13を接続するバス18の一部
である。また、他の種類の割り込み、特にCPUにより
発生された割り込みを採決するために、回路65は、こ
のCPUからの割り込み要求をバス35内のライン68
により2つのメモリモジュール14及び15に送ること
ができ、次いで、ライン69及び70を介してメモリモ
ジュールからの個別採決された割り込み信号を受け取
る。2つのメモリモジュールは、活動される外部割り込
みを提示する。キーボードやI/Oチャネル28上の1
つに乗っているディスクドライブのような外部ソース内
で発生された割り込みは、例えば、CPU11,12,
13の内の1つが、以下に説明するように、命令ストリ
ーム内の同じポイントにくるまで、回路65からチップ
40の割り込みピンに提示されることはない。
【0035】プロセッサ40は別のクロック発信機17
によりクロックされるので、プロセッサ40を同期に周
期的に引き戻すためのいくつかの機構を設ける必要があ
る。クロック発信機は、同じ周波数、例えば16.67
MHzであるにもかかわらず、これらの装置の許容度は
約25ppm(parts per million)であり、プロセッサ
は、潜在的に、周期的に同期に戻されない限り、位相を
外れて多くの周期をもつことになる。もちろん、外部割
り込みがCPUに生じる毎に、(割り込み同期機構によ
り)それらの命令ストリームの同じポイントで割り込ま
れるという意味で同期される。しかしこれは周期カウン
トを同期させることはない。メモリモジュール14及び
15内の採決メモリ参照の機構は、後で説明するよう
に、CPUを(実時間で)同期させる。しかしながら、
メモリ参照が生じないようないくつかの条件下では長い
周期がかかり、別の機構を用いて機能停止周期を導入し
て、プロセッサ40を同期に引き戻す。周期カウンタ7
1がクロック17及び制御バス43を介してプロセッサ
40の制御ピンに接続されて、実行周期(機能停止周期
ではない)にある機械周期をカウントする。このカウン
タ71は、(水晶発信機の特殊許容差を考慮にいれて)
CPUの間で最大許容ドリフトが生じる間の周期を提示
するために選択される最大カウント値を備えたカウント
レジスタを含んでいる。このカウントレジスタのオーバ
ーフロー運動が起動されて、より遅い1又は2以上のプ
ロセッサが捕捉されるまで、より速いプロセッサの機能
を停止する。このカウンタ71は、同期がメモリ参照に
より同期される時には常にメモリモジュール14及び1
5に対してリセットされる。また、再生カウンタ72が
採用されて、後述するように、局所メモリ16上で再生
周期を実行する。さらに、カウンタ73は、カウンタ7
1のように、機能停止周期ではなく実行周期にある機械
周期をカウントする。しかし、このカウンタ73は、メ
モリ参照によってリセットされない。カウンタ73は、
後述するように、割り込み同期に対して用いられ、この
目的のために、割り込み同期回路65に対して出力信号
CC−4及びCC−8を送るように用いられる。
【0036】プロセッサ40は、RISC指令セットを
備えており、これはメモリ対メモリ指令をサポートはし
ておらず、メモリ対レジスタ又はレジスタ対メモリ指令
(すなわち、ロード又は格納)のみをサポートする。頻
繁に用いられるデータ及び現在実行されているコードを
局所メモリ内に保持することが重要である。従って、ブ
ロック転送動作が、バスインタフェース56に接続され
たDMA状態マシン74により提供される。プロセッサ
40がワードをDMA回路74内のレジスタに書き込
み、命令として機能し、この回路74内のレジスタに開
始アドレス及びブロック長さを書き込む。ある実施例で
は、マイクロプロセッサは、DMA回路が優勢になって
ブロック転送を実行して、必要なアドレス、命令及びス
トローブをバス53−55及び21上に送り出すまで、
機能停止する。プロセッサ40によりこのブロック転送
を起動するために実行される命令は、DMA回路74内
のレジスタから読み出し可能である。UNIXオペレー
ティングシステム内のメモリ管理は要求ページングに依
存しているので、これらのブロック転送は、大部分、大
域及び局所メモリ及びI/Oトラフィックの間を動かさ
れるページである。ページは4Kバイトである。もちろ
ん、バス21,22,23は、CPU及び大域メモリの
間の単一ワードの読み出し及び書き込みをサポートして
いる。言及しているブロック転送は局所及び大域メモリ
の間で可能であるのみである。
【0037】〔プロセッサ〕図3には、本発明の実施例
のマイクロプロセッサ40のR2000又はR3000
タイプが示されている。この装置は、32の32ビット
汎用レジスタ76、32ビットALU77、ゼロ−64
ビットシフタ78及び32×32積算/除算回路79を
含む主32ビットCPU75が示されている。このCP
Uは、関連する増分器及び加算器を備えたプログラムカ
ウンタ80も備えている。これらのコンポーネントは、
プロセッサバス構造81に接続され、プロセッサバス構
造81は、局所バス41及び、データバス41を介して
取り込まれる命令を実行する制御論理を備えた命令デコ
ーダ82に接続されている。32ビット局所アドレスバ
ス42は、オンチップメモリ管理コプロセッサ内の変換
ルックアサイドバッファ(TLB)83を含む仮想メモ
リ管理配列により駆動される。TLB83は、仮想アド
レスバス84を介してマイクロプロセッサブロック75
から受け取る仮想アドレスと比較される64のエントリ
を含んでいる。バス42の低位の16ビット部分85
は、この仮想アドレスバス84の低位の部分により駆動
され、高位の部分は、仮想アドレスが物理的アドレスと
して用いられる場合にはバス84からのものであり、仮
想アドレッシングが用いられてヒットが生じた場合に
は、出力86を介したTLB83からのタグエントリで
ある。局所バスの制御ライン43は、内部バス構造81
及び制御論理82から駆動される、パイプライン及びバ
ス制御回路87に接続される。
【0038】プロセッサ40内のマイクロプロセッサブ
ロック75はRISCタイプのものであり、その中で
は、大部分の命令が1つの機械周期内で実行され、命令
セットは、ALU動作を伴うメモリ参照を含む複雑な命
令を備えるのではなく、レジスタ対レジスタ及びロード
/格納命令を用いる。主CPU75は、高度にパイプラ
イン処理され、機械周期当たりの1つの命令実行の平均
化を促進している。1つの命令は、5回の機械周期を含
む周期にわたって実行され、ここで、機械周期は1のク
ロック周期又は、16.67MHzクロック17に関す
る60ナノ秒である。R2000プロセッサの構造及び
動作は、ケイン(Kane)の「MIPS R2000 RI
SCアーキテクチャ(プレンティス・ホール(Prentice
Hall),1987)」において開示されている。
【0039】〔メモリモジュール〕図4には、メモリモ
ジュール14又は15の内の一方が詳細に示されてい
る。好適な実施例においては、2つのメモリモジュール
は同じ構造なので、メモリ#1モジュールのみが示され
ている。メモリモジュールは、それぞれ、CPU11,
12,13から引き出される3つのバス21,22,2
3に接続された3つの入力/出力ポート91,92,9
3を含んでいる。これらの3つのレジスタの内容は、3
つの全てのレジスタの全ての部分に接続された入力を備
えた採決回路100により採決される。3つのCPU1
1,12,13の全てが、CPUが典型的に同じ命令ス
トリームを実行するこの場合のように、同じメモリ要求
(同じアドレス、同じ命令)を作成する場合には、メモ
リ要求が完了される。しかし、第1のメモリ要求が3つ
のラッチ94,95,96のいずれかにラッチされると
すぐに、それはメモリアクセスを開始するべく送られ
る。このために、アドレス、データ及び命令が、データ
バス101、アドレスバス102及び制御バス103を
含む内部バスに送られる。この内部バスからメモリ要求
は、アドレスに応じて、さらにシステム構成に応じて各
種の資源にアクセスする。
【0040】ある実施例では、大容量DRAM104
が、アドレスバス102及びメモリ要求からのアドレス
及び制御バス103からのストローブを受け入れるメモ
リ制御器105を用いて、DRAMの多重化行及び列を
発生し、データ入力/出力がデータバス101上に送ら
れる。このDRAM104は大域メモリとして参照さ
れ、ある実施例では32メガバイトの寸法である。さら
に、内部バス101−103は、制御及び状態レジスタ
106、いくつかの不揮発性RAM107及び書き込み
禁止RAM108にアクセス可能である。CPUによる
メモリ参照は、メモリモジュール14又は15内のメモ
リをバイパス可能であり、内部バス101−103に接
続されているバスインタフェース109によりI/Oバ
ス21及び25にアクセス可能である。メモリモジュー
ルが一次メモリモジュールである場合には、各メモリモ
ジュール内のバスアービトレータ110はバスインタフ
ェース109を制御する。
【0041】DRAM104に対するメモリアクセス
は、第1の要求がラッチ94,95,96の1つにラッ
チされるとすぐに、起動されるが、採決回路100が、
複数の要求が失敗無しに、同じであると判定しない限
り、完了することはない。3つの要求の内の第1のもの
の到着により、DRAM104に対するアクセスが開始
される。読み出しに関して、DRAM104はアドレス
され、感知増幅器がストローブされ、さらにデータ出力
がDRAM出力で発生されて、第3の要求が受け取られ
たの地に、採決が良好である場合には、要求されたデー
タが、CPUに対する即時転送に関して準備される。こ
のようにして、採決はDRAMアクセスとオーバーラッ
プされる。
【0042】図5に示すように、バス21,22,23
は、メモリ要求を、前述の通り5のポート91,92,
93に対して送る。これらのバスのそれぞれは、32の
双方向多重アドレス/データライン、13の単方向命令
ライン及び2つのストローブから構成される。命令ライ
ンは、読み出し、書き込み、ブロック転送、単一転送I
/O読み出し又は書き込みなどのバス活動の種類を特定
するフィールドを含んでいる。また、バイトのようなフ
ィールド機能は、4つのバイトを可能化する。ストロー
ブはAS(アドレスストローブ)及びDS(データスト
ローブ)である。CPU11,12,13は、それぞ
れ、自身のバス21,22,23を制御する。この実施
例では、多重主バスは存在しないし、競合やアービトレ
ーションは存在しない。書き込みでは、CPUは、アド
レスストローブASを伴う1周期内でバス上のアドレス
及び命令を駆動し(低位活動)、後続の周期(次の周期
であることが好ましいが、それに限定されない)は、デ
ータストローブDSとして同時にバスのアドレス/デー
タライン上のデータを駆動する。各CPUからのアドレ
スストローブASにより、ポート91,92.,93に
表れるアドレス及び命令が、レジスタ94,95,96
のアドレス及び命令部分内にラッチされ、これらのスト
ローブが表れると、データストローブDSによりデータ
がラッチされる。複数の(この実施例では3つの内の2
つ)バス21,22,23がラッチ94,95,96内
の同じメモリ要求を駆動し、採決回路100がバス10
3に最終命令を送り、さらにメモリアクセスが実行され
る場合には、命令が書き込みであるとすると、応答AC
K信号が、書き込みが実行されるとすぐに、ライン11
2(特にメモリ#1に関するライン112−1及びメモ
リ#2に関するライン112−2)により各CPUに戻
される。同時に、状態ビットが、図5の時間T3で各C
PUに対して応答/状態バス33(特に、メモリ#1の
ライン33−1及びメモリ#2のライン33−2)を介
して駆動される。最後のストローブDS(読み出しの場
合にはAS)とT3のACKの間の遅れT4は可変であ
り、その長さは、CPUの同期から外れた周期がメモリ
要求の時間にいくつあるかに依存しており、さらに、採
決回路内の遅れ及びCPUクロック17に比較されたメ
モリモジュール14又は15の内部独立クロック17の
位相に依存している。CPUにより提示されたメモリ要
求が読み出しである場合には、ライン112−1及び1
12−2上にあるACK信号及びライン33−1及び3
3−2上にある状態ビットは、データが、時間T3の間
に、アドレス/データバスに対して駆動されると同時に
送られる。これは、CPUの機能停止を解放し、同じ命
令上にあるCPUチップ40を同期化する。すなわち、
最も速いCPUは、より多くの機能停止周期で実行さ
れ、より遅いCPUを捕捉するまで待機し、それにより
3つの全てが、同時に解放されが、クロック17は位相
から外れていることが有り得る。3つの全てのCPU
が、機能停止から開場された場合に実行される最初の命
令は同じ命令である。
【0043】メモリモジュール14又は15からCPU
11又は12に送られる全てのデータは、そのデータが
DRAM104又はメモリ位置106−108からの読
み出しデータであるか、あるいはバス24及び25から
のI/Oデータであるかにかかわらず、レジスタ114
を通過する。このレジスタは内部データバス101から
ロードされ、このレジスタからの出力は、時間T3でポ
ート91,92,93でバス21,22,23に関する
アドレス/データラインに供給される。データがこのレ
ジスタ114にロードされるときにパリティチェックが
行われる。DRAM104に書き込まれる全てのデータ
及びI/Oバス上の全てのデータは、それに関連するパ
リティビットを備えているが、パリティビットはバス2
1,22,23上でCPUモジュールに転送されること
はない。読み出しレジスタ114で検出されたパリティ
エラーは、状態バス33−1及び33−2を介してCP
Uに報告される。一次のものとして指定された唯一のメ
モリモジュール14又は15は、バス21,22,23
上のレジスタ114内でデータを駆動する。バックアッ
プ用又は第2のものとして指定されたメモリモジュール
は、レジスタ114をロードしパリティをチェックする
時点までに読出し動作を完了し、バス33−1及び33
−2上の状態を報告するが、バス21,22,23に対
して駆動されるデータは存在しない。
【0044】各メモリモジュール14又は15内の制御
器117は、このモジュールに関するクロック発信器1
7によりクロックされ、バス103及びバス21−23
からの各種命令ラインを受け取る状態マシンとして動作
して、制御ビットを制御し、レジスタ及びバスをロード
し、外部制御信号などを発生する。この制御器は、2つ
のメモリモジュール14及び15の間の状態を転送し情
報を制御する2つのメモリモジュールの間のバス34に
接続される。一次のものと指定されたモジュール14又
は15内の制御器117は、命令バス101−103に
アクセスするためにI/O側(インタフェース109)
及びCPU側(ポート91−93)の間のアービトレー
タ110を調停する。一次メモリモジュール14又は1
5内の制御器117により行われる決定は、ライン34
により他方のメモリモジュールの制御器117に送ら
れ、他のメモリモジュールも同じアクセスを実行するよ
うに強制する。各メモリモジュール内の制御器117
は、このモジュール用のクロック発信器17からのパル
スを受信する再生カウンタ118に基づいて、DRAM
104に関する再生周期を導入する。DRAMは、8ミ
リ秒ごとに512の再生周期を受け取り、平均で、約1
5マイクロ秒毎に再生周期が導入される必要がある。こ
のように、カウンタ118は15マイクロ秒毎に制御器
117に対してオーバーフロー信号を送り、活動停止条
件が存在する場合には(CPUアクセス又はI/Oアク
セスの実行がない)、再生周期がバス103に送られる
命令により実行される。動作が進行している場合には、
現在の動作が終了した場合に、再生が実行される。メモ
リページング内で用いられるようなブロック転送のよう
な長い動作に関しては、いくつかの再生周期がバックア
ップされて、転送が完了した後のバーストモードで実行
される。このために、最後の再生周期からのカウンタ1
18のオーバーフローの数がカウンタ118に接続され
たレジスタ内に蓄積される。
【0045】CPUが発生する割り込みに関する割り込
み要求は、割り込みバス35内のライン68により、個
々にCPU11,12,13から受け取られる。これら
の割り込み要求は各メモリモジュール14及び15に送
られる。バス35内の割り込み要求は、3つの要求を比
較する割り込み採決回路119に送られて、バス35の
出力サイン69に採決された割り込み信号を送る。CP
Uは、それぞれ、バス35を介して2つのライン69及
び70(それぞれモジュール14及び15からのもの)
上で採決された割り込み信号を受け取る。各メモリモジ
ュール14及び15からの採決された割り込みは、論理
和されて、割り込み同期か回路65に示される。CPU
は、ソフトウェアの制御により、サービスに対する割り
込みを決定する。I/Oプロセッサ又はI/O制御器に
より発生された外部割り込みは、バス35内のライン6
9及び70を介してメモリモジュール14及び15を通
過してCPUに対して信号を送る。同様にして、CPU
は一次モジュール14又は15からの割り込みに対して
応答するだけである。
【0046】〔I/Oプロセッサ〕図6には、I/Oプ
ロセッサ26又は27の内の一方が詳細に示されてい
る。I/Oプロセッサは2つの同じポートを有してお
り、一方のポート121はI/Oバス24に対するもの
であり、他方のポートはI/Oバス25に対するもので
ある。I/Oバス24及び25のそれぞれは、36ビッ
トの双方向多重アドレス/データバス123(32ビッ
トプラス4ビットパリティ)、読み出し、書き込み、ブ
ロック読み出し、ブロック書き込みなどの、実行される
動作の種類を決定する双方向命令バス124、どの位置
がアドレスされているかを指定するアドレスライン及び
バイトマスク、さらにアドレスストローブ、データスト
ローブ、アドレス応答及びデータ応答を含む制御ライン
から構成される。バス31のラジアルラインは、各メモ
リモジュールへの各I/Oプロセッサからの個々のライ
ン、I/Oプロセッサからメモリモジュールへのバス要
求、メモリモジュールからI/Oプロセッサへのバス許
諾、I/Oプロセッサからメモリモジュールへの割り込
み要求ライン、さらにメモリからI/Oプロセッサへの
リセットラインを含んでいる。どのメモリが一次のもの
であるかを示すラインが、システム状態バス32を介し
て、各I/Oプロセッサに接続される。図6のI/Oプ
ロセッサ内の制御器又は状態機械126が、バス28か
ら命令、制御、状態及びラジアルライン及び内部データ
及び命令ラインを受け取り、バス24及び25の内容を
受け取り、バス上で転送するべく情報を保持するラッチ
127及び128の動作を含む、I/Oプロセッサの内
部動作を規定する。
【0047】メモリモジュールからI/Oプロセッサへ
のバス24及び25上の転送は、個別に応答されるアド
レス及びデータを備えた、図7に示すプロトコルを用い
る。一次のものと指定されたメモリモジュール内の仲裁
回路110は、I/Oバス24及び25の所有に関する
仲裁を実行する。CPUからI/Oへの転送が必要な場
合には、CPU要求がメモリモジュール内の仲裁論理1
10に示される。仲裁器110がこの要求を許諾した場
合に、メモリモジュールがアドレス及び命令を、アドレ
スストローブが図7の時間T1で(2つのバス24及び
25)のバス125上で宣言されると同時に、バス12
3及び124(2つのバス24及び25)に対し提供す
る。制御器126により、アドレスがラッチ127又は
128にラッチされる場合に、アドレス応答がバス12
5上で宣言されて、メモリモジュールはバス123上の
データを(2つのバス24及び25を介して)、さらに
タイムT2ではライン125上のデータストローブを配
置し、次いで制御器により、データが2つのラッチ12
7及び128ないにラッチされて、データ応答信号がラ
イン125上に置かれ、データ応答の受信時に、2つの
メモリモジュールが、アドレスストローブ信号の宣言撤
回によりバス24、25を解放する。I/Oプロセッサ
は、次いでアドレス応答信号の宣言撤回を行う。
【0048】I/Oプロセッサからメモリモジュールへ
の転送に関しては、I/OプロセッサHI/Oバスを使
用する事を必要とする場合に、それは、ラジアルバス3
1により、2つのバス24及び25に対してバス要求を
宣言し、それから、一次メモリモジュール14又は15
ないの仲裁回路110からのバス仲裁信号を待機する。
バス許諾ラインはラジアルの内の1つである。バス許諾
が宣言されると、制御器126は、前の転送が完了した
ことを意味するバス125上のアドレスストローブ及び
アドレス応答信号の宣言撤回(すなわち、偽り(fals
e))が行われるまで待機する。この時、制御器126
により、アドレスが、ラッチ127及び128から2つ
のバス24及び25のライン123に送られ、命令がラ
イン124に送られ、アドレスストローブが2つのバス
24及び25のバス125に送られる。アドレス応答
が、2つのバス24及び25から受け取られると、デー
タが、データストローブと共に、アドレス/データバス
に送られ、メモリモジュールからI/Oプロセッサにデ
ータ応答信号が送られて、転送が完了する。
【0049】ラッチ127及び128は、アドレスバス
129a及びデータバス129b及び制御バス129c
を含む内部バス129に接続される。これらのバスは、
制御器状態機械126により実行される命令をセットア
ップして、バス32などにより送られる状態を保持する
ために用いられる内部状態及び制御レジスタ130にア
ドレス可能である。これらのレジスタは、CPUのアド
レス空間内でCPUからの読み出し又は書き込みに関し
て、アドレス可能である。アドレスインタフェース13
1は、制御器126の制御に基づいて、バス28と通信
を行う。バス28は、アドレスバス28a、データバス
28b、制御バス28c及びラジアル28dを含んでお
り、これらのラインの全ては、バスインタフェースモジ
ュール29を介してI/O制御器30と会話を行う。バ
スインタフェース29、制御器30を駆動する(1つの
I/Oプロセッサ又は他方のプロセッサ、しかし両方で
はない)一組のバスライン28のみを許容する。制御器
30内部には、命令、制御、状態及びデータレジスタ1
33があり、これは(この種の周辺制御器に関して通常
行われているように)I/O装置内の動作を起動し制御
するための読み出し及び書き込みに関して、CPU1
1,12,13からアドレス可能である。
【0050】バス28上のI/O制御器30のそれぞれ
は、BIM29ないのマルチプレクサ132を介して2
つのI/Oプロセッサ26及び27に接続されており、
その何れか一方により制御可能であるが、CPU内で実
行されるプログラムにより一方が拘束される。I/Oプ
ロセッサの一方が故障した場合には、I/O制御器がB
IM29上の第2のポートを介してのこりのI/Oプロ
セッサに対して再割当て可能である。特別のアドレス
(又はアドレス組)が、各制御器30を表す制御及びデ
ータ転送レジスタ133に関して確立されて、これらの
アドレスは、オペレーティングシステムによりI/Oペ
ージテーブル(通常は局所メモリのカーネルデータ部
分)に保持される。これらのアドレスは、I/Oプロセ
ッサ#1又は#2のいずれかによってのみアクセス可能
なものとして、各制御器30に関連している。すなわ
ち、異なるアドレスが用いられて、I/Oプロセッサに
比較されるI/Oプロセッサ26を介して固有レジスタ
133に到着する。バスインタフェース131(及び制
御器126)はマルチプレクサ132をスイッチして、
一方又は他方からバス28を受け入れる。これは、CP
UからI/Oプロセッサのレジスタ130に対する書き
込みより完了する。こうして、デバイスドライバが呼び
出されて、この制御器30にアクセスをし、オペレーテ
ィングシステムは、このページテーブル内のアドレスを
用いてこれを実行する。プロセッサ40は、書き込みバ
ッファ50ではなく、書き込みバッファバイパス経路5
2を用いてこれらの制御器内の制御及びデータ転送レジ
スタ133に対してI/O書き込みを行うことにより、
制御器30にアクセスし、これらは同期的書き込みであ
り、回路100により採決され、メモリモジュールを通
してバス24又は25、さらに選択されたバスに送られ
るものである。プロセッサ40は書き込みが完了するま
で、機能を停止する。図6のI/Oプロセッサボード
は、不適当な命令や、バス28で応答が得られない場合
のタイムアウト、パリティチェックされたデータなどの
故障を検出するように構成されて、これらの内のいずれ
かの故障が検出された場合には、I/Oプロセッサは、
バス24及び25を介して2つのメモリモジュール14
及び15を介してCPUに対してエラーを報告する。C
PUは機能停止を中止して、処理を継続する。これは、
バス故障としてバスインタフェース56に検出され、後
述のように割り込みが生じ、可能であれば自己矯正動作
が行われる。
【0051】〔同期化〕実施例で用いられるプロセッサ
40は、既に述べたように、オーバーラップ指令実行が
可能なパイプラインアーキテクチャである。本実施例で
用いられる技法は周期カウント、すなわち、命令が実行
される毎に、図2のカウンタ71及びカウンタ73を増
分することに基づいている。パイプラインが進む毎に、
命令が実行される。制御バス43ないの制御ラインの1
つは、信号RUN#出あり、これはパイプラインが機能
停止であることを示す。RUN#が高位にある場合に
は、パイプラインは機能停止状態であり、RUN#が低
位(論理ゼロ)にある場合には、パイプラインは各機械
周期を進める。このRUN#信号が数値プロセッサ46
内で用いられて、プロセッサ40のパイプラインを監視
して、このコプロセッサ46が関連するプロセッサ40
とともにロックステップで実行可能になる。クロック1
7を伴う制御バス内のこのRUN#信号は、カウンタ7
1及び73により用いられて、RUN周期をカウントす
る。
【0052】好適な実施例においては、カウンタレジス
タ71の寸法は4096、すなわち、212のものとして
選択される。この数値が選択される理由は、クロック1
7内で用いられる水晶発信器の許容差が、平均して約4
KのRUN周期内のドリフトが割り込み同期の好適な動
作を合理的に許容可能な殆ど全てのプロセッサチップ4
0によって実行される周期の数のスキュー又は公差を結
果的に生じさせるためである。1つの同期機構は、カウ
ンタ71がオーバーフローした場合にCPUを同期させ
るべく運動を強制する。かかる運動の1つにより、カウ
ンタ71からのオーバーフロー信号OVFLに応答して
キャッシュミスが強制される。これは、次のIキャッシ
ュ参照に関して制御バス43上にエラーMiss信号
(すなわち、TagValidビットが設定されない)
を単に発生させることにより完了し、次に、キャッシュ
ミス除外ルーチンに入り、結果として生じるメモリ参照
が、メモリ参照が行われたように、同期を発生する。カ
ウンタ71のオーバーフローに同期を行わせる別の方法
は、プロセッサ40を機能停止することである。これ
は、オーバーフロー信号OVFLを用いて、図2の論理
回路71aを介して制御バス43上にCP−Busy
(コプロセッサ使用中)信号を発生することにより行う
ことが可能である。このCP−Busy信号は、常に、
CP−Busy信号の宣言が撤回されるまで、プロセッ
サ40を機能停止させる。3つの全てのプロセッサは、
これらが同じコードを実行し、カウンタ71で同じ周期
を実行するので、機能停止に入るが、それらが機能停止
となる実際の時間は可変である。論理回路71aはRU
N#信号を入力R#を介して2つの別の2つのプロセッ
サのバス43から受け取る。3つの全てが機能停止して
から、CP−Busy信号が解放されて、プロセッサが
機能停止から外れて、再び同期する。
【0053】このように、2つの同期技法を説明した
が、一次のものは、メモリモジュール内の回路100内
のメモリ参照を採決することにより得られる同期であ
り、第2のものは、直前に述べたようにカウンタ71の
オーバーフローにより得られる同期である。さらに、後
述するように、割り込みが同期される。しかしながら、
プロセッサ40が、基本的には、自分のクロック速度で
自由に稼働し、同期事象が生じる以外は、他のものとは
基本的に切り離されていることに留意することが重要で
ある。パイプラインされたマイクロプロセッサが用いら
れる事実により、信号クロックとのロックステップ同期
をより困難にし、動作性能の質を下げる。さらに、書き
込みバッファ50を用いることによりプロセッサを切り
離し、プロセッサの密接な接続の効果を下げる。同様
に、命令及びデータキャッシュ、TLB83を備えた仮
想メモリ管理から帰結する高い動作性能が、密接な接続
が用いられた場合の実行をより困難にし、動作性能に影
響を与える。
【0054】〔割り込み同期〕割り込み同期技法は、実
時間と、いわゆる「仮想時間」とを識別する必要があ
る。実時間は外部の実際の時間、すなわち、掛け時計の
時間であり、秒で測定され、便宜に応じて、例えば60
ナノ秒に分割される機械周期で測定される。もちろん、
クロック発生器17は、それぞれ、実時間内でクロック
パルスを発生する。仮想時間は、それぞれ、周期カウン
タ71及び73で測定されるプロセッサチップ40のそ
れぞれの内部周期カウント時間であり、任意の時点から
開始される命令から測定される、プロセッサチップによ
り実行される命令の命令数である。図1乃至図3のシス
テムの3つのCPUは、単一の論理プロセッサであるよ
うに機能することが必要であり、従って、3つのCPU
のプログラミングモデルが単一の論理プロセッサである
ことを保証するように、それらの内部状態を仮定するあ
る制限がCPUに付随する。故障モデル及び診断機能を
除いて、3つのCPUの命令ストリームは同一であるこ
とが必要である。同一でない場合には、採決大域メモリ
が図4の採決回路100でアクセスする。採決は、ある
CPUが故障しているか、又はそれが異なる命令シーケ
ンスを実行しているかを知ることはない。同期のスキー
ムは、あるCPUのコードストリームが、他方のCPU
のコードストリームから離れていった場合には、故障が
生じたものと仮定するように、設計されている。割り込
み同期が、単一のCPUイメージを維持する機構の1つ
を提供する。
【0055】全ての割り込みが、仮想時間に対する同期
を生じさせるために必要とされ、これにより、3つのプ
ロセッサ、CPU−A,CPU−B及びCPU−Cの命
令ストリームが、割り込みの結果(あるプロセッサが他
のプロセッサにより読出されるデータ床となるデータを
読出すような、命令ストリームの分岐の他の原因がない
ものとする)としての分岐を生じさせないことが保証さ
せる。いくつかのシナリオが存在し、それによれば、仮
想時間に対する非同期を生じさせる割り込みは、コード
ストリームの分岐を引き起こす。例えば、プロセスAが
完了する前にあるCPU上でコンテキストのスイッチを
引き起こすが、他のCPU上ではプロセスAが完了した
後にコンテキストのスイッチを引き起こす割り込みは、
結果的に、後の時点で、あるCPUがプロセスAの実行
を継続するが、プロセスが既に完了しているので、別の
CPUがプロセスAを実行不能であるような状況を生み
出す。このような場合に、割り込みにより仮想時間に対
する非同期が生じたものとすれば、例外プログラムカウ
ンタが困難であるという時事が問題を引き起こす。例外
プログラムカウンタが大域メモリに書き込みを行う動作
により、3つのCPUから異なるデータを検出する採決
器が採決エラーを生じる。
【0056】ある種のCPUの異常は、本質的に、仮想
時間に同期的である。ある事例は、中断天命令の異常に
より引き起こされる中断点異常である。CPUの命令ス
トリームは同一なので、中断点異常も、3つのCPU上
の仮想時間の同じ時点で生じる。同様に、かかる、内部
異常も、本質的に、仮想時間に対して同期的である。例
えば、TLB異常は、本質的に同期的な、内部異常であ
る。TLB異常は、仮想ページ数がTLB83内のいず
れのエントリにも整合しないために生じる。変換アドレ
スの運動が、唯一、命令ストリームの機能であるために
(正確には、中断点異常の場合)、変換は本質的に仮想
時間と同期的である。TLB異常が仮想時間に対して同
期的であることを保証するために、TLB83の状態
は、3つの全てのCPU11,12,13と同一である
必要があり、これは、TLB83がソフトウェアによっ
てのみ修正可能であることにより、保証される。再び、
全てのCPUが同じ命令ストリームを実行するので、T
LB83の状態は、常に、仮想時間に対して同期的であ
るように変更される。概括的に言って、ソフトウェアに
よりある運動が実行された場合には、その運動は仮想時
間に対して同期的である。運動が、周期カウンタ71を
用いないハードウェアにより実行される場合には、運動
は一般的に実時間に対して同期的である。
【0057】外部異常は本質的に仮想時間に同期的では
ない。I/O装置26,27,28は3つのCPU1
1,12,13の仮想時間に関する情報を持っていな
い。従って、I/O装置により発生される全ての割り込
みは、後述するように、CPUにより提示される前に仮
想時間に対して同期的である必要がある。浮動小数点コ
プロセッサ46はCPU内のマイクロプロセッサ40に
件密に接続されているので、浮動小数点異常はI/O装
置割り込みとは異なる。
【0058】外部装置は、3つのCPUを1つの論理プ
ロセッサとみなし、同期に関する情報を有しておらず、
CPUの間の同期性も欠落しているので、外部装置は、
各CPUの個々の命令ストリーム(仮想時間)と同期す
る割り込みを発生することはできない。同期の検索無し
に、いくつかの外部装置が実時間のある瞬間に割り込み
を駆動し、割り込みがこの時間にCPUに対して直接提
示される場合には、3つのCPUは異なる命令で異常と
ラップを生じ、結果的に3つのCPUは許容不能状態に
なる。これは、実時間に対して同期され、仮想時間に対
して同期されない事象(割り込みの宣言)の事例であ
る。
【0059】割り込みは、割り込み上で分散採決を実行
し、所定の周期カウントでプロセッサに対して割り込み
を提示することにより、図1乃至図3のシステムにおい
て、仮想時間に対して同期される。図8は、図2の割り
込み同期論理65のより詳細なブロック図である。各C
PUは、ディストリビュータ135を含んでおり、ディ
ストリビュータ135は、モジュール14又は15から
伸びるライン69又は70からの外部割り込みを捕捉す
る。この捕捉は所定の周期カウント、すなわち、カウン
タ71からの割り込みラインCC−4上に信号として送
られた、カウント4で生じする。捕捉割り込みは、内部
CPUバス18を介して他の2つのCPUに分散され
る。これらの分散された割り込みは、未決割り込みと称
される。各CPU11,12,13からの3つの未決割
り込みが存在する。採決回路136は、未決割り込みを
捕捉し、全てのCPUが外部割り込み要求を受けないこ
とを確認するための採決を実行する。所定の周期カウン
ト(周期カウンタ71により検出される)で、この事例
では、入力ラインCC−8により受信される周期8で、
割り込み採決器136が割り込みを、ライン137及び
制御バス55及び43を介して個々のマイクロプロセッ
サ40上の割り込みピンに提示する。割り込みを提示す
るために用いられる周期カウンタが決定されるので、全
てのマイクロプロセッサ40は同じ周期カウント上で割
り込みを受け取り、このようにして、割り込みが仮想時
間に対して同期化される。
【0060】〔メモリ管理〕図1乃至図3のCPU1
1,12,13は図9に示すような構成を有するメモリ
空間を備えている。局所メモリ16は8Mバイトであ
り、大域メモリ14又は15は32Mバイトであるもの
を例として用いるとする。局所メモリ16は、CPUの
メモリアクセス空間の同じ連続ゼロ−40Mマップであ
り、キャッシュ又は別のメモリ空間ではないことに留意
する。0−8M区域が(3つのCPUモジュールで)3
重にされ、8−40M区域が2重にされるが、論理的に
は単一の0−40Mの物理アドレス空間が存在するのみ
である。バス54上の8Mバイトにわたるアドレスによ
り、バスインタフェース56がメモリモジュール14及
び15に対する要求を形成するが、8Mバイト下のアド
レスは、CPUモジュール自体煮の内部で局所メモリ1
6にアクセスする。動作性能は、局所メモリ16内で実
行されるアプリケーションにより用いられるより多くの
メモリを配置することにより改良され、メモリチップが
高密度低コスト高速となれば、さらに別の局所メモリ及
びたい域メモリが付加される。例えば、局所メモリは3
2Mバイトであり大域メモリは128Mバイトである。
他方、コストを最少に抑え、動作性能が重要な要因でな
いシステムが必要な場合には、システムは局所メモリ無
しで動作可能であり、全ての主メモリを(メモリモジュ
ール14及び15内の)大域メモリ内におくことも可能
であるが、かかる構成では動作性能の低下は大きいもの
となる。
【0061】図9のマップの局所メモリ部分141の内
容は、3つのCPU11,12,13において同一であ
る。同様に、2つのメモリモジュール14及び15は、
いかなる時点でもそれらの空間142内に同じデータを
共通に含んでいる。局所メモリ部分141はUNIXの
オペレーティングシステムに関するカーネル143(コ
ード)を格納し、この部分は、物理的にかくCPUの局
所メモリ16の固定部分内にマップされる。同様に、カ
ーネルデータは、かく局所メモリ16内の固定部分14
4に割当てられて、ブートアップ時を除き、これらのブ
ロックは大域メモリ又はディスクに対して/から交換さ
れることはない。局所メモリ16の他の部分145は、
ユーザのプログラム(及びデータ)ページ用に用いられ
て、オペレーティングシステムの制御により、大域メモ
リ14及び15の区域146に交換される。大域メモリ
区域142は、区域146内のユーザページ用のステー
ジング区域として、さらに区域147内のディスクバッ
ファとして用いられる。CPUが、局所メモリ16から
ディスク148に対して、データ又はコードのブロック
の書き込みを実行するコードを実行している場合には、
シーケンスは代わりに、常にディスクバッファ区域14
7に対する書き込みを行う。というのも、区域147に
対する複写の時間は、I/Oプロセッサ26及び27に
対して、さらにI/O制御器30を介してディスク14
8に対して直接複写を行う時間と比較して、無視できる
程度である。従って、CPUが他のコードの実行を進め
ている間、CPUを通過して、ディスクへの書き込み動
作が終了し、区域147からディスク148に対してブ
ロックを移動する。同様に、大域メモリ区域147が、
ディスク(例えばビデオ)ではなくI/Oの同様の処理
に関して、I/Oステージング149区域を含むよう
に、マップされる。
【0062】図9の物理メモリマップが、かくCPUの
プロセッサ40の仮想メモリ管理システムと相互関係さ
れる。図10は、実施例で用いられるR2000プロセ
ッサの仮想アドレスマップを示しているが、ページング
及び保護機構を備えた仮想メモリ管理をサポートする他
のマイクロプロセッサチップにより対応する特徴を提供
することも可能であると理解されたい。
【0063】図10においては、2つの別の2Gバイト
の仮想アドレス空間150及び151が説明されてい
る。プロセッサ40は、2つのモード、すなわちユーザ
モード及びカーネルモードの一方で動作する。プロセッ
サは、ユーザモードで区域150にアクセス可能なのみ
であり、カーネルモードでは区域150及び151の双
方にアクセス可能である。カーネルモードは、多くの機
械により提供される監視モードに類似するものである。
プロセッサ40は、異常が検出されてカーネルモードに
移行して、異常からの回復(RFE)命令が実行される
までは、通常はユーザモードで動作する。メモリアドレ
スが変換又はマップされる方法は、状態レジスタ内のビ
ットにより定義されるマイクロプロセッサの動作モード
に依存している。ユーザモードでは、2Gバイト寸法の
「kuseg」と称される単一かつ均一の仮想アドレス空間
150が有効である。各仮想アドレスは、また、6ビッ
トプロセス識別子(PID)で拡張されて、64のユー
ザプロセスまでの特殊仮想アドレスを形成する。ユーザ
ーモードでのこの区画150に対する全ての参照は、T
LB83を介してマップされて、キャッシュ144及び
145の使用は、TLBエントリ内の各ページエントリ
に関するビット設定により決定される。すなわち、いく
つかのページがキャッシュ可能になり、いくつかのペー
ジがプログラマにより特定不能になる。
【0064】カーネルモード時には、仮想アドレス空間
は、図10の2つの区域150及び151を含む。これ
らの空間は4つの別の区域「kuseg」150、「k
seg0」152、「kseg1」153及び「kse
g2」154を備えている。カーネルモード用の「ku
seg」150区域は、2Gバイトの寸法であり、ユー
ザモードの「kuseg」に一致し、ユーザデータに対
するカーネルアクセスを合理化する。「kuseg」1
50はユーザコード及びデータを保持するために用いら
れるが、オペレーティングシステムは、しばしば、この
同じコード又はデータを参照することを必要とする。
「kseg0」区域152は、物理アドレス空間の第1
の512Mバイト上に直接マップされる512Mバイト
のカーネル物理アドレス空間であり、キャッシュされる
が、TLB83を使用しない。この区域は、カーネル実
行可能コード及びいくつかのカーネルデータ用に用いら
れ、局所メモリ16内の図9の区域143により示され
ている。「kseg1」区域153は、また、物理アド
レス空間の第1の512Mバイト内に、「kseg0」
と同様に直接マップされて、キャッシュはされず、TL
Bエントリを用いることもない。「kseg1」は、キ
ャッシュされない点に追い風のみ、「kseg0」と相
違する。「kseg1」はI/Oレジスタ、ROMコー
ド及びディスクバッファに関するオペレーティングシス
テムにより用いられ、図9の物理マップの区域147及
び149に対応する。「kseg2」区域154は、1
Gバイト空間であり、「kuseg」と同様に、TLB
83エントリを用いて、キャッシュあり又は無しで、任
意の物理アドレスに対して仮想アドレスをマップする。
この「kseg2」区域は、ユーザモードではなく「カ
ーネルモード」でのみアクセス可能である点においての
み、「kuseg」区域150と異なっている。オペレ
ーティングシステムは、コンテキスト交換時に再マップ
が必要なスタック及びパープロセス(per-process)用
に、さらにユーザページテーブル(メモリマップ)用
に、及びいくつかの動的に割当てられるデータ区域用に
「kseg2」を使用する。「kseg2」は、オール
・オア・ナッシング型のアプローチではなく、選択的な
キャッシング及びページ毎のマッピングを許容する。
【0065】マイクロプロセッサチップのレジスタ76
又はPC80内で発生された32ビット仮想アドレス及
びバス84上の出力が図11に示されている。そこで
は、ビット0−11が、図3のバス42上のアドレスの
低位12ビットとして無条件的に用いられるオフセット
であり、他方、ビット12−31が「kuseg」、
「kseg0」、「kseg1」及び「kseg2」の
間で選択されるようなVPN又は仮想ページ数であるこ
とが示されている。現在実行中のプロセスに関するプロ
セス識別子(PID)は、TLBによりアクセス可能な
レジスタ内に格納される。64ビットのTLBエントリ
が図11に示されており、そこでは、仮想アドレスから
の20ビットのVPNが64ビットエントリのビット4
4−63内に位置する20ビットのVPNフィールドと
比較され、同時にPIDがビット38−43に比較され
ることが示されている。適合が、いずれかの64の64
ビットTLBエントリに見いだされると、適合エントリ
のビット12−31におけるページフレーム数PFN
が、図3のバス82及び42(他の基準は充足している
と仮定する)を介して出力として用いられる。TLBエ
ントリ内の他の1ビット値には、N、D、V及びGが含
まれる。Nは、キャッシュ不能インディケータであり、
これが設定された場合には、ページはキャッシュ不能で
あり、プロセスは、まずキャッシュ44又は45にアク
セスすることなく、直接局所メモリ又は大域メモリにア
クセスする。Dは、書き込み保護ビットであり、これが
設定された場合には、ロケーションは「dirty」で
あり書き込み可能を意味するが、ゼロの場合に、書き込
み動作を行えばトラップが生じる。Vビットは有効を示
し、これが設定された場合には、TLBエントリが単に
有効ビットをリセットするだけでクリアされるようにな
る。このVビットはこのシステムのページ交換構成で用
いられて、ページが局所メモリにあるか大域メモリにあ
るかを示す。Gビットは、大域アクセスを許可し、これ
は、有効なTLB変換に関するPID整合要求を無視す
る。「kseg2」においては、これにより、カーネル
が、PIDを参照せずに全てのマップデータを参照可能
になる。
【0066】装置制御器30は、局所メモリ16内に直
接DMAを行うことはできないので、大域メモリが、典
型的にはディスク148などからのDMAタイプのブロ
ック転送に関するステージング領域として用いられる。
CPUは直接、制御器30で動作可能であり、制御器
(すなわち、プログラムされたI/O)による動作を起
動又は実際に制御するが、制御器30は、大域メモリを
除き、DMAを実行できない。制御器30は、バス(バ
ス28)マスタと成ることが可能なので、I/Oプロセ
ッサ26又は27を介して、メモリモジュール14及び
15内の大域メモリに対する読み出し又は書き込みを直
接行う。
【0067】大域及び局所メモリ(及びディスク)の間
のページ交換は、ページ故障又はエージングプロセスの
いずれかにより起動される。ページ故障は、プロセスが
実行中であり、大域メモリ内又はディスク上のページに
アクセス又はページからの実行を試みる場合に生じる。
TBL83はミスを示し、トラップが生じる。カーネル
内の低位のトラップコードは、ページのロケーションを
示し、ルーチンはページ交換の起動に入る。必要なペー
ジが大域メモリである場合には、一連の指令がDMA制
御器74に送られて、局所メモリから大域メモリに最新
に用いられたページを書き込み、大域メモリから局所メ
モリに必要なページを読出す。ページがディスク上にあ
る場合には、指令及びアドレス(セクタ)がCPUから
制御器30に書き込まれてディスクに送られ、ページを
獲得し、それからメモリ参照を行うプロセスが停止され
る。ディスク制御器がデータを発見し、それを送る準備
を完了した場合に、割り込み信号が発生されて、メモリ
モジュール(CPUには到着しない)により用いられ
て、ディスク制御器が大域メモリに対するDMAを開始
させ、大域メモリ内のページを書き込み、それが終了す
ると、CPUが割り込まれて、DMA制御器74の制御
の下にブロック転送が開始され、局所メモリから大域メ
モリに最も不要なページが交換されて、必要とされるペ
ージが局所メモリに読み出される。それから、下のプロ
セスが再び実行可能とされて、状態が回復され、下のメ
モリ参照が再び生じて、局所メモリ内の必要ページを発
見する。ページ交換を起動する他の機構は、エージング
ルーチンであり、それによれば、オペレーティングシス
テムは周期的に、局所メモリ内のページを介して、最近
使用されたページにマーキングされ、使用されないペー
ジが大域メモリから外に追い出される。タスク交換自体
はページ交換を起動しないが、その代わりに新しいタス
クがエラーを生じ始めると、ページが必要に応じて交換
される。交換の候補は最近用いられたものではない。
【0068】メモリ参照が行われ、TLBのエラーが見
いだされたが、TLBエラー異常から生じたページテー
ブルルックアップが、ページが局所メモリ内にあること
を示すものである場合には、TLBエントリはこのペー
ジが局所メモリ内にあることを示すために行われる。す
なわち、プロセスは、TLBミスが生じた場合に、異常
を生じ、(カーネルデータ区域内の)ページテーブルに
進み、テーブルエントリを発見して、TLBに書き込
み、それからさらにプロセスを進めることが可能にな
る。しかし、メモリ参照がTLBエラーを見いだすと、
ページテーブルが、対応する物理アドレスが大域メモリ
(8M物理アドレスにわたって)内に存在することを見
いだし、TLBエントリがこのページに対して行われ、
プロセスが再始動されると、それが前の通りTLB内の
ページエントリを発見する。有効ビットがゼロなので、
さらに別の異常が生じ、ページが局所メモリ内に物理的
に存在しないことが示されて、今度は異常がルーチンに
入って大域メモリから局所メモリへとページを交換し、
さらにTLBエントリを許可し、これで実行がさらに進
むことが可能になる。第3の状態では、ページテーブル
がメモリ参照に関するアドレスをディスク上にあって、
局所又は大域メモリ内に存在しないことを示すと、シス
テムは上述のように動作し、プロセスは実行キューを外
して、スリープキューに入り、ディスク要求が形成さ
れ、さらにディスクがページを大域メモリに転送して、
命令完了割り込み信号が送られると、ページが大域から
局所へと交換されて、TLBが更新され、プロセスが再
び実行可能になる。
【0069】〔私用メモリ〕メモリモジュール14及び
15は、同じ位置に同じデータを格納しているが、CP
U11,12,13はこれらのメモリに等しくアクセス
し、メモリモジュールのそれぞれの私用メモリとしてソ
フトウェア制御により割当てられた小さなメモリ領域が
存在する。例えば、図12に示すように、メモリモジュ
ール位置のマップの領域155は、私用メモリ領域とし
て指定され、CPUがバス59に「私用メモリ書き込
み」を提示する場合にのみ書き込み可能になる。実施例
においては、私用メモリ領域155は、4Kのページで
あり、各CPUモジュールのバスインタフェース56内
のレジスタ156内に含まれるアドレスで開始する。こ
の開始アドレスは、CPUによるこのレジスタ156に
対する書き込みによりソフトウェア制御に基づき変更が
可能である。この私用メモリ領域155は、さらに3つ
のCPUの間で分割される。CPU−Aだけが155a
に書き込み可能であり、CPU−Bは155bに、CP
U−Cは155cにそれぞれ書き込み可能である。バス
57内の命令信号の1つは、バスインタフェース56に
より設定されて、メモリモジュール14及び15に対し
て、動作が私用書き込みであるという情報を示す。これ
は、STORE命令からのプロセッサ40により発生さ
れるアドレスに応答して設定される。アドレス(及びW
RITE命令)のビットはバスインタフェース内のデコ
ーダ157により検出され(これはバスアドレスをレジ
スタ156のカウンタと比較する)、バス57に対する
「私用メモリ書き込み」命令を発生するために用いられ
る。メモリモジュール内では、書き込み命令がレジスタ
94,95,96内で検出されてアドレス及び命令が全
て採決回路100により良好(同意)と決定されると、
制御回路100は、CPUの1つからのデータをバス1
01に送り、この内の一つがCPUからのアドレスの2
つのビットにより決定される。この私用書き込みの間、
CPUはそれらのバス57上に同じアドレスであるが、
それらのバス58上では異なるデータを提示する(異な
るデータは、例えばCPUに固有のいくつかの状態であ
る)。メモリモジュールはアドレス及び命令を採決し、
アドレスバス上にみられるアドレスフィールドの部分に
基づいて1つのCPUからのみのデータを選択する。C
PUにいくつかのデータを採決させるために、3つの全
てのCPUが、2つのメモリモジュール14及び15内
に、CPUに固有ないくつかの状態情報の(バス21,
22,23上の3つの書き込みである)3つの私用書き
込みを実行する。これで、3つの全てのCPUにより実
行されるソフトウェアシーケンスは、(1) (位置155
aに対する)格納、(2) (位置155bに対する)格
納、(3) (位置155cに対する)格納である。しか
し、1つのCPUからのデータは、実際には、逐次書き
込まれ、データ採決されない(それは異なる、又は異な
り得るものであり、採決された場合には故障として提示
されてしまうからである。)。従って、CPUは、3つ
の全てのCPUに、3つの全ての位置、155a,15
5b,155cに対して読み出しさせることにより、さ
らにソフトウェアにこのデータを比較させることによ
り、データを採決可能である。この種の動作は、診断、
例えば、割り込みにおいて用いられて、原因レジスタデ
ータを採決する。
【0070】私用書き込み機構は、故障検出及び回復時
に用いられる。例えば、CPUが、メモリ読み出し要求
を行う場合のバスエラーを検出すると、メモリモジュー
ル14又は15は、ライン33−1及び33−2に悪い
状態を戻す。この時点で、CPUは他のCPUが、メモ
リモジュールから同じ状態を受け取ったか知らない。C
PUが故障であるか、又はその状態検出回路が故障であ
るか、あるいは、上述のように、メモリが故障であるか
である。それから、故障が隔離されて、前述のバス故障
ルーチンに入ると、3つの全てのCPUは、先行する読
み出し試行においてメモリモジュールからちょうど受け
取った状態情報の私用書き込みを実行する。それから、
3つの全てのCPUは、他のものが書き込んだものを読
み出し、それと自身のメモリ状態情報とを比較する。全
てが同意すれば、メモリモジュールがオフラインに採決
される。そうでない場合には、CPUはメモリモジュー
ルに関しては悪い状態だが、他のものは良好な状態であ
ることを示し、CPUはオフラインに採決される。
【0071】〔故障許容型電源〕図13を参照するに、
好適な実施例のシステムは、上述の通り、CPUモジュ
ール、メモリモジュール、I/Oプロセッサモジュー
ル、I/O制御器及びディスクモジュールなどのオンラ
イン置き換えと同時に、故障電源モジュールのオンライ
ン置き換え能力を有する故障許容型電源サブシステムを
用いている。図13の回路では、A/C電源ライン16
0が、ラインフィルタリング、一時サププレッサ及び短
絡回路を防止するための回路ブレーカに電源を供給する
電源分布装置161に直接接続されている。A/C電源
ライン故障を防止するために、冗長性バッテリーパック
162及び163が十分なシステム電源を供給し、順序
だった遮断が完了するようにされる。例えば、数分(例
えば4分半)のバッテリー電源で上述の実施例において
は十分である。2つのバッテリーパックの内の一方だけ
が、システムを安全に遮断動作するために必要である。
【0072】電源サブシステムは、2つの同一のAC/
DC大容量電源164及び165を備えており、これら
は高圧ファクタを示し、一対の36ボルトDC分布バス
166及び167を励起する。システムは、大容量電源
164又は165の内の一方で動作し続けることが可能
である。
【0073】4つの個別の電源配布バスが、これらのバ
ス166及び167に含まれる。大容量電源164が電
源バス166−1及び167−1を駆動し、大容量電源
165が電源バス166−2及び167−2を駆動す
る。バッテリーパック162はバス166−3及び16
7−3を駆動し、それ自体は、166−1及び166−
2から再充電される。バッテリーパック163はバス1
66−3及び167−3を駆動し、バス166−1及び
167−2から再充電される。3つのCPU11,1
2,13はこれらの4つの配線配布バスの異なる組合わ
せで駆動される。
【0074】これらの36vバス166及び167に接
続された多くのDC/AC変換器168が用いられて、
個別に、CPUモジュール11,12,13、メモリモ
ジュール14及び15、I/Oプロセッサ26及び2
7、さらにI/O制御器30に電源が供給される。大容
量電源164及び165もまたこれらのシステムファン
169及びバッテリーパック162及び163用のバッ
テリーチャージャに電力を供給する。これらの別個の各
システムのコンポーネント用のDC/DC変換器を備え
ることにより、1つの変換器の故障によってもシステム
が遮断することはなくなり、システムは、上述のよう
に、故障回復モードの1つにより動作し続け、故障の電
源要素をシステム可動中に置き換えることが可能であ
る。
【0075】電源システムは、手動スイッチ(スタンバ
イ及びオフ機能を備えている)により、又は自動的に保
守診断の電源故障の事象で電源オン状態に自動的にデフ
ォルト可能な保守診断プロセッサからのソフトウェアの
制御により遮断させることが可能である。
【0076】〔システムバスエラー評価〕バス21,2
2,23(システムバス)を介して転送するべく、メモ
リモジュール14及び15による応答を評価するために
CPU11,12,13により用いられるシーケンスを
これから説明する。このシーケンスは、バスインタフェ
ースユニット56において及びCPUにより実行される
コードにおいて状態マシンにより定義される。
【0077】読み出し転送の第1の場合には、一次メモ
リからライン33上に状態ビット内にデータエラーが示
されないと仮定される。メモリ参照により開始される機
能停止は、他の(二次)メモリモジュールが終了状態で
応答するか、二次メモリがタイムアウトになるまで、終
了しない。この機能停止は、制御バス55及び43を介
してREADY信号を宣言することにより終了する。二
次メモリが、タイムアウトが終了する前に、ライン11
2上で応答を宣言すると、終了状態が状態機械によって
評価される。データエラーが状態フィールド(ライン3
3−1又は33−2)により示されると、メモリ参照
は、別の行動を起こすことなく、終了する。
【0078】読み出し転送の第2の場合には、ライン3
3−1で一次メモリからデータエラーが示されず、二次
メモリが応答して、ライン33−2で受け取られる状態
でデータエラーが示されるものと仮定する。この場合に
は、メモリ参照が、ある場合には終了され、さらに終了
状態条件がレジスタ内でラッチされて、割り込みが転記
される。一次メモリ及び/又は二次メモリが、ライン3
3でデータエラー以外のエラーを示すと、参照が終了し
て、状態が転記された割り込みでラッチされる。第2の
場合の変形例は、二次メモリが故障して、タイムアウト
が終了する前に応答を宣言する。この場合には、割り込
みが指示と共にソフトウェアに送られて、二次メモリ上
の読み出し転送の間にタイムアウトが生じる。
【0079】読み出し転送の第3の場合には、一次メモ
リから状態ライン33にデータエラーが示されず、一次
メモリから応答も受け取られないものと仮定する。CP
Uは他のメモリからの応答を待機して、データエラーが
他のメモリからの状態ビット内に発見されない場合に
は、バスインタフェース56の回路を所有状態に(一次
メモリ所有状態)に変更して、データが正確に新しい一
次メモリから読み出されているかを示すために再試行が
行われる。良好な状態が新しい第1メモリから受け取ら
れた場合(データエラーが示されない)には、機能停止
が前のように終了されて、割り込みが所有変更指示と共
に送られて、システムが更新される(1つのメモリが不
良の場合には、他方のメモリが第1となる)。しかし、
新しい一次メモリからの読み出しに対するこの試行の結
果データエラー又はタイムアウトが生じた場合には、バ
スエラーが制御バス55及び43を介してプロセッサ4
0に示される。
【0080】読み出し転送の第4の場合には、一次メモ
リ及び二次メモリの双方が、状態ライン33−1及び3
3−2でデータエラーを示し、ライン33内の状態エラ
ーに応答した一次メモリ及び他方メモリから応答が受け
取られない場合には、機能停止が終了して、バスエラー
が制御バス55及び43を介してプロセッサ40に示さ
れる。
【0081】書き込みバッファ50がバイパスされる書
き込み転送に関しては、第1の場合では、いずれのメモ
リモジュールからの状態ライン33−1及び33−2に
データエラーが示されない。機能停止が終了して、全て
の実行が続けられる。
【0082】書き込みバッファ50がバイパスされる書
き込み転送に関しては、第2の場合には、ライン33−
1上の一次メモリからデータエラーが示されず、二次メ
モリが応答して、ライン33−2上で受け取られた状態
のデータエラーが指示される。この状態では、メモリ参
照が第1の場合と同様に終了し、さらに終了状態条件が
レジスタ内にラッチされて、割り込みが終了する。一次
メモリ及び/又は二次メモリがデータエラーではないエ
ラーをライン33上に示した場合には、参照が終了され
て、状態が転記された割り込みでラッチされる。第2の
場合の別の変形例では、二次メモリが故障して、タイム
アウトの前に応答を宣言する。この場合には、割り込み
が指示と共にソフトウェアに対して通知され、二次メモ
リ上での書き込み転送の間にタイムアウトが生じる。
【0083】書き込みバッファ50がバイパスされる書
き込み転送に関しては、第3の場合には、一次メモリか
らの状態内にデータエラーが示されず、一次メモリから
応答が受け取られない。各CPUのインタフェース制御
器は、他方のメモリモジュールからの応答を待機して、
データエラーが他方のメモリからの状態内に発見された
場合には、所有変更が強制されて、割り込みが通知され
る。しかし、データエラー又はタイムアウトが他方の
(新しいだい1のもの)メモリモジュールに生じた場合
には、バスエラーがプロセッサ40に宣言される。
【0084】書き込みバッファ50がバイパスされる書
き込み転送に関しては、第4の場合には、一次メモリ及
び二次メモリが状態ライン33−1及び33−2にデー
タエラーを示し、ライン33上の状態エラーに応答し
て、一次メモリ及び他方のメモリから応答が受信されな
い場合には、機能停止を終了して、バスエラーが制御バ
ス55及び43を介してプロセッサ40に示される。
【0085】書き込みバッファ50がプロセッサ40が
書き込み動作により機能停止しないように可能化される
書き込み転送に関しては、第1の場合には、いずれのメ
モリモジュールからの状態においてもエラーが示されな
い。転送が終了すると、他方のバス転送が開始可能にな
る。
【0086】書き込みバッファ50が可能化される書き
込み転送に関しては、第2の場合には、オンライン33
−1上の一次メモリからはデータエラーが示されず、二
次エラーが応答して、ライン33ー2上で受信される状
態のデータエラーを示す。この場合には、第1の場合の
ように、メモリ参照が終了し、さらに終了した状態条件
がレジスタ内にラッチされて、割り込みが通知される。
一次メモリ及び/又は二次メモリがデータエラーではな
いエラーをライン33で示すと、参照が終了されて、状
態が通知された割り込みと共にラッチされる。第2の場
合の別の変形例においては、二次メモリが故障してタイ
ムアウトがくる前に、応答を宣言する。この場合には、
割り込み他ソフトウェアに対して指示と共に通知され
て、タイムアウトが二次メモリ上の書き込み転送の間に
生じる。
【0087】書き込みバッファ50が可能化される書き
込み転送に関しては、第3の場合には、データエラーが
一次メモリから状態に示されて、一次メモリからは応答
が受け取られない。各CPUのインタフェース制御器
は、他のメモリモジュールからの応答を待機する。デー
タエラーが他方のメモリからの状態に発見されない場合
には、所有変更が行われて、割り込みが通知される。し
かし、他方の(新しい一次)メモリに関してデータエラ
ー又はタイムアウトをが生じた場合には、割り込みがプ
ロセッサ40に宣言されて、転送が終了される。
【0088】書き込みバッファ50が可能化される書き
込み転送に関しては、第4の場合には、ライン33−1
及び33−2内の状態のデータエラーを一次メモリ及び
二次メモリが示し、ライン33内の状態エラーに応答し
て、一次メモリ及び他方のメモリから応答が受け取られ
ない場合には、転送が終了し、割り込みが制御バス55
及び43を介してプロセッサ40に示される。
【0089】上に述べたように、メモリモジュール14
又は15が故障したことが機構により一旦決定される
と、故障状態の信号がオペレータに送られるが、システ
ムは動作し続ける。オペレータは、おそらく、故障モジ
ュールを含むメモリボードを交換しようと望むが、これ
はシステムの電源を入れたまま稼働させて行うことが可
能である。このシステムは、遮断無しに新しいメモリボ
ードを再装着することが可能である。この機構は、ソフ
トエラーのために書き込みの実行に失敗したメモリモジ
ュールを回復するように動作するが、良好と試験された
場合には、物理的交換は不要である。タスクはメモリモ
ジュールを、そのデータが他方のメモリモジュールと同
一となるように、戻すように行われる。この回復モード
は2つのステッププロセスである。まず、メモリは起動
されずにパリティエラーが含まれるものと仮定すると、
良好なパリティを備えた良好なデータが、全てのロケー
ションに書き込まれる。これは、この時点では全てゼロ
であるが、全ての書き込みが両方メモリで実行されるの
で、この第1のステップが完了される方法は、良好なメ
モリ内のロケーションを読み出すことであり、それから
このデータが両方のメモリモジュール14及び15内の
同じロケーションに書き込まれる。これが完了すると、
通常の動作が行われて、完了されたタスクと重ねられ
る。CPUは回復状態にあるメモリを、それがオンライ
ン状態にある化のように扱うが、I/Oバス24又は2
5から発生する書き込みは、この第1段の回復ルーチン
では無視される。全てのロケーションが書き込まれた後
の、次の段階は、I/Oアクセスが書き込まれることを
除き第1のものと同様である。すなわち、I/Oバス2
4又は25からのI/O書き込みは、それらが実行タス
ク内の通常のトラフィックで生じたように実行され、良
好なメモリ内の各ロケーションの読み出しと両方のメモ
リモジュール内の同じロケーションに対するこの同じデ
ータの書き込みと重ねられる。モジュールがゼロから最
大アドレスに対して、この第2のステップでアドレスさ
れた場合には、メモリは同一である。この第2の回復段
階の間、CPU及びI/Oプロセッサは、エラー無しに
全ての動作を実行するべく回復されたメモリモジュール
を期待する。I/Oプロセッサ26,27は、データ読
み出し転送の間に回復されたメモリモジュールにより提
示されたデータを用いることはない。回復プロセスを完
了した後に、回復されたメモリは(必要な場合には)指
定された一次メモリとなることが可能である。
【0090】同様な回復プロセスはCPUモジュールに
関しても行われる。1つのCPUが故障として検出され
た場合には(メモリ採決器100などによって)、他の
2つのCPUが動作を継続し、不良なCPUボードをシ
ステムを遮断せずに交換可能である。新しいCPUボー
ドがオンボードROM63からのパワーオン自己試験ル
ーチンを実行した場合には、それはこれを他のCPUに
信号を送り、回復ルーチンが実行される。第1に、2つ
の良好なCPUはそれらの状態を大域メモリに複写し
て、それから3つの全てのCPUが「ソフトリセット」
を実行し、それによってCPUのリセット及び開始が、
ROM内の起動ルーチンから実行され、それら全てがそ
れらの命令ストリーム内の正確に同じ地点に来ると、そ
れらは同期化されて、セーブされた状態が3つの全ての
CPUに複写されて戻されて、前に実行されたタスクが
継続される。
【0091】上述の通り、各メモリモジュール内の採決
回路100は、3つの全てのCPUが同じメモリ参照を
行うかどうかを決定する。そうであれば、メモリ動作が
完了に向けて進められる。そうでない場合には、CPU
故障モードに入る。採決回路100で検出されたよう
に、異なるメモリ参照を転送するCPUは、バス33−
1及び/又は33−2上のバス上で戻される状態と同一
である。割り込みが通知されて、ソフトウェアが続いて
故障のCPUをオフラインにする。このオフライン状態
は状態バス32上で反射される。故障が検出された場合
のメモリ参照が3つの内の2の採決に基づいて行われ
て、不良CPUのボードが交換されるまで、採決回路1
00が、メモリ参照が進められる前に、2つの良好なC
PUからの2つの同一のメモリ要求を要求する。システ
ムは、1つの(2つではない)CPUオフラインで動作
を継続するように、通常は構成されている。しかし、1
つの良好なCPUで動作することを望む場合には、それ
も可能である。あるCPUは、異なるデータがそのメモ
リ要求内で検出された場合には採決回路100によっ
て、及びタイムアウトによって故障であると採決され
る。すなわち、2つのCPUが同一のメモリ要求を送る
が、第3のCPUは所定の時間周期の間に信号を送らな
い場合には、CPUは故障であると仮定され、前述の通
りオフラインに置かれる。
【0092】システムのI/Oの構成は故障の事象にお
けるソフトウェア再組込み用の機構を備えている。すな
わち、CPU及びメモリモジュールコアは、前述のよう
にハードウェア故障から保護されているが、システムの
I/O部分は、ソフトウェア故障から保護されている。
I/Oプロセッサ26又は27の内の1つが故障した場
合には、上述のように、そのI/Oプロセッサに結びつ
いた制御器30は、ソフトウェアによって他のI/Oプ
ロセッサにスイッチされる。すなわち、オペレーティン
グシステムは、I/Oページ内のアドレスを再書き込み
して、同じ制御器に対して他らしいアドレスを用いて、
それから、これらの制御器が一対のI/Oプロセッサ2
6又は27の内の他方に接続される。エラー又は故障は
バスエラーにより検出可能であり、それは、バスインタ
フェース56でバス周期を終了し、異常の原因を決定す
る異常ハンドラルーチンを介してカーネル内にタスク指
令をする異常を発生し、それから(I/Oテーブル内の
アドレスを再書き込みすることにより)、故障したI/
Oプロセッサ26,27から故障していないI/Oプロ
セッサに全ての制御器30を移動する。
【0093】バスインタフェース56が、前述のように
バスエラーを検出すると、エラーは再組込みスキームが
用いられる前に切り離される。CPUが、I/Oプロセ
ッサ26又は27の内の一方、又はバス28の内の1つ
のI/O制御器30の内の一方に対して(すなわち、I
/O素子の内の1つにおいて、制御又は状態レジスタ、
又はデータレジスタの内の1つに対して)書き込みを行
う場合には、これは、メモリモジュール内のバイパス動
作であり、両方のメモリモジュールは、2つのI/Oバ
ス24及び25に対してそれを送るような動作を実行す
る。すなわち、2つのI/Oプロセッサ26及び27は
両方ともバス24及び25を監視して、パリティをチェ
ックし、制御器126を介して好適な構文であるか命令
をチェックする。例えば、CPUがI/Oプロセッサ2
6又は27内のレジスタに対して書き込みを実行する場
合、メモリモジュールの内の一方が有効なアドレス、有
効な命令及び有効なデータ(パリティエラーがなく適当
なプロトコルを持っていることで判明する)を提示する
場合には、アドレスされたI/Oプロセッサはデータを
アドレスされた位置に書き込み、書き込みが成功して完
了したことを示す「Acknowledge」指示でメ
モリモジュールに応答する。両方のメモリモジュール1
4及び15がI/Oプロセッサ26又は27からの応答
を監視し(すなわち、図7のアドレス及びデータ応答信
号及び関連する状態)、両方のメモリモジュールがライ
ン33−1及び33−2上での動作状態でCPUに応答
する。(これが読み出しである場合には、一次メモリモ
ジュールのみがデータを戻すが、状態は両方のモジュー
ルが戻す。)こうして、CPUは、両方のモジュールが
書き込みを正確に行っているか、又は一方のみか、ある
いは両方とも行っていないかを判定可能である。一方の
みが良好な状態を戻し、それが一次メモリである場合に
は、所有を変更する必要がない。しかし、バックアップ
が良好であると戻し、一次メモリが不良である場合に
は、所有変更を行い、正確な実行を行うものが一次メモ
リとされる。いずれの場合にも、割り込みに入り、故障
が報告される。この時点で、CPUはどのメモリモジュ
ールが不良か、あるいはメモリモジュールのダウンスト
リームが不良かを知らない。そこで、同じ書き込みが他
のI/Oプロセッサに対して試みられるが、これが成功
した場合には、メモリモジュールが不要であることを証
明する必要はない。すなわち、最初にアドレスされたI
/Oプロセッサが、例えば、バス24又は25上のライ
ンをハングアップした可能性があり、それによりパリテ
ィエラーが生じたかも知れないからである。そこで、プ
ロセスはI/Oプロセッサを選択的に遮断し、動作の再
試行を行い、両方のモジュールが正確にI/Oプロセッ
サに書き込みを実行したかを見る。そうであれば、シス
テムは、不良のI/Oプロセッサが置き換えられ再組込
みされるまでそれをオフラインにおいたまま動作を継続
することが可能である。しかし、再試行により一方のメ
モリから不良状態が生じた場合には、メモリをオフライ
ンにおくことが可能であり、あるいは、故障切り離しス
テップを実行して故障がメモリにあるのか、そのほかの
素子にあるのかを確認する。これは、全ての制御器30
を1つのI/Oプロセッサ26又は27にスイッチし、
それからオフのI/Oプロセッサにリセット命令を送
り、両方のメモリモジュールを生かしたまま、オンライ
ンのI/Oプロセッサとの通信を再試行する。リセット
されたI/Oプロセッサがバス24又は25をダメにし
た場合には、そのバスドライバがリセットにより切られ
る。オンラインのI/Oプロセッサに(両方のバス24
及び25を介して)通信を再試行して、良好な状態が戻
されれば、リセットされたI/Oプロセッサが故障であ
ることが分かる。両方のメモリモジュールがデータエラ
ー以外の種類のエラーで応答してきた場合には、I/O
転送が終了され、バスエラーがプロセッサに示される。
タイムアウトも同様に処理される。一次メモリがデータ
エラーで応答し、バックアップがデータエラーを有しな
い場合には、所有変更が試みられる。いかなる場合で
も、各バスエラーに関して、ある種の故障切り離しシー
ケンスが実行されて、オフラインにおくことが必要なシ
ステムのコンポーネントが決定される。
【0094】〔CPU及びメモリエラー回復〕図1乃至
図13のCPU及びメモリサブシステムにおけるハード
ウェア故障の処理は重要な特徴である。サブシステム
は、CPU11,12,13及びメモリボード14及び
15、さらにシステムバス、すなわちバス21,22,
23を備えている。ハードウェアが、メモリのパリティ
エラーのような小さな欠陥であろうと、大きなサブシス
テムの故障(例えば、電源故障)であろうと、いくつか
の異常事象を検出した場合には、対象が故障した構成素
子として識別されて、それはシステムから除去されて、
通常の動作が迅速に再始動される。この時点では、故障
したコンポーネントを診断したり再組込みしたりする試
みは行われない、まず、システムの「コア」に関するエ
ラー回復構成について説明し、次いでI/Oバス及びI
/O制御器のエラー回復について説明する。
【0095】〔ハードウェアエラー異常〕ハードウェア
エラー異常は高順位割り込み又はバスエラーにより指示
される。一般的に、高順位割り込みは、非同期的に処理
可能な、すなわち現在の命令が実行された後のある時に
処理可能なエラーに関して発生される。事例としては、
(1) 前の一次メモリボード14又は15上のハードウェ
ア検出されたエラーにより強制される「所有獲得」操
作;(2) システムバス読み出し上のデータ無しエラー;
(3) 一次メモリ14又は15上でデータエラーを被る
が、バックアップメモリ14又は15によりまだ実行可
能なシステムバス読み出しがある。これら3つの例で
は、カーネルが、ハードウェアが既に回復したエラーを
知らされる。しかし、いくつかの場合では、プロセッサ
が機能停止して、次のような完了不能の動作の終了を待
機する。(1) 所有獲得動作の失敗;(2) 何れのメモリモ
ジュールでも行うことのできないシステムバス読み出し
及び書き込み;(3) 書き込みバッファ52が私用可能で
ある場合のシステムバス書き込み上でのデータエラーの
場合である。割り込みはマスク可能なので、これらは機
能停止を破ることをあてにできず、バスエラーがこの機
能を果たす。
【0096】これら2種類のハードウェアエラー異常が
識別されるが、これら2つの異常は、どの種類が生じた
かに留意しない1つの例外ハンドラ内に送ることが可能
である。バスエラーハンドラを通過させる間に、バスエ
ラーが、「エラー無し(nofault)」又はサブスクリプ
ション(subscription)サービスアクセスにより引き起
こされたものとして、又は、ユーザスタック成長(user
stack growth)に起因するものと認識されない場合に
は、それはハードウェア故障コードにそらされる(それ
は高順位割り込みに関するハンドラであり得る)。図1
乃至図8のシステムにより保存されるエラー状態は、い
ずれの異常の種類に関しても等しい。
【0097】チェックされるべき第1のエラーレジスタ
は、それらがプロセッサ同期の故障を報告するので、潜
在的に非同期的なものの1つである。
【0098】CPU_ERRレジスタは、以下に示され
るように、ある種のエラーを示すために割当てられた特
定ビットの数を含んでいる:〔CPU_ERR〕:割り
込み同期エラーCPU_ERR_ISビットにより指示さ
れる。これは、CPUの割り込み同期論理内の信号のエ
ラー又はCPUの逸脱(divergence)を示す。ソフト同
期試験が逸脱を示さなかった場合には、同期ハードウェ
アの故障を追跡する。応答は:CPUがCPU_ERR_
ISの状態に同意しない場合には、異常CPUをオフラ
インにする。そうでない場合には、CPU_SERRを
ソフト採決し、以下に示すように設定されたビット上で
活動する。
【0099】〔CPU_SERR〕:割り込み未決入力 以下のビットにより指示される。 CPU_SERR_CPUaHIGH,CPU_SERR_
CPUbHIGH,CPU_SERR_CPUcHIGH,
CPU_SERR_CPUaLOW,CPU_SERR_C
PUbLOW,CPU_SERR_CPUcLOW,CPU
_SERR_CPUaTIM0,CPU_SERR_CPUb
TIM0,CPU_SERR_CPUcTIM0,CPU_S
ERR_CPUaTIM1,CPU_SERR_CPUbTI
M1,CPU_SERR_CPUcTIM1。これらのビッ
トは、エラーがフラグされた瞬間に、各CPU上で割り
込み同期回路65に対して入力のスナップショットを示
す。応答は:これら4つの入力の内の1つのCPUのバ
ージョンが特殊である場合には、その同期ハードウェア
は壊れており、オフラインにおかれる。 〔CPU_ERR〕:プロセッサ同期エラー CPU_ERR_PSビットにより指示される。これは、
CPUプロセッサ同期論理の信号の故障又はCPUの逸
脱を指示する。ソフト同期動作は、逸脱を示さず、同期
ハードウェアの故障を追跡する。応答は:CPUがCP
U_ERR_PSの状態に同意しない場合には、異常CP
Uをオフラインにする。そうでない場合には、CPU_
SERRをソフト採決し、以下に示すように設定された
ビット上で活動する。
【0100】〔CPU_ERR〕:割り当てられないC
PU空間の破壊(violation) CPU_SERR_USVで指示される。CPU空間内の
実行されないアドレスが書き込まれる。これは、故障し
たカーネルソフトウェア、又はCPUのハードウェアの
アドレス復号論理内の故障から生じる可能性がある。こ
れは、異常がバスエラーであるか高順位割り込みである
かを問題にする希な事例であることに留意すべきであ
る。USVに関して、書き込みバッファが使用可能であ
れば、高順位割り込みが発生されて、そうでない場合に
は、バスエラーとなる。誤った書き込みが書き込みバッ
ファに行われた場合には、USVが同期的に生じ、異常
フレーム内のPCは有罪の命令を正確に指摘することは
ない。従って、異常の種類は、異常PCが信頼できるか
否かを示すにとまる。応答は:CPUが割り当てられな
い空間エラーを示す場合には、カーネルが壊れてい
る。;CPU_ERRADDRからの不良アドレスを読
み出し;エラーを消去するためにCPU_MASK_CU
SVを書き込み;要求される行動を諮問する。
【0101】そうでない場合には、1つのCPUのみが
エラーを示すとすると、それをオフラインにおく。
【0102】〔CPU_ERR〕:局所RAM内の書き
込み破壊(violation) CPU_ERR_WRVビットにより指示される。書き込
み保護アドレスに対する書き込みが試みられる。これ
は、故障したカーネルソフトウェア、又はCPUから生
じる可能性があり、メモリモジュールは保護RAMに書
き込む。上述の割り当てられない空間破壊(USV)と
同様に、異常の種類は、異常スタックフレーム内のPC
が信頼できるかどうかを示すにとまる。応答は:全ての
CPUが書き込み保護破壊を示す場合には、カーネルが
壊れている;CPU_ERRADDRから不良アドレス
を読み出し;エラーを消去するためにCPU_MASK_
CWPVを書き込み;要求される行動を諮問する。そう
でない場合には、1つのCPUのみがエラーを示すとす
ると、それをオフラインにおく。
【0103】〔CPU_ERR〕:二重レール(dual ra
il)故障 次のビットにより指示される。 CPU_ERR_CPUaDRF,CPU_ERR_CPUb
DRF,CPU_ERR_CPUcDRF,CPU_ERR
_IOP0DRF,CPU_ERR_IOP1DRF,CP
U_ERR_MPDRF エラーは、信号ソース、バックプレーン(backplan
e)、又は個々のCPUに存在する可能性がある。CP
U_ERRは、メモリモジュール14及び15ではな
く、全てのソースから二重レース故障を記述する。CP
U_ERRに適合するべく、メモリモジュールから送ら
れる二重レール信号は非常に異なっているので、これら
の故障はシステムバス状態レジスタ、CPU_RSB及
びCPU_RSBに位置している。応答は:3つの全て
のCPUが特殊なDRFが存在することに同意すると、
不良信号のソースが不能化される。そうでない場合に
は、異常CPUを不能化する(信号は故障の検出により
不活性に駆動され、それは信号ソースが将来にわたって
不能であるのと同様であるが、被告は不良CPUであ
る。) 〔CPU_ERR〕:電源システム状態変更割り込み CPU_ERR_POWERビットにより指示される。応
答は:CPU_POWERを読み出し、下に示すように
設定されたビット上で活動する。
【0104】〔CPU_POWER〕:大容量レギュレ
ータ及びバッテリー状態 以下のビットで示される。 CPU_POWER_BATTaSTS1,CPU_POW
ER_BATTaSTS2,CPU_POWER_BATTc
STS1,CPU_POWER_BATTcSTS2,CP
U_POWER_BULKaSTS1,CPU_POWER_
BULKaSTS2,CPU_POWER_BULKcST
S1,CPU_POWER_BULKaSTS2,CPU_P
OWER_BATTaMON1,CPU_POWER_BA
TTaMON2,CPU_POWER_BATTcMON1,
CPU_POWER_BATTcMON2,CPU_POW
ER_BULKaMON1,CPU_POWER_BULKa
MON2,CPU_POWER_BULKcMON1,CP
U_POWER_BULKcMON2,このレジスタでは、
STSビットが、物理的に存在する1つの指示構成素子
にセットされ;MONビットは、対応するSTSビット
と同じ状態に最初にセットされる書き込み可能マスクで
ある。高順位割り込みは、MONラインがそのSTSラ
インに適合しない場合に発生される。これらの二重ライ
ン信号は、二重レール信号ではないことに注意のこと。
STSライン1及び2は常に適合すべきである。応答
は:現在のMONビットをセーブし;現在のSTSビッ
トを読み出し、それらをMONビットに書き込み(この
電源状態変更割り込みをマスキングし);セーブされた
MONビットを現在のSTSビットを比較し;バッテリ
ー又は大容量レギュレータ用のSTSラインが変更され
ると、電源故障割り込みハンドラを呼び出す。
【0105】〔CPU_ERR〕:コアモジュール現在
状態変更割り込み 少なくとも、CPU、メモリモジュール、又はI/Oプ
ロセッサの内の1つが、取り外し又は交換されたことを
示す。CPU_CFG内のカレントのモジュール現在ビ
ットを、(カーネルによりセーブされた)前の状態と比
較することにより、失われた/加えられた構成素子を識
別可能である。応答は:メモリモジュール又はI/Oプ
ロセッサボードが取り外されると、リセットに保持し;
それを欠落としてマークし;「/config」から除去す
る。CPUボードが取り外されると、それを欠落として
マークし;「/config」から除去する。カーネルは、ハ
ードウェア異常から戻ると、CPU_CFGの状態をセ
ーブする。参照として、構成変更(ボード故障、引き出
し、再挿入、バッテリー再生など)は、次のハードウェ
ア異常が取り出された場合に、現在のものとセーブされ
たCPU_CFGのバージョンを比較することにより通
知可能である。
【0106】〔CPU_ERR〕:2つのメモリモジュ
ールの一次子エラー 2つのメモリモジュールが一次子であることを請求す
る。これは、故障した所有獲得動作の結論である。2つ
のメモリモジュールの一次子の検出時、CPUは、ある
べきシステムバス所有ビットを補足し、前に獲得した所
有動作一次にスイッチして戻る。応答は:バックアップ
をソフトリセットし、それをオフラインにおく。 〔CPU_ERR〕:メモリモジュール一次子及び回復
エラー メモリモジュール14又は15は、両方一次であること
及び、場合によっては指示されたメモリモジュールの制
御レジスタ内で拾われたビットのために、回復モードで
あることを請求する。また、メモリモジュール一次子上
の二重レール故障である場合もある。応答は:所有獲得
を行い、バックアップをソフトリセットし、それをオフ
ラインにおく。
【0107】〔CPU_ERR〕:TMRCタイムアウ
トビット 次のビットにより指示される。 CPU_ERR_TMRCaTMOR,CPU_ERR_T
MRCcTMOR,CPU_ERR_TMRCaTMOTO
S, CPU_ERR_TMRCcTMOTOS,CPU_E
RR_TMRCaTMOW,CPU_ERR_TMRCcT
MOW。
【0108】CPU_RSB_TMOで混乱しないよう
に、1又は2以上のCPUがタイムアウトであることを
指示し、これらのビットは、システムバスがメモリモジ
ュール14又は15の内の1つをタイムアウトにした理
由を記述する。これは、メモリモジュール上の自己チェ
ック論理の結果であり、割り込みエラーが検出されたた
めに、ボードを停止する。他には、メモリモジュールの
内部エラーのインジケータは存在しない。応答は:メモ
リモジュールをソフトリセットし、それをオフラインに
おく。
【0109】〔CPU_ERR〕:RSBエラー CPU_ERR_RSBa,CPU_ERR_RSBcビット
により指示される。応答は:CPU_ERR_RSBxビ
ットの両方又は一方がセットされると、対応するCPU
_RSBxレジスタを読み出し、下に示すように設定され
たビット上で活動する。
【0110】〔CPU_RSBx〕:データ採決エラー CPU_RSB_ANY又はCPU_RSB_CPUxビッ
トにより指示される。1つのCPUのデータが他のもの
とエラー比較される。データは、所有獲得、モジュール
現在DRF、システムバスパリティ信号であり得る。応
答は:CPUxをオフラインにおく。
【0111】〔CPU_RSBx〕:CPUタイムアウト CPU_RSB_ANY,CPU_RSB_TMO又はCP
U_RSB/CPUxビットで指示される。指示されたC
PUは、システムバス要求又は所有獲得を逃す(又は起
動する)唯一のものである。応答は:CPUxをオフラ
インにおく。
【0112】〔CPU_RSBX〕:データエラー CPU_RSB_ANY又はCPU_RSB_DATAビッ
トにより指示される。これはいくつかの故障で有り得
る。(1) 有効であるが欠落した(割り当てられない)大
域メモリへのアクセス;(2) 存在しない大域メモリへの
アクセス;(3) 大域メモリへの書き込み保護破壊;(4)
データやエラー(メモリからのデータ内のパリティエラ
ー)。応答は:TMRC_ERRを読み出し;TMRC_
ERR_ABSENTRAM,TMERC_ERR_NE
XIS_TRAM又はTMRC_ERR_WPVが何れも
がセットされていない場合にはデータエラーと仮定さ
れ、必要な場合には、所有獲得を実行し、故障メモリモ
ジュールをバックアップを作成し;バックアップをソフ
トリセットし;バックアップをオフラインにおく。
【0113】〔TMRC_ERR〕:組み込まれていな
い大域RAMへのアクセス TMRC_ERR_NEXISTRAMビットにより指示
される。応答は:局所RAM書き込み保護破壊に類似す
る活動を実行する。
【0114】〔TMRC_ERR〕:存在しない大域R
AMへのアクセス TMRC_ERR_ABSENTRAMビットにより指示
される。応答は:局所RAM書き込み保護破壊に対する
ものと類似の活動を実行する。
【0115】〔TMRC_ERR〕:大域RAM内の書
き込み保護破壊 TMRC_ERR_WPV又はTMRC_ERR_CPUビ
ットにより指示される。このエラーは、CPUアクセス
により、又は大域RAM内のVME主書き込みにより引
き起こされる可能性がある。TMRC_ERR_CPUは
どれが被告であるかを知らせる。試みられた書き込みの
アドレスは、TMRC_ERR_ADDR内でラッチされ
る。応答は:CPUが書き込みを起動すると、局所RA
M書込み保護破壊に対するものと類似の活動を実行す
る。そうでない場合には、主アクセス故障として処理す
る。
【0116】〔CPU_RSBx〕:バイパスエラー CPU_RSB_ANY,CPU_RSB_RIOB又はC
PU_RSB_DATAビットにより指示される。I/O
プロセッサが不良状態を戻すか、メモリモジュールがI
/Oプロセッサからのデータ読み出し上にパリティエラ
ーを検出した。問題は、メモリモジュールから、又はI
/Oプロセッサ上のI/Oバスインタフェース論理から
くい止めることが可能である。他の可能性としては、I
/Oバスを共有する別I/Oプロセッサが、I/O動作
の故障を引き起こすように故障した場合である。応答
は:システムバスがRIOB/IOPビットをセットす
ると、I/Oプロセッサを外す。そうでない場合には、
メモリモジュールがこれらのシステムバス状態ビットが
一次的なものではないことを示すと、所有を獲得し;他
のI/Oプロセッサを選択し;バイパス動作が成功する
と、I/Oプロセッサを不能化し;そうでない場合に
は、メモリモジュールをソフトリセットし、それをオフ
ラインにおく。
【0117】〔CPU_RSBx〕:バイパスタイムアウ
ト CPU_RSB_ANY,CPU_RSB_RIOB,CP
U_RSB_DATA又はCPU_RSB_TMOビットに
より指示される。I/Oプロセッサ26又は27がバイ
パス動作に応答しなかった。上述のように、問題は、メ
モリモジュール又はI/Oプロセッサ上のI/Oバスイ
ンタフェース論理により引き起こされる可能性がある。
応答は:両方のシステムバスがTIMEOUTビットセ
ットを示すと、I/Oプロセッサが外され、そうでない
場合には、メモリモジュールがこれらのシステムバス状
態ビットが一次的なものではないと示すと、所有獲得を
実行し;他のI/Oプロセッサを選択し;バイパス動作
が成功すると;I/Oプロセッサを不能化し、そうでな
い場合には、メモリモジュールをソフトリセットし、そ
れをオフラインにおく。
【0118】〔CPU_RSBx〕:RIOB及び1つの
CPU上のタイムアウト CPU_RSB_ANY,CPU_RSB_RIOB,CP
U_RSB_DATA,CPU_RSB_TMO又はCPU
_RSB_CPUxビットにより指示される。いくつかの
可能性がある。(1) CPUタイムアウトに伴うバイパス
エラー(上述);(2) 採決エラーでのバイパスタイムア
ウト(上述);(4) 個別にタイムアウトになったI/O
プロセッサ及びCPU。応答は:CPUxをオフライン
におき、動作を再試行し、単純な事例の内の1つが生じ
ることを期待する。
【0119】〔CPU_RSBx〕:二重レールエラー
(dual rail faults) 以下のビットにより指示される。 CPU_RSB_PRIDRF,CPU_RSB_HIGH
DRF,CPU_RSB_LOWDRF,CPU_RSB_
TIM1DRF,CPU_RSB_TIM0DRF,CPU
_RSB_CPUaONLDRF,CPU_RSB_CPUb
ONLDRF,CPU_RSB_CPUcONLDRF,
CPU_RSB_TMRCaONLDRF,CPU_RSB_
TMRCcONLDRF,CPU_RSB_REVDRF,
CPU_RSB_PRESDRF ビットCPU_RSB_PRESDRF(モジュール現在
二重レール故障)が故障した場合には、それが残りの全
てを分類するので、メモリモジュールからの二重レール
故障が宣言されることはない。応答:他のシステムバス
がここで二重レール故障を見つけたことに同意すると、
信号のソースを不能化し;そうでない場合には、メモリ
モジュールをソフトリセットし、それをオフラインにお
く。
【0120】〔CPU_ERR〕:ハードウェア所有変
更 CPU_ERR_TOSビットにより指示される。所有獲
得動作は、システムバスエラーに応答してハードウェア
によって強制される。CPU_ERR_RSBa又はCP
U_ERR_RSBcセットもまた見るべきである。応答
は:指示されたシステムバスに関してCPU_RSB状
態ビットで動作する。
【0121】〔CPU_ERR〕:設定ビットなし 応答は:メモリモジュールエラーをチェックする。
【0122】〔TRMC_CAUSE〕:内部TMRC
通信エラー 割り当てられたビットで指示する。エラーは、一次及び
バックアップTMRCの間の通信で検出される。応答
は:バックアップTMRCをソフトセットし、それをオ
フラインにおく。
【0123】〔TMRC_CAUSE〕:カウンタオー
バーフロー再生 割り当てられたビットで指示する。大域RAMは、再生
カウンタにより実行されるタイムアウト周期内では再生
されなかった。
【0124】〔TMRC_CAUSE〕:CPUモジュ
ール現在二重レール故障 割り当てられたビット(1ビット/CPU)により指示
される。1つのCPUからのモジュール現在信号内のエ
ラーである。応答は:指示されたCPUをオフラインに
する。
【0125】〔TMRC_CAUSE〕:RIOBタイ
ムアウト 割り当てられたビットにより指示される。I/Oバスア
ービター(arbiter)がバスを許諾の確認が決して取れ
ないI/Oプロセッサに対して許諾した場合。応答
は、:指示されたI/Oプロセッサを不能化する。前述
の副次的段落で示されたいくつかのビットは、次の意味
で用いられている。 CPU_RSB_ANY:他の7つのエラービットの内の
1以上がセットされた; aka "bit <6>" CPU_RSB_DATA:無効なデータが読み出された
か、データが正しく書き込まれない; aka "bit <6>" CPU_RSB_RIOB:IOP上のエラーか、RIO
Bインタフェース論理内のエラー; aka "bit <4>" CPU_RSB_TMO:RSB動作中に1以上のCPU
がタイムアウトになったか、バイパス動作上にRIOB
エラーがあった; aka "bit <3>" CPU_RSB_CPUa:CPUaがRSBエラー内で疑
われた; aka "bit <2>" CPU_RSB_CPUb:CPUbがRSBエラー内で疑
われた; aka "bit <1>" CPU_RSB_CPUc:CPUcがRSBエラー内で疑
われた; aka "bit <0>"
【0126】〔I/Oサブシステム故障検出、エラー回
復及び再組込み〕各I/Oプロセッサ26,27は自己
チェック型故障ファスト(fail-fast)制御器であり、
ハードウェア故障中のシステムのコアに対するリスクを
最小限に抑える。BIM29と組み合わされて、各I/
Oプロセッサ26,27は、エラーのあるVME制御器
30からCPU及びメモリサブシステムを保護する。C
PU/メモリサブシステム故障とは異なり、ソフトウェ
アは単独でI/Oプロセッサ26,27から回復し、か
かる故障から回復するために必要な冗長性を提供する能
力を有する。各種公知のI/Oプロセッサ26,27及
び制御器30の故障に関する回復手順を以下に説明す
る。ここでの目的は、図1乃至図8のI/Oサブシステ
ム内の故障の取り扱いを説明することである。I/Oサ
ブシステム内に故障が生じた場合に、一次的目標は、故
障の構成素子、すなわちI/Oプロセッサ26,27、
又はI/O制御器30、又はI/O装置148を識別
し、通常の動作が回復するように、それらをシステム構
成から除去することである。
【0127】以下の説明において、見出しは2つの部分
から構成されている。すなわち、レジスタ名とレジスタ
により記述可能なエラー条件である。レジスタ及びそれ
らのビットに関する名前は、CPU及びI/Oプロセッ
サ26,27ボード用のカーネルのC言語ヘッダファイ
ルから来ている。レジスタ内の適当なビットが「によっ
て指示される。」という語によってリストアップされ
る。すなわち副次的見出しである。ビットのリストには
通常はエラーの短い説明が付されている。さらに、すぐ
に行動が取られるにしろ、さらに情報が獲得されるにし
ろ、適当な応答又は手順の説明が続けられる。
【0128】〔I/Oプロセッサ回復戦略〕I/Oプロ
セッサ26,27が故障した場合に、カーネルはI/O
制御器30を、故障したIOP制御器26又は27をリ
セットする前に、他方の制御器26又は27用の他方の
バス28にI/O制御器30をスイッチする。制御器の
スイッチのプロセスを次ぎに示す: a) 良好なI/Oプロセッサ26又は27のバス28を
獲得する。 b) 故障したI/Oプロセッサに接続された各装置の識
別ルーチンを呼び出す。識別ルーチンは、最低限、制御
器30を調べ、それが応答したかどうかを見る。 c) 識別ルーチンが故障であれば、制御器30をオフラ
インにおく。それはスイッチ不能である。 d) 全ての制御器30をスイッチした後、バス28を解
放する。 e) 不良I/Oプロセッサのレジスタを良好なプロセッ
サのレジスタでマージする。全てのI/Oプロセッサレ
ジスタは、I/Oプロセッサが故障した場合に古い値が
有効になるように、局所メモリ内に複写される。 f) 不良I/Oプロセッサをリセットする。 g) 異常の種類がバスエラーであり、高順位割り込みで
ない場合には、バスエラーとされた割り込みはI/Oプ
ロセッサレジスタに対する書き込みである。ソースレジ
スタの内容を目標I/Oプロセッサレジスタ内の可能な
新しい値を反映するように変更し、最後の命令を再始動
する。
【0129】〔I/O制御器回復戦略〕:図1のシステ
ムのアーキテクチャは、複製されたI/O制御器30を
提供しない。ディスク鏡映のようなオペレーティングシ
ステムにより与えられる特徴によれば、I/O制御器3
0が故障した場合でも、システムの動作を継続させるこ
とが可能である。カーネルは、また、ハードウェア故障
(例えば、バスエラー、パリティエラー、アクセスエラ
ー)を検出し処理する装置ドライバとしても機能する。
さらに、装置ドライバは、I/O制御器30に関連する
ソフトウェア又はファームウェアを検出する能力を有す
る。幾つかの機能を下に示す。 1.iobuscopyin 及び iobuscopyout は、バスエラー、
パリティエラー、及びタイムアウトから装置ドライバを
保護する(そうでなければ、装置ドライバがこれらの事
象を検出する必要がある。それらは、また、I/Oプロ
セッサのハードウェアに対するドライバのインタフェー
スを単純化する。 2.subsciption はCPUに非同期なエラーに対して、
及び、iobuscopyin 及びiobuscopyout 機能のバイパス
を装置ドライバが選択した場合に、バスエラー、パリテ
ィエラー、及びタイムアウトに対して機能する。 3.recovery は制御器30が故障した場合に命令スト
リームを戻す技法である。 I/O制御器30が故障した場合には、オペレーティン
グシステムは制御器が提供する資源を失う。これらの資
源を用いるシステムの呼び出しは、資源がソフトウェア
に複製されていない限り、失敗する。ある実施例では、
ディスクドライバ148が、唯一のシステム内の複写さ
れた周辺装置である。他の実施例では、単一の故障I/
O制御器30がネットワーク上のシステムの有効性に衝
撃を与えないように、イーサネット(ethernet)などの
通信装置を複写する。
【0130】〔I/Oプロセッサハードウェアエラー異
常〕I/Oプロセッサ高順位割り込み、又はCPUバス
エラーにより指示される。一般的には、高順位割り込み
は、I/Oプロセッサが、エラーが現在のCPUに対し
て非同期に作用した判断したときに常に発生される。こ
の種のいくつかのエラーを下に示す。(1) 制御器30か
らのメモリボード14又は15への無効なアクセス;
(2) バス28上の無効なパリティ;(3) 制御器30から
の無効な要求。これらの事例では、最低限の回復が、I
/Oプロセッサハードウェアにより実行される。故障か
らの回復や故障した構成素子の指摘するための機能を開
始するのはカーネルの責任である。CPUがI/Oプロ
セッサ26又は27にアクセスしたり、I/O制御器3
0にアクセスしている場合には、I/Oプロセッサ又は
制御器の故障は、CPUボードに戻された不良状態のた
めである可能性がある。CPU11,12,13が不要
状態を受け取った場合には、バスエラートラップがプロ
セスにより発生される。この種のエラーのいくつかを挙
げる。(1) バス28上の無効パリティ;(2)存在しない
又は故障した制御器30;(3) 存在しない又は故障した
I/Oプロセッサ26又は27。
【0131】カーネルがI/Oプロセッサ又は制御器3
0の故障を検出する方法が、回復アルゴリズムを決定す
る。高順位割り込みが捕捉されると、カーネルは故障の
種類(I/Oプロセッサか制御器か)を決定し、故障し
た構成素子をオフラインにおく必要がある。この活動を
越えた回復は特殊な故障である。バスエラーが生じた場
合には、カーネルは、I/Oプロセッサレジスタに対す
る格納命令用の目標アドレスを調査しなければならな
い。目標アドレスは、バスエラー異常が生じた場合のバ
ス上のアドレスである。これは、バスエラーが生じた場
合に実行される命令を逆アセンブリすることにより獲得
される。I/Oプロセッサレジスタは、回復プロセスに
より修正可能であり、変更無しに書き込みが完了した場
合には、それは不正確にいくつかの重要ビットを破壊す
る可能性がある。
【0132】〔高順位割り込み〕TMRC_CAUSE_
IOP0HIGH,TMRC_CAUSE_IOP1HIG
Hビットにより指示される。高順位割り込みは、I/O
プロセッサが、自身お論理内にエラーを、又は制御器3
0から/への経路内にエラーを検出した場合に、発生さ
れる。応答は:メモリモジュール上の割り込みI/Oプ
ロセッサを選択し、I/Oプロセッサのハンドラを呼び
出す。I/Oプロセッサの割り込み誘引レジスタを読み
出す。メモリモジュールが読み出しをタイムアウトした
場合には、I/Oプロセッサ上の全ての制御器を他に移
動し、I/Oプロセッサを機能させる。I/Oプロセッ
サをリセットする。割り込みハンドラから出る。割り込
み誘引レジスタ内の各ビットをチェックし、それが活動
であれば、適当な故障ハンドラを呼び出す。割り込みハ
ンドラから出る。 〔IOP_IICAUSE〕:制御バスホグタイムアウ
ト IOP_IICAUSE_BUSHOGビットにより指示
される。制御器30が長時間バス28を保持し、I/O
プロセッサ26又は27により維持されたタイマが終了
される。応答は:識別されたスロットのバスホグエラー
のサブスクライバ(subscriber)を通知する。サブスク
ライバが存在しないか、サブスクライバが0を戻すと、
制御器30をオフラインにおく。サブスクライバが1を
戻すと、割り込みを消去する。
【0133】〔IOP_IICAUSE〕:水準2の故
障、サポートされていない要求 IOP_IICAUSE_LEVER2ビットにより指示
される。制御器30が、サポートされていない要求を備
えたI/Oプロセッサを提示する。それは無効なドレス
変更子、A16主アクセス、又はサポートされていない
A32アドレスである可能性がある。応答は:識別され
たスロットの水準2のサブスクライバ(subscriber)を
通知する。サブスクライバが存在しないか、サブスクラ
イバが0を戻すと、制御器30をオフラインにおく。サ
ブスクライバが1を戻すと、割り込みを消去する。
【0134】〔IOP_IICAUSE〕:アクセス妥
当性検査故障 IOP_IICAUSE_AVビットにより指示される。
制御器30が、CPUにより準備されていない物理アド
レスにアクセスを試みた場合。(制御器は、適当な読み
出し/書き込み許可を有していない、又はI/Oプロセ
ッサ上のアクセス妥当性検査RAM内にセットアップさ
れたスロット数を有していない。)応答は:アクセス妥
当性検査故障のサブスクライバを通知する。サブスクラ
イバが存在しないか、サブスクライバが0を戻すと、制
御器30をオフラインにおく。サブスクライバが1を戻
すと、割り込みを消去する。
【0135】〔IOP_IICAUSE〕:プロトコル
破壊 IOP_IICAUSE_PROTOビットにより指示さ
れる。制御器30が、バス信号の無効セットをI/Oプ
ロセッサに提示した場合。制御器30が故障している可
能性もある。応答は:識別されたスロットに関するプロ
トコル故障のサブスクライバを通知する。サブスクライ
バが存在しないか、サブスクライバが0を戻すと、制御
器30をオフラインにおく。サブスクライバが1を戻す
と、割り込みを消去する。
【0136】〔IOP_IICAUSE〕:パリティエ
ラー IOP_IICAUSE_VME_S_PARビットにより
識別される。I/Oプロセッサが制御器30からの不良
パリティを検出した場合。この場合には、制御器は動作
を実行し続けるが、データ、アドレス又は制御パリティ
が正確でない。応答は:識別されたスロットに関するパ
リティエラーのサブスクライバを通知する。サブスクラ
イバが存在しないか、サブスクライバが0を戻すと、制
御器30をオフラインにおく。サブスクライバが1を戻
すと、割り込みを消去する。
【0137】〔IOP_IICAUSE〕:I/Oバス
上の不良パリティ IOP_IICAUSE_RIOB0PAR又はIOP_I
ICAUSE_RIOB1PARで指示される。パリティ
エラーは、大域メモリ14又は15にアクセスした場合
に、I/Oプロセッサ26又は27により検出される。
両方のI/Oバス24及び25がエラーを提示した場合
には、I/Oプロセッサが故障である。一方のI/Oプ
ロセッサがエラーを提示した場合には、メモリモジュー
ル14又は15、I/Oバス、又はI/Oプロセッサが
故障している可能性がある。メモリモジュールは、それ
がデータを古くした場合に、オフラインにおかれる。さ
らにこの故障を切り離す時間は、後でスケジュールされ
る。応答は:両方のI/Oバスがパリティエラーを提示
した場合には、全ての制御器は他方のI/Oプロセッサ
にスイッチする。指示されたI/Oプロセッサをオフラ
インにおく。一方のI/Oバスのみがパリティエラーを
提示した場合には、指示されたメモリモジュールをオフ
ラインにおく。I/Oバスパリティエラーのサブスクラ
イバに通知する。
【0138】〔IOP_IICAUSE〕:I/Oバス
がI/Oプロセッサ要求をタイムアウト IOP_IICAUSE_RIOB0TIME又はIOP_
IICAUSE_RIOB1TIMEビットにより指示さ
れる。メモリモジュールはI/Oプロセッサ要求に応答
しなかった。両方のI/Oバスがタイムアウトの場合に
は、I/Oプロセッサが故障している可能性がある。一
方のI/Oバスのみがタイムアウトの場合には、メモリ
モジュール、I/Oバス又はI/Oプロセッサが故障し
ている可能性がある。メモリモジュールは、それがデー
タを古くした場合に、オフラインにおかれる。さらにこ
の故障を切り離すための時間が、後でスケジュールされ
る。応答は:両方のI/Oバスがパリティエラーを提示
した場合には、全ての制御器は他方のI/Oプロセッサ
にスイッチする。指示されたI/Oプロセッサをオフラ
インにおく。一方のI/Oバスのみがパリティエラーを
提示した場合には、指示されたメモリモジュールをオフ
ラインにおく。I/Oバスパリティエラーのサブスクラ
イバに通知する。
【0139】〔IOP_IICAUSE〕:I/Oプロ
セッサから戻されたメモリモジュールからの不良状態 IOP_IICAUSE_MEM0又はIOP_IICAU
SE_MEM1ビットにより指示される。存在しない大域
メモリへのアクセス、保護された大域メモリに対する書
き込み、又は大域メモリに対する動作上の不良パリティ
などにより、メモリモジュールはI/Oプロセッサに対
して不良状態を発生する。両方のメモリモジュールが不
良状態を戻すと、要求のソース、すなわち制御器30が
故障している可能性がある。一方のメモリモジュールが
不良状態を戻すと、メモリモジュール、I/Oバス、又
はI/Oプロセッサが故障している可能性がある。メモ
リモジュールは、それがデータを古くすると、オフライ
ンにおかれる。この故障を切り離す時間は、後にスケジ
ュールされる。応答は:両方のメモリモジュールが不良
状態を戻すと、I/Oプロセッサのエラーレジスタ及び
アクセス妥当性検査から故障制御器30のアクセスを決
定する。不良状態のサブスクライバに通知する。サブス
クライバが存在しないか、サブスクライバが0を戻す
と、制御器30をオフラインにおく。サブスクライバが
1を戻すと、割り込みを消去する。一方のメモリモジュ
ールが不良状態を戻すと、指示されたメモリモジュール
をオフラインにおく。不良状態のサブスクライバに通知
する。
【0140】〔IO_IICAUSE〕:I/Oバス許
諾タイムアウト IOP_IICAUSE_RIOBGTIMEビットによ
り指示される。I/Oバス許諾が、タイムアウト間隔の
前に受け取られなかった場合。I/OプロセッサがI/
Oバスを要求した時に、一次メモリモジュールが許諾信
号に応答しなかった場合。一メモリモジュール又はI/
Oバスが故障している可能性がある。応答は:タイムア
ウトのI/Oバスのサブスクライバに通知する。バック
アップメモリモジュールを一次する。
【0141】〔CPUバスエラー〕CPUがI/Oプロ
セッサ26,27上のレジスタ、又はバス28上の制御
器30にアクセスした場合に、カーネルはバスエラーを
受ける準備をしなければならない。I/Oプロセッサ
が、制御器30に対するアクセスをタイムアウトして、
いくつかの種類のエラーを検出すると、それは、メモリ
モジュール14又は15に戻される不良状態を発生す
る。I/Oプロセッサ誘引レジスタ内のビットは、エラ
ーを切り離すために用いることが可能である。メモリモ
ジュールはまたI/Oプロセッサをタイムアウトするこ
とが可能であり、その結果不良状態がCPUに戻され
る。バスエラーから回復するために、カーネルは、構成
の変更後、最後の命令を再実行するか、前に実行された
命令ストリームのいくつかの公知の地点に戻って実行を
行う必要がある。「公知の地点」は、スタック及びユー
ザのページが、再始動時に適当にマップされるように、
エラー条件として同じ脈絡の中に存在する必要がある。
【0142】〔CPU_RSBx〕:I/Oバス上のパリ
ティエラー CPU_RSBx_ANY,CPU_RSB_RIOB又は
CPU_RSB_DATAビットにより指示される。メモ
リモジュールはI/Oプロセッサからのデータ読み出し
上のパリティエラーを検出する。エラーが両方のI/O
バスインタフェース上で生じた場合には、I/Oプロセ
ッサが故障している。パリティエラーが一方のI/Oバ
スインタフェース上のみで報告された場合には、メモリ
モジュール、I/Oバス又はI/Oプロセッサの1つが
故障している。少なくとも、1つのメモリモジュールが
良好な状態を獲得できれば、バスエラーは発生されな
い。その代わりに、このエラーは割り込みを介して報告
される。応答は:パリティエラーが、両方のI/Oバス
インタフェースにより報告されると、故障IOPのサブ
スクライバに通知される。指示されたIOPがオフライ
ンにおかれる。パリティエラーが、I/Oバスインタフ
ェース上で報告されると、他方のI/Oプロセッサを調
べる。調査が失敗すると、指示されたメモリモジュール
をオフラインにおく。調査が成功すると、故障したIO
Pのサブスクライバに通知する。指示されたI/Oプロ
セッサをオフラインにおく。
【0143】〔CPU_RSBx,IOP_IICAUS
E,IOP_STS〕:パリティエラーが検出されたB
IM CPU_RSBx_ANY,CPU_RSB_RIOB,C
PU_RSB_DATA,IOP_IICAUSE_XFE
R及びIOS_STS_SYSFAILビットで指示され
る。BIM29は、I/Oプロセッサ26又は27から
不良パリティを検出し、制御器30をバス28から切り
離す。活動エラーは、別のエラー指示がBIMにより宣
言されることを除いて、バスタイムアウトと同一であ
る。制御器は、他方のI/Oプロセッサにスイッチされ
て、制御器を回復する。応答は:指示されたスロットに
関するパリティエラーのサブスクライバに通知する。サ
ブスクライバが存在しないか、サブスクライバが0を戻
すと、制御器30をオフラインにおく。サブスクライバ
が1を戻すと、バスエラー異常を出る。
【0144】〔CPU_RSBx,IOP_IICAUS
E〕:バスパリティエラー、マスタ状態マシン CPU_RSBx_ANY,CPU_RSB_RIOB,C
PU_RSB_DATA及びIOP_IICAUSE_M_
PARビットにより指示される。I/Oプロセッサは制
御器30から不良バスパリティを検出した。この場合に
は、CPUは、パリティエラーが制御器30からデータ
ライン上で検出された場合に、「読み出し」を実行す
る。応答は:指示されたスロットに関するパリティエラ
ーのサブスクライバに通知する。サブスクライバが存在
しないか、サブスクライバが0を戻すと、制御器30を
オフラインにおく。サブスクライバが1を戻すと、バス
エラー異常を出る。 〔CPU_RSBx,IOP_IICAUSE〕:VME
バスタイムアウト、制御器アクセスタイムアウト CPU_RSBx_ANY,CPU_RSB_RIOB,C
PU_RSB_DATA及びIOP_IICAUSE_XF
ERビットにより指示される。I/Oプロセッサが制御
器30に対する要求をタイムアウトするか、制御器がバ
スエラーで応答した場合。応答は:指示されたスロット
に関するパリティエラーのサブスクライバに通知する。
サブスクライバが存在しないか、サブスクライバが0を
戻すと、制御器30をオフラインにおく。サブスクライ
バが1を戻すと、バスエラー異常を出る。 〔CPU_RSBx,IOP_IICAUSE〕:I/O
バスI/Oプロセッサ選択パリティエラー CPU_RSBx_ANY,CPU_RSB_RIOB,C
PU_RSB_DATA,CPU_RSB_TMO及びIO
P_IICAUSE_RIOBIOSELビットにより指
示される。I/Oプロセッサは、CPUがVME制御器
30に対して通過バイパス動作を試みている場合に、メ
モリモジュールからI/Oプロセッサ選択ビット上の不
良パリティを検出した。応答は:他方のI/Oプロセッ
サ上のI/Oプロセッサ誘引レジスタを読み出す。他方
のI/Oプロセッサが選択ビット上でパリティエラーを
見つけると、一次メモリモジュールをバックアップにス
イッチする。バスエラー異常を出て、最後の命令を再試
行する。他方のI/Oプロセッサが選択ビット上にパリ
ティエラーを見つけないと、他方のI/Oプロセッサに
制御器をスイッチする。I/Oプロセッサをオフライン
におく。 〔メモリ及びCPUの再組込み〕図1乃至図13の故障
許容型コンピュータシステムは、システムのサービスを
全体的に損失させずに、コンポーネントの故障を検出
し、切り離すことが可能である。再組込みは、システム
を実行させながら、新しい又は故障したコンポーネント
(ボード)をシステムに付加するプロセスであり、故障
許容型システムとしての基本的な動作である。CPUボ
ード11,12,13及びメモリボード14及び15の
システムへの再組込みが以下に論じられる。再組込み
は、故障が切り離された直後に開始され、コンポーネン
トがオンラインに戻されるまで行われる。
【0145】故障のコンポーネントが検出されると、コ
ンポーネントがリセットされ、オフラインにおかれる。
コンポーネントをオンラインに戻すために、そのコンポ
ーネントの再組込みが必要とされる。再組込みは自動的
に行うことも可能であり、その場合には、オペレーティ
ングシステムは、ユーザによる仲介無しに故障したコン
ポーネントを再組込みすることを試みる。ユーザレベル
のプログラムの要求で、再組込みすることも可能であ
る。
【0146】再組込みプロセスは、再組込みするコンポ
ーネントの決定が行われた後に、行われる一連のステッ
プである。再組込みをプロセスを実行するためのコード
は、次の内の1つが診断されたの地に、システム状態を
回復する役割を負っている。(1) 不良CPU11,1
2,13、(2) 不良メモリボード14,15、(3) 不良
メモリページ。診断は、上述のような、個々のコンポー
ネントにより報告された状態情報に基づいて、エラー割
り込みサブシステムにより実行される。エラー割り込み
サブシステムは、活動がシステムを安全状態におくこと
が必要な場合に行われ、これは、通常は故障したコンポ
ーネントをオフラインにおき、リセットして、電源を落
とすことを意味する。
【0147】再組込みプロセスは、要約すれば、コンポ
ーネントが故障した場合に生じる一連の事象であり、次
のような行程を取る。 コンポーネントの故障を指示して割り込みが生じる:不
良CPU11,12又は13 不要メモリ14又は15(又は不良メモリページ) 不良CPUボード11,12又は13である場合:不良
CPUをオフラインにおき、リセットする 通常の動作は継続する オフラインCPUが電源オン自己試験を成功したことを
示すと:LMR(局所メモリ再組込み)ルーチン及び有
効ページビットマップに関する大域メモリ内のページを
割り当てる LMR複写手続に関する大域メモリ内のページを割り当
てる 有効ページのビットマップを構築する 状態をセーブするPROMと共有されるデータ構造を構
築する 全てのCPU11,12及び13をリセットする (ここでPROMコードをリセット後に制御器に戻す)
状態を回復する LMR:局所メモリ16内のかくページに関し有効ビッ
トが有効ページビットマップ内に設定されていると、D
MAページを大域メモリ内に確保されたページに複写す
る 予期される採決エラーを検索する DMAは局所メモリにページを複写し戻す エラー無しを検索する クリアする(LMRルーチン及びその大域ページから自
由になるように)完了し、通常の動作を継続する 不良メモリである場合:1つの不良ページであれば、そ
れを再マップする そうでなければ、メモリをオフラインにおき、状態を回
復する 全てのメモリページをそれらに複写する エラーがなければ、オンラインに戻る 図14は、故障について全てのモジュールを監視し、故
障モジュールをオフラインにおくプロセスを示してい
る。図15は、再組込みプロセスを示している。図14
では、ブロック171で示されている割り込みハンドラ
ルーチンが、ハードウェアの故障により生じたかどうか
割り込みを評価し;そうでない場合には、通常の割り込
み処理シーケンスに、ブロック172により示されるよ
うに、入り、そうである場合には、故障切り離しコード
に、ブロック173に示されるように、入る。故障切り
離しコードには、バスエラーが検出された場合にも、入
ることが可能である。この故障切り離しコードは、どの
コンポーネントがダウンしたかを、ブロック174に示
すように、決定する。図15に示すように、新しいコン
ポーネント(例えば、メモリモジュール14又は15の
ような)が挿入されると、ブロック175に示すよう
に、コンポーネントはそれに電源オン自己試験手続を行
う。故障であれば、コンポーネントのダウン状態が、再
びブロック176に示されるように入るが、それをパス
した場合には、再組込み状態に、ブロック177に示さ
れるように入る。再組込みが失敗すると、コンポーネン
トダウン状態に入り、成功すると、コンポーネントオン
ライン状態178に入る。
【0148】CPUは通常はCPUの通常状態にあり、
その場合には、CPUはオンライン上にあって、他のC
PUと同じ命令ストリームを処理する。CPUボード故
障状態のメッセージが届くと、カーネルは故障CPUを
リセットして、それをCPUデッド状態にする。CPU
がCPUデッド状態内でリセットから出る。リセットは
2つの残りのCPUにより採決されたソフトリセットの
結果であるか、又はボードがちょうど挿入された場合の
ハードリセットである。メモリボード14又は15上の
採決器100はオンライン上にないCPU11,12又
は13を無視する。残りのCPUは、デッドCPUが電
源オン自己試験の実行を試みている間に、通常の動作を
継続する。示された他の状態は、CPU−Reinta
ble状態であり、これは、予めリセットされたCPU
が、電源オン自己試験を通過したときに、自動的に入る
ものである。このCPUは、ユーザ要求が再組込みとさ
れるまで、この状態を保持する。
【0149】CPU再組込み手順には2つの大きな段階
がある。最初の段階は、オフラインのCPUが、3つ全
てが同じコードを実行する状態でオンラインに戻るよう
に、全てのCPU11,12及び13を再同期するもの
である。第2の段階は、局所メモリ16を回復、すなわ
ち、オフラインのCPU上の局所メモリ16の内容が、
他のCPU上の局所メモリ16の内容と同一であること
を保証するものである。
【0150】CPU再組込みで用いられるシーケンスは
次の通りである。 1.カーネルが割り込み優先順位を提起する。 2.カーネルがリセット準備のために完全なプロセッサ
状態をセーブする。 3.カーネルが、所望の戻りPC値をPROMに伝える
ためのデータ構造を構築する。 4.カーネルが全てのCPUをリセットする。 5.PROMがCPU及びコプロセッサレジスタを公知
の状態にする。 6.PROMが戻りPC値を検索しそれをジャンプす
る。 7.カーネルが完全なCPUボード状態を回復する。 CPUが故障の場合には、それは割り込みサブシステム
によりリセットされる。故障したCPUが電源オン自己
試験をパスすると、それは残りのCPUにより再組込み
する適格を有する。故障したCPUがオンラインに戻さ
れる前に、それは、正確に他のCPUと同期され、正確
に同じCPU周期を実行する必要がある。これを実行す
る技法は、全てのCPUをソフトリセットすることであ
る。これにより全てのCPUは、リセットベクトルに戻
され、PROM63内のコードがCPUと再同期され、
同様に電源オンリセットがされる。
【0151】システム活動中に再同期動作が生じるの
で、これは非常に繊細である。この目的のためにPRO
M63から実行されるコードは、電源オンリセットと再
同期とを識別する。電源オンリセットは全ての周辺機器
をリセットし、カーネルの現在の状態を破壊するメモリ
試験を実行するからである。
【0152】PROM63から実行される再組込みコー
ドはカーネル内の全てのオペレーティングシステムの従
属を保持する。PROMとの通信は、デー場ブロックを
介して行われ、固定物理メモリアドレスは: struct kernel_restart { ulong kr_magic; /*magic number */ ulong kr_pc; /*program counter to restart*/ ulong kr_pc; /*stack ponter */ ulong kr_checksum; /*checksum of above */ }; マジックナンバーとチェックサムは、戻りPCが有効で
あるかを検査するためにPROMコードによって用いら
れる。マジックナンバーは、再組込みし恋うの間でセッ
トされるだけである。戻りPCにジャンプする前に、P
ROM63から実行されるコードが全てのCPUを、全
てのCPU及びコプロセッサ46をゼロにすることを含
め、同一状態にする(さもなければ、ランダム値により
全てのCPUが採決時に承認されない)。
【0153】局所メモリ16は、CMAエンジン74を
用いることにより回復され、局所メモリ16の各部ロッ
クを大域メモリ14、15から複写して、再び戻す。こ
の複写戻しは、良好なメモリを不良なメモリに複写する
効果を有する。この技法は、システム構成の2つの特徴
に基づいている。第1に、局所メモリ16の内容は、C
PUのソフトリセットを越えて保存される。第2に、デ
ータのコンセンサスが用いられて、転送状態の終わり
に、どのCPUが採決を失敗したかを示す。
【0154】CPUの再同期ステップを実行する前に、
DMAページ複写操作を実行するルーチン自体が大域メ
モリに複写されて、CPU11,12,13が再同期ス
テップから戻ると、それらは大域メモリ14、15内で
この複写ルーチンを実行する。2つの良好なCPUが未
だに完全なカーネル及びデータ構造143,44を備え
ている。不良なCPUはその局所メモリ16内にランダ
ムな不良データ(いくつかの試験パターン)を備えてい
る。大域メモリへのDMAページ複写の後に、採決失敗
を示す採決器100内のエラーが、状態ライン33上で
期待さるが、これは、再同期されたCPUが再びオフラ
インにおかれることを意味しない。しかし、大域メモリ
から局所メモリ16への複写戻しの時に、エラーが問題
を指示する。
【0155】局所メモリ16の容量が大きな実施例にお
いては、かくページを複写するために必要な時間は許容
しがたいほど長くなるおそれがある。複写時間を減少さ
せるために、有効ページの数が、プロセスをスワッピン
グにより減ずることが可能である(ディスクであろうと
大域メモリであろうと)。これにより、再組込みの前後
でのシステムの応答時間に関して、複写されるべきペー
ジ数が減少される。
【0156】エラーがCPU再同期動作の間に生じる
と、全ての割り込みが、カーネルへの戻り実行の前にP
ROMコードによりマスクされる。一旦、完全なカーネ
ル状態が回復されると、割り込みの優先順位が下げられ
て、未決のエラー割り込みが通常の方法でサービスされ
る。局所メモリ16の回復の間、局所メモリがCPUの
多数上で完全なので、マスク不能割り込みへのフィール
ドが可能になる。これは、再組込みの中断及び不良CP
Uをオフラインに戻すことを含む。
【0157】局所メモリエラーが生じると、局所メモリ
の内容での差異が、大域メモリ14、15の間に採決エ
ラーとして採決器100で検出される。書き込みバッフ
ァ52が可能化の間に、採決故障が生じると、故障アド
レスを決定するための信頼すべき方法は存在せず、エラ
ーは致命的であると考えられ、CPUボードはリセット
される。故障アドレスが知られると、そのセルのみを回
復するための試みが行われる。回復が成功すると、ボー
ドはリセットされない。
【0158】パリティスクラバー(parity scrubber)
タスクが用いられて、採決故障を強制する。パリティス
クラバーは、非常に低い優先順位で実行し、局所メモリ
16から全てのページを大域メモリ14、15内のダミ
ーページに書き込む。3つの局所メモリ16の1つが逸
脱データを含む場合には、採決故障が検出される。パリ
ティスクラバーは、3つの全てのCPUがそれぞれ異な
るデータを含む能力を、ゼロに向かって駆動するに十分
な周波数で実行される。同じパリティスクラバータスク
が、大域メモリ内の逸脱データを検出するために、低い
順位で背景において実行される。
【0159】検出、切り離し、及びメモリモジュールを
オフラインにおくプロセスが図15に示されている。2
種類のメモリボード故障が示されている。メモリ内のあ
るページのみを指示するページ固有エラー(例えばパリ
ティ)は、メモリ内のあるページのみが故障しているこ
とを示し、一般的故障は、前部のボードが故障している
ことを示す。一般的な故障はメモリボードをリセット
し、ボードがオンラインに戻される前に、全ての斉藤行
を必要とする。ページ固有エラーは、ボードをオフライ
ンにおかずに処理可能である。
【0160】メモリボード14,15を「フェール・フ
ァスト(fail fast)」させたい場合がある。これは、
エラーが大域メモリ内に格納されたデータ内に存在する
場合に、それが短時間に検出され、データが長い間アク
セスされることはない。すなわち、潜在的な故障が強調
的に探索される。2つのカーネルレベルのタスクが用い
られて、メモリをフェール・ファストさせる。一次/バ
ックアップスワップタスクは一次及びバックアップメモ
リ14及び15の役割を交換して、これらのモードの1
つを特定するエラーが検出されることを保証する。パリ
ティスクラバータスクは、前述のように、大域メモリ内
の全てのページがCPUにより読み出され、潜在的なパ
リティエラーを強制することを保証する。
【0161】メモリ通常状態は、メモリボード14又は
15がオンラインにあり、市島他派バックアップとして
機能可能であることを意味する。RAM104の内容は
他のメモリボードの内容と同一である。一次/バックア
ップ及びパリティ/スクラバータスクが(低順位で)活
動する。メモリオフライン状態は、メモリボードがリセ
ットから戻った状態である。このリセットはボードが動
作している場合にはソフトリセットであり、ボードがち
ょうど挿入された場合にはハードリセットである。一次
/バックアップ及びパリティ/スクラバータスクがター
ンオフされる。それらが1つのメモリをクラッシュする
ことに成功し、他方をクラッシュから防止することが必
要だからである。メモリボードが、ユーザの要求により
回復状態に入り、再組込みを開始する。この回復状態
は、書き込みのみリムボー(limbo)状態であり、そこ
ではメモリが再組込みの準備をする。回復状態のメモリ
ボードは、全ての書き込み動作を期待しており、それが
オンラインにあっても書き込みエラーチェックを行う
が、読み出しの間にエラーチェックをすることは期待さ
れず、また実行しない。
【0162】メモリボード14又は15が回復状態にお
かれていない時点で、そのRAM104は完全に起動さ
れてはいない。それがオンラインに戻される前に、回復
メモリには良好なメモリボードと同じデータが正確に含
まれている必要がある。再組込み手続には2つのパスが
必要である。これらのパスのそれぞれは、メモリの各ペ
ージをそれ自体に複写することを含み、それは良好なメ
モリから読み出し、両方に書き戻し、従って良好なボー
ド14又は15から回復ボードへとメモリの全てが複写
される効果を有する。第1のパスの固有な目的は、第2
のパスが信頼を持って手続をすることができるように、
メモリ内の各位置に有効なパリティを付与することであ
る。メモリボードは、このステップの間、I/Oバス2
4及び25には見えない。再組込みされるメモリボード
14又は15は、常に良好な状態を、この第1のステッ
プの間ライン33を介してCPUに戻す。第2のパスは
再組込みステップであり、その間に、CPU及びI/O
バス24及び25が両方のメモリボード14及び15を
書き込む。いかなるパリティエラーも真のエラーを指示
する。
【0163】大域メモリ14及び15の寸法次第で、2
つの再組込みパスを実行するために必要な総時間は相当
なものになる。ユーザは、全てのCPU資源の内のどれ
だけが、所定の時間周期にわたって再組込みパスに捧げ
られているかを特定できる。実際のページ複写は、高い
順位にセットされた優先順位及びI/Oバス24及び2
5の排他的所有を備えているカーネルにより行われる。
優先順位は、データが書き戻される前に、割り込みルー
チンがデータを変更しないように提起される。I/Oバ
ス24及び25からのアクセスは、データが書き戻され
る前に、I/Oプロセッサ26、27がデータを変更し
ないようにロックされる。所与のページに関する書き込
み保護ビットは、ページが複写されている間、不能化さ
れている必要がある。ページ複写は、システムが使用さ
れていない時、及びメモリ再組込み政策の選択時にユー
ザにより特定される間隔の間は常に実行される。ブロッ
ク寸法は選択可能であり、例えば、CPUが他のタスク
のために放棄される前に転送される128,1024又
は4096バイトとすることができる。さらにブロック
間の間隔が選択されて、他のタスクに対する再組込みタ
スクの割合が定義される。
【0164】ページ特定エラーが生じた場合には、所定
セットの試行が、他のメモリからページを再書き込みす
ることによりページを回復するためになされる。ソフト
エラーに関してはこれが問題を訂正する。試行が成功と
看做される前に、メモリが一次にされて、ページが試験
される。再試行がメモリを失敗した場合には、メモリボ
ードがリセットされ、再組込みされる必要がある。
【0165】〔電源異常/自動再始動〕本発明の別の特
徴によれば、上記に説明したシステムには、電源異常に
際してシステムを規則正しい仕方で遮断し、電源が回復
した場合にシステムを自動的に再始動させるための、電
源異常及び自動再始動手順が備わっている。この電源異
常/自動再始動手順は、交流電力の喪失に関して、図1
のシステムにあるレベルの透過性を与える。この透過性
は、ファイルシステム、アプリケーションプロセス、及
びハードウェア装置に対して与えられる。その意図する
ところは、システムが電源異常の後に、あたかも電源異
常が生じなかったかのようにして動作を再開するという
ことである。電源異常/自動再始動手順は、システムが
穏やかに静止しまた再始動する機構を提供する。
【0166】電源異常/自動再始動手順は、全てのアプ
リケーションについて、状態を保管し、電力が回復した
場合に復元することを可能ならしめる。前述したよう
に、この手順はバッテリバックアップ162,163を
必要とし、それによって状態を保管しながら規則正しく
遮断することを実行するのに要する時間の間、システム
に電力を供給する。省略時解釈により、アプリケーショ
ンはシステムに対する電力の喪失を認識しない。基本状
態を保管し、後に電力回復に際して復元することができ
るように、アプリケーションは、電源異常/自動再始動
手順から通知を受け取るように構成されねばならない。
このように構成されたアプリケーションは、電力喪失に
対する透過性レベルを増大し、既に説明した待ち時間不
透過性から回復し得る。
【0167】図16を参照すると、遮断及び再始動手順
の時系列が図示されている。CPU11,12及び13
は時間171の間、正常の動作で命令ストリームを実行
しており、交流電源異常は時間172で生ずる。この電
源異常は割り込みの形で保守プロセッサ170からCP
U11,12及び13へと合図されるが、遮断は直ちに
は開始されない。代わりに、過渡現象を除外するために
インターバル173にわたって時間遅れが導入され、そ
の後時間174においてこれらのCPUにより、電源異
常信号が発生される。遮断プロセスは期間175にわた
って継続し、時間176で完了する。この期間の間に交
流電力が回復したならば、再始動手順が時間176にお
いて直ちに開始される。後述するように、再始動手順は
期間177にわたって継続し、時間178で完了する。
正常の動作が時間179で継続し、遮断前の時間171
の間でのようにして命令ストリームを実行する。
【0168】図13の電源回路の保守プロセッサ170
が電源異常を感知すると、CPU11,12及び13
は、オペレーティングシステムによって処理される割り
込みを受け取る。これは「電源異常表示」の時間172
に起こるが、遮断手順は「電源異常確認」時間174ま
で開始されない。過渡的な電源異常を除外するために、
CPUは遮断へと進む前に特定のインターバル173だ
け待つ。この待ち時間即ちインターバル173の間に、
システムは正常に機能し、命令ストリームを時間171
におけるようにして実行する。電源異常が続くようであ
れば、オペレーティングシステムは電源異常を確認し、
遮断手順へと進む。
【0169】遮断手順は、電源異常確認の時間174か
ら、バッテリー162及び163の動作がもはや当てに
できなくなる時間までの間の期間により規定されるが、
これは上述した例では4−1/2分である。即ち遮断時
間は4−1/2分より長くてはならず、またずっと短く
あるべきである。その長さは、不揮発性メモリへと複写
すべき揮発性メモリの量と、その時点で状態を保管せね
ばならない実行中のプロセスの数とに依存している。こ
の遮断期間175の間、起動されているプロセス及びデ
バイスドライバには、遮断が差し迫っているという警告
が与えられ、それらが必要な何らかの準備を行うことが
できるようにされる。その場合、プロセスの実行は中断
され、デバイスコントローラの状態は保管される。シス
テムの状態の保管に関与しないデバイス(例えばディス
プレイなど)は、時間174の後にできるだけ早く電力
を落とされ、バッテリー電源162及び163の電力消
費が最小限とされる。カーネル、プロセス及びデバイス
ドライバの揮発性の状態は、不揮発性記憶装置、例えば
ディスク148に保管される。最後に、バッテリー電源
162及び163にはターンオフメッセージが送られ
る。
【0170】例えば時間176で電力が回復されている
と、システムは正規のものとは異なるブートシーケンス
を開始する。正規のブート手順が自動的に開始され、少
し後の段階でブートローダが不揮発性記憶装置の電源異
常情報をチェックしてそれが正規のブートか電源異常再
始動かを判断するまで継続される。電源異常再始動の場
合には、オペレーティングシステムの新たなコピーを再
ロードするのではなしに、基本システム状態が不揮発性
記憶装置から復元される。プロセス及びデバイスドライ
バには、それらの特定のアプリケーションや動作を再始
動するために必要な何らかの手順を実行する機会が与え
られる。
【0171】「基本システム状態」又は「基本システム
イメージ」(これらの用語は互換的に用いられる)は、
カーネル、ユーザプロセス、及びハードウェア装置の揮
発性の状態からなる。この基本システム状態は、電源異
常遮断の間にディスク148へと書き込まれる。より正
確には、基本システム状態の一部がディスクへと書き込
まれる。基本システム状態の残りは既にディスク上にあ
り、それゆえに書く必要はない。例えばスワップファイ
ルは、ページアウトされたプロセスの実行可能なイメー
ジの部分を含んでいる。また開かれたファイル用の幾つ
かのファイルバッファは、既にディスクへとフラッシュ
されている。
【0172】遮断/再始動サイクルの発生は、多くのア
プリケーションに対しては透過性であるが、他のものに
ついてはそうではない。例えばデータ通信セッションが
遮断の時点で設定されていた場合、このセッションが遮
断/再始動サイクルを乗り切るということは非常に考え
にくい。セッションはおそらく時間切れとなり、再設定
することが必要となる。通信コントローラは、通信セッ
ションを再設定するためには、何らかの高次層のソフト
ウェアに頼る必要がある。電源異常/自動再始動手順
は、この高次層のソフトウェアがこのレベルの回復を行
う機会を与える。ルータ、パケットその他の喪失を取り
扱う通信プロトコルには、ある程度の頑強さが元来備わ
っている。遮断/再始動サイクルが顧客に透過性のもの
でなければならない場合には、アプリケーションはこの
頑強さを増強する必要がある。何らかの仕方で多重プロ
セッサにまたがって分散されるどのようなアプリケーシ
ョンも、ユーザに対してかかる透過性をもたらすために
は、電源異常/自動再始動手順を利用せねばならない。
【0173】遮断/再始動サイクルの発生は、局地の装
置に直接に装着されたデバイスについてさえ透過性では
ない。例えば巻き戻しをしているテープユニットは、動
作が打ち切られるであろう。この動作をリクエストした
プロセスは、そのとき動作故障エラーを受け取る。一般
に遮断/再始動サイクルは、遮断手順の時間的インター
バル175の間にわたって付勢され利用可能なものでな
いどのようなデバイス(又はそのデバイスを使用してい
るプロセス)についても透過性でない。
【0174】ファイルシステム状態 Unixに組み込まれ大きくキャッシュされたコピーバ
ックファイルシステムは通例、電源異常その他によるシ
ステム遮断の存在下では、データの完全性の欠如を示す
ことが予想される。電源異常/自動再始動手順の特徴
は、メモリ内データ(局所メモリ16及び大域メモリ1
4,15内)をディスク148上の対応するイメージと
同期させることによって、この特徴的な弱点を最小限に
するものである。
【0175】電源異常/自動再始動手順はこのタスクを
2つの方法で達成する。時間174において電源異常が
確認されると、電源異常遮断手順の時間175の間には
さらなる遅延書き込みは許されないが、勿論その時点で
係属している正規の動作期間171からの遅延書き込み
は実行される。「遅延」書き込みは、不定の期間の間だ
けメモリに保持されているアプリケーションにより発生
されるディスク書き込みオペレーションであり、実際に
存在するよりも高性能なファイルシステムとしての外観
をもたらすものである。全てのアプリケーション書き込
みはディスクへと強制されるため、ファイルシステムは
同期状態に保たれる。
【0176】電源異常確認の時点174においてはま
た、全ての係属中の遅延書き込みオペレーションを直ち
に発生することによって、ファイルシステムはディスク
に同期される。かくして、システムが穏やかに静止する
に際してファイルシステムは同期状態に保たれ、デバイ
ス及びプロセスに対しては期間175の間に通知がなさ
れる。
【0177】ファイルシステムと電源異常/自動再始動
手順の間の相互作用には、汚れたファイルシステムバッ
ファが関与する。電源異常/自動再始動手順は、システ
ム管理者によって選択されたカーネルパラメータの設定
とは無関係に、ファイルシステムの完全性を確保する。
【0178】遮断手順の間、ファイルシステムの汚れた
バッファはファイルシステムに保管される。実際上、電
源異常確認の時点174において、ルーチンに対して呼
び出しが行われ、ファイルシステムの同期が開始され
る。この呼び出しの後、全ての遅延書き込みは強制的に
非同期書き込みとされる。後に、遮断手順は遅延して、
全ての汚れたブロックが基本システムイメージの書き込
みに先立って確実にフラッシュされるようにする。「遅
延書き込み」とは、ファイルシステムが何らかの空のブ
ロックを必要とするまでディスクにはブロックが書き込
まれず、この汚れたブロックが選択される書き込みのこ
とである。また、全ての汚れたブロックをフラッシュす
るために、定期的なファイルシステムの「同期」がオペ
レーティングシステムによって行われる。「非同期書き
込み」とは、ディスクドライバへと書き込みが直ちに発
生されるものである。「非同期」という用語である理由
は、オペレーティングシステムがリクエストを出すが、
その完了を待たないということにある。
【0179】この「同時性」を実行するのに要する時間
はバッテリー162又は163がサポートする期間より
も長くなり得るが、それは回避されるべき状況である。
そのために、ディスク装置のドライバは、所定のディス
ク上でのバッファ間のシーク時間がそのディスクについ
ての平均シーク時間に近づかないことを確実にするため
のヘッドスケジューリングアルゴリズムを用いる。これ
は、ディスク上の位置によってバッファ書き込みを順番
に順序付けることによって達成され得る。
【0180】〔プロセス状態〕電源異常/自動再始動手
順は、UNIX信号を介して電源遮断の存在及び進行に
関してプロセスに通知する。この目的のためには、特に
SIGPWR信号が利用される。電源異常/自動再始動
手順はこの信号の概念を、プロセスへと伝達される「コ
ード」を含むように拡張している。Unixプロセスは
通常、特別な信号が伝達されたことを示す信号の番号の
みを受け取る。
【0181】図16を参照すると、時間171の間に実
行しているUnixプロセスは、2つの方法のうち1つ
で構成され得る。即ち「電源異常時キル」か若しくはそ
うでないかである。各々のプロセスは「電源異常時キ
ル」属性を有し、これは設定されると、電源異常遮断処
理期間175の間に送られた信号を変更する。「電源異
常時キル」とマークされたプロセスは、遮断に役立つこ
とを意図するものではないが、かかるプロセスはそのキ
ル前にクリーンアップオペレーションを行い得る。
【0182】またプロセスは省略時解釈によって、SI
GPWR信号を無視するように構成されている。このよ
うなプロセスは、「電源異常時キル」属性が設定されな
ければ、電源異常が生じたことを知ることはない。
【0183】時間174において電源異常が確認された
後、全てのプロセスには時間181において信号が送ら
れる。「電源異常時キル」とマークされたプロセスは、
SIGTERM信号をPFQUIESCEコードと共に
受け取る。他のプロセスにはSIGPWR信号が、PF
QUIESCEコードと共に送られる。いくつかのプロ
セスはこれらの信号を無視することができる。これらの
信号を無視しないプロセスは、手持ちの特定のアプリケ
ーションにとって必要とされる何らかのクリーンアップ
動作を行うことができることに注意すべきである。
【0184】管理者が構成可能なインターバルの後、
「電源異常時キル」用にマークされたプロセスには、時
間182においてSIGKILL信号が送られるが、こ
れは無視することができない。他の全てのプロセスは、
実行が停止される。
【0185】時間183の間には、全てのプロセスのメ
モリイメージが非揮発性記憶装置に保管される。電源異
常/自動再始動の特定の実施形態においては、この非揮
発性記憶装置はディスク148である。従って、局所メ
モリ又は大域メモリ内のメモリイメージは、ディスク1
48に書き込まれる。他の実施形態においては、メモリ
ボード14及び15、又は図示しない補助メモリボード
にバッテリーが後置されていて、かくして非揮発性記憶
装置を構成する。
【0186】再始動処理の時間176の後に電力が回復
した際、プロセスのメモリイメージは期間177の間に
復元される。プロセスはSIGPWR信号を、電源異常
の回復が完了したことを示すPFRESTARTコード
と共に受け取る。プロセスが遮断中に保管された情報を
再始動又は復元することが必要な場合には、プロセスは
これをそのときに行い得る。
【0187】かくして、プロセスは電源異常/自動再始
動手順と選択的に相互作用することができる。省略時解
釈によって、プロセスは遮断/再始動サイクルが生じた
ことを知らない。しかしながら、プロセスは遮断及び/
又は再始動の何れかが生じたことをそれ自体で知るよう
にできる。ここで参照しているプロセスとは一般にユー
ザプロセスであり、システムプロセスではない。システ
ムプロセスはInitを除き、何等特別の電源異常/自
動再始動ハンドリングを受け取らない。Initは、S
IGPWR信号を受け取ると、/etc/pfshut
downまたは/etc/pfrestartシェルス
クリプト或いは再始動のそれぞれを実行する。他のシス
テムプロセスは信号を受け取らない。
【0188】システム管理者は、「再始動時再開」又は
「再始動時再ブート」の何れが選択されるかとは無関係
に、遮断の間にキルすべき特定のプロセスを選択してよ
い。「再始動時再ブート」が選択された場合には、全て
のプロセスには省略時解釈により、「電源異常時キル」
とマークされる。「電源異常時キル」特性のディスポジ
ションに基づき、プロセスは2つの論理パスの1つを通
る。電源異常が確認された後、「電源異常時キル」とマ
ークされたプロセスは、SIGTERM信号を受け取
る。そのようにマークされていないプロセスは、SIG
PWR信号を受け取る。信号ハンドラは、信号の数、コ
ード、及びsigcontext構造へのポインタとい
う、3つのパラメータを受け入れる。
【0189】電源異常時キル用にマークされていないプ
ロセスについて先ず最初に考える。これらのプロセスは
SIGPWR信号を受け取り、「電源異常時キル」とマ
ークされていない。SIGPWR信号のハンドラは、こ
の時点でプロセスに特有な何らかの手順を実行する。コ
ードはPFQUIESCEに設定され、このSIGPW
R信号の伝達を、再始動手順の間に行われるそれとは区
別する。プロセスがそのプロセス特有の手順を完了した
ならば、休止ユーティリティを呼び出すことによって、
プロセスはさらなる実行を中断する。このプロセスは次
いで、再始動手順の間にPFRESTARTコードと共
にSIGPWR信号が伝達された場合に、休止から復帰
して実行を再開する。
【0190】SIGPWRハンドラが実行を許された
後、実行可能な全てのプロセスは、それらを実行待ち行
列から外すことによって中断される(実際上は、プロセ
スは実行待ち行列に残されてもよいが、スケジューラは
どのプロセスもそれ以上実行するようにスケジュールし
ない)。何らかの事象待ちを中断したプロセスは既に実
行可能な状態を離れているから、これも勿論実行に関し
て考慮されはしない。強制的に中断されたプロセスは、
プロセスがそれらの実行中に生ずるクロック割り込みを
知らないのと同じように、それらの実行を中断し又は再
開するためにカーネルによって用いられたメカニズムを
知ることはない。
【0191】今度は電源異常時キル用にマークされたプ
ロセスについて考える。即ちSIGTERM信号をPF
QUIESCEコードと共に受け取り、「電源異常時キ
ル」とマークされているものである。PFQUIESC
Eコードは、その信号の伝達が電源異常に関連してお
り、他の何らかのソースに関するものでないことをプロ
セスに知らせる。そのようなプロセスが直接的に行うこ
とは、クリーンアップしてキルすることである。SIG
TERMハンドラが実行を許された後、SIGKILL
信号が全てのそのようなプロセスへと送られる。
【0192】次に再始動手順177の間における処理を
考えると、「再始動時再開」タイプのもののみが適用可
能である。「再始動時再ブート」が選択された場合には
勿論、遮断の間に存在していたプロセスは存在しない。
なぜならシステムには、オペレーティングシステムの新
たなコピーが再ブートされるからである。
【0193】再始動手順の間に、全てのプロセスはま
た、SIGPWR信号を受け取る。全てのユーザプロセ
スへとSIGPWR信号が伝達される前に、管理者が構
成可能な期間にわたって、/etc/pfrestar
tスクリプトが実行される。/etc/pfresta
rtスクリプトの実行メカニズムは、SIGPWR信号
をPFRESTARTコードと共に伝達することであ
る。SIGPWRハンドラはPFRESTARTコード
を受け取るが、これは遮断に際して伝達されたSIGP
WR信号を再始動時に伝達されるそれと区別するために
用いられる。再始動に際して、ハンドラは手持ちのアプ
リケーションに適切とされる動作を開始することができ
る。これには、端末スクリーンをリフレッシュさせるこ
とや、進行中であった何らかのデータベーストランザク
ションを巻き戻すことなどが含まれる。
【0194】〔Initプロセスハンドリング〕Uni
xの「init」プロセスは、電源異常及び遮断手順の
間に特別なハンドリングを受ける。Initは、「/e
tc/inittab」ファイルを走査し、SIGPW
R信号をPFQUIESCEコード及びPFRESTA
RTコードのそれぞれと共に受け取ると(時間181の
直前に)、POWERFAIL又はPOWERWAIT
動作を実行するように構成されている。管理者はこの手
法で、手持ちの特定のアプリケーションについて遮断又
は再始動を調整するのに役立つシェルスクリプトを構成
することができる。
【0195】initプロセスは、遮断手順又は再始動
手順の間の何れでも、すべての他のプロセスに先立ち、
管理者が構成可能なインターバルにおいて、SIGPW
R信号を受け取る。このことはシェルスクリプトが、他
のプロセスが信号を受け取るにつれて生ずる付加的なク
リーンアップ動作によって悪影響を受けるであろう機能
を行うことを可能なものとする。
【0196】〔デバイス状態〕プロセスと同様に、I/
Oプロセッサ26及び27のようなデバイスにも、状態
を保管し復元する機会が与えられる。デバイスの状態
は、プロセスの状態と同じように、電源異常再始動の間
に復元するように非揮発性記憶装置148に保管され
る。しかしながらデバイスは、遮断又は再始動の進行の
通知について、より高度な細分性を受ける。各々のデバ
イスは、「電源異常ルーチン」を備えて構成されてい
る。このルーチンは、行うべき作動を知らせる各種のコ
ードで呼び出される。
【0197】電源異常確認の時点174において、デバ
イスの電源異常ルーチンは、図16のPFCONFIR
Mコードで呼び出される。そのデバイスは、適切な何ら
かの動作を行うものである。
【0198】プロセスの実行が停止され、又は「電源異
常時キル」プロセスがキルされた後、デバイスは時間1
84において、PFHALTコードで呼び出される。こ
のコードは、プロセスの実行が停止されたことを示す。
特にディスクドライバは、それ以上の読み出しを処理す
る必要がないことを知る。進行中の全ての読み出しは、
再始動手順の間に再開するため、待ち行列とされ得る。
【0199】次いでデバイスの電源異常ルーチンが、時
間185においてPFQUIESCEコードで呼び出さ
れる。デバイスはこのルーチン呼び出しから、保管され
るべき状態の大きさをバイト単位で返却する。電源異常
/自動再始動手順は次に、その特定のデバイスについて
のこの大きさに等しいスペースが非揮発性記憶装置に確
実に予約されているようにする。
【0200】次の呼び出しはPFDUMPコードと、前
節で述べたようにして予約された保管領域のアドレスで
ある引き数とにより行われる。このデバイスは、その状
態情報を保管領域へと再複写する責任を持つ。次いで電
源異常/自動再始動手順が、このデータの安全を保証す
る。
【0201】電力が回復した場合、デバイスドライバ
は、通常のブートシーケンスの間に受け取った標準のデ
バイス識別呼び出しを受け取る。電源異常/自動再始動
手順は、このルーチンから受け取った情報を用いて、電
力停止中にハードウェア装置の構成に変更がないことを
確認する。
【0202】デバイスの電源異常ルーチンは、PFIN
ITコードで呼び出される。この呼び出しはディスクド
ライバに対して、そのディスク上に保管されている基本
システム状態の一部を復元するために、それが何らかの
必須の初期設定を行わねばならないことを通知すること
を意図するものである。
【0203】次いで各々のデバイスについて順次、非揮
発的に保管されたデバイスの状態がメモリバッファへと
導入され、そしてデバイスの電源異常ルーチンはPFR
ESTOREコードとメモリバッファのアドレスの引き
数で呼び出される。
【0204】最後にデバイスの電源異常ルーチンは、デ
バイスが正規の動作を開始してもよいことを示すPFR
ESTARTの引き数で呼び出される。
【0205】かくしてデバイスドライバは、プロセスと
同様に、遮断/再始動サイクル期間にわたって保管され
る必要のある状態を有し得る。これはインテリジェント
コントローラについて、より該当しそうなことである。
プロセスと同様に、電源異常/自動再始動手順は各々の
コントローラが、遮断/再始動に選択的に反応すること
を可能ならしめる。
【0206】物理的なデバイスを制御するデバイスドラ
イバは、電源異常ルーチンを持たねばならない。遮断/
再始動に関するカーネルとデバイスドライバの間の通信
は、このルーチンを呼び出すことによって行われる。非
揮発性記憶装置に対する書き込みの最適なスケジューリ
ングをもたらすために、ファイルシステムバッファプー
ルのフラッシング、カーネルメモリの保管、及びデバイ
スの状態の保管のためにデバイスドライバをステージす
る努力が払われる。
【0207】電源異常確認の時点174において、各々
のデバイスのドライバの電源異常ルーチンは、PFCO
NFIRMというコマンドパラメータで呼び出される。
これはドライバに対し、遮断に備えねばならないという
知らせを与えるものである。例えばインテリジェントネ
ットワークコントローラ(セッション層のコードを含
む)はこの知らせを用いて、新たな接続を拒絶しなが
ら、係属中の接続を打ち切り、又はやや穏やかに閉じ
る。
【0208】全てのプロセスの実行が中断された場合、
各デバイスのドライバの電源異常ルーチンには、時間1
84においてPFHALTのコマンドパラメータでもっ
て、別の呼び出しが行われる。この呼び出しの目的は、
それ以上の読み出しが行われないことをディスクドライ
バに知らせることである。全ての係属中の読み出しは、
再始動手順まで中断される。PFHALTはディスクド
ライバについてだけ意味があり、全ての他のドライバも
これを受け取るが、何も動作を行う必要はない。
【0209】次いで時間185において、PFQUIE
SCEパラメータを用いて、デバイスの電源異常ルーチ
ンへと第3の呼び出しが行われる。この呼び出しの目的
は、そのデバイスによって実行された全てのクリーンア
ップ動作が完了しており、そのような動作をそれ以上試
みないよう指示することにある。実際上、デバイスは次
節に記載するダンプ動作を行う場合を除き、カーネル/
ユーザメモリを変更すべきではない。例えばPFQUI
ESCEの後は、kern malloc又はkern
freeに対する呼び出しは行うべきでない。これは、
基本システムイメージがPFDEVに、つまり基本シス
テム用の非揮発性記憶領域に書き込まれているからであ
る。この呼び出しからの返却値は、PFDEV内へと保
管された基本システム状態にあるこのデバイスのために
割り当てられるべき保管領域の大きさの指示である。返
却値がゼロであれば、それは保管領域が必要ないことを
示す。
【0210】この時点でI/Oプロセッサの状態も保管
され、アクセス妥当性検査ラム(AVRAM)において
表される如きデバイスの状態が適切に捕捉できる。この
AVRAMの状態は、基本システム状態の一部として、
PFDEVに書き込まれる。最後に、そのデバイスのド
ライバから領域保管がリクエストされた場合、第4の呼
び出しが電源異常へと、PFDUMPパラメータと、デ
バイスの状態をダンプすべき保管領域のアドレスの引き
数パラメータでもって行われる(PFQUIESCE呼
び出しによってリクエストされた如く)。この場合にそ
のデバイスドライバは、この呼び出しから復帰する前に
その状態情報を保管領域へと複写する責任がある。保管
領域にある情報の書式は、この領域を識別するためにカ
ーネルによって保持されているオーバヘッド情報の他
は、デバイスに特有のものであってカーネルによって規
定されたものではない。PFDEVによってエイリアス
された電源異常区画を含まないデバイス用のドライバ
は、PFDUMP呼び出しの完了に続いてそのデバイス
の電力を落とすべきである。
【0211】ディスクドライバは、PFDEVにデバイ
スダンプを書き込むよう用いられる。従って、ディスク
ドライバはそれ自身の状態をダンプすることはできな
い。なぜならこの状態は、ディスクが最初に読み出され
得るように、ディスクから読み出され回復される必要が
あるからである。ディスクドライバは、その重大な役割
の故に、遮断の間に特別に処理されねばならず、また再
始動されねばならない。ある種のデバイスドライバは、
「再始動時再開」又は「再始動時再ブート」という2つ
のタイプの遮断手順が生じ得る特別な場合を作ることを
要するであろう。再始動のタイプが「再始動時再ブー
ト」である場合には、デバイスダンプが実際にディスク
に書き込まれることはない。なぜならこの状態情報は、
再ブートには不要だからである。しかしながら、デバイ
スドライバはこの事実を知らない。つまり、再始動手順
とデバイスドライバの間の相互作用は、「再始動時再ブ
ート」と「再始動時再開」の両方について同一のもので
ある。デバイスドライバは、そのデバイスドライバのア
ドレススペースにおいてアクセス可能なデータ構造を調
べることにより、進行中の遮断のタイプを判定できる。
カーネルの電源異常/自動再始動手順スイッチの現在の
設定、並びに数値パラメータを示すフラグの値は、「sy
s/rolex/pwrfail.h」というファイルに含まれている。
【0212】ここで、再始動の間のデバイスドライバに
ついて考える。デバイスの状態は、「再始動時再開」と
指定されたデバイスについてだけ復元される。「再始動
時再ブート」が選択された場合には、システムにはオペ
レーティングシステムの新しいコピーが再ブートされる
から、遮断の間に存在していたデバイスの状態は勿論復
元されない。
【0213】最初に、I/Oプロセッサの状態が復元さ
れる。この状態には、デバイスの状態の一部を表すアク
セス妥当性検査RAM情報が含まれる。次いで各々のデ
バイスについて、デバイス識別ルーチンが呼び出され
る。そして、PFINITコマンドにより、各々のデバ
イスについてのドライバの電源異常ルーチンが呼び出さ
れる。この呼び出しは、ディスク148のディスクドラ
イバのみを意図している。他の全てのドライバは、これ
を無視できる。この時点においてディスクドライバはそ
れ自身を初期化し、他のデバイスドライバについてのデ
バイスの状態が、電源異常ダンプデバイス、PFDEV
とは離れて読み込まれるようにする。次に、各々のデバ
イスについてのドライバの電源異常ルーチンが、PFR
ESTOREコマンド及び遮断の間にデバイスによって
リクエストされた保管領域のアドレスの引き数でもって
呼び出される。ドライバによってそのデバイスについて
の保管領域がリクエストされなかった場合には、引き数
はNULLである。電源異常ルーチンに対するこの呼び
出しは、何らかの状態情報を再ロードすることである。
【0214】PFRESTOREコマンドが使用された
場合には、デバイスドライバは単に、遮断の間に保管さ
れた状態を再度捕捉するだけであるということが重要で
ある。PFRESTARTコマンドが発生されるまで
は、デバイスドライバは保管された状態を越える何等の
状態変化も行ってはならない。連続的な再始動/遮断/
再始動サイクルは、PFRESTOREコマンドが多数
回発生されることを必要とするが、この動作は従ってi
dempotentでなければならない。全てのデバイ
スが復元されたならば、PFRESTARTの引き数で
もって、電源異常ルーチンが再び呼び出される。再始動
手順の間には、デバイスドライバのinitルーチンを
呼び出す代わりに、PFRESTARTコマンドで電源
異常ルーチンが呼び出されることに注意すべきである。
この時点においてデバイスは正規の動作を回復し、遮断
手順において保管された状態を越えて状態変化を行い得
る。遮断の間に状態を保管する必要のないデバイスにつ
いては、電源異常ルーチンに対するPFRESTORE
呼び出しは無視できる。次いで電源異常ルーチンに対す
るPFRESTART呼び出しが用いられて、デバイス
が動作を再開するように再度初期化される。どのような
場合でも、非idempotent的な仕方で状態変化
を生じ得るデバイスの動作がPFRESTARTの後に
行われ、その時点より前に行われないということが重要
である。
【0215】PFDEVから保管されたデバイスの状態
を読み込むためにディスクドライバが用いられることか
ら、ディスクドライバはそれ自身の状態を保管し又は復
元してはならない。PFRESTORE呼び出しが行わ
れる場合、PFDEVが読み出され書き込まれるよう
に、ディスクドライバは必要とされる何らかの初期化動
作を行わねばならない。ディスクドライバにとっては、
PFRESTART呼び出しは単に、PFHALTにお
いて中断された読み出しを今や継続し得るということを
知らせるに過ぎない。
【0216】ドライバが2つのタイプの電源異常/自動
再始動手順の再始動を経験し得ることに注目することが
重要である。最初のタイプは、システムがいつ実際に電
力を喪失するかである。全てのコントローラ及びデバイ
スは、自動再始動手順までにはリセットされている。2
つめのタイプは、強制された遮断、または遮断手順の間
に交流電力が復帰する過渡的な電源異常の場合に生ず
る。この2つめのタイプは、「フォールスルー(fal
l through)」再始動と呼ばれる。この場合、
PFDEVによってエイリアスされた電源異常区画を含
むディスク装置は、リセットされていない。その場合、
PFINITの引き数によりデバイスの電源異常ルーチ
ンへと行われる呼び出しが用いられて、電源異常再始動
の準備においてデバイスを適切にリセットする。
【0217】最小単位及びidempotency 最小単位及びidempotencyの特徴は、遮断の
最中における電力の復元、又は再始動手順の間における
引き続いての電源異常の存在下に取られる動作に関連し
ている。
【0218】遮断及び再始動手順は十分な期間(図16
の期間175及び177)にわたっており、一方が他方
にオーバーラップするよう試みることが可能である。例
えば、電源における短期間の過渡現象を排除するために
遅延173が導入されるとしても、電力は遮断手順の完
了前に回復されうる。期間175の遮断手順がシステム
に電力が復元される前に完了しない場合でも、遮断手順
はとにかく完了まで実行される。次いで時間176にお
いて、どのようなオペレータとの相互作用とも無関係
に、再始動手順が直ちに開始される。この手順を用いて
いるシステムの応答については、ユーザはより長い遅延
を認めるであろうが、174における電源異常確認から
176における完了までの複雑な手順は最小単位の事象
であり、一旦開始されれば完了まで実行される。
【0219】従って遮断手順は、一旦開始されれば遮断
が行われている期間175の間に交流電力がシステムに
復元された場合であっても完了まで実行されるという意
味において、「最小単位の」ものである。しかしなが
ら、遮断手順の終わりの時間176において、もしも交
流電力が復帰したならば、再始動手順が直ちに開始され
る。そうでなければ、電源異常/自動再始動手順はバッ
テリーをターンオフし、ブートROMを介して再始動す
るために、システムはパワーアップリセットを必要とす
る。
【0220】他のありそうなシナリオは、期間177の
間に、再始動手順の最中に電源異常が生ずることであ
る。遮断手順とは異なるが、再始動手順もまた完全に最
小単位のものである。再始動手順は「巻き戻し」され
て、再始動されたシステムの状態が非揮発性記憶媒体に
保管されている基本システムイメージから逸脱した後の
いかなる時点においても再開することができる。基本シ
ステムイメージは、メモリへと数回にわたって、損傷を
生ずることなしに再ロードすることができる。しかしな
がら、プロセスの実行が可能にされデバイスの動作が開
始されたならばすぐに、システムの状態は保管された基
本システムイメージを越えて変化する。
【0221】かくして再始動手順は2つの部分に分割さ
れる。何らかのプロセスの実行、または何れかのデバイ
スコントローラにおける状態変化に先立つ、最小単位で
ないidempotent部分187と、プロセスの実
行とデバイスの動作が再始動された場合の最小単位部分
188とである。プロセスの実行とデバイスの動作を再
開するという付託が行われていない場合には、電源異常
の指示の存在は、遮断フェーズ175ではなく、単に安
定した交流電力の回復に対するウェイトを要求するだけ
である。電源異常確認174ではなく電源異常の指示1
72であるというのが、ここでの重要なポイントであ
る。なぜなら、再始動手順の最小単位でない部分187
の間における電源異常の指示は、安定な交流電力の確定
に対する別のウェイトを生ずるからである。プロセスの
実行とデバイスの動作を再開するという付託が行われた
ならば、電源異常確認174の存在下においてでも、全
てのデバイスが再始動されねばならず、次いで全てのプ
ロセスの実行が再開されねばならない。再始動がプロセ
スの実行及びデバイスの動作の再開という最小単位の動
作を完了した場合に、電源異常確認が発生したならば、
完全な遮断サイクルが生ずる。
【0222】再始動期間177の間における最小単位で
のプロセスの実行とデバイスの動作の再開の期間での電
源異常確認174の発生、及びこれに続いての遮断手順
の開始(期間175が再開される)は、遮断手順の間に
バッテリー電源162が電力を供給する全体的な期間を
短くする。すぐに繰り返される遮断手順に対するこの制
限の影響を回避するためには、プロセス/デバイスドラ
イバの再始動インターバルができる限り短いことが重要
である。
【0223】再始動手順のidempotent部分1
87の間、電源異常は直ちにシステムが電力を喪失する
ようにし、前述したようにパワーアップリセットを必要
とする。従って、交流電力が安定でなければ、再始動手
順のidempotent部分187は、システムが実
際に再始動される前に数回実行される。電源異常の後で
はあるが、遮断手順が完了する時間までに交流電力が回
復したならば、そのときに直ちに開始される再始動手順
は、idempotent部分の間に第2の電源異常が
生じた場合に短縮される。
【0224】idempotent部分に続いて、再始
動手順の最小単位部分が、「付託」時点186において
入力される。付託時点に到達した場合、電源異常が存在
していたとしても、再始動手順は完了まで実行される。
再始動手順の終了時に電源異常が残存していたならば、
遮断手順が入力される。
【0225】かくして「付託」時点は、再始動手順を2
つの半体に分割し、その最初のものはidemoten
t部分187であり、2番目のものは最小単位部分18
8である。付託時点186は、各々のデバイスがPFR
ESTOREコードで呼び出しを受けた後に生ずる。そ
のとき電源異常/自動再始動手順は、管理者が構成可能
なインターバルだけ待って交流電力が安定であることを
確認し、再始動を完了するために「付託」を行う。交流
電力確認インターバルは論理的には再始動手順のide
mpotent部分にあり、従ってこの期間の間の電源
異常は前述したように、再びパワーアップリセットを待
つことになることに注目すべきである。 〔システム管理者〕電源異常/自動再始動手順に対する
システム管理者のアクセスには、カーネルのパラメータ
の設定、要求時にシステム遮断を強制すること、遮断及
び再始動時におけるシェルスクリプトの実行、プロセス
ごとに「電源異常時キル」特性を選択的に設定するこ
と、エイリアスされた電源異常ダンプデバイス(PFD
EV)及びこれに関連した電源異常区画を生成するこ
と、及び電源異常の期間にわたってハードウェア再構成
を行うことが含まれる。
【0226】遮断及び再始動手順は、システムの管理者
がアクセス可能なある種のカーネルパラメータを有す
る。例えば管理者は、「再始動時再現」オプションを選
択することができ、その場合にはシステムのオペレーシ
ョンは基本的に、それが遮断前に中止したところから再
現される。或はまた管理者は、「再始動時再ブート」を
選択でき、それによってオペレーティングシステムは再
現されるのではなく再ブートされる。
【0227】システム管理者にアクセス可能な他のカー
ネルパラメータには、次のものがある。(1)電源異常
時から電源異常確認までの時間的インターバル173
(failtime)。(2)電源異常指示/確認のイ
ンターバル173において受け入れ可能な電源異常割り
込みの数の最高限度(intcnt)。(3)一杯に充
電されている場合にバッテリー電源が信頼性をもって機
能し得る時間の長さ(upstime)。(4)「/e
tc/pfshutdown」シェルスクリプトが実行
される場合の電源異常確認174から、全てのユーザプ
ロセスに対してSIGPWR(「電源異常時キル」特性
を有していないプロセス)またはSIGTERM(「電
源異常時キル」特性を有しているプロセス)を送る時間
181までの時間的インターバル。再始動に際しては、
「/etc/pfrestart」シェルスクリプトの
実行から、全てのユーザプロセスへとSIGPWRを送
るまでの間の時間的インターバル190(pwrtim
e)。(5)181において全てのユーザプロセスに対
してSIGPWR(「電源異常時キル」特性を有してい
ないプロセス)またはSIGTERM(「電源異常時キ
ル」特性を有しているプロセス)を送ってから、プロセ
スの実行の中断(「電源異常時キル」特性を有していな
い全てのプロセス)または全てのユーザプロセスへと1
82においてSIGKILLを送る(「電源異常時キ
ル」特性を有している全てのプロセス)迄の間の時間的
インターバル(termtime)。(6)遮断手順全
体の期間をバッテリー電源162,163が信頼性をも
ってサポートできない場合に行うべき動作(shuta
ct)。(7)再始動手順を開始する前に、交流電源が
復元され安定とならねばならない時間の長さ(acti
me)。及び(8)バッテリーが使われていて再充電が
必要なため、バッテリー電源が遮断手順全体をサポート
できないことが明らかな場合に、ブート手順の間に行う
べき動作(resact)。
【0228】システム管理者は、バッテリーを充電して
それらが作動可能であることを確実なものとするため
に、電源異常の発生なしに遮断プロセスを強制できる。
強制遮断は、標準的なインターバルに際して事務ルーチ
ンの一部として行うことができ、それによってバッテリ
ー電源の信頼性を確実にする。電源異常時に生ずるのと
同様の方法で遮断を強制するために、システム呼び出し
が提供される。強制遮断手順と実際の電源異常確認によ
って開始された遮断との違いには、大電力電源の遮断
と、再始動手順の開始とが含まれる。強制遮断は大電力
電源を遮断し、バッテリーが電力を供給する能力を試
す。遮断が強制されたものである場合には、再始動手順
のタイプは常に「再始動時再開」である。再始動手順は
パワーアップの指示によってはトリガされないから、強
制遮断手順のソフトウェアが再始動手順を開始しなけれ
ばならない。
【0229】部位またはアプリケーションに特有の情報
が、/etc/pfshutdown 及び /etc/pfrestart という2つ
のシェルスクリプトの1つに含まれうる。遮断手順は、
/etc/pfshutdown スクリプトを実行する。再始動手順
は、/etc/pfrestartスクリプトを実行する。これらのス
クリプトにおいては、管理者はデータベースマネージメ
ントシステムと関連している全てのプロセスを遮断手順
の間にキルし、再始動手順の間にdbmsを再始動する
といった保守雑用を行うことができる。これらのシェル
スクリプトは、電源異常/自動再始動手順の機能性を管
理者が調整するための主要なメカニズムである。
【0230】〔遮断及び再始動のためのディスクシステ
ムの考察〕ディスクシステム148は、全体として基本
システムイメージのための非揮発性保管領域を形成する
電源異常区画を含んでいる。
【0231】基本システムイメージは、再始動手順が適
切に機能することを可能にするために保管されなければ
ならない、全てのプロセス及びカーネルの状態からなっ
ている。プロセスの状態には、Unix領域、データ及
びスタックのページ、そして恐らくは他の情報を含んで
いる。プロセスに関連しているプロセステーブルスロッ
ト及びその他のシステムデータ構造情報は、カーネルの
状態の一部である。「再始動時再ブート」オプションが
選択された場合には、基本システム状態は保管されない
ことに注意すべきである。
【0232】PFDEVに基本システムイメージを保管
している間にI/Oエラーが生じた場合には、「再始動
時再開」をリクエストしているカーネルのパラメータの
値とは無関係に、システムは「再始動時再ブート」に設
定される。遮断手順は中断され、デバイス及びプロセス
の状態は失われる。
【0233】再始動に際しては、「再始動時再ブート」
オプションが選択されている場合には、ディスクからオ
ペレーティングシステムの新たなコピーを持ち出すにつ
いて、ディスクシステム148が関与する。交流電力が
復元された場合に通常のブートを遂行するのではなし
に、PFDEVに含まれている基本システムイメージ
が、メモリ14,15又は16へとロードされる。この
基本システムイメージには、前述したようにして所定の
デバイスへと通され次いで放棄される、デバイスの状態
情報が含まれる。基本システム状態の他の部分は、恐ら
くは非連続的な部分における、実際のコアのイメージか
らなる。基本システム状態を復元している間にI/Oエ
ラーが生じた場合には、制御は初期のブートシーケンス
へと戻され、「再始動時再開」をリクエストしているカ
ーネルのパラメータの値とは無関係に、オペレーティン
グシステムの新しいコピーがロードされる。
【0234】〔バッテリーOK信号〕バッテリー電源1
62及び163を形成している各々のバッテリーは、プ
ロセッサ170を介して「バッテリーOK」信号を表
す。これはポーリングによって、又はこの信号の変化に
よって発生される割り込みを介してCPUからモニター
される。電源異常/自動再始動手順はバッテリーOK信
号の存在を、遮断の全体をサポートし得ることを意味す
るものとして解釈する。遮断の「全体」の期間は、シス
テム管理者によって規定される。バッテリーOK信号の
不存在は、バッテリーによって給電されている機器に対
して電力を喪失せずに、又は強烈な放電によってバッテ
リーを損傷することなしに、バッテリーが遮断全体をサ
ポートすることはできないことを意味するものとして解
釈される。いかなる所与のモジュールについても、1つ
のバッテリーがバッテリーOK信号を表しているなら
ば、そのモジュールは遮断の全体をサポートすることが
できる。バッテリー162と163の両方が「バッテリ
ーOK」を表すことは不要である。
【0235】電源異常/自動再始動手順は、バッテリー
OK信号を幾つかの個所で使用する。通常のブート又は
電源異常/自動再始動の間に行われるバッテリー再充電
の遅延は、各々のモジュールにおいて少なくとも1つの
バッテリーによってバッテリーOK信号が表されるまで
待つ。電源異常遮断手順の間、少なくとも1つのバッテ
リーによってバッテリーOK信号が表されなければ、遮
断は中断される。
【0236】交流電力が復元された場合、「再始動時再
ブート」又は「再始動時再開」のいずれのオプションが
選択されたかとは無関係に、ブート/再開を開始する前
に遅延が生じさせられる。この遅延は、別の電源異常を
サポートできるように、バッテリー162,163が十
分に充電されうるようにする。即ち、バッテリーが足り
ないためにシステムが別の規則的な遮断を実行すること
ができない場合には、システムをオンラインに戻すこと
は望ましくないのである。ブート手順は、遮断手順がバ
ッテリーを放電させた時間の長さ、及びカーネルのパラ
メータの設定に基づく時間的インターバルにわたって遅
延する。遮断手順はバッテリーの放電時間を最後の再充
電時から蓄積し、この値を非揮発性記憶装置に保管す
る。バッテリーの完全な充電についての遅延時間は、例
えば放電時間の60倍である。
【0237】〔システムメモリ編成〕基本システム状態
のコアイメージ部分がPFDEVに書き込まれた場合に
重要なことは、各々の書き込みができる限り大きいとい
うことである。これは一つの大きな書き込みで行うこと
が好ましいが、システムのアーキテクチャはこの可能性
を許容しない。従って、大域メモリ14,15が、ユー
ザデータ145のみを含みシステムデータ構造144を
含まない大きな「ウィンドウ」を含むことが必須であ
る。もちろん、大域メモリ14,15におけるこの「ウ
ィンドウ」の大きさが大きくなれば、コアイメージの保
管もそれだけ速くなる。その場合電源異常/自動再始動
手順は、大域メモリからのこの「ウィンドウ」にあるデ
ータを最初にディスク148に書き込むことができる。
次いでシステムメモリ(局所及び大域)の残りは大域メ
モリの「ウィンドウ」に複写されることができ、そして
そこからディスク148に書き込まれる。特に全ての割
り当てルーチンが、電源異常/自動再始動手順が大域メ
モリにおいて使用するこの「ウィンドウ」のどこにも、
システムによって使用されるメモリの部分を割り当てる
ことのないようにしなければならない。データ構造を大
域メモリに割り当てるコードの大部分は、DMA転送そ
の他を達成するために、I/Oサブシステムに関連され
る。
【0238】〔疑似コード機能性の概要〕表Aに記載の
疑似コードのリストは、表Bに記載の時系列及び図16
の関連するタイムチャートと共に、上記に説明した本発
明の1つの実施例の特徴を例示するものである。例示し
た表Bの「時系列」は、1回の遮断/再始動サイクルを
含む、典型的な遮断及び再始動である。これはもちろ
ん、再始動の試みが中止されるか又は多数回行われる場
合に展開される筋書きはバイパスする。この時系列及び
図16に示されている動作シーケンスは重要である。例
えばプロセスの実行は、汚れたファイルシステムバッフ
ァをフラッシュする前に中断されねばならず、またこの
フラッシングはデバイスの状態を静止させダンピングす
る前に行わねばならない。分及び秒単位で表された時系
列中の時間は、例示を行うという目的のみを有するもの
である。
【0239】〔/config ファイルシステム〕ユーザプロ
グラムが上記したシステムの現在の構成にアクセスする
ことを可能にするために、/config ファイルシステムと
称する疑似ファイルシステムが加えられている。/confi
g には、各々のソフトウェアサブシステム及びそのシス
テムの各々のハードウェア構成部材のためのファイルが
存在している。図17を参照すると、この /config フ
ァイルシステムのためのツリー構造が例示されている。
/config のためのディレクトリのリストは、常にシステ
ムの真の構造を示しているが、これはシステムが動作し
ている間に構造が変化しうるという、上に示したような
システムにとっては非常に重要である。
【0240】図17のハードウェアサブツリー180
は、図1から図12のシステムの現在の物理的なハード
ウェア構造を示している。システムにおいて実際に存在
しているハードウェアのみが、/config ファイルシステ
ムのエントリとして存在している。例えば、スロットC
にメモリボードC(図1のメモリモジュール15)が存
在していない場合には、これに対応するノードtmrc
Cはtmrcディレクトリには現れない。システムに構
成部材が付加されたり、又は除去されたりした場合に
は、ハードウェアサブツリー180は更新される。ハー
ドウェアサブツリー180の中にはCPU用のサブツリ
ー181があり、このサブツリーの下にはCPU11,
12及び13を表している3つの可能なファイル18
2,183及び184があるが、これらは /config/hw/
cpu/cpuA、/config/hw/cpu/cpuB その他のファイルとし
て現れる。同様にメモリモジュール14及び15のため
のサブツリー185があり、その場合両方のメモリモジ
ュール14及び15が存在しているのであれば、/confi
g/hw/tmrc/tmrcA 及び /config/hw/tmrc/tmrcCというフ
ァイルが現れる。I/Oプロセッサ26及び27用のサ
ブツリー186は、プロセッサ26及び27のためのサ
ブツリーである /config/hw/iop/iop0及び /config/hw/
iop/iop1 を有しており、その場合にこれらの各々はV
MEコントローラ30を有し、このコントローラはそれ
ぞれがコントローラが占めているVMEスロットに対応
するスロットファイル187に連係されたファイルによ
って表される。SCSIタイプのコントローラについて
は、iopディレクトリ及びmscディレクトリの両方
においてリンクとして現れる1つのコントローラがあ
る。ls()で見た場合、コントローラの間のリンクは
ハードなファイルシステムリンクとして現れる。
【0241】ソフトウェアサブツリー190はシステム
の現在のソフトウェア構成を表すが、ソフトウェアシス
テムの構成部材は、ハードウェアサブツリー180にお
けるこれに類似のハードウェア構成部材よりもずっと漠
然としたものである。システム内の全てのルーチンが特
定のソフトウェア構成部材により識別される訳ではない
が、ソフトウェアサブシステムとして取り扱われ且つ関
連する開始及び停止ルーチンを有する幾らかの構成部材
がある。全部ではないが幾つかのものはまた、サブシス
テム再初期化及び再統合ルーチンをも有している。ハー
ドウェアサブツリーとの主要な区別は、ソフトウェアサ
ブツリーが模写された構成部材を持たないということで
ある。
【0242】〔/config ファイルシステム用のユーザイ
ンタフェース〕/config ファイルシステムは、各種カー
ネルモジュールに対するフロントエンドであり、/confi
g は、名前により特定のカーネルモジュールのコンポー
ネントを識別し、システムにそのカーネルモジュールを
呼び出させるための機構を提供する。/config は自動的
にブートプロセスの間に取り込まれ、/etc/rc スタート
アッププログラムによる試験に用いられることが保証さ
れる。
【0243】/conig 内のノードは、UNIXでは正規
のファイルと同様に処理可能である。全てのファイル動
作を試みることが可能であるが、サポートされていない
ものもあり、その場合には、エラーが戻される。/conif
g に対するユーザインタフェースは、標準UNIXシス
テム呼び出しを介してである。システム呼び出しサポー
トの要約を表Cに示した。そこでは、左の列が標準UN
IX呼び出しを列挙する。システム呼び出しは、通常の
プログラム内で又は、これらのシステム呼び出し(例え
ば、ls(1))を形成する指令から作ることが可能であ
る。これらの動作の大部分は、所望のエンティティを開
けて、ioctl(2) システム呼び出しを提示する横により
行われる。例えば、呼び出しを再組込みサブシステムに
提示して、cpuB(CPU12)をダウンさせるために
は、次のコードが実行される。 fd = open("/config/hardware/cpu/cpuB",O_rdwr); ioctl(fd,CCF_DOWN,O); /config ファイルシステム内のノードは、通常の指令、
特に次に示す、/config ファイルシステムのヘッダ cf
s.h 内で規定される ioctl 呼び出しのいくつかのサブ
セットをサポートする。 CF_GETSTATE 状態コードを獲得する(統合) CF_PGETT パラメータブロックを獲得する CF_PSET パラメータブロックをセットする CF_INIT 起動する CF_DIAG 診断を実行する CF_DOWN 装置をダウンさせる CF_REINT 再組込みする CF_OFFLINE オフラインにおく CF_RESET リセットする CF_MOVE 移動する(IOP) CF_FAILED 故障としてマークする CF_CTRLINFO pdev/ldev info を獲得する CF_CONFIG config_file アレイを獲得する 全てのノードはCF_GETSTATEをサポートして
いる。 int state; ioctl(fd,CF_GETSTATE,&state); 戻りコード、状態の意味はコンポーネントによって異な
るが、ゼロ値は通常の動作状態を指示し、ゼロ以外の値
はそれ以外の動作を指示する。状態の他の値は特定コン
ポーネント用に定義可能である。
【0244】〔カーネルインタフェース〕/confi
g ファイルシステムは、ファイルのイルージョン(illu
sion)を提供するために必要な全てのファイル動作を実
行するシェルを単純かすることを意図しているが、それ
が表示するエンティティの直接の知識は備えていない。
read( )、write( )、ioctl( )のような def procs key
システム呼び出しを用いて、他のカーネルモジュールに
パスされる。他のカーネルモジュールは、/configinode
(情報ノード)テーブルを介して /config と結ばれ
る。
【0245】/config inode テーブルは、以下のよう
な、cf_t 型のデータ構造のリンクされたリストであ
る。 typedef struct cf_inode { char *cf_name /* アスキー名 */ ushort cf_untinum; /* >=0 && <100であれば、cf_nameに付加*/ ushort cf_mode; /* chmod(1) に関するモード*/ int cf_size; /* サイズ */ cf_id_t cf_id; /* 特殊ID、proc 用の第1 arg */ cfproc t cf procs; /* defprocs のリスト */ time_t cf_ctime; /* stat.h 内と同様 */ time_t cf_mtime; /* stat.h 内と同様 */ /* ... */ struct cf_inode *cf_next; /* 同じ階層の次のエントリ */ struct cf_inode *cf_sub; /* 副階層の第1エントリ */ struct cf_inode *cf_pard; /* 親ディレクトリ */ struct cf_inode *cf_link; /* リンクのリスト */ }cf_t; 各 cf_t は特定ファイル又はディレクトリ(S_IFD
IRが if_mode 内にセットされた場合にはディレクト
リ)を定義する。一緒に、それらは、図17に示すよう
な、ユーザが見るディレクトリのツリー構造を作成す
る。
【0246】ユーザが、システム呼び出しを提示する
と、/config は関連するカーネルモジュール上の要求を
要求又はパスすることで満足する。各ノードは、open,c
lose,reade,write,attr 及び ioctl のようなサポート
された動作に対応する手続(cf_procs)のリストを備え
ている。手続を通過する第1のアーギュメントは、cf_i
fフィールド内に格納された値である。このフィールド
はいかなる値をも含み得るが、典型的には、システム呼
び出しの目標を識別するためのアドレス又は装置番号を
格納する。この値は固有でなければならない。
【0247】/config を用いる全てのカーネルモジュー
ルは、図17の /configツリーに対する全ての、add,re
move 及び update 動作を実行する必要がある。ハード
ウェアのサブツリーに関しては、一連の使用が容易なイ
ンタフェースルーチンが、表Dに示されるように用いら
れる。これらのルーチンは、適法可能なハードウェア区
画に従ってグループ化される。ソフトウェアのサブツリ
ーに関するインタフェースルーチンは本発明の範囲を越
える。
【0248】ls( ) 指令の例が表Eに示されている。こ
の表は ls( ) 指令からの選択された出力を示してい
る。
【0249】図17のサブツリーを作成するための /co
nfig ファイルシステムに関する包含ファイルのプログ
ラムリストが表Fに示される。
【0250】本発明について、特定の実施例を参照し
て、説明してきたが、この説明は限定的な意味で行われ
たと解してはならない。本発明の他の実施例と共に、開
示された実施例の様々な変更例が考えられることは、当
業者には明白である。従って、本発明に基づく特許請求
の範囲が、本発明に含まれる範囲内で、かかる全ての変
更例又は実施例をカバーしているものと考えられる。
【0251】
【発明の効果】以上のように、本発明によれば、特に故
障許容型の改良型高信頼性コンピュータシステムが提供
される。さらに、本発明によれば、高性能でありかつ低
コストであり、特に通常は高い冗長システムに伴うもの
である動作性能に対する負荷を回避可能な、改良型冗長
性故障許容型計算システムが提供される。さらに、本発
明によれば、信頼性、速度及びソフトウェア互換性の観
点から測定された動作性能が、他のより低い動作性能を
有するシステムに比較してコスト面で改良されているよ
うな、高性能コンピュータシステムが提供される。さら
に、本発明によれば、要求時ページングを備えた仮想メ
モリ管理を用いたオペレーティングシステムを実行可能
であり、プロテクト(監視又は「カーネル(核)」)モ
ードを備え、特に多重プロセスを実行可能であり、しか
もこれらが全て高水準の動作性能を有しているような、
高信頼性コンピュータシステムが提供される。さらに、
本発明によれば、故障したシステムのコンポーネントを
検出してそれらをオフラインに置き、システムを遮断せ
ずに、修復されたシステムコンポーネントを再組込み可
能な高信頼性冗長コンピュータシステムが提供される。
本発明によれば、さらに、特に故障許容型の高信頼性コ
ンピュータシステムにおける、改良された電源故障手順
が提供される。さらに、本発明によれば、信頼性及び高
い動作性能を有し低コストで、電源故障時の、冗長性、
故障許容型計算システムの改良された動作が提供され
る。さらに本発明によれば、特に故障許容型の高信頼性
コンピュータシステムの動作の改良された方法が提供さ
れる。さらに、本発明によれば、信頼性及び高い動作性
能を有し低コストで、システムを動作し続けながら、故
障したハードウェアコンポーネントをシステムから外し
置き換えることが可能な状況における冗長性故障許容型
計算システムの改良された動作が提供される。
【0252】 表A:電源異常/自動再始動手順の疑似コード 〔電源異常確認〕 確認(confirmation): while(電源異常指示なし) { 通常の故障許容動作; } delay(failtime); バルク状態チェック; if(所与ボックス内の二重バルク故障、又は、 所与のバルク上の電力変位 >intcnt){ 電源異常確認; go to 遮断手続; }else{ トランジェント電源故障を記録(log); go to 確認; } 〔遮断手順〕 shutdown_procedure( ) { pfdev を無効にマーク; フラグを、さらに遅れた書き込み無しと、設定; PFCONFIRM を備えたドライバを呼び出し; コード PFCONFIRM を備えた SIGPWR を init に送る; /* init は /etc/pfshutdown"script を実行*/ delay(pwrtime); if( 再始動上の再ブート"reboot on restart") { ユーザプロセスをキル(kill)にマーク; } for(全ユーザプロセス) if( 電源異常時のキル"kill on powerfail") { FPQUIESCE を備えた SIGTERM を送る; }else{ PFQUIESCE を備えた SIGPWR を送る; } delay(termtime); for(全ユーザプロセス) if( 電源異常時のキル"kill on powerfail") { SIGKILL を送る; } プロセスの実行を一次停止; PFHALT を備えたドライバを呼び出す; ファイルシステムが完全にフラッシュ(flush)されることを保証; PFQUIESCE を備えたドライバを呼び出す; コールアウトテーブルの状態をセーブ; IOP 状態をセーブ; PFDUMP を備えたドライバを呼び出し、デバイスダンプをディス クに書き込む; if( 再始動時の再ブート) { pfdev ヘッダを有効化; go to cleanup; } システムメモリをディスクに書き込む; 有効 pfdev ヘッダを書き込む; if(遮断強制) { 試験バッテリー; } cleanup: if(AC電源無し、又は ディスクオプションからのロードで遮断強制) { バッテリー不能化; システム再ブート; } } 〔再始動手順〕 restart_procedure( ) { /* idempotent 部分 */ コールアウトテーブル再起動; IOP 状態回復; 装置を識別; while(いくつかの装置が config エラーを報告)} システムコンソールを検索; if( アボート(abort)応答){ システムを再ブート; }else if( 継続(continue)応答){ while を中断; } } PFINIT を備えたドライバを呼び出す; pfdev ヘッダを読み出す; if(エラー又は無効なヘッダ) { システムを再ブート; } PFRESTORE を備えたドライバを呼び出す; while(いくつかの装置が config エラーを報告) { システムコンソールを検索; if( アボート(abort)応答){ システムを再ブート; }else if( 継続(continue)応答){ while を中断; } } if(resact バッテリーを再充電しない構成) { 継続; }else if(resact 最大再充電用に構成) { delay(遮断持続時間に依存する量); }else{ while(バッテリー OK 信号が存在しない){ 遅れ; } } /* nonidempotent 部分、再始動に引き渡す */ pfdev ヘッダを更新して、システムにイメージが無効でないことを示 す; 遮断スナップショットを備えたコールアウトテーブルを回復; PFRESTART を備えたドライバを呼び出す; ユーザプロセスのスケジューリングを再始動; PFRESTART を備えた SIGPWR を送る; /* init は /etc/pfrestart を実行する*/ delay(pwrtime); PFRESTART を備えた SIGPWR を全てのユーザプロセスに送る; } 表B:遮断及び再始動の時間線 サンプル遮断時間線:0:00 172で電源異常
指示。疑似電源異常割り込みをスクリーニングする時間
間隔173開始。 0:05 174で電源確認。電源異常条件が継続。同
地はPFCONFIRMメッセージを送る。/etc/pfshu
tdown スクリプトを実行。汚れたファイルシステムのバ
ッファのフラッシングを開始。全ての遅れ書き込みを同
期書き込みに強制。 0:25 電源異常時キルのマークがされなかったプロ
セスが、182でPFQUIESCEメッセージを備え
たSIGPWR信号を送る。 0:55 電源異常時キルのマークがされたプロセス
が、SIGKILL信号を送る。 0:57 プロセス実行の一次停止。装置がPFHAL
Tメッセージを送る。ファイルシステムのフラッシュ完
了の間遅れ。 1:00 装置がPFQUISCE/PFDUMPメッ
セージを送る。I/Oプロセッサ26及び27の状態セ
ーブされる。主な装置状態がPFDEV上に移動され
る。 1:05 PFDEVによりもたらされた電源異常部分
を含まない装置がパワーダウンされる。主なシステム状
態をPFDEV上へのセーブを開始する。 3:30 主なシステム状態がPFDEV上にセーブさ
れる。有効なヘッダをPFDEVに書き込む。システム
遮断が完了。装置をパワーダウンのままにする。電源1
62,163がメッセージを送り、バッテリーを切る。 4:30 バッテリーが切られていない場合には、電源
が信頼できる動作を停止する。 サンプル再始動時間線: 0:00 AC電源が回復される。AC電源を安定にす
る時間が開始する。 1:00 AC電源が安定する。UPSが少なくとも最
低限充電されたバッテリーを指示する。システムがブー
トし、主なシステムイメージのロードが開始される。 1:30 IOP状態が回復される。装置が「id」さ
れ、装置の確認を検証する。装置ドライバは、PFIN
ITメッセージを受け取る。装置ドライバは、PFRE
STOREメッセージを受け取る。主な装置状態が格納
される。 1:35 回復を開始。PFDEVヘッダを無効にす
る。装置ドライバは、PRESTARTメッセージを受
け取る。プロセス実行が除去される。/etc/pfrestart
スクリプトが実行される。 1:55 プロセスがPFRESTARTアーギュメン
トを備えたSIGPWR信号を受け取る。
【0253】
【表1】
【0254】
【表2】
【0255】表 D
【0256】〔TMRCルーチン〕
【0257】〔IOPルーチン〕 cf・iop・add: cf・iop・add(unit) int unit; 新しい iop を directory/config/hw/iop 内に作成し、8つの.slot エントリに 加える。 cf・iop・rm: cf・iop・rm(unit) int unit; Remove iop unit, all sub-units, and any msc links. cf・iop・state: cf・iop・state(unit, state) int unit, state; unit の状態を変更する。状態は故障時に(0)であり、通常時に(1)である。
【0258】〔制御器ルーチン〕 cf・ctlr・add: cf・ctlr・add(pd) pdev・t・pd; ノードに対するリンクを作成する: /config/hw/iop/iopn/.slotm 全ての情報は、pd(iop/slot 番号、アスキー名、ユニット番号)により指摘され た構造から取られる。 cf・ctlr・rm: cf・ctlr・rm(pd) pdev・t・pd; 制御器ノード、二次装置、msc リンクを除去する。 cf・ctlr・move: cf・ctlr・move(pd) pdev・t・pd; 制御器及び局所装置を iop^1 に移動する。制御器のid フィールド及びldev s は新しい iop 番号を反映するように更新される。 cf・ctlr・state: cf・ctlr・state(pd, state) pdev・t・pd; int state; 制御器の状態をセットする。状態は、故障時に(0)であり、通常時に(1)である 。
【0259】〔局所装置ルーチン〕 cf_ldev_add: cf_ldev_add(pd,subunit,name,appendunit) pdev_t*pd; int subunit; char *name; int appendunit; ディレクトリ内の /config ファイルシステム内のノードを、作成又は更新する: /config/hw/iop/iopn/controller アーギュメント pd は、iop/iopn 及び制御器を決定する。Subunit は作成され るサブユニットを指示する整数インデックスである。name、/config 内に表示さ れるべきアスキー名である。名前に対するポインタのみがセーブされ、スペース が装置ドライバにより割当てられる必要がある。appendunit がゼロでない場合 には、サブユニット番号がアスキー名に付加される(port0,port1,port2,…のよ うに名前には手ごろである。ノードが常に存在すれば、アスキー名のみが変更さ れる。 cf・ldev・rm: cf・ldev・rm(pd, subunit) pdev・t・pd; int subunit; /config から局所装置を除去する。 cf・ldev・state: cf・ldev・state(pd, subunit, state) pdev・t・pd; int subunit, state; 局所装置の状態をセット。状態は故障時に(0)であり通常時に(1)である。
【0260】〔MSCルーチン〕 cf・msc・add: cf・msc・add(unit) int unit; msc unit 及び独立バスノード mcb0 及び mcb1 を加える。 cf・msc・rm: cf・msc・rm(unit) int unit; msc unit 及び全ての sub-nodes を除去する。 cf・msc・link: cf・msc・link(unit, pd) int unit; pdev・t・pd; pd により特定される制御器を msc unit にリンクする。 cf・mscenv・add: cf・mscenv・add(unit, component) int unit, component; 環境コンポーネントを msc unit に加える。component は、fans,batteries,bul ks を指示する cfs.h からのコードである。 cf・mscenv・rm: cf・mscenv・rm(unit, component) int unit, component; 環境コンポーネントを msc unit 装置から除去する。 cf・mscenv・state: cf・mscenv・state(unit, component, state) int unit, component, state; 環境コンポーネントの状態を変更する。状態は、故障時に(0)であり、通常時に (1)である。
【0261】〔環境ルーチン〕 cf・environ・add: cf・environ・add(component) int unit; 主キャビネット環境コンポーネントを加える。component は、fans,batteries,b ulks を指示する cfs.h からのコードである。 cf・environ・rm: cf・msc・rm(component) int unit; 主キャビネット環境コンポーネントを除去する。 cf・environ・state: cf・environ・state(component, state) int unit, component, state; 主キャビネット環境コンポーネントを変更する。状態は、故障時に(0)であり、 通常時に(1)である。
【0262】〔低レベルルーチン〕前述の全てのインタ
フェースルーチンは3つの低レベルルーチンを用いて構
築される。 cf・newnode: cf・t・ cf・newnode(parid) cf・id・t parid; parid により指示されるディレクトリの下に新しいノードを作成する。戻され た構造内の全てのフィールドは手動で満たされる必要がある。 cf・linknode: cf・t・ cf・linknode(parid, srcnode) cf・id・t parid; parid により指示されるディレクトリの下にノード srcnode に対するハードリ ンクを形成する。戻り構造内の全てのフィールドが手動でみたされる必要がある 。 cf・disposenode: cf・disposenode(id) cf・id・t id; id により指示されたノードをツリーから除去する。全ての子及び全てのリンク もまた除去される。
【0263】〔その他〕
【0264】
【表3】
【0265】 表 F 10 11 /* 12 * cfs.h-include file for /config file system 13 */ 14 #ifndef _sys_fs_cfs.h 15 #define _sys_fs_cfs.h 16 17 typedef unsigned long cf_id_t; /* size of unique id field */ 18 19 /* 20 * defproc structure -- each node in /config has a pointer to one of these. 21 */ 22 typedef struct cfproc { 23 int (*cf_openproc)(); /* called on first open of inode */ 24 int (*cf_closeproc)(); /* called on last close of inode */ 25 int (*cf_readproc)(); /* called on read inode */ 26 int (*cf_writeproc)(); /* called on write inode */ 27 int (*cf_attrproc)(); /* called on attr change (e.g. chmod, chown) 28 int (*cf ioctlproc)(); /* called on ioctl() */ 29 } cfproc_t; 30 31 /* 32 * config inode -- directory or plain file 33 /* 34 typedef struct cf_inode { 35 char *cf_name; /* ascii name */ 36 ushort cf_unitnum; /* if >=0 && <100, appended to cf_name */ 37 ushort cf_mode; /* mode for stat(2) */ 38 int cf_size; /* size */ 39 cf_id_t cf_id; /* unique ID, first arg for procs */ 40 cfproc_t *cf_procs; /* list of defprocs */ 41 time_t cf_ctime; /* same as in stat.h */ 42 time_t cf_mtime; /* same as in stat.h */ 43 /* …*/ 44 struct cf_inode *cf_next; /* next entry in same hierarchy */ 45 struct cf_inode *cf_sub; /* first entry in sub directory */ 46 struct of_inode *cf_pard; /* parent directory */ 47 struct of_inode *cf_link; /* list of links */ 48 } cf_t; 49 50 extern cf_t *cf_addnode(), *cf_linknode(), *cf_findid(); 51 52 /* ioctls common to all /config entities */ 53 #define CFNODE ('c'<<8) 54 #define CF_GETSTATE (CFCODE 00) /* get state code (integer) */ 55 #define CF_PGET (CFCODE 01) /* get parameter block */ 56 #define CF_PSET (CFCODE 02) /* set parameter block */ 57 #define CF_INIT (CFCODE 03) 58 #define CF_DIAG (CFCODE 04) 59 #define CF_DOWN (CFCODE 05) 60 #define CF_REINT (CFCODE 06) 61 #define CF_OFFLINE (CFCODE 07) 62 #define CF_RESET (CFCODE 010) 63 #define CF_MOVE (CFCODE 011) 64 #define CF_FAILED (CFCODE 012) 65 #define CF_CTRLINFO (CFCODE 013) /* get prev/ldev info */ 66 #define CF_CONFIG (CFCODE 014) /* get config_file array */ 67 68 69 /* 70 * IDs for the /config/hw branch are formed as follows: 71 *+-----+--------------+-----------+-----------+---------------+ 72 *| 0 | board type | board # | slot | subdev | 73 *+-----+--------------+-----------+-----------+---------------+ 74 * 1bit 7bits 4bits 4bits 16bits 75 * 76 *The hig bit is always zero. 77 */ 78 79 /* make id from board type, board num, slot, and subdev */ 80 #define MKID(bt,bn,s,sd) ((((bt) & 0x7F)<<24)|(((bn) & 0xF)<<20)| 81 (((s) & 0xF) <<16) ((sd) & 0xFFFF)) 82 83 /* get board type, board num, slot, and subdev from id */ 84 #define ID_TO_BRDTYPE(id) (((id) >>24) & 0xFF) 85 #define ID_TO_BRDNUM(id) (((id) >>20) & 0xFF) 86 #define ID_TO_SLOT(id) (((id) >>16) & 0xF) 87 #define ID_TO_SUBDEV(id) ((id) & 0xFFFF) 88 89 #define INVALID_BRD 0xF 90 #define INVALID_SLOT 0xF 91 #define INVALID_SUBDEV 0xFFFF 92 93 /* board types */ 94 define CPU_TYPE 1 95 #define TMRC_TYPE 2 96 #define IOP_TYPE 3 97 #define ENVIRON_TYPE 4 /* batteries, fans, preregs */ 98 #define ENVIRON_BATT 0 /* unit offset */ 99 #define ENVIRON_FAN 2 100 #define ENVIRON_BRUNK 5 101 #define MSC_TYPE 5 102 103 #define CPUDIR MKID(CPU_TYPE,-1,-1,-1) /* cpu directory*/ 104 #define CPUA MKID(CPU_TYPE,0,-1,-1) 105 #define CPUB MKID(CPU_TYPE,1,-1,-1) 106 #define CPUC MKID(CPU_TYPE,2,-1,-1) 107 #define TMRCDIR MKID(TMRC_TYPE,-1,-1,-1) /* tmrc directory*/ 108 #define TMRCA MKID(TMRC_TYPE,0,-1,-1) 109 #define TMRCC MKID(TMRC_TYPE,1,-1,-1) 110 #define IOPDIR MKID(IOP_TYPE,-1,-1,-1) /* iop directory*/ 111 #define IOP0 MKID(IOP_TYPE,0,-1,-1) 112 #define IOP1 MKID(IOP_TYPE,1,-1,-1) 113 #define IOP2 MKID(IOP_TYPE,2,-1,-1) 114 #define IOP3 MKID(IOP_TYPE,3,-1,-1) 115 #define ENVDIR MKID(ENVIRON_TYPE,-1,-1,-1) /* environ directory*/ 116 #define MSCDIR MKID(MSC_TYPE,-1,-1,-1) /* msc directory*/ 117 #define MSC0 MKID(MSC_TYPE,0,-1,-1) 118 119 #endif _sys_fs_cfs.h
【図面の簡単な説明】
【図1】 本発明の実施例に基づくコンピュータシステ
ムのブロック図である。
【図2】 図1のシステムのCPUの1つの概略的なブ
ロック図である。
【図3】 図2のCPU内に用いられるマイクロプロセ
ッサチップの概略的なブロック図である。
【図4】 図1のコンピュータシステム内のメモリモジ
ュールの1つの概略的なブロック図である。
【図5】 図1のシステム内でメモリバスに対してCP
U上で生じる事象を示すタイミング図である。
【図6】 図1のコンピュータシステム内のI/Oプロ
セッサの1つの概略的なブロック図である。
【図7】 図1のシステム内のメモリモジュール及びI
/Oプロセッサの間の転送プロトコルに関する事象対時
間のタイミング図である。
【図8】 図2のCPU内で用いられる割り込み同期の
概略的なブロック図である。
【図9】 図1乃至図4のシステム内で用いられるメモ
リの物理的メモリマップである。
【図10】 図1乃至図4のシステムで用いられるCP
Uの仮想メモリマップである。
【図11】 図2又は図3に基づくCPU内のマイクロ
プロセッサチップ内の仮想アドレス及びTLBエントリ
の形式を示している。
【図12】 図1乃至図4のシステム内の大域メモリモ
ジュールのメモリマップ内の私用メモリロケーションを
示している。
【図13】 故障許容型電源を備えた本発明の実施例の
システムのブロック図である。
【図14】 エラーを検出して、故障モジュールに対し
てエラーを切り離し、モジュールをオフラインにおくプ
ロセスを示すフローチャートである。
【図15】 交換用モジュールが組み込む場合の、シス
テム回復プロセスのフローチャートである。
【図16】 電源故障の実行時の各種事象を示す事象対
時間のタイミング図である。
【図17】 本発明の特徴に基づく、/config ファイル
システムの構造を示している。
【符号の説明】
11、12、13…プロセッサ 14、15…メモリ 16…局所メモリ 17…クロック発信器 21,22,23…バス 24,25…入力/出力バス 26,27…入力/出力プロセッサ 29…バスインタフェースモジュール 30…I/O制御器 31…ラジアルライン 32…システム状態バス 33…応答/状態バス 18,28,34,35…バス 40…プロセッサチップ
───────────────────────────────────────────────────── フロントページの続き (73)特許権者 591030868 20555 State Highway 249,Houston,Texas 77070,United States of America (72)発明者 トム・ベレイター アメリカ合衆国テキサス州78756オース チン,ショールウッド・4613 (72)発明者 ブライアン・ヴェター アメリカ合衆国テキサス州78717オース チン,ポトシ・コーヴ・8501 (72)発明者 ランダル・ジー・バントン アメリカ合衆国テキサス州78746オース チン,ストーンリッジ・ロード・1805 (72)発明者 リチャード・ダブリュ・カッツ,ジュニ ア アメリカ合衆国テキサス州78626ジョー ジタウン,エルム・ストリート・1312 (72)発明者 ドナルド・シー・ウェストブルック アメリカ合衆国テキサス州78752オース チン,カミノ・ラコスタ・ナンバー 2045・1114 (72)発明者 キラン・ダブリュ・フェイ,ジュニア アメリカ合衆国テキサス州78660フラッ ガーヴィル,ヒッコリー・リッジ・トレ イル・507 (72)発明者 ジョン・ポズロー アメリカ合衆国テキサス州78756オース チン,シンクレア・アヴェニュー・4617 (72)発明者 ケネス・シー・ドゥバッカー アメリカ合衆国テキサス州78717オース チン,モノーナ・コーヴ・15702 (72)発明者 ニクヘル・エィ・メータ アメリカ合衆国テキサス州78752オース チン,プレイリー・ヘン・コーヴ・1715 (72)発明者 フィル・ウェブスター アメリカ合衆国テキサス州78758オース チン,アンダーソン・ヴィレッジ・ドラ イヴ・9743 (72)発明者 デイヴ・アルドリッジ アメリカ合衆国テキサス州78645ラー ゲ・ヴィスタ,ハイランド・レイク・ド ライヴ・20542 (72)発明者 ピーター・シー・ノーウッド アメリカ合衆国テキサス州78728オース チン,クラットンホフ・ドライヴ・2200 (56)参考文献 特開 昭62−196716(JP,A) 特開 昭63−284617(JP,A) 特開 昭63−98009(JP,A) 特開 平1−233608(JP,A) 特開 昭51−113549(JP,A) 特開 昭60−48559(JP,A) 特開 昭57−23162(JP,A) 特開 昭61−210453(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 1/30

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 中央処理部(CPU)と、揮発性メモリ
    及び不揮発性格納手段を含む記憶手段と、主電源供給手
    段と、バックアップ電源と、複数の周辺デバイスとを具
    備するコンピュータシステムを動作する方法であって、 (a)前記主電源供給手段が前記コンピュータシステム
    に電源を供給している間、記憶手段の記憶に基づき前記
    中央処理部で各プロセスを実行するステップと; (b)前記主電源供給手段の故障を検出し、それに応答
    して前記コンピュータシステムに前記バックアップ電源
    を供給し、かつ、前記中央処理部で遮断手順を実行する
    ステップであって、この遮断手順は、まず、前記コンピ
    ュータシステムの差し迫った遮断を前記各プロセスに警
    告し、それから、前記コンピュータシステムの状態情報
    を前記揮発性メモリから前記不揮発性格納手段に保存す
    ることを含んでおり、前記状態情報は前記プロセスの状
    態情報と前記デバイスの状態情報とを含むことと; (c)前記遮断手順が完了した後に、前記主電源供給手
    段による主電源供給が回復されたならば、再始動手順を
    開始するステップと; (d)前記再始動手順を実行するステップであって、こ
    の再始動手順は、前記不揮発性格納手段から前記保存さ
    れた状態情報を読み出して前記プロセスを再始動し、再
    ブートせずにその実行を継続させることを含んでいるこ
    とと; (e)前記遮断手順の完了後所定時間内に前記主電源供
    給が回復されない場合には、前記バックアップ電源を自
    動的に遮断して、前記中央処理部による実行を停止する
    ステップと; を具備し、 前記中央処理部で各プロセスを実行するステップが、通
    常の動作時において、記憶手段からのコードを中央処理
    部によって実行し、かつこの実行が所要のデバイスに対
    する呼び出しを含んでおり; 前記遮断手順が、実行中のプロセスの状態を保存すべく
    前記中央処理部による該遮断手順の実行を継続している
    間、前記デバイスに対する一連のデバイス呼び出しを発
    行することを含み、該デバイス呼び出しが、 (i) 電源故障を指示する第1のデバイス呼び出しと、 (ii) 更なるデバイス動作の停止を指示する第2のデバ
    イス呼び出しと、 (iii) 状態情報を保存するために前記デバイスによって
    必要とされたメモリ量を指示する第3のデバイス呼び出
    しと、 (iv) 前記デバイスの状態を保存するために前記記憶手
    段内のアドレスを含む第4のデバイス呼び出しとを含
    み、前記記憶手段内の前記アドレスに前記デバイスによ
    って書き込まれたデータを前記不揮発性格納手段に格納
    し; 前記中央処理部による実行を停止するステップが、中央
    処理部によるコードの実行を停止することを含む; ことを特徴とするコンピュータシステムを動作する方
    法。
  2. 【請求項2】 前記再始動手順が、前記デバイスに対す
    る別の一連のデバイス呼び出しを発行することを含んで
    おり、該別の一連のデバイス呼び出しが、 (i) デバイスを起動してデバイスコンフィギュレーシ
    ョンを戻すための第5のデバイス呼び出しと、 (ii) 前記メモリから前記デバイスに関する状態をロー
    ドすることを起動するための第6のデバイス呼び出しで
    あって、この状態は前記不揮発性格納手段から前記不揮
    発性メモリに対して読み出されたものであることと、 (iii) 前記デバイスの通常の動作を起動するための第7
    のデバイス呼び出しとを含むことを特徴とする請求項
    に記載の方法。
  3. 【請求項3】 中央処理部(CPU)と、揮発性メモリ
    及び不揮発性格納手段を含む記憶手段と、主電源供給手
    段と、バックアップ電源と、複数の周辺デバイスとを具
    備するコンピュータシステムを動作する方法であって、 (a)前記主電源供給手段が前記コンピュータシステム
    に電源を供給している間、記憶手段の記憶に基づき前記
    中央処理部で各プロセスを実行するステップと; (b)前記主電源供給手段の故障を検出し、それに応答
    して前記コンピュータ システムに前記バックアップ電源
    を供給し、かつ、前記中央処理部で遮断手順を実行する
    ステップであって、この遮断手順は、まず、前記コンピ
    ュータシステムの差し迫った遮断を前記各プロセスに警
    告し、それから、前記コンピュータシステムの状態情報
    を前記揮発性メモリから前記不揮発性格納手段に保存す
    ることを含んでおり、前記状態情報は前記プロセスの状
    態情報と前記デバイスの状態情報とを含むことと; (c)前記遮断手順が完了した後に、前記主電源供給手
    段による主電源供給が回復されたならば、再始動手順を
    開始するステップと; (d)前記再始動手順を実行するステップであって、こ
    の再始動手順は、前記不揮発性格納手段から前記保存さ
    れた状態情報を読み出して前記プロセスを再始動し、再
    ブートせずにその実行を継続させることを含んでいるこ
    とと; (e)前記遮断手順の完了後所定時間内に前記主電源供
    給が回復されない場合には、前記バックアップ電源を自
    動的に遮断して、前記中央処理部による実行を停止する
    ステップと; を具備し、 前記中央処理部で各プロセスを実行するステップが、通
    常の動作時において、記憶手段からのコードを中央処理
    部によって実行し、かつこの実行がプロセスに対する信
    号を含んでおり; 前記遮断手順が、実行中のプロセスの状態を保存すべく
    前記中央処理部による該遮断手順の実行を継続している
    間、前記プロセスに対する一連の信号を発行することを
    含み、該プロセスに対する信号が、 (i) コードPFRESTARTを備えたSIGPWR
    によって後続される遮断の間でコードPFQUIESC
    Eを備えたSIGPWR、又は (ii) SIGKILLによって後続されるコードPFQ
    UIESCEを備えたSIGTERMを含み; 更に、電源故障時のキルに関するプロセスをマーキング
    するステップを具備することを特徴とするコンピュータ
    システムを動作する方法。
  4. 【請求項4】 前記遮断手順は、該手順が完了する前に
    前記主電源供給が回復したとしても、該手順が完了する
    まで行なわれるものであり; 前記主電源供給手段の故障を検出する前記ステップが、
    前記故障の指示を受け取った後に、前記遮断手順を起動
    する前に、前記故障が単に過渡的なものであるかどうか
    を決定するために、或る時間期間の間待機することを含
    む; ことを特徴とする請求項1乃至3のいずれかに記載の方
    法。
  5. 【請求項5】 前記中央処理部で各プロセスを実行する
    ステップが前記不揮発性格納手段に対する遅らされた書
    き込みを含み、前記遮断手順が全ての未決済の遅らされ
    た書き込みを実行し新しい遅らされた書き込みを起動し
    ないことを含むこと; を特徴とする請求項1乃至4のいずれかに記載の方法。
  6. 【請求項6】 前記電源供給の別の故障を検出し、該別
    の故障が選択された時間遅れの前に生じた場合には前記
    再始動手順を終了させ、該選択された時間遅れの後に前
    記別の故障が生じた場合には前記再始動手順を完了まで
    継続させるステップを更に具備することを特徴とする請
    求項1乃至5のいずれかに記載の方法。
  7. 【請求項7】 前記主電源供給手段がAC回線電源であ
    り、前記バックアップ電源がバッテリーであることと; 前記不揮発性格納手段がディスクメモリであること; を特徴とする請求項1乃至のいずれかに記載の方法。
JP19816699A 1989-12-22 1999-07-12 電源故障対策を備えたコンピュータシステム及びその動作方法 Expired - Fee Related JP3301992B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US45506589A 1989-12-22 1989-12-22
US455065 1989-12-22
US461402 1989-12-22
US461250 1989-12-22
US46140290A 1990-01-05 1990-01-05
US07/461,250 US5295258A (en) 1989-12-22 1990-01-05 Fault-tolerant computer system with online recovery and reintegration of redundant components

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2405899A Division JP3030658B2 (ja) 1989-12-22 1990-12-25 電源故障対策を備えたコンピュータシステム及びその動作方法

Publications (2)

Publication Number Publication Date
JP2000112584A JP2000112584A (ja) 2000-04-21
JP3301992B2 true JP3301992B2 (ja) 2002-07-15

Family

ID=27412627

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2405899A Expired - Lifetime JP3030658B2 (ja) 1989-12-22 1990-12-25 電源故障対策を備えたコンピュータシステム及びその動作方法
JP19816699A Expired - Fee Related JP3301992B2 (ja) 1989-12-22 1999-07-12 電源故障対策を備えたコンピュータシステム及びその動作方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2405899A Expired - Lifetime JP3030658B2 (ja) 1989-12-22 1990-12-25 電源故障対策を備えたコンピュータシステム及びその動作方法

Country Status (4)

Country Link
EP (1) EP0683456B1 (ja)
JP (2) JP3030658B2 (ja)
AT (1) ATE168796T1 (ja)
DE (1) DE69032508T2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60201077T2 (de) * 2002-06-13 2005-09-15 Fujitsu Siemens Computers, LLC, Milpitas Verfahren um einen Computer aus einem Cluster zu entfernen
JP2004164072A (ja) * 2002-11-11 2004-06-10 Hitachi Ltd ディスク制御装置およびディスク制御装置の制御方法
JP2004220216A (ja) * 2003-01-14 2004-08-05 Hitachi Ltd San/nas統合型ストレージ装置
US7139629B2 (en) * 2003-04-28 2006-11-21 Palo Alto Research Center Incorporated Planning and scheduling for failure recovery system and method
EP1779245B1 (en) * 2004-07-20 2018-06-13 Microsoft Technology Licensing, LLC Method and system for minimizing loss in a computer application
US7489923B2 (en) 2005-08-05 2009-02-10 Research In Motion Limited Methods and systems for handling software operations associated with startup and shutdown of handheld devices
KR101321433B1 (ko) 2006-09-19 2013-10-25 삼성전자주식회사 컴퓨터 시스템 및 그 전원제어방법
CN101576860B (zh) * 2009-06-11 2011-06-08 成都市华为赛门铁克科技有限公司 linux或windows操作***的测试方法及***
GB2503439A (en) 2012-06-26 2014-01-01 Ibm Method of restarting a software system that has unintentional shutdown.
EP3113027A4 (en) 2014-02-27 2017-11-01 Mitsubishi Electric Corporation Data storage device
US9389665B1 (en) * 2015-06-19 2016-07-12 Rockwell Collins, Inc. Power warning monitor system and method
CN110908725B (zh) * 2018-08-27 2024-04-05 京东科技控股股份有限公司 应用程序启动方法、装置、电子设备及可读介质
CN109815071A (zh) * 2019-01-04 2019-05-28 珠海妙存科技有限公司 一种基于Linux***的存储介质掉电测试方法
CN110490737B (zh) * 2019-07-29 2024-03-19 创新先进技术有限公司 交易渠道控制方法、装置和电子设备
CN111240896B (zh) * 2020-01-06 2024-04-02 深圳市卡数科技有限公司 一种终端数据同步方法、装置、服务器及存储介质
CN117290171B (zh) * 2023-11-27 2024-03-22 深圳市赛弥康电子科技有限公司 一种内存芯片测试设备及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
SE450299B (sv) * 1980-03-21 1987-06-15 Philips Nv Forfarande och anordning for att vid stromavbrott styra en apparat
US4453215A (en) 1981-10-01 1984-06-05 Stratus Computer, Inc. Central processing apparatus for fault-tolerant computing
US4644498A (en) 1983-04-04 1987-02-17 General Electric Company Fault-tolerant real time clock
US4733353A (en) 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
US4763333A (en) * 1986-08-08 1988-08-09 Universal Vectors Corporation Work-saving system for preventing loss in a computer due to power interruption
JPS6426252A (en) * 1987-07-22 1989-01-27 Fanuc Ltd Data keeping/restoring method

Also Published As

Publication number Publication date
ATE168796T1 (de) 1998-08-15
DE69032508D1 (de) 1998-08-27
JPH06208477A (ja) 1994-07-26
EP0683456B1 (en) 1998-07-22
EP0683456A1 (en) 1995-11-22
JP2000112584A (ja) 2000-04-21
JP3030658B2 (ja) 2000-04-10
DE69032508T2 (de) 1999-03-25

Similar Documents

Publication Publication Date Title
US5295258A (en) Fault-tolerant computer system with online recovery and reintegration of redundant components
US5317752A (en) Fault-tolerant computer system with auto-restart after power-fall
EP0433979A2 (en) Fault-tolerant computer system with/config filesystem
US5327553A (en) Fault-tolerant computer system with /CONFIG filesystem
US4965717A (en) Multiple processor system having shared memory with private-write capability
TWI236620B (en) On-die mechanism for high-reliability processor
US7496786B2 (en) Systems and methods for maintaining lock step operation
US5384906A (en) Method and apparatus for synchronizing a plurality of processors
US6571324B1 (en) Warmswap of failed memory modules and data reconstruction in a mirrored writeback cache system
US5890003A (en) Interrupts between asynchronously operating CPUs in fault tolerant computer system
JP3301992B2 (ja) 電源故障対策を備えたコンピュータシステム及びその動作方法
US5958070A (en) Remote checkpoint memory system and protocol for fault-tolerant computer system
Siewiorek Fault tolerance in commercial computers
JPH079626B2 (ja) 多重プロセッサを備えたフォールトトレラントなコンピュータシステム
EP0415545A2 (en) Method of handling errors in software
JP7351933B2 (ja) エラーリカバリ方法及び装置
JPH01152543A (ja) 欠陥分離及び修理機能を有する耐欠陥コンピュータシステム
EP0415549A2 (en) Method of converting unique data to system data
US20060107107A1 (en) System and method for providing firmware recoverable lockstep protection
US7624302B2 (en) System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees