JP6083714B2 - プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム - Google Patents

プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP6083714B2
JP6083714B2 JP2014546677A JP2014546677A JP6083714B2 JP 6083714 B2 JP6083714 B2 JP 6083714B2 JP 2014546677 A JP2014546677 A JP 2014546677A JP 2014546677 A JP2014546677 A JP 2014546677A JP 6083714 B2 JP6083714 B2 JP 6083714B2
Authority
JP
Japan
Prior art keywords
processor
interface
control unit
memory
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014546677A
Other languages
English (en)
Other versions
JP2015504205A (ja
Inventor
カパロス・カベヤス・ヴィクトリア
ヨンゲリウス・リク
シュマツ・マーティン・レオ
スタンレーマーヴェル・フィリップ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2015504205A publication Critical patent/JP2015504205A/ja
Application granted granted Critical
Publication of JP6083714B2 publication Critical patent/JP6083714B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

本発明は、コンピュータ・サイエンスの分野に関し、より具体的に言えば、プロセッサによるメモリ共有のためのコンピュータ・メモリ制御ユニットのロジック(論理(logic))によって実装される方法、そのような論理を備えるコンピュータ・メモリ制御ユニット、そのような論理を構成するための命令を含むコンピュータ・プログラム、および、そのようなプログラムをその上に記録しているデータ記憶媒体に関する。
共有メモリ・アーキテクチャは、いくつかのプロセスがそれらのアドレス・スペースの一部を共有できるようにする。既存の共有メモリハードウェア・アーキテクチャおよびメモリを共有するためのそれらの対応するプロトコルは、協働プロセッサのセットを想定する。既存の可能性は、すべてのプロセッサが同じメモリ・アクセス・インターフェース・ハードウェアを実装し、これは標準的ではないが、それらが円滑に共有メモリにアクセスするためのプロセッサ間の協働に適合されていることである。他の既存の可能性は、
仮想共有メモリをエミュレートするように協働するために、互いにまたは中央ハードウェアと通信できるようにする特定のソフトウェア構成要素が、すべてのプロセッサ上にインストールされていることである。こうした既存の可能性は、メモリを共有している各プロセッサ上に、すなわち、一方のケースでは、協働のために適合された特定のハードウェア・インターフェース上、または、他方のケースでは、個々のプロセッサの非共有メモリを使用してエミュレートされる仮想共有メモリ上に、特定の構成要素がインストールされていることが必要である。そのため、そのようなアーキテクチャは、前者のケースでは達成するのに費用が掛かる複雑なもの、後者のケースでは物理共有メモリの性能を低下させるものとなる。
異種アーキテクチャの人気が高まるにつれ、たとえ、問題のプロセッサが同じ(またはいずれかの)共有メモリ・プロトコル・インターフェースを実装できない場合であっても、メモリの共有領域を介して通信可能なプロセスを非同質なアーキテクチャが実行できるようにする、メカニズムの実装に対する関心が増加する。
B.JacobおよびT.Mudgeによる、「Virtual memory in contemporarymicroprocessors」と題するIEEE Micro、18:60〜75、1998年7月の論文
したがって、メモリ共有のための改良されたソリューションが求められている。
一態様によれば、本発明は、コンピュータ・メモリ制御ユニットの論理によって実装される方法として具体化される。制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。論理は、当該第1および第2のインターフェースに、動作可能に結合される。方法は、当該第2のインターフェースを介して、セットの第1のプロセッサから主物理メモリのデータにアクセスするための要求を受信することを含む。方法は、第2のプロセッサが、第1のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価することも含む。方法は、評価が肯定的である場合、第1のプロセッサからの要求を延期すること、または、評価が否定的である場合、第1のプロセッサからの要求を許可することを、さらに含む。
例示において、方法は、以下の特徴のうちの1つまたは複数を含むことができる。
−方法は、第1のプロセッサからの要求を延期しながら、第1のプロセッサによって要求されたデータに関係するキャッシュ・ラインを主物理メモリにライト・バック(write back)するための要求を、第2のプロセッサに送信することを含むことができる。
−第2のプロセッサに要求を送信することが、第2のプロセッサの割り込みピンを介して実行される。
−方法は、第1のプロセッサからの要求を延期しながら、および第2のプロセッサに要求を送信した後、第2のプロセッサから制御ユニットによって受信された要求されたキャッシュ・ラインを主物理メモリに伝送するよう、制御ユニットに命令することを含む。
−方法は、第2のプロセッサが、すべての要求されたキャッシュ・ラインを主物理メモリにライト・バックすると、第1のプロセッサからの要求を許可する。
−評価は、第2のプロセッサが第1のプロセッサによって要求されたデータに関連付けられているかどうかを、制御ユニットのデータベース内でチェックすることを含む。
−方法は、第1のプロセッサを、データベース内の第1のプロセッサによって要求されたデータに関連付けることを、さらに含む。
−第2のインターフェースは、ダブルデータレート(double-data-rate)動的ランダム・アクセス・メモリ(DDR DRAM)インターフェースである。および/または
−アクセスの管理の細分性は、物理メモリ・アドレスの領域(ブロックまたはページ)によるものである。
他の態様によれば、本発明は、コンピュータ・メモリ制御ユニットとして具体化される。制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。制御ユニットは、当該第1および第2のインターフェースに動作可能に結合され、上記方法を実行するように構成された、論理を備える。
他の態様によれば、本発明は、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと接続された、上記のコンピュータ・メモリ制御ユニットを備える、システムとして具体化される。
他の態様によれば、論理を備えるコンピュータ・メモリ制御ユニットの第1のインターフェースおよび第2のインターフェースに動作可能に結合されるように適合された、コンピュータ・メモリ制御ユニットのロジックを実行するためのコンピュータ・プログラムとして具体化され、制御ユニットが第1のインターフェースを介して主物理メモリと、および第2のインターフェース、当該プロセッサ、を介してN≧2個の非協働プロセッサのセットとに接続され、前記プロセッサに上記方法を実行させるものである。
他の態様によれば、本発明は、上記コンピュータ・プログラムをその上に記録したデータ記憶媒体として具体化される。
次に、本発明を具体化しているシステムおよびプロセスについて、非限定的な例として、添付の図面を参照しながら説明する。
方法の例を示す流れ図である。 コンピュータ・メモリ制御ユニットを備えるシステムを示すグラフ図である。
コンピュータ・メモリ制御ユニットの論理によって実装される方法が提案される。制御ユニットは、少なくとも1つの第1のインターフェースおよび(いくつかの)第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。論理は、当該第1および第2のインターフェースに、動作可能に結合される。方法は、当該第2のインターフェースを介して、セットの第1のプロセッサから主物理メモリのデータにアクセスするための要求を受信することを含む。方法は、第2のプロセッサが、第1のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価することも含む。方法は、評価が肯定的である場合、第1のプロセッサからの要求を延期すること、または、評価が否定的である場合、第1のプロセッサからの要求を許可することを、さらに含む。こうした方法によって、改良された方法で、第1のインターフェースを介して制御ユニットに接続されたメモリを共有するために、第2のインターフェースを介してN個のプロセッサを制御ユニットに接続することが可能となる。
(コンピュータ・メモリ)制御ユニットは、コンピュータなどのシステムに統合することが可能な複数のプロセッサによる物理メモリへのアクセスを制御するのに適した、ハードウェア材料である。
制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備える。言い換えれば、制御ユニットは、少なくとも1つのインターフェースの第1のセット(すなわち「第1のインターフェース」)および少なくとも2つのインターフェースの第2のセット(「第2のインターフェース」)を備える。一方の第1のインターフェースおよび他方の第2のインターフェースは、すべて、(接続などの)ハードウェア要素および(所与のインターフェースを介して制御ユニットによって受信された信号を解釈するため、および/または、所与のインターフェースを介して信号を伝送するための、プログラムなどの)ソフトウェア要素を備えるハードウェアと、接続するためのツールであり、第1のインターフェースおよび第2のインターフェースは、制御ユニットを異なる材料に接続するのに適しているという点で異なる。実際には、一方で制御ユニットは、そのように適した第1のインターフェースを介して(このケースでは事実上、コンピュータの)主物理メモリに接続されるように適合される。他方で制御ユニットは、第2のインターフェースを介してプロセッサに接続されるように適合される。第2のインターフェースは少なくとも2つであるため、少なくとも合計3つのインターフェース(少なくとも1つの第1のインターフェースおよび少なくとも2つの第2のインターフェース)が存在することになる。このように制御ユニットは、N≧2個の非協働プロセッサのセットに接続することができる。
主メモリは、第1のインターフェースに合致する対応するインターフェースを備える1つのユニットとすることができる。別の方法として主メモリは、いくつかのインターフェース、このケースでは場合によっていくつかの第1のインターフェースを有する制御ユニットを有することが可能であるか、または主メモリは、それぞれが1つまたはいくつかのインターフェースを有するいくつかのユニット、このケースではいくつかの、たとえばユニット当たり少なくとも1つの、第1のインターフェースを有する制御ユニット内に、存在することが可能である。
プロセッサは標準のプロセッサであり得るため、非協働的であると言われる。たとえばプロセッサは、プロセッサ間の協働のために特別に設計されたいずれのハードウェア構成要素も排除することができる。またプロセッサは、協働を考慮してプロセッサ間での通信を可能にするために設計された複雑なソフトウェアを記録していることも排除することができる。したがって方法は、安価で容易な方法での、いくつかのプロセッサによるメモリの共有を可能にする。ある例では、プロセッサは異なるマイクロアーキテクチャおよび仮想メモリ・インターフェース定義を有することができる。したがって方法は、たとえこれらのプロセッサが異なる場合であっても、いくつかのプロセッサによるメモリの共有を可能にする。第2のインターフェースは、広範に知られた標準であり、実装が安価で容易な、ダブルデータレート・インターフェースとすることができる。また、第2のインターフェースのうちの少なくとも2つは異なるものとすることができる。
方法は、場合によっては異なるアーキテクチャおよび仮想メモリ・インターフェースを定義するプロセッサが、メモリの共有領域を介して通信できるようにする、ハードウェア・アーキテクチャおよび対応するアクセス・プロトコルをカバーしている。したがって方法は、標準DRAMの電気的およびプロトコル・インターフェースのレベルで動作することができる。一実施形態において、業界標準ダブルデータレート(DDR)インターフェースは、DRAMアレイからのデータの可用性を示す信号を用いて拡張される。既存のDDRインターフェースは、すでに、類似の(ただしオプションの)DQSおよびRDQS信号を有している。これらの信号はオプションであるため、現在多くの実装では、データが固定遅延後に使用可能であるものと想定している。方法は、商品プロセッサが、そのアーキテクチャおよび仮想メモリ・インターフェース定義に関係なく、JEDEC標準化DDRメモリ・インターフェースなどの物理的な標準化メモリ・インターフェースを介して、主メモリにアクセスするという事実に依拠する。
したがって制御ユニット(コヒーレンス制御ユニットまたはCCUと呼ぶこともある)は、あらゆるプロセッサおよび主メモリに接続され、どちらの接続も場合によっては、標準化メモリ・インターフェース、たとえばJEDEC標準DDRメモリ・インターフェースを用いる。したがって、以下で言及されるすべてのメモリ・アドレスは、物理DRAMアドレスを指すことができる。しかしながら、プロセッサ・アーキテクチャおよびメモリ・モジュール全体にわたって広範にサポートされている任意の他のメモリ・インターフェースも、使用可能である。
制御ユニットは、さらに論理を備える。論理は、処理機能を有し、例えばメモリ上に記憶された命令によって、所定の方式に従う、ハードウェアを備える。論理は、当該第1および第2のインターフェースに動作可能に結合される。言い換えれば、論理はインターフェースへのアクセスを有し、したがって、インターフェースを介して渡される情報を処理することができる。したがって論理は、インターフェースを介して制御ユニット外部から制御ユニットによって受信される情報を、受信および処理することが可能であり、かつ/または、論理は、インターフェースを介して制御ユニット外部に情報を送信するよう、制御ユニットに命令することが可能である。
次に、制御ユニットの論理によって実行される方法について、方法の例示の流れ図を示す図1を参照しながら説明する。
例示の方法は、アイドル状態を維持すること(S5)を含む。こうしたケースでは、論理は、アクションを実行するまで、方法の第1のアクティブ・イベントが発生するのを待機する。さらに論理は、そのアクションを完了したときに、アイドル状態に戻ることができる。
方法は、セットの第1のプロセッサから主物理メモリのデータにアクセスするための要求を、第2のインターフェースを介して受信すること(S10)を含む。言い換えれば、セットのプロセッサ、「第1」のプロセッサは、主物理メモリへのアクセスを要求する。この要求は、プロセッサが主メモリに直接接続されているかのように実行される。言い換えればプロセッサは、制御ユニットを「認識」せず、通常のケースのように、主メモリに直接されているように動作する。
次に方法は、第2のプロセッサが、第1のプロセッサによって要求されたデータに以前にアクセスしたかどうかを評価すること(S20)を含む。言い換えれば論理は、他のプロセッサ、「第2」のプロセッサが、第1のプロセッサによって要求された同じデータにすでにアクセスしたかどうかを検証する。この例では、評価(S20)は、第2のプロセッサが、第1のプロセッサによって要求されたデータに関連付けられているかどうかを、制御ユニットのデータベース内でチェックすることを含む。したがって、制御ユニットはこうしたデータベース、および、これを記憶するための専用メモリ(たとえば内部メモリ、または主メモリの一部)を含むことが可能である。こうしたデータベースは、主メモリのデータ(たとえばその識別子)にプロセッサ(たとえばその識別子)を関連付ける、ルックアップ・テーブルからなるものとすることができる。これによって、制御ユニットは、主メモリの同じデータへのほぼ同時のアクセスを要求するプロセッサ間での衝突を、回避することができる。
実際には、評価(S20)が肯定的である(すなわち、第2のプロセッサは、現在第1のプロセッサによって要求されている同じデータへのアクセスを以前に要求した)場合、衝突が存在する可能性がある(すなわち、2つのプロセッサが同じデータについて作業しており、場合によっては、他方と修正を共有せずに修正するか、または他方によって修正された修正を修正されたことを知らずに読み取り、したがって修正を読み取らない可能性がある)。したがって方法は、こうしたケースでは、第1のプロセッサからの要求を延期すること(S30)(すなわち保留にすること)を含む。これによって、衝突が生じないことを保証し、こうした事態を回避するためのアクションを実装するための時間が提供される。言い換えれば(すなわち、評価(S20)が、まだいかなるプロセッサもデータを要求していないという結果を引き出す場合)、方法は、評価が否定的である場合、第1のプロセッサからの要求を許可すること(S41)を含む。
この例では、方法は、第1のプロセッサからの要求を延期(S30)しながら(すなわち、第1のプロセッサからの要求が保留にされながら)、並行して、キャッシュ・ラインを主物理メモリにライト・バックするための要求を第2のプロセッサに送信すること(S35)を含む。ライト・バックするように要求されたキャッシュ・ラインは、第1のプロセッサによって要求されたデータに関係するものとすることができる。言い換えれば論理は、第2のプロセッサ、すなわち、第1のプロセッサによって要求された同じデータにアクセスしているプロセッサに、そのキャッシュ上に記憶されたすべてのデータ(または要求されたデータのみに関係するデータ)を制御ユニットに送信するように要求する。これは、第2のプロセッサの割り込みピンを介して実行可能である。こうしたデータが存在する(すなわち、第2のプロセッサがまだそのキャッシュ・ラインをライト・バックしていない)場合、論理はこのデータの受信を監視し(流れ図には図示せず)、第2のプロセッサから制御ユニットによって受信される要求されたキャッシュ・ラインを、主物理メモリに伝送するよう、制御ユニットに命令する(S36)。言い換えれば論理は、主物理メモリへのデータの転送を保証する。したがって、第2のプロセッサによって実行されていたデータについての作業が、主メモリにコミットされる。
第2のプロセッサからの完了信号を(論理によって)受信すること(S37)によって検証可能である、第2のプロセッサがすべての要求されたキャッシュ・ラインを主物理メモリにライト・バックすると、方法は、第1のプロセッサからの要求を許可すること(S42)を含むことができる。
許可(S41)および許可(S42)は同じアクションを実装するが、方法の異なるステップが先行するという事実によって、異なる基準を有する。
この例では、第1のプロセッサの要求を許可する(S41、S42)前に、およびこうした許可(S41、S42)時に、方法は、第1のプロセッサを、データベース内の第1のプロセッサによって要求されたデータに関連付けること(S38)をさらに有する。このように、方法のさらなる実行が続けられることが補償される。第2のプロセッサが存在し、評価(S20)の結果が肯定的であった場合、第1のプロセッサはデータベース内の第2のプロセッサを置き換えることができる。
この例では、第1のプロセッサの要求を許可すること(S41、S42)は、要求を主物理メモリに伝送するよう、制御ユニットに命令すること(S39)、およびその後、主物理メモリから戻されたデータを第1のプロセッサに転送するよう、制御ユニットに命令すること(S40)を含む。実際には、プロセッサ(第1のプロセッサを含む)は、それらが主メモリに直接接続されているかのように動作するが、制御ユニットはすべての信号を遮断し、それらを管理する。これについては、図2を参照しながら制御ユニットについて説明する際に明らかとなろう。
効率的な最適化として、メモリ内のデータ項目のアドレスは、CCU内でCCU物理ページと呼ばれるブロックにグループ化することが可能であり、データ所有のすべての管理はこうした細分性で実行される。これによって、たとえば、CCUがそのデータベース内に維持しなければならないことになるエントリの数を削減することが可能であるが、ステップS35でより多くのデータをメモリにライト・バックする必要が生じる可能性がある。
方法は共有メモリ・プロトコルを提供し、同質のメモリ編成を用いてより適切に実行される。したがって制御ユニットは、共通のアドレス・スペースを定義することが可能であり、物理メモリは、個別のプロセッサ内で使用されるページ・サイズに関係なく、共有の物理ページに分割することが可能である。各プロセッサは、それぞれが独自のページ数およびページ・サイズを備える異なる仮想メモリ・インターフェースを実装可能である。たとえば、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月の論文で説明されている。
制御ユニットは、各プロセッサによる物理アドレス要求を、物理ページIDルックアップ・テーブル(PPIDT)などの、データベース(たとえば統合メモリ・アドレス・スペース)内の対応する制御ユニットの物理ページ数に変換することができる。いくつかの基準を使用して、共通制御ユニット・ページ・サイズを選択することができる。制御ユニット・ページ・サイズが大きくなると、PPIDT内のエントリ数は少なくなるが、制御ユニットがプロセッサにライト・バック要求を通知する場合、メモリにライト・バックされることになる項目がより多く必要であるため、性能が低下することになる。
このケースでは、共有データは制御ユニットの物理ページの細分性で追跡され、すなわち、共有メモリ位置へのデータ・アクセスは、その位置に関連付けられた物理ページ識別子(PPI)によって識別される。CCUはあらゆるDRAMメモリ・アクセスを監視する。マッピング・テーブルを使用して、共有位置へのメモリ・アクセスの発生時に開始されたプロセッサの識別、および、アクセスされ共有されたページに関連付けられたPPIを記録する。この情報は、異なるプロセッサが同じ物理位置へのアクセスを試行する場合、整合性を保証するために使用される。
次に、図1を参照しながら提供されたものと同様の、方法を実施する他の例について考察する。この例の特徴は、図1を参照しながら提供された例に統合することができる。
この例では、初期に、CCUはアイドル状態である。プロセッサがメモリからの読み取りを開始すると、プロセッサからDRAMへと進む要求はCCUによって遮断される。その後CCUは、物理ページIDルックアップ・テーブル(PPIDT)に対してプロセッサ内のルックアップを実行する。このルックアップを使用して、要求されたデータが配置された物理ページが、異なるプロセッサによって以前に要求された(したがって潜在的に修正された)かどうかが特定される。アドレスに対応するPPIDがテーブル内に存在しない場合、プロセッサはDRAMにアクセスし、CCUはPPIDTを更新して、プロセッサを対応する共通物理ページにマッピングする新しいエントリを追加する。その後、DRAMからプロセッサへのデータの移動が、CCUによって開始される。
異なるプロセッサが同じ物理メモリ・ページ内のデータへのアクセスを試行すると、PPIDTルックアップにより、ページが異なるプロセッサによって以前に読み取られたことが明らかにされる。その場合、データの整合性を保証するために、CCUは、PPDIT内にプロセッサと共に列挙される物理ページに対応するすべてのキャッシュ・ラインをライト・バックするための要求を、プロセッサに送信する。この要求は、汎用プロセッサ割り込みピンを通る割り込み信号を用いて実装される。CCUは、メモリ書き込みが完了された旨をプロセッサの信号が戻すまで待機しなければならず、これは、汎用入出力ピン、または非キャッシュ可能アドレスへの書き込みを介して実行することが可能である。
データがメモリにライト・バックされたことが保証されると、CCUはPPIDT内の古いエントリを除去し、対応するCCU物理メモリ・ページのPPIDを含むプロセッサ用に新しいエントリを作成して、PPIDTを更新する。最後にCCUは、対応するプロセッサにデータを転送できるように、主メモリへの要求を開始する。
DRAMに(そのメモリ・コントローラを介して)直接接続された場合のように、プロセッサが固定遅延後にデータ・ワード内のクロック制御を開始しないことが保証されなければならない。これを保証するための1つの手法は、標準インターフェースがDDRである実施形態において、CCUを使用するプロセッサが、各読み取り要求時にオプションのDQS DDRインターフェース信号を実装する(および忠実に監視する)ことを保証することであり、これによってプロセッサは、有効なデータが使用可能であることを知ることができる。可能な代替の手法は、メモリDIMM上の順次存在検出(SPD)EEPROMに記憶され、起動時にプロセッサによって読み取られる、既存のメモリ・タイミング・セットアップ情報を無効にすることを含む場合がある。DRAMからのデータが準備されると、CCUによって対応するプロセッサに転送される。
上記の説明によれば、PPIDTは、プロセッサが新しいトランザクションを開始すると必ず更新される。しかしながら、その間にプロセッサ・キャッシュがフラッシュされるか、または、新しいエントリをテーブル内に追加させたデータが、より新しいデータを割り振るために退去(evict)させられる可能性がある。この状況では、CCUはプロセッサ・キャッシュ内の変更を検出できない可能性がある。したがってCCUは、特定のデータ項目がメモリから退去させられたかどうかを予測できるように、異なるプロセッサ・キャッシュに関するキャッシュ置換を内部にモデル化しなければならない。CCU内でのモデル化が不可能な状況では、それぞれのキャッシュ内のすべてのラインが退去させられなければならない可能性がある。
代替の実装は、プロセッサごとに1つの制御ユニットを有すること、および、場合によってはCCU間の相互接続ネットワークを使用する、制御ユニットの異なるインスタンスの同期化からなるものとすることができる。
ここで、論理はコンピュータ・メモリ制御ユニットの一部とすることができる。制御ユニットは、少なくとも1つの第1のインターフェースおよび第2のインターフェースを備え、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続されるように適合される。制御ユニットは、ここでも再度、当該第1および第2のインターフェースに動作可能に結合され、方法を実行するように構成された論理を、さらに備える。こうしたコンピュータ・メモリ制御ユニットは、複数の非協働プロセッサが、効率的、安価、および単純な方法で、同じ主物理メモリを共有できるようにする。
コンピュータ・メモリ制御ユニットは、それ自体が、第1のインターフェースを介して主物理メモリと、および第2のインターフェースを介してN≧2個の非協働プロセッサのセットと、接続された、コンピュータ・メモリ制御ユニットを備える、システムの一部とすることができる。
図2は、主物理メモリを共有する複数のプロセッサを備えるコンピュータ・システム、または、主物理メモリ(場合によっては仮想メモリ)を共有する複数のコンピュータ(ならびに複数のプロセッサ)を備えるコンピュータ・ネットワークとすることが可能な、システムの例示のハードウェアを示すブロック図である。
この例では、システム200は、コンピュータ・メモリ制御ユニット100を備える。コンピュータ・メモリ制御ユニット100は、第1のインターフェース110を介して主物理メモリ210に(システム200の一部にも)接続される。コンピュータ・メモリ制御ユニット100は、第2のインターフェース120を介して、さらに3つのプロセッサ220に接続される。
したがって制御ユニット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を備える。
データパス115は、制御論理130によって送信されるか、または任意のインターフェース(110、120)によって受信される情報を、中心に集めるように適合される。データパス115はそのために、リダイレクト・マルチプレクサ、ライト・バック・バッファ、および/またはバスなどの、データを指示するための手段のいずれか、または組み合わせを備えることができる。
制御ユニット100は、プロセッサ220によって受信される要求をキューに入れるように適合された、要求キュー140も備える。制御ユニット100は、構成レジスタ150、およびPPIDT165を記憶する内部メモリ160も、備える。このため、制御ユニット100は、プロセッサ220から受信された要求を、主メモリ210の所与のページにアクセスするための要求として解釈するように適合され、ルックアップ・テーブル165によって、他のプロセッサ220が以前、当該所与のページにアクセスしたかどうかを評価することが可能である。
当業者であれば理解されるように、本発明の態様は、コンピュータ化されたシステム、システムを使用または構成するための方法、あるいは、方法を実行するためのコンピュータ・プログラム製品として、具体化することができる。したがって本発明は、完全にハードウェア実施形態、完全にソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、本明細書ではすべてを全体として「回路」、「モジュール」、または「システム」と呼ぶことが可能なソフトウェアおよびハードウェアの態様を組み合わせた実施形態の、形を取ることができる。さらに本発明の態様は、その上にコンピュータ読み取り可能プログラム・コードが記録された、1つまたは複数のコンピュータ読み取り可能媒体(すなわちデータ記憶媒体)内に具体化される、コンピュータ・プログラム製品の形を取ることができる。
1つまたは複数のコンピュータ読み取り可能媒体の、任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、あるいは、半導体のシステム、装置、またはデバイス、あるいはそれらの任意の適切な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能記憶媒体のより特定の例(非網羅的リスト)は、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、またはそれらの任意の組み合わせを、含むことになる。本明細書との関連において、コンピュータ読み取り可能記憶媒体、すなわちデータ記憶媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、含むかまたは記憶することが可能な、任意の有形媒体とすることができる。
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードと共に、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の適切な組み合わせを含むが、これらに限定されない、様々な形のうちのいずれかの形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、通信、伝搬、または移送することが可能な、いずれかのコンピュータ読み取り可能媒体とすることができる。
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、RFなど、またはそれらの任意の適切な組み合わせを含むが、これらに限定されない、任意の適切な媒体を使用して伝送することができる。
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、あるいは、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、一部はユーザのコンピュータ上および一部はリモート・コンピュータ上で、あるいは、完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介して、ユーザのコンピュータに接続することが可能であるか、あるいは、(たとえばインターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続することができる。

Claims (10)

  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からのいずれか一項に記載の方法を実行させるコンピュータ・プログラム。
JP2014546677A 2011-12-16 2012-11-20 プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム Expired - Fee Related JP6083714B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP11194116.7 2011-12-16
EP11194116 2011-12-16
PCT/IB2012/056562 WO2013088283A2 (en) 2011-12-16 2012-11-20 Memory sharing by processors

Publications (2)

Publication Number Publication Date
JP2015504205A JP2015504205A (ja) 2015-02-05
JP6083714B2 true JP6083714B2 (ja) 2017-02-22

Family

ID=47520195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014546677A Expired - Fee Related JP6083714B2 (ja) 2011-12-16 2012-11-20 プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US9183150B2 (ja)
JP (1) JP6083714B2 (ja)
CN (1) CN103999063B (ja)
DE (1) DE112012004926B4 (ja)
GB (1) GB2511446B (ja)
WO (1) WO2013088283A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170192886A1 (en) * 2014-07-31 2017-07-06 Hewlett Packard Enterprise Development Lp Cache management for nonvolatile main memory
US9781225B1 (en) * 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US9535606B2 (en) * 2014-12-22 2017-01-03 Intel Corporation Virtual serial presence detect for pooled memory
CN105868134B (zh) * 2016-04-14 2018-12-28 烽火通信科技股份有限公司 高性能多口ddr控制器及其实现方法
CN106484521A (zh) * 2016-10-21 2017-03-08 郑州云海信息技术有限公司 一种数据请求处理方法及装置
US11409673B2 (en) * 2019-02-14 2022-08-09 Intel Corporation Triggered operations for collective communication
US11409655B2 (en) * 2019-03-01 2022-08-09 Canon Kabushiki Kaisha Interface apparatus, data processing apparatus, cache control method, and medium

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5950228A (en) 1997-02-03 1999-09-07 Digital Equipment Corporation Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables
US6438660B1 (en) * 1997-12-09 2002-08-20 Intel Corporation Method and apparatus for collapsing writebacks to a memory for resource efficiency
JP4303803B2 (ja) * 1998-04-22 2009-07-29 株式会社東芝 キャッシュフラッシュ装置
US6397306B2 (en) 1998-10-23 2002-05-28 Alcatel Internetworking, Inc. Per memory atomic access for distributed memory multiprocessor architecture
US6636950B1 (en) 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6829683B1 (en) * 2000-07-20 2004-12-07 Silicon Graphics, Inc. System and method for transferring ownership of data in a distributed shared memory system
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7380085B2 (en) * 2001-11-14 2008-05-27 Intel Corporation Memory adapted to provide dedicated and or shared memory to multiple processors and method therefor
US7032079B1 (en) 2002-12-13 2006-04-18 Unisys Corporation System and method for accelerating read requests within a multiprocessor system
KR20050061123A (ko) * 2003-12-18 2005-06-22 삼성전자주식회사 Ddr sdram 콘트롤러의 데이터 제어회로
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7386687B2 (en) 2005-01-07 2008-06-10 Sony Computer Entertainment Inc. Methods and apparatus for managing a shared memory in a multi-processor system
JP5021978B2 (ja) * 2006-08-11 2012-09-12 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
JP2008176612A (ja) * 2007-01-19 2008-07-31 Nec Electronics Corp マルチプロセッサシステム
US8386750B2 (en) * 2008-10-31 2013-02-26 Cray Inc. Multiprocessor system having processors with different address widths and method for operating the same
WO2011060366A2 (en) 2009-11-13 2011-05-19 Anderson Richard S Distributed symmetric multiprocessing computing architecture

Also Published As

Publication number Publication date
US9183150B2 (en) 2015-11-10
DE112012004926B4 (de) 2023-12-07
DE112012004926T5 (de) 2014-08-14
GB2511446A (en) 2014-09-03
GB2511446B (en) 2016-08-10
CN103999063B (zh) 2016-10-05
US20130159632A1 (en) 2013-06-20
CN103999063A (zh) 2014-08-20
JP2015504205A (ja) 2015-02-05
WO2013088283A3 (en) 2013-11-07
WO2013088283A2 (en) 2013-06-20
GB201408707D0 (en) 2014-07-02

Similar Documents

Publication Publication Date Title
JP6083714B2 (ja) プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム
US11030126B2 (en) Techniques for managing access to hardware accelerator memory
JP5911985B2 (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
KR102519904B1 (ko) 영구 메모리 할당 및 구성
US7756943B1 (en) Efficient data transfer between computers in a virtual NUMA system using RDMA
US7596654B1 (en) Virtual machine spanning multiple computers
US7516247B2 (en) Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US20040098575A1 (en) Processor cache memory as RAM for execution of boot code
US8078862B2 (en) Method for assigning physical data address range in multiprocessor system
US10824574B2 (en) Multi-port storage device multi-socket memory access system
US10296356B2 (en) Implementation of reset functions in an SoC virtualized device
US7480784B2 (en) Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
JP2005222123A5 (ja)
US9836326B2 (en) Cache probe request to optimize I/O directed caching
US10613999B2 (en) Device, system and method to access a shared memory with field-programmable gate array circuitry without first storing data to computer node
US8352646B2 (en) Direct access to cache memory
WO2015180598A1 (zh) 对存储设备的访问信息处理方法和装置、系统
CN104951239A (zh) 高速缓存驱动器、主机总线适配器及其使用的方法
US10817456B2 (en) Separation of control and data plane functions in SoC virtualized I/O device
US8661169B2 (en) Copying data to a cache using direct memory access
US8327081B2 (en) Information processing device and method for controlling the same
US20230281113A1 (en) Adaptive memory metadata allocation
US20160217076A1 (en) Speculative cache reading using shared buffer
US8108618B2 (en) Method and apparatus for maintaining memory data integrity in an information handling system using cache coherency protocols
JP2023507096A (ja) コヒーレント及び非コヒーレントメモリ要求のアービトレーションスキーム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160105

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20160129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160324

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160927

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20161005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161227

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20161227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170117

R150 Certificate of patent or registration of utility model

Ref document number: 6083714

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees