特許第6121010号(P6121010)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許6121010永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
<>
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000002
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000003
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000004
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000005
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000006
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000007
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000008
  • 特許6121010-永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6121010
(24)【登録日】2017年4月7日
(45)【発行日】2017年4月26日
(54)【発明の名称】永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
(51)【国際特許分類】
   G06F 12/08 20160101AFI20170417BHJP
   G06F 12/0804 20160101ALI20170417BHJP
   G06F 9/46 20060101ALI20170417BHJP
【FI】
   G06F12/08 519E
   G06F12/08 501C
   G06F12/08 551B
   G06F9/46 430
【請求項の数】21
【全頁数】27
(21)【出願番号】特願2016-25122(P2016-25122)
(22)【出願日】2016年2月12日
(62)【分割の表示】特願2014-52025(P2014-52025)の分割
【原出願日】2014年3月14日
(65)【公開番号】特開2016-129041(P2016-129041A)
(43)【公開日】2016年7月14日
【審査請求日】2016年2月15日
(31)【優先権主張番号】13/843,760
(32)【優先日】2013年3月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ウィルハルム、トーマス
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 特表2009−537053(JP,A)
【文献】 国際公開第2008/005687(WO,A2)
【文献】 米国特許出願公開第2011/0208921(US,A1)
【文献】 米国特許出願公開第2010/0332807(US,A1)
【文献】 米国特許出願公開第2013/0013899(US,A1)
【文献】 国際公開第2009/122694(WO,A1)
【文献】 米国特許出願公開第2011/0004731(US,A1)
【文献】 特開平11−096062(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08 − 12/0804
G06F 9/46
(57)【特許請求の範囲】
【請求項1】
不揮発性ランダムアクセスメモリに対するインターフェースと、
論理回路と
を備え、
前記論理回路は、
前記不揮発性ランダムアクセスメモリに書込を行う非トランザクション処理の開始と、キャッシュラインの変更を監視するハードウェアをイネーブルするトランザクション処理の開始との何れかを検知し、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記非トランザクション処理による修正のために、前記不揮発性ランダムアクセスメモリ内の書き込まれたキャッシュラインを監視して、前記非トランザクション処理の終了を検知した場合に、修正されたキャッシュラインを前記不揮発性ランダムアクセスメモリにライトバックし、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記トランザクション処理で書き込まれたキャッシュラインを監視し、前記トランザクション処理の終了を検知した場合にコミットと、ロールバックとの何れかを行う、プロセッサ。
【請求項2】
前記不揮発性ランダムアクセスメモリは、相変化メモリ(PCM)である請求項1に記載のプロセッサ。
【請求項3】
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチ(PCMS)である請求項2に記載のプロセッサ。
【請求項4】
前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記開始を特定する第1の命令を実行し、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了を特定する第2の命令を実行する命令実行パイプラインをさらに備える請求項1から3のいずれか一項に記載のプロセッサ。
【請求項5】
前記命令実行パイプラインおよび前記論理回路に結合されているキャッシュフラッシュ回路をさらに備える請求項4に記載のプロセッサ。
【請求項6】
前記命令実行パイプラインは、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了までは、次の命令の実行を行わない請求項5に記載のプロセッサ。
【請求項7】
プロセッサを用いて、不揮発性ランダムアクセスメモリに書込を行う非トランザクション処理の開始と、キャッシュラインの変更を監視する前記プロセッサのハードウェアをイネーブルするトランザクション処理の開始との何れかを検知する段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記非トランザクション処理による修正のために、前記不揮発性ランダムアクセスメモリ内の書き込まれたキャッシュラインを監視して、前記非トランザクション処理の終了を検知した場合に、修正されたキャッシュラインを前記不揮発性ランダムアクセスメモリにライトバックする段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記トランザクション処理で書き込まれたキャッシュラインを監視し、前記トランザクション処理の終了を検知した場合にコミットと、ロールバックとの何れかを行う段階と
を備え方法。
【請求項8】
第1の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記開始を前記プロセッサが特定することを引き起こし、
第2の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了を前記プロセッサが特定することを引き起こす請求項7に記載の方法。
【請求項9】
前記不揮発性ランダムアクセスメモリは、相変化メモリ(PCM)で実現される請求項7または8に記載の方法。
【請求項10】
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチ(PCMS)で実現される請求項9に記載の方法。
【請求項11】
前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了までは、次の命令を実行しない段階をさらに備える請求項7から10のいずれか一項に記載の方法。
【請求項12】
前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了と、前記トランザクション処理の前記終了との何れかに応じて前記ハードウェアをディセーブルする段階をさらに備える請求項7から11のいずれか一項に記載の方法。
【請求項13】
コンピュータシステムに、
プロセッサを用いて、不揮発性ランダムアクセスメモリに書込を行う非トランザクション処理の開始と、キャッシュラインの変更を監視する前記プロセッサのハードウェアをイネーブルするトランザクション処理の開始との何れかを検知する段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記非トランザクション処理による修正のために、前記不揮発性ランダムアクセスメモリ内の書き込まれたキャッシュラインを監視して、前記非トランザクション処理の終了を検知した場合に、修正されたキャッシュラインを前記不揮発性ランダムアクセスメモリにライトバックする段階と、
前記キャッシュラインの変更を監視する前記ハードウェアを用いて、前記トランザクション処理で書き込まれたキャッシュラインを監視し、前記トランザクション処理の終了を検知した場合にコミットと、ロールバックとの何れかを行う段階と
を備える方法を実行させるプログラム。
【請求項14】
第1の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記開始を前記プロセッサに特定させる請求項13に記載のプログラム。
【請求項15】
第2の命令の実行は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了を前記プロセッサに特定させる請求項13または14に記載のプログラム。
【請求項16】
前記第2の命令は、前記修正されたキャッシュラインを1または複数のキャッシュレベルからフラッシュさせて、前記不揮発性ランダムアクセスメモリに格納させる
請求項15に記載のプログラム。
【請求項17】
前記方法は、前記不揮発性ランダムアクセスメモリに書込を行う前記非トランザクション処理の前記終了までは、次の命令を実行しない段階をさらに備える請求項13から16のいずれか一項に記載のプログラム。
【請求項18】
前記プロセッサは、前記キャッシュラインの変更を監視する前記ハードウェアをそれぞれ含む複数のコアを有する請求項13から17のいずれか一項に記載のプログラム。
【請求項19】
前記不揮発性ランダムアクセスメモリは、相変化メモリ(PCM)である請求項13から18のいずれか一項に記載のプログラム。
【請求項20】
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチ(PCMS)である請求項19に記載のプログラム。
【請求項21】
請求項13から20のいずれか一項に記載のプログラムを格納するコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概して、コンピュータシステムの分野に関する。本発明は具体的には、不揮発性メモリティアを含むマルチレベルメモリヒエラルキーを実現する装置および方法に関する。
【背景技術】
【0002】
<A.現在のメモリおよびストレージの構成>
今日のコンピュータ分野でのイノベーションが限定されてしまう要因の一つとして、メモリおよび記憶装置に関する技術が挙げられる。従来のコンピュータシステムでは、システムメモリ(メインメモリ、主メモリ、実行可能メモリとも呼ばれる)は通常、ダイナミックランダムアクセスメモリ(DRAM)によって実現される。DRAMベースのメモリは、メモリの読み書きが発生していない場合でも電力を消費する。これは、内部キャパシタを常に充電する必要があるためである。DRAMベースのメモリは、揮発性である。つまり、DRAMメモリに格納されているデータは、電力が無くなると失われてしまう。また、従来のコンピュータシステムは、性能を改善するべく複数のレベルにおけるキャッシュを利用する。キャッシュは、プロセッサとシステムメモリとの間に配置され、システムメモリから対応するよりも高速にメモリアクセス要求に対応する高速メモリである。このようなキャッシュは通常、スタティックランダムアクセスメモリ(SRAM)で実現される。キャッシュ管理プロトコルは、最も高い頻度でアクセスされるデータおよび命令を複数のキャッシュレベルのうち1つに格納するために用いられるとしてよく、これによって、メモリアクセス処理の数を少なくし、性能を向上させる。
【0003】
大容量記憶装置(二次記憶装置またはディスク記憶装置とも呼ばれる)に関して、従来の大容量記憶装置は通常、磁気媒体(例えば、ハードディスクドライブ)、光学媒体(例えば、コンパクトディスク(CD)ドライブ、デジタルバーサティルディスク(DVD)等)、ホログラフィック媒体および/または大容量記憶フラッシュメモリ(例えば、ソリッドステートドライブ(SSD)、取り外し可能なフラッシュドライブ等)を含む。一般的に、これらの記憶装置は、さまざまなI/Oプロトコルを実現するさまざまなI/Oアダプタを介してプロセッサがアクセスするので、入出力(I/O)デバイスと見なされる。これらのI/OアダプタおよびI/Oプロトコルは、大量の電力を消費し、ダイ領域およびプラットフォームのフォームファクタに大きな影響を及ぼす可能性がある。ポータブル型またはモバイル型のデバイス(例えば、ラップトップ、ネットブック、タブレットコンピュータ、携帯情報端末(PDA)、ポータブルメディアプレーヤ、ポータブルゲームデバイス、デジタルカメラ、携帯電話、スマートフォン、フィーチャフォン等)は、無停電電源装置に接続されていない場合には電池寿命が限られており、通常は、アクティブ時およびアイドル時の電力バジェットを満たすべく低電力インターコネクトおよびI/Oコントローラを介してプロセッサに結合される取り外し可能な大容量記憶装置(例えば、エンベデッドマルチメディアカード(eMMC)、セキュアデジタル(SD)カード)を含むとしてよい。
【0004】
ファームウェアメモリ(ブートメモリ(BIOSフラッシュとしても知られている)等)に関して、従来のコンピュータシステムは通常、フラッシュメモリデバイスを利用して、読み出しは頻繁であるが書き込みはほとんど(または全く)無い永続的システム情報を格納する。例えば、ブートプロセス(ベーシックインプットアウトプットシステム(BIOS)イメージ)時にキーシステムコンポーネントを初期化するべくプロセッサが実行する初期命令は通常、フラッシュメモリデバイスに格納される。現在市販されているフラッシュメモリデバイスは一般的に、速度が限られている(例えば、50MHz)。この速度はさらに、読出プロトコルのオーバーヘッド(例えば、2.5MHz)のために落ちる。BIOS実行速度を高速化するべく、従来のプロセッサは概して、ブートプロセスのPEI(Pre−Extensible Firmware Interface)フェーズにおいてBIOSコードの一部分をキャッシュする。プロセッサキャッシュのサイズによって、PEIフェーズ(PEI BIOSコードとしても知られている)で利用されるBIOSコードのサイズが制限される。
【0005】
<B.相変化メモリ(PCM)および関連技術>
相変化メモリ(PCM)は、相変化ランダムアクセスメモリ(PRAMまたはPCRAM)、PCME、オボニックユニファイドメモリまたはカルコゲニドRAM(C−RAM)と呼ばれることもあり、カルコゲニドガラスの独特の挙動を利用する不揮発性コンピュータメモリの一種である。電流が流れることによって熱が発生する結果、カルコゲニドガラスは、結晶状態およびアモルファス状態という2つの状態の間で切り替えることができる。PCMの最近のバージョンは、追加で2つの別箇の状態を実現することができる。
【0006】
PCMは、フラッシュよりも高い性能を実現する。これは、PCMのメモリ素子のスイッチング速度がより高速であり、書き込み(各ビットを1または0に変更)は、最初にセルブロック全体を消去することなく実行可能であり、書き込みによる劣化は遅くなる(PCMデバイスの寿命は約1億回もの書込サイクルで、PCM劣化は、プログラミング、金属(およびその他の材料の)マイグレーション時の熱膨張、および、その他のメカニズムが原因)ためである)。
【図面の簡単な説明】
【0007】
以下に記載する説明および添付した図面に基づき、本発明の実施形態を説明する。図面は以下の通りである。
【0008】
図1】本発明の一実施形態に係るキャッシュおよびシステムメモリの構成を示す図である。
【0009】
図2】本発明の一実施形態で用いられるメモリおよび記憶装置のヒエラルキーを示す図である。
【0010】
図3】本発明の実施形態を実現し得るコンピュータシステムを示す図である。
【0011】
図4】トランザクションプロセスを示す図である。
【0012】
図5】キャッシュに対して為された変更を監視する特別ハードウェアを持つプロセッサを示す図である。
【0013】
図6】非トランザクションデータ変更を、永続性記憶装置に書き込むべく、図5の特別ハードウェアを利用するプロセスを示す図である。
【0014】
図7】永続性に対するトランザクションロールバックおよび非トランザクション書き込みによってサポートするべく図5の特別ハードウェアを用い得ることを示す統合プロセスを示す図である。
【0015】
図8】コンパイルプロセスを示す図である。
【発明を実施するための形態】
【0016】
以下に記載する説明では、本発明をより深く理解していただくべく、論理実装、オペコード、オペランド特定手段、リソースのパーティション化/共有/複製の実行、システムコンポーネントの種類および相関関係、ならびに、論理上のパーティション化/統合の選択肢等、数多く具体的且つ詳細な内容を記載している。しかし、当業者であれば、本発明はこのような具体的且つ詳細な内容を含むことなく実施し得るものと考えられたい。また、制御構造、ゲートレベル回路および完全ソフトウェア命令シーケンスは、本発明をあいまいにしないよう、詳細な説明を省略している。当業者であれば、記載する説明を基に、過度の実験を実施せずとも適切な機能を実現可能である。
【0017】
本明細書において「一実施形態」、「ある実施形態」、「実施形態例」等の表現は、説明している実施形態が特定の特徴、構造または特性を含むが、当該特定の特徴、構造または特性を全ての実施形態が必ずしも含むとは限らないことを意味する。さらに、このような表現は、同一の実施形態を必ずしも意味するものではない。さらに、特定の特徴、構造または特性がある実施形態に関連付けて説明される場合、明確に記載しているか否かに関わらず、当該特徴、構造または特性を他の実施形態に関連付けて実現することは当業者の知識の範囲内と考えられる。
【0018】
以下に記載する説明および請求項では、「結合」および「接続」という用語を用いる場合がある。これらの用語は同義語として用いているものではないと理解されたい。「結合」は、2以上の構成要素が、互いに直接に物理的または電気的に接触していてもよいし、していなくてもよいが、互いに協働またはやり取りを行うことを意味するために用いる。「接続」は、互いに結合されている2以上の構成要素の間で通信を確立させることを意味する場合に用いる。
【0019】
点線で囲ったブロックおよびカッコ内の単語(例えば、粗い破線、細かい破線、点線、点)は、本発明の実施形態に追加の特徴を与える任意の処理/コンポーネントを示すべく本明細書で用いられる場合がある。しかし、このような説明は、これらが唯一の選択肢またはオプション処理/コンポーネントであること、および/または、実線で囲ったブロックが特定の実施形態は任意ではないことを意味するものと解釈されるべきではない。
【0020】
<概論>
メモリの容量および性能に関する要件は、プロセッサコアの数が増加するにつれて、そして、仮想化等の新しい利用モデルの登場によって、増加の一途をたどっている。また、メモリの電力およびコストは、電子システム全体の電力およびコストに大きな割合を占めるようになっている。
【0021】
一部の実施形態は、性能要件および容量要件を複数のメモリ技術でインテリジェントに分割することによって上記の課題を解決する。この方法の焦点は、比較的小さく比較的高速のメモリ、例えば、DRAMで性能を実現する一方、システムメモリの大半は、はるかに高密度の不揮発性ランダムアクセスメモリ(NVRAM)を用いて実現することにある。後述する本発明の実施形態は、NVRAMを利用する場合のヒエラルキーメモリサブシステム編成を可能とするプラットフォーム構成を定義する。メモリヒエラルキーにおいてNVRAMを利用することでさらに、拡張ブート空間および大容量記憶装置の実現等、新しい利用方法が可能となる。
【0022】
図1は、本発明の実施形態に係るキャッシュおよびシステムメモリの構成を示す図である。具体的には、図1は、一群の内部プロセッサキャッシュ120と、ファー(far)メモリキャッシュとして動作する「ニア(near)メモリ」121と、「ファーメモリ」122とを備えるメモリヒエラルキーを示す図である。ニアメモリ121は、内部キャッシュ106および外部キャッシュ107−109の両方を含むとしてよい。本発明の一部の実施形態で「ファーメモリ」に利用され得る特定の種類のメモリとしては、不揮発性ランダムアクセスメモリ(「NVRAM」)が挙げられる。このため、NVRAMの概略について後述する。その後に、ファーメモリおよびニアメモリの概略について説明する
【0023】
<A.不揮発性ランダムアクセスメモリ(「NVRAM」)>
NVRAMとして多くの技術を選択することが可能である。例えば、PCM、相変化メモリおよびスイッチ(PCMS)(PCMSはPCMをより詳細に規定したもの)、バイトアドレッシング可能永続メモリ(BPRAM)、ストレージクラスメモリ(SCM)、ユニバーサルメモリ、Ge2Sb2Te5、プログラマブルメタライゼーションセル(PMC)、抵抗性メモリ(RRAM(登録商標))、RESET(アモルファス)セル、SET(結晶性)セル、PCME、オブシンスキ(Ovshinsky)メモリ、強誘電体メモリ(ポリマーメモリおよびポリ(N−ビニルカルバゾール)としても知られている)、強磁性メモリ(スピントロニクス(Spintronics)としても知られている)、SPRAM(スピン移動トルクRAM)、STRAM(スピントンネリングRAM)、磁気抵抗メモリ、磁気メモリ、磁気ランダムアクセスメモリ(MRAM))および半導体−酸化物−窒化物−酸化物−半導体(SONOS、誘電体メモリとしても知られている)がある。
【0024】
NVRAMは、以下の特徴を持つ。
1)ソリッドステートディスク(SSD)で用いられているフラッシュメモリと同様に、電力供給が無くなっても内容を維持し、揮発性であるSRAMおよびDRAMとは異なる。
2)SRAMおよびDRAM等の揮発性メモリより消費電力が少ない。
3)SRAMおよびDRAMと同様にランダムアクセス(ランダムにアドレッシングが可能、とも呼ばれる)である。
4)SSD内のFLASH(一度に「ブロック」単位でのみ書き換えおよび消去が実行され得る、NOR FLASHでは最小サイズが64キロバイト、NAND FLASHでは16キロバイト)より細かい粒度(例えば、バイトレベル)で書き換え可能および消去可能である。
5)システムメモリとして利用され、システムメモリアドレス空間の全てまたは一部分が割り当てられる。
6)アウトオブオーダ処理をサポートするべく識別子(ID)をサポートするプロトコルを用いるバスであって、システムメモリとしてNVRAMの動作をサポートするために十分細かい粒度(例えば、64バイトまたは128バイト等のキャッシュラインサイズ)でのアクセスを可能とするバスを介してプロセッサに結合可能、例えば、バスは、非アウトオブオーダメモリバスであってよい(例えば、DDR3、DDR4等のDDRバス)。別の例として、バスは、PCI Express(PCIE)バス、デスクトップ管理インターフェース(DMI)バス、または、アウトオブオーダプロトコルを利用し、ペイロードサイズが十分に小さい(例えば、64バイトまたは128バイト等のキャッシュラインサイズ)任意のその他の種類のバスであってよい。
7)以下のうち1以上である。
a)フラッシュ等の不揮発性メモリ/記憶装置技術よりも書込速度が速い。
b)読出速度が超高速(フラッシュよりも早く、DRAM読出速度に近いか、または、同等)である。
c)直接書込可能(SSDで利用されているフラッシュメモリのように、データを書き込む前に消去(1sで上書き)が必要になるのではない)である。
d)故障までの書込回数が増加(ブートROMおよびSSDで用いられるフラッシュよりも多い)する。
【0025】
上述したように、一度に一の「ブロック」全体を書き換えて消去する必要があるフラッシュメモリとは対照的に、任意の所定の実施例におけるNVRAMのアクセス粒度は、特定のメモリコントローラ、および、NVRAMが結合されている特定のメモリバスまたはその他の種類のバスに応じて決まるとしてよい。例えば、NVRAMがシステムメモリとして利用される一部の実施例によると、NVRAMは、本来は1バイトの粒度でアクセス可能であるが、メモリサブシステムがメモリにアクセスする際の粒度がキャッシュラインであるので、キャッシュライン(例えば、64バイトまたは128バイトのキャッシュライン)の粒度でアクセスされるとしてよい。このように、NVRAMは、メモリサブシステム内に設けられると、同一メモリサブシステムで用いられているDRAM(例えば、「ニアメモリ」)と同一の粒度でアクセスされるとしてよい。そうであるとしても、メモリコントローラおよびメモリバスまたはその他の種類のバスによるNVRAMへのアクセス粒度は、フラッシュが利用するブロックサイズ、および、I/Oサブシステムのコントローラおよびバスのアクセスサイズよりは小さい。
【0026】
NVRAMはさらに、特に、システムメモリ実施例等の多数の書込が発生する場合には、ファーメモリレベルのストレージセルが多数の書込アクセスを経ると摩耗し始めることに対処するべく、ウェアレベリングアルゴリズムを組み込むとしてよい。サイクルカウントが多いブロックはこのように摩耗する可能性が最も高いので、ウェアレベリングによって、高サイクルカウントのブロックのアドレスを低サイクルカウントのブロックのアドレスと交換することで、複数のファーメモリセルにわたって書き込みを拡散させる。尚、大半のアドレス交換は通常、ハードウェア、低レベルソフトウェア(例えば、低レベルドライバまたはオペレーティングシステム)、または、これら2つの組み合わせ)によって処理されるので、アプリケーションプログラムにトランスペアレントである。
【0027】
<B.ファーメモリ>
本発明の一部の実施形態のファーメモリ122は、NVRAMで実現されるが、任意の特定のメモリ技術には必ずしも限定されない。ファーメモリ122は、メモリ/記憶装置ヒエラルキーにおける特性および/または用途に関して、他の命令およびデータ用のメモリ/記憶装置技術とは区別され得る。例えば、ファーメモリ122は、以下のような相違点を持つ。
1)プロセッサコア101−104のそれぞれに専用のレベル0およびレベル1の内部プロセッサキャッシュ101a−b、102a−b、103a−b、および104a−bに、そして、複数のプロセッサコアが共有する低レベルキャッシュ(LLC)105に利用され得るスタティックランダムアクセスメモリ(SRAM)
2)プロセッサ100の内部にある(例えば、プロセッサ100と同じダイ上にある)キャッシュ106として構成されており、および/または、プロセッサの外部にある(例えば、プロセッサ100と同じパッケージまたは異なるパッケージ内)1以上のキャッシュ107−109として構成されているダイナミックランダムアクセスメモリ(DRAM)
3)大容量記憶装置として適用されるフラッシュメモリ/磁気ディスク/光ディスク(不図示)
4)ファームウェアメモリとして適用されるフラッシュメモリまたはその他のリードオンリーメモリ(ROM)等のメモリ(ブートROM、BIOSフラッシュおよび/またはTPMフラッシュと呼ぶ)(不図示)
【0028】
ファーメモリ122は、命令およびデータの記憶装置として利用されるとしてよく、プロセッサ100によって直接アドレッシング可能であり、大容量記憶装置として適用されるフラッシュ/磁気ディスク/光ディスクとは対照的に、プロセッサ100と十分に速度を合わせることが可能である。さらに、上述したように、そして、詳細に後述するように、ファーメモリ122は、メモリバス上に設けられるとしてよく、プロセッサ100と直接通信を行うメモリコントローラと直接通信を行うとしてよい。
【0029】
ファーメモリ122は、他の命令およびデータ用の記憶装置技術(例えば、DRAM)と組み合わせて、ハイブリッドメモリ(同一箇所に設置されているPCMおよびDRAM、第1のレベルのメモリおよび第2のレベルのメモリ、FLAM(フラッシュおよびDRAM)としても知られている)を形成するとしてよい。尚、PCM/PCMSを含む上述した技術のうち少なくとも一部は、システムメモリの代わりに、または、システムメモリに追加して、大容量記憶装置に用いられるとしてよく、このように利用される場合、プロセッサによるランダムアクセス、バイトアドレッシングまたは直接アドレッシングが可能である必要はない。
【0030】
説明の便宜上、本願の以下の部分では多くの場合、ファーメモリ122の技術として「NVRAM」、または、より詳しくは「PCM」あるいは「PCMS」を選択している。このため、NVRAM、PCM、PCMSおよびファーメモリといった用語は、以下の説明において同義語として用いられているものとしてよい。しかし、上述したように、複数の異なる技術をファーメモリについて利用するとしてよいと認められたい。また、NVRAMは、ファーメモリとして利用されることに限定されない。
【0031】
<C.ニアメモリ>
「ニアメモリ」121は、ファーメモリ122の前方に設定されている中間レベルのメモリである。ファーメモリに比べて読み書きアクセスレイテンシが低く、および/または、読み書きアクセスレイテンシの対称度がより高い(つまり、読み出し時間は、書き込み時間と大体同じである)。一部の実施形態では、ニアメモリ121は、書き込みレイテンシがファーメモリ122よりもはるかに低いが、読み出しレイテンシは同等である(例えば、わずかに低いだけか、または、同等である)。例えば、ニアメモリ121は、揮発性ランダムアクセスメモリ(VRAM)等の揮発性メモリであってよく、DRAMまたは他の高速キャパシタベースメモリを含むとしてもよい。しかし、本発明の基礎となる原理はこれらの具体的な種類のメモリに限定されないことに留意されたい。これに加えて、ニアメモリ121は、密度が比較的低いとしてよく、および/または、ファーメモリ122よりも製造コストが高いとしてもよい。
【0032】
一実施形態によると、ニアメモリ121は、ファーメモリ122と内部プロセッサキャッシュ120との間に構成されている。以下で説明する実施形態の一部では、ニアメモリ121は、例えば、読み書きレイテンシの制限およびメモリ劣化の制限を含む、ファーメモリの性能および/または利用に関する制限をマスクするべく1以上のメモリ側キャッシュ(MSC)107−109として構成されている。これらの実施例において、MSC107−109およびファーメモリ122を組み合わせると、システムメモリとしてDRAMのみを利用するシステムの性能と、近いレベルで、同等のレベルで、または、それより高いレベルでの動作が実現できる。以下で詳細を説明すると、図1では「キャッシュ」として図示しているが、ニアメモリ121は、キャッシュの役割を果たすことに加えて、または、それに代えて他の役割を実行するモードを含むとしてよい。
【0033】
ニアメモリ121は、プロセッサダイ上(キャッシュ106として)および/またはプロセッサダイの外部に(キャッシュ107−109として)位置させることができる(例えば、CPUパッケージ上に配置された別箇のダイ上、CPUパッケージの外部に配置し、CPUパッケージに対しては高帯域幅リンクを設ける、例えば、メモリデュアルインラインメモリモジュール(DIMM)、ライザ/メザニン、または、コンピュータマザーボード上に設ける)。ニアメモリ121は、一または複数の高帯域幅リンクを用いて、例えば、DDRまたは他の高帯域幅リンク(詳細に後述する)プロセッサ100と通信できるように結合されるとしてよい。
【0034】
<システムメモリの割り当て方式の例>
図1は、本発明の実施形態において、さまざまなレベルのキャッシュ101−109がシステム物理アドレス(SPA)空間116−119に対してどのように構成されているかを示す図である。記述したように、本実施形態は、1以上のコア101−104を有するプロセッサ100を備える。各コアは、自身の専用の上位キャッシュ(L0)101a−104aおよび中位キャッシュ(MLC)(L1)キャッシュ101b−104bを含む。プロセッサ100はさらに、共有LLC105を含む。これらのさまざまなキャッシュレベルの動作は、広く理解されており、ここでは詳細な説明を省略する。
【0035】
図1に図示するキャッシュ107−109は、特定のシステムメモリアドレス範囲または一群の非連続アドレス範囲に専用であるとしてよい。例えば、キャッシュ107は、システムメモリアドレス範囲#1 116についてMSCとして動作する専用のキャッシュであり、キャッシュ108および109は、システムメモリアドレス範囲#2 117およびシステムメモリアドレス範囲#3 118の非重複部分についてMSCとして動作する専用のキャッシュである。後者の実施例は、プロセッサ100が利用するSPA空間が、キャッシュ107−109(例えば、MSCとして構成されている場合)が利用するアドレス空間にインターリーブされているシステムについて利用されるとしてよい。一部の実施形態によると、この後者のアドレス空間は、メモリチャネルアドレス(MCA)空間と呼ばれる。一実施形態によると、内部キャッシュ101a−106は、SPA空間全体についてキャッシュ処理を実行する。
【0036】
「システムメモリ」は、本明細書で用いられる場合、プロセッサ100上で実行されているソフトウェアに可視であり、および/または、当該ソフトウェアによって直接アドレッシング可能なメモリである。キャッシュメモリ101a−109は、システムアドレス空間のうち直接アドレッシング可能な部分を形成しないという意味で、ソフトウェアに対してトランスペアレントに動作しているが、コアは、ソフトウェアが何らかの制御(構成、ポリシー、ヒント等)をキャッシュの一部または全てに提供するように命令の実行をサポートするとしてよい。システムメモリを複数の領域116−119に分割することは、システム構成プロセスの一環として手動で(例えば、システム設計者によって)実行されるとしてよく、および/または、ソフトウェアによって自動的に実行されるとしてもよい。
【0037】
一実施形態によると、システムメモリ領域116−119は、ファーメモリ(例えば、PCM)を利用して、および、一部の実施形態では、システムメモリとして構成されたニアメモリを利用して実現される。システムメモリアドレス範囲#4は、システムメモリモード(キャッシュモードではない)で構成されるニアメモリであるDRAM等の高速メモリを用いて実現されるアドレス範囲を表す。
【0038】
図2は、本発明の実施形態に係る、メモリ/記憶装置ヒエラルキー140、および、ニアメモリ144およびNVRAM用の複数の異なる設定可能な動作モードを示す図である。メモリ/記憶装置ヒエラルキー140は、以下に説明する複数のレベルを持つ。
1)プロセッサキャッシュ150A(例えば、図1におけるキャッシュ101A−105)を含み、および、任意で(本明細書で説明するように特定の動作モードで)ファーメモリのキャッシュとしてニアメモリ150Bを含むキャッシュレベル150
2)ニアメモリが存在する場合ファーメモリ151B(例えば、PCM等のNVRAM)を含み、(または、ニアメモリが存在しない場合には、システムメモリ174としてNVRAMのみを含む)、任意で(本明細書で説明する特定の動作モードにおいて)システムメモリ151Aとして動作するニアメモリを含むシステムメモリレベル151
3)フラッシュ/磁気/光大容量記憶装置152Bおよび/またはNVRAM大容量記憶装置152A(例えば、NVRAM142の一部)を含む大容量記憶装置レベル152
4)BIOSフラッシュ170および/またはBIOS NVRAM172、ならびに、任意でトラステッドプラットフォームモジュール(TPM)NVRAM173を含むファームウェアメモリレベル153
【0039】
記述したように、ニアメモリ144は、さまざまな異なるモードで動作するように実現されるとしてよい。これらのモードには、ファーメモリに対するキャッシュとして動作する第1のモード(FMのキャッシュとしてのニアメモリ150B)、システムメモリ151Aとして動作し、SPA空間の一部を占める第2のモード(場合によっては、ニアメモリ「ダイレクトアクセス」モードと呼ぶ)、および、スクラッチパッドメモリ192または書込バッファ193等の1以上の追加動作モードがある。本発明の一部の実施形態によると、ニアメモリはパーティション化が可能である。各パーティションは、サポートされているモードのうち異なるモードで同時に動作するとしてもよい。異なる実施形態では、ハードウェア(例えば、ヒューズ、ピン)、ファームウェアおよび/またはソフトウェア(例えば、各モードおよび各パーティションを特定するべく複数の異なるバイナリコードを格納しているMSCコントローラ124内で一群のプログラマブルレンジレジスタを用いて)によってパーティションの構成(例えば、サイズ、モード)をサポートするとしてよい。
【0040】
図2に示すシステムアドレス空間A190は、ニアメモリがファーメモリについてのMSC150Bとして構成されている場合の動作について説明するために用いる。この構成では、システムアドレス空間A190は、システムアドレス空間全体を表している(そして、システムアドレス空間B191は存在しない)。これに代えて、システムアドレス空間B191は、ニアメモリの全体または一部にシステムアドレス空間の一部が割り当てられている場合の実施例を示すために用いられる。本実施形態において、システムアドレス空間B191は、システムアドレス空間のうちニアメモリ151Aに割り当てられている範囲を表し、システムアドレス空間A190は、NVRAM174に割り当てられているシステムアドレス空間の範囲を表している。
【0041】
また、ファーメモリのキャッシュ150Bとして動作する場合、ニアメモリ144は、MSCコントローラ124の制御下でさまざまなサブモードで動作するとしてよい。これらのモードのそれぞれでは、ニアメモリアドレス空間(NMA)は、ニアメモリはシステムアドレス空間の直接アドレッシング可能な部分を形成しないという意味で、ソフトウェアに対してトランスペアレントである。これらのモードは、限定するものではないが、以下のモードを含む。
1)ライトバックキャッシュモード、このモードでは、FMキャッシュとして動作しているニアメモリ150Bの全てまたは一部分が、NVRAMファーメモリ(FM)151Bのキャッシュとして用いられる。ライトバックモードでは、どの書込処理も最初にFMのキャッシュとしてのニアメモリ150Bに誘導する(書込の誘導先のキャッシュラインがキャッシュ内に存在すると仮定する)。対応する書込処理は、FMのキャッシュとしてのニアメモリ150B内のキャッシュラインを、別のキャッシュラインで置換すべきである場合にのみ(後述するライトスルーモードとは対照的、ライトスルーモードでは、各書込処理は即座にNVRAM FM151Bに伝搬させる)、NVRAM FM151Bを更新するために実行される。
2)ニアメモリバイパスモード、このモードでは、全ての読み出しおよび書き込みは、FMキャッシュとして動作しているNM150Bをバイパスして、NVRAM FM151Bに直接向かう。このようなモードは、例えば、アプリケーションがキャッシュに寛容でないか、または、キャッシュラインの粒度で永続性にデータをコミットさせる必要がある場合に用いられるとしてよい。一実施形態によると、プロセッサキャッシュ150A、および、FMキャッシュとして動作するNM150Bが実行するキャッシュは、互いに独立して動作する。この結果、データは、FMキャッシュとして動作しているNM150Bにキャッシュされるとしてよい。プロセッサキャッシュ150Aにキャッシュされない(場合によっては、プロセッサキャッシュ150Aにキャッシュすることが許可されていない)。逆も同様である。このように、プロセッサキャッシュに「キャッシュ不可能」と指定されている特定のデータは、FMキャッシュとして動作しているNM150Bにキャッシュされるとしてよい。
3)ニアメモリ読出−キャッシュ書込バイパスモード、これは、NVRAM FM151Bからの永続的データの読出キャッシュが許可される、上記のモードの変形版である(つまり、永続的データは、読み出し限定処理について、ファーメモリのキャッシュとしてのニアメモリ150Bにキャッシュされる)。これは、永続的データの大半が「読み出し限定」であり、アプリケーション利用がキャッシュに寛容である場合に、有用である。
4)ニアメモリ読出−キャッシュライトスルーモード、これは、ニアメモリ読出−キャッシュ書込バイパスモードの変形版である。読出キャッシュに加えて、書込ヒットもキャッシュされる。FMのキャッシュとしてのニアメモリ150Bへの書き込みは全て、FM151Bへの書き込みを発生させる。このため、キャッシュのライトスルー特性のために、キャッシュラインの永続性は依然として保証される。
【0042】
ニアメモリダイレクトアクセスモードで動作している場合、システムメモリ151Aとしてニアメモリの全てまたは一部は、ソフトウェアに対して直接可視であり、SPA空間の一部を形成する。このようなメモリは、完全にソフトウェアの制御下にあるとしてよい。このような方式は、ソフトウェアについて非均一メモリアドレス(NUMA)メモリドメインを形成するとしてよい。この場合、NVRAMシステムメモリ174に比べて、ニアメモリ144からの方が、性能が高くなる。一例として挙げると、これらに限定されないが、このような利用は、特定のデータ構造に対して超高速アクセスが必要である特定の高性能コンピューティング(HPC)アプリケーションおよびグラフィクスアプリケーションについて採用されるとしてよい。
【0043】
別の実施形態によると、ニアメモリダイレクトアクセスモードは、ニアメモリに特定のキャッシュライン(つまり、同時にNVRAM142にも格納されているデータを持つキャッシュライン)を「くぎ付け」にすることで、実現される。このような「くぎ付け」は、より大型のマルチウェイセットアソシアティブキャッシュにおいて効果的に行われるとしてよい。
【0044】
図2はさらに、NVRAM142の一部分はファームウェアメモリとして利用され得ることを示す。例えば、(BIOSフラッシュ170にBIOS情報を格納することに代えて、または、これに加えて)BIOS NVRAM172の一部分は、BIOSイメージを格納するために用いられるとしてよい。BIOS NVRAMの一部分172は、SPA空間の一部分であってよく、プロセッサコア101−104で実行されているソフトウェアによって直接アドレッシング可能である。一方、BIOSフラッシュ170は、I/Oサブシステム115を用いてアドレッシング可能である。別の例を挙げると、トラステッドプラットフォームモジュール(TPM)NVRAM173の一部分は、極秘システム情報(例えば、暗号鍵)を保護するために用いられるとしてよい。
【0045】
このため、記述したように、NVRAM142は、さまざまな異なるモードで動作するべく実現されるとしてよい。これらのモードは、ファーメモリ151Bとして(例えば、ニアメモリ144が存在/動作している場合、ニアメモリが、MSC制御124を利用してFMのキャッシュとして動作しているか否か、(MSC制御124無しで、キャッシュ101A−105の後に直接アクセスされる))、NVRAMシステムメモリ174のみ(ニアメモリが存在/動作していないためファーメモリとしてではない、そして、MSC制御124無しでアクセスされる)、NVRAM大容量記憶装置152A、BIOS NVRAM172、および、TPM NVRAM173を含む。複数の異なる実施形態では複数の異なる方法でNVRAMモードを特定し得るが、図3は、デコードテーブル333の利用を説明する。
【0046】
図3は、本発明の実施形態を実施するコンピュータシステム300の一例を示す図である。コンピュータシステム300は、プロセッサ310と、システムメモリ、大容量記憶装置の両方、および、任意でファームウェアメモリに利用されるNVRAM142を含むメモリ/記憶装置サブシステム380を備える。一実施形態によると、NVRAM142は、データ、命令、状態、ならびに、その他の永続的情報および非永続的情報を格納するためにコンピュータシステム300が利用する全システムメモリおよび記憶装置ヒエラルキーを有する。先述したように、NVRAM142は、システムメモリ、大容量記憶装置およびファームウェアメモリ、TPMメモリ等の通常のメモリおよび記憶装置ヒエラルキーにおいて役割を実現するように構成され得る。図3の実施形態では、NVRAM142は、FM151B、NVRAM大容量記憶装置152A、BIOS NVRAM172、および、TMP NVRAM173に分割される。役割が異なる複数の記憶装置ヒエラルキーも考慮されており、NVRAM142の用途は上述した役割に限定されるものではない。
【0047】
一例として、FMのキャッシュとしてのニアメモリ150Bがライトバックキャッシュモードである際の動作を説明する。一実施形態によると、FMのキャッシュとしてのニアメモリ150Bが上述したライトバックキャッシュモードである間、読出処理は最初にMSCコントローラ124に到達し、MSCコントローラ124が検索を実行して、要求されたデータが、FMのキャッシュとして動作しているニアメモリ150B内に存在するか否かを判断する(例えば、タグキャッシュ342を利用する)。存在する場合、I/Oサブシステム115を介して、要求元のCPU、コア101−104、または、I/Oデバイスにデータを戻す。データが存在しない場合、MSCコントローラ124は、システムメモリアドレスと共に、要求をNVRAMコントローラ332に送信する。NVRAMコントローラ332は、デコードテーブル333を利用して、システムメモリアドレスをNVRAM物理デバイスアドレス(PDA)に変換し、ファーメモリ151Bのこの領域に読出処理を指示する。一実施形態によると、デコードテーブル333は、NVRAMコントローラ332がシステムメモリアドレスとNVRAM PDAとの間での変換に利用するアドレス間接テーブル(AIT)コンポーネントを含む。一実施形態によると、AITは、メモリアクセス処理を分散させることでNVRAMのFM151Bの摩耗を低減するべく実装されるウェアレベリングアルゴリズムの一部として更新される。これに代えて、AITは、NVRAMコントローラ332内に格納されている別のテーブルであってもよい。
【0048】
NVRAMコントローラ332は、要求されたデータをNVRAM FM151Bから受信すると、要求されたデータをMSCコントローラ124に戻し、MSCコントローラ124は当該データを、FMキャッシュとして動作しているMSCニアメモリ150Bに格納し、さらに、I/Oサブシステム115を介して、当該データを要求元のプロセッサコア101−104またはI/Oデバイスに送信する。このデータについてこの後要求が発行されると、他のNVRAM FMデータで置き換えられるまでは、FMキャッシュとして動作しているニアメモリ150Bから直接対応するとしてよい。
【0049】
上述したように、一実施形態によると、メモリ書込処理もまた、最初にMSCコントローラ124に供給される。MSCコントローラ124は、FMキャッシュとして動作しているMSCニアメモリ150Bに書き込む。ライトバックキャッシュモードにおいて、データは、書込処理を受信した際に直接NVRAM FM151Bに送信されないとしてよい。例えば、データは、データが格納されているFMキャッシュとして動作しているMSCニアメモリ150B内の位置を、別のシステムメモリアドレスのためのデータを格納するために再度利用しなければならない場合にのみ、NVRAM FM151Bに送信されるとしてよい。この場合、MSCコントローラ124は、当該データはNVRAM FM151Bでは最新版でないと認識するので、FMキャッシュとして動作しているニアメモリ150Bから取得して、NVRAMコントローラ332に送信する。NVRAMコントローラ332は、PDAにおいてシステムメモリアドレスを発見するべく検索し、データをNVRAM FM151Bに書き込む。
【0050】
図3において、NVRAMコントローラ332は、3つの別個のラインを利用して、FM151B、NVRAM大容量記憶装置152AおよびBIOS NVRAM172に接続されているものとして図示されている。しかし、これは必ずしも、NVRAMコントローラ332をNVRAM142のこれらの部分に接続する3つの別個の物理バスまたは通信チャネルが存在することを意味するものではない。そうではなく、一部の実施形態では、一の共通のメモリバスまたはその他の種類のバスを用いて、NVRAMコントローラ332をFM151B、NVRAM大容量記憶装置152A、および、BIOS NVRAM172に通信可能に結合する。例えば、一実施形態によると、図3に示す3つのラインは、NVRAMコントローラ332がNVRAM142と通信するための(例えば、アウトオブオーダ)プロトコルを実行するメモリバス(例えば、DDR3、DDR4等のバス)等のバスを表す。NVRAMコントローラ332はさらに、PCI Expressバス、デスクトップ管理インターフェース(DMI)バス、または、アウトオブオーダプロトコルおよび十分に小さいペイロードサイズ(例えば、64バイトまたは128バイト等のキャッシュラインサイズ)を利用する任意のその他の種類のバス等のネイティブプロトコルをサポートしているバスを介してNVRAM142と通信するとしてよい。
【0051】
一実施形態によると、コンピュータシステム300は、プロセッサ310のための中央メモリアクセス制御を実行する集積化メモリコントローラ(IMC)331を備える。集積化メモリコントローラ(IMC)331は、1)ファーメモリキャッシュとして動作するニアメモリ(NM)150Bに対するアクセスを制御するためのメモリ側キャッシュ(MSC)コントローラ124、および、2)NVRAM142へのアクセスを制御するためのNVRAMコントローラ332に結合されている。MSCコントローラ124およびNVRAMコントローラ332は、図3において別箇のユニットとして図示されているが、ロジック上はIMC331のうち一部分を形成しているとしてよい。
【0052】
図示した実施形態では、MSCコントローラ124は、ファーメモリキャッシュとして動作しているNM150Bについて利用されている動作モード(例えば、上述したライトバックキャッシュモード、ニアメモリバイパスモード等)を特定する一群のレンジレジスタ336を含む。図示した実施形態では、DRAM144は、ファーメモリのキャッシュとして動作するNM150Bについてメモリ技術として利用される。メモリアクセス要求に応じて、MSCコントローラ124は、要求をFMのキャッシュとして動作しているNM150Bで対応するか否か、または、要求をNVRAMコントローラ332に送信して、NVRAMコントローラ332が、NVRAM142のファーメモリ(FM)部分151Bで当該要求に対応すべきか否かを(レンジレジスタ336で特定されている動作モードに応じて)決定するとしてよい。
【0053】
NVRAM142がPCMSで実現される実施形態では、NVRAMコントローラ332は、PCMS技術に準拠したプロトコルでアクセスを実行するPCMSコントローラである。上述したように、PCMSメモリは本質的に、1バイトの粒度でアクセス可能である。これにもかかわらず、NVRAMコントローラ332は、キャッシュライン(例えば、64ビットまたは128ビットのキャッシュライン)等のより低い粒度で、または、メモリサブシステムに準拠した任意のその他の粒度でPCMSベースのファーメモリ151Bにアクセスするとしてよい。本発明の基礎となる原理は、PCMSベースのファーメモリ151Bにアクセスする際について、任意の特定の粒度には限定されない。しかし、一般的に、PCMSベースのファーメモリ151Bを用いてシステムアドレス空間の一部を形成する場合、粒度は、「ブロック」単位(NORフラッシュの最小サイズは64キロバイト、NANDフラッシュでは16キロバイト)で書き換え処理および消去処理を実行するのみであったフラッシュ等の他の不揮発性記憶装置技術に従来から利用されている粒度よりも高いとしてよい。
【0054】
図示した実施形態では、NVRAMコントローラ332は、NVRAM142のための先述したモード、サイズ等を構築するための設定データを、デコードテーブル333から、読み出すとしてよい。または、これに代えて、IMC331およびI/Oサブシステム315から供給されるデコード結果を利用するとしてもよい。例えば、製造時または現場において、コンピュータシステム300は、NVRAM142の複数の異なる領域を、システムメモリ、SATAインターフェースを介して露出する大容量記憶装置、USBバルクオンリートランスポート(BOT)インターフェースを介して露出する大容量記憶装置、TPM記憶装置をサポートする暗号化された記憶装置等として、指定するべく、デコードテーブル333をプログラミングすることができる。NVRAMデバイス142の複数の異なるパーティションにアクセスを誘導する手段は、デコードロジックを介してである。例えば、一実施形態によると、各パーティションのアドレス範囲は、デコードテーブル333で定義される。一実施形態によると、IMC331がアクセス要求を受信すると、当該要求のターゲットアドレスをデコードして、当該要求がメモリ、NVRAM大容量記憶装置またはI/Oに向けて指定されているか否かを解明する。メモリ要求である場合、IMC331および/またはMSCコントローラ124はさらに、ターゲットアドレスに基づいて、当該要求が、FMのキャッシュとしてのNM150BまたはFM151Bのいずれに対して指定されているか否かを判断する。FM151Bに対するアクセスの場合、当該要求はNVRAMコントローラ332に転送される。IMC331は、この要求がI/O(例えば、記憶装置でないI/Oデバイスおよび記憶装置であるI/Oデバイス)に対して指定されている場合、当該要求をI/Oサブシステム115に供給する。I/Oサブシステム115はさらに、アドレスが、NVRAM大容量記憶装置152A、BIOS NVRAM172、または、他の記憶装置でないI/Oデバイスもしくは記憶装置であるI/Oデバイスを指し示すか否かを決定するべく、アドレスをデコードする。このアドレスがNVRAM大容量記憶装置152AまたはBIOS NVRAM172を指し示す場合、I/Oサブシステム115は当該要求をNVRAMコントローラ332に転送する。このアドレスがTMP NVRAM173を指し示す場合、I/Oサブシステム115は当該要求をTPM334に供給してセキュアなアクセスを実行する。
【0055】
本明細書に記述したような新しいメモリアーキテクチャが存在することで、多くの新しい可能性が生まれる。はるかに長い説明で後述するが、このような可能性の一部は、この直後に簡潔に概要を説明する。
【0056】
一の実施可能例によると、NVRAM142は、システムメモリにおける従来のDRAM技術を完全に置換する技術として、または、補完する技術として機能する。一実施形態によると、NVRAM142は、第2のレベルのシステムメモリを導入することを表す(例えば、システムメモリは、キャッシュとしてのニアメモリ150B(DRAMデバイス340の一部)を含む第1のレベルのシステムメモリと、ファーメモリ(FM)151B(NVRAM142の一部)を含む第2のレベルのシステムメモリとを持つものとして認識されるとしてよい)。
【0057】
一部の実施形態によると、NVRAM142は、フラッシュ/磁気/光大容量記憶装置152Bに対して、完全に置換する機能を持つものとして、または、補完的な機能を持つものとして動作する。先述したように、一部の実施形態によると、NVRAM152Aはバイトレベルでアドレッシングが可能であるが、実施例によっては(例えば、64キロバイト、128キロバイト等)、NVRAMコントローラ332は依然として、複数のバイトに等しいブロック単位でNVRAM大容量記憶装置152Aにアクセスするとしてよい。NVRAM大容量記憶装置152AのデータにNVRAMコントローラ332がアクセスする特異的な方法は、プロセッサ310が実行するソフトウェアにトランスペアレントであるとしてよい。例えば、NVRAM大容量記憶装置152Aはフラッシュ/磁気/光大容量記憶装置152Bとはアクセス方法が異なるとしても、オペレーティングシステムは依然として、NVRAM大容量記憶装置152Aを標準的な大容量記憶装置と見なすとしてよい(例えば、シリアルATAハードドライブまたは他の標準的な形態の大容量記憶装置)。
【0058】
NVRAM大容量記憶装置152Aがフラッシュ/磁気/光大容量記憶装置152Bを完全に置換するものとして機能する実施形態では、ブロックアドレッシング可能な記憶装置アクセスについて記憶装置ドライバを利用する必要はない。記憶装置ドライバオーバーヘッドを記憶装置アクセスから無くすことで、アクセス速度が高速化され、電力消費が節約される。NVRAM大容量記憶装置152Aが、OSおよび/またはアプリケーションに対して、ブロックアクセス可能で、フラッシュ/磁気/光大容量記憶装置152Bとは識別不可能であるように見えることが望ましい別の実施形態では、エミュレートされた記憶装置ドライバを用いて、NVRAM大容量記憶装置152Aにアクセスするべく、ブロックアクセス可能なインターフェース(例えば、ユニバーサルシリアルバス(USB)バルクオンリートランスファー(BOT)、1.0;シリアルアドバンスドテクノロジーアタッチメント(SATA)、3.0等)をソフトウェアに露出させることができる。
【0059】
一実施形態によると、NVRAM142は、BIOSフラッシュ362およびTPMフラッシュ372(図3では、任意であることが分かるように、点線で図示している)等のファームウェアメモリを完全に置換するか、または、補完するものとして機能する。例えば、NVRAM142は、BIOSフラッシュ362を補完または置換するBIOS NVRAM172部分を含むとしてよく、TPMフラッシュ372を補完または置換するTPM NVRAM173部分を含むとしてよい。ファームウェアメモリはさらに、機密システム情報(例えば、暗号鍵)を保護するべく、TPM334が利用するシステム永続状態を格納するとしてよい。一実施形態によると、NVRAM142をファームウェアメモリとして利用することで、システム動作に重要なコードおよびデータを格納する第三者のフラッシュ部分が必要なくなる。
【0060】
この後図3のシステムの説明を続けて行うと、一部の実施形態において、図3に図示されているプロセッサ310は簡略化のために1つであるが、コンピュータシステム100のアーキテクチャは、複数のプロセッサを含むとしてよい。プロセッサ310は、汎用または特定用途向け中央演算処理装置(CPU)、特定用途向け集積回路(ASIC)、または、デジタルシグナルプロセッサ(DSP)等、任意の種類のデータプロセッサであってよい。例えば、プロセッサ310は、Core(商標)i3、i5、i7、2 Duo and Quad、Xeon(商標)またはItanium(商標)プロセッサ等の汎用プロセッサであってよい。これらはすべて、Intel Corporation社(米国カリフォルニア州サンタクラーラ)製である。これに代えて、プロセッサ310は、別の会社製であってよい。例えば、ARM Holdings,Ltd.社(米国カリフォルニア州サニーベール)、MIPS Technologies社(米国カリフォルニア州サニーベール)等である。プロセッサ310は、特定用途向けプロセッサ、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、コプロセッサ、埋め込みプロセッサ等であってよい。プロセッサ310は、1以上のパッケージに含まれている1以上のチップ上で実現されるとしてよい。プロセッサ310は、例えば、BiCMOS、CMOSまたはNMOS等の複数の処理技術のいずれかを用いて1以上の基板の一部であってよく、および/または、そのような1以上の基板上で実現されるとしてよい。図3に示す実施形態によると、プロセッサ310は、システムオンチップ(SOC)構成を持つ。
【0061】
一実施形態によると、プロセッサ310は、3Dグラフィクスコマンドまたは2Dグラフィクスコマンド等のグラフィクスコマンドを実行するロジックを含む集積化グラフィクスユニット311を含む。本発明の実施形態は任意の特定の集積化グラフィクスユニット311に限定されないが、一実施形態によると、グラフィクスユニット311は、Open GLおよび/またはDirect Xアプリケーションプログラミングインターフェース(API)(例えば、OpenGL4.1およびDirectX11)で特定されているグラフィクスコマンド等の業界標準規格のグラフィクスコマンドを実行可能である。
【0062】
繰り返しになるが、分かり易いように図3に図示されているコアは1つであるが、プロセッサ310は、1以上のコア101−104をさらに含むとしてよい。多くの実施形態において、コア101−104は、1以上の実行ユニット、リタイヤメントユニット、一群の汎用レジスタおよび特定用途向けレジスタ等の内部機能ブロックを含む。コアがマルチスレッド型またはハイパースレッド型である場合、各ハードウェアスレッドもまた、一の「論理」コアとして見なされるとしてよい。コア101−104は、アーキテクチャおよび/または命令セットに関して、同様であってもよいし、または、異なるとしてもよい。例えば、コアのうち幾つかは、インオーダ型であってよく、残りはアウトオブオーダ型であってよい。別の例として、コアのうち2以上は、同じ命令セットを実行可能であるとしてよく、一方で、残りのコアは、当該命令セットの一部のみ、または、別の命令セットを実行可能であるとしてもよい。
【0063】
プロセッサ310はさらに、1以上のキャッシュ、例えば、SRAMおよび/またはDRAMとして実現され得るキャッシュ313を有するとしてよい。図示していない多くの実施形態において、キャッシュ313以外の追加のキャッシュを実現して、複数のレベルのキャッシュをコア101−104内の実行ユニットと、メモリデバイス150Bおよび151Bとの間に設ける。例えば、一群の共有キャッシュユニットは、レベル1(L1)キャッシュ等の上位レベルキャッシュ、レベル2(L2)、レベル3(L3)、レベル4(L4)または他のレベルのキャッシュ等の中位レベルキャッシュ、LLC、および/または、これらの他の組み合わせを含むとしてよい。異なる実施形態では、キャッシュ313の分割方法を変更するとしてもよい。キャッシュ313は、異なる実施形態では、多くの異なるサイズのうち1つのキャッシュであってよい。例えば、キャッシュ313は、8メガバイト(MB)キャッシュ、16MBキャッシュ等であってよい。さらに、異なる実施形態では、キャッシュは、ダイレクトマッピングキャッシュ、フルアソシアティブキャッシュ、マルチウェイセットアソシアティブキャッシュ、または、別の種類のマッピングを採用しているキャッシュであってよい。複数のコアを含む他の実施形態では、キャッシュ313は、全てのコアで共有される一の大きな部分を含むとしてよく、または、複数の別箇の機能スライス(例えば、コア毎に1つのスライス)に分割されるとしてよい。キャッシュ313はさらに、全てのコアで共有される一の部分と、コア毎に複数の別箇の機能スライスである複数の他の部分とを含むとしてよい。
【0064】
プロセッサ310はさらに、コア101−104を協調させ動作させるコンポーネントを含むホームエージェント314を有するとしてよい。ホームエージェント314は、例えば、電力制御ユニット(PCU)および表示ユニットを含むとしてよい。PCUは、コア101−104および集積化グラフィクスユニット311の電力状態を制御するために必要なロジックおよびコンポーネントであってよく、または、そのようなロジックおよびコンポーネントを含むとしてよい。表示ユニットは、1以上の外部に接続されているディスプレイを駆動するためのユニットである。
【0065】
上述したように、一部の実施形態において、プロセッサ310は、集積化メモリコントローラ(IMC)331、ニアメモリキャッシュ(MSC)コントローラ、および、NVRAMコントローラ332を有する。これらは全て、プロセッサ310と同じチップ上にあるとしてもよいし、または、別箇のチップ上にあり、および/または、プロセッサ310に接続されているパッケージ上にあるとしてよい。DRAMデバイス144は、IMC331およびMSCコントローラ124と同じチップ上にあってもよいし、または、異なるチップ上にあるとしてもよい。このため、例を挙げると、一のチップがプロセッサ310およびDRAMデバイス144を含むとしてよい。一のチップがプロセッサ310を含み、別のチップがDRAMデバイス144を含むとしてよい(これらのチップは同じパッケージ内にあってもよいし、異なるパッケージ内にあってもよい)。一のチップがコア101−104を含み、別のチップがIMC331、MSCコントローラ124およびDRAM144を含むとしてよい(これらのチップは、同じパッケージ内にあってもよいし、異なるパッケージ内にあってもよい)。一のチップがコア101−104を含み、別のチップがIMC331およびMSCコントローラ124を含み、別のチップがDRAM144を含むとしてよい(これらのチップは、同じパッケージ内にあってもよいし、異なるパッケージ内にあってもよい)。
【0066】
一部の実施形態によると、プロセッサ310は、IMC331に結合されているI/Oサブシステム115を有する。I/Oサブシステム115は、プロセッサ310と、以下に記載するシリアル方式またはパラレル方式のI/Oデバイスとの間での通信を可能とする。I/Oデバイスとしては、1以上のネットワーク336(例えば、ローカルエリアネットワーク、ワイドエリアネットワークまたはインターネット)、記憶装置であるI/Oデバイス(例えば、フラッシュ/磁気/光大容量記憶装置152B、BIOSフラッシュ362、TPMフラッシュ372)および1以上の記憶装置でないI/Oデバイス337(例えば、ディスプレイ、キーボード、スピーカ等)が挙げられる。I/Oサブシステム115は、プラットフォームコントローラハブ(PCH)(不図示)を有するとしてよい。PCHはさらに、記憶装置および記憶装置でないI/Oデバイスおよびネットワークへのアクセスを実現するべく、複数のI/Oアダプタ338および他のI/O回路を含む。このため、I/Oサブシステム115は、利用しているI/Oプロトコル毎に少なくとも一の集積化I/Oアダプタ338を含むとしてよい。I/Oサブシステム115は、プロセッサ310と同じチップ上にあるとしてもよいし、または、別のチップ上にあるとしてもよいし、および/または、プロセッサ310に接続されているパッケージにあってもよい。
【0067】
I/Oアダプタ338は、プロセッサ310内で利用されているホスト通信プロトコルを、特定のI/Oデバイスに準拠したプロトコルに変換する。フラッシュ/磁気/光大容量記憶装置152Bについて、I/Oアダプタ338が変換するプロトコルの一部としては、ペリフェラルコンポーネントインターコネクト(PCI)Express(PCI−E)、3.0、USB、3.0、SATA、3.0、小型計算機システムインターフェース(SCSI)、Ultra−640、および、米国電気電子学会(IEEE)1394「ファイアワイヤ」等がある。BIOSフラッシュ362について、I/Oアダプタ338が変換するプロトコルの一部としては、シリアルペリフェラルインターフェース(SPI)、マイクロワイヤ等がある。また、1以上のワイヤレスプロトコルI/Oアダプタを設けるとしてよい。ワイヤレスプロトコルの例としては、いくつかあるが、IEEE802.15およびBluetooth(登録商標)4.0等のパーソナルエリアネットワークで利用されるもの、IEEE802.11ベースのワイヤレスプロトコル等のワイヤレスローカルエリアネットワーク、および、セルラー方式プロトコルが挙げられる。
【0068】
一部の実施形態によると、I/Oサブシステム115は、システム永続状態、例えば、セキュアデータ、暗号鍵、プラットフォーム構成情報等へのアクセスを制御するべくTPM制御334に結合されている。一実施形態によると、これらのシステム永続状態は、TMP NVRAM173に格納されており、NVRAMコントローラ332を介してアクセスされる。
【0069】
一実施形態によると、TPM334は、暗号機能を持つセキュアマイクロコントローラである。TPM334は、複数の信頼性に関する機能を持つ。例えば、TPMで保護されているデータは同一TPMについてのみ利用可能であることを保証するSEAL機能がある。TPM334は、暗号機能を利用してデータおよび鍵(例えば、秘密)を保護することができる。一実施形態によると、TPM334は、一意的で秘密のRSA鍵を持つ。RSA鍵によって、TPM334は、ハードウェアデバイスおよびプラットフォームを認証することができるようになる。例えば、TPM334は、コンピュータシステム300に格納されているデータへのアクセスを求めるシステムが、期待されるシステムであることを検証することができる。TPM334はさらに、プラットフォーム(例えば、コンピュータシステム300)のインテグリティを報告することが可能である。これによって、外部リソース(例えば、ネットワーク上のサーバ)がプラットフォームを信頼できるか否かを判断できるようになるが、ユーザによるプラットフォームへのアクセスを防止はしない。
【0070】
一部の実施形態によると、I/Oサブシステム115はさらに、システム管理者にコンピュータシステム300の監視、メインテナンス、更新、アップグレードおよび修復を実行させるマイクロプロセッサであるマネジメントエンジン(ME)335を含む。一実施形態によると、システム管理者は、ネットワーク336を介してME335を用いてデコードテーブル333のコンテンツを編集することでコンピュータシステム300をリモートに設定可能である。
【0071】
説明の便宜上、本願では、NVRAM142をPCMSデバイスと呼ぶ場合もあるとしてよい。PCMSデバイスは、多層構造の(垂直方向に積層した)不揮発性PCMセルアレイを含み、消費電力が少なく、ビットレベルで変形可能である。このように、NVRAMデバイスおよびPCMSデバイスという用語は、以下の説明で同義語として用いられるとしてよい。しかし、上述したように、PCMS以外の複数の異なる技術もNVRAM142に利用され得ることに留意されたい。
【0072】
コンピュータシステムは、当該コンピュータシステムのプロセッサが上述したプロセッサ310のコンポーネントの全てを持たないとしても、または、プロセッサ310よりも多くのコンポーネントを持つとしても、NVRAM142をシステムメモリ、大容量記憶装置、ファームウェアメモリおよび/または他のメモリおよび記憶装置として利用することができると理解されたい。
【0073】
図3に示す特定の実施形態では、MSCコントローラ124およびNVRAMコントローラ332は、プロセッサ310と同じダイまたはパッケージ(CPUパッケージと呼ばれる)上に配置されている。他の実施形態では、MSCコントローラ124および/またはNVRAMコントローラ332は、ダイまたはCPUパッケージ外に配置されて、プロセッサ310またはCPUパッケージにバスを介して結合されるとしてよい。バスの例としては、メモリバス(DDRバス(例えば、DDR3、DDR4等))、PCI Expressバス、デスクトップ管理インターフェース(DMI)バス、または、任意のその他の種類のバス等が挙げられる。
【0074】
トランザクションマルチスレッドソフトウェアおよび非トランザクションソフトウェアに利用されるファー側メモリ
プロセッサ設計者は現在、マルチスレッドソフトウェアの「トランザクション」サポートを可能とする改良された命令セットを設計している。従来の(つまり、非トランザクション)マルチスレッドソフトウェアでは、プログラムはデータを「ロック」で保護する。どの時点においても1つのスレッドのみがロックを保持することができる。このため、他のスレッドはこのデータを同時に修正できないようにすることができる。これは悲観的になる傾向がある。ロックを持つスレッドは、希望する処理がデータの読み出しのみであっても、または、衝突が発生しない更新を行う場合であっても、どのスレッドでも当該ロックを取得しないように阻止する。
【0075】
トランザクションサポートによって、図4を参照すると、スレッドはデータを操作する際にロックを取得する必要がなくなる。スレッドは、トランザクションを開始させ401、変更を行い402、完了すれば、トランザクションをコミットする403か、または、トランザクションがコミットできない場合には、ステップ402で行った変更をロールバックする404。トランザクションの経過中にスレッドが変更を行っている間402、図5を参照すると、プロセッサ510内の特別ハードウェア570は、スレッドの読み書き先である一部/全てのキャッシュ513、および、ニアメモリ550Bの位置の記録を取る。
【0076】
通常、トランザクションで実行される一部/全てのデータ書き込みは、単にキャッシュがシステムの最新の変更を保持するので、キャッシュ内に存在する。つまり、トランザクションがデータアイテムを変更する必要がある場合、当該データアイテムは、キャッシュに既に存在していなければより深い記憶装置から呼び出され、変更され、その後キャッシュに書き込まれる。このように、トランザクションが実行するデータ変更の量は各データアドレスに利用可能なキャッシュサイズ未満であることに限定されると仮定すると、トランザクションが行う全ての変更はキャッシュ内に存在する。プロセッサ内のハードウェアは、トランザクションのコミットまでは、これらの変更後のデータアイテムの永続性へのライトバックを阻止する。第1の実施形態によると、上述したキャッシュは、プロセッサキャッシュおよびニアメモリを含む。第2の実施形態によると、上述したキャッシュは、プロセッサキャッシュのみを含む(つまり、ニアメモリは含まれない)。簡単に説明するべく、本文献の以下の部分では、主に第1の実施形態を説明する。
【0077】
ある実施形態によると、プロセッサ510内の各CPUコア501−504のための特別ハードウェア570のインスタンス、および/または、プロセッサ510内の各CPUコア内の各命令実行パイプラインがある。ここで、トランザクションスレッドを実行しているコア/パイプラインの特別ハードウェア570のインスタンス(例えば、論理回路で実行するもの)は、上述したように、トランザクションのキャッシュおよびニアメモリの読み書きの記録を取る。尚、プロセッサ510内の一部のキャッシュレベル(例えば、ラストレベルキャッシュ)は、複数のコアに対してサービスを提供するとしてよい。一方で、プロセッサ510内の他のキャッシュレベル(例えば、コアのL1キャッシュ)は、一のコアのみに対してサービスを提供するとしてよい。
【0078】
トランザクションをコミットする用意が整うと、特別ハードウェア570は、トランザクションが実行されていた間に、他のスレッドがこれらの同じ位置に対して変更または読み出しを行っていないことを確認する。この条件が満たされれば、トランザクションはコミットされ403、スレッドは続く。ここで、「変更をコミットする」とは、変更が永続性記憶装置に書き込まれたことを意味する。この条件が満たされない場合、トランザクションは停止され、全ての変更を元に戻す404。一実施形態において、変更を「元に戻す」ためには、トランザクションによって変更が実行される前のデータの状態を表すフレッシュデータを永続性記憶装置から呼び出してキャッシュに再度書き込むか、または、変更されたキャッシュラインを無効化する。スレッドはこの後、当該処理を再試行するとしてもよいし、別のストラテジ(例えば、ロックを利用するもの)を試すとしてもよいし、または、完全に諦めるとしてもよい。
【0079】
ある実施例によると、NVRAMのファーメモリ551Bは、トランザクションがコミットされるとコミット後のデータ変更が格納される「永続性」記憶装置に対応する。一方で、ニアメモリ550Bおよびニアメモリより上方の一部/全てのキャッシュ513は、トランザクションがコミットされる前にスレッドが変更を行うことができるキャッシュ位置に対応する。
【0080】
しかし、さまざまな事例において、永続性記憶装置の概念は、技術的に上述したトランザクションの定義を満たさない他の種類のソフトウェアプロセスに拡張され得る。永続性記憶装置は、さまざまな異なる情報処理パラダイムによると、何らかのプロセスまたはデータ構造の形式的に認められた状態を記録に反映する(そして、このために、例えば、グローバルに可視である)書き込み可能データ記憶装置であってよく、および/または、長期間(例えば、コンピューティングシステムの複数のオン/オフサイクル)にわたって必要とされることをある程度期待するとしてよい。尚、多くのこのようなソフトウェアプロセスはさらに、NVRAMファーメモリ551Bで永続性記憶装置を実施することを選択するとしてよい。
【0081】
永続性記憶装置の存在を認識する非トランザクションソフトウェアプロセスについて、ソフトウェアは、永続性が必要とされる修正後のデータを、後に変更を行う前に、キャッシュからフラッシュして永続性記憶装置に格納することを保証する予防策を組み込んでいる必要がある。ここで、例えば、データアイテムに変更が行われ、ソフトウェアが当該変化を永続性記憶装置に反映する必要があると見なす場合、ソフトウェアは、キャッシュラインフラッシュ命令(例えば、CLFLUSH)を挿入し、その後に、メモリフェンス命令(例えば、MFENCE)を挿入する。キャッシュラインフラッシュ命令は、新しく変更されたデータを、永続性記憶装置551Bに書き戻させる。メモリフェンス命令は、データが永続性記憶装置551Bに書き込まれるまで、同じスレッドの他の処理が当該データにアクセスしないように阻止する。
【0082】
より複雑な方法によると、スレッドのソフトウェアは、キャッシュ内のどのデータアイテムが永続性記憶装置551Bに永続的に保存される必要があるかを監視するための複雑なブックキープタスクを含む。ここで、例えば、特定のデータアイテムが、スレッドのソフトウェアによって、永続性を必要としていると認められるとしてよく、ブックキープソフトウェアは、これらのデータアイテムを監視し、コード実行中の適切なタイミングにおいて、適切なキャッシュラインおよびメモリフェンス命令を実行する。
【0083】
図6は、図5の特別ハードウェア570が、図4を参照しつつ上述したようにトランザクションのロールバックをサポートするだけでなく、さらに直前に説明したソフトウェアブックキープ機能の必要を無くすために用いられる改善された方法を示す図である。
【0084】
図6から分かるように、ソフトウェアは、コードの永続領域を定義するようにのみ求められる。この定義は、PBEGIN命令601によって永続領域の先頭で示されており、永続領域の終端でPEND命令604によって示されている。PBEGIN命令は実質的に、特別ハードウェア570の機能を「オンにする」602。PBEGIN命令の後コードが実行されている間、特別ハードウェア570は、どのキャッシュラインを変更したかを監視する603。PEND命令604が実行されると、特別ハードウェア570が特定したキャッシュラインを、永続性551Bに対してフラッシュさせ605、特別ハードウェア570をオフにする。PEND命令の後は、全てのキャッシュラインがフラッシュされて、メモリフェンスを実施するまで、他の命令の実行は許可されていない。
【0085】
このように、特別ハードウェア570は、トランザクション処理においてだけでなく、非トランザクション処理においても、キャッシュアクセスを監視する。図5は、特別ハードウェア570に結合されているコア内の命令実行パイプライン580を表している。ここにおいて、この結合は、PBEGIN命令に応じて特別ハードウェア570をオンにして、PEND命令に応じ特別ハードウェアをオフにするために用いられる。命令実行パイプラインはさらに、キャッシュのフラッシュが完了するまで、次の命令の発行を阻止するロジックを持つように設計される。命令実行パイプラインおよび特別ハードウェアには、キャッシュフラッシュロジックがさらに結合されるが、分かりやすいように図示していない。キャッシュフラッシュロジックは、PEND命令によって動作するようトリガされ、どのキャッシュラインをフラッシュする必要があるか理解するべく特別ハードウェア570を参照する。図5の他の特徴は、図3を参照しつつ上述した通りである。
【0086】
図7は、特別ハードウェアの両方の機能を示す統合方法を示す図である。トランザクション処理が開始しない場合、または、PBEGIN命令が実行されない場合、特別ハードウェア551Bはアイドル状態を維持する701。
【0087】
トランザクション処理が開始されると、特別ハードウェア570は、イネーブルされて、トランザクションによってどのキャッシュラインが修正されたのかの監視を開始する702。トランザクションが完了すると、プロセッサ内のトランザクションハードウェア571は、任意のその他のトランザクションがこれらの同じキャッシュライン703との間で読み書きを行ったかどうかを確認する。そのようなトランザクションが無い場合には、変更をファーメモリNVRAM551Bにコミットする704。有る場合には、キャッシュラインを、永続NVRAM551Bからのコンテンツで置換するか、または、無効化する705。
【0088】
PBEGIN命令が実行されると、特別ハードウェア570は、イネーブルされて、どのキャッシュラインがソフトウェアプロセスによって修正されたかの監視を始める706。PEND命令が実行されると、全ての修正されたキャッシュデータを永続性NVRAM551Bに書き戻して、書き戻しが完了するまで他の命令は実行が禁止される707。
【0089】
図8は、コンパイラが実行するコンパイルプロセスを示す図である。図8から分かるように、コンパイルプロセスは、コードの一の領域の先頭を特定する801。この後は、コードが行ったデータ変更はいずれも、永続性記憶装置に永続的に保存される。801で特定されることに応じて、コンパイルコードはPBEGIN命令をプログラムコードに挿入するか802、または、PBEGIN命令を挿入すべきコード内の位置を指し示す。コンパイルプロセスはさらに、コードの一の領域の先頭を特定する803。この後においては、PEND命令が挿入される(または、挿入される予定である)。この領域におけるデータ変更は永続的に保存する必要はない。803でコードの第2の領域を特定することに応じて、コンパイルプロセスは、永続的に保存する必要がある最後のデータ変更の後であって、永続的に保存する必要がない最初のデータ変更の前に、PEND命令をプログラムコードに挿入する(または、PEND命令を挿入すべき箇所を指し示す)。
【0090】
上述した説明で教示するプロセスは、機械(例えば、「仮想マシン」、半導体チップ上に配置されている汎用CPUプロセッサもしくはプロセッシングコア、または、半導体チップ上に配置されている特定用途向けプロセッサ)に特定の機能を実行させる機械実行可能命令等のプログラムコードで実行されるとしてよい。これに代えて、これらの機能は、機能を実行するためのハードワイヤードロジックを含む特定のハードウェアコンポーネントによって、または、プログラミングされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントの任意の組み合わせで実行されるとしてもよい。
【0091】
格納媒体を用いてプログラムコードを格納するとしてよい。プログラムコードを格納する格納媒体は、これらに限定されないが、1以上のメモリ(例えば、1以上のフラッシュメモリ、ランダムアクセスメモリ(スタティック、ダイナミック等))、光ディスク、CD−ROM、DVD ROM、EPROM、EEPROM、磁気カードまたは光カードまたは電子命令の格納に適した他の種類の機械可読媒体として、具現化されるとしてよい。プログラムコードはさらに、伝搬媒体(例えば、通信リンクを介して(例えば、ネットワーク接続))において具現化されるデータ信号を用いて、リモートコンピュータ(例えば、サーバ)から要求元コンピュータ(例えば、クライアント)にダウンロードされるとしてよい。
【0092】
上記の説明において、本発明は具体的な実施形態例に基づいて説明してきた。しかし、特許請求の範囲に記載されているように本発明の広義の意図および範囲から逸脱することなくさまざまな変形および変更を行うことは明らかである。明細書および図面は、これにしたがって、限定するものではなく説明のためであると見なされたい。
本実施形態の例を下記の各項目として示す。
[項目1]
不揮発性ランダムアクセスメモリに対するインターフェースと、
論理回路と
を備え、
前記論理回路は、
前記不揮発性ランダムアクセスメモリに永続的に保存すべき、トランザクションによって修正されたキャッシュラインを特定し、
前記不揮発性ランダムアクセスメモリに永続的に保存すべき、ソフトウェアプロセスによって修正されたキャッシュラインを特定する、プロセッサ。
[項目2]
前記不揮発性ランダムアクセスメモリは、相変化メモリである項目1に記載のプロセッサ。
[項目3]
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチである項目2に記載のプロセッサ。
[項目4]
前記ソフトウェアプロセスの開始点を特定する前記ソフトウェアプロセスの第1の命令を実行し、前記ソフトウェアプロセスの終了点を特定する前記ソフトウェアプロセスの第2の命令を実行する命令実行パイプラインをさらに備え、
前記開始点と前記終了点との間で前記ソフトウェアプロセスが行ったデータ変更は、前記不揮発性ランダムアクセスメモリに永続的に保存され、
前記命令実行パイプラインは、前記論理回路に結合されており、前記第1の命令に応じて前記論理回路をイネーブルし、前記第2の命令に応じて前記論理回路をディセーブルする項目1から3のいずれか一項に記載のプロセッサ。
[項目5]
前記命令実行パイプラインおよび前記論理回路に結合されているキャッシュフラッシュ回路をさらに備える項目4に記載のプロセッサ。
[項目6]
前記命令実行パイプラインは、前記キャッシュフラッシュ回路が、前記論理回路が特定した前記キャッシュラインのフラッシュを完了するまでは、更なる命令の実行を阻止する項目5に記載のプロセッサ。
[項目7]
プロセッサでトランザクションを実行する段階と、
ソフトウェアプロセスの一の領域の先頭および終端を指し示す前記ソフトウェアプロセスを前記プロセッサで実行する段階と
を備え、
前記トランザクションを実行する段階は、
1以上のキャッシュレベルにおけるデータ変更を実行する段階と、
前記データ変更が前記1以上のキャッシュレベルのどの箇所に存在するのかを監視する段階と、
前記データ変更は不揮発性ランダムアクセスメモリに永続的に保存されるか否かを判断する段階と、
前記トランザクションによって実行された前記データ変更を前記不揮発性ランダムアクセスメモリに永続的に保存する段階と
を有し、
前記ソフトウェアプロセスが実行したデータ変更は永続的に保存され、前記先頭と前記終端との間において前記ソフトウェアプロセスが実行した前記データ変更を監視し、前記一の領域の前記終端に到達すると、前記ソフトウェアプロセスが実行した前記データ変更を前記不揮発性ランダムアクセスメモリに永続的に保存する方法。
[項目8]
前記先頭は第1の命令で指し示され、前記終端は第2の命令で指し示される項目7に記載の方法。
[項目9]
前記不揮発性ランダムアクセスメモリは、相変化メモリで実現される項目7または8に記載の方法。
[項目10]
前記不揮発性ランダムアクセスメモリは、相変化メモリおよびスイッチで実現される項目9に記載の方法。
[項目11]
前記第1の命令に応じて前記プロセッサのハードウェアをイネーブルする段階をさらに備える項目8に記載の方法。
[項目12]
前記第2の命令に応じて前記プロセッサのハードウェアをディセーブルする段階をさらに備える項目8または11に記載の方法。
[項目13]
コンピュータに、
データ変更を永続性記憶装置に永続的に保存する、コードの一の領域を特定する手順と、
前記一の領域の先頭を第1の命令で指し示し、前記一の領域の終端を第2の命令で指し示す手順と
を実行させるプログラム。
[項目14]
前記第1の命令によって、プロセッサは、前記データ変更を監視するハードウェアをイネーブルする項目13に記載のプログラム。
[項目15]
前記第2の命令によって、プロセッサは、前記データ変更を監視するハードウェアをディセーブルする項目13または14に記載のプログラム。
[項目16]
前記第2の命令によって、前記データ変更を1以上のキャッシュレベルからフラッシュさせて、前記永続性記憶装置に格納させる
項目13から15のいずれか一項に記載のプログラム。
[項目17]
前記第2の命令は、前記データ変更が1以上のキャッシュレベルからのフラッシュおよび前記永続性記憶装置への格納を完了するまでは、更なる命令の実行を阻止する項目13から16のいずれか一項に記載のプログラム。
[項目18]
前記永続性記憶装置は、不揮発性ランダムアクセスメモリである項目13から17のいずれか一項に記載のプログラム。
[項目19]
前記永続性記憶装置は、相変化メモリである項目13から18のいずれか一項に記載のプログラム。
[項目20]
前記相変化メモリは、相変化メモリおよびスイッチである項目19に記載のプログラム。
図1
図2
図3
図4
図5
図6
図7
図8