JP2016508650A - リフレクティブメモリとのコヒーレンシの実施 - Google Patents

リフレクティブメモリとのコヒーレンシの実施 Download PDF

Info

Publication number
JP2016508650A
JP2016508650A JP2015560157A JP2015560157A JP2016508650A JP 2016508650 A JP2016508650 A JP 2016508650A JP 2015560157 A JP2015560157 A JP 2015560157A JP 2015560157 A JP2015560157 A JP 2015560157A JP 2016508650 A JP2016508650 A JP 2016508650A
Authority
JP
Japan
Prior art keywords
data
memory
memory device
cache
reflective
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.)
Pending
Application number
JP2015560157A
Other languages
English (en)
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2016508650A publication Critical patent/JP2016508650A/ja
Pending legal-status Critical Current

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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/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/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache

Landscapes

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

Abstract

第1のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法が記載されている。ある例では、第1のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法が、キャッシュデバイスから第1のメモリデバイスにデータがフラッシュされることを示す表示を受信することを含む。この方法は、データに対応するメモリアドレスが第1のメモリデバイスのリフレクティブメモリ領域内にあることを検出すること、及びフラッシュ動作を用いて、キャッシュデバイスから第1のメモリデバイスにデータを送信することも含む。加えて、この方法は、第1のメモリデバイスによって受信されたデータが変更されたデータであると判断することを含む。さらに、この方法は、変更されたデータを第2のコンピューティングシステム内の第2のメモリデバイスに送信することを含む。【選択図】図1

Description

