JP5585332B2 - 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法 - Google Patents

耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法 Download PDF

Info

Publication number
JP5585332B2
JP5585332B2 JP2010205378A JP2010205378A JP5585332B2 JP 5585332 B2 JP5585332 B2 JP 5585332B2 JP 2010205378 A JP2010205378 A JP 2010205378A JP 2010205378 A JP2010205378 A JP 2010205378A JP 5585332 B2 JP5585332 B2 JP 5585332B2
Authority
JP
Japan
Prior art keywords
slave
control lsi
control
subsystem
output
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
JP2010205378A
Other languages
English (en)
Other versions
JP2012063828A (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.)
NEC Corp
Original Assignee
NEC 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
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010205378A priority Critical patent/JP5585332B2/ja
Priority to US13/229,956 priority patent/US8924772B2/en
Publication of JP2012063828A publication Critical patent/JP2012063828A/ja
Application granted granted Critical
Publication of JP5585332B2 publication Critical patent/JP5585332B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • 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/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1654Error detection by comparing the output of redundant processing systems where the output of only one of the redundant processing components can drive the attached hardware, e.g. memory or I/O
    • 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/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • G06F11/1645Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component

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)

Description

本発明は、多重化されたサブシステムを具備する耐故障システム、前記耐故障システムにおける耐故障制御を行うマスタFT制御LSIとスレーブFT制御LSI、および、前記耐故障システムにおける耐故障制御方法に関する。
高度な信頼性を提供するコンピュータ・システムとして、耐故障システム(フォールト・トレラント・システム、Fault Tolerant System。以下「FTシステム」と称する)がある。例えば、特許文献1では、二重化のための機能を有しない既存のOS等を用いて、CPUと、VGAデバイス等のI/Oデバイスとが二重化されたFTシステムを構築する技術が示されている。この技術では、障害発生時に、CPUから発せられるリクエストのアドレスをルーティング・コントローラが書き換える等の処理を行うことにより、二重化をOSに対して隠蔽する。
一般に、FTシステムでは、システムを構成するハードウェア・モジュール(Hardware Module)が多重化されており、全てのモジュールが同期動作している。そして、ある部位で故障が発生すると、FTシステムは、故障したモジュールを切り離し、正常なモジュールで処理を続行する。
ここで、FTシステムの基本構成は、CPUやメモリやI/Oデバイスなど、二重化されるハードウェア・モジュールと、これらのモジュールと接続され、同期動作処理や故障時の切り替え制御などの耐故障制御(フォールト・トレラント制御)を行うフォールト・トレラント制御部(以下、「FT制御部」と称する)からなる。
図9は、FTシステムの概略構成例を示すブロック図である。同図のFTシステム1001では、CPU1120とメインメモリ1110とIOハブ1130とが、1つのCPUサブシステムを構成し、これと同じ構成の、もう1つのCPUサブシステム1600により、CPUサブシステムが二重化されている。同様に、IOデバイス1310〜1330が、1つのI/Oサブシステム1300を構成し、これと同じ構成の、もう1つのI/Oサブシステム1800により、I/Oサブシステムが二重化されている。
FT制御部1200は、各々のサブシステム(CPUサブシステム1100およびI/Oサブシステム1300)の中間に位置し、サブシステム間の入出力を制御するとともに、もう一方のモジュールのFT制御部1700との接続により、サブシステムの両系同期動作の維持と、故障の検出と、故障モジュールの切り離し制御とを行う。
FTシステムにおける切り離し制御方法には様々な形態があるが、一般に、FTシステムは各モジュール内において、ハードウェアで切り離し制御する部分と、ソフトウェアで切り離し制御する部分とを有する。
例えば、CPU1120やメインメモリ1110などを含むCPUサブシステム1100は、CPUサブシステム自体が、ソフトウェアを実行する基盤であることから、ハードウェアで切り離し制御される。CPUサブシステム1100内でエラーが発生した場合、正常動作している側のCPUサブシステム1600に影響を及ぼさないよう、ハードウェア(FT制御部1200)が、エラー発生側のCPUサブシステム1100をFTシステム1001から切り離す。
また、2個のCPUサブシステム1100および1600は、クロックレベルで同期して同一の動作(以下では、この同一の動作を「ロックステップ」(Lock Step)と称する)を行っており、一方が故障した場合、FT制御部1200および1700が、故障したCPUサブシステムをFTシステム1001から論理的に切り離す。そして、FTシステム1001は、残った1個のCPUサブシステムで動作を継続する。
一方、I/Oデバイスが故障した場合、当該I/Oデバイスの切り替えをソフトウェアで行うことが可能である。例えば、IOデバイス1310が故障した場合、この故障を検出したFT制御部1200が、I/Oデバイス1310の制御を行っているソフトウェア(以下では、このソフトウェアを「I/Oデバイス・ドライバ」と称する)に対してエラー通知を行う。そして、I/Oデバイス・ドライバは故障したI/Oデバイス1310の使用を中止し、二重化されている別のI/Oデバイス1810を使用する。
ここで、2個のI/Oサブシステム1300および1800は、使用されている側(以下では、「アクティブ側」と称する)のI/Oサブシステムと、待機している側(以下では、「スタンバイ側」と称する)のI/Oサブシステムとに別れる。そして、正常動作時には、両方のI/Oサブシステム1300および1800が、アクセス可能となっている。一方、故障時には、FT制御部1200および1700が、故障したI/Oサブシステムを切り離し、別のI/Oサブシステムに切り替える。この切替処理はフェイルオーバと呼ばれる。
前述の通り、双方のCPUサブシステム1100および1600は、同一の動作(ロックステップ動作)をしており、なおかつ両方のI/Oサブシステム1300および1800がアクセス可能状態にある。そして、FT制御部1200および1700は、自モジュール内のCPUサブシステムから発行されるI/O処理要求(I/Oトランザクション)を受け、2つのI/Oサブシステム1300および1800の何れかにルーティングする。相手側モジュールのI/Oサブシステムへアクセスする場合は、FT制御部間を接続しているクロスリンク(Cross-Link)L1010を介してアクセスする。
また、FT制御部1200および1700は、CPUサブシステム1100および1600から出力される2つのI/O処理要求を比較するボータ(Voter)1220および1720を備える。ボータは、2つのCPUサブシステム1100および1600から出力されるI/O処理要求を逐時比較することにより、異常の有無を監視する。そして、2つのI/O処理要求が一致した場合、異常無しと考えられるので、ボータは、ターゲットとなるI/Oデバイスへ1個のI/O処理要求を出力する。
図10は、ボータがI/O処理要求を出力する例を示す図である。同図において、CPU1120および1620は、ロックステップ動作して同一のI/O処理要求を同時に出力する。CPU1120から出力されたI/O処理要求は、IOハブ1130を経由してルータ1210に出力される。同様に、CPU1620から出力されたI/O処理要求は、IOハブ1630を経由してルータ1710に出力される。
ここで、モジュール1010がアクティブ側のモジュールであり、モジュール1060がスタンバイ側のモジュールである場合、ルータ1210および1710は、ロックステップ動作して同一のI/O処理要求を同時にボータ1220に出力する。
ルータ1210および1710からI/O処理要求の出力を受けたボータ1220は、1つのI/O処理要求を、ターゲットとなるIOデバイス1320に出力する。
また、I/Oデバイス1320から返されたレスポンスは、FT制御部1200によって2個に分岐され、それぞれ逆のルートを辿ってCPUサブシステム1120および1620に同じタイミングで出力される。
特開2006−172220号公報
FTシステムは、一般的なコンピュータ・システムと比べて、ハードウェア構成に関し幾つかの制限がある。特に、FTシステムでは、サポート可能なI/Oの数が限られてしまうという制約がある。
一般に、FT制御部は1つのLSIで構成され、CPUサブシステムから出力される全I/O処理要求がFT制御部を経由する。このため、接続されるI/Oデバイスの数が増えれば増えるほど、FTシステムのI/O性能のボトルネックがFT制御LSIで発生してしまう。そして、FTシステムのI/O性能を上げるためには、多数のPCI-Express(PCI-SIGによって策定されたシリアルインタフェース。以下では、16チャネルを有するx16 PCI-Expressを用いる場合を例として説明する)などのIOパスをFT制御部に接続する必要があり、さらに同様のバンド幅を有するクロスリンク(コミュニケーション・パス)にてモジュール間を接続する必要もある。その結果、FT制御LSIに多数の高速インタフェースが必要となり、LSIの規模が肥大化して高コストとなる問題がある。
図11は、モジュール毎に1つのFT制御LSIを備えるFTシステムの例を示す図である。同図において、FT制御LSI1200および1700は、それぞれ1つのLSIにてFT制御部を構成し、それぞれ3本のPCI-Expressと接続する。この場合、PCI-Express1本あたりのチャンネル数は16であり、FT制御LSIには、16チャンネル×3本=48チャンネル分の高速インタフェースが必要となる。一般に、FT制御LSIには多数のIOパスが接続されるため、多数の高速インタフェースが必要となり、LSIチップサイズが大きくなる。このようにLSIチップサイズが大きくなることにより、LSIを製造する際の歩留まりが悪くなり、製造コストが非常に高くなってしまう。
本発明は、このような事情を考慮してなされたものであり、その目的は、多数のI/Oパスに接続されるFT制御部を、より安価に構築可能な耐故障システム、マスタFT制御LSI、スレーブFT制御LSIおよび耐故障制御方法を提供することにある。
この発明は上述した課題を解決するためになされたもので、本発明の一態様による耐故障システムは、I/O処理要求を出力するCPUサブシステムと、前記I/O処理要求に応じてI/O処理を行うIOサブシステムと、前記CPUサブシステムおよび前記IOサブシステムに接続され、1つのマスタFT制御LSIと1つまたは複数のスレーブFT制御LSIと、を具備するFT制御部と、を具備するモジュールを複数具備する耐故障システムであって、前記IOサブシステムのいずれか1つがアクティブ側に設定され、他のIOサブシステムはスタンバイ側に設定され、前記スレーブFT制御LSIの各々は、当該スレーブFT制御LSIに接続される前記CPUサブシステムまたは当該スレーブFT制御LSIに接続される前記IOサブシステムから故障情報が出力されると故障情報取得を示すステータス情報をマスタFT制御LSIに出力し、また、当該スレーブFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとから同一のI/O処理要求が出力されると、当該I/O処理要求の1つを、当該スレーブFT制御LSIに接続されるIOサブシステムに出力し、当該IOサブシステムからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとに前記レスポンスを出力し、当該スレーブFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムからI/O処理要求が出力されると、当該I/O処理要求の1つを他のモジュールに出力し、他のモジュールからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムに当該レスポンスを出力し、前記マスタFT制御LSIは、前記スレーブFT制御LSIから出力される前記ステータス情報に基づいて、故障したサブシステムに対する切り離し制御を行うコマンドを決定して前記スレーブFT制御LSIに出力し、前記スレーブFT制御LSIは、前記コマンドに基づいて、故障したサブシステムに対する切り離し制御を行う、ことを特徴とする。
また、本発明の一態様によるマスタFT制御LSIは、耐故障システムの耐故障制御を行うマスタFT制御LSIであって、スレーブFT制御LSIに接続可能であり、接続されたスレーブFT制御LSIから出力される故障情報を取得するシンクバス入力部と、シンクバス入力部が取得する故障情報に基づいて、故障したサブシステムに対する切り離し制御を行うコマンドを決定するマスタFTコントローラと、接続する前記スレーブFT制御LSIに、前記マスタFTコントローラが決定した前記コマンドを出力するシンクバス出力部と、を具備することを特徴とする。
また、本発明の一態様によるスレーブFT制御LSIは、多重化されたサブシステムを備える耐故障システムの耐故障制御を行うスレーブFT制御LSIであって、耐故障システムの耐故障制御を行うスレーブFT制御LSIであって、マスタFT制御LSIに接続可能であり、サブシステムから出力される故障情報を、接続する前記マスタFT制御LSIに出力するシンクバス出力部と、前記マスタFT制御LSIから出力されるコマンドに基づいて、故障したサブシステムに対する切り離し制御を行うスレーブFTコントローラと、を具備することを特徴とする。
また、本発明の一態様による耐故障制御方法は、I/O処理要求を出力するCPUサブシステムと、前記I/O処理要求に応じてI/O処理を行うIOサブシステムと、前記CPUサブシステムおよび前記IOサブシステムに接続され、1つのマスタFT制御LSIと1つまたは複数のスレーブFT制御LSIと、を具備するFT制御部と、を具備するモジュールを複数具備し、前記IOサブシステムのいずれか1つがアクティブ側に設定され、他のIOサブシステムはスタンバイ側に設定されている耐故障システムの耐故障制御方法であって、前記スレーブFT制御LSIの各々が、当該スレーブFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとから同一のI/O処理要求が出力されると、1つの当該I/O処理要求を、当該スレーブFT制御LSIに接続されるIOサブシステムに出力し、当該スレーブFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムからI/O処理要求が出力されると、当該I/O処理要求の1つを他のモジュールに出力するI/O処理要求転送ステップと、前記スレーブFT制御LSIの各々が、当該スレーブFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該IOサブシステムからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとに前記レスポンスを出力し、当該スレーブFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、他のモジュールからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムに当該レスポンスを出力するレスポンス転送ステップと、前記スレーブFT制御LSIの各々が、当該スレーブFT制御LSIに接続される前記CPUサブシステムまたは当該スレーブFT制御LSIに接続される前記IOサブシステムから故障情報が出力されると故障情報取得を示すステータス情報をマスタFT制御LSIに出力するステータス情報出力ステップと、前記マスタFT制御LSIが、前記スレーブFT制御LSIから出力される前記ステータス情報に基づいて、故障したサブシステムに対する切り離し制御を行うコマンドを決定して前記スレーブFT制御LSIに出力するコマンド出力ステップと、前記スレーブFT制御LSIが、前記コマンドに基づいて、故障したサブシステムに対する切り離し制御を行う切り離し実行ステップと、を具備することを特徴とする。
本発明によれば、多数のI/Oパスに接続されるFT制御部を、より安価に構築できる。
本発明の一実施形態におけるFTサーバの概略構成例を示すブロック図である。 同実施形態におけるマスタFT制御LSIの概略構成を示すブロック図である。 同実施形態におけるスレーブFT制御LSIの概略構成を示すブロック図である。 同実施形態におけるSyncBusの接続例を示す図である。 同実施形態において、マスタFT制御LSIからスレーブFT制御LSIに出力されるコマンドの例を示す表である。 同実施形態において、スレーブFT制御LSIがマスタFT制御LSIに出力するステータス情報の例を示す表である。 同実施形態において、マスタFT制御LSIが出力する二重化関連パケットのデータ構造の例を示すデータ構造図である。 同実施形態において、FTサーバ1が行うフォールト・トレラント制御動作の例を示すシーケンス図である。 FTシステムの概略構成例を示すブロック図である。 ボータがI/O処理要求を出力する例を示す図である。 モジュール毎に1つのFT制御LSIを備えるFTシステムの例を示す図である。
以下、図面を参照して、本発明の実施の形態について説明する。以下では、FTシステムの例として、フォールト・トレラント・サーバ(以下、「FTサーバ」と称する)に本発明を適用する場合について説明する。フォールト・トレラント・サーバは、フォールト・トレラント機能を有するサーバであり、1台のサーバが複数のモジュールを備えることによって多重化されている。FTサーバには、例えば、フォールト・トレラント機能を有するPC(Personal Computer、パソコン)サーバなどがある。
ただし、本発明の適用範囲は、FTサーバに限らない。例えば、各モジュールが1台のコンピュータとして構成され、当該コンピュータ間で通信を行うFTシステムや、サーバ機能を有しないフォールト・トレラント・コンピュータなど、様々なFTシステムに適用可能である。
図1は、本発明の一実施形態におけるFTサーバの概略構成例を示すブロック図である。同図において、FTサーバ1は、2つのモジュール10および60を具備する。モジュール10は、CPU(Central Processing Unit、中央処理装置)サブシステム100と、FT制御部200と、IOサブシステム300とを具備する。モジュール60は、CPUサブシステム600と、FT制御部700と、IOサブシステム800とを具備する。
CPUサブシステム100は、CPU120と、CPU120に接続されるメインメモリ110と、IOサブシステムへのI/O処理要求をルーティングするIOハブ(I/O Hub)130とを具備する。IOハブ130は3本のPCI-ExpressにてFT制御部200に接続される。
同様に、CPUサブシステム600は、CPU620と、CPU620に接続されるメインメモリ610と、IOサブシステムへのI/O処理要求をルーティングするIOハブ630とを具備する。そして、IOハブ630は3本のPCI-ExpressL110〜L130にてFT制御部700に接続される。
なお、本発明の適用範囲は、図1に示す構成のCPUサブシステムを具備するFTシステムに限らない。例えば、各CPUサブシステムが複数のCPUを具備するマルチプロセッササブシステムであってもよい。
CPUサブシステム100からの各PCI-Expressが接続されるFT制御部200は、1つのマスタFT制御LSIと、1つ以上のスレーブFT制御LSIとを具備する。図1の例では、FT制御部200は、1つのマスタ制御LSI210と、2つのスレーブ制御LSI220および230とを具備する。同様に、FT制御部700は、マスタFT制御LSI710と、スレーブFT制御LSI720および730とを具備する。
マスタFT制御LSI210は、1本のPCI-ExpressL110にてCPUサブシステム100に接続され、1本のPCI-ExpressL140にてIOサブシステム300のサウスブリッジ320に接続され、クロスリンクL10にて相手側モジュールのマスタFT制御LSI710に接続されている。
スレーブFT制御LSI220は、1本のPCI-ExpressL120にてCPUサブシステム100に接続され、1本のPCI-ExpressL150にてIOサブシステム300のI/Oスイッチ330に接続され、クロスリンクL20にて相手側モジュールのスレーブFT制御LSI720に接続されている。
スレーブFT制御LSI230は、1本のPCI-ExpressL130にてCPUサブシステム100に接続され、1本のPCI-ExpressL160にてIOサブシステム300のI/Oスイッチ340に接続され、クロスリンクL30にて相手側モジュールのスレーブFT制御LSI730に接続されている。
マスタFT制御LSIは各モジュールに1つだけ存在し、スレーブFT制御LSIから出力されるステータス情報に基づいて、故障したサブシステムに対する切り離し制御を行うコマンド(制御命令)を決定してスレーブFT制御LSIに出力する。
また、マスタFT制御LSIは、FT制御LSIとして動作する。具体的には、当該マスタFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該マスタFT制御LSIに接続されるCPUサブシステムと他のモジュールとから同一のI/O処理要求が出力されると、当該I/O処理要求の1つを、当該マスタFT制御LSIに接続されるIOサブシステムに出力し、当該IOサブシステムからレスポンスが出力されると、当該マスタFT制御LSIに接続されるCPUサブシステムと他のモジュールとに前記レスポンスを出力する。一方、当該マスタFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、当該マスタFT制御LSIに接続されるCPUサブシステムからI/O処理要求が出力されると、当該I/O処理要求の1つを他のモジュールに出力し、他のモジュールからレスポンスが出力されると、当該マスタFT制御LSIに接続されるCPUサブシステムに当該レスポンスを出力する。
スレーブFT制御LSIは、正常動作時は単体でFT制御LSIとして機能するが、エラー発生時やロックステップ外れなどの異常発生時にはマスタFT制御LSIからのコマンドに従って動作する。
具体的には、スレーブFT制御LSIは、当該スレーブFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとから同一のI/O処理要求が出力されると、当該I/O処理要求の1つを、当該スレーブFT制御LSIに接続されるIOサブシステムに出力し、当該IOサブシステムからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとに前記レスポンスを出力する。また、当該スレーブFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムからI/O処理要求が出力されると、当該I/O処理要求の1つを他のモジュールに出力し、他のモジュールからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムに当該レスポンスを出力する。
また、スレーブFT制御LSIは、当該スレーブFT制御LSIに接続されるCPUサブシステムまたは当該スレーブFT制御LSIに接続されるIOサブシステムから故障情報が出力されると故障情報取得を示すステータス情報をマスタFT制御LSIに出力する。
また、スレーブFT制御LSIは、マスタFT制御LSIから出力されるコマンドに基づいて、故障したサブシステムに対する切り離し制御を行う、
なお、図1では、1つのFT制御部が2つのスレーブFT制御LSIを備えるが、接続されるI/Oデバイス数に応じて更に多くのスレーブFT制御LSIを備えることも可能である。
IOサブシステム300は、ディスプレイ表示のためのLSIであるVGAチップ(Video Graphics Array Chip)310と、PS/2デバイスなどのレガシーデバイス(Legacy Device)やUSBなどのI/Oを制御するサウスブリッジ(South Bridge)320と、LAN(Local Area Network、ローカルエリアネットワーク)との間の通信を制御するLANチップ(Local Area Network Chip)350と、ハードディスク(Hard Disk Drive;HDD)などの記憶装置へのデータの読み書きを制御するストレージチップ(Storage Chip)360と、拡張用のPCIeスロット(PCI-express Slot)370および380と、FT制御部200とLANチップ350やストレージチップ360やPCIeスロット370および380との間の信号のルーティングを行うI/Oスイッチ330および340とを具備する。同様に、IOサブシステム800は、VGAチップ810と、サウスブリッジ820と、LANチップ850と、ストレージチップ860と、PCIeスロット870および880と、I/Oスイッチ830および840とを具備する。
なお、本発明の適用範囲は、図1に示す構成のIOサブシステムを具備するFTシステムに限らない。接続されるI/Oデバイスは、図1に示されるものに限らないし、接続されるI/Oデバイス数も、図1に示されるものに限らない。上述したように、スレーブFT制御LSIを増設することによって、より多数のI/Oデバイスに対応することができる。
IOサブシステム300および800は、正常動作時において、いずれもアクセス可能状態にある。そして、初期設定により、一方のIOサブシステムがアクティブ側に設定され、他方がスタンバイ側に設定されている。
例えば、IOサブシステム300がアクティブ側に設定され、IOサブシステム800がスタンバイ側に設定されている場合、正常動作時は、IOサブシステム300のIOデバイスが使用される。一方、IOサブシステム300に何らかの異常が発生すると、IOサブシステム800がアクティブ側に設定される。そして、IOサブシステム300は、FT制御部200の制御に基づいて、FTシステム1から論理的に切り離される。
図2は、マスタFT制御LSIの概略構成を示すブロック図である。同図において、マスタFT制御LSI210は、ルータ211と、ボータ212と、マスタFTコントローラ213と、Txクロスリンク214aと、Rxクロスリンク214bと、レガシーデバイスコントローラ215と、インタラプトコントローラ216と、シンクバス出力部217aと、シンクバス入力部217bと、スレーブ数入力部218とを具備する。
ルータ211は、CPUサブシステム100から出力されるI/O処理要求を、自モジュール10のIOサブシステム300に出力するか、他方のモジュール60のIOサブシステム800に出力するかを決定する。ルータ211は、アクティブ側およびスタンバイ側のIOサブシステムの設定に基づいて、当該決定を行う。
ボータ212は、自モジュール10のCPUサブシステム100から出力されるI/O処理要求と、他方のモジュール60のCPUサブシステム600から出力されるI/O処理要求との異同を判定する。また、ボータ212は、自モジュール10のCPUサブシステム100およびIOサブシステム300から、故障発生等を通知するエラー情報(故障情報)を受け付ける。
マスタFTコントローラ213は、マスタFT制御LSI210のボータ212による異同判定結果、および、後述するように、自FT制御部200内のスレーブFT制御LSI220および230からSyncBusを介して出力される異同判定結果、および、ボータ212やスレーブFT制御LSI220および230から出力されるエラー情報に基づいて、アクティブ側とスタンバイ側とを切り換えるか否かの決定、および、自モジュール10のCPUサブシステム100またはIOサブシステム300を切り離すか否かの決定を行う。そして、マスタFTコントローラ213は、当該決定に従って、CPUサブシステム100やIOサブシステム300の切り離し処理を行うと共に、当該決定に応じたコマンドを、シンクバス出力部217aを介してスレーブFTコントローラ220および230に出力する。
また、マスタFTコントローラ213は、CPUサブシステムから出力されるI/O処理要求が、アクティブ側のIOサブシステムに出力され、IOサブシステムから出力されるレスポンスが、アクティブ側のCPUサブシステムに出力されるよう、ルータ211とボータ212とTxクロスリンク214aとを制御する。
Txクロスリンク214aは、クロスリンクを介してマスタFT制御LSI710に接続され、マスタFTコントローラ213の制御に基づいてルータ211から出力されるI/O処理要求を、マスタFT制御LSI710に出力する。
Rxクロスリンク214bは、クロスリンクを介してマスタFT制御LSI710に接続され、マスタFT制御LSI710から出力されるトランザクションをルータ211に出力する。
シンクバス出力部217aは、マスタFTコントローラ213から出力されるコマンドをSyncBusを介してスレーブFT制御LSIに出力する信号出力端である。
シンクバス入力部217bは、スレーブFT制御LSIからSyncBusを介して出力されるステータス情報を取得する信号入力端であり、取得したステータス情報をマスタFTコントローラ213に出力する。
スレーブ数入力部218は、SyncBusを介してマスタFT制御LSIに接続されるスレーブFT制御LSIの数を示す信号の入力を受け付ける信号入力端(ストラップピン)であり、入力された信号をマスタFTコントローラ213に出力する。本実施形態では、マスタFT制御LSI210に、2つのスレーブFT制御LSIが接続されており、個数「2」を示す信号がスレーブ数入力部218に入力される。このスレーブFT制御LSIの数は、例えば、初期設定時にFTサーバ1の管理者によって設定される。
レガシーデバイスコントローラ215は、レガシーデバイスがサウスブリッジ320に接続されているときに、当該レガシーデバイスを制御する。また、IOサブシステムのデバイスからレガシーIRQ(Legacy Interrupt Request、旧式の割込信号)が出力されると、当該割込信号に基づいて割込処理を行う。インタラプトコントローラ216は、IOサブシステムのデバイスから、レガシーIRQ以外の割込信号が出力されると、当該割込信号に基づいて割込処理を行う。
ここで、レガシーデバイスコントローラおよびインタラプトコントローラは、1つのモジュールに1つのみ含まれるべきコントローラである。そこで、マスタFT制御LSIがレガシーデバイスコントローラおよびインタラプトコントローラを備えることにより、モジュール内におけるレガシーデバイスコントローラやインタラプトコントローラの重複を回避している。
なお、マスタFT制御LSI710の構成はマスタFT制御LSI210の構成と同様であり、説明を省略する。
図3は、スレーブFT制御LSIの概略構成を示すブロック図である。同図において、スレーブFT制御LSI220は、ルータ221と、ボータ222と、スレーブFTコントローラ223と、Txクロスリンク224aと、Rxクロスリンク224bとを具備する。
ルータ221の機能は、ルータ211(図6)の機能と同様であり、説明を省略する。また、ボータ222の機能は、ボータ212の機能と同様であり、説明を省略する。
スレーブFTコントローラ223は、ボータ222から出力される異同判定結果やエラー情報を、SyncBusを介してマスタFT制御LSI210に出力し、また、マスタFT制御LSI210からのコマンドを受け付け、受け付けたコマンドを実行する。また、スレーブFTコントローラ223は、シンクバス入力部227bを介してマスタFT制御LSI210から出力される、後述の二重化関連パケットを書き換え、書き換えたコマンドを、シンクバス出力部227aに出力する。
Txクロスリンク224aは、クロスリンクを介してスレーブFT制御LSI720に接続され、スレーブFTコントローラ223の制御に基づいてルータ221から出力されるI/O処理要求をスレーブFT制御LSI720に出力する。
Rxクロスリンク214bは、クロスリンクを介してスレーブFT制御LSI720に接続され、スレーブFT制御LSI720から出力されるI/O処理要求をルータ221に出力する。
シンクバス入力部227bは、マスタFT制御LSI210からSyncBusを介して出力される、後述する二重化関連パケットを取得する信号入力端であり、取得したコマンドをマスタFTコントローラ223に出力する。
シンクバス出力部227aは、スレーブFTコントローラ223から出力される、書き換えられた二重化関連パケットを、SyncBusを介してスレーブFT制御LSI230に出力する信号出力端である。
スレーブID入力部228は、スレーブFT制御LSI220を識別するための指標であるスレーブIDの入力を受け付ける信号入力端であり、入力された信号をマスタFTコントローラ213に出力する。このスレーブIDは、例えば、初期設定時にFTサーバ1の管理者によって設定される。なお、スレーブIDには、SyncBusにおける順序(本実施形態では、スレーブFT制御LSI220が「1」、スレーブFT制御LSI230が「2」)を示す情報が含まれる。
スレーブFT制御LSI220は、レガシーデバイスコントローラや、インタラプトコントローラを具備しない点、および、CPUサブシステム100またはIOサブシステム300を切り離すか否かの決定を行わない点で、マスタFT制御LSI210と異なる。
なお、スレーブFT制御LSI230、720および730の構成も同様であり、説明を省略する。
なお、マスタFT制御LSIとしてもスレーブFT制御LSIとしても使用可能なFT制御LSIを製造し、当該FT制御LSIを用いてマスタ制御LSIやスレーブ制御LSIを実装するようにしてもよい。例えば、FT制御LSIにおいて、設定スイッチ等でマスタモードとスレーブモードとを切替可能とする。マスタモードでは、レガシーデバイスやインタラプトコントローラなど、マスタFT制御LSIに特有の機能が有効となり、スレーブモードでは、これらマスタFT制御LSIに特有の機能は無効となる。
このように、同型のFT制御LSIを用いてマスタFT制御LSIおよびスレーブFT制御LSIを実装することにより、1つの型のLSIを設計・製造すればよく、設計負荷を軽減し、また、製造効率を高めることができる。
図4は、SyncBusの接続例を示す図である。同図の例では、マスタFTコントローラ213と、スレーブFTコントローラ223および233とがリング型接続にて接続されている。この接続によって、マスタFTコントローラ213からスレーブFTコントローラ223および233に出力される命令が、マスタFTコントローラ213、スレーブFTコントローラ223、スレーブFTコントローラ233の順に伝送されるデイジーチェーンが構成される。また、スレーブFTコントローラ223および233からマスタFTコントローラ213に出力される異同判定結果やエラー情報が、スレーブFTコントローラ223、スレーブFTコントローラ233、マスタFTコントローラ213の順に伝送されるデイジーチェーンが構成される。
このようにSyncBusをリング型接続とすることにより、1つのFT制御部に含まれるスレーブFTコントローラの数にかかわらず、マスタFT制御LSIやスレーブFT制御LSIはシンクバス出力部とシンクバス入力部とを1つずつ具備すればよい。従って、スレーブFT制御LSIの数の変更が容易であり、FT制御部が具備するインタフェース数を柔軟に変更できる。
但し、SyncBusの接続形態は、上述したリング型に限らず、マスタFTコントローラ213とスレーブFTコントローラ223および233との間で命令やデータを伝送可能な様々な接続形態を用いることができる。例えば、マスタFTコントローラ213を中心とするスター型接続としてもよい。この場合、マスタFTコントローラと各スレーブFTコントローラとの間におけるデータ伝送速度を、より速く行うことができる。
図5は、マスタFT制御LSIからスレーブFT制御LSIに出力されるコマンドの例を示す表である。
同図に示す「NULL」は、無命令を指示するコマンドであり、正常動作時など、実行すべき命令がない場合に出力される。「Shoot CPU」は、CPUサブシステムの切り離しを指示するコマンドであり、自モジュールのCPUサブシステムにエラーが検出された場合に出力される。「Shoot IO」は、IOサブシステムの切り離しを指示するコマンドであり、自モジュールのIOサブシステムにエラーが検出された場合に出力される。
「Bring-up CPU」は、CPUサブシステムの組み込みを指示するコマンドであり、FTサーバ1の起動時などに出力される。「Bring-up IO」は、IOサブシステムの組み込みを指示するコマンドであり、FTサーバ1の起動時などに出力される。
「Go CPU SMR」は、相手側モジュールのCPUサブシステムの切り離しを指示するコマンドであり、相手側モジュールのCPUサブシステムにエラーが検出された場合に出力される。「Go IO SMR」は、相手側IOサブシステムの切り離しを指示するコマンドであり、相手側モジュールのIOサブシステムにエラーが検出された場合に出力される。
「Voter Wait」は、ボータの一旦停止を指示するコマンドであり、CPUサブシステムのロックステップのずれによって異常が検出された際に、故障箇所が特定されるまでの間ボータの動作を停止させる。
図6は、スレーブFT制御LSIがマスタFT制御LSIに出力するステータス情報の例を示す表である。
同図に示す「DMR」は、CPUサブシステムおよびIOサブシステムが二重化(Double Module Redundancy;DMR)された状態にあることを示すステータス情報であり、正常動作時に出力される。
「CPU SMR」は、CPUサブシステムが一重化(Single Module Redundancy;SMR)され、IOサブシステムが二重化された状態にあることを示すステータス情報であり、相手側モジュールのCPUサブシステムが切り離されている場合に出力される。
「IO SMR」は、CPUサブシステムが二重化され、IOサブシステムが一重化された状態にあることを示すステータス情報であり、相手側モジュールのIOサブシステムが切り離されている場合に出力される。
「SMR」は、CPUサブシステムおよびIOサブシステムが一重化された状態にあることを示すステータス情報であり、相手側モジュールのCPUサブシステムおよび相手側モジュールのIOサブシステムが切り離されている場合に出力される。
「CPU Broken」は、自モジュールのCPUサブシステムが切り離され、IOサブシステムが二重化された状態にあることを示すステータス情報であり、自モジュールのCPUサブシステムが切り離されている場合に出力される。
「IO Broken」は、CPUサブシステムが二重化され、自モジュールのIOサブシステムが切り離された状態にあることを示すステータス情報であり、自モジュールのIOサブシステムが切り離されている場合に出力される。
「Broken」は、自モジュールのCPUサブシステムおよび自モジュールのIOサブシステムが切り離された状態にあることを示すステータス情報であり、自モジュールのCPUサブシステムおよび自モジュールのIOサブシステムが切り離された場合に出力される。
「CPU Error」は、CPUサブシステムのエラーを検出したことを示すステータス情報であり、当該エラー検出時に出力される。
「IO Error」は、IOサブシステムのエラーを検出したことを示すステータス情報であり、当該エラー検出時に出力される。
「Unk Error」は、エラー発生箇所を特定できないエラーを検出したことを示すステータス情報であり、当該エラー検出時に出力される。
「DMR Violate」は、二重化状態を逸脱したこと、すなわち、ロックステップ動作が外れた状態にあることを示すステータス情報であり、自モジュールのI/O処理要求と相手側モジュールのI/O処理要求とのずれ検出時に出力される。
図7は、マスタFT制御LSIが出力する二重化関連パケットのデータ構造の例を示すデータ構造図である。同図の例において、二重化関連パケットは、MasterCountフィールドと、Numフィールドと、Item#1フィールド〜Item#nフィールドとを含む。
MasterCountフィールドは、各スレーブFT制御LSIが同期して動作するためのカウンタ値を格納するフィールドである。本実施形態では、マスタFT制御LSIから出力される二重化関連パケットは、デイジーチェーン構造のSyncBusにて伝達されるため、マスタFT制御LSIからの距離が遠い(間に介在するスレーブLSIの数が多い)スレーブFT制御LSIほど二重化関連パケットの到達時刻が遅くなる。例えば図4において、スレーブFT制御LSI230には、スレーブFT制御LSI220よりも遅れて二重化関連パケットが到達する。
そこで、スレーブFT制御LSI220と230とが、同期して動作するために、マスタFT制御LSIは、MasterCountフィールドに、コマンド実行タイミングを示すカウンタ値を書き込む。本実施形態では、マスタFT制御LSIは、当該マスタFT制御LSIが二重化関連パケットを出力する際のカウンタ値をMasterCountフィールドに書き込む。
そして、スレーブFT制御LSIは、全てのスレーブFT制御LSIに二重化関連パケットが到達する時刻を待ってコマンドを実行する。例えば、スレーブFT制御LSIは、
現在のカウンタ値=MasterCountの示すカウンタ値+LSI間の伝送に要する時間×スレーブFT制御LSI数
となったときにコマンドを実行する。
Numフィールドは、1つのFT制御部が具備するスレーブFT制御LSIの数を示すフィールドである。本実施形態では、FT制御部200が2つのスレーブFT制御LSI210および220を具備しており、Numフィールドには「2」が格納される。マスタFTコントローラ213は、スレーブ数入力部からスレーブFT制御LSIの数の情報を得ており、このスレーブFT制御LSIの数をNumフィールドに格納する。
Item#1フィールド〜Item#nフィールドは、スレーブFT制御LSIの各々に対するコマンドを格納するn個のフィールドである。ここで、nは、1つのFT制御部が具備するスレーブFT制御LSIの数を示す正整数である。
本実施形態では、FT制御部200が2つのスレーブFT制御LSI210および220を具備しており、二重化関連パケットにはCmd#1とCmd#2の2つのフィールドが含まれる。
マスタFT制御LSIが出力した二重化関連パケットは、スレーブFTコントローラによって書き換えられ、マスタFT制御LSIに返送される。
MasterCountフィールドと、Numフィールドとは、マスタFT制御LSIが二重化関連パケットを出力する際の状態から変更されずに返送される。
なお、マスタFTコントローラは、MasterCountフィールドの値に基づいて、スレーブFT制御LSIにおける異常の有無を判断するようにしてもよい。例えば、マスタFTコントローラは、MasterCountフィールドの値に基づいて、二重化関連パケットが出力時と同じ順序で返送されているか否かを判定する。二重化関連パケットが出力時と同じ順序で返送されていない場合や、返送されない二重化関連パケットがある場合、マスタFTコントローラは、いずれかのスレーブFT制御LSIで異常が発生していると判定し、FTサーバ1の管理者に対してエラー表示を行う。
一方、Item#1フィールド〜Item#nフィールドの内容は、スレーブFT制御LSIによって図6で説明したステータス情報に書き換えられる。
各スレーブFT制御LSIは、二重化関連パケットを受け取ると、Item#i(iは、SyncBusにおける当該スレーブFT制御LSIの、マスタFT制御LSIからの順番を示す、1≦i≦nの正整数)フィールドに格納されているコマンドを読み出し、Item#iフィールドの内容を、当該スレーブFT制御LSIの現在のステータス情報に書き換えて、次のスレーブFT制御LSIに出力する。従って、二重化関連パケットがマスタFT制御LSIに返送される際は、全てのスレーブFT制御LSIのステータス情報が二重化関連パケットに格納されている。
i番目のスレーブFT制御LSIにおいて、CPUサブシステムの同期外れやエラーが検出された場合、Item#iフィールドにその旨を示すステータス情報が書き込まれ、マスタFT制御LSIに通知される。
以上のように、マスタFT制御LSIからスレーブFT制御LSIに、コマンドと同期タイミングを示す情報とを出力し、スレーブFT制御LSIからマスタFT制御LSIに、ステータス情報を出力することによって、これらマスタFT制御LSIおよびスレーブFT制御LSIによりフォールト・トレラント制御を行うことができる。このように、複数の比較的小型のLSIにてFT制御部を構成することができるので、製造コストを低減することができる。また、スレーブFT制御LSIの数を増やすことでI/Oポート数を増やすことができるので、柔軟にI/O拡張を行うことができる。
次に図8を参照してFTサーバ1が行うフォールト・トレラント制御について説明する。
図8は、FTサーバ1が行うフォールト・トレラント制御動作の例を示すシーケンス図である。同図の例では、初期設定により、モジュール10がアクティブ側に設定され、モジュール60がスタンバイ側に設定されている。また、上述したように、CPUサブシステム100および600は、ロックステップ動作により、同期して同一の処理を行っている。
まず、CPUサブシステム100および200から出力されるI/O処理要求は、全て、アクティブ側であるモジュール10側の各FT制御LSI210、220、230を通って、I/Oサブシステム300に出力される。この際、各FT制御LSI210、220、230の各ボータ212、222、232は、自モジュール10のCPUサブシステム100から出力されたI/O処理要求と、相手側モジュール60のCPUサブシステム600から出力されたI/O処理要求とを比較する。ここで、双方のI/O処理要求が一致する場合は、双方のモジュールのCPUサブシステム100および600は、ロックステップ動作しており、二重化された状態にある。したがって、双方のI/O処理要求が一致し、かつ、何のエラーも検出されていない場合は、正常動作状態にあると考えられる。この場合、各ボータ212、222、232は、2つのI/O処理要求のうちいずれか1つをアクティブ側のI/Oサブシステム300に出力する。
このように、モジュール間でI/O処理要求に差異が検出されず、エラーも検出されていない正常動作時には、マスタFTコントローラ213は、各スレーブFTコントローラ223および233に対して、指示が無いことを示すコマンド「NULL」を二重化関連パケットに格納して出力する(シーケンスS101)。
これに対して、各スレーブFTコントローラ223および233は、CPUサブシステム100および600と、I/Oサブシステム300および800とが、いずれも二重化状態にあることを示すステータス情報「DMR」にて、二重化関連パケットのコマンドを書き換えて、マスタFTコントローラ213に返送する(シーケンスS102)。
このように、正常動作時は、コマンド「NULL」の出力(シーケンスS103)およびステータス情報「DMR」の返送が繰り返される。
同様に、モジュール60でも、マスタFT制御LSI710のマスタFTコントローラから、各スレーブFT制御LSI720および730のスレーブFTコントローラへのコマンド「NULL」の出力(シーケンスS201、シーケンスS203)と、各スレーブFTコントローラからマスタFTコントローラへのステータス情報「DMR」の返送(シーケンスS202)が繰り返される。
ここで、CPUサブシステムまたはIOサブシステムが備えるLSIの内部や、I/Oデバイスの内部で故障が発生した場合、当該故障がLSIの外部やI/Oデバイスの外部に通知されるまでは若干のタイムラグがあり、ロックステップ動作のずれが先に検出されることが通常である。
図8では、IOハブ130の内部で故障が発生場合の動作例が示されている。IOハブ130の内部で故障が発生することにより、IOハブ130と630とは、異なる動作をするようになる。これにより、アクティブ側のモジュール10のスレーブFT制御LSI220において、ボータ222が、両CPUサブシステムからのI/O処理要求の差分を検出する(シーケンスS111)。
そして、スレーブFT制御LSI220のスレーブFTコントローラ223は、ロックステップ動作のずれを検出したことを示すステータス情報「DMR Violate」をマスタFT制御LSI210に返送する(シーケンスS121)。
このステータス情報を受け取ったマスタFT制御LSI210は、クロスリンクを通じて相手側のモジュール60のマスタFT制御LSI710に、スレーブFT制御LSI220におけるDMR逸脱検出を通知する(シーケンスS321)。また、自モジュール10内では、一旦ボータの動作を止めて、次の指示待ち状態を示すコマンド「Voter Wait」を含む二重化関連パケットを、SyncBusを通じてスレーブFT制御LSI220に出力する(シーケンスS122)。
また、図8の例では、IOハブ130の故障の影響によりスレーブFT制御LSI230でもロックステップ動作のずれを検出し、スレーブFT制御LSI220、230共にステータス情報「DMR Violate」をマスタFT制御LSI210に返送する(シーケンスS123)。これを受けて、マスタFT制御LSI210は、クロスリンクを通じて相手側のモジュール60のマスタFT制御LSI710に、スレーブFT制御LSI220および230におけるDMR逸脱検出を通知する(シーケンスS323)。また、マスタFT制御LSI210は、コマンド「Voter Wait」を含む二重化関連パケットを、SyncBusを通じてスレーブFT制御LSI220および230に出力する(シーケンスS124)。
ここで、ボータによって検出されるI/O処理要求の差異は、何れかで故障が発生した可能性を示している。このため、エラー通知によって故障箇所が明らかになるまで、一旦I/O処理要求の実行を停止させるため、マスタFT制御LSI210は、コマンド「Voter Wait」を、スレーブFT制御LSI220および230に出力する。
また、スタンバイ側のモジュール60では、マスタFT制御LSI710が、マスタFT制御LSI210から出力されるDMR逸脱検出の通知(シーケンスS321、323)に基づいて、スレーブFT制御LSI720および730にコマンド「Voter Wait」を出力する(シーケンスS222、224)。
さらに、図8の例では、スレーブFT制御LSI220が、IOハブ130からエラー通知を受け(シーケンスS131)、CPUサブシステム100でのエラー検出を示すステータス情報「CPU Error」を含む二重化関連パケットを、マスタFT制御LSI210に返送する(シーケンスS141)。
この二重化関連パケットを受け取ったマスタFT制御LSI210は、クロスリンクを介して相手側モジュール60のマスタFT制御LSI710にエラーの通知を行う(シーケンスS341)。また、マスタFT制御LSI210は、自モジュール10のスレーブFT制御LSI220および230に、CPUサブシステム100を論理的に切り離すよう指示するコマンド「Shoot CPU」を含む二重化関連パケットを出力する(シーケンスS142)。ここで、切り離されるのはCPUサブシステム100だけであり、IOサブシステム300は、依然としてアクティブ側のIOサブシステムとして使用され続ける。
コマンド「Shoot CPU」を受け取ったスレーブFT制御LSI220および230は、CPUサブシステム100の切り離しを行い、切り離しが完了すると、CPUサブシステム100が切り離されている状態であることを示すステータス情報「CPU Broken」を含む二重化関連パケットを、マスタFT制御LSI210に返送する(シーケンスS143)。
一方、モジュール60では、CPUサブシステムが二重化されていない状態で動作するよう指示するコマンド「Go CPU SMR」を含む二重化関連パケットを、マスタFT制御LSI710が、スレーブFT制御LSI720および730へ出力し(シーケンスS242)、スレーブFT制御LSI720および730は、CPUサブシステムが二重化されていない動作状態に移行する。そして、スレーブFT制御LSI720および730は、CPUサブシステムが二重化されていないことを示すステータス情報「CPU SMR」を含む二重化関連パケット情報をマスタFT制御LSI710に返送する(シーケンスS243)。
以上により、CPUサブシステム100が、FTサーバ1から論理的に切り離され、FTサーバ1は、CPUサブシステム600を用いて動作を継続する。
同様に、CPUサブシステムおよびIOサブシステムが共に二重化された状態(DMR状態)で、IOサブシステムにエラーが発生した場合、エラーが発生したI/Oデバイスが切り離される。
具体的には、エラーが発生したI/Oデバイスに接続されているスレーブFT制御LSIが、ステータス情報「IO Error」を書き込んだ二重化関連パケットを、マスタFT制御LSIに返送する。この二重化関連パケットを受け取ったマスタFT制御LSIは、コマンド「Shoot IO」を含む二重化関連パケットを出力する。そして、各スレーブFT制御LSIは、コマンド「Shoot IO」に基づいて、エラーが発生したI/Oサブシステムを論理的に切り離してIO Broken状態となる。一方、スタンバイ側のモジュールでは、マスタFT制御LSIが、コマンド「Go IO SMR」の格納された二重化関連パケットをスレーブFT制御LSIに出力し、各スレーブFT制御LSIは、I/Oサブシステムが二重化されていないことを示すIO SMR状態となる。
以上のように、マスタFT制御LSIとスレーブFT制御LSIとをSyncBusで接続してコマンド通知やステータス情報の通知を可能とすることにより、FT制御部の機能をこれらマスタFT制御LSIおよびスレーブFT制御LSIに分担させることが出来る。これにより、FT制御部200および700を、比較的小さなサイズのFT制御LSIで構築できる。具体的には、各FT制御LSIは、16チャンネル分のPCI-Expressに接続できればよい。したがって、1つのLSIでFT制御部を構成する場合は、1つのLSIで48チャンネル分のPCI-Expressに接続できる必要があるのに対して、1つのLSIあたりのI/Oポート数を少なくできる。
ここで、本発明を適用してFT制御部を構成する場合、複数のFT制御LSIが必要となるものの、LSIの小型化によりLSI製造の際の歩留まりを上げることができ、トータルの製造コストを低減させることができる。また、スレーブFT制御LSIの数を増減させることによりI/Oバンド幅をフレキシブルに増減させることも可能となり、FTシステムに許容されるコストや要求仕様に応じて、様々なI/Oポート数のFTシステムを提供できる。
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
1 FTサーバ
10、60 モジュール
100、600 CPUサブシステム
110、610 メインメモリ
120、620 CPU
130、630 IOハブ
200、700 FT制御部
210、710 マスタFT制御LSI
220、230、720、730 スレーブFT制御LSI
211、221 ルータ
212、222 ボータ
213 マスタFTコントローラ
223、233 スレーブFTコントローラ
214a、224a Txクロスリンク
214b、224b Rxクロスリンク
215 レガシーデバイスコントローラ
216 インタラプトコントローラ
217a、227a シンクバス出力部
217b、227b シンクバス入力部
218 スレーブ数入力部
228 スレーブID入力部
300、800 IOサブシステム
310、810 VGAチップ
320、820 サウスブリッジ
330、340、830、840 I/Oスイッチ
350、850 LANチップ
360、860 ストレージチップ
370、380、870、880 PCIeスロット

