FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

OCA (Open Chiplet Atlas) について学ぶ (4. OCAにおけるブート手順)

OCAシステムアーキテクチャの仕様書を日本語に翻訳して、Sphinxでドキュメント化している。 OCAは、異なるベンダーのチップレットがオープンなエコシステムで連携することを可能にするシステムアーキテクチャとのこと。

www.openchipletatlas.org

SiPにおけるブートプロセスの特殊性

モノリシックSoCと比較して、SiPのブートプロセスには以下の差異がある:

  • 一部のチップレットはブートに自給自足できず、構成とソフトウェアのロードを他のチップレットに依存する
  • 知的財産やシークレットなどの資産は、異なるエンティティが所有している可能性がある
  • ブートプロセス中にD2D通信を確立する必要がある

複雑性の増大と複数ステークホルダーの関与により、所有者の責任範囲、チップ間通信インターフェース、ブート段階間のソフトウェアインターフェースを定義する標準化されたブート手順が必要となる。

自己ブート・チップレットと非自己ブート・チップレット

自身の設定とソフトウェアをロードできる自立型チップレットは、自己ブート・チップレットと呼ばれる。 単独でブートするための能力と必要なシステムセットアップを備えており、非自己ブート・チップレットへの構成およびソフトウェアのロードを支援することもできる。

REQ-BOOT-1では、SiPは以下のブートセットアップを備える必要がある:

  • ブート・プライマリ・チップレットとして指定されるチップレットは1つだけ
  • ブート・セカンダリ・チップレットとして構成されるチップレットは0個以上
  • チップレット間通信のためのブート・チャネル

ブート・プライマリ・チップレットは、SiP内で最初にブートする自己ブート・チップレットである。

フラットなブート構成と階層型ブート構成

SiP内でブート・プライマリ・チップレットが唯一の自己ブート・チップレットとなる場合がある。 この場合、ブート・プライマリ・チップレットは全てのブート・セカンダリ・チップレットのブートを管理する。 図11はこの構成例を示しており、実装定義インターフェース経由で非揮発性メモリを接続した集中型ハブ・チップレットが最初にブートする。 ブート・プライマリ・チップレットとして機能するこのハブ・チップレットは、全てのブート・セカンダリ・チップレットへのソフトウェアまたはデータの構成とロードを担当する。 ブートプロセスの初期段階では、プライマリ・チップレットとセカンダリ・チップレット間の通信は、低速D2D接続上で動作するブート・チャネルを介して行われる。

一方、ブート・セカンダリ・チップレットは自己ブート・チップレットとしても機能し、他のブート・セカンダリ・チップレットのブートを担当できる。 これによりSiP内に多層階層型ブート構造が形成される。図12はこの階層型ブート構成を示す。 この例では、アクセラレータチップレットの1つがブート・セカンダリ・チップレットと自己ブート・チップレットの両方として機能し、他のアクセラレータチップレットのブートを担当する。 ブート・プライマリ・CPUチップレットと自己ブート・アクセラレータ・チップレット間の接続は、ブート同期とブート状態報告のために依然として必要である。

REQ-BOOT-3 では、自己ブート・チップレットは、他のチップレットとの通信にブート・チャネルを使用しなければならない。 REQ-BOOT-4 では、各ブート・セカンダリ・チップレットは、1つかつ唯一のアップストリーム自己ブート・チップレットに接続しなければならない。

チップレットブートステージとSiPブートステージ

OPT-BOOT-1 では、各チップレットのブート手順には、チップレットブートステージとSiPブートステージを含めることが推奨されている。

チップレットブートステージは、チップレットのローカル設定とファームウェアのロードを完了し、SiPブートステージにおけるさらなるSiPブート準備を整える。 チップレットブートステージには、チップレット専用電源レールの投入、サブシステムリセットの解除、PLLの設定、ローカルファブリックの設定、サブシステム固有の設定などが含まれる。 チップレット設計者のIP保護(機能や性能制約の強制など)が必要な場合、このタスクもチップレットブートステージで実施する必要がある。 通常、ブートROMおよびそれに続く可変ソフトウェア段階はこの段階に属する。 ブートローダROM(BL-ROM)およびBL-ROM直後に実行される可変ソフトウェア(ブートローダチップレット:BL-CPL)は、チップレット設計者によって開発される。 BL-CPLはチップレット設計者の必要性に応じてオプションとなる。

