(57)【要約】【課題】通常のトランザクションによるタイムアウト検出より前に停滞状態を検出し、障害発生時のバッファリード制御を高速化し、ひとつのパーティションでのタイムアウト障害を契機に他の健全なパーティションが巻き込まれて起きるマルチパーティション障害を軽減させる。【解決手段】複数のパーティションが共有するインタフェースのバッファを制御するシステムにおいて、バッファ内のデータの停滞状態を自立的に監視し、そのデータの停滞状態によるタイムアウト障害の発生を、トランザクションのリクエスト及びリプライによるタイムアウト検出よりも前に検出する停滞監視部と、あるパーティションのデータの停滞状態によるタイムアウト障害が発生したことが検出された場合、バッファからデータを読み出すときに、タイムアウト障害を引き起こすパーティションのデータの格納されるアドレスをスキップするアドレススキップ制御部とを備える。【選択図】図１
2010224897.tif 000002
【特許請求の範囲】
【請求項１】
複数のパーティションが共有するインタフェースのバッファを制御するシステムにおいて、
前記バッファ内のデータの停滞状態を自立的に監視し、そのデータの停滞状態によるタイムアウト障害の発生を、トランザクションのリクエスト及びリプライによるタイムアウト検出よりも前に検出する停滞監視部と、
前記停滞監視部により、あるパーティションのデータの停滞状態によるタイムアウト障害が発生したことが検出された場合、前記バッファからデータを読み出すときに、前記タイムアウト障害を引き起こすパーティションのデータの格納されるアドレスをスキップするアドレススキップ制御部とを備えたことを特徴とするバッファ制御システム。
【請求項２】
前記データは、パケットを構成する複数のフリットからなり、
前記データを前記バッファに格納するときに、フリットデータと、フリットの有効性を示す情報と、パケットのパーティション番号と、パケットのフリット数とを第１の記憶手段に格納し、前記第１の記憶手段に格納したフリットデータ及びフリットの有効性を示す情報とを第２の記憶手段に格納し、前記第１の記憶手段に格納したパケットのパーティション番号及びパケットのフリット数と、前記第２の記憶手段に格納したフリットデータ及びフリットの有効性を示す情報とを前記バッファに格納することを特徴とする請求項１に記載のバッファ制御システム。
【請求項３】
前記アドレススキップ制御部は、現在のフリットの有効性を示す情報と、現在のフリットデータと、次のパケットのパーティション番号と、次のパケットのフリット数とを前記バッファの同一エントリから読み出すことを特徴とする請求項２に記載のバッファ制御システム。
【請求項４】
前記停滞監視部は、タイマ値がトランザクションのリクエスト・リプライによるタイムアウトより短い値に可変設定される停滞監視タイマを備え、前記停滞監視タイマにより、前記フリットの有効性を示す情報がフリット有効状態を示し、前記バッファのリードポインタが読み出し可能にもかかわらず前記バッファから読み出されずに停滞しているフリットのタイムアウトを検出することを特徴とする請求項３に記載のバッファ制御システム。
【請求項５】
前記アドレススキップ制御部は、前記停滞監視タイマにより前記タイムアウトの発生が検出された場合、次のパケットのパーティション番号と、次のパケットのフリット数と、現在のフリットデータの情報とから、前記アドレスのスキップ値を決定し、前記バッファのリードポインタに通知することを特徴とする請求項４に記載のバッファ制御システム。
【請求項６】
複数のパーティションが共有するインタフェースのバッファを制御する方法において、
停滞監視部が、前記バッファ内のデータの停滞状態を自立的に監視し、そのデータの停滞状態によるタイムアウト障害の発生を、トランザクションのリクエスト及びリプライによるタイムアウト検出よりも前に検出し、
アドレススキップ制御部が、あるパーティションのデータの停滞状態によるタイムアウト障害が発生したことが検出された場合、前記バッファからデータを読み出すときに、前記タイムアウト障害を引き起こすパーティションのデータの格納されるアドレスをスキップすることを特徴とするバッファ制御方法。
【請求項７】
前記データは、パケットを構成する複数のフリットからなり、
前記データを前記バッファに格納するときに、フリットデータと、フリットの有効性を示す情報と、パケットのパーティション番号と、パケットのフリット数とを第１の記憶手段に格納し、前記第１の記憶手段に格納したフリットデータ及びフリットの有効性を示す情報とを第２の記憶手段に格納し、前記第１の記憶手段に格納したパケットのパーティション番号及びパケットのフリット数と、前記第２の記憶手段に格納したフリットデータ及びフリットの有効性を示す情報とを前記バッファに格納することを特徴とする請求項６に記載のバッファ制御方法。
【請求項８】
前記アドレススキップ制御部が、現在のフリットの有効性を示す情報と、現在のフリットデータと、次のパケットのパーティション番号と、次のパケットのフリット数とを前記バッファの同一エントリから読み出すことを特徴とする請求項７に記載のバッファ制御方法。
【請求項９】
前記停滞監視部が、タイマ値がトランザクションのリクエスト・リプライによるタイムアウトより短い値に可変設定される停滞監視タイマにより、前記フリットの有効性を示す情報がフリット有効状態を示し、前記バッファのリードポインタが読み出し可能にもかかわらず前記バッファから読み出されずに停滞しているフリットのタイムアウトを検出することを特徴とする請求項８に記載のバッファ制御方法。
【請求項１０】
前記アドレススキップ制御部が、前記停滞監視タイマにより前記タイムアウトの発生が検出された場合、次のパケットのパーティション番号と、次のパケットのフリット数と、現在のフリットデータの情報とから、前記アドレスのスキップ値を決定し、前記バッファのリードポインタに通知することを特徴とする請求項９に記載のバッファ制御方法。
【請求項１１】
複数のパーティションが共有するインタフェースであって、
請求項１から５のいずれか１項に記載のバッファ制御システムを用いたことを特徴とするパーティション共有インタフェース。
【請求項１２】
請求項１１に記載のパーティション共有インタフェースを用いたことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ制御システム、方法、これを用いたパーティション共有インタフェース及びシステムに係り、特に複数のパーティションが共有するインタフェースを持つシステムの共有バッファ制御に関する。
【背景技術】
【０００２】
図４は、関連技術の複数パーティションが共有するインタフェースを持つシステムの構成を示している。プロセッサＳ２１、Ｓ２２、Ｓ２３、Ｓ２４、メモリＳ３１、Ｓ３２、Ｓ３３、Ｓ３４、ディスクＳ４１からなるノードＳ０１と、プロセッサＳ２５、Ｓ２６、Ｓ２７、Ｓ２８、メモリＳ３５、Ｓ３６、Ｓ３７、Ｓ３８、ディスクＳ４２からなるノードＳ０２が、クロスバＳ１１及びＳ１２を介して接続されているシステムである。
【０００３】
パーティションの分割方法として、例えばプロセッサＳ２１、Ｓ２２、Ｓ２５、Ｓ２６、メモリＳ３１、Ｓ３２、Ｓ３５、Ｓ３６、ディスクＳ４１によりパーティション１を構成し、プロセッサＳ２３、Ｓ２４、Ｓ２７、Ｓ２８、メモリＳ３３、Ｓ３４、Ｓ３７、Ｓ３８、ディスクＳ４２によりパーティション２を構成した場合、クロスバＳ１１及びＳ１２の内部には、パーティション１のデータ及びパーティション２のデータで共有されるバッファが存在する構成となる。
【０００４】
当該共有バッファには、クロスバＳ１１の送信側の共有バッファＳ１１Ｔ及びクロスバＳ１２の受信側の共有バッファＳ１２Ｒには、ノードＳ０１からノードＳ０２へ転送されるパーティション１及びパーティション２のデータが混在する。同様にクロスバＳ１２の送信側の共有バッファＳ１２Ｔ及びクロスバＳ１１の受信側の共有バッファＳ１１Ｒには、ノードＳ０２からノードＳ０１へ転送されるパーティション１及びパーティション２のデータが混在することになる。
【０００５】
このように複数パーティションが共有するバッファが存在するシステム構成において、あるパーティションでタイムアウト障害が発生するケースでは、障害パーティションの転送データが共有バッファに停滞してしまうため、後続の転送データとして共有バッファに格納されている他のパーティションの転送データも停滞してしまい、マルチパーティション障害に至ってしまう可能性がある。この状況について、図５を参照して説明する。
【０００６】
図５は、図４に示すシステムにおける片側ノードのクロスバ部分（図の例ではクロスバＮ０１）を詳細に説明したものである。
【０００７】
図５に示す複数のパーティションのデータが混在するパーティション共有部の共有バッファＮ５０において、例えば先頭のエントリがパーティション２のプロセッサＮ４０宛の転送データであった場合、共有バッファＮ５０のリード制御部Ｎ５１は、調停部Ｎ４２に対して送信要求を出す。通常ならば、調停部Ｎ４２から許可応答がリード制御部Ｎ５１に返り、共有バッファＮ５０から転送データが読み出され、宛先制御部Ｎ５２、セレクタ部Ｎ４１、バッファＮ４３を経由してプロセッサＮ４０へ送信される。
【０００８】
その際、パーティション２のプロセッサＮ３０からもプロセッサＮ４０宛の転送データがあり、バッファＮ３１のリード制御部Ｎ３２が調停部Ｎ４２に対して送信要求を出し、調停部Ｎ４２で調停を行った結果、故障などによりリード制御部Ｎ３２に対してのみ許可応答が返却されると、セレクタ部Ｎ４１は、プロセッサＮ３０からのリクエストのみを選択し、共有バッファＮ５０からのリクエストは選択されない状態が継続される。
【０００９】
このように調停部Ｎ４２からリード制御部Ｎ５１に対してリード許可が出ない場合、例えば共有バッファＮ５０内に後続エントリのデータとしてパーティション１のプロセッサＮ２０宛の転送データが格納されていると、リード制御部Ｎ５１から調停部Ｎ２３に対して送信要求が出せない状態になり、健全なパーティション１の転送データがパーティション２の転送データ停滞による要因でタイムアウト障害を起こしてしまう課題がある。
【００１０】
これに関連して、特許文献１では、複数ノードで共有するバッファ制御に関し、１つのノードに障害が発生しそのノード復旧後の再組込み時においてシステム全体に与える影響を少なくするための共有バッファが開示されている。この共有バッファは、コンピュータであるノード夫々に対応して設けられ対応するノードがシステムに組込まれて正常に動作できる状態であるかどうかを示す情報を保持するレジスタと、ノードから出力されるデータを順次格納する複数のデータフィールドとそのデータが無効であるかどうかを示す情報を保持するコンフィグフィールドとを含むメモリと、レジスタが正常動作できる状態であることを示している場合において該レジスタに対応するノードに障害が発生したときデータが格納されるデータフィールドに対応するコンフィグフィールドを無効状態にする制御手段とを含む。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平１１−０９６０３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
図４、図５に示す関連技術の複数パーティションが共有するインタフェースを持つシステムにおけるマルチパーティション障害を回避するためには、複数のパーティションで共有するインタフェースを持たない構成とするか、またはパーティション数が少ない場合にはパーティション単位にバッファを分けて所有するなどして、可能な限りパーティション共有部分の極小化を行う必要があった。
【００１３】
また、複数パーティションが共有するバッファ制御を行うケースでも、あるパーティションで障害が生じ特にタイムアウトを検出するようなケースでは、障害の発生したパーティションの障害処理を実施中に、共有バッファ内に残存している後続の障害の起きていない健全なパーティションのデータが巻き込まれてタイムアウト障害を起こしてしまい、マルチパーティション障害となるケースがあった。
【００１４】
さらに、特許文献１のように複数ノードで共有するバッファ制御を行うケースでも、共有バッファの外部より障害発生の通知がある事例では、全てのノード数から共有バッファに対して障害通知手段を設けなければならず、タイムアウト障害の検出には障害通知が無いあるいは遅れるケースがあり、健全なパーティションのデータが巻き込まれる可能性がある。そのような背景があることに加えて、近年ではサーバ統合、プロセッサのマルチコア化、ＶＭ（Virtual Machine）、ＩＯ（Input Output）仮想化、ＬＳＩ（Large Scale Integration）の１チップ化などの傾向があり、複数のパーティションで共有する部分を持たざるを得ない状況が生じてきている。
【００１５】
本発明の目的は、上記課題を解決し、通常のトランザクションによるタイムアウト検出より前に停滞状態を検出し、障害発生時のバッファリード制御を高速化し、ひとつのパーティションでのタイムアウト障害を契機に他の健全なパーティションが巻き込まれて起きるマルチパーティション障害を軽減させることができるバッファ制御システム、方法、これを用いたパーティション共有インタフェース及びシステムを提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、本発明に係るパーティション共有インタフェースのバッファ制御システムは、複数のパーティションが共有するインタフェースのバッファを制御するシステムにおいて、前記バッファ内のデータの停滞状態を自立的に監視し、そのデータの停滞状態によるタイムアウト障害の発生を、トランザクションのリクエスト及びリプライによるタイムアウト検出よりも前に検出する停滞監視部と、前記停滞監視部により、あるパーティションのデータの停滞状態によるタイムアウト障害が発生したことが検出された場合、前記バッファからデータを読み出すときに、前記タイムアウト障害を引き起こすパーティションのデータの格納されるアドレスをスキップするアドレススキップ制御部とを備えたことを特徴とする。
【００１７】
本発明に係るパーティション共有インタフェースのバッファ制御方法は、複数のパーティションが共有するインタフェースのバッファを制御する方法において、停滞監視部が、前記バッファ内のデータの停滞状態を自立的に監視し、そのデータの停滞状態によるタイムアウト障害の発生を、トランザクションのリクエスト及びリプライによるタイムアウト検出よりも前に検出し、アドレススキップ制御部が、あるパーティションのデータの停滞状態によるタイムアウト障害が発生したことが検出された場合、前記バッファからデータを読み出すときに、前記タイムアウト障害を引き起こすパーティションのデータの格納されるアドレスをスキップすることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、複数パーティションが共有するインタフェースの共有バッファ制御において、共有バッファ内の停滞データを自立的にタイマ監視することで通常のトランザクションによるタイムアウト検出より前に停滞状態を検出することができる。また、共有バッファからのリード制御では、健全なパーティションのデータだけをアドレススキップして読み出せるようにすることで、障害発生時のバッファリード制御を高速化し、ひとつのパーティションでのタイムアウト障害を契機に他の健全なパーティションが巻き込まれて起きるマルチパーティション障害を軽減させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態に係るパーティション共有インタフェースのバッファ制御システムの構成を示すブロック図である。
【図２】図１の共有バッファに格納される転送データの一例を示す図である。
【図３】図１に示すパーティション共有インタフェースのバッファ制御システムの動作を説明するタイミングチャートである。
【図４】関連技術の複数パーティションが共有するインタフェースを持つシステムの構成を示すブロック図である。
【図５】図４に示すシステムにおける片側ノードのクロスバ部分の詳細構成を示すブロック図である。
【発明を実施するための形態】
【００２０】
次に、本発明に係るバッファ制御システム、方法、これを用いたパーティション共有インタフェース及びシステムの実施の形態について、図面を参照して詳細に説明する。
【００２１】
図１は、本実施の形態に係るバッファ制御システムの構成を示す。同図に示すバッファ制御システムは、例えば前述した図４、図５に示すような複数のパーティションが共有するインタフェース（共有部）の共有バッファＢ０８を制御するものであり、パケット解析部Ｂ０１、レジスタなどの第１の記憶手段Ｂ０２〜Ｂ０５及び第２の記憶手段Ｂ０６、Ｂ０７、リードポインタＢ１３、停滞監視タイマ（停滞監視部）Ｂ１４、及びアドレススキップ制御部Ｂ１５を有する。
【００２２】
パケット解析部Ｂ０１は、複数のパーティションが共有するインタフェース（共有部）の共有バッファＢ０８に入力されるパケットＢ００を解析し、第１の記憶手段Ｂ０２〜Ｂ０５、第２の記憶手段Ｂ０６、Ｂ０７を介して共有バッファＢ０８に格納する。ここで、入力パケットＢ００は、１つのパケットが固定長でない複数のフリットから構成され、１つのフリットには、フリットデータのほか、その制御情報として、フリットの有効性を示すＶａｌｉｄ情報、パケットのパーティション番号を示す情報、パケットのフリット数を示す情報を直接あるいはそれらを算出可能な情報がそれぞれ格納されている。このうち、パケットのパーティション番号を示す情報と、パケットのフリット数を示す情報は、１つのパケットを構成する複数のフリットの内のいずれかのフリット、例えば最初のフリット又はそれ以外のフリットに格納されている。いずれのフリットに格納されるかは、入力パケットＢ００のフォーマットによって異なる。
【００２３】
本実施の形態では、パケット解析部Ｂ０１は、１つのパケットが複数のフリットからなる入力パケットＢ００のうち、フリットデータそのものを第１の記憶手段Ｂ０５に格納すると共に、フリットの有効性を示すＶａｌｉｄ情報を第１の記憶手段Ｂ０２に、パケットのパーティション番号を示す情報を第１の記憶手段Ｂ０３に、パケットのフリット数を示す情報を第１の記憶手段Ｂ０４にそれぞれ直接あるいは算出して格納する。
【００２４】
ここで、パケットのパーティション番号を示す情報及びパケットのフリット数を示す情報が、１つのパケットを構成する複数のフリットの内の最初のフリットにある場合には、図１のようにフリットの有効性を示すＶａｌｉｄ情報は、第１の記憶手段Ｂ０２から第２の記憶手段Ｂ０６に、フリットデータは、第１の記憶手段Ｂ０５から第２の記憶手段Ｂ０７にそれぞれ格納し、パケットのパーティション番号を示す情報及びパケットのフリット数を示す情報と所定時間（１Ｔ）分の時間差を設けて、共有バッファＢ０８に格納する。
【００２５】
一方、パケットのフォーマットによって、パケットのパーティション番号を示す情報及びパケットのフリット数を示す情報が、１つのパケットを構成する複数のフリットの内の最初のフリットにない場合は、最初のフリットとこれらの情報を格納するフリットとの差に応じた時間差をつけ、共有バッファＢ０８に格納する。
【００２６】
本実施の形態では、入力パケットＢ００を上記の第１の記憶手段Ｂ０２〜Ｂ０５、第２の記憶手段Ｂ０６、Ｂ０７を介して共有バッファＢ０８に格納することで、共有バッファＢ０８から読み出した際に、フリットの有効性を示すＶａｌｉｄ情報Ｂ０９と、次のパケットのパーティション番号を示す情報Ｂ１０と、次のパケットのフリット数を示す情報Ｂ１１と、現在の先頭エントリのフリットデータＢ１２とが、共有バッファＢ０８の同一アドレスの同一エントリから読み出されるバッファ構成が実現できる。
【００２７】
リードポインタＢ１３は、共有バッファＢ０８から出力パケットＢ１６として読み出すフリットを格納しているエントリのアドレスを指定する。
【００２８】
停滞監視タイマＢ１４は、共有バッファＢ０８からの読み出し時に、読み出すフリットが有効でかつリードポインタＢ１３が変化しないことでタイマを動作させることにより、通常のトランザクションのリクエスト・リプライによるタイムアウトの検出よりも前に停滞状態のタイムアウトを検出する。ここで、タイマ値は、通常のトランザクションのリクエスト・リプライによるタイムアウトより短い適切な値を可変で設定できるものとする。
【００２９】
アドレススキップ制御部Ｂ１５は、停滞監視タイマＢ１４による停滞状態のタイムアウト検出時に、次のパケットのパーティション番号を示す情報Ｂ１０と、次のパケットのフリット数を示す情報Ｂ１１と、現在の先頭エントリのフリットデータＢ１２とに基づいて、アドレスのスキップ値（＋ｘ）を決定し、リードポインタＢ１３に通知する。
【００３０】
次に、図１を参照して、本実施の形態の共有バッファの制御方法について説明する。同図は、入力パケットＢ００が共有バッファＢ０８に格納され、共有バッファＢ０８から出力パケットＢ１６が送出される際のバッファ制御を示したものである。
【００３１】
まず、複数のパーティションが共有するインタフェース（共有部）が入力パケットＢ００を受信すると、パケット解析部Ｂ０１は、パケット内容を解析し、フリットの有効性を示すＶａｌｉｄ情報を第１の記憶手段Ｂ０２、パケットのパーティション番号を第１の記憶手段Ｂ０３、パケットのフリット数を第１の記憶手段Ｂ０４の各記憶手段に格納し、同時にフリットデータを第１の記憶手段Ｂ０５に格納する。
【００３２】
更に共有バッファＢ０８に格納するまでの間に、フリットの有効性を示す情報及びフリットデータを、パーティション番号及びフリット数とは時間差を設けて、それぞれ第２の記憶手段Ｂ０６及びＢ０７に格納してから共有バッファＢ０８に格納することにより、共有バッファＢ０８の同一エントリから、現在のフリットの有効性情報Ｂ０９、現在のフリットデータＢ１２、及び次のパケットのパーティション番号Ｂ１０、次のパケットのフリット数Ｂ１１を読み出すことが可能となる。
【００３３】
更に、本実施の形態では、現在のフリットの有効性情報Ｂ０９がフリット有効状態を示していてリードポインタＢ１３が読み出し可能にもかかわらず共有バッファＢ０８から読み出されずに停滞しているフリットを監視する停滞監視タイマＢ１４を備えている。
【００３４】
これにより、アドレススキップ制御部Ｂ１５は、停滞監視タイマＢ１４がタイムアウトを検出した場合、次のパケットのパーティション番号Ｂ１０、次のパケットのフリット数Ｂ１１、現フリットデータＢ１２の情報から、停滞タイムアウトが発生したパーティションデータの格納されるアドレスをスキップして他の健全なパーティションデータの格納されるアドレスを算出してリードポインタＢ１３に通知することで共有バッファＢ０８から読み出しを行う。
【００３５】
このようにすることで、トランザクションのリクエスト・リプライによるタイムアウト検出より前に停滞するパーティションデータを無効化処理し、更に後続の健全なパーティションデータのみを読み出すことができ、高速化を図ることができる。
【００３６】
図２は、図１の共有バッファＢ０８に格納される転送データの一例を示している。
【００３７】
転送データは、共有バッファＢ０８のエントリ０から順に格納される。図２の例は、パーティション２のフリット１、２、パーティション１のフリット１、２、パーティション２のフリット１、２、３、パーティション１のフリット１の順で格納されていることを示している。
【００３８】
各エントリには、フリットの有効状態を示すＶａｌｉｄフィールド、次のパケットのパーティション番号を示すフィールド、次のパケットのフリット数を示すフィールド、フリットデータが格納されるフィールドで構成される。したがって、例えばエントリ１では、パーティション２のフリット２とともに、当該フリットの有効性を示すＶａｌｉｄ情報、次のパケットのパーティションの番号であるパーティション番号１、次のパケットのフリット数であるフリット数２が同一エントリに格納されるバッファの構成である。
【００３９】
ここで、図２で示すようなフリット順序で共有バッファＦ００にデータが格納されていた場合、共有バッファＦ００の先頭エントリ０にパーティション２のフリット１が格納され、当該フリットが停滞タイムアウトを検出したケースについて説明する。
【００４０】
停滞監視タイマＢ１４は、エントリ０のパーティション２のフリット１が有効かつアドレススキップ制御部Ｂ１５からリードポインタＢ１３に対してポインタ更新指示が出ない状態を監視し、タイマを動作させる。タイマ値は、通常のトランザクションのリクエスト・リプライによるタイムアウトより短い適切な値を可変で設定できるものとする。
【００４１】
この状態で、停滞監視タイマＢ１４によるタイマ動作により停滞タイムアウトが検出されると、その検出パルスがアドレススキップ制御部Ｂ１５に通知される。そうすると、停滞タイムアウト検出直後では、現在のフリットデータＢ１２から現パケットのパーティション番号とフリット数からの情報を基に、アドレススキップ制御部Ｂ１５は、タイムアウト検出したパーティション２のフリット１及びパーティション２のフリット２の格納エントリ分（＋２エントリ）だけアドレスをスキップし、リードポインタＢ１３に通知する。
【００４２】
アドレススキップ制御部Ｂ１５は、続くエントリ２のリードでは次のパーティション番号Ｂ１０がタイムアウト検出パーティションでないパーティション番号１なので通常通りアドレスがエントリ３を示すように１だけインクリメントする。
【００４３】
更に続いて、エントリ３のリードでは、タイムアウト検出直後ではなく、次のパケットのパーティション番号Ｂ１０が停滞タイムアウト検出したパーティションであるパーティション番号２なので、アドレススキップ制御部Ｂ１５が次のパーティションのフリット数３に１インクリメントした値を算出し、アドレスがエントリ７を示すようにアドレスを＋４スキップし、リードポインタＢ１３に通知する。
【００４４】
このような動作を継続することで、停滞タイムアウト検出したパーティションデータが格納されるエントリ０、１、４、５、６の格納データを可能な限り高速に無効化し、健全なパーティションデータが格納されるエントリ２、３、７の格納データは影響を与えずに読み出す制御が可能となる。
【００４５】
図３は、共有バッファにおいて停滞監視タイムアウトを検出した場合、当該パーティションデータが格納される共有バッファのアドレスをスキップし、健全なパーティションデータの格納されるアドレスを算出して共有バッファからの読み出しを行う際のアドレススキップのタイミングチャートを示している。
【００４６】
図３の時刻ｔ０〜ｔ４の間、エントリ０に格納されるパーティション２のフリットのフリットデータＴ０３、すなわちＤａｔ０が読み出されずに停滞した場合に、バッファリードアドレスＴ０６は、Ａｄｒ０を示した状態である。この状態では、次のパケットのパーティション番号Ｔ０４は２、次のパケットのフリット数Ｔ０５は２である。
【００４７】
この状態にあるフリットが停滞し続けて、時刻ｔ４にて、停滞監視タイマＢ１４の動作によりパーティション２のタイムアウトエラーＴ０１が検出され、そのタイムアウトエラー検出パルスＴ０２がアドレススキップ制御部Ｂ１５に通知される。これにより、アドレススキップ制御部Ｂ１５は、タイムアウトエラー検出パルスＴ０２を検出すると、現在のフリットデータＴ０３から、当該フリットを含むパケットがいくつのフリットから構成されているかを算出する。この場合、次のパケットのパーティション番号Ｔ０４が２を示し、次のパケットのフリット数Ｔ０５が２であるので、アドレススキップ制御部Ｂ１５は、アドレススキップ量の＋２（Ａｄｒ０からＡｄｒ２へのアドレススキップ）を決定し、時刻ｔ５にて、そのアドレスＡｄｒ０を＋２としたＡｄｒ２をリードポインタＢ１３に指定し、これにより共有バッファＢ０８のアドレスＡｄｒ２のエントリに格納されたフリットのフリットデータＴ０３、すなわちＤａｔ２を読み出す。
【００４８】
引き続いて、次のパケットのパーティション番号Ｔ０４が１なので、アドレススキップ制御部Ｂ１５は、時刻ｔ６にて、通常通りアドレスを＋１としたＡｄｒ３をリードポインタＢ１３に指定し、これにより共有バッファＢ０８のアドレスＡｄｒ２のエントリに格納されたフリットのフリットデータＴ０３、すなわちＤａｔ３を読み出す。
【００４９】
このとき、パーティション２のタイムアウトエラーＴ０１の検出中で、次のパケットのパーティション番号Ｔ０４が２を示し、次のパケットのフリット数Ｔ０５が３であるので、アドレススキップ制御部Ｂ１５は、アドレススキップ量の＋３（Ａｄｒ３からＡｄｒ７へのアドレススキップ）を決定し、時刻ｔ７にて、アドレスＡｄｒ３を３＋１としたＡｄｒ７をリードポインタＢ１３に指定し、これにより共有バッファＢ０８のアドレスＡｄｒ７のエントリに格納されたフリットのフリットデータＴ０３、すなわちＤａｔ７を読み出す。
【００５０】
それ以降は、同様にパーティション２のタイムアウトエラーＴ０１の検出中で次のパケットのパーティション番号Ｔ０４が２を示している場合、アドレススキップ制御部Ｂ１５により、次のパケットのフリット数Ｔ０５＋１としたアドレスを算出することで、健全なパーティションのフリットが格納されたエントリのアドレスにスキップすることができる。
【００５１】
以上のように、本実施の形態では、マルチパーティション障害の軽減のため、共有バッファ内のデータの停滞状態をタイマ監視することでタイムアウト障害を事前に予測可能にし、これを契機に障害パーティションのデータの無効化処理を開始している。また、パーティション毎の障害通知手段を特に設けずに共有部に自立的な停滞タイムアウト検出手段を設けることで、共有するパーティションが多い場合にも対応が容易となる。
【００５２】
更に、本実施の形態では、共有バッファからの読み出し制御において、共有バッファ内の停滞タイムアウト障害が発生したパーティションのデータが格納されているアドレスをスキップして読み出すことで高速化をはかり、後続の健全なパーティションの転送データが影響を受けてタイムアウト障害となるケースを軽減できる。
【００５３】
すなわち、本実施の形態では、複数パーティションが共有するインタフェースのバッファ制御において、あるパーティションでタイムアウト障害が発生した場合に、パーティション共有するバッファに残存するデータのうち、非障害パーティションのデータには影響を極力与えずに障害パーティションのデータは高速に無効化処理し、マルチパーティション障害となるケースを軽減させることができる。
【００５４】
以上説明したように、本実施の形態によれば、複数パーティションが共有するインタフェースの共有バッファ制御において、共有バッファ内の停滞データを自立的にタイマ監視することで通常のトランザクションによるタイムアウト検出より前に停滞状態を検出することができる。また、共有バッファからのリード制御では、健全なパーティションのデータだけをアドレススキップして読み出せるようにすることで、障害発生時のバッファリード制御を高速化し、ひとつのパーティションでのタイムアウト障害を契機に他の健全なパーティションが巻き込まれて起きるマルチパーティション障害を軽減させることができる。
【００５５】
なお、アドレススキップの条件として使用した情報は、パーティション番号、フリット数そのものでなくても、それらを特定できる情報であれば構わない。また、これらの情報が最初のフリットに位置しないプロトコルのパケットであっても、フリットデータとの時間差を調整することで同様の動作対応が可能である。また、共有するパーティション数は上記実施の形態の２つのパーティションに限らず、タイムアウト検出とパーティション番号から情報を得るので更に多数のパーティション数を共有する場合においても対応可能である。
【００５６】
なお、上記のバッファ制御システムは、そのハードウェア及びソフトウェア構成は特に限定されるものではなく、上述した各部の機能（手段）を実現可能なものであれば、いずれのものでも適用可能である。例えば、各部の機能毎に回路を独立させて構成したものでも、複数の機能を１つの回路にまとめて一体に構成したものでも、いずれのものであってもよい。
【００５７】
また、上記のバッファ制御システムを構成する各部の少なくとも一部の機能を、プログラムコードを用いて実現する場合、かかるプログラムコード及びこれを記録する記録媒体は、本発明の範疇に含まれる。この場合、オペレーティングシステム（ＯＳ）等の他のソフトウェアと協働して上記機能が実現される場合は、それらのプログラムコードも含まれる。
【００５８】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【００５９】
本発明は、バッファ制御システム、方法、これを用いたパーティション共有インタフェース及びシステムの用途に利用可能である。
【符号の説明】
【００６０】
Ｂ０１  パケット解析部
Ｂ０２〜Ｂ０５  第１の記憶手段
Ｂ０６、Ｂ０７  第２の記憶手段
Ｂ０８  共有バッファ
Ｂ１３  リードポインタ
Ｂ１４  停滞監視タイマ（停滞監視部）
Ｂ１５  アドレススキップ制御部
【図１】
2010224897.tif 000003
【図２】
2010224897.tif 000004
【図３】
2010224897.tif 000005
【図４】
2010224897.tif 000006
【図５】
2010224897.tif 000007