説明

メモリ制御装置、メモリ制御方法、データ処理装置、画像処理システム

【課題】回路規模を抑えつつデータ整列が完了した状態で外部メモリから内部メモリにデータを転送する方法が求められていた。
【解決手段】本発明のメモリ制御装置は、外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御装置であって、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、複数の差分アドレスを記憶する差分アドレス記憶手段と、複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、差分アドレス選択手段が選択した差分アドレスと絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、メモリアドレス生成手段で生成されるメモリアドレスを外部メモリに入力し、メモリアドレスからデータを読み出してデータ処理手段にデータを転送するデータ転送手段と、を具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はメモリ制御技術及びデータ処理技術に関し、特にSIMD(Single Instruction Multiple Data)プロセッサ向けのDMA(Direct Memory Access)制御技術及びデータ処理技術に関する。
【背景技術】
【0002】
データ処理の高速化のために、複数の演算処理機構を持つ半導体集積回路が使用され始めている。特許文献1には、円環状の通信経路である一方向のリングバスによって複数の処理モジュールであるプロセッシングエレメントが接続されたSIMDプロセッサが開示されている。
【0003】
SIMDプロセッサを構成する各プロセッシングエレメントはそれぞれ内部メモリを持ち、外部メモリに格納されているデータがDMA(Direct Memory access)装置によるデータ転送制御に従って内部メモリに転送される。DMA装置は、アドレス生成回路を備え、アドレスを1つずつインクリメントさせながらリードアドレスを生成することで外部メモリのアドレス順にデータが読み出されて内部メモリに格納される。DMA装置は、プロセッシングエレメント全てに1単位のデータを供給する列転送を予め指定した列数分行い、2次元データを内部メモリに格納する。各プロセッシングエレメントは、当該リングバスに接続されているコントロールプロセッサからの制御に従い、内部メモリに格納されたデータに対して所定の演算処理を実行する。
【0004】
ここで、SIMDプロセッサを用いて画像データ処理で必要となる行列演算処理を行うためには、処理に先だってデータ整列を行う必要がある。そのため、外部メモリよりプロセッシングエレメントの内部メモリにデータを転送させた後、データ整列命令を実行することでデータを他のプロセッシングエレメントに転送してデータの再配置を行う必要がある。
【0005】
しかしながら、データの初期配置時には多数のデータをプロセッシングエレメント間で転送する必要があるため、プロセッシングエレメント間でのデータ転送による遅延が発生する。当該遅延は、計算処理の並列化による性能向上を図る上での課題となっている。
【0006】
このため、データを外部メモリからプロセッシングエレメントに読み込む際に、データ配置を変更する手法が提案されている。例えば、特許文献2には、複数のメモリバンクに対して個別に読み出しアドレスを供給してデータを取り出すことでデータの整列を行う技術が開示されている。また、特許文献3には、外部メモリから読み込んだデータをバッファに一時格納し、複数のテーブルの値によってデータ順を並び替える技術が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2010−277429号公報
【特許文献2】特開2005−309499号公報
【特許文献3】特開2010−170164号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献2のSIMDプロセッサでは、データ配置を制御した上で演算器にデータを供給できるため、演算命令に先立ってデータ整列命令を実行する必要が無く処理の高速化を実現できる。しかしながら、特許文献2のデータ整列方法は、複数のメモリバンクに対して個別に読み出しアドレスを供給する必要があるため、メモリバンクを分割しなければならない。そのため、アドレスデコーダ等の周辺回路が増加することによって回路の面積規模が大きくなるという課題がある。
【0009】
また、特許文献3のデータ整列方法において並び替えられるデータは、バッファに一時的に記憶されたデータのみであり、並び替えられるデータの範囲に制約があるという課題がある。
【0010】
このように、従来のデータ整列方法では、回路規模を抑えつつデータ整列が完了した状態で外部メモリから内部メモリにデータを転送することができなかった。
【課題を解決するための手段】
【0011】
本発明の第1態様であるメモリ制御装置は、外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御装置であって、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、複数の差分アドレスを記憶する差分アドレス記憶手段と、前記複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、前記差分アドレス選択手段が選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、前記メモリアドレス生成手段で生成されるメモリアドレスを前記外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送するデータ転送手段と、を具備する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送を行うことができる。
【0012】
また、本発明の第2態様であるメモリ制御方法は、外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御方法であって、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶し、複数の差分アドレスを記憶し、前記複数の差分アドレスを所定の順序で選択し、前記選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成し、前記生成したメモリアドレスを外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送を行うことができる。
【0013】
また、本発明の第3態様であるデータ処理装置は、少なくとも内部メモリと演算回路とをそれぞれ含む複数の処理機構が直列に接続されているデータ処理手段と、前記データ処理手段を制御する制御手段と、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、複数の差分アドレスを記憶する差分アドレス記憶手段と、前記複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、前記差分アドレス選択手段が選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、前記メモリアドレス生成手段で生成されるメモリアドレスを外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送するデータ転送手段と、を具備する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送が行われるため、データ処理手段においてデータ整列命令を実行することなくそのままデータを処理することができる。
【0014】
また、本発明の第4態様である画像処理システムは、データを一時記憶する外部メモリと画像を撮像して前記外部メモリに格納する画像撮像装置と、前記外部メモリに一時記憶された画像データを読み込んで所定のデータ処理を行う本発明の第3態様であるデータ処理装置と、前記データ処理装置で前記所定のデータ処理が行われた後の画像データを表示する画像表示装置と、を備える。当該構成によれば、カメラ等の画像撮像装置で撮像されて外部メモリにそのままの形で格納される画像データに対して高速で認識処理やマッチング処理等所定の処理を行って、画像データをディスプレイ等の画像表示装置で表示できることで、ユーザに対するレスポンスを早めることができる。
【0015】
また、本発明の第5態様である半導体集積回路は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する第1レジスタと、複数の差分アドレスを記憶する第2レジスタと、前記複数の差分アドレスを所定の順序で指定するポインタレジスタと、前記ポインタレジスタが選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成回路と、前記メモリアドレス生成回路で生成されるメモリアドレスをメモリに入力し、前記メモリアドレスからデータを読み出して転送するデータ転送回路と、を具備する。当該構成によれば、絶対アドレス及び差分アドレスを組み合わせて順次メモリアドレスを生成してデータを読み込むことで、データ整列が完了した状態でデータ転送を行うことができる。
【発明の効果】
【0016】
本発明の構成によれば、回路規模を抑えつつデータ整列が完了した状態で外部メモリから内部メモリにデータを転送することができ、処理の高速化を実現することができる。
【図面の簡単な説明】
【0017】
【図1】実施の形態1に係るデータ処理システムの構成を示す図である。
【図2】実施の形態1に係るSIMDプロセッサの構成を示す図である。
【図3】実施の形態1に係るデータ処理装置の構成を示す図である。
【図4】実施の形態1に係るデータ転送における初期設定の流れを示すフローチャートである。
【図5】実施の形態1に係るデータ転送の流れを示すフローチャートである。
【図6】実施の形態1に係るデータ転送のタイミングチャートである。
【図7】実施の形態1に係る画像データを切り出して転送する方法を説明する図である。
【図8】図7に示す切り出された画像データが内部メモリに格納されている様子を説明する図である。
【図9】実施の形態1の差分アドレスの更新の流れを示すフローチャートである。
【図10】実施の形態2に係るデータ処理装置の構成を示す図である。
【図11】実施の形態2に係るデータ転送の流れを示すフローチャートである。
【図12】実施の形態2に係るデータ転送のタイミングチャートである。
【図13】実施の形態3に係るデータ処理装置の構成を示す図である。
【図14】実施の形態3に係るデータ転送の流れを示すフローチャートである。
【図15】実施の形態4に係るSIMDプロセッサの構成を示す図である。
【図16】実施の形態4に係るデータ転送の流れを示すフローチャートである。
【図17】実施の形態5に係るデータ処理装置の構成を示す図である。
【図18】実施の形態5に係るデータ転送の流れを示すフローチャートである。
【図19】本発明のメモリ制御装置の構成を示すブロック図である。
【図20】本発明のメモリ制御装置の構成を示すブロック図である。
【図21】本発明のメモリ制御装置の構成を示すブロック図である。
【図22】本発明のメモリ制御装置の構成を示すブロック図である。
【発明を実施するための形態】
【0018】
本発明の実施の形態について以下に図面を参照して説明する。以下の説明は、本発明の好適な実施の形態を示すものであって、本発明の範囲が以下の実施の形態に限定されるものではない。なお、各図面において、同一の符号が付されたものは実質的に同様の内容を示しており、必要に応じて重複説明は省略されている。
【0019】
<実施の形態1>
以下、図面を参照して本実施の形態1について説明する。図1は、本発明に係るデータ処理システムの全体構成を示す図である。データ処理システムは、入力系装置群100と、データ処理装置200と、出力系装置群300と、を備える。
【0020】
入力系装置群100は、取得したデータをデータ処理装置200に入力するための装置であり、例えば、カメラ(画像撮影装置)110や、レーダ120などを含む。カメラ110は、画像を撮影して取得した画像データをデータ処理装置200に入力する。またレーダ120は、反射電波などを検出して取得した受信データをデータ処理装置200に入力する。
【0021】
データ処理装置200は、入力系装置群100より入力したデータに対して所定のデータ処理を行い、処理後のデータを後段の出力系装置群300に出力する。データ処理装置200は、CPU(Central Processing Unit)210と、メモリ220と、SIMDプロセッサ230とを備え、これら各ブロックがバス240を介してお互い接続されている。データ処理装置200の上記各構成要素は、1チップの半導体回路上に実装することができる。CPU210は、データ処理装置200の全体制御を行う。メモリ220は、CPU210の制御に従い、入力系装置群100より入力したデータを一時的に記憶する。SIMDプロセッサ230は、CPU210の制御に従い、メモリ220に記憶されているデータを読み出して所定の演算・加工処理を行う。データ処理装置200が行う演算・加工処理の具体例としては、入力した画像データに人物が映っているかを認識する認識処理や、障害物や道路の白線を検出する検出処理などがある。
【0022】
出力系装置群300は、バス240を介してデータ処理装置200より入力したデータを外部へ出力する。出力系装置群300は、例えばディスプレイ(画像表示装置)310や、ブレーキ320、駆動装置330、その他アクチュエータなどを含む。ディスプレイ310は、データ処理装置200より出力された加工処理後の画像データを表示する。ブレーキ320は、データ処理装置200で算出された速度調整用の制御データに基づいてブレーキを操作させる。駆動装置330は、モータやエンジンであり、データ処理装置200で算出された速度調整用の制御データに基づいて供給電圧やスロットバルブを調整して回転速度等を制御する。
【0023】
以下の説明では、入力系装置群100は、具体的にカメラ110であるとし、出力系装置群300は、具体的にディスプレイ310であるとして説明する。すなわち、データ処理システムは、画像処理システムであるとして説明する。
【0024】
次に、データ処理装置200の具体的構成について詳しく説明する。カメラ110で取得された画像データは、CPU210の制御に従ってメモリ220に格納される。SIMDプロセッサ230は、メモリ220にそのままの形で格納されている画像データを後述する読み出し方法に従って読み出し、内部の演算機構で所定の演算・加工処理を行い、処理後の画像データをメモリ220に再格納する。メモリ220に格納されている演算処理後の画像データは、CPU210の制御に従ってバス240を介してディスプレイ310に出力される。
【0025】
図2は、SIMDプロセッサ230の構成を示すブロック図である。SIMDプロセッサ230は、複数のデータ処理機構である複数のプロセッシングエレメント(Processing Element、以下PEと称す)を含むデータ処理部400と、各PEを制御するコントロールプロセッサ(Control Processor、以下CPと称す)500とを備える。
【0026】
データ処理部400は、PE410〜480の8個のPEを具備し、これらのPEは各円環状の通信経路である一方向のリングバスによって直列に接続されている。各PEは同一の構成をとるため、以下では代表してPE410の構成について説明する。なお、以下の説明ではデータ処理部400をPEアレイと称することがある。
【0027】
PE410は、バッファ411と、内部メモリ412と、演算処理部413と、を備える。
【0028】
バッファ411は、隣接するPE420に含まれるバッファ421及びCP500とリングバスにより接続されている。バッファ411は隣接するバッファ421より送られてきたデータを保持し、次のクロックで当該データをCP500に出力する。また、バッファ411に一時格納されているデータは、CP500からの書き込み制御により内部メモリ412に書き込まれる。
【0029】
内部メモリ412は、バッファ411より出力されたデータを一時記憶する。内部メモリ412は、PE幅数の画素データを記憶可能な容量を備えている。内部メモリ412に記憶されるデータは、演算処理部413が行う各種演算処理に用いられる。
【0030】
演算処理部413は、内部メモリ412に一時記憶されているデータに対して所定の演算処理を行う。後述するように、本発明では、各内部メモリにデータが予め整列された状態で記憶される。従って、各演算処理部は、内部メモリに処理に必要なデータが読み込まれた段階で、データの入れ替え処理を行うことなくそのまま演算処理を行うことができる。
【0031】
なお、本実施の形態では、SIMDプロセッサ230は、PE410〜PE480の8個のプロセッサエレメントを備える場合について説明するが、PE数はこれに限るものではなく、64個、256個等、実行する処理の内容や回路規模等に基づいて適宜選択することが可能である。
【0032】
CP500は、アドレス線とデータ線に接続されており、アドレス線で指定したアドレスに対するデータの出力及びデータの入力を行う。データ線を通じてメモリ220よりCP500に読み込まれたデータは、リングバスを通って1番目のPEであるPE480のバッファ481に格納される。バッファ481は、格納しているデータを次のタイミングで隣接する出力方向のPE470のバッファ471に送り、CP500より次のデータを受け取って格納する。一方CP500からの書き込み制御により各PEのバッファに格納されているデータは、内部メモリに移される。
【0033】
次に、図3を参照してCP500の具体的な構成を説明する。CP500は、データ転送制御部510と、命令・データキャッシュ520と、アービタ530と、絶対アドレスレジスタ540と、差分アドレスレジスタ550と、ポインタレジスタ560と、メモリアドレス生成回路570と、アドレスオフセットレジスタ580と、転送予定列数レジスタ590と、転送完了列数レジスタ600と、絶対アドレス更新回路610と、を具備する。
【0034】
データ転送制御部510は、外部メモリであるメモリ220からデータ処理部400にデータを転送するための制御を行う。具体的には、フェッチした命令に従って、後述する各種レジスタに必要なパラメータ情報を設定することでデータ転送の初期設定を行う。また、データ処理部400の全てのPEのバッファにデータが格納された段階で書き込み命令を実行し、各バッファに格納されているデータを各内部メモリに書き込む制御を行う。
【0035】
命令・データキャッシュ520は、データ転送制御部510で実行される命令やデータを一時的に格納しておく。メモリ220より読み込まれた命令やデータは命令・データキャッシュに一時的に格納され、必要に応じて入れ替えられる。
【0036】
アービタ530は、メモリアドレス生成回路570で生成されたメモリのリードアドレスを用いてメモリ220にアクセスするアドレスを指定し、メモリ220の当該アドレスに格納されているデータを読み込む。アービタ530は、読み出したデータを、データ処理部400内の最前段のPEであるPE480のバッファ481に格納する。バッファに格納されるデータは次のタイミングで隣のPEのバッファに送られると共に、新たに受け取ったデータを格納する。このように、バッファに格納されるデータが、サイクル毎に1つずつ隣のPEへ移動していく。そして、全PEの全バッファにデータが格納された段階で、データが各バッファから各内部メモリに送られる。このように、アービタ530は、メモリアドレス生成回路570より入力するリードアドレスに基づいて外部メモリからデータ処理部400の各内部メモリへデータ転送を行う。
【0037】
絶対アドレスレジスタ540は、データ転送制御部510が行う初期設定時に書き込まれる絶対アドレスを記憶する記憶回路である。ここで、絶対アドレスとは、所定のデータ転送期間において共通の基準値となる基準アドレスであり、具体的には、PE410〜480の全てに1単位のデータを供給する1列分の列転送の間、メモリアドレス生成回路570におけるメモリアドレス生成に共通して用いられる。絶対アドレスレジスタ540には、アクセスしたい外部メモリの領域の先頭アドレスが初期設定時に絶対アドレスとして書き込まれる。また、絶対アドレスレジスタ540に保持される絶対アドレスは、絶対アドレス更新回路610からの更新制御に従って更新される。
【0038】
差分アドレスレジスタ550は、複数の差分アドレスを記憶する記憶回路である。ここで、差分アドレスとは、一列の列転送期間において各タイミングで生成されるリードアドレスと上記絶対アドレスとの差分を示した値である。差分アドレスレジスタ550は、複数の差分アドレスが纏められた差分アドレステーブルが記憶されている。本実施の形態1では、差分アドレスレジスタ550には、PE数(8個)分のエントリを持つ1つの差分アドレステーブルが記憶されている。
【0039】
ポインタレジスタ560は、差分アドレスレジスタ550に記憶されている複数の差分アドレスを所定の順序で選択する。具体的には、ポインタレジスタ560は、差分アドレステーブルのアクセス位置を管理する記憶回路であり、差分アドレステーブルのエントリのアクセス位置を指定する変数を記憶する。ポインタレジスタ560の値は、1クロック毎にインクリメントされ、差分アドレステーブルのエントリ数に達した段階で0に戻る。
【0040】
メモリアドレス生成回路570は、絶対アドレスレジスタ540に記憶されている絶対アドレスと、ポインタレジスタ560が指定する差分アドレステーブルのエントリ位置に記憶されている差分アドレスとを組み合わせて外部メモリアクセス用のアドレスを生成する。具体的には、メモリアドレス生成回路570は、絶対アドレスの値と差分アドレスの値とを加算してメモリアドレスを生成し、生成したアドレスをアービタに出力する。
【0041】
アドレスオフセットレジスタ580は、絶対アドレスレジスタ540に記憶されている絶対アドレスを更新するために使用されるオフセット値Oを記憶する記憶回路である。
【0042】
転送予定列数レジスタ590は、全PEに1単位のデータを供給するデータ転送である列転送の転送予定列数Lを記憶する記憶回路である。すなわち、転送予定列数レジスタ590は、画像データを行単位で転送する際に、何行分の画像データに対して転送を行うかのライン数を記憶する。
【0043】
転送完了列数レジスタ600は、これまでに列転送が完了した列の数である転送完了列数L0を記憶する記憶回路である。転送完了列数レジスタ600は、一列の列転送が完了した時点でインクリメントされる。
【0044】
絶対アドレス更新回路610は、絶対アドレスレジスタ540に記憶される絶対アドレスの更新を行う。絶対アドレス更新回路610は、内部に比較回路を持ち、当該比較回路が転送予定列数レジスタ590に記憶されている転送予定列数Lと転送完了列数レジスタ600に記憶されている転送完了列数L0とを比較する。比較の結果、転送完了列数L0が転送予定列数Lに到達していない場合は、次の列転送を行う必要があるため、絶対アドレスの更新を行う。具体的には、絶対アドレス更新回路610は、絶対アドレスレジスタ540より現在の絶対アドレスを読み込み、アドレスオフセットレジスタ580に記憶されているオフセット値を加算した値を新たな絶対アドレスとして絶対アドレスレジスタ540に格納することで更新を行う。絶対アドレス更新回路610は、メモリアドレス生成回路570がPE数のメモリアドレスを生成する毎に絶対アドレスの更新を行う。
【0045】
上記説明したCP500を構成する各構成要素の内、特にデータ転送に係る絶対アドレスレジスタ540、差分アドレスレジスタ550、ポインタレジスタ560、メモリアドレス生成回路570、アドレスオフセットレジスタ580、転送予定列数レジスタ590、転送完了列数レジスタ600、絶対アドレス更新回路610、を纏めてDMA(Direct Memory Access)装置又はメモリ制御装置と呼ぶことがある。また、外部メモリ220からデータ処理部400へのデータ転送を行うデータ転送部であるアービタ530や、各レジスタに記憶するパラメータの値を初期設定時に設定するデータ転送制御部510などを含めた上でDMA装置又はメモリ制御装置と呼ぶことがある。
【0046】
次に、図3を一部参照しながらSIMDプロセッサ230の動作について説明する。図4は、DMA装置が行うデータ転送における初期設定の流れを示すフローチャートである。
【0047】
データ転送制御部510は、絶対アドレスレジスタ540に一列の列転送期間において基準となる絶対アドレスの値を記憶させる(ステップS101)。絶対アドレスは、アクセスしたい外部メモリの領域の基準となるアドレスであり、ここでは先頭アドレスとなる。なお、ここでは先頭アドレスの値として"2000"が絶対アドレスとして絶対アドレスレジスタ540に記憶されるものとする。
【0048】
次に、データ転送制御部510は、テーブルの初期設定として、差分アドレスレジスタ550に記憶される差分アドレステーブルの各エントリに差分アドレスを書き込む(ステップS102)。データ転送制御部510は、メモリ220より読み込んだ命令を実行することで、命令で指定されている差分アドレスの値を差分アドレスレジスタ550に記憶させる。但し、整列手法が定まっている場合、この差分アドレスは予め用意しておくことができる。ここでは、差分アドレステーブルには、"0"、"4"、"2"、"6"、"1"、"5"、"3"、"7"、の値が順番に記憶されているものとする。
【0049】
次にデータ転送制御部510は、絶対アドレス更新のためのアドレスオフセットをアドレスオフセットレジスタ580に記憶させ(ステップS103)、転送予定列数Lを転送予定列数レジスタ590に記憶させる(ステップS104)。最後に転送完了列数レジスタ600に記憶される転送完了列数L0の値をリセットし(ステップS105)、ポインタレジスタ560をリセットし(ステップS106)、初期設定を終了する。
【0050】
データ転送制御部510が読み込んだプログラムに従って上記ステップS101〜ステップS106の設定を行うことでデータ転送のためのパラメータ設定が完了する。なお、上記ステップS101〜ステップS106は順不同とすることができる。
【0051】
次に、DMA装置が行うデータの再配列動作を図5のフローチャートと、図6のタイムチャートを用いて示す。図6のタイムチャートには、各タイミングにおける(1)絶対アドレスレジスタ540からメモリアドレス生成回路570に入力される絶対アドレス、(2)差分アドレスレジスタ550からメモリアドレス生成回路570に入力される差分アドレス、(3)アービタ530から外部メモリ220に入力されるリードアドレス、(4)外部メモリ220から一段目のPE480のバッファ481に転送されるデータ、(5)ポインタレジスタ560の値、をそれぞれ示している。
【0052】
まず、図6で示すサイクルtの動作について説明する。初めに、メモリアドレス生成回路570は、絶対アドレスレジスタ540に記憶されている絶対アドレス"2000"を読み出す(ステップS201)。また、差分アドレステーブルの中からポインタレジスタ560が指し示すエントリ(0番)に格納されている差分アドレス"0"を読み出す(ステップS202)。
【0053】
メモリアドレス生成回路570は、絶対アドレスレジスタ540から入力された絶対アドレスの値と、差分アドレステーブルの中からポインタレジスタ560により指定されて入力された差分アドレスの値とを加算することでリードアドレスを生成する(ステップS203)。ここでは"2000"+"0"で"2000"がリードアドレスとなる。アービタ530は、メモリアドレス生成回路570で生成されたリードアドレスを用いて、メモリのリードアドレス"2000"としてメモリに入力し、当該アドレスに格納されているデータを読み出してリングバス上の1段目のPEであるPE480に転送する(ステップS204)。
【0054】
続いて、ポインタレジスタの判定と更新が行われる。ポインタレジスタの値は前のサイクルまでにメモリに入力したアドレス数を示している。このため、ポインタレジスタの値が差分アドレステーブルのエントリ数−"1"(ここではエントリ数"8"−"1"="7")と等しいかが判定される(ステップS205)。等しくない場合、ポインタレジスタの値がインクリメントされる。(ステップS206)。図6のサイクルtにおいて、ポインタレジスタの値は"7"ではない。このため、ポインタレジスタ560の値がインクリメントされ、ステップS201に戻る。
【0055】
次に、サイクルt+1の動作について説明する。サイクルtの場合と同様、ステップS201に戻ったメモリアドレス生成回路570は、絶対アドレスレジスタ540から絶対アドレス"2000"を読み出す(ステップS201)。次に、差分アドレステーブルの中からインクリメントされたポインタレジスタ560が指し示すエントリ(1番)に格納されている差分アドレス"4"を読み出す(ステップS202)。
【0056】
メモリアドレス生成回路570は、上記絶対アドレスの値"2000"と、上記差分アドレスの値"4"とを加算することでリードアドレス"2004"を生成する(ステップS203)アービタ530は、メモリにリードアドレス"2004"を入力し、当該アドレスに格納されているデータを読み出してリングバス上の1段目のPEであるPE480に転送する(ステップS204)。同時にポインタレジスタ値の判定と更新がサイクルtと同様に行われる(ステップS2005)。サイクルt+1においても、ポインタレジスタの値"1"が"7"に等しくないためポインタレジスタの値がインクリメントされ(ステップS206)、ステップS201に戻る。
【0057】
このようにステップS201〜S206が繰り返された結果、ポインタレジスタの値がPE数−1である"7"と等しくなる場合について説明する。ステップS205の判定において、ポインタレジスタ560の値が"7"であった場合、ポインタレジスタ560の値は"0"に設定される(ステップS207)。
【0058】
この段階で、PE幅の1行の画像データの転送が完了した状態であるため、絶対アドレス更新回路610は、転送完了列数レジスタ600に記憶されている転送完了列数L0と転送予定列数レジスタ590に設定された転送予定列数Lとを比較し、未転送列が存在するかを判定する(ステップS208)。
【0059】
判定の結果、L0=Lであり、未転送列が存在しない場合は、予定したすべての列について列転送が完了したものとして転送処理を終了する。一方、判定の結果、L0<Lであり、未転送列が存在する場合は、絶対アドレス更新回路610は、絶対アドレスの更新を行う(ステップS209)。具体的には、絶対アドレス更新回路610は、絶対アドレスレジスタ540に格納されている絶対アドレスを読み込み、アドレスオフセットレジスタ580に格納されているアドレスオフセットOを読み込み、これら2つの値を加算して、新たな絶対アドレスを生成する。絶対アドレス更新回路610は、新たに生成した絶対アドレスを絶対アドレスレジスタに格納することで絶対アドレスの更新が完了する。例えばアドレスオフセットOの値が"10"である場合は、絶対アドレス"2010"が新たに絶対アドレスレジスタ540に格納される。
【0060】
その後、転送完了列数レジスタ600の値がインクリメントされて転送完了列数が更新され(ステップS210)、次の転送列についてデータ転送を行うためにステップS201に戻る。
【0061】
また、この段階で、PE410のバッファ411からPE480のバッファ481に順にメモリ220のアドレス"2000"、"2004"、"2002"、"2006"、"2001"、"2005"、"2003"、"2007"、から順に読み出されたデータが格納されている。すなわち、バッファ411〜481には順にD0、D4、D2、D6、D1、D5、D3、D7のデータが格納されている。各バッファに一時保持されているこれらのデータは、CP500からの書き込み制御に従って一斉に各バッファから各内部メモリへ書き込みが行われる。
【0062】
このように、ステップS201〜ステップS210の処理が行われることで、1列の列転送が完了する。転送予定列数で指定した列数分全ての転送が終了した時、データ転送制御部が1要求で発行したデータ転送処理が完了する。
【0063】
このように、サイクルtからt+7までの処理によって、メモリ上の2000番地を先頭に"D0、D1、D2、D3、D4、D5、D6、D7"という順序で配置されていたPE幅の1行分の画像データは、"D0、D4、D2、D6、D1、D5、D3、D7"という順に整列されて読み出される。SIMDプロセッサには整列したデータ順に順次入力され、整列が完了した状態で各PEの内部メモリに記憶される。このような処理が転送予定列数Lの列数分連続して行われることで2次元の画像データがPEの内部メモリに格納される。
【0064】
図7は、カメラ110で撮像されて外部メモリ220に記憶されている画像データを示している。1枚の画像のデータ幅は例えば横1920ピクセル、縦1080ピクセルなどである。外部メモリ220には、当該画像データがそのまま記憶される。すなわち、0行0列目の画素データが記憶されたアドレスを先頭アドレスとして、順に0行1列目の画素データ、0行2列目の画素データ、0行3列目の画素データ、・・という順序で外部メモリ220に記憶されている。SIMDプロセッサ230は、このような順序で外部メモリ220に記憶されている画像データを行方向にPE数幅分切り出して内部メモリへ転送する。すなわち、1列の列転送が画像データのPE数幅(8個)の行方向の画像データを外部メモリ220から各内部メモリに転送することを意味する。
【0065】
この時、上述した通り、DMA装置は、データの整列を行いながら画像データを転送する。当該整列は、各列転送において、同一の差分アドレステーブルに従って同様に行われる。従って、図7の左上8行×8列=64の画素データについてデータ転送が完了した時点で、各PEの内部メモリに格納されている画像データは図8のようになる。すなわち、外部メモリ220に記憶されている1列目の画像データはPE420の内部メモリ422ではなく、PE幅の画像データの各行におけるデータ転送において4番目に転送される結果、PE450の内部メモリ452に格納される。また3列目の画像データはPE440ではなく、各行におけるデータ転送において6番目に転送される結果、PE470の内部メモリ472に格納される。5列目及び7列目の画像データについても同様である。
【0066】
最後に、他の単一矩形に対して同一並び替え処理を行いたい場合は、データ転送制御部510が、絶対アドレスレジスタに処理したい矩形の先頭アドレスを指定することで、同一処理を行うことが可能となる。
【0067】
また、差分アドレスはプロセッサの初期設定時、及びプロセッサによる処理中に書き換えることが可能である。差分アドレスの書き換えは、プログラムによる書き換え指示や、ホストCPUにおける指示など、様々な場合が考えられる。
【0068】
図9に本実施の形態における差分アドレステーブルの更新に関するフローチャートを示す。データ転送制御部510は、プロセッサの初期設定時やプロセッサ処理中に、フェッチした命令に差分アドレステーブルの更新が示されていた場合など差分アドレスの書き換え要件が発生した場合、データ転送前に差分アドレスの書き込み操作を開始する(ステップS301)。
【0069】
データ転送制御部510は、差分アドレステーブルのエントリ0番より順に差分アドレステーブルへの差分アドレスの書き込みを行う(ステップS302)。書き込んだ差分アドレスの数はカウントされ、当該カウント値nと差分アドレステーブルのテーブルエントリ数とを比較する(ステップS303)。書き込んだ差分アドレスの数がテーブルエントリ数よりも小さい場合は、差分アドレステーブルの現在のエントリに差分アドレスを書き込み(ステップS304)、エントリをインクリメントする(ステップS305)。ステップS303において、テーブルエントリ数と同数の差分アドレスが書き込まれたと判定された時点で全ての差分アドレスレジスタの更新が完了したとして、データの転送処理に移行する(ステップS306)。
【0070】
以上のように、外部メモリから複数の処理機構を備えるデータ処理部にデータを転送する本実施の形態1に係るメモリ制御装置は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、複数の差分アドレスを記憶する差分アドレス記憶手段の2種類のアドレス記憶手段を具備する。そして、差分アドレス記憶手段に記憶されている複数の差分アドレスを所定の順序で選択する差分アドレス選択手段により各タイミングで選択される差分アドレスと、絶対アドレス記憶手段に記憶されている絶対アドレスとがメモリアドレス生成手段で組み合わせてメモリアドレスが生成される。データ転送手段であるアービタは、メモリアドレス生成手段より入力したメモリアドレスを外部メモリに入力し、当該メモリアドレスからデータを読み出してデータ処理部にデータを転送する。
【0071】
以上の構成によれば、外部メモリデータを読み出す際に、メモリの読み出し位置をアドレス生成回路によって変更することで内部メモリ上のデータを、PE間のデータ通信手段を用いずに整列させることができる。
【0072】
各PEがアクセスすべき外部メモリのデータ位置は、PE毎に差分アドレスの形で設定されている。この差分アドレスを、各PEで共通の絶対アドレスと加算することで、各PEがアクセスする外部メモリのアドレスを得られる。このように、差分アドレスの形で外部メモリのアクセス位置を記憶することで、絶対アドレスを変更するだけで異なる矩形に対して同様の処理を行うことができる。例えば、ある画像を16分割した矩形データ全てに対して同一処理を行う場合、最初の矩形に対する初期設定としてPE毎の差分アドレスと共通の絶対アドレスを設定する。この矩形の処理が完了した場合、次の矩形に対する処理の初期設定は絶対アドレスを書き換えるのみでデータ転送を開始することができる。これに対し、PE毎に絶対アドレスを使用する場合には、次の矩形を処理する際の初期設定時にPE毎に絶対アドレスを計算する必要がある。PE毎に絶対アドレスを用いる場合はPE毎の絶対アドレス計算を16回行うことが必要となるのに対し、差分アドレスを用いた場合は単一の絶対アドレスを計算するのみとなる。このように、差分アドレスを用いることで初期設定に要する処理時間を短縮することが可能となる。
【0073】
このように、本発明は、SIMDプロセッサを用いたデータの並列処理において、所望するデータ配列に規則性がある場合が多いことを利用している。データ整列を行う矩形内の絶対アドレスを一点定めた場合、絶対アドレスと各PEが必要とするデータのアドレスとの差分は一定であることが多い。この点に着目して、PEで共通の絶対アドレス1点と、PE毎に用意した差分アドレスを組み合わせることで、各PEがアクセスする絶対アドレスを生成することができる。また、PEのアクセス位置を差分アドレスとして記憶するため、絶対アドレスを書き換えるだけで外部メモリにおける処理の開始位置を変更でき、他の単一矩形に対して同様の処理を行うことが可能となる。
【0074】
また、本発明の構成によれば単一のメモリにおいても適用可能であり、メモリバンクを分割する場合と比較して省面積な構造を実現できる。また、本発明の構成によれば並び替えの範囲がバッファサイズに影響を受けることがないため汎用性の面で優れている。
【0075】
なお、上記説明では、一列の列転送が完了する毎に転送完了列数レジスタの値がインクリメントして更新され、転送予定列数分の列転送が完了したかどうかを判定する場合について説明したがこれに限るものではない。一列の列転送が完了する毎に転送予定列数レジスタに記憶される転送予定列数の値をデクリメントして更新し、転送予定列数が0になるまでデータ転送が行われる構成としても良い。この場合、転送完了列数レジスタを省略することができる。
【0076】
<実施の形態2>
実施の形態2に係るDMA装置は、差分アドレスレジスタに記憶される差分アドレステーブルのサイズを更に小さくできる構成とすることで回路規模の小型化を実現していることを特徴とする。以下、図面を参照して本発明の実施の形態2について説明する。なお、実施の形態1で説明した部分については発明の明確化のため一部説明を省略する。
【0077】
図10は、本実施の形態2に係るデータ処理装置の構成を示すブロック図である。本実施の形態2では、DMA装置が2つの差分アドレステーブルを保持する構成とすることを特徴としている。また、DMA装置は、差分アドレステーブル毎にアクセス位置を管理するために2つのポインタレジスタ561、562を備える。
【0078】
DMA装置は、第1差分アドレスレジスタ551と、第2差分アドレスレジスタ552を備え、各記憶部にそれぞれ第1差分アドレステーブルと第2差分アドレステーブルが記憶されている。
【0079】
第1差分アドレステーブルは4つのエントリを持ち、各エントリにそれぞれ1つずつ計4つの差分アドレスが記憶されている。ここでは、データ転送制御部510からの初期設定により、第1差分アドレステーブルに"0"、"2"、"1"、"3"、の差分アドレスが記憶されている。
【0080】
第2差分アドレステーブルは、2つのエントリを持ち、各エントリにそれぞれ1つずつ計2つの差分アドレスが記憶されている。ここでは、データ転送制御部510からの初期設定により、第2差分アドレステーブルに"0"、"4"、の差分アドレスが記憶されている。
【0081】
第1ポインタレジスタ561は、第1差分アドレステーブルのアクセス位置を管理する記憶回路であり、第1差分アドレステーブルのエントリのアクセス位置を指定する変数を記憶する。第1ポインタレジスタ561の値は、所定のクロック数毎にインクリメントされる。
【0082】
第2ポインタレジスタ562は、第2差分アドレステーブルのアクセス位置を管理する記憶回路であり、第2差分アドレステーブルのエントリのアクセス位置を指定する変数を記憶する。第2ポインタレジスタ562の値は、所定のクロック数毎にインクリメントされる。
【0083】
データ転送制御部510は、差分アドレステーブルの更新が必要な場合は、差分アドレステーブルの各エントリに差分アドレスを書き込んで更新する。ここで、データ転送制御部510は、第1、第2差分アドレステーブルの両方を更新しても良いし、片方のみを更新しても良い。データ転送制御部510は、フェッチした命令に従って必要な差分アドレステーブルの更新を行う。
【0084】
メモリアドレス生成回路570は、絶対アドレスレジスタ540に記憶されている絶対アドレスと、第1、第2ポインタレジスタ561、562がそれぞれ指定する第1、第2差分アドレステーブルのエントリ位置にそれぞれ記憶されている2つの差分アドレスとに基づいて外部メモリアクセス用のアドレスを生成する。
【0085】
メモリアドレス生成回路570で生成されるメモリアドレスの計算式を数式1に示す。メモリアドレス生成回路570は、数式1に示すように、絶対アドレスの値と2つのポインタレジスタでそれぞれ指定された2種類の差分アドレスの値の3値を加算して上記アドレスを生成し、生成したアドレスをアービタ530に出力する。
【数1】

