(57)【要約】【課題】ソフトウエアの介在なしにクロックの供給を停止する対象を抽出し、その供給の停止を行う。【解決手段】複数のスレイブデバイスの各々に対してクロックの供給／停止を制御するクロック供給部１３と、マスタデバイスによって行われるデータの送受信処理の開始と終了をシステムバス１の信号をモニタリングすることで検知するバスモニタ１０と、バスモニタ１０の検知によってデータの送受信対象として選択されていないと判定されたスレイブデバイスのうちクロックの供給を停止できるスレイブデバイスを特定するコントロールテーブル１２とを備え、クロック供給部１３は、コントロールテーブル１２によって特定されたスレイブデバイスのクロックを停止する。【選択図】図１
2009151599.tif 000002
【特許請求の範囲】
【請求項１】
データの送受信を行うバスに対して、送受信処理を開始する能力を有する１つ以上のマスタデバイスと、送受信処理を開始する機能を有さない複数のスレイブデバイスが接続されているマルチデバイスシステムにおいて、
前記複数のスレイブデバイスの各々に対してクロックもしくは電源の供給／停止を制御する第１の手段と、
前記マスタデバイスによって行われるデータの送受信処理の開始と終了を前記バスに関連する信号をモニタリングすることで検知する第２の手段と、
該第２の手段の検知によってデータの送受信対象として選択されていないと判定されたスレイブデバイスのうちクロックもしくは電源の供給を停止できるスレイブデバイスを特定する第３の手段とを備え、
前記第１の手段は、前記第３の手段によって特定されたスレイブデバイスのクロックもしくは電源を停止することを特徴とするマルチデバイスシステム。
【請求項２】
請求項１に記載のマルチデバイスシステムにおいて、
前記送受信処理の実行中にクロックもしくは電源の供給の対象となるスレイブデバイスを事前に指定しもしくは動作中に変更する第４の手段を備えることを特徴とするマルチデバイスシステム。
【請求項３】
請求項２に記載のマルチデバイスシステムにおいて、
前記第４の手段は、前記第２の手段の検知によって前記データの送受信対象として選択されていないと判定されたスレイブデバイスに対して、前記判定からクロックもしくは電源供給の停止までの時間を遅らせる遅延時間を指定することを特徴とするマルチデバイスシステム。
【請求項４】
請求項３に記載のマルチデバイスシステムにおいて、
前記第４の手段は、前記遅延時間が事前に指定されもしくは動作中に変更されることを特徴とするマルチデバイスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定の処理を行うことが可能な複数のデバイスを組み合わせることで、特定アプリケーションを実現するマルチデバイスシステムに係り、特に特定のデバイス間でデータの送受信を行っている際、他のデバイスのクロックもしくは電源の供給を停止することで、システム全体の消費電力を抑えることを可能としたマルチデバイスシステムに関するものである。
【背景技術】
【０００２】
近年、Ｓｏｃ等のＣＰＵを核として動作するシステムは、携帯電話やその他のモバイル機器に搭載され、その中核として機能している。これらのモバイル機器は基本的に電池を電源として動作するため、消費電力の抑制は重要な開発課題である。これらの課題を解決する手法としては、その時々の動作に必要のない部品や回路に対してクロックや電源の供給を停止することが有効であることが知られている（例えば、非特許文献１参照）。また、近年では、供給の停止だけでなく、クロック周波数を必要最小限まで低下させるといった手法も用いられ始めている。
【非特許文献１】「動的にＣＰＵクロックや電圧を変更するcpufreqの概要とcpufreqdデーモンについて−試験運用中なLinax備忘録」、[平成１９年１２月６日検索]、インターネット＜ＵＲＬ：http://d.hatena.ne.jp/kakurasan/20070720/p1＞
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、このような手法は、上記の非特許文献１にあるように、主としてＣＰＵ上で動作するソフトウエア処理によって賄われており、このようなソフトウエアを開発するための負荷が、製品のコスト及び開発期間の増大を招く一因となつている。
【０００４】
本発明はこのような問題に対処するべくなされたもので、その目的は、基本的にソフトウエアの介在なしにクロックおよび電源の供給を停止する対象を抽出し、かつ自動的に供給の停止を行うことで、ソフトウエアの開発負荷と消費電力の双方を同時に軽減することを可能としたマルチデバイスシステムを提供することである。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、請求項１にかかる発明は、データの送受信を行うバスに対して、送受信処理を開始する能力を有する１つ以上のマスタデバイスと、送受信処理を開始する機能を有さない複数のスレイブデバイスが接続されているマルチデバイスシステムにおいて、前記複数のスレイブデバイスの各々に対してクロックもしくは電源の供給／停止を制御する第１の手段と、前記マスタデバイスによって行われるデータの送受信処理の開始と終了を前記バスに関連する信号をモニタリングすることで検知する第２の手段と、該第２の手段の検知によってデータの送受信対象として選択されていないと判定されたスレイブデバイスのうちクロックもしくは電源の供給を停止できるスレイブデバイスを特定する第３の手段とを備え、前記第１の手段は、前記第３の手段によって特定されたスレイブデバイスのクロックもしくは電源を停止することを特徴とする。
請求項２にかかる発明は、請求項１に記載のマルチデバイスシステムにおいて、前記送受信処理の実行中にクロックもしくは電源の供給の対象となるスレイブデバイスを事前に指定しもしくは動作中に変更する第４の手段を備えることを特徴とする。
請求項３にかかる発明は、請求項２に記載のマルチデバイスシステムにおいて、前記第４の手段は、前記第２の手段の検知によって前記データの送受信対象として選択されていないと判定されたスレイブデバイスに対して、前記判定からクロックもしくは電源供給の停止までの時間を遅らせる遅延時間を指定することを特徴とする。
請求項４にかかる発明は、請求項３に記載のマルチデバイスシステムにおいて、前記第４の手段は、前記遅延時間が事前に指定されもしくは動作中に変更されることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、データの送受信対象として選択されていないと判定されたスレイブデバイスのうちクロックもしくは電源の供給を停止できるスレイブデバイスのクロックもしくは電源を停止するので、ソフトウエアに専用の処理を追加することなく、必要ではないスレイブデバイスのクロックもしくは電源の供給を自動的に停止することが可能となり、結果としてシステム全体の消費電力を低く抑えることができるという優れた効果を得ることができる。
【発明を実施するための最良の形態】
【０００７】
以下、図面を参照して本発明の１つの実施例を説明する。図１は、本発明の実施例のマルチデバイスシステムの全体構成を示すブロック図である。図１において、ＣＰＵ２、ＣＰＵ２を介在せずにデバイス間のデータ転送を行うＤＭＡ（Direct Memory Access)３、メモリデバイス５の制御を担当するメモリコントローラ４、Ｉ２Ｃ（Inter-Integrated Circuit)デバイスの制御を行うＩ２Ｃ６、汎用的な信号の制御を行うＧＰＩＯ（General Purpose I/O）７、及びシリアル転送を行うＵＡＲＴ（Universal Asynchronous Receiver Transmitter)８が、それぞれ、システムバス１に接続されている。さらにシステムバス１の状態を監視し、それに応じてクロック供給の制御を行うクロック制御システム９もシステムバス１に接続されている。
【０００８】
なお、本実施例では、ＣＰＵ２及びＤＭＡ３のみがデータ送受信処理を開始できるマスタデバイスであり、他はスレイブデバイスとして動作する。但し、ＤＭＡ３はＣＰＵ２より指令を受けて動作するため、マスタデバイスであると同時にスレイブデバイスでもある。またＣＰＵ２はスリープ状態になることができ、その際、アサートされる信号が直接クロック制御システム９へ接続され、クロック制御システム９はＣＰＵ２がスリープ状態であるか否かを判定できるようになっている。
【０００９】
クロック制御システム９はさらに、システムバス１をモニタし、デバイス間の送受信処理の開始と終了をモニタリングすることで検知するバスモニタ１０、ＣＰＵ２からの設定を格納するレジスタ１１、各デバイスの状態を保存しそれに応じてクロック供給の有無を判定するコントロールテーブル１２、及び実際にクロックの供給／停止の処理を行うクロック供給部１３によって構成されている。クロック供給部１３からは、各スレイブデバイスに対してクロックが出力される。
【００１０】
なお、クロック供給部１３は請求項の第１の手段を実現した一例であり、バスモニタ１０は請求項の第２の手段を実現した一例であり、コントロールテーブル１２は請求項の第３の手段を実現した一例であり、レジスタ１１は請求項の第４の手段を実現した一例である。
【００１１】
レジスタ１１の内容を図２に示す。ここには、各スレイブデバイスについて、以下の情報が格納できるよう設計されている。この格納は、事前に行われるが、動作中に変更することもできる。
(1)クロック供給／停止処理の対象とするか否か（クロック停止制御）。
(2)ＣＰＵと通信を行う場合があるか否か（ＣＰＵと接続有）。
(3)ＤＭＡと通信を行う場合があるか否か（ＤＭＡと接続有）。
(4)クロック供給停止が判定されたデバイスに対して、実際にクロック供給が停止されるまでの時間（遅延時間）。
【００１２】
次に、図３にコントロールテーブル１２の内容を示す。ここには、各スレイブデバイスについて以下の内容が格納される。
(11)ＣＰＵにとって、現在アクティブである必要があるか否か（ＣＰＵと接続）。
(12)ＤＭＡにとって、現在アクティブである必要があるか否か（ＤＭＡと接続）。
(13)レジスタ１１の内容から判断し、クロック供給するべきか否か（クロック供給）。
【００１３】
クロック制御システム９は、上記のレジスタ１１及びコントロールテーブル１２の内容を参照し、図４で示したフローチャートの処理により、各スレイブデバイスに対するクロックの供給／停止を行う。すなわち、クロック制御の対象であり、且つＣＰＵ２と通信を行い、且つＣＰＵ２にとってアクティブであるデバイス、又はクロック制御の対象であり、且つＤＭＡ３と通信を行い、且つＭＤＡ３にとってアクティブであるデバイスに対してのみクロックを供給し、それ以外のデバイスにはクロックを供給しない。
【００１４】
以下、実際の動作を例に本マルチデバイスシステムの動作を説明する。
＜システム起動時の処理＞
ＣＰＵ２はレジスタ１１の内容を設定する。ＣＰＵ２はプログラムによりシステム全体の構造を理解しているため、これが可能である。図５にシステム起動時のレジスタ１１の設定内容を示す。
【００１５】
「クロック停止制御」は、ＵＡＲＴ８については、何時外部よりデータの受信があるか判断することは不可能であるので、常時クロックを供給する必要がある。よって、ＵＡＲＴ８についてはクロック停止制御対象外の「ディスイネーブル」を設定し、それ以外についてはクロック停止制御の対象とすべく「イネーブル」を設定する。
【００１６】
「ＣＰＵと接続有」は、ＣＰＵ２からの送受信要求を受ける可能性のある全デバイスについて「Ｙｅｓ」を設定する。ここでは、全てが「Ｙｅｓ」となる。
【００１７】
「ＤＭＡと接続有」では、ＤＭＡ３からの送受信要求を受ける可能性のあるメモリコントローラ４、及びＵＡＲＴ８について「Ｙｅｓ」の設定を行う。なお、自身も、その際動作する必要があるため、ＤＭＡ３についても「Ｙｅｓ」と設定する。
【００１８】
「遅延時間」は、ＣＰＵ２とＤＭＡ３との送受信動作が終了し、クロック停止状態になると判断された場合でも、メモリデバイス５に対してバッファに溜まったデータの送信を完了するまで、若干の時間が必要である。そのための時間として「８０ｈ」（＝１２８クロック）を設定する。Ｉ２Ｃ６についても同様に「２０ｈ」（＝３２クロック）を設定する。また、ＵＡＲＴ８についても同様であるが、ＵＡＲＴ８はクロック停止の対象となっていないため、この設定は必要ない。よって、デフォルト値である「００ｈ」（＝遅延無し）のままとしておく。その他のデバイスについては、「００ｈ」で問題ない。
【００１９】
次に、コントロールテーブル１２の内容は、図６の通りとなっている。まず、「ＣＰＵと接続」は、ＣＰＵ２がまだどのスレイブデバイスとも送受信処理を行っていないため、全デバイスはＣＰＵ２からの接続要求を受け取るよう備えなくてはならない。よって全て「Ｙｅｓ」となる。
【００２０】
「ＤＭＡと接続」は、ＣＰＵ２がまだＤＭＡ３に対して送受信処理の開始を指示していない。よって全デバイスはＤＭＡ３からの接続要求を受け取る準備をする必要はない。よって全て「Ｎｏ」となる。
【００２１】
「クロック供給」は、図５及び図６の内容を元に、図４のフローチャートの処理を行い、スレイブデバイスのクロック供給を全て「Ｏｎ」と判断する。
【００２２】
＜ＣＰＵのプログラム処理＞
システムが起動すると、ＣＰＵ２はまずプログラムのみの処理を行う。プログラムはメモリデバイス５に格納されており、ＣＰＵ２はメモリコントローラ４に対してのみ送受信処理を行うこととなる。
【００２３】
ＣＰＵ２はメモリコントローラ４に対して送受信処理を開始する。それをクロック制御システム９がバスモニタ１０を経由して検知すると、クロック制御システム９はコントロールテーブル１２の内容を図７のように変更する。つまりＣＰＵ２はその際の送受信処理が終了するまで、他のスレイブデバイスについてアクセス要求をすることはなくなるため、「ＣＰＵと接続」の内容は、メモリコントローラ４に対してのみ「Ｙｅｓ」となり、他については「Ｎｏ」となる。これにより、「クロック供給」はメモリコントローラ４及びＵＡＲＴ８に対してのみ「Ｏｎ」となり、他のスレイブデバイスに対するクロック供給は、「遅延時間」に設定された時間分だけ経過した後に停止される。
【００２４】
その後、送受信処理が完了したことをクロック制御システム９がバスモニタ１０を経由して検知すると、再びコントロールテーブル１２の内容をシステム起動時の状態（図６）に戻し、この結果、全デバイスに対して再度クロックが供給されることとなる。
【００２５】
＜ＤＭＡによる転送＞
次に、ＤＭＡ３によりデータの送受信がなされる場合を取り上げる。この場合、まずＣＰＵ２よりＤＭＡ３に対してコマンドを発行するためのデータ送受信が行われ、その後ＤＭＡ３はデータの送受信を行うこととなる。ここでは例として、ＤＭＡ３により、メモリコントローラ４からＵＡＲＴ８へのデータ転送が行われる場合を示す。
【００２６】
クロック制御システム９は、ＣＰＵ２が特定のアドレスに配置されているＤＭＡ３のコマンドレジスタへの書き込みアクセスを行うと、ＤＭＡ３がマスタデバイスとしての動作を開始すると認識するよう作成されている。このため、クロック制御システム９は、バスモニタ１０を経由して、このＤＭＡ３のコマンドレジスタヘの書き込みアクセスを検知すると、まずコントロールテーブル１２中の「ＤＭＡと接続」の内容を全て「Ｙｅｓ」に設定する。
【００２７】
その後、ＤＭＡ３がメモリコントローラ４からＵＡＲＴ８への転送を開始し、同時にＣＰＵ２がＧＰＩＯ７にアクセスすると、コントロールテーブル１２の内容は図８のようになる。これにより、「クロック供給」はＩ２Ｃ６に対して「Ｏｆｆ」となり、Ｉ２Ｃ６のクロック供給は序止される。
【００２８】
その後、ＤＭＡ３の送受信処理、及びＣＰＵのＧＰＩＯ７へのアクセスが完了したことをクロック制御システム９がバスモニタ１０を経由して検知すると、再びコントロールテーブル１２の内容をシステム起動時の状態（図６）に戻し、この結果、全デバイスに対して再度クロックが供給されることとなる。
【００２９】
＜ＣＰＵのスリープ＞
通常ＣＰＵ２は消費電力を抑制するため、自らスリープ状態となることのできる機能を有している。さらにスリープ状態となったことを外部に知らせるために、その際にアサートされる信号を用意している。ＣＰＵ２がスリープ状態となると、クロック制御システム９はそれを検知し、ＣＰＵ２から接続要求が来る可能性はないと判断し、コントロールテーブル１２の内容を図９のように設定する。これにより常時クロックを供給すると設定されているＵＡＲＴ８以外は、クロックの供給が停止され、システム全体としてもスリープ状態となる。
【００３０】
その後、ＣＰＵ２のスリープ状態がなんらかの理由で解除されると、クロック制御システム９はそれを検知し、再びコントロールテーブル１２の内容をシステム起動時の状態（図６）に戻す。この結果、全デバイスに対して再度クロックが供給されることとなる。
【００３１】
＜その他の実施例＞
なお、以上では、スレイブデバイスに対して、クロックの供給／停止を制御する内容で説明したが、電源の供給／停止の制御の場合であっても、クロック供給部１３を電源供給部に置き換えることで、全く同様に実施することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の１つの実施例のマルチデバイスシステムの構成を示すブロック図である。
【図２】レジスタ１１の内容を示す説明図である。
【図３】コントロールテーブル１２の内容を示す説明図である。
【図４】特定のデバイスへのクロックの供給／停止のフローチャートである。
【図５】システム起動時のレジスタ１１の内容を示す説明図である。
【図６】システム起動時のコントロールテーブル１２の内容を示す説明図である。
【図７】ＣＰＵ２のプログラム処理時のコントロールテーブル１２の内容を示す説明図である。
【図８】ＤＭＡ転送時のコントロールテーブル１２の内容を示す説明図である。
【図９】ＣＰＵスリープ時のコントロールテーブル１２の内容を示す説明図である。
【符号の説明】
【００３３】
１：システムバス
２：ＣＰＵ
３：ＤＭＡ
４：メモリコントローラ
５：メモリデバイス
６：Ｉ２Ｃ
７：ＧＰＩＯ
８：ＵＡＲＴ
９：クロック制御システム
１０：バスモニタ
１１：レジスタ
１２：コントロールテーブル
１３：クロック供給部
【図１】
2009151599.tif 000003
【図２】
2009151599.tif 000004
【図３】
2009151599.tif 000005
【図４】
2009151599.tif 000006
【図５】
2009151599.tif 000007
【図６】
2009151599.tif 000008
【図７】
2009151599.tif 000009
【図８】
2009151599.tif 000010
【図９】
2009151599.tif 000011