JP2009070265A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2009070265A
JP2009070265A JP2007239777A JP2007239777A JP2009070265A JP 2009070265 A JP2009070265 A JP 2009070265A JP 2007239777 A JP2007239777 A JP 2007239777A JP 2007239777 A JP2007239777 A JP 2007239777A JP 2009070265 A JP2009070265 A JP 2009070265A
Authority
JP
Japan
Prior art keywords
information
module
expansion
processing apparatus
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007239777A
Other languages
English (en)
Inventor
Hiroshi Maekawa
博史 前川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2007239777A priority Critical patent/JP2009070265A/ja
Publication of JP2009070265A publication Critical patent/JP2009070265A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】主制御手段と主制御手段でないものとが連携しながらアプリケーションプログラムを効率的に実行することができる情報処理装置を提供すること。
【解決手段】アプリケーションプログラムを構成するソフトウエアモジュールを実行するCPU22、および、アプリケーションプログラムを構成するハードウエアモジュールを実行する拡張手段10を複数有する情報処理装置100において、拡張手段10の利用可能か否かを表す情報を含む拡張手段10の情報を管理する情報管理手段23と、情報管理手段23が管理する拡張手段10の情報に基づいて、ハードウエアモジュールに利用可能な拡張手段10を割り当てながらハードウエアモジュールおよびソフトウエアモジュールを実行するためのスケジュールを決定するスケジュール管理手段24とを備えて構成する。
【選択図】図1

Description

