説明

データ処理装置及びデータ処理方法

【課題】本発明は、画像データ等のデータをDMAコントローラを連動させてデータ転送して処理するデータ処理装置及びデータ処理方法に関する。
【解決手段】データ処理装置1は、半導体デバイス10と半導体デバイス20に分散して存在する複数のDMAC11a〜11n、21a〜21mのうち、入力DMAC11aの書き込んだメモリ3上のデータを読み取る編集DMAC21aが、該メモリ3上のディスクリプタの内容を読み込んで入力DMAC11aの動作の進行状況を把握して、該連動によるデータ転送を行う。したがって、膨大な端子を増設することなく、複数の半導体デバイス10、20に分かれて存在するDMAC11a〜11n、21a〜21m同士を、安価にかつ簡単な構成で複数のDMAC11a〜11n、21a〜21mを連動させてデータ転送することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置及びデータ処理方法に関し、詳細には、画像データ等のデータをDMAコントローラを連動させてデータ転送して処理するデータ処理装置及びデータ処理方法に関する。
【背景技術】
【0002】
DMA(Direct Memory Access:ダイレクトメモリアクセス)は、DMAC(Direct Memory Access Controller :DMAコントローラ)によって、メモリ上のデータを高速に転送する技術であり、一般的に、開始メモリアドレスと転送量を指定して、CPUが介在することなく、データ転送を行うが、メモリ上にデータが点在する場合には、ディスクリプタ方式を用いて、メモリ上に点在するデータを接続して連続的に転送を行う。
【0003】
また、複数のDMACの処理ライン数情報を比較することで、DMACを連動動作させて、省メモリ化を図った技術が提案されている。
【0004】
すなわち、この従来技術は、例えば、図12に示すように、メモリ制御部100に2つのDMAC101、102及び画像入出力DMAC103が接続されているとともに、図示しないが、メモリ制御部100に、メモリが接続されている。そして、メモリ制御部100がライン数比較部104を備えて、このライン数比較部104が、DMAC102、103の処理ライン数を比較することで、DMAC102とDMAC103の連動動作を可能としている。
【0005】
【特許文献1】特許第3797833号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記従来技術にあっては、複数のDMACの処理ライン数情報を比較することで、DMACを連動動作させているため、複数のDMACが、1つの半導体デバイス内部に存在する場合には、半導体デバイス内でDMAC同士が処理ライン数を比較することで連動動作が可能であるが、複数の半導体デバイスに存在するDMACを連動させる場合には、処理ライン数信号が膨大な数であり、半導体デバイスの端子数が増えて、コストが高くなるという問題があった。
【0007】
例えば、図13に示すように、メモリ制御部110に2つの半導体デバイス120と半導体デバイス130が接続され、さらに、メモリ111が接続されており、各半導体デバイス120、130が、複数のDMAC121〜123、131〜133、アービタ124、134を備えている場合に、半導体デバイス120に搭載されているDMAC121と半導体デバイス130に搭載されているDMAC131とを連動させてデータ転送を行おうとすると、半導体デバイス120と半導体デバイス130のそれぞれにライン比較部(Line Cmp)125、135を設けるとともに、その必要な処理ライン数の端子を設けて接続する必要がある。
【0008】
特に、今日、画像形成装置や複合装置等のおいては、多数の機能を有しており、機能の増大に伴ってDMACの数も増大してきており、これらの多くのDMACを1つの半導体デバイスに実装することが困難となってきている。また、コストの観点からも機能及び規模の非常に大きな半導体デバイスを1つ作成するよりも、機能を適切に分割して、複数の半導体デバイスを作成して、システムによっては、該半導体デバイスを1つだけ利用してシステム構成を行い、他のシステムでは、半導体デバイスを2つ使用してシステム構成するというアーキテクチャの方が、コスト的に有利なことが多い。このように、複数の半導体デバイスに分かれたDMAC同士を連動させた機能を実行する場合、従来技術では、端子数が増加して、コストが高くなるという問題があった。
【0009】
そこで、本発明は、複数の半導体デバイスに存在するDMAC同士を安価にかつ簡単な構成で連動させてデータ処理するデータ処理装置及びデータ処理方法を提供することを目的としている。
【課題を解決するための手段】
【0010】
請求項1記載の発明のデータ処理装置は、複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理装置であって、前記連動相手DMAコントローラは、前記メモリ上のディスクリプタの内容を読み込んで、前記連動元DMAコントローラの動作の進行状況を把握し、該連動によるデータ転送を行うことにより、上記目的を達成している。
【0011】
請求項1の場合、例えば、請求項2に記載するように、前記連動相手DMAコントローラは、自己のディスクリプタに、一時停止コマンドがセットされると、再開指示があるまでデータ転送を一次停止させてもよい。
【0012】
請求項3記載の発明のデータ処理装置は、複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理装置であって、前記連動元DMAコントローラ用の前記メモリ上のディスクリプタに、前記連動を指示する連動指示コマンド及び転送終了を示す転送終了コマンドを書き込むコマンド領域を有し、前記連動相手DMAコントローラは、該連動元DMAコントローラ用のディスクリプタの該連動指示コマンド及び該転送終了コマンドを読み込んで、該連動元DMAコントローラの動作の進行状況を把握して、該連動によるデータ転送を行うことにより、上記目的を達成している。
【0013】
請求項3の場合、例えば、請求項4に記載するように、前記連動相手DMAコントローラは、前記連動元DMAコントローラ用のディスクリプタに前記連動指示コマンドが設定されていると、該ディスクリプタに転送終了コマンドがセットされるまで、該連動によるデータ転送動作を一時停止してもよい。
【0014】
また、請求項4の場合、例えば、請求項5に記載するように、前記連動相手DMAコントローラは、所定のタイミング毎に、前記連動元DMAコントローラ用のディスクリプタを読み込んで、前記転送終了コマンドがセットされているか確認してもよい。
【0015】
さらに、請求項5の場合、例えば、請求項6に記載するように、前記連動相手DMAコントローラは、前記転送終了コマンドのセットの有無の確認を任意に設定されたタイミング毎に実行してもよい。
【0016】
また、請求項3から請求項6の場合、例えば、請求項7に記載するように、前記連動元DMAコントローラは、前記自己のディスクリプタに前記連動指示コマンドが設定されていると、該ディスクリプタに記載されている転送量のデータ転送が終了すると、該ディスクリプタに転送終了コマンドをセットしてもよい。
【0017】
さらに、請求項4から請求項7の場合、例えば、請求項8に記載するように、前記連動相手DMAコントローラは、前記連動元DMAコントローラ用のディスクリプタに前記転送終了コマンドがセットされると、自動的にデータ転送を開始してもよい。
【0018】
また、請求項4から請求項8の場合、例えば、請求項9に記載するように、前記連動相手DMAコントローラは、前記連動によるバンドデータのデータ転送が終了すると、データ転送を一時停止してもよい。
【0019】
請求項10記載の発明のデータ処理方法は、複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理方法であって、前記連動相手DMAコントローラが、前記メモリ上のディスクリプタの内容を読み込んで、前記連動元DMAコントローラの動作の進行状況を把握し、該連動によるデータ転送を行うことにより、上記目的を達成している。
【0020】
請求項11記載の発明のデータ処理方法は、複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理方法であって、前記連動元DMAコントローラ用の前記メモリ上のディスクリプタに、前記連動を指示する連動指示コマンド及び転送終了を示す転送終了コマンドを書き込むコマンド領域を有し、前記連動相手DMAコントローラが、該連動元DMAコントローラ用のディスクリプタの該連動指示コマンド及び該転送終了コマンドを読み込んで、該連動元DMAコントローラの動作の進行状況を把握して、該連動によるデータ転送を行うことにより、上記目的を達成している。
【発明の効果】
【0021】
本発明によれば、複数の半導体集積回路に分散して存在する複数のDMAコントローラのうち、連動元DMAコントローラの書き込んだメモリ上のデータを読み取る連動相手DMAコントローラが、該メモリ上のディスクリプタの内容を読み込んで連動元DMAコントローラの動作の進行状況を把握して、該連動によるデータ転送を行っているので、膨大な端子を増設することなく、複数の半導体デバイスに分かれて存在するDMAコントローラ同士を、安価にかつ簡単な構成で連動させてデータ転送することができる。
【0022】
また、本発明によれば、複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行う場合に、メモリ上の連動元DMAコントローラ用のディスクリプタに、連動を指示する連動指示コマンド及び転送終了を示す転送終了コマンドを書き込むコマンド領域を有し、連動相手DMAコントローラが、該連動元DMAコントローラ用のディスクリプタの該連動指示コマンド及び該転送終了コマンドを読み込んで、該連動元DMAコントローラの動作の進行状況を把握して、該連動によるデータ転送を行っているので、膨大な端子を増設することなく、かつ、ソフト制御の煩雑さを削減しつつ、複数の半導体デバイスに分かれて存在するDMAコントローラ同士を、安価にかつ簡単な構成で連動させてデータ転送することができ、より一層安価にかつ高速に複数のDMAコントローラを連動させてデータ転送することができる。
【発明を実施するための最良の形態】
【0023】
以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの態様に限られるものではない。
【実施例1】
【0024】
図1〜図5は、本発明のデータ処理装置及びデータ処理方法の第1実施例を示す図であり、図1は、本発明のデータ処理装置及びデータ処理方法の第1実施例を適用したデータ処理装置1の要部ブロック構成図である。
【0025】
図1において、データ処理装置1は、画像データ(データ)に各種画像処理を施す複合装置、プリンタ等であり、CPU/メモリ制御部2、メモリ3及び複数(図1では、2つ)の半導体デバイス(半導体集積回路)10、20等を備えている。
【0026】
半導体デバイス10は、少なくとも複数のDMAC11a〜11nとアービタ12を備えており、半導体デバイス20は、少なくとも複数のDMAC21a〜11mとアービタ22を備え、半導体デバイス10及び半導体デバイス20は、図3に示すように、コマンドインターフェイス13、23を備えている。
【0027】
CPU/メモリ制御部2は、メモリ3上のディスクリプタ領域に、必要なディスクリプタのコマンドを書き込み、半導体デバイス10、20のDMAC11a〜11n、DMAC21a〜21mが、メモリ3上のディスクリプタを読み取ってCPU/メモリ制御部2のソフト制御によることなくデータ転送を行う。
【0028】
メモリ3のディスクリプタは、図2に示すように、DMAC11a〜11n、DMAC21a〜21mのアクセスするメモリ3上のスタートアドレスの設定されるスタートアドレス領域、次のディスクリプタの記載されているポインタのセットされる次ディスクリプタポインタ(ネクストディスクリプタポインタ)領域、データ転送量の設定される転送データ量領域及びその他のコマンドの設定される各種コマンド領域があり、本実施例のデータ処理装置1では、後述するように、連動させるDMAC11a〜11nとDMAC21a〜21m用の各種コマンド領域に、連動を制御するコマンドであるCHAINビットとPAUSEビットを設定して、異なる半導体デバイス10、20の任意のDMAC11a〜11nとDMAC21a〜21mを連動させる。PAUSEビットは、一時停止を指示するコマンドであり、CHAINビットは、バンド転送が終了すると割り込みの発生を指示するコマンドである。
【0029】
アービタ12は、DMAC11a〜11nからメモリ3へのアクセスを調停するユニットであり、アービタ22は、DMAC21a〜21mからメモリ3へのアクセスを調停するユニットである。
【0030】
半導体デバイス10のDMAC11a〜11nと半導体デバイス20のDMAC21a〜21mは、他のDMAC11a〜11n、21a〜21mと連動してメモリ3への読み出しと書き込みを行って、半導体デバイス10、20によって、画像データに対して各種画像処理を行う。そして、図1では、半導体デバイス10のDMAC11aが、画像データの入力を行う入力DMACとして動作し、半導体デバイス20のDMAC21aが、画像データの編集に用いられる編集DMACとして動作し、また、半導体20のDMAC22mが、画像データの外部への出力に用いられる出力DMACとして動作する。
【0031】
上記DMAC11a〜11n、DMAC21a〜21mは、図3に示すように構成されており、データ処理部30、コマンド制御部31、メモリアクセス部32及びディスクリプタ制御部33を備えている。
【0032】
コマンド制御部31は、コマンドインターフェイス13、23を介してCPU/メモリ制御部2から動作指示上がると、該動作指示をディスクリプタ制御部33に渡し、ディスクリプタ制御部33は、コマンド制御部31からの動作指示を受け取ると、アービタ12、22を介してメモリ3のディスクリプタを読み取る読取動作を開始してメモリアクセス部32に読取結果を渡す。メモリアクセス部32は、ディスクリプタ制御部33のディスクリプタの読取結果に基づいてメモリアドレスを生成しながらメモリ3との間でデータ転送を行う。コマンド制御部31は、CPU/メモリ制御部2等からコマンドを受け取ってディスクリプタ制御部33へ指示を行ったり、メモリアクセス部32からのステータスを反映させる。データ処理部30は、データの処理を行う。
【0033】
次に、本実施例の作用を説明する。本実施例のデータ処理装置1は、異なる半導体デバイス10と半導体デバイス20のDMAC11a〜11nとDMAC21a〜21mをディスクリプタを利用して連動させてデータ処理を行う。
【0034】
すなわち、データ処理装置1は、いま、図1に破線矢印で示すように、外部からの画像データを、半導体デバイス10の入力DMAC11aと半導体デバイス20の編集DMAC21aを連動させて、例えば、図1に「あ」の画像について示すような画像処理を施して、メモリ3に格納する場合について説明する。この場合、CPU/メモリ制御部2は、図2(a)に示したように、メモリ3の入力DMAC11aのディスクリプタの各種コマンド領域には、バンド転送が終了すると割り込みの発生を指示するコマンドであるCHAINビットをセットし、編集DMAC21aのディスクリプタの各種コマンド領域には、一時停止を指示するコマンドであるPAUSEビットをセットする。
【0035】
そして、データ処理装置1は、図4に示すように、コマンド制御部31が、DMA動作コマンドをコマンドインターフェイス13、23を介してCPU/メモリ制御部2から受け取ると、ディスクリプタ制御部33に、「A:起動指示」(図3参照)を出力する(ステップS101)。ディスクリプタ制御部33は、「A:起動指示」を受け取ると、メモリ3へディスクリプタ情報を読みに行ってディスクリプタを取得すると(ステップS102)、メモリアクセス部32に、「B:バンド転送開始指示」(図3参照)を出す。この「B:バンド転送開始指示」には、転送開始アドレス、1次元転送であるのか、2次元転送であるのかの転送種類、1次元転送の場合には、転送サイズ、2次元転送の場合には、転送幅と転送ライン数が含まれている。メモリアクセス部32は、「B:バンド転送開始指示」を受信すると、該「B:バンド転送開始指示」に基づいたデータ転送を行い、転送が終了すると、ディスクリプタ制御部33及びコマンド制御部31に、「C:バンド転送終了通知」(図3参照)を出力する(ステップS103)。
【0036】
ディスクリプタ制御部33は、「C:バンド転送終了通知」を受信すると、最終バンドの転送であったか否かを判断し(ステップS104)、最終バンドの転送でなかった場合には、一時停止を行うPAUSE動作であったかを判断、すなわち、編集DMAC21aのディスクリプタの各種コマンド欄にPAUSEビットがセットされているかによってチェックする(ステップS105)。ステップS105で、PAUSE動作でないときには、ディスクリプタ制御部33は、ステップS102に戻って、次のディスクリプタの取得から上記同様に処理する(ステップS102〜S105)。
【0037】
ステップS105で、PAUSE動作であった場合には、ディスクリプタ制御部33は、再開を示すCONTINUE指示がコマンド制御部31からくるのを待ち(ステップS106)、CONTINUE指示がくると、ステップS102に戻って、次のディスクリプタの取得から上記同様に処理する(ステップS102〜S106)。
【0038】
ステップS104で、最終バンドの転送であった場合には、ディスクリプタ制御部33は、DMA動作を終了して処理を終了する(ステップS107)。
【0039】
上記メモリアクセス部32からコマンド制御部31へ「C:バンド転送終了通知」を出力するのは、図5に示すように、バンド転送が完了したことをソフトウェアへ通知するためであり、ソフトウェアは、コマンド制御部31に実装されたレジスタを読んでバンド転送の完了を知ることができる。また、図5に示すように、コマンド制御部31から割り込みを出力することによってソフトウェアに通知することもできる。
【0040】
すなわち、上記入力DMAC11aと編集DMAC21aを連動させる場合のタイミングチャート及びソフトウェアとのインターフェースは、図5のように示され、入力DMAC11aは、メモリ3に対して、ライト動作のみを行うので、図2(a)に示したように、ライトDMACに関するディスクリプタが用意され、ソフトウェアは、ディスクリプタを用意すると、入力DMAC11aに対して起動をかける。入力DMAC11aは、Aというバンドの転送が完了すると、割込みをソフトウェアに発行し、ソフトウェアは、割込みを検知すると、編集DMAC21aを起動する。この場合、編集DMAC21aのディスクリプタは、図2に示したように、リード用(図2(b))とライト用(図2(c))の2種類を用意する必要がある。
【0041】
そして、入力DMAC11aの転送速度は、入力元のデータ転送速度に依存するため、内部でのみ処理を行う編集器DMAC21aよりは速度が低い。
【0042】
そこで、編集DMAC21aの動作を適切に制御しないと、編集DMAC21aが入力DMAC11aの処理を追い越してしまうおそれがあるので、この問題を回避するために、編集DMAC21aのディスクリプタにPAUSEビットを設定する。編集DMAC21aは、このPAUSEビットを利用して、バンド転送が終了すると、データ転送を一時停止させて、後から起動をかけた編集DMAC21aが入力DMAC11aを追い越すことを回避し、ソフトウェアは、2バンド目以降も、同様に、割込みを検知すると、編集DMAC21aを起動する動作を繰り返す。
【0043】
このように、本実施例のデータ処理装置1は、半導体デバイス10と半導体デバイス20に分散して存在する複数のDMAC11a〜11n、21a〜21mのうち、連動元DMACである入力DMAC11aの書き込んだメモリ3上のデータを読み取る連動相手DMACである編集DMAC21aが、該メモリ3上のディスクリプタの内容を読み込んで入力DMAC11aの動作の進行状況を把握して、該連動によるデータ転送を行っている。
【0044】
したがって、膨大な端子を増設することなく、複数の半導体デバイス10、20に分かれて存在するDMAC11a〜11n、21a〜21m同士を、安価にかつ簡単な構成で複数のDMAC11a〜11n、21a〜21mを連動させてデータ転送することができる。
【0045】
また、本実施例のデータ処理装置1は、編集DMAC21aが、自己のディスクリプタに、一時停止コマンドがセットされると、再開指示があるまでデータ転送を一次停止させている。
【0046】
したがって、編集DMAC21aが入力DMAC11aによるデータ転送を追い越すことを適切に防止することができ、連動による適切なデータ転送を行うことができる。
【実施例2】
【0047】
図6〜図11は、本発明のデータ処理装置及びデータ処理方法の第2実施例を示す図であり、図6は、本発明のデータ処理装置及びデータ処理方法の第2実施例を適用したデータ処理装置のDMACの要部ブロック構成図である。
【0048】
なお、本実施例は、上記第1実施例と同様のデータ処理装置1に適用したものであり、本実施例の説明においては、必要に応じて、第1実施例で用いた符号をそのまま用いて説明する。
【0049】
図6において、DMAC11a〜11n、21a〜21mは、第1実施例の場合と同様に、データ処理部30、コマンド制御部31、メモリアクセス部32、ディスクリプタ制御部33を備えているとともに、バスセレクタ50を備えている。
【0050】
ディスクリプタ制御部33は、アービタ12を介してメモリ3のディスクリプタへ情報を書く(送信する)ためのバスを備えていてこの書込用のバスがバスセレクタ50に接続されており、このバスセレクタ50には、メモリアクセス部32のバスも接続されている。バスセレクタ50は、ディスクリプタ制御部33からのセレクト条件、セレクトタイミングを決定する「D:ライトバック指示」によってディスクリプタ制御部33からのバスとメモリアクセスバス部42からのバスの一方を選択してアービタ12に接続する。
【0051】
本実施例のDMAC11a〜11n、21a〜21mは、メモリアクセス部32からディスクリプタ制御部33に「E:転送済みデータ数」が出力され、この転送済データ数は、データ処理部30でデータを可変長圧縮する場合などに、バンド単位で符号数がいくつになったかをディスクリプタへ書く場合に使用され、可変長圧縮しない場合は、この転送済データ集の情報は利用しない。また、本実施例のDMAC11a〜11n、21a〜21mは、後述するディスクリプタポーリング間隔を、コマンド制御部31からディスクリプタ制御部33に出力する「F:ディスクリプタ監視間隔」で設定し、このディスクリプタポーリング間隔は、任意の間隔が設定可能である。
【0052】
そして、本実施例のデータ処理装置1では、メモリ3のディスクリプタには、連動するDMAC11a〜11n、21a〜21m、例えば、半導体デバイス10の入力DMAC11aと半導体デバイス20の編集DMAC21aを連動させる場合、図7(a)に示すように、入力DMAC11aのディスクリプタである入力用ディスクリプタを、編集DMAC21aの編集用リードディスクリプタとしても用いて、入力DMAC11aと編集DMAC21aで共用させ、編集DMAC21aの編集用ライトディスクリプタ(図7(b)参照)は、別に設ける。そして、共用ディスクリプタの各種コマンドに、図7(a)にしめすように、一時停止を指示するコマンドであるPAUSEビット、バンド転送が終了すると割り込みの発生を指示するコマンドであるCHAINビットを設けるとともに、連動動作を指示するSYNCビット(連動指示コマンド)及びディスクリプタに情報が書き戻されたことを示すWBビット(転送終了コマンド)を設ける。
【0053】
次に、本実施例の作用を説明する。本実施例のデータ処理装置1は、異なる半導体デバイス10と半導体デバイス20のDMAC11a〜11nとDMAC21a〜21mをディスクリプタを利用するだけでなく、同じディスクリプタを共用して連動させてデータ処理を行う。
【0054】
すなわち、データ処理装置1は、いま、図1に破線矢印で示したように、外部からの画像データを、半導体デバイス10の入力DMAC(連動元DMAC)11aと半導体デバイス20の編集DMAC(連動相手DMAC)21aを連動させて、例えば、図1に「あ」の画像について示したような画像処理を施して、メモリ3に格納する場合について説明する。この場合、CPU/メモリ制御部2は、図7(a)に示したように、メモリ3の入力DMAC11aのディスクリプタと編集DMAC21aの編集用リードディスクリプタを共用とするとともに、その各種コマンド領域には、一時停止を指示するコマンドであるPAUSEビット、バンド転送が終了すると割り込みの発生を指示するコマンドであるCHAINビットを設けるとともに、連動動作を指示するSYNCビット及びディスクリプタに情報が書き戻されたことを示すWBビットを追加する。
【0055】
そして、データ処理装置1は、図8に示すように、コマンド制御部31が、DMA動作コマンドをコマンドインターフェイス13、23を介してCPU/メモリ制御部2から受け取ると、ディスクリプタ制御部33に、「A:起動指示」(図6参照)を出力する(ステップS201)。ディスクリプタ制御部33は、「A:起動指示」を受け取ると、メモリ3へディスクリプタ情報を読みに行ってディスクリプタを取得すると(ステップS202)、メモリアクセス部32に、「B:バンド転送開始指示」(図6参照)を出す。この「B:バンド転送開始指示」には、転送開始アドレス、1次元転送であるのか、2次元転送であるのかの転送種類、1次元転送の場合には、転送サイズ、2次元転送の場合には、転送幅と転送ライン数が含まれている。メモリアクセス部32は、は「B:バンド転送開始指示」を受信すると、「B:バンド転送開始指示」に基づいたデータ転送を行い、転送が終了すると、ディスクリプタ制御部33及びコマンド制御部31に、「C:バンド転送終了通知」(図6参照)を出力する(ステップS203)。
【0056】
ディスクリプタ制御部33は、「C:バンド転送終了通知」を受信すると、最終バンドの転送であったか否かを判断し(ステップS204)、最終バンドの転送でなかった場合には、ディスクリプタに情報を書き込むライトバック動作を行うか否かのライトバック指示があったかをチェックする(ステップS206)。ライトバック指示があると、バスセレクタ50に「D:ライトバック指示」をバスセレクタ50に出して、ライトバック動作を実行し(ステップS207)、一時停止を行うPAUSE動作であったかを判断、すなわち、編集DMAC21aのディスクリプタの各種コマンド欄にPAUSEビットがセットされていたかによってチェックする(ステップS208)。ディスクリプタ制御部33は、ステップS206で、ライトバック指示がないときには、ライトバック動作を行うことなく、一時停止を行うPAUSE動作であったかを判断する(ステップS208)。
【0057】
ステップS208で、PAUSE動作でないときには、ディスクリプタ制御部33は、ステップS202に戻って、次のディスクリプタの取得から上記同様に処理する(ステップS202〜S208)。
【0058】
ステップS208で、PAUSE動作であった場合には、ディスクリプタ制御部33は、再開を示すCONTINUE指示がコマンド制御部31からくるのを待ち(ステップS209)、CONTINUE指示がくると、ステップS202に戻って、次のディスクリプタの取得から上記同様に処理する(ステップS202〜S209)。
【0059】
ステップS204で、最終バンドの転送であった場合には、ディスクリプタ制御部33は、ライトバック指示があったかをチェックし(ステップS210)、ライトバック指示があると、バスセレクタ50に「D:ライトバック指示」をバスセレクタ50に出して、ライトバック動作を実行して(ステップS211)、DMA動作を終了して、処理を終了する(ステップS212)。ステップS210で、ライトバック指示がないときには、ディスクリプタ制御部33は、ライトバック動作を行うことなく、DMA動作を終了して、処理を終了する(ステップS212)。
【0060】
そして、データ処理装置1は、図9に示すように、DMAC11a〜11n、21a〜21mを連動動作させて処理を行うか否かを選択する。
【0061】
すなわち、ソフトウェアは、画像転送の開始を要求されると、まず、自動カラー判定モードであるかチェックし(ステップS301)、自動カラー判定モードであると、DMAC11a〜11n、21a〜21mを連動させない非連動として処理を行う(ステップS302)。すなわち、自動カラー判定モードは、カラー原稿であるか白黒原稿であるかを指定しないモードであり、自動カラー判定モードでは、原稿を最後まで読み取らないとカラーであるのか白黒であるのかが判定できないのに対して、画像を入力した後に行う編集や色変換がカラー、白黒に依存したような内容の場合には、原稿を最後まで読み取らないと次の処理ができないため、連動動作の対象外とする。
【0062】
次に、ソフトウェアは、ステップS301で、自動カラー判定モードでないときには、180度回転が必要かチェックし(ステップS303)、回転が必要なときには、連動させないで、処理を終了し、また、180度回転が必要でないときには、DMAC11a〜11n、21a〜21mを連動させる連動処理を行う(ステップS304)。すなわち、画像を180度回転する場合には、原稿を最後まで読み取る必要があるため、連動動作の対象外とする。ただし、図1に示した画像のように、1ページを複数個のバンドに分割して処理を行う場合には、バンド単位で180度回転を行うことができるため、この場合は、連動動作の対象となる。
【0063】
そして、データ処理装置1は、入力DMAC11aと編集DMAC21aを連動させた上記データ処理を、図10に示すように行う。まず、ソフトウェアは、入力DMAC用のディスクリプタ及び編集DMAC21aのライト用のディスクリプタを、図7に示したように用意する。すなわち、編集DMAC21aのリード用のディスクリプタは用意せずに、入力DMAC11a用のディスクリプタを共用する。入力DMAC11a用のディスクリプタには、連動動作を指示するためのSYNCビットを設定し、WBビットは「0」を初期設定する。
【0064】
次に、ソフトウェアは、入力DMAC11aと編集DMAC21aの双方を同時に起動し、入力DMAC11a及び編集DMAC21aのリード側は、入力DMAC11a用のディスクリプタを読み込む。入力DMAC11aは、ディスクリプタを読み込むと、いま、SYNCビットが設定されているため、自分自身に対して連動動作をする他のDMAC21a〜21mが存在することを検知する。
【0065】
編集DMAC21aは、ディスクリプタを読み込むと、SYNCビットが設定されているため、連動動作をする必要があることを検知する。
【0066】
入力DMAC11aは、「A」のバンドのデータをメモリ3に書き込み、バンドの転送が終了すると、入力DMAC11a用のディスクリプタのWBビットに「1」を設定する。編集DMAC21aは、入力DMAC11a用のディスクリプタのWBビットに「1」が設定されているか否かを、入力DMAC11aが[A」のバンド転送を行っている間、ハードウェアで監視を行う。
【0067】
入力DMAC11a用のディスクリプタのWBビットに「1」が設定されているのを検知すると、編集DMAC23aは、ライト用のディスクリプタ(図7(b)参照)を読み出し、「A」のバンドに対する編集動作を自動的に開始する。編集DMAC23aは、予め連動動作を行うことをディスクリプタのSYNCビットで知っているため、「A」のバンド転送が終了すると、一旦停止し、入力DMAC23aの「B」のバンドのディスクリプタを監視する。編集DMAC23aは、入力DMAC11aの「B」のバンドのディスクリプタのWBが「1」になると、「B」のバンド転送を開始する。
【0068】
データ処理装置1は、上記処理を繰り返し行い、入力DMAC11aのディスクリプタの次ディスクリプタポインタに特殊な数値、例えば、「ALL0」や「ALL1」等の数値が書き込まれると、転送の終了であると判断する。入力DMAC11aは、この転送終了を示す数値を検知すると、そのバンドの転送が終了することを知ることができ、そのバンドの転送終了後、はじめて割込みをソフトウェアに発生する。
【0069】
編集DMAC21aも同様であって、編集DMAC21aは、次ディスクリプタポイント(ネクストディスクリプタポインタ)に該転送終了を示す特殊な数値が書かれ、かつ、WBビットが「1」になると、最終バンドの転送を行う。そして、その転送が終了すると、ソフトウェアに完了割込みを発生する。
【0070】
そして、上記編集DMAC21aのディスクリプタ制御部33は、入力DMAC11aと編集DMAC21aで共用しているディスクリプタのWBビットが「1」になることを、図11に示すようなタイミングで監視する。WBビットが「1」になることを監視するタイミングは、図11に示すようなディスクリプタポーリング間隔毎である。このディスクリプタポーリング間隔は、図6のコマンド制御部31からディスクリプタ制御部33へ出力される「F:ディスクリプタ監視間隔」で設定することにより、任意の間隔を設定可能である。間隔を短く設定すると、連動対象DMACである入力DMAC11aのバンド転送終了と連動するDMACである編集DMAC21aの開始タイミングの時間差を短くすることができるが、その反面、ディスクリプタポーリングのためのアクセス回数が多くなるため、メモリ3の帯域を占有することになり、メモリ3のパフォーマンスが低下する。逆に、ディスクリプタポーリング間隔を長く設定すると、連動対象DMACである入力DMAC11aのバンド転送終了と連動するDMACである編集DMAC21aの開始タイミングの時間差が大きくなってしまうので、処理目的等に応じて好適なディスクリプタポーリング間隔が設定される。
【0071】
このように、本実施例のデータ処理装置1は、複数の半導体集積回路に分散して存在する複数のDMAC11a〜11n、21a〜21mのうちデータをメモリ3に書き込む入力DMAC11aとメモリ3からデータを読み取る編集DMAC21aを連動させてデータ転送してデータ処理を行う場合に、メモリ3上の入力DMAC11a用のディスクリプタに、連動動作を指示するSYNCビット(連動指示コマンド)及び転送終了を示すWBコマンド(転送終了コマンド)を書き込むコマンド領域を有し、編集DMAC21aが、入力DMAC11a用のディスクリプタのSYNCコマンド及びWBコマンドを読み込んで、該入力DMAC11aの動作の進行状況を把握して、該連動によるデータ転送を行っている。
【0072】
したがって、膨大な端子を増設することなく、ディスクリプタを用意する数とソフト制御の煩雑さを削減しつつ、複数の半導体デバイス10、20に分かれて存在するDMAC11a〜11n、21a〜21m同士を、安価にかつ簡単な構成で複数のDMAC11a〜11n、21a〜21mを連動させてデータ転送することができ、より一層安価にかつ高速に複数のDMAC11a〜11n、21a〜21mを連動させてデータ転送することができるとともに、メモリ3の有効利用を図ることができる。すなわち、上記第1実施例の場合、端子数が増えず、内部構成も変化がないため、半導体デバイス10、20のコストアップはないが、ソフトウェアがバンド転送終了のたびに、割込み処理の実行、DMAC21a〜21m(上記例では、編集DMAC21a)の再起動を実行する必要がある。ところが、本実施例のデータ処理装置1は、ソフトウェアの介在を大きく削減することができ、DMAC11a〜11n、DMAC21a〜21mの連動によるデータ転送を、安価にかつより一層高速に行うことができる。
【0073】
また、本実施例のデータ処理装置1は、編集DMAC21aが、入力DMAC11a用のディスクリプタにSYNCコマンドが設定されていると、該ディスクリプタに転送終了コマンドがセットされるまで、連動によるデータ転送動作を一時停止している。
【0074】
したがって、データが書き込まれていない領域にアクセスしてしまうことを防ぐことができ、DMAC11a〜11n、21a〜21mの連動動作によるデータ転送を適切に行うことができる。
【0075】
さらに、本実施例のデータ処理装置1は、編集DMAC21aが、所定のタイミング毎に、入力DMAC11a用のディスクリプタを読み込んで、WBコマンドがセットされているか確認している。
【0076】
したがって、メモリ3の帯域を占有しない程度の間隔を適宜設定することができ、メモリ3の帯域を抑制することなくデータ転送することができる。
【0077】
また、本実施例のデータ処理装置1は、編集DMAC21aが、WBコマンドのセットの有無の確認を任意に設定されたタイミング毎に実行している。
【0078】
したがって、編集DMAC21aの起動タイミングを、ソフトウェアの介在なしで適切に知ることができ、ソフト制御の煩雑さを軽減することができる。
【0079】
さらに、本実施例のデータ処理装置1は、入力DMAC11aが、自己のディスクリプタに連動指示コマンドが設定されていると、該ディスクリプタに記載されている転送量のデータ転送が終了すると、該ディスクリプタにWBコマンドをセットする。
【0080】
したがって、編集DMAC21aの起動タイミングを、ソフトウェアの介在なしで適切に知ることができ、ソフト制御の煩雑さを軽減することができる。
【0081】
また、本実施例のデータ処理装置1は、編集DMAC21aが、入力DMAC11a用のディスクリプタにWBコマンドがセットされると、自動的にデータ転送を開始している。
【0082】
したがって、編集DMAC21aの起動タイミングを、ソフトウェアの介在なしで適切に知ることができ、ソフト制御の煩雑さを軽減することができる。
【0083】
さらに、本実施例のデータ処理装置1は、編集DMAC21aが、連動によるバンドデータのデータ転送が終了すると、データ転送を一時停止している。
【0084】
したがって、一旦停止した動作を自動で再開することができ、連動動作をミスの発生を防止しつつ適切に実行することができる。
【0085】
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記のものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【0086】
本発明は、複合装置、プリンタ、スキャナ等のDMACを利用して高速にデータ処理するデータ処理装置及びデータ処理方法に利用することができる。
【図面の簡単な説明】
【0087】
【図1】本発明の第1実施例を適用したデータ処理装置の要部ブロック構成図。
【図2】図1のメモリ上のディスクリプタで、入力用ディスクリプタ(図2(a))、編集用リードディスクリプタ(図2(b))及び編集用ライトディスクリプタを示す図。
【図3】図1のDMACの詳細なブロック構成図。
【図4】図1のデータ処理装置による連動によるデータ転送制御処理を示すフローチャート。
【図5】図5によるデータ転送制御処理の動作タイミングを示す図。
【図6】本発明の第2実施例を適用したデータ処理装置のDMACのブロック構成図。
【図7】メモリ上の編集用リードディスクリプタと共用される入力用ディスクリプタ(図7(a))と編集用ライトディスクリプタを示す図。
【図8】本発明の第2実施例を適用したデータ処理装置によるデータ転送制御処理を示すフローチャート。
【図9】本発明の第2実施例を適用したデータ処理装置によるDMACの連動選択処理を示すフローチャート。
【図10】図8によるデータ転送制御処理の動作タイミングを示す図。
【図11】図10のディスクリプタポーリング間隔の説明図。
【図12】従来のDMACの連動動作を行う半導体デバイスの一例を示す図。
【図13】従来の2つの半導体デバイスのDMACを連動動作させる場合の一例を示す図。
【符号の説明】
【0088】
1 データ処理装置
2 CPU/メモリ制御部
3 メモリ
10、20 半導体デバイス
11a〜11n DMAC
12 アービタ
20 半導体デバイス
21a〜11m DMAC
22 アービタ
13、23 コマンドインターフェイス
30 データ処理部
31 コマンド制御部
32 メモリアクセス部
33 ディスクリプタ制御部
2 入力書面
3 1次元イメージセンサ
4 ワイドレンズ
5 照明ランプ

【特許請求の範囲】
【請求項1】
複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理装置であって、前記連動相手DMAコントローラは、前記メモリ上のディスクリプタの内容を読み込んで、前記連動元DMAコントローラの動作の進行状況を把握し、該連動によるデータ転送を行うことを特徴とするデータ処理装置。
【請求項2】
前記連動相手DMAコントローラは、自己のディスクリプタに、一時停止コマンドがセットされると、再開指示があるまでデータ転送を一次停止させることを特徴とする請求項1記載のデータ処理装置。
【請求項3】
複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理装置であって、前記メモリ上の前記連動元DMAコントローラ用のディスクリプタに、前記連動を指示する連動指示コマンド及び転送終了を示す転送終了コマンドを書き込むコマンド領域を有し、前記連動相手DMAコントローラは、該連動元DMAコントローラ用のディスクリプタの該連動指示コマンド及び該転送終了コマンドを読み込んで、該連動元DMAコントローラの動作の進行状況を把握して、該連動によるデータ転送を行うことを特徴とするデータ処理装置。
【請求項4】
前記連動相手DMAコントローラは、前記連動元DMAコントローラ用のディスクリプタに前記連動指示コマンドが設定されていると、該ディスクリプタに転送終了コマンドがセットされるまで、該連動によるデータ転送動作を一時停止することを特徴とする請求項3記載のデータ処理装置。
【請求項5】
前記連動相手DMAコントローラは、所定のタイミング毎に、前記連動元DMAコントローラ用のディスクリプタを読み込んで、前記転送終了コマンドがセットされているか確認することを特徴とする請求項4記載のデータ処理装置。
【請求項6】
前記連動相手DMAコントローラは、前記転送終了コマンドのセットの有無の確認を任意に設定されたタイミング毎に実行することを特徴とする請求項5記載のデータ処理装置。
【請求項7】
前記連動元DMAコントローラは、前記自己のディスクリプタに前記連動指示コマンドが設定されていると、該ディスクリプタに記載されている転送量のデータ転送が終了すると、該ディスクリプタに転送終了コマンドをセットすることを特徴とする請求項3から請求項6のいずれかに記載のデータ処理装置。
【請求項8】
前記連動相手DMAコントローラは、前記連動元DMAコントローラ用のディスクリプタに前記転送終了コマンドがセットされると、自動的にデータ転送を開始することを特徴とする請求項4から請求項7のいずれかに記載のデータ処理装置。
【請求項9】
前記連動相手DMAコントローラは、前記連動によるバンドデータのデータ転送が終了すると、データ転送を一時停止することを特徴とする請求項4から請求項8のいずれかに記載のデータ処理装置。
【請求項10】
複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理方法であって、前記連動相手DMAコントローラが、前記メモリ上のディスクリプタの内容を読み込んで、前記連動元DMAコントローラの動作の進行状況を把握し、該連動によるデータ転送を行うことを特徴とするデータ処理方法。
【請求項11】
複数の半導体集積回路に分散して存在する複数のDMAコントローラのうちデータをメモリに書き込む連動元DMAコントローラと該メモリからデータを読み取る連動相手DMAコントローラを連動させてデータ転送してデータ処理を行うデータ処理方法であって、前記メモリ上の前記連動元DMAコントローラ用のディスクリプタに、前記連動を指示する連動指示コマンド及び転送終了を示す転送終了コマンドを書き込むコマンド領域を有し、前記連動相手DMAコントローラが、該連動元DMAコントローラ用のディスクリプタの該連動指示コマンド及び該転送終了コマンドを読み込んで、該連動元DMAコントローラの動作の進行状況を把握して、該連動によるデータ転送を行うことを特徴とするデータ処理方法。

【図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


【公開番号】特開2009−25896(P2009−25896A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2007−185995(P2007−185995)
【出願日】平成19年7月17日(2007.7.17)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】