(57)【要約】  【課題】複数のプロセッサ・IOハブ・メモリコントローラを接続するチップセット上で、システム全体が複数の区画に分割されてそれぞれの区画上でOSが稼動している時に、区画内の障害が他の区画に伝播しないようにする。  【解決手段】チップセット100に入ってくるパケット330に含まれるアドレス情報あるいは発行元情報を基に、発行した区画を識別し、識別した区画識別子310をパケット330に付加する。付加された区画識別子310を基にして、区画初期化部250で、障害が発生した区画が発生したパケット330の選択的な抹消を行い、障害が発生した区画の障害の影響が他の区画に伝播しないようにする。【選択図】図１
2008165556.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコアを含むプロセッサと、IOデバイスを接続するリンクを備えたIOハブと、メモリを含むメモリコントローラとをチップセットによって相互に接続することによって構成される計算機システムであって、
該計算機システムは、それぞれにオペレーティングシステムを稼動させた仮想計算機を動作させるための一つ以上の区画に分割され、前記プロセッサコアあるいは前記IOデバイスはそれぞれ前記区画に属し、
前記チップセットは、
前記プロセッサコアあるいは前記IOデバイスから発行され、アドレス情報あるいは発行元情報を有するパケットを受信する受信部と、
前記アドレス情報あるいは前記発行元情報を基に、前記パケットを発行した前記プロセッサコアあるいは前記IOデバイスが属している前記区画を識別し、識別した前記区画に対応する区画識別子を前記パケットに付加する区画識別子付加部とを有する
計算機システム。
【請求項２】
請求項１記載の計算機システムであって、
前記チップセットは、
前記プロセッサコア、前記IOデバイスあるいは前記メモリコントローラに対してアクセスを要求する要求パケットを送信する送信部を有し、
前記区画識別子付加部は、
前記送信部から前記要求パケットを送信する際、前記要求パケットに含まれるトランザクション識別子と、対応する区画識別子とを登録しておき、
前記要求パケットに応答して受け取った応答パケットに、アドレス情報あるいは発行元情報が含まれていない場合に、前記トランザクション識別子によって前記要求パケットと前記応答パケットを対応付けし、対応する前記区画識別子を前記応答パケットに付加する
計算機システム。
【請求項３】
請求項１記載の計算機システムであって、
前記プロセッサあるいは前記IOハブは、前記パケットの発行元の前記プロセッサコアあるいは前記IOデバイスが属する前記区画に応じて前記アドレス情報を変換し、
前記区画識別子付加部は、前記パケットに含まれる前記アドレス情報から前記区画識別子を識別する
計算機システム。
【請求項４】
請求項３記載の計算機システムであって、
前記プロセッサあるいは前記IOハブは、前記区画に応じて前記アドレス情報を変換する際に、アドレスの上位ビットに前記区画識別子を埋め込み、
前記区画識別子付加部は、前記アドレス情報中の前記上位ビットから前記区画識別子を抽出する
計算機システム。
【請求項５】
請求項１記載の計算機システムであって、
前記IOハブと前記IOデバイスとを接続する前記リンク上に、前記パケットの発行元の前記IOデバイスが属する前記区画に応じて、前記アドレス情報を変換するアドレス変換部を有し、
前記区画識別子付加部は、前記パケットに含まれる前記アドレス情報から前記区画識別子を求める
計算機システム。
【請求項６】
請求項５記載の計算機システムであって、
前記アドレス変換部は、前記区画に応じて前記アドレス情報を変換する際に、アドレスの上位ビットに前記区画識別子を埋め込み、
前記区画識別子付加部は、前記パケットに含まれる前記アドレス情報の前記上位ビットから前記区画識別子を抽出する
計算機システム。
【請求項７】
請求項１記載の計算機システムであって、
前記チップセットは、
特定の前記区画に対する初期化要求を受け、受信した前記パケットに付加された前記区画識別子によって、前記パケットを選択的に除去する区画初期化部を有する
計算機システム。
【請求項８】
請求項７記載の計算機システムであって、
前記チップセットは、
前記プロセッサコア、前記IOデバイスあるいは前記メモリコントローラに対してアクセスを要求する要求パケットを送信する送信部を有し、
前記区画識別子付加部は、
前記送信部から前記要求パケットを送信する際、前記要求パケットに含まれるトランザクション識別子と対応する区画識別子とを登録しておき、
前記要求パケットに応答して受け取った応答パケットに、アドレス情報あるいは発行元情報が含まれていない場合に、前記トランザクション識別子によって前記要求パケットと前記応答パケットを対応付けし、対応する前記区画識別子を前記応答パケットに付加する
計算機システム。
【請求項９】
請求項７記載の計算機システムであって、
前記プロセッサあるいは前記IOハブは、前記パケットの発行元の前記プロセッサコアあるいは前記IOデバイスが属する前記区画に応じてアドレス情報を変換し、
前記区画識別子付加部は、前記パケットに含まれる前記アドレス情報から前記区画識別子を識別する
計算機システム。
【請求項１０】
請求項９記載の計算機システムであって、
前記プロセッサあるいは前記IOハブは、前記区画に応じて前記アドレス情報を変換する際に、アドレスの上位ビットに前記区画識別子を埋め込み、
前記区画識別子付加部は、前記アドレス情報の前記上位ビットから前記区画識別子を抽出する
計算機システム。
【請求項１１】
請求項７記載の計算機システムであって、
前記IOハブと前記IOデバイスとを接続する前記リンク上に、前記パケットの発行元の前記IOデバイスが属する前記区画に応じて、前記アドレス情報を変換するアドレス変換部を有し、
前記区画識別子付加部は、前記パケットに含まれる前記アドレス情報から、前記区画識別子を求める
計算機システム。
【請求項１２】
請求項１１記載の計算機システムであって、
前記アドレス変換部は、前記区画に応じて前記アドレス情報を変換する際に、アドレスの上位ビットに前記区画識別子を埋め込み、
前記区画識別子付加部は、前記パケットに含まれる前記アドレス情報の前記上位ビットから前記区画識別子を抽出する
計算機システム。
【請求項１３】
プロセッサコアを含むプロセッサと、IOデバイスを接続するリンクを備えたIOハブと、メモリを含むメモリコントローラとをチップセットによって相互に接続することによって構成される計算機システムであって、
該計算機システムは、それぞれにオペレーティングシステムを稼動させた仮想計算機を動作させるための一つ以上の区画に分割され、前記プロセッサコアあるいは前記IOデバイスはそれぞれ前記区画に属し、
前記チップセットは、
前記プロセッサコアあるいは前記IOデバイスから発行されたパケットを受信する受信部と、
特定の前記区画に対する初期化要求を受け、区画単位で初期化を行う区画初期化部を有する
計算機システム。
【請求項１４】
請求項１３記載の計算機システムであって、
前記区画初期化部は、
受信した前記パケットが有する区画識別子に基づき、初期化要求を受けた前記区画に対応する前記パケットを選択的に除去する
計算機システム。
【請求項１５】
オペレーティングシステムを稼動させた仮想計算機を動作させるための一つ以上の区画に分割された計算機システムを構成し、前記区画の何れかに属するプロセッサコアを含むプロセッサと、前記区画の何れかに属するIOデバイスを接続するリンクを備えたIOハブと、メモリを含むメモリコントローラとを相互に接続するチップセットであって、
少なくとも一個のポート制御部を含んでおり、
前記ポート制御部は、
前記プロセッサコアあるいは前記IOデバイスから発行されたパケットを受信する受信部と、
特定の前記区画に対する初期化要求を受け、区画単位で初期化を行う区画初期化部とを有する
チップセット。
【請求項１６】
請求項１５記載のチップセットであって、
前記ポート制御部の前記区画初期化部は、
特定の前記区画に対する初期化要求を受け、前記パケットが有する区画識別子によって、受信した前記パケットを選択的に除去する
チップセット。
【請求項１７】
請求項１５記載のチップセットであって、
前記ポート制御部は、
前記パケットに含まれるアドレス情報あるいは発行元情報を基に、前記パケットを発行した前記プロセッサコアあるいは前記IOデバイスが属している前記区画を識別し、識別した前記区画に対応する区画識別子を前記パケットに付加する区画識別子付加部を更に有する
チップセット。
【請求項１８】
請求項１７記載のチップセットであって、
前記ポート制御部の前記区画初期化部は、
特定の前記区画に対する初期化要求を受け、前記パケットに付加された前記区画識別子によって、受信した前記パケットを選択的に除去する
チップセット。
【請求項１９】
請求項１７記載のチップセットであって、
前記ポート制御部は、
前記プロセッサコア、前記IOデバイスあるいは前記メモリコントローラに対してアクセスを要求する要求パケットを送信する送信部を有し、
前記ポート制御部の前記区画識別子付加部は、
前記送信部から前記要求パケットを送信する際、前記要求パケットに含まれるトランザクション識別子と対応する区画識別子とを登録しておき、
前記要求パケットに応答して受け取った応答パケットに、アドレス情報あるいは発行元情報が含まれていない場合に、前記要求パケットと前記応答パケットを前記トランザクション識別子によって対応付けし、対応する前記区画識別子を前記応答パケットに付加する
チップセット。
【請求項２０】
請求項１７記載のチップセットであって、
前記ポート制御部の前記区画識別子付加部は、受信した前記パケットに含まれる前記アドレス情報から前記区画識別子を識別する
チップセット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のプロセッサやIO(Input/Output)ハブによって構成され、区画に分割された計算機システムおよびそのチップセット技術に関する。
【背景技術】
【０００２】
プロセッサやIOデバイスとチップセットを接続してマルチプロセッサシステム(SMP; Symmetric Multiple Processor)を構成するに当たり、従来はバスによる接続が採られてきた。プロセッサの場合は、1つのプロセッサバス上に複数のプロセッサを接続することで、スヌープ処理やデータ転送をバス上で完結できるという利点があるが、その反面速度が上げられないという問題点があった。IOデバイスの場合は1つのPCIバス上に複数のデバイスを接続することができるが、やはりスピードの向上に限界があった。そこでより高速な伝送を可能とするために、高速シリアルI/Fにより1対1の接続を行う方式が採られるようになってきた。IOデバイスの場合は従来のPCIバスに代わり、PCI-Express(非特許文献１)規格が制定され、既に広く使われるようになってきている。プロセッサバスの場合はAMD社のOpteron（登録商標）プロセッサで採用されているHyperTransport（登録商標、非特許文献２)が、やはりプロセッサ間の1to1接続による高速伝送を可能としている代表的な高速シリアルインタフェースの例である。
【０００３】
高速シリアルインタフェースの利点を活かすために、チップの集積度が向上するに従って、プロセッサ等が従来のチップセットの機能を取り込む方向へと進んでいく。例えば従来のプロセッサバス＋チップセットの構成の場合はノースブリッジチップセットに内蔵されていたキャッシュコントローラやメモリコントローラの機能が、AMD社Opteronのような1to1接続のプロセッサにおいては、プロセッサ内に取り込まれている。チップセットを介さずに直接メモリや他のプロセッサのキャッシュへとアクセス可能とすることで、メモリアクセスのレイテンシを短縮し、また高速シリアルインタフェースによるメモリスループットの恩恵を最大限に享受できる。同様に従来のサウスブリッジチップセットに内蔵されていたIOデバイスインタフェースの機能も、IOハブチップへと集約される傾向にある。これにより、高速シリアルインタフェースを含むチップを製造するのが難しいサードベンダでも、コモディティであるプロセッサとIOハブチップとを揃えることでサーバを構成できるようになる。これによりサーバプラットフォームそのものがコモディティ化し、サーバプラットフォーム全体の価格を下げ、より普及を図ることができる。
【０００４】
このようにプロセッサとIOハブチップとがコモディティと化したプラットフォームにおいて、より大規模なSMPを構成するためには、高速シリアルインタフェースによるスイッチ機能をもったチップセットが必要である。このチップセットは、接続されたプロセッサ（コア）やIOハブから発行される要求パケットを目的のプロセッサ（コア）やIOハブまたはメモリコントローラへと運び、その結果として発行される応答パケット（読み出しデータまたは書き込み完了通知、またはエラー報告）を発行元のプロセッサ（コア）やIOハブへと運ぶ機能を有する。
【０００５】
一方、近年の計算機性能の向上、特にプロセッサのマルチコア化の進行により、従来複数のサーバに分散していた処理を一つのサーバに集約しコストを削減する動きが多く見られる。このような集約に際して有効となる手段が、サーバ分割により、複数のオペレーティングシステムを1台のサーバ上で稼動させる方法である。サーバ分割には、ノード単位、あるいはプロセッサ（コア）やIOデバイスなどのコンポーネント単位でハードウェアによる分割をサポートする物理分割方式と、ハイパバイザや仮想化ソフトウェアと呼ばれるファームウェアによって実現される論理分割方式とがある。論理分割方式では、各オペレーティングシステム（ゲストＯＳ）はハイパバイザが提供する論理プロセッサ上で実行され、ハイパバイザにより複数の論理プロセッサが物理プロセッサへマッピングされることにより、ノードよりも細かい単位に区画を分割できる。さらにプロセッサ（コア）に関しては複数の論理区画間で1つの物理プロセッサ（コア）を時分割で切り替えながら実行することもできる。これにより、物理プロセッサ（コア）の数よりも多くの論理区画を生成し同時に実行することが可能になる。VMware(登録商標、特許文献１)は、論理分割を目的としたサーバ仮想化ソフトウェアの代表例である。また、Intel社の制定しているVT-d（非特許文献３）は、複数のOSでIOを使用する場合に、DMAアドレスを変換・保護する機能をIOハブ側に入れることで、IOを含めた論理分割をサポートする機能である。
【０００６】
【特許文献１】ＵＳＰ６４９６８４７
【非特許文献１】PCI-SIG Board of Directors Approve PCI-Express Specifications for Higher-Performance Serial I/O (http://www.pcisig.com/news_room/news/press_releases/2002_07_23/2002_07_23.pdf)
【非特許文献２】HyperTransport Specification 3.0(http://www.hypertransport.org/docs/tech/HTC20051222-0046-0008-Final-4-21-06.pdf)
【非特許文献３】Intel Virtualization Technology for Directed I/O Architecture Specification (http://www.intel.com/technology/computing/vptech/)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述のようなスイッチ機能を有するチップセットで接続された大規模マルチプロセッサシステム上で、サーバ分割によって複数のOSを実行させることを考える。
【０００８】
サーバ分割において重要な点は、分割された各サーバの信頼性・可用性の確保である。特に、ある区画のサーバにおいて障害があった場合に、その影響が他の区画のサーバに及ぶようなことがあると、サーバ分割しなかった場合に比べて信頼性・可用性は大幅に低下する。
【０００９】
従って、前述のようなスイッチ機能を有するチップセットにおいて、ある区画におけるサーバ障害の影響を他の区画へと伝播させないことが重要となる。チップセット上のスイッチは複数の経路を利用するパケットが通るため、チップセット上のリソース、例えばキューやバッファなどは複数の区画から共通で利用され得る。今、あるキューに複数の区画に属するパケットがエンキューされている場合を考える。この時、ある特定の区画に属するサーバが障害を起こし、関連するリンクが送信不能となったと仮定する。仮にキューの構成がFIFO（First-In First-Out）構造になっていて、キューの先頭のパケットがこの障害を起こした区画に属していたとすると、このパケットは処理されること無く先頭に留まり続ける。やがてタイムアウトによりパケットは障害として取り除かれるが、後続の別の区画に属するパケットもタイムアウトの分の時間を待たされることになり、タイムアウトの連鎖を引き起こしてしまう可能性がある。また、仮にキューの構成がFIFOではなくOut-of-Orderで後続の無関係のパケットを引き抜ける構造になっていたとしても、タイムアウトまでの間、障害区画に属するパケットがリソースを専有してしまうことにより、実質的な性能低下を引き起こすことになるため好ましくない。
【００１０】
本発明は、スイッチ機能を有するチップセットで接続された大規模マルチプロセッサシステム上で、サーバ分割により複数のOSが実行されている環境下において、ある区画に関する障害の影響を最小限に封じ込めうる計算機システムを提供することを課題とする。
【課題を解決するための手段】
【００１１】
本発明の構成を説明する。
【００１２】
複数のプロセッサ、IOハブ、メモリコントローラをチップセットによって接続したマルチプロセッサ構成を採る。それぞれのコンポーネントはリンクによって接続される。このマルチプロセッサシステムを複数の区画に分割し、それぞれの区画上でOSが稼動する。区画への分割は、コンポーネント単位でも良いし、もっと細かい単位（プロセッサコアや、IOハブに接続されたIOバス、あるいはIOデバイス単位）に分割しても良い。また、単一のプロセッサコアやIOデバイスを同時に複数の区画から使用（時分割共有）しても良い。チップセットはそれらのコンポーネントを接続するハブスイッチとして機能する。チップセットの各リンクに対応して、区画識別子の逆引きモードを設定できる。チップセットには各チップセット単位での設定を管理するノード設定制御部と、それとは別にシステム全体での管理を行うシステム設定制御部がある。
【００１３】
次に本発明の動作について説明する。システムの起動前に、システム全体の区画分割の構成が決定される。設定コンソールから上記区画分割の構成を入力すると、その構成に従ってコンポーネントに接続された各リンクに対応した区画識別子の逆引きモードを設定する。プロセッサコア単位やIOハブ単位など、発行元NodeIDによって一意に区画が特定できる場合は、TxID逆引きモードを使う。IOハブやIOブリッジ経由で複数の区画が混在している場合や、プロセッサコアを時分割共有している場合など、発行元NodeIDによって一意に区画が特定できない場合にはアドレス逆引きモードを使う。リンクの先がチップセットなどの場合は無変換モードを使う。以上のように設定することで、チップセットは、区画識別子付加部として機能し、プロセッサやIOハブからやってくる要求パケットに対して区画識別子を付加することができる。
【００１４】
次に、本発明の区画識別子を利用した障害処理について説明する。特定の区画での障害を検出した場合、障害の情報はシステム設定制御部を経由して各チップセットのノード設定制御部へと伝えられる。ノード設定制御部は各リンクに対応する区画初期化部に対して障害を起こした区画に属するパケットを除去するように指令を送る。区画初期化部は受信キューの先頭エントリの区画識別子を判定し、初期化対象となっている区画に属している場合はこれを除去することで、障害区画のパケットによって使用されているリソースの速やかな解放を行う。
【発明の効果】
【００１５】
本発明により、複数の区画から共有されているチップセットのリソースが、障害を起こした区画によって占拠されることを防ぎ、タイムアウトの連鎖による区画間の障害の伝播を防ぐことができる。
【００１６】
また、区画識別子を障害解析以外の目的に利用することもできる。例えば、特定の区画に属するパケットに対して優先的にリソースを割り当てたり、逆に制限することなどにより、特急パスを作ったり、流量制御やQoS制御などに応用することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施例を図面を用いて詳述する。
【実施例１】
【００１８】
図1は第一の実施例の根幹を成す区画識別子付加部を有するチップセット100の構成を示す概略図である。
【００１９】
チップセット100は受信リンク150と送信リンク160を複数組持つ。受信リンク150と送信リンク160は反対側のコンポーネントから見ると逆に見えるため、この2つを組にして送受信リンク155と呼ぶ。チップセット100において各送受信リンクが接続されている部分をポートと呼ぶ。チップセット100はポート単位でそれぞれ異なるコンポーネントと接続される。コンポーネントとしてはプロセッサ400、IOハブ410、メモリコントローラ420、または別のチップセット100が考えられる。プロセッサ400は中に複数のプロセッサコア401を含んでいても構わない。また、メモリコントローラ420はプロセッサ400に含まれていても構わない。IOハブ410には1本以上のIOバス411（PCIバスやPCI-Expressバス）があり、それぞれの先には1つ以上のIOカード412およびIOデバイス413が接続されている。
【００２０】
チップセット100は、各ポートに対応したポート制御部110と、各ポート間のパケットの交換を行うクロスバスイッチ部120、およびチップセット100に関連する様々な設定を行うノード設定制御部130から構成される。ノード設定制御部130はシステム全体の設定を行うシステム設定制御部140と管理バス141を介して接続されている（図では専用リンクとしたが、送受信リンクと兼用でも構わない）。管理者は設定コンソール430経由でシステム設定制御部140にアクセスすることで、システム全体およびノード単位としての各チップセットの設定を変更・管理できる。なお、このシステム設定制御部140は通常のサービスプロセッサで構成され、ノード設定制御部130は通常のボードマネージメントコントローラ（BMC）で構成される。
【００２１】
ポート制御部110には、受信リンク150から入ってきたパケット330を格納する受信キュー200を含む受信部と、送信リンク160へ送るパケット330を格納する送信キュー210を含む送信部ある。パケットの受信部には、この受信キュー200に加え、複数の逆引きテーブル220〜240と、アドレス変換部260、および区画初期化部250がある。更には、逆引きモード300がある。
【００２２】
図２〜６は、パケット330の具体的構成を示す。パケット330はヘッダ部380を持つ。パケット330にはデータを伴うパケット（書き込み要求や読み出し結果など）とデータを伴わないパケット（書き込み完了や読み出し要求）があり、ヘッダ部380を見ることで識別可能となっている。図２はデータを伴わないパケット330の場合で、ヘッダ部380のみから構成される。図３はデータを伴うパケット330の場合で、ヘッダ部380の後に複数のデータ部390が付く。
【００２３】
図４にアドレスを含む場合のヘッダ部３８０の構成の一例を示す。要求／応答種別320、Tx（トランザクション）種別325、データ長370、宛先NodeID340、TxID350、アドレス360などから構成される。図５はアドレスを含まない場合のヘッダ部３８０の構成例で、アドレス360を含まない以外は図４と同じである。これらのヘッダ部380には区画を識別する区画識別子は含まれないが、区画識別子310を付加することで図６に示すような拡張ヘッダ部385となる。
【００２４】
図７はTx種別325の例として代表的なトランザクション種別を載せている。「要求」に属するTxとしては、Read, Read Invalidate, Writeback等が考えられる。一方「応答」に属するTxとしては、ReadやRead Invalidateに対応するData Return、Writebackに対応するWrite Completion、失敗したことを示すFailure、などが考えられる。もちろん、これ以外にもキャッシュをスヌープするためのTxなど様々なTxが考えられる。
【００２５】
図８はTxID350の構成例を示す。TxID350はシステム内でトランザクションを一意に識別するためのトランザクション識別子で、図８のように発行元NodeID351と発行元内識別子352の組によって構成するのが典型的な構成方法である。
【００２６】
図９〜１２に区画識別子付加部を構成する逆引きテーブルの構成例を示す。逆引きテーブルは、TxID逆引きテーブル220、アドレス逆引きテーブル230、要求／応答逆引きテーブル240とから構成され、予め設定された逆引きモード300、および受信パケット330に含まれる要求／応答種別320に従って、適切なテーブルまたは無変換が選択され、区画識別子310を生成する。生成された区画識別子310はパケット330の拡張ヘッダ部385へと埋め込まれ、受信キュー200に送られる。なお、逆引きモード300は例えば２ビットのレジスタで構成され、各ボード制御部110におけるモードに対応したビット値が設定される。
【００２７】
TxID逆引きテーブル220は、発行元NodeID351から区画識別子310が一意に求まる場合に使用する。例えば、プロセッサコア単位で発行元NodeIDが付加されており、プロセッサコア単位で区画に分割されているケースや、IOハブ配下のIOバスが全て一つの区画に属しているケースで使用される。図９に示すように、TxID逆引きテーブル220の各エントリは発行元NodeID351と区画識別子310の組で構成される。
【００２８】
アドレス逆引きテーブル230は、発行元NodeID351からでは区画識別子310が一意に定まらず、アドレス360を使って区画識別子310を求める必要がある場合に使用する。例えば、プロセッサコアが複数の区画で時分割共有されているケースや、IOハブやIOブリッジ配下に複数の区画に属するIOデバイスが存在し、発行元NodeID351がIOハブやIOブリッジによって付け替えられてしまうケースで使用される。図１０に示すように、アドレス逆引きテーブル230の各エントリは、ベースアドレス231とアドレス範囲232、および区画識別子310の組で構成される。もし区画識別子310に対応するエントリに、該当するアドレスが含まれない場合は、アクセス違反としてエラーとすることで、IOデバイスの暴走などによる不正なメモリアクセスを防ぐことができる。
【００２９】
また、別の方法として、より簡単なアドレス逆引きテーブル230の構成方法も考えられる。アドレス360の上位ビットは通常使用されないケースが多い。搭載物理メモリ量に限界があるためである。そこで、図１１に示すように、アドレス360の上位に直接区画識別子310を埋め込み、単に区画識別子抽出マスク311と簡単なビット演算をすることで、区画識別子310を取り出すことができる。なお、アドレス360の上位に区画識別子310を埋め込む方法については、IOハブ410の構成を説明するところで述べる。
【００３０】
要求／応答逆引きテーブル240は、区画識別子310が付加された要求パケット330をプロセッサ400やIOハブ410またはメモリコントローラ420に対して送信部から送信し、それに対応する応答パケット330を受信部で受信する場合に使用される。応答パケットのヘッダ部380にはアドレス360が含まれていないケースがあり、また区画識別子310はチップセット100でのみ有効な識別子であるため、要求パケットに含まれる区画識別子310を保持し、対応する応答パケットに改めて区画識別子を付け直す必要がある。
【００３１】
図２２と図２３に区画識別子付与部を構成する逆引きテーブルに関連した処理フローを示す。図２２は送信側の処理フローである。ステップ1000で、レジスタに設定されているビット値をチェックすることによって逆引きモード300が調べられる。逆引きモード300が「無変換」の場合は何もせずに進む。そうでない場合はステップ1010へ進む。
【００３２】
ステップ1010でパケット330に含まれる要求／応答種別320が調べられる。要求だった場合、ステップ1020へと進む。そうでない場合は何もせずに進む。ステップ1020では、要求／応答逆引きテーブル240に、TxID350と区画識別子310が格納される。これによって送信側の処理は完了する。
【００３３】
図２３は受信側の処理フローである。ステップ1100で逆引きモード300が調べられる。逆引きモード300が「無変換」の場合、ステップ1110へ進む。そうでない場合ステップ1120へと進む。
ステップ1110では、パケットをそのまま受信キュー200に格納し完了する。
【００３４】
ステップ1120では、パケット330に含まれる要求／応答種別320が調べられる。要求だった場合、ステップ1140へ進む。応答だった場合、ステップ1130へ進む。
【００３５】
ステップ1130では、要求／応答逆引きテーブル240を使って区画識別子310が抽出される。また、要求／応答逆引きテーブル240の当該エントリは抹消される。区画識別子310がパケット330へと付加され、受信キュー200に格納し完了する。
【００３６】
ステップ1140では、逆引きモード300が調べられる。逆引きモード300が「TxID逆引きテーブル220」を示している場合、ステップ1150へと進む。逆引きモード300が「アドレス逆引きテーブル230」を示している場合、ステップ1160へと進む。
【００３７】
ステップ1150では、TxID逆引きテーブル220を使って区画識別子310が生成される。区画識別子310はパケット330へと付加され、受信キュー200に格納し完了する。
【００３８】
ステップ1160では、アドレス逆引きテーブル230を使って区画識別子310が生成される。区画識別子310はパケット330に付加され、受信キュー200に格納し完了する。
【００３９】
以上が、区画識別子付加部を構成する逆引きテーブルを使った区画識別子生成に関する動作フローである。
【００４０】
図１４に図１に示したチップセット100内のアドレス変換部260の構成を示す。アドレス変換部260は、アドレス360と区画識別子310を受け、変換後アドレス363を生成する。アドレス360が、区画識別子310相当するエントリのベースアドレス261、およびアドレス範囲262に合致している場合、変換後ベースアドレス263に置き換えたアドレスを変換後アドレス363とする。
【００４１】
図１５に、図１１のアドレス逆引きテーブル230の簡略版に対応した、アドレス変換部260の簡略版の構成を示す。アドレス360の上位ビットに区画識別子310が埋め込まれている場合、変換後アドレス363は単に区画識別子310部分を取り去り、オール0によって埋めるだけで生成できる。
【００４２】
図１６にIOハブ410の構成の一具体例を示す。IOハブ410はチップセット100と接続するための送受信リンク155を1組以上持ち、またIOカードおよびIOデバイスを接続するためのIOバス411を1本以上持つ。IOバス411の先にはIOカード413が接続され、IOカード413の先には1つ以上のIOデバイス414が接続される。また、IOブリッジ415によってIOバス411をさらに複数に枝分かれさせることもでき、一つのIOバス411の下に複数のIOカード413（およびIOデバイス414）を接続することもできる。
【００４３】
IOハブ410はIOアドレス変換部440を含むこともできる。IOアドレス変換部440の構成例を図１７に示す。IOアドレス変換部440の役割は、IOバスを通って来るIOトランザクションに含まれるゲストアドレス450を、ホストアドレス451へと変換することである。この機構によって、区画に分割されていて複数のOSが稼動している時に、各OSで使用しているアドレス領域（ゲストアドレス）の範囲が重なっていても、適切なアドレス変換が行える。アドレス変換には、IOトランザクションに含まれる要求者ID455を使用する。要求者ID455は、典型的なIOバスであるPCI-Expressの場合、Bus番号、Device番号、Function番号の組によって構成される。要求者ID455の情報はIOハブ410内で使用され、送受信リンク150／160を通るパケット330中には含まれなくとも良い。対応するエントリにアドレスが含まれない場合は、アクセス違反であるとしてエラーとすることで、IOデバイスの暴走などによる不正なメモリアクセスを防ぐことができる。
【００４４】
なお、上述したIOアドレス変換部440において、変換されたホストアドレス451として、先に説明したように、その上位に直接区画識別子を埋め込むことによって、チップセット側でより簡単なアドレス逆引きテーブルを構成することができる。
【００４５】
また、以上のアドレス変換部の実施例の説明にあっては、IOハブ410のIOアドレス変換部440を例示して説明したが、プロセッサの場合においても、パケットの発行元のプロセッサコアが属する区画に応じてアドレス情報を変換する機能を有することは言うまでもない。
【００４６】
さて、図１８は第一の実施例におけるシステム全体の一構成例を示す概略図である。本システムでは、2つのプロセッサ400と2つのIOハブ410、2つのチップセット100がそれぞれ図のように5組の送受信リンク155によって相互に接続されている。各プロセッサ400はそれぞれ2つのプロセッサコア401と2つのメモリコントローラ420を含む。また各IOハブ410は2本のIOバス411を持ち、それぞれの先にIOカード412が接続される（IOデバイス414は図では省略した）。システム全体は2つの区画に分割され、図１９のテーブルに示すようにそれぞれのプロセッサ400に含まれる2つのプロセッサコア401およびそれぞれのIOハブ410に接続される2枚のIOカード412が、2つの区画（区画識別子0x1と0x2）に分割されている。チップセット100にはそれぞれノード設定制御部130が含まれ、管理バス141を介してシステム設定制御部140へと接続される。管理者は設定コンソール430を使ってシステム設定制御部140へとアクセスできる。
【００４７】
この構成における、チップセット100のポート制御部110の設定方法を示す。プロセッサ400aおよび400bと接続しているポート制御部110aおよび110eに関しては、プロセッサコア401単位で区画分割されているため、要求パケット330に含まれるTxID350の示す発行元NodeID351によって、一意に区画を特定可能である。そのため、これらのポートに関しては逆引きモード300をTxID逆引きテーブル220を使うようにレジスタの内容を設定する。
【００４８】
一方IOハブ410aおよび410bと接続してるポート制御部110bおよび110fに関しては、TxID逆引きテーブル220を使うことはできない。図１９に示すように、IOハブ410a全体で一つのNodeIDが割り当てられているため、チップセット100ではIOカード412aと412bの区別ができないからである。従ってこれらのポートに関してはアドレスから区画識別を行うアドレス逆引きテーブル230を使うように逆引きモード300のレジスタを設定する。
【００４９】
最後に、チップセット100aと100bを接続するポート制御部110cおよび110dに関しては、入口のポートにて既に区画識別子が付加されていることが期待できる。従って、これらのポートに関しては無変換とするように逆引きモード300のレジスタを設定する。
【００５０】
次に、図１８の例で実際にTxが発行されて結果が戻るまでの動作について説明する。まず初めに、プロセッサコア401aからメモリ421cに対してRead要求が出る場合について示す。まずチップセット100aのポート制御部110aがパケット330を受け取る。パケット330のヘッダ部380により、このパケット330が要求パケットであることがわかる。逆引きモード300の設定値により、要求パケットに対してはTxID逆引きテーブル220を使うことがわかり、これにより区画識別子310として0x1を得る。区画識別子310をヘッダ部380に格納し、拡張ヘッダ部385とした上で受信キュー200へと格納する。なお、ポート制御部110aのアドレス変換部260は、特に変換を行わない設定とする。
【００５１】
次に宛先が送受信リンク155cであるため、ポート制御部110cへとクロスバスイッチ部120を経由して送られる。ポート制御部110cでは逆引きモード300が無変換と設定されているため、特にパケットを操作することなくそのまま送受信リンク155cへと送り、チップセット100bへと送られる。
【００５２】
チップセット100bのポート制御部110dでは、上記パケット330を受け取る。逆引きモード300は無変換と設定されているため、パケットに対して特に操作は行わず、受信キュー200へと格納する。
【００５３】
次に宛先が送受信リンク155dであるため、ポート制御部110eへとクロスバスイッチ部120を経由して送られる。ポート制御部110eでは逆引きモード300がTxID逆引きテーブル220を使用すると設定されている。しかしこの場合は、送信側なので、パケット330に含まれるTxID350と区画識別子310を要求／応答逆引きテーブル240へと登録し、有効ビット241を1に設定する。パケットは送信キュー210に入れられ、送受信リンク155dを介してプロセッサ400b上のメモリコントローラ420cへと送られる。なお、チップセット100以外のコンポーネントは区画識別子310を利用しないため、拡張ヘッダ部385から区画識別子310を取り除き、ヘッダ部380へと戻してから発行しても良い。
【００５４】
メモリ421dからデータが読み出されると、読み出されたデータを含む応答パケット330が送受信リンク155dを介してチップセット100bのポート制御部110eへと送られる。ポート制御部110eでは、逆引きモード300が無変換でないことと、パケット330に含まれる要求／応答種別320が応答を示していることを受け、要求／応答逆引きテーブル240を使った区画識別を試みる。応答パケット330に含まれているTxID350と一致し、有効ビット241が1となっているエントリの区画識別子310を取り出し、応答パケット330の拡張ヘッダ部385へと格納する。要求と応答のマッチングが取れた場合、要求応答逆引きテーブル240の該当エントリの有効ビット241は0へとクリアされる。
【００５５】
区画識別子310が付加された応答パケット330は、ポート制御部110d、送受信リンク155c、ポート制御部110cを通って、ポート制御部110aへと到達する。ポート制御部110aでは、拡張ヘッダ部385から区画識別子310を取り除き、ヘッダ部380へと戻してから、送受信リンク155aへと送信する。プロセッサコア401aは応答パケット330を受け取り、Readの発行が完了する。
【００５６】
次に、IOカード412bから、メモリ421dに対してRead要求を発行する場合の動作を示す。チップセット100aのポート制御部110bがパケット330を受け取る。ポート制御部110bの逆引きモード300がアドレス逆引きテーブル230に設定されていることと、パケット330に含まれる要求／応答種別320が要求を示していることを受けて、アドレス逆引きテーブル230を使って区画識別子を求める。ここではIOハブ410のIOアドレス変換部440によって、アドレス360の上位に区画識別子310が埋め込まれている簡略版の構成を考える。区画識別子抽出マスク311とのビット演算により、区画識別子310が抽出される。一方、アドレス変換部360により、区画識別子310が埋め込まれていた上位ビットが0で埋められ、元のアドレスへと変換される。抽出された区画識別子310は拡張ヘッダ部385へと埋め込まれ、受信キュー200へと格納される。
【００５７】
区画識別子310が付加された後の動作は、プロセッサコア発のトランザクションの場合と同じであるのでここでは省略する。
【００５８】
図２０に、第一の実施例の変形例を示す。この例はIOハブ410に含まれていたIOアドレス変換部440が、IOハブ410の外に追い出され、IOアドレス変換アダプタ442として独立している。IOアドレス変換アダプタ442はIOカード413とIOハブ410との間に位置し、IOカードからやってくるIOトランザクションのゲストアドレスをホストアドレスへと変換する役割を担う。チップセット100から見た場合、IOアドレス変換部440がIOハブ410内にある場合と、IOアドレス変換アダプタ442にある場合とでは、何ら動作は変わらないので、詳しい動作の説明は省略する。
【実施例２】
【００５９】
次に本発明の第二の実施例である、区画識別子を利用した障害処理の動作について説明する。システム構成図としては引き続き図１８を使用する。ただし、区画の分割方法は図２１に示すように、IOハブ410bは全て区画0x2に属しているものとする。
【００６０】
今、IOハブ410b配下のIOカード412dで障害が発生し、パケットを受信できなくなったと仮定する。やがてIOカード412d行きのパケットにより送受信リンク155eが埋め尽くされ、ポート制御部110fの送信キュー210も詰まる。すると、ポート制御部110dの受信キュー200に入っている、ポート制御部110f行きのパケットもやがて発行できなくなる。
【００６１】
問題は、ポート制御部110dの受信キュー200には、障害を起こした区画0x2だけでなく、障害を起こしていない区画0x1に属するパケット330も同様に含まれている可能性があるという点である。もし受信キュー200から区画0x2に属するパケット330がいつまでも抜けないと、後続の区画0x1に属するパケット330も送信できないため、やがて発行元のコンポーネントでタイムアウトが検出され障害を発生してしまう。これは、ある区画(0x2)の障害が、別の区画(0x1)へと伝播してしまった例であり、好ましくない。
【００６２】
以下、第二の実施例において、区画初期化部250を使って障害を区画内に封じ込める手順について説明する。まずIOカード412dで障害が発生したことをシステム設定制御部140は何らかの方法で検知する。通常、サービスプロセッサはこのような障害検知機能を有しており、その方法としては、IOハブ410bからの障害報告でも良いし、チップセット100bにおけるタイムアウト検出でも良い。ここではタイムアウト検出の例を示す。通常、チップセット100b内のノード設定制御部130bを構成するBMCがこのようなタイムアウト検出機能を有している。
【００６３】
障害を起こしたIOカード412d行きのパケット330がポート制御部110dの受信キュー200先頭に来る。送り先であるポート制御部110fの送信キュー210が送信できないパケットにより溢れているため、先頭に留まり続け、やがてタイムアウトを検出する。タイムアウトを検出した場合、その先頭パケットに含まれる区画識別子310（この場合0x2）をノード設定制御部130bへと通知する。タイムアウトを起こしたパケット330は取り除かれ、後続のパケット330が処理される。ただし、後続のパケットに再びポート制御部110f行きのパケットが含まれていた場合、また止まることになる。
【００６４】
ノード設定制御部130bでは、タイムアウトを検出したことと、タイムアウトを起こしたパケットの区画識別子310をシステム設定制御部140へと管理バス141を介して通知する。システム設定制御部140では、報告された障害情報から、区画0x2が障害を起こしたとみなし、全チップセット100に対して区画0x2の区画初期化を指示する。指示を受けたノード設定制御部130aおよび130bでは、各ポート制御部110の区画初期化部250にレジスタアクセスインタフェース131を介して設定を行う。なお、このレジスタアクセスインタフェース131は、例えば、Joint Test Action Group(JTAG)やSystem Management Bus(SMBUS)に基づき構成される。
【００６５】
図１３に区画初期化部250の構成を示す。区画初期化部250は、区画初期化ビットマップ251を持ち、初期化対象となる区画（この場合0x2）に対応するビットに1を設定する。受信キュー200の先頭のパケット330の区画識別子310と区画初期化ビットマップ251とが比較され、もしパケット330が初期化対象の区画に属していた場合は、先頭エントリ抹消信号202が生成され、速やかにパケットが取り除かれる。これにより、障害を起こしたパケットがリソースを解放しないことにより、後続の無関係な区画のパケットがタイムアウトを起こすことを防ぐ。
【００６６】
システム設定制御部140では、パケットの除去が完了するまでの十分な時間が経った後に、再びノード設定制御部130に対して区画初期化を完了する指示を出す。ノード設定制御部130では、区画初期化ビットマップ251の対応するビットを0にクリアし、区画初期化を完了する。なお、パケットの除去が完了するのを保証する方法として、上記のように十分な時間待つ方法の他に、受信キューの入口で区画ごとのパケット数をカウントし、除去するたびにカウンタを減らして0になった時点で通知する、などの方法も考えられる。
【００６７】
以上が、本発明の第二の実施例で区画識別子を利用した障害処理の動作ある。なお、ここで示した例は、第一の実施例と同様、区画識別子310をチップセット100側で付加することになっているが、第二の実施例の障害処理と区画初期化自体は第一の実施例とは独立して適用することも可能である。すなわち、初めからプロセッサ400やIOハブ410が発行するパケット330自身に区画識別子310が含まれているような場合でも、第二の実施例で説明した障害処理を適用することは可能である。
【００６８】
以上詳述してきたように、本発明は、複数のプロセッサやIOハブによって構成され区画に分割された計算機システムおよびそのチップセットに対して適用でき、区間間の障害伝播に対して有効な解決技術を提供することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明の第一の実施例のチップセットの構成図。
【図２】第一の実施例におけるパケットの構成図。
【図３】第一の実施例におけるパケットの構成図。
【図４】第一の実施例におけるヘッダ部の構成図。
【図５】第一の実施例におけるヘッダ部の構成図。
【図６】第一の実施例における拡張ヘッダ部の構成図。
【図７】第一の実施例におけるTx種別の具体例を示す図。
【図８】第一の実施例におけるTxIDの構成の具体例を示す図。
【図９】第一の実施例におけるTxID逆引きテーブルの構成を示す図。
【図１０】第一の実施例におけるアドレス逆引きテーブルの構成を示す図。
【図１１】第一の実施例におけるアドレス逆引きテーブルの簡略版の構成図。
【図１２】第一の実施例における要求／応答逆引きテーブルの構成図。
【図１３】第一の実施例における区画初期化部の構成図。
【図１４】第一の実施例におけるアドレス変換部の構成図。
【図１５】第一の実施例におけるアドレス変換部の簡略版の構成図。
【図１６】第一の実施例におけるIOハブの構成図。
【図１７】第一の実施例におけるIOアドレス変換部の構成図。
【図１８】第一の実施例におけるシステムの構成図。
【図１９】第一の実施例における区画の設定を示す図。
【図２０】第一の実施例の変形例におけるIOハブの構成を示す図。
【図２１】本発明の第二の実施例における区画の設定を示す図。
【図２２】第一の実施例における区画識別子付与部に含まれる逆引きテーブルの送信側処理のフローを示す図。
【図２３】第一の実施例における区画識別子付与部に含まれる逆引きテーブルの受信側処理のフローを示す図。
【符号の説明】
【００７０】
100…チップセット、110…ポート制御部、120…クロスバスイッチ部、130…ノード設定制御部、131…レジスタアクセスインタフェース、140…システム設定制御部141…管理バス、150…受信リンク、155…送受信リンク、160…送信リンク、200…受信キュー、201…受信キュー先頭ポインタ、202…先頭エントリ抹消信号、210…送信キュー、220…TxID逆引きテーブル、230…アドレス逆引きテーブル、231…ベースアドレス、232…アドレス範囲、240…要求／応答逆引きテーブル、250…区画初期化部、251…区画初期化ビットマップ、260…アドレス変換部、261…ベースアドレス、262…アドレス範囲、263…変換後ベースアドレス、300…逆引きモード、310…区画識別子、311…区画識別子抽出マスク、320…要求／応答種別、325…Tx種別、330…パケット、340…宛先NodeID、350…TxID、351…発行元NodeID、352…発行元内識別子、360…アドレス、361…アドレス使用部、362…アドレス未使用部、363…変換後アドレス、364…オフセット、370…データ長、380…ヘッダ部、390…データ部、400…プロセッサ、401…プロセッサコア、410…IOハブ、411…IOバス、412、413…IOカード、414…IOデバイス、415…IOブリッジ、420…メモリコントローラ、421…メモリ、430…設定コンソール、440…IOアドレス変換部、442…IOアドレス変換アダプタ、450…ゲストアドレス、451…ホストアドレス、452…ベースアドレス、453…変換後ベースアドレス、454…オフセット、455…要求者ID、456…アドレス範囲。
【図１】
2008165556.tif 000003
【図２】
2008165556.tif 000004
【図３】
2008165556.tif 000005
【図４】
2008165556.tif 000006
【図５】
2008165556.tif 000007
【図６】
2008165556.tif 000008
【図７】
2008165556.tif 000009
【図８】
2008165556.tif 000010
【図９】
2008165556.tif 000011
【図１０】
2008165556.tif 000012
【図１１】
2008165556.tif 000013
【図１２】
2008165556.tif 000014
【図１３】
2008165556.tif 000015
【図１４】
2008165556.tif 000016
【図１５】
2008165556.tif 000017
【図１６】
2008165556.tif 000018
【図１７】
2008165556.tif 000019
【図１８】
2008165556.tif 000020
【図１９】
2008165556.tif 000021
【図２０】
2008165556.tif 000022
【図２１】
2008165556.tif 000023
【図２２】
2008165556.tif 000024
【図２３】
2008165556.tif 000025