Claims (6)

  1. I/O処理要求を出力するCPUサブシステムと、前記I/O処理要求に応じてI/O処理を行うIOサブシステムと、前記CPUサブシステムおよび前記IOサブシステムに接続され、1つのマスタFT制御LSIと1つまたは複数のスレーブFT制御LSIと、を具備するFT制御部と、を具備するモジュールを複数具備する耐故障システムであって、
    前記IOサブシステムのいずれか1つがアクティブ側に設定され、他のIOサブシステムはスタンバイ側に設定され、
    前記スレーブFT制御LSIの各々は、当該スレーブFT制御LSIに接続される前記CPUサブシステムまたは当該スレーブFT制御LSIに接続される前記IOサブシステムから故障情報が出力されると故障情報取得を示すステータス情報をマスタFT制御LSIに出力し、また、当該スレーブFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとから同一のI/O処理要求が出力されると、当該I/O処理要求の1つを、当該スレーブFT制御LSIに接続されるIOサブシステムに出力し、当該IOサブシステムからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとに前記レスポンスを出力し、当該スレーブFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムからI/O処理要求が出力されると、当該I/O処理要求の1つを他のモジュールに出力し、他のモジュールからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムに当該レスポンスを出力し、
    前記マスタFT制御LSIは、前記スレーブFT制御LSIから出力される前記ステータス情報に基づいて、故障したサブシステムに対する切り離し制御を行うコマンドを決定して前記スレーブFT制御LSIに出力し、
    前記スレーブFT制御LSIは、前記コマンドに基づいて、故障したサブシステムに対する切り離し制御を行う、
    ことを特徴とする耐故障システム。
  2. 前記マスタFT制御LSIと複数の前記スレーブFT制御LSIとがリンク構造の経路にて接続され、
    前記マスタFT制御LSIは、前記リンク構造の経路を介して前記コマンドを前記スレーブFT制御LSIに出力し、
    前記スレーブFT制御LSIは、前記リンク構造の経路を介して前記故障情報を前記マスタFT制御LSIに出力する、
    ことを特徴とする請求項1に記載の耐故障システム。
  3. 前記マスタFT制御LSIは、前記コマンドと当該コマンドを実行すべきタイミングを示す情報とを含むパケットを前記スレーブFT制御LSIに出力し、
    前記スレーブFT制御LSIは、前記情報の示すタイミングにて前記コマンドを実行する、
    ことを特徴とする請求項1または請求項2に記載の耐故障システム。
  4. 耐故障システムの耐故障制御を行うマスタFT制御LSIであって、
    スレーブFT制御LSIに接続可能であり、接続されたスレーブFT制御LSIから出力される故障情報を取得するシンクバス入力部と、
    シンクバス入力部が取得する故障情報に基づいて、故障したサブシステムに対する切り離し制御を行うコマンドを決定するマスタFTコントローラと、
    接続する前記スレーブFT制御LSIに、前記マスタFTコントローラが決定した前記コマンドを出力するシンクバス出力部と、
    を具備することを特徴とするマスタFT制御LSI。
  5. 耐故障システムの耐故障制御を行うスレーブFT制御LSIであって、
    マスタFT制御LSIに接続可能であり、サブシステムから出力される故障情報を、接続する前記マスタFT制御LSIに出力するシンクバス出力部と、
    前記マスタFT制御LSIから出力されるコマンドに基づいて、故障したサブシステムに対する切り離し制御を行うスレーブFTコントローラと、
    を具備することを特徴とするスレーブFT制御LSI。
  6. I/O処理要求を出力するCPUサブシステムと、前記I/O処理要求に応じてI/O処理を行うIOサブシステムと、前記CPUサブシステムおよび前記IOサブシステムに接続され、1つのマスタFT制御LSIと1つまたは複数のスレーブFT制御LSIと、を具備するFT制御部と、を具備するモジュールを複数具備し、前記IOサブシステムのいずれか1つがアクティブ側に設定され、他のIOサブシステムはスタンバイ側に設定されている耐故障システムの耐故障制御方法であって、
    前記スレーブFT制御LSIの各々が、当該スレーブFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとから同一のI/O処理要求が出力されると、1つの当該I/O処理要求を、当該スレーブFT制御LSIに接続されるIOサブシステムに出力し、当該スレーブFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、当該スレーブFT制御LSIに接続されるCPUサブシステムからI/O処理要求が出力されると、当該I/O処理要求の1つを他のモジュールに出力するI/O処理要求転送ステップと、
    前記スレーブFT制御LSIの各々が、当該スレーブFT制御LSIに接続されるIOサブシステムがアクティブ側に設定されているときは、当該IOサブシステムからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムと他のモジュールとに前記レスポンスを出力し、当該スレーブFT制御LSIに接続されるIOサブシステムがスタンバイ側に設定されているときは、他のモジュールからレスポンスが出力されると、当該スレーブFT制御LSIに接続されるCPUサブシステムに当該レスポンスを出力するレスポンス転送ステップと、
    前記スレーブFT制御LSIの各々が、当該スレーブFT制御LSIに接続される前記CPUサブシステムまたは当該スレーブFT制御LSIに接続される前記IOサブシステムから故障情報が出力されると故障情報取得を示すステータス情報をマスタFT制御LSIに出力するステータス情報出力ステップと、
    前記マスタFT制御LSIが、前記スレーブFT制御LSIから出力される前記ステータス情報に基づいて、故障したサブシステムに対する切り離し制御を行うコマンドを決定して前記スレーブFT制御LSIに出力するコマンド出力ステップと、
    前記スレーブFT制御LSIが、前記コマンドに基づいて、故障したサブシステムに対する切り離し制御を行う切り離し実行ステップと、
    を具備することを特徴とする耐故障制御方法。
