(57)【特許請求の範囲】
【請求項１】
階層化された複数のプロセッサを有し、複数のデータを１つずつ受け付け、該受け付けたデータに所定の処理を施した処理結果を出力するデータ処理装置であって、
前記所定の処理は、実行順番が決められた複数の工程からなり、
前記複数のプロセッサのうち最上層の最上層プロセッサは、前記複数の工程の最初の工程から、当該最上層プロセッサに設定された第１の工程までを前記実行順番に基づいて実行し、１つ下層のプロセッサが実行結果を受け付け可能な可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが実行結果を受け付け不可能な不可能状態にある場合、さらに、当該最上層プロセッサに設定された第２の工程を限度として、当該１つ下層のプロセッサが前記可能状態に遷移するまで、前記第１の工程を超えて前記実行順番に基づいて前記複数の工程のうちの１以上の工程を実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力し、前記実行した工程のうち最後の工程の実行順番と、前記第１の工程の実行順番との差分に応じて前記第１の工程を前記複数の工程のうちの別の工程に変更し、
前記複数のプロセッサのうち最下層の最下層プロセッサは、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移し、実行済みの工程の次の工程から前記複数の工程の最後の工程までを前記実行順番に基づいて実行し、該実行結果を前記処理結果として出力した後、前記可能状態に遷移し、
前記複数のプロセッサのうち、前記最上層及び最下層プロセッサ以外の中間層プロセッサは、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移し、実行済みの工程の次の工程から、当該中間層プロセッサに設定された第３の工程までを前記実行順番に基づいて実行し、１つ下層のプロセッサが前記可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが前記不可能状態にある場合、さらに、当該中間層プロセッサに設定された第４の工程を限度として、当該１つ下層のプロセッサが前記可能状態に遷移するまで、前記第３の工程を超えて前記実行順番に基づいて前記複数の工程のうちの１以上の工程を実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力し、前記実行した工程のうち最後の工程の実行順番と、前記第３の工程の実行順番との差分に応じて前記第３の工程を前記複数の工程のうちの別の工程に変更した後、前記可能状態に遷移するデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
前記最上層プロセッサは、当該最上層プロセッサにおける前記差分が予め決められた数以上である場合、前記第１の工程を、該第１の工程よりも所定数だけ後の工程に変更し、前記差分が０である場合、前記第１の工程を、該第１の工程よりも前記所定数だけ前の工程に変更し、
前記中間層プロセッサは、当該中間層プロセッサにおける前記差分が前記予め決められた数以上である場合、前記第３の工程を、該第３の工程よりも前記所定数だけ後の工程に変更し、前記差分が０である場合、前記第３の工程を、該第３の工程よりも前記所定数だけ前の工程に変更するデータ処理装置。
【請求項３】
階層化された複数のプロセッサを有し、複数のデータを１つずつ受け付け、実行順番が予め決められた複数の工程からなる所定の処理を、前記受け付けたデータに施した処理結果を出力するデータ処理装置におけるデータ処理方法であって、
前記複数のプロセッサのうち最上層の最上層プロセッサが、前記複数の工程の最初の工程から、当該最上層プロセッサに設定された第１の工程までを前記実行順番に基づいて実行し、１つ下層のプロセッサが実行結果を受け付け可能な可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが実行結果を受け付け不可能な不可能状態にある場合、さらに、当該最上層プロセッサに設定された第２の工程を限度として、当該１つ下層のプロセッサが前記可能状態に遷移するまで、前記第１の工程を超えて前記実行順番に基づいて前記複数の工程のうちの１以上の工程を実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力する処理と、
前記最上層プロセッサが、前記実行した工程のうち最後の工程の実行順番と、前記第１の工程の実行順番との差分に応じて前記第１の工程を前記複数の工程のうちの別の工程に変更する第１の変更処理と、
前記複数のプロセッサのうち、前記最上層プロセッサ及び最下層の最下層プロセッサ以外の中間層プロセッサが、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移する処理と、
前記中間層プロセッサが、実行済みの工程の次の工程から、当該中間層プロセッサに設定された第３の工程までを前記実行順番に基づいて実行し、１つ下層のプロセッサが前記可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが前記不可能状態にある場合、さらに、当該中間層プロセッサに設定された第４の工程を限度として、当該１つ下層のプロセッサが前記可能状態に遷移するまで、前記第３の工程を超えて前記実行順番に基づいて前記複数の工程のうちの１以上の工程を実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力する処理と、
前記中間層プロセッサが、前記実行した工程のうち最後の工程の実行順番と、前記第３の工程の実行順番との差分に応じて前記第３の工程を前記複数の工程のうちの別の工程に変更する第２の変更処理と、
前記中間層プロセッサが、前記可能状態に遷移する処理と、
前記最下層プロセッサが、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移する処理と、
前記最下層プロセッサが、実行済みの工程の次の工程から前記複数の工程の最後の工程までを前記実行順番に基づいて実行し、該実行結果を前記処理結果として出力する処理と、
前記最下層プロセッサが、前記可能状態に遷移する処理と、を有するデータ処理方法。
【請求項４】
請求項３に記載のデータ処理方法において、
前記第１の変更処理は、前記最上層プロセッサが、当該最上層プロセッサにおける前記差分が予め決められた数以上である場合、前記第１の工程を、該第１の工程よりも所定数だけ後の工程に変更し、前記差分が０である場合、前記第１の工程を、該第１の工程よりも前記所定数だけ前の工程に変更する処理であり、
前記第２の変更処理は、前記中間層プロセッサが、当該中間層プロセッサにおける前記差分が前記予め決められた数以上である場合、前記第３の工程を、該第３の工程よりも前記所定数だけ後の工程に変更し、前記差分が０である場合、前記第３の工程を、該第３の工程よりも前記所定数だけ前の工程に変更する処理であるデータ処理方法。
【請求項５】
階層化された複数のプロセッサを有し、複数のデータを１つずつ受け付け、実行順番が予め決められた複数の工程からなる所定の処理を、前記受け付けたデータに施した処理結果を出力するコンピュータを、請求項１または請求項２に記載のデータ処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータを処理するデータ処理装置、データ処理方法及びプログラムに関する。
【背景技術】
【０００２】
複数のデータを連続的に受け付け、受け付けた複数のデータのそれぞれに所定の処理を施す際、例えばデータが送られてくる頻度が変動すると、データを処理するための負荷も変動する。この場合、データを処理する機能の数を増減させることにより、データ処理の性能を維持する必要がある。データを処理する機能の数を増減させる場合には、負荷分散装置が利用されることが多い。
【０００３】
図１０は、負荷分散装置を利用したデータ処理システムの構成の一例を示す図である。
【０００４】
図１０に示すデータ処理システムは、複数のデータ処理装置と負荷分散装置とを備えている。複数のデータのそれぞれは、負荷分散装置にて受け付けられる。
【０００５】
そして、負荷分散装置は、受け付けた複数のデータのそれぞれを、複数のデータ処理装置の負荷に応じて分配する。例えば、負荷分散装置が複数のデータ処理装置の負荷を検出し、データを受け付けた際には、複数のデータ処理装置のうち軽負荷のデータ処理装置に受け付けたデータの処理を行わせる。これにより、複数のデータ処理装置の負荷を分散することができ、データが送られてくる頻度が変動する場合でも、データ処理の性能を維持することが可能となる。
【０００６】
なお、負荷分散装置に関する技術が例えば、非特許文献１に開示されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】http://www.atmarkit.co.jp/fnetwork/rensai/lb01/lb01.html
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図１０に示したようなデータ処理システムの場合、複数のデータ処理装置とは別に、複数のデータのそれぞれを複数のデータ処理装置に分配するための負荷分散装置を別途用意する必要があり、システム規模が増大してしまうという問題点がある。
【０００９】
また、複数のデータのそれぞれを複数のデータ処理装置のいずれかに分配しているため、データの処理終了の時刻が、そのデータよりも前に負荷分散装置にて受け付けられたデータの処理終了の時刻よりも早くなる場合もある。この場合、複数の処理結果の間で矛盾が生じてしまうことを完全には回避できないという問題点がある。
【００１０】
本発明は、システム規模の増大と複数の処理結果の間に矛盾が生じることとを回避しつつ、データ処理の性能を維持することを可能とするデータ処理装置、データ処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために本発明のデータ処理装置は、階層化された複数のプロセッサを有し、複数のデータを１つずつ受け付け、該受け付けたデータに所定の処理を施した処理結果を出力するデータ処理装置であって、
前記所定の処理は、実行順番が決められた複数の工程からなり、
前記複数のプロセッサのうち最上層の最上層プロセッサは、前記複数の工程の最初の工程から、当該最上層プロセッサに設定された第１の工程までを実行し、１つ下層のプロセッサが実行結果を受け付け可能な可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが実行結果を受け付け不可能な不可能状態にある場合、さらに、多くとも当該最上層プロセッサに設定された第２の工程までを実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力し、前記実行した工程のうち最後の工程の実行順番と、前記第１の工程の実行順番との差分に応じて前記第１の工程を別の工程に変更し、
前記複数のプロセッサのうち最下層の最下層プロセッサは、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移し、実行済みの工程の次の工程から前記複数の工程の最後の工程までを実行し、該実行結果を前記処理結果として出力した後、前記可能状態に遷移し、
前記複数のプロセッサのうち、前記最上層及び最下層プロセッサ以外の中間層プロセッサは、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移し、実行済みの工程の次の工程から、当該中間層プロセッサに設定された第３の工程までを実行し、１つ下層のプロセッサが前記可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが前記不可能状態にある場合、さらに、多くとも当該中間層プロセッサに設定された第４の工程までを実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力し、前記実行した工程のうち最後の工程の実行順番と、前記第３の工程の実行順番との差分に応じて前記第３の工程を別の工程に変更した後、前記可能状態に遷移する。
【００１２】
また、上記目的を達成するために本発明のデータ処理方法は、階層化された複数のプロセッサを有し、複数のデータを１つずつ受け付け、実行順番が予め決められた複数の工程からなる所定の処理を、前記受け付けたデータに施した処理結果を出力するデータ処理装置におけるデータ処理方法であって、
前記複数のプロセッサのうち最上層の最上層プロセッサが、前記複数の工程の最初の工程から、当該最上層プロセッサに設定された第１の工程までを実行し、１つ下層のプロセッサが実行結果を受け付け可能な可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが実行結果を受け付け不可能な不可能状態にある場合、さらに、多くとも当該最上層プロセッサに設定された第２の工程までを実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力する処理と、
前記最上層プロセッサが、前記実行した工程のうち最後の工程の実行順番と、前記第１の工程の実行順番との差分に応じて前記第１の工程を別の工程に変更する第１の変更処理と、
前記複数のプロセッサのうち、前記最上層プロセッサ及び最下層の最下層プロセッサ以外の中間層プロセッサが、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移する処理と、
前記中間層プロセッサが、実行済みの工程の次の工程から、当該中間層プロセッサに設定された第３の工程までを実行し、１つ下層のプロセッサが前記可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが前記不可能状態にある場合、さらに、多くとも当該中間層プロセッサに設定された第４の工程までを実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力する処理と、
前記中間層プロセッサが、前記実行した工程のうち最後の工程の実行順番と、前記第３の工程の実行順番との差分に応じて前記第３の工程を別の工程に変更する第２の変更処理と、
前記中間層プロセッサが、前記可能状態に遷移する処理と、
前記最下層プロセッサが、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移する処理と、
前記最下層プロセッサが、実行済みの工程の次の工程から前記複数の工程の最後の工程までを実行し、該実行結果を前記処理結果として出力する処理と、
前記最下層プロセッサが、前記可能状態に遷移する処理と、を有する。
【００１３】
また、上記目的を達成するために本発明のプログラムは、階層化された複数のプロセッサを有し、複数のデータを１つずつ受け付け、実行順番が予め決められた複数の工程からなる所定の処理を、前記受け付けたデータに施した処理結果を出力するコンピュータに、
前記複数のプロセッサのうち最上層の最上層プロセッサが、前記複数の工程の最初の工程から、当該最上層プロセッサに設定された第１の工程までを実行し、１つ下層のプロセッサが実行結果を受け付け可能な可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが実行結果を受け付け不可能な不可能状態にある場合、さらに、多くとも当該最上層プロセッサに設定された第２の工程までを実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力する機能と、
前記最上層プロセッサが、前記実行した工程のうち最後の工程の実行順番と、前記第１の工程の実行順番との差分に応じて前記第１の工程を別の工程に変更する第１の変更機能と、
前記複数のプロセッサのうち、前記最上層プロセッサ及び最下層の最下層プロセッサ以外の中間層プロセッサが、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移する機能と、
前記中間層プロセッサが、実行済みの工程の次の工程から、当該中間層プロセッサに設定された第３の工程までを実行し、１つ下層のプロセッサが前記可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力し、当該１つ下層のプロセッサが前記不可能状態にある場合、さらに、多くとも当該中間層プロセッサに設定された第４の工程までを実行し、当該１つ下層のプロセッサが前記可能状態に遷移すると、当該実行結果を当該１つ下層のプロセッサに出力する機能と、
前記中間層プロセッサが、前記実行した工程のうち最後の工程の実行順番と、前記第３の工程の実行順番との差分に応じて前記第３の工程を別の工程に変更する第２の変更機能と、
前記中間層プロセッサが、前記可能状態に遷移する機能と、
前記最下層プロセッサが、１つ上層のプロセッサから出力された実行結果を受け付けると、前記不可能状態に遷移する機能と、
前記最下層プロセッサが、実行済みの工程の次の工程から前記複数の工程の最後の工程までを実行し、該実行結果を前記処理結果として出力する機能と、
前記最下層プロセッサが、前記可能状態に遷移する機能と、を実現させる。
【発明の効果】
【００１４】
本発明は以上説明したように構成されているので、複数のデータのそれぞれは受け付けられた順番に従って処理される。そのため、データの処理終了の時刻が、そのデータよりも前に受け付けられたデータの処理終了の時刻よりも早くなることがない。また、複数のプロセッサのそれぞれが実行する工程が限定されるため、限定された工程の実行に特化したプロセッサを利用することにより、負荷分散装置を利用しなくても、複数のデータのそれぞれを高速に処理することができる。
【００１５】
従って、システム規模の増大と複数の処理結果の間に矛盾が生じることとを回避しつつ、データ処理の性能を維持することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明のデータ処理装置の実施の一形態の構成を示すブロック図である。
【図２】図１に示したプロセッサの構成の一例を示すブロック図である。
【図３】図２に示した記憶部が初期化されたときの状態の一例を示す図である。
【図４】図１〜図３に示したデータ処理装置がデータに所定の処理を施す場合の動作を説明するためのフローチャートである。
【図５】図１〜図３に示したデータ処理装置がデータに所定の処理を施す場合の動作を説明するためのフローチャートである。
【図６】図４及び図５に示したフローチャートの動作を擬似コードで表した図である。
【図７】図４〜図６に示した動作フローに従い、複数の工程のそれぞれを複数のプロセッサが分担して実行する様子の一例を説明するための図である。
【図８】図４〜図６に示した動作フローに従い、複数の工程のそれぞれを複数のプロセッサが分担して実行する様子の他の例を説明するための図である。
【図９】図４〜図６に示した動作フローに従い、複数の工程のそれぞれを複数のプロセッサが分担して実行する様子の他の例を説明するための図である。
【図１０】負荷分散装置を利用したデータ処理システムの構成の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１８】
図１は、本発明のデータ処理装置の実施の一形態の構成を示すブロック図である。
【００１９】
本実施形態のデータ処理装置１０は図１に示すように、階層化されたプロセッサ（Ｐｒｏｃｅｓｓｏｒ）１１−１〜１１−ｎを備えている。
【００２０】
データ処理装置１０は、複数のデータを１つずつ受け付け、受け付けたデータに所定の処理を施して処理結果を出力する。なお、この所定の処理は、実行順番が決められた複数の工程からなる。複数の工程のそれぞれは、工程番号によって識別される。工程番号は１から始まり、実行順番に従って１ずつ増加していく番号である。
【００２１】
プロセッサ１１−１〜１１−ｎのそれぞれは、複数の工程のうち少なくとも１つの工程を実行する。
【００２２】
図２は、図１に示したプロセッサ１１−２の構成の一例を示すブロック図である。プロセッサ１１−１，１１−３〜１１−ｎも同様の構成である。なお、プロセッサ１１−２は、階層化された複数のプロセッサのうち最上層及び最下層のプロセッサ以外のプロセッサである中間層プロセッサの１つである。以降、最上層のプロセッサのことを最上層プロセッサといい、最下層のプロセッサのことを最下層プロセッサという。
【００２３】
図１に示したプロセッサ１１−２は図２に示すように、入力部１１１と、実行部１１２と、記憶部１１３と、出力部１１４と、制御部１１５とを備えている。
【００２４】
入力部１１１は、１つ上層のプロセッサから出力され、工程を実行した結果である実行結果を受け付ける。なお、最上層プロセッサの場合、入力部１１１は、複数のデータを１つずつ受け付ける。
【００２５】
実行部１１２は、実行済みの工程の次の工程以降を少なくとも１つ実行する。
【００２６】
記憶部１１３は、実行部１１２が工程を実行するための情報等を記憶する。具体的には記憶部１１３は以下に示すpd、pl、busy、ixを記憶する。
【００２７】
pd：複数の工程のうち、必ず実行済みにする最後の工程である第３の工程（最上層プロセッサの場合は第１の工程）の工程番号を示す値
pl：複数の工程のうち、実行する可能性のある最後の工程である第４の工程（最上層プロセッサの場合は第２の工程）の工程番号を示す値
jx：実行済みとなった工程のうちの最後の工程の工程番号を示す値
busy：入力部１１１にて実行結果を受け付け可能な可能状態にある場合に０を示し、実行結果を受け付け不可能な不可能状態にある場合に１を示す論理変数
なお、pd，pl，jxは、工程番号を示す値であるため、１以上の整数となる。また、後述するように、pd及びplは、複数のプロセッサ毎に異なる値が設定される。また、最下層プロセッサにおいては、pd，pl，jxは参照されない。
【００２８】
出力部１１４は、実行部１１２が工程を実行した実行結果を、１つ下層のプロセッサへ出力する。なお、最下層プロセッサの場合、出力部１１４は、実行部１１２が実行した実行結果を所定の処理の処理結果として他の装置等へ出力する。
【００２９】
制御部１１５は、pdの値が示す工程番号の工程までが実行部１１２にて実行されると、１つ下層のプロセッサが可能状態にあるかどうかを問い合わせる。なお、問合せを受けた１つ下層のプロセッサの制御部１１５は、記憶部１１３に記憶されたbusyを確認し、確認した値に応じて応答を出力する。制御部１１５は、１つ下層のプロセッサからの受け付けが可能である旨の応答を受け付けるまで、pdの値が示す工程番号以降の工程を実行部１１２に実行させる。但し、この場合、多くともplの値が示す工程番号の工程までしか実行されない。そして、制御部１１５は、実行部１１２が実行した工程のうち最後の工程の実行順番と第１の工程の実行順番との差分に応じてpdの値を増減させる。以降、この差分のことを超過工程数という。なお、ここでは、複数の工程の実行順番に従って１つずつ増加していく番号を工程番号としている。従って、超過工程数は、jxとpdとの差分となる。なお、最下層プロセッサの場合、上述した制御部１１５における動作は実行されない。
【００３０】
以下に、上記のように構成されたデータ処理装置１０がデータに所定の処理を施す場合の動作について説明する。なお、ここでは、プロセッサ１１−１〜１１−ｎの数をＮ個とし、複数の工程の数をＭ個（Ｎ＜Ｍ）として説明する。また、以降の説明においては、最上層プロセッサから階層順に数えてｉ番目のプロセッサのことをプロセッサｉと表記し、プロセッサｉの記憶部１１３に記憶されたpd、pl、busyのそれぞれpd(i)、pl(i)、busy(i)と表記する。従って、最上層プロセッサはプロセッサ１と表記され、最上層プロセッサの記憶部１１３に記憶されたpd、pl、busyはそれぞれ、pd(1)、pl(1)、busy(1)と表記される。
【００３１】
データの受け付けを開始する前に、まず、記憶部１１３を初期化する。
【００３２】
図３は、図２に示した記憶部１１３が初期化されたときの状態の一例を示す図である。
【００３３】
記憶部１１３が初期化された状態では図３に示すように、pd(i)の値は、最上層プロセッサから階層順に、１，２，３・・・となっている。なお、pd(i)の値は、初期化されたときの値よりも小さな値になることはない。
【００３４】
図４及び図５は、図１〜図３に示したデータ処理装置１０がデータに所定の処理を施す場合の動作を説明するためのフローチャートである。なお、ここでは、超過工程数が２以上である場合には、pd(i)の値を１つ増加させ、超過工程数が０である場合には、pd(i)の値を１つ減少させる場合を一例として説明する。また、ここで説明するのは、中間層プロセッサの動作であるが、最上層プロセッサ及び最下層プロセッサの動作が中間層プロセッサの動作と異なる部分については、その都度説明する。
【００３５】
入力部１１１は、１つ上層のプロセッサから出力された実行結果を受け付ける（ステップＳ１）。なお、入力部１１１は、記憶部１１３に記憶されたbusy(i)が０である場合、実行結果を受け付ける。また、この実行結果には１つ上層のプロセッサに記憶されたjxが付与されている。最上層プロセッサの場合、入力部１１１は、データを１つ受け付けるが、データにはjxは付与されていない。
【００３６】
次に、制御部１１５は、記憶部１１３に記憶されたbusyを１に設定する（ステップＳ２）。これにより、不可能状態に遷移する。
【００３７】
実行部１１２は、ステップＳ１にて受け付けた実行結果に付与されたjxの値が示す工程番号の次の工程番号の工程から、記憶部１１３に記憶されたpd(i)の値が示す工程番号の工程までを実行する（ステップＳ３）。なお、最上層プロセッサの場合、実行部１１２は、工程番号１の工程から実行する。また、最下層プロセッサの場合、実行部１１２は、最後の工程までを実行する。そして、最下層プロセッサは、後述するステップＳ４以降の動作を実行することなく、最後の工程を実行した実行結果を所定の処理の処理結果として出力部１１４から他の装置等へ出力する。そして、最下層プロセッサの制御部１１５は、記憶部１１３に記憶されたbusyを０に設定する。これにより、可能状態に遷移し、１つ上層のプロセッサから次の実行結果を受け付けることが可能となる。
【００３８】
次に、制御部１１５は、記憶部１１３に記憶されたpd(i)の値をjxの値として記憶部１１３に記憶させる（ステップＳ４）。
【００３９】
次に、制御部１１５は、１つ下層のプロセッサが可能状態にあるかどうかを判定する（ステップＳ５）。具体的には上述したように、制御部１１５は、可能状態にあるかどうかを１つ下層のプロセッサに問い合わせる。そして、制御部１１５は、その問合せに対する応答の内容により、１つ下層のプロセッサが可能状態にあるかどうかを判定する。
【００４０】
ステップＳ５における判定の結果、１つ下層のプロセッサが不可能状態にあると判定された場合、制御部１１５は、jxの値がpl(i)の値よりも小さいかどうかを判定する（ステップＳ６）。
【００４１】
ステップＳ６における判定の結果、jxの値がpl(i)の値よりも小さな場合、制御部１１５は、jxの値をインクリメントする（ステップＳ７）。
【００４２】
そして、制御部１１５は、jxの値が示す工程番号の工程を実行部１１２に実行させ（ステップＳ８）、ステップＳ５の動作へ遷移する。
【００４３】
一方、ステップＳ６における判定の結果、jxの値がpl(i)の値よりも小さくない場合には、ステップＳ５の動作へ遷移する。
【００４４】
ここで、ステップＳ５における判定の結果、１つ下層のプロセッサが可能状態にある場合には、制御部１１５は、実行部１１２にて実行された工程の実行結果に、記憶部１１３に記憶されたjxを付与する。
【００４５】
そして、出力部１１４は、jxが付与された実行結果を１つ下層のプロセッサへ出力する（ステップＳ９）。
【００４６】
次に、制御部１１５は、超過工程数が２以上かどうかを判定する（ステップＳ１０）。具体的には、jxの値がpd(i)の値よりも２以上大きいかどうかが判定される。
【００４７】
ステップＳ１０における判定の結果、超過工程数が２以上である場合、制御部１１５は、記憶部１１３に記憶されたpd(i)の値を１つ増加させる（ステップＳ１１）。なお、pd(i)は、pl(i)よりも大きくならないようにする。
【００４８】
そして、制御部１１５は、記憶部１１３に記憶されたbusyを０に設定する（ステップＳ１２）。これにより、可能状態に遷移し、１つ上層のプロセッサから次の実行結果を受け付けることが可能となる。
【００４９】
一方、ステップＳ１０における判定の結果、超過工程数が２よりも小さな場合には、制御部１１５は、超過工程数が０であるかどうかを判定する（ステップＳ１３）。具体的には、jxの値とpd(i)の値とが同じかどうかが判定される。
【００５０】
ステップＳ１３における判定の結果、超過工程数が０である場合、制御部１１５は、記憶部１１３に記憶されたpd(i)の値を１つ減少させる（ステップＳ１４）。そして、ステップＳ１２の動作へ遷移する。
【００５１】
一方、ステップＳ１３における判定の結果、超過工程数が０でない場合には、制御部１１５は、pd(i)の値を増減させずに、ステップＳ１２の動作へ遷移する。
【００５２】
図４及び図５に示したフローチャートの動作を擬似コードで表したものを図６に示す。
【００５３】
次に、図４〜図６に示した動作フローに従い、複数の工程のそれぞれを複数のプロセッサが分担して実行する様子を具体的な例を用いて説明する。
【００５４】
図７は、図４〜図６に示した動作フローに従い、複数の工程のそれぞれを複数のプロセッサが分担して実行する様子の一例を説明するための図である。ここでは、７つの工程の実行を３つのプロセッサで分担する場合で、かつ、複数の工程のそれぞれを実行するのに必要なサイクル数が等しい場合について説明する。なお、以降の説明においては、最上層プロセッサ（プロセッサ１）にてｊ番目に受け付けられたデータのことをデータｊと表記する。また、図７の図中の網掛け部分は、データ１〜７のそれぞれにおいて３つのプロセッサのそれぞれが実行した工程の工程番号を示している。
【００５５】
図７を参照すると、最上層プロセッサにて最初に受け付けられたデータ（データ１）は、最上層プロセッサ（プロセッサ１）にて工程番号１の工程がサイクル１で実行される。また、データ１は、プロセッサ２にて工程番号２の工程がサイクル２で実行され、プロセッサ３にて工程番号３〜７の工程が実行される。
【００５６】
次のデータ（データ２）は、最上層プロセッサにて工程番号１の工程がサイクル２で実行され、プロセッサ２にて工程番号２の工程がサイクル３で実行される。ここで、プロセッサ３は、サイクル７まで不可能状態にあるため、プロセッサ２にて工程番号３〜６の工程もさらに実行される。そして、プロセッサ３にて工程番号７の工程がサイクル８で実行される。
【００５７】
ここで、データ２が工程を実行される前には、pd(2)の値は２であったが、プロセッサ２にてデータ２が工程番号６の工程まで実行された。従って、超過工程数は４となり、pd(2)の値は１つ増加して３となる。
【００５８】
次のデータ（データ３）は、プロセッサ１にて工程番号５の工程まで実行される。従って、超過工程数は４となり、pd(1)の値は１つ増加して２になる。また、プロセッサ１にて工程番号５の工程まで実行された結果、プロセッサ２にて工程番号６の工程が実行される。従って、超過工程数は３となり、pd(2)の値も１つ増加して４となる。
【００５９】
次のデータ（データ４）は、プロセッサ１にて工程番号２の工程まで実行され、プロセッサ２にて工程番号４までの工程が実行される。この場合、プロセッサ１及びプロセッサ２は、pd(1)及びpd(2)の値が示す工程番号の工程まで実行したこととなる。従って、超過工程数が０となり、pd(1)及びpd(2)の値は１つ減算されて１及び３となる。
【００６０】
次のデータ（データ５）は、プロセッサ１にて工程番号２の工程まで実行される。従って、超過工程数は１となり、pd(1)の値に増減はない。また、プロセッサ２にて工程番号５までの工程が実行される。従って、超過工程数は２となり、pd(2)の値が１つ増加して４となる。
【００６１】
次のデータ（データ６）は、プロセッサ１にて工程番号３の工程まで実行される。従って、超過工程数は２となり、pd(1)の値が１つ増加して２となる。また、プロセッサ２にて工程番号５までの工程が実行される。従って、超過工程数は１となり、pd(2)の値に増減はない。
【００６２】
上述した動作において、データ３までは、プロセッサ１〜３にて工程番号１〜５の工程が実行された。一方、データ４以降は、プロセッサ１にて工程番号１〜３の工程が実行され、プロセッサ２にて工程番号３〜５の工程が実行され、プロセッサ３にて工程番号５〜７の工程が実行された。
【００６３】
また、データ７以降のデータについて、プロセッサ１〜３は、データ４〜６に実行した工程と同じ工程の実行を繰り返すこととなる。例えば、図７に示すように、データ７は、データ４と同様に、プロセッサ１にて工程番号２の工程まで実行され、プロセッサ２にて工程番号４までの工程が実行される。また、図７には示していないが、データ８は、データ５と同様に、プロセッサ１にて工程番号２の工程まで実行され、プロセッサ２にて工程番号５までの工程が実行される。
【００６４】
このように、データを受け付けていくに従い、プロセッサ１〜３のそれぞれにて実行される工程が限定される。これは、プロセッサの数を４つ以上にした場合でも同様である。つまり、複数の工程を何サイクルで実行できるかが予めわからない場合でも、複数の工程を複数のプロセッサで分担して実行することができる。
【００６５】
従って、命令キャッシュを使用してメモリの容量や消費電力を少なくしたり、専用のハードウェアに工程の実行を任せるように切り替えたりすることが可能となる。これにより、限定された工程の実行に特化したプロセッサを利用することができ、処理の高速化を実現することができる。
【００６６】
図８及び図９は、図４〜図６に示した動作フローに従い、複数の工程のそれぞれを複数のプロセッサが分担して実行する様子の他の例を説明するための図である。ここでは、図７を参照しながら説明した例と同様に、７つの工程の実行を３つのプロセッサで分担する場合について説明する。但し、ここでは、図７を参照しながら説明した例とは異なり、７つの工程のそれぞれを実行するのに必要なサイクル数が等しくない場合について説明する。７つの工程のそれぞれを実行するのに必要なサイクル数は、以下に示すとおりである。
【００６７】
工程番号１、２の工程：１サイクル
工程番号３、４の工程：２サイクル
工程番号５、６の工程：４サイクル
工程番号７の工程：８サイクル
なお、図８及び図９の図中の網掛け部分は、データ１〜１１のそれぞれにおいて３つのプロセッサが実行した工程の工程番号を表している。また、図８はサイクル１〜５１までを示しており、図９はサイクル５２〜１０３を示している。
【００６８】
図８を参照すると、サイクル１５においてプロセッサ２にて工程番号６の工程がデータ２に実行された後、pl(2)に達している。そのため、プロセッサ２は、工程番号７の工程を実行せず、ストールして、プロセッサ３が可能状態になるまで待機することとなる。なお、図８及び図９において、ストールはｓで表記されている。
【００６９】
図９を参照すると、最終的には、工程番号１から工程番号４または工程番号５の工程までがプロセッサ１にて実行される。また、工程番号５または工程番号６までの工程がプロセッサ２にて実行され、プロセッサ３にて工程番号７の工程のみが実行されることとなる。
【００７０】
このように、複数の工程のそれぞれを実行するのに必要なサイクル数が異なる場合でも、データを受け付けていくに従い、複数のプロセッサのそれぞれにて実行される工程が限定される。
【００７１】
ここで、本実施形態においては、超過工程数が２以上である場合、pd(i)の値を１つ増加させ、超過工程数が０である場合には、pd(i)の値を１つ減少させるようにした。このようにpd(i)を増減させるために、超過工程数の閾値としてＳ１，Ｓ２を「０＜Ｓ１＜Ｓ２」となるように設定する。そして、pdの増加量および減少量Δpdを超過工程数xの関数pd(x)として、「Δpd(S2)＝＋Ｄ」、「Δpd(S1)＝０」、「Δpd(0)＝−Ｄ」とし、xの変域、すなわち、全工程数までの非負整数に対して、△pd(x)が単調増加となるように決めればよい。なお、Ｄの値は、全工程数を越えることはない。本実施形態では、Ｓ２＝２、Ｓ１＝１、Ｄ＝１とした場合について説明した。
【００７２】
このように本実施形態においては、最上層プロセッサは、複数の工程の最初の工程から、当該最上層プロセッサに設定された第１の工程までを実行し、１つ下層のプロセッサが可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力する。一方、最上層プロセッサは、当該１つ下層のプロセッサが不可能状態にある場合、さらに、多くとも当該最上層プロセッサに設定された第２の工程までを実行し、当該１つ下層のプロセッサが可能状態に遷移すると、実行結果を当該１つ下層のプロセッサに出力する。そして、最上層プロセッサは、実行した工程のうち最後の工程の実行順番と、第１の工程の実行順番との差分に応じて第１の工程を別の工程に変更する。
【００７３】
また、最下層プロセッサは、１つ上層のプロセッサから出力された実行結果を受け付けると、不可能状態に遷移し、実行済みの工程の次の工程から、複数の工程の最後の工程までを実行し、実行結果を所定の処理の処理結果として出力する。
【００７４】
また、中間層プロセッサは、１つ上層のプロセッサから出力された実行結果を受け付けると、不可能状態に遷移し、実行済みの工程の次の工程から、当該中間層プロセッサに設定された第３の工程までを実行し、１つ下層のプロセッサが可能状態にある場合、当該実行結果を当該１つ下層のプロセッサに出力する。一方、中間層プロセッサは、当該１つ下層のプロセッサが不可能状態にある場合、さらに、多くとも当該中間層プロセッサに設定された第４の工程までを実行し、当該１つ下層のプロセッサが可能状態に遷移すると、実行結果を当該１つ下層のプロセッサに出力する。そして、中間層プロセッサは、実行した工程のうち最後の工程の実行順番と、第３の工程の実行順番との差分に応じて第３の工程を別の工程に変更した後、可能状態に遷移する。
【００７５】
これにより、複数のデータのそれぞれは受け付けられた順番に従って処理される。そのため、データの処理終了の時刻が、そのデータよりも前に受け付けられたデータの処理終了の時刻よりも早くなることがない。また、複数のプロセッサのそれぞれが実行する工程が限定されるため、限定された工程の実行に特化したプロセッサを利用することにより、負荷分散装置を利用しなくても、複数のデータのそれぞれを高速に処理することができる。
【００７６】
従って、システム規模の増大と複数の処理結果の間に矛盾が生じることとを回避しつつ、データ処理の性能を維持することが可能となる。
【００７７】
なお、本発明においては、データ処理装置内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムをデータ処理装置にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをデータ処理装置に読み込ませ、実行するものであっても良い。データ処理装置にて読取可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、データ処理装置に内蔵されたＨＤＤなどを指す。また、この記録媒体に記録されたプログラムをネットワークを介して提供することも可能である。
【符号の説明】
【００７８】
１０    データ処理装置
１１−１〜１１−ｎ    プロセッサ
１１１    入力部
１１２    実行部
１１３    記憶部
１１４    出力部
１１５    制御部
【図１】
0005457281.tif 000002
【図２】
0005457281.tif 000003
【図３】
0005457281.tif 000004
【図４】
0005457281.tif 000005
【図５】
0005457281.tif 000006
【図６】
0005457281.tif 000007
【図１０】
0005457281.tif 000008
【図７】
0005457281.tif 000009
【図８】
0005457281.tif 000010
【図９】
0005457281.tif 000011