(57)【要約】【課題】ホストプロセッサの業務の一部を周辺装置用プロセッサに肩代わりさせることが可能な情報処理システムの提供。【解決手段】メインＣＰＵ２０とアクセラレータ４０とローカルＣＰＵ３０を有する周辺装置６０を含む情報処理システム１０である。メインＣＰＵ２０は、アクセラレータの制御をローカルＣＰＵに依頼するか否かを判断し、ローカルＣＰＵ３０に依頼すると判断した場合には、ローカルＣＰＵ３０に対してアクセラレータ４０に与える制御コマンド内容を指示し、前記ローカルＣＰＵ３０は、メインＣＰＵ２０からの指示に基づき、所与のメモリ５０に格納されているアクセラレータ４０に対する制御コマンドをアクセラレータ４０に与え、アクセラレータ４０は、与えれた制御コマンドに対応した処理を実行する。【選択図】        図３
2006344153.tif 000002
【特許請求の範囲】
【請求項１】
メインＣＰＵと所与の機能を提供するアクセラレータとローカルＣＰＵを有する周辺装置を含む情報処理システムであって、
前記メインＣＰＵは、アクセラレータ制御処理手段を含み、
アクセラレータ制御処理手段は、
アクセラレータの制御をローカルＣＰＵに依頼するか否かを判断するための判断手段と、
ローカルＣＰＵに依頼しないと判断した場合には、所与のメモリに格納されているアクセラレータに対する制御コマンドを自らアクセラレータに与え、
ローカルＣＰＵに依頼すると判断した場合には、ローカルＣＰＵに対してアクセラレータに与える制御コマンド内容を指示し、
前記ローカルＣＰＵは、メインＣＰＵからの指示に基づき、所与のメモリに格納されているアクセラレータに対する制御コマンドをアクセラレータに与え、
アクセラレータは、与えれた制御コマンドに対応した処理を実行する制御コマンド実行部を含むことを特徴とする情報処理システム。
【請求項２】
請求項１において、
前記メインＣＰＵおよび前記ローカルＣＰＵからアクセス可能で、アクセラレータに対する制御コマンドが記憶されたメモリを含み、
前記メインＣＰＵは、
ローカルＣＰＵに依頼すると判断した場合には、アクセラレータに与える制御コマンドが格納された前記メモリ上のアドレスをローカルＣＰＵに対して指示し、
前記ローカルＣＰＵは、メインＣＰＵからの指示された前記メモリ上のアドレスから制御コマンドを読み出して、アクセラレータに対する制御コマンドを与えることを特徴とする情報処理システム。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記判断手段は、
メインＣＰＵの処理予定または処理内容に基づき、アクセラレータの制御依頼の可否を判断する手段を含むことを特徴とする情報処理システム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記判断手段は、
ローカルＣＰＵ装置に対してアクセラレータの制御依頼の問い合わせを行い、問い合わせに対する応答結果に基づきアクセラレータの制御依頼の可否を判断する手段を含むことを特徴とする情報処理システム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記判断手段は、
周辺装置の使用状況に基づきアクセラレータの制御依頼の可否を判断する手段を含むことを特徴とする情報処理システム。
【請求項６】
請求項１乃至５のいずれかにおいて、
少なくともメインＣＰＵと周辺装置とアクセラレータとメモリに接続された第１のバスと、
少なくとも周辺装置とアクセラレータとメモリに接続された第２のバスを含み、
メインＣＰＵがアクセラレータの制御を行う場合には第１のバスを使用し、
ローカルＣＰＵがアクセラレータの制御を行う場合には第２のバスを使用することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムに関する。
【背景技術】
【０００２】
メインＣＰＵ、アクセラレータ、周辺装置を含む情報処理システムにおいて、メインＣＰＵの業務、周辺装置の業務はシステムを構築した際には決められており、周辺装置用プロセッサがアイドル状態でも、ホストプロセッサの業務を肩代わりすることはない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ここで周辺装置用プロセッサがアイドル状態である場合に、ホストプロセッサの業務の一部を周辺装置用プロセッサに肩代わりさせれば、システム全体の処理能力の向上につなげることができる。
【０００４】
しかし周辺装置用プロセッサがホストプロセッサと同等の機能を有しない場合や、アクセラレータに対するインターフェースが異なる場合にはホストプロセッサの業務の一部を周辺装置用プロセッサに肩代わりさせることは困難であるという問題点があった。
【０００５】
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、ホストプロセッサの業務の一部を周辺装置用プロセッサに肩代わりさせることが可能な情報処理システムの提供を目的とする。
【課題を解決するための手段】
【０００６】
（１）本発明は、
メインＣＰＵと所与の機能を提供するアクセラレータとローカルＣＰＵを有する周辺装置を含む情報処理システムであって、
前記メインＣＰＵは、アクセラレータ制御処理手段を含み、
アクセラレータ制御処理手段は、
アクセラレータの制御をローカルＣＰＵに依頼するか否かを判断するための判断手段と、
ローカルＣＰＵに依頼しないと判断した場合には、所与のメモリに格納されているアクセラレータに対する制御コマンドを自らアクセラレータに与え、
ローカルＣＰＵに依頼すると判断した場合には、ローカルＣＰＵに対してアクセラレータに与える制御コマンド内容を指示し、
前記ローカルＣＰＵは、メインＣＰＵからの指示に基づき、所与のメモリに格納されているアクセラレータに対する制御コマンドをアクセラレータに与え、
アクセラレータは、与えれた制御コマンドに対応した処理を実行する（ホストからでも、周辺装置からでも同じインターフェースで動く）制御コマンド実行部を含むことを特徴とする。
【０００７】
判断手段は、例えばメインＣＰＵが所定の判断アルゴリズムのプログラムを実行することで実現することができる。
【０００８】
所与のメモリには、
ローカルＣＰＵは周辺装置（ペリフェラル）を制御するためのもので、メインＣＰＵと同等の機能を有するものではない。
【０００９】
アクセラレータの制御コマンドはＡＰＩ（アプリケーションインターフェース）で定義されている。
【００１０】
アクセラレータの制御コマンド実行部は、ＡＰＩ（アプリケーションインターフェース）で定義されたアクセラレータの制御コマンドを受け取るとその制御コマンドを解析して実行するドライバーとして機能する。アクセラレータの制御コマンド実行部は、メインＣＰＵとローカルＣＰＵに対しては同じインターフェースで動作する（すなわちアクセラレータの制御コマンドをメインＣＰＵで発行してもローカルＣＰＵで発行しても同じ処理が行われるように構成されている）。
【００１１】
本発明によればスレーブプロセッサがアイドルな時や、メインＣＰＵの処理が込んでいるときには処理を分散させることができるので、アクセラレータを使用する業務においてシステムの処理速度の向上を図ることができる。
【００１２】
（２）本発明の情報処理システムは、
前記メインＣＰＵおよび前記ローカルＣＰＵからアクセス可能で、アクセラレータに対する制御コマンドが記憶されたメモリを含み、
前記メインＣＰＵは、
ローカルＣＰＵに依頼すると判断した場合には、アクセラレータに与える制御コマンドが格納された前記メモリ上のアドレスをローカルＣＰＵに対して指示し、
前記ローカルＣＰＵは、メインＣＰＵからの指示された前記メモリ上のアドレスから制御コマンドを読み出して、アクセラレータに対する制御コマンドを与えることを特徴とする。
【００１３】
本発明によれば、メインＣＰＵがローカルＣＰＵに依頼すると判断した場合には、制御コマンドが格納されたアドレスを指示するだけでよいので処理が簡単である。
【００１４】
（３）本発明の情報処理システムは、
前記判断手段は、
メインＣＰＵの処理予定または処理内容に基づき、アクセラレータの制御依頼の可否を判断する手段を含むことを特徴とする。
【００１５】
例えばメインＣＰＵの処理予定または処理内容に演算負荷の高い処理がはいっている場合に、ローカルＣＰＵにアクセラレータの制御依頼を行うようにしてもよい。
【００１６】
（４）本発明の情報処理システムは、
前記判断手段は、
ローカルＣＰＵ装置に対してアクセラレータの制御依頼の問い合わせを行い、問い合わせに対する応答結果に基づきアクセラレータの制御依頼の可否を判断する手段を含むことを特徴とする。
【００１７】
（５）本発明の情報処理システムは、
前記判断手段は、
周辺装置の使用状況に基づきアクセラレータの制御依頼の可否を判断する手段を含むことを特徴とする。
【００１８】
周辺装置の使用状況とは、例えばメインＣＰＵが周辺装置を使用しているかどうか等に基づき判断するようにしてもよい。
【００１９】
またメインＣＰＵが参照可能なエリアに周辺装置の稼動状況または、処理依頼の受付可能か否かを示すレジスタを有し、
ローカルＣＰＵは、自己の稼動状況に基づき前記レジスタを更新し、
前記メインＣＰＵの判断手段は、
前記レジスタに基づき処理依頼の可否を判断するようにしてもよい。
【００２０】
例えば周辺装置が処理可能かどうかを示すフラグレジスタを有し、メインＣＰＵはフラグレジスタを参照するような構成でもよい。
【００２１】
（６）本発明の情報処理システムは、
少なくともメインＣＰＵと周辺装置とアクセラレータとメモリに接続された第１のバスと、
少なくとも周辺装置とアクセラレータとメモリに接続された第２のバスを含み、
メインＣＰＵがアクセラレータの制御を行う場合には第１のバスを使用し、
ローカルＣＰＵがアクセラレータの制御を行う場合には第２のバスを使用することを特徴とする。
【００２２】
このようにするとメインＣＰＵとローカルＣＰＵのバスの使用が競合しないので、スムーズな分散処理を行うことができる。
【発明を実施するための最良の形態】
【００２３】
１．集積回路装置
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００２４】
以下では様々な画像データを管理するサーバーにネットワークで接続しており、画像データからリアルタイムに３Ｄ画像を生成しモニターに表示する（第１の機能）システム、画像データから数値情報を検出し、これを元にある計算を行い、計算結果を３Ｄ画像にスーパーインポーズすること（第２の機能）が可能なシステム、生成した表示画像データは暗号化してサーバーに格納しておく事（第３の機能）が可能なシステムを例にとり説明する。            
【００２５】
図１は、本実施の形態の情報処理システムについて説明するための図である。
【００２６】
本実施の形態の情報処理システム１０は、メインＣＰＵ２０、アクセラレータ（ここでは画像処理アクセラレータ４０、暗号化処理アクセラレータ４２、圧縮／伸長処理アクセラレータ４４等）、周辺装置（ここではネットワークコントローラ６０、ＨＤＤコントローラ６２、ＵＳＢコントローラ６４、グラフィックコントローラ６６、その他のコントローラ６８等を含む）を含む。
【００２７】
また本実施の形態の情報処理システム１０は、ＩＯＰ(I/O-Processor)／バスブリッジ回路３０を含む。ＩＯＰ(I/O-Processor)／バスブリッジ回路３０は、ＩＯＰ(I/O-Processor)とバスブリッジ回路を１つのブロックにまとめたもので、別々のブロックとして記載した場合との構成上の差異はない。ここでＩＯＰ(I/O-Processor)は、元々は周辺装置６０、６２、６４、６６内に存在するローカルＣＰＵをＩＯＰ(I/O-Processor)として独立して記載したもので、周辺装置６０、６２、６４、６６内に存在するローカルＣＰＵであってもよい。
【００２８】
また本実施の形態の情報処理システム１０は、メインＣＰＵ２０およびＩＯＰ（ローカルメモリ）３０からアクセス可能なメモリ５０を含むようにしてもよい。
【００２９】
また本実施の形態の情報処理システム１０は、メインＣＰＵ２０と周辺装置６０、６２、６４、６６、６８とアクセラレータ４０、４２、４４とメモリ５０に接続されたメインバス（第１のバス）７０と、周辺装置６０、６２、６４、６６、６８とアクセラレータ４０、４２、４４とメモリに接続されたＩ／Ｏバス（第２のバス）を含むようにしてもよい。
【００３０】
画像処理アクセラレータ４０は、デジタル画像の変換処理を行う。
【００３１】
暗号化処理アクセラレータ４２は、個人情報、コンテンツデータ等の暗号化処理を行う。
【００３２】
圧縮／伸長処理アクセラレータ４４は、ファイルの圧縮/伸張処理を行う。
【００３３】
ネットワークコントローラ６０は、Eathernet、無線LANコントローラーである。
【００３４】
ＨＤＤコントローラ６２は、ATA、S-ATA、MTのコントローラーである。
【００３５】
ＵＳＢコントローラ６４は、USB/UARTコントローラーである。
【００３６】
グラフィックコントローラー６６は、グラフィックコントロールやモニター出力のためのコントローラである。
【００３７】
他のコントローラ６８は、例えばGPIOやkeybordやmause等のためのコントローラである。
【００３８】
本実施の形態のメインＣＰＵ２０は、アクセラレータ制御処理手段を含む。アクセラレータ制御処理手段は、アクセラレータ（ここでは画像処理アクセラレータ４０、暗号化処理アクセラレータ４２、圧縮／伸長処理アクセラレータ４４等）の制御をメインＣＰＵ２０が自ら行うか、周辺装置（ここでは周辺装置のローカルＣＰＵであるＩＯＰ／バスブリッジ回路３０）に行わせるかを判断するための判断手段と、メインＣＰＵ２０が自ら制御すると判断した場合には、所与のメモリ５０に格納されているアクセラレータに対する制御コマンドを自らアクセラレータに対し発行することで、アクセラレータを動作させる処理をおこない、周辺装置に行わせると判断した場合には、周辺装置に対してアクセラレータに発行する制御コマンド内容を指示する。
【００３９】
そしてアクセラレータ４０、４２、４４は、受け取った制御コマンドに対応した処理を実行する（ホストからでも、周辺装置からでも同じインターフェースで動く）制御コマンド実行部を含む。
【００４０】
ここで前記判断手段は、メインＣＰＵが例えばメモリ５０等に記憶された判断処理用プログラムを実行することでソフトウエア的に実現することができる。
【００４１】
周辺装置６０、６２、６４、６６、６８は、周辺装置の動作を制御するためのローカルＣＰＵ（ここではＩＯＰ／バスブリッジ回路３０）を含み、前記ローカルＣＰＵ３０は、メインＣＰＵ２０からの指示に基づき、所与のメモリ５０に格納されているアクセラレータ４０、４２、４４に対する制御コマンドを与えると、アクセラレータ４０、４２、４４に制御コマンドで指示された処理を実行する。
【００４２】
またメインＣＰＵ２０および前記ローカルＣＰＵ３０からアクセス可能なメモリ５０にアクセラレータ４０、４２、４４に対する制御コマンドを記憶させるようにしてもよい。そして、メインＣＰＵ２０は、周辺装置（ここではローカルＣＰＵであるＩＯＰ／バスブリッジ回路３０）に対してアクセラレータに発行する制御コマンド内容を前記メモリ５０上の制御コマンドのアドレスで指示するようにしてもよい。前記ローカルＣＰＵ（ここではＩＯＰ／バスブリッジ回路３０）は、メインＣＰＵ２０からの指示されたメモリ上のアドレスから制御コマンドを読み出して、アクセラレータ４０、４２、４４に対する制御コマンドを発行するようにしてもよい。
【００４３】
また判断手段は、周辺装置（ここではローカルＣＰＵであるＩＯＰ／バスブリッジ回路３０）に対して処理依頼の問い合わせを行い、応答結果に基づき処理依頼の可否を判断するようにしてもよい。
【００４４】
また前記判断手段は、周辺装置（ここではローカルＣＰＵであるＩＯＰ／バスブリッジ回路３０）の使用状況に基づき処理依頼の可否を判断するようにしてもよい。
【００４５】
またメインＣＰＵが参照可能なエリア（ここでは例えばメモリ５０）に周辺装置６０、６２、６４、６６、６８の稼動状況または、処理依頼の受付可能か否かを示すレジスタを有し、ローカルＣＰＵ（ここではＩＯＰ／バスブリッジ回路３０）は、周辺装置６０、６２、６４、６６、６８の稼動状況に基づき前記レジスタを更新し、メインＣＰＵ２０は、レジスタに基づき処理依頼の可否を判断するようにしてもよい。
【００４６】
またメインＣＰＵ２０がアクセラレータ４０、４２、４４の制御を行う場合にはメインバス（第１のバス）を使用し、ローカルＣＰＵ（ここではＩＯＰ／バスブリッジ回路３０）がアクセラレータ４０、４２、４４の制御を行う場合にはＩ／Ｏバス（第２のバス）を使用するようにしてもよい。
【００４７】
図２は比較例の情報処理システムについて説明するための図である。
【００４８】
比較例の情報処理システム１０’は、メインＣＰＵ２０’アクセラレータ（ここでは画像処理アクセラレータ４０’、暗号化処理アクセラレータ４２’、圧縮／伸長処理アクセラレータ４４’等）、周辺装置（ここではネットワークコントローラ６０’、ＨＤＤコントローラ６２’、ＵＳＢコントローラ６４’、グラフィックコントローラ６６’、その他のコントローラ６８’等を含む）を含む。
【００４９】
また比較例の形態の情報処理システム１０’は、ＩＯＰ(I/O-Processor)／バスブリッジ回路３０’を含む。ＩＯＰ(I/O-Processor)／バスブリッジ回路３０’は、ＩＯＰ(I/O-Processor)とバスブリッジ回路を１つのブロックにまとめたもので、別々のブロックとして記載した場合との構成上の差異はない。ここでＩＯＰ(I/O-Processor)は、元々は周辺装置６０’、６２’、６４’、６６’内に存在するローカルＣＰＵをＩＯＰ(I/O-Processor)として独立して記載したもので、周辺装置６０’、６２’、６４’、６６’内に存在するローカルＣＰＵであってもよい。
【００５０】
比較例の情報処理システム１０’では、アクセラレータ４０’、４２’、４４’は、メインバス（第１のバス）のみに接続されている。
【００５１】
また比較例の情報処理システム１０’は、メインＣＰＵ２０からはアクセス可能であるが、ＩＯＰ（ローカルＣＰＵ）３０’からはアクセス不可能なメモリ５０’を含む。
【００５２】
これに対し本実施の形態では、ＩＯＰ（ローカルＣＰＵ）３０が処理を実行する際に、メインバス（第１のバス）７０を使用しないように、アクセラレータ４０、４２、４４とメインメモリ５０にＩＯバス（第２のバス）８０からのインターフェイス４１，４３、４５、５４を設けている。したがってメインメモリ５０に有って、ＩＯＰ（ローカルメモリ）３０がそのまま使用可能なものは、メインＣＰＵ２０から格納先の指定をもらうことのみで（データ自体の転送はしなくてよい形式）で、後述するコマンドリスト（アクセラレータが実行するＡＰＩ）の受け渡しを行うことができる。
【００５３】
図２のアクセラレータ４０’、４２’、４４’は元々ＡＰＩを用意しているが、通常はドライバーレベルのソフトウエアが存在し、上位プログラムが発したＡＰＩで定義したコードをアクセラレーターのＨＷ制御に落として実行している。この為比較例では、ＡＰＩを実行するＣＰＵをメインＣＰＵ以外に変える場合、例えばＩＯＰ（ローカルＣＰＵ）３０’に変える場合には、変える側のＣＰＵ（ここではＩＯＰ（ローカルＣＰＵ）３０’）にドライバーがインストールしてある必要がある。  これに対し本実施の形態では、ドライバーが存在しなくても、処理を記述した一塊のコードをデータとして扱うので（図１４参照）、ＩＯＰ（ローカルＣＰＵ）３０は、アクセラレータの例えばコマンドポートに単にデータを書き込むことで一連の処理を実行させることができる。
【００５４】
すなわち上記ＡＰＩとドライバーの組合わせで言えば、アクセラレーター４０、４２、４４側が最初からドライバー機能を有していて、データとしてＡＰＩのコードを書き込めば後の処理はアクセラレーター内で完結することができるように構成する。
【００５５】
図３はメインＣＰＵがローカルＣＰＵにアクセラレータの制御を依頼する処理の一例について説明するための図である。
【００５６】
ここでは、ホストＣＰＵ１２０、メモリ１５０、周辺装置１６０、アクセラレータ１４０は、システムバス１７０に接続され、周辺装置１６０とアクセラレータ１４０はシステムバスを介さずにやり取り可能に構成されている。周辺装置１６０は周辺装置制御用のローカルＣＰＵ１３０とローカルメモリ１３２を含む。
【００５７】
メインＣＰＵは、アクセラレータの制御をローカルＣＰＵに依頼するか否かを判断し、ローカルＣＰＵに依頼すると判断した場合には、ローカルＣＰＵに対してアクセラレータに与える制御コマンド内容を指示する。例えばメインＣＰＵに数値計算処理がある場合等にアクセラレータの制御をローカルＣＰＵに依頼するようにしてもよい。
【００５８】
メインＣＰＵがアクセラレータの一連の処理のためのコマンドと必要なデータまたはデータのあるエリアの指定情報をローカルメモリ転送して、アクセラレータの制御を依頼する（Ｓ１参照）。なお例えばメインＣＰＵとローカルＣＰＵからともにアクセス可能なメモリに、コマンドと必要なデータまたはデータのあるエリアの指定情報をおくことができれば、ローカルＣＰＵに対してメモリ上のアドレスを指定するようにしてもよい。
【００５９】
ローカルＣＰＵ１３０は、メインＣＰＵからの指示に基づき、所与のメモリに格納されているアクセラレータに対する制御コマンドをアクセラレータに与える。ここではローカルＣＰＵは、ローカルメモリ１３２に転送されたコマンドと必要なデータまたはデータエリアの指示情報からアクセラレータに指示を与える
（Ｓ２参照）。
【００６０】
アクセラレータは、与えれた制御コマンドに対応した処理を実行する。そして処理終了信号、処理結果をローカルＣＰＵに返す（Ｓ３参照）。
【００６１】
ローカルＣＰＵ１３０はすべてのコマンドが実行し終わると、終了と処理結果または処理結果の格納エリア情報をＣＰＵに返す（Ｓ４参照）。
【００６２】
図４、図５はメインＣＰＵの処理の流れについて説明するための図である。
【００６３】
図４はグラフィックアクセラレータの制御と暗号化処理アクセラレータの制御はメインＣＰＵが行う場合のフローチャート図である。
【００６４】
まず、ブロックデータの読み出しを行う（ステップＳ１０）。
【００６５】
次に画像処理アクセラレータ制御処理を行う（ステップＳ２０）。本例は画像処理アクセラレータをメインＣＰＵが自ら制御すると判断した場合であり、メモリに格納されている画像処理アクセラレータに対する制御コマンドを自ら画像処理アクセラレータに対し発行することで、画像処理アクセラレータを動作させる処理をおこなう。画像処理アクセラレータの処理の具体的な処理の内容は図７で説明する。
【００６６】
次に第１の機能を実現するための処理としては画像処理後の画像データの画像表示を行う（ステップＳ５０）。画像表示は、ＩＯバス上のグラフィックコントローラが実行する。画像表示の具体的な処理の内容は図１１で説明する。
【００６７】
次に第２の機能を実現するための処理としてはまず暗号化処理（ステップＳ３０）を行う。本例は暗号化処理アクセラレータをメインＣＰＵが自ら制御すると判断した場合であり、メモリに格納されている暗号化処理アクセラレータに対する制御コマンドを自ら暗号化処理アクセラレータに対し発行することで、暗号化処理アクセラレータを動作させる処理をおこなう。暗号化処理アクセラレータの処理の具体的な処理の内容は図６で説明する。
【００６８】
次にデータ送信処理（ステップＳ４０）を行う。データ送信処理の具体的な処理の内容は図９で説明する。
【００６９】
図５はグラフィックアクセラレータの制御と暗号化処理アクセラレータの制御をメインＣＰＵがローカルＣＰＵに指示する場合のフローチャート図である。
【００７０】
図５では数値計算が入りメインＣＰＵの負荷が重くなり、グラフィックアクセラレータの制御と暗号化処理アクセラレータの制御（ステップＳ１２０、Ｓ１３０の処理）をＩＯＰ（ローカルＣＰＵ）に指示するという設定である。
【００７１】
一般に数値計算は、気象解析用、建築物の構造解析用、建築物等の破壊シミュレーション等いろいろあり、プログラムで実行する必要があるので、ＩＯＰ（ローカルＣＰＵ）には数値計算を依頼できないないという設定である。
【００７２】
まず、ブロックデータの読み出しを行う（ステップＳ１１０）。
【００７３】
ここでは、ステップＳ１５０〜Ｓ１７０の処理がはいるので、数値計算が入りメインＣＰＵの負荷が重くなるため、アクセラレータの制御を周辺装置に行わせると判断する。
【００７４】
そこでまず画像処理アクセラレータ制御処理を行う（ステップＳ１２０）。本例は画像処理アクセラレータの制御を周辺装置に行わせると判断した場合であり、周辺装置（ここではＩＯＰ（ローカルＣＰＵ））に対して画像処理アクセラレータに発行する制御コマンド内容を指示する。制御コマンドの内容の指示は、例えば画像処理アクセラレータに対する制御コマンドが格納されたメモリのアドレスを指示することでも行うことができる。
【００７５】
ＩＯＰ（ローカルＣＰＵ）は、メインＣＰＵからの指示に基づき、所与のメモリに格納されている画像処理アクセラレータに対する制御コマンドを発行することで、画像処理アクセラレータを動作させる処理をおこなう。画像処理アクセラレータの処理の具体的な処理の内容は図７で説明する。
【００７６】
次に第２の機能を実現するための処理としてはまず暗号化処理（ステップＳ１３０）を行う。本例は暗号化処理アクセラレータの制御を周辺装置に行わせると判断した場合であり、周辺装置（ここではＩＯＰ（ローカルＣＰＵ））に対して暗号化処理アクセラレータに発行する制御コマンド内容を指示する。制御コマンドの内容の指示は、例えば画像処理アクセラレータに対する制御コマンドが格納されたメモリのアドレスを指示することでも行うことができる。
【００７７】
ＩＯＰ（ローカルＣＰＵ）は、メインＣＰＵからの指示に基づき、所与のメモリに格納されている暗号化処理アクセラレータに対する制御コマンドを発行することで、暗号化処理アクセラレータを動作させる処理をおこなう。暗号化処理処理アクセラレータの処理の具体的な処理の内容は図８で説明する。
【００７８】
次にデータ送信処理（ステップＳ１４０）を行う。データ送信処理の具体的な処理の内容は図９で説明する。
【００７９】
また図５ではスーパーインポーズ（第３の機能）を実現するためにステップＳ１５０〜Ｓ１６０の処理を行い、画像表示（第１の機能）の為のデータを生成するためにステップＳ１７０〜Ｓ１８０の処理を行う。
【００８０】
まず数値データ抽出処理を行う（ステップＳ１５０）。数値データ抽出処理の具体的な内容は図１０に示す。これはプログラムで実行するためメインＣＰＵが行う。
【００８１】
次に数値計算処理を行う（ステップＳ１６０）。数値計算処理の具体的な内容は図１１に示す。これはプログラムで実行するためメインＣＰＵが行う。
【００８２】
次に画像合成処理を行う（ステップＳ１７０）。画像合成はＩＯバス上のグラフィックコントローラが実行する。画像表示の具体的な処理の内容は図１２で説明する。
【００８３】
次に第１の機能を実現するための処理としては画像処理後の画像データの画像表示を行う（ステップＳ１８０）。画像表示は、ＩＯバス上のグラフィックコントローラが実行する。画像表示の具体的な処理の内容は図１３で説明する。
【００８４】
図６は、ブロックデータの読み出し処理について説明するためのフローチャート図である。
【００８５】
まずネットワークコントローラーのチャネルを指定し、サーバーからのデータ転送をＩＯＰに要求（ステップＳ２１０）。
【００８６】
データが終了するまで、ＩＯＰがネットワークコントローラーを制御し、データをサーバーから読出しメインメモリに格納する（ステップＳ２２０）。
【００８７】
データが終了するとＩＯＰはメインＣＰＵに割込みをかける（ステップＳ２４０）。
【００８８】
ＣＰＵは、データ転送終了処理を行う（ステップＳ２５０）。
【００８９】
図７は、画像処理アクセラレータの処理について説明するためのフローチャート図である。
【００９０】
画像処理アクセラレータは、ＤＭＡＣに対しての指示、ジオメトリエンジンへの指示、レンダリングエンジンに対しての指示、ピクセルエンジンに対しての指示等の処理を行う。
【００９１】
まず３Ｄ画像生成指示コマンド設定を行う  （ステップＳ３１０）。ここでジオメトリエンジン、レンダリングエンジン、ピクセルエンジンに対して処理の指示を行う。
【００９２】
次に元データの格納先を指定する（ステップＳ３２０）。
【００９３】
次に処理データの格納先を指定する  （ステップＳ３３０）。
【００９４】
次に終了条件の指定を行う（ステップＳ３４０）。終了条件の指定は、データサイズにより行うようにしてもよいし、制限時間等により行うようにしてもよい。
【００９５】
次に処理開始指示を行う（ステップＳ３５０）。
【００９６】
そして終了条件が成立するまで、視点情報の送信を行う（ステップＳ３６０）。ここで視点情報はジオメトリエンジンの入力となる。なお視点情報とは、例えば画像を見ながらマウス等の操作で指示される情報である。
【００９７】
終了条件が成立すると、ＣＰＵは終了処理を行う（ステップＳ３７０、Ｓ３８０）。
【００９８】
図８は、暗号化処理について説明するためのフローチャート図である。
【００９９】
暗号化処理は、処理開始時に入力する鍵により行われる。データのブロック単位で暗号化するものとする。
【０１００】
まず鍵情報の設定を行う（ステップＳ４１０）。
【０１０１】
次にＤＭＡＣの設定（データ入力エリアおよびデータ出力エリアの指定）を行う（ステップＳ４２０）。
【０１０２】
次に暗号処理開始許可の指示を行う  （ステップＳ４３０）。
【０１０３】
次にＤＭＡＣを起動する（ステップＳ４４０）。
【０１０４】
そして暗号化処理アクセラレータが全データについてブロック単位で暗号化処理を行うと、ＣＰＵは終了処理を行う（ステップＳ４５０、Ｓ４７０）。
【０１０５】
図９は、データ送信処理について説明するためのフローチャート図である。
【０１０６】
まずネットワークコントローラーのチャネルを指定し、サーバーへのデータ転送を指示する（ステップＳ５１０）。
【０１０７】
データが終了するまで、ＩＯＰがネットワークコントローラーを制御し、データをメインメモリから読出しサーバーに転送する（ステップＳ５２０、Ｓ５３０）。  データが終了すると、ＣＰＵに割込みをかける（ステップＳ５４０）。
【０１０８】
ＣＰＵはデータ転送終了処理を行う（ステップＳ５５０）。
【０１０９】
図１０は、数値データ抽出処理について説明するためのフローチャート図である。
【０１１０】
データが終了するまで以下の処理を繰り返し行う。
【０１１１】
まず元データの読出しを行う（ステップＳ６１０）。
【０１１２】
次に数値データの検出を行う（ステップＳ６２０）。
【０１１３】
データのタイムスタンプと数値を所定のメモリエリアに書き込む（ステップＳ６３０）。
【０１１４】
図１１は、数値計算処理について説明するためのフローチャート図である。
【０１１５】
抽出データが終了するまで、以下の処理を繰り返す。
【０１１６】
まず抽出データの組を読み出す（ステップＳ７１０）。
【０１１７】
次にデータを元に計算する（  ステップＳ７２０）。
【０１１８】
次に対応させるタイムスタンプと共に計算結果をメモリに格納（ステップＳ７３０）。
【０１１９】
図１２は、画像合成・画像表示処理について説明するためのフローチャート図である。
【０１２０】
この処理はＩＯバスに接続されたグラフィックコントローラが実行する事になる。データはグラフィックアクセラレータから自動的に投げられ、数値データは、ＣＰＵが書き込んでくる。
【０１２１】
処理が終了するまで以下の処理を繰り返す。
【０１２２】
まずグラフィックアクセラレータからの画像データの取込を行う（ステップＳ８１０）。
【０１２３】
次に数値データの取込を行う（ステップＳ８２０）。
【０１２４】
タイムスタンプが一致したら数値データを画像にインポーズする（ステップＳ８３０、Ｓ８４０）。
【０１２５】
画像データをフレームメモリに格納する（ステップＳ８５０）。
【０１２６】
図１３は、画像表示処理についてについて説明するためのフローチャート図である。
【０１２７】
まずＤＭＡＣ設定を行う（ステップＳ９１０）。
【０１２８】
次に転送開始指示を行う（ステップＳ９２０）。
そしてデータが終了するまでフレームメモリのデータ転送処理を行う（ステップＳ９３０、Ｓ９４０）。
【０１２９】
処理が終了したらＣＰＵへ終了割り込みをかける（ステップＳ９４０）。
【０１３０】
図１４はメインメモリ上のＡＰＩ（制御コマンド）の一例である。
【０１３１】
メインメモリ２００はメインＣＰＵおよびローカルＣＰＵ（ここではＩＯＰ）からアクセス可能で、アクセラレータに対する制御コマンドが記憶されている。
【０１３２】
アドレス２２０（0000_1000_0000_1000）から始まるコマンド格納エリア２１０には、２３０に示すような画像処理アクセラレータに与える制御コマンド（ＡＰＩ）が記憶されている。
【０１３３】
前記メインＣＰＵは、アクセラレータの制御を周辺装置に行わせると判断した場合には、周辺装置に対してアクセラレータに発行する制御コマンド内容を前記メモリ上の制御コマンドのアドレスで指示し、周辺装置の前記ローカルＣＰＵは、メインＣＰＵからの指示されたメモリ上のアドレスから制御コマンドを読み出して、アクセラレータに対する制御コマンドを発行する。
【０１３４】
数値計算の負荷が掛かっていない場合は、上記コマンド群はメインＣＰＵによって実行される。メインＣＰＵは、数値計算の指示があると上記コマンドによる指示をローカルＣＰＵ（ここではＩＯＰ）に任せる為に、対象となるコマンド格納アドレスをローカルＣＰＵ（ここではＩＯＰ）に伝える。ここではコマンド格納エリアの先頭アドレス２２０を伝える。
【０１３５】
ローカルＣＰＵ（ここではＩＯＰ）、メインＣＰＵからの開始指示で、上記アドレスからコマンドを読み出す。
【０１３６】
最初のデータ２４０は、制御相手を識別するコードであり、ビット３１〜０の８０００（２４２参照）は制御相手が画像処理アクセラレータであることを示す。
【０１３７】
ローカルＣＰＵ（ここではＩＯＰ）は、次のアドレスからコマンドを読出し、ビット63〜48（２４４参照）が゛ＣＣＣＣ゛でない場合は、そのデータをそのまま画像処理アクセラレータのコマンドポートに書込みを行う事で動作モードの設定が可能となる(設定が可能となるように予め作っておく)。
【０１３８】
ローカルＣＰＵ（ここではＩＯＰ）は、゛ＣＣＣＣ゛を検出すると（２５０参照）、対象が現在コマンド実行中のものであれば、次のコード（２６０参照）をコマンドポートに書きつづける。このデータは逐次更新されるものとする。この状態で画像処理アクセラレータからの終了割込みを待つ。
【０１３９】
終了割込み発生後、次のコマンドエリアのデータを読出し（２７０参照）、再び゛ＣＣＣＣ゛があるので付加処理が画像処理アクセラレータにある事を認識し、次のコード（２８０参照）を読み出す。
【０１４０】
そしてローカルＣＰＵ（ここではＩＯＰ）は、(ｌ）から(p)のデータを画像処理アクセラレータのコマンドポートに書き込む。
【０１４１】
次に(q)を読出し、コマンド終了を認識すると、画像処理アクセラレータからの終了割込みを認識して、メインＣＰＵに割込みをかけ、終了を通知する。
【０１４２】
メインＣＰＵのみで実行する場合には並列して処理するタスクの切り替えも煩雑に行われるが、本発明によればローカルＣＰＵに処理を任せることでメインＣＰＵは終了割り込みのみの認識ですむことからＯＳのタスク切り替えに伴う処理のオーバーヘッドを低減する効果がある。
【０１４３】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【図面の簡単な説明】
【０１４４】
【図１】本実施の形態の情報処理システムについて説明するための図。
【図２】比較例の情報処理システムについて説明するための図。
【図３】メインＣＰＵがローカルＣＰＵにアクセラレータの制御を依頼する処理の一例について説明するための図。
【図４】グラフィックアクセラレータの制御と暗号化処理アクセラレータの制御をメインＣＰＵが行う場合のフローチャート図。
【図５】グラフィックアクセラレータの制御と暗号化処理アクセラレータの制御をメインＣＰＵがローカルＣＰＵに指示する場合のフローチャート図。
【図６】ブロックデータの読み出し処理について説明するためのフローチャート図。
【図７】画像処理アクセラレータの処理について説明するためのフローチャート図。
【図８】暗号化処理について説明するためのフローチャート図。
【図９】データ送信処理について説明するためのフローチャート図。
【図１０】数値データ抽出処理について説明するためのフローチャート図。
【図１１】数計算処理について説明するためのフローチャート図。
【図１２】画像合成・画像表示処理について説明するためのフローチャート図。
【図１３】画像表示処理についてについて説明するためのフローチャート図。
【図１４】メインメモリ上のＡＰＩ（制御コマンド）の一例である。
【符号の説明】
【０１４５】
１０、情報処理システム、２０  メインＣＰＵ、３０  ＩＯＰ／バスブリッジ回路、４０  画像処理アクセラレータ、４２  暗号化処理アクセラレータ、４４  圧縮／伸長処理アクセラレータ、５０  メモリ、６０  ネットワークコントローラ、６２  ＨＤＤコントローラ、６４  ＵＳＢコントローラ、６６  グラフィックコントローラ、６８  その他のコントローラ、７０  メインバス（第１のバス）８０  Ｉ／Ｏバス（第２のバス）、９０  ローカルメモリ
【図１】
2006344153.tif 000003
【図２】
2006344153.tif 000004
【図３】
2006344153.tif 000005
【図４】
2006344153.tif 000006
【図５】
2006344153.tif 000007
【図６】
2006344153.tif 000008
【図７】
2006344153.tif 000009
【図８】
2006344153.tif 000010
【図９】
2006344153.tif 000011
【図１０】
2006344153.tif 000012
【図１１】
2006344153.tif 000013
【図１２】
2006344153.tif 000014
【図１３】
2006344153.tif 000015
【図１４】
2006344153.tif 000016