(57)【要約】【課題】サービス・レイヤ・アダプタを用いて、コヒーレンシの最低点（ＬＰＣ）メモリを管理する。【解決手段】アダプタはホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、プロセッサは対称型マルチプロセッシング用に構成されていて、該管理は、アダプタによって、アクセラレータからメモリ・アクセス命令を受信するステップと、アダプタによって、そのメモリ・アクセス命令に対する実アドレスを読出すステップと、アダプタ上のベース・アドレス・レジスタを使って、その実アドレスがＬＰＣメモリを対象としていることを判断するステップであって、該ベース・アドレス・レジスタが、ホスト・コンピューティング・システム上のＬＰＣメモリ位置と他のメモリ位置との間でメモリ・アクセス要求を振り分ける、該判断するステップと、アダプタによって、メモリ・アクセス命令および実アドレスを、ＬＰＣメモリに対するメディア・コントローラに送信するステップであって、このＬＰＣメモリに対するメディア・コントローラはメモリ・インターフェースを介してアダプタに取付けられている、該送信するステップと、を含む。【選択図】図２
2019537153.tif 000002
【特許請求の範囲】
【請求項１】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理する方法であって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記方法は、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記ＬＰＣメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記ＬＰＣメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記ＬＰＣメモリに対するメディア・コントローラに送信するステップであって、前記ＬＰＣメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を含む、方法。
【請求項２】
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記ＬＰＣメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記アクセラレータから、前記ＬＰＣメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ（「ＸＴＡＧ」）を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記ＸＴＡＧを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項１に記載の方法。
【請求項５】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項１に記載の方法。
【請求項６】
前記ＬＰＣメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項１に記載の方法。
【請求項７】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項１に記載の方法。
【請求項８】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するためのアダプタであって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記アダプタが、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記ＬＰＣメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記ＬＰＣメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記ＬＰＣメモリに対するメディア・コントローラに送信するステップであって、前記ＬＰＣメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を実行するように構成される、アダプタ。
【請求項９】
前記ステップ群が、
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記ＬＰＣメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項８に記載のアダプタ。
【請求項１０】
前記ステップ群が、
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項８に記載のアダプタ。
【請求項１１】
前記アクセラレータから、前記ＬＰＣメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ（「ＸＴＡＧ」）を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記ＸＴＡＧを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項８に記載のアダプタ。
【請求項１２】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項８に記載のアダプタ。
【請求項１３】
前記ＬＰＣメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項８に記載のアダプタ。
【請求項１４】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項８に記載のアダプタ。
【請求項１５】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するためのコンピュータ・プログラム製品であって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記コンピュータ・プログラム製品は、コンピュータ可読媒体上に配置され、前記コンピュータ・プログラム製品は、実行されると、前記アダプタに、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記ＬＰＣメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記ＬＰＣメモリ位置と、前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記ＬＰＣメモリに対するメディア・コントローラに送信するステップであって、前記ＬＰＣメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を実行させるコンピュータ・プログラム命令を含む、
コンピュータ・プログラム製品。
【請求項１６】
前記ステップ群が、
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記ＬＰＣメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記ステップ群が、
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１８】
前記アクセラレータから、前記ＬＰＣメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ（「ＸＴＡＧ」）を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記ＸＴＡＧを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１９】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２０】
前記ＬＰＣメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項１５に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、またはさらに具体的には、サービス・レイヤ・アダプタを用いて、コヒーレンシの最低点（ＬＰＣ：ｌｏｗｅｓｔ  ｐｏｉｎｔ  ｏｆ  ｃｏｈｅｒｅｎｃｙ）メモリを管理するための方法、装置、および製品である。
【背景技術】
【０００２】
１９４８年ＥＤＶＡＣコンピュータ・システムの開発が、しばしばコンピュータ時代の始まりとして挙げられている。この時以来、コンピュータ・システムは極めて複雑なデバイスに進展してきた。今日のコンピュータは、ＥＤＶＡＣなど初期のシステムよりもはるかに高度である。コンピュータ・システムは、通常、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入力／出力デバイスなど、ハードウェアおよびソフトウェアコンポーネントの組合せを含む。半導体処理およびコンピュータ・アーキテクチャの進歩が、コンピュータのパフォーマンスをより高く押し上げるのとともに、そのハードウェアの高いパフォーマンスの利点を取り入れて、さらに高度なコンピュータ・ソフトウェアが進展し、ほんの数年前よりはるかに強力な今日のコンピュータ・システムをもたらしている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理することによって、
・  ＡＦＵに、コヒーレント・インターフェースから独立したオープン・プロセッサ・メモリ・インターフェースをＡＦＵに備えることによって、コンピュータ・システムのオペレーションを改良し、ストレージ・アクセス効率を向上し、
・  アダプタに取付けられたＬＰＣメモリへの保護されたアクセスをＡＦＵに備えることによって、コンピュータ・システムのオペレーションを改良し、待ち時間を低減し、
・  ＡＦＵにより、アダプタにローカルなおよびリモートなメモリへのメモリ・アクセスを管理することによって、コンピュータ・システムのオペレーションを改良し、メモリの整合性を向上する。
【課題を解決するための手段】
【０００４】
本明細書において、サービス・レイヤ・アダプタを用いて、コヒーレンシの最低点（ＬＰＣ）メモリを管理するための方法、アダプタ、システム、装置、プログラムが開示される。開示されるアダプタはホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、該プロセッサは対称型マルチプロセッシング用に構成されている、サービス・レイヤ・アダプタを用いるコヒーレンシの最低点（ＬＰＣ）メモリの管理は、アダプタによって、アクセラレータからメモリ・アクセス命令を受信するステップと、アダプタによって、そのメモリ・アクセス命令に対する実アドレスを読み出すステップと、アダプタ上のベース・アドレス・レジスタを使って、その実アドレスがＬＰＣメモリを対象としていることを判断するステップであって、該ベース・アドレス・レジスタが、ホスト・コンピューティング・システム上のＬＰＣメモリ位置と他のメモリ位置との間でメモリ・アクセス要求を振り分ける、該判断するステップと、アダプタによって、メモリ・アクセス命令および実アドレスを、ＬＰＣメモリに対するメディア・コントローラに送信するステップであって、このＬＰＣメモリに対するメディア・コントローラはメモリ・インターフェースを介してアダプタに取付けられている、該送信するステップを含む。
【０００５】
本発明の前述および他の目的、特徴、および利点は、添付の図面に示されている本発明の例示的な実施形態の以下のさらに具体的な説明から明らかとなろう。図面中の同じ参照符号は、一般に、本発明の例示的な実施形態の同じ部分を表す。
【０００６】
以下に、本発明の諸実施形態を、単なる例示として添付の図面を参照しながら説明する。
【図面の簡単な説明】
【０００７】
【図１】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するように構成された例示のシステムのブロック図を示す。
【図２】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてＬＰＣメモリを管理するためのブロック図を示す。
【図３】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてＬＰＣメモリを管理するための或る例示的な方法を表すフローチャートを示す。
【図４】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてＬＰＣメモリを管理するための或る例示的な方法を表すフローチャートを示す。
【図５】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてＬＰＣメモリを管理するための或る例示的な方法を表すフローチャートを示す。
【図６】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてＬＰＣメモリを管理するための或る例示的な方法を表すフローチャートを示す。
【発明を実施するための形態】
【０００８】
本発明による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するための例示的な方法、装置、および製品を、添付の図面を参照しながら、図１から説明する。図１は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するように構成された例示的なコンピューティング・システム（１５２）を含む自動化コンピューティング・マシンのブロック図を示す。図１のコンピューティング・システム（１５２）は、少なくとも１つのコンピュータ・プロセッサ（１５６）または「ＣＰＵ」と、高速メモリ・バス（１６６）およびバス・アダプタ（１５８）を介してプロセッサ（１５６）ならびにコンピューティング・システム（１５２）の他のコンポーネントに接続されているランダム・アクセス・メモリ（１６８）（「ＲＡＭ」：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）とを含む。
【０００９】
ＲＡＭ（１６８）中には、オペレーティング・システム（１５４）が格納されている。本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するように構成されたコンピュータの中で使えるオペレーティング・システムには、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、マイクロソフト（Ｒ）のＸＰ、ＡＩＸ（ＩＢＭ社の登録商標）、ＩＢＭ（ＩＢＭ社の登録商標）のｉＯＳ、および当業者が考え付く他のオペレーティング・システムが含まれる。図１の例中のオペレーティング・システム（１５４）はＲＡＭ（１６８）の中に示されているが、かかるソフトウェアの多くのコンポーネントは、通常、例えば、ディスク・ドライブ（１７０）上などの不揮発性メモリにも格納される。
【００１０】
図１のコンピューティング・システム（１５２）は、拡張バス（１６０）およびバス・アダプタ（１５８）を介して、プロセッサ（１５６）およびコンピューティング・システム（１５２）の他のコンポーネントに連結されたディスク・ドライブ・アダプタ（１７２）を含む。ディスク・ドライブ・アダプタ（１７２）は、不揮発性データ・ストレージを、ディスク・ドライブ（１７０）の形でコンピューティング・システム（１５２）に接続する。本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するように構成されたコンピュータ中で使えるディスク・ドライブ・アダプタには、インテグレーテッド・ドライブ・エレクトロニクス（「ＩＤＥ」：Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）アダプタ、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ」：Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）アダプタ、および当業者が考え付く他のアダプタが含まれる。また、不揮発性コンピュータ・メモリは、当業者なら考え付くであろうが、光ディスク・ドライブ、電気的消去可能プログラマブル読み出し専用メモリ（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）、ＲＡＭドライブなどとして実装が可能である。
【００１１】
図１の例示のコンピューティング・システム（１５２）は、１つ以上の入力／出力（「Ｉ／Ｏ」：ｉｎｐｕｔ／ｏｕｔｐｕｔ）アダプタ（１７８）を含む。Ｉ／Ｏアダプタは、例えば、コンピュータ・ディスプレイ・スクリーンなどの表示デバイスへの出力、ならびにキーボードおよびマウスなどのユーザ入力デバイス（１８１）からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを介して、ユーザ指向の入力／出力を実行する。図１の例示のコンピューティング・システム（１５２）は、ビデオ・アダプタ（２０９）を含み、これは、ディスプレイ・スクリーンまたはコンピュータ・モニタなどの表示デバイス（１８０）へのグラフィック出力のために特に設計されたＩ／Ｏアダプタの一例である。ビデオ・アダプタ（２０９）は、高速ビデオ・バス（１６４）と、バス・アダプタ（１５８）と、これも高速バスであるフロント・サイド・バス（１６２）とを介してプロセッサ（１５６）に接続される。
【００１２】
図１の例示的なコンピューティング・システム（１５２）は、他のコンピュータ（１８２）とのデータ通信、およびデータ通信ネットワークとのデータ通信のための通信アダプタ（１６７）を含む。かかるデータ通信は、ユニバーサル・シリアル・バス（「ＵＳＢ」：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの外部バスを通して、ＩＰデータ通信ネットワークなどのデータ通信ネットワークを通して、および当業者が考え付く他のやり方で、ＲＳ−２３２接続を介してシリアル方式で行われ得る。通信アダプタは、データ通信のハードウェア・レベルを実装し、これを通して、一つのコンピュータが、直接にまたはデータ通信ネットワークを介して別のコンピュータにデータ通信を送信する。本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するように構成されたコンピュータ中で使える通信アダプタの例には、有線ダイアルアップ通信用のモデム、有線データ通信用のイーサネット（Ｒ）（ＩＥＥＥ８０２．３）アダプタ、およびワイヤレスデータ通信用の８０２．１１アダプタが含まれる。
【００１３】
図１の例示的なコンピューティング・システム（１５２）は、プロセッサおよびＲＡＭ（１６８）を（バス・アダプタ（１５８）を介して）サービス・レイヤ・アダプタ（１９２）およびアクセラレータ機能ユニット（１９４）に接続する通信バス（１９０）を含む。
【００１４】
図２は、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するように構成されたシステムの例示のブロック図である。図２は、アクセラレータ機能ユニット（１９４）と、メモリ（２１６）と、メディア・コントローラ（２１４）と、サービス・レイヤ・アダプタ（１９２）と、通信バス（１９０）と、プロセッサ（１５６）とを含む。サービス・レイヤ・アダプタ（１９２）は、変換サービス・レイヤ（２０２）と、コヒーレンシ・サービス・レイヤ（２０４）と、メモリ・レイヤ（２０６）と、リンク・アービタ（２１０）とを含む。メモリ・レイヤ（２０６）は、ＸＴＡＧテーブル（２０８）とベース・アドレス・レジスタ（２１２）とを含む。
【００１５】
アクセラレータ機能ユニット（ＡＦＵ：ａｃｃｅｌｅｒａｔｏｒ  ｆｕｎｃｔｉｏｎａｌ  ｕｎｉｔ）（１９４）は、コンピューティング・システムの機能を拡張するように構成されたアクセラレータである。ＡＦＵ（１９４）は、特定のタスクまたはタスクの群を実行するため取付けられた、コンピューティング・システムのリムーバブル・コンポーネントであってよい。ＡＦＵ（１９４）の例には、例えば、ネットワーク・インターフェース・カード、グラフィック・アクセラレータ・カード、およびストレージ・アダプタ・カードが含まれる。
【００１６】
通信バス（１９０）は媒体であり、それを通ってコンピューティング・システム上のハードウェア・コンポーネントの間でデータが移動される。通信バス（１９０）は、通信バス（１９０）上で送られるデータを管理するバス・コントローラを含んでよい。例示の通信バス（１９０）は、ペリフェラル・コンポーネント・ インターコネクト・ エクスプレス（ＰＣＩｅ：ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）バスを含む。
【００１７】
ＡＦＵ（１９４）は、コヒーレンシベースのオペレーションおよびメモリ・アクセス命令を、通信バスを介して、コンピューティング・システム上の他のハードウェア素子に送信するように構成することが可能である。プロセッサ（１５６）は、ＡＦＵ（１９４）に、プロセッサ（１５６）上のコヒーレント対称型マルチプロセッシング・バスへのアクセスを提供するコヒーレント・アクセラレータ・プロセッサ・プロキシを含んでよい。このプロキシは、ＡＦＵ（１９４）が対称型マルチプロセッシング・コヒーレンシ・プロトコルに関与できるようにするコヒーレント・アクセラレータ・プロキシ・インターフェースによって使用されてよい。
【００１８】
サービス・レイヤ・アダプタ（１９２）は、ＡＦＵ（１９４）とコヒーレント・アクセラレータ・プロキシ・インターフェースとの間の通信を適合化する。サービス・レイヤ・アダプタ（１９２）とこのプロキシとの間の通信は、通信バスを介するプロセッサへのパケットの中にカプセル化される。サービス・レイヤ・アダプタ（１９２）は、フィールド・プログラマブル・ゲート・アレイまたは特殊用途向け集積回路など、外部のチップ上に実装されてもよい。
【００１９】
サービス・レイヤ・アダプタ（１９２）は、ＡＦＵ（１９４）によって開始されたコヒーレンシベースのオペレーションに対処するように構成することが可能である。サービス・レイヤ・アダプタ（１９２）は、変換サービス・レイヤ（２０２）と、コヒーレンシ・サービス・レイヤ（２０４）と、メモリ・レイヤ（２０６）とを含む。変換サービス・レイヤ（２０２）は、オペレーションに対するコンテキストを読み出し、有効アドレス−実アドレス変換（ＥＲＡＴ：ｅｆｆｅｃｔｉｖｅ−ｔｏ−ｒｅａｌ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）を使って、有効アドレスを実アドレスに変換するための素子およびロジックを含むことができる。有効アドレスとは、メモリの位置を指すために、コンピューティング・システム中で素子およびプロセスによって用いられるアドレスである。但し、要求されるデータにアクセスするためには、有効アドレスは実アドレスに変換されなければならない。有効アドレスは、仮想アドレスと称してもよく、実アドレスは、物理アドレスと称してもよい。また、変換サービス・レイヤ（２０２）は、頻繁にアクセスされるコンテキストを格納するためのコンテキスト・キャッシュ、および頻繁にアクセスされる実アドレス変換を格納するためのＥＲＡＴキャッシュを含むことも可能である。
【００２０】
コヒーレンシ・サービス・レイヤ（２０４）は、コヒーレンシベースのオペレーションを実行するための素子およびロジックを含むことができる。コヒーレンシ・サービス・レイヤ（２０４）は、ＡＦＵ（１９４）からコンテキストベースの通信を（コヒーレンシ・インターフェースを介して）受信し、オペレーションに対処するために、サービス・レイヤ・アダプタ（１９２）中の他の諸レイヤと通信する。また、コヒーレンシ・サービス・レイヤ（２０４）は、コヒーレンシベースのオペレーションによって頻繁に対象とされるデータを格納するためのデータ・キャッシュを含むことも可能である。コヒーレンシ・サービス・レイヤ（２０４）は、さらに、ＡＦＵ（１９４）とコンピューティング・システム上の他のメモリ位置との間のデータ・コヒーレンシを維持することに関する他のタスクも扱う。
【００２１】
また、サービス・レイヤ・アダプタ（１９２）は、メモリ・レイヤ（２０６）を介して、メディア・コントローラ（２１４）およびメモリ（２１６）にメモリ・インターフェースを提供する。メモリ・レイヤ（２０６）は、メモリ（２１６）およびメディア・コントローラ（２１４）へのアクセスを提供し、コヒーレンシの最低点（ＬＰＣ）メモリとしてのメモリ（２１６）へのアクセスを管理する。ＬＰＣメモリとしてのメモリ（２１６）の管理は、該メモリ（２１６）のコヒーレンシを維持するためのスヌーピング、およびＬＰＣメモリ（２１６）と当該システム上の他の箇所に位置づけされたメモリとの間でのメモリ・アクセス要求の振り分けなど、該メモリに対してメモリ管理のユニット型サービスを提供することを含み得る。
【００２２】
メモリ・レイヤ（２０６）は、ＡＦＵ（１９４）にメモリ（２１６）へのアクセスを提供することができる。サービス・レイヤ・アダプタ（１９２）に属するメモリ（２１６）へのアクセスは、システム上の他の箇所のメモリにアクセスするよりも少ない待ち時間であり得る。さらに、メモリ（２１６）は、より大量のメモリを必要とする、またはそれにより利益を得るシステム上の他の素子に、部分的にまたは全体的に割り当てることが可能である。例えば、大量のメモリを必要とするアクティビティのためにプロセッサ（１５６）を活用することができる。メモリは、サービス・レイヤ・アダプタ（１９２）上のメモリ・インターフェースを介して、より低コストでまたはシステムのアップグレードの一部として備えることが可能である。
【００２３】
さらに、メモリ（２１６）は、ＡＦＵ（１９４）と、プロセッサ（１５６）など、システム上の他の素子との間で分割されてよい。そうすることによって、プロセッサ（１５６）または追加のメモリを必要とする他の素子のメモリのための予備を保ちながら、ＡＦＵ（１９４）に、メモリへの低待ち時間のアクセスが提供される。このメモリは、ＲＡＭとは別個の、且つ、プロセッサおよびメモリ管理ユニットによって管理される他のメモリとも別個の揮発性メモリとすることができる。
【００２４】
また、メモリ・レイヤ（２０６）はベース・レジスタ（２１２）も含む。ベース・アドレス・レジスタ（２１２）は、メモリ・マッピングがそこから開始されるベース・アドレスを提供する。ベース・アドレス・レジスタ（２１２）は、機能的に、メモリ・アクセス命令内のメモリ・アドレスを、メモリ（２１６）、プロセッサ（１５６）上のメモリ、およびホスト・システム上の他のサービス・レイヤ・アダプタに連結されているメモリを含め、システム上のいろいろなメモリ位置に振り分けることができる。
【００２５】
メモリ・レイヤ（２０６）は、メモリ・インターフェースを介してメディア・コントローラ（２１４）と通信する。メディア・コントローラ（２１４）は、サービス・レイヤ・アダプタ（１９２）のメモリ・レイヤ（２０６）と、メモリ（２１６）との間の通信を円滑にするように構成されたデバイスである。メディア・コントローラ（２１４）は、それに取付けられるメモリ（２１６）デバイスの種類に対する固有のものであってよい。
【００２６】
メディア・コントローラ（２１４）は、メモリ・インターフェースを介してメモリ・レイヤ（２０６）と通信することができる。メモリ・レイヤ（２０６）上のメモリ・インターフェースは、コヒーレンシ・サービス・レイヤ（２０４）上のコヒーレンシ・インターフェースとは別個の通信インターフェースであってよい。例えば、コヒーレンシ・インターフェースとメモリ・インターフェースとは、サービス・レイヤ・アダプタ（１９２）がその上に実装されているチップ上の別個のピンとすることができる。さらに、サービス・レイヤ・アダプタ（１９２）は、ＡＦＵ（１９４）に接続を提供する複数のポートを含むことが可能である。これら接続を提供するポートは、ＡＦＵ（１９４）によって、ＡＦＵ（１９４）の要件に従い、メモリ・アクセス命令を配信するために使用されてよい。
【００２７】
メモリ・レイヤ（２０６）は、変換タグ（ＸＴＡＧ）を用いて変換サービスを提供する。ＸＴＡＧは、ＡＦＵ（１９４）に提供され、実アドレスにマップされたＸＴＡＧテーブル（２０８）中に格納される。ＸＴＡＧテーブル（２０８）は、ＸＴＡＧを、プロセッサ（１５６）およびメモリ・レイヤ（２０６）によって使われる、実アドレスなどの内部アドレスにマップする。ＸＴＡＧは、メモリ・アクセス命令内にあるメモリ位置を識別するため、ＡＦＵ（１９４）によって使用される。ＡＦＵ（１９４）は、プロセッサ（１５６）またはコンピューティング・システム上の他のデバイスによって使われる実アドレスへのアクセスもその知識も持たなくてよい。ＸＴＡＧテーブル（２０８）がメモリ・レイヤ（２０６）内に示されているが、ＸＴＡＧテーブル（２０８）は、サービス・レイヤ・アダプタ（１９２）上のどの場所に常駐してもよく、あるいはサービス・レイヤ・アダプタ（１９２）によってアクセスが可能であってよい。
【００２８】
ＡＦＵ（１９４）には、メモリ（２１６）からのメモリ、またはプロセッサ（１５６）上のメモリもしくはメモリ管理ユニットによって管理される他のメモリなど、システム上の他の箇所からのメモリが割り当てられてよい。ＡＦＵ（１９４）は、サービス・レイヤ・アダプタ（１９２）を介してアクセスが可能なメモリの物理的位置は知らなくてもよい。言い換えれば、ＡＦＵ（１９４）は、当該メモリの位置に関係なく、同じ命令セットを使って、サービス・レイヤ・アダプタ（１９２）を介して全ての割り当てられたメモリにアクセスすることになる。但し、サービス・レイヤ・アダプタ（１９２）に属するメモリは、システム上の他の箇所のメモリよりも短い待ち時間のアクセスを提供することが可能である。
【００２９】
リンク・アービタ（２１０）は、変換レイヤに、サービス・レイヤ・アダプタ（１９２）と、諸プロセッサなど、コンピューティング・システム上の他のハードウェア素子との間の通信が円滑になるようにする。また、リンク・アービタ（２１０）は、キャッシュ・ミスが発生した場合、サービス・レイヤ・アダプタ（１９２）上の各種キャッシュ（例えば、コンテキスト・キャッシュ、ＥＲＡＴキャッシュなど）を更新するためのインターフェースも提供することが可能である。
【００３０】
さらなる説明のために、図３は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するための或る例示的な方法を表すフローチャートを示す。図３の方法は、アダプタ（１９２）によって、アクセラレータ（１９４）からメモリ・アクセス命令（３２０）を受信するステップ（３０２）を含む。アダプタ（１９２）によって、アクセラレータ（１９４）からメモリ・アクセス命令（３２０）を受信するステップ（３０２）は、アダプタ（１９２）によって、アクセラレータ（１９４）から、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、有効アドレスを実アドレスに変換するステップと、アダプタ（１９２）によって、その実アドレスに対応する変換タグ（「ＸＴＡＧ」）をアクセラレータ（１９４）に提供するステップと、アダプタ（１９２）によって、アクセラレータ（１９４）からＸＴＡＧを含むメモリ・アクセス命令を受信するステップと、によって実行することが可能である。
【００３１】
このメモリ・アクセス命令は、アダプタによって、アダプタ上のコヒーレンシ・インターフェースを介して受信することができる。これに換えて、メモリ・アクセス命令は、アクセラレータ（１９４）とアダプタ（１９２）とを連結している別のインターフェースによって受信されてもよい。例えば、アダプタ（１９２）が、直接メモリ・アクセス・インターフェースなど、メモリ・アクセス命令用に専用化されたインターフェースを備えることが可能である。
【００３２】
また、図３の方法は、アダプタ（１９２）によって、メモリ・アクセス命令に対する実アドレスを読み出すステップ（３０４）も含む。アダプタ（１９２）によって、メモリ・アクセス命令に対する実アドレスを読み出すステップ（３０４）は、ＸＴＡＧテーブルから、ＸＴＡＧにマップされた実アドレスを取得し、アダプタによって、メモリ・アクセス命令の中のＸＴＡＧを実アドレスで置き換えることによって実行が可能である。実アドレスは、メモリ・アクセス命令からアルゴリズム的に導出することができる。例えば、アダプタ（１９２）は、実アドレスを得るために、ＸＴＡＧなど、メモリ・アクセス命令の要素にアルゴリズムを適用することが可能である。
【００３３】
また、アダプタ（１９２）によって、メモリ・アクセス命令に対する実アドレスを読み出すステップ（３０４）は、アダプタ（１９２）がメモリ中の対象位置にアクセスする許可をされていることを判断することによっても実行することが可能である。例えば、ＥＲＡＴまたは他の構造体は、アクセラレータ（１９４）または関連するコンテキストが、有効アドレスまたは関連する実アドレスによって識別される当該メモリにアクセスする許可を有するかどうかを示すことができる。
【００３４】
また、図３の方法は、アダプタ（１９２）上のベース・アドレス・レジスタを使って、実アドレスがＬＰＣメモリを対象としていることを判断するステップ（３０６）をも含み、該ベース・アドレス・レジスタは、メモリ・アクセス要求を、ＬＰＣメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける。アダプタ（１９２）上のベース・アドレス・レジスタを用い、当該実アドレスがＬＰＣメモリを対象としていることを判断するステップ（３０６）であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、ＬＰＣメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップは、該実アドレスに対するベース・アドレスを判断し、組合されたベース・アドレスと実アドレスとを用いて、実アドレスに対するメモリが存在するシステム上の位置を判断することによって実行することが可能である。この位置は、メディア・コントローラ（２１４）に属するメモリ、プロセッサ上のメモリ、（システムＲＡＭなどの）メモリ管理ユニットにより制御されるメモリ、またはシステム上の別のサービス・レイヤ・アダプタに属するメモリであり得る。
【００３５】
また、図３の方法は、アダプタ（１９２）によって、メモリ・アクセス命令および実アドレス（３２６）を、ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（３０８）を含み、ＬＰＣメモリに対するメディア・コントローラ（２１４）はメモリ・インターフェースを介してアダプタ（１９２）に取付けられている。アダプタ（１９２）によって、メモリ・アクセス命令および実アドレス（３２６）を、ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（３０８）であって、当該ＬＰＣメモリに対するメディア・コントローラ（２１４）はメモリ・インターフェースを介してアダプタ（１９２）に取付けられている、該送信するステップは、メモリ・アクセス命令および実アドレス（３２６）を、メディア・コントローラ（２１４）に取付けられたメモリ・インターフェース上に置くことによって実行することが可能である。また、アダプタ（１９２）によって、メモリ・アクセス命令および実アドレス（３２６）を、ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（３０８）であって、該ＬＰＣメモリに対するメディア・コントローラ（２１４）はメモリ・インターフェースを介してアダプタ（１９２）に取付けられている、該送信するステップは、メディア・コントローラ（２１４）が、メモリ・アクセス命令を、その付属メモリによって当該メモリ・アクセス命令に対処するのに適した、下位レベルの命令に変換することによっても実行することが可能である。
【００３６】
さらなる説明のために、図４は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するための或る例示的な方法を表すフローチャートを示し、本方法は、アダプタ（１９２）によって、アクセラレータ（１９４）からメモリ・アクセス命令（３２０）を受信するステップ（３０２）と、アダプタ（１９２）によって、該メモリ・アクセス命令に対する実アドレスを読み出すステップ（３０４）と、アダプタ（１９２）上のベース・アドレス・レジスタを使って、実アドレスがＬＰＣメモリを対象としていることを判断するステップ（３０６）であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、ＬＰＣメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップと、アダプタ（１９２）によって、メモリ・アクセス命令および実アドレス（３２６）を、当該ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（３０８）であって、該ＬＰＣメモリに対するメディア・コントローラ（２１４）はメモリ・インターフェースを介してアダプタ（１９２）に取付けられている、該送信するステップと、を含む。
【００３７】
但し、図４の方法は、図４が、プロセッサから後続のメモリ・アクセス命令を受信するステップ（４０２）をさらに含むという点で図３の方法とは異なる。プロセッサから後続のメモリ・アクセス命令を受信するステップ（４０２）は、実アドレスがサービス・レイヤ・アダプタ（１９２）に属するメモリ上のメモリ位置を対象としてプロセッサ上のコアまたは他の素子が後続のメモリ・アクセス命令を生成することによって実行が可能である。
このメモリ・アクセス命令は、プロセッサ上のベース・アドレス・レジスタを介してサービス・レイヤ・アダプタ（１９２）に向かわせることができる。
【００３８】
図４の方法は、アダプタ上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がＬＰＣメモリを対象としていることを判断するステップ（４０４）をさらに含む。アダプタ上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がＬＰＣメモリを対象としていることを判断するステップ（４０４）は、当該実アドレスに対するベース・アドレスを判断し、組合されたベース・アドレスと実アドレスとを用いて、後続のメモリ・アクセス要求が、該アダプタ（１９２）に属するメモリ上の位置を対象としているのを判断することによって実行することが可能である。
【００３９】
図４の方法は、アダプタ（１９２）によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス（３２８）を、ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（４０６）をさらに含む。アダプタ（１９２）によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス（３２８）を、ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（４０６）は、後続のメモリ・アクセス命令および実アドレス（３２８）を、メディア・コントローラ（２１４）に取付けられたメモリ・インターフェース上に置くことによって実行することが可能である。後続のメモリ・アクセス命令は、アクセラレータによってアクセスされるアダプタ（１９２）に属する同じメモリの一部を対象とすることが可能であるが、但し、プロセッサおよびアクセラレータ（１９４）は、それらがアクセスを許可されたメモリ上の位置に限定され得る。
【００４０】
さらなる説明のために、図５は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するための或る例示的な方法を表すフローチャートを示し、本方法は、アダプタ（１９２）によって、アクセラレータ（１９４）からメモリ・アクセス命令（３２０）を受信するステップ（３０２）と、アダプタ（１９２）によって、該メモリ・アクセス命令に対する実アドレスを読み出すステップ（３０４）と、アダプタ（１９２）上のベース・アドレス・レジスタを使って、実アドレスがＬＰＣメモリを対象としていることを判断するステップ（３０６）であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、ＬＰＣメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップと、アダプタ（１９２）によって、メモリ・アクセス命令および実アドレス（３２６）を、当該ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（３０８）であって、該ＬＰＣメモリに対するメディア・コントローラ（２１４）はメモリ・インターフェースを介してアダプタ（１９２）に取付けられている、該送信するステップと、を含む。
【００４１】
但し、図５の方法は、図５が、アクセラレータ（１９４）から、後続のメモリ・アクセス命令を受信するステップ（５０２）をさらに含むという点で図３の方法とは異なる。アクセラレータ（１９４）から、後続のメモリ・アクセス命令を受信するステップ（５０２）は、ＸＴＡＧを含む後続のメモリ・アクセス命令を受信することによって実行することが可能である。ＸＴＡＧは、ＸＴＡＧテーブルを用いて実アドレスに変換することができる。
【００４２】
図５の方法は、アダプタ（１９２）上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がＬＰＣメモリを対象としていないことを判断するステップ（５０４）をさらに含む。アダプタ（１９２）上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がＬＰＣメモリを対象としていないことを判断するステップ（５０４）は、当該実アドレスに対するベース・アドレスを判断し、組合されたベース・アドレスと実アドレスとを用いて、後続のメモリ・アクセス要求が、アダプタ（１９２）に属するメモリ上でないメモリ位置を対象としているのを判断することによって実行することが可能である。
【００４３】
図５の方法は、アダプタ（１９２）によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス（３２８）をプロセッサ（１５６）に送信するステップ（５０６）をさらに含む。アダプタ（１９２）によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス（３２８）をプロセッサ（１５６）に送信するステップ（５０６）は、該プロセッサによって、後続のメモリ・アクセス命令（３２８）を受信し、（例えば、ベース・アドレス・レジスタを使って）対象とされたメモリ位置がプロセッサ上にあるのか、またはシステムの別のアダプタ上にあるのかを判断することによって、実行することが可能である。対象とされたメモリがプロセッサ・メモリである場合、プロセッサが当該後続のメモリ・アクセス要求に対処する。対象とされたメモリが、別のアダプタに属する場合、その後続のメモリ・アクセス要求は、当該メモリを管理するアダプタに転送されてよい。
【００４４】
さらなる説明のために、図６は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するための或る例示的な方法を表すフローチャートを示し、本方法は、アダプタ（１９２）によって、アクセラレータ（１９４）からメモリ・アクセス命令（３２０）を受信するステップ（３０２）と、アダプタ（１９２）によって、該メモリ・アクセス命令に対する実アドレスを読み出すステップ（３０４）と、アダプタ（１９２）上のベース・アドレス・レジスタを使って、実アドレスがＬＰＣメモリを対象としていることを判断するステップ（３０６）であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、ＬＰＣメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップと、アダプタ（１９２）によって、メモリ・アクセス命令および実アドレス（３２６）を、当該ＬＰＣメモリに対するメディア・コントローラ（２１４）に送信するステップ（３０８）であって、該ＬＰＣメモリに対するメディア・コントローラ（２１４）はメモリ・インターフェースを介してアダプタ（１９２）に取付けられている、該送信するステップと、を含む。
【００４５】
但し、図６の方法は、アダプタ（１９２）によって、アクセラレータ（１９４）からメモリ・アクセス命令（３２０）を受信するステップ（３０２）が、アダプタ（１９２）によって、アクセラレータ（１９４）から、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップ（６０２）と、その有効アドレスを実アドレスに変換するステップ（６０４）と、アダプタ（１９２）によって、アクセラレータ（１９４）にその実アドレスに対応する変換タグ（「ＸＴＡＧ」）（３３０）を提供するステップ（６０６）と、アダプタ（１９２）によって、アクセラレータ（１９４）から、ＸＴＡＧ（３３２）を含むメモリ・アクセス命令を受信するステップ（６０８）と、を含むという点で図３の方法とは異なる。
【００４６】
アダプタ（１９２）によって、アクセラレータ（１９４）から、有効アドレスを含むメモリ・アクセス・オペレーションを開始する要求、を受信するステップ（６０２）は、アクセラレータ（１９４）によって、メモリ・アクセス・オペレーションを開始する要求を、アダプタ（１９２）のコヒーレンシ・サービス・レイヤ上のコヒーレンシ・インターフェースに送信することによって実行することが可能である。メモリ・アクセス・オペレーションを開始する要求は、位置識別子，プロセス操作子、およびオペレーション識別子を含むことができる。この位置識別子は、アクセラレータが、プロセッサ、ＲＡＭ、またはコンピューティング・システム上の他のハードウェア素子上のメモリ位置を参照するために用いるアドレスである。位置識別子は、例えば、有効アドレスであってよい。プロセス操作子は、要求に対するコンテキストの識別子である。このコンテキストは、アダプタ（１９２）によって、上記の位置識別子を対象のデバイスに理解される実アドレスに変換するために使用される。オペレーション識別子は、ＡＦＵ（１９４）が開始しようとしている、メモリ・アクセス命令などのオペレーションの種類を識別できる。
【００４７】
有効アドレスを実アドレスに変換するステップ（６０４）は、アダプタ上のＥＲＡＴを使って、有効アドレスを実アドレスに変換することによって実行することが可能である。アダプタ（１９２）によって、アクセラレータ（１９４）に当該実アドレスに対応する変換タグ（「ＸＴＡＧ」）（３３０）を提供するステップ（６０６）は、アダプタ（１９２）によって、メモリ・アクセス命令に対する実アドレスを判断し、その実アドレスを、アダプタ（１９２）上のＸＴＡＧテーブル中に格納することによって実行することが可能である。
【００４８】
アダプタ（１９２）によって、アクセラレータ（１９４）から、ＸＴＡＧ（３３２）を含むメモリ・アクセス命令を受信するステップ（６０８）は、アクセラレータ（１９４）によって、ＸＴＡＧ（３３２）を含むメモリ・アクセス命令を、コヒーレンシ・インターフェース、または直接メモリ・アクセス・インターフェースなど別の専用化されたインターフェースを介してアダプタ（１９２）に送ることによって実行することが可能である。
【００４９】
読者は、前述の説明を鑑み、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理する利益には以下が含まれることを認識されよう：
・  コヒーレント・インターフェースから独立したオープン・プロセッサ・メモリ・インターフェースをＡＦＵに備えることによって、コンピュータ・システムのオペレーションを改良し、ストレージ・アクセス効率を向上する。
・  アダプタに取付けられたＬＰＣメモリへの保護されたアクセスをＡＦＵに備えることによって、コンピュータ・システムのオペレーションを改良し、待ち時間を低減する。
・  ＡＦＵにより、アダプタにローカルなおよびリモートなメモリへのメモリ・アクセスを管理することによって、コンピュータ・システムのオペレーションを改良し、メモリの整合性を向上する。
【００５０】
本発明の例示的な諸実施形態は、主として、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するため完全に機能するコンピュータ・システムのコンテキストで記述されている。しかしながら、当業者であれば、本発明はまた、任意の適切なデータ処理システムとともに使用するためにコンピュータ可読ストレージ媒体上に配置されたコンピュータ・プログラム製品中に具現化することも可能であることを認識していよう。かかるコンピュータ可読ストレージ媒体は、磁気媒体、光媒体、または他の適切な媒体を含め、マシン可読情報のための任意のストレージ媒体であってよい。かかる媒体の例には、ハード・ドライブ中の磁気ディスクまたはディスケット、光ドライブのためのコンパクト・ディスク、磁気テープ、および当業者が考え付く他の媒体が含まれる。当業者は、適切なプログラミング手段を備えるどのようなコンピュータ・システムであっても、コンピュータ・プログラム製品中に具現化された本発明の方法のステップを実行することが可能であろうことを即座に認識していよう。また、当業者は、本明細書中に記載された例示的な諸実施形態のいくつかは、コンピュータ・ハードウェア上にインストールされ実行されるソフトウェアを指向しているが、それにかかわらず、ファームウェアまたはハードウェアとして実装された代替の実施形態も同様に本発明の範囲内にあることを認識しているであろう。
【００５１】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品またはこれらの組合せとすることができる。このコンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラムを有するコンピュータ可読ストレージ媒体（または媒体群）を含むことが可能である。
【００５２】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持し格納できる有形のデバイスとすることができる。該コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例の非包括的リストには、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去およびプログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、メモリ・スティック、フレキシブル・ディスク、パンチカードまたは記録された命令を有する溝中の嵩上げ構造体などの機械的符号化デバイス、および前述の任意の適切な組合せが含まれる。本明細書で用いられるコンピュータ可読ストレージ媒体は、無線波または他の自由に伝播する電磁波、ウェーブガイドもしくは他の送信媒体（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通って送られる電気信号など、本質的に一時的な信号であると解釈されるべきではない。
【００５３】
本明細書に述べられたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から、それぞれのコンピューティング／処理デバイスに、または、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくはワイヤレス・ネットワークまたはこれらの組合せなどのネットワークを介して、外部のコンピュータもしくは外部のストレージ・デバイスにダウンロードすることが可能である。このネットワークは、銅の送信ケーブル、光送信ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバまたはこれらの組合せを含んでもよい。それぞれのコンピューティング／処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、ストレージのため、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体の中に転送する。
【００５４】
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令集合アーキテクチャ（ＩＳＡ：ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ−ａｒｃｈｉｔｅｃｔｕｒｅ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋もしくは同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの従来式の手続き型プログラミング言語を含む、１つ以上のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。このコンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅａｒｅａ ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことも可能である。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、またはプログラム可能論理アレイ（ＰＬＡ：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ａｒｒａｙ）を含む電子回路は、本発明の諸態様を実行すべく、該電子回路をパーソナライズするためコンピュータ可読プログラム命令の状態情報を利用することによって、該コンピュータ可読プログラム命令を実行することができる。
【００５５】
本発明の諸態様は、本発明の諸実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら本明細書で説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装することが可能である。
【００５６】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。また、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイスまたはこれらの組合せに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ可読プログラム命令を、コンピュータ可読ストレージ媒体に格納し、格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能／動作の諸態様を実装する命令群を包含する製造品を構成するようにすることができる。
【００５７】
さらに、これらコンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上で、他のプログラム可能装置上で、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上で、他のプログラム可能装置上でもしくは他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００５８】
諸図面中のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能（群）を実装するための１つ以上の実行可能命令を含む、モジュール、セグメント、または命令の部分を表し得る。一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得る。例えば、連続して示された２つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組合せは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装でき、または特殊用途ハードウェアとコンピュータ命令との組合せによって実行できることにも留意されたい。
【００５９】
前述の説明から当然のことながら、本発明の本来の趣旨から逸脱することなく、本発明の様々な実施形態に修改および変更を加えることが可能である。本明細書中の記述は、例証のためだけのものであり、限定する意味で解釈されるべきではない。本発明の範囲は、添付の特許請求の範囲の文言によってだけ限定される。
【図１】
2019537153.tif 000003
【図２】
2019537153.tif 000004
【図３】
2019537153.tif 000005
【図４】
2019537153.tif 000006
【図５】
2019537153.tif 000007
【図６】
2019537153.tif 000008
【手続補正書】
【提出日】令和1年9月18日(2019.9.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理する方法であって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記方法は、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記ＬＰＣメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記ＬＰＣメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記ＬＰＣメモリに対するメディア・コントローラに送信するステップであって、前記ＬＰＣメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を含む、方法。
【請求項２】
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記ＬＰＣメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記アクセラレータから、前記ＬＰＣメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ（「ＸＴＡＧ」）を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記ＸＴＡＧを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項１に記載の方法。
【請求項５】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項１に記載の方法。
【請求項６】
前記ＬＰＣメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項１に記載の方法。
【請求項７】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項１に記載の方法。
【請求項８】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点（ＬＰＣ）メモリを管理するためのアダプタであって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記アダプタが、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記ＬＰＣメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記ＬＰＣメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記ＬＰＣメモリに対するメディア・コントローラに送信するステップであって、前記ＬＰＣメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を実行するように構成される、アダプタ。
【請求項９】
前記ステップ群が、
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記ＬＰＣメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項８に記載のアダプタ。
【請求項１０】
前記ステップ群が、
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記ＬＰＣメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項８に記載のアダプタ。
【請求項１１】
前記アクセラレータから、前記ＬＰＣメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ（「ＸＴＡＧ」）を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記ＸＴＡＧを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項８に記載のアダプタ。
【請求項１２】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項８に記載のアダプタ。
【請求項１３】
前記ＬＰＣメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項８に記載のアダプタ。
【請求項１４】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項８に記載のアダプタ。
【請求項１５】
請求項１〜７の何れか１項に記載の方法の各ステップを、コンピュータ・ハードウェアによる手段として構成した、システム。
【請求項１６】
請求項１〜７の何れか１項に記載の方法の各ステップを、コンピュータ・システムに実行させる、コンピュータ・プログラム。
【請求項１７】
請求項１６に記載の前記コンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【国際調査報告】
2019537153.tif 000009
2019537153.tif 000010