(57)【要約】【課題】データ処理モジュール（プロセッサ）のＩ／Ｆを汎用化し、処理内容に応じてデータ処理モジュール単位の追加変更を容易にすることができるデータ処理装置を提供する。【解決手段】データ処理モジュール３にリードアドレス生成部１１、リードＦＩＦＯ７、ライトアドレス生成部１３、ライトＦＩＦＯ９及びアービタ１０を設け、１チャンネル分のポートで上位のアービタ４に接続する。一方、リードアドレス生成部１１及びライトアドレス生成部１３において、最終アクセス要求受け付け後に割り込みを生成し、割り込み処理時の各データ処理モジュール８−１〜８−ｍの状態に応じて各データ処理モジュールの起動を制御する。尚、各データ処理モジュール間のデータの受け渡しはＲＡＭ６上において行う。【選択図】  図４
2004220432.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する格納手段と、
前記格納手段から前記データを読み出し、データ処理を行った後に処理後のデータを前記格納手段に書き込む一連の処理を行う複数のデータ処理手段と、
前記複数のデータ処理手段のうち、所定のデータ処理手段を起動させる起動制御手段と、
起動した前記所定のデータ処理手段による前記格納手段へのアクセスを制御するアクセス制御手段と
を備えることを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリを介したデータの受け渡しによってデータ処理を行うデータ処理装置に関する。
【０００２】
【従来の技術】
プロセッサは、一般に、処理されるべきデータの読み出しや処理したデータの書き込みのために、メモリインタフェースを介してメモリにアクセスすることができる。このプロセッサは、上記メモリインタフェースに対する内部アドレスを生成し、このメモリインタフェースは、上記内部アドレスに対応するデータにアクセスするための適切な制御信号を生成する。これらの制御信号は、内部アドレスに対応する特定のメモリセルを活性化させている。
【０００３】
一例として、プロセッサが、２３ビットの内部アドレスＡ［２２：０］を備えているものと仮定する。メモリインタフェースは、ＤＲＡＭタイプのメモリ用には、Ａ［２２：１２］からのページ番号と、Ａ［１１：１０］からのバンク選択信号と、Ａ［９：２］からのコラム番号と、Ａ［１：０］からのワード選択信号とを生成する。また、メモリインタフェースは、ＳＲＡＭタイプのメモリ用には、Ａ［２２：２］からのＳＲＡＭアドレス信号と、下位２ビットＡ［１：０］からのワード選択とを生成する。
【０００４】
上述したようなメモリインタフェースに対し、プロセッサは、ＤＲＡＭ又はＳＲＡＭのように用いられるメモリタイプとは独立して、常に同一の通信モード及び内部アドレスを用いている。このように、メモリと協働するデータ処理方法が従来から知られている（例えば、特許文献１参照）。
【０００５】
また、メモリと協働するデータ処理装置の設計を容易にするため、論理要求を生成する複数のプロセッサと、上記論理要求に基づいて物理要求としてのマクロコマンドを生成する複数のアドレス処理回路と、複数のマクロコマンドを受け入れると共に仲裁スキームに従って、上記複数のマクロコマンドの１つを選択するアービタと、当該アービタにより選択された順序で上記複数のマクロコマンドを処理して前記メモリの一部とそのアドレスが特定されるようにアクセスを確立するアクセスインタフェースとを備えるデータ処理装置が開示されている（例えば、特許文献２参照）。この方法によれば、プロセッサの論理要求をアドレス処理回路にて物理要求に変換してメモリのアクセスを行うため、プロセッサはメモリのアクセス方法や格納方法に影響されなくなり、プロセッサの移植性（汎用性）が高まる。
【０００６】
【特許文献１】
欧州特許出願公開第７９３３９０号明細書
【０００７】
【特許文献２】
特開２００１−１０９６５６号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、上記特許文献２に記載された方法では、データの読み出し／書き込みのアドレス生成を１つの機能ブロックで行っているため、プロセッサ側で読み出し／書き込みの競合を回避するように指示する必要があり、制御が複雑になってしまうという欠点があった。また、複数のデータ処理モジュール（プロセッサ）をパイプライン状に接続することができず、必ず前記メモリインタフェースを介してデータの受け渡しをしなければならないという欠点があった。さらに、メモリインタフェース上にバッファメモリを設け、複数のプロセッサで共有しているので、バッファメモリの最適化が困難であるという欠点があった。
【０００９】
さらにまた、データ処理モジュール（プロセッサ）が増えた場合、アービタの変更だけでなく、制御回路やバッファメモリの追加等が必要になり、変更が困難であるという欠点があった。特に、解像度変換やフィルタのように同時に複数の（不連続）データの収集が必要なモジュールを追加する場合は、バッファメモリだけでなく上記アドレス生成回路も複雑になってしまうという欠点があった。
【００１０】
本発明は、このような事情を考慮してなされたものであり、データ処理モジュール（プロセッサ）のＩ／Ｆを汎用化し、処理内容に応じてデータ処理モジュール単位の追加変更を容易にすることができるデータ処理装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するため、本発明に係るデータ処理装置は、データを格納する格納手段と、
前記格納手段から前記データを読み出し、データ処理を行った後に処理後のデータを前記格納手段に書き込む一連の処理を行う複数のデータ処理手段と、
前記複数のデータ処理手段のうち、所定のデータ処理手段を起動させる起動制御手段と、
起動した前記所定のデータ処理手段による前記格納手段へのアクセスを制御するアクセス制御手段と
を備えることを特徴とする。
【００１２】
【発明の実施の形態】
以下、本願発明の一実施形態について示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲によって確定される本願発明の技術的範囲に含まれるほんの一部の実施形態にすぎない。従って、本願明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明であろう。
【００１３】
尚、以下には便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。
【００１４】
＜第１の実施形態＞
以下、図面を参照して、本発明の第１の実施形態について詳細に説明する。図１は、本発明の第１の実施形態に係るデータ処理装置の一構成例を示すブロック図である。
【００１５】
図１において、１はプログラム等を格納するＲＯＭ、２はデータ処理装置を制御するＣＰＵ、３−１〜３−ｍはｍ個（但し、ｍは１以上の整数とする。）のデータ処理モジュール（プロセッサ）、６はＲＡＭ、４はデータ処理モジュール３−１〜３−ｍのＲＡＭ６へのアクセスを調停するアービタ（ａｒｂｉｔｅｒ）、５はＲＡＭインタフェース部である。尚、本実施形態におけるＲＡＭ６は、ＣＰＵ２と各データ処理モジュール３−１〜３−ｍによって共有されているが、ＣＰＵ２が別のＲＡＭを持つような構成であっても良い。
【００１６】
次に、上述した構成を有するデータ処理装置の処理動作について説明する。
【００１７】
ＣＰＵ２は、ＲＯＭ１に格納されているプログラムに従って、不図示のＩ／Ｏ等より処理すべきデータを受け取り、アービタ４、ＲＡＭインタフェース部５を経てＲＡＭ６へ当該データを格納する。次に、ＣＰＵ２は、データ処理モジュール３−１のコンフィギュレーションレジスタ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｒｅｇｉｓｔｅｒ）を設定し、データ処理モジュール３−１を動作させる。
【００１８】
データ処理モジュール３−１は所定の処理を実行し、上記コンフィギュレーションレジスタにて設定された、処理すべきデータの読み出しが終了するか、上記コンフィギュレーションレジスタにて設定された、処理したデータの書き込みが終了すると割り込みを発生し、ＣＰＵ２へ通知する。そして、ＣＰＵ２は、割り込みを受け付けると割り込み要因を解析し、上記データ処理モジュール３−１の処理すべきデータの読み出し終了の場合は、次の処理すべきデータの設定を行い、データ処理モジュール３−１の処理を続行させる。一方、上記データ処理モジュール３−１の処理したデータの書き込み終了の場合は、次の処理データの格納先の設定を行い、データ処理モジュール３−１の処理を続行させると共に次のデータ処理モジュール３−２のコンフィギュレーションレジスタを設定し、データ処理モジュール３−２を動作させる。
【００１９】
そして、データ処理モジュール３−２は所定の処理を実行し、上記コンフィギュレーションレジスタにて設定された、処理すべきデータの読み出しが終了するか、上記コンフィギュレーションレジスタにて設定された、処理したデータの書き込みが終了すると割り込みを発生し、ＣＰＵ２へ通知する。ＣＰＵ２は、割り込みを受け付けると割り込み要因を解析し、上記データ処理モジュール３−２の処理すべきデータの読み出し終了の場合は、次の処理すべきデータの設定を行い、データ処理モジュール３−２の処理を続行させる。一方、上記データ処理モジュール３−２の処理したデータの書き込み終了の場合は、次の処理データの格納先設定を行い、データ処理モジュール３−２の処理を続行させると共に次のデータ処理モジュール３−３のコンフィギュレーションレジスタを設定し、データ処理モジュール３−３を動作させる。
【００２０】
上述したように、本データ処理装置では、前の処理が終わった直後に次のデータ処理モジュールを起動することで、データ処理モジュール単位のパイプラインを構成することができる。
【００２１】
すなわち、本実施形態に係るデータ処理装置は、データを格納する格納手段（例えば、ＲＡＭ６）と、格納手段からデータを読み出し、データ処理を行った後に処理後のデータを格納手段に書き込む一連の処理を行う複数のデータ処理手段（例えば、データ処理モジュール３−１〜３−ｍ）と、複数のデータ処理手段のうち、所定のデータ処理手段を起動させる起動制御手段（例えば、ＣＰＵ２）と、起動した所定のデータ処理手段による格納手段へのアクセスを制御するアクセス制御手段（例えば、アービタ４）とを備えることを特徴とする。
【００２２】
また、上記データ処理装置では、上記データ処理手段が、格納手段からのデータ読み出し終了時、又は、格納手段へのデータ書き込み終了時に割り込み要求信号を出力し、起動制御手段が、割り込み要求信号に基づいて次のデータ処理手段を起動することを特徴とする。
【００２３】
図２は、本発明の第１の実施形態に係るデータ処理装置の動作の流れを説明するための図である。図２において、まず、ＣＰＵ２はデータＡのロードを開始する。データＡのロードが終了すると（Ｔ１００）、ＣＰＵ２はデータ処理モジュール３−１の処理を開始させる。そして、データ処理モジュール３−１の処理が終了すると（Ｔ１０１）、ＣＰＵ２は次のデータ処理モジュール３−２の処理を開始させると共に、データＢのロードを開始する。データＢのロードが終了すると（Ｔ２００）、ＣＰＵ２はデータ処理モジュール３−２の処理の終了判定を行い、データ処理モジュール３−２の処理が終了していた場合（Ｔ１０２）、データ処理モジュール３−１にデータＢの処理を開始させる。また、ＣＰＵ２はデータ処理モジュール３−３にデータＡの処理を開始させる。
【００２４】
このように、あるデータのロード（例えば、データＢのロード）が終了した時、２つ後のデータ処理モジュール（例えば、データ処理モジュール３−２）における処理（例えば、データＡの処理）の終了を判定し、当該２つ後のデータ処理モジュールの処理が終了していた場合は、次のデータ処理モジュール（例えば、データ処理モジュール３−１）にロードしたデータ（例えば、データＢ）の処理を開始させるようにする。また、１つ前のデータ処理モジュール（例えば、データ処理モジュール３−１）における処理（例えば、データＢの処理）の終了を判定し、当該１つ前のデータ処理モジュールの処理が終了していた場合は、データ処理モジュール（例えば、データ処理モジュール３−２）に当該データ（例えば、データＢ）の処理を開始させるようにする。以上の処理を全データの処理が終了するまで繰り返すことで、全体の処理を完結させる。
【００２５】
上記の例では、ＲＡＭ６におけるデータのロード領域及び各データ処理モジュールの処理後のデータ格納領域を固定にしたため、データのコヒーレンシ（ｃｏｈｅｒｅｎｃｙ）を保つには次のデータ処理モジュールの終了を待ってから、新たなデータの処理を開始する必要があった。しかし、各データ処理モジュールの処理後のデータ格納領域が順次更新されるような構成、例えば、１回の処理に必要な容量の２倍以上の容量を持つリングバッファのような構成においては、データのコヒーレンシを確保することができるので、図３に示すような効率的なデータ処理であるデータのパイプライン処理を実現することができる。
【００２６】
図３は、本発明の第１の実施形態に係るデータ処理装置における他の動作の流れを説明するための図である。
【００２７】
まず、ＣＰＵ２はデータＡのロードを開始する。データＡのロードが終了すると（Ｔ１００）、ＣＰＵ２はデータ処理モジュール３−１の処理を開始させると共に、データＢのロードを開始する。そして、データ処理モジュール３−１の処理が終了すると（Ｔ１０１）、ＣＰＵ２は次のデータ処理モジュール３−２の処理を開始させる。この時、データＢのロードが終了していた場合（Ｔ２００）、ＣＰＵ２はデータ処理モジュール３−１に次のデータの処理を開始させると共に、データＣのロードを開始する。一方、データＢのロードが終了していなかった場合はデータＢのロードの終了を待ち、データＢのロードが終了した後に、ＣＰＵ２はデータ処理モジュール３−１に次のデータの処理を開始させると共に、データＣのロードを開始する。
【００２８】
そして、データ処理モジュール３−２の処理が終了すると（Ｔ１０２）、ＣＰＵ２は次のデータ処理モジュール３−３の処理を開始させる。この時、データ処理モジュール３−１の処理が終了していた場合（Ｔ２０１）、ＣＰＵ２はデータ処理モジュール３−２に次のデータの処理を開始させる。一方、データ処理モジュール３−１の処理がまだ終了していなかった場合はデータ処理モジュール３−１の処理の終了を待ち、データ処理モジュール３−１の処理が終了した後に、ＣＰＵ２はデータ処理モジュール３−２に次のデータの処理を開始させる。
【００２９】
このように、あるデータ処理モジュール（例えば、データ処理モジュール３−２）における処理（例えば、データＢの処理）が終了した時に、連続する前後のデータ処理モジュール（例えば、処理モジュール３−１、３−３）におけるそれぞれのデータ処理の終了を判定し、直前のデータ処理モジュール（例えば、データ処理モジュール３−１）の処理（例えば、データＣの処理）が終了していた場合、当該データ処理モジュール（例えば、データ処理モジュールＢ）は次のデータ（例えば、データＣ）の処理を開始し、直後のデータ処理モジュール（例えば、データ処理モジュール３−３）における処理（例えば、データＡの処理）が終了していた場合は、直後のデータ処理モジュールに処理（例えば、データＢの処理）を開始させるようにする。以上の処理を全データの処理が終了するまで繰り返すことで、全体の処理を完結させる。
【００３０】
従って、各データ処理モジュールの処理時間がほぼ一致する場合は、データ処理モジュールでの待ち時間が殆どなくなり、非常に効率的なデータ処理を実行することができる。
【００３１】
図４は、本発明の第１の実施形態に係るデータ処理装置におけるデータ処理モジュール３−１〜３−ｍ（以下、「モジュール３」と称す。）の詳細な内部構成を説明するためのブロック図である。図４において、７はリード（Ｒｅａｄ）ＦＩＦＯ、８−１〜８−ｎ（但し、ｎは１以上の整数とする。）はサブモジュール、９はライト（Ｗｒｉｔｅ）ＦＩＦＯ、１０はアービタ、１１はリードアドレス生成部（Ｒｅａｄ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）、１２は割り込み制御部（Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）、１３はライトアドレス生成部（Ｗｒｉｔｅ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）である。
【００３２】
ＣＰＵ２は、モジュール３のコンフィギュレーションレジスタの設定により、リードアドレス生成部１１にリード開始アドレスとリード終了アドレスとを設定し、リードイネーブル（ｒｅａｄ  ｅｎａｂｌｅ）信号Ｒｅｎをセットする。また、ＣＰＵ２は、ライトアドレス生成部１１にライト開始アドレスとライト終了アドレスとを設定し、ライトイネーブル（ｗｒｉｔｅ  ｅｎａｂｌｅ）信号Ｗｅｎをセットする。
【００３３】
モジュール３におけるアービタ１０は、リードＦＩＦＯ７のバッファの空き容量Ｒｐ及びリードアドレス生成部１１のイネーブル信号Ｒｅｎを検出し、リードアドレスが有効（Ｒｅｎ＝１）であって、リードＦＩＦＯ７にデータが格納可能（Ｒｐ≧Ｒｎｕｍ）であれば、アービタ４へリードリクエスト（ＰＲＥＱ＝１、ＰＮＲＷ＝０、ＰＮＵＭ＝Ｒｎｕｍ、ＰＡＤＤ＝Ｒａｄ）を発行する。
【００３４】
一方、ライトＦＩＦＯ９のデータ蓄積数Ｗｐが所定のワード数以上（Ｗｐ≧Ｗｎｕｍ）になると、アービタ１０はライトアドレス生成部１３のイネーブル信号Ｗｅｎを検出し、ライトアドレスが有効（Ｗｅｎ＝１）であって、ライトＦＩＦＯ７よりデータが出力可能（Ｗｐ≧Ｗｎｕｍ）であれば、アービタ４へライトリクエスト（ＰＲＥＱ＝１、ＰＮＲＷ＝１、ＰＮＵＭ＝Ｗｎｕｍ、ＰＡＤＤ＝Ｗａｄ）を発行する。
【００３５】
そして、データ処理装置におけるアービタ４は、モジュール３からのリクエスト信号ＰＲＥＱを受け取ると、ＰＮＲＷでリード／ライトの判別を行い、ＰＮＵＭでワード数を、ＰＡＤＤでアドレスを検知する。ここで、ＣＰＵ２及び他のモジュールからのリクエストがない場合、アービタ４は、ＲＡＭインタフェース部５を通じてＲＡＭ６の該当データのアクセスを開始する。また、リクエストが受け付けられると、アービタ４は受領信号ＰＡＣＫをリクエスト元のモジュール３に返す。一方、ＣＰＵ２及び他のモジュールからのリクエストがある場合は、優先順位に従ってリクエストを受け付ける。
【００３６】
アービタ１０は、アービタ４から受領信号ＰＡＣＫを受け取ると、リードリクエストの場合は受領信号Ｒａｃｋをリクエスト元のリードアドレス生成部１１に返す。リードアドレス生成部１１は、上記受領信号Ｒａｃｋを受け取ると次のアドレスを生成する。尚、リクエストしたアドレスが前記リード終了アドレスの場合、リードアドレス生成部１１は、リードイネーブル信号Ｒｅｎをリセットして、リード終了信号Ｒｅｎｄを割り込み制御部１２に出力する。
【００３７】
一方、アービタ１０は、ライトリクエストの場合は受領信号Ｗａｃｋをリクエスト元のライトアドレス生成部１３に返す。ライトアドレス生成部１３は、上記受領信号Ｗａｃｋを受け取ると次のアドレスを生成する。尚、リクエストしたアドレスが前記ライト終了アドレスの場合、ライトアドレス生成部１３は、ライトイネーブル信号Ｗｅｎをリセットして、ライト終了信号Ｗｅｎｄを割り込み制御部１２に出力する。
【００３８】
割り込み制御部１２は、前記コンフィギュレーションレジスタによってリード終了割り込みマスク及びライト終了割り込みマスクの設定が可能になっている。そして、割り込み制御部１２は、各割り込みマスクの設定が割り込みイネーブルになっている場合は、上記リード終了信号Ｒｅｎｄまたはライト終了信号Ｗｅｎｄによって割り込み信号ＩＮＴを生成し、ＣＰＵ２へ通知する。ＣＰＵ２は、上記割り込み信号ＩＮＴを受け付けると、割り込み制御部１２のステータスを読み取って、割り込み要因がリード終了の場合は、上記リード終了割り込みマスクをリセットして割り込みを解除する。また、さらに処理を続行する場合、ＣＰＵ２は、リード開始アドレスとリード終了アドレスの再設定、リードイネーブル信号のセット等の処置を行った後、上記リード終了割り込みマスクをセットする。
【００３９】
同様に、割り込み要因がライト終了の場合、ＣＰＵ２は、上記ライト終了割り込みマスクをリセットして割り込みを解除する。さらに処理を続行する場合、ＣＰＵ２は、ライト開始アドレスとライト終了アドレスの再設定、ライトイネーブル信号のセット等の処置を行った後、上記ライト終了割り込みマスクをセットする。
【００４０】
次に、ＲＡＭ６よりデータが読み出されるとアービタ４はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュール３に返す。リクエスト元のモジュール３では、アービタ１０よりリードＦＩＦＯ７へデータ有効信号Ｒｖａｌｉｄを返す。リードＦＩＦＯ７は、データ有効信号Ｒｖａｌｉｄがセットされている期間、ＲＡＭデータ出力信号ＰＤＩＮ上のデータを格納する。この操作により、ＲＡＭ６のデータがリードＦＩＦＯ７へ格納される。
【００４１】
一方、ＲＡＭ６にデータを書き込む場合は、ＲＡＭ６の書き込みタイミングに合わせてアービタ４はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュール３に返す。リクエスト元のモジュール３では、アービタ１０よりライトＦＩＦＯ９へデータ有効信号Ｗｖａｌｉｄを返す。ライトＦＩＦＯ９は、データ有効信号Ｗｖａｌｉｄがセットされている期間に、ＲＡＭデータ入力信号ＰＤＯＵＴ上に書き込むデータを出力する。この操作により、ライトＦＩＦＯ９のデータがＲＡＭ６へ格納される。
【００４２】
リードＦＩＦＯ７は、ＦＩＦＯが空でない時は有効信号ｖａｌｉｄ＿０をセットし、ＦＩＦＯが空の時は有効信号ｖａｌｉｄ＿０をリセットする。また、サブモジュール８−１からの保持要求信号ｓｔａｌｌ＿０がセットされていなければ、リードＦＩＦＯ７は格納されたデータをクロックに同期して出力する。サブモジュール８−１からの保持要求信号ｓｔａｌｌ＿０がセットされている場合は、データを更新しない。
【００４３】
そして、サブモジュール８−１は、上記有効信号ｖａｌｉｄ＿０がセットされているデータのみを受け取る。尚、データの受け取りが不可能の場合は、保持要求信号ｓｔａｌｌ＿０をセットし、リードＦＩＦＯ７の出力をホールドする。
【００４４】
図４に示すように、本実施形態では、モジュール３の内部は１つ以上のサブモジュール８−１〜８−ｎによって構成されており、各サブモジュール間では、上記サブモジュール８−１と同様の動作（すなわち、有効信号ｖａｌｉｄと保持要求信号ｓｔａｌｌによるハンドシェーク）によってデータの受け渡しが行われる。
【００４５】
すなわち、本実施形態では、データ処理手段（例えば、モジュール３）が、格納手段（例えば、ＲＡＭ６）よりデータを読み出すためのアドレスを生成する第１のアドレス生成手段（例えば、リードアドレス生成部１１）と、格納手段から上記アドレスに対応させて読み出されたデータを格納する第１のデータ保持手段（例えば、リードＦＩＦＯ７）と、データを処理する少なくとも１つ以上の第２のデータ処理手段（サブモジュール８−１〜８−ｎ）と、最終段の第２のデータ処理手段（例えば、サブモジュール８−ｎ）で処理された出力データを格納する第２のデータ保持手段（例えば、ライトＦＩＦＯ９）と、出力データを格納手段に書き込むためのアドレスを生成する第２のアドレス生成手段（例えば、ライトアドレス生成部１３）と、上記第１のデータ保持手段にデータが格納可能、又は上記第２のデータ保持手段からデータが出力可能な場合、アクセス制御手段（例えば、アービタ４）に対して格納手段へのアクセスを要求する第２のアクセス制御手段（例えば、アービタ１０）とを備えることを特徴とする。
【００４６】
また、本実施形態では、上記データ処理手段が、格納手段からの最終データの読み出し終了時、又は格納手段への最終データの書き込み終了時に割り込み要求信号を出力する要求手段（例えば、割り込み制御部１２）をさらに備えることを特徴とする。
【００４７】
本実施形態では、データ処理モジュールを入力ＦＩＦＯ、入力アドレス生成部、出力ＦＩＦＯ、出力アドレス生成部、アービタにてカプセル化し、共有のＲＡＭ上にてデータの受け渡しを行うようにしたので、データ処理モジュールの追加・変更が容易になる。また、モジュール単位で起動制御が可能なので、モジュール単位のパイプラインの構成を処理内容やリソースに応じて適応的に変更することができる。これにより、コスト、パフォーマンス、消費電力の最適化が容易になる。
【００４８】
図５は、本発明の第１の実施形態におけるサブモジュール間Ｉ／Ｆの動作を示すタイミングチャートである。
【００４９】
図５に示すように、データ送信側のサブモジュールは、データが出力可能であればクロックｃｌｋの立ち上がりに同期して、データ信号ｄ１及び有効信号ｖａｌｉｄをセットする（Ｔ１）。そして、データ送信側のサブモジュールは、次のクロックｃｌｋの立ち上がりで受信側からの保持要求信号ｓｔａｌｌがセットされていなければデータが受信されたとみなし、次のデータが出力可能であればデータ信号ｄａｔａ及び有効信号ｖａｌｉｄをセットする（Ｔ２）。
【００５０】
また、データ送信側のサブモジュールは、次のデータが出力可能でなければ有効信号ｖａｌｉｄをリセットする（Ｔ３）。一方、データ送信側のサブモジュールは、次のクロックｃｌｋの立ち上がりで受信側からの保持要求信号ｓｔａｌｌがセットされていたら、データが受信されなかったとみなし、データ信号ｄａｔａ及び有効信号ｖａｌｉｄをホールドする（Ｔ７）。
【００５１】
尚、受信側からの保持要求信号ｓｔａｌｌがセットされていても有効信号ｖａｌｉｄがセットされていなければ（Ｔ８）、それは無効データであるので、データ送信側のサブモジュールでは、データ信号ｄａｔａ及び有効信号ｖａｌｉｄはホールドされずに次の有効データが出力される（Ｔ９）。即ち、有効信号ｖａｌｉｄがセットされていない時の保持要求信号ｓｔａｌｌは無視される。
【００５２】
ライトＦＩＦＯ９は、ＦＩＦＯに空きがあれば、サブモジュール８−ｎからの有効信号ｖａｌｉｄ＿ｎがセットされた時のデータ信号ｄａｔａ＿ｎを当該ＦＩＦＯに格納する。一方、ＦＩＦＯに空きがなければ、保持要求信号ｓｔａｌｌ＿ｎをセットし、サブモジュール８−ｎの出力をホールドさせる。
【００５３】
図６は、本発明の第１の実施形態に係るデータ処理装置のモジュール３内部のアドレス生成部（すなわち、リードアドレス生成部１１やライトアドレス生成部１３）の詳細な構成を説明するためのブロック図である。尚、図６において、１４はセレクタ、１５はシーケンサ、１６は加算部、１７はレジスタ、１８は比較部である。
【００５４】
まず、ＣＰＵ２によって開始アドレスがレジスタ１７にセットされる。シーケンサ１５は、リクエスト受領信号ａｃｋによって状態遷移し、状態に応じてセレクタ１４のアドレス差分値を選択する。例えば、シーケンサ１５は、内部に１つ以上のカウンタを持ち、受領信号ａｃｋによって該当カウンタがカウントアップ又はカウントダウンし、各カウンタのキャリー（ｃａｒｒｙ）又はボロー（ｂｏｒｒｏｗ）によってセレクタ１４を制御する。従って、所定回数のアクセス毎にカウンタ値が変化するので、セレクタより出力されるアドレス差分値が切り替わる。
【００５５】
尚、本実施形態においてはＲＡＭ６への転送効率アップのため、複数ワード数単位でアクセスするようにする。従って、アクセス単位内に不要なデータが存在する場合（即ち、アクセス単位内でアドレスが不連続となる場合）は、アクセス単位のワード数ｎｕｍを変更して、不要なアクセスを防止するようにする。
【００５６】
選択されたアドレス差分値は加算部１６において直前のアドレスに加算され、受領信号ａｃｋによってレジスタ１７に保持される。レジスタ１７の出力（即ち、アドレス生成部のアドレス出力）は比較部１８において終了アドレスと比較され、レジスタ１７の出力と終了アドレスとが一致した場合、受領信号ａｃｋによって終了信号がセットされる。
【００５７】
セレクタ１４に入力されるアドレス差分値Ｄ１〜Ｄｋ（但し、ｋは１以上の整数とする。）及びシーケンサ１５のパラメータ（例えば、カウンタの進数等）は、前記コンフィギュレーションレジスタによって設定される。アドレス差分値のＭＳＢ（最上位ビット）と出力アドレスのＭＳＢの重みを一致させることにより、負の差分値を表現することができる。尚、バーストモードのように複数ワードにまとめてアクセスする場合もあるため、アドレス差分値と出力アドレスのビット数は必ずしも一致するとは限らない。また、通常、アドレス差分値の数は、シーケンサ１５内のカウンタ数＋１である。
【００５８】
すなわち、本実施形態では、第１又は第２のアドレス生成手段（例えば、リードアドレス生成部１１やライトアドレス生成部１３）が、アクセス要求アドレス（開始アドレス）を設定する設定手段（例えば、レジスタ１７）と、複数のアドレス差分値から１つのアドレス差分値を選択する選択手段（例えば、セレクタ１４）と、選択されたアドレス差分値とアクセス要求アドレスとを用いて新たなアクセス要求アドレスを生成する生成手段（例えば、加算部１６）と、選択手段によるアドレス差分値の選択を制御する制御手段（例えば、シーケンサ１５）とを備えることを特徴とする。
【００５９】
図７は、本発明の第１の実施形態に係るアドレス生成部におけるパラメータを説明する図である。
【００６０】
例えば、図７に示すように、ブロック状にデータのアクセスを行う２次元アドレッシングの場合、レジスタ１７には、まず、開始アドレスＡｓがロードされる。そして、シーケンサ１５は、アドレス差分値Ｄ１を選択するようにセレクタ１４を制御する。セレクタ１４は、アドレス差分値Ｄ１を選択しているので、加算部１６の出力はＡｓ＋Ｄ１となり、次のアドレスが生成される。レジスタ１７は、受領信号ａｃｋが返ってくると、次のアドレスであるＡｓ＋Ｄ１を出力する。ここで、水平方向のアクセス数をｗとすると、アドレス生成部は、上記操作をｗ−１回繰り返す。そして、ｗ回目のアドレス生成において、シーケンサ１５は、アドレス差分値Ｄ２を選択するようにセレクタ１４を制御する。従って、ｗ回目のアドレスはＡｓ＋（ｗ−１）・Ｄ１＋Ｄ２となって、次のラインの先頭データＰ１，０がアクセスされる。
【００６１】
次に受領信号ａｃｋが返ってくると、シーケンサ１５はアドレス差分値Ｄ１を選択するようにセレクタ１４を制御する。このように、シーケンサ１５はｗ回のアクセス毎に１回ずつアドレス差分値Ｄ２を選択し、それ以外ではアドレス差分値Ｄ１を選択するようにセレクタ１４を制御する。従って、シーケンサ１５では、ｗ−１をロードして受領信号ａｃｋによってカウンタをデクリメント（−１）し、カウンタが０になった時に次の受領信号ａｃｋによってｗ−１をリロードするｗ進カウンタを構成し、ｗ進カウンタが０になった時にアドレス差分値Ｄ２を選択する信号を生成すればよい。
【００６２】
従って、この２次元アドレッシングの場合のアドレス生成部のパラメータは、開始アドレスＡｓ、終了アドレスＡｅ、水平方向のアクセス数ｗ（設定値はｗ−１）、２つのアドレス差分値Ｄ１、Ｄ２の合計５つとなる。
【００６３】
例えば、図７に示すように、アドレスが隣接している場合は、Ｄ１＝１となる。また、右から左へアクセスする場合は、Ｄ１＝−１とすれば良い。同様に、９０°回転や、飛び飛びにアクセスするような場合においても、上記パラメータを適切に設定することにより可能となる。但し、９０°回転の場合は、水平方向のアクセス数ｗの代わりに垂直方向のアクセス数ｈを用いる。
【００６４】
図８は、本発明の第１の実施形態に係るアドレス生成部の別のシーケンスを説明する図である。
【００６５】
例えば、図８に示すようなＲＧＢ線順次データを点順次データに変換するような３次元アドレッシングの場合、シーケンサ１５はアドレス差分値Ｄ１を２回選択した後、アドレス差分値Ｄ２を１回選択するようにセレクタ１４を制御する。このシーケンスをｗ−１回繰り返すと、シーケンサ１５はアドレス差分値Ｄ３を選択するようにセレクタ１４を制御する。従って、シーケンサ１５は内部に、ｃ−１（本実施形態では、プレーン数ｃ＝３）をロードし、受領信号ａｃｋによって、カウンタを−１し、カウンタが０になった時に次の受領信号ａｃｋによってｃ−１をリロードするｃ進カウンタと、ｗ−１をロードし、ｃ進カウンタが０の時の受領信号ａｃｋによって、カウンタを−１し、カウンタが０かつｃ進カウンタが０の時の受領信号ａｃｋによってｗ−１をリロードするｗ進カウンタを構成し、ｃ進カウンタとｗ進カウンタが共に０の時はアドレス差分値Ｄ３を、ｃ進カウンタのみ０の時はアドレス差分値Ｄ２を、それ以外ではアドレス差分値Ｄ１を選択する信号を生成すればよい。
【００６６】
従って、この３次元アドレッシングの場合のアドレス生成部のパラメータは、開始アドレスＡｓ、終了アドレスＡｅ、プレーン数ｃ（設定値はｃ−１）、水平方向のアクセス数ｗ（設定値はｗ−１）、３つのアドレス差分値Ｄ１、Ｄ２、Ｄ３の合計７つとなる。
【００６７】
尚、各データ処理モジュールのインタフェースを共通化するため、リードＦＩＦＯのデータ入力、ライトＦＩＦＯのデータ出力はＲＡＭインタフェース部５に合わせておく。また、モジュール内部のサブモジュールとのデータ線のビット数が合わない場合は、サブモジュール８−１及びサブモジュール８−ｎにて変換する。ここで、ＲＡＭインタフェース部５のデータ線のビット数を３２ビットとするとＦＩＦＯのデータ線のビット数は３２ビットとなる。
【００６８】
例えば、ＲＧＢ２４ビットデータよりデバイスカラー（例えば、一般的なプリンタにおける色材の色であるＣ／Ｍ／Ｙ／Ｋのいずれか）８ビットを生成するモジュールの場合、サブモジュールの構成は、ＲＧＢアンパック→入力γ変換→色変換→パッキングの４つになる。即ち、リードＦＩＦＯの出力データは、ＲＧＢアンパック（ｕｎｐａｃｋｅｄ）処理部にてＲＧＢ各８ビットの切り出しを行い、入力γ変換部にてＲＧＢ各８ビットを各１０ビットに変換し、色変換部にて例えば８ビットのシアンデータに変換し、パッキング処理部にて３２ビットデータにパッキングしてライトＦＩＦＯに格納する。
【００６９】
上述したように、有効信号ｖａｌｉｄと保持要求信号ｓｔａｌｌとによるハンドシェークがあるので、このようなビット数の変換は容易に実現できる。また、このようなビット数変換処理部を部品化しておけば、開発が容易になるだけでなく、テスト対象のサブモジュールを上記ビット数変換処理部でラッピングすることにより、モジュールのテストベンチでサブモジュール単体のテストも実行することができる。
【００７０】
さらに、サブモジュールに入力データをそのまま出力するバイパスモードを設けることで、途中経過のデータ出力も可能となる。これにより、任意のサブモジュールの追加が可能になる。例えば、上記の色変換モジュールの例において、入力γ変換と色変換との間に、新たにＲＧＢ−ＲＧＢ変換を追加が必要になった場合、まず、１回目の色変換モジュールの処理で色変換以降をバイパスして入力γ変換の出力をＲＡＭ６に格納する。次に、ソフト等にて追加の処理であるＲＧＢ−ＲＧＢ変換を行った結果をＲＡＭ６に格納する。そして、２回目の色変換モジュールの処理で入力γ変換をバイパスして色変換以降の処理を実行する。このように、サブモジュールの追加や変更が必要になった場合、従来はデータ処理モジュール全体が使用不可になってしまったが、バイパスモードにて処理を分断することで、データ処理モジュールを有効利用することができる。
【００７１】
このように、本発明の第１の実施形態によれば、データ処理モジュールを入力ＦＩＦＯ、入力アドレス生成部、出力ＦＩＦＯ、出力アドレス生成部、アービタと合わせてカプセル化し、共有のＲＡＭ上にてデータの受け渡しを行うようにしたので、データ処理モジュールの追加・変更が容易になった。
【００７２】
また、データ処理モジュール内部のサブモジュールにおいて、タイミングは上記有効信号ｖａｌｉｄと保持要求信号ｓｔａｌｌによるハンドシェークのみ考慮すればよいので、設計が容易である。
【００７３】
上記、カプセル化のためのＦＩＦＯ、アドレス生成部、アービタの基本構成はほぼ同じであるので、テストベンチも含めて、各データ処理モジュールで共通に利用可能である。なお、各ＦＩＦＯの段数、アドレス生成部のカウンタ及びパラメータは各データ処理モジュールに容易に最適化できる。例えば、アドレス生成部は次元数とカウンタのビット数で処理がほぼ確定するが、次元数及びカウンタのビット数の変更もハードウェア記述言語による論理合成を用いることで容易に変更できる。
【００７４】
また、あらかじめ複数のポートをアービタ４に設定しておけば、設定ポート数以下のデータ処理モジュールの追加・変更によるアービタ４の変更はほとんど発生しない。
【００７５】
さらに、モジュールで処理が完結しているので、モジュール単位でクロックドメインを分割することができる。従って、使用しないデータ処理モジュールのクロックの供給を停止したり、処理が早く終わってしまったモジュールのクロックの供給を停止したりすることにより、消費電力の削減が可能である。また、図３に示すようなデータ処理パイプラインを構成する際、クロック周期を調整し、各データ処理モジュールで処理時間を合わせることで、回路の無駄な高速化が排除され、ハード量（例えば、ＬＳＩの面積）を削減することができ、消費電力のさらなる削減が可能である。
【００７６】
さらにまた、データ処理モジュールのシーケンス（処理順序）はソフトウェア処理により制御するので、場合に応じて必要な処理を最適な順序をデータ処理パイプラインで構成することができる。
【００７７】
さらにまた、各データ処理モジュールの共有メモリ上のバッファサイズを任意に調整することが可能であるので、処理内容に応じたメモリアロケーションが可能である。また、上述したように、メモリ占有量とパフォーマンスのトレードオフもソフトウェアで制御することができる。
【００７８】
＜第２の実施形態＞
図９は、本発明の第２の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。図９において、１９−１〜１９−ｉ（但し、ｉは１以上の整数とする。）はリードＦＩＦＯ、２０はアービタ、２１−１〜２１−ｎはサブモジュール、２２−１〜２２−ｉはリードアドレス生成部、２３はリード割り込み制御部である。以下、第１の実施形態と異なる部分のみ説明する。
【００７９】
本実施形態では、サブモジュール２１−１は複数の不連続なアドレスに格納されているデータを取り扱うものとする。このため、本実施形態におけるモジュールは、複数のリードＦＩＦＯ１９−ｉ及び各リードＦＩＦＯ１９−ｉに対応した複数のリードアドレス生成部２２−ｉを備える。例えば、画像におけるブロック符号化のように同時に複数ラインのデータが必要な場合、各ラインに対応したＦＩＦＯ及びリードアドレス生成部を設ける。これにより、ラインメモリが不要になり、任意の画像幅（水平方向の画素数）に対応することができるようになる。尚、各リードアドレス生成部２２−１〜２２−ｉ及び各リードＦＩＦＯ１９−１〜１９−ｉは、以下では対等に取り扱うので、以下、リードアドレス生成部２２−ｉ及びリードＦＩＦＯ１９−ｉを例に説明する。
【００８０】
ＣＰＵ２はモジュール３のコンフィギュレーションレジスタの設定により、リードアドレス生成部２２−ｉにリード開始アドレスとリード終了アドレスを設定し、リードイネーブル信号Ｒｅｎ＿ｉをセットする。
【００８１】
アービタ２０は、リードＦＩＦＯ１９−ｉの空き容量Ｒｐ−ｉ及びリードアドレス生成部２２−ｉのイネーブル信号Ｒｅｎ＿ｉを検出し、リードアドレスが有効（Ｒｅｎ＿ｉ＝１）であってリードＦＩＦＯ１９−ｉにデータが格納可能（Ｒｐ＿ｉ≧Ｒｎｕｍ＿ｉ）であれば、アービタ４へリードリクエストを発行する。
【００８２】
次に、アービタ２０は、アービタ４から受領信号ＰＡＣＫを受け取ると、受領信号Ｒａｃｋ＿ｉをリクエスト元のリードアドレス生成部２２−ｉに返す。リードアドレス生成部２２−ｉは、上記受領信号Ｒａｃｋ＿ｉを受け取ると次のアドレスを生成する。尚、リクエストしたアドレスが前記リード終了アドレスの場合は、リードイネーブル信号Ｒｅｎ＿ｉをリセットし、リード終了信号Ｒｅｎｄ＿ｉをリード割り込み制御部２３に出力する。
【００８３】
リード割り込み制御部２３では、各リードアドレス生成部２２−１〜２２−ｉの全てが終了した場合、全ての入力信号のリードが終了したと判定し、リード終了信号Ｒｅｎｄを割り込み制御部１２に出力する。尚、この場合、リード終了信号Ｒｅｎｄは、上記各リードアドレス生成部２２−１〜２２−ｉからのリード終了信号Ｒｅｎｄ＿１〜Ｒｅｎｄ＿ｉのＡＮＤ（論理積）によって生成する。或いは、いずれか１つ以上のリードアドレス生成部でのリードが終了した時に割り込みを生成する構成としても良い。この場合は、どのリードアドレス生成部が終了したのかを伝えるステータスと、すでに終了しているリードアドレス生成部の割り込みを解除するための割り込みマスクを追加し、各リードアドレス生成部２２−１〜２２−ｉのリード終了信号Ｒｅｎｄ＿１〜Ｒｅｎｄ＿ｉを対応する上記割り込みマスクでＡＮＤした信号のＯＲをリード終了信号Ｒｅｎｄとすればよい。
【００８４】
次に、ＲＡＭ６よりデータが読み出されると、アービタ４はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュール（すなわち、図９に示されるモジュール）のアービタ２０に返す。リクエスト元のモジュールでは、アービタ２０よりリクエスト元のリードＦＩＦＯ１９−ｉへデータ有効信号Ｒｖａｌｉｄ＿ｉを返す。リードＦＩＦＯ１９−ｉは、データ有効信号Ｒｖａｌｉｄ＿ｉがセットされている期間、ＲＡＭデータ出力信号ＰＤＩＮ上のデータを格納する。この操作により、ＲＡＭ６のデータがリードＦＩＦＯ１９−ｉへ格納される。すなわち、本実施形態では、サブモジュール２１−１が、複数のリードＦＩＦＯ１９−１〜１９−ｉの全てが有効信号をセットしたことを条件としてデータ処理を行うことを特徴とする。
【００８５】
リードＦＩＦＯ１９−ｉは、ＦＩＦＯが空でない時は有効信号Ｒｖａｌｉｄ＿ｉをセットし、ＦＩＦＯが空の時は有効信号Ｒｖａｌｉｄ＿ｉをリセットする。サブモジュー２１−１からの保持要求信号ｓｔａｌｌ＿０がセットされていなければ、リードＦＩＦＯ１９−ｉは、格納されたデータをクロックに同期して出力する。サブモジュール２１−１からの保持要求信号ｓｔａｌｌ＿０がセットされている場合、リードＦＩＦＯ１９−ｉはデータを更新しない。
【００８６】
サブモジュール２１−１は、上記有効信号Ｒｖａｌｉｄ＿ｉがセットされているデータのみを受け取る。尚、データの受け取りが不可能の場合、サブモジュール２１−１は、保持要求信号ｓｔａｌｌ＿０をセットし、リードＦＩＦＯ１９−ｉの出力をホールドする。通常、サブモジュール２１−１は、全リードＦＩＦＯ１９−１〜１９−ｉのデータが揃うまで保持要求信号ｓｔａｌｌ＿０をセットし、各リードＦＩＦＯ１９−１〜１９−ｉの出力Ｒｄａｔａ＿１〜Ｒｄａｔａ＿ｉの同期化を行う。
【００８７】
このように、本発明の第２の実施形態によれば、複数のリードＦＩＦＯ及び各リードＦＩＦＯに対応した複数のリードアドレス生成部を設けることで、複数の不連続なアドレスに格納されているデータを取り扱うサブモジュールの導入においてもモジュールのインタフェースを変える必要はなくなる（同一にすることができる）。従って、前記第１の実施形態と同様の効果が得られる。また、リードアドレス生成部とリードＦＩＦＯを１対１対応にしたので、ＲＡＭ６へのアクセスの連続性が高まり、ＲＡＭのバス使用効率がアップする。
【００８８】
＜第３の実施形態＞
図１０は、本発明の第３の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。図１０において、２４はリードバッファ（Ｒｅａｄ  Ｂｕｆｆｅｒ）、２５−１〜２５−ｎはサブモジュール、２６はリードアドレス生成部である。以下、第１、第２の実施形態と異なる部分のみ説明する。
【００８９】
尚、本実施形態においても前記第２の実施形態と同様に、サブモジュール２５は、複数の不連続なアドレスに格納されているデータを取り扱うものとする。但し、本実施形態においては、例えば、画像におけるブロック符号化のように、上記不連続アドレス間に一定の規則性があるものとする。
【００９０】
ＣＰＵ２は、モジュール３のコンフィギュレーションレジスタの設定により、リードアドレス生成部２６にリード開始アドレスとリード終了アドレスとを設定し、リードイネーブル信号Ｒｅｎをセットする。
【００９１】
アービタ１０は、リードバッファ２４の空き容量Ｒｐ及びリードアドレス生成部２６のイネーブル信号Ｒｅｎを検出し、リードアドレスが有効（Ｒｅｎ＝１）であってリードバッファ２４にデータが格納可能（Ｒｐ≧Ｒｎｕｍ）であれば、アービタ４へリードリクエストを発行する。
【００９２】
次に、アービタ１０は、アービタ４から受領信号ＰＡＣＫを受け取ると、受領信号Ｒａｃｋをリクエスト元のリードアドレス生成部２６に返す。リードアドレス生成部２６は、上記受領信号Ｒａｃｋを受け取ると次のアドレスを生成する。なお、リクエストしたアドレスが前記リード終了アドレスの場合は、リードイネーブル信号Ｒｅｎをリセットし、リード終了信号Ｒｅｎｄを割り込み制御部１２に出力する。
【００９３】
次に、ＲＡＭ６よりデータが読み出されると、アービタ４はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュールに返す。リクエスト元のモジュールでは、アービタ１０よりリクエスト元のリードバッファ２４へデータ有効信号Ｒｖａｌｉｄを返す。リードバッファ２４はデータ有効信号Ｒｖａｌｉｄがセットされている期間、ＲＡＭデータ出力信号ＰＤＩＮ上のデータを格納する。この操作により、ＲＡＭ６のデータがリードバッファ２４へ格納される。
【００９４】
リードバッファ２４は、サブモジュール２５の処理に必要なデータが揃った時に有効信号Ｒｖａｌｉｄをセットし、データの収集が不十分な場合は有効信号Ｒｖａｌｉｄをリセットする。また、サブモジュール２５からの保持要求信号ｓｔａｌｌ＿０がセットされていなければ、リードバッファ２４はサブモジュール２５の処理に必要なデータをクロックに同期して出力する。一方、サブモジュール２５からの保持要求信号ｓｔａｌｌ＿０がセットされている場合、リードバッファ２４はデータを更新しない。サブモジュール２５は、上記有効信号Ｒｖａｌｉｄがセットされているデータのみを受け取る。尚、データの受け取りが不可能の場合は、保持要求信号ｓｔａｌｌ＿０をセットし、リードバッファ２４の出力をホールドする。
【００９５】
リードバッファ２４は、サブモジュール２５が同時に必要とするデータ分のバッファを持っており、上記Ｒｖａｌｉｄに従ってＲＡＭ６より読み出されたデータを順番にバッファに格納してゆく。尚、上記バッファは読み出しと書き込みとの競合を避けるため、ダブルバッファ構成となっているものとする。また、１つのバッファは、所定のバースト長に対応した容量（例えば、４ライン分のデータにアクセスする場合はバースト長×４）を持っている。これにより、バーストアクセスが可能になり、ＲＡＭ６のバス使用効率がアップする。
【００９６】
尚、リードアドレス生成部２６は、図６と同じ構成をとるものとする。また、例えば、上述のように４ライン分のデータをアクセスする場合、第２の実施形態で説明したリードアドレス生成部２２で用いた２次元アクセスに必要なアドレス差分値をＤ１、Ｄ２、水平方向画素数をｗとし、１ライン分のアドレス差分をＤ３とすると、シーケンサ１５は１ライン分のアドレス差分Ｄ３を３回選択した後、アドレス差分値Ｄ４＝−３・Ｄ３＋Ｄ１を１回選択するようにセレクタ１４を制御する。このシーケンスをｗ−１回繰り返し、ｗ回目では、シーケンサ１５はアドレス差分値Ｄ４の代わりにＤ２を選択するようにセレクタ１４を制御するようにする。
【００９７】
このように、リードアドレス生成部２２で必要なアドレス差分値の数を２つ、必要なカウンタの数を１つとすると、本実施形態に係るリードアドレス生成部２６で必要なアドレス差分値の数は３つとなり、また必要なカウンタの数は２つとなる。第２の実施形態に係るリードアドレス生成部２２のカウンタ及び差分値を１セット増やすことで１つに統合できる。
【００９８】
このように、本発明の第３の実施形態によれば、１つのバッファを所定の（バースト長）×（サブモジュールが１つのデータ処理に必要なデータ数）に対応した容量のダブルバッファでリードバッファ２４を構成し、リードアドレス生成部２６の次元数を１つ上げることで、複数の不連続なアドレスに格納されているデータを取り扱うサブモジュールの導入においてもモジュールのインタフェースを変える必要はなくなる（同一にすることができる）。従って、前記第１の実施形態と同様の効果が得られる。また、リードアドレス生成部を１つに統合したことにより、処理の簡略化を図ることができる。
【００９９】
＜第４の実施形態＞
図１１は、本発明の第４の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。図１１において、２７−１〜２７−ｎはサブモジュール、２８−１〜２８−ｊ（但し、ｊは１以上の整数とする。）はライトＦＩＦＯ、２９はアービタ、３０はライト割り込み制御部、３１−１〜３１−ｊはライトアドレス生成部である。以下、第１の実施形態と異なる部分のみ説明する。
【０１００】
本実施形態においては、サブモジュール２７−ｎは複数の不連続なアドレスに格納するデータを出力するものとする。このため、本実施形態に係るモジュール３は、複数のライトＦＩＦＯ２８−１〜２８−ｊ及び各ライトＦＩＦＯに対応した複数のライトアドレス生成部３１−１〜３１−ｊを備える。例えば、画像におけるブロック復号化のように同時に複数ラインのデータを出力する場合、各ラインに対応したライトＦＩＦＯ２８−ｊ及びライトアドレス生成部３１−ｊを設ける。これにより、ラインメモリが不要になり、任意の画像幅（水平方向の画素数）に対応することができるようになる。尚、各ライトアドレス生成部３１−１〜３１−ｊ及び各ライトＦＩＦＯ２８−１〜２８−ｊは、以下では対等に取り扱うので、以下、ライトアドレス生成部３１−ｊ及びライトＦＩＦＯ２８−ｊを例に説明する。
【０１０１】
ＣＰＵ２は、モジュール３のコンフィギュレーションレジスタの設定により、ライトアドレス生成部３１−ｊにライト開始アドレスとライト終了アドレスを設定し、ライトイネーブル信号Ｗｅｎ＿ｊをセットする。
【０１０２】
アービタ２９は、ライトＦＩＦＯ２８−ｊの占有容量Ｗｐ−ｊ及びライトアドレス生成部３１−ｊのイネーブル信号Ｗｅｎ＿ｊを検出し、ライトアドレスが有効（Ｗｅｎ＿ｊ＝１）であってライトＦＩＦＯ２８−ｊのデータが出力可能（Ｗｐ＿ｊ≧Ｗｎｕｍ＿ｊ）であれば、アービタ４へライトリクエストを発行する。
【０１０３】
次に、アービタ２９は、アービタ４から受領信号ＰＡＣＫを受け取ると、受領信号Ｗａｃｋ＿ｊをリクエスト元のライトアドレス生成部３１−ｊに返す。ライトアドレス生成部３１−ｊは、上記受領信号Ｗａｃｋ＿ｊを受け取ると次のアドレスを生成する。尚、リクエストしたアドレスが前記ライト終了アドレスの場合、ライトアドレス生成部３１−ｊは、ライトイネーブル信号Ｗｅｎ＿ｊをリセットし、ライト終了信号Ｗｅｎｄ＿ｊをライト割り込み制御部３０に出力する。
【０１０４】
ライト割り込み制御部３０では、各ライトアドレス生成部３１−１〜３１−ｊの全てが終了した場合、全ての出力信号のライトが終了したと判定し、ライト終了信号Ｗｅｎｄを割り込み制御部１２に出力する。尚、この場合、ライト終了信号Ｗｅｎｄは、上記各ライトアドレス生成部３１−１〜３１−ｊからのライト終了信号Ｗｅｎｄ＿１〜Ｗｅｎｄ＿ｊのＡＮＤ（論理積）によって生成する。或いは、いずれか１つ以上のライトアドレス生成部でのライトが終了した時に割り込みを生成するような構成としても良い。この場合は、どのライトアドレス生成部が終了したのかを伝えるステータスと、すでに終了しているライトアドレス生成部の割り込みを解除するための割り込みマスクを追加し、各ライトアドレス生成部３１−１〜３１−ｊのライト終了信号Ｗｅｎｄ＿１〜Ｗｅｎｄ＿ｊを対応する上記割り込みマスクでＡＮＤした信号のＯＲをライト終了信号Ｗｅｎｄとすればよい。
【０１０５】
次に、ＲＡＭ６に対するデータの書き込みが可能になると、アービタ４はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュールに返す。リクエスト元のモジュールでは、アービタ２９よりリクエスト元のライトＦＩＦＯ２８−ｊへデータ有効信号Ｗｖａｌｉｄ＿ｊを返す。ライトＦＩＦＯ２８−ｊはデータ有効信号Ｗｖａｌｉｄ＿ｊがセットされている期間ＦＩＦＯを読み出し、ＲＡＭデータ入力信号ＰＤＯＵＴ上に書き込みデータを出力する。この操作により、ライトＦＩＦＯ２８−ｊのデータがＲＡＭ６へ格納される。
【０１０６】
ライトＦＩＦＯ２８−ｊは、ＦＩＦＯに空きがあれば、サブモジュール２７−ｎからの有効信号Ｗｖ＿ｊがセットされた時のデータ信号Ｗｄ＿ｊをＦＩＦＯに格納する。一方、ＦＩＦＯに空きがなければ、ライトＦＩＦＯ２８−ｊは、保持要求信号Ｗｓ＿ｊをセットし、サブモジュール２７−ｎの出力をホールドさせる。
【０１０７】
このように、本発明の第４の実施形態によれば、複数のライトＦＩＦＯ及び各ライトＦＩＦＯに対応した複数のライトアドレス生成部を設けることで、複数の不連続なアドレスに格納するデータを出力するサブモジュールの導入においてもモジュールのインタフェースを変える必要はなくなる（同一にすることができる）。従って、前記第１の実施形態と同様の効果が得られる。また、ライトアドレス生成部とライトＦＩＦＯとを１対１対応にしたので、ＲＡＭ６へのアクセスの連続性が高まり、ＲＡＭのバス使用効率がアップする。
【０１０８】
＜第５の実施形態＞
図１２は、本発明の第５の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。図１２において、３２はサブモジュール、３３はライトバッファ、３４はライトアドレス生成部である。以下、第１及び第４の実施形態と異なる部分のみ説明する。
【０１０９】
尚、本実施形態においても前記第４の実施形態と同様に、サブモジュール３２は複数の不連続なアドレスに格納されているデータを取り扱うものとする。但し、本実施形態においては、例えば、画像におけるブロック復号化のように、上記不連続アドレス間に一定の規則性があるものとする。また、他のｎ−１個のサブモジュール２７−１〜２７−ｎ−１は前記第４の実施形態と同一のものとする。即ち、本実施形態は、第４の実施形態におけるサブモジュール２７−ｎをサブモジュール３２に置き換えたものに相当する。
【０１１０】
ＣＰＵ２は、モジュール３のコンフィギュレーションレジスタの設定により、ライトアドレス生成部３４にライト開始アドレスとライト終了アドレスを設定し、ライトイネーブル信号Ｗｅｎをセットする。
【０１１１】
アービタ１０は、ライトバッファ３３の占有容量Ｗｐ及びライトアドレス生成部２６のイネーブル信号Ｗｅｎを検出し、ライトアドレスが有効（Ｗｅｎ＝１）であってライトバッファ３３のデータが出力可能（Ｗｐ≧Ｗｎｕｍ）であれば、アービタ４へライトリクエストを発行する。
【０１１２】
次に、アービタ１０は、アービタ４から受領信号ＰＡＣＫを受け取ると、受領信号Ｗａｃｋをリクエスト元のライトアドレス生成部３４に返す。ライトアドレス生成部３４は、上記受領信号Ｗａｃｋを受け取ると次のアドレスを生成する。尚、リクエストしたアドレスが前記ライト終了アドレスの場合は、ライトイネーブル信号Ｗｅｎをリセットし、ライト終了信号Ｗｅｎｄを割り込み制御部１２に出力する。
【０１１３】
次に、ＲＡＭ６へのデータの書き込みが可能になると、アービタ４はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュールに返す。リクエスト元のモジュールでは、アービタ１０よりリクエスト元のライトバッファ３３へデータ有効信号Ｗｖａｌｉｄを返す。ライトバッファ３３はデータ有効信号Ｗｖａｌｉｄがセットされている期間バッファを読み出し、ＲＡＭデータ入力信号ＰＤＯＵＴ上に書き込みデータを出力する。この操作により、ライトバッファ３３のデータがＲＡＭ６へ格納される。
【０１１４】
ライトバッファ３３は、バッファに空きがあれば、サブモジュール３２からの有効信号ｖａｌｉｄ＿ｎがセットされた時のデータ信号ｄａｔａ＿ｎをバッファに格納する。一方、バッファに空きがなければ、ライトバッファ３３は、保持要求信号ｓｔａｌｌ＿ｎをセットし、サブモジュール３２の出力をホールドさせる。
【０１１５】
ライトバッファ３３は、サブモジュール３２の１シーケンスに必要とするデータ分のバッファを持っており、上記Ｗｖａｌｉｄに従って格納されたデータを読み出してＲＡＭ６に格納する。尚、上記バッファは読み出しと書き込みとの競合を避けるため、ダブルバッファ構成となっている。また、１つのバッファは、所定のバースト長に対応した容量（例えば、４ライン分のデータにアクセスする場合はバースト長×４）を持っている。これにより、バーストアクセスが可能になり、ＲＡＭのバス使用効率がアップする。
【０１１６】
ライトアドレス生成部３４は、同様にして、図６と同じ構成をとる。例えば、上記のように４ライン分のデータをアクセスする場合、ライトアドレス生成部３１−ｊで用いた２次元アクセスに必要なアドレス差分値をＤ１、Ｄ２、水平方向画素数をｗとし、１ライン分のアドレス差分をＤ３とすると、シーケンサ１５は１ライン分のアドレス差分Ｄ３を３回選択した後、アドレス差分値Ｄ４＝−３・Ｄ３＋Ｄ１を１回選択するようにセレクタ１４を制御する。このシーケンスをｗ−１回繰り返し、ｗ回目では、シーケンサ１５はアドレス差分値Ｄ４の代わりにＤ２を選択するようにセレクタ１４を制御するのである。
【０１１７】
このように、ライトアドレス生成部３１−ｊで必要なアドレス差分値の数を２つ、必要なカウンタの数を１つとすると、ライトアドレス生成部３４で必要なアドレス差分値の数は３つ、必要なカウンタの数は２つとなる。即ち、前記ライトアドレス生成部３１−ｊのカウンタ及び差分値を１セット増やすことでライトアドレス生成部３１を１つに統合することができる。
【０１１８】
このように、本発明の第５の実施形態によれば、１つのバッファを所定の（バースト長）×（サブモジュールでの１シーケンスのデータ出力に必要なアドレス数）に対応した容量のダブルバッファでライトバッファを構成し、ライトアドレス生成部の次元数を１つ上げることで、複数の不連続なアドレスに格納するデータを出力するサブモジュールの導入においてもモジュールのインタフェースを変える必要はなくなる（同一にすることができる）。従って、前述した第１の実施形態と同様の効果が得られる。また、ライトアドレス生成部を１つに統合させたことにより、処理の簡略化が図れる。
【０１１９】
＜他の実施形態＞
前述したそれぞれの実施形態において、サブモジュールをスレッド（Ｔｈｒｅａｄ）、モジュールをプロセス（タスク）によって実装すれば、ソフトウェアによって同様の機能を実現することも可能である。
【０１２０】
従って、前述したそれぞれの実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体（記録媒体）に格納されたプログラムコードを読み出し実行することによっても、本願発明の目的が達成されることは容易に理解できよう。この場合、記憶媒体から読み出されたプログラムコード自体が本願発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本願発明を構成することになる。
【０１２１】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１２２】
また、コンピュータが読み出したプログラムコードを実行することによって、前述した実施形態の機能が実現される他、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１２３】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１２４】
尚、本願発明は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体から、そのプログラムを、パソコン通信など通信ラインを介して要求者にそのプログラムを配信する場合にも適用できることは言うまでもない。
【０１２５】
【発明の効果】
以上説明したように、本発明によれば、データ処理モジュール（プロセッサ）のＩ／Ｆを汎用化し、処理内容に応じてデータ処理モジュール単位の追加変更を容易にすることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るデータ処理装置の一構成例を示すブロック図である。
【図２】本発明の第１の実施形態に係るデータ処理装置の動作の流れを説明するための図である。
【図３】本発明の第１の実施形態に係るデータ処理装置における他の動作の流れを説明するための図である。
【図４】本発明の第１の実施形態に係るデータ処理装置におけるデータ処理モジュール３−１〜３−ｍの詳細な内部構成を説明するためのブロック図である。
【図５】本発明の第１の実施形態におけるサブモジュール間Ｉ／Ｆの動作を示すタイミングチャートである。
【図６】本発明の第１の実施形態に係るデータ処理装置のモジュール３内部のアドレス生成部の詳細な構成を説明するためのブロック図である。
【図７】本発明の第１の実施形態に係るアドレス生成部におけるパラメータを説明する図である。
【図８】本発明の第１の実施形態に係るアドレス生成部の別のシーケンスを説明する図である。
【図９】本発明の第２の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。
【図１０】本発明の第３の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。
【図１１】本発明の第４の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。
【図１２】本発明の第５の実施形態に係るデータ処理装置のモジュール内部の詳細な構成を説明するためのブロック図である。
【符号の説明】
１  ＲＯＭ
２  ＣＰＵ
３−１〜３−ｍ  データ処理モジュール
４、１０、２０  アービタ
５  ＲＡＭインタフェース部
６  ＲＡＭ
７  リードＦＩＦＯ
８−１〜８−ｎ  サブモジュール
９  ライトＦＩＦＯ
１１、２２、２６  リードアドレス生成部
１２  割り込み制御部
１３  ライトアドレス生成部
１４  セレクタ
１５  シーケンサ
１６  加算部
１７  レジスタ
１８  比較部
【図１】
2004220432.tif 000003
【図２】
2004220432.tif 000004
【図３】
2004220432.tif 000005
【図４】
2004220432.tif 000006
【図５】
2004220432.tif 000007
【図６】
2004220432.tif 000008
【図７】
2004220432.tif 000009
【図８】
2004220432.tif 000010
【図９】
2004220432.tif 000011
【図１０】
2004220432.tif 000012
【図１１】
2004220432.tif 000013
【図１２】
2004220432.tif 000014