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

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

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特許7592199低電力状態後のデマンドベースのプローブフィルタ初期化
<>
  • 特許-低電力状態後のデマンドベースのプローブフィルタ初期化 図1
  • 特許-低電力状態後のデマンドベースのプローブフィルタ初期化 図2
  • 特許-低電力状態後のデマンドベースのプローブフィルタ初期化 図3
  • 特許-低電力状態後のデマンドベースのプローブフィルタ初期化 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-21
(45)【発行日】2024-11-29
(54)【発明の名称】低電力状態後のデマンドベースのプローブフィルタ初期化
(51)【国際特許分類】
   G06F 12/0815 20160101AFI20241122BHJP
   G06F 12/0806 20160101ALI20241122BHJP
   G06F 15/78 20060101ALI20241122BHJP
【FI】
G06F12/0815
G06F12/0806 100
G06F15/78 515
G06F15/78 530
【請求項の数】 14
(21)【出願番号】P 2023577540
(86)(22)【出願日】2022-06-07
(65)【公表番号】
(43)【公表日】2024-07-10
(86)【国際出願番号】 US2022032540
(87)【国際公開番号】W WO2022271444
(87)【国際公開日】2022-12-29
【審査請求日】2024-01-25
(31)【優先権主張番号】17/357,047
(32)【優先日】2021-06-24
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ベンジャミン チェン
(72)【発明者】
【氏名】アミット ピー. アプテ
【審査官】北村 学
(56)【参考文献】
【文献】特表2019-534501(JP,A)
【文献】米国特許出願公開第2014/0195830(US,A1)
【文献】米国特許出願公開第2019/0265778(US,A1)
【文献】国際公開第2013/027261(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
データプロセッサであって、
複数のリクエスタと、
複数のレスポンダと、
前記複数のリクエスタと前記複数のレスポンダとの間で要求をルーティングするためのデータファブリックと、
電力管理コントローラと、を備え、
前記データファブリックは、
メモリのキャッシュされたラインの状態を追跡するプローブフィルタであって、初期化状態を有するプローブフィルタを備え、
前記電力管理コントローラは、
プローブフィルタクライアントである全てのリクエスタが非動作電力状態にある間に、前記データファブリックが非動作電力状態を離れて、プローブフィルタクライアントではないリクエスタからの要求を実行する場合に、前記プローブフィルタが前記初期化状態に入るのを遅延させ、プローブフィルタクライアントである少なくとも1つのリクエスタが動作電力状態にある場合に、前記プローブフィルタが前記初期化状態に入ることを許容するように動作可能である、
データプロセッサ。
【請求項2】
前記データファブリックは、
クロスバールータと、
前記クロスバールータに結合され、前記初期化状態中に、プローブフィルタクライアントであるリクエスタからのキャッシュ可能なコヒーレント要求をブロックし、プローブフィルタクライアントではないリクエスタからの要求を実行するように動作可能な1つ以上のコヒーレントスレーブコントローラと、を備える、
請求項1のデータプロセッサ。
【請求項3】
前記コヒーレントスレーブコントローラは、前記初期化状態中に、ブロックされたキャッシュ可能なコヒーレント要求に依存する動作可能なブロック要求である、
請求項2のデータプロセッサ。
【請求項4】
前記コヒーレントスレーブコントローラは、前記初期化状態中に、プローブフィルタクライアントではないリクエスタからのコヒーレント要求をキャッシュミスとして分類し、実行するように動作可能である、
請求項2のデータプロセッサ。
【請求項5】
前記電力管理コントローラは、プローブフィルタクライアントである前記リクエスタのうち少なくとも1つがその非動作電力状態を離れて初期化状態に入ることに応じて、前記プローブフィルタをその初期化状態に入らせる、
請求項1のデータプロセッサ。
【請求項6】
プローブフィルタクライアントである前記リクエスタは、中央処理ユニット(CPU)コアを備える、
請求項1のデータプロセッサ。
【請求項7】
グラフィックス処理ユニット(GPU)コア及び入力/出力(I/O)インターフェースコントローラのうち1つ以上を含む、プローブフィルタクライアントではないリクエスタを備える、
請求項6のデータプロセッサ。
【請求項8】
方法であって、
データファブリックにおいて、複数のリクエスタと複数のレスポンダとの間で要求をルーティングすることと、
前記データファブリックに結合されたプローブフィルタにおいて、メモリのキャッシュされたラインの状態を追跡することと、
前記データファブリックが非動作電力状態に入ることに応じて、前記プローブフィルタを非動作電力状態に置くことと、
プローブフィルタクライアントである全てのリクエスタが非動作電力状態にある間に前記データファブリックがその非動作電力状態を離れることに応じて、プローブフィルタクライアントではないリクエスタからの要求を実行し、キャッシュされたラインに関するデータが前記非動作電力状態の後に初期化されるプローブフィルタ初期化状態を遅延させることと、
プローブフィルタクライアントである前記リクエスタのうち少なくとも1つがその非動作電力状態を離れることに応じて、前記プローブフィルタをその初期化状態に入らせることと、を含む、
方法。
【請求項9】
前記プローブフィルタ初期化状態中に、前記データファブリック上のプローブフィルタクライアントである前記リクエスタからのキャッシュ可能なコヒーレント要求をブロックすることを含む、
請求項8の方法。
【請求項10】
前記プローブフィルタ初期化状態中に、前記データファブリック上のブロックされたキャッシュ可能なコヒーレント要求に依存する要求をブロックすることを含む、
請求項8の方法。
【請求項11】
前記初期化状態中に、前記データファブリック上のプローブフィルタクライアントではないリクエスタからのコヒーレント要求をキャッシュミスとして実行することを含む、
請求項8の方法。
【請求項12】
プローブフィルタクライアントではない前記リクエスタは、グラフィックス処理ユニット(GPU)コア及び入力/出力(I/O)インターフェースコントローラのうち1つ以上を備える、
請求項11の方法。
【請求項13】
前記プローブフィルタ初期化状態中に、プローブフィルタクライアントである前記リクエスタからのキャッシュ不可能なコヒーレント要求をキャッシュミスとして実行することを含む、
請求項8の方法。
【請求項14】
プローブフィルタクライアントである前記リクエスタは、中央処理ユニット(CPU)コアを備える、
請求項8の方法。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、異なる入力/出力及び通信機能のために様々な周辺構成要素を利用する。システムオンチップ(system-on-chip、SOC)は、単一の集積回路チップ上で、中央処理ユニット(central processing unit、CPU)コア及びグラフィックス処理ユニット(graphics processing unit、GPU)等のデータ処理回路を周辺コントローラ及びメモリインターフェースと組み合わせ、携帯型の電池式動作によく適している。例えば、SOCは、ディスプレイコントローラ、画像信号プロセッサ(image signal processor、ISP)及びSOC上の他の周辺コントローラを組み込んで、コンピュータシステムへの情報の入力及びコンピュータシステムからの情報の出力を可能にすることができる。そのような大規模で複雑なSOCでは、デバイスは、典型的には、大型のオンチップルーティング回路又は「データファブリック」を通してアクセスをルーティングすることによって、メモリ等のリソース間でデータを転送する。
【0002】
典型的なSOC上の回路の多様性は、省電力モードを実装するための問題を提示する。周辺コントローラの多くは、リアルタイムで動作し、等時性であり、ある期間にわたって共有メモリリソースにある量の帯域幅を必要とする。この要求は、チップ幅の低電力状態の実装を妨げてきた。例えば、CPUコア及びGPUがアイドルである場合に、周辺コントローラは、依然としてアクティブであり、バッファに記憶することができるデータを受信している場合があるが、バッファが一杯になる前にデータをメモリに送信しなければならない。
【0003】
一方、CPU及びGPUは、アイドル期間によって分離された高アクティビティの期間を有する傾向がある。アイドル期間が短いと予想される場合に、データファブリック、メモリコントローラ及びメモリは、典型的には、アクティブのままであり、したがって、より多くのデータを転送するために、周辺コントローラからの要求に迅速にサービスすることができる。
【図面の簡単な説明】
【0004】
図1】従来技術で知られているコンピュータシステム電力状態のためのアドバンスドコンフィグレーションアンドパワーインターフェース(Advanced Configuration and Power Interface、ACPI)モデルのブロック図である。
図2】いくつかの実施形態による、データ処理システムのブロック図である。
図3】いくつかの実施形態による、図2のデータファブリックのブロック図である。
図4】例示的な実施形態による、保持低電力状態に入るためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0005】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0006】
データプロセッサは、複数のリクエスタと、複数のレスポンダと、データファブリックと、電力管理コントローラと、を含む。データファブリックは、複数のリクエスタと複数のレスポンダとの間で要求をルーティングする。データファブリックは、メモリのキャッシュされたラインの状態を追跡し、初期化状態を有するプローブフィルタを含む。電力管理コントローラは、プローブフィルタクライアントである全てのリクエスタが非動作電力状態にある間に、データファブリックが非動作電力状態を離れる場合に、プローブフィルタが初期化状態に入ることを遅延させ、プローブフィルタクライアントである少なくとも1つのリクエスタが動作電力状態にある場合に、プローブフィルタが初期化状態に入ることを許容するように動作する。
【0007】
方法は、データファブリックにおいて、複数のリクエスタと複数のレスポンダとの間で要求をルーティングすることを含む。データファブリックに結合されたプローブフィルタにおいて、メモリのキャッシュされたラインの状態が追跡される。プローブフィルタは、データファブリックが非動作電力状態に入ることに応じて、非動作電力状態に置かれる。プローブフィルタクライアントである全てのリクエスタが非動作電力状態にある間にデータファブリックがその非動作電力状態を離れることに応じて、キャッシュされたラインに関するデータが初期化されるプローブフィルタ初期化状態が遅延される。プローブフィルタクライアントである少なくとも1つのリクエスタがその非動作電力状態を離れることに応じて、プローブフィルタは、その初期化状態に入る。
【0008】
データファブリック回路は、複数のリクエスタと複数のレスポンダとの間で要求をルーティングする。データファブリック回路は、メモリのキャッシュされたラインの状態を追跡し、初期化状態を有するプローブフィルタを含む。データファブリックは、電力管理コントローラからのコマンドに応じて、プローブフィルタクライアントとして動作するリクエスタの第1のグループの各々が非動作電力状態にある場合に、データファブリックが非動作電力状態を離れる場合に、プローブフィルタ初期化状態を遅延させるように動作可能である。
【0009】
図1は、従来技術で知られているコンピュータシステム電力状態のためのアドバンスドコンフィグレーションアンドパワーインターフェース(ACPI)モデル100のブロック図である。ACPIモデル100は、デバイス及びコンピュータシステム全体の両方のデバイス構成及び電力管理のための業界標準インターフェースを確立するために、様々なコンピュータシステム、ソフトウェア及びコンポーネントベンダによって開発されたAPCI仕様の一部である。
【0010】
ACPIモデル100は、「作業」状態として知られるG0(S0)状態110、「スリープ」状態として知られるG1状態120、「ソフトオフ」状態として知られるG2(S5)状態130、及び、「機械的オフ」状態として知られるG3状態140を含むグローバルシステム状態のセットの周りに編成されたコンピュータシステム内の様々なデバイスの状態の階層を定義する。加えて、ACPIモデル100は、ACPI互換オペレーティングシステムがロードされる前の基本入出力システム(basic input/output system、BIOS)動作に対応する既存のBIOS電力管理インターフェースに適応する「レガシー」状態として知られる状態150を含む。また、ACPIモデル100は、中央処理ユニット(CPU)状態160のセットと、モデム、ハードディスクドライブ(hard disk drive、HDD)及びコンパクトディスク読み出し専用メモリ(compact disc read only memory、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状態」で動作することが可能であり、動作周波数は、動的電圧及び周波数スケーリング(dynamic voltage and frequency scaling、DVFS)を使用して現在実行中のアプリケーションプログラムのニーズをサポートするために上昇又は抑制することができる。アイドル状態C1~Cnでは、CPUはアイドルであり、命令を実行しないが、電力消費及びウェイクアップ待ち時間の様々な組み合わせを有し、より低い電力消費は、より長いウェイクアップ待ち時間とトレードオフされる。したがって、例えば、C1状態では、電力消費は最も高いが、ウェイクアップ待ち時間は最も短く、一方、Cn状態では、電力消費は最も低いが、ウェイクアップ待ち時間は最も長い。
【0014】
ACPIモデル100を使用して、各特定のコンピュータシステムは、アプリケーション環境に適したP状態及びC状態の異なる組み合わせをサポートし得る。ACPIモデル100によって指定されていない方法で、低減された電力消費と低い待ち時間との間のより良いトレードオフを達成することは、依然として望ましい目標である。
【0015】
図2は、いくつかの実施形態による、データ処理システム200のブロック図である。データ処理システム200は、SOC210の形態のデータプロセッサと、低電力ダブルデータレートシンクロナスダイナミックランダムアクセスメモリ(low-power Double Data Rate synchronous dynamic random-access memory、LPDDRx SDRAM)273及び283の形態の外部メモリと、を含む。実際のデータ処理システムの多くの他のコンポーネントが典型的に存在するが、本開示を理解することに関連せず、説明を容易にするために図2には示されていない。
【0016】
SOC210は、概して、システム管理ユニット(system management unit、SMU)211と、システム管理ネットワーク(system management networkユニット、SMN)212と、「CCX」とラベル付けされた中央処理(CPU)コア複合体220と、「GFX」とラベル付けされたグラフィックスコントローラ230と、リアルタイムクライアントサブシステム240と、メモリ/クライアントサブシステム250と、データファブリック260と、メモリチャネル270及び280と、周辺コンポーネントインターフェースエクスプレス(Peripheral Component Interface Express、PCIe)サブシステム290と、を含む。当業者によって理解されるように、SOC210は、全ての実施形態に存在するこれらの要素の全てを有していなくてもよく、更に、その中に含まれる追加の要素を有し得る。
【0017】
SMU211は、SMN212を介してSOC210内の主要コンポーネントに双方向に接続されている。SMN212は、SOC210のための制御ファブリックを形成する。SMU211は、SOC210上のリソースの動作を制御して、それらの間の通信を同期させるローカルコントローラである。SMU211は、SOC210上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU211は、SOC210のコンポーネントの各々にクロック信号を提供するために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU211は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切なP状態を判定するために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の両方を含むので、加速処理ユニット(accelerated processing unit、APU)とも呼ばれる。
【0020】
リアルタイムクライアントサブシステム240は、代表的なリアルタイムクライアント242及び243等のリアルタイムクライアントのセットと、「MM HUB」とラベル付けされたメモリ管理ハブ241と、を含む。各リアルタイムクライアントは、SMN212を介してSMU211に双方向接続されており、メモリ管理ハブ241に双方向接続されている。リアルタイムクライアントは、画像信号プロセッサ(ISP)、オーディオコーダ-デコーダ(コーデック)、モニタ上に表示するためにグラフィックスコントローラ230によって生成されたオブジェクトをレンダリング及びラスタ化するディスプレイコントローラ等のように、データの周期的な移動を必要とする任意のタイプの周辺コントローラであり得る。
【0021】
メモリ/クライアントサブシステム250は、代表的なメモリ/クライアントデバイス252及び253等のメモリ要素又は周辺コントローラのセットと、「SYSHUB/IOHUB」とラベル付けされたシステム及び入力/出力ハブ251と、を含む。各メモリ/クライアントデバイスは、SMN212を介してSMU211に双方向に接続されており、システム及び入力/出力ハブ251に双方向に接続されている。メモリ/クライアントデバイスは、不揮発性メモリ、スタティックランダムアクセスメモリ(static random-access memory、SRAM)、シリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ等の外部ディスクコントローラ、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ、システム管理ハブ等のように、非周期的にデータを記憶するか又はデータへのアクセスを必要とする回路である。
【0022】
データファブリック260は、SOC210でのトラフィックのフローを制御する相互接続である。データファブリック260は、SMN212を介してSMU211に双方向に接続されており、CPUコア複合体220、グラフィックスコントローラ230、メモリ管理ハブ241、システム及び入力/出力ハブ251に双方向に接続されている。データファブリック260は、SOC210の様々なデバイスのうち何れかの間でメモリマッピングされたアクセス要求及び応答をルーティングするためのクロスバースイッチを含む。データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するために、基本入力/出力システム(BIOS)によって定義されるシステムメモリマップ及び各仮想接続のためのバッファを含む。
【0023】
メモリチャネル270及び280は、外部メモリ273及び283との間のデータの転送を制御する回路である。メモリチャネル270は、メモリコントローラ271と、外部メモリ273に接続された「PHY」とラベル付けされた物理インターフェース回路272と、によって形成される。メモリコントローラ271は、SMN212を介してSMU211に双方向に接続されており、データファブリック260に双方向に接続されたアップストリームポートと、ダウンストリームポートと、を有する。物理インターフェース回路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】
動作では、SOC210は、単一チップ上にCPUコア複合体220及びグラフィックスコントローラ230を含むコンピューティングデバイス及びストレージデバイスの複雑な組み合わせを統合する。これらのコントローラのほとんどは周知であり、これ以上説明しない。また、SOC210は、SMU211及び/又はオペレーティングシステムソフトウェアの制御下で、P状態上昇及びスロットリング並びにC状態への出入りを含む様々なシステム監視及び電力節約機能を実装する。
【0026】
例えば、SOC210は、命令が実行されていないアイドル期間に基づいて、CPUコア複合体220及びグラフィックスコントローラ230の様々なアイドル状態への出入りを制御する。知られているように、CPUコア複合体220及びグラフィックスコントローラ230が全てアイドル状態に入る場合に、SOC210の他のコンポーネントも、電力を節約するために適切なアイドル状態に置くことができる。一例では、CPUコア複合体220は、浅いアイドル状態(C1)及び深いアイドル状態(C6)状態を含む2つのアイドル状態をサポートする。「パッケージC6」(PC6)状態は、CCXコアの全てがC6状態にあり、CCX内のレベル3キャッシュを含む全てのキャッシュがフラッシュされている状態である。ACPIモードによれば、C1状態は最も軽いC状態であり、単にクロックゲーティングと電源電圧の低下を伴い得るだけで、SOC210はその状態を保持するだけでなく、非常に低い待ち時間でアクティブ状態に戻ることが許容される。一方、C6状態は、非常に深いC状態であり、クロック信号及び電源電圧をゲーティングすることによって電力消費を低減するが、出るための待ち時間も非常に長くなる。C6状態での予想滞在時間は、例えば数十マイクロ秒のオーダーである可能性があるため、出入りの待ち時間が長くなるにもかかわらず、依然として正味の消費電力が提供される。
【0027】
いくつかの知られているシステムでは、SOC210の他のコンポーネントも、データ処理要素のアイドル状態に対応するように様々なアイドル状態に置かれ得る。ある1つの例では、各CPU及びGPUがC1状態に入る場合に、データファブリック及びメモリシステムは完全に動作可能なままであるが、それらが概ね必要とされない場合に著しい電力を消費する。しかしながら、各CPU及びGPUがC6状態に入る場合に、データファブリック260も、電力及びクロックゲーティングを伴う対応するアイドル電力状態に置かれる。データファブリックは、このアイドル電力状態に入る前に、外部メモリをセルフリフレッシュ状態にし、メモリコントローラ及びPHYを同様の低電力状態にする。
【0028】
図3は、いくつかの実施形態による、図2のデータファブリック260のブロック図である。データファブリック260は、マスタポート310のセット、スレーブポート320のセット、クロスバールータ330、及び、電力コントローラ回路350を含む。
【0029】
マスタポート310は、代表的なコヒーレントマスタポート311及び312、並びに、代表的なマスタポート313及び314を含むメモリアクセス要求を生成可能な各デバイスのためのポートを含む。ポート311、312、313、314の各々は、図2に示すように、対応する要求デバイスに双方向に接続されるように適合されており、双方向ダウンストリームポートを有する。各マスタポートは、アクセスを一時的に記憶するための内部FIFOバッファを有する。コヒーレントマスタポート311及び312は、様々な実施形態で、CCX220、GFX230又は他のCPU又はGPUリクエスタ等のコヒーレントリクエスタにアップストリーム方向で接続する。マスタポート313及び314は、アップストリーム方向で、それぞれMMハブ241及びIOHUB251を通して、ディスプレイコントローラ又はマルチメディアコントローラ等の主に非コヒーレントリクエスタに接続されている。
【0030】
スレーブポート320は、代表的な非コヒーレントスレーブポート321と、代表的なコヒーレントスレーブポート322及び323と、を含む、メモリアクセス要求に応答可能な各デバイスのためのポートを含む。スレーブポート321、322、323の各々は、双方向アップストリームポートを有し、図2に示されるように、対応する応答デバイスに双方向に接続されるように適合されている。各スレーブポートは、アクセスを一時的に記憶するための内部FIFOバッファを有する。コヒーレントスレーブポート322及び323の各々は、メモリのキャッシュされたラインの状態を追跡するために、それぞれのプローブフィルタ360に双方向に接続されている。各コヒーレントスレーブポートは、ポートのためのコヒーレントスレーブコントローラを含む。
【0031】
クロスバールータ330は、マスタポート310のダウンストリーム双方向接続への双方向接続と、スレーブポート320のアップストリーム双方向接続への双方向接続と、を有する。クロスバールータ330は、データファブリック260の心臓部であり、マスタポートと対応するスレーブポートとの間でアクセスをルーティングすることによって、リクエスタの宛先アドレスに基づいてマスタとスレーブとの間の仮想接続を形成する。
【0032】
電力コントローラ回路350は、ローカルC状態コントローラ351、クロックゲート回路352、電力ゲート回路353、及び、プローブフィルタクロックゲート345を含む。ローカルC状態コントローラ351は、「SOC STATE」とラベル付けられた信号を受信するための第1の入力と、プローブフィルタ電力ゲート355に接続された第1の出力と、第2及び第3の出力と、を有する。クロックゲート回路352は、「FCLK」とラベル付けされたデータファブリッククロック信号を受信するための入力と、ローカルC状態コントローラ351の第2の出力に接続された制御入力と、選択的にゲートされたクロック信号をデータファブリック260に提供するための出力と、を有する。電力ゲート回路353は、「VDD」とラベル付けされたデータファブリック電源電圧を受信するための入力と、ローカルC状態コントローラ351の第3の出力に接続された制御入力と、選択的にゲートされた電源電圧をデータファブリック260に提供するための出力と、を有する。
【0033】
プローブフィルタ電力ゲート355は、電力ゲート回路353から電源電圧を受け取る入力(図示せず)と、プローブフィルタ360に接続された出力と、を有する。プローブフィルタ電力ゲート355は、C状態コントローラ351の制御下で選択的に動作して、プローブフィルタ360への電力供給をゲートし、図4に関して更に説明するように低電力状態を提供する。
【0034】
概して、データファブリック260は、リクエスタ(CPUコア、GPU、リアルタイムクライアントコントローラ等)とレスポンダ(メモリコントローラ及びPHYを通した外部メモリ、オンチップメモリ等)との間でメモリアクセス要求及び応答をルーティングする。ローカルC状態コントローラは、C状態でクロックゲート352及び電力ゲート353の両方をアクティブ化する。加えて、それは、C状態に入る場合にファブリッククロック信号FCLKを生成する位相ロックループを無効にする等のように、図3に示されていない追加のステップを行い得る。
【0035】
この実施形態では、C状態コントローラ351及びプローブフィルタ電力ゲート355は、プローブフィルタ低電力状態及びプローブフィルタ初期化状態を提供するように動作する電力状態制御回路を含む。プローブフィルタ低電力状態から出る場合に、電力状態制御回路は、以下で更に説明するように、全ての第1のリクエスタが非動作電力状態にある間にデータファブリックが非動作電力状態を離れる場合に、プローブフィルタがプローブフィルタ初期化状態に入ることを遅延させ、少なくとも1つの第1のリクエスタが動作電力状態にある場合に、プローブフィルタがプローブフィルタ初期化状態に入ることを許容するように動作可能である。
【0036】
図4は、例示的な実施形態による、プローブフィルタにおいて低電力状態に入るプロセスと低電力状態から出るプロセスを示すフローチャート400である。図示されたプロセスは、ローカルC状態コントローラ351の制御下にあるデータファブリック260、又は、プローブフィルタクロックゲーティング能力及びローカルC状態コントローラ351のものと同様の好適な電力状態コントローラ電力状態制御回路を含む他の好適なデータファブリック回路を用いた実装に好適である。この実施形態では、プロセスは、CCXクライアント及び非CCXクライアントからの要求に対処するが、他の実施形態では、クライアントのこれらの2つのグループは、それぞれプローブフィルタクライアント及び非プローブフィルタクライアントとして一般化される。プローブフィルタクライアントは、キャッシュされたラインがプローブフィルタによって追跡されるキャッシュ可能なコヒーレントクライアントであり、その結果、プローブフィルタ内でミスする別のコヒーレントクライアントによる要求は、キャッシュ可能なコヒーレントプローブフィルタクライアントにプローブを送信する必要がない。他の全てのクライアントは非プローブフィルタクライアントであり、そのうちのいくつかはキャッシュ可能且つコヒーレントであってもよく、その場合、キャッシュされたラインはプローブフィルタ内で追跡されず、したがって、別のコヒーレントクライアントによる要求は、上述したキャッシュ可能なコヒーレント非プローブフィルタクライアントに無条件にプローブを送信する必要があり、したがってフィルタリングが行われない。
【0037】
プロセスはブロック402において開始し、ここでCCX220及びGFX230はアイドルになり、CCXキャッシュはフラッシュされ、上述したPC6状態等の低電力状態に入る。これに応じて、ブロック404において、ローカルC状態コントローラ351は、データファブリックが低電力状態に入るべきであると判定する。データファブリックのための低電力状態は、データファブリック260へのクロック信号をゲートするクロックゲーティング352と、データファブリック260への電力供給を除去する電力ゲート353と、を含む。この判定は、ローカルC状態コントローラ351等のデータファブリック用のローカル電力状態コントローラ、又は、SMU211(図2)等のシステム電力状態コントローラによって行うことができる。
【0038】
ブロック406において、プロセスは、データファブリックが低電力状態を離れるべきであると判定する。低電力状態から出ることは、様々な理由で行われ得る。例えば、データファブリック上のリクエスタによるダイレクトメモリアクセス(direct memory access、DMA)要求をサービスするために低電力状態から出ることができる。
【0039】
ブロック408において、プロセスは、任意のCCXクライアント又は他の実施形態での任意のプローブフィルタクライアントが、それらの低電力状態から出たかどうかを判定する。そうでない場合、プロセスはブロック410に進み、プローブフィルタ初期化状態を遅延させ、CCXクライアントがその低電力状態から出るのを待つ。ブロック408における判定は、この実施形態では、SOC STATE信号内の情報に基づいて、ローカルC状態コントローラ351によって行われる。ブロック408においてCCXクライアントが低電力状態から出ると、プロセスはブロック412に進む。
【0040】
ブロック412において、プローブフィルタは、CCXの初期化と並行して初期化状態に入る。(ここではCCXについて説明するが、コア複合体設計ではなく単一CPUコアであるリクエスタを有する実施形態に対しても同じプロセス挙動が採用される。)プローブフィルタの初期化状態中に、メモリ場所のステータスデータの1つ以上のアレイを含むプローブフィルタのデータが初期化されて、アレイ内容を、メモリが電源投入された後に存在するランダム又は予測不可能なデータから初期状態に変更する。通常、初期状態は、プローブフィルタ内の各追跡されたラインに対する「無効」指標を反映し、プローブフィルタにおいて関連するメモリラインに対するキャッシュ状態追跡データが未だ受信されていないことを反映する。所望のデータは、プローブフィルタ内のそれぞれのメモリラインを追跡するために各アレイエントリに書き込まれる。
【0041】
ブロック412において示すように、プローブフィルタ初期化は、CCXの初期化プロセスでのあるステップと並行して行われる。例えば、低電力状態から初期化するために、CCXは、修復、ヒューズ伝搬及びマイクロコードの初期化等のあるステップを行い、CCX状態から出た状態に復元する。これらのCCX初期化ステップは、プローブフィルタ初期化と同様に、設計固有の待ち時間を有する。したがって、いくつかの実施形態では、プローブフィルタ初期化がCCX初期化の前に完了するが、他の実施形態では、CCX初期化が最初に完了する。したがって、いくつかの実施形態では、プローブフィルタがそれらの要求に対処するように初期化される前に、CCXがコヒーレントスレーブコントローラへのコヒーレント及びキャッシュ可能要求の生成を開始することが可能である。更に、状態復元要求等のCCX初期化中に行われるCCX要求は、プローブフィルタにアクセスすることなく履行(実行)することができる、キャッシュ可能であるが非コヒーレントな要求を含むことができる。他のリクエスタも、プローブフィルタの初期化状態中にコヒーレントスレーブコントローラに要求を行うことができる。したがって、コヒーレントスレーブコントローラは、ブロック414~421において示すように、プローブフィルタ初期化状態中に好適な方法でそのような要求に対処する能力を含む。
【0042】
ブロック414~421は、プローブフィルタの初期化状態中に要求が発生した場合の様々なタイプの要求に対するコヒーレントスレーブコントローラの応答を示している。
【0043】
ブロック414において、キャッシュ可能なコヒーレント要求がCCXクライアント又はプローブフィルタクライアントから受信される場合、ブロック415におけるプロセスは、プローブフィルタ初期化が完了するまで、そのような要求をブロックする。コヒーレントスレーブコントローラのこの機能は、プローブフィルタ初期化が完了する前にCCX初期化が完了するシナリオに対処する。
【0044】
ブロック416において、ブロック415においてブロックされた前の要求に依存する要求が行われた場合、ブロック417におけるプロセスは、依存する要求が完了するまで、この要求もブロックする。そのような要求は、ブロックされた要求と同じアドレスに対してCCXリクエスタ、GFXリクエスタ又はリアルタイムクライアントリクエスタによって行われた要求を含む。この機能は、コヒーレントスレーブコントローラがそのような要求に対処し、コヒーレンシを維持することを許容する。
【0045】
ブロック418において、GFXリクエスタ又はリアルタイムクライアントリクエスタ等の非CCXクライアントリクエスタからコヒーレント要求が受信された場合、ブロック419において、要求が履行(実行)され、要求を受信するコヒーレントスレーブコントローラによってキャッシュミスとして扱われる。アドレス衝突は、それらがコヒーレント要求であるか否かにかかわらず、ブロック416に従って対処されることに留意されたい。この機能は、コヒーレントスレーブコントローラが、プローブフィルタ初期化が完了するのを待つことなく、ある要求を履行(実行)することを許容する。
【0046】
ブロック420において、キャッシュ不可能なコヒーレント要求aがCCXクライアントから受信された場合、ブロック421において要求が履行(実行)され、要求を受信するコヒーレントスレーブコントローラによってキャッシュミスとして扱われる。再び、そのような要求は、それらが前のブロックされた要求に依存する場合、417においてブロックされる。
【0047】
ブロック422において、非コヒーレント要求が何れかのリクエスタから受信された場合、ブロック423において、通常は要求を受信するコヒーレントスレーブコントローラによって行われるように、要求が履行(実行)される。再び、そのような要求は、それらが前のブロックされた要求に依存する場合、417においてブロックされる。
【0048】
キャッシュ可能でないか又はコヒーレントでない要求は、概ねプローブフィルタを必要とせず、ブロック416において要求に対する依存性が見出されない限り、プローブフィルタ初期化状態中にコヒーレントスレーブコントローラによって通常処理される。
【0049】
ブロック424において、プローブフィルタ初期化は、プローブフィルタ内の全てのデータアレイが妥当なデータで初期化された場合に完了し、プローブフィルタ初期化状態を終了する。次いで、ブロック426において、コヒーレントスレーブコントローラは、処理プローブフィルタルックアップを生成することを開始する。
【0050】
図2のSOC210又はデータファブリック260等の任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用することができるデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high-level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成可能な合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0051】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。本明細書に開示されるデータファブリックのためにC状態と併せて使用される様々な技術は、独立して又は他の技術と併せて使用することができる。更に、データファブリックを通してアイドルトラフィック状態を検出するための異なる技術及び回路を使用することができる。
【0052】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。
図1
図2
図3
図4