(57)【要約】      （修正有）【課題】  データのフロー制御を短時間で行うことのできるフォールトトレラントコンピュータを実現する。【解決手段】  ＣＰＵサブシステムと、ＩＯサブシステムとからなるシステムが一対のものとして二重化され、前記ＩＯサブシステムは対となるＩＯサブシステムとクロスリンクを介して接続されるフォールトトレラントコンピュータであって、前記ＣＰＵサブシステムは、前記ＩＯサブシステムから送られてくるデータを受信し、蓄積量が第1の閾値に達すると第1の信号を前記ＩＯサブシステムへ送出し、蓄積量が前記第1の閾値による蓄積量よりも大きな第２の閾値に達すると第２の信号を前記ＩＯサブシステムへ送出し、前記ＩＯサブシステムは、前記第１および第２の信号を受信すると前記ＣＰＵサブシステムへ向かうデータの送出を停止し、前記第２の信号を受信すると前記クロスリンクを介して対をなすＩＯサブシステムへ送出するフローコントローラと、を備える。【選択図】  図１
2006178618.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御するＩＯサブシステムとからなるシステムが一対のものとして二重化されて構成され、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記ＩＯサブシステムは対となるＩＯサブシステムとクロスリンクを介して接続されるフォールトトレラントコンピュータであって、
前記ＣＰＵサブシステムは、前記ＩＯサブシステムから送られてくるデータを受信し、蓄積量が第1の閾値に達すると第1の信号を前記ＩＯサブシステムへ送出し、蓄積量が前記第1の閾値による蓄積量よりも大きな第２の閾値に達すると第２の信号を前記ＩＯサブシステムへ送出するインバウンド受信バッファを備え、
前記ＩＯサブシステムは、
前記第１および第２の信号を受信すると前記ＣＰＵサブシステムへ向かうデータの送出を停止するIO I/Fコントローラと、
前記第２の信号を受信すると前記クロスリンクを介して対をなすＩＯサブリンクのIO I/Fコントローラへ送出するフローコントローラと、を備えることを特徴とするフォールトトレラントコンピュータ。
【請求項２】
ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御するＩＯサブシステムとからなるシステムが一対のものとして二重化されて構成され、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記ＩＯサブシステムは対となるＩＯサブシステムとクロスリンクを介して接続されるフォールトトレラントコンピュータで行なわれるデータ送信制御方法であって、
前記ＣＰＵサブシステムで行われる、前記ＩＯサブシステムから送られてくるデータを受信し、蓄積量が第1の閾値に達すると第1の信号を前記ＩＯサブシステムへ送出し、蓄積量が前記第1の閾値による蓄積量よりも大きな第２の閾値に達すると第２の信号を前記ＩＯサブシステムへ送出するステップと、
前記ＩＯサブシステムで行なわれる、
前記第１および第２の信号を受信すると前記ＣＰＵサブシステムへ向かうデータの送出を停止するステップと、
前記第２の信号を受信すると前記クロスリンクを介して対をなすＩＯサブリンクへ送出するステップと、を備えることを特徴とするデータ送信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵおよび主記憶装置を備えたＣＰＵサブシステムとＩＯサブシステムとからなるシステムを二重冗長構成としたフォールトトレラントコンピュータおよびデータ送信制御方法に関する。
【背景技術】
【０００２】
近年、コンピュータの多機能化に伴い、様々な分野でコンピュータが利用されるようになってきている。そのため、障害発生時においても、コンピュータを継続して動作させることが要求され、それに対して、例えば特許文献１に開示されているようなシステムが二重化されたフォールトトレラント技術が採用されている。
【０００３】
このようなフォールトトレラント技術が採用されたフォールトトレラントコンピュータの中には、例えば、ＣＰＵおよび主記憶装置を備えたＣＰＵサブシステムとＩＯサブシステムとからなるシステムが二重化され、２つのＣＰＵサブシステムが共通の内部クロックによって全く同一の動作を行うロックステップ方式が採られ、２つのＩＯサブシステム間の通信に利用される高速インタフェースに、内部クロックとは非同期に動作するシリアルリンクが使用されているものがある。
【０００４】
図４は、上記のような構成のフォールトトレラントコンピュータの構成を示すブロック図である。
【０００５】
図４において、＃０と＃１の２つのシステムが示されている。各システムの構成は全く同一であり、それぞれ一対のものとして二重化され、各システムがシリアルIO I/Fクロスリンクを介して接続されている。
【０００６】
＃０システムと＃１システムのそれぞれは、共通の内部クロックによって同期動作するロックステップ方式が採られているＣＰＵサブシステムと、各システムごとのクロックによって動作するＩＯサブシステムから構成されている。
【０００７】
ＩＯサブシステムは、外部とのデータの入出力を制御するIO I/Fコントローラ２１１−０，２１１−１と、IO I/Fコントローラ２１１−０，２１１−１からＣＰＵサブシステム側に渡されるデータを一時保持するバッファ２０８−０，２０８−１と、ＣＰＵサブシステム側からIO I/Fコントローラ２１１−０，２１１−１に渡されるデータを一時保持するバッファ２０９−０，２０９−１と、ＣＰＵサブシステム側からのIO I/Fコントローラ２１１−０，２１１−１へのアクセスとシリアルIO I/Fクロスリンクを介して他方のシステムからのIO I/Fコントローラ２１１−０，２１１−１へのアクセスとを比較するＩＯアクセス比較器２１０−０，２１０−１と、バッファ２０８−０，２０８−１のデータ蓄積量を監視し、一定の閾値以上となったときにその旨をＩＯＩ／Ｆコントローラ２１１−０，２１１−１に通知するフローコントローラ２１２−０，２１２−１と、バッファ２０９−０，２０９−１の蓄積量が一定の閾値以上となったときにＣＰＵサブシステム側から送られてくるAlmost Full信号Ｓ２３−０，Ｓ２３−１を受け、その旨をシリアルIO I/Fクロスリンクを介して他方のシステムを構成するIO I/Fコントローラ２１１−０，２１１−１へ通知するフローコントローラ２０７−０，２０７−１から構成されている。
【０００８】
一方、ＣＰＵサブシステムは、ＣＰＵ２０１−０，２０１−１と、主記憶装置２０２−０，２０２−１と、主記憶装置２０２−０，２０２−１に対するデータの書き込みや読み出しを制御するメモリバスコントローラ２０３−０，２０３−１と、ＣＰＵ２０１−０，２０１−１に対するアクセスを制御するＣＰＵバスコントローラ２０４−０，２０４−１と、インバウンド受信バッファ２０６−０，２０６−１を具備してＣＰＵバスコントローラ２０４−０，２０４−１、バッファ２０８−０，２０８−１，２０９−０，２０９−１のアクセス制御を切り替えるルータ２０５−０，２０５−１から構成されている。
【０００９】
上述したように＃０システムのＣＰＵと＃１システムのＣＰＵ、ＣＰＵ２０１−０，２０１−１はロックステップ同期で、全く同一の動作を行う。この同一動作を行うＣＰＵサブシステムの範囲は図４の破線を境界としてＣＰＵ、ＣＰＵ２０１−０，２０１−１からルータ２０５−０，２０５−１までとなっている。
【００１０】
＃０システムと＃１システムの同期動作を維持するためには、ＩＯサブシステム側からの応答がＣＰＵサブシステムとの境界上で同時に行なわれる必要がある。つまり、IO I/Fコントローラ２１１−０，２１１−１から、各ＣＰＵサブシステムへのアクセスの到着、および各ＣＰＵサブシステムからIO I/Fコントローラ２１１−０，２１１−１へのアクセスの引き取りは＃０システムと＃１システムが同時になっていなければならない。
【００１１】
以下の説明では、ＣＰＵサブシステム側からＩＯサブシステム側へのアクセスをアウトバウンドアクセス、ＩＯサブシステム側からＣＰＵサブシステム側へのアクセスをインバウンドアクセスとして説明する。
【００１２】
まず、ＣＰＵサブシステムからIO I/Fコントローラ２１１−０，２１１−１方向へのアウトバウンドアクセスの場合についてその動作を示す図５を参照して説明する。
【００１３】
＃０システムと＃１システムのＣＰＵサブシステムはロックステップ同期動作を行なっているため、ルータ２０５−０，２０５−１からのアクセスパケットの出力は＃０システムと＃１システムで同時に開始される。ターゲットとなるIO I/Fコントローラ２１１−０，２１１−１が＃０側のIO I/Fコントローラ２１１−０である場合、＃０システムのＣＰＵサブシステムからのアクセスパケットは、内部データバスを経由してバッファ２０９−０で一定時間遅らされた後にＩＯアクセス比較器２１０−０に到達する。一方、＃１システムのＣＰＵサブシステムからのアクセスパケットは＃１システムから一端外部データバスであるシリアルIO I/Fクロスリンクを経由して＃０システムのＩＯアクセス比較器２１０−０に到達する。通常外部データバスを経由する側の方が、IO I/Fと内部ロジックとのクロック差分のための同期化や、配線のフライトタイムロスがあるため、到達時間は遅れてしまうが、内部バス側のバッファでこれを補正できるため、ＩＯアクセス比較器２１０−０への到達時刻は同時にできる。また、どちらのバスにもＩＯアクセス比較器２１０−０，２１０−１の前段にはバッファ２０９−０，２０９−１があり、バッファ２０９−０，２０９−１が空いている限りそれぞれのＣＰＵサブシステムからのアクセスパケットを引き取り続ける。
【００１４】
ＩＯアクセス比較器２１０−０の前段に設けられるバッファ２０９−０の蓄積量が、一定の閾値に到達すると、アウトバウンドアクセスを停止させるフローコントロールが発生する。このときのフローコントロールについてその動作を示す図６を参照して説明する。
【００１５】
一般的な高速ＩＯインタフェースは、適宜受信バッファクレジットを送信することで、送信側は受信可能なパケット容量を認識し、受信バッファのオーバーフローの発生を抑止している。通常、このクレジットの送信はユーザの送信したいデータパケットに割り込む形で行なわれる。
【００１６】
フローコントロールも上記のクレジットと同様に、IO I/Fコントローラ２１１−０からのインバウンド方向のアクセスパケットに割り込む形で発生する。＃０システム側にはAlmost Full信号Ｓ２２−０およびＳ２２−１が内部バスを経由してルータ２０３−０，２０３−１に通知され、また、＃１システムには外部バスのシリアルIO I/Fクロスリンクを経由してルータ２０３−０，２０３−１に通知される。＃０システム側への通知はやはりクロスリンク経由のフライトタイムを考慮した時間を調整して行なわれ、両システムへの通知は同時に到着させる。
【００１７】
次に、IO I/Fコントローラ２１１−０，２１１−１から、＃０システムおよび＃１システムのＣＰＵサブシステム方向へのインバウンドアクセスについてその動作を示す図７を参照して説明する。
【００１８】
IO I/Fコントローラ２１１−０から＃０システムのＣＰＵサブシステムおよび＃１システムのＣＰＵサブシステムへのアクセスパケットの出力は同時に行なわれる。＃０システムのＣＰＵサブシステムへはやはりタイミング合わせのためのバッファ２０８−０を経由してルータ２０５−０に到着する。＃１システムのＣＰＵサブシステムへは外部バスのシリアルIO I/Fクロスリンクを経由してルータ２０５−１に到着する。
【００１９】
ここで、各ルータ２０５−０，２０５−１のインバウンド受信バッファ２０６−０，２０６−１の蓄積量が所定の閾値に達すると、図８に示すように、インバウンドアクセスの停止のためにフローコントロールが発生する。これはAlmost Full信号Ｓ２１−０およびＳ２１−１，Ｓ２３−０およびＳ２３−１としてIO I/Fコントローラ２１１−０，２１１−１とシリアルIO I/Fクロスリンクのフローコントローラ２０７−０，２０７−１に通知される。このフローコントロールの発生タイミングは、ＣＰＵ２０１−０，２０１−１がロックステップ同期をしていることから＃０システムと＃１システムで同時である。
【００２０】
＃１システムからのフローコントロールはシリアルIO I/Fクロスリンクを経由しており、アウトバウンド方向の通常のデータパケットに割り込む形で送信されるため、＃０システム側でも同様にアウトバウンド方向のアクセスの待ち合わせを行なう必要がある。
【００２１】
このように、両系システムのＣＰＵサブシステムのロックステップ同期を維持するためには、フローコントロールの送信のために通常のデータパケット送信の待ち合わせを含めたシリアルIO I/Fクロスリンクのトランザクション制御のエミュレーションを行うように実装する必要がある。
【特許文献１】特開平１０−１７７４９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
上述したように、ＣＰＵサブシステムがロックステップ方式とされたフォールトトレラントコンピュータにおいて、両系システムのＣＰＵサブシステムのロックステップ同期を維持するためには、フローコントロールの送信のために通常のデータパケット送信の待ち合わせを含めたシリアルIO I/Fクロスリンクのトランザクション制御のエミュレーションを行う必要がある。しかしながら、シリアルIO I/Fクロスリンクのトランザクション制御のエミュレーションを行うための回路は複雑な制御を伴う規模の大きなものであり、その実行にも時間がかかるという問題点がある。
【００２３】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、データのフロー制御を短時間で行うことのできるフォールトトレラントコンピュータを実現することを目的とする。
【課題を解決するための手段】
【００２４】
本発明によるフォールトトレラントコンピュータは、ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御するＩＯサブシステムとからなるシステムが一対のものとして二重化されて構成され、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記ＩＯサブシステムは対となるＩＯサブシステムとクロスリンクを介して接続されるフォールトトレラントコンピュータであって、
前記ＣＰＵサブシステムは、前記ＩＯサブシステムから送られてくるデータを受信し、蓄積量が第1の閾値に達すると第1の信号を前記ＩＯサブシステムへ送出し、蓄積量が前記第1の閾値による蓄積量よりも大きな第２の閾値に達すると第２の信号を前記ＩＯサブシステムへ送出するインバウンド受信バッファを備え、
前記ＩＯサブシステムは、
前記第１および第２の信号を受信すると前記ＣＰＵサブシステムへ向かうデータの送出を停止するIO I/Fコントローラと、
前記第２の信号を受信すると前記クロスリンクを介して対をなすＩＯサブリンクのIO I/Fコントローラへ送出するフローコントローラと、を備えることを特徴とする。
【００２５】
本発明によるデータ送信制御方法は、ＣＰＵ及び記憶装置へのアクセスを制御するＣＰＵサブシステムと、前記ＣＰＵサブシステムに対する外部からのデータの入出力を制御するＩＯサブシステムとからなるシステムが一対のものとして二重化されて構成され、前記ＣＰＵサブシステムは共通の内部クロックによって全く同一の動作を行うロックステップ方式により動作し、前記ＩＯサブシステムは対となるＩＯサブシステムとクロスリンクを介して接続されるフォールトトレラントコンピュータで行なわれるデータ送信制御方法であって、
前記ＣＰＵサブシステムで行われる、前記ＩＯサブシステムから送られてくるデータを受信し、蓄積量が第1の閾値に達すると第1の信号を前記ＩＯサブシステムへ送出し、蓄積量が前記第1の閾値による蓄積量よりも大きな第２の閾値に達すると第２の信号を前記ＩＯサブシステムへ送出するステップと、
前記ＩＯサブシステムで行なわれる、
前記第１および第２の信号を受信すると前記ＣＰＵサブシステムへ向かうデータの送出を停止するステップと、
前記第２の信号を受信すると前記クロスリンクを介して対をなすＩＯサブリンクへ送出するステップと、を備えることを特徴とする。
【００２６】
上記のように構成される本発明においては、第1の信号が送出された時点でＩＯサブシステムからＣＰＵサブシステムへ向かうデータの送出が停止される。第1の信号はクロスリンクには出力されないので、従来必要とされていた調整に要する時間がなくなる。
【発明の効果】
【００２７】
本発明は以上説明したように構成されているので、データのフロー制御を短時間で行うことができる効果がある。
【発明を実施するための最良の形態】
【００２８】
以下に、本発明の実施形態について図面を参照して説明する。
【００２９】
図１は本発明によるフォールトトレラントコンピュータの実施形態の構成を示すブロック図である。
【００３０】
図１に示される＃０と＃１の２つのシステムが示されている。図４に示した従来例と同様に各システムの構成は全く同一であり、それぞれ一対のものとして二重化され、各システムがシリアルIO I/Fクロスリンクを介して接続されている。
【００３１】
＃０システムと＃１システムのそれぞれは、共通の内部クロックによって同期動作するロックステップ方式が採られているＣＰＵサブシステムと、各システムごとのクロックによって動作するＩＯサブシステムから構成されている。
【００３２】
ＩＯサブシステムは、外部とのデータの入出力を制御するIO I/Fコントローラ１１１−０，１１１−１と、IO I/Fコントローラ１１１−０，１２１１−１からＣＰＵサブシステム側に渡されるデータを一時保持するバッファ１０８−０，１０８−１と、ＣＰＵサブシステム側からIO I/Fコントローラ１１１−０，１１１−１に渡されるデータを一時保持するバッファ１０９−０，１０９−１と、ＣＰＵサブシステム側からのIO I/Fコントローラ１１１−０，１１１−１へのアクセスとシリアルIO I/Fクロスリンクを介して他方のシステムからのIO I/Fコントローラ１１１−０，１１１−１へのアクセスとを比較するＩＯアクセス比較器１１０−０，１１０−１と、バッファ１０８−０，１０８−１のデータ蓄積量を監視し、一定の閾値以上となったときにその旨をIO I/Fコントローラ１１１−０，１１１−１に通知するフローコントローラ１１２−０，１１２−１と、バッファ１０９−０，１０９−１の蓄積量が一定の閾値以上となったときにＣＰＵサブシステム側から送られてくるAlmost Full信号Ｓ１３−０，Ｓ１３−１を受け、その旨をシリアルIO I/Fクロスリンクを介して他方のシステムを構成するIO I/Fコントローラ１１１−０，１１１−１へ通知するフローコントローラ１０７−０，１０７−１から構成されている。
【００３３】
一方、ＣＰＵサブシステムは、ＣＰＵ１０１−０，１０１−１と、主記憶装置１０２−０，１０２−１と、主記憶装置１０２−０，１０２−１に対するデータの書き込みや読み出しを制御するメモリバスコントローラ１０３−０，１０３−１と、ＣＰＵ１０１−０，１０１−１に対するアクセスを制御するＣＰＵバスコントローラ１０４−０，１０４−１と、インバウンド受信バッファ１０６−０，１０６−１を具備してＣＰＵバスコントローラ１０４−０，１０４−１、バッファ１０８−０，１０８−１，１０９−０，１０９−１のアクセス制御を切り替えるルータ１０５−０，１０５−１から構成されている。
【００３４】
上記の構成は図４に示した従来例と同様であるが、本実施形態が図４に示した従来例と異なる点は、ルータ１０５−０，１０５−１に設けられるインバウンド受信バッファ１０６−０，１０６−１のフローコントロール信号として、従来のAlmost Full信号Ｓ１１−０，Ｓ１１−１，Ｓ１２−０，Ｓ１２−１，Ｓ１３−０，Ｓ１３−１に加えて、Almost Full信号より低いウォーターラインでアサートされるHalf Full信号Ｓ１４−０，Ｓ１４−１が追加されている点にある。
【００３５】
追加されたHalf Full信号Ｓ１４−０，Ｓ１４−１は、図２に示されるように、自システム内（ローカル）のIO I/Fコントローラ１１１−０，１１１−１に接続され、シリアルIO I/Fクロスリンクのフローコントローラ１０７−０，１０７−１には接続されない。したがって、Half Full信号がアサートされたときであっても、シリアルIO I/Fクロスリンク上にはフローコントロール用パケットは送信されない。一方でIO I/Fコントローラ２１１−０，２１１−１はHalf Full信号Ｓ１４−０，Ｓ１４−１がアサートされることで、インバウンドアクセスパケットの送出を停止する。Half Full信号Ｓ１４−０，Ｓ１４−１がアサートされてもアクセスパケットの送出が止まらない場合には、Almost Full信号Ｓ１１−０，Ｓ１１−１，Ｓ１１３−０，Ｓ１３−１がアサートされる。Almost Full信号はIO I/Fコントローラ１１１−０，１１１−１とシリアルIO I/Fクロスリンクのフローコントローラ１０７−０，１０７−１の両方に接続されており、Almost Full信号がアサートされたときにはシリアルIO I/Fクロスリンク上にフローコントロールパケットが送信される。
【００３６】
ＣＰＵ１０１−０，１０１−１がロックステップ同期中は各システムのＣＰＵサブシステムの挙動は同一であることから、＃０システムのHalf Full信号のアサートと＃１システムのHalf Full信号のアサートのタイミングは一致している。
【００３７】
以上により、Half Full信号のアサートレベルがクロスリンク経由でのインバウンドアクセスパケットの滑りによってAlmost Full信号のアサートが発生しないレベルに設定されることで、シリアルIO I/Fクロスリンク上にフローコントロールパケットを発生させることなく、インバウンドアクセスのフロー制御を実現できる。また、非同期の状態では、Half Full信号のレベルではクロスリンク越しのフローコントロールパケットが到着しないため、異なるシステムでのインバウンドパケットの送出をとめることができないが、Almost Full信号まで進行すると図３に示すようにクロスリンク上にもフローコントロールが発生する。基本的にはＩＯサブシステムも同期した動作を行っているためにAlmost Full信号は殆ど発生しない。
【００３８】
以上のように、あらたなフロー制御信号としてHalf Full信号を追加することで、Almost Full信号が発生することが殆どなくなり、複雑なシリアルIO I/F上のトランザクション制御が行われることも少なくなる。この結果、短い時間でのデータのフロー制御が実現される。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施形態の構成を示すブロック図である。
【図２】本発明の実施形態の構成および動作を示す図である。
【図３】本発明の実施形態の構成および動作を示す図である。
【図４】従来例の構成を示すブロック図である。
【図５】従来例の構成および動作を示す図である。
【図６】従来例の構成および動作を示す図である。
【図７】従来例の構成および動作を示す図である。
【図８】従来例の構成および動作を示す図である。
【符号の説明】
【００４０】
１０１−０，１０１−１    ＣＰＵ
１０２−０，１０２−１    主記憶装置
１０３−０，１０３−１    メモリバスコントローラ
１０４−０，１０４−１    ＣＰＵバスコントローラ
１０５−０，１０５−１    ルータ
１０６−０，１０６−１    インバウンド受信バッファ
１０７−０，１０７−１，１１２−０，１１２−１    フローコントローラ
１０８−０，１０８−１，１０９−０，１０９−１    バッファ
１１０−０，１１０−１    ＩＯアクセス比較器
１１１−０，１１１−１    IO I/Fコントローラ
【図１】
2006178618.tif 000003
【図２】
2006178618.tif 000004
【図３】
2006178618.tif 000005
【図４】
2006178618.tif 000006
【図５】
2006178618.tif 000007
【図６】
2006178618.tif 000008
【図７】
2006178618.tif 000009
【図８】
2006178618.tif 000010