(57)【特許請求の範囲】
【請求項１】
ブロックに入力される入力クロックを遅延させる遅延素子と、
この遅延素子の通過後のクロックをイネーブル端子に入力したローレベルラッチと、
前記ブロック内で、前記遅延素子通過後のクロック、あるいは前記遅延素子通過後のクロックが組み合わせ回路を通過した後のクロックの立ち上がりに同期して生成された第１のクロック制御信号と、前記ブロック外で生成する第２のクロック制御信号との論理和信号を前記ローレベルラッチのＤ入力に出力する論理和素子と、
前記ローレベルラッチの出力を論理反転する論理反転素子と、
前記遅延素子の通過後の前記クロックと前記論理反転素子出力との論理積をブロック動作クロックとして出力する論理積素子とを備えたクロック制御装置。
【請求項２】
ブロックに入力される入力クロックを遅延させる遅延素子と、
この遅延素子の通過後のクロックをイネーブル端子に入力したローレベルラッチと、
他とは共用して使用しない第１のクロック制御信号と、
他と共用して使用する他の第２のクロック制御信号との論理和信号を前記ローレベルラッチのＤ入力に出力する論理和素子と、
前記ローレベルラッチの出力を論理反転する論理反転素子と、
前記遅延素子の通過後の前記クロックと前記論理反転素子出力との論理積をブロック動作クロックとして出力する論理積素子とを備えたクロック制御装置。
【請求項３】
ブロックに入力される入力クロックを遅延させる遅延素子と、
この遅延素子の通過後のクロックをイネーブル端子に入力したローレベルラッチと、
前記ブロック内で、前記遅延素子通過後のクロック、あるいは前記遅延素子通過後のクロックが組み合わせ回路を通過した後のクロックの立ち上がりに同期して生成された他とは共用して使用しない第１のクロック制御信号と、前記ブロック外で生成する他と共用して使用する第２のクロック制御信号との論理和信号を前記ローレベルラッチのＤ入力に出力する論理和素子と、
前記ローレベルラッチの出力を論理反転する論理反転素子と、
前記遅延素子の通過後の前記クロックと前記論理反転素子出力との論理積をブロック動作クロックとして出力する論理積素子とを備えたクロック制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、高速動作するプロセッサのクロックを制御するクロック制御装置に関するものである。
【０００２】
【従来の技術】
近年、ＬＳＩをとりまく設計技術、プロセス技術、ＣＡＤツール技術等の進歩は著しく、かつ、ＬＳＩに要求される処理性能も上がりこそすれ、下がることはない。従って、プロセッサの動作速度も飛躍的に高速化されてきている。
また、世の中は低エネルギー消費を志向しており、プロセッサ程度の消費電力であっても例外ではない。
【０００３】
プロセッサでの消費電力はＣＭＯＳ回路の場合は、（周波数）×（容量）×（電圧）×（電圧）に比例し（例えば、「低電力ＬＳＩの技術白書」（日経ＢＰ社発行）のＰ５７を参照）、プロセッサのアーキテクチャのレベルでは（周波数）の項を低減すべく、工夫を凝らすことになる。全体的に周波数を下げることも一案であるが、現在は要求される処理量も多く、プロセッサを全体的に低速動作させることは許容できないといえる。そこで、プロセッサ内では本当に必要な時だけ、クロックを配信し、本当に必要なブロックのみ動作させる、といった細かなクロック制御が低消費電力化のためには必須であるといえる。
【０００４】
この場合、より多くクロックを制御（停止）できることが望ましい。更に、基本的にはより多くのクロックラインを不活性化するため、プロセッサ内でのクロック発生部の大元で停止できることが望ましい。
従来での制御方法の概略を示す。図１１はプロセッサ内のクロック発生部とクロックが配信されるべきブロック群を示している。また、図１２はクロックが制御される様子をタイミングチャートで示したものである。
【０００５】
図１１において、１はプロセッサ全体、２はクロック発生部、３、４、５はクロックを受けて動作するブロック、６はクロックソース、１０はクロックの原振、２０は動作クロックでフリップフロップに入力するクロック（ノンゲーテッド）、３０は“１”である時クロックを停止させるクロック制御信号、４０はブロック間のクロックスキューを低減する遅延調整バッファ、５０は各ブロック中のフリップフロップ、５１はクロック制御信号３０を出力するフリップフロップ、であるとする。
【０００６】
原振クロック１０と動作クロック２０は時間Ａだけの遅延が発生する。なぜならば、クロックスキューの調整をするからである。クロックの分配は等質でなく、ブロック毎に到達する時間が異なってくるので、ブロック間でクロックの位相が一致しなくなる（クロックスキューの発生）。そこでブロック間での遅延差を低減するために（０にするために）遅延調整バッファ４０のサイズ、個数を変更し、遅延を調整する。この時、一番遅いブロックにあわせることになる。
【０００７】
あるサイクル（図１２中サイクルＡ）でクロックを停止する条件が成立したとする。すると制御信号３０は動作クロックの立ち上がりエッジから、いくらかの遅延時間後“１”となり、その信号で原振クロック１０を停止させようとする（サイクルＢでのクロック停止）。そのための余裕は時間Ｂである。制御信号３０がクロック発生部２のＡＮＤゲート２ａに届くのが時間Ｂ内でなければクロックに短いパルスが発生し、プロセッサの動作が保証できなくなる。クロック制御を正しく行なうためには、時間Ｂが大きければ大きいほど好ましく、そのためには時間Ａをできるだけ小さくする工夫が重ねられてきた。
【０００８】
以上によりクロック発生部２の出力段でクロックの制御を行なうことで、必要な場合はチップ内のクロック動作をほぼ停止できるため、低消費電力化に大きな効果があった。
しかしながら、近年のプロセッサの高機能化にともない、従来の技術では対応できないことが多くなってきた。
【０００９】
高機能化により、図１１でいうところのブロックが増加してきた。そのため集中的な（クロック発生部だけでクロック制御を行なう）制御では効率が悪化してきた。すなわち、複数のブロックが全て同時に停止する様なタイミングがほとんど存在しないという反面、ほとんどのタイミングで、どこかのブロックは動作の必要がないと言う状況が出てきた。
【００１０】
また高速化がすすむにつれて、サイクルＡ、Ｂが短くなり、クロック発生部でのクロック制御が困難になってきた（図１３）。すなわち、プロセスルールが変わらなければ、時間Ａは変わらないが、時間Ｂは確実に小さくなり、サイクルＢでのクロック停止は困難になってくる。
以上のように、従来構成ではプロセッサの高機能化、高速化が進んだ時に、低消費電力化のためのクロック制御ができないという問題点を有していた。すなわち高速動作するプロセッサのクロック制御はクロック原振を制御しようとするとタイミングが厳しく、きめ細かな制御が不可能となり、低消費電力化に不向きである。
【００１１】
本発明は以上の点に鑑み、ブロック毎に細かなクロック制御を行なうことができるクロック制御装置を提供することを目的としている。
【００１２】
【課題を解決するための手段】
請求項１記載のクロック制御装置は、ブロックに入力される入力クロックを遅延させる遅延素子と、
この遅延素子の通過後のクロックをイネーブル端子に入力したローレベルラッチと、
前記ブロック内で、前記遅延素子通過後のクロック、あるいは前記遅延素子通過後のクロックが組み合わせ回路を通過した後のクロックの立ち上がりに同期して生成された第１のクロック制御信号と、前記ブロック外で生成する第２のクロック制御信号との論理和信号を前記ローレベルラッチのＤ入力に出力する論理和素子と、
前記ローレベルラッチの出力を論理反転する論理反転素子と、
前記遅延素子の通過後の前記クロックと前記論理反転素子出力との論理積をブロック動作クロックとして出力する論理積素子とを備えたものである。
【００１３】
請求項１記載のクロック制御装置によれば、高速で動作するプロセッサのクロック制御に関して、大局的制御と局所的制御を統一的に扱うことが可能なクロック制御セルを用意でき、それらを設計フローに組み入れることでタイミング設計が容易になる。またその結果、効率の良いクロック制御が実現でき、プロセッサの低消費電力化に大きく貢献する。
請求項２記載のクロック制御装置は、ブロックに入力される入力クロックを遅延させる遅延素子と、
この遅延素子の通過後のクロックをイネーブル端子に入力したローレベルラッチと、
他とは共用して使用しない第１のクロック制御信号と、
他と共用して使用する他の第２のクロック制御信号との論理和信号を前記ローレベルラッチのＤ入力に出力する論理和素子と、
前記ローレベルラッチの出力を論理反転する論理反転素子と、
前記遅延素子の通過後の前記クロックと前記論理反転素子出力との論理積をブロック動作クロックとして出力する論理積素子とを備えたものである。
請求項３記載のクロック制御装置は、ブロックに入力される入力クロックを遅延させる遅延素子と、
この遅延素子の通過後のクロックをイネーブル端子に入力したローレベルラッチと、
前記ブロック内で、前記遅延素子通過後のクロック、あるいは前記遅延素子通過後のクロックが組み合わせ回路を通過した後のクロックの立ち上がりに同期して生成された他とは共用して使用しない第１のクロック制御信号と、前記ブロック外で生成する他と共用して使用する第２のクロック制御信号との論理和信号を前記ローレベルラッチのＤ入力に出力する論理和素子と、
前記ローレベルラッチの出力を論理反転する論理反転素子と、
前記遅延素子の通過後の前記クロックと前記論理反転素子出力との論理積をブロック動作クロックとして出力する論理積素子とを備えたものである。
【００１８】
【発明の実施の形態】
以下、図１から図１０を参照しながら、本発明によるクロック制御装置の実施の形態を説明する。
まず、ブロック単位でのクロック制御に使用可能なクロック制御セルについて説明する。図１および図２を用いる。１００、２００は互いに別形態のクロック制御セルである。１０１、１０２、２０１、２０２はクロックを停止したい時に、“１”となるクロック制御信号、１０３、２０３はクロック制御セル１００、２００に入力される遅延バッファ通過後のクロック、１１０は論理和ゲート、１０５は論理和ゲート１１０の出力信号、１２０、２２０、２２１はクロック１０３あるいは２０３が“０”である時に入力Ｄ＝出力Ｑとなるローレベルラッチ、１３０、２３０、２３１は論理反転ゲート、１４０、２４０は論理積ゲート、１０４、２０４は停止制御されたクロックである。図のようにローレベルラッチ１２０の入力Ｄに論理和ゲート１１０の出力信号１０５が入力し、イネーブル端子Ｅにクロック１０３が入力し、ローレベルラッチ２２０、２２１の入力Ｄにクロック制御信号２０１、２０２が入力し、イネーブル端子Ｅにクロック２０３が入力している。
【００１９】
なお、クロック制御セル２００で示したように、セル外部からの制御信号それぞれに対応したローレベルラッチを複数用意するセルが考えられるが、本実施の形態では、ローレベルラッチが２個のもののみを示した。制御信号が３本以上になっても同様に以下の説明は当てはまる。
これらのセルは以下のようにタイミングを合わせ込んでおく。すなわち、１００のクロック制御セルでは、論理積ゲート１４０に入力する論理反転ゲート１３０の出力（１４０．Ａと表記）とクロック１０３（１４０．Ｂと表記）との関係が、論理積ゲート１４０の出力にグリッチが乗らないようにすることである。換言すれば、論理積ゲート（１３０）１４０．Ａの信号変化は必ずクロック（１０３）１４０．Ｂのロウ区間で生じるようにすることである。具体的には１４０．Ａが最速で立ち上がる場合、図３に示すように１４０．Ｂの立ち下がりにかからないように、更に１４０．Ａが最遅で立ち上がる場合、図４に示すように１４０．Ｂの立ち上がりにかからないように、それぞれタイミングを合わせて作り込む。
【００２０】
２００のクロック制御セルでは論理積ゲート２４０の入力ＡとＢの関係が１４０．Ａと１４０．Ｂの関係に同じで、同様に論理積ゲート２４０の入力ＡとＣの関係が１４０．Ａと１４０．Ｂの関係に同じになるようにタイミングを合わせて作り込む。
クロック制御セルの動作は次のようになる。
【００２１】
図５にブロック単位でのクロック入力口の構成を示す。３１０はクロック発生部からのクロック、３４０はクロック３１０を受ける遅延素子例えば遅延バッファであり、ブロック間スキューの調整の役割もある。３３０はブロック外で生成され、クロックを停止する時に”１”となる制御信号、１００はクロック制御セル、３１１は遅延バッファ３４０通過後のクロック（１０３に相当）、３２０はクロック制御セル１００の出力クロックがクロックツリーを通過後、ブロック内のフリップフロップに供給されるクロック、３３１はクロック制御セル１００内でクロック３１１をマスクするマスク信号である。クロックは遅延があり、図６で示すようなクロック３１０、３１１、３２０の位相関係となる。また、制御信号３３０の変化タイミングは、動作クロックとなるクロック３２０の立ち上がりエッジをトリガとしているので、高速なクロックであればクロック３１０の次の立ち上がりエッジの付近になる。これでクロック原振（クロック発生部）をマスクしようとすると非常にタイミングが厳しいが（図中破線矢印）、ブロック内遅延バッファ３４０を通過したクロックである、クロック３１１をマスクすることを考えれば、時間的に余裕がある。図６は制御信号３３０がクロック３１１のロウ区間で変化した時のものである。制御信号３３０が１サイクルアクティブであるとすれば、その結果破線で示したような、クロックがブロック内部に供給される。
【００２２】
同様に、制御信号３３０がクロック３１１のハイ区間で変化した場合は、図７に示すようにクロックマスク信号３３１はクロック３１１のロウ区間になるのを待って変化し、やはり１サイクルの間クロックが停止することになる。
ここで、クロック３１１と制御信号３３０では、クロック３１１の方が、遅延調整用のバッファ（ブロック内にたくさん配信するため、強力なバッファとなりその結果遅延も大きい。）を通過しているため、ほぼ確実にクロックマスク信号３３１の変化はクロック３１１の立ち上がり変化に間に合う。
【００２３】
ここでは簡単のためにクロック制御セル１００のＥＮ１端子のみの入力を考慮したが、ブロック内のクロック制御信号をＥＮ２に入力すれば、ブロック単体でクロック制御も同様に実現できる。クロック制御セル１００内でタイミング保証を行なっているので、位相のそろっていないクロック３１１に対するタイミングは考慮する必要がなく、タイミング設計が非常に容易である。すなわち、プロセッサ全体のクロック制御とブロック単体でのクロック制御が同時に実現でき、従来に比べて非常にきめこまかなクロック制御の結果、低消費電力化が期待できる。
【００２４】
従来ではブロック内でのクロック遅延（クロック３１０とクロック３１１の遅延）をできるだけ、低減することで高速動作中のクロック制御を実現しようとしたが、現在の同期設計手法である限り、クロック遅延は避けられない。本発明では、その必要不可欠なクロック遅延を積極的に制御に使用することにより、高速動作時でも安定してクロック制御が可能になる。
【００２５】
また、クロック制御セル１００はそのまま動作が全く同じである、クロック制御セル２００に置き換えても良い。すなわち、クロック制御セル２００はクロック制御セル１００中の論理和ゲート１１０の通過時間をも省略したいくらいクリティカルなクロック制御信号がある場合等にクロック制御セル２００を使用する。
【００２６】
クロック制御セル１００、２００を用いなくとも、同じ構成のゲートを配置すれば、同じ効果が期待できる。しかしながら、レイアウト時にそれぞれのゲートの配置場所をこまかく制御できなければ、タイミングを保証できないために、低、中速動作でのクロック制御には用いることができても、高速動作での制御には使用することができない。
【００２７】
次に、上記で説明したクロック制御セルを利用したクロックスキュー調整方法について説明する。
クロック制御セルとして上記のクロック制御セル１００を使用する。クロック制御セル２００を用いても処理流れは全く同様である。
まず、遅延バッファとクロック制御セルに関して、レイアウトデータの外形は同じでクロックに関する遅延値のみが、違う複数のセルを用意する。レイアウトデータ上で、置き換えを行い、遅延値のみを調整するために使用する。
【００２８】
ステップ１：レイアウトデータを作る元になるネットリストデータ生成時には、ブロック内でクロックを受け付ける回路は、図８で示したような構成にしておく。この時のそれぞれの遅延バッファとクロック制御セルの遅延は適当なものを採用しておく。図８および図９において４０１、５０１はクロック、４１０、５１０、５１１はクロック制御セル（＝クロック制御セル１００）、４２０、５２０、５２１はブロック間スキュー調整用遅延素子例えば遅延バッファ、４３０、５３０、５３１はブロック内スキュー調整用遅延素子例えば遅延バッファである。また、５４０、５４１はブロック内で同一クロックツリー（同一のクロック制御セルから発生する）に接続されるフリップフロップであり、５５０は、５４０、５４１とは違うクロックツリーに接続されるフリップフロップである。５００はブロック、５０２は制御信号である。
【００２９】
すなわち、図８および図９では、ブロック５００内でクロックツリー調整用の遅延バッファ４２０、５２０、５２１をブロック入力直後に配置し、かつ遅延バッファ４２０、５２０、５２１の直後にクロック制御セル４１０、５１０、５１１を配置している。
ステップ２：ブロック単位でのレイアウトデータ作成時に、クロック制御セル４１０の出力段から各末端のゲート（主にフリップフロップ）に到達するまでの時間差（ブロック内スキュー）を設計許容範囲に抑えるために、クロック制御セル４１０の出力段に接続される負荷を考慮して、遅延バッファ４３０のサイズを決定する。これらの処理は一般にはツールにて処理可能である。図９においても同様であり、クロックツリーが異なるので、遅延バッファ５３０と遅延バッファ５３１には、一般的に違う遅延値が付与される。
【００３０】
ステップ３：フルチップでのレイアウトを実行する。その後、クロック発生部から、各ブロック内の末端のゲート（主にフリップフロップ）までのクロック遅延を測定する。ブロック内のクロック制御セル以降のスキューは調整済みであるから、ブロック間クロックスキュー調整用遅延バッファ４２０と、クロック制御セル４１０の置き換えをレイアウトデータ上で直接行い、クロック発生部からの遅延がもっとも大きいブロックへの遅延と等しくなるようにする。以上により、チップ内でのクロックスキューが調整できたことになる。
【００３１】
従来では、ブロック内でクロックの制御を行なおうとすると、ゲーテッドクロックの扱いとなり、ツールでは非常に扱いにくい設計フローであり、マニュアルでスキュー調整を行なうのは、実質的には不可能であった。しかし、本発明のフローによれば、クロック制御セルを、スキュー調整用のセルとして扱うことで、容易にレイアウトとして実現できることになった。
【００３２】
最終的なチップ内のブロック構成について、概略を図１０に示す。６００はチップ全体を示すプロセッサである。６１０、６２０、６４０はクロックを供給されるブロック、６３０はクロック発生部、６０１はクロック発生部６３０より出力されるクロック、６０２はブロック６１０より出力されるクロック制御信号、６１１はチップ内ブロックを大局的に停止するための制御信号生成回路、６２１は大局的なクロック制御を行なわず、ブロック単位のみの制御を行なう為のクロック制御セル、６２２はブロック内クロック制御信号を生成する回路、６２３はブロック内クロック制御信号である。６３１はクロックソースである。
【００３３】
本実施の形態ではクロック制御信号６０２を出力するのはクロック発生部６３０と異なるブロック６１０としたが、クロック発生部６３０から出力しても良い。更に本実施の形態では、局所的なクロック制御回路は６２２の一つだけであるが、各ブロックにあってもよいし、それぞれ複数個持っていても良い。
この例では制御信号生成回路６１１には、クロック制御セルを通過しないクロックが直接回路に入力されるが、このような場合は、特殊対応の遅延調整が必要である。
【００３４】
また、この例で示したように、同一ブロックであっても、制御単位が異なる場合は、それらの単位毎にクロック制御セルを用意しても良い。
【００３５】
【発明の効果】
請求項１記載のクロック制御装置によれば、高速で動作するプロセッサのクロック制御に関して、大局的制御と局所的制御を統一的に扱うことが可能なクロック制御セルを用意でき、それらを設計フローに組み入れることでタイミング設計が容易になる。またその結果、効率の良いクロック制御が実現でき、プロセッサの低消費電力化に大きく貢献する。
【図面の簡単な説明】
【図１】本発明の実施の形態のクロック制御セルを説明する回路図である。
【図２】本発明のクロック制御セルの別形態を示す回路図である。
【図３】本発明のクロック制御セル内の論理積ゲートの一方の入力が最速で立ち上がる場合のタイミングを示す波形図である。
【図４】クロック制御セル内の論理積ゲートの一方の入力が最遅で立ち上がる場合のタイミングを示す波形図である。
【図５】実施の形態における、ブロック内でのクロック制御セルの配置構成を示す説明図である。
【図６】実施の形態における、クロック制御セルによりクロック制御が行なわれる様子を各クロックの位相関係を明らかにして示したもので、制御信号がクロックのロウ区間で変化したときの波形図である。
【図７】実施の形態における、クロック制御セルによりクロック制御が行なわれる様子を各クロックの位相関係を明らかにして示したもので、制御信号がクロックのハイ区間で変化したときの説明図である。
【図８】実施の形態における、クロックスキュー調整のための基本構成を示す説明図である。
【図９】実施の形態における、ブロック内のクロック制御セルの配置構成と、クロックツリーの関係を示した説明図である。
【図１０】本発明の実施の形態によるクロック制御装置を用いた時のチップ全体構成を示す回路構成図である。
【図１１】従来例でのチップ内のクロック分配の様子を示す説明図である。
【図１２】従来例のプロセッサで低速動作時のクロック制御のタイミングを示す波形図である。
【図１３】従来例のプロセッサで高速動作時のクロック制御のタイミングを示す波形図である。
【符号の説明】
１００、２００  クロック制御セル
１０１、１０２、２０１、２０２  クロック制御信号
１０３、２０３  遅延バッファ通過後のクロック
１１０  論理和ゲート
１２０、２２０、２２１  ローレベルラッチ
１３０、２３０、２３１  論理反転ゲート
１４０、２４０  論理積ゲート
３１０  クロック（入力クロック）
３４０  遅延バッファ
６００  プロセッサ
６０１  クロック発生部出力のクロック
６０２  大局的クロック制御信号
６２３  局所的クロック制御信号
６２１  クロック制御セル
６３１  クロックソース
６１０、６２０、６４０  クロック供給を受けるブロック
６３０  クロック発生部
６１１  大局的クロック制御信号生成回路
６２２  局所的クロック制御信号生成回路
【図１】
0003779073.tif 000002
【図２】
0003779073.tif 000003
【図３】
0003779073.tif 000004
【図４】
0003779073.tif 000005
【図５】
0003779073.tif 000006
【図６】
0003779073.tif 000007
【図７】
0003779073.tif 000008
【図８】
0003779073.tif 000009
【図９】
0003779073.tif 000010
【図１０】
0003779073.tif 000011
【図１１】
0003779073.tif 000012
【図１２】
0003779073.tif 000013
【図１３】
0003779073.tif 000014