(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-08
(45)【発行日】2025-01-17
(54)【発明の名称】適応システムの構成、セキュリティ、及び管理のためのサブシステム
(51)【国際特許分類】
G06F 21/57 20130101AFI20250109BHJP
G06F 15/78 20060101ALI20250109BHJP
【FI】
G06F21/57 350
G06F15/78 560
G06F15/78 517
(21)【出願番号】P 2022525040
(86)(22)【出願日】2020-10-27
(86)【国際出願番号】 US2020057577
(87)【国際公開番号】W WO2021086876
(87)【国際公開日】2021-05-06
【審査請求日】2023-10-05
(32)【優先日】2019-10-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】アンサリ,アーマド・アール
(72)【発明者】
【氏名】アーマド,サグヒーア
【審査官】岸野 徹
(56)【参考文献】
【文献】米国特許出願公開第2019/0250853(US,A1)
【文献】特表2019-505890(JP,A)
【文献】特表2014-515843(JP,A)
【文献】特表2014-501987(JP,A)
【文献】特開2012-079152(JP,A)
【文献】特開2004-021984(JP,A)
【文献】特開2014-032558(JP,A)
【文献】特表2017-535125(JP,A)
【文献】特表2005-512229(JP,A)
【文献】国際公開第2019/195343(WO,A1)
【文献】特開2015-036847(JP,A)
【文献】特表2021-514079(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
プログラムコードを実行するように構成されたプロセッサシステムと、
プログラマブルロジックと、
前記プロセッサシステム及び前記プログラマブルロジックに結合されたプラットフォーム管理コントローラと、
を備え、
前記プラットフォーム管理コントローラが、前記プロセッサシステム及び前記プログラマブルロジックを独立して構成及び制御するように適合さ
れ、
前記プラットフォーム管理コントローラが、
専用の読み出し専用メモリと、
前記専用の読み出し専用メモリに記憶された第1の命令を実行する専用の第1のプロセッサと、
専用のランダムアクセスメモリと、
前記専用のランダムアクセスメモリに記憶された第2の命令を実行する専用の第2のプロセッサと、
を備え、
前記第1のプロセッサが、前記専用の読み出し専用メモリからの前記第1の命令を実行して、外部ソースからの前記第2の命令を取得及び認証し、且つ前記第2のプロセッサによる実行のために前記専用のランダムアクセスメモリに前記第2の命令を記憶する、ブートプロセスの第1の段階を実行し、
前記第1のプロセッサ及び前記第2のプロセッサの各々が、冗長性を伴って実装される、集積回路。
【請求項2】
前記プラットフォーム管理コントローラが、前記プロセッサシステム及び前記プログラマブルロジックとは無関係に給電される、請求項1に記載の集積回路。
【請求項3】
前記プロセッサシステムが、前記プログラマブルロジックとは無関係に給電される、請求項
2に記載の集積回路。
【請求項4】
前記プラットフォーム管理コントローラが、前記プロセッサシステム及び前記プログラマブルロジックを互いに独立して電力オフにし、前記プロセッサシステム及び前記プログラマブルロジックを互いに独立して電力オンにするように構成される、請求項
2に記載の集積回路。
【請求項5】
前記プラットフォーム管理コントローラが、インターフェースと、前記インターフェースを介して受信されたウェイク信号を検出するように構成された回路とを備え、
前記プラットフォーム管理コントローラが、前記ウェイク信号に応答して、以前に電力オフにされた前記集積回路の電力ドメインを電力オンにする、
請求項1に記載の集積回路。
【請求項6】
前記プラットフォーム管理コントローラが、前記集積回路の外部からアクセス可能であり、且つ前記プロセッサシステム及び前記プログラマブルロジックとは無関係にアクセス可能である、デバッグインターフェースを備える、請求項1に記載の集積回路。
【請求項7】
前記プラットフォーム管理コントローラが、前記プロセッサシステム及び前記プログラマブルロジックからエラー通知を受信するように構成されたエラー管理インターフェースを備え、
前記エラー管理インターフェースが、前記集積回路から出力される、検出されたエラーを示す信号の生成、又は前記プラットフォーム管理コントローラ内のプロセッサへの割り込みの生成のうちの少なくとも1つを実行するように構成される、
請求項1に記載の集積回路。
【請求項8】
前記プラットフォーム管理コントローラが、前記集積回路のサブシステム間の機能的及び物理的分離を制御する、前記集積回路全体に実装される保護回路をプログラムするように構成され、前記サブシステムが、前記プロセッサシステム及び前記プログラマブルロジックを含む、請求項1に記載の集積回路。
【請求項9】
前記プラットフォーム管理コントローラが、前記集積回路の温度範囲外事象又は電圧範囲外事象を検出するように構成される、請求項1に記載の集積回路。
【請求項10】
前記プラットフォーム管理コントローラが、前記温度範囲外事象又は前記電圧範囲外事象の検出に応答して前記集積回路を消去するように構成される、請求項
9に記載の集積回路。
【請求項11】
前記プラットフォーム管理コントローラと、前記プロセッサシステム又は前記プログラマブルロジックの少なくとも一方とを含む第1のダイと、
スレーブプラットフォーム管理コントローラと、前記プロセッサシステム又は前記プログラマブルロジックのうちの少なくとも他方とを含む第2のダイと、
をさらに備える、請求項1に記載の集積回路。
【請求項12】
プロセッサアレイと、
前記プロセッサアレイを前記プログラマブルロジック及び前記プラットフォーム管理コントローラに接続するプログラマブルネットワークオンチップと
をさらに備え、
前記プラットフォーム管理コントローラが、前記プログラマブルネットワークオンチップを構成し、且つ一度構成された前記プログラマブルネットワークオンチップを使用して前記プロセッサアレイを構成するように適合されている、
請求項1に記載の集積回路。
【請求項13】
前記プラットフォーム管理コントローラが、前記集積回路内で発生する改ざん事象を検出し、それに応答してロックダウン状態を開始するように構成される、請求項1に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、集積回路(IC)に関し、より詳細には、ICとして実装される適応システムの構成、セキュリティ、及び管理に関する。
【背景技術】
【0002】
背景技術
プログラマブル集積回路(IC)は、プログラマブルロジックを含むデバイスのタイプを指す。プログラマブルデバイス又はICの例は、フィールドプログラマブルゲートアレイ(FPGA)である。いくつかの現代のプログラマブルICは、1つ以上の他のサブシステムと組み合わせてサブシステムとしてプログラマブルロジックを含むように進化してきた。例えば、いくつかのプログラマブルICは、ハードワイヤードプロセッサと組み合わせてプログラマブルロジックを含む。これらのタイプのプログラマブルICは、システムオンチップ又は「SoC」と呼ばれることもある。
【発明の概要】
【課題を解決するための手段】
【0003】
発明の概要
一態様において、集積回路(IC)は、プログラムコードを実行するように構成されたプロセッサシステムと、プログラマブルロジックと、プロセッサシステム及びプログラマブルロジックに結合されたプラットフォーム管理コントローラとを含む。プラットフォーム管理コントローラは、プロセッサシステム及びプログラマブルロジックを独立して構成及び制御するように適合される。
【0004】
別の態様では、方法は、IC上にプロセッサシステムを提供することを含み、プロセッサシステムは、プログラムコードを実行するように構成される。本方法は、IC上にプログラマブルロジックを提供することと、IC上にプラットフォーム管理コントローラを提供することとを含むことができる。プラットフォーム管理コントローラは、プロセッサシステム及びプログラマブルロジックに結合され、プロセッサシステム及びプログラマブルロジックを独立して構成及び制御するように適合される。
【0005】
この概要セクションは、特定の概念を紹介するためにのみ提供され、特許請求される主題の重要な又は本質的な特徴を特定するためのものではない。本発明の構成の他の特徴は、添付の図面及び以下の詳細な説明から明らかになるであろう。
【0006】
図面の簡単な説明
本発明の構成は、例として添付の図面に示されている。しかしながら、図面は、示された特定の実施態様のみに本発明の構成を限定するものと解釈されるべきではない。以下の詳細な説明を検討し、図面を参照すると、様々な態様及び利点が明らかになるであろう。
【図面の簡単な説明】
【0007】
【
図1】システムオンチップ(SoC)タイプの集積回路(IC)のための例示的なアーキテクチャを示す。
【
図2】
図1のネットワークオンチップ(NoC)の例示的な実施態様を示す。
【
図3】
図1のデータ処理エンジン(DPE)アレイの例示的な実施態様を示す。
【
図4】
図1のプロセッサシステムの例示的な実施態様を示す。
【
図5】
図1のSoCの別の例示的な実施態様を示す。
【
図6】プラットフォーム管理コントローラ(PMC)の例示的な実施態様を示す。
【
図7】PMCにおけるプロセッサの例示的で冗長な実施態様を示す。
【
図8】SoCのさらなる構造的及び機能的態様を示す。
【
図9】
図8のプログラマブル保護回路の例示的な実施態様を示す。
【
図12】SoCをブートする別の例示的な方法を示す。
【
図13】SoCをブートするために使用され得るプログラミングデバイスイメージの例を示す。
【
図14】複数のダイを有するIC構造の断面側面図の例を示す。
【発明を実施するための形態】
【0008】
発明を実施するための形態
本開示は、新規な特徴を定義する特許請求の範囲によって終了するが、本開示内で説明される様々な特徴は、図面と併せて説明を考慮することによってよりよく理解されると考えられる。本明細書に記載のプロセス、機械、製造物、及びそれらの任意の変形は、例示の目的で提供される。本開示内に記載された特定の構造的及び機能的詳細は、限定として解釈されるべきではなく、単に特許請求の範囲の基礎として、及び実質的に任意の適切に詳細な構造に記載された特徴を様々に使用することを当業者に教示するための代表的な基礎として解釈されるべきである。さらに、本開示内で使用される用語及び語句は、限定することを意図するものではなく、むしろ記載された特徴の理解可能な説明を提供することを意図している。
【0009】
本開示は、集積回路(IC)に関し、より詳細には、ICとして実装される適応システムの構成、セキュリティ、及び管理に関する。本開示内に記載された本発明の構成によれば、プラットフォーム管理コントローラ(PMC)がICに組み込まれる。適応システムであるICは、複数の異なるサブシステムを含む。これらのサブシステムのうちの1つ以上はプログラム可能である。これらのサブシステムの例には、プロセッサシステム(PS)及びプログラマブルロジック(PL)が含まれる。
【0010】
PMCは、IC全体にわたって他のサブシステムの各々を管理することができるIC内のサブシステムである。例えば、PMCは、電力投入、ブート/構成、セキュリティ、電力管理、安全監視、デバッグ、及び/又は異なるサブシステムのためのIC全体のエラー処理に対する統合されたプログラム可能な制御を提供することができる。PMCによって提供される機能はまた、各サブシステム内のデバイスレベルで動作可能であり得る。プラットフォーム管理専用のPMCサブシステムの使用は、PSをPLから切り離す。したがって、PS及びPLは、PMCによって独立して管理、構成、並びに/又は電力オン及び/若しくはオフされ得る。言い換えれば、PMCは、PLとは無関係にPSのために、及びPSとは無関係にPLのために、記述された動作を実行することができる。
【0011】
プロセッサ(例えば、PS)を備えた従来のフィールドプログラマブルゲートアレイ(FPGA)は、PS及びPLを制御及び/又は管理するために別個の構成インターフェース及び別個のプロトコルを利用した。例えば、ユーザアプリケーション(例えば、実行可能プログラムコード)を実行するためのPS及びユーザ回路設計を実施するためのPLを含む前世代のFPGAでは、PLの構成はPSを通過していた。したがって、そのようなアーキテクチャでは、PLは、PLに関して任意の動作を実行する前に、電力投入され構成されている(例えば、起動されて機能する)PSに依存していた。PSとPLとの間のこの依存性により、PSからのPLの分離又は独立した制御は、多くの場合に望ましいが、不可能であった。PMCの使用は、PSからのPLの分離を容易にする。
【0012】
別の態様では、セキュリティの観点から、PMCは、デバイス全体(例えば、IC)のためのルートオブトラストとして動作することができる。一例として、PMCは、デバイスにロードされたプログラミングイメージを認証し、動作中の改ざんからデバイスを保護する役割を担う。PMCをルートオブトラストとして使用することにより、PMCは、PS、PL、及び/又はデバイスに含まれ得る任意の他のサブシステムの動作を監視及び検証することができる。さらに、PMCによって実行されるルートオブトラスト機能は、PS及びPLの各々並びに/又はPS及び/若しくはPLによって実行される任意の動作とは異なり別個である。
【0013】
別の態様では、PMCは、専用電源で動作してもよい。このように、PMCは、PSの電源及びPLの電源とは別個で独立した電源によって給電される。この電力に依存しないことにより、PMC、PS、及びPLは、電気的ノイズ及びグリッチ(例えば、攻撃)に関して互いに保護されることが可能になる。さらに、PMCが動作し続けている間、PS及びPLの一方又は両方の電力が切られてもよい(例えば、完全にオフ、中断、又は低電力ハイバネートモードに置かれる)。例えば、PMCは、他のサブシステムの電力がオン又はオフにされている間、常にオンのままであるように構成されてもよい。この機能により、電力が切られたデバイスの任意のサブシステムをより迅速に起動させ、デバイス全体が完全な電力投入及び起動プロセスを実行する必要なしに動作状態に復元することが可能になる。
【0014】
さらに別の態様では、PMCはファームウェアを実行することができる。このように、PMCは、PMCによってロードされ実行されるファームウェアを変更することによって構成可能である。このようなPMCの構成可能性により、異なる機能セットを有するデバイスに対応するために同じ管理ハードウェア(例えば、同じPMCアーキテクチャ)を使用することが可能になる。ファームウェアの使用はまた、デバイスの1つ以上のサブシステムの混合又は組み合わせを含み得る別個の処理ドメイン(サブシステムに特有であり得る「電力ドメイン」とは異なる)を作成する際の柔軟性を提供するために、リセット、クロッキング、及び保護などのグローバルデバイス機能の構成可能性及びセグメント化をサポートする。
【0015】
PMCは、以下により詳細に説明される追加の特徴をサポートする。例えば、PMCは、サブシステム間で動作可能なデバイス用の統一デバッグ基盤のためのデバッグインターフェースを含み得る。デバッグインターフェースの使用は、PS又はPLの可用性に依存しない。さらに、デバッグインターフェース及びインフラストラクチャは、ユーザが利用可能なデバイスのリソース(例えば、PS及び/又はPLのリソース)に侵入しない。PMCはまた、デバイス(例えば、PS、PL、及び/又は他のサブシステム内)に実装されているユーザアプリケーションによってアクセスされ得ないセキュリティコンポーネントを含み得る。PMCはセキュリティも提供するので、デバッグインターフェースへのアクセスは保護される。
【0016】
本発明の構成のさらなる態様は、図面を参照して以下により詳細に説明される。説明を簡単且つ明確にするために、図に示す要素は必ずしも縮尺通りに描かれていない。例えば、いくつかの要素の寸法は、明確にするために他の要素に対して誇張されている場合がある。さらに、適切であると考えられる場合、対応する、類似の、又は同様の特徴を示すために、図面間で参照番号が繰り返される。
【0017】
図1は、システムオンチップ(SoC)100の例示的なアーキテクチャを示す。SoC100は、プログラマブルIC及び適応システムの一例である。
図1の例では、図示されたSoC100の様々な異なるサブシステム又は領域は、単一の統合パッケージ内に設けられた単一のダイ上に実装されてもよい。他の例では、異なるサブシステムは、単一の統合パッケージとして提供される複数の相互接続されたダイ上に実装されてもよい。
【0018】
この例では、SoC100は、異なる機能を有する回路を有する複数の領域を含む。この例では、SoC100は、任意選択的に、データ処理エンジン(DPE)アレイ102を含む。SoC100は、PL104と、PS106と、オプションのネットワークオンチップ(NoC)108と、PMC110と、オプションの1つ以上のハードワイヤード回路ブロック112とを含む。
【0019】
DPEアレイ102は、SoC100の他の領域へのインターフェースを有する複数の相互接続されたハードワイヤード及びプログラマブルプロセッサ、例えばDPEのアレイとして実装される。DPEアレイ102内のDPEは配線されている。DPEアレイ102の各DPEは、1つ以上のコア及び専用メモリを含む。DPEのコアは、同じDPE内のメモリ、及びDPEのコアに上下左右方向に隣接する任意の他のDPEのメモリにアクセスすることができる。DPEのコアは、これらのメモリの各々をメモリの統合領域と見なす。これにより、DPE間のデータ共有が容易になる。
【0020】
DPEアレイ102のDPEは、プログラム可能な相互接続回路によって相互接続され、1つ以上のDPEのグループをグループ又はクラスタに配置することを可能にする。例えば、相互接続回路は、各DPEを構成するための構成ネットワーク(例えば、実行及び/又はデータのための命令を提供する)、DPEアレイ102内の異なるDPEがパケット化データ(例えば、PL104の場合のようにビットごとに接続を確立しない)を使用して通信することを可能にするプログラマブルストリームネットワーク、及びデバッグ情報を取得することを可能にするデバッグネットワークを含むことができる。
【0021】
構成ネットワークは、構成データ、例えば、各DPEによる実行のための命令、DPE間のロジックリンクを確立するストリームスイッチプログラミングなどがDPEアレイ102にロードされることを可能にする。各DPEは、その中に1つ以上の異なるカーネルを実装するために異なるプログラムコードを有することができる。別の態様では、同じ行のDPEのコアは、カスケードインターフェースによって直接接続され、ある行のエッジDPEのコアは、真上又は真下の異なる行の別のエッジDPEのコアに直接接続されてもよい。
【0022】
PL104は、指定された機能を実行するようにプログラムされ得る回路である。一例として、PL104は、フィールドプログラマブルゲートアレイ型の回路として実装されてもよい。PL104は、プログラマブル回路ブロックのアレイを含むことができる。本明細書で定義されるように、「プログラマブルロジック」という用語は、再構成可能デジタル回路を構築するために使用される回路を意味する。プログラマブルロジックは、基本機能を提供する「タイル」と呼ばれることもある多くのプログラマブル回路ブロックから形成される。PL104のトポロジは、ハードワイヤード回路とは異なり、高度に構成可能である。PL104の各プログラマブル回路ブロックは、典型的には、プログラマブル素子(例えば、機能素子)及びプログラマブル相互接続を含む。プログラマブル相互接続は、PL104の高度に構成可能なトポロジを提供する。プログラマブル相互接続は、PL104のプログラマブル回路ブロック間の接続性を提供するためにワイヤごとに構成されてもよく、例えば、DPE間の接続性とは異なりビットごとに(例えば、各ワイヤが1ビットの情報を伝達する場合)構成可能である。
【0023】
PL104のプログラマブル回路ブロックの例は、ルックアップテーブル及びレジスタを有する構成可能ロジックブロックを含む。以下に記載され、ハードブロックと呼ばれることもあるハードワイヤード回路とは異なり、これらのプログラマブル回路ブロックは、製造時に定義されていない機能を有する。PL104は、より制限されたプログラマブル性を有する基本的及び定義された機能も提供する他のタイプのプログラマブル回路ブロックを含むことができる。これらの回路ブロックとしては、デジタル信号処理ブロック(DSP)、位相ロックループ(PLL)、ブロックランダムアクセスメモリ(BRAM)などが挙げられる。これらのタイプのプログラマブル回路ブロックは、PL104の他のものと同様に多数であり、PL104の他のプログラマブル回路ブロックと混在している。
【0024】
使用前に、PL104、例えばプログラマブル相互接続及びプログラマブル素子は、構成ビットストリームと呼ばれるデータを内部構成メモリセルにロードすることによってプログラム又は「構成」されなければならない。構成メモリセルは、構成ビットストリームがロードされると、PL104がどのように構成されるか、例えばトポロジを定義し、(例えば、実行される特定の機能を)動作させる。本開示内で、「構成ビットストリーム」は、プロセッサ又はコンピュータによって実行可能なプログラムコードと同等ではない。
【0025】
CFrameインターフェース(CFI)114は、それを介して構成データ、例えば構成ビットストリームをPL104に提供して、異なるユーザ指定の回路及び/又はその中の回路を実装することができるインターフェースである。CFI114はさらに、PL104内に含まれるメモリを初期化するために使用され得る。CFI114は、PMC110によってアクセス可能であり、構成データをPL104に提供し、記載されているようにメモリ初期化を実行する。場合によっては、PMC110は、PMC110によって構成されるとPS106がPL104に構成データを提供できるように、PS106を最初に構成することができる。
【0026】
PS106は、SoC100の一部として製造されるハードワイヤード回路として実装される。PS106は、各々がプログラムコードを実行することができる様々な異なるプロセッサタイプのいずれかとして実装されるか、又はそれらを含むことができる。例えば、PS106は、個別のプロセッサ、例えば、プログラムコードを実行することができる単一のコアとして実装されてもよい。別の例では、PS106は、マルチコアプロセッサとして実現され得る。さらに別の例では、PS106は、1つ以上のコア、モジュール、コプロセッサ、インターフェース、コントローラ、及び/又はその他のリソースを含み得る。PS106は、様々な異なるタイプのアーキテクチャのいずれかを用いて実装され得る。PS106を実装するために使用され得る例示的なアーキテクチャは、ARMプロセッサアーキテクチャ、x86プロセッサアーキテクチャ、グラフィック処理ユニット(GPU)アーキテクチャ、モバイルプロセッサアーキテクチャ、DSPアーキテクチャ、又はコンピュータ可読命令若しくはプログラムコードを実行することができる他の適切なアーキテクチャを含み得るが、これらに限定されない。
【0027】
NoC108は、SoC100内のエンドポイント回路間でデータを共有するための相互接続ネットワークである。エンドポイント回路は、DPEアレイ102、PL104、PS106、及び/又はハードワイヤード回路ブロック112に配置することができる。NoC108は、専用スイッチングによる高速データ経路を含むことができる。一例では、NoC108は、1つ若しくは複数の水平経路、1つ若しくは複数の垂直経路、又は水平経路と垂直経路の両方を含む。
図1に示す領域の配置及び数は単なる例である。NoC108は、選択されたコンポーネント及び/又はサブシステムを接続するためにSoC100内で利用可能な共通インフラストラクチャの一例である。
【0028】
NoC108は、PL104、PS106、及びハードワイヤード回路ブロック112のうちの選択されたものへの接続を提供する。NoC108はプログラム可能である。SoC100と共に使用されるプログラマブルNoCの場合、SoC100内での実装のためにユーザ回路設計が作成されるまで、NoC108を通ってルーティングされるべきネットは未知である。NoC108は、スイッチ及びインターフェースなどのNoC108内の要素がどのように構成され、スイッチ間及びNoCインターフェース間でエンドポイント回路に接続するためにデータを渡すように動作するかを定義する内部構成レジスタに構成データをロードすることによってプログラムすることができる。
【0029】
NoC108は、SoC100の一部として製造され、物理的に修正可能ではないが、ユーザ回路設計の異なるマスタ回路と異なるスレーブ回路との間の接続を確立するようにプログラムすることができる。NoC108は、電力投入時に、その中にデータパス又はルートを実装しない。しかしながら、PMC110によって構成されると、NoC108は、エンドポイント回路間のデータパス又はルートを実装する。例えば、NoC108は、ユーザ指定のマスタ回路とスレーブ回路とを接続するパケット交換網を確立することができる複数のプログラマブルスイッチを含むことができる。これに関して、NoC108は、異なる回路設計に適応することができ、各異なる回路設計は、NoC108によって結合され得るSoC100内の異なる位置に実装されたマスタ回路及びスレーブ回路の異なる組合せを有する。NoC108は、ユーザ回路設計のマスタ回路及びスレーブ回路の間で、例えばアプリケーションデータ及び/又は構成データなどのデータをルーティングするようにプログラムすることができる。例えば、NoC108は、PL104、PS106、及び/又はDPEアレイ102を使用して実装されるかどうかにかかわらず、異なるユーザ指定回路を互いに結合するようにPMC110によってプログラムされてもよい。さらに、NoC108は、ユーザ指定回路を異なるハードワイヤード回路ブロック112及び/又はSoC100の外部の異なる回路及び/又はシステムと結合することができる。
【0030】
ハードワイヤード回路ブロック112は、SoC100の一部として製造された専用回路ブロックである。ハードワイヤードであるが、ハードワイヤード回路ブロック112は、構成データを制御レジスタにロードして、1つ以上の異なる動作モードを実施することによって構成することができる。ハードワイヤード回路ブロック112は、例として、入力/出力(I/O)ブロック、及び/又はSoC100の外部の回路及び/又はシステムに信号を送受信するためのトランシーバ、メモリコントローラ、及びビデオエンコーダを含むことができる。異なるI/Oブロックの例は、シングルエンド及び疑似差動I/Oを含むことができる。トランシーバの例は、高速差動クロックトランシーバを含むことができる。ハードワイヤード回路ブロック112の他の例には、暗号化エンジン、デジタル-アナログ変換器(DAC)、アナログ-デジタル変換器(ADC)などが含まれるが、これらに限定されない。SoC100内のハードワイヤード回路ブロック112は、本明細書では時々「ハードブロック」と呼ばれることがある。ハードワイヤード回路ブロック112は、通常、PL104のプログラマブル回路ブロックと比較して機能が複雑である。さらに、通常、SoC100内のハードワイヤード回路ブロック112は、PL104のプログラマブル回路ブロック又はタイルと比較して少ない。
【0031】
図1の例では、PL104は4つの別々の領域に示されている。別の例では、PL104は、プログラマブル回路の統合領域として実装されてもよい。さらに別の例では、PL104は、プログラマブル回路の4つを超える異なる領域、又はプログラマブル回路の4つ未満の異なる領域として実装されてもよい。PL104の特定の組織は、限定を意図するものではない。ここで、SoC100は、1つ以上の領域を有するPL104と、PS106と、PMC110とを含む。NoC108が含まれてもよい。DPEアレイ102も含まれてもよい。
【0032】
他の例示的な実施態様では、SoC100は、ICの異なる領域に配置された2つ以上のDPEアレイ102を含むことができる。さらに他の例では、SoC100は、マルチダイICとして実装されてもよい。一例では、各サブシステムは、異なるダイ上に実装されてもよい。別の例では、1つ以上又はすべてのサブシステムを各ダイにわたって複製することができる。異なるダイは、ICがマルチチップモジュール(MCM)などとして実装される積層ダイアーキテクチャを使用して、インターポーザ上にダイを並べて積層するなど、様々な利用可能なマルチダイIC技術のいずれかを使用して通信可能にリンクされてもよい。マルチダイICの例では、各ダイは、単一のサブシステム、2つ以上のサブシステム、サブシステム及び別の部分サブシステム、又はそれらの任意の組合せを含むことができることを理解されたい。1つの例示的な実施態様では、各ダイはPMCを含むことができ、「マスタ」として指定されたダイに実装されたPMCはマスタPMCであり、スレーブとして指定された他のダイに実装されたPMCはマスタPMCに結合されたスレーブPMCとして動作する。
【0033】
図2は、NoC108の例示的な実施態様を示す。NoC108は、NoCマスタユニット(NMU)202、NoCスレーブユニット(NSU)204、ネットワーク214、NoC周辺機器インターコネクト(NPI)210、及びレジスタ212を含む。各NMU202は、エンドポイント回路をNoC108に接続する入口回路である。各NSU204は、NoC108をエンドポイント回路に接続する出口回路である。NMU202は、ネットワーク214を介してNSU204に接続される。一例では、ネットワーク214は、NoCパケットスイッチ206(NPS)と、NPS206間のルーティング208とを含む。各NPS206は、NoCパケットの切り替えを行う。NPS206は、複数の物理チャネルを実装するために、互いに、並びにルーティング208を介してNMU202及びNSU204に接続される。NPS206はまた、物理チャネルごとに複数の仮想チャネルをサポートする。
【0034】
NPI210は、NMU202、NSU204、及びNPS206をプログラムするための回路を含む。例えば、NMU202、NSU204、及びNPS206は、その機能性を判定するレジスタ212を含むことができる。NPI210は、機能を設定するためにそのプログラミングのためにレジスタ212に結合された周辺機器インターコネクトを含む。NoC108内のレジスタ212は、割り込み、サービス品質(QoS)、エラー処理及び報告、トランザクション制御、電力管理、及びアドレスマッピング制御をサポートする。レジスタ212は、書き込み要求を使用してPMC110によってレジスタ212に書き込むことなどによって、再プログラムされる前に使用可能な状態で初期化することができる。NoC108の構成データは、例えばプログラミングデバイスイメージ(PDI)の一部として不揮発性メモリ(NVM)に格納することができ、NoC108及び/又は他のエンドポイント回路をプログラムするためにNPI210に提供することができる。
【0035】
NMU202は、トラフィック入口点である。NSU204は、トラフィック出口点である。NMU202及びNSU204に結合されたエンドポイント回路は、硬化回路(例えば、ハードワイヤード回路ブロック112)、PL 104に実装された回路、及び/又はDPEアレイ102の回路とすることができる。所与のエンドポイント回路は、複数のNMU202又は複数のNSU204に結合することができる。
【0036】
この例では、エンドポイント回路216は、NoC108を介してエンドポイント回路218に接続されている。エンドポイント回路216は、NoC108のNMU202に結合されたマスタ回路である。エンドポイント回路218は、NoC108のNSU204に結合されたスレーブ回路である。各エンドポイント回路216及び218は、PS106内の回路、PL領域104内の回路、又は別のサブシステム(例えば、ハードワイヤード回路ブロック112及び/又はDPEアレイ102内)の回路とすることができる。
【0037】
ネットワーク214は、複数の物理チャネルを含む。物理チャネルは、NoC108をプログラムすることによって実装される。各物理チャネルは、1つ以上のNPS206及び関連するルーティング208を含む。NMU202は、少なくとも1つの物理チャネルを介してNSU204と接続する。物理チャネルはまた、1つ以上の仮想チャネルを有することができる。
【0038】
ネットワーク214を介した接続は、マスタ-スレーブ構成を使用する。一例では、ネットワーク214を介した最も基本的な接続は、単一のスレーブに接続された単一のマスタを含む。しかしながら、他の例では、より複雑な構造を実装することができる。
【0039】
図1の例に示すように、NoC108は、垂直NoC又は「VNoC」と呼ばれる1つ以上の垂直部分と、「HNoC」と呼ばれる1つ以上の水平部分とを含むことができる。各VNoCは、PL領域104の間に配置されている。HNoCは、一般に、PL104の領域とハードワイヤード回路ブロック112との間、又はPL104の領域とDPEアレイ102との間に配置される。NoC108は、メモリインターフェース(例えば、他のハードワイヤード回路ブロック112)に接続され得る。PS106は、HNoCに結合され得る。
【0040】
この例では、PS106は、HNoCに結合された複数のNMU202を含む。VNoCは、PL104内に配置されたNMU202及びNSU204の両方を含む。例えばメモリインターフェースなどの特定のハードワイヤード回路ブロック112は、HNoCに結合されたNSU204を含む。HNoC及びVNoCの両方は、ルーティング208によって接続されたNPS206を含む。VNoCでは、ルーティング208は垂直に延在する。HNoCでは、ルーティング208は水平に延在する。各VNoCにおいて、各NMU202は、NPS206に結合される。同様に、各NSU204は、NPS206に結合される。NPS206は、互いに結合されてスイッチのマトリックスを形成する。各VNoC内のいくつかのNPS206は、HNoC内の他のNPS206に結合される。
【0041】
NoC108は、より大きなブート又はプログラミングプロセスの一部としてプログラム及び/又は使用されてもよいし、SoC100内の他のサブシステムとは独立してプログラムされてもよい。一般に、NoC108をプログラミングすることは、ブート時にNoCプログラミングデータを受信するPMC110を含み得る。NoCプログラミングデータは、PDIの一部であってもよい。PMC110は、SoC100の管理を担当する。PMC110は、安全でセキュアな環境を維持し、SoC100をブートし、通常動作中にSoC100を管理することができる。
【0042】
PMC110は、物理チャネルを作成するために、NPI210を介してレジスタ212にNoCプログラミングデータをロードする。一例では、プログラミングデータはまた、NPS206内のルーティングテーブルを構成するための情報を含むことができる。PMC110はSoC100をさらにブートする。このように、NoC108は、少なくとも、NMU202とNSU204との間の物理チャネルの構成情報を含む。NoC108の残りの構成情報は、以下でさらに説明するように、ランタイム中に受信することができる。別の例では、ランタイム中に受信されるものとして後述する構成情報の全部又は一部をブート時に受信することができる。
【0043】
ランタイムに関して、PMC110は、ランタイム中にNoCプログラミングデータを受信することができる。PMC110は、NPI210を介してレジスタ212にプログラミングデータをロードする。一例では、PMC110は、NPS206内のルーティングテーブルを構成する。PMC110は、物理チャネル上でQoS経路を構成する。PMC110はアドレス空間マッピングを構成する。PMC110は、入口/出口インターフェースプロトコル、幅、及び周波数を設定する。
【0044】
図3は、DPEアレイ102の例示的な実施態様を示す。
図3の例では、DPEアレイ102は、SoCインターフェースブロック304を含むDPE302の2次元アレイとして実装される。DPE302及びSoCインターフェースブロック304は、ハードワイヤードであり、プログラム可能である。DPEアレイ102は、様々な異なるアーキテクチャのいずれかを用いて実装され得る。限定ではなく例示を目的として、
図3は、整列した行及び整列した列に配置されたDPE302を示す。例では、DPE302は、選択された行のDPEが、隣接する行のDPEに対して水平方向に逆転又は反転するように配置される。1つ以上の他の実施形態では、DPE302の行及び/又は列は、隣接する行及び/又は列に対してオフセットされてもよい。この例では、各DPE302は、コア306及びメモリモジュール308を含む。各コア306は、同じDPE302にあるか別のDPE302にあるかにかかわらず、隣接するメモリモジュールからのデータにアクセスすることができる。DPE302の数、DPE302の特定の配置、及び/又はDPE302の向きは限定的であることを意図しない。
【0045】
DPE302は、DPE相互接続ネットワークによって相互接続される。DPE相互接続ネットワークは、コア-メモリインターフェース接続、コア-コアカスケード接続、ストリーミング接続、及びメモリマップド接続を含む。DPE相互接続ネットワークはまた、独立したデバッグネットワーク及び/又は独立したイベント・ブロードキャスト・ネットワーク(いずれも図示せず)を含むことができる。
【0046】
SoCインターフェースブロック304は、ハードワイヤード及びプログラム可能でもあり、DPE302をSoC100の1つ以上の他のサブシステムに結合することができる。1つ以上の実施形態では、SoCインターフェースブロック304は、隣接するDPE302に結合される。例えば、SoCインターフェースブロック304は、DPEアレイ102内のDPEの最下段の各DPE302に直接結合することができる。SoCインターフェースブロック304は、SoCインターフェースブロック304に直接接続されたDPEアレイ102の1つ以上の選択されたDPE302と通信し、それぞれのDPE302内に含まれた様々な構成可能なスイッチ(図示せず)から形成されたDPEインターコネクトネットワークを利用することによって、DPEアレイ102の任意のDPE302と通信することができる。SoCインターフェースブロック304は、DPEアレイ102内の各DPE302をSoC100の1つ以上の他のサブシステムと結合することができる。例えば、SoCインターフェースブロック304は、DPEアレイ102をNoC108及びPL104に結合することができる。したがって、DPEアレイ102(例えば、選択されたDPE302)は、PL104、PS106、及び/又はハードワイヤード回路ブロック112のいずれかに実装された回路ブロックと通信することができる。
【0047】
コア306は、DPE302のデータ処理能力を提供する。各コア306は、様々な異なる処理回路のいずれかとして実装されてもよい。例示的な実施態様では、各コア306は、プログラムコード、例えばコンピュータ可読命令を実行することができるプロセッサとして実装される。その場合、各コア306は、プログラムメモリが配置されている特定のコアによってのみアクセスされ得るプログラムメモリを含むことができる。各コア306内のプログラムメモリは、それぞれのコア306によって実行される命令を記憶することができる。コア306は、例えば、CPU、GPU、DSP、ベクトルプロセッサ、又は命令を実行することができる他のタイプのプロセッサとして実装されてもよい。コア306は、本明細書に記載の様々なCPU及び/又はプロセッサアーキテクチャのいずれかを使用して実装することができる。別の例では、コア306は、超長命令語(VLIW)ベクトルプロセッサ又はDSPとして実装される。
【0048】
コア306及びメモリモジュール308は、それぞれのDPE302内のレジスタにロードされた構成データによって制御することができる。例えば、各コア306及び/又はメモリ308は、レジスタにロードされた構成データに基づいてアクティブ化及び/又は非アクティブ化されてもよい。レジスタ及びメモリモジュール308は、SoC100内の特定のマスタによるDPE相互接続ネットワークのメモリマップド接続を介してアドレス指定可能である(例えば、読み出し及び/又は書き込みされ得る)。例えば、PMC110は、DPE相互接続ネットワークのメモリマップド接続を使用してアドレス指定可能なDPEアレイ102内の任意のメモリを読み出し及び/又は書き込むことができる。
【0049】
1つ以上の実施形態では、メモリモジュール308は、任意の隣接するコア306によって使用及び/又は生成されるデータを記憶することができる。例えば、メモリモジュール308は、ランダムアクセスメモリ(RAM)などの読み出し/書き込みメモリを含むことができる。したがって、メモリモジュール308は、コア306によって読み出され消費され得るデータを記憶することができる。メモリモジュール308はまた、コア306によって書き込まれるデータ(例えば、結果)を記憶することができる。各メモリモジュール308は、上下左右方向(例えば、4つの基本方向)に直接隣接するコア306によって直接読み書きされてもよい。したがって、コア306がエッジ列又はエッジ行のDPE302内にない限り、コア306は、同じDPE302内のメモリモジュール308、及び3つの他の近くの隣接するDPE302のメモリモジュールに直接アクセスすることができ、DPE302は、コア306に直接隣接するメモリモジュール308を有する。直接メモリアクセスは、コア-メモリインターフェース接続によって実行される。各コア306は、コアがアクセスすることができるメモリモジュール308(例えば、同じDPE内のメモリモジュール内の構成される4つのメモリモジュールと3つの他のDPEのメモリモジュール)を単一の連続したメモリ(例えば、単一のアドレス空間として)として見ることができる。これにより、DPE302(例えば、コア306)も共有メモリを介して通信することが可能になる。
【0050】
DPEアレイ102は、DPE302とSoCインターフェースブロック304との間の接続性、及びDPE302とSoCインターフェースブロック304との動作方法を定義する各DPE302内のレジスタ(図示せず)に構成データをロードすることによってプログラムすることができる。例えば、特定のDPE302又はDPE302のグループがサブシステムと通信する場合、DPE302及びSoCインターフェースブロック304はそうするようにプログラムされる。同様に、1つ以上の特定のDPE302が1つ以上の他のDPE302と通信する場合、DPEはそうするようにプログラムされる。構成データは、DPE302がストリーム接続を介して通信するか、コア-コアカスケード接続を使用して通信するかを示す。
【0051】
図3の例では、ストリーミング接続、コア-コアカスケード接続(直接コア-コア接続)、及びコア-メモリインターフェース接続は、DPE302間のアプリケーションデータの交換を容易にする。メモリマップド接続は、構成データ、制御データ、デバッグデータなどの交換を容易にする。
【0052】
ストリーミング接続は、各DPE302に1つ以上のストリームスイッチを含めることによって実施することができる。ストリームスイッチは相互接続されている。例えば、各ストリームスイッチは、4つの基本方向において他のDPE302に接続するポートを含むことができ、同じDPE302内の回路構造(例えば、コア306、1つ以上の直接メモリアクセス回路を介したメモリモジュール308、及び同じDPE302内のメモリマップドスイッチ)に接続するポートを含むことができる。ストリーミング接続は、隣接するDPE302と非隣接のDPE 302とが通信することを可能にする。一般に、ストリームスイッチは、回路スイッチングストリーム相互接続又はパケットスイッチングストリーム相互接続として動作するようにプログラムされる。回路スイッチングストリーム相互接続は、DPE302間の高帯域幅通信に適したポイントツーポイントの専用ストリームを実装することができる。パケットスイッチングストリーム相互接続は、ストリームを共有して、複数のロジックストリームを中帯域幅通信用の1つの物理ストリームに時間多重化することを可能にする。ストリームスイッチの動作は、メモリマップド接続(例えば、メモリマップドスイッチを使用して作成される)を介して前述のレジスタに書き込むことによって制御することができる。
【0053】
メモリマップド接続は、各DPE302に1つ以上のメモリマップドスイッチを含めることによって実施することができる。各メモリマップドスイッチは、複数のメモリマップドインターフェースを含み得る。例えば、DPE302内の各メモリマップドスイッチは、上記のDPE302内のメモリマップドスイッチ及び下記のDPE302内のメモリマップドスイッチ(又は下記のタイル310)に接続するためのインターフェースと、プログラムメモリ、メモリモジュール308、及びストリームスイッチ(その構成用)を含むコア306などの同じDPE302内の回路構造に接続するためのインターフェースとを含むことができる。メモリマップド接続は、DPEアレイ102の構成、制御、及びデバッグデータを伝達するために使用される。
【0054】
DPEアレイ102は、PS106又はPMC110などのプロセッサシステムのアドレス空間にマッピングされ得る。したがって、DPE302内又はSoCインターフェースブロック304内の構成される4つのメモリモジュールの任意の構成レジスタ及び/又はメモリには、メモリマップドインターフェースを介してアクセスすることができる。例えば、メモリモジュール308内のメモリ、プログラムメモリ、及びレジスタは、メモリマップド接続を介して読み出し及び/又は書き込みすることができる。したがって、メモリマップド接続を使用して、プログラムコードをコア306、DPE302に書き込むことができ、データをメモリモジュール308に読み出し又は書き込むことができ、DPE302間のストリーミング接続を確立することなどができる。
【0055】
コア306はさらに、コア-コアカスケード接続を介して隣接するコア306と直接通信することができる。コア-コアカスケード接続は、
図3に描かれているように、コア間の一方向又は双方向の直接接続である。各コア306は、例えば、図示のように、隣接するコアに接続されたカスケードインターフェースを含むことができる。カスケードインターフェースは、蓄積レジスタにロードされたコア306内の内部データが別の隣接するコア306に(例えば、ストリーミング)送信され得るように、コア306の内部蓄積レジスタに接続され得る。コア-コアカスケード接続は、DPE302のレジスタにロードされた構成データに基づいてプログラムすることができる。例えば、レジスタにロードされた構成データに基づいて、各コアの入力カスケードインターフェース及び出力カスケードインターフェースは、独立してコアごとにアクティブ化又は非アクティブ化することができる。
【0056】
例示的な実装形態では、DPE302はキャッシュメモリを含まない。キャッシュメモリを省略することにより、DPEアレイ102は、予測可能な、例えば決定論的なパフォーマンスを達成することができる。さらに、異なるDPEに位置するキャッシュメモリ間の一貫性を維持する必要がないため、大きな処理オーバーヘッドが回避される。さらなる例では、DPE302のコア306は入力割り込みを有さない。したがって、DPE302のコア306は、中断されずに動作することができる。DPE302のコア306への入力割り込みを省略することはまた、DPEアレイ102が予測可能な、例えば決定論的なパフォーマンスを達成することを可能にする。
【0057】
SoCインターフェースブロック304は、一列に編成された複数の相互接続されたタイル310を含む。特定の実施形態では、SoCインターフェースブロック304内のタイルを実装するために異なるアーキテクチャを使用することができ、各異なるタイルアーキテクチャは、SoC100の異なるタイプのサブシステム又はサブシステムの組合せとの通信をサポートする。タイル310は、データが1つのタイルから別のタイルに双方向に伝播され得るように結合される。各タイル310は、上のDPE302の列のインターフェースとして動作することができる。
【0058】
例えば、各タイル310は、PS106、PL104などの他のソース、及び/又は別のハードワイヤード回路ブロック112、例えば特定用途向けIC又は「ASIC」ブロックからデータを受信することができる。タイル310は、そのようなタイルがそれに応じてそれらの列内のDPE302にアドレス指定されたデータをルーティングすることができるように、他の列内のDPEにアドレス指定されたデータを他のタイル310上に送信しながら、上の列内のDPEにアドレス指定されたデータの部分をそのようなDPE302に提供することができる。このようにして、データは、データがアドレス指定されるDPE(例えば、「ターゲットDPE」)のためのインターフェースとして動作するタイルに到達するまで、SoCインターフェースブロック304のタイルからタイルに伝播することができる。ターゲットDPEのインターフェースとして動作するタイルは、DPEのメモリマップドスイッチ(例えば、構成用)及び/又はDPEのストリームスイッチ(例えば、アプリケーションデータ用)を使用して、データをターゲットDPEに導くことができる。
【0059】
一態様では、SoCインターフェースブロック304は、2つの異なるタイプのタイル310を含む。第1のタイプのタイル310は、DPE302とPL104のみとの間のインターフェースとして機能するように構成されたアーキテクチャを有する。第2のタイプのタイル310は、DPE302とNoC108との間、及びDPEとPL104との間のインターフェースとして機能するように構成されたアーキテクチャを有する。SoCインターフェースブロック304は、第1及び第2のタイプのタイル又は第2のタイプのみのタイルの組み合わせを含んでもよい。
【0060】
第1のタイプのタイル310は、PLインターフェース及び直上のDPE302に接続されたストリームスイッチを含んでもよい。PLインターフェースは、PL104内に位置する境界ロジックインターフェース(BLI)回路に接続する。第2のタイプのタイル310は、NoC及びPLインターフェース、並びに直上のDPE302に接続されたストリームスイッチを含む。NoC及びPLインターフェースは、PL104内のBLI回路、並びにNoC108の1つ以上のNMU202及び1つ以上のNSU204にも接続する。
【0061】
タイル310は、ストリームスイッチ及びメモリマップドスイッチを含む。隣接するタイル310のストリームスイッチが接続されている。隣接するタイル310のメモリマップドスイッチが接続されている。説明したように、ストリームスイッチは、アプリケーションデータを伝達するストリーミング接続を確立し、メモリマップドスイッチは、構成、制御、及び/又はデバッグデータを伝達するメモリマップド接続を確立する。DPEアレイ102に関して、アプリケーションデータは、コア306によって動作するデータである。構成データは、ストリームスイッチ、コア306などのDPE302のコンポーネントをプログラムするために使用されるデータであり、コア306用のプログラムコードを含むことができる。各タイル310内のストリームスイッチは、直上のDPE302内のストリームスイッチに接続されている。同様に、各タイル310内のメモリマップドスイッチは、直上のDPE内のメモリマップドスイッチに接続されている。
【0062】
DPEアレイ102は、SoC100のブートプロセスの一部として最初にプログラムされてもよい。ランタイム中に、DPEアレイ102を再構成することができる。したがって、PMC110は、どのDPE302が互いに及び/又は他のサブシステム若しくは回路に接続されているかを確立し、DPE302内にカーネルを実装し、プログラムコードをロードするなどのために、DPEアレイ102を最初に構成することができる。ランタイム中の任意の時点で、PMC110は、DPE302間及び/又は異なるサブシステム若しくは回路との異なる接続を確立することによってDPEアレイ102の全部又は一部を再構成し、異なるプログラムコードをロードするためにDPE302内に異なるカーネルを実装することなどができる。
【0063】
DPEアレイ102はまた、様々な事象を生成することができる。DPEアレイ102によって生成された事象は、SoC100の他のサブシステムにグローバルにルーティングされてもよい。例えば、DPEアレイ102によって生成された選択された事象は、DPEアレイ102内の検出されたエラーを示すためにPMC110にルーティングされてもよい。別の例では、選択された事象は、PMC110及び/又はPS 106にルーティングされ、割り込みとしてサービスされ得る。
【0064】
図4は、
図1のPS106の例示的な実施態様を示す。PS106は、ハードワイヤードサブシステムとして実装される。本例では、PS106は、プログラムコードを実行可能な複数のプロセッサと、複数の周辺機器とを含む。一態様では、PS106は、2つの別個の電力ドメイン456及び458を含む。各電力ドメインは、異なる電源によって給電されてもよい。このように、電力ドメイン456及び458は、SoC100内の異なる電源レールによって給電され、PMC110の制御下で他の電力ドメインとは独立して電力オン又はオフにされ得る(又は低電力モード若しくはハイバネートモードに置かれ得る)。例えば、電力ドメイン456は、アプリケーション処理ユニット(APU)を含む電力ドメイン458が電力オフである間、リアルタイム処理ユニット(RPU)を使用して動作し続けることができる。SoC100に含まれ得る他の電力ドメインは、独立した電力ドメインとして動作するPL104、別の独立した電力ドメインとして動作するDPEアレイ102、及びさらに別の独立した電力ドメインとして動作するNoC108であり得る。
【0065】
電力ドメイン456は、RPU402及び404を含む。RPU402及び404は各々、レベル1(L1)キャッシュ(図示せず)及び密結合メモリ(TCM)インターフェース414,416を含むことができ、例えば、TCM414はRPU402に対応し、TCM416はRPU404に対応する。
図4の例では、電力ドメイン456は、外部デバイスが様々な業界標準プロトコルを介してPS106と通信することを可能にする様々な周辺機器を含む。例えば、電力ドメイン456は、1つ以上のギガビットイーサネット(登録商標)コントローラ(GbE)420、1つ以上のコントローラエリアネットワーク(CAN)及び/又はCANフレキシブルデータレート(CAN-FD)コントローラ422、1つ以上のユニバーサル非同期受信機-送信機コントローラ(424)、1つ以上のI2Cコントローラ426、シリアルペリフェラルインターフェース(SPI)428、及び/又はウォッチドッグタイマ及びトリプルタイマカウンタ(TTC)430を含む。電力ドメイン456は、ダイレクトメモリアクセスエンジン(DMA)440、クロック及びリセット回路(Clk/Rst)442、PS(プロセッシングシステム)マネージャ444、CoreSight(商標)コントローラ446、及び/又はインターコネクト452などの追加の回路ブロックを含むことができる。CoreSight(商標)コントローラ446は、PS106(例えば、そこに含まれるプロセッサのいずれか)のデバッグ及び/又はトレース機能を提供するように構成されたハードワイヤードコア又は知的財産(IP)である。
【0066】
図4の例では、PS106は、エラーアグリゲーションモジュール(EAM)460を含み得る。EAM460は、SoC100内の他のプログラマブルリソース(例えば、サブシステム)からのエラーを受信及び集約することができる。一態様では、EAM460は、受信したエラーを集約し、要約エラー事象を生成し、要約エラー事象をPMC110に提供することができる。EAM460は、特定の受信されたエラー及び/又はエラーの組み合わせに応答して、PMC 110に対して特定の要約エラー事象、例えば割り込みを生成するように、例えばPMC110によってプログラムされてもよい。PMC110は、EAM460によって生成された事象に応答してエラーを処理することができる。別の態様では、PS106(例えば、RPU402、RPU404、APU406、APU408)のプロセッサは、エラー管理の目的のために利用され、且つEAM460に結合され得るプロセッサ間割り込み機構(IPI)と称される割り込み回路(図示せず)によって、互いに及び/又はPMC110に割り込むことが可能である。
【0067】
電力ドメイン458は、APU406,408,410,及び412を含む。APU406,408,410、及び412の各々は、L1キャッシュ(図示せず)を含むことができる。さらに、APU406,408,410、及び412は、レベル2(L2)キャッシュ418を共有することができる。電力ドメイン458は、外部デバイスが様々な業界標準プロトコルを介してPS106と通信することを可能にする様々な周辺機器を含む。例えば、電力ドメイン458は、例えば、1つ以上のユニバーサルシリアルバス(USB)コントローラ432、1つ以上のシリアルATアタッチメント(SATA)コントローラ434、1つ以上の周辺コンポーネント相互接続エクスプレス(PCIe)コントローラ436、1つ以上のディスプレイポート(DP)コントローラ438などの周辺機器を含み得る。電力ドメイン458は、1つ以上のGPU448、シリアライザ/デシリアライザ(SerDes)回路450、及び/又はコヒーレンシーインターコネクト454を含むことができる。インターコネクト452及び454は、
図4に示す各回路ブロック間の接続を確立することができる。
【0068】
図4は、限定ではなく例示を目的として提供されている。PS106は、
図4に示されていない他の回路ブロックを含んでもよい。そのような回路ブロックの例には、1つ以上の割り込み要求ユニット(IRQ)及びスヌープ制御ユニット(SCU)が含まれるが、これらに限定されない。
【0069】
別の態様では、PCIe436は、コヒーレントPCIeモジュール又は「CPM」と呼ばれる別のサブシステムに含まれてもよい。CPMは、PS106の外部に実装されてもよい。1つの態様では、CPMは、1つ以上のPCIeエンドポイントを含む。CPMはまた、その中のPCIeエンドポイントをSoC100、PL104、及び/又はPS106のギガビットトランシーバ(GT)と直接接続するインターフェースを含むことができる。
【0070】
図5は、
図1のSoC100の別の例示的な実施態様を示す。
図5は、SoC100の様々なコンポーネント及び/又はサブシステムのロジック図を示す。
図5の例では、SoC100は、DPEアレイ102、PL104、PS106、及びシステムインターコネクト502を含む。システムインターコネクト502は、例示の目的で、NoC108、CFI114、及びNPI210を含む。SoC100はさらに、PMC110と、1つ以上のメモリインターフェース504,506(例えば、ハードワイヤード回路ブロック)と、ビデオコーデックユニット(VCU)508(例えば、ハードワイヤード回路ブロック)と、I/Oサブシステム510とを含む。
【0071】
図5の例では、示されている各サブシステムはシステムインターコネクト502に接続されている。例えば、DPEアレイ102、PL104、PS106、PMC110、メモリインターフェース504,506、VCU508、及び/又はI/Oサブシステム510は、システムインターコネクト502に接続される。一態様では、PMC110は、システムインターコネクト502を介して、DPEアレイ102、PL104、PS106、メモリインターフェース504及び506、VCU508、並びにI/Oサブシステム510をプログラムする(例えば、構成する)ことができる。
【0072】
PMC110は、SoC100のルートオブトラストとして動作する。一態様において、PMC110は、プログラムコードを実行することができる1つ以上のプロセッサを含む。PMC110は、制御回路、メモリ、及び1つ以上のインターフェースなどの追加のリソースを含むことができる。PMC110は、SoC100内で様々なセキュリティ及び安全機能を実行することができる。例えば、PMC110は、SoC100をブートし、DPEアレイ102を構成し、PL104を構成し、PS106を構成し、NoC108を構成し、及び/又はシステムインターコネクト502によってSoC100の様々なサブシステムの部分的再構成を実行することができる。例えば、NoC108に関して、PMC110は、NoC108を最初に構成し、NoC108を最初に構成すると、初期構成からNoC108に形成されたデータパスによってDPEアレイ102を構成することができる。PMC110は、チップ全体でSoC100の様々な機能及び構成を設定するための制御レジスタに書き込むことができる。
【0073】
メモリインターフェース504は、1つ以上の構成可能なDDRコントローラ512と、物理インターフェース(PHY)514と、構成可能なI/O516とを含む。メモリインターフェース506は、1つ以上の構成可能な高帯域幅メモリ(HBM)コントローラ518と、物理インターフェース(PHY)520と、構成可能なI/O522とを含む。VCU508は、システムインターコネクト502に接続され、様々な異なるビデオ符号化、復号、及び/又は処理動作を実行することができる。
【0074】
I/Oサブシステム510は、1つ以上の追加のハードブロック524と、PL104を使用して実装された1つ以上のユーザ定義I/Oインターフェース526と、GT及びI/O528とを含むことができる。そのような追加のハードブロックの例は、構成可能な前方誤り訂正ブロック、構成可能な暗号ブロック、及び構成可能なアナログ混合信号ブロック(例えば、1つ以上の構成可能なDAC及び/又はADCを含む)を含むことができるが、これらに限定されない。SoC100は、
図5に示すよりも少ない又は多いハードワイヤード回路ブロックを含み得ることを理解されたい。
【0075】
例示の目的で、PS106の簡略版が
図5に示されている。
図5の例では、PS106には電力ドメインが示されていない。PS106は、1つ以上のRPU402,404と、1つ以上のAPU 406,408,410,412と、1つ以上のGPU448とを含む。PS106は、レベル2キャッシュ、オンチップメモリ(OCM)及びシステムメモリ管理ユニット(SMMU)を表し得る、PSメモリ530をさらに含み得る。PS106は、さらに、1つ以上のインターコネクト532と、1つ以上の周辺機器534とを含むことができる。インターコネクト532は、他のマスタがレベル2キャッシュメモリ及び/又はOCMに対して読み出し及び/又は書き込みを行うことを可能にする、コヒーレントインターコネクト及びスヌープ制御ユニット(SCU)を含むことができる。例えば、PL104内のRPU402、404及びマスタ回路ブロックは、レベル2キャッシュメモリをスヌープすることができる。周辺機器534は、前述したように、1つ以上の異なるI/Oコントローラを含んでもよい。PSマネージャ444は、例えば、PS内の電力ドメインの電力オン又はオフを含む、PS106内のコンポーネントの動作を制御することができる。一態様において、PSマネージャ444は、PMC110からの命令に応答して動作を実行することができる。
図5の例では、PMC110は、システムインターコネクト502を介してPS106と通信することができる。さらに、PMC110は、別個の又は異なる直接接続を介してPS106に直接接続されてもよい。
【0076】
PL104は、前述したように、ファブリックインターコネクトによって相互接続されたルックアップテーブル(LUT)536、BRAM 538、ウルトラRAM(URAM)540、及びDSP542を含むことができる。PL104は、システムインターコネクト502及びファブリックインターコネクトに接続される。DPEアレイ102は、相互接続された複数のハードワイヤード及びプログラム可能なDPE302を含むことができる。DPE302は、SoCインターフェースブロック304を介してシステムインターコネクト502及びファブリックインターコネクトに接続する。
【0077】
図5の例では、NoC108はまた、別のダイ及び/又はICに配置された別のNoCに接続又は結合されてもよい。例えば、SoC100がインターポーザ又は他のキャリアを介して相互接続された複数のダイから形成される場合、NoC108は、インターポーザ又はキャリアを介して他のダイのNoCと結合することができる。
【0078】
図6は、PMC110の例示的な実施態様を示す。PMC110は、SoC100上のハードワイヤード回路ブロックである。
図6の例では、PMC110は、PMC処理ユニット602(PS106とは別個且つ異なる)を含む。PMC処理ユニット602は、物理複製困難関数(PUF)604と、1つ以上のROM606と、1つ以上のRAM608と、1つ以上のタイマ610と、1つ以上のプロセッサ612と、ローカルレジスタ614とを含み得る。例示的な実施態様では、PMC110は、PL104、DPEアレイ102、及び/又はPS106から独立した別個の電力ドメイン上にある(例えば、別個の独立した電源を有する)。
【0079】
一態様では、PMC処理ユニット602のプロセッサ612は、適切な投票回路を使用してロックステップで動作することが可能である。別の態様では、ロックステップで動作し得るプロセッサ612の第1のサブセットは、ROM606へのアクセス(例えばROM606に記憶されたコードを実行する)専用であり、ロックステップで動作し得るプロセッサ612の第2のサブセットは、RAM608へのアクセス(例えばROM608に記憶されたコードを実行する)専用である。プロセッサ612の第1のサブセットは、プロセッサ612の第2のサブセットと相互排他的であってもよい。
【0080】
例えば、1つ以上のプロセッサ612は、ROM606に記憶されたコードの実行専用である。プロセッサ612の第1のサブセットに対応するROM専用プロセッサ612は、SoC100のブート中にリセットによってアクティブであるSoC100の第1のプロセッサである。ROM専用プロセッサ612は、ROM606に記憶されたコードを実行する際に、デバイス初期化、ブートインターフェース検証、リセットからのPMC110のさらなるプロセッサ612の解放などの動作を実行することができるとともに、PMCプラットフォームローダ及びマネージャをRAM608にロードすることができる。ROM専用プロセッサ612は、セキュアブート、ブート後のセキュリティ監視、及びPUF管理も行うことができる。プロセッサ612の第2のサブセットに対応するRAM専用プロセッサ612は、リセットが解除されると、RAM608に記憶されたコードを実行することができる。
【0081】
ROM606及びRAM608は、プロセッサ612によってのみアクセス可能である。別の態様では、各プロセッサ612はROM606及びRAM608を有し、各プロセッサ612は独立した専用のROM606及び独立した専用のRAM608を有する。RAM608は、誤り訂正符号化(ECC)回路によって保護されてもよい。プロセッサ612は、ROM606に記憶されたコードを実行し、ROM606に記憶されたコードを実行することによって主ブートデバイスからRAM608にロードされたファームウェアを実行することによって、SoC100を電力投入及び構成するために使用され得る。ローカルレジスタ614は、PMC処理ユニット602のための構成レジスタであり、PMC処理ユニット602によってのみアクセスされ得る。
【0082】
PMC110をSoC100のルートオブトラストとして動作させる一態様は、ROM606に記憶されたコードを使用してファームウェアをRAM608にロードすることである。ROM専用プロセッサ612は、ROM606からのコードを実行する際に、RAM専用プロセッサ612によって実行されるようにSoC100にロードされた任意のファームウェアを認証すること、及び/又はPMC110以外のSoC100のサブシステムによるそのようなファームウェア又は画像の実行及び/又は使用の前にSoC100にロードされた任意のPDIを認証することができる。したがって、SoC100の任意の部分を構成及び/又はプログラムするために使用される任意のPDIは、最初にPMC110によって認証され得る。
【0083】
別の態様では、PMC110は、PMC110が構成しているSoC100の特定のサブシステム又は部分をゼロ化するなどの動作を実行することができる。このように、PMC110は、構成の一部として、再構成されているSoC100の部分に格納されている以前のデータのいずれか及び/又はすべてを消去することができる。例えば、ROM専用プロセッサは、特定の条件又は事象に応答して、PMCコンポーネント及び/又はデータがSoC100にロードされるブートデバイス(例えば、プラットフォームローダ及びマネージャ又は「PLM」)をゼロ化することができる。RAM専用プロセッサは、特定の条件又は事象に応答してファームウェアを実行することによって、PMC110の外部のSoC100内の他のリソースをゼロ化し得る。
【0084】
ブート後、プロセッサ612は、PMC110に含まれる様々なコンポーネントを使用して様々な異なる機能を実行することができる。例えば、プロセッサ612は、SoC100の電力管理、電圧及び温度監視、安全性及びセキュリティ事象応答などを実行することができる。図示されているように、PMC処理ユニット602、例えばプロセッサ612は、割り込み信号及びウェイク信号を受信することができ、これらの信号は、SoC100の外部から発する信号及び/又はSoC100内から発する信号を含むことができ、これらの目的のために電力をオン及び/又はオフされるべき特定の電力ドメイン及び/又はアイランドを示す。
【0085】
PMC処理ユニット602はインターコネクト616に接続されている。PMC処理ユニット602は、インターコネクト616を介してPMC110及びSoC100内の他のコンポーネントと通信することができる。インターコネクト616は、複数のメモリマップドスイッチ及びインターフェースと、複数のストリームスイッチ及びインターフェースとを含むことができる。インターコネクト616は、PMC共有RAM618、グローバルレジスタ620、I/Oコントローラ622、DMA624及び626、セキュアストリームスイッチ628、スレーブブートインターフェース(SBI)630、セキュリティアクセラレータ632、アナログシステム634、リアルタイムクロック(RTC)636、電力管理及びリセット638、エラー管理回路640、デバッグパケットコントローラ642、及び構成フレームユニット(CFU)644に接続されている。
【0086】
PMC共有RAM618は、処理中にSoC100のための構成データ(例えばPDI)及び/又は他のデータを記憶するために、及びPMC110のための汎用データ処理RAMとして使用され得る。グローバルレジスタ620は、PMC110内の任意の(例えば、すべての)マスタによってアクセス可能な構成レジスタである。グローバルレジスタ620は、汎用の電力制御レジスタ、エラー管理レジスタ、及びサービス割り込み要求インターフェースを含むことができる。I/Oコントローラ622は、多重化入出力(MIO)668に結合された1つ以上のI/Oを含むことができる。図示されるように、MIO668は、SelectMap670、PS106及びPL104にさらに接続する。MIO668は、I/O信号をSelectMap670、PS106、PL104、及び/又はI/Oコントローラ622に選択的に接続することができる。I/Oコントローラ622の例は、I2C、並びにSPI及び/又はSD/eMMC(secure digital/embedded MultiMediaCard)及びUSBインターフェースなどの1つ以上のフラッシュインターフェースを含むが、これらに限定されない。
【0087】
MIO668は、構成に応じて複数の異なる機能を提供することができるSoC100のI/Oピンへの接続性を提供する。例えば、MIO668は、構成のためにSelectMap670に、又はフラッシュメモリコントローラ及び/若しくはUSBインターフェースなどのI/Oコントローラ622に信号を接続するように構成されてもよい。
【0088】
DMA624及び626は、SoC100の構成及び構成データの処理のためにPMC110内でデータを転送するために使用される。セキュアストリームスイッチ628は、処理のためにセキュリティアクセラレータ632に提供されるデータストリームが安全であることを保証する。SBI630は、マルチダイSoC構成におけるスレーブブート及び/又は構成を容易にする。図示されていないが、SBI630は、SelectMap670及びNoC108に接続されてもよい。
【0089】
セキュリティアクセラレータ632は、暗号化及び/又は復号を実行することができる暗号化/復号ブロック646と、認証を実行することができる認証ブロック648と、受信データに対してハッシュを生成することができるハッシュブロック650とを含むことができる。一例では、暗号化/復号ブロック646は、ガロワカウンタモード(GCM)(AES-GCM)を使用して高度暗号化標準(AES)を実行することができる対称鍵暗号化エンジンである。一例では、認証ブロック648は、公開鍵暗号化を実行することができる。例えば、認証ブロック648は、楕円曲線デジタル署名アルゴリズム及び/又はRivest-Shamir-Adlemanを実装することができる。ハッシュブロック650は、安全なハッシュ演算3/394を実行することができる。セキュリティアクセラレータ632はまた、乱数を生成することができる真の乱数発生器(TRNG)回路652及びバッテリバックアップされたRAM(BBRAM)654回路ブロックを含むことができる。セキュリティアクセラレータ632に含まれる特定の回路ブロックは、限定ではなく例示を目的として提供されている。一態様では、セキュリティアクセラレータ632のブロック646,648及び650のみがセキュアストリームスイッチ628を介してのみアクセス可能であり、ブロック652及び654はインターコネクト616によってアクセス可能である。
【0090】
アナログシステム634は、SoC100の周りの様々な場所及び/又は様々なサブシステムに配置され得る1つ以上の遠隔システムモニタ回路からの電圧及び温度を監視することができるシステムモニタ656と、PMC110のためのクロック信号を生成することができるシステム発振器658と、SoC100上のeヒューズ回路を維持及び/又は管理することができるeヒューズコントローラ660と、ハードワイヤード及びプログラマブル回路ブロックとしてSoC100上に実装され得るDAC及び/又はADCなどのSoC100内のアナログデバイスのための1つ以上の基準電圧を生成することができるバンドギャップ回路662と、PMC110、NoC108、NPI210、及びPS106のためのクロック信号を生成することが可能な1つ以上の位相ロックループ(PLL)664と、パワーオンリセット(POR)回路666とを含むことができる。
【0091】
POR回路666は、SoC100内の電圧を感知し、パワーオンリセットをシグナリングすること(例えば、リリースすること)ができる。POR回路666がパワーオンリセットをシグナリングすることに応答して、電力管理及びリセット638は、セキュリティの目的で、ROM606を除くPMC110内のすべてのメモリ及びSoC100の他のサブシステムの各々へのゼロ化(例えば、ゼロを書き込むこと)を実行することができる制御ロジックを含むことができる。
【0092】
eヒューズコントローラ660は、eヒューズ回路を読み取ることができる。eヒューズ回路(例えば、eヒューズメモリ素子)は、デバイスDNA及び/又はセキュリティキーなどの設計情報を記憶するために使用されてもよい。eヒューズ回路は、ジョイント・テスト・アクション・グループ(JTAG)672を無効化するなどの機能をさらに制御することができる。
【0093】
RTC636は、高精度な水晶発振器で動作可能なクロック回路である。RTC636は、SoC100内の様々なオペレーティングシステム及びデバイス管理機能のために、現在の時間を測定し、特定の時間にアラームを生成するために使用され得る。電力管理及びリセット回路638は、SoC100上の他の回路ブロックに対して電力アイランド、電力ドメイン、及びリセットを制御するために必要なロジック及びインターフェースを実装する。電力管理及びリセット回路638は、PS106に実装されたドメイン及びアイランドを制御するためにPS106にさらに接続する。
【0094】
エラー管理回路640は、SoC100内の他のサブシステムからのエラーを受信、記録、及び応答することができる。例えば、エラー管理回路640は、SoC100全体からエラーを捕捉することができる。エラー管理回路640は、特定の受信されたエラー及び/又はエラーの組み合わせに応答して、PMC110の特定の事象、例えば割り込みを生成するように、PMC110によってプログラムされてもよい。PMC110、例えばプロセッサ612は、エラー管理回路640によって生成された事象に応答してエラーを処理することができる。
【0095】
一態様では、エラー管理回路640は、I/Oピンを介してSoC100から、エラーの発生を示すSoC100の外部の回路(例えば、SoC100が配置された回路基板上に配置された回路)に信号を送信するようにプログラムされ得る。別の態様では、エラー管理回路640は、特定のエラーに応答してパワーオンリセットをトリガするか、又は他の特定のエラーに応答してシステムリセットをトリガするようにプログラムされてもよい。この機能は、SoC100のセキュア状態を維持する。システムリセットの場合、PMC110は、既にプログラムされているセキュリティコンテクストを変更することなく、SoC100内の特定の回路ブロック又はサブシステムをリセットすることができる。システムリセットの場合、サブシステム上でゼロ化は実行されず、これはより速い回復をもたらす。
【0096】
デバッグパケットコントローラ642は、高速シリアルインターフェース、他のサブシステム内の他のデバッグ回路、及び/又はPCIeブロック(例えばPS106内又はCPM内)などのSoC100上の他のインターフェースから渡されるパケットを処理する高速デバッグポート(HSDP)用のパケットコントローラである。一例では、デバッグパケットコントローラ642は、10Gbpsを超える速度で動作することができる。デバッグパケットコントローラ642は、例えば、PS106における特定のトランシーバ(高速)、JTAG672又はPCIe436によってアクセスされ得る。デバッグパケットコントローラはさらに、PS106(例えば、CoreSight446)及び/又はその他のサブシステムのデバッグ回路にアクセスし得る。したがって、PMC処理ユニット602は、SoC100のデバッグデータへの集中アクセスを提供する。デバッグデータへの集中アクセスを提供することは、SoC100のためのルートオブトラストとして動作するPMC110の別の態様である。
【0097】
一態様において、デバッグパケットコントローラ642は、CoreSight(商標)コントローラ446への2つの接続を有する。第1の接続は、デバッグ動作をサポートする。デバッグ動作は、レジスタ、メモリの読み取り、あるレジスタ及び/又はメモリから別のレジスタ及び/又はメモリへのデータの移動、並びに/或いはレジスタ及び/又はメモリへのデータの書き込みを含むことができる。これらの動作は、デバッグパケットコントローラ642を介してアクセス可能な任意のそのような場所に対して実行されてもよく、少なくともPS106において、CoreSight(商標)コントローラ446を使用して実行されてもよい。第2の接続は、トレース動作をサポートする。トレース動作は、プログラムコードが各クロックサイクルで実行されるときにプロセッサ又はプロセッサシステムの状態を取り込むことを伴い、JTAG672の能力を超えるかなりの帯域幅を必要とする。JTAGは、低速シリアル接続である。したがって、デバッグパケットコントローラ642を介したSoC 100への高速アクセス、及びCoreSight(商標)コントローラ446への内部接続によって、PS106におけるトレース機能を使用することが可能である。
【0098】
デバッグパケットコントローラ642は、例えばホストから受信したパケットを解読し、そこに含まれているコマンドを実行することができる。コマンドは、データの読み出し又は書き込み先(例えば、CoreSight(商標)コントローラ446、他のデバッグ回路、インターコネクト616、及び/又はインターコネクト616によってアクセス可能な特定のサブシステム内の他のメモリ若しくはレジスタなどの特定の宛先)を指示することができる。一般に、デバッグパケットコントローラ642は、DPEアレイ102、PL104、PS106、又はNoC108のいずれかにあるSoC100内のメモリマップドメモリ及び/又は回路構造を読み出し及び/又は書き込むことができる。
【0099】
したがって、一態様では、デバッグパケットコントローラ642は、PL104をデバッグするために使用され得る。一例では、統合ロジックアナライザは、ユーザ回路設計でPL104に実装されてもよい。統合ロジックアナライザは、各クロックサイクルのユーザ回路設計のバス、レジスタなどから信号を取り込むことができる。デバッグパケットコントローラ642は、統合ロジックアナライザからデバッグデータを受信するために統合ロジックアナライザに接続されてもよい。したがって、統合ロジックアナライザは、境界走査などの他のより遅いメカニズムを使用するのとは対照的に、デバッグパケットコントローラ642を介してホストシステムから迅速に読み取ることができる。
【0100】
別の態様では、デバッグパケットコントローラ642は、PL104におけるフリップフロップのリードバックを実行することが可能である。デバッグパケットコントローラ642は、例えば、CFU644を介してPL104から任意の構成データ又は状態データを読み取ることができる。デバッグパケットコントローラ642は、境界走査などの他のメカニズムを使用するよりもはるかに速いレートでリードバックを実行することができる。統合ロジックアナライザを使用するのとは異なり、リードバックは、そうでなければユーザ回路設計で使用するために利用可能であるPL104のリソースを消費しない。
【0101】
デバッグパケットコントローラ642によって取り込まれたデバッグデータは、パケット化されたデータストリームとして、高速接続を介してホストに出力され得る。一態様において、デバッグパケットコントローラ642は、ホストシステムへの高速接続を可能にするSoC100の1つ以上のGTに接続されたPS106に実装された高速インターフェースに接続される(
図4には示されていない)。この接続は、PS106の電力がオンであり、GTを含むPL104の電力もオンであることを必要とする。別の態様では、デバッグパケットコントローラ642は、インターコネクト616を介してMIO668にアクセスすることができる。
【0102】
別の例では、デバッグパケットコントローラ642は、JTAG672を介してホストシステムに接続されてもよい。JTAG672は低速インターフェースであるが、そのような接続は、PL104及び/又はPS106などのSoC100の他のサブシステムに依存しない。さらに、JTAG672を使用している間、デバッグパケットコントローラ642に提供される1つのパケットを使用して、複数の動作を開始することができる。例えば、JTAG672を介して受信したパケットに応答して、デバッグパケットコントローラ642がRAMを初期化する(単一のパケットに応答して書き込みなどの複数の動作が実行される)などのより複雑な動作を実行することができるように、パケットによって繰返しが指定されてもよい。別の例では、パケットは、デバッグパケットコントローラ642によって実施されるコンディショナリティを表現してもよい。
【0103】
別の例では、SoC100が展開され、デバッグ用のケーブルを物理的に接続することによってアクセスされない場合(例えば、データセンタアプリケーション)、デバッグパケットコントローラ642は、PCIe436によってアクセスされ得る(PS106内にあるか、
図4に関連して説明したCPMとして実装されているかにかかわらず)。さらに別の例では、PL104を介してデバッグパケットコントローラ642に接続することができる。例えば、イーサネットコントローラ又はUSBコントローラなどの回路は、デバッグパケットコントローラ642に接続することができるPL104に実装することができる。
【0104】
別の態様では、デバッグパケットコントローラ642は、CFU 644を介して直接PL104を構成することができる。別の態様では、デバッグパケットコントローラ642は、デバッグパケットコントローラ642がSBI630に書き込むデータを受信することによって、PL104、PS106、DPEアレイ102、又はSoC100の任意の他の部分を構成することができる。SBI630への書き込みにより、PMC処理ユニット602に割り込みが発生する。次に、PMC処理ユニット602はデータを認証し、次にPMC処理ユニット602において実行されるファームウェアの制御下で受信されたデータを使用してSoC100を構成するためのプロセスを開始することができる。
【0105】
SoC100の構成は、デバッグパケットコントローラ642がSBI 630に書き込むことによって、JTAG672がSBI630に書き込むことによって、PCIeがSBI630に書き込まれるデータを受信することによって、又はSelectMap670に書き込むことによって(SBI630に関連して説明したのと同様のプロセスを使用する)開始されてもよい。これらの例では、PMC110はスレーブとして動作する。PMC110がマスタとして動作する場合、PMC110は、外部フラッシュ、外部RAM、USBなどの特定の場所からSoC100の構成データを検索している。
【0106】
デバッグパケットコントローラ642をPMC110内に含めることは、いくつかの利点を提供する。一態様では、PMC110は常に電力オンであり、それにより、他のサブシステムの電力がオフにされる可能性があるにもかかわらず、デバッグが利用可能であることが保証される。例えば、いくつかの設計は、PS106又はPL104を使用しない場合がある。そのような場合、デバッグ機能は、SoC100のために依然として利用可能である。さらに、PMC110は、デバッグパケットコントローラ642を選択的に有効化することによって、デバッグパケットコントローラ642への安全なアクセスを提供することができる。例えば、PMC処理ユニット602は、SoC100が動作しており、(認証された)SoC100にロードされたデバイスイメージが、デバッグパケットコントローラ642がアクティブ化されるべきであることを示すときまで、デバッグパケットコントローラ642を有効化しなくてもよい。
【0107】
別の態様では、デバッグパケットコントローラ642は、PMC処理ユニット602の制御下で動作する1つ以上のセキュリティゲートによって、PMC110内の周辺回路から分離されてもよい。PMC処理ユニット602は、デバッグパケットコントローラ642を使用するために、セキュリティゲートを有効化しなければならず、例えば、信号が通過できるようにゲートを制御しなければならない。そうでない場合、デバッグパケットコントローラ642は分離されたままであり、到達不可能である。
【0108】
CFU644は、PL104の構成レジスタに提供又はロードされた構成データの構成及びリードバックを実行することができる。PMC110は、例えば、CFU644を介してPLビットストリーム(例えば、構成データ)を転送し、PL104を構成する。
【0109】
SoC100は、PMC処理ユニット602の制御下で電力管理及びリセット回路638によって制御される複数の電力ドメインを含むように実装されてもよい。電力ドメインは、RPU及びOCMを含むPS106内の低電力ドメインと、APU及び高速I/Oを含むPS106内の全電力ドメインと、NoC108及びシステム2重データレート(DDR)電力ドメインと、PL104電力ドメインとを含む。
【0110】
SoC100がPMC110の制御下で配置されている回路基板を介して制御することができる他の電力ドメインがSoC100内に作成されてもよい。これらの他の電力ドメインは、さらなるI/O電力ドメイン、バッテリ電力ドメイン、PMC電力ドメイン(例えば、PMCがそれ自体の電力ドメイン及び電力供給を有する場合)、PL RAM電力ドメイン、及びDPEアレイ電力ドメインを含み得るが、これらに限定されない。
【0111】
一態様では、SoC100は、I/Oの複数のバンクを含む。JTAG672は、I/Oの一方のバンク(
図6には示されていない)に接続することができる。これらのI/Oは固定されていてもよい。パワーオンリセット信号、SoC100が配置されている回路基板に出力されるエラー信号、及びSoC100によって受信される基準クロックもまた、その固定されたI/Oセットの一部であり得る。
【0112】
セキュアストリームスイッチ628は、構成情報、例えば画像を、SoC100にストリーミングするために使用され得る。例えば、画像(例えば、PDI)は、MIO668を介してSelectMap670にプッシュされてもよい。画像はまた、JTAG672を介して受信されてもよい。いずれの場合でも、画像はSBI630にプッシュされ、これにより、PMC処理ユニット602に対する割り込みが生成され得る。PMC処理ユニット602は、データ転送を実行するためにDMA624,626を設定することができる。セキュアストリームスイッチ628を介して動作するDMA624,626は、SBI630に含まれるバッファをアンロードし、さらなる処理のためにデータをPMC共有RAM618に格納することができる。PMC処理ユニット602は、CFU644を介してCFIにデータをさらにプッシュして、DPEアレイ102及び/又はPS106を構成するためにPL104又は別のインターフェースを構成することができる。
【0113】
一態様において、セキュアストリームスイッチ628は、クロスバー機能を実装することができる。例えば、PMC処理ユニット602は、セキュアストリームスイッチ628を構成するファームウェア(例えば、セキュアストリームスイッチ628の選択されたポートを接続する)を実行してもよい。PMC処理ユニット602はまた、セキュアストリームスイッチ628を使用してデータ転送を実現するようにDMA624,626を設定することができる。構成データが受信されると、DMA624,626は、セキュアストリームスイッチ628を介してそのようなデータをPMC共有RAM618に置くことができる。同時に、DMA624,626は、処理(例えば、認証)のために、PMC共有RAM618からセキュアストリームスイッチ628を介してセキュリティアクセラレータ632にデータを導くことができる。
【0114】
別の態様では、セキュアストリームスイッチ628は、ブロードキャスト機能を実施するために、PMC処理ユニット602によって構成され得る。その場合、セキュアストリームスイッチ628の1つのポートで受信されたデータは、セキュアストリームスイッチ628の2つ以上の異なるポートに、したがって同時に2つ以上の異なる宛先に、ブロードキャストされ(例えば、同時に送信され)てもよい。さらに別の態様では、メモリコピーを実行するために、セキュアストリームスイッチ628が使用されてもよい。DMA624及び/又は626は、特定のメモリ位置から読み出し、メモリから読み出されたデータをセキュアストリームスイッチ628に提供するように構成され得る。セキュアストリームスイッチ628は、DMA624及び/又は626にも接続された別のポートにデータを出力して、データを特定の宛先メモリ位置に書き込むように構成されてもよい。
【0115】
PMC110は、SoC100に実装された異なる電力ドメインのいずれかの電力オン及び/又は電力オフを制御することができる。任意の電力ドメインの電力オン及び/又は電力オフは、PMC110によって受信された様々な異なる事象のいずれかに応答して、PMC110によって制御され得る。これに関連して、PMC110は、例えば実行されたファームウェアによって、特定の1つ又は複数の電力ドメインに電力を投入するウェイク事象として解釈され得る様々な異なる事象のいずれかに応答することができる。ウェイク事象として解釈される事象の例は、PMC110によって受信される選択された割り込み、SoC100のI/Oを介して外部ソースから受信される信号を参照するI/O事象、RTC636によって生成される事象、ソフトウェアによるウェイク、任意の周辺IP事象によるウェイク、又はデバッガによるウェイクを含むことができるが、これらに限定されない。
【0116】
「ソフトウェアによるウェイク」という用語は、電力が切られているAPUなどのサブシステムを指す。別のサブシステム、例えばRPUで実行されているソフトウェアは、APUサブシステムに電力を投入するためにPMC110に要求を発行することができる。「デバッガによるウェイク」という用語は、具体的にはデバッガ、例えばPS106のCoreSight 446からの要求を指す。電力ドメインに電力投入する要求である要求は、デバッガ内のレジスタによって開始されてもよい。PS106、PMC110、及び/又はCPMなどのサブシステムは、SoC100内の全体的なデバッグシステムの一部であるデバッグ回路を含む。デバッガは、これらのサブシステムのうちの任意の1つ又は複数に電力投入を要求することができる。要求は、要求された電力ドメイン又は電力アイランドに電力を投入するためにPMC110又はPS106への割り込みを生成する専用レジスタへのデバッガ書き込みによって生成される。一般に、デバッガは、パケットコントローラ642を介してデバッグソフトウェアによってアクセスされ得る。
【0117】
別の例では、PMC110は、「パワーダウンモードUSB」と称される電力モードで実施され得、SoC100は、USBを介して電力オン及び/又は電力オフにされ得る。例えば、MIO668は、SoC100の外部のUSBインターフェースに接続されてもよい。MIO668は、USB信号をI/Oコントローラ622に接続することができる。このようにして、PMC110は、電力がオンのままであり、USBを介して受信されたウェイク信号を監視し得る。この例では、PMC110はUSBを介してウェイク信号を監視しているので、PMC110に含まれないUSBコントローラを含み得るPS106は、電力が切られる。PMC110の電力をオンにすることにより、PS106に実装されたUSBコントローラの電力がオフの間、USBを介して受信したウェイク信号を少なくとも監視するために、USBインターフェースがI/Oコントローラ622を使用してアクティブなままであることが可能になる。PMC110は、完全なUSB機能を提供する必要はない。むしろ、この例では、PMC110は、USBを介して特定の信号、例えばウェイク信号を検出するだけでよい。PMC110はPS106とは全く異なる電力レール上にあるため、PMC110はUSBインターフェースを介してウェイク信号を検出することができる。PMC110は、ウェイク信号の受信に応答して、PS106及び/又はSoC100の任意の他のサブシステムの電力をオンにするためのウェイク処理を実行することができる。さらに、PMC110は、MIO668に接続されたUSBコントローラを含むPS106の電力ドメイン及び/又は電力アイランドを覚醒させることによって、USBインターフェースを完全な機能に復帰させることができる。
【0118】
前述の例では、USBは説明の目的で使用された。他の例では、MIO668は、他の外部インターフェース及び/又はデバイスに接続されてもよい。I/Oコントローラ622は、インターフェースに使用される実際のコントローラが、PMC110の外部のSoC100の他の場所に配置され、電力オフの間に、そのようなインターフェースを介して及び/又はそのようなデバイスから、特定のウェイク信号を検出するように構成することができる。ウェイク信号を検出することに応じて、PMC110は、実際のコントローラが位置する特定の電力ドメインを起動することができる。
【0119】
図7は、PMC110におけるプロセッサの例示的で冗長な実施態様を示す。
図7の例では、プロセッサ612は冗長アーキテクチャで配置されている。より詳細には、
図7は、三重冗長アーキテクチャを示す。例示的な一実施態様では、プロセッサ612はハードワイヤードMicroblazeプロセッサとして実装されるが、他のタイプのプロセッサが使用されてもよい。
【0120】
各プロセッサ612は、トリプルモジュロ冗長(TMR)マネージャ702及びI/Oモジュール704に接続されている。TMRマネージャ702-1、702-2、及び702-3は相互接続されている。I/Oモジュール704-1、704-2、及び704-3も相互接続されている。投票回路710-1は、I/Oモジュール704の各々に結合される。各I/Oモジュール704は、割り込みコントローラ、タイマ、汎用I/O(GPIO)、及び/又はユニバーサル非同期受信機-送信機(UART)を含むことができる。各TMRマネージャ702は、故障検出及びエラー回復を含む、プロセッサ612のそれぞれの状態を管理することができる。
【0121】
各投票回路710は、受信した入力信号を比較することができる。各投票回路710は、受信信号の不一致を検出し、多数の結果を受け入れ、動作し続けることができる。不一致(例えば、結果が失われる)を提供する特定のプロセッサ612はリセットされ、残りの2つのプロセッサ612はロックステップで動作し続ける。3つのプロセッサ612のすべてが不一致であれば、各プロセッサ612はリセットされる。
【0122】
図7の例では、各プロセッサ612は、RAM制御回路706及びRAM制御回路708に接続される。RAM制御回路706は投票回路710に接続され、投票回路は命令RAM、例えばRAM608に接続される。RAM制御回路708は投票回路710-5に接続され、投票回路はデータRAM、例えばRAM608に接続される。図示されるように、RAM608並びに投票回路710-4及び710-5は、ECCドメインの一部である。
図7の例では、命令RAM用の各RAM制御回路706(例えば、706-1、706-2、及び706-3)は、投票回路710-3に接続される。プロセッサ612-1、612-2、及び612-3の各々は、投票器回路710-2に接続される。Advanced eXtensible Interface(AXI)4-Lite又は他の適切な制御インターフェースなどの制御インターフェースは、プロセッサ612-1、612-2、及び612-3の各々に接続される。
【0123】
図7は、プロセッサ612がRAM608へのアクセス専用であるトリプルモジュラ冗長の一例を示す。ここで、
図7は、RAM専用プロセッサ612の一例を示す。前述したように、PMC110内のROM専用プロセッサに同様のアーキテクチャが使用されてもよい。別の例では、3つより少ないプロセッサ612を使用することができ、(ロックステップにおける)1つ又は2つのプロセッサ612は、ROM606に記憶されたコードの実行専用であり、(ロックステップにおける)1つ又は2つの他のプロセッサ612は、RAM608に記憶されたファームウェアの実行専用である。
【0124】
PMC110は、SoC100内のルートオブトラストである。PMC110は、SoC100の任意の部分を構成するためにPMC110によってロードされた任意の外部コード/データが(必要に応じて)認証及び復号されることを保証することによって、信頼のチェーンを構築することができる。例えば、PMC110は、認証ブロック648及び/又はハッシュブロック650を用いて認証を行い、暗号化/復号ブロック646を用いて復号を行うことができる。一般に、構成データがPMC110によって認証及び復号されると、PMC110は構成データを、SoC100の適切なサブシステム及び/又は回路ブロックの適切な構成レジスタにロードすることができる。
【0125】
図8は、SoC100のさらなる構造的及び機能的態様を示す。
図8の例では、SoC100は、セキュリティ機能を実装することができる様々な追加の回路を含む。これらの追加の回路は、SoC100内の異なる独立区画を作成し、異なる区画間のファイアウォールを実装するために使用され得る。各区画は、その中でそれ自体のアプリケーションを実行することができる。
図8の例では、複数のシステム管理識別子(SMID)回路802及びプログラマブル保護回路(PPC)818が含まれる。
【0126】
プロセッサ612、RPU402、APU406、他のマスタ808、及びI/Oデバイス812は、SMID回路802を介してローカルインターコネクト816に接続される。I/Oデバイス812は、SMMU814を介してローカルインターコネクト816にさらに接続される。ローカルインターコネクト816は、NoC108に接続される。PL104及び/又はDPEアレイ102は、NoC108に接続される。RPU402は、メモリ管理ユニット(MMU)804-1及びキャッシュ806を含む。APU406は、MMU804-2及びキャッシュ810を含む。
【0127】
各SMID回路802は、特定のSMIDを使用するようにプログラム可能である。構成中、PMC110、例えばプロセッサ612は、使用されている様々なSMID回路802又は少なくともそれらのSMID回路802の各々の構成レジスタにSMIDを割り当てて書き込むことができる。様々なコンポーネント、例えば、プロセッサ612、RPU402、APU406、他のマスタ808、I/Oデバイス812、PL104、及び/又はDPEアレイ102の各々のSMID回路802は、それぞれのコンポーネントによって開始されたトランザクションにSMIDを添付又は挿入することができる。したがって、プロセッサ612から生じる各トランザクションは、例えば、PMC110によって割り当てられたSMID回路802-2によって挿入されたトランザクションにSMIDを含む。同様に、RPU402から生じる各トランザクションは、PMC110によって割り当てられたSMID回路802-2によって挿入されたSMIDを有する。このようにして、SoC100内の様々なコンポーネントからのトランザクションのソースは、そのトランザクション内の特定のSMIDによって識別され得る。SMID回路802に割り当てられたSMIDは、SoC100にわたって一意であり得る。
【0128】
PPC818は、SoC100内のスレーブ回路へのアクセスを保護することができる。PPC818の各々は、回路ブロックに入る各トランザクションの特定のSMIDをチェックすることができる。各PPC818は、例えば、それぞれのPPC818によって保持されている許可されたSMIDのリスト上で、トランザクションのSMIDが許可されたSMIDであるかどうかをチェックすることができる。各PPC818はまた、トランザクションによってアクセスされるアドレス又はアドレス範囲が、SMIDがアクセスを許可されているアドレス範囲であることをチェックすることができる。これに関連して、PPC818は、(SMIDに基づく)許可された回路ブロックのみが他の回路ブロックにアクセスすることができ、さらに特定のSMIDが許可されているアドレス範囲にのみアクセスすることができることを保証することによって、アクセス特権を実施することができる。
【0129】
一態様では、PPC818は、回路ブロックの構成レジスタを保護するように構成された第1のタイプの回路を含む。そのようなPPC818は、許可されたSMIDのみが構成レジスタにアクセスすることを許可することができ、それぞれの許可されたSMIDについて許可されたアドレスのリスト上で指定されたアドレスを有する特定の構成レジスタのみを許可することができる。そのようなPPC818の例には、PPC818-1、818-2、818-3、及び818-5が含まれるが、これらに限定されない。これらのPPC818は、きめ細かい保護を提供する。PPC818はまた、メモリを保護するように構成された第2のタイプを含むことができる。第2のタイプのPPC818は、メモリ保護及び分離を提供する。そのようなPPC818の例には、818-4及び818-6が含まれるが、これらに限定されない。
【0130】
SMID回路802及びPPC818は、PMC110により構成される。例えば、PMC110は、所与の設計(例えば、SoC100にロードされたPDIごと)によって使用される各SMID回路802及び各PPC818内の構成レジスタに書き込むことができる。PMC110は、例えば、SMIDをSoC100の様々な回路コンポーネントに割り当て、それに応じてSMID回路802を構成する。PMC110はさらに、各SMIDがアクセスを許可される許可されたSMID及び/又は許可されたアドレス及び/又はアドレス範囲のリストをPPC818の構成レジスタに書き込む。これらの動作により、少なくとも部分的に、互いに分離されたSoC100の2つ以上の区画を作成することができる。
【0131】
これに関して、PPC818-1は、許可されたソースからの許可されたトランザクションのみがPMCスレーブ820にアクセスすることを可能にすることができる。PPC818-2は、許可されたソースからの許可されたトランザクションのみがNPI210にアクセスすることを可能にすることができる。PPC818-3は、許可されたソースからの許可されたトランザクションのみがRPUスレーブ822にアクセスすることを可能にすることができる。PPC818-4は、許可されたソースからの許可されたトランザクションのみがOCM530にアクセスすることを可能にすることができる。PPC818-5は、許可されたソースからの許可されたトランザクションのみがAPUスレーブ826にアクセスすることを可能にすることができる。PPC818-6は、許可されたソースからの許可されたトランザクションのみがDDRメモリコントローラ512にアクセスすることを可能にすることができる。
【0132】
図8の例では、例示の目的でSMID回路802及びPPC818の特定の位置が示されている。SMID回路802及びPPC818は、インターフェースの一部としての回路ブロック内、回路ブロック間の信号経路内などに実装されてもよい。SMID回路802及びPPC818は、ロジック的等価性を提供する異なる物理的位置に実装されてもよい。例えば、複数のブロックは、NoC108などの広域経路に結合する集約された中継器を有することができる。その場合、集約された中継器は、中継器を介して集約される個々の回路ブロックの各々ではなく、SMID回路802及び/又はPPC818を含むことができる。これは、NoC108の入口点と出口点の両方に当てはまる場合がある。
【0133】
図8の例では、ローカルインターコネクト816は、複数のロジック機能をマージすることができる1つの物理回路ブロックを表すことができる。別の例では、NoC108は、1つ以上のSMID結合点を含むように実装され得る。言い換えれば、SMID回路802(例えば、802-6及び802-7)は、PL104及び/又はDPEアレイ102内ではなく、NoC108内に(例えばSMID回路802-8及び802-9として)実装されてもよい。SMID回路802は、入口点、出口点、又は入口点と出口点との組合せでNoC108に実装されてもよい。
【0134】
図8の例では、ローカルインターコネクト816への様々な接続は、1つのゲートウェイを介してNoC108に出入りする。NoC108の各ポートは、1つのロジックソースから、又は複数のロジックソースからトランザクションを受信することができる。同様に、NoC108の各ポートは、1つの物理ソースから、又は複数の物理ソースからトランザクションを受信することができる。物理ソースは、特定のサブシステム内の回路ブロックであり得るが、異なる物理ソースは、異なるサブシステム内の異なる回路ブロックである。
【0135】
例えば、プロセッサ612、RPU402、及びAPU406は各々SMID回路802を有する。プロセッサ612、RPU402、及びAPU406の各々は、PMC110によって実行された構成に基づいて、それに割り当てられた固有のSMIDを有するトランザクションを開始することができる。トランザクションは、それぞれのSMIDを宛先にしてNoC108に流れる。同様に、PL104又はDPEアレイ102からのトランザクションはそれぞれ、場合によっては、SMID回路802-6又はSMID回路802-7によって挿入されたSMIDを有する。PL104及びDPEアレイ102からのトランザクションは、SMIDを宛先まで運ぶ。
【0136】
例示的な例として、PL104に実装された回路ブロックがトランザクションA、B、及びCを開始する場合を考える。トランザクションA、B、及びCの各々は、SMID回路802-6(又はNoC108に実装されている場合はSMID回路802-8)によって割り当てられたSMIDを搬送する。トランザクションAがDDRメモリコントローラ512に向けられている場合、NoC108は、入口経路及び出口経路の両方として機能する。PPC818-6は、PL104内の回路ブロックが、DDRメモリコントローラ512にアクセスする権利を有し(例えば、SMIDに基づく)、且つトランザクションによって指定されたメモリの特定のアドレスにアクセスする権利を有することをチェックすることができる。PPC818-6は、トランザクションAのソースが適切な権利を有していない場合、トランザクションAを拒否することができる。
【0137】
トランザクションBはPMCスレーブ820に向けられてもよく、トランザクションCはRPUスレーブ822に向けられる。トランザクションBの場合、PPC818-1は、トランザクションBのソース(SMIDに基づく)がトランザクションによって指定された特定のPMCスレーブ820にアクセスすることを許可されているか否かをチェックする。トランザクションCの場合、PPC818-3は、トランザクションCのソース(SMIDに基づく)がトランザクションによって指定された特定のRPUスレーブ822にアクセスすることを許可されているか否かをチェックする。各PPC818-1及びPPC818-3は、SMID及びトランザクションの特定のターゲット(例えば、特定のPMCスレーブ820又は特定のRPUスレーブ822)に基づいて、それぞれのトランザクションを許可するか、又はそれぞれのトランザクションを拒否する。したがって、SMIDアタッチメント及び出口チェック(例えば、PPC818によって実行されるように)のロジック機能は、SoC100内に物理的に分散されてもよい。
【0138】
別の例では、I/Oデバイス812は、ブートイメージが第1のPMCスレーブ820にロードされる外部フラッシュデバイスであってもよい。この例では、PMCスレーブ820は、ブートコードが格納されるメモリなどのメモリスレーブ、又はPL104及び/又はDPEアレイ102を構成するためのレジスタセットなどのSoC100内の他のブロックをプログラム又は構成するためのレジスタであってもよい。別の例では、ブートイメージは、プロセッサ612がブートするプログラムコードであってもよい。この例では、様々なゲートウェイ、例えば、PPC818及びSMID回路802は、ブートイメージが特定のPMCスレーブ820にロードされることのみを可能にするようにPMC110によって構成されている。したがって、I/Oデバイス812は、PPC818-1によって規制されるように、指定された、例えば第1のPMCスレーブ820に画像ファイルのコンテンツを書き込むことのみが許可される。I/Oデバイス812は、他のPMCスレーブ820に対する読み出し又は書き込みを許可されない。
【0139】
例を続けると、プロセッサ612は、認証方式(本明細書でより詳細に説明する)を介して、ブートイメージをロードすることを許可される。例えば、PPC818-1は、SMID回路802-1に対応するSMIDに基づいて、プロセッサ612がPMCスレーブ820を読み取ることを許可するように構成されてもよく、PMCスレーブには(書き込みアクセスのみを有した)I/Oデバイス812によってブートイメージが格納されている。プロセッサ612は、ブートイメージを読み出し、ブートイメージを第2のPMCスレーブ820、例えばプロセッサ612用のワーキングメモリに復号することしかできない。次いで、プロセッサ612は、第2のPMCスレーブ820に格納された復号されたブートイメージを使用して、例えば第3のPMCスレーブ820に書き込むことによって、他の構成レジスタをプログラムしてもよい。第3のPMCスレーブ820は、PL104用の構成レジスタ又は他の回路ブロック用の構成レジスタであってもよい。
【0140】
別の態様では、RPU402は、PMC110及び/又はPS106のその他のプロセッサ(例えば、APU406)とは別のローカルインターコネクトを有し得る。リアルタイム動作に適したRPU402は、前述した低電力ドメインで動作することができ、したがって、PMC110及び/又はAPU406のローカルインターコネクトとは別個のローカルインターコネクトを有することができる。これにより、RPU402は、異なる事象、例えば、RPU402によって受信及び/又は処理され得るリアルタイムのセンサデータに迅速に反応することができる。
【0141】
図9は、PPC818の例示的な実施態様を示す。PPC818は、SMIDチェック回路902、アドレス範囲チェック回路904、及び構成レジスタ906を含む。
【0142】
SMIDチェック回路902は、受信したトランザクションのSMIDをチェックすることができる。SMIDチェック回路902は、受信したトランザクション内のSMIDを判定し、SMIDを構成レジスタ906で指定された許可されたSMIDのリストと比較する。アドレス範囲チェック回路904は、トランザクションによって指定された宛先内でアクセスされるべき特定のアドレスを決定する。アドレス範囲チェック回路904は、受信したトランザクションの指定されたアドレスが、構成レジスタ906ごとにトランザクションのSMIDに対して許可されたアドレスのセット又は範囲内にあるかどうかをチェックする。
【0143】
PPC818は、SMIDチェック回路902及びアドレス範囲チェック回路904によって実行されるチェックを満たさないトランザクションを禁止する(例えば、拒絶する)ことができる。PPC818はさらに、SMIDチェック回路902及び/又はアドレス範囲チェック回路904によって実行されたチェックに基づいて、受信したトランザクションが拒否されたと判定したことに応答して、割り込み信号を生成することができる。
【0144】
図10はPMC110の例示的な特徴を示す。
図10の例では、PMC110は、SoC100内の様々なサブシステムの電力オン及び電力オフを制御することができる。
図10の例では、PMC110はブートデバイス1002に接続されている。ブートデバイス1002は、オフチップ又はSoC100の外部に配置されたメモリであってもよい。ブートデバイス1002は、SoC100と同じ回路基板上に配置されてもよい。一例では、ブートデバイス1002はフラッシュメモリである。PMC110は、
図6に関連して説明したように、MIO668及び適切なI/Oコントローラ622(例えば、フラッシュメモリコントローラ)を介してブートデバイス1002に結合することができる。
【0145】
PMC110は、SoC100の主な電力マネージャとして動作する。例えば、PMC110は、SoC100にわたって異なる電力モード(例えば、低電力モード又は電力オフ及び電力オン)の実装を制御することができるファームウェアを実行する。PMC110は、SoC100内の電力レールの管理も担当する。一態様では、SoC100における各異なる電力ドメインは、PMC110によって制御されるそれ自体の電力レールのセットに接続され得る。本開示内で、SoC100に関して使用される「電力ドメイン」という用語は、同じ又は共通の電力レールのセットによって給電されるSoC100のコンポーネントのセットを意味する。一態様では、各異なるサブシステムは、電力ドメインの例である。したがって、SoC100内の電力ドメインは、PL104、PS106、NoC108、及びハードワイヤード回路ブロック112の選択されたものを含む。説明したように、PS106は、2つの異なる電力ドメインを含み得る。
【0146】
図10の例では、PMC110はまた、1つ以上の電圧レギュレータ1004に接続されている。電圧レギュレータ1004は、SoC100の外部にあり、SoC100と同じ回路基板上に配置されてもよい。一態様では、PMC110は、MIO668、及びI2C、PMバス又は他の適切なI/Oコントローラなどの適切なI/Oコントローラ622を介して電圧レギュレータ1004に接続される。PMC110、例えばPMC処理ユニット602は、電圧レギュレータ1004と通信し、SoC100の任意の電力ドメインをオン又はオフにするように電圧レギュレータ1004によって制御されるSoC100内の様々な電力レール(例えば、電源線)のいずれかをオン又はオフにする命令を送信することができる。さらに、PMC110は、SoC100内の特定の電力レールに特定の電圧を供給するように電圧レギュレータ1004に命令することができる。このように、PMC110は、他の各電力ドメインとは独立して、任意の電力ドメインを電力オン又は電力オフにすることができる。
【0147】
一態様では、PMC110はPS106に直接接続される。より詳細には、PMC110は、PSマネージャ444に直接接続されてもよい。PSマネージャ444は、プログラムコードを実行することができるハードワイヤードプロセッサとして実装されてもよい。PS106のブートプロセスの一部として、PMC110は、PSマネージャ444のファームウェアにアクセスし、ファームウェアを認証し、ファームウェアをPSマネージャ444に提供することができる。PMC110は、例えば、PSマネージャ444による実行のためにファームウェアをPS106のRAMに置くことができる。
【0148】
一般に、PS106は、様々な異なる回路リソースを含む。PMC110はPS106を制御することができるが、PMC110はPS106に含まれる多くの異なるコンポーネントの制御に関する詳細を知る必要はない。しかしながら、PSマネージャ444は、PS106内の様々なコンポーネントを詳細に制御することができる。例えば、PMC110は、第1の電力モードから第2の異なる電力モードに遷移するようにPS106に命令する命令をPSマネージャ444に送信してもよい。この遷移は、PS106におけるいくつかの電力アイランドをオンにすることと、PS106における他の電力アイランドをオフにすることとを含み得る。一態様では、PSマネージャ444は、PMC110からの命令に従ってPS106における電力アイランドを電力オン及び/又は電力オフにするようにPS106におけるヘッダセル(例えば、電力スイッチ)を制御することができる。本明細書で使用される場合、「電力アイランド」という用語は、SoC100内にある電力スイッチによってオン又はオフにされる同じ電力ドメインの一部である1つ以上のコンポーネントを意味する。したがって、電力ドメインは、電力ドメイン用の電力レールが給電されていると仮定して給電され得る複数の電力アイランドを含み得る。電力アイランドは、互いに独立して電力オフにされてもよく、各々は、SoC100上にあるスイッチの制御下にある。PSマネージャ444は、PS106内及び/又は他の電力ドメインの電力アイランドに対応するこれらのスイッチを制御することができる。
【0149】
例示的且つ非限定的な例として、PS106の第1の電力ドメイン内又は第2の電力ドメイン内の各周辺機器は、個々のアイランドであってもよい。PMC110は、オフチップである電圧レギュレータ1004との通信を通じて電力ドメインの電力オン及びオフを制御するが、PMC110は、PSマネージャ444及び/又は他のドメイン内の他の電力マネージャに命令を与えることによって、電力アイランドの電力オン及びオフを制御することができる。
【0150】
PSマネージャ444は、PMC110から受信した命令に応答して、PS106内の個々の電力ドメイン及び/又は電力アイランドごとにより詳細な電力オン及び電力オフ手順を実行することができる。例えば、電力アイランド(又は電力ドメイン)内の各コンポーネントが同時にオンにされると、回路に損傷を与え得るSoC100に大きな電流の突入が発生する可能性がある。PSマネージャ444は、電流の大きなサージを回避するために、各個々の電力アイランド及び/又は電力ドメインのコンポーネントの電力オン及び電力オフを順序付けることができる。PMC110は、PSマネージャ444によって実行される詳細な手順を認識する必要はない。
【0151】
特定の実施態様では、異なる電力ドメインの各々は、電力分離回路1006、1008、1010、及び1012を有する。電力分離回路は、1つの電力ドメインをオフにする一方で、他の電力ドメインをオンのままにすることを可能にする。PMC110は、様々な電力ドメインの独立した電力オン及びオフを容易にするために、電力分離回路1006、1008、1010、及び1012を制御(例えば、有効化及び無効化)することができる。一態様では、電力分離回路は、SoC100内の電力ドメインのための電力レール間に存在するクランプ及びレベルシフタを含むように実装される。
【0152】
図10の例には、ローカル電力マネージャ1014が含まれる。
図10の例は、SoC100に実装された1つ以上の他の遠隔回路ブロック(例えば、ハードワイヤード回路ブロック112)を管理及び/又は制御するために1つ以上のローカル電力マネージャが含まれ得る実装形態を示す。ローカル電力マネージャ1014は、例えば、これらの他の回路ブロック内の電力アイランドを制御することができる。例示的且つ非限定的な例として、VCU回路ブロックは、それ自体の電力ドメインであってもよく、複数の異なる電力アイランドを含んでもよい。VCU回路ブロック内のすべてのコンポーネントが常に必要とされるわけではない。ローカル電力マネージャ1014は、VCU回路ブロック内の電力アイランドの電力オン及び電力オフ(例えば、電力オン及び電力オフの様々な電力アイランド内のコンポーネントのシーケンス)を管理することができる。ローカル電力マネージャ1014は、例えば(PSマネージャ444のように)、管理される特定の回路ブロック内の電力アイランドのヘッダセル(スイッチ)のアクティブ化又は非アクティブ化を順序付けることができる。
【0153】
DPEアレイ102は、パワーオンリセット(POR)回路1016を含むことができる。POR1016は、電力投入されるとDPEアレイ102を初期化することができる。PMC110は、POR1016の動作を制御することができる。
【0154】
図10の例では、PMC110は、システムモニタ(SysMon)656を含む。システムモニタ656は、SoC100の内部レールの電圧を監視することができる。したがって、PMC110は、特定のレールに特定の電圧で電力を供給するために電圧レギュレータ1004に命令を提供することができるが、PMC110は、システムモニタ656を介して、SoC100内のレールの電圧を監視して、SoC100内で測定されるレールの電圧が、PMC110から電圧レギュレータ1004に提供される命令に基づいて予想される電圧に適合することを確実にする(例えば検証する)ことができる。一態様では、PMC110は、電力ドメインに対応するレールの電圧が、システムモニタ656によって決定される期待される電圧に達するまで、電力ドメインが電力オンであると見なさない。例えば、PMC110は、システムモニタ656によって決定されたレールの電圧が、電力ドメインのための関連する分離回路に非活性化を命令する前に、電力ドメインのための目標電圧に達することを検証する。システムモニタ656はまた、温度に関して同じ又は同様の検証を実行することができる。システムモニタ656は、例えば、SoC100にわたる(例えば、異なるサブシステムにわたる)1つ以上の位置で温度を測定し、測定された温度を、各それぞれの位置における予想温度と比較してもよい。明らかに、ある位置での予想温度は、別の位置での予想温度とは異なり得る。
【0155】
図11は、SoC100をブートする例示的な方法1100を示す。一般に、方法1100は、2つの異なる段階を含む。段階1は、ブロック1102、1104、及び1106を含む。段階1は、事前ファームウェアと見なされる動作を含む。より詳細には、段階1で実行される動作は、ハードワイヤード回路若しくはロジックによって実行される動作であるか、又はBootROMと呼ばれるPMC処理ユニット602のROM606に格納されたプログラムコードによって定義される動作である。BootROMは、ROM606へのアクセス専用のプロセッサ612(以降「ROM PMCプロセッサ」)によって実行可能である。段階2で行われる動作はファームウェア動作である。段階2で実行される動作は、RAM608専用のプロセッサ612(以降「RAM PMCプロセッサ」)による実行のためにSoC100の外部のソースからRAM608にロードされるファームウェアによって定義される。
【0156】
ブロック1102において、PMC110が電力投入される。例えば、PMC110は、PMC110に電力を投入することができるロジックを含む。ブロック1104において、PMC110は、SoC100の外部のブートデバイスをセットアップする。例えば、ROM PMCプロセッサは、ブートデバイスにアクセスするためにROM606からBootROMの実行を開始することができる。ブロック1106において、ROM PMCプロセッサは、ブートデバイスに記憶されたファームウェアをロードする。ROM PMCプロセッサは、ブートデバイスからロードされたファームウェアを認証することができる。
図6に関連して一般的に説明したように、ROM PMCプロセッサは、BootROMを実行する際に、認証及び/又は復号の目的でセキュリティアクセラレータ632内の1つ以上のブロックにファームウェアをルーティングすることができる。さらに、ROM PMCプロセッサは、ファームウェアをPMC110のRAMにロードすることができる。ファームウェアは、PDI内に含まれてもよい。
【0157】
段階2は、ブロック1108(ブロック1110、1112、及び1114を含む)、1116、及び1118を含む。段階2において、PMC110は、SoC100内に初期システムを構築し始める。例えば、RAM PMCプロセッサは、RAM608にロードされたファームウェアの実行を開始する。ブロック1108において、RAM PMCプロセッサは、SoC100の残りの部分の電力投入及び構成をシーケンシングすることができる。RAM PMCプロセッサは、ファームウェアの実行に基づいて電力投入をシーケンシングする。したがって、SoC100にロードされたファームウェアは、段階1中に実行される動作を超えてSoC100の電力投入及び構成のシーケンスを定義する。
【0158】
ブロック1110、1112、及び1114は、ブロック1108の一部として実行され得る例示的な動作を示す。ブロック1110において、例えば、RAM PMCプロセッサは、SoC内の電源レールを監視することができる。ブロック1112において、RAM PMCプロセッサは、SoC100が配置される回路基板上の電力レギュレータを制御することができる。ブロック1114において、RAM PMCプロセッサは、NoC108のプログラミングデータ、PL104の構成ビットストリーム、DDRC(DDRコントローラ)用のファームウェア、初期化データ、PSマネージャファームウェア、及びPS106用の第1段階ブートローダ(FSBL)、及びDPEアレイ102の構成/プログラミングデータを含み得るPDIをロード、認証及び/又は復号することができる。
【0159】
ブロック1116において、RAM PMCプロセッサは、検出された可能性のある任意のエラーを処理し報告する。ブロック1118において、RAM PMCプロセッサは、SoC100内のデバッグインフラストラクチャを初期化し、有効化する。
【0160】
方法1100は、PMC110がBootROM及び/又はハードウェア(例えば、専用ロジック)を利用して、ファームウェアのロード前にSoC100の特定の部分を立ち上げるプロセスを示す。このブートモード中のSoC100の動作の変動は、SoC100及び/又はeヒューズへのI/Oを介して制御することができる。初期ファームウェア実行は、ロードされた特定のPDIごとにSoC100内の初期システムをセットアップする。さらに、ファームウェアの実行は、将来のサービス要求に応答するためのPMC110を準備する。PMC110は、ファームウェアを実行する際に、SoC100及び/又はSoC100のサブシステムの構成、SoC100及び/又はSoC100のサブシステムの部分的な再構成、電力管理、エラー処理、及びシステムチェックなどの動作も実行する。
【0161】
図12は、SoC100をブートする別の例示的な方法1200を示す。方法1200は、本明細書に記載された様々なサブシステムを利用するSoC100内のアプリケーションを実装するために実行され得る。
【0162】
ブロック1202において、PMC110内のハードワイヤードロジックは、パワーオンリセットシーケンスを実行する。一態様では、ハードワイヤードロジックは、
図6に関連して説明したPOR回路666である。パワーオンリセットシーケンスとは、SoC100の電力投入後に行われる初期動作をいう。一般に、SoC100によって実行されるパワーオンリセットシーケンスは、ROM 606内のBootROMコードを実行するためにROM PMCプロセッサに制御を渡す前に初期ステップを実行する。パワーオンリセットシーケンスは、電圧供給部が電力投入されたかどうかを検出し、パワーオンリセットアサート停止を認定するアナログコンポーネントを含むことができる。さらに、SoC100のブートモードを指定するブートモードピンが取得されてもよい。Eヒューズビットは、eヒューズコントローラ660によって読み取られ、キャッシュされ得る。PMC110に対して状態クリア動作が行われる(例えばゼロ化)。一態様において、POR回路666は、ROM606に記憶されたBootROMを認証することができる。BootROMは、例えば、PMC110のハッシュ回路ブロック650を用いて認証されてもよい。パワーオンリセットの終了により、PMC110の残りの部分がリセットから解放される。
【0163】
ブロック1204において、POR回路666は、エラー状態が発生したかどうかを判定する。エラー状態が発生した場合、方法1200はブロック1206に進み、エラーピンがアサートされ、SoC100のブートプロセスが停止する。
【0164】
ブロック1208において、PMC110はBootROM実行ステージを実行する。BootROM実行ステージは、ROM PMCプロセッサによって実行されてもよい。一態様では、BootROM実行ステージは、割り込み不可能である。例えば、ブロック1208において、ROM PMCプロセッサはPMC共有RAM618をクリアする。ROM PMCプロセッサは、システムモニタ656が(例えば、改ざんの継続的な検出のために継続的に)SoC100内の電圧をチェックすることができるように、システムモニタ656を初期化する。ROM PMCプロセッサは、PLL664を初期化し、PLL664がロックを達成することを保証する。ROM PMCプロセッサは、PMC共有RAM618をテストする。ROM PMCプロセッサはさらに、eヒューズコントローラ660によって読み取られたeヒューズデータに基づいて、eヒューズによって無効化された電力アイランドを無効化(パワーダウン)する。ROM PMCプロセッサはさらに、適用可能であれば、PS106及びNoC108を設定することができる。
【0165】
ブロック1210において、ROM PMCプロセッサは、ブロック1208のBootROM実行ステージ中に実行された動作のいずれかについてエラー状態が発生したか否かを判定する。エラー状態が発生した場合、方法1200はブロック1212に進み、エラーがエラーアグリゲーションロジックに取り込まれ、エラーピンがアサートされ、SoC100のブートは継続する。
【0166】
ブロック1214において、ROM PMCプロセッサは、ブートヘッダ/認証証明処理を実行する。一般に、ROM PMCプロセッサは、BootROMコードを実行し、ブートヘッダをブートソースからロードし、ブートヘッダを認証する。一般に、ブートヘッダは、PMC110によって実行されるべき後続の動作を指定する。動作は、RAM PMCプロセッサ上で実行されるべきPDIからPLMをロードすることを含むことができ、これには、PL104の構成及び/又はDPEアレイ102の構成が任意選択的に続き得る。PLMは、セキュアヘッダと、ファームウェアコードの1つ以上のブロックとを含む。
【0167】
ブロック1214の一部として、ROM PMCプロセッサは、PDIからのブートヘッダ及び認証証明を処理することができる。ROM PMCプロセッサは、BootROMを実行する際に、必要に応じて認証及び復号し、PLM又はPMCファームウェアをPMC共有RAM618にロードすることができる。例えば、ROM PMCプロセッサは、ブートヘッダと認証証明を外部ブートデバイスからPMC共有RAM618にロードする。ROM PMCプロセッサは、ブートヘッダに基づいてPDIの残りの部分がどのように認証され、必要に応じて復号され、解釈されるかを判定することができる。ROM PMCプロセッサは、ブートヘッダから、RAM PMCプロセッサによって実行されるべきPLMをロードし、随意によりPL104及び/又はDPEアレイ102を構成することなどの、実行されるべき後続の動作を決定する。ブートヘッダは、デバイス鍵及びPUF暗号化された黒鍵と共に使用される初期化ベクトルを含むことができる。認証証明は、一次公開鍵(例えばECDSA/RSA一次公開鍵)及び二次公開鍵を含み得る。一次公開鍵は、二次公開鍵を認証するために使用され、認証の後続の段階に使用される。
【0168】
例えば、SoC100のeヒューズは、公開鍵のハッシュ値を記憶することができる。ROM PMCプロセッサは、セキュリティアクセラレータ632を使用して、ブートヘッダから取得される公開鍵のハッシュを生成し、生成されたハッシュ値をeヒューズに記憶されたハッシュ値と比較することができる。記載されたように認証された公開鍵を用いて、ROM PMCプロセッサは、公開鍵が変更されるまで、すべての検証動作で使用するために、公開鍵をPMC110内の鍵レジスタに記憶してもよい。
【0169】
ブロック1216において、ROM PMCプロセッサは、エラー状態が発生したか否かを判定する。エラー状態が発生した場合、方法1200はブロック1218に進み、SoC100がロックダウンされ、例えば、ブートが中断される。一態様では、SoC100の「ロックダウン状態」は、PMC110が、エラーの検出に応答して、すべてのサブシステム(例えば、DPEアレイ102、PL104、PS106、NoC108、及びPMC110内)にわたってSoC100内のすべてのデータ(例えば、メモリ内容)及び構成データをクリア又は消去する状態である。例示の目的のために、ブロック1216及び1222に関連して記載されたエラーは、SoC100のロックダウン状態を開始する「改ざん事象」と考えられ得る。PMC110によって検出されたときにPMC110にロックダウン状態又は他のエラー回復手順を開始させる改ざん事象と見なされ得る事象の他の例には、範囲外の温度(例えば、規定の温度範囲よりも高い又は低い)範囲外の電圧(例えば、規定の電圧範囲よりも高い又は低い)、別の回路ブロック及び/又はシステムによる回路ブロックの不正アクセス、並びにSoC100にロードされた構成データ及び/又はプログラムコードの認証の欠如が含まれるが、これらに限定されない。前述の改ざん事象例のいずれかは、電力オン若しくはブート中及び/又はSoC100の動作中のその後の任意の時点で検出されてもよい。
【0170】
ブロック1220において、ROM PMCプロセッサは、BootROMを実行する際に、認証を実行することができる。ROM PMCプロセッサは、例えば、PDIのプログラミング区画をロード、認証、及び復号することができる。一例では、異なるサブシステム(例えば、DPEアレイ102、PL104、及び/又はPS106)の構成情報は、同じPDI内の異なる区画として指定されてもよい。その場合、異なるサブシステムは、SoC100のブリングアップの一部として次々に構成され得る。別の例では、異なるサブシステムの構成情報は、異なるPDIで指定され得る。その場合、サブシステムは、オンデマンドで必要に応じて構成することができる。
【0171】
本明細書に記載された本発明の構成によれば、PDI区画を処理することは、区画が復号され使用される前に、本明細書に記載された技術(例えば、セキュリティアクセラレータ632の1つ)を使用して区画が認証されることを必要とする。したがって、認証されている構成画像は、最初にSoC100内に、例えば記載されているように処理するためにPMC110内に、格納されなければならない。区画は、認証された後にSoC100の部分をプログラムするためにのみ使用され得る。
【0172】
ブロック1222において、ROM PMCプロセッサは、エラー状態が発生したか否かを判定する。エラー状態が発生した場合、方法1200はブロック1224に進み、SoC100がロックダウンされ、例えば、ブートが中断される。
【0173】
ブロック1226において、ROM PMCプロセッサはPLMをロードする。PLMは、ファームウェアコードの1つ以上のブロックが続くセキュアヘッダを含み得る。e-fuse及び/又はブートヘッダにおいてそのように構成されている場合、PLM全体は、ハッシュブロック650(例えば、ECDSA/RSA)を使用して認証され得る。認証が合格した場合、セキュアヘッダは、復号回路及びデバイス鍵を使用して復号される。セキュアヘッダは、PLMの次のブロック又はPLMの残りを復号するためのAES鍵を含む。
【0174】
PLMがロードされ、ROM PMCプロセッサによって認証されると、実行はROM PMCプロセッサからRAM PMCプロセッサに移る。RAM PMCプロセッサは、PS106用のPSブートローダをロードすること、NoC108、DDRコントローラ512、GT528、DPEアレイ102などのSoC100ブロックをNPI210を介して構成すること、及び/又は構成ビットストリーム(例えば、全体的又は部分的)をその構成のためにPL104にロードすることなどの構成タスクを実行することができる。
【0175】
説明したように、ファームウェアを実行するRAM PMCプロセッサは、ファームウェアに含まれる命令に応じて様々な動作のいずれかを実行することができる。例えば、ブロック1228において、RAM PMCプロセッサは、PSブートローダステージを実行することができる。RAM PMCプロセッサは、PSプロセッサによる実行のために、PSブートローダを外部ソースからロードし、PSブートローダを認証し、PSブートローダをPS106内のOCM530にコピーすることができる。OCM530にコピーされると、RAM PMCプロセッサは、PS106をリセットから解放する。PS106は、PSブートローダを実行してもよい。
【0176】
ブロック1230において、RAM PMCプロセッサは、ファームウェアを実行する際に、PL104を構成することができる。例えば、RAM PMCプロセッサは、外部ソースから構成ビットストリームをロードし、構成ビットストリームを認証し、構成ビットストリームをPL104に提供することができる(例えば、構成ビットストリームをPL104の構成レジスタに書き込む)。
【0177】
ブロック1232において、RAM PMCプロセッサは、DPEアレイ102を構成することができる。RAM PMCプロセッサは、外部ソースからDPEアレイプログラミングセグメント(例えば、DPEアレイの構成画像)をロードし、DPEアレイプログラミングセグメントを認証し、NPI210及びNoC108を介してDPEプログラミングセグメントを適切な宛先(DPEアレイ102内の特定のDPE302)に書き込むことができる。
【0178】
ブロック1234において、RAM PMCプロセッサは、1つ以上の回路ブロックを構成することができる。回路ブロックは、内部の構成レジスタのプログラミングなどの構成データを必要とするハードワイヤード回路ブロック又はPL104に実装された回路ブロックであってもよい。RAM PMCプロセッサは、外部ソースからレジスタプログラミングセグメントをロードし、レジスタプログラミングを認証し、NPI210及びNoC108を介して宛先にレジスタプログラミングを書き込むことができる。例示的且つ非限定的な例として、RAM PMCプロセッサは、例えば、メモリコントローラ、暗号回路ブロック、ビデオコーデック、DAC、ADCなどのハードワイヤード回路ブロックにレジスタデータを書き込むことができる。別の態様では、RAM PMCプロセッサは、レジスタデータをSMID回路ブロック802及び/又はPPC818に書き込むこともできる。
【0179】
ブロック1236において、RAM PMCプロセッサは、NoC108を構成することができる。例示的且つ非限定的な例として、RAM PMCプロセッサは、エンドポイント回路を接続するデータ経路を確立するようにNoC108を構成することができる。ブロック1238において、RAM PMCプロセッサは、任意のメモリを構成することができる。例えば、RAM PMCプロセッサは、任意のメモリコントローラ及び/又はSoC100によってアクセス可能な外部メモリとのインターフェースに構成データを書き込むことができる。
【0180】
RAM PMCプロセッサによってブロック1226でPLMをロードする結果として実行される様々な動作は、互いに独立していてもしていなくてもよい。場合によっては、動作は同期して実行されてもよい。例えば、明示的に説明されていないが、NPI210用の画像は、PL104及び/又はDPEアレイ102を構成することができる前にロードされてもよい。ブロック1228~1238の特定の順序は、本発明の構成を限定することを意図するものではない。
【0181】
図12は、PMC110がPS106、PL104、DPEアレイ102、及び選択された他の回路ブロックの構成を担当することを示している。1つ以上の他の実施形態では、例えばブートヘッダに応じて、PMC110は、PS106がPL104及びDPEアレイ102を構成することを可能にするプログラムコードを用いて、PS106を構成することができる。その場合、ブロック1228におけるPSの設定に応じて、ブロック1230、1232、及び1234は、PMC110におけるRAM PMCプロセッサとは対照的に、PS106によって実行され得る。
【0182】
方法1200が進行するにつれて、進行における各レベルは、コンポーネントがSoC100内の他のコンポーネントにアクセスするための許可を有効化又は無効化する。
図12に関連して説明したプロセスは、SoC100内のサブシステム及び/又はコンポーネントの次第に狭くなるサブセットに対して認証が拒否又は認可され得るという点で階層的である。
【0183】
図13は、SoC100をブートするために使用され得るPDI1300の例を示す。
図13の例では、PDI1300は、ブートヘッダ1302を含む。PDI1300は、PLM1304をさらに含む。PLM1304は、セキュアヘッダ1306と、PMC110のRAM PMCプロセッサによって実行可能なファームウェア1308とを含み得る。PDI1300は、認証証明1314も含む。
【0184】
PDI1300の次の画像1310は、ブロック0、ブロック1~ブロックNとして示される複数の異なるブロックを含むことができる。次の画像1310に含まれる様々なブロックは、セキュアヘッダ1312において指定されてもよい。一般に、様々なブロック0~Nは、PS106ブートコード、PL104用の構成ビットストリーム、DPEアレイプログラミングセグメント、及び
図12のブロック1228、1230、1232、及び1234で参照されるレジスタプログラミングデータに対応する。特定の実施形態では、これらのブロックは、アプリケーション(例えば、区画)に従って編成することができ、複数のブロックは、第1の区画での実装のための1つのアプリケーションを表し、ブロックの異なるセットは、第1のアプリケーションと同時に第2の区画で、又は第1のアプリケーションの実行が終了した後に第1の区画で実装することができる別のアプリケーションを表す。
【0185】
SoC100の1つ以上の部分の部分的再構成は、経時的に、且つ特定の条件に応じてPDI1300(又は異なるPDI)に含まれる利用可能な及び/又は異なるブロック又はブロックのセットを使用してブロック1228~1238のうちの異なるブロックを選択的に実行するPMC110によって実行され得る。SoC100の部分的再構成は、SoC100内の物理コンポーネントのサブセット若しくは全体又はそれらのロジックサブセットへの階層化を容易にする。例えば、PMC110は、区画の分離、(変更されたアプリケーションに適切であるように)ソフトウェアドライバのアンロード(及びロード)、任意の二次ブートインターフェースからのプログラミングイメージの配信、並びにプログラミングが行われる前のイメージ認証及び完全性チェックを制御することができる。
【0186】
図14は、IC構造1400の断面側面図の例を示す。IC構造1400は、マルチダイIC構造である。IC構造1400は、単一のパッケージ内に複数のダイを積層するためのパッキング手法の一例を示す。図示のように、IC構造1400は、シリコンインターポーザ(インターポーザ)1405、ダイ1410、及びダイ1415を含むことができる。
【0187】
インターポーザ1405は、ダイ1410及び1415を水平に積層することができる平面を有するダイとすることができる。一般に、インターポーザ1405は、シリコンウェハ基板で実装することができる。図示されているように、インターポーザ1405は、マルチダイIC構造の2つ以上のダイに共通の実装面及び電気的結合点を提供することができる。一態様では、インターポーザ1405は、ダイ間のルーティングを相互接続するための中間層として機能することができる。別の態様では、インターポーザ1405は、IC構造1400の接地又は電力プレーンとして機能することができる。
【0188】
ダイ1410及び1415は、インターポーザ1405の平面上に並べて配置することができる。
図14では、水平方向に積層された2つのダイを用いて実装されているが、IC構造1400は、水平方向に積層された3つ以上のダイを用いて実装することもできる。別の態様では、ダイ1415は、ダイ1410の上に垂直に積層することができる。インターポーザ1405は、垂直に積層された2つのダイの間の中間層として使用することもできる。その場合、例えば、インターポーザ1405は、マルチダイICパッケージ内で、垂直に積層されたダイを互いに分離することができる。
【0189】
インターポーザ1405は、1つ以上の導電層を含む相互接続領域1420を含むことができる。導電層は、例えば、アルミニウム、金、銅、ニッケル、各種ケイ化物などの材料で形成することができる。一態様では、インターポーザ1405は、いかなる能動回路素子も含まない完全に受動的な構造として実装することができる。しかしながら、別の態様では、必要に応じて、1つ以上の能動デバイスを作成するために、インターポーザ1405に1つ以上の追加のプロセス層を追加することができる。いずれの場合でも、インターポーザ1405は、一般に、1つ以上の貫通ビア(TV)及びダイ間ワイヤを含むことを特徴とする。インターポーザ1405がシリコンを使用して形成される場合、TVは「シリコン貫通ビア」であってもよいが、インターポーザ1405は他の適切な材料で形成されてもよい。
【0190】
ダイ1410及び1415の各々は、複数のはんだバンプ1425を介してインターポーザ1405に電気的に結合することができる。一態様では、はんだバンプ1425は「マイクロバンプ」として実装することができる。はんだバンプ1425の各々は、ダイ1410及び1415をインターポーザ1405に物理的に取り付ける、例えば結合するのに役立つことができる。ダイ1410及び1415のインターポーザ1405への結合ははんだバンプ1425を介して達成されるが、インターポーザ1405をダイ1410及び1415に結合するために様々な他の技術を使用することができる。例えば、ボンドワイヤ又はエッジワイヤを使用して、ダイ1410及び1415をインターポーザ1405に結合することができる。別の例では、接着材料を使用して、ダイ1410及び1415をインターポーザ1405に物理的に取り付けることができる。したがって、はんだバンプ1425を介したインターポーザ1405へのダイ1410及び1415の結合は、限定ではなく例示を目的として提供される。
【0191】
相互接続領域1420内の1つ以上の導電層を使用して、ダイ1410とダイ1415との間にダイ間ワイヤを形成することができる。例えば、ダイ間ワイヤ1430は、導電層、例えばパターン化導電層の1つ以上の部分から形成することができる。ダイ間ワイヤ1430の垂直部分は、隣接する導電層を互いに結合する相互接続領域1420の1つ以上のビアから形成することができる。ダイ間ワイヤ1430は、例えば、インターポーザ1405内のビアを使用して互いに結合された2つ以上の導電層内に実装することができる。インターポーザ1405内の相互接続を実施するために複数の導電層を使用することにより、より多くの数の信号をルーティングすることができ、インターポーザ1405内で信号のより複雑なルーティングを達成することができる。図示のように、ダイ間ワイヤ1430は、はんだバンプ1425A及び1425Bの各々を互いに結合し、それによってダイ1410とダイ1415との間のダイ間信号の交換を可能にする。
【0192】
はんだバンプ1440を使用して、インターポーザ1405を表面1445に電気的に結合することができる。一態様では、はんだバンプ1440は、制御された崩壊チップ接続又は「C4」型バンプとして実装することができる。表面1445は、マルチダイICパッケージ、例えば、IC構造1400が実装されるマルチダイICパッケージの基板を表すことができる。例えば、はんだバンプ1440を使用して、インターポーザ1405を表面1445に物理的に取り付けることができる。図示されているように、はんだバンプ1440は、IC構造1400を、IC構造1400の外部の、例えば、マルチダイICパッケージの外部のノードに直接結合することができる。
【0193】
相互接続領域1420は、1つ以上のTV1435に結合することができる。一般に、各TV1435は、垂直に横断する、例えばインターポーザ1405の全体ではないにしてもかなりの部分を通って延びる電気接続を形成する導電性材料で充填されたビアを表す。各TV1435は、例えば、銅、アルミニウム、金、銅、ニッケル、各種ケイ化物などの導電性材料で形成することができる。図示のように、各TV1435は、インターポーザ1405を実質的に通過して、相互接続領域1420内の導電層、例えばワイヤをはんだバンプ1440に結合することができる。これに関して、各TV1435は、はんだボール1440から相互接続領域1420を通ってはんだバンプ1425までの信号経路を形成することができ、それによってダイ1410及び/又はダイ1415への信号伝搬を容易にする。
【0194】
一実施形態では、インターポーザ1405は、ダイ1410の基板抵抗率よりも高く、且つダイ1415の基板抵抗率よりも高い基板抵抗率を有するインターポーザ1405を提供する材料で形成することができる。例えば、インターポーザ1405は、約40オーム/センチメートル以上の基板抵抗率を有する材料を使用して実装することができる。これに関して、インターポーザ1405は、ダイ1410及び/又は1415のいずれか一方を実装するために使用されるものとは異なるプロセス技術を使用して実装することができる。例えば、相互接続領域1420内の導電層は、ダイ1410及び1415の一方又は両方内に実装される導電層よりも厚い厚さで実装することができる。一例では、相互接続領域1420内の導電層は、ダイ1410及び/又はダイ1415内の導電層の厚さの約4倍であり得る。
【0195】
図14の例において、ダイ1410及びダイ1415の各々は、1つ以上のサブシステム及びPMC110を含むように実装されてもよい。特定の例では、ダイ1410及び1415の各々は、
図1に関連して説明したアーキテクチャと同じ又は類似のアーキテクチャで実装されてもよい。例示の目的で、ダイ1410は
マスタダイとして指定され、ダイ1415はスレーブダイとして指定される。ダイ1410及び1415の両方がNoCを有する場合、各ダイのNoCは、インターポーザ1405内でダイ間ワイヤ、例えば1430によって接続されてもよい。
【0196】
さらに、マスタダイであるダイ1410に実装されるPMCは、マスタPMCと考えられる。ダイ1415内のPMCは、ダイ1410内のPMCのスレーブとして動作する。ダイ1415内のPMCは本明細書に記載の動作を実行することができるが、ダイ1415のPMC上で動作される及び/又は使用される任意のデータは、IC構造1400の外部のソースから直接受信されるのとは対照的に、ダイ1410内のPMCから受信される。一態様では、ダイ1410内のPMCのみがI/Oにアクセスして、IC構造1400の外部のソースからデータ、例えばファームウェア及び/又はPDIを取得する。したがって、ダイ1415内のPMCによって使用される任意のファームウェア及び/又はPDIは、ダイ1410内のPMCによって最初に取り出され、ダイ1410内のPMCによってダイ1415に提供される。いずれの場合でも、各ダイは、その特定のダイ内のPMCによって構成される。
【0197】
別の実施形態では、各PMCは、PMCが含まれるダイに固有の鍵を使用して暗号化及び復号を実行するように装備される。例えば、所与のPMCによって使用されるべき鍵は、PMCと同じダイ内の専用eヒューズに記憶されてもよく、それにより、各PMCが異なる鍵を使用することが可能になる。一態様では、暗号化されたデータのみが、異なるダイにおけるPMC間で交換される。このように、各PMCは、他のPMCから受信した暗号化データを復号し、データを他のPMCに送信する前にデータを暗号化することができる。
【0198】
説明の目的で、本明細書に開示される様々な発明概念の完全な理解を提供するために、特定の用語が記載されている。しかしながら、本明細書で使用される用語は、本発明の構成の特定の態様を説明することのみを目的としており、限定することを意図するものではない。
【0199】
本明細書で定義されるように、単数形「a」、「an」、及び「the」は、文脈が明らかにそうでないことを示さない限り、複数形も含むことが意図される。
【0200】
本明細書で定義されるように、「およそ」という用語は、ほぼ正確又は正確な、値若しくは量が近いが正確ではないことを意味する。例えば、「およそ」という用語は、列挙された特性、パラメータ、又は値が、正確な特性、パラメータ、又は値の所定の量の範囲内にあることを意味し得る。
【0201】
本明細書で定義されるように、「少なくとも1つ」、「1つ以上の」、及び「及び/又は」という用語は、特に明記しない限り、動作において連言的及び選言的の両方であるオープンエンド表現である。例えば、「A、B、及びCのうちの少なくとも1つ」、「A、B、又はCのうちの少なくとも1つ」、「A、B、及びCのうちの1つ以上」、「A、B、又はCのうちの1つ以上」及び「A、B、及び/又はC」という表現はそれぞれ、Aのみ、Bのみ、Cのみ、AとBとを一緒に、AとCとを一緒に、BとCとを一緒に、又はAとBとCとを一緒に、を意味する。
【0202】
本明細書で定義される場合、「自動的に」という用語は、ユーザの介入がないことを意味する。本明細書で定義される場合、「ユーザ」という用語は、ヒトを意味する。
【0203】
本明細書で定義されるように、「コンピュータ可読記憶媒体」という用語は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用されるプログラムコードを含む又は記憶する記憶媒体を意味する。本明細書で定義されるように、「コンピュータ可読記憶媒体」は、一時的な伝播信号自体ではない。コンピュータ可読記憶媒体は、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、又はこれらの任意の適切な組み合わせであってもよいが、これらに限定されない。本明細書に記載の様々な形態のメモリは、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、RAM、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、電子的消去可能プログラマブル読み出し専用メモリ(EEPROM)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスクなどを含むことができる。
【0204】
本明細書で定義されるように、用語「の場合」は、文脈に応じて「のとき」又は「すると」又は「に応じて」又は「に応答して」を意味する。したがって、語句「決定された場合」又は「[記載された状態又は事象]が検出された場合」は、文脈に応じて、「決定されると」又は「決定に応じて」又は「[記載された状態又は事象]が検出されると」又は「[記載された状態又は事象]の検出に応じて」又は「[記載された状態又は事象]の検出に応答して」を意味すると解釈され得る。
【0205】
本明細書で定義されるように、「応じて」という用語及び上記のような同様の用語、例えば「の場合」、「のとき」又は「すると」は、動作又は事象に容易に応答又は反応することを意味する。応答又は反応は自動的に行われる。したがって、第2の動作が第1の動作に「応じて」行われる場合、第1の動作の発生と第2の動作の発生との間に因果関係がある。「応じて」という用語は因果関係を示す。
【0206】
本明細書で定義されるように、「一実施形態」、「実施形態」、「1つ以上の実施形態」、「特定の実施形態」という用語又は同様の用語は、実施形態に関連して説明される特定の特徴、構造、又は特性が、本開示内で説明される少なくとも1つの実施形態に含まれることを意味する。したがって、本開示全体を通して、「一実施形態では」、「実施形態において」、「1つ以上の実施形態において」、「特定の実施形態では」という語句、及び同様の文言の出現は、必ずしもそうとは限らないが、すべて同じ実施形態を指し得る。「実施形態」及び「配置」という用語は、本開示内で互換的に使用される。
【0207】
本明細書で定義されるように、「リアルタイム」という用語は、特定のプロセス若しくは決定が行われるのに十分に即時であるとユーザ若しくはシステムが感知する、又はプロセッサが何らかの外部プロセスに追いつくことを可能にする処理応答性のレベルを意味する。
【0208】
本明細書で定義されるように、「実質的に」という用語は、列挙された特性、パラメータ、又は値が正確に達成される必要はないが、例えば公差、測定誤差、測定精度限界、及び当業者に知られている他の要因を含む偏差又は変動が、特性が提供しようとした効果を排除しない量で発生し得ることを意味する。
【0209】
第1、第2などの用語は、様々な要素を説明するために本明細書で使用され得る。これらの要素は、特に明記しない限り、又は文脈が明らかにそうでないことを示さない限り、これらの用語は1つの要素を別の要素から区別するためにのみ使用されるので、これらの用語によって限定されるべきではない。
【0210】
コンピュータプログラム製品は、本明細書に記載された本発明の構成の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。本開示内で、用語「プログラムコード」は、用語「コンピュータ可読プログラム命令」と交換可能に使用される。本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、又はネットワーク、例えばインターネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)及び/又は無線ネットワークを介して外部コンピュータ若しくは外部記憶装置にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又はエッジサーバを含むエッジデバイスを含むことができる。各コンピューティング/処理装置内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0211】
本明細書に記載の本発明の構成のための動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、又はオブジェクト指向プログラミング言語及び/又は手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、状態設定データを含むことができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、又は完全にリモートコンピュータ若しくはサーバ上で実行することができる。後者のシナリオでは、リモートコンピュータは、LAN又はWANを含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、又は外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続されてもよい。場合によっては、例えば、プログラマブルロジック回路、FPGA、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本明細書に記載の本発明の構成の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによってコンピュータ可読プログラム命令を実行することができる。
【0212】
本発明の構成の特定の態様は、方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して本明細書で説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令、例えばプログラムコードによって実施され得ることが理解されよう。
【0213】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供されてマシンを生成することができ、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャート及び/又はブロック図のブロックで指定された機能/動作を実施するための手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に格納されてもよく、格納された命令を有するコンピュータ可読記憶媒体は、フローチャート及び/又はブロック図のブロックで指定された動作の態様を実施する命令を含む製品を含む。
【0214】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、又は他のデバイス上で一連の動作を実行させてコンピュータ実施プロセスを生成してもよく、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図のブロックで指定された機能/動作を実施する。
【0215】
図のフローチャート及びブロック図は、本発明の構成の様々な態様によるシステム、方法、及びコンピュータプログラム製品の可能な実施態様のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された動作を実施するための1つ以上の実行可能命令を含むモジュール、セグメント、又は命令の一部を表すことができる。
【0216】
いくつかの代替実施態様では、ブロックに記載された動作は、図に記載された順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、実質的に同時に実行されてもよく、又はブロックは、関連する機能に応じて、時には逆の順序で実行されてもよい。他の例では、ブロックは、一般に、昇順で実行されてもよいが、さらに他の例では、1つ以上のブロックは、様々な順序で実行されてもよく、結果は、直後には続かない後続のブロック又は他のブロックで記憶及び利用される。また、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図のブロックの組合せは、指定された機能又は動作を実行するか、専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装されてもよいことに留意されたい。
【0217】
以下の特許請求の範囲に見出すことができるすべてのミーンズプラスファンクション又はステッププラスファンクションの要素の対応する構造、材料、動作、及び均等物は、具体的に特許請求されている他の特許請求されている要素と組み合わせて機能を実行するための任意の構造、材料、又は動作を含むことが意図されている。
【0218】
ICは、プログラムコードを実行するように構成されたプロセッサシステムと、プログラマブルロジックと、プロセッサシステム及びプログラマブルロジックに結合されたプラットフォーム管理コントローラとを含む。プラットフォーム管理コントローラは、プロセッサシステム及びプログラマブルロジックを独立して構成及び制御するように適合される。
【0219】
プラットフォーム管理コントローラは、専用の読み出し専用メモリと、専用の読み出し専用メモリに記憶された第1の命令を実行するための専用の第1のプロセッサと、専用のランダムアクセスメモリと、専用のランダムアクセスメモリに記憶された第2の命令を実行するための専用の第2のプロセッサとを含み得る。
【0220】
別の態様では、第1のプロセッサ及び第2のプロセッサの各々は、冗長性を伴って実装される。
【0221】
別の態様では、第1のプロセッサは、専用の読み出し専用メモリからの第1の命令を実行して、外部ソースから第2の命令を取得及び認証し、且つ第2のプロセッサによる実行のために第2の命令を専用のランダムアクセスメモリに格納する、ブートプロセスの第1の段階を実行する。
【0222】
別の態様では、第1のプロセッサは、ICのためのルートオブトラストとしてプラットフォーム管理コントローラを確立する。
【0223】
別の態様では、プラットフォーム管理コントローラは、プロセッサシステム及びプログラマブルロジックとは無関係に給電される。
【0224】
別の態様では、プロセッサシステムは、プログラマブルロジックとは無関係に給電される。
【0225】
別の態様では、プラットフォーム管理コントローラは、プロセッサシステム及びプログラマブルロジックを互いに独立して電力オフにし、プロセッサシステム及びプログラマブルロジックを互いに独立して電力オンにするように構成される。
【0226】
別の態様では、プラットフォーム管理コントローラは、インターフェースと、インターフェースを介して受信されたウェイク信号を検出するように構成された回路とを含む。プラットフォーム管理コントローラは、ウェイク信号に応答して、以前に電力オフにされたICの電力ドメインを電力オンにする。
【0227】
別の態様では、プラットフォーム管理コントローラは、ICの外部からアクセス可能であり、且つプロセッサシステム及びプログラマブルロジックとは無関係にアクセス可能である、デバッグインターフェースを含む。
【0228】
別の態様では、プラットフォーム管理コントローラは、プロセッサシステム及びプログラマブルロジックからエラー通知を受信するように構成されたエラー管理インターフェースを含む。エラー管理インターフェースは、ICから出力される、検出されたエラーを示す信号の生成、又はプラットフォーム管理コントローラ内のプロセッサへの割り込みの生成のうちの少なくとも1つを実行するように構成される。
【0229】
別の態様では、プラットフォーム管理コントローラは、ICのサブシステム間の機能的及び物理的分離を制御する、IC全体に実装される保護回路をプログラムするように構成され、サブシステムは、プロセッサシステム及びプログラマブルロジックを含む。
【0230】
別の態様では、プラットフォーム管理コントローラは、集積回路の温度範囲外事象又は電圧範囲外事象を検出するように構成される。
【0231】
別の態様では、プラットフォーム管理コントローラは、温度範囲外事象又は電圧範囲外事象の検出に応答してICを消去するように構成される。
【0232】
別の態様では、プラットフォーム管理コントローラは、改ざん事象の検出に応答してICを消去するように構成される。
【0233】
別の態様では、ICは、プラットフォーム管理コントローラと、プロセッサシステム又はプログラマブルロジックのうちの少なくとも1つとを含む第1のダイを含む。ICは、第1のダイのプラットフォーム管理コントローラに対するスレーブとして動作するさらなるプラットフォーム管理コントローラを含む第2のダイをさらに含む。第2のダイは、プロセッサシステム又はプログラマブルロジックのうちの少なくとも1つを含む。
【0234】
別の態様では、ICは、プロセッサアレイと、プロセッサアレイをプログラマブルロジック及びプラットフォーム管理コントローラと接続するプログラマブルネットワークオンチップとを含む。
【0235】
別の態様では、プラットフォーム管理コントローラは、プログラマブルネットワークオンチップを構成し、且つ一度構成されたプログラマブルネットワークオンチップを使用してプロセッサアレイを構成するように適合される。
【0236】
別の態様では、プラットフォーム管理コントローラは、IC内で発生する改ざん事象を検出し、それに応答してロックダウン状態を開始するように構成される。
【0237】
方法は、IC上にプロセッサシステムを提供することを含み、プロセッサシステムは、プログラムコードを実行するように構成される。本方法は、IC上にプログラマブルロジックを提供することと、IC上にプラットフォーム管理コントローラを提供することとを含むことができる。プラットフォーム管理コントローラは、プロセッサシステム及びプログラマブルロジックに結合され、プロセッサシステム及びプログラマブルロジックを独立して構成及び制御するように適合される。
【0238】
別の態様では、本方法は、プラットフォーム管理コントローラの一部として、専用の読み出し専用メモリと、専用の読み出し専用メモリに記憶された第1の命令を実行するための専用の第1のプロセッサと、専用のランダムアクセスメモリと、専用のランダムアクセスメモリに記憶された第2の命令を実行するための専用の第2のプロセッサとを提供することを含む。本方法はまた、第1のプロセッサを使用して、専用の読み出し専用メモリからの第1の命令を実行して、外部ソースから第2の命令を取得及び認証し、且つ第2のプロセッサによる実行のために第2の命令を専用のランダムアクセスメモリに格納する、ブートプロセスの第1の段階を実行することを含む。
【0239】
本明細書で提供される本発明の構成の説明は、例示を目的とするものであり、網羅的であること、又は開示された形態及び例に限定されることを意図するものではない。本明細書で使用される用語は、本発明の構成の原理、実際の用途又は市場で見られる技術に対する技術的改善を説明するために、及び/又は当業者が本明細書に開示される本発明の構成を理解することを可能にするために選択された。記載された本発明の構成の範囲及び精神から逸脱することなく、修正及び変形が当業者には明らかであり得る。したがって、そのような特徴及び実施態様の範囲を示すものとして、前述の開示ではなく、以下の特許請求の範囲を参照すべきである。