現代のコンピューティングデバイスは、ますます複雑なソフトウェアアプリケーションを実行する。これらの複雑なソフトウェアアプリケーションの実行時間を減らすために、幾つかのコンピューティングデバイスは、動作を並列に実行することができる。例えば、コンピューティングデバイスは、2つの動作を同時に実行することができる。幾つかの実施形態では、2つのコンピューティングデバイスは、当該2つのコンピューティングデバイス間でデータを送受信することによって動作を並列に実行することができる。
以下の詳細な説明では、図面を参照して幾つかの例を説明する。
リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができる一例のコンピューティングシステムのブロック図である。 リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例を示すプロセスフロー図である。 キャッシュミスに応答してリフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例のプロセスフロー図である。 リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシをどのように実施することができるのかの一例を示すブロック図である。 リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができる有形の非一時的コンピュータ可読媒体の一例を示すブロック図である。
本明細書において説明する主題の実施形態によれば、リフレクティブメモリを有するコンピューティングデバイスが、コヒーレンシを実施することができる。本明細書でいうリフレクティブメモリは、複数の別々のメモリコントローラ又はデータ管理モジュールを通じて共通のデータのセットを維持する共有メモリシステム内のメモリデバイスの任意の適した部分を含む。例えば、リフレクティブメモリは、一方のコンピューティングシステムの不揮発性メモリにデータを記憶することができるととともに、第2のコンピューティングシステムのメモリデバイスにそのデータのコピーも記憶することができる。本明細書において説明する技法は、データの複数のコピーが単数又は複数のコンピューティングシステム内の様々なメモリデバイスに記憶されているとき、コヒーレンシを維持する。本明細書でいうコヒーレンシは、共有メモリシステム内のデータの共通のセットに対する変更を検出することと、この変更に基づいてデータの共通のセットのコピーを更新することとを含む。例えば、メモリアドレスと関連付けられたデータは、メモリデバイスからキャッシュデバイス内にコピーされる場合がある。プロセッサがキャッシュデバイス内のデータを変更した場合、メモリデバイス内のデータは、古くなっているか又は旧式になっている場合がある。本明細書において説明する技法は、リフレクティブメモリを備えるコンピューティングデバイスにおいてコヒーレンシを可能にすることができる。
幾つかの実施形態では、本明細書において説明する技法は、未変更のデータをキャッシュデバイスからメモリデバイスに送信することなくコヒーレンシを実施することができる。例えば、プロセッサは、データ値を読み出すためにキャッシュデバイス内の幾つかのデータ値にアクセスする場合があるが、このアクセスは、それらのデータ値を変更しない。プロセッサは、書き込み動作のためにデータ値にアクセスする場合もあるが、このアクセスは、それらのデータ値を変更することができる。幾つかの実施形態では、未変更のデータ値はキャッシュデバイス内に留まることができる一方、変更されたデータ値はメモリデバイスにコピーされる。
図1は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができるコンピューティングシステム100の一例のブロック図である。コンピューティングシステム100は、例えば、特に、コンピュータサーバ、移動電話、ラップトップコンピュータ、デスクトップコンピュータ、又はタブレットコンピュータを含みうる。コンピューティングシステム100は、記憶された命令を実行するように構成されたプロセッサ102を備えることができる。プロセッサ102は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、又は任意の数の他の適切な構成とすることができる。
プロセッサ102は、コンピューティングシステム100を1つ以上のI/Oデバイス108に接続するように構成された入力/出力(I/O)デバイスインタフェース106に、システムバス104(例えば、特に、AMBA、PCI(商標)、PCI Express(商標)、HyperTransport(商標)、シリアルATA)を通じて接続することができる。I/Oデバイス108は、例えば、キーボード及びポインティングデバイスを含むことができ、このポインティングデバイスは、特に、タッチパッド又はタッチスクリーンを含みうる。I/Oデバイス108は、コンピューティングシステム100の組み込み構成要素とすることもできるし、コンピューティングシステム100に外部接続されたデバイスとすることもできる。
プロセッサ102は、コンピューティングシステム100をディスプレイデバイス112に接続するように構成されたディスプレイデバイスインタフェース110に、システムバス104を通じてリンクすることもできる。ディスプレイデバイス112は、コンピューティングシステム100の組み込み構成要素である表示画面を備えることができる。ディスプレイデバイス112は、特に、コンピューティングシステム100に外部接続されたコンピュータモニタ、テレビ、又はプロジェクタを含みうる。加えて、プロセッサ102は、システムバス104を通じてネットワークインタフェースカード(NIC)114にリンクすることもできる。NIC114は、システムバス104を通じてコンピューティングシステム100をネットワーク(図示せず)に接続するように構成することができる。このネットワーク(図示せず)は、特に、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、又はインターネットとすることができる。
プロセッサ102は、システムバス104を通じてメモリデバイス116にリンクすることもできる。幾つかの実施形態では、メモリデバイス116は、ランダムアクセスメモリ(例えば、特に、SRAM、DRAM、eDRAM、EDO RAM、DDR RAM、RRAM(商標)、PRAM)、読み出し専用メモリ(例えば、特に、マスクROM、EPROM、EEPROM)、不揮発性メモリ、又は他の任意の適したメモリシステムを含みうる。ある例では、メモリデバイス116は、任意の適した数のデータ値にそれぞれ対応する任意の適した数のメモリアドレスを備えることができる。幾つかの実施形態では、頻繁にアクセスされるデータ値のコピーをキャッシュ118に記憶することができる。幾つかの実施形態では、プロセッサ102は、操作のためにデータをメモリデバイス116に要求する前にそのデータをキャッシュ118に要求することができる。ある例では、キャッシュ118が記憶することができるデータ値は、メモリデバイス116よりも少ないが、キャッシュ118は、メモリデバイス116が記憶されたデータをプロセッサ102に提供することができる速度よりも高速に、記憶されたデータをプロセッサ102に提供することができる。
幾つかの実施形態では、メモリデバイス116からのデータは、第2のコンピューティングシステム122の第2のメモリデバイス120において反映することができる。本明細書でいう「反映(リフレクト:reflect)」という用語は、第1のコンピューティングシステムがデータを生成するか又は書き込み、当該データの局所的にコヒーレントなコピーを第2のコンピューティングシステム上の別個のメモリデバイスに維持することを含む。例えば、メモリデバイス116におけるメモリアドレスは、新しい値に変更されたデータ値に対応する場合がある。メモリデバイス116及び第2のメモリデバイス120におけるコヒーレンシを提供するために、データのこの新しい値は、メモリデバイス116から第2のメモリデバイス118に送信、すなわち「反映(リフレクト)」される。第2のメモリデバイス120は、第2のコンピューティングシステム122の動作においてメモリデバイス116からのこの新しいデータ値を消費することができる第2のコンピューティングシステム122と関連付けられる。本明細書でいうデータを消費するとは、読み出し動作においてデータを用いることを含むが、書き込み動作においてデータを用いることを含まない。
幾つかの実施形態では、プロセッサ102は、システムバス104を通じてデータ管理モジュール124にリンクすることができる。データ管理モジュール124は、メモリデバイス116に記憶されたデータ、キャッシュ118に記憶されたデータ、及び第2のメモリデバイス120に記憶されたデータの間のコヒーレンシを維持することができる。ある実施形態では、データ管理モジュール124は、任意の適したファブリック126(例えば、特に、PCI(商標)、PCI Express(商標)、HyperTransport(商標)、シリアルATA)及び第2のコンピューティングシステム122の第2のデータ管理モジュール128を通じて第2のメモリデバイス120にデータを送信することができる。第2のデータ管理モジュール128は、第2のコンピューティングシステム122の第2のメモリデバイス120に記憶されたデータのコヒーレンシを維持することができる。
ある実施形態では、データ管理モジュール124は、キャッシュ118内の変更されたデータをメモリデバイス116にコピーすることによって、記憶されたデータのコヒーレンシを維持することができる。変更されたデータをキャッシュ118からメモリデバイス116にコピーすることは、本明細書では、データを「フラッシュ(flush)」するともいう。幾つかの実施形態では、データ管理モジュール124が、キャッシュ118からメモリデバイス116の反映されたメモリ範囲にデータをフラッシュするとき、データ管理モジュール124は、この変更されたデータを第2のメモリデバイス120に送信することができる。第2のメモリデバイス120に記憶されたデータのコヒーレンシを維持することによって、第2のデータ管理モジュール128は、第2のコンピューティングシステム122において実行される動作が、メモリデバイス116に構成されたリフレクティブメモリ領域から転送された、変更されたデータを用いることを確実にすることができる。幾つかの実施形態では、第2のデータ管理モジュール128は、変更されたデータを受信することができ、この変更されたデータを第2のメモリデバイス120におけるアドレス範囲内にマッピングすることができる。
図1のブロック図では、コンピューティングシステム100が図1に示す構成要素の全てを備えることを示すことを意図したものでないことを理解すべきである。それとは逆に、コンピューティングシステム100は、これよりも少ない構成要素又は図1に示していない追加の構成要素(例えば、追加のメモリデバイス、ビデオカード、追加のネットワークインタフェース等)を備えることができる。さらに、データ管理モジュール124の機能のいずれも、別個のハードウェアにおいて部分的に又は全面的に実施することができる。例えば、この機能は、特に、特定用途向け集積回路を用いて実施することもできるし、メモリデバイス116において実施することもできるし、周辺デバイス上のコプロセッサにおいて実施することもできる。
図2は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例を示すプロセスフロー図である。この方法200は、図1のコンピューティングシステム100等のコンピューティングデバイスを用いて実施することができる。
ブロック202において、データ管理モジュール124は、キャッシュラインがキャッシュデバイスからフラッシュされることを示す表示を受信する。上記で論述したように、キャッシュデバイスは、データの任意の適した数のキャッシュラインを記憶し、各キャッシュラインは、或る量のデータ、例えば、16バイト、32バイト、64バイト、又は128バイトのデータを含む。本明細書でいうキャッシュラインをフラッシュすることは、変更されたキャッシュラインをキャッシュデバイスからメモリデバイスに送信することを含む。キャッシュラインをフラッシュすることは、未変更のキャッシュラインをキャッシュデバイスから削除することも含む。キャッシュラインについては、図4に関して以下でより詳細に論述する。幾つかの実施形態では、データ管理モジュール124は、特に、オペレーティングシステム又はアプリケーションから表示を受信することができる。この表示は、変更されたデータをメモリデバイスに送信するようにキャッシュデバイスに命令することをデータ管理モジュール124に命令する任意の適した動作又はデータとすることができる。
ブロック204において、データ管理モジュール124は、キャッシュデバイスに対し、キャッシュデバイス内のキャッシュラインからメモリデバイスにデータを送信させるフラッシュ動作を生成する。幾つかの実施形態では、データ管理モジュール124は、ソフトウェア、オペレーティングシステム、又はハードウェア構成要素からの表示を用いてフラッシュ動作を生成することができる。例えば、データ管理モジュール124は、キャッシュラインがキャッシュデバイスからメモリデバイスにフラッシュされることを示す表示を検出することができる。
ブロック206において、データ管理モジュール124は、キャッシュデバイスからフラッシュされたキャッシュライン内のデータがメモリデバイスのリフレクティブメモリ領域へのものであるか否か、及びデータが変更されているか否かを判断する。上記で論述したように、リフレクティブメモリ領域は、少なくとも1つの追加のメモリデバイスとのコヒーレンシを維持することができる、或るメモリデバイスの任意の適した部分を含みうる。例えば、第1のメモリデバイスの指定されたリフレクティブ領域においてデータが変更された場合、この変更されたデータのコピーは、第1のリフレクティブメモリデバイス内のこのデータのコピーを記憶する第2のメモリデバイスに送信、すなわち反映することができる。幾つかの実施形態では、データ管理モジュール124は、メモリ内のメモリ範囲のセットが任意の適した数の追加のメモリデバイスにおいて反映されると判断することができる。
ブロック204に略述されているように、データ管理モジュール124によって生成されたフラッシュ動作に応答して、キャッシュデバイスからデータをフラッシュすることもできるし、キャッシュデバイスが、キャッシュラインをフラッシュすることを独自に選択することもできる。幾つかの実施形態では、データ管理モジュール124は、このデータに対応するメモリアドレスを、メモリデバイスのリフレクティブメモリ領域内のメモリアドレス範囲と比較することができる。例えば、プロセッサが、キャッシュに記憶されたデータを伴う書き込み動作を実行する場合、キャッシュにおけるメモリアドレスは、変更されたデータにリンクすることができる。幾つかの実施形態では、プロセッサは、キャッシュに記憶されたデータを変更し、このデータが変更されたことを、MESIプロトコルを用いて追跡することができる。例えば、キャッシュは、キャッシュラインが変更されたこと又は排他的(exclusive)であることを示すビットを含みうる。キャッシュラインが排他的である場合、そのキャッシュラインに記憶されたデータ値は、メモリに記憶されたデータ値と一致する。幾つかの実施形態では、排他的なキャッシュラインは、変更されたキャッシュラインになりうる。例えば、プロセッサが、排他的なキャッシュラインに記憶されたデータに対して書き込み動作を実行すると、そのデータを変更することができ、そのキャッシュラインは、変更されたキャッシュラインになりうる。キャッシュに記憶されている変更されたデータは、メモリに記憶されているデータと同じ値を有しないことになる。
データ管理モジュール124が、キャッシュライン内のデータが、キャッシュデバイスからメモリデバイスのリフレクティブメモリ領域にフラッシュされるとともに、そのデータが変更されていると判断した場合、プロセスフローは、ブロック208において継続する。データ管理モジュール124が、キャッシュライン内のデータがキャッシュデバイスからメモリデバイスのリフレクティブメモリ領域にフラッシュされていないか、又はそのデータが変更されていないと判断した場合、プロセスフローは、ブロック210において終了する。
ブロック208において、データ管理モジュール124は、変更されたデータを第2のコンピューティングシステム内の第2のメモリデバイスに送信する。例えば、データ管理モジュール124は、変更されたデータを、リフレクティブメモリを備える一方のメモリデバイス(本明細書では、リフレクティブメモリデバイスともいう)から第2のリフレクティブメモリデバイスに送信することができる。幾つかの実施形態では、第2のリフレクティブメモリデバイスは、第2のコンピューティングデバイスに存在することができる。ある例では、第2のコンピューティングデバイスは、変更されたデータ値を、特に、不揮発性メモリ、揮発性メモリ、又はキャッシュ等の第2のコンピューティングデバイス内の様々なメモリデバイスにコピーすることができるデータ管理モジュールを備えることができる。ある実施形態では、データ管理モジュール124は、変更されたデータを、リフレクティブメモリからのデータを記憶する任意の適した数のメモリデバイスに送信することができる。データ管理モジュール124は、リフレクティブメモリと関連付けられた追加のメモリデバイスに、複数の変更されたデータ値を合わせて送信することもできる。幾つかの実施形態では、第2のコンピューティングシステムは、変更されたデータの受信に応答して、第2のコンピューティングシステムのキャッシュデバイス内のデータを、第2のコンピューティングデバイスの第2のメモリデバイスにフラッシュすることができる。このプロセスフローは、ブロック210において終了する。
図2のプロセスフロー図は、方法200の動作が何らかの特定の順序で実行されることを示すことも、方法200の動作の全てがあらゆる場合に含まれることを示すことも意図していない。例えば、データ管理モジュール124は、キャッシュラインに、変更されたデータをメモリデバイスに送信させるフラッシュ動作を生成しない場合がある。それとは逆に、データ管理モジュール124は、プロセッサが、変更された可能性のあるデータをメモリデバイスにフラッシュするフラッシュ動作を実行したことを検出する場合がある。さらに、特定のアプリケーションに応じて、任意の数の追加のステップを方法200内に含めることができる。例えば、データ管理モジュール124は、キャッシュから追い出された(evicted)キャッシュラインを検出することもできる。追い出されたキャッシュラインの検出に応答して、データ管理モジュール124は、追い出されたキャッシュライン内のデータをメモリデバイスのリフレクティブメモリ領域と比較することができ、変更されたデータをリフレクティブ領域から第2のコンピューティングシステム内の第2のメモリデバイスに送信することができる。
図3は、キャッシュミスに応答して、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例のプロセスフロー図である。本明細書でいうキャッシュミスは、要求されたデータがキャッシュデバイスに記憶されていないとプロセッサが判断した後に、プロセッサがデータをメモリデバイスに要求することを含む。方法300は、図1のコンピューティングシステム100等のコンピューティングデバイスを用いて実施することができる。
ブロック302において、データ管理モジュール124は、キャッシュミスを検出することができる。幾つかの実施形態では、キャッシュミスの結果、プロセッサは、メモリデバイス内のデータにアクセスする。例えば、プロセッサは、共有状態又は排他状態にあるメモリデバイス内のデータにアクセスすることができる。共有状態では、プロセッサは、読み出し専用モードにあるようなメモリデバイス内のデータを変更することができない場合がある。排他状態では、プロセッサは、書き込み動作を用いてメモリデバイス内のデータを変更することができる場合がある。
ブロック304において、データ管理モジュール124は、プロセッサによってアクセスされたデータのメモリアドレスがメモリデバイスのリフレクティブメモリ領域に対応するか否かを判断する。さらに、幾つかの実施形態では、データ管理モジュール124は、アクセスされたデータが、排他状態又は変更状態においてキャッシュデバイスに提供されたか否かを判断する。上記で論述したように、リフレクティブメモリは、少なくとも1つの追加のメモリデバイスとコヒーレンシを維持することができるメモリデバイスの任意の適した部分を備えることができる。例えば、データが、第1のメモリデバイスの指定されたリフレクティブ領域において変更された場合、この変更されたデータのコピーを、このデータを同様に記憶する第2のメモリデバイスに送信、すなわち反映することができる。幾つかの実施形態では、データ管理モジュール124は、メモリ内のメモリ範囲のセットが任意の適した数の追加のメモリデバイスにおいて反映されると判断することができる。データ管理モジュール124が、プロセッサによってアクセスされたデータのメモリアドレスがメモリデバイスのリフレクティブメモリ領域に対応し、かつ、アクセスされたデータが排他状態又は変更状態においてキャッシュデバイスに提供されていると判断した場合、プロセスフローは、ブロック306において継続する。データ管理モジュール124が、プロセッサによってアクセスされたデータのメモリアドレスがメモリデバイスのリフレクティブメモリ領域に対応していないと判断した場合、又はアクセスされたデータが排他状態又は変更状態においてキャッシュに提供されていないと判断した場合、プロセスフローは、ブロック308において終了する。
ブロック306において、データ管理モジュール124は、或る遅延の後に、アクセスされたキャッシュラインのフラッシュをスケジューリングする。アクセスされたキャッシュラインのフラッシュは、アクセスされたキャッシュラインからのデータを、キャッシュデバイスからメモリデバイスに送信することを含みうる。ブロック310において、データ管理モジュール124は、フラッシュ動作をキャッシュデバイスに送信する。このフラッシュ動作は、キャッシュデバイスがキャッシュラインをメモリデバイスに送信することを示すことができる。
ブロック312において、データ管理モジュール124は、フラッシュされたキャッシュライン内のデータがメモリデバイスに書き込まれるか否かを判断する。幾つかの実施形態では、フラッシュされたキャッシュラインからのデータが変更されている場合、このフラッシュされたキャッシュラインからのデータは、メモリデバイスに書き込まれる。例えば、プロセッサは、キャッシュデバイスの任意のキャッシュライン内のデータを変更する書き込み動作を実行することができる。キャッシュラインによって記憶されている変更されたデータは、メモリデバイスに記憶されているデータと異なる可能性がある。したがって、メモリデバイス内のデータをキャッシュからの変更されたデータと置き換えることによって、メモリデバイス内のデータを更新することができる。フラッシュされたキャッシュラインがメモリデバイスに書き込まれた場合、プロセスフローは、ブロック314において継続する。フラッシュされたキャッシュラインがメモリデバイスに書き込まれない場合、プロセスフローは、ブロック308において終了する。
ブロック314において、データ管理モジュール124は、キャッシュライン内のデータが、キャッシュデバイスからメモリデバイスのリフレクティブメモリ領域にフラッシュされ、かつ、データが変更されていると判断する。キャッシュラインは、ブロック306においてスケジューリングされていることに起因してフラッシュされている場合がある。幾つかの実施形態では、キャッシュラインは、キャッシュデバイス118によって独自にフラッシュされている場合もある。幾つかの実施形態では、プロセッサは、キャッシュに記憶されたデータを変更し、このデータが変更されていることを、MESIプロトコルを用いて示すことができる。例えば、キャッシュは、キャッシュラインが変更されたこと又は排他的であることを示すビットを含みうる。キャッシュに記憶されている変更されたデータは、メモリに記憶されているデータと同じ値を有しないことになる。
ブロック316において、データ管理モジュール124は、変更されたデータを、メモリデバイスのリフレクティブ領域から第2のコンピューティングシステムの第2のメモリデバイスに送信する。例えば、データ管理モジュール124は、変更されたデータを、リフレクティブメモリを備える一方のメモリデバイス(本明細書では、リフレクティブメモリデバイスともいう)から第2のリフレクティブメモリデバイスに送信することができる。送信することができる。幾つかの実施形態では、第2のリフレクティブメモリデバイスは、第2のコンピューティングデバイスに存在することができる。1つの例では、第2のコンピューティングデバイスは、変更されたデータ値を、特に、不揮発性メモリ、揮発性メモリ、又はキャッシュ等の第2のコンピューティングデバイス内の様々なメモリデバイスにコピーすることができるデータ管理モジュールを備えることができる。ある実施形態では、データ管理モジュール124は、変更されたデータを、リフレクティブメモリからのデータを記憶する任意の適した数のメモリデバイスに送信することができる。データ管理モジュール124は、リフレクティブメモリと関連付けられた追加のメモリデバイスに、複数の変更されたデータ値を合わせて送信することもできる。幾つかの実施形態では、第2のコンピューティングシステムは、変更されたデータの受信に応答して、第2のコンピューティングシステムのキャッシュデバイス内のデータを、第2のコンピューティングデバイスの第2のメモリデバイスにフラッシュすることができる。このプロセスフローは、ブロック308において終了する。
図3のプロセスフロー図は、方法300の動作が何らかの特定の順序で実行されることを示すことも、方法300の動作の全てがあらゆる場合に含まれることを示すことも意図していない。例えば、データ管理モジュール124がフラッシュ動作をキャッシュデバイスに送信するよりも前に、プロセッサがキャッシュラインを追い出した場合、データ管理モジュール124は、フラッシュ動作をキャッシュデバイスに送信しない場合がある。さらに、特定のアプリケーションに応じて、任意の数の追加のステップを方法300内に含めることができる。
図4は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシをどのように実施することができるのかの一例を示すブロック図である。幾つかの実施形態では、コンピューティングデバイス400は、メモリデバイス402、データ管理モジュール124、及びキャッシュ404を備えることができる。メモリデバイス402は、任意の適した数のメモリアドレスと関連付けられた任意の適した量のデータ406を記憶することができる。幾つかの実施形態では、メモリデバイス402の一部分は、リフレクティブメモリ408として用いることができる。上記で論述したように、リフレクティブメモリ408は、追加のメモリデバイスにおいて反映されるメモリアドレスに保持されたデータを含みうる。例えば、リフレクティブメモリ408に記憶されたデータのコピーは、メモリデバイス402と同じコンピューティングデバイスに局所的に位置する追加のメモリデバイス、又は別個のコンピューティングデバイスに位置する追加のメモリデバイスに記憶することができる。幾つかの実施形態では、リフレクティブメモリ408に用いられるメモリデバイス402の部分は、反映される異なる量のデータを記憶するように定期的に変更することができる。
幾つかの実施形態では、キャッシュ404は、キャッシュライン410にデータを記憶することができる。各キャッシュライン410は、メモリアドレスと関連付けられたデータを保持することができる。1つの実施形態では、キャッシュライン410は、このキャッシュライン410内のデータが変更されているか否かを示すメモリインジケータビット412を含みうる。例えば、プロセッサ414は、キャッシュライン410からのデータを用いて書き込み動作を実行することができ、この書き込み動作は、キャッシュライン410内の既存のデータ値を変更された値に置き換えることができる。プロセッサ414は、メモリインジケータビット412を排他から変更に変えて、キャッシュライン410内のデータが変更されていることを示すこともできる。
幾つかの実施形態では、データ管理モジュール124は、或る範囲のメモリアドレスがキャッシュデバイス404からメモリデバイス402にフラッシュされることを示すソフトウェアアプリケーションからの書き込み動作を検出することができる。例えば、この書き込み動作は、データ管理モジュール124内の制御レジスタに送信することができる。幾つかの実施形態では、この制御レジスタは、キャッシュデバイス404からメモリデバイス402にフラッシュされるべき任意の適した数のメモリアドレスを示すことができる。データ管理モジュール124は、任意の適した数のキャッシュデバイスからデータを除去する動作も生成することができる。例えば、データ管理モジュール124は、所定のメモリアドレス範囲内にあるメモリアドレスをキャッシュデバイス404からメモリデバイス402にフラッシュすることができる。
代替的に、データ管理モジュール124は、メモリコントローラ等のメモリインタフェースからの所定の情報を利用して、キャッシュライン410をメモリデバイス402にフラッシュすることができる。幾つかの実施形態では、この所定の情報は、フィルタキャッシュ(本明細書ではRTAGともいう)からの情報、又はメモリマップドストレージアーキテクチャとともに用いるように提案されているような記述子フィールド内の情報を含みうる。幾つかの例では、データ管理モジュール124は、この所定の情報を用いて、複数のキャッシュライン410がメモリデバイス402内のリフレクティブメモリ408からのデータを含むと判断することができる。データ管理モジュール124は、このデータをキャッシュライン410から、リフレクティブメモリ408と関連付けられた追加のメモリデバイスに転送する前に、このデータも、キャッシュライン410からメモリデバイス402内のリフレクティブメモリ408にフラッシュすることができる。
図4のブロック図は、コンピューティングシステム400が図4に示す構成要素の全てを備えることを示すことを意図したものでないことが理解されるべきである。それとは逆に、コンピューティングシステム400は、これよりも少ない構成要素又は図4に示していない追加の構成要素(例えば、追加のメモリデバイス、インタフェース等)を備えることができる。さらに、データ管理モジュール124の機能のいずれも、ハードウェア又はプロセッサ414において部分的に又は全面的に実施することができる。例えば、この機能は、特に、特定用途向け集積回路を用いて実施することもできるし、プロセッサ414に実装されるロジックにおいて実施することもできるし、記憶デバイスに存在するモジュールにおいて実施することもできるし、周辺デバイス上のコプロセッサにおいて実施することもできる。
図5は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができる有形の非一時的なコンピュータ可読媒体500を示すブロック図である。有形の非一時的なコンピュータ可読媒体500は、プロセッサ502がコンピュータバス504を介してアクセスすることができる。さらに、有形の非一時的コンピュータ可読媒体500は、本方法のステップを実行するようにプロセッサ502に指示するコンピュータ実行可能命令を含みうる。
本明細書において論述した様々なソフトウェア構成要素は、図5に示すような有形の非一時的なコンピュータ可読媒体500上に記憶することができる。例えば、データ管理モジュール506は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施するようにプロセッサ502に指示するように構成することができる。幾つかの実施形態では、データ管理モジュール506は、キャッシュ内のデータが変更されていると判断し、既存のデータ値を変更されたデータ値に置き換えることによってリフレクティブメモリを更新することができる。データ管理モジュール506は、変更されたデータ値を追加のメモリデバイスに送信することもできる。特定のアプリケーションに応じて、図5に示していない任意の数の追加のソフトウェア構成要素を有形の非一時的なコンピュータ可読媒体500内に含められることが理解されるべきであろう。
本明細書における例は、様々な変更及び代替の形態を受け入れることができ、例示として示されてきたにすぎない。さらに、本技法は、本明細書に開示した特定の例に限定されることを意図していないことが理解されるべきであろう。実際は、添付の特許請求の範囲の範囲が、開示された主題が関係する当業者に明らかである全ての代替形態、変更形態、及び均等形態を含むものとみなされる。

