IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特開2022-161812低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法
<>
  • 特開-低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法 図1
  • 特開-低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法 図2
  • 特開-低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法 図3
  • 特開-低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法 図4
  • 特開-低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法 図5
  • 特開-低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法 図6
  • 特開-低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022161812
(43)【公開日】2022-10-21
(54)【発明の名称】低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法
(51)【国際特許分類】
   G06F 12/1009 20160101AFI20221014BHJP
   G06F 15/167 20060101ALI20221014BHJP
【FI】
G06F12/1009 100
G06F15/167 610Z
【審査請求】未請求
【請求項の数】22
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022003792
(22)【出願日】2022-01-13
(31)【優先権主張番号】17/227,220
(32)【優先日】2021-04-09
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ジェームス エー.ボイド
(72)【発明者】
【氏名】クリストファー イー.コックス
(72)【発明者】
【氏名】ニヒル タルパリカー
【テーマコード(参考)】
5B045
5B205
【Fターム(参考)】
5B045BB54
5B045DD01
5B045KK02
5B205JJ05
5B205RR04
(57)【要約】      (修正有)
【課題】コヒーレントな低電力状態の管理が実施されるメモリ電源管理用のシステム、方法、プログラム及び記憶媒体を提供する。
【解決手段】コヒーレントアクセスを用いて管理されるメモリを備えたメモリサブシステムは、メモリを低電力状態にすることを可能にするようにページテーブルエントリを管理する。メモリ制御では、メモリを低電力状態に入るようにトリガする前に、メモリのページテーブルエントリを変更することができる。ページテーブルエントリに対する変更は、メモリへの次のアクセスに対してページフォールトを生じさせることになる。ページフォールトは、メモリへのアクセスのフォールトルーチンを用いた処理をトリガし、通常のアクセスであれば生じるメモリへの同期遅延を回避することになる。
【選択図】図3
【特許請求の範囲】
【請求項1】
コヒーレントアクセスを用いて管理されるメモリデバイスと、
前記メモリデバイスへのアクセスを管理するメモリ制御を実行するためのホストハードウェアと
を備えるメモリ電源管理用のシステムであって、前記メモリ制御が、前記メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、前記メモリデバイスのページテーブルエントリを変更し、前記ページテーブルエントリの前記変更の後に低電力状態に入るように前記メモリデバイスをトリガする、システム。
【請求項2】
前記メモリデバイスがバイトアドレス指定可能なメモリデバイスを有する、請求項1に記載のシステム。
【請求項3】
前記メモリデバイスが不揮発性メモリデバイスを有する、請求項2に記載のシステム。
【請求項4】
前記メモリデバイスがCXL(compute express link:コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する、請求項2に記載のシステム。
【請求項5】
前記メモリデバイスが3次元クロスポイント(3DXP)メモリデバイスを有する、請求項2に記載のシステム。
【請求項6】
前記ページテーブルエントリを変更するメモリドライバが、ページテーブルから前記ページテーブルエントリを削除することなく、前記ページテーブルエントリを無効にする前記メモリドライバを含む、請求項1から5のいずれか一項に記載のシステム。
【請求項7】
前記ページテーブルエントリを無効にする前記メモリドライバが、前記ページテーブル内のメモリアドレス範囲用の現ビットインジケータを消去する前記メモリドライバを含む、請求項6に記載のシステム。
【請求項8】
前記メモリデバイスがスレッショルド期間の間アイドルになっているとの判定に応答して、メモリドライバが前記ページテーブルエントリを変更する、請求項1から7のいずれか一項に記載のシステム。
【請求項9】
前記ページテーブルエントリを変更する前に、メモリドライバが、前記メモリデバイスの前記低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するかどうかを判定し、前記低電力状態が前記ホストプロセッサをストールさせることになるウェイク遅延を有するとの判定に応答して、前記ページテーブルエントリを変更する、請求項1から8のいずれか一項に記載のシステム。
【請求項10】
前記ページテーブルエントリを変更する前に、メモリドライバが、ロックされたページと関連したデータを前記メモリデバイスが格納しているかどうかを判定し、ロックされたページと関連したデータを前記メモリデバイスが格納していないとの判定のみに応答して、前記ページテーブルエントリを変更する、請求項1から9のいずれか一項に記載のシステム。
【請求項11】
前記ホストハードウェアが、
ホストプロセッサ、
ホストプロセッサに通信可能に結合されたディスプレイ、
ホストプロセッサに通信可能に結合されたネットワークインタフェース、または
前記システムに電力を供給するバッテリへのインタフェース
のうちの1つまたは複数を含む、請求項1から10のいずれか一項に記載のシステム。
【請求項12】
メモリデバイスを低電力状態にする方法であって、
コヒーレントアクセスを用いて管理されるメモリデバイスがスレッショルド期間の間アイドルになっていると判定する段階と、
前記メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、前記メモリデバイスのページテーブルエントリを変更する段階と、
前記ページテーブルエントリを変更した後に低電力状態に入るように前記メモリデバイスをトリガする段階と
を備える方法。
【請求項13】
前記メモリデバイスがバイトアドレス指定可能なメモリデバイスを有する、請求項12に記載の方法。
【請求項14】
前記メモリデバイスが不揮発性メモリデバイスを有する、請求項13に記載の方法。
【請求項15】
前記メモリデバイスがCXL(コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する、請求項13に記載の方法。
【請求項16】
前記メモリデバイスが3次元クロスポイント(3DXP)メモリデバイスを有する、請求項13に記載の方法。
【請求項17】
前記ページテーブルエントリを変更する段階が、ページテーブルから前記ページテーブルエントリを削除することなく前記ページテーブルエントリを無効にする段階を有する、請求項12から16のいずれか一項に記載の方法。
【請求項18】
前記ページテーブルエントリを無効にする段階が、前記ページテーブル内のメモリアドレス範囲用の現ビットインジケータを消去する段階を有する、請求項17に記載の方法。
【請求項19】
前記ページテーブルエントリを変更する段階の前に、前記メモリデバイスの前記低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するかどうかを判定し、前記低電力状態が前記ホストプロセッサをストールさせることになるウェイク遅延を有するとの判定に応答して、前記ページテーブルエントリを変更する、請求項12から18のいずれか一項に記載の方法。
【請求項20】
前記ページテーブルエントリを変更する段階の前に、ロックされたページと関連したデータを前記メモリデバイスが格納しているかどうかを判定し、ロックされたページと関連したデータを前記メモリデバイスが格納していないとの判定のみに応答して、前記ページテーブルエントリを変更する、請求項12から19のいずれか一項に記載の方法。
【請求項21】
コンピューティングデバイスに、請求項12から20のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
【請求項22】
請求項21に記載のコンピュータプログラムを格納するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
説明事項は概してコンピュータシステムに関連しており、より具体的な説明事項は、コヒーレントメモリデバイスにアクセスする場合のプロセッサのストール回避に関連している。
【背景技術】
【0002】
PCIe(peripheral component interconnect express:ペリフェラルコンポーネントインターコネクトエクスプレス)またはNVMe(nonvolatile memory express:不揮発性メモリエクスプレス)を介して接続されたデバイスには低電力リンク状態があり、システムがアクティブである間は低電力状態に入ることができる。PCIeはもともと非コヒーレントであり、ホストドライバにより管理されている。デバイスドライバは、電源を切られたときに送出されてくるI/O(入力/出力)動作を処理することができる。あるいは、バスが自動的にハードウェアに戻ることにより、I/O動作を処理することもできる。低電力状態(リンク状態であるか、またはデバイス状態であるかを問わず)から抜けると、通常は遅延が生じるが、遅延はもともと、メモリが非コヒーレントである場合、ホストプロセッサが他のアクティビティを処理することまたは割り込みを処理することに影響を与えるものではない。こうしたリンクの非コヒーレントな性質により、この動作を非同期的にまたはノンブロッキング方式で処理することが可能になる。
【0003】
コヒーレントメモリがI/O動作を処理するために低電力状態からウェイクすると、ホストプロセッサでストールを引き起こすことがある。CXL(compute express link:コンピュートエクスプレスリンク)は、PCIeに基づくプロトコルであり、コヒーレントメモリ接続向けのCXL.memインタフェースを規定する。CXL.memまたは別のコヒーレントメモリの相互接続を用いると、メモリインタフェースがコヒーレントになる。ホストプロセッサは、コヒーレントメモリへのI/O動作の完了を待つ。
【0004】
コヒーレントメモリが低電力状態に入ることを許可された場合、ホストプロセッサをストールさせる可能性があり、これによりシステム性能が低下することがある。遅延を減らす1つの仕組みは、ホストプロセッサをストールさせる可能性がある低電力状態にメモリが入るのを許可しないことである。しかしながら、コヒーレントメモリが低電力状態に入るのを防ぐことで遅延の影響を低減できるが、エネルギー使用量の増加を犠牲にしている。コヒーレントメモリの「常時オン」の性質により、かなりのエネルギーが浪費され、システムのバッテリ寿命が低下することになる。エネルギーの浪費によって、エネルギー順守規則を守れないことになる可能性もある。
【図面の簡単な説明】
【0005】
以下の説明には、一実装例の例として与えられる実例を有する図の考察が含まれる。これらの図面は、例として理解されるべきであり、限定として理解されるものではない。本明細書では、1つまたは複数の例への言及は、本発明の少なくとも1つの実装例に含まれる特定の機能、構造、または特徴を説明しているものと理解されたい。本明細書に現れる「1つの例において」または「代替例において」などの表現は、本発明に関する実装例の提供であり、必ずしも全てが同じ実装例に言及しているわけではない。しかしながら、こうした表現は必ずしも相互に排他的であるわけでもない。
【0006】
図1】ホストプロセッサをストールさせることなく、低電力状態に入ることができるコヒーレントメモリを備えたマルチレベルメモリシステムの一例に関するブロック図である。
【0007】
図2】コヒーレントメモリを低電力状態に置く前にページテーブルエントリを変更できるシステムの一例に関するブロック図である。
【0008】
図3】コヒーレントメモリを低電力にするプロセスの一例に関するフロー図である。
【0009】
図4】コヒーレントメモリを低電力からウェイクさせるプロセスの一例に関するフロー図である。
【0010】
図5】コヒーレントな低電力状態の管理が実施され得るメモリサブシステムの一例に関するブロック図である。
【0011】
図6】コヒーレントな低電力状態の管理が実施され得るコンピューティングシステムの一例に関するブロック図である。
【0012】
図7】コヒーレントな低電力状態の管理が実施され得るモバイルデバイスの一例に関するブロック図である。
【0013】
いくつかの詳細および実装例に関する説明が後に続き、この説明には、一部または全部の実施例を示し得る図および他の可能性のある実装例に関する非限定的な説明が含まれる。
【発明を実施するための形態】
【0014】
本明細書に説明されるように、コヒーレントアクセスを用いて管理されるメモリを備えたメモリサブシステムが、メモリを低電力状態にすることを可能にするようにページテーブルエントリを管理できる。メモリ制御では、メモリを低電力状態に入るようにトリガする前に、メモリのページテーブルエントリを変更することができる。メモリ制御は、ホストオペレーティングシステム(OS)のメモリマネージャとメモリドライバとを含むことができる。ページテーブルエントリに対する変更は、メモリへの次のアクセスに対してページフォールトを生じさせることになる。ページフォールトは、メモリへのアクセスのフォールトルーチンを用いた処理をトリガし、通常のアクセスであれば生じるメモリへの同期遅延を回避することになる。
【0015】
コヒーレントメモリを含むシステムは、メインシステムメモリであるというよりは、セカンダリメモリまたは補助メモリであることが多い。したがって、コヒーレントメモリが、マルチレベルメモリ(MLM)システムにおける第2階層のメモリ、またはNUMA(non-uniform memory access:非対称メモリアクセス)アーキテクチャノード用の遠隔メモリである場合、システムはメインメモリにアクセスしているときである可能性が高く、コヒーレントメモリデバイスは利用されない。したがって、低電力状態に入るようデバイスをトリガする方が合理的である期間もあり得る。MLMシステムとは、プライマリメモリをニアメモリとして、またセカンダリメモリをファーメモリとして有するシステムを指し、ニアメモリアクセスはファーメモリアクセスより高速である(遅延が少ない)。NUMAアーキテクチャとは、1本より多くのメモリバスを有するシステムを指し、遠隔メモリへのホップには、メモリバス境界を越えることが必要になる。したがって、遠隔メモリはローカルメモリより高い遅延を有する(アクセスが遅い)。
【0016】
いずれにしても、コヒーレントメモリは必ずしも利用されるとは限らないが、ワークロード要求を考慮すると、低電力モードに入る機会がコヒーレントメモリに与えられることがある。コヒーレントメモリのページテーブルエントリを管理することで、コヒーレントメモリがシステム性能に影響を与えることなく低電力状態に入ることが可能になり得る。本明細書で説明するように、ホストがコヒーレントメモリのアドレス範囲を使用していない場合、システムがアクティブである間、システムはデバイス電力を低下させることができる。1つの例では、OSは、メモリマネージャまたはオペレーティングシステムのドライバなどによって、ページテーブルエントリの無効化後にコヒーレントメモリを低電力状態に入らせることができる。無効なページテーブルエントリがあると、システムは、プロセッサをストールさせてデバイスが低電力状態からウェイクするのを待つ代わりに、ページフォールトルーチンをトリガすることになる。プロセッサがストールすると、他にも、CPU(中央演算処理装置)タイムアウト、ハードウェアエラー、OSクラッシュなどのシステムエラー状態を引き起こすことがある。
【0017】
デバイスがウェイクするのを待つ代わりに、ホストプロセッサは、他のスレッドなどのプロセスまたは割り込みを処理し続けることができる。こうしたことは、コヒーレントメモリアクセスの完了を待っている場合にはできない。ホストプロセッサが他のタスクを行っている間に、コヒーレントメモリは低電力状態からウェイクして、ホストプロセッサからのメモリI/O動作を処理することができる。
【0018】
したがって、コヒーレントメモリは、ホストプロセッサに直接的影響を与えることなく、低電力状態を利用することができる。低電力状態を可能にする能力は、エネルギー消費の大幅な低減をもたらすことができ、こうしてデバイスのバッテリ寿命を延ばすことができる。低電力状態を用いる能力は、この能力がなければCXLをサポートできないかもしれない厳しい規制要件を有するプラットフォーム上で、CXL(コンピュートエクスプレスリンク:CXLコンソーシアムにより商標登録済み)のサポートを可能にし得る。CXLとは、CXLコンソーシアムが2020年11月に最初にリリースしたCXL2.0仕様、または現在検討中のCXL3.0仕様のことを指してよい。
【0019】
メモリデバイスを低電力状態にする前にページテーブルを変更する能力があると、システムは、例えばOSを介して、CXL.memインタフェースを有するメモリなどのコヒーレントデバイスを電源管理することができる。1つの例では、ページテーブルの変更は、ページテーブル内の参照の無効化であり、ページテーブルから参照を削除することはない。スリープ状態のコヒーレントデバイスに対する要求はフォールトになる。これにより、無効な参照を取得するためにフォールトルーチンがトリガされることになる。
【0020】
図1は、ホストプロセッサをストールさせることなく、低電力状態に入ることができるコヒーレントメモリを備えたマルチレベルメモリシステムの一例に関するブロック図である。システム100は具体的には、コヒーレントデバイスの電源管理を行うことができるマルチレベルメモリシステムを示している。
【0021】
SOC110は、プロセッサダイまたはプロセッサSOCパッケージの一例を表している。SOC110は、命令を実行する1つまたは複数のコア120を含むことが可能なプロセッサ112(すなわち、シングルコアプロセッサまたはマルチコアプロセッサ)を含む。1つの例では、コア120がプロセッサ側キャッシュ122を含み、このキャッシュにはキャッシュ制御回路およびキャッシュデータストレージが含まれる。キャッシュ122は、プロセッサ側のあらゆるタイプのキャッシュを表すことができる。1つの例では、個々のコア120は他のコアと共有されないローカルキャッシュリソース122を含む。1つの例では、複数のコア120がキャッシュリソース122を共有する。
【0022】
1つの例では、SOC110は、プロセッサシステムの各コンポーネントを相互接続するシステムファブリック130を含む。システムファブリック130は、プロセッサ112、周辺制御132、メインメモリ190へのアクセスを管理する統合メモリコントローラ(iMC)150およびセカンダリメモリ170へのアクセスを管理するiMC140といった1つまたは複数のメモリコントローラ、I/O制御(具体的に示されていない)、グラフィックスサブシステム(具体的に示されていない)、などのコンポーネント同士の相互接続であっても、またはこうした相互接続を含んでもよい。システムファブリック130により、これらのコンポーネントの間でデータ信号の交換が可能になる。システムファブリック130は一般的に、各コンポーネントを接続するように示されているが、システム100は必ずしも全てのコンポーネントの相互接続を示しているわけではないことが理解されるであろう。システムファブリック130は、1つまたは複数のメッシュ型接続、中央交換機構、リング型接続、またはファブリックの階層構造などの相互接続トポロジを表すことができる。
【0023】
1つの例では、SOC110は、SOC110の外側にある周辺コンポーネントまたは周辺デバイスに接続する1つまたは複数の周辺コントローラ132を含む。1つの例では、周辺制御132はプラットフォームコントローラ160に対するハードウェアインタフェースを表しており、システム100のハードウェアプラットフォームまたはシステムボードもしくはマザーボードにおける相互接続を制御して周辺機器をプロセッサ112に相互接続するための1つまたは複数のコンポーネントまたは回路を含む。周辺機器は、コンポーネント162で表されている。コンポーネント162は、プラットフォームコントローラ160を介してプロセッサ112に結合するあらゆるタイプのチップまたはインタフェースまたはハードウェア要素を表している。
【0024】
1つの例では、SOC110はSOCの各コンポーネントが配置されている共通の基板またはボードを有する。例えば、SOC110の各コンポーネントは、共通のボードまたは基板に搭載された個別部品であっても、またはこれを含んでもよい。1つの例では、SOC110の各コンポーネントは、同じ半導体基板に組み込まれた回路であっても、またはこれを含んでもよい。1つの例では、SOC110の各コンポーネントは、共通の半導体基板上にある複数のコンポーネントと、半導体基板に搭載された、もしくは共通のボード上に共通の半導体基板と共に搭載された1つまたは複数の追加のコンポーネントとを含み得る。
【0025】
1つの例では、SOC110はiMC150を含む。これは、メインメモリ190に接続してメインメモリ190へのアクセスを管理する制御ロジックを表している。iMC150は、ハードウェア回路およびソフトウェアまたはファームウェア制御ロジックを含んでよい。1つの例では、SOC110はiMC140を含む。これは、セカンダリメモリ170に接続してセカンダリメモリ170へのアクセスを制御する制御ロジックを表している。セカンダリメモリ170は、メインメモリ190と比較するとアクセス遅延が長い1つまたは複数のメモリデバイスを表している。セカンダリメモリ170は代替的に、補助メモリと呼ばれてもよい。iMC140は、ハードウェア回路およびソフトウェアまたはファームウェア制御ロジックを含んでよい。1つの例では、iMC140はプロセッサ112に統合されてよい。1つの例では、iMC150はプロセッサ112に統合されてよい。1つの例では、iMC140は、iMC150で表されるメモリコントローラの制御ロジックの一部またはサブセットである。
【0026】
1つの例では、システム100は、プラットフォームコントローラ160を介してSOC110に結合されたNVM(不揮発性媒体)180を含む。NVM180は、媒体182(これはNVM媒体である)と、媒体182へのアクセスを制御するコントローラ184とを含む不揮発性メモリを表している。1つの例では、NVM180は、PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)またはNVMe(不揮発性メモリエクスプレス)などの周辺接続によってSOC110に結合されたメモリデバイスである。PCIeは、PCI-SIGにより2017年10月に最初にリリースされたPCIエクスプレス基本仕様改訂4.0版、PCI-SIGにより2019年5月に最初にリリースされたPCIエクスプレス基本仕様改訂5.0版、またはその変形版に従ってよい。NVMeは、NVM Express Inc.により2019年6月に最初にリリースされたNVMeエクスプレス基本仕様またはその変形版に従ってよい。
【0027】
1つの例では、システム100はメインメモリ190を含み、これはプライマリシステムメモリを提供する。メインメモリ190は通常、不揮発性方式でデータを格納する揮発性媒体196を含む。1つの例では、メインメモリ190は、NVM媒体192と、NVM媒体192もしくは揮発性媒体196へのアクセス、またはNVM媒体192および揮発性媒体196の両方へのアクセスを制御するコントローラ194とを含む。コントローラ194は、コマンドの受領またはI/O(入力/出力)操作に応答してメモリ上の操作を管理するメモリ側のコントローラを表している。
【0028】
1つの例では、セカンダリメモリ170が、コヒーレントインタフェースにより管理されるバイトアドレス指定可能な不揮発性メモリを含む。1つの例では、iMC140は、CXL2.0またはCXL3.0といったCXLキャッシュ/メモリプロトコルインタフェース(CPI)規格などのCXL.memインタフェースを介してセカンダリメモリ170に接続する。媒体172は、セカンダリメモリ170の記憶媒体を表している。コントローラ174は、コマンドの受領またはI/O操作に応答してメモリ上の操作を管理するメモリ側のコントローラを表している。
【0029】
システム100のマルチレベルメモリシステムは、どのメモリリソースが含まれているか、またメモリリソースをどう用いるかに応じて、いくつかの方法のうちのいずれかで構成されてよい。システム100の全ての実装例が、示された全てのメモリタイプを含むわけではない。システム100には、マルチレベルシステムに用いることができるメモリの様々な考え得る変形版が示されている。
【0030】
1つの例では、NVM媒体への言及は、3次元クロスポイントメモリデバイス、他の不揮発性メモリデバイスなどの、ブロックアドレス指定可能なメモリデバイスまたはバイトアドレス指定可能なメモリデバイスを指してよい。1つの例では、NVM媒体は、メモリセルの抵抗状態またはメモリセルの相に基づいてデータを格納する不揮発性のブロックアドレス指定可能またはバイトアドレス指定可能な媒体を含んでよい。1つの例では、メモリデバイスは、カルコゲナイド系相変化材料(例えば、カルコゲナイドガラス)を用いてよい。1つの例では、メモリデバイスは、シングルレベルもしくはマルチレベルの相変化メモリ(PCM)もしくはスイッチ付き相変化メモリ(PCMS)、抵抗変化メモリ、ナノワイヤメモリ、強誘電体トランジスタ型ランダムアクセスメモリ(FeTRAM)、メモリスタ技術を組み込んでいる磁気抵抗型ランダムアクセスメモリ(MRAM)、またはスピン注入磁化反転(STT)型MRAM、あるいは上記のうちのいずれかの組み合わせなどのメモリであっても、またはこれを含んでもよい。
【0031】
一般に、システム100のセカンダリメモリ170が上位レベルのメモリまたは第2レベルのメモリ(例えば、2LM実装)として用いられる場合、システム100は主にデータをメインメモリ190に格納し、セカンダリメモリ170は、システムメモリの記憶容量を拡張するのに役立ち得るが、メインメモリ190と比較すると、潜在的にアクセス時間が遅いまたは遅延が長い。
【0032】
1つの例では、セカンダリメモリ170は、システムメモリバスとインタフェース接続する不揮発性媒体を含むNVDIMM(不揮発性デュアルインラインメモリモジュール)を表している。NVDIMMは、あらゆるタイプのバイトアドレス指定可能またはブロックアドレス指定可能な媒体を含んでよい。1つの例では、セカンダリメモリ170は、3次元クロスポイント(3DXP)メモリデバイスを表している。1つの例では、セカンダリメモリ170は、Optane DIMMを表している。Optaneは、Intel Corporationの登録商標である。Optaneには、バイトアドレス指定可能なメモリとしてシステムバスでアクセスされ得るメモリが含まれる。
【0033】
上述したように、1つの例では、セカンダリメモリ170はコヒーレントCXL.memインタフェースなどのコヒーレントインタフェースを介してSOC110とインタフェース接続することができる。プロセッサ112は、コンピューティングデバイスのCPU(中央演算処理装置)を表してよい。CPUのMOV命令またはSFENCEにより、プロセッサはコヒーレントCXL.memデバイスからのデータまたはデータコミットメントを待つことになる。CPUコア120は、それらの命令の完了を待っている間に、割り込みを処理できない。したがって、プロセッサ112が低いリンク状態(例えば、高い終了遅延を有するリンク状態)、低いデバイス電力状態(D3状態などの低電力状態を含む)にあるコヒーレントデバイスとしてロードまたはSFENCEをセカンダリメモリ170に発行するならば、これまではプロセッサ112がストールするか、またはランタイムエラーにあうであろう。デバイス状態が浅いと(例えば、低遅延終了の状態)、プロセッサ112による同期アクセスのためにストールが生じることはなく、プロセッサ112からの要求を処理するために再訓練またはウェイクすることになる。
【0034】
1つの例では、プロセッサ112は、ホストOSの一部としてメモリマネージャ(MEM MGR)128を実行する。1つの例では、プロセッサ112はメモリドライバ(MEM DRVR)124を実行する。全体として、メモリマネージャ128およびメモリドライバ124は、コヒーレントメモリデバイスに対してメモリ制御を提供する。メモリドライバ124は、プロセッサ112がメモリのハードウェアインタフェースを管理するために実行されるドライバまたはソフトウェアを表している。1つの例では、メモリドライバ124は、コヒーレントメモリデバイスとしてセカンダリメモリ170とインタフェース接続する制御ロジックを含む。プロセッサ112は、ドライバ(DRVR)126を含む。これは、プロセッサ112により実行される1つまたは複数の他のデバイスドライバを表している。ドライバ126は、システム100に含まれる別のコヒーレントデバイスに対するドライバを表してよい。
【0035】
1つの例では、メモリマネージャ128およびメモリドライバ124は、コヒーレントデバイスまたはコヒーレントデバイスリンクの低電力状態を管理する。より具体的には、メモリ制御はセカンダリメモリ170(またはシステム100の他のコヒーレントメモリ)のアドレス空間用のページテーブルエントリを変更できる。ページテーブルエントリの変更が、プロセッサ112によるセカンダリメモリ170への次の要求に対するフォールト処理を伴うページフォールトをトリガし得る。セカンダリメモリ170がウェイクして要求を処理するのを同期的に待つ代わりに、プロセッサ112は、セカンダリメモリ170がフォールト処理に基づいてウェイクするのを非同期的に待つことができる。そのような操作により、プロセッサ112が解放されて、セカンダリメモリ170がウェイクしている間に他の操作を行うことができるので、プロセッサのストールが回避されることになる。
【0036】
1つの例では、メモリマネージャ128はコヒーレントなセカンダリメモリ170の低電力状態に対して予想される遅延を判定することができる。1つの例において、メモリマネージャ128は、ウェイク遅延が設定可能なスレッショルドを超えるかどうかを判定することができる。1つの例において、ウェイク遅延がスレッショルドより小さい状態では、メモリマネージャ128は、セカンダリメモリ170が低電力状態に入り、その状態から抜けることが正常にできるようにしてよい。ウェイク遅延がスレッショルドを超えている場合、メモリマネージャ128は、デバイスのウェイキング用のページフォールトをトリガすることにより低電力状態を電源管理することができる。
【0037】
図2は、コヒーレントメモリを低電力状態に置く前にページテーブルエントリを変更できるシステムの一例に関するブロック図である。システム200は、システム100の一例によるシステムを表している。システム200は、複数のCPUコアを示しており、これらにはCPU210というラベルが付いている。CPUまたはCPUコアはメモリ240にアクセスする。このメモリは、アクセス用のコヒーレントインタフェースを備えたメモリを表している。
【0038】
1つのCPU210のみの詳細が示されている。他のCPUにも、1つのCPUの詳細図に示したものと同じまたは類似したコンポーネントがあってよい。1つの例では、CPU210は1つまたは複数のアプリケーション(APP)インスタンス212を実行する。アプリケーションインスタンス212は、メモリ240に格納されたデータを求める要求を生成する任意のアプリケーションを含んでよい。アプリケーションインスタンス212は、メモリ240へのアクセスを求める要求などのリソース要求をAPI(アプリケーションプログラミングインタフェース)214を介して行うことができる。
【0039】
1つの例では、API214を用いたアプリケーションインスタンス212による要求は、ドライバ216の1つまたは複数のインスタンスになる。ドライバ216は、ユーザデータ用のユーザモードドライバと、システム情報用のカーネルモードドライバとを含んでよい。ドライバ216は、低電力デバイス状態または低電力リンク状態からのアクセスを含んだメモリ240へのアクセスを管理できる。CPU210は、バス230によってメモリ240に通信可能に結合され得る。バス230は、CPU210とメモリ240との間の高速通信接続を表している。
【0040】
メモリ240は、アプリケーションインスタンス212、あるいはオペレーティングシステム(OS)220またはOSのコンポーネントもしくはエージェントのデータを格納できる。メモリ240は、CPU210の内部で操作を実行するためのオペレーショナルコードおよびデータリソースを格納できる。オペレーショナルコードおよびデータリソースとは、CPU210がアプリケーションまたはOS220を実行するのにアクセスする必要があるデータおよびコードを指す。OS220は、システムハードウェアインタフェース管理およびドライバを含むソフトウェアプラットフォームを提供し、OSがコンピューティング環境のハードウェアリソースにアクセスしている状態でアプリケーションが動作することを可能にする。ドライバ216は、OSのもとで実行されるドライバを表している。1つの例では、OS220は、メモリ240の状態を管理するメモリマネージャ(MGR)222を含む。メモリマネージャ222は、メモリ240へのアクセスがインタフェースの処理によっていつ低電力状態に入ることができるかを判定して、CPU210のストールを防ぐことができる。
【0041】
1つの例では、メモリ240はメモリインタフェース242を含む。1つの例では、メモリインタフェース242はCXL.memインタフェースである。コヒーレントメモリデバイスとして、CPU210は、他の操作を行う前に、I/O操作がメモリによって完了するのを待つことになる。メモリ240のコントローラ244は、メモリデバイスのコントローラを表しており、メモリデバイス固有の操作を管理する。アレイ246は、メモリ240のストレージアレイを表している。1つの例では、アレイ246は、バイトアドレス指定可能なメモリを提供する。1つの例では、アレイ246は揮発性メモリを表している。1つの例では、アレイ246は不揮発性メモリを表している。
【0042】
CPU210のページテーブル224は、ファイルシステムまたはメモリマネージャ222などのOS220により管理される情報を表しており、メモリに格納されたデータおよびコードの位置を示す。より具体的には、ページテーブル224はメモリ内のデータの状態を示す。ページテーブルは、参照がデータに利用できるかどうか、およびデータが利用できるかどうか、またはアクセス記述子をデータのためにリフレッシュする必要があるかどうかを示すことができる。
【0043】
TLB(変換ルックアサイドバッファ)226は、CPU210のOSおよびアプリケーションにアドレス変換を提供するロジックを表している。変換は、OSにおけるデータ用のハンドルがメモリ240のアドレス空間にどうマッピングされるかを示すことができる。1つの例では、変換は、要求されたデータの物理アドレスに対するマッピング表を含んでよい。TLB226は、仮想メモリインタフェース用の変換を行うことができる。
【0044】
1つの例では、ドライバ216は、コヒーレントメモリ240へのアクセスを管理するメモリドライバを含む。1つの例では、メモリ240が低電力状態に入るのをトリガする前に、メモリマネージャ222はページテーブル224を変更することができる。1つの例では、ドライバ216は、ページテーブルを変更する必要があるかどうかをメモリマネージャ222が最初に判定することなく、メモリ240を低電力状態にすることはない。
【0045】
以下の例では、CXL.memがコヒーレントメモリインタフェースの一例として用いられることになる。これらの例は、説明を目的にしているだけであり、コヒーレントインタフェースはCXL.memに限定されるものではないことが理解されるであろう。1つの例では、OS220は、メモリマネージャ222およびドライバ216を通じて、CXL.memによる低電力状態の管理が必要とされるかどうかを判定することができる。
【0046】
1つの例では、メモリマネージャ222は、低電力状態が所与の終了遅延基準を満たしているかどうかを判定する。低電力状態がこの遅延基準を満たしている場合、メモリマネージャ222は、メモリ240がこの状態に入ること、およびこの状態から抜けることを正常にできるようにしてよい。したがって、メモリ240はページテーブル224の変更を何もすることなく、PCIe/CXLアクセスによってウェイクアップすることになる。
【0047】
1つの例では、メモリマネージャ222は、低電力状態がシステム200にとって許容できない終了遅延を有するかどうかを判定する。こうした終了遅延は、CPU210のストールにつながることがあるからである。1つの例では、D3状態などの「オフ」状態の場合、メモリマネージャ222は終了遅延が許容できないと常に判定する。望ましくないCPU遅延を引き起こすようなデバイス状態では、メモリマネージャ222は、メモリ240を低電力状態にする前に、ページテーブル224のエントリを変更することができる。
【0048】
一般に、ページテーブル224の変更は、メモリ240への次のアクセスに応答してフォールトをトリガするまたは生成することになる変更を行うとみなされ得る。1つの例では、メモリマネージャ222はページテーブル224のエントリを無効にし、次いでメモリ240を低電力状態にする。エントリが無効になると、メモリ240のアドレス範囲に対する変換がなくなり、ページフォールトをトリガする。メモリマネージャ222は次に、ページフォールトハンドラを呼び出し、別の同期インタフェースの非同期操作を可能にしてよい。ページテーブル224のエントリを無効にするのは、そのエントリをページテーブル224から削除せずに行うことができる。
【0049】
1つの例では、メモリマネージャ222は、メモリ240が少なくともスレッショルド期間の間アイドルになっていると判定し、メモリ240を低電力状態に入るようにさせると決定する。スレッショルド期間は、OSポリシーにより設定される期間であってよい。1つの例では、この期間は設定可能である。この期間は、デバイスおよびシステム構成によって異なることがある。通常、メモリトラフィックは、ソフトウェアまたはドライバから見えない。1つの例では、ドライバ216は管理インタフェースを介してメモリ240に対して周期的にポーリングまたは照会を行い(例えば、デバイスが最後のメモリアクセスからの経過時間を報告する)、どの程度の期間、メモリがアイドルになっているかを判定する。
【0050】
1つの例では、メモリマネージャ222は、CXL.memのHPA(ホスト物理アドレス)範囲にあるいずれかのページがロックされているかどうかを確認する。これらのページは、例えば、DMA(ダイレクトメモリアクセス)などの目的で、ロックされていることがある。1つの例では、いずれかのページがロックされている場合、メモリマネージャ222は低電力エントリを中止し、デバイスを高電力状態にしておく。そのような場合には、浅い低電力状態が認められてよいが、深い低電力状態は許可されていない。
【0051】
1つの例では、メモリマネージャ222は、ページテーブル224にあるCXL.memのHPAページテーブルを無効にする。1つの例では、メモリマネージャ222は、これらのテーブルを削除することなく単にエントリを無効にする。1つの例では、メモリマネージャ222は、無効アドレスに対応するTLB226に含まれるアドレスに関してTLBシュートダウンを行う。1つの例において、システム200は、システムメモリの第1階層または第1レベルのページテーブルエントリを維持する。1つの例では、OSはメモリマネージャ222を通じてテーブル内の現ビットを消去する。「現」ビットを消去することにより、システムは、メモリアドレス空間が参照されている場合、強制的にフォールトにする。CPU210によるメモリ240のアドレス空間への次のアクセス要求に伴って参照が生じる。
【0052】
1つの例では、メモリマネージャ222は1つまたは複数のページテーブルエントリ(PTE)を編集する。1つの例では、ページテーブル224は、最終的な物理アドレスを与えてメモリアクセス用のアドレスにフラグを付けるページテーブル階層の最終段階を表している。フラグは、例えば、有効ビット用のフラグを含んでよい。PTEを無効にすることで、アドレスがページテーブル224に残ることが可能になるので、ページの物理アドレスマッピング表を維持できる。ページを無効にしても、マッピング表が削除されてマッピング表の生成が必要になるわけではなく、単にマッピング表が無効になるだけであり、デバイスが低電力からアウェイクした後にアクセスが可能になるように、再度有効にすることができる。
【0053】
OSメモリマネージャは(例えば、システムスタートから)明確なポリシーを有し、マルチレベルメモリの第1階層メモリにあるCXL.mem用の全ページテーブルの第1レベルを管理することができる。したがって、例えば、システムは、システム100のシステムメモリ190などのシステムメモリ内にページテーブル224を維持してよい。ホストメモリの第1レベルは、テーブルを確認するためのメモリ240にアクセスしないと、CXL.memのHPAにアクセスすることになるのを確実にすることができる。ページテーブル224を変更した後に、メモリマネージャ222はメモリ240に低電力(例えば、リンク状態、デバイス状態、D3)に入るよう指示することができる。1つの例では、OS220は、CXL.memオブジェクトの状態を低電力にあるとして今後の参照のために保存する。
【0054】
1つの例では、メモリアドレス範囲への次のアクセスまたはその次のアクセスでメモリ240を低電力状態からウェイクさせるために、ドライバ216は、低電力状態にあるメモリ240のHPAにマッピングするCXL.mem仮想アドレスを参照できる。HPA用の有効な変換がないと、参照はフォールトになる。1つの例では、第1レベルのページテーブルエントリ用の現ビットを消去することにより、アドレス範囲への参照がフォールトにつながることになる。1つの例では、変換がないことと消去またはリセットされた現ビットとの組み合わせが、フォールトをトリガすることになる。このフォールトは、命令がCPU210で実行される前に生じるので、CPU210のストールを防ぐことになる。フォールトを生じさせたアドレスは、フォールトが処理されるまで実行されることはない。したがって、CPU210は他の作業を続けるか、または割り込みを処理することができる。1つの例では、CPU210は、フォールト処理と共に他の操作をタイムスライスする。
【0055】
1つの例では、フォールトハンドラが低電力状態フラグを確認する。フラグを保存してシステムメモリの第1階層にあるデータを管理するOSメモリマネージャによって、状態フラグが保存され得る。1つの例では、デバイスが低電力ではない場合、メモリマネージャはページテーブル224のページテーブル更新に対応できる。そのようなプロセスを、通常のページテーブルサービス操作に従って実行することができる。
【0056】
1つの例では、デバイスが低電力状態にある場合、メモリマネージャ222のフォールトハンドラがドライバ216にメモリ240をウェイクさせるよう要求する。1つの例では、メモリ240がD3状態などの電源を切られた状態にある場合、ドライバ216、すなわちCXL.memドライバまたはバスドライバ(バス230用のドライバ)のいずれかが、ACPI(アドバンスド・コンフィグレーション・アンド・パワー・インターフェイス)メソッドを呼び出して、プラットフォームにメモリ240への電源を回復させる。メモリ240への電源が回復した後に、メモリマネージャ222はPMCSR(電源管理制御およびステータスレジスタ)をアクティブ状態に設定する。1つの例では、メモリ240をアクティブ状態に設定するのと組み合わせて、メモリマネージャ222は、電源を切られた状態のデバイスをアクティブ状態に再列挙(例えば、D3からD0に移行)することができる。完全に電源が投入されると、デコーダおよびインタフェースハードウェアが再初期化され、システムはCPU210にフォールトを通知して、このCPUがフォールト例外処理を行うのを可能にすることができる。
【0057】
メモリ240が超低電力リンク状態または超低電力デバイス状態にあるが、電源を切られていない場合、1つの例では、ドライバ216が明確な管理ウェイクコマンドを発行することができる。例えば、ドライバ216は、割り込み処理完了になる何もしないコマンドまたは任意の管理コマンドを発行することができる。フォールト処理などの管理は、非同期管理インタフェースと理解される。
【0058】
非同期管理インタフェースをトリガすることで、コヒーレントインタフェースの期待される同期動作から、この動作が取り除かれる。非同期管理インタフェースの一例が、MSI-X(拡張メッセージ信号割り込み)が有効になったCXL管理処理であってよい。非同期管理コマンドインタフェースを用いて、フォールトハンドラ(例えば、CXLドライバによるもの)は、割り込みによって操作の完了が通知されるまで、管理コマンドを要求し、制御を放棄することができる。割り込みは、CPUをトリガして再度メモリ240にアクセスさせることができる。
【0059】
割り込みに応答して、メモリ240は、アクティブなリンク、アクティブなデバイス電力、アクティブなインタフェースなどと共に、完全にアウェイク状態であるとみなされることになる。次にメモリ240は、要求に対応できる状態になる。1つの例では、フォールト処理イベントが設定され、メモリマネージャによるフォールト処理の残りが発生する。1つの例では、ドライバ216はフォールト例外が処理されたことをCPU210に示し、CPUはメモリアクセスを処理し始めることができる。
【0060】
ページがDMAのためにロックされることに関しては、上述されている。非同期操作をトリガするフォールト処理が機能するのは、CPU210がアクセスを生成するときであることが理解されるであろう。しかしながら、DMAは一般に、フォールトを生成しない。したがって、あるページがCXLデバイスへのDMAにマッピングされている場合、1つの例では、システム200はCXLデバイスが低電力状態に入るのを許可しない。システム200は、CXLデバイスへのDMAアクセスを却下することもできる、またはCXLデバイスへのDMAを許可することもできるが、CXLデバイスを低電力状態にすることは許可しない。
【0061】
DMAエンジンは通常、デバイスを自然にウェイクさせ、DMAエンジンにはタイムアウトがある。終了遅延が長すぎるデバイスが、ウェイクするのに時間がかかりすぎる場合、DMA故障を引き起こすことがある。DMA動作はCPUブロッキングイベントではないので、DMA動作は、DMAエンジンのタイムアウトウインドウ内の終了遅延に対してCPUをストールさせることなく遅延を追加することになる。通常のCXL操作では、OSはCXL.memのHPA範囲へのアクセスを完全に制御し、OSは、システム全体の役に立つ独自の用途のためにCXL.memを隠す。したがって、アドレス範囲との間でやり取りするコンテンツはOSおよびメモリマネージャの自由裁量に委ねられてよい。
【0062】
図3は、コヒーレントメモリを低電力にするプロセスの一例に関するフロー図である。プロセス300は、メモリなどのコヒーレントデバイスを低電力状態に置くプロセスを表している。プロセス300は、システム200によるシステムにより実行され得るプロセスを表している。
【0063】
これらの操作は、ホストオペレーティングシステムのメモリマネージャなどのコンポーネント、ドライバ、およびメモリデバイスにより行われるものとして示されている。1つの例では、メモリマネージャを様々なコンポーネントに分離することができ、メモリマネージャ内の様々なコンポーネントによって様々な操作を行うことができる。1つの例では、メモリマネージャについて示されている1つまたは複数のコンポーネントが、ドライバなどのシステムコンポーネントにより実行されてよい。
【0064】
1つの例では、メモリマネージャは302において、メモリがアイドルスレッショルドに到達しているかどうかを判定する。1つの例では、アイドルスレッショルドに到達していない場合、304においてNO分岐に進み、この操作306において開始に戻ることができるので、処理操作の終了に進む。スレッショルドに到達している場合、304ではYES分岐に進み、1つの例では、308においてメモリマネージャは、メモリ用のいずれかのページがロックされているかどうかを判定する。
【0065】
ロックされているページがある場合、310ではYES分岐に進み、1つの例では、312においてメモリマネージャは開始に戻ることができるので、処理操作の終了に進む。ロックされているページがない場合、310ではNO分岐に進み、1つの例では、314においてメモリマネージャはページテーブルエントリを変更し、そのエントリを無効にする。ドライバは次に316において、低電力状態に入るメモリデバイスにコマンドを送出することができる。
【0066】
ホスト(メモリマネージャおよびドライバ)は、メモリを低電力状態に置く操作を完了することになる。メモリは318において、ドライバからパワーダウンコマンドまたは低電力コマンドを受領する。次にメモリは320において、コマンドに従って低電力状態に入ることができる。
【0067】
図4は、コヒーレントメモリを低電力からウェイクさせるプロセスの一例に関するフロー図である。プロセス400は、メモリなどのコヒーレントデバイスを低電力状態からウェイクさせるプロセスを表している。プロセス400は、システム200によるシステムにより実行され得るプロセスを表している。
【0068】
これらの操作は、ホストオペレーティングシステムのメモリマネージャなどのコンポーネント、ドライバ、およびメモリデバイスにより行われるものとして示されている。1つの例では、メモリマネージャを様々なコンポーネントに分離することができ、メモリマネージャ内の様々なコンポーネントによって様々な操作を行うことができる。1つの例では、メモリマネージャについて示されている1つまたは複数のコンポーネントが、ドライバなどのシステムコンポーネントにより実行されてよい。
【0069】
1つの例では、メモリマネージャは402においてホストプロセッサからの要求を受領し、低電力状態にあるコヒーレントメモリにアクセスする。1つの例では、このアクセスがページフォールトにならない場合、404ではNO分岐に進み、1つの例では、メモリマネージャは406において開始に戻ることができるので、処理操作の終了に進む。このアクセスがページフォールトになる場合、404ではYES分岐に進み、1つの例では、メモリマネージャは408においてデバイス状態を確認することができる。
【0070】
デバイスの状態がアクティブ状態である場合、410ではYES分岐に進み、1つの例では、メモリマネージャは412において、フォールトに対処するために通常のフォールト処理を行う。次に通常のフォールト処理によって、その操作が実行され、処理の終了に進むことができる。メモリデバイスがアクティブ状態にない場合、410ではNO分岐に進み、1つの例では、メモリマネージャは、デバイスが超低電力状態にあるのか、または単に低電力状態にあるだけなのかを判定する。
【0071】
デバイスが超低電力状態にない場合(つまり、低電力状態にあるだけの場合)、414ではNO分岐に進み、1つの例では、ドライバは416において、割り込み処理完了になるコマンドを発行する。割り込み処理完了とは、フォールトハンドラでアクセスを処理することを指し、これによりデバイスは低電力状態からウェイクするのに十分な時間を持つことが可能になる。次にこの処理は412において、通常のフォールト処理に進むことができる。
【0072】
デバイスが超低電力状態にある場合、414ではYES分岐に進み、1つの例では、ドライバは418において、メモリをパワーダウンまたは超低電力状態からウェイクさせるために電源管理操作を行う。1つの例では、ドライバはメモリにコマンドを発行し、メモリは420において、このコマンドを受領して低電力状態からウェイクする。ドライバがコマンドをメモリに発行した場合、処理は412において通常のフォールト処理に進むことができる。
【0073】
図5は、コヒーレントな低電力状態の管理が実施され得るメモリサブシステムの一例に関するブロック図である。システム500は、コンピューティングデバイス内のプロセッサとメモリサブシステムの要素とを含む。システム500は、システム100またはシステム200の一例によるシステムの一例である。
【0074】
1つの例では、システム500はCXL制御590を含み、これは、コヒーレント実装のメモリデバイス540の電源管理制御を表している。CXL制御590は、上述したいずれかの例によるメモリマネージャおよびメモリドライバを表すことができる。CXL制御590は、ページテーブルを管理して、メモリデバイス540への次のアクセスにページフォールトをトリガさせることができる。したがって、メモリアクセスはフォールトルーチンによって処理され得る。ページテーブルを変更した後に、CXL制御590は、本明細書のいずれかの例に従って、低電力状態に入るようにメモリデバイス540をトリガすることができる。
【0075】
プロセッサ510は、オペレーティングシステム(OS)およびアプリケーションを実行できるコンピューティングプラットフォームの処理ユニットを表しており、全体としてメモリのホストまたはユーザと呼ばれることがある。OSおよびアプリケーションは、メモリアクセスをもたらす操作を実行する。プロセッサ510は、1つまたは複数の別個のプロセッサを含んでよい。それぞれ別個のプロセッサは、単一の処理ユニット、マルチコアの処理ユニット、またはその組み合わせを含んでよい。処理ユニットは、CPU(中央演算処理装置)などのプライマリプロセッサ、GPU(グラフィックス処理装置)などの周辺プロセッサ、またはその組み合わせであってもよい。メモリアクセスは、ネットワークコントローラまたはハードディスクコントローラなどのデバイスによっても開始されてよい。そのようなデバイスは、システムによってはプロセッサと統合されても、もしくはバス(例えば、PCIエクスプレス)を介してプロセッサに接続されても、またはその組み合わせでもよい。システム500は、SOC(システムオンチップ)として実装されても、または複数のスタンドアロン型コンポーネントで実装されてもよい。
【0076】
メモリデバイスへの言及は、様々なメモリタイプに適用することができる。メモリデバイスは、揮発性メモリ技術を指すことが多い。揮発性メモリとは、その状態(したがって格納されているデータも)が、デバイスへの電源が遮断された場合に不確定になるメモリである。不揮発性メモリとは、その状態が、デバイスへの電源が遮断されても確定しているメモリを指す。動的揮発性メモリは、デバイスに格納されたデータをリフレッシュして状態を維持する必要がある。動的揮発性メモリの1つの例には、DRAM(ダイナミックランダムアクセスメモリ)、または同期式DRAM(SDRAM)などの何らかの派生品が含まれる。本明細書で説明されるようなメモリサブシステムは、DDR4(ダブルデータレートバージョン4、JESD79-4:JEDEC(電子デバイス技術合同協議会、現在のJEDEC固体素子技術協会)が2012年9月に最初に公開)、LPDDR4(低電力DDRバージョン4、JESD209-4:JEDECが2014年8月に最初に公開)、WIO2(ワイドI/O 2(WideIO2)、JESD229-2:JEDECが2014年8月に最初に公開)、HBM(高帯域幅メモリDRAM、JESD235A:JEDECが2015年11月に最初に公開)、DDR5(DDRバージョン5:JEDECが2020年7月に最初に公開)、LPDDR5(LPDDRバージョン5、JESD209-5:JEDECが2019年2月に最初に公開)、HBM2(HBMバージョン2、JESD235C:JEDECが2020年1月に最初に公開)、もしくはHBM3(HBMバージョン3、JEDECが現在検討中)など、またはこうしたメモリ技術の組み合わせ、およびそのような仕様の派生版または拡張版に基づく技術といったいくつかのメモリ技術と互換性を有してよい。
【0077】
揮発性メモリに加えて、またはその代わりに、1つの例では、メモリモジュールは永続的メモリDIMMであっても、または不揮発性システムメモリであってもよく、これはシステムメモリバスに接続された不揮発性メモリを指す。そのようなメモリデバイスには、3次元クロスポイント(3DXP)メモリデバイスが含まれ得る。3DXPは、バイトアドレス指定可能な不揮発性メモリデバイスまたはブロックアドレス指定可能な不揮発性メモリデバイスとして動作できる。メモリデバイスには、メモリセルの抵抗状態またはメモリセルの相に基づいてデータを格納する不揮発性のバイトアドレス指定可能な媒体、またはブロックアドレス指定可能な媒体が含まれ得る。1つの例では、メモリデバイスは、カルコゲナイド系相変化材料(例えば、カルコゲナイドガラス)を用いてよい。1つの例では、システムメモリデバイスは、永続的ランダムアクセスメモリ用のNAND型フラッシュメモリ、永続的ランダムアクセスメモリ用のNOR型フラッシュメモリ、シングルレベルもしくはマルチレベルの相変化メモリ(PCM)もしくはスイッチ付き相変化メモリ(PCMS)、抵抗変化メモリ、ナノワイヤメモリ、強誘電体トランジスタ型ランダムアクセスメモリ(FeTRAM)、メモリスタ技術を組み込んでいる磁気抵抗型ランダムアクセスメモリ(MRAM)、またはスピン注入磁化反転(STT)型MRAM、あるいは上記のうちのいずれかの組み合わせなどのメモリであっても、またはこれを含んでもよい。
【0078】
メモリコントローラ520は、システム500の1つまたは複数のメモリコントローラ回路またはデバイスを表している。メモリコントローラ520は、プロセッサ510による操作の実行に応答してメモリアクセスコマンドを生成する制御ロジックを表している。メモリコントローラ520は、1つまたは複数のメモリデバイス540にアクセスする。メモリデバイス540は、上記のいずれかによるDRAMデバイスであってよい。1つの例では、メモリデバイス540は様々なチャネルとして編成され且つ管理される。各チャネルは、複数のメモリデバイスに並列に結合するバスおよび信号ラインに結合する。各チャネルは独立して動作可能である。したがって、各チャネルは独立してアクセスされ且つ制御され、タイミング、データ転送、コマンドおよびアドレスの交換、並びに他の操作がチャネルごとに分かれている。結合とは、電気的結合、通信的結合、物理的結合、またはそれらの組み合わせを指してよい。物理的結合には、直接的接触が含まれ得る。電気的結合には、コンポーネント間の電気の流れを可能にする、またはコンポーネント間のシグナリングを可能にする、またはその両方を可能にするインタフェースまたは相互接続が含まれる。通信的結合には、コンポーネント同士のデータ交換を可能にする、有線または無線を含む接続が含まれる。
【0079】
1つの例では、チャネルごとの設定が、別個のモードレジスタなどのレジスタ設定によって制御される。1つの例では、それぞれのメモリコントローラ520が別個のメモリチャネルを管理するが、システム500は単一のコントローラにより管理される複数のチャネルを有するように、または単一のチャネル上に複数のコントローラを有するように構成され得る。1つの例では、メモリコントローラ520は、プロセッサと同じダイ上に実装されるか、または同じパッケージ空間に実装されるロジックといったように、ホストプロセッサ510の一部である。
【0080】
メモリコントローラ520は、上記のようなメモリチャネルなどのメモリバスに結合するI/Oインタフェースロジック522を含む。I/Oインタフェースロジック522(およびメモリデバイス540のI/Oインタフェースロジック542)は、デバイス同士を接続するピン、パッド、コネクタ、信号ライン、配線、もしくは電線などのハードウェア、またはそれらの組み合わせを含み得る。I/Oインタフェースロジック522は、ハードウェアインタフェースを含み得る。示されるように、I/Oインタフェースロジック522は少なくとも、信号ライン用のドライバ/送受信器を含む。一般に、集積回路インタフェース内の電線は、パッド、ピン、またはコネクタと結合し、デバイス間の信号ラインまたは配線などの電線をインタフェース接続する。I/Oインタフェースロジック522は、デバイス間の信号ラインで信号を交換するドライバ、受信器、送受信器、もしくは終端器などの回路、または回路の組み合わせを含み得る。信号の交換には、送信または受信のうちの少なくとも一方が含まれる。I/O522をメモリコントローラ520からメモリデバイス540のI/O542に結合するように示されているが、メモリデバイス540のグループが並列にアクセスされるシステム500の一実装例では、複数のメモリデバイスがメモリコントローラ520の同じインタフェースへのI/Oインタフェースを含み得ることが理解されるであろう。1つまたは複数のメモリモジュール570を含むシステム500の一実装例では、I/O542は、メモリデバイス自体のインタフェースハードウェアに加えて、メモリモジュールのインタフェースハードウェアを含み得る。他のメモリコントローラ520は、他のメモリデバイス540への別個のインタフェースを含むことになる。
【0081】
メモリコントローラ520とメモリデバイス540との間のバスは、メモリコントローラ520をメモリデバイス540に結合する複数の信号ラインとして実装され得る。バスは通常少なくとも、クロック(CLK)532と、コマンド/アドレス(CMD)534と、書き込みデータ(DQ)および読み出しデータ(DQ)536と、0またはそれより多くの他の信号ライン538とを含んでよい。1つの例では、メモリコントローラ520とメモリとの間のバスまたは接続がメモリバスと呼ばれることがある。1つの例では、メモリバスはマルチドロップバスである。CMD用の信号ラインは、「C/Aバス」(またはADD/CMDバス、もしくはコマンドの転送(CまたはCMD)およびアドレス(AまたはADD)情報の転送を示す何らかの他の名称)と呼ばれることがあり、書き込みDQおよび読み出DQ用の信号ラインは、「データバス」と呼ばれることがある。1つの例では、独立した各チャネルが異なるクロック信号、C/Aバス、データバス、および他の信号ラインを有する。したがって、システム500は、独立したインタフェースパスが別個のバスとみなされ得るという点では、複数の「バス」を有するとみなされてよい。バスには、明示的に示されているラインに加えて、ストローブ信号ライン、アラートライン、補助ラインなどの信号ライン、またはその組み合わせのうちの少なくとも1つが含まれ得ることが理解されるであろう。シリアルバス技術がメモリコントローラ520とメモリデバイス540との間の接続に用いられ得ることも理解されるであろう。シリアルバス技術の一例が、5B10Bエンコーディングおよび、単一の差動ペアの信号を介した埋め込みクロックを各方向に用いた高速データの送信である。1つの例では、CMD534は、複数のメモリデバイスと並列に共有された信号ラインを表している。1つの例では、複数のメモリデバイスがCMD534のエンコーディングコマンド信号ラインを共有し、それぞれが個々のメモリデバイスを選択する別個のチップ選択(CS_n)信号ラインを有する。
【0082】
システム500の例では、メモリコントローラ520とメモリデバイス540との間のバスは、補助コマンドバスCMD534と、書き込みデータおよび読み出しデータを搬送する補助バスDQ536とを含むことが理解されるであろう。1つの例では、データバスは、読み出しデータ用および書き込み/コマンドデータ用の双方向ラインを含み得る。別の例では、補助バスDQ536は、ホストからメモリへの書き込みおよびデータ用の単方向書き込み信号ラインを含んでよく、またメモリからホストへの読み出しデータ用の単方向ラインを含んでよい。選択したメモリ技術およびシステム設計に従って、他の信号538がストローブラインDQSなどのバスまたはサブバスに付随してよい。システム500の設計、またはある設計例が複数の実装例をサポートする場合には実装例に基づいて、データバスはメモリデバイス540ごとに多少の帯域幅を有し得る。例えば、データバスは、x4インタフェース、x8インタフェース、x16インタフェースなどのインタフェースのいずれかを有するメモリデバイスをサポートできる。慣例表現の「xW」において、Wはメモリデバイス540のインタフェースサイズまたはインタフェースの幅を意味する整数であり、これはメモリコントローラ520とデータを交換する信号ラインの数を表している。メモリデバイスのインタフェースサイズは、いくつのメモリデバイスをシステム500のチャネルごとに同時に用いることができるか、または同じ信号ラインに並列に結合できるかに関する制御因子である。1つの例では、高帯域幅メモリデバイス、ワイドインタフェースデバイス、もしくはスタックメモリ構成、またはその組み合わせにより、x128インタフェース、x256インタフェース、x512インタフェース、x1024インタフェースなどのデータバスインタフェース幅といったより広いインタフェースが可能になり得る。
【0083】
1つの例では、メモリデバイス540およびメモリコントローラ520は、バースト時にまたは連続データ転送のシーケンスでデータバスを介してデータを交換する。バーストは転送サイクルの数に対応し、転送サイクルはバス周波数に関連している。1つの例では、転送サイクルは、同じクロックまたはストローブ信号エッジ(例えば、立ち上がりエッジ)で生じる転送のクロックサイクル全体であってよい。1つの例では、システムクロックのサイクルを参照する全てのクロックサイクルが、複数の単位間隔(UI)に分離され、各UIは転送サイクルである。例えば、ダブルデータレート転送では、クロック信号の両方のエッジ(例えば、立ち上がりおよび立ち下がり)でトリガする。バーストは、設定された数のUIの間続き得るものであり、これはレジスタに格納されるコンフィグレーションでも、または実行時にトリガされるコンフィグレーションでもよい。例えば、8個連続の転送期間のシーケンスはバースト長8(BL8)とみなされてよく、各メモリデバイス540は各UIでデータを転送することができる。したがって、BL8で動作するx8メモリデバイスでは、64ビットのデータ([8本のデータ信号ライン]×[バーストの間にラインごとに転送される8個のデータビット])を転送することができる。この簡単な例は、単なる実例であって限定しているわけではないことが理解されるであろう。
【0084】
メモリデバイス540は、システム500のメモリリソースを表している。1つの例では、各メモリデバイス540は別個のメモリダイである。1つの例では、各メモリデバイス540は、デバイスまたはダイごとに、複数の(例えば、2つの)チャネルとインタフェース接続することができる。各メモリデバイス540はI/Oインタフェースロジック542を含み、これは、デバイスの実装により決定される帯域幅(例えば、x16もしくはx8または何らかの他のインタフェース帯域幅)を有する。I/Oインタフェースロジック542により、メモリデバイスはメモリコントローラ520とインタフェース接続することが可能になる。I/Oインタフェースロジック542は、ハードウェアインタフェースを含むことができ、メモリデバイス側においては、メモリコントローラのI/O522に従ってよい。1つの例では、複数のメモリデバイス540が同じコマンドバスおよびデータバスに並列に接続される。別の例では、複数のメモリデバイス540が同じコマンドバスに並列に接続され、且つ異なるデータバスに接続される。例えば、システム500は並列に結合される複数のメモリデバイス540で構成されてよく、各メモリデバイスはコマンドに応答し、それぞれの内部にあるメモリリソース560にアクセスする。書き込み操作では、個々のメモリデバイス540がデータワード全体の一部を書き込むことができ、読み出し操作では、個々のメモリデバイス540がデータワード全体の一部をフェッチすることができる。このワードの残りのビットは、他のメモリデバイスにより並列に提供されるか、または受信されることになる。
【0085】
1つの例では、メモリデバイス540は、コンピューティングデバイスのマザーボードまたはホストシステムプラットフォーム(例えば、プロセッサ510が配置されているPCB(プリント回路基板))に直接的に配置される。1つの例では、これらのメモリデバイス540がメモリモジュール570に編成されてよい。1つの例では、メモリモジュール570はデュアルインラインメモリモジュール(DIMM)を表している。1つの例では、メモリモジュール570は、アクセスまたは制御回路の少なくとも一部を共有する複数のメモリデバイスによる他の編成を表しており、この回路は、ホストシステムプラットフォームとは別個の回路、別個のデバイス、または別個のボードであってよい。メモリモジュール570は複数のメモリデバイス540を含んでよく、メモリモジュールは、それらに配置されて含まれているメモリデバイスへの複数の別個のチャネルのためのサポートを含むことができる。別の例では、メモリデバイス540は、例えば、マルチチップモジュール(MCM)、パッケージオンパッケージ、シリコン貫通電極(TSV)などの手法、またはその組み合わせといった手法によって、メモリコントローラ520と同じパッケージに組み込まれてよい。同様に、1つの例では、複数のメモリデバイス540はメモリモジュール570に組み込まれてよく、これらのメモリデバイス自体は、メモリコントローラ520と同じパッケージに組み込まれてよい。それらの実装例および他の実装例では、メモリコントローラ520はホストプロセッサ510の一部であってよいことが理解されるであろう。
【0086】
メモリデバイス540はそれぞれ、1つまたは複数のメモリアレイ560を含む。メモリアレイ560は、データ用のアドレス指定可能なメモリ位置またはストレージ位置を表している。通常、メモリアレイ560は、ワード線(行)およびビット線(行の中の個々のビット)の制御によってアクセスされるデータの行として管理される。メモリアレイ560は、メモリの別個のチャネル、ランク、およびバンクとして編成されてよい。チャネルとは、メモリデバイス540内のストレージ位置への独立した制御パスを指してよい。ランクとは、並列になっている複数のメモリデバイス全体で共通の位置(例えば、様々なデバイス内の同じ行アドレス)を指してよい。バンクとは、メモリデバイス540内のメモリ位置のサブアレイを指してよい。1つの例では、メモリのバンクは複数のサブバンクに分割され、これらのサブバンクには共有回路の少なくとも一部(例えば、ドライバ、信号ライン、制御ロジック)があるので、別々のアドレス指定およびアクセスが可能になる。チャネル、ランク、バンク、サブバンク、バンクグループなどのメモリ位置編成、およびこうした編成の組み合わせは、それらを物理リソースに適用する際に重複し得ることが理解されるであろう。例えば、同じ物理メモリ位置が特定のバンクとして特定のチャネルでアクセスされてよく、このバンクはランクにも属してよい。したがって、メモリリソースの編成は、排他的ではなく包含的な方式で理解されるであろう。
【0087】
1つの例では、メモリデバイス540は1つまたは複数のレジスタ544を含む。レジスタ544は、メモリデバイスの操作用のコンフィグレーションまたは設定を提供する1つまたは複数のストレージデバイスまたはストレージ位置を表している。1つの例では、レジスタ544は、メモリコントローラ520が制御操作または管理操作の一部としてアクセスするデータを格納するメモリデバイス540のストレージ位置を提供することができる。1つの例では、レジスタ544は1つまたは複数のモードレジスタを含む。1つの例では、レジスタ544は1つまたは複数の多目的レジスタを含む。レジスタ544内の位置に関するコンフィグレーションによって、メモリデバイス540を様々な「モード」で動作するように設定することができる。このモードに基づいて、コマンド情報がメモリデバイス540内の様々な操作をトリガすることができる。さらに、またはその代わりに、様々なモードがモードに応じて、アドレス情報などの信号ラインからも様々な操作をトリガすることができる。レジスタ544の設定は、I/O設定(例えば、タイミング、終端器またはODT(オンダイ終端器)546、ドライバコンフィグレーションなどのI/O設定)のコンフィグレーションを示すことができる。
【0088】
1つの例では、メモリデバイス540は、I/O542と関連するインタフェースハードウェアの一部としてODT546を含む。ODT546は、上述したように構成されて、指定された信号ラインへのインタフェースに適用されるインピーダンスの設定を提供することができる。1つの例では、ODT546がDQ信号ラインに適用される。1つの例では、ODT546はコマンド信号ラインに適用される。1つの例では、ODT546はアドレス信号ラインに適用される。1つの例では、ODT546は前項のあらゆる組み合わせに適用され得る。ODT設定は、メモリデバイスがアクセス操作の選択対象なのか、または対象外デバイスなのかに基づいて変更されてよい。ODT546設定は、終端ラインでのシグナリングのタイミングおよび反射に影響を与える可能性がある。ODT546による綿密な制御により、適用されるインピーダンスと負荷のマッチングが改善されて、高速動作が可能になり得る。ODT546は、I/Oインタフェース542、522の特定の信号ラインに適用されてよく(例えば、DQライン用のODTまたはCAライン用のODT)、必ずしも全ての信号ラインに適用されるわけではない。
【0089】
メモリデバイス540はコントローラ550を含み、これはメモリデバイス内の内部操作を制御するメモリデバイス内の制御ロジックを表している。例えば、コントローラ550は、メモリコントローラ520により送出されるコマンドをデコードし、そのコマンドを実行するまたは満足させる内部操作を生成する。コントローラ550は、内蔵コントローラと呼ばれることがあり、ホストのメモリコントローラ520とは別である。コントローラ550は、どのモードが選択されているかをレジスタ544に基づいて決定し、選択されているモードに基づいて、メモリリソース560にアクセスする操作などの操作の内部実行を設定することができる。コントローラ550は、制御信号を生成してメモリデバイス540内のビットのルーティングを制御し、選択されているモードに適切なインタフェースを提供し、適切なメモリ位置またはアドレスにコマンドを送る。コントローラ550はコマンドロジック552を含み、これは、コマンド信号ラインおよびアドレス信号ラインで受信したコマンドエンコーディングをデコードすることができる。したがって、コマンドロジック552はコマンドデコーダであっても、またはこれを含んでもよい。コマンドロジック552を用いることで、メモリデバイスはコマンドを識別して、要求されたコマンドを実行する内部操作を生成することができる。
【0090】
再度メモリコントローラ520を参照すると、メモリコントローラ520はコマンド(CMD)ロジック524を含み、これは、メモリデバイス540に送出するコマンドを生成するロジックまたは回路を表している。コマンドの生成とは、スケジューリング前のコマンドのこと、またはキューコマンドを送出できる状態に準備することを指し得る。一般に、メモリサブシステムにおけるシグナリングは、メモリデバイスがコマンドを実行すべき1つまたは複数のメモリ位置を示すかまたは選択するために、コマンド内にまたはコマンドに付随してアドレス情報を含む。メモリデバイス540のトランザクションに関するスケジューリングに応答して、メモリコントローラ520はI/O522を介してコマンドを発行して、メモリデバイス540にコマンドを実行させることができる。1つの例では、メモリデバイス540のコントローラ550は、I/O542を介してメモリコントローラ520から受信したコマンドおよびアドレス情報を受領してデコードする。受領したコマンドおよびアドレス情報に基づいて、コントローラ550は、メモリデバイス540内のロジックおよび回路の動作のタイミングを制御して、コマンドを実行することができる。コントローラ550は、タイミングおよびシグナリングの要件などの、メモリデバイス540内の規格または仕様の順守を担っている。メモリコントローラ520は、アクセスのスケジューリングおよび制御によって、規格または仕様の順守を実施することができる。
【0091】
メモリコントローラ520はスケジューラ530を含み、これは、メモリデバイス540に送出するトランザクションを生成して順に並べるロジックまたは回路を表している。1つの観点から、メモリコントローラ520の主な機能は、メモリデバイス540へのメモリアクセスおよび他のトランザクションをスケジューリングすることであると言われることがある。そのようなスケジューリングには、トランザクション自体を生成して、プロセッサ510によるデータの要求を実施し、データの完全性を(例えば、リフレッシュに関連したコマンドなどを用いて)維持することが含まれてよい。トランザクションは1つまたは複数のコマンドを含み、クロックサイクルまたは単位間隔などの1つまたは複数のタイミングサイクルでのコマンドもしくはデータまたはその両方の転送をもたらすことができる。トランザクションは、読み出しコマンドもしくは書き込みコマンドもしくは関連コマンドまたはその組み合わせといったアクセスのためのものであってよく、他のトランザクションは、コンフィグレーション、設定、データ完全性などのコマンド、またはその組み合わせ用のメモリ管理コマンドを含んでよい。
【0092】
メモリコントローラ520は通常、システム500の性能を向上させるためにトランザクションの選択および順序付けを可能にするスケジューラ530などのロジックを含む。したがって、メモリコントローラ520は、未処理のトランザクションのうちのどれをどの順序でメモリデバイス540に送出したらよいかを選択することができ、これは通常、簡単な先入れ先出しアルゴリズムよりはるかに複雑なロジックで実現される。メモリコントローラ520は、トランザクションのメモリデバイス540への送信を管理し、トランザクションと関連するタイミングを管理する。1つの例では、トランザクションには確定的タイミングがあり、これは、メモリコントローラ520により管理され、トランザクションをスケジューラ530でどうスケジューリングするかを決定する際に用いられてよい。
【0093】
1つの例では、メモリコントローラ520はリフレッシュ(REF)ロジック526を含む。リフレッシュロジック526は、揮発性であるため、確定的状態を保持するのにリフレッシュする必要があるメモリリソースに用いられ得る。1つの例では、リフレッシュロジック526は、リフレッシュの位置、および実行するリフレッシュのタイプを示す。リフレッシュロジック526は、メモリデバイス540内でセルフリフレッシュをトリガすることも、もしくはリフレッシュコマンドを送出することにより外部リフレッシュ(自動リフレッシュコマンドと呼ばれることがある)を実行することも、またはそれらを組み合わせることもできる。1つの例では、メモリデバイス540内のコントローラ550は、メモリデバイス540内でリフレッシュを適用するリフレッシュロジック554を含む。1つの例では、リフレッシュロジック554は、内部操作を生成して、メモリコントローラ520から受信した外部リフレッシュに従ってリフレッシュを行う。リフレッシュロジック554は、リフレッシュがメモリデバイス540を対象にしているかどうか、コマンドに応答してどのメモリリソース560をリフレッシュすべきかを判定することができる。
【0094】
図6は、コヒーレントな低電力状態の管理が実施され得るコンピューティングシステムの一例に関するブロック図である。システム600は、本明細書のいずれかの例によるコンピューティングデバイスを表しており、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、サーバ、ゲーム用またはエンターテイメント用制御システム、組み込み型コンピューティングデバイスなどの電子デバイスであってよい。
【0095】
システム600は、システム100またはシステム200の一例によるシステムを表している。1つの例では、システム600はCXL制御690を含み、これは、コヒーレント実装のメモリ630の電源管理制御を表している。CXL制御690は、上述したいずれかの例によるメモリマネージャおよびメモリドライバを表すことができる。CXL制御690は、ページテーブルを管理して、メモリ630への次のアクセスにページフォールトをトリガさせることができる。したがって、メモリアクセスはフォールトルーチンによって処理され得る。ページテーブルを変更した後に、CXL制御690は、本明細書のいずれかの例に従って、低電力状態に入るようにメモリ630をトリガすることができる。
【0096】
システム600は、あらゆるタイプのマイクロプロセッサ、中央演算処理装置(CPU)、グラフィックス処理装置(GPU)、処理コアなどの処理ハードウェア、またはその組み合わせを含み得るプロセッサ610を含み、システム600の命令の処理または実行をもたらす。プロセッサ610は、ホストプロセッサデバイスであってよい。プロセッサ610は、システム600の操作全体を制御し、1つまたは複数のプログラム可能型の汎用マイクロプロセッサまたは専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラム可能型コントローラ、特定用途向け集積回路(ASIC)、プログラム可能型ロジックデバイス(PLD)、またはそのようなデバイスの組み合わせであっても、またはこれを含んでもよい。
【0097】
システム600は起動/設定616を含み、これは、起動コード(例えば、基本入力/出力システム(BIOS))、コンフィグレーション設定を格納するストレージ、セキュリティハードウェア(例えば、トラステッドプラットフォームモジュール(TPM))などの、ホストOSの外側で動作するシステムレベルのハードウェアを表している。起動/設定616は、読み出し専用メモリ(ROM)、フラッシュメモリなどのメモリデバイスといった不揮発性ストレージデバイスを含み得る。
【0098】
1つの例では、システム600はプロセッサ610に結合されたインタフェース612を含み、これは、メモリサブシステム620またはグラフィックスインタフェースコンポーネント640などの、より高帯域幅の接続を必要とするシステムコンポーネントの高速インタフェースまたは高スループットインタフェースを表し得る。インタフェース612はインタフェース回路を表しており、これは、スタンドアロン型コンポーネントであっても、またはプロセッサダイ上に統合されてもよい。インタフェース612は、プロセッサダイ上に回路として統合されても、またはシステムオンチップにコンポーネントとして統合されてもよい。存在する場合、グラフィックスインタフェース640は、システム600のユーザに視覚表示を提供するグラフィックスコンポーネントにインタフェース接続する。グラフィックスインタフェース640は、スタンドアロン型コンポーネントであっても、またはプロセッサダイもしくはシステムオンチップ上に統合されてもよい。1つの例では、グラフィックスインタフェース640は、ユーザに出力を提供する高精細度(HD)ディスプレイまたは超高精細度(UHD)ディスプレイを駆動し得る。1つの例では、このディスプレイは、タッチスクリーンディスプレイを含んでよい。1つの例では、グラフィックスインタフェース640は、メモリ630に格納されたデータに基づいて、もしくはプロセッサ610により実行される操作に基づいて、またはその両方に基づいて、表示を生成する。
【0099】
メモリサブシステム620は、システム600のメインメモリを表しており、プロセッサ610により実行されるコード用の、またはルーチンを実行する際に用いられるデータ値用のストレージを提供する。メモリサブシステム620は、読み出し専用メモリ(ROM)、フラッシュメモリ、DRAMなどの1つまたは複数の様々なランダムアクセスメモリ(RAM)、3DXP(3次元クロスポイント)、などのメモリデバイス、またはそのようなデバイスの組み合わせといった1つまたは複数のメモリデバイス630を含み得る。メモリ630は、とりわけ、オペレーティングシステム(OS)632を格納し且つホストして、システム600において命令を実行するためのソフトウェアプラットフォームを提供する。さらに、アプリケーション634は、メモリ630からOS632のソフトウェアプラットフォーム上で実行され得る。アプリケーション634は、1つまたは複数の機能を実行する独自の動作ロジックを有するプログラムを表している。プロセス636は、OS632または1つもしくは複数のアプリケーション634、あるいはその組み合わせに補助機能を提供するエージェントまたはルーチンを表している。OS632、アプリケーション634、および処理636は、システム600に各機能を提供するソフトウェアロジックを提供する。1つの例では、メモリサブシステム620はメモリコントローラ622を含み、これは、コマンドを生成して、そのコマンドをメモリ630に発行するメモリコントローラである。メモリコントローラ622は、プロセッサ610の物理的部分またはインタフェース612の物理的部分の可能性があることが理解されるであろう。例えば、メモリコントローラ622は、プロセッサダイまたはシステムオンチップ上に統合されるといったように、プロセッサ610と共に回路上に統合される統合メモリコントローラであってよい。
【0100】
具体的に示されていないが、システム600は、メモリバス、グラフィックスバス、インタフェースバスなどといった1つまたは複数のバスまたはバスシステムをデバイス間に含み得ることが理解されるであろう。バスなどの信号ラインは、各コンポーネントを互いに通信可能にもしくは電気的に結合できるか、または各コンポーネントを通信可能に且つ電気的に両方で結合できる。これらのバスには、物理的通信回線、二地点間接続、ブリッジ、アダプタ、コントローラなどの回路、またはその組み合わせが含まれてよい。これらのバスには、例えば、システムバス、ペリフェラルコンポーネントインターコネクト(PCI)バス、ハイパートランスポートまたは業界標準アーキテクチャ(ISA)バス、スモールコンピュータシステムインタフェース(SCSI)バス、ユニバーサルシリアルバス(USB)などのバス、またはその組み合わせのうちの1つまたは複数が含まれてよい。
【0101】
1つの例では、システム600はインタフェース614を含み、これはインタフェース612に結合され得る。インタフェース614は、インタフェース612より低速のインタフェースであってよい。1つの例では、インタフェース614はインタフェース回路を表しており、これは、スタンドアロン型コンポーネントおよび集積回路を含み得る。1つの例では、複数のユーザインタフェースコンポーネントもしくは周辺コンポーネントまたはその両方が、インタフェース614に結合する。ネットワークインタフェース650は、1つまたは複数のネットワークを介して遠隔デバイス(例えば、サーバなどのコンピューティングデバイス)と通信する能力をシステム600に提供する。ネットワークインタフェース650には、イーサネット(登録商標)アダプタ、無線相互接続コンポーネント、セルラネットワーク相互接続コンポーネント、USB(ユニバーサルシリアルバス)などの有線規格もしくは無線規格ベースのインタフェースまたは専用インタフェースが含まれてよい。ネットワークインタフェース650は、遠隔デバイスとデータを交換することができ、データの交換には、メモリに格納されたデータの送出、またはメモリに格納されるデータの受領が含まれてよい。
【0102】
1つの例では、システム600は1つまたは複数の入力/出力(I/O)インタフェース660を含む。I/Oインタフェース660は、1つまたは複数のインタフェースコンポーネントを含んでよく、それを介して、ユーザはシステム600とやり取りする(例えば、オーディオ、英数字、触知/タッチなどのインタフェース接続)。周辺インタフェース670は、具体的に上述されていない任意のハードウェアインタフェースを含んでよい。周辺機器とは一般に、システム600に従属的に接続しているデバイスを指す。従属的な接続とは、システム600がソフトウェアプラットフォームもしくはハードウェアプラットフォームまたはその両方を提供し、そのプラットフォーム上で操作が実行され、ユーザがそのプラットフォームとやり取りする接続である。
【0103】
1つの例では、システム600は、データを不揮発性方式で格納するストレージサブシステム680を含む。1つの例では、いくつかのシステム実装例において、ストレージ680の少なくともいくつかのコンポーネントがメモリサブシステム620のコンポーネントと重複してもよい。ストレージサブシステム680はストレージデバイス684を含み、これは不揮発性方式で大量のデータを格納するための、1つもしくは複数の磁気媒体、固体媒体、3DXP媒体、もしくは光学ベースのディスク、またはこの組み合わせなどのあらゆる従来型の媒体であっても、またはこれを含んでもよい。ストレージ684は、コードまたは命令およびデータ686を永続的状態で保持する(すなわち、その値はシステム600への電源が遮断されても保持される)。ストレージ684は一般的に「メモリ」とみなされることがあるが、メモリ630は通常、プロセッサ610に命令を提供する実行メモリまたはオペレーティングメモリである。ストレージ684は不揮発性であるが、メモリ630には揮発性メモリが含まれることがある(すなわち、システム600への電源が遮断された場合、データの値または状態が不確定になる)。1つの例では、ストレージサブシステム680は、ストレージ684とインタフェース接続するコントローラ682を含む。1つの例では、コントローラ682は、インタフェース614またはプロセッサ610の物理的部分であるか、またはプロセッサ610およびインタフェース614の両方に回路もしくはロジックを含むことがある。
【0104】
電源602は、システム600の各コンポーネントに電力を供給する。より具体的には、電源602は通常、システム600の1つまたは複数の電力供給装置604にインタフェース接続して、システム600の各コンポーネントに電力を供給する。1つの例では、電力供給装置604は、壁のコンセントに差し込むAC/DC(交流/直流)変換アダプタを含む。そのようなAC電源は、再生可能エネルギー(例えば、太陽エネルギー)による電源602であってもよい。1つの例では、電源602は、外付けのAC/DC変換器などのDC電源を含む。1つの例では、電源602または電力供給装置604は、充電場に近づけることによって充電するワイヤレス充電ハードウェアを含む。1つの例では、電源602は、内蔵のバッテリまたは燃料電池電源を含んでもよい。
【0105】
図7は、コヒーレントな低電力状態の管理が実施され得るモバイルデバイスの一例に関するブロック図である。システム700は、コンピューティングタブレット、携帯電話もしくはスマートフォン、ウェアラブルコンピューティングデバイスなどのモバイルデバイス、または組み込み型コンピューティングデバイスといったモバイルコンピューティングデバイスを表している。いくつかのコンポーネントが一般的に示されており、そのようなデバイスの全てのコンポーネントがシステム700に示されているわけではないことが理解されるであろう。システム700は、システム100またはシステム200と互換性のあるシステムを組み込むことができるシステムの1つの例である。
【0106】
1つの例では、メモリサブシステム760がメモリ762を含み、これは、コヒーレントメモリ792と特定される1つまたは複数のコヒーレントメモリリソースを含み得る。1つの例では、システム700はCXL制御794を備えたOS790を含み、これはコヒーレントメモリ792の電源管理制御を表している。CXL制御794は、上述したいずれかの例によるメモリマネージャおよびメモリドライバを表すことができる。CXL制御794は、ページテーブルを管理して、コヒーレントメモリ792への次のアクセスにページフォールトをトリガさせることができる。したがって、メモリアクセスはフォールトルーチンによって処理され得る。ページテーブルを変更した後に、CXL制御794は、本明細書のいずれかの例に従って、低電力状態に入るようにコヒーレントメモリ792をトリガすることができる。
【0107】
システム700はプロセッサ710を含み、これはシステム700の主な処理操作を行う。プロセッサ710は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラム可能型ロジックデバイスなどの処理手段といった1つもしくは複数の物理デバイスを含んでよい。プロセッサ710により行われる処理操作には、アプリケーションおよびデバイス機能が実行されるオペレーティングプラットフォームまたはオペレーティングシステムの実行が含まれる。処理操作には、人間のユーザまたは他のデバイスとのI/O(入力/出力)に関連した操作、電源管理に関連した操作、システム700を別のデバイスに接続することに関連した操作、またはその組み合わせが含まれる。処理操作には、オーディオI/O、ディスプレイI/Oなどのインタフェース接続、またはその組み合わせに関連した操作も含まれてよい。プロセッサ710は、メモリに格納されたデータを実行することができる。プロセッサ710は、データをメモリに書き込むまたはメモリに格納されたデータを編集することができる。
【0108】
1つの例では、システム700は1つまたは複数のセンサ712を含む。センサ712は、組み込み型センサもしくは外部センサへのインタフェース、またはその組み合わせを表している。センサ712によって、システム700は、システム700が実装される環境またはデバイスに関する1つまたは複数の状態を監視または検出することが可能になる。センサ712には、環境センサ(温度センサ、動き検出器、光検出器、カメラ、化学センサ(例えば、一酸化炭素センサ、二酸化炭素センサなどの化学センサ)など)、圧力センサ、加速度計、ジャイロスコープ、医療用センサもしくは生理学センサ(例えば、バイオセンサ、心拍数モニタなどの生理的属性を検出するセンサ)などのセンサ、またはその組み合わせが含まれてよい。センサ712には、指紋認識システム、顔検出システムまたは顔認識システムなどの、ユーザの特徴を検出または認識するシステムといった生体認証システム用のセンサも含まれてよい。センサ712は広範に理解されるべきであり、システム700を用いて実装される可能性がある多くの異なるタイプのセンサに限定するべきではない。1つの例では、1つまたは複数のセンサ712が、プロセッサ710と統合されたフロントエンド回路を介してプロセッサ710に結合する。1つの例では、1つまたは複数のセンサ712が、システム700の別のコンポーネントを介してプロセッサ710に結合する。
【0109】
1つの例では、システム700はオーディオサブシステム720を含み、これは、コンピューティングデバイスにオーディオ機能を提供することと関連したハードウェア(例えば、オーディオハードウェアおよびオーディオ回路)およびソフトウェア(例えば、ドライバ、コーデック)の各コンポーネントを表している。オーディオ機能には、スピーカまたはヘッドホンによる出力、およびマイクによる入力が含まれてよい。そのような機能用のデバイスが、システム700に統合されても、またはシステム700に接続されてもよい。1つの例では、ユーザが、プロセッサ710により受信されて処理されるオーディオコマンドを提供することにより、システム700とやり取りする。
【0110】
ディスプレイサブシステム730は、ユーザに提示するための視覚表示を提供するハードウェアコンポーネント(例えば、ディスプレイデバイス)およびソフトウェアコンポーネント(例えば、ドライバ)を表している。1つの例では、ディスプレイには、ユーザがコンピューティングデバイスとやり取りするための触知コンポーネントまたはタッチスクリーン素子が含まれている。ディスプレイサブシステム730はディスプレイインタフェース732を含み、このディスプレイインタフェースには、ユーザに表示を提供するのに用いられる特定のスクリーンまたはハードウェアデバイスが含まれる。1つの例では、ディスプレイインタフェース732には、表示に関連した少なくともいくつかの処理を行う、プロセッサ710とは別のロジック(グラフィックスプロセッサなど)が含まれる。1つの例では、ディスプレイサブシステム730には、ユーザに出力および入力の両方を提供するタッチスクリーンデバイスが含まれる。1つの例では、ディスプレイサブシステム730には、ユーザに出力を提供する高精細度(HD)または超高精細度(UHD)のディスプレイが含まれる。1つの例では、ディスプレイサブシステムはタッチスクリーンディスプレイを含む、またはこれを駆動する。1つの例では、ディスプレイサブシステム730は、メモリに格納されたデータに基づいて、もしくはプロセッサ710により実行される操作に基づいて、またはその両方に基づいて表示情報を生成する。
【0111】
I/Oコントローラ740は、ユーザとのやり取りに関連したハードウェアデバイスおよびソフトウェアコンポーネントを表している。I/Oコントローラ740は、オーディオサブシステム720もしくはディスプレイサブシステム730、またはその両方の一部であるハードウェアを管理するように動作することができる。さらに、I/Oコントローラ740は、システム700に接続する追加デバイス用の接続ポイントを示しており、この接続ポイントを介してユーザがシステムとやり取りし得る。例えば、システム700に接続され得るデバイスには、マイクデバイス、スピーカもしくはステレオシステム、ビデオシステムなどのディスプレイデバイス、キーボードもしくはキーパッドデバイス、ボタン/スイッチ、または特定のアプリケーションと共に用いるカードリーダなどのデバイスといった他のI/Oデバイスが含まれ得る。
【0112】
上述したように、I/Oコントローラ740は、オーディオサブシステム720もしくはディスプレイサブシステム730またはその両方とやり取りすることができる。例えば、マイクなどのオーディオデバイスを介した入力で、システム700の1つまたは複数のアプリケーションまたは機能に入力またはコマンドを提供することができる。さらに、オーディオ出力が、表示出力の代わりに、または表示出力に加えて提供され得る。別の例では、ディスプレイサブシステムがタッチスクリーンを含む場合、ディスプレイデバイスは入力デバイスの機能も果たし、I/Oコントローラ740によって少なくとも部分的に管理され得る。システム700には、I/Oコントローラ740により管理されるI/O機能を提供するための追加のボタンまたはスイッチもあってよい。
【0113】
1つの例では、I/Oコントローラ740は、加速度計、カメラ、光センサなどの環境センサ、ジャイロスコープ、全地球測位システム(GPS)、などのシステム700に含まれ得るハードウェアまたはセンサ712といったデバイスを管理する。入力は、直接的なユーザインタラクションの一部である他に、システムの操作(ノイズにはフィルタリング、輝度検出にはディスプレイの調整、カメラにはフラッシュの適用などの機能といったもの)に影響を与える環境入力もシステムに提供することができる。
【0114】
1つの例では、システム700は、バッテリ電力使用量、バッテリの充電、および省電力操作に関連した機能を管理する電源管理750を含む。電源管理750は、システム700の各コンポーネントに電力を供給する電源752からの電力を管理する。1つの例では、電源752は、壁のコンセントに差し込むAC/DC(交流/直流)変換アダプタを含む。そのようなAC電源は、再生可能エネルギー(例えば、太陽エネルギー、動きに基づくエネルギー)であってよい。1つの例では、電源752はDC電力だけを含み、このDC電力は外付けのAC/DC変換器などのDC電源によって供給され得る。1つの例では、電源752は、充電場に近づけることによって充電するワイヤレス充電ハードウェアを含む。1つの例では、電源752は、内蔵のバッテリまたは燃料電池電源を含んでもよい。
【0115】
メモリサブシステム760は、情報をシステム700に格納するためのメモリデバイス762を含む。メモリサブシステム760には、不揮発性(メモリデバイスへの電源が遮断されても状態が変わらない)または揮発性(メモリデバイスへの電源が遮断されると状態が不確定になる)のメモリデバイス、またはその組み合わせが含まれてよい。メモリ760は、アプリケーションデータ、ユーザデータ、音楽、写真、文書などのデータの他に、システム700のアプリケーションおよび機能の実行に関連したシステムデータ(長期か、または一時的かを問わず)を格納することができる。1つの例では、メモリサブシステム760はメモリコントローラ764を含む(これは、システム700の制御部の一部とみなされる可能性もあり、また潜在的にプロセッサ710の一部とみなされる可能性がある)。メモリコントローラ764は、メモリデバイス762へのアクセスを制御するためのコマンドを生成して発行するスケジューラを含む。
【0116】
接続性770は、システム700が外部デバイスと通信することを可能にするためのハードウェアデバイス(例えば、無線もしくは有線のコネクタおよび通信ハードウェア、または有線ハードウェアと無線ハードウェアとの組み合わせ)と、ソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)とを含む。外部デバイスは別個のデバイスであってよく、他のコンピューティングデバイス、無線アクセスポイントまたは基地局などの他に、ヘッドセット、プリンタなどのデバイスといった周辺機器でもよい。1つの例では、システム700は、メモリに記憶するために、またはディスプレイデバイスに表示するために、外部デバイスとデータを交換する。交換したデータには、データの読み出し、書き込み、または編集のためにメモリに格納されるデータ、またはすでにメモリに格納されているデータが含まれてよい。
【0117】
接続性770は、複数の異なるタイプの接続性を含んでよい。一般化するために、システム700は、セルラ接続性772および無線接続性774と共に示されている。セルラ接続性772は一般に、無線キャリアにより提供されるセルラネットワーク接続性を指し、例えば、GSM(登録商標)(移動体通信用グローバルシステム)またはその変形版もしくは派生版、CDMA(符号分割多元接続)またはその変形版もしくは派生版、TDM(時分割多重化)またはその変形版もしくは派生版、LTE(ロングタームエボリューション、「4G」とも呼ばれる)、5Gなどのセルラサービス規格によって提供される。無線接続性774は、セルラ方式ではない無線接続性を指し、パーソナルエリアネットワーク(Bluetooth(登録商標)など)、ローカルエリアネットワーク(WiFi(登録商標)など)、もしくはワイドエリアネットワーク(WiMAX(登録商標)など)などの無線通信、またはその組み合わせを含んでよい。無線通信は、非固体媒体を介した変調電磁放射を用いたデータの転送を指す。有線通信は、固体通信媒体を介して行われる。
【0118】
周辺接続780には、ハードウェアインタフェースおよびコネクタの他に、周辺接続を行うためのソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)が含まれる。システム700は、他のコンピューティングデバイスへの周辺デバイス(「外へ」782)であること、またシステム700に接続された周辺デバイス(「外から」784)も有することの両方の可能性があることが理解されるであろう。システム700は一般に、システム700のコンテンツを管理する(例えば、ダウンロードする、アップロードする、変更する、同期させる)などの目的で他のコンピューティングデバイスに接続するための「ドッキング」コネクタを有する。さらに、ドッキングコネクタにより、システム700は、例えば、視聴覚システムなどのシステムに出力されるコンテンツをシステム700が制御できるようにするいくつかの周辺機器に接続することが可能になり得る。
【0119】
専用ドッキングコネクタなどの独自の接続ハードウェアに加えて、システム700は一般的なコネクタまたは規格ベースのコネクタを介して周辺接続780を形成することができる。一般的なタイプには、ユニバーサルシリアルバス(USB)コネクタ(これは、いくつかの異なるハードウェアインタフェースのうちのいずれかを含み得る)、MiniDisplayPort(MDP)を含むDisplayPort、高精細度マルチメディアインタフェース(HDMI(登録商標))などのタイプが含まれてよい。
【0120】
一般に本明細書の説明に関連して、1つの例では、装置が、基板と、基板上のホストハードウェアとを含み、ホストハードウェアはメモリデバイスへのアクセスを管理するためにメモリ制御を実行し、メモリ制御は、メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、メモリデバイスのページテーブルエントリを変更し、ページテーブルエントリの変更後に低電力状態に入るようにメモリデバイスをトリガする。
【0121】
本装置の一例では、メモリデバイスはバイトアドレス指定可能なメモリデバイスを有する。本装置に関する前述したいずれかの例では、メモリデバイスは不揮発性メモリデバイスを有する。本装置に関する前述したいずれかの例では、メモリデバイスはCXL(コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する。本装置に関する前述したいずれかの例では、メモリデバイスは3次元クロスポイント(3DXP)メモリデバイスを有する。本装置に関する前述したいずれかの例では、ページテーブルを変更するメモリ制御は、ページテーブルからエントリを削除することなく、そのエントリを無効にするメモリ制御を含む。本装置に関する前述したいずれかの例では、エントリを無効にするメモリ制御は、ページテーブル内のメモリアドレス範囲用の現ビットインジケータを消去するメモリ制御を含む。本装置に関する前述したいずれかの例では、メモリデバイスがスレッショルド期間の間アイドルになっているとの判定に応答して、メモリ制御がページテーブルエントリを変更する。本装置に関する前述したいずれかの例では、ページテーブルを変更する前に、メモリ制御は、メモリデバイスの低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するかどうかを判定し、この低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するとの判定に応答して、ページテーブルを変更する。本装置に関する前述したいずれかの例では、ページテーブルを変更する前に、メモリ制御は、ロックされたページと関連したデータをメモリデバイスが格納しているかどうかを判定し、ロックされたページと関連したデータをメモリデバイスが格納していないとの判定のみに応答して、ページテーブルを変更する。
【0122】
一般に本明細書の説明に関連して、1つの例では、システムが、コヒーレントアクセスを用いて管理されるメモリデバイスと、メモリデバイスへのアクセスを管理するメモリ制御を実行するためのホストハードウェアとを含み、メモリ制御は、メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、メモリデバイスのページテーブルエントリを変更し、ページテーブルエントリの変更後に低電力状態に入るようにメモリデバイスをトリガする。
【0123】
本システムの一例では、メモリデバイスはバイトアドレス指定可能なメモリデバイスを有する。本システムに関する前述したいずれかの例では、メモリデバイスは不揮発性メモリデバイスを有する。本システムに関する前述したいずれかの例では、メモリデバイスはCXL(コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する。本システムに関する前述したいずれかの例では、メモリデバイスは3次元クロスポイント(3DXP)メモリデバイスを有する。本システムに関する前述したいずれかの例では、ページテーブルを変更するメモリ制御は、ページテーブルからエントリを削除することなく、そのエントリを無効にするメモリ制御を含む。本システムに関する前述したいずれかの例では、エントリを無効にするメモリ制御は、ページテーブル内のメモリアドレス範囲用の現ビットインジケータを消去するメモリ制御を含む。本システムに関する前述したいずれかの例では、メモリデバイスがスレッショルド期間の間アイドルになっているとの判定に応答して、メモリ制御がページテーブルエントリを変更する。本システムに関する前述したいずれかの例では、ページテーブルを変更する前に、メモリ制御は、メモリデバイスの低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するかどうかを判定し、この低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するとの判定に応答して、ページテーブルを変更する。本システムに関する前述したいずれかの例では、ページテーブルを変更する前に、メモリ制御は、ロックされたページと関連したデータをメモリデバイスが格納しているかどうかを判定し、ロックされたページと関連したデータをメモリデバイスが格納していないとの判定のみに応答して、ページテーブルを変更する。本システムに関する前述したいずれかの例では、ホストハードウェアは、ホストプロセッサ、ホストプロセッサに通信可能に結合されたディスプレイ、ホストプロセッサに通信可能に結合されたネットワークインタフェース、または本システムに電力を供給するバッテリへのインタフェースのうちの1つまたは複数を含む。
【0124】
一般に本明細書の説明に関連して、1つの例では、メモリデバイスを低電力状態にする方法が、コヒーレントアクセスを用いて管理されるメモリデバイスがスレッショルド期間の間アイドルになっていると判定する段階と、メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、メモリデバイスのページテーブルエントリを変更する段階と、ページテーブルエントリの変更後に低電力状態に入るようにメモリデバイスをトリガする段階とを含む。
【0125】
本方法の一例では、メモリデバイスはバイトアドレス指定可能なメモリデバイスを有する。本方法に関する前述したいずれかの例では、メモリデバイスは不揮発性メモリデバイスを有する。本方法に関する前述したいずれかの例では、メモリデバイスはCXL(コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する。本方法に関する前述したいずれかの例では、メモリデバイスは3次元クロスポイント(3DXP)メモリデバイスを有する。本方法に関する前述したいずれかの例では、ページテーブルを変更する段階は、ページテーブルからエントリを削除することなくエントリを無効にする段階を有する。本方法に関する前述したいずれかの例では、エントリを無効にする段階は、ページテーブル内のメモリアドレス範囲用の現ビットインジケータを消去する段階を有する。本方法に関する前述したいずれかの例では、ページテーブルを変更する段階の前に、メモリデバイスの低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するかどうかを判定し、この低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するとの判定に応答して、ページテーブルを変更する段階がある。本方法に関する前述したいずれかの例では、ページテーブルを変更する段階の前に、ロックされたページと関連したデータをメモリデバイスが格納しているかどうかを判定し、ロックされたページと関連したデータをメモリデバイスが格納していないとの判定のみに応答して、ページテーブルを変更する段階がある。
【0126】
一般に本明細書の説明に関連して、1つの例では、コンピュータ可読記憶媒体が、コンピュータ可読記憶媒体に格納された、プロセッサにより実行されると前述の2つの段落のうちのいずれかの例による方法をプロセッサに実行させる命令を含む。
【0127】
本明細書に示される各フロー図は、様々なプロセス動作のシーケンスに関する例を提供する。これらのフロー図は、ソフトウェアまたはファームウェアルーチンにより実行される操作の他に、物理的操作も示すことができる。フロー図は、有限ステートマシン(FSM)の状態の実装例に関する一例を示すことができ、FSMはハードウェアおよび/またはソフトウェアで実装され得る。動作の順序は、特定のシーケンスまたは順序で示されているが、特に指定のない限り変更することができる。したがって、示された図は単に例として理解されるべきであり、このプロセスは異なる順序で行われてもよく、一部の動作が並列に行われてもよい。さらに、1つまたは複数の動作が省略されてもよく、したがって、全ての実装例が全ての動作を行うわけではない。
【0128】
様々な操作または機能が本明細書で説明されている限り、そのような操作または機能は、ソフトウェアコード、命令、コンフィグレーション、および/またはデータとして説明されても、または規定されてもよい。コンテンツは、直接的に実行可能なファイル(「オブジェクト」形式または「実行可能ファイル」形式)、ソースコード、または差分コード(「デルタ」コードまたは「パッチ」コード)であってもよい。本明細書に説明されていることに関するソフトウェアコンテンツは、コンテンツが格納されている製品を介して提供されても、または通信インタフェースを介してデータを送出するために通信インタフェースを操作する方法によって提供されてもよい。機械可読記憶媒体は、説明された機能または操作を機械に実行させることができ、機械(例えば、コンピューティングデバイス、電子システムなど)がアクセスできる形式で情報を格納するあらゆる機構、例えば、追記型/非追記型媒体(例えば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学式記憶媒体、フラッシュメモリデバイスなど)といった機構を含む。通信インタフェースは、別のデバイスと通信するためのハードワイヤード媒体、無線媒体、光媒体などのうちのいずれかにインタフェース接続するあらゆる機構、例えば、メモリバスインタフェース、プロセッサバスインタフェース、インターネット接続、ディスクコントローラなどといった機構を含む。通信インタフェースは、コンフィグレーションパラメータを提供することによって且つ/または通信インタフェースを準備するための信号を送出することによって、ソフトウェアコンテンツを記述するデータ信号を提供するように構成されてよい。通信インタフェースは、通信インタフェースに送出される1つまたは複数のコマンドもしくは信号を介してアクセスされてよい。
【0129】
本明細書で説明された様々なコンポーネントは、説明された操作または機能を実行するための手段であってよい。本明細書で説明された各コンポーネントは、ソフトウェア、ハードウェア、またはそれらの組み合わせを含む。各コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)など)、埋め込み型コントローラ、ハードワイヤード回路などとして実装されてよい。
【0130】
本明細書で説明されていることに加えて、開示されていることおよび本発明の実装例に対して、その範囲から逸脱することなく様々な変更を行うことができる。したがって、本明細書における説明および例は、限定的な意味ではなく、例示的な意味で解釈されるべきである。本発明の範囲は、以下の特許請求の範囲を参照することによってのみ判断されるべきである。
[他の考え得る項目]
(項目1)
基板と、
前記基板上のホストハードウェアと
を備える装置であって、前記ホストハードウェアがメモリデバイスへのアクセスを管理するメモリ制御を実行し、前記メモリ制御が、前記メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、前記メモリデバイスのページテーブルエントリを変更し、前記ページテーブルエントリの前記変更の後に低電力状態に入るよう前記メモリデバイスをトリガする、装置。
(項目2)
前記メモリデバイスがバイトアドレス指定可能なメモリデバイスを有する、項目1に記載の装置。
(項目3)
前記メモリデバイスが不揮発性メモリデバイスを有する、項目2に記載の装置。
(項目4)
前記メモリデバイスがCXL(compute express link:コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する、項目2に記載の装置。
(項目5)
前記メモリデバイスが3次元クロスポイント(3DXP)メモリデバイスを有する、項目2に記載の装置。
(項目6)
前記ページテーブルを変更する前記メモリ制御が、前記ページテーブルから前記エントリを削除することなく、前記エントリを無効にする前記メモリ制御を含む、項目1に記載の装置。
(項目7)
前記エントリを無効にする前記メモリ制御が、前記ページテーブル内のメモリアドレス範囲用の現ビットインジケータを消去する前記メモリ制御を含む、項目6に記載の装置。
(項目8)
前記メモリデバイスがスレッショルド期間の間アイドルになっているとの判定に応答して、前記メモリ制御が前記ページテーブルエントリを変更する、項目1に記載の装置。
(項目9)
前記ページテーブルを変更する前に、前記メモリ制御が、前記メモリデバイスの前記低電力状態がホストプロセッサをストールさせることになるウェイク遅延を有するかどうかを判定し、前記低電力状態が前記ホストプロセッサをストールさせることになるウェイク遅延を有するとの判定に応答して、前記ページテーブルを変更する、項目1に記載の装置。
(項目10)
前記ページテーブルを変更する前に、前記メモリ制御が、ロックされたページと関連したデータを前記メモリデバイスが格納しているかどうかを判定し、ロックされたページと関連したデータを前記メモリデバイスが格納していないとの判定のみに応答して、前記ページテーブルを変更する、項目1に記載の装置。
(項目11)
コヒーレントアクセスを用いて管理されるメモリデバイスと、
前記メモリデバイスへのアクセスを管理するメモリ制御を実行するためのホストハードウェアと
を備えるシステムであって、前記メモリ制御が、前記メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、前記メモリデバイスのページテーブルエントリを変更し、前記ページテーブルエントリの前記変更の後に低電力状態に入るように前記メモリデバイスをトリガする、システム。
(項目12)
前記メモリデバイスが不揮発性のバイトアドレス指定可能なメモリデバイスを有する、項目11に記載のシステム。
(項目13)
前記メモリデバイスがCXL(コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する、項目12に記載のシステム。
(項目14)
前記メモリデバイスが3次元クロスポイント(3DXP)メモリデバイスを有する、項目12に記載のシステム。
(項目15)
前記ページテーブルを変更する前記メモリ制御が、前記ページテーブルから前記エントリを削除することなく、前記エントリを無効にする前記メモリ制御を含む、項目11に記載のシステム。
(項目16)
前記メモリデバイスがスレッショルド期間の間アイドルになっているとの判定に応答して、前記メモリ制御が前記ページテーブルエントリを変更する、項目11に記載のシステム。
(項目17)
前記ホストハードウェアが、
ホストプロセッサ、
ホストプロセッサに通信可能に結合されたディスプレイ、
ホストプロセッサに通信可能に結合されたネットワークインタフェース、または
前記システムに電力を供給するバッテリへのインタフェース
のうちの1つまたは複数を含む、項目11に記載のシステム。
(項目18)
メモリデバイスを低電力状態にする方法であって、
コヒーレントアクセスを用いて管理されるメモリデバイスがスレッショルド期間の間アイドルになっていると判定する段階と、
前記メモリデバイスへの次のアクセスに対してページフォールトを生じさせるために、前記メモリデバイスのページテーブルエントリを変更する段階と、
前記ページテーブルエントリを変更した後に低電力状態に入るように前記メモリデバイスをトリガする段階と
を備える方法。
(項目19)
前記メモリデバイスがCXL(コンピュートエクスプレスリンク)キャッシュ/メモリプロトコルインタフェース(CPI)規格と互換性のあるメモリデバイスを有する、項目18に記載の方法。
(項目20)
前記ページテーブルを変更する段階が、前記ページテーブルから前記エントリを削除することなく前記エントリを無効にする段階を有する、項目18に記載の方法。
図1
図2
図3
図4
図5
図6
図7
【外国語明細書】