(57)【特許請求の範囲】
【請求項１】
各々が共有システムリソースに対するアクセスを要求するアクセス要求を発行するように構成される複数のデータアクセス構成要素であって、前記共有システムリソースに領域記述子が関連付けられ、前記領域記述子は、前記複数のデータアクセス構成要素の各々に対する前記共有システムリソースについてのデフォルトアクセス許可を指定するものである、複数のデータアクセス構成要素と、
前記共有システムリソースについてのセマフォを実装するように、および、前記複数のデータアクセス構成要素のいずれかが前記共有システムリソースについての前記セマフォをロックした場合、前記複数のいずれのデータアクセス構成要素が前記共有システムリソースについての前記セマフォをロックしたかを示すセマフォ信号を生成するように構成されるセマフォモジュールと、
前記セマフォモジュールとメモリ保護ユニットとの間のハードウェア接続における前記セマフォ信号を受け取るように構成される前記メモリ保護ユニットであって、前記メモリ保護ユニットは、前記デフォルトアクセス許可と前記セマフォ信号とから有効アクセス許可を判定する有効許可論理部を備え、前記メモリ保護ユニットは、前記有効アクセス許可に基づいて前記アクセス要求を認可または拒否するようにさらに構成され、前記メモリ保護ユニットによって生成された第１のデータアクセス構成要素についての前記有効アクセス許可は、第２のデータアクセス構成要素が前記共有システムリソースについての前記セマフォをロックしたことを前記セマフォ信号が示す場合の前記第１のデータアクセス構成要素についてのデフォルトアクセス許可とは異なる、メモリ保護ユニットと、
システム相互接続であって、それを通じて、前記アクセス要求が前記複数のデータアクセス構成要素から前記メモリ保護ユニットへと通信されるシステム相互接続と、
前記セマフォモジュールと前記メモリ保護ユニットとの間との間のハードウェア接続であって、前記ハードウェア接続は、前記システム相互接続とは独立しており、前記セマフォ信号は、前記セマフォモジュールと前記メモリ保護ユニットとの間を前記ハードウェア接続を通じて通信される、ハードウェア接続と、を備える、電子システム。
【請求項２】
前記セマフォモジュールは、前記セマフォをセマフォレジスタにおいて記憶される状態インジケータを有するステートマシンとして実装し、前記ステートマシンはアンロック状態および複数のロック状態を有し、前記複数のロック状態の各々は、前記セマフォをロックした前記複数のデータアクセス構成要素のうちの１つに対応し、前記セマフォ信号には前記状態インジケータが反映される、請求項１に記載の電子システム。
【請求項３】
前記セマフォモジュールは、セマフォレジスタにおいて、前記共有システムリソースがアンロックされていることのインジケータと、前記共有システムリソースをロックしたデータアクセス構成要素の識別情報のインジケータとから成る群から選択されるインジケータを記憶することによって、前記セマフォを実装する、請求項１に記載の電子システム。
【請求項４】
前記メモリ保護ユニットは、
前記領域記述子を記憶するための少なくとも１つの領域記述子レジスタであって、前記領域記述子は、前記共有システムリソースについて、前記共有システムリソースのためのアドレス範囲、および、前記複数のデータアクセス構成要素の各々に対するデフォルトアクセス許可を指定する、少なくとも１つの領域記述子レジスタと、
前記セマフォモジュールからの前記セマフォ信号および前記少なくとも１つの領域記述子レジスタからの前記デフォルトアクセス許可を受け取るため、および、前記セマフォ信号に基づいて前記デフォルトアクセス許可を場合によって変更することによって前記複数のデータアクセス構成要素に対する有効アクセス許可を生成するためのアクセス評価回路とを備える、請求項３に記載の電子システム。
【請求項５】
前記アクセス評価回路は、前記複数のデータアクセス構成要素の各々に対して、
データアクセス構成要素に対するデフォルトアクセス許可の各アクセスタイプの論理部を備え、該論理部は、各アクセスタイプに対するデフォルトアクセス許可入力およびイネーブル入力を有し、各アクセスタイプについて、前記デフォルトアクセス許可入力は、前記少なくとも１つの領域記述子レジスタからアクセスタイプのデフォルトアクセス許可を示す信号を受け取るように結合され、前記イネーブル入力は、前記セマフォ信号が、前記データアクセス構成要素が前記セマフォをロックしたことを示す場合はイネーブル信号を受け取るように、かつ、前記セマフォ信号が、前記データアクセス構成要素が前記セマフォをロックしたことを示さない場合はディセーブル信号を受け取るように結合され、各アクセスタイプの前記論理部は、前記イネーブル信号が受け取られた場合は前記デフォルトアクセス許可を示す信号を伝達し、各アクセスタイプの前記論理部は、前記ディセーブル信号が受け取られた場合は前記アクセスタイプに関するアクセスが拒否されることを示す有効アクセス許可を伝達する、請求項４に記載の電子システム。
【請求項６】
前記アクセス評価回路は、
前記セマフォモジュールから前記セマフォ信号を受け取るように、かつ、前記セマフォがイネーブルの場合は、前記セマフォをロックした前記データアクセス構成要素のインジケータに基づいて前記イネーブル信号または前記ディセーブル信号を生成するように構成されるデコーダをさらに備え、前記セマフォをロックした前記データアクセス構成要素の前記インジケータは前記セマフォ信号により伝達される、請求項５に記載の電子システム。
【請求項７】
前記アクセス評価回路は、データアクセス構成要素によって為されたアクセス要求に関連付けられたアドレスを受け取るようにさらに構成されており、前記アクセス要求は、前記少なくとも１つの領域記述子レジスタから開始アドレスおよび終了アドレスを受け取るように、要求されるアクセスタイプを指定し、前記開始アドレスおよび前記終了アドレスは前記アクセス要求により指定される前記アドレスが前記アドレスの範囲内に入るか否かを判定するように、かつ、前記有効アクセス許可に基づいて、前記データアクセス構成要素が前記要求されるアクセスタイプの実行を許可されるか否かを判定するように前記共有システムリソースが及ぶアドレスの範囲を決定する、請求項４に記載の電子システム。
【請求項８】
前記システム相互接続は、前記複数のデータアクセス構成要素、前記セマフォモジュール、前記メモリ保護ユニット、および前記共有システムリソースと結合される、請求項１に記載の電子システム。
【請求項９】
前記共有システムリソースは、単一メモリロケーション、メモリロケーションのブロック、レジスタ、複数のレジスタ、周辺メモリロケーション、および複数の周辺メモリロケーションから成る群から選択される、請求項１に記載の電子システム。
【請求項１０】
領域記述子を記憶するための領域記述子レジスタであって、前記領域記述子は、共有システムリソースについて、該共有システムリソースのためのアドレス範囲、および複数のデータアクセス構成要素の各々に対するデフォルトアクセス許可を指定する、領域記述子レジスタと、
前記領域記述子レジスタと、システム相互接続と、前記システム相互接続とは独立した、セマフォモジュールへのハードウェア接続とに結合され、有効許可論理部を備えるアクセス評価回路であって、該アクセス評価回路は、
前記共有システムリソースについてのアクセス要求を前記複数のデータアクセス構成要素のうちの第１のデータアクセス構成要素から前記システム相互接続を通じて受け取り、
前記第１のデータアクセス構成要素についての前記デフォルトアクセス許可を前記領域記述子レジスタから受け取り、
セマフォ信号を前記セマフォモジュールから前記ハードウェア接続を通じて受け取り、前記セマフォ信号は、複数のデータアクセス構成要素のいずれかが前記共有システムリソースに関連付けられるセマフォをロックした場合、前記複数のデータアクセス構成要素のいずれが前記共有システムリソースに関連付けられるセマフォをロックしたかを示し、
前記デフォルトアクセス許可および前記セマフォ信号に基づいて、前記有効許可論理部を使用して、前記第１のデータアクセス構成要素についての有効アクセス許可を生成し、前記第１のデータアクセス構成要素について生成された前記有効アクセス許可は、第２のデータアクセス構成要素が前記共有システムリソースについての前記セマフォをロックしたことを前記セマフォ信号が示す場合の前記第１のデータアクセス構成要素についての前記デフォルトアクセス許可とは異なり、
前記有効アクセス許可に基づいて前記複数のデータアクセス構成要素が要求されるアクセスの実行を許可されるか否かを判定するように、構成される、アクセス評価回路と、を備える、メモリ保護ユニット。
【請求項１１】
前記アクセス評価回路は、前記複数のデータアクセス構成要素のうちの１つのデータアクセス構成要素によって為されたアクセス要求に関連付けられるアドレスを受け取るように、かつ、前記領域記述子レジスタから開始アドレスおよび終了アドレスを受け取るようにさらに構成され、前記アクセス要求により指定される前記アドレスが前記アドレスの範囲内に入るか否かを判定するように前記開始アドレスおよび前記終了アドレスは前記共有システムリソースが及ぶアドレスの範囲を決定する、請求項１０に記載のメモリ保護ユニット。
【請求項１２】
前記アクセス評価回路は、前記複数のデータアクセス構成要素の各々に対して、
データアクセス構成要素に関連付けられるデフォルトアクセス許可の各アクセスタイプの論理部を備え、該論理部は、各アクセスタイプに対するデフォルトアクセス許可入力およびイネーブル入力を有し、各アクセスタイプについて、前記デフォルトアクセス許可入力は、前記領域記述子レジスタからアクセスタイプに対するデフォルトアクセス許可を示す信号を受け取るように結合され、前記イネーブル入力は、前記セマフォ信号が、前記データアクセス構成要素が前記セマフォをロックしたことを示す場合はイネーブル信号を受け取るように、かつ、前記セマフォ信号が、別のデータアクセス構成要素が前記セマフォをロックしたことを示す場合はディセーブル信号を受け取るように結合され、各アクセスタイプの前記論理部は、前記イネーブル信号が受け取られた場合は前記デフォルトアクセス許可を示す信号を伝達し、各アクセスタイプの前記論理部は前記ディセーブル信号が受け取られた場合は前記アクセスタイプに関するアクセスが拒否されたことを示す有効アクセス許可を伝達する、請求項１０に記載のメモリ保護ユニット。
【請求項１３】
前記アクセス評価回路は、セマフォモジュールから前記セマフォ信号を受け取るように、かつ、前記セマフォをロックした前記データアクセス構成要素のインジケータに基づいて前記イネーブル信号または前記ディセーブル信号を生成するように構成されるデコーダをさらに備え、前記セマフォをロックした前記データアクセス構成要素の前記インジケータは前記セマフォ信号により伝達される、請求項１２に記載のメモリ保護ユニット。
【請求項１４】
複数のデータアクセス構成要素を有する電子システムにおいて共有システムリソースに対するアクセスを提供する方法であって、
前記共有システムリソースの領域記述子を領域記述子レジスタにおいて記憶する工程であって、前記領域記述子によって前記複数のデータアクセス構成要素の各々に対するデフォルトアクセス許可が指定され、前記領域記述子によって前記共有システムリソースに関連付けられたセマフォが識別される、前記工程と、
アクセス要求を前記複数のデータアクセス構成要素のうちの第１のデータアクセス構成要素からシステム相互接続を通じて受け取る工程と、
前記共有システムリソースに関連付けられた前記セマフォをロックした第２のデータアクセス構成要素の識別情報を示すセマフォ信号を、前記システム相互接続とは独立した、セマフォモジュールとのハードウェア接続を通じて受け取る工程と、
前記デフォルトアクセス許可および前記セマフォ信号に基づいて、有効アクセス許可論理部を使用して、前記複数のデータアクセス構成要素に対する有効アクセス許可を生成する工程と、を備えており、
前記第２のデータアクセス構成要素が前記セマフォをロックしたことを前記セマフォ信号が示す場合、前記第１のデータアクセス構成要素に対する前記デフォルトアクセス許可によってアクセスが許可されることが指定される場合であっても、前記有効アクセス許可論理部は、前記共有システムリソースに対するアクセスが拒否されることを示すように前記第１のデータアクセス構成要素について前記有効アクセス許可を生成する、方法。
【請求項１５】
前記領域記述子は、前記共有システムリソースに関連付けられる前記セマフォがイネーブルされるか否かのインジケータも有し、前記有効アクセス許可を生成する前記工程は、前記セマフォがイネーブルされない場合は実行されない、請求項１４に記載の方法。
【請求項１６】
前記有効アクセス許可に基づいて前記複数のデータアクセス構成要素からのアクセス要求を認可または拒否する工程をさらに備える、請求項１４に記載の方法。
【請求項１７】
セマフォレジスタにおいて、前記共有システムリソースがアンロックされているというインジケータ、および、前記共有システムリソースをロックしたロック要求データアクセス構成要素の識別情報のインジケータから成る群から選択されるインジケータを記憶する工程と、
前記セマフォ信号として、前記ロック要求データアクセス構成要素の前記識別情報の前記インジケータを生成する工程とをさらに備える、請求項１４に記載の方法。
【請求項１８】
前記セマフォはアンロック状態、または複数のロック状態のうちの１つにあることができ、ロック状態は前記複数のデータアクセス構成要素の各々に関連付けられ、前記方法は、
前記セマフォレジスタにおいて、前記共有システムリソースがアンロックされているという前記インジケータを記憶することによって、前記セマフォを前記アンロック状態に初期化する工程と、
前記ロック要求データアクセス構成要素から書き込み要求を受け取る工程と、
前記セマフォを、前記ロック要求データアクセス構成要素に関連付けられるロック状態に遷移させる工程と、を備え、前記ロック状態に遷移させる工程は、前記セマフォレジスタにおいて前記ロック要求データアクセス構成要素の前記識別情報の前記インジケータを記憶する工程を備え、前記セマフォ信号は、前記セマフォレジスタにおいて記憶されている前記インジケータを伝達する、請求項１７に記載の方法。
【請求項１９】
前記有効アクセス許可を生成する工程は、前記複数のデータアクセス構成要素のうちのデータアクセス構成要素について、
前記領域記述子が記憶されている前記領域記述子レジスタから前記デフォルトアクセス許可を受け取る工程であって、前記デフォルトアクセス許可は、前記データアクセス構成要素が１つまたは複数のアクセスタイプの実行を許可されるか否かを示す、前期工程と、
前記セマフォ信号に基づいて、前記データアクセス構成要素が前記セマフォをロックしたか否かを判定する工程と、
前記データアクセス構成要素が前記セマフォをロックしていた場合、前記データアクセス構成要素に対する前記有効アクセス許可を、前記デフォルトアクセス許可と同一のものとして生成する工程と、
前記データアクセス構成要素が前記セマフォをロックしていない場合、前記１つまたは複数のアクセスタイプが前記データアクセス構成要素に対して許可されていないことを示すように、前記データアクセス構成要素に対する前記有効アクセス許可を生成する工程と、を備える、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の主題の実施形態は、共有システムリソースに対するアクセスを制御するための方法および装置に関する。
【背景技術】
【０００２】
現行の電子システムでは、共有メモリ領域に対する同時アクセスを制御するための機構を提供するために、セマフォが使用されている。適切に使用されると、セマフォは、共有メモリ領域が同時にではなく順次アクセスされることを確実にすることを助け、それによって、共有メモリ領域が一貫性を持って（コヒーレントに）維持されることができる。例えば、マルチプロセッサシステムでは、プロセッサが共有メモリ領域にアクセスする（例えば、更新または書き込み）前に、プロセッサは、ソフトウェア規則（ｓｏｆｔｗａｒｅ
ｃｏｎｖｅｎｔｉｏｎ）によって、共有メモリ領域に関連付けられるセマフォが現在別のプロセッサによってロックされているか否かを判定するように要求される場合がある。共有メモリ領域に関連付けられるセマフォが現在別のプロセッサによってロックされていない場合、プロセッサはセマフォをロックして、共有メモリ領域にアクセスすることができ、他のプロセッサはその共有メモリ領域に対する同時アクセスを避ける必要がある。セマフォをロックしているプロセッサのみが共有メモリ領域にアクセスして、その後、アクセスが完了した後にセマフォのロックを解除（アンロック）することができる。セマフォがアンロックされると、別のプロセッサが、共有メモリ領域に対するアクセスを確保するためにセマフォをロックするよう試みることができる。
【０００３】
なお、先行技術文献である特許文献１には、共通メモリ保護方式について記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許５，６３４，０３８号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プロセッサが正しい様式でセマフォを使用する場合にのみ、適切なシステム操作が保証される。より具体的には、プロセッサの各々は共有メモリ領域に対するアクセスを行うのと併せて、セマフォのロックおよびアンロックに関連付けられる非明示的なプロトコルに従わなければならない。プログラミング・エラーまたは悪意のあるソフトウェアのいずれかのために、要求されるプロトコルに従うことに失敗することによって、自身が多数のエラー状態（例えば、データの破損、システムのハングアップ、システムクラッシュなど）のうちのいずれかにあることが明らかとなる。プロセッサ産業において、システム障害の耐性に対する要求は高まり続けている。
【課題を解決するための手段】
【０００６】
上記問題点を解決するために、請求項１に記載の発明は、電子システムであって、各々が共有システムリソースに対するアクセスを要求するアクセス要求を発行するように構成される複数のデータアクセス構成要素であって、前記共有システムリソースに領域記述子が関連付けられる複数のデータアクセス構成要素と、前記共有システムリソースについてのセマフォを実装するように、および、前記複数のデータアクセス構成要素のいずれかが前記共有システムリソースについての前記セマフォをロックした場合、いずれのデータアクセス構成要素が前記共有システムリソースについての前記セマフォをロックしたかを示すセマフォ信号を生成するように構成されるセマフォモジュールと、前記セマフォ信号および前記領域記述子に基づいて前記アクセス要求を認可または拒否するように構成されるメモリ保護ユニットとを備えることを要旨とする。
【０００７】
請求項２に記載の発明は、請求項１に記載の電子システムにおいて、前記セマフォモジュールは、前記セマフォをセマフォレジスタにおいて記憶される状態インジケータを有するステートマシンとして実装し、前記ステートマシンはアンロック状態および複数のロック状態を有し、前記複数のロック状態の各々は、前記セマフォをロックした前記複数のデータアクセス構成要素のうちの１つに対応し、前記セマフォ信号には前記状態インジケータが反映される、ことを要旨とする。
【０００８】
請求項３に記載の発明は、請求項１に記載の電子システムにおいて、前記セマフォモジュールは、セマフォレジスタにおいて、前記共有システムリソースがアンロックされていることのインジケータと、前記共有システムリソースをロックしたデータアクセス構成要素の識別情報のインジケータとから成る群から選択されるインジケータを記憶することによって、前記セマフォを実装する、ことを要旨とする。
【０００９】
請求項４に記載の発明は、請求項３に記載の電子システムにおいて、前記メモリ保護ユニットは、前記領域記述子を記憶するための少なくとも１つの領域記述子レジスタであって、前記領域記述子は、前記共有システムリソースについて、前記共有システムリソースのためのアドレス範囲、および、前記複数のデータアクセス構成要素の各々に対するデフォルトアクセス許可を指定する、少なくとも１つの領域記述子レジスタと、前記セマフォモジュールからの前記セマフォ信号および前記少なくとも１つの領域記述子レジスタからの前記デフォルトアクセス許可を受け取るため、および、前記セマフォ信号に基づいて前記デフォルトアクセス許可を場合によって変更することによって前記複数のデータアクセス構成要素に対する有効アクセス許可を生成するためのアクセス評価回路とを備える、ことを要旨とする。
【００１０】
請求項５に記載の発明は、請求項４に記載の電子システムにおいて、前記アクセス評価回路は、前記複数のデータアクセス構成要素の各々に対して、データアクセス構成要素に対するデフォルトアクセス許可の各アクセスタイプの論理部を備え、該論理部は、各アクセスタイプに対するデフォルトアクセス許可入力およびイネーブル入力を有し、各アクセスタイプについて、前記デフォルトアクセス許可入力は、前記少なくとも１つの領域記述子レジスタからアクセスタイプのデフォルトアクセス許可を示す信号を受け取るように結合され、前記イネーブル入力は、前記セマフォ信号が、前記データアクセス構成要素が前記セマフォをロックしたことを示す場合はイネーブル信号を受け取るように、かつ、前記セマフォ信号が、前記データアクセス構成要素が前記セマフォをロックしたことを示さない場合はディセーブル信号を受け取るように結合され、各アクセスタイプの前記論理部は、前記イネーブル信号が受け取られた場合は前記デフォルトアクセス許可を示す信号を伝達し、各アクセスタイプの前記論理部は、前記ディセーブル信号が受け取られた場合は前記アクセスタイプに関するアクセスが拒否されることを示す有効アクセス許可を伝達する、ことを要旨とする。
【００１１】
請求項６に記載の発明は、請求項５に記載の電子システムにおいて、前記アクセス評価回路は、前記セマフォモジュールから前記セマフォ信号を受け取るように、かつ、前記セマフォがイネーブルの場合は、前記セマフォをロックした前記データアクセス構成要素のインジケータに基づいて前記イネーブル信号または前記ディセーブル信号を生成するように構成されるデコーダをさらに備え、前記セマフォをロックした前記データアクセス構成要素の前記インジケータは前記セマフォ信号により伝達される、ことを要旨とする。
【００１２】
請求項７に記載の発明は、請求項４に記載の電子システムにおいて、前記アクセス評価回路は、データアクセス構成要素によって為されたアクセス要求に関連付けられたアドレスを受け取るように構成されており、前記アクセス要求は、前記少なくとも１つの領域記述子レジスタから開始アドレスおよび終了アドレスを受け取るように、要求されるアクセスタイプを指定し、前記開始アドレスおよび前記終了アドレスは前記アクセス要求により指定される前記アドレスが前記アドレスの範囲内に入るか否かを判定するように、かつ、前記有効アクセス許可に基づいて、前記データアクセス構成要素が前記要求されるアクセスタイプの実行を許可されるか否かを判定するように前記共有システムリソースが及ぶアドレスの範囲を決定する、ことを要旨とする。
【００１３】
請求項８に記載の発明は、請求項１に記載の電子システムにおいて、前記複数のデータアクセス構成要素、前記セマフォモジュール、前記メモリ保護ユニット、および前記共有システムリソースと結合されるシステム相互接続をさらに備え、前記アクセス要求は前記複数のデータアクセス構成要素から前記システム相互接続を通じて前記メモリ保護ユニットに通信される、ことを要旨とする。
【００１４】
請求項９に記載の発明は、請求項８に記載の電子システムにおいて、セマフォレジスタとアクセス評価回路との間のハードウェア接続をさらに備え、前記ハードウェア接続は前記システム相互接続とは異なり、前記セマフォ信号は前記ハードウェア接続を通じて前記セマフォレジスタと前記アクセス評価回路との間で通信される、ことを要旨とする。
【００１５】
請求項１０に記載の発明は、請求項１に記載の電子システムにおいて、前記共有システムリソースは、単一メモリロケーション、複数のメモリロケーションからなるメモリロケーションのブロック、レジスタ、複数のレジスタ、周辺メモリロケーション、および複数の周辺メモリロケーションから成る群から選択される、ことを要旨とする。
【００１６】
請求項１１に記載の発明は、メモリ保護ユニットであって、領域記述子を記憶するための領域記述子レジスタであって、前記領域記述子は、共有システムリソースについて、該共有システムリソースのためのアドレス範囲、および複数のデータアクセス構成要素の各々に対するデフォルトアクセス許可を指定する、領域記述子レジスタと、前記領域記述子レジスタに結合されるアクセス評価回路であって、該アクセス評価回路は、前記デフォルトアクセス許可およびセマフォ信号を受け取るように構成されており、前記セマフォ信号に基づいて前記デフォルトアクセス許可を潜在的に変更することによって前記複数のデータアクセス構成要素に対する有効アクセス許可を生成するように、かつ、前記有効アクセス許可に基づいて前記複数のデータアクセス構成要素が要求されるアクセスの実行を許可されるか否かを判定するように前記セマフォ信号は、複数のデータアクセス構成要素のいずれが前記共有システムリソースに関連付けられるセマフォをロックしたかを示す、アクセス評価回路とを備えることを要旨とする。
【００１７】
請求項１２に記載の発明は、請求項１１に記載のメモリ保護ユニットにおいて、前記アクセス評価回路は、前記複数のデータアクセス構成要素のうちの１つのデータアクセス構成要素によって為されたアクセス要求に関連付けられるアドレスを受け取るように、かつ、前記領域記述子レジスタから開始アドレスおよび終了アドレスを受け取るように構成され、前記アクセス要求により指定される前記アドレスが前記アドレスの範囲内に入るか否かを判定するように前記開始アドレスおよび前記終了アドレスは前記共有システムリソースが及ぶアドレスの範囲を決定する、ことを要旨とする。
【００１８】
請求項１３に記載の発明は、請求項１１に記載のメモリ保護ユニットにおいて、前記アクセス評価回路は、前記複数のデータアクセス構成要素の各々に対して、データアクセス構成要素に関連付けられるデフォルトアクセス許可の各アクセスタイプの論理部を備え、該論理部は、各アクセスタイプに対するデフォルトアクセス許可入力およびイネーブル入力を有し、各アクセスタイプについて、前記デフォルトアクセス許可入力は、前記領域記述子レジスタからアクセスタイプに対するデフォルトアクセス許可を示す信号を受け取るように結合され、前記イネーブル入力は、前記セマフォ信号が、前記データアクセス構成要素が前記セマフォをロックしたことを示す場合はイネーブル信号を受け取るように、かつ、前記セマフォ信号が、別のデータアクセス構成要素が前記セマフォをロックしたことを示す場合はディセーブル信号を受け取るように結合され、各アクセスタイプの前記論理部は、前記イネーブル信号が受け取られた場合は前記デフォルトアクセス許可を示す信号を伝達し、各アクセスタイプの前記論理部は前記ディセーブル信号が受け取られた場合は前記アクセスタイプに関するアクセスが拒否されたことを示す有効アクセス許可を伝達する、ことを要旨とする。
【００１９】
請求項１４に記載の発明は、請求項１３に記載のメモリ保護ユニットにおいて、前記アクセス評価回路は、セマフォモジュールから前記セマフォ信号を受け取るように、かつ、前記セマフォをロックした前記データアクセス構成要素のインジケータに基づいて前記イネーブル信号または前記ディセーブル信号を生成するように構成されるデコーダをさらに備え、前記セマフォをロックした前記データアクセス構成要素の前記インジケータは前記セマフォ信号により伝達される、ことを要旨とする。
【００２０】
請求項１５に記載の発明は、複数のデータアクセス構成要素を有する電子システムにおいて共有システムリソースに対するアクセスを提供する方法であって、前記共有システムリソースの領域記述子を領域記述子レジスタにおいて記憶する工程であって、前記領域記述子によって前記複数のデータアクセス構成要素の各々に対するデフォルトアクセス許可が指定され、前記領域記述子によって前記共有システムリソースに関連付けられたセマフォが識別される、前記工程と、前記共有システムリソースに関連付けられた前記セマフォをロックしたデータアクセス構成要素が存在する場合、該データアクセス構成要素の識別情報を示すセマフォ信号をセマフォモジュールとのハードウェア接続を通じて受け取る工程と、前記デフォルトアクセス許可および前記セマフォ信号に基づいて前記複数のデータアクセス構成要素に対する有効アクセス許可を生成する工程、とを備えており、特定のデータアクセス構成要素が前記セマフォをロックしたことを前記セマフォ信号が示す場合、他のデータアクセス構成要素に対する前記デフォルトアクセス許可によってアクセスが許可されることが指定される場合であっても、前記有効アクセス許可を生成され、前記共有システムリソースに対するアクセスが拒否されることを他のデータアクセス構成要素に対して示すようになることを要旨とする。
【００２１】
請求項１６に記載の発明は、請求項１５に記載の方法において、前記領域記述子は、前記共有システムリソースに関連付けられる前記セマフォがイネーブルされるか否かのインジケータも有し、前記有効アクセス許可を生成する前記工程は、前記セマフォがイネーブルされない場合は実行されない、ことを要旨とする。
【００２２】
請求項１７に記載の発明は、請求項１５に記載の方法において、前記有効アクセス許可に基づいて前記複数のデータアクセス構成要素からのアクセス要求を認可または拒否する工程をさらに備える、ことを要旨とする。
【００２３】
請求項１８に記載の発明は、請求項１５に記載の方法において、セマフォレジスタにおいて、前記共有システムリソースがアンロックされているというインジケータ、および、前記共有システムリソースをロックしたロック要求データアクセス構成要素の識別情報のインジケータから成る群から選択されるインジケータを記憶する工程と、前記セマフォ信号として、前記ロック要求データアクセス構成要素の前記識別情報の前記インジケータを生成する工程とをさらに備える、ことを要旨とする。
【００２４】
請求項１９に記載の発明は、請求項１８に記載の方法において、前記セマフォはアンロック状態、または複数のロック状態のうちの１つにあることができ、ロック状態は前記複数のデータアクセス構成要素の各々に関連付けられ、前記方法は、前記セマフォレジスタにおいて、前記共有システムリソースがアンロックされているという前記インジケータを記憶することによって、前記セマフォを前記アンロック状態に初期化する工程と、前記ロック要求データアクセス構成要素から書き込み要求を受け取る工程と、前記セマフォを、前記ロック要求データアクセス構成要素に関連付けられるロック状態に遷移させる工程とを備え、前記ロック状態に遷移させる工程は、前記セマフォレジスタにおいて前記ロック要求データアクセス構成要素の前記識別情報の前記インジケータを記憶する工程を備え、前記セマフォ信号は、前記セマフォレジスタにおいて記憶されている前記インジケータを伝達する、ことを要旨とする。
【００２５】
請求項２０に記載の発明は、請求項１５に記載の方法において、前記有効アクセス許可を生成する工程は、前記複数のデータアクセス構成要素のうちのデータアクセス構成要素について、前記領域記述子が記憶されている前記領域記述子レジスタから前記デフォルトアクセス許可を受け取る工程であって、前記デフォルトアクセス許可は、前記データアクセス構成要素が１つまたは複数のアクセスタイプの実行を許可されるか否かを示す、前期工程と、前記セマフォ信号に基づいて、前記データアクセス構成要素が前記セマフォをロックしたか否かを判定する工程と、前記データアクセス構成要素が前記セマフォをロックしていた場合、前記データアクセス構成要素に対する前記有効アクセス許可を、前記デフォルトアクセス許可と同一のものとして生成する工程と、前記データアクセス構成要素が前記セマフォをロックしていない場合、前記１つまたは複数のアクセスタイプが前記データアクセス構成要素に対して許可されていないことを示すように、前記データアクセス構成要素に対する前記有効アクセス許可を生成する工程とを備える、ことを要旨とする。
【図面の簡単な説明】
【００２６】
【図１】例示的な実施形態による電子システムの簡略化されたブロック図。
【図２】例示的な実施形態によるセマフォモジュールの簡略化されたブロック図。
【図３】例示的な実施形態によるセマフォステートマシンの図。
【図４】例示的な実施形態による、複数のセマフォ状態を通じて遷移する方法のフローチャート。
【図５】例示的な実施形態による領域記述子の例示的なフォーマットの図。
【図６】例示的な実施形態によるメモリ保護ユニットの簡略化されたブロック図。
【図７】例示的な実施形態による有効アクセス許可生成論理部の簡略化されたブロック図。
【図８】例示的な実施形態による、セマフォによって実施されメモリ保護ユニットによって保護される共有システムリソースに対するアクセス要求を認可または拒否するための方法のフローチャート。
【図９】例示的な実施形態による、セマフォによって影響を与えられるメモリ保護ユニットを備える電子システムを製造するための方法のフローチャート。
【発明を実施するための形態】
【００２７】
本明細書に記載される実施形態は、共有システムリソースのセマフォアクセス制御を実施するための方法および装置を含む。さまざまな実施形態が、一貫性を持たない様式で共有メモリにアクセスしようと試みるおそれがある、誤りのある、または悪意のあるソフトウェアが絶えず存在する危険性があるにもかかわらず、マルチプロセッサシステムにおける一貫性を持ったメモリアクセスをよりよく保証することができる。下記により詳細に説明されるように、セマフォはソフトウェアにおいて、共有システムリソースのための領域記述子に明示的に関連付けられることができる。基本的に、各領域記述子は、共有システムリソースを定義する１つまたは複数のアドレスの範囲、および、共有システムリソースに関する、さまざまなシステム構成要素（例えば、プロセッサまたは他の構成要素）に対するデフォルトアクセス許可を指定する。システム構成要素が共有システムリソースを定義するアドレス範囲内に入るアドレスにアクセスするための要求を発行すると、メモリ保護ユニットは、システム構成要素がアクセスを実行するための適切な許可を有するか否かを判定する。システム構成要素がアクセスを実行するための適切な許可を有する場合、メモリ保護ユニットはアクセス要求を認可することができる。システム構成要素がアクセスを実行するための適切な許可を有しない場合、メモリ保護ユニットはアクセス要求を拒否することができる。
【００２８】
一実施形態によれば、メモリ保護ユニットは、セマフォモジュールから信号を受け取り、この信号は、システム構成要素が共有システムリソースに関連付けられるセマフォをロックしているか否かを示す。セマフォ信号に基づいて、セマフォを適切にロックしているシステム構成要素のみが共有システムリソースに対するアクセス要求を認可され得ることを確実にするために、メモリ保護ユニットは、対応する領域記述子においてコード化されているデフォルトアクセス許可を変更することができてもよい。
【００２９】
さまざまな実施形態は、多数のシステムアーキテクチャのいずれかにおいて実装されることができ、図１は、特定の例示的な実施形態による電子システム１００の簡略化されたブロック図を示す。システム１００は、複数のデータアクセス構成要素１０２、１０３、１０４（ＤＡＣ）（本明細書においては「マスタ」とも称される）と、システムバス１０６と、セマフォモジュール１０８と、メモリ保護ユニット１１０（ＭＰＵ）と、１つまたは複数のランダム・アクセス・メモリ１１２（ＲＡＭ）（例えば、静的ＲＡＭ（ＳＲＡＭ））と、読み出し専用フラッシュアレイ１１４と、１つまたは複数の周辺機器モジュール１２０、１２２と、１つまたは複数の周辺機器用バス１２４、１２６とを備える。
【００３０】
ＤＡＣ１０２〜１０４、セマフォモジュール１０８、ＭＰＵ１１０、ＲＡＭ１１２、フラッシュアレイ１１４、および周辺機器モジュール１２０、１２２の間の通信は、一実施形態によれば、システムバス１０６および周辺機器用バス１２４、１２６を介して実装される。例えば、ＤＡＣ１０２〜１０４は、バスマスタとして機能することができ（例えば、ＤＡＣ１０２〜１０４はマスタポートを介してシステムバス１０６に接続される）、ＲＡＭ１１２、フラッシュアレイ１１４、および周辺機器用モジュール１２０、１２２はスレーブとして機能することができる（例えば、ＲＡＭ１１２、フラッシュアレイ１１４、および周辺機器用バス１２４はスレーブポートを介してシステムバス１０６に接続される）。バスマスタとして、ＤＡＣ１０２〜１０４は、システムバス１０６を介してメモリロケーション（例えば、ＲＡＭ１１２およびフラッシュアレイ１１４）にアクセスするよう試みることができる。同様に、ＤＡＣ１０２〜１０４は、システムバス１０６および周辺機器用バス１２４、１２６を介して周辺機器モジュール１２０、１２２、セマフォモジュール１０８、およびＭＰＵ１１０にアクセスすることができる。各ＤＡＣ１０２〜１０４は、固有のバスマスタ番号を有し、これは、ＤＡＣ１０２〜１０４がメモリロケーションまたは他のモジュールに対するアクセス試行を行うときにＤＡＣ１０２〜１０４がシステムバス１０６上で（アクセスアドレスとともに）提示することができる。他の実施形態では、通信バス構造は図１に描かれているものとは異なってもよい。
【００３１】
本明細書において用語「バス」が使用されているが、「バス」は基本的に、システムエンティティ間でデータ、制御信号、または他の信号の通信を容易にする、システムエンティティ間の一種の相互接続であることが理解されるべきである。従って、本明細書における用語「バス」の使用は限定であるように意図されるものではなく、システムエンティティ間の通信を提供するのに十分であるさまざまなタイプの相互接続のいずれかとして広範に解釈されるべきである。例えば、システムバス１０６（または「相互接続」）および周辺機器用バス１２４、１２６（または「相互接続」）は、例えば、３２ビット幅バスであることができ、ただし、システムバス１０６および／または周辺機器用バス１２４、１２６は代替的により広いまたはより狭いものであってもよい。バス１０６、１２４、１２６の各々は、バスプロトコル変換、バス幅変換、動作周波数変換、または他の信号変更を実行するために、バスコントローラ（図示せず）を実装することができ、ただしこれは必須ではない。加えて、バス１０６、１２４、１２６の各々は、アドレス線、データ線、およびさまざまな制御線（例えば、読み出し／書き込み制御信号線、バスクロック線、転送サイズ信号線、および／または待ち信号線）を備える。逆に、周辺機器用バス１２４、１２６は、後により詳細に説明されるように、ＤＡＣ１０２〜１０４（例えば、プロセッサコア）が、さまざまな周辺機器レジスタ（例えば、周辺機器１２０、１２２のレジスタ）ならびにセマフォモジュール１０８およびＭＰＵ１１０のプログラミングモデルレジスタ（例えば、図２のレジスタ２０２〜２０４、および図６の６０２、６０４）にアクセスすることを可能にするバスプロトコルを提供する。
【００３２】
本明細書において使用される場合、用語「データアクセス構成要素」および「ＤＡＣ」は、共有システムリソースとのデータ転送を開始するソフトウェア命令を実行するように適合されているプログラム可能ハードウェアモジュールを意味する。「共有システムリソース」は、複数のＤＡＣ１０２〜１０４（例えば、ＲＡＭ１１２、フラッシュアレイ１１４、および周辺機器１２０、１２２の複数の範囲のアドレス指定可能ロケーションおよび／または単一のアドレス指定可能ロケーション）によってアクセスされることが可能である、任意のメモリロケーション（複数の場合もあり）、レジスタ（複数の場合もあり）、および周辺機器（複数の場合もあり）を備える。
【００３３】
ＤＡＣ１０２〜１０４は、プロセッサコア（例えば、マイクロコントローラ、マイクロプロセッサ、および／もしくはデジタル信号プロセッサ（ＤＳＰ））、非コア処理要素、直接メモリアクセス（ＤＭＡ）ユニット、ならびに／または、ＤＡＣ１０２〜１０４と共有システムリソースとの間のデータ転送を開始するソフトウェア命令を実行するようにプログラム可能であり、そのように適合されている他のハードウェアモジュールを備える群から選択されるハードウェアモジュールの任意の組み合わせを含むことができる。図１に示されるように、システム１００は、任意の数ＮのＤＡＣ１０２〜１０４を備えることができ、Ｎは２以上の整数である。例えば、一実施形態では、ＤＡＣ１０２〜１０４は複数のプロセッサコアを備え（すなわち、システム１００は「マルチコア」システムである）、このような実施形態は下記により詳細に論じられる。しかしながら、本明細書の図面および記載は、マルチコアシステムの実施形態を論じるものであり得るが、本発明の主題の範囲は、単一のプロセッサコアのみを備える電子システム、プロセッサコアを含まない電子システム、および／または他の種類の処理要素のさまざまな組み合わせを備える電子システムを備えることは理解されるべきである。さらに、電子システム１００は３つのＤＡＣ１０２〜１０４を有するものとして示されているが、他の実施形態では、電子システムは３つよりも多いかまたは少ないＤＡＣを含んでもよい。
【００３４】
ＤＡＣ１０２〜１０４は、とりわけ、共有システムリソースに対するアクセスを要求することができるソフトウェア命令（例えば、機械可読コード）を実行するように適合されている。共有システムリソースにアクセスするために、ＤＡＣ１０２〜１０４は、システムバス１０６を介してアクセス要求を発行する。アクセス要求は、アクセスタイプ（例えば、読み出し、書き込み、または実行）、および共有システムリソースに対応する少なくとも１つのアドレスを指定する。
【００３５】
アクセス要求を発行する前に、各ＤＡＣ１０２〜１０４は、共有システムリソースに関連付けられるセマフォをロックする（または「その所有権を得る」）よう試みる。一実施形態によれば、セマフォモジュール１０８は、複数のこのようなセマフォを実装するように構成され、ＤＡＣ１０２〜１０４は、このセマフォをロックおよびロック解除（アンロック）するためにセマフォモジュール１０８と対話する。各セマフォの状態（例えば、特定のＤＡＣ１０２〜１０４によってアンロックまたはロックされている）は、セマフォ「ゲート」（またはセマフォレジスタ）（例えば、図２のセマフォゲート２０２〜２０４）において維持される。この状態には、いずれかのＤＡＣ１０２〜１０４が現在セマフォをロックオンしているか（存在する場合）が反映される。
【００３６】
セマフォをロックするよう試みるために、「ロック要求」ＤＡＣ１０２〜１０４は、値（例えば、ロック要求ＤＡＣの識別情報を表す符号化（エンコード）された値）を、システムバス１０６および周辺機器用バス１２６を介して特定のセマフォレジスタに書き込むよう試みることができる。セマフォモジュール１０８は、セマフォがアイドル状態にある場合にのみ、この値がセマフォレジスタに書き込まれることを許可することになる。セマフォがアイドル状態にない場合（例えば、別のＤＡＣ１０２〜１０４が既にセマフォをロックしている場合）、セマフォモジュール１０８は、セマフォレジスタを、ロック要求ＤＡＣ１０２〜１０４が書き込むよう試みていた値によって更新しないことになる。ロック要求ＤＡＣ１０２〜１０４がセマフォのロックに成功したか否かを判定するために、ロック要求ＤＡＣ１０２〜１０４は、書き込みを試みていた同じセマフォレジスタから（システムバス１０６および周辺機器用バス１２６を介して）値を読み出す。読み出された値が、ロック要求ＤＡＣ１０２〜１０４がセマフォレジスタに書き込みを試みていた値と同じである場合、ロック要求ＤＡＣ１０２〜１０４はセマフォのロックに成功している。読み出された値が、ロック要求ＤＡＣ１０２〜１０４がセマフォレジスタに書き込みを試みていた値と異なる場合、ロック要求ＤＡＣ１０２〜１０４は、セマフォをロックすることができなかった（例えば、別のＤＡＣ１０２〜１０４が既にセマフォをロックしていた）と推測することができる。
【００３７】
ＤＡＣ１０２〜１０４が共有システムリソースに関連付けられるセマフォを適切にロックした場合、ＤＡＣ１０２〜１０４は、共有システムリソースにアクセスする試行において、システムバス１０６を介して、さまざまなアクセスタイプ（例えば、読み出し、書き込み、および／または実行）のアクセス要求を発行することができる。アクセス要求を発行するために、例えば、ＤＡＣ１０２〜１０４は、システムバス１０６のアドレス線上でアドレスを提供し、これは、共有システムリソース（例えば、ＲＡＭ１１２、フラッシュアレイ１１４、または周辺機器１２０、１２２）におけるロケーションを特定する。また書き込みタイプのアクセス要求のために、ＤＡＣ１０２〜１０４は、システムバス１０６のデータ線上でデータ値を提供する。読み出しタイプのデータアクセス要求のために、ＤＡＣ１０２〜１０４は、システムバス１０６のデータ線からデータ値を、このようなデータ値が提供されるときに読み出すよう試みることができる。システムバス１０６上でアドレスを提供することに加えて、ＤＡＣ１０２〜１０４は、システムバス１０６上でその固有のバスマスタ番号も提供する。
【００３８】
ＭＰＵ１１０は、共有システムリソースの指定された領域を、これらの指定領域に入るＤＡＣ１０２〜１０４からのアクセス要求を評価することによって、保護するように構成される。例えば、図１に示されている実施形態では、ＲＡＭ１１２および周辺機器１２０、１２２のいくつかまたはすべては、ＭＰＵ１１０において保護されている共有システムリソースであるとみなされ、従ってＭＰＵ１１０はこれらのリソースに対するアクセスを制御することができる。対照的に、示されている実施形態では、読み出し専用フラッシュアレイ１１４はＭＰＵ１１０によって保護されておらず、ただし、別の実施形態では保護されていてもよい。ＭＰＵ１１０は、さまざまな種類の共有システムリソースのうちのいずれかを保護することができ、図１に示されている特定の構成は例示のみを目的としている。用語「メモリ保護ユニット」およびＭＰＵが本明細書において使用されているが、ＭＰＵ１１０は、周辺機器アクセス、および／または、厳密には「メモリ」とはみなされない場合がある他のシステムリソースに対するアクセスも保護することができることが理解されるべきである。従って、ＭＰＵ１１０は、より広範に「共有リソース保護ユニット」とみなされることができる。
【００３９】
下記により詳細に説明されるように、ＤＡＣ１０２〜１０４がＭＰＵ１１０によって保護されている共有システムリソースにアクセスする試行においてアクセス要求を発行するとき、ＭＰＵ１１０は、共有システムリソースに関連付けられ得る任意のセマフォの状態の知識とともに、共有システムリソースに対応する「領域記述子」においてコード化されているアクセス許可に基づいて、要求されているアクセスが許可されるかまたは拒否されるかを判定する。領域記述子は、ＭＰＵ１１０の領域記述子レジスタ（例えば、図６のレジスタ６０２、６０４）に記憶されている。下記により詳細に説明されるように、さまざまな時点において（例えば、システム初期化またはリセット、通常動作、および他の時間の間）、ＤＡＣ１０２〜１０４のうちの１つまたは複数が、領域記述子を、システムバス１０６および周辺機器用バス１２６を介して領域記述子レジスタに書き込むことができる。これも下記により詳細に説明されるように、各領域記述子は、或る領域のための開始アドレス、その領域のための終了アドレス、ＤＡＣ１０２〜１０４の各々に関するデフォルトアクセス許可、その領域に関連付けられるセマフォの識別子、および他の情報を備えることができる。
【００４０】
一実施形態では、ＭＰＵ１１０は、セマフォ信号に基づいて、領域記述子においてコード化されているデフォルトアクセス許可を変更できる。より詳細には、ＭＰＵ１１０は、セマフォモジュール１０８とＭＰＵ１１０との間のハードウェア接続１３０上で提供されるセマフォ信号を通じて、特定の領域記述子に関連付けられるセマフォ（例えば、領域記述子において特定されるセマフォ）の状態の知識を得る。下記により詳細に説明されるように、ＭＰＵ１１０は、領域記述子レジスタ（例えば、図６のレジスタ６０２、６０４）に記憶されているデフォルトアクセス許可を、セマフォ信号に基づいて変更する回路を備えることができる。より詳細には、ＭＰＵ１１０は、共有リソースの所与の領域に関するデフォルトアクセス許可を、その領域に関連付けられるセマフォの状態に基づいて動的に変更することができる。セマフォの状態に基づくアクセス許可の変更は、一実施形態では、完全にハードウェアにおいて実施される。従って、アクセス要求の評価の文脈では、いかなるシステム構成要素も、ソフトウェアを介してセマフォのステータスを要求する必要がなく、またはいかなるシステム構成要素も、ソフトウェアを介してセマフォのステータスを報告する必要がない。ＭＰＵ１１０を、領域記述子においてコード化されているアクセス許可をセマフォ信号に基づいて変更するように構成することによって、システム１００はセマフォのハードウェア強化を実施することができる。従って、誤りのあるまたは悪意のあるコードが共有システムリソースを一貫性を持たずに変更する可能性が大幅に低減されることができる。
【００４１】
ハードウェア接続１３０は、システムバス１０６および周辺機器用バス１２４、１２６から区別され、さまざまなセマフォの状態（例えば、セマフォレジスタの内容）をリアルタイムで搬送するように構成される。より詳細には、セマフォモジュール１０８によって管理されるセマフォの各々の状態が、接続１３０を介してＭＰＵ１１０に出力される。後により詳細に説明されるように、ＭＰＵ１１０におけるアクセス評価回路（例えば、図６のアクセス評価論理部６１０、６１２）が、必要に応じて、接続１３０上で搬送される、特定のセマフォに対応する信号を選択する。
【００４２】
既に述べたように、周辺機器モジュール１２０、１２２は、ＭＰＵ１１０によってアクセス保護を提供される共有システムリソースであるとみなされることができる。より詳細には、一実施形態では、１つまたは複数の周辺機器モジュール１２０、１２２は、周辺機器用バス１２４に動作可能に接続され、これは、ＤＡＣ１０２〜１０４が、プログラミングモデルおよび／または周辺機器モジュール１２０、１２２のさまざまなレジスタにアクセスすることを可能にするバスプロトコルを提供する。周辺機器モジュール１２０、１２２は、例えば、限定ではないが、いくつか例を挙げると、巡回冗長検査（ＣＲＣ）計算モジュール、チェックサム計算モジュール、シリアル周辺機器インタフェース（ＳＰＩ）、ユニバーサル非同期受信機／送信機（ＵＡＲＴ）、カウンタ、タイマ、メモリコントローラ、ディスプレイコントローラ（例えば、液晶ディスプレイ（ＬＣＤ）コントローラ）、ユーザインタフェースコントローラ（例えば、キーパッド、タッチスクリーン、および／またはポインタコントローラ）、割り込みコントローラ、パワーオンリセット生成器を備える群から選択される任意の１つまたは複数の周辺機器を備えることができる。電子システム１００は同様に、さまざまな他の周辺機器を備えることができる。
【００４３】
図１のシステム１００は例示のみを目的として提供されること、および、図１に描かれているものより多い、少ない、および異なる構成要素を備えるシステムにおいてさまざまな実施形態が実施されてもよいことが理解されるべきである。例えば、電子システム１００は、とりわけ、読み出し専用メモリ（ＲＯＭ）、１つまたは複数のタイミングソース、外部インタフェース、汎用入出力（ＧＰＩＯ）ポート、アナログインタフェース、追加のまたは異なるバス、電圧調整器、および／または電力管理回路も備えることができる。一実施形態では、システム１００は、ＤＡＣ１０２〜１０４、システムバス１０６、セマフォモジュール１０８、ＭＰＵ１１０、ＲＡＭ１１２、フラッシュアレイ１１４、周辺機器モジュール１２０、１２２、および周辺機器用バス１２４、１２６を備えるシステム・オン・チップを表す。しかしながら、さまざまな実施形態は代替的に、ＤＡＣ１０２〜１０４、システムバス１０６、セマフォモジュール１０８、ＭＰＵ１１０、ＲＡＭ１１２、フラッシュアレイ１１４、周辺機器モジュール１２０、１２２、および周辺機器用バス１２４、１２６のいずれかまたはすべてが単一のパッケージ内に封入される別個のチップ上に実装される、システム・イン・パッケージにおいて使用されてもよい。さらに他の実施形態では、ＤＡＣ１０２〜１０４、システムバス１０６、セマフォモジュール１０８、ＭＰＵ１１０、ＲＡＭ１１２、フラッシュアレイ１１４、周辺機器モジュール１２０、１２２、および周辺機器用バス１２４、１２６のいずれかまたはすべてが別個にパッケージされる構成要素として実装されてもよい。
【００４４】
図２は、例示的な実施形態によるセマフォモジュール２００（例えば、図１のセマフォモジュール１０８）の簡略化されたブロック図である。セマフォモジュール２００はスレーブ周辺機器デバイスであり、ハードウェアによって実装されたゲートまたはセマフォレジスタ２０２、２０３、２０４の形態の複数（Ｍ個）のセマフォを実装する。例えば、特定の実施形態では、セマフォモジュール２００は１６個のセマフォを実装することができ、それに応じて１６個のセマフォレジスタ２０２〜２０４を備える。代替的には、セマフォモジュール２００は、より多いまたはより少ないセマフォを実装してもよい。いずれにせよ、各セマフォは、共有システムリソースの異なる領域に対して専用とされることができる。領域は互いに区別され得るものであり、または、あまり一般的でないシナリオでは、領域のいくつかは重なっていてもよい。下記により詳細に説明されるように、各セマフォの領域に対する割り当てはソフトウェアにおいて構成可能である。より詳細には、共有システムリソースの各領域記述子は、領域記述子によってカバーされる領域に割り当てられるセマフォの識別情報（例えば、セマフォレジスタ２０２〜２０４）を備えることができる。
【００４５】
セマフォレジスタ２０２〜２０４は各々、有限ステートマシンとして機能し、任意の所与の時点においてセマフォレジスタ２０２〜２０４内に記憶されている値は、セマフォの現在の状態を反映する。より詳細には、セマフォレジスタ２０２〜２０４内に記憶されている値は、セマフォをロックオンしているＤＡＣがある場合、いずれのＤＡＣが現在セマフォをロックオンしているかを反映する。特定の実施形態では、各セマフォレジスタ２０２〜２０４は、２つのＤＡＣのいずれか（例えば、２つのＣＰＵのいずれか）に任意の所与のセマフォをロックすることを許可するように設計される２ビットの３ステートのステートマシンを実装する。他の実施形態では、各セマフォレジスタ２０２〜２０４は、ｙビットのｚステートのステートマシンを実装することができ、ここで、ｙは２よりも大きく、ｚは３よりも大きい。このような実施形態では、セマフォステートマシンは、３つ以上のＤＡＣのうちのいずれか１つ（例えば、図１のＮ個のＤＡＣ１０２〜１０４のうちのいずれか１つ）がセマフォをロックすることを許可するように設計されることができる。
【００４６】
一実施形態では、セマフォモジュール２００はメモリマッピングされるモジュールであり、これは、周辺機器用バス２２６（例えば、図１の周辺機器用バス１２６）に対するインタフェースおよび少なくとも１つの割り込み出力を備える。図３および図４とともに下記により詳細に説明されるように、ＤＡＣ（例えば、図１のＤＡＣ１０２〜１０４のうちの１つ）は、セマフォモジュール２００に対して、セマフォレジスタ２０２〜２０４のうちの特定の１つを特定するオフセットを含む書き込みアドレスを用いて書き込み動作を実行することによって、セマフォをロックまたはアンロックするよう試みることができる。ＤＡＣは書き込みアドレス（またはアドレスオフセット）およびデータを、システムバス（例えば、図１のシステムバス１０６）および周辺機器用バス２２６（例えば、図１の周辺機器用バス１２６）を介してセマフォモジュール２００に搬送する。ＤＡＣは、ＤＡＣが以前に書き込みを試みたセマフォレジスタ２０２〜２０４から値を読み返すことによって、ＤＡＣがセマフォの状態のセット（例えば、セマフォのロックまたはアンロック）に成功したか否かを検証するよう試みることができる。ＤＡＣが、セマフォレジスタ２０２〜２０４に対する書き込みを試みたものと同じ値を読み返すことに成功すると、ＤＡＣは、セマフォ状態をセットすることに成功したと想定することができる。セマフォモジュール２００の他の構成要素を論じる前に、セマフォステートマシンおよびその動作のための方法が図３および図４とともに説明される。
【００４７】
図３は、例示的な実施形態によるセマフォステートマシン３００である。図３のステートマシン３００は、２つのＤＡＣが特定のセマフォの所有権を求めて競合し得る例示的なシステムに関連する。既に論じたように、他の実施形態では、３つ以上のＤＡＣがセマフォおよび共有システムリソースにアクセスすることができてもよい。当業者であれば、ステートマシン３００、および、図４の、複数のセマフォ状態を通じて遷移するための方法を、３つ以上のＤＡＣがセマフォおよび共有システムリソースにアクセスすることができるシステムに適用するために変える方法を理解されよう。しかしながら、説明および理解を容易にする目的で、ステートマシン３００および図４の方法は、共有システムリソースを求めて競合する２つのみのＤＡＣを有するシステムを対象とする。例示的な実施形態は限定として解釈されるべきではない。
【００４８】
上記で論じたように、一実施形態によれば、各セマフォレジスタ（例えば、図２のレジスタ２０２〜２０４の各々）は、２つのＤＡＣのいずれか（例えば、２つのＣＰＵのいずれか）に任意の所与のセマフォをロックすることを許可するように設計される２ビットの３ステートのステートマシンを実装する。状態のうちの１つ（すなわち、２ビットによって表される値のうちの１つに対応する）は「アイドル」または「アンロック」状態である。他方の状態（すなわち、２ビットによって表される他方の値に対応する）は、任意の所与の時点において２つのＤＡＣのうちのいずれがセマフォをロックしているかを示す。
【００４９】
システム起動またはリセット時に、ステートマシン３００は「アイドル」または「アンロック」状態３０２にある。例えば、ステートマシン３００は、対応するセマフォレジスタ（例えば、図２のレジスタ２０２）内に「００」の値が記憶されているときにアイドル状態３０２にあり得る。ステートマシン３００は、適切なロック値の書き込みが、セマフォをロックすることができるＤＡＣのうちの１つから為されない限り、アイドル状態のままであってよい。例えば、ＤＡＣ１（例えば、図１のＤＡＣ１  １０２）は、ＤＡＣ１ロック値（例えば、「０１」）をセマフォレジスタ内に書き込むよう試みることができ、これは、アイドル状態３０２から「ＤＡＣ１ロック」状態３０４への遷移を開始する。代替的に、アイドル状態３０２にあるとき、ＤＡＣ２（例えば、図１のＤＡＣ２  １０３）は、ＤＡＣ２ロック値（例えば、「１０」）をセマフォレジスタ内に書き込むよう試みることができ、これは、アイドル状態３０２から「ＤＡＣ２ロック」状態３０６への遷移を開始する。
【００５０】
ステートマシン３００は、それぞれ、ＤＡＣ１またはＤＡＣ２がアンロック値（例えば、「００」）をセマフォレジスタ内に書き込むよう試みない限り、ＤＡＣ１ロック状態３０４またはＤＡＣ２ロック状態３０６のままである。ＤＡＣ１ロック状態３０４またはＤＡＣ２ロック状態３０６にあるとき（すなわち、ＤＡＣ１またはＤＡＣ２がセマフォをロックしているとき）、セマフォモジュール２００（図２）は、セマフォをロックしていない任意のＤＡＣによって提供される任意の値によってセマフォレジスタを上書きすることを拒絶することになる。例えば、ＤＡＣ１ロック状態３０４にあるとき、セマフォモジュール２００は、ＤＡＣ２によって提供される任意の値によってセマフォレジスタを上書きすることを拒絶することになる。同様に、ＤＡＣ２ロック状態３０６にあるとき、セマフォモジュール２００は、ＤＡＣ１によって提供される任意の値によってセマフォレジスタを上書きすることを拒絶することになる。セマフォをロックしているＤＡＣがアンロック値（例えば、「００」）をセマフォレジスタ内に書き込むと、ステートマシン３００はＤＡＣ１ロック状態３０４またはＤＡＣ２ロック状態３０６のいずれかからアイドル状態３０２に遷移する。
【００５１】
上記の記載は、２つのＤＡＣのいずれかがセマフォをロックすることができる実施形態に関連し、当業者であれば、本明細書における記載に基づいて、上述の実施形態を、３つ以上のＤＡＣがセマフォをロックすることができるシステムに適用するために変える方法を理解されよう。さらに他の実施形態では、セマフォモジュール２００は、ＤＡＣ１０２〜１０４が、別のＤＡＣ１０２〜１０４によって既にロックされていたセマフォに対する書き込みを試みた場合は、ＤＡＣ１０２〜１０４に対するロック書き込み失敗通知を実施することができる。そのような実施形態では、各セマフォレジスタ２０２〜２０４は、失敗したロック試行を記録するように設計されるｙビットのｚステートのステートマシンを実装することができ、ゲートロックおよびアンロックに基づいて遷移する。
【００５２】
図４は、例示的な実施形態による、複数のセマフォ状態（例えば、図３の状態３０２、３０４、３０６）を通じてセマフォを遷移させるための方法のフローチャートである。方法は、ブロック３０２において開始し、システム起動またはリセットとともに、セマフォはアイドル（またはアンロック）状態（例えば、図３の状態３０２）にセット（またはリセット）される。例えば、既に述べたように、これは、セマフォに対応するセマフォレジスタ内にアイドル状態に関連付けられるアイドル値（例えば、「００」）を記憶することによって達成されることができる。アイドル状態にあるとき、セマフォモジュール（例えば、図１のセマフォモジュール１０８）は、セマフォ状態インジケータ（本明細書においては「セマフォ信号」とも称される）を、ハードウェア接続（例えば、図１、図２、図６、図７のハードウェア接続１３０、  ２３０〜２３２、  ６５０、  ６５２、  ７５０）を介してＭＰＵ（例えば、図１のＭＰＵ１１０）に提供する。セマフォ状態インジケータはセマフォがアイドル状態にあることを示す。一実施形態によれば、セマフォ状態インジケータは、セマフォレジスタ内の実際の値に対応し、ただし、それらは、符号化された、デコードされた、または代替の値に対応することもできる。
【００５３】
セマフォは、ブロック４０４においてＤＡＣ（「ＤＡＣｙ」）からロック試行が受け取られない限り、アイドル状態のままである。例えば、ロック試行は、ＤＡＣｙが、そのＤＡＣに関連付けられるロック値（例えば、「０１」または「１０」）をセマフォレジスタ内に書き込むよう試みることを含むことができる。値は例えば、ＤＡＣｙに割り当てられるバスマスタ番号であることができる。ロック試行が受け取られると、ブロック４０６において、セマフォモジュールはセマフォが現在アンロックされているか否かを判定する。これは、セマフォがアイドル状態にあり、従ってアンロックされていることを示す、適切なアイドル状態値（例えば、「００」）が現在セマフォレジスタ内に記憶されているか否かを判定することを含むことができる。
【００５４】
セマフォが現在アンロックされていないという判定が為されると、セマフォモジュールはブロック４０８において、ＤＡＣｙによって提供されるロック値をセマフォレジスタ内に記憶することを拒絶することによって、ロック試行を拒否することができる。ＤＡＣｙが続いてセマフォレジスタを読み出すと、ＤＡＣｙは、読み出した値を、ＤＡＣｙが書き込みを試みたロック値と比較し、ロック試行が失敗したと判定することができる。一実施形態では、ＤＡＣｙはそのとき「スピン待ち」ループに入ることができ、ＤＡＣｙは最終的にＤＡＣｙがその書き込み試行に成功するまで、繰り返しそのロック値をセマフォレジスタ内に書き込むよう試行する。代替の実施形態では、ＤＡＣｙから失敗したロック試行を受け取った後、セマフォがアンロックされると、セマフォモジュールはアンロックインジケータ（例えば、割り込み通知）をＤＡＣｙに提供することができる。
【００５５】
再びブロック４０６を参照して、セマフォが現在アンロックされているとの判定が為されると、セマフォモジュールはロック値をセマフォレジスタ内に書き込み、従ってアイドル状態から、セマフォがＤＡＣｙによってロックされている状態（例えば、図３の状態３０４または３０６）への遷移を実行する。ＤＡＣｙロック状態にある間、セマフォモジュールは、セマフォ状態インジケータをハードウェア接続（例えば、図１、図２、図６、図７の接続１３０、  ２３０〜２３２、  ６５０、  ６５２、  ７５０）を介してＭＰＵに提供し、ここで、セマフォ状態は、セマフォがＤＡＣｙによってロックされていることを示す。後により詳細に説明されるように、これは、ＭＰＵに、ＤＡＣｙによる、セマフォに関連付けられる共有システムリソースへのアクセス要求を、ＤＡＣｙに対するデフォルトアクセス許可に従ってハンドリングさせ、さらに、ＭＰＵに、ＤＡＣｙ以外のＤＡＣによる共有システムリソースへのアクセス要求を、それらのデフォルトアクセス許可にかかわらず拒否させる。ＤＡＣｙロック状態にある間、セマフォモジュールは、いかなる他のＤＡＣがセマフォレジスタ内にロック値を書き込むことを許可することも拒絶する。
【００５６】
ブロック４１２において、アンロック試行が受け取られたとの判定が為されない限り、セマフォはＤＡＣｙロック状態のままである。例えば、アンロック試行は、ＤＡＣ（例えば、ＤＡＣｙまたは何らかの他のＤＡＣ）による、アイドル値（例えば、「００」）をセマフォレジスタ内に書き込むための試行であることができる。アンロック試行が受け取られると、セマフォモジュールは、ブロック４１４において、アンロック試行がＤＡＣｙによって為されたか否かを判定する。アンロック試行がＤＡＣｙによって為されない場合、ブロック４１６において、アイドル値をセマフォレジスタ内に記憶することを拒絶することによって、アンロック試行は拒否される。
【００５７】
セマフォモジュールが、ＤＡＣｙによってアンロック試行が為されたと判定すると、セマフォモジュールはアイドル値をセマフォレジスタ内に書き込み、従って、ブロック４１８において、ＤＡＣｙロック状態（例えば、図３の状態３０４または３０６）からアイドル状態（例えば、図３の状態３０２）への遷移を実行する。ここでも、アイドル状態にある間、セマフォモジュールは、セマフォ状態インジケータをハードウェア接続を介してＭＰＵに提供し、ここで、セマフォ状態インジケータは、セマフォがアンロックされていることを示す。一実施形態によれば、セマフォがＤＡＣｙによってロックされていた間に別のＤＡＣによってセマフォをロックしようとする失敗した（拒否された）試みが為されていた場合、セマフォモジュールはその試行を為したＤＡＣにアンロックインジケータ（例えば、割り込み通知）を提供することもできる。その後、本方法は図示されるように反復する。
【００５８】
再び図２を参照して、セマフォステートマシンを実装するセマフォレジスタ２０２〜２０４に加えて、セマフォモジュール２００は一実施形態では、ＤＡＣ判定比較器２１０、書き込みデータ比較器２１２、各セマフォレジスタ２０２〜２０４に関連付けられる組み合わせ論理部２１４、  ２１５、  ２１６、マルチプレクサ２２０（ＭＵＸ）、割り込みモジュール２２２、およびアドレスデコードモジュール２２４を備える。ＤＡＣ（例えば、図１のＤＡＣ１０２〜１０４のうちの１つ）がセマフォレジスタ２０２〜２０４のうちの１つに対する書き込みを試みるとき、ＤＡＣは書き込みデータ（例えば、アイドル値またはロック値）およびセマフォレジスタに割り当てられるアドレスをシステムバス（例えば、図１のバス１０６）上に提供し、書き込みデータおよびアドレスは、周辺機器用バス２２６（例えば、図１のバス１２６）を介してセマフォモジュール２００に搬送される。アドレスデコード論理部２２４は、アドレスを解析し、アドレスがセマフォレジスタ２０２〜２０４のうちの１つに対応するか否かを判定するように構成される。アドレスがセマフォレジスタ２０２〜２０４のうちの１つの対応する場合、書き込み試行の有効性および性質を判定するためにさまざまな解析が実行される。
【００５９】
例えば、一実施形態では、ＤＡＣ判定比較器２１０は、書き込み試行（または周辺機器用バスサイクル）が有効なＤＡＣ（すなわち、セマフォ状態遷移に作用することを許可されているＤＡＣ）によって開始されたものであるか否かを判定するように構成される。書き込み試行（または周辺機器用バスサイクル）が有効なＤＡＣ（すなわち、セマフォ状態遷移に作用することを許可されているＤＡＣ）によって開始されたものでない場合、書き込み試行は無視される。加えて、書き込みデータ比較器２１２は、ＤＡＣが書き込みを試みているデータが有効な値（例えば、アイドル値（例えば、「００」）または有効なロック値（例えば、或るＤＡＣに対する「０１」および別のＤＡＣに対する「１０」））に対応するか否かを判定するように構成される。ここでも、書き込みデータ比較器２１２は、ＤＡＣが書き込みを試みているデータが有効な値（例えば、アイドル値（例えば、「００」）または有効なロック値（例えば、或るＤＡＣに対する「０１」および別のＤＡＣに対する「１０」））に対応しない場合、書き込み試行は無視される。
【００６０】
ＤＡＣ判定比較器２１０および書き込みデータ比較器２１２からの出力は、組み合わせ論理部２１４〜２１６に提供される。組み合わせ論理部２１４〜２１６は、セマフォレジスタ２０２〜２０４内での記憶のために適切に構成された値を作成するために、比較器出力を評価する。上記で詳細に論じられたように、セマフォレジスタ２０２〜２０４内の値は、セマフォがアンロックされていること、またはＤＡＣのうちの１つによってロックされていることを示す。加えて、（セマフォレジスタ２０２〜２０４内に記憶されている値によって示されるような）状態情報を表すセマフォ信号は、ハードウェア接続２３０〜２３２（例えば、図１、図６、図７のハードウェア接続１３０、  ６５０、  ６５２、  ７５０）を介してＭＰＵ（例えば、図１のＭＰＵ１１０）に提供される。一実施形態では、ハードウェア接続２３０〜２３２は、下記により詳細に説明されるように、ＭＰＵがそのデフォルトアクセス許可の変更を実行する必要があるビットのみに対応する信号を提供するように構成される。換言すれば、任意のＤＡＣが対応するセマフォをロックしていることを示すビットが提供される限り、セマフォレジスタ２０２〜２０４内に記憶されている値全体がセマフォ信号においてＭＰＵに提供される必要はない。
【００６１】
ＭＵＸ２２０は、セマフォレジスタ２０２〜２０４のための読み出し経路を提供する。より詳細には、ＤＡＣからの読み出し要求（例えば、書き込み操作の有効性検証のために為される）に応答して、ＭＵＸ２２０は一実施形態では、単一のセマフォレジスタ２０２〜２０４内に含まれる値を周辺機器用バス２２６に提供する。代替の実施形態では、ＭＵＸ２２０は、連結した複数のセマフォレジスタ２０２〜２０４を表す値を周辺機器用バス２２６に提供することができる。例えば、各セマフォレジスタ２０２〜２０４が１バイト（すなわち、８ビット）幅であり、周辺機器用バスが１ワード（すなわち、３２ビット）幅である実施形態では、ＭＵＸ２２０は、４つのセマフォレジスタ２０２〜２０４内の値を連結することができ、この連結された値を周辺機器用バス２２６に提供することができる。このようにして、ＤＡＣは単一の読み出し操作によって複数のセマフォレジスタ２０２〜２０４の状態（すなわち、セマフォレジスタ値）を読み出すことができる。複数のセマフォレジスタの状態が単一のアクセスにおいて読み出されることができるが、一実施形態では、単一のセマフォレジスタのみが一度の書き込み操作を介して更新されることができる。
【００６２】
割り込みモジュール２２２は、割り込み通知（またはアンロックインジケータ）を、セマフォが別のＤＡＣによってロックされていた間にセマフォをロックする試みに失敗した可能性があるＤＡＣに提供するように構成される。一実施形態によれば、割り込み通知は、各ＤＡＣに対してイネーブルまたはディセーブルされることができる。割り込み通知が或るＤＡＣに対してイネーブルされると、割り込みモジュール２２２はそのＤＡＣに関するロック試行失敗を追跡し、セマフォレジスタ２０２〜２０４内の値をモニタリングし、ＤＡＣがロックに失敗したセマフォがアンロックになると（すなわち、アイドル状態に遷移すると）、ＤＡＣに割り込みを提供する。
【００６３】
既に論じたように、ＭＰＵ（例えば、図１のＭＰＵ１１０）は、セマフォモジュール（例えば、図１のセマフォモジュール１０８）から、ＤＡＣが共有システムリソースに関連付けられるセマフォをロックしたか否かを示す信号を受け取る。セマフォ信号に基づいて、セマフォを適切にロックしているＤＡＣのみが共有システムリソースに対するアクセス要求を認可され得ることを確実にするために、ＭＰＵは、共有システムリソースに関する領域記述子においてコード化されているデフォルトアクセス許可を変更することができる。
【００６４】
図５は、例示的な実施形態による領域記述子５００の例示的なフォーマットの図である。領域記述子５００は特定のフォーマットおよび配列を有するものとして示され、８つのＤＡＣに対するアクセス許可を指定するように設計されているが、領域記述子は図５に示されているものから著しく異なるフォーマットを有してもよいことが理解されるべきである。例えば、領域記述子フィールドのいくつかは異なる長さを有してもよく、かつ／または異なるワードおよび／もしくは１つのワードにおける異なるロケーションに配置されてもよい。加えて、領域記述子５００は８つのＤＡＣに対するアクセス許可を指定するように適合されるが、領域記述子は８つよりも多いまたは少ないＤＡＣに対するアクセス許可を指定してもよいことが理解されるべきである。
【００６５】
図５の例示的な実施形態では、領域記述子５００は４つの３２ビットワード５０２、５０３、５０４、５０５を備える。第１のワード５０２は、共有システムリソースの領域の開始アドレスのためのフィールド５１０を備える。より詳細には、フィールド５１０は、共有システムリソースの０−モジュロ（ｍｏｄｕｌｏ）−３２バイトの開始アドレスの最上位ビットを定義することができる。同様に、第２のワード５０３は、共有システムリソースの領域の終了アドレスのためのフィールド５１１を備える。より詳細には、フィールド５１１は、共有システムリソースの０−モジュロ−３２バイトの終了アドレスの最上位ビットを定義することができる。開始および終了アドレスはともに、共有システムリソースによって包含されるアドレスの範囲を決定する。
【００６６】
領域記述子５００は、第３のワード５０４も備え、第３のワード５０４は、デフォルトアクセス許可フィールド５２０、  ５２１、  ５２２、  ５２３、  ５２４、  ５２５、
５２６、  ５２７を備える。デフォルトアクセス許可フィールド５２０〜５２７の各々は、単一のＤＡＣ（例えば、図１のＤＡＣ１０２〜１０４のうちの１つ）に対するデフォルトアクセス許可を含むことができる。いくつかのデフォルトアクセス許可フィールド（例えば、フィールド５２４〜５２７）は、単純に、読み出し（Ｒ）および書き込み（Ｗ）許可フィールドを備え、これらは図５においては「ＤｙＲＥ」（ＤＡＣｙ読み出しイネーブル用）および「ＤｙＷＥ」（ＤＡＣｙ書き込みイネーブル用）のフォーマットを有するものとして示されている。読み出し許可は、オペランド（データ）フェッチを使用して、参照されるメモリアドレスにアクセスできることを指す。書き込み許可は、記憶（データ）命令を使用して、参照されるメモリアドレスを更新できることを指す。デフォルトアクセス許可フィールド５２４〜５２７は、非プロセッサタイプのＤＡＣ（例えば、データ移動エンジンおよび他のモジュール）に対する読み出しおよび書き込み許可を定義するのによく適している。一実施形態によれば、ＤｙＲＥビットが領域記述子５００においてセットされると、ＭＰＵ（例えば、図１のＭＰＵ１１０）は、対応するＤＡＣ（すなわち、ＤＡＣｙ）が、図６とともにより詳細に論じられるように、そのような許可が対応するセマフォの状態に基づいて変更されない限り、読み出し操作を実行することを許可することになる。ＤｙＲＥビットがクリアされると、対応するＤＡＣによって試行されるいかなる読み出しも、（例えば、アクセスエラーによって）終了し、読み出しは実行されない。同様に、ＤｙＷＥビットが領域記述子５００においてセットされると、ＭＰＵは、対応するＤＡＣ（すなわち、ＤＡＣｙ）が、同じく図６とともにより詳細に論じられるように、そのような許可が対応するセマフォの状態に基づいて変更されない限り、書き込み操作を実行することを許可することになる。ＤｙＷＥビットがクリアされると、対応するＤＡＣによって試行されるいかなる書き込みも、（例えば、アクセスエラーによって）終了し、書き込みは実行されない。
【００６７】
デフォルトアクセス許可フィールド５２４〜５２７と対照的に、デフォルトアクセス許可フィールド（例えば、フィールド５２０〜５２３）は、プロセッサタイプのＤＡＣ（例えば、プロセッサコア）のために構成されることができ、従って、さらに実行（Ｘ）許可フィールドを備えることができる。実行許可は、命令フェッチを使用して、参照されるメモリアドレスを読み出すことができることを指す。プロセッサタイプのＤＡＣは、ユーザモード（ＵＭ）および管理者モード（ＳＭ）において操作されることができ、従って、これらのＤＡＣに対するデフォルトアクセス許可は、図５に示されるように、異なる複数のＵＭおよびＳＭ許可を備えることができる。「ユーザモード」は、特定のシステム制御機能および入出力動作を実行することを禁止される、プロセッサの動作モードを指し、「管理者モード」は、特定のシステム制御機能および入出力動作を実行することができる、プロセッサの動作モードを指す。ユーザモードと管理者モードとの間には他の差異も存在し得る。一実施形態では、ユーザモードにおいて、アクセス許可ビットとアクセスタイプとの間に一対一の対応が存在する（例えば、読み出しイネーブル、書き込みイネーブル、および実行イネーブルの各々に対して１ビットが割り当てられる）。逆に、管理者モードでは、許可は２ビットにおいて符号化され得る。例えば、「００」の値は読み出し、書き込み、および実行が許可されることに対応することができ、「０１」の値は読み出しおよび実行が許可されるが書き込みは許可されないことに対応することができ、「１０」の値は読み出しおよび書き込みが許可されるが実行が許可されないことに対応することができ、「１１」の値は、アクセス制御がユーザモードにおいてＤＡＣに対して定義されたものと同じである状態に対応することができる。
【００６８】
上記に加えて、一実施形態では、プロセス識別子イネーブルフィールド（ＰＥ）が、プロセッサタイプアクセス許可フィールド（５２０〜５２３）に含まれることができる。ＤｙＰＥビットがセットされると、領域記述子の対応するフィールドにおいて（例えば、領域記述子５００の第４のワード５０５のフィールド５３０、５３２において）定義されるプロセス識別子およびマスクが領域ヒット評価内に備えられる。クリアされると、領域ヒット評価はプロセス識別子またはマスクと関連がなくなる。
【００６９】
領域記述子５００の第４のワード５０５は、プロセス識別子（ＰＩＤ）フィールド５３０、ＰＩＤマスクフィールド５３２、セマフォ識別子（ＳＥＭ  ＩＤ）フィールド５３４、セマフォイネーブル（ＳＥＭＥ）フィールド５３６、および領域記述子有効（ＶＬＤ）フィールド５３８を備える。加えて、第４のワード５０５は、１つまたは複数の確保済み（または割り当てられていない）ビットまたはフィールド５４０を備えることができる。
【００７０】
ＰＩＤフィールド５３０は、プロセス識別子を収容するのに使用されることができ、プロセス識別子は、領域記述子において現在のアクセスがヒットするか否か（例えば、ＤｙＰＥビットがＰＥフィールドにおいて（例えば、第３のワード５０４において）セットされるとき）の判定のために備えられてもよい。このフィールドは、ＰＩＤマスクフィールド５３２内のＰＩＤマスクと組み合わされる。ＰＩＤマスクフィールド５３２はマスキング能力を提供し、それによって、複数のプロセス識別子が領域ヒット判定の一部として備えられることができる。例えば、ＰＩＤ／ＰＩＤマスクの組み合わせとＤＡＣから駆動される現在のＰＩＤ値とを比較するとき、ＰＩＤマスクフィールド５３２におけるＰＩＤマスクビット「ｉ」がアサートされることは、ＰＩＤフィールド５３０内のＰＩＤ「ｉ」ビットが無視されることを意味する。イネーブルされると、現在のＰＩＤに対するＰＩＤ／ＰＩＤマスク比較は、領域記述子「ヒット」を判定するために、開始および終了アドレス比較と組み合わされる。
【００７１】
セマフォ識別子フィールド５３４は、いずれのセマフォが（例えば、図２のセマフォレジスタ２０２〜２０４のうちのいずれが）領域記述子に関連付けられるかのインジケータを記憶するのに使用される。例えば、セマフォ識別子は、セマフォレジスタ、またはセマフォの各々の特異なインジケータとなり得る何らかの他の値に関連付けられるアドレスオフセットに対応することができる。下記により詳細に説明されるように、ＭＰＵ（例えば、図６のＭＰＵ６００）は、デフォルトアクセス許可への可能性のある変更を行うプロセスの間にセマフォ識別子フィールド５３４において示されるセマフォレジスタからのセマフォ信号を評価するアクセス評価回路（例えば、図６のアクセス評価論理部６１０、６１２）を備える。ＳＥＭＥフィールド５３６は、対応する領域記述子のアクセス評価論理部においてセマフォが備えられることを可能にするために使用される。一実施形態によれば、「適切にイネーブルされる」セマフォは、そのために、対応する領域記述子においてＳＥＭＥフィールド５３６がアサートされるセマフォである。
【００７２】
領域記述子５００は複数のワードを備え、従って領域記述子の更新は（例えば、図６の領域記述子レジスタ６０２、６０４における領域記述子を更新するための）複数の書き込み動作を備えることになるため、領域記述子の更新中に一貫性が維持されることを確実にするためにＶＬＤフィールド５３８が提供される。一実施形態では、ＶＬＤフィールド５３８は、セットされると、領域記述子５００全体が一貫性を持った値を含むことを示すフラグを備える。（例えば、１）ＶＬＤフラグを直接クリアするソフトウェアによって、または２）ＭＰＵハードウェアによって、これは通常最初の３つのワード５０２〜５０４のいずれかが書き込まれているときに発生する、のいずれかで）フラグがクリアされると、ＭＰＵはアクセス許可判定を為すときに領域記述子に依存することを回避することになる。
【００７３】
図６は、例示的な実施形態によるＭＰＵ６００（例えば、図１のＭＰＵ１１０）の簡略化されたブロック図である。ＭＰＵ６００は、共有システムリソースの指定された領域を、これらの指定領域に入るアドレスを含み得るＤＡＣ（例えば、図１のＤＡＣ１０２〜１０４）からのアクセス要求を評価することによって、保護するように構成される。より詳細には、共有システムリソースの各保護領域について、ＭＰＵ６００は、セマフォ信号およびその領域に対応する領域記述子に基づいてＤＡＣからのアクセス要求を認可または拒否するように構成されることができる。
【００７４】
既に論じたように、共有システムリソースは、領域記述子（例えば、図５の領域記述子５００）を用いて定義されることができ、領域記述子は、（例えば、図５のセマフォ識別子フィールド５３４における）領域記述子に関連付けられるセマフォの指定および（例えば、図５のＳＥＭＥフィールド５３６における）セマフォイネーブルインジケータも含み得る。ＭＰＵ６００は、複数、Ｒ個の領域記述子６０２、６０４を備え、ここで、領域記述子は領域記述子レジスタ６０２、６０４の各々に記憶されることができる。ＭＰＵ６００は、一実施形態では、アクセス評価回路（例えば、複数のアクセス評価論理ブロック６１０、６１２）、アドレスデコード論理部６３０、およびマルチプレクサ６３２（ＭＵＸ）も備える。特定の実施形態によれば、ＭＰＵ６００は、各々１６個の、領域記述子レジスタ６０２、６０４およびアクセス評価論理ブロック６１０、６１２を備える。しかしながら、他の実施形態では、ＭＰＵ６００は、より多いまたはより少ない領域記述子レジスタ６０２、６０４およびアクセス評価論理ブロック６１０、６１２を備えてもよいことが理解されるべきである。
【００７５】
一実施形態によれば、各領域記述子レジスタ６０２、６０４は、４ワードフォーマットの領域記述子（例えば、図５の領域記述子５００）に対応する４つのワードから成る。代替の実施形態では、領域記述子レジスタ６０２、６０４と領域記述子とは異なるフォーマット（例えば、ワードがより多いまたはより少ないなど）を有してもよい。システム起動時または通常動作中に、ＭＰＵ６００が保護する役割を担う共有システムリソースの各領域に関連付けられる領域記述子は、領域記述子レジスタ６０２、６０４において書き込まれる。より詳細には、ＭＰＵ６００を構成する役割を担うＤＡＣは、各領域記述子レジスタ６０２、６０４のワード（例えば、図５のワード５０２〜５０５）を識別するオフセットを有する書き込みアドレスを用いて、一連の書き込み動作をＭＰＵ６００に対して実行する。ＤＡＣは書き込みアドレス（またはアドレスオフセット）および領域記述子ワードを、システムバス（例えば、図１のシステムバス１０６）および周辺機器用バス６２６（例えば、図１の周辺機器用バス１２６）を介してＭＰＵ６００に搬送する。アドレスデコード論理部６３０は、アドレスを解析し、アドレスが領域記述子レジスタ６０２、６０４に対応するか否かを判定するように構成される。アドレスが領域記述子レジスタ６０２、６０４に対応する場合、領域記述子ワードは対応する領域記述子レジスタ６０２に書き込まれる。一実施形態によれば、領域記述子レジスタ６０２、６０４に記憶されている領域記述子は、マルチプレクサ６３２および周辺機器用バス６２６を介して読み出されることもできる。
【００７６】
領域記述子レジスタ６０２、６０４が領域記述子を用いて書き込まれた後、ＤＡＣは共有システムリソースへのアクセスを試みることができる。より詳細には、ＤＡＣ（例えば、図１のＤＡＣ１０２〜１０４のうちの１つ）が共有システムリソース（例えば、図１のＲＡＭ１１２、周辺機器１２０、１２２、またはフラッシュ１１４におけるアドレス指定可能なロケーション）に対するアクセスを行うよう試みるとき、ＤＡＣはシステムバス６０６（例えば、図１のバス１０６）上でその共有システムリソースのためのアドレスを提供する。ＤＡＣは、システムバス６０６上でその固有のバスマスタ番号も提供する。
【００７７】
アクセス評価論理部６１０、６１２は、システムバス６０６からアドレスおよびバスマスタ番号を、および、領域記述子レジスタ６０２、６０４から領域記述子を受け取る。加えて、アクセス評価論理部６１０、６１２は、セマフォモジュール（例えば、図１、図２のセマフォモジュール１０８、２００）から、ＭＰＵ６００とセマフォモジュールとの間のハードウェア接続６５０、６５２（例えば、図１、図２、図７の接続１３０、２３０〜２３２、７５０）を介してセマフォ信号を受け取る。
【００７８】
アクセス要求がシステムバス６０６上で提示される場合、アクセス評価論理部６１０、６１２は最初に、アクセス要求に関連付けられるアドレスが、ＭＰＵ６００によって保護される共有システムリソースの領域（すなわち、領域記述子レジスタ６０２、６０４における領域記述子の少なくとも１つによって定義される領域）に入るか否かの判定を行う。この判定とともに、各領域レジスタについて、アクセス評価論理部６１０、６１２は、対応する領域記述子レジスタ６０２、６０４から開始アドレスおよび終了アドレスを受け取り、アクセス評価論理部６１０、６１２は、アクセス要求により指定されるアドレスが、領域記述子の及ぶアドレスの範囲（すなわち、開始アドレスと終了アドレスとの間）に入るか否かを判定する。
【００７９】
アクセス要求に関連付けられるアドレスが特定の領域記述子レジスタ６０２、６０４に記憶されている特定の領域記述子の及ぶアドレスの範囲内に入るとき、アクセス評価論理部６１０、６１２は、アクセス要求を行ったＤＡＣが保護されている共有システムリソースに対するアクセスを実行することを許可されているか否かを判定する。より詳細には、ＤＡＣがシステムバス６０６上で提供したバスマスタ番号に基づいて、アクセス評価論理部６１０、６１２は、ＤＡＣが、アクセス要求により指定される、要求されているアクセスタイプ（例えば、読み出し、書き込み、または実行）のアクセスの実行を許可されているか否かを判定する。
【００８０】
一実施形態によれば、この判定とともに、アクセス評価論理部６１０、６１２は、対応する領域記述子（すなわち、対応する領域記述子レジスタ６０２、６０４において記憶されている）により指定されるデフォルトアクセス許可、および、アクセス要求アドレスが入る領域に関連付けられる、適切にイネーブルされるセマフォ（すなわち、対応する領域記述子レジスタ６０２、６０４の領域記述子により指定されるセマフォおよびその関連イネーブル）に対応するセマフォ信号（すなわち、ハードウェア接続６５０、６５２により搬送される信号）に基づいて、「有効アクセス許可」を生成する。換言すれば、アクセス評価論理部６１０、６１２は、セマフォモジュールから受け取られたセマフォ信号（すなわち、ハードウェア接続６５０、６５２により搬送される信号）、および、領域記述子レジスタ６０２、６０４からのデフォルトアクセス許可を解析するとともに、セマフォ信号に基づいてデフォルトアクセス許可を変更することによって、ＤＡＣに対する有効アクセス許可を生成するように構成されることができる。一実施形態では、アクセス評価論理部６１０、６１２は、有効アクセス許可を生成するように構成される、有効アクセス許可生成論理部６４０、６４２を備える。
【００８１】
図７は、例示的な実施形態による有効アクセス許可生成論理部７００（例えば、図６の有効アクセス許可生成論理部６４０、６４２）の簡略化されたブロック図である。有効アクセス許可生成論理部７００は、デフォルトアクセス許可７２０、７２７とは異なる場合がある有効アクセス許可７６０、７６２を生成するために、領域記述子レジスタにおいてコード化されているデフォルトアクセス許可７２０、７２７を、セマフォ信号に基づいて変更するように構成されることができる。これを試みるために、有効アクセス許可生成論理部７００は、領域記述子レジスタ（例えば、図６の領域記述子レジスタ６０２）、セマフォモジュールとＭＰＵとの間のハードウェア接続７５０（例えば、図１、図２、図６のハードウェア接続１３０、  ２３０〜２３２、  ６５０、  ６５２）、およびシステムバス７５２（例えば、図１、図６のシステムバス１０６、６０６）に結合される。有効アクセス許可生成論理部７００は、一実施形態では、デコーダ７０２、および、そのデフォルトアクセス許可７２０、７２７が領域記述子レジスタにおいてコード化されている各ＤＡＣのための有効許可論理ブロック７０４、７０６を備える。
【００８２】
関連付けられる領域記述子におけるＳＥＭＥフラグ７３５（例えば、図５のＳＥＭＥ５３６）によって示されるように、有効アクセス許可生成論理部７００に関連付けられるセマフォがイネーブルされていないとき、有効アクセス許可生成論理部７００は完全にバイパスされることができるか、または有効アクセス許可生成論理部７００は、変更することなく（例えば、セマフォの状態にかかわらず）単純にデフォルトアクセス許可７２０、７２７を出力することができる。しかしながら、ＳＥＭＥフラグ７３５によって示されるように、セマフォがイネーブルされていた場合、有効アクセス許可生成論理部７００は、デフォルトアクセス許可７２０、７２７を変更することができる。
【００８３】
既に示唆したように、ハードウェア接続７５０においてセマフォモジュールによって搬送されるセマフォ信号は、複数のセマフォに関連付けられるセマフォ信号を備えることができる。しかしながら、特定の領域記述子に関連付けられるセマフォからのセマフォ信号のみが、その領域記述子に関する、有効アクセス許可生成論理部７００によって実行される解析に関連する。従って、デコーダ７０２は、それが結合される領域記述子レジスタからセマフォ識別子７３４（例えば、図５のセマフォ識別子５３４）を受け取るように構成される。ＳＥＭＥフラグ７３５（例えば、図５のＳＥＭＥフラグ５３６）が、セマフォがイネーブルされていることを示すとき、デコーダ７０２は、ハードウェア接続７５０において提供される、識別されたセマフォに対応するセマフォ信号を選択する。
【００８４】
選択されたセマフォ信号、および、アクセスを試みているＤＡＣ（例えば、システムバス７５２によりバスマスタ番号によって示されるような）の識別情報に基づいて、デコーダ７０２はさらに、イネーブル線７４０、７４２によりイネーブル／ディセーブル信号を生成するように構成され、この信号は有効許可論理ブロック７０４、７０６に提供される。有効許可論理ブロック７０４、７０６は、イネーブル／ディセーブル信号およびデフォルトアクセス許可７２０、７２７に基づいて有効許可７６０、７６２を生成するように構成される。一実施形態によれば、有効許可論理ブロック７０４、７０６は、その許可が領域記述子レジスタにおいてコード化されている各ＤＡＣについて、デフォルトアクセス許可フィールド（例えば、図５のデフォルトアクセス許可フィールド５２０〜５２７）に関連付けられる。既に論じたように、いくつかのデフォルトアクセス許可フィールド（例えば、図５のフィールド５２０〜５２３）は読み出し、書き込み、および実行許可フィールドを備えることができ、一方で他のデフォルトアクセス許可フィールド（例えば、図５のフィールド５２４〜５２７）は単純に読み出しおよび書き込み許可フィールドを備えることができる。有効許可論理ブロック７０４は、読み出し、書き込み、および実行許可を含むデフォルトアクセス許可フィールド７２０を評価するように構成される論理ブロックに対応し、有効許可論理ブロック７０６は、読み出しおよび書き込み許可のみを含むデフォルトアクセス許可フィールド７２７を評価するように構成される論理ブロックに対応する。有効許可論理ブロックは、任意の可能な組み合わせのアクセス許可タイプを評価するように構成されることができること、および、図７の例は説明を目的として提供されており、限定ではないことが理解されるべきである。
【００８５】
一実施形態によれば、各有効許可論理ブロック７０４、７０６は、特定のＤＡＣに関して指定される各タイプのデフォルトアクセス許可を評価するように構成される論理部を備える。論理部に提供されるイネーブル／ディセーブル信号７４０、７４２の状態に基づいて、論理部は、対応するデフォルトアクセス許可と同じ有効アクセス許可を生成するか（例えば、イネーブル／ディセーブル信号がイネーブル状態にあるとき）、または、対応するデフォルトアクセス許可にかかわらず、特定のタイプのアクセスが拒否されることを示す有効アクセス許可を生成する（例えば、イネーブル／ディセーブル信号がディセーブル状態にあるとき）かのいずれかに構成される。従って、特定のＤＡＣに対するデフォルトアクセス許可が、特定のアクセスタイプが許可されることを指定する場合であっても、そのアクセスタイプに対する有効アクセス許可は、イネーブル／ディセーブル信号がディセーブル状態にある場合はそのアクセスタイプがそのＤＡＣに関しては拒否されることを指定することになる。
【００８６】
一実施形態では、各有効許可論理ブロック７０４、７０６は、ＤＡＣに対するデフォルトアクセス許可７２０、７２７により指定される各アクセスタイプのための論理部（例えば、ＡＮＤゲート７３６、または、等価の結果を生成することが可能な他の論理部）を備える。各ＡＮＤゲート７３６は、デフォルトアクセス許可入力（例えば、入力７３７）およびイネーブル入力（例えば、入力７３８）を有する。領域記述子レジスタから特定のアクセスタイプのデフォルトアクセス許可７２０を示す信号を受け取るために、デフォルトアクセス許可入力７３７が結合される。逆に、イネーブル／ディセーブル信号７４０、７４２を受け取るために、イネーブル入力７３８が結合される。デコーダ７０２が、セマフォ信号がそのアクセス許可が評価されているＤＡＣが領域記述子に関連付けられる適切にイネーブルされたセマフォをロックしたと示していると判断するとき、イネーブル／ディセーブル信号７４０、７４２はイネーブル状態にある。その場合、ＡＮＤゲート７３６は、デフォルトアクセス許可７２０、７２７においてコード化されている特定のアクセスタイプのデフォルトアクセス許可７２０、７２７を、そのアクセスタイプに対して有効なアクセス許可７６０、７６２であると伝達する。逆に、デコーダ７０２が、セマフォ信号がそのアクセス許可が評価されているＤＡＣが領域記述子に関連付けられる適切にイネーブルされたセマフォをロックしたと示していないと判断するとき、イネーブル／ディセーブル信号７４０、７４２はディセーブル状態にある。その場合、ＡＮＤゲート７３６は、デフォルトアクセス許可７２０、７２７においてコード化されている特定のアクセスタイプのデフォルトアクセス許可７２０、７２７を、そのアクセスタイプに対して有効なアクセス許可７６０、７６２であると伝達しない。代わりに、ＡＮＤゲート７３６は、そのアクセスタイプがそのＤＡＣに関して拒否されたことを示す有効アクセス許可７６０、７６２を伝達する。
【００８７】
例えば、デコーダ７０２によって選択されたセマフォ信号が、適切にイネーブルされたセマフォがアイドル状態（例えば、図３の状態３０２）にあることを示すとき、ＤＡＣはいずれも現在セマフォをロックしていない。ＤＡＣは共有システムリソースのその割り当てられる領域がアクセされる前にセマフォをロックすることを要求されるため、セマフォがアイドル状態にある間はその領域に対するいかなるアクセスも拒否される。従って、一実施形態では、選択されたセマフォ信号が、適切にイネーブルされたセマフォがアイドル状態にあると示すとき、デコーダ７０２は、すべての有効許可論理ブロック７０４、７０６についてイネーブル線７４０、７４２においてディセーブル信号を生成する。これは、有効許可論理ブロック７０４、７０６に、デフォルトアクセス許可７２０、７２７が対応する領域記述子レジスタにより指定されている場合があるにもかかわらず、ＤＡＣのいずれもが要求されたアクセスを実行するための適切なアクセス許可を有していないことを示す有効許可７６０、７６２を生成させる効果を有する。
【００８８】
逆に、ＤＡＣが適切にイネーブルされたセマフォをロックしているとき（すなわち、セマフォが図３の状態３０４、３０６のうちの１つのようなロック状態にある）、セマフォ信号はセマフォをロックしたＤＡＣの識別情報を伝達するかまたは示す。このような場合、デコーダ７０２は、セマフォ信号において識別されるＤＡＣに対応するイネーブル線７４０，７４２のいずれに対してもイネーブル信号を生成し、他のすべてのイネーブル線７４０、７４２に対してディセーブル信号を生成する。これは、有効許可論理ブロック７０４、７０６のうちの１つ（すなわち、セマフォをロックしたＤＡＣに対するデフォルトアクセス許可７２０、７２７に結合されるブロック７０４、７０６）に、そのＤＡＣに対する対応するデフォルトアクセス許可７２０、７２７と同じ、ＤＡＣに対する有効許可７６０、７６２を生成させる効果を有する。加えて、これは、すべての他の有効許可論理ブロック７０４、７０６に、デフォルトアクセス許可７２０、７２７が対応する領域記述子レジスタにより指定されている場合があるにもかかわらず、（セマフォをロックしているものを除く）他のＤＡＣのいずれもがいかなる要求されたアクセスを実行するためのアクセス許可も有していないことを示す有効許可７６０、７６２を生成させる効果を有する。このようにして、セマフォに関連付けられるメモリ領域のハードウェアの施行がＭＰＵによって提供される。
【００８９】
本明細書に記載される構成は、共有システムリソースが、それらが一貫性を持たなくなる（例えば、複数のＤＡＣが共有システムリソースの領域にシリアル化されていない書き込みを行うとき）ように変更される状況を回避するように意図されている。従って、一実施形態では、特定のＤＡＣがセマフォをロックしたとき、すべての他のＤＡＣの有効アクセス許可は無視され、上記のようにすべてのアクセスタイプに関するアクセス権が拒否される。同様に、セマフォがアイドル状態にあるとき、すべてのＤＡＣの有効アクセス許可が、すべてのアクセスタイプについて無視される。一番の関心事は、共有システムリソースの領域への一貫性を持たない書き込みである。いくつかの事例において、セマフォをロックしていなかったＤＡＣに、読み出しタイプのアクセス（および場合によっては実行タイプのアクセス）を許可することが有益であり得る（または、少なくとも害が少ないかもしくは害がない）。従って、代替の実施形態では、或るアクセスタイプのみ（例えば、書き込みタイプのアクセス）が、有効許可論理ブロック７０４、７０６によって無視されてもよく、一方で他のアクセスタイプは無視されない（例えば、これらのアクセスタイプに対する有効許可は、対応するデフォルトアクセスタイプと同じものが生成される）。本明細書の記載に基づいて、有効アクセス許可を生成するために、システムが、デフォルトアクセス許可により指定された特定のアクセスタイプのみを潜在的に変更し得ることを企図するように、記載されている装置および方法の実施形態を変更する方法が、当業者には理解されよう。
【００９０】
既に論じたように、デフォルトアクセス許可は、各アクセスタイプと、そのアクセスタイプが許可または拒否されているか否かのインジケータ（例えば、各アクセスタイプに対するイネーブルビット）との間の一対一対応によって提供されることができる。逆に、デフォルトアクセス許可は符号化されてもよい。このような場合、符号化デフォルトアクセス許可に対応する有効許可論理ブロックは、各アクセスタイプと、そのアクセスタイプが許可または拒否されているか否かのインジケータ（例えば、このインジケータはＡＮＤゲート７３６に提供される）との間の一対一対応を伝達するために符号化アクセス許可をデコードするように構成される追加のデコード回路（図示せず）を備えることができる。
【００９１】
図８は、例示的な実施形態による、適切にイネーブルされたセマフォによって実施されＭＰＵによって保護される共有システムリソースに対するアクセス要求を許可または拒否するための方法のフローチャートである。簡潔にするために、本方法は、単一の領域記述子（下記の領域記述子ｚ）によって定義される共有システムリソースの単一領域の保護の文脈において記載される。この例では、領域記述子は、特定のセマフォ（下記のセマフォｘ）が保護領域に関連付けられる（すなわち、セマフォの識別情報がその領域記述子により指定される）こと、および、特定のＤＡＣ（下記のＤＡＣｙ）が領域記述子によって包含される領域へのアクセス試行を行うことを指定する。本明細書の記載に基づいて、本方法は、上記のような、共有システムリソースの複数の領域が複数のセマフォを使用して保護されることを可能にし、ここで、アクセスは複数のＤＡＣによって要求されることができるシステムを企図するように拡張可能であることを当業者は理解されよう。
【００９２】
本方法は、ブロック８０２において、ＭＰＵ（例えば、図６のＭＰＵ６００）の領域記述子レジスタ（例えば、図６のレジスタ６０２、６０４のうちの１つ）の中に領域記述子ｚを記憶することによって開始する。このプロセスは、既に論じたように、例えば、システムの起動、リセット、および／または通常システム動作の文脈において実行されることができ、領域記述子レジスタへの一連の連続したワード幅の書き込みを実行することを伴う場合がある。この例によれば、領域記述子は、セマフォｘに対する（例えば、図５のセマフォ識別子フィールド５３４における）セマフォ識別子と、セマフォイネーブルフィールド（例えば、図５のＳＥＭＥ５３６）と、ＤＡＣｙに対する（例えば、図５のデフォルト許可フィールド５２０〜５２７における）デフォルトアクセス許可を備える、複数のＤＡＣに対するデフォルトアクセス許可とを備える。
【００９３】
システムが構成されると、ブロック８０４において、セマフォモジュール（例えば、図１のセマフォモジュール１０８）がセマフォモジュールとＭＰＵとの間のハードウェア接続（例えば、図１のハードウェア接続１３０）によりセマフォ信号を継続的に提供する。セマフォ信号は、領域記述子ｚによって定義される領域に割り当てられるセマフォｘの状態を備える、領域に割り当てられる各セマフォの状態を伝達する。
【００９４】
任意の時点で、ブロック８０６において、ＭＰＵは、ＤＡＣｙからアクセス要求を受け取ることができ、ＭＰＵは、アクセス要求が、領域記述子ｚによって包含されるアドレスの範囲内に入るアドレスを指定していると判定することができる。アクセス要求は特定のアクセスタイプ（例えば、読み出し、書き込み、または実行）も指定する。
【００９５】
ブロック８０８において、セマフォが領域記述子ｚによって包含されるアドレスの範囲についてイネーブルされているとき（例えば、図５のＳＥＭＥフィールド５３６において示されているように）、ＭＰＵは、領域記述子ｚにおいてコード化されているアクセス許可を有するすべてのＤＡＣに対する有効アクセス許可を生成する。既に論じたように、これは、ＭＰＵ（より具体的には図７のデコーダ７０２）が、セマフォモジュールからセマフォｘに対応するセマフォ信号を選択すること、および、有効アクセス許可を生成するように構成されるＭＰＵ論理部（例えば、図７の有効許可論理ブロック７０４、７０６）にイネーブル／ディセーブル信号を提供することを伴う。既に論じたように、セマフォ信号がセマフォｘがアイドル状態にあることを示すとき、一実施形態では、イネーブル／ディセーブル信号のすべてがディセーブル状態にあるように生成される。逆に、セマフォ信号が、ＤＡＣがセマフォｘをロックしたと示すとき、そのＤＡＣに対するイネーブル／ディセーブル信号はイネーブル状態にあるように生成され、一方ですべての他のＤＡＣに対するイネーブル／ディセーブル信号はディセーブル状態にあるように生成される。それに応じて、セマフォｘをロックしたＤＡＣに対する有効アクセス許可は、そのＤＡＣに対するデフォルトアクセス許可と同じであることになり、すべての他のＤＡＣに対する有効アクセス許可は、すべてのタイプのアクセスが拒否されることを示すことになる。代替の実施形態では、上述のように、すべての他のＤＡＣに対する有効アクセス許可は、何らかのタイプのアクセス（例えば、読み出しタイプ）が、対応するデフォルトアクセス許可と同じであるように許可され得ることを示してもよい。セマフォがイネーブルされていない場合、有効アクセス許可は、デフォルトアクセス許可と等しいようにセットされる。
【００９６】
ブロック８１０において、ＤＡＣｙに対するアクセス許可（すなわち、セマフォがイネーブルされているときは有効アクセス許可、またはセマフォがイネーブルされていないときはデフォルトアクセス許可）がＤＡＣｙからのアクセス要求により指定されるアクセスタイプを許可するか否かの判定が（例えば、ＭＰＵ６００によって）為される。アクセスタイプを許可する場合、ＭＰＵはブロック８１２において、要求されたアクセスが行われることを許可する。一実施形態によれば、これは、ＭＰＵが、要求されたアクセスが許可されたことを示す制御信号を、共有システムリソースに関連付けられるコントローラに提供することを含む。例えば、バスプロトコルが、ＭＰＵを通じてルーティングされる、各サイクルおよび各転送の有効性を定義する制御信号（または制御ベクトル）を提供することができる。ＭＰＵが、アクセスが許可された（すなわち、有効アクセス許可が要求されたアクセスを許可した）と判定すると、ＭＰＵは、共有システムリソースのコントローラに制御信号を提供することができる。逆に、ＭＰＵが（ブロック８１０において）、ＤＡＣｙに対する有効アクセス許可が、ＤＡＣｙからのアクセス要求により指定されるアクセスタイプを許可しないと判定すると、ブロック８１４において、ＭＰＵはアクセスを拒否（または禁止）することができる。一実施形態によれば、これは、ＭＰＵが、要求されたアクセスが拒否されたことを示す制御信号を、共有システムリソースに関連付けられるコントローラに提供することを含む。例えば、上記のバスプロトコルが実施されると、ＭＰＵは、共有システムリソースのコントローラへの制御信号の通常送信を禁止することができる（例えば、ＭＰＵは代わりに「アイドル」制御信号をコントローラに渡してもよい）。要求されたアクセスが評価され、許可または拒否のいずれかが為された後、本方法は図示されるように反復されることができる。
【００９７】
図９は、例示的な実施形態による、セマフォによって影響を与えられるメモリ保護ユニットを備える電子システム（例えば、図１のシステム１００）を製造するための方法のフローチャートである。説明される方法は、一実施形態によるシステムと従来のシステムとの間の実際のハードウェアの差異をさらに明らかにするように意図されている。従って、本方法は、１つまたは複数の半導体基板上の能動または受動構成要素の製造に関するさまざまな半導体製造プロセスを伴うが、これらの半導体製造プロセスに関連する詳細は本明細書には記載されない。本明細書の記載に基づいて、下記に記載するさまざまな方法工程を実行するために従来の半導体製造プロセスを適用する方法が当業者には分かるであろう。加えて、特定の順序の製造工程が図９において記載および図示されているが、工程の順序は異なってもよいこと、および／または工程のいくつかは同時に実行されてもよいことが理解されるべきである。
【００９８】
方法は、ブロック９０２において、１つまたは複数の半導体基板を提供することによって開始する。すべてのシステム構成要素（例えば、図１のＤＡＣ１０２〜１０４、システムバス１０６、セマフォモジュール１０８、ＭＰＵ１１０、ＲＡＭ１１２、フラッシュアレイ１１４、周辺機器モジュール１２０、１２２、および周辺機器用バス１２４、１２６）が同じ基板上に備えられるシステム・オン・チップでは、単一の半導体基板が提供されることができる。逆に、システム・イン・パッケージまたはシステム構成要素が別個にパッケージされるシステムでは、複数の半導体基板が提供されることができる。
【００９９】
ブロック９０４、９０６、および９０８において、複数のＤＡＣ（例えば、ＤＡＣ１０２〜１０４）、通信バス（例えば、バス１０６、１２４、１２６）、１つまたは複数のスレーブデバイス（例えば、ＲＡＭ１１２、フラッシュアレイ１１４、周辺機器モジュール１２０、１２２）、セマフォモジュール（例えば、図１、図２のセマフォモジュール１０８、２００）、およびＭＰＵ（例えば、図１、図６のＭＰＵ１１０、６００）が、従来の半導体処理技法を使用して基板（複数の場合もあり）上に製造される。既に詳細に記載したように、セマフォモジュールは、セマフォ状態レジスタ（例えば、図２のセマフォ状態レジスタ２０２〜２０４）を含み、ＭＰＵは、領域記述子レジスタ（例えば、図６の領域記述子レジスタ６０２、６０４）およびアクセス評価論理部（例えば、図６のアクセス評価論理部６１０、６１２）を備える。
【０１００】
ブロック９１０において、ハードウェア接続（例えば、図１、図２、図６、図７のハードウェア接続１３０、２３０〜２３２、６５０、６５２、７５０）が、セマフォモジュールにおけるセマフォ状態レジスタ（複数の場合もあり）とＭＰＵにおけるアクセス評価論理部との間に提供される。システム・オン・チップでは、ハードウェア接続は、システムがその上に製造される単一の基板に制限され得る。セマフォモジュールおよびＭＰＵが異なる基板上に製造されるシステム・イン・パッケージでは、ハードウェア接続は、基板間に延在する導体、ならびに、セマフォモジュールおよびＭＰＵ基板上の導体を備える。セマフォモジュールおよびＭＰＵが別個にパッケージされたデバイスにおいて備えられるシステムでは、ハードウェア接続は、セマフォモジュールからセマフォモジュールパッケージのパッケージ相互接続（例えば、ピン、ランド、ボール、バンプなど）までの導体、および、ＭＰＵからＭＰＵパッケージのパッケージ相互接続までの導体を備える。その上に別個にパッケージされたセマフォモジュールおよびＭＰＵが設置されるプリント回路基板は、セマフォモジュールとＭＰＵとの間のハードウェア接続を確立するために、対応するパッケージ相互接続間の追加の導体を備える。上記に詳細に論じたように、ハードウェア接続は、セマフォの状態が、ソフトウェアの介在なしにＭＰＵに直接伝達され、従って、ＭＰＵがセマフォ状態に基づいて有効アクセス許可を生成することを可能にする。さらなる処理工程の後、方法は終了することができる。
【０１０１】
このように、共有システムリソースに対するアクセスを制御するための方法および装置のさまざまな実施形態が上記で説明されてきた。電子システムの一実施形態は、複数のＤＡＣと、セマフォモジュールと、ＭＰＵとを備える。複数のＤＡＣの各々は、共有システムリソースに対するアクセスを要求するアクセス要求を発行するように構成される。領域記述子は、共有システムリソースに関連付けられる。セマフォモジュールは、共有システムリソースのためのセマフォを実装するとともに、複数のＤＡＣが存在する場合は、そのいずれが共有システムリソースについてのセマフォをロックしたかを示すセマフォ信号を生成するように構成される。ＭＰＵは、セマフォ信号および領域記述子に基づいてアクセス要求を認可または拒否するように構成される。
【０１０２】
ＭＰＵの一実施形態は、領域記述子レジスタおよびアクセス評価論理部を備える。領域記述子レジスタは領域記述子を記憶するためのものである。領域記述子は、共有システムリソースについて、共有システムリソースのためのアドレス範囲、および、複数のデータアクセス構成要素の各々に対するデフォルトアクセス許可を指定する。アクセス評価論理部は領域記述子レジスタに結合される。アクセス評価論理部は、デフォルトアクセス許可およびセマフォ信号を受け取るように構成され、セマフォ信号は、存在する場合は、複数のＤＡＣのいずれが共有システムリソースに関連付けられるセマフォをロックしたかを示す。アクセス評価論理部は、セマフォ信号に基づいてデフォルトアクセス許可を変えることによって複数のＤＡＣに対する有効アクセス許可を生成するとともに、有効アクセス許可に基づいて複数のＤＡＣが要求されたアクセスを実行することを許可されているか否かを判定するようにも構成されることができる。
【０１０３】
複数のＤＡＣを備える電子システムにおいて共有システムリソースへのアクセスを提供するための方法の一実施形態は、共有システムリソースのための領域記述子を領域記述子レジスタに記憶することを備える。領域記述子は、複数のＤＡＣの各々に対するデフォルトアクセス許可を指定し、領域記述子は、共有システムリソースに関連付けられるセマフォを識別する。本方法は、セマフォモジュールとのハードウェア接続を通じて、存在する場合は、共有システムリソースに関連付けられるセマフォをロックしたＤＡＣの識別情報を示すセマフォ信号を受け取ることと、デフォルトアクセス許可およびセマフォ信号に基づいて複数のＤＡＣに対する有効アクセス許可を生成することとをさらに備える。セマフォ信号が、特定のＤＡＣがセマフォをロックしたことを示す場合、他のＤＡＣに対するデフォルトアクセス許可がアクセスが許可されることを指定している場合であっても、他のＤＡＣに対しては共有システムリソースに対するアクセスが拒否されることを示すための有効アクセス許可が生成される。
【０１０４】
さまざまな実施形態の原理が特定のシステム、装置、および方法に関連して上記で説明されてきたが、この説明は例示のみを目的として為されており、本発明の主題の範囲に対する限定としてではないことは明瞭に理解されたい。さらに、本明細書において採用されている表現または専門用語は説明を目的としており、限定ではない。
【０１０５】
特定の実施形態の上記の記載は、他者が、現在の知識を適用することによって、一般的な概念から逸脱することなくさまざまな用途のためにそれを容易に変更および／または適合することができるだけ十分にさまざまな実施形態の一般的な性質を公開している。従って、このような適合および変更は開示されている実施形態の均等物の意図および範囲内にある。本発明の主題は、すべてのこのような代替形態、変更形態、均等物、および変形形態を、添付の特許請求の範囲の精神および広い範囲内に入るものとして包含する。
【図１】
0006372941.tif 000002
【図２】
0006372941.tif 000003
【図３】
0006372941.tif 000004
【図４】
0006372941.tif 000005
【図５】
0006372941.tif 000006
【図６】
0006372941.tif 000007
【図７】
0006372941.tif 000008
【図８】
0006372941.tif 000009
【図９】
0006372941.tif 000010