(57)【特許請求の範囲】
【請求項１】
第１の命令を第１のデコード命令にデコードするデコーダと、
前記第１のデコード命令を実行してハードウェア回路を第１のモードから第２のモードに切り換える実行ユニットと、
を備え、
前記第１のモードにおいて前記ハードウェア回路はトランザクション処理において書き込まれたキャッシュラインを監視して、前記トランザクション処理の終端でコミットおよびロールバックの何れかを実行し、
前記第２のモードにおいて前記ハードウェア回路は非トランザクション処理による修正のために不揮発性メモリに書き込まれるキャッシュラインを監視する、プロセッサ。
【請求項２】
前記デコーダは、第２の命令を第２のデコード命令にデコードし、
前記実行ユニットは、前記第２のデコード命令を実行して、修正されたキャッシュラインを前記不揮発性メモリに書き戻すと共に前記ハードウェア回路を前記第２のモードから前記第１のモードに切り換える請求項１に記載のプロセッサ。
【請求項３】
前記デコーダは、第２の命令を第２のデコード命令にデコードし、
前記実行ユニットは、前記第２のデコード命令を実行し、
前記ハードウェア回路は、前記非トランザクション処理の終端で、修正されたキャッシュラインを前記不揮発性メモリに書き戻し、
前記実行ユニットは、前記第２のデコード命令の実行において、前記ハードウェア回路を前記第２のモードから前記第１のモードに切り換える請求項１に記載のプロセッサ。
【請求項４】
前記不揮発性メモリは相変化メモリである請求項１〜３の何れか１項に記載のプロセッサ。
【請求項５】
前記不揮発性メモリは、相変化メモリおよびスイッチである請求項１〜３の何れか１項に記載のプロセッサ。
【請求項６】
前記実行ユニットに結合されたキャッシュフラッシュ回路をさらに備える請求項１〜５の何れか１項に記載のプロセッサ。
【請求項７】
前記実行ユニットは、前記非トランザクション処理の前記終端まではさらなる命令の実行を阻止する請求項３に記載のプロセッサ。
【請求項８】
プロセッサのデコーダを用いて第１の命令を第１のデコード命令にデコードする段階と、
前記プロセッサの実行ユニットを用いて前記第１のデコード命令を実行してハードウェア回路を第１のモードから第２のモードに切り換える段階と、
を備え、
前記第１のモードにおいて前記ハードウェア回路はトランザクション処理において書き込まれたキャッシュラインを監視して、前記トランザクション処理の終端でコミットおよびロールバックの何れかを実行し、
前記第２のモードにおいて前記ハードウェア回路は非トランザクション処理による修正のために不揮発性メモリに書き込まれるキャッシュラインを監視する、方法。
【請求項９】
前記デコーダを用いて第２の命令を第２のデコード命令にデコードする段階と、
前記実行ユニットを用いて前記第２のデコード命令を実行して、修正されたキャッシュラインを前記不揮発性メモリに書き戻すと共に前記ハードウェア回路を前記第２のモードから前記第１のモードに切り換える段階と、
をさらに備える請求項８に記載の方法。
【請求項１０】
前記デコーダを用いて第２の命令を第２のデコード命令にデコードする段階と、
前記実行ユニットを用いて前記第２のデコード命令を実行する段階と、
前記ハードウェア回路が、前記非トランザクション処理の終端で、修正されたキャッシュラインを前記不揮発性メモリに書き戻す段階と、をさらに備え、
前記第２のデコード命令を実行する段階は、前記実行ユニットを用いて前記第２のデコード命令を実行して前記ハードウェア回路を前記第２のモードから前記第１のモードに切り換える段階を有する
請求項８に記載の方法。
【請求項１１】
前記不揮発性メモリは相変化メモリである請求項８〜１０の何れか１項に記載の方法。
【請求項１２】
前記不揮発性メモリは、相変化メモリおよびスイッチである請求項８〜１０の何れか１項に記載の方法。
【請求項１３】
キャッシュフラッシュ回路を用いて、修正されたキャッシュラインをフラッシュする段階をさらに備える請求項８〜１２の何れか１項に記載の方法。
【請求項１４】
前記非トランザクション処理の前記終端まではさらなる命令の実行を阻止する段階をさらに備える請求項１０に記載の方法。
【請求項１５】
コンピュータシステムに、
プロセッサのデコーダを用いて第１の命令を第１のデコード命令にデコードする段階と、
前記プロセッサの実行ユニットを用いて前記第１のデコード命令を実行してハードウェア回路を第１のモードから第２のモードに切り換える段階と、
を備える方法を実行させ、
前記第１のモードにおいて前記ハードウェア回路はトランザクション処理において書き込まれたキャッシュラインを監視して、前記トランザクション処理の終端でコミットおよびロールバックの何れかを実行し、
前記第２のモードにおいて前記ハードウェア回路は非トランザクション処理による修正のために不揮発性メモリに書き込まれるキャッシュラインを監視する、プログラム。
【請求項１６】
前記方法は、
前記デコーダを用いて第２の命令を第２のデコード命令にデコードする段階と、
前記実行ユニットを用いて前記第２のデコード命令を実行して、修正されたキャッシュラインを前記不揮発性メモリに書き戻すと共に前記ハードウェア回路を前記第２のモードから前記第１のモードに切り換える段階と、
をさらに備える請求項１５に記載のプログラム。
【請求項１７】
前記方法は、
前記デコーダを用いて第２の命令を第２のデコード命令にデコードする段階と、
前記実行ユニットを用いて前記第２のデコード命令を実行する段階と、
前記ハードウェア回路が、前記非トランザクション処理の終端で、修正されたキャッシュラインを前記不揮発性メモリに書き戻す段階と、をさらに備え、
前記第２のデコード命令を実行する段階は、前記実行ユニットを用いて前記第２のデコード命令を実行して前記ハードウェア回路を前記第２のモードから前記第１のモードに切り換える段階を有する
請求項１５に記載のプログラム。
【請求項１８】
前記不揮発性メモリは相変化メモリである請求項１５〜１７の何れか１項に記載のプログラム。
【請求項１９】
前記不揮発性メモリは、相変化メモリおよびスイッチである請求項１５〜１７の何れか１項に記載のプログラム。
【請求項２０】
前記方法は、キャッシュフラッシュ回路を用いて、修正されたキャッシュラインをフラッシュする段階をさらに備える請求項１５〜１９の何れか１項に記載のプログラム。
【請求項２１】
前記方法は、前記非トランザクション処理の前記終端まではさらなる命令の実行を阻止する段階をさらに備える請求項１７に記載のプログラム。
【請求項２２】
請求項１５から２１のいずれか一項に記載のプログラムを格納するコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、コンピュータシステムの分野に関する。本発明は具体的には、不揮発性メモリティアを含むマルチレベルメモリヒエラルキーを実現する装置および方法に関する。
【背景技術】
【０００２】
＜Ａ．現在のメモリおよびストレージの構成＞
今日のコンピュータ分野でのイノベーションが限定されてしまう要因の一つとして、メモリおよび記憶装置に関する技術が挙げられる。従来のコンピュータシステムでは、システムメモリ（メインメモリ、主メモリ、実行可能メモリとも呼ばれる）は通常、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）によって実現される。ＤＲＡＭベースのメモリは、メモリの読み書きが発生していない場合でも電力を消費する。これは、内部キャパシタを常に充電する必要があるためである。ＤＲＡＭベースのメモリは、揮発性である。つまり、ＤＲＡＭメモリに格納されているデータは、電力が無くなると失われてしまう。また、従来のコンピュータシステムは、性能を改善するべく複数のレベルにおけるキャッシュを利用する。キャッシュは、プロセッサとシステムメモリとの間に配置され、システムメモリから対応するよりも高速にメモリアクセス要求に対応する高速メモリである。このようなキャッシュは通常、スタティックランダムアクセスメモリ（ＳＲＡＭ）で実現される。キャッシュ管理プロトコルは、最も高い頻度でアクセスされるデータおよび命令を複数のキャッシュレベルのうち１つに格納するために用いられるとしてよく、これによって、メモリアクセス処理の数を少なくし、性能を向上させる。
【０００３】
大容量記憶装置（二次記憶装置またはディスク記憶装置とも呼ばれる）に関して、従来の大容量記憶装置は通常、磁気媒体（例えば、ハードディスクドライブ）、光学媒体（例えば、コンパクトディスク（ＣＤ）ドライブ、デジタルバーサティルディスク（ＤＶＤ）等）、ホログラフィック媒体および／または大容量記憶フラッシュメモリ（例えば、ソリッドステートドライブ（ＳＳＤ）、取り外し可能なフラッシュドライブ等）を含む。一般的に、これらの記憶装置は、さまざまなＩ／Ｏプロトコルを実現するさまざまなＩ／Ｏアダプタを介してプロセッサがアクセスするので、入出力（Ｉ／Ｏ）デバイスと見なされる。これらのＩ／ＯアダプタおよびＩ／Ｏプロトコルは、大量の電力を消費し、ダイ領域およびプラットフォームのフォームファクタに大きな影響を及ぼす可能性がある。ポータブル型またはモバイル型のデバイス（例えば、ラップトップ、ネットブック、タブレットコンピュータ、携帯情報端末（ＰＤＡ）、ポータブルメディアプレーヤ、ポータブルゲームデバイス、デジタルカメラ、携帯電話、スマートフォン、フィーチャフォン等）は、無停電電源装置に接続されていない場合には電池寿命が限られており、通常は、アクティブ時およびアイドル時の電力バジェットを満たすべく低電力インターコネクトおよびＩ／Ｏコントローラを介してプロセッサに結合される取り外し可能な大容量記憶装置（例えば、エンベデッドマルチメディアカード（ｅＭＭＣ）、セキュアデジタル（ＳＤ）カード）を含むとしてよい。
【０００４】
ファームウェアメモリ（ブートメモリ（ＢＩＯＳフラッシュとしても知られている）等）に関して、従来のコンピュータシステムは通常、フラッシュメモリデバイスを利用して、読み出しは頻繁であるが書き込みはほとんど（または全く）無い永続的システム情報を格納する。例えば、ブートプロセス（ベーシックインプットアウトプットシステム（ＢＩＯＳ）イメージ）時にキーシステムコンポーネントを初期化するべくプロセッサが実行する初期命令は通常、フラッシュメモリデバイスに格納される。現在市販されているフラッシュメモリデバイスは一般的に、速度が限られている（例えば、５０ＭＨｚ）。この速度はさらに、読出プロトコルのオーバーヘッド（例えば、２．５ＭＨｚ）のために落ちる。ＢＩＯＳ実行速度を高速化するべく、従来のプロセッサは概して、ブートプロセスのＰＥＩ（Ｐｒｅ−Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）フェーズにおいてＢＩＯＳコードの一部分をキャッシュする。プロセッサキャッシュのサイズによって、ＰＥＩフェーズ（ＰＥＩ  ＢＩＯＳコードとしても知られている）で利用されるＢＩＯＳコードのサイズが制限される。
【０００５】
＜Ｂ．相変化メモリ（ＰＣＭ）および関連技術＞
相変化メモリ（ＰＣＭ）は、相変化ランダムアクセスメモリ（ＰＲＡＭまたはＰＣＲＡＭ）、ＰＣＭＥ、オボニックユニファイドメモリまたはカルコゲニドＲＡＭ（Ｃ−ＲＡＭ）と呼ばれることもあり、カルコゲニドガラスの独特の挙動を利用する不揮発性コンピュータメモリの一種である。電流が流れることによって熱が発生する結果、カルコゲニドガラスは、結晶状態およびアモルファス状態という２つの状態の間で切り替えることができる。ＰＣＭの最近のバージョンは、追加で２つの別箇の状態を実現することができる。
【０００６】
ＰＣＭは、フラッシュよりも高い性能を実現する。これは、ＰＣＭのメモリ素子のスイッチング速度がより高速であり、書き込み（各ビットを１または０に変更）は、最初にセルブロック全体を消去することなく実行可能であり、書き込みによる劣化は遅くなる（ＰＣＭデバイスの寿命は約１億回もの書込サイクルで、ＰＣＭ劣化は、プログラミング、金属（およびその他の材料の）マイグレーション時の熱膨張、および、その他のメカニズムが原因）ためである）。
【図面の簡単な説明】
【０００７】
以下に記載する説明および添付した図面に基づき、本発明の実施形態を説明する。図面は以下の通りである。
【０００８】
【図１】本発明の一実施形態に係るキャッシュおよびシステムメモリの構成を示す図である。
【０００９】
【図２】本発明の一実施形態で用いられるメモリおよび記憶装置のヒエラルキーを示す図である。
【００１０】
【図３】本発明の実施形態を実現し得るコンピュータシステムを示す図である。
【００１１】
【図４】トランザクションプロセスを示す図である。
【００１２】
【図５】キャッシュに対して為された変更を監視する特別ハードウェアを持つプロセッサを示す図である。
【００１３】
【図６】非トランザクションデータ変更を、永続性記憶装置に書き込むべく、図５の特別ハードウェアを利用するプロセスを示す図である。
【００１４】
【図７】永続性に対するトランザクションロールバックおよび非トランザクション書き込みによってサポートするべく図５の特別ハードウェアを用い得ることを示す統合プロセスを示す図である。
【００１５】
【図８】コンパイルプロセスを示す図である。
【発明を実施するための形態】
【００１６】
以下に記載する説明では、本発明をより深く理解していただくべく、論理実装、オペコード、オペランド特定手段、リソースのパーティション化／共有／複製の実行、システムコンポーネントの種類および相関関係、ならびに、論理上のパーティション化／統合の選択肢等、数多く具体的且つ詳細な内容を記載している。しかし、当業者であれば、本発明はこのような具体的且つ詳細な内容を含むことなく実施し得るものと考えられたい。また、制御構造、ゲートレベル回路および完全ソフトウェア命令シーケンスは、本発明をあいまいにしないよう、詳細な説明を省略している。当業者であれば、記載する説明を基に、過度の実験を実施せずとも適切な機能を実現可能である。
【００１７】
本明細書において「一実施形態」、「ある実施形態」、「実施形態例」等の表現は、説明している実施形態が特定の特徴、構造または特性を含むが、当該特定の特徴、構造または特性を全ての実施形態が必ずしも含むとは限らないことを意味する。さらに、このような表現は、同一の実施形態を必ずしも意味するものではない。さらに、特定の特徴、構造または特性がある実施形態に関連付けて説明される場合、明確に記載しているか否かに関わらず、当該特徴、構造または特性を他の実施形態に関連付けて実現することは当業者の知識の範囲内と考えられる。
【００１８】
以下に記載する説明および請求項では、「結合」および「接続」という用語を用いる場合がある。これらの用語は同義語として用いているものではないと理解されたい。「結合」は、２以上の構成要素が、互いに直接に物理的または電気的に接触していてもよいし、していなくてもよいが、互いに協働またはやり取りを行うことを意味するために用いる。「接続」は、互いに結合されている２以上の構成要素の間で通信を確立させることを意味する場合に用いる。
【００１９】
点線で囲ったブロックおよびカッコ内の単語（例えば、粗い破線、細かい破線、点線、点）は、本発明の実施形態に追加の特徴を与える任意の処理／コンポーネントを示すべく本明細書で用いられる場合がある。しかし、このような説明は、これらが唯一の選択肢またはオプション処理／コンポーネントであること、および／または、実線で囲ったブロックが特定の実施形態は任意ではないことを意味するものと解釈されるべきではない。
【００２０】
＜概論＞
メモリの容量および性能に関する要件は、プロセッサコアの数が増加するにつれて、そして、仮想化等の新しい利用モデルの登場によって、増加の一途をたどっている。また、メモリの電力およびコストは、電子システム全体の電力およびコストに大きな割合を占めるようになっている。
【００２１】
一部の実施形態は、性能要件および容量要件を複数のメモリ技術でインテリジェントに分割することによって上記の課題を解決する。この方法の焦点は、比較的小さく比較的高速のメモリ、例えば、ＤＲＡＭで性能を実現する一方、システムメモリの大半は、はるかに高密度の不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を用いて実現することにある。後述する本発明の実施形態は、ＮＶＲＡＭを利用する場合のヒエラルキーメモリサブシステム編成を可能とするプラットフォーム構成を定義する。メモリヒエラルキーにおいてＮＶＲＡＭを利用することでさらに、拡張ブート空間および大容量記憶装置の実現等、新しい利用方法が可能となる。
【００２２】
図１は、本発明の実施形態に係るキャッシュおよびシステムメモリの構成を示す図である。具体的には、図１は、一群の内部プロセッサキャッシュ１２０と、ファー（ｆａｒ）メモリキャッシュとして動作する「ニア（ｎｅａｒ）メモリ」１２１と、「ファーメモリ」１２２とを備えるメモリヒエラルキーを示す図である。ニアメモリ１２１は、内部キャッシュ１０６および外部キャッシュ１０７−１０９の両方を含むとしてよい。本発明の一部の実施形態で「ファーメモリ」に利用され得る特定の種類のメモリとしては、不揮発性ランダムアクセスメモリ（「ＮＶＲＡＭ」）が挙げられる。このため、ＮＶＲＡＭの概略について後述する。その後に、ファーメモリおよびニアメモリの概略について説明する
【００２３】
＜Ａ．不揮発性ランダムアクセスメモリ（「ＮＶＲＡＭ」）＞
ＮＶＲＡＭとして多くの技術を選択することが可能である。例えば、ＰＣＭ、相変化メモリおよびスイッチ（ＰＣＭＳ）（ＰＣＭＳはＰＣＭをより詳細に規定したもの）、バイトアドレッシング可能永続メモリ（ＢＰＲＡＭ）、ストレージクラスメモリ（ＳＣＭ）、ユニバーサルメモリ、Ｇｅ２Ｓｂ２Ｔｅ５、プログラマブルメタライゼーションセル（ＰＭＣ）、抵抗性メモリ（ＲＲＡＭ（登録商標））、ＲＥＳＥＴ（アモルファス）セル、ＳＥＴ（結晶性）セル、ＰＣＭＥ、オブシンスキ（Ｏｖｓｈｉｎｓｋｙ）メモリ、強誘電体メモリ（ポリマーメモリおよびポリ（Ｎ−ビニルカルバゾール）としても知られている）、強磁性メモリ（スピントロニクス（Ｓｐｉｎｔｒｏｎｉｃｓ）としても知られている）、ＳＰＲＡＭ（スピン移動トルクＲＡＭ）、ＳＴＲＡＭ（スピントンネリングＲＡＭ）、磁気抵抗メモリ、磁気メモリ、磁気ランダムアクセスメモリ（ＭＲＡＭ））および半導体−酸化物−窒化物−酸化物−半導体（ＳＯＮＯＳ、誘電体メモリとしても知られている）がある。
【００２４】
ＮＶＲＡＭは、以下の特徴を持つ。
１）ソリッドステートディスク（ＳＳＤ）で用いられているフラッシュメモリと同様に、電力供給が無くなっても内容を維持し、揮発性であるＳＲＡＭおよびＤＲＡＭとは異なる。
２）ＳＲＡＭおよびＤＲＡＭ等の揮発性メモリより消費電力が少ない。
３）ＳＲＡＭおよびＤＲＡＭと同様にランダムアクセス（ランダムにアドレッシングが可能、とも呼ばれる）である。
４）ＳＳＤ内のＦＬＡＳＨ（一度に「ブロック」単位でのみ書き換えおよび消去が実行され得る、ＮＯＲ  ＦＬＡＳＨでは最小サイズが６４キロバイト、ＮＡＮＤ  ＦＬＡＳＨでは１６キロバイト）より細かい粒度（例えば、バイトレベル）で書き換え可能および消去可能である。
５）システムメモリとして利用され、システムメモリアドレス空間の全てまたは一部分が割り当てられる。
６）アウトオブオーダ処理をサポートするべく識別子（ＩＤ）をサポートするプロトコルを用いるバスであって、システムメモリとしてＮＶＲＡＭの動作をサポートするために十分細かい粒度（例えば、６４バイトまたは１２８バイト等のキャッシュラインサイズ）でのアクセスを可能とするバスを介してプロセッサに結合可能、例えば、バスは、非アウトオブオーダメモリバスであってよい（例えば、ＤＤＲ３、ＤＤＲ４等のＤＤＲバス）。別の例として、バスは、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩＥ）バス、デスクトップ管理インターフェース（ＤＭＩ）バス、または、アウトオブオーダプロトコルを利用し、ペイロードサイズが十分に小さい（例えば、６４バイトまたは１２８バイト等のキャッシュラインサイズ）任意のその他の種類のバスであってよい。
７）以下のうち１以上である。
ａ）フラッシュ等の不揮発性メモリ／記憶装置技術よりも書込速度が速い。
ｂ）読出速度が超高速（フラッシュよりも早く、ＤＲＡＭ読出速度に近いか、または、同等）である。
ｃ）直接書込可能（ＳＳＤで利用されているフラッシュメモリのように、データを書き込む前に消去（１ｓで上書き）が必要になるのではない）である。
ｄ）故障までの書込回数が増加（ブートＲＯＭおよびＳＳＤで用いられるフラッシュよりも多い）する。
【００２５】
上述したように、一度に一の「ブロック」全体を書き換えて消去する必要があるフラッシュメモリとは対照的に、任意の所定の実施例におけるＮＶＲＡＭのアクセス粒度は、特定のメモリコントローラ、および、ＮＶＲＡＭが結合されている特定のメモリバスまたはその他の種類のバスに応じて決まるとしてよい。例えば、ＮＶＲＡＭがシステムメモリとして利用される一部の実施例によると、ＮＶＲＡＭは、本来は１バイトの粒度でアクセス可能であるが、メモリサブシステムがメモリにアクセスする際の粒度がキャッシュラインであるので、キャッシュライン（例えば、６４バイトまたは１２８バイトのキャッシュライン）の粒度でアクセスされるとしてよい。このように、ＮＶＲＡＭは、メモリサブシステム内に設けられると、同一メモリサブシステムで用いられているＤＲＡＭ（例えば、「ニアメモリ」）と同一の粒度でアクセスされるとしてよい。そうであるとしても、メモリコントローラおよびメモリバスまたはその他の種類のバスによるＮＶＲＡＭへのアクセス粒度は、フラッシュが利用するブロックサイズ、および、Ｉ／Ｏサブシステムのコントローラおよびバスのアクセスサイズよりは小さい。
【００２６】
ＮＶＲＡＭはさらに、特に、システムメモリ実施例等の多数の書込が発生する場合には、ファーメモリレベルのストレージセルが多数の書込アクセスを経ると摩耗し始めることに対処するべく、ウェアレベリングアルゴリズムを組み込むとしてよい。サイクルカウントが多いブロックはこのように摩耗する可能性が最も高いので、ウェアレベリングによって、高サイクルカウントのブロックのアドレスを低サイクルカウントのブロックのアドレスと交換することで、複数のファーメモリセルにわたって書き込みを拡散させる。尚、大半のアドレス交換は通常、ハードウェア、低レベルソフトウェア（例えば、低レベルドライバまたはオペレーティングシステム）、または、これら２つの組み合わせ）によって処理されるので、アプリケーションプログラムにトランスペアレントである。
【００２７】
＜Ｂ．ファーメモリ＞
本発明の一部の実施形態のファーメモリ１２２は、ＮＶＲＡＭで実現されるが、任意の特定のメモリ技術には必ずしも限定されない。ファーメモリ１２２は、メモリ／記憶装置ヒエラルキーにおける特性および／または用途に関して、他の命令およびデータ用のメモリ／記憶装置技術とは区別され得る。例えば、ファーメモリ１２２は、以下のような相違点を持つ。
１）プロセッサコア１０１−１０４のそれぞれに専用のレベル０およびレベル１の内部プロセッサキャッシュ１０１ａ−ｂ、１０２ａ−ｂ、１０３ａ−ｂ、および１０４ａ−ｂに、そして、複数のプロセッサコアが共有する低レベルキャッシュ（ＬＬＣ）１０５に利用され得るスタティックランダムアクセスメモリ（ＳＲＡＭ）
２）プロセッサ１００の内部にある（例えば、プロセッサ１００と同じダイ上にある）キャッシュ１０６として構成されており、および／または、プロセッサの外部にある（例えば、プロセッサ１００と同じパッケージまたは異なるパッケージ内）１以上のキャッシュ１０７−１０９として構成されているダイナミックランダムアクセスメモリ（ＤＲＡＭ）
３）大容量記憶装置として適用されるフラッシュメモリ／磁気ディスク／光ディスク（不図示）
４）ファームウェアメモリとして適用されるフラッシュメモリまたはその他のリードオンリーメモリ（ＲＯＭ）等のメモリ（ブートＲＯＭ、ＢＩＯＳフラッシュおよび／またはＴＰＭフラッシュと呼ぶ）（不図示）
【００２８】
ファーメモリ１２２は、命令およびデータの記憶装置として利用されるとしてよく、プロセッサ１００によって直接アドレッシング可能であり、大容量記憶装置として適用されるフラッシュ／磁気ディスク／光ディスクとは対照的に、プロセッサ１００と十分に速度を合わせることが可能である。さらに、上述したように、そして、詳細に後述するように、ファーメモリ１２２は、メモリバス上に設けられるとしてよく、プロセッサ１００と直接通信を行うメモリコントローラと直接通信を行うとしてよい。
【００２９】
ファーメモリ１２２は、他の命令およびデータ用の記憶装置技術（例えば、ＤＲＡＭ）と組み合わせて、ハイブリッドメモリ（同一箇所に設置されているＰＣＭおよびＤＲＡＭ、第１のレベルのメモリおよび第２のレベルのメモリ、ＦＬＡＭ（フラッシュおよびＤＲＡＭ）としても知られている）を形成するとしてよい。尚、ＰＣＭ／ＰＣＭＳを含む上述した技術のうち少なくとも一部は、システムメモリの代わりに、または、システムメモリに追加して、大容量記憶装置に用いられるとしてよく、このように利用される場合、プロセッサによるランダムアクセス、バイトアドレッシングまたは直接アドレッシングが可能である必要はない。
【００３０】
説明の便宜上、本願の以下の部分では多くの場合、ファーメモリ１２２の技術として「ＮＶＲＡＭ」、または、より詳しくは「ＰＣＭ」あるいは「ＰＣＭＳ」を選択している。このため、ＮＶＲＡＭ、ＰＣＭ、ＰＣＭＳおよびファーメモリといった用語は、以下の説明において同義語として用いられているものとしてよい。しかし、上述したように、複数の異なる技術をファーメモリについて利用するとしてよいと認められたい。また、ＮＶＲＡＭは、ファーメモリとして利用されることに限定されない。
【００３１】
＜Ｃ．ニアメモリ＞
「ニアメモリ」１２１は、ファーメモリ１２２の前方に設定されている中間レベルのメモリである。ファーメモリに比べて読み書きアクセスレイテンシが低く、および／または、読み書きアクセスレイテンシの対称度がより高い（つまり、読み出し時間は、書き込み時間と大体同じである）。一部の実施形態では、ニアメモリ１２１は、書き込みレイテンシがファーメモリ１２２よりもはるかに低いが、読み出しレイテンシは同等である（例えば、わずかに低いだけか、または、同等である）。例えば、ニアメモリ１２１は、揮発性ランダムアクセスメモリ（ＶＲＡＭ）等の揮発性メモリであってよく、ＤＲＡＭまたは他の高速キャパシタベースメモリを含むとしてもよい。しかし、本発明の基礎となる原理はこれらの具体的な種類のメモリに限定されないことに留意されたい。これに加えて、ニアメモリ１２１は、密度が比較的低いとしてよく、および／または、ファーメモリ１２２よりも製造コストが高いとしてもよい。
【００３２】
一実施形態によると、ニアメモリ１２１は、ファーメモリ１２２と内部プロセッサキャッシュ１２０との間に構成されている。以下で説明する実施形態の一部では、ニアメモリ１２１は、例えば、読み書きレイテンシの制限およびメモリ劣化の制限を含む、ファーメモリの性能および／または利用に関する制限をマスクするべく１以上のメモリ側キャッシュ（ＭＳＣ）１０７−１０９として構成されている。これらの実施例において、ＭＳＣ１０７−１０９およびファーメモリ１２２を組み合わせると、システムメモリとしてＤＲＡＭのみを利用するシステムの性能と、近いレベルで、同等のレベルで、または、それより高いレベルでの動作が実現できる。以下で詳細を説明すると、図１では「キャッシュ」として図示しているが、ニアメモリ１２１は、キャッシュの役割を果たすことに加えて、または、それに代えて他の役割を実行するモードを含むとしてよい。
【００３３】
ニアメモリ１２１は、プロセッサダイ上（キャッシュ１０６として）および／またはプロセッサダイの外部に（キャッシュ１０７−１０９として）位置させることができる（例えば、ＣＰＵパッケージ上に配置された別箇のダイ上、ＣＰＵパッケージの外部に配置し、ＣＰＵパッケージに対しては高帯域幅リンクを設ける、例えば、メモリデュアルインラインメモリモジュール（ＤＩＭＭ）、ライザ／メザニン、または、コンピュータマザーボード上に設ける）。ニアメモリ１２１は、一または複数の高帯域幅リンクを用いて、例えば、ＤＤＲまたは他の高帯域幅リンク（詳細に後述する）プロセッサ１００と通信できるように結合されるとしてよい。
【００３４】
＜システムメモリの割り当て方式の例＞
図１は、本発明の実施形態において、さまざまなレベルのキャッシュ１０１−１０９がシステム物理アドレス（ＳＰＡ）空間１１６−１１９に対してどのように構成されているかを示す図である。記述したように、本実施形態は、１以上のコア１０１−１０４を有するプロセッサ１００を備える。各コアは、自身の専用の上位キャッシュ（Ｌ０）１０１ａ−１０４ａおよび中位キャッシュ（ＭＬＣ）（Ｌ１）キャッシュ１０１ｂ−１０４ｂを含む。プロセッサ１００はさらに、共有ＬＬＣ１０５を含む。これらのさまざまなキャッシュレベルの動作は、広く理解されており、ここでは詳細な説明を省略する。
【００３５】
図１に図示するキャッシュ１０７−１０９は、特定のシステムメモリアドレス範囲または一群の非連続アドレス範囲に専用であるとしてよい。例えば、キャッシュ１０７は、システムメモリアドレス範囲＃１  １１６についてＭＳＣとして動作する専用のキャッシュであり、キャッシュ１０８および１０９は、システムメモリアドレス範囲＃２  １１７およびシステムメモリアドレス範囲＃３  １１８の非重複部分についてＭＳＣとして動作する専用のキャッシュである。後者の実施例は、プロセッサ１００が利用するＳＰＡ空間が、キャッシュ１０７−１０９（例えば、ＭＳＣとして構成されている場合）が利用するアドレス空間にインターリーブされているシステムについて利用されるとしてよい。一部の実施形態によると、この後者のアドレス空間は、メモリチャネルアドレス（ＭＣＡ）空間と呼ばれる。一実施形態によると、内部キャッシュ１０１ａ−１０６は、ＳＰＡ空間全体についてキャッシュ処理を実行する。
【００３６】
「システムメモリ」は、本明細書で用いられる場合、プロセッサ１００上で実行されているソフトウェアに可視であり、および／または、当該ソフトウェアによって直接アドレッシング可能なメモリである。キャッシュメモリ１０１ａ−１０９は、システムアドレス空間のうち直接アドレッシング可能な部分を形成しないという意味で、ソフトウェアに対してトランスペアレントに動作しているが、コアは、ソフトウェアが何らかの制御（構成、ポリシー、ヒント等）をキャッシュの一部または全てに提供するように命令の実行をサポートするとしてよい。システムメモリを複数の領域１１６−１１９に分割することは、システム構成プロセスの一環として手動で（例えば、システム設計者によって）実行されるとしてよく、および／または、ソフトウェアによって自動的に実行されるとしてもよい。
【００３７】
一実施形態によると、システムメモリ領域１１６−１１９は、ファーメモリ（例えば、ＰＣＭ）を利用して、および、一部の実施形態では、システムメモリとして構成されたニアメモリを利用して実現される。システムメモリアドレス範囲＃４は、システムメモリモード（キャッシュモードではない）で構成されるニアメモリであるＤＲＡＭ等の高速メモリを用いて実現されるアドレス範囲を表す。
【００３８】
図２は、本発明の実施形態に係る、メモリ／記憶装置ヒエラルキー１４０、および、ニアメモリ１４４およびＮＶＲＡＭ用の複数の異なる設定可能な動作モードを示す図である。メモリ／記憶装置ヒエラルキー１４０は、以下に説明する複数のレベルを持つ。
１）プロセッサキャッシュ１５０Ａ（例えば、図１におけるキャッシュ１０１Ａ−１０５）を含み、および、任意で（本明細書で説明するように特定の動作モードで）ファーメモリのキャッシュとしてニアメモリ１５０Ｂを含むキャッシュレベル１５０
２）ニアメモリが存在する場合ファーメモリ１５１Ｂ（例えば、ＰＣＭ等のＮＶＲＡＭ）を含み、（または、ニアメモリが存在しない場合には、システムメモリ１７４としてＮＶＲＡＭのみを含む）、任意で（本明細書で説明する特定の動作モードにおいて）システムメモリ１５１Ａとして動作するニアメモリを含むシステムメモリレベル１５１
３）フラッシュ／磁気／光大容量記憶装置１５２Ｂおよび／またはＮＶＲＡＭ大容量記憶装置１５２Ａ（例えば、ＮＶＲＡＭ１４２の一部）を含む大容量記憶装置レベル１５２
４）ＢＩＯＳフラッシュ１７０および／またはＢＩＯＳ  ＮＶＲＡＭ１７２、ならびに、任意でトラステッドプラットフォームモジュール（ＴＰＭ）ＮＶＲＡＭ１７３を含むファームウェアメモリレベル１５３
【００３９】
記述したように、ニアメモリ１４４は、さまざまな異なるモードで動作するように実現されるとしてよい。これらのモードには、ファーメモリに対するキャッシュとして動作する第１のモード（ＦＭのキャッシュとしてのニアメモリ１５０Ｂ）、システムメモリ１５１Ａとして動作し、ＳＰＡ空間の一部を占める第２のモード（場合によっては、ニアメモリ「ダイレクトアクセス」モードと呼ぶ）、および、スクラッチパッドメモリ１９２または書込バッファ１９３等の１以上の追加動作モードがある。本発明の一部の実施形態によると、ニアメモリはパーティション化が可能である。各パーティションは、サポートされているモードのうち異なるモードで同時に動作するとしてもよい。異なる実施形態では、ハードウェア（例えば、ヒューズ、ピン）、ファームウェアおよび／またはソフトウェア（例えば、各モードおよび各パーティションを特定するべく複数の異なるバイナリコードを格納しているＭＳＣコントローラ１２４内で一群のプログラマブルレンジレジスタを用いて）によってパーティションの構成（例えば、サイズ、モード）をサポートするとしてよい。
【００４０】
図２に示すシステムアドレス空間Ａ１９０は、ニアメモリがファーメモリについてのＭＳＣ１５０Ｂとして構成されている場合の動作について説明するために用いる。この構成では、システムアドレス空間Ａ１９０は、システムアドレス空間全体を表している（そして、システムアドレス空間Ｂ１９１は存在しない）。これに代えて、システムアドレス空間Ｂ１９１は、ニアメモリの全体または一部にシステムアドレス空間の一部が割り当てられている場合の実施例を示すために用いられる。本実施形態において、システムアドレス空間Ｂ１９１は、システムアドレス空間のうちニアメモリ１５１Ａに割り当てられている範囲を表し、システムアドレス空間Ａ１９０は、ＮＶＲＡＭ１７４に割り当てられているシステムアドレス空間の範囲を表している。
【００４１】
また、ファーメモリのキャッシュ１５０Ｂとして動作する場合、ニアメモリ１４４は、ＭＳＣコントローラ１２４の制御下でさまざまなサブモードで動作するとしてよい。これらのモードのそれぞれでは、ニアメモリアドレス空間（ＮＭＡ）は、ニアメモリはシステムアドレス空間の直接アドレッシング可能な部分を形成しないという意味で、ソフトウェアに対してトランスペアレントである。これらのモードは、限定するものではないが、以下のモードを含む。
１）ライトバックキャッシュモード、このモードでは、ＦＭキャッシュとして動作しているニアメモリ１５０Ｂの全てまたは一部分が、ＮＶＲＡＭファーメモリ（ＦＭ）１５１Ｂのキャッシュとして用いられる。ライトバックモードでは、どの書込処理も最初にＦＭのキャッシュとしてのニアメモリ１５０Ｂに誘導する（書込の誘導先のキャッシュラインがキャッシュ内に存在すると仮定する）。対応する書込処理は、ＦＭのキャッシュとしてのニアメモリ１５０Ｂ内のキャッシュラインを、別のキャッシュラインで置換すべきである場合にのみ（後述するライトスルーモードとは対照的、ライトスルーモードでは、各書込処理は即座にＮＶＲＡＭ  ＦＭ１５１Ｂに伝搬させる）、ＮＶＲＡＭ  ＦＭ１５１Ｂを更新するために実行される。
２）ニアメモリバイパスモード、このモードでは、全ての読み出しおよび書き込みは、ＦＭキャッシュとして動作しているＮＭ１５０Ｂをバイパスして、ＮＶＲＡＭ  ＦＭ１５１Ｂに直接向かう。このようなモードは、例えば、アプリケーションがキャッシュに寛容でないか、または、キャッシュラインの粒度で永続性にデータをコミットさせる必要がある場合に用いられるとしてよい。一実施形態によると、プロセッサキャッシュ１５０Ａ、および、ＦＭキャッシュとして動作するＮＭ１５０Ｂが実行するキャッシュは、互いに独立して動作する。この結果、データは、ＦＭキャッシュとして動作しているＮＭ１５０Ｂにキャッシュされるとしてよい。プロセッサキャッシュ１５０Ａにキャッシュされない（場合によっては、プロセッサキャッシュ１５０Ａにキャッシュすることが許可されていない）。逆も同様である。このように、プロセッサキャッシュに「キャッシュ不可能」と指定されている特定のデータは、ＦＭキャッシュとして動作しているＮＭ１５０Ｂにキャッシュされるとしてよい。
３）ニアメモリ読出−キャッシュ書込バイパスモード、これは、ＮＶＲＡＭ  ＦＭ１５１Ｂからの永続的データの読出キャッシュが許可される、上記のモードの変形版である（つまり、永続的データは、読み出し限定処理について、ファーメモリのキャッシュとしてのニアメモリ１５０Ｂにキャッシュされる）。これは、永続的データの大半が「読み出し限定」であり、アプリケーション利用がキャッシュに寛容である場合に、有用である。
４）ニアメモリ読出−キャッシュライトスルーモード、これは、ニアメモリ読出−キャッシュ書込バイパスモードの変形版である。読出キャッシュに加えて、書込ヒットもキャッシュされる。ＦＭのキャッシュとしてのニアメモリ１５０Ｂへの書き込みは全て、ＦＭ１５１Ｂへの書き込みを発生させる。このため、キャッシュのライトスルー特性のために、キャッシュラインの永続性は依然として保証される。
【００４２】
ニアメモリダイレクトアクセスモードで動作している場合、システムメモリ１５１Ａとしてニアメモリの全てまたは一部は、ソフトウェアに対して直接可視であり、ＳＰＡ空間の一部を形成する。このようなメモリは、完全にソフトウェアの制御下にあるとしてよい。このような方式は、ソフトウェアについて非均一メモリアドレス（ＮＵＭＡ）メモリドメインを形成するとしてよい。この場合、ＮＶＲＡＭシステムメモリ１７４に比べて、ニアメモリ１４４からの方が、性能が高くなる。一例として挙げると、これらに限定されないが、このような利用は、特定のデータ構造に対して超高速アクセスが必要である特定の高性能コンピューティング（ＨＰＣ）アプリケーションおよびグラフィクスアプリケーションについて採用されるとしてよい。
【００４３】
別の実施形態によると、ニアメモリダイレクトアクセスモードは、ニアメモリに特定のキャッシュライン（つまり、同時にＮＶＲＡＭ１４２にも格納されているデータを持つキャッシュライン）を「くぎ付け」にすることで、実現される。このような「くぎ付け」は、より大型のマルチウェイセットアソシアティブキャッシュにおいて効果的に行われるとしてよい。
【００４４】
図２はさらに、ＮＶＲＡＭ１４２の一部分はファームウェアメモリとして利用され得ることを示す。例えば、（ＢＩＯＳフラッシュ１７０にＢＩＯＳ情報を格納することに代えて、または、これに加えて）ＢＩＯＳ  ＮＶＲＡＭ１７２の一部分は、ＢＩＯＳイメージを格納するために用いられるとしてよい。ＢＩＯＳ  ＮＶＲＡＭの一部分１７２は、ＳＰＡ空間の一部分であってよく、プロセッサコア１０１−１０４で実行されているソフトウェアによって直接アドレッシング可能である。一方、ＢＩＯＳフラッシュ１７０は、Ｉ／Ｏサブシステム１１５を用いてアドレッシング可能である。別の例を挙げると、トラステッドプラットフォームモジュール（ＴＰＭ）ＮＶＲＡＭ１７３の一部分は、極秘システム情報（例えば、暗号鍵）を保護するために用いられるとしてよい。
【００４５】
このため、記述したように、ＮＶＲＡＭ１４２は、さまざまな異なるモードで動作するべく実現されるとしてよい。これらのモードは、ファーメモリ１５１Ｂとして（例えば、ニアメモリ１４４が存在／動作している場合、ニアメモリが、ＭＳＣ制御１２４を利用してＦＭのキャッシュとして動作しているか否か、（ＭＳＣ制御１２４無しで、キャッシュ１０１Ａ−１０５の後に直接アクセスされる））、ＮＶＲＡＭシステムメモリ１７４のみ（ニアメモリが存在／動作していないためファーメモリとしてではない、そして、ＭＳＣ制御１２４無しでアクセスされる）、ＮＶＲＡＭ大容量記憶装置１５２Ａ、ＢＩＯＳ  ＮＶＲＡＭ１７２、および、ＴＰＭ  ＮＶＲＡＭ１７３を含む。複数の異なる実施形態では複数の異なる方法でＮＶＲＡＭモードを特定し得るが、図３は、デコードテーブル３３３の利用を説明する。
【００４６】
図３は、本発明の実施形態を実施するコンピュータシステム３００の一例を示す図である。コンピュータシステム３００は、プロセッサ３１０と、システムメモリ、大容量記憶装置の両方、および、任意でファームウェアメモリに利用されるＮＶＲＡＭ１４２を含むメモリ／記憶装置サブシステム３８０を備える。一実施形態によると、ＮＶＲＡＭ１４２は、データ、命令、状態、ならびに、その他の永続的情報および非永続的情報を格納するためにコンピュータシステム３００が利用する全システムメモリおよび記憶装置ヒエラルキーを有する。先述したように、ＮＶＲＡＭ１４２は、システムメモリ、大容量記憶装置およびファームウェアメモリ、ＴＰＭメモリ等の通常のメモリおよび記憶装置ヒエラルキーにおいて役割を実現するように構成され得る。図３の実施形態では、ＮＶＲＡＭ１４２は、ＦＭ１５１Ｂ、ＮＶＲＡＭ大容量記憶装置１５２Ａ、ＢＩＯＳ  ＮＶＲＡＭ１７２、および、ＴＭＰ  ＮＶＲＡＭ１７３に分割される。役割が異なる複数の記憶装置ヒエラルキーも考慮されており、ＮＶＲＡＭ１４２の用途は上述した役割に限定されるものではない。
【００４７】
一例として、ＦＭのキャッシュとしてのニアメモリ１５０Ｂがライトバックキャッシュモードである際の動作を説明する。一実施形態によると、ＦＭのキャッシュとしてのニアメモリ１５０Ｂが上述したライトバックキャッシュモードである間、読出処理は最初にＭＳＣコントローラ１２４に到達し、ＭＳＣコントローラ１２４が検索を実行して、要求されたデータが、ＦＭのキャッシュとして動作しているニアメモリ１５０Ｂ内に存在するか否かを判断する（例えば、タグキャッシュ３４２を利用する）。存在する場合、Ｉ／Ｏサブシステム１１５を介して、要求元のＣＰＵ、コア１０１−１０４、または、Ｉ／Ｏデバイスにデータを戻す。データが存在しない場合、ＭＳＣコントローラ１２４は、システムメモリアドレスと共に、要求をＮＶＲＡＭコントローラ３３２に送信する。ＮＶＲＡＭコントローラ３３２は、デコードテーブル３３３を利用して、システムメモリアドレスをＮＶＲＡＭ物理デバイスアドレス（ＰＤＡ）に変換し、ファーメモリ１５１Ｂのこの領域に読出処理を指示する。一実施形態によると、デコードテーブル３３３は、ＮＶＲＡＭコントローラ３３２がシステムメモリアドレスとＮＶＲＡＭ  ＰＤＡとの間での変換に利用するアドレス間接テーブル（ＡＩＴ）コンポーネントを含む。一実施形態によると、ＡＩＴは、メモリアクセス処理を分散させることでＮＶＲＡＭのＦＭ１５１Ｂの摩耗を低減するべく実装されるウェアレベリングアルゴリズムの一部として更新される。これに代えて、ＡＩＴは、ＮＶＲＡＭコントローラ３３２内に格納されている別のテーブルであってもよい。
【００４８】
ＮＶＲＡＭコントローラ３３２は、要求されたデータをＮＶＲＡＭ  ＦＭ１５１Ｂから受信すると、要求されたデータをＭＳＣコントローラ１２４に戻し、ＭＳＣコントローラ１２４は当該データを、ＦＭキャッシュとして動作しているＭＳＣニアメモリ１５０Ｂに格納し、さらに、Ｉ／Ｏサブシステム１１５を介して、当該データを要求元のプロセッサコア１０１−１０４またはＩ／Ｏデバイスに送信する。このデータについてこの後要求が発行されると、他のＮＶＲＡＭ  ＦＭデータで置き換えられるまでは、ＦＭキャッシュとして動作しているニアメモリ１５０Ｂから直接対応するとしてよい。
【００４９】
上述したように、一実施形態によると、メモリ書込処理もまた、最初にＭＳＣコントローラ１２４に供給される。ＭＳＣコントローラ１２４は、ＦＭキャッシュとして動作しているＭＳＣニアメモリ１５０Ｂに書き込む。ライトバックキャッシュモードにおいて、データは、書込処理を受信した際に直接ＮＶＲＡＭ  ＦＭ１５１Ｂに送信されないとしてよい。例えば、データは、データが格納されているＦＭキャッシュとして動作しているＭＳＣニアメモリ１５０Ｂ内の位置を、別のシステムメモリアドレスのためのデータを格納するために再度利用しなければならない場合にのみ、ＮＶＲＡＭ  ＦＭ１５１Ｂに送信されるとしてよい。この場合、ＭＳＣコントローラ１２４は、当該データはＮＶＲＡＭ  ＦＭ１５１Ｂでは最新版でないと認識するので、ＦＭキャッシュとして動作しているニアメモリ１５０Ｂから取得して、ＮＶＲＡＭコントローラ３３２に送信する。ＮＶＲＡＭコントローラ３３２は、ＰＤＡにおいてシステムメモリアドレスを発見するべく検索し、データをＮＶＲＡＭ  ＦＭ１５１Ｂに書き込む。
【００５０】
図３において、ＮＶＲＡＭコントローラ３３２は、３つの別個のラインを利用して、ＦＭ１５１Ｂ、ＮＶＲＡＭ大容量記憶装置１５２ＡおよびＢＩＯＳ  ＮＶＲＡＭ１７２に接続されているものとして図示されている。しかし、これは必ずしも、ＮＶＲＡＭコントローラ３３２をＮＶＲＡＭ１４２のこれらの部分に接続する３つの別個の物理バスまたは通信チャネルが存在することを意味するものではない。そうではなく、一部の実施形態では、一の共通のメモリバスまたはその他の種類のバスを用いて、ＮＶＲＡＭコントローラ３３２をＦＭ１５１Ｂ、ＮＶＲＡＭ大容量記憶装置１５２Ａ、および、ＢＩＯＳ  ＮＶＲＡＭ１７２に通信可能に結合する。例えば、一実施形態によると、図３に示す３つのラインは、ＮＶＲＡＭコントローラ３３２がＮＶＲＡＭ１４２と通信するための（例えば、アウトオブオーダ）プロトコルを実行するメモリバス（例えば、ＤＤＲ３、ＤＤＲ４等のバス）等のバスを表す。ＮＶＲＡＭコントローラ３３２はさらに、ＰＣＩ  Ｅｘｐｒｅｓｓバス、デスクトップ管理インターフェース（ＤＭＩ）バス、または、アウトオブオーダプロトコルおよび十分に小さいペイロードサイズ（例えば、６４バイトまたは１２８バイト等のキャッシュラインサイズ）を利用する任意のその他の種類のバス等のネイティブプロトコルをサポートしているバスを介してＮＶＲＡＭ１４２と通信するとしてよい。
【００５１】
一実施形態によると、コンピュータシステム３００は、プロセッサ３１０のための中央メモリアクセス制御を実行する集積化メモリコントローラ（ＩＭＣ）３３１を備える。集積化メモリコントローラ（ＩＭＣ）３３１は、１）ファーメモリキャッシュとして動作するニアメモリ（ＮＭ）１５０Ｂに対するアクセスを制御するためのメモリ側キャッシュ（ＭＳＣ）コントローラ１２４、および、２）ＮＶＲＡＭ１４２へのアクセスを制御するためのＮＶＲＡＭコントローラ３３２に結合されている。ＭＳＣコントローラ１２４およびＮＶＲＡＭコントローラ３３２は、図３において別箇のユニットとして図示されているが、ロジック上はＩＭＣ３３１のうち一部分を形成しているとしてよい。
【００５２】
図示した実施形態では、ＭＳＣコントローラ１２４は、ファーメモリキャッシュとして動作しているＮＭ１５０Ｂについて利用されている動作モード（例えば、上述したライトバックキャッシュモード、ニアメモリバイパスモード等）を特定する一群のレンジレジスタ３３６を含む。図示した実施形態では、ＤＲＡＭ１４４は、ファーメモリのキャッシュとして動作するＮＭ１５０Ｂについてメモリ技術として利用される。メモリアクセス要求に応じて、ＭＳＣコントローラ１２４は、要求をＦＭのキャッシュとして動作しているＮＭ１５０Ｂで対応するか否か、または、要求をＮＶＲＡＭコントローラ３３２に送信して、ＮＶＲＡＭコントローラ３３２が、ＮＶＲＡＭ１４２のファーメモリ（ＦＭ）部分１５１Ｂで当該要求に対応すべきか否かを（レンジレジスタ３３６で特定されている動作モードに応じて）決定するとしてよい。
【００５３】
ＮＶＲＡＭ１４２がＰＣＭＳで実現される実施形態では、ＮＶＲＡＭコントローラ３３２は、ＰＣＭＳ技術に準拠したプロトコルでアクセスを実行するＰＣＭＳコントローラである。上述したように、ＰＣＭＳメモリは本質的に、１バイトの粒度でアクセス可能である。これにもかかわらず、ＮＶＲＡＭコントローラ３３２は、キャッシュライン（例えば、６４ビットまたは１２８ビットのキャッシュライン）等のより低い粒度で、または、メモリサブシステムに準拠した任意のその他の粒度でＰＣＭＳベースのファーメモリ１５１Ｂにアクセスするとしてよい。本発明の基礎となる原理は、ＰＣＭＳベースのファーメモリ１５１Ｂにアクセスする際について、任意の特定の粒度には限定されない。しかし、一般的に、ＰＣＭＳベースのファーメモリ１５１Ｂを用いてシステムアドレス空間の一部を形成する場合、粒度は、「ブロック」単位（ＮＯＲフラッシュの最小サイズは６４キロバイト、ＮＡＮＤフラッシュでは１６キロバイト）で書き換え処理および消去処理を実行するのみであったフラッシュ等の他の不揮発性記憶装置技術に従来から利用されている粒度よりも高いとしてよい。
【００５４】
図示した実施形態では、ＮＶＲＡＭコントローラ３３２は、ＮＶＲＡＭ１４２のための先述したモード、サイズ等を構築するための設定データを、デコードテーブル３３３から、読み出すとしてよい。または、これに代えて、ＩＭＣ３３１およびＩ／Ｏサブシステム３１５から供給されるデコード結果を利用するとしてもよい。例えば、製造時または現場において、コンピュータシステム３００は、ＮＶＲＡＭ１４２の複数の異なる領域を、システムメモリ、ＳＡＴＡインターフェースを介して露出する大容量記憶装置、ＵＳＢバルクオンリートランスポート（ＢＯＴ）インターフェースを介して露出する大容量記憶装置、ＴＰＭ記憶装置をサポートする暗号化された記憶装置等として、指定するべく、デコードテーブル３３３をプログラミングすることができる。ＮＶＲＡＭデバイス１４２の複数の異なるパーティションにアクセスを誘導する手段は、デコードロジックを介してである。例えば、一実施形態によると、各パーティションのアドレス範囲は、デコードテーブル３３３で定義される。一実施形態によると、ＩＭＣ３３１がアクセス要求を受信すると、当該要求のターゲットアドレスをデコードして、当該要求がメモリ、ＮＶＲＡＭ大容量記憶装置またはＩ／Ｏに向けて指定されているか否かを解明する。メモリ要求である場合、ＩＭＣ３３１および／またはＭＳＣコントローラ１２４はさらに、ターゲットアドレスに基づいて、当該要求が、ＦＭのキャッシュとしてのＮＭ１５０ＢまたはＦＭ１５１Ｂのいずれに対して指定されているか否かを判断する。ＦＭ１５１Ｂに対するアクセスの場合、当該要求はＮＶＲＡＭコントローラ３３２に転送される。ＩＭＣ３３１は、この要求がＩ／Ｏ（例えば、記憶装置でないＩ／Ｏデバイスおよび記憶装置であるＩ／Ｏデバイス）に対して指定されている場合、当該要求をＩ／Ｏサブシステム１１５に供給する。Ｉ／Ｏサブシステム１１５はさらに、アドレスが、ＮＶＲＡＭ大容量記憶装置１５２Ａ、ＢＩＯＳ  ＮＶＲＡＭ１７２、または、他の記憶装置でないＩ／Ｏデバイスもしくは記憶装置であるＩ／Ｏデバイスを指し示すか否かを決定するべく、アドレスをデコードする。このアドレスがＮＶＲＡＭ大容量記憶装置１５２ＡまたはＢＩＯＳ  ＮＶＲＡＭ１７２を指し示す場合、Ｉ／Ｏサブシステム１１５は当該要求をＮＶＲＡＭコントローラ３３２に転送する。このアドレスがＴＭＰ  ＮＶＲＡＭ１７３を指し示す場合、Ｉ／Ｏサブシステム１１５は当該要求をＴＰＭ３３４に供給してセキュアなアクセスを実行する。
【００５５】
本明細書に記述したような新しいメモリアーキテクチャが存在することで、多くの新しい可能性が生まれる。はるかに長い説明で後述するが、このような可能性の一部は、この直後に簡潔に概要を説明する。
【００５６】
一の実施可能例によると、ＮＶＲＡＭ１４２は、システムメモリにおける従来のＤＲＡＭ技術を完全に置換する技術として、または、補完する技術として機能する。一実施形態によると、ＮＶＲＡＭ１４２は、第２のレベルのシステムメモリを導入することを表す（例えば、システムメモリは、キャッシュとしてのニアメモリ１５０Ｂ（ＤＲＡＭデバイス３４０の一部）を含む第１のレベルのシステムメモリと、ファーメモリ（ＦＭ）１５１Ｂ（ＮＶＲＡＭ１４２の一部）を含む第２のレベルのシステムメモリとを持つものとして認識されるとしてよい）。
【００５７】
一部の実施形態によると、ＮＶＲＡＭ１４２は、フラッシュ／磁気／光大容量記憶装置１５２Ｂに対して、完全に置換する機能を持つものとして、または、補完的な機能を持つものとして動作する。先述したように、一部の実施形態によると、ＮＶＲＡＭ１５２Ａはバイトレベルでアドレッシングが可能であるが、実施例によっては（例えば、６４キロバイト、１２８キロバイト等）、ＮＶＲＡＭコントローラ３３２は依然として、複数のバイトに等しいブロック単位でＮＶＲＡＭ大容量記憶装置１５２Ａにアクセスするとしてよい。ＮＶＲＡＭ大容量記憶装置１５２ＡのデータにＮＶＲＡＭコントローラ３３２がアクセスする特異的な方法は、プロセッサ３１０が実行するソフトウェアにトランスペアレントであるとしてよい。例えば、ＮＶＲＡＭ大容量記憶装置１５２Ａはフラッシュ／磁気／光大容量記憶装置１５２Ｂとはアクセス方法が異なるとしても、オペレーティングシステムは依然として、ＮＶＲＡＭ大容量記憶装置１５２Ａを標準的な大容量記憶装置と見なすとしてよい（例えば、シリアルＡＴＡハードドライブまたは他の標準的な形態の大容量記憶装置）。
【００５８】
ＮＶＲＡＭ大容量記憶装置１５２Ａがフラッシュ／磁気／光大容量記憶装置１５２Ｂを完全に置換するものとして機能する実施形態では、ブロックアドレッシング可能な記憶装置アクセスについて記憶装置ドライバを利用する必要はない。記憶装置ドライバオーバーヘッドを記憶装置アクセスから無くすことで、アクセス速度が高速化され、電力消費が節約される。ＮＶＲＡＭ大容量記憶装置１５２Ａが、ＯＳおよび／またはアプリケーションに対して、ブロックアクセス可能で、フラッシュ／磁気／光大容量記憶装置１５２Ｂとは識別不可能であるように見えることが望ましい別の実施形態では、エミュレートされた記憶装置ドライバを用いて、ＮＶＲＡＭ大容量記憶装置１５２Ａにアクセスするべく、ブロックアクセス可能なインターフェース（例えば、ユニバーサルシリアルバス（ＵＳＢ）バルクオンリートランスファー（ＢＯＴ）、１．０；シリアルアドバンスドテクノロジーアタッチメント（ＳＡＴＡ）、３．０等）をソフトウェアに露出させることができる。
【００５９】
一実施形態によると、ＮＶＲＡＭ１４２は、ＢＩＯＳフラッシュ３６２およびＴＰＭフラッシュ３７２（図３では、任意であることが分かるように、点線で図示している）等のファームウェアメモリを完全に置換するか、または、補完するものとして機能する。例えば、ＮＶＲＡＭ１４２は、ＢＩＯＳフラッシュ３６２を補完または置換するＢＩＯＳ  ＮＶＲＡＭ１７２部分を含むとしてよく、ＴＰＭフラッシュ３７２を補完または置換するＴＰＭ  ＮＶＲＡＭ１７３部分を含むとしてよい。ファームウェアメモリはさらに、機密システム情報（例えば、暗号鍵）を保護するべく、ＴＰＭ３３４が利用するシステム永続状態を格納するとしてよい。一実施形態によると、ＮＶＲＡＭ１４２をファームウェアメモリとして利用することで、システム動作に重要なコードおよびデータを格納する第三者のフラッシュ部分が必要なくなる。
【００６０】
この後図３のシステムの説明を続けて行うと、一部の実施形態において、図３に図示されているプロセッサ３１０は簡略化のために１つであるが、コンピュータシステム１００のアーキテクチャは、複数のプロセッサを含むとしてよい。プロセッサ３１０は、汎用または特定用途向け中央演算処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、または、デジタルシグナルプロセッサ（ＤＳＰ）等、任意の種類のデータプロセッサであってよい。例えば、プロセッサ３１０は、Ｃｏｒｅ（商標）ｉ３、ｉ５、ｉ７、２  Ｄｕｏ  ａｎｄ  Ｑｕａｄ、Ｘｅｏｎ（商標）またはＩｔａｎｉｕｍ（商標）プロセッサ等の汎用プロセッサであってよい。これらはすべて、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ社（米国カリフォルニア州サンタクラーラ）製である。これに代えて、プロセッサ３１０は、別の会社製であってよい。例えば、ＡＲＭ  Ｈｏｌｄｉｎｇｓ，Ｌｔｄ．社（米国カリフォルニア州サニーベール）、ＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社（米国カリフォルニア州サニーベール）等である。プロセッサ３１０は、特定用途向けプロセッサ、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、コプロセッサ、埋め込みプロセッサ等であってよい。プロセッサ３１０は、１以上のパッケージに含まれている１以上のチップ上で実現されるとしてよい。プロセッサ３１０は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳまたはＮＭＯＳ等の複数の処理技術のいずれかを用いて１以上の基板の一部であってよく、および／または、そのような１以上の基板上で実現されるとしてよい。図３に示す実施形態によると、プロセッサ３１０は、システムオンチップ（ＳＯＣ）構成を持つ。
【００６１】
一実施形態によると、プロセッサ３１０は、３Ｄグラフィクスコマンドまたは２Ｄグラフィクスコマンド等のグラフィクスコマンドを実行するロジックを含む集積化グラフィクスユニット３１１を含む。本発明の実施形態は任意の特定の集積化グラフィクスユニット３１１に限定されないが、一実施形態によると、グラフィクスユニット３１１は、Ｏｐｅｎ  ＧＬおよび／またはＤｉｒｅｃｔ  Ｘアプリケーションプログラミングインターフェース（ＡＰＩ）（例えば、ＯｐｅｎＧＬ４．１およびＤｉｒｅｃｔＸ１１）で特定されているグラフィクスコマンド等の業界標準規格のグラフィクスコマンドを実行可能である。
【００６２】
繰り返しになるが、分かり易いように図３に図示されているコアは１つであるが、プロセッサ３１０は、１以上のコア１０１−１０４をさらに含むとしてよい。多くの実施形態において、コア１０１−１０４は、１以上の実行ユニット、リタイヤメントユニット、一群の汎用レジスタおよび特定用途向けレジスタ等の内部機能ブロックを含む。コアがマルチスレッド型またはハイパースレッド型である場合、各ハードウェアスレッドもまた、一の「論理」コアとして見なされるとしてよい。コア１０１−１０４は、アーキテクチャおよび／または命令セットに関して、同様であってもよいし、または、異なるとしてもよい。例えば、コアのうち幾つかは、インオーダ型であってよく、残りはアウトオブオーダ型であってよい。別の例として、コアのうち２以上は、同じ命令セットを実行可能であるとしてよく、一方で、残りのコアは、当該命令セットの一部のみ、または、別の命令セットを実行可能であるとしてもよい。
【００６３】
プロセッサ３１０はさらに、１以上のキャッシュ、例えば、ＳＲＡＭおよび／またはＤＲＡＭとして実現され得るキャッシュ３１３を有するとしてよい。図示していない多くの実施形態において、キャッシュ３１３以外の追加のキャッシュを実現して、複数のレベルのキャッシュをコア１０１−１０４内の実行ユニットと、メモリデバイス１５０Ｂおよび１５１Ｂとの間に設ける。例えば、一群の共有キャッシュユニットは、レベル１（Ｌ１）キャッシュ等の上位レベルキャッシュ、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）または他のレベルのキャッシュ等の中位レベルキャッシュ、ＬＬＣ、および／または、これらの他の組み合わせを含むとしてよい。異なる実施形態では、キャッシュ３１３の分割方法を変更するとしてもよい。キャッシュ３１３は、異なる実施形態では、多くの異なるサイズのうち１つのキャッシュであってよい。例えば、キャッシュ３１３は、８メガバイト（ＭＢ）キャッシュ、１６ＭＢキャッシュ等であってよい。さらに、異なる実施形態では、キャッシュは、ダイレクトマッピングキャッシュ、フルアソシアティブキャッシュ、マルチウェイセットアソシアティブキャッシュ、または、別の種類のマッピングを採用しているキャッシュであってよい。複数のコアを含む他の実施形態では、キャッシュ３１３は、全てのコアで共有される一の大きな部分を含むとしてよく、または、複数の別箇の機能スライス（例えば、コア毎に１つのスライス）に分割されるとしてよい。キャッシュ３１３はさらに、全てのコアで共有される一の部分と、コア毎に複数の別箇の機能スライスである複数の他の部分とを含むとしてよい。
【００６４】
プロセッサ３１０はさらに、コア１０１−１０４を協調させ動作させるコンポーネントを含むホームエージェント３１４を有するとしてよい。ホームエージェント３１４は、例えば、電力制御ユニット（ＰＣＵ）および表示ユニットを含むとしてよい。ＰＣＵは、コア１０１−１０４および集積化グラフィクスユニット３１１の電力状態を制御するために必要なロジックおよびコンポーネントであってよく、または、そのようなロジックおよびコンポーネントを含むとしてよい。表示ユニットは、１以上の外部に接続されているディスプレイを駆動するためのユニットである。
【００６５】
上述したように、一部の実施形態において、プロセッサ３１０は、集積化メモリコントローラ（ＩＭＣ）３３１、ニアメモリキャッシュ（ＭＳＣ）コントローラ、および、ＮＶＲＡＭコントローラ３３２を有する。これらは全て、プロセッサ３１０と同じチップ上にあるとしてもよいし、または、別箇のチップ上にあり、および／または、プロセッサ３１０に接続されているパッケージ上にあるとしてよい。ＤＲＡＭデバイス１４４は、ＩＭＣ３３１およびＭＳＣコントローラ１２４と同じチップ上にあってもよいし、または、異なるチップ上にあるとしてもよい。このため、例を挙げると、一のチップがプロセッサ３１０およびＤＲＡＭデバイス１４４を含むとしてよい。一のチップがプロセッサ３１０を含み、別のチップがＤＲＡＭデバイス１４４を含むとしてよい（これらのチップは同じパッケージ内にあってもよいし、異なるパッケージ内にあってもよい）。一のチップがコア１０１−１０４を含み、別のチップがＩＭＣ３３１、ＭＳＣコントローラ１２４およびＤＲＡＭ１４４を含むとしてよい（これらのチップは、同じパッケージ内にあってもよいし、異なるパッケージ内にあってもよい）。一のチップがコア１０１−１０４を含み、別のチップがＩＭＣ３３１およびＭＳＣコントローラ１２４を含み、別のチップがＤＲＡＭ１４４を含むとしてよい（これらのチップは、同じパッケージ内にあってもよいし、異なるパッケージ内にあってもよい）。
【００６６】
一部の実施形態によると、プロセッサ３１０は、ＩＭＣ３３１に結合されているＩ／Ｏサブシステム１１５を有する。Ｉ／Ｏサブシステム１１５は、プロセッサ３１０と、以下に記載するシリアル方式またはパラレル方式のＩ／Ｏデバイスとの間での通信を可能とする。Ｉ／Ｏデバイスとしては、１以上のネットワーク３３６（例えば、ローカルエリアネットワーク、ワイドエリアネットワークまたはインターネット）、記憶装置であるＩ／Ｏデバイス（例えば、フラッシュ／磁気／光大容量記憶装置１５２Ｂ、ＢＩＯＳフラッシュ３６２、ＴＰＭフラッシュ３７２）および１以上の記憶装置でないＩ／Ｏデバイス３３７（例えば、ディスプレイ、キーボード、スピーカ等）が挙げられる。Ｉ／Ｏサブシステム１１５は、プラットフォームコントローラハブ（ＰＣＨ）（不図示）を有するとしてよい。ＰＣＨはさらに、記憶装置および記憶装置でないＩ／Ｏデバイスおよびネットワークへのアクセスを実現するべく、複数のＩ／Ｏアダプタ３３８および他のＩ／Ｏ回路を含む。このため、Ｉ／Ｏサブシステム１１５は、利用しているＩ／Ｏプロトコル毎に少なくとも一の集積化Ｉ／Ｏアダプタ３３８を含むとしてよい。Ｉ／Ｏサブシステム１１５は、プロセッサ３１０と同じチップ上にあるとしてもよいし、または、別のチップ上にあるとしてもよいし、および／または、プロセッサ３１０に接続されているパッケージにあってもよい。
【００６７】
Ｉ／Ｏアダプタ３３８は、プロセッサ３１０内で利用されているホスト通信プロトコルを、特定のＩ／Ｏデバイスに準拠したプロトコルに変換する。フラッシュ／磁気／光大容量記憶装置１５２Ｂについて、Ｉ／Ｏアダプタ３３８が変換するプロトコルの一部としては、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）Ｅｘｐｒｅｓｓ（ＰＣＩ−Ｅ）、３．０、ＵＳＢ、３．０、ＳＡＴＡ、３．０、小型計算機システムインターフェース（ＳＣＳＩ）、Ｕｌｔｒａ−６４０、および、米国電気電子学会（ＩＥＥＥ）１３９４「ファイアワイヤ」等がある。ＢＩＯＳフラッシュ３６２について、Ｉ／Ｏアダプタ３３８が変換するプロトコルの一部としては、シリアルペリフェラルインターフェース（ＳＰＩ）、マイクロワイヤ等がある。また、１以上のワイヤレスプロトコルＩ／Ｏアダプタを設けるとしてよい。ワイヤレスプロトコルの例としては、いくつかあるが、ＩＥＥＥ８０２．１５およびＢｌｕｅｔｏｏｔｈ（登録商標）４．０等のパーソナルエリアネットワークで利用されるもの、ＩＥＥＥ８０２．１１ベースのワイヤレスプロトコル等のワイヤレスローカルエリアネットワーク、および、セルラー方式プロトコルが挙げられる。
【００６８】
一部の実施形態によると、Ｉ／Ｏサブシステム１１５は、システム永続状態、例えば、セキュアデータ、暗号鍵、プラットフォーム構成情報等へのアクセスを制御するべくＴＰＭ制御３３４に結合されている。一実施形態によると、これらのシステム永続状態は、ＴＭＰ  ＮＶＲＡＭ１７３に格納されており、ＮＶＲＡＭコントローラ３３２を介してアクセスされる。
【００６９】
一実施形態によると、ＴＰＭ３３４は、暗号機能を持つセキュアマイクロコントローラである。ＴＰＭ３３４は、複数の信頼性に関する機能を持つ。例えば、ＴＰＭで保護されているデータは同一ＴＰＭについてのみ利用可能であることを保証するＳＥＡＬ機能がある。ＴＰＭ３３４は、暗号機能を利用してデータおよび鍵（例えば、秘密）を保護することができる。一実施形態によると、ＴＰＭ３３４は、一意的で秘密のＲＳＡ鍵を持つ。ＲＳＡ鍵によって、ＴＰＭ３３４は、ハードウェアデバイスおよびプラットフォームを認証することができるようになる。例えば、ＴＰＭ３３４は、コンピュータシステム３００に格納されているデータへのアクセスを求めるシステムが、期待されるシステムであることを検証することができる。ＴＰＭ３３４はさらに、プラットフォーム（例えば、コンピュータシステム３００）のインテグリティを報告することが可能である。これによって、外部リソース（例えば、ネットワーク上のサーバ）がプラットフォームを信頼できるか否かを判断できるようになるが、ユーザによるプラットフォームへのアクセスを防止はしない。
【００７０】
一部の実施形態によると、Ｉ／Ｏサブシステム１１５はさらに、システム管理者にコンピュータシステム３００の監視、メインテナンス、更新、アップグレードおよび修復を実行させるマイクロプロセッサであるマネジメントエンジン（ＭＥ）３３５を含む。一実施形態によると、システム管理者は、ネットワーク３３６を介してＭＥ３３５を用いてデコードテーブル３３３のコンテンツを編集することでコンピュータシステム３００をリモートに設定可能である。
【００７１】
説明の便宜上、本願では、ＮＶＲＡＭ１４２をＰＣＭＳデバイスと呼ぶ場合もあるとしてよい。ＰＣＭＳデバイスは、多層構造の（垂直方向に積層した）不揮発性ＰＣＭセルアレイを含み、消費電力が少なく、ビットレベルで変形可能である。このように、ＮＶＲＡＭデバイスおよびＰＣＭＳデバイスという用語は、以下の説明で同義語として用いられるとしてよい。しかし、上述したように、ＰＣＭＳ以外の複数の異なる技術もＮＶＲＡＭ１４２に利用され得ることに留意されたい。
【００７２】
コンピュータシステムは、当該コンピュータシステムのプロセッサが上述したプロセッサ３１０のコンポーネントの全てを持たないとしても、または、プロセッサ３１０よりも多くのコンポーネントを持つとしても、ＮＶＲＡＭ１４２をシステムメモリ、大容量記憶装置、ファームウェアメモリおよび／または他のメモリおよび記憶装置として利用することができると理解されたい。
【００７３】
図３に示す特定の実施形態では、ＭＳＣコントローラ１２４およびＮＶＲＡＭコントローラ３３２は、プロセッサ３１０と同じダイまたはパッケージ（ＣＰＵパッケージと呼ばれる）上に配置されている。他の実施形態では、ＭＳＣコントローラ１２４および／またはＮＶＲＡＭコントローラ３３２は、ダイまたはＣＰＵパッケージ外に配置されて、プロセッサ３１０またはＣＰＵパッケージにバスを介して結合されるとしてよい。バスの例としては、メモリバス（ＤＤＲバス（例えば、ＤＤＲ３、ＤＤＲ４等））、ＰＣＩ  Ｅｘｐｒｅｓｓバス、デスクトップ管理インターフェース（ＤＭＩ）バス、または、任意のその他の種類のバス等が挙げられる。
【００７４】
トランザクションマルチスレッドソフトウェアおよび非トランザクションソフトウェアに利用されるファー側メモリ
プロセッサ設計者は現在、マルチスレッドソフトウェアの「トランザクション」サポートを可能とする改良された命令セットを設計している。従来の（つまり、非トランザクション）マルチスレッドソフトウェアでは、プログラムはデータを「ロック」で保護する。どの時点においても１つのスレッドのみがロックを保持することができる。このため、他のスレッドはこのデータを同時に修正できないようにすることができる。これは悲観的になる傾向がある。ロックを持つスレッドは、希望する処理がデータの読み出しのみであっても、または、衝突が発生しない更新を行う場合であっても、どのスレッドでも当該ロックを取得しないように阻止する。
【００７５】
トランザクションサポートによって、図４を参照すると、スレッドはデータを操作する際にロックを取得する必要がなくなる。スレッドは、トランザクションを開始させ４０１、変更を行い４０２、完了すれば、トランザクションをコミットする４０３か、または、トランザクションがコミットできない場合には、ステップ４０２で行った変更をロールバックする４０４。トランザクションの経過中にスレッドが変更を行っている間４０２、図５を参照すると、プロセッサ５１０内の特別ハードウェア５７０は、スレッドの読み書き先である一部／全てのキャッシュ５１３、および、ニアメモリ５５０Ｂの位置の記録を取る。
【００７６】
通常、トランザクションで実行される一部／全てのデータ書き込みは、単にキャッシュがシステムの最新の変更を保持するので、キャッシュ内に存在する。つまり、トランザクションがデータアイテムを変更する必要がある場合、当該データアイテムは、キャッシュに既に存在していなければより深い記憶装置から呼び出され、変更され、その後キャッシュに書き込まれる。このように、トランザクションが実行するデータ変更の量は各データアドレスに利用可能なキャッシュサイズ未満であることに限定されると仮定すると、トランザクションが行う全ての変更はキャッシュ内に存在する。プロセッサ内のハードウェアは、トランザクションのコミットまでは、これらの変更後のデータアイテムの永続性へのライトバックを阻止する。第１の実施形態によると、上述したキャッシュは、プロセッサキャッシュおよびニアメモリを含む。第２の実施形態によると、上述したキャッシュは、プロセッサキャッシュのみを含む（つまり、ニアメモリは含まれない）。簡単に説明するべく、本文献の以下の部分では、主に第１の実施形態を説明する。
【００７７】
ある実施形態によると、プロセッサ５１０内の各ＣＰＵコア５０１−５０４のための特別ハードウェア５７０のインスタンス、および／または、プロセッサ５１０内の各ＣＰＵコア内の各命令実行パイプラインがある。ここで、トランザクションスレッドを実行しているコア／パイプラインの特別ハードウェア５７０のインスタンス（例えば、論理回路で実行するもの）は、上述したように、トランザクションのキャッシュおよびニアメモリの読み書きの記録を取る。尚、プロセッサ５１０内の一部のキャッシュレベル（例えば、ラストレベルキャッシュ）は、複数のコアに対してサービスを提供するとしてよい。一方で、プロセッサ５１０内の他のキャッシュレベル（例えば、コアのＬ１キャッシュ）は、一のコアのみに対してサービスを提供するとしてよい。
【００７８】
トランザクションをコミットする用意が整うと、特別ハードウェア５７０は、トランザクションが実行されていた間に、他のスレッドがこれらの同じ位置に対して変更または読み出しを行っていないことを確認する。この条件が満たされれば、トランザクションはコミットされ４０３、スレッドは続く。ここで、「変更をコミットする」とは、変更が永続性記憶装置に書き込まれたことを意味する。この条件が満たされない場合、トランザクションは停止され、全ての変更を元に戻す４０４。一実施形態において、変更を「元に戻す」ためには、トランザクションによって変更が実行される前のデータの状態を表すフレッシュデータを永続性記憶装置から呼び出してキャッシュに再度書き込むか、または、変更されたキャッシュラインを無効化する。スレッドはこの後、当該処理を再試行するとしてもよいし、別のストラテジ（例えば、ロックを利用するもの）を試すとしてもよいし、または、完全に諦めるとしてもよい。
【００７９】
ある実施例によると、ＮＶＲＡＭのファーメモリ５５１Ｂは、トランザクションがコミットされるとコミット後のデータ変更が格納される「永続性」記憶装置に対応する。一方で、ニアメモリ５５０Ｂおよびニアメモリより上方の一部／全てのキャッシュ５１３は、トランザクションがコミットされる前にスレッドが変更を行うことができるキャッシュ位置に対応する。
【００８０】
しかし、さまざまな事例において、永続性記憶装置の概念は、技術的に上述したトランザクションの定義を満たさない他の種類のソフトウェアプロセスに拡張され得る。永続性記憶装置は、さまざまな異なる情報処理パラダイムによると、何らかのプロセスまたはデータ構造の形式的に認められた状態を記録に反映する（そして、このために、例えば、グローバルに可視である）書き込み可能データ記憶装置であってよく、および／または、長期間（例えば、コンピューティングシステムの複数のオン／オフサイクル）にわたって必要とされることをある程度期待するとしてよい。尚、多くのこのようなソフトウェアプロセスはさらに、ＮＶＲＡＭファーメモリ５５１Ｂで永続性記憶装置を実施することを選択するとしてよい。
【００８１】
永続性記憶装置の存在を認識する非トランザクションソフトウェアプロセスについて、ソフトウェアは、永続性が必要とされる修正後のデータを、後に変更を行う前に、キャッシュからフラッシュして永続性記憶装置に格納することを保証する予防策を組み込んでいる必要がある。ここで、例えば、データアイテムに変更が行われ、ソフトウェアが当該変化を永続性記憶装置に反映する必要があると見なす場合、ソフトウェアは、キャッシュラインフラッシュ命令（例えば、ＣＬＦＬＵＳＨ）を挿入し、その後に、メモリフェンス命令（例えば、ＭＦＥＮＣＥ）を挿入する。キャッシュラインフラッシュ命令は、新しく変更されたデータを、永続性記憶装置５５１Ｂに書き戻させる。メモリフェンス命令は、データが永続性記憶装置５５１Ｂに書き込まれるまで、同じスレッドの他の処理が当該データにアクセスしないように阻止する。
【００８２】
より複雑な方法によると、スレッドのソフトウェアは、キャッシュ内のどのデータアイテムが永続性記憶装置５５１Ｂに永続的に保存される必要があるかを監視するための複雑なブックキープタスクを含む。ここで、例えば、特定のデータアイテムが、スレッドのソフトウェアによって、永続性を必要としていると認められるとしてよく、ブックキープソフトウェアは、これらのデータアイテムを監視し、コード実行中の適切なタイミングにおいて、適切なキャッシュラインおよびメモリフェンス命令を実行する。
【００８３】
図６は、図５の特別ハードウェア５７０が、図４を参照しつつ上述したようにトランザクションのロールバックをサポートするだけでなく、さらに直前に説明したソフトウェアブックキープ機能の必要を無くすために用いられる改善された方法を示す図である。
【００８４】
図６から分かるように、ソフトウェアは、コードの永続領域を定義するようにのみ求められる。この定義は、ＰＢＥＧＩＮ命令６０１によって永続領域の先頭で示されており、永続領域の終端でＰＥＮＤ命令６０４によって示されている。ＰＢＥＧＩＮ命令は実質的に、特別ハードウェア５７０の機能を「オンにする」６０２。ＰＢＥＧＩＮ命令の後コードが実行されている間、特別ハードウェア５７０は、どのキャッシュラインを変更したかを監視する６０３。ＰＥＮＤ命令６０４が実行されると、特別ハードウェア５７０が特定したキャッシュラインを、永続性５５１Ｂに対してフラッシュさせ６０５、特別ハードウェア５７０をオフにする。ＰＥＮＤ命令の後は、全てのキャッシュラインがフラッシュされて、メモリフェンスを実施するまで、他の命令の実行は許可されていない。
【００８５】
このように、特別ハードウェア５７０は、トランザクション処理においてだけでなく、非トランザクション処理においても、キャッシュアクセスを監視する。図５は、特別ハードウェア５７０に結合されているコア内の命令実行パイプライン５８０を表している。ここにおいて、この結合は、ＰＢＥＧＩＮ命令に応じて特別ハードウェア５７０をオンにして、ＰＥＮＤ命令に応じ特別ハードウェアをオフにするために用いられる。命令実行パイプラインはさらに、キャッシュのフラッシュが完了するまで、次の命令の発行を阻止するロジックを持つように設計される。命令実行パイプラインおよび特別ハードウェアには、キャッシュフラッシュロジックがさらに結合されるが、分かりやすいように図示していない。キャッシュフラッシュロジックは、ＰＥＮＤ命令によって動作するようトリガされ、どのキャッシュラインをフラッシュする必要があるか理解するべく特別ハードウェア５７０を参照する。図５の他の特徴は、図３を参照しつつ上述した通りである。
【００８６】
図７は、特別ハードウェアの両方の機能を示す統合方法を示す図である。トランザクション処理が開始しない場合、または、ＰＢＥＧＩＮ命令が実行されない場合、特別ハードウェア５５１Ｂはアイドル状態を維持する７０１。
【００８７】
トランザクション処理が開始されると、特別ハードウェア５７０は、イネーブルされて、トランザクションによってどのキャッシュラインが修正されたのかの監視を開始する７０２。トランザクションが完了すると、プロセッサ内のトランザクションハードウェア５７１は、任意のその他のトランザクションがこれらの同じキャッシュライン７０３との間で読み書きを行ったかどうかを確認する。そのようなトランザクションが無い場合には、変更をファーメモリＮＶＲＡＭ５５１Ｂにコミットする７０４。有る場合には、キャッシュラインを、永続ＮＶＲＡＭ５５１Ｂからのコンテンツで置換するか、または、無効化する７０５。
【００８８】
ＰＢＥＧＩＮ命令が実行されると、特別ハードウェア５７０は、イネーブルされて、どのキャッシュラインがソフトウェアプロセスによって修正されたかの監視を始める７０６。ＰＥＮＤ命令が実行されると、全ての修正されたキャッシュデータを永続性ＮＶＲＡＭ５５１Ｂに書き戻して、書き戻しが完了するまで他の命令は実行が禁止される７０７。
【００８９】
図８は、コンパイラが実行するコンパイルプロセスを示す図である。図８から分かるように、コンパイルプロセスは、コードの一の領域の先頭を特定する８０１。この後は、コードが行ったデータ変更はいずれも、永続性記憶装置に永続的に保存される。８０１で特定されることに応じて、コンパイルコードはＰＢＥＧＩＮ命令をプログラムコードに挿入するか８０２、または、ＰＢＥＧＩＮ命令を挿入すべきコード内の位置を指し示す。コンパイルプロセスはさらに、コードの一の領域の先頭を特定する８０３。この後においては、ＰＥＮＤ命令が挿入される（または、挿入される予定である）。この領域におけるデータ変更は永続的に保存する必要はない。８０３でコードの第２の領域を特定することに応じて、コンパイルプロセスは、永続的に保存する必要がある最後のデータ変更の後であって、永続的に保存する必要がない最初のデータ変更の前に、ＰＥＮＤ命令をプログラムコードに挿入する（または、ＰＥＮＤ命令を挿入すべき箇所を指し示す）。
【００９０】
上述した説明で教示するプロセスは、機械（例えば、「仮想マシン」、半導体チップ上に配置されている汎用ＣＰＵプロセッサもしくはプロセッシングコア、または、半導体チップ上に配置されている特定用途向けプロセッサ）に特定の機能を実行させる機械実行可能命令等のプログラムコードで実行されるとしてよい。これに代えて、これらの機能は、機能を実行するためのハードワイヤードロジックを含む特定のハードウェアコンポーネントによって、または、プログラミングされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントの任意の組み合わせで実行されるとしてもよい。
【００９１】
格納媒体を用いてプログラムコードを格納するとしてよい。プログラムコードを格納する格納媒体は、これらに限定されないが、１以上のメモリ（例えば、１以上のフラッシュメモリ、ランダムアクセスメモリ（スタティック、ダイナミック等））、光ディスク、ＣＤ−ＲＯＭ、ＤＶＤ  ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カードまたは光カードまたは電子命令の格納に適した他の種類の機械可読媒体として、具現化されるとしてよい。プログラムコードはさらに、伝搬媒体（例えば、通信リンクを介して（例えば、ネットワーク接続））において具現化されるデータ信号を用いて、リモートコンピュータ（例えば、サーバ）から要求元コンピュータ（例えば、クライアント）にダウンロードされるとしてよい。
【００９２】
上記の説明において、本発明は具体的な実施形態例に基づいて説明してきた。しかし、特許請求の範囲に記載されているように本発明の広義の意図および範囲から逸脱することなくさまざまな変形および変更を行うことは明らかである。明細書および図面は、これにしたがって、限定するものではなく説明のためであると見なされたい。
本実施形態の例を下記の各項目として示す。
［項目１］
不揮発性ランダムアクセスメモリに対するインターフェースと、
論理回路と
を備え、
前記論理回路は、
前記不揮発性ランダムアクセスメモリに永続的に保存すべき、トランザクションによって修正されたキャッシュラインを特定し、
前記不揮発性ランダムアクセスメモリに永続的に保存すべき、ソフトウェアプロセスによって修正されたキャッシュラインを特定する、プロセッサ。
［項目２］
前記不揮発性ランダムアクセスメモリは、相変化メモリである項目１に記載のプロセッサ。
［項目３］
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチである項目２に記載のプロセッサ。
［項目４］
前記ソフトウェアプロセスの開始点を特定する前記ソフトウェアプロセスの第１の命令を実行し、前記ソフトウェアプロセスの終了点を特定する前記ソフトウェアプロセスの第２の命令を実行する命令実行パイプラインをさらに備え、
前記開始点と前記終了点との間で前記ソフトウェアプロセスが行ったデータ変更は、前記不揮発性ランダムアクセスメモリに永続的に保存され、
前記命令実行パイプラインは、前記論理回路に結合されており、前記第１の命令に応じて前記論理回路をイネーブルし、前記第２の命令に応じて前記論理回路をディセーブルする項目１から３のいずれか一項に記載のプロセッサ。
［項目５］
前記命令実行パイプラインおよび前記論理回路に結合されているキャッシュフラッシュ回路をさらに備える項目４に記載のプロセッサ。
［項目６］
前記命令実行パイプラインは、前記キャッシュフラッシュ回路が、前記論理回路が特定した前記キャッシュラインのフラッシュを完了するまでは、更なる命令の実行を阻止する項目５に記載のプロセッサ。
［項目７］
プロセッサでトランザクションを実行する段階と、
ソフトウェアプロセスの一の領域の先頭および終端を指し示す前記ソフトウェアプロセスを前記プロセッサで実行する段階と
を備え、
前記トランザクションを実行する段階は、
１以上のキャッシュレベルにおけるデータ変更を実行する段階と、
前記データ変更が前記１以上のキャッシュレベルのどの箇所に存在するのかを監視する段階と、
前記データ変更は不揮発性ランダムアクセスメモリに永続的に保存されるか否かを判断する段階と、
前記トランザクションによって実行された前記データ変更を前記不揮発性ランダムアクセスメモリに永続的に保存する段階と
を有し、
前記ソフトウェアプロセスが実行したデータ変更は永続的に保存され、前記先頭と前記終端との間において前記ソフトウェアプロセスが実行した前記データ変更を監視し、前記一の領域の前記終端に到達すると、前記ソフトウェアプロセスが実行した前記データ変更を前記不揮発性ランダムアクセスメモリに永続的に保存する方法。
［項目８］
前記先頭は第１の命令で指し示され、前記終端は第２の命令で指し示される項目７に記載の方法。
［項目９］
前記不揮発性ランダムアクセスメモリは、相変化メモリで実現される項目７または８に記載の方法。
［項目１０］
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチで実現される項目９に記載の方法。
［項目１１］
前記第１の命令に応じて前記プロセッサのハードウェアをイネーブルする段階をさらに備える項目８に記載の方法。
［項目１２］
前記第２の命令に応じて前記プロセッサのハードウェアをディセーブルする段階をさらに備える項目８または１１に記載の方法。
［項目１３］
コンピュータに、
データ変更を永続性記憶装置に永続的に保存する、コードの一の領域を特定する手順と、
前記一の領域の先頭を第１の命令で指し示し、前記一の領域の終端を第２の命令で指し示す手順と
を実行させるプログラム。
［項目１４］
前記第１の命令によって、プロセッサは、前記データ変更を監視するハードウェアをイネーブルする項目１３に記載のプログラム。
［項目１５］
前記第２の命令によって、プロセッサは、前記データ変更を監視するハードウェアをディセーブルする項目１３または１４に記載のプログラム。
［項目１６］
前記第２の命令によって、前記データ変更を１以上のキャッシュレベルからフラッシュさせて、前記永続性記憶装置に格納させる
項目１３から１５のいずれか一項に記載のプログラム。
［項目１７］
前記第２の命令は、前記データ変更が１以上のキャッシュレベルからのフラッシュおよび前記永続性記憶装置への格納を完了するまでは、更なる命令の実行を阻止する項目１３から１６のいずれか一項に記載のプログラム。
［項目１８］
前記永続性記憶装置は、不揮発性ランダムアクセスメモリである項目１３から１７のいずれか一項に記載のプログラム。
［項目１９］
前記永続性記憶装置は、相変化メモリである項目１３から１８のいずれか一項に記載のプログラム。
［項目２０］
前記相変化メモリは、相変化メモリおよびスイッチである項目１９に記載のプログラム。
また、本実施形態の他の例を下記の各項目として示す。
［項目１］
不揮発性ランダムアクセスメモリに対するインターフェースと、
論理回路と
を備え、
前記論理回路は、
前記不揮発性ランダムアクセスメモリに書込を行う非トランザクション処理の開始と、キャッシュラインの変更を監視するハードウェアをイネーブルするトランザクション処理の開始との何れかを検知し、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記非トランザクション処理による修正のために、前記不揮発性ランダムアクセスメモリ内の書き込まれたキャッシュラインを監視して、前記非トランザクション処理の終了を検知した場合に、修正されたキャッシュラインを前記不揮発性ランダムアクセスメモリにライトバックし、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記トランザクション処理で書き込まれたキャッシュラインを監視し、前記トランザクション処理の終了を検知した場合にコミットと、ロールバックとの何れかを行う、プロセッサ。
［項目２］
前記不揮発性ランダムアクセスメモリは、相変化メモリ（ＰＣＭ）である項目１に記載のプロセッサ。
［項目３］
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチ（ＰＣＭＳ）である項目２に記載のプロセッサ。
［項目４］
前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記開始を特定する第１の命令を実行し、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了を特定する第２の命令を実行する命令実行パイプラインをさらに備える項目１から３のいずれか一項に記載のプロセッサ。
［項目５］
前記命令実行パイプラインおよび前記論理回路に結合されているキャッシュフラッシュ回路をさらに備える項目４に記載のプロセッサ。
［項目６］
前記命令実行パイプラインは、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了までは、次の命令の実行を行わない項目５に記載のプロセッサ。
［項目７］
プロセッサを用いて、不揮発性ランダムアクセスメモリに書込を行う非トランザクション処理の開始と、キャッシュラインの変更を監視する前記プロセッサのハードウェアをイネーブルするトランザクション処理の開始との何れかを検知する段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記非トランザクション処理による修正のために、前記不揮発性ランダムアクセスメモリ内の書き込まれたキャッシュラインを監視して、前記非トランザクション処理の終了を検知した場合に、修正されたキャッシュラインを前記不揮発性ランダムアクセスメモリにライトバックする段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記トランザクション処理で書き込まれたキャッシュラインを監視し、前記トランザクション処理の終了を検知した場合にコミットと、ロールバックとの何れかを行う段階と
を備える方法。
［項目８］
第１の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記開始を前記プロセッサが特定することを引き起こし、
第２の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了を前記プロセッサが特定することを引き起こす項目７に記載の方法。
［項目９］
前記不揮発性ランダムアクセスメモリは、相変化メモリ（ＰＣＭ）で実現される項目７または８に記載の方法。
［項目１０］
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチ（ＰＣＭＳ）で実現される項目９に記載の方法。
［項目１１］
前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了までは、次の命令を実行しない段階をさらに備える項目７から１０のいずれか一項に記載の方法。
［項目１２］
前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了と、前記トランザクション処理の前記終了との何れかに応じて前記ハードウェアをディセーブルする段階をさらに備える項目７から１１のいずれか一項に記載の方法。
［項目１３］
コンピュータシステムに、
プロセッサを用いて、不揮発性ランダムアクセスメモリに書込を行う非トランザクション処理の開始と、キャッシュラインの変更を監視する前記プロセッサのハードウェアをイネーブルするトランザクション処理の開始との何れかを検知する段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記非トランザクション処理による修正のために、前記不揮発性ランダムアクセスメモリ内の書き込まれたキャッシュラインを監視して、前記非トランザクション処理の終了を検知した場合に、修正されたキャッシュラインを前記不揮発性ランダムアクセスメモリにライトバックする段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記トランザクション処理で書き込まれたキャッシュラインを監視し、前記トランザクション処理の終了を検知した場合にコミットと、ロールバックとの何れかを行う段階と
を備える方法を実行させるプログラム。
［項目１４］
第１の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記開始を前記プロセッサに特定させる項目１３に記載のプログラム。
［項目１５］
第２の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了を前記プロセッサに特定させる項目１３または１４に記載のプログラム。
［項目１６］
前記第２の命令は、前記修正されたキャッシュラインを１または複数のキャッシュレベルからフラッシュさせて、前記不揮発性ランダムアクセスメモリに格納させる
項目１５に記載のプログラム。
［項目１７］
前記方法は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了までは、次の命令を実行しない段階をさらに備える項目１３から１６のいずれか一項に記載のプログラム。
［項目１８］
前記プロセッサは、前記キャッシュラインの変更を監視する前記ハードウェアをそれぞれ含む複数のコアを有する項目１３から１７のいずれか一項に記載のプログラム。
［項目１９］
前記不揮発性ランダムアクセスメモリは、相変化メモリ（ＰＣＭ）である項目１３から１８のいずれか一項に記載のプログラム。
［項目２０］
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチ（ＰＣＭＳ）である項目１９に記載のプログラム。
［項目２１］
項目１３から２０のいずれか一項に記載のプログラムを格納するコンピュータ可読記録媒体。
【図１】
0006371431.tif 000002
【図２】
0006371431.tif 000003
【図３】
0006371431.tif 000004
【図４】
0006371431.tif 000005
【図５】
0006371431.tif 000006
【図６】
0006371431.tif 000007
【図７】
0006371431.tif 000008
【図８】
0006371431.tif 000009