SiPブートステージの目的には、ローカルチップレット構成の更新、高速チップレット間接続のブート、SiP構成、およびさらなるソフトウェアステージのロードが含まれる。 SiPブートステージで実行されるソフトウェアはブートローダーSiP(BL-SIP)と呼ばれ、SiPインテグレータによって開発される。

チップレットとSiPブートステージの分割は、チップレットとSiP間の所有権の違いを考慮している。 チップレット設計者は自分のチップレットのブートローダ(BL-CPL)を開発し、SiPインテグレータはSiP全体のブートローダ(BL-SIP)を開発する。 これにより、異なるベンダーのチップレットを組み合わせた場合でも、各チップレットのブートローダとSiP全体のブートローダが明確に分離され、責任範囲が明確になる。

セキュアブートの扱い

図13は、非自己ブート・チップレットがセキュアブートを義務付けるブート手順の例を示す。 自己ブート・チップレットのBL-SIP、BL-CPL、および非自己ブート・チップレットのBL-SIPはバンドルされ、SiPインテグレータの秘密鍵で署名される。 このバンドル内では、非自己ブート・チップレットのBL-CPLは対応するチップレット設計者の秘密鍵で署名される。

図14は、非自己ブート・チップレットがセキュアブートをサポートしていない場合の別のブート手順例を示す。 自己ブート・チップレットのBL-SIP、非自己ブート・チップレットのBL-CPLおよびBL-SIPは、SiPインテグレーターの秘密鍵で署名されバンドルされる。 このバンドル内では、非自己ブート・チップレットのBL-CPLはどの秘密鍵でも署名されない。

セキュアブートの要件は、チップレット設計者とSiPインテグレータの両方の秘密鍵で署名されたバンドルを必要とする場合と、SiPインテグレータの秘密鍵のみで署名されたバンドルで十分な場合がある。 これにより、異なるセキュリティ要件を持つチップレットを組み合わせた場合でも、適切なセキュアブート手順を実装できる。

ブート報告の仕組み

ブートトポロジーにおける下流チップレットは、ブート・チャネルを使用してブートステータスを上流チップレットに報告する。 全ての報告は最終的にブート・プライマリ・チップレットによって集約される。 ブート・プライマリ・チップレットは、実装定義インターフェースを通じて、BMCなどのボードレベルコントローラに報告をさらに転送できる。

REQ-BOOT-5 では、ブート報告が必要な場合、それは下流チップレットに保存され、直近の上流自己ブート・チップレットが利用可能とする。 REQ-BOOT-6 では、ブート・セカンダリ・チップレットは、ブート報告が利用可能になった際に、ブート・チャネルを使用して直近の上流自己ブート・チップレットに通知しなければならない。 REQ-BOOT-7 では、上流自己ブート・チップレットは、ブート・チャネル経由でブート報告を取得しなければならない。

上流自己ブート・チップレットがブート・プライマリ・チップレットでない場合、ブート・チャネルを通じて直近の上流自己ブート・チップレットに通知しなければならない。

ブート報告は階層的に集約され、最終的にブート・プライマリ・チップレットに到達する。 これにより、SiP全体のブート状態を一元管理できる。

ブート・チャネルの要件

REQ-BOOT-8 では、ブート・チャネルは、電源とクロックが供給された時点で、設定不要ですぐに使用可能であること。 「設定不要」という表現は、ブート・チャネルが他のチャネルに依存せずに設定可能な最も初期のチャネルの一つであることを強調するためである。 実際には、いくつかのストラップやGPIOピンが有効であるが、鶏と卵の問題を避けるため厳密な定義を選択する。

REQ-BOOT-9 では、ブート・チャネルは、チップレット間のデッドロック回避を簡素化するため、共有非循環トポロジーで開始しなければならない。 REQ-BOOT-10 では、ブート・チャネルは、自己ブート・チップレットとその非自己ブート・チップレット間の通信を可能にしなければならない。

ブート・チャネルは、SiPのブートプロセスにおいて最も初期に使用されるチャネルであり、他のチャネルが動作する前に確立される必要がある。 そのため、設定不要で、非循環トポロジーで開始し、自己ブート・チップレットと非自己ブート・チップレット間の通信を可能にする必要がある。