(57)【特許請求の範囲】
【請求項１】
中央処理装置に供給されるクロック状態に応じて，複数の通常動作モードと，特殊モードとを有するシステムＬＳＩであって：
前記通常動作モード間のクロック状態の遷移を行うためのクロック制御ライブラリが格納された第１の記憶手段と；
レジスタを有し，該レジスタ値の変更により，前記通常動作モードと前記特殊モードとの間のクロック状態の遷移を行うとともに，前記クロック制御ライブラリに応じて，前記通常動作モード間のクロック状態の遷移を行うシステム制御回路と；
複数の基準クロックが入力されて，前記システム制御回路の制御に応じて，前記中央処理装置に供給されるクロックを生成するクロック生成回路と；
アプリケーションプログラムが格納された第２の記憶手段と；
を備え，
前記特殊モードは，前記中央処理装置の主要な構成要素に対しクロックの供給を停止する第１の特殊モードと，中央処理装置全体のクロックを停止する第２の特殊モードと，中央処理装置全体の電源を停止する第３の特殊モードと，から成り，
前記アプリケーションプログラムが，その選択により前記クロック制御ライブラリの呼び出し，および，前記レジスタ値の変更が制御されることを特徴とする，システムＬＳＩ。
【請求項２】
前記クロック制御ライブラリは，
前記システム制御回路および前記クロック生成回路を制御して前記中央処理装置に供給されるクロック状態を遷移させるための複数のライブラリと，
前記アプリケーションプログラムにより呼び出されて，前記中央処理装置に供給されるクロック状態に応じて，前記ライブラリのいずれかを選択するメインライブラリと，
から成ることを特徴とする，請求項１に記載のシステムＬＳＩ。
【請求項３】
前記メインライブラリは，前記アプリケーションプログラムと同一のプログラム言語で記述されていることを特徴とする，請求項２に記載のシステムＬＳＩ。
【請求項４】
前記各ライブラリは，前記クロック生成回路および前記システム制御回路を直接制御可能なプログラム言語で記述されていることを特徴とする，請求項２または３に記載のシステムＬＳＩ。
【請求項５】
前記システム制御回路は，
前記クロック生成回路におけるクロックの分周比を設定するための分周比設定レジスタと，
前記クロック生成回路からクロック信号が供給されて，個別のクロック信号を停止または供給するための設定を行うためのクロック停止用レジスタと，
前記第３の特殊モードから解除した直後の前記中央処理装置の状態を判断するステータスレジスタと，
を備えたことを特徴とする，請求項１〜４のいずれかに記載のシステムＬＳＩ。
【請求項６】
前記クロック生成回路は，
前記複数の基準クロックが入力されて，必要に応じて該基準クロックを逓倍したクロックを生成するＰＬＬと，
前記基準クロックまたは前記逓倍された基準クロックを分周または選択する分周／選択部と，
を備えたことを特徴とする，請求項１〜５のいずれかに記載のシステムＬＳＩ。
【請求項７】
一の前記基準クロックは，原振として３２．７６８ｋＨｚを用いることを特徴とする，請求項６に記載のシステムＬＳＩ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，コアＣＰＵを有するシステムＬＳＩにかかり，特に，アプリケーションプログラムの側からのクロックの動的制御に特徴を有するシステムＬＳＩに関する。
【０００２】
【従来の技術】
システムＬＳＩで構成されるマイクロコントローラの応用分野のうち，例えば携帯電話のように電池を使う携帯機器では，消費電力を極力抑えて利用者の利便を図りたいものが多い。その場合にシステムのクロックを使い分けてシステム全体の消費電力を低減させる技術がある。すなわち，高速の処理が要求される場合にはその高速のクロックを供給し，待機時には低速のクロックにして，適宜使い分けることによりシステム全体の消費電力を低減させることが可能である。近年，システムＬＳＩで構成されるマイクロコントローラには，あらゆる応用分野にＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  ＩｎｔｅｇｒａｔｅｄＣｉｒｃｕｌｔ）が提供されている。ＡＳＩＣが組み込まれたシステムでは，電池の寿命を少しでも延ばすために，消費電力を下げることを仕様として要求されており，そのコアＣＰＵに上記低消費電力技術が組み込まれていることが少なくない。
【０００３】
従来のコアＣＰＵの一例として，米国ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ社のＳＴ７（以下，ＳＴ７コアという。）について説明する。図９は，ＳＴ７コアのクロック制御回路４０の説明図である。図１０は，ＳＴ７コアのクロック動作モードの説明図である。
【０００４】
図９に示したように，発振端子ＯＳＣ１，ＯＳＣ２を持つ発振部４１は，発振端子ＯＳＣ１，ＯＳＣ２に水晶発振子（クォーツ）等を取り付けることによりクロックを生成する。クロック補正部４２はクロックフィルタ４３とクロック補完部４４から構成される。クロックフィルタ４３はスパイクノイズ等の混入したクロックを取り除き，波形整形する働きをする。クロック補完部４４は，上記波形整形の結果，クロックがまばらになった場合にクロックを補完し，クロックの周波数帯域を狭める働きをする。
【０００５】
メインクロック制御回路４５は，設定レジスタ４６とクロック分周部４７から構成される。設定レジスタ４６は，クロックの分周比を設定したり，入出力端子ＣＬＫＯＵＴの切替の設定を行う。クロック分周部４７は，クロックｆｏｓｃを分周比１／４，１／８，１／１６および１／３２に分周する。分周されたクロックｆｃｐｕはＳＴ７コアと周辺装置４９に供給され，入出力切替部４８を通じて入出力端子ＣＬＫＯＵＴから外部に出力される。
【０００６】
ＳＴ７コアは，上記クロック制御回路４０の制御により，図１０に示した４つのクロック動作モードを有する。高速動作モードでは発振周波数の１／２の周波数で動作し，低速動作モードでは発振周波数の１／４，１／８，１／１６および１／３２で動作する。待機モードではＣＰＵのクロックは停止するが，周辺装置は動作している。停止モードでは発振自体が停止し，ＳＴ７コアの消費電力は最小になる。このような各モードをＣＰＵの処理に応じて使い分けると，総合的に相当の消費電力を抑えることができる。
【０００７】
一方，マイクロコントローラがシステムＬＳＩで構成される場合に，コアＣＰＵに低消費電力技術が組み込まれていない場合もある。このようなＣＰＵコアの一例として，例えば，英国ＡＲＭ社のＡＲＭ９２０Ｔ（以下，ＡＲＭコアという。）がある。ＡＲＭコアの場合は，パワーマネジメント部がシステムＬＳＩの側に作られることを前提としている。
【０００８】
ＡＲＭコアがこのような構成を採用する理由としては，第一に，クロック制御機構をコアＣＰＵ側に内蔵させてしまうとシステムＬＳＩを設計する側に制限を与えてしまい，結果的にコアＣＰＵの汎用性が失われてしまうからである。コアＣＰＵを使うシステムＬＳＩ側では，クロックが低速になったり，停止した場合に，その状態を検出して内部メモリのタイミングや内部タイマの調整をしなければならなくなる。
【０００９】
第二に，ＡＲＭコアにはＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）インタフェースのテスト端子が設けられていて，インサーキット・エミュレータ（ＩＣＥ）を通じてコアＣＰＵの内部状態を外部に伝え，デバッガを動作させてアプリケーションプログラム開発の便宜に提供されているので，コアＣＰＵ側のクロックの変更はそのようなテスト端子の活用をも制限することになるからである。それゆえ，上記制限を受けずにパワーマネジメントを効率的に行うには，コアＣＰＵ側にではなくシステムＬＳＩ側にパワーマネジメント部を設け，総合的なパワーマネジメントを達成するのが好ましい。
【００１０】
近年システムＬＳＩがさらに複雑化し，コアＣＰＵだけでは様々な要求を持つＡＳＩＣに直接的に応え，これに迅速に対応するのが難しくなってきている。そこで，同じコアＣＰＵを搭載する汎用性のあるマイクロコントローラを提供して，上記要求に対応することが考えられる。すなわち，ＣＰＵ周辺装置，メモリアーキテクチャ等，システムＬＳＩで通常用いる共通な要素であって，リアルタイムＯＳ等を実行可能な基本的な機能をまとめて，汎用性のあるマイクロコントローラとして提供しようとする考え方である。
【００１１】
このような汎用性のあるマイクロコントローラで総合的なパワーマネージメントを達成させるには，コアＣＰＵばかりでなく，アプリケーション固有の機能をも考慮した汎用性のあるパワーマネジメントを行う必要がある。
【００１２】
【発明が解決しようとする課題】
ところで，従来のマイクロコントローラのパワーマネジメントは，上記ＳＴ７コアの場合と同様に，クロックの変化は単純なものが多かった。ＳＴ７コアでは，図１０に示したように，高速動作モード，低速動作モード，待機モード，および，停止モードの各モードを単純に変化させているだけであった。しかし，コアＣＰＵでなくシステムＬＳＩ側にパワーマネジメント部を持つ場合には，コアＣＰＵのクロックとシステムＬＳＩ側のクロックとの双方を制御せねばならず，このような単純なモデルではきめ細かな制御を達成することはできない。
【００１３】
また，アプリケーションプログラムの側からクロックの動的制御を行う試みもなされている。このような場合，例えばＳＴ７コアでは，クロック制御に関連する回路を直接制御可能なアセンブラ言語で制御している。しかしながら，制御をアセンブラ言語で行うと，アプリケーションプログラムの開発の制約が多い。本来高級プログラム言語であって今日のソフト開発に通常用いられるプログラム言語，例えばＣ言語により，柔軟なインタフェースを持たせることが望ましい。しかしながら，このようなプログラム言語による本格的なパワーマネジメントを行うサポートは存在しなかった。
【００１４】
本発明は，従来のシステムＬＳＩが有する上記問題点に鑑みてなされたものであり，本発明の第１の目的は，高速動作モードから低速動作モードに至る多数の周波数においてクロックを動的，かつ，迅速に制御することにより，システムＬＳＩの消費電力を最適に低減させることの可能な，新規かつ改良されたシステムＬＳＩを提供することである。
【００１５】
さらに，本発明の第２の目的は，アプリケーションプログラムの側から，ソフト開発に通常用いられるプログラム言語による本格的なパワーマネジメントを行うことにより，ユーザが自らのシステムに最適な低消費電力システムを選択できるようにすることの可能な，新規かつ改良されたシステムＬＳＩを提供することである。
【００１６】
【課題を解決するための手段】
上記課題を解決するため，本発明の第１の観点によれば，中央処理装置に供給されるクロック状態に応じて，複数の通常動作モードと，特殊モードとを有するシステムＬＳＩが提供される。本発明のシステムＬＳＩは，前記通常動作モード間のクロック状態の遷移を行うためのクロック制御ライブラリが格納された第１の記憶手段（５５１）と；レジスタを有し，該レジスタ値の変更により，前記通常動作モードと前記特殊モードとの間のクロック状態の遷移を行うとともに，前記クロック制御ライブラリに応じて，前記通常動作モード間のクロック状態の遷移を行うシステム制御回路（５３４）と；複数の基準クロックが入力されて，前記システム制御回路の制御に応じて，前記中央処理装置に供給されるクロックを生成するクロック生成回路（５５８）と；アプリケーションプログラム（３１）が格納された第２の記憶手段（５５１）とを備え，前記アプリケーションプログラムにより，前記クロック制御ライブラリの呼び出し，および，前記レジスタ値の変更が制御されることを特徴とする。
【００１７】
なお，クロック制御ライブラリが格納された第１の記憶手段とアプリケーションプログラムが格納された第２の記憶手段は，別個独立した２つの記憶手段として構成してもよく，１つの記憶手段の異なる記憶領域を以て，前記第１の記憶手段および前記第２の記憶手段と称してもよい。
【００１８】
従来は１系統の基準クロックを用い，基準クロックを分周することにより，高速動作モードと低速動作モードのみを実現していた。この点本発明では，複数系統の基準クロックを用いている。そして，前記クロック生成回路（５５８）の構成として，例えば，前記複数の基準クロック（ＭＣＬＫ０，ＭＣＬＫ１，ＭＣＬＫ２）が入力されて，必要に応じて該基準クロックを逓倍したクロックを生成するＰＬＬ（５７３）と，前記基準クロックまたは前記逓倍された基準クロックを分周または選択する分周／選択部（５７４）とを備える構成とすることにより，基準クロックに加えて，基準クロックを逓倍したクロックをもシステム内で用いることができる。このようにして，多様な通常動作モード（最高速動作モード，高速動作モード，低速動作モード，極低速動作モードなど）を有するシステムを構築することができる。
【００１９】
また，現在のクロック状態と遷移させた後のクロック状態との関係を，クロック制御ライブラリという形で関数化することにより，通常動作モードにおける複数のクロック状態を，あたかもギアチェンジさせるように動的かつ迅速に制御することができる（かかる概念を本明細書中「クロックギア」と称する。）。このようにして，クロック状態のより細かな制御が可能となった。
【００２０】
さらに，本発明では，クロック制御回路内にレジスタを有し，通常動作モードから特殊モードにクロック状態を遷移させる際の制御を，このレジスタ値の変更により行っている。この際，特殊モードに遷移した後もレジスタの設定は何ら変更されないので，特殊モードから通常動作モードへと再び遷移する際には，外部割込などにより特殊モードを解除するだけでよく，制御が容易に行える。
【００２１】
前記クロック制御ライブラリは，前記システム制御回路および前記クロック生成回路を制御して前記中央処理装置に供給されるクロック状態を遷移させるための複数のライブラリと，前記アプリケーションプログラムにより呼び出されて，前記中央処理装置に供給されるクロック状態に応じて，前記ライブラリのいずれかを選択するメインライブラリとから成ることが好ましい。
【００２２】
クロック制御ライブラリが，メインライブラリと複数のライブラリとから成り，メインライブラリにより選択されたライブラリに対応する関数（ｃｌｋｇｅａｒ）が実行されることによって，クロック制御に関連する回路である前記クロック生成回路および前記システム制御回路を動的に制御することが可能である。
【００２３】
前記メインライブラリは，前記アプリケーションプログラムと同一のプログラム言語で記述されていることが好ましい。
【００２４】
メインライブラリがアプリケーションプログラムと同一のプログラム言語で記述され，アプリケーションからメインライブラリの呼び出しも同一のプログラム言語で行われることにより，ユーザが取り扱いやすいような柔軟なインタフェースを実現し，ユーザが自らのシステムに最適なパワーマネージメントシステムを選択することが可能である。本発明では，このようなプログラム言語の一例として，本来高級プログラム言語であって今日のソフト開発に広く用いられている，Ｃ言語を想定している。ただし，将来におけるプログラム言語の使用状況の変化に応じて，メインライブラリの記述言語を適宜変更できることは言うまでもない。
【００２５】
また，前記各ライブラリは，前記クロック生成回路および前記システム制御回路を直接制御可能なプログラム言語で記述されていることが好ましい。
【００２６】
各ライブラリを，クロック生成回路およびシステム制御回路を直接制御可能なプログラム言語で記述することにより，クロックの制御に関連するハードウェアであるクロック生成回路およびシステム制御回路を，ライブラリにより直接制御することが可能である。本発明では，このようなプログラム言語の一例として，アセンブリ言語を想定している。
【００２７】
前記特殊モードは，前記中央処理装置の主要な構成要素に対しクロックの供給を停止する第１の特殊モードと，中央処理装置全体のクロックを停止する第２の特殊モードと，中央処理装置全体の電源を停止する第３の特殊モードとから成ることが好ましい。
【００２８】
中央処理装置の主要な構成要素に対しクロックの供給を停止する第１の特殊モード（ＨＡＬＴモード）や，中央処理装置全体のクロックを停止する第２の特殊モード（ＳＴＯＰモード）の他に，中央処理装置全体の電源を停止する第３の特殊モード（ＳＬＥＥＰモード）有し，消費電力の削減を自在に実現できる構成としている。
【００２９】
前記システム制御回路は，前記クロック生成回路におけるクロックの分周比を設定するための分周比設定レジスタ（５６３）と，前記クロック生成回路からクロック信号が供給されて，個別のクロック信号を停止または供給するための設定を行うためのクロック停止用レジスタ（５６４，５６５）と，前記第３の特殊モードから解除した直後の前記中央処理装置の状態を判断するステータスレジスタ（５６７）とを備えることが好ましい。なお，これら分周比設定レジスタ，クロック停止用レジスタあるいはステータスレジスタは，１のレジスタであってもよく，２以上のレジスタを複合的に用いてもよい。また，レジスタのビット長や各ビットの意味などは，システムの仕様に応じて適宜設計変更することができる。
【００３０】
システム制御回路のレジスタとして，クロック停止用レジスタを備えることにより，中央処理装置の主要な構成要素に対しクロックの供給を停止する第１の特殊モード（ＨＡＬＴモード）や，中央処理装置全体のクロックを停止する第２の特殊モード（ＳＴＯＰモード）へのクロック状態の遷移を制御可能である。また，ステータスレジスタを備えることにより，中央処理装置全体の電源を停止する第３の特殊モード（ＳＬＥＥＰモード）へのクロック状態の遷移を制御可能である。
【００３１】
一の前記基準クロックは，原振として３２．７６８ｋＨｚを用いることが好ましい。
【００３２】
原振として３２．７６８ＫＨｚを得るには，腕時計などに用いられる水晶振動子（クォーツ）を用いることができる。数十ＭＨｚ〜数百ＭＨｚのクロックで動作する通常動作モードに比べて，極めて低い周波数のクロックを用いることにより，実質的な待機モードを実現することができる。
【００３３】
【発明の実施の形態】
以下に添付図面を参照しながら，本発明にかかるシステムＬＳＩの好適な実施の形態について詳細に説明する。図１はＣＰＵの構成を示す説明図である。図２は，図１のＣＰＵを用いたシステムＬＳＩの構成を示す説明図である。なお，本明細書および図面において，実質的に同一の機能構成を有する構成要素については，同一の符号を付することにより重複説明を省略する。
【００３４】
（ＣＰＵ５１０）
ＣＰＵ５１０は，図１に示したように，その内部にプロセッサ５１１を有しており，専用高速バス５２１と専用ペリフェラルバス５３１がそれぞれＣＰＵブリッジ５２０とペリフェラルブリッジ５３０により結合している。プロセッサ５１１は，コアＣＰＵ５１２その主要な構成要素とし，この他に内部データキャッシュＲＡＭ５１３および内部命令キャッシュＲＡＭ５１４により構成されている。
【００３５】
システム制御回路５３４はペリフェラルブリッジ５３０に結合しており，外部クロック端子５４６により外部回路から外部クロックを受け入れることができる。このシステム制御回路５３４は，プロセッサ５１１およびその他のＣＰＵ５１０の構成要素にクロックを供給し，かつ制御する機能を有する。
【００３６】
その他のＣＰＵ５１０の構成要素としては，専用高速バス５２１に結合されるテストインタフェース５２２，メモリ制御回路５２３，バス調停装置５２４および割込制御回路５２５がある。テストインタフェース５２２は外部テストバス５４２と結合され，メモリ制御回路５２３は外部メモリバス５４３と結合され，割込制御回路５２５は割込信号端子５４５と結合されている。専用高速バス５２１は外部端子５４４を備えており，この外部端子５４４にユーザの装置を結合することによってシステムＬＳＩを構成することができる。
【００３７】
また，専用ペリフェラルバス５３１には，システム制御回路５３４の他，タイマ５３２と，通信ポート５４７を持つシリアルインタフェース５３３が結合している。
【００３８】
ＪＴＡＧ端子５４１は，プロセッサ５１１自体のテストインタフェース等に使われる。
【００３９】
（システムＬＳＩ５５０）
システムＬＳＩ５５０は，図２に示したように，図１に示したＣＰＵ５１０をその主要な構成要素とし，外部端子５４４から専用高速バス５２１が拡張されている。そして，専用高速バス５２１には，後述するクロック制御ライブラリやアプリケーションプログラム等を格納するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５５１と，ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５５２と，ユーザオリジナルの回路群５５３とが結合している。
【００４０】
また，専用高速バス５２１に結合するペリフェラルブリッジ５５４により，専用ペリフェラルバス５５５上のパワーダウン制御回路５５６およびユーザオリジナルのクロック生成回路５５７と結合している。パワーダウン制御回路５５６は，システムＬＳＩ５５０全体のクロック分配等を制御することでパワーダウンを実現している。
【００４１】
外部クロック端子５４６にはシステムＬＳＩ５５０上に置かれたクロック生成回路５５８が結合され，システム制御回路５３４に外部クロックを供給している。その他，割込端子５４５に外部割込制御回路５５９を設けている。本実施の形態は，システム制御回路５３４およびクロック生成回路５５８に特徴を有する。以下に，システム制御回路５３４について図３を，クロック生成回路５５８について図４を，それぞれ参照しながら説明する。
【００４２】
（システム制御回路５３４）
図３は，システム制御回路５３４の説明図である。
システム制御回路５３４は，プロセッサ５１１およびその他のＣＰＵ５１０の構成要素にクロックを供給し，かつ，制御する機能を有する。図３に示したように，専用ペリフェラルバス５６１には各種レジスタが結合し，これらレジスタにより，ＣＰＵ５１０に供給されるクロックを制御する。以下に，各レジスタについて説明する。
【００４３】
クロック供給待ちレジスタ５６２は，基準クロックの発振の開始時やＰＬＬ５７３のロックに至るまでの安定時間を確保するための設定をするレジスタであり，制御信号ＣＫＷＴを出力する。
【００４４】
分周比設定レジスタ５６３は，クロック生成回路５５８を制御するためのレジスタであり，クロック分周比を定め，制御信号ＣＧＣを出力する。
【００４５】
クロック停止レジスタ５６４は，ＣＰＵ５１０内のクロック動作モードのうち，ＣＰＵ５１０の主要な構成要素に対しクロックの供給を停止するＨＡＬＴモード（第１の特殊モード）と，ＣＰＵ５１０の全体のクロックを停止するＳＴＯＰモード（第２の特殊モード）の指定を行うためのレジスタであり，制御信号ＰＭＰを出力する。モードの指定やＣＰＵ５１０のいずれの構成要素に対しクロックの供給を停止するかについての指定は，レジスタの特定のビットを設定することにより行っている。
【００４６】
クロック停止制御レジスタ５６５は，クロック停止レジスタ５６４の指定に従ったクロック信号ＨＣＬＫを出力するためのレジスタである。この元になるクロック信号ＢＣＬＫ（ＩＮ）は後述するクロック生成回路５５８から供給される。
【００４７】
ＩＤレジスタ５６６は，ＣＰＵ５１０の種別などを与えるシステムＩＤを読み出すためのレジスタである。
【００４８】
ステータスレジスタ５６７は，周辺装置のステータスを示すレジスタである。ステータスレジスタ５６７は，ＣＰＵ５１０内のクロック動作モードのうち，ＣＰＵ５１０の全体の電源を停止するＳＬＥＥＰモード（第３の特殊モード）から解除した直後，ＣＰＵ５１０内部の周辺装置におけるハンドシェイクの状態を通知する。ハンドシェイクの状態の通知は，レジスタの特定のビットを設定することにより行っている。
【００４９】
これら各レジスタ５６２〜５６７は，専用ペリフェラルバス５６１を通して，プロセッサ５１１がその値を直接指定することができる。
【００５０】
以上，システム制御回路５３４について説明した。
次いで，クロック生成回路５５８について説明する。
【００５１】
（クロック生成回路５５８）
図４は，クロック生成回路５５８の説明図である。
クロック生成回路５５８はシステム制御回路５３４に外部クロックを供給している。ＭＣＬＫ０（６２．５ＭＨｚ），ＭＣＬＫ１（５０ＭＨｚ），およびＭＣＬＫ２（３２．７６８ＫＨｚ）の各端子には各水晶発信器等からの出力がそれぞれ入力され，システムに供給される各種クロックの原振となる。
【００５２】
クロック制御部５７１は，各種クロックの制御を行う。クロック制御部５７１に入力される制御信号ＣＫＷＴは，システム制御回路５３４内のクロック供給待ちレジスタ５６２からの入力であり，ＰＬＬ５７４等の安定時間を確保するために用いられる。
【００５３】
制御部５７２は，クロック生成回路５５８全体の制御を行う。制御部５７２に入力される制御信号ＣＧＢＳＴＰはクロック生成回路５５８自体のクロックを停止する信号である。後述するＳＬＥＥＰモードでは，出力信号ＯＳＣＥＮにより発振の停止を指示する。この他，制御部５７２は，クロックの供給／停止を制御する制御信号ＣＬＫＥＮを分周／選択部５７４に出力する。
【００５４】
ＰＬＬ５７３は，供給されたクロックＭＣＬＫ０に同期して，安定した高周波クロック（４８〜２４０ＭＨｚ）を生成する。上記各種クロックと併せると，全部で４系統のクロックを選択することができる。なお，ＰＬＬ５７３は，制御信号ＰＬＬＥＮにより停止することができる。
【００５５】
すべてのクロックは分周／選択部５７４において分周され，かつ選択される。分周／選択部５７４の主な出力信号は，コアＣＰＵ５１２の動作クロックＦＣＬＫ，専用ペリフェラルバス５２１のアクセス用クロックＢＣＬＫ（ＯＵＴ），および，タイマクロックＴＭＣＬＫである。分周／選択に用いられる制御信号は，動作クロックＦＣＬＫ，専用ペリフェラルバス５２１のアクセス用クロックＢＣＬＫ（ＯＵＴ）については制御信号ＣＳＥＬが用いられ，タイマクロックＴＭＣＬＫについては制御信号ＴＭＳＥＬが用いられる。
【００５６】
本実施の形態では，高速動作モードから低速動作モードに至る多数の周波数において，クロックを動的，かつ，迅速に制御することにより，システムＬＳＩの消費電力を最適に低減させることを第一の目的としている。システムＬＳＩ５５０は，図２に示したように，プロセッサ５１１を用いたＣＰＵ５１０と，ユーザオリジナルの回路群５５３で構成されている。従って，プロセッサ５１１に供給されるクロックはプロセッサ５１１の要請に応えるものでなければならない。
【００５７】
本実施の形態のプロセッサ５１１は，ファストバス（ＦＡＳＴ  ＢＵＳ）モードと同期モードの２つの動作モードを有する。ファストバスモードとは，専用ペリフェラルバス５２１のアクセス用クロックＢＣＬＫを，プロセッサ５１１と専用ペリフェラルバス５２１の双方で使用する動作モードを言う。同期モードとは，プロセッサ５１１ではコアＣＰＵ５１０の動作クロックＦＣＬＫを使用し，専用ペリフェラルバス５２１ではアクセス用クロックＢＣＬＫを使用する動作モードを言う。
【００５８】
専用ペリフェラルバス５２１のアクセス用クロックＢＣＬＫは，図４に示した分周／選択部５７４により，コアＣＰＵ用クロックＦＣＬＫと同一，もしくはその１／２の周波数を持つ。なお，これらのモードの切替はコアＣＰＵ５１２のレジスタ設定により行っている。
【００５９】
ＣＰＵ５１０の場合，図３に示したシステム制御回路５３４内のレジスタ群において，コアＣＰＵ用クロックＦＣＬＫ等につき詳細な設定をすることができた。このようにクロック群を動的，かつ，迅速に制御する機能を，本明細書中「クロックギア」と称する。なお，本実施の形態では，クロックギアによるクロック制御はファストバスモードにおいてのみ可能であるものとして説明する。
【００６０】
本実施の形態のクロック動作モードの一例を図５に示した。図５はシステムＬＳＩ内にＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を有し，かつ，極低速動作モードが存在する回路構成を採用した場合のクロック動作モードである。これらの各モード間での遷移は上記クロックギアによって行われる。これについて以下に詳細に説明する。
【００６１】
本実施の形態のクロック動作モードは，図５に示したように，８つの動作モードＳＴＮｎ（ｎ＝０〜７）を有する。このうち，ＳＴＮ０〜ＳＴＮ４の５つが通常動作モード１１に属し，ＳＴＮ５〜ＳＴＮ７の３つが特殊モード１２に属する。
【００６２】
通常動作モード１１には，（ＳＴＮ０：初期動作モード）の他，ＣＰＵ５１０の動作速度に応じて，（ＳＴＮ１：最高速動作モード），（ＳＴＮ２：高速動作モード），（ＳＴＮ３：低速動作モード），（ＳＴＮ４：極低速動作モード）がある。
【００６３】
また，特殊モード１２には，ＣＰＵ５１０の主要な構成要素に対しクロックの供給を停止するモード（ＳＴＮ５：ＨＡＬＴモード），ＣＰＵ５１０全体のクロックを停止するモード（ＳＴＮ６：ＳＴＯＰモード），ＣＰＵ５１０全体の電源を停止するモード（ＳＴＮ７：ＳＬＥＥＰモード）がある。図５において，通常動作モード１１内に記載した周波数は，専用ペリフェラルバス５２１のアクセス用クロックＢＣＬＫの周波数である。
【００６４】
クロックの原振（オーバトーン発振を含む）は６２．５ＭＨｚ，５０ＭＨｚ，および３２．７６８ＫＨｚの３つであり，これらは，図４に示したＭＣＬＫ０，ＭＣＬＫ１，およびＭＣＬＫ２の各端子に対応する。ここで３２．７６８ＫＨｚは，腕時計用水晶振動子（クォーツ）を用いている。ＰＬＬ５７３の出力は原振ＭＣＬＫ０に同期し，最大で２４０ＭＨｚまで逓倍される。そこで，システムＬＳＩ５５０では，ＰＬＬ５７３で逓倍した後のクロックを含め，全部で４系統のクロックを選択することができる。
【００６５】
上記周波数（６２．５ＭＨｚ，５０ＭＨｚ，３２．７６８ＫＨｚ）もしくはその半分の周波数（３１．２５ＭＨｚ，２５ＭＨｚ）は，図５において，アクセス用クロックＢＣＬＫとして表示されている。なお，コアＣＰＵ５１２の動作クロックＦＣＬＫはその仕様により上限が定められるものとし，アクセス用クロックＢＣＬＫも，使用できる最大周波数は制限されるものとする。
【００６６】
以下に，図５を参照しながら，５つの通常動作モードおよび３つの特殊モードについて説明する。まず，通常動作モードについて説明する。
【００６７】
（ＳＴＮ０：初期動作モード，２５ＭＨｚ）
初期動作モードは，リセット直後の初期値設定等のために使われる。専用高速バス５２１，専用ペリフェラルバス５３１に接続される入出力装置の中には高速の応答が難しいものもあり，低速のクロックである初期動作モードで初期設定が行われる。なお，リセット直後，コアＣＰＵ５１２はファストバスモードとなる。
【００６８】
（ＳＴＮ１：最高速動作モード，６２．５ＭＨｚ）
最高速動作モードは，専用高速バス５２１，専用ペリフェラルバス５３１を最高速で動作させるモードである。従ってシステム全体の消費電力も大きい。
【００６９】
（ＳＴＮ２：高速動作モード，５０ＭＨｚ）
高速動作モードは，最高速動作モード（ＳＴＮ１）よりクロックが遅いが，十分な速度でアプリケーションを動作させるモードである。このようなモードを別個に設けたのは，クロックギアを円滑に実行し，システム全体の消費電力の低減を最適にするためである。
【００７０】
（ＳＴＮ３：低速動作モード，３１．２５ＭＨｚ）
低速動作モードは，クロックを低速にしてシステム全体の消費電力を実質的に低減させるモードである。キーボードのような低速デバイスのみを動作させている場合には，このモードで十分に機能する。
【００７１】
（ＳＴＮ４：極低速動作モード，３２．７６８ＫＨｚ）
極低速動作モードは，実質的にシステムの待機状態（ＷＡＩＴモード）を実現し，システム全体の消費電力を大幅に低減させる。ただし，システムへのクロックの供給が停止されているわけではないので，速やかに上記低速動作モード等に遷移できる。
【００７２】
なお，図１に示したメモリ制御回路５２３は外部メモリバス５４３により外部のＤＲＡＭ等を制御するが，その際，ＤＲＡＭのリフレッシュ用クロックとして上記原振３２．７６８ＫＨｚが用いられている。これはＤＲＡＭの規格から来るものであるので，極低速動作モード（ＳＴＮ４）においてこれ以下の周波数を採用する場合は，ＤＲＡＭを制御するメモリ制御回路５２３をセルフリフレッシュモードで動作させなければならない。
【００７３】
以上，５つの通常動作モードについて説明した。
次いで，特殊モードについて説明する。
【００７４】
（ＳＴＮ５：ＨＡＬＴモード（第１の特殊モード））
ＨＡＬＴモードは，図１に示したＣＰＵ５１０の主要な構成要素であるプロセッサ５１１，ＣＰＵブリッジ５２０，ペリフェラルブリッジ５３０，バス調停装置５２４等）に対しクロックの供給を停止するモードである。ＨＡＬＴモードへは，アプリケーションの側から，図３に示したシステム制御回路５３４内のクロック停止レジスタ５６４のＨＡＬＴ設定を行うと遷移する。これにより，クロックが速く動く大部分の装置の動作を停止するので，システム全体の消費電力を大きく低減させることができる。しかし，周辺装置はまだ動作しており，例えば割込制御回路５２５は動作しているので外部割込を受け付けることができ，リセット以外の手段によってクロックの供給を再開することができる。
【００７５】
（ＳＴＮ６：ＳＴＯＰモード（第２の特殊モード））
ＳＴＯＰモードは，ＣＰＵ５１０全体のクロックを停止するモードである。ＳＴＯＰモードへは，アプリケーションの側から，図３に示したシステム制御回路５３４内のクロック停止レジスタ５６４のＳＴＯＰ設定を行うと遷移する。図４に示した制御信号ＣＧＢＳＴＰは，本実施の形態に係るクロック生成回路５５８の停止を指示する。この結果，システム全体の消費電力は主にリーク電流に依存してくる。携帯機器で電池動作をするシステムではこのモードが有効に働く。なお，内部ＲＡＭ５５２がＤＲＡＭである場合には，メモリ制御回路５２３をセルフリフレッシュモードにしておかなければならない。
【００７６】
（ＳＴＮ７：ＳＬＥＥＰモード（第３の特殊モード））
ＳＬＥＥＰモードはＣＰＵ５１０全体の電源を停止するモードであり，電源に直列に接続したパワーＭＯＳ（不図示）によりその制御を行う。ＳＬＥＥＰモードへは，アプリケーションの側からパワーダウン制御回路５５６の内部レジスタ設定を行うと遷移する。ＳＬＥＥＰモードの解除は，まだ停止していない周辺装置であるパワーダウン制御回路５５６へのハードウェア信号を使う。その際，クロックの停止により内部ＤＲＡＭ等のデータが失われているので，アプリケーションを復旧するには相当の時間が必要となる。
【００７７】
すべての通常動作モードにおいて特殊モードに遷移することができる。アプリケーションプログラムは，遷移させる特殊モードの呼び出し関数を呼び出すことにより，通常動作モードから特殊モードへ遷移することができる。逆に，遷移した特殊モードから通常動作モードに復帰するにはその特殊モードを解除するだけでよい。システム制御回路５３４内のレジスタの設定は何ら変更されていないからである。その特殊モードの解除は，通常，外部割込により行われ，図１に示した割込制御回路５２５が制御する。必要に応じて，図２に示した外部割込制御回路５５９も使われる。
【００７８】
図５において各状態間を遷移する矢印に括弧書き数字で付された数字（以下，状態遷移番号という）は，その状態遷移に対応するライブラリを表している。ライブラリについては，後述する。
【００７９】
本実施の形態のクロック動作モードを，図９に示したＳＴ７コアの場合と比較したとき，ＳＴ７コアが１系統のクロックを分周して低速動作モードに割り当てているのに対し，本実施の形態では４系統のクロックを使い分けることができた。特に，ＰＬＬ５７３の出力を新たなクロック系統として選択枝に加えている。さらに，クロックの中には原振として腕時計用水晶振動子の３２．７６８ＫＨｚを用い，実質的な待機モードを実現することができた。これは本実施の形態がクロックギアと言う概念の元で高速動作モードから低速動作モードに至る多数の周波数においてクロックを動的，かつ，迅速に制御する目的だからである。
【００８０】
クロック動作の特殊モードも多彩である。通常備えるＨＡＬＴモードやＳＴＯＰモードの他にＳＬＥＥＰモードを有し，消費電力の削減を自在に実現できる構成としている。特に，通常動作モードから特殊モードへの遷移がアプリケーションプログラムから自由に設定でき，かつ，外部割込等により復帰できることは本実施の形態の優れた特徴である。
【００８１】
また，コアＣＰＵ５１２の汎用性を失わせることなくシステムＬＳＩ全体の消費電力を低減させるために，ＣＰＵ５００内に本実施の形態によるシステム制御回路５３４やクロック生成回路５５８を設けている。このようにして，本実施の形態にかかるクロックの動的制御においては，システムＬＳＩ５５０内部のコアＣＰＵ５１２のクロックとＣＰＵ５１０とを同時に制御することができる。
【００８２】
以下に，上記クロックギアの概念を実現するための制御プログラム群（以下，クロック制御ライブラリと称する。）について説明する。
【００８３】
本実施の形態ではアプリケーションプログラムの側からＣ言語による本格的なパワーマネジメントを行うことを目的としている。これを実現するための手段がクロック制御ライブラリである。図６は，本実施の形態のクロック制御ライブラリ３２の構造を示した説明図である。
【００８４】
図６に示したように，アプリケーションプログラム３１からライブラリ３４を呼び出す場合には，まずメインライブラリ３３を呼び出す。この呼び出しはＣ言語で行われ，メインライブラリ３３自体もＣ言語で組まれている。メインライブラリ３３は，アプリケーションプログラム３１の状態に応じ，ライブラリ３４のいずれかを選択してクロックの動作モード間遷移を達成する。
【００８５】
ライブラリ３４はすべてアセンブリ言語で組まれている。これはクロック制御関連ハード３５を直接制御する必要からである。クロック制御関連ハード３５とは，具体的には，図３に示したシステム制御回路５３４や，図４に示したクロック生成回路５５８である。
【００８６】
メインライブラリ３３がライブラリ３４のいずれかを選択して呼び出す場合には，図７に示した入力パラメータ等を伴って行われる。図７は，クロックの状態遷移と，入力パラメータおよびジャンプテーブル番号とに応じて呼び出されるライブラリ関数を示した説明図である。なお，ジャンプテーブル番号はライブラリ３４の置かれた相対アドレスを示している。この対応表ではシステムＬＳＩ内にＤＲＡＭを有するか，クロックモードとして極低速動作モードを有するかにより，使われるライブラリ関数が異なる。
【００８７】
図８は，各ライブラリがどのようなパラメータを有しているかを示す表である。これらのパラメータにより，ライブラリは，メモリパラメータの設定，クロック切替，ＣＰＵクロックモードの切替等の処理を実行する。図８（ａ）は，ライブラリとそこで指定する入力パラメータ群を表している。各列（▲１▼〜▲８▼）には入力パラメータの値がリストアップされている。
【００８８】
入力パラメータの内容について，図８（ｂ）を参照しながら説明する。
メモリパラメータ変更パターン（▲１▼）は，クロックの速度に合わせてメモリ等の動作を行わせるためにメモリ等のパラメータの設定変更を行う。例えば，低速動作モードから高速動作モードに変更（ギアアップ）するときには，値０ｘ００を指定することにより高速用メモリパラメータへ変更する。逆に，高速動作モードから低速動作モードに変更（ギアダウン）するときには，値０ｘ０１を指定することにより低速用パラメータへ変更する。なお，ここでいうメモリ等とは，例えば，ＲＡＭ，ＲＯＭ，Ｉ／ＯそしてシステムＬＳＩ内に存在するときのＤＲＡＭである。
【００８９】
ＣＰＵクロックモード（▲２▼）は，プロセッサ５１１の２つの動作モードである同期モードとファストバスモードとを切り替える場合に指定する。ファストバスモードでは値０ｘ００を指定し，同期モードでは値０ｘ０１を指定する。
【００９０】
その他の入力パラメータについて説明すると，外部ＲＯＭメモリパラメータ（▲３▼）ではＲＯＭのタイプを指定する。外部ＳＲＡＭメモリパラメータ（▲４▼）ではＳＲＡＭのタイプを指定する。外部Ｉ／Ｏメモリパラメータ（▲５▼）ではＩ／Ｏのタイプを指定する。ＳＤＲＡＭ／ＥＤＯ−ＲＡＭのパラメータ（▲６▼）は，そのＤＲＡＭがＳＤＲＡＭである場合の値０ｘ００〜０ｘ０９と，そのＤＲＡＭがＥＤＯ−ＲＡＭである場合の値０ｘ００〜０ｘ０ａとがある。ＰＣＧＢＣＮＴ０設定値（▲７▼）もしくはＰＣＧＢＣＮＴ１設定値（▲８▼）は，図３に示した分周比設定レジスタ５６３にセットする値を定め，使用する原振やクロック分周比等を指定する。上記すべてのパラメータにおいて，値が０ｘｆｆの場合はその入力パラメータの設定は不要である。
【００９１】
図５において各状態間を遷移する矢印に括弧書き数字で付された数字（状態遷移番号）は，その状態遷移に対応するライブラリを表している。アプリケーションプログラムにおいてクロックの状態を遷移させたいと考えた場合，状態遷移番号に対応するライブラリを呼び出し，これを実行することで状態遷移を実現している。
【００９２】
ライブラリ関数と状態遷移番号とは一対一ではなく，一のライブラリ関数が上記メモリ変更パターンに応じて複数の状態遷移を実現する。例えば第一行目において，アプリケーションプログラム３１がクロックを低速動作モードから高速動作モードへ切り替える制御を行った場合，メインライブラリ３３はライブラリ０を呼び出すが，具体的には入力パラメータ０ｘ００を伴い，ライブラリ関数ｃｌｋｇｅａｒ０を相対アドレス０ｘ００から呼び出す。
【００９３】
この時，現在のクロックモードが低速動作モード（ＳＴＮ３）であれば，図５に示したように，状態遷移番号（５）となり，現在のクロックモードが高速動作モード（ＳＴＮ２）であれば状態遷移番号（３）となる。また，ライブラリ３４は，クロック制御の他に，ＰＬＬの停止，タイマ設定，外部回路の分周比の設定等の処理を併せて行うことも可能である。
【００９４】
以上説明したように，本実施の形態をアプリケーションプログラム３１の側からみると，Ｃ言語インタフェースとしてメインライブラリ３３が準備され，その制御下でクロック遷移に必要な個別のライブラリ３４を呼び出す。ライブラリ３４はすべてアセンブリ言語で組まれているので，上記システム制御回路５３４等の制御に適している。従って，このようなクロック制御ライブラリ３２の構造により，ユーザの希望する低消費電力システムＬＳＩを容易に実現することが可能である。
【００９５】
以上，添付図面を参照しながら本発明にかかるシステムＬＳＩの好適な実施形態について説明したが，本実施の形態はかかる例に限定されない。当業者であれば，特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり，それらについても当然に本実施の形態の技術的範囲に属するものと了解される。
【００９６】
【発明の効果】
本発明の主要な効果を挙げれば以下の通りである。
【００９７】
複数系統の基準クロックを用いることによって，多様な通常動作モード（最高速動作モード，高速動作モード，低速動作モード，極低速動作モードなど）を有するシステムを構築することができる。
【００９８】
また，現在のクロック状態と遷移させた後のクロック状態との関係を，クロック制御ライブラリという形で関数化することにより，通常動作モードにおける複数のクロック状態を，あたかもギアチェンジさせるように動的かつ迅速に制御することができる。このようにして，クロック状態のより細かな制御が可能となった。
【００９９】
さらに，本発明では，クロック制御回路内にレジスタを有し，通常動作モードから特殊モードにクロック状態を遷移させる際の制御を，このレジスタ値の変更により行っている。この際，特殊モードに遷移した後もレジスタの設定は何ら変更されないので，特殊モードから通常動作モードへと再び遷移する際には，外部割込などにより特殊モードを解除するだけでよく，制御が容易に行える。
【０１００】
さらに，本発明では，クロック制御ライブラリのメインライブラリがアプリケーションプログラムと同一のプログラム言語で記述され，アプリケーションからメインライブラリの呼び出しも同一のプログラム言語で行われることにより，ユーザが取り扱いやすいような柔軟なインタフェースを実現し，ユーザが自らのシステムに最適なパワーマネージメントシステムを選択することが可能である。
【図面の簡単な説明】
【図１】ＣＰＵの構成を示す説明図である。
【図２】図１のＣＰＵを用いたシステムＬＳＩの構成を示す説明図である。
【図３】システム制御回路の説明図である。
【図４】クロック生成回路の説明図である。
【図５】クロック動作モードとその状態遷移の一例を表した図である。
【図６】クロック制御ライブラリの構造を示す説明図である。
【図７】クロック制御ライブラリの呼び出しを示す説明図である。
【図８】ライブラリが有するパラメータの説明図であり，図８（ａ）はライブラリへの入力パラメータを示し，図８（ｂ）は入力パラメータの内容を示している。
【図９】従来のクロック制御回路の説明図である。
【図１０】従来のクロック動作モードの説明図である。
【符号の説明】
５１０  ＣＰＵ
５１１  プロセッサ
５１２  コアＣＰＵ
５１３  内部データキャッシュＲＡＭ
５１４  内部命令キャッシュＲＡＭ
５２０  ＣＰＵブリッジ
５２１  専用高速バス
５２２  テストインタフェース
５２３  メモリ制御回路
５２４  バス調停装置
５２５  内部割込制御回路
５３１  専用ペリフェラルバス
５３２  タイマ
５３３  シリアルインタフェース
５３４  システム制御回路
５４１  ＪＴＡＧ端子
５４２  外部テストバス
５４３  外部メモリバス
５４４  外部端子
５４５  割込信号端子
５４６  外部クロック端子
５４７  通信ポート
５５０  システムＬＳＩ
５５１  ＲＯＭ
５５２  ＲＡＭ
５５３  ユーザオリジナルの回路群
５５４  ペリフェラルブリッジ
５５５  専用ペリフェラルバス
５５６  パワーダウン制御回路
５５７  ユーザオリジナルのクロック生成回路
５５８  クロック生成回路
５５９  外部割込制御回路
５６１  専用ペリフェラルバス
５６２  クロック供給待ちレジスタ
５６３  分周比設定レジスタ
５６４  クロック停止レジスタ
５６５  クロック停止制御レジスタ
５６６  ＩＤレジスタ
５６７  ステータスレジスタ
５７１  クロック制御部
５７２  制御部
５７３  ＰＬＬ
５７４  分周／選択部
【図１】
0003782361.tif 000002
【図２】
0003782361.tif 000003
【図３】
0003782361.tif 000004
【図４】
0003782361.tif 000005
【図５】
0003782361.tif 000006
【図６】
0003782361.tif 000007
【図７】
0003782361.tif 000008
【図８】
0003782361.tif 000009
【図９】
0003782361.tif 000010
【図１０】
0003782361.tif 000011