Claims (15)

  1. 第1のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法であって、
    キャッシュデバイスから前記第1のメモリデバイスにデータがフラッシュされることを示す表示を受信するステップと、
    前記データに対応するメモリアドレスが前記第1のメモリデバイスの前記リフレクティブメモリ領域内にあることを検出するステップと、
    フラッシュ動作を用いて前記キャッシュデバイスから前記第1のメモリデバイスに前記データを送信するステップと、
    前記第1のメモリデバイスによって受信された前記データが変更されたデータであると判断するステップと、
    前記変更されたデータを第2のコンピューティングシステム内の第2のメモリデバイスに送信するステップと
    を含んでなる、第1のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法。
  2. 前記フラッシュ動作を用いて前記キャッシュデバイスから前記第1のメモリデバイスに前記データを送信するステップは、前記キャッシュデバイスから前記データを除去することを含む、請求項1に記載の方法。
  3. 前記フラッシュ動作は、前記キャッシュデバイスに対し、該キャッシュデバイス内のキャッシュラインからのデータを前記第1のメモリデバイスに送信させるものである、請求項1に記載の方法。
  4. 前記第2のコンピューティングシステムは、前記変更されたデータを受信し、該変更されたデータを前記第2のメモリデバイスにおけるアドレス範囲内にマッピングする、請求項1に記載の方法。
  5. データのセットを前記キャッシュデバイスから前記リフレクティブメモリに送信するステップを含む、請求項1に記載の方法。
  6. 複数の変更されたデータブロックを前記第2のコンピューティングシステムに送信するステップを含む、請求項1に記載の方法。
  7. 前記第2のコンピューティングシステムは、前記変更されたデータの受信に応答して、第2のキャッシュデバイスから前記第2のメモリデバイスに前記データを送信する、請求項1に記載の方法。
  8. 第1のメモリデバイスのリフレクティブメモリ領域にあるデータを更新するシステムであって、
    データを記憶する前記第1のメモリデバイスのリフレクティブメモリ領域と、
    前記リフレクティブメモリ領域からのデータのコピーを記憶するキャッシュデバイスと、
    プロセッサと
    を含んでなり、
    前記プロセッサは、
    要求されたデータのキャッシュミスを検出し、
    前記要求されたデータが前記第1のメモリデバイスの前記リフレクティブメモリ領域に記憶されていると判断し、
    前記要求されたデータのコピーをリフレクティブメモリから前記キャッシュデバイスに送信し、
    フラッシュ動作に応答して、前記キャッシュデバイスからデータを受信し、
    前記キャッシュデバイスから受信された前記データが変更されたデータであると判断し、
    第2のコンピューティングシステム内の第2のメモリデバイスに前記変更されたデータを送信するものである、第1のメモリデバイスのリフレクティブメモリ領域内のデータを更新するシステム。
  9. 前記プロセッサは、前記フラッシュ動作を実行させるようにスケジューリングする、請求項8に記載のシステム。
  10. 前記プロセッサは、前記変更されたデータのコピーを作成し、該変更されたデータの該コピーを前記第1のメモリデバイスの前記リフレクティブメモリ領域に送信する、請求項8に記載のシステム。
  11. 前記フラッシュ動作は、前記キャッシュデバイスに対し、該キャッシュデバイス内のキャッシュラインからのデータを前記第1のメモリデバイスに送信させるものである、請求項8に記載のシステム。
  12. 前記キャッシュデバイスは、前記キャッシュデバイス内のデータが変更されていることを示すメモリインジケータビットを含む、請求項8に記載のシステム。
  13. 複数の命令を含む非一時的なコンピュータ可読媒体であって、該複数の命令は、コンピューティングデバイス上で実行されることに応答して、該コンピューティングデバイスに対し、
    キャッシュデバイスから第1のメモリデバイスにデータがフラッシュされることを示す表示を受信させる命令と、
    前記データに対応するメモリアドレスが前記第1のメモリデバイスのリフレクティブメモリ領域内にあることを検出させる命令と、
    フラッシュ動作を用いて前記キャッシュデバイスから前記第1のメモリデバイスにデータを送信させる命令と、
    前記第1のメモリデバイスによって受信された前記データが変更されたデータであると判断させる命令と、
    前記変更されたデータを第2のコンピューティングシステム内の第2のメモリデバイスに送信させる命令と
    を実行させるものである、複数の命令を含む非一時的なコンピュータ可読媒体。
  14. 前記第2のコンピューティングシステムは、前記変更されたデータを受信し、該変更されたデータを前記第2のメモリデバイスにおけるアドレス範囲内にマッピングする、請求項13に記載のコンピュータ可読媒体。
  15. 前記命令は、前記コンピューティングデバイスに対し、複数の変更されたデータブロックを第2のコンピューティングシステムに送信させるものである、請求項13に記載のコンピュータ可読媒体。
