以下、本発明の実施形態について、図面を参照して説明する。本実施形態においては、本発明のデータ処理装置を、例えば、デジタルカメラなどの撮像装置に搭載され、画像処理を行うシステムLSIなどのデータ処理装置とし、このデータ処理装置に、本発明のデータ転送制御装置を適用した場合の一例について説明する。図1は、本実施形態におけるデータ転送制御装置を備えたデータ処理装置の概略構成の一例を示したブロック図である。図1に示したデータ処理装置1は、第1の画像データ入力部100と、第1のデータ転送部101と、第2の画像データ入力部200と、第2のデータ転送部201と、データ転送制御装置10と、を備えている。また、データ処理装置1内のデータ転送制御装置10は、第1の転送制御部110と、第2の転送制御部210と、データ転送状態監視部130と、を備えている。
図1に示したように、データ処理装置1に備えた第1のデータ転送部101と第2のデータ転送部201とのそれぞれは、データ処理装置1の内部のインターコネクトバス700に接続されている。そして、データ処理装置1は、第1のデータ転送部101と第2のデータ転送部201とのそれぞれが、データ処理装置1に備えた第1の画像データ入力部100および第2の画像データ入力部200から入力された画像データを、インターコネクトバス700を介して、例えば、DRAMなどの不図示のメモリに転送する。
このとき、データ転送制御装置10は、データ処理装置1が第1のデータ転送部101および第2のデータ転送部201によってメモリに転送する画像データを制御する。以下の説明においては、データ処理装置1に接続されたメモリがDRAMであるものとして説明を行う。
第1の画像データ入力部100および第2の画像データ入力部200のそれぞれは、インターコネクトバス700を介してDRAMに転送する画像データの供給源である。なお、以下の説明においては、第1の画像データ入力部100が、例えば、不図示のイメージセンサから入力された画像データを、リアルタイムにDRAMに転送する画像データの供給源であり、第2の画像データ入力部200が、不図示のイメージセンサから入力された画像データに応じて処理した画像データを、DRAMに転送する画像データの供給源であるものとして説明を行う。ここで、第2の画像データ入力部200が行う、不図示のイメージセンサから入力された画像データに応じた処理としては、例えば、黒レベル補正を施す前処理や、縮小画像を生成する画像生成処理や、自動露出(Auto Exposure:AE)、オートホワイトバランス(Auto White Balance:AWB)、自動焦点(Auto Focus:AF)などを制御するための評価値を生成する処理などが考えられる。
以下の説明においては、第1の画像データ入力部100が供給する画像データ、すなわち、DRAMに転送する画像データを、「第1の転送データ」といい、第2の画像データ入力部200が供給する画像データを、「第2の転送データ」という。なお、第1の転送データと第2の転送データとを区別せずに表す場合には、単に「転送データ」という。
なお、図1に示したデータ処理装置1においては、第1の画像データ入力部100が第1のデータ転送部101に対応し、第2の画像データ入力部200が第2のデータ転送部201に対応している。つまり、図1には、1つのデータ転送部に対して1つ転送データの供給源が存在しているデータ処理装置の構成を示している。しかし、データ処理装置においては、1つのデータ転送部に対して複数の転送データの供給源が対応する構成であってもよい。
第1のデータ転送部101および第2のデータ転送部201のそれぞれは、対応する第1の画像データ入力部100または第2の画像データ入力部200から入力された転送データをインターコネクトバス700に出力することによって、それぞれの転送データをDMAによってDRAMに転送するイニシエータである。
ただし、データ処理装置1では、データ転送制御装置10が、第1のデータ転送部101および第2のデータ転送部201によってDRAMに転送する転送データを制御する。従って、データ処理装置1では、第1のデータ転送部101および第2のデータ転送部201のそれぞれがDMAによってDRAMに転送する転送データが、データ転送制御装置10を介して入力される。なお、以下の説明においては、第1のデータ転送部101の方が、第2のデータ転送部201よりも優先度が高いイニシエータであるものとして説明を行う。
なお、それぞれのイニシエータが転送データをDMAによってDRAMに転送する際、イニシエータは、まず、DMAによるDRAMへのアクセスを要求するリクエスト信号をインターコネクトバス700に出力し、その後、DRAMに転送する転送データをインターコネクトバス700に出力する。
より具体的には、DRAMへのアクセス要求を行うイニシエータが、リクエスト信号をインターコネクトバス700に出力すると、インターコネクトバス700に接続された、例えば、バスアービタなどの不図示のバス調停部に、インターコネクトバス700を介してリクエスト信号が入力される。これにより、不図示のバス調停部は、入力されたリクエスト信号に応じて、DRAMへのアクセス要求を調停する。そして、不図示のバス調停部は、DRAMのへのアクセス要求を受け付ける状態となったときに、アクセス要求を許可するアクノリッジ信号を、インターコネクトバス700に出力し、リクエスト信号を出力したイニシエータに、アクノリッジ信号を返す(出力する)。これにより、リクエスト信号を出力したイニシエータは、入力されたアクノリッジ信号に応じて、DRAMに転送する転送データを、不図示のバス調停部に、インターコネクトバス700を介して出力する。そして、不図示のバス調停部は、適切なタイミングでDRAMにアクセスを行い、入力された転送データをDRAMに転送する。なお、以下の説明においては、それぞれのイニシエータが、DMAによって転送データをDRAMに転送する、上述したような動作を、「DMA転送」という。
データ転送制御装置10は、第1のデータ転送部101および第2のデータ転送部201のそれぞれにおけるDMA転送の状態を監視し、監視した結果に応じて、第1のデータ転送部101または第2のデータ転送部201のいずれのデータ転送部によって転送データをDMA転送するかを決定する。そして、データ転送制御装置10は、決定した第1のデータ転送部101または第2のデータ転送部201のいずれかのデータ転送部に転送データを出力して、DMA転送を行わせる。
データ転送状態監視部130は、第1のデータ転送部101および第2のデータ転送部201のそれぞれにおいて行われているDMA転送の状態を監視する。なお、データ転送状態監視部130がDMA転送の状態を監視する際には、例えば、DRAMのバンク衝突などによる、DMA転送の待ち時間や、DRAMへのアクセス履歴や、転送データのDRAMへの転送数などの付加情報も収集する。
そして、データ転送状態監視部130は、監視した第1のデータ転送部101のDMA転送の状態に応じた第1の転送制御情報を、第1の転送制御部110に出力する。また、データ転送状態監視部130は、監視した第2のデータ転送部201のDMA転送の状態に応じた第2の転送制御情報を、第2の転送制御部210に出力する。なお、第1の転送制御情報および第2の転送制御情報には、対応する第1のデータ転送部101および第2のデータ転送部201に転送データを出力する順序や、第1のデータ転送部101と第2のデータ転送部201とのタイミングを調停するための制御情報なども含まれる。
なお、データ転送状態監視部130におけるDMA転送の状態監視や、第1のデータ転送部101と第2のデータ転送部201との制御方法に関する詳細な説明は、後述する。
第1の転送制御部110は、第1の画像データ入力部100から入力されたDMA転送する第1の転送データを、データ転送状態監視部130から入力された第1の転送制御情報に基づいて、第1のデータ転送部101と第2のデータ転送部201とに振り分ける。なお、第1の転送制御部110は、基本的には、第1の画像データ入力部100から入力された第1の転送データを第1のデータ転送部101に出力する。しかし、第1の転送制御部110は、データ転送状態監視部130から入力された第1の転送制御情報が、例えば、第1のデータ転送部101がDMA転送を行う際の待ち時間が多いなど、第1のデータ転送部101による第1の転送データのDMA転送が円滑に行われていないことを表している場合には、第1のデータ転送部101に出力する第1の転送データを、第2の転送制御部210に出力し、第2のデータ転送部201によって転送させる。
なお、第1の転送制御部110による第1の転送データの第1のデータ転送部101と第2のデータ転送部201とに振り分け方法に関する詳細な説明は、後述する。
第2の転送制御部210は、第2の画像データ入力部200から入力されたDMA転送する第2の転送データを、第2のデータ転送部201に出力する。ただし、第2の転送制御部210は、第1の転送制御部110によって振り分けられた、第1の画像データ入力部100がDMA転送する第1の転送データが入力された場合には、データ転送状態監視部130から入力された第2の転送制御情報に基づいて、第1の転送制御部110から入力された第1の転送データを選択して、第2のデータ転送部201に出力する。
これにより、第1の画像データ入力部100が出力した第1の転送データは、第1のデータ転送部101に加えて、第2のデータ転送部201によってもDMA転送され、第1の画像データ入力部100が出力した第1の転送データをDMA転送する際のバス帯域を確保することができる。このことにより、第1の画像データ入力部100が出力する第1の転送データのDMA転送のリアルタイム性を確保することができる。
なお、第2の転送制御部210による、第2の画像データ入力部200から入力された第2の転送データ、または第1の転送制御部110から入力された第1の転送データの選択方法に関する詳細な説明は、後述する。
<第1の実施形態>
次に、本実施形態のデータ転送制御装置10の構成および動作について、さらに詳細に説明する。図2は、本第1の実施形態におけるデータ転送制御装置10を備えたデータ処理装置1の構成の一例を示したブロック図である。図2には、DMA転送の待ち時間とDRAMへのアクセス履歴とに基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分ける制御を行うデータ転送制御装置10の構成を示している。なお、図2に示したデータ処理装置1のブロック図は、図1に示したデータ処理装置1内のデータ転送制御装置10の構成要素をより詳細に示したのみであるため、データ転送制御装置10以外の構成要素に関する詳細な説明は省略する。
データ転送制御装置10内の第1の転送制御部110は、第1の転送バッファ部111と第1のバッファ制御部112とを備えている。また、データ転送制御装置10内の第2の転送制御部210は、第2の転送バッファ部211と第2のバッファ制御部212とを備えている。また、データ転送制御装置10内のデータ転送状態監視部130は、データ転送待ち時間監視部131とメモリアクセス履歴収集部132とを備えている。
第1の転送バッファ部111は、第1の画像データ入力部100から出力された第1の転送データを一旦格納する、例えば、SRAM(Static Random Access Memory)などのメモリで構成された、第1の転送データの一時記憶バッファである。第1の転送バッファ部111は、第1のバッファ制御部112からの制御に応じて、格納した第1の転送データを、第1のバッファ制御部112に出力する。
第1のバッファ制御部112は、データ転送状態監視部130から入力された第1の転送制御情報に含まれる空きバンク情報に基づいて、次に転送する第1の転送データの出力先を、第1のデータ転送部101または第2の転送制御部210内の第2のバッファ制御部212のいずれか一方に決定する。そして、第1のバッファ制御部112は、第1の転送バッファ部111に格納されている第1の転送データを読み出し、読み出した第1の転送データを、決定した出力先に出力する。つまり、第1のバッファ制御部112は、データ転送状態監視部130から入力された第1の転送制御情報に基づいて、第1の転送バッファ部111から読み出した第1の転送データを、第1のデータ転送部101または第2のバッファ制御部212のいずれか一方に振り分ける。
第2の転送バッファ部211は、第2の画像データ入力部200から出力された第2の転送データを一旦格納する、例えば、SRAMなどのメモリで構成された、第2の転送データの一時記憶バッファである。第2の転送バッファ部211は、第2のバッファ制御部212からの制御に応じて、格納した第2の転送データを、第2のバッファ制御部212に出力する。
第2のバッファ制御部212は、データ転送状態監視部130から入力された第2の転送制御情報に基づいて、次に転送する転送データを、第2のデータ転送部201に出力する。なお、第2のバッファ制御部212は、第1のバッファ制御部112から第1の転送データが入力された場合には、第1のバッファ制御部112から入力された第1の転送データを、第2のデータ転送部201に出力する。また、第2のバッファ制御部212は、第1のバッファ制御部112から第1の転送データが入力されていない場合には、第2の転送バッファ部211に格納されている第2の転送データを読み出し、読み出した第2の転送データを、第2のデータ転送部201に出力する。
なお、第2のバッファ制御部212は、第1のバッファ制御部112から入力された第1の転送データの第2のデータ転送部201への出力と、第2の転送データの第2のデータ転送部201への出力とが競合した場合には、第1の転送データの第2のデータ転送部201への出力を優先する。このため、第2のバッファ制御部212は、競合した第2の転送データの第2のデータ転送部201への出力を待ち合わせる。つまり、第2のバッファ制御部212は、第1のバッファ制御部112から第1の転送データが入力されていないときに、第2の転送データの第2のデータ転送部201への出力を行う。
データ転送待ち時間監視部131は、第1のデータ転送部101がDMA転送を行う際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)に基づいて、第1のデータ転送部101によるDMA転送の待ち時間を監視する。そして、データ転送待ち時間監視部131は、第1のデータ転送部101によるDMA転送の待ち時間が、予め定めた時間を超過した場合、すなわち、第1のデータ転送部101による第1の転送データのDMA転送が円滑に行われずに滞っている場合に、このことを表すタイムアウト信号を、メモリアクセス履歴収集部132に通知(出力)する。
メモリアクセス履歴収集部132は、第1のデータ転送部101がDMA転送を行う際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)や、DRAMのメモリアドレスから得られるバンク情報に基づいて、第1のデータ転送部101によるDRAMへのアクセス履歴を収集する。また、メモリアクセス履歴収集部132は、第2のデータ転送部201がDMA転送を行う際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)や、DRAMのメモリアドレスから得られるバンク情報に基づいて、第2のデータ転送部201によるDRAMへのアクセス履歴を収集する。
そして、メモリアクセス履歴収集部132は、データ転送待ち時間監視部131からタイムアウト信号が入力された場合、収集した第1のデータ転送部101と第2のデータ転送部201とのそれぞれによるDRAMへのアクセス履歴に基づいて、第1のデータ転送部101と第2のデータ転送部201とのそれぞれがアクセスすることができるDRAMのメモリバンクを判定する。そして、メモリアクセス履歴収集部132は、判定したメモリバンクの情報に基づいて、第2のデータ転送部201が次に転送することができるメモリバンクを表す空きバンク情報を、第1のバッファ制御部112に出力する。
この空きバンク情報に基づいて、第1のバッファ制御部112は、次に転送する第1の転送データの出力先を第2のデータ転送部201に決定し、第1の転送バッファ部111から読み出した第1の転送データを第2のバッファ制御部212に出力することによって、第1の転送データを第2のデータ転送部201にDMA転送させる。このように、データ転送制御装置10では、第1の転送データのDMA転送を、第1のデータ転送部101と第2のデータ転送部201とによって並列に行わせることによって、第1の転送データのDMA転送のリアルタイム性を確保する。
なお、第1のバッファ制御部112による第1の転送データの出力先の決定は、DRAMのバンク衝突が発生しないデータ転送部に決定することが望ましい。従って、第1のバッファ制御部112は、次に転送する第1の転送データを第2のデータ転送部201によってDMA転送させることによってバンク衝突が発生する場合には、第1の転送データを第1の転送バッファ部111から読み出す順序を変更し、第2のデータ転送部201によってDMA転送させてもバンク衝突が発生しない、例えば、2番目に転送する第1の転送データを先に読み出して、第2のバッファ制御部212に出力してもよい。
次に、データ転送制御装置10の動作について説明する。図3は、本第1の実施形態のデータ転送制御装置10によるデータ転送動作の処理手順を示したフローチャートである。第1の画像データ入力部100から第1の転送データが入力されると、データ転送制御装置10は、ステップS100から、第1のデータ転送部101および第2のデータ転送部201がDMA転送を行う際の制御信号やメモリアドレスなど、DRAMに対するアクセスの情報(以下、「メモリアクセス情報」という)の収集を開始する。なお、メモリアクセス情報の収集は、以降の処理手順を実行しているときにも、常に継続して行われる。
そして、データ転送待ち時間監視部131は、収集したメモリアクセス情報に基づいて、第1のデータ転送部101によるDMA転送の待ち時間を監視する。より具体的には、第1のデータ転送部101がリクエスト信号をインターコネクトバス700に出力してから、アクノリッジ信号が返ってくるまでの時間を計測することによって、DMA転送の待ち時間を監視する。
また、メモリアクセス履歴収集部132は、収集したメモリアクセス情報に基づいて、第1のデータ転送部101および第2のデータ転送部201によるDRAMへのアクセス履歴を収集する。より具体的には、例えば、第1のデータ転送部101がリクエスト信号をインターコネクトバス700に出力するときに指定するDRAMのメモリアドレスや、アクノリッジ信号が返ってきたときに指定されたDRAMのメモリアドレスに基づいて、第1のデータ転送部101が第1の転送データをDMA転送するDRAMのメモリバンクを判別する。そして、判別したDRAMのメモリバンクの情報を、第1のデータ転送部101によるDRAMへのアクセス履歴として収集する。
その後、データ転送待ち時間監視部131は、監視している第1のデータ転送部101によるDMA転送の待ち時間が予め定めた時間を超過した場合(ステップS110の“YES”)、すなわち、第1のデータ転送部101のDMA転送のタイムアウトを検出した場合、タイムアウト信号をメモリアクセス履歴収集部132に出力する。メモリアクセス履歴収集部132は、データ転送待ち時間監視部131からタイムアウト信号が入力されると、収集したDRAMへのアクセス履歴に基づいて判定した空きバンク情報を、第1のバッファ制御部112に出力する。
なお、データ転送待ち時間監視部131は、監視しているDMA転送の待ち時間が予め定めた時間を超過していない場合(ステップS110の“NO”)、すなわち、タイムアウトを検出していない場合には、ステップS100に戻って、DMA転送の待ち時間の監視を継続する。
メモリアクセス履歴収集部132から空きバンク情報が入力されると、ステップS120において、第1のバッファ制御部112は、第1の転送データの出力先を振り分けて、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの並列転送を開始する。そして、第1のバッファ制御部112は、第2のデータ転送部201によってDMA転送させる次の第1の転送データを、第2のバッファ制御部212に出力する。
続いて、ステップS130において、第2のバッファ制御部212は、第2のデータ転送部201に出力する転送データの出力順序を変更し、次に第2のデータ転送部201に出力する第2の転送データの代わりに、第1のバッファ制御部112から入力された第1の転送データを、第2のデータ転送部201に出力する。
続いて、ステップS140において、第1のバッファ制御部112は、第1のデータ転送部101に出力する第1の転送データの出力順序を変更、つまり、第2のデータ転送部201によってDMA転送させる次の第1の転送データは出力したものとして、その次に第1のデータ転送部101に出力する第1の転送データを、第1のデータ転送部101に出力する。
これにより、ステップS130で第2のデータ転送部201に出力された第1の転送データと、ステップS140で第1のデータ転送部101に出力された第1の転送データとが、それぞれ並列にDMA転送される。
その後、ステップS150において、メモリアクセス履歴収集部132が、収集したメモリアクセス情報に基づいて、第2のデータ転送部201による第1の転送データのDMA転送が完了したことを認識すると、ステップS160において、第1のバッファ制御部112は、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの1回目の並列転送を終了する。なお、ステップS140からステップS160までの間に、メモリアクセス履歴収集部132が、第1のデータ転送部101による第1の転送データのDMA転送の完了を、収集したメモリアクセス情報に基づいて認識することもあると考えられる。
以降、データ転送制御装置10は、図3に示したデータ転送動作のフローチャートの処理手順を繰り返して、第1の画像データ入力部100から入力された全ての第1の転送データのDMA転送を行う。
本第1の実施形態によれば、共通バス(インターコネクトバス700)を介してデータを転送する複数のデータ転送部(第1のデータ転送部101および第2のデータ転送部201)のそれぞれに、インターコネクトバス700を介して転送する転送データを出力するデータ転送制御装置(データ転送制御装置10)であって、第1のデータ転送部101および第2のデータ転送部201のそれぞれに対応し、この第1のデータ転送部101および第2のデータ転送部201のそれぞれに対応するデータ入力部(第1の画像データ入力部100および第2の画像データ入力部200)から入力された転送データを、対応する第1のデータ転送部101または第2のデータ転送部201に出力する複数の転送制御部(第1の転送制御部110および第2の転送制御部210)と、第1のデータ転送部101および第2のデータ転送部201のそれぞれが転送データを転送している状態を監視し、ここで監視した第1のデータ転送部101および第2のデータ転送部201のそれぞれの転送データの転送状態に基づいて、それぞれの第1の転送制御部110および第2の転送制御部210における転送データの対応する第1のデータ転送部101または第2のデータ転送部201への出力を制御する転送制御情報(第1の転送制御情報および第2の転送制御情報)を出力するデータ転送状態監視部(データ転送状態監視部130)と、を備え、複数の第1の転送制御部110および第2の転送制御部210の内、少なくとも1つの転送制御部(第1の転送制御部110)は、対応する第1のデータ転送部101の第1の転送制御情報に基づいて、この第1のデータ転送部101によって転送する転送データ(第1の転送データ)を、この第1のデータ転送部101によって転送する第1の転送データと他の転送制御部(第2の転送制御部210)が対応する他の第2のデータ転送部201によって転送する第1の転送データとに振り分けて出力し、転送データが振り分けられた、少なくとも1つの他の転送制御部(第2の転送制御部210)は、振り分けられた第1の転送データを、対応する第2のデータ転送部201の第2の転送制御情報に基づいて、この対応する第2のデータ転送部201に出力する、データ転送制御装置10が構成される。
また、本第1の実施形態によれば、共通バス(インターコネクトバス700)を介してデータを転送する複数のデータ転送部(第1のデータ転送部101および第2のデータ転送部201)のそれぞれに、インターコネクトバス700を介して転送する転送データを出力するデータ転送制御装置(データ転送制御装置10)におけるデータ転送制御方法であって、第1のデータ転送部101および第2のデータ転送部201のそれぞれに対応し、この第1のデータ転送部101および第2のデータ転送部201のそれぞれに対応するデータ入力部(第1の画像データ入力部100および第2の画像データ入力部200)から入力された転送データを、対応する第1のデータ転送部101または第2のデータ転送部201に出力する複数の転送制御手順(第1の転送制御部110および第2の転送制御部210における処理手順)と、第1のデータ転送部101および第2のデータ転送部201のそれぞれが転送データを転送している状態を監視し、ここで監視した第1のデータ転送部101および第2のデータ転送部201のそれぞれの転送データの転送状態に基づいて、それぞれの第1の転送制御部110および第2の転送制御部210における転送データの対応する第1のデータ転送部101または第2のデータ転送部201への出力を制御する転送制御情報(第1の転送制御情報および第2の転送制御情報)を出力するデータ転送状態監視手順(データ転送状態監視部130における処理手順)と、を含み、複数の第1の転送制御部110および第2の転送制御部210における処理手順の内、少なくとも1つの転送制御手順(第1の転送制御部110における処理手順)は、対応する第1のデータ転送部101の第1の転送制御情報に基づいて、この第1のデータ転送部101によって転送する転送データ(第1の転送データ)を、この第1のデータ転送部101によって転送する第1の転送データと他の転送制御手順(第2の転送制御部210における処理手順)が対応する他の第2のデータ転送部201によって転送する第1の転送データとに振り分けて出力し、転送データが振り分けられた、少なくとも1つの他の転送制御手順(第2の転送制御部210における処理手順)は、振り分けられた第1の転送データを、対応する第2のデータ転送部201の第2の転送制御情報に基づいて、この対応する第2のデータ転送部201に出力する、データ転送制御方法が構成される。
また、本第1の実施形態によれば、共通バス(インターコネクトバス700)を介してデータを転送する複数のデータ転送部(第1のデータ転送部101および第2のデータ転送部201)と、第1のデータ転送部101および第2のデータ転送部201のそれぞれに対応し、インターコネクトバス700を介して転送する転送データを出力する複数のデータ入力部(第1の画像データ入力部100および第2の画像データ入力部200)と、第1のデータ転送部101および第2のデータ転送部201のそれぞれに対応し、この第1のデータ転送部101および第2のデータ転送部201のそれぞれに対応する第1の画像データ入力部100または第2の画像データ入力部200から入力された転送データを、対応する第1のデータ転送部101または第2のデータ転送部201に出力する複数の転送制御部(第1の転送制御部110および第2の転送制御部210)と、第1のデータ転送部101および第2のデータ転送部201のそれぞれが転送データを転送している状態を監視し、ここで監視した第1のデータ転送部101および第2のデータ転送部201のそれぞれの転送データの転送状態に基づいて、それぞれの第1の転送制御部110および第2の転送制御部210における転送データの対応する第1のデータ転送部101または第2のデータ転送部201への出力を制御する転送制御情報(第1の転送制御情報および第2の転送制御情報)を出力するデータ転送状態監視部(データ転送状態監視部130)と、を具備したデータ転送制御装置(データ転送制御装置10)と、を備え、データ転送制御装置10に備えた複数の第1の転送制御部110および第2の転送制御部210の内、少なくとも1つの転送制御部(第1の転送制御部110)は、対応する第1のデータ転送部101の第1の転送制御情報に基づいて、この第1のデータ転送部101によって転送する転送データ(第1の転送データ)を、この第1のデータ転送部101によって転送する第1の転送データと他の転送制御部(第2の転送制御部210)が対応する他の第2のデータ転送部201によって転送する第1の転送データとに振り分けて出力し、データ転送制御装置10に備えた複数の第1の転送制御部110および第2の転送制御部210の内、転送データが振り分けられた、少なくとも1つの他の転送制御部(第2の転送制御部210)は、振り分けられた第1の転送データを、対応する第2のデータ転送部201の第2の転送制御情報に基づいて、この対応する第2のデータ転送部201に出力する、データ処理装置(データ処理装置1)が構成される。
また、本第1の実施形態によれば、複数の第1の転送制御部110および第2の転送制御部210のそれぞれは、対応する第1のデータ転送部101または第2のデータ転送部201が対応する第1の画像データ入力部100または第2の画像データ入力部200から入力された転送データを一時的に記憶する転送バッファ部(第1の転送バッファ部111または第2の転送バッファ部211)と、転送制御情報に基づいて、第1の転送バッファ部111または第2の転送バッファ部211に記憶された転送データを読み出して出力するバッファ制御部(第1のバッファ制御部112または第2のバッファ制御部212)と、を備え、第1の転送データを振り分ける転送制御部である第1の転送制御部110に備えた転送バッファ部である第1の転送バッファ部111は、この第1の転送制御部110が対応するデータ転送部である第1のデータ転送部101によって転送する転送データである第1の転送データを一時的に記憶し、この第1の転送制御部110に備えたバッファ制御部である第1のバッファ制御部112は、第1のデータ転送部101の転送制御情報である第1の転送制御情報に基づいて、第1の転送バッファ部111から読み出した第1の転送データを、第1のデータ転送部101によって転送する第1の転送データと他の転送制御部(第2の転送制御部210)が対応する他のデータ転送部(第2のデータ転送部201)によって転送する第1の転送データとに振り分けて出力し、第1の転送データが振り分けられた他の転送制御部である第2の転送制御部210に備えた転送バッファ部である第2の転送バッファ部211は、この第2の転送制御部210が対応するデータ転送部である第2のデータ転送部201によって転送する転送データである第2の転送データを一時的に記憶し、この第2の転送制御部210に備えたバッファ制御部である第2のバッファ制御部212は、第1のバッファ制御部112から第1の転送データが入力されていない場合には、第2のデータ転送部201の転送制御情報である第2の転送制御情報に基づいて、第2の転送バッファ部211から読み出した第2の転送データを第2のデータ転送部201に出力し、第1のバッファ制御部112から第1の転送データが入力された場合には、第2の転送制御情報に基づいて、この第1の転送データを第2のデータ転送部201に出力する、データ転送制御装置10が構成される。
また、本第1の実施形態によれば、データ転送状態監視部130は、第1のデータ転送部101が第1の転送データを転送する際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)に基づいて、この第1のデータ転送部101における第1の転送データの転送待ち時間を監視し、ここで監視した第1の転送データの転送待ち時間が、予め定めた時間を超過した場合に、転送待ち時間が予め定めた時間を超過したことを表すタイムアウト信号を出力するデータ転送待ち時間監視部(データ転送待ち時間監視部131)と、第1のデータ転送部101が第1の転送データを転送する際の信号(例えば、リクエスト信号やアクノリッジ信号などや、DRAMのメモリアドレス)に基づいて、この第1のデータ転送部101における第1の転送データの転送履歴と、第2のデータ転送部201が第1の転送データまたは第2の転送データを転送する際の信号(例えば、リクエスト信号やアクノリッジ信号などや、DRAMのメモリアドレス)に基づいて、この第2のデータ転送部201における第1の転送データまたは第2の転送データの転送履歴とを収集するアクセス履歴収集部(メモリアクセス履歴収集部132)と、を備え、メモリアクセス履歴収集部132は、データ転送待ち時間監視部131がタイムアウト信号を出力した際に、収集した第1の転送データの転送履歴と第2の転送データの転送履歴とに基づいて、第1の転送データと第2の転送データとによって転送データを転送するための転送情報(空きバンク情報)を第1のバッファ制御部112に出力し、第1のバッファ制御部112は、メモリアクセス履歴収集部132から出力された空きバンク情報に基づいて、第1の転送データを、第1のデータ転送部101と第2のバッファ制御部212とに振り分けて出力する、データ転送制御装置10が構成される。
このようにして、データ転送制御装置10では、DMA転送の待ち時間とDRAMへのアクセス履歴とに基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分けて、それぞれ並列にDMA転送する。これにより、データ転送制御装置10では、第1の画像データ入力部100が出力した第1の転送データをDMA転送する際のバス帯域が確保されて、DMA転送が円滑に行われ、第1の転送データのDMA転送のリアルタイム性を確保することができる。
なお、第1のデータ転送部101と第2のデータ転送部201とによる転送データのDMA転送は、DRAMのバンク衝突が発生しないデータ転送部に決定することが望ましい。このため、第1のバッファ制御部112と第2のバッファ制御部212とのそれぞれは、通常のDMA転送においても、対応するデータ転送部に転送データを出力する際に、それぞれのデータ転送部がDRAMの異なるメモリバンクにDMA転送するように、転送データの出力順序を並び替えていることが考えられる。従って、ステップS120において第1のバッファ制御部112が第2のバッファ制御部212に出力する第1の転送データは、上述したように、次の第1の転送データ、すなわち、現在DMA転送している第1の転送データに連続している第1の転送データに限定されるものではない。
なお、本第1の実施形態では、データ転送待ち時間監視部131が、DMA転送の待ち時間のタイムアウトを検出する構成について説明したが、例えば、第1のデータ転送部101におけるDMA転送の待ち時間と、第2のデータ転送部201におけるDMA転送の待ち時間とのそれぞれを監視する構成であってもよい。また、例えば、データ転送待ち時間監視部131が、第1のデータ転送部101におけるDMA転送の待ち時間の平均時間と、第2のデータ転送部201におけるDMA転送の待ち時間の平均時間とのそれぞれを監視する構成であってもよい。この場合、メモリアクセス履歴収集部132は、データ転送待ち時間監視部131が監視した第1のデータ転送部101と第2のデータ転送部201とにおけるDMA転送の待ち時間や待ち時間の平均時間の割合に基づいて、例えば、第1のバッファ制御部112が第1の転送データの出力先を振り分ける割合を表す情報を、第1のバッファ制御部112に出力する構成にすることもできる。このような構成であっても、データ転送制御装置10は、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とのそれぞれで並列にDMA転送することができる。
<第2の実施形態>
次に、本実施形態のデータ転送制御装置10の別の構成および動作について説明する。なお、以下の説明においては、本実施形態のデータ転送制御装置10を、第1の実施形態のデータ転送制御装置10と区別するため、本第2の実施形態のデータ転送制御装置を、「データ転送制御装置20」という。そして、データ転送制御装置20を備えたデータ処理装置を、「データ処理装置2」という。図4は、本第2の実施形態におけるデータ転送制御装置20を備えたデータ処理装置2の構成の一例を示したブロック図である。図4には、DMA転送の負荷状態に基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分ける制御を行うデータ転送制御装置20の構成を示している。
図4に示したデータ処理装置2は、図2に示したデータ処理装置1内のデータ転送制御装置10がデータ転送制御装置20に代わった構成であり、このデータ転送制御装置20の構成要素をより詳細に示している。なお、図4に示したデータ処理装置2内の構成要素およびデータ転送制御装置20内の構成要素には、図1および図2に示したデータ処理装置1内の構成要素およびデータ転送制御装置10内の構成要素と同様の構成要素も含まれている。従って、図4に示したデータ処理装置2およびデータ転送制御装置20の構成要素において、図1および図2に示したデータ処理装置1およびデータ転送制御装置10の構成要素と同様の構成要素には、同一の符号を付与し、それぞれの構成要素に関する詳細な説明は省略する。
データ転送制御装置20は、第1の実施形態のデータ転送制御装置10と同様に、データ処理装置2が第1のデータ転送部101および第2のデータ転送部201によってDRAMにDMA転送する転送データを制御する。従って、データ処理装置2でも、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101および第2のデータ転送部201のそれぞれがDMA転送する転送データが、データ転送制御装置20を介して入力される。なお、以下の説明においても、第1の実施形態のデータ処理装置1と同様に、第1のデータ転送部101の方が、第2のデータ転送部201よりも優先度が高いイニシエータであるものとして説明を行う。
データ転送制御装置20は、第1のデータ転送部101および第2のデータ転送部201のそれぞれにおけるDMA転送の状態を監視し、監視した結果に応じて、第1のデータ転送部101または第2のデータ転送部201のいずれのデータ転送部によって転送データをDMA転送するかを決定し、決定した第1のデータ転送部101または第2のデータ転送部201のいずれかのデータ転送部に転送データを出力して、DMA転送を行わせる。データ転送制御装置20は、第1の転送制御部140と、第2の転送制御部210と、データ転送状態監視部150と、を備えている。
第1の転送制御部140は、第1の実施形態の第1の転送制御部110と同様に、第1の画像データ入力部100から入力されたDMA転送する第1の転送データを、データ転送状態監視部150から入力された第1の転送制御情報に基づいて、第1のデータ転送部101と第2のデータ転送部201とに振り分ける。第1の転送制御部140は、第1の転送バッファ部111と第1のバッファ制御部142とを備えている。
第1の転送バッファ部111は、第1の画像データ入力部100から出力された第1の転送データを格納し、第1のバッファ制御部142からの制御に応じて、格納した第1の転送データを、第1のバッファ制御部142に出力する。
第1のバッファ制御部142は、データ転送状態監視部150から入力された第1の転送制御情報に含まれる負荷分散指示に応じて、次に転送する第1の転送データの出力先を、第1のデータ転送部101または第2の転送制御部210内の第2のバッファ制御部212のいずれか一方に決定する。そして、第1のバッファ制御部142は、第1の転送バッファ部111に格納されている第1の転送データを読み出し、読み出した第1の転送データを、決定した出力先に出力する。つまり、第1のバッファ制御部142は、データ転送状態監視部150から入力された負荷分散指示に応じて、第1の実施形態の第1のバッファ制御部112と同様に、第1の転送バッファ部111から読み出した第1の転送データを、第1のデータ転送部101または第2のバッファ制御部212のいずれか一方に振り分ける。
そして、第2のバッファ制御部212は、第1のバッファ制御部142から第1の転送データが入力された場合には、第1のバッファ制御部142から入力された第1の転送データを、第2のバッファ制御部212に出力する。これにより、第1の画像データ入力部100が出力した第1の転送データは、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101に加えて、第2のデータ転送部201によってもDMA転送される。
データ転送状態監視部150は、第1の実施形態のデータ転送状態監視部130と同様に、第1のデータ転送部101および第2のデータ転送部201のそれぞれにおいて行われているDMA転送の状態を監視する。このとき、データ転送状態監視部150は、DRAMのバンク衝突などによる、DMA転送の待ち時間や、転送データのDRAMへの転送数などの転送負荷の情報を収集する。そして、データ転送状態監視部150は、監視した第1のデータ転送部101のDMA転送の負荷状態に応じた負荷分散指示を、第1の転送制御情報として第1の転送制御部140内の第1のバッファ制御部142に出力する。
なお、データ転送状態監視部150が監視した第2のデータ転送部201のDMA転送の状態に応じて第2の転送制御部210に出力する第2の転送制御情報は、第1の実施形態のデータ転送状態監視部130と同様である。また、第1の転送制御情報および第2の転送制御情報には、第1の実施形態のデータ転送状態監視部130が出力する第1の転送制御情報および第2の転送制御情報と同様に、対応する第1のデータ転送部101および第2のデータ転送部201に転送データを出力する順序や、第1のデータ転送部101と第2のデータ転送部201とのタイミングを調停するための制御情報なども含まれる。データ転送状態監視部150は、転送負荷状態監視部151を備えている。
転送負荷状態監視部151は、第1のデータ転送部101がDMA転送を行う際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)に基づいて、第1のデータ転送部101によるDMA転送の負荷を監視する。そして、転送負荷状態監視部151は、監視した第1のデータ転送部101におけるDMA転送の負荷が、予め定めた負荷よりも大きいか否かによって、負荷の分散を行うか否かを判定する。そして、転送負荷状態監視部151は、判定した結果に基づいて、第1のデータ転送部101がDMA転送する際の負荷を分散するための負荷分散指示を、第1のバッファ制御部142に出力する。
この負荷分散指示に応じて、第1のバッファ制御部142は、次に転送する第1の転送データの出力先を第2のデータ転送部201に決定し、第1の転送バッファ部111から読み出した第1の転送データを第2のバッファ制御部212に出力することによって、第1の転送データを第2のデータ転送部201にDMA転送させる。このように、データ転送制御装置20では、第1の転送データのDMA転送を、第1のデータ転送部101と第2のデータ転送部201とによって並列に行わせることによって、第1のデータ転送部101がDMA転送する際の負荷を分散し、第1の転送データのDMA転送のリアルタイム性を確保する。
また、転送負荷状態監視部151は、第2のデータ転送部201がDMA転送を行う際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)や、DRAMのメモリアドレスから得られるバンク情報に基づいて、第2のデータ転送部201によるDMA転送の状態を監視する。
なお、第1のバッファ制御部142が第1のデータ転送部101がDMA転送する際の負荷を分散する際にも、DRAMのバンク衝突が発生しないことが望ましい。従って、第1のバッファ制御部142は、第1の実施形態の第1のバッファ制御部112と同様に、第1の転送データを第1の転送バッファ部111から読み出す順序を変更するなどによって、第2のバッファ制御部212に出力する第1の転送データを選択するようにしてもよい。
次に、データ転送制御装置20の動作について説明する。図5は、本第2の実施形態のデータ転送制御装置20によるデータ転送動作の処理手順を示したフローチャートである。第1の画像データ入力部100から第1の転送データが入力されると、データ転送制御装置20は、ステップS200から、第1のデータ転送部101および第2のデータ転送部201におけるDMA転送の転送負荷の情報(以下「転送負荷情報」という)の収集を開始する。なお、転送負荷情報の収集は、以降の処理手順を実行しているときにも、常に継続して行われる。
そして、転送負荷状態監視部151は、収集した転送負荷情報に基づいて、第1のデータ転送部101におけるDMA転送の負荷状態を監視する。より具体的には、第1のデータ転送部101がリクエスト信号をインターコネクトバス700に出力してから、アクノリッジ信号が返ってくるまでのDMA転送の待ち時間や、第1のデータ転送部101がリクエスト信号を出力した回数などを計測することによって、DMA転送の負荷状態を監視する。
また、転送負荷状態監視部151は、収集した転送負荷情報に基づいて、第2のデータ転送部201によるDMA転送の状態を監視する。より具体的には、第2のデータ転送部201がリクエスト信号をインターコネクトバス700に出力するときに指定するDRAMのメモリアドレスや、アクノリッジ信号が返ってきたときに指定されたDRAMのメモリアドレスに基づいて、第2のデータ転送部201がDMA転送するDRAMのメモリバンクを監視する。
その後、転送負荷状態監視部151は、監視している第1のデータ転送部101によるDMA転送の負荷状態が予め定めた負荷よりも大きい場合(ステップS210の“YES”)、第1のデータ転送部101の負荷の分散を行うと判定し、負荷分散指示を第1のバッファ制御部142に出力する。
なお、転送負荷状態監視部151は、監視している第1のデータ転送部101によるDMA転送の負荷状態が予め定めた負荷よりも大きくない場合(ステップS210の“NO”)には、ステップS200に戻って、第1のデータ転送部101におけるDMA転送の負荷状態の監視を継続する。
転送負荷状態監視部151から負荷分散指示が入力されると、ステップS220において、第1のバッファ制御部142は、第1の転送データの出力先の振り分け、すなわち、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの並列転送を開始する。そして、第1のバッファ制御部142は、第2のデータ転送部201によってDMA転送させる次の第1の転送データを、第2のバッファ制御部212に出力する。
続いて、ステップS230において、第2のバッファ制御部212は、第2のデータ転送部201に出力する転送データの出力順序を変更し、次に第2のデータ転送部201に出力する第2の転送データの代わりに、第1のバッファ制御部142から入力された第1の転送データを、第2のデータ転送部201に出力する。
続いて、ステップS240において、第1のバッファ制御部142は、第1のデータ転送部101に出力する第1の転送データの出力順序を変更、つまり、第2のデータ転送部201によってDMA転送させる次の第1の転送データは出力したものとして、その次に第1のデータ転送部101に出力する第1の転送データを、第1のデータ転送部101に出力する。
これにより、ステップS230で第2のデータ転送部201に出力された第1の転送データと、ステップS240で第1のデータ転送部101に出力された第1の転送データとが、それぞれ並列にDMA転送される。
その後、ステップS250において、転送負荷状態監視部151が、収集した転送負荷情報に基づいて、第2のデータ転送部201による第1の転送データのDMA転送が完了したことを認識すると、ステップS260において、第1のバッファ制御部142は、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの1回目の並列転送を終了する。なお、ステップS240からステップS260までの間に、転送負荷状態監視部151が、第1のデータ転送部101による第1の転送データのDMA転送の完了を、収集した転送負荷情報に基づいて認識することもあると考えられる。
以降、データ転送制御装置20は、図5に示したデータ転送動作のフローチャートの処理手順を繰り返して、第1の画像データ入力部100から入力された全ての第1の転送データのDMA転送を行う。
本第2の実施形態によれば、データ転送状態監視部(データ転送状態監視部150)は、第1のデータ転送部101が第1の転送データを転送する際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)に基づいて、この第1のデータ転送部101における第1の転送データの転送の負荷を監視し、ここで監視した第1の転送データの転送負荷と予め定めた負荷の大きさとを比較することによって負荷の分散を行うか否かを判定し、ここで判定した結果に基づいて第1のデータ転送部101における転送負荷を分散するための負荷分散指示を出力する転送負荷状態監視部(転送負荷状態監視部151)、を備え、第1のバッファ制御部(第1のバッファ制御部142)は、転送負荷状態監視部151から出力された負荷分散指示に基づいて、第1の転送データを、第1のデータ転送部101と第2のバッファ制御部212とに振り分けて出力する、データ転送制御装置(データ転送制御装置20)が構成される。
このようにして、データ転送制御装置20では、第1のデータ転送部101におけるDMA転送の負荷状態に基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分けて、それぞれ並列にDMA転送する。これにより、データ転送制御装置20でも、第1の実施形態のデータ転送制御装置10と同様に、第1の画像データ入力部100が出力した第1の転送データをDMA転送する際のバス帯域が確保されて、DMA転送が円滑に行われ、第1の転送データのDMA転送のリアルタイム性を確保することができる。
なお、データ転送制御装置20でも、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101と第2のデータ転送部201とによる転送データのDMA転送においてDRAMのバンク衝突が発生しないように、第1のバッファ制御部142が第2のバッファ制御部212に振り分ける第1の転送データを決定することが望ましい。従って、ステップS220において第1のバッファ制御部142が第2のバッファ制御部212に出力する第1の転送データは、上述したように、次の第1の転送データに限定されるものではない。
<第3の実施形態>
次に、本実施形態のデータ転送制御装置10のさらに別の構成および動作について説明する。なお、以下の説明においては、本実施形態のデータ転送制御装置10を、第1の実施形態のデータ転送制御装置10と区別するため、本第3の実施形態のデータ転送制御装置を、「データ転送制御装置30」という。そして、データ転送制御装置30を備えたデータ処理装置を、「データ処理装置3」という。図6は、本第3の実施形態におけるデータ転送制御装置30を備えたデータ処理装置3の構成の一例を示したブロック図である。図6には、DMA転送する第1の転送データを格納する第1の転送バッファ部の記憶容量の残量(以下、「バッファ残量」という)に基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分ける制御を行うデータ転送制御装置30の構成を示している。
図6に示したデータ処理装置3は、図2に示したデータ処理装置1内のデータ転送制御装置10がデータ転送制御装置30に代わった構成であり、このデータ転送制御装置30の構成要素をより詳細に示している。なお、図6に示したデータ処理装置3内の構成要素およびデータ転送制御装置30内の構成要素には、図1および図2に示したデータ処理装置1内の構成要素およびデータ転送制御装置10内の構成要素と同様の構成要素も含まれている。従って、図6に示したデータ処理装置3およびデータ転送制御装置30の構成要素において、図1および図2に示したデータ処理装置1およびデータ転送制御装置10の構成要素と同様の構成要素には、同一の符号を付与し、それぞれの構成要素に関する詳細な説明は省略する。
データ転送制御装置30は、第1の実施形態のデータ転送制御装置10と同様に、データ処理装置3が第1のデータ転送部101および第2のデータ転送部201によってDRAMにDMA転送する転送データを制御する。従って、データ処理装置3でも、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101および第2のデータ転送部201のそれぞれがDMA転送する転送データが、データ転送制御装置30を介して入力される。なお、以下の説明においても、第1の実施形態のデータ処理装置1と同様に、第1のデータ転送部101の方が、第2のデータ転送部201よりも優先度が高いイニシエータであるものとして説明を行う。
データ転送制御装置30は、第1のデータ転送部101がDMA転送する際のメモリアクセス情報に基づいて、データ転送制御装置30自身に備えた、DMA転送する第1の転送データを格納する第1の転送バッファ部のバッファ残量を監視し、監視したバッファ残量に応じて、第1のデータ転送部101または第2のデータ転送部201のいずれのデータ転送部によって転送データをDMA転送するかを決定する。そして、データ転送制御装置30は、第1の実施形態のデータ転送制御装置10と同様に、決定した第1のデータ転送部101または第2のデータ転送部201のいずれかのデータ転送部に転送データを出力して、DMA転送を行わせる。データ転送制御装置30は、第1の転送制御部160と、第2の転送制御部210と、データ転送状態監視部170と、を備えている。
第1の転送制御部160は、第1の実施形態の第1の転送制御部110と同様に、第1の画像データ入力部100から入力されたDMA転送する第1の転送データを、データ転送状態監視部170から入力された第1の転送制御情報に基づいて、第1のデータ転送部101と第2のデータ転送部201とに振り分ける。第1の転送制御部160は、第1の転送バッファ部111と第1のバッファ制御部162とを備えている。
第1の転送バッファ部111は、第1の画像データ入力部100から出力された第1の転送データを格納し、第1のバッファ制御部162からの制御に応じて、格納した第1の転送データを、第1のバッファ制御部162に出力する。
第1のバッファ制御部162は、データ転送状態監視部170から入力された第1の転送制御情報に含まれる負荷分散指示に応じて、次に転送する第1の転送データの出力先を、第1のデータ転送部101または第2の転送制御部210内の第2のバッファ制御部212のいずれか一方に決定し、第1の転送バッファ部111に格納されている第1の転送データを読み出して、決定した出力先に出力する。つまり、第1のバッファ制御部162は、データ転送状態監視部170から入力された負荷分散指示に応じて、第1の実施形態の第1のバッファ制御部112と同様に、第1の転送バッファ部111から読み出した第1の転送データを、第1のデータ転送部101または第2のバッファ制御部212のいずれか一方に振り分ける。
そして、第2のバッファ制御部212は、第1のバッファ制御部162から第1の転送データが入力された場合には、第1のバッファ制御部162から入力された第1の転送データを、第2のバッファ制御部212に出力する。これにより、第1の画像データ入力部100が出力した第1の転送データは、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101に加えて、第2のデータ転送部201によってもDMA転送される。
データ転送状態監視部170は、第1の実施形態のデータ転送状態監視部130と同様に、第1のデータ転送部101および第2のデータ転送部201のそれぞれにおいて行われているDMA転送の状態を監視する。このとき、データ転送状態監視部170は、第1のデータ転送部101がDMA転送する際の制御信号に基づいて、第1の転送バッファ部111のバッファ残量を監視する。そして、データ転送状態監視部170は、監視した第1の転送バッファ部111のバッファ残量に応じた負荷分散指示を、第1の転送制御情報として第1の転送制御部160内の第1のバッファ制御部162に出力する。
なお、データ転送状態監視部170が監視した第2のデータ転送部201のDMA転送の状態に応じて第2の転送制御部210に出力する第2の転送制御情報は、第1の実施形態のデータ転送状態監視部130と同様である。また、第1の転送制御情報および第2の転送制御情報には、第1の実施形態のデータ転送状態監視部130が出力する第1の転送制御情報および第2の転送制御情報と同様に、対応する第1のデータ転送部101および第2のデータ転送部201に転送データを出力する順序や、第1のデータ転送部101と第2のデータ転送部201とのタイミングを調停するための制御情報なども含まれる。データ転送状態監視部170は、転送バッファ残量監視部171を備えている。
転送バッファ残量監視部171は、第1のデータ転送部101がDMA転送を行う際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)に基づいて、第1の転送バッファ部111のバッファ残量を監視する。そして、転送バッファ残量監視部171は、監視した第1の転送バッファ部111のバッファ残量が、予め定めた記憶容量よりも少ないか否かによって、負荷の分散を行うか否かを判定する。そして、転送バッファ残量監視部171は、判定した結果に基づいて、第1のデータ転送部101がDMA転送する際の負荷を分散するための負荷分散指示を、第1のバッファ制御部162に出力する。
この負荷分散指示に応じて、第1のバッファ制御部162は、次に転送する第1の転送データの出力先を第2のデータ転送部201に決定し、第1の転送バッファ部111から読み出した第1の転送データを第2のバッファ制御部212に出力することによって、第1の転送データを第2のデータ転送部201にDMA転送させる。このように、データ転送制御装置30でも、第1の転送データのDMA転送を、第1のデータ転送部101と第2のデータ転送部201とによって並列に行わせることによって、第1のデータ転送部101がDMA転送する際の負荷を分散し、第1の転送データのDMA転送のリアルタイム性を確保する。
なお、第1のバッファ制御部162が第1のデータ転送部101がDMA転送する際の負荷を分散する際にも、DRAMのバンク衝突が発生しないことが望ましい。従って、第1のバッファ制御部162は、第1の実施形態の第1のバッファ制御部112と同様に、第1の転送データを第1の転送バッファ部111から読み出す順序を変更するなどによって、第2のバッファ制御部212に出力する第1の転送データを選択するようにしてもよい。
また、転送バッファ残量監視部171は、第1のデータ転送部101がDMA転送を行う際の制御信号以外の情報に基づいて、第1の転送バッファ部111のバッファ残量を監視する構成にすることもできる。例えば、第1の画像データ入力部100が第1の転送バッファ部111に第1の転送データを格納(書き込む)際のライト信号と、第1のバッファ制御部162が第1の転送バッファ部111から第1の転送データを読み出す際のリード信号とに基づいて、第1の転送バッファ部111のバッファ残量を監視する構成にすることもできる。
次に、データ転送制御装置30の動作について説明する。図7は、本第3の実施形態のデータ転送制御装置30によるデータ転送動作の処理手順を示したフローチャートである。第1の画像データ入力部100から第1の転送データが入力されると、データ転送制御装置30に備えたデータ転送状態監視部170内の転送バッファ残量監視部171は、第1のデータ転送部101がDMA転送を行う際の制御信号の情報に基づいて、第1の転送バッファ部111のバッファ残量を監視する。より具体的には、第1のデータ転送部101がリクエスト信号をインターコネクトバス700に出力した回数と、アクノリッジ信号が返ってきた回数との差分によって、第1の転送バッファ部111に記憶され、DMA転送されていない第1の転送データのデータ量を算出する。なお、第1のデータ転送部101が1回のDMA転送によってDRAMに転送するデータ量は一定であるものとする。そして、第1の転送バッファ部111の記憶容量から、算出した第1の転送データのデータ量を減算することによって、第1の転送バッファ部111のバッファ残量を監視する。なお、第1の転送バッファ部111のバッファ残量の監視は、以降の処理手順を実行しているときにも、常に継続して行われる。
その後、転送バッファ残量監視部171は、監視している第1の転送バッファ部111のバッファ残量が予め定めた記憶容量よりも少ない場合(ステップS300の“YES”)、すなわち、第1の転送バッファ部111の記憶容量の残量不足を検出した場合、第1のデータ転送部101の負荷の分散を行うと判定し、負荷分散指示を第1のバッファ制御部162に出力する。
なお、転送バッファ残量監視部171は、監視している第1の転送バッファ部111のバッファ残量が予め定めた記憶容量よりも少なくない場合(ステップS300の“NO”)、すなわち、第1の転送バッファ部111の記憶容量が十分にある場合には、ステップS300における第1の転送バッファ部111のバッファ残量の監視を継続する。
転送バッファ残量監視部171から負荷分散指示が入力されると、ステップS310において、第1のバッファ制御部162は、第1の転送データの出力先の振り分け、すなわち、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの並列転送を開始する。
なお、第1のバッファ制御部162における第1の転送データの並列転送の処理手順は、第1の実施形態の第1のバッファ制御部112と同様における第1の転送データの並列転送の処理手順と同様である。より具体的には、図3に示したデータ転送制御装置10によるデータ転送動作の処理手順におけるステップS120〜ステップS150と同様である。従って、第1のバッファ制御部162における第1の転送データの並列転送の処理手順の詳細な説明は省略する。
その後、第1のバッファ制御部162は、第1の転送バッファ部111の記憶容量の残量不足が解消された場合(ステップS320の“YES”)、すなわち、転送バッファ残量監視部171からの負荷分散指示が解除された場合、ステップS330において、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの1回の並列転送を終了する。
なお、第1のバッファ制御部162は、第1の転送バッファ部111の記憶容量の残量不足が解消されていない場合(ステップS320の“NO”)、すなわち、転送バッファ残量監視部171からの負荷分散指示が入力された状態である場合には、ステップS310に戻って、次の第1の転送データの第2のデータ転送部201による並列転送を、第1の転送バッファ部111の記憶容量の残量不足が解消されるまで繰り返す。
以降、データ転送制御装置30は、図7に示したデータ転送動作のフローチャートの処理手順を繰り返して、第1の画像データ入力部100から入力された全ての第1の転送データのDMA転送を行う。
本第3の実施形態によれば、データ転送状態監視部(データ転送状態監視部170)は、第1のデータ転送部101が第1の転送データを転送する際の制御信号(例えば、リクエスト信号やアクノリッジ信号など)に基づいて、第1の転送バッファ部111の記憶容量の残量を監視し、ここで監視した記憶容量の残量に応じて、第1のデータ転送部101における転送負荷を分散するための負荷分散指示を出力する転送バッファ残量監視部(転送バッファ残量監視部171)、を備え、第1のバッファ制御部(第1のバッファ制御部162)は、転送バッファ残量監視部171から出力された負荷分散指示に基づいて、第1の転送データを、第1のデータ転送部101と第2のバッファ制御部212とに振り分けて出力する、データ転送制御装置(データ転送制御装置30)が構成される。
このようにして、データ転送制御装置30では、第1の転送データをDMA転送する際に使用する第1の転送バッファ部111のバッファ残量に基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分けて、それぞれ並列にDMA転送する。これにより、データ転送制御装置30でも、第1の実施形態のデータ転送制御装置10と同様に、第1の画像データ入力部100が出力した第1の転送データをDMA転送する際のバス帯域が確保されて、DMA転送が円滑に行われ、第1の転送データのDMA転送のリアルタイム性を確保することができる。
なお、データ転送制御装置30でも、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101と第2のデータ転送部201とによる転送データのDMA転送においてDRAMのバンク衝突が発生しないように、第1のバッファ制御部162が第2のバッファ制御部212に振り分ける第1の転送データを決定することが望ましい。従って、第1の転送バッファ部111の記憶容量の残量不足が解消されていない場合に、ステップS310において第1のバッファ制御部162が第2のバッファ制御部212に出力する第1の転送データは、上述したように、次の第1の転送データに限定されるものではない。
<第4の実施形態>
次に、本実施形態のデータ転送制御装置10のさらに別の構成および動作について説明する。なお、以下の説明においては、本実施形態のデータ転送制御装置10を、第1の実施形態のデータ転送制御装置10と区別するため、本第4の実施形態のデータ転送制御装置を、「データ転送制御装置40」という。そして、データ転送制御装置40を備えたデータ処理装置を、「データ処理装置4」という。図8は、本第4の実施形態におけるデータ転送制御装置40を備えたデータ処理装置4の構成の一例を示したブロック図である。図8には、データ処理装置4の動作モードに応じて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分ける制御を行うデータ転送制御装置40の構成を示している。
なお、データ処理装置4の動作モードは、データ処理装置4全体を制御する、例えば、CPU(Central Processing Unit)などの不図示の制御部によって設定される。データ処理装置4の動作モードには、例えば、静止画像と動画像とを同時に撮影する動作モードや、静止画像を連続で撮影する動作モード、動画像のみを撮影する動作モードなどがある。
図8に示したデータ処理装置4は、図2に示したデータ処理装置1内のデータ転送制御装置10がデータ転送制御装置40に代わった構成であり、このデータ転送制御装置40の構成要素をより詳細に示している。なお、図8に示したデータ処理装置4内の構成要素およびデータ転送制御装置40内の構成要素には、図1および図2に示したデータ処理装置1内の構成要素およびデータ転送制御装置10内の構成要素と同様の構成要素も含まれている。従って、図8に示したデータ処理装置4およびデータ転送制御装置40の構成要素において、図1および図2に示したデータ処理装置1およびデータ転送制御装置10の構成要素と同様の構成要素には、同一の符号を付与し、それぞれの構成要素に関する詳細な説明は省略する。
データ転送制御装置40は、第1の実施形態のデータ転送制御装置10と同様に、データ処理装置4が第1のデータ転送部101および第2のデータ転送部201によってDRAMにDMA転送する転送データを制御する。従って、データ処理装置4でも、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101および第2のデータ転送部201のそれぞれがDMA転送する転送データが、データ転送制御装置40を介して入力される。なお、以下の説明においても、第1の実施形態のデータ処理装置1と同様に、第1のデータ転送部101の方が、第2のデータ転送部201よりも優先度が高いイニシエータであるものとして説明を行う。
データ転送制御装置40は、設定された動作モードに応じて、第1のデータ転送部101または第2のデータ転送部201のいずれのデータ転送部によって転送データをDMA転送するかを決定する。そして、データ転送制御装置40は、第1の実施形態のデータ転送制御装置10と同様に、決定した第1のデータ転送部101または第2のデータ転送部201のいずれかのデータ転送部に転送データを出力して、DMA転送を行わせる。データ転送制御装置40は、第1の転送制御部180と、第2の転送制御部210と、データ転送状態監視部190と、を備えている。
第1の転送制御部180は、第1の実施形態の第1の転送制御部110と同様に、第1の画像データ入力部100から入力されたDMA転送する第1の転送データを、データ転送状態監視部190から入力された第1の転送制御情報に基づいて、第1のデータ転送部101と第2のデータ転送部201とに振り分ける。第1の転送制御部180は、第1の転送バッファ部111と第1のバッファ制御部182とを備えている。
第1の転送バッファ部111は、第1の画像データ入力部100から出力された第1の転送データを格納し、第1のバッファ制御部182からの制御に応じて、格納した第1の転送データを、第1のバッファ制御部182に出力する。
第1のバッファ制御部182は、データ転送状態監視部190から入力された第1の転送制御情報に含まれる経路選択指示に応じて、転送する第1の転送データの出力先を、第1のデータ転送部101または第2の転送制御部210内の第2のバッファ制御部212のいずれか一方に決定し、第1の転送バッファ部111に格納されている第1の転送データを読み出して、決定した出力先に出力する。つまり、第1のバッファ制御部182は、データ転送状態監視部190から入力された経路選択指示に応じて、第1の実施形態の第1のバッファ制御部112と同様に、第1の転送バッファ部111から読み出した第1の転送データを、第1のデータ転送部101または第2のバッファ制御部212のいずれか一方に振り分ける。
そして、第2のバッファ制御部212は、第1のバッファ制御部182から第1の転送データが入力された場合には、第1のバッファ制御部182から入力された第1の転送データを、第2のバッファ制御部212に出力する。これにより、第1の画像データ入力部100が出力した第1の転送データは、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101に加えて、第2のデータ転送部201によってもDMA転送される。
データ転送状態監視部190は、第1の実施形態のデータ転送状態監視部130と同様に、第1のデータ転送部101および第2のデータ転送部201のそれぞれにおいて行われているDMA転送の状態を監視する。また、データ転送状態監視部190は、設定された動作モードに応じて、第1の転送データをDRAMに転送する経路を指示する経路選択指示を、第1の転送制御情報として第1の転送制御部180内の第1のバッファ制御部182に出力する。
なお、データ転送状態監視部190が監視した第2のデータ転送部201のDMA転送の状態に応じて第2の転送制御部210に出力する第2の転送制御情報は、第1の実施形態のデータ転送状態監視部130と同様である。また、第1の転送制御情報および第2の転送制御情報には、第1の実施形態のデータ転送状態監視部130が出力する第1の転送制御情報および第2の転送制御情報と同様に、対応する第1のデータ転送部101および第2のデータ転送部201に転送データを出力する順序や、第1のデータ転送部101と第2のデータ転送部201とのタイミングを調停するための制御情報なども含まれる。データ転送状態監視部190は、モード設定部191を備えている。
モード設定部191は、例えば、不図示のCPUによって設定された動作モードに応じて、第1の転送データをDRAMにDMA転送する際の第1の転送データの経路を決定する。そして、モード設定部191は、決定した結果に基づいて、第1の転送データをDMA転送する経路を表す経路選択指示を、第1のバッファ制御部182に出力する。例えば、静止画像を連続で撮影する動作モードが設定されている場合には、奇数枚目の静止画像の第1の転送データを第1のデータ転送部101がDMA転送し、偶数枚目の静止画像の第1の転送データを第2のデータ転送部201がDMA転送するように指示する並列転送の経路選択指示を、第1のバッファ制御部182に出力する。また、例えば、第1の転送データをDMA転送するDRAMを2つ備えている場合には、静止画像の奇数行の第1の転送データを第1のデータ転送部101が一方のDRAMにDMA転送し、静止画像の偶数行の第1の転送データを第2のデータ転送部201が他方のDRAMにDMA転送するように指示する並列転送の経路選択指示を、第1のバッファ制御部182に出力する。
この並列転送の経路選択指示に応じて、第1のバッファ制御部182は、転送する第1の転送データ毎に、第1の転送データの出力先を第1のデータ転送部101または第2のデータ転送部201のいずれか一方に決定し、決定した出力先に第1の転送バッファ部111から読み出した第1の転送データを出力することによって、第1の転送データを第1のデータ転送部101と第2のデータ転送部201とで並列にDMA転送させる。このように、データ転送制御装置40でも、第1の転送データのDMA転送を、第1のデータ転送部101と第2のデータ転送部201とによって並列に行わせることによって、第1のデータ転送部101がDMA転送する際の負荷を分散し、第1の転送データのDMA転送のリアルタイム性を確保する。
なお、第1のバッファ制御部182が第1のデータ転送部101がDMA転送する際の負荷を分散する際にも、DRAMのバンク衝突が発生しないことが望ましい。従って、第1のバッファ制御部182は、第1の実施形態の第1のバッファ制御部112と同様に、第1の転送データを第1の転送バッファ部111から読み出す順序を変更するなどによって、第2のバッファ制御部212に出力する第1の転送データを選択するようにしてもよい。
次に、データ転送制御装置40の動作について説明する。図9は、本第4の実施形態のデータ転送制御装置40によるデータ転送動作の処理手順を示したフローチャートである。モード設定部191に動作モードが設定されると、ステップS400において、モード設定部191は、設定された動作モードが、第1の転送データの並列転送を行う動作モードであるか否かを判定する。なお、モード設定部191における動作モードの判定は、以降の処理手順を実行しているときにも、常に継続して行われる。
ステップS400における判定において、設定された動作モードが、第1の転送データの並列転送を行う動作モードでない場合(ステップS400の“NO”)、モード設定部191は、第1の転送データを通常の経路、すなわち、第1の転送データを第1のデータ転送部101のみでDMA転送する経路選択指示を第1のバッファ制御部182に出力し、処理を終了する。その後、第1の画像データ入力部100から第1の転送データが入力されると、第1のバッファ制御部182は、第1の転送バッファ部111から第1の転送データを読み出し、読み出した第1の転送データを第1のデータ転送部101によってDMA転送させる。
一方、ステップS400における判定において、設定された動作モードが、第1の転送データの並列転送を行う動作モードである場合(ステップS400の“YES”)、モード設定部191は、第1の転送データを第1のデータ転送部101と第2のデータ転送部201とによってDMA転送する並列転送の経路選択指示を、第1のバッファ制御部182に出力する。
モード設定部191から並列転送の経路選択指示が入力され、第1の画像データ入力部100から第1の転送データが入力されると、ステップS410において、第1のバッファ制御部182は、第1の転送データの出力先の振り分け、すなわち、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの並列転送を開始する。
なお、第1のバッファ制御部182における第1の転送データの並列転送の処理手順は、図3に示した第1の実施形態のデータ転送制御装置10における第1のバッファ制御部112によるデータ転送動作の処理手順におけるステップS120〜ステップS150と同様である。従って、第1のバッファ制御部182における第1の転送データの並列転送の処理手順の詳細な説明は省略する。
その後、第1のバッファ制御部182は、第1の転送データの並列転送を行う動作モードが解除された場合(ステップS420の“YES”)、すなわち、モード設定部191からの並列転送の経路選択指示が解除された場合、ステップS430において、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの並列転送を終了する。
なお、第1のバッファ制御部182は、第1の転送データの並列転送を行う動作モードが解除されていない場合(ステップS420の“NO”)、すなわち、モード設定部191からの並列転送の経路選択指示が入力された状態である場合には、ステップS410に戻って、第1の転送データの第2のデータ転送部201による並列転送を、第1の転送データの並列転送を行う動作モードが解除されるまで繰り返す。
以降、データ転送制御装置40は、図9に示したデータ転送動作のフローチャートの処理手順を繰り返して、第1の画像データ入力部100から入力された全ての第1の転送データのDMA転送を行う。
本第4の実施形態によれば、データ転送状態監視部(データ転送状態監視部190)は、設定された動作モードに応じて、第1の転送データを転送する際の第1の転送データの経路を決定し、ここで決定した結果に基づいて第1の転送データを転送する経路を表す経路選択指示を出力するモード設定部(モード設定部191)、を備え、第1のバッファ制御部(第1のバッファ制御部182)は、モード設定部191から出力された経路選択指示に基づいて、第1の転送データを、第1のデータ転送部101と第2のバッファ制御部212とに振り分けて出力する、データ転送制御装置(データ転送制御装置40)が構成される。
このようにして、データ転送制御装置40では、モード設定部191に設定された動作モードに応じて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分けて、それぞれ並列にDMA転送する。これにより、データ転送制御装置40でも、第1の実施形態のデータ転送制御装置10と同様に、第1の画像データ入力部100が出力した第1の転送データをDMA転送する際のバス帯域が確保されて、DMA転送が円滑に行われ、第1の転送データのDMA転送のリアルタイム性を確保することができる。
なお、データ転送制御装置40でも、第1の実施形態のデータ転送制御装置10と同様に、第1のデータ転送部101と第2のデータ転送部201とによる転送データのDMA転送においてDRAMのバンク衝突が発生しないように、第1のバッファ制御部182が第2のバッファ制御部212に振り分ける第1の転送データを決定することが望ましい。
上記に述べたとおり、本発明のデータ転送制御装置では、転送データをDMA転送する際の様々な条件(より具体的には、DMA転送の待ち時間およびDRAMへのアクセス履歴、DMA転送の負荷状態、第1の転送バッファ部111のバッファ残量、データ処理装置の動作モードなど)に応じて、第1の転送データのDMA転送を、第1のデータ転送部101と第2のデータ転送部201とによって並列に行わせることができる。これにより、第1の画像データ入力部100が出力した第1の転送データをDMA転送する際のバス帯域を確保し、第1の転送データのDMA転送のリアルタイム性を確保することができる。
なお、本実施形態においては、第1の実施形態〜第4の実施形態において、転送データをDMA転送する際の異なるそれぞれの条件に対応した構成および動作について説明した。しかし、転送データをDMA転送する際の複数の条件の組み合わせに対応する構成および動作にすることもできる。これは、データ転送制御装置を、複数の条件の組み合わせに対応する第1の実施形態〜第4の実施形態で示した構成、動作、または機能を同時に備える構成にすることによって実現することができる。例えば、第1の実施形態〜第4の実施形態で示した構成を全て備えたデータ転送制御装置を構成することによって、DMA転送の待ち時間およびDRAMへのアクセス履歴、DMA転送の負荷状態、第1の転送バッファ部111のバッファ残量、データ処理装置の動作モードなどの全ての条件に応じた動作を行うデータ転送制御装置を実現することができる。
なお、第1の実施形態〜第4の実施形態においては、画像データ入力部から入力された転送データを転送バッファ部に一旦格納した後に、バッファ制御部が読み出してそれぞれのデータ転送部に出力する構成、つまり、DRAMに転送する転送データが、転送バッファ部、バッファ制御部の順番に転送される配置の転送制御部について説明した。例えば、第1の実施形態における第1の転送制御部110では、第1の転送データが、第1の転送バッファ部111、第1のバッファ制御部112の順番で転送される配置について説明した。しかし、転送制御部内の転送バッファ部とバッファ制御部との配置は、第1の実施形態〜第4の実施形態において示した配置の順番に限定されるものではない。
<第3の実施形態の変形例>
ここで、転送制御部内の転送バッファ部とバッファ制御部との配置が異なる場合の一例として、第3の実施形態において示した、第1の転送バッファ部111のバッファ残量に基づいて第1の転送データを並列転送するデータ転送制御装置30の変形例の構成および動作について説明する。なお、以下の説明においては、本変形例のデータ転送制御装置を、第3の実施形態のデータ転送制御装置30と区別するため、本変形例のデータ転送制御装置を、「データ転送制御装置50」という。そして、データ転送制御装置50を備えたデータ処理装置を、「データ処理装置5」という。図10は、本第3の実施形態の変形例のデータ転送制御装置50を備えたデータ処理装置5の構成の一例を示したブロック図である。図10に示したデータ転送制御装置50も、第3の実施形態のデータ転送制御装置30と同様に、DMA転送する第1の転送データを格納する第1の転送バッファ部111のバッファ残量に基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分ける制御を行う構成である。
図10に示したデータ処理装置5は、図6に示したデータ処理装置3内のデータ転送制御装置30がデータ転送制御装置50に代わった構成であり、このデータ転送制御装置50の構成要素をより詳細に示している。なお、図10に示したデータ処理装置5内の構成要素およびデータ転送制御装置50内の構成要素には、図6に示したデータ処理装置3内の構成要素およびデータ転送制御装置30内の構成要素と同様の構成要素も含まれている。従って、図10に示したデータ処理装置5およびデータ転送制御装置50の構成要素において、図6に示したデータ処理装置3およびデータ転送制御装置30の構成要素と同様の構成要素には、同一の符号を付与し、それぞれの構成要素に関する詳細な説明は省略する。
データ転送制御装置50も、第3の実施形態のデータ転送制御装置30と同様に、データ処理装置5が第1のデータ転送部101および第2のデータ転送部201によってDRAMにDMA転送する転送データを制御する。従って、データ処理装置5でも、第3の実施形態のデータ転送制御装置30と同様に、第1のデータ転送部101および第2のデータ転送部201のそれぞれがDMA転送する転送データが、データ転送制御装置50を介して入力される。なお、以下の説明においても、第3の実施形態のデータ処理装置3と同様に、第1のデータ転送部101の方が、第2のデータ転送部201よりも優先度が高いイニシエータであるものとして説明を行う。
データ転送制御装置50は、第3の実施形態のデータ転送制御装置30と同様に、第1のデータ転送部101がDMA転送する際のメモリアクセス情報に基づいて、データ転送制御装置50自身に備えた、DMA転送する第1の転送データを格納する第1の転送バッファ部のバッファ残量を監視し、監視したバッファ残量に応じて、第1のデータ転送部101または第2のデータ転送部201のいずれのデータ転送部によって転送データをDMA転送するかを決定する。そして、データ転送制御装置50は、第3の実施形態のデータ転送制御装置30と同様に、決定した第1のデータ転送部101または第2のデータ転送部201のいずれかのデータ転送部に転送データを出力して、DMA転送を行わせる。データ転送制御装置50は、第1の転送制御部260と、第2の転送制御部220と、データ転送状態監視部170と、を備えている。
第1の転送制御部260は、第3の実施形態の第1の転送制御部160と同様に、第1の画像データ入力部100から入力されたDMA転送する第1の転送データを、データ転送状態監視部170から入力された第1の転送制御情報に基づいて、第1のデータ転送部101と第2のデータ転送部201とに振り分ける。第1の転送制御部260は、第1の転送バッファ部261と第1のバッファ制御部262とを備えている。
第2の転送制御部220は、第3の実施形態の第2の転送制御部210と同様に、第2の画像データ入力部200から入力されたDMA転送する第2の転送データ、または第1の転送制御部260によって振り分けられた、第1の画像データ入力部100がDMA転送する第1の転送データのいずれかの転送データを、データ転送状態監視部170から入力された第2の転送制御情報に基づいて、第2のデータ転送部201に出力する。第2の転送制御部220は、第2の転送バッファ部221と第2のバッファ制御部222とを備えている。
なお、第1の転送制御部260に備えた第1の転送バッファ部261と第1のバッファ制御部262とのそれぞれは、第3の実施形態の第1の転送制御部160に備えた第1の転送バッファ部111と第1のバッファ制御部162とのそれぞれと同様の機能を持っている。また、第2の転送制御部220に備えた第2の転送バッファ部221と第2のバッファ制御部222とのそれぞれは、第3の実施形態の第2の転送制御部210に備えた第2の転送バッファ部211と第2のバッファ制御部212とのそれぞれと同様の機能を持っている。
ただし、図6に示した第1の転送制御部160と図10に示した第1の転送制御部260とを比べてわかるように、第1の転送制御部260内の第1の転送バッファ部261と第1のバッファ制御部262との配置は、第1の転送制御部160とは逆の配置になっている。また、図6に示した第2の転送制御部210と図10に示した第2の転送制御部220とを比べてわかるように、第2の転送制御部220内の第2の転送バッファ部221と第2のバッファ制御部222との配置も、第2の転送制御部210とは逆の配置になっている。
第1のバッファ制御部262は、データ転送状態監視部170から入力された第1の転送制御情報に含まれる負荷分散指示に応じて、第1の転送データの出力先を、第1の転送バッファ部261または第2の転送制御部220内の第2のバッファ制御部212のいずれか一方に決定し、第1の画像データ入力部100から入力された第1の転送データを、決定した出力先に出力する。つまり、第1のバッファ制御部262は、データ転送状態監視部170から入力された負荷分散指示に応じて、第1の画像データ入力部100から出力された第1の転送データが第1のバッファ制御部262自身に入力された段階で分岐させ、第1のデータ転送部101または第2のバッファ制御部212のいずれか一方に振り分ける。
第1の転送バッファ部261は、第1のバッファ制御部262から入力された第1の転送データを一旦格納し、その後、格納した第1の転送データを第1のデータ転送部101に出力する。これにより、第1のバッファ制御部262によって第1の転送バッファ部261に振り分けられた第1の転送データが、第1のデータ転送部101によってDMA転送される。
第2のバッファ制御部222は、データ転送状態監視部170から入力された第2の転送制御情報に基づいて、第2の画像データ入力部200から入力された第2の転送データを、第2の転送バッファ部221に出力する。なお、第2のバッファ制御部222は、第1のバッファ制御部262から第1の転送データが入力された場合には、第1のバッファ制御部262から入力された第1の転送データを、第2の転送バッファ部221に出力する。
第2の転送バッファ部221は、第2のバッファ制御部222から入力された転送データを一旦格納し、その後、格納した転送データを第2のデータ転送部201に出力する。これにより、第2の画像データ入力部200から出力された第2の転送データ、または第1のバッファ制御部262によって第2のバッファ制御部222に振り分けられた第1の転送データが、第2のデータ転送部201によってDMA転送される。
このような構成によって、データ転送制御装置50は、第1の画像データ入力部100が出力した第1の転送データのDMA転送を、第1のデータ転送部101と第2のデータ転送部201とによって並列に行わせる。これにより、データ転送制御装置50でも、第3の実施形態のデータ転送制御装置30と同様に、第1のデータ転送部101がDMA転送する際の負荷を分散し、第1の転送データのDMA転送のリアルタイム性を確保する。
なお、第1のバッファ制御部262が第1のデータ転送部101がDMA転送する際の負荷を分散する際にも、DRAMのバンク衝突が発生しないことが望ましい。従って、第1のバッファ制御部262は、第1の画像データ入力部100から入力された第1の転送データの出力先を変更するようにしてもよい。
次に、データ転送制御装置50の動作について説明する。図11は、本第3の実施形態の変形例のデータ転送制御装置50によるデータ転送動作の処理手順を示したフローチャートである。データ転送制御装置50が動作を開始すると、データ転送制御装置50に備えたデータ転送状態監視部170内の転送バッファ残量監視部171は、第1のデータ転送部101がDMA転送を行う際の制御信号の情報に基づいて、第1の転送バッファ部261のバッファ残量を監視する。なお、第1の転送バッファ部261のバッファ残量の監視は、以降の処理手順を実行しているときにも、常に継続して行われる。
その後、転送バッファ残量監視部171は、監視している第1の転送バッファ部261のバッファ残量が予め定めた記憶容量よりも少ない場合(ステップS500の“YES”)、すなわち、第1の転送バッファ部261の記憶容量の残量不足を検出した場合、第1のデータ転送部101の負荷の分散を行うと判定し、負荷分散指示を第1のバッファ制御部262に出力する。
なお、転送バッファ残量監視部171は、監視している第1の転送バッファ部261のバッファ残量が予め定めた記憶容量よりも少なくない場合(ステップS500の“NO”)、すなわち、第1の転送バッファ部261の記憶容量が十分にある場合には、ステップS500における第1の転送バッファ部261のバッファ残量の監視を継続する。
転送バッファ残量監視部171から負荷分散指示が入力されると、ステップS510において、第1のバッファ制御部262は、第1の転送データが第1の画像データ入力部100から入力された段階で分岐させ、第1のデータ転送部101または第2のバッファ制御部212のいずれか一方に出力する。すなわち、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの並列転送を開始する。これにより、第1の画像データ入力部100から入力された第1の転送データが、第1の転送バッファ部261または第2の転送バッファ部221のいずれか一方に一旦格納され、その後、第1のデータ転送部101または第2のデータ転送部201によってDMA転送される。
その後、第1のバッファ制御部262は、第1の転送バッファ部261の記憶容量の残量不足が解消された場合(ステップS520の“YES”)、すなわち、転送バッファ残量監視部171からの負荷分散指示が解除された場合、ステップS530において、第1のデータ転送部101と第2のデータ転送部201とによる第1の転送データの1回の並列転送を終了する。
なお、第1のバッファ制御部262は、第1の転送バッファ部261の記憶容量の残量不足が解消されていない場合(ステップS520の“NO”)、すなわち、転送バッファ残量監視部171からの負荷分散指示が入力された状態である場合には、ステップS510に戻って、第1の画像データ入力部100から入力された第1の転送データの第2のデータ転送部201による並列転送を、第1の転送バッファ部261の記憶容量の残量不足が解消されるまで繰り返す。
以降、データ転送制御装置50は、図11に示したデータ転送動作のフローチャートの処理手順を繰り返して、第1の画像データ入力部100からの第1の転送データの入力が終了するまで、第1の転送データのDMA転送を行う。
なお、データ転送制御装置50でも、第1のデータ転送部101と第2のデータ転送部201とによる転送データのDMA転送においてDRAMのバンク衝突が発生しないようにDMA転送することが望ましい。この場合、第1の転送バッファ部261と第2の転送バッファ部221とのそれぞれが、対応するデータ転送部に転送データを出力する際に、それぞれのデータ転送部がDRAMの異なるメモリバンクにDMA転送するように、転送データの出力順序を並び替えていることが考えられる。このため、ステップS510において第1のバッファ制御部262が、入力された第1の転送データを第2のバッファ制御部222に分岐させる際に、DRAMのバンク衝突が発生しないように、第1の転送データを第2のバッファ制御部222に分岐させるタイミングを変更する構成にしてもよい。
このように、データ転送制御装置50でも、第1の転送データをDMA転送する際に使用する第1の転送バッファ部261のバッファ残量に基づいて、第1の画像データ入力部100から入力された第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに振り分けて、それぞれ並列にDMA転送することができる。これにより、データ転送制御装置50でも、第3の実施形態のデータ転送制御装置30と同様に、第1の画像データ入力部100が出力した第1の転送データをDMA転送する際のバス帯域が確保されて、DMA転送が円滑に行われ、第1の転送データのDMA転送のリアルタイム性を確保することができる。
なお、本実施形態においては、第1の実施形態〜第4の実施形態および変形例のデータ処理装置において、2つの画像データ入力部(第1の画像データ入力部100および第2の画像データ入力部200)を備え、それぞれの画像データ入力部に対応する2つのデータ転送部(第1のデータ転送部101と第2のデータ転送部201)がそれぞれ、転送データをインターコネクトバス700に出力することによってDMA転送する構成について説明した。しかし、データ処理装置に備える画像データ入力部およびデータ転送部の数は、第1の実施形態〜第4の実施形態および変形例で示した数に限定されるものではなく、さらに多くの画像データ入力部およびデータ転送部を備える構成であることも考えられる。
ここで、データ処理装置にさらに多くの画像データ入力部およびデータ転送部を備えた構成の一例について説明する。図12は、本実施形態におけるデータ転送制御装置を備えたデータ処理装置の概略構成の一例を示したブロック図である。図12に示したデータ処理装置6は、第1の画像データ入力部100と、第1のデータ転送部101と、第2の画像データ入力部200と、第2のデータ転送部201と、データ転送制御装置10と、第3の画像データ入力部300と、第3のデータ転送部301と、データ転送制御装置11と、第4の画像データ入力部400と、第4のデータ転送部401と、データ転送制御装置12と、を備えている。また、データ転送制御装置10〜12のそれぞれは、2つの転送制御部と1つのデータ転送状態監視部とを備えている。ただし、図12を見てわかるように、データ転送制御装置10は、第1の転送制御部110と、第2の転送制御部210と、データ転送状態監視部130と、で構成される。また、データ転送制御装置11は、第2の転送制御部210と、第3の転送制御部310と、データ転送状態監視部230と、で構成される。また、データ転送制御装置12は、第3の転送制御部310と、第4の転送制御部410と、データ転送状態監視部330と、で構成される。
図12に示したデータ処理装置6は、図1に示したデータ処理装置1に備えた画像データ入力部が4つになり、データ転送部が4つになった構成である。また、画像データ入力部およびデータ転送部が4つになったことに伴って、データ転送制御装置が3つになっている。なお、データ処理装置6内の構成要素およびデータ転送制御装置内の構成要素は、図1に示したデータ処理装置1内の構成要素およびデータ転送制御装置10内の構成要素と同様の構成要素である。より具体的には、第1の画像データ入力部100〜第4の画像データ入力部400のそれぞれは、図1に示した第1の画像データ入力部100や第2の画像データ入力部200と同様の、インターコネクトバス700を介してDRAMに転送する画像データの供給源である。また、第1のデータ転送部101〜第4のデータ転送部401のそれぞれは、図1に示した第1のデータ転送部101や第2のデータ転送部201と同様の、対応する画像データ入力部から入力された転送データをインターコネクトバス700に出力することによって、それぞれの転送データをDMA転送するイニシエータである。
そして、データ処理装置6では、データ転送制御装置10〜データ転送制御装置12のそれぞれが、図1に示したデータ転送制御装置10と同様に、それぞれのデータ転送部によってDMA転送する転送データを振り分ける。このとき、データ転送制御装置10〜データ転送制御装置12のそれぞれに備えたデータ転送状態監視部130〜データ転送状態監視部330のそれぞれは、図1に示したデータ転送状態監視部130と同様に、対応する2つのデータ転送部のそれぞれにおいて行われているDMA転送の状態を監視する。なお、図12を見てわかるように、データ処理装置6では、データ転送制御装置10〜データ転送制御装置12において、1つの転送制御部が、2つのデータ転送制御装置に重複して含まれている。このため、2つのデータ転送制御装置に重複して含まれている1つの転送制御部は、対応する画像データ入力部から入力された転送データを振り分ける機能と、振り分けられた転送データをDMA転送する機能との両方を備えることとなる。
より具体的には、第2の転送制御部210は、データ転送制御装置10とデータ転送制御装置11とに重複して含まれている。このため、第2の転送制御部210は、図1に示したデータ処理装置1に備えた第2の転送制御部210と同様に、第1の転送制御部110によって振り分けられた第1の転送データをDMA転送する機能に加えて、図1に示したデータ処理装置1に備えた第1の転送制御部110と同様に、第2の画像データ入力部200から入力された第2の転送データを、第2のデータ転送部201と第3のデータ転送部301(第3の転送制御部310)とに振り分ける機能とを備える。また、第3の転送制御部310は、データ転送制御装置11とデータ転送制御装置12とに重複して含まれている。このため、第3の転送制御部310は、図1に示したデータ処理装置1に備えた第2の転送制御部210と同様に、第2の転送制御部210によって振り分けられた第2の転送データをDMA転送する機能に加えて、図1に示したデータ処理装置1に備えた第1の転送制御部110と同様に、第3の画像データ入力部300から入力された第3の転送データを、第3のデータ転送部301と第4のデータ転送部401(第4の転送制御部410)とに振り分ける機能とを備える。
本実施形態によれば、データ転送制御装置(データ転送制御装置10〜12)を、データ転送部(第1のデータ転送部101、第2のデータ転送部201、第3のデータ転送部301、および第4のデータ転送部401)と、データ入力部(第1の画像データ入力部100、第2の画像データ入力部200、第3の画像データ入力部300、および第4の画像データ入力部400)との数(ここでは4つ)に応じて数珠つなぎにし、データ転送制御装置10〜12のそれぞれに備えたデータ転送状態監視部(データ転送状態監視部130、データ転送状態監視部230、およびデータ転送状態監視部330)は、対応する第1のデータ転送部101、第2のデータ転送部201、第3のデータ転送部301、および第4のデータ転送部401のそれぞれの転送データの転送状態を監視して、このデータ転送制御装置10〜12に備えたそれぞれの転送制御部(第1の転送制御部110、第2の転送制御部210、第3の転送制御部310、または第4の転送制御部410)に転送制御情報を出力し、それぞれのデータ転送制御装置10〜12に備えた少なくとも1つの転送制御部(第1の転送制御部110、第2の転送制御部210、および第3の転送制御部310)は、転送制御情報に基づいて、対応するデータ入力部(第1の画像データ入力部100、第2の画像データ入力部200、または第3の画像データ入力部300)から入力された転送データを、このデータ転送制御装置10〜12が対応する少なくとも1つのデータ転送部(第2のデータ転送部201、第3のデータ転送部301、および第4のデータ転送部401)に振り分ける、データ処理装置(データ処理装置6)が構成される。
このように、データ処理装置に備えた画像データ入力部およびデータ転送部の数に応じた数のデータ転送制御装置を数珠つなぎの形態で備えることによって、1つの画像データ入力部から入力されたそれぞれの転送データのDMA転送を、2つのデータ転送部によって並列に行わせることができる。これにより、それぞれのデータ転送制御装置において、対応する画像データ入力部が出力した転送データをDMA転送する際のバス帯域が確保されて、DMA転送が円滑に行われ、それぞれの転送データのDMA転送のリアルタイム性を確保することができる。
上記に述べたとおり、本発明を実施するための形態によれば、画像データ入力部に対応するデータ転送部によるDMA転送の状態を監視することによって、転送データのDMA転送が円滑に行われているか否かを判定する。そして、データ転送部による転送データのDMA転送が円滑に行われていない場合には、現在転送データをDMA転送しているデータ転送部と異なるデータ転送部によっても、転送データのDMA転送を行うように、転送データをそれぞれのデータ転送部に振り分ける。これにより、これにより、本発明を実施するための形態では、それぞれのデータ転送部で転送データを並列にDMA転送することができ、画像データ入力部から入力された転送データをDMA転送する際のバス帯域を確保することができる。このことにより、本発明を実施するための形態では、画像データ入力部が出力した転送データをDMA転送する際のスループットの低下を抑えることができ、転送データのリアルタイム性を確保することができる。
また、本発明を実施するための形態によれば、データ転送制御装置内のそれぞれの転送制御部が対応するデータ転送部に転送データを出力する際に、転送データの出力順序の並び替えを行うことができる。これにより、本発明を実施するための形態では、転送データをDMA転送する際に、DRAMのバンク衝突が発生する確率を低減し、DRAMのバンク衝突による待ち時間を低減することができる。このとき、本発明を実施するための形態では、通常のDMA転送において使用されるそれぞれの転送バッファ部を用いて転送データの出力順序の並び替えを行うことができるため、少ないハードウェアリソースでDRAMのバンク衝突を回避することができる。
これらにより、本発明を実施するための形態では、データ処理装置を備えたシステムの性能を向上させることができる。
なお、本実施形態においては、それぞれの画像データ入力部から出力された転送データをDRAMに転送する、すなわち、データ処理装置がDRAMに転送データを出力するライト転送の場合について説明した。しかし、転送データの転送方向は、本発明を実施するための形態に示したデータ処理装置からDRAMへの方向に限定されるものではない。例えば、DRAMに格納されている転送データをデータ処理装置が読み出すリード転送においても、本実施形態において説明した転送データの流れを逆方向にすることによって、同様に、本発明の考え方を適用することができる。また、例えば、ライト転送とリード転送とが組み合わされた構成であっても同様に、本発明の考え方を適用することができる。
また、本実施形態においては、図12に示した、多くの画像データ入力部および転送部を備えた構成のデータ処理装置において、それぞれのデータ転送制御装置が、2つの転送制御部と1つのデータ転送状態監視部とで構成される場合について説明した。しかし、1つのデータ転送制御装置に備える転送制御部の数は、本発明を実施するための形態に示した数に限定されるものではなく、例えば、1つのデータ転送制御装置が、3つの転送制御部と1つのデータ転送状態監視部とで構成されてもよい。より具体的には、図12に示した一例を参照すると、データ転送制御装置10が、第1の転送制御部110と、第2の転送制御部210と、第3の転送制御部310と、データ転送状態監視部130と、で構成されてもよい。この構成の場合、データ転送状態監視部130は、第1の転送制御部110、第2の転送制御部210、および第3の転送制御部310のそれぞれにおいて行われているDMA転送の状態を監視する。そして、第1の転送制御部110は、第1の画像データ入力部100から入力された第1の転送データを、第2の転送制御部210に加えて、第3の転送制御部310にも振り分ける。これにより、第1の転送データを、第1のデータ転送部101と第2のデータ転送部201とに加えて、第3のデータ転送部301によっても並列にDMA転送することができる。
なお、本実施形態においては、デジタルカメラなどの撮像装置に搭載され、画像処理を行うシステムLSIを本発明のデータ処理装置とし、このシステムLSIに本発明のデータ転送制御装置を適用した場合について説明した。そして、データ転送制御装置によって転送する転送データが、画像データである場合について説明した。しかし、本実施形態のデータ転送制御装置を適用することができるデータ処理装置のシステムは、本発明を実施するための形態に示したデータ処理装置のシステムに限定されるものではなく、入力された転送データをDMA転送するデータ処理装置のシステムであれば、どのようなシステムにも同様に、本発明のデータ転送制御装置の考え方を適用することができる。従って、データ転送制御装置によって転送する転送データは、必ずしも画像データに限定されるものではない。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。