特許第6083714号(P6083714)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許6083714プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム
<>
  • 特許6083714-プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム 図000002
  • 特許6083714-プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム 図000003
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6083714
(24)【登録日】2017年2月3日
(45)【発行日】2017年2月22日
(54)【発明の名称】プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム
(51)【国際特許分類】
   G06F 12/08 20160101AFI20170213BHJP
【FI】
   G06F12/08 531E
   G06F12/08 531B
【請求項の数】10
【全頁数】13
(21)【出願番号】特願2014-546677(P2014-546677)
(86)(22)【出願日】2012年11月20日
(65)【公表番号】特表2015-504205(P2015-504205A)
(43)【公表日】2015年2月5日
(86)【国際出願番号】IB2012056562
(87)【国際公開番号】WO2013088283
(87)【国際公開日】20130620
【審査請求日】2014年12月24日
(31)【優先権主張番号】11194116.7
(32)【優先日】2011年12月16日
(33)【優先権主張国】EP
【前置審査】
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】カパロス・カベヤス・ヴィクトリア
(72)【発明者】
【氏名】ヨンゲリウス・リク
(72)【発明者】
【氏名】シュマツ・マーティン・レオ
(72)【発明者】
【氏名】スタンレーマーヴェル・フィリップ
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 特開2008−046701(JP,A)
【文献】 特開2008−176612(JP,A)
【文献】 米国特許第06438660(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08
(57)【特許請求の範囲】
【請求項1】
コンピュータ・メモリ制御ユニットのロジックによって実行される方法であって、
前記制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、
−前記第1のインターフェースを介して主物理メモリと、および、
−前記第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、
接続されるように適合され、
前記ロジックは、前記第1および第2のインターフェースに動作可能に結合され、
前記方法は、
前記第2のインターフェースを介して、前記セットの第1のプロセッサから前記主物理メモリのデータにアクセスするための要求を受信すること、
第2のプロセッサが、前記第1のプロセッサによって要求された前記データに以前にアクセスしたかどうかを評価すること、
評価が肯定的である場合、前記第1のプロセッサからの前記要求を延期すること、または、前記評価が否定的である場合、前記第1のプロセッサからの前記要求を許可すること、
前記第1のプロセッサからの前記要求を延期しながら、前記第1のプロセッサによって要求された前記データに関係するキャッシュ・ラインを前記主物理メモリにライト・バックするための要求を、前記第2のプロセッサに送信すること、
を含み、
前記評価は、前記第2のプロセッサが前記第1のプロセッサによって要求された前記データに関連付けられているかどうかを、前記制御ユニットの、プロセッサからの要求の許可時に該プロセッサを要求されたデータに関連付けるデータベース内でチェックすることを含む、方法。
【請求項2】
前記第2のプロセッサに前記要求を送信すること(S35)が、前記第2のプロセッサの割り込みピンを介して実行される、請求項1に記載の方法。
【請求項3】
前記第1のプロセッサからの前記要求を延期(S30)しながら、および前記第2のプロセッサに前記要求を送信(S35)した後、前記第2のプロセッサから前記制御ユニットによって受信された前記要求されたキャッシュ・ラインを前記主物理メモリに伝送するよう、前記制御ユニットに命令すること(S36)を含む、請求項2に記載の方法。
【請求項4】
前記第2のプロセッサが、すべての要求されたキャッシュ・ラインを前記主物理メモリにライト・バックすると、前記第1のプロセッサからの前記要求を許可すること(S42)を含む、請求項3に記載の方法。
【請求項5】
前記第1のプロセッサを、前記データベース内の前記第1のプロセッサによって要求された前記データに関連付けること(S38)を、さらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記第2のインターフェースは、ダブルデータレート動的ランダム・アクセス・メモリ(DDR DRAM)インターフェースである、請求項1からのいずれか一項に記載の方法。
【請求項7】
アクセスの管理の細分性は、物理メモリ・アドレスの領域(ブロックまたはページ)によるものである、請求項1からのいずれか一項に記載の方法。
【請求項8】
コンピュータ・メモリ制御ユニットであって、
前記制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、
−前記第1のインターフェースを介して主物理メモリと、および、
−前記第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、
接続されるように適合され、
前記制御ユニットは、前記第1および第2のインターフェースに動作可能に結合されたロジックを備え、請求項1からのいずれか一項に記載の方法を実行するように構成された、
コンピュータ・メモリ制御ユニット。
【請求項9】
前記第1のインターフェースを介して主物理メモリと、および、前記第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続される、請求項に記載のコンピュータ・メモリ制御ユニットを備えるシステム。
【請求項10】
コンピュータ・メモリ制御ユニットのロジックを実行するためのコンピュータ・プログラムであって、
前記ロジックを備えるコンピュータ・メモリ制御ユニットの第1および第2のインターフェースに動作可能に結合されるように適合され、前記制御ユニットは、前記第1のインターフェースを介して主物理メモリと、および、前記第2のインターフェースを介してN≧2個の非協働プロセッサのセットと接続され、前記プロセッサに請求項1からのいずれか一項に記載の方法を実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・サイエンスの分野に関し、より具体的に言えば、プロセッサによるメモリ共有のためのコンピュータ・メモリ制御ユニットのロジック(論理(logic))によって実装される方法、そのような論理を備えるコンピュータ・メモリ制御ユニット、そのような論理を構成するための命令を含むコンピュータ・プログラム、および、そのようなプログラムをその上に記録しているデータ記憶媒体に関する。
【背景技術】
【0002】
共有メモリ・アーキテクチャは、いくつかのプロセスがそれらのアドレス・スペースの一部を共有できるようにする。既存の共有メモリハードウェア・アーキテクチャおよびメモリを共有するためのそれらの対応するプロトコルは、協働プロセッサのセットを想定する。既存の可能性は、すべてのプロセッサが同じメモリ・アクセス・インターフェース・ハードウェアを実装し、これは標準的ではないが、それらが円滑に共有メモリにアクセスするためのプロセッサ間の協働に適合されていることである。他の既存の可能性は、
仮想共有メモリをエミュレートするように協働するために、互いにまたは中央ハードウェアと通信できるようにする特定のソフトウェア構成要素が、すべてのプロセッサ上にインストールされていることである。こうした既存の可能性は、メモリを共有している各プロセッサ上に、すなわち、一方のケースでは、協働のために適合された特定のハードウェア・インターフェース上、または、他方のケースでは、個々のプロセッサの非共有メモリを使用してエミュレートされる仮想共有メモリ上に、特定の構成要素がインストールされていることが必要である。そのため、そのようなアーキテクチャは、前者のケースでは達成するのに費用が掛かる複雑なもの、後者のケースでは物理共有メモリの性能を低下させるものとなる。
【0003】
異種アーキテクチャの人気が高まるにつれ、たとえ、問題のプロセッサが同じ(またはいずれかの)共有メモリ・プロトコル・インターフェースを実装できない場合であっても、メモリの共有領域を介して通信可能なプロセスを非同質なアーキテクチャが実行できるようにする、メカニズムの実装に対する関心が増加する。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】B.JacobおよびT.Mudgeによる、「Virtual memory in contemporarymicroprocessors」と題するIEEE Micro、18:60〜75、1998年7月の論文
【発明の概要】
【発明が解決しようとする課題】
【0005】
したがって、メモリ共有のための改良されたソリューションが求められている。
【課題を解決するための手段】
【0006】
一態様によれば、本発明は、コンピュータ・メモリ制御ユニットの論理によって実装される方法として具体化される。制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。論理は、当該第1および第2のインターフェースに、動作可能に結合される。方法は、当該第2のインターフェースを介して、セットの第1のプロセッサから主物理メモリのデータにアクセスするための要求を受信することを含む。方法は、第2のプロセッサが、第1のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価することも含む。方法は、評価が肯定的である場合、第1のプロセッサからの要求を延期すること、または、評価が否定的である場合、第1のプロセッサからの要求を許可することを、さらに含む。
【0007】
例示において、方法は、以下の特徴のうちの1つまたは複数を含むことができる。
−方法は、第1のプロセッサからの要求を延期しながら、第1のプロセッサによって要求されたデータに関係するキャッシュ・ラインを主物理メモリにライト・バック(write back)するための要求を、第2のプロセッサに送信することを含むことができる。
−第2のプロセッサに要求を送信することが、第2のプロセッサの割り込みピンを介して実行される。
−方法は、第1のプロセッサからの要求を延期しながら、および第2のプロセッサに要求を送信した後、第2のプロセッサから制御ユニットによって受信された要求されたキャッシュ・ラインを主物理メモリに伝送するよう、制御ユニットに命令することを含む。
−方法は、第2のプロセッサが、すべての要求されたキャッシュ・ラインを主物理メモリにライト・バックすると、第1のプロセッサからの要求を許可する。
−評価は、第2のプロセッサが第1のプロセッサによって要求されたデータに関連付けられているかどうかを、制御ユニットのデータベース内でチェックすることを含む。
−方法は、第1のプロセッサを、データベース内の第1のプロセッサによって要求されたデータに関連付けることを、さらに含む。
−第2のインターフェースは、ダブルデータレート(double-data-rate)動的ランダム・アクセス・メモリ(DDR DRAM)インターフェースである。および/または
−アクセスの管理の細分性は、物理メモリ・アドレスの領域(ブロックまたはページ)によるものである。
【0008】
他の態様によれば、本発明は、コンピュータ・メモリ制御ユニットとして具体化される。制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。制御ユニットは、当該第1および第2のインターフェースに動作可能に結合され、上記方法を実行するように構成された、論理を備える。
【0009】
他の態様によれば、本発明は、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと接続された、上記のコンピュータ・メモリ制御ユニットを備える、システムとして具体化される。
【0010】
他の態様によれば、論理を備えるコンピュータ・メモリ制御ユニットの第1のインターフェースおよび第2のインターフェースに動作可能に結合されるように適合された、コンピュータ・メモリ制御ユニットのロジックを実行するためのコンピュータ・プログラムとして具体化され、制御ユニットが第1のインターフェースを介して主物理メモリと、および第2のインターフェース、当該プロセッサ、を介してN≧2個の非協働プロセッサのセットとに接続され、前記プロセッサに上記方法を実行させるものである。
【0011】
他の態様によれば、本発明は、上記コンピュータ・プログラムをその上に記録したデータ記憶媒体として具体化される。
【0012】
次に、本発明を具体化しているシステムおよびプロセスについて、非限定的な例として、添付の図面を参照しながら説明する。
【図面の簡単な説明】
【0013】
図1】方法の例を示す流れ図である。
図2】コンピュータ・メモリ制御ユニットを備えるシステムを示すグラフ図である。
【発明を実施するための形態】
【0014】
コンピュータ・メモリ制御ユニットの論理によって実装される方法が提案される。制御ユニットは、少なくとも1つの第1のインターフェースおよび(いくつかの)第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。論理は、当該第1および第2のインターフェースに、動作可能に結合される。方法は、当該第2のインターフェースを介して、セットの第1のプロセッサから主物理メモリのデータにアクセスするための要求を受信することを含む。方法は、第2のプロセッサが、第1のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価することも含む。方法は、評価が肯定的である場合、第1のプロセッサからの要求を延期すること、または、評価が否定的である場合、第1のプロセッサからの要求を許可することを、さらに含む。こうした方法によって、改良された方法で、第1のインターフェースを介して制御ユニットに接続されたメモリを共有するために、第2のインターフェースを介してN個のプロセッサを制御ユニットに接続することが可能となる。
【0015】
(コンピュータ・メモリ)制御ユニットは、コンピュータなどのシステムに統合することが可能な複数のプロセッサによる物理メモリへのアクセスを制御するのに適した、ハードウェア材料である。
【0016】
制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備える。言い換えれば、制御ユニットは、少なくとも1つのインターフェースの第1のセット(すなわち「第1のインターフェース」)および少なくとも2つのインターフェースの第2のセット(「第2のインターフェース」)を備える。一方の第1のインターフェースおよび他方の第2のインターフェースは、すべて、(接続などの)ハードウェア要素および(所与のインターフェースを介して制御ユニットによって受信された信号を解釈するため、および/または、所与のインターフェースを介して信号を伝送するための、プログラムなどの)ソフトウェア要素を備えるハードウェアと、接続するためのツールであり、第1のインターフェースおよび第2のインターフェースは、制御ユニットを異なる材料に接続するのに適しているという点で異なる。実際には、一方で制御ユニットは、そのように適した第1のインターフェースを介して(このケースでは事実上、コンピュータの)主物理メモリに接続されるように適合される。他方で制御ユニットは、第2のインターフェースを介してプロセッサに接続されるように適合される。第2のインターフェースは少なくとも2つであるため、少なくとも合計3つのインターフェース(少なくとも1つの第1のインターフェースおよび少なくとも2つの第2のインターフェース)が存在することになる。このように制御ユニットは、N≧2個の非協働プロセッサのセットに接続することができる。
【0017】
主メモリは、第1のインターフェースに合致する対応するインターフェースを備える1つのユニットとすることができる。別の方法として主メモリは、いくつかのインターフェース、このケースでは場合によっていくつかの第1のインターフェースを有する制御ユニットを有することが可能であるか、または主メモリは、それぞれが1つまたはいくつかのインターフェースを有するいくつかのユニット、このケースではいくつかの、たとえばユニット当たり少なくとも1つの、第1のインターフェースを有する制御ユニット内に、存在することが可能である。
【0018】
プロセッサは標準のプロセッサであり得るため、非協働的であると言われる。たとえばプロセッサは、プロセッサ間の協働のために特別に設計されたいずれのハードウェア構成要素も排除することができる。またプロセッサは、協働を考慮してプロセッサ間での通信を可能にするために設計された複雑なソフトウェアを記録していることも排除することができる。したがって方法は、安価で容易な方法での、いくつかのプロセッサによるメモリの共有を可能にする。ある例では、プロセッサは異なるマイクロアーキテクチャおよび仮想メモリ・インターフェース定義を有することができる。したがって方法は、たとえこれらのプロセッサが異なる場合であっても、いくつかのプロセッサによるメモリの共有を可能にする。第2のインターフェースは、広範に知られた標準であり、実装が安価で容易な、ダブルデータレート・インターフェースとすることができる。また、第2のインターフェースのうちの少なくとも2つは異なるものとすることができる。
【0019】
方法は、場合によっては異なるアーキテクチャおよび仮想メモリ・インターフェースを定義するプロセッサが、メモリの共有領域を介して通信できるようにする、ハードウェア・アーキテクチャおよび対応するアクセス・プロトコルをカバーしている。したがって方法は、標準DRAMの電気的およびプロトコル・インターフェースのレベルで動作することができる。一実施形態において、業界標準ダブルデータレート(DDR)インターフェースは、DRAMアレイからのデータの可用性を示す信号を用いて拡張される。既存のDDRインターフェースは、すでに、類似の(ただしオプションの)DQSおよびRDQS信号を有している。これらの信号はオプションであるため、現在多くの実装では、データが固定遅延後に使用可能であるものと想定している。方法は、商品プロセッサが、そのアーキテクチャおよび仮想メモリ・インターフェース定義に関係なく、JEDEC標準化DDRメモリ・インターフェースなどの物理的な標準化メモリ・インターフェースを介して、主メモリにアクセスするという事実に依拠する。
【0020】
したがって制御ユニット(コヒーレンス制御ユニットまたはCCUと呼ぶこともある)は、あらゆるプロセッサおよび主メモリに接続され、どちらの接続も場合によっては、標準化メモリ・インターフェース、たとえばJEDEC標準DDRメモリ・インターフェースを用いる。したがって、以下で言及されるすべてのメモリ・アドレスは、物理DRAMアドレスを指すことができる。しかしながら、プロセッサ・アーキテクチャおよびメモリ・モジュール全体にわたって広範にサポートされている任意の他のメモリ・インターフェースも、使用可能である。
【0021】
制御ユニットは、さらに論理を備える。論理は、処理機能を有し、例えばメモリ上に記憶された命令によって、所定の方式に従う、ハードウェアを備える。論理は、当該第1および第2のインターフェースに動作可能に結合される。言い換えれば、論理はインターフェースへのアクセスを有し、したがって、インターフェースを介して渡される情報を処理することができる。したがって論理は、インターフェースを介して制御ユニット外部から制御ユニットによって受信される情報を、受信および処理することが可能であり、かつ/または、論理は、インターフェースを介して制御ユニット外部に情報を送信するよう、制御ユニットに命令することが可能である。
【0022】
次に、制御ユニットの論理によって実行される方法について、方法の例示の流れ図を示す図1を参照しながら説明する。
【0023】
例示の方法は、アイドル状態を維持すること(S5)を含む。こうしたケースでは、論理は、アクションを実行するまで、方法の第1のアクティブ・イベントが発生するのを待機する。さらに論理は、そのアクションを完了したときに、アイドル状態に戻ることができる。
【0024】
方法は、セットの第1のプロセッサから主物理メモリのデータにアクセスするための要求を、第2のインターフェースを介して受信すること(S10)を含む。言い換えれば、セットのプロセッサ、「第1」のプロセッサは、主物理メモリへのアクセスを要求する。この要求は、プロセッサが主メモリに直接接続されているかのように実行される。言い換えればプロセッサは、制御ユニットを「認識」せず、通常のケースのように、主メモリに直接されているように動作する。
【0025】
次に方法は、第2のプロセッサが、第1のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価すること(S20)を含む。言い換えれば論理は、他のプロセッサ、「第2」のプロセッサが、第1のプロセッサによって要求された同じデータにすでにアクセスしたかどうかを検証する。この例では、評価(S20)は、第2のプロセッサが、第1のプロセッサによって要求されたデータに関連付けられているかどうかを、制御ユニットのデータベース内でチェックすることを含む。したがって、制御ユニットはこうしたデータベース、および、これを記憶するための専用メモリ(たとえば内部メモリ、または主メモリの一部)を含むことが可能である。こうしたデータベースは、主メモリのデータ(たとえばその識別子)にプロセッサ(たとえばその識別子)を関連付ける、ルックアップ・テーブルからなるものとすることができる。これによって、制御ユニットは、主メモリの同じデータへのほぼ同時のアクセスを要求するプロセッサ間での衝突を、回避することができる。
【0026】
実際には、評価(S20)が肯定的である(すなわち、第2のプロセッサは、現在第1のプロセッサによって要求されている同じデータへのアクセスを以前に要求した)場合、衝突が存在する可能性がある(すなわち、2つのプロセッサが同じデータについて作業しており、場合によっては、他方と修正を共有せずに修正するか、または他方によって修正された修正を修正されたことを知らずに読み取り、したがって修正を読み取らない可能性がある)。したがって方法は、こうしたケースでは、第1のプロセッサからの要求を延期すること(S30)(すなわち保留にすること)を含む。これによって、衝突が生じないことを保証し、こうした事態を回避するためのアクションを実装するための時間が提供される。言い換えれば(すなわち、評価(S20)が、まだいかなるプロセッサもデータを要求していないという結果を引き出す場合)、方法は、評価が否定的である場合、第1のプロセッサからの要求を許可すること(S41)を含む。
【0027】
この例では、方法は、第1のプロセッサからの要求を延期(S30)しながら(すなわち、第1のプロセッサからの要求が保留にされながら)、並行して、キャッシュ・ラインを主物理メモリにライト・バックするための要求を第2のプロセッサに送信すること(S35)を含む。ライト・バックするように要求されたキャッシュ・ラインは、第1のプロセッサによって要求されたデータに関係するものとすることができる。言い換えれば論理は、第2のプロセッサ、すなわち、第1のプロセッサによって要求された同じデータにアクセスしているプロセッサに、そのキャッシュ上に記憶されたすべてのデータ(または要求されたデータのみに関係するデータ)を制御ユニットに送信するように要求する。これは、第2のプロセッサの割り込みピンを介して実行可能である。こうしたデータが存在する(すなわち、第2のプロセッサがまだそのキャッシュ・ラインをライト・バックしていない)場合、論理はこのデータの受信を監視し(流れ図には図示せず)、第2のプロセッサから制御ユニットによって受信される要求されたキャッシュ・ラインを、主物理メモリに伝送するよう、制御ユニットに命令する(S36)。言い換えれば論理は、主物理メモリへのデータの転送を保証する。したがって、第2のプロセッサによって実行されていたデータについての作業が、主メモリにコミットされる。
【0028】
第2のプロセッサからの完了信号を(論理によって)受信すること(S37)によって検証可能である、第2のプロセッサがすべての要求されたキャッシュ・ラインを主物理メモリにライト・バックすると、方法は、第1のプロセッサからの要求を許可すること(S42)を含むことができる。
【0029】
許可(S41)および許可(S42)は同じアクションを実装するが、方法の異なるステップが先行するという事実によって、異なる基準を有する。
【0030】
この例では、第1のプロセッサの要求を許可する(S41、S42)前に、およびこうした許可(S41、S42)時に、方法は、第1のプロセッサを、データベース内の第1のプロセッサによって要求されたデータに関連付けること(S38)をさらに有する。このように、方法のさらなる実行が続けられることが補償される。第2のプロセッサが存在し、評価(S20)の結果が肯定的であった場合、第1のプロセッサはデータベース内の第2のプロセッサを置き換えることができる。
【0031】
この例では、第1のプロセッサの要求を許可すること(S41、S42)は、要求を主物理メモリに伝送するよう、制御ユニットに命令すること(S39)、およびその後、主物理メモリから戻されたデータを第1のプロセッサに転送するよう、制御ユニットに命令すること(S40)を含む。実際には、プロセッサ(第1のプロセッサを含む)は、それらが主メモリに直接接続されているかのように動作するが、制御ユニットはすべての信号を遮断し、それらを管理する。これについては、図2を参照しながら制御ユニットについて説明する際に明らかとなろう。
【0032】
効率的な最適化として、メモリ内のデータ項目のアドレスは、CCU内でCCU物理ページと呼ばれるブロックにグループ化することが可能であり、データ所有のすべての管理はこうした細分性で実行される。これによって、たとえば、CCUがそのデータベース内に維持しなければならないことになるエントリの数を削減することが可能であるが、ステップS35でより多くのデータをメモリにライト・バックする必要が生じる可能性がある。
【0033】
方法は共有メモリ・プロトコルを提供し、同質のメモリ編成を用いてより適切に実行される。したがって制御ユニットは、共通のアドレス・スペースを定義することが可能であり、物理メモリは、個別のプロセッサ内で使用されるページ・サイズに関係なく、共有の物理ページに分割することが可能である。各プロセッサは、それぞれが独自のページ数およびページ・サイズを備える異なる仮想メモリ・インターフェースを実装可能である。たとえば、32ビットPowerPCおよびx86アーキテクチャ(プロセッサのうちの1つがこうした機能を提示することが可能である)の場合、物理ページ・サイズは4KBとすることが可能であるが、DEC/Compaq Alphaの場合、8KB(プロセッサのうちの1つがこうした機能を提示することが可能である)とすることが可能である。これは、たとえばB.JacobおよびT.Mudgeによる、「Virtual memory in contemporarymicroprocessors」と題するIEEE Micro、18:60〜75、1998年7月の論文で説明されている。
【0034】
制御ユニットは、各プロセッサによる物理アドレス要求を、物理ページIDルックアップ・テーブル(PPIDT)などの、データベース(たとえば統合メモリ・アドレス・スペース)内の対応する制御ユニットの物理ページ数に変換することができる。いくつかの基準を使用して、共通制御ユニット・ページ・サイズを選択することができる。制御ユニット・ページ・サイズが大きくなると、PPIDT内のエントリ数は少なくなるが、制御ユニットがプロセッサにライト・バック要求を通知する場合、メモリにライト・バックされることになる項目がより多く必要であるため、性能が低下することになる。
【0035】
このケースでは、共有データは制御ユニットの物理ページの細分性で追跡され、すなわち、共有メモリ位置へのデータ・アクセスは、その位置に関連付けられた物理ページ識別子(PPI)によって識別される。CCUはあらゆるDRAMメモリ・アクセスを監視する。マッピング・テーブルを使用して、共有位置へのメモリ・アクセスの発生時に開始されたプロセッサの識別、および、アクセスされ共有されたページに関連付けられたPPIを記録する。この情報は、異なるプロセッサが同じ物理位置へのアクセスを試行する場合、整合性を保証するために使用される。
【0036】
次に、図1を参照しながら提供されたものと同様の、方法を実施する他の例について考察する。この例の特徴は、図1を参照しながら提供された例に統合することができる。
【0037】
この例では、初期に、CCUはアイドル状態である。プロセッサがメモリからの読み取りを開始すると、プロセッサからDRAMへと進む要求はCCUによって遮断される。その後CCUは、物理ページIDルックアップ・テーブル(PPIDT)に対してプロセッサ内のルックアップを実行する。このルックアップを使用して、要求されたデータが配置された物理ページが、異なるプロセッサによって以前に要求された(したがって潜在的に修正された)かどうかが特定される。アドレスに対応するPPIDがテーブル内に存在しない場合、プロセッサはDRAMにアクセスし、CCUはPPIDTを更新して、プロセッサを対応する共通物理ページにマッピングする新しいエントリを追加する。その後、DRAMからプロセッサへのデータの移動が、CCUによって開始される。
【0038】
異なるプロセッサが同じ物理メモリ・ページ内のデータへのアクセスを試行すると、PPIDTルックアップにより、ページが異なるプロセッサによって以前に読み取られたことが明らかにされる。その場合、データの整合性を保証するために、CCUは、PPDIT内にプロセッサと共に列挙される物理ページに対応するすべてのキャッシュ・ラインをライト・バックするための要求を、プロセッサに送信する。この要求は、汎用プロセッサ割り込みピンを通る割り込み信号を用いて実装される。CCUは、メモリ書き込みが完了された旨をプロセッサの信号が戻すまで待機しなければならず、これは、汎用入出力ピン、または非キャッシュ可能アドレスへの書き込みを介して実行することが可能である。
【0039】
データがメモリにライト・バックされたことが保証されると、CCUはPPIDT内の古いエントリを除去し、対応するCCU物理メモリ・ページのPPIDを含むプロセッサ用に新しいエントリを作成して、PPIDTを更新する。最後にCCUは、対応するプロセッサにデータを転送できるように、主メモリへの要求を開始する。
【0040】
DRAMに(そのメモリ・コントローラを介して)直接接続された場合のように、プロセッサが固定遅延後にデータ・ワード内のクロック制御を開始しないことが保証されなければならない。これを保証するための1つの手法は、標準インターフェースがDDRである実施形態において、CCUを使用するプロセッサが、各読み取り要求時にオプションのDQS DDRインターフェース信号を実装する(および忠実に監視する)ことを保証することであり、これによってプロセッサは、有効なデータが使用可能であることを知ることができる。可能な代替の手法は、メモリDIMM上の順次存在検出(SPD)EEPROMに記憶され、起動時にプロセッサによって読み取られる、既存のメモリ・タイミング・セットアップ情報を無効にすることを含む場合がある。DRAMからのデータが準備されると、CCUによって対応するプロセッサに転送される。
【0041】
上記の説明によれば、PPIDTは、プロセッサが新しいトランザクションを開始すると必ず更新される。しかしながら、その間にプロセッサ・キャッシュがフラッシュされるか、または、新しいエントリをテーブル内に追加させたデータが、より新しいデータを割り振るために退去(evict)させられる可能性がある。この状況では、CCUはプロセッサ・キャッシュ内の変更を検出できない可能性がある。したがってCCUは、特定のデータ項目がメモリから退去させられたかどうかを予測できるように、異なるプロセッサ・キャッシュに関するキャッシュ置換を内部にモデル化しなければならない。CCU内でのモデル化が不可能な状況では、それぞれのキャッシュ内のすべてのラインが退去させられなければならない可能性がある。
【0042】
代替の実装は、プロセッサごとに1つの制御ユニットを有すること、および、場合によってはCCU間の相互接続ネットワークを使用する、制御ユニットの異なるインスタンスの同期化からなるものとすることができる。
【0043】
ここで、論理はコンピュータ・メモリ制御ユニットの一部とすることができる。制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。制御ユニットは、ここでも再度、当該第1および第2のインターフェースに動作可能に結合され、方法を実行するように構成された論理を、さらに備える。こうしたコンピュータ・メモリ制御ユニットは、複数の非協働プロセッサが、効率的、安価、および単純な方法で、同じ主物理メモリを共有できるようにする。
【0044】
コンピュータ・メモリ制御ユニットは、それ自体が、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続された、コンピュータ・メモリ制御ユニットを備える、システムの一部とすることができる。
【0045】
図2は、主物理メモリを共有する複数のプロセッサを備えるコンピュータ・システム、または、主物理メモリ(場合によっては仮想メモリ)を共有する複数のコンピュータ(ならびに複数のプロセッサ)を備えるコンピュータ・ネットワークとすることが可能な、システムの例示のハードウェアを示すブロック図である。
【0046】
この例では、システム200は、コンピュータ・メモリ制御ユニット100を備える。コンピュータ・メモリ制御ユニット100は、第1のインターフェース110を介して主物理メモリ210に(システム200の一部にも)接続される。コンピュータ・メモリ制御ユニット100は、第2のインターフェース120を介して、さらに3つのプロセッサ220に接続される。
【0047】
したがって制御ユニット100は、少なくとも1つの第1のインターフェース110および少なくとも2つの第2のインターフェース120(この例では8つ)を備え、第1のインターフェース110を介して主物理メモリ210と、および第2のインターフェース120を介して非協働プロセッサ220と、接続されるように適合される。制御ユニット100は、データパス115を介して第1のインターフェース110および第2のインターフェース120に動作可能に結合され、方法を実行するように構成された、(制御)論理130をさらに備える。第2のインターフェース120はそれぞれ、キャッシュ・ラインをライト・バックするための要求を当該プロセッサ220に送信するために、プロセッサ220の割り込みピンを介して信号を送信するように適合された、インタラプタ(interruptor)125を備える。
【0048】
データパス115は、制御論理130によって送信されるか、または任意のインターフェース(110、120)によって受信される情報を、中心に集めるように適合される。データパス115はそのために、リダイレクト・マルチプレクサ、ライト・バック・バッファ、および/またはバスなどの、データを指示するための手段のいずれか、または組み合わせを備えることができる。
【0049】
制御ユニット100は、プロセッサ220によって受信される要求をキューに入れるように適合された、要求キュー140も備える。制御ユニット100は、構成レジスタ150、およびPPIDT165を記憶する内部メモリ160も、備える。このため、制御ユニット100は、プロセッサ220から受信された要求を、主メモリ210の所与のページにアクセスするための要求として解釈するように適合され、ルックアップ・テーブル165によって、他のプロセッサ220が以前、当該所与のページにアクセスしたかどうかを評価することが可能である。
【0050】
当業者であれば理解されるように、本発明の態様は、コンピュータ化されたシステム、システムを使用または構成するための方法、あるいは、方法を実行するためのコンピュータ・プログラム製品として、具体化することができる。したがって本発明は、完全にハードウェア実施形態、完全にソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、本明細書ではすべてを全体として「回路」、「モジュール」、または「システム」と呼ぶことが可能なソフトウェアおよびハードウェアの態様を組み合わせた実施形態の、形を取ることができる。さらに本発明の態様は、その上にコンピュータ読み取り可能プログラム・コードが記録された、1つまたは複数のコンピュータ読み取り可能媒体(すなわちデータ記憶媒体)内に具体化される、コンピュータ・プログラム製品の形を取ることができる。
【0051】
1つまたは複数のコンピュータ読み取り可能媒体の、任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、あるいは、半導体のシステム、装置、またはデバイス、あるいはそれらの任意の適切な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能記憶媒体のより特定の例(非網羅的リスト)は、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、またはそれらの任意の組み合わせを、含むことになる。本明細書との関連において、コンピュータ読み取り可能記憶媒体、すなわちデータ記憶媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、含むかまたは記憶することが可能な、任意の有形媒体とすることができる。
【0052】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードと共に、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の適切な組み合わせを含むが、これらに限定されない、様々な形のうちのいずれかの形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、通信、伝搬、または移送することが可能な、いずれかのコンピュータ読み取り可能媒体とすることができる。
【0053】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、RFなど、またはそれらの任意の適切な組み合わせを含むが、これらに限定されない、任意の適切な媒体を使用して伝送することができる。
【0054】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、あるいは、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、一部はユーザのコンピュータ上および一部はリモート・コンピュータ上で、あるいは、完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介して、ユーザのコンピュータに接続することが可能であるか、あるいは、(たとえばインターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続することができる。
図1
図2