JP2006172220A - フォールトトレラント・コンピュータシステム - Google Patents

フォールトトレラント・コンピュータシステム Download PDF

Info

Publication number
JP2006172220A
JP2006172220A JP2004364977A JP2004364977A JP2006172220A JP 2006172220 A JP2006172220 A JP 2006172220A JP 2004364977 A JP2004364977 A JP 2004364977A JP 2004364977 A JP2004364977 A JP 2004364977A JP 2006172220 A JP2006172220 A JP 2006172220A
Authority
JP
Japan
Prior art keywords
computer system
vga
tolerant computer
fault tolerant
cpu
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.)
Granted
Application number
JP2004364977A
Other languages
English (en)
Other versions
JP4411602B2 (ja
Inventor
Shinji Abe
晋樹 阿部
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 JP2004364977A priority Critical patent/JP4411602B2/ja
Priority to CNA2005101316958A priority patent/CN1790284A/zh
Priority to AU2005244592A priority patent/AU2005244592A1/en
Priority to CA002530330A priority patent/CA2530330A1/en
Priority to EP05027613A priority patent/EP1672507A2/en
Priority to US11/304,890 priority patent/US7610509B2/en
Publication of JP2006172220A publication Critical patent/JP2006172220A/ja
Application granted granted Critical
Publication of JP4411602B2 publication Critical patent/JP4411602B2/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/2002Error 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 interconnections or communication control functionality are redundant
    • G06F11/2007Error 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 interconnections or communication control functionality are redundant using redundant communication media
    • 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/2002Error 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 interconnections or communication control functionality are redundant
    • G06F11/2005Error 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 interconnections or communication control functionality are redundant using redundant communication controllers
    • 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

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)

Abstract

【課題】既存のOS又はI/Oデバイスドライバを改造することなく、I/Oデバイスの二重化制御を行うことができるFTコンピュータシステムを提供すること
【解決手段】FTコンピュータシステム1は、第1システム1aと、第1システム1aと同期して動作する第2システム1bとを備える。第1システム1a及び第2システム1bの各々は、CPU2と、CPU2に接続されたルーティングコントローラ4とを備える。また、第1システム1aは、アクティブI/Oデバイスとしての第1I/Oデバイス8aを備え、第2システム1bは、スタンバイI/Oデバイスとしての第2I/Oデバイス8bを備える。ルーティングコントローラ4は、CPU2と第1I/Oデバイス8a及び第2I/Oデバイス8bとの間のルーティングを制御する。第1I/Oデバイス8aが故障した場合、そのルーティングコントローラ4は、CPU2から受け取った第1I/Oデバイス8aに対するリクエストデータを、第2I/Oデバイス8bへルーティングする。
【選択図】 図2

Description

