(57)【要約】【課題】フォールトトレラントコンピュータシステムにおいて、ＣＰＵからの入出力トランザクションの発行時間および順序のずれを許容し、スループットの低下を防ぐための、入出力トランザクション格納バッファを小容量で提供する。【解決手段】ＣＰＵ出力を蓄積するバッファの領域を分割し、各入出力ターゲットに専用の領域（図３の２２０、２２０’、２２０’’）と共用する領域２６０、２６０’を設ける。専用領域で入出力ターゲット間の順序追い越しを確実に許容し、共用領域によって実質的に各入出力ターゲットに対するバッファ容量を大きくすることで速度低下を回避する。【選択図】図３
2008234141.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御する入出力サブシステムとからなるシステムが一対のものとして構成され、前記ＣＰＵサブシステムが二重化の構成をとり、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記入出力サブシステムは複数の入出力コントローラを備え、前記ＣＰＵサブシステムと前記入出力サブシステムとはリンクを介して接続されるフォールトトレラントコンピュータであって、
前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、その受信時間の差分を吸収するためのバッファ手段を備え、
前記バッファ手段は、前記ＣＰＵサブシステムから送られてくるデータを全て蓄積する第１のバッファ手段と、前記入出力サブシステムに属する複数の入出力コントローラのそれぞれに分配されたデータを蓄積する第２のバッファ手段とを備えることを特徴とするフォールトトレラントコンピュータ。
【請求項２】
前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、
前記第１のバッファ手段または前記第２のバッファ手段を選択して蓄積させる制御手段と、
前記第１のバッファ手段に蓄積されたデータを前記第２のバッファ手段に蓄積させる制御手段と、
を更に備えることを特徴とする請求項１記載のフォールトトレラントコンピュータ。
【請求項３】
ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御する入出力サブシステムとからなるシステムが一対のものとして構成され、前記ＣＰＵサブシステムが二重化の構成をとり、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記入出力サブシステムは複数の入出力コントローラを備え、前記ＣＰＵサブシステムと前記入出力サブシステムとはリンクを介して接続されるフォールトトレラントコンピュータで行われるデータ送信制御方法であって、
前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、その受信時間の差分をバッファ手段により吸収するステップと、
前記ＣＰＵサブシステムから送られてくるデータを全て前記バッファ手段のうちの第１のバッファ手段に蓄積するステップと、前記入出力サブシステムに属する複数の入出力コントローラのそれぞれに分配されたデータを前記バッファ手段のうちの第２のバッファ手段に蓄積するステップとを備えることを特徴とするデータ送信制御方法。
【請求項４】
前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、
前記第１のバッファ手段または前記第２のバッファ手段を選択して蓄積させるステップと、
前記第１のバッファ手段に蓄積されたデータを前記第２のバッファ手段に蓄積させるステップと、
を更に備えることを特徴とする請求項３記載のデータ送信制御方法。
【請求項５】
コンピュータをフォールトトレラントコンピュータとして機能させるためのプログラムであって、
前記フォールトトレラントコンピュータは、
ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御する入出力サブシステムとからなるシステムが一対のものとして構成され、前記ＣＰＵサブシステムが二重化の構成をとり、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記入出力サブシステムは複数の入出力コントローラを備え、前記ＣＰＵサブシステムと前記入出力サブシステムとはリンクを介して接続されるフォールトトレラントコンピュータであって、
前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、その受信時間の差分を吸収するためのバッファ手段を備え、
前記バッファ手段は、前記ＣＰＵサブシステムから送られてくるデータを全て蓄積する第１のバッファ手段と、前記入出力サブシステムに属する複数の入出力コントローラのそれぞれに分配されたデータを蓄積する第２のバッファ手段とを備えることを特徴とするプログラム。
【請求項６】
前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、
前記第１のバッファ手段または前記第２のバッファ手段を選択して蓄積させる制御手段と、
前記第１のバッファ手段に蓄積されたデータを前記第２のバッファ手段に蓄積させる制御手段と、
を更に備えることを特徴とする請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントコンピュータシステム及びそこで行われるデータ送信制御方法に関し、特にロックステップ動作するＣＰＵサブシステムの同期外れ検出後、故障箇所の特定後に故障ＣＰＵの切り離しを行い、残りの正常なＣＰＵで処理を継続するためのフォールトトレラントコンピュータシステム及びそこで行われるデータ送信制御方法に関する。
【背景技術】
【０００２】
フォールトトレラントコンピュータでは、冗長化したＣＰＵサブシステムの出力を比較し、出力不一致を検出した場合に被疑ＣＰＵサブシステムの出力結果を破棄し、システムからの切り離しを行う。しかし、近年のＣＰＵにおける動作速度の向上に伴い、冗長化したＣＰＵの出力結果の出力順序や出力タイミングが必ずしも一意でない場合があった。これを誤って故障として検出することのないような出力比較を行うために、ＣＰＵの出力結果を一定量蓄積し、その内容から順序やタイミングに依存せずにその一致性を検証する手段がとられてきた。ＣＰＵの出力結果のずれは、大抵はＣＰＵ内部で処理されるスレッドの実行タイミングや順序のずれに起因するものであり、各スレッドはお互いの順序依存関係を持たず、それぞれのスレッドが異なる入出力ターゲットに対する処理を実行している。したがって出力結果の到着順序に依存しない比較は、各入出力ターゲット毎にバッファを設けて入出力ターゲット毎に比較を行うことで異なる入出力ターゲット間の追い越しを認めた比較を行うことで実現する。またバッファに蓄積することで異なるタイミングで到着する出力結果を比較することも出来る。
【０００３】
図１は、従来のフォールトトレラントコンピュータシステムにおいて、ＣＰＵサブシステムの発行する入出力トランザクションの時間的なずれを許容するトランザクション制御方法の一例を示すブロック図である。ＣＰＵサブシステム１００は、プロセッサ、メモリ、メモリコントローラから構成され、入出力サブシステムに対して入出力トランザクションを発行する。また、クロックジェネレータ１０１からクロックが供給されることで動作する。ＣＰＵサブシステム１００’は、ＣＰＵサブシステム１００と全く同一の構成となっており、クロックジェネレータ１０１から供給されるクロックで動作する。ＣＰＵサブシステム１００およびＣＰＵサブシステム１００’は、同一クロックタイミングで同一の処理を実行することで、互いに冗長構成となっている。入出力サブシステム２００は、ＣＰＵサブシステムから発行された入出力トランザクションを受取り、それぞれのＣＰＵサブシステム毎に接続される入出力ルータ２１０、２１０’によって入出力トランザクションの発行先に応じて適切な入出力コントローラ２５０、２５０’、２５０’’へ入出力トランザクションを分配する。ＦＩＦＯ  ２２０、２２０’、２２０’’は入出力コントローラ毎に配置され、入出力ルータ２１０、２１０’のそれぞれが分配する入出力トランザクションを別々に格納する。比較器２４０、２４０’、２４０’’は、ＦＩＦＯで別々に格納された入出力トランザクションの比較を行い、その不一致を検出した場合に、故障したものと判断されたＣＰＵサブシステムからの入出力トランザクションを以後破棄する。
【０００４】
次に動作を説明する。冗長化されたＣＰＵサブシステム１００と１００’の出力する入出力トランザクションはそれぞれ入出力ルータ２１０と２１０’において、出力先ターゲットとなる入出力コントローラ  ２５０、２５０’、２５０’’  に従ったＦＩＦＯ形式のバッファ２２０、２２０’、２２０’’へと送られる。それぞれのＦＩＦＯは、ＣＰＵサブシステム１００、１００’に対応したＦＩＦＯを持ち、両方からの出力結果がそろった時点でそれぞれの比較器２４０、２４０’、２４０’’で一致検証を行う。一致検証後、有効な出力結果はそれぞれ接続されている入出力コントローラ２５０、２５０’、２５０’’へと送られる。
【０００５】
この方式では、ＣＰＵサブシステムからの出力がバッファに送られる前に各入出力コントローラに専用のバッファにルーティングされてから待ち合わせが行われるため、異なる入出力コントローラ間での追い越しが許されるが、待ち合わせに使われるバッファが、それぞれの入出力コントローラ専用となるため、ＣＰＵサブシステムからの出力が特定の入出力コントローラに偏っている場合には効率的ではない。
【０００６】
図２は別の入出力トランザクションの制御方式をとる構成である。ランダムアクセス方式のバッファ２３０は、それぞれのＣＰＵサブシステム１００、１００’が発行する入出力トランザクションを格納、発行先がそれぞれ入出力コントローラ２５０、２５０’、２５０’’に対応する入出力トランザクション同士の組み合わせで、格納された入出力トランザクションを比較器２４０に送る。入出力ルータ２１０は、比較器から受取った入出力トランザクションを発行先に応じて適切な入出力コントローラ２５０、２５０’、２５０’’へと分配する。
【０００７】
次に動作を説明する。冗長化されたＣＰＵサブシステム１００、１００’の出力は一旦、ランダムアクセス方式のバッファ２３０へと送られて、両系ＣＰＵサブシステムの出力のタイミングを合わせる。ここで、出力先ターゲットである入出力コントローラ  ２５０、２５０’、２５０’’のうち、両系ＣＰＵサブシステムからの出力が揃っているターゲットに対する出力が比較器２４０で比較され、有効な出力が入出力ルータ２１０を経由してターゲットとなる入出力コントローラへと送られる。
【０００８】
この方式では、全ての入出力コントローラに対する出力が１つのバッファで共用されるため、入出力コントローラへの出力が偏った場合でも、このバッファを使い切ることができるため効率がよい。しかし、特定の入出力コントローラに対して高負荷になっている場合にバッファがフルとなると、入出力コントローラ間での追い越しができなくなる。
【特許文献１】特許第３８２１８０６号公報
【特許文献２】特開２００４−３１８７０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
解決しようとする第１の問題点は、ＣＰＵの発行する入出力トランザクションの時間的なずれを許容する場合に、入出力トランザクションスループットを低下させないために、入出力トランザクションの一時格納バッファを発行先入出力コントローラ毎に大容量にしなければならないことである。また、バッファ容量の大きさは、入出力サブシステム内の入出力コントローラ数が増加するに従って無視することができなくなる。
【００１０】
その理由は、入出力トランザクション発行の時間的なずれが始まると、対応する入出力トランザクションが揃うまで待ち合わせが行われ、バッファ内に入出力トランザクションが蓄積され続けることにより、滞留する入出力トランザクションが累積されるため、大容量のバッファでこれを吸収する必要があるためである。
【００１１】
第２の問題点は、各入出力コントローラに対応するバッファの共用化を図った場合に、一定以上のバッファ容量を確保しなければ、特定の入出力コントローラへの負荷増大時には、入出力トランザクションの追い越しができなくなる場合があることである。
【００１２】
その理由は、バッファの共用化が行われると入出力トランザクションの発行が大量に行われた場合に、特定の入出力コントローラが一時的に入出力トランザクションを受け付けられない状態になると、当該入出力コントローラへの入出力トランザクションがバッファ中に滞留し続け、他の入出力コントローラへの入出力トランザクションを格納するスペースを圧迫し、最終的に入出力トランザクションの追い越しを許容するだけのバッファ容量を確保できなくなるためである。
【００１３】
フォールトトレラントコンピュータでは、冗長化したＣＰＵサブシステムの出力を比較し、出力不一致を検出した場合に被疑ＣＰＵサブシステムの出力結果を破棄し、システムからの切り離しを行う。しかし、近年のＣＰＵにおける動作速度の向上に伴い、冗長化したＣＰＵの出力結果の出力順序や出力タイミングが必ずしも一意でない場合があった。これを誤って故障として検出することのないような出力比較を行うために、ＣＰＵの出力結果を一定量蓄積し、その内容から順序やタイミングに依存せずにその一致性を検証する手段がとられてきた。出力結果の到着順序に依存しない比較は、各入出力ターゲット毎にバッファを設けて入出力ターゲット毎に比較を行うことで異なる入出力ターゲット間の追い越しを認めた比較を行うことで実現する。またバッファに蓄積することで異なるタイミングで到着する出力結果を比較することも出来る。しかし、それぞれのバッファ容量を十分に確保しなければ伝送速度の低下につながるが、各入出力ターゲット毎に大容量のバッファを準備するのは効率が悪い。効率を重視してバッファを共有すると一時的に特定の入出力ターゲットが応答できない時に、順序の変わった出力があると、順序追い越しの待ち合わせが出来ずに不一致と判断せざるを得ない場合がある。
【００１４】
本発明の目的は、フォールトトレラントコンピュータシステムにおいて、ＣＰＵからの入出力トランザクションの発行時間および順序のずれを許容し、スループットの低下を防ぐための、入出力トランザクション格納バッファを小容量で提供することにある。
【課題を解決するための手段】
【００１５】
ＣＰＵ出力を蓄積するバッファの領域を分割し、各入出力ターゲットに専用の領域（図３の２２０、２２０’、２２０’’）と共用する領域（図３の２６０、２６０’）を設ける。
【００１６】
専用領域で入出力ターゲット間の順序追い越しを確実に許容し、共用領域によって実質的に各入出力ターゲットに対するバッファ容量を大きくすることで速度低下を回避する。
【００１７】
本発明によれば、ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御する入出力サブシステムとからなるシステムが一対のものとして構成され、前記ＣＰＵサブシステムが二重化の構成をとり、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記入出力サブシステムは複数の入出力コントローラを備え、前記ＣＰＵサブシステムと前記入出力サブシステムとはリンクを介して接続されるフォールトトレラントコンピュータであって、前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、その受信時間の差分を吸収するためのバッファ手段を備え、前記バッファ手段は、前記ＣＰＵサブシステムから送られてくるデータを全て蓄積する第１のバッファ手段と、前記入出力サブシステムに属する複数の入出力コントローラのそれぞれに分配されたデータを蓄積する第２のバッファ手段とを備えることを特徴とするフォールトトレラントコンピュータが提供される。
【００１８】
上記のフォールトトレラントコンピュータにおいて、前記入出力サブシステムは、前記ＣＰＵサブシステムから送られてくるデータを受信し、前記第１のバッファ手段または前記第２のバッファ手段を選択して蓄積させる制御手段と、前記第１のバッファ手段に蓄積されたデータを前記第２のバッファ手段に蓄積させる制御手段と、を更に備えるようにしてもよい。
【発明の効果】
【００１９】
専用領域のバッファによって、特定の入出力コントローラに対する入出力トランザクションの当該入出力コントローラからの引き取り待ちとなり共用領域を占有してしまっても、他の入出力コントローラに対する入出力トランザクションはそれぞれの専用領域のバッファに引き取ることができるため、入出力コントローラ間の順序追い越しを確実に許容する。
【００２０】
各入出力コントローラのバッファを共有することで、全体で必要なバッファ容量を従来よりも削減しながらも、実質的なバッファ容量の拡大ができるため、速度低下を回避することができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【００２２】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２３】
図３を参照すると、本発明の一実施の形態としてのフォールトトレラントコンピュータシステムが示されている。
【００２４】
図３において、ＣＰＵサブシステム１００および１００’は、プロセッサ、メモリ、メモリコントローラから構成され、入出力サブシステム２００に対して入出力トランザクションを発行する。クロックジェネレータ１０１はＣＰＵサブシステム１００および１００’にクロックを供給する。入出力サブシステム２００は、ＣＰＵサブシステム１００および１００’より発行される入出力トランザクションを受取り、各入出力トランザクションの発行先に応じて適切な入出力コントローラ２５０、２５０’、２５０’’へ入出力トランザクションを分配する。
【００２５】
入出力サブシステム２００において、入出力ルータ２１０はＣＰＵサブシステム１００からの入出力トランザクションを受取り、入出力トランザクションの発行先をデコード、適切な入出力コントローラ２５０、２５０’、２５０’’に向けて入出力トランザクションを分配する機能を提供する。同様に入出力ルータ２１０’はＣＰＵサブシステム１００’からの入出力トランザクションを受取り、適切な入出力コントローラ２５０、２５０’、２５０’’に向けて分配する。バッファ２２０はＦＩＦＯ形式のバッファであり、入出力ルータ２１０と入出力ルータ２１０’からの入出力トランザクションをそれぞれ格納し、両方のルータからの入出力トランザクションが揃うことで格納された入出力トランザクションを比較器２４０に渡す。比較器２４０は、入出力トランザクションの比較を行い、トランザクション内容が一致する場合には、そのトランザクションを入出力コントローラ２５０へ送る。入出力トランザクションの比較の結果、トランザクション内容が不一致の場合には、それ以降、故障したものと判断されるＣＰＵサブシステムからの入出力トランザクションを破棄する。バッファ２２０および比較器２４０はそれぞれ関連する入出力コントローラ毎に用意され、入出力コントローラ２５０’および２５０’’にそれぞれバッファ２２０’および２２０’’、比較器２４０’および２４０’’がある。バッファ２６０は、ランダムアクセス式のバッファで、入出力ルータ２１０が特定の入出力コントローラに向けて入出力トランザクションを送ろうとした時に、バッファ２００または２００’または２００’’のうち、当該入出力コントローラに対応するバッファがフルの場合に、その入出力トランザクションを一時的に格納する。
【００２６】
次に図３の入出力コントローラ２００における入出力トランザクションの制御を説明する。
【００２７】
冗長化されたＣＰＵサブシステム１００、１００’の発行する入出力トランザクションは、それぞれ入出力ルータ２１０、２１０’へと送られる。
【００２８】
ここで、図４は入出力ルータ２１０における入出力トランザクションの処理を示している。ＦＩＦＯ形式のバッファ２２０、２２０’、２２０’’のうち、入出力トランザクションの発行先となるバッファに空きがあり、かつ、全入出力コントローラ共用のランダムアクセス形式のバッファ２６０に当該入出力コントローラを発行先とする入出力トランザクションが格納されていない場合にはＦＩＦＯ  ２２０、２２０’、２２０’’へと出力を送る。一方、入出力トランザクションの発行先となるＦＩＦＯバッファに空きがない、または、全入出力コントローラ共用バッファに当該入出力コントローラを発行先とするトランザクションが格納されている場合には、入出力コントローラ共用バッファ２６０へ一時蓄積する。また、入出力ルータ２１０’も対応する共用バッファ２６０’を用いて同様の処理を行う。
【００２９】
入出力コントローラ共用バッファ２６０、２６０’は、ランダムアクセス方式のバッファで、蓄積された入出力トランザクションは、ＦＩＦＯ  ２２０、２２０’、２００’’のうち、当該入出力トランザクションの発行先に対応する入出力コントローラのＦＩＦＯに空きが出来たものから該当ＦＩＦＯへと送られる。各入出力コントローラに専用で用意されるＦＩＦＯ  ２２０、２２０’、２２０’’は、必要最小限の大きさのＦＩＦＯであり、両系のＣＰＵサブシステムからの出力が揃った時点で、対応する比較器２４０、２４０’、２４０’’で比較が行われ、有効な出力がそれぞれに対応する入出力コントローラ２５０、２５０’、２５０’’へと送られる。
【００３０】
別の実施形態を図５で説明する。図５において、ＣＰＵサブシステム１００、１００’、１００’’によって３重化冗長構成となっている。これに伴い、入出力ルータ２１０、２１０’、２１０’’と共用バッファ２６０、２６０’、２６０’’がそれぞれのＣＰＵサブシステムに対応する。また、入出力コントローラ専用ＦＩＦＯ  ２２０、２２０’、２２０’’も、増加した入出力ルータからの入出力トランザクションをそれぞれ引き取るように増やされる。
【００３１】
本実施形態において、各入出力ルータの入出力トランザクション制御は、図４における制御と同一のものが適用できる。
【００３２】
本実施形態は、フォールトトレラントコンピュータシステムとしてはより高度なＣＰＵサブシステムの３重化によって、故障ＣＰＵサブシステムの特定をより確実に行うことができ、故障ＣＰＵサブシステムを取り除いた状態でも、ＣＰＵの冗長構成を維持するものである。
【００３３】
第１の効果は、各入出力コントローラ毎に大容量のバッファを設ける必要がないということである。
【００３４】
その理由は、  全ての入出力コントローラが共用する１組のバッファを設けるため、バッファの容量を効率的に利用することができるためである。
【００３５】
第２の効果は、  特定の入出力コントローラを出力先とする入出力トランザクションが集中し、当該入出力コントローラが入出力トランザクションを引き取ることが出来なくなったとしても、別の入出力コントローラからの入出力トランザクションが追い越しできることである。
【００３６】
その理由は、特定の入出力コントローラが入出力トランザクションを引き取ることができなくとも、各々の入出力コントローラに専用のＦＩＦＯが用意されているため、他の入出力コントローラは入出力トランザクションを引き取ることができるためである。
【図面の簡単な説明】
【００３７】
【図１】従来のフォールトトレラントコンピュータのブロック図の例１である。
【図２】従来のフォールトトレラントコンピュータのブロック図の例２である。
【図３】本発明の第１の実施の形態のブロック図である。
【図４】本発明の動作を説明するフローチャートである。
【図５】本発明の第２の実施の形態のブロック図である。
【符号の説明】
【００３８】
１００、１００’、１００’’  ＣＰＵサブシステム
１０１  クロックジェネレータ
２００  入出力サブシステム
２１０、２１０’、２１０’’  入出力サブシステム
２２０、２２０’、２２０’’  入出力コントローラ専用ＦＩＦＯ
２３０  入出力コントローラ共用のランダムアクセス形式のバッファ
２４０、２４０’、２４０’’  入出力トランザクション比較器
２５０、２５０’、２５０’’  入出力コントローラ
２６０、２６０’、２６０’’  入出力コントローラ共用のランダムアクセス形式のバッファ
【図１】
2008234141.tif 000003
【図２】
2008234141.tif 000004
【図３】
2008234141.tif 000005
【図４】
2008234141.tif 000006
【図５】
2008234141.tif 000007