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

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

▶ テキサス インスツルメンツ インコーポレイテッドの特許一覧

特表2023-554378ハードウェアベースのセキュリティ認証
<>
  • 特表-ハードウェアベースのセキュリティ認証 図1
  • 特表-ハードウェアベースのセキュリティ認証 図2
  • 特表-ハードウェアベースのセキュリティ認証 図3
  • 特表-ハードウェアベースのセキュリティ認証 図4
  • 特表-ハードウェアベースのセキュリティ認証 図5
  • 特表-ハードウェアベースのセキュリティ認証 図6
  • 特表-ハードウェアベースのセキュリティ認証 図7
  • 特表-ハードウェアベースのセキュリティ認証 図8
  • 特表-ハードウェアベースのセキュリティ認証 図9
  • 特表-ハードウェアベースのセキュリティ認証 図10A
  • 特表-ハードウェアベースのセキュリティ認証 図10B
  • 特表-ハードウェアベースのセキュリティ認証 図10C
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-27
(54)【発明の名称】ハードウェアベースのセキュリティ認証
(51)【国際特許分類】
   G06F 13/36 20060101AFI20231220BHJP
   G06F 21/73 20130101ALI20231220BHJP
【FI】
G06F13/36 310E
G06F21/73
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023536340
(86)(22)【出願日】2021-12-13
(85)【翻訳文提出日】2023-08-14
(86)【国際出願番号】 US2021063000
(87)【国際公開番号】W WO2022132606
(87)【国際公開日】2022-06-23
(31)【優先権主張番号】17/122,234
(32)【優先日】2020-12-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【弁護士】
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】グレゴリー アレン ノース
(72)【発明者】
【氏名】ペル トーステイン ロイン
(72)【発明者】
【氏名】エリック ティエリ ジーン ペータース
(57)【要約】
システムが、マルチプレクサ(710、720)と、入力/出力(I/O)ピン(719)と、論理回路(712、722)と、制御レジスタ(330)とを含む。マルチプレクサ(710、720)は、複数の入力と、出力と、選択入力とを有する。論理回路(712、722)は、マルチプレクサと(710、720)とI/Oピン(719)との間に結合される。論理回路(712、722)は、第1の入力を有する。制御レジスタ(330)は、I/Oピンに対応する第1及び第2のビットフィールドを含む。第1のビットフィールドは、マルチプレクサ(710、720)の選択入力に結合され、第2のビットフィールドは、論理回路(712、722)の第1の入力に結合される。
【特許請求の範囲】
【請求項1】
システムであって、
入力のセットと、出力と、選択入力とを有するマルチプレクサと、
入力/出力(I/O)ピンと、
前記マルチプレクサと前記I/Oピンとの間に結合される論理回路であって、第1の入力を有する前記論理回路と、
制御レジスタと、
を含み、
前記制御レジスタが、
前記I/Oピンに対応する第1のビットフィールドであって、前記マルチプレクサの前記選択入力に結合される前記第1のビットフィールドと、
前記I/Oピンに対応する第2のビットフィールドであって、前記論理回路の前記第1の入力に結合される前記第2のビットフィールドと、
を含む、
システム。
【請求項2】
請求項1に記載のシステムであって、前記論理回路が、前記マルチプレクの前記出力に結合される第2の入力を含む、システム。
【請求項3】
請求項1に記載のシステムであって、前記マルチプレクサの前記入力のうちの1つに結合されるデバイスを更に含み、前記デバイスが識別子を有し、前記第1のビットフィールドが前記デバイスの前記識別子を格納するように構成される、システム。
【請求項4】
請求項3に記載のシステムであって、前記識別子がmビット識別子であり、前記システムが再エンコーダを更に含み、前記再エンコーダが、前記デバイスのnビットアドレスを前記mビット識別子に変換するように構成され、mはnよりも小さい、システム。
【請求項5】
請求項1に記載のシステムであって、前記第2のビットフィールドが前記I/Oピンの状態を格納する、システム。
【請求項6】
請求項1に記載のシステムであって、前記第1のビットフィールドが、或るデバイスの識別子を格納するように構成され、前記第2のビットフィールドが、前記I/Oピンの状態を格納するように構成され、前記システムが、前記制御レジスタに結合されたオーセンティケータを更に含み、
第1の書き込みアドレス及び第1の書き込みデータを有する書き込みトランザクションであって、前記第1の書き込みアドレスが前記I/Oピンのアドレスであり、前記第1の書き込みデータが或るデバイスのアドレスである、前記書き込みトランザクションの発生に応答して、前記オーセンティケータが、
前記デバイスの識別子を格納するため前記第1のビットフィールドを更新し、
識別子が前記第1のビットフィールド内にある前記デバイスに関してHANDOVERにあるとして、前記I/Oピンのための前記第2のビットフィールドを更新する、
ように構成される、
システム。
【請求項7】
請求項6に記載のシステムであって、
第2の書き込みアドレス及び第2の書き込みデータを有する第2の書き込みトランザクションであって、前記第2の書き込みアドレスが前記デバイスの前記アドレスであり、前記第2の書き込みデータが前記I/Oピンの新しい状態を含む、前記第2の書き込みトランザクションの発生に応答して、
前記オーセンティケータが、前記第2のビットフィールドを、前記第2の書き込みデータに含まれるように前記I/Oピンの前記新しい状態に更新するように構成される、
システム。
【請求項8】
請求項6に記載のシステムであって、前記オーセンティケータに結合された更新レジスタを更に含み、前記更新レジスタが、前記デバイスのアドレスを格納するように構成される、システム。
【請求項9】
請求項8に記載のシステムであって、前記更新レジスタからの前記デバイスの前記アドレスを、前記デバイスの一層短い識別子に変換するように構成される再エンコーダを更に含む、システム。
【請求項10】
請求項1に記載のシステムであって、前記システムがシステムオンチップ(SoC)である、システム。
【請求項11】
システムであって、
入力/出力(I/O)セル回路と、
前記I/Oセル回路に結合されたI/Oセルアクセス制御回路と、
システムバスに結合されるオーセンティケータと、
前記オーセンティケータと前記I/Oセルアクセス制御回路との間に結合された制御レジスタと、
を含み、
前記オーセンティケータが、
前記I/Oセル回路が現在別のデバイスにマッピングされていない場合にして前記I/Oセル回路を前記第1の要求において特定されたデバイスにマッピングするため第1の要求を認証し、
前記第1の要求において特定された前記デバイスを前記I/Oセル回路に関連付けるように前記制御レジスタを更新するように、
構成される、
システム。
【請求項12】
請求項11に記載のシステムであって、前記第1の要求が、書き込みアドレス及び書き込みデータを有する書き込みトランザクションであり、前記書き込みアドレスが前記I/Oセル回路に対応するアドレスであり、前記書き込みデータが前記デバイスのアドレスを含む、システム。
【請求項13】
請求項12に記載のシステムであって、前記オーセンティケータが、前記デバイスの前記アドレスを、前記デバイスのための一層短い識別子に変換するように構成された再エンコーダを含む、システム。
【請求項14】
請求項11に記載のシステムであって、前記オーセンティケータが、
前記I/Oセル回路が現在前記デバイスにマッピングされていない場合に前記I/Oセル回路を前記第2の要求において特定された前記デバイスに接続するため第2の要求を認証し、
前記I/Oセル回路の状態を変更して前記I/Oセル回路が前記デバイスに接続されていることを示すように前記制御レジスタを更新するように、
構成される、システム。
【請求項15】
請求項11に記載のシステムであって、
入力のセットと、出力と、選択入力とを有するマルチプレクサと、
前記マルチプレクサと前記I/Oセル回路との間に結合される論理回路であって、第1の入力を有する前記論理回路と、
制御レジスタと、
を更に含み、
前記制御レジスタが、
前記I/Oセル回路に対応する第1のビットフィールドであって、前記マルチプレクサの前記選択入力に結合される前記第1のビットフィールドと、
前記I/Oセル回路に対応する第2のビットフィールドであって、前記論理回路の前記第1の入力に結合される前記第2のビットフィールドと、
を含む、システム。
【請求項16】
請求項15に記載のシステムであって、
前記第1のビットフィールドが、前記デバイスの識別子を格納するように構成され、
前記第2のビットフィールドが、前記I/Oセル回路の状態を格納するように構成される、
システム。
【請求項17】
方法であって、
入力/出力(I/O)ピンにアクセスするための第1の要求を受け取ることであって、前記I/Oピンが或る状態を有し、前記第1の要求が、前記I/Oピンと通信するためのデバイスを特定する、前記第1の要求を受け取ることと、
前記I/Oピンの状態が、前記I/Oピンがどのデバイスにも割り当てられていないことを示すことに応答して、前記I/Oピンが前記デバイスに関連付けられていることを示すため制御レジスタ内の前記I/Oピンの前記状態を更新すること及び前記デバイスの識別子を前記制御レジスタに格納することと、
前記I/Oピンを前記デバイスに接続するため第2の要求を受け取ることと、
前記制御レジスタが前記デバイスの識別子を格納することに応答して、前記第2の要求に含まれる状態を特定するように前記制御レジスタ内の前記I/Oピンの前記状態を更新することと、
を含む、方法。
【請求項18】
請求項17に記載の方法であって、I/Oセル回路を前記I/Oピンに結合するように構成するため前記制御レジスタを更新することを更に含む、方法。
【請求項19】
請求項17に記載の方法であって、前記第1の要求が、第1の書き込みアドレス及び第1の書き込みデータを有する書き込みトランザクションであり、前記第1の書き込みアドレスが前記I/Oピンのアドレスであり、前記第1の書き込みデータが、前記デバイスのアドレスである、方法。
【請求項20】
請求項17に記載の方法であって、前記第2の要求が、第2の書き込みアドレス及び第2の書き込みデータを有する書き込みトランザクションであり、前記第2の書き込みアドレスが前記デバイスの前記アドレスであり、前記第2の書き込みデータが前記I/Oピンのための状態を示す、方法。
【発明の詳細な説明】
【技術分野】
【0001】
多くのコンピューティングシステムが、システム内のメモリや他のタイプの周辺デバイス等、種々のリソースへのアクセスを保護するためにセキュリティを採用している。例えば、セキュリティを提供するためにファイアウォールを実装し得る。しかしながら、入力/出力(I/O)ピン等のリソースの幾つかのタイプは、ファイアウォールによって保護されていない。
【発明の概要】
【0002】
少なくとも一例において、システムが、マルチプレクサ、入力/出力(I/O)ピン、論理回路、及び制御レジスタを含む。マルチプレクサは、複数の入力、出力、及び選択入力を有する。論理回路は、マルチプレクサとI/Oピンとの間に結合される。論理回路は第1の入力を有する。制御レジスタは、I/Oピンに対応する第1及び第2のビットフィールドを含む。第1のビットフィールドはマルチプレクサの選択入力に結合され、第2のビットフィールドは論理回路の第1の入力に結合される。
【0003】
別の例において、システムが、入力/出力(I/O)セル回路と、I/Oセル回路に結合されるI/Oセルアクセス制御回路とを含む。このシステムは更に、システムバスに結合されるオーセンティケータ、及びオーセンティケータとI/Oセルアクセス制御回路との間に結合される制御レジスタを含む。オーセンティケータは、I/Oセル回路が現在別のデバイスにマッピングされていない場合、I/Oセル回路を第1の要求において特定されるデバイスにマッピングするように第1の要求を認証し、第1の要求において特定されるデバイスをそのI/Oセル回路に関連付けるように制御レジスタを更新する、ように構成される。
【0004】
更に別の例において、或る方法が、入力/出力(I/O)ピンにアクセスするための第1の要求を受け取ることを含む。I/Oピンは状態を有する。第1の要求はデバイスを特定する。この方法は更に、I/Oピンの状態が、I/Oピンがどのデバイスにも割り当てられていないことを示すことに応答して、制御レジスタ内のI/Oピンの状態を更新して、I/Oピンがデバイスに関連付けられていることを示すことと、デバイスの識別子を制御レジスタ内に格納することとを含む。また、この方法は、I/Oピンをデバイスに接続するための第2の要求を受け取ることと、制御レジスタがデバイスの識別子を格納することに応答して、制御レジスタ内のI/Oピンを更新して第2の要求に含まれる状態を特定することとを含む。
【図面の簡単な説明】
【0005】
種々の例の詳細な説明について、添付の図面を参照する。
【0006】
図1】宛先側ファイアウォールを用い、一つ又は複数のI/Oピンにセキュリティ保護されたアクセスを提供するための入力/出力(I/O)マルチプレクサを含むコンピューティングシステムを示す。
【0007】
図2】発信側ファイアウォールを用い、一つ又は複数のI/Oピンにセキュリティ保護されたアクセスを提供するためのI/Oマルチプレクサを含む、別のコンピューティングシステムを示す。
【0008】
図3図1及び図2のI/Oマルチプレクサの例示のブロック図である。
【0009】
図4】各I/Oピンに関連する制御レジスタのコンテンツを示す。
【0010】
図5図3のI/Oマルチプレクサ内に含まれるオーセンティケータの例を示す。
【0011】
図6図5のオーセンティケータ内に含まれるアドレスオーセンティケータの例を示す。
【0012】
図7図3のI/Oマルチプレクサ内に含まれるI/Oセルアクセス制御回路の例を示す。
【0013】
図8図5のオーセンティケータ内の状態機械によって実装される例示の状態図を示す。
【0014】
図9図3のI/Oマルチプレクサ内に実装される例示の方法を示す。
【0015】
図10A】特定の周辺デバイス機能が特定のI/Oピンに接続する例を示す。
図10B】特定の周辺デバイス機能が特定のI/Oピンに接続する例を示す。
図10C】特定の周辺デバイス機能が特定のI/Oピンに接続する例を示す。
【発明を実施するための形態】
【0016】
セキュリティ保護されたシステムの場合、認証されたソフトウェアが、I/Oピン(データ又は制御情報)や事象/割り込み信号等の粒状(granular)リソースへのアクセスを許可され得る。しかしながら、特定のI/Oピンにどのソフトウェアがアクセス可能であるかを管理するために従来のファイアウォールシステムを構築することは、かなりのレイテンシを伴う領域集約的であり得る。これは、どのソフトウェアプロセスが所有し得るかに関連付けられていない構造を制御するためにファイアウォールのメモリマップが連続アドレス範囲にパッキングされるためである。説明される実施例は、ファイアウォールによって直接保護されていないI/Oピン等のリソースのためのセキュリティシステムを実装する。説明される実施例は、I/Oピンに対してセキュリティ保護されたアクセスを提供するハードウェア回路を含む。
【0017】
図1は、システムダイレクトメモリアクセス(DMA)コントローラ102、中央処理装置(CPU)104、システムメモリ110、周辺デバイス112、及びI/Oセル118を含む電子システム100を示す。各CPU104のための内部のハードウェア構成要素は、セキュリティ保護された部分とセキュリティ保護されていない部分に分けられ、そのような各部分は、それ自体のスタックポインタ及びエラー処理ハードウェアを有する。所与のCPU104に対するランタイムコードは、概して、そのCPUのセキュリティ保護された部分へのアクセスを有さない。システムDMAコントローラ102及びCPU104は、システムバス106に結合される。各I/Oセル118は、対応するI/Oピン119の制御及び対応するI/Oピン119への接続を提供する回路である。I/Oピン119は、コンピューティングシステム100外部のデバイス、並びに、以下に説明されるように、電子システム100内の周辺デバイス112にアクセス可能である。各I/Oセル118は構成可能回路である。例えば、各I/Oセル回路118は、有効又は無効にされ得るグリッチフィルタ、プログラマブルスルーレート、プログラマブルドライブ強度、選択可能なプルアップ又はプルダウン抵抗器等を有し得る。一つの実装において、コンピューティングシステム100は、システムオンチップ(SoC)であり、I/Oピン119は、SoCの半導体ダイ上のパッドに結合された外部的にアクセス可能なピンである。
【0018】
2つのCPU104が図1の例に示されているが、任意の数(一つ又は複数)のCPUが含まれ得る。同様に、2つの周辺デバイス112が図1に示されているが、任意の数の周辺デバイス112が含まれ得る。少なくとも1つのI/Oピンが、本明細書に説明されるようにセキュリティ保護される。各周辺デバイス112は、一つ又は複数のアドレス指定可能な周辺デバイス機能を提供する。アドレス指定可能な周辺デバイス機能により、CPU104によって実行されたソフトウェアが、その特定の機能を対象としたバストランザクション(読み出し及び書き込み)をシステムバス106上に発行し得る。例えば、システム100は、各々が一つ又は複数のアドレス指定可能な周辺デバイス機能を有する2つのシリアルペリフェラルインタフェース(SPI)コントローラを含み得る。各SPIコントローラは、例えば、出力クロックを提供し得、そのようなSPIクロックの各々はアドレス指定可能である。周辺デバイスの別の例としては、ユニバーサル非同期レシーバ/トランシーバ(UART)及び集積回路間(I2C)バストランシーバが含まれる。UARTの送信データ出力(TXD)又は受信データ入力(RXD)は、I2CバストランシーバのI2Cクロックと同様に、一実装においてアドレス指定可能である。
【0019】
用語「周辺デバイス」は、例えば、CPU104又はシステムDMA102からの要求を受け取り、それに応答し得るが、I/Oマルチプレクサ120(これ以降に説明する)を介してI/Oピン119にデータを送ったりI/Oピン119からデータを受け取ったりすることもできるデバイスを指す。従って、周辺デバイス112は、CPU102からのトランザクションのためのエンドポイントであり得、又はI/Oピン119を介して、CPU104と、電子システム100の外部のエンドポイント(図示せず)との間の仲介として機能し得る。
【0020】
セキュリティ上の理由から、システムメモリ110及び各周辺デバイス112は、関連するファイアウォールを有する。ファイアウォール109はシステムメモリ110を保護し、ファイアウォール111及び113は、対応する周辺デバイス112を保護する。ファイアウォール109、111、及び113は、システムバス106と対応するシステムメモリ110及び周辺デバイス112との間に結合される。各ファイアウォール109、111、及び113は、どのトランザクションがファイアウォールを介して宛先側デバイス(例えば、システムメモリ110、周辺デバイス112)に提供されるかを制御するための種々の規則のうちの任意のものを用いて構成される。図1は、ファイアウォールが直接宛先デバイス(例えば、システムメモリ110及び周辺デバイス112)を保護するという点で宛先側ファイアウォールの例である。
【0021】
図2は、図1のコンピューティングデバイス100に類似しているが、そのファイアウォールが、発信側ファイアウォール構成で実装されている電子システム200を示す。電子システム200は、システムDMAコントローラ102とシステムバス106との間に結合されるファイアウォール209と、対応するCPU104とシステムバスとの間に結合されるファイアウォール211及び213とを含む。各ファイアウォール209、211、及び213は、任意のトランザクションがファイアウォール内に実装されたファイアウォール規則に準拠しない場合、それらのトランザクションがそれぞれのソースデバイス(システムDMA102、CPU104)からシステムバス106に到達するのをブロックするように構成される。
【0022】
しかしながら、ファイアウォールは、典型的に、I/Oピンへのアクセスを保護するようには実装されない。説明される例に従って、また図1及び図2に図示されるように、電子システム100は、I/Oセル118と周辺デバイス112及びシステムバス106との間に結合されるI/Oマルチプレクサ120を含む。以下に説明されるように、I/Oマルチプレクサ120は、I/Oセルアクセスに関するセキュリティを実装するために用いられ得るハードウェア回路である。例えば、CPU104上で実行するソフトウェアは、システムバス106上に一つ又は複数のトランザクションを発行し得、これにより、集合的に、特定の周辺デバイス機能が特定のI/Oセル118及びそのI/Oピン119に接続される。周辺デバイス機能がI/Oピンに接続された後、ソフトウェアは、周辺デバイス機能に、I/Oピンの論理状態を制御するよう指令し得る。I/Oマルチプレクサ120は、ソフトウェア要求の代わりに、所与の周辺デバイス機能が所与のI/Oセル118にアクセス可能であるか否かを制御する。例えば、I/Oマルチプレクサ120は、各I/Oセル118に対して1つの制御レジスタの、複数の制御レジスタを含む。制御レジスタは、所与の周辺機能の識別子を含むようにプログラムされ得る。制御レジスタにおいて識別された周辺機能のみが制御レジスタに対応するI/Oセル118にアクセスし得る。また、I/Oマルチプレクサ120は、どのようにして、所与の制御レジスタが、最初に特定の周辺デバイスのための識別子を用いてプログラムされ得るかについてのセキュリティプロトコルを実装する。
【0023】
I/Oマルチプレクサ120は、所与のI/Oセル118の状態を設定し、I/Oセルの状態に基づいて、周辺デバイス機能によってI/Oセルへのアクセスを制御する。一例において、I/Oセル118のための状態としては、UNASSIGNED(未割り当て)、HANDOVER(ハンドオーバー)、CONNECTED(LOCKED)(接続(ロックされている))、及びCONNECTED(UNLOCKED)(接続(ロックされていない))が含まれる。UNASSIGNED状態は、そのI/Oセルがどの周辺デバイス機能にも割り当てられていない状態を意味する。HANDOVER状態は、そのI/Oセルが特定の周辺デバイス機能に割り当てられているが、その周辺デバイス機能がそのI/Oセルに接続されていないことを意味する。I/Oマルチプレクサ120は、2つのタイプのCONNECTED状態を実装する。CONNECTED(LOCKED)状態は、特定の周辺デバイス機能がそのI/Oピンに現在直接アクセスし得るが、そのI/Oピンに接続され得る他の周辺デバイスがないことを意味する。CONNECTED(UNLOCKED)状態は、特定の周辺デバイス機能がそのI/Oピンに現在直接アクセス可能であり、別の周辺デバイスもそのI/Oピンに接続され得る可能性があることを意味する。別の例において、I/Oマルチプレクサは、任意のLOCK/UNLOCK制御状態に関係なく、単一のCONNECTED状態を実装する。
【0024】
特定のI/Oピン119を制御(書き込み又は読み出し)するための所与の周辺デバイス機能の場合、一実施例では、マルチ工程セキュリティプロトコルがI/Oマルチプレクサ120によって実装される。最初に、CPU104が一つ又は複数の機械命令(ソフトウェア)を実行して、システムバス106上にトランザクションを発行し、それによって周辺デバイス機能が特定のI/Oピン119にアクセスする。上述したように、各I/Oピン119は、対応するアドレスを有する。各I/Oピンはまた、関連するプログラム可能な制御レジスタを有する。I/Oマルチプレクサ120は、現在UNASSIGNED状態にあるI/Oピン(例えば、周辺デバイス機能に接続されるために利用可能なI/Oピン)のアドレスのリストを格納する。一例において、周辺デバイス機能がUNASSIGNED状態のピンを用いるためのシステムバストランザクションは、第1の書き込みトランザクションであり、第1の書き込みトランザクションにおいて、書き込みアドレスはそのピンのアドレスであり、書き込みデータはそのピンへのアクセスを得ることを試みている周辺デバイス機能のアドレスを含む。I/Oマルチプレクサ120は、I/Oピンの状態を、例えばI/Oピンに関連する制御レジスタに格納する。バストランザクション(例えば、上述の第1の書き込みトランザクション)を受け取ると、I/Oマルチプレクサは、ターゲットのピンが現在UNASSIGNEDであることを検証し、そうである場合は、I/Oマルチプレクサは、関連する制御レジスタにおけるI/Oピンの状態をUNASSIGNEDからHANDOVERに変更する。I/Oマルチプレクサは状態の識別子をレジスタに格納し、従って、UNASSIGNEDを示す識別子からHANDOVERを示す識別子へ変更する。I/Oマルチプレクサはまた、上述のバストランザクションによって識別された特定の周辺デバイス機能の識別子も格納する。この時点で、ターゲットI/Oピンのための制御レジスタは、特定の周辺デバイス機能がI/Oピンに関連付けられ、ピンはHANDOVER状態にあることを示す。上述の第1の書き込みトランザクションを受け取ると、I/Oピンの状態がHANDOVER状態ではない場合(I/Oピンが、異なる周辺デバイス機能に関してCONNECTED状態である可能性がある)、一例において、I/Oマルチプレクサは、第1の書き込みトランザクションによって識別された周辺デバイス機能の識別子を格納するための、ピンの制御レジスタの更新をせず、従って、周辺デバイス機能がI/Oピンを用いることを防止する。
【0025】
セキュリティプロトコルの第2の工程は、CPU104が一つ又は複数の機械命令を実行して、周辺デバイス機能に第2の書き込みトランザクションを発行することであり、その際、書き込みデータは、I/Oピンが、周辺デバイス機能に対して、CONNECTED状態(CONNECTED LOCKED又はCONNECTED UNLOCKED)に遷移することを特定するビットを含む。I/Oマルチプレクサは、この後者の、第2の書き込みトランザクションを受け取り、I/Oピンの制御レジスタからの周辺機能識別子を、第2の書き込みトランザクションによってターゲットとされた周辺デバイス機能の識別子と比較する。I/Oマルチプレクサが、識別子が一致すると判定した場合は、I/OマルチプレクサはI/Oピンの制御レジスタに格納された状態を、HANDOVERからCONNECTED状態(LOCKED又はUNLOCKED)に更新する。I/Oマルチプレクサが、識別子が一致しないと判定した場合は、制御レジスタへの更新は発生せず、第2の書き込みトランザクションによってターゲットとされた周辺デバイス機能は、I/Oピンに接続されることは許可されない。
【0026】
セキュリティプロトコルの第3の工程は、CPU104上で実行されているソフトウェアが、周辺デバイス機能をターゲットとする第3の書き込みを発行することであり、その際、書き込みデータは接続されたI/Oピンを介して送信されるべきデータである。I/Oピンに接続された周辺デバイスの識別子を格納するI/Oピンの制御レジスタのビットは、I/Oピンが接続された周辺デバイスに対応するマルチプレクサの特定の入力を選択するために用いられる。I/Oピンが、CONNECTED状態にない場合(例えば、ピンがUNASSIGNED又はHANDOVER状態である場合)は、マルチプレクサの入力はいずれも選択されない。マルチプレクサの出力は、I/Oピンの状態がCONNECTED状態である場合にマルチプレクサの選択された入力が通過することを許可する論理回路を介して、通過する。ピンがCONNECTED状態でない場合は、マルチプレクサの入力がその出力であるとして選択されていても、マルチプレクサの出力上の信号はI/Oピンに到達することが防止される。
【0027】
図3は、I/Oマルチプレクサ120と、システムバス106、周辺デバイス310(これは、例えば、図1及び図2のシステムメモリ110及び周辺デバイス112であり得る)、及びI/Oセル118への接続のブロック図である。I/Oマルチプレクサ120は、オーセンティケータ320、制御レジスタ330、及びI/Oセルアクセス制御回路340を含む。付加的な又は異なる構成要素が、I/Oマルチプレクサ120の一部と同様に、含まれ得る。各周辺デバイス310は、少なくとも1つのアドレス指定可能な周辺デバイス機能を実装する。図5及び図6は、オーセンティケータ320の詳細な例示の実装を提供し、これ以降に説明される。同様に、図7(これ以降に説明する)はI/Oセルアクセス制御回路340の詳細な例示の実装を提供する。
【0028】
引き続き図3を参照すると、各I/Oピン119は、対応するI/Oセル118に接続される。制御レジスタ320は、各I/Oセル118のための制御レジスタを含む(従って、各I/Oピン119が、対応する制御レジスタを有することも意味する)。概して、オーセンティケータ320は、CPU104によって実行されるソフトウェアからシステムバス106上でトランザクションを受け取り、認証する。オーセンティケータ320によって認証されるべき特定のトランザクションには、I/Oピンを特定の周辺デバイス機能に接続するマルチ工程セキュリティプロトコルにおいて上述された書き込みトランザクションのうちの一つ又は複数が含まれる。オーセンティケータ320は、UNASSIGNED状態にあるI/Oピン、即ち、周辺デバイス機能に接続されるために使用可能であるI/Oピンのアドレスのためのストレージを含む。その書き込みアドレスがI/Oピンのアドレスであり、その書き込みデータが周辺デバイス機能のアドレスである書き込みトランザクションの場合、オーセンティケータ320は、書き込みアドレスが、UNASSIGNED状態にあるI/Oピンに対応するか否かを判定する。書き込みアドレスが、UNASSIGNED状態にあるI/Oピンに対応する場合、オーセンティケータ320は、周辺デバイス機能の識別子を用いてI/Oピンのレジスタを更新し、そうでない場合(I/Oピンの現在の状態がUNASSIGNED以外である場合)、オーセンティケータ320は、周辺デバイス機能の識別子を用いてレジスタを更新することはない。
【0029】
一つの例示の実装において、オーセンティケータ320は、周辺デバイス機能のアドレスを、より短い(即ち、より少ないビットの)識別子に変換する。例えば、ソフトウェアによって実装されるアドレスは27ビット長である。27ビットのアドレスを格納するのに充分な大きさのI/Oピン制御レジスタの実装を回避するために、オーセンティケータ320は、27ビットアドレスを、制御レジスタに格納するための例えば6ビット識別子に変換する。6ビット識別子を用いて、31個の異なる周辺デバイス機能(識別子000000は有効な周辺デバイス機能の識別子ではない)が所与のI/Oピンにアクセスし得る。周辺デバイス機能を実装するために6ビットより少ない又は多いビットが用いられ得る。しかしながら他の実装において、制御レジスタ330は、周辺デバイス機能の完全なアドレスを格納するために充分な大きさである。
【0030】
I/Oピンのための制御レジスタはまた、I/Oピンの状態を格納するための一つ又は複数のビットを有する。オーセンティケータ320が周辺デバイス機能の識別子を格納することに加えて、オーセンティケータ320はまた、制御レジスタにおける状態ビットを変更してHANDOVER状態を特定する。
【0031】
HANDOVER状態になると、CPU104は、I/Oピンの状態をHANDOVER状態からCONNECTED状態(CONNECTED LOCK又はCONNECTED UNLOCK)に遷移させるために別の書き込みトランザクションを発行し得る。この書き込みトランザクションの場合、書き込みアドレスは、その識別子がI/Oピンのための制御レジスタに格納されている周辺デバイスのアドレスである。オーセンティケータ320は、書き込みトランザクションを受け取り、書き込みアドレスを対応する6ビット識別子に変換し、変換された識別子をI/Oピンの制御レジスタに既に格納されている識別子と比較する。2つの識別子が一致しない場合は、オーセンティケータは、I/Oピンの状態をHANDOVER状態からCONNECTED状態に変更せず、書き込みトランザクションにおいて書き込みアドレスから変換された識別子に対応する周辺デバイス機能は、I/Oピンへの接続を許可されない。しかしながら、オーセンティケータ320が2つの識別子が一致すると判定した場合は、オーセンティケータは、I/Oピンの制御レジスタに格納された状態を、HANDOVERから、CONNECTED状態のうちの1つに更新する。CONNECTED状態のうちの特定のタイプは、書き込みトランザクションにおける書き込みデータから判定される。
【0032】
I/Oピンのための制御レジスタが、I/OピンがCONNECTED状態にあることを特定している状態で、一つ又は複数の制御信号331がI/Oセルアクセス制御回路340に対してアサートされて、I/Oセルアクセス制御回路340を、I/Oピンの制御レジスタに格納された周辺デバイス識別子に対応するアドレス指定可能な周辺デバイス機能からの信号を選択し、その信号がI/Oピンを介して配路されることを許可するように、構成する。
【0033】
幾つかの実装において、各I/Oピン119に対して、I/Oマルチプレクサ120は複数のチャネルを実装し、それを介して周辺デバイスは任意の所与のI/Oピンに接続され得る。例えば、I/Oマルチプレクサ120は、本明細書においてPチャネル及びGチャネルと呼ばれる2つのチャネルを実装し得る。複数の周辺デバイス機能がPチャネルの入力に接続され得、複数の周辺デバイス機能がGチャネルの入力に接続され得る。所与の周辺デバイス機能が、一方のチャネルに接続され得るが、他方のチャネルには接続されない場合がある。或いは、同じ周辺デバイス機能が両方のチャネルの入力に接続され得る。
【0034】
図4は、所与のI/Oピンの制御レジスタ330のための例示のビット割り当てを示す。全てのI/Oピンの制御レジスタのビット割り当ては、図4に示される通りであり得る。図4の例において、制御レジスタ330は32ビットレジスタである。ビット[5:0]は、Pチャネルを介して選択された周辺デバイス機能の識別子を格納する。ビット[7:6]は、Pチャネルに関するI/Oピンの状態を格納し、これは、P状態と呼ばれる。1つの実装において、Pチャネル状態ビット割り当ては下記のとおりである。
【表1】
同様に、Gチャネルの場合、ビット[13:8]がGチャネルを介して選択された周辺デバイス機能の識別子を格納し、ビット[15:14]が、表2に示されるように、Gチャネルに関するI/Oピンの状態(G状態)を格納する。
【表2】
PチャネルがCONNECTED状態のうちのいずれかにあるとき、ビット7は1である。同様に、GチャネルがCONNECTED状態のうちのいずれかにあるとき、ビット15は1である。従って、I/Oピンの制御レジスタ330のビット7及びビット15は、I/Oセルアクセス制御回路340への制御信号331の一部として用いられ得、それによってI/Oセルアクセス制御回路は、周辺デバイス機能からI/OピンのI/Oセル118への通信経路を提供する。ビット7及びビット15の使用はまた、図7に図示され、以下に説明される。
【0035】
コントローラレジスタ330のビット[31:16]は、I/Oピンのための共通制御ビットを提供する。共通制御は、どのチャネル(P又はG)の周辺デバイス機能がそのI/Oピンに接続され、そのI/Oピンを使用しているかに関係なく、I/Oピンの構成を制御する。下記の表3は、制御レジスタの共通制御ビットのための例示のビット割り当てを提供する。
【表3】
【0036】
図5は、I/Oマルチプレクサ120(図3)のオーセンティケータ320の例示の実装である。図示されるように、オーセンティケータ320は、アドレスオーセンティケータ510、状態機械530及び550、レジスタ520、読み出しレジスタ548、マルチプレクサ534、読み出しマルチプレクサ選択回路536、及びORゲート540を含む。システムバス106のアドレス部分(アドレス506)の幾つか又は全てが、アドレスオーセンティケータ510に結合される。システムバス106のデータ部分507の幾つか又は全てが、状態機械530に結合される。状態機械530及び550は、マルチ工程セキュリティプロトコルに対して本明細書において説明される機能を実施するデジタル論理回路として実装され得る。本明細書において説明される書き込みトランザクションに基づいて、及びターゲットI/Oピンの現在の状態に基づいて、状態機械530は、対応するI/Oピン制御レジスタ330を更新する。
【0037】
上述のように、UNASSIGNED状態にあるI/Oピンの場合、I/Oピンのアドレスと一致する書き込みアドレスを備える書き込みトランザクションにより、状態機械530は対応する制御レジスタ330を更新し、そのアドレスが書き込みトランザクションの書き込みデータ部分にある周辺デバイス機能の識別子を格納する。このプロセスは2つの工程で行われる。第1の工程において、F_Update_Cycle1制御信号の制御下で書き込みデータがレジスタ520(更新レジスタとも呼ばれる)にロードされる。F_Update_Cycle1制御信号は状態機械550によって生成される。状態機械550はまたF_Update_Cycle2制御信号を生成し、その使用は図6に示されている。例示の実装において、同じ認証アドレス復号ロジックを用いるために、トランザクションのデータ部分はサイクル1において(F_Update_Cycle1のアサートを介して)キャプチャされ、その後、サイクル2において(F_Update_Cycle2のアサートを介して)、アドレスデコーダを介して処理される。対称的に、制御レジスタの読み出し/書き込みに向けられたトランザクションは、トランザクションのアドレス部分として復号されるべきアドレスを有し得、復号動作は、サイクル1において行われ得る。このように、更新レジスタ520のコンテンツは、周辺デバイス機能のアドレスに対応する識別子を含む。
【0038】
図6に関連してこれ以降に説明されるように、アドレスオーセンティケータ510は、トランザクションが、P及びGチャネルのための制御情報を修正することを許可されているか否かを判定する。アドレスオーセンティケータ510は、更新レジスタ520からの識別子がI/Oピンのための制御レジスタのビット[5:0]に現在格納されている識別子に一致することに応答して、Pチャネルのための認証信号(AUTHP)をアサートし、更新レジスタ520からの識別子が制御レジスタのビット[13:8]に現在格納されている識別子に一致することに応答して、Gチャネルのための認証信号(AUTHG)をアサートする。
【0039】
制御レジスタ330を更新するために、書き込みトランザクションは、本明細書に説明されるように認証されなければならない。制御レジスタ330を読み出すために、対応するI/OピンがUNASSIGNEDである場合は、読み出しを行わせることを許可するために特定の認証は必要ない。I/OピンがHANDOVER又はCONNECTED状態にある場合は、2つのエンティティのみがI/Oピンを読み出し得る。HANDOVER又はCONNECTED状態にあるI/Oピンにマッピングされている周辺デバイス機能は、I/Oピンの制御レジスタ330を読み出し得、或いはハイレベルなセキュリティ保護されたプロセスがI/Oピンを読み出し得る。読み出しマルチプレクサ選択回路536は、選択信号537をマルチプレクサ534に生成して、どの制御レジスタの出力読み出しデータが読み出しレジスタ548に格納されることを許可されるのかを選択する。読み出しレジスタ548は、システムバス106に結合され、従って、読み出しレジスタ548内の制御レジスタのコンテンツは、そこから、読み出しトランザクションを開始したエンティティに提供され得る。
【0040】
SECURE READ信号541は、例えば、セキュリティ保護されたプロセスが読み出しトランザクションを発行すると、CPU104によってアサートされる(例えば、論理1)。そうでない場合、SECURE READは反対の論理状態(例えば、0)になる。同様に、UNASSIGNED READ信号543は、例えば、任意のプロセス又は周辺デバイス機能が、そのI/OピンがUNASSIGNED状態にある制御レジスタを読み出そうとすると、CPU104によってアサートされる(例えば、論理1)。そうでない場合、UNASSIGNED READは反対の論理状態(例えば、0)になる。読み出しマルチプレクサ選択回路536は0入力及び1入力を有する。ORゲート540の出力信号539が論理0の場合(セキュリティ保護されたプロセスからの読み出しもUNASSIGNEDI/Oピンへの読み出しも発生していない場合)、0入力は、アドレスオーセンティケータ510に結合される。その場合、アドレスオーセンティケータ510によって認証されている周辺デバイス機能は、読み出しマルチプレクサ選択回路536からの選択信号537が、対応する制御レジスタ330を選択して、そのコンテンツを読み出しレジスタ548に転送するという点において、適切な制御レジスタ330を読み出すことを許可される。
【0041】
読み出しマルチプレクサ選択回路536の1入力は、システムバス106のアドレス部分の少なくとも一部分に結合される。SECURE READ又はUNASSIGNED READ信号541、543のいずれかが論理1状態にアサートされると、ORゲート540は、その出力信号539上に論理1を生成し、それによって、読み出しマルチプレクサ選択回路536がその1入力を選択し、従って、システムバス106のアドレス部分が用いられて、特定の制御レジスタ330を選択して、そのコンテンツが読み出しレジスタ548に転送される。システムバス106のアドレス部分は、より小さい(即ち、より少ないビット)表現にマッピングされ、マルチプレクサ534への選択信号537として用いられ得る。
【0042】
図6は、アドレスオーセンティケータ510の例示の実装を示す。アドレスオーセンティケータ510は、入力マルチプレクサ602、デコーダ606、及び検証回路610を含む。アドレスオーセンティケータ510は、本明細書に説明されるように、保護されるべき各I/Oピンに対して別個の検証回路610を含む。マルチプレクサ602への「0」入力は、システムバス106からアドレス部分506を受け取り、「1」入力は、システムバス106から書き込みデータ部分507を受け取る。状態機械550は、F_Update_Cycle1を(例えば、論理1に)アサートし、書き込みデータ507を更新レジスタ520にロードする。書き込みデータが更新レジスタ520にロードされた後、状態機械550は、その後、F_Update_Cycle2をアサートし、それによってマルチプレクサ602の「1」入力が、デコーダ606への出力として選択される。そうでない場合(F_Update_Cycle2がその反対の極性状態(例えば、論理0)にアサートされる場合)、システムバスのアドレス部分506が、デコーダ606への出力として、マルチプレクサ602を介して選択される。
【0043】
デコーダ606は、全てのI/Oマルチプレクサ120によって共有される。デコーダ606は、マルチプレクサ602から提供されるアドレスを(システムバス106からの直接のアドレスであろうと、更新レジスタ520を介して書き込みトランザクションの書き込みデータから検索されたアドレスであろうと)より短い周辺デバイス機能識別子(例えば、長さ6ビット)に変換する。
【0044】
各I/Oピンのための検証回路610は、そのPチャネルに対して、Pチャネル比較論理回路614に結合されたPチャネル再エンコーダ612を含む。同様に、検証回路610は、そのGチャネルに対して、Gチャネル比較論理回路624に結合されたGチャネル再エンコーダ622を含む。各再エンコーダ612及び622は、システムバス106からの一層長いアドレスを、周辺デバイス機能識別子のための一層短い表現に変換する。Pチャネル再エンコーダ612の出力613は、システムバス106から又は更新レジスタ520から復号された周辺デバイス機能識別子(図6において、Pin X Next PF [5:0]と標記されている)である。同様に、Gチャネル再エンコーダ622の出力623は、システムバス106から又は更新レジスタ520から復号された周辺デバイス機能識別子(Pin X Next GF [5:0]と標記されている)である。
【0045】
図6は、Pチャネル未割り当て(PU)ビットであるPチャネル比較論理614への入力、及びGチャネル未割り当て(GU)ビットであるGチャネル比較論理624への入力を示す。PUは、I/OピンがPチャネルに関してUNASSIGNED状態であることに応答して、論理状態(例えば、論理1)にアサートされる。同様に、GUは、I/OピンがGチャネルに関してUNASSIGNED状態であることに応答して、論理状態(例えば、論理1)にアサートされる。PUが論理0にアサートされる場合、Pチャネル比較論理回路614は、Pin X Next PF[5:0]をそのI/Oピンの制御レジスタに現在格納されているPチャネル機能識別子と比較する。従って、I/OピンがPチャネルに対してUNASSIGNED状態にないとき、Pチャネル比較論理によって比較が実施される。PチャネルがUNASSIGNED状態にある場合、そのチャネルのための制御レジスタは、比較するための有効な周辺デバイス機能を有さない。同様に、GUが論理0にアサートされる場合、Gチャネル比較論理回路624は、Pin X Next GF[5:0]をそのI/Oピンの制御レジスタに現在格納されているGチャネル機能識別子と比較する。従って、GチャネルのためのI/OピンがUNASSIGNED状態にないとき、Gチャネル比較論理によって比較が実施される。Pチャネル比較論理回路614の出力は、その周辺デバイス機能識別子が一致する場合、一方の論理状態(例えば、1)を有するビットである。そうでない場合、出力ビットは、他方の論理状態(例えば、0)である。Gチャネル比較論理回路624の出力は、その周辺デバイス機能識別子が一致する場合、一方の論理状態(例えば、1)を有する。そうでない場合、出力ビットは、他方の論理状態(例えば、0)である。
【0046】
アドレスオーセンティケータ510はまた、マルチプレクサ640及び644、ANDゲート642及び646(論理ゲートの他方のタイプ)、並びに、AUTHP HOLD及びAUTHG HOLDレジスタ648及び649を含む。AUTHP HOLD及びAUTHG HOLDレジスタ648及び649は、Pチャネル比較論理回路614及びGチャネル比較論理回路624の対応する出力ビットを格納するために用いられる。F_Update_Cycle1のアサートによって、レジスタ648及び649は、Pチャネル及びGチャネル比較論理回路614、624の対応する出力を格納する。F_Update_Cycle2が論理0であることに応答して、マルチプレクサ640及び644は、それらの0入力(これらは、対応するPチャネル及びGチャネル比較論理回路614、624の出力である)をそれらの出力として選択するように構成される。そうでない場合、F_Update_Cycle2が論理1であることに応答して、マルチプレクサ640、644の1入力がそれらの出力として選択される。この機能性によって、I/OピンXのためのAUTHP[X]及びAUTHG[X]が、正しいときにアサートされる。正しいときとは、例えば、(a)更新レジスタ520に格納されたアドレスの認証と一致するとき(書き込みデータが周辺デバイス機能のアドレスであるI/Oピンアドレスに対する書き込みの場合)又は(b)システムバスのアドレス部分506からの直接のアドレスの認証と一致するとき(書き込みトランザクションが周辺デバイス機能のアドレスに対する場合)のいずれかである。アサートされたAUTHP[X](例えば、論理「1」)は、Pチャネル上のトランザクションが、認証されており、(例えば、制御レジスタ330を更新するために)続行できることを意味する。0であるAUTHP[X]はトランザクションが認証されていないことを意味する。同様に、アサートされたAUTHG[X](例えば、論理「1」)は、Gチャネル上のトランザクションが、認証されており、続行できることを意味する。
【0047】
図7は、I/Oセルアクセス制御回路340の例示の実装を示す。各I/Oセル及び対応するI/Oピンに対して別個のI/Oアクセス制御回路340が提供される。図7は、I/Oピン719(これは、図1図3におけるI/Oピン119の1つであり得る)のためのI/Oアクセス制御回路340を示す。I/Oピン719はI/Oセル回路718に結合され、I/Oセル回路718は、I/Oセルアクセス制御回路340に接続される。
【0048】
I/Oアクセス制御回路340は、Pチャネルマルチプレクサ710、Pチャネル論理回路712、Gチャネルマルチプレクサ720、Gチャネル論理回路722、マルチプレクサ726、及びアウトバウンド操作回路728を含む。Pチャネルマルチプレクサ710は複数の入力を有し、そのいずれも周辺デバイス機能、出力、及び選択入力に接続され得る。一実装において、Pチャネルマルチプレクサは、32個の入力を有し、従って、31個もの異なる周辺デバイス機能に結合され得る。Pチャネル周辺機能識別子(ビット[5:0])は、Pチャネルマルチプレクサのための選択信号である。しかしながら、識別子の値000000は、有効な周辺デバイス機能ではないため、最大で、31個のみの周辺デバイス機能が、制御レジスタにおける周辺デバイス機能によって選択され得る。マルチプレクサ710に入力される各周辺デバイス機能は、単一ビット信号(即ち、対応する周辺デバイス機能からの0又は1)である。状態機械530が、Pチャネルのための特定の周辺デバイス識別子を用いてI/Oピン制御レジスタをプログラムすることに応答して、プログラムされた周辺デバイス識別子(これはPチャネルマルチプレクサ710の選択入力709に結合される)により、Pチャネルマルチプレクサが、制御レジスタに格納された周辺デバイス識別子に対応する入力を選択する。
【0049】
Pチャネル論理回路712は、PチャネルがCONNECTED状態にない限り、Pチャネルマルチプレクサ710の選択された入力が、I/Oセル718と通信状態になることを防止する。Pチャネル論理回路712は、入力715及び717を有する。Pチャネルマルチプレクサ710の出力711は、Pチャネル論理回路712の入力715に結合される。図7の例において、Pチャネル論理回路712は、ANDゲート713であるか又はANDゲート713を含み、入力715及び717は、ANDゲート713の入力である。制御レジスタ330のP状態フィールドのビット7は、ANDゲート713の入力717に結合される。一実装において、各制御レジスタ330は、フリップフロップの組み合わせであり、ビット7はフリップフロップの出力である。既に説明したように、PチャネルがCONNECTED状態のうちのいずれかであるときに、ビット7は1である。ビット7が0であると、マルチプレクサ710を介する周辺デバイス機能からの任意の信号は、ANDゲート713によってゲートオフされる。Pチャネルが任意のCONNECTED状態にあることに応答して、ビット7は1であり、従って、マルチプレクサ710を介する、選択された周辺デバイス機能上の信号の論理状態は、ANDゲート713を介してマルチプレクサ726の入力729に流れる。
【0050】
Gチャネルは、Pチャネルの構造と類似する構造を有する。Gチャネルマルチプレクサ720は、複数の入力(例えば、32個)を有し、そのいずれも周辺デバイス機能に結合され得る。Gチャネル周辺機能識別子(ビット[13:8])は、Gチャネルマルチプレクサ720のための選択信号である。従って、状態機械530が、Gチャネルのための特定の周辺デバイス識別子を用いて、I/Oピン制御レジスタをプログラムすることに応答して、プログラムされた周辺デバイス識別子によって、Gチャネルマルチプレクサ720は、制御レジスタに格納された周辺デバイス識別子に対応する入力を選択する。マルチプレクサ720に入力される各周辺デバイス機能は、単一ビット信号(即ち、対応する周辺デバイス機能からの0又は1)である。Gチャネル論理回路722は、入力719及び721を有する。Gチャネルマルチプレクサ720の出力727は、Gチャネル論理回路722の入力721に結合される。
【0051】
Pチャネルの論理回路712の場合と同様に、Gチャネルの論理回路722は、Gチャネルが接続(connected)状態にない限り、選択された周辺デバイス機能がI/Oセルと通信することを防止する。図7の例において、Gチャネル論理回路722は、ANDゲート723であるか又はANDゲート723を含み、入力719及び721は、ANDゲート723の入力である。制御レジスタ330のG状態フィールドのビット15(これは、フリップフロップの出力であり得る)が、ANDゲート723の入力719に結合される。既に説明したように、GチャネルがCONNECTED状態のいずれかにあるときに、ビット15は1である。ビット15が0であると、マルチプレクサ720を介する周辺デバイス機能からの任意の信号は、ANDゲート723によってゲートオフされる。GPチャネルがCONNECTED状態にあることに応答して、ビット15は1であり、従って、マルチプレクサ720を介して、選択された周辺デバイス機能上の信号の論理状態は、ANDゲート723を介して、マルチプレクサ726の入力731に流れる。
【0052】
従って、所与の周辺デバイス機能が所与のI/Oセル718に信号をアサートするために、そのI/Oセルのための制御レジスタは、所与の周辺デバイス機能の識別子に対してプログラムされなければならず、その周辺デバイス機能が結合されるチャネルは、CONNECTED状態のうちの一つでなければならない。制御レジスタにおける周辺デバイス機能識別子のビットは、そのチャネルのマルチプレクサ710、720を制御するために用いられ、そのチャネルのための状態ビット(例えば、ビット7及び15)の少なくとも1つが、チャネルの状態に基づいて周辺デバイス機能とI/Oセルとの間の通信経路をゲートオン/オフするために用いられる。
【0053】
マルチプレクサ726は、PチャネルとGチャネル両方がI/Oセル回路718と周辺デバイス機能との間にアクティブ接続を有する場合に、PチャネルとGチャネルとの間に優先選択を実装する。例えば、Gチャネルは、ビットのウェイクアッププロトコルシーケンスをI/Oピン719に駆動して、受信デバイスに送信が起ころうとしていることを知らせるために用いられ得、一方、Pチャネルは、データを受信デバイスに駆動するために用いられ得る。PRIORITY信号725は、マルチプレクサ725が、I/Oセル回路718に結合するためにPチャネル又はGチャネルのうちの一方を選択するための選択信号である。PRIORITY信号725は、例えば、状態機械530によってアサートされ得る。
【0054】
I/Oセル回路718は、制御レジスタ330内の共通制御フィールドの一つ又は複数のビットを受け取る。I/Oセル回路718は、そのビットを用いてI/Oセル回路718を構成する(例えば、オープンドレイン、プルアップ又はプルダウン抵抗器、ドライブ強度等)。
【0055】
図8は、所与のI/OピンXに対して、状態機械530によって実装される状態を示す例示の状態図である。この状態図は、所与のI/OピンのためのGチャネル又はPチャネルのいずれかに適用可能である。この図示された例における状態には、UNASSIGNED(未割り当て)810、HANDOVER(ハンドオーバー)820、CONNECTED(UNLOCKED)(接続(ロックされていない))830、CONNECTED(LOCKED)(接続(ロックされている))840、及びLOCKED850が含まれる。GUは、Gチャネルのための隠しレジスタビットであり、Gチャネルの未割り当て状態を示す。GUが1であることは、GチャネルがI/OピンXに対して割り当てられていないことを意味し、GUが0であることは、周辺デバイス機能がI/OピンXに対してGチャネルを介して割り当てられていることを意味する。PUもまた、Pチャネルのための隠しレジスタビットであり、GUビットと同じことを意味する。GLは、Gチャネルのロック状態を示すGチャネルのための隠しレジスタビットである。GLが1であることは、I/OピンXが特定の周辺デバイス機能に対してロックされた状態にあることを意味し、GLが0であることは、I/Oピンがロックされた状態にないことを意味する。PLもまた、Pチャネルのための隠しレジスタビットであり、GLビットと同じことを意味する。G状態は、Gチャネルの状態を示す(「00」はUNASSIGNEDを意味し、「01」はHANDOVERを意味し、「10」はCONNECTED(UNLOCKED)を意味し、「11」はCONNECTED(LOCKED)を意味する)。図8の状態図はGチャネルに適用可能であるが、類似の状態遷移がPチャネルに対して状態機械530によって実装される。
【0056】
UNASSIGNED状態810にある間、GUは1に等しく(未割り当て)、GLは0に等しく(ロックされていない)、GSTATE及びPSTATEは「00」に等しい(未割り当て)。状態機械530は、UNASSIGNED状態810からHANDOVER状態820に遷移し得る。HANDOVER状態において、I/OピンXは、周辺デバイス機能に引き渡されており、従って、I/Oピンは、もはや未割り当てではない。UNASSIGNED状態810とHANDOVER状態820との間の遷移は、2つの手法の内の1つにおいて引き起こされ得る。まず、PUが1に等しく設定されている(これは、PチャネルがI/OピンXに対してUNASSIGNED状態であることを意味する)場合、ソフトウェアが、その書き込みアドレスがI/OピンXのアドレスである書き込みトランザクションを発行し、nextGSTATEが「01」に設定され(制御レジスタ330内の状態ビット)、nextGFが0に等しくない(即ち、書き込みデータが周辺デバイス機能のアドレスであり、従って0ではない)場合、Gチャネル状態はUNASSIGNED状態810からHANDOVER状態820に変化する。状態機械530は、I/OピンXのための制御レジスタを更新して、(そのアドレスの識別子へのマッピングに続いて)周辺デバイス機能のための識別子を格納し、レジスタの状態ビットを「01」に更新して、Gチャネルの状態がHANDOVERになったことを示す。この時点で、Gチャネルは、特定の周辺デバイス機能に対してHANDOVER状態にあり、Pチャネルは、依然として、UNASSIGNED状態にある(Pチャネルマルチプレクサ710に結合された周辺デバイス機能のいずれも、I/OピンXに対して未割り当てではないことを意味する)。GチャネルがHANDOVER状態820にある間、GU=0であり、GLは0又は1であり、GSTATEは「01」である。
【0057】
HANDOVER状態820になると、CONNECTED(UNLOCKED)状態830、CONNECTED(LOCKED)状態840、又はLOCKED状態850のいずれかへの遷移が発生し得る。nextGSTATE=「10」であり、GLロックビットが0に設定されて、AuthG[X]511が、アドレスオーセンティケータ510によってアサートされると、CONNECTED(UNLOCKED)状態830への遷移が発生する。CONNECTED(UNLOCKED)状態830にある間、GU=0、GL=0、及びGSTATE=「10」である。状態機械530は、I/OピンXのための制御レジスタ330を更新して、Gチャネル状態を「10」として特定する。CONNECTED(UNLOCKED)状態830では、I/OピンXに接続されている周辺デバイス機能がI/Oピンを用いてデータを送信又は受信することが可能になる。
【0058】
AuthG[X]511がアドレスオーセンティケータ510によってアサートされるか、又はnextGSTATEが「11」でありGLロックビットが1に設定されると、HANDOVER状態820からCONNECTED(LOCKED)状態840への遷移が発生し得る。CONNECTED(LOCKED)状態840にある間、GU=0、GL=1、及びGSTATE=「11」である。状態機械530は、I/OピンXのための制御レジスタ330を更新して、Gチャネル状態を「11」として特定する。CONNECTED(LOCKED)状態830では、I/OピンXに接続されている周辺デバイス機能がI/Oピンを用いてデータを送信又は受信することができる。
【0059】
LOCKED状態850は、I/Oピンがロックされているがどの周辺デバイス機能にも接続されていない状態である。PU=0であり、nextGSTATE=「00」であり、nextGF=0であり、nextGU=1である間に、AUTHG[X]がアドレスオーセンティケータ510によってアサートされると、状態機械530はLOCKED状態850に遷移する。この状態にある間、PU=0(割り当て済み)、GU=1(割り当て済み)、GL=1(ロックされている)、及びGSTATE=「00」(未割り当て)である。AUTHP[x]がアドレスオーセンティケータによってアサートされ、nextPUが1に設定され、nextGLが0に設定されると、状態機械530は、LOCKED状態850からUNASSIGNED状態810に戻り得る。
【0060】
図9は、例示の方法900を図示するフローチャートである。902において、ターゲットI/Oピンへアクセスするための要求が行われる。一例において(及び上述したように)、これには、CPU104が、書き込みトランザクションを実施するために一つ又は複数の機械命令を実行することが含まれ、その書き込みトランザクションでは、書き込みアドレスがターゲットI/Oピンのアドレスであり、書き込みデータは周辺デバイス機能のアドレスを含む。
【0061】
904において、状態機械(例えば、I/Oマルチプレクサ120のオーセンティケータ320内の状態機械530)が、ターゲットI/Oピンが現在UNASSIGNED状態にあるか否かを判定する。この判定は、状態ビットの検査によって実施される。状態ビットがUNASSIGNED状態(例えば、00)に対応する場合、ターゲットI/OピンがUNASSIGNED状態にあること判定される。そうでない場合、ターゲットI/Oピンは、UNASSIGNED状態にないと判定される。ターゲットI/OピンがASSIGNED状態(異なる周辺デバイス機能に割り当てられていることを意味する)にある場合、906においてその要求は拒否される。要求の拒否は、要求を無視し、それ以上のアクションを取らないことを意味し得る。
【0062】
ターゲットI/Oピンが現在UNASSIGNED状態にある場合、制御は動作908に渡され、ターゲットI/Oピンの状態は、HANDOVER状態に変更される。この動作は、状態機械530がターゲットI/Oピンのための制御レジスタ330の状態フィールドを更新して、HANDOVER状態を特定することによって実施され得る。910において、I/Oピンを制御レジスタ330において特定された周辺デバイス機能に接続するための要求が行われる。この要求は、CPU104が書き込みトランザクションを発行することによって実施され得、書き込みトランザクションにおいて、書き込みアドレスは周辺デバイス機能のアドレスであり、書き込みデータは、I/OピンのためのCONNECTED状態の指示(例えば、CONNECTED(LOCKED)又はCONNECTED(UNLOCKED))を含む。アドレスオーセンティケータ510内の検証回路610は、書き込みアドレスに対応する識別子がI/Oピンの制御レジスタ内に現在格納されている識別子と一致するか否かを判定する。識別子が一致しない場合、914において要求は否定される。しかしながら、識別子が一致する場合、制御は動作916に移動し、そこで、状態機械530は、I/Oピンの状態を、CONNECTED状態のうちの1つ(動作910における要求において特定されたとおり)に変更する。その後、動作918において、所与の周辺デバイス機能に対してI/OピンがCONNECTED状態にある場合(状態機械530によって確実にされる)、制御レジスタ330内の共通制御ビットが構成される。
【0063】
図10A図10B、及び図10Cは、特定の周辺デバイス機能が特定のI/Oピンに接続する例を示す。3つの周辺デバイス1001、1002、及び1003は、それぞれ、UART0、UART1、及びI2C 0として示されている。UART 0は、0×40004800のベースアドレスと、送信機能(TXD)及び受信機能(RXD)の2つの周辺デバイス機能とを有する。TXD機能は、0×8のベースアドレスのためのアドレスオフセットを有し、RXDのオフセットは0×4である。同様に、UART 1は、0×40012800のベースアドレスを有し、0×8のTXDオフセット及び0×4のRXDオフセットを備える。I2Cのベースアドレスは、0×40073800であり、その2つの機能及びそれらのオフセットは、DATA(オフセット 0×8)及びCLK(オフセット 0×4)である。UNASSIGNED状態にあるI/Oピンは、1005において識別される。I/Oピンのアドレススペースは、0×4001A000のベースアドレスを有し、I/Oピン1、2、及び22は、それぞれ、0×4、0×8、及び0×58のオフセットを有する。
【0064】
この例において、UART 0のTXD機能は、I/Oピン22に接続するためのプロセスを開始する。工程1011において、書き込みトランザクションが実施され(例えばCPU102によって)、書き込みトランザクションにおいて、書き込みアドレスは、I/Oピン22のアドレス(0×4001A058)であり、書き込みデータは、UART 0のTXD機能のアドレス(0×40004808)を含む。オーセンティケータ320は、上述したように応答し、状態機械530は、I/Oピン22のための制御レジスタ330を更新して、I/Oピン及び対応する周辺デバイス機能の識別子の状態がPチャネルに対してHANDOVERであること(Gチャネルは、まだ、UNASSIGNED状態にある)、及び識別子は、UART 0 TXDアドレス0×40004808に対応することを特定する。
【0065】
工程1012において、書き込みトランザクションが実施され、書き込みトランザクションにおいて、書き込みアドレスはUART 0 TXDのアドレス(アドレス0×40004808)であり、書き込みデータは、I/Oピン22のため次をCONNECTED(UNLOCKED)状態として符号化するビットを含む。ファイアウォールは、UART 0 TXDをターゲットとするトランザクションのセキュリティを確実にし、従って、工程1012においてトランザクションを認証する。
【0066】
工程1013において、I/Oピン22のための共通制御ビットが書き込みトランザクションを介して構成され、書き込みトランザクションにおいて、書き込みアドレスは再びUART 0 TXDのアドレス(0×40004808)であり、書き込みデータは、共通制御構成ビットを含む。工程1012と同様に、ファイアウォールは、UART 0 TXDをターゲットとするトランザクションのセキュリティを確実にし、従って、工程1013において、トランザクションを認証する。
【0067】
用語「結合する」が本明細書全体を通して用いられている。この用語は、本明細書の説明と一貫する機能的関係を可能にする、接続、通信、又は信号経路を網羅し得る。例えば、デバイスAが、制御デバイスBを制御して或るアクションを実施する信号を生成する場合、第1の例では、デバイスAはデバイスBに結合され、第2の例では、介在構成要素CがデバイスAとデバイスBとの間の機能的関係を実質的に変更しない場合、デバイスAは、介在する構成要素Cを介してデバイスBに結合され、デバイスAによって生成された制御信号を介してデバイスBがデバイスAによって制御されるようにする。
【0068】
特許請求の範囲内で、説明した実施例における改変が可能であり、他の実施例が可能である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図10C
【国際調査報告】