(57)【要約】【課題】回路規模の増加を抑えつつ、高速なデータ処理を実行することが可能で、ソフトウェア設計資産の再利用性が高いデータ処理装置を提供する。【解決手段】第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８は、書き込まれた順序でデータを読み出すことが可能なメモリである。第１のデータ転送制御部１０９は、外部メモリ２００に対する読み出し又は書き込みを行うアドレスを所定のアドレスシーケンスに従って算出し、外部メモリ２００と第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８との間のデータ転送を制御する。第２のデータ転送制御部１１０は、プロセッサ部１０１と第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８との間のデータ転送が単一のアドレス指定にて行われるよう制御する。【選択図】図１
2009026269.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリに格納されたデータをプロセッサが処理するデータ処理装置において、
書き込まれた順序でデータの読み出しが可能なデータ一時記憶部と、
前記外部メモリに対する読み出し又は書き込みを行うアドレスを所定のアドレスシーケンスに従って算出し、前記外部メモリと前記データ一時記憶部との間のデータ転送を制御する第１のデータ転送制御部と、
前記プロセッサと前記データ一時記憶部との間のデータ転送が単一のアドレス指定にて行われるよう制御する第２のデータ転送制御部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記データ一時記憶部は、前記外部メモリから読み出されたデータを記憶する第１のデータ一時記憶部と、前記外部メモリへ書き込まれるデータを記憶する第２のデータ一時記憶部とを、それぞれ１つ以上備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第１のデータ転送制御部は、前記第１のデータ一時記憶部の無効データ量が所定量以上である場合に前記外部メモリから前記第１のデータ一時記憶部へデータを転送することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記第１のデータ転送制御部は、前記第１のデータ一時記憶部の無効データ量が所定量未満である場合に前記外部メモリから前記第１のデータ一時記憶部へのデータ転送を停止することを特徴とする請求項２又は請求項３に記載のデータ処理装置。
【請求項５】
前記第１のデータ転送制御部は、前記第２のデータ一時記憶部の有効データ量が所定量以上である場合に前記第２のデータ一時記憶部から前記外部メモリへデータを転送することを特徴とする請求項２〜請求項４のいずれかに記載のデータ処理装置。
【請求項６】
前記第１のデータ転送制御部は、前記第２のデータ一時記憶部の有効データ量が所定量未満である場合に前記第２のデータ一時記憶部から前記外部メモリへのデータ転送を停止することを特徴とする請求項２〜請求項５のいずれかに記載のデータ処理装置。
【請求項７】
前記第１のデータ一時記憶部及び前記第２のデータ一時記憶部は、物理的に区切られたメモリであることを特徴とする請求項２〜請求項６のいずれかに記載のデータ処理装置。
【請求項８】
前記第１のデータ一時記憶部及び前記第２のデータ一時記憶部は、同一のメモリ内で論理的に区切られた領域であることを特徴とする請求項２〜請求項６のいずれかに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部メモリに格納されたデータをプロセッサが処理するデータ処理装置に関する。
【背景技術】
【０００２】
プロセッサと外部メモリとの間で転送されるデータをプロセッサが処理するデータ処理装置が知られている（例えば非特許文献１参照）。
【非特許文献１】永井正武著、「実用・コンピュータアーキテクチャ」、実教出版株式会社、１９９５年３月２０日（第９３，２８６，１１８頁）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
プロセッサがデータ処理を行う際、データを演算するための命令の他に、処理前のデータが格納されているメモリアドレス、又は処理後のデータを格納するメモリアドレスを算出するための命令が実行される。データの転送量が増加すると、メモリアドレスを算出するための命令の実行に掛かる時間も増加するため、プロセッサによるデータ処理のために確保された時間内に、データを演算するための命令を実行する時間を十分に確保することができないという課題がある。
【０００４】
この課題を解決するために、メモリアドレスを算出するための命令と、データを転送するための命令とを同時に実行することが可能な命令（VLIW）を備えることにより、データ処理の高速化を図るDSP（Digital Signal Processor）などのプロセッサがある。しかし、一般的に、プロセッサで実行されるプログラムはプロセッサ毎に最適化されているため、プロセッサを変更すると、改めてプログラムを最適化する作業を実施しなければならず、ソフトウェア設計資産の再利用性が低くなるという課題がある。このため、高速なデータ処理を行うデータ処理装置を短期間に提供することが難しくなる。また、一般的に、VLIWでは連続アドレスのような単純なメモリアドレス演算しか実行されないため、複雑なメモリアドレス演算には対応できない。
【０００５】
外部メモリは高速にデータを転送することができないため、プロセッサが高速にアクセスすることが可能なキャッシュメモリをプロセッサと外部メモリとの間に設けることが多い。このキャッシュメモリは、プロセッサによるデータのアクセスに偏りが生じることを利用し、頻繁にアクセスが発生するデータをキャッシュメモリにコピーしておき、外部メモリとのデータ転送回数を減らすことにより、プロセッサのデータアクセスの高速化を図っている。
【０００６】
しかし、プロセッサで処理されるデータによっては、データのアクセスに偏りがなく、キャッシュメモリが有効的に機能しないことがある。例えば、画像処理においては、外部メモリに格納された大量のデータが連続的かつ平均的に転送されるため、キャッシュメモリが有効的に機能せず、外部メモリとキャッシュメモリとの間で頻繁にデータがコピーされる。外部メモリとキャッシュメモリとの間でデータをコピーしている間は、プロセッサは処理を停止しているため、高速なデータ処理を行うことができないという課題がある。勿論、キャッシュメモリのサイズを大きくすれば、外部メモリとキャッシュメモリとの間のデータのコピー回数を減らすことができるが、高速アクセス可能なメモリをデータ処理装置の内部に大量に持つことは、回路規模ひいてはコストの増大につながるため好ましくない。
【０００７】
本発明は、上述した課題に鑑みてなされたものであって、回路規模の増加を抑えつつ、高速なデータ処理を実行することが可能で、ソフトウェア設計資産の再利用性が高いデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するためになされたもので、外部メモリに格納されたデータをプロセッサが処理するデータ処理装置において、書き込まれた順序でデータの読み出しが可能なデータ一時記憶部と、予め設定された外部メモリに対する読み出し又は書き込みを行うアドレスを所定のアドレスシーケンスに従って算出し、前記外部メモリと前記データ一時記憶部との間のデータ転送を制御する第１のデータ転送制御部と、前記プロセッサと前記データ一時記憶部との間のデータ転送が単一のアドレス指定にて行われるよう制御する第２のデータ転送制御部とを備えることを特徴とするデータ処理装置である。
【０００９】
また、本発明のデータ処理装置において、前記データ一時記憶部は、前記外部メモリから読み出されたデータを記憶する第１のデータ一時記憶部と、前記外部メモリへ書き込まれるデータを記憶する第２のデータ一時記憶部とを、それぞれ１つ以上備えることを特徴とする。
【００１０】
また、本発明のデータ処理装置において、前記第１のデータ転送制御部は、前記第１のデータ一時記憶部の無効データ量が所定量以上である場合に前記外部メモリから前記第１のデータ一時記憶部へデータを転送することを特徴とする。
【００１１】
また、本発明のデータ処理装置において、前記第１のデータ転送制御部は、前記第１のデータ一時記憶部の無効データ量が所定量未満である場合に前記外部メモリから前記第１のデータ一時記憶部へのデータ転送を停止することを特徴とする。
【００１２】
また、本発明のデータ処理装置において、前記第１のデータ転送制御部は、前記第２のデータ一時記憶部の有効データ量が所定量以上である場合に前記第２のデータ一時記憶部から前記外部メモリへデータを転送することを特徴とする。
【００１３】
また、本発明のデータ処理装置において、前記第１のデータ転送制御部は、前記第２のデータ一時記憶部の有効データ量が所定量未満である場合に前記第２のデータ一時記憶部から前記外部メモリへのデータ転送を停止することを特徴とする。
【００１４】
また、本発明のデータ処理装置において、前記第１のデータ一時記憶部及び前記第２のデータ一時記憶部は、物理的に区切られたメモリであることを特徴とする。
【００１５】
また、本発明のデータ処理装置において、前記第１のデータ一時記憶部及び前記第２のデータ一時記憶部は、同一のメモリ内で論理的に区切られた領域であることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、第１のデータ転送制御部及び第２のデータ転送制御部がデータ転送を制御することにより、データ一時記憶部が小容量でも擬似的に大きな容量が確保されるため、データ処理の高速化のために追加する回路規模の増加を抑えることができる。
【００１７】
また、本発明によれば、プロセッサによる単一のアドレス指定にて、第２のデータ転送制御部の制御によりプロセッサとデータ一時記憶部との間でデータ転送が行われ、データ処理中にプロセッサがデータ転送のためのアドレス演算を実行する必要がないので、高速なデータ処理を実行することができる。さらに、第１のデータ転送制御部の制御により、プロセッサの動作とは独立して外部メモリとデータ一時記憶部との間でデータ転送が行われ、データ処理中にプロセッサがデータ転送のために待機する状態の発生が低減されるので、高速なデータ処理を実行することができる。
【００１８】
また、本発明によれば、データ処理の高速化のためにプロセッサを変更する必要がないため、ソフトウェア設計資産の再利用性を高く維持することができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の一実施形態によるデータ処理装置の構成を示している。図１に示すデータ処理装置１００は、プロセッサ部１０１と、プロトコル変換部１０２と、キャッシュ探索部１０３と、命令キャッシュ部１０４と、データキャッシュ部１０５と、キャッシュ入替部１０６と、第１のデータ一時記憶部１０７と、第２のデータ一時記憶部１０８と、第１のデータ転送制御部１０９と、第２のデータ転送制御部１１０とを含んで構成され、バス１１１を介してデータ処理装置１００に接続された外部メモリ２００とデータ転送を行い、データ処理を行う。
【００２０】
なお、バス１１１には所定の機能を実行する機能ブロックが接続されることがあるが、本実施形態の説明には不要であるため、その機能ブロックを図示していない。また、プロセッサ部１０１には図示しないメモリが接続されることがあるが、本実施形態の説明には不要であるため、そのメモリを図示していない。
【００２１】
プロセッサ部１０１は、キャッシュ探索部１０３を介して命令キャッシュ部１０４から読み出したプログラムの内容に応じたデータ処理を実行する。また、プロセッサ部１０１は、プログラムの内容に応じて、キャッシュ探索部１０３を介してデータキャッシュ部１０５との間でデータ転送を行い、あるいは第２のデータ転送制御部１１０を介して第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８との間でデータ転送を行い、データ処理を実行する。また、プロセッサ部１０１は、プロトコル変換部１０２を介して外部メモリ２００と直接データ転送を行うことも可能である。
【００２２】
プロトコル変換部１０２は、プロセッサ部１０１が外部メモリ２００と直接データ転送を行うことを可能とするために、プロセッサ部１０１のデータ転送プロトコルとバス１１１のデータ転送プロトコルの変換を行う。プロセッサ部１０１により指定されたメモリアドレスに対応するデータ転送が完了するまで、プロセッサ部１０１はデータ処理を一時的に停止する。
【００２３】
キャッシュ探索部１０３は、プロセッサ部１０１により指定されたメモリアドレスに対応するプログラムが命令キャッシュ部１０４に格納されているか否かを判定し、該当プログラムが命令キャッシュ部１０４に格納されている場合には、プロセッサ部１０１との間で該当プログラムのデータ転送を行う。一方、該当プログラムが命令キャッシュ部１０４に格納されていない場合には、キャッシュ探索部１０３はプロセッサ部１０１とのデータ転送を一時的に停止し、命令キャッシュ部１０４のプログラムの入れ替えをキャッシュ入替部１０６に要求し、そのプログラムの入れ替えが完了してから、プロセッサ部１０１と命令キャッシュ部１０４との間のデータ転送を再開する。
【００２４】
また、キャッシュ探索部１０３は、プロセッサ部１０１により指定されたメモリアドレスに対応するデータがデータキャッシュ部１０５に格納されているか否かを判定し、該当データがデータキャッシュ部１０５に格納されている場合には、プロセッサ部１０１との間で該当データのデータ転送を行う。一方、該当データがデータキャッシュ部１０５に格納されていない場合には、キャッシュ探索部１０３はプロセッサ部１０１とのデータ転送を一時的に停止し、データキャッシュ部１０５のデータの入れ替えをキャッシュ入替部１０６に要求し、そのデータの入れ替えが完了してから、プロセッサ部１０１とデータキャッシュ部１０５との間のデータ転送を再開する。
【００２５】
命令キャッシュ部１０４はメモリであり、プロセッサ部１０１が実行するプログラムを記憶する。データキャッシュ部１０５はメモリであり、プロセッサ部１０１が実行するデータ処理に必要なデータ、データ処理の実行により生じる中間データ、及びデータ処理の実行結果のデータを記憶する。
【００２６】
キャッシュ入替部１０６は、キャッシュ探索部１０３からの命令キャッシュ部１０４のプログラムの入れ替え要求に応じて、外部メモリ２００と命令キャッシュ部１０４との間でデータ転送を行う。また、キャッシュ入替部１０６は、キャッシュ探索部１０３からのデータキャッシュ部１０５のデータの入れ替え要求に応じて、外部メモリ２００とデータキャッシュ部１０５との間でデータ転送を行う。これらのデータ転送では、プロセッサ部１０１によって指定されたアドレスを含む連続した複数アドレスに対応するデータが転送される。
【００２７】
第１のデータ一時記憶部１０７は、プロセッサ部１０１によるデータ処理の対象となるデータが格納されるメモリであり、第１のデータ一時記憶部１０７に書き込まれた順にデータが読み出される。第２のデータ一時記憶部１０８は、プロセッサ部１０１によるデータ処理後のデータが格納されるメモリであり、第２のデータ一時記憶部１０８に書き込まれた順にデータが読み出される。第１のデータ一時記憶部１０７及び前記第２のデータ一時記憶部１０８は、物理的に区切られたメモリとして構成されていてもよいし、同一のメモリ内で論理的に区切られた領域として構成されていてもよい。第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８にアクセスする際にプロセッサ部１０１は単一のアドレスを指定するだけであり、実際のアドレス、すなわち第１のデータ一時記憶部１０７の読み出しアドレス及び第２のデータ一時記憶部１０８の書き込みアドレスは第２のデータ転送制御部１１０によって管理される。
【００２８】
第１のデータ転送制御部１０９は、第２のデータ転送制御部１１０からのデータ転送要求に応じて、外部メモリ２００から第１のデータ一時記憶部１０７へのデータ転送及び第２のデータ一時記憶部１０８から外部メモリ２００へのデータ転送を行う。そのデータ転送の際に第１のデータ転送制御部１０９は、プロセッサ部１０１によって設定されたレジスタの値に基づいて実行する所定の読み出しアドレスシーケンス又は書き込みアドレスシーケンスに従って外部メモリ２００のメモリアドレスを算出する。
【００２９】
ここで、アドレスシーケンスとは、プロセッサ部１０１によるデータ処理中に行われる外部メモリ２００とのデータ転送において、外部メモリ２００の所定の位置に格納されたデータを処理順に転送するための読み出しアドレスの算出方法、及びデータを処理順に外部メモリ２００の所定の位置に格納するための書き込みアドレスの算出方法とする。本実施形態では、予め所定のアドレスシーケンスがデータ処理装置に設定されているものとするが、アドレスシーケンスの設定に必要なパラメータを記憶するレジスタを第１のデータ転送制御部１０９に設け、データ処理装置の動作中に必要に応じて動的にアドレスシーケンスを変更しても構わない。
【００３０】
第２のデータ転送制御部１１０は、プロセッサ部１０１より単一のアドレスで読み出しを要求されたデータを第１のデータ一時記憶部１０７から読み出してプロセッサ部１０１へ出力し、プロセッサ部１０１より単一のアドレスで書き込みを要求されたデータを第２のデータ一時記憶部１０８に書き込む。また、データ処理の整合性を保つために、第２のデータ転送制御部１１０は第１のデータ一時記憶部１０７の読み出しアドレス及び第２のデータ一時記憶部１０８の書き込みアドレスを管理する。
【００３１】
次に、本実施形態によるデータ処理装置の動作を説明する。まず、外部メモリ２００からデータを読み出す際の読み出しアドレスを算出する読み出しアドレスシーケンスを説明する。本実施形態では、ラスタ順に格納された画像データがデータ処理の対象であるとする。図２は、外部メモリ２００に対する画像データの格納例を示している。図２に示すようにＲＧＢの色毎に分かれて画像データが格納されている。ハッチングの施された領域が、画像データの格納された領域である。
【００３２】
図２において、FrmBase_n（n=0，1，2・・・）は、各フレームの画像データが格納されている領域の先頭アドレスである。Hstepは画像水平方向のアドレス変化量である。Vstepは画像垂直方向のアドレス変化量である。Hnumは画像水平方向のデータ数である。Vnumは画像垂直方向のデータ数である。画像サイズの変化に対応できるようにするため、図２に示す１ライン分の画像データ領域には余裕を持たせてある。外部メモリ２００の先頭アドレスから順に画像の１ライン目のデータが格納されている。続いて、２ライン目、３ライン目、・・・、最終ライン目のデータがアドレスの若い方から順に格納されている。
【００３３】
図３は読み出しアドレスシーケンスを示している。以下、図３を参照しながら、読み出しアドレスシーケンスの処理手順を説明する。第１のデータ転送制御部１０９は、水平方向及び垂直方向それぞれのアドレスレジスタを備え、それらのレジスタの値に応じた演算を実行する。初期状態では水平方向アドレスレジスタの値は０であり、垂直方向アドレスレジスタの値はFrmBase_0である。
【００３４】
まず、第１のデータ転送制御部１０９は、垂直方向のアドレスレジスタの値に基づいて、１フレーム分の画像データの読み出しが終了したか否かを判定する（ステップＳ１００）。レジスタの値からFrmBase_n（nはn=0，1，2・・・で現在のフレームの値）を減算した値がVnumの場合には１フレーム分の画像データの読み出しが終了しているため、ステップＳ１０１へ進む。また、レジスタの値からFrmBase_nを減算した値が０〜Vnum-1の場合には１フレーム分の画像データの読み出しがまだ終了していないため、ステップＳ１０２へ進む。
【００３５】
ステップＳ１０２へ進んだ場合、第１のデータ転送制御部１０９は、水平方向のアドレスレジスタの値に基づいて、１ライン分の画像データの読み出しが終了したか否かを判定する（ステップＳ１０２）。レジスタの値がHnumの場合には１ライン分の画像データの読み出しが終了しているため、ステップＳ１０３へ進む。また、レジスタの値が０〜Hnum-1の場合には１ライン分の画像データの読み出しがまだ終了していないため、ステップＳ１０５へ進む。
【００３６】
ステップＳ１０５へ進んだ場合、第１のデータ転送制御部１０９は、水平方向のアドレスレジスタの値にHstepを加算する（ステップＳ１０５）。続いて、ステップＳ１０６へ進む。また、ステップＳ１０３へ進んだ場合、第１のデータ転送制御部１０９は、水平方向のアドレスレジスタの値を０にクリアし（ステップＳ１０３）、垂直方向のアドレスレジスタの値にVstepを加算する（ステップＳ１０４）。これにより、読み出し対象の画像データが同一フレームの次ラインの画像データとなる。続いて、ステップＳ１０６へ進む。
【００３７】
一方、ステップＳ１０１へ進んだ場合、第１のデータ転送制御部１０９は、垂直方向のアドレスレジスタの値にFrmBase_n（nはn=0，1，2・・・で次フレームの値）をセットする（ステップＳ１０１）。これにより、読み出し対象の画像データが次フレームの画像データとなる。続いて、ステップＳ１０６へ進む。
【００３８】
ステップＳ１０６では、第１のデータ転送制御部１０９は、水平方向のアドレスレジスタの値と垂直方向のアドレスレジスタの値を加算する（ステップＳ１０６）。この加算値が読み出しアドレスとなる。外部メモリ２００にデータを書き込む場合の書き込みアドレスシーケンスも上記と同様である。
【００３９】
次に、図４を参照しながら、外部メモリ２００から第１のデータ一時記憶部１０７へのデータ転送の手順を説明する。まず、第１のデータ転送制御部１０９は、第２のデータ転送制御部１１０より、外部メモリ２００から第１のデータ一時記憶部１０７へのデータ転送が要求されているか否かを判定する（ステップＳ２００）。第１のデータ転送制御部１０９は、このデータ転送が要求されている場合にのみ、外部メモリ２００から第１のデータ一時記憶部１０７へデータを転送する。
【００４０】
データ転送が要求されている場合、第１のデータ転送制御部１０９は、外部メモリ２００に対する読み出しアドレスを、所定の読み出しアドレスシーケンスに従って算出し（ステップＳ２０１）、そのアドレスにて指定されるデータを外部メモリ２００から読み出す（ステップＳ２０２）。続いて、第１のデータ転送制御部１０９は、第１のデータ一時記憶部１０７に対する書き込みアドレスを算出し（ステップＳ２０３）、そのアドレスにて指定される第１のデータ一時記憶部１０７の所定の位置に、ステップＳ２０２で外部メモリ２００から読み出したデータ書き込む（ステップＳ２０４）。
【００４１】
次に、図５を参照しながら、第２のデータ一時記憶部１０８から外部メモリ２００へのデータ転送の手順を説明する。まず、第１のデータ転送制御部１０９は、第２のデータ転送制御部１１０より、第２のデータ一時記憶部１０８から外部メモリ２００へのデータ転送が要求されているか否かを判定する（ステップＳ３００）。第１のデータ転送制御部１０９は、このデータ転送が要求されている場合にのみ、第２のデータ一時記憶部１０８から外部メモリ２００へデータを転送する。
【００４２】
データ転送が要求されている場合、第１のデータ転送制御部１０９は、第２のデータ一時記憶部１０８に対する読み出しアドレスを算出し（ステップＳ３０１）、そのアドレスにて指定される第２のデータ一時記憶部１０８の所定の位置からデータを読み出す（ステップＳ３０２）。続いて、第１のデータ転送制御部１０９は、外部メモリ２００に対する書き込みアドレスを、所定の書き込みアドレスシーケンスに従って算出し（ステップＳ３０３）、そのアドレスにて指定される外部メモリ２００の所定の位置に、ステップＳ３０２で第２のデータ一時記憶部１０８から読み出したデータを書き込む（ステップＳ３０４）。
【００４３】
次に、図６を参照しながら、第１のデータ一時記憶部１０７のアドレス制御方法を説明する。図６において、ＲＰは、第２のデータ転送制御部１１０によって管理される読み出しアドレスであり、ＷＰは、第１のデータ転送制御部１０９によって管理される書き込みアドレスである。本実施形態では、所定量のデータを１回の転送単位として外部メモリ２００と第１のデータ一時記憶部１０７との間でデータ転送が行われるものとする。
【００４４】
第２のデータ転送制御部１１０より、外部メモリ２００から第１のデータ一時記憶部１０７へのデータ転送が要求された場合に、第１のデータ転送制御部１０９は、第１のデータ一時記憶部１０７に対するデータの書き込みを実行する。図６に示すように、第１のデータ一時記憶部１０７の書き込みアドレスＷＰは、データの書き込みが行われる毎に先頭アドレスから順次インクリメントされ、終端アドレスに達すると再び先頭アドレスに戻る方式で制御される。
【００４５】
また、プロセッサ部１０１による第１のデータ一時記憶部１０７に対するデータの読み出しアクセスが行われた場合に、第２のデータ転送制御部１１０は第１のデータ一時記憶部１０７からデータを読み出し、プロセッサ部１０１へ出力する。図６に示すように、第１のデータ一時記憶部１０７の読み出しアドレスＲＰは、データの読み出しが行われる毎に先頭アドレスから順次インクリメントされ、終端アドレスに達すると再び先頭アドレスに戻る方式で制御される。
【００４６】
第１のデータ一時記憶部１０７にデータが全く格納されていない初期状態Ｒ１では、読み出しアドレスＲＰ及び書き込みアドレスＷＰは第１のデータ一時記憶部１０７の先頭アドレスに設定されている。第１のデータ転送制御部１０９が外部メモリ２００からのデータ転送を開始した後の状態Ｒ２では、書き込みアドレスＷＰがインクリメントされている。続いて、プロセッサ部１０１の要求に応じて第２のデータ転送制御部１１０がデータの読み出しを開始した後の状態Ｒ３では、読み出しアドレスＲＰがインクリメントされている。書き込みアドレスＷＰ及び読み出しアドレスＲＰは順次インクリメントされる（状態Ｒ４）。書き込みアドレスＷＰが終端アドレスに達すると、再び先頭アドレスに戻り、その後、インクリメントされる（状態Ｒ５）。
【００４７】
第２のデータ転送制御部１１０は、第１のデータ転送制御部１０９によって算出される書き込みアドレスＷＰを参照し、読み出しアドレスＲＰが書き込みアドレスＷＰを追い越さないように制御する。具体的には、ＷＰ＝ＲＰの条件を満たす場合、すなわちプロセッサ部１０１によるデータの読み出しが、第１のデータ転送制御部１０９によるデータの書き込みに追いついた場合に、第２のデータ転送制御部１１０はプロセッサ部１０１によるデータの読み出しを待機させる。
【００４８】
第１のデータ転送制御部１０９により第１のデータ一時記憶部１０７にデータが書き込まれ、ＷＰ≠ＲＰの条件を満たすようになった場合、第２のデータ転送制御部１１０はプロセッサ部１０１によるデータの読み出しを再開させる。これらの制御により、第１のデータ転送制御部１０９によるデータの書き込みがプロセッサ部１０１によるデータの読み出しに間に合わない場合においても、プロセッサ部１０１に無効なデータが出力されることはないため、データ処理に不整合が生じることはない。
【００４９】
また、第２のデータ転送制御部１１０は、第１のデータ一時記憶部１０７に所定量以上の空きデータ領域（無効データ）が存在する場合にのみ、外部メモリ２００から第１のデータ一時記憶部１０７へのデータ転送を第１のデータ転送制御部１０９に要求する。具体的には、予め設定された所定量をＴＨ（ＴＨ＞０）、第１のデータ一時記憶部１０７の先頭アドレスを０、終端アドレスをＥＰとすると、ＷＰ＞ＲＰかつ（ＥＰ−ＷＰ＋ＲＰ）≧ＴＨの条件、又はＷＰ＜ＲＰかつ（ＲＰ−ＷＰ）≧ＴＨの条件を満たす場合にのみ、第２のデータ転送制御部１１０は第１のデータ転送制御部１０９にデータ転送を要求する。要求を受けた第１のデータ転送制御部１０９は外部メモリ２００からデータを読み出し、第１のデータ一時記憶部１０７にデータを書き込む。
【００５０】
一方、これらの条件を満たさない場合、すなわち所定量以上の空きデータ領域が無い場合には第２のデータ転送制御部１１０は第１のデータ転送制御部１０９にデータ転送を要求せず、第１のデータ転送制御部１０９はデータ転送を停止する。したがって、第１のデータ転送制御部１０９が第１のデータ一時記憶部１０７の読み出されていないデータを書き潰すことがないため、データ処理に不整合が生じることはない。
【００５１】
図６の状態Ｒ６は、第１のデータ一時記憶部１０７の無効データ量が所定量ＴＨ未満となり、外部メモリ２００からのデータ転送が停止された状態である。データの読み出しが進んで、第１のデータ一時記憶部１０７の無効データ量が所定量ＴＨ以上となると、外部メモリ２００からのデータ転送が再開される。状態Ｒ７は、外部メモリ２００からのデータ転送が再開されたときの状態であり、状態Ｒ８は外部メモリ２００からのデータ転送がさらに進んだ状態である。状態Ｒ９は、所定量単位のデータ転送の後、第１のデータ一時記憶部１０７の無効データ量が所定量ＴＨ未満となり、外部メモリ２００からのデータ転送が停止された状態である。
【００５２】
次に、図７を参照しながら、第２のデータ一時記憶部１０８のアドレス制御方法を説明する。図７において、ＷＰは、第２のデータ転送制御部１１０によって管理される書き込みアドレスであり、ＲＰは、第１のデータ転送制御部１０９によって管理される読み出しアドレスである。本実施形態では、所定量のデータを１回の転送単位として第２のデータ一時記憶部１０８と外部メモリ２００との間でデータ転送が行われるものとする。
【００５３】
プロセッサ部１０１による第２のデータ一時記憶部１０８へのデータの書き込みアクセスが行われた場合に、第２のデータ転送制御部１１０は第２のデータ一時記憶部１０８にデータを書き込む。図７に示すように、第２のデータ一時記憶部１０８の書き込みアドレスＷＰは、データの書き込みが行われる毎に先頭アドレスから順次インクリメントされ、終端アドレスに達すると再び先頭アドレスに戻る方式で制御される。
【００５４】
また、第２のデータ転送制御部１１０より、第２のデータ一時記憶部１０８から外部メモリ２００へのデータ転送が要求された場合に、第１のデータ転送制御部１０９は第２のデータ一時記憶部１０８からのデータの読み出しを実行する。図７に示すように、第２のデータ一時記憶部１０８の読み出しアドレスＲＰは、データの読み出しが行われる毎に先頭アドレスから順次インクリメントされ、終端アドレスに達すると再び先頭アドレスに戻る方式で制御される。
【００５５】
第２のデータ一時記憶部１０８にデータが全く格納されていない初期状態Ｔ１では、書き込みアドレスＷＰ及び読み出しアドレスＲＰは第２のデータ一時記憶部１０８の先頭アドレスに設定されている。プロセッサ部１０１の要求に応じて第２のデータ転送制御部１１０がデータの書き込みを開始した後の状態Ｔ２では、書き込みアドレスＷＰがインクリメントされている。続いて、第１のデータ転送制御部１０９が外部メモリ２００へのデータ転送を開始した後の状態Ｔ３では、読み出しアドレスＲＰがインクリメントされている。書き込みアドレスＷＰ及び読み出しアドレスＲＰは順次インクリメントされる（状態Ｔ４）。書き込みアドレスＷＰが終端アドレスに達すると、再び先頭アドレスに戻り、その後、インクリメントされる（状態Ｔ５）。
【００５６】
第２のデータ転送制御部１１０は、第１のデータ転送制御部１０９によって算出される読み出しアドレスＲＰを参照し、書き込みアドレスＷＰが読み出しアドレスＲＰを追い越さないように制御する。具体的には、ＷＰ＜ＲＰかつＷＰ＝（ＲＰ−１）の条件、またはＷＰ＝ＥＰ（終端アドレス）かつＲＰ＝０の条件を満たす場合、すなわちプロセッサ部１０１によるデータの書き込みが、第１のデータ転送制御部１０９によるデータの読み出しに追いついた場合に、第２のデータ転送制御部１１０はプロセッサ部１０１によるデータの書き込みを待機させる。
【００５７】
第１のデータ転送制御部１０９により第２のデータ一時記憶部１０８からデータが読み出され、ＷＰ＜ＲＰかつＷＰ＜（ＲＰ−１）の条件、又はＷＰ＝ＥＰかつＲＰ＞０の条件を満たすようになった場合、第２のデータ転送制御部１１０はプロセッサ部１０１によるデータの書き込みを再開させる。これらの制御により、第１のデータ転送制御部１０９によるデータの読み出しがプロセッサ部１０１によるデータの書き込みに間に合わない場合においても、プロセッサ部１０１が、第２のデータ一時記憶部１０８の読み出されていないデータを書き潰すことはないため、データ処理に不整合が生じることはない。
【００５８】
また、第２のデータ転送制御部１１０は、第２のデータ一時記憶部１０８に所定量以上の有効データが存在する場合にのみ、第２のデータ一時記憶部１０８から外部メモリ２００へのデータ転送を第１のデータ転送制御部１０９に要求する。具体的には、予め設定された所定量をＴＨ（ＴＨ＞０）、第２のデータ一時記憶部１０８の先頭アドレスを０、終端アドレスをＥＰとすると、ＷＰ＞ＲＰかつ（ＷＰ−ＲＰ）≧ＴＨの条件、又はＷＰ＜ＲＰかつ（ＥＰ−ＷＰ＋ＲＰ）≧ＴＨの条件を満たす場合にのみ、第２のデータ転送制御部１１０は第１のデータ転送制御部１０９にデータ転送を要求する。要求を受けた第１のデータ転送制御部１０９は第２のデータ一時記憶部１０８からデータを読み出し、外部メモリ２００にデータを書き込む。
【００５９】
一方、これらの条件を満たさない場合、すなわち所定量以上の有効データが無い場合には第２のデータ転送制御部１１０は第１のデータ転送制御部１０９にデータ読み出しを要求せず、第１のデータ転送制御部１０９はデータ転送を停止する。したがって、第１のデータ転送制御部１０９によるデータの読み出しがプロセッサ部１０１によるデータの書き込みを追い越すことはなく、データ処理に不整合が生じることはない。
【００６０】
図７の状態Ｔ６は、第２のデータ一時記憶部１０８の有効データ量が所定量ＴＨ未満となり、外部メモリ２００へのデータ転送が停止された状態である。データの書き込みが進んで、第２のデータ一時記憶部１０８の有効データ量が所定量ＴＨ以上となると、外部メモリ２００へのデータ転送が再開される。状態Ｔ７は、外部メモリ２００へのデータ転送が再開されたときの状態であり、状態Ｔ８は、外部メモリ２００へのデータ転送が再開された後、データの書き込み及び読み出しがさらに進んだ状態である。状態Ｔ９は、所定量単位のデータ転送の後、第２のデータ一時記憶部１０８の有効データ量が所定量ＴＨ未満となり、外部メモリ２００へのデータ転送が停止された状態である。
【００６１】
第１のデータ転送制御部１０９は、外部メモリ２００から第１のデータ一時記憶部１０７へのデータ転送と、第２のデータ一時記憶部１０８から外部メモリ２００へのデータ転送とが同時に要求された場合に、それぞれの転送要求を調停する。この場合、本実施形態では、第２のデータ一時記憶部１０８から外部メモリ２００へのデータ転送を優先することとする。また、実行中のデータ転送とは別のデータ転送が要求された場合には、実行中のデータ転送が終了してから、要求されたデータ転送を開始することとする。
【００６２】
なお、第１のデータ一時記憶部１０７又は第２のデータ一時記憶部１０８が複数設けられる場合には、第１のデータ転送制御部１０９がより複雑な調停を行う必要があるが、その調停方法は本実施形態の要点ではないため、詳細な説明は割愛する。また、第１のデータ転送制御部１０９が、システムの状態に応じて動的に優先度が変化するような調停を行っても構わない。
【００６３】
次に、図８を参照し、データ処理の流れに沿って、本実施形態によるデータ処理装置の動作を説明する。データ処理装置が起動してシステムの初期化が行われると、プロセッサ部１０１は命令キャッシュ部１０４からプログラムを読み出し、プログラムの実行を開始する。まず、プロセッサ部１０１は、システム上必要なモジュールに対して初期設定を行う（ステップＳＱ−１０１）。初期設定が行われた後、第１のデータ転送制御部１０９は、第２のデータ転送制御部１１０を介してプロセッサ部１０１からのデータ転送の要求を受け、外部メモリ２００から第１のデータ一時記憶部１０７へのデータ転送を行う（ステップＳＱ−１０２）。
【００６４】
プロセッサ部１０１がデータ処理を開始する（ステップＳＱ−１０３）と、プロセッサ部１０１からデータの読み出し要求を受けた第２のデータ転送制御部１１０は、処理の対象となるデータを第１のデータ一時記憶部１０７から読み出してプロセッサ部１０１へ出力する（ステップＳＱ−１０４）。第１のデータ一時記憶部１０７には単一のアドレスが割り当てられているため、プロセッサ部１０１はデータを読み出す際に、メモリアドレスを算出するための命令を実行する必要はない。
【００６５】
また、プロセッサ部１０１からの読み出しアクセスの前に、演算対象となるデータが外部メモリ２００から第１のデータ一時記憶部１０７へ予め転送されているため（ステップＳＱ−１０２，ＳＱ−１０５）、プロセッサ部１０１は、第２のデータ転送制御部１１０を介して遅滞なくデータを読み出すことができる。
【００６６】
データ処理の過程で、別途、パラメータなどのデータが必要になった場合、プロセッサ部１０１は、キャッシュ探索部１０３を介してデータキャッシュ部１０５からデータを読み出す（ステップＳＱ−１０６）。このとき、該当するデータがデータキャッシュ部１０５に存在しない場合には、キャッシュ入替部１０６は外部メモリ２００からデータキャッシュ部１０５に該当データを転送する。外部メモリ２００からデータキャッシュ部１０５へのデータ転送の間、プロセッサ部１０１による命令の実行は停止される。一方、該当するデータがデータキャッシュ部１０５に存在する場合には、プロセッサ部１０１は遅滞なくデータを読み出すことができる。
【００６７】
また、プロセッサ部１０１は、データ処理の過程で生成される中間データのうち、メモリに一時記憶させるべきデータをデータキャッシュ部１０５に格納し（ステップＳＱ−１０７）、そのデータが再び必要になった場合にデータキャッシュ部１０５からデータを読み出す（ＳＱ−１０８）。ただし、データキャッシュ部１０５の使用状況によっては、データキャッシュ部１０５に格納したデータを外部メモリ２００から再転送しなければ読み出せない場合がある。この場合、外部メモリ２００から該当データがデータキャッシュ部１０５に転送されるまで、プロセッサ部１０１は待機する。
【００６８】
１データに対するデータ処理が完了すると、プロセッサ部１０１は、第２のデータ転送制御部１１０を介して処理結果のデータを第２のデータ一時記憶部１０８に書き込む（ステップＳＱ−１０９）。第２のデータ一時記憶部１０８には単一のアドレスが割り当てられているため、プロセッサ部１０１はデータを書き込む際にメモリアドレスを算出するための命令を実行する必要はない。
【００６９】
第２のデータ一時記憶部１０８に所定量のデータが格納されると、第１のデータ転送制御部１０９は第２のデータ一時記憶部１０８から外部メモリ２００への転送を開始する（ステップＳＱ−１１０）。第１のデータ転送制御部１０９は、第２のデータ一時記憶部１０８の空きデータ領域がなくなる前に外部メモリ２００へデータを転送するため、第２のデータ一時記憶部１０８にはプロセッサ部１０１がデータの書き込みを行う領域が継続的に確保される。したがって、プロセッサ部１０１は第２のデータ一時記憶部１０８にデータを遅滞なく書き込むことができる。データ処理が継続する場合には、ステップＳＱ−１０４以後の処理が繰り返される。
【００７０】
上述したように、本実施形態によるデータ処理装置において、第１のデータ転送制御部１０９及び第２のデータ転送制御部１１０の制御により、第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８では、データ処理に必要なデータ又はデータ処理の結果として生成されたデータが書き込まれた後、そのデータが順次読み出され、読み出しによって生じた空き領域に他のデータが書き込まれることが繰り返される。これによって、第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８が小容量でも擬似的に大きな容量が確保されるので、データ処理の高速化のために追加する回路規模の増加を抑えることができる。
【００７１】
また、プロセッサ部１０１による単一のアドレス指定にて、第２のデータ転送制御部１１０の制御によりプロセッサ部１０１と第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８との間でデータ転送が行われ、データ処理中にプロセッサ部１０１がデータ転送のためのアドレス演算を実行する必要がない。これによって、高速なデータ処理を実行することができる。
【００７２】
また、第１のデータ転送制御部１０９の制御により、プロセッサ部１０１の動作とは独立して外部メモリ２００と第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８との間でデータ転送が行われる。つまり、プロセッサ部１０１は、外部メモリ２００と第１のデータ一時記憶部１０７及び第２のデータ一時記憶部１０８との間のデータ転送とは独立して、データ処理の対象となるデータを第１のデータ一時記憶部１０７から読み出し、データ処理の結果となるデータを第２のデータ一時記憶部１０８に書き込むことが可能となる。これによって、データ処理中にプロセッサ部１０１がデータ転送のために待機する状態の発生が低減されるので、高速なデータ処理を実行することができる。
【００７３】
また、画像データを処理する場合、プロセッサ部１０１によるデータ処理の対象となるデータが第１のデータ一時記憶部１０７に格納され、プロセッサ部１０１によるデータ処理の結果となるデータが第２のデータ一時記憶部１０８に格納されるため、これらのデータがデータキャッシュ部１０５を経由する必要はない。したがって、データ処理中にプロセッサがデータ転送のために待機する状態の発生が低減され、高速なデータ処理を実行することができる。
【００７４】
また、小規模の回路の追加のみでデータ処理を高速化できるため、データ処理の高速化のためにプロセッサを変更する必要はない。これによって、ソフトウェア設計資産の再利用性を高く維持することができる。
【００７５】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態によるデータ処理装置の構成を示すブロック図である。
【図２】本発明の一実施形態における外部メモリに対する画像データの格納例を示す参考図である。
【図３】本発明の一実施形態における読み出しアドレスシーケンスを示すフローチャートである。
【図４】本発明の一実施形態における外部メモリから第１のデータ一時記憶部へのデータ転送の手順を示すフローチャートである。
【図５】本発明の一実施形態における第２のデータ一時記憶部から外部メモリへのデータ転送の手順を示すフローチャートである。
【図６】本発明の一実施形態における第１のデータ一時記憶部の読み出しアドレス及び書き込みアドレスの変化を示す参考図である。
【図７】本発明の一実施形態における第２のデータ一時記憶部の読み出しアドレス及び書き込みアドレスの変化を示す参考図である。
【図８】本発明の一実施形態におけるデータ処理の手順を示すシーケンス図である。
【符号の説明】
【００７７】
１００・・・データ処理装置、１０１・・・プロセッサ部、１０２・・・プロトコル変換部、１０３・・・キャッシュ探索部、１０４・・・命令キャッシュ部、１０５・・・データキャッシュ部、１０６・・・キャッシュ入替部、１０７・・・第１のデータ一時記憶部、１０８・・・第２のデータ一時記憶部、１０９・・・第１のデータ転送制御部、１１０・・・第２のデータ転送制御部、１１１・・・バス、２００・・・外部メモリ
【図１】
2009026269.tif 000003
【図２】
2009026269.tif 000004
【図３】
2009026269.tif 000005
【図４】
2009026269.tif 000006
【図５】
2009026269.tif 000007
【図６】
2009026269.tif 000008
【図７】
2009026269.tif 000009
【図８】
2009026269.tif 000010