(57)【特許請求の範囲】
【請求項１】
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第１ＤＭＡコントローラと、
所定の機能を実現する機能マクロ，前記メモリと前記機能マクロ間のデータ転送を制御する第２ＤＭＡコントローラ，および，前記メモリと前記機能マクロのＤＭＡ転送に関するアクセス条件を設定するアクセス条件設定部を含む、前記バスに接続された少なくとも１つの機能ブロックと、を有し、
前記アクセス条件設定部は、前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含み、
前記第２ＤＭＡコントローラは、前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記第１ＤＭＡコントローラのステイタス情報，前記命令単位で設定された前記レジスタの内容および前記制御コード格納部に格納された制御コードに従って、前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする半導体集積回路。
【請求項２】
前記第１ＤＭＡコントローラのステイタス情報は、前記メモリに格納され、
前記第２ＤＭＡコントローラは、前記メモリに格納された前記第１ＤＭＡコントローラのステイタス情報を使用して前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第１ＤＭＡコントローラと、
所定の機能を実現する機能マクロ，前記メモリと前記機能マクロ間のデータ転送を制御する第２ＤＭＡコントローラ，および，前記メモリと前記機能マクロのＤＭＡ転送に関するアクセス条件を設定するアクセス条件設定部を含む、前記バスに接続された少なくとも１つの機能ブロックと、
時間を計測するタイマーと、を有し、
前記アクセス条件設定部は、前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含み、
前記第２ＤＭＡコントローラは、前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定し、前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする半導体集積回路。
【請求項４】
前記第２ＤＭＡコントローラは、
前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定すると共に、前記バスの使用率をチェックして、前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
前記少なくとも１つの機能ブロックは、
それぞれが、請求項１乃至請求項４のいずれか１項に記載の第２ＤＭＡコントローラを有する第１機能ブロックおよび第２機能ブロックを含む、
ことを特徴とする半導体集積回路。
【請求項６】
前記第１機能ブロックの第２ＤＭＡコントローラは、
前記メモリに対するアクセスが前記第２機能ブロックの第２ＤＭＡコントローラによるアクセスと競合するとき、前記第２機能ブロックの第２ＤＭＡコントローラの処理状況を確認して、前記第２機能ブロックの第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする請求項５に記載の半導体集積回路。
【請求項７】
前記半導体集積回路を製品に適用した後、前記アクセス条件設定部に格納するデータを書き替えて、前記メモリと前記機能マクロのＤＭＡ転送に関するアクセス条件を変更する、
ことを特徴とする請求項１乃至請求項６のいずれか１項に記載の半導体集積回路。
【請求項８】
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第１ＤＭＡコントローラと、
所定の機能を実現する機能マクロ、および、前記メモリと前記機能マクロ間のデータ転送を制御する第２ＤＭＡコントローラを含む、前記バスに接続された少なくとも１つの機能ブロックと、を有し、
前記アクセス条件設定部は、前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含み、
前記第２ＤＭＡコントローラは、前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記第１ＤＭＡコントローラのステイタス情報，前記命令単位で設定された前記レジスタの内容および前記制御コード格納部に格納された制御コードに従って、前記第２ＤＭＡコントローラによるアクセスを制御する半導体集積回路のＤＭＡ制御方法であって、
前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、
前記第１ＤＭＡコントローラのステイタス情報により前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を確認し、或いは、
時間を計測するタイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定し、
前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする半導体集積回路のＤＭＡ制御方法。
【請求項９】
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第１ＤＭＡコントローラと、
所定の機能を実現する機能マクロ、および、前記メモリと前記機能マクロ間のデータ転送を制御する第２ＤＭＡコントローラを含む、前記バスに接続された少なくとも１つの機能ブロックと、
時間を計測するタイマーと、を有し、
前記アクセス条件設定部は、前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含み、
前記第２ＤＭＡコントローラは、前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定し、前記第２ＤＭＡコントローラによるアクセスを制御する半導体集積回路のＤＭＡ制御方法であって、
前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、
前記第１ＤＭＡコントローラのステイタス情報により前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を確認し、或いは、
時間を計測するタイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定し、
前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする半導体集積回路のＤＭＡ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で言及する実施例は、半導体集積回路およびそのＤＭＡ制御方法に関する。
【背景技術】
【０００２】
近年、デジタルスチルカメラ(ＤＳＣ：Digital Still Camera)を始めとする様々な電子機器において、ＳｏＣ(Silicon on Chip：半導体集積回路)が利用されている。ところで、ＳｏＣの各機能マクロ(機能ブロック、モジュール)間のデータ転送方式として、一般的に、次の３つが利用されている。
【０００３】
すなわち、第１のデータ転送方式は、ＳｏＣ上のＣＰＵ(Central Processing Unit：中央演算処理装置)による転送であり、第２のデータ転送方式は、ＳｏＣのシステムバス上のＤＭＡ(Direct Memory Access)コントローラによるＤＭＡ転送である。なお、ＤＭＡコントローラによるＤＭＡ転送において、各機能マクロは、ＤＭＡスレーブになる。
【０００４】
さらに、第３のデータ転送方式は、ＳｏＣの機能マクロ内部にＤＭＡ転送を行うマスタ回路(ＤＭＡマスタ)を実装して行うＤＭＡ転送を行うものである。なお、データ転送方式としては、さらに、他の方式も提案されている。
【０００５】
ところで、従来、ＤＭＡコントローラを使用したシステムとしては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−０１１２８７号公報
【特許文献２】特開平１１−０４１２９７号公報
【特許文献３】国際公開第０８／０２６２７３号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、従来、ＳｏＣの各機能マクロ間のデータ転送方式としては、第１〜第３のデータ転送方式といった様々なものが利用されているが、これらのデータ転送方式には、次のような問題がある。
【０００８】
すなわち、第１のデータ転送方式では、ＣＰＵによってデータ転送を制御するため、ＣＰＵが主たる処理行うためのリソースが消費され、本来、ＣＰＵが行う処理を妨げることになってしまう。
【０００９】
また、第２のデータ転送方式では、ＳｏＣのシステムバスに接続されたＤＭＡコントローラによって複数の機能マクロ間のデータ転送を制御するため、ＤＭＡコントローラの仕様が複雑になり、開発に伴う期間が長期化することになってしまう。
【００１０】
この開発期間の長期化の問題は、例えば、ＳｏＣの仕様作成時点において、全ての機能マクロのＤＭＡ転送に関する仕様、並びに、全ての機能マクロ間での処理の優先度といったものが決定済みでなければならないことに起因する。
【００１１】
また、第２のデータ転送方式は、優先順位管理(ＱｏＳ：Quality on Service)機構を使用する場合にはハードウェアの複雑さが増大し、また、ＱｏＳ機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクも含む。さらに、別品種を開発する際には、再利用できる部分が少ないといった不都合もある。
【００１２】
さらに、第３のデータ転送方式では、上述した第２のデータ転送方式と同様の問題が存在する。すなわち、ＳｏＣの仕様作成時点において、ソフトウェアも含めたＤＭＡの転送仕様が明確でなければならない。
【００１３】
また、第３データ転送方式は、ＱｏＳ機構を使用する場合にはハードウェアの複雑さが増大し、さらに、ＱｏＳ機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクも含む。そして、別品種を開発する際には、再利用できる部分が少ないといった不都合も同様に存在する。
【課題を解決するための手段】
【００１４】
一実施形態によれば、バスと、前記バスに接続されたメモリと、前記バスに接続された演算処理装置と、前記バスに接続された第１ＤＭＡコントローラと、前記バスに接続された少なくとも１つの機能ブロックと、を有する半導体集積回路が提供される。
【００１５】
前記機能ブロックは、所定の機能を実現する機能マクロ，前記メモリと前記機能マクロ間のデータ転送を制御する第２ＤＭＡコントローラ，および，前記メモリと前記機能マクロのＤＭＡ転送に関するアクセス条件を設定するアクセス条件設定部を含む。前記アクセス条件設定部は、前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含む。前記第２ＤＭＡコントローラは、前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記第１ＤＭＡコントローラのステイタス情報，前記命令単位で設定された前記レジスタの内容および前記制御コード格納部に格納された制御コードに従って、前記第２ＤＭＡコントローラによるアクセスを制御する。
【発明の効果】
【００１６】
開示の半導体集積回路およびそのＤＭＡ制御方法は、ハードウェアを簡略化して半導体集積回路の開発期間の短縮や再利用を可能にすると共に、様々な条件に対しても柔軟に対応することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、半導体集積回路(ＳｏＣ)が適用されるデジタルスチルカメラの一例を示すブロック図である。
【図２】図２は、半導体集積回路におけるデータ転送方式の第１例を説明するためのブロック図である。
【図３】図３は、半導体集積回路におけるデータ転送方式の第２例を説明するためのブロック図である。
【図４】図４は、半導体集積回路におけるデータ転送方式の第３例を説明するためのブロック図である。
【図５】図５は、図４におけるＤＭＡＣ(モジュール)の一例を示すブロック図である。
【図６】図６は、半導体集積回路におけるデータ転送方式の第４例を説明するためのブロック図である。
【図７】図７は、本実施例の半導体集積回路(ＳｏＣ)が適用されるデジタルスチルカメラの一例を示すブロック図である。
【図８】図８は、図７に示す半導体集積回路におけるサブＤＭＡＣ(プログラマブルＤＭＡＣ)の一例を示すブロック図である。
【図９】図９は、図８に示すサブＤＭＡＣにおけるプログラマブルコアの一例を示すブロック図である。
【図１０】図１０は、第１実施例の半導体集積回路におけるデータ転送方式の一例を説明するためのブロック図である。
【図１１】図１１は、第１実施例の半導体集積回路におけるデータ転送方式の他の例を説明するためのブロック図である。
【図１２】図１２は、第１実施例の半導体集積回路において、リソース競合時の処理の一例を、サブＤＭＡＣに注目して説明するためのブロック図である。
【図１３】図１３は、第１実施例の半導体集積回路において、リソース競合時の処理の一例を、半導体集積回路全体に注目して説明するためのブロック図である。
【図１４】図１４は、図１３に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合がない時の処理の一例を示すフローチャートである。
【図１５】図１５は、図１３に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【図１６】図１６は、第１実施例の半導体集積回路の変形例におけるデータ転送方式の一例を説明するためのブロック図である。
【図１７】図１７は、図１６に示す半導体集積回路の第１サブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【図１８】図１８は、図１６に示す半導体集積回路の第２サブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【図１９】図１９は、バスの使用率とサブＤＭＡＣによるＤＭＡ転送の関係を説明するためのタイミング図である。
【図２０】図２０は、第２実施例の半導体集積回路の一例を示すブロック図である。
【図２１】図２１は、図２０に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【図２２】図２２は、図２０に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合時の処理の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
まず、半導体集積回路およびそのＤＭＡ制御方法の実施例を詳述する前に、図１〜図６を参照して、半導体集積回路が適用される一例としてのデジタルスチルカメラ、半導体集積回路の各機能マクロ(モジュール)間のデータ転送方式、並びに、その問題点を説明する。
【００１９】
図１は、半導体集積回路(ＳｏＣ)が適用されるデジタルスチルカメラの一例を示すブロック図である。図１において、参照符号１０１は、画像処理装置(半導体集積回路：ＳｏＣ)、１０２は撮像部、１３１は外部メモリ、１３２は表示部、そして、１３３は記録メディアを示す。
【００２０】
撮像部１０２は、被写体の情報を画像処理装置１０１が扱える形式に変換して出力するもので、撮影レンズ１２１、撮像素子１２２およびＡ／Ｄ変換回路１２３を含む。撮影レンズ１２１は、被写体の情報を入射光として撮像素子１２２に出力する。
【００２１】
撮像素子１２２は、撮影レンズ１２１から入力された光を電気信号(画像データ)に変換してＡ／Ｄ変換回路１２３に出力する。ここで、撮像素子１２２としては、例えば、ＣＣＤ(Charge Coupled Device)やＣＭＯＳ(Complementary Metal Oxide Semiconductor)等のイメージセンサが使用される。
【００２２】
画像処理装置１０１は、撮像部１０２から入力された画像データを処理し、各機能マクロ(インターフェースモジュール)１１５〜１１７にデータ転送するもので、システムバス１１０、ＣＰＵ(メインＣＰＵ)１１１および内部メモリ(システムメモリ)１１２を含む。
【００２３】
さらに、画像処理装置１０１は、メインＤＭＡＣ１１３、メモリインターフェース(I/F)１１５、表示用I/F１１６、メディア用I/F１１７、プリプロセス処理部１１８および画像処理部１１９を含む。
【００２４】
システムバス１１０は、画像処理装置１０１内部の各モジュールを接続するための共有バスであり、メインＣＰＵ１１１は、各回路(モジュール)の統括制御を行う部分であり、例えば、データや画像の解析および解析結果に基づく各回路への設定等の制御を行う。
【００２５】
内部メモリ１１２は、画像処理装置１０１内部に配置されるメモリモジュールであり、処理前および処理途中の画像データなどを保持するために使用される。メインＤＭＡＣ１１３は、画像処理装置１０１内部に配置され、ＣＰＵ１１１からの設定に従って、画像処理装置１０１内部の各モジュール間のデータ転送を行う。
【００２６】
メモリI/F１１５は、外部メモリ１３１へのアクセスの調停を行うインターフェースモジュールである。表示用I/F１１６は、内部メモリ１１２および外部メモリ１３１から転送された画像データを表示部１３２に対応した形式のデータに変換し、表示部１３２に出力する。メディア用I/F１１７は、記録メディア１３３に対するデータ入出力を実行するモジュールである。
【００２７】
プリプロセス処理部１１８は、撮像部１０２のＡ／Ｄ変換回路１２３からの画像データを受け取り、ＣＰＵ１１１の命令に従って処理し、その処理されたデータを内部メモリ１１２または外部メモリ１３１に格納する。画像処理部１１９は、内部メモリ１１２または外部メモリ１３１の画像データを所定の方式(例えば、ＪＰＥＧなど)に変換する。
【００２８】
外部メモリ１３１は、画像処理装置１０１の外部に設けられたメモリで、例えば、ＳＤＲＡＭ／ＤＤＲ(Synchronous Dynamic Random Access Memory/Double-Data-Rate)等のメモリが使用される。表示部１３２は、画像処理装置１０１内で処理された画像データを表示する部分であり、液晶ディスプレイなどが用いられる。
【００２９】
記録メディア１３３は、画像処理装置１０１内で処理された画像データを保存するための外部の記録用デバイスであり、コンパクトフラッシュ（登録商標）(ＣＦカード)やＳＤ（登録商標）カードなどの携帯型メモリーカードが使用される。
【００３０】
図２は、半導体集積回路におけるデータ転送方式の第１例(第１のデータ転送方式)を説明するためのブロック図であり、メインＣＰＵ１１１によりシステムメモリ(メモリ)１１２のデータを機能マクロ(例えば、暗号マクロ)１４０に転送するものを示す。なお、機能マクロ(機能ブロック)１４０は、暗号マクロに限定されないのはもちろんである。
【００３１】
図２に示されるように、システムメモリ１１２のデータは、システムバス(バス)１１０を介して、一旦、メインＣＰＵ１１１(演算処理装置)内部のレジスタに格納される(経路(処理)Ｐ１１１)。そして、そのメインＣＰＵ１１１内部のレジスタに格納されたデータは、システムバス１１０を介して機能マクロ１４０に書き込まれる(Ｐ１１２)。
【００３２】
この図２に示すデータ転送方式では、メインＣＰＵ１１１の処理がデータ転送のために停止することになり、また、データの転送単位は、例えば、メインＣＰＵ１１１のバス幅に制限されるため、比較的小さく(３２bit／６４bit)なる。その結果、メインＣＰＵ１１１の処理が遅延し、或いは、データ転送速度が低下するといった問題が発生する。
【００３３】
図３は、半導体集積回路におけるデータ転送方式の第２例(第２のデータ転送方式)を説明するためのブロック図であり、システムバス１１０上のＤＭＡＣ(メインＤＭＡＣ)１１３によりシステムメモリ１１２のデータを機能マクロ１４０に転送するものを示す。
【００３４】
図３に示されるように、メインＣＰＵ１１１は、ＤＭＡＣ１１３に対して転送要求を出力(Ｐ１２１)し、これを受けてＤＭＡＣ１１３は、システムメモリ１１２からデータ(転送データ)を読み出す(Ｐ１２２)。さらに、ＤＭＡＣ１１３は、その読み出したデータを機能マクロ１４０に書き込む(Ｐ１２３)。
【００３５】
ここで、ＤＭＡＣ１１３は、一度に扱える転送データサイズが、例えば、５１２bitのように、メインＣＰＵ１１１が処理するサイズよりも大きいため、高速のデータ転送を行うことができ、転送効率を向上させることが可能になる。さらに、データ転送は、ＤＭＡＣ１１３により行うため、メインＣＰＵ１１１の処理を停止させなくてもよい。
【００３６】
しかしながら、図３に示すデータ転送方式では、ＤＭＡＣ１１３によって複数の機能マクロ(機能マクロ１４０、並びに、図１の機能マクロ１１５〜１１７等)間のデータ転送を制御するため、ＤＭＡＣ１１３の仕様が複雑になり、開発に伴う期間が長期化する。
【００３７】
この開発期間の長期化の問題は、例えば、半導体集積回路(ＳｏＣ)の仕様作成時点において、全ての機能マクロのＤＭＡ転送に関する仕様、並びに、全ての機能マクロ間での処理の優先度といったものが決定済みでなければならないことに起因する。
【００３８】
また、図３に示すデータ転送方式は、優先順位管理(ＱｏＳ)機構を実装する場合にはハードウェアの複雑さが増大し、また、ＱｏＳ機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクも含む。さらに、別品種を開発する際には、再利用できる部分が少ないといった不都合もある。
【００３９】
図４は、半導体集積回路におけるデータ転送方式の第３例(第３のデータ転送方式)を説明するためのブロック図であり、ＤＭＡＣ(モジュール)１５０を機能マクロ１４０のインターフェースとして取り込み、ＤＭＡＣ１５０によりデータ転送を行うものを示す。
【００４０】
図４に示されるように、メインＣＰＵ１１１は、機能マクロ１４０のために設けられたＤＭＡＣ１５０に対して転送要求を出力(Ｐ１３１)し、これを受けてＤＭＡＣ１５０は、システムメモリ１１２からデータ(転送データ)を読み出す(Ｐ１３２)。
【００４１】
さらに、ＤＭＡＣ１５０で読み出したデータは、そのまま機能マクロ１４０で処理され(Ｐ１３３)、そして、処理されたデータは、ＤＭＡＣ１５０を介してシステムメモリ１１２に書き込まれる(Ｐ１３４)。
【００４２】
ここで、ＤＭＡＣ１５０は、前述した図３のＤＭＡＣ１１３と同様に、一度に扱える転送データサイズが大きいため、データ転送効率を向上させることができ、さらに、メインＣＰＵ１１１の処理を停止させなくてもよい。
【００４３】
図５は、図４におけるＤＭＡＣ(モジュール)の一例を示すブロック図である。図５に示されるように、ＤＭＡＣ１５０は、例えば、システムバスインターフェース１５１、制御レジスタ１５２、転送制御部１５３、ステートマシン１５４、および、優先制御部１５５を含む。
【００４４】
システムバスインターフェース１５１は、システムバス１１０と機能マクロ１４０(ＤＭＡＣ１５０)とのインターフェースを取るための回路であり、制御レジスタ１５２は、転送制御部１５３によるＤＭＡ転送を行うための制御レジスタである。
【００４５】
ステートマシン１５４は、入力条件と現在の状態によって次の状態を決める論理回路(順序回路)であり、優先制御部１５５は、ＱｏＳ機構の制御を行うためのものである。ここで、ステートマシン１５４および優先制御部１５５は、ハードウェアとされている。
【００４６】
上述した図４および図５に示すデータ転送方式においても、データ処理を担当する機能マクロの処理内容に合わせて適切な形でのデータ転送を行うために、マクロの機能数に応じて、ＤＭＡＣ１５０の転送チャネルが増える。
【００４７】
また、図３を参照して説明したのと同様に、図４および図５に示すデータ転送方式においても、開発期間の長期化の問題や、ＱｏＳ機構を実装する場合のハードウェアの複雑さといった問題がある。
【００４８】
すなわち、ステートマシン１５４および優先制御部１５５のハードウェアが増大し、ＱｏＳ機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しいといったリスクもある。さらに、別品種を開発する際には、再利用できる部分が少ないといった不都合もある。
【００４９】
図６は、半導体集積回路におけるデータ転送方式の第４例を説明するためのブロック図である。この図６に示すデータ転送方式は、システムバス１１０に対してメインＤＭＡＣ(ＤＭＡＣ)１１３、および、機能マクロ１４０のためのサブＤＭＡＣ１５０を含む。ここで、サブＤＭＡＣ１５０は、上述した図４のＤＭＡＣ(モジュール)に対応し、メインＤＭＡＣ１１３は、図３のＤＭＡＣに対応する。なお、図６では、転送要求およびデータ転送を簡略化して示している。
【００５０】
メインＤＭＡＣ１１３は、メインＣＰＵ１１１からの転送要求に従ってメインＤＭＡＣ１１３を介してシステムメモリ１１２と他のスレーブ回路１６０(メインＣＰＵ１１１)の間のＤＭＡ転送を制御(Ｐ１４１，Ｐ１４２)する。サブＤＭＡＣ１５０は、メインＣＰＵ１１１からの転送要求に従って機能マクロ１４０とシステムメモリ１１２の間のＤＭＡ転送を制御(Ｐ１４３)する。
【００５１】
上述したように、図６に示すデータ転送方式は、図３のＤＭＡＣ(メインＤＭＡＣ)１１３と図４のＤＭＡＣ(サブＤＭＡＣ)１５０を設けたものであるが、この場合も、上述した図４および図５のデータ転送方式と同様の問題がある。
【００５２】
具体的に、図１を参照して説明した半導体集積回路１０１に対して、新たにネットワーク機能(機能マクロ１４０)を搭載する場合、システムバス１１０上の他のスレーブ回路(別の機能マクロ１１５〜１１７)１６０のＤＭＡ転送はメインＤＭＡＣ１１３が制御する。そして、システムバス１１０上のネットワーク機能マクロ１４０のＤＭＡ転送はサブＤＭＡＣ１５０が制御する。
【００５３】
ここで、例えば、メインＤＭＡＣ１１３によるＤＭＡ転送処理と、サブＤＭＡＣ１５０によるＤＭＡ転送処理が競合することがあり得る。具体的に、メインＤＭＡＣ１１３によるＤＭＡ転送処理は、例えば、撮像部１０２から入力された画像データをプリプロセス処理部１１８からシステムメモリ１１２に書き込む処理(撮影時のＤＭＡ転送処理)である。また、サブＤＭＡＣ１５０によるＤＭＡ転送処理は、例えば、ネットワーク機能マクロ１４０によるデータ転送処理である。
【００５４】
この場合、例えば、メインＤＭＡＣ１１３による撮影時のＤＭＡ転送処理を最優先で連続的に行い、サブＤＭＡＣ１５０によるネットワーク機能マクロ１４０のデータ転送処理を停止して競合を避ける機能をもたせるのが好ましい。
【００５５】
そのためには、例えば、サブＤＭＡＣ１５０に対して、メインＤＭＡＣ１１３またはシステムバス１１０の動作状況を確認するためのハードウェアを別途実装することになる。この場合、例えば、上述したＱｏＳ機構を実装する場合と同様に、専用論理の追加によるハードウェア規模の増加やハードウェア実装期間の長期化といった問題が生じることになる。
【００５６】
さらに、ＱｏＳ機構が実際のシステム動作と合わない場合には処理速度の面で性能を満たすことが難しい、或いは、別品種を開発する際には、再利用できる部分が少ないといった問題も存在する。これは、例えば、転送チャネル数の増大や接続されるシステムへの影響を考慮した設計を行う際には、さらに顕著なものとなる。
【００５７】
なお、仕様によっては、メインＤＭＡＣ１１３による撮影時のＤＭＡ転送処理を停止して、サブＤＭＡＣ１５０によるネットワーク機能マクロ１４０のデータ転送処理を最優先で連続的に行う場合も考えられるが、同様の問題が生じることになる。
【００５８】
以下、半導体集積回路およびそのＤＭＡ制御方法の実施例を、添付図面を参照して詳述する。図７は、本実施例の半導体集積回路が適用されるデジタルスチルカメラの一例を示すブロック図であり、前述した半導体集積回路(画像処理装置：ＳｏＣ)１０１に対して、ネットワークブロック(機能ブロック)１４を追加したものに相当する。
【００５９】
なお、図７では、サブＤＭＡＣ(プログラマブルＤＭＡＣ)４およびイーサネット（登録商標）インターフェース(I/F)５が設けられた機能ブロック１４の一例として、ネットワークブロックを示しているが、これに限定されるものではない。さらに、サブＤＭＡＣ４を設けた機能ブロック１４は、１つに限定されるものではなく、例えば、図１６を参照して後述するように、２つ、或いは、それ以上であってもよい。
【００６０】
すなわち、図７に示されるように、デジタルスチルカメラは、画像処理装置(半導体集積回路：ＳｏＣ)１、は撮像部２、外部メモリ３１、表示部３２および記録メディア３３を含む。
【００６１】
撮像部２は、被写体の情報を画像処理装置１が扱える形式に変換して出力するもので、撮影レンズ２１、撮像素子２２およびＡ／Ｄ変換回路２３を含む。撮影レンズ２１は、被写体の情報を入射光として撮像素子２２に出力する。
【００６２】
撮像素子２２は、撮影レンズ２１から入力された光を電気信号(画像データ)に変換してＡ／Ｄ変換回路２３に出力する。ここで、撮像素子２２としては、例えば、ＣＣＤやＣＭＯＳ等のイメージセンサが使用される。
【００６３】
画像処理装置１は、撮像部２から入力された画像データを処理し、各インターフェースモジュール１５〜１７に対してデータ転送するもので、システムバス(バス)１０、ＣＰＵ(メインＣＰＵ)１１および内部メモリ(システムメモリ)１２を含む。
【００６４】
さらに、画像処理装置１は、メインＤＭＡＣ(第１ＤＭＡコントローラ)１３、ネットワークブロック１４、メモリI/F１５、表示用I/F１６、メディア用I/F１７、プリプロセス処理部１８および画像処理部１９を含む。
【００６５】
ネットワークブロック１４は、サブＤＭＡＣ(第２ＤＭＡコントローラ)４およびイーサネット（登録商標）I/F(機能マクロ)５を含む。なお、サブＤＭＡＣ４は、図８以降を参照して、後に詳述する。
【００６６】
システムバス１０は、画像処理装置１内部の各モジュールを接続するための共有バスであり、メインＣＰＵ１１は、各回路(モジュール)の統括制御を行う部分であり、例えば、データや画像の解析および解析結果に基づく各回路への設定等の制御を行う。
【００６７】
内部メモリ１２は、画像処理装置１内部に配置されるメモリモジュールであり、処理前および処理途中の画像データなどを保持するために使用される。メインＤＭＡＣ１３は、画像処理装置１内部に配置され、ＣＰＵ１１からの設定に従って、画像処理装置１内部の各モジュール間のデータ転送を行う。
【００６８】
メモリI/F１５は、外部メモリ３１へのアクセスの調停を行うインターフェースモジュールである。表示用I/F１６は、内部メモリ１２および外部メモリ３１から転送された画像データを表示部３２に対応した形式のデータに変換し、表示部３２に出力する。メディア用I/F１７は、記録メディア３３に対するデータ入出力を実行するモジュールである。
【００６９】
プリプロセス処理部１８は、撮像部２のＡ／Ｄ変換回路２３からの画像データを受け取り、ＣＰＵ１１の命令に従って処理し、その処理されたデータを内部メモリ１２または外部メモリ３１に格納する。画像処理部１９は、内部メモリ１２または外部メモリ３１の画像データを所定の方式(例えば、ＪＰＥＧなど)に変換する。
【００７０】
外部メモリ３１は、画像処理装置１の外部に設けられたメモリで、例えば、ＳＤＲＡＭ／ＤＤＲ等のメモリが使用され、表示部３２は、画像処理装置１内で処理された画像データを表示する部分であり、液晶ディスプレイなどが用いられる。
【００７１】
記録メディア３３は、画像処理装置１内で処理された画像データを保存するための外部の記録用デバイスであり、コンパクトフラッシュ（登録商標）(ＣＦカード)やＳＤ（登録商標）カードなどの携帯型メモリーカードが使用される。
【００７２】
図８は、図７に示す半導体集積回路におけるサブＤＭＡＣ(プログラマブルＤＭＡＣ)の一例を示すブロック図である。図８に示されるように、サブＤＭＡＣ４は、機能マクロ５に接続され、ＤＭＡＣコア４０、ＤＭＡＣチャネルレジスタ４３、データバッファ４４およびシステムバスインターフェース４５を含む。
【００７３】
ＤＭＡＣコア４０は、命令ＲＡＭ４１およびプログラマブルコア４２を含み、ＤＭＡＣチャネルレジスタ４３は、ＤＭＡ転送を行うためのデータを保持する複数(ｎ＋１個)のレジスタＣＨ.0〜ＣＨ.nを含む。
【００７４】
ここで、プログラマブルコア４２は、命令ＲＡＭ４１にロードされたプログラム(命令)に従ってＤＭＡ転送の制御を行う。また、ＤＭＡＣチャネルレジスタ４３の各レジスタは、例えば、それぞれアドレスレジスタ、転送要求レジスタおよび優先順位制御レジスタ等を含む。
【００７５】
なお、命令ＲＡＭ(命令メモリ、制御コード格納部)４１およびＤＭＡＣチャネルレジスタ(レジスタ)４３は、システムメモリ１２と機能マクロ５のＤＭＡ転送に関するアクセス条件を設定するアクセス条件設定部に対応する。
【００７６】
アドレスレジスタは、システムメモリ(メモリ)１２のアドレスを格納するためのレジスタであり、転送要求レジスタは、処理するデータをサブＤＭＡＣ４に指示するためのレジスタであり、優先順位制御レジスタは、ＱｏＳ制御時の設定を行うレジスタである。なお、サブＤＭＡＣ４に割り込み通知に使用するタイマーを設けることもできる。
【００７７】
ここで、図８に示す本実施例のサブＤＭＡＣ４は、図５を参照して説明したＤＭＡＣ(モジュール)１５０とは異なり、プログラマブルコア４２が命令ＲＡＭ４１にロードされたプログラムを実行することにより、システムに応じたＤＭＡ転送を行うことができる。
【００７８】
具体的に、ＱｏＳ制御に関して、ラウンドロビン機構のみのサポート、重みつきラウンドロビン(ＷＲＲ：Weighted Round Robin)＋ラウンドロビン、最優先転送キュー＋ラウンドロビン、或いは、優先順位制御なしといったシステムに対応することができる。
【００７９】
すなわち、本実施例によれば、命令ＲＡＭ４１にロードする専用コードによりＱｏＳ制御の実装を行うため、上述のような様々なＱｏＳ制御方式の柔軟な変更が可能になり、例えば、実際のシステム動作を確認しながら調整することができる。
【００８０】
例えば、図１〜図６を参照して説明した半導体集積回路において、このような様々なＱｏＳ制御方式の制御は、ステートマシンをハードウェアで実装することによって実現するため、ＱｏＳ制御方式の変更は、ハードウェアの変更を伴う。これに対して、本実施例によれば、命令ＲＡＭ４１にロードする専用コードの変更により様々なＱｏＳ制御方式の柔軟な変更が可能になる。
【００８１】
図９は、図８に示すサブＤＭＡＣにおけるプログラマブルコアの一例を示すブロック図である。図９において、参照符号４２１はコアインターフェース、４２２はコアデコーダ、４２３はコア制御部、４２４はコア演算部、そして、４２５はコアレジスタを示す。
【００８２】
図９に示されるように、プログラマブルコア４２は、コアインターフェース４２１、コアデコーダ４２２、コア制御部４２３、コア演算部４２４およびコアレジスタ４２５を含む。
【００８３】
命令ＲＡＭ４１は、専用コード(制御コード)を格納するＲＡＭ領域を含み、ＤＭＡとしての仕様を満たすように設計したコードを、例えば、システムの電源投入時等の初期化時にロードする。
【００８４】
コアインターフェース４２１は、命令ＲＡＭ４１からのコマンド、例えば、コピー，読み出しおよび書き込みコマンドに従って、プログラマブルコア４２の外部へのアクセスを実行する。
【００８５】
コアデコーダ４２２は、命令ＲＡＭ４１からのコマンドをデコードし、コア制御部４２３、そのデコードされたコマンドに従って、コアインターフェース４２１，コア演算部４２４およびコアレジスタ４２５を制御する。
【００８６】
コア演算部４２４は、各種演算命令(例えば、加算，減算および論理積等)を実行する。ここで、コアレジスタ４２５は、コードを使用してアクセス可能なレジスタを纏めたもので、データ保持に使用する汎用レジスタと設定値自体が意味を持つ専用レジスタを含む。
【００８７】
なお、ＤＭＡＣコア４０(プログラマブルコア４２)は、例えば、ＤＭＡ転送に使用するレジスタが実装されているＤＭＡＣチャネルレジスタ４３との間のバス(内部バス)を介して接続されている。また、命令ＲＡＭ４１に格納されたコマンドを使用してＤＭＡＣチャネルレジスタ４３のデータをロードし、或いは、ＤＭＡＣチャネルレジスタ４３へデータをストアすることが可能である。
【００８８】
この図９に示すようなプログラマブルコア４２を搭載しておくことにより、ＤＭＡ転送時に使用する各種パラメータ(ホストのアドレスや転送データサイズ等)を、専用コードを使用して内部のコアレジスタ４２５に格納して使用することが可能になる。
【００８９】
また、システムメモリ１２(ホスト)へのアクセスの際に使用するアドレスを管理するレジスタをコアレジスタ４２５の内部に搭載することで、専用コードによる制御が可能になる。
【００９０】
これにより、ＤＭＡ転送動作時に使用する一連の処理を、専用コードによるソフトウェアのリソースによって記述することが可能になる。すなわち、命令ＲＡＭ４１に格納するコードによって制御することができる。
【００９１】
なお、命令ＲＡＭ４１は、例えば、半導体集積回路(ＳｏＣ)１、或いは、ＳｏＣ１が搭載された電子機器の電源投入時に、メインＣＰＵ(演算処理装置)１１により所定のコード(コマンド)がロードされることになる。
【００９２】
以上において、命令ＲＡＭ４１に格納されるデータ(ロードされる制御コード)を書き替えることにより、サブＤＭＡＣ４で制御するシステムメモリ１２と機能マクロ５のＤＭＡ転送に関するアクセス条件を様々に変更することができる。これは、ＳｏＣ(半導体集積回路)を、例えば、デジタルスチルカメラ(製品)に適用した後において、仕様の変更やファームウェアアップデート等を行うことを可能にする。
【００９３】
図１０は、第１実施例の半導体集積回路におけるデータ転送方式の一例を説明するためのブロック図である。なお、図１０では、メインＤＭＡＣ(１３)および他のスレーブ回路(１５’)は省略されている。
【００９４】
図１０に示されるように、メインＣＰＵ１１は、例えば、電源投入時に、専用コードをサブＤＭＡＣ４(命令ＲＡＭ４１)に書き込む(Ｐ１１)。なお、メインＣＰＵ１１によるサブＤＭＡＣ４への専用コードの書き込みは、例えば、上述した電源投入時等の初期化時のみ行う。
【００９５】
さらに、メインＣＰＵ１１により、サブＤＭＡＣ４に対して転送要求を出力(Ｐ１２)し、これを受けてサブＤＭＡＣ４は、システムメモリ１２からデータ(転送データ)を読み出す(Ｐ１３)。
【００９６】
さらに、サブＤＭＡＣ４で読み出したデータは、そのまま機能マクロ５で処理され(Ｐ１４)、そして、処理されたデータは、サブＤＭＡＣ４を介してシステムメモリ１２に書き込まれる(Ｐ１５)。
【００９７】
ここで、例えば、サブＤＭＡＣ４が初期化時に専用コードを読み込んだ後は、メインＣＰＵ１１からの転送要求(Ｐ１２)に従って、Ｐ１３〜Ｐ１５の動作を繰り返す。なお、サブＤＭＡＣ４は、メインＤＭＡＣ１３と同様に、一度に扱える転送データサイズが大きいため、データ転送効率を向上させることができ、さらに、メインＣＰＵ１１の処理を停止させなくてもよい。
【００９８】
図１１は、第１実施例の半導体集積回路におけるデータ転送方式の他の例を説明するためのブロック図であり、サブＤＭＡＣは、ハードワイヤード(回路接続)とされている。図１１に示されるように、メインＣＰＵ１１は、システムメモリ１２上にディスクリプタ１２ａを配置する(Ｐ２１)。
【００９９】
ここで、システムメモリ１２上に配置されるディスクリプタ１２ａとしては、例えば、０ｘ０：データ転送サイズ、０ｘ４：転送元アドレス、０ｘ８：転送先アドレスといった情報が含まれる。さらに、システムメモリ１２は、転送元データ領域１２ｂおよび転送先データ領域１２ｃを含む。
【０１００】
メインＣＰＵ１１が機能ブロック１４のサブＤＭＡＣ４に対して処理要求を行う(Ｐ２２)と、サブＤＭＡＣ４は、ディスクリプタ１２ａを読み出す(Ｐ２３)。さらに、サブＤＭＡＣ４は、そのディスクリプタ１２ａの情報に従い、機能マクロ５に対してシステムメモリ１２からのデータを転送(ＤＭＡ転送)する(Ｐ２４)。
【０１０１】
そして、機能マクロ５において、所定のデータ処理が行われ(Ｐ２５)、サブＤＭＡＣ４は、その処理後のデータをディスクリプタ１２ａに従ってシステムメモリ１２に転送する(Ｐ２６)。
【０１０２】
ここで、メインＣＰＵ１１は、上述したＰ２１およびＰ２２の処理のみを行い、後の処理(Ｐ２３，Ｐ２４，Ｐ２６)をサブＤＭＡＣ４に任せることができるため、メインＣＰＵ１１のリソースの消費を低減することが可能になる。
【０１０３】
図１２は、第１実施例の半導体集積回路において、リソース競合時の処理の一例を、サブＤＭＡＣ４に注目して説明するためのブロック図であり、メインＣＰＵ１１がサブＤＭＡＣ(プログラマブルＤＭＡＣ)４にＤＭＡ転送指示を出した後の処理を示す。
【０１０４】
すなわち、図１２は、図１１におけるＰ２３およびＰ２４の処理を説明するためのものであり、図１２に示す処理(Ｐ３１〜Ｐ３９)は、例えば、システムの電源投入時等の初期化時に命令ＲＡＭ４１にロードされた制御コード(専用コード)に従って実行される。
【０１０５】
ここで、図１２は、図８および図９を参照して説明したＤＭＡＣコア４０(命令ＲＡＭ４１およびプログラマブルコア４２)、ＤＭＡＣチャネルレジスタ４３、データバッファ(内部バッファ)４４をシステムメモリ１２と共に示す。なお、サブＤＭＡＣ４によるデータ転送の全体的な手順は、図１１を参照して説明したのと同様である。
【０１０６】
図１２に示されるように、例えば、ＤＭＡＣチャネルレジスタ４３におけるチャネル００のレジスタＢのデータ(スタートアドレス)をコアレジスタ４２５の第１レジスタにロードする(Ｐ３１)。
【０１０７】
次に、コア制御部４２３により、バッファアドレス(命令ＲＡＭ４１上の定数)をコアレジスタ４２５の第２レジスタにロードする(Ｐ３２)。さらに、コアレジスタ４２５の第２レジスタ上の定数値であるディスクリプタ１２ａのワード数をコアレジスタ４２５の第３レジスタにロードする(Ｐ３３)。これにより、コアレジスタ４２５の第３レジスタには、例えば、上述した０ｘ０〜０ｘ８の３ワード分のデータが格納される。
【０１０８】
さらに、コアレジスタ４２５の第１レジスタの指すレジスタから、その第３レジスタ設定ワード数分、ディスクリプタ１２ａのデータをコアレジスタ４２５(内部レジスタ)に読み出す(Ｐ３４)。これにより、例えば、３ワード分のデータ(０ｘ０：データ転送サイズ、０ｘ４：転送元アドレス、０ｘ８：転送先アドレス)が内部レジスタに格納される。
【０１０９】
また、処理Ｐ３４で読み出したデータ転送サイズ(０ｘ０)に基づいて、例えば、ブロックコピー発行回数を計算してコアレジスタ４２５の第３レジスタに格納(上書き)する(Ｐ３５)。
【０１１０】
さらに、処理Ｐ３４で読み出した転送元アドレス(０ｘ４)をコアレジスタ４２５の第１レジスタにロードする(Ｐ３６)。そして、ブロックコピー(ＤＭＡによるデータのブロック転送)を実行する(Ｐ３７)。
【０１１１】
なお、Ｐ３８は、コア演算部４２４により、処理Ｐ３５で計算した発行回数から１を差し引く処理を示し、また、Ｐ３９は、コピーコマンド発行回数が０でない(≠０)ならば、処理Ｐ３４にジャンプする処理を示す。
【０１１２】
このように、本実施例によれば、例えば、ＤＭＡ転送に使用するシステムメモリ(ホスト)のアドレスおよび転送するデータサイズ等のパラメータとなる部分は、ハードワイヤードだけでなく、命令ＲＡＭ４１上の制御コード(コマンド)により制御する。
【０１１３】
これにより、命令単位でのアクセスが可能になり、その他の分岐命令や演算命令と組み合わせることで、転送データサイズの細かな調整や転送のタイミングの調整等を、ハードウェア(回路)を変更せずに実現することができる。
【０１１４】
次に、メインＤＭＡＣ１３とサブＤＭＡＣ４のリソースの競合時の処理を説明する。まず、第１のリソース競合時の処理は、メインＤＭＡＣ１３の転送を阻害することなく、そのメインＤＭＡＣ１１の動作状況を確認することでサブＤＭＡＣ４の動作を変更するものである。また、第２のリソース競合時の処理は、例えば、内蔵タイマーを使用してシステムバス(バス)１０の利用状況を判断するものである。
【０１１５】
上述した第１のリソース競合時の処理は、図１３〜図１５(図１３〜図１８)を参照して以下に詳述し、また、第２のリソース競合時の処理は、図１３および図１９〜図２２を参照して後に詳述する。
【０１１６】
ここで、第１のリソース競合時の処理の前提として、サブＤＭＡＣ４(例えば、コアレジスタ４２５の第１レジスタ)に対して、システムメモリ１２に格納されているメインＤＭＡＣ１３のステイタスレジスタのアドレスを設定しておく。そして、サブＤＭＡＣ４(ＤＭＡＣコア４０)の命令ＲＡＭ４１にロードするコードを変更することにより、リソース競合時の処理を行う。
【０１１７】
この場合、例えば、サブＤＭＡＣ４のチャネルレジスタ４３の使用していないチャネルのレジスタを利用して行う、或いは、命令ＲＡＭ４１にロードするコードに対してメインＤＭＡＣ１３のステイタスレジスタのアドレスを直接記載して行うことができる。
【０１１８】
具体的に、例えば、チャネルレジスタ４３のレジスタＢのデータをコアレジスタ４２５の第１レジスタにロードし、或いは、システムメモリ１２からコアレジスタ４２５の第１レジスタに直接ロードする。
【０１１９】
そして、コアレジスタ４２５の第２レジスタに対して第１レジスタの指すデータを読み出し、その第１レジスタの値を確認(条件分岐コマンド)する。すなわち、条件が成立ならば、メインＤＭＡＣ１３のステイタスレジスタのアドレスを第１レジスタに対してロードし、条件が不成立ならば、転送処理コードに従った処理を行う。
【０１２０】
すなわち、第１のリソース競合時の処理は、ハードウェアに変更を加えることなく制御コードを追加し、メモリマップ上に存在するメインＤＭＡＣ１３等のモジュールのステイタスを確認することで、サブＤＭＡＣ４の動作タイミングを変更することができる。
【０１２１】
図１３は、第１実施例の半導体集積回路において、リソース競合時の処理の一例を、半導体集積回路全体に注目して説明するためのブロック図である。
【０１２２】
ここで、図１３は、前述した図１０或いは図１１に示す半導体集積回路に対して、メインＤＭＡＣ１３および他のスレーブ回路１５’を明示したものに相当する。なお、図１３において、参照符号Ｐ４１は、サブＤＭＡＣ４によるＤＭＡ転送処理を示し、また、Ｐ４２およびＰ４３は、メインＤＭＡＣ１３によるＤＭＡ転送処理を示す。
【０１２３】
ところで、メインＤＭＡＣ１３のステイタス情報として、例えば、ＤＭＡ転送を行う際のデータサイズ(ＴＣ(Transfer Count)フィールドが挙げられる。例えば、メインＤＭＡＣ１３がＴＣフィールドを備えており、ＤＭＡ転送中には０以外の値を示している場合、そのＴＣフィールドを参照することでメインＤＭＡＣ１３の動作状況を確認することが可能になる。
【０１２４】
図１４は、図１３に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合がない時の処理の一例を示すフローチャートである。
【０１２５】
図１４に示されるように、サブＤＭＡＣ４におけるリソース競合がない場合、サブＤＭＡＣ４は、アイドル状態(ＳＴ１１)から復帰し、転送要求の判断を行う(ＳＴ１２)。そして、転送要求がないと判断する(ＳＴ１２：Ａ)と、アイドル状態(ＳＴ１１)に戻り、転送要求があると判断する(ＳＴ１２：Ｂ)と、転送準備を行う(ＳＴ１３)。ここで、ステップＳＴ１３の転送準備の処理としては、例えば、前述したディスクリプタ１２ａの取得や転送データサイズの計算といったものがある。
【０１２６】
転送準備が整うと、データ転送(ＤＭＡ転送)を行い(ＳＴ１４)、残り転送データサイズが０になるまでデータ転送を続ける(ＳＴ１５：ＮｏおよびＳＴ１４)。そして、残り転送データサイズが０になる(ＳＴ１５：Ｙｅｓ)と、データ転送を終了してアイドル状態(ＳＴ１１)に戻る。
【０１２７】
ここで、図１４に示すサブＤＭＡＣ４の処理は、ＳＴ１１〜ＳＴ１５の処理を実行させる専用コードを作成して命令ＲＡＭ４１にロードすることによって実行される。次に、サブＤＭＡＣにおけるリソース競合時の処理を説明する。
【０１２８】
図１５は、図１３に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【０１２９】
図１５に示されるように、サブＤＭＡＣ４におけるリソース競合がある場合、サブＤＭＡＣ４は、アイドル状態(ＳＴ２１)から復帰し、転送要求の判断を行う(ＳＴ２２)。そして、転送要求がないと判断する(ＳＴ２２：Ａ)と、アイドル状態(ＳＴ２１)に戻り、転送要求があると判断する(ＳＴ２２：Ｂ)と、メインＤＭＡＣ１３のＴＣフィールドを読み出す(ＳＴ２３)。
【０１３０】
さらに、メインＤＭＡＣ１３の処理状況を判断し(ＳＴ２４)、メインＤＭＡＣ１３が転送処理を実行中であると判断する(ＳＴ２４：Ａ)と、サブＤＭＡＣ４による転送を行わずに、メインＤＭＡＣ１３のＴＣフィールドを読み出す(ＳＴ２３)。ここで、メインＤＭＡＣ１３によるＤＭＡ転送が行われているか否かは、メインＤＭＡＣ１３のＴＣフィールドにより確認することができる。
【０１３１】
メインＤＭＡＣ１３が転送処理を完了してアイドル状態にあると判断する(ＳＴ２４：Ｂ)と、サブＤＭＡＣ４の転送準備を行う(ＳＴ２５)。さらに、転送準備が整うと、サブＤＭＡＣ４によるデータ転送を行い(ＳＴ２６)、残りの転送データのサイズが０になるまでデータ転送を続ける(ＳＴ２７：Ｎｏ、ＳＴ２６)。そして、残りの転送データのサイズが０になる(ＳＴ２７：Ｙｅｓ)と、データ転送を終了してアイドル状態(ＳＴ２１)に戻る。
【０１３２】
ここで図１５における処理ＳＴ２１，ＳＴ２２およびＳＴ２５〜ＳＴ２７は、図１４における処理ＳＴ１１，ＳＴ１２およびＳＴ１３〜ＳＴ１５に対応する。すなわち、図１５では、メインＤＭＡＣ１３による転送処理とサブＤＭＡＣ５による転送処理が競合する場合、メインＤＭＡＣ１３のＴＣフィールドを読み出し(ＳＴ２３)、メインＤＭＡＣ１３の転送処理の状況を判断して(ＳＴ２４)行う。
【０１３３】
すなわち、本実施例では、メインＤＭＡＣ１３のステイタスを確認するための専用コード追加し、ＴＣフィールドを読み出してメインＤＭＡＣ１３のＤＭＡ転送が完了するまで、サブＤＭＡＣ４によるＤＭＡ転送を行わないようにする。これにより、サブＤＭＡＣ４の動作タイミングを調整することが可能になる。
【０１３４】
図１６は、第１実施例の半導体集積回路の変形例におけるデータ転送方式の一例を説明するためのブロック図であり、サブＤＭＡＣ４ａ，４ｂおよび機能マクロ５ａ，５ｂが設けられた機能ブロックが２つ(１４ａ，１４ｂ)設けられているものを示す。
【０１３５】
すなわち、図１６と前述した図１３との比較から明らかなように、図１６に示す第１実施例の変形例では、第１機能ブロック１４ａおよび第２機能ブロック１４ｂの２つの機能ブロックが設けられている。第１機能ブロック１４ａには、第１サブＤＭＡＣ４ａが設けられ、第２機能ブロック１４ｂには、第２サブＤＭＡＣ４ｂが設けられている。
【０１３６】
ここで、第１機能ブロック１４ａは、例えば、図７におけるネットワークブロック１４であり、また、第２機能ブロック１４ｂは、例えば、図７におけるメモリブロック(メモリI/F)１５である。なお、サブＤＭＡＣおよび機能マクロを含む機能ブロックは、３つ以上であってもよいのはもちろんである。なお、図１６において、他の機能マクロは、他のスレーブ回路１５’に含まれる。
【０１３７】
図１６において、参照符号Ｐ５１は、サブＤＭＡＣ４ａによるＤＭＡ転送処理を示し、Ｐ５２は、サブＤＭＡＣ４ｂによるＤＭＡ転送処理を示し、また、Ｐ５３およびＰ５４は、メインＤＭＡＣ１３によるＤＭＡ転送処理を示す。
【０１３８】
図１７は、図１６に示す半導体集積回路の第１サブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【０１３９】
図１７と前述した図１５の比較から明らかなように、第１サブＤＭＡＣ４ａにおけるリソース競合がある場合の処理は、図１５と同様である。すなわち、図１７における処理ＳＴ３１〜ＳＴ３７は、図１５における処理ＳＴ２１〜ＳＴ２７に対応し、その説明は省略する。
【０１４０】
図１８は、図１６に示す半導体集積回路の第２サブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【０１４１】
図１８に示されるように、第２サブＤＭＡＣにおけるリソース競合がある場合、第１サブＤＭＡＣ４ａは、アイドル状態(ＳＴ４１)から復帰し、転送要求の判断を行う(ＳＴ４２)。そして、転送要求がないと判断する(ＳＴ４２：Ａ)と、アイドル状態(ＳＴ４１)に戻り、転送要求があると判断する(ＳＴ４２：Ｂ)と、第１サブＤＭＡＣ４ａのＴＣフィールドを読み出す(ＳＴ４３)。
【０１４２】
さらに、第１サブＤＭＡＣ４ａの処理状況を判断し(ＳＴ４４)、第１サブＤＭＡＣ４ａが転送処理を実行中であると判断する(ＳＴ４４：Ａ)と、第２サブＤＭＡＣ４ｂによる転送を行わずに、第１サブＤＭＡＣ４ａのＴＣフィールドを読み出す(ＳＴ４３)。ここで、第１サブＤＭＡＣ４ａによるＤＭＡ転送が行われているか否かは、第１サブＤＭＡＣ４ａのＴＣフィールドにより確認することができる。
【０１４３】
なお、処理ＳＴ４３およびＳＴ４４において、第２サブＤＭＡＣ４ｂでは、メインＤＭＡ１３の処理状況を確認する前に、第２サブＤＭＡＣ４ｂの処理状況を確認するコード(制御コード：コマンド)が追加される。
【０１４４】
次に、第１サブＤＭＡＣ４ａが転送処理を完了したと判断する(ＳＴ４４：Ｂ)と、メインＤＭＡＣ１３のＴＣフィールドを読み出し(ＳＴ４５)、メインＤＭＡＣ１３の転送処理の状況を判断する(ＳＴ４６)。
【０１４５】
メインＤＭＡＣ１３が転送処理を完了してアイドル状態にあると判断する(ＳＴ４６：Ｂ)と、第２サブＤＭＡＣ４ｂの転送準備を行う(ＳＴ４７)。さらに、転送準備が整うと、第２サブＤＭＡＣ４ｂによるデータ転送を行い(ＳＴ４８)、残りの転送データのサイズが０になるまでデータ転送を続ける(ＳＴ４９：Ｎｏ、ＳＴ４８)。そして、残りの転送データのサイズが０になる(ＳＴ４９：Ｙｅｓ)と、データ転送を終了してアイドル状態(ＳＴ４１)に戻る。
【０１４６】
上述したように、本第１実施例の半導体集積回路によれば、ハードウェアを簡略化することができ、ハードウェアの開発期間を短縮することができる。また、サブＤＭＡＣ４内部の命令ＲＡＭ４１にロードする専用コードを変更することで、様々なＱｏＳ制御方式の柔軟な変更が可能になる。
【０１４７】
図１９は、バスの使用率とサブＤＭＡＣによるＤＭＡ転送の関係を説明するためのタイミング図であり、上半分は、バス使用率が低い場合(Ａ)を示し、下半分は、バス使用率が高い場合(Ｂ)を示す。
【０１４８】
図１９の上半分に示されるように、バス使用率が低い場合(Ａ)、タイミングＴs において、コマンド CMD READ に従ってサブＤＭＡＣ４によるＤＭＡの読み出し(リード)要求が行われる。
【０１４９】
これにより、システムバス１０のアドレスは、例えば、タイミングＴ0 からサブＤＭＡＣ４によるリードアドレスになり、その後、システムバス１０のデータは、サブＤＭＡＣ４によるリードアドレスに対応したＤＭＡのリードデータになる。そして、このサブＤＭＡＣ４によるＤＭＡのリードデータは、タイミングＴendＡで完了する。
【０１５０】
これに対して、図１９の下半分に示されるように、バス使用率が高い場合(Ｂ)、タイミングＴs において、コマンド CMD READ に従ってサブＤＭＡＣ４によるＤＭＡのリード要求が行われるが、システムバス１０が混んでいるため期間Ｔd だけ遅延する。
【０１５１】
これは、サブＤＭＡＣ４によるＤＭＡ転送よりも優先度の高い、例えば、メインＤＭＡＣ１３によるＤＭＡ転送が続いている場合、その処理が終了してシステムバス１０が開放されるまで、サブＤＭＡＣ４によるＤＭＡ転送を待つことに起因する。
【０１５２】
システムバス１０のアドレスは、例えば、メインＤＭＡＣ１３によるＤＭＡ転送が終了したタイミングＴ1 からサブＤＭＡＣ４によるリードアドレスになる。その後、システムバス１０のデータは、サブＤＭＡＣ４によるリードアドレスに対応したＤＭＡのリードデータになり、タイミングＴendＢで完了する。
【０１５３】
このように、バス使用率が低い場合(Ａ)、サブＤＭＡＣ４によるＤＭＡ転送(読み出しデータ転送)は、ＤＭＡのリード要求(コマンド CMD READ)が行われるタイミングＴs からＤＭＡ転送が完了するタイミングＴendＡまでの通常のアクセス時間(Ｔnom)になる。
【０１５４】
一方、バス使用率が高い場合(Ｂ)、サブＤＭＡＣ４によるＤＭＡ転送は、ＤＭＡのリード要求(コマンド CMD READ)が行われるタイミングＴs からＤＭＡ転送が完了するタイミングＴendＢまでの混んでいる場合のアクセス時間(Ｔbusy)になる。
【０１５５】
本第２実施例の半導体集積回路におけるデータ転送方式は、上述したサブＤＭＡＣ４が接続されるシステムバス１０の負荷によりアクセス時間がＴnomとＴbusyのように異なることを利用するものである。
【０１５６】
本第２実施例の半導体集積回路におけるデータ転送方式は、上記アクセス時間を、例えば、サブＤＭＡＣに内蔵されたタイマーを使用して間接的に確認することで、リソースの競合を回避する。
【０１５７】
すなわち、システムバス上の負荷を確認するために、システムバス側へのアクセスを実施し、１回のアクセスにかかる時間が、想定しているサイクルを超えた場合には、サブＤＭＡＣによるデータ転送を行わないようにする。
【０１５８】
図２０は、第２実施例の半導体集積回路の一例を示すブロック図であり、図２１は、図２０に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合時の処理の一例を示すフローチャートである。
【０１５９】
図２０に示されるように本第２実施例において、サブＤＭＡＣ４は、機能マクロ５に接続され、ＤＭＡＣコア４０、ＤＭＡＣチャネルレジスタ４３、データバッファ４４および内蔵タイマー４６を含む。なお。図２０において、図８のシステムバスインターフェース４５は省略されている。
【０１６０】
すなわち、本第２実施例のサブＤＭＡＣ４(ＤＭＡＣコア４０)は、タイマー４６を含み、このタイマー４６を使用して、サブＤＭＡＣ４におけるリソース競合時の処理を行うようになっている。
【０１６１】
ここで、図２０における参照符号ＳＴ５１〜ＳＴ６１は、図２１のフローチャートにおける処理ＳＴ５１〜ＳＴ６１に対応し、プログラマブルコア４２により実行される。すなわち、プログラマブルコア４２は、処理ＳＴ５１を命令ＲＡＭ４１のアイドルとして実行し、処理ＳＴ５９〜ＳＴ６１を命令ＲＡＭ４１のダミーウェイトループとして実行する。
【０１６２】
また、プログラマブルコア４２は、処理ＳＴ５２をＤＭＡＣチャネルレジスタ４３から命令ＲＡＭ４１へのデータ読み込みとして実行し、処理ＳＴ５３を内蔵タイマー４６へのアクセスとして実行し、処理ＳＴ５５を内蔵タイマー４６からの応答として実行する。
【０１６３】
さらに、プログラマブルコア４２は、処理ＳＴ５４およびＳＴ５６をシステムメモリ１２のディスクリプタデータ１２ａからのデータ読み出しとして実行する。そして、プログラマブルコア４２は、処理ＳＴ５７およびＳＴ５８を転送データ１２ｂ，１２ｃと内蔵データバッファ４４の間のＤＭＡデータ転送として実行する。
【０１６４】
すなわち、図２０および図２１に示されるように、サブＤＭＡＣ４におけるリソース競合がある場合、サブＤＭＡＣ４は、アイドル状態(ＳＴ５１)から復帰し、転送要求の判断を行う(ＳＴ５２)。
【０１６５】
ここで、転送要求の処理は、例えば、ＤＭＡＣチャネルレジスタ４３におけるチャネルｎの転送要求レジスタからのデータを命令ＲＡＭ４１に読み込んでプログラマブルコア４２が転送要求の有無の判断を行う。そして、転送要求がないと判断する(ＳＴ５２：Ａ)と、アイドル状態(ＳＴ５１)に戻り、転送要求があると判断する(ＳＴ５２：Ｂ)と、内蔵タイマーのクリアを行う(ＳＴ５３)。
【０１６６】
すなわち、サブＤＭＡＣ４が実行する命令(制御コード) を使用することで現在のタイマー値をクリアして、タイマーを再スタートする。具体的に、サブＤＭＡＣ４のデータ転送に使用しないチャネルモジュールに搭載されたタイマーに対して、通常のアクセスサイクルを閾値として書き込む(ライトする)ことにより実現する。このように、タイマー(４６)は、サブＤＭＡＣ４に内蔵したものを使用してもよいが、他のタイマーを流用することもできる。
【０１６７】
さらに、サブＤＭＡＣ４により、バス使用率の確認を行う(ＳＴ５４)。すなわち、システムメモリ１２のディスクリプタ１２ａを１ワード読み出し、タイマーのステイタスを確認する(ＳＴ５５)。
【０１６８】
すなわち、処理ＳＴ５５では、処理ＳＴ５３による読み出しを開始する直前にタイマーをクリアしてから、による読み出し完了後のタイマーのステイタスを確認することで、読み出しに要した時間と想定しているアクセス時間との比較判定を行う。
【０１６９】
タイマーのステイタスがＴnomを超えていないと判断すると(ＳＴ５５：Ｂ)、すなわち、バス使用率が低い、例えば、メインＤＭＡＣ１３によるリソース競合がないと判断すると、サブＤＭＡＣ４の転送準備を行う(ＳＴ５６)。このサブＤＭＡＣ４によるＤＭＡデータ転送の準備としては、例えば、ディスクリプタ１２ａを取得して転送データサイズの計算を行うことが含まれる。
【０１７０】
さらに、転送準備が整うと、サブＤＭＡＣ４によるデータ転送を行い(ＳＴ５７)、残りの転送データのサイズが０になるまでデータ転送を続ける(ＳＴ５８：Ｎｏ、ＳＴ５７)。そして、残りの転送データのサイズが０になる(ＳＴ５８：Ｙｅｓ)と、データ転送を終了してアイドル状態(ＳＴ５１)に戻る。
【０１７１】
一方、タイマーのステイタスがＴnomを超えたと判断すると(ＳＴ５５：Ａ)、すなわち、バス使用率が高い、例えば、メインＤＭＡＣ１３によるリソース競合があると判断すると、内部レジスタにウェイト時間(Ｔｗ)を設定(ＳＴ６１)する。
【０１７２】
さらに、ウェイト時間を１減らし(ＳＴ６０、Ｔｗ＝Ｔｗ−１)、ウェイト時間が０になるまでウェイト時間を１減らす(ＳＴ５９：Ｎｏ、ＳＴ６０)。そして、ウェイト時間が０になる(ＳＴ５９：Ｙｅｓ)と、内蔵タイマーをクリアして同様の処理(ＳＴ５３〜ＳＴ５８)を繰り返す。すなわち、ウェイト時間が０になる(ＳＴ５９：Ｙｅｓ)と判断した後、再度、バス使用率の確認を行って(ＳＴ５４)、処理を実行する。
【０１７３】
このように、例えば、サブＤＭＡＣ４が実行する制御コード(命令)により図２０のフローチャートを実行可能とすることで、ハードウェアの変更を行うことなく、システムバス１０のリソースの状況を確認してデータ転送を行うかどうかを判断することができる。
【０１７４】
図２２は、図２０に示す半導体集積回路のサブＤＭＡＣにおけるリソース競合時の処理の他の例を示すフローチャートである。
【０１７５】
図２２と上述した図２１の比較から明らかなように、図２２における処理ＳＴ７１〜ＳＴ７８は、図２１における処理ＳＴ５１〜ＳＴ５８に対応するので、その説明は省略する。
【０１７６】
すなわち、タイマーのステイタスがＴnomを超えたと判断すると(ＳＴ７５：Ａ)、すなわち、バス使用率が高い、例えば、メインＤＭＡＣ１３によるリソース競合があると判断すると、内部レジスタにウェイト時間(Ｔｗ)を設定(ＳＴ８１)する。
【０１７７】
さらに、ウェイト時間を１減らし(ＳＴ８０、Ｔｗ＝Ｔｗ−１)、ウェイト時間が０になるまでウェイト時間を１減らす(ＳＴ７９：Ｎｏ、ＳＴ８０)。そして、ウェイト時間が０になる(ＳＴ７９：Ｙｅｓ)と、バス使用率が低くなった、例えば、メインＤＭＡＣ１３によるリソース競合が終了したとみなして、サブＤＭＡＣ４の転送準備を行う(ＳＴ７６)。
【０１７８】
このサブＤＭＡＣ４によるＤＭＡデータ転送の準備としては、例えば、ディスクリプタ１２ａを取得して転送データサイズの計算を行うことが含まれる。さらに、転送準備が整うと、サブＤＭＡＣ４によるデータ転送を行い(ＳＴ７７)、残りの転送データのサイズが０になるまでデータ転送を続ける(ＳＴ７８：Ｎｏ、ＳＴ５７)。そして、残りの転送データのサイズが０になる(ＳＴ７８：Ｙｅｓ)と、データ転送を終了してアイドル状態(ＳＴ７１)に戻る。
【０１７９】
このように、図２２に示すサブＤＭＡＣにおけるリソース競合時の処理は、タイマーのステイタスがＴnomを超えたと判断した場合(ＳＴ７５：Ａ)、バス使用率の確認を行う(ＳＴ７４)処理を行うことなく、リソース競合が終了したと判断する。
【０１８０】
従って、図２１の例よりも高速な処理が可能となり得るが、例えば、タイマーによる設定値(推定値)が適したものでないと、サブＤＭＡＣ４とメインＤＭＡＣ１３の処理が競合状態になる。この場合には、他の処理、例えば、メインＣＰＵ１１による調停処理で解決することになる。
【０１８１】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【０１８２】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第１ＤＭＡコントローラと、
所定の機能を実現する機能マクロ，前記メモリと前記機能マクロ間のデータ転送を制御する第２ＤＭＡコントローラ，および，前記メモリと前記機能マクロのＤＭＡ転送に関するアクセス条件を設定するアクセス条件設定部を含む、前記バスに接続された少なくとも１つの機能ブロックと、
を有する、ことを特徴とする半導体集積回路。
【０１８３】
（付記２）
前記アクセス条件設定部は、
前記メモリのアドレスおよび転送サイズを含む前記アクセス条件を、命令単位で設定するレジスタおよび制御コード格納部を含む、
ことを特徴とする付記１に記載の半導体集積回路。
【０１８４】
（付記３）
前記制御コード格納部は、
前記第２ＤＭＡコントローラに設けられた命令メモリであり、
前記命令メモリには、初期設定時に、前記命令単位で設定される前記アクセス条件を規定する制御コードが書き込まれる、
ことを特徴とする付記２に記載の半導体集積回路。
【０１８５】
（付記４）
前記命令メモリには、電源投入時に、前記演算処理装置によって前記制御コードが書き込まれる、
ことを特徴とする付記３に記載の半導体集積回路。
【０１８６】
（付記５）
前記第２ＤＭＡコントローラは、
前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記第１ＤＭＡコントローラのステイタス情報，前記命令単位で設定された前記レジスタの内容および前記制御コード格納部に格納された制御コードに従って、前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする付記２乃至付記４のいずれか１項に記載の半導体集積回路。
【０１８７】
（付記６）
前記第１ＤＭＡコントローラのステイタス情報は、前記メモリに格納され、
前記第２ＤＭＡコントローラは、前記メモリに格納された前記第１ＤＭＡコントローラのステイタス情報を使用して前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする付記５に記載の半導体集積回路。
【０１８８】
（付記７）
前記第１ＤＭＡコントローラのステイタス情報は、
前記第１ＤＭＡコントローラによるＤＭＡ転送のデータサイズフィールドを含む、
ことを特徴とする付記５または付記６に記載の半導体集積回路。
【０１８９】
（付記８）
さらに、時間を計測するタイマーを含み、
前記第２ＤＭＡコントローラは、
前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定し、前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする付記２乃至付記４のいずれか１項に記載の半導体集積回路。
【０１９０】
（付記９）
前記第２ＤＭＡコントローラは、
前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、前記タイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定すると共に、前記バスの使用率をチェックして、前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする付記８に記載の半導体集積回路。
【０１９１】
（付記１０）
前記タイマーは、前記第２ＤＭＡコントローラに内蔵されている、
ことを特徴とする付記８または付記９に記載の半導体集積回路。
【０１９２】
（付記１１）
前記少なくとも１つの機能ブロックは、
それぞれが、付記１〜１０のいずれか１項に記載の第２ＤＭＡコントローラを有する第１機能ブロックおよび第２機能ブロックを含む、
ことを特徴とする半導体集積回路。
【０１９３】
（付記１２）
前記第１機能ブロックの第２ＤＭＡコントローラは、
前記メモリに対するアクセスが前記第２機能ブロックの第２ＤＭＡコントローラによるアクセスと競合するとき、前記第２機能ブロックの第２ＤＭＡコントローラの処理状況を確認して、前記第２機能ブロックの第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする付記１１に記載の半導体集積回路。
【０１９４】
（付記１３）
前記少なくとも１つの機能ブロックは、
付記１〜１０のいずれか１項に記載の第２ＤＭＡコントローラを有する第３機能ブロック、および、前記第２ＤＭＡコントローラを持たない第４機能ブロックを含む、
ことを特徴とする半導体集積回路。
【０１９５】
（付記１４）
前記半導体集積回路を製品に適用した後、前記アクセス条件設定部に格納するデータを書き替えて、前記メモリと前記機能マクロのＤＭＡ転送に関するアクセス条件を変更する、
ことを特徴とする付記１乃至付記１３のいずれか１項に記載の半導体集積回路。
【０１９６】
（付記１５）
バスと、
前記バスに接続されたメモリと、
前記バスに接続された演算処理装置と、
前記バスに接続された第１ＤＭＡコントローラと、
所定の機能を実現する機能マクロ、および、前記メモリと前記機能マクロ間のデータ転送を制御する第２ＤＭＡコントローラを含む、前記バスに接続された少なくとも１つの機能ブロックと、
を有する半導体集積回路のＤＭＡ制御方法であって、
前記メモリに対するアクセスが前記第１ＤＭＡコントローラによるアクセスと競合するとき、
前記第１ＤＭＡコントローラのステイタス情報により前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を確認し、或いは、
時間を計測するタイマーを使用して前記第１ＤＭＡコントローラによるＤＭＡ転送の状態を推定し、
前記第２ＤＭＡコントローラによるアクセスを制御する、
ことを特徴とする半導体集積回路のＤＭＡ制御方法。
【符号の説明】
【０１９７】
１，１０１    画像処理装置(半導体集積回路：ＳｏＣ)
２，１０２    撮像部
４    サブＤＭＡＣ(プログラマブルＤＭＡＣ：第２ＤＭＡコントローラ)
５    機能マクロ(イーサネット（登録商標）I/F)
１０，１１０    システムバス(バス)
１１，１１１    ＣＰＵ(メインＣＰＵ、演算処理装置)
１２，１１２    内部メモリ(システムメモリ、メモリ)
１３，１１３    メインＤＭＡＣ(第１ＤＭＡコントローラ)
１４    機能ブロック
１５，１１５    メモリインターフェース(I/F)
１５’，１６０    他のスレーブ回路
１６，１１６    表示用I/F
１７，１１７    メディア用I/F
１８，１１８    プリプロセス処理部
１９，１１９    画像処理部
２１，１２１    撮影レンズ
２２，１２２    撮像素子
２３，１２３    Ａ／Ｄ変換回路
３１，１３１    外部メモリ
３２，１３２    表示部
３３，１３３    記録メディア
４０    ＤＭＡＣコア
４１    命令ＲＡＭ(命令メモリ、制御コード格納部)
４２    プログラマブルコア
４３    ＤＭＡＣチャネルレジスタ(レジスタ)
４４    データバッファ
４５    システムバスインターフェース
【図１】
0005888050.tif 000002
【図２】
0005888050.tif 000003
【図３】
0005888050.tif 000004
【図４】
0005888050.tif 000005
【図５】
0005888050.tif 000006
【図６】
0005888050.tif 000007
【図７】
0005888050.tif 000008
【図８】
0005888050.tif 000009
【図９】
0005888050.tif 000010
【図１０】
0005888050.tif 000011
【図１１】
0005888050.tif 000012
【図１２】
0005888050.tif 000013
【図１３】
0005888050.tif 000014
【図１４】
0005888050.tif 000015
【図１５】
0005888050.tif 000016
【図１６】
0005888050.tif 000017
【図１７】
0005888050.tif 000018
【図１８】
0005888050.tif 000019
【図１９】
0005888050.tif 000020
【図２０】
0005888050.tif 000021
【図２１】
0005888050.tif 000022
【図２２】
0005888050.tif 000023