(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022058191
(43)【公開日】2022-04-11
(54)【発明の名称】よりスリムで高速なブートのための早期プラットフォームハードニング技術
(51)【国際特許分類】
G06F 21/57 20130101AFI20220404BHJP
G06F 9/4401 20180101ALI20220404BHJP
【FI】
G06F21/57 350
G06F9/4401
【審査請求】未請求
【請求項の数】26
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021138584
(22)【出願日】2021-08-27
(31)【優先権主張番号】202041042509
(32)【優先日】2020-09-30
(33)【優先権主張国・地域又は機関】IN
(31)【優先権主張番号】17/109,081
(32)【優先日】2020-12-01
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヴィンセント ジマー
(72)【発明者】
【氏名】サブラタ バニク
(72)【発明者】
【氏名】ラジャラム レグパティ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AE15
5B376EA24
(57)【要約】 (修正有)
【課題】よりスリムで高速なブートのための早期プラットフォームハードニング技術を提供するコンピューティングシステム、装置、方法及びプログラムを提供する。
【解決手段】方法は、プロセッサのスタティックランダムアクセスメモリ(SRAM)をプロセッサのリセットに応答して初期化し、SRAMを1つ以上のセキュリティ実施動作に割り当て、基本入出力システム(BIOS)フェーズの完了の前に1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガする。マルチスレッド実行は、ダイナミックRAM(DRAM)初期化とは独立してトリガされる。
【選択図】
図9A
【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
ネットワークコントローラと、
ダイナミックランダムアクセスメモリ(DRAM)を含むシステムメモリと、
前記ネットワークコントローラ及び前記DRAMに結合されたシステムオンチップ(SoC)であり、補助プロセッサ及びホストプロセッサを含む、SoCと、を含み、
前記ホストプロセッサは、スタティックランダムアクセスメモリ(SRAM)を含み、前記SRAMは、実行可能なシリコン初期化命令のセットを含み、前記シリコン初期化命令は、前記補助プロセッサにより実行されたときに当該コンピューティングシステムに、
前記SoCのリセットに応答して前記SRAMを初期化し、
前記SRAMを1つ以上のセキュリティ実施動作に割り当て、
基本入出力システム(BIOS)フェーズの完了の前に前記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガし、前記マルチスレッド実行は、前記DRAMの初期化とは独立してトリガされる
ことをさせる、コンピューティングシステム。
【請求項2】
前記SRAMは、前記ホストプロセッサのラストレベルキャッシュに位置する、請求項1に記載のコンピューティングシステム。
【請求項3】
レジスタ、をさらに含み、前記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、前記レジスタからサイズ情報を読み出すことをさせ、前記SRAMは、前記サイズ情報に基づいて初期化される、請求項1又は2に記載のコンピューティングシステム。
【請求項4】
前記SoCは、セキュリティコントローラをさらに含み、前記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、
前記SRAMの初期化が完了したとき前記セキュリティコントローラに通知を送信し、
前記セキュリティコントローラからの前記通知の確認応答においてBIOSアクション情報を識別し、
前記BIOSアクション情報に従って1つ以上の動作を行う
ことをさせる、請求項1乃至3のうちいずれか1項に記載のコンピューティングシステム。
【請求項5】
セキュリティコントローラ、をさらに含み、前記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、
前記セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信し、
前記セキュリティコントローラからの前記EOPメッセージの確認応答に応答して、前記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行する
ことをさせる、請求項1乃至3のうちいずれか1項に記載のコンピューティングシステム。
【請求項6】
前記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、オペレーティングシステムへのブートの前に前記SRAMを無効にすることをさせる、請求項1乃至5のうちいずれか1項に記載のコンピューティングシステム。
【請求項7】
半導体装置であって、
1つ以上の基板と、
前記1つ以上の基板に結合された論理と、を含み、
前記論理は、構成可能論理又は固定機能ハードウェア論理のうち1つ以上に少なくとも部分的に実装され、前記1つ以上の基板に結合された前記論理は、
プロセッサのスタティックランダムアクセスメモリ(SRAM)を前記プロセッサのリセットに応答して初期化し、
前記SRAMを1つ以上のセキュリティ実施動作に割り当て、
基本入出力システム(BIOS)フェーズの完了の前に前記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガし、前記マルチスレッド実行は、ダイナミックRAM(DRAM)初期化とは独立してトリガされる、
装置。
【請求項8】
前記SRAMは、前記プロセッサのラストレベルキャッシュに位置する、請求項7に記載の装置。
【請求項9】
前記1つ以上の基板に結合された前記論理は、レジスタからサイズ情報を読み出し、前記SRAMは、前記サイズ情報に基づいて初期化される、請求項7又は8に記載の装置。
【請求項10】
前記1つ以上の基板に結合された前記論理は、
前記SRAMの初期化が完了したときセキュリティコントローラに通知を送信し、
前記セキュリティコントローラからの前記通知の確認応答においてBIOSアクション情報を識別し、
前記BIOSアクション情報に従って1つ以上の動作を行う、
請求項7乃至9のうちいずれか1項に記載の装置。
【請求項11】
前記1つ以上の基板に結合された前記論理は、
セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信し、
前記セキュリティコントローラからの前記EOPメッセージの確認応答に応答して、前記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行する、
請求項7乃至9のうちいずれか1項に記載の装置。
【請求項12】
前記1つ以上の基板に結合された前記論理は、オペレーティングシステムへのブートの前に前記SRAMを無効にする、請求項7乃至11のうちいずれか1項に記載の装置。
【請求項13】
前記1つ以上の基板に結合された前記論理は、前記1つ以上の基板内に配置されたトランジスタチャネル領域を含む、請求項7乃至11のうちいずれか1項に記載の装置。
【請求項14】
実行可能なシリコン初期化命令のセットを含むコンピュータプログラムであって、前記シリコン初期化命令は、コンピューティングシステムにより実行されたときに前記コンピューティングシステムに、
プロセッサのスタティックランダムアクセスメモリ(SRAM)を前記プロセッサのリセットに応答して初期化し、
前記SRAMを1つ以上のセキュリティ実施動作に割り当て、
基本入出力システム(BIOS)フェーズの完了の前に前記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガし、前記マルチスレッド実行は、ダイナミックRAM(DRAM)初期化とは独立してトリガされる
ことをさせる、コンピュータプログラム。
【請求項15】
前記SRAMは、前記プロセッサのラストレベルキャッシュに位置する、請求項14に記載のコンピュータプログラム。
【請求項16】
前記シリコン初期化命令は、実行されたときにさらに前記コンピューティングシステムに、レジスタからサイズ情報を読み出すことをさせ、前記SRAMは、前記サイズ情報に基づいて初期化される、請求項14又は15に記載のコンピュータプログラム。
【請求項17】
前記シリコン初期化命令は、実行されたときにさらに前記コンピューティングシステムに、
前記SRAMの初期化が完了したときセキュリティコントローラに通知を送信し、
前記セキュリティコントローラからの前記通知の確認応答においてBIOSアクション情報を識別し、
前記BIOSアクション情報に従って1つ以上の動作を行う
ことをさせる、請求項14乃至16のうちいずれか1項に記載のコンピュータプログラム。
【請求項18】
前記シリコン初期化命令は、実行されたときにさらに前記コンピューティングシステムに、
セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信し、
前記セキュリティコントローラからの前記EOPメッセージの確認応答に応答して、前記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行する
ことをさせる、請求項14乃至16のうちいずれか1項に記載のコンピュータプログラム。
【請求項19】
前記シリコン初期化命令は、実行されたときにさらに前記コンピューティングシステムに、オペレーティングシステムへのブートの前に前記SRAMを無効にすることをさせる、請求項14乃至18のうちいずれか1項に記載のコンピュータプログラム。
【請求項20】
プロセッサのスタティックランダムアクセスメモリ(SRAM)を前記プロセッサのリセットに応答して初期化するステップと、
前記SRAMを1つ以上のセキュリティ実施動作に割り当てるステップと、
基本入出力システム(BIOS)フェーズの完了の前に前記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガするステップであり、前記マルチスレッド実行は、ダイナミックRAM(DRAM)初期化とは独立してトリガされる、ステップと、
を含む方法。
【請求項21】
前記SRAMは、前記プロセッサのラストレベルキャッシュに位置する、請求項20に記載の方法。
【請求項22】
レジスタからサイズ情報を読み出すステップ、をさらに含み、前記SRAMは、前記サイズ情報に基づいて初期化される、請求項20又は21に記載の方法。
【請求項23】
前記SRAMの初期化が完了したときセキュリティコントローラに通知を送信するステップと、
前記セキュリティコントローラからの前記通知の確認応答においてBIOSアクション情報を識別するステップと、
前記BIOSアクション情報に従って1つ以上の動作を行うステップと、
をさらに含む請求項20乃至22のうちいずれか1項に記載の方法。
【請求項24】
セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信するステップと、
前記セキュリティコントローラからの前記EOPメッセージの確認応答に応答して、前記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行するステップと、
をさらに含む請求項20乃至22のうちいずれか1項に記載の方法。
【請求項25】
オペレーティングシステムへのブートの前に前記SRAMを無効にするステップ、をさらに含む請求項20乃至24のうちいずれか1項に記載の方法。
【請求項26】
請求項14乃至19のうちいずれか1項に記載のコンピュータプログラムを記憶したコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2020年9月30日に出願されたインド仮特許出願第202041042509号に対する優先権の利益を主張する。
【0002】
[技術分野]
実施形態は、一般に、コンピューティングプラットフォームにおけるセキュリティに関する。より詳細には、実施形態は、よりスリムで高速なブートのための早期プラットフォームハードニング技術に関する。
【背景技術】
【0003】
現在のシステムでは、全てのセキュリティ実施は、DRAM(ダイナミックランダムアクセスメモリ)ベースのメモリがチップセットの消費に対して利用可能になった後、「ポストメモリフェーズ(Post Memory Phase)」の間に扱われる。したがって、BIOS(基本入出力システム、例えば、ブートファームウェア)フローは、DRAMベースのメモリが利用可能になるのを待たなければならず、これは、セキュリティ実施のためにより多くの時間を消費する。
【図面の簡単な説明】
【0004】
実施形態の様々な利点は、以下の明細書及び添付の特許請求の範囲を読むことにより、及び以下の図面を参照することにより、当業者に明らかになるであろう。
【
図1】一実施形態によるコンピューティングシステム上のファームウェアの一例のブロック図である。
【
図2】一実施形態によるブートアーキテクチャの一例のブロック図である。
【
図3】一実施形態によるプリリセットブートシーケンスの一例の説明図である。
【
図4】一実施形態によるメモリ階層のメモリアクセス応答時間の一例の説明図である。
【
図5】一実施形態によるセキュリティ通信フローの一例の説明図である。
【
図6】一実施形態によるチップセットプログラミングフローの一例の説明図である。
【
図7】従来のセキュリティ初期化及び一実施形態によるセキュリティ初期化の一例の比較説明図である。
【
図8】一実施形態によるセキュリティ認証オフロードの一例の説明図である。
【
図9A】一実施形態によるシリコン初期化を行う方法の例のフローチャートである。
【
図9B】一実施形態によるシリコン初期化を行う方法の例のフローチャートである。
【
図9C】一実施形態によるシリコン初期化を行う方法の例のフローチャートである。
【
図10】一実施形態によるパフォーマンス強化コンピューティングシステムの一例のブロック図である。
【
図11】一実施形態による半導体パッケージ装置の一例の説明図である。
【
図12】一実施形態によるプロセッサの一例のブロック図である。
【
図13】一実施形態による、マルチプロセッサベースのコンピューティングシステムの一例のブロック図である。
【発明を実施するための形態】
【0005】
ますます多くの家電デバイスがインターネットに接続し、毎秒数兆個のデータを転送することにより、デバイス製造業者がセキュアなプラットフォーム(ハードウェア、ファームウェア、ソフトウェアを考慮する)を設計してプラットフォームのセキュリティを確保する課題が提起されている。
【0006】
実施形態は、プラットフォームを早期にハードニングし(hardening)、したがって製品製造業者(例えば、オリジナルデバイス製造業者(original device manufacturers)/ODM、及び/又はオリジナル機器製造業者(original equipment manufacturers)/OEM)のブートローダ側の部分の労力を低減することにより、現代のニーズに対してよりスリムで高速なブートブロックを可能にして、セキュアなSoC(システムオンチップ(system on chip))ブート及びセキュアなプラットフォームを確保する。
【0007】
典型的なプラットフォームにおいて、SPI(シリアルペリフェラルインターフェース(serial peripheral interface))フラッシュは、ホストプロセッサの4GBメモリの上部にマッピングされ、それにより、CPU(中央処理装置(central processing unit))リセットの後、ブートローダコードは、ちょうど4GB下の、SPIフラッシュによりデコードされたアドレスから実行を開始する。
【0008】
プラットフォームのBIOS(基本入出力システム(basic input output system))は、典型的には、
図1のファームウェアレイアウト20に示すように4つの実行フェーズに分割される。
【0009】
- プリCPUリセット(Pre-CPU Reset) - この段階は、関連するファームウェアコンポーネントによるリセットからCPUを解放する前である。
【0010】
- イニシャルブートブロックローダ(Initial Boot Block Loader、IBBL) - この段階は、共有スタティックRAM(SRAM)から実行され、これは、ホストCPUとセキュリティコントローラ(例えば、CS(M)E/コンバージドセキュリティ及び(マネージャビリティ)エンジン(converged security and (manageability) engine)又はTXE/信頼実行エンジン(trusted execution engine))により共有され、4GBメモリ領域の上部にマッピングされる。
【0011】
- イニシャルブートブロック(Initial Boot Block、IBB) - この段階は、キャッシュアズRAM(Cache as RAM、CAR)として知られる一時メモリから実行される。
【0012】
- OEMブートブロック(OEM Boot Block、OBB) - この段階は、システムDRAMから実行される。
【0013】
これらのフェーズの実装は、異なるコードブロックに緩く結合され、機能の統合は、最終製品の構成及び必要に従って任意とされている。以下の表Iは、これらの様々なフェーズとそれぞれの指定要件の組み合わせを示している。
【表1】
【0014】
一実施形態において、FSPは、実行可能なシリコン初期化命令(executable silicon initialization instructions)を含む。さらに、既存のエコシステムでは、ブート時におけるSRAMのような予め初期化された(pre-initialized)メモリのメモリ制限又は利用できないことに起因して、セキュリティ実施(security enforcement)のための基本的な基盤ブロックは、DRAMが利用可能になるまで(例えば、IBB/FSP-Mの終了までであり、これは、リセットから約400msを意味する)待つ必要があり得る。これは次に、最小ファームウェアコード境界の増加を引き起こし、その結果、より大きいSPIフットプリントと、セキュリティ実施を確保するのにOBB段階/FSP-Sに依存しすぎることをもたらす。そのようなアプローチは、重要なプラットフォームブート又は機能的インパクトなしにOBB段階をスキップできる、潜在的に危険に晒された(compromised)プラットフォームを結果としてもたらす可能性がある。したがって、SoCセキュリティの形態でリスクが存在し得る。
【0015】
ファームウェアレイアウト20に示すさらなるコンポーネントは、CPUマイクロコード、p-UNITファームウェア、PMC(電力管理コントローラ(power management controller))ファームウェア、IPU(イメージ処理ユニット(image processing unit))ファームウェア、ISH(統合センサハブ(integrated sensor hub))ファームウェア、CSME(コンバージドセキュリティ及びマネージャビリティエンジン(converged security and manageability engine))ファームウェア、EC(組み込みコントローラ(embedded controller))、認証コードモジュール(authenticated code module、ACM)、信頼実行技術(trusted execution technology、TXT)、及びSPINOR(シリアルペリフェラルインターフェースNOR)メモリを含む。
【0016】
さらに、より新しくスケーラブルなプラットフォームの進化は、ファームウェア(例えば、U-boot SPL/セカンダリプログラムローダ(secondary program loader))の役割を低減することによりブートフローに重要な変更を加えており、なぜならば、OBBモジュールの役割の大部分は、
図2のブートアーキテクチャ22に示すようにLINUX(登録商標)のようなオープンオペレーティングシステムを使用して(例えば、OBB段階を置き換えて)達成することができるためである。このようなアーキテクチャは、とりわけ不必要なコードを除去することにより、ブートの信頼性及びブート時間を改善し得る。
【0017】
プラットフォームハードニング要件がOBB段階において信頼され、シリコンベンダライブラリと統合されていないことにより、プラットフォームは、それがプラットフォーム又はデバイスの機能性に影響を与えない可能性があるが、下層のセキュリティレイヤは無効である状態のままにされる。したがって、このプラットフォームは「攻撃者の楽園」とみなされる可能性があり、これは以下のシナリオに拡大する。
【0018】
- BIOS LOCK(BLE)が有効にされない
【0019】
-- 国立脆弱性データベース(National Vulnerability Database、NVD)からのケース番号
【0020】
--- CVE-2017-3197
【0021】
--- CLVA-2016-12-001
【0022】
-- 攻撃者がBIOSWEビットを修正することができる
【0023】
-- 攻撃者がOS(オペレーティングシステム)からSPIフラッシュに任意に書き込むことができる
【0024】
- SmiFlashハンドラの複数の脆弱性
【0025】
-- 国立脆弱性データベース(NVD)からのケース番号
【0026】
--- CLVA-2016-12-002
【0027】
--- CVE-2017-3198
【0028】
-- 攻撃者が権限をSMMに上げることができる
【0029】
- FLOCKDNが有効にされない
【0030】
-- 国立脆弱性データベース(NVD)からのケース番号
【0031】
--- CVE-2015-3692
【0032】
--- コンソールアクセスを有する特権攻撃者が、影響を受けたシステムのBIOSを任意のイメージに再度フラッシュする(reflash)ことができる。
【0033】
- EOP HECI(ホスト組み込みコントローラインターフェース(host embedded controller interface))コマンドの送信をスキップする
【0034】
-- 国立脆弱性データベース(NVD)からのケース番号
【0035】
--- CVE-2018-4251
【0036】
-- プラットフォームBIOSが製造モードで動作し続けているか、又はEOP(エンドオブPOST(End of Post))メッセージ結果をME(マネージャビリティエンジン)に送るのに失敗し、依然としてPOST MEI(MEインターフェース(ME interface))メッセージを受け入れており、攻撃者はHMR FPO(ホストME領域フラッシュ保護オーバーライド(Host ME Region Flash Protection Override)) MKHI(MEカーネルホストインターフェース(ME kernel Host Interface))コマンドを送ることができ、それはMEアクセスを開き、攻撃者は再フラッシュによりMEファームウェアを改変することができる。危険に晒されたMEファームウェアは、以降、次のブートから、CPUリセットを妨げる可能性さえある。
【0037】
[技術的問題]
【0038】
シリコンベンダにより提供されるフレームワーク初期化ライブラリと結合されず、任意のフレームワークを通じて構成可能なものとして利用可能にされるセキュリティ機能は、上述のようなシステムの脆弱性をもたらす。さらに、より新しいブートアーキテクチャは、ファームウェア関与の低減を必要とし、これは、重要なプラットフォームハードニングの必要を外部又はサードパーティのベンダの手中に残さない、シリコンプロバイダにより提供される早期プラットフォームハードニング方法の必要をさらに増加させる。したがって、既存のエコシステムにおける問題は、ブートフェーズにおいて早期にプラットフォームをハードニングし、プラットフォームの脆弱性を低減するための、シリコンベンダライブラリにおける技術の不足である。さらに、冗長コードを除去する技術も不足しており、これはブート時間を増加させ、不十分なユーザ体験と非効率的なシステムリソースをもたらす。
【0039】
既に述べたように、全てのセキュリティ実施は現在、DRAMベースのメモリがチップセットの消費に対して利用可能になった後、「ポストメモリフェーズ」の間に扱われる。したがって、BIOSフローは、DRAMベースのメモリが利用可能になるのを待たなければならず、これは、セキュリティ実施のためにより多くの時間を消費する。実際、プラットフォームが既存のハードウェア及びファームウェアの初期化シーケンスを通じて、高速な応答時間、低減されたSPIフットプリント、及びセキュア化されたプラットフォーム(例えば、OBB段階に関して上述したセキュリティ違反がない)の増大する顧客ニーズを満たすことにおいて競争するのは、困難な可能性がある。
【0040】
実施形態は、ブートプロセスにおいて早期にセキュリティ実施動作(例えば、ME動作)を可能にすることにより、セキュア化されたプリブート環境のためにリセットにおいてより多くのメモリを再構成することにより、セキュリティ実施コードによりプラットフォームの早期ハードニングを可能にする。
【0041】
第1に、実施形態は、パッケージキャッシュをSRAMとして構成し、ブートファームウェアのためにリセットにおいてより多くの予め初期化されたメモリを提供するように、ハードウェアを修正する。第2に、この技術は、SRAM INIT Done(SID)メッセージを送信することによりFSPからのME UMA(ユニフォームメモリアクセス(uniform memory access))領域を構成し、該SIDメッセージは、MEファームウェアに対して、SRAMが利用可能であること、及びME UMAが使用の準備ができていることを示す。このようなアプローチは、ブートコンテキストを終了する前に全ての必要なSoCセキュリティ機能が有効にされることを確保する。さらに、実施形態は、プリブート段階でマルチスレッド環境を使用してより高速なシステムブートを達成し、これにおいて、セキュリティ実施は、他の独立したIO初期化と共に並列スレッド上で実行することができる。
【0042】
以下の表IIは、これらの技術的問題が、本明細書に記載される強化された技術によりどのように解決されるかを示す。
【表2】
【0043】
プロセスの進化における遮断は、ブートプロセスに対するL4(レベル4)又はLLC(ラストレベルキャッシュ)メモリのこの大きいチャンクの可視性の不足であり、これは、システムリソースを非効率的にする。実施形態は、セキュア化されたプラットフォームブートを確保するために、セキュリティ実施された検証されたFSPブートコードを使用することにより、システムのブート段階の間のメモリ階層におけるこの遮断に対処する。
【0044】
一例において、この強化技術は、ME UMAメモリを一層早く割り当てることができる。DID(DRAM Init Done)メッセージの同等物を、SRAMメモリを使用してかなり早く送信することができる(例えば、「SRAM Init Done(SID)」)。例えば、SIDは、電源ボタンを押下すると、CPUリセットの100ms以内、及びG3ステート(例えば、アドバンスコンフィギュレーション及びパワーインターフェース(Advance Configuration and Power Interface)/ACPI機械的オフ状態)から600ms以内にMEファームウェアに送信することができる。このようなアプローチは、FSP-Mを使用してIBB内に一層広い空間を提供して、OBBが対処すべきものを残すことなく全ての推奨されたSoC実施を完了する。最終的に、OBBは、より良好な応答時間と低減されたSPIフラッシュサイズのために後に除去することができ、これは、ユーザ体験を強化する。
【0045】
科学的に攻撃面を低減するのに役立つ、予め初期化されたメモリ(SRAM)の能力を利用した後、UEFI BIOSにおける「sec」段階又はcorebootにおける「bootblock」においてでさえ、早期セキュリティ実施を設計することが可能であり得る。
【0046】
次世代クライアントSoCアーキテクチャは大きいオンパッケージキャッシュを導入する可能性があり、これは新しい使用法を可能にする。L4(例えば、「堅固な(Adamantine)」又は「ADM」)キャッシュに対するアクセス時間は、DRAMアクセス時間より一層短い可能性があり、これは、ホストCPU及びセキュリティコントローラの通信を改善するために使用される。実施形態は、ブート最適化におけるイノベーションを保護するのに役立つ。リセットにおいてより大きい予め初期化されたメモリを有するハイエンドシリコンに対して価値が加えられ、潜在的に収益の増加につながる。メモリをリセットにおいて利用可能にすることは、レガシーのBIOSの仮定を無にし、オートモーティブIVI(車載インフォテインメント(in-vehicle infotainment)、例えば、2秒以内にリアビューカメラをオンにする)、家庭用及び産業用ロボットなどのような現代のデバイスユースケースのために低減されたファームウェア段階(例えば、プリCPUリセット段階、IBBL段階、及びIBB段階)を用いたより高速で効率的なBIOSソリューションを作るのにも役立つ。したがって、新たな市場セグメントが利用可能となる可能性がある。
【0047】
実施形態は、プラットフォームがSoC推奨を常に固守することを確保するために、SoCの重要なセキュリティ推奨を、シリコン初期化バイナリ(例えば、FSP-M)で提供されるSoCで特別に包まれたファームウェア必須フェーズ(例えば、IBBL及び/又はIBB)と強固に結合することができる。FSP-Mをスキップすることによりそのようにするのに失敗することで、プラットフォームはOSを起動できなくなる。このようなアプローチは、最終的に攻撃面を低減し、機密の機能ブロック(例えば、知的財産ブロック/IP)を保護する受動的な方法を提供する。
【0048】
さらに、OBBの低減は、最終的にコードサイズの約41%を節約し、=任意のプログラムについて約10%のバグ数低減である。さらに、実施形態は、ODM/OEM設計についてSPIフラッシュサイズを低減するのに役立ち、これはBOMコストを低減する。この強化技術はさらにブートパフォーマンスを有意に改善し、不必要なOBB段階の低減はブートを20倍速くする。
【0049】
[プラットフォームの変更]
【0050】
実装は、ハードウェア、ファームウェア、及び視覚的な変更を結果としてもたらし得る。
【0051】
ハードウェアの変更:
【0052】
L4キャッシュをSRAMの一部として利用可能にすることは、製品資料文書にさらなるCPU能力として列挙される新しい特徴であり得る。例えば、CPUID(CPU識別子(CPU identifier))命令又は専用MSR(モデル固有レジスタ(model-specific register))読み出しが、CPU機能からアクセス可能なL4キャッシュが利用可能かどうかを判定してもよい。
【0053】
さらに、キャッシュサイズは変わってもよく、製品セグメントは「Mセグメント」においてより小さく、「Pセグメント」においてより大きい(例えば、製品資料文書は、新しい特徴を有する仮定のセットを列挙する)。
【0054】
ファームウェアの変更:
【0055】
シリコン製造業者は、実施形態を実装するために、オープンソースBIOS/ブートローダソリューションを使用することができる。
【0056】
レガシーの初期化フローの仮定が、実施形態ではうまく適用できない可能性があるとき、本技術は、下層のファームウェアブート段階の数を低減することができる。実際、最終的なBIOSイメージの解凍は、ブート段階の低減を示し得る。
【0057】
視覚的な変更:
【0058】
BIOS/ブートローダがOBB段階を呼び出すことを意図しない場合にプラットフォームセキュリティの脆弱性を回避することは、視覚的な署名を有してもよい。例えば、BIOS/ブートローダからの何らかの重要なセキュリティプログラミングをスキップすることのような視覚的検査及び/又はリバースエンジニアリングの方法が、セキュリティ脅威に対するプラットフォームの脆弱性を依然として示さない場合、IBBを使用したSoC統合ファームウェアがプラットフォームセキュリティを確保している実施形態をプラットフォームが既に組み込んでいることが示されてもよい。
【0059】
[実装詳細]
【0060】
一般に、ファームウェア/BIOSフェーズの間のシステムメモリ要件は、かなり限定され得る。セキュリティコントローラ/HECI1は、プリブート環境におけるセキュリティコントローラとのホストベース通信のための基盤を確立するために、およそ約64MBのメモリを必要とするPCIデバイスである。
【0061】
補助プロセッサコア/マイクロコントローラは、L4(例えば、SoCベースダイ上の)キャッシュの一部を(上記で与えられた要件により)プラットフォームファームウェア使用のためのSRAMとして初期化する。以下の「修正されたプリリセット初期化フロー」を参照する。
【0062】
製品資料文書は、ファームウェア設計のためのSRAMの物理的な開始及び限界を捉えることができる。
【0063】
ファームウェアフローは、FSPがDRAMベースのメモリに依存することなくSRAMマップドメモリ自体からME UMAのために必要なメモリを割り当て、検証されたブートを確保するためにFSP内のセキュリティモジュールを呼び出すことができるように、変更され得る。メモリの可用性に起因してプロセスリセットにおいてマルチコア能力が利用可能であるため、セキュリティ実施も並行して動作することができる。
【0064】
セキュリティ上の理由で、SRAM範囲の上部にさらなるセキュリティロックダウンソリューションを構築することが必要とされ得る。このような場合、L4 SRAM範囲は、OSへブートする前に無効にされる/ロックダウンされる。この無効/ロックダウンは、プラットフォームリセットなしにオーバーライドすることができない。一実施形態において、FSP(例えば、クローズドソースバイナリブロブ)は、「エンドオブファームウェア(End of Firmware)」ブートイベントでロックダウンを扱う。
【0065】
図3は、コアリセットの前に初期化されたSRAMに対する修正されたプリリセットブートシーケンス24を示す。より詳細には、
図3は、SoCセキュリティ推奨を固守するようにファームウェアを最適化するためにプリリセットにおいてL4キャッシュがSRAMとして構成されるシステムの修正されたファームウェアブートフローを示す。
【0066】
フェーズ#1は、以下の原理に依存する。
【0067】
- パッケージキャッシュをファームウェアアクセスのためのSRAMとして構成するための、ハードウェアの変更
【0068】
- 早期のセキュリティコントローラ通信に対してME UMAメモリを割り当てるためにファームウェアが使用するための、リセットにおけるさらなる予め初期化されたメモリ
【0069】
- ファームウェアフローは、初期化するのにより長い時間を要するDRAMメモリトレーニングとは独立とすることができる(例えば、L4キャッシュメモリ範囲へのアクセスは、DRAMメモリアクセスと比較して一層速くなる)。
【0070】
図4は、メモリ階層26についての様々なシステムメモリアクセスにおける応答時間を示す。早期のファームウェア段階(例えば、DRAM初期化の前)は、ファームウェアフットプリントを低減するために回避され得る。例えば、実施形態は、BIOSフローにおいてキャッシュアズram(CAR、例えば、「tempRAM init」)を使用する必要はない。このようなアプローチは、ブートローダ空間における複雑なアセンブリプログラミングを低減する。FSP-Tは、要求されたME UMAメモリをSRAMリソースから割り当てることを決定し、次いでCPUリセットの約100ms以内にME UMAベースアドレスをMSEG_BASEレジスタに書き込み、FSP-M内のセキュリティモジュールがMEIをさらに送信できるようにする(例えば、現在のフローにおけるDRAMトレーニング後と比較してブートフロー内で一層早い)ことができる。さらに、CARティアダウン(tear down)論理が回避され得る。実施形態は、ブートローダ空間における一時メモリ(CAR)から永続メモリ(DRAMベース)への間の切り替えを回避し、ブートローダ実行全体をSRAMベースの固定メモリから駆動することができる。一例において、DRAM初期化は、ペイロード又はOSがより高いメモリ要件のためにDRAMベースのリソースを使用できることを確実にするために、ブートローダブートシーケンスの終わりに実行される。このプロセスでは、BIOSからのSoCセキュリティ実施全体が、利用可能及び使用されるDRAMリソースから切り離される。したがって、MRC(メモリ参照コード(memory reference code))が現在のフローにおいてDRAMリソースを初期化する間、ボトルネックに直面しない。
【0071】
その後、FSPは、SRAMが利用可能であること及びME UMAが使用の準備ができていることをMEファームウェアに示すSRAM INIT Done(SID)メッセージを送信する。SRAM INIT Doneメッセージは、全てのブートフロー上でFSPにより送信されてもよい。
【0072】
FSPがSIDメッセージを送信した後、BIOSはSID ACK(確認応答(acknowledgement))メッセージを待つ。このACKメッセージは、要求された「ME BIOS Action」を含み、BIOSは、可能な限り早くこれに基づいて動作する。
【0073】
SID及びME UMAのセットアップが、既存のフローで行われるMRC初期化(例えば、最初のブートにおいて約20~40秒、又は連続するブートにおいて約400ms)と比較してCPUリセットのブートフローにおいてかなり早く(例えば、約100ms以内に)発生するため、「ME BIOS Action」がプラットフォームリセットを要求するとき、さらなるMRC初期化を回避することにより、システムブート時間を節約するのにも役立つ可能性がある。
【0074】
例えば、MRC初期化が行われた後に「ME BIOS Action」が扱われるが、MRCキャッシュがまだブートローダにより保存されていない既存のフローについて考える。プラットフォームリセットを発行すると、次のブートでは、ブートローダがOBB段階の間にMRCキャッシュを保存するために使用されたため、FSPはMRCキャッシュを見つけないことになる。その結果、MRC初期化の繰り返しになり、これは、ファームウェアブート時間における約20~40秒の余分を引き起こす。ME UMA領域がDRAMリソース依存関係に基づいて設定されているため、プラットフォームブート時間のこの無駄は不十分なユーザ体験を結果としてもたらす。ME UMA領域をDRAMリソースから独立させ、L4メモリをSRAM又はLLCキャッシュとして使用することは、「ME BIOS Action」リセットに起因するこのさらなるMRCトレーニングを回避する。セキュリティポリシーを満たすために、SRAMメモリ範囲は、オペレーティングシステムへブートする前にロックダウンされてもよい。
【0075】
フェーズ#2は、L4キャッシュをリセットにおいてSRAMとして使用する実施された検証されたFSPブートを伴う。
【0076】
実施形態は、
図3及び
図4に記載の設計要件を使用し、これは、より大きい及びより高速なメモリをリセットにおいて利用可能にし、ファームウェアフローを修正してその予め初期化されたメモリを使用し、むしろFSPフローを定義して、DRAMリソースに依存することなくセキュアなSoCブートを確保する。
【0077】
さらに、実施形態は、プリブート段階でマルチスレッド環境を使用して、セキュリティ実施を別の独立したIO初期化と共に並列スレッド上で実行することができる、より高速なシステムブートを達成する。
【0078】
ハードウェア&ファームウェア設計詳細:
【0079】
L4キャッシュは、SRAMの一部としてCPUがアクセス可能である。
【0080】
実施形態は、フェーズ#1を使用してリセット制約において利用可能な限られたメモリを克服することができ、したがって、全てのコア(例えば、ブートストラッププロセッサ/BSP及びアプリケーションプロセッサ/AP)を早期にリセットから移動させ(bring)、BSPと同様にAPにリソースを割り当てて並列タスクを実行することが実現可能である。
【0081】
実施形態は、OSへブートする前にL4範囲を無効にする/ロックダウンする。
【0082】
図3は、L4キャッシュがプリリセットにおいてSRAMとして構成され、CPUがメモリ制約なしにリセットにおいてイネーブルであり、検証されたファームウェアブートを確保するシステムの修正ファームウェアブートフローを示す。リセットにおいてファームウェアが使用するのに、より多くの予め初期化されたメモリが利用可能である。ファームウェアフローは、初期化するのにより長い時間を要するDRAMメモリトレーニングとは独立とすることができる。早期のファームウェア段階(例えば、DRAM初期化の前)は、ファームウェアフットプリントを低減するために回避することができる。
【0083】
a) フェーズ#1の間、SoC内の補助プロセッサコア/マイクロコントローラは、L4キャッシュをSRAMとして初期化し、コアの関与を必要としない。
【0084】
b) コアがリセットから解放される前に、より多くのメモリが利用可能である。
【0085】
c) BIOSイメージは、コアがリセットから出る前でもSRAMにロードされる。
【0086】
d) BIOSフローにおいてキャッシュアズram(CAR)(例えば、「tempRAM init」)を使用することは必要ではない。このようなアプローチは、ブートローダ空間における複雑なアセンブリプログラミングを低減する。
【0087】
e) CPU、チップセット、及びPCI(ペリフェラルコンポーネントインターコネクト)の列挙は、DRAM初期化に依存することなく早期に実行することができる。むしろSRAMが、全てのCPU/チップセットプログラミングを実行するために使用される。
【0088】
IBBL/FSP-Tに対する修正:
【0089】
f) Bus0:Device22:Function0:Register0x44[bit0:5]でME UMA SIZE(MUSZ)フィールドを読み出し、これは、MEに必要なメモリサイズを示す。通常、ME UMA領域に対して割り当てるのは128MB以下のメモリである。
【0090】
g) ME UMA使用のためにL4-SRAMバケットから有意により大きいチャンクのメモリを区分けする。
【0091】
h) SRAM INIT Done HECIコマンドをMEファームウェアに送信することにより、SRAM Init Done手順に入る。
【0092】
i) HECI SRAM Init Doneが成功裏に完了し、SRAM Init Done ACKでHOST CPUに返答する。
【0093】
j) SID ACKを受信すると、FSPは「ME BIOS Action」を読み出す。
【0094】
k) アクションがプラットフォームをリセットすることである場合、上記a)から再度開始する。他の場合、BIOSはPOSTすることを継続する。
【0095】
l) セキュリティコントローラのIMRベース及び限界を割り当てる。
【0096】
IBB/FSP-Mに対する修正:
【0097】
ホストCPU及びセキュリティコントローラ通信: BIOSは、セキュリティ関連のHECIコマンドを送信するため及びMEデバイスレジスタアクセスのためにSRAMベースのメモリリソースを使用し続ける。
【0098】
m) ChipsetInit: IBBL段階の終わりにME UMAが準備できた後、IBB段階内のFSP-Mは、PCIEベースのデバイスのためのFSP-M関連のポリシー構成に基づいてPCIE関連デバイスHSIO(高速入出力(high speed input output))レーン及びFIA(フレキシブルI/Oアダプタ)プログラミングのためにチップセット初期化テーブルをMEファームウェアに送信する。
【0099】
n) エンドオブPOST(End of POST、EOP): IBB/FSP-Mは、EOPメッセージをMEファームウェアに送信し、EOPメッセージに対する成功の応答を受信した後、さらに進む。IBB/FSP-M呼び出しがスキップされている場合、プラットフォームはさらにブートすることができないため、IBBはOSへのシステムブートを許可せず、EOPの送信に対してMEコントローラからACKが受信されない。EOPが成功である場合、このメッセージは、MEファームウェアをプリブートモードから出し、OSモードに移行する。ひとたびMEがOSモードになると、MEは、プリブート環境で使用されるいかなるMEIメッセージも受け入れない。そうでない場合、FSP-Mは、PMC(電力管理コントローラ)ベースのIPCコマンドを使用してMEを無効にして、OSへブートした後、HECIコントローラが公開されて(exposed)いないことを確保する(例えば、HECIコントローラPCIデバイスBus0:Device22:Function0が、PCIツリー上で可視になる)。したがって、システムを攻撃しやすくさせるいかなるMEIメッセージも受け入れられない。EOPがIBB内で送信されていることの確保は、通常のBIOSセキュリティ初期フローの最後の動作として検証されたシステムブートを確保するのに適格である。
【0100】
o) MEデバイスの構成: 全てのHECI通信がこの段階の前に行われるため、より良好なプラットフォーム電力数(platform power number)を使用して、未使用のデバイスをD0i3ステート(例えば、ACPIデバイス状態)にする。
【0101】
典型的には、PCH(プラットフォームコントローラハブ、例えば、入力/出力モジュール)上に3つのHECIデバイスがある。HECI1のみが有効にされ、他は有効にされた機能に依存する。HECI1が健全な状態(例えば、正常なパス)で動作していないとき、FSP-SはHECIを(例えば、Private CR disableレジスタを介して)無効にし、BIOSはまずHECIをD0i3ステートに、次いでD3ステートにし、次いでHECIを無効にする。BIOSがHECIを無効にしない場合、BIOSは、OSをロードする前にデバイスをD0i3状態にする。
【0102】
PCH上に提示されるSOL(シリアルオーバーローカルエリアネットワーク/LAN)及びUSBr(ユニバーサルシリアルバスリダイレト)デバイスがある。対応するME SKU(ストックキーピングユニット、例えば、Corporate SKU)で動作するときのみ、SOL及びUSBrデバイスを有効にする。
【0103】
図5は、IBB内の修正されたME通信フロー28を示す。
【0104】
p) SPIロックダウン: ブートローダ及びFSP-MなどのIBB内の構成要素は、DRAMが利用可能になった直後にMRCキャッシュを記憶するために一緒に動作する。このようなアプローチは、FSP-MがOSへブートする前にFlash Configuration Lock-Down(FLOCKDN)フラッシュプログラミングレジスタを設定するのに役立つ。さらに、この技術は、Flash Protected Range n(BIOS_FPRx)が不正なSPI書き込み(イベントログ、MRCキャッシュなど)を防ぐことを可能にする。
【0105】
q) BIOS制御レジスタ: FSP-Mは、BiosInterfaceLockDown(BILD)、BIOS Lock Enable(BLE)、BIOS Write Enable(BWE)、及びSMM BIOS Write Protection(SMM BWP)などのBIOS制御レジスタビットを設定することができる。
【0106】
図6は、IBB内の修正されたチップセットプログラミングフロー30を示す。
【0107】
r) この段階ではIBBの終わりに、FSP-Mは、検証されたファームウェアブートを確保するために全ての可能なSoCチップセットプログラミング及びセキュリティ通信を実施している。
【0108】
s) OBB段階が存在する場合、OBB段階は以下のようなさらなるプログラミングを実行し続けてもよい。
【0109】
- GPIO(汎用入出力(general purpose input-output))初期化 - SoC推奨機能ブロック及びボード関連コンポーネントのためのGPIO
【0110】
- マルチプロセッサ初期化
【0111】
- GOPサービスを使用してグラフィックスデバイスを初期化する
【0112】
- OSへのブートのためのブロックデバイスを初期化する
【0113】
- PCIデバイス列挙
【0114】
- ACPIテーブルを公開する
【0115】
そうでない場合、ファームウェアブート制御は、Linuxbootなどのペイロードに移って、OBB段階をペイローダに置き換えた後、これらの動作を実行する(例えば、以下のフェーズ「v」)。
【0116】
t) CARティアダウン論理もまた回避され得る。
【0117】
u) ブートローダ空間における一時メモリ(CAR)から永続メモリ(DRAMベース)への間の切り替えを回避し、ブートローダ実行全体をSRAMベースの固定メモリから駆動することができる。
【0118】
v) ブートローダブートシーケンスの終わりにDRAM初期化を実行して、ペイロード又はOSがより高いメモリ要件に対してDRAMベースのリソースを使用できることを確保する。
【0119】
w) POSTサービスの終わりに、BIOSはSRAM範囲をロックダウンして、この範囲をデコードするいかなるアクセスも回避する。
【0120】
図7は、リセットにおいて予め初期化されたSRAMメモリを有する、既存32対強化34の早期実施セキュリティ初期化(例えば、coreboot)フローを示す。
【0121】
ファームウェアへの影響:
【0122】
- OBB/FSP-S段階が生産BIOS IFWI(統合ファームウェア/FWイメージ)に含まれないとしてもセキュア化されたファームウェアブート。
【0123】
- OBBの低減は、最終的にコードサイズの約41%を節約し、=約10%のバグ数低減である。
【0124】
- この努力は、OEM/ODMがSPIフラッシュサイズを低減するのに役立ち得る。
【0125】
- 有意なブートパフォーマンスを改善する - 最新のCHROMEプラットフォームでは、さらに約300~350msのブート時間を低減することができる。
【0126】
- L4キャッシュをSRAMとして使用する軽量ファームウェアを設計するのに役立ち、これは、OSへブートするためにFSP(例えば、SoCシリコン初期化ブロブ)及びブートローダ方法論を用いて最小限かつ重要なもののみの機能ブロックを行う。
【0127】
新しいセキュリティ技術との相互作用:
【0128】
将来のクライアントCPUのために、集中型セキュリティサービスを提供する組み込みセキュリティエンジン(embedded security engine、ESE)が存在してもよい。FSPを拡張L4キャッシュにロードし認証するこのアプローチは、関連するFSPイメージ認証をESEに委託させることができる。結果として、セキュリティ論理のBIOS実装において潜在的な欠陥が回避され得る。
【0129】
図8は、セキュリティ認証がESE42にオフロードされるハードウェア及びファームウェア40の設計を示す。一実施形態において、ESE42は、来たるFSPステート検証のために呼び出され得る。妥当性が確認された場合、ESE42は、制御をそれぞれのFSPエントリポイントに渡すことができる。
【0130】
図9Aは、シリコン初期化を行う方法50を示す。方法50は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなどのマシン又はコンピュータ読取可能記憶媒体に記憶された論理命令のセットとして1つ以上のモジュールにおいて、例えばプログラマブル論理アレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブル論理デバイス(CPLD)などの構成可能論理において、例えば特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)、又はトランジスタ-トランジスタ論理(TTL)技術などの回路技術を使用する固定機能論理ハードウェアにおいて、又はこれらの任意の組み合わせで実装されてもよい。
【0131】
例えば、本方法で示される動作を実行するためのコンピュータプログラムコードは、JAVA(登録商標)、SMALLTALK(登録商標)、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれてもよい。さらに、論理命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、状態設定データ、集積回路の構成データ、電子回路及び/又はハードウェアに対しネイティブの他の構造コンポーネント(例えば、ホストプロセッサ、中央処理装置/CPU、マイクロコントローラなど)をパーソナライズする状態情報を含んでもよい。
【0132】
例示の処理ブロック52は、プロセッサのSRAMをプロセッサのリセットに応答して初期化することを提供する。一実施形態において、SRAMは、プロセッサのラストレベルキャッシュに位置する。さらに、ブロック52は、レジスタからサイズ情報を読み出すことを含んでもよく、SRAMは、サイズ情報に基づいて初期化される。一例において、ブロック54は、SRAMを1つ以上のセキュリティ実施動作に割り当てる。さらに、ブロック56は、BIOSフェーズの完了の前に、1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガすることができる。図示の例において、マルチスレッド実行は、DRAM初期化とは独立してトリガされる。一実施形態において、用語「独立して」は、DRAM初期化が発生したかどうかにかかわらずマルチスレッド実行をトリガする能力を指す。
【0133】
図9Bは、IBBを動作させる方法60を示す。方法60は、RAM、ROM、PROM、ファームウェア、フラッシュメモリなどのマシン又はコンピュータ読取可能記憶媒体に記憶された論理命令のセットとして1つ以上のモジュールにおいて、例えばPLA、FPGA、CPLDなどの構成可能論理において、例えばASIC、CMOS、又はTTL技術などの回路技術を使用する固定機能論理ハードウェアにおいて、又はこれらの任意の組み合わせで実装されてもよい。
【0134】
例示のブロック62は、SRAMの初期化が完了したときにセキュリティコントローラに通知を送信することを提供する。一実施形態において、ブロック64は、セキュリティコントローラからの通知の確認応答においてBIOSアクション情報を識別する。さらに、ブロック66は、BIOSアクション情報に従って1つ以上の動作(例えば、リセット動作)を行う。
【0135】
図9Cは、IBBLを動作させる方法70を示す。方法70は、RAM、ROM、PROM、ファームウェア、フラッシュメモリなどのマシン又はコンピュータ読取可能記憶媒体に記憶された論理命令のセットとして1つ以上のモジュールにおいて、例えばPLA、FPGA、CPLDなどの構成可能論理において、例えばASIC、CMOS、若しくはTTL技術などの回路技術を使用する固定機能論理ハードウェアにおいて、又はこれらの任意の組み合わせで実装されてもよい。
【0136】
例示のブロック72は、OSへのブートの前にSRAMを無効にすることを提供する。一実施形態において、ブロック74は、セキュリティコントローラにEOPメッセージを送信する。さらに、ブロック76は、セキュリティコントローラからのEOPメッセージの確認応答に応答して、セキュリティコントローラをプリブートモードからOSモードに移行する。
【0137】
次に、
図10を参照し、パフォーマンス強化コンピューティングシステム110を示す。システム110は、一般に、コンピューティング機能(例えば、パーソナルデジタルアシスタント/PDA、ノートブックコンピュータ、タブレットコンピュータ、コンバーチブルタブレット、サーバ)、通信機能(例えば、スマートフォン)、撮像機能(例えば、カメラ、カムコーダ)、メディア再生機能(例えば、スマートテレビジョン/TV)、ウェアラブル機能(例えば、時計、アイウェア、ヘッドウェア、履物、ジュエリー)、車両機能(例えば、車、トラック、オートバイ)、ロボット機能(例えば、自律ロボット)、モノのインターネット(Internet of Thing、IoT)機能など、又はこれらの任意の組み合わせを有する電子デバイス/プラットフォームの一部でもよい。
【0138】
図示の例において、システム110は、システムメモリ116(例えば、DRAM)に結合された統合型メモリコントローラ(IMC、これは複数のダイにわたり分散されてもよい)114を有するホストプロセッサ112(例えば、CPU)を含む。一実施形態において、IOモジュール118がホストプロセッサ112に結合される。例示のIOモジュール118は、例えば、ディスプレイ124(例えば、タッチスクリーン、液晶ディスプレイ/LCD、発光ダイオード/LEDディスプレイ)、ネットワークコントローラ126(例えば、有線及び/又は無線)、及び大容量記憶装置128(例えば、ハードディスクドライブ/HDD、光ディスク、ソリッドステートドライブ/SSD、フラッシュメモリ等)と通信する。システム110は、グラフィックスプロセッサ120(例えば、グラフィックス処理ユニット/GPU)をさらに含んでもよい。一実施形態において、ホストプロセッサ112、IOモジュール118、及びグラフィックスプロセッサ120は、補助プロセッサ130と共にSoC132に組み込まれる。さらに、ホストプロセッサ112は、SRAM136を有するLLC134を含んでもよい。
【0139】
一例において、SRAM136は、実行可能なシリコン初期化命令のセット(例えば、FSP)を含み、これは、補助プロセッサ130により実行されたときにコンピューティングシステム110及び/又は補助プロセッサ130に、既に論じた方法50(
図9A)、方法60(
図9B)、及び/又は方法70(
図9C)の1つ以上の態様を実施させる。したがって、補助プロセッサ130は、SoC132のリセットに応答してSRAM136を初期化し、SRAM136を1つ以上のセキュリティ実施動作に割り当て、BIOSフェーズの完了の前に1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガすることができる。さらに、マルチスレッド実行は、システムメモリ116(例えば、DRAM)の初期化とは独立してトリガされてもよい。
【0140】
図11は、半導体装置140(例えば、補助プロセッサを含むチップ及び/又はパッケージ)を示す。図示の装置140は、1つ以上の基板142(例えば、シリコン、サファイア、ガリウムヒ素)と、基板142に結合された及び論理144(例えば、トランジスタアレイ及び他の集積回路/ICコンポーネント)を含む。一実施形態において、論理144は、既に論じた方法50(
図9A)、方法60(
図9B)、及び/又は方法70(
図9C)の1つ以上の態様を実施する。したがって、論理144は、プロセッサ(例えば、ホストプロセッサ)のSRAMをプロセッサのリセットに応答して初期化し、SRAMを1つ以上のセキュリティ実施動作に割り当て、BIOSフェーズの完了の前にセキュリティ実施動作のマルチスレッド実行をトリガする。さらに、マルチスレッド実行は、DRAM初期化の初期化とは独立してトリガされてもよい。
【0141】
論理144は、構成可能論理又は固定機能ハードウェア論理に少なくとも部分的に実装されてもよい。一例において、論理144は、基板142内に配置された(例えば、埋め込まれた)トランジスタチャネル領域を含む。したがって、論理144と基板142との間のインターフェースは、階段接合でなくてもよい。論理144は、さらに、基板142の初期ウエハ上に成長するエピタキシャル層を含むと考えられてもよい。
【0142】
図12は、一実施形態によるプロセッサコア200を示す。プロセッサコア200は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、又はコードを実行する他のデバイスなどの、任意のタイプのプロセッサのコアでもよい。
図12では1つのプロセッサコア200のみが示されているが、処理要素は、代わりに、
図12に示すプロセッサコア200を2つ以上含んでもよい。プロセッサコア200はシングルスレッドコアでもよく、あるいは、少なくとも1つの実施形態では、プロセッサコア200は、コア当たり2つ以上のハードウェアスレッドコンテキスト(又は「論理プロセッサ」)を含み得るという点で、マルチスレッド化されてもよい。
【0143】
図12は、プロセッサコア200に結合されたメモリ270も示している。メモリ270は、当業者に知られ又はさもなければ利用可能であるような広範な種類のメモリ(メモリ階層の様々なレイヤを含む)のいずれかでもよい。メモリ270は、プロセッサコア200により実行される1つ以上のコード213命令を含むことができ、コード213は、既に論じた方法50(
図9A)、方法60(
図9B)、及び/又は方法70(
図9C)を実現することができる。プロセッサコア200は、コード213により示される命令のプログラムシーケンスに従う。各命令は、フロントエンド部分210に入り、1つ以上のデコーダ220により処理され得る。デコーダ220は、その出力として、所定のフォーマットの固定幅マイクロオペレーションなどのマイクロオペレーションを生成することができ、あるいは、オリジナルのコード命令を反映する他の命令、マイクロ命令、又は制御信号を生成することができる。例示のフロントエンド部分210は、レジスタリネーミング論理225及びスケジューリング論理230をさらに含み、これらは一般に、リソースを割り当て、実行のための変換命令に対応するオペレーションをキューイングする。
【0144】
プロセッサコア200は、実行ユニット255-1~255-Nのセットを有する実行論理250を含むように示されている。いくつかの実施形態が、特定の機能又は機能のセットに対して専用の複数の実行ユニットを含んでもよい。他の実施形態が、特定の機能を実行できる1つの実行ユニットのみ又は1つの実行ユニットを含んでもよい。例示の実行論理250は、コード命令により指定されたオペレーションを実行する。
【0145】
コード命令により指定されたオペレーションの実行の完了後、バックエンド論理260は、コード213の命令をリタイアさせる(retires)。一実施形態において、プロセッサコア200は、アウトオブオーダ実行を可能にするが、命令のインオーダリタイアメントを必要とする。リタイアメント論理265は、当業者に知られる様々な形態(例えば、リオーダバッファ等)をとることができる。このようにして、プロセッサコア200は、コード213の実行の間、少なくとも、デコーダにより生成される出力、レジスタリネーミング論理225により利用されるハードウェアレジスタ及びテーブル、並びに実行論理250により修正される任意のレジスタ(図示せず)の観点で変換される。
【0146】
図12には示されていないが、処理要素は、プロセッサコア200を有するチップ上に他の要素を含んでもよい。例えば、処理要素は、プロセッサコア200と共にメモリ制御論理を含んでもよい。処理要素は、I/O制御論理を含んでもよく、かつ/あるいはメモリ制御論理と統合されたI/O制御論理を含んでもよい。処理要素は、さらに、1つ以上のキャッシュを含んでもよい。
【0147】
次に、
図13を参照し、一実施形態によるコンピューティングシステム1000の実施形態のブロック図を示す。
図13には、第1の処理要素1070及び第2の処理要素1080を含むマルチプロセッサシステム1000が示されている。2つの処理要素1070及び1080が示されているが、システム1000の実施形態は1つのそのような処理要素のみを含んでもよいことが理解されるべきである。
【0148】
システム1000は、ポイントツーポイントインターコネクトシステムとして示され、第1の処理要素1070及び第2の処理要素1080は、ポイントツーポイントインターコネクト1050を介して結合される。
図13に示すインターコネクトのいずれか又は全てが、ポイントツーポイントインターコネクトでなくマルチドロップバスとして実装されてもよいことを理解されたい。
【0149】
図13に示すように、処理要素1070及び1080の各々は、第1及び第2のプロセッサコア(すなわち、プロセッサコア1074a及び1074bと、プロセッサコア1084a及び1084b)を含む、マルチコアプロセッサでもよい。そのようなコア1074a、1074b、1084a、1084bは、
図12に関連して上記で論じたものと同様の方法で命令コードを実行するように構成され得る。
【0150】
各処理要素1070、1080は、少なくとも1つの共有キャッシュ1896a、1896bを含んでもよい。共有キャッシュ1896a、1896bは、それぞれ、コア1074a、1074bと、1084a、1084bなどの、プロセッサの1つ以上のコンポーネントにより利用されるデータ(例えば、命令)を記憶してもよい。例えば、共有キャッシュ1896a、1896bは、プロセッサのコンポーネントによるより速いアクセスのために、メモリ1032、1034に記憶されたデータをローカルにキャッシュしてもよい。1つ以上の実施形態において、共有キャッシュ1896a、1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュなどの1つ以上の中間レベルキャッシュ、ラストレベルキャッシュ(LLC)、及び/又はこれらの組み合わせを含んでもよい。
【0151】
2つの処理要素1070、1080のみで示されているが、実施形態の範囲はそのように限定されないことが理解されるべきである。他の実施形態において、1つ以上のさらなる処理要素が、所与のプロセッサ内に存在してもよい。あるいは、処理要素1070、1080の1つ以上が、アクセラレータ又はフィールドプログラマブルゲートアレイなどの、プロセッサ以外の要素でもよい。例えば、さらなる処理要素には、第1のプロセッサ1070と同じであるさらなるプロセッサ、第1のプロセッサ1070に対して異種又は非対称のプロセッサであるさらなるプロセッサ、アクセラレータ(例えば、グラフィックスアクセラレータ又はデジタル信号処理(DSP)ユニット)、フィールドプログラマブルゲートアレイ、又は任意の他の処理要素を含んでもよい。処理要素1070、1080の間には、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費特性などを含むメリットのメトリックの範囲(spectrum)の観点で様々な差があり得る。これらの差は、処理要素1070、1080間の非対称性及び異種性として効果的に現れ得る。少なくとも1つの実施形態では、様々な処理要素1070、1080は、同じダイパッケージ内に存在し得る。
【0152】
第1の処理要素1070は、メモリコントローラ論理(MC)1072とポイントツーポイント(P-P)インターフェース1076及び1078をさらに含んでもよい。同様に、第2の処理要素1080は、MC1082とP-Pインターフェース1086及び1088を含んでもよい。
図13に示すように、MC1072及び1082は、プロセッサをそれぞれのメモリに、すなわち、メモリ1032及びメモリ1034に結合し、これらは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部でもよい。MC1072及び1082は、処理要素1070、1080に統合されたものとして示されているが、代替実施形態では、MC論理は、処理要素1070、1080の中に統合されるのでなくその外部の個別論理でもよい。
【0153】
第1の処理要素1070及び第2の処理要素1080は、それぞれ、P-Pインターコネクト1076、1086を介して、I/Oサブシステム1090に結合されてもよい。
図13に示すように、I/Oサブシステム1090は、P-Pインターフェース1094及び1098を含む。さらに、I/Oサブシステム1090は、I/Oサブシステム1090を高性能グラフィックスエンジン1038と結合するインターフェース1092を含む。一実施形態において、バス1049は、グラフィックスエンジン1038をI/Oサブシステム1090に結合するために使用され得る。あるいは、ポイントツーポイントインターコネクトがこれらのコンポーネントを結合してもよい。
【0154】
次に、I/Oサブシステム1090は、インターフェース1096を介して第1のバス1016に結合されてもよい。一実施形態において、第1のバス1016は、ペリフェラルコンポーネントインターコネクト(PCI)バス、又はPCI Expressバス若しくは他の第3世代I/Oインターコネクトバスなどのバスでもよいが、実施形態の範囲はそのように限定されない。
【0155】
図13に示すように、様々なI/Oデバイス1014(例えば、バイオメトリクススキャナ、スピーカ、カメラ、センサ)が、第1のバス1016を第2のバス1020に結合し得るバスブリッジ1018と共に、第1のバス1016に結合されてもよい。一実施形態において、第2のバス1020は、ローピンカウント(LPC)バスでもよい。様々なデバイスが第2のバス1020に結合されてもよく、例えば、一実施形態において、キーボード/マウス1012と、通信デバイス1026と、コード1030を含み得るディスクドライブ又は他の大容量記憶デバイスなどのデータ記憶ユニット1019が含まれる。例示のコード1030は、既に論じた方法50(
図9A)、方法60(
図9B)、及び/又は方法70(
図9C)を実現することができ、既に論じたコード213(
図12)と同様であり得る。さらに、オーディオI/O1024が第2のバス1020に結合されてもよく、バッテリ1010がコンピューティングシステム1000に電力を供給してもよい。
【0156】
他の実施形態が考えられることに留意されたい。例えば、
図13のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのような通信トポロジを実装してもよい。さらに、
図13の要素は、代わりに、
図13に示すより多くの又は少ない集積チップを使用して区分されてもよい。
【0157】
[さらなる注記及び例]
【0158】
例1は、ネットワークコントローラと、ダイナミックランダムアクセスメモリ(DRAM)を含むシステムメモリと、上記ネットワークコントローラ及び上記DRAMに結合されたシステムオンチップ(SoC)であり、補助プロセッサ及びホストプロセッサを含む、SoCと、を含むコンピューティングシステムを含み、上記ホストプロセッサは、スタティックランダムアクセスメモリ(SRAM)を含み、上記SRAMは、実行可能なシリコン初期化命令のセットを含み、上記シリコン初期化命令は、上記補助プロセッサにより実行されたときに当該コンピューティングシステムに、上記SoCのリセットに応答して上記SRAMを初期化し、上記SRAMを1つ以上のセキュリティ実施動作に割り当て、基本入出力システム(BIOS)フェーズの完了の前に上記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガし、上記マルチスレッド実行は、上記DRAMの初期化とは独立してトリガされることをさせる。
【0159】
例2は、例1に記載のコンピューティングシステムを含み、上記SRAMは、上記ホストプロセッサのラストレベルキャッシュに位置する。
【0160】
例3は、例1に記載のコンピューティングシステムを含み、レジスタ、をさらに含み、上記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、上記レジスタからサイズ情報を読み出すことをさせ、上記SRAMは、上記サイズ情報に基づいて初期化される。
【0161】
例4は、例1に記載のコンピューティングシステムを含み、上記SoCは、セキュリティコントローラをさらに含み、上記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、上記SRAMの初期化が完了したとき上記セキュリティコントローラに通知を送信し、上記セキュリティコントローラからの上記通知の確認応答においてBIOSアクション情報を識別し、上記BIOSアクション情報に従って1つ以上の動作を行うことをさせる。
【0162】
例5は、例1に記載のコンピューティングシステムを含み、セキュリティコントローラ、をさらに含み、上記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、上記セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信し、上記セキュリティコントローラからの上記EOPメッセージの確認応答に応答して、上記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行することをさせる。
【0163】
例6は、例1乃至5のうちいずれか1つに記載のコンピューティングシステムを含み、上記シリコン初期化命令は、実行されたときにさらに当該コンピューティングシステムに、オペレーティングシステムへのブートの前に上記SRAMを無効にすることをさせる。
【0164】
例7は、1つ以上の基板と、上記1つ以上の基板に結合された論理と、を含む半導体装置を含み、上記論理は、構成可能論理又は固定機能ハードウェア論理のうち1つ以上に少なくとも部分的に実装され、上記1つ以上の基板に結合された上記論理は、プロセッサのスタティックランダムアクセスメモリ(SRAM)を上記プロセッサのリセットに応答して初期化し、上記SRAMを1つ以上のセキュリティ実施動作に割り当て、基本入出力システム(BIOS)フェーズの完了の前に上記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガし、上記マルチスレッド実行は、ダイナミックRAM(DRAM)初期化とは独立してトリガされる。
【0165】
例8は、例7に記載の装置を含み、上記SRAMは、上記プロセッサのラストレベルキャッシュに位置する。
【0166】
例9は、例7に記載の装置を含み、上記1つ以上の基板に結合された上記論理は、レジスタからサイズ情報を読み出し、上記SRAMは、上記サイズ情報に基づいて初期化される。
【0167】
例10は、例7に記載の装置を含み、上記1つ以上の基板に結合された上記論理は、上記SRAMの初期化が完了したときセキュリティコントローラに通知を送信し、上記セキュリティコントローラからの上記通知の確認応答においてBIOSアクション情報を識別し、上記BIOSアクション情報に従って1つ以上の動作を行う。
【0168】
例11は、例7に記載の装置を含み、上記1つ以上の基板に結合された上記論理は、セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信し、上記セキュリティコントローラからの上記EOPメッセージの確認応答に応答して、上記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行する。
【0169】
例12は、例7乃至11のうちいずれか1つに記載の装置を含み、上記1つ以上の基板に結合された上記論理は、オペレーティングシステムへのブートの前に上記SRAMを無効にする。
【0170】
例13は、例7乃至12のうちいずれか1つに記載の装置を含み、上記1つ以上の基板に結合された上記論理は、上記1つ以上の基板内に配置されたトランジスタチャネル領域を含む。
【0171】
例14は、実行可能なシリコン初期化命令のセットを含む少なくとも1つのコンピュータ読取可能記憶媒体を含み、上記シリコン初期化命令は、コンピューティングシステムにより実行されたときに上記コンピューティングシステムに、プロセッサのスタティックランダムアクセスメモリ(SRAM)を上記プロセッサのリセットに応答して初期化し、上記SRAMを1つ以上のセキュリティ実施動作に割り当て、基本入出力システム(BIOS)フェーズの完了の前に上記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガし、上記マルチスレッド実行は、ダイナミックRAM(DRAM)初期化とは独立してトリガされることをさせる。
【0172】
例15は、例14に記載の少なくとも1つのコンピュータ読取可能記憶媒体を含み、上記SRAMは、上記プロセッサのラストレベルキャッシュに位置する。
【0173】
例16は、例14に記載の少なくとも1つのコンピュータ読取可能記憶媒体を含み、上記シリコン初期化命令は、実行されたときにさらに上記コンピューティングシステムに、レジスタからサイズ情報を読み出すことをさせ、上記SRAMは、上記サイズ情報に基づいて初期化される。
【0174】
例17は、例14に記載の少なくとも1つのコンピュータ読取可能記憶媒体を含み、上記シリコン初期化命令は、実行されたときにさらに上記コンピューティングシステムに、上記SRAMの初期化が完了したときセキュリティコントローラに通知を送信し、上記セキュリティコントローラからの上記通知の確認応答においてBIOSアクション情報を識別し、上記BIOSアクション情報に従って1つ以上の動作を行うことをさせる。
【0175】
例18は、例14乃至18のうちいずれか1つに記載の少なくとも1つのコンピュータ読取可能記憶媒体を含み、上記シリコン初期化命令は、実行されたときにさらに上記コンピューティングシステムに、セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信し、上記セキュリティコントローラからの上記EOPメッセージの確認応答に応答して、上記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行することをさせる。
【0176】
例19は、例14に記載の少なくとも1つのコンピュータ読取可能記憶媒体を含み、上記シリコン初期化命令は、実行されたときにさらに上記コンピューティングシステムに、オペレーティングシステムへのブートの前に上記SRAMを無効にすることをさせる。
【0177】
例20は、プロセッサのスタティックランダムアクセスメモリ(SRAM)を上記プロセッサのリセットに応答して初期化するステップと、上記SRAMを1つ以上のセキュリティ実施動作に割り当てるステップと、基本入出力システム(BIOS)フェーズの完了の前に上記1つ以上のセキュリティ実施動作のマルチスレッド実行をトリガするステップであり、上記マルチスレッド実行は、ダイナミックRAM(DRAM)初期化とは独立してトリガされる、ステップと、を含む方法を含む。
【0178】
例21は、例20に記載の方法を含み、上記SRAMは、上記プロセッサのラストレベルキャッシュに位置する。
【0179】
例22は、例20に記載の方法を含み、レジスタからサイズ情報を読み出すステップ、をさらに含み、上記SRAMは、上記サイズ情報に基づいて初期化される。
【0180】
例23は、例20に記載の方法を含み、上記SRAMの初期化が完了したときセキュリティコントローラに通知を送信するステップと、上記セキュリティコントローラからの上記通知の確認応答においてBIOSアクション情報を識別するステップと、上記BIOSアクション情報に従って1つ以上の動作を行うステップと、をさらに含む。
【0181】
例24は、例20に記載の方法を含み、セキュリティコントローラにエンドオブPOST(EOP)メッセージを送信するステップと、上記セキュリティコントローラからの上記EOPメッセージの確認応答に応答して、上記セキュリティコントローラをプリブートモードからオペレーティングシステムモードに移行するステップと、をさらに含む。
【0182】
例25は、例20乃至24のうちいずれか1つに記載の方法を含み、オペレーティングシステムへのブートの前に上記SRAMを無効にするステップ、をさらに含む。
【0183】
例26は、例20乃至25のうちいずれか1つに記載の方法を実行する手段を含む。
【0184】
実施形態は、全てのタイプの半導体集積回路(「IC」)チップでの使用に適用可能である。これらのICチップの例には、これらに限られないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブル論理アレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASICなどが含まれる。さらに、図面のいくつかでは、信号導体線は線で表される。いくつかは、より多くの構成要素信号パスを示すために異なり、複数の構成要素信号パスを示すために数字ラベルを有し、かつ/あるいは、一次情報フロー方向を示すために1つ以上の端部に矢印を有することがある。しかしながら、これを限定的に解釈すべきではない。むしろ、そのような追加詳細は、回路のより容易な理解を促進にするために、1つ以上の例示的な実施形態に関連して使用されてもよい。任意の表現された信号線は、さらなる情報を有するか否かにかかわらず、複数の方向に移動し得る1つ以上の信号を実際には含んでもよく、任意の適切なタイプの信号方式、例えば、差動ペアで実現されるデジタル若しくはアナログ線、光ファイバ線、及び/又はシングルエンド線で実現されてもよい。
【0185】
例示的なサイズ/モデル/値/範囲が与えられ得るが、実施形態は同じものに限定されない。製造技術(例えば、フォトリソグラフィ)は時間の経過と共に成熟するので、より小さいサイズのデバイスを製造可能であることが期待される。さらに、ICチップ及び他のコンポーネントへの周知の電力/グランド接続は、例示及び議論を簡単にするため、及び実施形態の特定の態様を不明瞭にしないために、図中に示されていることも示されていないこともある。さらに、構成は、実施形態を不明瞭にすることを避けるためにブロック図の形式で、さらに、このようなブロック図の構成の実施に関する詳細が、実施形態が実施されるコンピューティングシステムに大きく依存するという事実を考慮して示されることがあり、すなわち、このような詳細は、当業者の範囲内であるべきである。例示的な実施形態を説明するために特定の詳細(例えば、回路)が記載されている場合、実施形態はこれらの特定の詳細なしに、又はそれらのバリエーションを用いて実施可能であることは当業者に明らかであるべきである。したがって、本説明は、限定するものでなく例示とみなされるべきである。
【0186】
用語「結合される」は、本明細書において、問題のコンポーネント間の直接的又は間接的な任意のタイプの関係を指すために用いられることがあり、電気的、機械的、流体的、光学的、電磁的、電気機械的、又は他の接続に適用され得る。さらに、用語「第1」、「第2」などは、本明細書において、単に議論を容易にするために用いられることがあり、別段指示されない限り、特定の時間的又は経時的意味を有さない。
【0187】
本出願及び特許請求の範囲において用いられるとき、用語「~の1つ以上」により接合された項目のリストは、列挙されたタームの任意の組み合わせを意味し得る。例えば、フレーズ「A、B、又はCの1つ以上」は、A、B、C、A及びB、A及びC、B及びC、又はA、B及びCを意味し得る。
【0188】
当業者は、前述の説明から、実施形態の広範な手法が様々な形態で実施可能であることを理解するであろう。したがって、実施形態がその特定の例に関連して説明されたが、図面、明細書、及び以下の特許請求の範囲の検討に基づいて他の修正が当業者に明らかになるため、実施形態の真の範囲はそのように限定されるべきでない。
【外国語明細書】