(57)【特許請求の範囲】
【請求項１】
継続的に入力されるデータに対して所定の処理を順次行う半導体集積回路において、
ホストＣＰＵと、
前記所定の処理を実行するデータエンジンと、
複数のシーケンサとを備え、
前記ホストＣＰＵと前記データエンジンと前記複数のシーケンサは、前記ホストＣＰＵと前記データエンジンを夫々最上段と最下段にして階層的に接続されており、
各前記シーケンサは、
自身の実行用のパラメータを格納するメモリと、
メモリコントローラと、
ループカウンタと、
シーケンスコントローラと、
該シーケンサの外部との信号の送受信を行うインタフェース部とを備え、
前記データエンジンは、
自身の実行用のパラメータを格納するメモリと、
該データエンジンの外部との信号の送受信を行うインタフェース部とを備え、
前記ホストＣＰＵは、該ホストＣＰＵの外部との信号の送受信を行うインタフェース部を備え、
前記複数のシーケンサのインタフェース部は、同一の仕様を有し、それぞれが、
該シーケンサの外部の機能ブロックにおけるメモリにアクセスするための第１のマスタインタフェース部と、
該シーケンサの外部の機能ブロックの実行を制御するための第２のマスタインタフェース部と、
該シーケンサの外部の機能ブロックにより該シーケンサのメモリをアクセスされるための第１のスレーブインタフェース部と、
該シーケンサの外部の機能ブロックにより該シーケンサの実行を制御されるための第２のスレーブインタフェース部とを有し、
前記ホストＣＰＵのインタフェース部は、前記複数のシーケンサの第１のマスタインタフェース部と第２のマスタインタフェース部と夫々同一の仕様を有する第１のマスタインタフェース部と第２のマスタインタフェース部とを有し、
前記データエンジンのインタフェース部は、前記複数のシーケンサの第１のスレーブインタフェース部と第２のスレーブインタフェース部と夫々同一の仕様を有する第１のスレーブインタフェース部と第２のスレーブインタフェース部とを有し、
前記ホストＣＰＵと、前記複数のシーケンサと、前記データエンジンは、
上段が、自身の第１のマスタインタフェース部と、１つまたは複数の下段の第１のスレーブインタフェース部とを介して、該１つまたは複数の下段のメモリにアクセスし、
上段が、自身の第２のマスタインタフェース部と、直下段の第２のスレーブインタフェ
ース部とを介して、該直下段の実行を制御するように接続されていることを特徴とする半導体集積回路。
【請求項２】
前記複数のシーケンサと前記データエンジンは、自身のメモリに設定された前記パラメータを参照しながら処理を実行し、
前記ホストＣＰＵと前記複数のシーケンサは、
１つまたは複数の下段のメモリに前記パラメータを設定すると共に、
直下段のメモリに格納された、前記処理の進行に伴って変化する前記パラメータの状態を参照して、該直下段の実行を制御することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記複数のシーケンサと前記データエンジンの夫々のメモリは、第１のメモリと第２のメモリを有し、
前記複数のシーケンサと前記データエンジンは、
自身の第１のメモリに設定された前記パラメータを第２のメモリにコピーして、該第２のメモリにコピーされた前記パラメータを参照しながら処理を実行し、
前記ホストＣＰＵと前記複数のシーケンサは、
１つまたは複数の下段に対して前記パラメータを設定する際に、該１つまたは複数の下段の第１のメモリに前記パラメータを設定し、
直下段の実行を制御する際に、該直下段の第２のメモリにおける前記パラメータの状態を参照することを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記ホストＣＰＵと前記複数のシーケンサは、
下段が前記処理を実行しているときに、
該下段に対して次に設定するパラメータを自身のメモリに一時的に格納し、
該下段が前記処理を完了したときに、
自身のメモリに一時的に格納した前記次に設定するパラメータを前記下段のメモリに転送することを特徴とする請求項２に記載の半導体集積回路。
【請求項５】
前記複数のシーケンサと前記データエンジンに対して、クロック供給の制御を行うクロ
ック制御部をさらに備え、
前記複数のシーケンサのインタフェース部は、夫々が、
前記クロック制御部からのクロックの供給を受けて該シーケンサに供給するクロック入力インタフェース部と、
該シーケンサと、該シーケンサの直下段のいずれか一方または両方に対するクロックの供給を制御可能なクロック制御信号を前記クロック制御部に出力するクロック制御インタフェース部とをさらに有し、
前記データエンジンのインタフェース部は、前記クロック制御部からのクロックの供給を受けて該データエンジンに供給するクロック入力インタフェース部をさらに有し、
前記クロック制御部は、各前記シーケンサからの前記クロック制御信号に従って、該シーケンサまたは該シーケンサの直下段へのクロックの供給の制御を行うことを特徴とする請求項１から４のいずれ１項に記載の半導体集積回路。
【請求項６】
前記複数のシーケンサと前記データエンジンに対して、電源供給の制御を行う電源制御部をさらに備え、
前記複数のシーケンサの前記インタフェース部は、夫々が、
前記電源制御部からの電源の供給を受けて該シーケンサに供給する電源入力インタフェース部と、
該シーケンサと、該シーケンサ直下段のいずれか一方または両方に対する電源の供給を制御可能な電源制御信号を前記電源制御部に出力する電源制御インタフェース部とをさらに有し、
前記データエンジンのインタフェース部は、前記電源制御部からの電源の供給を受けて該データエンジンに供給する電源入力インタフェース部をさらに有し、
前記電源制御部は、各前記シーケンサからの前記電源制御信号に従って、該シーケンサまたは該シーケンサの直下段への電源の供給を行うことを特徴とする請求項１から５のいずれか１項に記載の半導体集積回路。
【請求項７】
前記複数のシーケンサと前記データエンジンは、
直上段により実行を制御されて開始した処理の完了時に、前記直上段にトリガ信号を送信することを特徴とする請求項５または６に記載の半導体集積回路。
【請求項８】
前記複数のシーケンサは、
下段のシーケンサが、自身の第１のマスタインタフェース部と、
１つまたは複数の上段のシーケンサの第１のスレーブインタフェース部とを介して、該１つまたは複数の上段のシーケンサのメモリにアクセス可能に接続されていることを特徴とする請求項１から７のいずれか１項に記載の半導体集積回路。
【請求項９】
前記データエンジンのインタフェース部は、前記複数のシーケンサの前記第１のマスタインタフェース部と同一の仕様を有する第１のマスタインタフェース部をさらに備え、
前記データエンジンは、
自身の第１のマスタインタフェース部と、１つまたは複数のシーケンサの第１のスレーブインタフェース部とを介して、該１つまたは複数のシーケンサのメモリにアクセス可能に接続されていることを特徴とする請求項１から８のいずれか１項に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、具体的には、複数のシーケンサを備える半導体集積回路に関する。
【背景技術】
【０００２】
データが継続的に入力される動画像処理装置や通信装置などに備えられた、入力データに対して所定の処理を順次行う半導体集積回路に、シーケンサが多く用いられており、これらの半導体集積回路に対して、種々の視点からの提案がなされている。
【０００３】
例えば、特許文献１には、２値画像信号符号化ＬＳＩ（半導体集積回路）の高速化やコスト効果を実現するために、制御ブロックをライン周期で制御する全体制御ブロックと符号語単位の制御に分割し、符号語単位のシーケンス制御を符号化演算ブロックに組み込んだ技術が開示されている。図１４を参照して説明する。
【０００４】
図１４は、特許文献１における図１に対して各機能ブロックの符号を変更したものである。図１４に示すように、符号化ＬＳＩ３１は、制御ＭＰＵ４２と接続するシステムバスＩ／Ｆ３３、システムバスＩ／Ｆ３３を介して制御ＭＰＵ４２と接続される全体制御シーケンサ３２、画像バスＩ／Ｆ３４、ラインメモリ部３５、符号化演算部４０を備える。符号化演算部４０は、変化点検出＆モード判定処理部３６、符号生成部３７、符号パック部３８、符号出力ＦＩＦＯ３９を有し、これらはパイプライン処理を行う。
【０００５】
画像データは、画像データ入力装置４１から画像バスＩ／Ｆ３４を介してラインメモリ部３５に入力され、さらに、ラインメモリ部３５から符号化演算部４０の変化点検出＆モード判定処理部３６に出力され、変化点検出＆モード判定処理部３６、符号生成部３７、符号パック部３８、符号出力ＦＩＦＯ３９の処理を経て符号化バスへ出力される。
【０００６】
符号化演算部４０に含まれる各機能ブロックは、該機能ブロックが行う処理を制御するブロックシーケンサ（図示せず）を有し、これらのブロックシーケンサは、全体制御シーケンサ３２によって制御される。なお、全体制御シーケンサ３２は、主に各ブロックシーケンサの処理のスタート／ストップの制御を行い、ブロックシーケンサは、その機能ブロックが行う処理に特化した制御を行う。
【０００７】
特許文献２には、揚運炭設備に備えられたシーケンサの故障状態をモニタリングする装置が開示されている。図１５を参照してこの装置を説明する。
【０００８】
図１５は、特許文献２における図１である。図示の故障状態モニタリング装置１０は、モニタリング制御装置を構成するＣＰＵ１１と、該ＣＰＵ１１に対する２つの入力装置１３を有する。２つの入力装置１３は、信号伝送ユニットで構成され、２つの揚運炭ラインＡ、Ｂそれぞれのシーケンサ１２からシーケンサ接点のオン・オフ信号をＣＰＵ１１の記憶装置１４に入力する。
【０００９】
この装置で、記憶装置１４にシーケンサ１２の接点のオン・オフ信号を故障原因に対応して入力すると共に、階層化して記憶させておき、故障原因を含む階層とその上流側の階層をディスプレイ１５で故障と表示させ、この表示に基づき、マウス１７で上層から下層に向かって展開することを繰り返して故障原因の調整ができるようになり、シーケンサプログラムを解読することなく、簡単に故障原因が分かると開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平６−２５３１５７号公報
【特許文献２】特平１０−１９８４２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
近年、動画像処理装置や通信装置などに対する高速化の要求が高まる一方であり、これらの装置に使用されるシステムＬＳＩも、並列処理数が増加し、回路規模が大きくなる。また、システムＬＳＩの設計に当たっては、用途、顧客のニーズ、市場状況などの影響を受けて、性能向上のために、機能ブロックの新規追加、機能ブロックの並列処理数の増加、機能ブロックの制御方法の細分化などが要求され、様々に変更される実態がある。
【００１２】
このような背景において、上述した各変更の容易性を実現できる制御構成が求められている。
【００１３】
図１４に示すような符号化ＬＳＩ３１では、全体制御シーケンサ３２と、符号化演算部４０の各ブロックシーケンサとは、別々の仕様を有するため、新しい機能の追加や制御の変更が困難である。
【００１４】
図１４に示すような符号化ＬＳＩ３１では、全体制御シーケンサ３２と、符号化演算部４０の各ブロックシーケンサとは、入出力する信号の種類が異なるなど、別々のインタフェース仕様を有するため、新しい機能の追加や制御の変更が困難である。例えば、符号化演算部４０の各ブロックシーケンサは、自身の属する機能ブロックが行う処理に特化した制御を行うために、それぞれ異なる制御信号が必要であると考えられる。この場合、なんらかの新しい機能をその機能ブロックに行わせようとして回路等の追加を行うと、当該ブロックシーケンサの制御の動作まで変更しなければならず、機能ブロック全体を大きく設定変更する必要がある。
【課題を解決するための手段】
【００１５】
本発明の一つの態様は、継続的に入力されるデータに対して所定の処理を順次行う半導体集積回路である。この半導体集積回路は、ホストＣＰＵと、前記所定の処理を実行するデータエンジンと、複数のシーケンサを備える。
【００１６】
ホストＣＰＵとデータエンジンと複数のシーケンサは、ホストＣＰＵとデータエンジンを夫々最上段と最下段にして階層的に接続されている。
【００１７】
各シーケンサは、自身の実行用のパラメータを格納するメモリと、メモリコントローラと、ループカウンタと、シーケンスコントローラと、該シーケンサの外部との信号の送受信を行うインタフェース部とを備える。
【００１８】
なお、「パラメータ」とは、当該シーケンサの実行に用いられる種々のデータを意味し、例えば、該シーケンサが実行するプログラムのコード、シーケンス制御を行う上で必要な値などを含むことができる。なお、「シーケンス制御を行う上で必要な値」は、例えば、画像処理の場合における画像サイズや、画素の行数、列数などである。
【００１９】
データエンジンは、自身の実行用のパラメータを格納するメモリと、該データエンジンの外部との信号の送受信を行うインタフェース部を備える。ここの「パラメータ」も、データエンジンの実行に用いられる種々のデータを意味する。
【００２０】
ホストＣＰＵは、該ホストＣＰＵの外部との信号の送受信を行うインタフェース部を備える。
【００２１】
これらの複数のシーケンサのインタフェース部は、同一の仕様を有し、それぞれが、第１のマスタインタフェース部と、第２のマスタインタフェース部と、第１のスレーブインタフェース部と、第２のスレーブインタフェース部を有する。
【００２２】
各シーケンサのインタフェース部が「同一の仕様を有する」とは、これらのインタフェース部は、同一の構成を有し、それらの上を流れる信号のビット幅や、各ビットの意義が同一であることを意味する。
【００２３】
シーケンサの第１のマスタインタフェース部は、該シーケンサの外部の機能ブロックにおけるメモリにアクセスするためのインタフェースである。
【００２４】
シーケンサの第２のマスタインタフェース部は、該シーケンサの外部の機能ブロックの実行を制御するためのインタフェースである。なお、「実行を制御」することは、例えば実行の開始と停止などの制御である。
【００２５】
シーケンサの第１のスレーブインタフェース部は、該シーケンサの外部の機能ブロックにより該シーケンサのメモリをアクセスされるためのインタフェースである。
【００２６】
シーケンサの第２のスレーブインタフェース部は、該シーケンサの外部の機能ブロックにより該シーケンサの実行を制御されるためのインタフェースである。
【００２７】
ホストＣＰＵのインタフェース部は、シーケンサの第１のマスタインタフェース部と第２のマスタインタフェース部と夫々同一の仕様を有する第１のマスタインタフェース部と第２のマスタインタフェース部を有する。ホストＣＰＵの第１のマスタインタフェース部は、ホストＣＰＵが、自身の外部の機能ブロックにおけるメモリにアクセスするためのインタフェースであり、ホストＣＰＵの第２のマスタインタフェース部は、ホストＣＰＵが、自身の外部の機能ブロックの実行を制御するためのインタフェースである。
【００２８】
データエンジンのインタフェース部は、シーケンサの第１のスレーブインタフェース部と第２のスレーブインタフェース部と夫々同一の仕様を有する第１のスレーブインタフェース部と第２のスレーブインタフェース部を有する。データエンジンの第１のスレーブインタフェース部は、データエンジンが、データエンジンの外部の機能ブロックによりメモリをアクセスされるためのインタフェースであり、データエンジンの第２のスレーブインタフェース部は、データエンジンが、データエンジンの外部の機能ブロックにより実行を制御されるためのインタフェースである。
【００２９】
ホストＣＰＵとデータエンジンと複数のシーケンサは、上段が、自身の第１のマスタインタフェース部と、１つまたは複数の下段の第１のスレーブインタフェース部とを介して、該１つまたは複数の下段のメモリにアクセスするように、さらに、上段が、自身の第２のマスタインタフェース部と、直下段の第２のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されている。
【００３０】
なお、「上段」とは、注目する機能ブロックの直上の段（ホストＣＰＵまたはシーケンサ）に限らず、該機能ブロックより上の階層に設けられたホストＣＰＵとシーケンサのいずれも含む。
【００３１】
また、「下段」は、注目する機能ブロックの直下の段（シーケンサまたはデータエンジン）に限らず、該機能ブロックより下の階層に設けられたシーケンサとデータエンジンのいずれも含む。
【００３２】
なお、上記態様の半導体集積回路を方法やシステムなどに置き換えて表現したものや、該半導体集積回路を備えた動画像処理装置や通信装置なども、本発明の態様としては有効である。
【発明の効果】
【００３３】
本発明にかかる技術によれば、シーケンサを用いて制御を行う装置に対して性能の追加などの変更が容易であり、柔軟なＬＳＩ設計が可能である。
【図面の簡単な説明】
【００３４】
【図１】本発明の第１の実施の形態にかかる半導体ＬＳＩを示す図である。
【図２】図１に示す半導体ＬＳＩに対してインタフェース部を詳細に示した図である。
【図３】図１と図２に示す半導体ＬＳＩ１００におけるホストＣＰＵが出力するクロック／電源制御信号の例を示す図である。
【図４】図１と図２に示す半導体ＬＳＩにおける各シーケンサが出力するクロック／電源制御信号の例を示す図である。
【図５】本発明の第２の実施の形態にかかる半導体ＬＳＩを示す図である。
【図６】図５における半導体ＬＳＩの各シーケンサとデータエンジンのメモリを示す図である。
【図７】フレームの画素構成例を示す図である。
【図８】図５に示す半導体ＬＳＩにおけるシーケンサの動作例を説明するための図である。
【図９】図５に示す半導体ＬＳＩの全体の動作例を説明するための図である。
【図１０】本発明の第３の実施の形態にかかる半導体ＬＳＩを示す図である。
【図１１】図１０に示す半導体ＬＳＩの各機能ブロックのクロックと電源の供給状況の例を示す図である。
【図１２】シーケンサまたはデータエンジンが上段のシーケンサに格納されたパラメータを共有する例を説明するための図である。
【図１３】本発明の第４の実施の形態にかかる半導体ＬＳＩを示す図である。
【図１４】従来技術を説明するための図である（その１）。
【図１５】従来技術を説明するための図である（その２）。
【発明を実施するための形態】
【００３５】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、本発明と関連する部分を除き、適宜、省略、及び簡略化がなされている。
＜第１の実施の形態＞
【００３６】
図１は、本発明の第１の実施の形態にかかる半導体集積回路（以下半導体ＬＳＩという）１００を示す。半導体ＬＳＩ１００は、例えば動画像処理装置に設けられ、継続的に入力されるフレームのデータ（図中入力データ）に対して所定の処理を順次行って出力するものであり、ホストＣＰＵ１１０、シーケンサ１３０、シーケンサ１６０、データエンジン１９０、クロック／電源制御部２００を備える。上記所定の処理は、例えば入力された動画像の撮影モードに応じた画質改善処理である。また、画質改善処理は、例えば、ノイズ除去処理である。
【００３７】
ホストＣＰＵ１１０、シーケンサ１３０、シーケンサ１６０、データエンジン１９０は、ホストＣＰＵ１１０とデータエンジン１９０を夫々最上段と最下段にして階層的に接続されている。図示の例の場合、シーケンサの数が２つであり、シーケンサ１３０は上位シーケンサとなり、シーケンサ１６０は下位シーケンサとなる。
【００３８】
データエンジン１９０は、上記所定の処理を実行するものである。
クロック／電源制御部２００は、クロックＣＬＫが入力され、シーケンサ１３０、シーケンサ１６０、データエンジン１９０へのクロックの供給を制御すると共に、これらの機能ブロックへの電源供給も制御する。なお、この制御は、ホストＣＰＵ１１０、シーケンサ１３０、シーケンサ１６０からの後述するクロック／電源制御信号に従って行われる。
【００３９】
以下の説明において、電源が供給される一方、クロックの供給が遮断されている機能ブロックの状態を「スリープ」という。また、電源の供給が遮断されている機能ブロックの状態を「電源ＯＦＦ」という。また、クロックと電源の両方が供給されている機能ブロックの状態を「アクティブ」という。
【００４０】
ホストＣＰＵ１１０は、外部との送受信を行うインタフェース部１１９を備える。
【００４１】
シーケンサ１３０は、自身の実行用のパラメータを格納するメモリ１３１、メモリコントローラ１３２、シーケンスコントローラ１３３、ループカウンタ１３４、外部との送受信を行うインタフェース部１４９を備える。
【００４２】
シーケンサ１６０は、自身の実行用のパラメータを格納するメモリ１６１、メモリコントローラ１６２、シーケンスコントローラ１６３、ループカウンタ１６４、外部との送受信を行うインタフェース部１７９を備える。
【００４３】
データエンジン１９０は、自身の実行用のパラメータを格納するメモリ１９５、外部との送受信を行うインタフェース部１９９を備える。
【００４４】
シーケンサ１３０とシーケンサ１６０のインタフェース部は、同一の仕様を有する。すなわち、インタフェース部１４９とインタフェース部１７９は、同一の構成を有し、それらを流れる信号のビット幅や、各ビットの意義が同一である。
【００４５】
ホストＣＰＵ１１０のインタフェース部１１９とシーケンサ１３０のインタフェース部１４９との間に、メモリバス１２１と制御バス１２２が接続されている。
【００４６】
また、ホストＣＰＵ１１０のインタフェース部１１９は、クロック／電源制御バス１１５によりクロック／電源制御部２００と接続されており、クロック／電源制御バス１１５を介して、直下段のシーケンサ１３０に対するクロックと電源の供給を制御するクロック／電源制御信号をクロック／電源制御部２００に送信する。
【００４７】
また、シーケンサ１３０のインタフェース部１４９は、クロック／電源ライン１２３とクロック／電源制御バス１２５によりクロック／電源制御部２００と接続されており、クロック／電源ライン１２３を介して、クロック／電源制御部２００からのクロックと電源の供給を受けてシーケンサ１３０に供給し、クロック／電源制御バス１２５を介して、シーケンサ１３０と直下段のシーケンサ１６０に対するクロックと電源の供給を制御するクロック／電源制御信号をクロック／電源制御部２００に送信する。
【００４８】
シーケンサ１３０のインタフェース部１４９は、さらに、クロック／電源ライン１２３とは別のライン１２４と接続されており、該ライン１２４を介して、シーケンサ１３０がスリープ状態にあるときのクロック供給を受けてシーケンサ１３０に供給する。
【００４９】
分かりやすいように、以下、「クロック／電源ライン１２３」を「第１のライン１２３」といい、「ライン１２４」を「第２のライン１２４」という。
【００５０】
シーケンサ１３０のインタフェース部１４９とシーケンサ１６０のインタフェース部１７９との間に、メモリバス１５１と制御バス１５２が接続されている。
【００５１】
また、シーケンサ１６０のインタフェース部１７９は、クロック／電源ライン１５３とクロック／電源制御バス１５５によりクロック／電源制御部２００と接続されており、クロック／電源ライン１５３を介して、クロック／電源制御部２００からのクロックと電源の供給を受けてシーケンサ１６０に供給し、クロック／電源制御バス１５５を介して、シーケンサ１６０と直下段のデータエンジン１９０に対するクロックと電源の供給を制御するクロック／電源制御信号をクロック／電源制御部２００に送信する。
【００５２】
シーケンサ１６０のインタフェース部１７９は、さらに、クロック／電源ライン１５３とは別のライン１５４と接続されており、該ライン１５４を介して、シーケンサ１６０がスリープ状態にあるときのクロック供給を受けてシーケンサ１６０に供給する。
【００５３】
分かりやすいように、以下、「クロック／電源ライン１５３」を「第１のライン１５３」といい、「ライン１５４」を「第２のライン１５４」という。
【００５４】
シーケンサ１６０のインタフェース部１７９とデータエンジン１９０のインタフェース部１９９との間に、メモリバス１８１と制御バス１８２が接続されている。
【００５５】
また、データエンジン１９０のインタフェース部１９９は、クロック／電源ライン１８３によりクロック／電源制御部２００と接続されており、クロック／電源ライン１８３を介して、クロック／電源制御部２００からのクロックと電源の供給を受けてデータエンジン１９０に供給する。
【００５６】
データエンジン１９０のインタフェース部１９９は、さらに、クロック／電源ライン１８３とは別のライン１８４と接続されており、該ライン１８４を介して、データエンジン１９０がスリープ状態にあるときのクロック供給を受けてデータエンジン１９０に供給する。
【００５７】
分かりやすいように、以下、「クロック／電源ライン１８３」を「第１のライン１８３」といい、「ライン１８４」を「第２のライン１８４」という。
【００５８】
図２は、図１に対して、各機能ブロックのインタフェース部をより詳細に示した図である。図２を参照して半導体ＬＳＩ１００をより詳しく説明する。
【００５９】
ホストＣＰＵ１１０のインタフェース部１１９は、第１のマスタインタフェース部１１１、第２のマスタインタフェース部１１２、クロック／電源制御インタフェース部１１３を有する。
【００６０】
シーケンサ１３０のインタフェース部１４９は、第１のスレーブインタフェース部１４１、第２のスレーブインタフェース部１４２、第１の入力インタフェース部１４３、第１のマスタインタフェース部１４４、第２のマスタインタフェース部１４５、クロック／電源制御インタフェース部１４６、第２の入力インタフェース部１４７を有する。
【００６１】
シーケンサ１６０のインタフェース部１７９は、第１のスレーブインタフェース部１７１、第２のスレーブインタフェース部１７２、第１の入力インタフェース部１７３、第１のマスタインタフェース部１７４、第２のマスタインタフェース部１７５、クロック／電源制御インタフェース部１７６、第２の入力インタフェース部１７７を有する。
【００６２】
データエンジン１９０のインタフェース部１９９は、第１のスレーブインタフェース部１９１、第２のスレーブインタフェース部１９２、第１の入力インタフェース部１９３、第２の入力インタフェース部１９４を有する。
【００６３】
各機能ブロックの第１のマスタインタフェース部は、該機能ブロックがマスタ側として、外部の機能ブロックにおけるメモリにアクセスするためのインタフェースである。また、各機能ブロックの第１のマスタインタフェース部、すなわちホストＣＰＵ１１０の第１のマスタインタフェース部１１１、シーケンサ１３０の第１のマスタインタフェース部１４４、シーケンサ１６０の第１のマスタインタフェース部１７４は、同一の仕様を有する。
【００６４】
各機能ブロックの第２のマスタインタフェース部は、該機能ブロックがマスタ側として、外部の機能ブロックの実行を制御するためのインタフェースである。また、各機能ブロックの第２のマスタインタフェース部、すなわちホストＣＰＵ１１０の第２のマスタインタフェース部１１２、シーケンサ１３０の第２のマスタインタフェース部１４５、シーケンサ１６０の第２のマスタインタフェース部１７５も、同一の仕様を有する。
【００６５】
各機能ブロックの第１のスレーブインタフェース部は、該機能ブロックが、スレーブ側として、外部の機能ブロックによりメモリをアクセスされるためのインタフェースである。また、各機能ブロックの第１のスレーブインタフェース部、すなわちシーケンサ１３０の第１のスレーブインタフェース部１４１、シーケンサ１６０の第１のスレーブインタフェース部１７１、データエンジン１９０の第１のスレーブインタフェース部１９１は、同一の、第１のマスタインタフェース部に対応した仕様を有する。
【００６６】
各機能ブロックの第２のスレーブインタフェース部は、該機能ブロックがスレーブ側として、外部の機能ブロックにより実行を制御されるためのインタフェースである。また、各機能ブロックの第２のスレーブインタフェース部、すなわちシーケンサ１３０の第２のスレーブインタフェース部１４２、シーケンサ１６０の第２のスレーブインタフェース部１７２、データエンジン１９０の第２のスレーブインタフェース部１９２は、同一の、第２のマスタインタフェース部に対応した仕様を有する。
【００６７】
本実施の形態において、ホストＣＰＵ１１０、シーケンサ１３０、シーケンサ１６０、データエンジン１９０は、上段（ホストＣＰＵ１１０またはシーケンサ）が、自身の第１のマスタインタフェース部と、直下段（シーケンサまたはデータエンジン１９０）の第１のスレーブインタフェース部とを介して、該直下段のメモリにアクセスし、かつ、上段が、自身の第２のマスタインタフェース部と、直下段の第２のスレーブインタフェース部とを介して、該直下段の実行を制御するように接続されている。
【００６８】
図２に示すように、ホストＣＰＵ１１０の第１のマスタインタフェース部１１１と、ホストＣＰＵ１１０の直下段のシーケンサ１３０の第１のスレーブインタフェース部１４１は、メモリバス１２１により接続されており、第１のスレーブインタフェース部１４１は、さらにメモリコントローラ１３２と接続されている。従って、ホストＣＰＵ１１０は、第１のマスタインタフェース部１１１、メモリバス１２１、第１のスレーブインタフェース部１４１、メモリコントローラ１３２を介して、シーケンサ１３０のメモリ１３１にアクセスできる。
【００６９】
同様に、シーケンサ１３０は、第１のマスタインタフェース部１４４、メモリバス１５１、第１のスレーブインタフェース部１７１、メモリコントローラ１６２を介して、シーケンサ１６０のメモリ１６１にアクセスできる。
【００７０】
また、シーケンサ１６０も、第１のマスタインタフェース部１７４、メモリバス１８１、第１のスレーブインタフェース部１９１、データエンジン１９０においてメモリコントローラと同様の機能を果たす機能ブロック（図示せず）を介して、データエンジン１９０のメモリ１９５にアクセスできる。
【００７１】
また、ホストＣＰＵ１１０の第２のマスタインタフェース部１１２と、シーケンサ１３０の第２のスレーブインタフェース部１４２は、制御バス１２２により接続されており、第２のスレーブインタフェース部１４２は、さらにシーケンスコントローラ１３３と接続されている。従って、ホストＣＰＵ１１０は、第２のマスタインタフェース部１１２、制御バス１２２、第２のスレーブインタフェース部１４２を介してシーケンスコントローラ１３３を制御することにより、シーケンサ１３０の実行の制御を行うことができる。
【００７２】
同様に、シーケンサ１３０は、第２のマスタインタフェース部１４５、制御バス１５２、第２のスレーブインタフェース部１７２を介して、シーケンサ１６０の実行の制御を行うことができる。
【００７３】
また、シーケンサ１６０も、第２のマスタインタフェース部１７５、制御バス１８２、第２のスレーブインタフェース部１９２を介して、データエンジン１９０の実行の制御を行うことができる。
【００７４】
本実施の形態において、ホストＣＰＵ１１０、シーケンサ１３０、シーケンサ１６０は、直下段に対してパラメータを設定する場合と、直下段の実行を制御するために該直下段のメモリを参照する場合に、直下段のメモリにアクセスする。
【００７５】
シーケンサ１３０、シーケンサ１６０、データエンジン１９０は、自身のメモリに設定されたパラメータを参照しながら処理を実行する。この処理の進行により、メモリに格納されたパラメータの状態が変化する。
【００７６】
ホストＣＰＵ１１０、シーケンサ１３０、シーケンサ１６０は、直下段のメモリにアクセスして該直下段に対してパラメータを設定する。その後、直下段のメモリにアクセスしてパラメータの状態を参照し、パラメータの状態に応じて、直下段のその後の実行の制御を行う。
【００７７】
ホストＣＰＵ１１０のクロック／電源制御インタフェース部１１３は、ホストＣＰＵ１１０が、直下段（ここではシーケンサ１３０）へのクロック及び電源の供給を制御するクロック／電源制御信号をクロック／電源制御部２００に送信するためのものであり、クロック／電源制御バス１１５を介してクロック／電源制御部２００に接続される。
【００７８】
シーケンサ１３０の第１の入力インタフェース部１４３は、クロック／電源制御部２００からのクロック及び電源の供給を受けてシーケンサ１３０に供給するクロック／電源入力インタフェースであり、第１のライン１２３を介してクロック／電源制御部２００と接続される。
【００７９】
シーケンサ１３０のクロック／電源制御インタフェース部１４６は、シーケンサ１３０が自身または直下段（シーケンサ１６０）へのクロック及び電源の供給を制御するクロック／電源制御信号をクロック／電源制御部２００に送信するためのものであり、クロック／電源制御バス１２５を介してクロック／電源制御部２００に接続される。
【００８０】
シーケンサ１３０の第２の入力インタフェース部１４７は、シーケンサ１３０がスリープ状態にあるときのクロック供給を第２のライン１２４から受けてシーケンサ１３０に供給するためのインタフェースである。
【００８１】
シーケンサ１６０の第１の入力インタフェース部１７３、クロック／電源制御インタフェース部１７６、第２の入力インタフェース部１７７は、シーケンサ１３０の第１の入力インタフェース部１４３、クロック／電源制御インタフェース部１４６、第２の入力インタフェース部１４７に夫々対応した機能を有するため、ここで詳細な説明を省略する。
【００８２】
データエンジン１９０の第１の入力インタフェース部１９３は、クロック／電源制御部２００からのクロック及び電源の供給を受けてデータエンジン１９０に供給するクロック／電源入力インタフェースであり、第１のライン１８３を介してクロック／電源制御部２００と接続される。
【００８３】
データエンジン１９０の第２の入力インタフェース部１９４は、データエンジン１９０がスリープ状態にあるときのクロック供給を第２のライン１８４から受けてデータエンジン１９０に供給するためのインタフェースである。
【００８４】
ここで、ホストＣＰＵ１１０がクロック／電源制御部２００に出力するクロック／電源制御信号、及びシーケンサ１３０とシーケンサ１６０がクロック／電源制御部２００に出力するクロック／電源制御信号の例を用いて、シーケンサ１３０、シーケンサ１６０、データエンジン１９０へのクロック供給と電源供給の制御を説明する。
【００８５】
図３は、ホストＣＰＵ１１０がクロック／電源制御部２００に出力するクロック／電源制御信号、すなわちクロック／電源制御バス１１５を流れる信号の例を示す。
【００８６】
図３の例に示すように、ホストＣＰＵ１１０が出力するクロック／制御信号は、２ビットのクロック／電源制御部分により構成される。その片方の１ビット（例えば下位ビット）は、ホストＣＰＵ１１０の直下段（シーケンサ１３０）へのクロック供給を制御するためのクロック制御ビットであり、他方の１ビットは、シーケンサ１３０への電源供給を制御するための電源制御ビットである。
【００８７】
図示の例では、クロック制御ビットが「０」であれば、シーケンサ１３０へのクロック供給を遮断することを意味する。なお、シーケンサ１３０へのクロック供給が既に遮断されている状態では、引き続き、シーケンサ１３０へのクロック供給を遮断することを意味する。また、クロック制御ビットが「１」であれば、シーケンサ１３０へのクロック供給を行うことを意味する。なお、シーケンサ１３０へのクロック供給が既に行われている状態では、引き続き、シーケンサ１３０へのクロック供給を行うことを意味する。
【００８８】
同様に、電源制御ビットが「０」であれば、シーケンサ１３０への電源供給を遮断することを意味する。なお、シーケンサ１３０への電源供給が既に遮断されている状態では、引き続き、シーケンサ１３０への電源供給を遮断することを意味する。また、電源制御ビットが「１」であれば、シーケンサ１３０への電源供給を行うことを意味する。なお、シーケンサ１３０への電源供給が既に行われている状態では、引き続き、シーケンサ１３０への電源供給を行うことを意味する。
【００８９】
例えば、シーケンサ１３０がクロック／電源制御部２００からクロックと電源のいずれも供給されている状態で、ホストＣＰＵ１１０がからクロック／電源制御部２００に「１０」となるクロック／制御信号が出力されると、シーケンサ１３０への電源供給が継続されるが、シーケンサ１３０へのクロック供給が遮断される。
【００９０】
図４は、シーケンサ１３０とシーケンサ１６０がクロック／電源制御部２００に出力するクロック／電源制御信号、すなわちクロック／電源制御バス１２５とクロック／電源制御バス１５５を流れる信号の例を示す図である。
【００９１】
図４の例に示すように、シーケンサ１３０とシーケンサ１６０が出力するクロック／電源制御信号は、１ビットの制御対象指示部分と、２ビットのクロック／電源制御部分とを有する。
【００９２】
制御対象指示部分の１ビットは、該制御信号が、該制御信号を出力したシーケンサと、該シーケンサの直下段のうちのいずれのクロック／電源の供給を制御するものなのかを示す。例えば、制御対象指示部分の１ビットが「０」である場合、該制御信号が該シーケンサ自身のクロック／電源の供給を制御するものであることを示す。また、制御対象指示部分の１ビットが「１」である場合、該制御信号が該シーケンサの直下段のクロック／電源の供給を制御するものであることを示す。
【００９３】
すなわち、シーケンサ１３０が出力するクロック／制御信号の場合、制御対象指示部分の１ビットは、シーケンサ１３０自身、シーケンサ１６０（直下段）のいずれかを示し、シーケンサ１６０が出力するクロック／制御信号の場合、制御対象指示部分の１ビットは、シーケンサ１６０自身、データエンジン１９０（直下段）のいずれかを示す。
【００９４】
なお、シーケンサ１３０とシーケンサ１６０が出力するクロック／電源制御信号に含まれるクロック／電源制御部分は、その制御対象が、該クロック／電源制御信号に含まれる制御対象指示部分が示す機能ブロックである点を除き、ホストＣＰＵ１１０が出力クロック／電源制御信号（クロック／電源制御部分のみ）と同様であり、ここで詳細な説明を省略する。
【００９５】
例えば、シーケンサ１３０とシーケンサ１６０がクロックと電源のいずれも供給されている状態で、シーケンサ１３０からクロック／電源制御部２００に「１１０」となるクロック／制御信号が出力されると、シーケンサ１３０の直下段（シーケンサ１６０）への電源供給は継続されるが、シーケンサ１６０へのクロック供給は遮断される。また、同じ状態で、シーケンサ１３０からクロック／電源制御部２００に「０１０」となるクロック／電源制御信号が出力されると、シーケンサ１３０自身への電源供給は継続されるが、シーケンサ１３０自身へのクロック供給が遮断される。
【００９６】
同様に、シーケンサ１６０とデータエンジン１９０がクロックと電源のいずれも供給されている状態で、シーケンサ１６０からクロック／電源制御部２００に「１１０」となるクロック／制御信号が出力されると、シーケンサ１６０の直下段（データエンジン１９０）への電源供給は継続されるが、データエンジン１９０へのクロック供給は遮断される。また、同じ状態で、シーケンサ１６０からクロック／電源制御部２００に「０１０」となるクロック／電源制御信号が出力されると、シーケンサ１６０自身への電源供給は継続されるが、シーケンサ１６０自身へのクロック供給が遮断される。
【００９７】
なお、シーケンサ１３０とシーケンサ１６０が出力するクロック／電源制御信号は、どの機能ブロックか、及び該機能ブロックへのクロック供給および電源供給を「行う」と「遮断する」のいずれかを示すことができれば、図４に示す構成に限られることがない。
【００９８】
シーケンサ１３０は、スリープ状態においても動作する機能ブロック（図示せず）を有する。この機能ブロックは、シーケンスコントローラ１３３に設けられており、第２の入力インタフェース部１４７を介して第２のライン１２４からクロックが供給される。以下、この機能ブロックをスリープ制御ブロックと称する。なお、シーケンサ１３０は、スリープ状態において、そのループカウンタ１３４が、カウント値を保持する。
【００９９】
同様に、シーケンサ１６０とデータエンジン１９０も、図示しないスリープ制御ブロックを有する。また、シーケンサ１６０も、スリープ状態において、そのループカウンタ１６４が、カウント値を保持する。
【０１００】
シーケンサ１３０は、スリープ状態にあるときに、ホストＣＰＵ１１０が出力するクロック／電源制御信号、またはシーケンサ１３０自身が出力するクロック／電源制御信号によりスリープ状態を解除することができる。「スリープ状態を解除する」とは、クロックの供給を開始させることを意味する。
【０１０１】
シーケンサ１３０のスリープ状態の解除は、直上段（ホストＣＰＵ１１０）とシーケンサ１３０自身により行うことができる。シーケンサ１３０自身によるスリープ状態の解除は、シーケンサ１３０に備えられたスリープ制御ブロックにより行われる。例えば、シーケンサ１３０がシーケンサ１６０の実行を開始させた後、スリープ状態に入ったとする。シーケンサ１６０の実行が進み、シーケンサ１３０のスリープ状態を解除すべき所定のタイミングでシーケンサ１３０にトリガ信号を出力する。このトリガ信号は、例えば制御バス１５２を介してシーケンサ１６０のシーケンスコントローラ１６３からシーケンサ１３０のシーケンスコントローラ１３３に出力される。シーケンサ１３０のシーケンスコントローラ１３３における図示しないスリープ制御ブロックは、シーケンサ１６０からのトリガ信号を受信すると、シーケンサ１３０へのクロック供給を行うことを示すクロック／電源制御信号をクロック／電源制御部２００に出力する。これにより、クロック／電源制御部２００からシーケンサ１３０へのクロック供給が再開され、シーケンサ１３０のスリープ状態は解除される。
【０１０２】
なお、シーケンサ１３０の電源ＯＦＦ状態の解除は、シーケンサ１３０自身ではできず、直上段（ホストＣＰＵ１１０）により行われる。
【０１０３】
同様に、シーケンサ１６０のスリープ状態の解除は、直上段（シーケンサ１３０）とシーケンサ１６０自身により行われることができる。シーケンサ１６０自身によるスリープ状態の解除も、シーケンサ１６０に備えられたスリープ制御ブロックにより行われる。この場合、シーケンサ１６０のスリープ制御ブロックは、例えば下段（データエンジン１９０）からのトリガ信号に応じて、シーケンサ１６０へのクロック供給を行うことを示すクロック／電源制御信号をクロック／電源制御部２００に出力する。これにより、クロック／電源制御部２００からシーケンサ１６０へのクロック供給が再開され、シーケンサ１６０のスリープ状態は解除される。
【０１０４】
なお、シーケンサ１６０の電源ＯＦＦ状態の解除も、シーケンサ１６０自身ではできず、直上段（シーケンサ１３０）により行われる。
【０１０５】
本実施の形態の半導体ＬＳＩ１００において、各シーケンサは、自身の実行用のプログラムを含むパラメータを格納するメモリとメモリコントローラを備えると共に、各シーケンサのインタフェース部は、同一の仕様を有する。そのため、新しい機能の追加や、機能の変更などが容易である。
【０１０６】
例えば、各シーケンサがメモリとメモリコントローラを備えるため、上段により該シーケンサの実行用のプログラムコードを書き換えることができ、すなわち、プログラマブルなシーケンサを実現することができる。また、各シーケンサのインタフェース部が同一の仕様を有することから、プログラムコードを書き換える際に、各シーケンサの送受信する信号の仕様をインタフェース部の仕様に合わせることさえすれば、半導体ＬＳＩ全体のシーケンサ制御の手法を変更せずに機能の変更ができる。
【０１０７】
また、例えば、新しい機能を追加するために、シーケンサ１６０と同じ層（シーケンサ１３０により制御される層）に別のシーケンサを設ける必要がある場合、シーケンサ１３０とシーケンサ１６０と同様のシーケンサをシーケンサ１３０に接続すれば、シーケンサ１３０は、シーケンサ１６０に加え、追加されたシーケンサに対しても同様の制御を行うことができる。
【０１０８】
また、各シーケンサがプログラマブルであると共に、各シーケンサのインタフェース部が同一の仕様を有することから、半導体ＬＳＩの機能を変更するためにシーケンサの階層数を増す必要がある場合にも、設計が簡単である。すなわち、本発明にかかる技術により、シーケンサの階層の細分化が容易である。勿論、シーケンサの階層数を減らす必要がある場合においても、同様である。
【０１０９】
本実施の形態の半導体ＬＳＩ１００において、ホストＣＰＵ１１０と各シーケンサは、直下段（いずれかのシーケンサまたはデータエンジン１９０）の実行を制御するために、自身の第１のマスタインタフェース部、直下段の第１のスレーブインタフェース部を介して、直下段のメモリにアクセスして該メモリに格納されたパラメータの状態を参照する。また、ホストＣＰＵ１１０と各シーケンサは、自身の第２のマスタインタフェース部と、直下段の第２のスレーブインタフェース部を介して、直下段の実行を制御する。すなわち、実行を制御するマスタ側の機能ブロック（ホストＣＰＵ１１０またはシーケンサ）と、実行を制御されるスレーブ側の機能ブロック（シーケンサまたはデータエンジン１９０）との間に、スレーブ側のメモリを参照するためのチャネル（参照チャネルという）と、スレーブ側の実行を制御するためのチャネル（制御チャネル）とが独立している。
【０１１０】
参照チャネルと制御チャネルが同一である場合に、スレーブ側のメモリの参照と、スレーブ側の実行の制御とが排他的に実行されるため、参照、または実行の制御を行う際に１サイクル以上の待ち状態が発生する。
【０１１１】
これに対して、本実施の形態の半導体ＬＳＩ１００において、参照チャネルと制御チャネルとが独立しているため、上述した待ち状態を回避し、高速化を図ることができる。
【０１１２】
また、本実施の形態の半導体ＬＳＩ１００において、各シーケンサは、自身、直下段のクロック及び電源の供給を制御し得る構成となっている。シーケンサ１３０とシーケンサ１６０を例にする。また、各シーケンサおよびデータエンジン１９０において、ループカウンタの前回のカウントアップから今回のカウントアップの間までの期間を、１ループという。ここで、シーケンサ１３０とシーケンサ１６０におけるループを夫々「上位ループ」と「下位ループ」という。
【０１１３】
シーケンサ１３０は、２つの上位ループの間では動作する必要がないので、１つの上位ループが開始されると自身へのクロック供給を遮断し、スリープ状態に入ることができる。そして、シーケンサ１６０は、該上位ループの下の各下位ループが完了すると、シーケンサ１３０にトリガ信号を送信することによりシーケンサ１３０にスリープ状態を解除させるので、次の上位ループが開始できる。このようにして、半導体ＬＳＩ１００の各機能ブロックのクロックや電源の供給をこまめに制御することができ、半導体ＬＳＩ１００の消費電力を効率良く抑制することができる。なお、消費電力をより細かく制御したければ、ホストＣＰＵとデータエンジン間のシーケンサの段数を増やせばよい。これについては、後に第４の実施の形態を用いてさらに説明する。
＜第２の実施の形態＞
【０１１４】
図５は、本発明の第２の実施の形態にかかる半導体ＬＳＩ３００を示す。半導体ＬＳＩ３００も、例えば動画像処理装置に設けられ、継続的に入力されるフレームのデータ（入力データ）に対して所定の処理を順次行って出力するものであり、ホストＣＰＵ３１０、シーケンサ３３０、シーケンサ３６０、データエンジン３９０、クロック／電源制御部４００を備える。上記所定の処理は、例えば入力された動画像の撮影モードに応じた画質改善処理である。また、画質改善処理は、例えば、ノイズ除去処理である。
【０１１５】
ホストＣＰＵ３１０、シーケンサ３３０、シーケンサ３６０、データエンジン３９０は、ホストＣＰＵ３１０とデータエンジン３９０を夫々最上段と最下段にして階層的に接続されている。
データエンジン３９０は、上記所定の処理を実行するものである。
【０１１６】
クロック／電源制御部４００は、クロックＣＬＫが入力され、シーケンサ３３０、シーケンサ３６０、データエンジン３９０へのクロックの供給を制御すると共に、これらの機能ブロックへの電源供給も制御する。なお、この制御は、ホストＣＰＵ３１０、シーケンサ３３０、シーケンサ３６０からのクロック／電源制御信号に従って行われる。
【０１１７】
ホストＣＰＵ３１０は、第１のマスタインタフェース部３１１、第２のマスタインタフェース部３１２、クロック／電源制御インタフェース部３１３を備える。
【０１１８】
シーケンサ３３０は、メモリ３３１、メモリコントローラ３３２、シーケンスコントローラ３３３、ループカウンタ３３４、第１のスレーブインタフェース部３４１、第２のスレーブインタフェース部３４２、第１の入力インタフェース部３４３、第１のマスタインタフェース部３４４、第２のマスタインタフェース部３４５、クロック／電源制御インタフェース部３４６、第２の入力インタフェース部３４７を備える。
【０１１９】
シーケンサ３６０は、メモリ３６１、メモリコントローラ３６２、シーケンスコントローラ３６３、ループカウンタ３６４、第１のスレーブインタフェース部３７１、第２のスレーブインタフェース部３７２、第１の入力インタフェース部３７３、第１のマスタインタフェース部３７４、第２のマスタインタフェース部３７５、クロック／電源制御インタフェース部３７６、第２の入力インタフェース部３７７を備える。
【０１２０】
データエンジン３９０は、メモリ３９５、第１のスレーブインタフェース部３９１、第２のスレーブインタフェース部３９２、第１の入力インタフェース部３９３、第２の入力インタフェース部３９４、第１のマスタインタフェース部３９６を備える。
【０１２１】
なお、図面の簡潔にために、図５において、メモリバスや制御バス、クロックと電源を供給するためのラインなどについて、符号を省略している。
【０１２２】
本実施の形態半導体ＬＳＩ３００は、以下に説明する点を除き、各機能ブロックの構成や、各機能ブロック間の接続関係などは、第２に示す半導体ＬＳＩ１００と同一である。そのため、半導体ＬＳＩ３００に対して、半導体ＬＳＩ１００と異なる点についてのみ説明する。
【０１２３】
半導体ＬＳＩ１００において、ホストＣＰＵ１１０と各シーケンサは、自身の直下段のメモリにのみアクセスするようになっている。本実施の形態の半導体ＬＳＩ３００において、ホストＣＰＵ３１０、シーケンサ３３０は、自身の直下段を含む全ての下段のメモリにアクセスできるように接続されている。
【０１２４】
具体的には、ホストＣＰＵ３１０の第１のマスタインタフェース部３１１は、シーケンサ３３０の第１のスレーブインタフェース部３４１に接続されていると共に、シーケンサ３６０の第１のスレーブインタフェース部３７１、データエンジン３９０の第１のスレーブインタフェース部３９１とも接続されている。そのため、ホストＣＰＵ３１０は、メモリ３３１、メモリ３６１、メモリ３９５のいずれにもアクセスでき、シーケンサ３３０、シーケンサ３６０、データエンジン３９０のいずれに対してもパラメータを設定することができる。
【０１２５】
同様に、シーケンサ３３０は、シーケンサ３６０とデータエンジン３９０のいずれに対してもパラメータを設定することができる。
【０１２６】
すなわち、本実施の形態の半導体ＬＳＩ３００では、各シーケンサがメモリとメモリコントローラを備えるため、上段（ホストＣＰＵまたはシーケンサ）は、直下段に限らず、階層を跨った下段（シーケンサまたはデータエンジン）に対してもパラメータを設定することができる。そのため、半導体ＬＳＩの設計の自由度を高めることができる。
【０１２７】
また、本実施の形態の半導体ＬＳＩ３００において、シーケンサ３６０は、上段のシーケンサ３３０のメモリ３３１にアクセス可能に接続されている。
【０１２８】
具体的には、シーケンサ３６０の第１のマスタインタフェース部３７４と、シーケンサ３３０の第１のスレーブインタフェース部３４１とがメモリバスを介して接続されているため、シーケンサ３６０は、シーケンサ３３０のメモリ３３１にアクセスすることができる。
【０１２９】
さらに、本実施の形態の半導体ＬＳＩ３００において、データエンジン３９０は、第１のマスタインタフェース部３９６を備える。該第１のマスタインタフェース部３９６は、各シーケンサの第１のマスタインタフェース部と同一の仕様を有する。また、データエンジン３９０は、シーケンサ３３０とシーケンサ３６０のメモリにアクセス可能に接続されている。
【０１３０】
具体的には、データエンジン３９０の第１のマスタインタフェース部３９６と、シーケンサ３３０の第１のスレーブインタフェース部３４１とがメモリバスを介して接続されているため、データエンジン３９０は、シーケンサ３３０のメモリ３３１にアクセスすることができる。同様に、データエンジン３９０の第１のマスタインタフェース部３９６と、シーケンサ３６０の第１のスレーブインタフェース部３７１とがメモリバスを介して接続されているため、データエンジン３９０は、シーケンサ３６０のメモリ３６１にアクセスできる。
【０１３１】
すなわち、本実施の形態の半導体ＬＳＩ３００では、各シーケンサとデータエンジンが、上段のメモリにアクセス可能に接続されている。これにより、これにより、メモリの容量を削減することができる。例えば、ホストＣＰＵとデータエンジンの間にシーケンサ１、シーケンサ２、シーケンサ３が階層的に接続され、動画像処理を行う半導体ＬＳＩにおいて、ホストＣＰＵがシーケンサ１に対して設定したパラメータのうち、「撮影モード」やフレームの「画像サイズ」が含まれており、シーケンサ２が撮影モードを使用するときがあり、シーケンサ３が画像サイズを使用するときがあると仮定する。この場合、シーケンサ２がシーケンサ１のメモリから「撮影モード」を読み出すことができるため、シーケンサ２に対して「撮影モード」を設定する必要がない。同様に、シーケンサ３がシーケンサ１のメモリから「画像サイズ」を読み出すことができるため、シーケンサ３に対して「画像サイズ」を設定する必要がない。従って、シーケンサ２とシーケンサ３のメモリの容量を削減することができる。
【０１３２】
図６は、半導体ＬＳＩ３００における各シーケンサとデータエンジン３９０におけるメモリの構成を示す。図示のように、シーケンサ３３０のメモリ３３１は、例えばレジスタである第１のメモリ３３１Ａと第２のメモリ３３１Ｂを有し、シーケンサ３６０のメモリ３６１は、第１のメモリ３６１Ａと第２のメモリ３６１Ｂを有し、データエンジン３９０のメモリ３９５は、第１のメモリ３９５Ａと第２のメモリ３９５Ｂを有する。
【０１３３】
本実施の形態の半導体ＬＳＩ３００において、各シーケンサとデータエンジン３９０は、自身の第１のメモリに設定されたパラメータを第２のメモリにコピーして、該第２のメモリにコピーされた前記パラメータを参照しながら処理を実行する。ホストＣＰＵ３１０と各シーケンサは、下段に対してパラメータを設定する際に、該下段の第１のメモリにパラメータを設定し、直下段の実行を制御する際に、該直下段の第２のメモリにおけるパラメータの状態を参照する。
【０１３４】
例えば、データエンジン３９０は、今のループの開始時に、メモリ３９５における第１のメモリ３９５Ａに設定されたパラメータを第２のメモリ３９５Ｂにコピーして、第２のメモリ３９５Ｂを参照しながら処理を実行する。今のループの処理を終了すると、再び第１のメモリ３９５Ａに設定されたパラメータを第２のメモリ３９５Ｂにコピーして、第２のメモリ３９５Ｂを参照しながら処理を実行する。
【０１３５】
ホストＣＰＵ３１０、シーケンサ３３０、シーケンサ３６０は、データエンジン３９０に対してパラメータを設定する際に、第１のメモリ３９５Ａに設定する。
【０１３６】
シーケンサ３６０は、データエンジン３９０の実行を制御するために、データエンジン３９０の第２のメモリ３９５Ｂを参照してパラメータの状態を把握する。
【０１３７】
シーケンサまたはデータエンジンがループ中の処理を実行しているときに、該シーケンサまたはデータエンジンが処理に使用しているメモリにデータを書き込むことができない。しかし、時間的なスケジューリングなどの都合から、どうしても上位側のホストＣＰＵやシーケンサが、ループ処理中の下段のパラメータを設定し直す場合がある。本実施の形態の半導体ＬＳＩ３００は、各シーケンサとデータエンジンのメモリが、上段によりパラメータを設定される第１のメモリと、第１のメモリからコピーしたパラメータを格納してシーケンサまたはデータエンジンの処理に供する構成を有する。そのため、ホストＣＰＵ３１０またはシーケンサは、下段のシーケンサまたはデータエンジン３９０のループ処理中に、該下段のシーケンサまたはデータエンジン３９０の第１のメモリ３９５Ａに、変更されたパラメータを設定することができる。
【０１３８】
ここで、半導体ＬＳＩ３００が処理する動画像におけるフレームの具体例を用いて、半導体ＬＳＩ３００の動作例を説明する。
【０１３９】
図７は、動画像のフレームの画素構成例を示す。図示のように、該フレームのサイズは、「Ｃｍａｘ×Ｒｍａｘ」であり、横方向すなわち行方向（Ｒ方向）においてＣｍａｘ個の画素があり、縦方向すなわち列方向（Ｃ方向）においてＲｍａｘ個の画素がある。半導体ＬＳＩ３００は、上の行から下の行の順、各行については左の列の画素から右の画素の順で画素単位の処理をしていく。すなわち、図７の例では、Ｒ１行、Ｒ２行、Ｒ３行、・・・、Ｒｍａｘ行の順、各行については、Ｃ１の列の画素、Ｃ２の列の画素、Ｃ３の列の画素、・・・、Ｃｍａｘの列の画素の順で処理が行われる。
【０１４０】
シーケンサ３３０は、フレーム単位のシーケンス制御を行い、ループカウンタ３３４のカウント値は、現在処理中のフレームの番号を示すものである。シーケンサ３６０は、行単位のシーケンス制御を行い、ループカウンタ３６４のカウント値は、現在処理中の行の番号を示すものである。
【０１４１】
データエンジン３９０は、順次入力される各行の画素データに対して、画素毎にノイズ除去処理を行う。ノイズ除去処理は、例えば該画素の画素値と、前後の画素の画素値との重付け平均処理である。なお、本実施の形態におけるデータエンジン３９０は、現在処理中の画素の列の番号をカウントするループカウンタ（図示せず）を有する。
【０１４２】
半導体ＬＳＩ３００全体の動作の前に、まず、図８を参照して、シーケンサ３６０を代表にして、本実施の形態におけるシーケンサが行う処理の流れの例を説明する。なお、シーケンサ３６０とデータエンジン３９０は、既にパラメータの設定がなされ、クロック／電源制御部４００から電源が供給されているとする。また、シーケンサ３６０は、クロック／電源制御部４００からクロックを供給されているが、データエンジン３９０は、クロック／電源制御部４００からのクロック供給を遮断されている。なお、シーケンサ３６０に対して設定されたパラメータは、例えば、シーケンサ３６０が実行するプログラムのコードや、フレームの行数（Ｒｍａｘ）などであり、データエンジン３９０に対して設定されたパラメータは、例えば、データエンジン３９０が実行するプログラムのコードや、１行の画素数すなわちフレームの列数（Ｃｍａｘ）などである。
【０１４３】
図８の左端のフローチャートは、シーケンサ３６０におけるループカウンタ３６４と、データエンジン３９０の図示しないループカウンタの動作を示す。中央のフローチャートは、シーケンサ３６０の動作を示す。右端のフローチャートは、データエンジン３９０の動作を示す。
【０１４４】
まず、シーケンサ３６０は、自身のメモリ３６１に設定されたパラメータに応じて、フレームを処理するための種々の初期設定を行う（Ｓ５０）。そして、ループカウンタ３６４は１つカウントアップをし、これにより１つ目の上位ループ（上位ループ０）がスタートする（Ｓ１０）。各シーケンサおよびデータエンジン３９０において、ループカウンタの前回のカウントアップから今回のカウントアップの間までの期間は、１ループであり、シーケンサとその直下段（シーケンサまたはデータエンジン３９０）のうちの上段におけるループが上位ループであり、下段におけるループが下位ループである。ここでは、シーケンサ３６０におけるループが上位ループとなり、データエンジン３９０におけるループが下位ループとなる。
【０１４５】
また、前述したように、シーケンサ３６０におけるループカウンタ３６４は、現在処理中の画素の行の番号を示すものである。そのため、このタイミングでは、ループカウンタ３６４のカウント値は、Ｒ１行を示すものとなる。
【０１４６】
Ｒ１行の処理を行うために、シーケンサ３６０のシーケンスコントローラ３６３は、データエンジン３９０へのクロック供給の開始を示すクロック／電源制御信号をクロック／電源制御部４００に出力すると共に、実行開始を示す制御信号をデータエンジン３９０に出力する（Ｓ５２）。
【０１４７】
これにより、クロック／電源制御部４００からデータエンジン３９０へのクロック供給が開始され、データエンジン３９０は動作を開始し、現在の行の画素に対してノイズ除去処理を実行する（Ｓ７０）。
【０１４８】
データエンジン３９０の動作開始に伴って、データエンジン３９０の図示しないループカウンタがカウントアップを開始し、これにより、１つ目の下位ループ（下位ループ０）がスタートする（Ｓ１２）。前述したように、データエンジン３９０の図示しないループカウンタは、現在処理中の画素の列の番号を示すものである。そのため、ここでは、データエンジン３９０のループカウンタのカウント値は、Ｃ１列を示すものとなる。すなわち、Ｒ１行、Ｃ１列の画素の処理が開始される。
【０１４９】
シーケンサ３６０は、ステップＳ５２の実行制御を行った後、現在処理中の行の次の行（Ｒ２行）を処理するための種々の設定を行ってから、スリープ状態に入る（Ｓ５４、Ｓ５６）。なお、シーケンサ３６０は、クロック／電源制御部４００に対して、自身へのクロック供給を遮断させるクロック／電源制御信号を出力することにより、スリープ状態にされる。
【０１５０】
データエンジン３９０の実行中に（Ｓ７０）、処理の進行に伴って、データエンジン３９０のループカウンタがカウントアップを続け、下位ループは、下位ループ０から、下位ループ１、下位ループ２、・・・、下位ループ（Ｃｍａｘ−２）、下位ループ（Ｃｍａｘ−１）と遷移する（Ｓ１４〜Ｓ２４）。
【０１５１】
下位ループ（Ｃｍａｘ−１）が完了すると、データエンジン３９０のループカウンタのカウント値がＣｍａｘになる。これにて、現在の行（Ｒ１行）の全ての画素の処理が完了する。
【０１５２】
データエンジン３９０のループカウンタのカウント値がＣｍａｘになると、データエンジン３９０は、自身のループカウンタのカウント値をクリアすると共に、シーケンサ３６０にトリガ信号を出力する（Ｓ７１）。
【０１５３】
スリープ状態にあるシーケンサ３６０のスリープ制御ブロックは、データエンジン３９０からのトリガ信号を受信すると、クロック／電源制御部４００に対して、シーケンサ３６０へのクロック供給を行わせるクロック／電源制御信号を出力する。これにより、シーケンサ３６０のスリープ状態が解除される（Ｓ５７）。
【０１５４】
シーケンサ３６０は、クロック／電源制御部４００からクロックの供給が再開されると、ループ制御を行う（Ｓ５８）。このループ制御は、最後の上位ループが完了したか否か（ここではループカウンタ３６４のカウント値がＲｍａｘである否か）に応じて行う。ループカウンタ３６４のカウント値がＲｍａｘではない場合、シーケンサ３６０は、ステップＳ５２に戻り、データエンジン３９０の実行制御を行う。また、ループカウンタ３６４は、１つカウントアップする（上位ループ＋１）（Ｓ３０）。そして、ステップＳ１２からの下位ループが繰り返される。
【０１５５】
ステップＳ５８において、シーケンサ３６０は、最後の上位ループの完了を確認すると、終了時の種々の設定を行い（Ｓ６０）、データエンジン３９０の実行停止とクロック供給の停止の制御を行う（Ｓ６２）。これにて、データエンジン３９０がスリープ状態に入り、１フレーム分の処理が完了する（Ｓ６４、Ｓ７２）。
【０１５６】
なお、図８に対して、行数Ｃｍａｘを動画像のフレーム数に置換え、さらに、左端の「ループカウンタ３６４、データエンジン３９０の図示しないループカウンタ」を「ループカウンタ３３４、ループカウンタ３６４」に、中央の「シーケンサ３６０」を「シーケンサ３３０」に、右端の「データエンジン３９０」を「シーケンサ３６０」に置換えれば、シーケンサ３３０が行う処理の流れの例を示すフローチャートになる。これについては、詳細を省略する。
【０１５７】
図９は、半導体ＬＳＩ３００の全体の動作の流れの例を示す。半導体ＬＳＩ３００の電源が入ったときから説明する。このとき、ホストＣＰＵ３１０はアクティブ状態であり、シーケンサ３３０、シーケンサ３６０、データエンジン３９０は、スリープ状態であるとする。
【０１５８】
ホストＣＰＵ３１０は、シーケンサ３３０、シーケンサ３６０、データエンジン３９０に対してパラメータの設定を行う（Ｓ１００）。前述したように、半導体ＬＳＩ３００において、ホストＣＰＵ３１０は、直下段のみならず、階層を跨った下段に対してもパラメータを設定できる。
【０１５９】
ここの例では、ホストＣＰＵ３１０により全ての下段の機能ブロックのパラメータを設定するようにしているが、ホストＣＰＵ３１０がシーケンサ３３０のパラメータを設定し、シーケンサ３３０はシーケンサ３６０のパラメータを設定し、シーケンサ３６０はデータエンジン３９０のパラメータの設定を行うようにしてもよい。勿論、シーケンサ３３０がシーケンサ３６０とデータエンジン３９０のパラメータを設定するようにしてもよい。
【０１６０】
さらに、シーケンサ３３０以下の各機能ブロックの一部のパラメータ（例えば該機能ブロックの実行用プログラムのコード）は、全てホストＣＰＵ３１０により設定され、他のパラメータ（例えば実行時に用いられるフレーム数や行数などの値）は、該機能ブロックの直上段により設定されるようにしてもよい。
【０１６１】
次に、ホストＣＰＵ３１０は、シーケンサ３３０へのクロック供給と、シーケンサ３３０の実行が開始されるよう制御を行う（Ｓ１０２）。
【０１６２】
実行を開始したシーケンサ３３０は、シーケンサ３６０に対するクロック供給と、シーケンサ３６０の実行が開始されるよう制御を行う（Ｓ１２０）。そして、シーケンサ３３０は、スリープ状態に入る（Ｓ１２２）。
【０１６３】
実行を開始したシーケンサ３６０は、データエンジン３９０に対するクロック供給と、データエンジン３９０の実行が開始されるように制御を行う（Ｓ１４０）。そして、シーケンサ３６０は、スリープ状態に入る（Ｓ１４２）。
【０１６４】
実行を開始したデータエンジン３９０は、現在の行の各画素を順次処理する（Ｓ１６０）。該行の最後の画素の処理が完了すれば、シーケンサ３６０にトリガ信号を送信する。これにより、シーケンサ３６０は、自身のスリープ状態を解除する。
【０１６５】
クロック／電源制御部４００からクロックの供給を再開されたシーケンサ３６０は、次の行の処理を行うようにデータエンジン３９０を制御する（Ｓ１４４）。そして、再びスリープ状態に入る（Ｓ１４６）。
【０１６６】
データエンジン３９０は、次の行の各画素を順次処理し（Ｓ１６２）、最後の画素の処理が完了すれば、シーケンサ３６０にトリガ信号を出力する。これにより、シーケンサ３６０は、自身のスリープ状態を解除する。
【０１６７】
ここで、シーケンサ３６０の最後のループ（データエンジン３９０にとっては上位ループ、シーケンサ３３０にとっては下位ループ）が完了した、すなわち、現在のフレームの処理が完了したとする。そのため、シーケンサ３６０は、シーケンサ３３０にトリガ信号を出力する。これにより、シーケンサ３３０は、自身のスリープ状態を解除する。
【０１６８】
なお、シーケンサ３３０のスリープ中に、ホストＣＰＵ３１０は、シーケンサ３３０のパラメータを変更することもできる（Ｓ１０４）。ホストＣＰＵ３１０は、シーケンサ３３０のパラメータの変更が完了すれば、スリープ状態に入ってもよい（Ｓ１０６）。
【０１６９】
このように処理が繰り返され、動画像の全てのフレームの処理が完了すれば、ホストＣＰＵ３１０は、実行終了の処理、例えば終了時の種々の設定などを行う（Ｓ１０８）。これにて、ホストＣＰＵ３１０、シーケンサ３３０、シーケンサ３６０、データエンジン３９０は、処理を終了する（Ｓ１１０、Ｓ１２８、Ｓ１５２、Ｓ１６６）。
【０１７０】
なお、これらの機能ブロックは、処理を終了すると、自身または直上段の制御により、スリープ状態や電源ＯＦＦ状態に入ってもよい。
【０１７１】
本実施の形態の半導体ＬＳＩ３００は、上述した各効果以外に、より効率良く電力消費を抑制する効果を得ることができる。半導体ＬＳＩ３００では、シーケンサとデータエンジンは、制御バスを介して直上段にトリガ信号を送信する通知チャネルが構成されており、直上段のスリープ解除が高速にできる。この構成と、前述した、参照チャネルと制御チャネルとが独立して設けられている構成とにより、クロックサイクル精度レベルのクイックな電力制御が実現でき、無駄な電力消費期間を少なくすることができる。
＜第３の実施の形態＞
本発明にかかる技術は、並列して処理を行うデータエンジンの数が多い場合に大きなメリットを有する。第３の実施の形態として、この場合の半導体ＬＳＩの１例を説明する。
【０１７２】
図１０は、本発明の第３の実施の形態にかかる半導体ＬＳＩ５００を示す。該半導体ＬＳＩ５００は、ホストＣＰＵ、複数のシーケンサ（Ａ１、Ｂ１、Ｄ１、・・・、Ｄｎ、Ｃ１、・・・、Ｃｍ）、複数のデータエンジン（Ｘ１、・・・、Ｘｎ、Ｙ１、・・・、Ｙｍ）、クロック／電源制御部５１０を備える。なお、分かりやすいように、以下の図面において、各機能ブロックのインタフェース部や、スリープ状態のときにクロックを供給するラインなどを省略する。
【０１７３】
シーケンサＡ１は、ホストＣＰＵの直下に設けられ、ホストＣＰＵにより制御される。
【０１７４】
シーケンサＢ１、シーケンサＣ１、・・・、シーケンサＣｍは、シーケンサＡ１の直下に設けられ、シーケンサＡ１により制御される。
【０１７５】
シーケンサＣ１、・・・、Ｃｍは、直下に、データエンジンＹ１、・・・、Ｙｍが夫々接続されており、これらのデータエンジンを夫々制御する。
【０１７６】
一方、シーケンサＢ１の直下には、データエンジンではなく、さらに、シーケンサＤ１、・・・、Ｄｎが接続されている。これらのシーケンサは、シーケンサＢ１により制御される。
【０１７７】
シーケンサＤ１、・・・、Ｄｎは、直下に、データエンジンＸ１、・・・Ｘｎが夫々接続されており、これらのデータエンジンを夫々制御する。
【０１７８】
半導体ＬＳＩ５００に含まれる各シーケンサは、半導体ＬＳＩ１００の各シーケンサと同様な構成を有するので、ここで詳細な説明を省略する。
【０１７９】
本発明にかかる電力消費の制御技術をデータエンジン数が多い半導体ＬＳＩに適用することにより、細かな電力消費の制御が可能である。図１１にその一例を示す。
【０１８０】
図１１において、斜線のハッチングがされた矩形は、該矩形により表わされる機能ブロックの状態が「スリープ」であることを示し、点のハッチングがされた矩形は、該矩形により表わされる機能ブロックの状態が「電源ＯＦＦ」であることを示す。また、ハッチングされていない矩形は、該矩形により表わされる機能ブロックの状態が「アクティブ」であることを示す。
【０１８１】
図１１の例では、半導体ＬＳＩ５００のデータエンジンＸ１、・・・、Ｘｎは、クロック及び電源が供給され、アクティブ状態である。ホストＣＰＵは、電源が供給されているがクロックの供給が遮断されたスリープ状態である。また、データエンジンＸ１、・・・、Ｘｎをそれぞれ制御するシーケンサＤ１、・・・、Ｄｎ、及びこれらのシーケンサを制御するシーケンサＢ１、シーケンサＢ１を制御するシーケンサＡ１も、電源が供給されているが、クロックの供給が遮断されたスリープ状態である。なお、これらの機能ブロックのループカウンタ（ＲＣＡ１、ＲＣＢ１、ＲＣＤ１、・・・、ＲＣＤｎ）は、スリープ状態中にはカウント値を保持する。また、データエンジンＹ１、・・・、Ｙｍは電源とクロックのいずれの供給も遮断された「電源ＯＦＦ」状態であり、これらのデータエンジンをそれぞれ制御するシーケンサＣ１、・・・、Ｃｍも、電源ＯＦＦ状態であり、それぞれのループカウンタ（ＲＣＣ１、・・・、ＲＣＣｍ）は、カウント値をクリアされている。
【０１８２】
図１１に示す例から、半導体ＬＳＩ５００の各機能ブロックのクロックと電源の供給が細かく制御可能であることが分かる。
【０１８３】
図１０に示す半導体ＬＳＩ５００を一例として、本発明にかかる技術により、メモリの容量を削減できることを具体的に説明する。図１２の例を参照して説明する。
【０１８４】
図１２は、図１０に示す半導体ＬＳＩ５００に対して、トップマクロ５２０とサブマクロ５３０を明記した図である。サブマクロ５３０は、シーケンサＢ１、シーケンサＤ１、・・・、Ｄｎ、データエンジンＸ１、・・・、Ｘｎにより構成され、トップマクロ５２０は、シーケンサＡ１、シーケンサＣ１、・・・、Ｃｍ、データエンジンＹ１、・・・、Ｙｍにより構成される。ＭＡ１、ＭＢ１、ＭＣ１、・・・、ＭＣｍ、ＭＤ１、・・・、ＭＤｍは、それぞれのシーケンサにおいて、パラメータを格納するメモリである。
【０１８５】
例えば、サブマクロ５３０の各データエンジンＸ１、・・・、Ｘｎは、シーケンサＤ１のメモリＭＤ１、・・・、シーケンサＤｎのメモリＭＤｎに格納されたパラメータをそれぞれ必要とすると共に、シーケンサＢ１のメモリＭＢ１に格納されたパラメータも必要とする。データエンジンＸ１、・・・、ＸｎがシーケンサＢ１のメモリＭＢ１にアクセスできない場合には、これらの各データエンジンのメモリにも、シーケンサＢ１のメモリＭＢ１に格納されたパラメータを格納する必要がある。本発明の技術により、各シーケンサがメモリコントローラを備え、かつインタフェース部の仕様が同一であるため、データエンジンＸ１、・・・、ＸｎがシーケンサＢ１のメモリＭＢ１にアクセスできる。従って、これらのデータエンジンがシーケンサＢ１のメモリＭＢ１からパラメータを取得することができるため、当該パラメータを各データエンジンに格納する必要がなく、データエンジンのメモリ容量を削減することができる。
【０１８６】
トップマクロ５２０の各データエンジンについても同様である。例えば、データエンジンＹ１、・・・、Ｙｍは、シーケンサＣ１のメモリＭＣ１、・・・、シーケンサＣｍのメモリＭＣｍに格納されたパラメータをそれぞれ必要とすると共に、シーケンサＢ１のメモリＭＢ１に格納されたパラメータと、シーケンサＡ１のメモリＭＡ１に格納されたパラメータも必要とする。この場合、本発明の技術により、データエンジンＹ１、・・・、ＹｍがシーケンサＡ１のメモリＭＡ１とシーケンサＢ１のメモリＭＢ１にアクセスできるので、これらのデータエンジンがシーケンサＡ１とシーケンサＢ１のメモリからパラメータを取得することができる。従って、当該パラメータを各データエンジンに格納する必要がなく、データエンジンのメモリ容量を削減することができる。
＜第４の実施の形態＞
【０１８７】
半導体ＬＳＩの電力消費の制御を細かく行う点について、様々なバリエーションが考えられる。例えば、半導体ＬＳＩの機能ブロック毎に、シーケンサの階層数を増減することにより、半導体ＬＳＩの機能ブロック毎に異なる細かさで電力消費の制御ができる。図１３を参照して一例を説明する。
【０１８８】
図１３に示す例の半導体ＬＳＩ６００は、４つのドメイン（左上ドメイン６１０、右上ドメイン６２０、左下ドメイン６３０、右下ドメイン６４０）に大きく分けられている。左上ドメイン６１０は、さらに４つのドメイン（左上ドメイン６１１、右上ドメイン６１２、左下ドメイン６１３、右下ドメイン６１４）に分けられている。また、右上ドメイン６１２は、さらに上下左右の４つのドメインに分けられている。
【０１８９】
半導体ＬＳＩ６００において、最も上位のシーケンサはシーケンサＫ１である。シーケンサＫ１の直下に、左上ドメイン６１０、右上ドメイン６２０、左下ドメイン６３０、右下ドメイン６４０のシーケンス制御をそれぞれ行う４つのシーケンサ（シーケンサＬ１、シーケンサＬ２、シーケンサＬ３、シーケンサＬ４）が並列に接続されている。シーケンサＬ１は、左上ドメイン６１０における最も上位のシーケンサであり、その直下に、右上ドメイン６１２における最も上位のシーケンサ（シーケンサＭ１）が接続されている。シーケンサＭ１の直下に、右上ドメイン６１２の上下左右の４つのドメインをそれぞれ制御する４つのシーケンサ（シーケンサＮ１、シーケンサＮ２、シーケンサＮ３、シーケンサＮ４が並列に接続されている。
【０１９０】
なお、半導体ＬＳＩ６００は、シーケンサＫ１は、直上段のホストＣＰＵが接続されており、シーケンサＬ２、Ｌ３、Ｌ４、Ｎ１、Ｎ２、Ｎ３、Ｎ４は、自身の直下段のデータエンジンが接続されているが、分かりやすいように、図１３では示していない。
【０１９１】
この半導体ＬＳＩ６００では、本発明の技術を適用することにより、ドメイン毎にクロックと電源の供給を制御可能である。図示の例では、右上ドメイン６２０、左下ドメイン６３０、右下ドメイン６４０は、クロックと電源が遮断された「電源ＯＦＦ」状態である。左上ドメイン６１０では、左上ドメイン６１１、左下ドメイン６１３、右下ドメイン６１４は、クロックと電源が供給されているアクティブ状態であり、右上ドメイン６１２では、シーケンサＮ１が制御する左上のドメインを除き、他の３つのドメインは、電源が供給されているが、クロックの供給が遮断されているスリープ状態である。なお、シーケンサＮ１が制御する左上のドメインは、アクティブ状態である。
【０１９２】
本発明にかかる技術による、シーケンサの階層の細分化の容易性は、図１３に示すような細かな電源消費の制御を実現する。
【０１９３】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減を行ってもよい。これらの変更、増減が行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１９４】
例えば、図５に示す第２の実施の形態の半導体ＬＳＩ３００において、各シーケンサとデータエンジンのメモリが、上段によりパラメータを設定される第１のメモリと、第１のメモリからコピーしたパラメータを格納してシーケンサまたはデータエンジンの処理に供する構成を有する。そのため、半導体ＬＳＩ３００におけるホストＣＰＵ３１０またはシーケンサは、下段のシーケンサまたはデータエンジン３９０のループ処理中に、該下段のシーケンサまたはデータエンジン３９０の第１のメモリ３９５Ａに、変更されたパラメータを設定することができる。この場合、各シーケンサとデータエンジンにおいて、変更されたパラメータを第２のメモリへの反映は、１クロックででき、高速である。
【０１９５】
各シーケンサとデータエンジンのメモリを第１のメモリと第２のメモリに分けることをせずに、該シーケンサまたはデータエンジンのループ処理中に、上段（ホストＣＰＵ３１０またはシーケンサ）は、変更されたパラメータを設定することもできる。この場合、例えば、ホストＣＰＵ３１０とシーケンサは、下段に対してパラメータを設定する際に、該下段がループ処理中であれば、該下段に対して設定すべきパラメータを、自身のメモリに一時的に保持しておく。そして、下段のループ処理の完了時に、一時的に保存しておいたパラメータを該下段のメモリに転送する。
【０１９６】
このような構成によれば、変更されたパラメータを、下段が参照できるように反映するタイミングは、複数のサイクルを必要とするが、下段のメモリ容量を削減することができ、パラメータの変更の反映が低速でも良い場合には、有利である。
【０１９７】
なお、上述した各実施の形態において、各シーケンサは、クロック／電源制御インタフェース部を備え、自身、直下段へのクロック及び電源の供給を制御できるようになっている。クロックの供給のみまたは電源の供給のみを制御するように各シーケンサを構成してもよい。勿論、クロック／電源制御バスをクロック制御バスと電源制御バスとに別々に設けたり、第１のラインをクロックラインと電源ラインとに別々に設けたりするなどをしてもよい。さらに、クロック／電源制御部をクロック制御部と電源制御部とに分けるようにしてもよい。
【０１９８】
また、機能ブロックへのクロック供給の制御は、クロック供給のオン／オフに限られることがない。例えば、クロック供給を「通常モード」と「省電力モード」に分け、「通常モード」時には、２００ＭＨｚのクロックを供給するが、「省電力モード」時には、クロック供給を遮断する（クロック供給のオフ）代わりに、供給するクロックの周波数を通常時の２００ＭＨｚより低い１００ＭＨｚや５０ＭＨｚに下げるようにしてもよい。
【０１９９】
電源供給についても同様である。例えば、電源供給も「通常モード」と「省電力モード」に分け、「通常モード」時には、１．２ｖの電源を供給するが、「省電力モード」時には、電源供給を遮断する代わりに、供給する電源の電圧を通常時の１．２ｖより低い１．１ｖや１．０ｖなどに下げるようにしてもよい。
【符号の説明】
【０２００】
１０  故障状態モニタリング装置  １１  ＣＰＵ
１２  シーケンサ  １３  入力装置
１４  記憶装置  １５  ディスプレイ
１６  キーボード  １７  マウス
３１  符号化ＬＳＩ  ３２  全体制御シーケンサ
３３  システムバスＩ／Ｆ  ３４  画像バスＩ／Ｆ
３５  ラインメモリ部  ３６  変化点検出＆モード判定処理部
３７  符号生成部  ３８  符号パック部
３９  符号出力ＦＩＦＯ  ４０  符号化演算部
４１  画像データ入力装置  ４２  制御ＭＰＵ
１００  半導体ＬＳＩ  １１０  ホストＣＰＵ
１１１  第１のマスタインタフェース部  １１２  第２のマスタインタフェース部
１１３  クロック／電源制御インタフェース部  １１５  クロック／電源制御バス
１１９  インタフェース部  １２１  メモリバス
１２２  制御バス  １２３  第１のライン
１２４  第２のライン  １２５  クロック／電源制御バス
１３０  シーケンサ  １３１  メモリ
１３２  メモリコントローラ  １３３  シーケンスコントローラ
１３４  ループカウンタ  １４１  第１のスレーブインタフェース部
１４２  第２のスレーブインタフェース部  １４３  第１の入力インタフェース部
１４４  第１のマスタインタフェース部  １４５  第２のマスタインタフェース部
１４６  クロック／電源制御インタフェース部  １４７  第２の入力インタフェース部
１４９  インタフェース部  １５１  メモリバス
１５２  制御バス  １５３  第１のライン
１５４  第２のライン  １５５  クロック／電源制御バス
１６０  シーケンサ  １６１  メモリ
１６２  メモリコントローラ  １６３  シーケンスコントローラ
１６４  ループカウンタ  １７１  第１のスレーブインタフェース部
１７２  第２のスレーブインタフェース部  １７３  第１の入力インタフェース部
１７４  第１のマスタインタフェース部  １７５  第２のマスタインタフェース部
１７６  クロック／電源制御インタフェース部  １７７  第２の入力インタフェース部
１７９  インタフェース部  １８１  メモリバス
１８２  制御バス  １８３  第１のライン
１８４  第２のライン  １９０  データエンジン
１９１  第１のスレーブインタフェース部  １９２  第２のスレーブインタフェース部
１９３  第１の入力インタフェース部  １９４  第２の入力インタフェース部
１９５  メモリ  １９９  インタフェース部
２００  クロック／電源制御部  ３００  半導体ＬＳＩ
３１０  ホストＣＰＵ  ３１１  第１のマスタインタフェース部
３１２  第２のマスタインタフェース部
３１３  クロック／電源制御インタフェース部
３３０  シーケンサ  ３３１  メモリ
３３１Ａ  第１のメモリ  ３３１Ｂ  第２のメモリ
３３２  メモリコントローラ  ３３３  シーケンスコントローラ
３３４  ループカウンタ  ３４１  第１のスレーブインタフェース部
３４２  第２のスレーブインタフェース部  ３４３  第１の入力インタフェース部
３４４  第１のマスタインタフェース部  ３４５  第２のマスタインタフェース部
３４６  クロック／電源制御インタフェース部  ３４７  第２の入力インタフェース部
３６０  シーケンサ  ３６１  メモリ
３６１Ａ  第１のメモリ  ３６１Ｂ  第２のメモリ
３６２  メモリコントローラ  ３６３  シーケンスコントローラ
３６４  ループカウンタ  ３７１  第１のスレーブインタフェース部
３７２  第２のスレーブインタフェース部  ３７３  第１の入力インタフェース部
３７４  第１のマスタインタフェース部  ３７５  第２のマスタインタフェース部
３７６  クロック／電源制御インタフェース部  ３７７  第２の入力インタフェース部
３９０  データエンジン  ３９１  第１のスレーブインタフェース部
３９２  第２のスレーブインタフェース部  ３９３  第１の入力インタフェース部
３９４  第２の入力インタフェース部  ３９５  メモリ
３９５Ａ  第１のメモリ  ３９５Ｂ  第２のメモリ
３９６  第１のマスタインタフェース部  ４００  クロック／電源制御部
５００  半導体ＬＳＩ  ５１０  クロック／電源制御部
５２０  トップマクロ  ５３０  サブマクロ
６００  半導体ＬＳＩ  ６１０  左上ドメイン
６１１  左上ドメイン  ６１２  右上ドメイン
６１３  左下ドメイン  ６１４  右下ドメイン
６２０  右上ドメイン  ６３０  左下ドメイン
６４０  右下ドメイン
【図１】
0005517830.tif 000002
【図２】
0005517830.tif 000003
【図３】
0005517830.tif 000004
【図４】
0005517830.tif 000005
【図５】
0005517830.tif 000006
【図６】
0005517830.tif 000007
【図７】
0005517830.tif 000008
【図８】
0005517830.tif 000009
【図９】
0005517830.tif 000010
【図１０】
0005517830.tif 000011
【図１１】
0005517830.tif 000012
【図１２】
0005517830.tif 000013
【図１３】
0005517830.tif 000014
【図１４】
0005517830.tif 000015
【図１５】
0005517830.tif 000016