(57)【要約】【課題】デバイスに対するアクセスを制御することで、セキュリティを向上させる。【解決手段】複数のバスマスタと、デバイスと、を備えるコンピュータシステムにおいて、デバイスに対してアクセスを行う複数のバスマスタのそれぞれに対して、デバイス毎にアクセス可能か否かを示すアクセス制御情報を記憶する制御情報記憶装置と、バスマスタによるデバイスに対するアクセス要求を検出する検出部と、アクセス要求を検出した場合に、当該アクセス要求を出力したバスマスタのアクセス制御情報を、制御情報記憶装置から取得する取得部と、取得したアクセス制御情報を、デバイスにアクセス可能であることを示していればアドレス変換を行わず、前記デバイスにアクセス可能でないことを示していればアドレス変換を行うフィルタとして用いて、アクセス要求のアクセス先のアドレスのアドレス変換を行う第１及び第２アドレス変換装置と、を備える。【選択図】        図１
2008250386.tif 000002
【特許請求の範囲】
【請求項１】
デバイスに対してアクセスを行う複数のバスマスタのそれぞれに対して、前記デバイス毎にアクセス可能か否かを示すアクセス制御情報を記憶する記憶手段と、
前記バスマスタによる前記デバイスに対するアクセス要求を検出する検出手段と、
前記アクセス要求を検出した場合に、当該アクセス要求を出力した前記バスマスタの前記アクセス制御情報を、前記記憶手段から取得する取得手段と、
前記取得手段が取得した前記アクセス制御情報を、当該アクセス制御情報が前記デバイスにアクセス可能であることを示していればアドレス変換を行わず、前記デバイスにアクセス可能でないことを示していればアドレス変換を行うフィルタとして用いて、前記アクセス要求のアクセス先のアドレスのアドレス変換を行うアドレス変換手段と、
を備えることを特徴とするアクセス制御装置。
【請求項２】
前記アクセス制御情報を変更する変更手段と、をさらに備えることを特徴とする請求項１に記載のアクセス制御装置。
【請求項３】
プロセッサを含む複数のバスマスタと、複数のバスマスタのアクセス対象となるデバイスと、を備えるコンピュータシステムにおいて、
デバイスに対してアクセスを行う複数のバスマスタのそれぞれに対して、前記デバイス毎にアクセス可能か否かを示すアクセス制御情報を記憶する記憶手段と、
前記バスマスタによる前記デバイスに対するアクセス要求を検出する検出手段と、
前記アクセス要求を検出した場合に、当該アクセス要求を出力した前記バスマスタの前記アクセス制御情報を、前記記憶手段から取得する取得手段と、
前記取得手段が取得した前記アクセス制御情報を、当該アクセス制御情報が前記デバイスにアクセス可能であることを示していればアドレス変換を行わず、前記デバイスにアクセス可能でないことを示していればアドレス変換を行うフィルタとして用いて、前記アクセス要求のアクセス先のアドレスのアドレス変換を行うアドレス変換手段と、
を備えることを特徴とするコンピュータシステム。
【請求項４】
前記アクセス制御情報を変更する変更手段と、をさらに備えることを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
前記プロセッサは、アクセス可能なデバイスが異なる複数のソフトウェアを切り替えて、前記ソフトウェアを動作させ、
前記変更手段は、前記プロセッサ上を動作するソフトウェアが切り替えられた場合に、前記プロセッサと対応付けられたアクセス制御情報を変更することを特徴とする請求項４に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、デバイス毎にアクセスを制御するアクセス制御装置及びコンピュータシステムに関するものである。
【背景技術】
【０００２】
近年、１つのハードウェアで様々な機能を実現する傾向にある。このため、１つの組み込み機器に搭載するシステムＬＳＩやＳｏＣに、プロセッサやＤＳＰやＤＭＡコントローラ等の装置が混載されるようになった。これらの装置は、システムが備えるバスに能動的にアクセス要求を出すことからバスマスタと呼ばれる。これらバスマスタが当該組み込み機器に接続されたデバイスを制御させることも多い。
【０００３】
また、当該組み込み機器に搭載されるシステムＬＳＩやＳｏＣにおいて、複数の機能を実現させるために、プロセッサを搭載すると共に、当該プロセッサ上で動作させるために、ゲストＯＳ等の複数のプログラムを保持させる傾向にある。
【０００４】
しかしながら、上述したシステムＬＳＩ、ＳｏＣに混載されるプロセッサは面積等の特殊な制約があるため、高機能プロセッサをワンチップで混載させることも難しい。このため、システムＬＳＩ、ＳｏＣには従来から使用されてきたプロセッサを選択して混載することも多い。そして、サーバ計算機や汎用計算機に使用されるような高機能なプロセッサと異なり、複数ゲストＯＳの動作を可能とする仮想化機構などのセキュリティを保護するための機構が搭載されていないことも多い。
【０００５】
つまり、このような組み込み機器においても、上述したプログラム、又は当該組み込み機器で利用されている秘密情報の外部への漏洩、破壊そして改竄という問題が生じる。
【０００６】
このような問題を解決するには、各プログラムやハードウェア装置に割り当てられた入出力デバイスやメモリといったリソースへのアクセスの可否を制御する必要がある。例えば、あるプログラムに割り当てられたメモリや入出力デバイスを他のプログラムや装置からアクセスできないように制御することが挙げられる。
【０００７】
このような制御を実現する手段としては、プロセッサ等は従来から使用されているものを搭載しているので、プロセッサ外部から当該プロセッサに依存せずに行うのが好ましい。
【０００８】
このプロセッサに依存しない形態のメモリおよびデバイスへのアクセス制御技術として特許文献１に記載された技術が提案されている。この特許文献１に記載された技術では、コンピュータシステムにおいて、プロセッサ上で動作するプログラム毎に、当該システムが備えるリソースへのアクセスの可否を示すアクセス許可テーブルと、アクセス先アドレスとアクセス許可テーブルの内容とを比較してアクセスの可否を判断するアクセス違反検出器を備えている。
【０００９】
そして、特許文献１に記載されたコンピュータシステムでは、管理プログラムがプロセッサ上で実行するプログラムの切り替え時にアクセス許可テーブルを当該プログラム用のテーブルに切り替えている。そして、アクセス違反検出器が、プログラムが発するリソースへのアクセス要求に対して、アクセス先のアドレスとアクセス許可テーブル内の情報を比較して、アクセスの可否を判断している。これにより、プロセッサ上で動作するソフトウェアに応じてアクセス制御を可能としている。
【００１０】
【特許文献１】特開２００１−３２５１５０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に記載された技術では、プロセッサ上で動作するプログラムからの不正アクセスを防ぐことは可能であるが、システムＬＳＩやＳｏＣに混載されたＤＳＰやＤＭＡコントローラといった、プロセッサ上でのプログラムの動作とは関係なく動作している装置によるリソースへのアクセスを監視することができず、それらの装置を利用した、プログラムが展開されているメモリへの不正アクセス等を防ぐことができないとう問題がある。
【００１２】
本発明は、上記に鑑みてなされたものであって、システムＬＳＩやＳｏＣに混載された全てのバスマスタからのデバイスに対するアクセスを制御することで、セキュリティを向上させたアクセス制御装置及びコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明にかかるアクセス制御装置は、デバイスに対してアクセスを行う複数のバスマスタのそれぞれに対して、前記デバイス毎にアクセス可能か否かを示すアクセス制御情報を記憶する記憶手段と、前記バスマスタによる前記デバイスに対するアクセス要求を検出する検出手段と、前記アクセス要求を検出した場合に、当該アクセス要求を出力した前記バスマスタの前記アクセス制御情報を、前記記憶手段から取得する取得手段と、前記取得手段が取得した前記アクセス制御情報を、当該アクセス制御情報が前記デバイスにアクセス可能であることを示していればアドレス変換を行わず、前記デバイスにアクセス可能でないことを示していればアドレス変換を行うフィルタとして用いて、前記アクセス要求のアクセス先のアドレスのアドレス変換を行うアドレス変換手段と、を備えることを特徴とする。
【００１４】
また、本発明にかかるコンピュータシステムは、プロセッサを含む複数のバスマスタと、複数のバスマスタのアクセス対象となるデバイスと、を備えるコンピュータシステムにおいて、デバイスに対してアクセスを行う複数のバスマスタのそれぞれに対して、前記デバイス毎にアクセス可能か否かを示すアクセス制御情報を記憶する記憶手段と、前記バスマスタによる前記デバイスに対するアクセス要求を検出する検出手段と、前記アクセス要求を検出した場合に、当該アクセス要求を出力した前記バスマスタの前記アクセス制御情報を、前記記憶手段から取得する取得手段と、前記取得手段が取得した前記アクセス制御情報を、当該アクセス制御情報が前記デバイスにアクセス可能であることを示していればアドレス変換を行わず、前記デバイスにアクセス可能でないことを示していればアドレス変換を行うフィルタとして用いて、前記アクセス要求のアクセス先のアドレスのアドレス変換を行うアドレス変換手段と、を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、複数のバスマスタからのデバイスに対するアクセスを制御することで、セキュリティを向上させるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に添付図面を参照して、この発明にかかるアクセス制御装置及びコンピュータシステムの最良な実施の形態を詳細に説明する。
【００１７】
（第１の実施の形態）
図１に示すように、コンピュータシステムは、ＳｏＣ１００と、第２のデバイス１５０とを備える。
【００１８】
第２のデバイス１５０は、後述するＳｏＣ１００に接続され、ＳｏＣ１００に含まれるプロセッサ１０１やＤＳＰ１０２により制御されるデバイスとする。
【００１９】
第２のデバイス１５０の例としては、メモリモジュール、ハードディスクドライブ等の大容量外部記憶装置、ネットワークインターフェース等の外部通信装置、キーボードやマウスなど利用者が入力に用いる入力装置、さらにはディスプレイ等の外部出力装置が考えられるが、これらに限るものではない。
【００２０】
ＳｏＣ１００は、プロセッサ１０１と、ＤＳＰ１０２と、オンチップメモリ１０３と、アクセス制御情報管理装置１０４と、第１のアドレス変換装置１０５と、第１のデバイスコントローラ１０６と、第１のデバイス１４０と、第２のアドレス変換装置１０７と、第２のデバイスコントローラ１０８とを備える。
【００２１】
本実施の形態にかかるコンピュータシステムでは、能動的にオンチップバス１２０にアクセス要求を出力する装置を、バスマスタと呼ぶ。本実施の形態のＳｏＣ１００内部では、プロセッサ１０１やＤＳＰ１０２がバスマスタに該当する。そして、本実施の形態にかかるコンピュータシステムでは、アクセスを制御するためのこれらバスマスタに対して識別子（以下、バスマスタＩＤとする）を付与する。これにより、オンチップバス１２０上でアクセス要求を行ったバスマスタを区別することができる。
【００２２】
そして、プロセッサ１０１にはバスマスタＩＤ＝“０”を、ＤＳＰ１０２にはバスマスタＩＤ＝“１”を割り当てる。
【００２３】
第１のデバイス１４０は、後述するプロセッサ１０１やＤＳＰ１０２により制御が行われるデバイスとする。
【００２４】
このように、プロセッサ１０１やＤＳＰ１０２で制御の対象となるデバイスは、ＳｏＣ１００の内部に備えるものでも、ＳｏＣ１００の外部に備えるものでもよい。また、ＳｏＣ１００に接続されるデバイスの数を２個に制限するものではなく、何個でも良いものとする。
【００２５】
また、コンピュータシステムでは、アクセス制御の対象となるデバイスを識別するために、上述した各デバイスに対して識別子（以下、デバイスＩＤとする）を付与する。本実施の形態にかかるコンピュータシステムでは、第１のデバイス１４０には、デバイスＩＤ＝“０”を付与し、第２のデバイス１５０には、デバイスＩＤ＝“１”を付与する。なお、デバイスＩＤは、システムに存在するデバイスを識別することができれば、どのような形式を用いても良い。
【００２６】
次に、これら第１のデバイス１４０や第２のデバイス１５０にアクセスするためのアドレス空間について説明する。図２に示すように、ＳｏＣ１００に混載されているオンチップメモリにアクセスするためのアドレス範囲は、アドレス０ｘ０〜０ｘ０ＦＦＦＦＦＦＦまでの２５６メガバイトの空間が割り当てられているものとする。そして、当該物理アドレス空間のうち、第１のデバイス１４０にアクセスするためのアドレス範囲として０ｘＡ０００００００〜０ｘＡ０００００ＦＦの２５６バイトの空間が、第２のデバイス１５０にアクセスするためのアドレス範囲として０ｘＢ０００００００〜０ｘＢ０００００ＦＦの２５６バイトの空間が設定されている。
【００２７】
そして、プロセッサ１０１やＤＳＰ１０２が、それぞれのデバイスにアクセスするには、当該アドレス範囲内のアドレスに設定されたデバイス制御用レジスタ等にアクセスする。例えば、プロセッサ１０１が、アドレス０ｘＡ０００００００〜０ｘＡ０００００ＦＦにマップされた第１のデバイス１４０にアクセスするために、アドレス０ｘＡ０００００００を指定したアクセスをオンチップバス１２０に出力する。本実施の形態にかかるコンピュータシステムでは、任意のデバイスに対してアクセス権を有していない場合に、アクセス先アドレスを変換することで、これらデバイスに対するアクセスを防止する。
【００２８】
このアクセス先アドレスの変換は、後述するアドレス変換装置（第１のアドレス変換装置１０５及び第２のアドレス変換装置１０７）が行う。なお、アドレス変換装置は、アクセス先アドレスの最上位ビットを変換対象として使用する。なお、アドレス変換装置の詳細な説明については後述する。
【００２９】
本実施の形態にかかるコンピュータシステムでは、アクセス制御の対象となる全てのデバイスを、コンピュータシステムの物理アドレス空間におけるアドレスの最上位ビットが“１”の範囲に配置する。
【００３０】
そして、メモリ（例えばオンチップメモリ）のために確保された物理アドレス空間中の範囲は、デバイスを配置する範囲とは異なるアドレス空間（つまりアドレスの最上位ビットが“０”である空間）に確保した。
【００３１】
ただし、組み込みシステムに限らず、コンピュータシステムにおける物理アドレス空間上では、各デバイスとメモリとの配置は上記のように分割されることが一般的である。このため、コンピュータシステムの構築にあたり、上述した制約が困難であったり混乱を招いたりするものではない。
【００３２】
そして、後述するアドレス変換装置（第１のアドレス変換装置１０５及び第２のアドレス変換装置１０７）は、当該最上位ビット“１”と、後述するアクセス制御情報とのビット演算を行い、アクセス許可が無い場合に最上位ビットが“０”に変換され、アクセス許可がある場合に最上位ビットが変更されないように処理を行う。
【００３３】
アクセス制御情報とは、バスマスタ毎に各デバイスに対してアクセス可能であるか否かを保持する情報とする。このアクセス制御情報は、後述するアクセス制御情報管理装置１０４の制御情報記憶装置１１０に格納されている。なお、アクセス制御情報は必要に応じて変更することができる。
【００３４】
プロセッサ１０１は、ハイパーバイザ、第１のゲストＯＳ又は第２のゲストＯＳが動作する。
【００３５】
図３に示すように、ハイパーバイザは、論理的には第１のゲストＯＳ及び第２のゲストＯＳの下層に配置されるものとする。
【００３６】
そして、本実施の形態において、第１のゲストＯＳは、第１のデバイス１４０に対してアクセス許可されず、第２のデバイス１５０に対して許可される。そして、第２のゲストＯＳは、第１のデバイス１４０に対してアクセス許可され、第２のデバイス１５０に対して許可されないものとする。
【００３７】
これらゲストＯＳ間が切り替わる際に、ハイパーバイザが呼び出され、呼び出されるゲストＯＳに応じてアクセス制御情報を変更する。なお、詳細な変更手法については後述する。
【００３８】
なお、制御情報記憶装置１１０へのアクセス制御情報の設定は、コンピュータシステム１００で信頼できる装置又はソフトウェアのみが行えるようにする必要がある。本実施の形態では、ハイパーバイザのみアクセス制御情報の設定を行えるものとする。これにより、アクセス制御情報を保護することができる。
【００３９】
仮に、第１のゲストＯＳ、第２のゲストＯＳ又はＤＳＰ１０２上で動作する専用ソフトウェアが、アクセス制御情報の設定を可能とした場合、これらソフトウェアが任意でアクセス制御情報を設定できることになる。これでは当該ソフトウェアの悪意や不具合による許可されていないデバイスへのアクセスを防止することができない。
【００４０】
このために、本実施の形態では、制御情報記憶装置１１０へのアクセスをハイパーバイザしか行えないようにするか、制御情報記憶装置１１０とプロセッサ１０１を専用のバス等で接続した上で当該専用のバスへのアクセスをハイパーバイザしかできないように構成することとした。なお、この他にも様々な方法が考えられるが、上記の条件が満たされればその手段は問わない。
【００４１】
また、ハイパーバイザは、時分割等の方法にしたがって各ゲストＯＳを切り替えながら並行に動作させている。このため、ハイパーバイザは、ゲストＯＳの切り替えの際、実行を再開させるゲストＯＳのアクセス制御情報を、制御情報記憶装置１１０のバスマスタＩＤ＝０に相当する場所に再設定する必要がある。このために、本実施の形態にかかるハイパーバイザは、全てのゲストＯＳのアクセス制御情報を、ハイパーバイザしかアクセスできない（図示しない）記憶領域に記憶して管理している。そして、ハイパーバイザは、当該記憶領域から読み出したアクセス制御情報を、ゲストＯＳ切り替えの際に、制御情報記憶装置１１０に設定する。
【００４２】
また、ハイパーバイザは、ＳｏＣ１００に混載している装置又はＳｏＣ１００に外付けされたハードウェア装置等を用いて改竄されないことや、プロセッサ１０１上で動作する他のソフトウェア（第１のゲストＯＳ等）や割り込み等によって実行を邪魔されないことが保障されているものとする。
【００４３】
このハイパーバイザの信頼性を保証する機構は、どのような手法で実現しても良い。例えばハイパーバイザのプログラム自体には、ハイパーバイザの動作中以外はアクセスできないようにメモリアクセスを制御する装置をＳｏＣ１００に混載しても良い。他の例としては、コンピュータシステムの起動時に適切な認証操作を行うことでハイパーバイザの信頼性を保障するなどの方法が考えられる。
【００４４】
また、ハイパーバイザが、他のソフトウェアや割り込みによって動作を邪魔されないことに関しては、例えばプロセッサ１０１上で動作するどのゲストＯＳよりも高い特権モードを付与することや、ハイパーバイザの実行中はプロセッサへの割り込みを完全に禁止するといった方法が考えられる。なお、これらの方法以外にも様々な方法が考えられるが、上述した条件が満たされていれば、どのような手段を用いても良い。
【００４５】
本実施の形態にかかるコンピュータシステムにおいて、ゲストＯＳに対するアクセス制御は、ハイパーバイザと、後述するアクセス制御情報管理装置１０４と、デバイス毎に設置されたアドレス変換装置（第１のアドレス変換装置１０５と、第２のアドレス変換装置１０７）と、を組み合せることで実現できる。
【００４６】
また、プロセッサ１０１上で動作する第１のゲストＯＳ又は第２のゲストＯＳがオンチップバス１２０にアクセス要求を出す際、両方ともプロセッサ１０１のバスマスタＩＤ＝“０”がオンチップバス１２０に出力される。
【００４７】
ＤＳＰ１０２は、特定の演算を高速に行うマイクロプロセッサであり、例えば音声や画像などの処理を行うものとする。
【００４８】
またＤＳＰ１０２上で動作する専用ソフトウェアがオンチップバス１２０にアクセス要求を出す際は、ＤＳＰのバスマスタＩＤ＝“１”がオンチップバス１２０に出力される。
【００４９】
オンチップメモリ１０３は、プロセッサ１０１上で動作するプログラムが利用する作業領域であるとともに、プロセッサ１０１上で動作する様々なプログラム等を格納する領域とする。
【００５０】
第１のデバイスコントローラ１０６は、オンチップバス１２０及び第１のアドレス変換装置１０５を介してプロセッサ１０１又はＤＳＰ１０２から第１のデバイス１４０に対するアクセス要求を受け付け、当該アクセス要求に対応する制御信号を第１のデバイス１４０へ送出する。また、第１のデバイスコントローラ１０６は、第１のデバイス１４０に設定されたアドレス範囲以外のアドレスを示したアクセス要求を受け付けた場合、アクセスを無視する。これにより、後述する第１のアドレス変換装置１０５でアクセス先アドレスが変換されている場合、第１のデバイス１４０に対するアクセスが行えなくなる。
【００５１】
第２のデバイスコントローラ１０８は、制御対象となるデバイスが第２のデバイス１５０となり、第２のアドレス変換装置１０７を介してデバイス要求を受け付けることを除けば、第１のデバイスコントローラ１０６と同様の処理を行うため説明を省略する。
【００５２】
アクセス制御情報管理装置１０４は、制御情報記憶装置１１０と、出力情報選択装置１１１と、制御信号出力装置１１２と、変更部１１５とを備え、バスマスタ（例えばプロセッサ１０１、ＤＳＰ１０２）がデバイス（例えば第１デバイス１４０、第２のデバイス１５０）に対してアクセス可能であるか否かを示すアクセス制御情報を管理し、アクセス要求に応じてアクセス制御情報を出力する。
【００５３】
制御情報記憶装置１１０は、アクセス要求を出すバスマスタ毎に、コンピュータシステムでアクセス可能な各デバイスに対するアクセス許可するか否かを示すアクセス制御情報を記憶している。
【００５４】
図４に示すように、当該制御情報記憶装置１１０は、アクセス制御対象のデバイス数（行）×バスマスタ数（列）という配列構造となっている。各行が各デバイスの全バスマスタに対するアクセス制御情報に相当し、各列が各バスマスタの全デバイスに対するアクセス制御情報に相当している。このように、アクセス制御情報は、バスマスタＩＤで示されたバスマスタが、デバイスＩＤで示されたデバイスにアクセス可能であるか否かを“０”か“１”かのフラグとして管理されている。そして、このアクセス制御情報が“１”であればアクセス可能であり、“０”であればアクセス不可能であることを示している。
【００５５】
つまり、図４では、バスマスタＩＤ＝“０”であるプロセッサ１０１からは、デバイスＩＤ＝“０”の第１のデバイス１４０にはアクセス不可であり、デバイスＩＤ＝“１”の第２のデバイス１５０はアクセス可能であることを示している。また、バスマスタＩＤ＝“１”であるＤＳＰ１０２からは、デバイスＩＤ＝“０”の第１のデバイス１４０にはアクセス不可であり、デバイスＩＤ＝“１”の第２のデバイス１５０はアクセス可能であることを示している。
【００５６】
図１に戻り、変更部１１５は、アクセス制御情報を、バスマスタからの要求に応じて変更する。また、変更部１１５による変更は、ハイパーバイザなどの信頼性の高いソフトウェアや装置から要求を受け付けた場合に限り行われることとする。本実施の形態では、変更部１１５は、プロセッサ１０１上で動作するプログラムからの要求に限り、アクセス制御情報を変更する。
【００５７】
また、変更部１１５において、オンチップバス１２０から取得したアクセス制御情報の書込先（制御情報記憶装置１１０の所定の列）の決定は、オンチップバス１２０とは別の専用の信号線を使用してハイパーバイザが指定したり、オンチップバス１２０に流れる書き込み先アドレスから計算することが考えられる。なお、詳細な処理手順については後述する。
【００５８】
出力情報選択装置１１１は、検出部１１３と、取得部１１４とを備え、オンチップバス１２０上に流れるバスマスタＩＤが変化に応じて、制御情報記憶装置１１０から当該バスマスタＩＤに適したアクセス制御情報を選択し、制御信号出力装置１１２に出力する。
【００５９】
検出部１１３は、バスマスタによるデバイスに対するアクセス要求をオンチップバス１２０から検出する。また、検出部１１３は、アクセス要求を行ったバスマスタを識別するバスマスタＩＤを、オンチップバス１２０から検出する。
【００６０】
取得部１１４は、検出部１１３がアクセス要求を検出した場合に、検出したバスマスタＩＤに対応するアクセス制御情報を、制御情報記憶装置１１０から取得する。そして、取得部１１４は、取得したアクセス制御情報を、制御信号出力装置１１２に出力する。
【００６１】
制御信号出力装置１１２は、出力情報選択装置１１１から入力されたアクセス制御情報の各ビットを、アドレス変換装置（第１のアドレス変換装置１０５、第２のアドレス変換装置１０７）毎のアクセス制御情報として、各アドレス変換装置に接続している信号線に送出する。これにより、制御情報記憶装置１１０に記憶されているアクセス制御情報がそれぞれのアドレス変換装置に送信されることになる。
【００６２】
第１のアドレス変換装置１０５は、第１のデバイスコントローラ１０６とオンチップバス１２０との間に設置されるものとする。そして、第１のアドレス変換装置１０５は、図示しないビット計算装置を備え、当該ビット計算装置で入力されたアクセス制御情報でアクセス先アドレスのフィルタリングを行う。つまり、ビット計算装置がフィルタとして機能する。これにより、第１のアドレス変換装置１０５は、必要に応じて第１のデバイス１４０のアクセス先アドレスを変換できる。
【００６３】
第２のアドレス変換装置１０７は、第２のデバイスコントローラ１０８とオンチップバス１２０との間に設置されるものとする。そして、第２のアドレス変換装置１０７は、図示しないビット計算装置を備え、当該ビット計算装置で入力されたアクセス制御情報でアクセス先アドレスのフィルタリングを行う。これにより、第２のアドレス変換装置１０７は、必要に応じて第２のデバイス１５０のアクセス先アドレスを変換できる。
【００６４】
次に、図１に示すコンピュータシステムのバスマスタから第１のデバイス１４０に対するアクセス制御の例の処理手順について、図５を用いて説明する。
【００６５】
まず、プロセッサ１０１上で動作しているハイパーバイザは、次に第１のゲストＯＳを呼び出すことを決定すると、第１のゲストＯＳ用のアクセス制御情報の設定を、制御情報記憶装置１１０に出力する（ステップＳ５０１）。そして、変更部１１５は、当該アクセス制御情報の設定要求を受け付けると、制御情報記憶装置１１０の配列のうち、バスマスタＩＤ＝“０”（プロセッサ１０１に対応する）の列を、第１のゲストＯＳに適したアクセス制御情報に変更する。これにより制御情報記憶装置１１０は、図４に示すような配列が設定されたものとする。
【００６６】
つまり、図４に示す配列の、バスマスタＩＤ＝“０”の列において、第１のデバイス１４０（デバイスＩＤ＝“０”）に対するアクセスが不許可（フラグ値が“０”）にされ、第２のデバイス１５０（デバイスＩＤ＝“１”）に対するアクセスが許可（フラグ値が“１”）されたものとする。
【００６７】
その後、ハイパーバイザは第１のゲストＯＳをディスパッチし、プロセッサ１０１上で第１のゲストＯＳが動作を開始する（ステップＳ５０２）。
【００６８】
ここで、第１のゲストＯＳが、悪意又は不具合等によって、本来アクセスできない第１のデバイス１４０に対するアクセス要求をオンチップバス１２０に出力したものとする（ステップＳ５０３、ステップＳ５０４）。
【００６９】
そして、出力情報選択装置１１１の検出部１１３は、アクセス要求を行ったバスマスタＩＤを、オンチップバス１２０から検出する。本処理手順では検出部１１３は、バスマスタＩＤ＝“０”を検出する。
【００７０】
そこで、出力情報選択装置１１１の取得部１１４は、バスマスタＩＤ＝“０”のアクセス制御情報を、制御情報記憶装置１１０から取得する（ステップＳ５０５）。そして、取得部１１４は、取得したアクセス制御情報を制御信号出力装置１１２に出力する（ステップＳ５０６）。
【００７１】
次に、制御信号出力装置１１２は、入力されたアクセス制御情報の各ビットを、第１のアドレス変換装置１０５及び第２のアドレス変換装置１０７にそれぞれ出力する（ステップＳ５０７）。
【００７２】
図６に示すように、検出部１１３が、オンチップバス１２０から、バスマスタＩＤ＝“０”を検出した場合、取得部１１４がバスマスタＩＤ＝“０”に対応する列情報“０、１”を取得して、制御信号出力装置１１２に出力する。そして、制御信号出力装置１１２は、入力された列情報“０、１”のうち“０”を第１のアドレス変換装置１０５に出力し、“１”を第２のアドレス変換装置１０７に出力している。
【００７３】
図６に示したアクセス制御情報の出力処理は、特定のクロックに同期せず、オンチップバス１２０に流れるバスマスタＩＤの変化に追随して行われる。つまり、特定のクロックと非同期に行われる。
【００７４】
図５に戻り、ステップＳ５０７で示したアクセス制御信号の出力処理は、ステップＳ５０４で示したプロセッサ１０１からのアクセス要求を第１のアドレス変換装置１０５が受信する前に完了する必要がある。これは、プロセッサ１０１、ＤＳＰ１０２及びオンチップバス１２０においてアクセス要求を行う際、何ら特別な処理を行わない本実施の形態にかかるコンピュータシステムでは、アクセス制御信号を伝播させるための新たなクロックサイクルの余裕がない可能性があるからである。このために、図６に示したアクセス制御情報の出力処理は非同期に行われることとした。なお、オンチップバス１２０がアクセスを開始するまでに十分なクロックサイクルの余裕がある場合、例えばバスの動作クロックに同期させるなど、他の特定のクロックと同期させても良い。
【００７５】
第１のアドレス変換装置１０５が、入力されたアクセス制御情報“０”を用いて、アクセス要求に含まれているアクセス先アドレスの最上位ビットのフィルタリングを行う（ステップＳ５０８）。
【００７６】
図７に示すように、第１のアドレス変換装置１０５はビット計算装置７０１を備えている。そして、第１のアドレス変換装置１０５は、オンチップバス１２０からアクセス先アドレスを取得し、ビット計算装置７０１が、制御信号出力装置１１２から入力されたアクセス制御情報（“０”又は“１”）と、取得したアクセス先アドレスの最上位ビット７０２とのビット計算を行う。
【００７７】
そして、第１のアドレス変換装置１０５は、ビット計算結果を最上位ビット７０３とし、この最上位ビットと残りのビット列とを結合して、アクセス先アドレスとして第１のデバイスコントローラ１０６に出力する。
【００７８】
この図７に示すビット計算装置７０１は、２入力１出力のＡＮＤゲートとする。そして、第１のアドレス変換装置１０５では、アクセス先アドレス及び計算済アドレスの操作のために一旦保持するためのレジスタを用意しても良いし、またレジスタを設けずに直接信号線で接続する構成としても良い。
【００７９】
第１のアドレス変換装置１０５がオンチップバス１２０に流れるアクセス先アドレスの最上位ビットをビット演算の対象としたのは次のような理由による。通常、デバイスコントローラは、オンチップバスに流れるアクセス要求が、制御対象であるデバイスに対するものであるか否かを、アクセス先アドレスで判断している。つまり、デバイスコントローラは、入力されたアクセス先アドレスが、コンピュータシステムの物理アドレス空間上で、制御対象としているデバイスに設定されたアドレス範囲にあれば、当該アクセス要求を処理し、当該アドレス範囲に含まれていなければ無視している。
【００８０】
そこで、本実施の形態にかかる第１のアドレス変換装置１０５はこの性質を利用することとした。つまり、実際にオンチップバス１２０に流れているアクセス先アドレスが、制御対象としているデバイスに設定されたアドレス範囲に含まれていたとしても、アクセス制御信号がアクセス許可されていないことを示している場合、第１のデバイスコントローラ１０６に出力するアクセス先アドレスを変換する。これにより、デバイスコントローラは、入力されたアクセス要求が、制御対象としているデバイスへのアクセスではないと判断させることで、アクセス制御を実現する。
【００８１】
本実施形態においては、図２に示すように各デバイスに対して設定されたアドレス範囲は、最上位ビットが“１”である。そこで、第１のアドレス変換装置１０７では、アクセス許可がされていない場合に、最上位ビットが“０”になるようビット演算が行われるものとした。
【００８２】
なお、上述した説明では第１のアドレス変換装置１０５について説明したが、第２のアドレス変換装置１０７も同様の処理を行っている。
【００８３】
そして、本処理手順のステップＳ５０８では、入力されたアクセス制御情報が“０”であるので、ビット計算装置７０１が、アクセス先アドレス“０ｘＡ……”の最上位ビット“１”とアクセス制御情報“０”とから、演算結果として“０”を算出する。これにより、アクセス先アドレスは“０ｘ２……０”となり、第１のデバイス１４０に設定されたアドレス範囲外となる。
【００８４】
この結果、計算済アドレスを受け取った第１のデバイスコントローラ１０６は、当該アクセス要求を、第１のデバイス１４０に対するものではないと判断して動作しない。以上により、第１のデバイス１４０に対するアクセスは行われない。このように、アクセス許可がない場合にアクセスを失敗させることで、アクセス制御が実現できる。
【００８５】
次に、プロセッサ１０１では、第１のゲストＯＳから再びハイパーバイザに制御が戻される（ステップＳ５０９）。次に、ハイパーバイザが第２のゲストＯＳを動作させることと判断したとする。
【００８６】
そこで、ハイパーバイザは、第２のゲストＯＳ用の、プロセッサは第１のデバイスにはアクセス許可、第２のデバイスアクセス不許可というアクセス制御情報の設定要求を、制御情報記憶装置１１０に出力する（ステップＳ５１０）。
【００８７】
つまりこの設定要求は、バスマスタＩＤ＝“０”の列に、デバイスＩＤ＝“０”のアクセス制御情報として“１”を、デバイスＩＤ＝“１”のアクセス制御情報には“０”を設定する要求である。
【００８８】
図８の符号８０１に示すように、バスマスタＩＤ＝“０”の列では、デバイスＩＤ＝“０”のアクセス制御情報には“０”が、デバイスＩＤ＝“１”のアクセス制御情報には“１”が、第１のゲストＯＳ用に設定されている。
【００８９】
そして、変更部１１５が、バスマスタＩＤ＝“０”の列を符号８０２に示すように変更する。なお、ステップＳ５０１及びステップＳ５１０で示したアクセス制御情報の変更処理は、上述したアクセス制御情報出力処理とは異なり、特定のクロックに同期して行うこととする。
【００９０】
そして、図８の符号８０２に示すように、変更部１１５が、バスマスタＩＤ＝“０”の列のデバイスＩＤ＝“０”のアクセス制御情報には“１”に、デバイスＩＤ＝“１”のアクセス制御情報に“０”に変更する。
【００９１】
その後、ハイパーバイザは第２のゲストＯＳをディスパッチし、プロセッサ１０１上で第２のゲストＯＳが動作を開始する（ステップＳ５１１）。
【００９２】
ここで、第２のゲストＯＳが、第１のデバイス１４０に対するアクセス要求をオンチップバス１２０に出力する（ステップＳ５１２、ステップＳ５１３）。
【００９３】
そして、出力情報選択装置１１１の検出部１１３は、アクセス要求を行ったバスマスタを識別するバスマスタＩＤを、オンチップバス１２０から検出する。本処理手順では検出部１１３は、バスマスタＩＤ＝“０”を検出する。
【００９４】
そこで、出力情報選択装置１１１の取得部１１４は、バスマスタＩＤ＝“０”のアクセス制御情報を、制御情報記憶装置１１０から取得する（ステップＳ５１４）。そして、取得部１１４は、取得したアクセス制御情報を制御信号出力装置１１２に出力する（ステップＳ５１５）。
【００９５】
次に、制御信号出力装置１１２は、入力されたアクセス制御情報の各ビットを、第１のアドレス変換装置１０５及び第２のアドレス変換装置１０７にそれぞれ出力する（ステップＳ５１６）。
【００９６】
図９に示すように、検出部１１３が、オンチップバス１２０から、バスマスタＩＤ＝“０”を検出した場合、取得部１１４がバスマスタＩＤ＝“０”に対応するアクセス制御情報 “１、０”を取得して、制御信号出力装置１１２に出力する。そして、制御信号出力装置１１２は、入力されたアクセス制御情報“１、０”のうち“１”を第１のアドレス変換装置１０５に出力し、“０”を第２のアドレス変換装置１０７に出力している。
【００９７】
図５に戻り、第１のアドレス変換装置１０５が、入力されたアクセス制御情報“１”を用いて、アクセス要求に含まれているアクセス先アドレスの最上位ビットのフィルタリングを行う（ステップＳ５１７）。
【００９８】
図７に示すように、第１のアドレス変換装置１０５にアクセス制御情報“１”が入力された場合、ビット計算装置７０１がアクセス先アドレス“０ｘＡ……”の最上位ビット“１”と当該アクセス制御情報“１”とをビット演算する。このビット計算装置７０１はＡＮＤゲートであるから、当該ビット演算の演算結果は“１”となる。この結果、計算済アドレスは、最上位ビットが変更されず、入力されたアクセス先アドレスと同じものになる。
【００９９】
図５に戻り、この結果、第１のデバイスコントローラ１０６は、計算済アドレスを受け取った場合、第１のデバイス１４０へのアクセスだと判断して、第１のデバイス１４０に対してアクセスする（ステップＳ５１８）。つまり、アクセスが許可されたことになる。
【０１００】
次に、プロセッサ１０１の動作とは関係なく動作しているＤＳＰ１０２が、当該ＤＳＰ１０２に組み込まれた専用ソフトウェアによる悪意又は専用ソフトウェアの不具合等により、本来アクセスが許可されていない第１のデバイス１４０に対してアクセス要求をオンチップバス１２０に出したものとする（ステップＳ５１９、ステップＳ５２０）。
【０１０１】
そして、出力情報選択装置１１１の検出部１１３は、オンチップバス１２０に流れるバスマスタＩＤを検出する。本処理手順では検出部１１３は、バスマスタＩＤ＝“１”を検出する。
【０１０２】
そこで、出力情報選択装置１１１の取得部１１４は、バスマスタＩＤ＝“１”に対応するアクセス制御情報を、制御情報記憶装置１１０から取得する（ステップＳ５２１）。そして、取得部１１４は、取得したアクセス制御情報を制御信号出力装置１１２に出力する（ステップＳ５２２）。
【０１０３】
すると、制御信号出力装置１１２、入力されたアクセス制御情報を、第１のアドレス変換装置１０５及び第２のアドレス変換装置１０７にそれぞれ出力する（ステップＳ５２３）。
【０１０４】
図１０に示すように、検出部１１３が、オンチップバス１２０から、バスマスタＩＤ＝“１”を検出した場合、取得部１１４がバスマスタＩＤ＝“１”に対応するアクセス制御情報 “０、１”を取得して、制御信号出力装置１１２に出力する。そして、制御信号出力装置１１２は、入力されたアクセス制御情報“０、１”のうち“０”を第１のアドレス変換装置１０５に出力し、“１”を第２のアドレス変換装置１０７に出力している。
【０１０５】
図５に戻り、第１のアドレス変換装置１０５が、入力されたアクセス制御情報“０”を用いて、アクセス要求に含まれているアクセス先アドレスの最上位ビットのフィルタリングを行う（ステップＳ５２４）。
【０１０６】
図７に示すように、第１アドレス変換装置１０５にアクセス制御情報“０”が入力された場合、ビット計算装置７０１が、アクセス先アドレス“０ｘＡ……”の最上位ビット“１”とアクセス制御情報“０”とから、演算結果として“０”を算出する。そして、第１のアドレス変換装置１０５は、元のアクセス先アドレスとは異なる計算済アドレスを、第１のデバイスコントローラ１０６に対して出力する。これにより、第１のデバイスコントローラ１０６は、当該アクセス要求を、第１のデバイス１４０に対するものではないと判断して動作しない。これにより、アクセス要求は失敗する。
【０１０７】
上述した処理手順により、アクセス制御情報管理装置１０４と、第１のアドレス変換装置１０５および第２のアドレス変換装置１０７とによる処理で、プロセッサ１０１及びＤＳＰ１０２のような各バスマスタについてデバイスに対するアクセスを制御できる。
【０１０８】
また、上述した実施形態にかかるコンピュータシステムで示したプロセッサ、ＤＳＰ、デバイス及びオンチップメモリ等の数は、それぞれ説明を簡潔にするために示した個数の例であり、これら構成についてどのような個数を設置しても良い。
【０１０９】
また、上述した実施形態では、アクセス制御情報を１ビットとした。しかしながら、アクセス制御情報は、１ビットに制限するものではない。また、アクセス先アドレスに対して、フィルタリングの対象とするビットを、最上位１ビットに制限するものではなく、最上位から２ビット使用しても良いし、最上位から２ビット目など、その他のビットを使用しても良い。
【０１１０】
さらに、本実施の形態にかかるコンピュータシステムでは、システムＬＳＩ又はＳｏＣ上に設置された、仮想化支援機能が実装されていないプロセッサ上で、複数のゲストＯＳを動作させる場合でも、ハイパーバイザと、アクセス制御情報管理装置１０４と、第１のアドレス変換装置１０５と、第２のアドレス変換装置１０７との連携により、ゲストＯＳ毎に各デバイスへのアクセス制御が可能となり、セキュリティを向上させることができる。
【０１１１】
また、システムＬＳＩ又はＳｏＣ上に設置されたプロセッサのみならず、ＤＳＰやＤＭＡコントローラなど、システムＬＳＩに混載されたバスマスタとなりうる全ての装置からデバイスへのアクセスを制御でき、セキュリティを向上させることができる。
【０１１２】
また、本実施の形態にかかるコンピュータシステムでは、プロセッサ等に変更を加えることなく、ＳｏＣ１００の内部にアクセス制御情報管理装置１０４と、アドレス変換装置（第１のアドレス変換装置１０５と、第２のアドレス変換装置１０７）という少ない構成を追加するだけで、上述したアクセス制御が可能なので、簡潔で強力なアクセス制御機構が構築できる。
【０１１３】
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【０１１４】
（第１の実施の形態にかかる変形例１）
第1の実施の形態では、制御信号出力装置がそれぞれのアドレス変換装置毎に異なるアクセス制御情報を出力する例について説明した。しかしながら、このような出力手法に制限するものではない。そこで第１の実施の形態の変形例１では、制御信号出力装置とアドレス変換装置とをバス接続した例について説明する。
【０１１５】
図１１に示すように第１の実施の形態の変形例１にかかるコンピュータシステムではＳｏＣ１１００の制御信号出力装置１１１１と第１のアドレス変換装置１１０２と第２のアドレス変換装置１１０３とをバス接続されている。
【０１１６】
図１１に示した本変形例にかかるＳｏＣ１１００は、上述した第１の実施の形態に係るＳｏＣ１００とは、アクセス制御情報管理装置１０４と処理が異なるアクセス制御情報管理装置１１０１を備え、第１のアドレス変換装置１０５と処理が異なる第１のアドレス変換装置１１０２を備え、第２のアドレス変換装置１０７と処理が異なる第２のアドレス変換装置１１０３を備えた点のみ異なる。なお、本実施の形態のＳｏＣ１１００の構成で、第１の実施の形態のＳｏＣ１００と共通な構成については説明を省略する。
【０１１７】
アクセス制御情報管理装置１１０１は、制御信号出力装置１１２と処理が異なる制御信号出力装置１１１１を備えた点のみ異なる。図１２に示すように、まずは第１の実施の形態と同様に、検出部１１３が、オンチップバス１２０から、バスマスタＩＤ＝“１”を検出した場合、取得部１１４がバスマスタＩＤ＝“１”に対応するアクセス制御情報“０、１”を取得して、制御信号出力装置１１１１に出力する。そして、本変形例の特徴としては制御信号出力装置１１１１が、入力されたアクセス制御情報“０、１”を、第１のアドレス変換装置１１０２と第２のアドレス変換装置１１０３とが接続されたバスに出力する。
【０１１８】
図１１に戻り、第１のアドレス変換装置１１０２は、第１の実施の形態の第１のアドレス変換装置１０５と同様の機能の他、さらに選択部１１２１を備えている。
【０１１９】
選択部１１２１は、バスを流れるアクセス制御情報から第１のアドレス変換装置１１０２に適したアクセス制御情報のみを選択する。例えば、図１２に示す処理結果としてバスに流れたアクセス制御情報“０、１”を第１のアドレス変換装置１１０２が受信した場合、選択部１１２１は、当該アクセス制御情報“０、１”から、第１のアドレス変換装置１１０２のアクセス制御情報に該当する“０”を選択する。そして、第１のアドレス変換装置１１０２は、選択された“０”を用いて第１の実施の形態の第１のアドレス変換装置１０５と同様のフィルタリング処理を行うこととする。
【０１２０】
第２のアドレス変換装置１１０３は、第１の実施の形態の第２のアドレス変換装置１０７と同様の機能の他、さらに選択部１１２２を備えている。
【０１２１】
選択部１１２２は、バスを流れるアクセス制御情報から第２のアドレス変換装置１１０３に適したアクセス制御情報のみを選択する。例えば、図１２に示す処理結果としてバスに流れたアクセス制御情報“０、１”を第２のアドレス変換装置１１０３が受信した場合、選択部１１２２は、当該アクセス制御情報“０、１”から、第１のアドレス変換装置１１０２のアクセス制御情報に該当する“１”を選択する。そして、第１のアドレス変換装置１１０２は、選択された“１”を用いて第１の実施の形態の第１のアドレス変換装置１０５と同様のフィルタリング処理を行うこととする。
【０１２２】
また、上述した第１の実施形態及び第２の実施形態は、制御信号出力装置からのアクセス制御情報の出力手法の例を示したものであり、上述した例以外にも、制御信号出力装置とアドレス変換装置との接続手法にあわせて適切な手法でアクセス制御情報を出力してもよい。
【０１２３】
（第１の実施の形態にかかる変形例２）
第1の実施の形態では、アドレス変換装置ではビット計算装置としてＡＮＤゲートを用いた。しかしながら、ビット計算装置をＡＮＤゲートに制限するものではない。そこで第１の実施の形態の変形例２では、アドレス変換装置が備えるビット計算装置にＮＯＲゲートを用いた例について説明する。
【０１２４】
図１３に示すように、物理アドレス空間のうち、第１のデバイス１４０にアクセスするためのアドレス範囲として０ｘ０３００００００〜０ｘ０３００００ＦＦの２５６バイトの空間が、第２のデバイス１５０にアクセスするためのアドレス範囲として０ｘ０６００００００〜０ｘ０６００００ＦＦの２５６バイトの空間が設定されている。つまり、第１のデバイス１４０及び第２のデバイス１５０にアクセスするためのアドレス範囲は最上位ビットが“０”となる領域に設定されている。
【０１２５】
図１４に示すように、第１のアドレス変換装置１４０１はビット計算装置１４０２を備えている。そして、本変形例にかかるビット計算装置１４０２は、ＮＯＲゲートとする。なお、他の構成については第１の実施の形態と同様として説明を省略する。
【０１２６】
そして、本変形例では、制御情報記憶装置１１０が保持するアクセス制御情報は、第１の実施の形態と同様に、“０”がアクセス許可されていないことを示し、“１”がアクセス許可されていることを示している。
【０１２７】
そして、本変形例にかかるビット計算装置１４０２は、２つの入力が共に“０”の場合に限り、“１”を出力する。つまり、第１のアドレス変換装置１４０１は、アクセス先アドレスの最上位ビット“０”と、アクセス制御情報“０”との場合に、計算済アドレスの最上位ビットとして“１”を出力するので、第１のデバイス１４０にアクセスすることができなくなる。また、第１のアドレス変換装置１４０１は、アクセス先アドレスの最上位ビット“０”と、アクセス制御情報“１”との場合に、計算済アドレスの最上位ビットとして“０”を出力するので、第１のデバイス１４０に対するアクセスが許可される。
【０１２８】
（第１の実施の形態にかかる変形例３）
また、ビット計算装置は、上述したＡＮＤゲート又はＮＯＲゲート以外を用いても良い。そこで第１の実施の形態の変形例３では、アドレス変換装置が備えるビット計算装置に、これら以外のゲートを用いた例について説明する。
【０１２９】
図１５に示すように、第１のアドレス変換装置１５０１はビット計算装置１５０２を備えている。
【０１３０】
また、本変形例では、制御情報記憶装置１１０が保持するアクセス制御情報は、第１の実施の形態と異なり、“０”がアクセス許可されていることを示し、“１”がアクセス許可されていないことを示している。また、コンピュータシステムの物理アドレス空間は、第１の実施の形態と同様の範囲が、第１のデバイス１４０及び第２のデバイス１５０に割り当てられているものとする。
【０１３１】
そして、第１のアドレス変換装置１５０１は、アクセス先アドレスの最上位ビット“１”と、アクセス制御情報“０”との場合に、計算済アドレスの最上位ビットとして“１”を出力するので、第１のデバイス１４０にアクセス可能となる。また、第１のアドレス変換装置１５０１は、アクセス先アドレスの最上位ビット“１”と、アクセス制御情報“１”との場合に、計算済アドレスの最上位ビットとして“０”を出力するので、第１のデバイス１４０に対してアクセスすることができない。
【０１３２】
上述した変形例２及び変形例３に示したように、アクセス制御情報の設定、及びデバイス毎に割り当てられたアドレス範囲に応じて、任意のビット計算装置を用いることができる。
【０１３３】
（第２の実施の形態）
第１の実施の形態では、アクセス制御情報管理装置をＳｏＣ内に一個設置して、コンピュータシステムが備える全デバイスのアクセス制御情報を一括して管理する例について説明した。しかしながら、このようにアクセス制御情報管理装置を一個のみ設置することに制限するものではない。そこで第２の実施の形態ではアクセス制御情報管理装置を、コンピュータシステムが備えるデバイス毎に設置した例について説明する。
【０１３４】
図１６に示すように、第２の実施の形態にかかるコンピュータシステムは、上述した第１の実施の形態に係るコンピュータシステムとは、アクセス制御情報を一括管理していたアクセス制御情報管理装置１０４が削除され、デバイス毎にアクセス制御情報を管理する第１のアクセス制御情報管理装置１６０１及び第２のアクセス制御情報管理装置１６０２が追加された点のみ異なる。なお、本実施の形態のコンピュータシステムの構成で、第１の実施の形態のコンピュータシステムと共通な構成については説明を省略する。
【０１３５】
第１のアクセス制御情報管理装置１６０１は、制御情報記憶装置１６１１と、出力情報選択装置１６１２と、変更部１６１５とを備え、各バスマスタ（プロセッサ１０１、ＤＳＰ１０２）が第１のデバイス１４０にアクセス可能であるか否かを示すアクセス制御情報を管理し、アクセス要求に応じてアクセス制御情報を出力する。
【０１３６】
制御情報記憶装置１６１１は、アクセス要求を出すバスマスタ毎に、第１のデバイス１４０に対するアクセス制御の設定を記憶している。
【０１３７】
図１７に示すように、制御情報記憶装置１６１１は、バスマスタＩＤ毎に、第１のデバイス１４０に対するアクセス制御情報を保持している。そして、このアクセス制御情報が“１”であればアクセス可能であり、“０”であればアクセス不可能であることを示している。
【０１３８】
つまり、第１の実施の形態の制御情報記憶装置１１０は、デバイス数×バスマスタ数の配列だったのに対し、本実施の形態にかかる制御情報記憶装置１６１１は、単一デバイスに対するアクセス制御情報のみを保持すればよい。このため、制御情報記憶装置１６１１は、バスマスタ数のビットが保持できるレジスタで構成が可能になる。次に、アクセス制御情報の変更処理について説明する。
【０１３９】
まず、図１８の符号１８０１に示すように、バスマスタＩＤ＝“０”に対応するアクセス制御情報には“０”が、バスマスタＩＤ＝“１”に対応するアクセス制御情報には“１”が、予め設定されているとする。
【０１４０】
図１８に示すように、変更部１６１５は、プロセッサ１０１上で動作するハイパーバイザから各バスマスタ用にアクセス制御情報の受け付け、制御情報記憶装置１６１１が保持しているアクセス制御情報の変更を行う。図１８の符号１８０２に示すように、当該変更によりバスマスタＩＤ＝“０”に対応するアクセス制御情報には“１”が、バスマスタＩＤ＝“１”に対応するアクセス制御情報には“０”が設定される。このように、ハイパーバイザからの指示により各デバイスのアクセス制御を制限することができる。
【０１４１】
図１６に戻り、出力情報選択装置１６１２は、検出部１１３と、取得部１６１４とを備え、オンチップバス１２０上に流れるバスマスタＩＤの変化に応じて、制御情報記憶装置１６１１から当該バスマスタＩＤに適したアクセス制御情報を選択し、第１のアドレス変換装置１０５に出力する。
【０１４２】
取得部１６１４は、検出部１１３がアクセス要求を検出した場合に、検出したバスマスタＩＤに対応するアクセス制御情報を、制御情報記憶装置１６１１のレジスタから取得する。そして、取得部１６１４は、取得したアクセス制御情報を、第１のアドレス変換装置１０５に出力する。
【０１４３】
図１９に示すように、検出部１１３が、オンチップバス１２０から、バスマスタＩＤ＝“１”を検出した場合、取得部１６１４がバスマスタＩＤ＝“１”に対応するアクセス制御情報“１”を取得して、第１のアドレス変換装置１０５に出力する。これにより、第１のアドレス変換装置１０５は、入力されたアクセス制御情報を用いてアクセス先アドレスのフィルタリングを行うことができる。
【０１４４】
第２のアクセス制御情報管理装置１６０２は、制御情報記憶装置１６２１と、出力情報選択装置１６２２とを備え、各バスマスタ（プロセッサ１０１、ＤＳＰ１０２）が第２のデバイス１５０にアクセス可能であるか否かを示すアクセス制御情報を管理し、アクセス要求に応じてアクセス制御情報を出力する。
【０１４５】
制御情報記憶装置１６２１は、アクセス要求を出すバスマスタ毎に、第２のデバイス１５０に対するアクセス制御情報を記憶している。また、制御情報記憶装置１６２１は、アクセス制御情報をレジスタ内で保持している。また、制御情報記憶装置１６２１は、上述した制御情報記憶装置１６１１とは、制御対象となるデバイスが異なるのみであり、説明を省略する。
【０１４６】
出力情報選択装置１６２２は、検出部１２３と、取得部１６２４とを備え、オンチップバス１２０上に流れるバスマスタＩＤが変化に応じて、制御情報記憶装置１６２１から当該バスマスタＩＤに適したアクセス制御情報を選択し、第２のアドレス変換装置１０７に出力する。また、出力情報選択装置１６２２は、上述した出力情報選択装置１６１２とは、制御対象となるデバイスが異なるのみであり、説明を省略する。
【０１４７】
また、本実施の形態にかかるアクセス制御情報管理装置（第１のアクセス制御情報管理装置１６０１及び第２のアクセス制御情報管理装置１６０２）では、出力情報選択装置がアクセス制御情報を選択した時点で、アクセス制御情報が１ビットとなっている。このため、第１実施の形態のように制御信号出力装置１１２を備えている必要はない。
【０１４８】
第２の実施の形態にかかるコンピュータシステムでは、上述した構成を備えることで、各制御情報記憶装置と、アドレス変換装置との距離を短くすることできる。このため、アクセス制御するための信号を、アドレス変換装置が迅速に受信できる。これにより、デバイスを迅速に制御する必要があるコンピュータシステムにおいて有用である。
【０１４９】
（第２の実施の形態にかかる変形例１）
第２の実施の形態では、コンピュータシステムにおいてデバイス毎にアクセス制御情報管理装置を設置する例について説明した。しかしながら、全てのデバイス毎にアクセス制御情報管理装置を設置するのではなく、複数のデバイスを一括管理するアクセス制御情報管理装置と１つのデバイスを管理するアクセス制御情報管理装置とを混載させても良い。そこで、第２の実施の形態の変形例１では、複数のデバイスを一括管理するアクセス制御情報管理装置と１つのデバイスを管理するアクセス制御情報管理装置とを混載させた例について説明する。
【０１５０】
図２０に示すように第２の実施の形態の変形例１にかかるコンピュータシステムではＳｏＣ２０００が、第１のデバイス１４０と第２のデバイス１５０とのアクセス制御情報を一括管理するアクセス制御情報管理装置１０４と、第３のデバイス２０５０のアクセス制御情報を管理する第３デバイス用アクセス制御情報管理装置２００１とを備えている。
【０１５１】
アクセス制御情報管理装置１０４と、第１のアドレス変換装置１０５と、第１のデバイスコントローラ１０６と、第２のアドレス変換装置１０７と、第２のデバイスコントローラ１０８とは、第１のデバイス１４０と、第２のデバイス１５０とのアクセス制御するために第１の実施の形態と同様の処理を行うこととして、説明を省略する。
【０１５２】
また、第３デバイス用アクセス制御情報管理装置２００１と、第３のアドレス変換装置２００２と、第３のデバイスコントローラ２００３とは、第３のデバイス２０５０のアクセス制御をするために第２の実施の形態と同様の処理を行う。
【０１５３】
つまり、第３デバイス用アクセス制御情報管理装置２００１が備える制御情報記憶装置２０１０と、出力情報選択装置２０１１とは、第２の実施の形態の制御情報記憶装置１６１１と出力情報選択装置１６１２と同様の構成を備えているものとする。なお、当該構成で行われる処理については、第２の実施形態と同様なので説明を省略する。
【０１５４】
本変形例で示したように、この実施例にかかるコンピュータシステムでは、第１のデバイス１４０及び第２のデバイス１５０に対しては第１の実施の形態のように集中管理型のアクセス制御情報管理装置１０４を用い、第３のデバイス２０５０に対しては第２の実施の形態のように分散型の第３デバイス用アクセス制御情報管理装置２００１を用いている。
【０１５５】
また、本変形例にかかるコンピュータシステムでは、ハイパーバイザによるアクセス制御情報の設定の際、第１のデバイス１４０、第２のデバイス１５０に対するアクセス制御情報はアクセス制御情報管理装置１０４に、第３のデバイス２０５０に対するアクセス制御情報は第３デバイス用アクセス制御情報管理装置２００１に行われるように、例えばコンピュータシステムの物理アドレス空間におけるアドレス範囲の設定等を行う必要がある。
【０１５６】
本変形例で示したコンピュータシステムの構成は、例えば、第３のデバイス２０５０に対してはアクセス制御用の制御信号が伝播する距離をできるだけ短くしたい場合などに有用である。
【０１５７】
（第２の実施の形態にかかる変形例２）
上述した第１〜第２の実施の形態にかかるコンピュータシステムでは、アクセス制御情報管理装置とアドレス変換装置とを別構成とした。しかしながら、上述した実施の形態は、このような構成に制限するものではなく、例えばアクセス制御情報管理装置にアドレス変換装置を含めてもよい。そこで本変形例では、アドレス変換装置を含めたアクセス制御情報管理装置を設置した例について説明する。
【０１５８】
図２１に示すように、本変形例にかかるコンピュータシステムは、第１のアドレス変換装置１０５が第１のアクセス制御情報管理装置２１０３に含まれ、第２のアドレス変換装置１０７が第２のアクセス制御情報管理装置２１０４に含まれた点のみ異なる。なお、本実施の形態のコンピュータシステムの構成で、第２の実施の形態のコンピュータシステムと共通な構成については説明を省略する。
【０１５９】
また、このような構成を備えるコンピュータシステムでは、アクセス制御の方式は第２の実施の形態と同様なので説明を省略する。
【０１６０】
本変形例にかかるコンピュータシステムでは、アクセス制御用の制御信号が伝播する距離をさらに短くすることができる。さらに、当該アクセス制御情報管理装置の内部構造の隠蔽度が上昇する。また、アクセスを制限する処理がアクセス制御情報管理装置のみで行えることになる。これにより、実際にシステムＬＳＩを構築する際にこのモジュールのみを付加すれば、アクセス制御を実現できるので、より簡潔で強力なアクセス制御機構が構築できる。
【０１６１】
（変形例）
また、上述した各実施の形態及び各実施の形態の変形例に限定されるものではなく、以下に例示するような種々の変形が可能である。
【０１６２】
（変形例１）
上述した実施の形態及び変形例にかかるコンピュータシステムでは、アクセス制御情報管理装置が、２個のバスマスタと、１〜２のデバイスとの間でアクセス制御を行う例について説明した。しかしながら、アクセス制御情報管理装置が制御可能なバスマスタの数及びデバイスの数を制限するものではない。そこで本変形例ではＮ個のバスマスタとＭ個のデバイスとの間でアクセス制御を行うアクセス制御情報管理装置の例について説明する。
【０１６３】
図２２に示すようにアクセス制御情報管理装置２２００は、制御情報記憶装置２２０１と、出力情報選択装置２２０２と、制御信号出力装置２２０３と、変更部２２０４と、を備えている。図２２に示したアクセス制御情報管理装置２２００は、Ｎ個のバスマスタと、Ｍ個のデバイスとの間のアクセス制御情報を管理している。
【０１６４】
つまり、制御情報記憶装置２２０１は、バスマスタＮ列とデバイスＭ行からなる配列構造で、アクセス制御情報を管理している。そして、検出部２２１０はオンチップバス２２２０を流れる“０”〜“Ｎ−１”までのバスマスタＩＤの検出を行う。そして、取得部２２１１は、検出したバスマスタＩＤに対応するアクセス制御情報の列を取得して、制御信号出力装置２２０３に出力する。
【０１６５】
そして、制御信号出力装置２２０３は、入力されたアクセス制御情報の列の各ビットを、第１〜第Ｍのアドレス変換装置のそれぞれに出力する。本変形例に示すように、制御情報記憶装置がＮ列（バスマスタ数）×Ｍ行（デバイス数）の配列構造を備えることで、上述した数のバスマスタ及びデバイス間のアクセス制御を行うことができる。
【０１６６】
また本変形例にかかるコンピュータシステムにおいて、変更部２２０４は、例えばハイパーバイザからバスマスタＩＤ＝３である装置用のアクセス制御情報の設定要求と共にアクセス制御情報の設定を受け取ると、制御情報記憶装置２２０１が保持する配列のうち、バスマスタＩＤ＝３に相当する列を、受け取った設定で変更する。
【０１６７】
本変形例に示すようにコンピュータシステムに設置可能なバスマスタの数、及び接続可能なデバイス数は制限されるものではなく、任意の数を設置又は接続することができる。また、ハイパーバイザからの設定要求により、各バスマスタが任意のデバイスにアクセス可能であるか否かを変更することができる。
【図面の簡単な説明】
【０１６８】
【図１】第１の実施の形態にかかるコンピュータシステムの構成を示すブロック図である。
【図２】第１の実施の形態にかかるコンピュータシステムの物理アドレス空間の設定の例を示した模式図である。
【図３】第１の実施の形態にかかるコンピュータシステムのプロセッサ上で動作するソフトウェア構成を示した図である。
【図４】第１の実施の形態にかかるコンピュータシステムの制御情報記憶装置の配列構造の例を示した図である。
【図５】第１の実施の形態にかかるコンピュータシステムのバスマスタから第１のデバイスに対するアクセス制御の例の処理手順を示すフローチャートである。
【図６】第１の実施の形態にかかるコンピュータシステムのアクセス制御情報管理装置内で行われる処理を示した模式図である。
【図７】第１の実施の形態にかかるコンピュータシステムの第１のアドレス変換装置で行われる処理を示した模式図である。
【図８】第１の実施の形態にかかるコンピュータシステムの制御情報記憶装置に対するアクセス制御情報の設定を示した説明図である。
【図９】第１の実施の形態にかかるコンピュータシステムのアクセス制御情報管理装置内で行われる処理を示した模式図である。
【図１０】第１の実施の形態にかかるコンピュータシステムのアクセス制御情報管理装置内で行われる処理を示した模式図である。
【図１１】第１の実施の形態の変形例１にかかるコンピュータシステムの構成を示すブロック図である。
【図１２】第１の実施の形態の変形例１にかかるコンピュータシステムのアクセス制御情報管理装置内で行われる処理を示した模式図である。
【図１３】第１の実施の形態の変形例２にかかるコンピュータシステムの物理アドレス空間の設定の例を示した模式図である。
【図１４】第１の実施の形態にかかる変形例２にかかるコンピュータシステムの第１のアドレス変換装置で行われる処理を示した模式図である。
【図１５】第１の実施の形態にかかる変形例３にかかるコンピュータシステムの第１のアドレス変換装置で行われる処理を示した模式図である。
【図１６】第２の実施の形態に係るコンピュータシステムの構成を示すブロック図である。
【図１７】第２の実施の形態にかかるコンピュータシステムの制御情報記憶装置の配列構造の例を示した図である。
【図１８】第２の実施の形態にかかるコンピュータシステムの制御情報記憶装置に対するアクセス制御情報の設定を示した説明図である。
【図１９】第２の実施の形態にかかるコンピュータシステムの第１のアクセス制御情報管理装置内で行われる処理を示した模式図である。
【図２０】第２の実施の形態の変形例１にかかるコンピュータシステムの構成を示すブロック図である。
【図２１】第２の実施の形態の変形例２に係るコンピュータシステムの構成を示すブロック図である。
【図２２】変形例１にかかるアクセス制御情報管理装置のブロック構成を示した図である。
【符号の説明】
【０１６９】
１００、１６００  ＳｏＣ
１０１  プロセッサ
１０２  ＤＳＰ
１０３  オンチップメモリ
１０４、１１０１、２２００  アクセス制御情報管理装置
１０５、１１０２、１４０１、１５０１  第１のアドレス変換装置
１０６  第１のデバイスコントローラ
１０７、１１０３  第２のアドレス変換装置
１０８  第２のデバイスコントローラ
１１０、１６１１、１６２１、２２０１  制御情報記憶装置
１１１、１６１２、１６２２  出力情報選択装置
１１２、１１１１、２２０３  制御信号出力装置
１１３、２２１０  検出部
１１４、１６１４，１６２４、２２１１  取得部
１１５  変更部
１２０、２２２０  オンチップバス
１４０  第１のデバイス
１５０  第２のデバイス
７０１  ビット計算装置
１１２１、１１２２  選択部
１４０２、１５０２  ビット計算装置
１６０１  第１のアクセス制御情報管理装置
１６０２  第２のアクセス制御情報管理装置
２００１  第３デバイス用アクセス制御情報管理装置
２００２  第３のアドレス変換装置
２００３  第３のデバイスコントローラ
２０１０  制御情報記憶装置
２０１１、２２０２  出力情報選択装置
２０５０  第３のデバイス
２１０３  第１のアクセス制御情報管理装置
２１０４  第２のアクセス制御情報管理装置
【図１】
2008250386.tif 000003
【図２】
2008250386.tif 000004
【図３】
2008250386.tif 000005
【図４】
2008250386.tif 000006
【図５】
2008250386.tif 000007
【図６】
2008250386.tif 000008
【図７】
2008250386.tif 000009
【図８】
2008250386.tif 000010
【図９】
2008250386.tif 000011
【図１０】
2008250386.tif 000012
【図１１】
2008250386.tif 000013
【図１２】
2008250386.tif 000014
【図１３】
2008250386.tif 000015
【図１４】
2008250386.tif 000016
【図１５】
2008250386.tif 000017
【図１６】
2008250386.tif 000018
【図１７】
2008250386.tif 000019
【図１８】
2008250386.tif 000020
【図１９】
2008250386.tif 000021
【図２０】
2008250386.tif 000022
【図２１】
2008250386.tif 000023
【図２２】
2008250386.tif 000024