特表2019-537153(P2019-537153A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特表2019-537153サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム
<>
  • 特表2019537153-サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム 図000003
  • 特表2019537153-サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム 図000004
  • 特表2019537153-サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム 図000005
  • 特表2019537153-サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム 図000006
  • 特表2019537153-サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム 図000007
  • 特表2019537153-サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2019-537153(P2019-537153A)
(43)【公表日】2019年12月19日
(54)【発明の名称】サービス・レイヤ・アダプタを用いる、コヒーレンシの最低点(LPC)メモリの管理方法、アダプタ、プログラム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20191122BHJP
   G06F 12/02 20060101ALI20191122BHJP
【FI】
   G06F12/00 571A
   G06F12/02 570A
【審査請求】未請求
【予備審査請求】未請求
【全頁数】25
(21)【出願番号】特願2019-528145(P2019-528145)
(86)(22)【出願日】2017年11月27日
(85)【翻訳文提出日】2019年5月24日
(86)【国際出願番号】IB2017057408
(87)【国際公開番号】WO2018100478
(87)【国際公開日】20180607
(31)【優先権主張番号】15/364,458
(32)【優先日】2016年11月30日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】アリミリ、ラクシュミナラヤナ、ババ
(72)【発明者】
【氏名】スターク、ウィリアム
(72)【発明者】
【氏名】スツエチェリ、ジェフリー
(72)【発明者】
【氏名】ベンジャミニ、イフタク
(72)【発明者】
【氏名】ブラナー、バースオロミュー
(72)【発明者】
【氏名】アダル、エタイ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AB26
5B160CD00
(57)【要約】
【課題】サービス・レイヤ・アダプタを用いて、コヒーレンシの最低点(LPC)メモリを管理する。
【解決手段】アダプタはホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、プロセッサは対称型マルチプロセッシング用に構成されていて、該管理は、アダプタによって、アクセラレータからメモリ・アクセス命令を受信するステップと、アダプタによって、そのメモリ・アクセス命令に対する実アドレスを読出すステップと、アダプタ上のベース・アドレス・レジスタを使って、その実アドレスがLPCメモリを対象としていることを判断するステップであって、該ベース・アドレス・レジスタが、ホスト・コンピューティング・システム上のLPCメモリ位置と他のメモリ位置との間でメモリ・アクセス要求を振り分ける、該判断するステップと、アダプタによって、メモリ・アクセス命令および実アドレスを、LPCメモリに対するメディア・コントローラに送信するステップであって、このLPCメモリに対するメディア・コントローラはメモリ・インターフェースを介してアダプタに取付けられている、該送信するステップと、を含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理する方法であって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記方法は、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記LPCメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記LPCメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記LPCメモリに対するメディア・コントローラに送信するステップであって、前記LPCメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を含む、方法。
【請求項2】
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記LPCメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記アクセラレータから、前記LPCメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ(「XTAG」)を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記XTAGを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項1に記載の方法。
【請求項5】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項1に記載の方法。
【請求項6】
前記LPCメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項1に記載の方法。
【請求項7】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項1に記載の方法。
【請求項8】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するためのアダプタであって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記アダプタが、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記LPCメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記LPCメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記LPCメモリに対するメディア・コントローラに送信するステップであって、前記LPCメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を実行するように構成される、アダプタ。
【請求項9】
前記ステップ群が、
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記LPCメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項8に記載のアダプタ。
【請求項10】
前記ステップ群が、
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項8に記載のアダプタ。
【請求項11】
前記アクセラレータから、前記LPCメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ(「XTAG」)を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記XTAGを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項8に記載のアダプタ。
【請求項12】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項8に記載のアダプタ。
【請求項13】
前記LPCメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項8に記載のアダプタ。
【請求項14】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項8に記載のアダプタ。
【請求項15】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するためのコンピュータ・プログラム製品であって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記コンピュータ・プログラム製品は、コンピュータ可読媒体上に配置され、前記コンピュータ・プログラム製品は、実行されると、前記アダプタに、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記LPCメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記LPCメモリ位置と、前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記LPCメモリに対するメディア・コントローラに送信するステップであって、前記LPCメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を実行させるコンピュータ・プログラム命令を含む、
コンピュータ・プログラム製品。
【請求項16】
前記ステップ群が、
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記LPCメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項17】
前記ステップ群が、
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項18】
前記アクセラレータから、前記LPCメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ(「XTAG」)を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記XTAGを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項19】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項20】
前記LPCメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項15に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の分野はデータ処理であり、またはさらに具体的には、サービス・レイヤ・アダプタを用いて、コヒーレンシの最低点(LPC:lowest point of coherency)メモリを管理するための方法、装置、および製品である。
【背景技術】
【0002】
1948年EDVACコンピュータ・システムの開発が、しばしばコンピュータ時代の始まりとして挙げられている。この時以来、コンピュータ・システムは極めて複雑なデバイスに進展してきた。今日のコンピュータは、EDVACなど初期のシステムよりもはるかに高度である。コンピュータ・システムは、通常、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入力/出力デバイスなど、ハードウェアおよびソフトウェアコンポーネントの組合せを含む。半導体処理およびコンピュータ・アーキテクチャの進歩が、コンピュータのパフォーマンスをより高く押し上げるのとともに、そのハードウェアの高いパフォーマンスの利点を取り入れて、さらに高度なコンピュータ・ソフトウェアが進展し、ほんの数年前よりはるかに強力な今日のコンピュータ・システムをもたらしている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理することによって、
・ AFUに、コヒーレント・インターフェースから独立したオープン・プロセッサ・メモリ・インターフェースをAFUに備えることによって、コンピュータ・システムのオペレーションを改良し、ストレージ・アクセス効率を向上し、
・ アダプタに取付けられたLPCメモリへの保護されたアクセスをAFUに備えることによって、コンピュータ・システムのオペレーションを改良し、待ち時間を低減し、
・ AFUにより、アダプタにローカルなおよびリモートなメモリへのメモリ・アクセスを管理することによって、コンピュータ・システムのオペレーションを改良し、メモリの整合性を向上する。
【課題を解決するための手段】
【0004】
本明細書において、サービス・レイヤ・アダプタを用いて、コヒーレンシの最低点(LPC)メモリを管理するための方法、アダプタ、システム、装置、プログラムが開示される。開示されるアダプタはホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、該プロセッサは対称型マルチプロセッシング用に構成されている、サービス・レイヤ・アダプタを用いるコヒーレンシの最低点(LPC)メモリの管理は、アダプタによって、アクセラレータからメモリ・アクセス命令を受信するステップと、アダプタによって、そのメモリ・アクセス命令に対する実アドレスを読み出すステップと、アダプタ上のベース・アドレス・レジスタを使って、その実アドレスがLPCメモリを対象としていることを判断するステップであって、該ベース・アドレス・レジスタが、ホスト・コンピューティング・システム上のLPCメモリ位置と他のメモリ位置との間でメモリ・アクセス要求を振り分ける、該判断するステップと、アダプタによって、メモリ・アクセス命令および実アドレスを、LPCメモリに対するメディア・コントローラに送信するステップであって、このLPCメモリに対するメディア・コントローラはメモリ・インターフェースを介してアダプタに取付けられている、該送信するステップを含む。
【0005】
本発明の前述および他の目的、特徴、および利点は、添付の図面に示されている本発明の例示的な実施形態の以下のさらに具体的な説明から明らかとなろう。図面中の同じ参照符号は、一般に、本発明の例示的な実施形態の同じ部分を表す。
【0006】
以下に、本発明の諸実施形態を、単なる例示として添付の図面を参照しながら説明する。
【図面の簡単な説明】
【0007】
図1】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するように構成された例示のシステムのブロック図を示す。
図2】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてLPCメモリを管理するためのブロック図を示す。
図3】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてLPCメモリを管理するための或る例示的な方法を表すフローチャートを示す。
図4】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてLPCメモリを管理するための或る例示的な方法を表すフローチャートを示す。
図5】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてLPCメモリを管理するための或る例示的な方法を表すフローチャートを示す。
図6】本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてLPCメモリを管理するための或る例示的な方法を表すフローチャートを示す。
【発明を実施するための形態】
【0008】
本発明による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するための例示的な方法、装置、および製品を、添付の図面を参照しながら、図1から説明する。図1は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するように構成された例示的なコンピューティング・システム(152)を含む自動化コンピューティング・マシンのブロック図を示す。図1のコンピューティング・システム(152)は、少なくとも1つのコンピュータ・プロセッサ(156)または「CPU」と、高速メモリ・バス(166)およびバス・アダプタ(158)を介してプロセッサ(156)ならびにコンピューティング・システム(152)の他のコンポーネントに接続されているランダム・アクセス・メモリ(168)(「RAM」:random access memory)とを含む。
【0009】
RAM(168)中には、オペレーティング・システム(154)が格納されている。本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するように構成されたコンピュータの中で使えるオペレーティング・システムには、UNIX(R)、Linux(R)、マイクロソフト(R)のXP、AIX(IBM社の登録商標)、IBM(IBM社の登録商標)のiOS、および当業者が考え付く他のオペレーティング・システムが含まれる。図1の例中のオペレーティング・システム(154)はRAM(168)の中に示されているが、かかるソフトウェアの多くのコンポーネントは、通常、例えば、ディスク・ドライブ(170)上などの不揮発性メモリにも格納される。
【0010】
図1のコンピューティング・システム(152)は、拡張バス(160)およびバス・アダプタ(158)を介して、プロセッサ(156)およびコンピューティング・システム(152)の他のコンポーネントに連結されたディスク・ドライブ・アダプタ(172)を含む。ディスク・ドライブ・アダプタ(172)は、不揮発性データ・ストレージを、ディスク・ドライブ(170)の形でコンピューティング・システム(152)に接続する。本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するように構成されたコンピュータ中で使えるディスク・ドライブ・アダプタには、インテグレーテッド・ドライブ・エレクトロニクス(「IDE」:Integrated Drive Electronics)アダプタ、小型コンピュータ・システム・インターフェース(「SCSI」:Small Computer System Interface)アダプタ、および当業者が考え付く他のアダプタが含まれる。また、不揮発性コンピュータ・メモリは、当業者なら考え付くであろうが、光ディスク・ドライブ、電気的消去可能プログラマブル読み出し専用メモリ(いわゆる「EEPROM」または「フラッシュ」メモリ)、RAMドライブなどとして実装が可能である。
【0011】
図1の例示のコンピューティング・システム(152)は、1つ以上の入力/出力(「I/O」:input/output)アダプタ(178)を含む。I/Oアダプタは、例えば、コンピュータ・ディスプレイ・スクリーンなどの表示デバイスへの出力、ならびにキーボードおよびマウスなどのユーザ入力デバイス(181)からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを介して、ユーザ指向の入力/出力を実行する。図1の例示のコンピューティング・システム(152)は、ビデオ・アダプタ(209)を含み、これは、ディスプレイ・スクリーンまたはコンピュータ・モニタなどの表示デバイス(180)へのグラフィック出力のために特に設計されたI/Oアダプタの一例である。ビデオ・アダプタ(209)は、高速ビデオ・バス(164)と、バス・アダプタ(158)と、これも高速バスであるフロント・サイド・バス(162)とを介してプロセッサ(156)に接続される。
【0012】
図1の例示的なコンピューティング・システム(152)は、他のコンピュータ(182)とのデータ通信、およびデータ通信ネットワークとのデータ通信のための通信アダプタ(167)を含む。かかるデータ通信は、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などの外部バスを通して、IPデータ通信ネットワークなどのデータ通信ネットワークを通して、および当業者が考え付く他のやり方で、RS−232接続を介してシリアル方式で行われ得る。通信アダプタは、データ通信のハードウェア・レベルを実装し、これを通して、一つのコンピュータが、直接にまたはデータ通信ネットワークを介して別のコンピュータにデータ通信を送信する。本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するように構成されたコンピュータ中で使える通信アダプタの例には、有線ダイアルアップ通信用のモデム、有線データ通信用のイーサネット(R)(IEEE802.3)アダプタ、およびワイヤレスデータ通信用の802.11アダプタが含まれる。
【0013】
図1の例示的なコンピューティング・システム(152)は、プロセッサおよびRAM(168)を(バス・アダプタ(158)を介して)サービス・レイヤ・アダプタ(192)およびアクセラレータ機能ユニット(194)に接続する通信バス(190)を含む。
【0014】
図2は、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するように構成されたシステムの例示のブロック図である。図2は、アクセラレータ機能ユニット(194)と、メモリ(216)と、メディア・コントローラ(214)と、サービス・レイヤ・アダプタ(192)と、通信バス(190)と、プロセッサ(156)とを含む。サービス・レイヤ・アダプタ(192)は、変換サービス・レイヤ(202)と、コヒーレンシ・サービス・レイヤ(204)と、メモリ・レイヤ(206)と、リンク・アービタ(210)とを含む。メモリ・レイヤ(206)は、XTAGテーブル(208)とベース・アドレス・レジスタ(212)とを含む。
【0015】
アクセラレータ機能ユニット(AFU:accelerator functional unit)(194)は、コンピューティング・システムの機能を拡張するように構成されたアクセラレータである。AFU(194)は、特定のタスクまたはタスクの群を実行するため取付けられた、コンピューティング・システムのリムーバブル・コンポーネントであってよい。AFU(194)の例には、例えば、ネットワーク・インターフェース・カード、グラフィック・アクセラレータ・カード、およびストレージ・アダプタ・カードが含まれる。
【0016】
通信バス(190)は媒体であり、それを通ってコンピューティング・システム上のハードウェア・コンポーネントの間でデータが移動される。通信バス(190)は、通信バス(190)上で送られるデータを管理するバス・コントローラを含んでよい。例示の通信バス(190)は、ペリフェラル・コンポーネント・ インターコネクト・ エクスプレス(PCIe:peripheral component interconnect express)バスを含む。
【0017】
AFU(194)は、コヒーレンシベースのオペレーションおよびメモリ・アクセス命令を、通信バスを介して、コンピューティング・システム上の他のハードウェア素子に送信するように構成することが可能である。プロセッサ(156)は、AFU(194)に、プロセッサ(156)上のコヒーレント対称型マルチプロセッシング・バスへのアクセスを提供するコヒーレント・アクセラレータ・プロセッサ・プロキシを含んでよい。このプロキシは、AFU(194)が対称型マルチプロセッシング・コヒーレンシ・プロトコルに関与できるようにするコヒーレント・アクセラレータ・プロキシ・インターフェースによって使用されてよい。
【0018】
サービス・レイヤ・アダプタ(192)は、AFU(194)とコヒーレント・アクセラレータ・プロキシ・インターフェースとの間の通信を適合化する。サービス・レイヤ・アダプタ(192)とこのプロキシとの間の通信は、通信バスを介するプロセッサへのパケットの中にカプセル化される。サービス・レイヤ・アダプタ(192)は、フィールド・プログラマブル・ゲート・アレイまたは特殊用途向け集積回路など、外部のチップ上に実装されてもよい。
【0019】
サービス・レイヤ・アダプタ(192)は、AFU(194)によって開始されたコヒーレンシベースのオペレーションに対処するように構成することが可能である。サービス・レイヤ・アダプタ(192)は、変換サービス・レイヤ(202)と、コヒーレンシ・サービス・レイヤ(204)と、メモリ・レイヤ(206)とを含む。変換サービス・レイヤ(202)は、オペレーションに対するコンテキストを読み出し、有効アドレス−実アドレス変換(ERAT:effective−to−real address translation)を使って、有効アドレスを実アドレスに変換するための素子およびロジックを含むことができる。有効アドレスとは、メモリの位置を指すために、コンピューティング・システム中で素子およびプロセスによって用いられるアドレスである。但し、要求されるデータにアクセスするためには、有効アドレスは実アドレスに変換されなければならない。有効アドレスは、仮想アドレスと称してもよく、実アドレスは、物理アドレスと称してもよい。また、変換サービス・レイヤ(202)は、頻繁にアクセスされるコンテキストを格納するためのコンテキスト・キャッシュ、および頻繁にアクセスされる実アドレス変換を格納するためのERATキャッシュを含むことも可能である。
【0020】
コヒーレンシ・サービス・レイヤ(204)は、コヒーレンシベースのオペレーションを実行するための素子およびロジックを含むことができる。コヒーレンシ・サービス・レイヤ(204)は、AFU(194)からコンテキストベースの通信を(コヒーレンシ・インターフェースを介して)受信し、オペレーションに対処するために、サービス・レイヤ・アダプタ(192)中の他の諸レイヤと通信する。また、コヒーレンシ・サービス・レイヤ(204)は、コヒーレンシベースのオペレーションによって頻繁に対象とされるデータを格納するためのデータ・キャッシュを含むことも可能である。コヒーレンシ・サービス・レイヤ(204)は、さらに、AFU(194)とコンピューティング・システム上の他のメモリ位置との間のデータ・コヒーレンシを維持することに関する他のタスクも扱う。
【0021】
また、サービス・レイヤ・アダプタ(192)は、メモリ・レイヤ(206)を介して、メディア・コントローラ(214)およびメモリ(216)にメモリ・インターフェースを提供する。メモリ・レイヤ(206)は、メモリ(216)およびメディア・コントローラ(214)へのアクセスを提供し、コヒーレンシの最低点(LPC)メモリとしてのメモリ(216)へのアクセスを管理する。LPCメモリとしてのメモリ(216)の管理は、該メモリ(216)のコヒーレンシを維持するためのスヌーピング、およびLPCメモリ(216)と当該システム上の他の箇所に位置づけされたメモリとの間でのメモリ・アクセス要求の振り分けなど、該メモリに対してメモリ管理のユニット型サービスを提供することを含み得る。
【0022】
メモリ・レイヤ(206)は、AFU(194)にメモリ(216)へのアクセスを提供することができる。サービス・レイヤ・アダプタ(192)に属するメモリ(216)へのアクセスは、システム上の他の箇所のメモリにアクセスするよりも少ない待ち時間であり得る。さらに、メモリ(216)は、より大量のメモリを必要とする、またはそれにより利益を得るシステム上の他の素子に、部分的にまたは全体的に割り当てることが可能である。例えば、大量のメモリを必要とするアクティビティのためにプロセッサ(156)を活用することができる。メモリは、サービス・レイヤ・アダプタ(192)上のメモリ・インターフェースを介して、より低コストでまたはシステムのアップグレードの一部として備えることが可能である。
【0023】
さらに、メモリ(216)は、AFU(194)と、プロセッサ(156)など、システム上の他の素子との間で分割されてよい。そうすることによって、プロセッサ(156)または追加のメモリを必要とする他の素子のメモリのための予備を保ちながら、AFU(194)に、メモリへの低待ち時間のアクセスが提供される。このメモリは、RAMとは別個の、且つ、プロセッサおよびメモリ管理ユニットによって管理される他のメモリとも別個の揮発性メモリとすることができる。
【0024】
また、メモリ・レイヤ(206)はベース・レジスタ(212)も含む。ベース・アドレス・レジスタ(212)は、メモリ・マッピングがそこから開始されるベース・アドレスを提供する。ベース・アドレス・レジスタ(212)は、機能的に、メモリ・アクセス命令内のメモリ・アドレスを、メモリ(216)、プロセッサ(156)上のメモリ、およびホスト・システム上の他のサービス・レイヤ・アダプタに連結されているメモリを含め、システム上のいろいろなメモリ位置に振り分けることができる。
【0025】
メモリ・レイヤ(206)は、メモリ・インターフェースを介してメディア・コントローラ(214)と通信する。メディア・コントローラ(214)は、サービス・レイヤ・アダプタ(192)のメモリ・レイヤ(206)と、メモリ(216)との間の通信を円滑にするように構成されたデバイスである。メディア・コントローラ(214)は、それに取付けられるメモリ(216)デバイスの種類に対する固有のものであってよい。
【0026】
メディア・コントローラ(214)は、メモリ・インターフェースを介してメモリ・レイヤ(206)と通信することができる。メモリ・レイヤ(206)上のメモリ・インターフェースは、コヒーレンシ・サービス・レイヤ(204)上のコヒーレンシ・インターフェースとは別個の通信インターフェースであってよい。例えば、コヒーレンシ・インターフェースとメモリ・インターフェースとは、サービス・レイヤ・アダプタ(192)がその上に実装されているチップ上の別個のピンとすることができる。さらに、サービス・レイヤ・アダプタ(192)は、AFU(194)に接続を提供する複数のポートを含むことが可能である。これら接続を提供するポートは、AFU(194)によって、AFU(194)の要件に従い、メモリ・アクセス命令を配信するために使用されてよい。
【0027】
メモリ・レイヤ(206)は、変換タグ(XTAG)を用いて変換サービスを提供する。XTAGは、AFU(194)に提供され、実アドレスにマップされたXTAGテーブル(208)中に格納される。XTAGテーブル(208)は、XTAGを、プロセッサ(156)およびメモリ・レイヤ(206)によって使われる、実アドレスなどの内部アドレスにマップする。XTAGは、メモリ・アクセス命令内にあるメモリ位置を識別するため、AFU(194)によって使用される。AFU(194)は、プロセッサ(156)またはコンピューティング・システム上の他のデバイスによって使われる実アドレスへのアクセスもその知識も持たなくてよい。XTAGテーブル(208)がメモリ・レイヤ(206)内に示されているが、XTAGテーブル(208)は、サービス・レイヤ・アダプタ(192)上のどの場所に常駐してもよく、あるいはサービス・レイヤ・アダプタ(192)によってアクセスが可能であってよい。
【0028】
AFU(194)には、メモリ(216)からのメモリ、またはプロセッサ(156)上のメモリもしくはメモリ管理ユニットによって管理される他のメモリなど、システム上の他の箇所からのメモリが割り当てられてよい。AFU(194)は、サービス・レイヤ・アダプタ(192)を介してアクセスが可能なメモリの物理的位置は知らなくてもよい。言い換えれば、AFU(194)は、当該メモリの位置に関係なく、同じ命令セットを使って、サービス・レイヤ・アダプタ(192)を介して全ての割り当てられたメモリにアクセスすることになる。但し、サービス・レイヤ・アダプタ(192)に属するメモリは、システム上の他の箇所のメモリよりも短い待ち時間のアクセスを提供することが可能である。
【0029】
リンク・アービタ(210)は、変換レイヤに、サービス・レイヤ・アダプタ(192)と、諸プロセッサなど、コンピューティング・システム上の他のハードウェア素子との間の通信が円滑になるようにする。また、リンク・アービタ(210)は、キャッシュ・ミスが発生した場合、サービス・レイヤ・アダプタ(192)上の各種キャッシュ(例えば、コンテキスト・キャッシュ、ERATキャッシュなど)を更新するためのインターフェースも提供することが可能である。
【0030】
さらなる説明のために、図3は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するための或る例示的な方法を表すフローチャートを示す。図3の方法は、アダプタ(192)によって、アクセラレータ(194)からメモリ・アクセス命令(320)を受信するステップ(302)を含む。アダプタ(192)によって、アクセラレータ(194)からメモリ・アクセス命令(320)を受信するステップ(302)は、アダプタ(192)によって、アクセラレータ(194)から、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、有効アドレスを実アドレスに変換するステップと、アダプタ(192)によって、その実アドレスに対応する変換タグ(「XTAG」)をアクセラレータ(194)に提供するステップと、アダプタ(192)によって、アクセラレータ(194)からXTAGを含むメモリ・アクセス命令を受信するステップと、によって実行することが可能である。
【0031】
このメモリ・アクセス命令は、アダプタによって、アダプタ上のコヒーレンシ・インターフェースを介して受信することができる。これに換えて、メモリ・アクセス命令は、アクセラレータ(194)とアダプタ(192)とを連結している別のインターフェースによって受信されてもよい。例えば、アダプタ(192)が、直接メモリ・アクセス・インターフェースなど、メモリ・アクセス命令用に専用化されたインターフェースを備えることが可能である。
【0032】
また、図3の方法は、アダプタ(192)によって、メモリ・アクセス命令に対する実アドレスを読み出すステップ(304)も含む。アダプタ(192)によって、メモリ・アクセス命令に対する実アドレスを読み出すステップ(304)は、XTAGテーブルから、XTAGにマップされた実アドレスを取得し、アダプタによって、メモリ・アクセス命令の中のXTAGを実アドレスで置き換えることによって実行が可能である。実アドレスは、メモリ・アクセス命令からアルゴリズム的に導出することができる。例えば、アダプタ(192)は、実アドレスを得るために、XTAGなど、メモリ・アクセス命令の要素にアルゴリズムを適用することが可能である。
【0033】
また、アダプタ(192)によって、メモリ・アクセス命令に対する実アドレスを読み出すステップ(304)は、アダプタ(192)がメモリ中の対象位置にアクセスする許可をされていることを判断することによっても実行することが可能である。例えば、ERATまたは他の構造体は、アクセラレータ(194)または関連するコンテキストが、有効アドレスまたは関連する実アドレスによって識別される当該メモリにアクセスする許可を有するかどうかを示すことができる。
【0034】
また、図3の方法は、アダプタ(192)上のベース・アドレス・レジスタを使って、実アドレスがLPCメモリを対象としていることを判断するステップ(306)をも含み、該ベース・アドレス・レジスタは、メモリ・アクセス要求を、LPCメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける。アダプタ(192)上のベース・アドレス・レジスタを用い、当該実アドレスがLPCメモリを対象としていることを判断するステップ(306)であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、LPCメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップは、該実アドレスに対するベース・アドレスを判断し、組合されたベース・アドレスと実アドレスとを用いて、実アドレスに対するメモリが存在するシステム上の位置を判断することによって実行することが可能である。この位置は、メディア・コントローラ(214)に属するメモリ、プロセッサ上のメモリ、(システムRAMなどの)メモリ管理ユニットにより制御されるメモリ、またはシステム上の別のサービス・レイヤ・アダプタに属するメモリであり得る。
【0035】
また、図3の方法は、アダプタ(192)によって、メモリ・アクセス命令および実アドレス(326)を、LPCメモリに対するメディア・コントローラ(214)に送信するステップ(308)を含み、LPCメモリに対するメディア・コントローラ(214)はメモリ・インターフェースを介してアダプタ(192)に取付けられている。アダプタ(192)によって、メモリ・アクセス命令および実アドレス(326)を、LPCメモリに対するメディア・コントローラ(214)に送信するステップ(308)であって、当該LPCメモリに対するメディア・コントローラ(214)はメモリ・インターフェースを介してアダプタ(192)に取付けられている、該送信するステップは、メモリ・アクセス命令および実アドレス(326)を、メディア・コントローラ(214)に取付けられたメモリ・インターフェース上に置くことによって実行することが可能である。また、アダプタ(192)によって、メモリ・アクセス命令および実アドレス(326)を、LPCメモリに対するメディア・コントローラ(214)に送信するステップ(308)であって、該LPCメモリに対するメディア・コントローラ(214)はメモリ・インターフェースを介してアダプタ(192)に取付けられている、該送信するステップは、メディア・コントローラ(214)が、メモリ・アクセス命令を、その付属メモリによって当該メモリ・アクセス命令に対処するのに適した、下位レベルの命令に変換することによっても実行することが可能である。
【0036】
さらなる説明のために、図4は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するための或る例示的な方法を表すフローチャートを示し、本方法は、アダプタ(192)によって、アクセラレータ(194)からメモリ・アクセス命令(320)を受信するステップ(302)と、アダプタ(192)によって、該メモリ・アクセス命令に対する実アドレスを読み出すステップ(304)と、アダプタ(192)上のベース・アドレス・レジスタを使って、実アドレスがLPCメモリを対象としていることを判断するステップ(306)であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、LPCメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップと、アダプタ(192)によって、メモリ・アクセス命令および実アドレス(326)を、当該LPCメモリに対するメディア・コントローラ(214)に送信するステップ(308)であって、該LPCメモリに対するメディア・コントローラ(214)はメモリ・インターフェースを介してアダプタ(192)に取付けられている、該送信するステップと、を含む。
【0037】
但し、図4の方法は、図4が、プロセッサから後続のメモリ・アクセス命令を受信するステップ(402)をさらに含むという点で図3の方法とは異なる。プロセッサから後続のメモリ・アクセス命令を受信するステップ(402)は、実アドレスがサービス・レイヤ・アダプタ(192)に属するメモリ上のメモリ位置を対象としてプロセッサ上のコアまたは他の素子が後続のメモリ・アクセス命令を生成することによって実行が可能である。
このメモリ・アクセス命令は、プロセッサ上のベース・アドレス・レジスタを介してサービス・レイヤ・アダプタ(192)に向かわせることができる。
【0038】
図4の方法は、アダプタ上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がLPCメモリを対象としていることを判断するステップ(404)をさらに含む。アダプタ上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がLPCメモリを対象としていることを判断するステップ(404)は、当該実アドレスに対するベース・アドレスを判断し、組合されたベース・アドレスと実アドレスとを用いて、後続のメモリ・アクセス要求が、該アダプタ(192)に属するメモリ上の位置を対象としているのを判断することによって実行することが可能である。
【0039】
図4の方法は、アダプタ(192)によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス(328)を、LPCメモリに対するメディア・コントローラ(214)に送信するステップ(406)をさらに含む。アダプタ(192)によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス(328)を、LPCメモリに対するメディア・コントローラ(214)に送信するステップ(406)は、後続のメモリ・アクセス命令および実アドレス(328)を、メディア・コントローラ(214)に取付けられたメモリ・インターフェース上に置くことによって実行することが可能である。後続のメモリ・アクセス命令は、アクセラレータによってアクセスされるアダプタ(192)に属する同じメモリの一部を対象とすることが可能であるが、但し、プロセッサおよびアクセラレータ(194)は、それらがアクセスを許可されたメモリ上の位置に限定され得る。
【0040】
さらなる説明のために、図5は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するための或る例示的な方法を表すフローチャートを示し、本方法は、アダプタ(192)によって、アクセラレータ(194)からメモリ・アクセス命令(320)を受信するステップ(302)と、アダプタ(192)によって、該メモリ・アクセス命令に対する実アドレスを読み出すステップ(304)と、アダプタ(192)上のベース・アドレス・レジスタを使って、実アドレスがLPCメモリを対象としていることを判断するステップ(306)であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、LPCメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップと、アダプタ(192)によって、メモリ・アクセス命令および実アドレス(326)を、当該LPCメモリに対するメディア・コントローラ(214)に送信するステップ(308)であって、該LPCメモリに対するメディア・コントローラ(214)はメモリ・インターフェースを介してアダプタ(192)に取付けられている、該送信するステップと、を含む。
【0041】
但し、図5の方法は、図5が、アクセラレータ(194)から、後続のメモリ・アクセス命令を受信するステップ(502)をさらに含むという点で図3の方法とは異なる。アクセラレータ(194)から、後続のメモリ・アクセス命令を受信するステップ(502)は、XTAGを含む後続のメモリ・アクセス命令を受信することによって実行することが可能である。XTAGは、XTAGテーブルを用いて実アドレスに変換することができる。
【0042】
図5の方法は、アダプタ(192)上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がLPCメモリを対象としていないことを判断するステップ(504)をさらに含む。アダプタ(192)上のベース・アドレス・レジスタを使って、後続のメモリ・アクセス命令がLPCメモリを対象としていないことを判断するステップ(504)は、当該実アドレスに対するベース・アドレスを判断し、組合されたベース・アドレスと実アドレスとを用いて、後続のメモリ・アクセス要求が、アダプタ(192)に属するメモリ上でないメモリ位置を対象としているのを判断することによって実行することが可能である。
【0043】
図5の方法は、アダプタ(192)によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス(328)をプロセッサ(156)に送信するステップ(506)をさらに含む。アダプタ(192)によって、後続のメモリ・アクセス命令および後続のメモリ・アクセス命令に対する実アドレス(328)をプロセッサ(156)に送信するステップ(506)は、該プロセッサによって、後続のメモリ・アクセス命令(328)を受信し、(例えば、ベース・アドレス・レジスタを使って)対象とされたメモリ位置がプロセッサ上にあるのか、またはシステムの別のアダプタ上にあるのかを判断することによって、実行することが可能である。対象とされたメモリがプロセッサ・メモリである場合、プロセッサが当該後続のメモリ・アクセス要求に対処する。対象とされたメモリが、別のアダプタに属する場合、その後続のメモリ・アクセス要求は、当該メモリを管理するアダプタに転送されてよい。
【0044】
さらなる説明のために、図6は、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するための或る例示的な方法を表すフローチャートを示し、本方法は、アダプタ(192)によって、アクセラレータ(194)からメモリ・アクセス命令(320)を受信するステップ(302)と、アダプタ(192)によって、該メモリ・アクセス命令に対する実アドレスを読み出すステップ(304)と、アダプタ(192)上のベース・アドレス・レジスタを使って、実アドレスがLPCメモリを対象としていることを判断するステップ(306)であって、ベース・アドレス・レジスタが、メモリ・アクセス要求を、LPCメモリ位置とホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、該判断するステップと、アダプタ(192)によって、メモリ・アクセス命令および実アドレス(326)を、当該LPCメモリに対するメディア・コントローラ(214)に送信するステップ(308)であって、該LPCメモリに対するメディア・コントローラ(214)はメモリ・インターフェースを介してアダプタ(192)に取付けられている、該送信するステップと、を含む。
【0045】
但し、図6の方法は、アダプタ(192)によって、アクセラレータ(194)からメモリ・アクセス命令(320)を受信するステップ(302)が、アダプタ(192)によって、アクセラレータ(194)から、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップ(602)と、その有効アドレスを実アドレスに変換するステップ(604)と、アダプタ(192)によって、アクセラレータ(194)にその実アドレスに対応する変換タグ(「XTAG」)(330)を提供するステップ(606)と、アダプタ(192)によって、アクセラレータ(194)から、XTAG(332)を含むメモリ・アクセス命令を受信するステップ(608)と、を含むという点で図3の方法とは異なる。
【0046】
アダプタ(192)によって、アクセラレータ(194)から、有効アドレスを含むメモリ・アクセス・オペレーションを開始する要求、を受信するステップ(602)は、アクセラレータ(194)によって、メモリ・アクセス・オペレーションを開始する要求を、アダプタ(192)のコヒーレンシ・サービス・レイヤ上のコヒーレンシ・インターフェースに送信することによって実行することが可能である。メモリ・アクセス・オペレーションを開始する要求は、位置識別子,プロセス操作子、およびオペレーション識別子を含むことができる。この位置識別子は、アクセラレータが、プロセッサ、RAM、またはコンピューティング・システム上の他のハードウェア素子上のメモリ位置を参照するために用いるアドレスである。位置識別子は、例えば、有効アドレスであってよい。プロセス操作子は、要求に対するコンテキストの識別子である。このコンテキストは、アダプタ(192)によって、上記の位置識別子を対象のデバイスに理解される実アドレスに変換するために使用される。オペレーション識別子は、AFU(194)が開始しようとしている、メモリ・アクセス命令などのオペレーションの種類を識別できる。
【0047】
有効アドレスを実アドレスに変換するステップ(604)は、アダプタ上のERATを使って、有効アドレスを実アドレスに変換することによって実行することが可能である。アダプタ(192)によって、アクセラレータ(194)に当該実アドレスに対応する変換タグ(「XTAG」)(330)を提供するステップ(606)は、アダプタ(192)によって、メモリ・アクセス命令に対する実アドレスを判断し、その実アドレスを、アダプタ(192)上のXTAGテーブル中に格納することによって実行することが可能である。
【0048】
アダプタ(192)によって、アクセラレータ(194)から、XTAG(332)を含むメモリ・アクセス命令を受信するステップ(608)は、アクセラレータ(194)によって、XTAG(332)を含むメモリ・アクセス命令を、コヒーレンシ・インターフェース、または直接メモリ・アクセス・インターフェースなど別の専用化されたインターフェースを介してアダプタ(192)に送ることによって実行することが可能である。
【0049】
読者は、前述の説明を鑑み、本発明の諸実施形態による、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理する利益には以下が含まれることを認識されよう:
・ コヒーレント・インターフェースから独立したオープン・プロセッサ・メモリ・インターフェースをAFUに備えることによって、コンピュータ・システムのオペレーションを改良し、ストレージ・アクセス効率を向上する。
・ アダプタに取付けられたLPCメモリへの保護されたアクセスをAFUに備えることによって、コンピュータ・システムのオペレーションを改良し、待ち時間を低減する。
・ AFUにより、アダプタにローカルなおよびリモートなメモリへのメモリ・アクセスを管理することによって、コンピュータ・システムのオペレーションを改良し、メモリの整合性を向上する。
【0050】
本発明の例示的な諸実施形態は、主として、サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するため完全に機能するコンピュータ・システムのコンテキストで記述されている。しかしながら、当業者であれば、本発明はまた、任意の適切なデータ処理システムとともに使用するためにコンピュータ可読ストレージ媒体上に配置されたコンピュータ・プログラム製品中に具現化することも可能であることを認識していよう。かかるコンピュータ可読ストレージ媒体は、磁気媒体、光媒体、または他の適切な媒体を含め、マシン可読情報のための任意のストレージ媒体であってよい。かかる媒体の例には、ハード・ドライブ中の磁気ディスクまたはディスケット、光ドライブのためのコンパクト・ディスク、磁気テープ、および当業者が考え付く他の媒体が含まれる。当業者は、適切なプログラミング手段を備えるどのようなコンピュータ・システムであっても、コンピュータ・プログラム製品中に具現化された本発明の方法のステップを実行することが可能であろうことを即座に認識していよう。また、当業者は、本明細書中に記載された例示的な諸実施形態のいくつかは、コンピュータ・ハードウェア上にインストールされ実行されるソフトウェアを指向しているが、それにかかわらず、ファームウェアまたはハードウェアとして実装された代替の実施形態も同様に本発明の範囲内にあることを認識しているであろう。
【0051】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品またはこれらの組合せとすることができる。このコンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラムを有するコンピュータ可読ストレージ媒体(または媒体群)を含むことが可能である。
【0052】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持し格納できる有形のデバイスとすることができる。該コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例の非包括的リストには、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去およびプログラム可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM:static random access memory)、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、パンチカードまたは記録された命令を有する溝中の嵩上げ構造体などの機械的符号化デバイス、および前述の任意の適切な組合せが含まれる。本明細書で用いられるコンピュータ可読ストレージ媒体は、無線波または他の自由に伝播する電磁波、ウェーブガイドもしくは他の送信媒体(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通って送られる電気信号など、本質的に一時的な信号であると解釈されるべきではない。
【0053】
本明細書に述べられたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から、それぞれのコンピューティング/処理デバイスに、または、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくはワイヤレス・ネットワークまたはこれらの組合せなどのネットワークを介して、外部のコンピュータもしくは外部のストレージ・デバイスにダウンロードすることが可能である。このネットワークは、銅の送信ケーブル、光送信ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバまたはこれらの組合せを含んでもよい。それぞれのコンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、ストレージのため、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体の中に転送する。
【0054】
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令集合アーキテクチャ(ISA:instruction−set−architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来式の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。このコンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、またはプログラム可能論理アレイ(PLA:programmable logic array)を含む電子回路は、本発明の諸態様を実行すべく、該電子回路をパーソナライズするためコンピュータ可読プログラム命令の状態情報を利用することによって、該コンピュータ可読プログラム命令を実行することができる。
【0055】
本発明の諸態様は、本発明の諸実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら本明細書で説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装することが可能である。
【0056】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。また、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイスまたはこれらの組合せに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ可読プログラム命令を、コンピュータ可読ストレージ媒体に格納し、格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作の諸態様を実装する命令群を包含する製造品を構成するようにすることができる。
【0057】
さらに、これらコンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上で、他のプログラム可能装置上で、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上で、他のプログラム可能装置上でもしくは他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
【0058】
諸図面中のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための1つ以上の実行可能命令を含む、モジュール、セグメント、または命令の部分を表し得る。一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得る。例えば、連続して示された2つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組合せは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装でき、または特殊用途ハードウェアとコンピュータ命令との組合せによって実行できることにも留意されたい。
【0059】
前述の説明から当然のことながら、本発明の本来の趣旨から逸脱することなく、本発明の様々な実施形態に修改および変更を加えることが可能である。本明細書中の記述は、例証のためだけのものであり、限定する意味で解釈されるべきではない。本発明の範囲は、添付の特許請求の範囲の文言によってだけ限定される。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2019年9月18日
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理する方法であって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記方法は、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記LPCメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記LPCメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記LPCメモリに対するメディア・コントローラに送信するステップであって、前記LPCメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を含む、方法。
【請求項2】
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記LPCメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記アクセラレータから、前記LPCメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ(「XTAG」)を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記XTAGを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項1に記載の方法。
【請求項5】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項1に記載の方法。
【請求項6】
前記LPCメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項1に記載の方法。
【請求項7】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項1に記載の方法。
【請求項8】
サービス・レイヤ・アダプタを用いてコヒーレンシの最低点(LPC)メモリを管理するためのアダプタであって、前記アダプタは、ホスト・コンピューティング・システム上のプロセッサおよびアクセラレータに連結され、前記プロセッサは、対称型マルチプロセッシング用に構成され、前記アダプタが、
前記アダプタによって、前記アクセラレータからメモリ・アクセス命令を受信するステップと、
前記アダプタによって、前記メモリ・アクセス命令に対する実アドレスを読み出すステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記実アドレスが前記LPCメモリを対象としていることを判断するステップであって、前記ベース・アドレス・レジスタが、メモリ・アクセス要求を、前記LPCメモリ位置と前記ホスト・コンピューティング・システム上の他のメモリ位置との間で振り分ける、前記判断するステップと、
前記アダプタによって、前記メモリ・アクセス命令および前記実アドレスを、前記LPCメモリに対するメディア・コントローラに送信するステップであって、前記LPCメモリに対する前記メディア・コントローラはメモリ・インターフェースを介して前記アダプタに取付けられている、前記送信するステップと、
を実行するように構成される、アダプタ。
【請求項9】
前記ステップ群が、
前記プロセッサから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていることを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記LPCメモリに対する前記メディア・コントローラに送信するステップと、
をさらに含む、請求項8に記載のアダプタ。
【請求項10】
前記ステップ群が、
前記アクセラレータから、後続のメモリ・アクセス命令を受信するステップと、
前記アダプタ上のベース・アドレス・レジスタを使って、前記後続のメモリ・アクセス命令が前記LPCメモリを対象としていないことを判断するステップと、
前記アダプタによって、前記後続のメモリ・アクセス命令および前記後続のメモリ・アクセス命令に対する前記実アドレスを、前記プロセッサに送信するステップと、
をさらに含む、請求項8に記載のアダプタ。
【請求項11】
前記アクセラレータから、前記LPCメモリを対象としているメモリ・アクセス命令を受信するステップが、
前記アダプタによって、前記アクセラレータから、有効アドレスを含む、メモリ・アクセス・オペレーションを開始する要求を受信するステップと、
前記有効アドレスを前記実アドレスに変換するステップと、
前記アダプタによって、前記実アドレスに対応する変換タグ(「XTAG」)を前記アクセラレータに提供するステップと、
前記アダプタによって、前記アクセラレータから前記XTAGを含む前記メモリ・アクセス命令を受信するステップと、
を含む、請求項8に記載のアダプタ。
【請求項12】
前記他のメモリ位置が、プロセッサ・メモリ、および前記ホスト・コンピューティング・システム上のさらなるアダプタに連結されたメモリを含む、請求項8に記載のアダプタ。
【請求項13】
前記LPCメモリが、前記アクセラレータと前記プロセッサとの間で分割される、請求項8に記載のアダプタ。
【請求項14】
前記メモリ・アクセス命令が、前記アダプタ上のコヒーレンシ・インターフェースを介して、前記アダプタによって受信される、請求項8に記載のアダプタ。
【請求項15】
請求項1〜7の何れか1項に記載の方法の各ステップを、コンピュータ・ハードウェアによる手段として構成した、システム。
【請求項16】
請求項1〜7の何れか1項に記載の方法の各ステップを、コンピュータ・システムに実行させる、コンピュータ・プログラム。
【請求項17】
請求項16に記載の前記コンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【国際調査報告】