JP2006099579A - 情報処理装置及び情報処理方法 - Google Patents
情報処理装置及び情報処理方法 Download PDFInfo
- Publication number
- JP2006099579A JP2006099579A JP2004286762A JP2004286762A JP2006099579A JP 2006099579 A JP2006099579 A JP 2006099579A JP 2004286762 A JP2004286762 A JP 2004286762A JP 2004286762 A JP2004286762 A JP 2004286762A JP 2006099579 A JP2006099579 A JP 2006099579A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- module
- information
- information processing
- modules
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
Abstract
【課題】動作アプリケーションのリアルタイム性を維持したまま、消費電力を適切に制御することができる情報処理装置及び情報処理方法を提供すること。
【解決手段】複数のプロセッサ11〜13を備え、データストリームをリアルタイム処理可能な情報処理装置において、前記データストリームに施される処理が定義された複数のモジュール間の関係を示す構成ファイルを読み出して、各プロセッサの処理能力に応じて、少なくとも1つのプロセッサに前記複数のモジュールを割り当てる手段21と、前記割り当て手段による、前記プロセッサへの前記複数のモジュールの割り当てに関する情報に基づいて、バッファ情報を設定する手段21と、前記各プロセッサに、前記モジュールと前記設定手段によって設定された前記バッファ情報とをロードする手段21と、前記ロード手段によってロードした前記バッファ情報を用いて、ロードしたモジュールを所定のタイミングで、各プロセッサにおいて実行する手段21と、を備えた。
【選択図】 図1
【解決手段】複数のプロセッサ11〜13を備え、データストリームをリアルタイム処理可能な情報処理装置において、前記データストリームに施される処理が定義された複数のモジュール間の関係を示す構成ファイルを読み出して、各プロセッサの処理能力に応じて、少なくとも1つのプロセッサに前記複数のモジュールを割り当てる手段21と、前記割り当て手段による、前記プロセッサへの前記複数のモジュールの割り当てに関する情報に基づいて、バッファ情報を設定する手段21と、前記各プロセッサに、前記モジュールと前記設定手段によって設定された前記バッファ情報とをロードする手段21と、前記ロード手段によってロードした前記バッファ情報を用いて、ロードしたモジュールを所定のタイミングで、各プロセッサにおいて実行する手段21と、を備えた。
【選択図】 図1
Description
本発明は、情報処理装置及び情報処理方法に関し、特に、マルチプロセッサシステムにおいて、ストリームデータを処理するための情報処理装置及び情報処理方法に関する。
ストリームデータを処理するためのストリーム処理装置として、構成の自由度を向上させたものが提案されている(特許文献1参照)。この提案では、マトリクススイッチ内のスイッチの設定を変更することにより、システム構成を自由に変更できるようにしている。このため、ソフトウェアにより処理方法を変更しようとするものではない。
また、分散型マルチプロセッサ環境のプログラマブルプラットフォームに展開配置することにより、画像のシーケンス処理を実行するための、ソフトウェアシステムが提案されている(特許文献2参照)。この提案は、医療X線画像のシーケンスを処理するように設計されており、その処理に要求されるリアルタイム性を実現するために、なるべく高速な処理が要求される。従って、消費電力の適切な制御ということは、考えられていない。
特開2003−153168号公報
特開2004−519043号公報
本発明は、動作アプリケーションのリアルタイム性を維持したまま、消費電力を適切に制御することができる情報処理装置及び情報処理方法を提供することを目的とする。
本発明の局面に係る発明は、複数のプロセッサを備え、データストリームをリアルタイム処理可能な情報処理装置において、前記データストリームに施される処理が定義された複数のモジュール間の関係を示す構成ファイルを読み出して、各プロセッサの処理能力に応じて、少なくとも1つのプロセッサに前記複数のモジュールを割り当てる手段と、前記割り当て手段による、前記プロセッサへの前記複数のモジュールの割り当てに関する情報に基づいて、バッファ情報を設定する手段と、前記各プロセッサに、前記モジュールと前記設定手段によって設定された前記バッファ情報とをロードする手段と、前記ロード手段によってロードした前記バッファ情報を用いて、ロードしたモジュールを所定のタイミングで、各プロセッサにおいて実行する手段と、を具備することを特徴とする。すなわち、実行するシステムのプロセッサの処理能力に応じて、リアルタイム処理できない部分を複数のプロセッサに分割して処理することにより、プログラムの書き換えをすることなく実行できることを特徴とする。本発明は、装置の発明に限らず、方法の発明としても成立する。
本発明によれば、システムの負荷に応じてプロセッサの速度モード(動作周波数)を切り替えることにより、動作アプリケーションのリアルタイム性を維持したまま、消費電力を適切に制御することができる。
図面を参照して本発明の実施の形態を説明する。
図1は、本発明の一実施形態に係る情報処理装置の概略構成を示すブロック図である。
図1に示すように、本発明の一実施形態に係る情報処理装置は、第1から第Nのプロセッサ11から13が主記憶装置である共有メモリ15を共有する共有メモリ型マルチプロセッサシステムの情報処理装置である。なお、共有メモリ15は、各プロセッサ11から13に論理的に共有されていればよく、物理的に各プロセッサ11から13に分散していても良い。すなわち、分散共有メモリでも良い。また、各プロセッサ11から13に共有されるメモリ領域は、共有メモリ15の全領域でなくても良く、共有バッファ領域として利用する領域が共有されていればよい。
図1に示すように、本発明の一実施形態に係る情報処理装置は、第1から第Nのプロセッサ11から13が主記憶装置である共有メモリ15を共有する共有メモリ型マルチプロセッサシステムの情報処理装置である。なお、共有メモリ15は、各プロセッサ11から13に論理的に共有されていればよく、物理的に各プロセッサ11から13に分散していても良い。すなわち、分散共有メモリでも良い。また、各プロセッサ11から13に共有されるメモリ領域は、共有メモリ15の全領域でなくても良く、共有バッファ領域として利用する領域が共有されていればよい。
図2は、共有バッファ領域として利用する領域が共有メモリ領域として共有されている例を示す図である。図2に示すように、メモリ領域201と203、メモリ領域202と204が、それぞれ同一内容が別々のプロセッサのメモリ空間にマッピングされている。このように、同一内容をそれぞれのプロセッサのメモリ空間にマッピングすることで、データを共有する。なお、前述したように、図2に示すメモリ空間は論理空間であって、物理的には、どの部分にあってもよい。
本発明で扱うアプリケーションは、データストリームをリアルタイム処理することを目的とし、図3に示すように、複数のモジュール群(第1から第5のモジュール)が共通のバッファメモリ(第1から第5のバッファ)を介して連携動作するようなアプリケーションである。図3において、矩形はモジュールまたはバッファを示し、矢印はデータストリームの流れを示す。入力されたデータは複数のモジュールを通してパイプライン処理されて、出力される。この場合において、各モジュールは、マネージャ21によって割り当てられたプロセッサ上で実行される(割り当てについての詳細は後述する)。
図3に示すように、第1のモジュールに入力したデータストリームは、処理後に2つの出力端1−1と1−2に分けて、例えば、映像と音声とに分けて出力される。出力端1-1から出力されたデータは第1のバッファを介して第2のモジュールに入力して所定の処理がなされる。第2のモジュールから出力されたデータは第3のバッファを介して第3のモジュールに入力して所定の処理がなされた後に、第4のバッファを介して第5のモジュールの入力端5-1を介して第5のモジュールに入力する。一方、出力端1-2から出力されたデータは第2のバッファを介して第4のモジュールに入力して所定の処理がなされた後に、第5のバッファを介して第5のモジュールの入力端5-2を介して第5のモジュールに入力する。第5のモジュールから、所定の処理を行った後のデータストリームが出力される。
図3に示すように、第1のモジュールに入力したデータストリームは、処理後に2つの出力端1−1と1−2に分けて、例えば、映像と音声とに分けて出力される。出力端1-1から出力されたデータは第1のバッファを介して第2のモジュールに入力して所定の処理がなされる。第2のモジュールから出力されたデータは第3のバッファを介して第3のモジュールに入力して所定の処理がなされた後に、第4のバッファを介して第5のモジュールの入力端5-1を介して第5のモジュールに入力する。一方、出力端1-2から出力されたデータは第2のバッファを介して第4のモジュールに入力して所定の処理がなされた後に、第5のバッファを介して第5のモジュールの入力端5-2を介して第5のモジュールに入力する。第5のモジュールから、所定の処理を行った後のデータストリームが出力される。
図3に示すような各モジュールは、図4に示すとおり、入力バッファにあるデータを処理して出力バッファに書き出すという処理を行う(ステップS401)。なお、入力バッファの数と出力バッファの数は1つでも良いし、複数であっても良い。例えば、図3では、第1のモジュールの出力バッファの数は2つである。ただし、本実施形態において、最前段のモジュール(例えば、図3の第1のモジュール)はバッファメモリではなくハードウェア装置等から入力するものとし、また最後段のモジュール(例えば、図3の第5のモジュール)もバッファメモリでなくハードウェア装置等へ出力するものとする。さらに、各モジュール間で使用されるバッファは、各モジュールが配置されるプロセッサ間で共有されているものとする(例えば図2のメモリ領域201と203)。
本実施形態では、特に映像と音声を含むビデオストリームを処理するものとし、ストリームを1フレーム単位で処理することを前提とする。従って、各モジュールは各フレームのデータをフレーム間周期以内に処理するものとする。
図5は、複数のモジュールをプロセッサに割り当てる場合の流れを示すフローチャートである。
まず、マネージャ21がモジュールとモジュール間の接続を示す構成ファイルを読み込む(ステップS501)。なお、マネージャ21を省略して、例えば、第1のプロセッサ11が構成ファイルを読み込んでも良い。以下の説明において、ステップS506までの処理は、マネージャ21(又は、第1から第Nのプロセッサのうちの1つのプロセッサ)が実行するので、特に記載しない。なお、ステップS507における処理については、各プロセッサの実行の開始の通知はマネージャ21(又は、第1から第Nのプロセッサのうちの1つのプロセッサ)が行い、各プロセッサによる実行が開始した後は、各プロセッサにより、独立して実行が行われる。この構成ファイルの具体的な構成例を図6に示す。
図6に示すように、構成ファイルは、モジュール群の一覧と、モジュール間の接続関係の一覧をデータとして備えている。ここで、モジュール群一覧にはモジュールの識別子とモジュール構成ファイルが記述されており、モジュール間の接続関係一覧にはどのモジュールのどの出力端子と、どのモジュールのどの入力端子とが接続されるのかが記述されている。具体的には、図3に示す例では、モジュール群一覧として、第1から第5のモジュールが記述され、接続関係一覧として、第1のモジュールと第2のモジュールについては、出力端1−1と入力端2−1が接続されていることが記述される。なお、モジュール構成ファイルは、マネージャが有するメモリに記憶されていても良いし、バスに接続された図示しない記憶装置や外部記憶装置に記憶されていても良い。
また、各モジュールには、モジュールの構成を示すモジュール構成ファイルが対応付けられているものとし、その記述例を図7に示す。図7に示すように、モジュール構成ファイルには、入力端の数とそれぞれの識別子とサイズ、出力端の数とそれぞれの識別子とサイズ、及び実行に必要な処理量が記述されている。ここで、識別子は、例えば、入力端1、入力端2のように表される。また、サイズは、最大XkB(Xは自然数)といったようにあらわされる。
まず、マネージャ21がモジュールとモジュール間の接続を示す構成ファイルを読み込む(ステップS501)。なお、マネージャ21を省略して、例えば、第1のプロセッサ11が構成ファイルを読み込んでも良い。以下の説明において、ステップS506までの処理は、マネージャ21(又は、第1から第Nのプロセッサのうちの1つのプロセッサ)が実行するので、特に記載しない。なお、ステップS507における処理については、各プロセッサの実行の開始の通知はマネージャ21(又は、第1から第Nのプロセッサのうちの1つのプロセッサ)が行い、各プロセッサによる実行が開始した後は、各プロセッサにより、独立して実行が行われる。この構成ファイルの具体的な構成例を図6に示す。
図6に示すように、構成ファイルは、モジュール群の一覧と、モジュール間の接続関係の一覧をデータとして備えている。ここで、モジュール群一覧にはモジュールの識別子とモジュール構成ファイルが記述されており、モジュール間の接続関係一覧にはどのモジュールのどの出力端子と、どのモジュールのどの入力端子とが接続されるのかが記述されている。具体的には、図3に示す例では、モジュール群一覧として、第1から第5のモジュールが記述され、接続関係一覧として、第1のモジュールと第2のモジュールについては、出力端1−1と入力端2−1が接続されていることが記述される。なお、モジュール構成ファイルは、マネージャが有するメモリに記憶されていても良いし、バスに接続された図示しない記憶装置や外部記憶装置に記憶されていても良い。
また、各モジュールには、モジュールの構成を示すモジュール構成ファイルが対応付けられているものとし、その記述例を図7に示す。図7に示すように、モジュール構成ファイルには、入力端の数とそれぞれの識別子とサイズ、出力端の数とそれぞれの識別子とサイズ、及び実行に必要な処理量が記述されている。ここで、識別子は、例えば、入力端1、入力端2のように表される。また、サイズは、最大XkB(Xは自然数)といったようにあらわされる。
次に、各モジュールの処理時間を見積もる(ステップS502)。この処理時間は、図7に示したモジュールの構成ファイル中に記述された、実行に必要な処理量と、実行しようとしているプロセッサの処理能力から求められる。ここで、実行に必要な処理量とは、例えば想定するプロセッサの動作周波数と処理時間の対応表でもよい。
実際に各モジュールが各プロセッサに割り当てられる(ステップS503)。このとき、モジュール間のデータ依存関係を図8に示すようなグラフで表す。図8に示すように、本実施形態で扱うグラフは、分岐や合流を含むが、後戻りはないものとする。例えば第3のモジュールの結果を第2のモジュールで使うような場合を含まないものとする。なぜなら、後戻りさせたデータの世代(すなわち、何周期前のデータか)がその処理結果に影響するため、実行させる周期を自由に選べないためである。その場合は第2のモジュールと第3のモジュールを1つのモジュールとして扱う必要があるので、1つのモジュールとして構成ファイルが作成される。
図9を参照して、ステップS503におけるモジュールをプロセッサに割り当てる具体例を説明する。
まず、モジュール間のデータ依存グラフを作成し、「未割り当てグラフ」とする。図8がこの未割り当てグラフに相当するものであって、図8において、各矩形がモジュールを示し、矩形の横幅が処理時間を示すものとする。
図9を参照して、ステップS503におけるモジュールをプロセッサに割り当てる具体例を説明する。
まず、モジュール間のデータ依存グラフを作成し、「未割り当てグラフ」とする。図8がこの未割り当てグラフに相当するものであって、図8において、各矩形がモジュールを示し、矩形の横幅が処理時間を示すものとする。
次に、割り当て可能プロセッサ数を変数Nに代入する(ステップS902)。そして、変数Pに1を代入する(ステップS903)。変数Pは割り当て可能なプロセッサのプロセッサ番号を示すものとし、本実施形態においては、1〜Nが有効とする。
ステップS904において、変数Pが有効範囲かどうか(すなわち、P≦N)を確認する。P>Nなら空きプロセッサがなく実行不可能であるため異常終了する。もし、変数Pが有効範囲であれば、ステップS906に進み、「未割り当てグラフ」の「根」にあたる部分の処理(すなわち、データ依存がないモジュール)を空きプロセッサの1つに割り当てる(ステップS906)。例えば、第1のプロセッサ11が空いていれば、第1のプロセッサ11に第1のモジュールを割り当てる。そして、第1のプロセッサ11に割り当て可能な他の処理(例えば、図8の例では、第2のモジュール又は第4のモジュール)があれば、当該処理を第1のプロセッサ11に割り当てる。ここで、モジュールをプロセッサに割り当ている場合に、空き時間ができるだけ小さくなるように割り当てることが好ましい(ステップS907)。このために、例えば処理時間が長い順にモジュールをプロセッサに割り当てていくという単純な方法でもよい。なお、図8の例において、第3のモジュールは第2のモジュールに、第5のモジュールは第4のモジュールと第3のモジュールにそれぞれ依存するため対象外である。
そして、割り当てたモジュール群を未割り当てグラフから除く(ステップS908)。プロセッサ(この場合は、第1のプロセッサ11)に新たに1つ以上の割り当てをされたのであれば(ステップS909)、更にモジュール群を割り当てられる可能性があるので、ステップS907に戻る。この場合において、例えば、第1、第2、第4のモジュールを第1のプロセッサに割り当てた場合に、第3のモジュールを割り当てられるかどうかを判断することになる。なお、第5のモジュールは第3のモジュールの後段の処理になるので、この場合は、まず、第3のモジュールのみについて割り当て可能かどうかを判断する。第1のプロセッサにこれ以上モジュールを割り当てられないのであれば、未割り当てフラグが空になったかどうかを判定し(ステップS910)、空であればモジュール群のプロセッサへの割り当てを終了する。ステップS910において、未割り当てフラグが空でなければ、Pをインクリメントして(ステップS905)、ステップS904の処理に戻る。
上記のようにして、モジュール群がプロセッサに割り当てられる。
上記のようにして、モジュール群がプロセッサに割り当てられる。
図5のフローチャートに戻ると、モジュール群がプロセッサに割り当てられたら、プロセッサへのモジュール群の割り当てと接続関係から、各バッファに必要なバンク数を設定する(ステップS504)。バッファサイズとバンク数を求めるための詳細な流れを図10に示す。
図10において、すべての接続に対して、入力端側と出力端側とでサイズが一致しているかどうかの判定を行い(ステップS1301)、一致していなければ異常終了する。一致していれば、出力端側に対してモジュール構成ファイルで指定されたサイズに、バッファサイズを設定する(ステップS1302)。例えば、図3の例では、モジュール構成ファイルにおける、出力端1−1と入力端2−1のサイズが一致していなければならない。ここにおいて、バッファは、図6に示した接続関係一覧の分だけ必要になる。例えば、図3の例では、第1のモジュール→第2のモジュール、第1のモジュール→第4のモジュール、第2のモジュール→第3のモジュール、第3のモジュール→第5のモジュール、第4のモジュール→第5のモジュールの合計5つの接続があるが、それぞれの接続に対してバッファを確保する必要がある(すなわち、図3における第1のバッファ〜第5のバッファ)。また、バッファサイズは、図7に示したモジュール構成ファイル中に記述されたサイズを利用する。そして、バンク数を(終点のプロセッサ番号−始点のプロセッサ番号+1)に設定する(ステップS1303)。そして、バッファサイズとバンク数の積をメモリサイズに設定する。
上記の処理において、バンク数を求めるステップS1303に関して、詳細に説明する。話を単純化するため、2つの処理(例えば、図3における第2のモジュールと第3のモジュール)を2通りの方法でプロセッサへ配置した場合を考える。図11では、高速なプロセッサで構成したシステムと低速なプロセッサで構成したシステムにおける違いの例を示している。高速なプロセッサでは第2のモジュールによる処理Aと第3のモジュールによる処理Bを1周期以内に処理することができるため、1つのプロセッサで逐次処理をする。一方、低速なプロセッサでは処理Aと処理Bを1周期以内に処理することができないため、2つのプロセッサを組み合わせてパイプライン処理をする。ここでは処理Aが処理したデータを処理Bが次の周期で処理する。
図10において、すべての接続に対して、入力端側と出力端側とでサイズが一致しているかどうかの判定を行い(ステップS1301)、一致していなければ異常終了する。一致していれば、出力端側に対してモジュール構成ファイルで指定されたサイズに、バッファサイズを設定する(ステップS1302)。例えば、図3の例では、モジュール構成ファイルにおける、出力端1−1と入力端2−1のサイズが一致していなければならない。ここにおいて、バッファは、図6に示した接続関係一覧の分だけ必要になる。例えば、図3の例では、第1のモジュール→第2のモジュール、第1のモジュール→第4のモジュール、第2のモジュール→第3のモジュール、第3のモジュール→第5のモジュール、第4のモジュール→第5のモジュールの合計5つの接続があるが、それぞれの接続に対してバッファを確保する必要がある(すなわち、図3における第1のバッファ〜第5のバッファ)。また、バッファサイズは、図7に示したモジュール構成ファイル中に記述されたサイズを利用する。そして、バンク数を(終点のプロセッサ番号−始点のプロセッサ番号+1)に設定する(ステップS1303)。そして、バッファサイズとバンク数の積をメモリサイズに設定する。
上記の処理において、バンク数を求めるステップS1303に関して、詳細に説明する。話を単純化するため、2つの処理(例えば、図3における第2のモジュールと第3のモジュール)を2通りの方法でプロセッサへ配置した場合を考える。図11では、高速なプロセッサで構成したシステムと低速なプロセッサで構成したシステムにおける違いの例を示している。高速なプロセッサでは第2のモジュールによる処理Aと第3のモジュールによる処理Bを1周期以内に処理することができるため、1つのプロセッサで逐次処理をする。一方、低速なプロセッサでは処理Aと処理Bを1周期以内に処理することができないため、2つのプロセッサを組み合わせてパイプライン処理をする。ここでは処理Aが処理したデータを処理Bが次の周期で処理する。
この2つの場合において、必要になるバッファメモリのバンク数が異なる。図12は1台のプロセッサで逐次処理した場合のバッファの使われ方を示している。図12において、処理Aおよび処理Bの実行中、またバッファが使われている状態を矩形で示している。ここでは処理Aからの書き込みと処理Bからの読み込みが交互に行われるためバッファは1つでよい。一方、図13は2台のプロセッサでパイプライン処理した場合のバッファの使われ方を示している。ここでも処理Aおよび処理Bの実行中とバッファが使われている状態を矩形にて示している。この場合には、処理Aの書き込みと、前回のデータに対する処理Bの読み込みが並行して行われるため、2つのバッファが必要である。一般に、データが書き込まれてからデータが読み込まれるまでの周期数分のバンク数が必要になる、従って、必要なバンク数は、(終点のプロセッサ番号−始点のプロセッサ番号+1)で求めることができる。
図5のフローチャートに戻り、バンク数が設定されたら、ステップS1302で設定されたバッファサイズに応じたバッファ領域を確保する(ステップS505)。なお、各バッファに必要なメモリサイズはステップS1304に示したとおり、バッファサイズにバンク数を乗じた量である。
そして、各プロセッサへモジュールと設定情報をロードし(ステップS506)、各プロセッサで割り当てられた処理を実行する(ステップS507)。この場合において、設定情報は、図14に示すような、各入出力端に対応するバッファ情報であって、アドレス、バッファサイズ及びバンク数を含む情報である。
そして、各プロセッサへ、モジュールとモジュールに対する設定情報をロードし(ステップS506)、各モジュールは、この設定情報を元にバッファへのアクセス手順を設定する。
最後に各プロセッサでの実行を開始する(ステップS507)。ここで各プロセッサは1周期ずつ遅れて実行開始する。その手順を図15に示す。
まず、初期化条件として、使用するプロセッサ数Nをセットし(ステップ1501)、変数Pに1をセットする(ステップ1502)。PがNを越えるまで、ステップS1504からS1506を実行する(ステップ1503)。なお、PがNを越えたら処理を終了する。
ステップS1503において、PがN以下であれば、プロセッサPを実行し(ステップθ1504)、1周期待つ(ステップS1505)。そして、P=P+1(ステップS1506)として、この処理をP>Nとなるまで続ける。
上記のような処理を実行することにより、同一のアプリケーションソフトウェアをそのまま異なる処理能力のプロセッサ群上で実行することができる。なお、上記の処理において、複数のプロセッサを1周期づつ遅らせながら処理しなければならないので、ターンアラウンドタイム(周期数)は増えるが、スループット(リアルタイム性)は維持できる。例えば、上記の方法によれば、高速な4台構成のマルチプロセッサシステムで動作するシステムを、低速な8台構成のマルチプロセッサシステムに対しても修正なしで動作させることができる。そのためプロセッサの数と処理能力に対する選択の柔軟性が高くなる。そしてアプリケーション開発がプロセッサ構成に左右されない。
上記の実施形態では、事前に決定した構成のまま動作し続ける実施形態について説明したが、以下の実施形態ではシステム負荷に応じてアプリケーション構成を動的に切り替える実施形態について説明する。下記の実施態様では、プロセッサの動作周波数が動的に切り替えられるマルチプロセッサシステムを対象としており、プロセッサ上で複数のアプリケーションが動作し、それに応じてプロセッサの利用率が適宜変化するものとする。
ここでは、簡単のため高速モードと低速モードという2つのモードを考える。高速モードから低速モードへの切り替えの様子を図16に、低速モードから高速モードへの切り替えの様子を図17に示す。ここでは、ストリームデータに対して処理Aと処理Bの2つの処理を実行する例を示している。以下、具体的な制御について説明する。
低速モードではプロセッサ2台を使い、2周期でストリームデータを処理するものとする。ストリームを乱さないため、高速モードでも同じ周期数(この例では2周期)でストリームを処理する必要があるので、処理Aの出力を次の周期で処理Bが処理するようにする。またこのとき、処理B、処理Aの順で処理することによりバッファのバンク数を1つ減らすことができる。図16及び図17に示す例では高速モード時はバンク数1で実行可能になる。
低速モードではプロセッサ2台を使い、2周期でストリームデータを処理するものとする。ストリームを乱さないため、高速モードでも同じ周期数(この例では2周期)でストリームを処理する必要があるので、処理Aの出力を次の周期で処理Bが処理するようにする。またこのとき、処理B、処理Aの順で処理することによりバッファのバンク数を1つ減らすことができる。図16及び図17に示す例では高速モード時はバンク数1で実行可能になる。
アプリケーション構成を動的に切り替える場合の基本的な流れを図18に示す。
まず、各速度モードに対して構成情報を決定する(ステップS1801)。次に、アプリケーションが動作可能な適切な速度モードにシステムを切り替える(ステップS1802)。
そして、現速度モードに対応する構成で、アプリケーションを実行する(ステップS1803)。アプリケーション終了後に、適切な速度モードにシステムを切り替える(ステップS1804)。
まず、各速度モードに対して構成情報を決定する(ステップS1801)。次に、アプリケーションが動作可能な適切な速度モードにシステムを切り替える(ステップS1802)。
そして、現速度モードに対応する構成で、アプリケーションを実行する(ステップS1803)。アプリケーション終了後に、適切な速度モードにシステムを切り替える(ステップS1804)。
上記の手順により、動的にアプリケーション構成を切り替えることができる。なお、上記の流れにおいて、各速度モードにおける構成の決定方法について図19を参照して説明する。
まず最低速モードで構成を決定する(ステップS1901)。この手順は、図5で説明した実施形態の手順と同様であるので、詳細な説明は省略する。次に、各速度モードにおけるモジュールのプロセッサへの割り当てを決める(ステップS1902)。この手順は図20に示すように、プロセッサP+1に割り当てられた全てのモジュールに対し、プロセッサPで実行可能なモジュールをプロセッサPへ順次移すことによって行われる。
そして、プロセッサへの割り当てより、各モジュールの実行順序と、バッファの構成を決める(ステップS1903)。この手順を図21に示す。
まず、すべてのモジュールに対し、最低速モードでの割り当てプロセッサ番号が大きいものから順に実行するようにする(ステップS2101)。その際に、実行開始タイミングは、最低速モードでの割り当てプロセッサ番号で決める(ステップS2102)。そして、すべての接続に対し、最低速モードでは別プロセッサ間、現速度モードではプロセッサ内の接続なら、バッファのバンク数を1つ減らす(ステップS2103)。
まず最低速モードで構成を決定する(ステップS1901)。この手順は、図5で説明した実施形態の手順と同様であるので、詳細な説明は省略する。次に、各速度モードにおけるモジュールのプロセッサへの割り当てを決める(ステップS1902)。この手順は図20に示すように、プロセッサP+1に割り当てられた全てのモジュールに対し、プロセッサPで実行可能なモジュールをプロセッサPへ順次移すことによって行われる。
そして、プロセッサへの割り当てより、各モジュールの実行順序と、バッファの構成を決める(ステップS1903)。この手順を図21に示す。
まず、すべてのモジュールに対し、最低速モードでの割り当てプロセッサ番号が大きいものから順に実行するようにする(ステップS2101)。その際に、実行開始タイミングは、最低速モードでの割り当てプロセッサ番号で決める(ステップS2102)。そして、すべての接続に対し、最低速モードでは別プロセッサ間、現速度モードではプロセッサ内の接続なら、バッファのバンク数を1つ減らす(ステップS2103)。
そして、図18のステップS1802において、このようにして得られた構成情報を元にして、アプリケーションを動作させるのに適切な速度モードにシステムを切り替えることになる。システムの切替に関する具体的手順を図22に示す。
対応するすべても速度モードに対して、低速側から順に対応可能なモードを選択する(ステップS2201)。ここで、該当モードで必要なプロセッサ数が使用可能プロセッサ数を越えたのであれば(ステップS2202)、異常終了する。この場合には、動作させようとするアプリケーションは実行できないことになる。ステップS2202において、該当モードで必要なプロセッサ数が使用可能プロセッサ数以下であれば、プロセッサのモードを該当速度モードに切り替える(ステップS2403)。
ここで、ステップS2202における必要なプロセッサ数とは、現在動作中のもの、またこれから動作させようとするアプリケーション全てを実行させるために必要なプロセッサの合計であって、各アプリケーションに対してステップS1902で見積もったプロセッサ数と同様である。
対応するすべても速度モードに対して、低速側から順に対応可能なモードを選択する(ステップS2201)。ここで、該当モードで必要なプロセッサ数が使用可能プロセッサ数を越えたのであれば(ステップS2202)、異常終了する。この場合には、動作させようとするアプリケーションは実行できないことになる。ステップS2202において、該当モードで必要なプロセッサ数が使用可能プロセッサ数以下であれば、プロセッサのモードを該当速度モードに切り替える(ステップS2403)。
ここで、ステップS2202における必要なプロセッサ数とは、現在動作中のもの、またこれから動作させようとするアプリケーション全てを実行させるために必要なプロセッサの合計であって、各アプリケーションに対してステップS1902で見積もったプロセッサ数と同様である。
上記のような流れにおいて、図16に示すように現在の速度モードからより低速なモードに切り替える場合の切り替え手順を図23に、図17に示すようにより高速なモードに切り替える場合の切り替え手順を図24に、それぞれ示す。
図16に示す処理では、図23に示すように、まず、バンク数が変わるすべての接続に対し、バッファのバンク数を低速モードのバンク数に切り替える(ステップS2301)。すなわち、低速モードになるために、プロセッサ数が増える場合には、それに応じて、バンク数を増やす。次に、移動するすべてのモジュールに対し、モジュールを移動先のプロセッサ(プロセッサ2)にロードする(ステップ2302)。図16では、処理Bをプロセッサ2へロードする処理がこれに当たる。そして、モジュール(処理B)の状態を移動先(プロセッサ2)へ移動してから、移動先(プロセッサ2)でモジュール(処理B)の実行を開始し(ステップ2303)、システムを低速モードに切り替えることになる(ステップS2304)。
また、図17に示す処理では、図24に示すように、まず、システムを高速モードへ切り替える(ステップS2401)。次に、移動するすべてのモジュール(処理B)に対し、モジュールを移動先(プロセッサ1)でロードする(ステップS2402)。そして、モジュール(処理B)の状態を移動先(プロセッサ1)へ移動してから、移動先(プロセッサ1)でモジュール(処理B)の実行を開始し(ステップS2403)、バンク数が変わるすべての接続に対し、バッファのバンク数を高速モードのバンク数に切り替える(ステップS2404)。具体的には、処理A−B間のバッファのバンク数を1つ減らす。
なお、図16及び図17において、切り替え時において、全ステップ(処理A及び処理B)を1周期以内に終わらせる必要はないが、処理A及び処理Bのそれぞれの処理は1周期以内に終わらせる必要がある。
上記のように、本発明の実施形態によれば、システムの負荷に応じてプロセッサの速度モード(動作周波数)を切り替えることにより、動作アプリケーションのリアルタイム性を維持したまま、消費電力を適切に制御することができる。
本発明は、上記各実施の形態に限ることなく、その他、実施段階ではその要旨を逸脱しない範囲で種々の変形を実施し得ることが可能である。さらに、上記各実施形態には、種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組合せにより種々の発明が抽出され得る。
また、例えば各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
11〜13…第1〜第Nのプロセッサ
15…共有メモリ
21…マネージャ
15…共有メモリ
21…マネージャ
Claims (11)
- 複数のプロセッサを備え、データストリームをリアルタイム処理可能な情報処理装置において、
前記データストリームに施される処理が定義された複数のモジュール間の関係を示す構成ファイルを読み出して、各プロセッサの処理能力に応じて、少なくとも1つのプロセッサに前記複数のモジュールを割り当てる手段と、
前記割り当て手段による、前記プロセッサへの前記複数のモジュールの割り当てに関する情報に基づいて、バッファ情報を設定する手段と、
前記各プロセッサに、前記モジュールと前記設定手段によって設定された前記バッファ情報とをロードする手段と、
前記ロード手段によってロードした前記バッファ情報を用いて、前記ロードしたモジュールを所定のタイミングで、各プロセッサにおいて実行する手段と、を具備することを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置において、前記割り当て手段は、前記データストリームが、1つのプロセッサですべての処理がリアルタイム処理できないときに、複数のプロセッサにモジュールを割り当てて、分割して処理することを特徴とする情報処理装置。
- 請求項2に記載の情報処理装置において、前記複数のプロセッサにモジュールが割り当てられた場合において、ある処理を実行する第1のモジュールの次に実行される第2のモジュールを実行するプロセッサは、第1のモジュールを実行するプロセッサよりも1周期遅れて実行されることを特徴とする情報処理装置。
- 請求項1から請求項3のいずれか1項に記載の情報処理装置において、前記構成ファイルは、複数のモジュールの一覧と、前記モジュール間の接続関係を一覧とを含むことを特徴とする情報処理装置。
- 請求項4に記載の情報処理装置において、前記モジュールの一覧は、プロセッサの処理能力から処理時間を見積もることを可能とするメタ情報を有することを特徴とする情報処理装置。
- 請求項1から請求項5のいずれか1項に記載の情報処理装置において、前記バッファ情報は、バッファメモリに情報が書き込まれてから読み出されるまでの時間に応じて設定されることを特徴とする情報処理装置。
- 請求項1から請求項6のいずれか1項に記載の情報処理装置において、前記割り当て手段は、モジュール間のデータ依存グラフを作成する手段と、前記データ依存グラフに基づいて、データ依存がないモジュールを順次割り当て可能なプロセッサに割り当てる手段とを含むことを特徴とする情報処理装置。
- 請求項1から請求項7のいずれか1項に記載の情報処理装置において、
前記プロセッサは、処理能力が変更可能であり、
前記プロセッサによるモジュールの実行中に、情報処理装置の負荷が変動した場合に、前記プロセッサの処理能力に応じて、前記モジュールをプロセッサに再割り当てすることによって、アプリケーション構成を動的に切り替えることを特徴とする情報処理装置。 - 請求項9に記載の情報処理装置において、前記プロセッサは、動作周波数の切替が可能であり、
前記情報処理装置の負荷に応じて前記プロセッサの動作周波数を切り替えることを特徴とする情報処理装置。 - 複数のプロセッサを備え、データストリームをリアルタイム処理可能な情報処理装置に適用される情報処理方法おいて、
前記データストリームに施される処理が定義された複数のモジュール間の関係を示す構成ファイルを読み出して、各プロセッサの処理能力に応じて、少なくとも1つのプロセッサに前記複数のモジュールを割り当てるステップと、
前記プロセッサへの前記複数のモジュールの割り当てに関する情報に基づいて、バッファ情報を設定するステップと、
前記各プロセッサに、前記モジュールと設定された前記バッファ情報とをロードするステップと、
ロードした前記バッファ情報を用いて、ロードしたモジュールを所定のタイミングで、各プロセッサにおいて実行するステップと、を具備することを特徴とする情報処理方法。 - 請求項10に記載の情報処理方法において、
前記プロセッサは、処理能力が変更可能であり、
前記プロセッサによるモジュールの実行中に、情報処理装置の負荷が変動した場合に、前記プロセッサの処理能力に応じて、前記モジュールをプロセッサに再割り当てするステップを更に具備することを特徴とする情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004286762A JP2006099579A (ja) | 2004-09-30 | 2004-09-30 | 情報処理装置及び情報処理方法 |
US11/235,128 US20060069897A1 (en) | 2004-09-30 | 2005-09-27 | Information processing device and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004286762A JP2006099579A (ja) | 2004-09-30 | 2004-09-30 | 情報処理装置及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006099579A true JP2006099579A (ja) | 2006-04-13 |
Family
ID=36100578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004286762A Pending JP2006099579A (ja) | 2004-09-30 | 2004-09-30 | 情報処理装置及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20060069897A1 (ja) |
JP (1) | JP2006099579A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146503A (ja) * | 2006-12-12 | 2008-06-26 | Sony Computer Entertainment Inc | 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム |
JP2011065353A (ja) * | 2009-09-16 | 2011-03-31 | Nec Corp | 並列処理システム制御装置、その方法及びそのプログラム |
WO2012026582A1 (ja) * | 2010-08-27 | 2012-03-01 | 日本電気株式会社 | シミュレーション装置、分散計算機システム、シミュレーション方法およびプログラム |
WO2013099062A1 (ja) * | 2011-12-28 | 2013-07-04 | 日本電気株式会社 | 解析処理システム |
JPWO2012039216A1 (ja) * | 2010-09-24 | 2014-02-03 | 日本電気株式会社 | 情報処理装置、その方法及びそのプログラム |
JP2015038646A (ja) * | 2010-11-30 | 2015-02-26 | 株式会社東芝 | 情報処理装置及び情報処理方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070270671A1 (en) * | 2006-04-10 | 2007-11-22 | Vivometrics, Inc. | Physiological signal processing devices and associated processing methods |
WO2016027452A1 (ja) * | 2014-08-19 | 2016-02-25 | 日本電気株式会社 | 解析制御装置、解析制御方法及び記録媒体 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088044A (en) * | 1998-05-29 | 2000-07-11 | International Business Machines Corporation | Method for parallelizing software graphics geometry pipeline rendering |
JP2004519043A (ja) * | 2001-02-09 | 2004-06-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 画像処理機能を分散型プロセッサ環境のプログラマブルプラットフォーム上に展開配置するソフトウェアシステム |
JP4280029B2 (ja) * | 2002-05-30 | 2009-06-17 | パナソニック株式会社 | ディジタル信号処理装置およびディジタル信号処理方法 |
-
2004
- 2004-09-30 JP JP2004286762A patent/JP2006099579A/ja active Pending
-
2005
- 2005-09-27 US US11/235,128 patent/US20060069897A1/en not_active Abandoned
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146503A (ja) * | 2006-12-12 | 2008-06-26 | Sony Computer Entertainment Inc | 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム |
JP4756553B2 (ja) * | 2006-12-12 | 2011-08-24 | 株式会社ソニー・コンピュータエンタテインメント | 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム |
JP2011065353A (ja) * | 2009-09-16 | 2011-03-31 | Nec Corp | 並列処理システム制御装置、その方法及びそのプログラム |
WO2012026582A1 (ja) * | 2010-08-27 | 2012-03-01 | 日本電気株式会社 | シミュレーション装置、分散計算機システム、シミュレーション方法およびプログラム |
JPWO2012039216A1 (ja) * | 2010-09-24 | 2014-02-03 | 日本電気株式会社 | 情報処理装置、その方法及びそのプログラム |
JP5825261B2 (ja) * | 2010-09-24 | 2015-12-02 | 日本電気株式会社 | 情報処理装置、その方法及びそのプログラム |
JP2015038646A (ja) * | 2010-11-30 | 2015-02-26 | 株式会社東芝 | 情報処理装置及び情報処理方法 |
WO2013099062A1 (ja) * | 2011-12-28 | 2013-07-04 | 日本電気株式会社 | 解析処理システム |
Also Published As
Publication number | Publication date |
---|---|
US20060069897A1 (en) | 2006-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111052149B (zh) | 用于确定网络中的内存需求的方法和装置 | |
KR100628492B1 (ko) | 실시간 동작 수행방법 및 시스템 | |
CA2678240C (en) | Pipelined image processing engine | |
US9152462B2 (en) | Parallel processing device, parallel processing method, optimization device, optimization method and computer program | |
CN110032395B (zh) | 用于提高资源利用率的统一寄存器文件 | |
US20080022288A1 (en) | Signal Processing Appatatus | |
KR20040069257A (ko) | 다수의 하드웨어 구성들을 가지는 재구성가능한 하드웨어아키텍처의 스케줄링 방법 | |
JP2009528610A (ja) | タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置 | |
JP2010122758A (ja) | ジョブ管理装置、ジョブ管理方法およびジョブ管理プログラム | |
US9471387B2 (en) | Scheduling in job execution | |
CN103049328A (zh) | 计算机***中内存资源分配方法 | |
US20060069897A1 (en) | Information processing device and information processing method | |
US20110153971A1 (en) | Data Processing System Memory Allocation | |
CN116048745A (zh) | 多模块gpu的分时调度方法、***、电子设备及存储介质 | |
KR20200052558A (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법 | |
JP5810918B2 (ja) | スケジューリング装置、スケジューリング方法及びプログラム | |
JP5355152B2 (ja) | 動的再構成装置 | |
JPH09293057A (ja) | 階層構造型マルチプロセッサシステムにおけるタスク割り当て方法 | |
WO2014027444A1 (ja) | スケジューリング装置、及び、スケジューリング方法 | |
JP7217341B2 (ja) | プロセッサおよびレジスタの継承方法 | |
KR20070031307A (ko) | 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품 | |
CN113177211A (zh) | 用于隐私计算的fpga芯片、异构处理***及计算方法 | |
CN117742977B (zh) | 芯片内存数据拷贝方法、电子设备和介质 | |
JP5968497B2 (ja) | 制御方法、システム及びプログラム | |
Das | Algorithmic Foundation of Parallel Paging and Scheduling under Memory Constraints |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070822 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090427 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090512 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091006 |