(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-09
(45)【発行日】2024-04-17
(54)【発明の名称】システムオンチップファイアウォールメモリアーキテクチャ
(51)【国際特許分類】
G06F 21/62 20130101AFI20240410BHJP
G06F 13/16 20060101ALI20240410BHJP
G06F 15/78 20060101ALI20240410BHJP
G06F 15/167 20060101ALI20240410BHJP
G06F 21/44 20130101ALN20240410BHJP
【FI】
G06F21/62
G06F13/16 510A
G06F15/78 530
G06F15/167 615A
G06F21/44
(21)【出願番号】P 2020565812
(86)(22)【出願日】2019-05-23
(86)【国際出願番号】 US2019033765
(87)【国際公開番号】W WO2019226903
(87)【国際公開日】2019-11-28
【審査請求日】2022-05-16
(32)【優先日】2018-05-24
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-12-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】アムリトパル シンハ ムンドラ
(72)【発明者】
【氏名】チュンフア フー
【審査官】吉田 歩
(56)【参考文献】
【文献】国際公開第2008/149783(WO,A1)
【文献】特表2009-545785(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 13/16
G06F 15/78
G06F 15/167
(57)【特許請求の範囲】
【請求項1】
システムオンチップ(SoC)であって、
システムバスと、
前記システムバスに接続される複数の機能ブロックであって、前記システムバスを介して前記複数の機能ブロックの他の機能ブロックにメッセージを送信すること又は前記複数の機能ブロックの他の機能ブロックからメッセージを受信することの少なくとも一方を行うように構成される、前記複数の機能ブロックと、
複数のイニシエータ側ファイアウォールブロックであって、前記複数のイニシエータ側ファイアウォールブロックの異なるイニシエータ側ファイアウォールブロックが前記複数の機能ブロックの異なる機能ブロックに対応しており、前記複数のイニシエータ側ファイアウォールブロックがそれぞれのイニシエータ側ファイアウォールブロックの構成設定を格納するように構成されるそれぞれのイニシエータ側ファイアウォール
ブロックメモリを有し、前記複数の機能ブロックの送信機能ブロックがメッセージを前記複数の機能ブロックの受信機能ブロックに送信するときに、前記送信機能ブロックに対応する前記イニシエータ側ファイアウォールブロックが、前記対応するイニシエータ側ファイアウォールブロックのセキュリティレベルを含む構成設定に少なくとも部分的に依存して前記メッセージに識別子を追加する、ように構成される、前記複数のイニシエータ側ファイアウォールブロックと、
複数のレシーバ側ファイアウォールブロックであって、前記複数のレシーバ側ファイアウォールブロックの異なるレシーバ側ファイアウォールブロックが前記複数の機能ブロックの異なる機能ブロックに対応しており、前記複数のレシーバ側ファイアウォールブロックがそれぞれのレシーバ側ファイアウォールブロックの構成設定を格納するように構成されるそれぞれのレシーバ側ファイアウォールブロックメモリを有し、前記受信機能ブロックが前記メッセージを受信するときに、前記受信機能ブロックに対応する前記レシーバ側ファイアウォールブロックが、前記対応するレシーバ側ファイアウォールブロックの構成設定と前記識別子とに少なくとも部分的に依存して、前記受信機能ブロックが前記メッセージにアクセスするための許可を認めるか又は拒否する、ように構成される、前記複数のレシーバ側ファイアウォールブロックと、
前記システムバスから電気的に分離されるセキュリティバスであって、前記複数のイニシエータ側ファイアウォールブロックと前記複数のレシーバ側ファイアウォールブロックとに結合される、前記セキュリティバスと、
前記セキュリティバスに結合されるように構成される単一のセキュリティ構成コントローラであって、全ての前記イニシエータ側ファイアウォールブロックメモリと全ての前記レシーバ側ファイアウォールブロックメモリとに格納される構成設定を排他的に制御するために前記セキュリティバスを用いるように構成される、前記単一のセキュリティ構成コントローラと、
を含む、SoC。
【請求項2】
請求項1に記載のSoCであって、
前記識別子が前記送信機能ブロックに固有に対応する、SoC。
【請求項3】
請求項1に記載のSoCであって、
前記複数の機能ブロックが、前記セキュリティバスを介して互いにメッセージを送信しないように構成される、SoC。
【請求項4】
請求項1に記載のSoCであって、
前記複数のイニシエータ側ファイアウォールブロックの各々と前記複数のレシーバ側ファイアウォールブロックの各々とが、前記SoC内で固有であるファイアウォール識別子を有するように構成される、SoC。
【請求項5】
請求項4に記載のSoCであって、
前記SoCが
SoCプラットフォームにおける複数の前記SoC
の1つであり、
前記ファイアウォール識別子が、前記SoC
プラットフォームにおける異なるSoC上にあるイニシエータ側ファイアウォールブロック及び/又はレシーバ側ファイアウォールブロックが同一の設計を有して同一の設計機能ブロックに対応する場合に、前記イニシエータ側ファイアウォールブロック及び/又は前記レシーバ側ファイアウォールブロックが同一のファイアウォール識別子を有するように、割り当てられる、SoC。
【請求項6】
請求項4に記載のSoCであって、
メモリ要素の連続的なブロックであるメモリであって、前記SoC上の前記複数のイニシエータ側ファイアウォールブロックの各々と前記複数のレシーバ側ファイアウォールブロックの各々との
前記メモリ内のアドレスにおける位置に対するポインタを格納するように構成され、前記アドレス
における位置が、前記複数のイニシエータ側ファイアウォールブロックと前記複数のレシーバ側ファイアウォールブロックとのそれぞれに対応して
おり、それぞれのファイアウォール識別子によって判定される、前記メモリを更に含む、SoC。
【請求項7】
システムオンチップ(SoC)であって、
複数の機能ブロックであって、前記複数の機能ブロックの各々が前記複数の機能ブロックの他の機能ブロックへメッセージを送信する及び/又は前記複数の機能ブロックの他の機能ブロックからメッセージを受信するように構成される、前記複数の機能ブロックと、
複数のイニシエータ側ファイアウォールブロックであって、前記複数のイニシエータ側ファイアウォールブロックの異なるイニシエータ側ファイアウォールブロックが前記複数の機能ブロックの異なる機能ブロックに対応しており、前記複数のイニシエータ側ファイアウォールブロックがそれぞれのイニシエータ側ファイアウォールブロックの構成設定を格納するように構成されるそれぞれのイニシエータ側ファイアウォール
ブロックメモリを有し、前記複数の機能ブロックの送信機能ブロックが前記複数の機能ブロックの受信機能ブロックにメッセージを送信するときに、前記送信機能ブロックに対応する前記イニシエータ側ファイアウォール
ブロックが、前記対応するイニシエータ側ファイアウォールブロックのセキュリティレベルを含む構成設定に少なくとも部分的に依存して、前記メッセージに識別子を追加する、ように構成される、前記複数のイニシエータ側ファイアウォールブロックと、
複数のレシーバ側ファイアウォールブロックであって、前記複数のレシーバ側ファイアウォールブロックの異なるレシーバ側ファイアウォールブロックが前記複数の機能ブロックの異なる機能ブロックに対応しており、前記複数のレシーバ側ファイアウォールブロックがそれぞれのレシーバ側ファイアウォールブロックの構成設定を格納するように構成されるそれぞれのレシーバ側ファイアウォールブロックメモリを有し、前記受信機能ブロックが前記メッセージを受信するときに、前記受信機能ブロックに対応する前記レシーバ側ファイアウォールブロックが、前記対応する前記レシーバ側ファイアウォールブロックの構成設定と前記識別子とに少なくとも部分的に依存して、前記受信機能ブロックが前記メッセージにアクセスするための許可を認めるか又は拒否する、ように構成され、前記複数のイニシエータ側ファイアウォールブロックの各々と前記複数のレシーバ側ファイアウォールブロックの各々とが
それぞれに対応して前記SoC内で固有であるファイアウォール識別子を有するように構成される、前記複数のレシーバ側ファイアウォールブロックと、
メモリ要素の連続的ブロックであるメモリであって、前記SoC上の前記複数のイニシエータ側ファイアウォールブロックの各々と前記複数のレシーバ側ファイアウォールブロックの各々との
前記メモリ内のアドレスにおける位置に対するポインタを格納するように構成され、前記アドレス
における位置が前記複数のイニシエータ側ファイアウォールブロックと前記複数のレシーバ側ファイアウォールブロックとのそれぞれに対応して
おり、それぞれのファイアウォール識別子によって判定される、前記メモリと、
を含む、SoC。
【請求項8】
請求項7に記載のSoCであって、
前記識別子が前記送信機能ブロックに固有に対応する、SoC。
【請求項9】
請求項7に記載のSoCであって、
前記SoCが
SoCプラットフォームにおける複数の前記SoC
の1つであり、
前記ファイアウォール識別子が、前記SoC
プラットフォームにおける異なるSoC上にあるイニシエータ側ファイアウォールブロック及び/又はレシーバ側ファイアウォールブロックが同一の設計を有して同一の設計機能ブロックに対応する場合に、前記イニシエータ側ファイアウォールブロック及び/又は前記レシーバ側ファイアウォールブロックが同一のファイアウォール識別子を有するように、割り当てられる、SoC。
【請求項10】
請求項7に記載のSoCであって、
前記複数の機能ブロックに結合されるシステムバスであって、前記複数の機能ブロックが前記システムバスを介して前記メッセージを送信及び受信するように更に構成される、前記システムバスと、
前記システムバスから電気的に分離されるセキュリティバスであって、前記複数のイニシエータ側ファイアウォールブロックと前記複数のレシーバ側ファイアウォールブロックとに結合される、前記セキュリティバスと、
全ての前記イニシエータ側ファイアウォールブロックメモリと全ての前記レシーバ側ファイアウォールブロックメモリとに格納される前記構成設定を排他的に制御するために前記セキュリティバスを用いるように構成される、単一のセキュリティ構成コントローラと、
を更に含む、SoC。
【請求項11】
請求項10に記載のSoCであって、
前記複数の機能ブロックが、前記セキュリティバスを介して互いにメッセージを送信しないように構成される、SoC。
【請求項12】
システムオンチップ(SoC)であって、
システムバスと、
前記システムバスに結合される複数の機能ブロックであって、前記システムバスを介して前記複数の機能ブロックの他の機能ブロックにメッセージ
を送信する及び/又は前記複数の機能ブロックの他の機能ブロックからメッセージを受信するように構成される、前記複数の機能ブロックであって、前記複数の機能ブロックが、
イニシエータ側ファイアウォールブロックであって、前記イニシエータ側ファイアウォールブロックの構成設定を格納するように構成されるイニシエータ側メモリを含み、前記イニシエータ側ファイアウォールブロックのセキュリティレベルを含む構成設定に少なくとも部分的に依存して、前記複数の機能ブロックの送信機能ブロックによって前記複数の機能ブロックの受信機能ブロックに送信されるメッセージに識別子を追加するように構成される、前記イニシエータ側ファイアウォールブロックと、
レシーバ側ファイアウォールブロックであって、前記レシーバ側ファイアウォールブロックの構成設定を格納するように構成されるレシーバ側メモリを含み、前記レシーバ側ファイアウォールブロックの構成設定と前記識別子とに少なくとも部分的に依存して、前記受信機能ブロックが前記メッセージにアクセスするための許可を選択的に認めるか又は拒否するように構成される、前記レシーバ側ファイアウォールブロックと、
の1つ又はそれ以上を含む、前記複数の機能ブロックと、
前記システムバスから電気的に分離されるセキュリティバスであって、前記イニシエータ側ファイアウォールブロックと前記レシーバ側ファイアウォールブロックとに結合される、前記セキュリティバスと、
前記セキュリティバスに結合されるように構成される単一のセキュリティ構成コントローラであって、全ての前記イニシエータ側メモリと全ての前記レシーバ側メモリとに格納されるべき前記構成設定を排他的に制御するために前記セキュリティバスを用いるように構成される、前記単一のセキュリティ構成コントローラと、
を含む、SoC。
【請求項13】
請求項12に記載のSoCであって、
前記識別子が前記送信機能ブロックに固有に対応する、SoC。
【請求項14】
請求項12に記載のSoCであって、
前記複数の機能ブロックが、前記セキュリティバスを介して互いにメッセージを送信しないように構成される、SoC。
【請求項15】
請求項12に記載のSoCであって、
前記イニシエータ側ファイアウォールブロックの各々と前記レシーバ側ファイアウォールブロックの各々とが、前記SoC内で固有であるファイアウォール識別子を有するように構成される、SoC。
【請求項16】
請求項15に記載のSoCであって、
前記SoCが
SoCプラットフォームにおける複数の前記SoC
の1つであり、
前記ファイアウォール識別子が、前記SoC
プラットフォームにおける異なるSoC上にあるイニシエータ側ファイアウォールブロック及び/又はレシーバ側ファイアウォールブロックが同一の設計を有して同一の設計機能ブロックに対応する場合に、前記イニシエータ側ファイアウォールブロック及び/又は前記レシーバ側ファイアウォールブロックが同一のファイアウォール識別子を有するように、割り当てられる、SoC。
【請求項17】
請求項15に記載のSoCであって、
メモリ要素の連続的なブロックであるメモリであって、前記SoC上の前記イニシエータ側ファイアウォールブロックの各々と前記レシーバ側ファイアウォールブロックの各々との
前記メモリ内のアドレスにおける位置に対するポインタを格納するように構成され、前記アドレス
における位置が前記イニシエータ側ファイアウォールブロックと前記レシーバ側ファイアウォールブロックとのそれぞれに対応して
おり、それぞれのファイアウォール識別子によって判定される、前記メモリを更に含む、SoC。
【請求項18】
システムオンチップ(SoC)においてメッセージを送信するための方法であって、
連続的メモリ要素を含む単一メモリに格納されるイニシエータ側メモリとレシーバ側メモリとに対するそれぞれのポインタを用いてイニシエータ側ファイアウォールブロックの前記イニシエータ側メモリの位置とレシーバ側ファイアウォールブロックの前記レシーバ側メモリの位置とを判定することであって、前記単一メモリ内の前記ポインタのアドレスが、前記イニシエータ側ファイアウォールブロックと前記レシーバ側ファイアウォールブロックとのそれぞれのセキュリティレベルを含むそれぞれの固有ファイアウォール識別子に少なくとも部分的に依存して判定される、前記位置を判定することと、
排他的セキュリティ構成コントローラと前記それぞれのポインタとシステムバスから電気的に分離されるセキュリティバスとを用いて、前記イニシエータ側ファイアウォールブロックの1つ又は複数の構成設定と前記レシーバ側ファイアウォールブロックの1つ又は複数の構成設定とを構成することと、
前記システムバスを用いて送信機能ブロックから受信機能ブロックにメッセージを送信することと、
前記イニシエータ側ファイアウォールブロックを用いて前記メッセージにメッセージ識別子を追加することであって、前記メッセージ識別子が前記イニシエータ側ファイアウォールブロックの構成設定に少なくとも部分的に依存して追加される、前記メッセージ識別子を追加することと、
前記メッセージ識別子と前記レシーバ側ファイアウォールブロックの構成設定とに少なくとも部分的に依存して、前記受信機能ブロックが前記レシーバ側ファイアウォールブロックを用いて前記メッセージへアクセスするための許可を認めること又は拒否することと、
を含む、方法。
【請求項19】
請求項18に記載の方法であって、
前記メッセージ識別子が、前記送信機能ブロックに固有に対応する、方法。
【請求項20】
請求項18に記載の方法であって、
前記
送信機能ブロックが、前記セキュリティバスを介してメッセージを送信しないように構成される、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、概して、集積回路(IC)デバイスにおけるハードウェアベースセキュリティに関し、より詳細には、ハードウェアベースセキュリティのメモリ及びバスアーキテクチャに関する。
【背景技術】
【0002】
システムオンチップ(SoC)は、異なる機能を有する異なる機能ブロック、典型的には、異なる機能ブロック内の異なるサブブロック、を備える複数の機能ブロックを含む。例えば、SoC上の機能ブロック又はサブブロック(便宜上、本明細書では集合的に「機能ブロック」と呼ぶ)は、一つ又は複数のマイクロコントローラ、マイクロプロセッサ、又はデジタルシグナルプロセッサ(DSP)コアと、読み出し専用メモリ(ROM)又はランダムアクセスメモリ(RAM)などのメモリブロックと、クロック信号生成器と、入力/出力(I/O)インタフェースと、アナログインタフェースと、電圧レギュレータ及び電力管理回路と、知的財産(IP)コアと含み得る。ハードウェアベースのセキュリティ、即ち、機能ブロック間のメッセージフローのハードウェアレベルでの制御が、(例えば)メッセージコンテンツ、メモリコンテンツ、デバイス機能、及びデバイスI/O及び対応する通信許可への不正なアクセスを得ることを試みる攻撃者に対してSoCを強化するために用いられ得る。
【発明の概要】
【0003】
記載される例において、システムオンチップ(SoC)、及びSoCにおいてメッセージを送信するための方法が、単一の連続的メモリにストアされたファイアウォールブロックメモリに対するそれぞれのポインタを用いて、イニシエータ側ファイアウォールブロックとレシーバ側ファイアウォールブロックメモリの位置を判定することを含む。単一メモリ内のポインタのアドレスは、ファイアウォールブロックのそれぞれの固有のファイアウォール識別子に依存する。排他的セキュリティ構成コントローラが、システムバスから電気的に分離されたセキュリティバスを介してファイアウォールブロックを構成するためにこういったポインタを用いる。システムバスは、送信機能ブロックから受信機能ブロックにメッセージを送信するために用いられる。イニシエータ側ファイアウォールブロックは、メッセージ識別子を追加する。メッセージ識別子は、イニシエータ側ファイアウォールブロックの構成設定に依存する。レシーバ側ファイアウォールブロックは、メッセージ識別子とレシーバ側ファイアウォールブロックの構成設定とに応じて、受信機能ブロックがメッセージにアクセスするための許可を制御する。
【図面の簡単な説明】
【0004】
【
図1】SoCの機能ブロックレイアウトの例を示す。
【0005】
【
図2】ファイアウォールブロックの種々のメモリにアクセスするために用いられるメモリの例示マップを示す。
【0006】
【
図3】SoCにおいて機能ブロック間でメッセージを送信するためのプロセスの例を示す。
【発明を実施するための形態】
【0007】
ロバストなシステムオンチップ(SoC)ハードウェアベースセキュリティは、互いに異なる機能ブロックのハードウェア強化相互分離を用い得る。即ち、対応するセキュリティレベルで機能ブロックによって、又はSoCの対応するセキュア領域内で送信されるメッセージは、異なるセキュリティレベルにおける機能ブロック内の又はSoCの異なるセキュア領域内のリソースへのアクセスを制限される必要がある。制約は、例えば、それぞれのメッセージ、送信機能ブロック、受信機能ブロックの特性(許可、暗号、及び暗号鍵アクセシビリティなど)に依存し得る。
【0008】
図1は、SoC100の機能ブロックレイアウトの例を示す。
図1に示すように、SoC100内の様々な機能ブロック102が、デバイスバス104によって互いに接続されている。幾つかの機能ブロック102が示されている。SoC内の機能ブロック102の数は変えることができる。デバイスバス104は、様々な非セキュリティ及び非セキュリティ例外機能ブロック102を接続する一つ又は複数のバスを指す。典型的な従来技術の実施例では、デバイスバス104は、セキュリティ及びセキュリティ例外ブロックにも接続する。機能ブロック102間のメッセージは概して、デバイスバス104を介して伝達される。一部(又は全て)の機能ブロック102は、イニシエータ側ファイアウォールブロック106を含み、これらは、他の機能ブロック102への送信のためにメッセージを準備するために、メッセージにセキュリティ関連の内容(メッセージ及び暗号を発信した機能ブロック102の識別子(ID)など)を適用する。一部(又は全て)の機能ブロック102は、レシーバ側ファイアウォールブロック108を含み、これらは(対応するイニシエータ側ファイアウォールブロック106によってメッセージに添付されたIDをチェックすることなどによって)メッセージを受け取るそれぞれの機能ブロック102が(例えば、メッセージの内容を実行するため、又はメッセージをダウンストリーム受信者に渡すために)メッセージにアクセスする許可があるかどうか、及び許可が確認された場合にそのようなアクセスを可能にする許可があるかどうかを判定し得る。それぞれの機能ブロック102によるアクセスは、(a)対応するレシーバ側ファイアウォールブロック108内に含まれるリソース、及び/又は、(b)メッセージが機能ブロック102に対するアクセス許可を有するかどうかを判定する際に、対応するレシーバ側ファイアウォールブロック108によって利用されたリソース以外の(に加えて)、機能ブロック102のリソースによって作用されるメッセージに対する許可を指す。一つ又は複数の機能ブロック102は、同じ機能ブロック102内のイニシエータ側ファイアウォールブロック106及び/又はレシーバ側ファイアウォールブロック108に接続される例外プローブブロック110も含む。例外プローブブロック110は、それぞれの例外プローブブロック110の構成情報をストアするメモリ要素を含む。
【0009】
イニシエータ側ファイアウォールブロック106及びレシーバ側ファイアウォールブロック108は、(補助)セキュリティ制御ブロック112によって制御される。セキュリティ制御ブロック112は、互いに接続され、セキュリティ制御バス114によって、イニシエータ側ファイアウォールブロック106及びレシーバ側ファイアウォールブロック108を制御するように接続される。イニシエータ側ファイアウォールブロック106及びレシーバ側ファイアウォール108(総称して「ファイアウォールブロック」106、108)は、それぞれのファイアウォールブロック106、108のための構成情報をストアするメモリ要素を含む。また、セキュリティ制御ブロック112は、それぞれのセキュリティ制御ブロック112のための構成情報をストアするメモリ要素を含み、セキュリティ制御ブロック112のための構成情報は、典型的には、セキュリティの目的のためにハードウェア設計によって事前設定される。構成情報は、異なる許可レベル(ユーザー、スーパバイザ、デバッグモードなど)がメッセージに適用されるかどうかやそれがどのように成されるかなどを判定し得る。セキュリティ制御バス114は、セキュリティ制御バス114への無許可のアクセスを防止するために、デバイスバス104から電気的に分離されている(即ち、セキュリティ制御バス114は、特に、セキュリティンフラストラクチャーを接続するために専用である。メッセージはセキュリティ制御バス114を介して機能ブロック102間で送信されない)。したがって、セキュリティ制御バス114相互接続は、デバイスバス104の相互接続とは独立している。セキュリティ制御ブロック112は、単一の排他的デバイス管理及びセキュリティ制御ブロック116によって制御される。DMSCブロック116は、セキュリティ制御ブロック112を制御するように、及び、セキュリティ制御バス114によって、(セキュリティ制御ブロック112を介して)イニシエータ側ファイアウォールブロック106及びレシーバ側ファイアウォールブロック108を制御するように接続される。「単一の排他的」ブロックであるDMSCブロック116は、DMSC機能性の複数の独立して動作する場所(loci)がない(したがって、「複数」ではなく「単一の」DMSCブロック116がある)ように接続されているDMSC機能性の基礎となるデバイス構造を指す。これは、セキュリティ制御ブロック112から見て、DMSC機能性が並列ではなく直列に接続されていることからわかる。DMSCブロック116は、ファイアウォールブロック106、108のメモリ要素にストアされた構成データに変化をもたらすことができる。
【0010】
図1に示すように、ファイアウォールブロック106、108は概して、ハードウェアベースのセキュリティを用いるSoC100にわたって分布される。独立したセキュリティ制御バス114と共に、SoC100のセキュリティインフラストラクチャーのための統合された制御としてDMSCブロック116を用いることにより、ソフトウェアが、イニシエータ側ファイアウォールブロック106及びレシーバ側ファイアウォール108(合わせて、ファイアウォールブロック106、108)のメモリ要素を、
図2に関してさらに説明されるように、単一の統合された連続的なメモリ領域を含むものとして見ることができるように、メモリを構成することが可能となる。
【0011】
例外プローブブロック110は、イニシエータ側ファイアウォールブロック106又はレシーバ側ファイアウォールブロック108において例外がいつ発生するかを判定する。例外プローブブロック110は、例外制御ブロック118によって制御される。例外プローブブロック110は、例外プローブブロック110の構成情報をストアするメモリ要素を含む。例外制御ブロック118は、互いに接続され、例外制御バス120によって例外プローブブロック110を制御するように接続される。例外制御バス120は、例外制御バス120への無許可の接近を防止するために、デバイスバス104から及びセキュリティ制御バス114から電気的に分離される。
【0012】
イニシエータ側ファイアウォールブロック106は、例えば、固有のセキュリティIDを、機能ブロック102間のメッセージのセキュリティ属性に割り当てる、及び/又は、機能ブロック102間のメッセージのセキュリティ属性をアサートするように構成し得る。レシーバ側ファイアウォールブロック108は、例えば、ソース機能ブロック102に対応する許可、又は対応する宛先機能ブロック102へのアクセスが許されている(又は許されていない)メッセージの他の特性を設定するように構成し得る。
【0013】
図2は、ファイアウォールブロック106、108の様々なメモリにアクセスするために用いられるメモリ200の例示のマップを示す。メモリ200は、SoC100のメモリ内の固定範囲に及ぶ。メモリ200は、ファイアウォールブロック106、108の様々なメモリの位置に対するポインタをストアする複数のメモリ領域202(例えば、特定のSoC100の要件に応じて分割される)を含む。異なるメモリ領域202が、ファイアウォールブロック106、108の異なるタイプの機能(異なるサブシステム)に対応するメモリの位置に対するポインタを含む。例えば、メモリ領域202は、イニシエータ側ファイアウォールブロック106及びレシーバ側ファイアウォールブロック108に対するセキュリティ構成データ、セキュリティ制御ブロック112に対するセキュリティ構成データ、イニシエータ側ファイアウォールブロック106及びレシーバ側ファイアウォールブロック108に対する例外構成データ、ブート制御構成データ、エミュレーション構成データ、仮想化構成データ、及びサービス品質(QoS)構成データに対応し得る(それらへのアクセスを可能にするポインタを含み得る)。したがって、メモリ200は、(a)ソフトウェアと(b)ファイアウォールブロック106、108構成メモリとの間の媒介物(middleman)として機能する。
【0014】
各ファイアウォールブロック106、108には、異なるIDが割り当てられる。同一のイニシエータ側ファイアウォールブロック106設計及び同一のレシーバ側ファイアウォールブロック108設計が、複数のSoC100を含むプラットフォームにわたって用いられ得る。これにより、同一プラットフォームにおける全てのSoC100内の全てのファイアウォールブロック106、108に対してIDがグローバルに(globally)割り当てられ得、そのため、(例えば、機能ブロック102の特定のサブシステムタイプに対して)同一位置にあり、或るプラットフォームにおける異なるSoC内の同一設計されたファイアウォールブロック106、108が、同一のIDを受信できるようにする。同じIDを有することにより、或るプラットフォームにおける異なるSoC内の同一位置にあり、同一設計されたファイアウォールブロック106、108のメモリ要素が、ソフトウェアによって同じ方式で呼び出されることが可能になる。IDをグローバルに割り当てることで、或るプラットフォームにわたってSoCにおけるファイアウォールブロック106、108の構成を簡素化し得る。多くの場合、同一設計されたファイアウォールブロック106、108を同一構成にすることは利点となる。これは、異なるSoC上のファイアウォールブロック106、108に同じ方式でアクセスする能力によって促進される。また、IDのグローバルな割り当ては、複数のタイプのファイアウォールブロック106、108があるとき、ファイアウォールブロック106、108の構成の一貫した視点の(構成メモリが、ファイアウォールブロック106、108IDに基づいて一貫してかつ予測可能にアドレス指定可能である)ソフトウェアを提供することを可能にする。構成メモリのこの一貫性した視点は、ファイアウォールブロック106、108の数がプラットフォームにわたってSoC毎に変わる場合にも提供され得る(ファイアウォールブロック106、108のタイプ(ブート制御又はQoSなど)のために事前割り当てされたアドレス空間は、用いられているそのタイプのファイアウォールブロック106、108の数に対応するようにサイズを調整され得る)。
【0015】
ファイアウォールブロック106、108のタイプには、例えば、メモリ領域ファイアウォールブロック及びチャネル化されたファイアウォールブロックが含まれ得る。メモリ領域ファイアウォールブロックは、例えば、全体として機能ブロック(メモリ)を提供し得、対応するメモリの異なる領域に対して異なる許可を有効にし得る。例えば、Host-1が、或るメモリ領域のファイアウォールブロックの背後にあるメモリに対する完全なアクセス権を有し得、一方、Host-2がそのメモリ領域ファイアウォールブロックの背後にあるメモリのウィンドウビューしか有さない。チャネル化されたファイアウォールブロックは、典型的には、メモリのそれぞれの比較的細かく分割された部分へのより多くの数のファイアウォール構造ゲーティングアクセスを備えて、細かく分割される。
【0016】
IDは、レジスタ転送レベル(RTL)構成ファイルにエンコードされ得、それぞれのSoCに対してIDが固定される。RTL自動化スクリプトを用いて、以下で説明するように、それぞれのIDに対応するメモリアドレスを判定し得る。
【0017】
各ファイアウォールブロック106、108IDは、セキュリティ構成データをストアする各メモリ領域202に対して、(対応するSoC100上で)そのファイアウォールブロック106、108に固有に対応するメモリアドレス204を作成するために用いられ得る。これは、事前定義された数値的計算を用いて行うことができる。例えば、異なるファイアウォールブロック106、108のための構成データをストアしているメモリ領域202内のメモリ要素に対するポインタは、一つのファイアウォールブロック106、108のためのストアされたポインタ情報の第1のビットが、別のファイアウォールブロック106、108のための隣接してストアされたポインタ情報の第1のビットから1024ビット離れるようにアドレス指定され得る。したがって、ファイアウォールブロック106、108のための例示の48のビットアドレスは、次のように計算されるように構成され得る。「x」(x≧0)と番号付けされたファイアウォールブロック106、108の場合、アドレス=0×4500_0000+x×1024である。これは、ソフトウェアが、SoCにわたって分布されるのではなく、単一のコンパクトなメモリ空間に配置されているかのようにセキュリティアセットメモリにアクセスし得るように、統合された連続的なセキュア構成データのためのメモリマップを作成するために用いられ得る。
【0018】
これは、例外制御ブロック110のための構成メモリに対するポインタをストアするメモリ領域202のためにも成され得る。例外制御ブロック118及び例外プローブブロック110は、デバイスバス104及びセキュリティ制御バス114から電気的に分離される例外制御バス120によって接続され、例外プローブブロック110の構成は、単一のマスター例外制御ブロック122によって制御される(DMSCブロック116によるファイアウォールブロック106、108の構成の制御と同様)。異なるグループのブロックの構成メモリに対するポインタは、異なるベースアドレスを有するメモリ領域202にストアされ、異なるグループのブロックは、それぞれのブロックに対応するそれぞれのメモリ領域202内でメモリアドレスを生成するために、異なるそれぞれのID範囲を有する。
【0019】
統合された連続的なメモリマップがあると、システムからシステムへ再利用される設計(これはハードウェア設計リソースを節約し得る)を有するファイアウォールブロック106、108のために設計されたソフトウェアが、システムからシステムへ再利用されることも可能になる。例えば、4つのイニシエータ側ファイアウォールブロック106及び2つのレシーバ側ファイアウォールブロック108を用いる第1のSoCと、6つのイニシエータ側ファイアウォールブロック106及び5つのレシーバ側ファイアウォールブロック108を用いる第2のSoCとを考える。第1のSoCからのファイアウォールブロック106、108設計が第2のSoCのために再利用される場合、第2のSoCのためのセキュリティ構成ソフトウェアは、第1のSoCのためのセキュリティ構成ソフトウェアを再利用し得、(ファイアウォールブロック106、108に対して)新たに追加された2つのイニシエータ側ファイアウォールブロック106(6‐4)及び3つのレシーバ側ファイアウォールブロック108(5‐2)に対処するためのコードを追加するだけでよい。これは、ソフトウェア設計リソースを節約し、設計コスト、複雑度を低減し、対応する製品を市場に出すためにかかる時間を短縮し得る。複雑度の低減は、設計誤差の尤度を減らすことができ、コスト及び製品発売開始までの時間をさらに低減し得る。
【0020】
図3は、SoCにおける機能ブロック間でメッセージを送信するためのプロセス300の例を示す。工程302において、単一の排他的セキュリティ構成コントローラが、イニシエータ側ブロックのイニシエータ側ファイアウォールメモリの位置と、レシーバ側ファイアウォールブロックのレシーバ側コントローラの位置とを要求する。工程304において、これらの位置は、連続的メモリ要素を含む単一メモリにストアされた、イニシエータ側メモリとレシーバ側メモリとに対するそれぞれのポインタを用いて判定される。単一メモリ内のポインタのアドレスが、イニシエータ側ファイアウォールブロックのそれぞれの固有のファイアウォール識別子及びレシーバ側ファイアウォールブロックのそれぞれの固有のファイアウォール識別子に少なくとも部分的に依存して判定される。工程306において、セキュリティ構成コントローラと、それぞれのポインタと、システムバスから電気的に分離されたセキュリティバスとを用いて、イニシエータ側ファイアウォールブロックの一つ又は複数の構成設定と、レシーバ側ファイアウォールブロックの一つ又は複数の構成設定とが構成される。工程308において、システムバスを用いて、送信機能ブロックから受信機能ブロックにメッセージが送信される。工程310において、イニシエータ側ファイアウォールブロックを用いてメッセージ識別子がメッセージに追加され、この識別子はイニシエータ側ファイアウォールブロックの構成設定に少なくとも部分的に依存して追加される。工程312において、レシーバ側ファイアウォールブロックを用いたメッセージへの受信機能ブロックによる更なるアクセスの許可が、メッセージ識別子とレシーバ側ファイアウォールブロックの構成設定とに少なくとも部分的に依存して認められるか又は拒否される。
【0021】
幾つかの実施例において、グローバルに割り当てられたファイアウォールブロック識別子を用いると、チップサポートライブラリ(CSL)の作成が簡素化される。
【0022】
幾つかの実施例において、メモリにおけるID範囲が、将来の拡張のために確保される。
【0023】
幾つかの実施例において、複数の異なるセキュリティレベルに対応する複数のセキュアワールドがSoC内に共存する。幾つかの実施例において、異なるセキュアワールドが用いられるかどうか、及び異なるセキュアワールドがどのように用いられるかが、ファイアウォールブロック構成情報によって判定される。
【0024】
幾つかの実施例において、一つ又は複数のファイアウォールブロックが機能ブロック内に含まれない。
【0025】
幾つかの実施例において、DMSCブロックが、一度に一つのファイアウォールブロックの一つの構成を設定する。幾つかの実施例において、DMSCブロックは、一度に複数ファイアウォールブロックの一つの構成を設定する。幾つかの実施例において、DMSCブロックは、一度に一つのファイアウォールブロックの複数の構成を設定する。幾つかの実施例において、DMSCブロックは、一度に複数ファイアウォールブロックの複数の構成を設定する。
【0026】
幾つかの実施例において、DMSCブロックは、セキュリティ制御ブロックの構成情報を設定し得る。
【0027】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。