本発明は、主制御手段および主制御手段でないものを利用して情報を処理する情報処理装置に関する。
従来の情報処理装置としては、アプリケーションプログラムを構成する部分的な処理を、CPUで実行するソフトウエアモジュールおよびプログラマブル論理回路で実行するハードウエアモジュールの2種類のモジュールで実行するものとし、2種類のモジュールのうち処理速度が速い方を選択して実行するものが知られている(例えば、特許文献1参照)。
特許文献1では、ハードウエアモジュールで実行すれば処理速度は速いが、回路情報に基づいてプログラマブル論理回路をコンフィギュレーション(回路の再構成)する時間がかかるため、情報処理装置がアプリケーションプログラムを実行する際、総合的な処理速度が低下してしまうことを考慮し、情報処理装置は、まずはソフトウエアモジュールでの実行を行い、回路情報がプログラマブル論理回路に蓄積された後などコンフィギュレーションに時間がかからなくなった時点で、ハードウエアモジュールを利用する機会を増やしていくことで、アプリケーションプログラムを高速に処理するものである。
また、従来の情報処理装置としては、デジタル画像データに対し画像処理を行う複数個のプログラマブルな画像処理プロセッサを搭載し、画像処理プロセッサ同士が画像処理プログラムを交換し合い画像処理の機能を共有することで回路規模の増大を抑えつつ、画像処理プロセッサの稼働率を向上できるものが知られている(例えば、特許文献2参照)。
特開平11−232081号公報 特開2004−110202号公報
しかしながら、従来の情報処理装置では、複数個のプログラマブル論理回路で処理する場合で、プログラマブル論理回路の状態がコンフィギュレーション中のものが選択されてしまうと、コンフィギュレーションが終了するまで処理が停止してしまい、必ずしも処理の稼働率が向上するわけではないという課題が残されていた。
本発明は、上述した課題を解決するためになされたものであり、主制御手段と主制御手段でないものとが連携しながらアプリケーションプログラムを効率的に実行することができる情報処理装置を提供することを目的とする。
本発明の情報処理装置は、アプリケーションプログラムを構成するソフトウエアモジュールを実行する主制御手段を有し、前記アプリケーションプログラムを構成するハードウエアモジュールを実行する拡張手段を複数有する情報処理装置において、前記拡張手段の利用が可能か否かを表す情報を含む前記拡張手段の情報を管理する情報管理手段と、前記情報管理手段が管理する前記拡張手段の情報に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てながら前記ハードウエアモジュールおよび前記ソフトウエアモジュールを実行するためのスケジュールを決定するスケジュール管理手段とを備えた構成を有している。
この構成により、拡張手段の静的情報および動的情報に基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるスケジュールを決定するため、拡張手段が利用不可能でアプリケーションプログラムの実行が滞ることなく、主制御手段と拡張手段とが連携しながらアプリケーションプログラムを効率的に実行することができる。
また、本発明の情報処理装置は、前記拡張手段が、前記ハードウエアモジュールを実行するプログラマブル論理回路を有し、前記スケジュール管理手段が、前記プログラマブル論理回路の実装条件に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、プログラマブル論理回路の実装条件に基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、ハードウエアモジュールにとって適切な拡張手段を割り当てることができ、例えば、処理負荷の軽いハードウエアモジュールに高性能な拡張手段を優先的に割り当てることで、後に実行される処理に影響することがない。
また、本発明の情報処理装置は、前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールまたは前記ソフトウエアモジュールで実行できる処理と、前記ハードウエアモジュールでのみ実行できる処理とがあった場合、前記スケジュール管理手段が、前記ハードウエアモジュールでのみ実行できる処理を優先して、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、ハードウエアモジュールでのみ実行できる処理を優先して、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、ハードウエアモジュールの数に対し拡張手段が少ない場合に、ソフトウエアモジュールでの代用が可能なハードモジュールを拡張手段に割り当てたとき、利用可能な拡張手段が無くなってハードモジュールしかできない処理の割り当てができなくなり、拡張手段の処理が終了して新たに利用可能になるまでアプリケーションプログラムの処理を停止することがない。
また、本発明の情報処理装置は、前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールで実行できる処理が複数あった場合、前記スケジュール管理手段が、前記ハードウエアモジュールで実行される処理が連続して行われるように、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、ハードウエアモジュールで実行される処理が連続するように、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、主制御手段と拡張手段との間の処理データ転送が頻繁に発生することを防ぐことができる。
また、本発明の情報処理装置は、前記アプリケーションプログラムには、前記ハードウエアモジュールまたは前記ソフトウエアモジュールを表すモジュール同士のデータ転送の関係を表すデータ転送リストが含まれており、前記スケジュール管理手段が、前記データ転送リストに基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てる構成を有している。
この構成により、モジュール同士のデータ転送の関係を表すデータ転送リストに基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段それぞれを割り当てるため、拡張手段同士の処理データの受け渡しが可能となるハードウエアモジュールの割り当ての判断が容易に行える。
また、本発明の情報処理装置は、前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、前記通信手段が、StarFabricに準拠したものである構成を有している。
この構成により、拡張手段を離れた場所に設置したり、拡張手段の接続可能数をPCIに比べ増やしたりすることができる。
また、本発明の情報処理装置は、前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、前記通信手段が、ASIに準拠したものである構成を有している。
この構成により、拡張手段を離れた場所に設置したり、拡張手段の接続可能数をPCIeに比べ増やしたりすることができる。
また、本発明の情報処理装置は、前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリと、前記プログラマブル論理回路にコンフィギュレーション回路を有し、前記プログラマブル論理回路のコンフィギュレーション中に、前記ワークメモリおよび前記コンフィギュレーション回路が停止しない構成を有している。
この構成により、コンフィギュレーション中に、ワークメモリおよびコンフィギュレーション回路が停止しないため、コンフィギュレーション中でもワークメモリへのアクセスが可能となり、プログラマブル論理回路のコンフィギュレーションをPCIバスなどの汎用通信路で行える。
また、本発明の情報処理装置は、前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリを有し、前記ワークメモリが、他の前記拡張手段から出力されたデータを書き込みまたは読み出し可能である構成を有している。
この構成により、ワークメモリが、他の拡張手段から出力されたデータを書き込みまたは読み出し可能であるため、1つの拡張手段に搭載されているワークメモリでは不足する処理データに対し、複数の拡張手段のワークメモリを使用することができ、簡単にメモリ増設が行える。
以上のように本発明は、主制御手段と主制御手段でないものとが連携しながらアプリケーションプログラムを効率的に実行することができる情報処理装置を提供することを目的とする。
以下、本発明の実施の形態に係る情報処理装置について、図面を用いて説明する。
(本発明の第1の実施の形態)
図1は、本発明の第1の実施の形態に係る情報処理装置のブロック図である。情報処理装置100は、複数の拡張手段10およびホスト20によって構成されている。なお、拡張手段10の各々を区別する場合、拡張手段10A、拡張手段10B、拡張手段10Cとして記載し、区別しない場合、拡張手段10として記載する。
拡張手段10は、プログラマブル論理回路11、ワークメモリ12、およびメモリ制御手段13によって構成される。場合によっては、拡張手段10は、論理回路やメモリなどに関する情報を表した回路情報を格納するローカルメモリ(図1には図示していない)を加えて構成される。
プログラマブル論理回路11は、回路構成が自由に再構成可能な回路である。プログラマブル論理回路11としては、例えば、FPGA(Field Programable Gate Array)が用いられるが、FPGAは、回路情報をコンフィギュレーションすることで、内部の回路の結線を自由に再構成されるため、必要に応じた機能に変更することができる。
なお、回路情報をプログラマブル論理回路が読み込み再構成することをコンフィギュレーションと言い、ローカルメモリが回路情報を格納することをロードと呼んでいる。
FPGAは、自由度を高めるための冗長性があり、ユーザ回路としての集積度がASIC(Application Specific Integrated Circuit)には及ばないが、ソフトウエアのような書き換え自由度と、ASICに近い高速処理が実現できる特徴がある。FPGAは書き換え速度が遅いが、プログラマブル論理回路の中では比較的大規模な集積回路を搭載することができるため、膨大な開発費がかかり開発リスクの高いASICのための事前回路検証や、少ロットの製品向けで、プログラマブル論理回路の利用が増えている。
ワークメモリ12は、プログラマブル論理回路11で処理する処理データを一時的に格納するようになっている。例えば、ワークメモリ12は、一般的に大容量のSDRAMや、高速アクセスが可能なSRAMなどでよい。また、プログラマブル論理回路11に内蔵されていてもよい。
メモリ制御手段13は、拡張手段10が処理する処理データを他の拡張手段10またはホスト20に転送するようになっている。
また、拡張手段10は、プログラマブル論理回路11にコンフィギュレーション回路を有し、さらにホスト20と通信するインタフェース回路を備え、プログラマブル論理回路11のコンフィギュレーション中に、インタフェース回路(図示していない)、ワークメモリ12、およびコンフィギュレーション回路が停止しない構成としてもよい。
ホスト20は、メインメモリ21、CPU22、情報管理手段23、スケジュール管理手段24、選択手段25、およびメモリ制御手段26によって構成されている。
メインメモリ21は、アプリケーションプログラムを記憶するようになっている。CPU22は、メインメモリ21に記憶されたアプリケーションプログラムを実行するようになっている。
情報管理手段23は、拡張手段10の静的情報および動的情報(拡張手段10の情報)を取得し管理するようになっている。
スケジュール管理手段24は、情報管理手段23が管理する拡張手段10の情報と、アプリケーションプログラムから取得した情報とを解析して、利用可能な拡張手段10を決定し、選択手段25およびCPU22に動作指示を出すようになっている。
選択手段25は、スケジュール管理手段24からの指示によって利用可能な拡張手段10を選択し、選択した拡張手段10にCPU22からの指示や処理データを転送するとともに、プログラマブル論理回路11の制御やコンフィギュレーションを行うようになっている。
メモリ制御手段26は、CPU22からの指示によってメインメモリ21と特定の拡張手段10に搭載されたワークメモリ12間の処理データをCPU22の介在無しに転送を行うようになっている。
図2は、図1で説明した情報処理装置のハードウエア構成の一例を示す図である。
図2に示すように、ホスト20を構成する部材は、CPU22と、SRAM(Static Random Access Memory)などからなるメインメモリ21と、ハードディスク(HDD)などの大容量記憶媒体27と、図1で説明したホスト20を構成する手段として機能するチップセット28である。
チップセット28は、拡張手段10や入出力への通信経路となるPCI(Peripheral Component Interconnect)バスやPCI Express(PCIe)インタフェースを介して他の機器と通信することができる。また、チップセット28には、プログラマブル論理回路11が搭載された拡張手段10や、通信インタフェース30が接続されている。チップセット28には、DMAコントローラや、PCIバスを拡張するコントローラであるPCIブリッジなどの機能が含まれている。
通信インタフェース30には、インターネットやUSBなど、外部装置への接続が可能となっており、外部装置として記憶装置31や、図示していないファイルサーバやアプリケーションサーバなどと接続できる。なお、通信インタフェース30は、必ずしも図のようにPCIバスまたはPCIeバスに接続されている必要はなく、チップセット28に直接接続されていて、ホスト20に含まれるように構成してもよい。
アプリケーションプログラムやプログラマブル論理回路11の回路情報などは、通常大容量記憶媒体27に格納されているが、通信インタフェース30を通じてアプリケーションサーバ等からダウンロードされることも可能である。また、外部装置は、通信インタフェース30を通じて、アプリケーションプログラムの実行をホスト20に指示すると共に、アプリケーションプログラムの実行に必要な処理データをホスト20に転送することもできる。
以上のように構成された本発明の第1の実施の形態に係る情報処理装置の処理について説明する。図3は、本発明の第1の実施の形態に係る情報処理装置の情報管理手段の処理を示すフローチャートである。
まず、情報管理手段23に電源が投入されると処理が開始され(ステップS1)、情報管理手段23は、拡張手段10が情報処理装置100に新規に追加されたものか否かを判定する(ステップS2)。拡張手段10が新規に追加された場合、情報管理手段23は、全ての拡張手段10の静的情報を取得して保存する(ステップS3)。静的情報は、拡張手段10の動作状況に関するものではなく、拡張手段10の性能に関する情報である。また、ステップS2で、情報管理手段23は、電源が投入直後などの初期化処理を行っているかを判定し、初期化処理を行っている場合、ステップS3の処理を行う。
次に、情報管理手段23は、前回の動的情報を取得した時点から一定時間tが経過したか否かを判定し(ステップS4)、一定時間tが経過した場合、全ての拡張手段10の動的情報を取得して保存する(ステップS5)。動的情報は、アプリケーションプログラムの実行に伴って拡張手段10が動作することで動的に変化する情報である。
以上の説明では、情報管理手段23が拡張手段10から静的情報や動的情報を取得するとしたが、逆に拡張手段10が主体となって定期的に情報管理手段23に静的情報や動的情報を発信したり、プログラマブル論理回路11やワークメモリ12の動作開始や終了などのイベント毎に、情報管理手段23に更新した静的情報や動的情報を出力してもよい。
次に、CPU22またはスケジュール管理手段24から静的情報や動的情報の提供を求められていた場合には(ステップS6)、情報管理手段23は、保存している最新の静的情報や動的情報をCPU22またはスケジュール管理手段24に提供する(ステップS7)。以降、情報管理手段23はステップS2〜ステップS7を繰り返す。
ここで、静的情報および動的情報の例を図4に示す。静的情報としては、拡張手段10を特定する"ID"と、搭載されているプログラマブル論理回路11のタイプを示す"タイプ"と、プログラマブル論理回路11の回路規模を示す"回路規模"と、プログラマブル論理回路11の処理能力を示す"処理能力"と、ワークメモリ12の容量を示す"メモリ"などがある。以下に詳細に説明する。
"ID"では、拡張手段10を個々に特定できる重複しない番号または名前が表現されている。"ID"は、個々の拡張手段10に割り振られているシリアルナンバーでも構わないし、電源投入後やリセット時の初期化時や、拡張手段10が新しく追加された時に、自動的に割り付けられた番号でも構わない。
"タイプ"には、FPGAなどのプログラマブル論理回路11のカテゴリが設定されている。それぞれのプログラマブル論理回路11としては、同じカテゴリの回路を使用しなくてもよい。カテゴリが異なれば、回路の内部構成、回路情報のフォーマット、処理言語などがそれぞれ異なる。さらに、プログラマブル論理回路11として使用する製品によっても、ピン配置などコンパイル条件が異なるため、プログラマブル論理回路11として、それぞれカテゴリの異なる回路を使用しても、それぞれのプログラマブル論理回路11で共用可能な回路であることが望ましい。"タイプ"に設定されるカテゴリの名称としては、例えば、プログラマブル論理回路11に使用する回路の形名を登録しておく。プログラマブル論理回路11に使用する製品が数種程度しかなければ、具体的なピン数や速度オプションなど細かい情報までを"タイプ"に設定する必要はない。
"回路規模"は、プログラマブル論理回路11のハードウエア規模を示している。プログラマブル論理回路11にFPGAを用いる場合は、最小単位であるLE:Logic Elementで規模を表せばよい。なお、LEは、レジスタやセレクタなどから構成された予め部品が固定されたユーザロジック回路で、その中の設定の変更も可能である。
FPGAの具体例としては、米国ALTERA社のCycloneやStratixなどがあり、図5に示すようにFPGAの内部構成の概要が開示されている。図5に示すFPGAは、入出力バッファなどのIOエレメント(IOE)51、角にはクロック生成用のPLL(Phased Locked Loop)52、中心部にはマルチプライヤ群53が並び、チップの大部分はLE群からなるロジックアレイ54と内蔵RAMのメモリ55からなる。その他に2次元の配線層があり、この配線を自由に変更してロジックアレイ54、メモリ55、PLL52、IOE51を互いに接続することで、所望の機能が実現される。
"処理能力"では、代表的な処理の処理速度を複数示している。例えば、画像処理分野ではJPEGの圧縮速度やフィルタ処理速度など、使用頻度の高いものや特徴的なものが設定される。プログラマブル論理回路の特性によって、得意な処理と不得意な処理が存在するため、一概に1つの処理速度で判断できないことに対応するために、例えば、得意な処理の速度と不得意な処理の速度など、速度を表す複数の数値データが設定される。
"メモリ"では、拡張手段10に搭載されているワークメモリ12の容量を示している。A4用紙600dpiのカラー画像だと、ビットマップファイルの容量は100MBにもなり、プログラマブル論理回路11で処理する際の演算精度を考慮すると、演算精度に応じたワークメモリ12のメモリ容量が必要になる。処理が不可能と判断するか、もしくは画像を切り分けて処理させるかの判断をする際に、メモリ容量の大きさが判断基準となる。
次に、動的情報の例について説明する。
"動作フラグ"では、拡張手段10の動作状態を示している。拡張手段10の動作状態を常に監視することが必要になるため、"動作フラグ"の動作状態としては、例えば、動作中、メモリ利用中、停止中などの状態がある。動作中の状態としては、回路情報に基づいてプログラマブル論理回路11をコンフィギュレーションしている状態であったり、プログラマブル論理回路11での処理を目的に処理データをワークメモリ12に転送中の状態であったり、実際にプログラマブル論理回路11で処理中の状態であったり、処理後の処理データを他のメモリに転送中の状態がある。
また、メモリ制御手段13によりメモリ間の情報転送が容易にでき、また後述するように拡張手段10上のプログラマブル論理回路11とメモリ制御手段13を別に構成することにより、プログラマブル論理回路11の動作とは別に、ワークメモリ12のみ独立してホスト20や別の拡張手段10が利用することも可能である。別の拡張手段10が利用している場合には、"動作フラグ"をメモリ利用中の状態に設定する。また、この場合には前述した静的情報の"メモリ"パラメータは、動的情報として扱ったほうがよく、利用可能な容量から、既に利用されている容量、または利用の可能性のある容量を差し引いた値を示すとよい。それ以外でプログラマブル論理回路11もワークメモリ12も使用していない場合は、"動作フラグ"を停止中の状態に設定する。
"処理開始時刻"では、プログラマブル論理回路11での処理が開始された時刻を示している。時刻でなくCPU22の内部の処理が開始された時点からカウントするカウンタ値でも構わない。スケジュール管理手段24でどの拡張手段10を選択するか判断する際、この情報を利用してどの程度の処理時間が残っているかを計算し予想するための情報として利用できる。なお、IDがBおよびCの拡張手段10はプログラマブル論理回路11が動作していないので、データはない。
"搭載回路ID"では、プログラマブル論理回路11が複数の回路を集積する集積回路で構成されている場合、集積している回路IDが設定される。回路IDで示す回路には、現在コンフィギュレーションされていてすぐ利用可能な"コンフィグ中"と、未だコンフィギュレーションの"未コンフィグ"となる状態がある。IDがCの拡張手段10は、まだ1つもコンフィギュレーションしていないことを示している。以上のように、情報管理手段23は、常に最新の拡張手段10の動的情報および静的情報を管理している。
図6は、本発明の第1の実施の形態に係る情報処理装置のスケジュール管理手段の処理を示すフローチャートである。なお、概要としては、スケジュール管理手段24は、アプリケーションプログラムのヘッダ部に設定されたHWモジュールのリストや回路情報の実装条件に関する情報を取得し、取得した情報と情報管理手段23から提供される利用可能な拡張手段10の情報とを比較し、比較した結果、適正なHWモジュールと拡張手段10の組合せを決定する。以下に、図6を参照しながら説明する。
まず、例えば図示しないユーザインタフェースを通じて、ユーザからアプリケーションプログラムの起動を指示されると、CPU22は大容量記憶媒体27に格納されているアプリケーションプログラムをメインメモリ21上に展開すると同時に、スケジュール管理手段24が、展開されたアプリケーションプログラムを起動する(ステップS11)。
このとき、アプリケーションプログラムで使用するデータのサイズや、タイプ(拡張子)などの情報が、スケジュール管理手段24に引き渡されると、スケジュール管理手段24は、どの拡張手段10を割り当てるか否かを判断する。なお、ステップS11では、ユーザからの直接指示でスケジュール管理手段24が起動する場合でなく、他のプログラムから連動して起動した場合でも構わない。
ここで、アプリケーションプログラムの構成を図7に示す。図7(A)に示したように、アプリケーションプログラムはヘッダ部と本体部に分かれている。本体部には、一連のアプリケーション処理を行うメインプログラム部分と、その個々の処理を関数レベルで表したモジュールとが含まれている。
このモジュールには2種類あり、プログラムをCPU22で処理するソフトウエアモジュール(以下、SWモジュールという)であり、プログラマブル論理回路11を搭載した拡張手段10を利用してプログラムをハードウエアで処理するハードウエアモジュール(以下、HWモジュールという)である。
HWモジュールには、特定されたプログラマブル論理回路11の回路情報、回路のID番号を指定してコンフィギュレーションを指示する命令、処理データの転送命令、およびプログラマブル論理回路11の制御を行う命令などが格納されている。
なお、回路情報は、アプリケーションプログラムと別に格納されているとよい。回路情報は、特定のアプリケーションプラグラムに限定されているのではなく、プログラマブル論理回路11に固有のものではあるが、汎用的に機能するため、他のアプリケーションプログラムからでも利用できる。回路情報が、特定の場所に格納されて利用されるようにしておくだけでも構わないが、HWモジュールが必要とするハードウエア処理とプログラマブル論理回路11の回路情報との関連付けがなされていてもよい。
図7(B)に示すように、アプリケーションプログラム間で共通の回路のID(図では(2)、(3)と記載)と、そのIDで識別される回路の回路情報とが実装条件として管理されているとよい。その実装条件をスケジュール管理手段24が取得し、例えば、スケジュール管理手段24は、性能のよい実装条件をもつ拡張手段10を優先に割り当てるなど、拡張手段10を特定する判断材料として用いることができる。その他、回路規模を示す数値や、規定のデータ量を処理する参考時間なども実装条件に含めてもよい。
特許文献1では、HWモジュールが存在する処理は必ずSWモジュールと1対1に対応され、どちらを利用するかの判断として、HWモジュールがプログラマブル論理回路にコンフィギュレーションされていれば、処理速度が速いという前提で、必ずHWモジュールを選択する。一方、本発明の第1の実施の形態では、SWモジュールとHWモジュールとが、どちらか一方しかない処理に関しても、スケジュールを決定するために判断がなされる。
HWモジュールの情報は全て利用するが、HWモジュールの情報だけでなく、それらと同じ処理を行えるSWモジュールの情報や、同じ処理としてHWモジュールが用意されていないSWモジュールに関しても、スケジュール管理手段24は、拡張手段10に割り当てるHWモジュールについて処理データの引継ぎを行う可能性のあるものを同様に判断材料にする。このように、判断材料を幅広くしたことで、複数の利用可能な拡張手段10が接続されている場合に、処理データの転送の負荷を減らし、拡張手段10のリソースを効率的に利用することができる。
アプリケーションプログラムのヘッダ部には、HWモジュールと回路情報の関係や、処理データの転送という観点で幾つかの情報を設定しておく。図7(A)に示した例では、本体部の処理の一部として処理1から4に注目し、それらが時系列的に進んでいくものとする。処理1はSWモジュールしかなく、処理2はHWモジュールしかない。処理3はSWモジュールとHWモジュールの両方が選択利用可能で、処理4はSWモジュールのみ用意されている場合を例とした。
ヘッダ情報は、スケジュール管理手段24による拡張手段10に対するHWモジュールの割り当ての際に、必要な情報である。また、図7(A)に示したヘッダ情報には、第1のヘッダ情報および第2のヘッダ情報を図示している。
第1のヘッダ情報としては、少なくともHWモジュールを持つ処理について、HWモジュールとその回路情報との対応を示すIDなどのリンク先情報を格納しておく。この時、同じ処理としてSWモジュールも選択できる場合はそれも設定しておく。これにより、SWで代用できない処理を特定できるので、優先的に拡張手段10に割り当てるHWモジュールを特定できる。図7(A)では、"HWモジュール2:(2)"がHWモジュールしかない場合であり、"HW/SWモジュール3:(3)"が両モジュールがある場合である。(2)や(3)がIDを表している。
第2のヘッダ情報としては、ハードウエアモジュールまたはソフトウエアモジュールを表すモジュール同士の処理データの転送の関係を表すデータ転送リストをヘッダに設定しておく。ここでは、処理の番号とモジュール番号が一致しているので、"モジュールx⇒y"と言う表現でモジュールxで処理された処理データを、次にモジュールyで処理するということを表している。
これらのモジュールの関係の設定については、アプリケーションプログラムを熟知している担当者が設定してもよいが、関数の相互関係を解析するソフトウエアもあるので、自動的にコンパイル時に生成されるようにしてあってもよい。
次に、図6を参照しながら説明すると、ステップS11の処理の後、スケジュール管理手段24は、アプリケーションプログラムのヘッダ部分にある情報を取得する(ステップS12)。
スケジュール管理手段24は、ヘッダ部の情報からHWモジュールの有無を判定し(ステップS13)、HWモジュールが無ければ拡張手段10を利用することはないため、何も動作しない。また、HWモジュールがある場合、スケジュール管理手段24は、情報管理手段23から、拡張手段10の情報を取得する(ステップS14)。
スケジュール管理手段24は、ヘッダ部から得たHWモジュールに関する情報と、情報管理手段23から得た利用可能な拡張手段10の情報に基づいて、拡張手段10とHWモジュールの組合せを決定する(ステップS15)。なお、HWモジュールが複数あり、利用可能な拡張手段10も複数ある場合は、複数の組合せを決定する。この決定方法について以下に説明する。
図8は、本発明の第1の実施の形態に係る情報処理装置のスケジュール管理手段の組合せ決定処理を示すフローチャートである。ここでは、スケジュール管理手段24は、基本的にヘッダ部から得られた情報に基づいて、拡張手段10とCPU22との間で処理データの転送の負荷を減らすように、また利用できる拡張手段10を効率的に運用できるようにHWモジュールを拡張手段10に割り当てるように処理する。
まず、スケジュール管理手段24は、ステップS13でヘッダ部の情報を取得した際に、各処理のうち、HWモジュールしかできない(同処理がSWモジュールを持たない)処理があるかどうかを調べる(ステップS21)。
HWモジュールしかできない処理がある場合は、スケジュール管理手段24は、全てのプログラマブル論理回路11の回路情報に添付されている実装条件と利用可能な拡張手段10とを比較しながら適切な拡張手段10をその処理に割り当てる(ステップS22)。
ステップS22では、HWモジュールしかできない処理が複数ある場合、スケジュール管理手段24は、各HWモジュール分繰返して、実装条件と利用可能な拡張手段10とに基づいてHWモジュールに対応する拡張手段10を割り当てる。また、スケジュール管理手段24は、拡張手段10とCPU22との間で処理データの転送の負荷を減らすように、即ち、HWモジュール間で処理データの受け渡しがあるHWモジュールを優先的に利用可能な拡張手段10それぞれに割り当てるのがよい。こうして、複数の拡張手段10のワークメモリ12同士が、処理データの直接受け渡しを積極的に行うことで、CPU22とメインメモリ21との間のバス帯域を圧迫することを避けられる。ただし、利用可能な拡張手段10が少ない場合には、回路規模が大きいものや、処理時間が長いものなどを優先的に割り当てる方がよいこともある。
スケジュール管理手段24は、HWモジュールしかできない処理において、それぞれのHWモジュールに拡張手段10の割り当てしたか否か、または、一定時間経過後にHWモジュールに割り当て可能な拡張手段10があるか否かを判断する(ステップS23)。
ステップS23で、スケジュール管理手段24は、HWモジュールに割り当てる利用可能な拡張手段10の中に実装条件に合うものが無かったり、拡張手段10の数が不足したり、全ての拡張手段10の割り当てが可能でなかった場合など、それぞれのHWモジュールに拡張手段10の割り当てが決定していない、かつ、一定時間経過後にHWモジュールに割り当て可能な拡張手段10が無い場合には、その旨をCPU22に報告して(ステップS24)、スケジュール管理手段24の動作は終了する。その後のCPU22の処理としては、一旦アプリケーションプログラムを中断させ、拡張手段10の空き状況を監視する。実装不可だった拡張手段10が利用可能となった時点でアプリケーションプログラムを再開させればよい。この時、ユーザに対し拡張手段10のリソース不足を報告し、拡張手段10の増設を促すようにしてもよい。
なお、図8のフローチャートには図示しないが、スケジュール管理手段24は、全てのHWモジュールを拡張手段10に割り当てることができなかったとしても、時系列的に早いHWモジュールを優先的に実装条件に合う拡張手段10に割り当てていき、アプリケーションプログラムを実行可能な処理まで進めて中断させておき、割当が不可だったHWモジュールが実装条件に合う新たな拡張手段10に割り当てられた段階で、処理を再開させればよい。
ステップS23で、HWモジュールのそれぞれに拡張手段10を割り当てることが決定したか、もしくは一定時間経過後に全ての拡張手段10の割り当てが可能であった場合、スケジュール管理手段24は、アプリケーションプログラムのHWモジュールのうち、未だ割り当てていないHWモジュールがあるかどうかを調べる(ステップS25)。
ステップS25で、割り当てていないHWモジュールが無ければ、スケジュール管理手段24は、全てのHWモジュールに対し拡張手段10の割り当てが決定できたとし、処理がステップS31に進む。割り当てていないHWモジュールがあれば、処理がステップS26に進む。
次に、スケジュール管理手段24は、現時点における情報管理手段23が管理する拡張手段10の情報に基づいて、未だ割り当てていないHWモジュールに割り当てる利用可能な拡張手段10がまだ残っているかどうかを調べる(ステップS26)。
利用可能な拡張手段10が残っていなければ、各HWモジュールに対し全ての拡張手段10の割り当てが決定されたとして、処理がステップS31に進む。なお、ステップS21から進んできた場合は、HWモジュールによる処理が一切無いとして、CPU22に報告がなされる。
ステップS26で、利用可能な拡張手段10がまだある場合、スケジュール管理手段24は、既に優先して割り当てられたHWモジュールの処理データと関連のあるHWモジュールがあるかどうかを拡張手段10の情報に基づいて調べる(ステップS27)。
関連のあるHWモジュールが無い場合、処理がステップS29に進むが、関連のあるHWモジュールがある場合、スケジュール管理手段24は、関連のあるHWモジュールを利用可能な拡張手段10に割り当てを決定していく(ステップS28)。関連のあるHWモジュールが複数あれば、スケジュール管理手段24は、拡張手段10の割り当てを繰り返す。この場合に、スケジュール管理手段24は、ヘッダ情報を元に、拡張手段10の回路規模が大きいものや、拡張手段10の処理時間が長いものなどを優先的に割り当てるとよい。
スケジュール管理手段24は、再度、未だ割り当てていないHWモジュールに割り当てる利用可能な拡張手段10がまだ残っているかどうかを調べる(ステップS29)。残ってなければ、各HWモジュールに対し全ての拡張手段10の割り当てが決定されたとして、処理がステップS31に進む。
ステップS29で、利用可能な拡張手段10がある場合、スケジュール管理手段24は、まだ、割り当てが決定していないHWモジュールを拡張手段10に順次割り当てていく(ステップS30)。この場合も、ヘッダ情報を元に、回路規模が大きいものや、処理時間が長いものなどを優先的に割り当てるとよい。これで利用できる全ての拡張手段10をHWモジュールに割り当てたものが、HWモジュールと拡張手段10の組合せとして決定される(ステップS31)。
なお、利用可能な拡張手段10とは、拡張手段10の動作フラグが停止中の場合とすることが普通であるが、さらに、効率的に拡張手段10を利用するため、動作フラグが動作中の場合であっても、動作中の拡張手段10が実行するアプリケーションプログラムの使用開始時刻か一定時間以上経過して処理の終了が間近だと予想される場合に、スケジュール管理手段24は、その動作中の拡張手段10を、選択候補として割り当ててもよい。
また、ステップS22、S28、S30では、HWモジュールを利用可能な拡張手段10に割り当てているが、コンフィギュレーションすべき回路情報が既に搭載されている拡張手段10が利用可能であった場合には、スケジュール管理手段24は、その利用可能な拡張手段10を優先的に割り当ててもよい。
さらに、HWモジュールを拡張手段10に割り当てる際、アプリケーションプログラムが扱う処理データ量が、情報管理手段23から提供される拡張手段10のメモリ容量より大きい場合、スケジュール管理手段24は、ワークメモリ12を確保する目的で複数の拡張手段10を割り当てることもできる。
次に、図6を参照しながら説明すると、スケジュール管理手段24は、拡張手段10とHWモジュールの組合せの結果をCPU22および選択手段25に報告する(ステップS16)。CPU22では、実行しようとしているアプリケーションプログラムにおいて、同じ処理に対しSWモジュールとHWモジュールが共に用意され、どちらでも実行可能な場合、ステップS16の報告によってこの処理がHWモジュールで実行することに決定されているなどが判り、この報告を処理の進行に反映する。スケジュール管理手段24は、新たに別のアプリケーションプログラムが立ち上がった場合に、再度HWモジュールと拡張手段10との関連付けを行う。
選択手段25は、スケジュール管理手段24から拡張手段10とHWモジュールの組合せの報告を受け、HWモジュールの番号(ID)と拡張手段10の番号(ID)を関連付けて管理する。また、選択手段25は、スケジュール管理手段24からの指示による拡張手段10を選択し、選択した拡張手段10が新たなものであれば、新たな拡張手段10に搭載されているプログラマブル論理回路11に対し、HDDなどから回路情報を取得し、プログラマブル論理回路11に直接コンフィギュレーションを行う。
拡張手段10にローカルメモリが搭載されている場合、選択手段25は、ローカルメモリにも回路情報をロードする。なお、既にプログラマブル論理回路11に所望の回路情報が搭載されている場合は、新たにコンフィギュレーションする必要は無い。
選択手段25は、CPU22、スケジュール管理手段24、メモリ制御手段26からHWモジュール番号で各種制御指示が与えられたとき、拡張手段10を特定して制御指示やデータ転送の指示を行う。
拡張手段10同士のデータ転送もメモリ制御手段13が行うことができる上、後述するが、プログラマブル論理回路11がコンフィギュレーション中でも拡張手段10同士がデータ転送を可能にする方法があるため、複数の拡張手段10が特定の拡張手段10のメモリを共有することもできる。拡張手段10のメモリを共有することは、拡張手段10のプログラマブル論理回路11をアクセラレータとしての使い方だけでなく、メモリの増設用途としても利用できるようになる。
アプリケーションプログラムを実行している際に、CPU22は、SWモジュールを処理した結果の処理データを、拡張手段10に転送する場合がある。処理データは、メインメモリ21上にあり、CPU22は、転送元としてメインメモリ21のアドレスとデータ量、転送先のHWモジュール番号をメモリ制御手段26に通知する。メモリ制御手段26は、選択手段25を介して転送先となるHWモジュールを割り当てた拡張手段10に搭載されているメモリ制御手段13と連携し、CPU22のレジスタを介さずにメインメモリ21から直接ワークメモリ12に処理データを転送する。
処理データが少ない情報量であれば、メモリ制御手段26は、メインメモリ21からCPU22のレジスタに処理データを登録し、選択手段25の指示をうけ、処理データをメモリ制御手段13を経由して拡張手段10上のワークメモリ12に転送する。なお、CPU22のレジスタに大量の処理データを登録することは、CPU22の負担になるだけでなく、処理データの転送速度も遅くなるので避けるべきである。
拡張手段10がHWモジュールを処理した結果の処理データも同様にメインメモリ21や他の拡張手段10上のワークメモリ12に転送することができる。この時の転送先は、例えば、データ転送リストを参照してCPU22が決定する。
拡張手段10での処理が終了すると、プログラマブル論理回路11は、選択手段25を介してスケジュール管理手段24に処理終了の報告をする。スケジュール管理手段24によって次に実行されるモジュールが予め定められているので、CPU22は、モジュールに対応するワークメモリ12またはメインメモリ21に処理データを転送する。
次に実行されるモジュールがSWモジュールであれば、CPU22は、転送先をメインメモリ21に設定する。前の拡張手段10と異なる拡張手段10がHWモジュールを実行するのであれば、CPU22は、転送先としてそのHWモジュールの番号を選択手段25に指定し、対応する拡張手段10のワークメモリ12に転送されるよう指定する。
また、データ転送は、一般的なDMA(Direct Memory Access)転送を用いて構わない。その他のデータ転送としては、異なるメモリを共有化して扱える技術として、Star FabricやASI(Advanced Switching Interconnect)などのFabric接続を利用することも考えられる。
ホスト20のメモリ制御手段26はチップセット28に搭載されているのがよいが、別チップでももちろんよい。拡張手段10のメモリ制御手段13の実装については、後述する。メモリ制御手段13またはメモリ制御手段26は、転送元と転送先、データ転送量などをお互いに設定することで、CPU22に負荷をかけずにメモリ間のデータ転送を実行する。また、処理データの転送元のメモリ制御手段13またはメモリ制御手段26が必ずしも設定する必要はない。よって、CPU22が異なる拡張手段10のワークメモリ12間のデータ転送を指示することもできる。
以上説明したように、情報処理装置100は、拡張手段10の静的情報または動的情報の少なくても1つに基づいて、ハードウエアモジュールのそれぞれに利用可能な拡張手段10それぞれを割り当てるスケジュールを決定するため、CPU22と拡張手段10とが連携しながらアプリケーションプログラムを効率的に実行することができると共に、複数のアプリケーションプログラムが並列して実行されている場合であっても、アプリケーションプログラムを適切に実行することができる。また、情報処理装置100は、拡張手段10の増設によってアプリケーションプログラムを実行するための処理効率の向上が容易に行える。
特許文献1に記載の情報処理装置は、プログラマブル論理回路のコンフィギュレーション時間を擬似的に短縮してアプリケーション処理を高速に行うとしているが、1つのプログラマブル論理回路の効率的な利用方法に限られたものであるが、情報処理装置100は、ハードウエアモジュールで実行される処理が連続するように、ハードウエアモジュールのそれぞれに利用可能な拡張手段10それぞれを割り当てるスケジュールを決定するため、拡張手段10とホスト20との間で処理データを転送することが少なくなって、処理データの転送時間を削減できる。
また、特許文献1に記載の情報処理装置は、メインメモリとプログラマブル論理回路との間でデータ転送を行うため、マルチタスクやマルチスレッド、別のアプリケーションの並行立上げなど、メインメモリ上で複数の処理が実行されている場合にメインメモリにアクセスが集中し、メインメモリ21とCPU22との間のバスがデータ転送を行う上で高速化のボトルネックになっていたが、本実施の形態1における情報処理装置100によれば、拡張手段10同士で処理データを転送するので、メインメモリ21とCPU22との間のバスに負荷をかけることを緩和できる。
さらに、本実施の形態における情報処理装置100は、ワークメモリ12を配備しているのに対して、特許文献1では、プログラマブル論理回路周辺に回路情報を格納するローカルメモリを配することは記載されているが、処理データを格納するワークメモリの記載がないため、メインメモリをPCIバス経由で利用するのか、ローカルメモリを共用するのか、プログラマブル論理回路に内蔵されているのか不明である。また、特許文献2に記載の情報処理装置は、画像処理プロセッサ毎にワークメモリが配置されておらず、データ転送を行う際にメインメモリを利用するとすれば、複数の画像処理プロセッサが共通の入出力を通じて、共通のメインメモリに対しアクセスが集中してしまう。しかしながら、本実施の形態における情報処理装置100によれば、ハードウエアモジュールで実行される処理が連続するように、ハードウエアモジュールのそれぞれに利用可能な拡張手段10それぞれを割り当てるスケジュールを決定するため、拡張手段10とホスト20との間で処理データを転送することが少なくなって、メインメモリに対しアクセスが集中せずに、処理データの転送時間を削減できる。
(本発明の第2の実施の形態)
本発明の第2の実施の形態では、アプリケーションプログラムの具体的な例を挙げて情報処理装置100の具体的な動作について説明する。図9は、図7に示したアプリケーションプログラムの例である。図9(A)では、アプリケーションプログラムをプログラミング言語で表現した例を示している。なお、図7と同様に各処理に用意されているモジュールも同じとする。
図9に示したアプリケーションプログラムの処理順序は、図9(B)に示すように、時系列的に、処理1、処理2、処理3、処理2、処理3、処理4の順で処理される。また、処理1から処理4までに対応するモジュール(CPU22が実行するSWモジュール、拡張手段10が実行するHWモジュール)が表現されている。
スケジュール管理手段は、各HWモジュールを拡張手段10に割り当てる処理を図8で説明したフローチャートに従って行う。なお、拡張手段10は少なくとも1つ停止中の状態のものがある前提とする。
まず、ステップS21で、スケジュール管理手段24は、複数のHWモジュールの中から、HWモジュールしか無い(SWモジュールがない)処理2があることを判定し、ステップS22で、優先的に拡張手段10をHWモジュール2に割り当てる。
次に、ステップS23で、スケジュール管理手段24は、HWモジュール2に拡張手段10を割り当てたと判断し、ステップS25で、未だ割り当てていないHWモジュール3があると判定するため、ステップS26で、未だ割り当てていないHWモジュールに割り当てる利用可能な拡張手段10が残っているか否か判定する。他の拡張手段10に停止中の状態のものが無い場合、スケジュール管理手段24は、処理3の組合せとしてSWモジュールを選択せざるを得ない。
SWモジュールを選択せざるを得ない場合、処理データの流れは、図9(B)のように点線で示すようになるが、処理2と処理3の繰返し、拡張手段10とCPU22との間で処理データが引き継がれる際に、PCIバスなどを経由してメインメモリ21にデータ転送が頻繁に行われるため、バス帯域の圧迫が余儀なくされる。
一方、拡張手段10に停止中の状態のものがあった場合、ステップS27で、スケジュール管理手段24は、HWモジュールの中から、すでに割当が決定されたHWモジュール2と処理データの受け渡しの観点で関連があることを調べ、ステップS28で、関連がある処理3のHWモジュール3を未使用の拡張手段10に割り当てる。処理3のHWモジュール3を拡張手段10に割り当てた場合の処理データの流れは、太い実線で示してあるが、処理2と処理3の繰返しにおける処理データがメインメモリ21に転送されないことで、メインメモリ21に負荷を与えることなく処理が行われる。
(本発明の第3の実施の形態)
本発明の第1の実施の形態では、情報処理装置100のプログラマブル論理回路11としてFPGAを主に説明したが、本発明の第3の実施の形態では、FPGAの代わりにDRP(Dynamic Reconfigurable Processor)などを用いる場合について説明する。
DRPにも幾つかの種類があるが、例えば、日本のアイピーフレックス社がDAPDNAという製品を市販しており、詳しく説明はしないが、これもFPGAと同様に論理回路やメモリなどを記述する回路情報をコンフィギュレーションすることにより、内部回路の結線を自由に再構成することができる。
特にDRPは、再構成できる回路規模は小さいながら、回路情報を格納する目的で"bank"と呼ばれる内部メモリを搭載しており、ここに回路情報をロードできる。一旦、ロードされた回路情報で内部回路を再構成するコンフィギュレーションは、FPGAに比べると非常に高速にできる。また、DRPは、ソフトウエアの実装に近い開発が可能であることが特徴である。
DRPは、図4の静的情報に示すようにIDがCである拡張手段10に図示している。"回路規模"では、FPGAのLEに相当する最小単位がPEになる。また、内部メモリ(bank)に関しては"3bank"なので、3面分の回路情報を蓄積し、高速に切換えることができることを意味している。さらに"搭載回路ID"では内部メモリに複数の回路情報を格納でき、しかもこれらについてはコンフィギュレーション時間が非常に短くすぐ利用できるので、コンフィギュレーション中の状態としては、複数の回路IDがあってもよい。
また、図8で説明したステップS22およびステップS28において、スケジュール管理手段24は、拡張手段10とCPU22との間で処理データの転送の負荷を減らすように、即ち、HWモジュール間で処理データの受け渡しがあるHWモジュールを優先的に利用可能な拡張手段10それぞれに割り当てる。このとき、拡張手段10に搭載されているプログラマブル論理回路11がDRPのように複数の回路情報を格納でき瞬時に書き換えられる場合、スケジュール管理手段24は、時系列的に連続する複数のHWモジュールを、DRPを有する拡張手段10に割り当てるとよい。こうすることで、処理データがワークメモリ12に格納されたまま、拡張手段10は、プログラマブル論理回路11を書き換えればよいだけになる。
(本発明の第4の実施の形態)
本発明の第1の実施の形態では、情報処理装置100の拡張手段10にプログラマブル論理回路11が用いられており、拡張手段10の搭載する高速処理デバイスとして、回路が再構成できるプログラマブル論理回路であると表現しているが、実際には再構成できるプログラマブル論理回路に限ることではない。
ここで、プログラマブル論理回路の代わりに画像処理プロセッサを用いる場合について説明する。画像処理プロセッサは、特定の機能に最適化されたハードウエアデバイスだが、FPGAなどと同様に、外部から専用プログラムをロードすることで、機能を切換えることができる。画像処理プロセッサは、ホスト20で用いている汎用のCPUとは全く異なるアーキテクチャのため、HWモジュールを処理するのが適切である。
また、プログラマブル論理回路の代わりにCellプロセッサを用いる場合について説明する。Cellプロセッサは、汎用CPUとは異なり複数の特殊なコプロセッサが連携してプログラムを処理するものである。Cellプロセッサは、専用に設計された特殊なプログラムでないとハードウエア性能を十分発揮しないため、HWモジュールを処理するのが適切である。
このように、本発明の実施の形態では、プログラマブル論理回路でなくとも、特殊言語または特殊コンパイル条件を必要とする高速処理が可能なハードウエアであれば、プログラマブル論理回路の代わり適応できる。
(本発明の第5の実施の形態)
本発明の第1の実施の形態では、情報処理装置100の拡張手段10を図1で説明したが、本発明の第5の実施の形態では、拡張手段10の具体的な構成について説明する。
拡張手段10は、プログラマブル論理回路11と、ワークメモリ12と、メモリ制御手段13と、場合によっては回路情報を格納するローカルメモリ16からなることは既に前述の通りである。拡張手段10の構成例として、既にFPGAメーカーなどから市販されている一般的なFPGA評価ボードの構成例を図10に示す。
プログラマブル論理回路11(FPGA)がPCIバスに接続できるように、IP(Intellectual Property)として提供されるPCI(−Local)ブリッジ14をFPGA内部に実装する。プログラマブル論理回路11(FPGA)は、SRAMやSDRAMなどのワークメモリ12と直接接続されており、ワークメモリ12に処理データを格納できるようになっている。また、プログラマブル論理回路11(FPGA)に、DMAC(DMA Controller)15のIPを実装すれば、PCIバス経由でメインメモリ21とワークメモリ12間のDMA転送が可能となる。
プログラマブル論理回路11(FPGA)のコンフィギュレーションは、別途用意された専用のJTAG(Joint European Test Action Group)規格のI/FやUSBのI/Fを利用して行われることが可能である。ローカルメモリ16へのロードも同様に、専用のI/Fを介して行われることが可能である。しかし、本発明の実施の形態では、従来のFPGAの主用途であったASICの事前回路検証用ではなく、製品として複数の拡張手段10を搭載することにあるので、コンフィギュレーションのためにPCIバスでない専用I/Fを接続する事は避けたい。
そこで、PCIバス経由でコンフィギュレーションを行う方法を提案する。1つめの方法を図11に示す。図10と同様に、プログラマブル論理回路11(FPGA)に、PCIブリッジ14やDMAC15の回路をIPなどで搭載することに加えて、ロード回路17も搭載する。ロード回路17は、PCI経由で取得した回路情報をローカルメモリ16に転送するものである。直接PCIバス経由でFPGAにコンフィギュレーションすることはできないが、ローカルメモリ16へ回路情報をロード回路17にロードしておき、その後PCIバス経由でFPGAにリセットもしくはローカルメモリ16からのコンフィギュレーションを指示することで、プログラマブル論理回路11(FPGA)は新しい回路情報で再構成される。
2つ目の方法を図12に示す。1つ目の方法を改善した構成である。HWモジュールの回路情報がコンフィギュレーションされ、頻繁に機能が変更されるFPGAとは別に、PCIインタフェース、DMAC15、ロード回路17、また図示しないがメモリコントローラ(DMACに内蔵でも構わない)の固定化した機能をもったインタフェースデバイス18を別途搭載する。
インタフェースデバイス18は、常にPCIバス経由での通信可能なので、PCIバス経由での直接的なFPGAコンフィギュレーションも可能であり、もちろんローカルメモリ16へのロードも可能である。
メモリコントローラは、常に動作しているので、ワークメモリ12を常にリフレッシュすることができ、HWモジュールの変更でFPGAの回路情報が書き換わる際もワークメモリ12の情報が保持される。また、DMAC15も常に使用可能であることから、HWモジュールの変更でFPGAがコンフィギュレーションされている時間を有効に使い、ワークメモリ12から他のメモリへのDMA転送を行うことも可能である。
インタフェースデバイス18は、機能を変更しないので、ASICでも構わないし、プログラマブル論理回路でも構わない。また、プログラマブル論理回路のチップと同じパッケージに格納された、マルチチップ構成であればなおよい。
(本発明の第6の実施の形態)
本発明の第1〜第5の実施の形態では、情報処理装置100のメモリ制御手段13としてPCIバスを利用するDMACを例に説明したが、その他には、通信路(バス)としてPCIバスの部分にSF(Star Fabric)やASI(Advanced Switching Interface)を利用することもできるので、SFを利用した構成例を図13に示す。
SFの場合、PCI Bridgeの代わりに、SFブリッジ33を搭載する。またASIの場合はASIブリッジの搭載となる。なお、これらのブリッジデバイスは、チップセット28や、FPGAに内蔵されていてもよい。
ホスト20のCPU22もしくは、拡張手段10に搭載されたプロセッサが、これらのブリッジデバイスに設定を行うことで、各ノード(ここではホスト20または個々の拡張手段10)間のデータ転送を高速に容易に行うことができる。その他、バスの引き回し距離を延長したり、接続可能なノードを増やしたり、ノードに搭載されたメモリを共有化することができる。
SFやASIは、ホスト20以外のノードを端末として接続するだけでなく、同等の能力を持つノードとして認識することもできる。その場合には、各ノードにある程度の処理が行えるプロセッサが必要となるが、拡張手段10のプログラマブル論理回路11(例えばFPGA)に内蔵されたCPU22や、DRP内蔵のCPU22、Cellなどで対応できる。このような接続には、SFやASIの通信路(バス)上にSFスイッチ32を設けることで、Fabric接続となる。
本発明の第6の実施の形態に係る情報処理装置は、ホスト20と複数の拡張手段10を接続する通信路がSFであるため、拡張手段10を離れた場所に設置したり、拡張手段10の接続可能数をPCIに比べ増やせたり、拡張手段10にプロセッサが搭載された環境での高速通信またはメモリの共有化が行えたりする。また、通信路がASIになれば、拡張手段10を離れた場所に設置したり、拡張手段10の接続可能数をPCIeに比べ増やせたり、拡張手段10にプロセッサが搭載された環境では高速通信またはメモリの共有化が行えたりする。
以上のように、本発明は、主制御手段および拡張手段を利用してアプリケーションプログラムを適切に実行することができるという効果を有し、サーバなどのコンピュータ、複写機、プリンタ、多機能プリンタ(MFP:Multi Function Printer)などに有用である。
本発明の第1の実施の形態に係る情報処理装置のブロック図 本発明の第1の実施の形態に係る情報処理装置のハードウエア構成の一例を示す図 本発明の第1の実施の形態に係る情報処理装置の情報管理手段の処理を示すフローチャート 静的情報および動的情報の例を示す図 FPGAの内部構成の概要を示す図 本発明の第1の実施の形態に係る情報処理装置のスケジュール管理手段の処理を示すフローチャート アプリケーションプログラムの構成を示す図 本発明の第1の実施の形態に係る情報処理装置のスケジュール管理手段の組合せ決定処理を示すフローチャート アプリケーションプログラムの例を示す図 DMACおよびPCIブリッジを実装した拡張手段の構成例を示す図 ロード回路を実装した拡張手段の構成例を示す図 インタフェースデバイスを実装した拡張手段の構成例を示す図 本発明の第1の実施の形態に係る情報処理装置にStar Fabricを実装した場合のブロック図
符号の説明
10 拡張手段
11 プログラマブル論理回路
12 ワークメモリ
13 メモリ制御手段
14 PCIブリッジ
15 DMAC
16 ローカルメモリ
17 ロード回路
18 インタフェースデバイス
20 ホスト
21 メインメモリ
22 CPU(主制御手段)
23 情報管理手段
24 スケジュール管理手段
25 選択手段
26 メモリ制御手段
27 大容量記憶媒体
28 チップセット
30 通信インタフェース
31 記憶装置
32 SFスイッチ
33 SFブリッジ
100 情報処理装置

Claims (9)

  1. アプリケーションプログラムを構成するソフトウエアモジュールを実行する主制御手段を有し、前記アプリケーションプログラムを構成するハードウエアモジュールを実行する拡張手段を複数有する情報処理装置において、
    前記拡張手段の利用が可能か否かを表す情報を含む前記拡張手段の情報を管理する情報管理手段と、
    前記情報管理手段が管理する前記拡張手段の情報に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てながら前記ハードウエアモジュールおよび前記ソフトウエアモジュールを実行するためのスケジュールを決定するスケジュール管理手段とを備えたことを特徴とする情報処理装置。
  2. 前記拡張手段が、前記ハードウエアモジュールを実行するプログラマブル論理回路を有し、
    前記スケジュール管理手段が、前記プログラマブル論理回路の実装条件に基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項1に記載の情報処理装置。
  3. 前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールまたは前記ソフトウエアモジュールで実行できる処理と、前記ハードウエアモジュールでのみ実行できる処理とがあった場合、前記スケジュール管理手段が、前記ハードウエアモジュールでのみ実行できる処理を優先して、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項1または請求項2に記載の情報処理装置。
  4. 前記アプリケーションプログラムで実行させる処理のうち前記ハードウエアモジュールで実行できる処理が複数あった場合、前記スケジュール管理手段が、前記ハードウエアモジュールで実行される処理が連続して行われるように、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項3に記載の情報処理装置。
  5. 前記アプリケーションプログラムには、前記ハードウエアモジュールまたは前記ソフトウエアモジュールを表すモジュール同士のデータ転送の関係を表すデータ転送リストが含まれており、
    前記スケジュール管理手段が、前記データ転送リストに基づいて、前記ハードウエアモジュールに利用可能な前記拡張手段を割り当てることを特徴とする請求項1または請求項2に記載の情報処理装置。
  6. 前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、
    前記通信手段が、StarFabricに準拠したものであることを特徴とする請求項1から請求項5までの何れかに記載の情報処理装置。
  7. 前記主制御手段と前記拡張手段との間で通信させる通信手段とを備え、
    前記通信手段が、ASIに準拠したものであることを特徴とする請求項1から請求項5までの何れかに記載の情報処理装置。
  8. 前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリと、前記プログラマブル論理回路にコンフィギュレーション回路を有し、
    前記プログラマブル論理回路のコンフィギュレーション中に、前記ワークメモリおよび前記コンフィギュレーション回路が停止しないことを特徴とする請求項2に記載の情報処理装置。
  9. 前記拡張手段が、前記ハードウエアモジュールを実行するための情報を記憶するワークメモリを有し、前記ワークメモリが、他の前記拡張手段から出力されたデータを書き込みまたは読み出し可能であることを特徴とする請求項1から請求項8までの何れかに記載の情報処理装置。
