JP4984077B2 - 動的切り替え装置、動的切り替え方法、及び動的切り替えプログラム - Google Patents

動的切り替え装置、動的切り替え方法、及び動的切り替えプログラム Download PDF

Info

Publication number
JP4984077B2
JP4984077B2 JP2008035240A JP2008035240A JP4984077B2 JP 4984077 B2 JP4984077 B2 JP 4984077B2 JP 2008035240 A JP2008035240 A JP 2008035240A JP 2008035240 A JP2008035240 A JP 2008035240A JP 4984077 B2 JP4984077 B2 JP 4984077B2
Authority
JP
Japan
Prior art keywords
bit
transaction
routing
valid
dynamic switching
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
JP2008035240A
Other languages
English (en)
Other versions
JP2009193469A (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 JP2008035240A priority Critical patent/JP4984077B2/ja
Publication of JP2009193469A publication Critical patent/JP2009193469A/ja
Application granted granted Critical
Publication of JP4984077B2 publication Critical patent/JP4984077B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Description

本発明は、動的切り替え装置に関し、特に二重化されたI/Oデバイスの動的切り替え装置に関する。
PCIデバイスに代表される入出力(I/O:Input/Output)コントローラデバイス(以下、I/Oデバイス)を二重化し、システムの耐故障性を向上させるにあたり、通常のフォルトトレラント(FT:Fault Tolerant)コンピュータ等では、二重化されたI/Oデバイスへのアクセスをソフトウェアのデバイスドライバ層で吸収し、上位層のオペレーティングシステム(OS:Operating System)やアプリケーションからは単一のI/Oデバイスとして見えるようにする手法が採用されている。この手法の問題点は、二重化を実現するための複雑なデバイスドライバが必要となることである。
この問題点を解決するために、I/Oデバイスの二重化をハードウェア層で実現する方法がある。この方法では、プロセッサからI/Oデバイスへのトランザクション(Transaction)を複製してマスターデバイスとスレーブデバイスの双方へルーティング(routing)し、I/Oデバイスからプロセッサへのトランザクションは、マスターデバイス若しくはスレーブデバイスのいずれか一方のデバイスからのみルーティングする機構をチップセットに実装する。この方法により、I/OデバイスをミラーリングしてチップセットからI/Oデバイスまでの経路で障害が発生した場合に、システムの運用を継続したまま動的にその経路を縮退させる事が可能である。
しかしながら、この方法には、適用可能なI/Oデバイスの種類が、不揮発性メモリ(NvRAM:Non−Volatile Random Access Memory)のような静的なデバイスに限られるという制約があった。その理由は、例えば、リアルタイムクロック(RTC:Real Time Clock)やタイマー等の内部ステートを持つデバイスは、二重化した双方に同じようにトランザクションを送出しても双方のデバイスを内部ステートまで完全に同期して動作させる事が困難だからである。ネットワークカード(NIC:Network Interface Card)のような外部とのインターフェース(I/F:interface)も、コールドスタンバイによる冗長構成を採用するほうが一般的である。
関連する技術として、特開平07−123109号公報(特許文献1)にルーティング制御方式が開示されている。
この関連技術では、ルーティングテーブルを参照して、現用系にかかる情報及び予備系にかかる情報のルーティングを管理する。
また、特開平10−207815号公報(特許文献2)に動的切替装置が開示されている。
この関連技術では、動的切替装置は、チャネル装置及び入出力装置の数に対応した所定数のポートを有し、通常のデータ転送に伴なう経路切り替え時に所定数のポート毎に経路を切り替えてデータを送出した相手先情報を記憶する相手先記憶手段と、チャネル装置及び入出力装置の間を接続しているインターフェースの障害を検出した場合に相手先記憶手段により記憶されている相手先情報に基づいて該当する相手先に対して障害通知情報を送出する障害通知手段とを備えている。
また、特表2005−516478号公報(特許文献3)にフォールト・トレラント・ルーチング・データベースを提供するシステムが開示されている。
この関連技術では、当該システムは、ネットワーク環境内でルーティング・テーブル更新情報を交換するルータを含む。また、当該システムは、プライマリ・プロセスは遠隔プロセスとの通信に関与し、この通信にはデータ内容及び通信状態の転送が含まれる。また、当該システムは、プライマリ・プロセスはデータ内容及び通信状態をデータ格納装置に格納する。プライマリ・プロセスが故障した場合、遠隔プロセスとの通信は、データ格納装置からデータ内容及び通信状態を取り出すことによりプライマリ・プロセスをミラーリングする、バックアップ・プロセスに移される。これより、バックアップ・プロセスは、データ格納装置から取り出された通信状態を用いて、遠隔プロセスとの通信を続行する。
特開平07−123109号公報 特開平10−207815号公報 特表2005−516478号公報
本発明の目的は、二重化されたI/Oデバイスのマスターデバイスとスレーブデバイスをシステム運用中にマスターデバイスのみ有効、スレーブデバイスのみ有効、両デバイスをミラーリングした状態のいずれにも切り替える事ができる動的切り替え装置、動的切り替え方法、及び動的切り替えプログラムを提供することである。
本発明では、メモリコントローラに実装するルーティングテーブルに、I/Oデバイスを二重化する際にマスターデバイスへのトランザクションをトランザクションルーティングコントローラにてそのまま当該マスターデバイスへ送出させる指示情報と、当該トランザクションを複製してスレーブデバイスへ送出させる指示情報を併せ持つ。この二つの指示情報の組み合わせにより、マスターデバイスに宛てたトランザクションを、マスターデバイスのみに送出・スレーブデバイスのみに送出・マスターデバイスとスレーブデバイス双方に送出といういずれの動作も実現することが可能である。また、サービスプロセッサ(SP:Service Processor)21の制御によりメモリコントローラ中のI/OインターフェースからI/Oデバイスへのトランザクションを一時的に抑止し、先行する仕掛かり中のトランザクションが流れ終わるのを待ち合わせてからルーティングテーブル中のルーティング情報を更新し、I/Oインターフェースの動作を再開することで、二重化されたI/Oデバイスの動作モードの切替を実現する。
本発明の動的切り替え装置は、I/Oデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及びI/Oデバイスへのルーティング経路情報を格納したルーティングテーブルと、トランザクションを受け取り、ルーティングテーブルを参照し、有効ビットが偽である場合、トランザクションの送出を抑止し、有効ビットが真である場合、ルーティング経路情報に従い、I/Oデバイスに対してトランザクションを送出し、I/Oデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するトランザクションルーティングコントローラとを具備する。
本発明の動的切り替え方法は、トランザクションを受け取ると、I/Oデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及びI/Oデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、有効ビットが偽である場合、トランザクションの送出を抑止するステップと、有効ビットが真である場合、ルーティング経路情報に従い、I/Oデバイスに対してトランザクションを送出するステップと、I/Oデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するステップとを含む。
本発明の動的切り替えプログラムは、トランザクションを受け取ると、I/Oデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及びI/Oデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、有効ビットが偽である場合、トランザクションの送出を抑止するステップと、有効ビットが真である場合、ルーティング経路情報に従い、I/Oデバイスに対してトランザクションを送出するステップと、I/Oデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するステップとをコンピュータに実行させるためのプログラムである。
I/Oデバイスのミラーリングやコールドスタンバイを任意に実現できる。また、I/Oデバイスの縮退若しくは切替を動的に行う事ができる。
以下に、本発明の第1実施形態について添付図面を参照して説明する。
図1を参照すると、本発明の動的切り替え装置の一例であるコンピュータシステムは、プロセッサ(CPU:Central Processing Unit)11と、プロセッサ(CPU)12と、フロントサイドバス(FSB:Front Side Bus)13と、メモリコントローラ(MEMCTL:Memory Controller)14と、メモリ(MEM:Memory)15と、I/Oコントローラ(IOCTL:Input/Output Controller)16と、I/Oコントローラ(IOCTL)17を備える。
図1において、プロセッサ(CPU)11及びプロセッサ(CPU)12は、同一のフロントサイドバス(FSB)13に接続され、対称型マルチプロセッサ(SMP:Symmetric Multiple Processor)構成を形成している。また、フロントサイドバス(FSB)13には、メモリコントローラ(MEMCTL)14が接続されている。ここでは、メモリコントローラ(MEMCTL)14は、CPU、メモリ、I/Oデバイス間のトランザクションのルーティングを司る。
更に、メモリコントローラ(MEMCTL)14には、メモリ(MEM)15、I/Oコントローラ(IOCTL)16及びI/Oコントローラ(IOCTL)17が接続されている。I/Oコントローラ(IOCTL)16及びI/Oコントローラ(IOCTL)17は、メモリコントローラ(MEMCTL)14からのトランザクションと反対側のPCIバス(PCI−Bus)18若しくはPCIバス(PCI−Bus)19を接続するバスブリッジである。PCIバス(PCI−Bus)18には、I/Oデバイス(Master Device)30が接続されている。PCIバス(PCI−Bus)19には、I/Oデバイス(Slave Device)40が接続されている。
本実施形態において、I/Oデバイス(Master Device)30は、不揮発性メモリ(NvRAM)やリアルタイムクロック(RTC)外部I/Oインターフェース等を搭載したマルチファンクションI/Oデバイスを想定しており、図1では、それぞれファンクション(Function)31〜33と表記している。I/Oデバイス(Slave Device)40も、I/Oデバイス(Master Device)30と同等の構成のI/Oデバイスである。
また、本実施形態のコンピュータシステムには、システムの運用制御を司るサービスプロセッサ(SP:Service Processor)21が搭載されており、メモリコントローラ(MEMCTL)14を始めシステム内の各要素に対する初期化、モード設定、リセット等の制御を行う事ができる。なお、図1には、本実施形態の説明に直接関係しない通信経路は図示していない。但し、実際には、直接関係しない通信経路が存在する場合もある。
本実施形態において、コンピュータシステムに接続されるプロセッサ、メモリの数は本発明の要件に直接関与するものではなく、任意の構成において本発明は実施可能であることは明らかである。また、同様に、I/Oコントローラの数、I/Oコントローラに接続されるPCIバスの数も、本発明に関与するものではない。また、PCIバスの代わりにPCI−XバスやPCI Expressバスの他、任意のI/Oバスを用いることも可能である。更に、I/Oデバイスの機能・構成も、本実施形態の機能・構成に限定するものではない。
次に、図2を参照して、メモリコントローラ(MEMCTL)14の論理ブロック図を示す。
メモリコントローラ(MEMCTL)14は、FSBインターフェース(FBS I/F)141と、ルーティングテーブル(Routing Table)142と、トランザクションルーティングコントローラ(Txn Routing CTL)143と、メモリインターフェース(MEM I/F)144と、I/Oインターフェース(I/O I/F)145と、I/Oインターフェース(I/O I/F)146と、SPインターフェース(SP I/F)147を備える。
図2において、メモリコントローラ(MEMCTL)14とコンピュータシステム内の各要素との接続インターフェースは、それぞれFSBインターフェース(FBS I/F)141、メモリインターフェース(MEM I/F)144、I/Oインターフェース(I/O I/F)145及びI/Oインターフェース(I/O I/F)146として図示されている。
なお、FSBインターフェース(FBS I/F)141は、フロントサイドバス(FSB)13との接続インターフェースである。メモリインターフェース(MEM I/F)144は、メモリ(MEM)15との接続インターフェースである。I/Oインターフェース(I/O I/F)145は、I/Oコントローラ(IOCTL)16との接続インターフェースである。I/Oインターフェース(I/O I/F)146は、I/Oコントローラ(IOCTL)17との接続インターフェースである。
また、SPインターフェース(SP I/F)147として示したブロックは、CPU上で動作するソフトウェアとSP間の通信経路を提供するインターフェースブロックである。ここでは、SPインターフェース(SP I/F)147は、プロセッサ(CPU)11及びプロセッサ(CPU)12上で動作するソフトウェアとサービスプロセッサ(SP)21間の通信経路を提供する。
トランザクションルーティングコントローラ(Txn Routing CTL)143は、各インターフェースブロックを結ぶ位置に存在し、各インターフェースブロックから入力したメモリリード(メモリ読み出し)・リプライ(応答)・メモリライト(メモリ書き込み)・割り込み等の各種トランザクションをルーティングし、適切なインターフェースブロックへ出力する。これらの各種トランザクションに含まれる情報の例として、メモリアクセスのターゲットアドレス、リプライデータ、リプライや割り込みのソースデバイスID、ターゲットデバイスID等が考えられる。また、トランザクションルーティングコントローラ(Txn Routing CTL)143は、ルーティング経路を決定するためにルーティングテーブル(Routing Table)142を参照する。
続いて、図3を参照して、ルーティングテーブル(Routing Table)142に格納されるルーティング情報の形式について説明する。
ルーティングテーブル(Routing Table)142は、図示したような一連の情報を含むレコードを複数有するテーブルであり、I/Oデバイスの個々のファンクション(Function)毎に1つのレコードを登録する。本実施形態のコンピュータシステムは、メモリ(MEM)15の他、I/Oデバイス上のレジスタやメモリデバイスを物理記憶空間上にメモリマップドI/O(MMIO:Memory Mapped I/O)としてマッピングする構成を採用しているため、テーブルの1レコードに格納される情報は、これら物理記憶空間上にマッピングされたいずれかのデバイスへのルーティング経路情報である。
ルーティングテーブル(Routing Table)142の1レコードにおける個々のフィールドを見ると、ルーティングテーブル(Routing Table)142のレコードは、Vmビット(Vm)51と、マスターデバイスID(Master DID)52と、Vsビット(Vs)53と、スレーブデバイスID(Slave DID)54と、アドレスオフセット(Addr. Offset)55と、アドレス範囲(Addr. Range)56を含む。
Vmビット(Vm)51は、二重化されたマスターI/Oデバイスへのルーティングが有効である事を示す有効ビットを示す。マスターデバイスID(Master DID)52は、物理記憶空間上にマッピングされた当該マスターI/Oデバイスへのルーティング経路情報を示す。Vsビット(Vs)53は、スレーブI/Oデバイスへのルーティングが有効であることを示す有効ビットを示す。スレーブデバイスID(Slave DID)54は、物理記憶空間上にマッピングされた当該スレーブI/Oデバイスへのルーティング経路情報を示す。アドレスオフセット(Addr. Offset)55は、当該I/Oデバイスの各ファンクション(Function)をI/Oデバイス毎に連続したメモリ領域にマッピングする際のそのメモリ領域全体の先頭アドレスから個々のファンクション(Function)の領域へのオフセットとして用いられる。アドレス範囲(Addr. Range)56は、個々のファンクション(Function)の領域のサイズを示す。
次に、図2のメモリコントローラ(MEMCTL)14の動作を説明する。
まず、始めに、システム立ち上げ時の初期設定方法について説明する。
本実施形態のシステム構成として図1に設定した構成において、I/Oデバイス(Master Device)30を二重化されたI/Oデバイスのマスターデバイスとして動作させ、I/Oデバイス(Slave Device)40をスレーブデバイスとして動作させるための設定が必要である。この設定は、システムの立ち上げ時に、サービスプロセッサ(SP)21からルーティングテーブル(Routing Table)142に対し、図4に記載したような情報を設定する事により実現される。
図4の表は、ルーティングテーブル(Routing Table)142の表の形式(データフォーマット)の一例である。
図4の表における設定内容を詳細に説明すると、I/Oデバイス(Master Device)30に対する設定項目について、図4の表の上方に3レコード分の定義がされている。本実施形態では、I/Oデバイス(Master Device)30は、3種のファンクション(Function)を搭載したマルチファンクションI/Oカードであり、個々のファンクション(Function)に対応するMMIO空間のアドレスを1レコードずつ定義する。ここでは、個々のファンクション(Function)名をそれぞれa、b、cと記載している。
なお、本実施形態では、図1に示すように、I/Oデバイス(Master Device)30は、ファンクション(Function)a:31と、ファンクション(Function)b:32と、ファンクション(Function)c:33を含む。また、I/Oデバイス(Slave Device)40は、ファンクション(Function)a’:41と、ファンクション(Function)b’:42と、ファンクション(Function)c’:43を含む。
本実施形態では、これら3種のファンクション(Function)a、b、cのうち、ファンクション(Function)aに対してミラーリングの設定がされているとすると、I/Oデバイス(Master Device)30のファンクション(Function)a:31に対するVmビット(Vm)51及びVsビット(Vs)53が、いずれも真(T:True)に設定されることになる。このとき、I/Oデバイス(Slave Device)40に対応するレコードは、Vmビット(Vm)51及びVsビット(Vs)53が、いずれも偽(F:False)に設定されている。これにより、CPUから直接I/Oデバイス(Slave Device)40へのアクセスができないようになっている。
ファンクション(Function)b:32は、コールドスタンバイを設定する例である。ここでは、I/Oデバイス(Master Device)30のVmビット(Vm)51が真(T)で、Vsビット(Vs)53が偽(F)として表現される。I/Oデバイス(Slave Device)40に対応するレコードのVmビット(Vm)51及びVsビット(Vs)53は、上記ファンクション(Function)a:31と同じく、いずれも偽(F)に設定されている。
更に、ファンクション(Function)c:33は、I/Oデバイス(Master Device)30及びI/Oデバイス(Slave Device)40のファンクション(Function)をそれぞれ別個に動作させるため、双方のレコードにおいてVmビット(Vm)51が真(T)、Vsビット(Vs)53が偽(F)に設定されている。
このような設定の結果、物理記憶空間上にマッピングされた各デバイス、ファンクション(Function)のMMIO空間は、図5に示すようなレイアウトになる。I/Oデバイス(Master Device)30のファンクション(Function)a、b、cが個々に物理記憶空間上にマッピングされている事に加え、I/Oデバイス(Slave Device)40のファンクション(Function)a’、b’がI/Oデバイス(Master Device)30のファンクション(Function)a、bと同じアドレスにマッピングされており、ソフトウェアからは、単一のデバイスとして見えることがわかる。
次に、システム運用中のメモリコントローラ(MEMCTL)14の動作について説明する。
図6を参照して、プロセッサからのメモリアクセスのトランザクションに対する動作について説明する。
(1)ステップS101
トランザクションルーティングコントローラ(Txn Routing CTL)143は、プロセッサ(CPU)11及びプロセッサ(CPU)12からのメモリリードやメモリライト等のメモリアクセスのトランザクションを、FSBインターフェース(FBS I/F)141を経由して受け取る。
(2)ステップS102
トランザクションルーティングコントローラ(Txn Routing CTL)143は、ルーティングテーブル(Routing Table)142を参照して、当該トランザクションで指定されるアドレス範囲に該当するルーティング情報を検索する。
(3)ステップS103
トランザクションルーティングコントローラ(Txn Routing CTL)143は、該当するルーティング情報のレコードが見つかると、Vmビット(Vm)51を参照し、Vmビット(Vm)51が真(T)である場合には、そのレコードからマスターデバイスID(Master DID)52を取り出して、トランザクションのターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース(MEM I/F)144、I/Oインターフェース(I/O I/F)145、I/Oインターフェース(I/O I/F)146のいずれかへトランザクションを送出する。
(4)ステップS104
更に、トランザクションルーティングコントローラ(Txn Routing CTL)143は、Vsビット(Vs)53を参照し、Vsビット(Vs)53が真(T)である場合には、スレーブデバイスID(Slave DID)54を取り出して、ターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース(MEM I/F)144、I/Oインターフェース(I/O I/F)145、I/Oインターフェース(I/O I/F)146のいずれかへトランザクションを送出する。
図7を参照して、I/Oコントローラからのメモリアクセスのトランザクションに対する動作について説明する。
(1)ステップS201
トランザクションルーティングコントローラ(Txn Routing CTL)143は、I/Oコントローラ(IOCTL)16若しくはI/Oコントローラ(IOCTL)17から、I/Oインターフェース(I/O I/F)145若しくはI/Oインターフェース(I/O I/F)146を経由して、メモリリードやメモリライト等のメモリアクセスのトランザクションを受け取る。
(2)ステップS202
トランザクションルーティングコントローラ(Txn Routing CTL)143は、先の場合(図6)と同様に、ルーティングテーブル(Routing Table)142を参照して、当該トランザクションで指定されるアドレス範囲に該当するルーティング情報を検索する。
(3)ステップS203
トランザクションルーティングコントローラ(Txn Routing CTL)143は、該当するルーティング情報のレコードが見つかると、まず、Vmビット(Vm)51を参照し、Vmビット(Vm)51が真(T)である場合には、そこからマスターデバイスID(Master DID)52を取り出して、トランザクションのターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース(MEM I/F)144、I/Oインターフェース(I/O I/F)145、I/Oインターフェース(I/O I/F)146のいずれかへトランザクションを送出する。
(4)ステップS204
更に、トランザクションルーティングコントローラ(Txn Routing CTL)143は、Vsビット(Vs)53を検索し、Vsビット(Vs)53が真(T)である場合には、スレーブデバイスID(Slave DID)54を取り出して、ターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース(MEM I/F)144、I/Oインターフェース(I/O I/F)145、I/Oインターフェース(I/O I/F)146のいずれかへトランザクションを送出する。
図8を参照して、トランザクションに対するリプライや割り込みに対する動作について説明する。
(1)ステップS301
トランザクションルーティングコントローラ(Txn Routing CTL)143は、メモリリード等のトランザクションに対するリプライや、割り込みをいずれかのインターフェースブロックから受信する。すなわち、トランザクションルーティングコントローラ(Txn Routing CTL)143は、FSBインターフェース(FBS I/F)141、メモリインターフェース(MEM I/F)144、I/Oインターフェース(I/O I/F)145及びI/Oインターフェース(I/O I/F)146のいずれかのインターフェースブロックから、メモリリード等のトランザクションに対するリプライや、割り込みを受信する。
(2)ステップS302
トランザクションルーティングコントローラ(Txn Routing CTL)143は、ルーティングテーブル(Routing Table)142を参照し、トランザクション送出元を特定するための条件に一致するレコードを検索する。ここでは、トランザクションルーティングコントローラ(Txn Routing CTL)143は、ルーティングテーブル(Routing Table)142を参照し、Vmが真(T)且つマスターデバイスID(Master DID)52がトランザクション送出元のデバイスIDと一致する、若しくは、Vmが偽(F)且つVsが真(T)且つスレーブデバイスID(Slave DID)54がトランザクション送出元のデバイスIDと一致するレコードを検索する。
(3)ステップS303
トランザクションルーティングコントローラ(Txn Routing CTL)143は、トランザクション送出元を特定するための条件に一致するレコードが存在する場合、トランザクション送出元のデバイスが二重化されたI/Oデバイスのうちのマスターデバイスであるか、コールドスタンバイ状態の運用系のスレーブデバイスであると判定する。
(4)ステップS304
トランザクションルーティングコントローラ(Txn Routing CTL)143は、当該トランザクションのターゲットデバイスIDに従い、ルーティング経路を決定し、適切なインターフェースブロックへトランザクションを送出する。すなわち、トランザクションルーティングコントローラ(Txn Routing CTL)143は、FSBインターフェース(FBS I/F)141、メモリインターフェース(MEM I/F)144、I/Oインターフェース(I/O I/F)145及びI/Oインターフェース(I/O I/F)146のいずれかへトランザクションを送出する。
(5)ステップS305
トランザクションルーティングコントローラ(Txn Routing CTL)143は、トランザクション送出元を特定するための条件に一致するレコードが見つからなかった場合、例えば、ミラーリングのスレーブデバイスからのトランザクションを受信したような場合、ルーティングは行わず当該トランザクションを破棄する。
次に、図9を参照して、システム立ち上げ時に二重化されたI/Oデバイスを初期化し、コールドスタンバイ状態に設定する手順を説明する。
(1)ステップS401
まず、システムの起動開始時に、初期設定として、サービスプロセッサ(SP)21は、ルーティングテーブル(Routing Table)142にI/Oデバイスのルーティング情報を登録する際、対象のI/Oデバイスのファンクション(Function)のレコードに対し、前述したミラーリングの設定を行う。オペレーティングシステムが起動する一連のシーケンスの中で、オペレーティングシステムのデバイスドライバ(図示せず)により、当該I/Oデバイスの初期設定が行われる。この時点では、二重化されたI/Oデバイスはミラーリングされているので、マスター・スレーブ双方に対して同じ初期設定が行われる。ここでは、サービスプロセッサ(SP)21は、I/Oデバイス(Master Device)30及びI/Oデバイス(Slave Device)40の双方に対して同じ初期設定を行う。
(2)ステップS402
初期設定が完了した時点で、デバイスドライバは、スレーブ側のI/Oデバイスを切り離してコールドスタンバイ状態で並行して運用する旨の指示を、サービスプロセッサ(SP)21に対して通知する。この通知は、より具体的な例として、I/Oデバイスと同じくサービスプロセッサ(SP)21の通信用レジスタをMMIOにマッピングし、図2のトランザクションルーティングコントローラ(Txn Routing CTL)143からSPインターフェース(SP I/F)147を経由してサービスプロセッサ(SP)21へ通知する実装が考えられる。
(3)ステップS403
サービスプロセッサ(SP)21は、通知を受け取ると、I/Oデバイスのスレーブデバイスを動的に切り離し、コールドスタンバイへ移行する。ここでは、サービスプロセッサ(SP)21は、I/Oデバイス(Slave Device)40を動的に切り離し、コールドスタンバイへ移行する。
図10を参照して、コールドスタンバイ状態にする操作手順を説明する。
以下の手順は、サービスプロセッサ(SP)21からトランザクションルーティングコントローラ(Txn Routing CTL)143を始めシステム内の各要素の動作を制御する事で実現するもので、制御の手順はサービスプロセッサ(SP)21内のプログラムとして実装されるものである。
(1)ステップS501
まず、最初に、サービスプロセッサ(SP)21は、メモリコントローラ(MEMCTL)14内の各I/OインターフェースからI/Oコントローラへのトランザクション送出を抑止する。その結果、抑止されたトランザクションは、トランザクションルーティングコントローラ(Txn Routing CTL)143中に存在するバッファ等(図示せず)に一時的に滞留する。実装方法に依存して、I/Oインターフェースから送出を抑止するトランザクションは、二重化されたI/Oデバイスに向けたもののみに限定しても良い。この場合、サービスプロセッサ(SP)21は、トランザクションのターゲットデバイスIDを参照して、トランザクションの送出・抑止を決定する事になる。また、このとき、サービスプロセッサ(SP)21は、I/OコントローラからI/Oインターフェースへのトランザクション送出を抑止せず、I/Oデバイスからのトランザクション送出に対しては動作を継続する。
(2)ステップS502
サービスプロセッサ(SP)21は、この状態で一定時間待ち合わせを行う。これにより、各プロセッサ、メモリ、他のI/OデバイスからI/Oインターフェースを経由して送出済みの仕掛かり中トランザクションに対するリプライ処理が完了する。待ち合わせの時間は、コンピュータシステムの実装に依存して適切な値を定義する必要がある。すなわち、サービスプロセッサ(SP)21は、現在のトランザクションに対するリプライ処理が全て完了するまで待機する。
(3)ステップS503
I/Oデバイスに対する先行するトランザクションが完了した後に、サービスプロセッサ(SP)21は、ルーティングテーブル(Routing Table)142中のレコードの更新を行う。具体的には、対象のミラーリングされたデバイスが定義されているレコードに記載されているVsビット(Vs)53を偽(F)に書き換える。
(4)ステップS504
続いて、サービスプロセッサ(SP)21は、I/OインターフェースからI/Oコントローラへのトランザクション送出を再開する。これによりトランザクションルーティングコントローラ(Txn Routing CTL)143内に滞留していたトランザクションは、更新されたルーティング情報に従い、マスターデバイスのみへルーティングされてI/Oインターフェースから送出される事になる。
以上で、I/Oデバイスをコールドスタンバイ状態にする操作は完了するが、この時のスレーブデバイスの状態は、オペレーティングシステム起動時のデバイスドライバによる初期設定が完了した状態のまま保持されていることがわかる。
続いて、図11を参照して、コールドスタンバイ状態にあるスレーブデバイスを切り替えて新しいマスターデバイスとして運用する手順を説明する。
(1)ステップS601
障害の発生等、何らかの理由によりマスターデバイスとスレーブデバイスの切り替えを行う必要が生じたとき、サービスプロセッサ(SP)21は、先に示したミラーリングからコールドスタンバイへの移行時と同様に、各I/OインターフェースからI/Oコントローラへのトランザクション送出を一時的に抑止する。
(2)ステップS602
サービスプロセッサ(SP)21は、一定時間の待ち合わせを行う。
(3)ステップS603
サービスプロセッサ(SP)21は、ルーティングテーブル(Routing Table)142中の当該デバイスに対応するレコードのVmビット(Vm)51を偽(F)に更新し、Vsビット(Vs)53を真(T)に更新する。すなわち、サービスプロセッサ(SP)21は、コールドスタンバイ状態にあるスレーブデバイスを切り替えて新しいマスターデバイスとする。
(4)ステップS604
サービスプロセッサ(SP)21は、I/Oインターフェースからのトランザクション送出を再開する。このとき、サービスプロセッサ(SP)21は、新しいマスターデバイスに対して、トランザクション送出を行う。
これによりトランザクションルーティングコントローラ(Txn Routing CTL)143内に滞留していたトランザクションは、更新されたルーティング情報に従い、新しいマスターデバイスへ送出される事になる。このとき、元のマスターデバイスと新しいマスターデバイス(元のスレーブデバイス)の状態は、一般に同一ではないため、切り替えの前後では、オペレーティングシステムやアプリケーションソフトウェアから見た動作の継続性は保証されないことに留意する必要がある。そのため、主にデバイスドライバやアプリケーションソフトウェアにて、I/Oデバイスへの入出力の再試行等の工夫が必要になると考えられる。
更に、サービスプロセッサ(SP)21がハードウェアの障害検出等を契機にI/Oデバイスの切り替えを開始する代わりに、I/Oデバイスの異常を検出したデバイスドライバがSPインターフェース(SP I/F)147を通じてサービスプロセッサ(SP)21に対してI/Oデバイスの切替を指示する方法も考えられる。この場合はデバイスドライバにてI/Oデバイスの切り替えタイミングを適切に選択する事ができるため、上記に説明した切り替え前後での動作の継続性の問題への対処もし易くなると考えられる。
最後に、ミラーリング状態にあるI/Oデバイスの一方を動的に縮退する手順について説明する。言うまでも無く、本発明の実施形態の構成によれば、二重化されたI/Oデバイスをオペレーティングシステム起動時のデバイスドライバによる初期設定後もミラーリングしたまま運用することも可能である。
上記の例と同じく、障害の発生等の理由によりミラーリングされたI/Oデバイスのいずれかを縮退する必要が生じたとき、サービスプロセッサ(SP)21は先に示したミラーリングからコールドスタンバイへの移行時と同様に、各I/OインターフェースからI/Oコントローラへのトランザクション送出を一時的に抑止し、一定時間の待ち合わせを行い、ルーティングテーブル(Routing Table)142中の当該デバイスに対応するレコードのVmビット若しくはVsビットのいずれか、縮退すべきデバイスに対応する方を偽(F)に更新する。
ここで、I/Oインターフェースからのトランザクション送出を再開する前に、サービスプロセッサ(SP)21は縮退したI/Oデバイスの動作を停止させる。I/Oデバイスの停止方法は本発明の範囲を超えるため、個々では詳細に説明しないが、PCIデバイスであればデバイスの機能に依存して当該デバイスのConfigurationレジスタを操作してデバイスの動作を止める方法や、デバイスが接続されるバスブリッジが存在すればバスブリッジを操作してPCIバスをリセットする方法、I/Oインターフェースの機能に依存して当該デバイスからのトランザクションを受け取らないようにマスクする方法等が考えられる。当該デバイスがメモリデバイスのような受動的なデバイスであれば、何もせずそのまま置いておく方法でも構わない。いずれにせよ、これらの操作によって縮退したI/Oデバイスは、その動作がシステムに影響を及ぼすことが無いよう、論理的に切り離されることになる。
ここまでの操作が完了したら、サービスプロセッサ(SP)21は、I/Oインターフェースからのトランザクション送出を再開し、トランザクションルーティングコントローラ(Txn Routing CTL)143内に滞留していたトランザクションは、更新されたルーティング情報に従い、残った一方のI/Oデバイスへ送出される事になる。
以上のように、本発明は、メモリコントローラ内に実装するルーティングテーブルに持たせたマスターデバイス及びスレーブデバイスへのトランザクションルーティング情報と、サービスプロセッサ内に実装する制御プログラム、及びCPU上で動作するデバイスドライバやBIOS(Basic Input/Output System)等のソフトウェアによって、コンピュータシステム内で二重化されたI/Oデバイス、特に一つのデバイスに複数の機能を備えたマルチファンクションPCIデバイスを二重化した構成において、システム運用中に動的にマスターデバイスからスレーブデバイスへの切替機能を実現したことを特徴としている。
図2において、ルーティングテーブル(Routing Table)142は、図3に示す形式の情報を格納する。ルーティングテーブル(Routing Table)142に格納される情報は、物理主記憶空間の各々の範囲に対するトランザクションのルーティング情報を格納した複数のレコードを有するテーブルであり、それぞれのレコードは、Vmビット(Vm)51と、マスターデバイスID(Master DID)52と、Vsビット(Vs)53と、スレーブデバイスID(Slave DID)54と、アドレスオフセット(Addr. Offset)55と、アドレス範囲(Addr. Range)56を含む。
Vmビット(Vm)51は、プロセッサ及びI/Oデバイスからのメモリアクセスに対し、二重化されたマスターデバイスへのルーティングが有効である事を示す有効ビットを示す。マスターデバイスID(Master DID)52は、物理記憶空間上の当該アドレスにマッピングされたマスターデバイスへのルーティング経路情報を示す。Vsビット(Vs)53は、スレーブデバイスへのルーティングが有効である事を示す有効ビットを示す。スレーブデバイスID(Slave DID)54は、物理記憶空間上の当該アドレスにマッピングされたスレーブデバイスへのルーティング経路情報を示す。アドレスオフセット(Addr. Offset)55は、当該トランザクションをルーティングすべきアドレスオフセットを示す。アドレス範囲(Addr. Range)56は、アドレスオフセットに対応するアドレス範囲を示す。
図2において、トランザクションルーティングコントローラ(Txn Routing CTL)143は、プロセッサ側のFSBインターフェース(FBS I/F)141及びI/Oデバイス側のI/Oインターフェース(I/O I/F)145、I/Oインターフェース(I/O I/F)146からのトランザクションを受け付け、当該トランザクションがメモリアクセスのトランザクションであればルーティングテーブル(Routing Table)142を参照して、当該トランザクションのターゲットデバイスを決定し、そのターゲットデバイスに向けたインターフェースへトランザクションを送出する。このとき、ルーティング情報を参照した結果で当該トランザクションの送出先デバイスが二重化されたI/Oデバイスである場合、当該デバイスの二重化の状態によりマスターデバイスとスレーブデバイスのいずれか一方若しくは両方に対してトランザクションの送出を行う。二重化の状態とは、「マスターデバイスのみが有効に機能している状態」、「スレーブデバイスのみが有効に機能している状態」、「両デバイスが有効に機能しておりミラーリングされた状態」のいずれかである。
更に、トランザクションルーティングコントローラ(Txn Routing CTL)143は、FSBインターフェース(FBS I/F)141、I/Oインターフェース(I/O I/F)145、I/Oインターフェース(I/O I/F)146、若しくはメモリインターフェース(MEM I/F)144からメモリアクセスに対するリプライトランザクションを受け付けた場合、ルーティング情報を参照する。トランザクションルーティングコントローラ(Txn Routing CTL)143は、ルーティング情報を参照して当該リプライトランザクションを送出したデバイスが二重化されたI/Oデバイスであり、当該デバイスの二重化の状態によりマスターデバイス若しくはスレーブデバイスのいずれか一方のみが有効に機能している場合、リプライトランザクションが指示するターゲットデバイスへルーティングを行う。このとき、トランザクションルーティングコントローラ(Txn Routing CTL)143は、ミラーリングされた状態であれば、マスターデバイスからのトランザクションのルーティングを行いスレーブデバイスからのトランザクションを破棄する。
このようにして、本発明では二重化されたI/Oデバイスに対するメモリアクセスをI/Oデバイスの二重化の状態に応じてトランザクションルーティングコントローラ(Txn Routing CTL)143にていずれか一方のI/Oデバイス若しくは双方のI/Oデバイスに向けて送出しているので、ソフトウェアのデバイスドライバからはマスターデバイスに対する単一のメモリアクセスでマスター・スレーブ両方のデバイスへのメモリアクセスを実現する事ができる。
次に、図2においてサービスプロセッサ(SP)21(図示せず;図1に記載)は、システム運用中にメモリコントローラ(MEMCTL)14中の各機能ブロックを制御し、I/Oインターフェースへのトランザクション送出を一時的に停止し、ルーティングテーブル中のルーティング情報を更新して二重化されたI/Oデバイスの二重化の状態を変更し、I/Oインターフェースの動作を再開する。
このようにして、本発明では二重化されたI/Oデバイスのマスターデバイスとスレーブデバイスをシステム運用中にマスターデバイスのみ有効、スレーブデバイスのみ有効、両デバイスをミラーリングした状態のいずれにも切り替える事ができる。
なお、本発明においては、以下に記載するような効果を奏する。
第1の効果は、ルーティングテーブルに格納されるルーティング情報にVmビット、マスターデバイスID、Vsビット、スレーブデバイスIDを付加しており、トランザクションルーティングコントローラが当該ルーティング情報を参照してトランザクション送出先のI/Oデバイスが二重化されている場合に二重化されたマスターデバイスとスレーブデバイスの双方又はいずれか一方にトランザクション送出できる仕組みを具備したことにより、I/Oデバイスのミラーリングやコールドスタンバイを任意に実現できる事である。
第2の効果は、ルーティングテーブルに格納されるルーティング情報で定義されるMMIO空間のマッピングが、I/Oデバイスのファンクション(Function)単位に定義できるため、二重化する対象のI/Oデバイスが複数の機能を持つマルチファンクションデバイスの場合に、ファンクション(Function)単位に適切な二重化方法を選択してミラーリング、コールドスタンバイのいずれかで動作させるか、個別のデバイスとして動作させるか決定できる事である。
第3の効果は、サービスプロセッサからメモリコントローラ内の各機能ブロックの動作を制御し、一時的なI/Oデバイスへのトランザクションを停止、I/Oデバイスの縮退若しくは切り替え、トランザクションのルーティング経路変更、トランザクションのルーティング再開とする事で、I/Oデバイスの縮退若しくは切替を動的に行う事ができる事である。
ここでは、二重化されたI/Oデバイスのマスターデバイスとスレーブデバイスを例に説明しているが、実際には、二重化されたI/Oデバイスに限定されない。例えば、スレーブデバイスが複数である事例も考えられる。すなわち、二重化に限らず、多重化されたI/Oデバイスに対しても、本発明を適用することが可能である。
図1は、本発明の動的切り替え装置の構成例を示すブロック図である。 図2は、メモリコントローラ(MEMCTL)の論理ブロック図である。 図3は、ルーティング情報の形式を示す図である。 図4は、ルーティングテーブル(Routing Table)の表の形式(データフォーマット)の一例を示す図である。 図5は、MMIO空間のレイアウトの例を示す図である。 図6は、プロセッサからのメモリアクセスのトランザクションに対する動作を示すフローチャートである。 図7は、I/Oコントローラからのメモリアクセスのトランザクションに対する動作を示すフローチャートである。 図8は、トランザクションに対するリプライや割り込みに対する動作を示すフローチャートである。 図9は、システム立ち上げ時に二重化されたI/Oデバイスを初期化し、コールドスタンバイ状態に設定する手順を示すフローチャートである。 図10は、コールドスタンバイ状態にする操作手順を示すフローチャートである。 図11は、コールドスタンバイ状態にあるスレーブデバイスを切り替えて新しいマスターデバイスとして運用する手順を示すフローチャートである。
符号の説明
11… プロセッサ(CPU:Central Processing Unit)
12… プロセッサ(CPU)
13… フロントサイドバス(FSB:Front Side Bus)
14… メモリコントローラ(MEMCTL:Memory Controller)
141… FSBインターフェース(FBS I/F)
142… ルーティングテーブル(Routing Table)
143… トランザクションルーティングコントローラ(Txn Routing CTL)
144… メモリインターフェース(MEM I/F)
145… I/Oインターフェース(I/O I/F)
146… I/Oインターフェース(I/O I/F)
147… SPインターフェース(SP I/F)
15… メモリ(MEM:Memory)
16… I/Oコントローラ(IOCTL:Input/Output Controller)
17… I/Oコントローラ(IOCTL)
18… PCIバス(PCI−Bus)
19… PCIバス(PCI−Bus)
21… サービスプロセッサ(SP:Service Processor)
30… I/Oデバイス(Master Device)
31… ファンクション(Function)a
32… ファンクション(Function)b
33… ファンクション(Function)c
40… I/Oデバイス(Slave Device)
41… ファンクション(Function)a’
42… ファンクション(Function)b’
43… ファンクション(Function)c’
51… Vmビット(Vm)
52… マスターデバイスID(Master DID)
53… Vsビット(Vs)
54… スレーブデバイスID(Slave DID)
55… アドレスオフセット(Addr. Offset)
56… アドレス範囲(Addr. Range)

Claims (18)

  1. I/Oデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及び前記I/Oデバイスへのルーティング経路情報を格納したルーティングテーブルと、
    トランザクションを受け取り、前記ルーティングテーブルを参照し、I/Oデバイスにアドレス空間が割り当てられているメモリマップドI/Oのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるI/Oデバイスを割り出し、前記有効ビットが偽である場合、前記トランザクションの送出を抑止するトランザクションルーティングコントローラと
    を具備し、
    前記トランザクションルーティングコントローラは、前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記I/Oデバイスに対して前記トランザクションを送出し、前記I/Oデバイスの切り替えが発生した場合、前記トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、前記有効ビットを更新し、前記トランザクションの送出を再開す
    的切り替え装置。
  2. 請求項1に記載の動的切り替え装置であって、
    前記ルーティングテーブルは、前記I/Oデバイスのファンクション(Function)単位で、前記有効ビット及び前記ルーティング経路情報を対応付けて格納し、
    前記トランザクションルーティングコントローラは、前記トランザクションを受け取り、前記ルーティングテーブルを参照し、前記メモリマップドI/Oのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるI/Oデバイスのファンクションを割り出し、前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記I/Oデバイスのファンクションに対して前記トランザクションを送出する
    動的切り替え装置。
  3. 請求項1又は2に記載の動的切り替え装置であって、
    前記トランザクションルーティングコントローラは、前記トランザクションに対するリプライ(応答)又は割り込みを受け取り、前記ルーティングテーブルを参照し、前記有効ビットが真であり、前記ルーティング経路情報において前記I/Oデバイスが前記トランザクションの送出元である場合、前記ルーティング経路情報に従い、適切な送出先に対して、前記トランザクションを送出する
    動的切り替え装置。
  4. 請求項1乃至3のいずれか一項に記載の動的切り替え装置であって、
    前記ルーティングテーブルは、
    前記I/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットであるVmビットと、
    前記I/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットであるVsビットと
    含み
    前記トランザクションルーティングコントローラは、前記Vmビット及び前記Vsビットが共に真である場合、前記マスターデバイス及び前記スレーブデバイスの双方に対して前記トランザクションを送出する
    動的切り替え装置。
  5. 請求項4に記載の動的切り替え装置であって、
    前記トランザクションルーティングコントローラは、前記Vmビットが偽であり、前記Vsビットが真である場合、前記スレーブデバイスに対して前記トランザクションを送出する
    動的切り替え装置。
  6. 請求項1乃至3のいずれか一項に記載の動的切り替え装置であって、
    前記ルーティングテーブルは、
    前記I/Oデバイスの一つである第1のI/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第1のVmビットと、
    前記第1のI/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第1のVsビットと
    前記I/Oデバイスの他の一つである第2のI/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第2のVmビットと、
    前記第2のI/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第2のVsビットと
    を含み、
    前記第1のI/Oデバイスをマスターデバイスとし、前記第2のI/Oデバイスをスレーブデバイスとして、
    ミラーリングの設定のとき、前記第1のVmビットと前記第1のVsビットとは真とされ、前記第2のVmビットと前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
    コールドスタンバイの設定のとき、前記第1のVmビットは真とされ、前記第1のVsビットと前記第2のVmビットと前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
    前記第1のI/Oデバイスと、前記第2のI/Oデバイスとを別個に動作させるとき、前記第1のVmビットは真、前記第1のVsビットとは偽とされ、前記第2のVmビットは真、前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに別々のアドレス領域が割り当てられる
    動的切り替え装置。
  7. トランザクションを受け取ると、I/Oデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及び前記I/Oデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、
    I/Oデバイスにアドレス空間が割り当てられているメモリマップドI/Oのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるI/Oデバイスを割り出すステップと、
    前記有効ビットが偽である場合、前記トランザクションの送出を抑止するステップと、
    前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記I/Oデバイスに対して前記トランザクションを送出するステップと、
    前記I/Oデバイスの切り替えが発生した場合、前記トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、前記有効ビットを更新し、前記トランザクションの送出を再開するステップと
    を含む
    動的切り替え方法。
  8. 請求項7に記載の動的切り替え方法であって、
    前記ルーティングテーブルにおいて、前記I/Oデバイスのファンクション(Function)単位で、前記有効ビット及び前記ルーティング経路情報を対応付けるステップと、
    前記トランザクションを受け取ると、前記ルーティングテーブルを参照し、前記メモリマップドI/Oのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるI/Oデバイスのファンクションを割り出すステップと、
    前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記I/Oデバイスのファンクションに対して前記トランザクションを送出するステップと
    を更に含む
    動的切り替え方法。
  9. 請求項7又は8に記載の動的切り替え方法であって、
    前記トランザクションに対するリプライ(応答)又は割り込みを受け取ると、前記ルーティングテーブルを参照するステップと、
    前記有効ビットが真であり、前記ルーティング経路情報において前記I/Oデバイスが前記トランザクションの送出元である場合、前記ルーティング経路情報に従い、適切な送出先に対して、前記トランザクションを送出するステップと
    を更に含む
    動的切り替え方法。
  10. 請求項7乃至9のいずれか一項に記載の動的切り替え方法であって、
    前記ルーティングテーブルは、
    前記I/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットであるVmビットと、
    前記I/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットであるVsビットと
    含み、
    前記Vmビット及び前記Vsビットが共に真である場合、前記マスターデバイス及び前記スレーブデバイスの双方に対して前記トランザクションを送出するステップ
    を更に含む
    動的切り替え方法。
  11. 請求項10に記載の動的切り替え方法であって、
    前記Vmビットが偽であり、前記Vsビットが真である場合、前記スレーブデバイスに対して前記トランザクションを送出するステップ
    を更に含む
    動的切り替え方法。
  12. 請求項7乃至9のいずれか一項に記載の動的切り替え方法であって、
    前記ルーティングテーブルは、
    前記I/Oデバイスの一つである第1のI/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第1のVmビットと、
    前記第1のI/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第1のVsビットと
    前記I/Oデバイスの他の一つである第2のI/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第2のVmビットと、
    前記第2のI/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第2のVsビットと
    を含み、
    前記第1のI/Oデバイスをマスターデバイスとし、前記第2のI/Oデバイスをスレーブデバイスとして、
    ミラーリングの設定のとき、前記第1のVmビットと前記第1のVsビットとは真とされ、前記第2のVmビットと前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
    コールドスタンバイの設定のとき、前記第1のVmビットは真とされ、前記第1のVsビットと前記第2のVmビットと前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
    前記第1のI/Oデバイスと、前記第2のI/Oデバイスとを別個に動作させるとき、前記第1のVmビットは真、前記第1のVsビットとは偽とされ、前記第2のVmビットは真、前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに別々のアドレス領域が割り当てられる
    動的切り替え方法。
  13. トランザクションを受け取ると、I/Oデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及び前記I/Oデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、
    I/Oデバイスにアドレス空間が割り当てられているメモリマップドI/Oのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるI/Oデバイスを割り出すステップと、
    前記有効ビットが偽である場合、前記トランザクションの送出を抑止するステップと、
    前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記I/Oデバイスに対して前記トランザクションを送出するステップと、
    前記I/Oデバイスの切り替えが発生した場合、前記トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、前記有効ビットを更新し、前記トランザクションの送出を再開するステップと
    をコンピュータに実行させるための
    動的切り替えプログラム。
  14. 請求項13に記載の動的切り替えプログラムであって、
    前記ルーティングテーブルにおいて、前記I/Oデバイスのファンクション(Function)単位で、前記有効ビット及び前記ルーティング経路情報を対応付けるステップと、
    前記トランザクションを受け取ると、前記ルーティングテーブルを参照し、前記メモリマップドI/Oのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるI/Oデバイスのファンクションを割り出すステップと、
    前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記I/Oデバイスのファンクションに対して前記トランザクションを送出するステップと
    を更にコンピュータに実行させるための
    動的切り替えプログラム。
  15. 請求項13又は14に記載の動的切り替えプログラムであって、
    前記トランザクションに対するリプライ(応答)又は割り込みを受け取ると、前記ルーティングテーブルを参照するステップと、
    前記有効ビットが真であり、前記ルーティング経路情報において前記I/Oデバイスが前記トランザクションの送出元である場合、前記ルーティング経路情報に従い、適切な送出先に対して、前記トランザクションを送出するステップと
    を更にコンピュータに実行させるための
    動的切り替えプログラム。
  16. 請求項13乃至15のいずれか一項に記載の動的切り替えプログラムであって、
    前記ルーティングテーブルは、
    前記I/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットであるVmビットと、
    前記I/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットであるVsビットと
    含み、
    前記Vmビット及び前記Vsビットが共に真である場合、前記マスターデバイス及び前記スレーブデバイスの双方に対して前記トランザクションを送出するステップ
    を更にコンピュータに実行させるための
    動的切り替えプログラム。
  17. 請求項16に記載の動的切り替えプログラムであって、
    前記Vmビットが偽であり、前記Vsビットが真である場合、前記スレーブデバイスに対して前記トランザクションを送出するステップ
    を更にコンピュータに実行させるための
    動的切り替えプログラム。
  18. 請求項13乃至15のいずれか一項に記載の動的切り替え方法であって、
    前記ルーティングテーブルは、
    前記I/Oデバイスの一つである第1のI/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第1のVmビットと、
    前記第1のI/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第1のVsビットと
    前記I/Oデバイスの他の一つである第2のI/Oデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第2のVmビットと、
    前記第2のI/Oデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第2のVsビットと
    を含み、
    前記第1のI/Oデバイスをマスターデバイスとし、前記第2のI/Oデバイスをスレーブデバイスとして、
    ミラーリングの設定のとき、前記第1のVmビットと前記第1のVsビットとは真とされ、前記第2のVmビットと前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
    コールドスタンバイの設定のとき、前記第1のVmビットは真とされ、前記第1のVsビットと前記第2のVmビットと前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
    前記第1のI/Oデバイスと、前記第2のI/Oデバイスとを別個に動作させるとき、前記第1のVmビットは真、前記第1のVsビットとは偽とされ、前記第2のVmビットは真、前記第2のVsビットとは偽とされ、前記メモリマップドI/Oのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに別々のアドレス領域が割り当てられる
    動的切り替えプログラム。
JP2008035240A 2008-02-15 2008-02-15 動的切り替え装置、動的切り替え方法、及び動的切り替えプログラム Expired - Fee Related JP4984077B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008035240A JP4984077B2 (ja) 2008-02-15 2008-02-15 動的切り替え装置、動的切り替え方法、及び動的切り替えプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008035240A JP4984077B2 (ja) 2008-02-15 2008-02-15 動的切り替え装置、動的切り替え方法、及び動的切り替えプログラム

Publications (2)

Publication Number Publication Date
JP2009193469A JP2009193469A (ja) 2009-08-27
JP4984077B2 true JP4984077B2 (ja) 2012-07-25

Family

ID=41075403

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008035240A Expired - Fee Related JP4984077B2 (ja) 2008-02-15 2008-02-15 動的切り替え装置、動的切り替え方法、及び動的切り替えプログラム

Country Status (1)

Country Link
JP (1) JP4984077B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4944220B2 (ja) * 2010-03-12 2012-05-30 株式会社バッファロー 記憶装置及びその制御プログラム
JP2012128697A (ja) * 2010-12-16 2012-07-05 Hitachi Ltd 情報処理装置
JP5240872B2 (ja) * 2011-02-10 2013-07-17 エヌイーシーコンピュータテクノ株式会社 情報処理装置及び情報処理装置の動作方法
JP5733384B2 (ja) * 2011-02-24 2015-06-10 富士通株式会社 情報処理装置
WO2017122298A1 (ja) 2016-01-13 2017-07-20 三菱電機株式会社 通信システム、通信機器および通信先の切換え方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04186422A (ja) * 1990-11-21 1992-07-03 Nec Corp 二重化ボリュームシステム
JP2806749B2 (ja) * 1993-08-04 1998-09-30 日本電気株式会社 ファイル装置二重化時のi/o負荷分散制御方式
JPH09305327A (ja) * 1996-05-20 1997-11-28 Pfu Ltd ディスク装置
JP2001344191A (ja) * 2000-06-02 2001-12-14 Nec Soft Ltd 二重化入出力制御方式および二重化入出力制御方法
JP3862011B2 (ja) * 2002-08-30 2006-12-27 日本電気株式会社 フォールトトレラントコンピュータ及びそのディスク管理機構及びディスク管理プログラム
JP4111793B2 (ja) * 2002-09-26 2008-07-02 富士通株式会社 中継システム
JP4617847B2 (ja) * 2004-11-04 2011-01-26 株式会社日立製作所 情報処理システム及びアクセス方法
JP4984051B2 (ja) * 2007-03-08 2012-07-25 日本電気株式会社 動的縮退装置、方法

Also Published As

Publication number Publication date
JP2009193469A (ja) 2009-08-27

Similar Documents

Publication Publication Date Title
JP4585463B2 (ja) 仮想計算機システムを機能させるためのプログラム
CN106776159B (zh) 具有故障转移的快速外围元件互连网络系统与操作方法
US7844852B2 (en) Data mirror cluster system, method and computer program for synchronizing data in data mirror cluster system
US7441150B2 (en) Fault tolerant computer system and interrupt control method for the same
JP4984077B2 (ja) 動的切り替え装置、動的切り替え方法、及び動的切り替えプログラム
US20100042795A1 (en) Storage system, storage apparatus, and remote copy method
JP2006285919A (ja) 計算機システム、計算機及びリモートコピー処理方法
JP6098778B2 (ja) 冗長化システム、冗長化方法、冗長化システムの可用性向上方法、及びプログラム
JPH09259098A (ja) 分散メモリ型マルチプロセッサシステム及び故障回復方法
US9398094B2 (en) Data transfer device
JP2008046685A (ja) 二重化システム及び系切り換え方法
US20210089379A1 (en) Computer system
US8090907B2 (en) Method for migration of synchronous remote copy service to a virtualization appliance
US6810010B1 (en) Redundant LAN system, active line/stand-by line switching method, and recording medium
JP5287974B2 (ja) 演算処理システム、再同期方法、およびファームプログラム
JP3774826B2 (ja) 情報処理装置
JP4984051B2 (ja) 動的縮退装置、方法
JP2007264976A (ja) コンピュータシステム、データ退避方法、及び、プログラム
JP5251690B2 (ja) 遠隔コピーシステムおよび遠隔コピー方法
JP5703860B2 (ja) フォールトトレラントシステム、メモリ制御方法、及びプログラム
US20220083564A1 (en) Maintaining consistency of asynchronous replication
JP6658299B2 (ja) 情報処理装置及び情報処理装置の制御方法
KR19990074420A (ko) 특정 신호를 이용하여 이중화 방식을 구현하기 위한 메모리제어 방법
JP2000353106A (ja) データ引き継ぎ装置および方法
WO2014076765A1 (ja) データ処理装置及びデータ処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120116

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120312

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: 20120328

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: 20120410

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: 20150511

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees