(57)【要約】      （修正有）【課題】メインメモリの少なくとも一部に持続性メモリを含むプロセッサシステムのキャッシュコヒーレンスプロトコルを実現する。【解決手段】処理システム１００は、メインメモリ１２０に対する少なくとも１つの第１のインターフェースと、２つ以上の処理エンティティ１１０に対する少なくとも１つの第２のインターフェースとを持つメモリコントローラ１１５を具備し、前記メモリコントローラ１１５は、前記処理エンティティ１１０がキャッシュコヒーレンシプロトコルに従って前記メインメモリ１２０にアクセスすることを可能にすることができ、かつ、前記メインメモリ１２０の少なくとも一部は持続性メモリを備える。キャッシュコヒーレンスプロトコル１４０には、インプロセス状態１４２が持続性メモリに適応するために含まれる。【選択図】図１
2011258193.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリに対する少なくとも１つの第１のインターフェースと、２つ以上の処理エンティティに対する少なくとも１つの第２のインターフェースとを持つメモリコントローラを具備してなり、
前記メモリコントローラは、前記処理エンティティがキャッシュコヒーレンシプロトコルに従って前記メインメモリにアクセスすることを可能にすることができ、かつ、前記メインメモリの少なくとも一部は持続性メモリを備えることを特徴とするメモリデバイス。
【請求項２】
前記キャッシュコヒーレンシプロトコルは、前記メインメモリが現在更新処理中であるかどうかを示す第１の状態と、前記更新処理が完了しているかどうかを示す第２の状態とを含むことを特徴とする請求項１に記載のメモリデバイス。
【請求項３】
前記メモリコントローラは、更に、前記更新処理中に前記メインメモリにアクセスすることを待つように、前記２以上の処理エンティティの少なくとも１つに対して信号を送信することができることを特徴とする請求項２に記載のメモリデバイス。
【請求項４】
前記メモリコントローラは、更に、持続性メモリを備える前記メインメモリの前記少なくとも一部をメモリ記述子が特定することを可能にすることができること特徴とする請求項１に記載のメモリデバイス。
【請求項５】
前記持続性メモリは、相変化メモリ（ＰＣＭ）を備えることを特徴とする請求項１に記載のメモリデバイス。
【請求項６】
前記持続性メモリは、非対称的な読み出し速度／書き込み速度を持つメモリを備えることを特徴とする請求項１に記載のメモリデバイス。
【請求項７】
前記２以上の処理エンティティは、複数の中央処理装置（ＣＰＵ）を備えることを特徴とする請求項１に記載のメモリデバイス。
【請求項８】
前記メモリコントローラは、更に、前記２以上の処理エンティティに共有される１つまたは複数のレベルのキャッシュメモリを含むメモリ階層を有効にすることができることを特徴とする請求項１に記載のメモリデバイス。
【請求項９】
前記１つまたは複数のレベルのキャッシュメモリの少なくとも一部は、持続性メモリを備えることを特徴とする請求項８に記載のメモリデバイス。
【請求項１０】
複数の処理エンティティがメインメモリを共有することを可能にするように、キャッシュコヒーレンシプロトコルを管理するステップを具備してなり、
前記メインメモリの少なくとも一部は、持続性メモリを備えることを特徴とする方法。
【請求項１１】
前記メインメモリの更新処理中に前記メインメモリにアクセスすることを待つように前記複数の処理エンティティに対して命令する第１の状態に、前記キャッシュコヒーレンシプロトコルを遷移させるステップを更に含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記更新処理が完了していることを前記複数の処理エンティティに通知する第２の状態に、前記キャッシュコヒーレンシプロトコルを遷移させるステップを更に含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記持続性メモリは、相変化メモリ（ＰＣＭ）を備えることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記持続性メモリは、非対称的な読み出し速度／書き込み速度を持つメモリを備えることを特徴とする請求項１０に記載の方法。
【請求項１５】
前記キャッシュコヒーレンシプロトコルは、少なくとも部分的には、前記持続性メモリの１つまたは複数の待ち時間プロパティに基づくことを特徴とする請求項１０に記載の方法。
【請求項１６】
前記複数の処理エンティティは、１つまたは複数の中央処理装置（ＣＰＵ）を備えることを特徴とする請求項１０に記載の方法。
【請求項１７】
複数の処理エンティティと、メモリデバイスとを具備してなるシステムであって、
前記メモリデバイスは、メインメモリに対する少なくとも１つの第１のインターフェースと、前記複数の処理エンティティに対する少なくとも１つの第２のインターフェースとを持つメモリコントローラを備え、
前記メモリコントローラは、前記複数の処理エンティティがキャッシュコヒーレンシプロトコルに従って前記メインメモリにアクセスすることを可能にすることができ、かつ、前記メインメモリの少なくとも一部は持続性メモリを備えることを特徴とするシステム。
【請求項１８】
前記キャッシュコヒーレンシプロトコルは、前記メインメモリが現在更新処理中であるかどうかを示す第１の状態と、前記更新処理が完了しているかどうかを示す第２の状態とを含むことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記メモリコントローラは、更に、前記更新処理中に前記メインメモリにアクセスすることを待つように、前記２以上の処理エンティティの少なくとも１つに対して信号を送信することができることを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記処理エンティティは、前記更新処理中に前記メインメモリにアクセスすることを待つことができることを特徴とする請求項１８に記載のシステム。
【請求項２１】
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）部分及び持続性メモリ部分と、
前記ＤＲＡＭ部分と前記持続性メモリ部分との間の待ち時間の差に適応するためのコードを実行するキャッシュコヒーレンスプロトコルブロックと
を具備することを特徴とするメインメモリ。
【請求項２２】
前記持続性メモリ部分内におけるメモリロケーションのアドレスまたは前記メモリロケーションのアドレス範囲を特定する持続性メモリ記述子を更に備えることを特徴とする請求項２１に記載のメインメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、持続性メモリを含むプロセッサシステムのキャッシュコヒーレンスに関する。
【背景技術】
【０００２】
コンピュータシステムは、共有メモリマルチプロセッサ（ＳＭＰ）構成を利用することができる。同一のメインメモリを共有するこのようなコンピュータシステムにおいて、プロセッサ数を増加させることで、システムの性能を向上させることができる。コンピュータシステムは、キャッシュメモリから読み出された情報及びメインメモリから読み出された情報間のコヒーレンシを保証するコヒーレンシプロトコルを組み込んでもよい。例えば、１つのプロセッサがメインメモリ内に記憶された情報を更新した場合、情報内の変化は、他のプロセッサのメモリキャッシュ内に記憶されたコピーに反映されてもよい。
【０００３】
コンピュータシステムは、例えば、コヒーレンシ管理を実行するために、ＭＥＳＩプロトコル等のいくつかのコヒーレンシプロトコルのうちの任意のプロトコルを用いることができる。ＭＥＳＩプロトコルは、キャッシュラインが、４つの状態、すなわち“Ｍ（Ｍｏｄｉｆｉｅｄ）”（変更）、“Ｅ（Ｅｘｃｌｕｓｉｖｅ）”（排他）、“Ｓ（Ｓｈａｒｅｄ）”（共有）、“Ｉ（Ｉｎｖａｌｉｄ）”（無効）のうちの１つの状態にあるとみなすことによって、キャッシュメモリ内のキャッシュラインを管理することができる。ＭＥＳＩプロトコルを用いるコンピュータシステムにおいて、個々のプロセッサは、少なくとも一部においてＭＥＳＩ状態に基づいた特定のキャッシュラインに対するキャッシュコヒーレンシ管理のリクエストを出すかどうかを判断することができる。
【図面の簡単な説明】
【０００４】
【図１】図１は、本発明の一実施形態に係る処理システム構成を概略的に示すブロック図である。
【図２】図２は、本発明の一実施形態に係るメインメモリの概略図である。
【図３】図３は、本発明の一実施形態に係るキャッシュコヒーレンスプロトコルのタイミングを示す図である。
【図４】図４は、本発明の一実施形態に係るマルチプロセッサシステム構成の概略図である。
【図５】図５は、本発明の他の実施形態に係るマルチプロセッサシステム構成の概略図である。
【図６】図６は、本発明の一実施形態に係るコンピュータシステム及びメモリデバイスを概略的に示す図である。
【発明を実施するための形態】
【０００５】
非制限的かつ非網羅的な実施形態について、図を参照して以下に記載する。類似の参照番号は、特記しない限り、様々な図を通して類似部分を参照する。
【０００６】
本明細書全体を通して「１つの実施形態」または「一実施形態」という言及は、その実施形態に関連して記載した特定の特徴、構造、または特性が、請求項に記載された主題の少なくとも１つの実施形態に含まれることを意味する。それゆえ、本明細書全体を通して様々な箇所における「１つの実施形態において」または「一実施形態」という表現方法は、必ずしも全て同一の実施形態を言及するものではない。更に、特定の特徴、構造、または特性は、１つまたは複数の実施形態において併用されてもよい。
【０００７】
一実施形態において、中央処理装置（ＣＰＵ）等の２以上の処理エンティティからなるシステムは、持続性メモリを含んでもよい。このようなシステムのキャッシュコヒーレンシプロトコルは、持続性不揮発性メモリの特定のアスペクトに適応する１つまたは複数のフィーチャー（ｆｅａｔｕｒｅ）を含んでもよい。以下に詳細に記載するように、このようなフィーチャーは、持続性メモリを更新する処理が未完了であるかどうか、及び／または、このような処理が完了したかどうかを示す１つまたは複数のキャッシュコヒーレンシプロトコル状態を含むことがある。他のフィーチャーは、持続性メモリを含むメモリ範囲を示す持続性メモリ記述子を含むことがある。したがって、このような２以上の処理エンティティからなるシステムはまた、以下に詳細に記載するように、キャッシュコヒーレンシプロトコルの少なくとも一部を与える回路から構成されてもよい。
【０００８】
このような２以上の処理エンティティからなるシステムは、例えば、少しの例のみ挙げると、コンピュータ、携帯電話、ＰＤＡ、データロガー、ナビゲーション装置等のいくつかの環境のうちの任意の環境においてアプリケーションを実行するコンピュータシステムから構成されてもよい。特に、複数のアプリケーションを、複数のＣＰＵによって同時に実行してもよい。ある実現例では、１つまたは複数のこのようなＣＰＵは、どちらも少なくとも一部分が持続性メモリから構成されることのあるメインメモリ及び／またはキャッシュメモリに、個々に関連付けられてもよい。例えば、メインメモリ及び／またはキャッシュメモリは、持続性メモリの一部及び様々なランダムアクセスメモリ（ＲＡＭ）のうちの任意のメモリから構成されてもよい。特定の実施例において、メインメモリは、相変化メモリ（ＰＣＭ）及びダイナミックランダムアクセスメモリ（ＤＲＡＭ）の少なくとも一部を含んでもよい。他に特定の実施例において、キャッシュメモリは、ＰＣＭ及び／またはＤＲＡＭから構成されてもよい。このようなメモリ構成は、例えば、不揮発性、比較的高速なプログラム速度／読み出し速度等の利点を提供することができる。勿論、メモリに関するこのような記載は単に例示であって、請求項に記載された内容はこの点に限定されるものではない。
【０００９】
本明細書では、持続性メモリとは、ビット可変機能を持ちうるＰＣＭ等の不揮発性メモリのことを言う。持続性メモリの他の特徴は、非対称性の読み出し速度／書き込み速度を含むが、これらの速度においては、所定のメモリセルに対して、プログラム速度が読み出し速度よりも低速になることがある。マルチプロセッサシステムに、このような特徴を持つ持続性メモリが存在すると、例えば、１つまたは複数の処理エンティティにメインメモリを共有させるために特定のキャッシュコヒーレンスプロトコルを利用することができる。本明細書では、メインメモリとは、処理エンティティによって実行されうる１つまたは複数のアプリケーションを保持するために、この処理エンティティによって用いられるメモリのことを言う。更に、メインメモリは、このメインメモリにアクセスするというメモリ命令を用いて、処理エンティティに直接または間接的にリンクされてもよい。メインメモリは、例えば、このようなメモリにアクセスするのに入力動作／出力動作を用いる入力／出力インターフェースを介してアクセス可能なメモリとは異なる。メインメモリの更なる例において、ＣＰＵは、メインメモリ内に常駐するデータを処理する（例えば、消去する、書き込む）能力に制限されてもよい。ここで、「メイン」という用語は、例えば、ディスクドライブ等の外部の大容量記憶装置と区別するのに用いることもできる。勿論、メインメモリに関するこのような記載は単に例示であって、請求項に記載された内容はそのように限定されるものではない。
【００１０】
本明細書に記載した実施形態は、例えば、ＭＥＳＩプロトコル、ＭＯＳＩプロトコル、及び、ＭＯＥＳＩプロトコル等の、いくつかのの公知なマルチプロセッサ・キャッシュコヒーレンスプロトコルのうちの任意のプロトコルを増補すること含む。特に、このような実施形態は、以下に詳細に記載するように、上に挙げたプロトコルの状態及び１つまたは複数の追加の状態を含んでもよい。このような実施形態は、例えば、持続性メモリに対するサポートを含むようにキャッシュコヒーレンシセマンティクスを拡張してもよい。キャッシュコヒーレンスプロトコルは、例えば、統一されたメモリ上で動作する複数の処理間のキャッシュコヒーレンスを確保するセマンティクスを確立してもよい。キャッシュコヒーレンスセマンティクスは、同一メモリ上で動作する２以上のプロセッサが非同期的になりうる競合状態を防ぐことができる。キャッシュコヒーレンスプロトコルは、ローカルキャッシュをメインメモリに同期させる命令をプロセッサに与えてもよい。キャッシュコヒーレンスプロトコルは、例えば、プロセッサのキャッシュコンテンツがメインメモリのコンテンツに対して最新であることを確実にする助けとなることができる。
【００１１】
一実施形態において、ＰＣＭは、コンピューティングプラットフォームのメインメモリとして用いられてもよい。ＤＲＡＭは揮発性であるものの、ＰＣＭは、ＤＲＡＭに似たビット可変性質を持つ持続性メモリから構成される。ＰＣＭがコンピューティングプラットフォーム上のメインメモリとして用いられる場合、ＰＣＭは、ＤＲＡＭに適用するキャッシュコヒーレンス問題と同じ問題を少なくともいくつか含むかもしれない。したがって、少しの例のみ挙げると、ＭＥＳＩプロトコル、ＭＯＳＩプロトコル、及び、ＭＯＳＥＩプロトコルが、ＰＣＭがアプリケーションにおいてＤＲＡＭに置き換えて用いられる場合に、ＰＣＭに対するキャッシュコヒーレンスを十分にカバーすることがある。ＰＣＭはビット可変方式においてＤＲＡＭと同様でありうるが、ＰＣＭが持続性メモリから構成されるという意味において、ＰＣＭはＤＲＡＭとは異なる可能性がある。ＰＣＭは、電力が取り除かれた場合にも記憶されたコンテンツを保持しうるが、ＤＲＡＭは、電力が取り除かれた場合に記憶されたコンテンツを損失する可能性がある。それゆえ、一実現例において、キャッシュコヒーレンシセマンティクスは、ＰＣＭがメインメモリの少なくとも一部から構成される場合に、ＰＣＭのこのような不揮発性特性をサポートするように追加されてもよい。勿論、ＰＣＭをメインメモリとして含む実施形態のこのような特徴及び詳細は単に例示であって、請求項に記載された内容はそのように限定されるものではない。
【００１２】
一実施形態において、キャッシュコヒーレンスセマンティクスを増補するための追加の状態により、例えば、メモリ内データベース等のメモリ階層内で比較的高レベルなメモリコヒーレンスへのサポートが与えられることがある。メインメモリが、ＤＲＡＭ等の比較的高速であるものの揮発性であるメモリから構成される場合、記憶された情報は、比較的低速なディスク、テープ、または他の低速持続性メモリに最終的にコピーされてもよい。しかしながら、ＰＣＭがメインメモリとして用いられる場合に、ＰＣＭの持続性能のために、アプリケーションは、記憶された情報を他の記憶媒体にフラッシュしたりチェックポイントしたりする必要はない。しかしながら、ＰＣＭのコンテンツが更新処理中であるかどうか、及びそのような更新が完了しているかどうかについて、様々なアプリケーション処理に通信するような処理があってもよい。したがって、キャッシュコヒーレンスセマンティクスを増補する追加の状態は、アプリケーションレベルにおいてより高レベルなコヒーレンスセマンティクスをサポートしてもよい。特定の実現例において、いわゆる持続性メモリ記述子を、以下に詳細に説明するように、持続性をサポートするメインメモリ範囲を示すように用いてもよい。
【００１３】
図１は、本発明の一実施形態に係る処理システム１００を概略的に示すブロック図である。処理システム１００は、処理エンティティ１１０、メインメモリ１２０、及び／またはキャッシュ１３０から構成されてもよい。特に、処理エンティティ１１０は、メインメモリ１２０内に保持される１つまたは複数のアプリケーションのホストとなるＣＰＵから構成されてもよい。図１に図示していないが、処理システム１００は、追加の処理エンティティ、追加のメインメモリ、及び／または追加のキャッシュを備えてもよい。例えば、処理エンティティ１１０、メインメモリ１２０、及び／またはキャッシュ１３０は、より大きなマルチプロセッサシステム向けのビルディングブロックから集合的に構成されてもよい。一実現例において、処理システム１００は、前記１つまたは複数の処理エンティティに共有される１つまたは複数のレベルのキャッシュメモリを含むメモリ階層を用いて動作してもよい。例えば、キャッシュメモリは、どちらも少なくとも一部が持続性メモリから構成されうる第１レベルのキャッシュ及び第２レベルのキャッシュから構成されてもよい。キャッシュコヒーレンスプロトコルは、コヒーレンシ管理のために処理システム１００に適用されてもよい。例えば、このようなプロトコルにより、２以上のメインメモリ１２０、及び／または、１つまたは複数のキャッシュ１３０の間での、読み出し処理／書き込み処理のコンフリクトを回避させることができる。ハードウェアブロック１５０及び／またはコードブロック１６０は、共にまたは別々に、キャッシュコヒーレンスプロトコルを与えてもよい。特定の実現例において、このようなキャッシュコヒーレンスプロトコルは、例を少しだけ挙げると、変更状態、排他状態、共有状態、無効状態等のいくつかの状態（例えば、ＭＥＳＩ）を含みうるプロトコル１４０を含んでもよい。インプロセス（ｉｎ‐ｐｒｏｃｅｓｓ）状態１４２は、以下に詳細に説明するように、処理システム１００内の持続性メモリに適応するためにプロトコル１４０内に含まれてもよい。プロトコル１４０内に含まれた他の状態が、以下にまた詳細に記載するように、コミッテッド（ｃｏｍｍｉｔｔｅｄ）状態１４４を含むことがある。このような状態は、セットされたビットまたはリセットされたビット、特定の状態情報を記憶している１つまたは複数のメモリセル、電気配線上に送信される１つまたは複数の信号、及び／または、特定の状態情報を伝達するための他の種類の情報等の選択可能なフラグによって反映されてもよい。勿論、任意の数の状態がプロトコル１４０に含まれてもよいが、請求項に記載された内容は本明細書に記載した状態に限定されるものではない。一実現例において、ハードウェアブロック１５０は、キャッシュコヒーレンスプロトコル１４０の少なくとも一部を提供する電気回路から構成されてもよい。このような電気回路は、例えば、論理ゲートの様々な機器構成から構成されてもよい。コードブロック１６０は、キャッシュコヒーレンスプロトコル１４０の少なくとも一部を提供する１つまたは複数のアプリケーションから構成されてもよい。コードブロック１６０の一部は、処理エンティティ１１０によって実行されてもよい。
【００１４】
一実施形態において、インプロセス状態１４２は、処理システム１００内の１つまたは複数のメモリコントローラ１１５に、メインメモリ１２０内のメモリロケーションが更新処理中であることを示すように用いられてもよい。したがって、キャッシュ１３０内にマッピングされたこのような特定のメモリロケーションを持つアプリケーションは、このような更新動作が完了することを待つことを選択してもよい。あるいは、このアプリケーションは、更新を無視するとともに、現在利用可能な旧いキャッシュコンテンツを（例えば、コンテンツの更新完了に先立って）用いてよい。特定の実現例において、コミッテッド状態１４４は、処理システム１００内のメモリコントローラ１１５に、メモリ更新が完了しており、キャッシュ１３０が情報をリロードしてもよいことを示すように用いられてもよい。インプロセス状態を無視することを選択しうるアプリケーション例は、サーチエンジンであり、なぜならば、わずかに旧い情報はサーチ結果に悪影響を与える必要がないからである。対照的に、インプロセス状態を無視することを選択しえないアプリケーション例は、更新処理が完了した上で利用可能な最新情報に依存する銀行のアプリケーションである。したがって、このようなアプリケーションは、任意の更新操作の完了を待つことができるとともに、関連するキャッシュ情報を無効にして、アプリケーションが最新のメモリ値を持ち続けることを確実にすることができる。勿論、処理システム及びキャッシュコヒーレンスプロトコルのこのような詳細は単に例示であって、請求項に記載された内容はそのように限定されるものではない。
【００１５】
図２は、本発明の一実施形態に係るメインメモリ２１０の概略図である。メインメモリ２１０の少なくとも一部は、持続性メモリ２２０から構成されてもよい。特定の実現例において、メインメモリ２１０の他の部分は、揮発性ＤＲＡＭ等の様々な種類のメモリから構成されてもよい。持続性メモリ２２０の一部分は、例えば、１つまたは複数のダイ構造から構成されうるメインメモリ２１０においては、切れ目なく配置される必要はない。キャッシュコヒーレンスプロトコルブロック２５５は、メインメモリ２１０を含む処理システム（例えば、図１に示したシステム１００）のキャッシュコヒーレンスプロトコルを与えるように、ハードウェア、及び／または、実行されるコードを含んでもよい。特定の実現例において、このようなキャッシュコヒーレンスプロトコルは、上で記載したように、持続性メモリ２２０に適応するように、インプロセス状態１４２、及び／またはコミッテッド状態１４４を含んでもよい。例えば、インプロセス状態１４２は、読み出し動作に比べて追加されるプログラム動作の待ち時間に適応することができる。それゆえ、インプロセス状態１４２は、アプリケーションが比較的長いキャッシュプログラム処理を持つこととなるかどうかを、アプリケーションに示してもよい。他の特定の実現例において、キャッシュコヒーレンスプロトコルブロック２５５は、メインメモリ２１０のどの部分が持続性メモリから構成されるかをコンピューティングプラットフォームに特定させるように持続性メモリ記述子を与えてもよい。例えば、このような特定は、メインメモリ２１０内におけるメモリロケーションの１つまたは複数のアドレスまたはメモリロケーションのアドレス範囲を含んでもよい。勿論、請求項に記載された内容は、このようなプロトコル状態に限定されるものではなく、キャッシュコヒーレンスプロトコルブロック２５５は、システムに対して任意の数のプロトコル状態を与えてもよい。
【００１６】
図３は、本発明の一実施形態に係るキャッシュコヒーレンスプロトコルのタイミングを示す図である。時間Ｔ１において、インプロセス状態は、１つまたは複数のメインメモリ内の少なくとも１つのメモリロケーションが更新処理中であることをメモリコントローラに示すように遷移されてもよい。Ｔ２の期間中に、更新中のメモリロケーションに関連付けられた１つまたは複数のアプリケーションは、このような更新動作が完了することを待つことを選択してもよい。他の実現例においては、上に記載したように、アプリケーションは、このような更新動作を無視するとともに、単に、現在利用可能な旧いキャッシュコンテンツを用いてもよい。時間Ｔ３において、更新動作を完了させることができ、この完了は、例えば、ハイ（ｈｉｇｈ）からロー（ｌｏｗ）に、またはローからハイに等、１つの状態から別な状態に遷移されるハードウェア信号によって示すことができる。更新動作の完了に続いて、時間Ｔ４において、コミッテッド状態が、メモリ更新が完了しており、情報をリロードするのにキャッシュメモリが利用可能であることをメモリコントローラに示すように遷移することができる。勿論、キャッシュコヒーレンスプロトコルのタイミングのこのような詳細は単に例示であって、請求項に記載された内容はそのように限定されるものではない。
【００１７】
図４は、本発明の一実施形態に係るマルチプロセッサシステム構成４００の概略図である。マルチプロセッサシステムは、任意の数の処理エンティティを含んでもよいが、図４には２つのそのようなエンティティが図示されている。特に、このような処理エンティティは、キャッシュ４３０に関連するＣＰＵ４１０と、キャッシュ４３５に関連するＣＰＵ４１５とから構成されてもよい。一例では、ＣＰＵ４１０は、メインメモリ４２０内のあるロケーションを示すキャッシュラインを持ってもよい。ＣＰＵ４１５は、メインメモリ４２０内の同じロケーションを示すキャッシュラインを持ってもよい。ＣＰＵ４１０及びＣＰＵ４１５のどちらも、メインメモリのこのロケーションへの書き込み、メインメモリのこのロケーションからの読み出しを行うことができる。ＣＰＵ４１０がメインメモリのこのロケーションに書込みを行っている間に、ＣＰＵ４１５がキャッシュラインからの読出しを試みる場合、コンフリクトが起こる可能性がある。一実現例において、ＣＰＵ４１５は、このような起こりうるコンフリクトについて管理を行わないことがある。他の実現例において、このようなコンフリクトを回避するために、ＣＰＵ４１５は、ＣＰＵ４１０からのインプロセスの書き出しが完了したことを確かめるように、インプロセス状態及び／またはコミッテッド状態を監視してもよい。ある実現例において、インプロセス状態は、本明細書においてＩ‐ビットと呼ばれる特定のビット、フラグ、または信号に相当することがあり、コミッテッド状態は、本明細書においてＣ‐ビットと呼ばれる特定のビット、フラグ、または信号に相当することがある。このようなビットは、上に記載したように、メインメモリを更新する処理の状態を示すように、セットされた状態またはリセットされた状態から遷移してもよい。特定の実現例において、ＣＰＵ４１５は、ＣビットまたはＩビットのどちらもセットされない場合に、キャッシュラインから読み出してもよい。例えば、Ｉ‐ビットがセットされると、ＣＰＵ４１０は、メインメモリを更新していてもよく、かつ、ＣＰＵ４１５は、更新が完了することを待ってもよい。ＣＰＵ４１０の更新が完了した上で、Ｃ‐ビットは、このような完了を示すように遷移してもよい。したがって、ＣＰＵ４１５は、Ｃ‐ビットを遷移するＣＰＵ４１０に応答してキャッシュラインをリロードしてもよい。そして、ＣＰＵ４１５は、メモリロケーションについての最新値を包含することができる。
【００１８】
一実施形態において、少なくとも一部が持続性メモリから構成されるメインメモリのコヒーレンスは、オペレーティングシステムの仮想メモリによって、及び／または、デフォルトページハンドラによって、保持されてもよい。このようなオペレーティングシステムは、コヒーレンス管理を伴う大量の書き込み動作を特定する方法をサポートしてもよい。このような大量の書込み動作は、例えば、データベースの書込み動作を含むことがある。アプリケーションは、大量の書込み動作を極小の書込み動作として管理されうるように互いに協調されてもよく、こうした極小の書込み動作では、このような更新処理が完了しているとみなされる前に、データベース全域の複数のフィールドが更新されてもよい。大量の動作はより大容量の情報を伴うが、アプリケーションレベルのセマンティクスは、個別のキャッシュラインに類似する様式で、１つまたは複数のアプリケーションが無効なデータを用いること１つまたは複数を回避させることができる。一実現例において、大量の書込み動作のサイズを通信するには、持続性ダイレクトメモリアクセス（ＤＭＡ）コマンドを含んでもよい。他の実現例において、大量の書込み動作のサイズを通信するには、メモリプールの定義を通信するメカニズムを含んでもよい。更に他の実現例において、大量の書込み動作のサイズを通信するには、動的メモリアロケーション時に用いるフラグを含んでもよい。更になお他の実現例において、大量の書込み動作のサイズを通信するには、アプリケーションによる信号を送信することを含んでもよい。持続性メモリに対するアプリケーションレベルでのコヒーレンス管理は、例えば、アプリケーションレベルのメモリコヒーレンスを確立するためのプリミティブなコマンドとして上記で定義した、インプロセス状態及び／またはコミッテッド状態を利用してもよい。
【００１９】
図５は、本発明の一実施形態に係るマルチコアシステム５００の概略図である。このようなシステムは、例えば、１つまたは複数のバスを介して互いに接続されたプロセッサノード５０２、プロセッサノード５０４、プロセッサノード５０６、及びプロセッサノード５０８から構成されてもよい。一実現例において、マルチコアシステム５００は、共有メモリマルチプロセッサから構成されてもよい。個々のプロセッサノード５０２、プロセッサノード５０４、プロセッサノード５０６、及びプロセッサノード５０８は、それぞれ、プロセッサ５１０、プロセッサ５１２、プロセッサ５１４、及びプロセッサ５１６と、キャッシュメモリ５３０、キャッシュメモリ５３２、キャッシュメモリ５３４、及びキャッシュメモリ５３６と、及び／または、ローカルメモリ５２０、ローカルメモリ５２２、ローカルメモリ５２４、及びローカルメモリ５２６とを含んでもよい。特定のプロセッサノード内において、このようなローカルメモリは、この特定のプロセッサノードのプロセッサに関連するメインメモリから構成されてもよい。例えば、ローカルメモリ５２０は、プロセッサノード５０２内のプロセッサ５１０に関連するメインメモリから構成されてもよい。一実現例において、ローカルメモリは、他のプロセッサノードのプロセッサによって共有されてもよく、または他のプロセッサノードのプロセッサによってアクセスされてもよい。１つまたは複数のローカルメモリ５２０、ローカルメモリ５２２、ローカルメモリ５２４、及びローカルメモリ５２６は、持続性メモリの全体または少なくとも一部から構成されてもよい。特定の実現例において、ローカルメモリの一部は、揮発性ＤＲＡＭ等の様々な種類のメモリから構成されてもよい。持続性メモリの一部分は、例えば、１つまたは複数のダイ構造から構成されうるローカルメモリ内では、切れ目なく配置される必要はない。図示していないが、プロセッサユニットは、例えば、同一のダイ上にプロセッサとして集積されたメモリコントローラ、または、別々のダイ上に集積されたメモリコントローラを含んでもよい。また、図５は、４つのノードを持つシステムを示すが、任意の数のノードが含まれてもよく、請求項に記載された内容はこの特定の配置に限定されるものではない。
【００２０】
キャッシュメモリ５３０、キャッシュメモリ５３２、キャッシュメモリ５３４、及びキャッシュメモリ５３６は、それぞれ、ローカルメモリ５２０、ローカルメモリ５２２、ローカルメモリ５２４、及びローカルメモリ５２６のうち任意のものから得られた情報のコピーを記憶するための高速メモリから構成されてもよい。１つまたは複数このようなキャッシュメモリは、例えば、個々のローカルメモリのアドレスの少なくとも一部分を用いて探索されてもよい。キャッシュメモリを探索するために用いられるメモリアドレスのこのような部分は、キャッシュインデックス部分と呼ばれる。例えば、キャッシュメモリ５３０は、キャッシュインデックス部分及びキャッシュデータ部分から構成されてもよい。キャッシュインデックス部分は、例えば、上に記載したように、キャッシュメモリ５３０内に記憶された情報のラインアドレスと、ＭＥＳＩ状態情報及びインプロセス状態情報／コミッテッド状態情報等の状態情報とを含んでもよい。勿論、マルチコアシステムのこのような詳細は単に例示であって、請求項に記載された内容はそのように制限されるものではない。
【００２１】
図６は、メモリデバイス６１０を含むコンピュータシステム６００の実施形態例を概略的に示す図である。コンピュータデバイス６０４は、メモリデバイス６１０を管理するように構成可能な任意のデバイス、装置、または機械の典型的なものとすることができる。メモリデバイス６１０は、メモリコントローラ６１５及びメモリ６２２を含んでもよい。例示であって限定されるものではないが、コンピュータデバイス６０４は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバデバイス等の１つまたは複数のコンピュータデバイス及び／またはプラットフォームと、例えば、携帯情報端末（ＰＤＡ）、モバイル通信デバイス等の１つまたは複数のパーソナルコンピュータデバイスもしくは装置または１つまたは複数の通信デバイスもしくは装置と、例えば、データベースまたはデータ記憶サービスプロバイダ／システムのようなコンピュータシステム及び／または関連サービスプロバイダ性能とを含み、かつ／またはこれらの任意の組み合わせを含んでもよい。
【００２２】
一実施形態において、コンピュータデバイス６０４は、ブロック６２０に代表される複数の処理ユニットを含んでもよい。このような複数の処理ユニットは、バス６４０と、ホストすなわちメモリコントローラ６１５とを通してメモリ６２２に動作可能に連結されてもよい。例えば、バス６４０を通して、複数の処理ユニット６２０が、メインメモリから構成されうるメモリ６２２を共有してもよい。処理ユニット６２０は、データ計算手順またはデータ計算処理の少なくとも一部を実行するように構成可能な１つまたは複数の回路の典型的なものである。例示であって限定されるものではないが、処理ユニット６２０は、複数１つまたは複数のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路、デジタル信号プロセッサ、プログラマブル論理デバイス、フィールド・プログラマブル・ゲートアレイ等を含んでもよく、あるいは、これらの任意の組み合わせを含んでもよい。処理ユニット６２０は、例えば、上で議論したメモリパーティション処理と、読み出し、書き込み、及び／または消去等のメモリ関連動作とを処理するように、メモリコントローラ６１５に通信してもよい。処理ユニット６２０は、メモリコントローラ６１５と通信するように適合されたオペレーティングシステムを含んでもよい。このようなオペレーティングシステムは、例えば、バス６４０上でメモリコントローラ６１５に送信されるコマンドを生成することができる。このようなコマンドは、例えば、読み出し命令／書き込み命令を含んでもよい。
【００２３】
メモリ６２２は、任意のデータストレージ機構の典型的なものである。メモリ６２２は、例えば、ＤＲＡＭ６２４及び／または持続性メモリ６２６を含んでもよい。特定の実施形態において、メモリ６２２は、上に記載したように、持続性メモリの少なくとも一部を含むメインメモリから構成されてもよい。メモリ６２２はまた、持続性メモリの少なくとも一部を同様に含むことのあるキャッシュメモリから構成されてもよい。この例示は処理ユニット６２０から離れて説明したが、ＤＲＡＭ６２４の全部または一部は処理ユニット６２０内に備えられていてもよく、あるいは処理ユニット６２０と同じ場所に設置されているか、または処理ユニット６２０に連結されてもよいと理解されるべきである。
【００２４】
一実施形態によれば、メモリ６２２の１つまたは複数の部分は、メモリ６２２の特定の状態によって表わされるデータ及び／または情報を表す信号を記憶してもよい。例えば、データ及び／または情報を表す電子信号は、データ及び／または情報をバイナリ情報（例えば、１及び０）として表すように、メモリ６２２のこうした部分の状態に影響を与えるか、または、メモリ６２２のこうした部分の状態を変化させることによって、メモリ６２２の一部分に「記憶」されてもよい。このように、特定の実現例において、データ及び／または情報を表す信号を記憶するためにメモリ部分の状態をこのように変化させることにより、メモリ６２２が異なる状態または異なるものに変換される。
【００２５】
持続性メモリ６２６は、例えば、１次メモリ（ｐｒｉｍａｒｙ  ｍｅｍｏｒｙ）と同一型式のメモリもしくは類似型式のメモリ、及び／または、例えば、ＰＣＭ、ディスクドライブ、光学ディスクドライブ、テープドライブ、固体状態記憶ドライブ等の１つまたは複数のデータ記憶装置もしくはシステムを含んでもよい。所定の実現例において、持続性メモリ６２６は動作可能にコンピュータ可読媒体６２８を受信可能であってもよく、もしくは、コンピュータ可読媒体６２８に連結するように構成可能であってもよい。コンピュータ可読媒体６２８は、例えば、システム６００における１つまたは複数のデバイスに対するデータ、コード、及び／または命令を運ぶことができ、かつ／または、こうしたデータ、コード、及び／または命令をアクセス可能にすることができる任意の媒体を含むことができる。
【００２６】
１つの実施形態において、システム６００は、（例えば、バス６４０を介してプロセッサ６２０に対して）メインメモリに対する少なくとも１つの第１のインターフェース及び処理エンティティに対する少なくとも１つの第２のインターフェースを持つメモリコントローラ６１５から構成されてもよく、メモリコントローラは、キャッシュコヒーレンシプロトコルに従って処理エンティティがメインメモリにアクセスすることを可能にすることができてもよく、かつ、前記メインメモリの少なくとも一部は持続性メモリから構成される。このような持続性メモリは、例えば、ＰＣＭから構成されてもよい。コンピュータデバイス６０４は、例えば、入力／出力６３２を含んでもよい。入力／出力６３２は、人及び／または機械の入力を受入れるように構成可能な、または導入するように構成可能な１つまたは複数のデバイスまたは機能、及び／または、人及び／または機械の出力を届けるように構成可能な、または提供するように構成可能な１つまたは複数のデバイスまたは機能の典型的なものである。例示であって限定されるものではないが、入力／出力デバイス６３２は、動作可能に構成されたディスプレイ、スピーカー、キーボード、マウス、トラックボール、タッチスクリーン、データポート等を含んでもよい。
【００２７】
現時点で考えられる実施形態の例について説明して述べてきたが、本発明は、請求項に記載された内容から逸脱することなく、他の様々な変更がなされてもよく、等価なものに置換されてもよいと当業者に理解されるものである。更に、本明細書に記載した主要概念から逸脱することなく、請求項に記載された内容の教示に特定の状況を適用するように多くの変更がなされてもよい。それゆえ、請求項に記載された内容が開示された特定の実施形態に限定されることはないと意図され、そのような請求項に記載された内容はまた、添付した請求項の範囲に含まれる全ての実施形態及びそれらの等価物を包含するものであると意図されている。
【図１】
2011258193.tif 000003
【図２】
2011258193.tif 000004
【図３】
2011258193.tif 000005
【図４】
2011258193.tif 000006
【図５】
2011258193.tif 000007
【図６】
2011258193.tif 000008
【外国語明細書】
【発明の名称】
2011258193.tif 000009
【技術分野】
【０００１】
2011258193.tif 000010
【背景技術】
【０００２】
2011258193.tif 000011
【発明の概要】
【図面の簡単な説明】
【０００３】
2011258193.tif 000012
【発明を実施するための形態】
【０００４】
2011258193.tif 000013
2011258193.tif 000014
2011258193.tif 000015
2011258193.tif 000016
2011258193.tif 000017
2011258193.tif 000018
2011258193.tif 000019
2011258193.tif 000020
2011258193.tif 000021
2011258193.tif 000022
2011258193.tif 000023
2011258193.tif 000024
2011258193.tif 000025
2011258193.tif 000026
2011258193.tif 000027
2011258193.tif 000028
2011258193.tif 000029
2011258193.tif 000030
【要約】
2011258193.tif 000031
【選択図】図１
【図１】
2011258193.tif 000032
【図２】
2011258193.tif 000033
【図３】
2011258193.tif 000034
【図４】
2011258193.tif 000035
【図５】
2011258193.tif 000036
【図６】
2011258193.tif 000037