JP2010205378A 2010-09-14 2010-09-14 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法 Expired - Fee Related JP5585332B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010205378A JP5585332B2 (ja) 2010-09-14 2010-09-14 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法
US13/229,956 US8924772B2 (en) 2010-09-14 2011-09-12 Fault-tolerant system and fault-tolerant control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010205378A JP5585332B2 (ja) 2010-09-14 2010-09-14 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法

Publications (2)

Publication Number Publication Date
JP2012063828A JP2012063828A (ja) 2012-03-29
JP5585332B2 true JP5585332B2 (ja) 2014-09-10

Family

ID=45807845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010205378A Expired - Fee Related JP5585332B2 (ja) 2010-09-14 2010-09-14 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法

Country Status (2)

Country Link
US (1) US8924772B2 (ja)
JP (1) JP5585332B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014082713A (ja) * 2012-10-18 2014-05-08 Canon Inc データ処理装置及びその制御方法
US9124339B2 (en) * 2013-04-04 2015-09-01 Maxlinear, Inc. Loop-through for multi-chip communication systems
JP6284795B2 (ja) * 2014-03-19 2018-02-28 三菱電機インフォメーションネットワーク株式会社 フォールトトレラントサーバ装置
WO2016151674A1 (ja) * 2015-03-20 2016-09-29 ルネサスエレクトロニクス株式会社 データ処理装置
US10002056B2 (en) 2015-09-15 2018-06-19 Texas Instruments Incorporated Integrated circuit chip with cores asymmetrically oriented with respect to each other
JP6436242B2 (ja) * 2015-09-17 2018-12-12 株式会社安川電機 産業機器の通信システム、通信方法、及び産業機器
US10740167B2 (en) 2016-12-07 2020-08-11 Electronics And Telecommunications Research Institute Multi-core processor and cache management method thereof
US10642782B2 (en) 2016-12-08 2020-05-05 Electronics And Telecommunications Research Institute Multi-core processor and operation method thereof
JP7188895B2 (ja) * 2018-03-19 2022-12-13 Necプラットフォームズ株式会社 通信システム
US11354449B2 (en) 2018-04-27 2022-06-07 Tesla, Inc. Secure initial provisioning of a system on a chip
US11423178B2 (en) * 2018-04-27 2022-08-23 Tesla, Inc. Isolation of subsystems on a system on a chip
CN109240841B (zh) * 2018-07-02 2021-12-14 广东睿江云计算股份有限公司 一种联合文件系统故障发现与隔离方法及装置
CN111694304B (zh) * 2020-06-12 2021-11-09 西安微电子技术研究所 一种面向空间飞行器的综合故障逻辑判决电路及方法
EP3936949A1 (de) * 2020-07-09 2022-01-12 Siemens Aktiengesellschaft Verfahren zum betreiben eines redundanten automatisierungssystems und redundantes automatisierungssystem

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59225428A (ja) * 1983-06-07 1984-12-18 Fujitsu Ltd 入出力処理装置
JP3123413B2 (ja) * 1995-11-07 2001-01-09 株式会社日立製作所 コンピュータシステム
US6708283B1 (en) * 2000-04-13 2004-03-16 Stratus Technologies, Bermuda Ltd. System and method for operating a system with redundant peripheral bus controllers
US7370239B2 (en) * 2001-05-31 2008-05-06 Fisher-Rosemount Systems, Inc. Input/output device with configuration, fault isolation and redundant fault assist functionality
US7069477B2 (en) * 2002-10-30 2006-06-27 International Business Machines Corporation Methods and arrangements to enhance a bus
JP4411602B2 (ja) 2004-12-16 2010-02-10 日本電気株式会社 フォールトトレラント・コンピュータシステム
US7853821B2 (en) * 2006-04-17 2010-12-14 Hewlett-Packard Development Company, L.P. Identifying one or more storage devices causing a failure condition during discovery of storage devices
JP4884885B2 (ja) * 2006-08-25 2012-02-29 株式会社日立製作所 記憶制御装置及び記憶制御装置の障害回復方法
US7647463B2 (en) * 2006-11-16 2010-01-12 International Business Machines Corporation Apparatus, system and method for detection of mismatches in continuous remote copy using metadata

