(57)【要約】      （修正有）【課題】並列処理時の待ち時間を縮小する制御装置及び制御方法を提供する。【解決手段】ＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｎｇｉｎｅ）１００a〜１００hは、他のＰＥ１００a〜１００hと共有する共有メモリ５０にアクセスする場合に、カウンタ値とＩＤ番号とを基にして、第１開始位相、第２開始位相、第３開始位相を算出し、算出した各開始位相から順に画像データを読み出す。具体的には、カウンタ値の変化と同期して、第１開始位相から画像データの終了ラインまで読み出した後、第２開始位相に移動する。カウンタ値の変化と同期して、第２開始位相から第１開始位相の一つ上のラインまでの画像データを読み出す。そして、カウンタ値が第３開始位相と同じ値となるまで待機した後、残りの画像データを読み出す。【選択図】図１Ｂ
2016091475.tif 000002
【特許請求の範囲】
【請求項１】
複数の他装置および自装置がアクセスする共有メモリに接続され、
前記複数の他装置および自装置の間で同期を取るために使用するカウンタ値と、自装置に割り当てられた固有の番号とを基にして、前記共有メモリの第１開始位相と、第２開始位相と、第３開始位相とを算出する位相算出部と、
前記カウンタ値が変化する度に、前記第１開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得し、
前記共有メモリに格納された画像情報の終了ラインまで到達した場合に、前記第２開始位相に戻って、再度位相を変更しつつ順次画像情報を前記共有メモリから取得し、前記第１開始位相の前の位相まで到達した場合には、前記カウンタ値が前記第３開始位相と一致するまで待機し、
前記カウンタ値が前記第３開始位相と一致した場合に、前記第３開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得する順序制御部と
を有することを特徴とする順序制御装置。
【請求項２】
前記位相算出部は、前記カウンタ値と前記固有の番号とを加算した値を、前記共有メモリにアクセスする複数の他装置および自装置の数で除算した値に基づいて、前記第１開始位相を算出することを特徴とする請求項１に記載の順序制御装置。
【請求項３】
前記位相算出部は、画像情報のライン幅を前記共有メモリにアクセスする複数の他装置および自装置の数で除算した値に基づいて、前記第２開始位相を算出することを特徴とする請求項２に記載の順序制御装置。
【請求項４】
前記位相算出部は、前記共有メモリの画像情報の開始ラインを、前記第３開始位相として算出することを特徴とする請求項３に記載の順序制御装置。
【請求項５】
前記順序制御部は、第２開始位相と前記開始ラインとが一致する場合には、前記カウンタ値が変化する度に、前記第１開始位相から位相を変更しつつ順次画像情報を取得し、前記共有メモリの終了ラインまで到達した場合に、前記第２開始位相および前記第３開始位相に移動しないで前記共有メモリから画像情報を取得する処理を終了することを特徴とする請求項４に記載の順序制御装置。
【請求項６】
コンピュータが実行する順序制御方法であって、
共有メモリにアクセスする複数の他装置および自装置の間で同期を取るために使用するカウンタ値と、自装置に割り当てられた固有の番号とを基にして、前記共有メモリの第１開始位相と、第２開始位相と、第３開始位相とを算出し、
前記カウンタ値が変化する度に、前記第１開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得し、
前記共有メモリの終了ラインまで到達した場合に、前記第２開始位相に戻って、再度位相を変更しつつ順次画像情報を前記共有メモリから取得し、前記第１開始位相の前の位相まで到達した場合には、前記カウンタ値が前記第３開始位相と一致するまで待機し、
前記カウンタ値が前記第３開始位相と一致した場合に、前記第３開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得する
処理を実行することを特徴とする順序制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、順序制御装置等に関する。
【背景技術】
【０００２】
符号化装置は、過去に符号化された画像から符号化対象と類似した類似領域を参照し、類似領域を示すベクトルと画素差分を符号化することで、高い圧縮率を達成する。例えば、符号化装置は、動きベクトル検出（ME：Motion  Estimation）を用いて類似領域を検出する。
【０００３】
通常、参照対象となる画像は、外部メモリに置かれるため、符号化装置は、検索したい任意の領域を外部メモリから読み出して動きベクトル検出を行う。また、符号化装置は、動きベクトル検出を行う場合に、様々な大きさの矩形単位で、類似領域を検出する。このため、符号化装置は、外部メモリ上の任意の位置から様々な大きさの画像データを読み出すことになる。
【０００４】
動画像コーデック処理における外部メモリアクセスは、上記の符号化装置が画像データを取得するためのアクセスが支配的であるため、システム全体の消費電力を下げるためには、符号化装置による外部メモリへのアクセスを効率的にすることが重要である。
【０００５】
外部メモリへのアクセスを効率的にする方法として、大きなサイズのバッファメモリをＬＳＩ（Large  Scale  Integration）に搭載し、動きベクトル検出のために繰り返し読み出される画像データを一時的に蓄積する技術がある。この技術によれば、参照対象となる画像データが重複して外部メモリから読み出されることを抑止し、アクセスを効率的にすることができる。
【０００６】
しかし、動き検出の性能を向上させるために、演算器を並列に搭載し、バッファメモリを共有化する事を考えた場合、複数ポート化やバッファメモリを多重化して同じデータを保持するなど、バッファメモリと演算器の間のメモリアクセス帯域を増加させる必要があり、コストが高くなってしまう。
【０００７】
ここで、ＳＲＡＭ（Static  Random  Access  Memory）の容量を抑えて、ＳＲＡＭのアクセス帯域を増加させる手法としてラインインターリーブ技術がある。例えば、２ラインインターリーブでは、シングルポートＳＲＡＭを２つのグループに分け、偶数ライン、奇数ライン毎に周期的に別のバンクにデータを分散して格納する。これにより、例えば、２つの符号化装置が、２つのＳＲＡＭに分散して存在するデータに同時にアクセスすることを可能にする。
【０００８】
なお、２つの符号化装置が、同じＳＲＡＭに同時にアクセスが発生した場合には、アービターが、一方の符号化装置がアクセスすることを待たせるなどのアービトレーション等の制御を行う場合もある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１７７９２５号公報
【特許文献２】特開２０１０−１１９０８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来技術では、並列処理時の待ち時間を縮小することができないという問題がある。
【００１１】
例えば、外部メモリを共有する符号化装置は、ラインアドレスをインクリメンタルに処理する場合が多い。このため２つの動き検出回路同時に奇数ラインを要求するといったアクセスの競合が起きた場合に一方を１サイクル待たせると、それ以降、動き検出回路は、インクリメンタルにラインアドレスを増減しながら処理を繰り返す。そうすると、一方の動き検出回路が、偶数→奇数、もう一方の動き検出回路が奇数→偶数のパターンを繰り返して同期動作するため、シングルポートＳＲＡＭでありながら２つのポートを持つ１つのＳＲＡＭと同等のアクセスレートで動作可能となる。しかし、この構成のまま、並列度を上げるためには、同時にアクセスしたいポート数を増やすためにインターリーブ数を増やすことになり、例えば、８ラインインターリーブでは、競合が発生するとワーストで７ライン分の待ち時間が発生してしまう。
【００１２】
なお、バンクインターリーブ構成のＳＲＡＭであっても処理する内容によっては待ち時間をなくすように固定的にスケジューリングを行うことができる。しかし、動きベクトル検出を行う符号化装置は、外部メモリ上の任意の位置から様々な大きさの画像を読み出すため、固定的なスケジューリングを前もって行うことが難しい。
【００１３】
１つの側面では、並列処理時の待ち時間を縮小することができる順序制御装置および順序制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
第１の案では、順序制御装置は、共有メモリに接続され、位相算出部と、順序制御部とを有する。位相算出部は、複数の他装置および自装置の間で同期を取るために使用するカウンタ値と、自装置に割り当てられた固有の番号とを基にして、共有メモリの第１開始位相と、第２開始位相と、第３開始位相とを算出する。順序制御部は、カウンタ値が変化する度に、第１開始位相から位相を変更しつつ順次画像情報を共有メモリから取得する。順序制御部は、共有メモリに格納された画像情報の終了ラインまで到達した場合に、第２開始位相に戻り、再度位相を変更しつつ順次画像情報を共有メモリから取得する。順序制御部は、第１開始位相の前の位相まで到達した場合には、カウンタ値が第３開始位相と一致するまで待機する。順序制御部は、カウンタ値が第３開始位相と一致した場合に、第３開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得する。
【発明の効果】
【００１５】
本発明の１実施態様によれば、並列処理時の待ち時間を縮小することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１Ａ】図１Ａは、本実施例に係る符号化装置の構成を示す図である。
【図１Ｂ】図１Ｂは、動きベクトル検出部の構成を示す機能ブロック図である。
【図２】図２は、ＳＲＡＭバンクを説明するための図である。
【図３】図３は、ＰＥの構成を示す機能ブロック図である。
【図４】図４は、第１、２、３開始位相の関係を説明するための図である。
【図５】図５は、順序制御部が制御するバンクの順番の一例を示す図である。
【図６】図６は、本実施例に係るＰＥの処理手順を示すフローチャートである。
【図７】図７は、本実施例に係る各ＰＥがアクセスするバンクの番号の変化および待ち時間の関係を示す図である。
【図８】図８は、従来例の各ＰＥがアクセスするバンクの番号の変化および待ち時間の関係を示す図である。
【図９】図９は、従来例と本実施例について各ＰＥがアクセスするバンクの番号の変化および待ち時間の関係を示す図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する順序制御装置および順序制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１８】
図１Ａは、本実施例に係る符号化装置の構成を示す図である。図１Ａに示すように、この符号化装置７０は、映像入力ＩＦ７１、Ｔ（Transformation）／Ｑ（Quantization）７２、ＩＱ（Inverse  Quantization）／ＩＴ（Inverse  Transformation）部７３、ループフィルタ７４を有する。また、符号化装置７０は、エントロピー符号化部７５、ストリーム出力ＩＦ７６、Ｉｎｔｒａ予測部７７、動きベクトル検出部８０を有する。また、符号化装置７０は、共有メモリ５０に接続される。
【００１９】
動きベクトル検出部８０は、動きベクトルを検出する動き検出部８１と、共有メモリに格納された画像を一時的に記憶する参照画像バッファメモリ８２を有する。例えば、動きベクトル検出部８０は、予測画像と呼ばれる動きベクトルの情報、参照画像からフィルタなど掛けて再構成した画像等、一般的に動画の符号化に用いられる各種の情報を出力する。図１Ａにおいて、動きベクトル検出部８０以外の構成は、従来の符号化装置と同様である。
【００２０】
続いて、動きベクトル検出部の構成について詳しく説明する。図１Ｂは、動きベクトル検出部の構成を示す機能ブロック図である。図１Ｂに示すように、動きベクトル検出部は、複数のＰＥ（Processing  Engine）１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｅ，１００ｆ，１００ｇ，１００ｈを有する。また、各ＰＥは共有メモリ５０、位相カウンタ６０に接続される。以下の説明では、ＰＥ１００ａ〜１００ｈをまとめて、適宜、ＰＥ１００と表記する。ＰＥ１００は、順序制御装置の一例である。
【００２１】
共有メモリ５０は、ＳＲＡＭ（Static  Random  Access  Memory）バンク５０ａとポートセレクタ５０ｂとを有する。
【００２２】
ＳＲＡＭバンク５０ａは、各ＰＥ１００が読み出す対象の画像データを格納する。ＳＲＡＭバンク５０ａは、複数のバンクによって構成され、各バンクは一部の画像データを格納する。図２は、ＳＲＡＭバンクを説明するための図である。図２に示す例では、画像データ１０は複数のライン１０−０〜１０−２７に分割され、ライン１０−０、１０−８、１０−１６、１０−２４のデータは、「０」番のバンクに格納される。各バンクはそれぞれアドレスに対応付けられているものとする。ここでは説明を省略するが、１番から７番のバンクも同様にして、対応するラインのデータを格納する。
【００２３】
ポートセレクタ５０ｂは、ＰＥ１００とＳＲＡＭバンク５０ａとを接続するポートを切り替える装置である。例えば、ポートセレクタ５０ｂは、ＰＥ１００からアドレスを受け付けた場合に、係るＰＥ１００にポートを接続する。ポートセレクタ５０ｂは、接続したポートを介して、アドレスに対応するバンクに格納された画像データをＰＥ１００に出力する。
【００２４】
位相カウンタ６０は、各ＰＥ１００が利用する同期用の位相を示すカウンタ値を生成し、生成したカウンタ値を各ＰＥ１００に出力する処理部である。位相カウンタ６０は、周期的にカウンタ値をインクリメントして更新し、更新したカウンタ値を、各ＰＥ１００に出力する。本実施例では一例として、カウンタ値の初期値を「０」とし、カウンタ値は「０〜７」までの値を取るものとする。位相カウンタ６０は、カウンタ値が「７」に達した場合には、次にカウンタ値を「０」に戻す。
【００２５】
ＰＥ１００は、共有メモリ５０ａにアクセスして画像データを取得し、取得した画像データを基にして、動きベクトル検出を行う装置である。ＰＥ１００は、共有メモリ５０から画像データを取得する場合に、他のＰＥ１００との間で競合が発生しない複数の開始位相を求め、係る開始位相を基準にして、画像データを取得する。
【００２６】
図１Ｂに示したＰＥ１００の構成について説明する。図３は、ＰＥの構成を示す機能ブロック図である。図３に示すように、ＰＥ１００は、カレント画像メモリ１１０と、ＩＤ情報メモリ１２０と、位相算出部１３０と、順序制御部１４０と、マッチング部１５０とを有する。
【００２７】
カレント画像メモリ１１０は、現フレームの画像データを格納するメモリである。カレント画像メモリ１１０の画像データは、図示しない外部装置から取得する画像データによって更新される。なお、共有メモリ５０の画像データには、過去フレームの画像データが格納される。
【００２８】
ＩＤ情報メモリ１２０は、ＰＥ１００固有の識別番号を示すＩＤ番号を格納するメモリである。ＰＥ１００の数が８台の場合には、ＩＤ番号は、０〜７のいずれかの値となる。
【００２９】
位相算出部１３０は、位相カウンタから出力されるカウンタ値と、ＩＤ情報メモリに格納されたＩＤ番号とを基にして、第１開始位相と、第２開始位相と、第３開始位相とを算出する処理部である。位相算出部１３０は、第１開始位相、第２開始位相、第３開始位相の情報を、順序制御部１４０に出力する。
【００３０】
ここで、第１開始位相と、第２開始位相と、第３開始位相との関係について説明する。図４は、第１、２、３開始位相の関係を説明するための図である。
【００３１】
図４の画像データ１０は、ＰＥ１００が共有メモリ５０から読み出す画像データを示すものであり、共有メモリ５０に格納されているものする。図４において、（１）は第１開始位相の一例である。（２）は、第２開始位相の一例である。（３）は、第３開始位相の一例である。第１開始位相は、この第１開始位相を算出した時点のカウンタ値において、他のＰＥ１００と競合しない画像データのライン（バンクの番号）を一意に特定する位相である。ＰＥ１００は、カウンタ値の変化と同期して、ラインの位置を１段ずつ下に移動させて、順次ラインに対応するバンクから画像データを読み出す。
【００３２】
ＰＥ１００は、終了ライン（４）に到達した場合には、第２開始位相に移動し、カウンタ値の変化と同期して、ラインの位置を１段ずつ下に移動させて、順次ラインに対応するバンクから画像データを読み出す。第２開始位相は、終了ラインから第２開始位相に移動した時点のカウンタ値において、他のＰＥ１００と競合しない画像データのラインのバンクを特定する位相である。
【００３３】
ＰＥ１００は、第１開始位相の一つ上のラインに到達した場合には、第３開始位相に移動する。第３開始位相は、開始ラインの画像データを格納するバンクの番号に対応する位相である。ＰＥ１００は、第３開始位相に移動した時点では、係る第３開始位相に対するアクセスが、他のＰＥ１００と競合する可能性がある。ＰＥ１００は、カウンタ値を参照し、カウンタ値が第３開始位相と同じ値となるまで待機する。図４に示す例では、第３開始位相が「０」である。このため、ＰＥ１００は、カウンタ値が「０」となった時点で、番号「０」のバンクにアクセスして、画像データを取得する。
【００３４】
続いて、位相算出部１３０が、第１開始位相、第２開始位相、第３開始位相を算出する処理を具体的に説明する。ここでは、ｎバンクインターリーブの場合について説明する。図１Ｂに示すように、ＰＥ１００が８台存在する場合には、８バンクインターリーブとなる。位相算出部１３０は、式（１）に基づき、startbankを算出する。式（１）に示すように、startbankは、ＩＤ番号とカウンタ値とを加算した値をｎで割った余りを、startbankの値として設定する。
【００３５】
staratbank＝（ＩＤ番号＋カウンタ値）％ｎ・・・（１）
【００３６】
位相算出部１３０は、第１開始位相を、式（２）に基づいて算出する。式（２）のＬｓは、画像データの開始ラインのライン番号に対応する。図４に示す例では、画像データ１０は、ライン番号は０〜２７まで存在し、開始ラインのライン番号は「０」となる。
【００３７】
第１開始位相＝ＬＳ＋startbank・・・（２）
【００３８】
位相算出部１３０は、第２開始位相を、式（３）に基づいて算出する。式（３）のＬｅは、終了ラインのライン番号を示す。例えば、位相算出部１３０は、終了ラインのライン番号を、式（４）に基づき算出する。式（４）において、Ｈは、画像データのライン幅を示すものである。例えば、図４に示す例では、ライン幅Ｈは「２８」となる。
【００３９】
第２開始位相＝Ｌｓ＋（Ｌｅ＋１）％ｎ・・・（３）
【００４０】
Ｌｅ＝Ｌｓ＋Ｈ−１・・・（４）
【００４１】
位相算出部１３０は、第３開始位相を、式（５）に基づいて算出する。
【００４２】
第３開始位相＝Ｌｓ・・・（５）
【００４３】
なお、位相算出部１３０は、第２開始位相が、開始ラインＬｓと同じ値である場合には、第２開始位相および第３開始位相が存在しないと判定し、第１開始位相の情報のみを、順序制御部１４０に出力する。
【００４４】
順序制御部１４０は、第１開始位相、第２開始位相、第３開始位相に基づいて、各ＰＥ１００が競合しないように、マッチング部１５０が、共有メモリ５０から画像データを取得するバンクの順番を制御する処理部である。図５は、順序制御部が制御するバンクの順番の一例を示す図である。図５の左側に示す画像データ１０と、第１開始位相、第２開始位相、第３開始位相に関する説明は、図４で説明した内容と同様である。図５の順番テーブル２０は、ＰＥ１００がアクセスするバンクの順番を示すものである。
【００４５】
図５に示すように、順序制御部１４０は、初めに、第１開始位相（１）に対応するバンクの番号「７」番を、マッチング部１５０に出力して、バンクの番号「７」に対応する画像データの情報を取得させる。以下の順序制御部１４０に関する説明では、順序制御部１４０が、マッチング部１５０に出力するバンクの番号のみ表記し、マッチング部１５０の処理については説明を省略する。
【００４６】
順序制御部１４０は、位相カウンタ６０から取得するカウンタ値の変化と同期して、ラインの位置を１段ずつ下に移動させて、順次ラインに対応するバンクの番号を、マッチング部１５０に出力する。順序制御部１４０は、画像データ１０の終了ラインに到達するまで上記処理を繰り返し実行する。具体的に、順序制御部１４０は、順番テーブル２０に示すように「７、０、１、２、３、４、５、６、７、０、１、２、３」の順でバンクの番号を、マッチング部１５０に出力する。
【００４７】
順序制御部１４０は、画像データ１０の終了ライン（４）に到達すると、第２開始位相（２）に移動し、第２開始位相に対応するバンクの番号「４」番を、マッチング部１５０に出力する。順序制御部１４０は、位相カウンタ６０から取得するカウンタ値の変化と同期して、ラインの位置を１段ずつ下に移動させて、順次ラインに対応するバンクの番号を、マッチング部１５０に出力する。具体的に、順序制御部１４０は、順番テーブル２０に示すように「４、５、６」の順でバンクの番号を、マッチング部１５０に出力する。
【００４８】
順序制御部１４０は、画像データ１０の第１開始位相（１）の１つ上のラインに到達すると、第３開始位相（３）に移動する。順序制御部１４０は、第３開始位相のバンクの番号と同一のカウンタ値が、位相カウンタ６０から出力されるまで待機する。図５に示す例では、第３開始位相に対応するバンクの番号が「０」であるため、カウンタ値が「０」となるまで待機する。順序制御部１４０は、カウンタ値が「０」となったタイミングで、バンクの番号「０」をマッチング部１５０に出力する。
【００４９】
続いて、順序制御部１４０は、位相カウンタ６０から取得するカウンタ値の変化と同期して、ラインの位置を１段ずつ下に移動させて、順次ラインに対応するバンクの番号を、マッチング部１５０に出力する。順序制御部１４０は、第２開始位相の１つ上のラインに到達するまで上記処理を繰り返し実行する。具体的に、順序制御部１４０は、順番テーブル２０に示すように、１ステップ待機した後、「０、１、２、３」の順でバンクの番号を、マッチング部１５０に出力する。
【００５０】
マッチング部１５０は、共有メモリ５０に格納された画像データと、カレント画像メモリ１１０に格納された画像データのマッチングを実行して、動きベクトル検出を行う処理部である。マッチング部１５０は、符号化に必要な動きベクトルと類似度を示すコスト、動きベクトルに基づいて構成された予測画像を出力する。
【００５１】
マッチング部１５０は、共有メモリ５０に格納された画像データを取得する場合には、順序制御部１４０から出力されるバンクの番号に格納された画像データを順次共有メモリに要求することで、他のＰＥ１００と競合することなく、画像データを取得する。
【００５２】
次に、本実施例に係るＰＥ１００の処理手順の一例について説明する。図６は、本実施例に係るＰＥの処理手順を示すフローチャートである。図６に示すように、ＰＥ１００の位相算出部１３０は、ＩＤ番号とカウンタ値とを基にして、startbankを算出する（ステップＳ１０１）。位相算出部１３０は、第１開始位相、第２開始位相、第３開始位相を算出する（ステップＳ１０２）。ステップＳ１０２において、位相算出部１３０は、第２開始位相が、開始ラインＬｓと同じ値である場合には、第２開始位相および第３開始位相が存在しないと判定し、第１開始位相のみを算出する。
【００５３】
ＰＥ１００の順序制御部１４０およびマッチング部１５０は、第１開始位相から１サイクルずつラインを＋１更新しながら演算を行う（ステップＳ１０３）。順序制御部１４０およびマッチング部１５０は、第２開始位相が存在するか否かを判定する（ステップＳ１０４）。順序制御部１４０およびマッチング部１５０は、第２開始位相が存在しない場合には（ステップＳ１０４，Ｎｏ）、処理を終了する。
【００５４】
一方、順序制御部１４０およびマッチング部１５０は、第２開始位相が存在する場合には（ステップＳ１０４，Ｙｅｓ）、第２開始位相から１サイクルずつラインを＋１更新しながら演算を行う（ステップＳ１０５）。順序制御部１４０およびマッチング部１５０は、第３開始位相が存在するか否かを判定する（ステップＳ１０６）。順序制御部１４０およびマッチング部１５０は、第３開始位相が存在しない場合には（ステップＳ１０６，Ｎｏ）、処理を終了する。
【００５５】
一方、順序制御部１４０は、第３開始位相が存在する場合には（ステップＳ１０６，Ｙｅｓ）、第３開始位相のバンクの番号とカウンタ値とが一致するか否かを判定する（ステップＳ１０７）。順序制御部１４０は、第３開始位相のバンクの番号とカウンタ値とが一致しない場合には（ステップＳ１０７，Ｎｏ）、１サイクルＰＥ１００を停止し（ステップＳ１０８）、ステップＳ１０７に移行する。
【００５６】
順序制御部１４０およびマッチング部１５０は、第３開始位相のバンクの番号とカウンタ値とが一致する場合には（ステップＳ１０７，Ｙｅｓ）、第３開始位相から１サイクルずつラインを＋１更新しながら演算を行い（ステップＳ１０９）、処理を終了する。
【００５７】
次に、本実施例に係るＰＥ１００の効果について説明する。ＰＥ１００は、他のＰＥ１００と共有する共有メモリ５０にアクセスする場合に、カウンタ値とＩＤ番号とを基にして、第１開始位相、第２開始位相、第３開始位相を算出し、算出した各開始位相から順に画像データを読み出す。具体的に、ＰＥ１００は、カウンタ値の変化と同期して、第１開始位相から画像データの終了ラインまで読み出した後、第２開始位相に移動する。ＰＥ１００は、カウンタ値の変化と同期して、第２開始位相から第１開始位相の一つ上のラインまでの画像データを読み出す。そして、ＰＥは、カウンタ値が第３開始位相と同じ値となるまで待機した後、残りの画像データを読み出す。このような処理を、各ＰＥ１００が実行することで、共有メモリ５０に対するアクセスが他のＰＥ１００と競合することを抑止することができる。また、これによって、複数のＰＥ１００によって並列処理を行う場合の待ち時間を縮小することができる。また、各ＰＥ１００を並列動作させる場合のデータレート変換バッファが不要となり、回路規模やコストを削減することもできる。
【００５８】
ＰＥ１００は、式（１）〜式（５）に基づいて、第１、２、３開始位相を算出する。このため、簡易的な方法で、第１、２、３開始位相を算出することができる。
【００５９】
ＰＥ１００は、第２開始位相が、開始ラインＬｓと同じ値である場合には、第２開始位相および第３開始位相が存在しないと判定し、第１開始位相を基準にして画像データを読み出す。このため、第２開始位相、第３開始位相が存在しない状況下でも、他のＰＥ１００と競合しないで、画像データを読み出すことができる。
【００６０】
次に、８ラインインターリーブ構成において、２４〜３１ラインの画像データを処理するケースで、各ＰＥ１００がアクセスするバンクの番号の変化および待ち時間の関係について説明する。図７は、本実施例に係る各ＰＥがアクセスするバンクの番号の変化および待ち時間の関係を示す図である。図７のブロック２００ａは、２４ラインの画像データを処理する場合の各ＰＥ１００がアクセスするバンクの番号および待ち時間の関係を示す。ブロック２００ｂ〜２００ｈは、２５〜３１ラインの画像データを処理する場合の各ＰＥ１００がアクセスするバンクの番号および待ち時間の関係をそれぞれ示す。各ブロック２００ａ〜２００ｈは、上から下に向かって、バンクの番号が変化する。各ブロック２００ａ〜２００ｈの各列は、左側から順に、ＰＥ１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｅ，１００ｆ，１００ｇ，１００ｈがアクセスするバンクの番号を示す。
【００６１】
ブロック２００ａに示すように、２４ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００は、待ち時間が発生しない。
【００６２】
ブロック２００ｂに示すように、２５ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００には、待ち時間が発生する。ＰＥ１００ｂに、７サイクルの待ち時間が発生する。ＰＥ１００ｃに６サイクルの待ち時間が発生する。ＰＥ１００ｄに５サイクルの待ち時間が発生する。ＰＥ１００ｅに４サイクルの待ち時間が発生する。ＰＥ１００ｆに３サイクルの待ち時間が発生する。ＰＥ１００ｇに２サイクルの待ち時間が発生する。ＰＥ１００ｈに１サイクルの待ち時間が発生する。なお、ＰＥ１００ａには、待ち時間が発生しない。
【００６３】
ブロック２００ｃに示すように、２６ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００には、待ち時間が発生する。ＰＥ１００ｂに、６サイクルの待ち時間が発生する。ＰＥ１００ｃに、６サイクルの待ち時間が発生する。ＰＥ１００ｄに、５サイクルの待ち時間が発生する。ＰＥ１００ｅに、４サイクルの待ち時間が発生する。ＰＥ１００ｆに、３サイクルの待ち時間が発生する。ＰＥ１００ｇに、２サイクルの待ち時間が発生する。ＰＥ１００ｈに、１サイクルの待ち時間が発生する。なお、ＰＥ１００ａには、待ち時間が発生しない。
【００６４】
ブロック２００ｄに示すように、２７ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００には、待ち時間が発生する。ＰＥ１００ｂに、５サイクルの待ち時間が発生する。ＰＥ１００ｃに、５サイクルの待ち時間が発生する。ＰＥ１００ｄに、５サイクルの待ち時間が発生する。ＰＥ１００ｅに、４サイクルの待ち時間が発生する。ＰＥ１００ｆに、３サイクルの待ち時間が発生する。ＰＥ１００ｇに、２サイクルの待ち時間が発生する。ＰＥ１００ｈに、１サイクルの待ち時間が発生する。なお、ＰＥ１００ａには、待ち時間が発生しない。
【００６５】
ブロック２００ｅに示すように、２８ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００には、待ち時間が発生する。ＰＥ１００ｂに、４サイクルの待ち時間が発生する。ＰＥ１００ｃに、４サイクルの待ち時間が発生する。ＰＥ１００ｄに、４サイクルの待ち時間が発生する。ＰＥ１００ｅに、４サイクルの待ち時間が発生する。ＰＥ１００ｆに、３サイクルの待ち時間が発生する。ＰＥ１００ｇに２サイクルの待ち時間が発生する。ＰＥ１００ｈに、１サイクルの待ち時間が発生する。なお、ＰＥ１００ａには、待ち時間が発生しない。
【００６６】
ブロック２００ｆに示すように、２９ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００には、待ち時間が発生する。ＰＥ１００ｂに、３サイクルの待ち時間が発生する。ＰＥ１００ｃに、３サイクルの待ち時間が発生する。ＰＥ１００ｄに、３サイクルの待ち時間が発生する。ＰＥ１００ｅに、３サイクルの待ち時間が発生する。ＰＥ１００ｆに、３サイクルの待ち時間が発生する。ＰＥ１００ｇに、２サイクルの待ち時間が発生する。ＰＥ１００ｈに、１サイクルの待ち時間が発生する。なお、ＰＥ１００ａには、待ち時間が発生しない。
【００６７】
ブロック２００ｇに示すように、３０ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００には、待ち時間が発生する。ＰＥ１００ｂに、２サイクルの待ち時間が発生する。ＰＥ１００ｃに、２サイクルの待ち時間が発生する。ＰＥ１００ｄに、２サイクルの待ち時間が発生する。ＰＥ１００ｅに、２サイクルの待ち時間が発生する。ＰＥ１００ｆに、２サイクルの待ち時間が発生する。ＰＥ１００ｇに、２サイクルの待ち時間が発生する。ＰＥ１００ｈに、１サイクルの待ち時間が発生する。なお、ＰＥ１００ａには、待ち時間が発生しない。
【００６８】
ブロック２００ｈに示すように、３１ラインの画像データを８ラインインターリーブ構成で処理すると、各ＰＥ１００には、待ち時間が発生する。ＰＥ１００ｂに、１サイクルの待ち時間が発生する。ＰＥ１００ｃに、１サイクルの待ち時間が発生する。ＰＥ１００ｄに、１サイクルの待ち時間が発生する。ＰＥ１００ｅに、１サイクルの待ち時間が発生する。ＰＥ１００ｆに、１サイクルの待ち時間が発生する。ＰＥ１００ｇに、１サイクルの待ち時間が発生する。ＰＥ１００ｈに、１サイクルの待ち時間が発生する。なお、ＰＥ１００ａには、待ち時間が発生しない。
【００６９】
続いて、比較のため、従来例の各ＰＥがアクセスするバンクの番号の変化および待ち時間の関係について説明する。従来のＰＥを１０ａ，１０ｂ，１０ｃ，１０ｄ，１０ｅ，１０ｆ，１０ｇ，１０ｈとする。図８は、従来例の各ＰＥがアクセスするバンクの番号の変化および待ち時間の関係を示す図である。図８のブロック３００ａは、２４ラインの画像データを処理する場合のＰＥがアクセスするバンクの番号および待ち時間の関係を示す。ブロック３００ｂ〜３００ｅは、２５，２６，２７，３１ラインの画像データを処理する場合のＰＥがアクセスするバンクの番号および待ち時間の関係をそれぞれ示す。各ブロック３００ａ〜３００ｅは、上から下に向かってバンクの番号が変化する。各ブロック３００ａ〜３００ｅは、左側から順番に、ＰＥ１０ａ，１０ｂ，１０ｃ，１０ｄ，１０ｅ，１０ｆ，１０ｇ，１０ｈがアクセスするバンクの番号を示す。
【００７０】
ブロック３００ａに示すように、２４ラインの画像データを８ラインインターリーブ構成で処理すると、従来の各ＰＥには、待ち時間が発生する。ＰＥ１０ｂに１サイクルの待ち時間が発生する。ＰＥ１０ｃに２サイクルの待ち時間が発生する。ＰＥ１０ｄに３サイクルの待ち時間が発生する。ＰＥ１０ｅに４サイクルの待ち時間が発生する。ＰＥ１０ｆに５サイクルの待ち時間が発生する。ＰＥ１０ｇに６サイクルの待ち時間が発生する。ＰＥ１０ｈに７サイクルの待ち時間が発生する。なお、ＰＥ１０ａには待ち時間が発生しない。
【００７１】
ブロック３００ｂに示すように、２５ラインの画像データを８ラインインターリーブ構成で処理すると、従来の各ＰＥには、待ち時間が発生する。ＰＥ１０ａに７サイクルの待ち時間が発生する。ＰＥ１０ｂに８サイクルの待ち時間が発生する。ＰＥ１０ｃに９サイクルの待ち時間が発生する。ＰＥ１０ｄに１０サイクルの待ち時間が発生する。ＰＥ１０ｅに１１サイクルの待ち時間が発生する。ＰＥ１０ｆに１２サイクルの待ち時間が発生する。ＰＥ１０ｇに１３サイクルの待ち時間が発生する。ＰＥ１０ｈに１４サイクルの待ち時間が発生する。
【００７２】
ブロック３００ｃに示すように、２６ラインの画像データを８ラインインターリーブ構成で処理すると、従来の各ＰＥには、待ち時間が発生する。ＰＥ１０ａに６サイクルの待ち時間が発生する。ＰＥ１０ｂに７サイクルの待ち時間が発生する。ＰＥ１０ｃに８サイクルの待ち時間が発生する。ＰＥ１０ｄに９サイクルの待ち時間が発生する。ＰＥ１０ｅに１０サイクルの待ち時間が発生する。ＰＥ１０ｆに１１サイクルの待ち時間が発生する。ＰＥ１０ｇに１２サイクルの待ち時間が発生する。ＰＥ１０ｈに１３サイクルの待ち時間が発生する。
【００７３】
ブロック３００ｄに示すように、２７ラインの画像データを８ラインインターリーブ構成で処理すると、従来の各ＰＥには、待ち時間が発生する。ＰＥ１０ａに５サイクルの待ち時間が発生する。ＰＥ１０ｂに６サイクルの待ち時間が発生する。ＰＥ１０ｃに７サイクルの待ち時間が発生する。ＰＥ１０ｄに８サイクルの待ち時間が発生する。ＰＥ１０ｅに９サイクルの待ち時間が発生する。ＰＥ１０ｆに１０サイクルの待ち時間が発生する。ＰＥ１０ｇに１１サイクルの待ち時間が発生する。ＰＥ１０ｈに１２サイクルの待ち時間が発生する。
【００７４】
ブロック３００ｅに示すように、３１ラインの画像データを８ラインインターリーブ構成で処理すると、従来の各ＰＥには、待ち時間が発生する。ＰＥ１０ａに１サイクルの待ち時間が発生する。ＰＥ１０ｂに２サイクルの待ち時間が発生する。ＰＥ１０ｃに３サイクルの待ち時間が発生する。ＰＥ１０ｄに４サイクルの待ち時間が発生する。ＰＥ１０ｅに５サイクルの待ち時間が発生する。ＰＥ１０ｆに６サイクルの待ち時間が発生する。ＰＥ１０ｇに７サイクルの待ち時間が発生する。ＰＥ１０ｈに８サイクルの待ち時間が発生する。
【００７５】
ここで、従来のＰＥと、本実施例のＰＥ１００とを比較すると、本実施例のＰＥ１００の方が、待ち時間が少なくなる。例えば、各サイクル待ち時間が発生する確率は、下記に示すものとなる。
【００７６】
７サイクル待ち時間が発生する確率：従来例８／６４、本実施例１／６４
６サイクル待ち時間が発生する確率：従来例８／６４、本実施例３／６４
５サイクル待ち時間が発生する確率：従来例８／６４、本実施例５／６４
４サイクル待ち時間が発生する確率：従来例８／６４、本実施例７／６４
３サイクル待ち時間が発生する確率：従来例８／６４、本実施例９／６４
２サイクル待ち時間が発生する確率：従来例８／６４、本実施例１１／６４
１サイクル待ち時間が発生する確率：従来例８／６４、本実施例１３／６４
０サイクル待ち時間が発生する確率：従来例８／６４、本実施例１５／６４
【００７７】
次に、各ＰＥが、ライン数の異なる画像データに続けてアクセスする場合のバンクの番号の変化および待ち時間の関係について従来例と本実施例とを比較して示す。図９は、従来例と本実施例について各ＰＥがアクセスするバンクの番号の変化および待ち時間の関係を示す図である。
【００７８】
図９のブロック４００ａは、従来例のＰＥが、２５ラインの画像データにアクセスした後、２７ラインの画像データにアクセスした場合のバンクの番号および待ち時間の関係を示す。ブロック４００ｂは、従来例のＰＥが、２４ラインの画像データにアクセスした後、２７ラインの画像データにアクセスした場合のバンクの番号および待ち時間の関係を示す。
【００７９】
ブロック４００ａ，４００ｂは、上から下に向かってバンクの番号が変化する。ブロック４００ａ，４００ｂは、左側から順番に、ＰＥ１０ａ，１０ｂ，１０ｃ，１０ｄ，１０ｅ，１０ｆ，１０ｇ，１０ｈがアクセスするバンクの番号を示す。
【００８０】
図９のブロック５００ａは、本実施例のＰＥ１００が、２５ラインの画像データにアクセスした後、２７ラインの画像データにアクセスした場合のバンクの番号および待ち時間の関係を示す。ブロック５００ｂは、本実施例のＰＥ１００が、２４ラインの画像データにアクセスした後、２７ラインの画像データにアクセスした場合のバンクの番号および待ち時間の関係を示す。
【００８１】
ブロック５００ａ，５００ｂは、上から下に向かってバンクの番号が変化する。ブロック５００ａ，５００ｂは、左側から順番に、ＰＥ１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｅ，１００ｆ，１００ｇ，１００ｈがアクセスするバンクの番号を示す。
【００８２】
ブロック４００ａに示す例では、従来の各ＰＥには待ち時間が発生する。ＰＥ１０ａには１５サイクルの待ち時間が発生する。ＰＥ１０ｂには、１６サイクルの待ち時間が発生する。ＰＥ１０ｃには、１７サイクルの待ち時間が発生する。ＰＥ１０ｄには、１８サイクルの待ち時間が発生する。ＰＥ１０ｅには、１９サイクルの待ち時間が発生する。ＰＥ１０ｆには、２０サイクルの待ち時間が発生する。ＰＥ１０ｇには、２１サイクルの待ち時間が発生する。ＰＥ１０ｈには、２２サイクルの待ち時間が発生する。
【００８３】
ブロック５００ａに示す例では、本実施例に係る各ＰＥ１００には、待ち時間は発生するものの、従来例のブロック４００ａと比較して、待ち時間は少なくなり、処理時間も短縮される。ＰＥ１００ａには待ち時間が発生しない。ＰＥ１００ｂには、８サイクルの待ち時間が発生する。ＰＥ１００ｃには、８サイクルの待ち時間が発生する。ＰＥ１００ｄ
には、８サイクルの待ち時間が発生する。ＰＥ１００ｅには、８サイクルの待ち時間が発生する。ＰＥ１００ｆには、６サイクルの待ち時間が発生する。ＰＥ１００ｇには、４サイクルの待ち時間が発生する。ＰＥ１００ｈには、２サイクルの待ち時間が発生する。
【００８４】
ブロック４００ｂに示す例では、従来の各ＰＥには待ち時間が発生する。ＰＥ１０ａには８サイクルの待ち時間が発生する。ＰＥ１０ｂには、９サイクルの待ち時間が発生する。ＰＥ１０ｃには、１０サイクルの待ち時間が発生する。ＰＥ１０ｄには、１１サイクルの待ち時間が発生する。ＰＥ１０ｅには、１２サイクルの待ち時間が発生する。ＰＥ１０ｆには、１３サイクルの待ち時間が発生する。ＰＥ１０ｇには、１４サイクルの待ち時間が発生する。ＰＥ１０ｈには、１５サイクルの待ち時間が発生する。
【００８５】
ブロック５００ｂに示す例では、本実施例に係る各ＰＥ１００には、待ち時間は発生するものの、従来例のブロック４００ｂと比較して、待ち時間は少なくなり、処理時間も短縮される。ＰＥ１００ａには待ち時間が発生しない。ＰＥ１００ｂには、３サイクルの待ち時間が発生する。ＰＥ１００ｃには、３サイクルの待ち時間が発生する。ＰＥ１００ｄ
には、３サイクルの待ち時間が発生する。ＰＥ１００ｅには、３サイクルの待ち時間が発生する。ＰＥ１００ｆには、３サイクルの待ち時間が発生する。ＰＥ１００ｇには、２サイクルの待ち時間が発生する。ＰＥ１００ｈには、１サイクルの待ち時間が発生する。
【００８６】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８７】
（付記１）複数の他装置および自装置がアクセスする共有メモリに接続され、
前記複数の他装置および自装置の間で同期を取るために使用するカウンタ値と、自装置に割り当てられた固有の番号とを基にして、前記共有メモリの第１開始位相と、第２開始位相と、第３開始位相とを算出する位相算出部と、
前記カウンタ値が変化する度に、前記第１開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得し、
前記共有メモリに格納された画像情報の終了ラインまで到達した場合に、前記第２開始位相に戻って、再度位相を変更しつつ順次画像情報を前記共有メモリから取得し、前記第１開始位相の前の位相まで到達した場合には、前記カウンタ値が前記第３開始位相と一致するまで待機し、
前記カウンタ値が前記第３開始位相と一致した場合に、前記第３開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得する順序制御部と
を有することを特徴とする順序制御装置。
【００８８】
（付記２）前記位相算出部は、前記カウンタ値と前記固有の番号とを加算した値を、前記共有メモリにアクセスする複数の他装置および自装置の数で除算した値に基づいて、前記第１開始位相を算出することを特徴とする付記１に記載の順序制御装置。
【００８９】
（付記３）前記位相算出部は、画像情報のライン幅を前記共有メモリにアクセスする複数の他装置および自装置の数で除算した値に基づいて、前記第２開始位相を算出することを特徴とする付記２に記載の順序制御装置。
【００９０】
（付記４）前記位相算出部は、前記共有メモリの画像情報の開始ラインを、前記第３開始位相として算出することを特徴とする付記３に記載の順序制御装置。
【００９１】
（付記５）前記順序制御部は、第２開始位相と前記開始ラインとが一致する場合には、前記カウンタ値が変化する度に、前記第１開始位相から位相を変更しつつ順次画像情報を取得し、前記共有メモリの終了ラインまで到達した場合に、前記第２開始位相および前記第３開始位相に移動しないで前記共有メモリから画像情報を取得する処理を終了することを特徴とする付記４に記載の順序制御装置。
【００９２】
（付記６）コンピュータが実行する順序制御方法であって、
共有メモリにアクセスする複数の他装置および自装置の間で同期を取るために使用するカウンタ値と、自装置に割り当てられた固有の番号とを基にして、前記共有メモリの第１開始位相と、第２開始位相と、第３開始位相とを算出し、
前記カウンタ値が変化する度に、前記第１開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得し、
前記共有メモリの終了ラインまで到達した場合に、前記第２開始位相に戻って、再度位相を変更しつつ順次画像情報を前記共有メモリから取得し、前記第１開始位相の前の位相まで到達した場合には、前記カウンタ値が前記第３開始位相と一致するまで待機し、
前記カウンタ値が前記第３開始位相と一致した場合に、前記第３開始位相から位相を変更しつつ順次画像情報を前記共有メモリから取得する
処理を実行することを特徴とする順序制御方法。
【００９３】
（付記７）前記第１開始位相を算出する処理は、前記カウンタ値と前記固有の番号とを加算した値を、前記共有メモリにアクセスする複数の他装置および自装置の数で除算した値に基づいて、前記第１開始位相を算出することを特徴とする付記６に記載の順序制御方法。
【００９４】
（付記８）前記第２開始位相を算出する処理は、画像情報のライン幅を前記共有メモリにアクセスする複数の他装置および自装置の数で除算した値に基づいて、前記第２開始位相を算出することを特徴とする付記７に記載の順序制御方法。
【００９５】
（付記９）前記第３開始位相を算出する処理は、前記共有メモリの画像情報の開始ラインを、前記第３開始位相として算出することを特徴とする付記８に記載の順序制御方法。
【００９６】
（付記１０）前記画像情報を前記共有メモリから取得する処理は、第２開始位相と前記開始ラインとが一致する場合には、前記カウンタ値が変化する度に、前記第１開始位相から位相を変更しつつ順次画像情報を取得し、前記共有メモリの終了ラインまで到達した場合に、前記第２開始位相および前記第３開始位相に移動しないで前記共有メモリから画像情報を取得する処理を終了することを特徴とする付記９に記載の順序制御方法。
【符号の説明】
【００９７】
５０  共有メモリ
６０  位相カウンタ
１００ａ，１００ｂ，１００ｃ，１００ｄ，１００ｅ，１００ｆ，１００ｇ，１００ｈ  ＰＥ
【図１Ａ】
2016091475.tif 000003
【図１Ｂ】
2016091475.tif 000004
【図２】
2016091475.tif 000005
【図３】
2016091475.tif 000006
【図４】
2016091475.tif 000007
【図５】
2016091475.tif 000008
【図６】
2016091475.tif 000009
【図７】
2016091475.tif 000010
【図８】
2016091475.tif 000011
【図９】
2016091475.tif 000012