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

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

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

特許7385083システムオンチップ(SOC)のための強化された耐久性
<>
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図1
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図2
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図3
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図4
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図5
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図6
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図7
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図8
  • 特許-システムオンチップ(SOC)のための強化された耐久性 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】システムオンチップ(SOC)のための強化された耐久性
(51)【国際特許分類】
   G06F 12/0804 20160101AFI20231114BHJP
【FI】
G06F12/0804 100
【請求項の数】 15
(21)【出願番号】P 2023528193
(86)(22)【出願日】2021-10-29
(65)【公表番号】
(43)【公表日】2023-11-08
(86)【国際出願番号】 US2021057181
(87)【国際公開番号】W WO2022103595
(87)【国際公開日】2022-05-19
【審査請求日】2023-06-20
(31)【優先権主張番号】17/095,229
(32)【優先日】2020-11-11
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アレクサンダー ジェイ. ブラノーバー
(72)【発明者】
【氏名】ケビン エム. リパク
(72)【発明者】
【氏名】ウィリアム エー. モイス
【審査官】北村 学
(56)【参考文献】
【文献】特開2005-010995(JP,A)
【文献】特開2009-116681(JP,A)
【文献】米国特許出願公開第2016/0350237(US,A1)
【文献】米国特許出願公開第2016/0378660(US,A1)
【文献】米国特許出願公開第2020/0192798(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
ランタイムグローバルプッシュトゥパーシスタンス(runtime global push to persistence)を伴うシステムオンチップであって、
キャッシュを有するデータプロセッサと、
前記キャッシュに結合され、外部メモリに結合されるように適合された外部メモリインターフェースであって、前記キャッシュは、前記外部メモリに記憶するために前記外部メモリインターフェースにデータを提供する、外部メモリインターフェースと、
前記データプロセッサに結合されたマイクロシーケンサであって、トリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記データを送信することによって、前記キャッシュに前記データをフラッシュさせる、マイクロシーケンサと、を備え
前記データプロセッサは、データファブリックを介して前記外部メモリインターフェースに結合されており、前記データファブリックは、前記外部メモリインターフェースを介した前記外部メモリへの書き込み要求を一時的に記憶する少なくとも1つのバッファを備え、
前記データファブリックは、前記マイクロシーケンサに結合されており、前記トリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記データを送信することによって、前記少なくとも1つのバッファに記憶された前記書き込み要求に関連付けられたデータを前記データファブリックにフラッシュさせる、
システムオンチップ。
【請求項2】
ランタイムグローバルプッシュトゥパーシスタンス(runtime global push to persistence)を伴うシステムオンチップであって、
キャッシュを有するデータプロセッサと、
前記キャッシュに結合され、外部メモリに結合されるように適合された外部メモリインターフェースであって、前記キャッシュは、前記外部メモリに記憶するために前記外部メモリインターフェースにデータを提供する、外部メモリインターフェースと、
前記データプロセッサに結合されたマイクロシーケンサであって、トリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記データを送信することによって、前記キャッシュに前記データをフラッシュさせる、マイクロシーケンサと、を備え、
前記トリガ信号は、ターミナルイベントトリガ信号及び非ターミナルイベントトリガ信号のうち一方を含み、
前記ターミナルイベントトリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記データを送信する前に、前記データプロセッサをストールし、
前記非ターミナルイベントトリガ信号に応じて、前記マイクロシーケンサは、前記データプロセッサをストールさせることなく、前記外部メモリへの送信のために前記外部メモリインターフェースに前記データを送信する、
ステムオンチップ。
【請求項3】
前記システムオンチップは、電力障害を検出すること及びサーマルトリップ状態を検出することのうち一方に応じて、前記ターミナルイベントトリガ信号をアクティブ化する、
請求項のシステムオンチップ。
【請求項4】
ランタイムグローバルプッシュトゥパーシスタンス(runtime global push to persistence)を伴うデータ処理システムであって、
システムオンチップと、
前記システムオンチップに結合された外部メモリと、を備え、
前記システムオンチップは、
キャッシュを有するデータプロセッサであって、命令の実行に応じて前記キャッシュ内のデータを選択的に変更する、データプロセッサと、
前記キャッシュ及び前記外部メモリに結合された外部メモリインターフェースであって、前記キャッシュは、前記外部メモリに記憶するために、変更されたデータを前記外部メモリインターフェースに選択的に提供する、外部メモリインターフェースと、
前記データプロセッサに結合されたマイクロシーケンサであって、トリガ信号に応じて、前記マイクロシーケンサは、前記データプロセッサに命令の実行をストールさせ、その後、前記外部メモリへの送信のために前記変更されたデータを前記外部メモリインターフェースに送信することによって、前記変更されたデータを前記キャッシュからフラッシュする、マイクロシーケンサと、を備え
前記データプロセッサは、データファブリックを介して前記外部メモリインターフェースに結合されており、前記データファブリックは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記変更されたデータを送信する要求を一時的に記憶する少なくとも1つのバッファを備え、
前記データファブリックは、前記マイクロシーケンサに結合されており、前記トリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記変更されたデータを送信することによって、前記少なくとも1つのバッファに記憶された要求に関連付けられた前記変更されたデータを前記データファブリックにフラッシュさせる、
データ処理システム。
【請求項5】
ランタイムグローバルプッシュトゥパーシスタンス(runtime global push to persistence)を伴うデータ処理システムであって、
システムオンチップと、
前記システムオンチップに結合された外部メモリと、を備え、
前記システムオンチップは、
キャッシュを有するデータプロセッサであって、命令の実行に応じて前記キャッシュ内のデータを選択的に変更する、データプロセッサと、
前記キャッシュ及び前記外部メモリに結合された外部メモリインターフェースであって、前記キャッシュは、前記外部メモリに記憶するために、変更されたデータを前記外部メモリインターフェースに選択的に提供する、外部メモリインターフェースと、
前記データプロセッサに結合されたマイクロシーケンサであって、トリガ信号に応じて、前記マイクロシーケンサは、前記データプロセッサに命令の実行をストールさせ、その後、前記外部メモリへの送信のために前記変更されたデータを前記外部メモリインターフェースに送信することによって、前記変更されたデータを前記キャッシュからフラッシュする、マイクロシーケンサと、を備え、
前記トリガ信号は、ターミナルイベントトリガ信号及び非ターミナルイベントトリガ信号のうち一方を含み、
前記ターミナルイベントトリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記変更されたデータを送信する前に、前記データプロセッサをストールし、
前記非ターミナルイベントトリガ信号に応じて、前記マイクロシーケンサは、前記データプロセッサをストールさせることなく、前記外部メモリへの送信のために前記外部メモリインターフェースに前記変更されたデータを送信する、
ータ処理システム。
【請求項6】
データファブリックを介して外部メモリインターフェースに結合されたキャッシュを有するデータプロセッサを備えるシステムオンチップにおいて、ランタイムグローバルプッシュトゥパーシスタンス(runtime global push to persistence)を提供するための方法であって、
トリガ信号を受信することと、
前記トリガ信号を受信することに応じて、
前記データプロセッサをストールすることと、
対応する第1の書き込み要求を前記データファブリックに送信することによって、前記キャッシュからダーティデータをフラッシュすることと、
保留中の書き込み要求を外部永続メモリに送信することによって、全ての保留中の書き込み要求を前記データファブリックからフラッシュすることと、
前記データプロセッサと前記外部永続メモリとの間にハンドシェイクを提供し、これにより、ランタイムグローバルプッシュトゥパーシスタンスを確立することと、を含む、
方法。
【請求項7】
前記キャッシュからダーティデータをフラッシュすることは、
前記データファブリックから全ての保留中の書き込み要求をフラッシュする前に、対応する第2の書き込み要求を前記データファブリックに送信することによって、前記外部メモリインターフェースに結合されたコヒーレントメモリからダーティデータをフラッシュすることを含む、
請求項の方法。
【請求項8】
ターミナルイベントトリガ信号及び非ターミナルイベントトリガ信号のうち少なくとも一方に応じて、前記トリガ信号を生成することを含む、
請求項の方法。
【請求項9】
前記トリガ信号が前記ターミナルイベントトリガ信号に応じて生成される場合に、前記ハンドシェイクを提供した後に前記データプロセッサをリセットすることを含む、
請求項の方法。
【請求項10】
前記トリガ信号が前記非ターミナルイベントトリガ信号に応じて生成される場合に、前記ハンドシェイクを提供した後に前記データプロセッサの動作を再開させることを含む、
請求項の方法。
【請求項11】
前記ストールすることと、前記キャッシュからダーティデータをフラッシュすることと、前記全ての保留中の書き込み要求を前記データファブリックからフラッシュすることと、前記ハンドシェイクを提供することと、を前記データプロセッサのマイクロシーケンサを使用して制御することを含む、
請求項の方法。
【請求項12】
ランタイムグローバルプッシュトゥパーシスタンス(runtime global push to persistence)を伴うシステムオンチップであって、
それぞれキャッシュを有する複数のデータプロセッサと、
前記キャッシュに結合され、外部メモリに結合されるように適合された外部メモリインターフェースであって、前記複数のデータプロセッサの各々のキャッシュは、前記外部メモリに記憶するために前記外部メモリインターフェースにダーティデータを提供する、外部メモリインターフェースと、
前記複数のデータプロセッサの各々に結合されたマイクロシーケンサであって、トリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記ダーティデータを送信することによって、前記複数のデータプロセッサの各々のキャッシュに前記ダーティデータをフラッシュさせる、マイクロシーケンサと、を備える、
システムオンチップ。
【請求項13】
前記複数のデータプロセッサの各々は、データファブリックを介して前記外部メモリインターフェースに結合されており、前記データファブリックは、前記外部メモリインターフェースを介した前記外部メモリへの書き込み要求を一時的に記憶する少なくとも1つのバッファを備え、
前記データファブリックは、前記マイクロシーケンサに結合されており、前記トリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記ダーティデータを送信することによって、前記少なくとも1つのバッファに記憶された前記書き込み要求に関連付けられたデータを前記データファブリックにフラッシュさせる、
請求項12のシステムオンチップ。
【請求項14】
前記トリガ信号は、ターミナルイベントトリガ信号及び非ターミナルイベントトリガ信号のうち一方を含み、
前記ターミナルイベントトリガ信号に応じて、前記マイクロシーケンサは、前記外部メモリへの送信のために前記外部メモリインターフェースに前記ダーティデータを送信する前に、前記複数のデータプロセッサの各々をストールし、
前記非ターミナルイベントトリガ信号に応じて、前記マイクロシーケンサは、前記複数のデータプロセッサの各々をストールさせることなく、前記外部メモリへの送信のために前記外部メモリインターフェースに前記ダーティデータを送信する、
請求項12のシステムオンチップ。
【請求項15】
前記システムオンチップは、電力障害を検出すること及びサーマルトリップ状態を検出することのうち一方に応じて、前記ターミナルイベントトリガ信号をアクティブ化する、
請求項14のシステムオンチップ。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、それらを一時的にシャットダウン又はパワーオフさせる偶発的なイベントの影響を受けやすい。例えば、コンピュータシステムが動作している建物又は家庭への電力は、電圧低下、停電又は自然災害による電力損失を被る場合がある。更に、コンピュータシステム自体の電源が故障する場合もある。コンピュータシステムをシャットダウンさせる別のカテゴリのイベントは、コンピュータシステムを「ロックアップ」し、ユーザが手動でリセットすることを必要とするアプリケーションプログラム又はオペレーティングシステムの障害である。時には、コンピュータをシャットダウンすることを必要とする状態が予想され、シャットダウン前に重要なデータが保存されることがある。しかしながら、変更されたが、永続メモリ(例えば、不揮発性メモリ、バッテリバックアップメモリ、ハードディスクドライブ等)に未だ保存されていない任意のデータは、電源喪失又はリセットに起因して失われることになる。そのような予期せぬデータ損失から保護するために、アプリケーションプログラムは、データファイルを永続メモリに定期的に保存することがあり、オペレーティングシステムは、これらのイベントのうち1つが検出された後に介入して、コンピュータがシャットダウンされる前に重要なデータを保存し得る。
【0002】
現代のデータプロセッサは、頻繁に使用されるデータへの高速アクセスを可能にし、それによってコンピュータシステム性能を改善するために、キャッシュ、すなわち、データプロセッサに密接に結合されたスタティックランダムアクセスメモリ(static random-access memory、SRAM)等の高速メモリを日常的に使用している。アプリケーションプログラムが、キャッシュに割り当てられたデータを変更する場合に、データプロセッサは、典型的には、キャッシュが他のデータのための空間を作る必要があるまで、そのキャッシュ内のコピーを変更された(ダーティ)形式で保持し、更新されたコピーをメモリに書き戻す。シャットダウンを必要とするイベントが、シャットダウン前に十分な時間に遭遇した場合、アプリケーションプログラム又はオペレーティングシステムは、任意のダーティデータをキャッシュから永続メモリに「フラッシュ」(すなわち、書き戻す)し、それによって、コンピュータシステムが後で再始動された場合にユーザの作業が損失なく復元され得るように、重大なデータに対する更新が保存され、グローバルに観察可能になることを可能にする。
【0003】
システムオンチップ(Systems-on-chip、SOC)は、様々なデータプロセッサ、キャッシュ、キュー、相互接続回路の複数の層、及び、入力/出力周辺機器を単一の集積回路チップ上に組み合わせる。ディープサブミクロン半導体製造プロセス技術の出現により、SOCはますます複雑になってきており、いくつかのデータプロセッサコア、複数層のキャッシュ、及び、高度にバッファリングされた相互接続ファブリックを含み、これらのSOC上で動作するアプリケーションプログラム及びオペレーティングシステムが、SOCの詳細を把握するためにアプリケーションソフトウェア又はオペレーティングシステムを書き換える必要なく、それらの内部データが永続的であることを保証することを困難にしている。
【図面の簡単な説明】
【0004】
図1】先行技術において既知のデータ処理システムのブロック図である。
図2】いくつかの実施形態による、ランタイムグローバルプッシュトゥパーシスタンス(runtime global push to persistence)を伴うデータ処理システムの高レベル抽象化のブロック図である。
図3】いくつかの実施形態による、ランタイムグローバルプッシュトゥパーシスタンスを伴う例示的なシステムオンチップ(SOC)を有するデータ処理システムのブロック図である。
図4】いくつかの実施形態による、ランタイムグローバルプッシュトゥパーシスタンスを伴うSOCを有する別のデータ処理システムのブロック図である。
図5】いくつかの実施形態による、SOCにおいて有用なランタイムプロセスのフロー図である。
図6】いくつかの実施形態による、図5のランタイムグローバルプッシュトゥパーシスタンスプロセスを実行する図4のSOCを示すデータ処理システムのブロック図である。
図7】いくつかの実施形態による、ランタイムグローバルプッシュトゥパーシスタンスを伴うSOCを有する更に別のデータ処理システムのブロック図である。
図8図4及び図7のSOCにおいて有用なターミナルイベントトリガ生成回路のブロック図である。
図9図4及び図7のSOCにおいて有用な非ターミナルイベントトリガ生成回路のブロック図である。
【発明を実施するための形態】
【0005】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0006】
以下で詳細に記載するように、ランタイムグローバルプッシュトゥパーシスタンスを伴うシステムオンチップは、キャッシュ、外部メモリインターフェース、及び、マイクロシーケンサを有するデータプロセッサを含む。外部メモリインターフェースは、キャッシュに結合され、外部メモリに結合されるように適合されている。キャッシュは、外部メモリに記憶するために外部メモリインターフェースにデータを提供する。マイクロシーケンサは、データプロセッサに結合されている。トリガ信号に応じて、マイクロシーケンサは、外部メモリへの伝送のために外部メモリインターフェースにデータを送信することによって、キャッシュにデータをフラッシュさせる。
【0007】
ランタイムグローバルプッシュトゥパーシスタンスを伴うデータ処理システムは、システムオンチップ及びそのシステムオンチップに結合された外部メモリを含む。システムオンチップは、キャッシュを有するデータプロセッサ、外部メモリインターフェース、及び、マイクロシーケンサを含む。データプロセッサは、命令の実行に応じてキャッシュ内のデータを選択的に変更する。外部メモリインターフェースは、キャッシュに結合され、外部メモリに結合されるように適合されている。キャッシュは、外部メモリに記憶するために外部メモリインターフェースに変更されたデータを選択的に提供する。マイクロシーケンサは、データプロセッサ及びキャッシュに結合され、トリガ信号に応じて、マイクロシーケンサは、キャッシュに、外部メモリへの伝送のために外部メモリインターフェースに変更されたデータを送信することによって、変更されたデータをフラッシュさせる。
【0008】
データファブリックを介して外部メモリインターフェースに結合されたキャッシュを有するデータプロセッサを含むシステムオンチップにおいてランタイムグローバルプッシュトゥパーシスタンスを提供するための方法は、トリガ信号を受信することを含む。上記トリガ信号を受信したことに応じて、データプロセッサはストールされる。対応する第1の書き込み要求をデータファブリックに送信することによって、ダーティデータがキャッシュからフラッシュされる。全ての保留中の書き込み要求は、その保留中の書き込み要求を外部永続メモリに送信することによって、データファブリックからフラッシュされる。データプロセッサと上記外部永続メモリとの間にハンドシェイクが提供され、それによって、ランタイムグローバルプッシュトゥパーシスタンスを確立する。
【0009】
図1は、先行技術において既知のデータ処理システム100のブロック図である。データ処理システム100は、概して、データプロセッサ110及び外部メモリ120を含む。データプロセッサ110は、「IFU(instruction fetch unit)」とラベル付けされた命令フェッチユニット111、「EU(execution unit)」とラベル付けされた実行ユニット112、キャッシュ113、「MC(memory controller)」とラベル付けされたメモリコントローラ115、及び、物理インターフェース回路(PHY(physical interface circuit))116を含む。外部メモリ120は、概して、フラッシュ命令122を含むアプリケーションプログラム121を記憶するための第1の部分、及び「NVM(non-volatile memory)」とラベル付けされた不揮発性メモリ123を含む。
【0010】
データプロセッサ110は、動作が周知であり、本開示の関連動作を理解するのに重要ではない構成要素を含み、これについては更に説明しない。データプロセッサの構成要素は、様々な信号の交換のために互いに接続されるが、図1は、既知のデータプロセッサに関する問題を理解することに関連する一組の信号フローのみを示している。
【0011】
キャッシュ113は、タグ部分、データ部分及びステータス部分に分割される一組のラインを含む。タグ部分は、キャッシュ113が、メモリアドレスのビットのサブセットを使用して、そのキャッシュラインの中からアクセスされたキャッシュラインに迅速にインデックス付けし、それを見つけるのを助ける。データフィールドは、TAGが示すキャッシュラインに対応するデータを記憶する。STATUSフィールドは、キャッシュ内のラインステータスに関する情報を記憶し、これにより、システムは、異なる形態のメインメモリに加えて、複数のプロセッサ及びそれらに関連付けられたキャッシュを含む複雑なデータ処理環境において、データコヒーレンシを維持することを可能にする。いくつかの既知のキャッシュコヒーレンシプロトコルが存在するが、キャッシュ113は、いわゆる「MOESI」プロトコルを実装し、これは、キャッシュラインがそれぞれ変更、所有、排他、共有及び/又は無効であることを示すM(Modified)、O(Owned)、E(Exclusive)、S(Shared)、I(Invalid)状態ビットを記憶する。図1に示すように、ダーティデータを示す状態は、図1のキャッシュライン114について示すように、I=0及びM=1である状態である。
【0012】
データ処理システム100は、データが永続的であることを保証するための既知の技術を実装する。アプリケーションプログラム121の実行中、命令フェッチユニット111は、アプリケーションプログラム121から「フラッシュ」コマンドをフェッチする。命令フェッチユニット111は、最終的に、実行のためにフラッシュコマンドを実行ユニット112に渡す。フラッシュコマンドに応じて、実行ユニット112は、キャッシュ113に、そのダーティデータの全てを外部メモリ120にフラッシュさせる。これは、有効なキャッシュラインを循環し、それらを不揮発性メモリ123に書き込む内部ステートマシンを有することによって行うことができ、又は、実行ユニット112自体が、全てのキャッシュラインを検査し、ダーティキャッシュラインの内容を不揮発性メモリ123に書き込むことができる。何れかの技術を使用して、キャッシュ113は、データの更新されたコピーとともにキャッシュライン情報をメモリコントローラ115に提供し、メモリコントローラ115は、最終的に、PHY116を介して不揮発性メモリ123への外部データバスにデータを提供する。
【0013】
図1に示す技術には、いくつかの問題又は制限がある。第一に、フラッシュ動作を開始することはアプリケーションプログラムに依存し、アプリケーションプログラムはデータプロセッサ110のハードウェア能力を認識していなければならない。加えて、データ処理システム100が、1つのメモリプールを形成する分散メモリを使用して複数のプロセッサ間でデータが交換される複数のプロセッサを実装する場合、全てのプロセッサは、信頼できるバックアップ及び復元ポイントを保証するために、それらのキャッシュをフラッシュし、異なるアプリケーションスレッド間の直列化を強制しなければならず、これは、ソフトウェア動作の実質的な中断を引き起こす場合がある。異なる処理要素間の通信のための複雑なデータファブリックを有するシステムオンチップ(SOC)等のより大きくより複雑なシステムでは、システム内の全ての書き込みが可視メモリに伝搬するのにかかる時間量を予測することが困難になる。そのため、この既知のシステムは、必要な場合にシステム内のデータの可視性及び耐久性を保証するには不十分であると思われる。
【0014】
図2は、いくつかの実施形態による、ランタイムグローバルプッシュトゥパーシスタンスを伴うデータ処理システム200の高レベル抽象化のブロック図である。図2に示すように、データ処理システム200は、プロセッサ210及び220、付属のアクセラレータ230、及び、メモリシステム240を含む。プロセッサ210は、関連付けられたキャッシュ211を有し、プロセッサ220、アクセラレータ230及びメモリシステム240に接続されている。メモリシステム240は、第1のティア(tier)又は「ティア0」メモリ241、及び、第2のティア又は「ティア1」メモリ242を含む、メモリの2つのティアを含む。一例では、ティア0メモリ241は、不揮発性メモリ等の永続メモリであり、ティア1メモリ242は、高速ダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)等の揮発性メモリである。ある特定の状態では、データ処理システム200が、キャッシュ211、222及びアクセラレータ230内のダーティデータがメモリシステム240に移動され、これによりグローバルに観察可能になる、ランタイムグローバルプッシュトゥパーシスタンス動作を実行することが望ましい。以下でより詳細に説明するように、ランタイムグローバルプッシュトゥパーシスタンスの必要性を示すイベントに応じて、プロセッサ210及び220は、それぞれ、それらのキャッシュ211及び221内のダーティデータをメモリシステム240に押し出させる。図2に示すように、キャッシュ211は、経路212及び213をそれぞれ介してメモリ241及びメモリ242にダーティデータを押し出し、キャッシュ221は、経路222及び223をそれぞれ介してメモリ241及びメモリ242にダーティデータを押し出し、アクセラレータ230は、経路232及び233をそれぞれ介してメモリ241及びメモリ242にプロセッサ210を介して間接的にダーティデータを押し出す。加えて、データ通信ファブリック、バッファ、メモリコントローラ等における全ての「インフライト」メモリ動作は、システム全体のデータ耐久性を達成するために、ランタイムグローバルプッシュトゥパーシスタンスの一部として完了される。
【0015】
図3は、いくつかの実施形態による、ランタイムグローバルプッシュトゥデュラビリティ又はランタイムグローバルプッシュトゥパーシスタンスを伴う例示的なシステムオンチップ(SOC)310を有するデータ処理システム300のブロック図である。データ処理システム300は、概して、SOC210及びメモリシステム380を含む。SOC310は、CPU複合体320、ファブリック330、一組の入力/出力(input/output、I/O)コントローラ340、ユニファイドメモリコントローラ(unified memory controller、UMC)350、コヒーレントネットワークレイヤインターフェース(coherent network layer interface、CNLI)360、及び、グローバルメモリインターフェース(global memory interface、GMI)コントローラ370を含む。CPU複合体310は、全てのCPUコアの間で共有される共有キャッシュを伴う1つ以上の専用内部キャッシュを各々有する1つ以上のCPUコアを含む。ファブリック330は、コヒーレントマスタ331、入力/出力メモリスレーブ(input/output memory slave、IOMS)333、電力/割込みコントローラ334、コヒーレントAMDソケットエクステンダ(coherent AMD socket extender、CAKE)335、コヒーレントスレーブ336、ACM337、及び、コヒーレントスレーブ338を含み、これらは全てファブリックトランスポート層332を介して相互接続される。I/Oコントローラ340は、ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express、PCIe)等のプロトコルのための様々なコントローラ及びそれらの物理層インターフェース回路を含む。UMC350は、ダブルデータレート(double data rate、DDR)及び/又は永続ストレージを伴う不揮発性デュアルインラインメモリモジュール(non-volatile dual-inline memory module with persistent storage、「NVDIMM-P」)メモリ等の外部メモリへのバスの効率的な利用のために、コマンドバッファリング、再順序付け及びタイミング適格性の適用を実行する。CNLI360は、トラフィックを外部コヒーレントメモリデバイスにルーティングする。GMIコントローラ370は、メモリマップ内の全てのプロセッサに可視であるそれ自体の付属ストレージを有する他のSOCへのチップ間通信を実行する。メモリシステム380は、UMC350に接続されたDDR/NVDIMM-Pメモリ381、及び、CNLI360に接続されたComputer Express Link(CXL)デバイス382を含む。
【0016】
SOC310は、様々なデータプロセッサ、メモリ及びI/O構成要素を、処理中の書き込みトランザクションのための様々な記憶ポイントと接続するために使用されるファブリック330の複雑さを示す例示的なSOCである。例えば、コヒーレントスレーブブロック336及び338は、様々なメモリチャネルをサポートし、コヒーレンシ及びトランザクション順序付けを適用し、後述するように、ランタイムグローバルプッシュトゥパーシスタンスを適用する。例示的な実施形態では、これらは、コヒーレンシ及びアドレス衝突を追跡し、例えば、256個の未処理トランザクションをサポートする。
【0017】
図4は、いくつかの実施形態による、ランタイムグローバルプッシュトゥパーシスタンスを伴うSOC410を有する別のデータ処理システム400のブロック図である。データ処理システム400は、SOC410及びメモリシステム490を含む。SOC410は、概して、プロセッサ層420、相互接続ファブリック430、コヒーレントネットワークレイヤインターフェース(CNLI)回路440、ユニファイドメモリコントローラ(UMC)450、データ入力/出力ブロック460、物理インターフェース層470、マイクロシーケンサ480、及び、メモリシステム490を含む。
【0018】
プロセッサ層420は、CPU複合体421、「CCM(cache coherent memory)」とラベル付けされたキャッシュコヒーレントメモリ422、及び、電力/割込みコントローラ423を含む。CPU複合体421は、1つ以上のCPUコアを含み、各CPUコアは、典型的には、それ自体の専用内部キャッシュを有する。いくつかの実施形態では、専用内部キャッシュは、第1のレベル1(first level、L1)キャッシュ及びL1キャッシュに接続された第2のレベル(second level、L2)キャッシュの両方を含む。CPU複合体421内の1つ以上の各プロセッサコアの最下位レベルキャッシュは、CCM422へのインターフェースを有する。各CPUコアが専用の内部L1キャッシュ及びL2キャッシュを有するいくつかの実施形態では、CCM422は、CPU複合体421内の全てのプロセッサ間で共有される第3のレベル(third level、L3)キャッシュである。電力/割込みコントローラ423は、レジスタ値及び設定を受信し、SOC410内の回路への割込み及びリセット等のイベントをシグナリングするための双方向接続を有し、専用又は特殊用途バスを通してSOC410内の他の要素に直接接続してもよい。
【0019】
相互接続ファブリック430は、ファブリックトランスポート層431、「IOMS」とラベル付けされた入力/出力マスタ/スレーブコントローラ432、「IOHUB(I/O Hub)」とラベル付けされたI/Oハブ433、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)コントローラ434、「ACM(Accelerators controller)」とラベル付けされたアクセラレータ用キャッシュコヒーレント相互接続コントローラ435、並びに、各々「CS」とラベル付けされたコヒーレントスレーブ回路436及び437を含む。ファブリックトランスポート層431は、CCM422のダウンストリームポートに接続されたアップストリームポート、電力/割込みコントローラ423に接続されたアップストリームポート、及び、4つのダウンストリームポートを含む。IOMS432は、ファブリックトランスポート層431の第1のダウンストリームポートに接続されたアップストリームポート、及び、ダウンストリームポートを有する。I/Oハブ433は、IOMS432のダウンストリームポートに接続されたアップストリームポート、及び、ダウンストリームポートを有する。PCIeコントローラ434は、IOHUB433のダウンストリームポートに接続されたアップストリームポート、及び、ダウンストリームポートを有する。ACM435は、ファブリックトランスポート層431の第2のダウンストリームポートに接続されたアップストリームポート、及び、「CXL.cache」とラベル付けされたCXLキャッシュトランザクションを通信するためのダウンストリームポートを有する。CS436は、ファブリックトランスポート層431の第3のダウンストリームポートに接続されたアップストリームポート、及び、「CXL.mem」とラベル付けされたCXLメモリトランザクションを通信するためのダウンストリームポートを有する。CS437は、ファブリックトランスポート層431の第4のダウンストリームポートに接続されたアップストリームポート、及び、ダウンストリームポートを有する。IOMS432は、入力/出力デバイスアクセスのための高レベルコントローラであり、メモリアドレスをI/Oデバイスに再マッピングするための入力/出力メモリ管理ユニット(input/output memory management unit、IOMMU)を含んでもよい。IOHUB433は、I/Oアクセス用の記憶デバイスである。PCIeコントローラ434は、PCIeプロトコルに従ってI/Oアクセスを実行し、ディープPCIeファブリック内のPCIeスイッチ、ブリッジ、及び、デバイスのディープ階層を可能にする。PCIeコントローラ434は、CPU複合体421内の1つ以上のプロセッサ上で実行されるファームウェアとともに、PCIeルート複合体を形成してもよい。ACMコントローラ435は、通信リンクを介して1つ以上の外部処理アクセラレータからキャッシュコヒーレンシ要求を受信し、遂行する。ACMコントローラ435は、SOC410又は他のアクセラレータに取り付けられたメモリへのメモリアクセス要求を行い、遂行するために、CXLプロトコルメモリトランザクションタイプ(図6参照)のフルセットを使用する能力を有するフルCXLマスタエージェントをインスタンス化する。CS436及び437は、CS436がCXLトラフィックをルーティングし、CS437がローカルメモリトラフィックをルーティングするCPU複合体421から開始された他のメモリアクセス要求をルーティングする。
【0020】
CNLI回路440は、ACM435のダウンストリームポートに接続された第1のアップストリームポート、CS436のダウンストリームポートに接続された第2のアップストリームポート、及び、ダウンストリームポートを有する。CNLI回路440は、CXLファブリックのためのネットワーク層プロトコルアクティビティを実行する。
【0021】
UMC450は、図4に示されていないが、CS437のダウンストリームポートに接続されたアップストリームポート、及び、物理インターフェース回路を通して外部メモリに接続するためのダウンストリームポートを有する。UMC450は、UMC450のダウンストリームポートとDDR及び/又はNVDIMM-Pメモリとの間のバスの効率的な利用のために、コマンドバッファリング、再順序付け及びタイミング適格性の適用を実行する。
【0022】
データ入力/出力ブロック460は、相互接続ブロック461及び462~466とラベル付けされた一組のデジタルI/O(digital I/O、「DXIO」)コントローラを含む。DXIOコントローラ462~466は、場合に応じて、PCIe又はCXLトランザクションに関連付けられたデータリンク層プロトコル機能を実行する。DXIOコントローラ462は、PCIeリンクに関連付けられ、図4に示されていないが、その出力部とPCIeリンクとの間に個別のPCIe互換物理インターフェース回路を有する。
【0023】
物理インターフェース回路(PHY)470は、4つの個々のPHY回路471~474を含み、各々は、それぞれのDXIOコントローラとSOC410のそれぞれのI/Oポートとの間に接続され、異なる外部CXLデバイスに接続するように適合されている。PHY471~474は、CXL通信プロトコルに従って物理層インターフェース機能を実行する。
【0024】
マイクロシーケンサ480は、「ターミナルイベントトリガ」とラベル付けされた信号を受信するための第1の入力部と、「非ターミナルイベントトリガ」とラベル付けされた信号を受信するための第2の入力部と、以下で更に説明する制御信号を提供するためにSOC410内の様々な回路に接続された多重信号出力ポートと、を有する。SOC410は、ターミナルイベントトリガ信号及び非ターミナルイベントトリガ信号を生成する回路を含む。これらの回路は図4に示されていないが、以下で更に説明する。
【0025】
メモリシステム490は、CXL MEMデバイス0として動作するPHY471のダウンストリームポートに接続されたメモリ491と、CXL MEMデバイス1として動作するPHY474のダウンストリームポートに接続されたメモリ492と、PHY471のダウンストリームポートに接続されたCXLアクセラレータコヒーレントマスタコントローラ(ACM)493と、PHY473のダウンストリームポートに接続されたCXL ACM494と、UMC450のダウンストリームポートに接続されたダブルデータレート(DDR)DRAM/NVDIMM-Pメモリ495の形態のストレージクラスメモリと、を含む。
【0026】
明らかなように、SOC410のような現世代のSOCのデータインターフェース及び分散メモリ階層は、極めて複雑であり、階層化され、分散されている。この複雑な相互接続ファブリックは、本明細書に記載する技術によって対処される、データ処理システムにおけるランタイムグローバルプッシュトゥパーシスタンスをサポートするための課題を提示している。
【0027】
マイクロシーケンサ480は、アプリケーションソフトウェア、オペレーティングシステム又はシステムファームウェアを、ランタイムグローバルプッシュトゥパーシスタンス要件を認識し、それに応答するタスクからオフロードするハードウェアコントローラである。第1に、更新されたコンテンツをメモリに書き込むことによって、SOC410内の全てのキャッシュにそれらのダーティデータをフラッシュさせる。フラッシュすることは、SOC410内の各キャッシュ内の各ラインのステータスを検査し、ダーティキャッシュラインを選択的にメモリに書き込ませる、マイクロシーケンサ480上で実行されるファームウェアによって、又は、好ましくは、全てのキャッシュラインを検査し、ダーティデータを含むキャッシュラインをメインメモリに書き込むことによってダーティデータを自動的にフラッシュさせる、キャッシュの各々への明示的なハードウェア信号によって、達成され得る。キャッシュウェイごとのダーティ表示は、キャッシュをフラッシュするプロセスを高速化することができる。ダーティ表示がクリアされたキャッシュウェイは、キャッシュフラッシュプロセスによってスキップすることができる。
【0028】
第2に、マイクロシーケンサ480は、相互接続ファブリック430又は他のインターフェース回路内の何処かに存在する各インフライトメモリ書き込みトランザクションを完了させ、相互接続ファブリック内の任意のバッファポイントを通して外部永続メモリに排出させる。一例では、ファブリックトランスポート層431は、メモリシステムへの読み取りコマンド及び書き込みコマンドを記憶するバッファを有してもよい。トリガ信号に応じて、マイクロシーケンサ480は、ファブリックトランスポート層431に、全ての書き込みをメモリシステムに押し出させ、それらが任意の読み取りをパスすることを可能にする。別の例では、UMC450は、その内部コマンドキューにDRAM書き込みを記憶する。ランタイムプッシュトゥパーシスタンスのトリガに応じて、マイクロシーケンサ480は、UMC450に、任意の保留中の読み取りに作用することなく、全ての書き込みをメモリに送信させる一方で、クローズページへの書き込みよりもオープンページへの書き込みを組み合わせるための選択等の効率プロトコルを観察し続ける。
【0029】
マイクロシーケンサ480は、2つのタイプのトリガに対して異なって応答する。第1のタイプのトリガは、ターミナルイベントトリガである。ターミナルイベントトリガは、危険なリセット要求、差し迫った電力障害、サーマル過負荷若しくは「トリップ」状態、又は、データ処理システム400の動作を差し迫って終了させる必要性を示す任意の他の状態等のイベントである。ターミナルイベントトリガ状態に応じて、マイクロシーケンサ480は、2つのアクションを実行する。第1に、全てのデータプロセッサの動作をストールさせる。次いで、データファブリック内の全てのキャッシュ及びバッファに、全ての保留中のメモリトランザクションを永続メモリにフラッシュするように命令する。このようにして、マイクロシーケンサ480は、可能な限り迅速にデータを永続的不揮発性メモリに押し出す必要があるために、低電力消費よりも速度を優先する。
【0030】
第2のタイプのトリガは、非ターミナルイベントトリガである。非ターミナルイベントトリガは、特定のアドレスに遭遇すること、低いプロセッサ使用率を検出すること、特定の時刻に遭遇すること、以前のランタイムグローバルプッシュトゥパーシスタンス動作からの特定の経過時間を検出すること、又は、1つ以上のキャッシュにおけるある特定のレベルの「ダーティネス」を検出すること等のような非重大イベントである。非ターミナルイベントトリガは、システムがジャーナルログ、シャドウページング等のような非常に重要なデータを外部永続メモリに周期的に押し出すことを可能にする。非ターミナルイベントトリガの場合、マイクロシーケンサ480は、何れのデータプロセッサコアもストールさせないが、キャッシュに、データプロセッサを停止させることなく何れかのキャッシュ内の全てのダーティデータをメモリインターフェースに送信させ、データファブリックがデータを自然に押し出すことを可能にし、リセットすることなく動作を再開する。そのため、非ターミナルトリガイベントに応じて、マイクロシーケンサ480は、低電力消費のみを要求しながら、ランタイムグローバルプッシュトゥパーシスタンスを適用する。
【0031】
不揮発性メモリ内の「損失」フラグを設定することによってプラットフォームによって識別され得る永続性損失に応じて、アプリケーションソフトウェアは、最後の信頼できることが知られている状態で再始動する、すなわち、チェックポイントロールバック及びリプレイを実行する。例えば、いくつかの構成では、「永続性喪失」エラーが記録され、ブートアップ時に、システム基本入力/出力システム(basic input-output system、BIOS)ファームウェアが、永続性喪失を識別し、アドバンスドコンフィグレーションアンドパワーインタフェース(Advanced Configuration and Power Interface、ACPI)「NFIT」オブジェクトを通して報告する。他の実施形態では、オペレーティングシステムがイベントについて直接学習することができるように、「永続性損失」がログに取り込まれる。
【0032】
図5は、いくつかの実施形態による、SOCにおいて有用なランタイムグローバルプッシュトゥパーシスタンスプロセス500のフロー図である。ランタイムグローバルプッシュトゥパーシスタンスプロセス500は、例えば、SOCがトリガ信号を受信することによって示されるトリガイベントに応じて開始される。アクションボックス510において、トリガがターミナルイベントトリガであった場合、データプロセッサは、例えば、一組のCPUコアの各々をストールすることによってストールされる。アクションボックス520において、ダーティデータに対する書き込み要求をデータファブリックに送信することによって、ダーティデータがキャッシュサブシステムからフラッシュされる。次に、アクションボックス530において、任意のCXL ACMコントローラからのダーティデータが、外部メモリインターフェースに取り付けられたコヒーレントメモリからフラッシュされる。このアクションは、ダーティデータを外部CXLメモリデバイスからオンチップデータファブリックに読み出すことを含む。この動作が完了した後、アクションボックス540において、ランタイムグローバルプッシュトゥパーシスタンスプロセスは、書き込み要求を外部永続メモリに送信することによって、データファブリック内の全ての保留中の書き込み要求をフラッシュする。外部永続メモリは、例えば、CXLタイプ3メモリデバイス(アクセラレータを伴わないCXLメモリ)又はNVDIMM-Pとすることができる。次いで、アクションボックス550において、システムは、CXLタイプ3メモリデバイスとのハンドシェイクを提供する。
【0033】
図6は、いくつかの実施形態による、図5のランタイムグローバルプッシュトゥパーシスタンスプロセス500を実行する図4のSOC410を示すデータ処理システム600のブロック図である。データ処理システム400の様々なブロックの符号は、図6に示していない。破線の円610によって示す第1の工程では、CPU複合体421内の全てのプロセッサがストールされる。破線矢印620によって示す第2の工程では、ダーティデータを伴う書き込み要求をデータファブリックに送信することによって、ダーティデータがCPU複合体421内の各プロセッサのキャッシュサブシステムからフラッシュされる。これらの要求は、ファブリックトランスポート層431を通って流れ、CS436(メモリがCXLメモリデバイス491又は492にマッピングされる場合)又はCS437(メモリがNVDIMM-P495にマッピングされる場合)に記憶される。第3の工程では、ACMキャッシュ(存在する場合)からのダーティデータがフラッシュされ、データは、矢印630によって示すように、データファブリックを通してCS436又はCS437の何れかに送信される。第4の工程では、データファブリックは、矢印640によって示すように、データをCXLメモリデバイス491若しくは492、又は、NVDIMM-P495の何れかに送信することによってフラッシュされる。最後に、SOC410は、CXLプロトコルに従って、CXLメモリデバイス491及び492とのハンドシェイクを提供する。
【0034】
図7は、いくつかの実施形態による、ランタイムグローバルプッシュトゥパーシスタンスを伴うSOC710を有する更に別のデータ処理システム700のブロック図である。SOC710は、図4のSOC410よりも高度に統合されており、それぞれ「象限(Quadrant)0」、「象限1」、「象限2」、「象限3」とラベル付けされた4つのかなり自律的な象限720、730、740、750に編成される。象限720、730、740、750は、それぞれのDDRメモリインターフェース722、732、742、752、及び、外部キャッシュコヒーレントデバイス(cache coherent device、CCD)760、770、780、790へのインターフェースを有する。しかしながら、SOC710は、不揮発性であり、耐久性のためにデータを記憶することが可能なCXLタイプ3付属ストレージ等の外部CXLデバイスに接続するための、「P0」、「P1」、「P2」、「P3」とラベル付けされた一組の共有ポートを有する。更に、差し迫ったチップ全体の電力損失又は危険なリセット等の少なくともいくつかのトリガイベントは、全ての象限がフラッシュされることを必要とするので、共通マイクロシーケンサ760は、象限固有のリソース及び共通チップ全体のデータファブリック等の共有リソースの両方からダーティデータをフラッシュすることによって、ランタイムグローバルプッシュトゥパーシスタンスを適用するための制御信号を好都合に提供する。
【0035】
図8は、図4のSOC410において有用なターミナルイベントトリガ生成回路800のブロック図である。ターミナルイベントトリガ生成回路800は、ORゲート810、インバータ820、ORゲート822、温度センサ830、比較器832、及び、ANDゲート834を含む。ORゲート810は、3つの入力部ORゲートであり、「リセット」とラベル付けされたリセット信号を受信するための第1の入力部、「電力障害」とラベル付けされた信号を受信するための第2の入力部、「サーマルトリップ」とラベル付けされた信号を受信するための第3の入力部、及び、ターミナルイベントトリガ信号を提供するための出力部を有する。インバータ820は、「POWER_GOOD」とラベル付けされた信号を受信するための入力部、及び、出力部を有する。ORゲート822は、インバータ820の出力部に接続された第1の入力部と、「DROOP_DETECTED」とラベル付けされた信号を受信するための第2の入力部と、ORゲート810の第2の入力部に接続され、それにPOWER FAILURE信号を提供するための出力部と、を有する。温度センサ830は、測定された温度感知信号を提供するための出力部を有する。比較器832は、温度センサ830の出力部に接続された非反転入力部、「温度トリップ閾値」とラベル付けされた値を受信するための反転入力部、及び、出力部を有する。ANDゲート834は2つの入力部ANDゲートであり、比較器832の出力部に接続された第1の入力部と、「サーマルトリップイネーブル」とラベル付けされた信号を受信するための第2の入力部と、ORゲート810の第3の入力部に接続されて、それにサーマルトリップ信号を提供するための出力部と、を有する。
【0036】
ターミナルイベントトリガ生成回路800は、リセット状態、電力損失状態又はサーマルトリップ状態に応じて、ターミナルイベントトリガ信号を提供する。リセット状態は、例えば、ユーザがリセットボタンを押すことによって引き起こされる、例えば、ソフトウェアリセット又はハードウェアリセットによって生成され得るリセット信号のアクティブ化によって示される。電力損失状態は、図8に示すように、マザーボード又はシステムメインボードからのPOWER_GOOD信号の非アクティブ化によるシステム電力信号のアクティブ化、又は、電源におけるドループの検出等のオンチップ状態によって示される。サーマルトリップ状態は、有効にされると、オンチップ温度センサ830によって検出され、SOCの温度が最終サーマルトリップ閾値を超えることを示す。何れの場合も、ターミナルイベントトリガ生成回路800は、システム全体のシャットダウンが発生するか又は発生し得る重大なシステム状態に応じて、ターミナルイベントトリガ信号を提供する。この場合、ターミナルイベントトリガ信号のアクティブ化は、システム喪失状態を回避するためにデータの保存を可能な限り早く行うべきであることをマイクロシーケンサに通知する。
【0037】
ターミナルイベントトリガ生成回路800は、ターミナルイベントを構成する代表的な一組の状態を示すが、他の実施形態は、状態のうちいくつかのみを検出することになり、更に他の実施形態では、ターミナルイベントを示す他の状態を検出することになることが明らかであろう。
【0038】
図9は、図4のSOC410及び図7のSOC700において有用な非ターミナルイベントトリガ生成回路900のブロック図である。非ターミナルイベントトリガ生成回路900は、概して、評価回路910、アドレストリガ回路920、アクティビティトリガ回路930、時刻トリガ回路940、経過時間トリガ回路950、及び、キャッシュダーティネストリガ回路960を含む。
【0039】
評価回路910は、トリガ信号を受信するための一組の入力部、及び、非ターミナルイベントトリガ信号を提供するための出力部を含む。評価回路910は、概して、入力部のいずれか1つのアクティブ化に応答して非ターミナルイベントトリガ信号をアクティブ化した入力部間の論理OR演算を実施する。設計に応じて、非ターミナルイベントトリガ信号がクロック信号のある特定のエッジ上でのみアクティブ化され、例えば、ランタイムグローバルプッシュトゥパーシスタンス動作の完了を示すハンドシェイク信号に応じてリセットされるような、リセット可能なクロックラッチを有してもよい。
【0040】
アドレストリガ回路920は、トリガアドレスレジスタ921及び比較器922を含む。トリガアドレスレジスタ921は、特権実行状態においてプログラム可能であり、記憶されたトリガアドレスを提供するための出力部を有する。比較器922は、「アドレス」とラベル付けされたアドレス信号を受信するための第1の入力部と、トリガアドレスレジスタ921の出力部に接続された第2の入力部と、「アドレストリガ」とラベル付けされた信号を評価回路910の第1の入力部に提供するための出力部と、を有するマルチビットデジタル比較器である。アドレストリガ回路920は、アプリケーションプログラム又はオペレーティングシステムが、ある特定のアドレスにアクセスすることによって、ランタイムグローバルプッシュトゥパーシスタンス動作をトリガすることを可能にするトリガ回路の単純な例である。マルチCPUコア及びマルチスレッドオペレーティングシステムを伴うデータ処理システムでは、アドレストリガ回路920内の例示的な回路は、CPUコアごとに複製される。
【0041】
アクティビティトリガ回路930は、一組のパフォーマンスカウンタ931と、論理回路932と、を含む。パフォーマンスカウンタ931は、CPUコアのアクティビティを表す一組のアクティビティ信号に応じて、それぞれのカウンタを使用して個々のイベントを集約する。パフォーマンスカウンタ931は、カウンタの状態を提供する出力部を有する。論理回路932は、パフォーマンスカウンタ931の出力部に接続された入力部と、評価回路910の第2の入力部に「低利用率」とラベル付けされた信号を提供するための出力部と、を有する。図9に示す例では、論理回路932は、何れのアクティビティが重要なイベントを構成するかを判定することができる。低利用率信号の場合、論理回路932は、単位時間当たりに実行される命令をカウントし、単位時間当たりに実行される命令が閾値未満であることを検出したことに応じて、低利用率信号をアクティブ化することができる。アドレストリガ回路920と同様に、例示的な回路930は、マルチコアシステム内の各CPUコアに対して複製される。
【0042】
時刻トリガ回路940は、「RTC(real time clock)」とラベル付けされたリアルタイムクロック回路941、時刻レジスタ942、及び、比較器943を含む。RTC941は、現在の時刻を表すデジタルカウント値を提供するための出力部を有する。レジスタ942は、選択された時刻、例えば、午前4:00を提供するための出力部を有する。比較器943は、リアルタイムクロック941の出力部に接続された第1の入力部と、レジスタ942の出力部に接続された第2の入力部と、「TOD(time of day)」とラベル付けされた時刻一致符号を評価回路910の第3の入力部に提供するための出力部と、を有する。時刻トリガ回路940は、マルチCPUコアシステムの各CPUコアに対して複製する必要のない非ターミナルイベントの一例である。
【0043】
経過時間トリガ回路950は、タイマ951を含む。タイマ951は、「最後のトリガ」とラベル付けされた信号を受信するためのリセット入力部と、「クロック」とラベル付けされたクロック信号を受信するためのクロック入力部と、「次のトリガ」とラベル付けされた信号を評価回路910の第4の入力部に提供するためのターミナルカウント(terminal count、TC)出力部と、を有する。経過時間トリガ回路950は、マルチCPUコアシステムの各CPUコアに対して複製される必要のない非ターミナルイベントの別の例である。
【0044】
キャッシュダーティネストリガ回路960は、キャッシュ961、エンコーダ962、キャッシュダーティウォーターマーク963、及び、比較器964を含む。キャッシュ961は、CPUコアのキャッシュであるか又はマルチCPUコア間で共有されるキャッシュである。図9に示す例では、キャッシュ961は、上述したMOESIステータスプロトコルを実装する。エンコーダ962は、キャッシュ961に接続された入力部と、出力部と、を有し、ダーティであるキャッシュラインの数をカウントする。この論理は、エンコーダ961が、Mビットがセットされたキャッシュラインの数だけでなく、Mビットがセットされ、Iビットがクリアされたキャッシュラインの数もカウントするので、キャッシュダーティネストリガ回路960に示されているよりも少し複雑である。キャッシュダーティネスウォーターマークレジスタ963は、特権実行状態においてプログラム可能であり、記憶されたキャッシュダーティウォーターマークを提供するための出力部を有する。比較器964は、エンコーダ962の出力部に接続された正の入力部と、キャッシュダーティネスウォーターマークレジスタ963の出力部に接続された負の入力部と、評価回路910の第5の入力部に接続され、それに「キャッシュダーティ」とラベル付けされた信号を提供する出力部と、を有する。比較器964は、キャッシュ961内のダーティラインの数がキャッシュダーティウォーターマークを超えることに応じて、その出力をアクティブ論理状態で提供する。キャッシュダーティネストリガ回路960は、SOC内の各キャッシュに対して複製される。
【0045】
非ターミナルイベントトリガ生成回路900は、非ターミナルイベントを構成する代表的な一組の状態を示すが、他の実施形態は、状態のうちいくつかのみを検出することになり、更に他の実施形態では、非ターミナルイベントを示す他の状態を検出することになることが明らかであろう。更に、評価回路は、単純な論理OR機能を実装することができるか、又は、因子の組合せに基づいてファジー論理評価を実装することができる。
【0046】
これにより、ランタイムグローバルプッシュトゥパーシスタンス動作を実装するデータ処理システム、SOC及び方法が開示された。このランタイム動作は、重要なデータを各CPUコアのキャッシュ階層からフラッシュさせ、次いで、他の保留中の動作とともにオンチップデータファブリックからフラッシュさせ、外部永続メモリに記憶させる。ランタイムグローバルプッシュトゥパーシスタンス動作は、重要なデータが保護及び保存されることを可能にし、突然の又は予期しないシステム障害の場合に、データ処理システムが既知のオペレーティングポイントに戻ることを可能にする。様々な実施形態において、ランタイムグローバルプッシュトゥパーシスタンス動作をトリガすることができる2つのタイプの動作、すなわち、ターミナルイベント及び非ターミナルイベントが存在する。SOCによってサポートされる特定のトリガイベントは、実施形態間で異なり得る。
【0047】
マイクロシーケンサ480並びにそれに関連付けられたトリガ生成回路800及び900がハードウェア回路であるものとして記載してきたが、それらの機能は、ハードウェア及びソフトウェアの様々な組み合わせで実装されてもよい。ソフトウェア構成要素のうちいくつかは、少なくとも1つのプロセッサによる実行のためにコンピュータ可読記憶媒体に記憶され得る。更に、図5に示す方法の一部又は全部は、コンピュータ可読記憶媒体に記憶され、少なくとも1つのプロセッサによって実行される命令によって管理されてもよい。図5に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応し得る。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、又は、他の不揮発性メモリデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈されるか及び/又は別の方法で実行可能な他の命令形式であり得る。
【0048】
SOC410及びマイクロシーケンサ480又はその任意の部分は、集積回路を製造するために、プログラムによって読み取られ、直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表されてもよい。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high-level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能格納媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0049】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。例えば、ターミナルイベントトリガ信号又は非ターミナルイベントトリガ信号を生成する状態は、実施形態間で異なり得る。更に、様々な実施形態では、2つ以上の状態の一致が、トリガイベント信号を生成するために使用され得る。本明細書に記載する相互接続プロトコルは例示的なものであり、他の実施形態では他のプロトコルが使用されてもよい。サポートされるSOCトポロジ及びキャッシュ階層は、他の実施形態では異なることになる。ダーティキャッシュラインを示すために使用されるステータスビットも、他の実施形態では異なることになる。本明細書に示し、記載するように、様々な回路が互いに直接接続されるが、他の実施形態では、それらは様々な中間回路を通して間接的に接続されてもよく、信号は様々な電気的及び光学的シグナリング技術によって回路間で伝送されてもよい。
【0050】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲内に入る開示された実施形態の全ての変更を網羅することを意図している。
図1
図2
図3
図4
図5
図6
図7
図8
図9