(57)【要約】【課題】複数のマスタが１つのペリフェラル回路にアクセス可能なプロセッサシステムにて、ＣＰＵの負荷を低減する。【解決手段】ＣＰＵが接続されたメインバスと、マスタからの制御命令に従って処理を実行するペリフェラル回路との間に、仮想化ペリフェラルコントローラを設け、仮想化ペリフェラルコントローラが、制御命令に係る調停処理を行い、その結果に応じて制御命令を周辺回路に発行するか又は命令バッファに保持するかを制御するようにして、ソフトウェア制御によるペリフェラル回路の制御を仮想化ペリフェラルコントローラによって代行し、ＣＰＵの負荷を低減する。【選択図】図１
2011138401.tif 000002
【特許請求の範囲】
【請求項１】
第１のバスに接続されたＣＰＵと、
前記ＣＰＵを含む複数のマスタから発行された制御命令に従って処理を実行する周辺回路と、
前記第１のバスと前記周辺回路との間に設けられ、前記第１のバス及び前記周辺回路に異なるインターフェースで接続された制御回路とを備え、
前記制御回路は、
前記マスタから発行された制御命令を保持するための命令バッファと、
前記制御命令に係る調停処理を行い、処理結果に応じて前記制御命令を前記周辺回路に発行するか又は前記命令バッファに保持するかを制御する制御部とを有することを特徴とするプロセッサシステム。
【請求項２】
前記制御回路は、
前記周辺回路に制御命令を発行してからの経過時間を計測するタイマ部と、
タイムアウト時間を設定するレジスタとを有し、
前記タイマ部により計測された制御命令発行からの経過時間が、前記レジスタに設定された前記タイムアウト時間を越えた場合に、前記周辺回路のタイムアウトを検出することを特徴とする請求項１記載のプロセッサシステム。
【請求項３】
前記制御回路は、
前記周辺回路の内部レジスタに対応するミラーレジスタと、
前記制御命令の優先度を設定するレジスタとを有し、
前記周辺回路が制御命令に従って処理を実行しているときに新たに発行された制御命令を受けた場合には、実行している処理の制御命令の優先度と新たに発行された制御命令の優先度とを比較し、新たに発行された制御命令の優先度が実行している処理の制御命令の優先度より高ければ、前記周辺回路の内部レジスタが保持している情報を前記ミラーレジスタに退避し、新たに発行された制御命令を前記周辺回路に発行することを特徴とする請求項１又は２記載のプロセッサシステム。
【請求項４】
複数の前記周辺回路と複数の前記制御回路とが搭載されているとともに、前記第１のバスに接続された第１のメモリと、前記第１のバスとは異なる第２のバスを介して複数の前記制御回路と接続された第２のメモリとをさらに備え、
複数の前記周辺回路による逐次処理を実行させる制御命令が前記マスタから発行されると、前記逐次処理における各処理を行う前記周辺回路のうち、前記逐次処理における最後の処理を行う前記周辺回路を除く各周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を次の処理を行う前記周辺回路に提供するために前記第２のバスを介して前記第２のメモリに格納し、前記逐次処理における最後の処理を行う前記周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を前記第１のバスを介して前記第１のメモリに格納することを特徴とする請求項１〜３の何れか１項に記載のプロセッサシステム。
【請求項５】
第１のバスに接続されたＣＰＵと、
前記第１のバスに接続された第１のメモリと、
前記ＣＰＵを含む複数のマスタから発行された制御命令に従って処理を実行する複数の周辺回路と、
前記第１のバスと前記周辺回路との間に設けられ、前記第１のバス及び前記周辺回路に異なるインターフェースで接続された複数の制御回路と、
前記第１のバスとは異なる第２のバスを介して複数の前記制御回路と接続された第２のメモリとを備えることを特徴とするプロセッサシステム。
【請求項６】
第１のバスに接続されたＣＰＵと、前記ＣＰＵを含む複数のマスタから発行された制御命令に従って処理を実行する周辺回路と、前記第１のバス及び前記周辺回路に異なるインターフェースで接続された制御回路とを備えるプロセッサシステムの制御方法であって、
前記制御回路が、前記マスタから発行された制御命令に係る調停処理を行い、処理結果に応じて前記制御命令を前記周辺回路に発行するか又は前記制御命令を保持するための命令バッファに保持するかを制御することを特徴とするプロセッサシステムの制御方法。
【請求項７】
ＣＰＵが接続された第１のバス及び制御命令に従って処理を実行する周辺回路に異なるインターフェースで接続された制御回路であって、
前記ＣＰＵを含む複数のマスタから発行された前記制御命令を保持するための命令バッファと、
前記制御命令に係る調停処理を行い、処理結果に応じて前記制御命令を前記周辺回路に発行するか又は前記命令バッファに保持するかを制御する制御部とを備えることを特徴とする制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマスタがアクセス可能なペリフェラル回路を有するプロセッサシステム、プロセッサシステムの制御方法、及び制御回路に関する。
【背景技術】
【０００２】
図８にプロセッサシステムの一例を示す。図８において、１１０はＣＰＵ（Central Processing Unit：中央処理装置）であり、１２０はメインメモリであり、１３０、１４０はペリフェラル回路（周辺回路）である。ＣＰＵ１１０は、ソフトウェア１５０に応じた処理を実行する。ソフトウェア１５０には、オペレーティングシステム（ＯＳ：Operating System）１５１、及びＯＳ上で動作するアプリケーションソフト１５２やドライバ１５３等を含む。また、ソフトウェア１５０は、リソースに対する要求等が競合する場合にその調停を行うソフト調停機能１５４を有する。ソフト調停機能１５４は、例えばバーチャルマシン（ＶＭ：Virtual Machine）により実現される。ペリフェラル回路１３０、１４０は、ＣＰＵ１１０が汎用的な処理を行うのに対して、新たに機能を加えるために実装された周辺回路である。ペリフェラル回路１３０、１４０は、例えばアクセラレータである。
【０００３】
図８に示すプロセッサシステムでは、ＯＳ１５１、アプリケーションソフト１５２、ドライバ１５３、ＣＰＵ１１０等がマスタとなり、これら複数のマスタが１つのペリフェラル回路に対してアクセス可能である。このようなシステムにおいては、ペリフェラル回路１３０、１４０を制御するドライバのリソース管理（排他処理、調停処理、例外処理等）に複雑な機構が必要となってくる。その対応として、システムの規模が小さい場合にはハードウェアによる制御回路（例えばアービタ）が有効であったが、システムの規模が大きくなるにつれて制御が複雑になるために、近年ではソフトウェアによる制御が行われている。ソフトウェアによる制御としては、例えばＳＭＰ／ＡＭＰ（Symmetric Multiprocessing/Asymmetric Multiprocessing）やバーチャルマシンなどがある。しかし、制御が更に複雑になるとソフトウェア処理に係るＣＰＵの負荷が増大してしまう。
【０００４】
このようなＣＰＵの負荷を軽減する方法として、ソフトウェアで実現しているドライバのハードウェア化が考えられる。例えば、プロセッサが複数接続されたサーバシステムにおいて、ハードウェア化したドライバを用いて、複数のプロセッサが１つのＩ／Ｏスロットを利用できるようにする調停技術が提案されている（例えば、特許文献１参照。）。また、複数のＯＳを並行動作させてフォアグラウンドとバックグラウンドとで切り替えて利用するコンピュータシステムにおいて、切り替えの際にＯＳに対するペリフェラルの割り当てを制御する技術が提案されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１２２６４０号公報
【特許文献２】特開２００８−５２７１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述の特許文献１、２等に記載のような機能を、制御対象の装置に内蔵される組み込みシステムに実装する場合、バスやペリフェラル回路等の各ＩＰ（Intellectual Property）のＲＴＬ（Register Transfer Level）での変更等を行わなければならない。そのため、組み込みシステムにおいて、前述の特許文献１、２等に記載のような手法でＣＰＵの負荷を軽減しようとすると開発コストが増大してしまうという問題があった。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、第１のバスに接続されたＣＰＵと、マスタからの制御命令に従って処理を実行する周辺回路と、第１のバスと周辺回路との間に設けられ、第１のバス及び周辺回路に異なるインターフェースで接続された制御回路とがチップ上に搭載されたプロセッサシステムが提供される。制御回路は、制御命令を保持するための命令バッファと、制御命令に係る調停処理を行い、その結果に応じて制御命令を周辺回路に発行するか又は命令バッファに保持するかを制御する制御部とを有する。
【発明の効果】
【０００８】
開示のプロセッサシステムは、ソフトウェアで実現していた調停機能をハードウェアである制御回路により実現することで、ソフトウェア制御による周辺回路の制御を制御回路によって代行することができ、ＣＰＵの負荷を低減する効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態におけるプロセッサシステムの構成例を示す図である。
【図２】第１の実施形態におけるプロセッサシステムの基本動作の一例を示すフローチャートである。
【図３】第１の実施形態におけるプロセッサシステムのタイムアウト検出動作を示すフローチャートである。
【図４】第１の実施形態におけるプロセッサシステムの優先順位制御動作を示すフローチャートである。
【図５】プロセッサシステムでの複数のペリフェラル回路による協調動作の流れを説明するための図である。
【図６】第２の実施形態におけるプロセッサシステムの構成例を示す図である。
【図７】第２の実施形態におけるプロセッサシステムでの複数のペリフェラル回路による協調動作の流れを説明するための図である。
【図８】プロセッサシステムの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態を図面に基づいて説明する。
（第１の実施形態）
本発明の第１の実施形態について説明する。
【００１１】
図１は、第１の実施形態におけるプロセッサシステムの構成例を示すブロック図である。第１の実施形態におけるプロセッサシステムは、例えば制御対象の装置に内蔵される組み込みシステムとして実装される。第１の実施形態におけるプロセッサシステムは、ＣＰＵ（Central Processing Unit：中央処理装置）１０、メインメモリ２０、ペリフェラル回路（周辺回路）３０、５０、及び仮想化ペリフェラルコントローラ４０、６０を有する。ＣＰＵ１０、メインメモリ２０、及び仮想化ペリフェラルコントローラ４０、６０は、メインバスＭＢＵＳを介して互いに通信可能に接続されている。第１の実施形態におけるプロセッサシステムは、例えばＣＰＵ１０、メインメモリ２０、ペリフェラル回路３０、５０、及び仮想化ペリフェラルコントローラ４０、６０が１つのチップ上又は複数のチップに搭載されているものである。
【００１２】
ＣＰＵ１０は、ソフトウェア７０に応じた処理を実行する。図１においては、ＣＰＵ１０が、２つのＣＰＵ（０）１１及びＣＰＵ（１）１２からなる例を示しているが、これに限定されるものではなく、ＣＰＵ１０は１つ若しくは複数のＣＰＵからなる。ソフトウェア７０には、オペレーティングシステム（ＯＳ：Operating System）７１、アプリケーションソフト７２、及びドライバ７３等を含む。例えば、アプリケーションソフト７２が、ＯＳ７１上で動作することで具体的な処理が実行される。また、例えばドライバ７３は、ＯＳ７１上で動作してペリフェラル回路３０、５０の動作等を制御するために用いられる。
【００１３】
メインメモリ２０は、プログラムやデータが記憶されるメモリである。メインメモリ２０は、例えばソフトウェア７０に応じた処理を実行する際に用いられるデータや処理結果として得られたデータを記憶する。
【００１４】
ペリフェラル回路３０、５０は、ＣＰＵ１０が汎用的な処理を行うのに対して新たに機能を加えたり、処理能力を向上させたりするために実装された周辺回路（例えばアクセラレータ）である。ペリフェラル回路３０、５０は、供給される制御命令に応じて所定の処理を行う。ペリフェラル回路３０、５０の各々は、設定情報や処理に係る情報を保持するための実レジスタ（内部レジスタ）３１、５１を有する。
【００１５】
仮想化ペリフェラルコントローラ４０、６０は、対応するペリフェラル回路３０、５０とメインバスＭＢＵＳとの間に設けられ、対応するペリフェラル回路３０、５０とメインバスＭＢＵＳとのそれぞれに異なるインターフェースで接続されている。仮想化ペリフェラルコントローラ４０、６０は、対応するペリフェラル回路３０、５０の動作制御に係る処理を行う。仮想化ペリフェラルコントローラ４０、６０は、例えばペリフェラル回路３０、５０に対して発行された制御命令を受信するとともにその調停処理を行い、調停処理の結果に応じて制御命令をペリフェラル回路３０、５０に発行する。なお、メインバスＭＢＵＳは同一のバスに接続されている必要はなく、通信可能であれば階層状になっているバスなどでも可能である。
【００１６】
仮想化ペリフェラルコントローラ４０は、制御部４１、命令バッファ４２、タイマ４３、ミラーレジスタ４４、及び制御レジスタ４５を有する。制御部４１は、仮想化ペリフェラルコントローラ４０内の各機能部を制御する。制御部４１は、命令バッファ４２に保持されている制御命令を含むマスタからの制御命令に係る調停処理を行うアービタ部を有し、その調停結果に応じてペリフェラル回路３０に制御命令を発行する。命令バッファ４２は、マスタからペリフェラル回路３０に対して発行された制御命令を蓄積する。
【００１７】
タイマ４３は、ペリフェラル回路３０に制御命令を発行してからの経過時間を計測する。例えば、タイマ４３での計測結果に基づいて、ペリフェラル回路３０についてのタイムアウト検出が行われ、ストール検出やリセット命令の発行が行われる。タイマ４３は、例えばカウンタを用いて構成される。ミラーレジスタ４４は、対応するペリフェラル回路３０の実レジスタ３１に保持されている情報をコピーするレジスタであり、実レジスタ３１に対応するように構成されている。このミラーレジスタ４４を用いて、実レジスタ３１に保持されている設定情報や処理に係る情報の退避、復元が行われる。制御レジスタ４５は、仮想化ペリフェラルコントローラ４０の各種制御を行うためのレジスタである。制御レジスタ４５の例としては、タイムアウト時間を設定するタイムアウト時間設定レジスタや、制御命令の優先順位を設定する優先順位設定レジスタや、初期化命令を設定する初期化命令設定レジスタがある。
【００１８】
なお、仮想化ペリフェラルコントローラ６０の内部構成は、図１においては図示を省略しているが、仮想化ペリフェラルコントローラ４０と同様に構成される。
【００１９】
本実施形態におけるプロセッサシステムでは、複数のマスタが１つのペリフェラル回路に対してアクセス可能、すなわちペリフェラル回路に対する制御命令を発行可能である。例えば、マスタは、ＯＳ７１、アプリケーションソフト７２、ドライバ７３、ＣＰＵ１０等である。
【００２０】
第１の実施形態におけるプロセッサシステムの基本動作は、以下の通りである。
図２は、第１の実施形態におけるプロセッサシステムの基本動作の一例を示すフローチャートである。なお、図２に示す基本動作は、仮想化ペリフェラルコントローラが制御部及び命令バッファを少なくとも有していれば実行可能である。以下、一例として処理要求がなされるペリフェラル回路を、ペリフェラル回路３０として説明する。
【００２１】
アプリケーション７２に基づく処理の実行中に（Ｓ１０１）、ペリフェラル回路３０で実行させる処理が発生すると、例えばドライバ７３から仮想化ペリフェラルコントローラ４０へ制御命令が発行される（Ｓ１０２）。仮想化ペリフェラルコントローラ４０がドライバ７３からの制御命令を受けると、制御部４１は、ペリフェラル回路３０が動作中であるか否か、すなわち他の制御命令に従って処理を実行中であるか否かを確認する（Ｓ１０３）。
【００２２】
確認の結果、ペリフェラル回路３０が動作中である場合には、制御部４１は、今回発行されたドライバ７３からの制御命令をペンディングし、その制御命令を命令バッファ４２に蓄積する（Ｓ１０８）。そして、ステップＳ１０１に戻る。一方、ペリフェラル回路３０が動作中でない場合には、制御部４１は、今回発行されたドライバ７３からの制御命令を、ペリフェラル回路３０へ発行する（Ｓ１０４）。そして、ペリフェラル回路３０は、発行された制御命令に従って処理を実行する。
【００２３】
ペリフェラル回路３０への制御命令の発行後、制御部４１は、ペリフェラル回路３０からの終了割込み待ち状態となる（Ｓ１０５）。制御部４１は、終了割込み待ち状態においてペリフェラル回路３０からの終了割込みが通知されると、ペリフェラル回路３０での処理が完了したことを示す処理完了信号を、その処理に係る制御命令を発行したドライバ７３に通知する（Ｓ１０６）。
【００２４】
続いて、制御部４１は、ペンディングされている制御命令が命令バッファ４２にあるか否かを確認する（Ｓ１０７）。確認の結果、ペンディングされている制御命令がない場合には、ステップＳ１０１に戻る。一方、ペンディングされている制御命令がある場合には、ステップＳ１０４に戻り、制御部４１は、命令バッファ４２に保持されたペンディングされている制御命令をペリフェラル回路３０へ発行してステップＳ１０４〜Ｓ１０７の処理を再び行う。
【００２５】
第１の実施形態によれば、メインバスＭＢＵＳとペリフェラル回路３０、５０との間に仮想化ペリフェラルコントローラ４０、６０を設け、仮想化ペリフェラルコントローラ４０、６０が、複数のマスタからのペリフェラル回路３０、５０へのアクセスを調停する。すなわち、バーチャルマシンなどのソフトウェアで実現していた調停機能を、ハードウェアである仮想化ペリフェラルコントローラ４０、６０により実現する。このように仮想化ペリフェラルコントローラ４０、６０によって、ソフトウェア制御によるペリフェラル回路の制御を代行することができ、ＣＰＵの負荷を低減することができる。
【００２６】
また、ペリフェラル回路３０、５０そのものを仮想化することで、マスタが、ペリフェラル回路３０、５０を制御するのではなく、仮想化ペリフェラルコントローラ４０、６０を操作する。そして、その仮想化ペリフェラルコントローラ４０、６０がペリフェラル回路３０、５０を制御する。すなわち、アクセスするマスタは、ペリフェラル回路３０、５０と直接通信せずに、仮想化ペリフェラルコントローラ４０、６０と通信を行うことで処理を実行させることができる。したがって、マスタからは直接ペリフェラル回路３０、５０を扱うようにして制御を行うことができる。
【００２７】
また、本実施形態における仮想化ペリフェラルコントローラ４０、６０においては、ペリフェラル回路３０、５０のアドレスを仮想化する必要もなく、元のアドレスをそのまま用いることも可能である。これにより、既存のソフトウェアドライバの流用時にアクセスするアドレスの変更を行う必要もなくなり、ドライバの移植性が高くなる。また、アドレス設定に制限がないため、従来必要であったアドレスデコードのための回路を設ける必要がなく、回路構成の簡略化を図ることができる。
【００２８】
また、マスタが接続されたバスとペリフェラル回路とを接続するために通信プロトコルの変換を行うバスブリッジをバスとペリフェラル回路との間に設けている場合がある。その場合には、バスブリッジ内に仮想化ペリフェラルコントローラの機能を実装することで、低コスト及び小面積で前述した機能を実現することができる。
【００２９】
ここで、図８に示したプロセッサシステムにおいて、ＯＳ（０）１５１がペリフェラル回路１３０に対して制御命令を発行する際、ドライバ１５３のバグなどにより不正な処理を実行させる制御命令をペリフェラル回路１３０に対して発行したとする。このとき、その制御命令に従って処理の実行を開始したペリフェラル回路３０が異常状態になり、ハングアップ状態となる状況が発生し得る。そのような状況の下で、ＯＳ（１）１５１がペリフェラル回路１３０に対して制御命令を発行しようとした場合、ハングアップ状態により待ち状態となる。しかし、ＯＳ（１）１５１側ではハングアップ状態による待ちであることを検出することができず、最終的にはＯＳ（０）１５１に加え、ＯＳ（１）１５１もストールを起こしてしまう。このような問題が発生した場合には、特許文献１に記載のようなサーバシステムであればシステムを停止してデバッグや再起動を行い問題の解決を図ることができるが、リアルタイム処理や無停止運転が要求される組み込みシステムでは問題の解決を図ることは困難である。
【００３０】
そこで、本実施形態におけるプロセッサシステムでは、ペリフェラル回路についてのタイムアウト検出を行い、タイムアウトとなった場合には、システム全体の停止を行うことなく、タイムアウトとなったペリフェラル回路のみの再起動を実行可能にしている。これにより、例えばペリフェラル回路が異常状態となっても（異常動作を行っていても）、システム全体を停止させるのではなく、異常状態となったペリフェラル回路のみを停止して再起動することで正常状態への復帰を図ることができる。
【００３１】
図３は、第１の実施形態におけるプロセッサシステムのタイムアウト検出動作を示すフローチャートである。以下では、一例として処理要求がなされるペリフェラル回路を、ペリフェラル回路３０として説明する。
【００３２】
本実施形態におけるプロセッサシステムにおいては、仮想化ペリフェラルコントローラ４０の制御レジスタ４５としてタイムアウト時間設定レジスタが設けられる。タイムアウト時間設定レジスタには、図３に示す動作の開始前にタイムアウト時間が予め設定される。そして、ペリフェラル回路３０への制御命令の発行後、設定されたタイムアウト時間を過ぎてもペリフェラル回路３０からの応答がない場合には、仮想化ペリフェラルコントローラ４０はタイムアウトであると判断する。
【００３３】
図３に示すように、アプリケーション７２に基づく処理の実行中に（Ｓ２０１）、ペリフェラル回路３０で実行させる処理が発生すると、例えばドライバ７３から仮想化ペリフェラルコントローラ４０へ制御命令が発行される（Ｓ２０２）。仮想化ペリフェラルコントローラ４０がドライバ７３からの制御命令を受けると、制御部４１は、ペリフェラル回路３０が動作中であるか否かを確認する（Ｓ２０３）。
【００３４】
確認の結果、ペリフェラル回路３０が動作中でない場合には、制御部４１は、タイマ４３による時間の計測（タイムカウント）を開始させるとともに（Ｓ２０４）、今回発行された制御命令をペリフェラル回路３０へ発行する（Ｓ２０５）。そして、ペリフェラル回路３０は、発行された制御命令に従って処理を実行する。
【００３５】
ペリフェラル回路３０への制御命令の発行後、制御部４１は、ペリフェラル回路３０からの終了割込み待ち状態となる（Ｓ２０６）。また、制御部４１は、終了割込み待ち状態において、タイマ４３で計測されている制御命令発行からの経過時間が、レジスタに予め設定されたタイムアウト時間を越えたか否か、すなわちタイムアウトであるか否かの判定を随時行っている（Ｓ２０７）。
【００３６】
そして、制御部４１は、終了割込み待ち状態において制御命令発行からの経過時間がタイムアウト時間を越える前に、ペリフェラル回路３０からの終了割込みが通知されると、処理に係る制御命令を発行したドライバ７３に処理完了信号を通知する（Ｓ２０８）。続いて、制御部４１は、ペンディングされている制御命令が命令バッファ４２にあるか否かを確認する（Ｓ２０９）。確認の結果、ペンディングされている制御命令がない場合には、ステップＳ２０１に戻る。一方、ペンディングされている制御命令がある場合には、ステップＳ２０４に戻り、制御部４１は、命令バッファ４２内のペンディングされている制御命令についてステップＳ２０４以降の処理を行う。
【００３７】
また、制御部４１は、終了割込み待ち状態において終了割込みが通知されることなく制御命令発行からの経過時間がタイムアウト時間を越えると、タイムアウトであると判定してペリフェラル回路３０の再起動動作を開始する。まず、制御部４１は、ペリフェラル回路３０の実レジスタ３１に保持されている情報を、ミラーレジスタ４４にコピーして退避させる（Ｓ２１０）。次に、制御部４１は、ペリフェラル回路３０に対してリセット命令を発行し、ペリフェラル回路３０の再起動を行う（Ｓ２１１）。
【００３８】
ステップＳ２１１においてペリフェラル回路３０の再起動を行った後、制御部４１は、ステップＳ２０４に戻り、ステップＳ２０４以降の処理を行う。ここで、他のペンディングされている制御命令が命令バッファ４２内にある場合には、制御部４１は、ペンディングされている制御命令についてステップＳ２０４以降の処理を行う。また、タイムアウトとなって中断された制御命令に係る処理の続きを行う場合には、制御部４１は、ミラーレジスタ４４に保持されている情報を、ペリフェラル回路３０の実レジスタ３１にコピーして復元し処理を開始させる。
【００３９】
また、ステップＳ２０３での確認の結果、ペリフェラル回路３０が動作中である場合には、仮想化ペリフェラルコントローラ４０の動作は、優先順位制御動作に移行する（Ｓ２１２）。なお、優先順位制御動作の詳細については後述する。そして、優先順位制御動作での処理結果に応じて、制御部４１は、ペンディングする制御命令を命令バッファ４２に蓄積して（Ｓ２１３）、ステップＳ２０１に戻る。
【００４０】
なお、前述した例では、ステップＳ２１０において、仮想化ペリフェラルコントローラの制御部は、ミラーレジスタにペリフェラル回路の実レジスタの内容をコピーし退避させるようにしている。しかしながら、タイムアウトになったときにはペリフェラル回路３０が異常状態であるとみなす場合には、ステップＳ２１０において、仮想化ペリフェラルコントローラの制御部が、レジスタの内容のコピーを行わなくとも良い。この場合には、例えばステップＳ２１０において制御部４１が、処理に係る制御命令を発行したドライバ７３に、単なるエラー通知を行うようにしても良い。
【００４１】
また、制御命令を発行したマスタの切替の際には、ステップＳ２０４あるいはステップＳ２０５の処理を実行する前に、仮想化ペリフェラルコントローラから初期化命令を発行してペリフェラル回路の初期化を行うようにしても良い。このように仮想化ペリフェラルコントローラからの初期化命令に従ってペリフェラル回路の初期化を行わせることでＣＰＵの負荷を軽減することができる。ペリフェラル回路の初期化を行う場合には、初期化動作後に、仮想化ペリフェラルコントローラのミラーレジスタに保持されている内容をペリフェラル回路の実レジスタに書き戻すようにすれば良い。なお、仮想化ペリフェラルコントローラの制御レジスタとして初期化命令設定レジスタを設け、そのレジスタに各マスタにて必要な初期化命令を格納することで、マスタに応じたペリフェラル回路の初期化を行うことができる。
【００４２】
また、タイムアウトとなってペリフェラル回路が再起動された回数をカウントしておき、ある回数を越えた場合には、仮想化ペリフェラルコントローラから制御命令を発行するマスタ（ＯＳ７１やアプリケーションソフト７２等）へ通知を行うようにしても良い。この通知を行う場合には、ペリフェラル回路が再起動された回数を保持する再起動回数レジスタ及び許容する再起動回数の上限値を設定する再起動回数上限レジスタが、仮想化ペリフェラルコントローラの制御レジスタとして設けられる。再起動回数上限レジスタに予め上限値を設定しておくとともに、仮想化ペリフェラルコントローラの制御部は、ペリフェラル回路の再起動を行う度に、再起動を行った回数の累積値を再起動回数レジスタに書き込む。そして、仮想化ペリフェラルコントローラの制御部は、再起動回数レジスタの値が再起動回数上限レジスタの値を越えたか否かを判定し、越えた場合にはマスタに対して通知を行う。
【００４３】
以上説明したタイムアウト検出動作によれば、仮想化ペリフェラルコントローラが対応するペリフェラル回路のタイムアウトの検出を行い、タイムアウトとなった場合には仮想化ペリフェラルコントローラがペリフェラル回路の再起動動作を行う。これにより、ソフトウェアにより行っていたタイムアウトの検出、及びペリフェラル回路の再起動動作を、仮想化ペリフェラルコントローラが実施することができ、ＣＰＵの負荷を軽減することができる。
【００４４】
図４は、第１の実施形態におけるプロセッサシステムの優先順位制御動作を示すフローチャートである。なお、図４に示す優先順位制御動作は、仮想化ペリフェラルコントローラが制御部、命令バッファ、及び制御レジスタを少なくとも有していれば実行可能である。以下では、一例として処理要求がなされるペリフェラル回路を、ペリフェラル回路３０として説明する。なお、図４におけるステップＳ３０４、Ｓ３０５、及びＳ３１０での処理が、図３におけるステップＳ２１２での処理に対応する。
【００４５】
本実施形態におけるプロセッサシステムにおいては、仮想化ペリフェラルコントローラ４０の制御レジスタ４５として制御命令の優先度を設定する優先順位設定レジスタが設けられる。優先順位設定レジスタには、図４に示す動作の開始前に各マスタの優先順位が予め設定される。仮想化ペリフェラルコントローラ４０は、優先順位設定レジスタに設定された優先度を基にマスタ間の優先順位を判断して、制御命令をペリフェラル回路３０へ発行する。
【００４６】
図４に示すように、アプリケーション７２に基づく処理の実行中に（Ｓ３０１）、ペリフェラル回路３０で実行させる処理が発生すると、例えばドライバ７３から仮想化ペリフェラルコントローラ４０へ制御命令が発行される（Ｓ３０２）。仮想化ペリフェラルコントローラ４０がドライバ７３からの制御命令を受けると、制御部４１は、ペリフェラル回路３０が動作中であるか否か、すなわち他の制御命令に従って処理を実行中であるか否かを確認する（Ｓ３０３）。
【００４７】
確認の結果、ペリフェラル回路３０が動作中である場合には、制御部４１は、処理中の制御命令を発行したマスタの優先度と、今回発行された制御命令を発行したマスタの優先度とを比較する。その結果、今回発行された制御命令を発行したマスタの優先度が、処理中の制御命令を発行したマスタの優先度より高い場合には、制御部４１は、ペリフェラル回路３０の実レジスタ３１に保持されている情報を、ミラーレジスタ４４にコピーして退避させる（Ｓ３０５）。
【００４８】
ペリフェラル回路３０が動作中でない場合、若しくはステップＳ３０５において実レジスタ３１の内容をミラーレジスタ４４にコピーして退避させた後、制御部４１は、今回発行された制御命令をペリフェラル回路３０へ発行する（Ｓ３０６）。そして、ペリフェラル回路３０は、発行された制御命令に従って処理を実行する。
【００４９】
ペリフェラル回路３０への制御命令の発行後、制御部４１は、ペリフェラル回路３０からの終了割込み待ち状態となる（Ｓ３０７）。制御部４１は、終了割込み待ち状態においてペリフェラル回路３０からの終了割込みが通知されると、処理に係る制御命令を発行したドライバ７３に処理完了信号を通知する（Ｓ３０８）。続いて、制御部４１は、ペンディングされている制御命令が命令バッファ４２にあるか否かを確認する（Ｓ３０９）。確認の結果、ペンディングされている制御命令がない場合には、ステップＳ３０１に戻る。一方、ペンディングされている制御命令がある場合には、ステップＳ３０６に戻り、制御部４１は、命令バッファ内のペンディングされている制御命令についてステップＳ３０６以降の処理を行う。
【００５０】
ステップＳ３０４における比較の結果、処理中の制御命令を発行したマスタの優先度が、今回発行された制御命令を発行したマスタの優先度より高い場合には、制御部４１は、今回発行された制御命令を発行したドライバ７３に受領通知を返す（Ｓ３１０）。この受領通知は、今回発行された制御命令を受け取ったことを示すものである。そして、制御部４１は、今回発行された制御命令をペンディングし、その制御命令を命令バッファ４２に蓄積する（Ｓ３１１）。そして、ステップＳ３０１に戻る。
【００５１】
なお、前述した例では、優先順位設定レジスタに設定されたマスタの優先順位に基づいて優先順位制御を行うようにしているが、制御命令自体に優先度情報を付加して、その優先度情報に基づいて優先順位制御を行うようにしても良い。制御命令に優先度情報を付加する場合には、制御命令を発行するマスタに制御命令に優先度情報を組み込む機構を付加するとともに、仮想化ペリフェラルコントローラの制御部に制御命令の優先度判定機能を付加すれば良い。また、優先順位設定レジスタに設定されたマスタの優先順位に基づく優先順位制御とともに、制御命令に付加された優先度情報に基づく優先順位制御を合わせて用いるようにしても良い。
【００５２】
以上説明した優先順位制御動作によれば、１つのペリフェラルに対して複数の制御命令が発行された場合において、ソフトウェアにより行っていたスケジューリング機能を仮想化ペリフェラルコントローラが行うことで、ＣＰＵの負荷を軽減することができる。さらに、優先度に従って適切な順序で、ペリフェラル回路に制御命令に係る処理を実行させることができる。また、発行された制御命令をペンディングする場合に、その制御命令を発行したマスタに受領通知を返すことで、マスタ側からは制御命令を受けとった後に処理を行っている長レイテンシのデバイスのように見せることができ、ソフトウェア割込みのタイムアウトを回避することができる。
【００５３】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【００５４】
ここで、図８に示したプロセッサシステムにおいて、複数のペリフェラル回路による処理を逐次的に実行する協調動作を行う場合について、プロセッサシステムにおける動作を、図５を参照して説明する。図５において、図８に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００５５】
図５においては、まずペリフェラル回路１３０で第１の処理を行い、その処理結果に対してペリフェラル回路１４０で第２の処理を行う場合を一例として示している。このようなペリフェラル回路１３０、１４０による逐次処理を実行する場合、まずペリフェラル回路１３０に第１の処理を実行させるための第１の制御命令がドライバ１５３からペリフェラル回路１３０へ発行される（Ｐ１０１）。ドライバ１５３からの第１の制御命令を受けたペリフェラル回路１３０は、第１の制御命令に従って実行する処理で用いる処理前データをメインメモリ１２０から読み込む（Ｐ１０２）。そして、ペリフェラル回路１３０は、第１の制御命令に従って処理を実行して処理済データをメインメモリ１２０に格納し（Ｐ１０３）、第１の制御命令に係る処理が終了したことをドライバ１５３に通知する（Ｐ１０４）。
【００５６】
ドライバ１５３は、ペリフェラル回路１３０から第１の制御命令に係る処理が終了した旨の通知を受けると、続いてペリフェラル回路１４０に第２の処理を実行させるための第２の制御命令をペリフェラル回路１４０へ発行する（Ｐ１０５）。ドライバ１５３からの第２の制御命令を受けたペリフェラル回路１４０は、メインメモリ１２０に格納されている第１の制御命令に係る処理済データを、第２の制御命令に従って実行する処理の処理前データとしてメインメモリ１２０から読み込む（Ｐ１０６）。そして、ペリフェラル回路１４０は、第２の制御命令に従って処理を実行して処理済データをメインメモリ１２０に格納する（Ｐ１０７）。
【００５７】
しかし、前述のように複数のペリフェラル回路による逐次処理を実行する場合には、１つのペリフェラル回路での処理が終了する毎に、次に処理を行うペリフェラル回路に対して制御命令を発行しなくてはならず、ＣＰＵの負荷が増大する。また、各ペリフェラル回路で処理を実行するに際して、メインメモリからの処理前データの読み込み、及びメインメモリへの処理済データの格納が発生するため、メインメモリへのアクセス頻度が高くなる。
【００５８】
以下に説明する第２の実施形態におけるプロセッサシステムは、複数のペリフェラル回路による処理を逐次的に実行する協調動作において、ＣＰＵの負荷及びメインメモリへのアクセス頻度が増大することを抑制するものである。図６は、第２の実施形態におけるプロセッサシステムの構成例を示すブロック図である。第２の実施形態におけるプロセッサシステムは、例えば制御対象の装置に内蔵される組み込みシステムとして実装される。なお、図６において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００５９】
図６に示すように、第２の実施形態におけるプロセッサシステムは、ＣＰＵ１０、メインメモリ２０、ペリフェラル回路３０、５０、及び仮想化ペリフェラルコントローラ４０、６０に加え、データメモリ８０を有する。第２の実施形態におけるプロセッサシステムは、例えばＣＰＵ１０、メインメモリ２０、ペリフェラル回路３０、５０、仮想化ペリフェラルコントローラ４０、６０、及びデータメモリ８０が１つのチップ上又は複数のチップに搭載されているものである。
【００６０】
データメモリ８０は、複数のペリフェラル回路３０、５０による逐次処理を実行する場合に、逐次処理における最終的な結果を除く各ペリフェラル回路の処理結果（処理終了後のデータ）を格納するメモリである。すなわち、データメモリ８０は、ペリフェラル回路３０、５０間で授受されることとなるデータが格納される。データメモリ８０は、メインバスＭＢＵＳとは異なる内部バスＩＢＵＳを介して、協調動作にかかわるペリフェラル回路３０、５０に対応する仮想化ペリフェラルコントローラ４０、６０と互いに通信可能に接続される。データメモリ８０へのデータの書き込み、及びデータメモリ８０からのデータの読み出しは、仮想化ペリフェラルコントローラ４０、６０のリーダ／ライタ４６、６１により内部バスＩＢＵＳを介して行う。
【００６１】
なお、仮想化ペリフェラルコントローラ４０、６０に第１の実施形態と同様の各機能部を設けることで、プロセッサシステムは、以下に説明する複数のペリフェラル回路による協調動作だけでなく、第１の実施形態において示した各動作を行うことが可能である。
【００６２】
次に、第２の実施形態におけるプロセッサシステムでの複数のペリフェラル回路による逐次処理を実行する協調動作について説明する。図７は、第２の実施形態におけるプロセッサシステムでの複数のペリフェラル回路による逐次処理の流れを説明するための図である。図７において、図１及び図６に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００６３】
以下では、一例としてペリフェラル回路３０、５０による逐次処理を実行する場合について説明する。ペリフェラル回路３０、５０による逐次処理としては、例えばペリフェラル回路３０が画像のコーデック処理を行い、ペリフェラル回路５０がそのデータのフィルタ処理を行うような場合があげられる。
【００６４】
アプリケーション７２に基づく処理の実行中に、ペリフェラル回路３０、５０を用いて逐次的に実行する処理が発生すると、例えばドライバ７３から仮想化ペリフェラルコントローラ４０、６０へ制御命令が発行される（Ｐ１１）。このとき、発行される制御命令は、ペリフェラル回路３０、５０による逐次処理を実行する協調動作用の制御命令である。
【００６５】
ペリフェラル回路３０、５０による協調動作用の制御命令をドライバ７３から受けた仮想化ペリフェラルコントローラ４０、６０は、逐次処理を行う前段のペリフェラル回路３０及び後段のペリフェラル回路５０が動作可能になるまで待機する。例えば、仮想化ペリフェラルコントローラ４０、６０内のリーダ／ライタ４６、６１等が互いに通信するなどしてペリフェラル回路３０、５０の状態を相互に確認する。ペリフェラル回路３０、５０が動作可能であると確認されるまで、仮想化ペリフェラルコントローラ４０、６０内の制御部は、ペリフェラル回路３０、５０に対して逐次処理に係る制御命令を発行しないようにする。
【００６６】
そして、動作可能になると、仮想化ペリフェラルコントローラ４０内の制御部は、ペリフェラル回路３０へ逐次処理に係る制御命令を発行する。このとき、仮想化ペリフェラルコントローラ４０は、ペリフェラル回路３０が実行する処理で用いる処理前データをメインバスＭＢＵＳを介してメインメモリ２０から読み込み、ペリフェラル回路３０に供給する（Ｐ１２）。そして、発行された制御命令に従ってペリフェラル回路３０により処理が実行された後、仮想化ペリフェラルコントローラ４０は、ペリフェラル回路３０から処理済データを受けて、内部バスＩＢＵＳを介してデータメモリ８０に格納する（Ｐ１３）。
【００６７】
また、仮想化ペリフェラルコントローラ６０内の制御部は、ペリフェラル回路５０へ逐次処理に係る制御命令を発行する。このとき、仮想化ペリフェラルコントローラ６０は、ペリフェラル回路５０での処理前データとなるペリフェラル回路３０での処理済データを内部バスＩＢＵＳを介してデータメモリ８０から読み込み、ペリフェラル回路５０に供給する（Ｐ１４）。なお、ペリフェラル回路５０への逐次処理に係る制御命令の発行は、ペリフェラル回路３０への逐次処理に係る制御命令の発行後であれば、ペリフェラル回路３０による処理が完了する前（処理中）であっても良い。
【００６８】
そして、発行された制御命令に従ってペリフェラル回路５０により処理が実行された後、仮想化ペリフェラルコントローラ６０は、ペリフェラル回路５０から処理済データを受けて、メインバスＭＢＵＳを介してメインメモリ２０に格納する（Ｐ１５）。このようにして逐次的に処理を実行することでペリフェラル回路３０、５０による協調動作が終了すると、この協調動作用の制御命令を発行したドライバ７３へ動作完了通知を行う。ドライバ７３への動作完了通知は、すくなくとも逐次処理において最終段の処理を行うペリフェラル回路に対応する仮想化ペリフェラルコントローラが行えば良い。
【００６９】
第２の実施形態によれば、複数のペリフェラル回路による逐次処理を実行する協調動作を行う場合において、マスタは複数のペリフェラル回路に対する協調動作用の制御命令を発行するだけで、複数のペリフェラル回路による逐次処理を実行させることができる。これにより、マスタ側では、各ペリフェラル回路での処理の終了を検知したり、処理順序に従って各ペリフェラル回路に制御命令を順次発行したりする必要がなくなり、ＣＰＵの負荷を軽減することができる。また、ペリフェラル回路間でのデータの授受は、メインバスＭＢＵＳとは異なる内部バスＩＢＵＳを介して接続されたデータメモリ８０を用いて行うので、メインメモリ２０へのアクセス頻度が増大することを抑制することができる。本実施形態によれば、例えばｎ個のペリフェラル回路で逐次処理を行う場合には、図５に示した動作と比較してメインメモリへのアクセスをｎ分の１に削減することができる。
【００７０】
なお、仮想化ペリフェラルコントローラ４０、６０のリーダ／ライタ４６、６１が、データメモリ８０への書き込み速度及びデータメモリ８０からの読み出し速度を制御できるようにしても良い。例えば、仮想化ペリフェラルコントローラ４０、６０のリーダ／ライタ４６、６１が、書き込み速度や読み出し速度が所望の速度となるように、ペリフェラル回路３０、５０に対して処理を一時停止させたり、制御命令の発行制御を指示したりするようにしても良い。これにより、次段のペリフェラル回路に係るデータメモリからのデータ読み込み速度が遅い場合には前段のペリフェラル回路に係るデータメモリへのデータ書き込み速度を遅くすることを可能にし、データメモリがオーバーフローすることを防止することができる。また、前段のペリフェラル回路に係るデータメモリへのデータ書き込み速度が遅い場合には次段のペリフェラル回路に係るデータメモリからのデータ読み出し速度を遅くすることも可能となる。
【００７１】
また、前述した例では、２つのペリフェラル回路による逐次処理を実行する場合について説明したが、３つ以上のペリフェラル回路による逐次処理も実行可能である。この場合には、逐次処理における各処理を行うペリフェラル回路のうち、逐次処理における最後の処理を行うペリフェラル回路を除く各ペリフェラル回路の処理結果をデータメモリ８０に格納する。また、逐次処理における最後の処理を行うペリフェラル回路の処理結果をメインメモリ２０に格納する。
【００７２】
なお、前述した第１及び第２の実施形態では、優先順位制御動作にて発行された制御命令をペンディングする場合にマスタに受領通知を返すようにしている。しかし、これに限らず、任意の動作において、ペンディングするか否かにかかわらず、マスタからの制御命令を受ける度に、その制御命令を発行したマスタに受領通知を返すようにしても良い。このようにすることで、マスタ側からは制御命令を受けとった後に処理を行っている長レイテンシのデバイスのように見せることができ、ソフトウェア割込みのタイムアウトを回避することができる。また、制御レジスタとしてレスポンス制御レジスタを設け、その設定に応じて制御命令を発行したマスタに受領通知を返すか否かを切り替えるようにしても良い。
【００７３】
また、前述した第１及び第２の実施形態におけるプロセッサシステムでは、ペリフェラル回路と仮想化ペリフェラルコントローラとの組を２組有するプロセッサシステムを示しているが、これに限定されるものではない。プロセッサシステムが有するペリフェラル回路と仮想化ペリフェラルコントローラとの組の数は任意である。
【００７４】
また、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００７５】
（付記１）
第１のバスに接続されたＣＰＵと、
前記ＣＰＵを含む複数のマスタから発行された制御命令に従って処理を実行する周辺回路と、
前記第１のバスと前記周辺回路との間に設けられ、前記第１のバス及び前記周辺回路に異なるインターフェースで接続された制御回路とを備え、
前記制御回路は、
前記マスタから発行された制御命令を保持するための命令バッファと、
前記制御命令に係る調停処理を行い、処理結果に応じて前記制御命令を前記周辺回路に発行するか又は前記命令バッファに保持するかを制御する制御部とを有することを特徴とするプロセッサシステム。
（付記２）
前記制御回路は、
前記周辺回路に制御命令を発行してからの経過時間を計測するタイマ部と、
タイムアウト時間を設定するレジスタとを有し、
前記タイマ部により計測された制御命令発行からの経過時間が、前記レジスタに設定された前記タイムアウト時間を越えた場合に、前記周辺回路のタイムアウトを検出することを特徴とする付記１記載のプロセッサシステム。
（付記３）
前記制御回路は、
前記周辺回路の内部レジスタに対応するミラーレジスタを有し、
前記周辺回路のタイムアウトを検出した場合には、前記周辺回路の内部レジスタが保持している情報を前記ミラーレジスタに退避し、前記周辺回路の再起動を行うことを特徴とする付記２記載のプロセッサシステム。
（付記４）
前記制御回路は、
許容する前記周辺回路の再起動の回数の上限値を設定するレジスタを有し、
前記周辺回路を再起動した回数が、前記レジスタに設定された上限値を越えた場合には、前記マスタに通知を行うことを特徴とする付記３記載のプロセッサシステム。
（付記５）
前記制御回路は、前記制御命令を受けたことの応答として当該制御命令を発行したマスタに受領通知を返すことを特徴とする付記１〜４の何れか１項に記載のプロセッサシステム。
（付記６）
前記制御回路は、
前記周辺回路の内部レジスタに対応するミラーレジスタと、
前記制御命令の優先度を設定するレジスタとを有し、
前記周辺回路が制御命令に従って処理を実行しているときに新たに発行された制御命令を受けた場合には、実行している処理の制御命令の優先度と新たに発行された制御命令の優先度とを比較し、新たに発行された制御命令の優先度が実行している処理の制御命令の優先度より高ければ、前記周辺回路の内部レジスタが保持している情報を前記ミラーレジスタに退避し、新たに発行された制御命令を前記周辺回路に発行することを特徴とする付記１〜５の何れか１項に記載のプロセッサシステム。
（付記７）
前記制御回路は、
各マスタに対応して前記周辺回路を初期化する初期化命令を格納するレジスタを有し、
前記周辺回路に発行する制御命令のマスタが変更される毎に、前記レジスタに格納された前記マスタに対応する初期化命令を、前記周辺回路への前記制御命令の発行前に、前記周辺回路に発行することを特徴とする付記１〜６の何れか１項に記載のプロセッサシステム。
（付記８）
複数の前記周辺回路と複数の前記制御回路とが搭載されているとともに、前記第１のバスに接続された第１のメモリと、前記第１のバスとは異なる第２のバスを介して複数の前記制御回路と接続された第２のメモリとをさらに備え、
複数の前記周辺回路による逐次処理を実行させる制御命令が前記マスタから発行されると、前記逐次処理における各処理を行う前記周辺回路のうち、前記逐次処理における最後の処理を行う前記周辺回路を除く各周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を次の処理を行う前記周辺回路に提供するために前記第２のバスを介して前記第２のメモリに格納し、前記逐次処理における最後の処理を行う前記周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を前記第１のバスを介して前記第１のメモリに格納することを特徴とする付記１〜７の何れか１項に記載のプロセッサシステム。
（付記９）
第１のバスに接続されたＣＰＵと、
前記第１のバスに接続された第１のメモリと、
前記ＣＰＵを含む複数のマスタから発行された制御命令に従って処理を実行する複数の周辺回路と、
前記第１のバスと前記周辺回路との間に設けられ、前記第１のバス及び前記周辺回路に異なるインターフェースで接続された複数の制御回路と、
前記第１のバスとは異なる第２のバスを介して複数の前記制御回路と接続された第２のメモリとを備えることを特徴とするプロセッサシステム。
（付記１０）
複数の前記周辺回路による逐次処理を実行させる制御命令が前記マスタから発行されると、前記逐次処理における各処理を行う前記周辺回路のうち、前記逐次処理における最後の処理を行う前記周辺回路を除く各周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を次の処理を行う前記周辺回路に提供するために前記第２のバスを介して前記第２のメモリに格納し、前記逐次処理における最後の処理を行う前記周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を前記第１のバスを介して前記第１のメモリに格納することを特徴とする付記９記載のプロセッサシステム。
（付記１１）
前記制御回路は、前記第２のメモリへの書き込み速度及び前記第２のメモリからの読み出し速度が制御可能であることを特徴とする付記９又は１０記載のプロセッサシステム。
（付記１２）
第１のバスに接続されたＣＰＵと、前記ＣＰＵを含む複数のマスタから発行された制御命令に従って処理を実行する周辺回路と、前記第１のバス及び前記周辺回路に異なるインターフェースで接続された制御回路とを備えるプロセッサシステムの制御方法であって、
前記制御回路が、前記マスタから発行された制御命令に係る調停処理を行い、処理結果に応じて前記制御命令を前記周辺回路に発行するか又は前記制御命令を保持するための命令バッファに保持するかを制御することを特徴とするプロセッサシステムの制御方法。
（付記１３）
第１のバスに接続されたＣＰＵと、前記第１のバスに接続された第１のメモリと、前記ＣＰＵを含む複数のマスタから発行された制御命令に従って処理を実行する複数の周辺回路と、前記第１のバス及び前記周辺回路に異なるインターフェースで接続された複数の制御回路と、前記第１のバスとは異なる第２のバスを介して複数の前記制御回路と接続された第２のメモリとを備えるプロセッサシステムの制御方法であって、
複数の前記周辺回路による逐次処理を実行させる制御命令が前記マスタから発行されると、前記逐次処理における各処理を行う前記周辺回路のうち、前記逐次処理における最後の処理を行う前記周辺回路を除く各周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を次の処理を行う前記周辺回路に提供するために前記第２のバスを介して前記第２のメモリに格納し、前記逐次処理における最後の処理を行う前記周辺回路に対応する前記制御回路は、当該周辺回路の処理結果を前記第１のバスを介して前記第１のメモリに格納することを特徴とするプロセッサシステムの制御方法。
（付記１４）
ＣＰＵが接続された第１のバス及び制御命令に従って処理を実行する周辺回路に異なるインターフェースで接続された制御回路であって、
前記ＣＰＵを含む複数のマスタから発行された前記制御命令を保持するための命令バッファと、
前記制御命令に係る調停処理を行い、処理結果に応じて前記制御命令を前記周辺回路に発行するか又は前記命令バッファに保持するかを制御する制御部とを備えることを特徴とする制御回路。
【符号の説明】
【００７６】
１０  ＣＰＵ
２０  メインメモリ
３０、５０  ペリフェラル回路
３１、５１  実レジスタ
４０、６０  仮想化ペリフェラルコントローラ
４１  制御部
４２  命令バッファ
４３  タイマ
４４  ミラーレジスタ
４５  制御レジスタ
４６、６１  リーダ／ライタ
７０  ソフトウェア
８０  データメモリ
ＭＢＵＳ  メインバス
ＩＢＵＳ  内部バス
【図１】
2011138401.tif 000003
【図２】
2011138401.tif 000004
【図３】
2011138401.tif 000005
【図４】
2011138401.tif 000006
【図５】
2011138401.tif 000007
【図６】
2011138401.tif 000008
【図７】
2011138401.tif 000009
【図８】
2011138401.tif 000010