(57)【特許請求の範囲】
【請求項１】
外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御装置であって、
所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、
複数の差分アドレスを記憶する差分アドレス記憶手段と、
前記複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、
前記差分アドレス選択手段が選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、
前記メモリアドレス生成手段で生成されるメモリアドレスを前記外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送するデータ転送手段と、
前記絶対アドレスを更新する絶対アドレス更新手段と、を具備し、
前記絶対アドレス記憶手段は、前記絶対アドレス更新手段が更新した絶対アドレスを記憶する、
メモリ制御装置。
【請求項２】
前記絶対アドレス更新手段は、前記メモリアドレス生成手段が前記処理機構数のメモリアドレスを生成する毎に前記絶対アドレスの更新を行い、
前記差分アドレス選択手段は、前記メモリアドレス生成手段が前記処理機構数のメモリアドレスを生成する毎に前記複数の差分アドレスを再度所定の順序で選択する、
請求項１に記載のメモリ制御装置。
【請求項３】
絶対アドレス更新用のアドレスオフセットを記憶するアドレスオフセット記憶手段を更に具備し、
前記絶対アドレス更新手段は、前記絶対アドレス記憶手段に記憶されている絶対アドレスと前記アドレスオフセットとを組み合わせて前記絶対アドレスを更新する、
請求項１又は２に記載のメモリ制御装置。
【請求項４】
前記絶対アドレスと、前記複数の差分アドレスと、前記アドレスオフセットと、をそれぞれ前記絶対アドレス記憶手段と、前記差分アドレス記憶手段と、前記アドレスオフセット記憶手段に記憶させる初期設定を行うパラメータ設定手段を更に具備する、
請求項３に記載のメモリ制御装置。
【請求項５】
前記複数の処理機構の全てに１単位のデータを供給するデータ転送である列転送の転送予定列数を記憶する転送予定列数記憶手段と、
前記列転送が完了した転送完了列数を記憶する転送完了列数記憶手段と、
１列の列転送が完了する毎に前記転送完了列数記憶手段に記憶されている前記転送完了列数をインクリメントして更新する転送完了列数更新手段と、
を更に具備し、
前記データ転送手段は、前記転送予定列数分の列転送が完了するまでデータ転送を継続して行う、
請求項１乃至４のいずれか１項に記載のメモリ制御装置。
【請求項６】
前記複数の処理機構の全てに１単位のデータを供給するデータ転送である列転送の予定転送列数を記憶する転送予定列数記憶手段と、
１列の列転送が完了する毎に転送予定列数記憶手段に記憶されている前記転送予定列数をデクリメントして更新する転送予定列数更新手段と、
を更に具備し、
前記データ転送手段は、前記転送予定列数が０になるまでデータ転送を継続して行う、
請求項１乃至４のいずれか１項に記載のメモリ制御装置。
【請求項７】
前記差分アドレス記憶手段は、複数の差分アドレスが纏められた複数の差分アドレステーブルを記憶し、
前記差分アドレス選択手段は、前記複数の差分アドレステーブルに纏められた前記複数の差分アドレスをそれぞれ所定の順序で選択する複数のポインタレジスタを含み、
前記メモリアドレス生成手段は、前記複数のポインタレジスタが選択した複数の差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成する、
請求項１に記載のメモリ制御装置。
【請求項８】
前記差分アドレス記憶手段は、複数の差分アドレスが纏められた第１の差分アドレステーブルと複数の差分アドレスが纏められた第２の差分アドレステーブルとを記憶し、
前記差分アドレス選択手段は、前記第１の差分アドレステーブルに纏められた前記複数の差分アドレスを所定の順序で選択する第１のポインタレジスタと前記第２の差分アドレステーブルに纏められた前記複数の差分アドレスを所定の順序で選択する第２のポインタレジスタとを含み、
前記メモリアドレス生成手段は、前記第１のポインタレジスタが選択した差分アドレスと、前記第２のポインタレジスタが選択した差分アドレスと、前記絶対アドレスと、を組み合わせてメモリアドレスを生成する、
請求項７に記載のメモリ制御装置。
【請求項９】
メモリアドレス生成用に使用する差分アドレステーブルを前記差分アドレス記憶手段に記憶されている前記複数の差分アドレステーブルの中から選択する差分アドレステーブル選択手段を更に具備し、
前記メモリアドレス生成手段は、前記差分アドレステーブル選択手段で選択された差分アドレステーブルに含まれる複数の差分アドレスの中から前記ポインタレジスタが所定の順序で選択する差分アドレスと、前記絶対アドレスと、を組み合わせてメモリアドレスを生成する、
請求項７に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ制御技術及びデータ処理技術に関し、特にＳＩＭＤ（Single Instruction Multiple Data）プロセッサ向けのＤＭＡ（Direct Memory Access）制御技術及びデータ処理技術に関する。
【背景技術】
【０００２】
データ処理の高速化のために、複数の演算処理機構を持つ半導体集積回路が使用され始めている。特許文献１には、円環状の通信経路である一方向のリングバスによって複数の処理モジュールであるプロセッシングエレメントが接続されたＳＩＭＤプロセッサが開示されている。
【０００３】
ＳＩＭＤプロセッサを構成する各プロセッシングエレメントはそれぞれ内部メモリを持ち、外部メモリに格納されているデータがＤＭＡ（Direct Memory access）装置によるデータ転送制御に従って内部メモリに転送される。ＤＭＡ装置は、アドレス生成回路を備え、アドレスを１つずつインクリメントさせながらリードアドレスを生成することで外部メモリのアドレス順にデータが読み出されて内部メモリに格納される。ＤＭＡ装置は、プロセッシングエレメント全てに１単位のデータを供給する列転送を予め指定した列数分行い、２次元データを内部メモリに格納する。各プロセッシングエレメントは、当該リングバスに接続されているコントロールプロセッサからの制御に従い、内部メモリに格納されたデータに対して所定の演算処理を実行する。
【０００４】
ここで、ＳＩＭＤプロセッサを用いて画像データ処理で必要となる行列演算処理を行うためには、処理に先だってデータ整列を行う必要がある。そのため、外部メモリよりプロセッシングエレメントの内部メモリにデータを転送させた後、データ整列命令を実行することでデータを他のプロセッシングエレメントに転送してデータの再配置を行う必要がある。
【０００５】
しかしながら、データの初期配置時には多数のデータをプロセッシングエレメント間で転送する必要があるため、プロセッシングエレメント間でのデータ転送による遅延が発生する。当該遅延は、計算処理の並列化による性能向上を図る上での課題となっている。
【０００６】
このため、データを外部メモリからプロセッシングエレメントに読み込む際に、データ配置を変更する手法が提案されている。例えば、特許文献２には、複数のメモリバンクに対して個別に読み出しアドレスを供給してデータを取り出すことでデータの整列を行う技術が開示されている。また、特許文献３には、外部メモリから読み込んだデータをバッファに一時格納し、複数のテーブルの値によってデータ順を並び替える技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２７７４２９号公報
【特許文献２】特開２００５−３０９４９９号公報
【特許文献３】特開２０１０−１７０１６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献２のＳＩＭＤプロセッサでは、データ配置を制御した上で演算器にデータを供給できるため、演算命令に先立ってデータ整列命令を実行する必要が無く処理の高速化を実現できる。しかしながら、特許文献２のデータ整列方法は、複数のメモリバンクに対して個別に読み出しアドレスを供給する必要があるため、メモリバンクを分割しなければならない。そのため、アドレスデコーダ等の周辺回路が増加することによって回路の面積規模が大きくなるという課題がある。
【０００９】
また、特許文献３のデータ整列方法において並び替えられるデータは、バッファに一時的に記憶されたデータのみであり、並び替えられるデータの範囲に制約があるという課題がある。
【００１０】
このように、従来のデータ整列方法では、回路規模を抑えつつデータ整列が完了した状態で外部メモリから内部メモリにデータを転送することができなかった。
【課題を解決するための手段】
【００１１】
本発明の第１態様であるメモリ制御装置は、外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御装置であって、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、複数の差分アドレスを記憶する差分アドレス記憶手段と、前記複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、前記差分アドレス選択手段が選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、前記メモリアドレス生成手段で生成されるメモリアドレスを前記外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送するデータ転送手段と、を具備する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送を行うことができる。
【００１２】
また、本発明の第２態様であるメモリ制御方法は、外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御方法であって、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶し、複数の差分アドレスを記憶し、前記複数の差分アドレスを所定の順序で選択し、前記選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成し、前記生成したメモリアドレスを外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送を行うことができる。
【００１３】
また、本発明の第３態様であるデータ処理装置は、少なくとも内部メモリと演算回路とをそれぞれ含む複数の処理機構が直列に接続されているデータ処理手段と、前記データ処理手段を制御する制御手段と、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、複数の差分アドレスを記憶する差分アドレス記憶手段と、前記複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、前記差分アドレス選択手段が選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、前記メモリアドレス生成手段で生成されるメモリアドレスを外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送するデータ転送手段と、を具備する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送が行われるため、データ処理手段においてデータ整列命令を実行することなくそのままデータを処理することができる。
【００１４】
また、本発明の第４態様である画像処理システムは、データを一時記憶する外部メモリと画像を撮像して前記外部メモリに格納する画像撮像装置と、前記外部メモリに一時記憶された画像データを読み込んで所定のデータ処理を行う本発明の第３態様であるデータ処理装置と、前記データ処理装置で前記所定のデータ処理が行われた後の画像データを表示する画像表示装置と、を備える。当該構成によれば、カメラ等の画像撮像装置で撮像されて外部メモリにそのままの形で格納される画像データに対して高速で認識処理やマッチング処理等所定の処理を行って、画像データをディスプレイ等の画像表示装置で表示できることで、ユーザに対するレスポンスを早めることができる。
【００１５】
また、本発明の第５態様である半導体集積回路は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する第１レジスタと、複数の差分アドレスを記憶する第２レジスタと、前記複数の差分アドレスを所定の順序で指定するポインタレジスタと、前記ポインタレジスタが選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成回路と、前記メモリアドレス生成回路で生成されるメモリアドレスをメモリに入力し、前記メモリアドレスからデータを読み出して転送するデータ転送回路と、を具備する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送を行うことができる。
【発明の効果】
【００１６】
本発明の構成によれば、回路規模を抑えつつデータ整列が完了した状態で外部メモリから内部メモリにデータを転送することができ、処理の高速化を実現することができる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１に係るデータ処理システムの構成を示す図である。
【図２】実施の形態１に係るＳＩＭＤプロセッサの構成を示す図である。
【図３】実施の形態１に係るデータ処理装置の構成を示す図である。
【図４】実施の形態１に係るデータ転送における初期設定の流れを示すフローチャートである。
【図５】実施の形態１に係るデータ転送の流れを示すフローチャートである。
【図６】実施の形態１に係るデータ転送のタイミングチャートである。
【図７】実施の形態１に係る画像データを切り出して転送する方法を説明する図である。
【図８】図７に示す切り出された画像データが内部メモリに格納されている様子を説明する図である。
【図９】実施の形態１の差分アドレスの更新の流れを示すフローチャートである。
【図１０】実施の形態２に係るデータ処理装置の構成を示す図である。
【図１１】実施の形態２に係るデータ転送の流れを示すフローチャートである。
【図１２】実施の形態２に係るデータ転送のタイミングチャートである。
【図１３】実施の形態３に係るデータ処理装置の構成を示す図である。
【図１４】実施の形態３に係るデータ転送の流れを示すフローチャートである。
【図１５】実施の形態４に係るＳＩＭＤプロセッサの構成を示す図である。
【図１６】実施の形態４に係るデータ転送の流れを示すフローチャートである。
【図１７】実施の形態５に係るデータ処理装置の構成を示す図である。
【図１８】実施の形態５に係るデータ転送の流れを示すフローチャートである。
【図１９】本発明のメモリ制御装置の構成を示すブロック図である。
【図２０】本発明のメモリ制御装置の構成を示すブロック図である。
【図２１】本発明のメモリ制御装置の構成を示すブロック図である。
【図２２】本発明のメモリ制御装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
本発明の実施の形態について以下に図面を参照して説明する。以下の説明は、本発明の好適な実施の形態を示すものであって、本発明の範囲が以下の実施の形態に限定されるものではない。なお、各図面において、同一の符号が付されたものは実質的に同様の内容を示しており、必要に応じて重複説明は省略されている。
【００１９】
＜実施の形態１＞
以下、図面を参照して本実施の形態１について説明する。図１は、本発明に係るデータ処理システムの全体構成を示す図である。データ処理システムは、入力系装置群１００と、データ処理装置２００と、出力系装置群３００と、を備える。
【００２０】
入力系装置群１００は、取得したデータをデータ処理装置２００に入力するための装置であり、例えば、カメラ（画像撮影装置）１１０や、レーダ１２０などを含む。カメラ１１０は、画像を撮影して取得した画像データをデータ処理装置２００に入力する。またレーダ１２０は、反射電波などを検出して取得した受信データをデータ処理装置２００に入力する。
【００２１】
データ処理装置２００は、入力系装置群１００より入力したデータに対して所定のデータ処理を行い、処理後のデータを後段の出力系装置群３００に出力する。データ処理装置２００は、ＣＰＵ（Central Processing Unit）２１０と、メモリ２２０と、ＳＩＭＤプロセッサ２３０とを備え、これら各ブロックがバス２４０を介してお互い接続されている。データ処理装置２００の上記各構成要素は、１チップの半導体回路上に実装することができる。ＣＰＵ２１０は、データ処理装置２００の全体制御を行う。メモリ２２０は、ＣＰＵ２１０の制御に従い、入力系装置群１００より入力したデータを一時的に記憶する。ＳＩＭＤプロセッサ２３０は、ＣＰＵ２１０の制御に従い、メモリ２２０に記憶されているデータを読み出して所定の演算・加工処理を行う。データ処理装置２００が行う演算・加工処理の具体例としては、入力した画像データに人物が映っているかを認識する認識処理や、障害物や道路の白線を検出する検出処理などがある。
【００２２】
出力系装置群３００は、バス２４０を介してデータ処理装置２００より入力したデータを外部へ出力する。出力系装置群３００は、例えばディスプレイ（画像表示装置）３１０や、ブレーキ３２０、駆動装置３３０、その他アクチュエータなどを含む。ディスプレイ３１０は、データ処理装置２００より出力された加工処理後の画像データを表示する。ブレーキ３２０は、データ処理装置２００で算出された速度調整用の制御データに基づいてブレーキを操作させる。駆動装置３３０は、モータやエンジンであり、データ処理装置２００で算出された速度調整用の制御データに基づいて供給電圧やスロットバルブを調整して回転速度等を制御する。
【００２３】
以下の説明では、入力系装置群１００は、具体的にカメラ１１０であるとし、出力系装置群３００は、具体的にディスプレイ３１０であるとして説明する。すなわち、データ処理システムは、画像処理システムであるとして説明する。
【００２４】
次に、データ処理装置２００の具体的構成について詳しく説明する。カメラ１１０で取得された画像データは、ＣＰＵ２１０の制御に従ってメモリ２２０に格納される。ＳＩＭＤプロセッサ２３０は、メモリ２２０にそのままの形で格納されている画像データを後述する読み出し方法に従って読み出し、内部の演算機構で所定の演算・加工処理を行い、処理後の画像データをメモリ２２０に再格納する。メモリ２２０に格納されている演算処理後の画像データは、ＣＰＵ２１０の制御に従ってバス２４０を介してディスプレイ３１０に出力される。
【００２５】
図２は、ＳＩＭＤプロセッサ２３０の構成を示すブロック図である。ＳＩＭＤプロセッサ２３０は、複数のデータ処理機構である複数のプロセッシングエレメント（Processing Element、以下ＰＥと称す）を含むデータ処理部４００と、各ＰＥを制御するコントロールプロセッサ（Control Processor、以下ＣＰと称す）５００とを備える。
【００２６】
データ処理部４００は、ＰＥ４１０〜４８０の８個のＰＥを具備し、これらのＰＥは各円環状の通信経路である一方向のリングバスによって直列に接続されている。各ＰＥは同一の構成をとるため、以下では代表してＰＥ４１０の構成について説明する。なお、以下の説明ではデータ処理部４００をＰＥアレイと称することがある。
【００２７】
ＰＥ４１０は、バッファ４１１と、内部メモリ４１２と、演算処理部４１３と、を備える。
【００２８】
バッファ４１１は、隣接するＰＥ４２０に含まれるバッファ４２１及びＣＰ５００とリングバスにより接続されている。バッファ４１１は隣接するバッファ４２１より送られてきたデータを保持し、次のクロックで当該データをＣＰ５００に出力する。また、バッファ４１１に一時格納されているデータは、ＣＰ５００からの書き込み制御により内部メモリ４１２に書き込まれる。
【００２９】
内部メモリ４１２は、バッファ４１１より出力されたデータを一時記憶する。内部メモリ４１２は、ＰＥ幅数の画素データを記憶可能な容量を備えている。内部メモリ４１２に記憶されるデータは、演算処理部４１３が行う各種演算処理に用いられる。
【００３０】
演算処理部４１３は、内部メモリ４１２に一時記憶されているデータに対して所定の演算処理を行う。後述するように、本発明では、各内部メモリにデータが予め整列された状態で記憶される。従って、各演算処理部は、内部メモリに処理に必要なデータが読み込まれた段階で、データの入れ替え処理を行うことなくそのまま演算処理を行うことができる。
【００３１】
なお、本実施の形態では、ＳＩＭＤプロセッサ２３０は、ＰＥ４１０〜ＰＥ４８０の８個のプロセッサエレメントを備える場合について説明するが、ＰＥ数はこれに限るものではなく、６４個、２５６個等、実行する処理の内容や回路規模等に基づいて適宜選択することが可能である。
【００３２】
ＣＰ５００は、アドレス線とデータ線に接続されており、アドレス線で指定したアドレスに対するデータの出力及びデータの入力を行う。データ線を通じてメモリ２２０よりＣＰ５００に読み込まれたデータは、リングバスを通って１番目のＰＥであるＰＥ４８０のバッファ４８１に格納される。バッファ４８１は、格納しているデータを次のタイミングで隣接する出力方向のＰＥ４７０のバッファ４７１に送り、ＣＰ５００より次のデータを受け取って格納する。一方ＣＰ５００からの書き込み制御により各ＰＥのバッファに格納されているデータは、内部メモリに移される。
【００３３】
次に、図３を参照してＣＰ５００の具体的な構成を説明する。ＣＰ５００は、データ転送制御部５１０と、命令・データキャッシュ５２０と、アービタ５３０と、絶対アドレスレジスタ５４０と、差分アドレスレジスタ５５０と、ポインタレジスタ５６０と、メモリアドレス生成回路５７０と、アドレスオフセットレジスタ５８０と、転送予定列数レジスタ５９０と、転送完了列数レジスタ６００と、絶対アドレス更新回路６１０と、を具備する。
【００３４】
データ転送制御部５１０は、外部メモリであるメモリ２２０からデータ処理部４００にデータを転送するための制御を行う。具体的には、フェッチした命令に従って、後述する各種レジスタに必要なパラメータ情報を設定することでデータ転送の初期設定を行う。また、データ処理部４００の全てのＰＥのバッファにデータが格納された段階で書き込み命令を実行し、各バッファに格納されているデータを各内部メモリに書き込む制御を行う。
【００３５】
命令・データキャッシュ５２０は、データ転送制御部５１０で実行される命令やデータを一時的に格納しておく。メモリ２２０より読み込まれた命令やデータは命令・データキャッシュに一時的に格納され、必要に応じて入れ替えられる。
【００３６】
アービタ５３０は、メモリアドレス生成回路５７０で生成されたメモリのリードアドレスを用いてメモリ２２０にアクセスするアドレスを指定し、メモリ２２０の当該アドレスに格納されているデータを読み込む。アービタ５３０は、読み出したデータを、データ処理部４００内の最前段のＰＥであるＰＥ４８０のバッファ４８１に格納する。バッファに格納されるデータは次のタイミングで隣のＰＥのバッファに送られると共に、新たに受け取ったデータを格納する。このように、バッファに格納されるデータが、サイクル毎に１つずつ隣のＰＥへ移動していく。そして、全ＰＥの全バッファにデータが格納された段階で、データが各バッファから各内部メモリに送られる。このように、アービタ５３０は、メモリアドレス生成回路５７０より入力するリードアドレスに基づいて外部メモリからデータ処理部４００の各内部メモリへデータ転送を行う。
【００３７】
絶対アドレスレジスタ５４０は、データ転送制御部５１０が行う初期設定時に書き込まれる絶対アドレスを記憶する記憶回路である。ここで、絶対アドレスとは、所定のデータ転送期間において共通の基準値となる基準アドレスであり、具体的には、ＰＥ４１０〜４８０の全てに１単位のデータを供給する１列分の列転送の間、メモリアドレス生成回路５７０におけるメモリアドレス生成に共通して用いられる。絶対アドレスレジスタ５４０には、アクセスしたい外部メモリの領域の先頭アドレスが初期設定時に絶対アドレスとして書き込まれる。また、絶対アドレスレジスタ５４０に保持される絶対アドレスは、絶対アドレス更新回路６１０からの更新制御に従って更新される。
【００３８】
差分アドレスレジスタ５５０は、複数の差分アドレスを記憶する記憶回路である。ここで、差分アドレスとは、一列の列転送期間において各タイミングで生成されるリードアドレスと上記絶対アドレスとの差分を示した値である。差分アドレスレジスタ５５０は、複数の差分アドレスが纏められた差分アドレステーブルが記憶されている。本実施の形態１では、差分アドレスレジスタ５５０には、ＰＥ数（８個）分のエントリを持つ１つの差分アドレステーブルが記憶されている。
【００３９】
ポインタレジスタ５６０は、差分アドレスレジスタ５５０に記憶されている複数の差分アドレスを所定の順序で選択する。具体的には、ポインタレジスタ５６０は、差分アドレステーブルのアクセス位置を管理する記憶回路であり、差分アドレステーブルのエントリのアクセス位置を指定する変数を記憶する。ポインタレジスタ５６０の値は、１クロック毎にインクリメントされ、差分アドレステーブルのエントリ数に達した段階で０に戻る。
【００４０】
メモリアドレス生成回路５７０は、絶対アドレスレジスタ５４０に記憶されている絶対アドレスと、ポインタレジスタ５６０が指定する差分アドレステーブルのエントリ位置に記憶されている差分アドレスとを組み合わせて外部メモリアクセス用のアドレスを生成する。具体的には、メモリアドレス生成回路５７０は、絶対アドレスの値と差分アドレスの値とを加算してメモリアドレスを生成し、生成したアドレスをアービタに出力する。
【００４１】
アドレスオフセットレジスタ５８０は、絶対アドレスレジスタ５４０に記憶されている絶対アドレスを更新するために使用されるオフセット値Ｏを記憶する記憶回路である。
【００４２】
転送予定列数レジスタ５９０は、全ＰＥに１単位のデータを供給するデータ転送である列転送の転送予定列数Ｌを記憶する記憶回路である。すなわち、転送予定列数レジスタ５９０は、画像データを行単位で転送する際に、何行分の画像データに対して転送を行うかのライン数を記憶する。
【００４３】
転送完了列数レジスタ６００は、これまでに列転送が完了した列の数である転送完了列数Ｌ０を記憶する記憶回路である。転送完了列数レジスタ６００は、一列の列転送が完了した時点でインクリメントされる。
【００４４】
絶対アドレス更新回路６１０は、絶対アドレスレジスタ５４０に記憶される絶対アドレスの更新を行う。絶対アドレス更新回路６１０は、内部に比較回路を持ち、当該比較回路が転送予定列数レジスタ５９０に記憶されている転送予定列数Ｌと転送完了列数レジスタ６００に記憶されている転送完了列数Ｌ０とを比較する。比較の結果、転送完了列数Ｌ０が転送予定列数Ｌに到達していない場合は、次の列転送を行う必要があるため、絶対アドレスの更新を行う。具体的には、絶対アドレス更新回路６１０は、絶対アドレスレジスタ５４０より現在の絶対アドレスを読み込み、アドレスオフセットレジスタ５８０に記憶されているオフセット値を加算した値を新たな絶対アドレスとして絶対アドレスレジスタ５４０に格納することで更新を行う。絶対アドレス更新回路６１０は、メモリアドレス生成回路５７０がＰＥ数のメモリアドレスを生成する毎に絶対アドレスの更新を行う。
【００４５】
上記説明したＣＰ５００を構成する各構成要素の内、特にデータ転送に係る絶対アドレスレジスタ５４０、差分アドレスレジスタ５５０、ポインタレジスタ５６０、メモリアドレス生成回路５７０、アドレスオフセットレジスタ５８０、転送予定列数レジスタ５９０、転送完了列数レジスタ６００、絶対アドレス更新回路６１０、を纏めてＤＭＡ（Direct Memory Access）装置又はメモリ制御装置と呼ぶことがある。また、外部メモリ２２０からデータ処理部４００へのデータ転送を行うデータ転送部であるアービタ５３０や、各レジスタに記憶するパラメータの値を初期設定時に設定するデータ転送制御部５１０などを含めた上でＤＭＡ装置又はメモリ制御装置と呼ぶことがある。
【００４６】
次に、図３を一部参照しながらＳＩＭＤプロセッサ２３０の動作について説明する。図４は、ＤＭＡ装置が行うデータ転送における初期設定の流れを示すフローチャートである。
【００４７】
データ転送制御部５１０は、絶対アドレスレジスタ５４０に一列の列転送期間において基準となる絶対アドレスの値を記憶させる（ステップＳ１０１）。絶対アドレスは、アクセスしたい外部メモリの領域の基準となるアドレスであり、ここでは先頭アドレスとなる。なお、ここでは先頭アドレスの値として"２０００"が絶対アドレスとして絶対アドレスレジスタ５４０に記憶されるものとする。
【００４８】
次に、データ転送制御部５１０は、テーブルの初期設定として、差分アドレスレジスタ５５０に記憶される差分アドレステーブルの各エントリに差分アドレスを書き込む（ステップＳ１０２）。データ転送制御部５１０は、メモリ２２０より読み込んだ命令を実行することで、命令で指定されている差分アドレスの値を差分アドレスレジスタ５５０に記憶させる。但し、整列手法が定まっている場合、この差分アドレスは予め用意しておくことができる。ここでは、差分アドレステーブルには、"０"、"４"、"２"、"６"、"１"、"５"、"３"、"７"、の値が順番に記憶されているものとする。
【００４９】
次にデータ転送制御部５１０は、絶対アドレス更新のためのアドレスオフセットをアドレスオフセットレジスタ５８０に記憶させ（ステップＳ１０３）、転送予定列数Ｌを転送予定列数レジスタ５９０に記憶させる（ステップＳ１０４）。最後に転送完了列数レジスタ６００に記憶される転送完了列数Ｌ０の値をリセットし（ステップＳ１０５）、ポインタレジスタ５６０をリセットし（ステップＳ１０６）、初期設定を終了する。
【００５０】
データ転送制御部５１０が読み込んだプログラムに従って上記ステップＳ１０１〜ステップＳ１０６の設定を行うことでデータ転送のためのパラメータ設定が完了する。なお、上記ステップＳ１０１〜ステップＳ１０６は順不同とすることができる。
【００５１】
次に、ＤＭＡ装置が行うデータの再配列動作を図５のフローチャートと、図６のタイムチャートを用いて示す。図６のタイムチャートには、各タイミングにおける（１）絶対アドレスレジスタ５４０からメモリアドレス生成回路５７０に入力される絶対アドレス、（２）差分アドレスレジスタ５５０からメモリアドレス生成回路５７０に入力される差分アドレス、（３）アービタ５３０から外部メモリ２２０に入力されるリードアドレス、（４）外部メモリ２２０から一段目のＰＥ４８０のバッファ４８１に転送されるデータ、（５）ポインタレジスタ５６０の値、をそれぞれ示している。
【００５２】
まず、図６で示すサイクルｔの動作について説明する。初めに、メモリアドレス生成回路５７０は、絶対アドレスレジスタ５４０に記憶されている絶対アドレス"２０００"を読み出す（ステップＳ２０１）。また、差分アドレステーブルの中からポインタレジスタ５６０が指し示すエントリ（０番）に格納されている差分アドレス"０"を読み出す（ステップＳ２０２）。
【００５３】
メモリアドレス生成回路５７０は、絶対アドレスレジスタ５４０から入力された絶対アドレスの値と、差分アドレステーブルの中からポインタレジスタ５６０により指定されて入力された差分アドレスの値とを加算することでリードアドレスを生成する（ステップＳ２０３）。ここでは"２０００"＋"０"で"２０００"がリードアドレスとなる。アービタ５３０は、メモリアドレス生成回路５７０で生成されたリードアドレスを用いて、メモリのリードアドレス"２０００"としてメモリに入力し、当該アドレスに格納されているデータを読み出してリングバス上の１段目のＰＥであるＰＥ４８０に転送する（ステップＳ２０４）。
【００５４】
続いて、ポインタレジスタの判定と更新が行われる。ポインタレジスタの値は前のサイクルまでにメモリに入力したアドレス数を示している。このため、ポインタレジスタの値が差分アドレステーブルのエントリ数−"１"（ここではエントリ数"８"−"１"＝"７"）と等しいかが判定される（ステップＳ２０５）。等しくない場合、ポインタレジスタの値がインクリメントされる。（ステップＳ２０６）。図６のサイクルｔにおいて、ポインタレジスタの値は"７"ではない。このため、ポインタレジスタ５６０の値がインクリメントされ、ステップＳ２０１に戻る。
【００５５】
次に、サイクルｔ＋１の動作について説明する。サイクルｔの場合と同様、ステップＳ２０１に戻ったメモリアドレス生成回路５７０は、絶対アドレスレジスタ５４０から絶対アドレス"２０００"を読み出す（ステップＳ２０１）。次に、差分アドレステーブルの中からインクリメントされたポインタレジスタ５６０が指し示すエントリ（１番）に格納されている差分アドレス"４"を読み出す（ステップＳ２０２）。
【００５６】
メモリアドレス生成回路５７０は、上記絶対アドレスの値"２０００"と、上記差分アドレスの値"４"とを加算することでリードアドレス"２００４"を生成する（ステップＳ２０３）アービタ５３０は、メモリにリードアドレス"２００４"を入力し、当該アドレスに格納されているデータを読み出してリングバス上の１段目のＰＥであるＰＥ４８０に転送する（ステップＳ２０４）。同時にポインタレジスタ値の判定と更新がサイクルｔと同様に行われる（ステップＳ２００５）。サイクルｔ＋１においても、ポインタレジスタの値"１"が"７"に等しくないためポインタレジスタの値がインクリメントされ（ステップＳ２０６）、ステップＳ２０１に戻る。
【００５７】
このようにステップＳ２０１〜Ｓ２０６が繰り返された結果、ポインタレジスタの値がＰＥ数−１である"７"と等しくなる場合について説明する。ステップＳ２０５の判定において、ポインタレジスタ５６０の値が"７"であった場合、ポインタレジスタ５６０の値は"０"に設定される（ステップＳ２０７）。
【００５８】
この段階で、ＰＥ幅の１行の画像データの転送が完了した状態であるため、絶対アドレス更新回路６１０は、転送完了列数レジスタ６００に記憶されている転送完了列数Ｌ０と転送予定列数レジスタ５９０に設定された転送予定列数Ｌとを比較し、未転送列が存在するかを判定する（ステップＳ２０８）。
【００５９】
判定の結果、Ｌ０＝Ｌであり、未転送列が存在しない場合は、予定したすべての列について列転送が完了したものとして転送処理を終了する。一方、判定の結果、Ｌ０＜Ｌであり、未転送列が存在する場合は、絶対アドレス更新回路６１０は、絶対アドレスの更新を行う（ステップＳ２０９）。具体的には、絶対アドレス更新回路６１０は、絶対アドレスレジスタ５４０に格納されている絶対アドレスを読み込み、アドレスオフセットレジスタ５８０に格納されているアドレスオフセットＯを読み込み、これら２つの値を加算して、新たな絶対アドレスを生成する。絶対アドレス更新回路６１０は、新たに生成した絶対アドレスを絶対アドレスレジスタに格納することで絶対アドレスの更新が完了する。例えばアドレスオフセットＯの値が"１０"である場合は、絶対アドレス"２０１０"が新たに絶対アドレスレジスタ５４０に格納される。
【００６０】
その後、転送完了列数レジスタ６００の値がインクリメントされて転送完了列数が更新され（ステップＳ２１０）、次の転送列についてデータ転送を行うためにステップＳ２０１に戻る。
【００６１】
また、この段階で、ＰＥ４１０のバッファ４１１からＰＥ４８０のバッファ４８１に順にメモリ２２０のアドレス"２０００"、"２００４"、"２００２"、"２００６"、"２００１"、"２００５"、"２００３"、"２００７"、から順に読み出されたデータが格納されている。すなわち、バッファ４１１〜４８１には順にＤ０、Ｄ４、Ｄ２、Ｄ６、Ｄ１、Ｄ５、Ｄ３、Ｄ７のデータが格納されている。各バッファに一時保持されているこれらのデータは、ＣＰ５００からの書き込み制御に従って一斉に各バッファから各内部メモリへ書き込みが行われる。
【００６２】
このように、ステップＳ２０１〜ステップＳ２１０の処理が行われることで、１列の列転送が完了する。転送予定列数で指定した列数分全ての転送が終了した時、データ転送制御部が１要求で発行したデータ転送処理が完了する。
【００６３】
このように、サイクルｔからｔ＋７までの処理によって、メモリ上の２０００番地を先頭に"Ｄ０、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７"という順序で配置されていたＰＥ幅の１行分の画像データは、"Ｄ０、Ｄ４、Ｄ２、Ｄ６、Ｄ１、Ｄ５、Ｄ３、Ｄ７"という順に整列されて読み出される。ＳＩＭＤプロセッサには整列したデータ順に順次入力され、整列が完了した状態で各ＰＥの内部メモリに記憶される。このような処理が転送予定列数Ｌの列数分連続して行われることで２次元の画像データがＰＥの内部メモリに格納される。
【００６４】
図７は、カメラ１１０で撮像されて外部メモリ２２０に記憶されている画像データを示している。１枚の画像のデータ幅は例えば横１９２０ピクセル、縦１０８０ピクセルなどである。外部メモリ２２０には、当該画像データがそのまま記憶される。すなわち、０行０列目の画素データが記憶されたアドレスを先頭アドレスとして、順に０行１列目の画素データ、０行２列目の画素データ、０行３列目の画素データ、・・という順序で外部メモリ２２０に記憶されている。ＳＩＭＤプロセッサ２３０は、このような順序で外部メモリ２２０に記憶されている画像データを行方向にＰＥ数幅分切り出して内部メモリへ転送する。すなわち、１列の列転送が画像データのＰＥ数幅（８個）の行方向の画像データを外部メモリ２２０から各内部メモリに転送することを意味する。
【００６５】
この時、上述した通り、ＤＭＡ装置は、データの整列を行いながら画像データを転送する。当該整列は、各列転送において、同一の差分アドレステーブルに従って同様に行われる。従って、図７の左上８行×８列＝６４の画素データについてデータ転送が完了した時点で、各ＰＥの内部メモリに格納されている画像データは図８のようになる。すなわち、外部メモリ２２０に記憶されている１列目の画像データはＰＥ４２０の内部メモリ４２２ではなく、ＰＥ幅の画像データの各行におけるデータ転送において４番目に転送される結果、ＰＥ４５０の内部メモリ４５２に格納される。また３列目の画像データはＰＥ４４０ではなく、各行におけるデータ転送において６番目に転送される結果、ＰＥ４７０の内部メモリ４７２に格納される。５列目及び７列目の画像データについても同様である。
【００６６】
最後に、他の単一矩形に対して同一並び替え処理を行いたい場合は、データ転送制御部５１０が、絶対アドレスレジスタに処理したい矩形の先頭アドレスを指定することで、同一処理を行うことが可能となる。
【００６７】
また、差分アドレスはプロセッサの初期設定時、及びプロセッサによる処理中に書き換えることが可能である。差分アドレスの書き換えは、プログラムによる書き換え指示や、ホストＣＰＵにおける指示など、様々な場合が考えられる。
【００６８】
図９に本実施の形態における差分アドレステーブルの更新に関するフローチャートを示す。データ転送制御部５１０は、プロセッサの初期設定時やプロセッサ処理中に、フェッチした命令に差分アドレステーブルの更新が示されていた場合など差分アドレスの書き換え要件が発生した場合、データ転送前に差分アドレスの書き込み操作を開始する（ステップＳ３０１）。
【００６９】
データ転送制御部５１０は、差分アドレステーブルのエントリ０番より順に差分アドレステーブルへの差分アドレスの書き込みを行う（ステップＳ３０２）。書き込んだ差分アドレスの数はカウントされ、当該カウント値ｎと差分アドレステーブルのテーブルエントリ数とを比較する（ステップＳ３０３）。書き込んだ差分アドレスの数がテーブルエントリ数よりも小さい場合は、差分アドレステーブルの現在のエントリに差分アドレスを書き込み（ステップＳ３０４）、エントリをインクリメントする（ステップＳ３０５）。ステップＳ３０３において、テーブルエントリ数と同数の差分アドレスが書き込まれたと判定された時点で全ての差分アドレスレジスタの更新が完了したとして、データの転送処理に移行する（ステップＳ３０６）。
【００７０】
以上のように、外部メモリから複数の処理機構を備えるデータ処理部にデータを転送する本実施の形態１に係るメモリ制御装置は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、複数の差分アドレスを記憶する差分アドレス記憶手段の２種類のアドレス記憶手段を具備する。そして、差分アドレス記憶手段に記憶されている複数の差分アドレスを所定の順序で選択する差分アドレス選択手段により各タイミングで選択される差分アドレスと、絶対アドレス記憶手段に記憶されている絶対アドレスとがメモリアドレス生成手段で組み合わせてメモリアドレスが生成される。データ転送手段であるアービタは、メモリアドレス生成手段より入力したメモリアドレスを外部メモリに入力し、当該メモリアドレスからデータを読み出してデータ処理部にデータを転送する。
【００７１】
以上の構成によれば、外部メモリデータを読み出す際に、メモリの読み出し位置をアドレス生成回路によって変更することで内部メモリ上のデータを、ＰＥ間のデータ通信手段を用いずに整列させることができる。
【００７２】
各ＰＥがアクセスすべき外部メモリのデータ位置は、ＰＥ毎に差分アドレスの形で設定されている。この差分アドレスを、各ＰＥで共通の絶対アドレスと加算することで、各ＰＥがアクセスする外部メモリのアドレスを得られる。このように、差分アドレスの形で外部メモリのアクセス位置を記憶することで、絶対アドレスを変更するだけで異なる矩形に対して同様の処理を行うことができる。例えば、ある画像を１６分割した矩形データ全てに対して同一処理を行う場合、最初の矩形に対する初期設定としてＰＥ毎の差分アドレスと共通の絶対アドレスを設定する。この矩形の処理が完了した場合、次の矩形に対する処理の初期設定は絶対アドレスを書き換えるのみでデータ転送を開始することができる。これに対し、ＰＥ毎に絶対アドレスを使用する場合には、次の矩形を処理する際の初期設定時にＰＥ毎に絶対アドレスを計算する必要がある。ＰＥ毎に絶対アドレスを用いる場合はＰＥ毎の絶対アドレス計算を１６回行うことが必要となるのに対し、差分アドレスを用いた場合は単一の絶対アドレスを計算するのみとなる。このように、差分アドレスを用いることで初期設定に要する処理時間を短縮することが可能となる。
【００７３】
このように、本発明は、ＳＩＭＤプロセッサを用いたデータの並列処理において、所望するデータ配列に規則性がある場合が多いことを利用している。データ整列を行う矩形内の絶対アドレスを一点定めた場合、絶対アドレスと各ＰＥが必要とするデータのアドレスとの差分は一定であることが多い。この点に着目して、ＰＥで共通の絶対アドレス１点と、ＰＥ毎に用意した差分アドレスを組み合わせることで、各ＰＥがアクセスする絶対アドレスを生成することができる。また、ＰＥのアクセス位置を差分アドレスとして記憶するため、絶対アドレスを書き換えるだけで外部メモリにおける処理の開始位置を変更でき、他の単一矩形に対して同様の処理を行うことが可能となる。
【００７４】
また、本発明の構成によれば単一のメモリにおいても適用可能であり、メモリバンクを分割する場合と比較して省面積な構造を実現できる。また、本発明の構成によれば並び替えの範囲がバッファサイズに影響を受けることがないため汎用性の面で優れている。
【００７５】
なお、上記説明では、一列の列転送が完了する毎に転送完了列数レジスタの値がインクリメントして更新され、転送予定列数分の列転送が完了したかどうかを判定する場合について説明したがこれに限るものではない。一列の列転送が完了する毎に転送予定列数レジスタに記憶される転送予定列数の値をデクリメントして更新し、転送予定列数が０になるまでデータ転送が行われる構成としても良い。この場合、転送完了列数レジスタを省略することができる。
【００７６】
＜実施の形態２＞
実施の形態２に係るＤＭＡ装置は、差分アドレスレジスタに記憶される差分アドレステーブルのサイズを更に小さくできる構成とすることで回路規模の小型化を実現していることを特徴とする。以下、図面を参照して本発明の実施の形態２について説明する。なお、実施の形態１で説明した部分については発明の明確化のため一部説明を省略する。
【００７７】
図１０は、本実施の形態２に係るデータ処理装置の構成を示すブロック図である。本実施の形態２では、ＤＭＡ装置が２つの差分アドレステーブルを保持する構成とすることを特徴としている。また、ＤＭＡ装置は、差分アドレステーブル毎にアクセス位置を管理するために２つのポインタレジスタ５６１、５６２を備える。
【００７８】
ＤＭＡ装置は、第１差分アドレスレジスタ５５１と、第２差分アドレスレジスタ５５２を備え、各記憶部にそれぞれ第１差分アドレステーブルと第２差分アドレステーブルが記憶されている。
【００７９】
第１差分アドレステーブルは４つのエントリを持ち、各エントリにそれぞれ１つずつ計４つの差分アドレスが記憶されている。ここでは、データ転送制御部５１０からの初期設定により、第１差分アドレステーブルに"０"、"２"、"１"、"３"、の差分アドレスが記憶されている。
【００８０】
第２差分アドレステーブルは、２つのエントリを持ち、各エントリにそれぞれ１つずつ計２つの差分アドレスが記憶されている。ここでは、データ転送制御部５１０からの初期設定により、第２差分アドレステーブルに"０"、"４"、の差分アドレスが記憶されている。
【００８１】
第１ポインタレジスタ５６１は、第１差分アドレステーブルのアクセス位置を管理する記憶回路であり、第１差分アドレステーブルのエントリのアクセス位置を指定する変数を記憶する。第１ポインタレジスタ５６１の値は、所定のクロック数毎にインクリメントされる。
【００８２】
第２ポインタレジスタ５６２は、第２差分アドレステーブルのアクセス位置を管理する記憶回路であり、第２差分アドレステーブルのエントリのアクセス位置を指定する変数を記憶する。第２ポインタレジスタ５６２の値は、所定のクロック数毎にインクリメントされる。
【００８３】
データ転送制御部５１０は、差分アドレステーブルの更新が必要な場合は、差分アドレステーブルの各エントリに差分アドレスを書き込んで更新する。ここで、データ転送制御部５１０は、第１、第２差分アドレステーブルの両方を更新しても良いし、片方のみを更新しても良い。データ転送制御部５１０は、フェッチした命令に従って必要な差分アドレステーブルの更新を行う。
【００８４】
メモリアドレス生成回路５７０は、絶対アドレスレジスタ５４０に記憶されている絶対アドレスと、第１、第２ポインタレジスタ５６１、５６２がそれぞれ指定する第１、第２差分アドレステーブルのエントリ位置にそれぞれ記憶されている２つの差分アドレスとに基づいて外部メモリアクセス用のアドレスを生成する。
【００８５】
メモリアドレス生成回路５７０で生成されるメモリアドレスの計算式を数式１に示す。メモリアドレス生成回路５７０は、数式１に示すように、絶対アドレスの値と２つのポインタレジスタでそれぞれ指定された２種類の差分アドレスの値の３値を加算して上記アドレスを生成し、生成したアドレスをアービタ５３０に出力する。
【数１】
0005840451.tif 000002
【００８６】
次に、本実施の形態２のＣＰ５００の動作について説明する。
【００８７】
実施の形態１と同様、データ転送を開始するにあたり、データ転送制御部５１０は図４のフローに従い初期設定を行う。なお、ステップＳ１０２における差分アドレステーブルの初期設定として、第１差分アドレステーブルと第２差分アドレステーブルの両方にそれぞれ差分アドレスを書き込む。なお、データ転送の際の整列手法が定まっている場合、すなわち、ＳＩＭＤプロセッサ２３０を用いた処理内容が固定されており、常に特定の整列手法でデータ転送が行われる場合、この差分アドレスは予め用意しておくことができる。更に、データ転送制御部５１０は、絶対アドレスの設定、アドレスオフセットの設定、転送予定列数の設定、転送完了列数のリセット、第１ポインタレジスタ及び第２ポインタレジスタのリセット、をそれぞれ初期設定として行う。
【００８８】
次に、本実施の形態２のＤＭＡ装置が行うデータ転送時の再配列動作の流れを図１１のフローチャートを用いて説明する。
【００８９】
メモリアドレス生成回路５７０は、絶対アドレスレジスタ５４０に記憶されている絶対アドレス"２０００"を読み出す（ステップＳ４０１）。また、第１差分アドレステーブルの中から第１ポインタレジスタ５６１が指し示すエントリ（０番）に格納されている差分アドレス"０"を読み出す（ステップＳ４０２）。更に、第２差分アドレステーブルの中から第２ポインタレジスタ５６２が指し示すエントリ（０番）に格納されている差分アドレス"０"を読み出す（ステップＳ４０３）。
【００９０】
メモリアドレス生成回路５７０は、絶対アドレスの値と、第１、第２差分アドレステーブルの中から第１ポインタレジスタ５６１及び第２ポインタレジスタ５６２でそれぞれ指定された２つの差分アドレスの値とを加算することでリードアドレスを生成する（ステップＳ４０４）。ここでは"２０００"＋"０"＋"０"で"２０００"がリードアドレスとなる。
【００９１】
アービタ５３０は、メモリアドレス生成回路５７０で生成されたリードアドレス "２０００"をメモリに入力して、メモリ上の２０００番地よりデータを読み出してＰＥのバッファへ転送する（ステップＳ４０５）。
【００９２】
続いて、ポインタレジスタの判定と更新が行われる。ポインタレジスタの値は前のサイクルまでにメモリに入力したアドレス数を示している。まず、第２ポインタレジスタ５６２の値が第２差分アドレステーブルのエントリ数−"１" （ここではエントリ数"２"−"１"＝"１"）と等しいかが判定される（ステップＳ４０６）。等しくない場合、第２ポインタレジスタ５６２の値がインクリメントされ（ステップＳ４０７）、ステップＳ４０１に戻る。
【００９３】
ステップＳ４０６の判定において、第２ポインタレジスタ５６２の値が第２差分アドレステーブルのエントリ数−"１"と等しかった場合、第２ポインタレジスタ５６２の値が"０"に設定される（ステップＳ４０８）。更に、第１ポインタレジスタ５６１の値が第１差分アドレステーブルのエントリ数−"１" （ここではエントリ数"４"−"１"＝"３"）と等しいかが判定される（ステップＳ４０９）。等しくない場合、第１ポインタレジスタ５６１の値がインクリメントされ（ステップＳ４１０）、ステップＳ４０１に戻る。
【００９４】
ステップＳ４０９の判定において、第１ポインタレジスタ５６１の値が第１差分アドレステーブルのエントリ数−"１"と等しかった場合、第１ポインタレジスタ５６１の値が"０"に設定される（ステップＳ４１１）。
【００９５】
この段階で、１列の列転送、すなわち１行のＰＥ幅の画像データについてデータ転送が完了した状態となる。従って、絶対アドレス更新回路６１０は、転送完了列数レジスタ６００に記憶されている転送完了列数Ｌ０と転送予定列数レジスタ５９０に初期設定された転送予定列数Ｌとを比較し、未転送列が存在するかを判定する（ステップＳ４１２）。判定の結果、Ｌ０＝Ｌであり、未転送列が存在しない場合は、すべての行について転送が完了したものとして転送処理を終了する。一方、判定の結果、Ｌ０＜Ｌであり、未転送列が存在する場合は、絶対アドレス更新回路６１０は、絶対アドレスの更新を行う（ステップＳ４１３）。その後、転送完了列数レジスタ６００の値がインクリメントされて転送完了列数Ｌ０が更新され（ステップＳ４１４）、次の列の列転送を行うためにステップＳ４０１に戻る。
【００９６】
図１１のフローに従うデータ転送の様子を図１２のタイムチャートを用いて示す。図１２のタイムチャートには、各タイミングにおける（１）絶対アドレスレジスタ５４０からメモリアドレス生成回路５７０に入力される絶対アドレス、（２）第１差分アドレスレジスタ５５１からメモリアドレス生成回路５７０に入力される差分アドレス、（３）第２差分アドレスレジスタ５５２からメモリアドレス生成回路５７０に入力される差分アドレス、（４）アービタ５３０から外部メモリ２２０に入力されるリードアドレス、（５）外部メモリ２２０から一段目のＰＥ４８０のバッファ４８１に転送されるデータ、（６）第１ポインタレジスタの値、（７）第２ポインタレジスタの値、をそれぞれ示している。
【００９７】
このように第１ポインタレジスタ５６１は、２サイクル毎にインクリメントされ、８サイクルで元の"０"に戻る。一方第２ポインタレジスタ５６２は、１サイクル毎にインクリメントされ、２サイクル毎に"０"に戻る。従って、第２ポインタレジスタ５６２は、１列の列転送期間において第２差分アドレステーブルの各エントリを２サイクル毎に繰り返し指定する。
【００９８】
サイクルｔからｔ＋７の各タイミングにおいて、絶対アドレスと２つの差分アドレスを加算した値は順に"２０００"、"２００４"、"２００２"、"２００６"、"２００１"、"２００５"、"２００３"、"２００７"、となることが分かる。従って、サイクルｔからｔ＋７までの処理によって、メモリ上の２０００番地を先頭に"Ｄ０、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７"と配置されていたデータは、"Ｄ０、Ｄ４、Ｄ２、Ｄ６、Ｄ１、Ｄ５、Ｄ３、Ｄ７"という順に整列されて読み出される。この結果は実施の形態１と同様である。ＳＩＭＤプロセッサ２３０には整列したデータ順に順次入力され、整列が完了した状態で各ＰＥの内部メモリに記憶される。
【００９９】
最後に、他の単一矩形に対して同一並び替え処理を行いたい場合、データ転送制御部５１０が絶対アドレスに処理したい矩形の先頭アドレスを指定することで、同一処理を行うことが可能となる。
【０１００】
以上のように、本実施の形態２に係るＤＭＡ装置において、差分アドレス選択手段は、差分アドレス記憶手段に記憶された複数の差分アドレスのいくつかをそれぞれ所定の順序で選択する複数の選択手段を備える。
【０１０１】
具体的には、差分アドレス記憶手段は、複数の差分アドレスが纏められた複数の差分アドレステーブルを記憶する。差分アドレス選択手段は、前記複数の差分アドレステーブルに纏められた前記複数の差分アドレスをそれぞれ所定の順序で選択する複数のポインタレジスタを含む。そして、メモリアドレス生成手段は、複数のポインタレジスタが選択した複数の差分アドレスと絶対アドレスとを組み合わせてメモリアドレスを生成する。
【０１０２】
当該構成によれば、実施の形態１に示した１つの差分アドレステーブルで差分アドレスを管理する場合と比べて、差分アドレステーブルを２つに分割することで、アドレスの組み合わせの自由度が落ちるものの、差分アドレスの記憶容量を削減できる。すなわち、実施の形態１において８エントリだった差分アドレステーブルの合計のエントリ数が、６エントリに削減されている。従って、実装面積の削減および消費電力を削減することができる。更に、初期設定する差分アドレスの数が削減することで、初期設定時に書き込む差分アドレスの数を減らすことができる。これにより、初期設定に要する処理時間を削減することができ、処理の高速化を実現することができる。
【０１０３】
＜実施の形態３＞
実施の形態３に係るＳＩＭＤプロセッサは更に多くのプロセッサエレメントを備えることを特徴とする。多くのデータを一括して処理できる構成とすることで処理の高速化が実現される。以下、図面を参照して本発明の実施の形態３について説明する。なお、実施の形態１及び２で説明した部分については発明の明確化のため一部説明を省略する。
【０１０４】
図１３は、本実施の形態３に係るデータ処理装置の構成を示すブロック図である。ＳＩＭＤプロセッサ２３０は、ＰＥ（０）〜ＰＥ（６３）の６４個のプロセッサエレメントを具備する。
【０１０５】
ＤＭＡ装置は、実施の形態２と同様、２つの差分アドレステーブルを保持する。第１差分アドレステーブルの中からポインタレジスタ５６１で指定される差分アドレスと第２差分アドレステーブルの中からポインタレジスタ５６２で指定される差分アドレスとの組み合わせにより差分アドレスが生成される。第１差分アドレステーブルと第２差分アドレステーブルはそれぞれ同数の８エントリを有するため、データ処理部４００に含まれるＰＥ数と同数である８×８＝６４通りの差分アドレスの組み合わせパターンが存在する。
【０１０６】
メモリアドレス生成回路５７０は、絶対アドレスとこれら２つの差分アドレスとを加算することでＰＥ数に対応する６４通り差分アドレスの種類を生成することができる。なお、メモリアドレス生成回路５７０は、メモリアドレスの計算式として実施の形態２と同様に数式１を用いることができる。
【０１０７】
図１３によれば、第１ポインタレジスタの５６１の値が"１"であり、第２ポインタレジスタ５６２の値が"３"となっている。従って、第１差分アドレステーブルの１番目のエントリに記憶された"４"と第２アドレステーブルの３番目のエントリに記憶された"４８"の値がそれぞれ差分アドレスとしてメモリアドレス生成回路５７０に入力される。メモリアドレス生成回路５７０は、これら２つの差分アドレスと絶対アドレスレジスタ５４０より入力した絶対アドレス"２０００"の値を加算してリードアドレス"２０５２"を生成する。アービタ５３０は、外部メモリ２２０に対して当該リードアドレスを入力し、２０５２番地に格納されているデータを転送する。
【０１０８】
実施の形態３に係るＤＭＡ装置のデータ転送の処理フローを図１４に示す。なお、図１４で示す処理フローは、実施の形態２に係るＤＭＡ装置のデータ転送動作と同等であるため説明を省略する。なお、本実施の形態３では、第１差分アドレステーブルと第２差分アドレステーブルのエントリ数が"８"であるため、図１１のフローチャートと比較して、ステップＳ５０６とステップＳ５０９において、それぞれポインタレジスタ５６２の値とポインタレジスタ５６１の値は"７"と等しいかどうかの判定が行われることになる。
【０１０９】
以上のように、本実施の形態３のＳＩＭＤプロセッサは、実施の形態２より多くのプロセッサエレメントを備えるため、差分アドレステーブルを２つに分割することによる実装面積の削減および消費電力を削減する効果、及び、処理の高速化を実現する効果が顕著になる。すなわち、１つの差分アドレステーブルで差分アドレスを管理する場合は６４エントリ必要なのに対し、本実施の形態では１６エントリで済み、４８エントリ分の差分アドレステーブルを記憶する記憶回路の実装面積が削減及び４８エントリ分の差分アドレスの書き込み設定が不要となる。
【０１１０】
＜実施の形態４＞
実施の形態４に係るＤＭＡ装置は、差分アドレステーブルを更に複数に分割することで回路規模の削減及び初期設定時の高速化を図ることを特徴とする。以下、図面を参照して本発明の実施の形態４について説明する。なお、実施の形態１〜３で説明した部分については発明の明確化のため一部説明を省略する。
【０１１１】
図１５は、本実施の形態４に係るＳＩＭＤプロセッサの構成を示すブロック図である。ＳＩＭＤプロセッサ２３０は６４個のプロセッサエレメントを具備する。更に、ＳＩＭＤプロセッサ２３０内のＤＭＡ装置は、６種類の差分アドレステーブルを備える。すなわち、ＤＭＡ装置は、第１差分アドレスレジスタ５５１〜第６差分アドレスレジスタ５５６の６つの記憶部にそれぞれ差分アドレステーブルが記憶されている。図１５に示すように、各差分アドレステーブルはそれぞれ２つのエントリを持つ。また、各差分アドレステーブルのエントリを指定するために、ＤＭＡ装置は、第１ポインタレジスタ５６１〜第６ポインタレジスタ５６６の６つのポインタレジスタを備える。
【０１１２】
当該構成においても、２×２×２×２×２×２＝６４通りの差分アドレスの組み合わせパターンによりＰＥ数分の差分アドレスを生成することができる。メモリアドレス生成回路５７０は、第１〜第６ポインタレジスタで指定された６個の差分アドレスと絶対アドレスレジスタ５４０より入力した絶対アドレスとを加算してリードアドレスを生成する。メモリアドレス生成回路５７０で生成されるメモリアドレスの計算式を数式２に示す。
【数２】
0005840451.tif 000003
【０１１３】
図１５の例では、各差分アドレステーブルに対する第１、第３、第４、第６ポインタレジスタが指定するエントリが０番であり、第２、第５ポインタレジスタが指定するエントリが１番となっている。従って、第１〜第６の差分アドレステーブルより、順に"０"、"２"、"０"、"０"、"１６"、"０"、の値が差分アドレスとして選択されてメモリアドレス生成回路５７０に入力される。
【０１１４】
メモリアドレス生成回路５７０は、絶対アドレスレジスタ５４０から入力した絶対アドレス"２０００"に上記６つの差分アドレスを加算した"２０１８"をリードアドレスとして生成してアービタ５３０に入力する。アービタ５３０は、当該リードアドレスを外部メモリ２２０に入力し、メモリ上の２０１８番地よりデータを読み出してＰＥの内部メモリへ転送する。
【０１１５】
次に、本実施の形態４のＣＰ５００の動作について説明する。
【０１１６】
実施の形態１と同様、データ転送を開始するにあたり、データ転送制御部５１０は図４のフローに従い初期設定を行う。なお、ステップＳ１０２における差分アドレステーブルの初期設定として、第１差分アドレステーブルから第６差分アドレスの６個の差分アドレステーブルにそれぞれ差分アドレスを書き込む。更に、データ転送制御部５１０は、絶対アドレスの設定、アドレスオフセットの設定、転送予定列数Ｌの設定、転送完了列数のリセット、第１ポインタレジスタから第６ポインタレジスタの全ポインタレジスタのリセット、をそれぞれ初期設定として行う。
【０１１７】
次に、本実施の形態２のＤＭＡ装置が行うデータ転送時の再配列動作の流れを図１６のフローチャートを用いて説明する。
【０１１８】
まず、クロックサイクルが初期化されCycle＝１にセットされる（ステップＳ６０１）。次に、メモリアドレス生成回路５７０に絶対アドレスが絶対アドレスレジスタ５４０から出力される（ステップＳ６０２）。次に、差分アドレステーブル及びポインタレジスタを指定する番号であるＮｏが"１"にセットされる（ステップＳ６０３）。次に、Ｎｏ＞６であるかが判定される（ステップＳ６０４）。
【０１１９】
当該判定において、Ｎｏ＜６であれば、加算されていない差分アドレスがあることを意味する。メモリアドレス生成回路５７０は、当該Ｎｏの差分アドレステーブルであって対応するポインタレジスタで指定されている差分アドレスの値を既に読み出した絶対アドレスに加算する（ステップＳ６０５）。次に、ＮｏをインクリメントしてステップＳ６０４に戻る。
【０１２０】
ステップＳ６０４の判定において、Ｎｏ＞６である場合は、第１差分アドレステーブルから第６差分アドレステーブルまでの全ての差分アドレステーブルより１つずつ差分アドレスが指定されて加算されたことを示している。そこでアービタ５３０は、メモリアドレス生成回路５７０にてこれまでに加算されて生成されたアドレスをリードアドレスとして外部メモリ２２０に入力し、データ転送を行う（ステップＳ６０７）。
【０１２１】
次に、各ポインタレジスタの更新が行われる。各ポインタレジスタはメモリへのアドレス入力数を記憶する機能も兼ねている。カウントは０から６３までの６ｂｉｔであり、各ポインタレジスタの値はこのカウンタの特定の１ｂｉｔを意味する。ステップＳ６０８〜ステップＳ６１６では、この６ｂｉｔカウンタの更新を行っている。ただし、最上位ビットは第１ポインタレジスタ５６１の値、最下位ビットは第６ポインタレジスタ５６６の値である。
【０１２２】
まず、第６ポインタレジスタ５６６の値が"０"であるかどうかを判定する（ステップＳ６０８）。第６ポインタレジスタ５６６の値が"０"の場合は、インクリメントされて第６ポインタレジスタ５６６の値が"１"に設定される（ステップＳ６０９）。第６ポインタレジスタ５６６の値が"０"でない場合は、第６ポインタレジスタ５６６の値が"０"に設定される（ステップＳ６１０）。同様の設定処理が第１ポインタレジスタ５６１〜第５ポインタレジスタ５６５についても行われる（ステップＳ６１１〜ステップＳ６１６）。
【０１２３】
全ポインタレジスタの更新が完了した場合、現在のCycle値がcycle＝６３であるかが判定される（ステップＳ６１７）。判定の結果、cycle≠６３であった場合は、cycle値をインクリメントし（ステップＳ６１８）、ステップＳ６０２に戻って次のサイクルを開始する。一方、判定の結果、cycle＝６３であった場合は、１列の列転送が完了したことを意味しているため、未転送列が存在するかが判定される（ステップＳ６１９）。すなわち、絶対アドレス更新回路６１０は、転送予定列数Ｌと転送完了列数Ｌ０とを比較する。比較の結果Ｌ０＝Ｌであった場合は、全ての列の列転送が完了したとしてデータ転送処理を終了し、データ転送制御部５１０からの次のデータ転送指示を待つ。一方、ステップＳ６１６の判定の結果Ｌ０＜Ｌである場合は、未転送列が存在するため、絶対アドレス更新回路６１０は、絶対アドレスの更新を行う（ステップＳ６２０）。更に、転送完了列数レジスタ６００における転送完了列数Ｌ０を更新してステップＳ６０１に戻り（ステップＳ６２１）、次の列についてデータ転送処理を行う。
【０１２４】
差分アドレステーブルをＰＥ数（６４）の対数である６つに分割し、各差分アドレステーブルに対応するポインタレジスタを備える構成とすることで、実施の形態３よりも差分アドレスの記憶容量を削減している（実施の形態３は１６エントリ、実施の形態４は１２エントリ）。ＰＥ数の対数値だけ差分アドレステーブルを分割する本実施の形態４の方式が、本発明において差分アドレステーブルの容量を最小化する構成となる。
【０１２５】
＜実施の形態５＞
本実施の形態５に係るＤＭＡ装置は、２セットの差分アドレステーブルを持つことを特徴とする。但し、本実施の形態５は、上述した実施の形態２〜４が複数の差分アドレステーブルの各々から選択される差分アドレスを組み合わせることでＰＥ数と同数の差分アドレスを生成するのと異なり、ＰＥ数の２倍の差分アドレスを保持する。データ転送時に使用する差分アドレステーブルが切り替える構成とすることで処理の高速化を実現している。以下、図面を参照して本発明の実施の形態５について説明する。なお、実施の形態１〜４で説明した部分については発明の明確化のため一部説明を省略する。
【０１２６】
図１７は、本実施の形態５に係るデータ処理装置の構成を示すブロック図である。ＳＩＭＤプロセッサ２３０は、８個のプロセッサエレメントを備える。また、ＳＩＭＤプロセッサ２３０に含まれるＤＭＡ装置は、第１差分アドレスレジスタ５５１と第２差分アドレスレジスタ５５２を備える。第１差分アドレスレジスタ５５１と第２差分アドレスレジスタ５５２には、それぞれ差分アドレステーブルＡと差分アドレステーブルＢが記憶されている。各差分アドレステーブルは、ＰＥ数と同数の８エントリを有する。
【０１２７】
次に、本実施の形態５のＤＭＡ装置が行うデータ転送時の再配列動作の流れを図１８のフローチャートを用いて説明する。
【０１２８】
データ転送制御部５１０は、ＤＭＡ装置が保持する２つの差分アドレステーブルの内、どちらの差分アドレスを使用するかを決定する（ステップＳ７０１）。差分アドレステーブルＡを使用すると決定した場合は、メモリアドレス生成回路５７０に差分アドレスを供給するテーブルを差分アドレステーブルＡにセットする（ステップＳ７０２）。一方、差分アドレステーブルＢを使用すると決定した場合は、メモリアドレス生成回路５７０に差分アドレスを供給するテーブルを差分アドレステーブルＢにセットする（ステップＳ７０３）。
【０１２９】
以降、セットされた差分アドレステーブルよりポインタレジスタで指定されて供給される差分アドレスを用いてメモリアドレスが生成される。データ転送制御部５１０はフェッチした命令に従って初期設定時や処理内容変更時などに使用する差分アドレステーブルの切り替え制御を行う。なお、以降の処理の流れは、図５と同様であるため説明を省略する。
【０１３０】
以上のように、本実施の形態５に係るＤＭＡ装置において、差分アドレス記憶手段は、メモリアドレス生成用に使用される複数の差分アドレステーブルを記憶する。そして差分アドレス記憶手段に記憶されている複数の差分アドレステーブルの中から使用する差分アドレステーブルを選択する差分アドレステーブル選択手段を備える。
【０１３１】
当該構成によれば、２セットの差分アドレスを持つことで差分アドレスの更新処理の手間を削減する。例えば１転送毎に２種類の差分アドレスを交互に使用したい場合、実施の形態１では転送の完了ごとに差分アドレステーブルを書き換える必要がある。それに対して、本実施の形態５のＤＭＡ装置では、転送開始時に使用する差分アドレステーブルを指定するだけで、使用する差分アドレスを切り替えることができる。差分アドレステーブルを書き換える処理を省略できるため、電力消費と処理時間の面で実施の形態１のＤＭＡ装置よりも優位である。
【０１３２】
なお、本実施の形態５のＤＭＡ装置は２セットの差分アドレステーブルを保持しているが、３セット以上の差分アドレステーブルを持つ構成とすることができる。ＳＩＭＤプロセッサに要求される処理内容の切り替え頻度等を考慮して、何セットの差分アドレステーブルを記憶可能な構成とするかを適宜設計することが可能である。予めＳＩＭＤプロセッサに要求される処理の種類が決まっている場合は、当該処理の種類数に対応する数の差分アドレステーブルを記憶しておくと更に処理の高速化を図れる。すなわち、差分アドレステーブルの更新が不要となり、ＳＩＭＤプロセッサで実行する処理の切り換えに応じて使用する差分アドレステーブルを切り換えるだけでよいため、直ちに次の処理に移ることができる。
【０１３３】
また、本実施の形態５を実施の形態２〜４と組み合わせることも可能である。すなわち、ＤＭＡ装置は、ＰＥ数より少ないエントリをもつ差分アドレステーブルを複数記憶し、データ転送制御部が使用する差分アドレステーブルの組み合わせを切り替える構成とすることも可能である。
【０１３４】
以上、各実施の形態で説明したように、本発明によれば、外部メモリのアクセス位置を矩形データの先頭アドレスとＳＩＭＤプロセッサ内の各ＰＥ用の差分アドレスの組み合わせによって所望の順番で指定するができる。従って、外部メモリよりデータを整列した状態でプロセッサエレメントの内部メモリに転送できるため、処理実行前の内部メモリ間でのデータ転送処理を省略することができ、処理の高速化を実現することができる。
【０１３５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本発明は以下の構成とすることができる。
【０１３６】
図１９に、本発明のメモリ制御装置１０００の構成を示すブロック図を示す。メモリ制御装置１０００は、絶対アドレス記憶部１０１０と、差分アドレス記憶部１０２０と、差分アドレス選択部１０３０と、メモリアドレス生成部１０４０と、データ転送部１０５０と、を具備する。
【０１３７】
絶対アドレス記憶部１０１０は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する。ここで所定のデータ転送期間とは、複数の処理機構ＰＥの全てに１単位のデータを供給するデータ転送である列転送を一列行う期間となる。
【０１３８】
差分アドレス記憶部１０２０は、複数の差分アドレスを記憶する。複数の差分アドレスは纏めて差分アドレステーブルとして記憶することができる。差分アドレス記憶部１０２０は、複数の差分アドレスが纏められた複数の差分アドレステーブルを記憶する構成とすることも可能である。
【０１３９】
差分アドレス選択部１０３０は、差分アドレス記憶部１０２０に記憶されている複数の差分アドレスを所定の順序で選択（指定）する。差分アドレス選択部１０３０は、具体的には差分アドレステーブルに纏められた複数の差分アドレスを１つずつ所定の順序で指定するポインタレジスタなどで構成される。差分アドレス選択部１０３０は、差分アドレス記憶部１０２０に記憶される差分アドレステーブルの数に対応して複数のポインタレジスタを含む構成とすることができる。
【０１４０】
メモリアドレス生成部１０４０は、差分アドレス選択部１０３０が選択した差分アドレスと絶対アドレスとを組み合わせてメモリアドレスを生成する。差分アドレスが２系統の記憶回路に記憶される場合は、メモリアドレス生成部１０４０は、単一の絶対アドレスと２種類の差分アドレスの３種類を組み合わせて外部メモリアクセス用のアドレスを生成する。
【０１４１】
データ転送部１０５０は、メモリアドレス生成部１０４０で生成されるメモリアドレスを外部メモリに入力し、当該外部メモリ上のメモリアドレスからデータを読み出してデータを転送する。
【０１４２】
このように構成することでデータ整列を行った状態でデータをデータ処理部へ転送することができる。
【０１４３】
また、本発明のメモリ制御装置は、図２０に示すメモリ制御装置２０００の構成とすることができる。メモリ制御装置２０００は、アドレスオフセット記憶部２０４０と、絶対アドレス更新部２０５０と、を更に備える。
【０１４４】
アドレスオフセット記憶部２０４０は、絶対アドレス更新用のアドレスオフセットを記憶する。
【０１４５】
絶対アドレス更新部２０５０は、絶対アドレス記憶部１０１０に記憶される絶対アドレスを更新する。具体的には、絶対アドレス更新部２０５０は、メモリアドレス生成部１０４０がデータ処理部に含まれる処理機構数分のメモリアドレスを生成する毎に、絶対アドレス記憶部１０１０に記憶されている絶アドレスとアドレスオフセット記憶部２０４０に記憶されているアドレスオフセットを加算することで新たな絶対アドレスを生成する。
【０１４６】
絶対アドレス更新部２０５０は、生成した絶対アドレスを絶対アドレス記憶部１０１０に記憶させることで絶対アドレスを更新する。
【０１４７】
当該構成とすることで、絶対アドレス更新部２０５０が、列転送が完了する毎に絶対アドレスを更新するため、連続してデータ転送を継続することができる。
【０１４８】
また、本発明のメモリ制御装置は、図２１に示すメモリ制御装置３０００の構成とすることができる。メモリ制御装置３０００は、転送予定列数記憶部３０６０と、転送予定列数更新部３０７０と、を備える。
【０１４９】
転送予定列数記憶部３０６０は、データ処理部に含まれる複数の処理機構の全てに１単位のデータを供給するデータ転送である列転送の予定数である転送予定列数を記憶する。
【０１５０】
転送予定列数更新部３０７０は、１列の列転送が完了する毎に転送予定列数記憶部３０６０に記憶されている前記転送予定列数をデクリメントして更新する。
【０１５１】
絶対アドレス更新部２０５０は、１列の列転送が完了する毎に転送予定列数記憶部３０６０に記憶されている更新済みの転送予定列数を参照し、転送予定列数が０の場合は、全ての列転送が完了したものとして絶対アドレスの更新は行わない。
【０１５２】
また、メモリアドレス生成部１０４０も、全ての列転送が完了したものとしてメモリアドレスの生成を終了する。データ転送部１０５０も、全ての列転送が完了したものとしてデータ転送を終了する。
【０１５３】
当該構成とすることで、初期設定等で予め設定した転送予定列数分の列転送を自動的に行うことができる。なお、図２２に示すメモリ制御装置４０００の構成としても同様に予め設定した転送予定列数分の列転送を自動的に行うことができる。メモリ制御装置４０００は、更に転送完了列数記憶部４０８０と、転送完了列数更新部４０９０と、を具備する。一方、メモリ制御装置３０００と比較して、転送予定列数更新部３０７０を備えておらず、転送予定列数記憶部３０６０は、初期設定時に設定された転送予定列数をそのまま保持する。
【０１５４】
転送完了列数記憶部４０８０は、これまでに完了した列転送の数である転送完了列数を記憶する。
【０１５５】
転送完了列数更新部４０９０は、１列の列転送が完了する毎に転送完了列数記憶部４０８０に記憶されている前記転送完了列数をインクリメントして更新する。
【０１５６】
絶対アドレス更新部２０５０は、１列の列転送が完了する毎に転送予定列数記憶部３０６０に記憶されている転送予定列数と転送完了列数記憶部４８０に記憶されている転送完了列数を比較する。転送完了列数が転送予定列数と等しい場合は、全ての列転送が完了したものとして絶対アドレスの更新は行わない。また、メモリアドレス生成部１０４０も、全ての列転送が完了したものとしてメモリアドレスの生成を終了する。データ転送部１０５０も、全ての列転送が完了したものとしてデータ転送を終了する。このように構成しても良い。
【０１５７】
その他、メモリ制御装置は、データ転送に必要となる各種パラメータ設定部を備える構成としても良い。パラメータ設定部は、絶対アドレス、差分アドレス、アドレスオフセット、転送予定列数、をそれぞれ絶対アドレス記憶部１０１０、差分アドレス記憶部１０２０、アドレスオフセット記憶部２０４０、転送予定列数記憶部３０６０、にそれぞれデータ転送用のパラメータとして設定しても良い。
【０１５８】
また、本発明は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する第１レジスタと、複数の差分アドレスを記憶する第２レジスタと、前記複数の差分アドレスを所定の順序で指定するポインタレジスタと、前記ポインタレジスタが選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成回路と、前記メモリアドレス生成回路で生成されるメモリアドレスをメモリに入力し、前記メモリアドレスからデータを読み出して転送するデータ転送回路と、を具備する半導体集積回路とすることができる。
【０１５９】
また、本発明は、上記メモリ制御装置を備えるデータ処理装置に加え、画像データを取得するカメラ（画像撮像装置）と、画像データを表示するディスプレイ（画像表示装置）を備える画像処理システムとすることも可能である。上記データ処理装置は、前記カメラより画像データを入力して内部のメモリ（データ記憶手段）に記憶し、上記ＤＭＡ装置を用いてデータ整列を行った状態でメモリからデータ処理部にデータ転送を行い、データ処理部が所定のデータ処理を行い、ディスプレイに処理後の画像データを出力する。このように構成しても良い。
【０１６０】
また、上記説明では画像などの２次元データを処理する場合について説明したが、これに限るものではなく、メモリに記憶されているデータを整列して読み出すことデータ処理の高速化を行える様々なデータ処理技術に適用することができる。
【０１６１】
また、上記説明において、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェアとソフトウェア（プログラム）の組合せによっていろいろな形で実現できることは当業者には理解されるところであり、ハードウェアとソフトウェアのいずれかに限定されるものではない。
【０１６２】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１６３】
１１０  カメラ                          １２０  レーダ
２００  データ処理装置                  ２２０  メモリ
２３０  ＳＩＭＤプロセッサ              ２４０  バス
３１０  ディスプレイ                    ３２０  ブレーキ
３３０  駆動装置                        ４００  データ処理部
４１０、４２０、４３０、４４０、４５０、４６０、４７０、４８０  ＰＥ
４１１、４２１、４３１、４４１、４５１、４６１、４７１、４８１  バッファ
４１２、４２２、４３２、４４２、４５２、４６２、４７２、４８２  内部メモリ
４１３、４２３、４３３、４４３、４５３、４６３、４７３、４８３  演算処理部
５００  ＣＰ（コントロールプロセッサ）  ５１０  データ転送制御部
５２０  命令・データキャッシュ          ５３０  アービタ
５４０  絶対アドレスレジスタ            ５５０  差分アドレスレジスタ
５６０  ポインタレジスタ                ５７０  メモリアドレス生成回路
５８０  アドレスオフセットレジスタ      ５９０  転送予定列数レジスタ
６００  転送完了列数レジスタ            ６１０  絶対アドレス更新回路
１０００、２０００、３０００、４０００    メモリ制御装置
１０１０  絶対アドレス記憶部          １０２０  差分アドレス記憶部
１０３０  差分アドレス選択部          １０４０  メモリアドレス生成部
１０５０  データ転送部                ２０４０  アドレスオフセット記憶部
２０５０  絶対アドレス更新部          ３０６０  転送予定列数記憶部
３０７０  転送予定列数更新部          ４０８０  転送完了列数記憶部
４０９０  転送完了列数更新部
【図１】
0005840451.tif 000004
【図２】
0005840451.tif 000005
【図３】
0005840451.tif 000006
【図４】
0005840451.tif 000007
【図５】
0005840451.tif 000008
【図６】
0005840451.tif 000009
【図７】
0005840451.tif 000010
【図８】
0005840451.tif 000011
【図９】
0005840451.tif 000012
【図１０】
0005840451.tif 000013
【図１１】
0005840451.tif 000014
【図１２】
0005840451.tif 000015
【図１３】
0005840451.tif 000016
【図１４】
0005840451.tif 000017
【図１５】
0005840451.tif 000018
【図１６】
0005840451.tif 000019
【図１７】
0005840451.tif 000020
【図１８】
0005840451.tif 000021
【図１９】
0005840451.tif 000022
【図２０】
0005840451.tif 000023
【図２１】
0005840451.tif 000024
【図２２】
0005840451.tif 000025