(57)【要約】【課題】フレームなどの処理単位にまとめられている入力データを分散処理によって連続的に処理する計算システムにおいて、設計終了後や運用中においてもデータの分散先となる処理装置の個数や配置の変更を容易に行えるようにし、処理のオーバーヘッドを小さくする。【解決手段】バッファと処理コアとを備える処理装置を複数個用意してこれらをデイジーチェーン接続する。個々の処理装置において、フレームなどの処理単位の入力データに対して、バッファに空きがあるかどうかとその処理装置において実行可能な種類の処理であるかどうかに応じて、処理が可能と判断される場合にはその処理単位のデータを抽出して処理を行い、処理が可能ではないと判断されるときにはその処理単位のデータを次の処理装置に出力する。【選択図】図１
2014016769.tif 000002
【特許請求の範囲】
【請求項１】
処理単位にまとめられている入力データを連続的に処理する計算システムであって、
各々が前記処理単位のデータを処理することが可能であってデイジーチェーン接続された複数個の処理装置を備え、
各処理装置は、前記処理単位のデータを格納可能なバッファと、前記バッファに格納された前記処理単位のデータに対して所定の処理を実行する処理コアと、前記バッファに空きがあり、かつ、当該処理装置に入力した前記処理単位のデータに対して施すべき処理と当該処理装置で実行可能な処理とが一致する場合に、当該処理装置に入力した前記処理単位のデータを次段の処理装置に出力することなく前記バッファに格納し、それ以外の場合に当該処理装置に入力した前記処理単位のデータをそのまま前記次段の処理装置に出力する制御手段と、を有する、計算システム。
【請求項２】
前記処理単位のデータは、当該処理単位のデータに施すべき処理の内容を示す処理ＩＤの部分と、前記処理ＩＤの部分に引き続く処理対象データの部分と、から構成され、
前記制御手段は、
当該処理装置において実行する処理の内容を示す処理種別ＩＤを格納する処理種別ＩＤ格納部と、
当該処理装置に入力したデータから前記処理単位のデータを検出して一時的に保持し、前記処理ＩＤの部分を検出する照合バッファと、
空データを生成する空データ生成手段と、
前記次段の処理装置への出力のために、前記照合バッファの出力と前記空データ生成手段の出力とのいずれかを選択するセレクタと、
前記バッファでの空きの有無を監視し、前記照合バッファで検出された前記処理ＩＤと前記処理種別ＩＤ格納部に格納されている前記処理種別ＩＤとを照合し、前記バッファに空きがありかつ前記処理ＩＤと前記処理種別ＩＤとが一致する場合に、前記セレクタに前記空データ生成手段の出力を選択させるとともに当該処理単位の前記処理対象データを前記バッファに格納し、それ以外の場合に、前記セレクタに前記照合バッファの出力を選択させる照合・制御部と、
を有する、請求項１に記載の計算システム。
【請求項３】
前記処理単位はフレームまたはパケットである、請求項１または２に記載の計算システム。
【請求項４】
処理単位にまとめられたデータに対して処理を実行する処理装置であって、
前記データが連続的に供給される入力端子と、
次段の処理装置が接続可能な出力端子と、
前記処理単位のデータを格納可能なバッファと、
前記バッファに格納された前記処理単位のデータに対して所定の処理を実行する処理コアと、
前記バッファに空きがあり、かつ、前記入力端子に供給された処理単位のデータに対して施すべき処理と前記処理コアで実行される処理とが一致する場合に、前記供給された処理単位のデータを前記バッファに格納し、それ以外の場合に前記入力端子に供給された処理単位のデータをそのまま前記出力端子に与える制御手段と、
を有する処理装置。
【請求項５】
前記処理単位のデータは、当該処理単位のデータに施すべき処理の内容を示す処理ＩＤの部分と、前記処理ＩＤの部分に引き続く処理対象データの部分と、から構成され、
前記制御手段は、
前記処理コアが実行する処理の内容を示す処理種別ＩＤを格納する処理種別ＩＤ格納部と、
前記入力端子に供給されたデータから前記処理単位のデータを検出して一時的に保持し、前記処理ＩＤの部分を検出する照合バッファと、
空データを生成する空データ生成手段と、
前記次段の処理装置への出力のために、前記照合バッファの出力と前記空データ生成手段の出力とのいずれかを選択して前記出力端子に接続するセレクタと、
前記バッファでの空きの有無を監視し、前記照合バッファで検出された前記処理ＩＤと前記処理種別ＩＤ格納部に格納されている前記処理種別ＩＤとを照合し、前記バッファに空きがありかつ前記処理ＩＤと前記処理種別ＩＤとが一致する場合に、前記セレクタに前記空データ生成手段の出力を選択させるとともに当該処理単位のデータの前記処理対象データを前記バッファに格納し、それ以外の場合に、前記セレクタに前記照合バッファの出力を選択させる照合・制御部と、
を有する、請求項４に記載の処理装置。
【請求項６】
処理単位にまとめられている入力データを連続的に処理する計算システムにおける内部負荷分散方法であって、
各々が前記処理単位のデータを処理することが可能であって、前記処理単位のデータを格納可能なバッファと、前記バッファに格納された前記処理単位のデータに対して所定の処理を実行する処理コアとを有する複数個の処理装置をデイジーチェーン接続し、
各処理装置において、当該処理装置の前記バッファに空きがあり、かつ、当該処理装置に入力した前記処理単位のデータに対して施すべき処理と当該処理装置で実行可能な処理とが一致する場合に、当該処理装置に入力した前記処理単位のデータを次段の処理装置に出力することなく前記バッファに格納し、これによって前記処理コアによって前記処理単位のデータに対して前記所定の処理を実行させ、
前記バッファに空きがないか、あるいは、当該処理装置に入力した前記処理単位のデータに対して施すべき処理と当該処理装置で実行可能な処理とが一致しない場合に、当該処理装置に入力した前記処理単位のデータをそのまま前記次段の処理装置に出力する、
内部負荷分散方法。
【請求項７】
前記処理単位のデータは、当該処理単位のデータに施すべき処理の内容を示す処理ＩＤの部分と、前記処理ＩＤの部分に引き続く処理対象データの部分と、から構成され、
前記各処理装置において、当該処理装置において実行する処理の内容を示す処理種別ＩＤを保持し、
前記処理ＩＤと前記処理種別ＩＤとを照合することによって、当該処理装置に入力した前記処理単位のデータに対して施すべき処理と当該処理装置で実行可能な処理とが一致するかを判断し、
当該処理装置の前記バッファに空きがあり、かつ、当該処理装置に入力した前記処理単位のデータに対して施すべき処理と当該処理装置で実行可能な処理とが一致する場合には、当該処理単位のデータの代わりに空データを前記次段の処理装置に出力する、請求項６に記載の内部負荷分散方法。
【請求項８】
請求項４または５に記載の処理装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像フレームやパケットなどの処理単位にまとめられている入力データを連続的に処理する計算システムに関し、多数の処理単位からなる入力データを処理単位ごとに分散して処理することが可能な計算システムと、そのような計算システムに用いられて処理単位ごとの処理を実行する処理装置と、そのような計算システムにおいてどのように処理単位を処理装置に割り当てるかを動的に定める内部負荷分散方法とに関する。
【背景技術】
【０００２】
画像データや通信データなどのデータは、多くの場合、フレームあるいはパケットといった特定の単位量（構造ともいう）にまとめられて入出力や伝送、データ処理がなされる。以下の説明では、フレームやパケットなど、データに対していちどにまとめて入出力や伝送、データ処理などを行う際の単位となるもののことを処理単位と呼ぶ。なお、１フレームや１パケットを構成するデータの量は、一定であるとは限らない。また、画像データなどをパケット通信網で伝送する場合には、１フレームのデータが複数のパケットに分割されることが一般的であり、画像としてのデータに着目して処理を行う場合には例えばフレームが処理単位となり、通信に関連した処理を実行する場合にはパケットが処理単位となる。このように、ここでいう処理単位の大きさは、処理対象のデータに対してどのような処理を行うかによっても変化し得るものである。
【０００３】
画像データからなるフレームや通信データからなるパケットが処理単位ごとに入力し、それらの入力データを連続的に処理するシステムを考える。このようなシステムでは、フレームやパケットなどの処理単位ごとに、モジュール（以下、処理装置とも呼ぶ）が処理を実行する。ここで、入力データの流入量がモジュール１つあたりの処理性能よりも大きい場合には、１台のモジュールでは処理しきれないことになるから、入力データをシステム内の複数のモジュールに対しフレームやパケットなどの処理単位ごとに分散させ、各モジュールにおいて分散して処理を実行する必要がある。入力データを処理単位ごとにどのように各モジュールに分散させるかを予め定めておく場合もあるが、入力データによっては、ある時刻のデータをモジュールに割り当てるかについて、事前に設計あるいは計画することが困難な場合があり、そのような場合には、データをどのようにモジュールに負荷分散させるかを動的に決定する必要がある。
【０００４】
フレームあるいはパケットの形態で入力するデータを複数のモジュール（処理装置）に動的に負荷分散させるためには、一般的には、非特許文献１に示されるように、ロードバランサ（負荷分散装置）が用いられる。ネットワーク装置としてロードバランサは、データを複数の処理装置に振り分ける機能を有するが、入力データの分散先となる処理装置としてサーバを前提としており、一般的なＩＰ(Internet Protocol)パケットを用いてサーバとの間で通信を行っている、したがって、ネットワーク装置としてのロードバランサは、パケット伝送におけるプロトコル処理のための所定のオーバーヘッドが発生する。このようなロードバランサを備えるシステムでは、画像フレームやパケットなどの高速処理に際して、処理性能や消費電力の損失が大きいという課題がある。
【０００５】
近年の半導体装置製造技術の進展により、１つの半導体チップ上に各種の機能を実装したＳｏＣ（システムオンチップ：system-on-chip）と呼ばれる集積回路が実用化されており、非特許文献２に示すように、ＳｏＣ上でのバス／スイッチによるロードバランサが実現されている。ＳｏＣによるロードバランサでは、バスとアービタとを用いて、あるいはインターコネクトスイッチを用いて、処理性能や消費電力の損失を削減しつつロードバランスの機能を実現している。しかしながら、バスによる実現では電気特性上の制限により、またスイッチによる実現でも負荷分散手順を変更することが必要となるため、ＳｏＣによって構成されたロードバランサを用いる場合には、いったん設計を終えたシステムあるいは運用中のシステムにおいて、負荷を分散させる処理装置の個数や配置を変更することは容易ではない。したがって、処理すべきデータの単位時間当たりの量やデータの粒度（１回のデータ処理での処理の対象となるデータの大きさ）などのデータの性質がシステムの設計時から変化した場合に、データの分散先となる処理装置の個数や配置を速やかに変えることができない、という課題がある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“負荷分散入門”、［online］、2004年7月20日、富士通株式会社、［2012年2月22日検索］、インターネット〈URL：http://fenics.fujitsu.com/products/ipcom/catalog/data/1/1.html〉
【非特許文献２】“Cell Broadband EngineTM アーキテクチャ”、［online］、2007年10月11日、ソニー株式会社及び株式会社ソニー・コンピュータエンタテインメント、［2012年2月22日検索］、インターネット〈URL：http://cell.scei.co.jp/pdf/CBE_Architecture_v102_j.pdf〉、第２６頁
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように従来の動的な負荷分散技術では、処理のオーバヘッドが大きかったり、あるいは、設計終了後あるいは運用中においてデータの分散先となる処理装置の個数や配置の変更が難しい、という課題がある。
【０００８】
そこで本発明の目的は、処理単位にまとめられている入力データを分散処理によって連続的に処理する計算システムであって、設計終了後や運用中においてもデータの分散先となる処理装置の個数や配置の変更が容易であり、処理オーバーヘッドの小さい計算システムを提供することにある。
【０００９】
本発明の別の目的は、処理単位にまとめられている入力データを分散処理によって連続的に処理し、設計終了後や運用中においてもデータの分散先となる処理装置の個数や配置の変更が容易であって処理オーバーヘッドの小さい計算システムにおいて用いられる処理装置及び内部負荷分散方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の計算システムは、処理単位にまとめられている入力データを連続的に処理する計算システムであって、各々が処理単位のデータを処理することが可能であってデイジーチェーン接続された複数個の処理装置を備え、各処理装置は、処理単位のデータを格納可能なバッファと、バッファに格納された処理単位のデータに対して所定の処理を実行する処理コアと、バッファに空きがあり、かつ、その処理装置に入力した処理単位のデータに対して施すべき処理とその処理装置で実行可能な処理とが一致する場合に、その処理装置に入力した処理単位データを次段の処理装置に出力することなくバッファに格納し、それ以外の場合にその処理装置に入力した処理単位のデータをそのまま次段の処理装置に出力する制御手段と、を有する。
【００１１】
本発明の処理装置は、処理単位にまとめられたデータに対して処理を実行する処理装置であって、データが連続的に供給される入力端子と、次段の処理装置が接続可能な出力端子と、処理単位のデータを格納可能なバッファと、バッファに格納された処理単位のデータに対して所定の処理を実行する処理コアと、バッファに空きがあり、かつ、入力端子に供給された処理単のデータに対して施すべき処理と処理コアで実行される処理とが一致する場合に、供給された処理単位のデータをバッファに格納し、それ以外の場合に入力端子に供給された処理単位のデータをそのまま出力端子に与える制御手段と、を有する。
【００１２】
本発明の内部負荷分散方法は、処理単位にまとめられている入力データを連続的に処理する計算システムにおける内部負荷分散方法であって、各々が処理単位のデータを処理することが可能であって、処理単位のデータを格納可能なバッファと、バッファに格納された処理単位のデータに対して所定の処理を実行する処理コアとを有する複数個の処理装置をデイジーチェーン接続し、各処理装置において、その処理装置のバッファに空きがあり、かつ、その処理装置に入力した処理単位のデータに対して施すべき処理とその処理装置で実行可能な処理とが一致する場合に、その処理装置に入力した処理単位のデータを次段の処理装置に出力することなくバッファに格納し、これによって処理コアによって処理単位のデータに対して所定の処理を実行させ、バッファに空きがないか、あるいは、その処理装置に入力した処理単位のデータに対して施すべき処理とその処理装置で実行可能な処理とが一致しない場合に、その処理装置に入力した処理単位のデータをそのまま次段の処理装置に出力する。
【発明の効果】
【００１３】
本発明によれば、バッファと処理コアとを備える処理装置を複数個用意してこれらをデイジーチェーン接続し、個々の処理装置において、いちどに処理できるデータの単位である処理単位（例えば、フレームあるいはパケット）に対して、バッファに空きがあるかどうかとその処理装置において実行可能な種類の処理であるかどうかに応じて、処理が可能と判断される場合にはその処理単位のデータを抽出して処理を行い、処理が可能ではないと判断されるときにはその処理単位のデータを次の処理装置に出力するように構成することにより、処理および使用するハードウエアのオーバーヘッドを小さくし、処理対象データの流量に応じて、処理装置の個数や配備を柔軟に変更可能な、負荷分散機能を構築することができるようになる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の一形態の計算システムの構成を示すブロック図である。
【図２】処理対象となる入力データの構成例を示す図である。
【図３】図１に示した計算システムにおける負荷分散の動作を示す図である。
【図４】処理装置の構成の一例を示すブロック図である。
【図５】処理装置の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
次に、本発明を実施するための形態について、図面を参照して説明する。図１に示す本発明の実施の一形態の計算システムは、画像フレームやパケットなどの処理単位にまとめられている入力データを連続的に処理する計算システムである。以下では、入力データが例えば画像データであって処理単位がフレームであるものとして、本実施形態の計算システムを説明するが、本発明は、入力データの種類や何を処理単位とするかによって限定されるものではない。
【００１６】
本実施形態の計算システムは、複数の処理装置＃１〜＃Ｎをデイジーチェーン方式ですなわち線形順序で相互に接続したものであり、入力データをフレーム単位でこれらの複数の処理装置＃１〜＃Ｎに負荷分散させて処理するものである。フレームは、各処理装置においていちどに処理されるひとかたまりのデータである。
【００１７】
初段の処理装置＃１には入力１０が設けられており、処理対象となるデータは、ビットの流れ（ストリーム）として、全て、この入力１０に与えられる。初段の処理装置＃１は、後述する判断方法を用いて、入力１０に与えられたデータから自装置で処理するフレームを抽出し、残りのデータを２段目の処理装置＃２の入力に提供する。初段の処理装置＃１は、入力データから抽出されたフレームに対して、指定された処理内容の処理（例えば画像フレームに対する指定された処理）を実行するが、処理を実行した結果は、処理装置＃２に渡されるデータとは別に、出力＃１から外部に出力される。同様に、ｉを２以上の整数として、ｉ段目の処理装置＃ｉは、ｉ−１段目の処理装置＃（ｉ−１）からデータを供給され、自装置で処理すべきフレームを抽出してそのフレームに対して指定された処理を実行して処理結果を出力＃ｉから出力し、フレームを抽出した残りのデータをｉ＋１段目の処理装置＃（ｉ＋１）の入力に供給する。これらの複数の処理装置は、抽出したフレームに対して同一の処理内容の処理を実行するものであるが、個々の処理装置における処理能力（例えば、１フレームの処理に要する時間）はそれぞれ異なっていてもよい。複数の処理装置をそれぞれ複数の処理装置からなるいくつかのグループに分類し、グループごとに異なる処理を実行させるようにしてもよい。後述の説明では、処理装置に付与される処理種別ＩＤによって、その処理装置においてどのような処理を実行するかを特定している。
【００１８】
図２は、処理対象となる入力データとして１段目の処理装置＃１に与えられるデータの構成の一例を説明する。処理対象となるデータは、ビットの流れとして入力１０に到来するが、各処理装置におけるいちどに処理される処理単位であるフレーム内では、時間的な切れ目がなく連続的に入力１０に到来するものとする。全てのフレームは、各々、その開始時刻を一意に特定できるように、同期信号などの表示を備える。各フレームは、『処理ＩＤ』の部分とこれに引き続く『処理対象データ』の部分とから構成されている。『処理対象データ』は、当該フレームにおいて処理装置による実際の処理の対象となる部分であり、『処理ＩＤ』は、後続の『処理対象データ』に対してどのような処理を施すべきかを、例えば、例えば、処理の種類を表す数字で表現する部分である。
【００１９】
図３は、本実施形態における負荷分散の動作を説明する図である。
【００２０】
各処理装置は、印加された処理対象となるデータに対し、フレーム単位で、自装置が処理を施すかどうかの判断を行う。処理を施すと判断した場合には、そのフレームを自装置のバッファに格納し、そのフレームが取り除かれた残りのデータを次の段の処理装置に提供する。自装置において処理を施すかどうかの判断の詳細については後述する。一方、自装置では処理を施さないと判断した場合には、各処理装置は、当該フレームを含むデータをそのまま次の段の処理装置に引き渡す。
【００２１】
各処理装置は、あらかじめ設定された『処理種別ＩＤ』を保持している。『処理種別ＩＤ』は各フレームの『処理ＩＤ』との照合に用いられる。図に示した例では、１段目の処理装置と２段目の処理装置には、処理種別ＩＤ＝１が設定されている。この例に則って、自装置でフレームに対する処理を施すかどうかの判断について説明する。
【００２２】
１段目の処理装置＃１は、そのバッファが現在空であるとして、入力したデータのフレームにおける処理ＩＤを調べ、処理ＩＤが自装置の処理種別ＩＤ（この場合、１）と一致する最初のフレームに対して処理を施すと判断する。処理ＩＤが１である最初のフレームはフレームＡであるので、処理装置＃１は、フレームＡに対して処理を施すものとして、フレームＡを自装置のバッファに取り込み、フレームＡを取り除いたデータを２段目の処理装置＃２に出力する。後続するフレームＢも処理ＩＤ＝１を有するが、フレームＢが処理装置＃１に入力した時点では処理装置＃１はフレームＡに対する処理を続行していてバッファが空ではないので、処理装置＃１はフレームＢに対して処理を施すとは判断しない。その結果、１段目の処理装置＃１の出力ｗ１におけるデータには、フレームＢがそのまま残留することになる。図３において処理ＩＤ＝０は、そのフレームが空フレームであることを示しており、処理装置＃１においてフレームＡが処理されることにより、出力ｗ１において、フレームＡに対応するタイムスロットは空フレームとなっている。図において、時刻ｔ１は最初のフレームＡの処理ＩＤの部分が入力１０に入力を開始する時刻であり、時刻ｔ２はフレームＡの処理対象データの部分が入力１０に入力を開始する時刻である。同様に時刻ｔ３，ｔ４は、それぞれ、フレームＢの処理ＩＤの部分と処理対象データの部分とが入力１０に入力を開始する時刻である。
【００２３】
処理装置において処理を行うかどうかの判断は、各フレームの先頭にある処理ＩＤの照合に基づいて行われるから、処理装置＃１の出力ｗ１では、処理ＩＤの時間長の分（すなわちｔ２−ｔ１）だけ入力１０でのタイミングから遅れて、データが出力されることになる。このように出力ｗ１の信号は入力１０に対して一定の遅延（ｔ２−ｔ１）を有するため、隣接する２つの処理装置が、それぞれ処理を施すと同時に判断してしまうことはない。２段目の処理装置＃２は、前段の出力ｗ１から得られる信号に基づき、上述と同様にして、処理ＩＤ＝１を保有する２番目のフレームＢに対し、処理を施すと判断する。２段目の処理装置＃２の出力ｗ２からは、フレームＡ及びフレームＢに対応する部分がいずれも空フレームとなったデータが出力される。
【００２４】
このようにしてこの構成では、単一の処理装置では処理しきれないデータ流量、すなわちフレームＡとフレームＢとが連続して入力するようなデータ量に対し、複数台の処理装置すなわち処理装置＃１及び処理装置＃２によって、負荷分散によって処理を行うことができるようになる。各処理装置では、自装置の処理種別ＩＤと入力フレームの処理ＩＤとを照合して処理を実施するかどうかを判断しているため、異なる処理ＩＤを有するフレームを入力１０に混在させて与えても、それぞれ所定の処理装置による処理を施すことが可能となる。すなわち、フレームの処理を担当する処理装置を変更する場合にも、入力におけるフレームの混在の状況を変える場合にも、結線構造を変更する必要はない。これによって、パケット通信装置としてのロードバランサよりも格段に単純な構造で、負荷分散が実現できることになる。
【００２５】
図４は、本実施形態の計算システムにおいて用いられる処理装置の構成の一例を示している。ここに示す処理装置は、図１に示した計算システムでの処理装置＃１〜処理装置＃Ｎのうちのいずれにも使用できるものである。処理装置は、処理対象のデータに対して実際に処理を実行する処理コア２０と、上述した手順で負荷分散を実現するための負荷分散部２１と、から構成されている。負荷分散部２１には、入力したフレームの処理対象データ部分を処理コア２０での処理の実行のために格納するバッファ（記憶装置）２２と、この処理装置において処理コア２０が実行可能な処理の内容を示す処理種別ＩＤを格納する処理種別ＩＤ格納部２３と、入力したフレームのうち処理ＩＤ部分を検出して照合するために用いられる照合バッファ２４と、負荷分散部２１の全体の制御を行う照合・制御部２５と、いかなる処理装置の処理対象にもならないフレームであることを明示するフレーム（すなわち空フレーム）を生成する空フレーム生成部２６と、照合・制御部２５の制御によって照合バッファ２４の出力と空フレーム生成部２６との出力とを切り替えて次段の制御装置に送出するセレクタ２７と、が設けられている。バッファ２２は、この処理装置の入力と処理コア２０との間に設けられており、その内部に１フレーム分の空きがあれば、処理対象となるデータを１フレーム分格納することが可能であるように構成されている。ここで、処理種別ＩＤ格納部２３、照合バッファ２４、照合・制御部２５、空フレーム生成部２６及びセレクタ２７は、バッファ２２に空きがあり、かつ、処理装置に入力した処理単位（ここではフレーム）のデータに対して施すべき処理と処理装置で実行可能な処理とが一致する場合に、入力した処理単位のデータを次段の処理装置に出力することなくバッファ２２に格納し、それ以外の場合に、入力した処理単位のデータをそのまま次段の処理装置に出力する制御手段として機能する。特に、空フレーム生成部２６は、空データを生成する空データ生成手段として機能する。
【００２６】
処理コア２０は、バッファ２２にフレームの処理対象データが格納されているとき、バッファ２２の内容を入力として所定の処理を行い、処理結果を出力として外部に提供する。また処理コア２０における処理が終了した時点で、処理された１フレーム分のデータがバッファ２２から処理されるようになっている。処理コア２０が実行する処理と処理種別ＩＤ格納部２３に格納される処理種別ＩＤとは１対１に対応しており、したがって、処理コア２０ではソフトウェアによって処理が実行されるとして、処理実行のためのソフトウェアを変更し、その変更に合わせて処理種別ＩＤも変更することによって、同一の処理装置を別の処理内容の処理の実行に転用することができる。
【００２７】
照合バッファ２４は、フレーム構造を検出する機能を有しており、これによって入力したフレームから処理ＩＤを特定し、また、先入れ先出し（ＦＩＦＯ）方式でフレームを一時的に保存し、セレクタ２７に向けて出力するように構成されている。照合・制御部２５は、バッファ２２の状態を監視し、バッファ２２に１フレームを格納する空きがない場合には、照合バッファ２４からの出力を選択するようにセレクタ３７を切り替え、バッファ２２に空きがある場合には、照合バッファ２２で検出された処理ＩＤと処理種別ＩＤ格納部２３に格納されている処理種別ＩＤとが一致するかを照合し、一致しない場合には照合バッファ２４からの出力を選択するようにセレクタ３７を切り替え、一致する場合には、バッファ２２に当該フレームの処理対象データ部分を格納するとともに、空フレーム生成部２６の出力を選択するようにセレクタ２７を切り替える機能を有する。空きフレーム生成部２６は、いずれの処理装置においても使用されないこと処理種別ＩＤ、例えば、“０”といった特別の値を処理ＩＤとして有するフレームを空フレームとして生成する機能を有していてもよい。
【００２８】
次に、この処理装置の動作について、図５のフローチャートを用いて説明する。
【００２９】
処理装置の入力端子に入力するデータは、常時、照合バッファ２４に送られるようになっており、データの入力が開始すると、照合バッファ２４において、フレームの開始を検出するフレーム開始検出処理が実行される（ステップ３１）。照合・制御部２５は、バッファ２２の状態を監視しており、バッファ２２に１フレーム分の空きがあるかどうかを判断する（ステップ３２）。空きがない場合には、照合・制御部２５は、照合バッファ２４に送られたデータがそのまま次段の処理装置に引き渡されるように、ステップ３３において、セレクタ２７を照合バッファ２４の出力側に切り替え、ステップ３４のフレーム引渡し処理を実行する。フレーム引渡し処理とは、上述したセレクタ２７の切り替えを、現在のフレームの終了時まで維持することである。これによって、照合バッファ２４の出力がそのまま次段の処理装置に対して処理対象のデータとして供給されることになる。
【００３０】
ステップ３２においてバッファ２２が１フレーム分のデータを格納できると判断した場合には、次に、照合・制御部２５は、処理ＩＤ照合処理を実行する（ステップ３５）。処理ＩＤ照合処理は、照合バッファ２４で検出されて保持されている処理ＩＤと処理装置自身の処理種別ＩＤ（処理種別ＩＤ格納部２３に格納されている）とを照合し、以降の動作を選択する処理である。処理ＩＤと処理種別ＩＤとが一致するかどうかを判定し（ステップ３６）、一致しなかった場合には、ステップ３３に進んで照合・制御部２５はセレクタ２７を照合バッファ２４の出力側に切り替え、ステップ３４のフレーム引渡し処理を実行する。一方、処理ＩＤと処理種別ＩＤとが一致した場合には、照合・制御部２５は、ステップ３７において、セレクタ２７を空フレーム生成部２６の出力側に切り替え、現在のフレームの代わりに空フレームが次段の処理装置に供給されるようにするとともに、ステップ３８においてフレームバッファ処理を行う。フレームバッファ処理は、現在のフレームの処理対象データの部分をこの処理装置での処理の対象としてバッファ２２に格納し、セレクタ２７を状態を現在のフレームの終了時まで維持することである。ステップ３７，３８を実行することによって、入力したデータのうち、現在のフレームが除去されて空フレームに置き換えられたものが、次段の処理装置への入力として提供されることになる。
【００３１】
ステップ３４のフレーム引渡し処理またはステップ３８のフレームバッファ処理を開始したら、それらの処理の終了を待たずに、次の入力データに対応するために、再び、ステップ３１のフレーム開始検出処理からの処理が実行される。
【００３２】
なお、処理ＩＤはフレームの先頭部分にあるので、フレームがビットの流れとして入力するとして、フレームの処理ＩＤの部分だけが照合バッファ２４に格納された時点で処理ＩＤ照合処理を行い、さらにステップ３６〜３８が実行されるようにすれば、バッファ２２には、フレームの処理対象データの部分をその先頭から格納することが可能である。また、入力データをすべていったん照合バッファ２４に格納して処理ＩＤ照合処理を行うので、セレクタ２７によって選択されて次段の処理装置に送られることとなるフレームは、入力したフレームと比べ、処理ＩＤの部分の時間長の分だけ遅延することになる。これは、図３における（ｔ２−ｔ１）や（ｔ４−ｔ３）に相当する。
【００３３】
以上説明した処理を実行することにより、図３を用いて説明したように、単一の処理装置においてあるフレームに対して処理を実行している際にも次々とフレームが到来するような、すなわち、入力に与えられるデータ流量が単一の処理装置の処理能力を超過する場合であっても、デイジーチェーン形態で接続された複数の処理装置において、処理対象のフレームを漸次的に引き去りつつその引き去ったフレームに対して処理を行い、未処理のフレームは次の処理装置にそのまま送ることにより、負荷分散によって全てのフレームに対する処理を行うことができるようになる。なお、図３に示した例では、処理装置＃１においてフレームＡに対する処理が完了したのちは、処理ＩＤ＝１のフレームが再び到来したときに処理装置＃１によってそのフレームに対する処理を行うことが可能である。
【００３４】
本実施形態の計算システムでは、ある個数の処理装置をデイジーチェーン形態で接続しているときに、入力データにおいて処理すべきフレームがさらに増加したとしても、その時点で最終段となっている処理装置に対して処理内容に対応した処理種別ＩＤを有する処理装置をさらに接続することによって、そのようなフレームの増加に対応することができる。また、入力データにおいて処理すべきフレームが減った場合には、処理内容に相追うする処理種別ＩＤを有する処理装置の中でその時点で処理を行っていないものを最終段側から減らすだけで、むだにスタンバイ状態となっている処理装置の数を減らすこともできる。
【００３５】
上述したように、各処理装置に保持されている処理種別ＩＤはその処理装置で行なわれる処理に対応しているが、処理装置における処理内容を変更しそれに合わせて処理種別ＩＤも変更することによって、処理装置とその処理装置において分担の対象とする処理との組み合わせを変えることもできる。すなわち、動的負荷分散の機構を完成させることができる。
【００３６】
本実施形態の計算システムでは、負荷分散にバスを用いないため、バスを用いた負荷分散においてみられる電気的制約を回避することができる。設計のやり直しなどを行うことなく、上述したように処理装置の増減や各処理装置における処理内容の変更を容易に行うことができる。この計算システムにおいて負荷分散処理を行ったことにより遅延の増大量（オーバーヘッド）は、処理装置１つあたりたかだかフレームヘッダの時間程度であり、一般のパケット通信装置を用いた負荷分散を行う場合に比べ、格段に小さい。
【００３７】
結局、本実施形態の計算システムによれば、いったん設計を完了させたシステムあるいはあるいは運用中のシステムにおいても、負荷を分散させるための処理装置の個数を任意に増減（変更）できる動的負荷分散が、ネットワーク通信装置を使う場合よりも小さなオーバーヘッドで可能となる。
【符号の説明】
【００３８】
１０    入力
２０    処理コア
２１    負荷分散部
２２    バッファ
２３    処理種別ＩＤ格納部
２４    照合バッファ
２５    照合・制御部
２６    空フレーム生成部
２７    セレクタ
３１〜３８    ステップ
【図１】
2014016769.tif 000003
【図２】
2014016769.tif 000004
【図３】
2014016769.tif 000005
【図４】
2014016769.tif 000006
【図５】
2014016769.tif 000007