JP2007239777A 2007-09-14 2007-09-14 情報処理装置 Pending JP2009070265A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007239777A JP2009070265A (ja) 2007-09-14 2007-09-14 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007239777A JP2009070265A (ja) 2007-09-14 2007-09-14 情報処理装置

Publications (1)

Publication Number Publication Date
JP2009070265A true JP2009070265A (ja) 2009-04-02

Family

ID=40606423

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007239777A Pending JP2009070265A (ja) 2007-09-14 2007-09-14 情報処理装置

Country Status (1)

Country Link
JP (1) JP2009070265A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097478A (ja) * 2015-11-19 2017-06-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2019139747A (ja) * 2018-02-13 2019-08-22 北京曠視科技有限公司Beijing Kuangshi Technology Co., Ltd. 演算装置、演算実行設備及び演算実行方法
JP2020166427A (ja) * 2019-03-28 2020-10-08 株式会社日立製作所 アプリケーション実行装置およびアプリケーション実行方法
JP2021508117A (ja) * 2017-12-20 2021-02-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア・ライブラリへの呼び出しをアクセラレータへの呼び出しに動的に置き換えるための装置及び方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097478A (ja) * 2015-11-19 2017-06-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2021508117A (ja) * 2017-12-20 2021-02-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア・ライブラリへの呼び出しをアクセラレータへの呼び出しに動的に置き換えるための装置及び方法
JP7252694B2 (ja) 2017-12-20 2023-04-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア・ライブラリへの呼び出しをアクセラレータへの呼び出しに動的に置き換えるための装置及び方法
US11645059B2 (en) 2017-12-20 2023-05-09 International Business Machines Corporation Dynamically replacing a call to a software library with a call to an accelerator
JP2019139747A (ja) * 2018-02-13 2019-08-22 北京曠視科技有限公司Beijing Kuangshi Technology Co., Ltd. 演算装置、演算実行設備及び演算実行方法
JP2020166427A (ja) * 2019-03-28 2020-10-08 株式会社日立製作所 アプリケーション実行装置およびアプリケーション実行方法
JP7046862B2 (ja) 2019-03-28 2022-04-04 株式会社日立製作所 アプリケーション実行装置およびアプリケーション実行方法

