(57)【要約】【課題】オンデマンドでのプログラムのインストールと、その使用ができる汎用プロセッシング・エレメントを提供すること。【解決手段】汎用のためのプロセッシング・エレメントであって、  特定の機能を汎用の前記プロセッシング・エレメントに実現するためのプログラムを保持することができるプログラム保持部を備えていることを特徴とするプロセッシング・エレメントである。本発明の分散処理システムは、コントロール・ユニットと、コントロール・ユニットに接続されている複数のプロセッシング・エレメントと、クライアントと、を有する分散処理システムであって、複数のプロセッシング・エレメントは、上述のプロセッシング・エレメントを含むことを特徴とする。【選択図】図１
2010224942.tif 000002
【特許請求の範囲】
【請求項１】
汎用のためのプロセッシング・エレメントであって、
特定の機能を汎用の前記プロセッシング・エレメントに実現するためのプログラムを保持することができるプログラム保持部を備えていることを特徴とするプロセッシング・エレメント。
【請求項２】
前記プログラム保持部には、前記ソフトウエアで構成される部分は、前記プログラムを保持するためのスロットを少なくとも１つ有する請求項１に記載のプロセッシング・エレメント。
【請求項３】
前記スロットは、予め定められた複数の数量だけ設けられている請求項２に記載のプロセッシング・エレメント。
【請求項４】
前記スロットは、予め定められていない複数の数量だけ設けられている請求項２に記載のプロセッシング・エレメント。
【請求項５】
前記プロセッシング・エレメントは、保持された 前記プログラムを格納する格納部 を有する請求項１〜４のいずれか一項に記載のプロセッシング・エレメント。
【請求項６】
アンロードされた前記プログラムを保持するためのマガジン部を有する請求項１〜５のいずれか一項に記載のプロセッシング・エレメント。
【請求項７】
前記プロセッシング・エレメントは、前記プログラムを適切なタイミングで実行させる機能を有する請求項１〜６のいずれか一項に記載のプロセッシング・エレメント。
【請求項８】
コントロール・ユニットと、
前記コントロール・ユニットに接続されている複数のプロセッシング・エレメントと、
クライアントと、を有する分散処理システムであって、
複数の前記プロセッシング・エレメントは、請求項１〜７のいずれか一項に記載のプロセッシング・エレメントを含むことを特徴とする分散処理システム。
【請求項９】
前記クライアントは、前記プロセッシング・エレメントに保持されている前記プログラムをアンロードするための信号を送る請求項８に記載の分散処理システム。
【請求項１０】
前記コントロール・ユニットは、前記プロセッシング・エレメント保持されている前記プログラムをアンロードするための信号を送る請求項８に記載の分散処理システム。
【請求項１１】
前記プロセッシング・エレメントは、前記プロセッシング・エレメント保持されている前記プログラムをアンロードするための信号を送る請求項８に記載の分散処理システム。
【請求項１２】
単一マシンと、
前記単一マシン上で扱われる複数の汎用プロセッシング・エレメントと、を備え、
前記汎用プロセッシング・エレメントは、請求項１に記載の汎用プロセッシング・エレメントであることを特徴とするプロセッシング・エレメント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッシング・エレメントに関するものである。
【背景技術】
【０００２】
従来のクライアント-サーバ型システムでは、事前に使いたいプログラムをサーバにインストールする。そして、クライアントからそのサーバと通信して、特定の処理をさせる。例えば、有限要素法の計算において、サーバに計算プログラムをインストールしておく。そして、クライアントからサーバへデータを送り、サーバで計算させる。最後に、サーバからクライアントへ結果を返させるようなことが行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−３３７８１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、予め決められたサーバに対して、予め決められたプログラムを用意しておき、そのプログラムをクライアントから利用するものである。そのため、事前にサーバにプログラムをインストールしておく必要があること、クライアントとサーバがネットワークの観点で離れた場所に存在する場合、通信に時間がかかること、特定のサーバに負荷が集中することがあることなどの問題がある。
【０００５】
本発明は、上記に鑑みてなされたものであって、クライアントの近くにあるネットワークへのオンデマンドでのプログラムのインストールと、その使用ができる汎用のプロセッシング・エレメント及び分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明のプロセッシング・エレメントは、汎用のためのプロセッシング・エレメントであって、
特定の機能を汎用の前記プロセッシング・エレメントに実現するためのプログラムを保持することができるプログラム保持部を備えていることを特徴とする。
【０００７】
また、本発明の好ましい態様によれば、前記プログラム保持部には、前記ソフトウエアで構成される部分は、前記プログラムを保持するためのスロットを少なくとも１つ有することが望ましい。
【０００８】
また、本発明の好ましい態様によれば、前記スロットは、予め定められた複数の数量だけ設けられていることが望ましい。
【０００９】
また、本発明の好ましい態様によれば、前記スロットは、予め定められていない複数の数量だけ設けられていることが望ましい。
【００１０】
また、本発明の好ましい態様によれば、前記プロセッシング・エレメントは、保持された 前記プログラムを格納する格納部 を有することが望ましい。
【００１１】
また、本発明の好ましい態様によれば、アンロードされた前記プログラムを保持するためのマガジン部を有することが望ましい。
【００１２】
また、本発明の好ましい態様によれば、前記プロセッシング・エレメントは、前記プログラムを適切なタイミングで実行させる機能を有することが望ましい。
【００１３】
また、本発明の分散処理システムは、
コントロール・ユニットと、
前記コントロール・ユニットに接続されている複数のプロセッシング・エレメントと、
クライアントと、を有する分散処理システムであって、
複数の前記プロセッシング・エレメントは、上述のプロセッシング・エレメントを含むことを特徴とする。
【００１４】
また、本発明の好ましい態様によれば、前記クライアントは、前記プロセッシング・エレメントに保持されている前記プログラムをアンロードするための信号を送ることが望ましい。
【００１５】
また、本発明の好ましい態様によれば、前記コントロール・ユニットは、前記プロセッシング・エレメント保持されている前記プログラムをアンロードするための信号を送ることが望ましい。
【００１６】
また、本発明の好ましい態様によれば、前記プロセッシング・エレメントは、前記プロセッシング・エレメント保持されている前記プログラムをアンロードするための信号を送ることが望ましい。
【００１７】
また、本発明の好ましい態様によれば、
単一マシンと、
前記単一マシン上で扱われる複数の汎用プロセッシング・エレメントと、を備え、
前記汎用プロセッシング・エレメントは、上述の汎用プロセッシング・エレメントであることが望ましい。
【発明の効果】
【００１８】
本発明によれば、ネットワーク上に存在する汎用のプロセッシング・エレメントに、クライアントからの要求に応じて任意の行わせたい処理を実行させることができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】本発明の汎用プロセッシング・エレメントの概略構成を示す図である。
【図２】本発明の汎用プロセッシング・エレメントの概略構成を示す他の図である。
【図３】汎用プロセッシング・エレメントのコントロール・ユニットへの登録を示す図である。
【図４】通信データの構造を示す図である。
【図５】コントロール・ユニットから汎用プロセッシング・エレメントにダイナミック・プロセッシング・ライブラリＤをロードするフローチャートである。
【図６】コントロール・ユニットから汎用プロセッシング・エレメントにダイナミック・プロセッシング・ライブラリをロードする手順を示すシーケンス図である。
【図７】汎用プロセッシング・エレメントでのダイナミック・プロセッシング・ライブラリをロードする手順を示すフローチャートである。
【図８】スロット数が可変である汎用プロセッシング・エレメントのロード判定部における手順を示すフローチャートである。
【図９】コントロール・ユニットから汎用プロセッシング・エレメントへのダイナミック・プロセッシング・ライブラリの手順を示すシーケンス図である。
【図１０】コントロール・ユニットからの指示でDPLリポジトリからダイナミック・プロセッシング・ライブラリを汎用プロセッシング・エレメントにロードの手順を示すシーケンス図である。
【図１１】タスク実行の手順を示すフローチャートである。
【図１２】タスク実行の手順を示すシーケンス図である。
【図１３】クライアントからDPLアンロード要求時の手順を示すシーケンス図である。
【図１４】タスク識別子を指定した汎用プロセッシング・エレメントにおけるダイナミック・プロセッシング・ライブラリのアンロードの手順を示すフローチャートである。
【図１５】タスク識別子を指定した汎用プロセッシング・エレメントにおけるダイナミック・プロセッシング・ライブラリのリムーブの手順を示すフローチャートである。
【図１６】コントロール・ユニットから汎用プロセッシング・エレメントへのアンローの手順を示すシーケンス図である。
【図１７】コントロール・ユニットからの指示で汎用プロセッシング・エレメントでのアンロード処理の手順を示すフローチャートである。
【図１８】タスク識別子の指定なしのとき、マガジンからリムーブするダイナミック・プロセッシング・ライブラリを選択する手順を示すフローチャートである。
【図１９】タスク識別子指定なしのとき、スロットからアンロードするダイナミック・プロセッシング・ライブラリを選択する手順を示すフローチャートである。
【図２０】コントロール・ユニットから汎用プロセッシング・エレメントにダイナミック・プロセッシング・ライブラリを再ロードさせるときのシーケンス図である。
【図２１】ダイナミック・プロセッシング・ライブラリの再ロードの手順を示すフローチャートである。
【図２２】汎用プロセッシング・エレメント自身がダイナミック・プロセッシング・ライブラリをアンロードする手順を示すフローチャートである。
【図２３】コントロール・ユニットからダイナミック・プロセッシング・ライブラリを汎用プロセッシング・エレメントにロードして処理するときのシーケンス図である。
【図２４】ＤＰＬリポジトリからダイナミック・プロセッシング・ライブラリを汎用プロセッシング・エレメントにロードして処理するシーケンス図である。
【図２５】ＪＰＥＧエンコードの手順を示すフローチャートである。
【図２６】プロセッシング・エレメントをコントロール・ユニットへ登録する手順を示すシーケンス図である。
【図２７】クライアントからＤＣＴ ＤＰＬをロードする手順を示すシーケンス図である。
【図２８】クライアントからＪＰＥＧエンコードを実行するときの手順を示すシーケンス図である。
【図２９】ＤＣＴの処理に汎用プロセッシング・エレメントが使われる手順を示すシーケンス図である。
【図３０】サービス実行要求時にタスクが実行できずにエラーとなるケースを示すシーケンス図である。
【図３１】ＪＰＥＧエンコード時にサービスが不足しており、そのダイナミック・プロセッシング・ライブラリをロードする手順を示すシーケンス図である。
【図３２】クライアントからＪＰＥＧエンコードを実行するときの手順を示すシーケンス図である。
【図３３】色信号変換とＤＣＴの処理に汎用プロセッシング・エレメントが使われるときの手順を示すシーケンス図である。
【図３４】クライアントからＤＣＴ ＤＰＬを送信し、汎用プロセッシング・エレメントで既存ダイナミック・プロセッシング・ライブラリがアンロードされ、ＤＣＴ ＤＰＬがロードされるときの手順を示すシーケンス図である。
【図３５】ダイナミック・プロセッシング・ライブラリをロードしようとして空スロットがなくエラーとなるときの手順を示すシーケンス図である。
【図３６】ＰＥ登録の手順を示すシーケンス図である。
【図３７】単一マシンで２つの汎用プロセッシング・エレメントが動くＪＰＥＧエンコードの手順を示すシーケンス図である。
【発明を実施するための形態】
【００２０】
以下に、本発明にかかるプロセッシング・エレメントの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【００２１】
図１は、本発明にかかるプロセッシング・エレメントの概略構成を示している。
汎用プロセッシング・エレメント１００は、複数のスロット１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅを有している。スロット１１０ａ〜１１０ｅは、プログラム保持部に対応する。
【００２２】
汎用プロセッシング・エレメント１００は、後述するマガジンン１０３を有する。そして、汎用プロセッシング・エレメント１００は、コントロール・ユニット２００に接続されている。
【００２３】
汎用プロセッシング・エレメント１００は、例えば汎用のＣＰＵで構成されている。汎用プロセッシング・エレメント１００は、プロセッシング・エレメントの種類に適したプログラムを適宜ロードする。このプログラムを、ダイナミック・プロッセッシング・ライブラリＤＰＬと呼ぶ。これにより、プロセッシング・エレメント１００は、所定のタスクを実行することができる。
【００２４】
次に、以下の説明において使用する用語について予め説明する。
＜クライアント＞
クライアントは、ユーザが持っている端末装置である。クライアントは、コントロール・ユニット及びプロセッシング・エレメントに指示を送信する。
【００２５】
＜コントロール・ユニット＞
コントロール・ユニットは、プロセッシング・エレメントの情報の管理、ユーザの要求に応じて使用するプロセッシング・エレメントの決定、処理経路の管理、サービス実行時のタスク実行遷移の管理、などを行う制御部をいう。
【００２６】
＜専用プロセッシング・エレメント＞
専用プロセッシング・エレメントは、計算で使われるノードであり、特定の処理、すなわち後述するタスクを提供する。専用プロセッシング・エレメントは、一つ以上のタスクを処理する機能と、処理に必要なデータ入出力機能やデータ格納機能を有している。
【００２７】
＜汎用プロセッシング・エレメント＞
汎用プロセッシング・エレメントは、計算で使われるノードであり、以下のダイナミック・プロセッシング・ライブラリにより任意のタスク処理が可能である。
【００２８】
＜ダイナミック・プロセッシング・ライブラリ＞
ダイナミック・プロセッシング・ライブラリとは、汎用プロセッシング・エレメントにロードし、タスクの実行を提供するファイル（プログラム）をいう。以下、適宜ＤＰＬと称する。
【００２９】
＜タスク＞
プロセッシング・エレメントが提供する特定の処理をいう。例えばＪＰＥＧのエンコード処理はダウンサンプリング、ＤＣＴなどの複数の処理ブロックに分けられる。このうち、ある特定の処理ブロック、例えば「ダウンサンプリング」がタスクに該当する。各タスクにはタスク識別子(ＴＩＤ)と呼ぶ識別番号がつけられている。なお、本明細書において、一般的によく使われるタスクには、識別子が割り当てられており、このタスク識別子は、誰もが知っているとする。
【００３０】
＜サービス＞
サービスとは、一つ以上の関連を持つタスクの集合をいう。サービスはタスクよりもまとまった意味のある処理を実現するものである。例えば、ＪＰＥＧエンコード処理は、サービスの一例である。サービスにもサービス識別子(ＳＩＤ)と呼ぶ一意の識別番号がついている。
【００３１】
＜ロード＞
ロードとは、汎用プロセッシング・エレメントのスロットにダイナミック・プロセッシング・ライブラリＤＰＬが格納されて、汎用プロセッシング・エレメントにおいてダイナミック・プロセッシング・ライブラリＤＰＬの妥当性を検証し、使える状態になることをいう。
【００３２】
＜スロット＞
スロットとは、汎用プロセッシング・エレメント内にある、実行可能なダイナミック・プロセッシング・ライブラリＤＰＬが置かれる場所をいう。汎用プロセッシング・エレメントには最低1つのスロットがある。プログラム保持部に対応する。
【００３３】
＜マガジン＞
マガジンは、汎用プロセッシング・エレメント内にある、スロットに入りきらないダイナミック・プロセッシング・ライブラリＤＰＬが退避する場所である。マガジンが存在しない汎用プロセッシング・エレメントもある。
【００３４】
＜アンロード＞
アンロードとは、汎用プロセッシング・エレメントのスロットからダイナミック・プロセッシング・ライブラリＤＰＬが取り除かれ、そのダイナミック・プロセッシング・ライブラリＤＰＬが提供するサービスが利用できなくなることをいう。アンロードされたダイナミック・プロセッシング・ライブラリＤＰＬは、マガジンに移動、または、次に説明するリムーブされる。
【００３５】
＜リムーブ＞
リムーブとは、汎用プロセッシング・エレメントからダイナミック・プロセッシング・ライブラリＤＰＬが削除されることをいう。ダイナミック・プロセッシング・ライブラリＤＰＬがリムーブされると、そのダイナミック・プロセッシング・ライブラリＤＰＬが再ロードされない限り利用できなくなる。
【００３６】
図２は、汎用プロセッシング・エレメント１００の概略構成を示している。汎用プロセッシング・エレメント１００は、ダイナミック・プロセッシング・ライブラリＤＰＬの機能を発現できる構成を有している。汎用プロセッシング・エレメント１００は制御部１０１を備える。制御部１０１は、ハードウエアで構成すること、ソフトウエアで構成することのいずれでも良い。
【００３７】
例えば、制御部である汎用プロセッシング・エレメント・プログラムは、コンピュータのＯＳ上で動作するソフトウエアである。汎用プロセッシング・エレメント・プログラムは、専用プロセッシング・エレメント、汎用プロセッシング・エレメント、コントロール・ユニットと通信すること、ダイナミック・プロセッシング・ライブラリＤＰＬに対して処理するデータの引き渡し、結果の受け取り、送信を行う。本明細書では、「汎用プロセッシング・エレメント」とは、汎用プロセッシング・エレメント・プログラムのことをいう。
【００３８】
次に、汎用プロセッシング・エレメントの機能を説明する。汎用プロセッシング・エレメントは、以下の機能を有する。
（１）ダイナミック・プロセッシング・ライブラリＤＰＬをロードする機能
（２）ロードされたダイナミック・プロセッシング・ライブラリＤＰＬのタスクを提供する機能、換言すると、ロードしたタスクを提供するＰＥとして動作する機能
（３）ダイナミック・プロセッシング・ライブラリＤＰＬをキャッシュする機能
（４）ダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする機能
（５）ダイナミック・プロセッシング・ライブラリＤＰＬをリムーブする機能
【００３９】
次に、上記各機能を説明する。
ダイナミック・プロセッシング・ライブラリＤＰＬをロードする機能では、まずコントロール・ユニットが汎用プロセッシング・エレメントを管理する。適切なダイナミック・プロセッシング・ライブラリＤＰＬを汎用プロセッシング・エレメントにロードできるようにするために、汎用プロセッシング・エレメントをコントロール・ユニットに登録する際に、以下の情報をコントロール・ユニットに登録する。
・汎用プロセッシング・エレメントがサポートするＯＳ
・汎用プロセッシング・エレメントがサポートするＣＰＵアーキテクチャ
・空きスロット数
・待ち受けＴＣＰポート番号
【００４０】
ＯＳは、例えばWindows（登録商標） 32ビット版 または 64ビット版、Linuxなどをいう。ＣＰＵとは、Intel社のPentium（登録商標）x86やCore 2 Duo x64などをいう。いずれの場合も、ＯＳやＣＰＵに対応する数値が定義されている。この数値は、コントロール・ユニットにおいて、いずれの汎用プロセッシング・エレメントに対して、いずれのダイナミック・プロセッシング・ライブラリＤＰＬがロード可能かを判断するために使われる。
【００４１】
空きスロット数とは、汎用プロセッシング・エレメントにロードできるダイナミック・プロセッシング・ライブラリＤＰＬの数量を示す値をいう。ダイナミック・プロセッシング・ライブラリＤＰＬが同時に１つだけロードできるとき、空きスロット数＝１である。ダイナミック・プロセッシング・ライブラリＤＰＬが５つまでロードできるとき、空きスロット数＝５である。
【００４２】
スロット数には、２通りの構成がある、１つ目は、ダイナミック・プロセッシング・ライブラリＤＰＬを保持できるスロット数が静的に決まっている、すなわちスロット数の最大数が決まっている構成である。２つ目は、スロット数が動的に増減する構成である。
【００４３】
動的なスロット数を有する汎用プロセッシング・エレメントは、コントロール・ユニット登録時において、空きスロット数＝−１として情報が送られる。スロット数が静的に決まっているプロセッシング・エレメントを、スロット数固定汎用プロセッシング・エレメントという。また、スロット数が動的に増減するプロセッシング・エレメントを、スロット数可変汎用プロセッシング・エレメントという。
【００４４】
空きスロット数は、コントロール・ユニットと汎用プロセッシング・エレメントにおいて、コントロール・ユニットが汎用プロセッシング・エレメントに対して、ダイナミック・プロセッシング・ライブラリＤＰＬをロードすると１つ減ぜられ、またダイナミック・プロセッシング・ライブラリＤＰＬをアンロードすると１つ増える。コントロール・ユニットが、汎用プロセッシング・エレメントからダイナミック・プロセッシング・ライブラリＤＰＬがアンロードされたことを認識する手順については、後述する。
【００４５】
また、ダイナミック・プロセッシング・ライブラリＤＰＬは、空きスロットに対してのみロードできる。このため、空きスロットが０である汎用プロセッシング・エレメントには、ダイナミック・プロセッシング・ライブラリＤＰＬはロードできない。
さらに、汎用プロセッシング・エレメントが備えるマガジン１０３からスロット１１０ａ等にダイナミック・プロセッシング・ライブラリＤＰＬが移動することも同じくロードという。
【００４６】
待ち受けＴＣＰポート番号は、汎用プロセッシング・エレメントが他からの接続を待ち受けるＴＣＰのポート番号である。ここでは説明の都合上、通信にＴＣＰ／ＩＰを使用して説明するがこれには限定されない。なお、汎用プロセッシング・エレメントのＩＰアドレスは、以下の手順で述べる。最初に汎用プロセッシング・エレメントからコントロール・ユニットへ接続するとき、コントロール・ユニット側では汎用プロセッシング・エレメントのＩＰアドレスを知ることができる。このため登録情報には、待ち受けＴＣＰポート番号を含めない。
【００４７】
図３は、汎用プロセッシング・エレメントＰＥ１、ＰＥ２、ＰＥ３をコントロール・ユニットＣＵに登録する手順を示している。図３において、実線矢印で示す流れでは、図４に示すようなデータ構造の形式で通信が行われる。データ構造は、ヘッダ部とデータ部と有している。ヘッダ部には、要求の内容などを示す情報が格納されている。データ部に格納される内容は、ヘッダ部の内容に依存している。
【００４８】
図３において、まず、シーケンス（１）において、汎用プロセッシング・エレメントＰＥ１は、コントロール・ユニットＣＵへＰＥ登録要求を送信する。このとき送信する内容を表１に掲げる。
【００４９】
（表１）
情報                説明
ＣＰＵ              ＰＥのＣＰＵ種別
ＯＳ                ＰＥのＯＳ種別
ＴＩＤ              ＰＥで提供するタスク識別子（複数でもよい）。
汎用ＰＥのときは"999"とする。
空きスロット数      専用ＰＥは０、
汎用ＰＥで静的に決まっているときはその数、
汎用ＰＥで動的に変わるときは−１
待ち受けポート番号  汎用ＰＥで使用するＴＣＰポート番号
【００５０】
汎用プロセッシング・エレメントと専用プロセッシング・エレメントとは、共に同じ情報を送信する。コントロール・ユニットＣＵは、送信されたＴＩＤで汎用プロセッシング・エレメントか専用プロセッシング・エレメントかを区別する。
【００５１】
シーケンス（２）において、コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥ１−ＰＥ３を内部のＰＥ管理テーブルに登録する。そして、コントロール・ユニットＣＵは、そのコントロール・ユニット内で一意なプロセッシング・エレメント識別子（ＰＥＩＤ）を発行して、表２に掲げる内容を応答として送信する。
【００５２】
（表２）
情報            説明
ＰＥＩＤ      ＰＥ識別子
【００５３】
また、コントロール・ユニットＣＵのＰＥ管理テーブルでは、コントロール・ユニットＣＵに登録された専用ＰＥ、汎用プロセッシング・エレメントの情報を保持している。表３、表４は、それぞれＰＥ管理テーブルが保持する情報内容と、その例を示している。そして、シーケンス（３）、（４）、（５）、（６）において、他の汎用プロセッシング・エレメントＰＥ２、ＰＥ３も同じ動作を行う。ここで、コントロール・ユニットＣＵに対して登録する順番は関係ない。
【００５４】
表３に、コントロール・ユニットＣＵ内の管理テーブルを示す。
（表３）
情報                説明
ＰＥアドレス        ＰＥのＩＰアドレス
ＰＥＩＤ            ＰＥのＩＤ
ＣＰＵ              ＰＥのＣＰＵ種別
ＯＳ                ＰＥのＯＳ種別
ＴＩＤ              当該ＰＥで実行可能なＴＩＤ
空きスロット数      現在の空きスロットの数
待ち受けポート番号  ＰＥの待ち受けポート番号
【００５５】
（表４）
情報              PE1                    PE2                  PE3
PEアドレス      192.168.0.101:1234  192.168.0.102:1234  192.168.0.103:1234
（ポート番号）
ＰＥＩＤ          １                    ２                    ３
ＣＰＵ            Ａ社                  Ｂ社                  Ａ社
ＯＳ              Ｘ                    Ｙ                    Ｚ
ＴＩＤ            ９９９                ９９９                ９９９
空きスロット数    ５                    １                    −１
【００５６】
次に、ダイナミック・プロセッシング・ライブラリＤＰＬはコントロール・ユニットＣＵから汎用プロセッシング・エレメントＰＥ１−ＰＥ３に送られる。ここで、コントロール・ユニットＣＵは、すでにダイナミック・プロセッシング・ライブラリＤＰＬとその情報を保持しているものとする。
【００５７】
図５は、ダイナミック・プロセッシング・ライブラリＤＰＬが汎用プロセッシング・エレメントＰＥ１−ＰＥ３にロードされる手順を示すフローチャートである。
ステップＳ４０１において、コントロール・ユニットＣＵはＰＥ管理テーブルを参照し、そのダイナミック・プロセッシング・ライブラリＤＰＬをロードできる汎用プロセッシング・エレメントを検索する。
【００５８】
ステップＳ４０２において、複数の汎用プロセッシング・エレメントが見つかった場合、空きスロットのある、最初に見つかった汎用プロセッシング・エレメントを選択する。ステップＳ４０２において、汎用プロセッシング・エレメントが見つからないとき、ロード処理は終了する。
【００５９】
ステップＳ４０２の判断結果が真のとき、ステップＳ４０３において、ロード可能な全ての汎用プロセッシング・エレメントについて、空きスロットの有無が判断される。空きスロットが一つも無いときは、ステップＳ４１０において、最初の汎用プロセッシング・エレメントＰＥ１から順に、アンロード要求を送信する。アンロード要求の内容を表５に掲げる。また、アンロードされたときにコントロール・ユニットに返される情報を表６に示す。アンロードの詳細については後述する。
【００６０】
（表５）
情報        説明
ＴＩＤ      タスク識別子
（表６）
情報        説明
ＰＥＩＤ    ＰＥ識別子
ＴＩＤ      タスク識別子
【００６１】
ステップＳ４２０において、ダイナミック・プロセッシング・ライブラリＤＰＬがアンロードされた汎用プロセッシング・エレメントの有無が判断される。アンロードされた汎用ＰＥが存在するときは、ステップＳ４３０において、ＰＥ管理テーブルの、その該当する汎用プロセッシング・エレメントの空きスロットを１つ増やし、タスク識別子ＴＩＤを削除する。そして、ステップＳ４０５のＤＰＬ送信へ進む。
アンロードされた汎用ＰＥが存在しない場合、処理は終了する。
【００６２】
ここで、アンロード要求の後に、汎用プロセッシング・エレメントに既にロードされている別のダイナミック・プロセッシング・ライブラリＤＰＬが追い出されてリムーブ通知を受け取ることもある。また、ダイナミック・プロセッシング・ライブラリＤＰＬが、一つもアンロードされないときは、さらにダイナミック・プロセッシング・ライブラリＤＰＬをロードすることが不可能なので、終了する。
【００６３】
次に、ステップＳ４０３の判断結果が偽の場合、ステップＳ４０４において、ダイナミック・プロセッシング・ライブラリＤＰＬをロード可能な汎用プロセッシング・エレメントを選択する。ステップＳ４０５において、その汎用プロセッシング・エレメントに対してダイナミック・プロセッシング・ライブラリＤＰＬを送信する。この時に送信する情報の内容を表７に示す。
【００６４】
（表７）
情報        説明
ＴＩＤ      タスク識別子
ＤＰＬ      ＤＰＬファイル
【００６５】
ステップＳ４０７において、コントロール・ユニットＣＵが結果を受信したか否かが判断される。スロット数が予め決められていない汎用プロセッシング・エレメント、すなわちスロット数が動的に変わる汎用プロセッシング・エレメントでは、そのときの汎用プロセッシング・エレメントの状態によってはエラーになることもある。結果受信に失敗したときは、ロード処理を終了する。
【００６６】
ステップＳ４０７の結果受信に成功した場合、ステップＳ４０８において、ＰＥ管理テーブルの空きスロット数を１つ減らす。このとき、動的なスロット数を有する汎用プロセッシング・エレメントの場合は、空きスロット数を変更しない。
ステップＳ４０９において、ＰＥ管理テーブルのＴＩＤに対してロードしたダイナミック・プロセッシング・ライブラリＤＰＬのＴＩＤを加え、処理を終了する。
【００６７】
図６は、ダイナミック・プロセッシング・ライブラリＤＰＬをロードするときの手順を示すシーケンス図である。ここでは、Ｂ社製のＣＰＵ、ＯＳは”Ｙ”で動作するダイナミック・プロセッシング・ライブラリＤＰＬを、コントロール・ユニットＣＵが汎用プロセッシング・エレメントＰＥ２に送るときのシークエンスである。
【００６８】
コントロール・ユニットＣＵは、上述したアルゴリズムに基づいて、このようなダイナミック・プロセッシング・ライブラリＤＰＬをロード可能な汎用プロセッシング・エレメントは汎用プロセッシング・エレメントＰＥ２であると認識する。
【００６９】
（１）汎用プロセッシング・エレメントＰＥ２のスロットも空いているので、汎用プロセッシング・エレメントＰＥ２に対してダイナミック・プロセッシング・ライブラリＤＰＬを送信する。
【００７０】
（２）また、汎用プロセッシング・エレメントＰＥ２は、ダイナミック・プロセッシング・ライブラリＤＰＬを受信すると、ダイナミック・プロセッシング・ライブラリＤＰＬをチェックしてスロット（図１で示す１１０ａ等）にロードする。
（３）そして、汎用プロセッシング・エレメントＰＥ２は、結果をコントロール・ユニットＣＵに送信する。
【００７１】
次に、上述した汎用プロセッシング・エレメントＣＵでのダイナミック・プロセッシング・ライブラリＤＰＬロード処理を、図７に示すフローチャートを用いて説明する。
ステップＳ６０１において、汎用プロセッシング・エレメントＰＥ２は、ダイナミック・プロセッシング・ライブラリＤＰＬを受信する。
ステップＳ６０２において、受信したダイナミック・プロセッシング・ライブラリＤＰＬをロードすると、空きスロットがなくなるか否か、が判断される。
【００７２】
空きスロット＝０となる場合、ステップＳ６０３において、既にロードしているダイナミック・プロセッシング・ライブラリＤＰＬでアンロード可能なものがあればアンロードする。この処理はアンロードの項で述べる。
また、ステップＳ６０２において、空きスロット数がゼロにならなければ、ステップＳ６０４へ進む。
【００７３】
ステップＳ６０４において、ダイナミック・プロセッシング・ライブラリＤＰＬに実装されているタスク実行に必要な関数が利用可能かが判断される。ステップＳ６０４において、不備がある場合、ステップＳ６０９に進み、この時点でエラーとなる。なお、ダイナミック・プロセッシング・ライブラリＤＰＬの関数の詳細については、「ロードされたダイナミック・プロセッシング・ライブラリＤＰＬのタスクを提供する機能」で後述する。
【００７４】
ステップＳ６０４の判断結果が真のとき、ステップＳ６０５において、ダイナミック・プロセッシング・ライブラリＤＰＬの初期化関数を呼び出す。ステップＳ６０６において、このダイナミック・プロセッシング・ライブラリＤＰＬの情報を汎用プロセッシング・エレメントＰＥ２のＤＰＬ管理テーブルに登録する。登録が完了した時点で、ロード完了となる。
【００７５】
表８に、汎用プロセッシング・エレメントのＤＰＬ管理テーブルに記録される情報を示す。
（表８）
情報            説明
ＴＩＤ            タスク識別子
使用数            現在使用されているタスクの数
ロード時刻        このＤＰＬがロードされた時刻
最終使用時刻      このＤＰＬが最後に使用された時刻
保存場所          ＤＰＬがスロットにあるかマガジンにあるか
【００７６】
ステップＳ６０７において、ＤＰＬ管理テーブルへの登録が成功したか、が判断される。登録が失敗した場合、ステップＳ６０９へ進み、ロード処理は終了する。
ステップＳ６０７の判断結果が真（Ｙｅｓ）の場合、ステップＳ６０８において、空きスロット数を１つ減ずる（スロット数が固定の汎用プロセッシング・エレメントの場合）。そして、ステップＳ６０９において、ロード結果を、コントロール・ユニットＣＵへ送信する。
【００７７】
ここで、スロット数が可変である汎用プロセッシング・エレメントでは、予めスロット数が決められていない。この場合、ダイナミック・プロセッシング・ライブラリＤＰＬの数量を無制限にロードできるわけではない。
このため、例えば、現在実行しているタスクが一定数を超えている場合、または、ＣＰＵ負荷が高い場合などに、図８に示すステップＳ８０１を設けて、ロード時にエラーとすることが考えられる。
【００７８】
次に、クライアントＣＬから汎用プロセッシング・エレメントにダイナミック・プロセッシング・ライブラリＤＰＬをロードする手順を説明する。ここで、クライアントＣＬはコントロール・ユニットＣＵのアドレスを知っているとする。
【００７９】
まず、図９に示すように、クライアントＣＬは、コントロール・ユニットＣＵにダイナミック・プロセッシング・ライブラリＤＰＬを送信する。この時に、送信する情報を表９に示す。
【００８０】
（表９）
情報      説明
ＴＩＤ    タスク識別子
ＣＰＵ    ＤＰＬが動作するＣＰＵ種別
ＯＳ      ＤＰＬが動作するＯＳ種別
ＤＰＬ    ＤＰＬファイルの内容
【００８１】
図９において、（１）コントロール・ユニットＣＵは、ダイナミック・プロセッシング・ライブラリＤＰＬを汎用プロセッシング・エレメントにロードする。
（２）ロード処理は、上記述した手順で行われる。
（３）コントロール・ユニットＣＵは、ロード結果をクライアントＣＬに送信する。
【００８２】
ここで、汎用プロセッシング・エレメントには、様々なダイナミック・プロセッシング・ライブラリＤＰＬを保持しているＤＰＬリポジトリからもロードできる。ＤＰＬリポジトリには、表９で示す内容とダイナミック・プロセッシング・ライブラリＤＰＬとがセットで登録されている。そして、外部から、タスク識別子ＴＩＤを指定して、そのタスクを提供するダイナミック・プロセッシング・ライブラリＤＰＬを取得することができる。
【００８３】
クライアントＣＬからタスク識別子ＴＩＤを指定する。指定されたタスク識別子ＴＩＤが、ＤＰＬリポジトリ内に存在する場合、ダイナミック・プロセッシング・ライブラリＤＰＬリポジトリからＤＰＬを汎用プロセッシング・エレメントにロードする。
【００８４】
次に、図１０を参照して、クライアントＣＬからの指示にもとづいて、コントロール・ユニットＣＵがＤＰＬリポジトリからダイナミック・プロセッシング・ライブラリＤＰＬを取得し、汎用プロセッシング・エレメントＰＥにロードする手順を説明する。なお、コントロール・ユニットＣＵは、ＤＰＬリポジトリの情報を事前に取得しているとする。
【００８５】
（１）クライアントＣＬはコントロール・ユニットＣＵに対して、ロード要求としてロードしたいダイナミック・プロセッシング・ライブラリＤＰＬのタスク識別子ＴＩＤを送信する。
（２）コントロール・ユニットＣＵは、ＤＰＬリポジトリが、このロードしたいダイナミック・プロセッシング・ライブラリＤＰＬを保有しているか否かをタスク識別子ＴＩＤを送信し、問い合わせる。
【００８６】
（３）ＤＰＬリポジトリは、該当するダイナミック・プロセッシング・ライブラリＤＰＬを保有しているか検索し、結果をコントロール・ユニットＣＵへ送信する。
（４）ダイナミック・プロセッシング・ライブラリＤＰＬが見つかった場合、ＤＰＬリポジトリは、結果と一緒にダイナミック・プロセッシング・ライブラリＤＰＬもコントロール・ユニットＣＵへ送信する。
【００８７】
（４）コントロール・ユニットＣＵは、ダイナミック・プロセッシング・ライブラリＤＰＬを取得したとき、汎用プロセッシング・エレメントＰＥへのロード処理を実行する。
（５）コントロール・ユニットＣＵは、クライアントＣＬに対して、ダイナミック・プロセッシング・ライブラリＤＰＬをロードできたか、できなかったかという結果を送信する。
【００８８】
次に、ダイナミック・プロセッシング・ライブラリＤＰＬをキャッシュする機能について説明する。
【００８９】
ロードされたダイナミック・プロセッシング・ライブラリＤＰＬは、ユーザからの利用が終了したらすぐに汎用プロセッシング・エレメントＰＥからなくなるのではない。再度、すぐに利用されることを想定して、汎用プロセッシング・エレメントＰＥに残しておく。ダイナミック・プロセッシング・ライブラリＤＰＬを汎用プロセッシング・エレメントＰＥに保持しておく機能を、キャッシュ機能と呼ぶ。
【００９０】
キャッシュされたダイナミック・プロセッシング・ライブラリＤＰＬは、そのままスロット１１０ａ等に保持されたまま留まること、またはスロット１１０ａ等からマガジン１０３へ移動することもある。
そのままスロット１１０ａ等に保持されたまま留まる場合、ダイナミック・プロセッシング・ライブラリＤＰＬ（プログラム）を格納する格納部に格納された状態となる。
【００９１】
マガジンとは、データバックアップ用のテープ装置で、テープを蓄えておく場所をマガジンと呼ぶことに由来する。スロットは、テープ装置との類比で言えば、マガジンはドライブに相当する。例えば、頻繁には利用されないダイナミック・プロセッシング・ライブラリＤＰＬはマガジン１０３に移動され、保管される。マガジン１０３に格納されたダイナミック・プロセッシング・ライブラリＤＰＬは実行できない。
【００９２】
ダイナミック・プロセッシング・ライブラリＤＰＬがスロット１１０ａ等またはマガジン１０３に存在するとき、所定のダイナミック・プロセッシング・ライブラリＤＰＬを使い終わって次に使うユーザは、コントロール・ユニットＣＵからダイナミック・プロセッシング・ライブラリＤＰＬを再ロードする手間なしにそのダイナミック・プロセッシング・ライブラリＤＰＬを利用できる可能性がある。ダイナミック・プロセッシング・ライブラリＤＰＬはスロットに収まっているときに限り利用できる。スロット数は汎用プロセッシング・エレメントの能力に応じて、プロセッシング・エレメント１台毎に決められている。
【００９３】
汎用プロセッシング・エレメントＰＥの起動時に、コントロール・ユニットＣＵに空きスロット数を送信する。起動時にはダイナミック・プロセッシング・ライブラリＤＰＬはロードされていない。このため、起動時の空きスロット数が、１回に利用できる最大ＤＰＬ数となる。
【００９４】
最大スロット数までダイナミック・プロセッシング・ライブラリＤＰＬがロードされると、所定のアルゴリズムでダイナミック・プロセッシング・ライブラリＤＰＬがアンロードされる。アンロードの詳細は「ダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする機能」で後述する。
【００９５】
次に、ロードされたダイナミック・プロセッシング・ライブラリＤＰＬのタスクを提供する機能について説明する。
ダイナミック・プロセッシング・ライブラリＤＰＬは、そのタスクを実現する核心部分だけを実装しておけばよい。通信部分は、汎用プロセッシング・エレメントが代替する。  そして、ダイナミック・プロセッシング・ライブラリＤＰＬは汎用プロセッシング・エレメントとのインタフェイスとして以下の表１０に掲げる関数を実装する。
【００９６】
【表１０】
2010224942.tif 000003
【００９７】
一般的に、プログラムに新機能を追加する場合、既存のプログラムのソースコードに新機能を実現する部分を書き足し、コンパイル、リンクなどの処理を行う。そして、新たに作成されたプログラムを古いファイルと置き換え、再実行することで新機能が提供される。
【００９８】
一方、プラグイン、アドオンなどと呼ばれるように既存のプログラムの変更なしに新たに機能を追加する仕組みがある。この仕組みでは、プログラムとプラグイン間でのやり取りに予め規約が設けてあり、その規約に則ったプラグインを開発する。これにより、既存プログラムには一切手を加えずに機能を追加するものである。本発明も、そのプラグインの部類である。
【００９９】
プラグインの実現方法としてWindows（登録商標）ではダイナミックリンクライブラリ、Linuxでは共有ライブラリがある(単にライブラリという)。ライブラリは、Windows（登録商標）では通常、拡張子“.dll”、Linuxでは“.so”を持つファイルであり、その中に関数が定義されてある。
【０１００】
プログラムは、起動後にそれらライブラリをロードし、その中にある関数を呼び出すことができる。呼び出すためにはプログラムとライブラリ間で、どのような関数を実装するかを予め決めておく必要がある。これらが上記表１０に示した関数である。ダイナミック・プロセッシング・ライブラリＤＰＬは上記関数を実装しておくことで汎用プロセッシング・エレメントからの利用が可能になる。
【０１０１】
図１１は、汎用プロセッシング・エレメントでタスク実行時のフローチャートである。ステップＳ１１０１において、汎用プロセッシング・エレメントは、処理経路の情報を受信する。処理経路の情報としては、入力のプロセッシング・エレメントＰＥ、出力先のＰＥアドレス、受信したプロセッシング・エレメントＰＥで提供するタスク識別子などが記述されている。
【０１０２】
ステップＳ１１０２において、ＤＰＬ管理テーブルからタスク識別子ＴＩＤに対応するダイナミック・プロセッシング・ライブラリＤＰＬを検索する。
ステップＳ１１０３において、ダイナミック・プロセッシング・ライブラリＤＰＬのタスク開始関数を呼び出す。ステップＳ１１０４において、ダイナミック・プロセッシング・ライブラリＤＰＬの使用数を１つ増やす。
ここで、ステップＳ１１０４において、タスク終了になるまで、データ受信を受信する。
【０１０３】
ステップＳ１１０５において、タスクが終了したかについて判断される。タスクが終了していない場合、ステップＳ１１０６において、汎用プロセッシング・エレメントＰＥは、データ受信を続行する。そして、ステップＳ１１０７において、受信したデータの種類を判別する。
【０１０４】
ステップＳ１１０７の判別結果に応じて、ステップＳ１１０９またはステップＳ１１０８へ進む。ステップＳ１１０９においては、タスク実行関数実行を呼び出す。ステップＳ１１０８においては、内部パラメータ設定関数を呼び出す。
【０１０５】
ステップＳ１１１０において、汎用PEは処理結果データを次のプロセッシング・エレメントに送信する。ステップＳ１１１１において、ダイナミック・プロセッシング・ライブラリＤＰＬのデータ解放関数を実行する。
【０１０６】
ステップＳ１１０５の判断結果が真（Ｙｅｓ）の場合、すなわちタスクが終了した場合、ステップＳ１１１２において、ダイナミック・プロセッシング・ライブラリＤＰＬの使用数を１だけ減らす。ステップＳ１１１３において、タスク終了関数を呼び出す。そして、ステップＳ１１１４において、ＤＰＬ管理テーブルの最終使用時刻を更新する。
【０１０７】
次に、図１２を参照して、サービス実行時の手順を説明する。ここで、サービスに必要なタスクを提供するダイナミック・プロセッシング・ライブラリＤＰＬは、汎用プロセッシング・エレメントＰＥにロード済みとする。
【０１０８】
（１）まず、クライアントＣＬは、コントロール・ユニットＣＵにサービス実行要求を送信する。
（２）コントロール・ユニットＣＵは、要求されたサービスに必要なプロセッシング・エレメントＰＥを選択する。
（３）コントロール・ユニットＣＵは、処理経路確立要求を、プロセッシング・エレメントに対して送信する。
（４）プロセッシング・エレメントＰＥ１は、所定の手順に従って処理経路を確立する。
【０１０９】
ここでは、汎用プロセッシング・エレメントＰＥ１、汎用プロセッシング・エレメントＰＥ２、汎用プロセッシング・エレメントＰＥ３の順で処理が進むものとする。次に、各汎用プロセッシング・エレメントのタスク開始関数が呼び出される。
（５）そして、クライアントＣＬは、最初の汎用プロセッシング・エレメントＰＥ１にデータを送信する。
【０１１０】
（６）汎用プロセッシング・エレメントＰＥ１は、データを受信し、ダイナミック・プロセッシング・ライブラリＤＰＬのタスク実行関数を呼び出す。
（７）汎用プロセッシング・エレメントＰＥ１は、結果を次の汎用プロセッシング・エレメントＰＥ２に送信する。
【０１１１】
（８）汎用プロセッシング・エレメントＰＥ２はデータを受信し、ダイナミック・プロセッシング・ライブラリＤＰＬのタスク実行関数を呼び出す。
（９）同様に、汎用プロセッシング・エレメントＰＥ２は、結果を次の汎用プロセッシング・エレメントＰＥ３に送信する。
【０１１２】
（１０）汎用プロセッシング・エレメントＰＥ３は、データを受信し、ダイナミック・プロセッシング・ライブラリＤＰＬのタスク実行関数を呼び出す。
（１１）汎用プロセッシング・エレメントＰＥ３は、結果をクライアントＣＬに送信する。
（１２）クライアントＣＬは、結果を受信し、処理経路を開放して、処理を終了する。
【０１１３】
次に、ダイナミック・プロセッシング・ライブラリＤＰＬをアンロード、リムーブする機能について説明する。
汎用プロセッシング・エレメントは、以下のアルゴリズムでダイナミック・プロセッシング・ライブラリＤＰＬをアンロードまたはリムーブする。アンロードまたはリムーブの指示は、クライアントＣＬから指示する場合、コントロール・ユニットから指示する場合、汎用プロセッシング・エレメント自ら指示する場合、の３通りがある。
【０１１４】
クライアントＣＬからのアンロードまたはリムーブの場合とは、ユーザがそのダイナミック・プロセッシング・ライブラリＤＰＬを不要と判断したときに、ダイナミック・プロセッシング・ライブラリＤＰＬを明示的に指定し、アンロードまたはリムーブする場合である。
【０１１５】
コントロール・ユニットからのアンロードまたはリムーブの場合とは、コントロール・ユニットが汎用プロセッシング・エレメントに新たなダイナミック・プロセッシング・ライブラリＤＰＬをロードしたいが、空きスロットが無いとき、その汎用プロセッシング・エレメントに未使用のダイナミック・プロセッシング・ライブラリＤＰＬをアンロードまたはリムーブするように指示する場合である。アンロードまたはリムーブするダイナミック・プロセッシング・ライブラリＤＰＬは汎用プロセッシング・エレメントが決定する。
【０１１６】
汎用プロセッシング・エレメントからの、ダイナミック・プロセッシング・ライブラリＤＰＬのアンロードまたはリムーブは、汎用プロセッシング・エレメントでサービスが実行されていない時、ロード時、サービス終了時など特定のタイミングで行われる。このとき、過去にロードされ最近は使われていないダイナミック・プロセッシング・ライブラリＤＰＬをアンロードまたはリムーブして資源を解放する。
【０１１７】
（クライアントＣＬからアンロード）
図１３は、クライアントＣＬからアンロードを要求するときの手順を示す。クライアントＣＬからサービスの実行に必要なダイナミック・プロセッシング・ライブラリＤＰＬをロードし、使用終了した後、これ以上使わないなどの理由でユーザの指示でクライアントＣＬから明示的にダイナミック・プロセッシング・ライブラリＤＰＬを指定して汎用プロセッシング・エレメントからアンロードさせることができる。
【０１１８】
（１）クライアントＣＬはコントロール・ユニットＣＵにアンロード要求を送る。このとき、タスク識別子ＴＩＤが送信される。送信情報を表１１に掲げる。
（表１１）
情報          説明
ＴＩＤ        アンロードしたいＤＰＬのＴＩＤ
【０１１９】
（２）コントロール・ユニットは、登録されている汎用プロセッシング・エレメントの中から、該当するタスク識別子ＴＩＤを持つダイナミック・プロセッシング・ライブラリＤＰＬを検索する。ここで、マガジン１０３に移動しているダイナミック・プロセッシング・ライブラリＤＰＬは、検索の対象外になる。検索の結果、該当するダイナミック・プロセッシング・ライブラリＤＰＬが存在しなければ、ここでクライアントＣＬにアンロード結果を送信する。
【０１２０】
（３）コントロール・ユニットＣＵは、該当ダイナミック・プロセッシング・ライブラリＤＰＬを持つ汎用プロセッシング・エレメントにアンロード要求を送信する。
（４）汎用プロセッシング・エレメントＰＥ１は、該当ダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする。汎用プロセッシング・エレメントでのアンロードは、図１４を参照して後述する。
【０１２１】
（５）汎用プロセッシング・エレメントＰＥ１は、アンロード結果、すなわちアンロードされたこと、またはアンロードされなかったこと、をコントロール・ユニットに送信する。コントロール・ユニットＣＵは、アンロード結果を受信したとき、該当プロセッシング・エレメントＰＥの空きスロット数を更新する。
表１２に、汎用プロセッシング・エレメントがアンロード時またはリムーブ時にコントロール・ユニットＣＵに送信する情報を掲げる。
【０１２２】
（表１２）
情報          説明
ＰＥＩＤ      汎用ＰＥの識別子
ＴＩＤ        汎用ＰＥからアンロードまたはリムーブしたタスク識別子
【０１２３】
また、表１３に、汎用プロセッシング・エレメントがコントロール・ユニットＣＵにアンロード結果として返す値を掲げる。なお、これらの値は、コントロール・ユニットＣＵがクライアントＣＬにアンロード結果として返す値とも共通している。
【０１２４】
（表１３）
返り値        説明
０            ＤＰＬはアンロードされた
１            該当するＤＰＬがなかった
２            すでにアンロードされていた(マガジンには存在)
３            一部または全ての汎用ＰＥからは使用中
またはマガジンが存在しないためアンロードされなかった
４            すべての汎用ＰＥからアンロードされた
【０１２５】
（６）他の汎用プロセッシング・エレメントにもダイナミック・プロセッシング・ライブラリＤＰＬがロードされていれば、アンロード要求を送信する。ここでは、２つの汎用プロセッシング・エレメントに、ダイナミック・プロセッシング・ライブラリＤＰＬがロードされているケースを想定している。
【０１２６】
（７）汎用プロセッシング・エレメントＰＥ２は、同様のアンロード処理を行う。
（８）アンロードの結果、マガジン１０３に格納されているダイナミック・プロセッシング・ライブラリＤＰＬがリムーブされたとき、リムーブ結果をコントロール・ユニットに送信する。
（９）汎用プロセッシング・エレメントＰＥ２は、アンロード結果を送信する。
（１０）コントロール・ユニットＣＵは、クライアントＣＬにアンロード結果を送信する。
【０１２７】
図１４は、汎用プロセッシング・エレメントにおけるダイナミック・プロセッシング・ライブラリＤＰＬのアンロードを示すフローチャートである。
ステップＳ１４０１において、汎用プロセッシング・エレメントは、アンロード要求を受信したとき、指定されたタスク識別子ＴＩＤに対応するダイナミック・プロセッシング・ライブラリＤＰＬが存在するか否かについて管理テーブルを検索する。
【０１２８】
ステップＳ１４０１において、対応するダイナミック・プロセッシング・ライブラリＤＰＬが存在しないとき、ステップＳ１４１２に進み、アンロード結果、すなわち該当するダイナミック・プロセッシング・ライブラリＤＰＬがなかったことをコントロール・ユニットに送信する。
【０１２９】
ステップＳ１４０２において、ダイナミック・プロセッシング・ライブラリＤＰＬがスロット１１０ａ等に保持されているか、否かが判断される。該当するダイナミック・プロセッシング・ライブラリＤＰＬがスロットに存在すると判断されたとき、ステップＳ１４０３においてスロットの使用数を参照して、そのダイナミック・プロッセッシング・ライブラリＤＰＬが使用中か、が判断される。
【０１３０】
一方、ステップＳ１４０２において、スロットに存在しないと判断されたときは、ステップＳ１４１２に進む。
【０１３１】
この結果、スロットが既に使用されているとき、ステップＳ１４１２に進む。ステップＳ１４１２において、アンロード結果、すなわち一部または全ての汎用プロセッシング・エレメントからは使用中またはマガジン１０３が存在しないためアンロードされなかったことをコントロール・ユニットに送信する。
【０１３２】
ダイナミック・プロセッシング・ライブラリＤＰＬが使用されていなければ、ステップＳ１４０４に進む。ステップＳ１４０４において、汎用プロセッシング・エレメントＰＥは、マガジン１０３を備えているか、について判断される。
【０１３３】
マガジン１０３が存在しないとき、ステップＳ１４１２に進む。ステップＳ１４１２において、アンロード結果、すなわち一部または全ての汎用プロセッシング・エレメントから使用中またはマガジンが存在しないためアンロードされなかったことをコントロール・ユニットに送信する。
【０１３４】
マガジン１０３が存在するとき、ステップＳ１４０５に進む。ステップＳ１４０５において、マガジン１０３に空きがあるか、が判断される。
マガジン１０３に空きがあるとき、ステップＳ１４０８において、ＤＰＬ解放関数を呼び出す。
【０１３５】
マガジン１０３に空きが無いとき、ステップＳ１４０６において、いずれか１つのダイナミック・プロセッシング・ライブラリＤＰＬを選択して、リムーブする。例えば、リムーブするダイナミック・プロセッシング・ライブラリＤＰＬは、最も過去に使用された、すなわち最終使用時刻が最も古いダイナミック・プロセッシング・ライブラリＤＰＬとする。
【０１３６】
ステップＳ１４０７において、ダイナミック・プロセッシング・ライブラリＤＰＬをリムーブした後、コントロール・ユニットＣＵにリムーブ結果を送信する。そして、ステップＳ１４０８へ進む。ステップＳ１４０８において、ＤＰＬ解放関数を呼び出す。
【０１３７】
ステップＳ１４０９において、ダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする。
ステップＳ１４１０において、マガジン１０３に空きができたので、ダイナミック・プロセッシング・ライブラリＤＰＬをマガジン１０３に移動する。
ステップＳ１４１１において、管理テーブルを更新する。そして、ステップＳ１４１２において、コントロール・ユニットＣＵにアンロード結果を送信する。
【０１３８】
次に、図１５を参照して、ダイナミック・プロセッシング・ライブラリＤＰＬのリムーブについて説明する。上述のステップＳ１４０６の「マガジン内の最も過去に使用されたダイナミック・プロセッシング・ライブラリＤＰＬをリムーブする例」について説明する。リムーブするダイナミック・プロセッシング・ライブラリＤＰＬは、以下の手順で汎用プロセッシング・エレメントが決定する。
【０１３９】
クライアントＣＬからのリムーブ要求の時は、上記図１３における「アンロード要求」を「リムーブ要求」に置換した手順となる。この場合、汎用プロセッシング・エレメント内における動作が図１３と異なる。
【０１４０】
汎用プロセッシング・エレメントは、リムーブ要求を受信して、リムーブ処理を開始する。ステップＳ１５０１において、管理テーブルを検索して、指定されたタスク識別子ＴＩＤに対応するダイナミック・プロセッシング・ライブラリＤＰＬが存在するか、が判断される。
【０１４１】
対応するダイナミック・プロセッシング・ライブラリＤＰＬが管理テーブル内に存在しないとき、ステップＳ１５０６に進む。ステップＳ１５０６において、リムーブ結果、すなわち該当するダイナミック・プロセッシング・ライブラリＤＰＬが存在しないことをコントロール・ユニットＣＵに送信する。
【０１４２】
一方、対応するダイナミック・プロセッシング・ライブラリＤＰＬが管理テーブルに存在するときは、ステップＳ１５０２に進む。ステップＳ１５０２において、ダイナミック・プロセッシング・ライブラリＤＰＬがスロットに保持されているか、が判断される。
【０１４３】
ステップＳ１５０２の判断結果がＮｏのとき、ステップＳ１５０５に進む。ステップＳ１５０２の判断結果が真（Ｙｅｓ）のとき、ステップＳ１５０３において、スロットの使用数を参照して、スロットが使用されているか、が判断される。スロットが使用されているとき、ステップＳ１５０６へ進む。ステップＳ１５０６において、リムーブ結果、すなわち一部または全ての汎用プロセッシング・エレメントからは使用中またはマガジンが存在しないためアンロードされなかったことをコントロール・ユニットＣＵに送信する。
ステップＳ１５０３の判断結果が真（Ｙｅｓ）のとき、ステップＳ１５０４において、空きスロット数を１つ増やす。そして、ステップＳ１５０５へ進む。
【０１４４】
対応するダイナミック・プロセッシング・ライブラリＤＰＬがスロットに存在しないとき、ステップＳ１５０５に進む。ステップＳ１５０５において、マガジン内に格納されているダイナミック・プロセッシング・ライブラリＤＰＬをリムーブする。なお、このとき、上述の検索により、すでに、汎用プロセッシング・エレメント内にダイナミック・プロセッシング・ライブラリＤＰＬが存在することは確定している。
【０１４５】
ステップＳ１５０６において、ダイナミック・プロセッシング・ライブラリＤＰＬをリムーブした後、コントロール・ユニットＣＵにリムーブ結果を送信する。
リムーブしたことによりマガジン１０３に空きができている。このため、ダイナミック・プロセッシング・ライブラリＤＰＬをマガジン１０３に移動する。
ステップＳ１５０７において、管理テーブルを更新する。そして、コントロール・ユニットにアンロード結果を送信する。
【０１４６】
また、汎用プロセッシング・エレメントからダイナミック・プロセッシング・ライブラリＤＰＬがリムーブされるとき、アンロード処理と同様に、表１０と表１１に掲げる情報がそれぞれコントロール・ユニットＣＵとクライアントＣＬに返される。
【０１４７】
次に、コントロール・ユニットＣＵから要求してダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする手順について説明する。
クライアントＣＬからのサービス要求時に、以下の条件Ａ，Ｂが満足された状態では、コントロール・ユニットＣＵは、汎用プロセッシング・エレメントにアンロード要求を送信する。
（Ａ）ダイナミック・プロセッシング・ライブラリＤＰＬとそれを実行可能な汎用プロセッシング・エレメントが揃っており、ロードすればサービスが実行可能である。
（Ｂ）汎用プロセッシング・エレメントに空きスロットがない。
【０１４８】
そして、汎用プロセッシング・エレメントからアンロード可能なダイナミック・プロセッシング・ライブラリＤＰＬをアンロードさせる。次に、そこに新たにダイナミック・プロセッシング・ライブラリＤＰＬをロードする。
【０１４９】
図１６は、コントロール・ユニットＣＵから要求してダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする手順を示している。
（１）コントロール・ユニットＣＵは、スロットを空けたい汎用プロセッシング・エレメントに対し、アンロード要求を送る。コントロール・ユニットＣＵからのアンロード要求は、使用していない任意のダイナミック・プロセッシング・ライブラリＤＰＬのアンロードである。このため、コントロール・ユニットＣＵからタスク識別子ＴＩＤは送信しない。
（２）汎用プロセッシング・エレメントＰＥは、上述したアンロード処理を実行する。
（３）汎用プロセッシング・エレメントＰＥは、コントロール・ユニットＣＵに結果を送信する。
（４）コントロール・ユニットは、新たなダイナミック・プロセッシング・ライブラリＤＰＬをロードする。
【０１５０】
また、対象となる汎用プロセッシング・エレメントが複数存在する場合、空のスロットが見つかるまでそれぞれの汎用プロセッシング・エレメントにアンロード要求を送信する。
【０１５１】
なお、上述のシーケンスの途中に、ダイナミック・プロセッシング・ライブラリＤＰＬをスロットからマガジン１０３へ移動するためのアンロード結果、またはマガジンから削除するためのリムーブ結果がコントロール・ユニットＣＵに返る場合がある。
【０１５２】
図１７は、汎用プロセッシング・エレメント内でのアンロード処理の手順を示すフローチャートである。
ステップＳ１７０１において、汎用プロセッシング・エレメントＰＥは、コントロール・ユニットＣＵからのアンロード要求を受信して、アンロード処理を開始する。
ステップＳ１７０２において、アンロードするダイナミック・プロセッシング・ライブラリＤＰＬを選択する。この選択に関する詳細な手順は、後述する。
【０１５３】
いずれのダイナミック・プロセッシング・ライブラリＤＰＬもアンロードできないとき、ステップＳ１７０８へ進む。ステップＳ１７０８において、アンロード結果、すなわちダイナミック・プロセッシング・ライブラリＤＰＬの選択ができないためアンロード不可であることを送信する。
【０１５４】
アンロードするダイナミック・プロセッシング・ライブラリＤＰＬが存在するとき、ステップＳ１７０３において、マガジン１０３が備えられているか、が判断される。
ステップＳ１７０３の判断結果において、汎用プロセッシング・エレメントＰＥにマガジン１０３が無いとき、アンロード先が存在しない。
このため、ステップＳ１７０９、１７１０、１７１１において、スロット内のダイナミック・プロセッシング・ライブラリＤＰＬをアンロード、リムーブしてそれぞれ結果を送信する。
【０１５５】
ステップＳ１７０３の判断結果において、マガジンが存在するとき、ステップＳ１７０４へ進む。ステップＳ１７０４において、リムーブするダイナミック・プロセッシング・ライブラリＤＰＬを選択する。
【０１５６】
ステップＳ１７０４において、マガジン１０３からダイナミック・プロセッシング・ライブラリＤＰＬをリムーブする。ここで、リムーブするダイナミック・プロセッシング・ライブラリＤＰＬを選択するアルゴリズムは、図１８を参照して後述する。
【０１５７】
ステップＳ１７０６において、リムーブ結果を送信する。
ステップＳ１７０７において、選択されたダイナミック・プロセッシング・ライブラリＤＰＬをアンロードしてマガジンに移動する。
ステップＳ１７０８において、コントロール・ユニットＣＵへアンロード結果を送信する。
【０１５８】
図１８は、マガジン１０３からタスク識別子ＴＩＤの指定なしでダイナミック・プロセッシング・ライブラリＤＰＬをリムーブするとき、汎用プロセッシング・エレメントがリムーブするダイナミック・プロセッシング・ライブラリＤＰＬを選択する手順を説明するフローチャートである。
【０１５９】
ステップＳ１８０１において、マガジン１０３内で、過去に１度も使われていない状態、例えば最終使用時刻が未定義の状態のダイナミック・プロセッシング・ライブラリＤＰＬを列挙する。
【０１６０】
ステップＳ１８０２において、該当するダイナミック・プロセッシング・ライブラリＤＰＬが見つかるか、が判断される。ステップＳ１８０２の判断結果が真の場合、ステップＳ１８０５へ進む。ステップＳ１８０５において、見つかったダイナミック・プロセッシング・ライブラリＤＰＬの中からもっとも過去にロードされたダイナミック・プロセッシング・ライブラリＤＰＬを列挙する。ダイナミック・プロセッシング・ライブラリＤＰＬは、同時刻にロードされることもある。このため、複数のダイナミック・プロセッシング・ライブラリＤＰＬが１度も使用されていないものとして検索されることもある。
【０１６１】
ステップＳ１８０４において、その中で最初に見つかったダイナミック・プロセッシング・ライブラリＤＰＬを、リムーブするダイナミック・プロセッシング・ライブラリＤＰＬとして選択する。
【０１６２】
ステップＳ１８０２の判断結果が偽の場合、ステップＳ１８０３へ進む。ステップＳ１８０３において、もっとも過去に使用されたダイナミック・プロセッシング・ライブラリＤＰＬを列挙する。
そして、ステップＳ１８０４において、その中で最初に見つかったダイナミック・プロセッシング・ライブラリＤＰＬをリムーブするダイナミック・プロセッシング・ライブラリＤＰＬとして選択する。
【０１６３】
図１９は、上述のようにタスク識別子ＴＩＤの指定無しのとき、汎用プロセッシング・エレメントがスロット１１０ａ等からアンロードするダイナミック・プロセッシング・ライブラリＤＰＬを選択する手順を示すフローチャートである。
【０１６４】
ステップＳ１９０１において、現在使用されていないダイナミック・プロセッシング・ライブラリＤＰＬを列挙する。  
ステップＳ１９０２において、全てのダイナミック・プロセッシング・ライブラリＤＰＬが使用中であるか、が判断される。全て使用中の場合、ステップＳ１９０７へ進む。ステップＳ１９０７において、アンロード可能なダイナミック・プロセッシング・ライブラリＤＰＬなし、として送信する。
【０１６５】
ステップＳ１９０２の判断結果が偽の場合、ステップＳ１９０３へ進む。ステップＳ１９０３において、使用されていないダイナミック・プロセッシング・ライブラリＤＰＬが存在するとき、その中でもっとも過去に使用されたダイナミック・プロセッシング・ライブラリＤＰＬを列挙する。ここで、列挙されたダイナミック・プロセッシング・ライブラリＤＰＬは、不要である可能性が高い。
【０１６６】
ステップＳ１９０４において、それら全てが過去に1度も使われていなかったか、が判断される。ステップＳ１９０４の判断結果が真の場合、ステップＳ１９０５へ進む。ステップＳ１９０５において、もっとも過去にロードされたダイナミック・プロセッシング・ライブラリＤＰＬを列挙し、ステップＳ１９０６に進む。
【０１６７】
ステップＳ１９０４の判断結果が偽の場合、ステップＳ１９０６において、複数見つかった場合に最初のダイナミック・プロセッシング・ライブラリＤＰＬをアンロードするダイナミック・プロセッシング・ライブラリＤＰＬとして選択する。
【０１６８】
ここで、通信データの内容、汎用プロセッシング・エレメントでのアンロード処理は「クライアントＣＬからの指示によるアンロード」と同じである。  
ただし、クライアントＣＬからのアンロード要求とは、タスク識別子ＴＩＤは指定されずに、アンロードするダイナミック・プロセッシング・ライブラリＤＰＬは汎用プロセッシング・エレメントが決定する点が異なる。
【０１６９】
次に、コントロール・ユニットＣＵからの再ロード要求について説明する。
コントロール・ユニットＣＵは、以下の（Ａ）、（Ｂ）、（Ｃ）をすべて満足する状態において、再ロード要求を送信する。
（Ａ）クライアントＣＬからのサービス要求時に、必要なダイナミック・プロセッシング・ライブラリＤＰＬは、かつて汎用プロセッシング・エレメントにロードされていたこと。
（Ｂ）そのロードされたダイナミック・プロセッシング・ライブラリＤＰＬは、現在マガジン１０３にアンロードされていること。
（Ｃ）マガジンからダイナミック・プロセッシング・ライブラリＤＰＬをロードすれば、サービスが実行可能であること。
【０１７０】
コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥに再ロード要求送信する。これにより、そのダイナミック・プロセッシング・ライブラリＤＰＬを再び使えるようにすることができる。
【０１７１】
図２０は、再ロードの手順を示している。
（１）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥに再ロード要求を送信する。表１４に、送信時の情報を掲げる。
【０１７２】
（表１４）
情報                      説明
ＴＩＤ        再ロードしたいＤＰＬのＴＩＤ
【０１７３】
（２）汎用プロセッシング・エレメントＰＥは、ロード処理を行う。
（３）汎用プロセッシング・エレメントＰＥは、再ロード結果をコントロール・ユニットＣＵに送信する。
【０１７４】
図２１は、再ロードの汎用プロセッシング・エレメントの手順を示すフローチャートである。
ステップＳ２１０１において、空スロットが存在するか、が判断される。空スロットが存在する場合、ステップＳ２１０６へ進む。ステップＳ２１０６において、空スロットに対して、そのままロード処理を行う。
【０１７５】
ステップＳ２１０１において空スロットが無いと判断された場合、ステップＳ２１０２において、アンロードするダイナミック・プロセッシング・ライブラリＤＰＬを選択する処理を行う。
【０１７６】
ステップＳ２１０３において、アンロードするダイナミック・プロセッシング・ライブラリＤＰＬが有るか、が判断される。ステップＳ２１０３の判断結果が偽の場合、ステップＳ２１０９へ進む。ステップＳ２１０９において、再ロード結果を送信する。
【０１７７】
ステップＳ２１０３の判断結果が真の場合、すなわちアンロードするダイナミック・プロセッシング・ライブラリＤＰＬがある場合、ステップＳ２１０４において、そのダイナミック・プロセッシング・ライブラリＤＰＬの解放処理関数を呼び出す。
【０１７８】
ステップＳ２１０５において、そのダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする、例えばマガジンに移動する。
ステップＳ２１０６において、再ロードするダイナミック・プロセッシング・ライブラリＤＰＬをロードする。
【０１７９】
ステップＳ２１０７において、再ロードするダイナミック・プロセッシング・ライブラリＤＰＬの初期化関数を呼び出す。
ステップＳ２１０８において、汎用プロセッシング・エレメントＰＥのＤＰＬ管理テーブルを更新する。
そして、ステップＳ２１０９において、コントロール・ユニットＣＵに再ロード結果を送信する。
【０１８０】
次に、汎用プロセッシング・エレメント自身が、ダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする場合について説明する。
汎用プロセッシング・エレメントＰＥは、現在いずれのクライアントＣＬからも使われておらず、かつスロットに空がないとき、最近使用されていないダイナミック・プロセッシング・ライブラリＤＰＬをアンロードして資源を解放する。これにより、コントロール・ユニットＣＵからの新しいダイナミック・プロセッシング・ライブラリＤＰＬを迅速にロードできるようにする。
【０１８１】
図２２は、汎用プロセッシング・エレメント自身が、ダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする手順を示すフローチャートである。例えば、１分毎に以下の処理が実行される。
【０１８２】
ステップＳ２２０１において、スロットに空きがないか、が判断される。これより、空きスロット数をチェックする。ステップＳ２２０１の判断結果が偽の場合、何もせずに終了する。
【０１８３】
スロットに空きがない場合、ステップＳ２２０２において、マガジンン１０３に空きがあるか、が判断される。マガジンに空がある場合、ステップＳ２２０３へ進む。マガジンに空きが無い場合、処理は終了する。
【０１８４】
ステップＳ２２０３において、アンロードするダイナミック・プロセッシング・ライブラリＤＰＬを選択する。アンロードする手順は、図１９を用いて上述している。
【０１８５】
ステップＳ２２０４において、アンロード可能なダイナミック・プロセッシング・ライブラリＤＰＬがあるか、が判断される。ステップＳ２２０４の判断結果が偽の場合、処理は終了する。ステップＳ２２０４の判断結果が真の場合、ステップＳ２２０５に進む。
【０１８６】
ステップＳ２２０５において、ダイナミック・プロセッシング・ライブラリＤＰＬの解放関数を呼び出す。
ステップＳ２２０６において、ダイナミック・プロセッシング・ライブラリＤＰＬを、アンロードする。
ステップＳ２２０７において、汎用プロセッシング・エレメントＰＥの管理テーブルを更新する。そして、ステップＳ２２０８において、アンロード結果をコントロール・ユニットに送信する。
【実施例】
【０１８７】
次に、上述したような、スロットを用いて、（１）ダイナミック・プロセッシング・ライブラリＤＰＬをロードする機能、（２）ロードされたダイナミック・プロセッシング・ライブラリＤＰＬのタスクを提供する機能、換言すると、ロードしたタスクを提供するＰＥとして動作する機能、（３）ダイナミック・プロセッシング・ライブラリＤＰＬをキャッシュする機能、（４）ダイナミック・プロセッシング・ライブラリＤＰＬをアンロードする機能、（５）ダイナミック・プロセッシング・ライブラリＤＰＬをリムーブする機能を有する汎用プロセッシング・エレメントを用いて、サービスを実行する例を説明する。
【０１８８】
（実施例１）
まず、本発明の実施例１に係る汎用プロセッシング・エレメントを使った色信号の変換の例について説明する。具体的には、汎用プロセッシング・エレメントＰＥ１個、空きスロットあり、ダイナミック・プロセッシング・ライブラリＤＰＬをクライアントＣＬからの要求により、ロードする例である。
【０１８９】
ユーザは、色信号の変換を汎用プロセッシング・エレメントＰＥで処理させたいとする。色信号の変換とは、画像のＲＧＢ値をＹＣｂＣｒ値に変換する処理のことである。
以下にクライアントから色信号変換ＤＰＬを、汎用プロセッシング・エレメントＰＥにロードして処理する実施例を示す。
【０１９０】
まず、色信号変換のタスク識別子を表１５のように定義する。
（表１５）
ＴＩＤ      タスク名
１０２      色信号の変換
【０１９１】
また、本実施例での汎用プロセッシング・エレメントの緒元を表１６に示す。
（表１６）
ＣＰＵ                          Ａ社製
ＯＳ                            Ｘ社製
ポート番号                      １２３４
全スロット数(初期空スロット数)       １(１)
マガジン                        １スロットぶんの空
【０１９２】
汎用プロセッシング・エレメントＰＥは、コントロール・ユニットＣＵに登録済みとする。汎用プロセッシング・エレメントＰＥにロードされているダイナミック・プロセッシング・ライブラリＤＰＬはなく、１つの空きスロットがある状態とする。
さらに、クライアントＣＬが持っているダイナミック・プロセッシング・ライブラリＤＰＬは、Ａ社製のＣＰＵ、Ｘ社製のＯＳで動作するものとする。
【０１９３】
図２３を参照して、手順を説明する。
（１）クライアントＣＬは処理したいタスクのタスク識別子ＴＩＤを、コントロール・ユニットＣＵに送る。
【０１９４】
（２）コントロール・ユニットＣＵは、そのタスク識別子ＴＩＤを処理するダイナミック・プロセッシング・ライブラリＤＰＬがロードされている汎用プロセッシング・エレメントを検索する。
【０１９５】
（３）本実施例では、ロードされているダイナミック・プロセッシング・ライブラリＤＰＬは存在しない前提である。このため、クライアントＣＬに対して、「利用できる汎用プロセッシング・エレメントなし」を送信する。
【０１９６】
（４）クライアントＣＬは、これにより色信号変換を処理するダイナミック・プロセッシング・ライブラリＤＰＬが存在しないことを認識する。そして、クライアントＣＬが持っている色信号変換ＤＰＬをコントロール・ユニットＣＵに送信する。
【０１９７】
（５）コントロール・ユニットＣＵは、そのダイナミック・プロセッシング・ライブラリＤＰＬがロード可能な汎用プロセッシング・エレメントＰＥを検索して、送信する。
（６）汎用プロセッシング・エレメントＰＥは、ダイナミック・プロセッシング・ライブラリＤＰＬを受信し、ロードする。
【０１９８】
（７）汎用プロセッシング・エレメントＰＥは、ロード結果をコントロール・ユニットＣＵに送信する。
（８）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥから受け取った結果をクライアントＣＬに送信する。ここでは、成功したとする。
【０１９９】
（９）クライアントＣＬは、コントロール・ユニットＣＵにタスク実行要求を送信する
（１０）コントロール・ユニットＣＵは、すでにそのタスクを実行できるダイナミック・プロセッシング・ライブラリＤＰＬがロードされていることを認識している。このため、クライアントＣＬに、その汎用プロセッシング・エレメントＰＥのアドレスを送信する。
【０２００】
（１１）クライアントＣＬは、汎用プロセッシング・エレメントＰＥに接続する。そして、ＲＧＢ画像を汎用プロセッシング・エレメントＰＥへ送信する。
（１２）汎用プロセッシング・エレメントＰＥは、ＲＧＢ画像をＹＣｂＣｒ画像に変換する。
【０２０１】
（１３）汎用プロセッシング・エレメントＰＥは、処理されたＹＣｂＣｒ画像をクライアントＣＬに送信する。
【０２０２】
（実施例２）
次に、本発明の実施例３に係る汎用プロセッシング・エレメントを使った色信号の変換の例を説明する。汎用プロセッシング・エレメントＰＥは１個、空きスロットは１個、ダイナミック・プロセッシング・ライブラリＤＰＬをＤＰＬリポジトリからロードする例である。
【０２０３】
図２４を参照して、ＤＰＬリポジトリから色信号変換ＤＰＬを汎用プロセッシング・エレメントにロードして処理する実施例を説明する。ここで、ＤＰＬリポジトリにはすでに色信号変換ＤＰＬが登録されているとする。
【０２０４】
（１）クライアントＣＬは、処理したいタスクのタスク識別子ＴＩＤをコントロール・ユニットＣＵへ送信する。
（２）コントロール・ユニットＣＵは、そのタスク識別子ＴＩＤを処理するダイナミック・プロセッシング・ライブラリＤＰＬがロードされている汎用プロセッシング・エレメントを検索する。
【０２０５】
（３）検索の結果、該当する汎用プロセッシング・エレメントＰＥが存在しなければＤＰＬリポジトリへタスク識別子ＴＩＤを送信する。そして、対応するダイナミック・プロセッシング・ライブラリＤＰＬを取得する
【０２０６】
（４）ＤＰＬリポジトリに該当ダイナミック・プロセッシング・ライブラリＤＰＬが存在したとき、ダイナミック・プロセッシング・ライブラリＤＰＬをコントロール・ユニットＣＵに送信する。
【０２０７】
（５）コントロール・ユニットＣＵは、そのダイナミック・プロセッシング・ライブラリＤＰＬがロード可能な汎用プロセッシング・エレメントを検索して、送信する。
（６）汎用プロセッシング・エレメントＰＥは、ダイナミック・プロセッシング・ライブラリＤＰＬを受信しロードする。
【０２０８】
（７）汎用プロセッシング・エレメントＰＥは、ロード結果をコントロール・ユニットＣＵに送信する。
（８）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥから受け取った結果をクライアントＣＬに送信する。ここでは、成功したとする。
【０２０９】
（９）クライアントＣＬは、コントロール・ユニットＣＵにタスク実行要求を送信する。
（１０）コントロール・ユニットＣＵは、すでにそのタスクを実行できるダイナミック・プロセッシング・ライブラリＤＰＬがロードされていることを認識している。このため、クライアントＣＬにその汎用プロセッシング・エレメントＰＥのアドレスを送信する。
【０２１０】
（１１）クライアントＣＬは、汎用プロセッシング・エレメントＰＥに接続し、ＲＧＢ画像を送信する。
（１２）汎用プロセッシング・エレメントＰＥは、ＲＧＢ画像をＹＣｂＣｒ画像に変換する。
【０２１１】
（１３）汎用プロセッシング・エレメントＰＥは、処理されたＹＣｂＣｒ画像をクライアントＣＬに送信する。
【０２１２】
（実施例３）
次に、本発明の実施例３に係る汎用プロセッシング・エレメントＰＥを使ったＪＰＥＧエンコードを説明する。ここで、汎用プロセッシング・エレメントＰＥは１個、空きスロットは１個の例を説明する。
【０２１３】
ＪＰＥＧエンコードは、以下のステップで実行される。入力画像はＲＧＢ各８ビットのビットマップ画像とする。
図２５は、本実施例のＪＰＥＧエンンコードの手順を示すフローチャートである。
【０２１４】
ステップＳ１０１において、ビットマップファイルの読み込みを行う。
ステップＳ１０２において、色信号の変換を行う。
ステップＳ１０３において、ダウンサンプリングを行う。
【０２１５】
ステップＳ１０４において、離散コサイン変換（以下、適宜ＤＣＴという。)を行う。  ステップＳ１０５において、量子化を行う。
ステップＳ１０６において、ハフマン符号化を行う。
ステップＳ１０７において、ＪＰＥＧファイルを出力する。そして、ＪＰＥＧのエンコードが終了する。
【０２１６】
表１７に、これらのタスク識別子(ＴＩＤ)とタスク名の対応を示す。表１８に、サービス識別子(ＳＩＤ)とサービス名との対応を示す。汎用プロセッシング・エレメントＰＥのタスク識別子ＴＩＤには、特別な値、例えば９９９を使うことが決められている。
【０２１７】
（表１７）
ＴＩＤ        タスク名
１０１        ビットマップファイル読み込み
１０２        色信号の変換
１０３        ダウンサンプリング
１０４        ＤＣＴ
１０５        量子化
１０６        ハフマン符号化
１０７        ＪＰＥＧファイル出力
９９９        汎用ＰＥ
【０２１８】
（表１８）
ＳＩＤ        サービス名
１００        ＪＰＥＧエンコーディング
【０２１９】
上記実施例では、単一タスクのみを使用し、クライアントとプロセッシング・エレメント間で通信をしている。ここで、各タスクの入出力が整合されていれば、タスク識別子ＴＩＤを列挙して全体を一つの処理＝サービスとして処理させることができる。
【０２２０】
サービスを構成するタスクの種類は、あらかじめコントロール・ユニットが保持している。ＪＰＥＧエンコーディングのサービスは、以下の表１９のように構成されている。タスク識別子ＴＩＤの左から右の順でデータが流れる。
（表１９）
ＳＩＤ    ＴＩＤ
１００    １０１  １０２  １０３  １０４  １０５  １０６  １０７
【０２２１】
本実施例のタスク識別子ＴＩＤとそのタスクを提供するプロセッシング・エレメントＰＥを表２０に示す。
（表２０）
ＴＩＤ                                    ＰＥ
１０１(ビットマップファイル読み込み)      専用ＰＥ１
１０２(色信号の変換)                      専用ＰＥ２
１０３(ダウンサンプリング)                専用ＰＥ３
１０４(ＤＣＴ)                            なし
１０５(量子化)                            専用ＰＥ４
１０６(ハフマン符号化)                    専用ＰＥ５
１０７(ＪＰＥＧファイル出力)              専用ＰＥ６
９９９(汎用ＰＥ)                          汎用ＰＥ１、空スロット１
９９９(汎用ＰＥ)                          汎用ＰＥ２、空スロット１
【０２２２】
また、図２６に、各プロセッシング・エレメントＰＥを、コントロール・ユニットＣＵへ登録する手順を示す。ここでは、タスク識別子ＴＩＤ１０４を除くタスク識別子ＴＩＤ１０１から１０７までの専用プロセッシング・エレメントＰＥがそれぞれ1つずつ存在しているとする。また、１つの空きスロットを持つ汎用プロセッシング・エレメントが２つ存在しているとする。
【０２２３】
（１）専用プロセッシング・エレメントＰＥ１は、コントロール・ユニットＣＵへＰＥ登録要求を送信する。
（２）コントロール・ユニットＣＵは、プロセッシング・エレメントＰＥを内部のＰＥ管理テーブルに登録する。そして、コントロール・ユニットＣＵは、一意なＰＥＩＤを発行し、応答として専用プロセッシング・エレメントＰＥ１へ送信する。
【０２２４】
（３）他のプロセッシング・エレメントＰＥも同じ手順の動作をする。なお、登録する順番は問わない。
（４）汎用プロセッシング・エレメントＰＥ１も、コントロール・ユニットＣＵへ、ＰＥ登録要求を送信する。このとき送信する項目は、専用プロセッシング・エレメントPEのときと同じである。ここで、登録時、空きスロット数は１とする。
【０２２５】
（５）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥ１に応答を送信する。さらに、汎用プロセッシング・エレメントＰＥ２も同様に登録される。
【０２２６】
クライアントＣＬは、ＪＰＥＧエンコーディングのサービスを実行したい。ところが、現在登録されているプロセッシング・エレメントＰＥでは、タスク識別子ＴＩＤ＝１０４のＤＣＴが存在しない。このため、このままでは、サービスを実行できない。
【０２２７】
クライアントＣＬは、ＤＣＴのダイナミック・プロセッシング・ライブラリＤＰＬを持っているものとする、そして、図２７に示す手順で、サービスを要求する前に、事前にダイナミック・プロセッシング・ライブラリＤＰＬを汎用プロセッシング・エレメントにロードさせる。
【０２２８】
（１）クライアントＣＬは、コントロール・ユニットＣＵに、ダイナミック・プロセッシング・ライブラリＤＰＬロード要求を送信する。
【０２２９】
（２）コントロール・ユニットＣＵは、送られてきたダイナミック・プロセッシング・ライブラリＤＰＬのＣＰＵ種別、ＯＳに基づいて、このダイナミック・プロセッシング・ライブラリＤＰＬをロードできる汎用プロセッシング・エレメントを検索する。ここでは、汎用プロセッシング・エレメントＰＥ１が検索されたとする。
【０２３０】
（３）コントロール・ユニットＣＵは、ロード可能な汎用プロセッシング・エレメントが存在し、かつ、空きスロットがある場合、その汎用プロセッシング・エレメントにダイナミック・プロセッシング・ライブラリＤＰＬを送信する。
【０２３１】
（４）汎用プロセッシング・エレメントＰＥ１は、ダイナミック・プロセッシング・ライブラリＤＰＬがダイナミック・プロセッシング・ライブラリＤＰＬとしての要件を満たしているかチェックし、ロードする。そして、空きスロット数を１つ減ずる。
汎用プロセッシング・エレメントＰＥ１は、空きスロット数が０になったとき、ダイナミック・プロセッシング・ライブラリＤＰＬを１つアンロードしようとする。
【０２３２】
（５）汎用プロセッシング・エレメントＰＥ１は、ダイナミック・プロセッシング・ライブラリＤＰＬをロードできたときは成功、できなかいときは失敗を送信する。
（６）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥ１からの結果をクライアントＣＬに転送する。
【０２３３】
以上の手順で、クライアントＣＬからＪＰＥＧエンコードさせるプロセッシング・エレメントＰＥの準備が整う。以下、図２８に示す手順にしたがって、ＪＰＥＧエンコードサービスを実行する。
【０２３４】
（１）クライアントＣＬは、コントロール・ユニットＣＵにサービス実行要求を送信する。
（２）コントロール・ユニットＣＵは、サービスに必要なタスクを検索し、処理経路を構成する。ＤＣＴの処理には、先ほどダイナミック・プロセッシング・ライブラリＤＰＬがロードされた汎用プロセッシング・エレメントＰＥ１が選択される。コントロール・ユニットにおける経路構築の詳細は、本発明の対象ではないため詳細な説明は省略する。
【０２３５】
（３）コントロール・ユニットＣＵは、処理経路確立の結果を受信する。
（４）コントロール・ユニットＣＵは、クライアントＣＬにサービス実行要求が成功したことを送信する。このとき、サービスを提供する最初のプロセッシング・エレメントと最後のプロセッシング・エレメントのアドレスがクライアントＣＬに送信される。
【０２３６】
（５）クライアントＣＬは、最初のＰＥである専用プロセッシング・エレメントＰＥ１に接続する。
（６）クライアントＣＬは、最後のＰＥである専用プロセッシング・エレメントＰＥ６に接続する。
【０２３７】
これで、クライアントＣＬは、サービスを利用する準備が整ったので、ＪＰＥＧエンコードサービスを利用する。このため、ビットマップファイルを送信する。
【０２３８】
図２９を参照して、説明を続ける。
（１）クライアントＣＬは、ビットマップファイルを、専用プロセッシング・エレメントＰＥ１へ送信する。
【０２３９】
（２）専用プロセッシング・エレメントＰＥ１は、ビットマップを受信し、ＲＧＢデータを抜き出し、専用プロセッシング・エレメントＰＥ２に送信する。
（３）専用プロセッシング・エレメントＰＥ２は、ＲＧＢ画像をＹＣｂＣｒ画像に変換し、専用プロセッシング・エレメントＰＥ３に送信する。
【０２４０】
（４）専用プロセッシング・エレメントＰＥ３は、ＹＣｂＣｒ画像をダウンサンプリングし、汎用プロセッシング・エレメントＰＥ１に送信する。
（５）汎用プロセッシング・エレメントＰＥ１は、ＤＣＴ機能がロードされており、これが使われるので、ＤＣＴを行い、専用プロセッシング・エレメントＰＥ４に送信する。
【０２４１】
（６）専用プロセッシング・エレメントＰＥ４は、量子化を行い専用プロセッシング・エレメントＰＥ５に送信する。
（７）専用プロセッシング・エレメントＰＥ５は、ハフマン符号化を行い、専用プロセッシング・エレメントＰＥ６に送信する。
【０２４２】
（８）専用プロセッシング・エレメントＰＥ６は、ＪＰＥＧのヘッダをつけてクライアントＣＬに送信する。
（９）クライアントＣＬは、ＪＰＥＧデータを受信する。
【０２４３】
クライアントＣＬがコントロール・ユニットにサービス実行要求を送ったとき、そのサービスを実行するタスクを提供するプロセッシング・エレメントPEが存在しない場合、コントロール・ユニットは不足しているタスク識別子をクライアントＣＬに送信する(図３０参照)。
【０２４４】
これにより、クライアントＣＬは、不足するタスクを認識できる。そして、それを提供するダイナミック・プロセッシング・ライブラリＤＰＬを持っていれば汎用プロセッシング・エレメントにロードさせることができる。
【０２４５】
図３０は、サービス実行要求時にタスクが実行できずにエラーとなったときの手順を示す。
（１）クライアントＣＬは、コントロール・ユニットＣＵにサービス実行要求、例えばＪＰＥＧエンコードを送信する。
【０２４６】
（２）コントロール・ユニットＣＵは、サービスをタスクに分解し、タスクがどのPEで実行可能か調べる。
（３）コントロール・ユニットＣＵは、タスクを提供するプロセッシング・エレメントＰＥが無い場合、不足しているタスク識別子のリストをクライアントＣＬに送信する。
【０２４７】
この後、クライアントＣＬは、サービスの実行に不足しているタスクのダイナミック・プロセッシング・ライブラリＤＰＬを所有している場合、ダイナミック・プロセッシング・ライブラリＤＰＬをコントロール・ユニットＣＵに送信する。これにより、ダイナミック・プロセッシング・ライブラリＤＰＬを汎用プロセッシング・エレメントＰＥにロードすることができる。
【０２４８】
（実施例４）
次に、実施例４に係る汎用プロセッシング・エレメントを使ったJPEGエンコードの例を説明する。ここでは、１度ＪＰＥＧ処理をした後、専用プロセッシング・エレメントＰＥが故障し、２回目に実行するときに汎用プロセッシング・エレメントに故障したプロセッシング・エレメントＰＥが担っていた機能がロードされる例である。
【０２４９】
前述したＪＰＥＧエンコードの例で、一度処理を終了し、後で再度ＪＰＥＧエンコードを行う場合を考える。その時、色信号の変換のタスクを提供していた専用プロセッシング・エレメントＰＥ２が故障し、ＪＰＥＧエンコードが行えなくなったとする。
この場合、クライアントＣＬから色信号変換のダイナミック・プロセッシング・ライブラリＤＰＬを汎用プロセッシング・エレメントＰＥ２にロードして処理を行う手順を示す。
【０２５０】
図３１は、この場合の手順を示している。
（１）クライアントＣＬは、コントロール・ユニットＣＵにサービス実行要求を送信する。
（２）コントロール・ユニットＣＵは、サービスに必要なタスクを検索し、処理経路を構成する。コントロール・ユニットＣＵには、色信号変換を行うプロセッシング・エレメントとして、専用プロセッシング・エレメントＰＥ２が登録されている。ここで、故障により専用プロセッシング・エレメントＰＥ２が使えなくなっている。この結果、コントロール・ユニットＣＵは、処理経路を確立しようとするがエラーとなる。
【０２５１】
（３）コントロール・ユニットＣＵは、処理経路確立失敗を受信する。
（４）コントロール・ユニットＣＵは、不足しているプロセッシング・エレメントＰＥとして色信号変換のタスク識別子ＴＩＤをクライアントＣＬに送信する。
【０２５２】
（５）クライアントＣＬは、ＪＰＥＧエンコードサービスに色信号変換サービスが不足していることを認識する。そして、クライアントＣＬは、所有している色信号変換ダイナミック・プロセッシング・ライブラリＤＰＬを登録しようとする。
【０２５３】
（６）コントロール・ユニットＣＵは、クライアントＣＬから受信した色信号ダイナミック・プロセッシング・ライブラリＤＰＬをロードする汎用プロセッシング・エレメントを決定する。ここでは、空スロットのある汎用プロセッシング・エレメントＰＥ２が選択される。
【０２５４】
（７）クライアントＣＬは、色信号変換ダイナミック・プロセッシング・ライブラリＤＰＬを汎用プロセッシング・エレメントＰＥ２に送信する。
（８）汎用プロセッシング・エレメントＰＥ２は、ダイナミック・プロセッシング・ライブラリＤＰＬをロードする。
【０２５５】
（９）汎用プロセッシング・エレメントＰＥ２は、コントロール・ユニットＣＵにダイナミック・プロセッシング・ライブラリＤＰＬのロードが成功したことを送信する。
（１０）コントロール・ユニットＣＵは、クライアントＣＬにダイナミック・プロセッシング・ライブラリＤＰＬのロードが成功したことを送信する。
【０２５６】
上述の手順により、ＪＰＥＧエンコードに不足していた色信号変換サービスが汎用プロセッシング・エレメントにより提供できるようになる。
このため、図３２に示す手順にしたがい、クライアントＣＬはサービスを開始できる。
【０２５７】
（１）クライアントＣＬは、コントロール・ユニットＣＵに、サービス実行要求を送信する。
（２）コントロール・ユニットＣＵは、サービスに必要なタスクを検索し、処理経路を構成する。ＤＣＴの処理には、先ほどダイナミック・プロセッシング・ライブラリＤＰＬがロードされた汎用プロセッシング・エレメントＰＥ１が選択される。色信号変換の処理には汎用プロセッシング・エレメントＰＥ２が選択される。
【０２５８】
（３）コントロール・ユニットＣＵは、処理経路確立の結果を受信する。
（４）コントロール・ユニットＣＵは、クライアントＣＬにサービス実行要求が成功したことを送信する。このときサービスを提供する最初のプロセッシング・エレメントＰＥのアドレスと、最後のプロセッシング・エレメントＰＥのアドレスとが、クライアントＣＬに送信される。
【０２５９】
（５）クライアントＣＬは、最初のＰＥである専用プロセッシング・エレメントＰＥ１に接続する。
（６）クライアントＣＬは、最後のＰＥである専用プロセッシング・エレメントＰＥ６に接続する。
【０２６０】
ＪＰＥＧエンコードの準備が整ったので、図３３に示すように、クライアントＣＬは、処理を開始できる。
（１）クライアントＣＬは、ビットマップファイルを専用プロセッシング・エレメントＰＥ１へ送信する。
【０２６１】
（２）専用プロセッシング・エレメントＰＥ１は、ビットマップファイルを受信し、ＲＧＢデータを抽出する。そして、専用プロセッシング・エレメントＰＥ１は、ＲＧＢデータを汎用プロセッシング・エレメントＰＥ２に送信する。
【０２６２】
（３）汎用プロセッシング・エレメントＰＥ２は、ＲＧＢデータからＹＣｂＣｒデータに変換し、専用プロセッシング・エレメントＰＥ３に送信する。
（４）専用プロセッシング・エレメントＰＥ３は、ＹＣｂＣｒデータをダウンサンプリングし、汎用プロセッシング・エレメントＰＥ１に送信する。
【０２６３】
（５）汎用プロセッシング・エレメントＰＥ１には、ＤＣＴ機能がロードされている。汎用プロセッシング・エレメントＰＥ１は、ＤＣＴを行い、専用プロセッシング・エレメントＰＥ４に送信する。
（６）専用プロセッシング・エレメントＰＥ４は、量子化を行い専用プロセッシング・エレメントＰＥ５に送信する。
【０２６４】
（５）専用プロセッシング・エレメントＰＥ５は、ハフマン符号化を行い、専用プロセッシング・エレメントＰＥ６に送信する。
（６）専用プロセッシング・エレメントＰＥ６は、ＪＰＥＧのヘッダをつけてクライアントＣＬに送信する。
（７）クライアントＣＬは、ＪＰＥＧデータを受信する。
【０２６５】
（実施例５）
次に、本発明の実施例５に係る汎用プロセッシング・エレメントを使ったＪＰＥＧエンコードの例を説明する。ここでは、汎用プロセッシング・エレメントは１個、空きスロットがなく、マガジンにアンロードされる例である。
【０２６６】
汎用プロセッシング・エレメントのスロット数が１つであり、すでにＤＣＴではないダイナミック・プロセッシング・ライブラリＤＰＬがロードされており、現在は使用されておらず、マガジンには空があるとする。
【０２６７】
コントロール・ユニットＣＵには、この汎用プロセッシング・エレメントだけ登録されている。この条件において、クライアントＣＬがダイナミック・プロセッシング・ライブラリＤＰＬを送信すると、汎用プロセッシング・エレメントにダイナミック・プロセッシング・ライブラリＤＰＬをロードする前に既存のダイナミック・プロセッシング・ライブラリＤＰＬがマガジンに移動する。
【０２６８】
図３４を参照して、本実施例の手順を説明する。
（１）クライアントＣＬは、コントロール・ユニットにダイナミック・プロセッシング・ライブラリＤＰＬを送信する。
【０２６９】
（２）コントロール・ユニットＣＵは、ダイナミック・プロセッシング・ライブラリＤＰＬをロードする汎用プロセッシング・エレメントを決定する。
（３）これからダイナミック・プロセッシング・ライブラリＤＰＬをロードしようとする汎用プロセッシング・エレメントＰＥは、すでに空スロットがない。このため、コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥにアンロード要求を送信する。
【０２７０】
（４）汎用プロセッシング・エレメントＰＥは、マガジンに空があったのでスロット内のダイナミック・プロセッシング・ライブラリＤＰＬをマガジンに移動する。
（５）汎用プロセッシング・エレメントＰＥは、コントロール・ユニットＣＵにアンロード結果を送信する。
【０２７１】
（６）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントに空スロットができたのでダイナミック・プロセッシング・ライブラリＤＰＬを送信する。
（７）汎用プロセッシング・エレメントＰＥは、ダイナミック・プロセッシング・ライブラリＤＰＬをロードする。
【０２７２】
（８）汎用プロセッシング・エレメントＰＥは、コントロール・ユニットＣＵに結果を送信する。
（９）コントロール・ユニットＣＵは、クライアントＣＬに結果を送信する。
【０２７３】
なお、汎用プロセッシング・エレメントＰＥにマガジンの空がなく、ダイナミック・プロセッシング・ライブラリＤＰＬがリムーブされる場合も、本実施例のシーケンスと同じになる。
【０２７４】
（実施例６）
本発明の実施例６に係る汎用プロセッシング・エレメントを使ったＪＰＥＧエンコードの例を説明する。ここでは、空スロットがなく、利用できる汎用プロセッシング・エレメントが存在しない例である。
【０２７５】
図３５を参照して、汎用プロセッシング・エレメントＰＥに空スロットがなく、クライアントＣＬから要求した処理が行えない例を説明する。
（１）クライアントＣＬは、ダイナミック・プロセッシング・ライブラリＤＰＬをコントロール・ユニットＣＵに送信する。
【０２７６】
（２）コントロール・ユニットＣＵは、送られてきたダイナミック・プロセッシング・ライブラリＤＰＬをロード可能な汎用プロセッシング・エレメントＰＥを決定する。
（３）コントロール・ユニットＣＵは、その汎用プロセッシング・エレメントＰＥにアンロード要求を送信する。
【０２７７】
（４）汎用プロセッシング・エレメントＰＥでは、そのダイナミック・プロセッシング・ライブラリＤＰＬは現在使用中であって、アンロード不可であるとする。
（５）コントロール・ユニットＣＵには、アンロード不可として結果を送信する。
【０２７８】
（６）コントロール・ユニットＣＵは、他にも空スロットがなく、かつこのダイナミック・プロセッシング・ライブラリＤＰＬをロードできる汎用プロセッシング・エレメントが存在する場合、それらＰＥにもアンロード要求を送る。ここでは、アンロードできた汎用プロセッシング・エレメントは存在しなかったとする。
【０２７９】
（７）そして、クライアントＣＬにロード結果を送信する。
なお、汎用プロセッシング・エレメントが存在しない場合も、本実施例と同じ手順になる。
【０２８０】
（実施例７）
本発明の実施例７に係る汎用プロセッシング・エレメントを使ったJPEGエンコードについて説明する。本実施例は、単一マシンの汎用プロセッシング・エレメント２個が使用される例である。
ここで、単一マシンとは、例えばノートＰＣ１台というように、ＰＣの中にＣＰＵがあり、そこでＯＳが動作している装置をいう。なお、仮想化技術により、あるＯＳ上で別のＯＳが動作する場合も含む概念である。
【０２８１】
ＪＰＥＧエンコードにおいて、単一マシンで動作する２個の汎用プロセッシング・エレメントが使われる実施例を示す。単一マシン上では、異なるポート番号で２つの汎用プロセッシング・エレメントが動作しているとする。汎用プロセッシング・エレメントは以下の表２１に掲げる仕様とする。また、専用プロセッシング・エレメントＰＥは、上述したものと同じとする。
【０２８２】
（表２１）
汎用ＰＥ１              汎用ＰＥ２
ＣＰＵ                            Ａ社製                  Ａ社製
ＯＳ                              Ｘ社製                  Ｘ社製
ポート番号                        １２３４                １２３５
全スロット数(初期空スロット数)    １(１)                  １(１)
マガジン                          １スロットぶんの空      １スロットぶんの空
【０２８３】
図３６は、汎用プロセッシング・エレメントＰＥ１、ＰＥ２を登録する手順を示す。
（１）専用プロセッシング・エレメントＰＥ１は、コントロール・ユニットＣＵへＰＥ登録要求を送信する。
【０２８４】
（２）コントロール・ユニットＣＵは、プロセッシング・エレメントＰＥ１を内部のＰＥ管理テーブルに登録し、一意なＰＥＩＤを発行し、応答として送信する。
（３）他のプロセッシング・エレメントＰＥ２等も同じ動作をする。登録する順番は問わない。
【０２８５】
（４）汎用プロセッシング・エレメントＰＥ１も、コントロール・ユニットＣＵへＰＥ登録要求を送信する。このとき送信する項目は、専用プロセッシング・エレメントＰＥと同じである。登録時、空きスロット数は１とする。
【０２８６】
（５）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥ１に応答を送信する。
（６）汎用プロセッシング・エレメントＰＥ２も、コントロール・ユニットＣＵへＰＥ登録要求を送信する。登録時、空きスロット数は１とする。コントロール・ユニットＣＵは、ポート番号の違いにより汎用プロセッシング・エレメントＰＥ１と汎用プロセッシング・エレメントＰＥ２を識別する。汎用プロセッシング・エレメントＰＥ１のポート番号は１２３４、汎用プロセッシング・エレメントＰＥ２のポート番号は１２３５とする。
【０２８７】
（７）コントロール・ユニットＣＵは、汎用プロセッシング・エレメントＰＥ２に応答を送信する。
【０２８８】
次に、クライアントＣＬからＪＰＥＧエンコードに不足している色信号変換と、ＤＣＴのダイナミック・プロセッシング・ライブラリＤＰＬと、を汎用プロセッシング・エレメントにロードする。この手順は、上述したシーケンスと同様なので説明は省略する。
【０２８９】
汎用プロセッシング・エレメントＰＥ１に色信号変換ＤＰＬが、汎用プロセッシング・エレメントＰＥ２にＤＣＴダイナミック・プロセッシング・ライブラリＤＰＬがロードされたとする。
【０２９０】
これまでの手順により、ＪＰＥＧエンコードの準備が完了する。これにより、クライアントＣＬからサービス実行要求をコントロール・ユニットＣＵに送信する。これは上述したシーケンスと同様なので説明は省略する。
【０２９１】
図３７は、ＪＰＥＧエンコード時のデータの流れを示す。
（１）クライアントＣＬは、ビットマップファイルを、専用プロセッシング・エレメントＰＥ１に送信する。
【０２９２】
（２）専用プロセッシング・エレメントＰＥ１は、ビットマップファイルを受信し、ＲＧＢデータを抽出し、汎用プロセッシング・エレメントＰＥ１に送信する。
（３）汎用プロセッシング・エレメントＰＥ１は、ＲＧＢデータからＹＣｂＣｒデータに変換し専用プロセッシング・エレメントＰＥ３に送信する。
【０２９３】
（４）専用プロセッシング・エレメントＰＥ３は、ＹＣｂＣｒデータをダウンサンプリングし、汎用プロセッシング・エレメントＰＥ２に送信する。
（５）汎用プロセッシング・エレメントＰＥ２は、ＤＣＴ機能がロードされている。これにより、ＤＣＴを行い専用プロセッシング・エレメントＰＥ４に送信する。
【０２９４】
（６）専用プロセッシング・エレメントＰＥ４は、量子化を行い専用プロセッシング・エレメントＰＥ５に送信する。
（７）専用プロセッシング・エレメントＰＥ５は、ハフマン符号化を行い、専用プロセッシング・エレメントＰＥ６に送信する。
【０２９５】
（８）専用プロセッシング・エレメントＰＥ６は、ＪＰＥＧのヘッダをつけてクライアントＣＬに送信する。
（９）クライアントＣＬは、ＪＰＥＧデータを受信する。
【０２９６】
上記各実施例においては、通信部分はＴＣＰ／ＩＰを用いて説明したが、ＵＤＰを使用してもよいし、有線無線区別など問わず、上記通信が実現できれば通信方式には限定されない。
上記各実施例において示したデータ構造は、ここで述べる動作が実現可能であればこの形式に限定されない。
上記各実施例において、コントロール・ユニットＣＵや汎用プロセッシング・エレメントが管理する情報などは、動作に最低限の情報を挙げただけで、ここで書いた動作が実現可能であればこれだけに限定されない。
上記各実施例において、ＪＰＥＧエンコードを例にして説明したが、処理内容はＭＰＥＧエンコードでも、その他のものでも構わない。
【産業上の利用可能性】
【０２９７】
以上のように、本発明は、オンデマンドでのプログラムのインストールと、その使用ができる汎用プロセッシング・エレメントに有用である。
【符号の説明】
【０２９８】
１００  汎用プロセッシング・エレメント
１０３  マガジン
１１０ａ〜１１０ｅ  スロット
２００  コントロール・ユニット
【図１】
2010224942.tif 000004
【図２】
2010224942.tif 000005
【図３】
2010224942.tif 000006
【図４】
2010224942.tif 000007
【図５】
2010224942.tif 000008
【図６】
2010224942.tif 000009
【図７】
2010224942.tif 000010
【図８】
2010224942.tif 000011
【図９】
2010224942.tif 000012
【図１０】
2010224942.tif 000013
【図１１】
2010224942.tif 000014
【図１２】
2010224942.tif 000015
【図１３】
2010224942.tif 000016
【図１４】
2010224942.tif 000017
【図１５】
2010224942.tif 000018
【図１６】
2010224942.tif 000019
【図１７】
2010224942.tif 000020
【図１８】
2010224942.tif 000021
【図１９】
2010224942.tif 000022
【図２０】
2010224942.tif 000023
【図２１】
2010224942.tif 000024
【図２２】
2010224942.tif 000025
【図２３】
2010224942.tif 000026
【図２４】
2010224942.tif 000027
【図２５】
2010224942.tif 000028
【図２６】
2010224942.tif 000029
【図２７】
2010224942.tif 000030
【図２８】
2010224942.tif 000031
【図２９】
2010224942.tif 000032
【図３０】
2010224942.tif 000033
【図３１】
2010224942.tif 000034
【図３２】
2010224942.tif 000035
【図３３】
2010224942.tif 000036
【図３４】
2010224942.tif 000037
【図３５】
2010224942.tif 000038
【図３６】
2010224942.tif 000039
【図３７】
2010224942.tif 000040
【手続補正書】
【提出日】平成22年4月16日(2010.4.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
待ち受けＴＣＰポート番号は、汎用プロセッシング・エレメントが他からの接続を待ち受けるＴＣＰのポート番号である。ここでは説明の都合上、通信にＴＣＰ／ＩＰを使用して説明するがこれには限定されない。なお、汎用プロセッシング・エレメントのＩＰアドレスは、以下のとおりに述べる。最初に汎用プロセッシング・エレメントからコントロール・ユニットへ接続するとき、コントロール・ユニット側では汎用プロセッシング・エレメントのＩＰアドレスを知ることができる。このため登録情報には、ＩＰアドレスを含めない。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００９１
【補正方法】変更
【補正の内容】
【００９１】
マガジンとは、データバックアップ用のテープ装置で、テープを蓄えておく場所をマガジンと呼ぶことに由来する。スロットは、テープ装置との類比で言えば、ドライブに相当する。例えば、頻繁には利用されないダイナミック・プロセッシング・ライブラリＤＰＬはマガジン１０３に移動され、保管される。マガジン１０３に格納されたダイナミック・プロセッシング・ライブラリＤＰＬは実行できない。