(57)【要約】コンテキストベースの保護システムは、マスタ保護ユニット、共有メモリ保護ユニット、周辺機器保護ユニットを含む階層型保護構造を使用して、中央処理装置（ＣＰＵ）、メモリアレイまたはアレイの一部、および周辺機器間のバス転送動作に対するセキュリティを提供する。【選択図】図１
2019525319.tif 000002
【特許請求の範囲】
【請求項１】
複数の保護コンテキストにおいて動作するように構成可能な第１の中央処理装置（ＣＰＵ）と、
前記第１のＣＰＵが前記複数の保護コンテキストのうちの第１の保護コンテキストに設定されているときに、前記第１のＣＰＵによってアクセス可能となり、かつ、前記第１のＣＰＵが前記複数の保護コンテキストのうちの第２の保護コンテキストに設定されているときに、前記第１のＣＰＵによってアクセス不能となる、少なくとも１つの周辺モジュールと、
を備える、システム。
【請求項２】
前記第１のＣＰＵと、
少なくとも１つのメモリ保護ユニットと、
少なくとも１つの共用メモリ保護ユニットと、
を備えるＣＰＵサブシステムを更に含む、請求項１に記載のシステム。
【請求項３】
前記少なくとも１つのメモリ保護ユニットは、単一のバスマスタからのユーザアクセスと特権アクセスとを区別する、請求項２に記載のシステム。
【請求項４】
前記少なくとも１つの共有メモリ保護ユニットは、前記複数の保護コンテキストのうちの前記第１の保護コンテキストと第２の保護コンテキストとを区別し、また前記第１のＣＰＵのセキュアアクセスと非セキュアアクセスとを区別する、請求項２に記載のシステム。
【請求項５】
前記少なくとも１つの周辺モジュールと、
前記複数の保護コンテキストのうちの前記第１の保護コンテキストおよび第２の保護コンテキスト、セキュアアクセスおよび非セキュアアクセス、並びにユーザモードアクセスおよび特権モードアクセスを区別する少なくとも１つの周辺機器保護ユニットと、
を備える周辺サブシステムを更に含む、請求項１に記載のシステム。
【請求項６】
前記周辺モジュールへのアクセスは、ベクトルペアの値によって制御されており、前記ベクトルペアのうちの第１のベクトルは、前記周辺モジュールへの読み取りアクセスを制御し、また前記ベクトルペアのうちの第２のベクトルは、前記ベクトルペアのうちの前記第１のベクトルへの書き込みアクセスを制御する、請求項１に記載のシステム。
【請求項７】
前記第１の保護コンテキストからの前記第２の保護コンテキストにおける前記第１のＣＰＵの動作は、前記第２の保護コンテキストに関連する割り込み要因によってゲート制御されている、請求項１に記載のシステム。
【請求項８】
前記周辺モジュールがメモリである、請求項１に記載のシステム。
【請求項９】
前記複数の保護コンテキストのうちの少なくとも１つで動作するように構成可能な第２のＣＰＵを更に備える、請求項１に記載のシステム。
【請求項１０】
単一のバスマスタに割り当てられ、前記バスマスタからのユーザアクセス及び特権アクセスを区別するためのメモリ保護ユニット（ＭＰＵ）と、
複数のバスマスタに割り当てられ、異なる保護コンテキストを区別し、かつメモリへのセキュアアクセス及び非セキュアアクセスを区別するための、共有メモリ保護ユニット（ＳＭＰＵ）と、
周辺機器グループに割り当てられ、前記周辺機器グループへのセキュアアクセス及び非セキュアアクセスを区別するための周辺機器保護ユニット（ＰＰＵ）と、
を備える複数の保護構造を含む、バス・インフラストラクチャ。
【請求項１１】
前記ＰＰＵは、ユーザモードと特権モードとを認識することによって、前記周辺機器グループへのセキュアアクセスと非セキュアアクセスとを区別し、ユーザモードで許可されるアクセスは、特権モードで許可されるアクセスとは異なる、請求項１０に記載のバス・インフラストラクチャ。
【請求項１２】
前記複数の保護構造はそれぞれ、
アドレス領域と、
メモリ位置へのアクセス制御を指定するアクセス制御属性と、
によって定められる、請求項１０に記載のバス・インフラストラクチャ。
【請求項１３】
前記ＰＰＵは、
前記周辺機器グループにおける全ての周辺機器、および
個別のプロセッサ間通信（ＩＰＣ）構造、ＤＭＡコントローラチャネル構造、ＳＭＰＵ保護要求構造、またはＰＰＵ保護領域構造を含む、前記周辺機器グループのうちの周辺機器のサブセット、
のうちの少なくとも一方を含む、複数の保護領域を備える、請求項１０に記載のバス・インフラストラクチャ。
【請求項１４】
前記バスマスタは、第１の保護コンテキストおよび第２の保護コンテキストで動作する中央処理装置（ＣＰＵ）である、請求項１０に記載のバス・インフラストラクチャ。
【請求項１５】
前記バスマスタは、前記ＣＰＵが前記第１の保護コンテキストで動作するときに、前記周辺機器グループにアクセスし、また、前記ＣＰＵが前記第２の保護コンテキストで動作するときに、前記周辺機器グループへのアクセスを禁止する、請求項１４に記載のバス・インフラストラクチャ。
【請求項１６】
前記周辺機器グループへのアクセスは、前記ＰＰＵのベクトルペアの値によって制御されており、前記ベクトルペアのうちの第１のベクトルは、前記周辺機器グループへの読み取りアクセスを制御し、また前記ベクトルペアのうちの第２のベクトルは、前記ベクトルペアの第１のベクトルへの書き込みアクセスを制御する、請求項１０に記載のバス・インフラストラクチャ。
【請求項１７】
中央処理装置（ＣＰＵ）の複数の保護コンテキストのうちの第１の保護コンテキストを第１の周辺モジュールの許可された保護コンテキストと比較するステップと、
前記ＣＰＵの第１の保護コンテキストが前記第１の周辺モジュールの許可された保護コンテキストと一致する場合、前記ＣＰＵによる前記第１の周辺モジュールへのアクセスを許可するステップと、
前記ＣＰＵの保護コンテキストを前記第１の保護コンテキストから第２の保護コンテキストに変更するステップと、
前記第２の保護コンテキストが前記第１の周辺モジュールの許可された保護コンテキストと一致しない場合、前記ＣＰＵによる前記第１の周辺モジュールへのアクセスを禁止するステップと、
前記ＣＰＵの前記第２の保護コンテキストが第２の周辺モジュールの許可された保護コンテキストと一致する場合、前記ＣＰＵによる第２の周辺モジュールへのアクセスを許可するステップと、
を含み、
前記第１の保護コンテキストは、前記第２の保護コンテキストとは異なる、周辺モジュールへのアクセスを制御するための方法。
【請求項１８】
前記周辺モジュールへのアクセスは、各周辺モジュールに対するベクトルペアによって定義されており、前記ベクトルペアは、前記周辺モジュールへの読み取りアクセスを制御するための、前記ベクトルペアのうちの第１のベクトルと、前記ベクトルペアのうちの前記第１のベクトルへの書き込みアクセスを制御するための、前記ベクトルペアのうちの第２のベクトルとを含む、請求項１７に記載の周辺モジュールのコンテキストベースの保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願＞
本出願は、その全体が参照により本明細書に組み込まれる、２０１６年７月２０日に出願された米国仮特許出願第６２／３６４６５２号、および２０１６年７月１９日に出願された米国仮特許出願第６２／３６４２４６号の利益を主張する、２０１７年７月１８日に出願された米国特許出願第１５／６５３２０３号の国際出願である。
【０００２】
本開示は、概して、組み込みシステムに関し、より具体的には組み込みシステム内の通信およびデータのセキュリティに関する。
【発明の概要】
【課題を解決するための手段】
【０００３】
組み込みシステムは、一連のバスを介して様々な構成要素との間で情報をやり取りすることによって機能する。組み込みシステムの処理装置は、命令を実行するか、または１つあるいは複数のメモリに格納された情報にアクセスするように構成することができる。処理装置はまた、デジタルブロックおよびアナログブロックまたは周辺機器等の他のシステム構成要素と通信し、またはそれらを制御することもできる。デジタルブロックまたはアナログブロック、または周辺機器でさえ、ハードコーディング（固定機能）されていてもよく、またはそれらはプログラム可能であってもよい。システム構成要素の制御および情報へのアクセスまたは情報の転送は、一連のバスまたはバス・インフラストラクチャを介して達成することができる。
【０００４】
コンテキストベースの保護システムは、複数の保護コンテキストで動作するように構成可能な中央処理装置（ＣＰＵ）を含むことができる。コンテキストベースの保護システムは、少なくとも１つの周辺モジュールも含むことができ、この周辺モジュールは、ＣＰＵが複数の保護コンテキストのうちの第１の保護コンテキストに設定されたときに、ＣＰＵによってアクセス可能となり、また、ＣＰＵが複数の保護コンテキストのうちの第２の保護コンテキストに設定されたときに、ＣＰＵによってアクセス不能となる。
【０００５】
コンテキストベースの保護システムは、保護構造を含むバス・インフラストラクチャの一部として実装されてもよい。保護構造は、単一のバスマスタに割り当てられたメモリ保護ユニット（ＭＰＵ）を含むことができ、このＭＰＵは、バスマスタからのユーザアクセスと特権アクセスとを区別する。保護構造は、複数のバスマスタに割り当てられた共有メモリ保護ユニット（ＳＭＰＵ）を含むことができ、このＳＭＰＵは異なる保護コンテキストを区別し、またメモリへのセキュアアクセスと非セキュアアクセスとを区別する。保護構造は、周辺機器グループに割り当てられた周辺機器保護ユニット（ＰＰＵ）も含むことができ、このＰＰＵは、周辺機器グループへのセキュアアクセスと非セキュアアクセスとを区別する。
【図面の簡単な説明】
【０００６】
【図１】一実施形態による、コンテキストベースの保護システムを実装するように構成可能な組み込みシステムを示す説明図である。
【図２】一実施形態による、コンテキストベースの保護システムを示す説明図である。
【図３】一実施形態による、保護システムを使用した周辺機器への／周辺機器からの転送におけるセキュリティの評価方法を示す説明図である。
【図４】一実施形態による、周辺機器の保護コンテキストを変更するためのスキームを示す説明図である。
【図５】一実施形態による、周辺機器の保護コンテキストを変更するためのスキームを示す説明図である。
【発明を実施するための形態】
【０００７】
情報のバス転送は、他のバス転送と同時に起こり得る。システム要件およびシステムによって完了することができる多様なタスクに基づいて、様々な処理ユニットにより様々なシステム構成要素にアクセスすることができる。バス上では多くの事象が同時に生じる故、転送操作および試行された転送操作を追跡および制御して、システムが最適なパフォーマンスで意図したとおりに確実に動作し、かつセキュリティが要求されることが重要である。
【０００８】
組み込みシステムはまた、セキュリティ、機能上の安全性、およびパフォーマンスを実現するために保護を必要とし得る。セキュリティに関しては、セキュアメモリおよびＭＭＩＯアドレス領域を不正アクセスから保護する必要がある。即ち、プログラムおよびデータ記憶装置へのアクセスは許可された用途に限定されなければならないが、コマンドを受信し、またはバスを介してデータを共有することができる周辺機器も同様でなければならない。機能上の安全性に関しては、タスクおよびプロセスが、他のタスクおよびプロセスに関連するメモリおよびＭＭＩＯアドレス領域にアクセスするのを禁止しなければならない。分離することで、バス干渉がある場合でさえも、各動作の発生が保証される。一方で、メモリおよびＭＭＩＯアドレス領域は、それらの指定されたタスクおよびプロセスにて使用することができるように、それらに関連付けられないタスクおよびプロセスから保護されなければならない。この保護の全てがバス・レイテンシに繋がり、パフォーマンスに影響を与え得る。また、いかなる保護システムの再構成もまた、レイテンシの問題を引き起こすことなく可能でなければならない。
【０００９】
図１は、構成可能バスアーキテクチャ１４０を介してセキュリティを提供するように構成されたシステム１００を示す。システム１００は、ＣＰＵサブシステム１１０に結合されたＩ／Ｏサブシステム１０５を含むことができる。ＣＰＵサブシステム１００は、Ｉ／Ｏサブシステム１０５からの、およびＩ／Ｏサブシステム１０５への入力および出力、並びに、周辺機器グループからの入力および出力を含む、多数の入力および出力を有するように構成することができる（要素は図示されていないが、周辺機器グループ１および２への接続は示されている）。後述するように、ＣＰＵサブシステム１１０への他の接続も存在し得る。
【００１０】
ＣＰＵサブシステム１１０は、それぞれ、Ｉ／Ｏサブシステム１０５並びに第１の処理コアおよび第２の処理コアに結合されているデバッグインフラストラクチャ１１５およびテストコントローラ１１７を含むことができる。第１の処理コアは、ＡＲＭ  Ｃｏｒｔｅｘ  Ｍ４、即ちＣＭ４コア１２０として実装することができる。ＣＭ４コア１２０は、ＣＭ４中央処理装置（ＣＰＵ）１２６、割り込み機能１２２、およびデバッグコンポーネント１２４を含むことができる。ＣＭ４コア１２０は、より速い処理速度で機能し、かつより高い処理および性能要件に対処するように構成することができる。第２の処理コアは、ＡＲＭ  Ｃｏｒｔｅｘ  Ｍ０＋、ＣＭ０＋コア１３０として実装されてもよい。ＣＭ０＋コア１３０は、ＣＭ０＋ＣＰＵ１３６、割り込み機能１３２、およびデバッグコンポーネント１３４を含むことができる。ＣＭ０＋コア１３０は、より遅い処理速度（周波数）で機能するように構成され、かつ補助プロセッサとして機能させてもよい。
【００１１】
ＣＰＵサブシステム１１０は、高速インフラストラクチャ１４２に、そして低速インフラストラクチャ１４４を含むことができる構成可能バスアーキテクチャ１４０も含むことができる。構成可能バスアーキテクチャ１４０は、処理コア、メモリ、および周辺機器から受け取ったデータおよびコマンドにセキュリティを提供するように構成することができる。構成可能バスアーキテクチャ１４０は、フラッシュ１６２用のフラッシュコントローラ１６１、ＲＯＭ１６４用のＲＯＭコントローラ１６３、およびＳＲＡＭ１６６用のＳＲＡＭコントローラ１６５に結合することができる。一実施形態では、各々に複数のＳＲＡＭモジュールおよび関連するＳＲＡＭコントローラがあってもよい。メモリ位置は、様々な実施形態において、ＣＰＵサブシステム１１０の一部または別個のシステム構成要素の一部であってもよい。
【００１２】
高速インフラストラクチャ１４２は、システムインタフェース（Ｓｙｓ  Ｉ／Ｆ）およびコードインタフェース（コード  Ｉ／Ｆ）を介してＣＭ４コア１２０に結合されて、ＣＭ４コア１２０から情報およびコマンドを受信することができる。高速インフラストラクチャ１４２は、周辺機器インタフェースおよびより速い処理速度で動作しているスレーブ（高速外部スレーブ）に結合されてもよい。
【００１３】
低速インフラストラクチャ１４４は、テストコントローラ１１７および低速外部マスタ並びにＣＲＹＰＴＯブロック１７０および一対のデータワイヤ、即ちデータワイヤ０  １７２およびデータワイヤ１  １７４に結合することができる。低速インフラストラクチャ１４４はまた、低速外部スレーブデバイス、ＣＭ０＋コア１３０並びに一対のデータワイヤ１７２および１７５に結合することができる。低速インフラストラクチャ１４４はまた、ＣＰＵサブシステム１１０の外部の周辺機器に結合されてもよい。外部の周辺機器には、低速外部スレーブを含んでもよい。
【００１４】
高速インフラストラクチャ１４２および低速インフラストラクチャ１４４を含む構成可能バスアーキテクチャ１４０は、バス転送仕様に基づいてバスを介した転送を許可または制限する保護ロジックを実装することによって保護またはセキュリティを提供することができる。バス転送仕様には、バスアドレス範囲と、読み取り／書き込み、実行、特権／ユーザ、セキュア／非セキュア等を含む様々な属性が含まれ得る。メモリの保護は、メモリ保護ユニット（ＭＰＵ）および共有メモリ保護ユニット（ＳＭＰＵ）によって提供することができる。周辺機器に対する保護は、周辺機器保護ユニット（ＰＰＵ）によって提供することができる。ＳＭＰＵおよびＰＰＵは、バスマスタの保護コンテキスト属性に基づいてコンテキストベースの保護追跡をサポートすることができる。この構成では、保護コンテキストに関連するフィールドを再プログラミングすることによって、単一のバスマスタが複数の保護的役割にて動作し得る。
【００１５】
ＣＰＵサブシステム１１０は、保護ＭＭＩＯレジスタ１５０、障害検出ＭＭＩＯレジスタ１８０、ＣＰＵサブシステム（ＣＰＵＳＳ）ＭＭＩＯレジスタ、およびプロセッサ間通信（ＩＰＣ）ＭＭＩＯレジスタ１８４を含むことで、ＣＰＵサブシステムの様々な要素を制御および構成し、かつ保護システムの機能を提供する。
【００１６】
図２は、本発明の一実施形態による、保護コンテキストを実施することができる保護システム２００のブロック図を示している。一実施形態では、保護システム２００は、部分的に、図１の構成可能バス・インフラストラクチャ１４０にて実装してもよい。保護システム２００の様々な要素は、図１のシステムバスアーキテクチャ２１０およびＣＰＵサブシステム１１０によってアクセス可能なレジスタ位置として実装することができる。
【００１７】
保護システム２００は、多数のバスマスタ２０１．０〜２０１．ｎを含むことができる。バスマスタ２０１．０〜２０１．ｎは、情報がメモリアレイ２２０のメモリ位置から読み取られ、そこに書き込まれる際に、並びに、周辺機器グループ２５０．０〜２５０．ｎの一部であり得る周辺機器に書き込まれる際に、システムバスアーキテクチャ２１０上のトラフィックを制御することができる。バスマスタ２０１．０〜２０１．ｎはそれぞれ、メモリ保護ユニット（ＭＰＵ）２０３．０〜２０３．ｎを有することができる。ＭＰＵ２０３．０〜２０３．ｎは、バスマスタ２０１．０および２０１．３に示されるようにバスマスタに統合されてもよく、または図示されていないが、独立したユニット（バスマスタ２０１．１および２０１．２）として、あるいはシステムバスアーキテクチャの一部として実施される別個の要素であってもよい。
【００１８】
ＭＰＵが、バスマスタ２０１．１および２０１．２の場合のようにバスマスタの一部として実施される場合、ＭＰＵはＣＰＵの一部として実施されてもよく、オペレーティングシステム（ＯＳ）またはカーネルの制御下にあってもよい。ＭＰＵが、ＭＰＵ２０３．１および２０３．２の場合のようにバスマスタとは別に実現される場合、ＭＰＵはバスアーキテクチャ（システムバス・インフラストラクチャ２１０等）の一部として実現されてもよい。こうした実施形態では、ＭＰＵは、バスマスタを「所有」または使用するＣＰＵのＯＳまたはカーネルの制御下にあり得る。例えば、ＭＰＵ２０３．１は、バスマスタ２０１．１を所有するＣＰＵのＯＳまたはカーネルの制御下にあり得る。システムバス・インフラストラクチャ２１０の一部として実施されるＭＰＵは、ＵＳＢコントローラ、即ちグラフィックコントローラ用のイーサネットコントローラ等のバスマスタに関連付けることができる。このリストは網羅的なものではなく、システムバス・インフラストラクチャ２１０と共に他のバスマスタを使用することができる。一実施形態では、ＭＰＵ２０３．１および２０３．２として示されるようなＭＰＵは、一貫したソフトウェアインタフェースを保証するためにＣＰＵの一部として実装されてもよい。そのような実施形態では、ＭＰＵは特定のメモリ領域と関連付けられてもよく、また特定のアクセス属性定義を割り当てられてもよい。特定のアクセス属性定義は、以下に説明されるように、様々なシステム構成要素およびメモリ位置にアクセスが提供される方法および理由を定義することができる。
【００１９】
ＭＰＵ２０３．０〜２０３．ｎは、単一のバスマスタ（２０１．１〜２０１．ｎの各々）に対するユーザアクセスと特権アクセスとを区別することができる。ＭＰＵはまた、セキュア／非セキュア属性のアクセス制御を実行することもできる。バスマスタ２０１．０〜２０１．ｎ等のバスマスタがタスクを変更した場合、またはスタンドアロンＭＰＵに関連付けられている非ＣＰＵマスタが所有権を変更した場合、ＭＰＵ設定はＯＳまたはカーネルソフトウェアによってアップデートすることができる。
【００２０】
一実施形態では、ダイレクトメモリアクセス（ＤＭＡ）コントローラは、ＭＰＵを用いて実装することができる。この実施形態では、ＤＭＡコントローラは、ＤＭＡコントローラが接続されているチャネルをプログラムしたバス転送のアクセス制御属性を継承することができる。
【００２１】
保護システム２００は、多数の共有メモリ保護ユニット（ＳＭＰＵ）２０５．０〜２０５．ｎも含むことができる。各ＳＭＰＵ２０５．１〜２０５．ｎは、バスマスタ（各２０１．１〜２０１．ｎ）に関連付けられ、実装される場合には、ＭＰＵとシステムバスアーキテクチャ２１０との間に配置することができる。ＳＭＰＵは全てのバスマスタ２０１．１〜２０１．ｎによって共有されてもよく、これは、単一バスマスタ専用のＭＰＵ２０３．１〜２０３．ｎとは対照的である。ＳＭＰＵ２０５．１〜２０５．ｎは、異なる保護コンテキスト、およびセキュアアクセスと非セキュアアクセスとを区別することができる。ＳＭＰＵ２０５．１〜２０５．ｎはまた、ユーザ／特権モード属性に基づいてアクセス制御を実行することもできる。
【００２２】
保護システム２００は、バスマスタ２０１．１〜２０１．ｎおよびメモリサブシステム２２０に結合されたシステムバスアーキテクチャ２１０を含むことができる。メモリサブシステム２２０は、少なくとも１つのメモリアレイ（３つのメモリアレイ２２３．０〜２２３．２として図示）と、少なくとも１つのメモリコントローラ（３つのメモリコントローラ２２１．０〜２２１．２として図示）とを含むことができる。メモリコントローラ２２１．０〜２２１．２は、バスマスタ２０１．１〜２０１．ｎによって命令されるように、バス転送およびシステムバスアーキテクチャ２１０上のコマンドに基づいて、メモリアレイ２２３．０〜２２３．２のメモリ位置への読み書き動作を制御することができる。メモリアレイ２２３．０〜２２３．２のメモリ位置へのアクセスは、ＭＰＵ２０３．１〜２０３．ｎおよびＳＭＰＵ２０５．１〜２０５．ｎによって制御することができる。
【００２３】
保護システム２００は、システムバスアーキテクチャ２１０に結合された周辺バスアーキテクチャ２３０も含むことができる。周辺バスアーキテクチャ２３０は、バスマスタ２０１．１〜２０１．ｎからのバス転送を受信するためにシステムバスアーキテクチャ２１０に結合された少なくとも１つのマスタ／スレーブ（ＭＳ）インタフェース２３１．１〜２３１．ｎを含むことができる。ＭＳインタフェース２３１．１〜２３１．ｎは、周辺機器保護ユニット（ＰＰＵ）２３３．１〜２３３．ｎを含むことができる。
【００２４】
周辺バス・インフラストラクチャ２３０は、ＭＳインタフェース２３１．１〜２３１．ｎと周辺機器グループ２５０．０〜２５０．ｎとの間のトラフィックを処理するためのアービタ２３５．０〜２３５．ｎを含むことができる。説明を容易にするために、周辺機器２５０．０のみについて以下に説明するが、周辺機器グループ２５０．１〜２５０．ｎも同様に構成可能である。周辺機器グループ２５０．０は、ＰＰＵ２５１．０、ＰＰＵ  ＭＭＩＯレジスタ２５２．０および２５３．０、ＳＭＰＵ  ＭＭＩＯレジスタ２５４．０、ＭＰＵ  ＭＭＩＯレジスタ２５５．０、並びに周辺機器ＭＭＩＯレジスタ２５６．０を含むことができる。様々なＭＭＩＯレジスタを使用して、図１のシステムバスアーキテクチャ２１０およびバスアーキテクチャ１４０を通じて実現されるセキュリティおよび保護を実施することができる。
【００２５】
保護システム２００により、各バスマスタがきっかり１つのマスタ／スレーブインタフェース（ＭＳ０〜ＭＳ３）を介して、周辺サブシステムにアクセスすることを可能にすることができる。４つのマスタ／スレーブインタフェースは、アクセスが異なるマスタインタフェースを介して行われ、かつ周辺サブシステムの異なる周辺機器グループに向けられる限り、周辺機器への最大４つまでの同時アクセスを可能にする。
【００２６】
各マスタ／スレーブインタフェースは、各周辺機器グループに対応する固定ＰＰＵ構造およびプログラマブルＰＰＵ構造を含むことができる。各周辺機器グループにおいて、周辺サブ領域（例えば２５２および２５３）に対する固定ＰＰＵ構造と、各周辺（例えば２５１）に対する固定ＰＰＵ構造とが存在してもよい。周辺機器グループのための固定ＰＰＵ構造は、特定の保護コンテキストに対する周辺機器グループ全体へのアクセスを拒否または制限することができる。こうした実施形態では、周辺機器グループ内の特定のサブアドレス範囲に対する例外は許可されない。周辺機器グループのための固定ＰＰＵ構造は最も高い優先順位を与えられてもよく、それらを（ＰＰＵ２３３の一部として）マスタ／スレーブインタフェースに配置してもよい。この実施形態では、アクセスが拒否されると、そのアクセスはターゲットとなる周辺機器グループに到達せず、また、周辺機器グループは、別のマスタインタフェースによって同時にアクセスされてもよい。
【００２７】
周辺サブ領域および周辺機器全体に対する固定ＰＰＵ構造は、周辺機器グループよりも小さいアドレス範囲を含むことができる。その結果、それらを周辺機器グループ自体の中に配置することができる。周辺サブ領域の固定ＰＰＵ構造は、周辺機器全体の保護属性から例外を作成する故、それらは周辺機器全体に対して定義されている固定ＰＰＵ構造よりも優先度が高い場合がある。
【００２８】
プログラマブルＰＰＵ構造は、全ての周辺機器グループの組み合わせられたアドレス範囲をカバーすることができる。従って、プログラマブルＰＰＵ構造は、マスタ／スレーブインタフェースに配置されてもよい。他の実施形態では、プログラマブルＰＰＵ構造は、周辺機器グループ内に配置されてもよい。第１の実施形態では、各周辺機器グループ内に重複するプログラマブルＰＰＵ構造が存在し得る。第２の実施形態では、プログラマブルＰＰＵ構造を、周辺グループ間に分散させることができる。
【００２９】
図３は、プログラマブルＰＰＵ構造が周辺機器グループ内の固定ＰＰＵ構造の後に評価されることを保証するための方法３００を示す。プログラマブルＰＰＵ構造は、ステップ３１０にて評価される。判定ステップ３１５にて違反が検出された場合、情報に違反フラグを立てることができる。固定ＰＰＵ構造は、ステップ３２０において評価することができる。一実施形態では、ステップ３２０は、ステップ３１０と同時に、またはステップ３１０とは別個に実施してもよい。判定ステップ３２５において違反が検出されなかった場合には、ステップ３３０からのフラグ付きの情報をステップ３４０にて評価することができる。判定ステップ３４５において違反が検出されなかった場合、ステップ３５０にてアクセスが許可される。判定ステップ３１５で違反が検出されなかった場合にも、ステップ３５０でアクセスが許可される。判定ステップ３２５または判定ステップ３４５のいずれかにおいて違反が検出された場合、ステップ３６０においてアクセスが拒否される。
【００３０】
図２の保護システム２００は、ＭＰＵ、ＳＭＰＵ、およびＰＰＵを用いたコンテキストベースの保護スキームを提供することができ、このスキームにより、各構造について、統一メモリアーキテクチャにおけるアドレス範囲および所与のアドレス範囲へのアクセスを許可する方法を管理するアクセス属性を特定することで、複数の保護構造をサポートすることができる。保護システムによって検出または禁止される違反は、バス転送のアドレス領域およびアクセス属性と、保護構造のアドレス範囲およびアクセス属性との間の不一致によって生じ得る。違反が検出されると、その違反を図１の障害ＭＭＩＯ１８０のような障害報告構造内に捕捉してもよく、これにより将来的な分析を可能にしてもよい。これは、エラーの原因を理解するのに役立ち得る。動作における障害は、プログラミングまたはシステム定義のバグが原因である可能性がある。障害は、アクセスまたは制御を不正に試みたことが原因であり得る。障害報告構造は割り込みを生成して、障害の発生を示すことができる。一実施形態では、この割り込みを使用することで、障害が発生しており、分析が必要であることをシステム外部の処理装置に示すことができる。これは、バスマスタ自身によりバスエラーを解決できないが、代わりに他のバスマスタがバスエラーを解決する必要がある場合に特に役立ち得る。
【００３１】
バスエラーをもたらす保護システムの違反は、バス転送がそのターゲットに到達するのを防ぐ。例えば、周辺機器をターゲットとしたＭＰＵまたはＳＭＰＵ違反は、周辺機器のＰＰＵに到達しない。
【００３２】
＜保護コンテキスト＞
各バスマスタは、ＭＰＵ保護コンテキストフィールド、即ちＰＣ［］を有することができる。保護コンテキストは、バスマスタによって開始された全てのバス転送に対する保護コンテキスト属性として使用することができる。ＳＭＰＵおよびＰＰＵは、バス転送に割り当てられた保護コンテキストに基づいて、バスマスタによって開始されるメモリ位置および周辺機器位置へのバス転送を許可または禁止（制限）することができる。
【００３３】
一実施形態では、複数のバスマスタが保護コンテキストを共有することができる。例えば、ＣＰＵおよび該ＣＰＵの制御下にあるＵＳＢコントローラは、同じ保護コンテキストを共有することができる。この例では、ＣＰＵおよびＵＳＢコントローラは、同じＳＭＰＵおよびＰＰＵアクセス制限を有することができ、各々（ＣＰＵおよびＵＳＢコントローラ）からのバス転送は、同じ条件下で、かつ同じメモリ位置または周辺機器位置に対して許可または禁止される。
【００３４】
バスマスタの保護コンテキストは、ＰＣ［］フィールド（ＰＣ［］）を再プログラミングすることによって変更することができる。しかしながら、保護コンテキストはバス転送を許可または禁止するように機能する故、ＰＣ［］フィールドへの変更を制御しなければならない。即ち、ＰＣ［］フィールドへの変更は、システムのセキュリティを維持する必要がある。ＰＣ［］フィールドへのアップデートに対して同レベルのセキュリティを維持できない場合、意図しない、または保護コンテキストを回避し得るシステムのセキュリティへの変更が許可され得る。更に、バス・レイテンシおよびパフォーマンスに悪影響を与えることなく、保護コンテキストを頻繁に変更することができるように、保護コンテキストを変更しても、最小限のＣＰＵオーバーヘッドしか発生しないようにすべきである。保護コンテキストに対する頻繁かつ安全な変更を達成するために、各バスマスタは、バスマスタＰＣ［］フィールドにプログラムされ得る利用可能な保護コンテキストを識別するＳＭＰＵ保護コンテキストマスクフィールドを有することができる。以下のフィールドは、バスマスタ保護コンテキスト制御に必要なセキュリティを提供することができる。
・ＭＰＵ保護コンテキスト−バスマスタの制御下にあり、バスマスタのＭＰＵ  ＭＭＩＯレジスタと同じアクセス制限を有する。
・保護コンテキストマスク−セキュアＣＰＵの制御下にあり、ＳＭＰＵ  ＭＭＩＯレジスタと同じアクセス制限を有する。
【００３５】
ＳＭＰＵおよびＰＰＵは、バス転送に割り当てられている保護コンテキスト属性に基づいてバス転送を許可および制限する。従って、保護コンテキストは、バスマスタとＳＭＰＵおよびＰＰＵ保護との間の保護ステップを提供する。この実施形態は、ＰＣ［］フィールドを再プログラミングすることによって、単一のバスマスタが複数の保護役割により識別することを可能にする。ＳＭＰＵおよびＰＰＵを再プログラムする必要がない故、保護コンテキストへの変更によるＣＰＵのオーバーヘッドは限定的である。
【００３６】
＜専用の機能＞
専用の機能を有する１つの保護コンテキストを有することが望ましい場合がある。一実施形態では、専用機能を保護コンテキスト０に割り当てることができる。保護コンテキスト０は、全てのシステム構成要素に完全にアクセスすることができる。「信頼のルート（root of trust）」を確立することが重要である。セキュアＣＰＵが製造者コードおよび顧客コードの両方を実行することができるように、バスマスタ０を「セキュアＣＰＵ」として機能するように、使用または許可することができる。ＣＰＵの製造者コードは、ＲＯＭ１６４およびフラッシュ１６２等の読み取り専用メモリ（ＲＯＭ）またはフラッシュに記憶されてもよい。製造者ＲＯＭは信頼できる（信頼のルート）と見なされ、製造者のフラッシュを認証するために使用されてもよい。様々な実施形態において、製造者コードは、フラッシュプログラミング、ｅＦＵＳＥプログラミング、または他の製造者独自の機能を提供するために使用されてもよい。
【００３７】
セキュアＣＰＵによって実行するための顧客コードは、フラッシュにプログラムされてもよい。製造者はこのコードを制御できない場合がある。従って、顧客コードは信頼できるとは限らない。顧客コードの実行によって、製造者コードの信頼できる品質が損なわれるべきではない。
【００３８】
信頼できる製造者コードおよび信頼できない顧客コードは同じＣＰＵによって実行される可能性がある故、マスタ固有の保護コンテキスト以上のものに基づく保護スキームを提供することが必要となり得る。保護コンテキスト０に与えられた特別な意味は、ハードウェアサポートおよびセキュアＣＰＵ保護コンテキストの制御を提供することができる。保護コンテキスト０は、全てのメモリおよび周辺機器位置への無制限の（保護されていない）アクセスを提供することができる。保護コンテキスト０は、２つの条件下で、変更（または入力）することができ、従って、保護コンテキスト０の使用を制限することができる。
【００３９】
第１の条件では、セキュアＣＰＵは、リセット例外ハンドラの実行によってリセットすることができる。この条件では、特定のＲＯＭアドレスからベクトルアドレスを取得することができる。ＲＯＭアドレスは製造者によって提供され、かつベクトルアドレスはＲＯＭから提供される故、ベクトルアドレスは信頼できるものである。従って、ハンドラのエントリポイントは信頼することができる。セキュアＣＰＵのリセット後、全ての割り込みを無効にし、ＣＰＵの実行を決定的にすることができる（即ち、リセット例外ハンドラによって完全に決定される）。
【００４０】
第２の条件では、セキュアＣＰＵ例外ハンドラまたは割り込みハンドラを受け取ることができる。この条件では、ハンドラベクトルアドレスは、設定可能なベースアドレスを有するベクトルテーブルによって提供することができる。セキュアＣＰＵがリセットされると、ベースアドレスがデフォルト値に設定され、ハンドラベクトルアドレスが書き込まれる。ハンドラベクトルアドレスはＲＯＭアドレスである故に、信頼することができる。しかしながら、ＣＰＵはベクトルテーブルのベースアドレスからＳＲＡＭアドレスに移動することができ、ハンドラベクトルアドレスは任意の値にプログラムすることができる。プログラムされた値は、結果的に顧客が提供したハンドラコードとなり得る。この場合、ハンドラのエントリポイントは信頼できない可能性がある。しかしながら、保護コンテキストは、セキュアＣＰＵベクトルハンドラアドレスが特定のベクトルアドレスと同じ場合にのみ、０に変更することができる。顧客コードによりベクトルテーブルを移動することは可能であるが、保護コンテキスト０への変更はベクトルアドレスが修正されていないことを必要とする。セキュアＣＰＵベクトルアドレスがハンドラと同じではないことをシステムが検出した場合、保護コンテキストは０に変更されない。既に保護コンテキストが０の場合、０に変更される前の値に戻すことができる。
【００４１】
保護コンテキスト０は信頼できる製造者コードを識別し、（ＳＭＰＵおよびＰＰＵによる）無制限のアクセスを提供する故に、保護コンテキスト０に対するセキュリティは不可欠である。
【００４２】
＜保護構造＞
本発明の保護システムは、（本明細書ではシステムバスアーキテクチャとも呼ばれる）バス・インフラストラクチャ上のバス転送を許可または制限することを意図している。保護システムのバス転送は、以下を含む多数の属性を指定する。
・バス転送によってアクセスされるアドレス範囲
・読み取り／書き込み属性
・実行属性
・ユーザ／特権属性
・セキュア／非セキュア属性
・保護コンテキスト属性
【００４３】
バス転送アドレス範囲は、バス転送が意図されるメモリ位置または周辺ＭＭＩＯレジスタのいずれかを指定する。構造的には、メモリ保護と周辺機器保護との間にはほとんど違いがない。しかしながら、システム内のセキュリティ対策の実施は、メモリ保護と周辺機器保護との分離から利益を得る。一部の実施形態では、この分離は、ＣＰＵサブシステムにメモリ保護を提供し、周辺機器サブシステムに周辺機器保護を提供することによって達成される。
【００４４】
読み取り／書き込み属性は、特定のマスタによって読み書きされるメモリまたは周辺機器の能力を保護することができる。実行属性は、コードへの、または特定のメモリもしくは周辺機器のデータへのアクセスを設定するために使用することができる。即ち、一実施形態では、バス転送は特定のコマンドまたは周辺機器のコードにアクセスしようとする場合がある。一方、バス転送は、一度実行されるとコードまたはコマンドの出力にアクセスしようとする場合がある。ユーザ／特権属性は、ＯＳまたはカーネルアクセスとタスクまたはスレッドアクセスとを区別するために使用することができる。セキュア／非セキュア属性は、セキュアアクセスと非セキュアアクセスとを区別するために使用することができる。最後に、保護コンテキスト属性を使用して、特定の周辺機器、周辺機器グループ、またはマスタをサイロ化することができる。
【００４５】
図１に関連して説明したように、メモリ保護ユニット（ＭＰＵ）、共有メモリ保護ユニット（ＳＭＰＵ）、および周辺機器保護ユニット（ＰＰＵ）を含む複数のレベルの保護構造があり得る。ＭＰＵは、単一のマスタと関連付けられてもよく、単一の関連付けられたマスタからのユーザアクセスと特権アクセスとを区別することができる。ＭＰＵはまた、セキュア／非セキュア属性に対してアクセス制御を実行してもよい。図１のバスマスタ１０１．０および１０１．３のように、一部のマスタは内蔵ＭＰＵを有することができる。他のバスマスタについては、図１のＭＰＵ１０３．１、１０３．２、および１０３．ｎのようなバス・インフラストラクチャの一部としてＭＰＵを実装することができる。
【００４６】
ＳＭＰＵは、全てのバスマスタによって共有されてもよい。一実施形態では、ＳＭＰＵは、バスマスタのサブセットによって共有されてもよいが、システムのバスマスタのうちの全てによって共有されなくてもよい。ＳＭＰＵは、異なる保護コンテキスト間、およびセキュアアクセスと非セキュアアクセスとを区別することができる。ＳＭＰＵはまた、ユーザ／特権モード属性に対してアクセス制御を実行してもよい。ＳＭＰＵは共有されている故、ＳＭＰＵは特定のバスマスタまたは単一のバスマスタの一部として実装されない。代わりに、ＳＭＰＵが必要なだけの数のバスマスタによってアクセスすることができるように、ＳＭＰＵはシステムバスアーキテクチャの一部として実装され得る。
【００４７】
ＰＰＵは、周辺機器グループの一部と同様にマスタ／スレーブインタフェースの一部としても実装されてもよい。各バスマスタは、図２のＭＳインタフェース２３３等のＰＰＵを含む１つのマスタ／スレーブインタフェースを介して周辺サブシステムにアクセスすることができる。周辺機器グループは、図２の周辺機器グループ２５１等の、周辺機器グループ専用のＰＰＵを介して複数のマスタインタフェースを通じて複数のマスタによってアクセスすることができる。周辺機器グループは、共有ＡＨＢ−Ｌｉｔｅバス・インフラストラクチャを有する複数の周辺機器から構成することができる。ＰＰＵは、異なる保護コンテキスト間、セキュアアクセスと非セキュアアクセス、およびユーザモードアクセスと特権モードアクセスとを区別することができる。
【００４８】
保護システムの各保護構造は、アドレス領域および少なくとも１つのアクセス制御属性によって定義されてもよい。保護構造は、メモリスペースの所与の位置に整列させることができる。保護構造アドレスおよび属性に割り当てられる２つのレジスタは、それぞれ、保護構造の保護を可能にし得る。
【００４９】
続くリソース、即ち、周辺機器グループ内の周辺機器と、個々のＩＰＣ構造、データワイヤまたはダイレクトメモリアクセス（ＤＭＡ）コントローラチャネル構造、ＳＭＰＵ保護領域構造、およびＰＰＵ保護領域構造等の周辺機器内のＭＭＩＯレジスタとは、説明した保護スキームにより達成される保護を必要とする可能性がある。上記のリソースは、固定アドレス範囲、または設計時に分かっているアドレス範囲をカバーすることができる。
【００５０】
ＭＰＵ、およびＳＭＰＵ、またはＰＰＵ等の保護ユニットは、複数の保護構造を含むことができ、それらの複数の保護構造を降順で評価することができる。より高いインデックス構造はより低いインデックス構造よりも優先され得る。適切なセキュリティのために、非セキュア保護コンテキストにおいては、セキュアアクセスを提供する保護構造よりも高いインデックスを有する保護構造を追加することは不可能であるべきである。そのような場合、非セキュアアクセスを可能にするように、より高いインデックスを有する保護構造をプログラムすることが可能であり得る。セキュアシステムでは、より高いプログラム可能な保護構造は、制限されたアクセスのみを許可するように保護されている。
【００５１】
ＭＰＵＳおよびＳＭＰＵと比較して、ＰＰＵは比較的多数の保護領域を有することができる。ＰＰＵによって提供される保護を必要とし得るリソースには、周辺機器グループ内の周辺機器全て、または周辺機器内の一連のＭＭＩＯレジスタが含まれ得る。周辺機器内のＭＭＩＯレジスタは、個々のＩＰＣ構造、ＤＭＡコントローラチャネル構造、ＳＭＰＵ保護領域構造、およびＰＰＵ保護領域構造を含むことができる。
【００５２】
ＰＰＵ保護構造は、既知のアドレス範囲を有するリソースを含むことができ、そのために保護の設計時構成はアドレス範囲を要求する。デバイスの使用状況によって識別されるリソース等の、不明なアドレス範囲を有するリソースについては、保護領域のアドレス範囲を完全にプログラム可能にすることができる。
【００５３】
＜アクセス制御属性＞
上述したように、アクセス属性は、領域へのアクセス制御を指定することができる。領域、またはアドレス領域は、ベースアドレス、領域のサイズ、および有効または無効にすることができる領域内のサブ領域によって定義することができる。一実施形態では、８つのサブ領域が存在し得る。しかしながら、より多くのまたはより少ないサブ領域が存在してもよい。
【００５４】
領域へのアクセス制御は、その領域内の全てのサブ領域に適用されてもよい。アクセス制御は、転送のアクセス属性を評価することによって実行される。様々な実施形態において、以下のアクセス制御フィールドが実装されてもよい。
・ユーザモードでの読み取りアクセスの制御
・ユーザモードでの書き込みアクセスの制御
・ユーザモードでの実行アクセスの制御
・特権モードでの読み取りアクセスの制御
・特権モードでの書き込みアクセスの制御
・特権モードでの実行アクセスの制御
・セキュアアクセスの制御
・ＳＭＰＵおよびＰＰＵにのみ存在し得る、個々の保護コンテキストに対する制御
・ＳＭＰＵおよびＰＰＵにのみ存在し得る「マッチング」および「アクセス評価プロセス」の制御
【００５５】
一例として、上記のアクセス制御フィールドを使用することによって、保護コンテキスト２は、以下の設定を有する特権モードでの読み取りおよび書き込み動作の、非セキュアアクセスに対して定義することができる。
【００５６】
【表１】
2019525319.tif 000003
【００５７】
３つの別個のアクセス評価サブプロセスを区別することができる。第１のサブプロセスは、読み取り／書き込み、実行、およびユーザアクセス属性／特権アクセス属性に基づいてアクセスを評価することができる。第２のサブプロセスは、セキュア／非セキュア属性に基づいてアクセスを評価することができる。第３のサブプロセスは、（ＳＭＰＵおよびＰＰＵによって使用される）保護コンテキスト属性に基づいてアクセスを評価することができる。
【００５８】
全てのアクセス評価が成功した場合、アクセスが許可される。アクセス評価のいずれかが失敗した場合、アクセスは禁止される。アクセス拒否は、図１の障害ＭＭＩＯレジスタ１８０等の障害ＭＭＩＯレジスタに記憶されてもよい。
【００５９】
＜マッチング＞
バス転送アドレスのマッチングおよびバス転送のアクセス評価は、２つの独立した処理にて実現されてもよい。マッチングのために、第１のプロセスにより、各保護構造に対するアドレス範囲内に含まれる転送アドレスを識別することができる。次いで、第１のプロセスにより、所与の保護コンテキストに対応する適切なビットが「１」であるか否かを判定することができる。これによりマッチング領域を識別する。アクセス評価のために、第２のプロセスにより、アクセス制御属性に対するバス転送属性を評価することができる。
【００６０】
保護ユニットには複数の保護構造が存在し得る。一実施形態では、保護ユニットは、保護構造を降順で評価することができる。より高いインデックス構造は、より低いインデックス構造よりも優先される場合がある。より高いインデックス構造は、より低いインデックス構造よりも多くの制御またはアクセスを有することができる故、許可されるべき場合に、より低いインデックス構造がアクセスを許可しないように、より高いインデックス構造へのアクセスが最初に評価される。このパラダイムに従わないと、非セキュア保護コンテキストが、セキュアアクセスを提供する保護構造よりも高いインデックスを有する保護構造に追加され得る。換言すると、より高いインデックスを有する保護構造が、非セキュアアクセスを可能にするように不適切にプログラムされ得る。
【００６１】
＜保護構造の保護＞
保護構造は、起動時に一度設定されてもよく、またはデバイス実行中に動的に変更されてもよい。一実施形態では、ＣＰＵ  ＲＴＯＳは、ＣＰＵのＭＰＵ  ＭＭＩＯ設定を変更することができる。前述したように、セキュアＣＰＵは、ＳＭＰＵおよびＰＰＵ  ＭＭＩＯ設定を変更することができる。ＭＰＵ、ＳＭＰＵ、およびＰＰＵ  ＭＭＩＯレジスタは、他の周辺ＭＭＩＯレジスタと同様のＭＭＩＯレジスタである故、それらを同様に変更することができる。更に、保護構造のアドレス範囲には、保護構造自体を含むことができる。このトートロジーを使用して、保護構造自体を保護するために保護スキームを使用することが可能である場合があり、従って、保護スキームは回避するのがより困難となる。
【００６２】
図４は、一実施形態による、周辺機器（Ａ）４１０を保護するために使用されるスキーム４００を示す。周辺機器Ａは、２つの保護コンテキスト、ＰＣ［１］４０１およびＰＣ［２］４０２によって共有することができる。周辺機器Ａ４１０は、アドレス領域４１５を有することができる。アドレス０ｘ４０００：００００（最大ｏｘ４０００：００１ｆ）における４２バイトＰＰＵ保護構造４２２は、周辺機器Ａ４１０を保護するために使用することができる。保護構造４２２は、ＰＣ［１］４０１およびＰＣ［２］４０２に関連するいくつかの保護構造のうちの１つであり得る。保護構造は、ＰＰＵ保護構造４２０．１および４２０．２のそれぞれにおけるＰＣ［１］４０１およびＰＣ［２］４０２について併せてグループ化することができる。周辺機器Ａ４１０の所有権は、ＰＣ［２］４０２に整列するように保護構造の保護制御属性を再プログラミングするＰＣ［１］４０１によって、ＰＣ［１］４０１からＰＣ［２］に渡すことができる。これは、ＰＣ［２］４０２が周辺機器Ａ４１０にアクセスすることができるように、ＰＰＵ保護構造４２２を再プログラミングするＰＣ［１］４０１として図４に示されている。同様に、ＰＣ［２］４０２が周辺機器Ａ４１０を「所有する」場合、ＰＣ［２］４０２は周辺機器Ａ４１０をＰＣ［１］４０１に割り当てることができる。
【００６３】
図５は、保護コンテキスト制御属性を再プログラミングすることによって、周辺機器Ｂ５１０を所有していない保護コンテキストが自身に所有権を割り当てるのを防ぐことができる周辺機器（Ｂ）５１０を保護するためのスキーム５００を示す。アドレス０ｘ４０００：００００（最大ｏｘ４０００：００１ｆ）および０ｘ４０００：００２０（最大０ｘ４０００：００３ｆ）における２つの３２バイトＰＰＵ保護構造５１５および５１７を使用することができる。保護構造５１７は、それ自体と同様に保護構造５１５を保護するために使用されてもよい。保護構造５１５は、スレーブ保護構造とすることができ、保護構造５１７は、マスタ保護構造とすることができる。マスタおよびスレーブ保護構造は、保護ペア５１３とすることができる。
【００６４】
ＰＰＵ保護構造５２０は、周辺機器Ｂ５１０の保護構造５１５および５１７に対応し得る。スレーブ保護構造５２２は、保護構造５１５に整列させてもよい。マスタ保護構造５２４は、保護構造５１７に整列させてもよい。最初に、ＰＰＵ保護構造５２０．０は、ＰＣ［１］５０１に割り当てられた周辺機器Ｂの所有権を有するスレーブ保護構造５２２と、ＰＣ［１］に割り当てられたマスタ保護構造５２４と、を有することができる。第１のステップにおいては、ＰＰＵ保護構造５２０．１が、ＰＣ［２］５０２に割り当てられた周辺機器Ｂの所有権を有するスレーブ保護構造５２２と、ＰＣ［１］５０１に割り当てられたマスタ保護構造５２４とを有することができるように、ＰＣ［１］５０１は、周辺機器Ｂ５１０の所有権をＰＣ［２］５０２に変更することができる。第２のステップにおいては、ＰＰＵ保護構造５２０．２がＰＣ［２］５０２に割り当てられた周辺機器Ｂ５１０の所有権を有するスレーブ保護構造５２２と、ＰＣ［２］５０２に割り当てられたマスタ保護構造５２４とを有することができるように、ＰＣ［１］５０１は、周辺機器Ｂ５１０の所有権をＰＣ［２］５０２に変更することができる。
【００６５】
所有権のＰＣ［２］５０２からＰＣ［１］５０１への変更は、同様のパターンに従うことができる。第１のステップでは、ＰＰＵ保護構造５２０．３が、ＰＣ［１］５０１に割り当てられた周辺機器Ｂの所有権を有するスレーブ保護構造５２２と、ＰＣ［２］５０２に割り当てられたマスタ保護構造５２４とを有するように、ＰＣ［２］５０２は、周辺機器Ｂの所有権をＰＣ［１］５０１に変更することができる。第２のステップでは、ＰＰＵ保護構造５２０．１が、ＰＣ［１］５０１に割り当てられた周辺機器Ｂ５１０の所有権を有するスレーブ保護構造５２２と、ＰＣ［２］５０２に割り当てられたマスタ保護構造５２４とを有するように、ＰＣ［２］５０２は、周辺機器Ｂ５１０のマスタ／スレーブの所有権をＰＣ［１］５０１に変更することができる。
【００６６】
換言すると、第１のステップは周辺機器の所有権を他の保護コンテキストに変更し、第２のステップはマスタ／スレーブの所有権を他の保護コンテキストに変更する能力を変更する。このスキームは、保護コンテキスト制御属性を再プログラムすることによって、周辺機器を所有していない保護コンテキストが自身に所有権を割り当てるのを防ぐことができる。
【００６７】
図５に示されるスキームでは、保護構造が隣接していることが好ましい。例えば、ＰＰＵおよびＳＭＰＵ保護構造は、対になって整列されてもよい。第１の保護構造は、リソース（即ち、周辺機器）を保護し、第２の保護構造はその保護を保護する。図５に示すスキームの他の様々な実施形態では、周辺機器の所有権を３つ以上の保護コンテキストによって共有することができる一方、周辺機器の所有権を変更する能力を単一の保護コンテキストに限定することができる。
【００６８】
以上の記載において、多数の詳細が説明されている。しかしながら、本開示の恩恵を受ける当業者に明らかなように、本発明の実施形態はこれらの特定の詳細なしでも実施することができる。場合により、周知の構造および装置は、説明が分かりにくくなるのを避けるために、詳細に示す代わりにブロック図の形で示されている。
【００６９】
詳細な説明のいくつかの部分はコンピュータメモリ内のデータビットに対する演算のアルゴリズムおよびシンボル表現で表されている。これらのアルゴリズム記述および表現は、データ処理分野の当業者が他の当業者に自分の作業の本質を最も有効に伝えるための手段である。アルゴリズムは、本明細書においても、一般的に、所望の結果をもたらす首尾一貫したステップシーケンスとして認識される。これらのステップは物理量の物理的操作を必要とする。通常、必ずしもその限りではないが、これらの量は蓄積、転送、組み合わせ、比較等の操作が可能な電気信号または磁気信号の形態をとる。主として、公共使用のために、時にはこれらの信号はビット、値、エレメント、シンボル、キャラクター、ターム、ナンバー等と呼んだ方が便利である。
【００７０】
しかしながら、これらの用語およびその類似用語はあらゆる適切な物理量に関連するものであり、単にこれらの量に適用される便利な命名に過ぎないことを念頭に置かれたい。以上の考察から明らかなように、特に断わりのない限り、本明細書において、「暗号化する」、「復号化する」、「蓄積する」、「提供する」、「生じる」、「得る」、「受信する」、「認証する」、「削除する」、「実行する」、「要求する」、「通信する」、「開始する」等の用語を用いる考察はコンピュータシステムまたは類似の電子コンピュータ装置のアクションおよび処理に関連し、これらのアクションおよび処理はコンピュータシステムのレジスタおよびメモリ内の物理（例えば電子）量として表されるデータを操作し、コンピュータシステムメモリまたはレジスタまたは他のこのような情報蓄積、転送または表示装置内の同様に物理量として表される他のデータに変換する。
【００７１】
本明細書において、用語「例」または「模範的」は実施例、事例または実例として役立つことを意味するために使用されている。本明細書に記載された態様または設計は必ずしも他の態様または設計より好ましいまたは優れていると解釈されるべきではない。むしろ、用語「例」または「模範的」の使用はコンセプトを具体的に提示することを意図している。本明細書で使用されているように、「または」は包括的な「または」を意味し、排他的な「または」を意味することは意図していない。即ち、特に断りがない限り、または文脈から明らかでない限り、「ＸはＡまたはＢを含む」は自然な包括的順列のどれかを意味するように意図されている。即ち、ＸはＡを含む、ＸはＢを含む、またはＸはＡとＢの両方を含む場合、「ＸはＡまたはＢを含む」は上記の事例の何れかで満足される。更に、本明細書および請求の範囲で使用される冠詞「ａ」および「ａｎ」は、特に断りがない限り、または文脈から単数形を指示していることが明らかでない限り、一般的に「一つまたは複数」と解釈されたい。更に、本明細書中の「ある実施形態」または「一実施形態」または「ある実施例」または「一実施例」の使用は特にその旨の断りがない限り同じ実施形態または実装形態を意味することを意図していない。
【００７２】
上述したプロトコルに関連して参照された特定のコマンドまたはメッセージは、単なる例示を目的としている。当業者は、異なる特定の文言であるが同様の機能のコマンドを使用することができ、それについても上記の説明の範囲内であることを理解するであろう。
【００７３】
本明細書に記載される実施形態は本発明明細書に記載される操作を実行する装置にも関する。この装置は所要の目的のために特別に構成することができ、またコンピュータに格納されたコンピュータプログラムにより選択的に活性化される、または再設定される汎用コンピュータを備えるものとすることができる。このようなコンピュータプログラムは、非トランジトリなコンピュータ可読記憶媒体、例えば、限定されないが、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭおよび磁気−光ディスク等の任意のタイプのディスク、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気または光カード、フラッシュメモリ、または任意のタイプの電子命令記憶媒体に格納することができる。用語「コンピュータ可読記憶媒体」は、一つまたは複数の命令セットを格納する単一媒体または複数の媒体（例えば、集中型または分散型データベースおよび／または関連キャッシュおよびサーバ）を含むものと解釈されたい。用語「コンピュータ可読記憶媒体」はまた、本実施形態の方法の任意の一つ以上をマシンに実行させる命令セットを格納、符号化、または担持し得る任意の媒体を含むものと解釈されたい。従って、用語「コンピュータ可読記憶媒体」は、限定されないが、固体メモリ、光学媒体、磁気媒体、または本実施形態の方法の任意の一つ以上をマシンに実行させる命令セットを格納し得る任意の媒体を含むものと解釈されたい。
【００７４】
本明細書に記載のアルゴリズムおよびディスプレイは本質的に任意の特定のコンピュータや他の装置に関するものではない。種々の汎用システムが本明細書に記載の技術によるプログラムとともに使用可能であり、また所要の方法ステップを実行するためにより特化した装置を構成するのが便利であり得る。このような種々のシステムに必要な構造は以下の記載から明らかになる。更に、本実施形態は任意の特定のプログラミング言語に関連して記載されていない。本明細書に記載の本発明の教示事項を実現するために種々のプログラミング言語が使用可能であることは認識されよう。
【００７５】
以上の記載は、本発明のいくつかの実施形態のより良い理解を与えるために多くの特定の詳細、例えば特定のシステム、コンポーネント、方法等を記述している。しかしながら、本発明の少なくとも一部の実施形態はこれらの特定の詳細がなくても実施し得ることは当業者に明らかであろう。他の例では、周知のコンポーネントまたは方法は、本発明が不必要にあいまいにならないように、詳細に示さないでブロック図で示している。従って、以上に記載の特定の詳細は単なる例示である。特定の実施例はこれらの模範的な詳細から変更することができるが、依然として本発明の範囲に含まれると考えられる。
【００７６】
以上の記載は、説明のためであって限定を意図するものではないことを理解されたい。以上の記載を読み理解すると、多くの他の実施形態が考えられることは当業者に明らかであろう。従って、本発明の範囲は添付の請求項をこれら請求項の等価物の全範囲と一緒に参酌して決定されるべきである。
【図１】
2019525319.tif 000004
【図２】
2019525319.tif 000005
【図３】
2019525319.tif 000006
【図４】
2019525319.tif 000007
【図５】
2019525319.tif 000008
【国際調査報告】
2019525319.tif 000009