【0086】
次に、本実施の形態2のCP500の動作について説明する。
【0087】
実施の形態1と同様、データ転送を開始するにあたり、データ転送制御部510は図4のフローに従い初期設定を行う。なお、ステップS102における差分アドレステーブルの初期設定として、第1差分アドレステーブルと第2差分アドレステーブルの両方にそれぞれ差分アドレスを書き込む。なお、データ転送の際の整列手法が定まっている場合、すなわち、SIMDプロセッサ230を用いた処理内容が固定されており、常に特定の整列手法でデータ転送が行われる場合、この差分アドレスは予め用意しておくことができる。更に、データ転送制御部510は、絶対アドレスの設定、アドレスオフセットの設定、転送予定列数の設定、転送完了列数のリセット、第1ポインタレジスタ及び第2ポインタレジスタのリセット、をそれぞれ初期設定として行う。
【0088】
次に、本実施の形態2のDMA装置が行うデータ転送時の再配列動作の流れを図11のフローチャートを用いて説明する。
【0089】
メモリアドレス生成回路570は、絶対アドレスレジスタ540に記憶されている絶対アドレス"2000"を読み出す(ステップS401)。また、第1差分アドレステーブルの中から第1ポインタレジスタ561が指し示すエントリ(0番)に格納されている差分アドレス"0"を読み出す(ステップS402)。更に、第2差分アドレステーブルの中から第2ポインタレジスタ562が指し示すエントリ(0番)に格納されている差分アドレス"0"を読み出す(ステップS403)。
【0090】
メモリアドレス生成回路570は、絶対アドレスの値と、第1、第2差分アドレステーブルの中から第1ポインタレジスタ561及び第2ポインタレジスタ562でそれぞれ指定された2つの差分アドレスの値とを加算することでリードアドレスを生成する(ステップS404)。ここでは"2000"+"0"+"0"で"2000"がリードアドレスとなる。
【0091】
アービタ530は、メモリアドレス生成回路570で生成されたリードアドレス "2000"をメモリに入力して、メモリ上の2000番地よりデータを読み出してPEのバッファへ転送する(ステップS405)。
【0092】
続いて、ポインタレジスタの判定と更新が行われる。ポインタレジスタの値は前のサイクルまでにメモリに入力したアドレス数を示している。まず、第2ポインタレジスタ562の値が第2差分アドレステーブルのエントリ数−"1" (ここではエントリ数"2"−"1"="1")と等しいかが判定される(ステップS406)。等しくない場合、第2ポインタレジスタ562の値がインクリメントされ(ステップS407)、ステップS401に戻る。
【0093】
ステップS406の判定において、第2ポインタレジスタ562の値が第2差分アドレステーブルのエントリ数−"1"と等しかった場合、第2ポインタレジスタ562の値が"0"に設定される(ステップS408)。更に、第1ポインタレジスタ561の値が第1差分アドレステーブルのエントリ数−"1" (ここではエントリ数"4"−"1"="3")と等しいかが判定される(ステップS409)。等しくない場合、第1ポインタレジスタ561の値がインクリメントされ(ステップS410)、ステップS401に戻る。
【0094】
ステップS409の判定において、第1ポインタレジスタ561の値が第1差分アドレステーブルのエントリ数−"1"と等しかった場合、第1ポインタレジスタ561の値が"0"に設定される(ステップS411)。
【0095】
この段階で、1列の列転送、すなわち1行のPE幅の画像データについてデータ転送が完了した状態となる。従って、絶対アドレス更新回路610は、転送完了列数レジスタ600に記憶されている転送完了列数L0と転送予定列数レジスタ590に初期設定された転送予定列数Lとを比較し、未転送列が存在するかを判定する(ステップS412)。判定の結果、L0=Lであり、未転送列が存在しない場合は、すべての行について転送が完了したものとして転送処理を終了する。一方、判定の結果、L0<Lであり、未転送列が存在する場合は、絶対アドレス更新回路610は、絶対アドレスの更新を行う(ステップS413)。その後、転送完了列数レジスタ600の値がインクリメントされて転送完了列数L0が更新され(ステップS414)、次の列の列転送を行うためにステップS401に戻る。
【0096】
図11のフローに従うデータ転送の様子を図12のタイムチャートを用いて示す。図12のタイムチャートには、各タイミングにおける(1)絶対アドレスレジスタ540からメモリアドレス生成回路570に入力される絶対アドレス、(2)第1差分アドレスレジスタ551からメモリアドレス生成回路570に入力される差分アドレス、(3)第2差分アドレスレジスタ552からメモリアドレス生成回路570に入力される差分アドレス、(4)アービタ530から外部メモリ220に入力されるリードアドレス、(5)外部メモリ220から一段目のPE480のバッファ481に転送されるデータ、(6)第1ポインタレジスタの値、(7)第2ポインタレジスタの値、をそれぞれ示している。
【0097】
このように第1ポインタレジスタ561は、2サイクル毎にインクリメントされ、8サイクルで元の"0"に戻る。一方第2ポインタレジスタ562は、1サイクル毎にインクリメントされ、2サイクル毎に"0"に戻る。従って、第2ポインタレジスタ562は、1列の列転送期間において第2差分アドレステーブルの各エントリを2サイクル毎に繰り返し指定する。
【0098】
サイクルtからt+7の各タイミングにおいて、絶対アドレスと2つの差分アドレスを加算した値は順に"2000"、"2004"、"2002"、"2006"、"2001"、"2005"、"2003"、"2007"、となることが分かる。従って、サイクルtからt+7までの処理によって、メモリ上の2000番地を先頭に"D0、D1、D2、D3、D4、D5、D6、D7"と配置されていたデータは、"D0、D4、D2、D6、D1、D5、D3、D7"という順に整列されて読み出される。この結果は実施の形態1と同様である。SIMDプロセッサ230には整列したデータ順に順次入力され、整列が完了した状態で各PEの内部メモリに記憶される。
【0099】
最後に、他の単一矩形に対して同一並び替え処理を行いたい場合、データ転送制御部510が絶対アドレスに処理したい矩形の先頭アドレスを指定することで、同一処理を行うことが可能となる。
【0100】
以上のように、本実施の形態2に係るDMA装置において、差分アドレス選択手段は、差分アドレス記憶手段に記憶された複数の差分アドレスのいくつかをそれぞれ所定の順序で選択する複数の選択手段を備える。
【0101】
具体的には、差分アドレス記憶手段は、複数の差分アドレスが纏められた複数の差分アドレステーブルを記憶する。差分アドレス選択手段は、前記複数の差分アドレステーブルに纏められた前記複数の差分アドレスをそれぞれ所定の順序で選択する複数のポインタレジスタを含む。そして、メモリアドレス生成手段は、複数のポインタレジスタが選択した複数の差分アドレスと絶対アドレスとを組み合わせてメモリアドレスを生成する。
【0102】
当該構成によれば、実施の形態1に示した1つの差分アドレステーブルで差分アドレスを管理する場合と比べて、差分アドレステーブルを2つに分割することで、アドレスの組み合わせの自由度が落ちるものの、差分アドレスの記憶容量を削減できる。すなわち、実施の形態1において8エントリだった差分アドレステーブルの合計のエントリ数が、6エントリに削減されている。従って、実装面積の削減および消費電力を削減することができる。更に、初期設定する差分アドレスの数が削減することで、初期設定時に書き込む差分アドレスの数を減らすことができる。これにより、初期設定に要する処理時間を削減することができ、処理の高速化を実現することができる。
【0103】
<実施の形態3>
実施の形態3に係るSIMDプロセッサは更に多くのプロセッサエレメントを備えることを特徴とする。多くのデータを一括して処理できる構成とすることで処理の高速化が実現される。以下、図面を参照して本発明の実施の形態3について説明する。なお、実施の形態1及び2で説明した部分については発明の明確化のため一部説明を省略する。
【0104】
図13は、本実施の形態3に係るデータ処理装置の構成を示すブロック図である。SIMDプロセッサ230は、PE(0)〜PE(63)の64個のプロセッサエレメントを具備する。
【0105】
DMA装置は、実施の形態2と同様、2つの差分アドレステーブルを保持する。第1差分アドレステーブルの中からポインタレジスタ561で指定される差分アドレスと第2差分アドレステーブルの中からポインタレジスタ562で指定される差分アドレスとの組み合わせにより差分アドレスが生成される。第1差分アドレステーブルと第2差分アドレステーブルはそれぞれ同数の8エントリを有するため、データ処理部400に含まれるPE数と同数である8×8=64通りの差分アドレスの組み合わせパターンが存在する。
【0106】
メモリアドレス生成回路570は、絶対アドレスとこれら2つの差分アドレスとを加算することでPE数に対応する64通り差分アドレスの種類を生成することができる。なお、メモリアドレス生成回路570は、メモリアドレスの計算式として実施の形態2と同様に数式1を用いることができる。
【0107】
図13によれば、第1ポインタレジスタの561の値が"1"であり、第2ポインタレジスタ562の値が"3"となっている。従って、第1差分アドレステーブルの1番目のエントリに記憶された"4"と第2アドレステーブルの3番目のエントリに記憶された"48"の値がそれぞれ差分アドレスとしてメモリアドレス生成回路570に入力される。メモリアドレス生成回路570は、これら2つの差分アドレスと絶対アドレスレジスタ540より入力した絶対アドレス"2000"の値を加算してリードアドレス"2052"を生成する。アービタ530は、外部メモリ220に対して当該リードアドレスを入力し、2052番地に格納されているデータを転送する。
【0108】
実施の形態3に係るDMA装置のデータ転送の処理フローを図14に示す。なお、図14で示す処理フローは、実施の形態2に係るDMA装置のデータ転送動作と同等であるため説明を省略する。なお、本実施の形態3では、第1差分アドレステーブルと第2差分アドレステーブルのエントリ数が"8"であるため、図11のフローチャートと比較して、ステップS506とステップS509において、それぞれポインタレジスタ562の値とポインタレジスタ561の値は"7"と等しいかどうかの判定が行われることになる。
【0109】
以上のように、本実施の形態3のSIMDプロセッサは、実施の形態2より多くのプロセッサエレメントを備えるため、差分アドレステーブルを2つに分割することによる実装面積の削減および消費電力を削減する効果、及び、処理の高速化を実現する効果が顕著になる。すなわち、1つの差分アドレステーブルで差分アドレスを管理する場合は64エントリ必要なのに対し、本実施の形態では16エントリで済み、48エントリ分の差分アドレステーブルを記憶する記憶回路の実装面積が削減及び48エントリ分の差分アドレスの書き込み設定が不要となる。
【0110】
<実施の形態4>
実施の形態4に係るDMA装置は、差分アドレステーブルを更に複数に分割することで回路規模の削減及び初期設定時の高速化を図ることを特徴とする。以下、図面を参照して本発明の実施の形態4について説明する。なお、実施の形態1〜3で説明した部分については発明の明確化のため一部説明を省略する。
【0111】
図15は、本実施の形態4に係るSIMDプロセッサの構成を示すブロック図である。SIMDプロセッサ230は64個のプロセッサエレメントを具備する。更に、SIMDプロセッサ230内のDMA装置は、6種類の差分アドレステーブルを備える。すなわち、DMA装置は、第1差分アドレスレジスタ551〜第6差分アドレスレジスタ556の6つの記憶部にそれぞれ差分アドレステーブルが記憶されている。図15に示すように、各差分アドレステーブルはそれぞれ2つのエントリを持つ。また、各差分アドレステーブルのエントリを指定するために、DMA装置は、第1ポインタレジスタ561〜第6ポインタレジスタ566の6つのポインタレジスタを備える。
【0112】
当該構成においても、2×2×2×2×2×2=64通りの差分アドレスの組み合わせパターンによりPE数分の差分アドレスを生成することができる。メモリアドレス生成回路570は、第1〜第6ポインタレジスタで指定された6個の差分アドレスと絶対アドレスレジスタ540より入力した絶対アドレスとを加算してリードアドレスを生成する。メモリアドレス生成回路570で生成されるメモリアドレスの計算式を数式2に示す。
【数2】

