(57)【要約】【課題】  複数のＣＰＵが共通のバスに接続されている場合であっても、少ない回路規模で、消費電力を削減する。【解決手段】  バスクロックに応じてデータの転送を行うバスと、それぞれ前記バスに接続され、ＣＰＵクロックに応じて動作すると共に、それぞれが要求する、前記ＣＰＵクロックの周波数と前記バスクロックの周波数とに関する情報を出力する複数のＣＰＵと、前記複数のＣＰＵにそれぞれＣＰＵクロックを供給すると共に、前記バスにバスクロックを供給するクロック管理手段とを備え、前記クロック管理手段は、前記複数のＣＰＵから出力された、前記前記ＣＰＵクロックの周波数と前記バスクロックの周波数とに関する情報に基づいて、前記複数のＣＰＵにそれぞれ供給する前記ＣＰＵクロックの周波数と、前記バスクロックの周波数とを決定する。【選択図】  図１
2014126915.tif 000002
【特許請求の範囲】
【請求項１】
バスクロックに応じてデータの転送を行うバスと、
それぞれ前記バスに接続され、ＣＰＵクロックに応じて動作すると共に、それぞれが要求する、前記ＣＰＵクロックの周波数と前記バスクロックの周波数とに関する情報を出力する複数のＣＰＵと、
前記複数のＣＰＵにそれぞれＣＰＵクロックを供給すると共に、前記バスにバスクロックを供給するクロック管理手段とを備え、
前記クロック管理手段は、前記複数のＣＰＵから出力された、前記ＣＰＵクロックの周波数と前記バスクロックの周波数とに関する情報に基づいて、前記複数のＣＰＵにそれぞれ供給する前記ＣＰＵクロックの周波数と、前記バスクロックの周波数とを決定することを特徴とする処理装置。
【請求項２】
前記クロック管理手段は、前記複数のＣＰＵが要求するバスクロックの周波数のうち、最も高い周波数を、前記バスクロックの周波数として決定することを特徴とする請求項１に記載の処理装置。
【請求項３】
前記クロック管理手段は、前記ＣＰＵクロックが前記決定したバスクロックの周波数よりも低くならないように、前記複数のＣＰＵに供給するＣＰＵクロックの周波数を決定することを特徴とする請求項２に記載の処理装置。
【請求項４】
前記クロック管理手段は、前記複数のＣＰＵそれぞれについて、前記ＣＰＵが要求したＣＰＵクロックの周波数が、前記決定したバスクロックの周波数以上である場合は、前記ＣＰＵが要求した周波数を前記ＣＰＵクロックの周波数として決定し、前記ＣＰＵが要求したＣＰＵクロックの周波数が、前記決定したバスクロックの周波数よりも低い場合は、前記決定したバスクロックの周波数を前記ＣＰＵクロックの周波数として決定することを特徴とする請求項３に記載の処理装置。
【請求項５】
前記複数のＣＰＵはそれぞれ、要求した前記ＣＰＵクロックの周波数に関する第１の情報と、要求した前記バスクロックの周波数に関する第２の情報とを、前記クロック管理手段に出力し、前記クロック管理手段は、前記複数のＣＰＵそれぞれから出力された前記第１の情報と前記第２の情報を記憶する複数のレジスタを有することを特徴とする請求項１に記載の処理装置。
【請求項６】
前記複数のＣＰＵはそれぞれ、前記バスに接続された他の処理回路からの割り込み待ち状態への移行に応じて、要求する前記ＣＰＵクロックの周波数とバスクロックの周波数とに関する情報を前記クロック管理手段に出力し、前記割り込み待ち状態からタスク実行状態への移行に応じて、要求する前記ＣＰＵクロックの周波数とバスクロックの周波数とに関する情報を前記クロック管理手段に出力することを特徴とする請求項１に記載の処理装置。
【請求項７】
前記バスに接続され、前記バスを介して入力したデータを記録媒体に記録する記録手段を備え、前記ＣＰＵは、前記記録手段によるデータの転送中か否かに応じて要求する前記バスクロックの周波数を決めることを特徴とする請求項１に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は処理装置に関し、特に複数のＣＰＵを用いて処理を行う装置に関する。
【背景技術】
【０００２】
従来、デジタルカメラや携帯電話、スマートフォンなどの情報処理装置においては、ＣＰＵを用いて動画や静止画、或いは音声などの情報データを処理している（例えば、特許文献１参照）。また、携帯機器においては、ＣＰＵに供給する動作クロックの周波数を制御することにより消費電力を削減することが行われている。
【０００３】
例えば、ＣＰＵで処理すべき作業が無くなった場合には、ＣＰＵ自体を省電力なスリープモードに入れるとともに、ＣＰＵの動作クロックやＣＰＵバスクロックの周波数を下げるようにする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−９８６９６
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年では、処理されるデータの量が増加しているため、複数のＣＰＵを用いて処理を行うようになった。一つのＣＰＵバスに複数のＣＰＵが接続された場合、各ＣＰＵが自分自身の都合で、ＣＰＵバスクロックの周波数を下げるようなことができない。
【０００６】
そのため、消費電力を削減することができないという問題があった。
【０００７】
本発明はこのような課題を解決し、複数のＣＰＵが共通のバスに接続されている場合であっても、少ない回路規模で、消費電力を削減することができるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明においては、バスクロックに応じてデータの転送を行うバスと、それぞれ前記バスに接続され、ＣＰＵクロックに応じて動作すると共に、それぞれが要求する、前記ＣＰＵクロックの周波数と前記バスクロックの周波数とに関する情報を出力する複数のＣＰＵと、前記複数のＣＰＵにそれぞれＣＰＵクロックを供給すると共に、前記バスにバスクロックを供給するクロック管理手段とを備え、前記クロック管理手段は、前記複数のＣＰＵから出力された、前記前記ＣＰＵクロックの周波数と前記バスクロックの周波数とに関する情報に基づいて、前記複数のＣＰＵにそれぞれ供給する前記ＣＰＵクロックの周波数と、前記バスクロックの周波数とを決定する。
【発明の効果】
【０００９】
本発明によれば、複数のＣＰＵが共通のバスに接続されている場合であっても、少ない回路規模で、消費電力を削減することができるようになる。
【図面の簡単な説明】
【００１０】
【図１】信号処理回路の構成を示すブロック図である。
【図２】レジスタの構成及び要求されたクロック周波数と出力されるクロック周波数の関係を示す図である。
【図３】アイドルタスクと割り込み処理を示すフローチャートである。
【図４】ＣＰＵバスの使用判定処理を示すフローチャートである。
【図５】ＣＰＵにより要求されるクロックの周波数の例を示すタイムチャートである。
【図６】ＣＰＵにより要求されるクロックの周波数と、出力されるクロックの周波数の例を示すタイムチャートである。
【図７】第２の実施形態の信号処理回路の構成を示すブロック図である。
【図８】要求されたクロック周波数と出力されるクロック周波数の関係を示す図である。
【図９】実施形態におけるカメラの構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下に、添付図面を参照して本発明を実施するための形態について詳細に説明する。実施例では、本発明の処理装置をカメラに適用した場合を例として記載する。以下に説明する実施の形態は、本発明の実現するための一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。図９は、本発明の実施形態によるカメラ９００の構成を示す図である。
【００１２】
図９において、撮像部９０１は信号処理回路９０３からの指示により被写体を撮影し、動画データや静止画データを出力する。マイク９０２は、被写体周囲の音声を取得し、音声データを出力する。信号処理回路９０３は、後述のように複数のＣＰＵを備え、動画や静止画データ、或いは、音声データを処理する。操作部９０４は、電源スイッチや記録開始、停止の指示スイッチ等の、ユーザが操作可能な各種のスイッチやボタンを備える。また、操作部９０４は、タッチパネル等により構成されることも可能である。メモリ９０５は、信号処理回路９０３の処理のために使用されるメモリであり、動画データや静止画データ、音声データ、或いは、他のデータを記憶する。メモリ９０３は揮発性メモリであり、例えば、ＤＲＡＭで構成される。また、メモリ９０５は、信号処理回路９０３とは別の集積回路（ＩＣ）として構成される。メモリカード９０６、９０７はそれぞれフラッシュメモリを内蔵している。メモリカード９０６、９０７はそれぞれ、不図示のカードスロット等の装着、排出機構により、カメラ９００に対して容易に装着、排出が可能である。また、メモリカード９０６、９０７の一方を、無線ＬＡＮ機能を持つメモリカードとしてもよい。ディスプレイ９０８は、撮影された動画や静止画、或いは、再生された画像、及び、操作メニューなどの各種の情報を表示する。ディスプレイ９０８は、液晶パネルや有機ＥＬパネルを備える。スピーカ９０９は、再生された音声を出力する。
【００１３】
次に、信号処理回路９０３について説明する。図１は、信号処理回路９０３の構成を示す図である。図１に示す信号処理回路９０３の各処理ブロックは、一つの集積回路として構成される。
【００１４】
図１において、第１のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と第２のＣＰＵ１０２はそれぞれ、カメラ９００の全体の動作を制御する。ＣＰＵ１０１とＣＰＵ１０２はそれぞれ、マイクロプロセッサやレジスタなどを備え、不図示の不揮発メモリに記憶されたソフトウエア（ファームウエア）に従って動作する。また、ＣＰＵ１０１とＣＰＵ１０２は互いに処理を分担して実行する。例えば、ＣＰＵ１０１はカードコントローラ１０５を制御して、メモリカード９０６に対する各種のデータの書き込み、読み出しを行う。また、ＣＰＵ１０２はカードコントローラ１０６を制御して、メモリカード９０７に対する各種のデータの書き込み、読み出しを行う。このようにＣＰＵ１０１とＣＰＵが互いに異なる処理を分担し、或いは同時に処理を行うことで、カメラ９００における処理パフォーマンスを上げている。ＣＰＵ１０１とＣＰＵ１０２はそれぞれ、クロック管理部１０３より供給される動作クロック（以下ＣＰＵクロック）に従って動作する。
【００１５】
クロック管理部１０３は、ＣＰＵ１０１とＣＰＵ１０２にＣＰＵクロックを供給し、更に、ＣＰＵバスのクロック（以下ＣＰＵバスクロック）も供給する。クロック管理部１０３についての詳細は後述する。
【００１６】
メモリ１０４は、第１のＣＰＵ１０１と第２のＣＰＵ１０２の間のデータ通信や、またカードコントローラ１０６、１０７に対するデータの書き込み、読み出しのためのバッファメモリとして利用される。
【００１７】
カードコントローラ１０５、１０６はそれぞれ、メモリカードに対しデータの読み書きを行う。カードコントローラ１０５、１０６は、ＣＯＵ１０１、１０２により制御され、ＣＰＵバス１１３を介して入力したデータを各メモリカード９０６、９０７に記録する。また、カードコントローラ１０５、１０６は、メモリカード９０６、９０７から読み出したデータを、ＣＰＵバス１１３を介してメモリ１０４に記憶する。また、カードコントローラ１０５、１０６はそれぞれ、メモリカードに対する書き込み、或いは読み出しコマンドによりデータの書き込みや読み出しが完了すると、完了を通知する割り込み信号を各ＣＰＵに出力する。
【００１８】
画像信号処理部１０７は、撮像部９０１から出力された動画データや静止画データに対しホワイトバランスやガンマ補正等の所定の信号処理を行い、メモリバス１１５を介してメモリ９０５に記憶する。音声信号処理部１０８は、記録時においては、マイク９０２から入力される音声データに対し、ノイズ除去等の所定の信号処理を行い、メモリバス１１５を介してメモリ９０５に記憶する。また、再生時においては、メモリ９０５に記憶されている音声データを読み出し、スピーカ９０９から出力する機能を有する。
【００１９】
コーデック１０９は、記録時においては、画像信号処理部１０７によりメモリ９０５に記憶された動画データや静止画像データを読みだして、ＭＰＥＧやＨ．２６４、或いはＪＰＥＧなどの所定の符号化方式に従って符号化してメモリ９０５に記憶する。また、コーデック１０９は、音声信号処理部１０８によりメモリ９０５に記憶された音声データを読み出してＡＡＣ等の符号化方式に従って符号化してメモリ９０５に記憶する。また、コーデック１０９は、再生時には、再生された動画データや静止画データ、或いは音声データを復号してメモリ９０５に記憶する。
【００２０】
表示部１１０は、メモリ９０５に記憶されている動画や音声データを表示するための処理を行い、ディスプレイ９０８に出力する。また、表示部１１０は、メニュー画面等の各種の情報をディスプレイ９０８に出力する。また、ディスプレイ９０８がタッチパネルの機能を持つ場合、ユーザによるタッチ操作を検出し、各ＣＰＵにユーザ操作を伝達する機能を有する。なお、本実施形態では、第１のＣＰＵ１０１がユーザの操作を受け付け、必要に応じて第２のＣＰＵ１０２を制御するものとする。
【００２１】
通信部１１１、通信部１１２はそれぞれ、信号処理回路１０３の外部の構成と通信を行う機能を有する。具体的には、撮像部９０１におけるレンズ駆動部と通信し、各ＣＰＵからの指示でレンズのフォーカス制御やズーム制御を行ったり、オートフォーカスセンサから随時データを通信により読み出し、読み出したデータを、フォーカス状態を判断するために利用したりする。
【００２２】
ＣＰＵバス１１３、１１４は、各ＣＰＵが各ブロックを制御するためのコマンドやデータなどを送受信するための伝送路として利用される。また、ＣＰＵバス１１３、１１４は、カードコントローラ１０５、１０６とメモリ１０４との間のデータ転送、あるいは、メモリバス１１５を介してのメモリ９０５へのデータ転送のための伝送路として利用される。ＣＰＵバス１１３、１１４は、クロック管理部１０３から供給されるＣＰＵバスクロックに応じて動作し、各回路ブロックの間でデータの転送を行う。本実施形態では、ＣＰＵバスを二つに分けることにより、複数の回路ブロックが共通のＣＰＵバスに接続された場合の回路規模の増加を抑えている。
【００２３】
メモリバス１１５は、各ブロックとメモリ９０５との間でデータやコマンドを送受信するための伝送路である。メモリバス１１５と、ＣＰＵ１０１、ＣＰＵ１０２、カードコントローラ１０５、カードコントローラ１０６とは、ＣＰＵバス１１３を介して接続されており、これらの回路ブロックからメモリ９０５へのアクセスが可能である。
【００２４】
このように、ＣＰＵ１０１、１０２、メモリ１０４、カードコントローラ１０５、１０６、画像信号処理部１０７、音声信号処理部１０８、コーデック１０９、表示部１１０の各処理回路が、ＣＰＵバス１１３に接続される。また、通信部１１１、１１２がＣＰＵバス１１４に接続される。
【００２５】
次に、クロック管理部１０３について説明する。クロック制御部１０３は発振器を備え、発振器により生成されたクロックの周波数を分周することにより、異なる周波数のＣＰＵクロックとＣＰＵバスクロックを生成する。また、クロック管理部１０３は、各ＣＰＵより出力された、ＣＰＵクロックとＣＰＵバスクロックの周波数に関する情報を記憶するためのレジスタを備えている。
【００２６】
図２（ａ）はこれらのクロック周波数の情報を記憶するレジスタを示している。第１のＣＰＵクロックレジスタ２０１は、ＣＰＵ１０１から要求されたＣＰＵクロックの周波数の情報を記憶するレジスタである。第２のＣＰＵクロックレジスタ２０２も同様に、ＣＰＵ１０２から要求されたＣＰＵクロックの周波数の情報を記憶するレジスタである。第１のＣＰＵバスクロックレジスタ２０３は、ＣＰＵ１０１から要求されたＣＰＵバス１１３、１１４のＣＰＵバスクロックの周波数の情報を記憶するレジスタである。第２のＣＰＵバスクロックレジスタ２０４も同様に、ＣＰＵ１０２から要求されたＣＰＵバス１１３、１１４のＣＰＵバスクロックの周波数の情報を記憶するレジスタである。
【００２７】
クロック管理部１０３は、各レジスタに記憶された周波数の情報に基づいて、ＣＰＵ１０１、ＣＰＵ１０２に対して出力するＣＰＵクロックの周波数を決める。また、クロック管理部１０３は、各レジスタに記憶された周波数の情報に基づいて、ＣＰＵバス１１３、１１４に出力するＣＰＵバスクロックの周波数を決める。ＣＰＵ１０１から要求されたＣＰＵバスクロックの周波数と、ＣＰＵ１０２から要求されたＣＰＵバスクロックの周波数とが異なる可能性があり、その場合にＣＰＵバスクロックをどのように設定するのかを決めておく必要がある。また、一般に、ＣＰＵクロックの周波数とＣＰＵバスクロックの周波数とを全く独立に制御することはできず、所定の依存関係を保つ必要がある。本実施形態では、以下のような制限、依存関係に従い、ＣＰＵクロックとＣＰＵバスクロックの周波数を決定する。
（１）ＣＰＵ１０１から要求されたＣＰＵバスクロックの周波数とＣＰＵ１０２から要求されたＣＰＵバスクロックの周波数とが異なる場合には、高い方の値を使用する。これは、処理パフォーマンス優先するという思想によるものである。
（２）ＣＰＵクロックの周波数≧ＣＰＵバスクロックの周波数とする。
（３）クロックの周波数は、２００メガヘルツ（ＭＨｚ）、１００ＭＨｚ、５０ＭＨｚの３種類から選択される。
【００２８】
本実施形態では、各ＣＰＵが設定したＣＰＵバスクロックの周波数が、ともに低い方の周波数である５０Ｈｚの場合、クロック管理部１０３は、ＣＰＵバスクロック周波数を５０ＭＨｚと決定する。また、少なくとも一方のＣＰＵが設定したＣＰＵバスクロック周波数が、高い方の周波数である１００ＭＨｚである場合、クロック管理部１０３は、ＣＰＵバスクロック周波数を１００ＭＨｚと決定する。言い換えると、クロック管理部１０３は、複数のＣＰＵにより設定されたＣＰＵバスクロックの周波数のうち、最も高い周波数を、ＣＰＵバスクロックの周波数として決定する。
【００２９】
更に、クロック管理部１０３は、各ＣＰＵが設定したＣＰＵクロック周波数が、このように決定したＣＰＵバスクロック周波数以上である場合は、各ＣＰＵに供給するＣＰＵクロック周波数を、要求された周波数に決定する。一方、ＣＰＵが設定したＣＰＵクロックの周波数が、決定されたＣＰＵバスクロックの周波数よりも低い場合は、ＣＰＵクロックの周波数が、ＣＰＵバスクロックの周波数よりも低くならないように、ここではＣＰＵバスクロックの周波数と同じ周波数に設定する。
【００３０】
各レジスタに記憶された値と、その時に出力されるＣＰＵクロック、ＣＰＵバスクロックの周波数を図２（ｂ）の表２０５に示す。
【００３１】
例えば、各ＣＰＵから要求され、レジスタに記憶された周波数の値が２０６に示す状態である場合、ＣＰＵバスクロックレジスタの設定値のどちらかが２００ＭＨｚであるため、（１）により、ＣＰＵバスクロックの周波数は２００ＭＨｚとなる。また、（２）（３）により、ＣＰＵ１０２とＣＰＵ１０２のいずれのＣＰＵクロックの周波数も２００ＭＨｚとなる。これは、第２のＣＰＵクロックレジスタ２０２の設定値が１００ＭＨｚであっても、クロック管理部１０３により、ＣＰＵ１０２のＣＰＵクロック周波数が２００ＭＨｚに設定されることを示す。
【００３２】
また、２０７のように、ＣＰＵ１０２によりＣＰＵクロック周波数として５０Ｈｚが要求されている場合でも、クロック管理部１０３は、ＣＰＵバスクロック周波数として１００Ｈｚを設定したため、ＣＰＵ１０２には１００ＭＨｚのＣＰＵクロックが供給される。
【００３３】
このように、各ＣＰＵから要求されたクロック周波数に応じて、各ＣＰＵに供給する動作クロックの周波数とバスクロックの周波数とを制御する。また、各クロックの周波数は、前述のような規則に従って決めることができるので、クロック管理部１０３を比較的単純な回路構成とすることができる。
【００３４】
次に各ＣＰＵで動作するソフトウェアについて説明する。各ＣＰＵでは、リアルタイムＯＳが動作しており、その上で動作するソフトウェアは、割り込み処理と、複数のタスク処理で構成される（リアルタイムＯＳの詳細については割愛する）。各ＣＰＵにおいては、各回路ブロックからの割り込み要求に応じて処理が開始され、リアルタイム性の求められる処理を行った後に、処理を終了する。割り込み処理内では、タスクを起床させるような処理が行われる場合もあり、そのような処理が行われた場合には、割り込み処理が終了後、起床したタスク処理が開始される。
【００３５】
タスクには優先度が設けられており、起床中のタスクが複数存在した場合には、最も優先度が高いタスクが動作する。動作したタスクは、必要な処理を行い、他のタスクを起床させたりして、処理が完了すると、スリープ状態に移行する。最も優先度の低いタスクはアイドルタスクと呼ばれ、アイドルタスクが動作可能な状態になった場合、つまりＣＰＵが処理するものがなくなった際には、ＣＰＵを割り込み待ち状態に移行させる。この時ＣＰＵ内部では、割り込み要求を受け付けるための回路のみが機能している状態となり、その他の内部ブロックに対しては、クロックの供給が遮断される。そのため、ＣＰＵの消費電力が抑えられる。
【００３６】
さらに各ＣＰＵは、ＣＰＵバスに接続された他の処理回路からの割り込み待ち状態への移行に応じて、ＣＰＵクロックやＣＰＵバスクロックの周波数を設定し、設定した周波数を示す情報をクロック管理部１０３に出力する。また、各ＣＰＵは、割り込み待ち状態からタスク実行状態への移行に応じて、要求するＣＰＵクロックやＣＰＵバスクロックの周波数を設定し、設定した周波数を示す情報をクロック管理部１０３に出力する。クロック管理部１０３は、各ＣＰＵから出力されたＣＰＵクロックやＣＰＵバスクロックの周波数の値を、図２（ａ）のレジスタに記憶する。つまり、割り込み処理開始時と、アイドルタスク動作時に、クロック管理部１０３により、ＣＰＵクロックとＣＰＵバスクロックの周波数が設定される。これらの処理について図３に示す。
【００３７】
各ＣＰＵは、ＣＰＵクロックの周波数として複数の所定の周波数の何れかを設定する。そして、各ＣＰＵは、設定したＣＰＵクロックの周波数に関する情報（第１の情報）と、ＣＰＵバスクロックの周波数に関する情報（第２の情報）を、クロック管理部１０３に出力する。即ち、各ＣＰＵは、ＣＰＵＣＬＫ＿ＭＡＸ、ＣＰＵＣＬＫ＿ＭＩＮ、のいずれかの周波数にＣＰＵクロックを設定する。ここで、ＣＰＵＣＬＫ＿ＭＡＸはＣＰＵが高速に処理を実行するためのＣＰＵクロック周波数で、ＣＰＵＣＬＫ＿ＭＩＮは低消費電力状態におけるＣＰＵクロック周波数である。ＣＰＵＣＬＫ＿ＭＡＸの周波数よりも、ＣＰＵＣＬＫ＿ＭＩＮの方が低い。
【００３８】
また、各ＣＰＵは、ＣＰＵバスクロックの周波数として、複数の所定の周波数の何れかを要求する。即ち、各ＣＰＵは、ＣＰＵＢＣＬＫ＿ＭＡＸ、ＣＰＵＢＣＬＫ＿ＭＩＮ、ＣＰＵＢＣＬＫ＿ＤＭＡのいずれかの周波数にＣＰＵバスクロックを設定する。ここで、ＣＰＵＢＣＬＫ＿ＭＡＸはＣＰＵバス動作時におけるＣＰＵバスクロック周波数である。また、ＣＰＵＢＣＬＫ＿ＭＩＮはＣＰＵバスが動作していない状態におけるＣＰＵバスクロックの周波数である。また、ＣＰＵＢＣＬＫ＿ＤＭＡはカードコントローラ１０５、１０６がデータ転送を十分高速に行うために必要なＣＰＵバスクロックの周波数である。ＣＰＵＢＣＬＫ＿ＭＡＸの周波数よりも、ＣＰＵＢＣＬＫ＿ＭＩＮの方が低い。
【００３９】
図３（ａ）は、各ＣＰＵにより実行されるアイドルタスクの処理を示すフローチャートである。他のタスクの処理が全て無くなり、アイドルタスクの処理に移行した場合、ＣＰＵは、ＣＰＵクロックの周波数を、あらかじめ決定していたＣＰＵＣＬＫ＿ＭＩＮに設定する（Ｓ３０１）。
【００４０】
次に、ＣＰＵは、ＣＰＵバス１１３、１１４が使用中か否かを判別する（Ｓ３０２）。この判別処理について図４を用いて説明する。この判別処理のため、ＣＰＵバス使用中フラグを使用する。ＣＰＵ以外のブロックがＣＰＵバスのバスマスターとして動作する場合に、ＣＰＵバス使用中フラグとして所定値が設定される。ＣＰＵ１０１、１０２はそれぞれ、内部のレジスタに、ＣＰＵバス使用中フラグの設定値を保持する。ＣＰＵ１０１、１０２は、カードコントローラ１０５、１０６がメモリ１０４やメモリ９０５にデータ転送（ＤＭＡ：Ｄｉｒｅｃｔ  ＭｅｍｏｒｙＡｃｃｅｓｓ）を行う場合に、ＣＰＵバス使用中フラグに所定値を設定する。
【００４１】
図４（ａ）は、ＣＰＵ１０１、１０２によるカードコントローラ１０５、１０６の制御処理の一部であるところのＤＭＡ開始処理のフローチャートである。処理が開始されると、ＣＰＵは、カードコントローラ１０５、１０６に対し、データ転送サイズ、アドレス等のＤＭＡ設定コマンドを送信し、更に、データ転送の開始を指示する（Ｓ４０１）。次に、ＣＰＵは、ＣＰＵバス使用中フラグの設定値に１を加える（立てる）（Ｓ４０２）。本実施形態では、カードコントローラ１０５と１０６があるため、二つのカードコントローラ１０５、１０６が共にＤＭＡ転送を行う状態と、一方だけがＤＭＡ転送を行っている状態が考えられる。そのため、カードコントローラに対するＤＭＡ転送を指示した場合に、ＣＰＵバス使用中フラグに１を加えることで、二つのカードコントローラが共にＤＭＡ転送を行っている状態を判別できるようにしている。ＣＰＵバス使用中フラグは、ＣＰＵバス１１３、１１４を用いてデータの転送を行っている処理回路の数を示す情報であるともいえる。次に、ＣＰＵは、ＤＭＡ転送完了の割り込み待ち状態に移行し、処理タスクはスリープ状態となる（Ｓ４０３）。
【００４２】
図４（ｂ）は、カードコントローラ１０５、１０６からＤＭＡ転送完了の割り込み通知を受けた場合のＣＰＵ１０１、１０２の処理を示すフローチャートである。この処理は、後述する図３（ｂ）のＳ３０３の処理の具体例の１つである。
【００４３】
割り込み処理が開始されると、ＣＰＵはＣＰＵバス使用中フラグの設定値から１を引く（Ｓ４０４）。次に、ＣＰＵは、スリープ状態にあるタスクに起床（ウエイクアップ）指示を出し、割り込み処理を終了する（Ｓ４０５）。
【００４４】
図４（ｃ）は、Ｓ３０２のＣＰＵバスが使用中であるか否かの判別処理を示すフローチャートである。まず、ＣＰＵは、ＣＰＵバス使用中フラグに設定されている値をチェックし（Ｓ４０６）、１以上の値が設定されているか否かを判別する（Ｓ４０７）。ＣＰＵバス使用中フラグに１以上の値が設定されていた場合、二つのカードコントローラ１０５、１０６の少なくとも一方がＣＰＵバス１１３、１１４を使用してデータ転送中である。そのため、ＣＰＵは、この場合、ＣＰＵバスの使用中であると判定する（Ｓ４０８）。また、ＣＰＵバス使用中フラグが０に設定されていた場合、ＣＰＵは、ＣＰＵバス１１３、１１４が使用されていないと判定する（Ｓ４０９）。
【００４５】
ここで図３（ａ）のフローチャートに戻る。Ｓ３０２で、ＣＰＵバス１１３、１１４の使用中ではないと判定された場合には、ＣＰＵは、ＣＰＵバスクロックの周波数をあらかじめ決定していたＣＰＵＢＣＬＫ＿ＭＩＮに設定する。また、ＣＰＵバスの使用中と判定された場合、ＣＰＵは、ＣＰＵバスクロックの周波数をあらかじめ決定していたＣＰＵＢＣＬＫ＿ＤＭＡに設定する（Ｓ３０５）。
【００４６】
次に、ＣＰＵは、割り込み待ち状態に移行し、低消費電力状態とする（Ｓ３０４）。ＣＰＵは割り込み要求を受けるまで、この低消費電力状態を保つことになる。またＣＰＵバスクロックの周波数は、ＣＰＵＢＣＬＫ＿ＭＩＮまたはＣＰＵＢＣＬＫ＿ＤＭＡという周波数に設定される。
【００４７】
図３（ｂ）は各ＣＰＵにおける割り込み処理のフローチャートである。割り込み待ち状態、或いは通常の動作状態において、各処理ブロックから割り込み要求を受けた場合、ＣＰＵは、ＣＰＵクロックの周波数をあらかじめ決定していたＣＰＵＣＬＫ＿ＭＡＸに設定する（Ｓ３０６）。次に、ＣＰＵは、ＣＰＵバスクロックの周波数をあらかじめ決定していたＣＰＵＢＣＬＫ＿ＭＡＸに設定する（Ｓ３０７）。これらの処理により、ＣＰＵは低消費電力状態から高速処理状態に移行する。次に、ＣＰＵは、受け取った割り込み要因に応じた割り込み処理を行った後、割り込み処理を終了する（Ｓ３０８）。Ｓ３０８の処理において、タスクを起床させるような処理があった場合には、この後、起床したタスクの処理が実行される。Ｓ３０８の処理の具体例として、図４（ｂ）の処理があげられる。
【００４８】
図５は、ＣＰＵ１０１またはＣＰＵ１０２における各ソフトウェアの処理と、ＣＰＵバス使用中フラグ、クロック管理部１０３のレジスタに設定された周波数の例を示すタイムチャートである。なお、図５では、ＣＰＵＣＬＫ＿ＭＡＸ＝ＣＰＵＢＣＬＫ＿ＭＡＸ＝２００ＭＨｚ、ＣＰＵＣＬＫ＿ＭＩＮ＝ＣＰＵＢＣＬＫ＿ＭＩＮ＝５０ＭＨｚ、ＣＰＵＢＣＬＫ＿ＤＭＡ＝１００ＭＨｚとしている。
【００４９】
図５において、スタート時には、タスク１の処理が実行されており（符号５０１）、ＣＰＵクロックレジスタ、ＣＰＵバスククロックレジスタともに２００ＭＨｚが設定されている。その後割り込み処理２や（符号５０２）、それによって起こされたタスク２の処理に切り替わるが（符号５０３）、レジスタ設定は変わらない。その後、処理はタスク１に戻り（符号５０４）、この処理の中でカードコントローラのＤＭＡ開始処理が実行されたとすると、ＣＰＵバス使用中フラグに１が加えられ（符号５０５）、タスク１はスリープする。タスク１のスリープにより実行すべき処理が無くなったため、アイドルタスクが動作する（符号５０６）。
【００５０】
アイドルタスクによりＣＰＵクロックレジスタにはＣＰＵＣＬＫ＿ＭＩＮ＝５０ＭＨｚに設定される。また、ＣＰＵバス使用中フラグが１であるため、ＣＰＵＢＣＬＫ＿ＤＭＡ＝１００ＭＨｚに設定されて、割り込み待ちとなる。
【００５１】
ＤＭＡ完了割り込みにより割り込み処理１が実行され（符号５０７）、ＣＰＵクロック、ＣＰＵバスクロックの周波数がＣＰＵＣＬＫ＿ＭＡＸ＝ＣＰＵＢＣＬＫ＿ＭＡＸ＝２００ＭＨｚに設定され、また、ＣＰＵバス使用中フラグから１が引かれて０となる。割り込み処理１が終了すると、割り込み処理１によって起床されたタスク１が動作し（符号５０８）、タスク１がスリープすると再びアイドルタスクが動作する（符号５０９）。この時ＣＰＵバス使用中フラグは０であるため、ＣＰＵクロック、ＣＰＵバスクロックの周波数は、共に５０ＭＨｚに設定される。
【００５２】
図６は、ＣＰＵ１０１とＣＰＵ１０２におけるＣＰＵバス使用中フラグ、及び、各ＣＰＵから要求されたＣＰＵクロックとＣＰＵバスクロックの周波数の例を示すタイムチャートである。ＣＰＵ１０１では、図５と同様に、ＣＰＵＣＬＫ＿ＭＡＸ＝ＣＰＵＢＣＬＫ＿ＭＡＸ＝２００ＭＨｚ、ＣＰＵＣＬＫ＿ＭＩＮ＝ＣＰＵＢＣＬＫ＿ＭＩＮ＝５０ＭＨｚ、ＣＰＵＢＣＬＫ＿ＤＭＡ＝１００ＭＨｚとする。ＣＰＵ１０２では、ＣＰＵＣＬＫ＿ＭＡＸ＝ＣＰＵＢＣＬＫ＿ＭＡＸ＝ＣＰＵＢＣＬＫ＿ＤＭＡ＝１００ＭＨｚ、ＣＰＵＣＬＫ＿ＭＩＮ＝ＣＰＵＢＣＬＫ＿ＭＩＮ＝５０ＭＨｚとする。各ＣＰＵが設定するクロック周波数は、これ以外の周波数とすることも可能である。
【００５３】
符号６０１、６０２はそれぞれ、ＣＰＵ１０１、ＣＰＵ１０２におけるＣＰＵバス使用中フラグ、ＣＰＵクロック周波数、ＣＰＵバスクロック周波数の設定状態を示している。このように設定された場合、クロック管理部１０３により、符号６０３のように各ＣＰＵへのＣＰＵクロック周波数と、ＣＰＵバスクロックの周波数が設定される。
【００５４】
以上説明したとおり、本実施形態では、簡単な回路構成により、各ＣＰＵの動作状態と、ＣＰＵバスの使用状態に応じた周波数のクロックを供給することが可能となる。そのため、複数のＣＰＵ共通のバスに接続される構成において、回路規模を大きくすることなく、消費電力を抑えることが可能となる。
【００５５】
なお、本実施形態では、主にカードコントローラによるＤＭＡ転送完了の割り込み通知によりＣＰＵバスが使用中であるか否かを判別する場合について説明した。これ以外にも、ＣＰＵバスに接続されているその他の回路ブロックについても、同様にＣＰＵバス使用中フラグを設定することにより、他の回路ブロックによるＣＰＵバスの使用中か否かを判別することが可能となる。
【００５６】
また、本実施形態では、一つのＣＰＵバスに二つのＣＰＵが接続されている構成としたが、三つ以上のＣＰＵが共通のＣＰＵバスに接続されている構成であっても、同様にＣＰＵクロックとＣＰＵバスクロックを制御することが可能である。
【００５７】
また、本実施形態では、動画データや静止画データなどをメモリカードに記録する構成であったが、メモリカード以外の、ランダムアクセスの記録媒体を用いることも可能である。この場合、カードコントローラではなく、記録媒体に対して各種の情報を記録し、再生する記録再生部が設けられる。
【００５８】
次に、第２の実施形態を説明する。図７は、第２の実施形態における信号処理回路９０３の構成を示すブロック図である。図１と同様の構成については、同一の番号を付加し、詳細な説明は省略する。
【００５９】
図７では、ＣＰＵバス１１４に第３のＣＰＵ７０１が接続される。ＣＰＵ７０１は、通信部１１１、通信部１１２の制御を行う。また、ＣＰＵ７０１は、メモリ７０２を使用して、ＣＰＵ１０１、１０２と通信しながら、カメラ９００全体の制御を行う。
【００６０】
ＣＰＵ７０１は、ＣＰＵ１０１、１０２とは異なる方法で、ＣＰＵクロックの周波数やＣＰＵバスクロックの周波数をクロック管理部１０３に対して設定する。ＣＰＵ７０１は、クロック管理部１０３に対し、スリープ信号７０１ｓを出力する。スリープ信号７０１ｓは、ＣＰＵ７０１が割り込み待ちの状態（スリープ状態）に移行した場合にアサートされる信号である。
【００６１】
クロック管理部１０３は、ＣＰＵ７０１からスリープ信号７０１ｓを受けた場合、ＣＰＵ７０１に供給する動作クロックの周波数を下げても良いと判断する。つまり、第１の実施形態における、ＣＰＵＣＬＫ＿ＭＩＮ、ＣＰＵＢＣＬＫ＿ＭＩＮの設定が行われた場合と同様の扱いとなる。また逆に、スリープ状態において割り込みを受け付け、割り込み処理が開始されると、ＣＰＵ７０１は、スリープ信号７０１ｓをデアサートする。クロック管理部１０３は、スリープ信号７０１ｓがデアサートされた場合、ＣＰＵ７０１に供給する動作クロックの周波数を上げる必要があると判断する。つまり、第１の実施形態における、ＣＰＵＣＬＫ＿ＭＡＸ、ＣＰＵＢＣＬＫ＿ＭＡＸの設定が行われた場合と同様の扱いとなる。
【００６２】
クロック管理部１０３は、スリープ信号７０１ｓがアサート状態の場合と、デアサート状態の場合において、それぞれ、決められた周波数のクロックをＣＰＵ７０１のＣＰＵクロック周波数として設定する。
【００６３】
そして、クロック管理部１０３は、ＣＰＵ１０１、ＣＰＵ１０２により要求されたＣＰＵクロック及びＣＰＵバスクロックの周波数と、ＣＰＵ７０１からのスリープ信号７０１ｓにより、各ＣＰＵへのＣＰＵクロック周波数と、ＣＰＵバスクロックを設定する。
【００６４】
本実施形態では、クロック管理部１０３は、第３のＣＰＵ７０１からのスリープ信号７０１ｓのアサート状態とデアサート状態に応じたクロック周波数が設定されるレジスタを備えている。即ち、クロック管理部１０３は、スリープ信号７０１ｓがアサート状態とデアサート状態のときに、それぞれＣＰＵ７０１のＣＰＵクロック周波数として要求される値を第３のＣＰＵアクティブ／スリープクロックレジスタに設定する。また、クロック管理部１０３は、スリープ信号７０１ｓがアサート状態とデアサート状態のときに、それぞれＣＰＵ７０１のＣＰＵバスクロック周波数として要求される値を第３のＣＰＵバスアクティブ／スリープクロックレジスタに設定する。
【００６５】
例えば、スリープ信号７０１ｓがアサート状態、即ちＣＰＵ７０１がスリープ状態であることを示す場合、第３のＣＰＵアクティブ／スリープクロックレジスタと、第３のＣＰＵバスアクティブ／スリープクロックレジスタにはそれぞれ５０ＭＨｚが設定される。スリープ信号７０１ｓがデアサート状態、即ちＣＰＵ７０１がアクティブ状態である場合、第３のＣＰＵアクティブ／スリープクロックレジスタには２００ＭＨｚが設定され、第３のＣＰＵバスアクティブ／スリープクロックレジスタには１００ＭＨｚが設定される。
【００６６】
クロック管理部１０３は、ＣＰＵ７０１がアクティブ状態、スリープ状態である場合に設定すべきクロック周波数を予め記憶している。そのため、ＣＰＵ７０１は、クロック管理部１０３に対してクロック周波数の値を出力せずに、スリープ信号７０１ｓの状態を変えることにより、要求するクロック周波数を設定することができる。
【００６７】
本実施形において、各レジスタに記憶された値と、その時に出力されるＣＰＵクロック、ＣＰＵバスクロックの周波数を図８に示す。このように、各クロックの周波数を決めることができるため、クロック管理部１０３を比較的単純な回路構成とすることができる。
【００６８】
なお、第２の実施形態では、第３のＣＰＵ７０１をＣＰＵバス１１４に接続する構成としたが、ＣＰＵバス１１３に第３のＣＰＵ７０１を接続する構成としてもよい。
【００６９】
なお、第１、第２の実施形態では、本発明をカメラに適用した場合について説明したが、これ以外にも、複数のＣＰＵを備える他の装置に対しても同様に本発明を適用可能である。
【図１】
2014126915.tif 000003
【図２】
2014126915.tif 000004
【図３】
2014126915.tif 000005
【図４】
2014126915.tif 000006
【図５】
2014126915.tif 000007
【図６】
2014126915.tif 000008
【図７】
2014126915.tif 000009
【図８】
2014126915.tif 000010
【図９】
2014126915.tif 000011