(57)【要約】【課題】コンピュータ・メモリ制御ユニットの論理によって実装される方法を提案する。【解決手段】制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、第１のインターフェースを介して主物理メモリと、および第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続されるように適合され、論理は、当該第１および第２のインターフェースに、動作可能に結合される。方法は、当該第２のインターフェースを介して、セットの第１のプロセッサから主物理メモリのデータにアクセスするための要求を受信すること（Ｓ１０）、第２のプロセッサが、第１のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価すること（Ｓ２０）、および、評価（Ｓ２０）が肯定的である場合、第１のプロセッサからの要求を延期すること（Ｓ３０）、または、評価が否定的である場合、第１のプロセッサからの要求を許可すること（Ｓ４０）を含む。【選択図】  図１
2015504205.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・メモリ制御ユニットの論理によって実装される方法であって、
前記制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、
−前記第１のインターフェースを介して主物理メモリと、および、
−前記第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、
接続されるように適合され、
前記論理は、前記第１および第２のインターフェースに動作可能に結合され、
前記方法は、
前記第２のインターフェースを介して、前記セットの第１のプロセッサから前記主物理メモリのデータにアクセスするための要求を受信すること（Ｓ１０）、
第２のプロセッサが、前記第１のプロセッサによって要求された前記データに以前にアクセスしたかどうかを評価すること（Ｓ２０）、および、
評価（Ｓ２０）が肯定的である場合、前記第１のプロセッサからの前記要求を延期すること（Ｓ３０）、または、前記評価が否定的である場合、前記第１のプロセッサからの前記要求を許可すること（Ｓ４１）、
を含む、方法。
【請求項２】
前記第１のプロセッサからの前記要求を延期（Ｓ３０）しながら、前記第１のプロセッサによって要求された前記データに関係するキャッシュ・ラインを前記主物理メモリにライト・バックするための要求を、前記第２のプロセッサに送信すること（Ｓ３５）を含む、請求項１に記載の方法。
【請求項３】
前記第２のプロセッサに前記要求を送信すること（Ｓ３５）が、前記第２のプロセッサの割り込みピンを介して実行される、請求項２に記載の方法。
【請求項４】
前記第１のプロセッサからの前記要求を延期（Ｓ３０）しながら、および前記第２のプロセッサに前記要求を送信（Ｓ３５）した後、前記第２のプロセッサから前記制御ユニットによって受信された前記要求されたキャッシュ・ラインを前記主物理メモリに伝送するよう、前記制御ユニットに命令すること（Ｓ３６）を含む、請求項３に記載の方法。
【請求項５】
前記第２のプロセッサが、すべての要求されたキャッシュ・ラインを前記主物理メモリにライト・バックすると、前記第１のプロセッサからの前記要求を許可すること（Ｓ４２）を含む、請求項４に記載の方法。
【請求項６】
前記評価（Ｓ２０）は、第２のプロセッサが前記第１のプロセッサによって要求された前記データに関連付けられているかどうかを、前記制御ユニットのデータベース内でチェックすることを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記第１のプロセッサを、前記データベース内の前記第１のプロセッサによって要求された前記データに関連付けること（Ｓ３８）を、さらに含む、請求項６に記載の方法。
【請求項８】
前記第２のインターフェースは、ダブルデータレート動的ランダム・アクセス・メモリ（ＤＤＲ  ＤＲＡＭ）インターフェースである、請求項１から７のいずれか一項に記載の方法。
【請求項９】
アクセスの管理の細分性は、物理メモリ・アドレスの領域（ブロックまたはページ）によるものである、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
コンピュータ・メモリ制御ユニットであって、
前記制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、
−前記第１のインターフェースを介して主物理メモリと、および、
−前記第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、
接続されるように適合され、
前記制御ユニットは、前記第１および第２のインターフェースに動作可能に結合された論理を備え、請求項１から９のいずれか一項に記載の方法を実行するように構成された、
コンピュータ・メモリ制御ユニット。
【請求項１１】
前記第１のインターフェースを介して主物理メモリと、および、前記第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続される、請求項１０に記載のコンピュータ・メモリ制御ユニットを備えるシステム。
【請求項１２】
論理を構成するための命令を備えるコンピュータ・プログラムであって、前記論理を備えるコンピュータ・メモリ制御ユニットの第１および第２のインターフェースに動作可能に結合されるように適合され、前記制御ユニットは、前記第１のインターフェースを介して主物理メモリと、および、前記第２のインターフェース、前記プロセッサ、を介してＮ≧２個の非協働プロセッサのセットと、接続されるように適合され、前記命令は、請求項１から９のいずれか一項に記載の方法を実行するように前記論理を構成するためのものである、コンピュータ・プログラム。
【請求項１３】
請求項１２に記載のコンピュータ・プログラムをその上に記録している、データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・サイエンスの分野に関し、より具体的に言えば、プロセッサによるメモリ共有のためのコンピュータ・メモリ制御ユニットのロジック（論理（logic））によって実装される方法、そのような論理を備えるコンピュータ・メモリ制御ユニット、そのような論理を構成するための命令を含むコンピュータ・プログラム、および、そのようなプログラムをその上に記録しているデータ記憶媒体に関する。
【背景技術】
【０００２】
共有メモリ・アーキテクチャは、いくつかのプロセスがそれらのアドレス・スペースの一部を共有できるようにする。既存の共有メモリハードウェア・アーキテクチャおよびメモリを共有するためのそれらの対応するプロトコルは、協働プロセッサのセットを想定する。既存の可能性は、すべてのプロセッサが同じメモリ・アクセス・インターフェース・ハードウェアを実装し、これは標準的ではないが、それらが円滑に共有メモリにアクセスするためのプロセッサ間の協働に適合されていることである。他の既存の可能性は、
仮想共有メモリをエミュレートするように協働するために、互いにまたは中央ハードウェアと通信できるようにする特定のソフトウェア構成要素が、すべてのプロセッサ上にインストールされていることである。こうした既存の可能性は、メモリを共有している各プロセッサ上に、すなわち、一方のケースでは、協働のために適合された特定のハードウェア・インターフェース上、または、他方のケースでは、個々のプロセッサの非共有メモリを使用してエミュレートされる仮想共有メモリ上に、特定の構成要素がインストールされていることが必要である。そのため、そのようなアーキテクチャは、前者のケースでは達成するのに費用が掛かる複雑なもの、後者のケースでは物理共有メモリの性能を低下させるものとなる。
【０００３】
異種アーキテクチャの人気が高まるにつれ、たとえ、問題のプロセッサが同じ（またはいずれかの）共有メモリ・プロトコル・インターフェースを実装できない場合であっても、メモリの共有領域を介して通信可能なプロセスを非同質なアーキテクチャが実行できるようにする、メカニズムの実装に対する関心が増加する。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｂ．ＪａｃｏｂおよびＴ．Ｍｕｄｇｅによる、「Virtual memory in contemporarymicroprocessors」と題するＩＥＥＥ  Ｍｉｃｒｏ、１８：６０〜７５、１９９８年７月の論文
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、メモリ共有のための改良されたソリューションが求められている。
【課題を解決するための手段】
【０００６】
一態様によれば、本発明は、コンピュータ・メモリ制御ユニットの論理によって実装される方法として具体化される。制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、第１のインターフェースを介して主物理メモリと、および第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続されるように適合される。論理は、当該第１および第２のインターフェースに、動作可能に結合される。方法は、当該第２のインターフェースを介して、セットの第１のプロセッサから主物理メモリのデータにアクセスするための要求を受信することを含む。方法は、第２のプロセッサが、第１のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価することも含む。方法は、評価が肯定的である場合、第１のプロセッサからの要求を延期すること、または、評価が否定的である場合、第１のプロセッサからの要求を許可することを、さらに含む。
【０００７】
例示において、方法は、以下の特徴のうちの１つまたは複数を含むことができる。
−方法は、第１のプロセッサからの要求を延期しながら、第１のプロセッサによって要求されたデータに関係するキャッシュ・ラインを主物理メモリにライト・バック（write back）するための要求を、第２のプロセッサに送信することを含むことができる。
−第２のプロセッサに要求を送信することが、第２のプロセッサの割り込みピンを介して実行される。
−方法は、第１のプロセッサからの要求を延期しながら、および第２のプロセッサに要求を送信した後、第２のプロセッサから制御ユニットによって受信された要求されたキャッシュ・ラインを主物理メモリに伝送するよう、制御ユニットに命令することを含む。
−方法は、第２のプロセッサが、すべての要求されたキャッシュ・ラインを主物理メモリにライト・バックすると、第１のプロセッサからの要求を許可する。
−評価は、第２のプロセッサが第１のプロセッサによって要求されたデータに関連付けられているかどうかを、制御ユニットのデータベース内でチェックすることを含む。
−方法は、第１のプロセッサを、データベース内の第１のプロセッサによって要求されたデータに関連付けることを、さらに含む。
−第２のインターフェースは、ダブルデータレート（double-data-rate）動的ランダム・アクセス・メモリ（ＤＤＲ  ＤＲＡＭ）インターフェースである。および／または
−アクセスの管理の細分性は、物理メモリ・アドレスの領域（ブロックまたはページ）によるものである。
【０００８】
他の態様によれば、本発明は、コンピュータ・メモリ制御ユニットとして具体化される。制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、第１のインターフェースを介して主物理メモリと、および第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続されるように適合される。制御ユニットは、当該第１および第２のインターフェースに動作可能に結合され、上記方法を実行するように構成された、論理を備える。
【０００９】
他の態様によれば、本発明は、第１のインターフェースを介して主物理メモリと、および第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと接続された、上記のコンピュータ・メモリ制御ユニットを備える、システムとして具体化される。
【００１０】
他の態様によれば、論理を備えるコンピュータ・メモリ制御ユニットの第１のインターフェースおよび第２のインターフェースに動作可能に結合されるように適合された、コンピュータ・メモリ制御ユニットのロジックを実行するためのコンピュータ・プログラムとして具体化され、制御ユニットが第１のインターフェースを介して主物理メモリと、および第２のインターフェース、当該プロセッサ、を介してＮ≧２個の非協働プロセッサのセットとに接続され、前記プロセッサに上記方法を実行させるものである。
【００１１】
他の態様によれば、本発明は、上記コンピュータ・プログラムをその上に記録したデータ記憶媒体として具体化される。
【００１２】
次に、本発明を具体化しているシステムおよびプロセスについて、非限定的な例として、添付の図面を参照しながら説明する。
【図面の簡単な説明】
【００１３】
【図１】方法の例を示す流れ図である。
【図２】コンピュータ・メモリ制御ユニットを備えるシステムを示すグラフ図である。
【発明を実施するための形態】
【００１４】
コンピュータ・メモリ制御ユニットの論理によって実装される方法が提案される。制御ユニットは、少なくとも１つの第１のインターフェースおよび（いくつかの）第２のインターフェースを備え、第１のインターフェースを介して主物理メモリと、および第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続されるように適合される。論理は、当該第１および第２のインターフェースに、動作可能に結合される。方法は、当該第２のインターフェースを介して、セットの第１のプロセッサから主物理メモリのデータにアクセスするための要求を受信することを含む。方法は、第２のプロセッサが、第１のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価することも含む。方法は、評価が肯定的である場合、第１のプロセッサからの要求を延期すること、または、評価が否定的である場合、第１のプロセッサからの要求を許可することを、さらに含む。こうした方法によって、改良された方法で、第１のインターフェースを介して制御ユニットに接続されたメモリを共有するために、第２のインターフェースを介してＮ個のプロセッサを制御ユニットに接続することが可能となる。
【００１５】
（コンピュータ・メモリ）制御ユニットは、コンピュータなどのシステムに統合することが可能な複数のプロセッサによる物理メモリへのアクセスを制御するのに適した、ハードウェア材料である。
【００１６】
制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備える。言い換えれば、制御ユニットは、少なくとも１つのインターフェースの第１のセット（すなわち「第１のインターフェース」）および少なくとも２つのインターフェースの第２のセット（「第２のインターフェース」）を備える。一方の第１のインターフェースおよび他方の第２のインターフェースは、すべて、（接続などの）ハードウェア要素および（所与のインターフェースを介して制御ユニットによって受信された信号を解釈するため、および／または、所与のインターフェースを介して信号を伝送するための、プログラムなどの）ソフトウェア要素を備えるハードウェアと、接続するためのツールであり、第１のインターフェースおよび第２のインターフェースは、制御ユニットを異なる材料に接続するのに適しているという点で異なる。実際には、一方で制御ユニットは、そのように適した第１のインターフェースを介して（このケースでは事実上、コンピュータの）主物理メモリに接続されるように適合される。他方で制御ユニットは、第２のインターフェースを介してプロセッサに接続されるように適合される。第２のインターフェースは少なくとも２つであるため、少なくとも合計３つのインターフェース（少なくとも１つの第１のインターフェースおよび少なくとも２つの第２のインターフェース）が存在することになる。このように制御ユニットは、Ｎ≧２個の非協働プロセッサのセットに接続することができる。
【００１７】
主メモリは、第１のインターフェースに合致する対応するインターフェースを備える１つのユニットとすることができる。別の方法として主メモリは、いくつかのインターフェース、このケースでは場合によっていくつかの第１のインターフェースを有する制御ユニットを有することが可能であるか、または主メモリは、それぞれが１つまたはいくつかのインターフェースを有するいくつかのユニット、このケースではいくつかの、たとえばユニット当たり少なくとも１つの、第１のインターフェースを有する制御ユニット内に、存在することが可能である。
【００１８】
プロセッサは標準のプロセッサであり得るため、非協働的であると言われる。たとえばプロセッサは、プロセッサ間の協働のために特別に設計されたいずれのハードウェア構成要素も排除することができる。またプロセッサは、協働を考慮してプロセッサ間での通信を可能にするために設計された複雑なソフトウェアを記録していることも排除することができる。したがって方法は、安価で容易な方法での、いくつかのプロセッサによるメモリの共有を可能にする。ある例では、プロセッサは異なるマイクロアーキテクチャおよび仮想メモリ・インターフェース定義を有することができる。したがって方法は、たとえこれらのプロセッサが異なる場合であっても、いくつかのプロセッサによるメモリの共有を可能にする。第２のインターフェースは、広範に知られた標準であり、実装が安価で容易な、ダブルデータレート・インターフェースとすることができる。また、第２のインターフェースのうちの少なくとも２つは異なるものとすることができる。
【００１９】
方法は、場合によっては異なるアーキテクチャおよび仮想メモリ・インターフェースを定義するプロセッサが、メモリの共有領域を介して通信できるようにする、ハードウェア・アーキテクチャおよび対応するアクセス・プロトコルをカバーしている。したがって方法は、標準ＤＲＡＭの電気的およびプロトコル・インターフェースのレベルで動作することができる。一実施形態において、業界標準ダブルデータレート（ＤＤＲ）インターフェースは、ＤＲＡＭアレイからのデータの可用性を示す信号を用いて拡張される。既存のＤＤＲインターフェースは、すでに、類似の（ただしオプションの）ＤＱＳおよびＲＤＱＳ信号を有している。これらの信号はオプションであるため、現在多くの実装では、データが固定遅延後に使用可能であるものと想定している。方法は、商品プロセッサが、そのアーキテクチャおよび仮想メモリ・インターフェース定義に関係なく、ＪＥＤＥＣ標準化ＤＤＲメモリ・インターフェースなどの物理的な標準化メモリ・インターフェースを介して、主メモリにアクセスするという事実に依拠する。
【００２０】
したがって制御ユニット（コヒーレンス制御ユニットまたはＣＣＵと呼ぶこともある）は、あらゆるプロセッサおよび主メモリに接続され、どちらの接続も場合によっては、標準化メモリ・インターフェース、たとえばＪＥＤＥＣ標準ＤＤＲメモリ・インターフェースを用いる。したがって、以下で言及されるすべてのメモリ・アドレスは、物理ＤＲＡＭアドレスを指すことができる。しかしながら、プロセッサ・アーキテクチャおよびメモリ・モジュール全体にわたって広範にサポートされている任意の他のメモリ・インターフェースも、使用可能である。
【００２１】
制御ユニットは、さらに論理を備える。論理は、処理機能を有し、例えばメモリ上に記憶された命令によって、所定の方式に従う、ハードウェアを備える。論理は、当該第１および第２のインターフェースに動作可能に結合される。言い換えれば、論理はインターフェースへのアクセスを有し、したがって、インターフェースを介して渡される情報を処理することができる。したがって論理は、インターフェースを介して制御ユニット外部から制御ユニットによって受信される情報を、受信および処理することが可能であり、かつ／または、論理は、インターフェースを介して制御ユニット外部に情報を送信するよう、制御ユニットに命令することが可能である。
【００２２】
次に、制御ユニットの論理によって実行される方法について、方法の例示の流れ図を示す図１を参照しながら説明する。
【００２３】
例示の方法は、アイドル状態を維持すること（Ｓ５）を含む。こうしたケースでは、論理は、アクションを実行するまで、方法の第１のアクティブ・イベントが発生するのを待機する。さらに論理は、そのアクションを完了したときに、アイドル状態に戻ることができる。
【００２４】
方法は、セットの第１のプロセッサから主物理メモリのデータにアクセスするための要求を、第２のインターフェースを介して受信すること（Ｓ１０）を含む。言い換えれば、セットのプロセッサ、「第１」のプロセッサは、主物理メモリへのアクセスを要求する。この要求は、プロセッサが主メモリに直接接続されているかのように実行される。言い換えればプロセッサは、制御ユニットを「認識」せず、通常のケースのように、主メモリに直接されているように動作する。
【００２５】
次に方法は、第２のプロセッサが、第１のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価すること（Ｓ２０）を含む。言い換えれば論理は、他のプロセッサ、「第２」のプロセッサが、第１のプロセッサによって要求された同じデータにすでにアクセスしたかどうかを検証する。この例では、評価（Ｓ２０）は、第２のプロセッサが、第１のプロセッサによって要求されたデータに関連付けられているかどうかを、制御ユニットのデータベース内でチェックすることを含む。したがって、制御ユニットはこうしたデータベース、および、これを記憶するための専用メモリ（たとえば内部メモリ、または主メモリの一部）を含むことが可能である。こうしたデータベースは、主メモリのデータ（たとえばその識別子）にプロセッサ（たとえばその識別子）を関連付ける、ルックアップ・テーブルからなるものとすることができる。これによって、制御ユニットは、主メモリの同じデータへのほぼ同時のアクセスを要求するプロセッサ間での衝突を、回避することができる。
【００２６】
実際には、評価（Ｓ２０）が肯定的である（すなわち、第２のプロセッサは、現在第１のプロセッサによって要求されている同じデータへのアクセスを以前に要求した）場合、衝突が存在する可能性がある（すなわち、２つのプロセッサが同じデータについて作業しており、場合によっては、他方と修正を共有せずに修正するか、または他方によって修正された修正を修正されたことを知らずに読み取り、したがって修正を読み取らない可能性がある）。したがって方法は、こうしたケースでは、第１のプロセッサからの要求を延期すること（Ｓ３０）（すなわち保留にすること）を含む。これによって、衝突が生じないことを保証し、こうした事態を回避するためのアクションを実装するための時間が提供される。言い換えれば（すなわち、評価（Ｓ２０）が、まだいかなるプロセッサもデータを要求していないという結果を引き出す場合）、方法は、評価が否定的である場合、第１のプロセッサからの要求を許可すること（Ｓ４１）を含む。
【００２７】
この例では、方法は、第１のプロセッサからの要求を延期（Ｓ３０）しながら（すなわち、第１のプロセッサからの要求が保留にされながら）、並行して、キャッシュ・ラインを主物理メモリにライト・バックするための要求を第２のプロセッサに送信すること（Ｓ３５）を含む。ライト・バックするように要求されたキャッシュ・ラインは、第１のプロセッサによって要求されたデータに関係するものとすることができる。言い換えれば論理は、第２のプロセッサ、すなわち、第１のプロセッサによって要求された同じデータにアクセスしているプロセッサに、そのキャッシュ上に記憶されたすべてのデータ（または要求されたデータのみに関係するデータ）を制御ユニットに送信するように要求する。これは、第２のプロセッサの割り込みピンを介して実行可能である。こうしたデータが存在する（すなわち、第２のプロセッサがまだそのキャッシュ・ラインをライト・バックしていない）場合、論理はこのデータの受信を監視し（流れ図には図示せず）、第２のプロセッサから制御ユニットによって受信される要求されたキャッシュ・ラインを、主物理メモリに伝送するよう、制御ユニットに命令する（Ｓ３６）。言い換えれば論理は、主物理メモリへのデータの転送を保証する。したがって、第２のプロセッサによって実行されていたデータについての作業が、主メモリにコミットされる。
【００２８】
第２のプロセッサからの完了信号を（論理によって）受信すること（Ｓ３７）によって検証可能である、第２のプロセッサがすべての要求されたキャッシュ・ラインを主物理メモリにライト・バックすると、方法は、第１のプロセッサからの要求を許可すること（Ｓ４２）を含むことができる。
【００２９】
許可（Ｓ４１）および許可（Ｓ４２）は同じアクションを実装するが、方法の異なるステップが先行するという事実によって、異なる基準を有する。
【００３０】
この例では、第１のプロセッサの要求を許可する（Ｓ４１、Ｓ４２）前に、およびこうした許可（Ｓ４１、Ｓ４２）時に、方法は、第１のプロセッサを、データベース内の第１のプロセッサによって要求されたデータに関連付けること（Ｓ３８）をさらに有する。このように、方法のさらなる実行が続けられることが補償される。第２のプロセッサが存在し、評価（Ｓ２０）の結果が肯定的であった場合、第１のプロセッサはデータベース内の第２のプロセッサを置き換えることができる。
【００３１】
この例では、第１のプロセッサの要求を許可すること（Ｓ４１、Ｓ４２）は、要求を主物理メモリに伝送するよう、制御ユニットに命令すること（Ｓ３９）、およびその後、主物理メモリから戻されたデータを第１のプロセッサに転送するよう、制御ユニットに命令すること（Ｓ４０）を含む。実際には、プロセッサ（第１のプロセッサを含む）は、それらが主メモリに直接接続されているかのように動作するが、制御ユニットはすべての信号を遮断し、それらを管理する。これについては、図２を参照しながら制御ユニットについて説明する際に明らかとなろう。
【００３２】
効率的な最適化として、メモリ内のデータ項目のアドレスは、ＣＣＵ内でＣＣＵ物理ページと呼ばれるブロックにグループ化することが可能であり、データ所有のすべての管理はこうした細分性で実行される。これによって、たとえば、ＣＣＵがそのデータベース内に維持しなければならないことになるエントリの数を削減することが可能であるが、ステップＳ３５でより多くのデータをメモリにライト・バックする必要が生じる可能性がある。
【００３３】
方法は共有メモリ・プロトコルを提供し、同質のメモリ編成を用いてより適切に実行される。したがって制御ユニットは、共通のアドレス・スペースを定義することが可能であり、物理メモリは、個別のプロセッサ内で使用されるページ・サイズに関係なく、共有の物理ページに分割することが可能である。各プロセッサは、それぞれが独自のページ数およびページ・サイズを備える異なる仮想メモリ・インターフェースを実装可能である。たとえば、３２ビットＰｏｗｅｒＰＣおよびｘ８６アーキテクチャ（プロセッサのうちの１つがこうした機能を提示することが可能である）の場合、物理ページ・サイズは４ＫＢとすることが可能であるが、ＤＥＣ／Ｃｏｍｐａｑ  Ａｌｐｈａの場合、８ＫＢ（プロセッサのうちの１つがこうした機能を提示することが可能である）とすることが可能である。これは、たとえばＢ．ＪａｃｏｂおよびＴ．Ｍｕｄｇｅによる、「Virtual memory in contemporarymicroprocessors」と題するＩＥＥＥ  Ｍｉｃｒｏ、１８：６０〜７５、１９９８年７月の論文で説明されている。
【００３４】
制御ユニットは、各プロセッサによる物理アドレス要求を、物理ページＩＤルックアップ・テーブル（ＰＰＩＤＴ）などの、データベース（たとえば統合メモリ・アドレス・スペース）内の対応する制御ユニットの物理ページ数に変換することができる。いくつかの基準を使用して、共通制御ユニット・ページ・サイズを選択することができる。制御ユニット・ページ・サイズが大きくなると、ＰＰＩＤＴ内のエントリ数は少なくなるが、制御ユニットがプロセッサにライト・バック要求を通知する場合、メモリにライト・バックされることになる項目がより多く必要であるため、性能が低下することになる。
【００３５】
このケースでは、共有データは制御ユニットの物理ページの細分性で追跡され、すなわち、共有メモリ位置へのデータ・アクセスは、その位置に関連付けられた物理ページ識別子（ＰＰＩ）によって識別される。ＣＣＵはあらゆるＤＲＡＭメモリ・アクセスを監視する。マッピング・テーブルを使用して、共有位置へのメモリ・アクセスの発生時に開始されたプロセッサの識別、および、アクセスされ共有されたページに関連付けられたＰＰＩを記録する。この情報は、異なるプロセッサが同じ物理位置へのアクセスを試行する場合、整合性を保証するために使用される。
【００３６】
次に、図１を参照しながら提供されたものと同様の、方法を実施する他の例について考察する。この例の特徴は、図１を参照しながら提供された例に統合することができる。
【００３７】
この例では、初期に、ＣＣＵはアイドル状態である。プロセッサがメモリからの読み取りを開始すると、プロセッサからＤＲＡＭへと進む要求はＣＣＵによって遮断される。その後ＣＣＵは、物理ページＩＤルックアップ・テーブル（ＰＰＩＤＴ）に対してプロセッサ内のルックアップを実行する。このルックアップを使用して、要求されたデータが配置された物理ページが、異なるプロセッサによって以前に要求された（したがって潜在的に修正された）かどうかが特定される。アドレスに対応するＰＰＩＤがテーブル内に存在しない場合、プロセッサはＤＲＡＭにアクセスし、ＣＣＵはＰＰＩＤＴを更新して、プロセッサを対応する共通物理ページにマッピングする新しいエントリを追加する。その後、ＤＲＡＭからプロセッサへのデータの移動が、ＣＣＵによって開始される。
【００３８】
異なるプロセッサが同じ物理メモリ・ページ内のデータへのアクセスを試行すると、ＰＰＩＤＴルックアップにより、ページが異なるプロセッサによって以前に読み取られたことが明らかにされる。その場合、データの整合性を保証するために、ＣＣＵは、ＰＰＤＩＴ内にプロセッサと共に列挙される物理ページに対応するすべてのキャッシュ・ラインをライト・バックするための要求を、プロセッサに送信する。この要求は、汎用プロセッサ割り込みピンを通る割り込み信号を用いて実装される。ＣＣＵは、メモリ書き込みが完了された旨をプロセッサの信号が戻すまで待機しなければならず、これは、汎用入出力ピン、または非キャッシュ可能アドレスへの書き込みを介して実行することが可能である。
【００３９】
データがメモリにライト・バックされたことが保証されると、ＣＣＵはＰＰＩＤＴ内の古いエントリを除去し、対応するＣＣＵ物理メモリ・ページのＰＰＩＤを含むプロセッサ用に新しいエントリを作成して、ＰＰＩＤＴを更新する。最後にＣＣＵは、対応するプロセッサにデータを転送できるように、主メモリへの要求を開始する。
【００４０】
ＤＲＡＭに（そのメモリ・コントローラを介して）直接接続された場合のように、プロセッサが固定遅延後にデータ・ワード内のクロック制御を開始しないことが保証されなければならない。これを保証するための１つの手法は、標準インターフェースがＤＤＲである実施形態において、ＣＣＵを使用するプロセッサが、各読み取り要求時にオプションのＤＱＳ  ＤＤＲインターフェース信号を実装する（および忠実に監視する）ことを保証することであり、これによってプロセッサは、有効なデータが使用可能であることを知ることができる。可能な代替の手法は、メモリＤＩＭＭ上の順次存在検出（ＳＰＤ）ＥＥＰＲＯＭに記憶され、起動時にプロセッサによって読み取られる、既存のメモリ・タイミング・セットアップ情報を無効にすることを含む場合がある。ＤＲＡＭからのデータが準備されると、ＣＣＵによって対応するプロセッサに転送される。
【００４１】
上記の説明によれば、ＰＰＩＤＴは、プロセッサが新しいトランザクションを開始すると必ず更新される。しかしながら、その間にプロセッサ・キャッシュがフラッシュされるか、または、新しいエントリをテーブル内に追加させたデータが、より新しいデータを割り振るために退去（evict）させられる可能性がある。この状況では、ＣＣＵはプロセッサ・キャッシュ内の変更を検出できない可能性がある。したがってＣＣＵは、特定のデータ項目がメモリから退去させられたかどうかを予測できるように、異なるプロセッサ・キャッシュに関するキャッシュ置換を内部にモデル化しなければならない。ＣＣＵ内でのモデル化が不可能な状況では、それぞれのキャッシュ内のすべてのラインが退去させられなければならない可能性がある。
【００４２】
代替の実装は、プロセッサごとに１つの制御ユニットを有すること、および、場合によってはＣＣＵ間の相互接続ネットワークを使用する、制御ユニットの異なるインスタンスの同期化からなるものとすることができる。
【００４３】
ここで、論理はコンピュータ・メモリ制御ユニットの一部とすることができる。制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、第１のインターフェースを介して主物理メモリと、および第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続されるように適合される。制御ユニットは、ここでも再度、当該第１および第２のインターフェースに動作可能に結合され、方法を実行するように構成された論理を、さらに備える。こうしたコンピュータ・メモリ制御ユニットは、複数の非協働プロセッサが、効率的、安価、および単純な方法で、同じ主物理メモリを共有できるようにする。
【００４４】
コンピュータ・メモリ制御ユニットは、それ自体が、第１のインターフェースを介して主物理メモリと、および第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続された、コンピュータ・メモリ制御ユニットを備える、システムの一部とすることができる。
【００４５】
図２は、主物理メモリを共有する複数のプロセッサを備えるコンピュータ・システム、または、主物理メモリ（場合によっては仮想メモリ）を共有する複数のコンピュータ（ならびに複数のプロセッサ）を備えるコンピュータ・ネットワークとすることが可能な、システムの例示のハードウェアを示すブロック図である。
【００４６】
この例では、システム２００は、コンピュータ・メモリ制御ユニット１００を備える。コンピュータ・メモリ制御ユニット１００は、第１のインターフェース１１０を介して主物理メモリ２１０に（システム２００の一部にも）接続される。コンピュータ・メモリ制御ユニット１００は、第２のインターフェース１２０を介して、さらに３つのプロセッサ２２０に接続される。
【００４７】
したがって制御ユニット１００は、少なくとも１つの第１のインターフェース１１０および少なくとも２つの第２のインターフェース１２０（この例では８つ）を備え、第１のインターフェース１１０を介して主物理メモリ２１０と、および第２のインターフェース１２０を介して非協働プロセッサ２２０と、接続されるように適合される。制御ユニット１００は、データパス１１５を介して第１のインターフェース１１０および第２のインターフェース１２０に動作可能に結合され、方法を実行するように構成された、（制御）論理１３０をさらに備える。第２のインターフェース１２０はそれぞれ、キャッシュ・ラインをライト・バックするための要求を当該プロセッサ２２０に送信するために、プロセッサ２２０の割り込みピンを介して信号を送信するように適合された、インタラプタ（interruptor）１２５を備える。
【００４８】
データパス１１５は、制御論理１３０によって送信されるか、または任意のインターフェース（１１０、１２０）によって受信される情報を、中心に集めるように適合される。データパス１１５はそのために、リダイレクト・マルチプレクサ、ライト・バック・バッファ、および／またはバスなどの、データを指示するための手段のいずれか、または組み合わせを備えることができる。
【００４９】
制御ユニット１００は、プロセッサ２２０によって受信される要求をキューに入れるように適合された、要求キュー１４０も備える。制御ユニット１００は、構成レジスタ１５０、およびＰＰＩＤＴ１６５を記憶する内部メモリ１６０も、備える。このため、制御ユニット１００は、プロセッサ２２０から受信された要求を、主メモリ２１０の所与のページにアクセスするための要求として解釈するように適合され、ルックアップ・テーブル１６５によって、他のプロセッサ２２０が以前、当該所与のページにアクセスしたかどうかを評価することが可能である。
【００５０】
当業者であれば理解されるように、本発明の態様は、コンピュータ化されたシステム、システムを使用または構成するための方法、あるいは、方法を実行するためのコンピュータ・プログラム製品として、具体化することができる。したがって本発明は、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または、本明細書ではすべてを全体として「回路」、「モジュール」、または「システム」と呼ぶことが可能なソフトウェアおよびハードウェアの態様を組み合わせた実施形態の、形を取ることができる。さらに本発明の態様は、その上にコンピュータ読み取り可能プログラム・コードが記録された、１つまたは複数のコンピュータ読み取り可能媒体（すなわちデータ記憶媒体）内に具体化される、コンピュータ・プログラム製品の形を取ることができる。
【００５１】
１つまたは複数のコンピュータ読み取り可能媒体の、任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、あるいは、半導体のシステム、装置、またはデバイス、あるいはそれらの任意の適切な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能記憶媒体のより特定の例（非網羅的リスト）は、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、またはそれらの任意の組み合わせを、含むことになる。本明細書との関連において、コンピュータ読み取り可能記憶媒体、すなわちデータ記憶媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、含むかまたは記憶することが可能な、任意の有形媒体とすることができる。
【００５２】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードと共に、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の適切な組み合わせを含むが、これらに限定されない、様々な形のうちのいずれかの形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、通信、伝搬、または移送することが可能な、いずれかのコンピュータ読み取り可能媒体とすることができる。
【００５３】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、ＲＦなど、またはそれらの任意の適切な組み合わせを含むが、これらに限定されない、任意の適切な媒体を使用して伝送することができる。
【００５４】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、あるいは、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、一部はユーザのコンピュータ上および一部はリモート・コンピュータ上で、あるいは、完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを介して、ユーザのコンピュータに接続することが可能であるか、あるいは、（たとえばインターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに接続することができる。
【図１】
2015504205.tif 000003
【図２】
2015504205.tif 000004
【手続補正書】
【提出日】平成26年8月15日(2014.8.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ・メモリ制御ユニットのロジックによって実装される方法であって、
前記制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、
前記第１のインターフェースを介して主物理メモリと、および、  −前記第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、  接続されるように適合され、
前記ロジックは、前記第１および第２のインターフェースに動作可能に結合され、
前記方法は、
前記第２のインターフェースを介して、前記セットの第１のプロセッサから前記主物理メモリのデータにアクセスするための要求を受信すること、
第２のプロセッサが、前記第１のプロセッサによって要求された前記データに以前にアクセスしたかどうかを評価すること、および、
評価が肯定的である場合、前記第１のプロセッサからの前記要求を延期すること、または、前記評価が否定的である場合、前記第１のプロセッサからの前記要求を許可すること、
を含む、方法。
【請求項２】
前記第１のプロセッサからの前記要求を延期（Ｓ３０）しながら、前記第１のプロセッサによって要求された前記データに関係するキャッシュ・ラインを前記主物理メモリにライト・バックするための要求を、前記第２のプロセッサに送信すること（Ｓ３５）を含む、請求項１に記載の方法。
【請求項３】
前記第２のプロセッサに前記要求を送信すること（Ｓ３５）が、前記第２のプロセッサの割り込みピンを介して実行される、請求項２に記載の方法。
【請求項４】
前記第１のプロセッサからの前記要求を延期（Ｓ３０）しながら、および前記第２のプロセッサに前記要求を送信（Ｓ３５）した後、前記第２のプロセッサから前記制御ユニットによって受信された前記要求されたキャッシュ・ラインを前記主物理メモリに伝送するよう、前記制御ユニットに命令すること（Ｓ３６）を含む、請求項３に記載の方法。
【請求項５】
前記第２のプロセッサが、すべての要求されたキャッシュ・ラインを前記主物理メモリにライト・バックすると、前記第１のプロセッサからの前記要求を許可すること（Ｓ４２）を含む、請求項４に記載の方法。
【請求項６】
前記評価（Ｓ２０）は、第２のプロセッサが前記第１のプロセッサによって要求された前記データに関連付けられているかどうかを、前記制御ユニットのデータベース内でチェックすることを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記第１のプロセッサを、前記データベース内の前記第１のプロセッサによって要求された前記データに関連付けること（Ｓ３８）を、さらに含む、請求項６に記載の方法。
【請求項８】
前記第２のインターフェースは、ダブルデータレート動的ランダム・アクセス・メモリ（ＤＤＲ  ＤＲＡＭ）インターフェースである、請求項１から７のいずれか一項に記載の方法。
【請求項９】
アクセスの管理の細分性は、物理メモリ・アドレスの領域（ブロックまたはページ）によるものである、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
コンピュータ・メモリ制御ユニットであって、
前記制御ユニットは、少なくとも１つの第１のインターフェースおよび第２のインターフェースを備え、
−前記第１のインターフェースを介して主物理メモリと、および、
−前記第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、
接続されるように適合され、
前記制御ユニットは、前記第１および第２のインターフェースに動作可能に結合されたロジックを備え、請求項１から９のいずれか一項に記載の方法を実行するように構成された、
コンピュータ・メモリ制御ユニット。
【請求項１１】
前記第１のインターフェースを介して主物理メモリと、および、前記第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと、接続される、請求項１０に記載のコンピュータ・メモリ制御ユニットを備えるシステム。
【請求項１２】
コンピュータ・メモリ制御ユニットのロジックを実行するためのコンピュータ・プログラムであって、
前記ロジックを備えるコンピュータ・メモリ制御ユニットの第１および第２のインターフェースに動作可能に結合されるように適合され、前記制御ユニットは、前記第１のインターフェースを介して主物理メモリと、および、前記第２のインターフェースを介してＮ≧２個の非協働プロセッサのセットと接続され、前記プロセッサに請求項１から９のいずれか一項に記載の方法を実行させるコンピュータ・プログラム。
【国際調査報告】
2015504205.tif 000005
2015504205.tif 000006