Similar Documents

Publication Publication Date Title
US11494322B2 (en) Computing system with hardware reconfiguration mechanism and method of operation thereof
JP7121076B2 (ja) マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成
US20190065364A1 (en) Allocating and configuring persistent memory
US8074110B2 (en) Enhancing reliability of a many-core processor
KR102253582B1 (ko) Dram 기반 프로세싱 장치를 위한 확장 아키텍처
US20160202999A1 (en) A Computing Platform, A Reconfigurable Hardware Device And A Method for Simultaneously Executing Processes On Dynamically Reconfigurable Hardware Device, Such As An FPGA, As Well As Instruction Set Processors, Such As A CPU, And A Related Computer Readable Medium
JP6368434B2 (ja) Pld管理方法及びpld管理システム
US20080294872A1 (en) Defragmenting blocks in a clustered or distributed computing system
JP2008152470A (ja) データ処理システム及び半導体集積回路
JP2000311156A (ja) 再構成可能並列計算機
CN110719206A (zh) 天基fpga虚拟化计算服务系统、方法和可读存储介质
JP2005500622A (ja) データ転送ルーティングメカニズムを用いるコンピュータシステムパーティショニング
WO2009109478A1 (en) Virtual-to-physical network mapping in a parallel computing system with multiple networks
CN112955880B (zh) 用于处理片上系统中的地址解码的装置和方法
WO2019056771A1 (zh) 分布式存储系统升级管理的方法、装置及分布式存储系统
JP2007207136A (ja) データ処理装置、データ処理方法、及びデータ処理プログラム
JP2009070265A (ja) 情報処理装置
JP2007334403A (ja) 計算機システム障害対応方式及び計算機システム障害対応方法
JP4017005B2 (ja) 演算装置
JP2014138382A (ja) 信号処理装置およびプログラマブルロジックデバイスの構成方法
JP2014029638A (ja) 情報処理装置およびその制御方法
Rettkowski et al. LinROS: a linux-based runtime system for reconfigurable MPSoCs
JP5994690B2 (ja) 情報処理装置、プログラムおよび記憶領域獲得方法
JP2009211649A (ja) キャッシュシステム、その制御方法、及び、プログラム
JP6364827B2 (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム