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

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

▶ サイプレス セミコンダクター コーポレーションの特許一覧

<>
  • 特許-コンテキストベースの保護システム 図1
  • 特許-コンテキストベースの保護システム 図2
  • 特許-コンテキストベースの保護システム 図3
  • 特許-コンテキストベースの保護システム 図4
  • 特許-コンテキストベースの保護システム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-28
(45)【発行日】2022-01-19
(54)【発明の名称】コンテキストベースの保護システム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20220112BHJP
   G06F 13/10 20060101ALI20220112BHJP
   G06F 13/38 20060101ALI20220112BHJP
【FI】
G06F21/62
G06F13/10 310E
G06F13/38 320A
【請求項の数】 17
(21)【出願番号】P 2019500641
(86)(22)【出願日】2017-07-19
(65)【公表番号】
(43)【公表日】2019-09-05
(86)【国際出願番号】 US2017042834
(87)【国際公開番号】W WO2018017702
(87)【国際公開日】2018-01-25
【審査請求日】2019-12-18
(31)【優先権主張番号】62/364,246
(32)【優先日】2016-07-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/364,652
(32)【優先日】2016-07-20
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】15/653,203
(32)【優先日】2017-07-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】507364997
【氏名又は名称】サイプレス セミコンダクター コーポレーション
【氏名又は名称原語表記】Cypress Semiconductor Corporation
【住所又は居所原語表記】198 Champion Court, San Jose, CA 95134, United States of America
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100173794
【弁理士】
【氏名又は名称】色部 暁義
(72)【発明者】
【氏名】ジャン-ウィレム ヴァン デ ワード
(72)【発明者】
【氏名】カイ ディーフェンバッハ
(72)【発明者】
【氏名】ウーヴェ モスレンナー
(72)【発明者】
【氏名】ヴェンカット ナタラジャン
(72)【発明者】
【氏名】イェンス ワーグナー
(72)【発明者】
【氏名】マサイアス セドナー
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2013-097794(JP,A)
【文献】特開2015-035155(JP,A)
【文献】特表2013-539106(JP,A)
【文献】特開2006-216012(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 13/10
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
複数の保護コンテキストにおいて動作するように構成可能な第1の中央処理装置(CPU)と、
前記第1のCPUが前記複数の保護コンテキストのうちの第1の保護コンテキストに設定されているときに、前記第1のCPUによってアクセス可能となり、かつ、前記第1のCPUが前記複数の保護コンテキストのうちの第2の保護コンテキストに設定されているときに、前記第1のCPUによってアクセス不能となる、少なくとも2つの周辺モジュールと、
前記少なくとも1つの周辺モジュールと、前記複数の保護コンテキストのうちの前記第1の保護コンテキストおよび第2の保護コンテキスト、セキュアアクセスおよび非セキュアアクセス、並びにユーザモードアクセスおよび特権モードアクセスを区別し、インデックスを有する複数の保護構造を含むとともにより高い前記インデックスを有する保護構造を最初に評価する少なくとも1つの周辺機器保護ユニットと、を備える周辺サブシステムと、
を備える、システム。
【請求項2】
前記第1のCPUと、
少なくとも1つのメモリ保護ユニットと、
少なくとも1つの共用メモリ保護ユニットと、
を備えるCPUサブシステムを更に含む、請求項1に記載のシステム。
【請求項3】
前記少なくとも1つのメモリ保護ユニットは、単一のバスマスタからのユーザアクセスと特権アクセスとを区別する、請求項2に記載のシステム。
【請求項4】
前記少なくとも1つの共有メモリ保護ユニットは、前記複数の保護コンテキストのうちの前記第1の保護コンテキストと第2の保護コンテキストとを区別し、また前記第1のCPUのセキュアアクセスと非セキュアアクセスとを区別する、請求項2に記載のシステム。
【請求項5】
前記周辺モジュールへのアクセスは、ベクトルペアの値によって制御されており、前記ベクトルペアのうちの第1のベクトルは、前記周辺モジュールへの読み取りアクセスを制御し、また前記ベクトルペアのうちの第2のベクトルは、前記ベクトルペアのうちの前記第1のベクトルへの書き込みアクセスを制御する、請求項1に記載のシステム。
【請求項6】
前記第1の保護コンテキストからの前記第2の保護コンテキストにおける前記第1のCPUの動作は、前記第2の保護コンテキストに関連する割り込み要因によってゲート制御されている、請求項1に記載のシステム。
【請求項7】
前記周辺モジュールがメモリである、請求項1に記載のシステム。
【請求項8】
前記複数の保護コンテキストのうちの少なくとも1つで動作するように構成可能な第2のCPUを更に備える、請求項1に記載のシステム。
【請求項9】
単一のバスマスタに割り当てられ、前記バスマスタからのユーザアクセス及び特権アクセスを区別するためのメモリ保護ユニット(MPU)と、
複数のバスマスタに割り当てられ、異なる保護コンテキストを区別し、かつメモリへのセキュアアクセス及び非セキュアアクセスを区別するための、共有メモリ保護ユニット(SMPU)と、
周辺機器グループに割り当てられ、前記周辺機器グループへのセキュアアクセス及び非セキュアアクセスを区別するための、インデックスを有する複数の保護構造を含むとともにより高い前記インデックスを有する保護構造を最初に評価する周辺機器保護ユニット(PPU)と、
を備える、バス・インフラストラクチャ。
【請求項10】
前記PPUは、ユーザモードと特権モードとを認識することによって、前記周辺機器グループへのセキュアアクセスと非セキュアアクセスとを区別し、ユーザモードで許可されるアクセスは、特権モードで許可されるアクセスとは異なる、請求項に記載のバス・インフラストラクチャ。
【請求項11】
前記複数の保護構造はそれぞれ、
アドレス領域と、
メモリ位置へのアクセス制御を指定するアクセス制御属性と、
によって定められる、請求項に記載のバス・インフラストラクチャ。
【請求項12】
前記PPUは、
前記周辺機器グループにおける全ての周辺機器、および
個別のプロセッサ間通信(IPC)構造、DMAコントローラチャネル構造、SMPU保護要求構造、またはPPU保護領域構造を含む、前記周辺機器グループのうちの周辺機器のサブセット、
のうちの少なくとも一方を含む、複数の保護領域を備える、請求項に記載のバス・インフラストラクチャ。
【請求項13】
前記バスマスタは、第1の保護コンテキストおよび第2の保護コンテキストで動作する中央処理装置(CPU)である、請求項に記載のバス・インフラストラクチャ。
【請求項14】
前記バスマスタは、前記CPUが前記第1の保護コンテキストで動作するときに、前記周辺機器グループにアクセスし、また、前記CPUが前記第2の保護コンテキストで動作するときに、前記周辺機器グループへのアクセスを禁止する、請求項13に記載のバス・インフラストラクチャ。
【請求項15】
前記周辺機器グループへのアクセスは、前記PPUのベクトルペアの値によって制御されており、前記ベクトルペアのうちの第1のベクトルは、前記周辺機器グループへの読み取りアクセスを制御し、また前記ベクトルペアのうちの第2のベクトルは、前記ベクトルペアの第1のベクトルへの書き込みアクセスを制御する、請求項に記載のバス・インフラストラクチャ。
【請求項16】
中央処理装置(CPU)の複数の保護コンテキストのうちの第1の保護コンテキストを第1の周辺モジュールの許可された保護コンテキストと比較するステップと、
前記CPUの第1の保護コンテキストが前記第1の周辺モジュールの許可された保護コンテキストと一致する場合、前記CPUによる前記第1の周辺モジュールへのアクセスを許可するステップと、
前記CPUの保護コンテキストを前記第1の保護コンテキストから第2の保護コンテキストに変更するステップと、
前記第2の保護コンテキストが前記第1の周辺モジュールの許可された保護コンテキストと一致しない場合、前記CPUによる前記第1の周辺モジュールへのアクセスを禁止するステップと、
前記CPUの前記第2の保護コンテキストが第2の周辺モジュールの許可された保護コンテキストと一致する場合、前記CPUによる第2の周辺モジュールへのアクセスを許可するステップと、
前記第1の保護コンテキストおよび前記第2の保護コンテキスト、セキュアアクセスおよび非セキュアアクセス、並びにユーザモードアクセスおよび特権モードアクセスを区別し、インデックスを有する複数の保護構造を含むとともにより高い前記インデックスを有する保護構造を最初に評価するステップと、
を含み、
前記第1の保護コンテキストは、前記第2の保護コンテキストとは異なる、周辺モジュールへのアクセスを制御するための方法。
【請求項17】
前記周辺モジュールへのアクセスは、各周辺モジュールに対するベクトルペアによって定義されており、前記ベクトルペアは、前記周辺モジュールへの読み取りアクセスを制御するための、前記ベクトルペアのうちの第1のベクトルと、前記ベクトルペアのうちの前記第1のベクトルへの書き込みアクセスを制御するための、前記ベクトルペアのうちの第2のベクトルとを含む、請求項16に記載の周辺モジュールのコンテキストベースの保護方法。
【発明の詳細な説明】
【技術分野】
【0001】
<関連出願>
本出願は、その全体が参照により本明細書に組み込まれる、2016年7月20日に出願された米国仮特許出願第62/364652号、および2016年7月19日に出願された米国仮特許出願第62/364246号の利益を主張する、2017年7月18日に出願された米国特許出願第15/653203号の国際出願である。
【0002】
本開示は、概して、組み込みシステムに関し、より具体的には組み込みシステム内の通信およびデータのセキュリティに関する。
【発明の概要】
【課題を解決するための手段】
【0003】
組み込みシステムは、一連のバスを介して様々な構成要素との間で情報をやり取りすることによって機能する。組み込みシステムの処理装置は、命令を実行するか、または1つあるいは複数のメモリに格納された情報にアクセスするように構成することができる。処理装置はまた、デジタルブロックおよびアナログブロックまたは周辺機器等の他のシステム構成要素と通信し、またはそれらを制御することもできる。デジタルブロックまたはアナログブロック、または周辺機器でさえ、ハードコーディング(固定機能)されていてもよく、またはそれらはプログラム可能であってもよい。システム構成要素の制御および情報へのアクセスまたは情報の転送は、一連のバスまたはバス・インフラストラクチャを介して達成することができる。
【0004】
コンテキストベースの保護システムは、複数の保護コンテキストで動作するように構成可能な中央処理装置(CPU)を含むことができる。コンテキストベースの保護システムは、少なくとも1つの周辺モジュールも含むことができ、この周辺モジュールは、CPUが複数の保護コンテキストのうちの第1の保護コンテキストに設定されたときに、CPUによってアクセス可能となり、また、CPUが複数の保護コンテキストのうちの第2の保護コンテキストに設定されたときに、CPUによってアクセス不能となる。
【0005】
コンテキストベースの保護システムは、保護構造を含むバス・インフラストラクチャの一部として実装されてもよい。保護構造は、単一のバスマスタに割り当てられたメモリ保護ユニット(MPU)を含むことができ、このMPUは、バスマスタからのユーザアクセスと特権アクセスとを区別する。保護構造は、複数のバスマスタに割り当てられた共有メモリ保護ユニット(SMPU)を含むことができ、このSMPUは異なる保護コンテキストを区別し、またメモリへのセキュアアクセスと非セキュアアクセスとを区別する。保護構造は、周辺機器グループに割り当てられた周辺機器保護ユニット(PPU)も含むことができ、このPPUは、周辺機器グループへのセキュアアクセスと非セキュアアクセスとを区別する。
【図面の簡単な説明】
【0006】
図1】一実施形態による、コンテキストベースの保護システムを実装するように構成可能な組み込みシステムを示す説明図である。
図2】一実施形態による、コンテキストベースの保護システムを示す説明図である。
図3】一実施形態による、保護システムを使用した周辺機器への/周辺機器からの転送におけるセキュリティの評価方法を示す説明図である。
図4】一実施形態による、周辺機器の保護コンテキストを変更するためのスキームを示す説明図である。
図5】一実施形態による、周辺機器の保護コンテキストを変更するためのスキームを示す説明図である。
【発明を実施するための形態】
【0007】
情報のバス転送は、他のバス転送と同時に起こり得る。システム要件およびシステムによって完了することができる多様なタスクに基づいて、様々な処理ユニットにより様々なシステム構成要素にアクセスすることができる。バス上では多くの事象が同時に生じる故、転送操作および試行された転送操作を追跡および制御して、システムが最適なパフォーマンスで意図したとおりに確実に動作し、かつセキュリティが要求されることが重要である。
【0008】
組み込みシステムはまた、セキュリティ、機能上の安全性、およびパフォーマンスを実現するために保護を必要とし得る。セキュリティに関しては、セキュアメモリおよびMMIOアドレス領域を不正アクセスから保護する必要がある。即ち、プログラムおよびデータ記憶装置へのアクセスは許可された用途に限定されなければならないが、コマンドを受信し、またはバスを介してデータを共有することができる周辺機器も同様でなければならない。機能上の安全性に関しては、タスクおよびプロセスが、他のタスクおよびプロセスに関連するメモリおよびMMIOアドレス領域にアクセスするのを禁止しなければならない。分離することで、バス干渉がある場合でさえも、各動作の発生が保証される。一方で、メモリおよびMMIOアドレス領域は、それらの指定されたタスクおよびプロセスにて使用することができるように、それらに関連付けられないタスクおよびプロセスから保護されなければならない。この保護の全てがバス・レイテンシに繋がり、パフォーマンスに影響を与え得る。また、いかなる保護システムの再構成もまた、レイテンシの問題を引き起こすことなく可能でなければならない。
【0009】
図1は、構成可能バスアーキテクチャ140を介してセキュリティを提供するように構成されたシステム100を示す。システム100は、CPUサブシステム110に結合されたI/Oサブシステム105を含むことができる。CPUサブシステム100は、I/Oサブシステム105からの、およびI/Oサブシステム105への入力および出力、並びに、周辺機器グループからの入力および出力を含む、多数の入力および出力を有するように構成することができる(要素は図示されていないが、周辺機器グループ1および2への接続は示されている)。後述するように、CPUサブシステム110への他の接続も存在し得る。
【0010】
CPUサブシステム110は、それぞれ、I/Oサブシステム105並びに第1の処理コアおよび第2の処理コアに結合されているデバッグインフラストラクチャ115およびテストコントローラ117を含むことができる。第1の処理コアは、ARM Cortex M4、即ちCM4コア120として実装することができる。CM4コア120は、CM4中央処理装置(CPU)126、割り込み機能122、およびデバッグコンポーネント124を含むことができる。CM4コア120は、より速い処理速度で機能し、かつより高い処理および性能要件に対処するように構成することができる。第2の処理コアは、ARM Cortex M0+、CM0+コア130として実装されてもよい。CM0+コア130は、CM0+CPU136、割り込み機能132、およびデバッグコンポーネント134を含むことができる。CM0+コア130は、より遅い処理速度(周波数)で機能するように構成され、かつ補助プロセッサとして機能させてもよい。
【0011】
CPUサブシステム110は、高速インフラストラクチャ142に、そして低速インフラストラクチャ144を含むことができる構成可能バスアーキテクチャ140も含むことができる。構成可能バスアーキテクチャ140は、処理コア、メモリ、および周辺機器から受け取ったデータおよびコマンドにセキュリティを提供するように構成することができる。構成可能バスアーキテクチャ140は、フラッシュ162用のフラッシュコントローラ161、ROM164用のROMコントローラ163、およびSRAM166用のSRAMコントローラ165に結合することができる。一実施形態では、各々に複数のSRAMモジュールおよび関連するSRAMコントローラがあってもよい。メモリ位置は、様々な実施形態において、CPUサブシステム110の一部または別個のシステム構成要素の一部であってもよい。
【0012】
高速インフラストラクチャ142は、システムインタフェース(Sys I/F)およびコードインタフェース(コード I/F)を介してCM4コア120に結合されて、CM4コア120から情報およびコマンドを受信することができる。高速インフラストラクチャ142は、周辺機器インタフェースおよびより速い処理速度で動作しているスレーブ(高速外部スレーブ)に結合されてもよい。
【0013】
低速インフラストラクチャ144は、テストコントローラ117および低速外部マスタ並びにCRYPTOブロック170および一対のデータワイヤ、即ちデータワイヤ0 172およびデータワイヤ1 174に結合することができる。低速インフラストラクチャ144はまた、低速外部スレーブデバイス、CM0+コア130並びに一対のデータワイヤ172および175に結合することができる。低速インフラストラクチャ144はまた、CPUサブシステム110の外部の周辺機器に結合されてもよい。外部の周辺機器には、低速外部スレーブを含んでもよい。
【0014】
高速インフラストラクチャ142および低速インフラストラクチャ144を含む構成可能バスアーキテクチャ140は、バス転送仕様に基づいてバスを介した転送を許可または制限する保護ロジックを実装することによって保護またはセキュリティを提供することができる。バス転送仕様には、バスアドレス範囲と、読み取り/書き込み、実行、特権/ユーザ、セキュア/非セキュア等を含む様々な属性が含まれ得る。メモリの保護は、メモリ保護ユニット(MPU)および共有メモリ保護ユニット(SMPU)によって提供することができる。周辺機器に対する保護は、周辺機器保護ユニット(PPU)によって提供することができる。SMPUおよびPPUは、バスマスタの保護コンテキスト属性に基づいてコンテキストベースの保護追跡をサポートすることができる。この構成では、保護コンテキストに関連するフィールドを再プログラミングすることによって、単一のバスマスタが複数の保護的役割にて動作し得る。
【0015】
CPUサブシステム110は、保護MMIOレジスタ150、障害検出MMIOレジスタ180、CPUサブシステム(CPUSS)MMIOレジスタ、およびプロセッサ間通信(IPC)MMIOレジスタ184を含むことで、CPUサブシステムの様々な要素を制御および構成し、かつ保護システムの機能を提供する。
【0016】
図2は、本発明の一実施形態による、保護コンテキストを実施することができる保護システム200のブロック図を示している。一実施形態では、保護システム200は、部分的に、図1の構成可能バス・インフラストラクチャ140にて実装してもよい。保護システム200の様々な要素は、図1のシステムバスアーキテクチャ210およびCPUサブシステム110によってアクセス可能なレジスタ位置として実装することができる。
【0017】
保護システム200は、多数のバスマスタ201.0~201.nを含むことができる。バスマスタ201.0~201.nは、情報がメモリアレイ220のメモリ位置から読み取られ、そこに書き込まれる際に、並びに、周辺機器グループ250.0~250.nの一部であり得る周辺機器に書き込まれる際に、システムバスアーキテクチャ210上のトラフィックを制御することができる。バスマスタ201.0~201.nはそれぞれ、メモリ保護ユニット(MPU)203.0~203.nを有することができる。MPU203.0~203.nは、バスマスタ201.0および201.3に示されるようにバスマスタに統合されてもよく、または図示されていないが、独立したユニット(バスマスタ201.1および201.2)として、あるいはシステムバスアーキテクチャの一部として実施される別個の要素であってもよい。
【0018】
MPUが、バスマスタ201.1および201.2の場合のようにバスマスタの一部として実施される場合、MPUはCPUの一部として実施されてもよく、オペレーティングシステム(OS)またはカーネルの制御下にあってもよい。MPUが、MPU203.1および203.2の場合のようにバスマスタとは別に実現される場合、MPUはバスアーキテクチャ(システムバス・インフラストラクチャ210等)の一部として実現されてもよい。こうした実施形態では、MPUは、バスマスタを「所有」または使用するCPUのOSまたはカーネルの制御下にあり得る。例えば、MPU203.1は、バスマスタ201.1を所有するCPUのOSまたはカーネルの制御下にあり得る。システムバス・インフラストラクチャ210の一部として実施されるMPUは、USBコントローラ、即ちグラフィックコントローラ用のイーサネットコントローラ等のバスマスタに関連付けることができる。このリストは網羅的なものではなく、システムバス・インフラストラクチャ210と共に他のバスマスタを使用することができる。一実施形態では、MPU203.1および203.2として示されるようなMPUは、一貫したソフトウェアインタフェースを保証するためにCPUの一部として実装されてもよい。そのような実施形態では、MPUは特定のメモリ領域と関連付けられてもよく、また特定のアクセス属性定義を割り当てられてもよい。特定のアクセス属性定義は、以下に説明されるように、様々なシステム構成要素およびメモリ位置にアクセスが提供される方法および理由を定義することができる。
【0019】
MPU203.0~203.nは、単一のバスマスタ(201.1~201.nの各々)に対するユーザアクセスと特権アクセスとを区別することができる。MPUはまた、セキュア/非セキュア属性のアクセス制御を実行することもできる。バスマスタ201.0~201.n等のバスマスタがタスクを変更した場合、またはスタンドアロンMPUに関連付けられている非CPUマスタが所有権を変更した場合、MPU設定はOSまたはカーネルソフトウェアによってアップデートすることができる。
【0020】
一実施形態では、ダイレクトメモリアクセス(DMA)コントローラは、MPUを用いて実装することができる。この実施形態では、DMAコントローラは、DMAコントローラが接続されているチャネルをプログラムしたバス転送のアクセス制御属性を継承することができる。
【0021】
保護システム200は、多数の共有メモリ保護ユニット(SMPU)205.0~205.nも含むことができる。各SMPU205.1~205.nは、バスマスタ(各201.1~201.n)に関連付けられ、実装される場合には、MPUとシステムバスアーキテクチャ210との間に配置することができる。SMPUは全てのバスマスタ201.1~201.nによって共有されてもよく、これは、単一バスマスタ専用のMPU203.1~203.nとは対照的である。SMPU205.1~205.nは、異なる保護コンテキスト、およびセキュアアクセスと非セキュアアクセスとを区別することができる。SMPU205.1~205.nはまた、ユーザ/特権モード属性に基づいてアクセス制御を実行することもできる。
【0022】
保護システム200は、バスマスタ201.1~201.nおよびメモリサブシステム220に結合されたシステムバスアーキテクチャ210を含むことができる。メモリサブシステム220は、少なくとも1つのメモリアレイ(3つのメモリアレイ223.0~223.2として図示)と、少なくとも1つのメモリコントローラ(3つのメモリコントローラ221.0~221.2として図示)とを含むことができる。メモリコントローラ221.0~221.2は、バスマスタ201.1~201.nによって命令されるように、バス転送およびシステムバスアーキテクチャ210上のコマンドに基づいて、メモリアレイ223.0~223.2のメモリ位置への読み書き動作を制御することができる。メモリアレイ223.0~223.2のメモリ位置へのアクセスは、MPU203.1~203.nおよびSMPU205.1~205.nによって制御することができる。
【0023】
保護システム200は、システムバスアーキテクチャ210に結合された周辺バスアーキテクチャ230も含むことができる。周辺バスアーキテクチャ230は、バスマスタ201.1~201.nからのバス転送を受信するためにシステムバスアーキテクチャ210に結合された少なくとも1つのマスタ/スレーブ(MS)インタフェース231.1~231.nを含むことができる。MSインタフェース231.1~231.nは、周辺機器保護ユニット(PPU)233.1~233.nを含むことができる。
【0024】
周辺バス・インフラストラクチャ230は、MSインタフェース231.1~231.nと周辺機器グループ250.0~250.nとの間のトラフィックを処理するためのアービタ235.0~235.nを含むことができる。説明を容易にするために、周辺機器250.0のみについて以下に説明するが、周辺機器グループ250.1~250.nも同様に構成可能である。周辺機器グループ250.0は、PPU251.0、PPU MMIOレジスタ252.0および253.0、SMPU MMIOレジスタ254.0、MPU MMIOレジスタ255.0、並びに周辺機器MMIOレジスタ256.0を含むことができる。様々なMMIOレジスタを使用して、図1のシステムバスアーキテクチャ210およびバスアーキテクチャ140を通じて実現されるセキュリティおよび保護を実施することができる。
【0025】
保護システム200により、各バスマスタがきっかり1つのマスタ/スレーブインタフェース(MS0~MS3)を介して、周辺サブシステムにアクセスすることを可能にすることができる。4つのマスタ/スレーブインタフェースは、アクセスが異なるマスタインタフェースを介して行われ、かつ周辺サブシステムの異なる周辺機器グループに向けられる限り、周辺機器への最大4つまでの同時アクセスを可能にする。
【0026】
各マスタ/スレーブインタフェースは、各周辺機器グループに対応する固定PPU構造およびプログラマブルPPU構造を含むことができる。各周辺機器グループにおいて、周辺サブ領域(例えば252および253)に対する固定PPU構造と、各周辺(例えば251)に対する固定PPU構造とが存在してもよい。周辺機器グループのための固定PPU構造は、特定の保護コンテキストに対する周辺機器グループ全体へのアクセスを拒否または制限することができる。こうした実施形態では、周辺機器グループ内の特定のサブアドレス範囲に対する例外は許可されない。周辺機器グループのための固定PPU構造は最も高い優先順位を与えられてもよく、それらを(PPU233の一部として)マスタ/スレーブインタフェースに配置してもよい。この実施形態では、アクセスが拒否されると、そのアクセスはターゲットとなる周辺機器グループに到達せず、また、周辺機器グループは、別のマスタインタフェースによって同時にアクセスされてもよい。
【0027】
周辺サブ領域および周辺機器全体に対する固定PPU構造は、周辺機器グループよりも小さいアドレス範囲を含むことができる。その結果、それらを周辺機器グループ自体の中に配置することができる。周辺サブ領域の固定PPU構造は、周辺機器全体の保護属性から例外を作成する故、それらは周辺機器全体に対して定義されている固定PPU構造よりも優先度が高い場合がある。
【0028】
プログラマブルPPU構造は、全ての周辺機器グループの組み合わせられたアドレス範囲をカバーすることができる。従って、プログラマブルPPU構造は、マスタ/スレーブインタフェースに配置されてもよい。他の実施形態では、プログラマブルPPU構造は、周辺機器グループ内に配置されてもよい。第1の実施形態では、各周辺機器グループ内に重複するプログラマブルPPU構造が存在し得る。第2の実施形態では、プログラマブルPPU構造を、周辺グループ間に分散させることができる。
【0029】
図3は、プログラマブルPPU構造が周辺機器グループ内の固定PPU構造の後に評価されることを保証するための方法300を示す。プログラマブルPPU構造は、ステップ310にて評価される。判定ステップ315にて違反が検出された場合、情報に違反フラグを立てることができる。固定PPU構造は、ステップ320において評価することができる。一実施形態では、ステップ320は、ステップ310と同時に、またはステップ310とは別個に実施してもよい。判定ステップ325において違反が検出されなかった場合には、ステップ330からのフラグ付きの情報をステップ340にて評価することができる。判定ステップ345において違反が検出されなかった場合、ステップ350にてアクセスが許可される。判定ステップ315で違反が検出されなかった場合にも、ステップ350でアクセスが許可される。判定ステップ325または判定ステップ345のいずれかにおいて違反が検出された場合、ステップ360においてアクセスが拒否される。
【0030】
図2の保護システム200は、MPU、SMPU、およびPPUを用いたコンテキストベースの保護スキームを提供することができ、このスキームにより、各構造について、統一メモリアーキテクチャにおけるアドレス範囲および所与のアドレス範囲へのアクセスを許可する方法を管理するアクセス属性を特定することで、複数の保護構造をサポートすることができる。保護システムによって検出または禁止される違反は、バス転送のアドレス領域およびアクセス属性と、保護構造のアドレス範囲およびアクセス属性との間の不一致によって生じ得る。違反が検出されると、その違反を図1の障害MMIO180のような障害報告構造内に捕捉してもよく、これにより将来的な分析を可能にしてもよい。これは、エラーの原因を理解するのに役立ち得る。動作における障害は、プログラミングまたはシステム定義のバグが原因である可能性がある。障害は、アクセスまたは制御を不正に試みたことが原因であり得る。障害報告構造は割り込みを生成して、障害の発生を示すことができる。一実施形態では、この割り込みを使用することで、障害が発生しており、分析が必要であることをシステム外部の処理装置に示すことができる。これは、バスマスタ自身によりバスエラーを解決できないが、代わりに他のバスマスタがバスエラーを解決する必要がある場合に特に役立ち得る。
【0031】
バスエラーをもたらす保護システムの違反は、バス転送がそのターゲットに到達するのを防ぐ。例えば、周辺機器をターゲットとしたMPUまたはSMPU違反は、周辺機器のPPUに到達しない。
【0032】
<保護コンテキスト>
各バスマスタは、MPU保護コンテキストフィールド、即ちPC[]を有することができる。保護コンテキストは、バスマスタによって開始された全てのバス転送に対する保護コンテキスト属性として使用することができる。SMPUおよびPPUは、バス転送に割り当てられた保護コンテキストに基づいて、バスマスタによって開始されるメモリ位置および周辺機器位置へのバス転送を許可または禁止(制限)することができる。
【0033】
一実施形態では、複数のバスマスタが保護コンテキストを共有することができる。例えば、CPUおよび該CPUの制御下にあるUSBコントローラは、同じ保護コンテキストを共有することができる。この例では、CPUおよびUSBコントローラは、同じSMPUおよびPPUアクセス制限を有することができ、各々(CPUおよびUSBコントローラ)からのバス転送は、同じ条件下で、かつ同じメモリ位置または周辺機器位置に対して許可または禁止される。
【0034】
バスマスタの保護コンテキストは、PC[]フィールド(PC[])を再プログラミングすることによって変更することができる。しかしながら、保護コンテキストはバス転送を許可または禁止するように機能する故、PC[]フィールドへの変更を制御しなければならない。即ち、PC[]フィールドへの変更は、システムのセキュリティを維持する必要がある。PC[]フィールドへのアップデートに対して同レベルのセキュリティを維持できない場合、意図しない、または保護コンテキストを回避し得るシステムのセキュリティへの変更が許可され得る。更に、バス・レイテンシおよびパフォーマンスに悪影響を与えることなく、保護コンテキストを頻繁に変更することができるように、保護コンテキストを変更しても、最小限のCPUオーバーヘッドしか発生しないようにすべきである。保護コンテキストに対する頻繁かつ安全な変更を達成するために、各バスマスタは、バスマスタPC[]フィールドにプログラムされ得る利用可能な保護コンテキストを識別するSMPU保護コンテキストマスクフィールドを有することができる。以下のフィールドは、バスマスタ保護コンテキスト制御に必要なセキュリティを提供することができる。
・MPU保護コンテキスト-バスマスタの制御下にあり、バスマスタのMPU MMIOレジスタと同じアクセス制限を有する。
・保護コンテキストマスク-セキュアCPUの制御下にあり、SMPU MMIOレジスタと同じアクセス制限を有する。
【0035】
SMPUおよびPPUは、バス転送に割り当てられている保護コンテキスト属性に基づいてバス転送を許可および制限する。従って、保護コンテキストは、バスマスタとSMPUおよびPPU保護との間の保護ステップを提供する。この実施形態は、PC[]フィールドを再プログラミングすることによって、単一のバスマスタが複数の保護役割により識別することを可能にする。SMPUおよびPPUを再プログラムする必要がない故、保護コンテキストへの変更によるCPUのオーバーヘッドは限定的である。
【0036】
<専用の機能>
専用の機能を有する1つの保護コンテキストを有することが望ましい場合がある。一実施形態では、専用機能を保護コンテキスト0に割り当てることができる。保護コンテキスト0は、全てのシステム構成要素に完全にアクセスすることができる。「信頼のルート(root of trust)」を確立することが重要である。セキュアCPUが製造者コードおよび顧客コードの両方を実行することができるように、バスマスタ0を「セキュアCPU」として機能するように、使用または許可することができる。CPUの製造者コードは、ROM164およびフラッシュ162等の読み取り専用メモリ(ROM)またはフラッシュに記憶されてもよい。製造者ROMは信頼できる(信頼のルート)と見なされ、製造者のフラッシュを認証するために使用されてもよい。様々な実施形態において、製造者コードは、フラッシュプログラミング、eFUSEプログラミング、または他の製造者独自の機能を提供するために使用されてもよい。
【0037】
セキュアCPUによって実行するための顧客コードは、フラッシュにプログラムされてもよい。製造者はこのコードを制御できない場合がある。従って、顧客コードは信頼できるとは限らない。顧客コードの実行によって、製造者コードの信頼できる品質が損なわれるべきではない。
【0038】
信頼できる製造者コードおよび信頼できない顧客コードは同じCPUによって実行される可能性がある故、マスタ固有の保護コンテキスト以上のものに基づく保護スキームを提供することが必要となり得る。保護コンテキスト0に与えられた特別な意味は、ハードウェアサポートおよびセキュアCPU保護コンテキストの制御を提供することができる。保護コンテキスト0は、全てのメモリおよび周辺機器位置への無制限の(保護されていない)アクセスを提供することができる。保護コンテキスト0は、2つの条件下で、変更(または入力)することができ、従って、保護コンテキスト0の使用を制限することができる。
【0039】
第1の条件では、セキュアCPUは、リセット例外ハンドラの実行によってリセットすることができる。この条件では、特定のROMアドレスからベクトルアドレスを取得することができる。ROMアドレスは製造者によって提供され、かつベクトルアドレスはROMから提供される故、ベクトルアドレスは信頼できるものである。従って、ハンドラのエントリポイントは信頼することができる。セキュアCPUのリセット後、全ての割り込みを無効にし、CPUの実行を決定的にすることができる(即ち、リセット例外ハンドラによって完全に決定される)。
【0040】
第2の条件では、セキュアCPU例外ハンドラまたは割り込みハンドラを受け取ることができる。この条件では、ハンドラベクトルアドレスは、設定可能なベースアドレスを有するベクトルテーブルによって提供することができる。セキュアCPUがリセットされると、ベースアドレスがデフォルト値に設定され、ハンドラベクトルアドレスが書き込まれる。ハンドラベクトルアドレスはROMアドレスである故に、信頼することができる。しかしながら、CPUはベクトルテーブルのベースアドレスからSRAMアドレスに移動することができ、ハンドラベクトルアドレスは任意の値にプログラムすることができる。プログラムされた値は、結果的に顧客が提供したハンドラコードとなり得る。この場合、ハンドラのエントリポイントは信頼できない可能性がある。しかしながら、保護コンテキストは、セキュアCPUベクトルハンドラアドレスが特定のベクトルアドレスと同じ場合にのみ、0に変更することができる。顧客コードによりベクトルテーブルを移動することは可能であるが、保護コンテキスト0への変更はベクトルアドレスが修正されていないことを必要とする。セキュアCPUベクトルアドレスがハンドラと同じではないことをシステムが検出した場合、保護コンテキストは0に変更されない。既に保護コンテキストが0の場合、0に変更される前の値に戻すことができる。
【0041】
保護コンテキスト0は信頼できる製造者コードを識別し、(SMPUおよびPPUによる)無制限のアクセスを提供する故に、保護コンテキスト0に対するセキュリティは不可欠である。
【0042】
<保護構造>
本発明の保護システムは、(本明細書ではシステムバスアーキテクチャとも呼ばれる)バス・インフラストラクチャ上のバス転送を許可または制限することを意図している。保護システムのバス転送は、以下を含む多数の属性を指定する。
・バス転送によってアクセスされるアドレス範囲
・読み取り/書き込み属性
・実行属性
・ユーザ/特権属性
・セキュア/非セキュア属性
・保護コンテキスト属性
【0043】
バス転送アドレス範囲は、バス転送が意図されるメモリ位置または周辺MMIOレジスタのいずれかを指定する。構造的には、メモリ保護と周辺機器保護との間にはほとんど違いがない。しかしながら、システム内のセキュリティ対策の実施は、メモリ保護と周辺機器保護との分離から利益を得る。一部の実施形態では、この分離は、CPUサブシステムにメモリ保護を提供し、周辺機器サブシステムに周辺機器保護を提供することによって達成される。
【0044】
読み取り/書き込み属性は、特定のマスタによって読み書きされるメモリまたは周辺機器の能力を保護することができる。実行属性は、コードへの、または特定のメモリもしくは周辺機器のデータへのアクセスを設定するために使用することができる。即ち、一実施形態では、バス転送は特定のコマンドまたは周辺機器のコードにアクセスしようとする場合がある。一方、バス転送は、一度実行されるとコードまたはコマンドの出力にアクセスしようとする場合がある。ユーザ/特権属性は、OSまたはカーネルアクセスとタスクまたはスレッドアクセスとを区別するために使用することができる。セキュア/非セキュア属性は、セキュアアクセスと非セキュアアクセスとを区別するために使用することができる。最後に、保護コンテキスト属性を使用して、特定の周辺機器、周辺機器グループ、またはマスタをサイロ化することができる。
【0045】
図1に関連して説明したように、メモリ保護ユニット(MPU)、共有メモリ保護ユニット(SMPU)、および周辺機器保護ユニット(PPU)を含む複数のレベルの保護構造があり得る。MPUは、単一のマスタと関連付けられてもよく、単一の関連付けられたマスタからのユーザアクセスと特権アクセスとを区別することができる。MPUはまた、セキュア/非セキュア属性に対してアクセス制御を実行してもよい。図1のバスマスタ101.0および101.3のように、一部のマスタは内蔵MPUを有することができる。他のバスマスタについては、図1のMPU103.1、103.2、および103.nのようなバス・インフラストラクチャの一部としてMPUを実装することができる。
【0046】
SMPUは、全てのバスマスタによって共有されてもよい。一実施形態では、SMPUは、バスマスタのサブセットによって共有されてもよいが、システムのバスマスタのうちの全てによって共有されなくてもよい。SMPUは、異なる保護コンテキスト間、およびセキュアアクセスと非セキュアアクセスとを区別することができる。SMPUはまた、ユーザ/特権モード属性に対してアクセス制御を実行してもよい。SMPUは共有されている故、SMPUは特定のバスマスタまたは単一のバスマスタの一部として実装されない。代わりに、SMPUが必要なだけの数のバスマスタによってアクセスすることができるように、SMPUはシステムバスアーキテクチャの一部として実装され得る。
【0047】
PPUは、周辺機器グループの一部と同様にマスタ/スレーブインタフェースの一部としても実装されてもよい。各バスマスタは、図2のMSインタフェース233等のPPUを含む1つのマスタ/スレーブインタフェースを介して周辺サブシステムにアクセスすることができる。周辺機器グループは、図2の周辺機器グループ251等の、周辺機器グループ専用のPPUを介して複数のマスタインタフェースを通じて複数のマスタによってアクセスすることができる。周辺機器グループは、共有AHB-Liteバス・インフラストラクチャを有する複数の周辺機器から構成することができる。PPUは、異なる保護コンテキスト間、セキュアアクセスと非セキュアアクセス、およびユーザモードアクセスと特権モードアクセスとを区別することができる。
【0048】
保護システムの各保護構造は、アドレス領域および少なくとも1つのアクセス制御属性によって定義されてもよい。保護構造は、メモリスペースの所与の位置に整列させることができる。保護構造アドレスおよび属性に割り当てられる2つのレジスタは、それぞれ、保護構造の保護を可能にし得る。
【0049】
続くリソース、即ち、周辺機器グループ内の周辺機器と、個々のIPC構造、データワイヤまたはダイレクトメモリアクセス(DMA)コントローラチャネル構造、SMPU保護領域構造、およびPPU保護領域構造等の周辺機器内のMMIOレジスタとは、説明した保護スキームにより達成される保護を必要とする可能性がある。上記のリソースは、固定アドレス範囲、または設計時に分かっているアドレス範囲をカバーすることができる。
【0050】
MPU、およびSMPU、またはPPU等の保護ユニットは、複数の保護構造を含むことができ、それらの複数の保護構造を降順で評価することができる。より高いインデックス構造はより低いインデックス構造よりも優先され得る。適切なセキュリティのために、非セキュア保護コンテキストにおいては、セキュアアクセスを提供する保護構造よりも高いインデックスを有する保護構造を追加することは不可能であるべきである。そのような場合、非セキュアアクセスを可能にするように、より高いインデックスを有する保護構造をプログラムすることが可能であり得る。セキュアシステムでは、より高いプログラム可能な保護構造は、制限されたアクセスのみを許可するように保護されている。
【0051】
MPUSおよびSMPUと比較して、PPUは比較的多数の保護領域を有することができる。PPUによって提供される保護を必要とし得るリソースには、周辺機器グループ内の周辺機器全て、または周辺機器内の一連のMMIOレジスタが含まれ得る。周辺機器内のMMIOレジスタは、個々のIPC構造、DMAコントローラチャネル構造、SMPU保護領域構造、およびPPU保護領域構造を含むことができる。
【0052】
PPU保護構造は、既知のアドレス範囲を有するリソースを含むことができ、そのために保護の設計時構成はアドレス範囲を要求する。デバイスの使用状況によって識別されるリソース等の、不明なアドレス範囲を有するリソースについては、保護領域のアドレス範囲を完全にプログラム可能にすることができる。
【0053】
<アクセス制御属性>
上述したように、アクセス属性は、領域へのアクセス制御を指定することができる。領域、またはアドレス領域は、ベースアドレス、領域のサイズ、および有効または無効にすることができる領域内のサブ領域によって定義することができる。一実施形態では、8つのサブ領域が存在し得る。しかしながら、より多くのまたはより少ないサブ領域が存在してもよい。
【0054】
領域へのアクセス制御は、その領域内の全てのサブ領域に適用されてもよい。アクセス制御は、転送のアクセス属性を評価することによって実行される。様々な実施形態において、以下のアクセス制御フィールドが実装されてもよい。
・ユーザモードでの読み取りアクセスの制御
・ユーザモードでの書き込みアクセスの制御
・ユーザモードでの実行アクセスの制御
・特権モードでの読み取りアクセスの制御
・特権モードでの書き込みアクセスの制御
・特権モードでの実行アクセスの制御
・セキュアアクセスの制御
・SMPUおよびPPUにのみ存在し得る、個々の保護コンテキストに対する制御
・SMPUおよびPPUにのみ存在し得る「マッチング」および「アクセス評価プロセス」の制御
【0055】
一例として、上記のアクセス制御フィールドを使用することによって、保護コンテキスト2は、以下の設定を有する特権モードでの読み取りおよび書き込み動作の、非セキュアアクセスに対して定義することができる。
【0056】
【表1】
【0057】
3つの別個のアクセス評価サブプロセスを区別することができる。第1のサブプロセスは、読み取り/書き込み、実行、およびユーザアクセス属性/特権アクセス属性に基づいてアクセスを評価することができる。第2のサブプロセスは、セキュア/非セキュア属性に基づいてアクセスを評価することができる。第3のサブプロセスは、(SMPUおよびPPUによって使用される)保護コンテキスト属性に基づいてアクセスを評価することができる。
【0058】
全てのアクセス評価が成功した場合、アクセスが許可される。アクセス評価のいずれかが失敗した場合、アクセスは禁止される。アクセス拒否は、図1の障害MMIOレジスタ180等の障害MMIOレジスタに記憶されてもよい。
【0059】
<マッチング>
バス転送アドレスのマッチングおよびバス転送のアクセス評価は、2つの独立した処理にて実現されてもよい。マッチングのために、第1のプロセスにより、各保護構造に対するアドレス範囲内に含まれる転送アドレスを識別することができる。次いで、第1のプロセスにより、所与の保護コンテキストに対応する適切なビットが「1」であるか否かを判定することができる。これによりマッチング領域を識別する。アクセス評価のために、第2のプロセスにより、アクセス制御属性に対するバス転送属性を評価することができる。
【0060】
保護ユニットには複数の保護構造が存在し得る。一実施形態では、保護ユニットは、保護構造を降順で評価することができる。より高いインデックス構造は、より低いインデックス構造よりも優先される場合がある。より高いインデックス構造は、より低いインデックス構造よりも多くの制御またはアクセスを有することができる故、許可されるべき場合に、より低いインデックス構造がアクセスを許可しないように、より高いインデックス構造へのアクセスが最初に評価される。このパラダイムに従わないと、非セキュア保護コンテキストが、セキュアアクセスを提供する保護構造よりも高いインデックスを有する保護構造に追加され得る。換言すると、より高いインデックスを有する保護構造が、非セキュアアクセスを可能にするように不適切にプログラムされ得る。
【0061】
<保護構造の保護>
保護構造は、起動時に一度設定されてもよく、またはデバイス実行中に動的に変更されてもよい。一実施形態では、CPU RTOSは、CPUのMPU MMIO設定を変更することができる。前述したように、セキュアCPUは、SMPUおよびPPU MMIO設定を変更することができる。MPU、SMPU、およびPPU MMIOレジスタは、他の周辺MMIOレジスタと同様のMMIOレジスタである故、それらを同様に変更することができる。更に、保護構造のアドレス範囲には、保護構造自体を含むことができる。このトートロジーを使用して、保護構造自体を保護するために保護スキームを使用することが可能である場合があり、従って、保護スキームは回避するのがより困難となる。
【0062】
図4は、一実施形態による、周辺機器(A)410を保護するために使用されるスキーム400を示す。周辺機器Aは、2つの保護コンテキスト、PC[1]401およびPC[2]402によって共有することができる。周辺機器A410は、アドレス領域415を有することができる。アドレス0x4000:0000(最大ox4000:001f)における42バイトPPU保護構造422は、周辺機器A410を保護するために使用することができる。保護構造422は、PC[1]401およびPC[2]402に関連するいくつかの保護構造のうちの1つであり得る。保護構造は、PPU保護構造420.1および420.2のそれぞれにおけるPC[1]401およびPC[2]402について併せてグループ化することができる。周辺機器A410の所有権は、PC[2]402に整列するように保護構造の保護制御属性を再プログラミングするPC[1]401によって、PC[1]401からPC[2]に渡すことができる。これは、PC[2]402が周辺機器A410にアクセスすることができるように、PPU保護構造422を再プログラミングするPC[1]401として図4に示されている。同様に、PC[2]402が周辺機器A410を「所有する」場合、PC[2]402は周辺機器A410をPC[1]401に割り当てることができる。
【0063】
図5は、保護コンテキスト制御属性を再プログラミングすることによって、周辺機器B510を所有していない保護コンテキストが自身に所有権を割り当てるのを防ぐことができる周辺機器(B)510を保護するためのスキーム500を示す。アドレス0x4000:0000(最大ox4000:001f)および0x4000:0020(最大0x4000:003f)における2つの32バイトPPU保護構造515および517を使用することができる。保護構造517は、それ自体と同様に保護構造515を保護するために使用されてもよい。保護構造515は、スレーブ保護構造とすることができ、保護構造517は、マスタ保護構造とすることができる。マスタおよびスレーブ保護構造は、保護ペア513とすることができる。
【0064】
PPU保護構造520は、周辺機器B510の保護構造515および517に対応し得る。スレーブ保護構造522は、保護構造515に整列させてもよい。マスタ保護構造524は、保護構造517に整列させてもよい。最初に、PPU保護構造520.0は、PC[1]501に割り当てられた周辺機器Bの所有権を有するスレーブ保護構造522と、PC[1]に割り当てられたマスタ保護構造524と、を有することができる。第1のステップにおいては、PPU保護構造520.1が、PC[2]502に割り当てられた周辺機器Bの所有権を有するスレーブ保護構造522と、PC[1]501に割り当てられたマスタ保護構造524とを有することができるように、PC[1]501は、周辺機器B510の所有権をPC[2]502に変更することができる。第2のステップにおいては、PPU保護構造520.2がPC[2]502に割り当てられた周辺機器B510の所有権を有するスレーブ保護構造522と、PC[2]502に割り当てられたマスタ保護構造524とを有することができるように、PC[1]501は、周辺機器B510の所有権をPC[2]502に変更することができる。
【0065】
所有権のPC[2]502からPC[1]501への変更は、同様のパターンに従うことができる。第1のステップでは、PPU保護構造520.3が、PC[1]501に割り当てられた周辺機器Bの所有権を有するスレーブ保護構造522と、PC[2]502に割り当てられたマスタ保護構造524とを有するように、PC[2]502は、周辺機器Bの所有権をPC[1]501に変更することができる。第2のステップでは、PPU保護構造520.1が、PC[1]501に割り当てられた周辺機器B510の所有権を有するスレーブ保護構造522と、PC[2]502に割り当てられたマスタ保護構造524とを有するように、PC[2]502は、周辺機器B510のマスタ/スレーブの所有権をPC[1]501に変更することができる。
【0066】
換言すると、第1のステップは周辺機器の所有権を他の保護コンテキストに変更し、第2のステップはマスタ/スレーブの所有権を他の保護コンテキストに変更する能力を変更する。このスキームは、保護コンテキスト制御属性を再プログラムすることによって、周辺機器を所有していない保護コンテキストが自身に所有権を割り当てるのを防ぐことができる。
【0067】
図5に示されるスキームでは、保護構造が隣接していることが好ましい。例えば、PPUおよびSMPU保護構造は、対になって整列されてもよい。第1の保護構造は、リソース(即ち、周辺機器)を保護し、第2の保護構造はその保護を保護する。図5に示すスキームの他の様々な実施形態では、周辺機器の所有権を3つ以上の保護コンテキストによって共有することができる一方、周辺機器の所有権を変更する能力を単一の保護コンテキストに限定することができる。
【0068】
以上の記載において、多数の詳細が説明されている。しかしながら、本開示の恩恵を受ける当業者に明らかなように、本発明の実施形態はこれらの特定の詳細なしでも実施することができる。場合により、周知の構造および装置は、説明が分かりにくくなるのを避けるために、詳細に示す代わりにブロック図の形で示されている。
【0069】
詳細な説明のいくつかの部分はコンピュータメモリ内のデータビットに対する演算のアルゴリズムおよびシンボル表現で表されている。これらのアルゴリズム記述および表現は、データ処理分野の当業者が他の当業者に自分の作業の本質を最も有効に伝えるための手段である。アルゴリズムは、本明細書においても、一般的に、所望の結果をもたらす首尾一貫したステップシーケンスとして認識される。これらのステップは物理量の物理的操作を必要とする。通常、必ずしもその限りではないが、これらの量は蓄積、転送、組み合わせ、比較等の操作が可能な電気信号または磁気信号の形態をとる。主として、公共使用のために、時にはこれらの信号はビット、値、エレメント、シンボル、キャラクター、ターム、ナンバー等と呼んだ方が便利である。
【0070】
しかしながら、これらの用語およびその類似用語はあらゆる適切な物理量に関連するものであり、単にこれらの量に適用される便利な命名に過ぎないことを念頭に置かれたい。以上の考察から明らかなように、特に断わりのない限り、本明細書において、「暗号化する」、「復号化する」、「蓄積する」、「提供する」、「生じる」、「得る」、「受信する」、「認証する」、「削除する」、「実行する」、「要求する」、「通信する」、「開始する」等の用語を用いる考察はコンピュータシステムまたは類似の電子コンピュータ装置のアクションおよび処理に関連し、これらのアクションおよび処理はコンピュータシステムのレジスタおよびメモリ内の物理(例えば電子)量として表されるデータを操作し、コンピュータシステムメモリまたはレジスタまたは他のこのような情報蓄積、転送または表示装置内の同様に物理量として表される他のデータに変換する。
【0071】
本明細書において、用語「例」または「模範的」は実施例、事例または実例として役立つことを意味するために使用されている。本明細書に記載された態様または設計は必ずしも他の態様または設計より好ましいまたは優れていると解釈されるべきではない。むしろ、用語「例」または「模範的」の使用はコンセプトを具体的に提示することを意図している。本明細書で使用されているように、「または」は包括的な「または」を意味し、排他的な「または」を意味することは意図していない。即ち、特に断りがない限り、または文脈から明らかでない限り、「XはAまたはBを含む」は自然な包括的順列のどれかを意味するように意図されている。即ち、XはAを含む、XはBを含む、またはXはAとBの両方を含む場合、「XはAまたはBを含む」は上記の事例の何れかで満足される。更に、本明細書および請求の範囲で使用される冠詞「a」および「an」は、特に断りがない限り、または文脈から単数形を指示していることが明らかでない限り、一般的に「一つまたは複数」と解釈されたい。更に、本明細書中の「ある実施形態」または「一実施形態」または「ある実施例」または「一実施例」の使用は特にその旨の断りがない限り同じ実施形態または実装形態を意味することを意図していない。
【0072】
上述したプロトコルに関連して参照された特定のコマンドまたはメッセージは、単なる例示を目的としている。当業者は、異なる特定の文言であるが同様の機能のコマンドを使用することができ、それについても上記の説明の範囲内であることを理解するであろう。
【0073】
本明細書に記載される実施形態は本発明明細書に記載される操作を実行する装置にも関する。この装置は所要の目的のために特別に構成することができ、またコンピュータに格納されたコンピュータプログラムにより選択的に活性化される、または再設定される汎用コンピュータを備えるものとすることができる。このようなコンピュータプログラムは、非トランジトリなコンピュータ可読記憶媒体、例えば、限定されないが、フロッピーディスク、光ディスク、CD-ROMおよび磁気-光ディスク等の任意のタイプのディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気または光カード、フラッシュメモリ、または任意のタイプの電子命令記憶媒体に格納することができる。用語「コンピュータ可読記憶媒体」は、一つまたは複数の命令セットを格納する単一媒体または複数の媒体(例えば、集中型または分散型データベースおよび/または関連キャッシュおよびサーバ)を含むものと解釈されたい。用語「コンピュータ可読記憶媒体」はまた、本実施形態の方法の任意の一つ以上をマシンに実行させる命令セットを格納、符号化、または担持し得る任意の媒体を含むものと解釈されたい。従って、用語「コンピュータ可読記憶媒体」は、限定されないが、固体メモリ、光学媒体、磁気媒体、または本実施形態の方法の任意の一つ以上をマシンに実行させる命令セットを格納し得る任意の媒体を含むものと解釈されたい。
【0074】
本明細書に記載のアルゴリズムおよびディスプレイは本質的に任意の特定のコンピュータや他の装置に関するものではない。種々の汎用システムが本明細書に記載の技術によるプログラムとともに使用可能であり、また所要の方法ステップを実行するためにより特化した装置を構成するのが便利であり得る。このような種々のシステムに必要な構造は以下の記載から明らかになる。更に、本実施形態は任意の特定のプログラミング言語に関連して記載されていない。本明細書に記載の本発明の教示事項を実現するために種々のプログラミング言語が使用可能であることは認識されよう。
【0075】
以上の記載は、本発明のいくつかの実施形態のより良い理解を与えるために多くの特定の詳細、例えば特定のシステム、コンポーネント、方法等を記述している。しかしながら、本発明の少なくとも一部の実施形態はこれらの特定の詳細がなくても実施し得ることは当業者に明らかであろう。他の例では、周知のコンポーネントまたは方法は、本発明が不必要にあいまいにならないように、詳細に示さないでブロック図で示している。従って、以上に記載の特定の詳細は単なる例示である。特定の実施例はこれらの模範的な詳細から変更することができるが、依然として本発明の範囲に含まれると考えられる。
【0076】
以上の記載は、説明のためであって限定を意図するものではないことを理解されたい。以上の記載を読み理解すると、多くの他の実施形態が考えられることは当業者に明らかであろう。従って、本発明の範囲は添付の請求項をこれら請求項の等価物の全範囲と一緒に参酌して決定されるべきである。
図1
図2
図3
図4
図5