(57)【要約】      （修正有）【課題】マルチノードシステムのノード故障に対応可能なコヒーレント共有メモリを提供する。【解決手段】複数のノードで構成されるシステムにおいて、システムはファブリックメモリコントローラ及び１又は複数のノードを含む。ファブリックメモリコントローラは、ノードの故障にさえも応えて、ロードストアセマンティクスを用いて各共有メモリ領域がアクセス可能になるように、各ノードの共有メモリ領域へのアクセスを管理する。システムは、各ノードメモリを含んで構成されるグローバルメモリを含み、ノードメモリの各共有メモリ領域は、ファブリックメモリコントローラによってグローバルメモリにマッピングされる。【選択図】図２
2015127949.tif 000002
【特許請求の範囲】
【請求項１】
複数のクラスタにわたるコヒーレント共有メモリのための装置であって、
ファブリックメモリコントローラと、
１又は複数のノードと、
グローバルメモリと
を備え、
前記ファブリックメモリコントローラは、前記ノードの故障にさえも応えて、各共有メモリ領域がロードストアセマンティクスを用いてアクセス可能になるように、各ノードの共有メモリ領域へのアクセスを管理し、
各共有メモリ領域は、前記ファブリックメモリコントローラによって前記グローバルメモリにマッピングされる装置。
【請求項２】
前記ファブリックメモリコントローラは、前記１又は複数のノード内に位置付けられる請求項１に記載の装置。
【請求項３】
前記ロードストアセマンティクスは、前記１又は複数のノードの間の通信を可能にする請求項１又は２に記載の装置。
【請求項４】
前記ファブリックメモリコントローラは、前記グローバルメモリが前記１又は複数のノードのステータスに関連してアクセス可能になるように、メモリ複製をサポートする請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記ファブリックメモリコントローラは、前記グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記グローバルメモリにわたる全てのＲＡＩＤスキームをサポートする請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記装置は、バックアップファブリックメモリコントローラを含み、
前記バックアップファブリックメモリコントローラは、第１の前記ファブリックメモリコントローラの故障の場合に使用される請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記ファブリックメモリコントローラの故障に応じて、機能しない前記ファブリックメモリコントローラのコンテンツは、他のファブリックメモリコントローラに転送される請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しない前記メモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送される請求項１から７のいずれか一項に記載の装置。
【請求項９】
支援型コヒーレント共有メモリのためのシステムであって、
部分的にコヒーレントなメモリと、
ファブリックメモリコントローラと
を備え、
前記部分的にコヒーレントなメモリは、複数のクラスタからの複数の共有メモリ領域を含み、各クラスタの独立したフォールトドメインは、維持され、
前記ファブリックメモリコントローラは、ロードストアセマンティクスを通じた前記部分的にコヒーレントなメモリへのアクセスを可能にするシステム。
【請求項１０】
前記複数の共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、Ｉ／Ｏスタック、又はそれらの任意の組み合わせを通じてアクセスされる請求項９に記載のシステム。
【請求項１１】
前記複数のクラスタは、前記複数の共有メモリ領域に格納されたデータにアクセスし、前記複数の共有メモリ領域からの前記データをローカルキャッシュにローカルにキャッシュする請求項９又は１０に記載のシステム。
【請求項１２】
前記部分的にコヒーレントなメモリの前記複数のクラスタは、１又は複数の強制型ネットワーキングインターフェースコントローラを用いて接続される請求項９から１１のいずれか一項に記載のシステム。
【請求項１３】
複数のクラスタにわたるコヒーレント共有メモリの方法であって、
複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする段階であって、前記複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である段階と、
ソフトウェア支援メカニズムを用いて、前記複数のクラスタにわたるデータコヒーレンシを保証する段階と、
ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する段階と
を備える方法。
【請求項１４】
前記ファブリックメモリコントローラは、前記複数のクラスタを通じて分散される請求項１３に記載の方法。
【請求項１５】
前記ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする請求項１３又は１４に記載の方法。
【請求項１６】
フォールト分離境界は、各クラスタに対する前記独立した複数のフォールトドメインを可能にする請求項１３から１５のいずれか一項に記載の方法。
【請求項１７】
複数のクラスタにわたるコヒーレント共有メモリのための装置であって、
ロードストアセマンティクスを用いて、クラスタの各ノードの複数のメモリモジュールへのアクセスを管理する手段と、
前記複数のメモリモジュールの複数の共有メモリ領域をグローバルメモリにマッピングする手段と
を備える装置。
【請求項１８】
複数のメモリモジュールへのアクセスを管理する前記手段は、前記ノード内に位置付けられる請求項１７に記載の装置。
【請求項１９】
前記ロードストアセマンティクスは、１又は複数のノードの間の通信を可能にする請求項１７又は１８に記載の装置。
【請求項２０】
前記グローバルメモリが前記ノードのステータスにかかわらずアクセス可能になるように、メモリ複製を可能にする手段
を備える請求項１７から１９のいずれか一項に記載の装置。
【請求項２１】
前記グローバルメモリの任意の部分が故障の場合に再構成されることができるように、前記グローバルメモリにわたる全てのＲＡＩＤスキームのための手段
を備える請求項１７から２０のいずれか一項に記載の装置。
【請求項２２】
複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする手順であって、前記複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である手順と、
ソフトウェア支援メカニズムを用いて、前記複数のクラスタにわたるデータコヒーレンシを保証する手順と、
ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する手順と
をコンピュータに実行させるためのプログラム。
【請求項２３】
前記ファブリックメモリコントローラは、前記複数のクラスタを通じて分散される請求項２２に記載のプログラム。
【請求項２４】
前記ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする請求項２２又は２３に記載のプログラム。
【請求項２５】
フォールト分離境界は、各クラスタに対する前記独立した複数のフォールトドメインを可能にする請求項２２から２４のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、マルチノードシステムに関する。より具体的には、本開示は、マルチノードシステム内の共有メモリに関する。
【背景技術】
【０００２】
マルチノードシステムは、複数のノードを含み得る。その種のシステムは、これらに限定されないが、ネットワーク、ラックサーバシステム、ブレードサーバ、及びその類のものを含む。場合によって、各ノードは、ノードの中のプロセッシング又は入出力（Ｉ／Ｏ）デバイスの間のハードウェアキャッシュコヒーレンシを有する１又は複数のラックの実質的な部分をスパンする大規模な対称型マルチプロセッシング（ＳＭＰ）ノードであり得る。キャッシュコヒーレンシの結果として、大規模なＳＭＰシステムは、任意の計算デバイスによるメモリロードストアセマンティクスを通じて直接的にアクセス可能なアプリケーションデータを格納するために、大きなメモリ設置面積を有するが、複数のコンピューティングデバイスの間のきめの細かい負荷バランシングの問題を解決するために、十分な計算リソースを利用できる。そのシステムは、複数のノードが粗粒子レベルで複数のタスクを調整できる、複数のより小さいＳＭＰシステムから構成される疎結合（ＬＣ）システムであり得る。
【図面の簡単な説明】
【０００３】
以下の詳細な説明は、開示された主題の多数の目的及び特徴の特定の例を含む添付の図面を参照することによって、よりよく理解されてよい。
【図１】複数のマルチノードシステムモデルのブロック図である。
【図２】部分的にコヒーレントなシステムの例である。
【図３】グローバルメモリマップの例である。
【図４】複数のクラスタにわたるコヒーレント共有メモリのためのプロセスフロー図である。
【図５】プールされた複数のメモリリソースにアクセスし得るノード５００のブロック図である。
【０００４】
本開示及び図面を通して、同様のコンポーネント及び特徴を言及するために、同一の数字が使用される。１００番台の数字は、最初に図１に表れる特徴を参照し、２００番台の数字は、最初に図２に表れる特徴を参照し、他も同様である。
【発明を実施するための形態】
【０００５】
ＳＭＰシステムは、単一のフォールトドメインを含み、システムの任意のコンポーネント又はソフトウェアのピースにおけるフォールトがシステム全体を機能しなくさせる。例えば、ＳＭＰノードが機能しない場合、ＳＭＰノードを含むシステム全体が機能しない。逆に、ＬＣシステムは、独立した複数のフォールトドメインを通じて、任意のコンポーネント又はソフトウェアのピースの故障を封じ込めるものである。したがって、ＬＣシステムの中の影響を受けるサーバ又はコンポーネントはクラッシュし得るが、他のサーバ又はコンポーネントは、故障が発生していないかのように動作し続ける。しかし、ＬＣシステムの中のメモリは、ロード／ストアセマンティクスを通じて共有されない。むしろ、複数のメッセージは、ＬＣシステムの中でのメモリ共有を達成するために、Ｉ／Ｏドライバを通じて送信される。メモリ共有を可能にするＩ／Ｏドライバの使用は、複数のＩ／Ｏドライバに関連するより高いレイテンシのために、複数のＳＭＰシステムに比べて、ＬＣシステムのパフォーマンスを低下させ得る。
【０００６】
ここで説明される複数の実施形態は、複数のクラスタにわたるコヒーレント共有メモリに関する。複数の実施形態において、ファブリックメモリコントローラは、１又は複数のノードに結合される。ファブリックメモリコントローラは、ロードストアセマンティクスを用いて、各ノード内の複数のメモリモジュールへのアクセスを管理する。各ノード上のメモリモジュールは、各ノードの共有メモリ領域内に含まれる。複数の共有メモリ領域は、ノードが機能しないときでさえ、アクセス可能である。さらに、ファブリックメモリコントローラは、グローバルメモリを管理し、複数のノードの各共有メモリ領域は、ファブリックメモリコントローラによってグローバルメモリにマッピングされてよい。結果として、キャッシュ可能なグローバルメモリが提供される。キャッシュ可能なグローバルメモリは、各ノード又はクラスタの独立した複数のフォールトドメインを維持しながら、複数のノード及び複数のクラスタをわたってデータ整合性を供給できる。さらに、各クラスタがその別個のフォールトドメインを維持しながら、グローバルメモリは、ローカルメモリのようなロードストアセマンティクスを用いて、アクセス可能かつキャッシュ可能である。さらに、共有メモリは、信頼性、可用性、及び保守性（ＲＡＳ）機能性を提供でき、全てのＲＡＩＤ（Redundant Array of Independent Disks）スキームを含む。本技術は、高密度ラックスケールアーキテクチャ（ＲＳＡ）とともに使用されてもよい。
【０００７】
複数の実施形態において、各ノードは、１又は複数のプロセッシングデバイス（例えば、複数のＣＰＵ）、キャッシュ可能又はキャッシュ不可能な及び揮発性又は不揮発性のメモリ、並びに１つのＢＩＯＳイメージ又は１つのオペレーティングシステム／仮想マシンモニタイメージを実行する１又は複数のＩ／Ｏデバイスを含む。このように、各ノードは、封じ込められるフォールトドメインである。ノードの中の任意のハードウェアコンポーネントにおける又はノード上で実行するソフトウェアの中における任意の故障は、最悪のケースで、そのノードを停止させるだけである。
【０００８】
下記の説明及び請求項において、用語「結合」及び「接続」は、それらの派生語とともに使用され得る。これらの用語は、互いに対して同義語であることを意図するものではないことが理解されるべきである。むしろ、特定の複数の実施形態において、「接続」は、２又はより多い要素が互いに直接的な物理的又は電気的なコンタクト状態にあることを示すために使用されてよい。「結合」は、２又はより多い要素が直接的な物理的又は電気的なコンタクト状態にあることを意味してよい。しかし、「結合」は、２又はより多い要素が互いに直接的なコンタクト状態にないが、依然として互いに協働又は作用することを意味してもよい。しかし、用語「疎結合」は、独立した複数のフォールトドメインを有するシステムに言及する。結果として、用語「結合」の使用は、疎結合システムとして知られているものを変更又は修正しない。
【０００９】
いくつかの実施形態は、ハードウェア、ファームウェア、及びソフトウェアのうちの１つ又は組み合わせで実装されてよい。いくつかの実施形態は、ここで説明される複数のオペレーションを実行するコンピューティングプラットフォームによって読み取られて実行され得る、機械可読媒体上に格納された複数の命令として実装されてもよい。機械可読媒体は、例えばコンピュータのような機械によって可読な形で情報を格納又は送信するための任意のメカニズムを含んでよい。例えば、機械可読媒体は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスクストレージ媒体、光学ストレージ媒体、複数のフラッシュメモリデバイスなどを含んでよい。
【００１０】
実施形態は、実装又は例である。本明細書における「実施形態」、「一実施形態」、「いくつかの実施形態」、「様々な実施形態」、又は「他の実施形態」という言及は、その複数の実施形態に関連して説明された特定の特徴、構造、又は特性が、本発明の全ての実施形態ではなく、少なくともいくつかの実地形態に含まれることを意味する。「実施形態」、「一実施形態」、又は「いくつかの実施形態」の様々な出現は、必ずしも全て同一の実施形態に関することでない。ある実施形態の要素又は態様は、他の実施形態の要素又は態様に組み合わされることができる。
【００１１】
ここで説明及び示される全てのコンポーネント、特徴、構造、特性などは、特定の実施形態又は複数の実施形態に含まれる必要があるとは限らない。例えば、コンポーネント、特徴、構造、又は特性が含まれ「てよい」、「るかもしれない」、「ることができる」、又は「得る」と本明細書が述べる場合、その特定のコンポーネント、特徴、構造、又は特性は、含まれることが必要とされない。本明細書又は請求項が「一の」又は「ある」要素と言及する場合、それは、その要素が１つだけあることを意味しない。本明細書又は請求項が、「追加の」要素と言及する場合、それは、その追加の要素が１より多くあることを除外しない。
【００１２】
いくつかの実施形態は特定の実装を参照して説明されるが、いくつかの実施形態に従って、他の実装が可能であるということに注意すべきである。さらに、図面に示され及び／又はここで説明される回路要素又は他の特徴の配置及び／又は順序は、示された及び説明された特定の方法で配置される必要はない。いくつかの実施形態に従って、多くの他の配置が可能である。
【００１３】
図に示される各システムにおいて、表される複数の要素が異なる及び／又は同様であり得ることを示唆するために、場合によって、複数の要素が同一の参照番号又は異なる参照番号をそれぞれ有してよい。しかし、要素は、異なる実装を有し、ここで示され又は説明されるシステムのいくつか又は全てと連携するために十分に柔軟性があってよい。図に示される様々な要素は、同一でも又は異なっていてもよい。どの１つが第１の要素と称され、どれが第２の要素と呼ばれるかは任意である。
【００１４】
図１は、複数のマルチノードシステムモデルのブロック図１００である。複数のマルチノードシステムモデルは、部分的にコヒーレントなシステム１０２、ＳＭＰシステム１０４、及びＬＣシステム１０６を含む。数個のサーバが各システムの中に示されるが、各システムは、１つのサーバと見なされてよい。ＳＭＰシステム１０４において、各ノード１０８は、ノードコントローラ（ＮＣ）１１０に接続される。ＮＣ１１０は、各ノード１０８がスケールインターコネクト１１２に接続することを可能にする。スケールインターコネクト１１２は、ＳＭＰシステム１０４の各ＮＣ１１０の間の通信を可能にするために使用されてよい。したがって、ＳＭＰシステム１０４は、共有メモリを有するノードコントローラ型である。ＳＭＰシステムは、完全にコヒーレントであり、高速分散ロックマネージャを含む。しかし、ＳＭＰシステム１０４は、単一のフォールトドメインである。言い換えれば、任意のノード１０８又はノードコントローラ１１０の中で発生する単一のフォールトは、システム全体が機能しなくなる、クラッシュする、又は利用不可能になる原因となる。
【００１５】
ＬＣシステム１０６において、各ノード１１４は、ネットワークインターフェースカード（ＮＩＣ）１１６に接続される。場合によって、ＮＩＣ１１６は、インフィニバンドホストバスアダプタ（ＩＢＨＢＡ）のようなリモートダイレクトメモリアクセス（ＲＤＭＡ）可能なイーサネット（登録商標）デバイス又は他のＩ／Ｏコントローラである。ＮＩＣ１１６は、各ノード１１４がＲＤＭＡインターコネクト１１８に接続することを可能にする。ＲＤＭＡインターコネクト１１８は、ＬＣシステム１０６にわたってメモリ共有を可能にするために、各ＮＩＣ１１６がメッセージを送信することを可能にする。したがって、ＬＣシステム１０６は、独立した複数のフォールトドメインを含む。しかし、メモリは、ＬＣシステム１０６において共有されない。さらに、ＬＣシステム１０６にわたって負荷のバランスをとることは難しく、ＬＣシステム１０６は、分散ロックマネージャの拡張性を有する。
【００１６】
部分的にコヒーレントなシステム１０２は、複数の強化型ノードコントローラ（ｅＮＣ）１２２のうちの１つにそれぞれ接続された複数のノード１２０を含む。各ｅＮＣ１２２は、そのそれぞれのノード１２０をスケールインターコネクト１２４に接続する。部分的にコヒーレントなシステム１０２は、独立した複数のフォールトドメインで、マルチノードシステムにわたってメモリを共有する。部分的にコヒーレントなシステム１０２は、以下に説明されるようなソフトウェア支援の使用を通じて、部分的にコヒーレントである。さらに、部分的にコヒーレントなシステム１０２は、高速分散ロックマネージャを含む。
【００１７】
図２は、部分的にコヒーレントなシステム１０２の例である。部分的にコヒーレントなシステム１０２は、ノード２０２及びノード２０４を含む。ノード２０２は、ファブリックメモリコントローラ（ＦＭＣ）２０６を含み、ノード２０４は、ＦＭＣ２０８を含む。さらに、ノード２０２は、ノードメモリ２１４及びローカルメモリ２１８を含む。ノード２０４は、ノードメモリ２１６及びローカルメモリ２２０を含む。各ＦＭＣ２０６及び２０８は、図２に示されるようなそれらのそれぞれのノードを有する別個のコンポーネントであってよい。いくつかの実施形態において、ＦＭＣ２０６及び２０８は、マルチノードシステムの各ノード内で（複数の）ＣＰＵに統合されてよい。したがって、いくつかの実施形態において、ＦＭＣ２０６は、ノード２０２のＣＰＵ２１０Ａ及びＣＰＵ２１０Ｂに統合されてよく、ＦＭＣ２０８は、ノード２０４のＣＰＵ２１２Ａ及びＣＰＵ２１２Ｂに統合されてよい。ＣＰＵ２１０Ａ、２１０Ｂ、２１２Ａ、及び２１２Ｂは、ＳＭＩ３と同様の（システムメモリマップのための）メモリセマンティクスの組み合わせであるＰＬＭ（プラッツマウス）プロトコル、及びブロックタイプメモリアクセスのための（ＰＣＩｅのような）Ｉ／Ｏプロトコルを用いて、グローバルメモリにそれぞれアクセスする。グローバルメモリは、ノードメモリ２１４及びノードメモリ２１６を含む。複数の実施形態において、グローバルメモリは、共有メモリ又はブロックメモリとしてアクセスされてよい。グローバルメモリは、複数の領域に分割されてよい。さらに、ＦＭＣ２０６及びＦＭＣ２０８は、フォールト分離境界２０７Ａ及びフォールト分離境界２０７Ｂをそれぞれ実装し、グローバルメモリは、そのローカルノードがダウンしたときでさえ、他の複数のノードによってアクセスされることができる。
【００１８】
プラッツマウス（ＰＬＭ）リンクは、各ＣＰＵをＦＭＣに接続するために使用されてよい。したがって、ノード２０２は、ＣＰＵ２１０Ａ及びＣＰＵ２１０ＢをＦＭＣ２０６に接続するために、複数のＰＬＭリンク２２２のペアを含む。同様に、ノード２０４は、ＣＰＵ２１２Ａ及びＣＰＵ２１２ＢをＦＭＣ２０８に接続するために、複数のＰＬＭリンク２２４のペアを含む。ＰＬＭリンク２２６Ａ及びＰＬＭリンク２２６Ｂは、ノード２０２及びノード２０４をスイッチ２２８にそれぞれ接続するために使用されてもよい。各ＰＬＭリンクは、ＳＭＩ３のような随意的なディレクトリ情報を有するメモリセマンティクス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルのようなロードストア機能性を有するＩ／Ｏプロトコルの両方をサポートできる。複数の実施形態において、複数のピンの共通セットを用いてメモリセマンティクス及びＩ／Ｏプロトコルをサポートできる任意のリンクが、ノードをＳＭＣに接続するために使用されることができる。さらに、複数のピンの共通セットを用いてメモリセマンティクス及びＩ／Ｏプロトコルをサポートできる任意のリンクが、ＣＰＵをＦＭＣに接続するために使用されることができる。さらに、複数のＰＬＭリンクは、ＰＣＩｅアーキテクチャの物理レイヤを用いて実装されてよい。
【００１９】
グローバルメモリは、スイッチ２２８を介してアクセスされてよい。スイッチ２２８は、マルチノードシステム内の複数のノードの複数のＦＭＣを接続するために使用されてよい。場合によって、スイッチ２２８は、ストームレイク（ＳＴＬ）スイッチ、スイッチとして使用される他のＦＭＣ、又はダイレクトアタッチメカニズムであってよい。スイッチは、１又は複数のノードの間のグローバルデータの要求を送るために使用されてよい。いずれにしても、スイッチ２２８は、グローバルメモリをわたって低レイテンシメッセージセマンティクスを送信するために使用される。複数の実施形態において、複数のＦＭＣは、複数のＰＬＭリンクを直接的に用いて又は他のＦＭＣスイッチを通じて、互いに接続される。さらに、複数の実施形態において、複数のＦＭＣは、ＳＴＬスイッチを通じて、ＳＴＬのようなネットワーキングスタックを超えてＰＬＭプロトコルをトンネリングすることによって接続されてよい。
【００２０】
スイッチ及び複数のＰＬＭリンクを介して接続された複数のノードの複数のＦＭＣの結果として、グローバルメモリは、共有され、ロードストアセマンティクスを介してアクセスされることができる。ノードにローカルな計算について、ノードは、これらの計算のために、それ自身の予約されたメモリにアクセスしてよい。複数のノード上に存在するグローバルメモリは、同一の特性のメモリを有してよく、各ノードは、このメモリ上で複数のオペレーションを実行できる。さらに、複数のノードは、複数のポリシを通じてグローバルメモリの特定の複数のピースに割り当てられることができ、複数のポリシは、各ノード又は複数のノードの複数のＦＭＣを接続するスイッチによって保持されてよい。
【００２１】
ＲＭＤＡを通じてメッセージを送信することに代えて、ロードストアセマンティクスは、ＦＭＣを通じて複数のノードの間で通信するために使用される。各ＦＭＣは、フォールト分離境界を実装し、ノードの複数のＣＰＵが機能しなくなったとしても、各ノードのグローバルメモリは、ＦＭＣを通じてアクセスされてよい。上述のとおり、共有メモリは、ＳＴＬネットワーキングスタック又はＰＬＭリンクを通じてアクセス可能であってよい。複数のノードの各ＦＭＣは、ロード／ストアセマンティクスを用いて、複数のノードの間で複数のメッセージを送信してよいが、複数のノードのトラフィックを妨害しない。
【００２２】
ＦＭＣの複数のフォールト分離境界は、様々な技術を用いて実装されてよい。いくつかの実施形態において、ハードウェアは、各ＣＰＵが同一のノード及びシステム内で他の複数のＣＰＵから独立することを保証するために使用されてよい。このように、独立した複数のＣＰＵの故障は、他の複数のＣＰＵのオペレーションに影響しない。他の複数の実施形態において、ＣＰＵの故障は、他の複数のＣＰＵが機能しなくなる原因になり得るが、機能しないノード内のグローバルメモリは、ノードは、他の複数のノードの処理に影響することなく機能しないことができるように、電力が供給されてアクティブであってよく、機能しないノードのメモリは、アクセス可能に維持される。
【００２３】
図３は、グローバルメモリマップ３００の例である。グローバルメモリマップ３００は、複数のノードにわたるグローバルメモリへのアクセスを調整するために、ルータ又はスイッチとして動作する１又は複数のＦＭＣによって見られるものとして示される。グローバルメモリマップの複数の部分は、ノード３０２及びノード３０４上に格納されてよい。グローバルメモリは、複数の共有メモリ領域３０６に分割されてよい。グローバルメモリは、図２に示されるようなＦＭＣによって管理されてよい。したがって、グローバルメモリの各ノード３０２及びノード３０４は、ＦＭＣによって、グローバルメモリマップ３００によって示されるようにグローバルメモリにマッピングされる。具体的には、ノード３０２の共有メモリ領域３０８は、１からｎの範囲の任意の数の共有メモリ領域を含んでよい。ノード３０４の共有メモリ領域３１０は、１からｐの範囲の他の数の共有メモリ領域を含んでよい。そして、グローバルメモリは、１からｎの範囲の共有メモリ領域３０８、及び１からｐの範囲の共有メモリ領域３１０を含む。各共有メモリ領域は、１つのＦＭＣに物理的に取り付けられてよく、又は複数のＦＭＣにわたってストライプされてよい。さらに、メモリ領域のサイズは、可変又は固定であってよい。複数の実施形態において、各領域は、ページレベルの粒度に維持されてよく、メモリ領域全体は、メモリ管理スキームの一部として、ページ化されることができる。図２に示されるように、各ノードは、ＦＭＣによってアクセス可能でなく、グローバルメモリマップ３００によって表されないローカルメモリを含んでよい。グローバルクラスタメモリマップ３００は、ローカルコヒーレントメモリ領域３１４及びローカルコヒーレントメモリ領域３１６を、ロードストアファブリックを通じてアクセス可能でない各個々のノードのプライベートメモリとして認識する部分３１２を含む。
【００２４】
ローカルコヒーレントメモリ領域３１４及び３１６は、メッセージ領域として使用されてよい。したがって、ローカルコヒーレントメモリ領域３１４及び３１６のそれぞれは、メッセージ領域３１８及びメッセージ領域３２０をそれぞれ含む。ローカルのメッセージ領域３１８及びメッセージ領域３２０は、複数のノードにわたってメモリを共有するために、スイッチ又はルータとして動作するＦＭＣによって直接的にアクセス可能でないが、ＦＭＣは、メッセージ領域３２２に間接的にアクセスしてよい。
【００２５】
共有メモリ領域３０８及び共有メモリ領域３１０は、グローバルクラスタメモリマップ３００として、同一のアドレスレンジを有する複数のノードのそれぞれに認識可能である。各共有メモリ領域は、複数のノードの各セットに対する異なる複数のアクセス権を有してよい。複数のアクセス権は、複数のポリシのセットに基づいてよい。さらに、各共有メモリ領域のアドレスレンジ及び任意の複数のアクセス権は、複数のレンジレジスタのセットによって強制される。場合によって、複数の領域が（複数の）ＦＭＣにおける複数の（スーパー）ページである場合に、各共有メモリ領域のアドレスレンジ及び複数のアクセス権は、メモリに存在するページテーブルによって実装されてよい。ノードが複数の適切なアクセス権を有する場合、グローバルメモリは、任意のノードにおいてキャッシュ可能である。しかし、グローバルメモリを管理する１又は複数のＦＭＣは、複数のノードの間に、ハードウェアベースのキャッシュコヒーレンシメカニズムを強制しなくてよい。代わりに、データコヒーレンシは、複数のノード上で実行するソフトウェアによって強制される。
【００２６】
メッセージ領域３１８及びメッセージ領域３２０は、ノード３０２及びノード３０４にわたるデータコヒーレンシを保証するために使用されることができる。各ノードは、メモリの特定の部分へのアクセスを有する他の複数のノードにメッセージをブロードキャストでき、メモリのその特定の部分のステータスに関する情報を要求できる。例えば、第１のノードは、メモリの特定の領域に属するデータを有する場合、メモリのその領域に属するデータを有する任意のノードがメモリのその領域をアップデートすることを要求できる。メモリのその領域を有する任意のノードは、メッセージに応答でき、メモリのその領域が更新されて置き換えられたことを、要求している第１のノードに通知できる。場合によって、グローバルメモリにアクセスするためのメッセージの送信は、ダイレクトメモリアクセスであるソフトウェアベースのハンドシェイクであり、データへアクセスするためにＩ／Ｏスタックを使用しない。
【００２７】
グローバルメモリは、グローバルメモリの中のデータを取り出してアップデートできる複数のノード上の配置を含むことができ、複数のノードの間にハンドシェイクを用いるメモリのクラスタリングモデルが存在する。さらに、複数のＦＭＣは、各ノードに対する複数の適切なアクセス権を保証でき、故障している任意のノードのデータへのアクセスを提供できる。このアクセスは、ロード／ストアセマンティクス及びハードウェアを用いて、Ｉ／Ｏソフトウェアスタックの遅延なしに生じる。さらに、メモリは、ブロックアクセスではなく、直線的に、バイト毎に、フラットメモリのようにアクセスされることができる。場合によって、複数の共有メモリ領域は、キャッシュ可能である。さらに、場合によって、複数のメッセージ領域は、複数のノード上に格納されたデータに関する複数のメッセージを送信するために複数のＦＭＣを用いることに代えて、複数のノードの間でデータを送信するために使用されることができる。
【００２８】
図４は、複数のクラスタにわたるコヒーレント共有メモリのためのプロセスフロー図４００である。ブロック４０２において、キャッシュ可能なグローバルメモリがビルドされる。場合によって、キャッシュ可能なグローバルメモリは、複数のクラスタにわたる複数の共有メモリ領域を用いることが可能にされ、複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である。ブロック４０４において、データコヒーレンシは、ソフトウェア支援メカニズムを用いて、複数のクラスタにわたって保証される。ブロック４０６において、独立した複数のフォールトドメインは、ファブリックメモリコントローラの使用を通じて、各クラスタに対して維持される。
【００２９】
いくつかの実施形態において、ファブリックメモリコントローラは、マルチノードシステムにわたる信頼性、可用性、及び保守性（ＲＡＳ）の特徴を可能にするために使用される。企業向けであるために、ＦＭＣは、他の複数のＦＭＣにわたるＲＡＩＤの様々な形式のようなメモリの複製をサポートする。このように、ＦＭＣ又はその関連するグローバルメモリがダウンした場合に、複製されたメモリのコンテンツを再構成する能力が、利用可能である。複製は、Ｋ−ａｒｙｌ複製であってよく、全ての書き込みは、（ｋ−１）の追加のコピーに複製される。アドレスマップレンジレジスタ（又はページテーブル）は、（複数の）バックアップロケーションとともに、プライマリロケーションを格納する。複数のＲＡＩＤスキームについては、ホストＦＭＣは、他の複数のアドレス、及び共にＲＡＩＤされた複数のＦＭＣを保持する。プライマリロケーションをホストするＦＭＣは、（複数の）バックアップロケーションをホストする（複数の）ＦＭＣのそれぞれにおける書き込みを複製する。ＲＡＩＤされた複数の構成については、ホストするＦＭＣは、パリティを格納する複数のＲＡＩＤロケーションに、排他的論理和の情報を送信する。
【００３０】
書き込み場合、書き込まれたアドレスロケーションに対するプライマリであるＦＭＣは、複数のバックアップロケーションに複数の書き込みを送信する。いくつかの実施形態において、ＦＭＣは、パリティを格納する（複数の）ＦＭＣに対するＲＡＩＤ排他的論理和ロケーションに複数の書き込みを送信する。複数のバックアップＦＭＣは、プライマリＦＭＣに書き込み完了を送信し返す。複数の書き込みが行われたとしても、全ての書き込みが完了するまで、書き込みは、プライマリＦＭＣにおいて完了されたと見なされない。プライマリＦＭＣは、それが書き込みを送信する他の（複数の）ＦＭＣのそれぞれに対するタイマを保持する。完了が各宛先ＦＭＣから受信されない場合、プライマリＦＭＣは、タイムアウトしてよい。さらに、プライマリＦＭＣは、別のパスを用いてトランザクションをやり直すことを試してよく、及び／又は必要な回復動作を行うためにシステムソフトウェアに通知する。
【００３１】
複製が利用可能な場合、読み取りは、プライマリＦＭＣ又はバックアップＦＭＣのいずれかによって提供されてよい。読み取り要求を生成するノードに付随するＦＭＣは、タイマを保持する。タイムアウトによって完了が受信されない場合、それは、いくつかの予め定められた回数の間、同一のＦＭＣ又はバックアップＦＭＣへの別のパスを試みてよい。それでもトランザクションがタイムアウトする場合、それは、データの返信を壊してよい。ＦＭＣは、必要な修正動作を行う又は単にエラーを記録するために、タイムアウトエラーをシステムソフトウェアに報告してもよい。複数の実施形態において、ＦＭＣ又はＦＭＣに付随するメモリモジュールが機能しない場合、コンテンツは、空きの容量を有する他のＦＭＣに転送されることができ、その結果、複数のレンジレジスタ（又は複数のページテーブルエントリ）が更新される。
【００３２】
図５は、プールされた複数のメモリリソースにアクセスし得るノード５００のブロック図である。ノード５００は、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、サーバ、又はブレードサーバなどであってよい。ノード５００は、高密度ラックスケールアーキテクチャ（ＲＳＡ）内のノードであってもよい。いくつかの例において、ノードは、マルチノードシステムをわたって他のノードに通信できる任意のデバイスである。したがって、いくつかの例において、マルチノードシステムは、複数のノードのネットワークであり、各ノードは、ネットワークにわたって通信できる任意のデバイスである。さらに、いくつかの例において、マルチノードは、ラックサーバシステムにおけるサーバである。
【００３３】
ノード５００は、格納された複数の命令を実行するように構成された中央処理ユニット（ＣＰＵ）５０２を含んでよい。ＣＰＵ５０２は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、又は任意の数の他の構成であることができる。場合によって、ＣＰＵ５０２及びノード５００の他の複数のコンポーネントは、システムオンチップ（ＳＯＣ）として実装されてよい。さらに、ノード５００は、１つより多いＣＰＵ５０２を含んでよい。ＣＰＵ５０２によって実行される複数の命令は、複数のノードにわたって複数のメモリリソースをプールすることを可能にするために使用されてよい。
【００３４】
ノード５００は、グラフィックスプロセッシングユニット（ＧＰＵ）５０４を含んでもよい。示されるように、ＣＰＵ５０２は、バス５０６を通じてＧＰＵ５０４に接続されてよい。しかし、いくつかの実施形態において、ＣＰＵ５０２及びＧＰＵ５０４は、同一のダイ上に位置付けられる。ＧＰＵ５０４は、ノード５００内で任意の数のグラフィックオペレーションを実行するために構成されてよい。例えば、ＧＰＵ５０４は、ノード５００のユーザに対して表示させるために、複数のグラフィックスイメージ、複数のグラフィックスフレーム、複数のビデオ、又はその類のものを描画又は操るように構成されてよい。しかし、場合によって、ノード５００は、ＧＰＵ５０４を含まない。
【００３５】
ＣＰＵ５０２は、バス５０６を通じてＣＰＵ入出力（Ｉ／Ｏ）に接続されてもよい。複数の実施形態において、ＣＰＵＩ／Ｏ５０８は、ＣＰＵ５０２がマルチノードシステムにおいてプールされたメモリにアクセスできるように使用される。ＣＰＵ５０２は、ノード５００内の専用のメモリを含まずに、プールされたメモリにアクセスできる。さらに、ＣＰＵＩ／Ｏ５０８は、トランスミッションコントロールプロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）並びにインフィニバンド（ＩＢ）のような複数のネットワークプロトコル及び通信を使用せずに、マルチノードシステム内にプールされたメモリにアクセスできる。複数の実施形態において、プラッツマウス（ＰＬＭ）リンク５１０のようなリンクは、シリアルリンク上で実行するメモリセマンティクスベースの複数のプロトコルを用いて、各ノードを共有メモリコントローラに接続するために使用される。Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）リンク５１２は、ＣＰＵ５０２をネットワークに接続するために使用されてよい。
【００３６】
ＣＰＵ５０２は、バス５０６を通じて、ノード５００を１又は複数のＩ／Ｏデバイス５１６に接続するように構成された入出力（Ｉ／Ｏ）デバイスインターフェース５１４に接続されてもよい。複数のＩ／Ｏデバイス５１６は、例えば、キーボード及びポインティングデバイスを含んでよく、ポインティングデバイスは、タッチパッド又はタッチスクリーンなどを含んでよい。複数のＩ／Ｏデバイス５１６は、ノード５００の複数のビルトインコンポーネントであってよく、又はノード５００に外部接続された複数のデバイスであってよい。ＣＰＵ５０２は、バス５０６を通じて、ノード５００を複数のディスプレイデバイス５２０に接続するように構成されたディスプレイインターフェース５１８にリンクされてもよい。複数のディスプレイデバイス５２０は、ノード５００のビルトインコンポーネントであるディスプレイスクリーンを含んでよい。複数のディスプレイデバイス５２０は、ノード５００に外部接続されたコンピュータモニタ、テレビ、又はプロジェクタなどを含んでもよい。
【００３７】
図５のブロック図は、ノード５００が図５に示された複数のコンポーネントの全てを含むことを示すことを意図するものではない。さらに、ノード５００は、詳細な特定の実装に応じて、図５に示されない任意の数の追加のコンポーネントを含んでよい。さらに、ノード５００は、図５に示されたものより少ないコンポーネントを含んでよい。例えば、ノード５００は、ＧＰＵ５０４、Ｉ／Ｏデバイスインターフェース５１４、又はディスプレイインターフェース５１８を含まなくてよい。
【００３８】
本技術は、独立した複数のフォールトドメインを維持しながら、キャッシュ可能なグローバルメモリを利用可能にする。グローバルメモリは、異なる複数のノード（例えば、データベース）の間の複数の共有データ構造体を格納するために使用されることができ、複数のノードの間の高速通信のために使用されることもできる。共有メモリが永続性である（すなわち、不揮発性メモリ（ＮＶＭ）の中にある）場合、データがすでにメモリの中にあるので、計画された又は計画されていないノードのダウンタイムの後の複数のレジュームオペレーション、及び複数のノードの間の複数のタスクの移行のための時間は、非常に速くなる。さらに、データ整合性がソフトウェアによって強制されるので、ノードが機能しない場合から回復するためのチェックポイントを確立するために使用されることができる修正されたキャッシュ可能なデータの明確な引き渡しがある。
【００３９】
本技術は、また、メモリ及びストレージレベルの弾力性を可能にするためにＲＡＳの複数の特徴を提供する。さらに、いくつかの実施形態において、メモリは、ストレージの代替であってよい。メモリが不揮発性メモリである場合、データベースの複数の部分がディスク又はソリッドステートドライブ（ＳＳＤ）からアップロードされないように、データベース全体は、メモリからマッピングされてよい。このように、データベースにアクセスする時間は減少される。場合によって、次の世代の不揮発性メモリは、ストレージを代替できるがメモリタイプのセマンティクスを用いてアクセスされる大きい容量を有する。さらに、本技術で説明された不揮発性メモリは、ストレージと同一の弾力性を維持する。不揮発性メモリは、何度も複製されることができる。このように、任意のＲＡＩＤスキームは、高いレベルの信頼性及びフォールトアイソレーションを提供するために実装されることができる。
【実施例１】
【００４０】
複数のクラスタにわたるコヒーレント共有メモリのための装置が、ここで提供される。装置は、ファブリックメモリコントローラ、１又は複数のノード、及びグローバルメモリを含む。ファブリックメモリコントローラは、ノードの故障にさえも応えて、各共有メモリ領域がロードストアセマンティクスを用いてアクセス可能になるように、各ノードの共有メモリ領域へのアクセスを管理する。各共有メモリ領域は、ファブリックメモリコントローラによってグローバルメモリにマッピングされる。
【００４１】
ファブリックメモリコントローラは、１又は複数のノード内に位置付けられてよい。さらに、ロードストアセマンティクスは、１又は複数のノードの間の通信を可能にする。ファブリックメモリコントローラは、１又は複数のノードのステータスに関連してグローバルメモリがアクセス可能になるように、メモリ複製をサポートしてもよい。さらに、ファブリックメモリコントローラは、グローバルメモリの任意の部分が故障の場合に再構成されることができるように、グローバルメモリにわたる全てのＲＡＩＤスキームをサポートしてよい。装置は、バックアップファブリックメモリコントローラを含んでよく、バックアップファブリックメモリコントローラは、第１のファブリックメモリコントローラの故障の場合に使用される。ファブリックメモリコントローラの故障に応じて、機能しないファブリックメモリコントローラのコンテンツは、他のファブリックメモリコントローラに転送されてよい。さらに、ファブリックメモリコントローラに付随するメモリモジュールの故障に応じて、機能しないメモリモジュールのコンテンツは、他のファブリックメモリコントローラ又はメモリモジュールに転送されてよい。
【実施例２】
【００４２】
支援型コヒーレント共有メモリシステムが、ここで説明される。システムは、部分的にコヒーレントなメモリ及びファブリックメモリコントローラを含む。部分的にコヒーレントなメモリは、複数のクラスタからの複数の共有メモリ領域を含み、各クラスタの独立したフォールトドメインは、維持され、ファブリックメモリコントローラは、ロードストアセマンティクスを通じた部分的にコヒーレントなメモリへのアクセスを可能にする。
【００４３】
複数の共有メモリ領域は、プラッツマウスリンク、ネットワーキングスタック、Ｉ／Ｏスタック、又はそれらの任意の組み合わせを通じてアクセスされてよい。さらに、複数のクラスタは、複数の共有メモリ領域に格納されたデータにアクセスし、複数の共有メモリ領域からのデータをローカルキャッシュにローカルにキャッシュできる。部分的にコヒーレントなメモリの複数のクラスタは、１又は複数の強制型ネットワーキングインターフェースコントローラを用いて接続されてよい。さらに、各ノードは、他の複数のノードによって直接的にアクセス可能でないローカルメモリを維持できる。共有メモリ領域は、集中させられてよく、各クラスタの独立したフォールトドメインは、ファブリックメモリコントローラによって実装されたフォールト分離境界を通じて維持されてよい。
【実施例３】
【００４４】
複数のクラスタにわたるコヒーレント共有メモリの方法が、ここで説明される。方法は、複数のクラスタにわたる複数の共有メモリ領域を用いたキャッシュ可能なグローバルメモリを利用可能にする段階を含み、複数の共有メモリ領域は、ロードストアセマンティクスを用いてアクセス可能である。方法は、また、ソフトウェア支援メカニズムを用いて、複数のクラスタにわたるデータコヒーレンシを保証する段階を含む。さらに、方法は、ファブリックメモリコントローラの使用を通じて、各クラスタに対する独立した複数のフォールトドメインを維持する段階を含む。
【００４５】
ファブリックメモリコントローラは、複数のクラスタを通じて分散されてよい。さらに、ロードストアセマンティクスは、各クラスタが他のクラスタと直接的に通信することを可能にする。さらに、フォールト分離境界は、各クラスタに対する独立した複数のフォールトドメインを可能にしてよい。
【００４６】
前述の説明において、開示された主題の様々な態様が説明された。説明のために、特定の数、システム、及び構成が、主題の完全な理解を提供すべく説明された。しかし、本開示を利用できる当業者にとって、主題が特定の詳細なしで実施され得ることが明らかである。他の例では、周知の特徴、コンポーネント、又はモジュールは、開示された主題をわかりにくくしないように、省略され、単純化され、組み合わせられ、又は分離された。
【００４７】
開示された主題の様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせで実装されてよく、命令、関数、プロシージャ、データ構造体、ロジック、アプリケーションプログラム、シミュレーション、エミュレーション、及び設計のファブリケーションのための設計表現又は形式のような、機械によってアクセスされたときに、その機械にタスクを実行させ、抽象データ型又は低レベルハードウェアコンテキストを定義させ、又は結果を生成させるプログラムコードの参照によって又はと併用して説明されてよい。
【００４８】
シミュレーションのために、プログラムコードは、設計されたハードウェアに期待される実行方法のモデルを本質的に提供するハードウェア記述言語又は他の機能記述言語を用いてハードウェアを表してよい。プログラムコードは、アセンブリ言語若しくは機械語、又はコンパイル及び／又はインタプリタされ得るデータであってよい。さらに、どのような形にしても動作を起こすこと又は結果をもたらすことをソフトウェアと言うことは、技術的によくあることである。そのような表現は、プロセッサに動作を実行させ又は結果を生成させるプロセッシングシステムによるプログラムコードの実行を述べることの簡潔な表現の方法にすぎない。
【００４９】
プログラムコードは、例えば、ソリッドステートメモリ、ハードドライブ、フロッピー（登録商標）ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、デジタル多用途ディスク（ＤＶＤ）などを含むストレージデバイス及び／又は関連する機械可読又は機械アクセス可能媒体のような揮発性及び／又は不揮発性メモリ、並びに機械アクセス可能生物学状態保存ストレージのようなより珍しい媒体に格納されてよい。機械可読媒体は、アンテナ、光ファイバ、通信インターフェースなどのような機械によって可読な形で、情報を格納、送信、又は受信するための任意の有形のメカニズムを含んでよい。プログラムコードは、パケット、シリアルデータ、パラレルデータなどの形で送信されてよく、圧縮又は暗号化された形式で使用されてよい。
【００５０】
プログラムコードは、プロセッサ、プロセッサによって可読な揮発性及び／又は不揮発性メモリ、少なくとも１つの入力デバイス、及び／又は１又は複数の出力デバイスをそれぞれ含む、可動又は固定のコンピュータ、パーソナルデジタルアシスタント、セットトップボックス、携帯電話、及びページャ、並びに他の電子デバイスのようなプログラム可能な機械上で実行するプログラムに実装されてよい。プログラムコードは、開示された実施形態を実行し、出力情報を生成するために、入力デバイスを用いて入力されたデータに適用されてよい。出力情報は、１又は複数の出力デバイスに適用されてよい。当業者は、開示された主題の実施形態が、マルチプロセッサ又はマルチコアプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、及び仮想的に任意のデバイスに組み込まれ得る普及した又は小型のコンピュータ又はプロセッサを含む様々なコンピュータシステム構成で実施され得ることを理解してよい。開示された主題の実施形態は、また、分散型コンピューティング環境で実施され得、タスクは、通信ネットワークを通じてリンクされたリモートプロセッシングデバイスによって実行され得る。
【００５１】
オペレーションは、順次的なプロセスとして説明されてよいが、オペレーションのいくつかは、実際には、並行に、同時に、及び／又は分散環境で、並びにシングル又はマルチプロセッサマシンによるアクセスのためにローカルに及び／又はリモートに格納されたプログラムコードで実行されてよい。さらに、いくつかの実施形態において、オペレーションの順序は、開示された主題の意図から逸脱しない範囲で、再配置されてよい。プログラムコードは、組み込まれたコントローラによって又はそれと併用して使用されてよい。
【００５２】
例示の実施形態を参照して開示された主題が説明されたが、この説明は、限定する意味で解釈されることを意図するものではない。例示の複数の実施形態の様々な修正、及び当開示された主題に付随することが業者にとって明かな主題の他の実施形態は、開示された主題の範囲内にあると考えられる。
【図１】
2015127949.tif 000003
【図２】
2015127949.tif 000004
【図３】
2015127949.tif 000005
【図４】
2015127949.tif 000006
【図５】
2015127949.tif 000007
【外国語明細書】
2015127949000001.pdf