【0113】
図15の例では、各差分アドレステーブルに対する第1、第3、第4、第6ポインタレジスタが指定するエントリが0番であり、第2、第5ポインタレジスタが指定するエントリが1番となっている。従って、第1〜第6の差分アドレステーブルより、順に"0"、"2"、"0"、"0"、"16"、"0"、の値が差分アドレスとして選択されてメモリアドレス生成回路570に入力される。
【0114】
メモリアドレス生成回路570は、絶対アドレスレジスタ540から入力した絶対アドレス"2000"に上記6つの差分アドレスを加算した"2018"をリードアドレスとして生成してアービタ530に入力する。アービタ530は、当該リードアドレスを外部メモリ220に入力し、メモリ上の2018番地よりデータを読み出してPEの内部メモリへ転送する。
【0115】
次に、本実施の形態4のCP500の動作について説明する。
【0116】
実施の形態1と同様、データ転送を開始するにあたり、データ転送制御部510は図4のフローに従い初期設定を行う。なお、ステップS102における差分アドレステーブルの初期設定として、第1差分アドレステーブルから第6差分アドレスの6個の差分アドレステーブルにそれぞれ差分アドレスを書き込む。更に、データ転送制御部510は、絶対アドレスの設定、アドレスオフセットの設定、転送予定列数Lの設定、転送完了列数のリセット、第1ポインタレジスタから第6ポインタレジスタの全ポインタレジスタのリセット、をそれぞれ初期設定として行う。
【0117】
次に、本実施の形態2のDMA装置が行うデータ転送時の再配列動作の流れを図16のフローチャートを用いて説明する。
【0118】
まず、クロックサイクルが初期化されCycle=1にセットされる(ステップS601)。次に、メモリアドレス生成回路570に絶対アドレスが絶対アドレスレジスタ540から出力される(ステップS602)。次に、差分アドレステーブル及びポインタレジスタを指定する番号であるNoが"1"にセットされる(ステップS603)。次に、No>6であるかが判定される(ステップS604)。
【0119】
当該判定において、No<6であれば、加算されていない差分アドレスがあることを意味する。メモリアドレス生成回路570は、当該Noの差分アドレステーブルであって対応するポインタレジスタで指定されている差分アドレスの値を既に読み出した絶対アドレスに加算する(ステップS605)。次に、NoをインクリメントしてステップS604に戻る。
【0120】
ステップS604の判定において、No>6である場合は、第1差分アドレステーブルから第6差分アドレステーブルまでの全ての差分アドレステーブルより1つずつ差分アドレスが指定されて加算されたことを示している。そこでアービタ530は、メモリアドレス生成回路570にてこれまでに加算されて生成されたアドレスをリードアドレスとして外部メモリ220に入力し、データ転送を行う(ステップS607)。
【0121】
次に、各ポインタレジスタの更新が行われる。各ポインタレジスタはメモリへのアドレス入力数を記憶する機能も兼ねている。カウントは0から63までの6bitであり、各ポインタレジスタの値はこのカウンタの特定の1bitを意味する。ステップS608〜ステップS616では、この6bitカウンタの更新を行っている。ただし、最上位ビットは第1ポインタレジスタ561の値、最下位ビットは第6ポインタレジスタ566の値である。
【0122】
まず、第6ポインタレジスタ566の値が"0"であるかどうかを判定する(ステップS608)。第6ポインタレジスタ566の値が"0"の場合は、インクリメントされて第6ポインタレジスタ566の値が"1"に設定される(ステップS609)。第6ポインタレジスタ566の値が"0"でない場合は、第6ポインタレジスタ566の値が"0"に設定される(ステップS610)。同様の設定処理が第1ポインタレジスタ561〜第5ポインタレジスタ565についても行われる(ステップS611〜ステップS616)。
【0123】
全ポインタレジスタの更新が完了した場合、現在のCycle値がcycle=63であるかが判定される(ステップS617)。判定の結果、cycle≠63であった場合は、cycle値をインクリメントし(ステップS618)、ステップS602に戻って次のサイクルを開始する。一方、判定の結果、cycle=63であった場合は、1列の列転送が完了したことを意味しているため、未転送列が存在するかが判定される(ステップS619)。すなわち、絶対アドレス更新回路610は、転送予定列数Lと転送完了列数L0とを比較する。比較の結果L0=Lであった場合は、全ての列の列転送が完了したとしてデータ転送処理を終了し、データ転送制御部510からの次のデータ転送指示を待つ。一方、ステップS616の判定の結果L0<Lである場合は、未転送列が存在するため、絶対アドレス更新回路610は、絶対アドレスの更新を行う(ステップS620)。更に、転送完了列数レジスタ600における転送完了列数L0を更新してステップS601に戻り(ステップS621)、次の列についてデータ転送処理を行う。
【0124】
差分アドレステーブルをPE数(64)の対数である6つに分割し、各差分アドレステーブルに対応するポインタレジスタを備える構成とすることで、実施の形態3よりも差分アドレスの記憶容量を削減している(実施の形態3は16エントリ、実施の形態4は12エントリ)。PE数の対数値だけ差分アドレステーブルを分割する本実施の形態4の方式が、本発明において差分アドレステーブルの容量を最小化する構成となる。
【0125】
<実施の形態5>
本実施の形態5に係るDMA装置は、2セットの差分アドレステーブルを持つことを特徴とする。但し、本実施の形態5は、上述した実施の形態2〜4が複数の差分アドレステーブルの各々から選択される差分アドレスを組み合わせることでPE数と同数の差分アドレスを生成するのと異なり、PE数の2倍の差分アドレスを保持する。データ転送時に使用する差分アドレステーブルが切り替える構成とすることで処理の高速化を実現している。以下、図面を参照して本発明の実施の形態5について説明する。なお、実施の形態1〜4で説明した部分については発明の明確化のため一部説明を省略する。
【0126】
図17は、本実施の形態5に係るデータ処理装置の構成を示すブロック図である。SIMDプロセッサ230は、8個のプロセッサエレメントを備える。また、SIMDプロセッサ230に含まれるDMA装置は、第1差分アドレスレジスタ551と第2差分アドレスレジスタ552を備える。第1差分アドレスレジスタ551と第2差分アドレスレジスタ552には、それぞれ差分アドレステーブルAと差分アドレステーブルBが記憶されている。各差分アドレステーブルは、PE数と同数の8エントリを有する。
【0127】
次に、本実施の形態5のDMA装置が行うデータ転送時の再配列動作の流れを図18のフローチャートを用いて説明する。
【0128】
データ転送制御部510は、DMA装置が保持する2つの差分アドレステーブルの内、どちらの差分アドレスを使用するかを決定する(ステップS701)。差分アドレステーブルAを使用すると決定した場合は、メモリアドレス生成回路570に差分アドレスを供給するテーブルを差分アドレステーブルAにセットする(ステップS702)。一方、差分アドレステーブルBを使用すると決定した場合は、メモリアドレス生成回路570に差分アドレスを供給するテーブルを差分アドレステーブルBにセットする(ステップS703)。
【0129】
以降、セットされた差分アドレステーブルよりポインタレジスタで指定されて供給される差分アドレスを用いてメモリアドレスが生成される。データ転送制御部510はフェッチした命令に従って初期設定時や処理内容変更時などに使用する差分アドレステーブルの切り替え制御を行う。なお、以降の処理の流れは、図5と同様であるため説明を省略する。
【0130】
以上のように、本実施の形態5に係るDMA装置において、差分アドレス記憶手段は、メモリアドレス生成用に使用される複数の差分アドレステーブルを記憶する。そして差分アドレス記憶手段に記憶されている複数の差分アドレステーブルの中から使用する差分アドレステーブルを選択する差分アドレステーブル選択手段を備える。
【0131】
当該構成によれば、2セットの差分アドレスを持つことで差分アドレスの更新処理の手間を削減する。例えば1転送毎に2種類の差分アドレスを交互に使用したい場合、実施の形態1では転送の完了ごとに差分アドレステーブルを書き換える必要がある。それに対して、本実施の形態5のDMA装置では、転送開始時に使用する差分アドレステーブルを指定するだけで、使用する差分アドレスを切り替えることができる。差分アドレステーブルを書き換える処理を省略できるため、電力消費と処理時間の面で実施の形態1のDMA装置よりも優位である。
【0132】
なお、本実施の形態5のDMA装置は2セットの差分アドレステーブルを保持しているが、3セット以上の差分アドレステーブルを持つ構成とすることができる。SIMDプロセッサに要求される処理内容の切り替え頻度等を考慮して、何セットの差分アドレステーブルを記憶可能な構成とするかを適宜設計することが可能である。予めSIMDプロセッサに要求される処理の種類が決まっている場合は、当該処理の種類数に対応する数の差分アドレステーブルを記憶しておくと更に処理の高速化を図れる。すなわち、差分アドレステーブルの更新が不要となり、SIMDプロセッサで実行する処理の切り換えに応じて使用する差分アドレステーブルを切り換えるだけでよいため、直ちに次の処理に移ることができる。
【0133】
また、本実施の形態5を実施の形態2〜4と組み合わせることも可能である。すなわち、DMA装置は、PE数より少ないエントリをもつ差分アドレステーブルを複数記憶し、データ転送制御部が使用する差分アドレステーブルの組み合わせを切り替える構成とすることも可能である。
【0134】
以上、各実施の形態で説明したように、本発明によれば、外部メモリのアクセス位置を矩形データの先頭アドレスとSIMDプロセッサ内の各PE用の差分アドレスの組み合わせによって所望の順番で指定するができる。従って、外部メモリよりデータを整列した状態でプロセッサエレメントの内部メモリに転送できるため、処理実行前の内部メモリ間でのデータ転送処理を省略することができ、処理の高速化を実現することができる。
【0135】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本発明は以下の構成とすることができる。
【0136】
図19に、本発明のメモリ制御装置1000の構成を示すブロック図を示す。メモリ制御装置1000は、絶対アドレス記憶部1010と、差分アドレス記憶部1020と、差分アドレス選択部1030と、メモリアドレス生成部1040と、データ転送部1050と、を具備する。
【0137】
絶対アドレス記憶部1010は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する。ここで所定のデータ転送期間とは、複数の処理機構PEの全てに1単位のデータを供給するデータ転送である列転送を一列行う期間となる。
【0138】
差分アドレス記憶部1020は、複数の差分アドレスを記憶する。複数の差分アドレスは纏めて差分アドレステーブルとして記憶することができる。差分アドレス記憶部1020は、複数の差分アドレスが纏められた複数の差分アドレステーブルを記憶する構成とすることも可能である。
【0139】
差分アドレス選択部1030は、差分アドレス記憶部1020に記憶されている複数の差分アドレスを所定の順序で選択(指定)する。差分アドレス選択部1030は、具体的には差分アドレステーブルに纏められた複数の差分アドレスを1つずつ所定の順序で指定するポインタレジスタなどで構成される。差分アドレス選択部1030は、差分アドレス記憶部1020に記憶される差分アドレステーブルの数に対応して複数のポインタレジスタを含む構成とすることができる。
【0140】
メモリアドレス生成部1040は、差分アドレス選択部1030が選択した差分アドレスと絶対アドレスとを組み合わせてメモリアドレスを生成する。差分アドレスが2系統の記憶回路に記憶される場合は、メモリアドレス生成部1040は、単一の絶対アドレスと2種類の差分アドレスの3種類を組み合わせて外部メモリアクセス用のアドレスを生成する。
【0141】
データ転送部1050は、メモリアドレス生成部1040で生成されるメモリアドレスを外部メモリに入力し、当該外部メモリ上のメモリアドレスからデータを読み出してデータを転送する。
【0142】
このように構成することでデータ整列を行った状態でデータをデータ処理部へ転送することができる。
【0143】
また、本発明のメモリ制御装置は、図20に示すメモリ制御装置2000の構成とすることができる。メモリ制御装置2000は、アドレスオフセット記憶部2040と、絶対アドレス更新部2050と、を更に備える。
【0144】
アドレスオフセット記憶部2040は、絶対アドレス更新用のアドレスオフセットを記憶する。
【0145】
絶対アドレス更新部2050は、絶対アドレス記憶部1010に記憶される絶対アドレスを更新する。具体的には、絶対アドレス更新部2050は、メモリアドレス生成部1040がデータ処理部に含まれる処理機構数分のメモリアドレスを生成する毎に、絶対アドレス記憶部1010に記憶されている絶アドレスとアドレスオフセット記憶部2040に記憶されているアドレスオフセットを加算することで新たな絶対アドレスを生成する。
【0146】
絶対アドレス更新部2050は、生成した絶対アドレスを絶対アドレス記憶部1010に記憶させることで絶対アドレスを更新する。
【0147】
当該構成とすることで、絶対アドレス更新部2050が、列転送が完了する毎に絶対アドレスを更新するため、連続してデータ転送を継続することができる。
【0148】
また、本発明のメモリ制御装置は、図21に示すメモリ制御装置3000の構成とすることができる。メモリ制御装置3000は、転送予定列数記憶部3060と、転送予定列数更新部3070と、を備える。
【0149】
転送予定列数記憶部3060は、データ処理部に含まれる複数の処理機構の全てに1単位のデータを供給するデータ転送である列転送の予定数である転送予定列数を記憶する。
【0150】
転送予定列数更新部3070は、1列の列転送が完了する毎に転送予定列数記憶部3060に記憶されている前記転送予定列数をデクリメントして更新する。
【0151】
絶対アドレス更新部2050は、1列の列転送が完了する毎に転送予定列数記憶部3060に記憶されている更新済みの転送予定列数を参照し、転送予定列数が0の場合は、全ての列転送が完了したものとして絶対アドレスの更新は行わない。
【0152】
また、メモリアドレス生成部1040も、全ての列転送が完了したものとしてメモリアドレスの生成を終了する。データ転送部1050も、全ての列転送が完了したものとしてデータ転送を終了する。
【0153】
当該構成とすることで、初期設定等で予め設定した転送予定列数分の列転送を自動的に行うことができる。なお、図22に示すメモリ制御装置4000の構成としても同様に予め設定した転送予定列数分の列転送を自動的に行うことができる。メモリ制御装置4000は、更に転送完了列数記憶部4080と、転送完了列数更新部4090と、を具備する。一方、メモリ制御装置3000と比較して、転送予定列数更新部3070を備えておらず、転送予定列数記憶部3060は、初期設定時に設定された転送予定列数をそのまま保持する。
【0154】
転送完了列数記憶部4080は、これまでに完了した列転送の数である転送完了列数を記憶する。
【0155】
転送完了列数更新部4090は、1列の列転送が完了する毎に転送完了列数記憶部4080に記憶されている前記転送完了列数をインクリメントして更新する。
【0156】
絶対アドレス更新部2050は、1列の列転送が完了する毎に転送予定列数記憶部3060に記憶されている転送予定列数と転送完了列数記憶部480に記憶されている転送完了列数を比較する。転送完了列数が転送予定列数と等しい場合は、全ての列転送が完了したものとして絶対アドレスの更新は行わない。また、メモリアドレス生成部1040も、全ての列転送が完了したものとしてメモリアドレスの生成を終了する。データ転送部1050も、全ての列転送が完了したものとしてデータ転送を終了する。このように構成しても良い。
【0157】
その他、メモリ制御装置は、データ転送に必要となる各種パラメータ設定部を備える構成としても良い。パラメータ設定部は、絶対アドレス、差分アドレス、アドレスオフセット、転送予定列数、をそれぞれ絶対アドレス記憶部1010、差分アドレス記憶部1020、アドレスオフセット記憶部2040、転送予定列数記憶部3060、にそれぞれデータ転送用のパラメータとして設定しても良い。
【0158】
また、本発明は、所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する第1レジスタと、複数の差分アドレスを記憶する第2レジスタと、前記複数の差分アドレスを所定の順序で指定するポインタレジスタと、前記ポインタレジスタが選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成回路と、前記メモリアドレス生成回路で生成されるメモリアドレスをメモリに入力し、前記メモリアドレスからデータを読み出して転送するデータ転送回路と、を具備する半導体集積回路とすることができる。
【0159】
また、本発明は、上記メモリ制御装置を備えるデータ処理装置に加え、画像データを取得するカメラ(画像撮像装置)と、画像データを表示するディスプレイ(画像表示装置)を備える画像処理システムとすることも可能である。上記データ処理装置は、前記カメラより画像データを入力して内部のメモリ(データ記憶手段)に記憶し、上記DMA装置を用いてデータ整列を行った状態でメモリからデータ処理部にデータ転送を行い、データ処理部が所定のデータ処理を行い、ディスプレイに処理後の画像データを出力する。このように構成しても良い。
【0160】
また、上記説明では画像などの2次元データを処理する場合について説明したが、これに限るものではなく、メモリに記憶されているデータを整列して読み出すことデータ処理の高速化を行える様々なデータ処理技術に適用することができる。
【0161】
また、上記説明において、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェアとソフトウェア(プログラム)の組合せによっていろいろな形で実現できることは当業者には理解されるところであり、ハードウェアとソフトウェアのいずれかに限定されるものではない。
【0162】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【0163】
110 カメラ 120 レーダ
200 データ処理装置 220 メモリ
230 SIMDプロセッサ 240 バス
310 ディスプレイ 320 ブレーキ
330 駆動装置 400 データ処理部
410、420、430、440、450、460、470、480 PE
411、421、431、441、451、461、471、481 バッファ
412、422、432、442、452、462、472、482 内部メモリ
413、423、433、443、453、463、473、483 演算処理部
500 CP(コントロールプロセッサ) 510 データ転送制御部
520 命令・データキャッシュ 530 アービタ
540 絶対アドレスレジスタ 550 差分アドレスレジスタ
560 ポインタレジスタ 570 メモリアドレス生成回路
580 アドレスオフセットレジスタ 590 転送予定列数レジスタ
600 転送完了列数レジスタ 610 絶対アドレス更新回路
1000、2000、3000、4000 メモリ制御装置
1010 絶対アドレス記憶部 1020 差分アドレス記憶部
1030 差分アドレス選択部 1040 メモリアドレス生成部
1050 データ転送部 2040 アドレスオフセット記憶部
2050 絶対アドレス更新部 3060 転送予定列数記憶部
3070 転送予定列数更新部 4080 転送完了列数記憶部
4090 転送完了列数更新部

