(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-08
(54)【発明の名称】周辺機器のアクセス設定を示すビットマスクを用いた周辺機器アクセス制御
(51)【国際特許分類】
G06F 21/85 20130101AFI20241001BHJP
【FI】
G06F21/85
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024505099
(86)(22)【出願日】2023-01-04
(85)【翻訳文提出日】2024-03-22
(86)【国際出願番号】 US2023010116
(87)【国際公開番号】W WO2023133141
(87)【国際公開日】2023-07-13
(31)【優先権主張番号】202211000733
(32)【優先日】2022-01-06
(33)【優先権主張国・地域又は機関】IN
(32)【優先日】2022-11-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】397050741
【氏名又は名称】マイクロチップ テクノロジー インコーポレイテッド
【氏名又は名称原語表記】MICROCHIP TECHNOLOGY INCORPORATED
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】クマール、ラヴィンドラ
(72)【発明者】
【氏名】ナッカ、シュリニヴァサラオ
(72)【発明者】
【氏名】ヴェータマニカム、ジェイアヴァサンス
(57)【要約】
電子デバイスは、トランザクションホストと、第1及び第2の周辺機器と、メモリと、アクセス制御レジスタと、第1及び第2のアクセスコントローラと、を含む。メモリは、アクセス制御識別子管理命令と、第1の周辺機器に関連する第1のタスクと、第1のタスクを実行するための第1及び第2の周辺機器のそれぞれのアクセス設定を示す第1のビットマスクと、を記憶する。アクセス制御レジスタは、第1の周辺機器用の第1のアクセス制御識別子と、第2の周辺機器用の第2のアクセス制御識別子と、を含む。トランザクションホストは、アクセス制御識別子管理命令を実行して、第1のビットマスクに基づいて第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムし、その後、第1のタスクを実行する。第1及び第2のアクセスコントローラは、第1のビットマスクに基づいてプログラムされたそれぞれの第1のアクセス制御識別子及び第2のアクセス制御識別子に基づいて、それぞれ第1及び第2の周辺機器へのアクセスを制御する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
電子デバイスであって、
第1の周辺機器と、
第2の周辺機器と、
非一時的メモリであって、
アクセス制御識別子管理命令を含むスーパーバイザファームウェアと、
前記第1の周辺機器に関連する第1のタスクを含むコンピュータ可読コードと、
前記第1のタスクに対応する第1のビットマスクであって、前記第1のビットマスクは、前記第1のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示す、第1のビットマスクと、を記憶する、非一時的メモリと、
前記第1の周辺機器用の第1のアクセス制御識別子と、前記第2の周辺機器用の第2のアクセス制御識別子と、を含むアクセス制御レジスタと、
トランザクションホストであって、
前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、前記スーパーバイザファームウェア内の前記アクセス制御識別子管理命令を実行し、
前記第1のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記第1の周辺機器に関連する前記第1のタスクを実行するための、トランザクションホストと、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器へのアクセスを制御するための第1のアクセスコントローラと、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第2のアクセス制御識別子に少なくとも基づいて、前記第2の周辺機器へのアクセスを制御するための第2のアクセスコントローラと、
を備える、電子デバイス。
【請求項2】
前記電子デバイスは、システムオンチップ(SoC)デバイスである、請求項1に記載の電子デバイス。
【請求項3】
前記トランザクションホストは、プロセッサ又はダイレクトメモリアクセス(DMA)エンジンを含む、請求項1又は2に記載の電子デバイス。
【請求項4】
前記第1のビットマスク及び前記第2のビットマスクは、前記非一時的メモリ内のビットマスクデータ構造に記憶される、請求項1~3のいずれか一項に記載の電子デバイス。
【請求項5】
前記第1のビットマスクは、前記第1のタスクを実行するための前記第1の周辺機器用のアクセス設定を示す1つ以上の第1のビットマスクビットと、前記第1のタスクを実行するための前記第2の周辺機器用のアクセス設定を示す1つ以上の第2のビットマスクビットと、を含み、
前記第1のアクセス制御識別子は、1つ以上の第1のアクセス制御ビットを含み、前記第2のアクセス制御識別子は、1つ以上の第2の第1のアクセス制御ビットを含む、請求項1~4のいずれか一項に記載の電子デバイス。
【請求項6】
前記コンピュータ可読コードは、前記第2の周辺機器に関連する第2のタスクを含み、
前記非一時的メモリは、前記第2のタスクに対応する第2のビットマスクを記憶し、前記第2のビットマスクは、前記第2のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示し、
前記トランザクションホストは、
前記第2のタスクに対応する前記第2のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、前記スーパーバイザファームウェア内の前記アクセス制御識別子管理命令を実行し、
前記第2のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記第2の周辺機器に関連する前記第2のタスクを実行する、請求項1~5のいずれか一項に記載の電子デバイス。
【請求項7】
前記非一時的メモリは、
前記第1のタスク及び前記第2のタスクを含む前記コンピュータ可読コードを記憶する非特権部分と、
前記アクセス制御識別子管理命令を含む前記スーパーバイザファームウェアと、前記第1のタスクに対応する前記第1のビットマスクと、を記憶する特権部分と、を含む、請求項1~6のいずれか一項に記載の電子デバイス。
【請求項8】
前記第1のアクセスコントローラは、
前記第1のタスクを実行するために、前記第1の周辺機器にアクセスするためのアクセス要求を前記トランザクションホストから受信し、
前記第1のタスクに対応する前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に対するアクセス決定を実行し、
前記アクセス決定に基づいて、前記トランザクションホストが前記第1の周辺機器にアクセスするのを許可又は禁止する、請求項1~7のいずれか一項に記載の電子デバイス。
【請求項9】
前記第1のアクセスコントローラは、(a)前記第1のタスクに対応する前記第1のビットマスクに基づいて前記トランザクションホストによってプログラムされた前記第1のアクセス制御識別子と、(b)前記トランザクションホストの特権モード又は前記トランザクションホストのユーザモードのいずれかを示す動作モード信号と、に少なくとも基づいて、前記第1の周辺機器に対する前記アクセス決定を実行する、請求項8に記載の電子デバイス。
【請求項10】
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられていること、及び(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていないことを示す、請求項1~9のいずれか一項に記載の電子デバイス。
【請求項11】
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記アクセス制御識別子管理命令は、前記第1のタスクの実行前に前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムし、これは、(a)前記第1のタスクの実行中に、前記第1のアクセス制御識別子を、前記第1の周辺機器へのアクセスを可能にするアクセス許可値に更新すること、及び(b)前記第1のタスクの実行中に、前記第2のアクセス制御識別子を、前記第2の周辺機器へのアクセスを禁止するアクセス禁止値に更新することを含み、
前記第1のアクセスコントローラは、前記第1のアクセス制御識別子の前記アクセス許可値に基づいて、前記第1のタスクの実行中に、前記第1の周辺機器へのアクセスを許可し、
前記第2のアクセスコントローラは、前記第2のアクセス制御識別子の前記アクセス禁止値に基づいて、前記第1のタスクの実行中に前記第2の周辺機器へのアクセスを禁止する、請求項10に記載の電子デバイス。
【請求項12】
前記トランザクションホストは、特権モード及びユーザモードで選択的に動作し、
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記アクセス制御識別子管理命令は、前記第1のタスクの実行前に前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムし、これは、(a)前記第1のアクセス制御識別子を、前記トランザクションホストの前記特権モード及び前記ユーザモードの両方において、前記第1の周辺機器へのアクセスを可能にする、前記第1の周辺機器のオープンアクセス設定に更新することと、(b)前記第2のアクセス制御識別子を、前記トランザクションホストの前記特権モードにおいて、前記第2の周辺機器へのアクセスを可能にするが、前記ユーザモードにおいて、前記第2の周辺機器へのアクセスを許可しない、前記第2の周辺機器の制限付きアクセス値に更新することと、を含む、請求項1~11のいずれか一項に記載の電子デバイス。
【請求項13】
前記アクセス制御レジスタは、第3の周辺機器内に提供される、請求項1~12のいずれかに記載の電子デバイス。
【請求項14】
方法であって、
トランザクションホスト、第1の周辺機器、第2の周辺機器、並びに前記第1の周辺機器用の第1のアクセス制御識別子及び前記第2の周辺機器用の第2のアクセス制御識別子を含むアクセス制御レジスタ、を含む電子デバイスにおいて、(a)前記第1の周辺機器に関連する第1のタスクを含むコンピュータ可読コードと、(b)前記第1のタスクに対応する第1のビットマスクであって、前記第1のビットマスクは、前記第1のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示す、第1のビットマスクと、を記憶するステップと、
前記トランザクションホストが、前記第1のタスクを実行する前に、前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、アクセス制御識別子管理命令を実行するステップと、
前記第1のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記トランザクションホストが、前記第1の周辺機器に関連する前記第1のタスクを実行するステップと、
前記第1のタスクの実行中に、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に関連付けられた第1のアクセスコントローラが、前記第1の周辺機器へのアクセスを制御するステップと、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第2のアクセス制御識別子に少なくとも基づいて、前記第2の周辺機器に関連付けられた第2のアクセスコントローラが、前記第2の周辺機器へのアクセスを制御するステップと、
を含む、方法。
【請求項15】
前記第2の周辺機器に関連する第2のタスクを含むコンピュータ可読コードを記憶するステップと、
前記第2のタスクに対応する第2のビットマスクを記憶するステップであって、前記第2のビットマスクは、前記第2のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示す、ステップと、
前記トランザクションホストが、前記第2のタスクを実行する前に、前記第2のタスクに対応する前記第2のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、前記アクセス制御識別子管理命令を実行するステップと、
前記第2のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記トランザクションホストが、前記第2の周辺機器に関連する前記第2のタスクを実行するステップと、
前記第2のタスクの実行中に、
前記第2のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に関連付けられた前記第1のアクセスコントローラが、前記第1の周辺機器へのアクセスを制御するステップと、
前記第2のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第2のアクセス制御識別子に少なくとも基づいて、前記第2の周辺機器に関連付けられた前記第2のアクセスコントローラが、前記第2の周辺機器へのアクセスを制御するステップと、を含む、請求項14に記載の方法。
【請求項16】
前記第1のアクセスコントローラが、前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器へのアクセスを制御するステップは、
前記第1のアクセスコントローラが、前記第1のタスクを実行するために、前記第1の周辺機器にアクセスするためのアクセス要求を、前記トランザクションホストから受信するステップと、
前記第1のアクセスコントローラが、前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に対するアクセス決定を実行するステップと、
前記第1のアクセスコントローラが、前記アクセス決定に基づいて、前記トランザクションホストが前記第1の周辺機器にアクセスするのを許可又は禁止するステップと、を含む、請求項14又は15に記載の方法。
【請求項17】
前記第1のアクセスコントローラが、(a)前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子と、(b)前記トランザクションホストの特権モード又は前記トランザクションホストのユーザモードのいずれかを示す動作モード信号とに、少なくとも基づいて、前記第1の周辺機器に対する前記アクセス決定を実行するステップを含む、請求項16に記載の方法。
【請求項18】
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムする前記アクセス制御識別子管理命令を実行するステップは、(a)前記第1のタスクの実行中に、前記第1のアクセス制御識別子を、前記第1の周辺機器へのアクセスを可能にするアクセス許可値に更新するステップ、及び(b)前記第1のタスクの実行中に、前記第2のアクセス制御識別子を、前記第2の周辺機器へのアクセスを禁止するアクセス禁止値に更新するステップを含み、
前記第1のタスクの実行中に、
前記第1の周辺機器に関連付けられた前記第1のアクセスコントローラが、前記第1のアクセス制御識別子の前記アクセス許可値に基づいて、前記第1の周辺機器へのアクセスを許可し、
前記第2の周辺機器に関連付けられた前記第2のアクセスコントローラが、前記第2のアクセス制御識別子の前記アクセス禁止値に基づいて、前記第2の周辺機器へのアクセスを禁止する、請求項14から17のいずれか一項に記載の方法。
【請求項19】
前記トランザクションホストは、特権モード及びユーザモードで選択的に動作し、
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムする前記アクセス制御識別子管理命令実行するステップは、(a)前記第1のアクセス制御識別子を、前記トランザクションホストの前記特権モード及び前記ユーザモードの両方において、前記第1の周辺機器へのアクセスを可能にする、前記第1の周辺機器のオープンアクセス値に更新するステップと、(b)前記第2のアクセス制御識別子を、前記トランザクションホストの前記特権モードにおいて、前記第2の周辺機器へのアクセスを可能にするが、前記ユーザモードにおいて、前記第2の周辺機器へのアクセスを許可しない、前記第2の周辺機器の制限付きアクセス値に更新するステップと、を含み、
前記第1のタスクの実行中に、
前記第1の周辺機器に関連付けられた前記第1のアクセスコントローラが、前記第1のアクセス制御識別子の前記オープンアクセス値に基づいて、前記トランザクションホストの前記特権モード及び前記ユーザモードの両方において前記第1の周辺機器へのアクセスを許可し、
前記第2の周辺機器に関連付けられた前記第2のアクセスコントローラが、前記第2のアクセス制御識別子の前記制限付きアクセス値に基づいて、前記トランザクションホストの前記特権モードにおいて、前記第2の周辺機器へのアクセスを禁止するが、前記トランザクションホストの前記ユーザモードにおいて、前記第2の周辺機器へのアクセスを禁止しない、請求項14~18のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連特許出願)
本出願は、2022年1月6日に出願されたインド特許出願第202211000733号に対する優先権を主張し、その内容があらゆる目的のために参照により本明細書に組み込まれる。
【0002】
(技術分野)
本開示は、周辺機器を含む電子デバイスに関し、より詳細には、周辺機器のアクセス設定を示すビットマスクを使用する周辺機器アクセス制御に関する。
【背景技術】
【0003】
システムオンチップ又はSoCとしても知られるシステムオンチップは、単一チップ上に電子システム又はコンピュータシステムを統合する集積回路(IC)である。SoCは、典型的には、少なくとも1つのプロセッサ、例えば、中央処理装置(CPU)、マイクロコントローラ、又はマイクロプロセッサ(MPU)と、様々な周辺機器デバイス、例えば、入力/出力ポート、内部メモリ、並びにアナログ入力及び出力ブロック、例えば、無線モデム、グラフィックス処理ユニット(GPU)、及び/又は1つ以上のコプロセッサとを、全て単一の基板又はマイクロチップ上に含む。SoCは、様々な機能、例えば、信号処理、無線通信、又は人工知能のために設計され得る。
【0004】
いくつかのSoCにおいて、プロセッサ上で実行されるファームウェアは、プロセッサの現在の動作モード、例えば特権モード又はユーザモードにかかわらず、SoC上の全ての周辺機器への完全なアクセスを有する。これは、故障又は他の望ましくない結果をもたらし得る。例えば、1つの周辺機器に対応する欠陥のある又は悪意のあるファームウェアデバイスドライバは、例えば、他の周辺機器内に提供されるレジスタを改変することによって、別の周辺機器に誤って(又は悪意を持って)アクセスし、破損する可能性がある。
【0005】
例えば、欠陥のある又は悪意のあるファームウェアから周辺機器を保護するために、SoC又は他の電子デバイス内に設けられた周辺機器のための改善された低コストアクセス制御が必要とされている。
【発明の概要】
【0006】
電子デバイス(例えば、SoC又は他の電子デバイス)内の周辺機器へのアクセスを制御して、例えば、誤ったアクセス又は悪意のあるアクセスから周辺機器を保護するためのシステム及び方法が提供される。いくつかの例は、それぞれの周辺機器に対応するプログラム可能な(例えば、更新可能な)アクセス制御識別子と、アクセス制御識別子に少なくとも基づいてそれぞれの周辺機器へのアクセスを制御するためのそれぞれのアクセスコントローラと、を提供する。アクセス制御識別子は、本明細書ではアクセス制御ビットと呼ばれる1つ以上のビットを含み得る。アクセス制御識別子は、ユーザ空間タスク(例えば、選択された周辺機器に関連付けられたデバイスドライバ動作)の実行中に周辺機器を保護するために使用され得る。例えば、選択された周辺機器に関連するそれぞれのタスク(例えば、デバイスドライバ動作)を実行するために、トランザクションホスト(例えば、プロセッサ)は、スーパーバイザファームウェア又は他のスーパーバイザコードを実行して、アクセス制御レジスタ内のそれぞれのアクセス制御識別子をプログラム(例えば、設定又は更新)し、(a)それぞれのタスクが選択された周辺機器にアクセスすることを可能にし、(b)それぞれのタスクが他の周辺機器にアクセスすることを禁止し、例えば、それぞれのタスクが他の周辺機器のいずれか内のレジスタに誤って又は悪意を持ってアクセスすることを禁止することができる。いくつかの例では、アクセスコントローラは、トランザクションホスト(例えば、プロセッサ)が、それぞれのアクセス制御識別子をプログラム、例えば、設定又は更新して、特権モード動作、例えば、関連するスーパーバイザファームウェアの実行中に、スーパーバイザコードが全ての周辺機器にアクセスするのを可能にすることができる。
【0007】
いくつかの例では、それぞれのタスク(例えば、デバイスドライバ動作)に対してそれぞれのビットマスクが記憶され、それぞれのタスクに対するビットマスクは、それぞれのタスクを実行するためのそれぞれの周辺機器に対するそれぞれのアクセス設定を示す。それぞれのタスクを実行する前に、トランザクションホストは、それぞれのタスクに関連付けられたビットマスクにアクセスし、アクセス制御レジスタ内のそれぞれのアクセス制御識別子をプログラム(例えば、設定又は更新)することができる。プログラムされたそれぞれのアクセス制御識別子は、それぞれのタスクの実行中に、それぞれの周辺機器へのアクセスを制御するために、それぞれの周辺機器に関連付けられたアクセスコントローラによってアクセス可能かつ使用可能である。
【0008】
いくつかのアプリケーションでは、アクセス制御識別子及びアクセスコントローラは、複雑なソフトウェアの必要性を排除することができ、したがって、例えばSoCにおいて、より小型の又はより安価なプロセッサを可能にする。
【0009】
一態様は、トランザクションホストと、第1の周辺機器と、第2の周辺機器と、第1の周辺機器に接続された第1のアクセスコントローラと、第2の周辺機器に接続された第2のアクセスコントローラと、第1の周辺機器用の第1のアクセス制御識別子及び第2の周辺機器用の第2のアクセス制御識別子を記憶するアクセス制御レジスタとを含む電子デバイスを提供する。第1のアクセスコントローラは、トランザクションホストによる第1の周辺機器へのアクセスのためのアクセス要求を受信し、少なくとも第1の周辺機器用の第1のアクセス制御識別子に基づいて第1の周辺機器のためのアクセス決定を実行し、アクセス決定に基づいて第1の周辺機器へのトランザクションホストアクセスを許可又は禁止する。
【0010】
いくつかの例では、トランザクションホストは、プロセッサ又はダイレクトメモリアクセス(DMA)エンジンを備える。
【0011】
いくつかの例では、トランザクションホストは、第1の周辺機器にアクセスするために、電子デバイスとは別個の外部ホストから要求を受信するブリッジを備える。
【0012】
いくつかの例では、第1のアクセス制御識別子は、1つ以上の第1のアクセス制御ビットを含み、第2のアクセス制御識別子は、1つ以上の第2のアクセス制御ビットを含む。
【0013】
いくつかの例では、電子デバイスは、トランザクションホストの動作モードに基づいて、第1のアクセス制御識別子及び第2のアクセス制御識別子のうちの少なくとも1つをプログラムするために、トランザクションホストによって実行可能なファームウェアを含む。
【0014】
いくつかの例では、電子デバイスは、(a)トランザクションホストによるそれぞれの周辺機器へのアクセスを可能にするアクセス許可設定と、(b)トランザクションホストによるそれぞれの周辺機器へのアクセスを禁止するアクセス禁止設定との間で、第1の周辺機器用の第1のアクセス制御識別子及び第2の周辺機器用の第2のアクセス制御識別子のうちの少なくとも1つを動的にプログラムするために、トランザクションホストによって実行可能なファームウェアを備える。
【0015】
いくつかの例では、電子デバイスは、第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムするために、トランザクションホストによって実行可能なファームウェアを備え、これは、(a)トランザクションホストの特権モード動作に対して、トランザクションホストによる第1の周辺機器及び第2の周辺機器の両方へのアクセスを可能にするアクセス許可設定に、第1のアクセス制御識別子と第2のアクセス制御識別子の両方をプログラムすることと、(b)第1の周辺機器に関連する動作を実行するためのトランザクションホストの第1のユーザモード動作に対して、第1の周辺機器へのアクセスを可能にするために、第1のアクセス制御識別子をアクセス許可設定にプログラムし、第2の周辺機器へのアクセスを禁止するために、第2のアクセス制御識別子をアクセス禁止設定にプログラムすることと、(c)第2の周辺機器に関連する動作を実行するためのトランザクションホストの第2のユーザモード動作に対して、第1の周辺機器へのアクセスを禁止するために、第1のアクセス制御識別子をアクセス禁止設定にプログラムし、第2の周辺機器へのアクセスを可能にするために、第2のアクセス制御識別子をアクセス許可設定にプログラムすることと、を含む。
【0016】
いくつかの例では、アクセスコントローラは、(a)第1の周辺機器用の周辺機器固有アクセス制御識別子と、(b)トランザクションホストの特権モード、又はトランザクションホストのユーザモードのいずれかを示す動作モード信号と、に少なくとも基づいて、第1の周辺機器に対するアクセス決定を実行する。
【0017】
いくつかの例では、第1の周辺機器用の第1のアクセス制御識別子、及び第2の周辺機器用の第2のアクセス制御識別子は、それぞれ、(a)トランザクションホストの特権モードにおいてのみ、それぞれの周辺機器へのアクセスを可能にする制限付きアクセス設定、又は(b)トランザクションホストの特権モード及びトランザクションホストのユーザモードの両方において、それぞれの周辺機器へのアクセスを可能にするオープンアクセス設定のいずれかを示す。
【0018】
いくつかの例では、電子デバイスは、制限付きアクセス設定とオープンアクセス設定との間で、第1のアクセス制御識別子及び第2のアクセス制御識別子のうちの少なくとも1つをプログラムするために、トランザクションホストによって実行可能なファームウェアを含む。
【0019】
いくつかの例では、アクセスコントローラは、(a)第1の周辺機器用の第1のアクセス制御識別子がオープンアクセス設定を示し、動作モード信号がトランザクションホストの特権モードを示す場合、第1の周辺機器へのアクセスを可能にすることを決定し、(b)第1の周辺機器用の第1のアクセス制御識別子がオープンアクセス設定を示し、動作モード信号がトランザクションホストのユーザモードを示す場合、第1の周辺機器へのアクセスを可能にすることを決定し、(c)第1の周辺機器用の第1のアクセス制御識別子が制限付きアクセス設定を示し、動作モード信号がトランザクションホストの特権モードを示す場合、第1の周辺機器へのアクセスを可能にすることを決定し、(d)第1の周辺機器用の第1のアクセス制御識別子が制限付きアクセス設定を示し、動作モード信号がトランザクションホストのユーザモードを示す場合、第1の周辺機器へのアクセスを禁止することを決定する。
【0020】
いくつかの例では、トランザクションホストは、特権モード及びユーザモードで選択的に動作可能であり、第1のアクセス制御識別子及び第2のアクセス制御識別子のうちの少なくとも1つは、トランザクションホストの特権モードにおいてのみプログラム可能である。
【0021】
いくつかの例では、電子デバイスは、トランザクションホスト上で実行されるファームウェアを含み、第1の周辺機器へのアクセスの許可又は禁止は、トランザクションホスト上で実行されるファームウェアによる第1の周辺機器へのアクセスの許可又は禁止を含む。
【0022】
いくつかの例では、アクセス制御レジスタは、複数の周辺機器のうちの指定された周辺機器内に設けられる。
【0023】
いくつかの例では、電子デバイスは追加のトランザクションホストを備え、第1のアクセス制御識別子及び第2のアクセス制御識別子はトランザクションホストに関連付けられ、アクセス制御レジスタは、第1の周辺機器用の、追加のトランザクションホストに関連付けられた第3のアクセス制御識別子と、第2の周辺機器用の、追加のトランザクションホストに関連付けられた第4のアクセス制御識別子と、を記憶する。アクセスコントローラは、追加のトランザクションホストによる第1の周辺機器へのアクセスに対する追加のアクセス要求を受信し、(a)追加のトランザクションホストを識別するアクセス要求識別子と、(b)第3のアクセス制御識別子と、に基づいて、第1の周辺機器に対する追加のアクセス決定を実行し、追加のアクセス決定に基づいて、追加のトランザクションホストによる第1の周辺機器へのアクセスを許可又は禁止する。
【0024】
いくつかの例では、電子デバイスは、システムオンチップ(SoC)デバイスである。
【0025】
別の態様は、トランザクションホストと、第1の周辺機器及び第2の周辺機器と、アクセス制御レジスタとを含む電子デバイスにおいて、アクセス制御レジスタに、(a)第1の周辺機器用の第1のアクセス制御識別子と、(b)第2の周辺機器用の第2のアクセス制御識別子とを記憶することを含む方法を提供する。第1の周辺機器に関連付けられた第1のアクセスコントローラは、トランザクションホストによる第1の周辺機器へのアクセス要求を受信する。第1のアクセスコントローラは、少なくとも第1の周辺機器用の第1のアクセス制御識別子に基づいて、第1の周辺機器へのアクセスを許可又は禁止するためにアクセス決定を実行し、アクセス決定に基づいて、第1の周辺機器へのアクセスを許可又は禁止する。
【0026】
いくつかの例では、方法は、トランザクションホストによって、トランザクションホストの動作モードに基づいて、第1のアクセス制御識別子及び第2のアクセス制御識別子のうちの少なくとも1つをプログラムするために、ファームウェアを実行することを含む。
【0027】
いくつかの例では、方法は、(a)トランザクションホストによるそれぞれの周辺機器へのアクセスを可能にするアクセス許可設定と、(b)トランザクションホストによるそれぞれの周辺機器へのアクセスを禁止するアクセス禁止設定との間で、第1の周辺機器用の第1のアクセス制御識別子及び第2の周辺機器用の第2のアクセス制御識別子のうちの少なくとも1つを動的にプログラムするために、トランザクションホストによって、ファームウェアを実行することを含む。
【0028】
いくつかの例では、方法は、第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムするために、トランザクションホストによって、ファームウェアを実行することを含み、(a)トランザクションホストの特権モード動作に対して、トランザクションホストによる第1の周辺機器及び第2の周辺機器の両方へのアクセスをそれぞれ可能にするアクセス許可設定に、第1のアクセス制御識別子と第2のアクセス制御識別子の両方を設定することと、(b)第1の周辺機器に関連する動作を実行するためのトランザクションホストの第1のユーザモード動作に対して、第1のアクセス制御識別子をアクセス許可設定に設定することと、第2のアクセス制御識別子を、第2の周辺機器へのアクセスを禁止するアクセス禁止設定に設定することと、(c)第2の周辺機器に関連する動作を実行するためのトランザクションホストの第2のユーザモード動作に対して、第1のアクセス制御識別子をアクセス禁止設定に設定することと、第2のアクセス制御識別子をアクセス許可設定に設定することと、を含む。
【0029】
いくつかの例では、本方法は、(a)第1の周辺機器用の第1のアクセス制御識別子と、(b)トランザクションホストの特権モード又はトランザクションホストのユーザモードのいずれかを示す動作モード信号と、に少なくとも基づいて、第1の周辺機器へのアクセスを許可又は禁止するために、第1のアクセスコントローラによって、アクセス決定を実行することを含む。
【0030】
いくつかの例では、第1の周辺機器用の第1のアクセス制御識別子、及び第2の周辺機器用の第2のアクセス制御識別子は、それぞれ、(a)トランザクションホストのユーザモードにおいて、それぞれの周辺機器へのアクセスを禁止する制限付きアクセス設定、又は(b)トランザクションホストの特権モード及びトランザクションホストのユーザモードの両方において、それぞれの周辺機器へのアクセスを可能にするオープンアクセス設定のいずれかを示す。
【0031】
いくつかの例では、方法は、トランザクションホストによってファームウェアを実行して、第1のアクセス制御識別子及び第2のアクセス制御識別子のうちの少なくとも1つを、制限付きアクセス設定とオープンアクセス設定との間で動的にプログラムすることを含む。
【0032】
いくつかの例では、第1の周辺機器へのアクセスを許可又は禁止するためにアクセス決定を実行することは、(a)第1の周辺機器用の周辺機器固有アクセス制御識別子がオープンアクセス設定を示し、動作モード信号が、トランザクションホストの特権モードを示す場合、第1の周辺機器へのアクセスを可能にすることと、(b)第1の周辺機器用の第1のアクセス制御識別子がオープンアクセス設定を示し、動作モード信号がトランザクションホストのユーザモードを示す場合、第1の周辺機器へのアクセスを可能にすることと、(c)第1の周辺機器用の第1のアクセス制御識別子が制限付きアクセス設定を示し、動作モード信号がトランザクションホストの特権モードを示す場合、第1の周辺機器へのアクセスを可能にすることと、(d)第1の周辺機器用の第1のアクセス制御識別子が制限付きアクセス設定を示し、動作モード信号がトランザクションホストのユーザモードを示す場合、第1の周辺機器へのアクセスを禁止することと、を含む。
【0033】
いくつかの例では、方法は、トランザクションホストの特権モードにおいて、第1のアクセス制御識別子のプログラミングを可能にすることと、トランザクションホストのユーザモードにおいて第1のアクセス制御識別子のプログラミングを禁止することとを含む。
【0034】
別の態様は、トランザクションホストと、第1の周辺機器及び第2の周辺機器と、アクセス制御レジスタとを含む電子デバイスにおいて、アクセス制御レジスタに、第1の周辺機器用の第1のアクセス制御識別子と、第2の周辺機器用の第2のアクセス制御識別子と、を記憶することを含む方法を提供する。トランザクションホストは、それぞれ第1の周辺機器及び第2の周辺機器へのアクセスを可能にするように、第1のアクセス制御識別子及び第2のアクセス制御識別子を設定し、トランザクションホストは、特権モード動作を第1の時間に実行する。続いて、トランザクションホストは、(a)トランザクションホストによる第1の周辺機器へのアクセスを可能にするように第1のアクセス制御識別子を設定し、(b)トランザクションホストによる第2の周辺機器へのアクセスを禁止するように第2のアクセス制御識別子を設定し、第2の時間に、第1の周辺機器に関するユーザモード動作を実行する。
【0035】
いくつかの例では、トランザクションホストは、(a)トランザクションホストによる第1の周辺機器へのアクセスを禁止するように第1のアクセス制御識別子を設定し、(b)トランザクションホストによる第2の周辺機器へのアクセスを可能にするように第2のアクセス制御識別子を設定し、第3の時間に、第2の周辺機器に関するユーザモード動作を実行する。
【0036】
別の態様は、第1の周辺機器、第2の周辺機器、非一時的メモリ、アクセス制御レジスタ、トランザクションホスト、第1のアクセスコントローラ、及び第2のアクセスコントローラを含む電子デバイスを提供する。非一時的メモリは、(a)アクセス制御識別子管理命令を含むスーパーバイザファームウェアと、(b)第1の周辺機器に関連する第1のタスクを含むコンピュータ可読コードと、(c)第1のタスクに対応する第1のビットマスクであって、第1のビットマスクが、第1のタスクを実行するための第1の周辺機器及び第2の周辺機器のそれぞれのアクセス設定を示す、第1のビットマスクと、を記憶する。アクセス制御レジスタは、第1の周辺機器用の第1のアクセス制御識別子と、第2の周辺機器用の第2のアクセス制御識別子と、を含む。トランザクションホストは、スーパーバイザファームウェア内のアクセス制御識別子管理命令を実行して、第1のタスクに対応する第1のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムし、第1のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムした後、第1の周辺機器に関連する第1のタスクを実行する。第1のアクセスコントローラは、第1のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第1のアクセス制御識別子に少なくとも基づいて、第1の周辺機器へのアクセスを制御し、第2のアクセスコントローラは、第1のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第2のアクセス制御識別子に少なくとも基づいて、第2の周辺機器へのアクセスを制御する。
【0037】
いくつかの例では、電子デバイスは、システムオンチップ(SoC)デバイスである。
【0038】
いくつかの例では、トランザクションホストは、プロセッサ又はダイレクトメモリアクセス(DMA)エンジンを備える。
【0039】
いくつかの例では、第1のビットマスク及び第2のビットマスクは、非一時的メモリ内のビットマスクデータ構造に記憶される。
【0040】
いくつかの例では、第1のビットマスクは、第1のタスクを実行するための第1の周辺機器に対するアクセス設定を示す1つ以上の第1のビットマスクビットと、第1のタスクを実行するための第2の周辺機器に対するアクセス設定を示す1つ以上の第2のビットマスクビットと、を含み、第1のアクセス制御識別子は1つ以上の第1のアクセス制御ビットを含み、第2のアクセス制御識別子は1つ以上の第2の第1のアクセス制御ビットを含む。
【0041】
いくつかの例では、コンピュータ可読コードは、第2の周辺機器に関連する第2のタスクを含み、非一時的メモリは、第2のタスクに対応する第2のビットマスクを記憶し、第2のビットマスクは、第2のタスクを実行するための第1の周辺機器及び第2の周辺機器のそれぞれのアクセス設定を示し、トランザクションホストは、(a)第2のタスクに対応する第2のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムするために、スーパーバイザファームウェア内のアクセス制御識別子管理命令を実行し、(b)第2のビットマスクに基づいてアクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムした後で、第2の周辺機器に関連する第2のタスクを実行する。
【0042】
いくつかの例では、非一時的メモリは、第1のタスク及び第2のタスクを含むコンピュータ可読コードを記憶する非特権部分と、アクセス制御識別子管理命令を含むスーパーバイザファームウェアと、第1のタスクに対応する第1のビットマスクを記憶する特権部分と、を含む。
【0043】
いくつかの例では、アクセスコントローラは、第1のタスクを実行するために、第1の周辺機器にアクセスするためのアクセス要求を、トランザクションホストから受信し、第1のタスクに対応する第1のビットマスクに基づいてプログラムされた第1のアクセス制御識別子に少なくとも基づいて、第1の周辺機器に対するアクセス決定を実行し、アクセス決定に基づいて、トランザクションホストが第1の周辺機器にアクセスするのを許可又は禁止する。
【0044】
いくつかの例では、第1のアクセスコントローラは、(a)第1のタスクに対応する第1のビットマスクに基づいてトランザクションホストによってプログラムされた第1のアクセス制御識別子と、(b)トランザクションホストの特権モード又はトランザクションホストのユーザモードのいずれかを示す動作モード信号とに、少なくとも基づいて、第1の周辺機器に対するアクセス決定を実行する。
【0045】
いくつかの例では、第1のタスクに対応する第1のビットマスクは、(a)第1のタスクが第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)第1のタスクが第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示す。
【0046】
いくつかの例では、第1のタスクに対応する第1のビットマスクは、(a)第1のタスクが第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)第1のタスクが第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示す。アクセス制御識別子管理命令は、第1のタスクの実行前に第1のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムし、これは、(a)第1のタスクの実行中に、第1のアクセス制御識別子を、第1の周辺機器へのアクセスを可能にするアクセス許可値にプログラムすること、及び(b)第1のタスクの実行中に、第2のアクセス制御識別子を、第2の周辺機器へのアクセスを禁止するアクセス禁止値にプログラムすることを含む。第1のアクセスコントローラは、第1のアクセス制御識別子のアクセス許可値に基づいて、第1のタスクの実行中に第1の周辺機器へのアクセスを許可し、第2のアクセスコントローラは、第2のアクセス制御識別子のアクセス禁止値に基づいて、第1のタスクの実行中に第2の周辺機器へのアクセスを禁止する。
【0047】
いくつかの例では、トランザクションホストは、特権モード及びユーザモードで選択的に動作し、第1のタスクに対応する第1のビットマスクは、(a)第1のタスクが第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)第1のタスクが第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示す。アクセス制御識別子管理命令は、第1のタスクの実行前に第1のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムし、これは、(a)第1のアクセス制御識別子を、トランザクションホストの特権モード及びユーザモードの両方において、第1の周辺機器へのアクセスを可能にする、第1の周辺機器のオープンアクセス設定にプログラムすることと、(b)第2のアクセス制御識別子を、トランザクションホストの特権モードにおいて、第2の周辺機器へのアクセスを可能にするが、ユーザモードにおいて、第2の周辺機器へのアクセスを許可しない、第2の周辺機器の制限付きアクセス値にプログラムすることと、を含む。
【0048】
いくつかの例では、アクセス制御レジスタは第3の周辺機器内に設けられる。
【0049】
別の態様は、方法を提供する。方法は、トランザクションホスト、第1の周辺機器、第2の周辺機器、並びに第1の周辺機器用の第1のアクセス制御識別子及び第2の周辺機器用の第2のアクセス制御識別子を含むアクセス制御レジスタ、を含む電子デバイスにおいて、(a)第1の周辺機器に関連する第1のタスクを含むコンピュータ可読コードと、(b)第1のタスクに対応する第1のビットマスクであって、第1のビットマスクは、第1のタスクを実行するための第1の周辺機器及び第2の周辺機器のそれぞれのアクセス設定を示す、第1のビットマスクと、を記憶することを含む。トランザクションホストが、第1のタスクを実行する前に、第1のタスクに対応する第1のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムするために、アクセス制御識別子管理命令を実行することを含む。第1のビットマスクに基づいてアクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムした後、トランザクションホストが、第1の周辺機器に関連する第1のタスクを実行する。第1のタスクの実行中に、第1の周辺機器に関連付けられた第1のアクセスコントローラは、第1のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第1のアクセス制御識別子に少なくとも基づいて、第1の周辺機器へのアクセスを制御し、第2の周辺機器に関連付けられた第2のアクセスコントローラは、第1のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第2のアクセス制御識別子に少なくとも基づいて、第2の周辺機器へのアクセスを制御する。
【0050】
いくつかの例では、本方法は、第2の周辺機器に関連する第2のタスクを含むコンピュータ可読コードを記憶することと、第2のタスクに対応する第2のビットマスクを記憶することを含み、第2のビットマスクは、第2のタスクを実行するための第1の周辺機器及び第2の周辺機器のそれぞれのアクセス設定を示す。トランザクションホストは、第2のタスクを実行する前に、第2のタスクに対応する第2のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムするために、アクセス制御識別子管理命令を実行する。第2のビットマスクに基づいてアクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムした後、トランザクションホストが、第2の周辺機器に関連する第2のタスクを実行する。第2のタスクの実行中に、第1の周辺機器に関連付けられた第1のアクセスコントローラは、第2のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第1のアクセス制御識別子に少なくとも基づいて、第1の周辺機器へのアクセスを制御し、第2の周辺機器に関連付けられた第2のアクセスコントローラは、第2のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第2のアクセス制御識別子に少なくとも基づいて、第2の周辺機器へのアクセスを制御する。
【0051】
いくつかの例では、第1のアクセスコントローラが、第1のビットマスクに基づいてプログラムされた第1のアクセス制御識別子に少なくとも基づいて、第1の周辺機器へのアクセスを制御することは、第1のアクセスコントローラが、第1のタスクを実行するために第1の周辺機器にアクセスするためのアクセス要求をトランザクションホストから受信することと、第1のビットマスクに基づいてプログラムされた第1のアクセス制御識別子に少なくとも基づいて、第1の周辺機器に対するアクセス決定を実行することと、アクセス決定に基づいて、トランザクションホストが第1の周辺機器にアクセスするのを許可又は禁止することと、を含む。
【0052】
いくつかの例では、方法は、第1のアクセスコントローラが、(a)第1のビットマスクに基づいてプログラムされた第1のアクセス制御識別子と、(b)トランザクションホストの特権モード又はトランザクションホストのユーザモードのいずれかを示す動作モード信号とに、少なくとも基づいて、第1の周辺機器に対するアクセス決定を実行することを含む。
【0053】
いくつかの例では、第1のタスクに対応する第1のビットマスクは、(a)第1のタスクが第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)第1のタスクが第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示す。第1のタスクに対応する第1のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムするアクセス制御識別子管理命令を実行することは、(a)第1のタスクの実行中に、第1のアクセス制御識別子を、第1の周辺機器へのアクセスを可能にするアクセス許可値にプログラムすること、及び(b)第1のタスクの実行中に、第2のアクセス制御識別子を、第2の周辺機器へのアクセスを禁止するアクセス禁止値にプログラムすることを含む。第1のタスクの実行中に、第1の周辺機器に関連付けられた第1のアクセスコントローラは、第1のアクセス制御識別子のアクセス許可値に基づいて、第1の周辺機器へのアクセスを許可し、第2の周辺機器に関連付けられた第2のアクセスコントローラは、第2のアクセス制御識別子のアクセス禁止値に基づいて、第2の周辺機器へのアクセスを禁止する。
【0054】
いくつかの例では、トランザクションホストは、特権モード及びユーザモードで選択的に動作し、第1のタスクに対応する第1のビットマスクは、(a)第1のタスクが第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)第1のタスクが第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示す。第1のタスクに対応する第1のビットマスクに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムするアクセス制御識別子管理命令実行することは、(a)第1のアクセス制御識別子を、トランザクションホストの特権モード及びユーザモードの両方において、第1の周辺機器へのアクセスを可能にする、第1の周辺機器のオープンアクセス値にプログラムすることと、(b)第2のアクセス制御識別子を、トランザクションホストの特権モードにおいて、第2の周辺機器へのアクセスを可能にするが、ユーザモードにおいて、第2の周辺機器へのアクセスを許可しない、第2の周辺機器の制限付きアクセス値にプロラムすることと、を含む。第1のタスクの実行中、第1の周辺機器に関連付けられた第1のアクセスコントローラは、第1のアクセス制御識別子のオープンアクセス値に基づいて、トランザクションホストの特権モード及びユーザモードの両方において第1の周辺機器へのアクセスを許可し、第2の周辺機器に関連付けられた第2のアクセスコントローラは、第2のアクセス制御識別子の制限付きアクセス値に基づいて、トランザクションホストの特権モードにおいて、第2の周辺機器へのアクセスを禁止するが、トランザクションホストのユーザモードにおいて、第2の周辺機器へのアクセスを禁止しない。
【図面の簡単な説明】
【0055】
本開示の例示的な態様は、以下の添付の図面と併せて以下に記載される。
【
図1】一例による、周辺機器へのアクセスを制御するためにアクセス制御識別子を利用する、例示的な電子デバイス(例えば、SoC)を示す図である。
【
図2】一例による、
図1の例示的電子デバイスの付加的側面を示す図である。
【
図3】一例による、周辺機器へのアクセスを制御するためにアクセス制御識別子を利用する、別の例示的な電子デバイスを示す図である。
【
図4A】いくつかの例による、それぞれのアクセスコントローラに設けられた例示的な論理回路の回路図を示す図である。
【
図4B】いくつかの例による、それぞれのアクセスコントローラに設けられた例示的な論理回路の回路図を示す図である。
【
図4C】いくつかの例による、それぞれのアクセスコントローラに設けられた例示的な論理回路の回路図を示す図である。
【
図4D】いくつかの例による、それぞれのアクセスコントローラに設けられた例示的な論理回路の回路図を示す図である。
【
図5】アクセス制御レジスタ内に記憶されたアクセス制御識別子を使用して、電子デバイス内の周辺機器へのアクセスを制御するための例示的方法のフローチャートである。
【
図6】第1の例示的なアクセス制御識別子スキームを使用して、電子デバイス内の周辺機器へのアクセスを制御するための例示的な方法のフローチャートである。
【
図7】第2の例示的なアクセス制御識別子スキームを使用して、電子デバイス内の周辺機器へのアクセスを制御するための例示的な方法のフローチャートである。
【
図8】一例による、特権モード動作及びユーザモード動作の両方のために、電子デバイス内の周辺機器へのアクセスを制御するための例示的な方法のフローチャートである。
【
図9】タスク関連ビットマスクを使用して、周辺機器へのアクセスを制御するための例示的な方法のフローチャートである。
【0056】
複数の異なる図面に現れる任意の図示された要素に対する参照番号は、複数の図面にわたって同じ意味を有し、任意の特定の図面の文脈における任意の図示された要素の本明細書における言及又は議論は、同じ図示された要素が示されている他の各図面にも適用されることを理解されたい。
【発明を実施するための形態】
【0057】
図1は、一例による、周辺機器へのアクセスを制御するためにアクセス制御識別子を利用する例示的な電子デバイス100を示し、アクセス制御識別子は、プログラム可能であってもよく、例えば、それぞれのアクセス制御識別子は、経時的に設定及び/又は更新されてもよい。電子デバイス100は、トランザクションホスト102と、周辺機器104と、アクセスコントローラ106と、アクセス制御識別子112を記憶するアクセス制御レジスタ110と、を含む。電子デバイス100の構成要素は、任意の1つ又は複数のタイプの通信リンク114、例えば、バス、ワイヤ、又は他のタイプのリンクによって互いに通信可能に接続され得る。いくつかの例では、アクセスコントローラ106は、バスとそれぞれの周辺機器104との間に接続され得るか、又は代替として、バスに間接的に接続され、バスに接続された周辺機器104a~104nとの選択された通信のための、アクセス決定を行うように動作可能であり得る。
【0058】
いくつかの例では、電子デバイス100は、システムオンチップ(SoC)デバイスである。他の例では、電子デバイス100は、1つのチップ上に設けられたトランザクションホスト102と、別個のチップ(単数又は複数)上に設けられた周辺機器104と、を含むマルチチップシステムであってもよい。トランザクションホスト102は、例えば、それぞれの周辺機器104に提供されるレジスタにアクセスするために、それぞれの周辺機器104に関連するタスクの実行を開始することが可能な任意のデバイスを備え得る。例えば、トランザクションホスト102は、プロセッサ、例えば、マイクロプロセッサ、マイクロコントローラ、中央処理装置(CPU)、プロセッサコア(単数又は複数)、ダイレクトメモリアクセス(DMA)エンジン、又は任意の他のタイプのコンピュータプロセッサを含んでもよい。別の例として、トランザクションホスト102は、外部ホスト116が少なくとも1つの周辺機器104にアクセスすることを可能にするために外部ホスト116(例えば、電子デバイス100とは別個のプロセッサを含む)に接続されたブリッジを含んでもよい。
【0059】
周辺機器104(例えば、入出力デバイス及び/又は他の周辺デバイスを含む)は、電子デバイス100のための入力、出力、又はデータ記憶機能を提供する任意のデバイス、例えば、1つ以上のPCI Expressインタフェース、イーサネットインタフェース、USBインタフェース、I2C(Inter-Integrated Circuit)インタフェース、ダイレクトメモリアクセス(DMA)コントローラ、割り込みコントローラ、アナログデジタルコンバータ(ADC)、WI-FIインタフェース、Bluetoothインタフェース、グローバルシステムフォーモバイルコミュニケーションズ(General Packet Radio Service、GSM)インタフェース、汎用パケット無線サービス(General Packet Radio Service、GPRS)インタフェース、全地球測位システム(GPS)インタフェース、3Gインタフェース、4Gインタフェース、5Gインタフェース、汎用非同期送受信機(universal asynchronous receiver-transmitter、UART)、コントローラエリアネットワークフレキシブルデータレート(Controller Area Network Flexible Data-Rate、CAN-FD)インタフェース、汎用入出力(GPIO)インタフェース、ディスプレイデバイスインタフェース、モデム、グラフィックス処理ユニット(GPU)、又はコプロセッサを含んでもよい。
【0060】
電子デバイス100は、任意の数の周辺機器104を含んでもよい。
図1に示される例示的な電子デバイス100は、周辺機器104a~104nを含むが、電子デバイス100は、任意の数の1つ以上の周辺機器を含み得ることを理解されたい。
【0061】
それぞれのアクセスコントローラ106は、例えば、トランザクションホスト102によって実行されるデバイスドライバ(ファームウェア)によって、それぞれの周辺機器104へのアクセスを制御する(例えば、許可又は禁止する)ために、対応する周辺機器104に接続され得る。例えば、
図2を参照して以下で説明するように、トランザクションホスト102は、ファームウェアを実行して、周辺機器104に関連する様々なタスクを実行することができる。例えば、トランザクションホスト102は、それぞれの周辺機器104a~104nに関連するタスク(例えば、デバイスドライバタスク)を実行するために、それぞれの周辺機器104a~104nに対応するデバイスドライバを実行してもよい。アクセスコントローラ106は、トランザクションホスト102によって実行されるそれぞれのタスクについて、それぞれの周辺機器104へのアクセスを制御(例えば、許可又は禁止)してもよい。
【0062】
図示のように、電子デバイス100は、それぞれの周辺機器104a~104nに対応するそれぞれのアクセスコントローラ106a~106nを含むことができる。例えば、第1のアクセスコントローラ106aは、トランザクションホスト102による第1の周辺機器104aへのアクセスを制御するために、トランザクションホスト102と第1の周辺機器104aとの間に接続されてもよく、第2のアクセスコントローラ106bは、トランザクションホスト102による第2の周辺機器104bへのアクセスを制御するために、トランザクションホスト102と第2の周辺機器104bとの間に接続されてもよく、以下同様である。例えば、第1のアクセスコントローラ106aは、(例えば、第1の周辺機器104aに対応する第1のデバイスドライバに関連付けられた)第1のタスクが、第1の周辺機器104aにアクセスすることを可能にし、(例えば、第2の周辺機器104bに対応する第2のデバイスドライバに関連付けられた)第2のタスクが、第1の周辺機器104aにアクセスすることを禁止することができる。同様に、第2のアクセスコントローラ106bは、(第2の周辺機器104bに対応する第2のデバイスドライバに関連付けられた)第2のタスクが第2の周辺機器104bにアクセスすることを許可し、(第1の周辺機器104aに対応する第1のデバイスドライバに関連付けられた)第1のタスクが第2の周辺機器104bにアクセスすることを禁止することができる。
【0063】
それぞれのアクセスコントローラ106a~106nは、アクセス制御レジスタ110に記憶されたそれぞれのアクセス制御識別子112、及びいくつかの代替例では追加のアクセス制御入力データに基づいて、トランザクションホスト102によるそれぞれの周辺機器104a~104nへのアクセスを制御する(例えば、許可又は禁止する)電子回路を含むことができる。以下で論じるように、追加のアクセス制御入力データは、例えば、(a)トランザクションホスト102の動作モードを示す動作モード信号(OMS)120、及び/又は(b)それぞれの周辺機器104へのアクセスを要求するそれぞれのトランザクションホスト102を識別するアクセス要求識別子(複数のトランザクションホスト102を含む例に関して
図3を参照して以下で論じる)を含むことができる。
【0064】
いくつかの例では、アクセス制御レジスタ110に記憶されたアクセス制御識別子(本明細書では「AC識別子」とも呼ばれる)112は、それぞれの周辺機器104a~104nに対応するそれぞれのアクセス制御識別子112a~112nを含み、第1の周辺機器104aに対応する第1のアクセス制御識別子112a、第2の周辺機器104bに対応する第2のアクセス制御識別子112bなどを含む。それぞれの周辺機器104a~104nに対するそれぞれのアクセス制御識別子112a~112nは、それぞれの周辺機器104a~104nに対するアクセス設定を示す1ビット、複数ビット、又は他のデータを含むことができる。例えば、第1のアクセス制御識別子112aは、第1の周辺機器104aのためのアクセス設定を示す1つ又は複数のビットを含んでもよく、第2のアクセス制御識別子112aは、第2の周辺機器104bのためのアクセス設定を示す1つ又は複数のビットを含んでもよい。アクセス制御レジスタ110は、例えば、1つ以上の8ビットレジスタ、32ビットレジスタ、又は64ビットレジスタを含む、任意の好適なサイズの単一レジスタ又は複数レジスタを含んでもよい。
【0065】
図2を参照して以下で説明するように、トランザクションホスト102は、それぞれのタスク(例えば、ファームウェアタスク)を実行する前に、それぞれのタスクに割り当てられた周辺機器アクセス許可に基づいて、それぞれのアクセス制御識別子112a~112nの値をプログラム(例えば、設定又は更新)してもよい。以下で説明するように、電子デバイス100は、それぞれのタスクに対する周辺機器アクセス許可を示すそれぞれのタスクに対するそれぞれのビットマスクを記憶することができ、例えば、それぞれのタスクに対するそれぞれのビットマスクは、それぞれのタスクがそれぞれの周辺機器104a~104nに対する周辺機器アクセス許可を割り当てられているか(又は割り当てられていないか)どうかを示す。例えば、電子デバイス100は、第1のタスクが第1の周辺機器104aへの周辺機器アクセス許可を割り当てられているが、第2の周辺機器104bへの周辺機器アクセス許可を割り当てられていないことを示す、第1のタスクのための第1のビットマスクを記憶してもよく、第2のタスクが第2の周辺機器104bへの周辺機器アクセス許可を割り当てられているが、第1の周辺機器104aへの周辺機器アクセス許可を割り当てられていないことを示す、第2のタスクのための第2のビットマスクを記憶してもよい。いくつかの例では、周辺機器アクセス許可は、コード開発者(例えば、ファームウェア開発者)によって、例えば、それぞれのタスクによって必要とされ得るか、又は利用され得る機器(単数又は複数)に基づいて、コード開発者(例えば、ファームウェア開発者)によって、それぞれのタスクに(それぞれのタスクのためのそれぞれのビットマスクを使用して)割り当てられ得る。いくつかの例では、それぞれの周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、それぞれの周辺機器104a~104nに対応するそれぞれのアクセス制御識別子112a~112nに基づいて、それぞれの周辺機器104a~104nにアクセスするためのアクセス決定を行う。他の例では、それぞれの周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、(a)それぞれの周辺機器104a~104nに対応するそれぞれのアクセス制御識別子112a~112nと、(b)トランザクションホスト102の現在の動作モード(例えば特権モード又はユーザモード)を示す動作モード信号120と、に基づいて、それぞれの周辺機器104a~104nにアクセスするためのアクセス決定を行う。
【0066】
他の例では、複数の処理ホスト102が提供され、それぞれの周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、(b)要求トランザクションホスト102を識別するトランザクションホスト識別子と、(b)周辺機器104a~104n及びそれぞれの要求トランザクションホスト102に対応するそれぞれのアクセス制御識別子112a~112nと、に基づいて、一つの要求トランザクションホスト102(又は複数のトランザクションホスト102)(例えば、アクセス制御レジスタ110は、それぞれのトランザクションホスト102について、周辺機器104a~104nのアクセス制御識別子112a~112nのそれぞれのセットを記憶する)によって、それぞれの周辺機器104a~104nにアクセスするためのアクセス決定を行う。他の例では、複数の処理ホスト102が提供され、それぞれの周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、(b)要求トランザクションホスト102を識別するトランザクションホスト識別子と、(b)それぞれの周辺機器104a~104n及び要求トランザクションホスト102に対応するそれぞれのアクセス制御識別子112a~112n(例えば、アクセス制御レジスタ110は、それぞれのトランザクションホスト102について、周辺機器104a~104nのアクセス制御識別子112a~112nのそれぞれのセットを記憶する)と、(c)要求トランザクションホスト102の現在の動作モード(例えば、特権モード又はユーザモード)を示す動作モード信号120と、に基づいて、一つの要求トランザクションホスト102(又は複数のトランザクションホスト102)によって、それぞれの周辺機器104a~104nにアクセスするためのアクセス決定を行う。
【0067】
一般に、トランザクションホスト102がそれぞれの周辺機器104、例えば第1の周辺機器104aにアクセスしようと試みるとき、第1のアクセスコントローラ106aは、(a)第1の周辺機器104aへのアクセスのためにトランザクションホスト102からアクセス要求を受信し、(b)アクセス制御レジスタ110から第1の周辺機器104aのためのアクセス制御識別子112にアクセスし、(c)第1のアクセス制御識別子112a(及び、いくつかの例では、追加のアクセス制御入力データ)に基づいてアクセス決定を実行し、(d)アクセス決定に応答してトランザクションホスト102による第1の周辺機器104aへのアクセスを許可又は禁止してもよい。
【0068】
第1の例では、以下の表1に示すように、それぞれのアクセス制御識別子112a~112nは、以下のアクセス制御識別子(AC_ID)値の間でプログラム可能である。すなわち、
(a)(例えば、デバイスドライバ又は他のファームウェアを実行する)トランザクションホスト102によるそれぞれの周辺機器104a~104nへのアクセスを可能にするアクセス許可設定(例えば、AC_ID値=[0])と、
(b)(例えば、デバイスドライバ又は他のファームウェアを実行する)トランザクションホスト102によるそれぞれの周辺機器104a~104nへのアクセスを禁止するアクセス禁止設定(例えば、AC_ID値=[1])と、の間で。
【0069】
表1.第1の例のアクセス制御識別子スキーム。
【表1】
【0070】
いくつかの例では、それぞれのアクセスコントローラ106a~106nは、表1のデータを含むルックアップテーブル(LUT)を記憶するか、又はそれにアクセスすることができ、それぞれのアクセスコントローラ106a~106nは、アクセス決定を行うためにアクセスすることができる。いくつかの例では、それぞれのアクセスコントローラ106a~106nは、メモリ107、例えば読取り専用メモリ(ROM)デバイス内にそれぞれのLUTを記憶することができる(メモリ107のそれぞれのインスタンスは、それぞれのアクセスコントローラ106a~106n内に提供されてもよく、又はメモリ107は、そうでなければそれぞれのアクセスコントローラ106a~106nにアクセス可能であってもよい)。他の例では、それぞれのアクセスコントローラ106a~106nは、論理回路108の適切なインスタンスを使用して、表1に指定された決定を実施することができる。例えば、
図4Aを参照して以下で説明するように、それぞれのアクセスコントローラ106a~106nは、それぞれのアクセスコントローラ106a~106nに入力されたアクセス制御識別子を処理するためのNOTゲート(又はインバータ)を含む論理回路108を含んでもよい。(別の例では、AC_ID値の意味を逆にすることができ、例えば、AC_ID=0がアクセス禁止設定を示し、AC_ID=1がアクセス許可設定を示し、NOTゲートを省略することができる。)
【0071】
第1の例(すなわち、表1に示されるスキームを実施する)では、トランザクションホスト102は、それぞれのファームウェア(例えば、以下で説明される
図2に示されるように、例えばファームウェアで具現化される、コンピュータ可読スーパーバイザコード206で提供されるアクセス制御識別子管理命令214)を実行して、トランザクションホストの現在の動作モード(例えば、特権モード又はユーザモード)に基づいて、及び/又は特定の周辺機器104a~104nに関連するタスクを開始する前に(例えば、特定の周辺機器104a~104nに対応するデバイスドライバを使用して)、上述のスキームに従って、例えばリアルタイムで、アクセス制御識別子112a~112nを動的にプログラムすることができる。例えば:
(a)任意の周辺機器104a~104nに関連する特権モードタスクを開始する前に、トランザクションホスト102は、AC識別子112a~112nを0にプログラムする(トランザクションホスト102が周辺機器104a~104nにアクセスすることを可能にする)ことができる。
(b)第1の周辺機器104aに関連するユーザモードタスクを開始する前に、トランザクションホスト102は、AC識別子112aを0にプログラムし、AC識別子112b...112nを1にプログラムする(トランザクションホスト102が第1の周辺機器104aにアクセスするのを許可し、周辺機器104b...104nにアクセスするのを禁止する)ことができる。そして、
(c)第2の周辺機器104bに関連するユーザモードタスクを開始する前に、トランザクションホスト102は、AC識別子112bを0にプログラムし、AC識別子112a,112c...112nを1にプログラムする(トランザクションホスト102が第2の周辺機器104bにアクセスを許可し、周辺機器104a,104c...104nにアクセスするのを禁止する)ことができる。
【0072】
第1の例では、特定の周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、例えば、トランザクションホスト102の現在の動作モードを示す動作モード信号を更に必要とせずに、特定の周辺機器104a~104nに対応するそれぞれのアクセス制御識別子112a~112nの現在の値に基づいて、特定の周辺機器104a~104nにアクセスするためのアクセス決定を行う。例えば、第1の周辺機器104aに関連付けられた第1のアクセスコントローラ106aが、第1の周辺機器104aにアクセスするためにトランザクションホスト102からアクセス要求を受信すると、第1のアクセスコントローラ106aは、第1の周辺機器104aに対応するそれぞれのAC識別子112aにアクセスし、AC識別子112aに基づいて、AC_ID値=0である場合、トランザクションホスト102が第1の周辺機器104aにアクセスするのを許可し、AC_ID値=1である場合、トランザクションホスト102が第1の周辺機器104aにアクセスするのを禁止する。
【0073】
上述の第1の例のスキームによれば、例示的な1つのインスタンスでは、トランザクションホスト102は、第1の周辺機器104aに対応する第1の周辺機器ドライバを使用して、第1の周辺機器104aに関連する第1のユーザ空間タスクを実行することができ、したがって、第1のタスクを実行する前に、(例えば、
図2に示すアクセス制御識別子管理命令214を使用して)AC識別子112aを0にプログラムすることができる。第1のアクセスコントローラ106aが、第1の周辺機器104aにアクセスする要求を第1の周辺機器ドライバから受信した場合、第1のアクセスコントローラ106aは、AC識別子112aにアクセスし、AC識別子112aの値=0に応答して、第1の周辺機器104aへのアクセスを可能にすることができる。別の例示的なインスタンスでは、トランザクションホスト102は、第2の周辺機器104bに関連する第2のユーザ空間タスクを、第2の周辺機器104bに対応する第2の周辺機器ドライバを使用して実行することができ、したがって、AC識別子112bを0にプログラムして第2の周辺機器104bへのアクセスを可能にし、AC識別子112aを1にプログラムして第1の周辺機器104aへのアクセスを禁止することができる。第1のアクセスコントローラ106aが、第1の周辺機器104aにアクセスする要求(例えば、第2の周辺機器ドライバからの誤った又は悪意のある要求)を第2の周辺デバイスドライバから受信した場合、第1のアクセスコントローラ106aは、AC識別子112aにアクセスし、AC識別子112aの値=1に応答して、第1の周辺機器104aへのアクセスを禁止することができる。更に別の例示的なインスタンスでは、トランザクションホスト102は、第1の周辺機器104a又は第2の周辺機器104bに関連する特権タスク(例えば、スーパーバイザファームウェアに含まれる)を実行することができ、したがって、そのような特権タスクを実行する前に、AC識別子112aを0に、又はAC識別子112bを0にそれぞれプログラムすることができ、それによって、第1の周辺機器104aに対応する第1の周辺機器デバイスドライバ又は第2の周辺機器104bに対応する第2の周辺機器デバイスドライバによる第1の周辺機器104aへのアクセスを可能にする。
【0074】
第2の例では、以下の表2に示すように、各アクセス制御識別子112a~112nは、以下のアクセス制御識別子(AC_ID)値の間でプログラム可能である。すなわち、
(a)トランザクションホスト102の現在の動作モード(例えば、特権モード又はユーザモード)にかかわらず、(例えば、デバイスドライバ又は他のファームウェアを実行する)トランザクションホスト102によるそれぞれの周辺機器104a~104nへのアクセスを可能にするオープンアクセス設定(例えば、AC_ID値=[0])と、
(b)トランザクションホスト102の特権モードにおいてのみ、(例えば、デバイスドライバ又は他のファームウェアを実行する)トランザクションホスト102によるそれぞれの周辺機器104a~104nへのアクセスを可能にする制限付きアクセス設定(例えば、AC_ID値=[1])との間で。
【0075】
表2.第2の例のアクセス制御識別子スキーム。
【表2】
【0076】
いくつかの例では、それぞれのアクセスコントローラ106a~106nは、表2のデータを含むLUTを記憶するか、又はそれにアクセスすることができ、それぞれのアクセスコントローラ106a~106nは、アクセス決定を行うためにそのLUTにアクセスすることができる。いくつかの例では、それぞれのアクセスコントローラ106a~106nは、メモリ107のそれぞれのインスタンスにおいて、例えば読取り専用メモリ(ROM)デバイス内にそれぞれのLUTを記憶することができる(メモリ107のインスタンスは、それぞれのアクセスコントローラ106a~106n内に提供されてもよく、又はメモリ107は、そうでなければそれぞれのアクセスコントローラ106a~106nにアクセス可能であってもよい)。他の例では、それぞれのアクセスコントローラ106a~106nは、適切な論理回路108のそれぞれのインスタンスを使用して、表2に指定された決定を実施することができる。例えば、
図4Bを参照して以下で説明するように、それぞれのアクセスコントローラ106a~106nは、それぞれのアクセスコントローラ106a~106nに入力されたアクセス制御識別子を処理するためのNOTゲート及びORゲートを含む論理回路108を含んでもよい。
【0077】
第2の例(すなわち、表2に示されるスキームを実施する)では、トランザクションホスト102は、それぞれのファームウェア(例えば、
図2に示されるアクセス制御識別子管理命令214)を実行して、トランザクションホストの現在の動作モード(例えば、特権モード又はユーザモード)に基づいて、及び/又は特定の周辺機器104a~104nに関連するタスクを開始するために(例えば、特定の周辺機器104a~104nに対応するデバイスドライバを使用して)、上述のスキームに従って、例えばリアルタイムで、アクセス制御識別子112a~112nを動的にプログラムすることができる。例えば:
(a)第1の周辺機器104aに関連するタスクを開始するために(トランザクションホスト102の動作モードにかかわらず)、トランザクションホスト102は、AC識別子112aを0にプログラムし、AC識別子112b,112c...112nを1にプログラムすることができる(以下で説明するように、トランザクションホスト102の特権モードとユーザモードの両方でトランザクションホスト102が第1の周辺機器104aにアクセスすることを可能にし、トランザクションホスト102のユーザモードではトランザクションホスト102が周辺機器104b,104c...104nにアクセスすることを禁止する)。そして、
(b)第2の周辺機器104bに関連するタスクを開始するために(トランザクションホスト102の動作モードにかかわらず)、トランザクションホスト102は、AC識別子112bを0にプログラムし、AC識別子112a,112c...112nを1にプログラムすることができる(以下で説明するように、トランザクションホスト102の特権モードとユーザモードの両方でトランザクションホスト102が第2の周辺機器104bにアクセスすることを可能にし、トランザクションホスト102のユーザモードではトランザクションホスト102が周辺機器104a,104c...104nにアクセスすることを禁止する)。
【0078】
第2の例では、特定の周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、(a)特定の周辺機器104a~104nに対応するそれぞれのアクセス制御識別子112a~112nの現在の値、及び(b)トランザクションホスト102の動作モード(特権モード又はユーザモード)を示す動作モード信号120に基づいて、特定の周辺機器104a~104nにアクセスするためのアクセス決定を行う。例えば、第1の周辺機器104aに関連付けられた第1のアクセスコントローラ106aがトランザクションホスト102から第1の周辺機器104aにアクセスするためのアクセス要求を受信すると、第1のアクセスコントローラ106aは、(a)第1の周辺機器104aに対応するAC識別子112a及び(b)動作モード信号120にアクセスし、表2によって定義されたスキームに基づいて、トランザクションホスト102が第1の周辺機器104aにアクセスすることを可能にするかどうかを決定する。特に、第1のアクセスコントローラ106aは、(a)AC_ID値=1(制限付きアクセス設定)及び(b)動作モード信号値=0(ユーザモード)の両方でない限り、トランザクションホスト102が第1の周辺機器104aにアクセスすることを可能にすることを決定する。
【0079】
上記で説明した第2の例のスキームによれば、例示的な1つのインスタンスでは、トランザクションホスト102は、第1の周辺機器104aに関連するユーザモードタスクを開始することができ、したがって、そのようなタスクを開始するようにAC識別子112aを0にプログラムすることができる。第1のアクセスコントローラ106aが、第1の周辺機器104aにアクセスする要求を第1の周辺機器デバイスドライバから受信した場合、第1のアクセスコントローラ106aは、(a)AC識別子112aにアクセスし、(b)動作モード信号120にアクセスし、(c)動作モード信号120がユーザモード(動作モード信号値=0)又は特権モード(動作モード信号値=1)のいずれかを示す場合、第1の周辺機器デバイスドライバが第1の周辺機器104aにアクセスすることを許可し、そうでない場合には第1の周辺機器デバイスドライバが第1の周辺機器104aにアクセスするのを禁止するようにアクセス決定を実行し、(d)アクセス決定に基づいて、第1の周辺機器デバイスドライバが第1の周辺機器104aにアクセスすることを許可又は禁止してもよい。
【0080】
別の例示的なインスタンスでは、トランザクションホスト102は、第2の周辺機器104bに関連するユーザモードタスクを、第2の周辺機器104bに対応する第2の周辺機器ドライバを使用して開始することができ、したがって、AC識別子112bを0にプログラム(すなわち、第2の周辺機器104bへのオープンアクセスを)してもよく、AC識別子112aを1にプログラム(すなわち、第1の周辺機器104aへのアクセスを制限)してもよい。第1のアクセスコントローラ106aが、第1の周辺機器104aにアクセスする要求を第2の周辺機器デバイスドライバから受信した場合、第1のアクセスコントローラ106aは、(a)AC識別子112aにアクセスし、(b)動作モード信号120にアクセスし、(c)第2の周辺機器デバイスドライバによって第1の周辺機器104aに対して許可又は禁止するためのアクセス決定を実行し、特に、動作モード信号120が特権モードを示す場合(動作モード信号値=1)、アクセスを可能にすると決定し、動作モード信号120がユーザモードを示す場合(動作モード信号値=0)、アクセスを禁止すると決定し、(d)アクセス決定に基づいて、第2の周辺機器デバイスドライバアクセスによる第1の周辺機器104aへのアクセスを許可又は禁止してもよい。
【0081】
図1に示すように、それぞれのアクセスコントローラ106a~106nは、入力として、(a)それぞれの周辺機器104a~104nに対するアクセス要求(ACR)、(b)それぞれのAC識別子112a~112n、及び(任意選択で)(c)動作モード信号120を受信し、受信した入力を処理して、それぞれの周辺機器104a~104nに対するアクセス決定を行うことができる。簡単にするために、アクセス要求(
図1~
図2に示すACR及び
図3に示すTH_id)及び任意選択の動作モード信号(
図1~
図2の120及び
図3の120a~120n)は、
図1~
図3では、アクセスコントローラ106aのみに送信されるものとして示されている。アクセス要求及び任意選択の動作モード信号は、それぞれのアクセスコントローラ106b~106nに関連する動作のために、アクセスコントローラ106b~106nに同様に送信され得ることを理解されたい。
【0082】
上述したように、いくつかの例では、例示的な電子デバイス100のそれぞれのアクセスコントローラ106a~106nは、メモリ107(例えば、ROM)に記憶されたそれぞれのルックアップテーブル(LUT)を含む(又はアクセスする)ことができ、ルックアップテーブル(LUT)は、各AC_ID値に対するそれぞれのアクセス決定を(例えば、上記の表1によって定義されたスキームに従って)定義するか、又はAC_ID値と動作モード信号値との各組合せに対するそれぞれのアクセス決定を(例えば、上記の表2によって定義されたスキームに従って)定義する。他の例では、例えば、以下で説明する
図4A及び
図4Bに示すように、それぞれのアクセスコントローラ106a~106nは、1つ以上の論理ゲート、例えば、NOTゲート(例えば、上記の表1によって定義されるスキームを実施する)又はNOTゲート及びORゲート(例えば、上記の表2によって定義されるスキームを実施する)を含む論理回路108のインスタンスを備えることができる。
【0083】
いくつかの例では、電子デバイス100は、例えばトランザクションホストの動作モードに基づいて、及び/又はアクセスのために選択されたそれぞれの周辺機器104a~104n(本明細書ではアクセス要求された周辺機器104a~104nと呼ぶ)に基づいて、例えばそれぞれの周辺機器104a~104nに関連するタスクを開始するために、1つ、いくつか、又は全てのAC識別子112a~112nを動的にプログラムするために、トランザクションホスト102によって実行可能なAC識別子プログラミングファームウェアを含むことができる。加えて、いくつかの例では、
図2を参照して後述するように、アクセス制御レジスタ110は専用周辺機器に設けられ、これは(周辺機器104a~104nのように)それぞれのアクセスコントローラによってアクセス制御されてもよく、例えば、AC識別子プログラミングファームウェアは、トランザクションホスト102の特権モードにおいてのみアクセス制御レジスタ110にアクセスすることができ(例えば、AC識別子112a~112nをプログラムするために)、トランザクションホスト102のユーザモードではアクセス制御レジスタ110にアクセスすることができない。
【0084】
図2は、一例による、
図1の電子デバイス(例えば、SoC)100の追加の特徴及び態様を示す。上述したように、電子デバイス100は、トランザクションホスト102と、周辺機器104a~104nと、アクセスコントローラ106a~106nと、アクセス制御識別子112a~112nを記憶するアクセス制御レジスタ110とを含む。電子デバイス100の構成要素は、任意の1つ又は複数のタイプの通信リンク114、例えば、バス、ワイヤ、又は他のタイプのリンクによって互いに通信可能に接続され得る。上述したように、それぞれのアクセスコントローラ106a~106nは、それぞれのアクセス制御識別子112a~112n(及び任意選択で追加の入力データ)を利用して、例えばトランザクションホスト102の動作モード(例えば特権モード又はユーザモード)に基づいて、及び/又はアクセス要求された周辺機器104a~104n(すなわち、アクセスが要求された周辺機器104a~104n)に基づいて、それぞれの周辺機器104a~104nへのアクセスを制御する。アクセスコントローラ106a~106nは、例えば、上記で説明した表1又は表2に示すアクセス制御識別子スキームを使用して、上記で説明した様々な例示的スキームのいずれかを実施することができる。
【0085】
図2に示されるように、アクセス制御識別子112a~112nを含むアクセス制御レジスタ110は、専用周辺機器104acに提供されてもよく、対応するアクセスコントローラ106acは、例えば、周辺機器104a~102nへのアクセスをそれぞれ制御するアクセスコントローラ106a~106nと同様に、周辺機器104acへのアクセスを制御するために提供されてもよい。例えば、アクセスコントローラ106acは、トランザクションホスト102からの動作モード信号120及び(任意選択で)それぞれのAC識別子112acに基づいて、周辺機器104acへのアクセスを制御することができる。いくつかの例では、アクセスコントローラ106acは、トランザクションホスト102からの動作モード信号120に基づいて周辺機器104acへのアクセスを制御してもよい。他の例では、アクセスコントローラ106acは、例えば、それぞれのAC識別子112ac及び/又は動作モード信号120に基づいて、上記で説明した表1又は表2に示すようなアクセス制御識別子スキームを使用して、アクセスコントローラ106a~106nと同様に動作し得る。
【0086】
図2に示すように、電子デバイス100はまた、様々なファームウェア及び他のデータを記憶する非一時的メモリ202を含んでもよい。非一時的メモリ202(メモリ202とも呼ばれる)は、1つ以上の読取り専用メモリ(ROM)、例えば、フラッシュROM、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、又は任意の他の適切なタイプ(単数又は複数)及びいくつかのメモリデバイス(単数又は複数)を含み得る。
【0087】
図示のように、メモリ202は、特権セクション202a及び非特権セクション(又はユーザセクション)202bを含むことができる。非特権セクション202bは、例えば、ファームウェア、例えば、それぞれの周辺機器104a~104nに関連付けられたデバイスドライバ、及び/又は他のユーザ空間ファームウェアにおいて具現化されたコンピュータ可読ユーザ空間コード208を記憶することができる。ユーザ空間コード(例えば、ユーザ空間ファームウェア)208は、選択されたリソース(例えば、周辺機器104a~104nのうちの選択されたもの)のみへのアクセスを必要とする、又は利用することができる機能を含んでもよい。例えば、ユーザ空間コード208は、例えば、それぞれの周辺機器104a~104nに設けられたそれぞれのレジスタ214a~214nに記憶されたデータにアクセスするために、選択された周辺機器104a~104nへのアクセスを必要とする又は利用することができるそれぞれのタスク220a~220nを含むデバイスドライバ又は他のファームウェアを含んでもよい。したがって、従来はスーパーバイザファームウェアとして動作するデバイスドライバは、選択されたリソース(例えば、選択された周辺機器104a~104n)のみへのアクセスを有するユーザ空間ファームウェアとして動作されてもよく、それによって、本明細書で説明されるようなセキュリティの向上を提供する。
【0088】
特権セクション202aは、スーパーバイザコード(例えば、スーパーバイザファームウェア)206及びビットマスクデータ構造230を記憶することができる。ビットマスクデータ構造230は、タスク230a~230nにそれぞれ対応するビットマスク232a~232nを含むことができ、それぞれのタスク230nのそれぞれのビットマスク232nは、それぞれの周辺機器104a~104nのそれぞれのアクセス設定を示し、例えば、それぞれのタスク230nがそれぞれの周辺機器104a~104nへの周辺機器アクセス許可を割り当てられているかどうかを示す。例えば、
図2を参照すると、「タスク1」220aに対応するタスク1ビットマスク232aは、「タスク1」220aが第1の周辺機器104aに周辺機器アクセス許可を割り当てられるが、第2の周辺機器104bには割り当てられないことを示すことができ、「タスク2」220bに対応するタスク2ビットマスク232bは、「タスク2」220bが第2の周辺機器104bに周辺機器アクセス許可を割り当てられるが、第1の周辺機器104aには割り当てられないことを示すことができる。
【0089】
いくつかの例では、それぞれのタスク220a~220nのためのそれぞれのビットマスク232a~232nは、それぞれのタスク220a~220nが周辺機器104a~104nのそれぞれに周辺機器アクセス許可を割り当てられているかどうかを示す1ビット若しくは複数ビット(本明細書では「ビットマスクビット」とも呼ばれる)又は他のデータを含み得る。例えば、「タスク1」220aに対応するタスク1ビットマスク232aは、「タスク1」220aが第1の周辺機器104aへの周辺機器アクセス許可を割り当てられていることを示す1つ以上の第1のビットマスクビット又は他のデータと、「タスク1」220aが第2の周辺機器104bへの周辺機器アクセス許可を割り当てられていないことを示す1つ以上の第2のビットマスクビット又は他のデータとを含み得る。
【0090】
スーパーバイザコード(例えば、スーパーバイザファームウェア)206は、スケジューラ212及びアクセス制御識別子管理命令214を含んでもよい。スケジューラ212は、例えば、タスク220a~220nを含むユーザ空間コード(例えば、ユーザ空間ファームウェア)208の実行を管理するために、トランザクションホスト102によって実行される。アクセス制御識別子管理命令214は、(a)ビットマスク232a~232nにアクセスし、(b)実行されるそれぞれのタスク220a~220nに対応するそれぞれのビットマスク232a~232nに基づいて、アクセス制御レジスタ110内のアクセス制御識別子112a~112nの値をプログラムするトランザクションホスト102によって実行可能である。いくつかの例、例えば、上述の第1の例示的なアクセス制御識別子スキーム(表1参照)の特定の実装形態では、トランザクションホスト102は、ビットマスク232a~232nをユーザモード動作(例えば、それぞれのタスク220a~220nをユーザモードで実行する)に利用してもよいが、特権モード動作(例えば、それぞれのタスク220a~220nを特権モードで実行する)には利用しなくてもよい。(第1の例示的なアクセス制御識別子スキーム(表1に示す)の他の実装形態では、トランザクションホスト102は、ユーザモード動作と特権モード動作の両方のためにビットマスク232a~232nを利用することができる)。
【0091】
例えば、「タスク1」220aを実行する前に、トランザクションホスト102は、アクセス制御識別子管理命令214を実行して、タスク1ビットマスク232aに基づいて、及び/又はトランザクションホスト102の動作モード(例えば、特権モード又はユーザモード)に基づいて、アクセス制御レジスタ110内のアクセス制御識別子112a~112nの値をプログラムすることができる。上記で説明した第1の例示的なアクセス制御識別子スキーム(表1参照)及び上記で説明した第2の例示的なアクセス制御識別子スキーム(表2参照)の両方の下での例示的な実装形態が提供される。
【0092】
実施例1:第1の例示的なアクセス制御識別子スキーム(表1)。上述の第1の例示的なアクセス制御識別子スキーム(表1参照)の下では、トランザクションホスト102は、ユーザモードで「タスク1」220aを実行するためにタスク1ビットマスク232aを利用することができるが、特権モードで「タスク1」220aを実行するためには利用することができない。例えば、ユーザモードで「タスク1」220aを実行する前に、トランザクションホスト102は、アクセス制御識別子管理命令214を実行して、(a)「タスク1」220aがトランザクションホスト102のユーザモードで実行されることを識別し、(b)「タスク1」220aが第2の周辺機器104bではなく、第1の周辺機器104aへの周辺機器アクセス許可を割り当てられていることを示す第1のビットマスク232aにアクセスし、(c)第1のビットマスク232a及び現在の動作モード(ユーザモード)に基づいて、「タスク1」220aのユーザモード実行中に第1の周辺機器104aへのアクセスを可能にするアクセス許可値(AC_ID値=0)に、第1のアクセス制御識別子112aをプログラムし、(b)「タスク1」220aのユーザモード実行中に、第2の周辺機器104bへのアクセスを禁止するアクセス禁止値(AC_ID値=0)に、第2のアクセス制御識別子112bをプログラムすることができる。対照的に、(上記の表1に示される第1の例示的なアクセス制御識別子スキームの下で)特権モードで「タスク1」220aを実行する前に、トランザクションホスト102は、アクセス制御識別子管理命令214を実行して、第1のアクセス制御識別子112a及び第2のアクセス制御識別子112bの両方を、「タスク1」220aの特権モード実行中に、第1の周辺機器104a及び第2の周辺機器104bの両方へのアクセスを可能にするアクセス許可値(AC_ID値=0)に、プログラムすることができる。この状況では、トランザクションホスト102は、全ての周辺機器104a~104nが特権モード動作のためにアクセス可能であるため、タスク1ビットマスク232aを無視することができる。
【0093】
上述したように、第1の例示的なアクセス制御識別子スキーム(表1に示す)を利用する他の例では、トランザクションホスト102は、ユーザモード動作と特権モード動作の両方のためにビットマスク232a~232nを利用することができる。
【0094】
実施例2:第2の例示的なアクセス制御識別子スキーム(表2)。上述の第2の例示的なアクセス制御識別子スキーム(表2参照)の下では、(ユーザモード又は特権モードのいずれかで)「タスク1」220aを実行する前に、トランザクションホスト102は、(a)トランザクションホスト102の特権モード及びユーザモードの両方で第1の周辺機器104aへのアクセスを可能にする第1の周辺機器104a用のオープンアクセス設定(AC_ID値=0)に、第1のアクセス制御識別子112aをプログラムし、(b)トランザクションホスト102の特権モードでは第2の周辺機器104bへのアクセスを可能にするが、ユーザモードでは許可しない第2の周辺機器104b用の制限付きアクセス設定(AC_ID値=1)に、第2のアクセス制御識別子112bをプログラムするために、制御ビット管理命令214を実行することができる。
【0095】
図3は、一例による、周辺機器へのアクセスを制御するためにプログラマブルアクセス制御識別子を利用する別の例示的な電子デバイス300を示す。電子デバイス300は、概して、上述の例示的な電子デバイス100と同様であってもよいが、周辺機器104a~104n及び104ac、アクセスコントローラ106a~106n及び106ac、並びにアクセス制御識別子112を記憶する周辺機器104ac内のアクセス制御レジスタ110に加えて、複数のトランザクションホスト102a~102nを含む。電子デバイス100の構成要素は、任意の1つ又は複数のタイプの通信リンク114、例えば、バス、ワイヤ、又は他のタイプのリンクによって互いに通信可能に接続され得る。
【0096】
それぞれのアクセスコントローラ106a~106n及び106acは、それぞれのアクセス制御識別子112(及び任意選択で追加の入力データ)を利用して、例えば、(a)アクセス要求された周辺機器104a~104n、(b)アクセス要求された周辺機器104a~104nへのアクセスを要求するそれぞれのトランザクションホスト102a~102n(本明細書ではアクセス要求トランザクションホスト102a~102nと呼ぶ)、及び(b)アクセス要求トランザクションホスト102a~102nの動作モード信号120a~120n(例えば、特権モード又はユーザモード)に基づいて、それぞれの周辺機器104a~104n及び104acへのアクセスを制御することができる。
【0097】
アクセス制御レジスタ110は、それぞれのトランザクションホスト102a~102nのそれぞれのAC識別子112のセットを含むAC識別子アレイ113を記憶することができ、それぞれのトランザクションホスト102a~102nのAC識別子112のセットは、それぞれの周辺機器104a~104n及び(任意選択で)周辺機器104acのそれぞれのAC識別子112を含む。以下の表3は、複数のトランザクションホスト102a~102n並びに複数の周辺機器104a~104n及び104acの例示的なAC識別子アレイ113を示す。
【0098】
表3.例示的なAC識別子アレイ113は、複数のトランザクションホスト102a~102n並びに複数の周辺機器104a~104n及び104acを含む、例えば電子デバイス300である。
【表3】
【0099】
AC識別子アレイ113内のAC識別子112の値は、それぞれのトランザクションホスト102a~102nによるそれぞれの周辺機器104a~104n及び104acへのアクセスを決定するために、それぞれのアクセスコントローラ106a~106n及び106acによって使用され得る。
【0100】
一例では、AC識別子アレイ113内のAC識別子112の値は、例えば、表1に関して上記で説明したように、アクセス許可ステータス(AC_ID値=0)又はアクセス禁止ステータス(AC_ID値=1)を示し得る。そのような例では、アクセス要求トランザクションホスト102a~102nが、アクセス要求された周辺機器104a~104n又は104acにアクセスしようと試みるとき、アクセス要求された周辺機器104a~104n又は104acに対応するアクセスコントローラ106a~106n又は106acは、(a)アクセス要求トランザクションホスト102a~102nからトランザクションホスト識別子(TH_id)を含むアクセス要求を受信し、(b)アクセス制御レジスタ110に記憶されたAC識別子アレイ113から、アクセス要求トランザクションホスト102a~102n(受信したTH_idに基づく)及びアクセス要求された周辺機器104a~104n又は104acに対応するAC識別子112の値を識別し、(c)識別されたAC識別子112に基づいて、アクセス要求トランザクションホスト102a~102nによるアクセス要求された周辺機器104a~104n又は104acへのアクセスを許可又は禁止するアクセス決定を実行し(すなわち、AC_ID値=0であればアクセスを許可し、AC_ID値=1であればアクセスを禁止する)、(d)アクセス決定に基づいて、アクセス要求された周辺機器104a~104n又は104acへのアクセスを許可又は禁止することができる。
【0101】
別の例では、AC識別子アレイ113内のAC識別子112の値は、例えば、表2に関して上記で説明したように、オープンアクセスステータス(AC_ID値=0)又は制限付きアクセスステータス(AC_ID値=1)を示し得る。そのような例では、アクセス要求トランザクションホスト102a~102nが、アクセス要求された周辺機器104a~104n又は104acにアクセスしようと試みるとき、アクセス要求された周辺機器104a~104n又は104acに対応するアクセスコントローラ106a~106n又は106acは、(a)アクセス要求トランザクションホスト102a~102nからTH_idを含むアクセス要求を受信し、(b)アクセス要求トランザクションホスト102a~102nから、アクセス要求トランザクションホスト102a~102nの動作モード(特権モード又はユーザモード)を示すそれぞれの動作モード信号120a~120nを受信し、(c)アクセス制御レジスタ110に記憶されたAC識別子アレイ113から、(受信したTH_idに基づいて)アクセス要求トランザクションホスト102a~102n及びアクセス要求された周辺機器104a~104n又は104acに対応するAC識別子112の値を識別し、(d)識別されたAC識別子112の値及びアクセス要求トランザクションホスト102a~102nの動作モードに基づいて、例えば表2に関して上記で説明したスキームに従って、アクセス要求トランザクションホスト102a~102nによるアクセス要求された周辺機器104a~104n又は104acへのアクセスを許可又は禁止するためのアクセス決定を実行し、(e)アクセス決定に基づいて、アクセス要求された周辺機器104a~104n又は104acへのアクセスを許可又は禁止することができる。
【0102】
上記で説明したように、いくつかの例では、例示的な電子デバイス100のそれぞれのアクセスコントローラ106a~106nは、上記の表1又は表2によって定義されるアクセス決定スキームを実施するために、ルックアップテーブル(LUT)を記憶するメモリ107のそれぞれのインスタンスを含み得るか、又は代替的に、論理回路108のそれぞれのインスタンスを含み得る。
【0103】
後者に関して、
図4A~
図4Dは、いくつかの例による、それぞれのアクセスコントローラ106a~106n(及び任意選択で、アクセスコントローラ106ac)内に提供される例示的論理回路108の回路図を示す。
【0104】
まず、
図4A及び
図4Bは、1つのトランザクションホスト102を含む例示的な電子デバイス(例えば、
図1及び
図2に示される例示的な電子デバイス100)の例示的な論理回路108を示す。
【0105】
図4Aは、上記で説明した第1の例による、すなわち、上記の表1に示すアクセス制御識別子スキームを実施する例示的な論理回路108aを示す。論理回路108aは、それぞれのアクセス制御識別子112の値を反転し、アクセス決定を定義する値を出力するNOTゲート(又はインバータ)402を含む。
【0106】
図4Bは、上記で説明した第2の例による、すなわち、上記の表2に示すアクセス制御識別子スキームを実施する、例示的な論理回路108bを示す。論理回路108bは、それぞれのアクセス制御識別子112の値を反転するNOTゲート(又はインバータ)402と、動作モード信号120と共にNOTゲート402によって出力された値を処理し、アクセス決定を定義する値を出力するORゲート404とを含む。
【0107】
次に、
図4C及び
図4Dは、複数のトランザクションホスト102を含む例示的な電子デバイス、例えば、
図3に示される例示的な電子デバイス300のための例示的な論理回路108を示す。
【0108】
図4Cは、上述の第1の例による、すなわち、複数のトランザクションホスト102を用いて、上記の表1に示されるアクセス制御識別子スキームを実施する、例示的な論理回路108cを示す。論理回路108cは、(a)それぞれのトランザクションホスト102に対するAC識別子112の値と、(b)それぞれの周辺機器104へのアクセスを要求するそれぞれのトランザクションホスト102を識別するアクセス要求識別子(TH_id)とを受信し、アクセス要求識別子(TH_id)に応答してそれぞれのトランザクションホスト102に関連付けられたそれぞれのAC識別子112の値を選択するマルチプレクサ(MUX)406を含み、選択されたAC_ID値は、AC_ID値を反転するNOTゲート(又はインバータ)402に転送され、アクセス決定を定義する値を出力する。
【0109】
他の例では、表1、表2、及び/又は表3に記載された例示的なAC_ID値の意味は逆にされ得、例えば、AC_ID=0は、アクセス禁止又は制限アクセス設定を示し、AC_ID=1は、アクセス許可又はオープンアクセス設定を示す。そのような例では、NOTゲート(インバータ)402は、
図4A~
図4Dに示される論理回路108a~108dから省略され得る。
【0110】
図4Dは、上記で説明した第2の例による、すなわち、上記の表2に示すアクセス制御識別子スキームを実施する、例示的な論理回路108dを示す。論理回路108dは、(a)それぞれのトランザクションホスト102に対するAC識別子112の値と、(b)それぞれの周辺機器104へのアクセスを要求するそれぞれのトランザクションホスト102を識別するアクセス要求識別子(TH_id)とを受信し、アクセス要求識別子(TH_id)に応答してそれぞれのトランザクションホスト102に関連付けられたそれぞれのAC識別子112の値を選択するマルチプレクサ(MUX)406を含み、選択されたAC_ID値は、AC_ID値を反転するNOTゲート402に転送される。論理回路108dは、それぞれのトランザクションホスト102の動作モード信号120と共にNOTゲート402によって出力された値を処理し、アクセス決定を定義する値を出力するORゲート404を更に含む。
【0111】
図5は、トランザクションホスト、第1の周辺機器、第2の周辺機器、及びアクセス制御レジスタを含む電子デバイス内の周辺機器へのアクセスを制御するための例示的な方法500のフローチャートである。いくつかの例では、電子デバイスは、上述した例示的な電子デバイス100又は電子デバイス300であってもよい。502において、第1の周辺機器用の第1のアクセス制御識別子及び第2の周辺機器用の第2のアクセス制御識別子が、アクセス制御レジスタに記憶される。例えば、第1のアクセス制御識別子及び第2のアクセス制御識別子は、それぞれのタスク(例えば、デバイスドライバタスク)を実行する前に、例えば、トランザクションホストの動作モードに基づいて、及び/又はそれぞれのタスクを実行するためにアクセスされるそれぞれの周辺機器(例えば、第1の周辺機器、第2の周辺機器、又は別の周辺機器)に基づいて、トランザクションホストによってプログラムされてもよい。
【0112】
504において、それぞれのタスクの実行中に、第1の周辺機器に関連付けられた第1のアクセスコントローラは、第1の周辺機器へのアクセスを求める要求をトランザクションホストから受信する。例えば、トランザクションホストは、第1の周辺機器に対応するデバイスドライバタスクを実行していてもよい。いくつかの例では、トランザクションホストからのアクセス要求は、トランザクションホストの特権モード又はユーザモードを示す動作モード信号を任意選択的に含む。
【0113】
506において、第1のアクセスコントローラは、アクセス制御レジスタから第1の周辺機器用の第1のアクセス制御識別子にアクセスする。508において、第1のアクセスコントローラは、例えば、メモリに記憶されたそれぞれのLUTを使用して、又は例えば、
図4A~
図4Dのいずれかに示されるようなそれぞれの論理回路を使用して、少なくとも第1の周辺機器のためのアクセスされた第1のアクセス制御識別子に基づいて、トランザクションホストによる第1の周辺機器へのアクセスを交互に許可又は禁止するために、アクセス決定を実行する。例えば、第1のアクセスコントローラは、表1に関して上記で説明したアクセス制御識別子スキームに従ってアクセス決定を実行することができる。いくつかの例では、第1のアクセスコントローラはまた、アクセス決定のための別の入力として、随意に受信された動作モード信号(上記の504を参照)を使用し得る。例えば、第1のアクセスコントローラは、第1のアクセス制御識別子と、オプションの動作モード信号によって示される動作モードと、に基づいて、表2に関して上記で説明されたアクセス制御識別子スキームに従ってアクセス決定を実行し得る。
【0114】
510において、第1のアクセスコントローラは、アクセス決定に基づいて第1の周辺機器へのアクセスを許可又は禁止する。例えば、第1の周辺機器へのアクセスを禁止するために、第1のアクセスコントローラは、第1の周辺機器がトランザクションを無視するように、要求されたトランザクションに関連付けられた「チップ選択」信号(「周辺機器選択」信号とも呼ばれる)を、値=1(第1の周辺機器がターゲットにされる/選択されることを示す)から値=0(第1の周辺機器がターゲットにされない/選択されないことを示す)に強制することができる。代替として、第1の周辺機器へのアクセスを可能にするために、第1のアクセスコントローラは、第1の周辺機器がトランザクションを処理するように、チップ選択信号値を変更しないままにする(値=1)か、又は要求されたトランザクションに関連付けられたチップ選択信号を値=0から値=1に強制することができる。(代替例では、それぞれの周辺機器がターゲットにされる/選択されるかどうかを示すために、他のチップ選択信号値が定義され得る。例えば、システムは、チップ選択信号値=0が周辺機器がターゲットにされる/選択されていることを示し、チップ選択信号値=1が周辺機器がターゲットにされない/選択されていないことを示すと定義することができる。)
【0115】
図6は、トランザクションホストと、複数の周辺機器と、複数の周辺機器のそれぞれのアクセス制御識別子(AC識別子)を記憶するアクセス制御レジスタとを含む、電子デバイス内の周辺機器へのアクセスを制御するための例示的な方法600のフローチャートである。いくつかの例では、電子デバイスは、上記で説明した例示的な電子デバイス100又は電子デバイス300であり得、方法600は、表1に関して上記で説明したアクセス制御識別子スキームに対応し得る。
【0116】
602において、トランザクションホストは、例えばトランザクションホストの計画された動作に基づいて、複数の周辺機器のAC識別子をプログラムする。この例では、特権モード動作の場合、トランザクションホストは、それぞれの周辺機器のAC識別子を、トランザクションホストによるそれぞれの周辺機器へのアクセスを可能にするアクセス許可設定(AC_ID値=0)に設定する。いくつかの例では、トランザクションホストは、AC識別子にアクセスしてプログラムするために、スーパーバイザファームウェア内に提供されるアクセス制御識別子管理命令を実行することができる。いくつかの例では、トランザクションホストは、全ての周辺機器が特権モード動作中にアクセス可能であるため、特権モード動作のためにAC識別子を設定するときにビットマスクを無視することができる。
【0117】
604において、トランザクションホストは、例えば、関連するスーパーバイザコード、例えば、スーパーバイザファームウェアを実行することによって、特権モードで動作する。606において、トランザクションホストが特権モードで動作している間、複数の周辺機器のうちのそれぞれの周辺機器に対応するそれぞれのアクセスコントローラは、それぞれの周辺機器に対するそれぞれのAC識別子のアクセス許可設定(AC_ID値=0)に基づいて、例えば、
図4A(単一トランザクションホストシナリオ)又は
図4C(複数トランザクションホストシナリオ)に示すように、例えば、メモリに記憶されたそれぞれのLUTを使用して、又はそれぞれの論理回路を使用して、それぞれの周辺機器へのアクセスを可能にする。
【0118】
608において、トランザクションホストが特権モード(AC識別子が0にプログラムされている)で動作している間、トランザクションホストによって実行されるスーパーバイザファームウェアは、ユーザモードで実行されるべき選択された周辺機器(「周辺機器N」)に関連するそれぞれのタスクを識別する。610において、周辺機器Nに関連するそれぞれのタスクを実行する前に、トランザクションホストは、それぞれのタスクに関連付けられたそれぞれのビットマスクにアクセスし、それぞれのビットマスクは、それぞれのタスクを実行するための複数の周辺機器(周辺機器Nを含む)のアクセス設定を示し、それぞれのビットマスクに基づいて複数の周辺機器のAC識別子をプログラムする。この例では、トランザクションホストは、(a)周辺機器NのAC識別子を、それぞれのタスクのユーザモード実行中に、周辺機器Nへのアクセスを可能にするアクセス許可設定(AC_ID値=0)にプログラムし、(b)複数の周辺機器のうちの他の周辺機器のAC識別子を、それぞれのタスクのユーザモード実行中に、各それぞれの周辺機器へのアクセスを禁止するアクセス禁止設定(AC_ID値=1)にプログラムする。
【0119】
612において、トランザクションホストは、特権モードからユーザモードに遷移し、周辺機器Nに関連するそれぞれのタスクを実行する。614において、周辺機器Nに関連するそれぞれのタスクを実行するように、周辺機器Nに対応するアクセスコントローラは、(それぞれのタスクに関連付けられたそれぞれのビットマスクに基づいてプログラムされた)周辺機器NのAC識別子のアクセス許可設定(AC_ID値=0)に基づいて、例えば
図4A(単一トランザクションホストシナリオ)又は
図4C(複数トランザクションホストシナリオ)に示すように、例えばメモリに記憶されたそれぞれのLUTを使用して、又はそれぞれの論理回路を使用して、周辺機器Nへのアクセス(例えば、周辺機器N内のレジスタへのアクセス)を可能にする。トランザクションホストが他の周辺機器のいずれかにアクセスしようと試みる場合、それぞれの他の周辺機器に対応するアクセスコントローラは、例えば、
図4A又は
図4Cに示すように、例えば、それぞれのLUT又は論理回路を使用して、他の周辺機器に対するそれぞれのAC識別子のアクセス禁止設定(AC_ID値=1)に基づいて、他の周辺機器へのアクセスを禁止する。
【0120】
616において、トランザクションホストは、周辺機器Nに関連するそれぞれのタスクを完了する。618において、トランザクションホストは、ユーザモードで実行する次のトランザクションホストアクティビティを識別することができる。例えば、620に示すように、トランザクションホストによって実行されるスーパーバイザファームウェアが、ユーザモードで実行される次の周辺機器関連タスク(同じ周辺機器又は別の周辺機器に関連する)を識別する場合、方法は610に戻ってもよく、トランザクションホストは、(例えば、次のタスクに関連付けられたそれぞれのビットマスクに基づいて)次のタスクを実行するために、それに応じてAC識別子をプログラムする。別の例として、622に示すように、トランザクションホストによって実行されるスーパーバイザファームウェアが、実行されるスーパーバイザ動作又は特権動作を識別する場合、方法は602に戻ることができ、トランザクションホストは、(任意選択で)複数の周辺機器のAC識別子をアクセス許可設定(AC_ID値=0)にプログラムして(例えば、それぞれのビットマスクを無視して)、上述したように、スーパーバイザ動作又は特権動作中にトランザクションホストによるそれぞれの周辺機器へのアクセスを可能にする。いくつかの例又は状況では、(スーパーバイザコードを実行するトランザクションホストが全てのレジスタへのアクセスを有し得るので)スーパーバイザ又は特権動作のためにAC識別子をプログラムすることは不必要であり得、したがって、602におけるAC識別子プログラミングは省略され得るか、又は任意選択であり得る。
【0121】
図7は、トランザクションホストと、複数の周辺機器と、複数の周辺機器のそれぞれのアクセス制御識別子(AC識別子)を記憶するアクセス制御レジスタとを含む、電子デバイス内の周辺機器へのアクセスを制御するための例示的な方法700のフローチャートである。いくつかの例では、電子デバイスは、上記で説明した例示的な電子デバイス100又は例示的な電子デバイス300であり得、方法700は、表2に関して上記で説明したアクセス制御識別子スキームに対応し得る。
【0122】
702において、トランザクションホストは、例えばトランザクションホストの計画された動作に基づいて、複数の周辺機器のAC識別子をプログラムする。この例では、特権モード動作の場合、トランザクションホストは、それぞれの周辺機器のAC識別子を制限付きアクセス設定(AC_ID値=1)に設定する。いくつかの例では、トランザクションホストは、AC識別子にアクセスしてプログラムするために、スーパーバイザファームウェア内に提供されるアクセス制御識別子管理命令を実行することができる。
【0123】
704において、トランザクションホストは、例えば、関連するスーパーバイザファームウェアを実行することによって、特権モードで動作する。706において、トランザクションホストが(AC識別子が1にプログラムされた)特権モードで動作している間、複数の周辺機器のうちのそれぞれの周辺機器に対応するそれぞれのアクセスコントローラは、例えば、
図4B(単一トランザクションホストシナリオ)又は
図4D(複数トランザクションホストシナリオ)に示すように、例えば、メモリに記憶されたそれぞれのLUTを使用して、又はそれぞれの論理回路を使用して、それぞれの周辺機器へのアクセスを可能にする。それぞれの周辺機器にアクセスするためのトランザクションホストによる各要求は、トランザクションホストの特権モードを示す動作モード信号(例えば、表2に示される制御ビットスキームによる動作モード信号値=1)を含んでもよい。それぞれの周辺機器にアクセスするためのトランザクションホストによるそれぞれの要求に対して、それぞれの周辺機器に対応するそれぞれのアクセスコントローラは、上記の表2に示される制御ビットスキームに従って、(a)それぞれの周辺機器及び(任意選択で複数のトランザクションホストシナリオにおいて)それぞれのトランザクションホストに対するそれぞれのAC識別子と、(b)特権モードを示す動作モード信号(例えば、動作モード信号値=1)とに基づいて、それぞれの周辺機器へのアクセスを可能にするか又は禁止するかを決定することができる。より詳細には、各アクセスコントローラは、各トランザクションホストの特権モード(例えば、動作モード信号値=1)に基づいて、各周辺機器へのアクセスを可能にする。
【0124】
708において、トランザクションホストが特権モードで動作している間、トランザクションホストによって実行されるスーパーバイザファームウェアは、ユーザモードにおける複数の周辺機器のうちの選択された周辺機器(「周辺機器N」)に関連して実行されるそれぞれのタスクを識別する。710において、周辺機器Nに関連するそれぞれのタスクをユーザモードで実行する前に、トランザクションホストは、それぞれのタスクに関連付けられたそれぞれのビットマスクにアクセスし、それぞれのビットマスクは、それぞれのタスクを実行するための複数の周辺機器(周辺機器Nを含む)のアクセス設定を示し、それぞれのビットマスクに基づいて、トランザクションホストに関連付けられた複数の周辺機器のAC識別子をプログラムする。この例では、トランザクションホストは、上記の表2に示す制御ビットスキームに従って、(a)周辺機器NのAC識別子をオープン許可設定(AC_ID値=0)にプログラムし、(b)トランザクションホストに関連付けられた複数の周辺機器のうちの他の周辺機器のAC識別子を制限付きアクセス設定(AC_ID値=1)にプログラムする。
【0125】
712において、トランザクションホストは、特権モードからユーザモードに遷移し、周辺機器Nに関連するそれぞれのタスクを実行する。714において、周辺機器Nに関連するそれぞれのタスクを実行するように、周辺機器Nに対応するアクセスコントローラは、(a)オープンアクセス設定(AC_ID値=0)に基づいて、例えば、
図4B(単一トランザクションホストシナリオ)又は
図4D(複数トランザクションホストシナリオ)に示すように、例えば、メモリに記憶されたそれぞれのLUTを使用して、又はそれぞれの論理回路を使用して、周辺機器Nへのアクセス(例えば、周辺機器N内のレジスタへのアクセス)を可能にする。トランザクションホストが他の周辺機器のいずれかにアクセスしようと試みる場合、他の周辺機器に対応するそれぞれのアクセスコントローラは、例えば、
図4B又は
図4Dに示されるように、例えば、それぞれのLUT又は論理回路を使用して、表2に従って、(a)制限付きアクセス設定(AC_ID値=1)及び(b)トランザクションホストのユーザモード(動作モード信号値=0)に基づいて、他の周辺機器へのアクセスを禁止する。
【0126】
716において、トランザクションホストは、ユーザモードにおいて周辺機器Nに関連するそれぞれのタスクを完了する。718において、トランザクションホストは、実行する次のトランザクションホストアクティビティを識別してもよい。例えば、720に示すように、トランザクションホストによって実行されるスーパーバイザファームウェアが、ユーザモードで実行される次の周辺機器関連タスク(同じ周辺機器又は別の周辺機器に関連する)を識別する場合、方法は710に戻ってもよく、トランザクションホストは、(例えば、次のタスクに関連付けられたそれぞれのビットマスクに基づいて)次のタスクを実行するために、それに応じてAC識別子をプログラムする。別の例として、722に示すように、トランザクションホストによって実行されるスーパーバイザファームウェアが、特権モードで実行されるスーパーバイザ動作又は特権動作を識別する場合、方法は702に戻ることができ、ここで、トランザクションホストは、上述のように、複数の周辺機器のAC識別子を制限付きアクセス設定(AC_ID値=1)にプログラムする。
【0127】
図8は、トランザクションホストと、第1の周辺機器と、第2の周辺機器と、それぞれのアクセス制御識別子(AC識別子)を記憶するアクセス制御レジスタと、を含む電子デバイス内の周辺機器へのアクセスを制御するための例示的な方法800のフローチャートである。いくつかの例では、電子デバイスは、上記で説明した例示的な電子デバイス100又は電子デバイス300であり得、方法800は、例えば、上記で説明した表1、表2、又は表3のいずれかに関して上記で説明したアクセス制御識別子スキームに対応し得る。
【0128】
802において、第1の周辺機器用の第1のアクセス制御識別子及び第2の周辺機器用の第2のアクセス制御識別子が、アクセス制御レジスタに記憶される。トランザクションホストは、異なるタイプの動作、例えば、第1及び第2の周辺機器に関連する動作を含む特権モード動作及びユーザモード動作を実行するために、第1のアクセス制御識別子及び第2のアクセス制御識別子を経時的に動的にプログラムすることができる。いくつかの例では、トランザクションホストは、スーパーバイザファームウェアにおいて提供されるアクセス制御識別子管理命令を実行して、それぞれのタスク(例えば、デバイスドライバタスク)を実行する前に、第1のアクセス制御識別子及び第2のアクセス制御識別子を動的にプログラムすることができる。
【0129】
例えば、804において、特権モード動作のために、トランザクションホストは、第1のアクセス制御識別子及び第2のアクセス制御識別子を設定して、それぞれ第1の周辺機器及び第2の周辺機器へのアクセスを可能にする。いくつかの例又は状況では、(スーパーバイザコードを実行するトランザクションホストが全てのレジスタへのアクセスを有し得るので)特権モード動作のためにAC識別子をプログラムすることは不必要であり得、したがって、804におけるAC識別子プログラミングは省略され得るか、又は任意選択であり得る。いくつかの例では、トランザクションホストは、上述の表1、表2、又は表3のいずれかに関して上述したようなアクセスビットスキームに従って第1及び第2のアクセス制御識別子を設定する。806において、トランザクションホストは、第1の時間に特権モード動作を実行し、したがって、806において、動作モード信号は特権モードを示す。
【0130】
808において、第1の周辺機器に関連するユーザモード動作(ユーザモードタスク)に対して、トランザクションホストは、ユーザモードタスクに関連付けられたそれぞれのビットマスクにアクセスし、ビットマスクは、少なくとも第1及び第2の周辺機器に対するアクセス設定を示し、それぞれのビットマスクに基づいて、少なくとも第1及び第2の周辺機器に対するAC識別子をプログラムする。この例では、トランザクションホストは、(a)ユーザモードのトランザクションホストによる第1の周辺機器へのアクセスを可能にするように第1のアクセス制御識別子を設定し、(b)ユーザモードのトランザクションホストによる第2の周辺機器へのアクセスを禁止するように第2のアクセス制御識別子を設定する。いくつかの例では、トランザクションホストは、上述の表1、表2、又は表3のいずれかに関して上述したようなアクセスビットスキームに従って第1及び第2のアクセス制御識別子を設定する。810において、トランザクションホストは、第2の時間に第1の周辺機器に関連するユーザモードタスクを実行し、したがって、810において、動作モード信号はユーザモードを示す。
【0131】
トランザクションホストは、異なるタイプの動作、例えば、第1及び第2の周辺機器に関連する動作を含む特権モード動作及びユーザモード動作を実行するために、このようにして経時的に第1のアクセス制御識別子及び第2のアクセス制御識別子を動的にプログラムし続けることができる。
【0132】
図9は、トランザクションホストと、第1の周辺機器と、第2の周辺機器と、第1の周辺機器用の第1のアクセス制御識別子及び第2の周辺機器用の第2のアクセス制御識別子を含むアクセス制御レジスタと、を含む電子デバイスにおいて、タスク関連ビットマスクを使用して周辺機器へのアクセスを制御するための例示的な方法900のフローチャートである。902において、第1の周辺機器に関連する第1のタスクと、第1のタスクに対応する第1のビットマスクと、を含むコンピュータ可読コードが記憶され、第1のビットマスクは、第1のタスクを実行するための第1の周辺機器及び第2の周辺機器のそれぞれのアクセス設定を示す。904において、トランザクションホストは、第1のタスクを実行する前に、アクセス制御識別子管理命令を実行して、(a)第1のタスクに対応する第1のビットマスク、及びいくつかの実装形態では(b)トランザクションホストの動作モードに基づいて、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子をプログラムする。906において、アクセス制御レジスタ内の第1のアクセス制御識別子及び第2のアクセス制御識別子を更新した後、トランザクションホストは、第1の周辺機器に関連する第1のタスクを実行する。908において、第1のタスクの実行中に、第1の周辺機器に関連付けられた第1のアクセスコントローラは、第1のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第1のアクセス制御識別子に少なくとも基づいて、第1の周辺機器へのアクセスを制御する。910において、やはり第1のタスクの実行中に、第1のビットマスクに基づいてプログラムされたアクセス制御レジスタ内の第2のアクセス制御識別子に少なくとも基づいて、第2の周辺機器に関連付けられた第2のアクセスコントローラが、第2の周辺機器へのアクセスを制御する。
【手続補正書】
【提出日】2024-03-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
電子デバイスであって、
第1の周辺機器と、
第2の周辺機器と、
非一時的メモリであって、
アクセス制御識別子管理命令を含むスーパーバイザファームウェアと、
前記第1の周辺機器に関連する第1のタスクを含むコンピュータ可読コードと、
前記第1のタスクに対応する第1のビットマスクであって、前記第1のビットマスクは、前記第1のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示す、第1のビットマスクと、を記憶する、非一時的メモリと、
前記第1の周辺機器用の第1のアクセス制御識別子と、前記第2の周辺機器用の第2のアクセス制御識別子と、を含むアクセス制御レジスタと、
トランザクションホストであって、
前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、前記スーパーバイザファームウェア内の前記アクセス制御識別子管理命令を実行し、
前記第1のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記第1の周辺機器に関連する前記第1のタスクを実行するための、トランザクションホストと、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器へのアクセスを制御するための第1のアクセスコントローラと、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第2のアクセス制御識別子に少なくとも基づいて、前記第2の周辺機器へのアクセスを制御するための第2のアクセスコントローラと、
を備える、電子デバイス。
【請求項2】
前記電子デバイスは、システムオンチップ(SoC)デバイスである、請求項1に記載の電子デバイス。
【請求項3】
前記トランザクションホストは、プロセッサ又はダイレクトメモリアクセス(DMA)エンジンを含む、請求項1又は2に記載の電子デバイス。
【請求項4】
前記第1のビットマスク及び前記第2のビットマスクは、前記非一時的メモリ内のビットマスクデータ構造に記憶される、請求項
1に記載の電子デバイス。
【請求項5】
前記第1のビットマスクは、前記第1のタスクを実行するための前記第1の周辺機器用のアクセス設定を示す1つ以上の第1のビットマスクビットと、前記第1のタスクを実行するための前記第2の周辺機器用のアクセス設定を示す1つ以上の第2のビットマスクビットと、を含み、
前記第1のアクセス制御識別子は、1つ以上の第1のアクセス制御ビットを含み、前記第2のアクセス制御識別子は、1つ以上の第2の第1のアクセス制御ビットを含む、請求項
1に記載の電子デバイス。
【請求項6】
前記コンピュータ可読コードは、前記第2の周辺機器に関連する第2のタスクを含み、
前記非一時的メモリは、前記第2のタスクに対応する第2のビットマスクを記憶し、前記第2のビットマスクは、前記第2のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示し、
前記トランザクションホストは、
前記第2のタスクに対応する前記第2のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、前記スーパーバイザファームウェア内の前記アクセス制御識別子管理命令を実行し、
前記第2のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記第2の周辺機器に関連する前記第2のタスクを実行する、請求項
1に記載の電子デバイス。
【請求項7】
前記非一時的メモリは、
前記第1のタスク及び前記第2のタスクを含む前記コンピュータ可読コードを記憶する非特権部分と、
前記アクセス制御識別子管理命令を含む前記スーパーバイザファームウェアと、前記第1のタスクに対応する前記第1のビットマスクと、を記憶する特権部分と、を含む、請求項
1に記載の電子デバイス。
【請求項8】
前記第1のアクセスコントローラは、
前記第1のタスクを実行するために、前記第1の周辺機器にアクセスするためのアクセス要求を前記トランザクションホストから受信し、
前記第1のタスクに対応する前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に対するアクセス決定を実行し、
前記アクセス決定に基づいて、前記トランザクションホストが前記第1の周辺機器にアクセスするのを許可又は禁止する、請求項
1に記載の電子デバイス。
【請求項9】
前記第1のアクセスコントローラは、(a)前記第1のタスクに対応する前記第1のビットマスクに基づいて前記トランザクションホストによってプログラムされた前記第1のアクセス制御識別子と、(b)前記トランザクションホストの特権モード又は前記トランザクションホストのユーザモードのいずれかを示す動作モード信号と、に少なくとも基づいて、前記第1の周辺機器に対する前記アクセス決定を実行する、請求項8に記載の電子デバイス。
【請求項10】
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられていること、及び(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていないことを示す、請求項
1に記載の電子デバイス。
【請求項11】
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記アクセス制御識別子管理命令は、前記第1のタスクの実行前に前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムし、これは、(a)前記第1のタスクの実行中に、前記第1のアクセス制御識別子を、前記第1の周辺機器へのアクセスを可能にするアクセス許可値に更新すること、及び(b)前記第1のタスクの実行中に、前記第2のアクセス制御識別子を、前記第2の周辺機器へのアクセスを禁止するアクセス禁止値に更新することを含み、
前記第1のアクセスコントローラは、前記第1のアクセス制御識別子の前記アクセス許可値に基づいて、前記第1のタスクの実行中に、前記第1の周辺機器へのアクセスを許可し、
前記第2のアクセスコントローラは、前記第2のアクセス制御識別子の前記アクセス禁止値に基づいて、前記第1のタスクの実行中に前記第2の周辺機器へのアクセスを禁止する、請求項10に記載の電子デバイス。
【請求項12】
前記トランザクションホストは、特権モード及びユーザモードで選択的に動作し、
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記アクセス制御識別子管理命令は、前記第1のタスクの実行前に前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムし、これは、(a)前記第1のアクセス制御識別子を、前記トランザクションホストの前記特権モード及び前記ユーザモードの両方において、前記第1の周辺機器へのアクセスを可能にする、前記第1の周辺機器のオープンアクセス設定に更新することと、(b)前記第2のアクセス制御識別子を、前記トランザクションホストの前記特権モードにおいて、前記第2の周辺機器へのアクセスを可能にするが、前記ユーザモードにおいて、前記第2の周辺機器へのアクセスを許可しない、前記第2の周辺機器の制限付きアクセス値に更新することと、を含む、請求項
1に記載の電子デバイス。
【請求項13】
前記アクセス制御レジスタは、第3の周辺機器内に提供される、請求項
1に記載の電子デバイス。
【請求項14】
方法であって、
トランザクションホスト、第1の周辺機器、第2の周辺機器、並びに前記第1の周辺機器用の第1のアクセス制御識別子及び前記第2の周辺機器用の第2のアクセス制御識別子を含むアクセス制御レジスタ、を含む電子デバイスにおいて、(a)前記第1の周辺機器に関連する第1のタスクを含むコンピュータ可読コードと、(b)前記第1のタスクに対応する第1のビットマスクであって、前記第1のビットマスクは、前記第1のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示す、第1のビットマスクと、を記憶するステップと、
前記トランザクションホストが、前記第1のタスクを実行する前に、前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、アクセス制御識別子管理命令を実行するステップと、
前記第1のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記トランザクションホストが、前記第1の周辺機器に関連する前記第1のタスクを実行するステップと、
前記第1のタスクの実行中に、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に関連付けられた第1のアクセスコントローラが、前記第1の周辺機器へのアクセスを制御するステップと、
前記第1のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第2のアクセス制御識別子に少なくとも基づいて、前記第2の周辺機器に関連付けられた第2のアクセスコントローラが、前記第2の周辺機器へのアクセスを制御するステップと、
を含む、方法。
【請求項15】
前記第2の周辺機器に関連する第2のタスクを含むコンピュータ可読コードを記憶するステップと、
前記第2のタスクに対応する第2のビットマスクを記憶するステップであって、前記第2のビットマスクは、前記第2のタスクを実行するための前記第1の周辺機器及び前記第2の周辺機器のそれぞれのアクセス設定を示す、ステップと、
前記トランザクションホストが、前記第2のタスクを実行する前に、前記第2のタスクに対応する前記第2のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムするために、前記アクセス制御識別子管理命令を実行するステップと、
前記第2のビットマスクに基づいて前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子を更新した後、前記トランザクションホストが、前記第2の周辺機器に関連する前記第2のタスクを実行するステップと、
前記第2のタスクの実行中に、
前記第2のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に関連付けられた前記第1のアクセスコントローラが、前記第1の周辺機器へのアクセスを制御するステップと、
前記第2のビットマスクに基づいてプログラムされた前記アクセス制御レジスタ内の前記第2のアクセス制御識別子に少なくとも基づいて、前記第2の周辺機器に関連付けられた前記第2のアクセスコントローラが、前記第2の周辺機器へのアクセスを制御するステップと、を含む、請求項14に記載の方法。
【請求項16】
前記第1のアクセスコントローラが、前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器へのアクセスを制御するステップは、
前記第1のアクセスコントローラが、前記第1のタスクを実行するために、前記第1の周辺機器にアクセスするためのアクセス要求を、前記トランザクションホストから受信するステップと、
前記第1のアクセスコントローラが、前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子に少なくとも基づいて、前記第1の周辺機器に対するアクセス決定を実行するステップと、
前記第1のアクセスコントローラが、前記アクセス決定に基づいて、前記トランザクションホストが前記第1の周辺機器にアクセスするのを許可又は禁止するステップと、を含む、請求項1
4に記載の方法。
【請求項17】
前記第1のアクセスコントローラが、(a)前記第1のビットマスクに基づいてプログラムされた前記第1のアクセス制御識別子と、(b)前記トランザクションホストの特権モード又は前記トランザクションホストのユーザモードのいずれかを示す動作モード信号とに、少なくとも基づいて、前記第1の周辺機器に対する前記アクセス決定を実行するステップを含む、請求項16に記載の方法。
【請求項18】
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムする前記アクセス制御識別子管理命令を実行するステップは、(a)前記第1のタスクの実行中に、前記第1のアクセス制御識別子を、前記第1の周辺機器へのアクセスを可能にするアクセス許可値に更新するステップ、及び(b)前記第1のタスクの実行中に、前記第2のアクセス制御識別子を、前記第2の周辺機器へのアクセスを禁止するアクセス禁止値に更新するステップを含み、
前記第1のタスクの実行中に、
前記第1の周辺機器に関連付けられた前記第1のアクセスコントローラが、前記第1のアクセス制御識別子の前記アクセス許可値に基づいて、前記第1の周辺機器へのアクセスを許可し、
前記第2の周辺機器に関連付けられた前記第2のアクセスコントローラが、前記第2のアクセス制御識別子の前記アクセス禁止値に基づいて、前記第2の周辺機器へのアクセスを禁止する、請求項1
4に記載の方法。
【請求項19】
前記トランザクションホストは、特権モード及びユーザモードで選択的に動作し、
前記第1のタスクに対応する前記第1のビットマスクは、(a)前記第1のタスクが前記第1の周辺機器に対する周辺機器アクセス許可を割り当てられており、(b)前記第1のタスクが前記第2の周辺機器に対する周辺機器アクセス許可を割り当てられていない、ことを示し、
前記第1のタスクに対応する前記第1のビットマスクに基づいて、前記アクセス制御レジスタ内の前記第1のアクセス制御識別子及び前記第2のアクセス制御識別子をプログラムする前記アクセス制御識別子管理命令実行するステップは、(a)前記第1のアクセス制御識別子を、前記トランザクションホストの前記特権モード及び前記ユーザモードの両方において、前記第1の周辺機器へのアクセスを可能にする、前記第1の周辺機器のオープンアクセス値に更新するステップと、(b)前記第2のアクセス制御識別子を、前記トランザクションホストの前記特権モードにおいて、前記第2の周辺機器へのアクセスを可能にするが、前記ユーザモードにおいて、前記第2の周辺機器へのアクセスを許可しない、前記第2の周辺機器の制限付きアクセス値に更新するステップと、を含み、
前記第1のタスクの実行中に、
前記第1の周辺機器に関連付けられた前記第1のアクセスコントローラが、前記第1のアクセス制御識別子の前記オープンアクセス値に基づいて、前記トランザクションホストの前記特権モード及び前記ユーザモードの両方において前記第1の周辺機器へのアクセスを許可し、
前記第2の周辺機器に関連付けられた前記第2のアクセスコントローラが、前記第2のアクセス制御識別子の前記制限付きアクセス値に基づいて、前記トランザクションホストの前記特権モードにおいて、前記第2の周辺機器へのアクセスを禁止するが、前記トランザクションホストの前記ユーザモードにおいて、前記第2の周辺機器へのアクセスを禁止しない、請求項1
4に記載の方法
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0040
【補正方法】変更
【補正の内容】
【0040】
いくつかの例では、第1のビットマスクは、第1のタスクを実行するための第1の周辺機器に対するアクセス設定を示す1つ以上の第1のビットマスクビットと、第1のタスクを実行するための第2の周辺機器に対するアクセス設定を示す1つ以上の第2のビットマスクビットと、を含み、第1のアクセス制御識別子は1つ以上の第1のアクセス制御ビットを含み、第2のアクセス制御識別子は1つ以上の第2のアクセス制御ビットを含む。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0066
【補正方法】変更
【補正の内容】
【0066】
他の例では、複数の処理ホスト102が提供され、それぞれの周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、(a)要求トランザクションホスト102を識別するトランザクションホスト識別子と、(b)周辺機器104a~104n及びそれぞれの要求トランザクションホスト102に対応するそれぞれのアクセス制御識別子112a~112nと、に基づいて、一つの要求トランザクションホスト102(又は複数のトランザクションホスト102)(例えば、アクセス制御レジスタ110は、それぞれのトランザクションホスト102について、周辺機器104a~104nのアクセス制御識別子112a~112nのそれぞれのセットを記憶する)によって、それぞれの周辺機器104a~104nにアクセスするためのアクセス決定を行う。他の例では、複数の処理ホスト102が提供され、それぞれの周辺機器104a~104nに関連付けられたそれぞれのアクセスコントローラ106a~106nは、(a)要求トランザクションホスト102を識別するトランザクションホスト識別子と、(b)それぞれの周辺機器104a~104n及び要求トランザクションホスト102に対応するそれぞれのアクセス制御識別子112a~112n(例えば、アクセス制御レジスタ110は、それぞれのトランザクションホスト102について、周辺機器104a~104nのアクセス制御識別子112a~112nのそれぞれのセットを記憶する)と、(c)要求トランザクションホスト102の現在の動作モード(例えば、特権モード又はユーザモード)を示す動作モード信号120と、に基づいて、一つの要求トランザクションホスト102(又は複数のトランザクションホスト102)によって、それぞれの周辺機器104a~104nにアクセスするためのアクセス決定を行う。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0092
【補正方法】変更
【補正の内容】
【0092】
実施例1:第1の例示的なアクセス制御識別子スキーム(表1)。上述の第1の例示的なアクセス制御識別子スキーム(表1参照)の下では、トランザクションホスト102は、ユーザモードで「タスク1」220aを実行するためにタスク1ビットマスク232aを利用することができるが、特権モードで「タスク1」220aを実行するためには利用することができない。例えば、ユーザモードで「タスク1」220aを実行する前に、トランザクションホスト102は、アクセス制御識別子管理命令214を実行して、(a)「タスク1」220aがトランザクションホスト102のユーザモードで実行されることを識別し、(b)「タスク1」220aが第2の周辺機器104bではなく、第1の周辺機器104aへの周辺機器アクセス許可を割り当てられていることを示す第1のビットマスク232aにアクセスし、(c)第1のビットマスク232a及び現在の動作モード(ユーザモード)に基づいて、(i)「タスク1」220aのユーザモード実行中に第1の周辺機器104aへのアクセスを可能にするアクセス許可値(AC_ID値=0)に、第1のアクセス制御識別子112aをプログラムし、(ii)「タスク1」220aのユーザモード実行中に、第2の周辺機器104bへのアクセスを禁止するアクセス禁止値(AC_ID値=0)に、第2のアクセス制御識別子112bをプログラムすることができる。対照的に、(上記の表1に示される第1の例示的なアクセス制御識別子スキームの下で)特権モードで「タスク1」220aを実行する前に、トランザクションホスト102は、アクセス制御識別子管理命令214を実行して、第1のアクセス制御識別子112a及び第2のアクセス制御識別子112bの両方を、「タスク1」220aの特権モード実行中に、第1の周辺機器104a及び第2の周辺機器104bの両方へのアクセスを可能にするアクセス許可値(AC_ID値=0)に、プログラムすることができる。この状況では、トランザクションホスト102は、全ての周辺機器104a~104nが特権モード動作のためにアクセス可能であるため、タスク1ビットマスク232aを無視することができる。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0096
【補正方法】変更
【補正の内容】
【0096】
それぞれのアクセスコントローラ106a~106n及び106acは、それぞれのアクセス制御識別子112(及び任意選択で追加の入力データ)を利用して、例えば、(a)アクセス要求された周辺機器104a~104n、(b)アクセス要求された周辺機器104a~104nへのアクセスを要求するそれぞれのトランザクションホスト102a~102n(本明細書ではアクセス要求トランザクションホスト102a~102nと呼ぶ)、及び(c)アクセス要求トランザクションホスト102a~102nの動作モード信号120a~120n(例えば、特権モード又はユーザモード)に基づいて、それぞれの周辺機器104a~104n及び104acへのアクセスを制御することができる。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0125
【補正方法】変更
【補正の内容】
【0125】
712において、トランザクションホストは、特権モードからユーザモードに遷移し、周辺機器Nに関連するそれぞれのタスクを実行する。714において、周辺機器Nに関連するそれぞれのタスクを実行するように、周辺機器Nに対応するアクセスコントローラは
、オープンアクセス設定(AC_ID値=0)に基づいて、例えば、
図4B(単一トランザクションホストシナリオ)又は
図4D(複数トランザクションホストシナリオ)に示すように、例えば、メモリに記憶されたそれぞれのLUTを使用して、又はそれぞれの論理回路を使用して、周辺機器Nへのアクセス(例えば、周辺機器N内のレジスタへのアクセス)を可能にする。トランザクションホストが他の周辺機器のいずれかにアクセスしようと試みる場合、他の周辺機器に対応するそれぞれのアクセスコントローラは、例えば、
図4B又は
図4Dに示されるように、例えば、それぞれのLUT又は論理回路を使用して、表2に従って、(a)制限付きアクセス設定(AC_ID値=1)及び(b)トランザクションホストのユーザモード(動作モード信号値=0)に基づいて、他の周辺機器へのアクセスを禁止する。
【国際調査報告】