JP2015560157A 2013-03-28 2013-03-28 リフレクティブメモリとのコヒーレンシの実施 Pending JP2016508650A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/034442 WO2014158173A1 (en) 2013-03-28 2013-03-28 Implementing coherency with reflective memory

Publications (1)

Publication Number Publication Date
JP2016508650A true JP2016508650A (ja) 2016-03-22

Family

ID=51624955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015560157A Pending JP2016508650A (ja) 2013-03-28 2013-03-28 リフレクティブメモリとのコヒーレンシの実施

Country Status (7)

Country Link
US (1) US9575898B2 (ja)
EP (1) EP2979192B1 (ja)
JP (1) JP2016508650A (ja)
KR (1) KR20150136045A (ja)
CN (1) CN104969203B (ja)
TW (1) TWI506537B (ja)
WO (1) WO2014158173A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107340441B (zh) * 2017-06-07 2019-07-05 同济大学 一种燃料电池汽车动力总成集成测试系统
CN116846863B (zh) * 2023-08-30 2023-11-10 东方空间技术(山东)有限公司 一种光纤反射内存网内存映射方法、装置及计算设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038422A (ja) * 2002-07-02 2004-02-05 Matsushita Electric Ind Co Ltd 半導体装置
US20040117562A1 (en) * 2002-12-13 2004-06-17 Wu Cha Y. System and method for sharing memory among multiple storage device controllers
US20090106490A1 (en) * 2007-10-22 2009-04-23 Denso Corporation Data processing apparatus and program for same
JP2011008674A (ja) * 2009-06-29 2011-01-13 Nec Commun Syst Ltd 二重化情報処理システム及び同期化方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926830A (en) * 1996-10-07 1999-07-20 International Business Machines Corporation Data processing system and method for maintaining coherency between high and low level caches using inclusive states
US7000078B1 (en) * 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US20030110233A1 (en) 2001-12-10 2003-06-12 Vmic Reflective memory system and method capable of dynamically sizing data packets
US6941396B1 (en) 2003-02-19 2005-09-06 Istor Networks, Inc. Storage controller redundancy using bi-directional reflective memory channel
US7469321B2 (en) * 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
DE602004025556D1 (de) 2004-06-08 2010-04-01 Freescale Semiconductor Inc Aufrechterhaltung der Cachespeicherkoherenz zum direkten Zugriff (DMA), Abschluss einer Aufgabe, zur Synchronisierung
US20080320253A1 (en) 2007-06-19 2008-12-25 Andrew Tomlin Memory device with circuitry for writing data of an atomic transaction
US8762652B2 (en) * 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
JP2013519139A (ja) * 2010-02-09 2013-05-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) データ記憶方法
US20110296095A1 (en) 2010-05-25 2011-12-01 Mediatek Inc. Data movement engine and memory control methods thereof
US8706983B2 (en) * 2010-06-30 2014-04-22 Sandisk Technologies Inc. Garbage collection of memory blocks using volatile memory
KR101879442B1 (ko) * 2011-05-25 2018-07-18 삼성전자주식회사 휘발성 메모리 장치의 리프레쉬 방법, 리프레쉬 어드레스 생성기 및 휘발성 메모리 장치
US8856456B2 (en) * 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence
KR101695845B1 (ko) * 2012-09-20 2017-01-12 한국전자통신연구원 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038422A (ja) * 2002-07-02 2004-02-05 Matsushita Electric Ind Co Ltd 半導体装置
US20040117562A1 (en) * 2002-12-13 2004-06-17 Wu Cha Y. System and method for sharing memory among multiple storage device controllers
US20090106490A1 (en) * 2007-10-22 2009-04-23 Denso Corporation Data processing apparatus and program for same
EP2053519A1 (en) * 2007-10-22 2009-04-29 Denso Corporation Data processing apparatus and program for same
JP2009104300A (ja) * 2007-10-22 2009-05-14 Denso Corp データ処理装置及びプログラム
JP2011008674A (ja) * 2009-06-29 2011-01-13 Nec Commun Syst Ltd 二重化情報処理システム及び同期化方法

Also Published As

Publication number Publication date
KR20150136045A (ko) 2015-12-04
EP2979192B1 (en) 2018-05-30
EP2979192A1 (en) 2016-02-03
US9575898B2 (en) 2017-02-21
TWI506537B (zh) 2015-11-01
CN104969203B (zh) 2017-08-15
US20160026576A1 (en) 2016-01-28
TW201447749A (zh) 2014-12-16
EP2979192A4 (en) 2016-11-16
CN104969203A (zh) 2015-10-07
WO2014158173A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
JP5348429B2 (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
TWI391821B (zh) 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法
US8799588B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US8966222B2 (en) Message passing in a cluster-on-chip computing environment
US20170192886A1 (en) Cache management for nonvolatile main memory
US9208091B2 (en) Coherent attached processor proxy having hybrid directory
CN109154907B (zh) 在输入-输出存储器管理单元中使用多个存储器元件来执行虚拟地址到物理地址转译
KR101558427B1 (ko) 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템
JPWO2010035426A1 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US10635587B2 (en) Memory controller, information processing apparatus, and processor
US10169236B2 (en) Cache coherency
US20180336143A1 (en) Concurrent cache memory access
US20140006716A1 (en) Data control using last accessor information
JP5587539B2 (ja) ローカルメモリデータのコヒーレントなキャッシュ処理
US7669013B2 (en) Directory for multi-node coherent bus
US7725660B2 (en) Directory for multi-node coherent bus
JP2020003959A (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
US9251073B2 (en) Update mask for handling interaction between fills and updates
US9575898B2 (en) Implementing coherency with reflective memory
US20140029616A1 (en) Dynamic node configuration in directory-based symmetric multiprocessing systems
JP6786541B2 (ja) 管理装置、情報処理装置、管理方法、およびプログラム
JP2013011971A (ja) 分散共有メモリ管理システム、分散共有メモリ管理方法、および分散共有メモリ管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160923

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161018

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20161115

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20161117

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170512