【特許請求の範囲】
【請求項1】
外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御装置であって、
所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、
複数の差分アドレスを記憶する差分アドレス記憶手段と、
前記複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、
前記差分アドレス選択手段が選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、
前記メモリアドレス生成手段で生成されるメモリアドレスを前記外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送するデータ転送手段と、
を具備するメモリ制御装置。
【請求項2】
前記絶対アドレスを更新する絶対アドレス更新手段を更に具備し、
前記絶対アドレス記憶手段は、前記絶対アドレス更新手段が更新した絶対アドレスを記憶する、
請求項1に記載のメモリ制御装置。
【請求項3】
前記絶対アドレス更新手段は、前記メモリアドレス生成手段が前記処理機構数のメモリアドレスを生成する毎に前記絶対アドレスの更新を行い、
前記差分アドレス選択手段は、前記メモリアドレス生成手段が前記処理機構数のメモリアドレスを生成する毎に前記複数の差分アドレスを再度所定の順序で選択する、
請求項2に記載のメモリ制御装置。
【請求項4】
絶対アドレス更新用のアドレスオフセットを記憶するアドレスオフセット記憶手段を更に具備し、
前記絶対アドレス更新手段は、前記絶対アドレス記憶手段に記憶されている絶対アドレスと前記アドレスオフセットとを組み合わせて前記絶対アドレスを更新する、
請求項2又は3に記載のメモリ制御装置。
【請求項5】
前記絶対アドレスと、前記複数の差分アドレスと、前記アドレスオフセットと、をそれぞれ前記絶対アドレス記憶手段と、前記差分アドレス記憶手段と、前記アドレスオフセット記憶手段に記憶させる初期設定を行うパラメータ設定手段を更に具備する、
請求項4に記載のメモリ制御装置。
【請求項6】
前記複数の処理機構の全てに1単位のデータを供給するデータ転送である列転送の転送予定列数を記憶する転送予定列数記憶手段と、
前記列転送が完了した転送完了列数を記憶する転送完了列数記憶手段と、
1列の列転送が完了する毎に前記転送完了列数記憶手段に記憶されている前記転送完了列数をインクリメントして更新する転送完了列数更新手段と、
を更に具備し、
前記データ転送手段は、前記転送予定列数分の列転送が完了するまでデータ転送を継続して行う、
請求項2乃至5のいずれか1項に記載のメモリ制御装置。
【請求項7】
前記複数の処理機構の全てに1単位のデータを供給するデータ転送である列転送の予定転送列数を記憶する転送予定列数記憶手段と、
1列の列転送が完了する毎に転送予定列数記憶手段に記憶されている前記転送予定列数をデクリメントして更新する転送予定列数更新手段と、
を更に具備し、
前記データ転送手段は、前記転送予定列数が0になるまでデータ転送を継続して行う、
請求項2乃至5のいずれか1項に記載のメモリ制御装置。
【請求項8】
前記差分アドレス記憶手段は、複数の差分アドレスが纏められた複数の差分アドレステーブルを記憶し、
前記差分アドレス選択手段は、前記複数の差分アドレステーブルに纏められた前記複数の差分アドレスをそれぞれ所定の順序で選択する複数のポインタレジスタを含み、
前記メモリアドレス生成手段は、前記複数のポインタレジスタが選択した複数の差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成する、
請求項1に記載のメモリ制御装置。
【請求項9】
前記差分アドレス記憶手段は、複数の差分アドレスが纏められた第1の差分アドレステーブルと複数の差分アドレスが纏められた第2の差分アドレステーブルとを記憶し、
前記差分アドレス選択手段は、前記第1の差分アドレステーブルに纏められた前記複数の差分アドレスを所定の順序で選択する第1のポインタレジスタと前記第2の差分アドレステーブルに纏められた前記複数の差分アドレスを所定の順序で選択する第2のポインタレジスタとを含み、
前記メモリアドレス生成手段は、前記第1のポインタレジスタが選択した差分アドレスと、前記第2のポインタレジスタが選択した差分アドレスと、前記絶対アドレスと、を組み合わせてメモリアドレスを生成する、
請求項8に記載のメモリ制御装置。
【請求項10】
メモリアドレス生成用に使用する差分アドレステーブルを前記差分アドレス記憶手段に記憶されている前記複数の差分アドレステーブルの中から選択する差分アドレステーブル選択手段を更に具備し、
前記メモリアドレス生成手段は、前記差分アドレステーブル選択手段で選択された差分アドレステーブルに含まれる複数の差分アドレスの中から前記ポインタレジスタが所定の順序で選択する差分アドレスと、前記絶対アドレスと、を組み合わせてメモリアドレスを生成する、
請求項8に記載のメモリ制御装置。
【請求項11】
外部メモリから複数の処理機構を備えるデータ処理手段にデータを転送するメモリ制御方法であって、
所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶し、
複数の差分アドレスを記憶し、
前記複数の差分アドレスを所定の順序で選択し、
前記選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成し、
前記生成したメモリアドレスを外部メモリに入力し、
前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送する、
メモリ制御方法。
【請求項12】
少なくとも内部メモリと演算回路とをそれぞれ含む複数の処理機構が直列に接続されているデータ処理手段と、
前記データ処理手段を制御する制御手段と、
所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する絶対アドレス記憶手段と、
複数の差分アドレスを記憶する差分アドレス記憶手段と、
前記複数の差分アドレスを所定の順序で選択する差分アドレス選択手段と、
前記差分アドレス選択手段が選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成手段と、
前記メモリアドレス生成手段で生成されるメモリアドレスを外部メモリに入力し、前記メモリアドレスからデータを読み出して前記データ処理手段にデータを転送するデータ転送手段と、
を具備するデータ処理装置。
【請求項13】
データを一時記憶する外部メモリと
画像を撮像して前記外部メモリに格納する画像撮像装置と、
前記外部メモリに一時記憶された画像データを読み込んで所定のデータ処理を行う請求項12に記載のデータ処理装置と、
前記データ処理装置で前記所定のデータ処理が行われた後の画像データを表示する画像表示装置と、
を備える画像処理システム。
【請求項14】
所定のデータ転送期間において共通の基準値となる絶対アドレスを記憶する第1レジスタと、
複数の差分アドレスを記憶する第2レジスタと、
前記複数の差分アドレスを所定の順序で指定するポインタレジスタと、
前記ポインタレジスタが選択した差分アドレスと前記絶対アドレスとを組み合わせてメモリアドレスを生成するメモリアドレス生成回路と、
前記メモリアドレス生成回路で生成されるメモリアドレスをメモリに入力し、前記メモリアドレスからデータを読み出して転送するデータ転送回路と、
を具備する半導体集積回路。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2013−89023(P2013−89023A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−228952(P2011−228952)
【出願日】平成23年10月18日(2011.10.18)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】