Also Published As

Publication number Publication date
JP2012063828A (ja) 2012-03-29
US8924772B2 (en) 2014-12-30
US20120066545A1 (en) 2012-03-15

Similar Documents

Publication Publication Date Title
JP5585332B2 (ja) 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法
US7441150B2 (en) Fault tolerant computer system and interrupt control method for the same
US8880768B2 (en) Storage controller system with data synchronization and method of operation thereof
JP2005505056A (ja) モジュラーdmaアーキテクチャを用いた制御装置データ共有
JP6098778B2 (ja) 冗長化システム、冗長化方法、冗長化システムの可用性向上方法、及びプログラム
GB2425378A (en) Redundant interfaces which appear to be a single interface
JPH0934809A (ja) 高信頼化コンピュータシステム
KR100258079B1 (ko) 밀결합 결함 허용 시스템에서 메모리 버스 확장에 의한 동시 쓰기 이중화 장치
JP2005293315A (ja) データミラー型クラスタシステム及びデータミラー型クラスタシステムの同期制御方法
US20080240134A1 (en) Multi-node, peripheral component switch for a computer system
WO2021012169A1 (zh) 一种提高存储系统可靠性的方法和相关装置
JP3329986B2 (ja) マルチプロセッサシステム
JP4755050B2 (ja) データ処理装置、モード管理装置、及びモード管理方法
WO2010100757A1 (ja) 演算処理システム、再同期方法、およびファームプログラム
KR20040007310A (ko) 정보 처리 장치
JP4182486B2 (ja) フォールト・トレラント・コンピュータ・リセット方法及びそのシステム
JP5511546B2 (ja) フォールトトレラントの計算機システム、複数の物理サーバとストレージ装置とに接続されるスイッチ装置、及び、サーバ同期制御方法
JP5115075B2 (ja) 転送装置、転送装置を有する情報処理装置及び制御方法
JP3015537B2 (ja) 電子計算機の二重化方式
JP3015538B2 (ja) 電子計算機の二重化方式
JPH06187185A (ja) 二重化装置
CN113345495A (zh) 伺服器及相关的控制方法
CN113342260A (zh) 伺服器与应用于伺服器的控制方法
JPH0581056A (ja) 電子計算機の二重化方式
JPH09190416A (ja) 二重化コンピュータシステム及び二重化i/o制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130710

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140618

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140624

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140707

R150 Certificate of patent or registration of utility model

Ref document number: 5585332

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees