(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-29
(54)【発明の名称】非Cステートセルフリフレッシュ中のラストレベルキャッシュアクセス
(51)【国際特許分類】
G06F 12/00 20060101AFI20241122BHJP
G06F 12/0897 20160101ALI20241122BHJP
【FI】
G06F12/00 550B
G06F12/0897 110
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024537043
(86)(22)【出願日】2022-12-08
(85)【翻訳文提出日】2024-07-23
(86)【国際出願番号】 US2022052266
(87)【国際公開番号】W WO2023121882
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ベンジャミン チェン
(72)【発明者】
【氏名】チンタン エス. パテル
(72)【発明者】
【氏名】グハン クリシュナン
(72)【発明者】
【氏名】アンドリュー ウィリアム ルエック
(72)【発明者】
【氏名】スリナス タンガラジャン
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160CA10
5B160MB00
5B205UU32
5B205UU37
(57)【要約】
データプロセッサは、データファブリックと、メモリコントローラと、ラストレベルキャッシュと、トラフィックモニタと、を含む。データファブリックは、複数のリクエスタと複数のレスポンダとの間で要求をルーティングする。メモリコントローラは、揮発性メモリにアクセスする。ラストレベルキャッシュは、メモリコントローラとデータファブリックとの間に結合される。トラフィックモニタは、ラストレベルキャッシュに結合され、ラストレベルキャッシュとメモリコントローラとの間のトラフィックを監視し、監視されたトラフィックにおけるアイドル状態の検出に基づいて、ラストレベルキャッシュが動作電力状態を維持し、データファブリックを介したキャッシュヒットに応答する間に、揮発性メモリがセルフリフレッシュモードに入るようにメモリコントローラに命令させるように動作可能である。
【選択図】
図5
【特許請求の範囲】
【請求項1】
データプロセッサであって、
複数のリクエスタと複数のレスポンダとの間で要求をルーティングするデータファブリックと、
揮発性メモリにアクセスするためのメモリコントローラと、
前記メモリコントローラと前記データファブリックとの間に結合されたラストレベルキャッシュと、
前記ラストレベルキャッシュに結合され、前記ラストレベルキャッシュと前記メモリコントローラとの間のトラフィックを監視するように動作可能であり、監視された前記トラフィックにおけるアイドル状態の検出に基づいて、前記揮発性メモリがセルフリフレッシュモードに入るように前記メモリコントローラに命令させるトラフィックモニタと、を備える、
データプロセッサ。
【請求項2】
前記ラストレベルキャッシュは、前記揮発性メモリが前記トラフィックモニタによって引き起こされた前記セルフリフレッシュモードにある間、動作電力状態を維持し、前記データファブリックを介したキャッシュヒットに応答する、
請求項1のデータプロセッサ。
【請求項3】
前記トラフィックモニタは、前記ラストレベルキャッシュにおけるキャッシュミス又は追い出しに応じて、前記揮発性メモリが前記セルフリフレッシュモードを離れるように前記メモリコントローラに命令させるように動作可能である、
請求項1のデータプロセッサ。
【請求項4】
前記トラフィックモニタは、
ヒステリシスタイマと、
前記ヒステリシスタイマに結合された成功モニタ回路であって、前記ヒステリシスタイマの満了までの前記ラストレベルキャッシュと前記メモリコントローラとの間のアイドルトラフィック、又は、次のトラフィックアイドル期間が閾値よりも長く続くという予測に基づいて前記アイドル状態を検出する、成功モニタ回路と、を備える、
請求項1のデータプロセッサ。
【請求項5】
前記成功モニタ回路は、前記ラストレベルキャッシュによって処理可能なトラフィックのみを使用して前記予測を行うようにトレーニングされている、
請求項3のデータプロセッサ。
【請求項6】
前記ラストレベルキャッシュは、前記トラフィックモニタが前記アイドル状態を検出する可能性を高めるために、高性能モード、及び、少なくとも1つの機能が無効化された低性能モードで選択的に動作する、
請求項1のデータプロセッサ。
【請求項7】
前記ラストレベルキャッシュは、ビクティムキューを含み、
前記ラストレベルキャッシュは、前記揮発性メモリが前記セルフリフレッシュモードでない場合に、前記ビクティムキューを日和見的にフラッシュするように動作し、
前記ラストレベルキャッシュは、前記セルフリフレッシュモードからの終了を遅延させるために、前記揮発性メモリが前記セルフリフレッシュモードである場合に、前記ビクティムキューが指定された閾値まで充填されるのを可能にするように動作する、
請求項1のデータプロセッサ。
【請求項8】
前記トラフィックモニタは、前記メモリコントローラがアイドルであることを示すために前記データファブリックにおけるローカル電力状態コントローラに信号を送ることによって、前記アイドル状態を検出することに基づいて前記メモリコントローラを選択されたCステートに入らせるように動作可能であり、前記選択されたCステートは、前記データファブリック及びラストレベルキャッシュが動作電力状態を維持することを含む、
請求項1のデータプロセッサ。
【請求項9】
前記ラストレベルキャッシュは、非スタッタリングトラフィックが前記揮発性メモリへのアクセスを必要とすることを示す第1の信号を前記トラフィックモニタに送信し、
前記ラストレベルキャッシュは、前記第1の信号と、前記揮発性メモリへのアクセスを必要とするスタッタリングトラフィックを示す第2の信号と、を前記データファブリックの前記電力状態コントローラに送信する、
請求項7のデータプロセッサ。
【請求項10】
データプロセッサのデータファブリックにおいて、複数のリクエスタと複数のレスポンダとの間で要求をルーティングすることと、
前記データファブリックに結合されたラストレベルキャッシュにおいて、揮発性メモリへのトラフィックを監視することと、
監視された前記トラフィックにおけるアイドル状態の検出に基づいて、前記揮発性メモリがセルフリフレッシュモードに入るようにメモリコントローラに命令させることと、を含む、
方法。
【請求項11】
前記揮発性メモリが前記トラフィックモニタによって引き起こされた前記セルフリフレッシュモードにある間、前記データファブリックを介したキャッシュヒットに応答するために維持される前記ラストレベルキャッシュの動作電力状態を維持することを含む、
請求項10の方法。
【請求項12】
前記ラストレベルキャッシュにおけるキャッシュミス又は追い出しに応じて、前記セルフリフレッシュモードを離れるように前記揮発性メモリに命令することを含む、
請求項10の方法。
【請求項13】
ヒステリシスタイマの満了までの前記ラストレベルキャッシュと前記メモリコントローラとの間のアイドルトラフィック、又は、次のトラフィックアイドル期間が閾値よりも長く続くという予測に基づいて前記アイドル状態を検出することを含む、
請求項10の方法。
【請求項14】
前記ラストレベルキャッシュによって処理可能なトラフィックのみを使用して前記予測を行うように成功モニタ回路をトレーニングすることを含む、
請求項13の方法。
【請求項15】
前記データプロセッサの少なくとも1つのサブシステムの保存/復元トラフィックを、前記ラストレベルキャッシュにおいてキャッシュ可能であると指定することと、
前記揮発性メモリが前記セルフリフレッシュ状態にある間に、前記ラストレベルキャッシュにおいて前記少なくとも1つのサブシステムの保存/復元トラフィックを処理することと、を含む、
請求項10の方法。
【請求項16】
前記揮発性メモリが前記セルフリフレッシュモードでない場合に、前記ラストレベルキャッシュのビクティムキューを日和見的にフラッシュすることを含む、
請求項10の方法。
【請求項17】
前記セルフリフレッシュモードからの終了を遅延させるために、前記揮発性メモリが前記セルフリフレッシュモードである場合に、前記ビクティムキューが指定された閾値まで満たされるのを可能にすることを含む、
請求項16の方法。
【請求項18】
前記ラストレベルキャッシュにおいて、非スタッタリングトラフィックが前記揮発性メモリへのアクセスを必要とすることを示す第1の信号を生成することと、
前記ラストレベルキャッシュにおいて、スタッタリングトラフィックが前記揮発性メモリへのアクセスを必要とすることを示す第2の信号を生成することと、を含む、
請求項10の方法。
【請求項19】
ラストレベルキャッシュのためのトラフィックモニタであって、
前記ラストレベルキャッシュとメモリコントローラとの間のトラフィックを監視し、監視された前記トラフィックにおけるアイドル状態の検出に基づいて、揮発性メモリがセルフリフレッシュモードに入るように前記メモリコントローラに命令させるトラフィックモニタ回路を備え、
前記ラストレベルキャッシュは、前記揮発性メモリが前記セルフリフレッシュモードにある間、動作電力状態を維持し、データファブリックを介してキャッシュヒットに応答する、
トラフィックモニタ。
【請求項20】
前記トラフィックモニタ回路は、前記ラストレベルキャッシュにおけるキャッシュミス又は追い出しに応じて、前記揮発性メモリが前記セルフリフレッシュモードを離れるように前記メモリコントローラに命令させるように動作可能である、
請求項19のトラフィックモニタ。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、異なる入力/出力及び通信機能のために様々な周辺構成要素を利用する。システムオンチップ(SOC)は、単一の集積回路チップ上で、中央処理装置(CPU)コア及びグラフィックス処理装置(GPU)等のデータ処理回路を周辺コントローラ及びメモリインターフェースと組み合わせ、携帯型の電池駆動動作によく適している。例えば、SOCは、ディスプレイコントローラ、画像信号プロセッサ(ISP)及び他の周辺コントローラをSOC上に組み込んで、コンピュータシステムへの情報の入力及びコンピュータシステムからの情報の出力を可能にすることができる。そのような大規模で複雑なSOCでは、デバイスは、通常、大型のオンチップルーティング回路又は「データファブリック」を介してアクセスをルーティングすることによって、メモリ等のリソース間でデータを転送する。
【0002】
典型的なSOC上の回路の多様性は、省電力モードを実装するための問題を提示する。周辺コントローラの多くは、リアルタイムで動作し、等時性(isochronous)であり、ある期間にわたって共有メモリリソースにある量の帯域幅を必要とする。この要求は、チップ全体での低電力状態の実現を妨げてきた。例えば、CPUコア及びGPUがアイドルである場合に、周辺コントローラは、依然としてアクティブであり、バッファに記憶することができるデータを受信している場合があるが、バッファが一杯になる前にデータをメモリに送信しなければならない。
【0003】
一方、CPU及びGPUは、アイドル期間によって分離された高アクティビティの期間を有する傾向がある。アイドル期間が短いと予想される場合に、データファブリック、メモリコントローラ及びメモリは、通常、アクティブのままであり、したがって、より多くのデータを転送するために、周辺コントローラからの要求を迅速に処理(service)することができる。
【図面の簡単な説明】
【0004】
【
図1】従来技術で知られているコンピュータシステム電力状態のための電力制御インターフェース(Advanced Configuration and Power Interface、ACPI)モデルのブロック図である。
【
図2】いくつかの実施形態による、データ処理システムのブロック図である。
【
図3】いくつかの実施形態による、
図2のラストレベルキャッシュの実装を含むシステムオンチップの一部を示す図である。
【
図4】異なるデータファブリックのアイドル状態と、
図2のSOCの他の構成要素の状態と、の間の対応関係を示す表である。
【
図5】いくつかの実施形態による、
図3のトラフィックモニタ等のトラフィックモニタを有するラストレベルキャッシュを含むメモリシステムを動作させるプロセスのフローチャートである。
【
図6】いくつかの実施形態による、メモリコントローラが未だCステートにない間にセルフリフレッシュ状態を離れるためのプロセスのフローチャート600である。
【
図7】いくつかの実施形態による、メモリコントローラでの遅延Cステート終了を含む、データファブリックでのCステートを終了するプロセスのフローチャートである。
【
図8】いくつかの実施形態による、プリエンプティブCステートにあるメモリコントローラでデータファブリックCステートに入るプロセスのフローチャートである。
【
図9】いくつかの実施形態による、トラフィックモニタの成功モニタをトレーニングするプロセスのフローチャートである。
【
図10】いくつかの実施形態による、ラストレベルキャッシュにおける指定されたシステムモジュールからの保存/復元トラフィックを処理するプロセスのフローチャートである。
【発明を実施するための形態】
【0005】
以下の説明において、異なる図面における同一の符号の使用は、同様のアイテム又は同一のアイテムを示す。別段の言及がなければ、「結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で周知の手段による直接接続及び間接電気接続の両方を含み、また、別段の言及がなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も同様に意味する。
【0006】
データプロセッサには、データファブリックと、メモリコントローラと、ラストレベルキャッシュと、トラフィックモニタと、が含まれる。データファブリックは、複数のリクエスタと複数のレスポンダとの間で要求をルーティングする。メモリコントローラは、揮発性メモリにアクセスするためのものである。ラストレベルキャッシュは、メモリコントローラとデータファブリックとの間に連結される。トラフィックモニタは、ラストレベルキャッシュに連結され、ラストレベルキャッシュとメモリコントローラとの間のトラフィックを監視し、監視されたトラフィックにおけるアイドル状態の検出に基づいて、メモリコントローラに、ラストレベルキャッシュが動作電力状態を維持し、データファブリックを介したキャッシュヒットに応答する間に、揮発性メモリがセルフリフレッシュモードに入るように命令させるように動作可能である。
【0007】
本方法は、データプロセッサのデータファブリックにおいて、複数のリクエスタと複数のレスポンダとの間で要求をルーティングすることを含む。本方法は、データファブリックに連結されたラストレベルキャッシュにおいて、揮発性メモリへのトラフィックを監視することを含む。本方法は、監視されたトラフィックにおけるアイドル状態の検出に基づいて、メモリコントローラに、ラストレベルキャッシュが動作電力状態を維持し、データファブリックを介したキャッシュヒットに応答する間に、揮発性メモリがセルフリフレッシュモードに入るように命令させることを含む。
【0008】
ラストレベルキャッシュのためのトラフィックモニタは、ラストレベルキャッシュとメモリコントローラとの間のトラフィックを監視し、監視されたトラフィックにおけるアイドル状態の検出に基づいて、メモリコントローラに、揮発性メモリがセルフリフレッシュモードに入るように命令させるトラフィックモニタ回路を含む。ラストレベルキャッシュは、揮発性メモリがセルフリフレッシュモードにある間、動作電力状態を維持し、データファブリックを介したキャッシュヒットに応答する。
【0009】
図1は、従来技術で知られているコンピュータシステム電力状態のための電力制御インターフェース(Advanced Configuration and Power Interface、ACPI)モデル100のブロック図である。ACPIモデル100は、デバイス及びコンピュータシステム全体の両方のデバイス構成及び電力管理のための業界標準インターフェースを確立するために、様々なコンピュータシステム、ソフトウェア及びコンポーネントベンダによって開発されたAPCI仕様の一部である。
【0010】
ACPIモデル100は、「Working」状態として知られるG0(S0)状態110、「Sleeping」状態として知られるG1状態120、「Soft Off」状態として知られるG2(S5)状態130、及び、「Mechanical Off」状態として知られるG3状態140を含むグローバルシステム状態のセットの周りに編成されたコンピュータシステム内の様々なデバイスの状態の階層を定義する。さらに、ACPIモデル100は、ACPI互換オペレーティング・システムがロードされる前の基本入出力システム(BIOS)動作に対応する既存のBIOS電力管理インターフェースに対応する「レガシー」状態として知られる状態150を含む。また、ACPIモデル100は、中央処理装置(CPU)状態160のセットと、モデム、ハードディスクドライブ(HDD)及びコンパクトディスク読み出し専用メモリ(CDROM)等のデバイスのためのデバイス状態又は「D」状態170のセットと、を定義する。
【0011】
ACPIモデル100は周知であり、大部分の態様についてはこれ以上説明しない。しかしながら、中央処理装置の電力状態に関する特定の態様は、本開示を理解することに関連しており、ここで説明する。
【0012】
G0(S0)状態110では、周辺デバイスは、それらの電力状態を動的に変更させることができ、ユーザは、ソフトウェアシステムが所望の性能又はバッテリ寿命のためにコンピュータを最適化することができるように、ユーザインターフェースを介して、システムの様々な性能及び電力特性を選択することができる。この状態では、コンピュータシステムは外部イベントにリアルタイムで応答する。G0(S0)状態から、コンピュータシステムは、BIOS等のシステムファームウェアの制御下で、様々な省電力スリープ状態又は「S状態」を含むG1状態120に遷移し、ウェイクイベントに応じて動作状態に戻ることができる。
【0013】
G0(S0)状態110では、CPUは、プロセッサが命令を実行する「C0」状態、及び、「C1」から「Cn」とラベル付けされた様々な低電力又は「アイドル」状態を含む様々な状態で動作することができる。C0状態では、CPUは、様々な性能状態又は「Pステート」で動作することが可能であり、動作周波数は、動的電圧及び周波数スケーリング(DVFS)を使用して現在実行中のアプリケーションプログラムのニーズをサポートするために増加又は抑制され得る。アイドル状態C1~Cnでは、CPUはアイドルであり、命令を実行しないが、電力消費及びウェイクアップレイテンシの様々な組み合わせを有し、より低い電力消費は、より長いウェイクアップレイテンシとトレードオフされる。したがって、例えば、C1状態では、電力消費が最も高いが、ウェイクアップレイテンシが最も短く、一方、Cn状態では、電力消費が最も低いが、ウェイクアップレイテンシが最も長い。
【0014】
ACPIモデル100を使用して、各特定のコンピュータシステムは、アプリケーション環境に適したPステート及びCステートの異なる組み合わせをサポートすることができる。ACPIモデル100によって指定されていない方法で、低減された電力消費と低レイテンシとの間のより良いトレードオフを達成することは、依然として望ましい目標である。
【0015】
図2は、いくつかの実施形態による、データ処理システム200のブロック図である。データ処理システム200は、SOC210の形態のデータプロセッサと、低電力ダブルデータレートシンクロナスダイナミックランダムアクセスメモリ(LPDDRx SDRAM)273及び283の形態の外部メモリと、を含む。実際のデータ処理システムの多くの他のコンポーネントが典型的に存在するが、本開示を理解することに関連せず、説明を容易にするために
図2には示されていない。
【0016】
SOC 210には、概して、システム管理ユニット(SMU)211と、システム管理ネットワーク(SMN)212と、「CCX」とラベル付けされた中央処理装置(CPU)コア複合体220と、「GFX」とラベル付けされたグラフィックスコントローラ230と、リアルタイムクライアントサブシステム240と、メモリ/クライアントサブシステム250と、データファブリック260と、メモリチャネル270及び280と、周辺コンポーネントインターフェースエクスプレス(PCIe)サブシステム290と、「LLC」とラベル付けされたラストレベルキャッシュ300と、が含まれる。当業者によって理解されるように、SOC210は、全ての実施形態に存在するこれらの要素の全てを有していなくてもよく、さらに、その中に含まれる追加の要素を有してもよい。
【0017】
SMU211は、SMN212を介してSOC210内の主要構成要素に双方向に接続される。SMN212は、SOC210のための制御ファブリックを形成する。SMU211は、SOC210上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU211は、SOC210上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU211は、SOC210の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU211は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切なステートを判定するためにCPUコア複合体220内のCPUコア及びグラフィックスコントローラ230から測定された電力消費値を受信することができる。
【0018】
CPUコア複合体220は、CPUコアのセットを含み、その各々は、SMN212を介してSMU211に双方向に接続される。各CPUコアは、ラストレベルキャッシュのみを他のCPUコアと共有する単一コアであってもよいし、クラスタ内の他のコアの全てではないが一部と組み合わされてもよい。
【0019】
グラフィックスコントローラ230は、SMN212を介してSMU211に双方向に接続されている。グラフィックスコントローラ230は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニットである。グラフィックスコントローラ230は、その動作を実行するために、外部メモリへの周期的なアクセスを必要とする。
図2に示される実施形態では、グラフィックスコントローラ230は、統合メモリアーキテクチャとして知られるアーキテクチャで、CPUコア複合体220内のCPUコアと共通メモリサブシステムを共有する。SOC210は、CPUとGPUの両方を含むことから、加速処理ユニット(APU)とも呼ばれる。
【0020】
リアルタイムクライアントサブシステム240は、代表的なリアルタイムクライアント242及び243等のリアルタイムクライアントのセットと、「MM HUB」とラベル付けされたメモリ管理ハブ241と、を含む。各リアルタイムクライアントは、SMN212を介してSMU211に双方向接続され、メモリ管理ハブ241に双方向接続される。リアルタイムクライアントは、画像信号プロセッサ(ISP)、オーディオコーダ-デコーダ(コーデック)、モニタ上に表示するためにグラフィックスコントローラ230によって生成されたオブジェクトをレンダリング及びラスタ化するディスプレイコントローラ等のように、データの周期的な移動を必要とする任意のタイプの周辺コントローラであり得る。
【0021】
メモリ/クライアントサブシステム250は、代表的なメモリ/クライアントデバイス252及び253等のメモリ要素又は周辺コントローラのセットと、「SYSHUB/IOHUB」とラベル付けされたシステム及び入力/出力ハブ251と、を含む。各メモリ/クライアントデバイスは、SMN212を介してSMU211に双方向に接続され、システム及び入力/出力ハブ251に双方向に接続される。メモリ/クライアントデバイスは、不揮発性メモリ、スタティックランダムアクセスメモリ(SRAM)、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェースコントローラ等の外部ディスクコントローラ、ユニバーサルシリアルバス(USB)コントローラ、システム管理ハブ等のように、非周期的にデータを記憶するか又はデータへのアクセスを必要とする回路である。
【0022】
データファブリック260は、SOC210におけるトラフィックのフローを制御する相互接続である。データファブリック260は、SMN212を介してSMU211に双方向に接続され、CPUコア複合体220、グラフィックスコントローラ230、メモリ管理ハブ241、システム及び入出力ハブ251に双方向に接続される。データファブリック260は、SOC210における様々なデバイスの何れかの間にてメモリマップドアクセスの要求と応答をルーティングするためのクロスバースイッチを含む。データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するための、基本入出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ及び各仮想接続のためのバッファも含む。
【0023】
メモリチャネル270及び280は、外部メモリ273及び283との間のデータの転送を制御する回路である。メモリチャネル270は、メモリコントローラ271と、外部メモリ273に接続された「PHY」とラベル付けされた物理インターフェース回路272と、によって形成される。メモリコントローラ271は、SMN212を介してSMU211に双方向に接続され、アップストリームポートと、ダウンストリームポートと、を有する。物理インターフェース回路272は、メモリコントローラ271に双方向に接続されたアップストリームポートと、外部メモリ273に双方向に接続されたダウンストリームポートと、を有する。同様に、メモリチャネル280は、メモリコントローラ281と、外部メモリ283に接続された物理インターフェース回路282と、によって形成される。メモリコントローラ281は、SMN212を介してSMU211に双方向に接続され、データファブリック260に双方向に接続されたアップストリームポートと、ダウンストリームポートと、を有する。物理インターフェース回路282は、メモリコントローラ281に双方向に接続されるアップストリームポートと、外部メモリ283に双方向に接続されるダウンストリームポートと、を有する。
【0024】
周辺コンポーネントインターフェースエクスプレス(PCIe)サブシステム290は、PCIeコントローラ291及びPCIe物理インターフェース回路292を含む。PCIeコントローラ291は、SMN212を介してSMU211に双方向に接続され、システム及び入力/出力ハブ251に双方向に接続されたアップストリームポートと、ダウンストリームポートと、を有する。PCIe物理インターフェース回路292は、PCIeコントローラ291に双方向に接続されたアップストリームポートと、
図2に示されていないPCIeファブリックに双方向に接続されたダウンストリームポートと、を有する。PCIeコントローラは、PCIeスイッチ、ルータ及びデバイスを含むPCIeネットワークへの接続のために、PCIeシステムのPCIeルート複合体を形成することができる。
【0025】
LLC300は、データファブリック260とメモリコントローラ271との間に接続されている。LLC300は、データファブリック260に双方向に接続されたアップストリームポートと、メモリコントローラ271に双方向に接続されたダウンストリームポートと、を有する。
【0026】
図3は、いくつかの実施形態による
図2のラストレベルキャッシュ300の実施形態を含むSOCの一部を示す図である。LLC300には、概して、コヒーレントスレーブポートインターフェース302、コヒーレントマスタポート304、SRAMメモリ310、応答スケジューラ312、マルチプレクサ313、トランザクションキュー及びスケジューラ316、書込みデータバッファ318、ORゲート320、ORゲート321、マルチプレクサ322、応答データポート324、マルチプレクサ326、ビクティムキュー328が含まれる。データファブリック260のトラフィックモニタ330及びローカルCステートコントローラ340も示されている。
【0027】
コヒーレントスレーブポートインターフェース302は、データファブリック260のコヒーレントスレーブコントローラに双方向に接続され、コヒーレントスレーブコントローラは、データファブリック260からメモリアクセス要求及び書込みデータを受信し、メモリアクセス応答及び読取りデータをデータファブリック260に提供する。
【0028】
書込みデータバッファ318は、コヒーレントスレーブポート302に接続された入力と、マルチプレクサ314に接続された第1の出力と、マルチプレクサ322に接続された第2の出力と、コヒーレントマスタポート302に接続された第3の出力と、ORゲート320に接続された第3の出力と、ORゲート321に接続された第4の出力と、を有する。書込みデータバッファ318は、コヒーレントスレーブポート302を介してデータファブリック260からデータを受信して記憶し、データがキャッシュエントリの一部としてマルチプレクサ322を介してSRAM310に送信されるまで、データがメモリコントローラへのマスタポート304を介してメインメモリに送信されるまで、又は、データが、メモリにアクセスしているエージェントに、マルチプレクサ314を介し、コヒーレントスレーブポート302、データファブリック260を介して返されるまで、データを保持する。また、データバッファ318は、以下でさらに説明するように、データバッファ318が揮発性メモリに対してLLCキャッシュ可能なトラフィックを有する場合には、ORゲート320の入力に信号をアサートし、データバッファ318が揮発性メモリに対してLLC330によってキャッシュ不可能なトラフィックを有する場合には、ORゲート321の入力に信号をアサートする。
【0029】
応答データポート324は、コヒーレントマスタポート302に接続された入力と、マルチプレクサ314に接続された第1の出力と、マルチプレクサ322に接続された第2の出力と、を有する。応答データポート324は、マスタポート304を介してメモリコントローラ271からデータを受信及び記憶し、データがキャッシュエントリの一部としてマルチプレクサ322を介してSRAM310に送信されるまで、及び/又は、データの特にアクセスされた部分が、データにアクセスしているエージェントに、マルチプレクサ314を介し、コヒーレントスレーブポート302、データファブリック260を介して送信されるまで、データが保持される。
【0030】
応答スケジューラ312は、コヒーレントマスタポート304に接続された第1の入力と、トランザクションキュー及びスケジューラ316に接続された第2の入力と、コヒーレントスレーブポート302に接続された出力と、を有する。応答スケジューラ312は、マスタポート304を介してメモリコントローラ271から受信した応答を、データにアクセスしているエージェントに、コヒーレントスレーブポート302を介し、データファブリック260を通して転送するために使用されるとともに、トランザクションキュー/スケジューラ316にインターフェースして、キャッシュに割り当てられた読取りを受信するために使用される。
【0031】
トランザクションキュー及びスケジューラ316は、コヒーレントスレーブポート302に接続された入力と、応答スケジューラ312に接続された第1の出力と、ビクティムキュー328に接続された第2の出力と、マルチプレクサ326に接続された第3の出力と、ORゲート320に接続された第4の出力と、ORゲート321に接続された第5の出力と、を有する。トランザクションキュー及びスケジューラ316は、概して、キャッシュ300内のメモリアクセス要求を調整する。この実施形態では、トランザクションキュー及びスケジューラ316は、キャッシュ300によって処理されるほとんどの要求を処理するシフティングコラプシング(shifting-collapsing)キューとして実装される。データファブリック260からコヒーレントスレーブポート302を介して入ってくるメモリアクセス要求、又は、ビクティム要求、フラッシュされたデータ及びリンスされたデータ等の内部要求は、トランザクションキュー/スケジューラ316に新しいエントリを割り当てる。トランザクションキュー/スケジューラ316は、サイクルごとに選択する動作をスキャンするいくつかの異なるエンジンを有する。例えば、最長時間未使用(LRU)キャッシュラインを探し、ビクティムキュー328を使用してメモリ位置をステージングし、マルチプレクサ326及びコヒーレントマスタポート304を介してメインメモリに書き戻す2つのビクティムラインピッカが存在する。SRAM310に対するタグ読取り及びタグルックアップ動作を選択するタグ読取り及びルックアップピッカが存在する。同様に、SRAM310に対するタグ書込み動作を選択するタグ書込み及びルックアップピッカが存在する。データ読取りピッカ及びデータ書込みピッカは、それぞれ、SRAM310のデータ読取り又はデータ書込みを選択する。最後に、メモリコントローラピッカが、マスタポートを介してメモリコントローラ271の読取り及び書込みを選択する。トランザクションキュー/スケジューラ316は、内部クロックサイクルごとに2つまでの割り当て及び2つまでの割り当て解除をサポートする。また、トランザクションキュー/スケジューラ316は、トランザクションキュー/スケジューラ316が揮発性メモリに対してLLCキャッシュ可能なトラフィックを有する場合に、ORゲート320の入力に信号をアサートし、トランザクションキュー/スケジューラ316が揮発性メモリに対してLLC330によってキャッシュ不可能なトラフィックを有する場合に、ORゲート321の入力に信号をアサートするが、これについては以下でさらに説明する。
【0032】
ビクティムキュー328は、トランザクションキュー/スケジューラ316に接続された入力と、ORゲート320に接続された出力と、ORゲート321に接続された出力と、を有する。トラフィックモニタ300は、概して、メモリコントローラ271及びLPDDRx SDRAM273等のその接続された揮発性メモリへのコヒーレントマスタポート304に向けられたトラフィックを監視するために、LLC300に接続される。マスタポート304に向けられたトラフィックは、この実施形態では、データバッファ318、トランザクションキュー/スケジューラ316及びビクティムキュー328の各々で監視される。他の実施形態では、トラフィックは、他の場所、例えばマスタポート304の出力バッファで監視され得る。この監視は、データファブリック260がCステートでないか又はアイドルでない状態の間であっても、揮発性メモリへのトラフィックがアイドルである場合に、揮発性メモリをセルフリフレッシュ状態にすることができる省電力機能を提供するために使用される。ORゲート320は、データバッファ318、トランザクションキュー/スケジューラ316及びビクティムキュー328の何れかが、揮発性メモリへのラストレベルキャッシュクライアントトラフィックを有することをそれぞれの出力で伝える場合にはいつでも、「LLCClientWake」信号をアサートする。「非LLCスタッタリングクライアント」は、ラストレベルキャッシュによって処理されないスタッタリングクライアントトラフィックである。ORゲート321は、データバッファ318、トランザクションキュー/スケジューラ316及びビクティムキュー328の何れかが、揮発性メモリのラストレベルキャッシュによって処理されない非LCスタッタリングクライアントトラフィックを有することをそれぞれの出力で伝える場合にはいつでも、「NonLLCStutterClientWake」信号をアサートする。
【0033】
トラフィックモニタ300は、ORゲート320からLLCClientWake信号を受信する第1の入力と、ローカルCステートコントローラ340に接続された出力と、を有する。ローカルCステートコントローラ340からCステート構成情報を受信するために、他の入力(図示せず)が含まれてもよい。
【0034】
データファブリック260のローカルCステートコントローラ340は、データファブリック260のCステートを制御し、図示されていない様々なポートモニタ及び制御出力を含む。ローカルCステートコントローラ340は、トラフィックモニタ340に接続された入力と、ORゲート320からLLCClientWake信号を受信する入力と、ORゲート321からNonLLCStutterClientWake信号を受信する入力と、信号「DstateSel」をメモリコントローラ電力状態マネージャに提供する出力と、信号「FcStateSel」をメモリコントローラ電力状態マネージャに提供する出力と、を有する。
【0035】
動作中、トラフィックモニタ330は、監視されたトラフィックにおけるアイドル状態の検出に基づいて、ローカルCステートコントローラ340に信号を送り、ラストレベルキャッシュ330におけるキャッシュミス又は追い出しに応じて、メモリコントローラに、揮発性メモリがセルフリフレッシュモードを離れるように命令させる。信号NonLLCStutterClientWakeは、LLC300でキャッシュされていないスタッタリングクライアントからのトラフィックがコヒーレントマスタポート304を介して揮発性メモリへのアクセスを必要とすることをローカルCステートコントローラ340に示すために使用され、信号LLCClientWakeは、非スタッタリング(通常)メモリクライアントからのトラフィックが揮発性メモリへのアクセスを必要とすることをトラフィックモニタ330及びローカルCステートコントローラ340に示すために使用される。この実施形態では、トラフィックモニタ330は、この実施形態におけるLLCクライアントからのトラフィックのみを監視することによってトレーニングされ、動作する。いくつかのスタッタリングクライアントは、それらのトラフィックをLLC300においてキャッシュさせる場合があり、したがってそのようなクライアントからのトラフィックは、信号NonLLCStutterClientWakeをアサートさせることはない。非スタッタリングクライアントは、エントリが存在するとすぐに、その出力バッファを空にし、及び/又は、その入力バッファを埋めようとするクライアントである。例えば、CCX220は、非スタッタリングクライアントである。一方、スタッタリングクライアントは、ある数のメモリアクセス要求を集めてから、それらを1つのバーストで送信しようと試みるクライアントである。最も一般的なスタッタリングクライアントは、RTクライアント242及び243(
図2)として具現化され得るディスプレイコントローラ又は他のマルチメディアクライアントである。データファブリックがCステートに入る前又はメモリコントローラがプリエンプティブCステートに入る前に、スタッタリングクライアントは、メモリへ完全にアクセスでき、トラフィックを自由に生成することができる。メモリコントローラがCステートに入る場合、非LLCキャッシュ可能なスタッタリングクライアントは、これらのスタッタリングクライアントがメモリトラフィックを蓄積し、それをバーストで送信するスタッタモードに入る必要がある。データファブリックがCステートにある場合、スタッタリングクライアントにおけるバッファは充填され、次いで、メモリへのアクセスを復元するようにデータファブリックに要求することによってウォーターマークレベル(watermark level)まで排出される。
【0036】
その入力信号に基づいてアイドルトラフィック状態を検出するために、トラフィックモニタ330は、ヒステリシスタイマ331によって決定される期間、アイドル状態であるコヒーレントマスタポート304を介した揮発性メモリへのトラフィック、又は、次のトラフィックアイドル期間が指定された閾値より長く続くという予測の何れかに応じてアイドル状態を検出する成功モニタ回路332をさらに使用する。成功モニタ回路342は、バーストフィルタ333と共に動作して、トラフィック再開後の短い持続時間だけ続く「雑音の多い」トラフィックをフィルタリングし、それによって次のトラフィックアイドル予測の歪みを回避する。いくつかの実施形態では、成功モニタ回路は、ラストレベルキャッシュとメモリコントローラとの間の非スタッタリングトラフィックのみを使用して予測を行うようにトレーニングされる。
【0037】
この実施形態では、揮発性メモリにおいてセルフリフレッシュ状態に入ることに加えて、ローカルCステートコントローラ340は、トラフィックモニタ330がアイドル状態を検出することに基づいて、メモリコントローラに選択されたCステートに入らせるようにさらに動作可能である。選択されたCステートには、以下でさらに説明するように、動作電力状態を維持するデータファブリック及びラストレベルキャッシュが含まれる。信号DstateSel及びFcStateSelは、監視されたトラフィックのアイドル状態を検出するトラフィックモニタ330に基づいて、メモリコントローラに、揮発性メモリがセルフリフレッシュモードに入るように命令させ、一方、ラストレベルキャッシュが動作電力状態を維持し、データファブリックを介したキャッシュヒットに応答するように使用される。具体的には、信号DstateSelは、
図4に関して説明されるような軽量でノーマルなCステートを含むメモリコントローラ電力状態を選択するために使用され、これは、データファブリックが未だCステートに置かれていない間に、揮発性メモリがセルフリフレッシュモードにある状態で、メモリコントローラ271がCステートにあることを含む2つの「プリエンプティブ」Cステートのうち何れかであり得る。信号FcStateSelは、メモリコントローラ動作クロックのクロック電力状態を設定するために使用される。
【0038】
ビクティムキュー328は、ORゲート320を介してLLCClientWake信号をアサートして、LLC330でキャッシュ可能なクライアントの揮発性メモリへのアクセスが必要であることをトラフィックモニタ330及びローカルCステートコントローラ340に信号送信することができる。また、ビクティムキュー328は、ORゲート321を介してNonLLCStutterClientWake信号をアサートして、LLC330でキャッシュ不可能であることをローカルCステートコントローラ340に信号送信することができる。この実施形態では、ビクティムキュー328は、ビクティムキュー328及びトランザクションキュー/スケジューラ316からコヒーレントマスタポート304を介して揮発性メモリへのトラフィックを調停するために使用される高/低ウォーターマーク機能を含む。トラフィックモニタ330によって提供されるセルフリフレッシュ制御がウォーターマーク機能と共により効率的に機能するためには、ウォーターマークに到達するのを待ってキューに居座るビクティムからの不必要に長いLLCClientWakeアサーションを回避するために、保留中の読取りがない場合にビクティムキュー328をフラッシュするプロセスが必要である。ビクティムキュー328がフラッシュされると、それはLLCClientWakeをデアサートし、トラフィックモニタ330がコヒーレントマスタポート304におけるトラフィックアイドル状態を検出できるようになり、その結果、トラフィックが十分にアイドルである場合、トラフィックモニタ330は、プリエンプティブセルフリフレッシュエントリを開始することができる。トランザクションキュー及びスケジューラ316のトランザクションキューが真にアイドルである場合に、ビクティムキュー328は、そのウォーターマークレベル及び占有率にかかわらず、直ちに排出される。しかしながら、トランザクションキュー内にトランザクションが存在する場合、ビクティムキュー328は、トランザクションキューに従い、その占有率がウォーターマークに達するまで、保留中のトランザクションを蓄積する。このような保留中のトランザクションを処理するために、揮発性メモリがセルフリフレッシュ中でない場合に、ビクティムキュー328は、それが入力される毎にLLCClientWake信号をアサートし、ラストレベルキャッシュ300は、閾値方式を無視して、読取りが保留中でない場合にビクティムキュー328を日和見的にフラッシュする。揮発性メモリがセルフリフレッシュ中である場合、ビクティムキュー328は、ビクティムキューが書込み割当てによって追い出されたビクティムをバッファリング可能にすることによってセルフリフレッシュの持続時間の延長を可能にするために、同じ閾値に達した場合にのみLLCClientWakeをアサートする。この挙動により、ラストレベルキャッシュ300は、揮発性メモリにセルフリフレッシュモードを終了させることなく、特定の数の追い出し動作を実行することによってセルフリフレッシュモードからの終了を遅延させることができ、その代わりに、セルフリフレッシュを終了してビクティムキュー328を排出することが必要になるまでビクティムキュー内の利用可能なスペースを使用することができる。以下でさらに説明するように、この機能は、セルフリフレッシュモードがアクティブである場合にはいつでも、それがプリエンプティブに入ったか、又は、データファブリック260のローカルCステートコントローラ240によって指示される通常のエントリプロセスに基づいて入ったかにかかわらず、セルフリフレッシュモードからの終了を遅延させるように機能する。
【0039】
いくつかの実施形態では、セルフリフレッシュモードからの終了を遅延させるために、同様のウォーターマーク機能がデータバッファ318とともに使用され得る。
【0040】
この実施形態では、ラストレベルキャッシュ300は、セルフリフレッシュ機能によって達成可能な総電力節約を改善するために複数の動作モードを有する。具体的には、ラストレベルキャッシュ300は、トラフィックモニタがアイドル状態を検出する可能性を高めるために少なくとも1つの機能が無効にされる第1の高性能モード又は第2の低性能モードで動作するように制御可能である。第2の低性能モードにおいて無効にされ得る機能は、プリフェッチ、投機的メモリ読取り、及び、条件付き書込みスルー/リンス機能を含む。
【0041】
図4は、異なるデータファブリックアイドル状態と
図2のSOC210の他のコンポーネントの状態との間の対応関係を示す表400を示している。表400は、「DFC1」とラベル付けされたデータファブリック260の「軽量」Cステート410を記述する第1の行と、「DFC2」とラベル付けされたデータファブリック260の「従来」Cステート420を記述する第2の行と、「UMCプリエンプティブC1」とのみラベル付けされたメモリコントローラ271の「プリエンプティブ軽量」Cステート430を記述する第3の行と、「UMCプリエンプティブC2」とのみラベル付けされたメモリコントローラ271の「プリエンプティブ従来」Cステートを記述する第4の行と、を含む。チャート400は、「Cステート」列、「UMC」とラベル付けされたメモリコントローラ列、「PHY」とラベル付けされた物理インターフェースコントローラ列、「DRAM」とラベル付けされた揮発性メモリ列、「UMC CLK」とラベル付けされたメモリコントローラクロック列(UMC CLKはメモリコントローラのクロックソースを指す)、及び、「DF CLK」とラベル付けされたデータファブリッククロック列(DF CLKはデータファブリックのクロックソースを指す)を含む7つの列を含む。
【0042】
DFC2は、電力及びクロックの両方がデータファブリック260に対してゲート制御される従来のCステートに対応する。DFC2は、データファブリック260に対して大幅なウェイクアップレイテンシを必要とするので、DFC2は、データファブリック及びメモリコントローラに対して電力及びクロックゲーティングを実行し、さらに、メモリPHYを、そのPLLをオフにした低電力状態であるLP2と指定された状態にする。しかしながら、これらの構成要素をパワーゲーティング及びクロックゲーティングする前に、メモリは、セルフリフレッシュモードになり、DFC2における予想される長い常駐の間、その内容を保存する。加えて、データファブリック及びメモリコントローラのPLLがパワーダウンされ、出力が基準クロックREFCLKにバイパスされる。UMCプリエンプティブC1は、メモリコントローラがDFC1と同じ条件にあるメモリコントローラの軽量Cステートに対応する一方で、データファブリック(ラストレベルキャッシュを含む)が動作可能であり、UMCプリエンプティブC2は、メモリコントローラがDFC2と同じ条件にあるメモリコントローラの従来のCステートに対応する一方で、データファブリック(ラストレベルキャッシュを含む)が動作可能である。
【0043】
上述したように、データファブリック260は、軽量CステートDFC1を含む。ウェイクアップレイテンシを短縮して、例えばリアルタイム周辺機器に対応するために、DFC1は、データファブリック260及びメモリコントローラのクロックソースをクロックゲートするだけで、データファブリック及びメモリコントローラのPLLをロックしたまま、メモリPHYの電源をオンに保つ。しかしながら、これらの構成要素をクロックゲーティングする前に、メモリは、DFC1内の不確定な常駐中にその内容を保存するためにセルフリフレッシュモードに置かれ、データファブリック及びメモリコントローラのPLLは、電源オフにされるのではなく、より低いレイテンシのディープスリープモードにされる。したがって、データファブリックは、画像センサプロセッサ等のリアルタイム周辺機器がメモリシステムに周期的にアクセスする能力を可能にするために、より低いレイテンシを提供する軽量アイドル状態DFC1を提供する。
図3のトラフィックモニタ300は、以下でさらに説明するように、データファブリックCステートがアクティブでない場合でも、セルフリフレッシュ状態(好ましい例では、行430及び440の2つのプリエンプティブCステートのうち何れか)に入ることによって、揮発性メモリ(典型的にはDRAM)が追加の電力を節約できるように、図示されたスキームと連動して動作する。
【0044】
図5は、いくつかの実施形態による、
図3のトラフィックモニタ300等のトラフィックモニタを有するラストレベルキャッシュを含むメモリシステムを動作させるためのプロセスのフローチャート500を示している。図示されたプロセスは、
図3のラストレベルキャッシュ及びトラフィックモニタ又は他の適切な実施形態とともに使用するのに適している。プロセスはブロック502で始まり、ここで、プロセスは、ラストレベルキャッシュと揮発性メモリコントローラとの間のトラフィックを監視し、例えば、
図3の監視信号及び回路を使用することによって、アイドル状態を検出する。検出されたアイドル状態は、上述したように、ラストレベルキャッシュのクライアントトラフィックのアイドル状態にのみあてはまり、DRAMへの非LLCスタッタリングクライアントトラフィックがこの時点で存在すると予想される。ブロック504において、アイドル状態の検出に応じて、プロセスは、メモリコントローラに、揮発性メモリがセルフリフレッシュモードに入るように命令させ、一方、ラストレベルキャッシュは、動作電力状態を維持し、データファブリックを介したキャッシュヒットに応答する。この実施形態では、プロセスは、
図4の2つのプリエンプティブCステートのうち何れかから選択された所望の電力状態を示す信号DstateSelでメモリコントローラに信号を送り、所望のクロック低電力状態を示す信号FcStateSelでメモリコントローラに信号を送る。望ましい将来の状態は、データファブリックで使用されることが予想されるCステートと一致するように、データファブリクックの電力状態コントローラによって設定されることが好ましい。例えば、データファブリックが直近にDFC1電力状態にあった場合、その状態は、データファブリックで次に使用されることが予想される状態とすることができ、したがって、メモリコントローラにおけるプリエンプティブCステートのための所望の電力状態は、メモリコントローラにおける同じ条件を含むUMCプリエンプティブC1電力状態である。
【0045】
ブロック506において、非LLC処理(サービス)対象スタッタリングクライアントがスタッタモードにされ、次いで、ラストレベルキャッシュは、メモリコントローラがプリエンプティブCステートにあり、揮発性メモリがセルフリフレッシュモードである間、データファブリックを介して残りのクライアントからのメモリアクセス要求を処理し続けることができる。(
図6及び
図7に関してさらに説明されるように、プロセスのこの時点で揮発性メモリへのアクセスを引き起こす動作は、セルフリフレッシュモードからの終了を引き起こす。)概して、データファブリックがCステートに入る前又はメモリコントローラがプリエンプティブCステートに入る前には、スタッタリングクライアントは、メモリに完全にアクセスでき、トラフィックを自由に生成することができる。メモリコントローラがブロック504でCステートに入る場合に、非LLCキャッシュ可能スタッタリングクライアントは、これらのスタッタリングクライアントがメモリトラフィックを蓄積し、それをバーストで送信するスタッタモードに入る必要がある。データファブリックがCステートにある場合に、スタッタリングクライアントのバッファは一杯になり、次いで、メモリへのアクセスを復元するようにデータファブリックに要求することによって、ウォーターマークレベルまで排出される。また、この機能は、504で入力されたプリエンプティブメモリコントローラCステートと組み合わせて用いられる。データファブリックが未だCステートでなくても、スタッタリングクライアントはスタッタモードに置かれる。
【0046】
図示されたシナリオでは、ブロック508において、指定されたタイプのCステート、例えば、
図4に示されたCステートのうち何れかに入る準備が整う。ブロック510において、プロセスは、データファブリックによって入力されるCステートが、メモリコントローラに対して既に指定されたCステートと一致するか、又は、メモリコントローラに対して指定されたCステートよりも軽いCステートであるかを判定する。ほとんどの動作条件において、状態は一致する。しかしながら、データファブリックでトラフィック条件が変化した場合、それらが一致しない可能性がある。メモリコントローラのCステートがデータファブリックと一致するか又はデータファブリックよりも深い場合、メモリコントローラは、必要最小限の深さの状態に入る遅延を既に被っており、プロセスはブロック514に進む。ブロック510において、メモリコントローラのCステートがデータファブリック260のCステートよりも軽い(データファブリックのCステートがより深い)場合、プロセスはブロック512に進み、ここで、メモリコントローラに、セルフリフレッシュ状態から離れる揮発性メモリを含む現在のCステートを離れて、メモリコントローラがデータファブリックで使用されるCステートに入る場合にセルフリフレッシュ状態に再入力させる。メモリコントローラにおける指定された低電力状態が、データファブリックのCステートによって要求されるものと一致する場合、プロセスはブロック514に進み、メモリコントローラは、メモリにセルフリフレッシュ状態を離れさせることなく、指定されたCステート状態に入る。非LLCスタッタリングクライアントが先に既にスタッタモードにされているので(ブロック504)、データファブリックCステートエントリは、プリエンプティブメモリコントローラCステートの代わりにアクティブ状態からデータファブリックCステートに入る場合に通常行うように、これらのクライアントを個別にスタッタモードにする必要はない。
【0047】
図示されたプロセスは、トラフィックモニタ300によって制御されるより頻繁なメモリセルフリフレッシュ状態とともに、メモリコントローラのCステート状態及びメモリPHYのCステート状態の両方における可変性を依然として可能にしながら、メモリコントローラの電力状態コントローラにおける小さく効率的な有限状態機械論理の使用を可能にするという利点を有する。
【0048】
図6は、いくつかの実施形態による、メモリコントローラがCステートにある間にセルフリフレッシュ状態を離れるプロセスのフローチャート600を示している。図示されたプロセスは、
図3のラストレベルキャッシュおよびトラフィックモニタ又は他の適切な実施形態とともに使用するのに適している。ブロック602において、プロセスは、セルフリフレッシュ状態中にラストレベルキャッシュにおける揮発性メモリへのトラフィックを検出し、メモリコントローラは、
図4での2つのプリエンプティブCステートのうち何れか等のプリエンプティブCステートにあり、データファブリック及びラストレベルキャッシュは動作可能である。そのようなトラフィックは、以前にキャッシュにヒットしただけであったラストレベルキャッシュクライアントによって、又は、非LLCスタッタリングクライアントがそれらのスタッターウォーターマークレベルに達しそれらのデータバッファを充填又はフラッシュするために揮発性メモリへのアクセスを要求することによって、引き起こされ得る。ブロック604で、プロセスは、関与するトラフィックのタイプに応じて、NonLLCStutterClientWake信号又はLLCClientWake信号の何れかでトラフィックモニタに信号を送る。ブロック606において、トラフィックモニタは、メモリコントローラの電力状態コントローラに、Cステートを終了し、揮発性メモリをセルフリフレッシュ状態から抜け出すように信号を送る。ブロック608において、揮発性メモリトラフィックは、ラストレベルキャッシュからメモリコントローラに送信され、メモリコントローラによって処理される。
【0049】
図7は、いくつかの実施形態による、メモリコントローラでの遅延Cステート終了を含む、データファブリックでのCステートを終了するプロセスのフローチャート700を示している。図示されたプロセスは、
図3のトラフィックモニタ及びラストレベルキャッシュと共に使用される他の適切なトラフィックモニタ回路と共に使用するのに適している。プロセスは、ブロック702で始まり、データファブリック及びメモリコントローラは、
図4の状態DFC1又はDFC2の何れか等のCステート又は低電力状態にある。揮発性メモリのトラフィックは、データファブリックで検出され、通常、データファブリックをCPU、GPU及びリアルタイムクライアント等の様々なシステムクライアントに接続するマスタポートを監視する個別のトラフィックモニタによって検出される。
【0050】
ブロック704で、プロセスは、トラフィックが、非LLC処理(サービス)可能トラフィックと呼ばれる、ラストレベルキャッシュでキャッシュしていないクライアントからのものであるか否かを判定する。そうである場合、プロセスはブロック704に進み、データファブリックにおいてCステートを終了し、揮発性メモリにおいてセルフリフレッシュモードを終了することを含めて、メモリコントローラにおいてCステートを終了する。そうでない場合、プロセスはブロック706に進み、データファブリックにおけるCステートを終了する。例えば、
図4に示されるCステートをサポートする実施形態の場合、このブロックは、Cステート410又は420のうち何れかから、Cステート430又は440のうち何れかに進む。ブロック708に示すように、揮発性メモリにおけるセルフリフレッシュ状態の維持を含め、データファブリックにおけるCステートが維持される。ブロック710において、この状態は、揮発性メモリへのアクセスが要求されるまで、又は、データファブリックが再びアイドルになってCステートに入るまで、LLCによって処理されるキャッシュ可能なトラフィックで継続する。図示されるように、ラストレベルキャッシュでのキャッシュミス又は追い出しは、揮発性メモリへのアクセスを必要とする。理解され得るように、この図示されたプロセスは、揮発性メモリへのアクセスを必要とするメモリ要求が発生するまで、メモリコントローラがそのCステートを離れることを遅延させ、ラストレベルキャッシュが、それが可能である全てのメモリ要求を処理するのを可能にするという利点を有する。また、図示されたプロセスは、揮発性メモリへのアクセスを必要とするトラフィックがなく、全てのトラフィックがLLCによって処理され得るシナリオが発生した場合に、メモリコントローラがそのCステートを離れることなく、データファブリックがCステートを離れ、そのCステートに再び入ることを可能にする。これらのシナリオの両方は、絶対に必要になるまで、メモリコントローラCステート及びメモリセルフリフレッシュ状態の終了を回避することによって、著しい電力節約を提供する。
【0051】
図8は、いくつかの実施形態による、メモリコントローラがプリエンプティブCステートにある状態で、データファブリックのCステートに入るプロセスのフローチャート800を示している。図示されたプロセスは、
図3のトラフィックモニタ及びラストレベルキャッシュと共に使用される他の適切なトラフィックモニタ回路と共に使用するのに適している。プロセスはブロック802で始まり、メモリコントローラがCステートにあり、揮発性メモリがセルフリフレッシュ状態にある間に、データファブリックがアイドルになる。例えば、
図4のCステートをサポートする実施形態では、メモリコントローラは、プリエンプティブCステート430又は440のうち何れかにある。次に、ブロック804において、プロセスは、揮発性メモリにおけるセルフリフレッシュ状態を含むCステートをメモリコントローラにおいて維持する。メモリコントローラにおけるCステートが、データファブリックに対する所望のCステートよりも軽い場合、このブロックは、メモリコントローラをより深いCステートにすることを含み、これは、
図5に関して説明したように、現在の状態を終了し、より深いCステートに再び入ることを含み得る。ブロック806において、データファブリックは所望のCステートに入る。このプロセスは、状態430又は440の何れかから状態410又は420の何れかへ(
図4)の変化を表す。
【0052】
図9は、いくつかの実施形態による、トラフィックモニタの成功モニタをトレーニングするためのプロセスのフローチャート900を示している。図示されたプロセスは、
図3のトラフィックモニタ及びラストレベルキャッシュと共に使用される他の適切なトラフィックモニタ回路と共に使用するのに適している。プロセスは、ブロック902で成功モニタのトレーニングを開始する。メモリコントローラを介した揮発性メモリへの非スタッタリングトラフィックを有するトラフィック期間は、LLCClientWake信号に基づくトレーニングに使用され、非LLC処理(サービス)可能スタッタリングトラフィックからのトラフィックは、トレーニングに使用されない。ブロック904で、データファブリックがアイドル状態になり、Cステートに置かれた場合、プロセスはブロック905に進み、トラフィックモニタのトレーニングを一時停止する。データファブリックがアイドルでない場合、メモリコントローラがプリエンプティブCステートにあるか否かにかかわらず、プロセスはブロック906に続き、ここで、プロセスは現在のアイドルトラフィック期間がヒステリシスタイマの所望の値よりも長く続くか否かの予測を行うように成功モニタをトレーニングする。理解され得るように、フローチャートは一連のステップを示すが、トレーニングプロセスは進行中であってもよく、スタッタトラフィックがトレーニングを中断するイベントドリブン(event-driven)方式で制御され得る。
【0053】
図3の実施形態では、スタッタリングトラフィックはラストレベルキャッシュ300でキャッシュされず、その期間の性質のために、成功モニタ332をトレーニングするのに役立たない。しかしながら、他の実施形態では、スタッタリングトラフィックのキャッシングは、ラストレベルキャッシュ300において可能にされ得る。そのような実施形態では、トレーニングは、トラフィックがラストレベルキャッシュでキャッシングして提供される場合、スタッタリングトラフィックで行われ得る。
【0054】
図10は、いくつかの実施形態による、ラストレベルキャッシュにおいて指定されたサブシステムからの保存/復元トラフィックを処理するためのプロセスのフローチャート1000を示している。図示されたプロセスは、
図3のトラフィックモニタ及びラストレベルキャッシュと共に使用される他の適切なトラフィックモニタ回路と共に使用するのに適している。ブロック1002において、プロセスは、特定のサブシステム電力状態変化に対する保存/復元トラフィックを、LLCにおいてキャッシュ可能であるものとして指定する。好ましくは、この指定は、保存/復元トラフィックに使用されるメモリアドレス範囲をLLCによってキャッシュ可能なものとして設定することによって行われる。そのように指定された保存/復元トラフィックは、例えば、上述したようなスリープ状態又はCステートに及びスリープ状態又はCステートからデータファブリックを遷移させるためのトラフィックであり得る。任意の他のサブシステム又はモジュールをスリープ状態に及びスリープ状態から遷移させるためのトラフィックは、いくつかの実施形態では、LLCによってキャッシュ可能として指定されてもよい。
【0055】
ブロック1004において、メモリコントローラは、上述したようにプリエンプティブCステートにある。そのような状態では、ブロック1006において、LLCは、LLCにおいてキャッシュ可能であると指定された保存/復元トラフィックを処理(サービス)することができる。示されたプロセスの使用は、選択された保存及び復元トラフィックを処理するために、メモリコントローラをCステートから解除し、揮発性メモリをセルフリフレッシュから解除するのを回避することによって電力を節約するという利点を有する。
【0056】
図2のSOC210又はラストレベルキャッシュ300及びトラフィックモニタ330等のその任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、本データ構造は、ベリログ又はVHDL等の高位設計言語(HDL)における、ハードウェア機能の挙動レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造してもよい。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィック・データ・システム(Graphic Data System、GDS)IIデータであってもよい。
【0057】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。本明細書で開示されるプローブフィルタのための低電力状態保持とともに使用される様々な技術は、独立して又は他の技術とともに使用され得る。さらに、異なる技術及び回路を使用して、低電力状態保持に入る条件を検出することができる。
【0058】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。
【手続補正書】
【提出日】2024-08-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データプロセッサであって、
複数のリクエスタと複数のレスポンダとの間で要求をルーティングするデータファブリックと、
揮発性メモリにアクセスするためのメモリコントローラと、
前記メモリコントローラと前記データファブリックとの間に結合されたラストレベルキャッシュと、
前記ラストレベルキャッシュに結合され、前記ラストレベルキャッシュと前記メモリコントローラとの間のトラフィックを監視するように動作可能であり、監視された前記トラフィックにおけるアイドル状態の検出に基づいて、前記揮発性メモリがセルフリフレッシュモードに入るように前記メモリコントローラに命令させるトラフィックモニタと、を備える、
データプロセッサ。
【請求項2】
前記ラストレベルキャッシュは、前記揮発性メモリが前記トラフィックモニタによって引き起こされた前記セルフリフレッシュモードにある間、動作電力状態を維持し、前記データファブリックを介したキャッシュヒットに応答する、
請求項1のデータプロセッサ。
【請求項3】
前記トラフィックモニタは、前記ラストレベルキャッシュにおけるキャッシュミス又は追い出しに応じて、前記揮発性メモリが前記セルフリフレッシュモードを離れるように前記メモリコントローラに命令させるように動作可能である、
請求項1のデータプロセッサ。
【請求項4】
前記トラフィックモニタは、
ヒステリシスタイマと、
前記ヒステリシスタイマに結合された成功モニタ回路であって、前記ヒステリシスタイマの満了までの前記ラストレベルキャッシュと前記メモリコントローラとの間のアイドルトラフィック、又は、次のトラフィックアイドル期間が閾値よりも長く続くという予測に基づいて前記アイドル状態を検出する、成功モニタ回路と、を備える、
請求項1のデータプロセッサ。
【請求項5】
前記成功モニタ回路は、前記ラストレベルキャッシュによって処理可能なトラフィックのみを使用して前記予測を行うようにトレーニングされている、
請求項3のデータプロセッサ。
【請求項6】
前記ラストレベルキャッシュは、前記トラフィックモニタが前記アイドル状態を検出する可能性を高めるために、高性能モード、及び、少なくとも1つの機能が無効化された低性能モードで選択的に動作する、
請求項1のデータプロセッサ。
【請求項7】
前記ラストレベルキャッシュは、ビクティムキューを含み、
前記ラストレベルキャッシュは、前記揮発性メモリが前記セルフリフレッシュモードでない場合に、前記ビクティムキューを日和見的にフラッシュするように動作し、
前記ラストレベルキャッシュは、前記セルフリフレッシュモードからの終了を遅延させるために、前記揮発性メモリが前記セルフリフレッシュモードである場合に、前記ビクティムキューが指定された閾値まで充填されるのを可能にするように動作する、
請求項1のデータプロセッサ。
【請求項8】
前記トラフィックモニタは、前記メモリコントローラがアイドルであることを示すために前記データファブリックにおけるローカル電力状態コントローラに信号を送ることによって、前記アイドル状態を検出することに基づいて前記メモリコントローラを選択されたCステートに入らせるように動作可能であり、前記選択されたCステートは、前記データファブリック及びラストレベルキャッシュが動作電力状態を維持することを含む、
請求項1のデータプロセッサ。
【請求項9】
前記ラストレベルキャッシュは、非スタッタリングトラフィックが前記揮発性メモリへのアクセスを必要とすることを示す第1の信号を前記トラフィックモニタに送信し、
前記ラストレベルキャッシュは、前記第1の信号と、前記揮発性メモリへのアクセスを必要とするスタッタリングトラフィックを示す第2の信号と、を前記データファブリックの前記電力状態コントローラに送信する、
請求項7のデータプロセッサ。
【請求項10】
データプロセッサのデータファブリックにおいて、複数のリクエスタと複数のレスポンダとの間で要求をルーティングすることと、
前記データファブリックに結合されたラストレベルキャッシュにおいて、揮発性メモリへのトラフィックを監視することと、
監視された前記トラフィックにおけるアイドル状態の検出に基づいて、前記揮発性メモリがセルフリフレッシュモードに入るようにメモリコントローラに命令させることと、を含む、
方法。
【請求項11】
前記揮発性メモリが前記トラフィックモニタによって引き起こされた前記セルフリフレッシュモードにある間、前記データファブリックを介したキャッシュヒットに応答するために維持される前記ラストレベルキャッシュの動作電力状態を維持することを含む、
請求項10の方法。
【請求項12】
前記ラストレベルキャッシュにおけるキャッシュミス又は追い出しに応じて、前記セルフリフレッシュモードを離れるように前記揮発性メモリに命令することを含む、
請求項10の方法。
【請求項13】
ヒステリシスタイマの満了までの前記ラストレベルキャッシュと前記メモリコントローラとの間のアイドルトラフィック、又は、次のトラフィックアイドル期間が閾値よりも長く続くという予測に基づいて前記アイドル状態を検出することを含む、
請求項10の方法。
【請求項14】
前記ラストレベルキャッシュによって処理可能なトラフィックのみを使用して前記予測を行うように成功モニタ回路をトレーニングすることを含む、
請求項13の方法。
【請求項15】
前記データプロセッサの少なくとも1つのサブシステムの保存/復元トラフィックを、前記ラストレベルキャッシュにおいてキャッシュ可能であると指定することと、
前記揮発性メモリが前記セルフリフレッシュ状態にある間に、前記ラストレベルキャッシュにおいて前記少なくとも1つのサブシステムの保存/復元トラフィックを処理することと、を含む、
請求項10の方法。
【国際調査報告】