本発明は、フォールトトレラント(FT; Fault Tolerant)コンピュータシステムに関する。特に、本発明は、FTコンピュータシステムにおいてI/Oデバイスを制御する技術に関する。
交通管制、金融、証券などの基幹業務で使用されるサーバは、社会生活の基盤を担っており、それらのサーバには、高い信頼性と耐故障性が求められる。また、企業の業務サーバや、インターネットを利用したホスティング・サービスなどにおいても、故障によるサービスの停止が大きな営業的損失を招く恐れがある。このように、幅広い分野において、高信頼性サーバの需要が高まっている。
高度な信頼性を提供するコンピュータとして、「フォールトトレラント(FT; Fault Tolerant)コンピュータ」が知られている。FTコンピュータにおいては、システムを構成するハードウェアモジュール(CPUやメモリ)が二重化、または多重化されており、各モジュールは、同一クロックで同期動作するように制御される。ある部位(モジュール)で故障が発生した場合、その故障モジュールは論理的に切り離され、正常に動作しているモジュールが処理を続行する。これにより、耐故障性が向上する。
図1は、一般的なFTコンピュータ(システム)の構成を示す概念図である。このFTコンピュータ100は、二重化されたハードウェアモジュールと、それらハードウェアモジュールに接続されたフォールトトレラント制御部(FT制御部)110を備えている。図1においては、CPU120、メインメモリ130、I/Oデバイス140が二重化されている。1つのCPU120a(120b)と1つのメインメモリ130a(130b)が、1つのCPUサブシステム150を構成している。つまり、このFTコンピュータ100は、2つのCPUサブシステム150によって二重化されている。この2つのCPUサブシステム150は、同一クロックで同期動作するように制御される。また、二重化されたI/Oデバイス(群)140が、IOサブシステム160を構成している。FT制御部110は、CPUサブシステム150及びIOサブシステム160を制御する。具体的には、FT制御部110は、2つのCPUサブシステム150の同期動作(両系同期動作)の維持、故障の検出、故障モジュールの切り離し制御などを行う。
一般的に、FTコンピュータシステムは、ハードウェアで二重化制御(dual control)される部分と、ソフトウェアで二重化制御される部分とに区分される。例えば、CPUサブシステム150(CPU120、メインメモリ130)は、それ自身ソフトウェアが動作する基盤である。従って、CPUサブシステム150は、ハードウェアで二重化制御する必要がある。CPUサブシステム150内でエラーが発生した場合、FT制御部110(ハードウェア)は、故障したCPUやメモリをシステムから論理的に瞬時に切り離す。これにより、システムが停止することなく、1個のCPUサブシステム150とI/Oサブシステム160により、処理が継続する。
一方、IOサブシステム160は、ソフトウェアで二重化制御される。例えば、I/Oデバイス140aが故障した場合、その故障を検出したFT制御部110は、I/Oデバイス140を制御しているソフトウェア(以下、「I/Oデバイスドライバ」と参照される)に対して、エラー通知を行う。この時、I/Oデバイスドライバは、故障したI/Oデバイス140aの使用を中止し、代わって二重化されている別のI/Oデバイス140bを使用することになる。このように、I/Oサブシステム160内のI/Oデバイス140の切り替えは、ソフトウェアで行われる。
以上に示されたI/Oデバイス140の切り替え制御を行うためには、I/Oデバイスドライバに、FT制御部110からのエラー通知を認識する機能と、代替I/Oデバイスへ切り替える処理を行う機能が実装されている必要がある。すなわち、I/Oデバイス140を司るI/Oデバイスドライバや、それらを統括管理するオペレーティングシステム(OS)が、FTコンピュータに対応している必要がある。
特許文献1には、2ポートコンソールを有するFTコンピュータにおける、I/Oの切り替え技術が開示されている。この従来技術は、ケーブルの接続切り替え作業を行うことなく、単一のコンソール装置でシステム監視や保守を行うことを目的とする。この従来技術によるFTコンピュータは、コンソール出力を2系統持ち、障害が発生した場合、その入出力バスが切り替えられる。その入出力バスの切り替えは、OSからの指示に応じて行われる。ここでは、専用OSが使用されると考えられる。
近年、サーバの分野では、Intel(登録商標)系のCPUをベースとした、いわゆる「オープン系システム(PCサーバ)」が採用される傾向が強まってきている。オープン系のPCサーバには、独立系ハードウェアベンダが製造したI/Oデバイスが搭載され、そのI/Oデバイスの制御には、同じベンダが作成したI/Oデバイスドライバが使用されるのが主流である。しかしながら、そのようなI/Oデバイスドライバのほとんどは、FTコンピュータを意識して作成されていない。そのようなI/Oデバイスドライバで、上記I/Oデバイスの切り替え処理機能が実装されたものは皆無である。また、ビデオアダプタ(VGA: Video Graphics Adapter)等のオープン系コンピュータに標準的に搭載されたI/Oデバイスは、OSから直接アクセスされることが多い。オープン系コンピュータで主に使用されるOSに、フォールトトレラント・コンピュータ用の改造を加えることは、現実的に不可能である。
オープン系のハードウェア・ソフトウェアに対応した高信頼性サーバが望まれる。オープン系のOS又はI/Oデバイスドライバに基づいて、フォールトトレラント・コンピュータシステムを実現することができる技術が望まれる。特に、オープン系のサーバにおいて、耐故障性・信頼性を向上させるために、I/Oデバイスの二重化制御を行うことができる技術が望まれる。
特開平9−16426号公報
本発明の目的は、オープン系のハードウェア・ソフトウェアをベースとしたFTコンピュータシステムを提供することにある。
本発明の他の目的は、既存のOS又はI/Oデバイスドライバを改造することなく、I/Oデバイスの二重化制御を行うことができるFTコンピュータシステムを提供することにある。
本発明の更に他の目的は、オープン系のサーバの耐故障性・信頼性を向上させることにある。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を用いて、[課題を解決するための手段]を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明に係るFTコンピュータシステム(1)は、第1システム(1a)と、第1システム(1a)と同期して動作する第2システム(1b)とを備える。第1システム(1a)及び第2システム(1b)の各々は、CPU(2)と、CPU(2)に接続されたルーティングコントローラ(4)とを備える。また、第1システム(1a)は、アクティブI/Oデバイスとしての第1I/Oデバイス(8a)を備え、第2システム(1b)は、スタンバイI/Oデバイスとしての第2I/Oデバイス(8b)を備える。ルーティングコントローラ(4)は、CPU(2)と第1I/Oデバイス(8a)及び第2I/Oデバイス(8b)との間のルーティングを制御する。第1I/Oデバイス(8a)が故障した場合、そのルーティングコントローラ(4)は、CPU(2)から受け取った第1I/Oデバイス(8a)に対するリクエストデータを、第2I/Oデバイス(8b)へルーティングする。
このFTコンピュータシステム(1)において、ルーティングコントローラ(4)は、CPU(2)に接続されたアドレスコンバータ(43)と、CPU(2)に接続されたレスポンスデータコンバータ(44)と、アドレスコンバータ(43)及びレスポンスデータコンバータ(44)に接続されたルータ(45)とを有する。第1I/Oデバイス(8a)が故障した場合、このアドレスコンバータ(43)は、CPU(2)から第1I/Oデバイス(8a)に対するリクエストデータを受け取った時、第1I/Oデバイス(8a)を示す「デバイス情報」を第2I/Oデバイス(8b)を示す「デバイス情報」に置換する。これにより、リクエストデータから変換リクエストデータが生成される。アドレスコンバータ(43)は、その変換リクエストデータをルータ(45)にフォワードする。ルータ(45)は、変換リクエストデータに含まれる「デバイス情報」に基づいて、その変換リクエストデータを第2I/Oデバイス(8b)へルーティングする。
その「デバイス情報」は、PCIヒエラルキー構造におけるPCIバス番号、デバイス番号、及びファンクション番号であってもよい。この時、ルーティングコントローラ(4)は、それらPCIバス番号、デバイス番号、及びファンクション番号を格納するレジスタ(53a、53b)を更に有する。そのレジスタ(53a、53b)は、アドレスコンバータ(43)から参照される。
また、その「デバイス情報」は、システムメモリマップ空間におけるアドレスであってもよい。この時、ルーティングコントローラ(4)は、そのアドレスを格納するレジスタ(57、58)を更に有する。そのレジスタ(57、58)は、アドレスコンバータ(43)から参照される。
このFTコンピュータシステム(1)において、第1I/Oデバイス(8a)及び第2I/Oデバイス(8b)が正常に動作している場合、レスポンスデータコンバータ(44)は、次のように動作する。第2I/Oデバイス(8b)へのアクセスが発生した場合、レスポンスデータコンバータ(44)は、ルータ(45)を介して第2I/Oデバイス(8b)からレスポンスデータを受け取る。この時、レスポンスデータコンバータ(44)は、そのレスポンスデータの一部を書き換えることによって、レスポンスデータから変換レスポンスデータを生成する。そして、レスポンスデータコンバータ(44)は、その変換レスポンスデータをCPU(2)に出力する。
具体的には、レスポンスデータコンバータ(44)は、レスポンスデータに含まれる第2I/Oデバイス(8b)の「クラスコード」を「別のクラスコード」に置換することによって、変換レスポンスデータを生成する。ルーティングコントローラ(4)は、その別のクラスコードを格納するレジスタ(55)を更に有してもよい。そのレジスタ(55)は、レスポンスデータコンバータ(44)から参照される。
このFTコンピュータシステム(1)は、第1システム(1a)のルーティングコントローラ(4a)と第1I/Oデバイス(8a)との間に介在する第1PCIブリッジ(6a)と、第2システム(1b)のルーティングコントローラ(4b)と第2I/Oデバイス(8b)との間に介在する第2PCIブリッジ(6b)とを更に備える。第1PCIブリッジ(6a)の「VGA Enable bit」と、第2PCIブリッジ(6b)の「VGA Enable bit」は、共に“Enable”に設定されている。
第2PCIブリッジ(6b)の「VGA Enable bit」へのアクセスが発生した場合、レスポンスデータコンバータ(44)は、ルータ(45)を介して第2PCIブリッジ(6b)から「VGA Enable bit」を受け取り、その受け取った「VGA Enable bit」を“Disable”に変更する。
第1I/Oデバイス(8a)、第2I/Oデバイス(8b)、第1PCIブリッジ(6a)、及び第2PCIブリッジ(6b)は、オープン系のデバイスである。第1I/Oデバイス(8a)及び第2I/Oデバイス(8b)は、例えば、VGAデバイスである。
このように、本発明に係るFTコンピュータシステム(1)によれば、アクティブ系とスタンバイ系の2個のI/Oデバイス(VGAデバイス)の二重化制御が実現される。障害時には、ハードウェアによる切り替え処理が実行され、通常処理の続行が可能となる。ここで、そのような二重化制御は、OSに対して隠蔽された形で実行され、また、VGAデバイスのエラー等は、OSからは完全に隠蔽される。
具体的には、VGAデバイスの「PCI Configuration Register」へのアクセスに際し、クラスコードの置換が行われたり、PCIブリッジへのアクセスに際し、「VGA Enable bit」の隠蔽が行われたり、障害時にアドレスの付替えが行われる。つまり、常にアクティブ側の標準VGAデバイスを使い続けているという状況が、OSに対して擬似的に作り出されている。OSから見えているVGAデバイスは、常に一個(標準VGAデバイス)である。よって、特にOSに修正を施すことなく、VGAデバイス8の二重化制御が可能となる。また、I/OデバイスやPCIブリッジとして、一般的なオープン系のデバイスが採用されたとしても、二重化制御が可能となる。すなわち、FTコンピュータを意識せずに作成された既存のOS、I/Oデバイス、I/Oデバイスドライバを搭載したサーバにおいても、I/Oデバイスの二重化及びフェイルオーバーを実現することが可能となる。
本発明によれば、オープン系のハードウェア・ソフトウェアをベースとしたFTコンピュータシステムが実現される。特に、本発明に係るFTコンピュータシステムによれば、既存のOS又はI/Oデバイスドライバを改造することなく、I/Oデバイス(ハードウェア)の二重化制御を行うことが可能となる。よって、オープン系のサーバの耐故障性・信頼性が向上する。
添付図面を参照して、本発明によるフォールトトレラント(FT; Fault Tolerant)コンピュータシステムを説明する。
(構成)
図2は、本発明に係るFTコンピュータシステムの構成を示すブロック図である。このFTコンピュータシステム1は、二重化された第1システム1aと第2システム1bを備えている。以下の説明においては、便宜上、第1システム1aがプライマリ(Primary)システムと参照され、第2システム1bがセカンダリ(Secondary)システムと参照されることがある。
第1システム1aは、CPU2a、メインメモリ3a、ルーティングコントローラ(Routing Controller)4a、FT制御部5a(第1FT制御部)、PCIブリッジ(PCI Bridge)6a、PCIバス7a、VGAデバイス8a、及びI/Oデバイス9aを有している。第2システム1bは、第1システム1aと同一の構成を有しており、CPU2b、メインメモリ3b、ルーティングコントローラ4b、FT制御部5b(第2FT制御部)、PCIブリッジ6b、PCIバス7b、VGAデバイス8b、及びI/Oデバイス9bを有している。両系(第1及び第2システム)において、CPU2、メインメモリ3、ルーティングコントローラ4、及びFT制御部5の一部は、CPUサブシステム11を構成している。両系のCPUサブシステム11は、クロックも含めて完全に同期して動作する。また、FT制御部5の一部、PCIブリッジ6、及び二重化されたI/Oデバイス群(8a、9a、8b、9b)は、I/Oサブシステム12を構成する。そのI/Oサブシステム12と1つのCPUサブシステム11が、1つのシステムとして動作する。
ルーティングコントローラ4は、CPU2、メインメモリ3、及びFT制御部5に接続されている。このルーティングコントローラ4は、ノースブリッジ(North Bridge)とも呼ばれ、CPU2からのリクエスト(Request)をメモリ系またはI/O系へとルーティングする役割を果たす。ここで、ルーティングコントローラ4は、FT制御部5に2本のパスを介して接続されている。それは、I/Oデバイス群(8a、9a、8b、9b)が二重化されているためである。つまり、ルーティングコントローラ4は、あるアクセスがプライマリ側のI/Oデバイス(8a、9a)に対するものか、セカンダリ側のI/Oデバイス(8b、9b)に対するものかを判断する。そして、その判断の結果に基づいて、ルーティングコントローラ4は、別のパスを用いてルーティングを実行する。
FT制御部5は、両系(2つのCPUサブシステム11)の動作の比較・チェックなどを行うことにより、プライマリ/セカンダリCPUサブシステム11の同期性を維持する。また、FT制御部5は、エラーチェックによる故障の検出や、故障モジュールの切り離し制御などを行う。
PCIブリッジ6は、各I/Oデバイス8、9とFT制御部5を接続する。本発明によれば、I/Oデバイスの二重化制御が実現される。その二重化制御のターゲットとなるI/Oデバイスとして、VGA(Video Graphics Adapter)デバイス8が例示される。このVGAデバイスは、レガシーI/Oデバイスの1つであり、OSから直接アクセスされる場合が多い。尚、本実施の形態で用いられているPCIブリッジ6やI/Oデバイス8、9は、一般的なオープン系サーバで使用されるものである。フォールトトレラント用の特殊な機能を有するのは、上述のルーティングコントローラ4及びFT制御部5である。
また、図2に示されるように、第1FT制御部5aと第2FT制御部5bは、FTリンク(FT-Link)10を介して接続されている。このFTリンク10は、CPUサブシステム11から、他系のI/Oデバイス8、9へのアクセスに使用される。つまり、第1システム1aのCPUサブシステム11から第2システムのI/Oデバイス8b、9bへのアクセス、及び第2システム1bのCPUサブシステム11から第1システムのI/Oデバイス8a、9aへのアクセスに、このFTリンク10は使用される。つまり、第1FT制御部5aは、両系のCPUサブシステム11からのPCIブリッジ6a及びその配下のI/Oデバイス8a、9aに対するアクセスを受け持つ。一方、第2FT制御部5bは、両系のCPUサブシステム11からのPCIブリッジ6b及びその配下のI/Oデバイス8b、9bに対するアクセスを受け持つ。両系の同期チェックは、FT制御部5が受け持つ範囲に限られる。したがって、本システムでは、FT制御部5による同期チェックは分散的に行われることになる。
また、図2に示されるように、2つのVGAデバイス8a、8bは、スイッチ13を介して表示装置(Display)14に接続される。本実施の形態に係るFTコンピュータシステム1は、二重化されるVGAデバイス8a、8bを有しているので、本来2つのVGA出力を有している。しかしながら、表示装置14は一つに限られるため、このスイッチ13が、VGA出力を切り替える役割を果たす。通常時、表示装置14は、優先的に使用される側(例えば、プライマリ側)のVGAデバイス8の出力に接続される。障害発生時においては、表示装置14とVGA出力との接続は、FT制御部5の制御によって適宜切り替えられる。接続されるVGAデバイス8は、標準VGAデバイスとして、システムに唯一存在することになる。
図3は、本実施の形態に係るFTコンピュータシステム1における、PCI(Peripheral Component Interconnect)のヒエラルキー構造を示す概念図である。全てのアクセス可能なデバイスには、“PCI Bus Specification”に従って、PCIバス番号、デバイス番号、及びファンクション番号が与えられる。これにより、CPU2を頂点としたヒエラルキー構造が得られる。
例えば、ルーティングコントローラ4内に存在するメモリコントローラデバイス(Memory Controller Device)21には、“Device#0”が付与されている。FT制御部5内に存在するFTコントロールデバイス(FT Control Device)22には、“Device#1”が付与されている。第1システム1aのPCIブリッジ6a(第1PCIブリッジ;PCI Bridge#1)には、“Device#2”が付与されている。第2システム1bのPCIブリッジ6b(第2PCIブリッジ;PCI Bridge#2)には、“Device#3”が付与されている。これらメモリコントローラデバイス21、FTコントロールデバイス22、第1PCIブリッジ6a、及び第2PCIブリッジ6bは、CPU2の下層に位置し、“Bus#0”が付与されたバスを介してCPU2に接続されている。
また、第1PCIブリッジ6aの配下には、VGAデバイス(Video Device#1)8a及びI/Oデバイス(I/O Device#1)9aが存在しており、それらVGAデバイス8a及びI/Oデバイス9aは、“Bus#1”が付与されたバスを介して第1PCIブリッジ6aに接続されている。VGAデバイス8aには、“Device#0”が付与され、I/Oデバイス9aには、“Device#1”が付与されている。また、第2PCIブリッジ6bの配下には、VGAデバイス(Video Device#2)8b及びI/Oデバイス(I/O Device#2)9bが存在しており、それらVGAデバイス8b及びI/Oデバイス9bは、“Bus#2”が付与されたバスを介して第2PCIブリッジ6bに接続されている。VGAデバイス8bには、“Device#0”が付与され、I/Oデバイス9bには、“Device#1”が付与されている。
CPU2上のOSを含むソフトウェアがVGAデバイス8やI/Oデバイス9にアクセス手段としては、(1)PCI Configuration Access、(2)IO Mapped Access、及び(3)Memory Mapped PCI Accessの3通りが存在する。これらのうち、「PCI Configuration Access」が発生した場合、該アクセスは、図3に示されたヒエラルキー構造を参照することによってフォワードされる。つまり、該アクセスは、ルーティングコントローラ4、PCIブリッジ6を経て、該当するPCIバス番号を有するバスへフォワードされていく。そして、最終的には、ターゲットであるVGAデバイス8やI/Oデバイス9に、該アクセスが到達する。
また、図4は、本実施の形態に係るシステムメモリマップを示す概念図である。VGAデバイス8やI/Oデバイス9は、それぞれアドレス空間を有している。オープン系サーバで標準的に使用されるIntel(登録商標)系のシステムの場合、図4に示されるように、VGAデバイス8やI/Oデバイス9は、4ギガバイト以下のアドレスのシステムメモリ空間にマップされる。例えば、“Address A-low”から“Address A-hi”で規定される空間へのアクセスは、ルーティングコントローラ4によって、第1PCIブリッジ6aへフォワードされる。第1PCIブリッジ6aは、それをPCIバス“Bus#1”へフォワードする。この時、“PCI Bus#1”に接続された各デバイスは、バス上に発行されたアドレスを参照し、自アドレス空間に一致した場合、このアクセスを受け入れる。
また、Intel系システムでは、“A0000h〜BFFFFh空間”へのアクセスは、図4に示されるように、「標準VGA空間」として扱われる。この標準VGA空間に対するアクセスは、システムに唯一存在する標準VGAデバイスへフォワードされる。この場合、前提条件として、システム起動時にBIOSのシステム・ソフトウェア等によって、標準VGAデバイスが決められる。そして、配下に標準VGAデバイスが存在するPCIブリッジ6には、「VGA Enable bit」と呼ばれるPCIコンフィグレーションレジスタ(PCI Configuration Register)がセットされる。“A0000h〜BFFFFh空間”へのアクセスが検出された場合、ルーティングコントローラ4は、この“VGA Enable bit”がセットされているPCIブリッジ6に該アクセスをフォワードする。これにより、標準VGAデバイスへのアクセスが実現されている。上述の「Memory Mapped PCI Access」が発生した場合、該アクセスは、図4に示されたシステムメモリマップを参照することによってフォワードされる。
図5Aは、一般的なI/OデバイスのPCIコンフィグレーションレジスタ空間の一部を概念的に示している。また、図5Bは、クラスコードレジスタ(Class Code Register)を概念的に示している。一般的に、ドライバやOSは、システム内の全デバイスの本空間にアクセスを行い、デバイスの製造者や種別のアドレス空間へのマッピングを行っている。例えば、クラスコード(Class Code)フィールドは、どのようなI/Oデバイスかを示す識別子である。このクラスコードフィールドは、VGAデバイス8の場合は“030000h”であり、あらゆる範疇に入らないI/Oデバイスの場合は“FF0000h”となることが、「PCI Bus Specification」で定義されている。
以上に示された、図3、図4、図5A及び図5Bに関する事項は、「PCI Bus Specification」で規定されている。
本発明に係るルーティングコントローラ4は、VGAデバイス8の二重化制御を、ハードウェアによって実現する。図6は、本発明に係るルーティングコントローラ4の構成を示すブロック図である。ルーティングコントローラ4は、ターゲットであるI/Oデバイス(8、9)のアドレスをデコードし、CPU2からのリクエストがそのターゲットにフォワードされるように、適切なルーティングを行う。図6に示されるように、本発明に係るルーティングコントローラ4は、制御部40と、その制御部40に接続されたルーティングコントロールレジスタ群(Routing Control Registers)41及びエラー検出器(Error Detector)42を備えている。また、制御部40は、アドレスコンバータ(Address Converter)43、レスポンスデータコンバータ(Response Data Converter)44、及びルータ(Router)45を備えている。
ルーティングコントロールレジスタ群41は、後述されるように、ルーティングコントローラ4の各種設定を行う。エラー検出器42は、PCIブリッジ6、VGAデバイス8及びI/Oデバイス9で検出されたエラー情報を保持し、また、制御部40にエラー検出を通知する。
アドレスコンバータ43は、CPU2とルータ45に接続されている。このアドレスコンバータ43は、CPU2からリクエストデータを受け取る。この時、アドレスコンバータ43は、そのリクエストに対応するアドレス(リクエストアドレス)を、ルーティングコントロールレジスタ群41の設定に基づいて変換し、「変換アドレス情報」を生成する。そして、アドレスコンバータ43は、生成された変換アドレス情報を含む「変換リクエストデータ」を、ルータ45に出力する。FT制御部5a、5bに接続されたルータ45は、その変換アドレス情報に基づいてルーティングを行う。
レスポンスデータコンバータ44は、CPU2とルータ45に接続されている。このレスポンスデータコンバータ44は、I/Oデバイス9やVGAデバイス8からのレスポンスデータをルータ45を経由して受け取る。この時、レスポンスデータコンバータ44は、ルーティングコントロールレジスタ群41の設定に基づいて、受け取ったレスポンスデータの一部の内容を書き換え、「変換レスポンスデータ」を生成する。そして、レスポンスデータコンバータ44は、その変換レスポンスデータを、レスポンスデータとしてCPU2に出力する。
図7は、本発明に係るルーティングコントロールレジスタ群41の構成を示す概念図である。このルーティングコントロールレジスタ群41は、以下の複数のレジスタ51〜58から構成されている。
Config Address Routing Control Enable:
本レジスタ51は、VGAデバイス8等のデバイスを二重化制御する機能そのものを活性化/非活性化させるためのレジスタである。本レジスタ51が“Disable”に設定されると、ハードウェアの二重化制御は停止する。この場合、ルーティングコントローラ4は、従来の一般的なノースブリッジと同様の動作を行う。本レジスタ51が“Enable”に設定されると、ハードウェアの二重化制御はが開始する。
Default Target Device:
本レジスタ52は、2つあるVGAデバイス8a、8bのうち、実際に使用する「標準VGAデバイス」を指定するためのレジスタである。システム起動時にBIOSによって、このレジスタ52には、“Primary”と“Secondary”のいずれかが指定される。“Primary”が設定された場合、VGAデバイス8aが標準VGAデバイスとして採用され、“Secondary”が設定された場合、VGAデバイス8bが標準VGAデバイスとして採用され、エラー検出器42からPCIブリッジ6あるいはVGAデバイス8のエラーが通知された場合、ルーティングコントローラ4は、本レジスタ52を参照して、VGAデバイス8へのルーティングを切り替える。
Primary Device PCI Configuration Number:
Secondary Device PCI Configuration Number:
本レジスタ53a及び53bのそれぞれには、二重化制御されるVGAデバイス8a及び8bのPCIバス番号、デバイス番号、ファンクション番号が設定される。CPU2からリクエストとして上述の「PCI Configuration Access」を受け取った場合、ルーティングコントローラ4は、本レジスタ53a及び53bに格納された値との比較を行う。これにより、ルーティングコントローラ4は、VGAデバイス8へのアクセスを認識することができる。
Primary Device Class Code Replace Enable:
Secondary Device Class Code Replace Enable:
本レジスタ54a及び54bのそれぞれは、クラスコードレジスタへのアクセスの際にクラスコードを置換する機能を活性化/非活性化させるためのレジスタである。本レジスタ54が“Enable”に設定された場合、ルーティングコントローラ4(レスポンスデータコンバータ44)は、次に示される“Replace Class Code”レジスタ55に設定された値を用いて上記「変換レスポンスデータ」を生成する。つまり、レスポンスデータコンバータ44は、VGAデバイス8aあるいは8bのクラスコードレジスタへのアクセスに対するレスポンスデータを、“Replace Class Code”レジスタ55に設定されたクラスコードを用いて書き換える。本レジスタ54が“Disable”に設定された場合、このような置換は行われない。
一般的に、システムに2個のVGAデバイス8が存在する場合、OSは両者を異なるVGAデバイス8として捉え、独立に制御しようと動作する。しかし、本発明に係るシステムは、フォールトトレラント・コンピュータシステムであり、一方のVGAデバイス8を使用している場合は、他方のVGAデバイス8をOSから隠蔽する必要がある。そして、一方のVGAデバイス8が故障した場合に、他方のVGAデバイス8を代替として使用する必要がある。ここで、VGAデバイス8そのものを隠蔽した場合、デバイスそのものがOSから不可視となってしまい、隠蔽されたVGAデバイス8のアドレスがシステムメモリ空間へ登録されなくなる。その結果、PCIブリッジ6へのアドレス範囲の設定も行われなくなるため、代替VGAデバイスへのアクセスが物理的に不可能になってしまう。そのため、本発明によれば、クラスコードのみを他の値に置換するという手段が採用される。これにより、使用されていないVGAデバイス8を、擬似的に隠蔽することが可能となる。
Replace Class Code:
本レジスタ55には、上述の置換に用いられる値が設定される。上記「Default Target Device」に設定された側ではないVGAデバイス8のクラスコードレジスタに対するアクセスが発生した場合、ルーティングコントローラ4(レスポンスデータコンバータ44)は、レスポンスデータを本レジスタ55に設定された値で置換する。VGAデバイス8のクラスコードは“030000h”と定められているが、本発明によれば、本レジスタ55には、例えば「その他のデバイス(Other Device)」を示すクラスコード“FF0000h”が設定される。結果として、OSは、上記「Default Target Device」に設定された側ではないVGAデバイス8を、一般的なI/Oデバイスとして認識する。
Primary VGA Enable bit Hide Enable:
Secondary VGA Enable bit Hide Enable:
本レジスタ56a、56bは、オープン系デバイスであるPCIブリッジ6の上記「VGA Enable bit」を隠蔽するためのレジスタである。一般的なWindows(登録商標)等のOSは、複数のPCIブリッジ6の「VGA Enable bit」が“Enable”にセットされている場合の動作を保証していない。よって、従来のシステムの場合、PCIブリッジ6a及び6bのいずれかのみに、「VGA Enable bit」がセットされるべきである。「VGA Enable bit」が“Enable”にセットされていない場合、PCIブリッジ6は、標準VGA空間(A0000h〜BFFFFh)へのアクセスを下位のPCIバスへフォワードしない。しかしながら、本発明に係るシステムは、FTコンピュータシステムである。上記「Default Target Device」に設定されたVGAデバイス8が故障した場合は、代替VGAデバイスが使用されなければならない。よって、代替VGAデバイス側のPCIブリッジ6で標準VGA空間へのアクセスが遮断されないようにする必要がある。すなわち、両系のPCIブリッジ6a、6bの「VGA Enable bit」が“Enable”にセットされなければならない。一般的なWindows(登録商標)等のOSを本システムに適用する際の矛盾を解消するために、本レジスタ56a、56bは、「VGA Enable bit」を隠蔽する機能を提供する。本レジスタ56が“Enable”に設定されたPCIブリッジ6の「VGA Enable bit」へのアクセスが検出された場合、ルーティングコントローラ4(レスポンスデータコンバータ44)は、レスポンスデータを置換することによって、その「VGA Enable bit」を隠蔽する。
Primary Base Address:
Secondary Base Address:
Primary Address Size:
Secondary Address Size:
本レジスタ57a、57b、58a、58bは、それぞれのVGAデバイス8に割り当てられたベースアドレス(Base Address)及びそのサイズを設定するためのレジスタである。VGAデバイス8は、メモリ空間を有しており、Intel(登録商標)系のシステムの場合、システムメモリ中の4ギガバイトより下のアドレスの何れかにマップされる。本レジスタ57a、57bには、双方(Primary/Secondary)のVGAデバイス8a、8bがどのアドレスにマップされたかが設定される。本レジスタ57、58は、「Default Target Device」に設定されたVGAデバイス8が故障した際、CPU2からのアクセスを代替VGAデバイスへのアクセスへ変更するために、アドレスコンバータ43から参照される。つまり、デフォルトのVGAデバイス8が故障した際、引き続き同一のVGAデバイス8を使用している様にOSに見せる必要があるため、アドレスコンバータ43はアドレスの付け替えを行う。これにより、OSに対してはデフォルトのVGAデバイス8の故障を隠蔽しつつ、実際には異なる代替デバイスへのアクセス・ルーティングを実行することが可能となる。
以上に説明されたルーティングコントローラ4により、デフォルトのVGAデバイス8が故障した際に、ハードウェアによるアドレス変換及び切り替え制御を実行することが可能となる。これにより、FTコンピュータシステム1は、処理を続行することが可能となる。ここで、そのような制御は、OSに対して隠蔽された形で実行され、また、VGAデバイス8のエラー等は、OSからは完全に隠蔽される。つまり、常に正常なデバイスを使い続けているという状況が、OSに対して擬似的に作り出されている。OSから見えているVGAデバイス8は、常に一個である。よって、特にOSに修正を施すことなく、VGAデバイス8の二重化制御が可能となる。また、I/Oデバイス(8、9)やPCIブリッジ6として、一般的なオープン系のデバイスが採用されたとしても、二重化制御が可能となる。すなわち、FTコンピュータを意識せずに作成された既存のOS、I/Oデバイス、I/Oデバイスドライバを搭載したサーバにおいても、I/Oデバイスの二重化を実現することが可能となる。
(動作例)
以下、本発明に係るFTコンピュータシステム1の動作の一例が詳細に示される。図2及び図3に示されたFTコンピュータシステム1において、プライマリ側のI/Oデバイス群8、9がアクティブI/O(Active I/O)であり、セカンダリ側のI/Oデバイス群8、9がスタンバイI/O(Stand-by I/O)であるとする。アクティブI/Oは、処理に使用されるI/Oデバイス群であり、スタンバイI/Oは、アクティブI/Oが故障した際に代わって使用されるI/Oデバイス群である。つまり、第1システム1aのVGAデバイス8aは、通常使用されるアクティブVGAデバイス(標準VGAデバイス)であり、第2システム1bのVGAデバイス8bは、スタンバイVGAデバイス(代替VGAデバイス)である。
図7に示されたルーティングコントロールレジスタ群41は、以下の通り設定されたとする。
Config Address Routing Control Enable:“Enable”
これにより、本発明に係るハードウェアによるI/Oデバイスの二重化制御がアクティブになる。
Default Target Device:“Primary”
上述の通り、プライマリ側のVGAデバイス8aがアクティブに設定されている。本レジスタ52に設定された側のVGAデバイス8(I/Oデバイス)が、以下、「デフォルト」と参照される場合がある。
Primary Device PCI Config. Number :“Bus#1, Dev#0, Func#0”
Secondary Device PCI Config. Number:“Bus#2, Dev#0, Func#0”
図3に示されたPCIヒエラルキー下におけるデバイス情報が、本レジスタ53に設定される。レジスタ53aには、プライマリ側のVGAデバイス8aのデバイス情報が設定され、レジスタ53bには、セカンダリ側のVGAデバイス8bのデバイス情報が設定されている。
Primary Device Class Code Replace Enable :“Disable”
Secondary Device Class Code Replace Enable:“Enable”
Replace Class Code:“FF0000h”
プライマリ側のVGAデバイス8aは、OSに見せられるVGAデバイスである。一方、セカンダリ側のVGAデバイス8bは、OSから隠蔽されるべきVGAデバイスであり、OSに「その他のデバイス」として認識させる必要がある。そのため、セカンダリ側のクラスコード(Class Code)が“FF0000h”に置換されるという設定が行われている。
Primary VGA Enable bit Hide Enable :“Disable”
Secondary VGA Enable bit Hide Enable:“Enable”
アクティブ/スタンバイに関わらず、PCIブリッジ6a及び6bの「VGA Enable bit」は、BIOSにより“Enable”に設定される。但し、本実施の形態によれば、スタンバイ側のPCIブリッジ6bの「VGA Enable bit」へのアクセスが発生した場合、そのビット情報が隠蔽される必要がある。そのため、セカンダリ側に対するレジスタ56bは、“Enable”にセットされている。
Primary Base Address :FD00_0000h
Primary Address Size :200_0000h
Secondary Base Address:F800_0000h
Secondary Address Size:200_0000h
本レジスタ57、58の値は、VGAデバイス8が有するPCIコンフィグレーションレジスタ(図5A参照)のベースアドレスレジスタ(Base Address Register)の値に依存する。ここでは、仮に上記値がセットされたとする。
以上の設定により、OSから見たシステムのPCIヒエラルキーは、図8に示されたような構造を有することになる。アクティブ側及びスタンバイ側のPCIブリッジ6a及び6bの「VGA Enable bit(VGA_En)」は、双方とも“Enable”に設定されている。また、スタンバイ側のVGAデバイス8bは、OSからは「その他のデバイス60」として認識されている。また、図9Aは、システムメモリマップを示しており、図9Bは、PCIコンフィグレーションマップを示している。アクティブVGAデバイスは、“FD00_0000h 〜 FFFF_FFFFh”にマッピングされ、スタンバイVGAデバイスは、“F800_0000h 〜 FAFF_FFFh”にマッピングされている。また、アドレス“A0000h〜BFFFFh”は、標準VGA空間(Compatible VGA Space)として扱われている。
CPU2上のOSを含むソフトウェアがVGAデバイス8にアクセス手段としては、少なくとも(1)PCI Configuration Access、(2)Memory Mapped PCI Access、及び(3)IO Mapped Accessの3通りが存在する。以下の説明においては、特に、「PCI Configuration Access」に対するルーティングと、「Memory Mapped PCI Access」に対するルーティングについて示される。尚、「IO Mapped Access」に関しては、「Memory Mapped PCI Access」に対するルーティングとほぼ同じ制御が行われるため、ここではその説明は省略される。
図10は、本発明に係るFTコンピュータシステム1(ルーティングコントローラ4)の動作を示すフローチャートである。まず、CPU2は、あるデバイス(ターゲット)に対するリード・リクエストを発行する。CPU2からリクエスト(リード・リクエスト)を受け取った時、アドレスコンバータ43は、そのアクセスの形態を調べる(ステップS1)。アクセスの形態が上記3種類の形態以外の場合、アドレスコンバータ43は、そのリクエストを単にルータ45へフォワードする(ステップS300)。ルータ45は、ターゲットであるデバイスへのルーティングを実行する(ステップS301)。
(1)PCI Configuration Access
ステップS1において、アクセスの形態が「PCI Configuration Access」の場合、図11に示されるフローが実行される。CPU2からPCIコンフィグレーション(図8参照)に対するリード・リクエストが発行された場合、制御部40(アドレスコンバータ43)は、そのリクエストデータからバス番号、デバイス番号、ファンクション番号、及びレジスタオフセットアドレスを抽出する。そして、制御部40は、抽出された値を、「Primary/Secondary Device PCI Config. Number(レジスタ53a、53b)」に設定された値と比較する(ステップS101)。
例えば、抽出された値が、「Secondary Device PCI Config. Number」に設定された値と一致した場合(ステップS101;Yes)、制御部40(アドレスコンバータ43)は、エラー検出器42に格納されたエラー情報に基づいて、その一致したデバイスが正常かどうか判定する(ステップS102)。一致したデバイスが正常である場合(ステップS102;Yes)、制御部40は、更に、レジスタオフセットアドレスを調べ、そのアドレスがクラスコードレジスタのアドレス(09h〜0Bh;図5参照)の範囲内にあるかどうかを判定する(ステップS103)。
クラスコードレジスタへのアクセスが含まれない場合(ステップS103;No)、上記ステップS300が実行される。クラスコードレジスタへのアクセスが含まれる場合(ステップS103;Yes)、制御部40は、「Secondary Device Class Code Replace」の設定を確認する(ステップS104)。ここで、「Secondary Device Class Code Replace」は“Enable”に設定されているので(ステップS104;Yes)、制御部40は、レスポンスデータコンバータ44に対して、クラスコードの置換を指示する(ステップS105)。その後、上記ステップS300が実行される。
その後、セカンダリVGAデバイス8bからレスポンスデータが返される。レスポンスデータコンバータ44は、レスポンスデータを受け取った時、そのレスポンスデータに示されているクラスコードを、「Replace Class Code」に設定された“FF0000h”に置換する。そして、レスポンスデータコンバータ44は、置換により生成された変換レスポンスデータを、CPU2に渡す。以上のシーケンスにより、OSがスタンバイVGAデバイス8bのクラスコードにアクセスした場合、必ず“FF0000h(Other Device)”が返される。そのため、OSが2個のVGAデバイス8a、8bを認識することはなくなる。
また、CPU2からのリクエストが、セカンダリPCIブリッジ6bの「VGA Enable bit」を参照するリード・リクエストであるとする(ステップS101;No、ステップS111;Yes)。「VGA Enable bit」は、“PCI-to-PCI Bridge Specification”で規定されており、ブリッジコントロールレジスタ(Bridge Control Register;オフセットアドレス:3Eh)に存在する。その領域に対するアクセスを認識した場合(ステップS112;Yes)、制御部40(アドレスコンバータ43)は、「Secondary VGA Enable bit Hide」を参照する(ステップS113)。ここで、「Secondary VGA Enable bit Hide」は、“Enable”にセットされているので(ステップS113;Yes)、制御部40は、レスポンスデータコンバータ44に対して、「VGA Enable bit」の隠蔽を指示する(ステップS114)。その後、上記ステップS300が実行される。
その後、セカンダリPCIブリッジ6bからレスポンスデータが返される。レスポンスデータコンバータ44は、レスポンスデータを受け取った時、そのレスポンスデータに示されている「VGA Enable bit」を、“Disable(=0)”に置換する。そして、レスポンスデータコンバータ44は、置換により生成された変換レスポンスデータを、CPU2渡す。以上のシーケンスにより、OSがスタンバイ側のPCIブリッジ6bの「VGA Enable bit」にアクセスした場合、必ず“Disable”が返される。これにより、スタンバイ側のPCIブリッジ6bがOSから隠蔽される。実際には複数のPCIブリッジ6において「VGA Enable bit」がセットされているが、OSから「VGA Enable bit」がセットされているように見えるPCIブリッジは、プライマリ側のPCIブリッジ6aに限られる。従って、OSにとって、不整合は何ら発生しない。
次に、アクティブVGAデバイス8aが故障した場合、またはアクティブVGAデバイス8aにおいて何らかのエラーが発生した場合を考える。この障害に関する情報は、エラー検出器42によって、制御部40に通知されている。
CPU2からアクティブVGAデバイス8aに対するリード・リクエストが発行された場合、制御部40(アドレスコンバータ43)は、そのリクエストデータからバス番号、デバイス番号、ファンクション番号、及びレジスタオフセットアドレスを抽出する。そして、制御部40は、抽出された値を、「Primary/Secondary Device PCI Config. Number」に設定された値と比較する(ステップS101)。ここでは、抽出された値が、「Primary Device PCI Config. Number」に設定された値と一致する(ステップS101;Yes)。また、アクセスターゲットであるアクティブVGAデバイス8aは故障している(ステップS102;No)。
この時、制御部40は、そのアクセスターゲットであるアクティブVGAデバイス8aが、「デフォルト」に一致しているかどうか判定する(ステップS121)。不一致の場合(ステップS121;No)、ステップS300が実行される。この例においては、アクセスターゲットがデフォルトに一致する(ステップS121;Yes)。この場合、アドレスコンバータ43は、「Secondary Device PCI Config. Number」を参照し、上記抽出された値を、デフォルトではないスタンバイVGAデバイス8bのバス番号、デバイス番号、ファンクション番号に置換する(ステップS122)。このようにして、変換アドレス情報が生成される。そして、アドレスコンバータ43は、生成された変換アドレス情報を含む「変換リクエストデータ」を、ルータ45に出力する(ステップS300)。
この例では、「Bus#1:Dev#0:Func#0」へのリクエストが、「Bus#2:Dev#0:Func#0」へのリクエストに書き換えられることとなる。その結果、図13に示されるように、該リード・リクエストは、セカンダリVGAデバイス8b(60)へルーティングされることとなる。図14に示されるように、プライマリVGAデバイス8aへのアクセスが、セカンダリVGAデバイス8b(60)へのアクセスに置き換えられる。これにより、プライマリVGAデバイス8aの障害を、OSに対して隠蔽することが可能となり、処理を続行することが可能となる。OSは、プライマリVGAデバイス8aにアクセスし続けているように認識する。
(2)Memory Mapped PCI Access
ステップS1において、アクセスの形態が「Memory Mapped PCI Access」の場合、図12に示されるフローが実行される。この「Memory Mapped PCI Access」の場合は、図9A及び図9Bに示されたシステムメモリマップが参照される。まず、CPU2からリード・リクエストを受け取った場合、制御部40(アドレスコンバータ43)は、そのリクエストアドレス(Request Address)をチェックする(ステップS201、ステップS211)。
例えば、標準VGA空間(A0000h〜BFFFFh)へのリードリクエストがCPU2によって発行された場合(ステップS201;No、ステップS211;Yes)、制御部40(アドレスコンバータ43)は、「Default Target Device」で指定されたデフォルトにエラーが発生しているかどうか確認する(ステップS212)。デフォルトが正常な場合(ステップS212;No)、アドレスコンバータ43は、ルータ45に対して、デフォルト側のPCIブリッジ6aにリクエストを強制的にルーティングするように指示を出す(ステップS213)。これにより、該リクエストは、プライマリ側のPCIブリッジ6aへルーティングされ、結果的にプライマリ側のアクティブVGAデバイス8aにルーティングされる。
デフォルトに障害が発生している場合(ステップS212;Yes)、アドレスコンバータ43は、ルータ45に対して、非デフォルト側(スタンバイ側)のPCIブリッジ6bにリクエストを強制的にルーティングするように指示を出す(ステップS230)。これにより、該リクエストは、セカンダリ側のPCIブリッジ6bへルーティングされ、結果的にセカンダリ側のスタンバイVGAデバイス8bにルーティングされる。
また例えば、リクエストアドレスが、VGAデバイス8のアドレス空間に含まれる場合(ステップS201;Yes)、制御部40(アドレスコンバータ43)は、そのターゲットであるVGAデバイス8に障害が発生しているか確認する(ステップS02)。ターゲットであるプライマリVGAデバイス8aが、正常に動作している場合(ステップS202;No)、ステップS300が実行される。
ターゲットであるプライマリVGAデバイス8aに障害が発生している場合(ステップS202;Yes)、制御部40は、そのターゲットがデフォルトに一致しているかどうか判定する(ステップS221)。この例の場合、プライマリVGAデバイス8aは、デフォルトである(ステップS221;Yes)。この場合、アドレスコンバータ43は、リクエストアドレスを、非デフォルト側(セカンダリVGAデバイス8b)のアドレスに置換する(ステップS222)。この例では、図15に示されるように、“FE00_0000h”へのリクエストが、“F900_0000h”へのリクエストに書き換えられることになる。これらアドレス値は、「Primary/Secondary Base Address」及び「Primary/Secondary Address Size」に基づいて計算される。このような書き換えの結果、図13に示されるように、該リード・リクエストは、セカンダリVGAデバイス8b(60)へルーティングされることとなる。これにより、プライマリVGAデバイス8aの障害を、OSに対して隠蔽することが可能となり、処理を続行することが可能となる。OSは、プライマリVGAデバイス8aにアクセスし続けているように認識する。
なお、通常の場合、OSは、機能が未知の「Other Device」(スタンバイVGAデバイス8b)に直接アクセスを行うことはない。たとえ、その「Other Device」に障害が発生したとしても、ルーティングコントローラ4は、アクティブ系の障害を隠蔽するのと同様に、その障害をCPU2へ通知しない。よって、二次的な障害がシステムのダウンを招くことはない。
(効果)
以上に説明されたように、本発明に係るFTコンピュータシステム1によれば、アクティブ系とスタンバイ系の2個のVGAデバイス8の二重化制御が実現される。障害時には、ハードウェアによる切り替え処理が実行され、通常処理の続行が可能となる。ここで、そのような二重化制御は、OSに対して隠蔽された形で実行され、また、VGAデバイス8のエラー等は、OSからは完全に隠蔽される。
具体的には、VGAデバイス8の「PCI Configuration Register」へのアクセスに際し、クラスコードの置換が行われたり、PCIブリッジ6へのアクセスに際し、「VGA Enable bit」の隠蔽が行われたり、障害時にアドレスの付替えが行われる。つまり、常にアクティブ側の標準VGAデバイスを使い続けているという状況が、OSに対して擬似的に作り出されている。OSから見えているVGAデバイス8は、常に一個(標準VGAデバイス)である。よって、特にOSに修正を施すことなく、VGAデバイス8の二重化制御が可能となる。また、I/Oデバイス(8、9)やPCIブリッジ6として、一般的なオープン系のデバイスが採用されたとしても、二重化制御が可能となる。すなわち、FTコンピュータを意識せずに作成された既存のOS、I/Oデバイス、I/Oデバイスドライバを搭載したサーバにおいても、I/Oデバイスの二重化及びフェイルオーバーを実現することが可能となる。よって、オープン系のサーバの耐故障性・信頼性が向上する。
尚、実施の形態においては、VGAデバイス8がI/Oデバイスの一例として示されたが、本発明は、VGAデバイス8以外のデバイスに対しても有効である。つまり、VGAデバイス以外のデバイスに対して、同様の切り替え機能や隠蔽機能が適用される。これにより、オープン系デバイスをハードウェアで二重化制御することが可能となる。
図1は、一般的なフォールトトレラント(FT)コンピュータシステムの構成を概略的に示すブロック図である。 図2は、本発明に係るフォールトトレラント(FT)コンピュータシステムの構成を示すブロック図である。 図3は、システム内のPCIヒエラルキーを示す概念図である。 図4は、システムメモリマップを示す概念図である。 図5Aは、PCIコンフィグレーションレジスタの内容を示す概念図である。 図5Bは、クラスコードレジスタの内容を示す概念図である。 図6は、本発明に係るルーティングコントローラの構成を示すブロック図である。 図7は、本発明に係るルーティングコントロールレジスタ群の構成を示す概念図である。 図8は、本発明に係るPCIヒエラルキーの一例を示す概念図である。 図9Aは、本発明に係るシステムメモリマップの一例を示す概念図である。 図9Bは、本発明に係るPCIコンフィグレーションマップの一例を示す概念図である。 図10は、本発明に係るFTコンピュータシステムの動作を示すフローチャートである。 図11は、本発明に係るFTコンピュータシステムの動作を示すフローチャートである。 図12は、本発明に係るFTコンピュータシステムの動作を示すフローチャートである。 図13は、本発明に係るFTコンピュータシステムの動作の一例を説明するための図である。 図14は、本発明に係るFTコンピュータシステムの動作の一例を説明するための図である。 図15は、本発明に係るFTコンピュータシステムの動作の一例を説明するための図である。
符号の説明
1 フォールトトレラント(FT)コンピュータシステム
1a 第1システム
1b 第2システム
2 CPU
3 メインメモリ
4 ルーティングコントローラ
5 FT制御部
6 PCIブリッジ
7 PCIバス
8 VGAデバイス
9 I/Oデバイス
10 FTリンク
11 CPUサブシステム
12 IOサブシステム
13 スイッチ
14 表示装置
21 メモリコントローラデバイス
22 FTコントロールデバイス
40 制御部
41 ルーティングコントロールレジスタ群
42 エラー検出器
43 アドレスコンバータ
44 レスポンスデータコンバータ
45 ルータ
60 その他のデバイス

Claims (13)

  1. 第1システムと、
    前記第1システムと同期して動作する第2システムと
    を具備し、
    前記第1システム及び前記第2システムの各々は、
    CPUと、
    前記CPUに接続されたルーティングコントローラと
    を備え、
    前記第1システムは、アクティブI/Oデバイスとしての第1I/Oデバイスを備え、
    前記第2システムは、スタンバイI/Oデバイスとしての第2I/Oデバイスを備え、
    前記ルーティングコントローラは、前記CPUと前記第1I/Oデバイス及び前記第2I/Oデバイスとの間のルーティングを制御し、
    前記第1I/Oデバイスが故障した場合、
    前記ルーティングコントローラは、前記CPUから受け取った前記第1I/Oデバイスに対するリクエストデータを、前記第2I/Oデバイスへルーティングする
    フォールトトレラント・コンピュータシステム。
  2. 請求項1に記載のフォールトトレラント・コンピュータシステムであって、
    前記ルーティングコントローラは、
    前記CPUに接続されたアドレスコンバータと、
    前記CPUに接続されたレスポンスデータコンバータと、
    前記アドレスコンバータ及び前記レスポンスデータコンバータに接続されたルータと
    を有し、
    前記第1I/Oデバイスが故障した場合、
    前記アドレスコンバータは、前記CPUから前記リクエストデータを受け取った時、前記第1I/Oデバイスを示すデバイス情報を前記第2I/Oデバイスを示すデバイス情報に置換することによって、前記リクエストデータから変換リクエストデータを生成し、前記変換リクエストデータを前記ルータにフォワードし、
    前記ルータは、前記変換リクエストデータに含まれる前記デバイス情報に基づいて、前記変換リクエストデータを前記第2I/Oデバイスへルーティングする
    フォールトトレラント・コンピュータシステム。
  3. 請求項2に記載のフォールトトレラント・コンピュータシステムであって、
    前記デバイス情報は、PCIヒエラルキー構造におけるPCIバス番号、デバイス番号、及びファンクション番号である
    フォールトトレラント・コンピュータシステム。
  4. 請求項3に記載のフォールトトレラント・コンピュータシステムであって、
    前記ルーティングコントローラは、
    前記アドレスコンバータから参照され、前記PCIバス番号、前記デバイス番号、及び前記ファンクション番号を格納するレジスタを更に有する
    フォールトトレラント・コンピュータシステム。
  5. 請求項2に記載のフォールトトレラント・コンピュータシステムであって、
    前記デバイス情報は、システムメモリマップ空間におけるアドレスである
    フォールトトレラント・コンピュータシステム。
  6. 請求項5に記載のフォールトトレラント・コンピュータシステムであって、
    前記ルーティングコントローラは、
    前記アドレスコンバータから参照され、前記アドレスを格納するレジスタを更に有する
    フォールトトレラント・コンピュータシステム。
  7. 請求項2乃至6のいずれかに記載のフォールトトレラント・コンピュータシステムであって、
    前記第1I/Oデバイス及び前記第2I/Oデバイスが正常に動作している場合、
    前記レスポンスデータコンバータは、前記ルータを介して前記第2I/Oデバイスからレスポンスデータを受け取った時、前記レスポンスデータの一部を書き換えることによって、前記レスポンスデータから変換レスポンスデータを生成し、前記変換レスポンスデータを前記CPUに出力する
    フォールトトレラント・コンピュータシステム。
  8. 請求項7に記載のフォールトトレラント・コンピュータシステムであって、
    前記レスポンスデータコンバータは、前記レスポンスデータに含まれる前記第2I/Oデバイスのクラスコードを別のクラスコードに置換することによって、前記変換レスポンスデータを生成する
    フォールトトレラント・コンピュータシステム。
  9. 請求項8に記載のフォールトトレラント・コンピュータシステムであって、
    前記ルーティングコントローラは、
    前記レスポンスデータコンバータから参照され、前記別のクラスコードを格納するレジスタを更に有する
    フォールトトレラント・コンピュータシステム。
  10. 請求項2乃至9のいずれかに記載のフォールトトレラント・コンピュータシステムであって、
    前記第1システムの前記ルーティングコントローラと前記第1I/Oデバイスとの間に介在する第1PCIブリッジと、
    前記第2システムの前記ルーティングコントローラと前記第2I/Oデバイスとの間に介在する第2PCIブリッジと
    を更に具備し、
    前記第1PCIブリッジのVGA Enable bitと、前記第2PCIブリッジのVGA Enable bitは、共にEnableに設定されている
    フォールトトレラント・コンピュータシステム。
  11. 請求項10に記載のフォールトトレラント・コンピュータシステムであって、
    前記第2PCIブリッジの前記VGA Enable bitへのアクセスが発生した場合、
    前記レスポンスデータコンバータは、前記ルータを介して前記第2PCIブリッジから前記VGA Enable bitを受け取り、前記受け取ったVGA Enable bitをDisableに変更する
    フォールトトレラント・コンピュータシステム。
  12. 請求項10又は11に記載のフォールトトレラント・コンピュータシステムであって、
    前記第1I/Oデバイス、前記第2I/Oデバイス、前記第1PCIブリッジ、及び前記第2PCIブリッジは、オープン系のデバイスである
    フォールトトレラント・コンピュータシステム。
  13. 請求項1乃至12のいずれかに記載のフォールトトレラント・コンピュータシステムであって、
    前記第1I/Oデバイス及び前記第2I/Oデバイスは、VGAデバイスである
    フォールトトレラント・コンピュータシステム。
JP2004364977A 2004-12-16 2004-12-16 フォールトトレラント・コンピュータシステム Expired - Fee Related JP4411602B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2004364977A JP4411602B2 (ja) 2004-12-16 2004-12-16 フォールトトレラント・コンピュータシステム
CNA2005101316958A CN1790284A (zh) 2004-12-16 2005-12-16 容错计算机系统
AU2005244592A AU2005244592A1 (en) 2004-12-16 2005-12-16 Fault tolerant computer system
CA002530330A CA2530330A1 (en) 2004-12-16 2005-12-16 Fault tolerant computer system
EP05027613A EP1672507A2 (en) 2004-12-16 2005-12-16 Fault tolerant computer system
US11/304,890 US7610509B2 (en) 2004-12-16 2005-12-16 Fault tolerant computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004364977A JP4411602B2 (ja) 2004-12-16 2004-12-16 フォールトトレラント・コンピュータシステム

Publications (2)

Publication Number Publication Date
JP2006172220A true JP2006172220A (ja) 2006-06-29
JP4411602B2 JP4411602B2 (ja) 2010-02-10

Family

ID=36019117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004364977A Expired - Fee Related JP4411602B2 (ja) 2004-12-16 2004-12-16 フォールトトレラント・コンピュータシステム

Country Status (6)

Country Link
US (1) US7610509B2 (ja)
EP (1) EP1672507A2 (ja)
JP (1) JP4411602B2 (ja)
CN (1) CN1790284A (ja)
AU (1) AU2005244592A1 (ja)
CA (1) CA2530330A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010103562A1 (ja) 2009-03-09 2010-09-16 富士通株式会社 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム
JP2010218370A (ja) * 2009-03-18 2010-09-30 Nec Corp フォールトトレラントシステム
JP2012128697A (ja) * 2010-12-16 2012-07-05 Hitachi Ltd 情報処理装置
US8924772B2 (en) 2010-09-14 2014-12-30 Nec Corporation Fault-tolerant system and fault-tolerant control method
JP2015179386A (ja) * 2014-03-19 2015-10-08 三菱電機インフォメーションネットワーク株式会社 フォールトトレラントサーバ装置及び通信制御装置の切替プログラム
KR101688385B1 (ko) * 2015-10-30 2016-12-21 (주)테크코리아 유해환경물질 원격 이중화 감시 시스템 및 이의 운용방법

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028193B2 (en) * 2007-12-13 2011-09-27 International Business Machines Corporation Failover of blade servers in a data center
JP5380978B2 (ja) * 2008-09-26 2014-01-08 富士通株式会社 伝送装置、伝送装置の制御方法および伝送装置の制御プログラム
CN101414970B (zh) * 2008-11-26 2011-11-30 中兴通讯股份有限公司 Ioc模块分配方法及io交换器
CN101615145B (zh) * 2009-07-24 2011-12-07 中兴通讯股份有限公司 一种提高存储器数据缓存可靠性的方法和装置
US8959392B2 (en) * 2010-03-23 2015-02-17 Continental Teves Ag & Co. Ohg Redundant two-processor controller and control method
DE102013202253A1 (de) * 2013-02-12 2014-08-14 Paravan Gmbh Schaltung zur Steuerung eines Beschleunigungs-, Brems- und Lenksystems eines Fahrzeugs
US9740178B2 (en) * 2013-03-14 2017-08-22 GM Global Technology Operations LLC Primary controller designation in fault tolerant systems
US9141493B2 (en) * 2013-07-12 2015-09-22 International Business Machines Corporation Isolating a PCI host bridge in response to an error event
US9495723B2 (en) * 2013-08-09 2016-11-15 Nvidia Corporation Scale-up techniques for multi-GPU passthrough
US9342422B2 (en) 2013-11-07 2016-05-17 International Business Machines Corporation Selectively coupling a PCI host bridge to multiple PCI communication paths
CA2948914C (en) 2014-07-01 2017-09-05 Sas Institute Inc. Systems and methods for fault tolerant communications
JP6540204B2 (ja) * 2015-04-30 2019-07-10 富士通株式会社 中継装置
JP6582523B2 (ja) * 2015-04-30 2019-10-02 富士通株式会社 ストレージ装置、制御装置、制御プログラム
US9703789B2 (en) 2015-07-27 2017-07-11 Sas Institute Inc. Distributed data set storage and retrieval
US9946719B2 (en) 2015-07-27 2018-04-17 Sas Institute Inc. Distributed data set encryption and decryption
JP6834446B2 (ja) * 2016-12-14 2021-02-24 オムロン株式会社 制御システム、制御プログラムおよび制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0594277A (ja) 1991-10-02 1993-04-16 Toshiba Corp 複数種類のフラツトパネルデイスプレイをサポートする機能を有するポータブルコンピユータ
US5790776A (en) * 1992-12-17 1998-08-04 Tandem Computers Incorporated Apparatus for detecting divergence between a pair of duplexed, synchronized processor elements
JPH0916426A (ja) 1995-06-30 1997-01-17 Hitachi Ltd 2ポートコンソールを持つフォールトトレラントコンピュータ
US6141769A (en) * 1996-05-16 2000-10-31 Resilience Corporation Triple modular redundant computer system and associated method
CA2309926A1 (en) * 1997-11-14 1999-05-27 Erik Muench Method for maintaining the synchronized execution in fault resilient/fault tolerant computer systems
JP3365282B2 (ja) 1997-11-14 2003-01-08 日本電気株式会社 クラスタ接続マルチcpuシステムのcpuデグレード方式
US6948092B2 (en) * 1998-12-10 2005-09-20 Hewlett-Packard Development Company, L.P. System recovery from errors for processor and associated components
US6633996B1 (en) * 2000-04-13 2003-10-14 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus architecture
JP2002077186A (ja) 2000-08-30 2002-03-15 Hitachi Ltd 装置間接続方法及び多重化装置、並びに多重化装置の切替装置
GB2369692B (en) * 2000-11-29 2002-10-16 Sun Microsystems Inc Processor state reintegration
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
US6971043B2 (en) * 2001-04-11 2005-11-29 Stratus Technologies Bermuda Ltd Apparatus and method for accessing a mass storage device in a fault-tolerant server
JP4048988B2 (ja) 2003-03-19 2008-02-20 日本電気株式会社 フォルトトレラントシステム及びそれに用いる同期化方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010103562A1 (ja) 2009-03-09 2010-09-16 富士通株式会社 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム
JP5278530B2 (ja) * 2009-03-09 2013-09-04 富士通株式会社 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム
US8677179B2 (en) 2009-03-09 2014-03-18 Fujitsu Limited Information processing apparatus for performing error process when controllers in synchronization operation detect error simultaneously
JP2010218370A (ja) * 2009-03-18 2010-09-30 Nec Corp フォールトトレラントシステム
US8924772B2 (en) 2010-09-14 2014-12-30 Nec Corporation Fault-tolerant system and fault-tolerant control method
JP2012128697A (ja) * 2010-12-16 2012-07-05 Hitachi Ltd 情報処理装置
JP2015179386A (ja) * 2014-03-19 2015-10-08 三菱電機インフォメーションネットワーク株式会社 フォールトトレラントサーバ装置及び通信制御装置の切替プログラム
KR101688385B1 (ko) * 2015-10-30 2016-12-21 (주)테크코리아 유해환경물질 원격 이중화 감시 시스템 및 이의 운용방법

Also Published As

Publication number Publication date
AU2005244592A1 (en) 2006-07-06
US20060150003A1 (en) 2006-07-06
JP4411602B2 (ja) 2010-02-10
CN1790284A (zh) 2006-06-21
CA2530330A1 (en) 2006-06-16
US7610509B2 (en) 2009-10-27
EP1672507A2 (en) 2006-06-21

Similar Documents

Publication Publication Date Title
JP4411602B2 (ja) フォールトトレラント・コンピュータシステム
US9760455B2 (en) PCIe network system with fail-over capability and operation method thereof
US8346997B2 (en) Use of peripheral component interconnect input/output virtualization devices to create redundant configurations
US8677180B2 (en) Switch failover control in a multiprocessor computer system
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
US8074105B2 (en) High data availability SAS-based RAID system
US6112311A (en) Bridge failover system
JP5585332B2 (ja) 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法
US8074009B2 (en) Sharing of host bus adapter context
US7568054B2 (en) Duplicate synchronization system and method of operating duplicate synchronization system
JP2008112399A (ja) ストレージ仮想化スイッチおよびコンピュータシステム
JP4182948B2 (ja) フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法
US20080240134A1 (en) Multi-node, peripheral component switch for a computer system
US6832270B2 (en) Virtualization of computer system interconnects
EP1890439B1 (en) Data processing management apparatus, mode management apparatus and mode management method
US7865766B2 (en) Providing increased availability of I/O drawers during concurrent I/O hub repair
JP2011107858A (ja) 通信インタフェースの種類が異なる複数の入出力装置に複数の計算機が通信可能に接続される計算機システム
JP2001007893A (ja) 情報処理システム及びそれに用いる障害処理方式
JP4165499B2 (ja) コンピュータシステム及びそれを用いたフォールトトレラントシステム並びにその動作制御方法
JP4802843B2 (ja) 論理ボリュームの重複割当防止装置、重複割当防止方法、および重複割当防止プログラム
JP4146412B2 (ja) クラスタシステム及び同システムに適用される共有ストレージ装置の排他制御方法
JP2024060523A (ja) ストレージシステム
JP2006178614A (ja) フォルトトレラント・コンピュータとそのバス選択制御方法
JP2005085170A (ja) クラスタシステム及び多数決制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090413

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091023

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091105

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131127

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees