(57)【要約】  第１のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法が記載されている。ある例では、第１のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法が、キャッシュデバイスから第１のメモリデバイスにデータがフラッシュされることを示す表示を受信することを含む。この方法は、データに対応するメモリアドレスが第１のメモリデバイスのリフレクティブメモリ領域内にあることを検出すること、及びフラッシュ動作を用いて、キャッシュデバイスから第１のメモリデバイスにデータを送信することも含む。加えて、この方法は、第１のメモリデバイスによって受信されたデータが変更されたデータであると判断することを含む。さらに、この方法は、変更されたデータを第２のコンピューティングシステム内の第２のメモリデバイスに送信することを含む。【選択図】図１
2016508650.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法であって、
キャッシュデバイスから前記第１のメモリデバイスにデータがフラッシュされることを示す表示を受信するステップと、
前記データに対応するメモリアドレスが前記第１のメモリデバイスの前記リフレクティブメモリ領域内にあることを検出するステップと、
フラッシュ動作を用いて前記キャッシュデバイスから前記第１のメモリデバイスに前記データを送信するステップと、
前記第１のメモリデバイスによって受信された前記データが変更されたデータであると判断するステップと、
前記変更されたデータを第２のコンピューティングシステム内の第２のメモリデバイスに送信するステップと
を含んでなる、第１のメモリデバイスのリフレクティブメモリ領域内のデータを更新する方法。
【請求項２】
前記フラッシュ動作を用いて前記キャッシュデバイスから前記第１のメモリデバイスに前記データを送信するステップは、前記キャッシュデバイスから前記データを除去することを含む、請求項１に記載の方法。
【請求項３】
前記フラッシュ動作は、前記キャッシュデバイスに対し、該キャッシュデバイス内のキャッシュラインからのデータを前記第１のメモリデバイスに送信させるものである、請求項１に記載の方法。
【請求項４】
前記第２のコンピューティングシステムは、前記変更されたデータを受信し、該変更されたデータを前記第２のメモリデバイスにおけるアドレス範囲内にマッピングする、請求項１に記載の方法。
【請求項５】
データのセットを前記キャッシュデバイスから前記リフレクティブメモリに送信するステップを含む、請求項１に記載の方法。
【請求項６】
複数の変更されたデータブロックを前記第２のコンピューティングシステムに送信するステップを含む、請求項１に記載の方法。
【請求項７】
前記第２のコンピューティングシステムは、前記変更されたデータの受信に応答して、第２のキャッシュデバイスから前記第２のメモリデバイスに前記データを送信する、請求項１に記載の方法。
【請求項８】
第１のメモリデバイスのリフレクティブメモリ領域にあるデータを更新するシステムであって、
データを記憶する前記第１のメモリデバイスのリフレクティブメモリ領域と、
前記リフレクティブメモリ領域からのデータのコピーを記憶するキャッシュデバイスと、
プロセッサと
を含んでなり、
前記プロセッサは、
要求されたデータのキャッシュミスを検出し、
前記要求されたデータが前記第１のメモリデバイスの前記リフレクティブメモリ領域に記憶されていると判断し、
前記要求されたデータのコピーをリフレクティブメモリから前記キャッシュデバイスに送信し、
フラッシュ動作に応答して、前記キャッシュデバイスからデータを受信し、
前記キャッシュデバイスから受信された前記データが変更されたデータであると判断し、
第２のコンピューティングシステム内の第２のメモリデバイスに前記変更されたデータを送信するものである、第１のメモリデバイスのリフレクティブメモリ領域内のデータを更新するシステム。
【請求項９】
前記プロセッサは、前記フラッシュ動作を実行させるようにスケジューリングする、請求項８に記載のシステム。
【請求項１０】
前記プロセッサは、前記変更されたデータのコピーを作成し、該変更されたデータの該コピーを前記第１のメモリデバイスの前記リフレクティブメモリ領域に送信する、請求項８に記載のシステム。
【請求項１１】
前記フラッシュ動作は、前記キャッシュデバイスに対し、該キャッシュデバイス内のキャッシュラインからのデータを前記第１のメモリデバイスに送信させるものである、請求項８に記載のシステム。
【請求項１２】
前記キャッシュデバイスは、前記キャッシュデバイス内のデータが変更されていることを示すメモリインジケータビットを含む、請求項８に記載のシステム。
【請求項１３】
複数の命令を含む非一時的なコンピュータ可読媒体であって、該複数の命令は、コンピューティングデバイス上で実行されることに応答して、該コンピューティングデバイスに対し、
キャッシュデバイスから第１のメモリデバイスにデータがフラッシュされることを示す表示を受信させる命令と、
前記データに対応するメモリアドレスが前記第１のメモリデバイスのリフレクティブメモリ領域内にあることを検出させる命令と、
フラッシュ動作を用いて前記キャッシュデバイスから前記第１のメモリデバイスにデータを送信させる命令と、
前記第１のメモリデバイスによって受信された前記データが変更されたデータであると判断させる命令と、
前記変更されたデータを第２のコンピューティングシステム内の第２のメモリデバイスに送信させる命令と
を実行させるものである、複数の命令を含む非一時的なコンピュータ可読媒体。
【請求項１４】
前記第２のコンピューティングシステムは、前記変更されたデータを受信し、該変更されたデータを前記第２のメモリデバイスにおけるアドレス範囲内にマッピングする、請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記命令は、前記コンピューティングデバイスに対し、複数の変更されたデータブロックを第２のコンピューティングシステムに送信させるものである、請求項１３に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
現代のコンピューティングデバイスは、ますます複雑なソフトウェアアプリケーションを実行する。これらの複雑なソフトウェアアプリケーションの実行時間を減らすために、幾つかのコンピューティングデバイスは、動作を並列に実行することができる。例えば、コンピューティングデバイスは、２つの動作を同時に実行することができる。幾つかの実施形態では、２つのコンピューティングデバイスは、当該２つのコンピューティングデバイス間でデータを送受信することによって動作を並列に実行することができる。
【０００２】
以下の詳細な説明では、図面を参照して幾つかの例を説明する。
【図面の簡単な説明】
【０００３】
【図１】リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができる一例のコンピューティングシステムのブロック図である。
【図２】リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例を示すプロセスフロー図である。
【図３】キャッシュミスに応答してリフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例のプロセスフロー図である。
【図４】リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシをどのように実施することができるのかの一例を示すブロック図である。
【図５】リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができる有形の非一時的コンピュータ可読媒体の一例を示すブロック図である。
【発明を実施するための形態】
【０００４】
本明細書において説明する主題の実施形態によれば、リフレクティブメモリを有するコンピューティングデバイスが、コヒーレンシを実施することができる。本明細書でいうリフレクティブメモリは、複数の別々のメモリコントローラ又はデータ管理モジュールを通じて共通のデータのセットを維持する共有メモリシステム内のメモリデバイスの任意の適した部分を含む。例えば、リフレクティブメモリは、一方のコンピューティングシステムの不揮発性メモリにデータを記憶することができるととともに、第２のコンピューティングシステムのメモリデバイスにそのデータのコピーも記憶することができる。本明細書において説明する技法は、データの複数のコピーが単数又は複数のコンピューティングシステム内の様々なメモリデバイスに記憶されているとき、コヒーレンシを維持する。本明細書でいうコヒーレンシは、共有メモリシステム内のデータの共通のセットに対する変更を検出することと、この変更に基づいてデータの共通のセットのコピーを更新することとを含む。例えば、メモリアドレスと関連付けられたデータは、メモリデバイスからキャッシュデバイス内にコピーされる場合がある。プロセッサがキャッシュデバイス内のデータを変更した場合、メモリデバイス内のデータは、古くなっているか又は旧式になっている場合がある。本明細書において説明する技法は、リフレクティブメモリを備えるコンピューティングデバイスにおいてコヒーレンシを可能にすることができる。
【０００５】
幾つかの実施形態では、本明細書において説明する技法は、未変更のデータをキャッシュデバイスからメモリデバイスに送信することなくコヒーレンシを実施することができる。例えば、プロセッサは、データ値を読み出すためにキャッシュデバイス内の幾つかのデータ値にアクセスする場合があるが、このアクセスは、それらのデータ値を変更しない。プロセッサは、書き込み動作のためにデータ値にアクセスする場合もあるが、このアクセスは、それらのデータ値を変更することができる。幾つかの実施形態では、未変更のデータ値はキャッシュデバイス内に留まることができる一方、変更されたデータ値はメモリデバイスにコピーされる。
【０００６】
図１は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができるコンピューティングシステム１００の一例のブロック図である。コンピューティングシステム１００は、例えば、特に、コンピュータサーバ、移動電話、ラップトップコンピュータ、デスクトップコンピュータ、又はタブレットコンピュータを含みうる。コンピューティングシステム１００は、記憶された命令を実行するように構成されたプロセッサ１０２を備えることができる。プロセッサ１０２は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、又は任意の数の他の適切な構成とすることができる。
【０００７】
プロセッサ１０２は、コンピューティングシステム１００を１つ以上のＩ／Ｏデバイス１０８に接続するように構成された入力／出力（Ｉ／Ｏ）デバイスインタフェース１０６に、システムバス１０４（例えば、特に、ＡＭＢＡ、ＰＣＩ（商標）、ＰＣＩ  Ｅｘｐｒｅｓｓ（商標）、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）、シリアルＡＴＡ）を通じて接続することができる。Ｉ／Ｏデバイス１０８は、例えば、キーボード及びポインティングデバイスを含むことができ、このポインティングデバイスは、特に、タッチパッド又はタッチスクリーンを含みうる。Ｉ／Ｏデバイス１０８は、コンピューティングシステム１００の組み込み構成要素とすることもできるし、コンピューティングシステム１００に外部接続されたデバイスとすることもできる。
【０００８】
プロセッサ１０２は、コンピューティングシステム１００をディスプレイデバイス１１２に接続するように構成されたディスプレイデバイスインタフェース１１０に、システムバス１０４を通じてリンクすることもできる。ディスプレイデバイス１１２は、コンピューティングシステム１００の組み込み構成要素である表示画面を備えることができる。ディスプレイデバイス１１２は、特に、コンピューティングシステム１００に外部接続されたコンピュータモニタ、テレビ、又はプロジェクタを含みうる。加えて、プロセッサ１０２は、システムバス１０４を通じてネットワークインタフェースカード（ＮＩＣ）１１４にリンクすることもできる。ＮＩＣ１１４は、システムバス１０４を通じてコンピューティングシステム１００をネットワーク（図示せず）に接続するように構成することができる。このネットワーク（図示せず）は、特に、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、又はインターネットとすることができる。
【０００９】
プロセッサ１０２は、システムバス１０４を通じてメモリデバイス１１６にリンクすることもできる。幾つかの実施形態では、メモリデバイス１１６は、ランダムアクセスメモリ（例えば、特に、ＳＲＡＭ、ＤＲＡＭ、ｅＤＲＡＭ、ＥＤＯ  ＲＡＭ、ＤＤＲ  ＲＡＭ、ＲＲＡＭ（商標）、ＰＲＡＭ）、読み出し専用メモリ（例えば、特に、マスクＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ）、不揮発性メモリ、又は他の任意の適したメモリシステムを含みうる。ある例では、メモリデバイス１１６は、任意の適した数のデータ値にそれぞれ対応する任意の適した数のメモリアドレスを備えることができる。幾つかの実施形態では、頻繁にアクセスされるデータ値のコピーをキャッシュ１１８に記憶することができる。幾つかの実施形態では、プロセッサ１０２は、操作のためにデータをメモリデバイス１１６に要求する前にそのデータをキャッシュ１１８に要求することができる。ある例では、キャッシュ１１８が記憶することができるデータ値は、メモリデバイス１１６よりも少ないが、キャッシュ１１８は、メモリデバイス１１６が記憶されたデータをプロセッサ１０２に提供することができる速度よりも高速に、記憶されたデータをプロセッサ１０２に提供することができる。
【００１０】
幾つかの実施形態では、メモリデバイス１１６からのデータは、第２のコンピューティングシステム１２２の第２のメモリデバイス１２０において反映することができる。本明細書でいう「反映（リフレクト：reflect）」という用語は、第１のコンピューティングシステムがデータを生成するか又は書き込み、当該データの局所的にコヒーレントなコピーを第２のコンピューティングシステム上の別個のメモリデバイスに維持することを含む。例えば、メモリデバイス１１６におけるメモリアドレスは、新しい値に変更されたデータ値に対応する場合がある。メモリデバイス１１６及び第２のメモリデバイス１２０におけるコヒーレンシを提供するために、データのこの新しい値は、メモリデバイス１１６から第２のメモリデバイス１１８に送信、すなわち「反映（リフレクト）」される。第２のメモリデバイス１２０は、第２のコンピューティングシステム１２２の動作においてメモリデバイス１１６からのこの新しいデータ値を消費することができる第２のコンピューティングシステム１２２と関連付けられる。本明細書でいうデータを消費するとは、読み出し動作においてデータを用いることを含むが、書き込み動作においてデータを用いることを含まない。
【００１１】
幾つかの実施形態では、プロセッサ１０２は、システムバス１０４を通じてデータ管理モジュール１２４にリンクすることができる。データ管理モジュール１２４は、メモリデバイス１１６に記憶されたデータ、キャッシュ１１８に記憶されたデータ、及び第２のメモリデバイス１２０に記憶されたデータの間のコヒーレンシを維持することができる。ある実施形態では、データ管理モジュール１２４は、任意の適したファブリック１２６（例えば、特に、ＰＣＩ（商標）、ＰＣＩ  Ｅｘｐｒｅｓｓ（商標）、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）、シリアルＡＴＡ）及び第２のコンピューティングシステム１２２の第２のデータ管理モジュール１２８を通じて第２のメモリデバイス１２０にデータを送信することができる。第２のデータ管理モジュール１２８は、第２のコンピューティングシステム１２２の第２のメモリデバイス１２０に記憶されたデータのコヒーレンシを維持することができる。
【００１２】
ある実施形態では、データ管理モジュール１２４は、キャッシュ１１８内の変更されたデータをメモリデバイス１１６にコピーすることによって、記憶されたデータのコヒーレンシを維持することができる。変更されたデータをキャッシュ１１８からメモリデバイス１１６にコピーすることは、本明細書では、データを「フラッシュ（flush）」するともいう。幾つかの実施形態では、データ管理モジュール１２４が、キャッシュ１１８からメモリデバイス１１６の反映されたメモリ範囲にデータをフラッシュするとき、データ管理モジュール１２４は、この変更されたデータを第２のメモリデバイス１２０に送信することができる。第２のメモリデバイス１２０に記憶されたデータのコヒーレンシを維持することによって、第２のデータ管理モジュール１２８は、第２のコンピューティングシステム１２２において実行される動作が、メモリデバイス１１６に構成されたリフレクティブメモリ領域から転送された、変更されたデータを用いることを確実にすることができる。幾つかの実施形態では、第２のデータ管理モジュール１２８は、変更されたデータを受信することができ、この変更されたデータを第２のメモリデバイス１２０におけるアドレス範囲内にマッピングすることができる。
【００１３】
図１のブロック図では、コンピューティングシステム１００が図１に示す構成要素の全てを備えることを示すことを意図したものでないことを理解すべきである。それとは逆に、コンピューティングシステム１００は、これよりも少ない構成要素又は図１に示していない追加の構成要素（例えば、追加のメモリデバイス、ビデオカード、追加のネットワークインタフェース等）を備えることができる。さらに、データ管理モジュール１２４の機能のいずれも、別個のハードウェアにおいて部分的に又は全面的に実施することができる。例えば、この機能は、特に、特定用途向け集積回路を用いて実施することもできるし、メモリデバイス１１６において実施することもできるし、周辺デバイス上のコプロセッサにおいて実施することもできる。
【００１４】
図２は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例を示すプロセスフロー図である。この方法２００は、図１のコンピューティングシステム１００等のコンピューティングデバイスを用いて実施することができる。
【００１５】
ブロック２０２において、データ管理モジュール１２４は、キャッシュラインがキャッシュデバイスからフラッシュされることを示す表示を受信する。上記で論述したように、キャッシュデバイスは、データの任意の適した数のキャッシュラインを記憶し、各キャッシュラインは、或る量のデータ、例えば、１６バイト、３２バイト、６４バイト、又は１２８バイトのデータを含む。本明細書でいうキャッシュラインをフラッシュすることは、変更されたキャッシュラインをキャッシュデバイスからメモリデバイスに送信することを含む。キャッシュラインをフラッシュすることは、未変更のキャッシュラインをキャッシュデバイスから削除することも含む。キャッシュラインについては、図４に関して以下でより詳細に論述する。幾つかの実施形態では、データ管理モジュール１２４は、特に、オペレーティングシステム又はアプリケーションから表示を受信することができる。この表示は、変更されたデータをメモリデバイスに送信するようにキャッシュデバイスに命令することをデータ管理モジュール１２４に命令する任意の適した動作又はデータとすることができる。
【００１６】
ブロック２０４において、データ管理モジュール１２４は、キャッシュデバイスに対し、キャッシュデバイス内のキャッシュラインからメモリデバイスにデータを送信させるフラッシュ動作を生成する。幾つかの実施形態では、データ管理モジュール１２４は、ソフトウェア、オペレーティングシステム、又はハードウェア構成要素からの表示を用いてフラッシュ動作を生成することができる。例えば、データ管理モジュール１２４は、キャッシュラインがキャッシュデバイスからメモリデバイスにフラッシュされることを示す表示を検出することができる。
【００１７】
ブロック２０６において、データ管理モジュール１２４は、キャッシュデバイスからフラッシュされたキャッシュライン内のデータがメモリデバイスのリフレクティブメモリ領域へのものであるか否か、及びデータが変更されているか否かを判断する。上記で論述したように、リフレクティブメモリ領域は、少なくとも１つの追加のメモリデバイスとのコヒーレンシを維持することができる、或るメモリデバイスの任意の適した部分を含みうる。例えば、第１のメモリデバイスの指定されたリフレクティブ領域においてデータが変更された場合、この変更されたデータのコピーは、第１のリフレクティブメモリデバイス内のこのデータのコピーを記憶する第２のメモリデバイスに送信、すなわち反映することができる。幾つかの実施形態では、データ管理モジュール１２４は、メモリ内のメモリ範囲のセットが任意の適した数の追加のメモリデバイスにおいて反映されると判断することができる。
【００１８】
ブロック２０４に略述されているように、データ管理モジュール１２４によって生成されたフラッシュ動作に応答して、キャッシュデバイスからデータをフラッシュすることもできるし、キャッシュデバイスが、キャッシュラインをフラッシュすることを独自に選択することもできる。幾つかの実施形態では、データ管理モジュール１２４は、このデータに対応するメモリアドレスを、メモリデバイスのリフレクティブメモリ領域内のメモリアドレス範囲と比較することができる。例えば、プロセッサが、キャッシュに記憶されたデータを伴う書き込み動作を実行する場合、キャッシュにおけるメモリアドレスは、変更されたデータにリンクすることができる。幾つかの実施形態では、プロセッサは、キャッシュに記憶されたデータを変更し、このデータが変更されたことを、ＭＥＳＩプロトコルを用いて追跡することができる。例えば、キャッシュは、キャッシュラインが変更されたこと又は排他的（exclusive）であることを示すビットを含みうる。キャッシュラインが排他的である場合、そのキャッシュラインに記憶されたデータ値は、メモリに記憶されたデータ値と一致する。幾つかの実施形態では、排他的なキャッシュラインは、変更されたキャッシュラインになりうる。例えば、プロセッサが、排他的なキャッシュラインに記憶されたデータに対して書き込み動作を実行すると、そのデータを変更することができ、そのキャッシュラインは、変更されたキャッシュラインになりうる。キャッシュに記憶されている変更されたデータは、メモリに記憶されているデータと同じ値を有しないことになる。
【００１９】
データ管理モジュール１２４が、キャッシュライン内のデータが、キャッシュデバイスからメモリデバイスのリフレクティブメモリ領域にフラッシュされるとともに、そのデータが変更されていると判断した場合、プロセスフローは、ブロック２０８において継続する。データ管理モジュール１２４が、キャッシュライン内のデータがキャッシュデバイスからメモリデバイスのリフレクティブメモリ領域にフラッシュされていないか、又はそのデータが変更されていないと判断した場合、プロセスフローは、ブロック２１０において終了する。
【００２０】
ブロック２０８において、データ管理モジュール１２４は、変更されたデータを第２のコンピューティングシステム内の第２のメモリデバイスに送信する。例えば、データ管理モジュール１２４は、変更されたデータを、リフレクティブメモリを備える一方のメモリデバイス（本明細書では、リフレクティブメモリデバイスともいう）から第２のリフレクティブメモリデバイスに送信することができる。幾つかの実施形態では、第２のリフレクティブメモリデバイスは、第２のコンピューティングデバイスに存在することができる。ある例では、第２のコンピューティングデバイスは、変更されたデータ値を、特に、不揮発性メモリ、揮発性メモリ、又はキャッシュ等の第２のコンピューティングデバイス内の様々なメモリデバイスにコピーすることができるデータ管理モジュールを備えることができる。ある実施形態では、データ管理モジュール１２４は、変更されたデータを、リフレクティブメモリからのデータを記憶する任意の適した数のメモリデバイスに送信することができる。データ管理モジュール１２４は、リフレクティブメモリと関連付けられた追加のメモリデバイスに、複数の変更されたデータ値を合わせて送信することもできる。幾つかの実施形態では、第２のコンピューティングシステムは、変更されたデータの受信に応答して、第２のコンピューティングシステムのキャッシュデバイス内のデータを、第２のコンピューティングデバイスの第２のメモリデバイスにフラッシュすることができる。このプロセスフローは、ブロック２１０において終了する。
【００２１】
図２のプロセスフロー図は、方法２００の動作が何らかの特定の順序で実行されることを示すことも、方法２００の動作の全てがあらゆる場合に含まれることを示すことも意図していない。例えば、データ管理モジュール１２４は、キャッシュラインに、変更されたデータをメモリデバイスに送信させるフラッシュ動作を生成しない場合がある。それとは逆に、データ管理モジュール１２４は、プロセッサが、変更された可能性のあるデータをメモリデバイスにフラッシュするフラッシュ動作を実行したことを検出する場合がある。さらに、特定のアプリケーションに応じて、任意の数の追加のステップを方法２００内に含めることができる。例えば、データ管理モジュール１２４は、キャッシュから追い出された（evicted）キャッシュラインを検出することもできる。追い出されたキャッシュラインの検出に応答して、データ管理モジュール１２４は、追い出されたキャッシュライン内のデータをメモリデバイスのリフレクティブメモリ領域と比較することができ、変更されたデータをリフレクティブ領域から第２のコンピューティングシステム内の第２のメモリデバイスに送信することができる。
【００２２】
図３は、キャッシュミスに応答して、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施する方法の一例のプロセスフロー図である。本明細書でいうキャッシュミスは、要求されたデータがキャッシュデバイスに記憶されていないとプロセッサが判断した後に、プロセッサがデータをメモリデバイスに要求することを含む。方法３００は、図１のコンピューティングシステム１００等のコンピューティングデバイスを用いて実施することができる。
【００２３】
ブロック３０２において、データ管理モジュール１２４は、キャッシュミスを検出することができる。幾つかの実施形態では、キャッシュミスの結果、プロセッサは、メモリデバイス内のデータにアクセスする。例えば、プロセッサは、共有状態又は排他状態にあるメモリデバイス内のデータにアクセスすることができる。共有状態では、プロセッサは、読み出し専用モードにあるようなメモリデバイス内のデータを変更することができない場合がある。排他状態では、プロセッサは、書き込み動作を用いてメモリデバイス内のデータを変更することができる場合がある。
【００２４】
ブロック３０４において、データ管理モジュール１２４は、プロセッサによってアクセスされたデータのメモリアドレスがメモリデバイスのリフレクティブメモリ領域に対応するか否かを判断する。さらに、幾つかの実施形態では、データ管理モジュール１２４は、アクセスされたデータが、排他状態又は変更状態においてキャッシュデバイスに提供されたか否かを判断する。上記で論述したように、リフレクティブメモリは、少なくとも１つの追加のメモリデバイスとコヒーレンシを維持することができるメモリデバイスの任意の適した部分を備えることができる。例えば、データが、第１のメモリデバイスの指定されたリフレクティブ領域において変更された場合、この変更されたデータのコピーを、このデータを同様に記憶する第２のメモリデバイスに送信、すなわち反映することができる。幾つかの実施形態では、データ管理モジュール１２４は、メモリ内のメモリ範囲のセットが任意の適した数の追加のメモリデバイスにおいて反映されると判断することができる。データ管理モジュール１２４が、プロセッサによってアクセスされたデータのメモリアドレスがメモリデバイスのリフレクティブメモリ領域に対応し、かつ、アクセスされたデータが排他状態又は変更状態においてキャッシュデバイスに提供されていると判断した場合、プロセスフローは、ブロック３０６において継続する。データ管理モジュール１２４が、プロセッサによってアクセスされたデータのメモリアドレスがメモリデバイスのリフレクティブメモリ領域に対応していないと判断した場合、又はアクセスされたデータが排他状態又は変更状態においてキャッシュに提供されていないと判断した場合、プロセスフローは、ブロック３０８において終了する。
【００２５】
ブロック３０６において、データ管理モジュール１２４は、或る遅延の後に、アクセスされたキャッシュラインのフラッシュをスケジューリングする。アクセスされたキャッシュラインのフラッシュは、アクセスされたキャッシュラインからのデータを、キャッシュデバイスからメモリデバイスに送信することを含みうる。ブロック３１０において、データ管理モジュール１２４は、フラッシュ動作をキャッシュデバイスに送信する。このフラッシュ動作は、キャッシュデバイスがキャッシュラインをメモリデバイスに送信することを示すことができる。
【００２６】
ブロック３１２において、データ管理モジュール１２４は、フラッシュされたキャッシュライン内のデータがメモリデバイスに書き込まれるか否かを判断する。幾つかの実施形態では、フラッシュされたキャッシュラインからのデータが変更されている場合、このフラッシュされたキャッシュラインからのデータは、メモリデバイスに書き込まれる。例えば、プロセッサは、キャッシュデバイスの任意のキャッシュライン内のデータを変更する書き込み動作を実行することができる。キャッシュラインによって記憶されている変更されたデータは、メモリデバイスに記憶されているデータと異なる可能性がある。したがって、メモリデバイス内のデータをキャッシュからの変更されたデータと置き換えることによって、メモリデバイス内のデータを更新することができる。フラッシュされたキャッシュラインがメモリデバイスに書き込まれた場合、プロセスフローは、ブロック３１４において継続する。フラッシュされたキャッシュラインがメモリデバイスに書き込まれない場合、プロセスフローは、ブロック３０８において終了する。
【００２７】
ブロック３１４において、データ管理モジュール１２４は、キャッシュライン内のデータが、キャッシュデバイスからメモリデバイスのリフレクティブメモリ領域にフラッシュされ、かつ、データが変更されていると判断する。キャッシュラインは、ブロック３０６においてスケジューリングされていることに起因してフラッシュされている場合がある。幾つかの実施形態では、キャッシュラインは、キャッシュデバイス１１８によって独自にフラッシュされている場合もある。幾つかの実施形態では、プロセッサは、キャッシュに記憶されたデータを変更し、このデータが変更されていることを、ＭＥＳＩプロトコルを用いて示すことができる。例えば、キャッシュは、キャッシュラインが変更されたこと又は排他的であることを示すビットを含みうる。キャッシュに記憶されている変更されたデータは、メモリに記憶されているデータと同じ値を有しないことになる。
【００２８】
ブロック３１６において、データ管理モジュール１２４は、変更されたデータを、メモリデバイスのリフレクティブ領域から第２のコンピューティングシステムの第２のメモリデバイスに送信する。例えば、データ管理モジュール１２４は、変更されたデータを、リフレクティブメモリを備える一方のメモリデバイス（本明細書では、リフレクティブメモリデバイスともいう）から第２のリフレクティブメモリデバイスに送信することができる。送信することができる。幾つかの実施形態では、第２のリフレクティブメモリデバイスは、第２のコンピューティングデバイスに存在することができる。１つの例では、第２のコンピューティングデバイスは、変更されたデータ値を、特に、不揮発性メモリ、揮発性メモリ、又はキャッシュ等の第２のコンピューティングデバイス内の様々なメモリデバイスにコピーすることができるデータ管理モジュールを備えることができる。ある実施形態では、データ管理モジュール１２４は、変更されたデータを、リフレクティブメモリからのデータを記憶する任意の適した数のメモリデバイスに送信することができる。データ管理モジュール１２４は、リフレクティブメモリと関連付けられた追加のメモリデバイスに、複数の変更されたデータ値を合わせて送信することもできる。幾つかの実施形態では、第２のコンピューティングシステムは、変更されたデータの受信に応答して、第２のコンピューティングシステムのキャッシュデバイス内のデータを、第２のコンピューティングデバイスの第２のメモリデバイスにフラッシュすることができる。このプロセスフローは、ブロック３０８において終了する。
【００２９】
図３のプロセスフロー図は、方法３００の動作が何らかの特定の順序で実行されることを示すことも、方法３００の動作の全てがあらゆる場合に含まれることを示すことも意図していない。例えば、データ管理モジュール１２４がフラッシュ動作をキャッシュデバイスに送信するよりも前に、プロセッサがキャッシュラインを追い出した場合、データ管理モジュール１２４は、フラッシュ動作をキャッシュデバイスに送信しない場合がある。さらに、特定のアプリケーションに応じて、任意の数の追加のステップを方法３００内に含めることができる。
【００３０】
図４は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシをどのように実施することができるのかの一例を示すブロック図である。幾つかの実施形態では、コンピューティングデバイス４００は、メモリデバイス４０２、データ管理モジュール１２４、及びキャッシュ４０４を備えることができる。メモリデバイス４０２は、任意の適した数のメモリアドレスと関連付けられた任意の適した量のデータ４０６を記憶することができる。幾つかの実施形態では、メモリデバイス４０２の一部分は、リフレクティブメモリ４０８として用いることができる。上記で論述したように、リフレクティブメモリ４０８は、追加のメモリデバイスにおいて反映されるメモリアドレスに保持されたデータを含みうる。例えば、リフレクティブメモリ４０８に記憶されたデータのコピーは、メモリデバイス４０２と同じコンピューティングデバイスに局所的に位置する追加のメモリデバイス、又は別個のコンピューティングデバイスに位置する追加のメモリデバイスに記憶することができる。幾つかの実施形態では、リフレクティブメモリ４０８に用いられるメモリデバイス４０２の部分は、反映される異なる量のデータを記憶するように定期的に変更することができる。
【００３１】
幾つかの実施形態では、キャッシュ４０４は、キャッシュライン４１０にデータを記憶することができる。各キャッシュライン４１０は、メモリアドレスと関連付けられたデータを保持することができる。１つの実施形態では、キャッシュライン４１０は、このキャッシュライン４１０内のデータが変更されているか否かを示すメモリインジケータビット４１２を含みうる。例えば、プロセッサ４１４は、キャッシュライン４１０からのデータを用いて書き込み動作を実行することができ、この書き込み動作は、キャッシュライン４１０内の既存のデータ値を変更された値に置き換えることができる。プロセッサ４１４は、メモリインジケータビット４１２を排他から変更に変えて、キャッシュライン４１０内のデータが変更されていることを示すこともできる。
【００３２】
幾つかの実施形態では、データ管理モジュール１２４は、或る範囲のメモリアドレスがキャッシュデバイス４０４からメモリデバイス４０２にフラッシュされることを示すソフトウェアアプリケーションからの書き込み動作を検出することができる。例えば、この書き込み動作は、データ管理モジュール１２４内の制御レジスタに送信することができる。幾つかの実施形態では、この制御レジスタは、キャッシュデバイス４０４からメモリデバイス４０２にフラッシュされるべき任意の適した数のメモリアドレスを示すことができる。データ管理モジュール１２４は、任意の適した数のキャッシュデバイスからデータを除去する動作も生成することができる。例えば、データ管理モジュール１２４は、所定のメモリアドレス範囲内にあるメモリアドレスをキャッシュデバイス４０４からメモリデバイス４０２にフラッシュすることができる。
【００３３】
代替的に、データ管理モジュール１２４は、メモリコントローラ等のメモリインタフェースからの所定の情報を利用して、キャッシュライン４１０をメモリデバイス４０２にフラッシュすることができる。幾つかの実施形態では、この所定の情報は、フィルタキャッシュ（本明細書ではＲＴＡＧともいう）からの情報、又はメモリマップドストレージアーキテクチャとともに用いるように提案されているような記述子フィールド内の情報を含みうる。幾つかの例では、データ管理モジュール１２４は、この所定の情報を用いて、複数のキャッシュライン４１０がメモリデバイス４０２内のリフレクティブメモリ４０８からのデータを含むと判断することができる。データ管理モジュール１２４は、このデータをキャッシュライン４１０から、リフレクティブメモリ４０８と関連付けられた追加のメモリデバイスに転送する前に、このデータも、キャッシュライン４１０からメモリデバイス４０２内のリフレクティブメモリ４０８にフラッシュすることができる。
【００３４】
図４のブロック図は、コンピューティングシステム４００が図４に示す構成要素の全てを備えることを示すことを意図したものでないことが理解されるべきである。それとは逆に、コンピューティングシステム４００は、これよりも少ない構成要素又は図４に示していない追加の構成要素（例えば、追加のメモリデバイス、インタフェース等）を備えることができる。さらに、データ管理モジュール１２４の機能のいずれも、ハードウェア又はプロセッサ４１４において部分的に又は全面的に実施することができる。例えば、この機能は、特に、特定用途向け集積回路を用いて実施することもできるし、プロセッサ４１４に実装されるロジックにおいて実施することもできるし、記憶デバイスに存在するモジュールにおいて実施することもできるし、周辺デバイス上のコプロセッサにおいて実施することもできる。
【００３５】
図５は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施することができる有形の非一時的なコンピュータ可読媒体５００を示すブロック図である。有形の非一時的なコンピュータ可読媒体５００は、プロセッサ５０２がコンピュータバス５０４を介してアクセスすることができる。さらに、有形の非一時的コンピュータ可読媒体５００は、本方法のステップを実行するようにプロセッサ５０２に指示するコンピュータ実行可能命令を含みうる。
【００３６】
本明細書において論述した様々なソフトウェア構成要素は、図５に示すような有形の非一時的なコンピュータ可読媒体５００上に記憶することができる。例えば、データ管理モジュール５０６は、リフレクティブメモリを有するコンピューティングデバイスにおいてコヒーレンシを実施するようにプロセッサ５０２に指示するように構成することができる。幾つかの実施形態では、データ管理モジュール５０６は、キャッシュ内のデータが変更されていると判断し、既存のデータ値を変更されたデータ値に置き換えることによってリフレクティブメモリを更新することができる。データ管理モジュール５０６は、変更されたデータ値を追加のメモリデバイスに送信することもできる。特定のアプリケーションに応じて、図５に示していない任意の数の追加のソフトウェア構成要素を有形の非一時的なコンピュータ可読媒体５００内に含められることが理解されるべきであろう。
【００３７】
本明細書における例は、様々な変更及び代替の形態を受け入れることができ、例示として示されてきたにすぎない。さらに、本技法は、本明細書に開示した特定の例に限定されることを意図していないことが理解されるべきであろう。実際は、添付の特許請求の範囲の範囲が、開示された主題が関係する当業者に明らかである全ての代替形態、変更形態、及び均等形態を含むものとみなされる。
【図１】
2016508650.tif 000003
【図２】
2016508650.tif 000004
【図３】
2016508650.tif 000005
【図４】
2016508650.tif 000006
【図５】
2016508650.tif 000007
【国際調査報告】
2016508650.tif 000008
2016508650.tif 000009