(57)【要約】【課題】リード転送要求実行時のデータ転送効率を向上させる。【解決手段】データ処理部２のプロセッサ２ａからデータ管理部３が管理するデータのリード要求が出力されると、受信側ＤＭＡ制御部２ｂにより、専用線４を介して、ＤＭＡ転送要求がデータ処理部２からデータ管理部３へ出力される。次に、データ管理部３において、メモリ制御部３ｃにより、ＤＭＡ転送要求で示されたデータがメモリ３ｂから読み出され、バッファ３ｃａに格納される。データがバッファ３ｃａに格納されると、送信側ＤＭＡ制御部３ａにより、バスの使用権利が獲得される。そして、メモリ制御部３ｃにより、バッファ３ｃａに格納されたデータが、バス１を介してデータ処理部２内の指定されたデータ記憶領域にＤＭＡによりライト転送される。【選択図】図１
2007183692.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して接続されたデータ処理部とデータ管理部との間でＤＭＡ転送を行うデータ処理装置において、
前記データ処理部と前記データ記憶部とを接続し、ＤＭＡ転送要求の通知に利用される専用線と、
前記データ処理部内に設けられ、前記データ処理部のプロセッサから前記データ管理部が管理するデータのリード要求が出力されると、前記ＤＭＡ転送要求を前記専用線を介して出力する受信側ＤＭＡ制御部と、
前記データ管理部内に設けられ、前記受信側ＤＭＡ制御部から出力された前記ＤＭＡ転送要求を前記専用線を介して受け取り、前記ＤＭＡ転送要求で示されたデータのメモリリード要求を出力すると共に、前記データがバッファに格納されると前記バスの使用権利を獲得し、ＤＭＡライト要求を出力する送信側ＤＭＡ制御部と、
前記データ管理部内に設けられ、前記送信側ＤＭＡ制御部から前記メモリリード要求が出力されると、前記データ管理部で管理しているメモリからデータを読み出し、前記バッファに格納すると共に、前記データを前記送信側ＤＭＡ制御部から前記ＤＭＡライト要求が出力されると、前記バッファに格納された前記データを、前記バスを介して前記データ処理部内の指定されたデータ記憶領域に対してＤＭＡライト転送を行うメモリ制御部と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記メモリ制御部は、前記メモリリード要求で指定されたデータが、前記メモリ内の不連続のアドレスに記憶されている場合、前記メモリから読み出したデータを前記バッファの連続する記憶領域に格納し、前記バッファに格納された連続のデータを、前記バスで転送可能なデータ長に分割してＤＭＡによりライト転送することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記メモリ制御部は、前記メモリに格納された画像データ中の矩形領域を指定した前記メモリリード要求を受け取ると、前記矩形領域をアドレスが連続する複数の長方形領域に分割し、前記長方形領域毎にデータを読み出して前記バッファ内の連続の記憶領域に格納し、前記バッファに格納された連続のデータを、前記バスで転送可能なデータ長に分割してＤＭＡライト転送を行うことを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記メモリ制御部は、
前記送信側ＤＭＡ制御部から前記メモリリード要求が出力されると、前記データ管理部で管理しているメモリからデータを読み出し、前記バッファに格納するデータリード回路と、
前記データを前記送信側ＤＭＡ制御部から前記ＤＭＡライト要求が出力されると、前記バッファに格納された前記データを、前記バスを介して前記データ処理部内の指定されたデータ記憶領域にＤＭＡライト転送を行うＤＭＡ転送回路と、を有し、
前記データリード回路と前記ＤＭＡ転送回路とが互いに独立して動作することを特徴とする請求項１記載のデータ処理装置。
【請求項５】
前記メモリ制御部は、前記データリード回路による前記バッファへのデータの書き込みと、前記ＤＭＡ転送回路による前記バッファに格納されたデータのＤＭＡライト転送とをパイプラインで処理することを特徴とする請求項４記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＤＭＡ（Direct Memory Access）転送を行うデータ処理装置に関し、特にリアルタイム性が要求されるデータ処理装置に関する。
【背景技術】
【０００２】
現在、様々な分野で情報処理技術が利用されている。その中で、画像処理に代表されるように、大量のデータ処理を必要とする技術分野がある。しかも、用途によっては、大量のデータの処理のリアルタイム性が必要とされる。
【０００３】
例えば、自動車に設置したカメラで撮影した画像をマイクロコンピュータで解析し、自動車を自動制御する技術がある。この技術により、自動車を駐車位置に自動的に移動させたり、直進する自動車が車線からはみ出さないように制御したりすることができる。この技術では、画像処理が遅延すると、自動車を正しくコントロールできなくなる。そのため、大量のデータを処理しながらも、リアルタイム性も堅持しなければならない。
【０００４】
大量のデータをリアルタイムに処理するには、高い演算性能と高いメモリアクセス性能を両立した処理システムが必要である。
このように、大量のデータをリアルタイムに処理するシステムでは、複数の処理エンジンコアにより、複数の処理ブロックをパイプライン処理する。パイプライン処理するための処理エンジンコアの数は、処理エンジンコアの演算性能とアプリケーションのリアルタイム性の必要条件から決定される。
【０００５】
また、大量のデータをリアルタイム処理しなければならない画像処理においては、バス性能がシステム性能を左右する大きな要因となる。特に専用ハードで実現した処理エンジンコアは、短時間で大量のデータを処理可能な構成とすることが必要である。そのため、バスのデータ転送能力が低いと、処理エンジンコアにおいてデータ待ちが発生し、演算性能を十分発揮できない結果となる。
【０００６】
このデータ転送は、一般的にＤＭＡで実行される。ＣＰＵ（Central Processing Unit）を含むシステム構成では、ＣＰＵバスにＤＭＡ制御部が接続された構成をとる。ＤＭＡ制御部はプロセッサが制御しているＣＰＵバスの使用権利を一時的に獲得し、ＣＰＵバスに接続された２つのメモリ間でデータ転送を実行する。つまり、画像処理システムにおいて、ＤＭＡ転送の効率化はバス性能を左右し、バス性能はシステム全体の性能を左右するという関係にある。
【０００７】
図２０は、従来の画像処理システム構成例を示す図である。大量のデータを処理する従来のシステムでは、ＣＰＵバス９０１を介して、メモリ部９１０と複数のデータ処理部９２０，９３０，９４０，・・・が接続されている。ＣＰＵバス９０１は、バス制御回路９０２によって、リクエストの調停が行われる。
【０００８】
メモリ部９１０は、メモリ制御部９１１とＤＲＡＭ（Dynamic Random Access Memory）９１２とを有している。メモリ制御部９１１は、ＤＲＡＭに対するデータの書き込みと、データの読み出しとを制御する。ＤＲＡＭ９１２には、複数のデータ処理部９２０，９３０，９４０，・・・で使用するデータが格納される。
【０００９】
データ処理部９２０は、プロセッサエレメント９２１、ＳＲＡＭ（Static Random Access Memory）９２２，９２３、メモリインタフェース（Ｉ／Ｆ）部９２４、およびプロセッサエレメントＤＭＡコントローラ（ＰＥ−ＤＭＡＣ）９２５を有している。
【００１０】
プロセッサエレメント９２１は、２つのＳＲＡＭ９２２，９２３を利用してデータ演算を行う。ＳＲＡＭ９２２，９２３には、プロセッサエレメント９２１で使用するデータおよび演算結果が記憶される。メモリＩ／Ｆ部９２４は、ＳＲＡＭ９２２，９２３に対するデータの書き込みとデータの読み出しとを行う。ＰＥ−ＤＭＡＣ９２５は、メモリＩ／Ｆ部９２４がＣＰＵバス９０１を介してデータ転送を行う場合のＤＭＡ制御を行う。
【００１１】
データ処理部９３０は、プロセッサエレメント９３１、ＳＲＡＭ９３２，９３３、メモリインタフェース（Ｉ／Ｆ）部９３４、およびＤＭＡコントローラ（ＰＥ−ＤＭＡＣ）９３５を有している。データ処理部９３０内の各要素は、データ処理部９２０内の同名の要素と同じ機能を有している。
【００１２】
データ処理部９４０は、プロセッサエレメント９４１、ＳＲＡＭ９４２，９４３、メモリインタフェース（Ｉ／Ｆ）部９４４、およびＤＭＡコントローラ（ＰＥ−ＤＭＡＣ）９４５を有している。データ処理部９４０内の各要素は、データ処理部９２０内の同名の要素と同じ機能を有している。
【００１３】
図２１は、従来のシステムにおけるリードアクセスのタイミングチャートである。この図２１には、ＰＥ−ＤＭＡＣ９２５からＤＲＡＭ９１０に対するリード要求を出力した場合の例が示されている。
【００１４】
ＰＥ−ＤＭＡＣ９２５からリード要求（Read req）が出力されると、ＣＰＵバス９０１のバス制御回路９０２でバス調停（Bus arbitration）が行われる。リード要求が許可されると、ＰＥ−ＤＭＡＣ９２５においてデータリードに必要な情報が判断（Status Judgement）が行われ、データリードに必要な情報がメモリ制御部９１１に送られる。
【００１５】
メモリ制御部９１１では、指定されたリード要求の調停（Req arbitration）が行われ、その後、ＤＲＡＭ９１２に対するリードアクセスが行われる。ＤＲＡＭ９１２から読み出されたデータは、ＣＰＵバス９０１を介してＰＥ−ＤＭＡＣ９２５に送られる。
【００１６】
このような手順で、ＤＭＡ転送が繰り返される。しかも、リアルタイムに処理を実行するために複数の各データ処理部９２０，９３０，９４０，・・・が設けられているため、各データ処理部９２０，９３０，９４０，・・・からメモリ部９１０へのアクセスが頻発する。そこで、ＣＰＵバス９０１経由のデータ転送をできるだけ効率よく行うための技術が考えられている。
【００１７】
例えば、メモリ制御部９１１において、余分なデータが転送されないように、ＤＲＡＭ９１２から読み出したデータをバッファに格納し、そのバッファから必要なデータのみをＣＰＵバス９０１を介して転送する技術がある（特許文献１参照）。
【００１８】
また、ＤＭＡ転送では、転送効率を上げるためにバースト転送が行われるが、バースト転送中に障害が発生したとき、バースト転送が終わるまで障害情報の通知が待たされてしまう。そこで、ＤＭＡ転送を行うＣＰＵバスとは別に、障害情報を転送するＰｉｏバスを設けて、ＤＭＡ転送中に障害情報を採取する技術も考えられている（特許文献２参照）。
【００１９】
なお、図２０に示したような構成のシステムに適用可能なバス接続方式として、例えば、ＡＲＭ社のＡＭＢＡ（Advanced Microcontroller Bus Architecture）バスがある。最も普及しているのがＡＭＢＡ  ＡＨＢ（Advanced High-Performance Bus）であり、最新方式としてＡＭＢＡ  ＡＸＩ（Advanced eXtensible Interface）が広まりつつある（非特許文献１参照）。
【特許文献１】特開２００１−２２６３７号公報
【特許文献２】特開平７−２１９８８８号公報
【非特許文献１】ＡＲＭ社、"AMBA Home Page"、［online］、［２００５年１２月７日検索］、インターネット、＜URL:http://www.arm.com/products/solutions/AMBAHomePage.html＞
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかし、ＣＰＵバスでＤＭＡ転送を実行すると、リード転送要求実行時にＣＰＵバスを無駄に占有するサイクルが存在し、ＤＭＡ転送の効率低下を招いていた。
以下にＤＭＡの転送効率が低下する理由を説明する。
【００２１】
前述したように、大量のデータを処理する画像処理システムでは、ＤＭＡ転送の効率がシステム性能を左右する。ＤＭＡ転送効率は、バスのビット幅と動作周波数が重要な要素であるが、これらのみで決まるものではない。
【００２２】
バス仕様では、バスの使用権利を確保した際に、使用権利を解放するまでに転送可能なデータ量（最大データ転送サイズ）を制限していることが多い。これは、データ転送の要求元が複数存在する場合、ひとつの要求元のデータ転送でバスを長時間占有してしまうと、他の要求元のデータ転送が待たされて実行できなくなるためである。すなわち、他のデバイスの処理が待たされることになり、待たされたデバイスの処理のリアルタイム性を損なう可能性が高いからである。
【００２３】
そこで、一般には、１回のバス使用権利獲得時のデータ転送の最大データ転送サイズを制限し、所望のデータを複数に分割して転送する。これにより、他の要求元によるデータ転送の割り込みが可能となる。
【００２４】
実際に他の要求元のデータ転送が割り込むかどうかは、複数のデータ転送の要求元に割り当てられた優先順位に基づく調停によって決定される。このバス調停サイクルが１回のデータ転送の最初に必ず入り込む。そのため、データ転送の分割は、ＤＭＡ転送効率低下を招く。
【００２５】
このような条件下で、データ転送の要求元から、あるまとまったデータのリード転送の実行要求があった場合を考える。バス仕様の制約から、１回のデータ転送の最大データ転送サイズを制限するために、最大データ転送サイズが予め定められている。受け取ったリード転送要求が最大データ転送サイズを超えるリード転送要求であった場合、ＤＭＡ制御部において、受け取ったリード転送要求は複数のリード転送要求に自動分割される。分割後のリード転送要求で転送されるデータサイズは、最大データ転送サイズを超えないようにする。分割された複数のリード転送要求毎にバスにリード転送の要求を行うことで、最大データ転送サイズを超えたデータ転送が防止される。
【００２６】
１回のリード転送は以下の手順で実行される。
Ａ）ＰＥ−ＤＭＡＣはＣＰＵバスにリード転送要求（Read req）を出力し、バスの使用権利を確保する。
Ｂ）ＰＥ−ＤＭＡＣは、メモリ制御部にリード転送したいアドレス（start,adr,data＿length,etc.）を伝える。
Ｃ）メモリ制御部はメモリ（ＤＲＡＭ）からデータを読み出す。
Ｄ）メモリ制御部は、ＣＰＵバスにデータを出力し、所望のメモリへのデータ転送完了後、バスの使用権利を放棄し、ＰＥ−ＤＭＡＣにアクセス完了信号（end）を出力する。
【００２７】
リード転送要求が複数に分割されている場合、現在の転送処理のＤ）が終了しないと次の転送処理のＡ）が開始できないため、Ａ）〜Ｃ）の処理中はデータ転送が実施できないのにバスを占有していることになり、ＤＭＡの転送効率は大幅に低下していた。
【００２８】
なお、ＡＲＭ社のＡＭＢＡ  ＡＸＩでは、データ転送要求バスとデータ転送バスを別のバスとして構成し、データ転送要求を多重に発行することを可能としている。つまり、Ａ）・Ｂ）のリード転送要求とＤ）のデータ転送を異なるバスで構成し、Ｄ）の処理中にＡ）・Ｂ）を実行できる。このようなマルチレイヤのバス構成を採用することで、リード転送要求を多重に発行することが可能となる。
【００２９】
リード転送要求を多重化するには、多重化している状態を記憶する必要がある。これを実現するには、記憶数分の記憶回路が必要となり、回路規模を増加させる要因である。そのため、実現する際には多重化数が制約される。ＡＭＢＡ  ＡＸＩでは、この多重化数は任意であり、ＡＭＢＡ  ＡＸＩであったとしても多重化できないバス構成も許されるため、ＤＭＡ転送の効率化に関しては、ＡＭＢＡ  ＡＨＢと同等である可能性もある。実装するプロセッサコアの仕様によっては、ＡＭＢＡ  ＡＸＩなどのマルチレイヤのバス構成が利用できない場合もあり、この場合は解決手段が存在しなかった。
【００３０】
また、近年になり、プロセッサの動作周波数の向上による高性能化には陰りが見えてきている。これは、以前であればトランジスタの微細化によるスピードの向上が見込めたが、ライン幅が１００ｎｍ以下になると動作周波数の向上に限界が出てきた。そのため、トランジスタのさらなる微細化は、小型化のみの効果しか見込むことができない。
【００３１】
そこで、性能向上を実現するために、１チップにプロセッサコアを複数搭載した、マルチコアのプロセッサが主流になりつつある。つまりマルチコア・プロセッサシステムでは、データ転送の要求元が複数存在するわけであり、ＤＭＡ転送の効率化は重要な要素であると言える。
【００３２】
さらに、大量のデータを取り扱う処理の１つとして、画像処理がある。この画像処理におけるデータ転送の効率化に関しては、画像処理特有の課題が存在する。
画像処理の場合、ＤＭＡ転送に２次元矩形アクセスをサポートすることが常套手段である。例えば、２次元矩形アクセスは、フレームメモリ上から、画面内の一部の矩形データを、別のメモリに転送するときに有効である。
【００３３】
２次元矩形アクセスでは、矩形領域の水平方向へはアドレスが連続するが、垂直方向にはアドレスは連続しない。一方、転送先のメモリ上では、切り出した矩形データを連続アドレスで配置する。すなわち、転送先では１次元アクセスする場合が殆どである。このような場合、矩形データを水平方向に１行毎の短冊状（長方形領域）に分割して、複数のリード転送要求を行う。
【００３４】
ところで、バスは、データ転送のバースト長が長い方が効率的な転送になることは周知の事実である。例えば、１回のバス調停で１６０バイト転送した場合と、１０回のバス調停で１６バイト転送を１０回行った場合とでは、９回のバス調停サイクル分、後者の方が１６０バイト転送に要する総サイクル数が多い。ここで、バス幅を６４ｂｉｔ（８Ｂｙｔｅｓ）、バス調停サイクルを１サイクルとして、バス転送効率（１サイクル当たりの平均のデータ転送量）を求めると、以下のようになる。
バス調停１回で160バイト転送を1回：160÷（160÷8＋1）＝7.62バイト／サイクル
バス調停１回で16バイト転送を10回：160÷（（16÷8＋1）×10）＝5.33バイト／サイクル
すなわち、データ転送効率の低下が（7.62-5.33）/7.62＝約30％認められる。これは、１回当たりのデータ転送量が少ないと、分割して増加した分のバス調停サイクルが無視できない値となることを示している。
【００３５】
しかし、画像処理の場合、２次元矩形アクセスでＤＭＡ転送する際の矩形データの水平方向サイズは３２〜６４画素程度と、さほど大きくならない。むしろ近年では、画像処理アプリ全体で大量のデータ転送を行う必要があるため、バス幅を６４ｂｉｔ（８Ｂｙｔｅｓ）よりも大きくする傾向がある。従って、データ転送のバースト長が短くなってしまう場合のデータ転送効率の低下は、更に顕著になる。
【００３６】
本発明はこのような点に鑑みてなされたものであり、リード転送要求実行時のデータ転送効率を向上させることができるダイレクトメモリアクセス制御回路を提供することを目的とする。
【課題を解決するための手段】
【００３７】
本発明では上記課題を解決するために、図１に示すようなデータ処理装置が提供される。本発明に係るデータ処理装置は、バス１を介して接続されたデータ処理部２とデータ管理部３との間でＤＭＡ転送を行うものである。専用線４は、データ処理部２とデータ管理部３とを接続しており、ＤＭＡ転送要求の通知に利用される。受信側ＤＭＡ制御部２ｂは、データ処理部２内に設けられ、データ処理部２のプロセッサ２ａからデータ管理部３が管理するデータのリード要求が出力されると、ＤＭＡ転送要求を専用線４を介して出力する。送信側ＤＭＡ制御部３ａは、データ管理部３内に設けられ、受信側ＤＭＡ制御部２ｂから出力されたＤＭＡ転送要求を専用線４を介して受け取り、ＤＭＡ転送要求で示されたデータのメモリリード要求を出力する。また、送信側ＤＭＡ制御部３ａは、データがバッファ３ｃａに格納されるとバス１の使用権利を獲得し、ＤＭＡライト要求を出力する。メモリ制御部３ｃは、データ管理部３内に設けられ、送信側ＤＭＡ制御部３ａからメモリリード要求が出力されると、データ管理部３で管理しているメモリ３ｂからデータを読み出し、バッファ３ｃａに格納する。また、メモリ制御部３ｃは、データを送信側ＤＭＡ制御部３ａからＤＭＡライト要求が出力されると、バッファ３ｃａに格納されたデータを、バスを介してデータ処理部２内の指定されたデータ記憶領域に対してＤＭＡライト転送を行う。
【００３８】
このようなデータ処理装置によれば、データ処理部２のプロセッサ２ａからデータ管理部３が管理するデータのリード要求が出力されると、専用線４を介して、ＤＭＡ転送要求がデータ処理部２からデータ管理部３へ出力される。次に、データ管理部３において、ＤＭＡ転送要求に応じて、ＤＭＡ転送要求で示されたデータがデータ管理部３で管理しているメモリ３ｂから読み出され、バッファ３ｃａに格納される。データがバッファ３ｃａに格納されるとバスの使用権利が獲得される。そして、バッファ３ｃａに格納されたデータが、バス１を介してデータ処理部２内の指定されたデータ記憶領域にＤＭＡによりライト転送される。
【発明の効果】
【００３９】
本発明では、データ処理部でのリード要求が出されると、専用線を介して、データ管理部に対してＤＭＡ転送要求を出力し、データ管理部からＤＭＡによるライト転送を行うようにした。これにより、データの転送準備が整った後にバスの使用権利を獲得することができ、バスを介したデータのデータ転送効率が向上する。
【発明を実施するための最良の形態】
【００４０】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。データ処理装置は、バス１を介してデータ処理部２とデータ管理部３とが接続されている。データ処理部２は、プロセッサ２ａと受信側ＤＭＡ制御部２ｂとを有する。また、データ管理部３は、送信側ＤＭＡ制御部３ａ、メモリ３ｂ、およびメモリ制御部３ｃを有する。データ処理部２の受信側ＤＭＡ制御部２ｂは、データ管理部３の送信側ＤＭＡ制御部３ａと専用線４で接続されている。専用線４は、ＤＭＡ転送要求の通知に利用される。
【００４１】
データ処理部２のプロセッサ２ａは、データ処理を行う。そして、データ処理部２は、データ処理中にデータ管理部３が管理するメモリ３ｂ内のデータが必要になると、受信側ＤＭＡ制御部２ｂに対してリード要求を出力する。
【００４２】
データ処理部２の受信側ＤＭＡ制御部２ｂは、プロセッサ２ａからリード要求が出力されると、専用線４を介し、データ管理部３の送信側ＤＭＡ制御部３ａに対してＤＭＡ転送要求を出力する。このＤＭＡ転送要求には、転送対象となるデータを特定する情報（アドレスやデータ長）や、ＤＭＡライト転送時にデータを書き込むべきデータ処理部２内のデータ記憶領域を示す情報（書き込み先のアドレス等）が含まれる。
【００４３】
データ管理部３の送信側ＤＭＡ制御部３ａは、受信側ＤＭＡ制御部２ｂから出力されたＤＭＡ転送要求を専用線４を介して受け取り、ＤＭＡ転送要求で示されたデータのメモリリード要求をメモリ制御部３ｃに対して出力する。また、送信側ＤＭＡ制御部３ａは、データがバッファ３ｃａに格納されるとバス１の使用権利を獲得し、ＤＭＡライト要求をメモリ制御部３ｃに対して出力する。
【００４４】
データ管理部３のメモリ制御部３ｃは、送信側ＤＭＡ制御部３ａからリード要求が出力されると、データ管理部３で管理しているメモリ３ｂからデータを読み出し、バッファ３ｃａに格納する。また、メモリ制御部３ｃは、データを送信側ＤＭＡ制御部３ａからＤＭＡライト要求が出力されると、バッファ３ｃａに格納されたデータを、バスを介してデータ処理部２内の指定されたデータ記憶領域に対してＤＭＡライト転送を行う。
【００４５】
このようなデータ処理装置によれば、データ処理部２のプロセッサ２ａからデータ管理部３が管理するデータのリード要求が出力されると、受信側ＤＭＡ制御部２ｂにより、専用線４を介して、ＤＭＡ転送要求がデータ処理部２からデータ管理部３へ出力される。ＤＭＡ転送要求に応じて、データ管理部３内の送信側ＤＭＡ制御部３ａにより、メモリリード要求が出力される。すると、メモリ制御部３ｃにより、ＤＭＡ転送要求で示されたデータがデータ管理部３で管理しているメモリ３ｂから読み出され、バッファ３ｃａに格納される。データがバッファ３ｃａに格納されると、送信側ＤＭＡ制御部３ａによりバスの使用権利が獲得され、ＤＭＡライト要求が出力される。そして、メモリ制御部３ｃにより、バッファ３ｃａに格納されたデータが、バス１を介してデータ処理部２内の指定されたデータ記憶領域に対して、ＤＭＡによりライト転送される。
【００４６】
このようにして、ＤＭＡ転送におけるリード転送要求の効率化が実現される。すなわち、ＤＭＡによるデータ転送をライト転送のみとすることが、バス仕様に依存せずにＤＭＡ転送効率を高める最も単純な手法である。ライト転送要求の場合の動作を以下に説明する。
【００４７】
あるまとまったデータを転送したい場合、複数のライト転送要求に分割する必要がある。１回のライト転送要求は、要求元が直接アクセス制御するメモリからデータを読み出して、転送先にデータを転送する処理を行うが、メモリから読み出すためのアドレスは、要求元のＤＭＡ転送制御部が情報を保有している。複数のライト転送要求に分割されたとしても、次にメモリから読み出すためのアドレスは、ライト転送要求元の制御部内が保有しており、バス仕様には依存しない。つまり、ライト転送は元々効率よく実行できる可能性を持っている。
【００４８】
このように、ＤＭＡ転送をライト転送のみとすることは効果的であるが、要求元が他のメモリからデータを読み出せなくなっては、所望の処理が実現できなくなるため、何らかの代替案が必要となる。そこで、本発明では、データ処理部２からのＤＭＡ転送要求をデータ管理部３に通知するための専用線４を設けた。その結果、バス１を介さずに、データ処理部２が必要としているデータのＤＭＡ転送要求を、データ管理部３に伝えることができる。データ管理部３では、転送すべきデータが特定されていれば、そのデータをバッファ３ｃａに読み出した後、バス１の使用権利を獲得し、ＤＭＡライト転送をすることができる。
【００４９】
次に、本実施の形態の詳細を説明する。
［第１の実施の形態］
第１の実施の形態は、大量のデータをリアルタイムに処理するＬＳＩ（Large Scale Integration）の例である。
【００５０】
図２は、第１の実施の形態ＬＳＩの構成例を示す図である。ＬＳＩ１００には、バス制御回路１０２で制御されるＣＰＵバス１０１が設けられている。ＣＰＵバス１０１には、汎用ＣＰＵ１１０、メモリ部１３０、および複数のデータ処理部１５０，１５０ａ，１５０ｂが接続されている。
【００５１】
汎用ＣＰＵ１１０は、各種データ処理を行う。また汎用ＣＰＵ１１０には、周辺ＩＯ１１が接続されており、周辺ＩＯ１１を介したデータの入出力を行うことができる。
メモリ部１３０には、ＤＲＡＭを有している。メモリ部１３０は、ＤＲＡＭに対するデータの書き込みおよび読み出しを行うと共に、ＣＰＵバス１０１を介したデータ転送を行う。
【００５２】
データ処理部１５０，１５０ａ，１５０ｂは、画像処理をリアルタイムに実行する。データ処理部１５０，１５０ａ，１５０ｂは、処理対象の画像データをＣＰＵバス１０１を介してメモリ部１３０から取得する。また、データ処理部１５０，１５０ａ，１５０ｂは、処理結果のデータを、ＣＰＵバス１０１を介してメモリ部１３０に転送する。
【００５３】
図３は、メモリ部とデータ処理部との内部構成を示すブロック図である。メモリ部１３０は、メモリ制御部１３１、ＤＭＡ制御部（ＭＥＭ−ＤＭＡＣ）１３２、およびＤＲＡＭ１３３を有している。
【００５４】
メモリ制御部１３１は、内部にバッファ（ＭＥＭ−ＢＵＦ）１３１ａを有している。メモリ制御部１３１は、非常に広いバンド幅の信号線でＤＲＡＭ１３３に接続されていると共に、ＣＰＵバス１０１に接続されている。メモリ制御部１３１は、ＤＲＡＭ１３３に対するデータの書き込みおよび読み出しを行う。また、メモリ制御部１３１は、ＣＰＵバス１０１を介してデータの送受信を行う。
【００５５】
なお、ＤＭＡ転送を行う場合、メモリ制御部１３１は、ＭＥＭ−ＤＭＡＣ１３２からの指示に従って動作する。また、ＤＲＡＭ１３３から読み出してデータ処理部１５０に転送するデータは、バッファ１３１ａに格納され、必要なデータのみが取り出されてデータ処理部１５０に送信される。
【００５６】
ＭＥＭ−ＤＭＡＣ１３２は、データ処理部１５０に対して、リード要求用の専用線２０で接続されている。なお、図３では、データ処理部１５０との間のリード要求用の専用線２０のみが示されているが、他のデータ処理部１５０ａ，１５０ｂとの間も同様のリード要求専用線で接続されている。
【００５７】
ＭＥＭ−ＤＭＡＣ１３２は、リード要求用の専用線２０を介してデータ処理部１５０から送られたリード要求に応じて、ＤＲＡＭ１３３の内のデータのデータ処理部１５０に対するＤＭＡ転送を制御する。
【００５８】
データ処理部１５０は、プロセッサエレメント１５１、ＳＲＡＭ１５２，１５３、メモリインタフェース（Ｉ／Ｆ）１５４、およびＤＭＡ制御部（ＰＥ−ＤＭＡＣ）１５５を有している。
【００５９】
プロセッサエレメント１５１は、画像処理を実行する。プロセッサエレメント１５１は、２つのＳＲＡＭ１５２，１５３に接続されており、処理すべき画像データをＳＲＡＭ１５２，１５３から読み出す。そして、プロセッサエレメント１５１は、処理結果をＳＲＡＭ１５２，１５３に書き込む。
【００６０】
ＳＲＡＭ１５２，１５３は、処理対象の画像データおよび処理結果を格納する記憶装置である。ＳＲＡＭ１５２，１５３は、一方にデータの書き込みが行われている間に他方からデータの読み出しが行われる。
【００６１】
メモリＩ／Ｆ１５４は、ＣＰＵバス１０１を介して受け取ったデータをＳＲＡＭ１５２，１５３に格納する。また、メモリＩ／Ｆ１５４は、ＳＲＡＭ１５２，１５３に格納されたデータを、ＣＰＵバス１０１を介してメモリ部１３０に転送する。なお、ＤＭＡ転送が行われる場合、メモリＩ／Ｆ１５４は、ＰＥ−ＤＭＡＣ１５５からの指示に従って、データ転送処理を行う。
【００６２】
ＰＥ−ＤＭＡＣ１５５は、ＤＭＡ転送処理を制御する。ＰＥ−ＤＭＡＣ１５５には、リード要求（ＤＭＡ転送要求）用の専用線２０が接続されており、リード要求を出力する場合、リード要求用の専用線２０を介してメモリ部１３０のＭＥＭ−ＤＭＡＣ１３２に対してリード要求を出力する。
【００６３】
このように、本実施の形態では、メモリ部１３０にリード転送要求専用のＭＥＭ−ＤＭＡＣ１３２を配置し、ＤＭＡ転送の要求元からリード転送要求を受け付けるリード要求用の専用線２０を備えた。これにより、以下のようにＤＭＡ転送が行われる。
【００６４】
データ処理部１５０においてＤＭＡによるリード転送要求が設定された場合、ＰＥ−ＤＭＡＣ１５５は、ＣＰＵバス１０１に要求を出力する代わりに、リード要求用の専用線２０を介して、リード転送要求の設定情報をメモリ部１３０のＭＥＭ−ＤＭＡＣ１３２に通知する。メモリ部１３０のリード要求専用のＭＥＭ−ＤＭＡＣ１３２は、要求内容に従い、メモリ制御部にメモリアクセスのリクエストを行い、メモリ制御部はメモリからデータを読み出し、バッファ１３１ａに一時格納したのち、ＣＰＵバス１０１にはライト転送要求を行う。なお、バス仕様の制約による転送要求の分割は、ＭＥＭ−ＤＭＡＣ１３２が行う。このような処理を行うことで、ＣＰＵバス１０１上にはＤＭＡによるデータ転送は全てライト転送によって行われ、ＣＰＵバス１０１を効率的に利用可能となる。
【００６５】
図４は、データ処理部からのリード要求の処理手順を示す図である。図４には、各回路間で受けた渡される情報が示されている。
図５は、第１の実施の形態における共有メモリからのリード処理手順を示すタイミングチャートである。これは、リード転送要求が１次元転送であり、ＤＲＡＭ１３３からのデータ読み出しは１回のバーストアクセスで完了し、かつＣＰＵバス１０１仕様の最大データ長以下のデータ転送の場合の例である。
【００６６】
このタイミングチャートでは、上から順に、データ処理部１５０のＤＭＡ制御部（ＰＥ−ＤＭＡＣ）１５５、メモリ部１３０のＤＭＡ制御部（ＭＥＭ−ＤＭＡＣ）１３２、メモリ部１３０のメモリ制御部１３１、ＤＲＡＭ１３３、メモリ制御部１３１内のバッファ（ＭＥＭ−ＢＵＦ）１３１ａ、およびＣＰＵバス１０１の処理状況が時系列で示されている。なお、図５中、ＣＰＵバス１０１の処理については、バス制御回路１０２が実行する処理も含まれている。
【００６７】
図４に示した情報の受け渡し、および各回路での処理を、図５のタイミングチャートに沿って説明する。
まず、時刻ｔ１に、ＰＥ−ＤＭＡＣ１５５においてリードアクセス処理が開始される。このリードアクセス処理では、データ処理部１５０のＰＥ−ＤＭＡＣ１５５からメモリ部１３０のＭＥＭ−ＤＭＡＣ１３２に対して、リード要求用の専用線２０を介してリード転送要求（Read req）が出力される。この際、リード転送要求と共に、ＤＭＡ転送に必要な情報（リードデータの先頭のアドレス、データ長、ライト転送による書き込み先のアドレス等）が転送される。すると、ＭＥＭ−ＤＭＡＣ１３２において、リード転送要求の調停処理（Req arbitration）が行われる。
【００６８】
すなわち、ＭＥＭ−ＤＭＡＣ１３２は、現在の動作状況に基づいて、ＰＥ−ＤＭＡＣ１５５からのリード転送要求を受け付けることができるか否かを判断する。ＭＥＭ−ＤＭＡＣ１３２は、受け付け可能であれば、受信したリード転送要求に応じた転送準備を行う。
【００６９】
具体的には、ＭＥＭ−ＤＭＡＣ１３２は、バッファ１３１ａ内に他のデータ転送の為のデータが残っていなければ、リード転送要求を受けることができる。バッファ１３１ａ内のデータ残量を確認するのは、バッファ１３１ａ内で直前のリクエストによるデータと、今受け付けようとしているリクエストのデータとが混在することを防ぐためである。リード転送要求を受け付ける場合、ＭＥＭ−ＤＭＡＣ１３２は、ＤＭＡ転送に必要な情報を記憶する。
【００７０】
図５の例では、ＰＥ−ＤＭＡＣ１５５からのリード転送要求を実行することが決定されている。すると、時刻ｔ２に調停処理が終了し、ＭＥＭ−ＤＭＡＣ１３２からＰＥ−ＤＭＡＣ１５５へ、リード要求用の専用線２０を介してアクノリッジ信号（Read ack）が返される。ＲＥ−ＤＭＡＣ１５５では、アクノリッジ信号（Read ack）の受信によって、リードアクセス処理が終了する。
【００７１】
また、時刻ｔ２からＭＥＭ−ＤＭＡＣ１３２において、リードアクセス処理が開始される。このリードアクセス処理では、最初に、ＭＥＭ−ＤＭＡＣ１３２からメモリ制御部１３１に対して、ＤＲＡＭ１３３へのアクセスリクエスト（req）が出力される。また、アクセスリクエストと同時に、ＭＥＭ−ＤＭＡＣ１３２は、転送すべきデータの先頭アドレス（adr）とデータ長（data＿length）とをメモリ制御部１３１に対して出力する。すると、メモリ制御部１３１では、アクセスリクエストの調停処理（Req arbitration）が行われる。
【００７２】
時刻ｔ３に、ライト要求が実行可能と判断され、メモリ制御部１３１では、ＤＲＡＭ１３３に対するリードアクセス処理が行われる。
メモリ制御部１３１のリードアクセス処理では、ＭＥＭ−ＤＭＡＣ１３２から指示された先頭アドレスから、指定されたデータ長分のデータが、ＤＲＡＭ１３３から読み出される。具体的には、メモリ制御部１３１は、読み出し対象のデータのアドレスを、ＤＲＡＭ１３３に対して順次出力し、ＤＲＡＭ１３３から出力されるデータを取得する。そして、メモリ制御部１３１は、ＤＲＡＭ１３３から読み出したデータを、バッファ１３１ａに格納する。
【００７３】
なお、ＤＲＡＭ１３３に対するアクセスでは、ＤＲＡＭの仕様のため、最初の数サイクルはデータを取り出すことができない。図５の例では、時刻ｔ４からバッファ１３１ａへのリードデータの書き込みが開始されている。
【００７４】
時刻ｔ５に、ＤＲＡＭ１３３からのデータの読み出しが終了すると、メモリ制御部１３１からＭＥＭ−ＤＭＡＣ１３２へ、ライト要求に対するアクノリッジ信号（ack）が出力される。ＭＥＭ−ＤＭＡＣ１３２は、アクノリッジ信号（ack）に応じて、状態遷移先の判断を行う。
【００７５】
バッファ１３１ａに指定されたデータ長分のデータが格納されたことを認識し、ライト要求（Write req）を出力する状態に遷移するべきであることを判断する。判断処理が完了した時刻ｔ６に、ＭＥＭ−ＤＭＡＣ１３２からＣＰＵバス１０１上にライト要求（Write req）が出力される。ライト要求は、バス制御回路１０２で受け付けられる。バス制御回路１０２では、他の装置との間のバス使用権利の競合に関する調停処理（Bus arbitration）が行われる。
【００７６】
時刻ｔ７に調停が終了すると、バス制御回路１０２からＭＥＭ−ＤＭＡＣ１３２に対して、ライトアクノリッジ信号（Write ack）が出力される。すると、ＭＥＭ−ＤＭＡＣ１３２は、ライトアクノリッジ信号（Write ack）に応じて、状態遷移先の判断を行う。
【００７７】
ＣＰＵバス１０１のバス使用権利が獲得できたことを認識し、ライト転送処理（Write transfer）に遷移するべきであることを判断する。判断処理が完了した時刻ｔ８に、ＭＥＭ−ＤＭＡＣ１３２からメモリ制御部１３１に、スタート信号（start）とライト転送のデータサイズ（Wlength）とが出力される。その後、ＭＥＭ−ＤＭＡＣ１３２は、ＣＰＵバス１０１のライト転送処理（Write transfer）の制御を行う。なお、ライト転送におけるデータ処理部１５０側での書き込み位置は、「Padr」によってデータ処理部１５０によって指定される。
【００７８】
また、メモリ制御部１３１は、スタート信号（start）を受け取り、データ処理部１５０に対するＤＭＡによるライト転送処理（Write transfer）に遷移するべきであることを判断する。判断処理が完了した時刻ｔ９に、ＣＰＵバス１０１を介して、データ処理部１５０に対するＤＭＡによるライト転送処理（Write transfer）を行う。具体的には、メモリ制御部１３１は、ＭＥＭ−ＤＭＡＣ１３２からのスタート信号（start）に応じて、バッファ１３１ａに予め蓄えておいたデータを、データ幅（Wlength）で示されるデータ長ずつ、ＣＰＵバス１０１を介してデータ処理部１５０に対して出力する。
【００７９】
メモリ制御部１３１からＣＰＵバス１０１への出力データ（Out Mdata）は、データ処理部１５０のメモリＩ／Ｆ１５４への入力データ（In Pdata）となる。この入力データは、メモリＩ／Ｆ１５４によってＳＲＡＭ１５２に書き込まれる。具体的には、メモリＩ／Ｆ１５４は、書き込み先のアドレス（Padr）で指定されたアドレスから順に、ＳＡＲＭ１５２に対してアドレス（adr）を出力し、入力データ（In Pdata）をＳＲＡＭ１５２の該当アドレスに書き込む。
【００８０】
時刻ｔ１０にライト転送処理が終了すると、メモリ制御部１３１からＭＥＭ−ＤＭＡＣ１３２に対して、終了信号（end）が出力される。
このように、リード要求の転送レイテンシは、時刻ｔ１から時刻ｔ１０までの時間であるが、ＣＰＵバス１０１の占有時間は、時刻ｔ７から時刻ｔ１０までの時間で済む。すなわち、ＣＰＵバス１０１の占有時間が少なくて済み、システム全体でのＣＰＵバス１０１を介したデータ転送効率を向上させることができる。
【００８１】
ここで、転送すべきデータ量がライト転送のデータサイズよりも大きい場合、複数回に分けてデータ転送が行われる。その場合、図５の時刻ｔ５から時刻ｔ１０までの処理が繰り返し実行される。
【００８２】
図６は、データの分割転送が行われる場合のタイミングチャートである。図６の例は、例えば、ＤＭＡ制御部（ＰＥ−ＤＭＡＣ）１５５からＣＰＵバス１０１の仕様の最大データ長がＭバイト（Ｍは、１以上の整数）の場合に、転送すべきデータサイズが２Ｍの１次元転送でのリード転送要求（Read req）が発行された場合の処理を示している。
【００８３】
図６の処理は、時刻ｔ１から時刻ｔ１０までは図５と同様であるため、説明を省略する。時刻ｔ１０に、一回目のライトデータ転送が終了すると、ＭＥＭ−ＤＭＡＣ１３２は、メモリ制御部１３１内のバッファ１３１ａの残留データ量を算出する。この場合、転送すべきデータサイズ２Ｍに対して、一回目のライトデータ転送でＣＰＵバス１０１の仕様の最大データ長の制限により、データサイズＭ分のデータしか転送できていないので、送信のデータがＭ分あることを認識する。
【００８４】
残りがあることを認識したことで、再度、ライト要求（Write req）を出力する状態に遷移するべきであることを判断する。判断処理が完了した時刻ｔ１１に、ＭＥＭ−ＤＭＡＣ１３２からＣＰＵバス１０１上にライト要求（Write req）が出力される。ライト要求は、バス制御回路１０２で受け付けられる。バス制御回路１０２では、他の装置との間のバス使用権利の競合に関する調停処理（Bus arbitration）が行われる。なお、調停処理によってＭＥＭ−ＤＭＡＣ１３２の使用を許可する場合、バス制御回路１０２からデータ処理部１５０に対して、書き込み先のアドレス（Padr）等の制御データが渡される。
【００８５】
時刻ｔ１２に調停が終了すると、バス制御回路１０２からＭＥＭ−ＤＭＡＣ１３２に対して、ライトアクノリッジ（Write ack）が出力される。すると、ＭＥＭ−ＤＭＡＣ１３２は、ライトアクノリッジ（Write ack）に応じて、状態遷移先の判断を行う。
【００８６】
ＣＰＵバス１０１のバス使用権利が獲得できたことを認識し、ライト転送処理（Write transfer）に遷移するべきであることを判断する。判断処理が完了した時刻ｔ１３に、ＭＥＭ−ＤＭＡＣ１３２からメモリ制御部１３１に、スタート信号（start）とライト転送のデータサイズ（Wlength）とが出力される。その後、ＭＥＭ−ＤＭＡＣ１３２は、ライト転送処理（Write transfer）を実行する。
【００８７】
また、メモリ制御部１３１は、スタート信号（start）を受け取り、データ処理部１５０に対するＤＭＡによるライト転送処理（Write transfer）に遷移するべきであることを判断する。判断処理が完了した時刻ｔ１４に、ＣＰＵバス１０１を介して、データ処理部１５０に対するＤＭＡによるライト転送処理（Write transfer）を行う。具体的には、メモリ制御部１３１は、ＭＥＭ−ＤＭＡＣ１３２からのスタート信号（start）に応じて、バッファ１３１ａの蓄えられている未送信のデータを、データ幅（Wlength）で示されるデータ長分、ＣＰＵバス１０１を介してデータ処理部１５０に対して出力する。
【００８８】
メモリ制御部１３１からＣＰＵバス１０１への出力データ（Out Mdata）は、データ処理部１５０のメモリＩ／Ｆ１５４への入力データ（In Pdata）となる。この入力データは、メモリＩ／Ｆ１５４によってＳＲＡＭ１５２に書き込まれる。具体的には、メモリＩ／Ｆ１５４は、書き込み先のアドレス（Padr）で指定されたアドレスから順に、ＳＡＲＭ１５２に対してアドレス（adr）を出力し、入力データ（In Pdata）をＳＲＡＭ１５２の該当アドレスに書き込む。
【００８９】
時刻ｔ１５に２回目のライト転送処理が終了すると、メモリ制御部１３１からＭＥＭ−ＤＭＡＣ１３２に対して、終了信号（end）が出力される。
この例では、リード要求の転送レイテンシは、時刻ｔ１から時刻ｔ１５までの時間であるが、ＣＰＵバス１０１の占有時間は、時刻ｔ７から時刻ｔ１０までの時間と、時刻ｔ１２から時刻ｔ１５までの時間である。このように、複数回に分けでデータを転送する場合においても、ＣＰＵバス１０１の占有時間を従来（例えば、図２１に示す処理）に比べ少なくすることができる。
【００９０】
［第２の実施の形態］
次に、第２の実施の形態について説明する。第２の実施の形態では、画像処理用ＬＳＩに本発明を適用した場合の例を示す。第２の実施の形態では、画像データを取り扱うために、フレームメモリ上の２次元（矩形）データを読み出す際に、読み出したデータを連続のアドレスで格納する機能を備えている。
【００９１】
図７は、第２の実施の形態の画像処理用ＬＳＩの構成例を示す図である。画像処理用ＬＳＩ２００には、バス制御回路２０２で制御されるＣＰＵバス２０１が設けられている。ＣＰＵバス２０１には、汎用ＣＰＵ２１０、画像入力インタフェース（Ｉ／Ｆ）２２０、メモリインタフェース（Ｉ／Ｆ）２３０、画像出力インタフェース（Ｉ／Ｆ）２４０、および複数の画像処理エンジン２５０，２５０ａ，２５０ｂが接続されている。
【００９２】
汎用ＣＰＵ２１０は、各種データ処理を行う。また汎用ＣＰＵ２１０には、周辺ＩＯ１１が接続されており、周辺ＩＯ１１を介したデータの入出力を行うことができる。
画像入力Ｉ／Ｆ２２０には、カメラ１２が接続されている。画像入力Ｉ／Ｆ２２０は、カメラ１２から送られる画像を、ＣＰＵバス２０１を介してフレームメモリ１３等に転送する。
【００９３】
メモリＩ／Ｆ２３０には、フレームメモリ１３が接続されている。フレームメモリ１３は、ＤＲＡＭ等の高速でアクセス可能な大容量の記憶装置である。また、メモリＩ／Ｆ２３０とフレームメモリ１３との間は、非常に広いバンド幅の信号線で接続されている。メモリＩ／Ｆ２３０は、フレームメモリ１３に対するデータの書き込みおよび読み出しを行うと共に、ＣＰＵバス２０１を介したデータ転送を行う。
【００９４】
画像出力Ｉ／Ｆ２４０には、ディスプレイ１４が接続されている。画像出力Ｉ／Ｆ２４０は、ＣＰＵバス２０１を介して画像データを受け取り、ディスプレイ１４に出力する。
画像処理エンジン２５０，２５０ａ，２５０ｂは、画像処理をリアルタイムに実行する。画像処理エンジン２５０，２５０ａ，２５０ｂは、処理対象の画像データをＣＰＵバス２０１を介してフレームメモリ１３から取得する。また、画像処理エンジン２５０，２５０ａ，２５０ｂは、処理結果のデータを、ＣＰＵバス２０１を介してフレームメモリ１３に転送する。
【００９５】
図８は、メモリＩ／Ｆと画像処理エンジンとの内部構成を示すブロック図である。メモリＩ／Ｆ２３０は、メモリ制御部２３１とＤＭＡ制御部（ＭＥＭ−ＤＭＡＣ）２３２とを有している。
【００９６】
メモリ制御部２３１は、内部にバッファ（ＭＥＭ−ＢＵＦ）２３１ａを有している。メモリ制御部２３１は、非常に広いバンド幅の信号線でフレームメモリ１３に接続されていると共に、ＣＰＵバス２０１に接続されている。メモリ制御部２３１は、フレームメモリ１３に対するデータの書き込みおよび読み出しを行う。また、メモリ制御部２３１は、ＣＰＵバス２０１を介してデータの送受信を行う。
【００９７】
なお、ＤＭＡ転送を行う場合、メモリ制御部２３１は、ＭＥＭ−ＤＭＡＣ２３２からの指示に従って動作する。また、フレームメモリ１３から読み出して画像処理エンジン２５０等に転送するデータは、バッファ２３１ａに格納され、必要なデータのみが取り出されて画像処理エンジン２５０に送信される。
【００９８】
ＭＥＭ−ＤＭＡＣ２３２は、画像処理エンジン２５０に対して、リード要求用の専用線２０で接続されている。なお、図８では、画像処理エンジン２５０との間のリード要求用の専用線２０のみが示されているが、他の画像処理エンジン２５０ａ，２５０ｂとの間も同様のリード要求専用線で接続されている。
【００９９】
ＭＥＭ−ＤＭＡＣ２３２は、リード要求用の専用線２０を介して画像処理エンジン２５０から送られたリード要求に応じて、フレームメモリ１３の内のデータの画像処理エンジン２５０に対するＤＭＡ転送を制御する。
【０１００】
画像処理エンジン２５０は、プロセッサエレメント２５１、ＳＲＡＭ２５２，２５３、メモリインタフェース２５４、およびＤＭＡ制御部（ＰＥ−ＤＭＡＣ）２５５を有している。なお、画像処理エンジン２５０内の各構成要素は、ＤＭＡ転送に関する機能に関しては、図３に示したデータ処理部１５０内の同名の構成要素と同様の機能を有している。
【０１０１】
このような構成要素により、第２の実施の形態では、ＤＭＡ転送の２次元アクセスの転送効率の低下を防ぐことができる。すなわち、第１の実施の形態と同様の手法を用いて、フレームメモリ１３から矩形データを切り出すリード転送要求を行う。フレームメモリ１３側のリード要求専用のＭＥＭ−ＤＭＡＣ２３２も２次元アクセスをサポートする。
【０１０２】
ここで、矩形領域のデータを短冊状に分割し、短冊上のデータをライト転送する。このような場合に、フレームメモリ１３から読み出したデータを一時保存するバッファ２３１ａに蓄積するデータ量Ｍを指定できるようにし、指定されたデータ長以上のデータがバッファに蓄積されたら、ＣＰＵバス２０１にライト転送要求を行える機能を付加する。
【０１０３】
例えば、バッファ２３１ａ上にフレームメモリ１３からの読み出しデータを一時保存し、ＭをＣＰＵバス２０１の仕様制約の最大データ転送サイズとする。そして、データがＭだけ蓄積されたら、ライト転送を行う。この機能により、ライト転送回数を低減できる。
【０１０４】
ここで、フレームメモリ１３から読み出したデータを、連続するアドレスに格納する機能について説明する。
図９は、転送時のデータ幅の半分のデータ長に分割されたデータを転送する場合の例を示す図である。図９〔Ａ〕には、読み出したデータ毎に転送する場合の例が示されており、図９〔Ｂ〕には、連続するアドレスに置き換えて転送する場合の例を示している。この例では、ＣＰＵバス２０１のデータ幅が、フレームメモリ１３から１回で読み出すデータ長の２倍の場合を示している。
【０１０５】
図９〔Ａ〕に示すように、フレームメモリ１３内の矩形の領域内の画像データ１３ａを読み出す場合を想定する。
フレームメモリ１３内の記憶領域は複数の行に分割され、各行の左から右の順でアドレスが割り当てられている（図中、実線で示す）。右端の記憶領域の次のアドレスは、その下の行の左端の記憶領域となる。
【０１０６】
このとき、転送すべき画像データ１３ａの記憶領域を示すアドレスは、とびとびの値となる。すなわち、画像データ１３ａの横方向（水平方向）に連続する記憶領域（同一の行）のみが、連続のアドレスに格納されている。そのため、画像データ１３ａを縦方向（垂直方向）の高さに応じた行数分のデータに分割して、フレームメモリ１３から画像データ１３ａを読み出す必要がある。図９〔Ａ〕の例では、「ｄａｔａ＃１」〜「ｄａｔａ＃６」の６つのデータに分割されている。
【０１０７】
フレームメモリ１３からデータを読み出す毎に、そのデータをＣＰＵバス２０１を介して転送すると、６回のデータ転送が必要となる。
一方、第２の実施の形態では、図９〔Ｂ〕に示すように、フレームメモリ１３から読み出したデータを連続のアドレスに格納し、最大データ長分のデータをＣＰＵバス２０１を介して転送する。これにより、３回のデータ転送で、画像データ１３ａを転送することができる。転送されたデータは、画像処理エンジン２５０のＳＲＡＭ内の連続するアドレスの領域に格納される。
【０１０８】
すなわち、短冊に分割されたデータを個別に転送すると６回の転送になるのに対して、本実施の形態では３回の転送で全てのデータを転送可能である。
なお、矩形データの短冊のデータ長の整数倍がＣＰＵバス２０１のバス幅になるとは限らない。バス幅が短冊のデータ長の整数倍ではない場合には、短冊毎にライト転送を行うと必ず一部のデータは不必要であったことになる。
【０１０９】
これもバッファ２３１ａにて１次元に連続したデータとし、バッファ２３１ａ上にてＣＰＵバス２０１の仕様の制約に従ったデータ分割を行うことで、最後のデータ分割以外は有効なデータのみでライト転送が実行されることになる。つまり、最後だけが一部のデータが不必要になる可能性があるのみで、不必要なデータ転送を低減させることが可能になる。
【０１１０】
図１０は、転送時のデータ幅の１．５倍のデータ長に分割されたデータを転送する場合の例を示す図である。図１０〔Ａ〕には、読み出したデータ毎に転送する場合の例が示されており、図１０〔Ｂ〕には、連続するアドレスに置き換えて転送する場合の例を示している。この例では、ＣＰＵバス２０１のデータ幅が、フレームメモリ１３から１回で読み出すデータ長の２／３の場合を示している。
【０１１１】
図１０〔Ａ〕の例では、画像データ１３ａののうちフレームメモリ１３から「ｄａｔａ＃１ａ」と「ｄａｔａ＃１ｂ」とが一回で読み出されるものとする。同様に、「ｄａｔａ＃２ａ」と「ｄａｔａ＃２ｂ」、「ｄａｔａ＃３ａ」と「ｄａｔａ＃３ｂ」、「ｄａｔａ＃４ａ」と「ｄａｔａ＃４ｂ」、「ｄａｔａ＃５ａ」と「ｄａｔａ＃５ｂ」、「ｄａｔａ＃６ａ」と「ｄａｔａ＃６ｂ」がフレームメモリ１３から一回で読み出される。
【０１１２】
図１０〔Ａ〕に示すように、フレームメモリ１３からデータを読み出す毎にＣＰＵバス２０１を介してそのデータを転送すると、フレームメモリ１３からデータ読み出しを行う度に、２回のデータ転送が必要となる。従って、矩形領域の画像データ１３ａ全てのデータ転送を行うには、１２回のデータ転送が行われる。なお、図１０〔Ａ〕において、黒で塗りつぶした領域は、不要な転送データ（例えば、全て０の値のデータ）を示している。
【０１１３】
一方、第２の実施の形態では、図１０〔Ｂ〕に示すように、フレームメモリ１３から読み出したデータを連続のアドレスに格納し、最大データ長分のデータをＣＰＵバス２０１を介して転送する。具体的には、１回目に「ｄａｔａ＃１ａ」が転送される。２回目に「ｄａｔａ＃１ｂ」と「ｄａｔａ＃２ａ」の前半部分「ｄａｔａ＃２ａ−１」が転送される。３回目に「ｄａｔａ＃２ａ」の後半部分「ｄａｔａ＃２ａ−２」と「ｄａｔａ＃２ｂ」とが転送される。以降同様に、データ転送が行われる。
【０１１４】
このように、短冊状のデータそれぞれを２回に分けて転送すると、１２回の内の６回は無駄なデータ転送になる。それ対して、第２の実施の形態では、計９回の転送であり、無駄なデータは転送されない。転送されたデータは、画像処理エンジン２５０のＳＲＡＭ内の連続するアドレスの領域に格納される。
【０１１５】
図９、図１０に示すような処理を実行するため、メモリＩ／Ｆ２３０内のＭＥＭ−ＤＭＡＣ２３２は、２つのシーケンサを有する。一方のシーケンサ（第１のシーケンサ）は、ＰＥ−ＤＭＡＣ２５５からのリード転送要求受け付け処理およびメモリ制御部２３１へのフレームメモリ１３アクセス要求処理を行う。他方のシーケンサ（第２のシーケンサ）は、ＣＰＵバス２０１へのライト転送要求処理とメモリ制御部２３１へのデータ転送要求処理とを行う。
【０１１６】
同様に、メモリＩ／Ｆ２３０内のメモリ制御部２３１は、２つのシーケンサを有する。一方のシーケンサ（第１のシーケンサ）は、フレームメモリアクセス処理を行う。他方のシーケンサ（第２のシーケンサ）は、ＣＰＵバス２０１を介したデータ転送処理を行う。
【０１１７】
以下、これらのシーケンサにおける処理内容を具体的に説明する。なお、図１１〜図１４に示すフローチャートでは、変数への値の代入および変数の値の比較の表記を、Ｃ言語の記述に合わせている。
【０１１８】
図１１は、ＭＥＭ−ＤＭＡＣの第１のシーケンサの処理を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
なお、後述する各ステップにおいて、「MLength」に書き込みアクセスする際には、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサとの間のアクセス競合を常にチェックする必要がある。
【０１１９】
［ステップＳ１］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、起動されると初期化処理を行う。初期化処理では、「Read ack=OFF」、「MLength=0」と設定される。「Read ack」は、リード転送要求に応じて専用線２０を介してＰＥ−ＤＭＡＣ２５５に出力するアクノリッジ信号である。「MLength」は、バッファ２３１ａに格納されたデータ長を示す変数である。なお、この初期化処理は、システムのパワーＯＮ時やリセット時に一度だけ実行するものである。よって通常フローは、これ以降説明するステップＳ２〜Ｓ１４の中で遷移する。
【０１２０】
［ステップＳ２］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、バッファ２３１ａに格納されたデータ長を記憶する変数「MLength」が０で、かつ「Read req」がＯＮであるという条件を満たすか否かを判断する。なお、「MLength=0」を確認するのは、バッファ２３１ａ内で直前のリクエストによるデータと、今受け付けようとしているリクエストのデータが混在することを防ぐためである。これらの条件が満たされれば、処理がステップＳ３に進められる。条件が満たされていなければ、条件が満たされるまで、ステップＳ２の処理を繰り返す。なお、画像処理エンジン２５０のＰＥ−ＤＭＡＣ２５５からのリード転送要求（Read req）が、専用線２０を介してメモリＩ／Ｆ２３０のＭＥＭ−ＤＭＡＣ２３２に伝わることで、「Read req」がＯＮとなる。
【０１２１】
［ステップＳ３］「MLength」が０で、かつ「Read req」がＯＮを検出すると、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、ＤＭＡ転送に必要な情報（Radr, HLength, VLength, Vjump, Wsadr）を記憶し、アクノリッジ信号（Read ack）をＰＥ−ＤＭＡＣ２５５に対して出力する。
【０１２２】
ＤＭＡ転送に必要な情報は、「Rsadr」（読み出しスタートアドレス）、「HLength」（水平方向データ長）、「VLength」（垂直方向データ長）、「Vjump」（垂直方向アドレスのジャンプ値）、「Wsadr」（書き込みステートアドレス）である。これらの情報は、ＰＥ−ＤＭＡＣ２５５から専用線２０を介して与えられる。
【０１２３】
なお、「VLength」（垂直方向データ長）が２以上の場合に、２次元矩形アクセスが行われる。「Vjump」は、一次元アクセスのときは「Don't care」である。なお、「Vjump」で示されるジャンプ値とは、転送すべき画像データの１つの行の最終アドレスから次の行の先頭アドレスまでの差分である。
【０１２４】
また、アクノリッジ信号を出力する際には、「Read ack=OFF」が１パルスだけ「Read ack=ON」に変更され、その後「Read ack=OFF」に戻される。すなわち、専用線２０に対して１パルスのハイレベルの信号が出力される。
【０１２５】
［ステップＳ４］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、変数「Length」に「HLength」（水平方向データ長）を代入する。
［ステップＳ５」ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「Length」がフレームメモリ１３アクセスの「DLength」（最大データ転送サイズ）以下か否かを判断する。なお、「DLength」（最大データ転送サイズ）は、バッファ２３１ａの記憶容量やシステムのデータ転送効率等を考慮して予め設定された値である。「Length」が「DLength」以下であれば、処理がステップＳ６に進められる。「Length」が「DLength」より大きければ、処理がステップＳ７に進められる。
【０１２６】
［ステップＳ６］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「data＿length」（データ長）に「Length」を代入し、「Length=0」とし、さらに「adr」（先頭アドレス）に「Rsadr」（読み出しスタートアドレス）を代入する。その後、処理がステップＳ８に進められる。
【０１２７】
［ステップＳ７］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「data＿length」（データ長）に「DLength」を代入し、「Length」から「DLength」を減算し、さらに「adr」（先頭アドレス）に「Rsadr」（読み出しスタートアドレス）を代入する。その後、処理がステップＳ８に進められる。
【０１２８】
［ステップＳ８］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「MLength」がバッファ２３１ａのオーバーフローを回避するための「Mth」（しきい値）より小さいか否かを判断する。「Mth」は、バッファ２３１ａのバッファオーバフローを回避するためのしきい値である。「Mth」の値は、バッファサイズにより予め決定される。
【０１２９】
「MLength」が「Mth」より小さければ、処理がステップＳ９に進められる。「MLength」が「Mth」以上であれば、「MLength」が「Mth」より小さくなるまで、ステップＳ８の処理が繰り返される（待ち状態（wait）となる）。なお、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサが「MLength」の値に依存して、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサと独立に処理を実行しており、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサの動作により「MLength」の値は減少する。
【０１３０】
［ステップＳ９］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、メモリ制御部２３１の第１のシーケンサに対して、フレームメモリ１３への「req」（アクセスリクエスト）、「adr」（先頭アドレス）、「data＿length」（データ長）を出力する。アクセスリクエストを受け取ったメモリ制御部２３１の第１のシーケンサは、req信号受付処理を行い、フレームメモリ１３アクセスを開始し、読み出したデータを全てバッファ２３１ａに格納する。そして、メモリ制御部２３１の第１のシーケンサは、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサに「ack」（アクノリッジ信号）を発行する。
【０１３１】
［ステップＳ１０］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、メモリ制御部２３１の第１のシーケンサからの「ack」を待ち、「ack」を受け取ると処理をステップＳ１１に進める。「ack」が無ければ、ステップＳ１０の処理を繰り返し、「ack」を待ち続ける。
【０１３２】
［ステップＳ１１］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、メモリ制御部２３１の第１のシーケンサから「ack」を受けると、「MLength」に「data＿length」を加算し、読み出しスタートアドレス「Rsadr」に「data＿length」を加算する。
【０１３３】
［ステップＳ１２］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「Length」が０か否かを判断する。「Length」が０であれば、処理がステップＳ１３に進められる。「Length」が０で無ければ、処理がステップＳ５に進められる。
【０１３４】
［ステップＳ１３］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、垂直方向データ長「VLength」から１を減算する。
［ステップＳ１４］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「VLength」が０か否かを判断する。「VLength」が０で無ければ、処理がステップＳ１５に進められる。「VLength」が０であれば、処理がステップＳ２に進められ、次のリード転送要求を待つ。
【０１３５】
［ステップＳ１５］ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「Rsadr」（読み出しスタートアドレス）に「Vjump」（垂直方向アドレスのジャンプ値）を加算する。その後、処理がステップＳ４に進められる。
【０１３６】
次に、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサの処理について説明する。
図１２は、ＭＥＭ−ＤＭＡＣの第２のシーケンサの処理を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。なお、後述する各ステップにおいて、「MLength」に書き込みアクセスする際には、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサとの間のアクセス競合を常にチェックする必要がある。
【０１３７】
［ステップＳ２１］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサの初期化が完了したか否かを判断する。初期化が完了した場合、処理がステップＳ２２に進められる。初期化が完了しなければ、ステップＳ２１の処理が繰り返され、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、第１のシーケンサが初期化されるのを待つ。
【０１３８】
［ステップＳ２２］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「MLength≠0」か否かを判断する。「MLength」が０以外であれば、処理がステップＳ２３に進められる。MLengthが０であれば、ステップＳ２２の処理が繰り返され、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「MLength」が更新されるのを待つ。なお、「MLength」は、メモリ制御部２３１の第１のシーケンサによってフレームメモリ１３へのアクセス処理が行われた際に、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサによるステップＳ１１の処理で更新される。
【０１３９】
［ステップＳ２３］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「MLength＜Ｍ」か否かを判断する。「MLength」が「Ｍ」（ＣＰＵバス２０１仕様の最大データ長）より小さければ、処理がステップＳ２４に進められる。「MLength」が「Ｍ」以上であれば、処理がステップＳ２６に進められる。
【０１４０】
［ステップＳ２４］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「Length＝０」かつ「VLength＝０」の条件が満たされているか否かを判断する。これらの条件が満たされていれば、処理がステップＳ２５に進められる。これらの条件が満たされていなければ、処理がステップＳ２３に進められる。なお、これらの条件が満たされている場合、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、ステップＳ１３を経て、ステップＳ２の状態に遷移していることを表している。
【０１４１】
［ステップＳ２５］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、ライト転送のデータサイズ「WLength」＝「MLength」とし、書き込みアドレス「Wadr」＝「Wsadr」とし、「MLength」＝０とし、さらに「Wsadr」に「MLength」を加算する。その後、処理がステップＳ２７に進められる。なお、ステップＳ２５を経由する場合、ＤＭＡ転送の完了を意味する。よって、「Wsadr」への加算はステップＳ２６の処理との違いを明確にするために記述した。
【０１４２】
［ステップＳ２６］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「WLength」（ライト転送のデータサイズ）＝「Ｍ」とし、「Wadr」（書き込みアドレス）＝「Wsadr」とし、「MLength」から「Ｍ」を減算し、さらに「Wsadr」に「Ｍ」を加算する。
【０１４３】
［ステップＳ２７］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、ＣＰＵバス２０１に対して「Write req」（ライト転送要求）を発行する。この「Write req」に応じて、バス制御回路２０２によって、ＣＰＵバス２０１の調停が行われる。
【０１４４】
［ステップＳ２８］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、バス制御回路２０２からの「Write ack」（アクノリッジ信号）が「ＯＮ」になったか否かを判断する。「Write ack」が「ＯＮ」であれば、処理がステップＳ２９に進められる。「Write ack」が「ＯＮ」で無ければ、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサはステップＳ２８の処理を繰り返し、ＯＮになるのを待つ。なお、「Write ack」は、バス調停によりメモリＩ／Ｆ２３０に対してＣＰＵバス２０１の占有が許可されたときに、バス制御回路２０２によってＯＮに設定される。
【０１４５】
［ステップＳ２９］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、メモリ制御部２３１の第２のシーケンサに対して、ＣＰＵバス２０１への転送の「start」（スタート信号）を出力する。すなわち、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「start」（スタート信号）の出力をＯＮにする。
【０１４６】
［ステップＳ３０］ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、メモリ制御部２３１の第２のシーケンサから入力されるend信号がＯＮになったか否かを判断する。end信号がＯＮになった場合、処理がステップＳ２２に進められる。end信号がＯＮになって無ければ、ステップＳ３０の処理が繰り返され、メモリ制御部２３１の第２のシーケンサは、end信号の入力を待つ。なお、end信号は、１パルス分のハイレベル信号である。
【０１４７】
次に、メモリ制御部２３１の第１のシーケンサの処理について説明する。
図１３は、メモリ制御部の第１のシーケンサの処理を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１４８】
［ステップＳ４１］メモリ制御部２３１の第１のシーケンサは、初期化処理を行う。初期化処理では、「ack」（アクノリッジ信号）がＯＦＦに設定される。
［ステップＳ４２］メモリ制御部２３１の第１のシーケンサは、フレームメモリ１３への「req」（アクセスリクエスト信号）がＯＮか否かを判断する。「req」がＯＮであれば、処理がステップＳ４３に進められる。「req」がＯＮでなければ、メモリ制御部２３１の第１のシーケンサは、ステップＳ４２の処理を繰り返し、ＯＮになるのを待つ。
【０１４９】
［ステップＳ４３］メモリ制御部２３１の第１のシーケンサは、ＭＥＭ−ＤＭＡＣ２３２から受け取った「adr」（先頭アドレス）および「data＿length」（データ長）に基づいて、フレームメモリ１３に対するリードアクセスを実行する。そして、メモリ制御部２３１の第１のシーケンサは、読み取ったデータを、バッファ２３１ａ内に格納する。
【０１５０】
［ステップＳ４４］メモリ制御部２３１の第１のシーケンサは、アクノリッジ信号「ack」を出力する。具体的には、メモリ制御部２３１の第１のシーケンサは、「ack」（アクノリッジ信号）を「ＯＦＦ」から「ＯＮ」に１パルス分変更後、「ＯＦＦ］に戻す。その後、処理がステップＳ４２に進められる。
【０１５１】
次に、メモリ制御部２３１の第２のシーケンサの処理について説明する。
図１４は、メモリ制御部の第２のシーケンサの処理を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１５２】
［ステップＳ５１］メモリ制御部２３１の第２のシーケンサは、初期化処理を行う。初期化処理では、「end」（end信号）がＯＦＦに設定される。
［ステップＳ５２］メモリ制御部２３１の第２のシーケンサは、ＣＰＵバス２０１へのデータ転送に関する「start」（スタート信号）がＯＮか否かを判断する。「start」がＯＮであれば、処理がステップＳ５３に進められる。「start」がＯＮでなければ、メモリ制御部２３１の第２のシーケンサは、ステップＳ５２の処理を繰り返し、ＯＮになるのを待つ。
【０１５３】
［ステップＳ５３］メモリ制御部２３１の第２のシーケンサは、ＭＥＭ−ＤＭＡＣ２３２から受け取った「WLength」（ライト転送のデータサイズ）に基づいて、バッファ２３１ａに格納されているデータを先に格納された順に読み出し、ＣＰＵバス２０１に「OutMdata」として出力する。
【０１５４】
［ステップＳ５４］メモリ制御部２３１の第２のシーケンサは、「end」（end信号）を出力する。具体的には、メモリ制御部２３１の第２のシーケンサは、「end」を「ＯＦＦ」から「ＯＮ」に１パルス分変更後、「ＯＦＦ］に戻す。その後、処理がステップＳ５２に進められる。
【０１５５】
図１１〜図１４に示す処理を、ＭＥＭ−ＤＭＡＣ２３２とメモリ制御部２３１とが実行することにより、図９〔Ｂ〕に示した転送時のデータ幅の半分のデータ長に分割されたデータを転送する場合や、図１０〔Ｂ〕に示した転送時のデータ幅の１．５倍のデータ長に分割されたデータを転送する場合のデータ転送を、効率的に行うことができる。
【０１５６】
図１５は、転送時のデータ幅の半分のデータ長に分割されたデータを転送する場合の動作を示すタイミングチャートである。このタイミングチャートは、図９〔Ｂ〕に示すデータ転送を表している。すなわち、リード転送要求が２次元矩形アクセスであり、水平方向データ長がＣＰＵバス２０１の仕様制約の最大データ転送サイズＭの１／２倍、垂直方向データ長は６である。更に、水平方向データ長はフレームメモリ１３へのアクセスの「DLength」（最大データ転送サイズ）より小さいものとする。
【０１５７】
時刻ｔ２１に、画像処理エンジン２５０のＰＥ−ＤＭＡＣ２５５からの「Read req」（リード転送要求）が、専用線２０を介して、メモリＩ／Ｆ２３０のＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサに伝わる。ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、バッファ２３１ａに格納されたデータ長を記憶する変数「MLength」が０で、かつ「Read req」がＯＮとなったことを認識し、ＤＭＡ転送に必要な情報（Radr, HLength=M/2, VLength=6, Vjump, Wsadr）を記憶する。そして、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、時刻ｔ２２にアクノリッジ信号「Read ack」をＰＥ−ＤＭＡＣ２５５に発行する。
【０１５８】
変数「Length」に水平方向データ長「HLength」を代入すると、「Length=M/2」となる。この「Length」はフレームメモリ１３アクセスの最大データ転送サイズ「DLength」以下である。そのため、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「data＿length」（データ長）に「Length=M/2」を代入し、「Length=0」とし、先頭アドレス「adr」に「Radr」（読み出しスタートアドレス）を代入する。さらに、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、バッファ２３１ａに格納されたデータ長を記憶する変数「MLength」が「Mth」（バッファ２３１ａのオーバーフローを回避するためのしきい値）より小さいことを確認する。そして、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、時刻ｔ２３に、メモリ制御部２３１の第１のシーケンサに対して、フレームメモリ１３への「req」（アクセスリクエスト）、「adr」（先頭アドレス）、「data＿length」（データ長）を出力する。
【０１５９】
なお、「MLength」が「Mth」より大きい場合は、小さくなるまで待つ。「MLength」の値は、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサが「MLength」の値に依存して独立して実行しており、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサにより「MLength」の値は減少する。
【０１６０】
メモリ制御部２３１の第１のシーケンサは、req信号受付処理を行い、フレームメモリ１３アクセスを開始し、読み出したデータを全てバッファ２３１ａに格納する。フレームメモリ１３はＤＲＡＭで構成されており、データ読み出し開始まで所定の時間を要するため、フレームメモリ１３からのデータ出力は時刻ｔ２４から開始される。フレームメモリ１３へのリードアクセスが時刻ｔ２５に終了すると、メモリ制御部２３１の第１のシーケンサは、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサに「ack」（アクノリッジ信号）を発行する。
【０１６１】
「ack」（アクノリッジ信号）を受けたＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「MLength」に「data＿length」（つまりＭ／２）を加算し、「Rsadr」（読み出しスタートアドレス）に「data＿length」を加算する。ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「Length」が０であることを確認後に、「VLength」（垂直方向データ長）から１を減算する。これにより、「VLength=5」となるが、「VLength」が０でないので、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサの処理は継続し、「Rsadr」に「Vjump」（垂直方向アドレスのジャンプ値）を加算して、フレームメモリ１３へのリードアクセスを繰り返す。
【０１６２】
ここで、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサはＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサと独立して実行されており、「Length=0」かつ「VLength=0」となるまで、フレームメモリ１３へのリードアクセスが実行される。
【０１６３】
時刻ｔ２６に、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサが「MLength≠0」を検出し、ＣＰＵバス２０１への「Write req」（ライト転送要求）処理を開始する。「MLength」の値チェックを行うと、「MLength」が「Ｍ」（ＣＰＵバス２０１の仕様における最大データ長）より小さいので、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサのフレームメモリ１３アクセス処理の完了チェックに処理が移行する。フレームメモリ１３アクセス処理の完了チェックは、変数「Length=0」かつ「VLength=0」で確認し、「WLength」（ライト転送のデータサイズ）＝「MLength」とし、書き込みアドレス「Wadr」を「Wsadr」とし、「MLength」を０、「Wsadr」に「MLength」を加算する。そして、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、時刻ｔ２７に、「Write req」（ライト転送要求）を発行し、ＣＰＵバス２０１のバス制御回路２０２からの「Write ack」（アクノリッジ信号）がＯＮになるのを待つ。
【０１６４】
時刻ｔ２８に、ＣＰＵバス２０１のバス制御回路２０２から「write＿ack」（アクノリッジ信号）を受ける。「write＿ack」（アクノリッジ信号）の受信は、ＣＰＵバス２０１の使用権利が獲得できたことを意味する。そこで、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、時刻ｔ２９に、メモリ制御部２３１の第２のシーケンサに対して「start」（転送スタート信号）を出力（信号をＯＮ）する。
【０１６５】
メモリ制御部２３１の第２のシーケンサは、「start」（転送スタート信号）がＯＮになったことを検出すると、「WLength」情報よりバッファ２３１ａに格納されているデータを、先に格納された順番に読み出し、時刻ｔ３０に、ＣＰＵバス２０１に「OutMdata」として出力する。出力完了後、時刻ｔ３１に、メモリ制御部２３１の第２のシーケンサは、「end」（終了信号）を発行する。
【０１６６】
ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは「end」（終了信号）がＯＮになることを検出し、処理が完了する。
時刻ｔ２１から時刻ｔ３１までの処理で、図９〔Ｂ〕に示す「ｄａｔａ＃１」と「ｄａｔａ＃２」とが、ＣＰＵバス２０１を介した１回のデータ転送で画像処理エンジン２５０に送られる。以降、時刻ｔ２１から時刻ｔ３１の間に行った処理を繰り返すことで、矩形領域内の全てのデータが転送される。
【０１６７】
図１５のタイミングチャートをみると、「Read req」からの転送レイテンシは長くなるが、ＣＰＵバスの占有時間は、データ転送のサイクルのみとなっていることがわかる。
図１６は、転送時のデータ幅の１．５倍のデータ長に分割されたデータを転送する場合の動作を示すタイミングチャートである。このタイミングチャートは、図１０〔Ｂ〕に示したデータ転送を表している。すなわち、リード転送要求が２次元矩形アクセスであり、水平方向データ長がＣＰＵバス２０１における仕様制約の最大データ転送サイズＭの３／２倍、垂直方向データ長は６である。更に、「DLength」（水平方向データ長はフレームメモリ１３アクセスの最大データ転送サイズ）より小さいものとする。
【０１６８】
時刻ｔ４１に、画像処理エンジン２５０のＰＥ−ＤＭＡＣ２５５からの「Read req」（リード転送要求）が、専用線２０を介して、メモリＩ／Ｆ２３０のＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサに伝わる。ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、バッファ２３１ａに格納されたデータ長を記憶する変数「MLength」が０で、かつ「Read req」がＯＮとなったことを認識し、ＤＭＡ転送に必要な情報（Radr, HLength=3M/2, VLength=6, Vjump, Wsadr）を記憶する。ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、時刻ｔ４２に「Read ack」（アクノリッジ信号）をＰＥ−ＤＭＡＣ２５５に発行する。
【０１６９】
変数Lengthに「HLength」（水平方向データ長）を代入すると、「Length=3M/2」となる。この「Length」がフレームメモリ１３アクセスの「DLength」（最大データ転送サイズ）以下である。そのため、ＭＥＭ−ＤＭＡＣの第１のシーケンサ２３２は、「data＿length」（データ長）に「Length=3M/2」を代入し、「Length=0」とし、先頭アドレス「adr」に「Radr」（読み出しスタートアドレス）を代入する。さらに、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、バッファ２３１ａに格納されたデータ長を記憶する変数「MLength」が「Mth」（バッファ２３１ａのオーバーフローを回避するためのしきい値）より小さいことを確認する。そして、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、時刻ｔ４３に、メモリ制御部２３１の第１のシーケンサに対して、「req」（フレームメモリ１３へのアクセスリクエスト）、「adr」（先頭アドレス）、「data＿length」（データ長）を出力する。
【０１７０】
なお、「MLength」が「Mth」より大きい場合は、小さくなるまで待つ。「MLength」の値は、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサが「MLength」の値に依存して独立して実行しており、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサの動作により「MLength」の値は減少する。
【０１７１】
メモリ制御部２３１の第１のシーケンサは、req信号受付処理を行い、フレームメモリ１３へのアクセスを開始し、読み出したデータ（data#1aとdata#1b）を全てバッファ２３１ａに格納する。なお、フレームメモリ１３からのデータ出力は、時刻ｔ４４から開始される。フレームメモリ１３へのリードアクセスが時刻ｔ４５に終了すると、メモリ制御部２３１の第１のシーケンサは、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサに「ack」（アクノリッジ信号）を発行する。
【０１７２】
ack信号を受けたＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは「MLength」に「data＿length」（つまり３Ｍ／２）を加算し、「Rsadr」（読み出しスタートアドレス）に「data＿length」を加算する。また、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサは、「Length」が０であることを確認後に、「VLength」（垂直方向データ長）から１を減算する。これにより、「VLength=５」となるが、「VLength」が０ではないので、ＭＥＭ−ＤＭＡＣ２３２の処理は継続し、「Rsadr」（読み出しスタートアドレス）に「Vjump」（垂直方向アドレスのジャンプ値）を加算して、フレームメモリ１３へのリードアクセスを繰り返す。
【０１７３】
ここで、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサはＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサと独立して実行されており、「Length=0」かつ「VLength=0」となるまで、フレームメモリ１３へのリードアクセスが実行される。
【０１７４】
時刻ｔ４６に、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサが「MLength≠0」を検出し、ＣＰＵバス２０１への「Write req」（ライト転送要求）処理を開始する。「MLength」の値チェックを行うと、初めは「MLength=3M/2」であり、ＣＰＵバス２０１における仕様の最大データ長「Ｍ」より大きい。すなわち、データ長「Ｍ」のデータ（ｄａｔａ＃１ａ）で「Write req」が発行できる条件が満たされている。そこで、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「WLength=M」（ライト転送のデータサイズ）とし、「Wadr」（書き込みアドレス）を「Wsadr」とし、「MLength」を「Ｍ］だけ減算し、「Wsadr」に「Ｍ」だけ加算する。そして、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「Write req」（ライト転送要求）を発行し、ＣＰＵバス２０１からの「Write ack」（アクノリッジ信号）がＯＮになるのを待つ。
【０１７５】
時刻ｔ４７に、ＣＰＵバス２０１のバス制御回路２０２から「write＿ack」（アクノリッジ信号）を受けると、ＣＰＵバス２０１の使用権利が獲得できたことを意味するので、ＭＥＭ−ＤＭＡＣ１３２の第２のシーケンサは、時刻ｔ４８に、ＣＰＵバス２０１への「start」（転送スタート信号）をＯＮにする。
【０１７６】
メモリ制御部２３１の第２のシーケンサは、「start」（転送スタート信号）がＯＮになったことを検出すると、「WLength」よりバッファ２３１ａに格納されているデータを、先に格納された順番に読み出し、時刻ｔ４９に、ＣＰＵバス２０１に「OutMdata」として出力する。出力完了後、時刻ｔ５０に、メモリ制御部２３１の第２のシーケンサは、「end」（終了信号）を発行する。
【０１７７】
ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「end」（終了信号）がＯＮになることを検出し、処理が完了する。
ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサが「ｄａｔａ＃２ａ」、「ｄａｔａ＃２ｂ」をフレームメモリ１３から読み出すと「MLenght=2M」となり、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、「Ｍ」（データ長）で「ｄａｔａ＃１ｂ」、「ｄａｔａ＃２ａ−１」のデータ転送処理を実行し、その結果「MLength=M」となる。再度ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサは、データ長「Ｍ」で「ｄａｔａ＃２ａ−２」、「ｄａｔａ＃２ｂ」のデータ転送処理を実行する。
【０１７８】
同様に、残りの『「ｄａｔａ＃３ａ」、「ｄａｔａ＃３ｂ」』〜『「ｄａｔａ＃６ａ」、「ｄａｔａ＃６ｂ」』のデータ転送も行われる。
これにより、第１の実施の形態で同じ転送を実施すると、ＣＰＵバス２０１への「Write req」（ライト転送要求）が、「M」（ＣＰＵバス２０１の仕様制約の最大データ転送サイズ）の制約でサイズ「Ｍ」、サイズ「Ｍ／２」の転送の組合せを６回行う必要があり、合計１２回となるところを、第２の実施の形態では９回となる。
【０１７９】
また、フレームメモリ１３へのアクセスに関しても、第１の実施の形態では合計１２回のメモリアクセスであったのを、合計６回のアクセスに低減している。これは、フレームメモリ１３がＤＲＡＭである場合、アクセス回数が減り、アクセスのバースト長が延びることにつながるため、ＤＲＡＭのデータアクセス効率の向上にもつながる。なお、１回のＤＲＡＭアクセスでのデータ長を制限して、バッファ２３１ａがオーバーフローしないようにする必要があるので、ＤＲＡＭのデータアクセス効率も考慮して、バッファ２３１ａの容量を決定する必要がある。
【０１８０】
上記の例以外でも、第２の実施の形態によるデータ転送を行うことで、転送効率を上げることができる。
例えば、２次元矩形アクセスであり、水平方向データ長が、ＣＰＵバス２０１の仕様制約の最大データ転送サイズ「Ｍ」の５／４倍で、垂直方向データ長を４としたデータ転送が発生した場合を想定する。
【０１８１】
図１７は、転送時のデータ幅の５／４倍のデータ長に分割されたデータを転送する場合の動作を示すタイミングチャートである。図１７では、矩形領域内の短冊状のデータを、それぞれ「ｄａｔａ＃１」、「ｄａｔａ＃２」、「ｄａｔａ＃３」、「ｄａｔａ＃４」としている。図１７に示すように、フレームメモリ１３に対するデータリードは４回行われており、ＣＰＵバス２０１を介したデータ転送は５回行われている。
【０１８２】
また、メモリ制御部２３１の第１のシーケンサとメモリ制御部２３１の第２のシーケンサとは、図１３、図１４を見れば明らかなように、バッファ２３１ａへのアクセスを除けば、全く独立に動作可能であることがわかる。よって、バッファ２３１ａをデュアルポートメモリとしたり、ダブルバッファ化することで、フレームメモリ１３へのアクセスとＤＭＡのライト転送をパイプライン処理させることが可能となる。なお、バッファ２３１ａをダブルバッファ化した場合、バッファ２３１ａにデータを書き込む際には、２つのメモリに対して、バス仕様の最大データ長毎に交互に書き込まれる。
【０１８３】
図１８は、パイプライン処理を行った場合のタイミングチャートである。図１８では、ＭＥＭ−ＤＭＡＣ１３２の第１のシーケンサを「ＭＥＭ−ＤＭＡＣ（シーケンサ＃１）」、ＭＥＭ−ＤＭＡＣ１３２の第２のシーケンサを「ＭＥＭ−ＤＭＡＣ（シーケンサ＃２）」、メモリ制御部２３１の第１のシーケンサを「メモリ制御部（シーケンサ＃１）」、メモリ制御部２３１の第２のシーケンサを「メモリ制御部（シーケンサ＃２）」と表している。
【０１８４】
このように、パイプライン処理を行うことで、データ転送に要する時間を短縮することができる。また、ＰＥ−ＤＭＡＣ２５５からのリクエストも含めて、パイプライン化することもできる。
【０１８５】
図１９は、ＰＥ−ＤＭＡＣからのリクエストをパイプライン化した場合のタイミングチャートである。図１９の例では、ＰＥ−ＤＭＡＣ２５５からの先のリード転送要求に応じたＤＭＡによるライト転送が終了する前に、次のリード転送要求を受け付け、フレームメモリ１３に対するリードアクセスを行っている。
【０１８６】
以下、図１９の様な処理を実行するには、ＭＥＭ−ＤＭＡＣ２３２の処理に関して、図１１に示した内容と若干の相違点がある。以下、図１１に示す処理との違いを説明する。
図１１のＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサの処理では、「Read req」をチェックする際に、「MLength＝0」のチェック（図１１のステップＳ２）が含まれている。そのため、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサの転送が完了するまで、ＰＥ−ＤＭＡＣ２５５からの次のリード転送要求に対する「Read ack」を返信することができない。「MLength＝0」のチェックの目的は、１度目のリクエストのデータと次のリクエストのデータがバッファ２３１ａ内で混じらないようにするためである。
【０１８７】
そこで、図１９に示すようにＰＥ−ＤＭＡＣ２５５からのリクエストをパイプライン化する場合、「MLength＝0」のチェック以外に、リクエストのデータがバッファ２３１ａ内で混じらないようにするための処理が追加される。例えば、データの最後部を示すポインタを設けることでデータの切れ目を識別し、ＭＥＭ−ＤＭＡＣ２３２の第２のシーケンサでポインタの位置をチェックする。これにより、ＭＥＭ−ＤＭＡＣ２３２の第１のシーケンサの処理における「MLength＝0」のチェックを外すことが可能となり、ＰＥ−ＤＭＡＣ２５５からのリクエストも含めたパイプライン化が可能となる。
【０１８８】
また、バッファ２３１ａを二重化（例えば、第１のバッファと第２のバッファで構成する）すれば、「MLength」も二重化（MLength#1,MLength#2）される。そこで、１度目のリクエストで第１のバッファ、「MLength#1」を利用していたとすれば、２度目のリクエストでは、第２のバッファ、「MLength#2」を利用するようにする。その後も第１のバッファと第２のバッファとを交互に利用する。これにより、ＰＥ−ＤＭＡＣ２５５からのリクエストも含めたパイプライン化が可能になる。
【０１８９】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１９０】
（付記１）  バスを介して接続されたデータ処理部とデータ管理部との間でＤＭＡ転送を行うデータ処理装置において、
前記データ処理部と前記データ記憶部とを接続し、ＤＭＡ転送要求の通知に利用される専用線と、
前記データ処理部内に設けられ、前記データ処理部のプロセッサから前記データ管理部が管理するデータのリード要求が出力されると、前記ＤＭＡ転送要求を前記専用線を介して出力する受信側ＤＭＡ制御部と、
前記データ管理部内に設けられ、前記受信側ＤＭＡ制御部から出力された前記ＤＭＡ転送要求を前記専用線を介して受け取り、前記ＤＭＡ転送要求で示されたデータのメモリリード要求を出力すると共に、前記データがバッファに格納されると前記バスの使用権利を獲得し、ＤＭＡライト要求を出力する送信側ＤＭＡ制御部と、
前記データ管理部内に設けられ、前記送信側ＤＭＡ制御部から前記メモリリード要求が出力されると、前記データ管理部で管理しているメモリからデータを読み出し、前記バッファに格納すると共に、前記データを前記送信側ＤＭＡ制御部から前記ＤＭＡライト要求が出力されると、前記バッファに格納された前記データを、前記バスを介して前記データ処理部内の指定されたデータ記憶領域に対してＤＭＡライト転送を行うメモリ制御部と、
を有することを特徴とするデータ処理装置。
【０１９１】
（付記２）  前記メモリ制御部は、前記メモリリード要求で指定されたデータが、前記メモリ内の不連続のアドレスに記憶されている場合、前記メモリから読み出したデータを前記バッファの連続する記憶領域に格納し、前記バッファに格納された連続のデータを、前記バスで転送可能なデータ長に分割してＤＭＡによりライト転送することを特徴とする付記１記載のデータ処理装置。
【０１９２】
（付記３）  前記メモリ制御部は、前記メモリに格納された画像データ中の矩形領域を指定した前記メモリリード要求を受け取ると、前記矩形領域をアドレスが連続する複数の長方形領域に分割し、前記長方形領域毎にデータを読み出して前記バッファ内の連続の記憶領域に格納し、前記バッファに格納された連続のデータを、前記バスで転送可能なデータ長に分割してＤＭＡライト転送を行うことを特徴とする付記１記載のデータ処理装置。
【０１９３】
（付記４）  前記送信側ＤＭＡ制御部は、
前記受信側ＤＭＡ制御部から出力された前記ＤＭＡ転送要求を前記専用線を介して受け取り、前記ＤＭＡ転送要求で示されたデータのメモリリード要求を出力するリード制御回路と、
前記データが前記バッファに格納されると前記バスの使用権利を獲得し、ＤＭＡライト要求を出力するライト転送制御回路と、
を有し、前記リード制御回路と前記ライト転送制御回路とが互いに独立して動作することを特徴とする付記１記載のデータ処理装置。
【０１９４】
（付記５）  前記送信側ＤＭＡ制御部は、前記リード制御回路による前記ＤＭＡ転送要求で示されたデータのメモリリード要求の出力と、前記ライト転送制御回路によるＤＭＡライト要求の出力とをパイプラインで処理することを特徴とする付記４記載のデータ処理装置。
【０１９５】
（付記６）  前記メモリ制御部は、
前記送信側ＤＭＡ制御部から前記メモリリード要求が出力されると、前記データ管理部で管理しているメモリからデータを読み出し、前記バッファに格納するデータリード回路と、
前記データを前記送信側ＤＭＡ制御部から前記ＤＭＡライト要求が出力されると、前記バッファに格納された前記データを、前記バスを介して前記データ処理部内の指定されたデータ記憶領域にＤＭＡライト転送を行うＤＭＡ転送回路と、を有し、
前記データリード回路と前記ＤＭＡ転送回路とが互いに独立して動作することを特徴とする付記１記載のデータ処理装置。
【０１９６】
（付記７）  前記メモリ制御部は、前記データリード回路による前記バッファへのデータの書き込みと、前記ＤＭＡ転送回路による前記バッファに格納されたデータのＤＭＡライト転送とをパイプラインで処理することを特徴とする付記６記載のデータ処理装置。
【０１９７】
（付記８）  バスを介して接続されたデータ処理部とデータ管理部との間でＤＭＡ転送を行うためのＤＭＡ転送方法において、
前記データ処理部のプロセッサから前記データ管理部が管理するデータのリード要求が出力されると、前記データ処理部と前記データ管理部とを接続する専用線を介して、前記ＤＭＡ転送要求を前記データ処理部から前記データ管理部へ出力し、
前記データ管理部において、前記ＤＭＡ転送要求に応じて、前記ＤＭＡ転送要求で示されたデータを前記データ管理部で管理しているメモリから読み出してバッファに格納し、
前記データがバッファに格納されると前記バスの使用権利を獲得し、
前記バッファに格納された前記データを、前記バスを介して前記データ処理部内の指定されたデータ記憶領域に対してＤＭＡライト転送を行う、
ことを特徴とするデータ処理方法。
【図面の簡単な説明】
【０１９８】
【図１】本実施の形態の概略を示す図である。
【図２】第１の実施の形態ＬＳＩの構成例を示す図である。
【図３】メモリ部とデータ処理部との内部構成を示すブロック図である。
【図４】データ処理部からのリード要求の処理手順を示す図である。
【図５】第１の実施の形態における共有メモリからのリード処理手順を示すタイミングチャートである。
【図６】データの分割転送が行われる場合のタイミングチャートである。
【図７】第２の実施の形態の画像処理用ＬＳＩの構成例を示す図である。
【図８】メモリＩ／Ｆと画像処理エンジンとの内部構成を示すブロック図である。
【図９】転送時のデータ幅の半分のデータ長に分割されたデータを転送する場合の例を示す図である。
【図１０】転送時のデータ幅の１．５倍のデータ長に分割されたデータを転送する場合の例を示す図である。
【図１１】ＭＥＭ−ＤＭＡＣの第１のシーケンサの処理を示すフローチャートである。
【図１２】ＭＥＭ−ＤＭＡＣの第２のシーケンサの処理を示すフローチャートである。
【図１３】メモリ制御部の第１のシーケンサの処理を示すフローチャートである。
【図１４】メモリ制御部の第２のシーケンサの処理を示すフローチャートである。
【図１５】転送時のデータ幅の半分のデータ長に分割されたデータを転送する場合の動作を示すタイミングチャートである。
【図１６】転送時のデータ幅の１．５倍のデータ長に分割されたデータを転送する場合の動作を示すタイミングチャートである。
【図１７】転送時のデータ幅の５／４倍のデータ長に分割されたデータを転送する場合の動作を示すタイミングチャートである。
【図１８】パイプライン処理を行った場合のタイミングチャートである。
【図１９】ＰＥ−ＤＭＡＣからのリクエストをパイプライン化した場合のタイミングチャートである。
【図２０】従来の画像処理システム構成例を示す図である。
【図２１】従来のシステムにおけるリードアクセスのタイミングチャートである。
【符号の説明】
【０１９９】
１  バス
２  データ処理部
２ａ  プロセッサ
２ｂ  受信側ＤＭＡ制御部
３  データ管理部
３ａ  送信側ＤＭＡ制御部
３ｂ  メモリ
３ｃ  メモリ制御部
３ｃａ  バッファ
【図１】
2007183692.tif 000003
【図２】
2007183692.tif 000004
【図３】
2007183692.tif 000005
【図４】
2007183692.tif 000006
【図５】
2007183692.tif 000007
【図６】
2007183692.tif 000008
【図７】
2007183692.tif 000009
【図８】
2007183692.tif 000010
【図９】
2007183692.tif 000011
【図１０】
2007183692.tif 000012
【図１１】
2007183692.tif 000013
【図１２】
2007183692.tif 000014
【図１３】
2007183692.tif 000015
【図１４】
2007183692.tif 000016
【図１５】
2007183692.tif 000017
【図１６】
2007183692.tif 000018
【図１７】
2007183692.tif 000019
【図１８】
2007183692.tif 000020
【図１９】
2007183692.tif 000021
【図２０】
2007183692.tif 000022
【図２１】
2007183692.tif 000023