(57)【要約】【課題】  同期パイプライン・セグメントと、そのセグメントを含む集積回路（ＩＣ）を提供することにある。【解決手段】  このセグメントは、入力ステージと、出力ステージと、少なくとも１つの中間ステージとを含む。各ステージに関連するプレースホルダ・ラッチは、有効ステージ・データがそのステージに入っているかどうかを示す。ローカル・クロック・バッファは、対応するステージをゲート制御するローカル・クロックを提供する。入力ステージと出力ステージは通常非透過的であり、中間ステージは通常透過的である。データ項目は、入力ステージと出力ステージとの間をローカルに非同期式に通過し、非透過的にゲート制御された中間ステージによって分離される。【選択図】  図３
2007536798.tif 000002
【特許請求の範囲】
【請求項１】
グローバル・クロックによってクロック制御される同期パイプライン・セグメントであって、
入力ステージと、出力ステージと、少なくとも１つの中間ステージとを含む複数の順次パイプライン・ステージと、
それぞれのローカル・クロック・バッファが前記パイプライン・ステージのうちの対応するパイプライン・ステージに１つのローカル・クロックを提供し、前記ローカル・クロックのうちの対応するローカル・クロックに応答して、前記入力ステージおよび前記出力ステージが通常非透過的であり、前記少なくとも１つの中間ステージが通常透過的である、複数のローカル・クロック・バッファと、
前記複数のクロック・バッファのそれぞれにクロック選択制御を提供し、前記対応するローカル・クロックに応答して、前記パイプライン・ステージのそれぞれが透過的にゲート制御されるか、クロック制御されるか、または非透過的にゲート制御されるかを前記クロック選択制御が判定する、ローカル・クロック制御回路と、
を有する、同期パイプライン・セグメント。
【請求項２】
前記少なくとも１つの中間ステージが複数の中間ステージである、請求項１に記載の同期パイプライン・セグメント。
【請求項３】
前記複数の中間ステージのそれぞれが選択的にクロック制御されるかまたは非透過的にゲート制御され、前記パイプライン・セグメントをトラバースするデータ項目がローカルに非同期式に通過し、前記中間ステージのうちのクロック制御または非透過的にゲート制御された中間ステージによって分離される、請求項２に記載の同期パイプライン・セグメント。
【請求項４】
前記ローカル・クロック制御回路が複数のプレースホルダ・ラッチを有し、１つのデータ項目エッジが前記パイプライン・ステージのうちの対応するパイプライン・ステージにあるかどうかをそれぞれのプレースホルダ・ラッチが示す、請求項３に記載の同期パイプライン・セグメント。
【請求項５】
前記複数のプレースホルダ・ラッチのうちの１つまたは複数のプレースホルダ・ラッチの内容に応答して、前記ローカル・クロックのそれぞれが提供される、請求項４に記載の同期パイプライン・セグメント。
【請求項６】
前記プレースホルダ・ラッチのそれぞれがアップストリーム・ステージからデータ・エッジ・インジケータを受け取り、前記データ項目のそれぞれの前方エッジが前記データ・エッジ・インジケータによってローカルに示される、請求項５に記載の同期パイプライン・セグメント。
【請求項７】
前記複数の中間ステージのうちの１つに前記ローカル・クロックを提供する前記ローカル・クロック・バッファのそれぞれが、前記データ・エッジ・インジケータに応答して、少なくとも２つのクロック・ゲート制御インジケータを受け取り、前記複数の順次パイプライン・ステージのうちの少なくとも２つに提供される有効データの表示に応答して、前記複数の中間ステージのそれぞれが非透過的にクロック制御される、請求項６に記載の同期パイプライン・セグメント。
【請求項８】
前記クロック・バッファのうちの少なくとも１つに入力された前記データ・エッジ・インジケータのうちの少なくとも１つがダウンストリーム・プレースホルダ・ラッチへの入力である、請求項７に記載の同期パイプライン・セグメント。
【請求項９】
前記プレースホルダ・ラッチのうちの対応するプレースホルダ・ラッチへの入力上の有効データ表示に応答して、前記入力ステージおよび前記出力ステージのそれぞれが透過的にクロック制御される、請求項７に記載の同期パイプライン・セグメント。
【請求項１０】
前記複数の中間ステージが２つの中間ステージである、請求項９に記載の同期パイプライン・セグメント。
【請求項１１】
前記複数の順次パイプライン・ステージのそれぞれが、
【数１】
2007536798.tif 000005
という式によって記述される１組の関係に応答してクロック制御され、式中、前記プレースホルダ・ラッチのうちの対応するそれぞれのプレースホルダ・ラッチの内容はそれぞれＥ０、Ｔ１、Ｔ２、およびＥ３として示され、前記入力ステージに対応する前記プレースホルダ・ラッチに提供される前記データ・エッジ・インジケータはＥ−１として示される、請求項１０に記載の同期パイプライン・セグメント。
【請求項１２】
前記複数の中間ステージが３つまたはそれ以上の中間ステージである、請求項９に記載の同期パイプライン・セグメント。
【請求項１３】
前記複数の中間ステージのそれぞれが、
【数２】
2007536798.tif 000006
という式によって記述される１組の関係に応答してクロック制御され、式中、ｇｔは対応する中間ステージへのゲート透過信号であり、ｇｔ＿Ｌ２は前記対応する中間ステージからのゲート透過信号であり、ｐｒｅｄｉｃｔｏｒは前記パイプライン・セグメント内のアップストリーム・データ項目の存在を示す、請求項１２に記載の同期パイプライン・セグメント。
【請求項１４】
前記複数のパイプライン・ステージのうちの少なくとも２つの隣接ステージを分離するロジックをさらに有する、請求項９に記載の同期パイプライン・セグメント。
【請求項１５】
前記複数のパイプライン・ステージのそれぞれがマスタ・スレーブ・ステージである、請求項１に記載の同期パイプライン・セグメント。
【請求項１６】
前記複数のパイプライン・ステージのそれぞれがパルス出力モード・ステージである、請求項１に記載の同期パイプライン・セグメント。
【請求項１７】
複数の論理経路を含み、前記複数の論理経路のうちの少なくとも１つが同期パイプライン・セグメントを含み、前記同期パイプライン・セグメントが、
通常非透過的である入力ステージと、
通常非透過的である出力ステージと、
通常透過的である少なくとも１つの中間ステージと、
有効データが対応するステージに提供されるかどうかを示し、有効ステージ・データが前記対応するステージ内にあるかどうかを示すデータ・エッジ・インジケータをそれぞれのプレースホルダ・ラッチが受け取る、複数のプレースホルダ・ラッチと、
グローバル・クロックに応答して、前記対応するステージのそれぞれを選択的にゲート制御する１つのローカル・クロックを提供し、前記入力ステージおよび前記出力ステージが選択的に透過的にゲート制御され、前記少なくとも１つの中間ステージのそれぞれが選択的に非透過的にゲート制御され、データ項目が前記少なくとも１つの中間ステージのそれぞれによりローカルに非同期式に通過する、ローカル・クロック・バッファと、
を有する、集積回路（ＩＣ）。
【請求項１８】
前記少なくとも１つの中間ステージが複数の中間ステージであり、前記同期パイプライン・セグメントをトラバースするデータ項目が前記複数の中間ステージのうちの非透過的にゲート制御された中間ステージによって分離される、請求項１７に記載のＩＣ。
【請求項１９】
前記データ・エッジ・インジケータが、前記同期パイプライン・セグメントをトラバースする前記データ項目のエッジを示す、請求項１８に記載のＩＣ。
【請求項２０】
前記複数の中間ステージのそれぞれをゲート制御する前記ローカル・クロック・バッファのそれぞれが、前記複数のプレースホルダ・ラッチのうちの１つまたは複数に提供される前記データ・エッジ・インジケータのうちの複数を受け取り、少なくとも２つのステージに提供される有効データの表示に応答して、前記複数の中間ステージのうちの対応するそれぞれの中間ステージが非透過的にゲート制御される、請求項１９に記載のＩＣ。
【請求項２１】
前記プレースホルダ・ラッチのうちの対応するプレースホルダ・ラッチに提供される有効データ表示に応答して、前記入力ステージおよび前記出力ステージのそれぞれが透過的にゲート制御される、請求項２０に記載のＩＣ。
【請求項２２】
前記クロック・バッファのうちの少なくとも１つが、ダウンストリーム・プレースホルダ・ラッチに提供される前記データ・エッジ・インジケータのうちの１つを受け取る、請求項２１に記載のＩＣ。
【請求項２３】
前記複数の中間ステージが２つの中間ステージであり、前記ローカル・クロックのそれぞれが、
【数３】
2007536798.tif 000007
という式によって記述される１組の関係を満足し、式中、前記プレースホルダ・ラッチのうちの対応するそれぞれのプレースホルダ・ラッチの内容はそれぞれＥ０、Ｔ１、Ｔ２、およびＥ３として示され、前記入力ステージに対応する前記プレースホルダ・ラッチに提供される前記データ・エッジ・インジケータはＥ−１として示される、請求項２１に記載のＩＣ。
【請求項２４】
前記複数のパイプライン・ステージのそれぞれがマスタ・スレーブ・ステージである、請求項１７に記載のＩＣ。
【請求項２５】
前記複数のパイプライン・ステージのそれぞれがパルス出力モード・ステージである、請求項１７に記載のＩＣ。
【請求項２６】
前記ＩＣがマイクロプロセッサである、請求項１７に記載のＩＣ。
【請求項２７】
パイプライン・セグメント内のアップストリーム・データ項目の存在を示す予測子信号（ｐｒｅｄｉｃｔｏｒ）と組み合わせて、対応する中間ステージへのゲート透過信号（ｇｔ）および前記対応する中間ステージからのゲート透過信号（ｇｔ＿Ｌ２）に応答して、通常透過的なパイプライン・ステージを選択的にゲート制御するためのローカル・クロック・バッファ（ＬＣＢ）。
【請求項２８】
gateT1 = NOT(validE-1 AND validE0)という式によって記述される関係にさらに応答して、少なくとも１つの通常透過的なパイプライン・ステージにローカル・クロックが提供され、式中、対応するプレースホルダ・ラッチの内容はＴ１として示され、Ｅ０として示され、入力ステージに対応するプレースホルダ・ラッチに提供されるデータ・エッジ・インジケータはＥ−１として示される、通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項２７に記載のＬＣＢ。
【請求項２９】
【数４】
2007536798.tif 000008
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージにローカル・クロックが提供される、グローバル・クロック（ｇｌｏｂａｌ＿ｃｌｏｃｋ）によってクロック制御されるマスタ・スレーブ・パイプライン内で通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項２８に記載のＬＣＢ。
【請求項３０】
【数５】
2007536798.tif 000009
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージにローカル・クロックが提供される、グローバル・クロック（ｇｌｏｂａｌ＿ｃｌｏｃｋ）によってクロック制御されるパルス出力パイプライン内で通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項２８に記載のＬＣＢ。
【請求項３１】
【数６】
2007536798.tif 000010
という式によって記述される関係にさらに応答して、少なくとも１つの通常透過的なパイプライン・ステージにローカル・クロックが提供され、式中、対応するプレースホルダ・ラッチの内容はＴ２として示され、アップストリーム・ステージに対応するプレースホルダ・ラッチの内容はＴ１として示され、Ｅ０として示され、入力ステージに対応するアップストリーム・プレースホルダ・ラッチに提供されるデータ・エッジ・インジケータはＥ−１として示される、通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項２７に記載のＬＣＢ。
【請求項３２】
【数７】
2007536798.tif 000011
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージにローカル・クロックが提供される、グローバル・クロック（ｇｌｏｂａｌ＿ｃｌｏｃｋ）によってクロック制御されるマスタ・スレーブ・パイプライン内で通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項３１に記載のＬＣＢ。
【請求項３３】
【数８】
2007536798.tif 000012
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージにローカル・クロックが提供される、グローバル・クロック（ｇｌｏｂａｌ＿ｃｌｏｃｋ）によってクロック制御されるパルス出力パイプライン内で通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項３１に記載のＬＣＢ。
【請求項３４】
【数９】
2007536798.tif 000013
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージに前記ローカル・クロックがさらに提供される、通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項２７に記載のＬＣＢ。
【請求項３５】
【数１０】
2007536798.tif 000014
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージに前記ローカル・クロックがさらに提供される、通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項３４に記載のＬＣＢ。
【請求項３６】
前記通常透過的なパイプライン・ステージ内で透過モードと非透過モードの両方をサポートし、
【数１１】
2007536798.tif 000015
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージにローカル・クロックが提供される、グローバル・クロック（ｇｌｏｂａｌ＿ｃｌｏｃｋ）によってクロック制御されるマスタ・スレーブ・パイプライン内で通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項３５に記載のＬＣＢ。
【請求項３７】
前記通常透過的なパイプライン・ステージ内で透過モードと非透過モードの両方をサポートし、
【数１２】
2007536798.tif 000016
という式によって記述される１組の関係にさらに応答して、前記通常透過的なパイプライン・ステージにローカル・クロックが提供される、グローバル・クロック（ｇｌｏｂａｌ＿ｃｌｏｃｋ）によってクロック制御されるマスタ・スレーブ・パイプライン内で通常透過的なパイプライン・ステージを選択的にゲート制御するための請求項３５に記載のＬＣＢ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、同期集積回路に関し、詳細には、同期パイプライン回路内の電力消費量を削減することに関する。
【背景技術】
【０００２】
関連出願の相互参照
本発明は、２００２年１０月２日に出願され、本発明の譲受人に譲渡され、Ｈａｎｓ  Ｍ．  Ｊａｃｏｂｓｏｎによる「ＩＮＴＥＲＬＯＣＫＥＤ  ＳＹＮＣＨＲＯＮＯＵＳ  ＰＩＰＥＬＩＮＥ  ＣＬＯＣＫ  ＧＡＴＩＮＧ」という発明の名称の米国特許出願第１０／２６２７６９号に関連するものである。
【０００３】
半導体技術およびチップ製造の進歩の結果、オンチップ・クロック周波数、単一チップ上のトランジスタの数、およびダイ・サイズそのものは着実に増加したが、それに対応してチップ供給電圧は低下した。一般に、所与のクロック制御ユニット（clocked unit）（たとえば、ラッチ、レジスタ、レジスタ・ファイル、機能ユニットなど）によって消費される電力は、そのユニット内のスイッチングの周波数（frequency of switching）に対して直線的に増加する。したがって、チップ供給電圧が低下したにもかかわらず、チップ電力消費量も増加している。
【０００４】
チップ電力がこのように増加したことによる当然の結果として、チップおよびシステム・レベルの冷却およびパッケージ化のコストが上昇している。容認できないレベルまでパフォーマンスを低下させずに、正味エネルギ消費量を削減して電池寿命を延ばすことは、ローエンド・システム（たとえば、ハンドヘルド・システム、ポータブル・システム、およびモバイル・システム）にとって非常に重要なことである。現行のマイクロプロセッサ設計では、消費電力の７０％以上はクロックのみに帰因するものである。典型的な同期設計では、この電力の９０％以上がローカル・クロック・スプリッタ／ドライバおよびラッチで消費される。
【０００５】
基本的に、同期設計は、一般にパイプラインと呼ばれるものの中に複数のレジスタ・ステージを含んでいる。レジスタ・ステージまたはラッチは、それがその入力のデータ値をその出力に即座に渡すときに、通常、透過的（transparent）といわれ、同じステージまたはラッチは、データがそれにラッチされるときに、通常、非透過的（opaque）といわれ、すなわち、非透過的ラッチは、その入力がその出力に渡されないように、その入力にかかわらず、その出力を一定に保持している。したがって、ゲート未制御のクロック（ungated clock）によってクロック制御されるマスタ／スレーブ・ラッチに基づく典型的なパイプラインでは、ステージは通常非透過的であり、交互のステージ（alternate stages）は交互のクロック状態（alternateclock states）で透過的にパルス出力され、たとえば、クロックがハイであるときは偶数ステージが非透過的に保持され、奇数ステージが透過的にパルス出力され、クロックがローであるときはその逆になる。クロック・ゲート制御（clock gating）は、クロックを選択的にオン／オフし、マイクロプロセッサなどの同期設計における電力損を削減するために使用されている。マスタ・ラッチおよびスレーブ・ラッチは実際には１つのパイプラインの別々のラッチ・ステージであるが、典型的には、ひとまとめにして、１つのステージとして対になっているといわれる。
【０００６】
パイプラインの単純な例は、先入れ先出し（ＦＩＦＯ：first-in first-out）レジスタである。より複雑なパイプラインの例では、ロジックにより、ステージのうちのいくつかまたはすべて、たとえば、乗算／加算累算（ＭＡＡＣ：Multiply/Add-Accumulate）ユニットまたはその他の現況技術のパイプライン・マイクロプロセッサの機能ユニットを分離することができる。ＦＩＦＯは、Ｍステージ×Ｎビットのレジスタ・ファイルであり、Ｍ個のステージのそれぞれはＮ個のラッチを有するレジスタを含み、各データ・ビットごとに少なくとも１つのラッチを含む。通常、すべてのステージは、単一のグローバル・クロックによって同時にクロック制御され、各クロックによってあるステージから次のステージにデータ項目を渡す。入力環境からのＮビットのデータ項目は１つのクロック・サイクルで第１のステージに入り、実質的に同じＮビットのワードが、Ｍクロック・サイクル後に出力環境で不変の状態で最後のステージから出る。したがって、ＦＩＦＯは、Ｍクロック・サイクル遅延として使用することができる。各クロック・サイクル（たとえば、１つおきのクロック立ち上がり（rising clock edge）またはクロック立ち下がり（fallingclock edge））で、ＦＩＦＯ内の各Ｎビット・ワードがステージを１つずつ進む。クロック・ゲート制御がない場合、すべてのＦＩＦＯステージはすべてのサイクルでクロック制御される。粗いクロック・ゲート制御の場合、その期間中のＦＩＦＯ電力消費量を削減／排除するために、ＦＩＦＯが空であるときにクロックをオフにゲート制御することができる。よりきめ細かいクロック・ゲート制御の場合、たとえば、ＦＩＦＯが空ではないときでも電力を節約するために、有効データが特定のステージに入っていないときに個々のＦＩＦＯステージをオフにゲート制御することができる。
【０００７】
きめ細かいクロック・ゲート制御技法は、たとえば、パイプライン内のステージに対し、機能ブロック内で選択的にローカル・クロックをオフにゲート制御することにより、機能ユニット・クロックを選択的に停止する。たとえば、２００２年１０月２日に出願され、本発明の譲受人に譲渡され、参照により本明細書に組み込まれる、Ｈａｎｓ  Ｍ．  Ｊａｃｏｂｓｏｎによる「ＩＮＴＥＲＬＯＣＫＥＤ  ＳＹＮＣＨＲＯＮＯＵＳ  ＰＩＰＥＬＩＮＥ  ＣＬＯＣＫ  ＧＡＴＩＮＧ」という発明の名称の米国特許出願第１０／２６２７６９号を参照されたい。これらのクロック・ゲート制御技法はパイプライン内で生成されたクロック・パルスの数を削減することができるが、ローカル・クロックは依然として、隣接するパイプライン・ステージのラッチによるデータ競合（data race）のリスクを最小限にするために、パイプラインを通って伝搬する各データ項目ごとに少なくとも１回ずつ各ステージごとにパルス出力される。
【０００８】
したがって、パイプラインの動作周波数（operationfrequency）を削減せずに、サイクルごとにパイプラインの現行状態に適合する同期パイプラインのための動的に選択されたラッチ・ステージ・クロック制御が必要である。
【特許文献１】米国特許出願第１０／２６２７６９号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の一目的は、同期設計におけるクロック電力を最小限にすることにある。
【００１０】
本発明の他の目的は、クロック・ゲート制御の柔軟性を増すことにある。
【００１１】
本発明のさらに他の目的は、パイプラインの動作周波数を削減せずに同期設計の電力を最小限にすることにある。
【課題を解決するための手段】
【００１２】
本発明は、同期パイプライン・セグメントと、そのセグメントを含む集積回路（ＩＣ）に関する。このセグメントは、入力ステージと、出力ステージと、少なくとも１つの中間ステージとを含む。各ステージに関連するプレースホルダ・ラッチは、有効ステージ・データがそのステージに入っているかどうかを示す。ローカル・クロック・バッファは、対応するステージをゲート制御するローカル・クロックを提供する。入力ステージと出力ステージは通常非透過的であり、中間ステージは通常透過的である。データ項目は、入力ステージと出力ステージとの間をローカルに非同期式に通過し、非透過的にゲート制御された中間ステージによって分離される。
【００１３】
上記その他の目的、態様、および利点は、図面に関連して、以下に示す本発明の好ましい一実施形態の詳細な説明からより十分に理解されるであろう。
【発明を実施するための最良の形態】
【００１４】
次に図面を参照すると、詳細には、図１〜図２は、典型的な従来技術のＮ×Ｍパイプライン・レジスタ・クロスセクション５０の一例を通って伝搬するデータと、それに対応するタイミング図を示している。この例では、Ｎは、デフォルトでは通常非透過的な５つのパイプライン・ステージ５２−１、５２−２、５２−３、５２−４、５２−５であり、Ｍは、特定の適用例に適した任意のレジスタ幅にすることができる。グローバル・クロック５４は、そこから各パイプライン・ステージ５２−１、５２−２、５２−３、５２−４、５２−５ごとにローカル・クロック５６−１、５６−２、５６−３、５６−４、５６−５が生成されるタイミング・エッジ（timing edge）を提供する。各ステージ５２−１、５２−２、５２−３、５２−４、５２−５は、ローカル・データ項目が（その後、非透過的な）ステージ５２−１、５２−２、５２−３、５２−４、５２−５を通って伝搬し、そのステージにラッチできるように、クロック制御される（透過的にパルス出力される）。データ項目は、透過的にそれぞれのステージ５２−１、５２−２、５２−３、５２−４、５２−５を一時的にパルス出力するローカル・クロック・パルス５６−１、５６−２、５６−３、５６−４、５６−５によってクロック制御されるパイプライン５０を通って伝搬する。データ項目が通過するための十分な時間の後、ステージ５２−１、５２−２、５２−３、５２−４、５２−５はその非透過状態に戻り、新しいアップストリーム・データ（upstream data）が到着する前にデータ項目をラッチし、それにより、潜在的なデータ競合を回避する。
【００１５】
したがって、この例では、第１のステージ５２−１用のローカル・クロック５６−１がハイでパルス出力されると、第１のデータ項目（Ａ）がパイプライン５０に入る。本明細書では個々の項目がパイプラインをトラバースするものとして記載されているが、各項目は並列にパイプラインをトラバースする関連データまたは無関連データの集合である場合もあることに留意されたい。第１のデータ項目がパイプライン５０を通って伝搬すると、ステージは通常非透過的に保持されるので、各後続ステージ５２−２、５２−３、５２−４、５２−５はデータ項目を進めるために透過的にパルス出力される。第１のステージ５２−１用のローカル・クロック５６−１がもう一度ハイでパルス出力されると、第２のデータ項目（Ｂ）がパイプライン５０に入る。その後、第２のデータ項目もパイプライン５０を通って伝搬し、この場合も、ステージは通常非透過的に保持されるので、各後続ステージ５２−２、５２−３、５２−４、５２−５はデータ項目を進めるために透過的にパルス出力される。したがって、ステージを通常非透過的に保持すると、パイプライン５０をトラバースする各データ項目がダウンストリーム・データ項目（downstream data item）を追い越す（overtake）のを防止し、ダウンストリーム競合状態を引き起こす。保守的ではあるが、この悲観的なクロック制御手法では、ダウンストリームに競合状態の可能性が存在するかどうかにかかわらず、各ステージ５２−１、５２−２、５２−３、５２−４、５２−５の各データ項目ごとにクロック・パルスを必要とする。対照的に、以下に示されているように、本発明は、この悲観的なクロック制御手法に必要な各データ項目ごとの各ステージでの冗長クロック・パルスを回避する。
【００１６】
本発明の好ましい一実施形態によれば、内部または中間パイプライン・セグメント・ステージはデフォルトでは通常透過的であり、すなわち、ラッチ・ステージは透過クロック・ゲート制御モードすなわち透過モードになる。通常透過的なステージ同士のデータ競合は、透過的なパイプラインを通って同時に伝搬する各対のデータ項目間のステージを非透過的にゲート制御することにより回避される。したがって、複数のデータ項目の場合、その非透過状態にゲート制御されるステージが各対を分離し、すなわち、通常透過的なステージが一時的にその非透過モードにゲート制御される。着信アップストリーム・データ項目が非透過的なステージに到達したときに、アップストリーム・データ項目がそれを通って伝搬できるようにするためにそのステージが１クロック・サイクルの間、クロック制御されるように、ステージを非クロック・ゲート制御またはクロック制御モードにすることもできる。一般に、透過的なパイプライン・ステージは、透過モード、非透過モード、およびクロック制御モードという３通りのモードで動作することができる。以下に記載するように、ラッチまたはステージをゲート制御するということは、それぞれのラッチまたはステージを切り替える、すなわち、透過的から非透過的にまたはその逆に切り替えるためのローカル・クロック・レベルを提供することを指す。さらに、１つまたは２つの中間ステージを有する短いステージ・パイプラインの場合、動作モードの数は、クロック制御と透過という２つに簡略化することができる。
【００１７】
図３は、本発明による好ましい一実施形態のＮ×Ｍパイプライン・クロスセクション１００の一例を示しており、この例ではＮ＝ｉ＋３である。Ｎステージ・パイプライン１００は、入力ステージ１０２−０と、中間ステージ１０２−１、１０２−２、・・・、１０２−ｉ、１０２−（ｉ＋１）と、出力ステージ１０２−（ｉ＋２）とを含む。内部または中間ステージ１０２−１、１０２−２、・・・、１０２−ｉ、１０２−（ｉ＋１）のそれぞれは、図１および図２の上記の従来技術のパイプライン・レジスタ５０の例とは異なり、それぞれの中間ステージ１０２−１、１０２−２、・・・、１０２−ｉ、１０２−（ｉ＋１）を通常透過的に保持し、選択的にゲート制御された状態または非透過的にパルス出力された状態に保持するローカル・クロック１０６−１、１０６−２、・・・、１０６−ｉ、１０６−（ｉ＋１）を生成するローカル・クロック制御ロジック１０４−１、１０４−２、・・・、１０４−ｉ、１０４−（ｉ＋１）を含む。さらに、各パイプライン・ステージ１０２−０、１０２−１、１０２−２、・・・、１０２−ｉ、１０２−（ｉ＋１）、１０２−（ｉ＋２）は、それがパイプライン１００を通って伝搬するときに各データ項目の前方またはダウンストリーム・エッジを追跡する有効ステージ・データ表示を対応するプレースホルダ・ラッチ１０８−０、１０８−１、１０８−２、・・・、１０８−ｉ、１０８−（ｉ＋１）、１０８−（ｉ＋２）内に含んでいる。このようなダウンストリーム・エッジをラッチすることにより、着信データ項目は、ラッチされたダウンストリーム・エッジを追い越して、それに干渉することなしに、アップストリーム・ラッチを通って自由に伝搬することができる。したがって、このようにラッチされたダウンストリーム・エッジは、好ましいパイプライン・セグメントを順次トラバースする各対のデータ項目を分離する。ステージ１０２−０、１０２−１、１０２−２、・・・、１０２−ｉ、１０２−（ｉ＋１）、および１０２−（ｉ＋２）は、マスタ／スレーブ・ステージまたはパルス出力モード・ステージを含むがこれに限定されない、任意の適切なラッチ・レジスタ・ステージにすることができる。
【００１８】
中間ステージ・ローカル・クロック制御ロジック、たとえば、１０４−２は、直前のステージ、この例では１０４−１からデータ有効表示１１０および予測子（predictor）信号１１２を受け取る。ステージを透過的に保持する（ｇｔ）かまたはそれを非透過的にゲート制御する（ｇｏ）際に現行ステージがローカル・クロック・バッファ１２０をゲート制御するために、データ有効表示１１０および予測子信号１１２は、論理ゲート１１４、１１６内でステージ透過表示（ｇｔ′）１１８と結合される。この特定の例では、そのステージが現在透過的であり、あるデータ項目のダウンストリーム・エッジが、そのステージからのプレースホルダ・ラッチによって示される通り、すぐ上流のステージ内にないか、またはすぐ上流の予測子信号、たとえば、１１２からの予測子信号が、アップストリーム・データ項目がパイプライン・セグメント１００内にあることを示していない場合、そのステージは透過的にゲート制御される。さらに、現行ステージからの予測子信号１２４を生成するために、データ有効表示１１０および予測子信号１１２は論理ゲート１２２内でステージ透過表示１１８と結合される。データ項目が直前のステージ内にあるかまたは現行ステージが透過的であることを着信データ有効表示１１０が示すか、あるいはデータ項目が上流のパイプライン・セグメント１００に入ったことを着信予測子信号、たとえば、１１２が示す場合、予測子信号１２４は、アップストリーム・データ項目がパイプライン内にあることを示す。一般に、中間パイプライン・ステージ１０２−ｉのための動作モードは、以下の式を満足するロジック１０６−ｉによって選択される。
【００１９】
【数１】
2007536798.tif 000003
式中、gt' = gt_L2であり、predictor[Ti]はｉ番目のステージに対する予測子信号１２４である。
【００２０】
図４は、Ｎステージ・パイプライン内の通常透過的な中間マスタ／スレーブ・ステージ、たとえば、ステージ１０４−２をクロック制御またはゲート制御するための適切な２フェーズ・ローカル・クロック・バッファ１２０の一例を示しており、この場合、Ｎ＞２であり、すなわち、このパイプラインは、図３のセグメント１００のように、１つまたは複数の中間ステージを含む。この例では、透過選択信号ｇｔは、インバータ１２００を介してマスタ・ラッチすなわちラッチ１２０２に提供される。マスタ・ラッチ１２０２は、スレーブ・ラッチ１２０４と対になり、第２のマスタ・ラッチ１２０６と並列になっている。グローバル・クロックは、ラッチ１２０２、１２０４、１２０６をクロック制御する１対の直列接続のインバータ１２０８、１２１０によって反転される。マスタ・ラッチ１２０２、１２０６の出力は、ＮＡＮＤゲート１２１２でインバータ１２０８からのグローバル・クロックとＮＡＮＤが取られる。スレーブ・ラッチ１２０４の出力は、ＮＡＮＤゲート１２１６で非透過選択ｇｏとＮＡＮＤが取られ、ＮＡＮＤゲート１２１４でグローバル・クロックとＮＡＮＤが取られる。ＮＡＮＤゲート１２１４の出力は、ＮＡＮＤゲート１２１８でマスタ・ラッチ１２０６の出力とＮＡＮＤが取られる。インバータ１２２０は、正しいスレーブ・クロック出力極性を提供する。１対の直列接続のインバータ１２２２、１２２４は、マスタ・クロック遅延とスレーブ・クロック遅延を突き合わせ、２つの出力のエッジを緊密に結合する。ステージ透過出力ｇｔ′は、スレーブ１２０４の出力でインバータ（図示せず）から提供することができる。
【００２１】
したがって、クロック・ブロック１２０は透過モードのためにゲート制御されるが、スレーブ・クロック・ロジックは、非透過ゲート制御信号に関するどのような変化にも敏感である。好ましくは、スレーブ・クロック・ロジック全体にわたる伝搬グリッチおよびそれに対応する余分なクロック電力消費を回避するために、マスタ・ラッチ１２０６の出力は透過ゲート制御モードの間、グリッチを発生してはならない。アサートされると、透過ゲート制御信号は、強制的に非透過ゲート制御信号を安定したハイの値にする。したがって、透過ゲート制御信号がアサート解除された後、１クロック・サイクルの間、非透過ゲート制御信号に関する変化が遅延される。Ｎステージ透過的パイプラインの場合、非透過ゲート制御モードに切り替わる前に、ステージは透過モードから少なくとも１つのクロック制御モード・サイクルに切り替わるので、これは容認できるものである。
【００２２】
任意の特定のパイプライン・セグメント１００のための入力および出力環境については、２つの主要な動作上の制約が存在する。第一に、後続の有効データ項目（Ｂ）が到着するまで、各アップストリーム・データ項目（たとえば、命令Ａ）はアップストリーム環境入力（たとえば、入力ステージ１０２−０）で安定状態に保持される。第二に、出力環境のダウンストリーム出力ステージには有効データのみがラッチされる。各データ項目がパイプライン１００に入ると、それは、他のダウンストリーム・ラッチ・データ項目を検出するまで、アップストリーム・ステージにラッチされ、パイプライン・セグメントをローカルで非同期式に伝搬する。したがって、非透過的にゲート制御され、そのラッチ項目に関するローカル非同期伝搬を発生させるアップストリーム境界と、アップストリーム・データ項目のローカル非同期伝搬のためのダウンストリーム境界とを提供する、パイプライン・ラッチのうちの１つにパイプライン内の各データ項目がラッチされる。
【００２３】
特に、中間ステージ、すなわち、この例では中間ステージ１０２−１、１０２−２、・・・、１０２−ｉ、１０２−（ｉ＋１）は、通常透過的なパイプライン・セグメントを形成する。末端ステージ１０２−０および１０２−（ｉ＋２）は、パイプライン１００のアップストリーム入力およびダウンストリーム出力を形成し、通常非透過的に動作する。プレースホルダ・ラッチ１０８−０、１０８−１、１０８−２、・・・、１０８−ｉ、１０８−（ｉ＋１）、１０８−（ｉ＋２）内の有効ステージ・データ・ビットは、パイプライン１００内の有効データの位置を示す。各プレースホルダ・ラッチ１０８−０、１０８−１、１０８−２、・・・、１０８−ｉ、１０８−（ｉ＋１）、１０８−（ｉ＋２）は、それに関連するステージが透過的に残されているかまたは非透過的に保持されているかにかかわらず、クロック・サイクルごとにクロック制御される。
【００２４】
図５は、この例では５つのステージ１３２−１、１３２−２、１３２−３、１３２−４、１３２−５である図６〜図１３の好ましい一実施形態のパイプライン・セグメント１３０をトラバースする２つのデータ項目に関するタイミング図の一例を示している。グローバル・クロック１３４はグローバル・タイミング基準を提供する。ステージ１３２−１、１３２−２、１３２−３、１３２−４、１３２−５のそれぞれは、グローバル・クロック１３４からローカルに導出されるローカル・クロック１３６−１、１３６−２、１３６−３、１３６−４、１３６−５によってクロック制御またはゲート制御される。最初は、図６に図示されている通り、パイプラインは空である。本発明の考察を容易にするために、図面に関しては、透過的ラッチ／ステージは点線で示され、非透過的ラッチ／ステージは実線で示されている。また、ダッシュ（−）は、無指定（don’t care）またはバブル（bubble）を示している。パイプラインをトラバースするデータ項目は英字で示され、小文字は短い経路またはローカル非同期伝搬（locally asynchronous propagation）を示している。また、大文字は長い経路またはステージごとに同期化された伝搬（stage by stage synchronized propagation）を示している。データ項目の取込み、すなわち、クロック・サイクルの終了時におけるデータ項目の取込みは、濃いクロス・ハッチによって示されている。太線は、有効ビットまたはデータ項目用の現行状態ホルダとして動作するラッチ／ステージを示している。
【００２５】
図７に図示されている第１のクロック・サイクルでは、データ項目Ａが第１のステージ１３２−１に入ると、その項目はローカル・クロック・パルス１３６−１によって取り込まれ、境界ステージ１３２−１が非透過的になったときに安定状態に保持される。その結果として、境界ステージ１３２−１は、データ項目Ａ用の状態ホルダになる。中間ステージ１３２−２、１３２−３、および１３２−４は通常、透過モードに保持される、すなわち、通常透過的に保持されるので、データ項目Ａはパイプライン１３０の透過的中間ステージを通って自由に伝搬することができる。第１のサイクルの終了時に、データ項目ＡのＭビットはいずれも、少なくとも、入力ステージ１３２−１の後のロジックを通り、中間ステージ１３２−２のレジスタを通って伝搬している。さらに、ステージ遅延は、個々のビット遅延に応じて３つの通常透過的な中間ステージ１３２−２、１３２−３、および１３２−４のそれぞれの各ビットごとに異なる可能性が高いので、いくつかのビットは他のビットより遠くまで伝搬する可能性があり、ことによると、出力ステージ１３２−５まで伝搬する可能性がある。しかし、有効ステージ・データ・ビットが到着するまで出力ステージ１３２−５は非透過的であるので、このような早期到着値は出力ステージ１３２−５にラッチされず、準安定性（metastability）が発生するリスクを回避する。したがって、この第１のクロック・サイクルの終了時には、第１のステージ１３２−１の出力はデータ項目Ａを有効に保持する。
【００２６】
図８に表されている第２のクロック・サイクルでは、データ項目Ａの新しいダウンストリーム位置を示すために、関連の有効ビットが第２のステージのプレースホルダ・ラッチに取り込まれている。しかし、いかなる有効データ項目もデータ項目Ａの直後に続いていないので、第１のステージ１３２−１はデータ項目Ａをラッチされた安定状態に保持し続ける。少なくともデータ項目が第１のステージ１３２−１にラッチされたままである限り、透過的な第２のステージ１３２−２の出力が一定かつ有効のままになるので、第２のステージ１３２−２は非透過的にゲート制御される必要はなく、したがって、第２のステージ１３２−２は透過的に保持される。また、この時点で他のデータ項目Ｂは入力境界ステージ１３２−１への新しい入力として提供される。
【００２７】
中間ステージ１３２−２、１３２−３、１３２−４が透過的な状態で着信データ項目Ｂが入力ステージ内にゲート制御された場合、アップストリーム・データ項目Ｂの部分（たとえば、ビット）は短い論理経路を通って移動し、個々のビットがより長い論理経路を通って移動するダウンストリーム・データ項目（たとえば、Ａ）を追い越す可能性がある。たとえば、Ｍビット×Ｍビットの乗算器の最下位ビットは、最上位ビットよりかなり短い経路遅延を有する。したがって、Ｍビットのそれぞれが異なるステージ論理経路深さを有する可能性があるので、２つの値を１つのデータ項目（Ｂ）として入力ステージ１３２−１内にゲート制御すると、中間ステージ１３２−２、１３２−３、１３２−４内で（部分積（partial product）Ａとの）競合を引き起こし、アップストリーム・データからのビットは偶発的にダウンストリーム・データを上書きする可能性がある。以前は、ステージを通常非透過的に保持し、各ステージのすべてのラッチを透過的にパルス出力し、ラッチ・ステージ間のデータ競合を回避するためにパイプラインを通過する各データ項目ごとに最低でも１回ずつそれぞれをクロック制御することによって、競合が回避されていた。好ましい一実施形態のパイプラインは、空のダウンストリーム・ステージを通って伝搬するデータ項目内で前方エッジを越える、取るに足らないデータ競合を無視し、さらに、追加のタイミング制約をパイプラインに課すことなく、特に新しいデータ項目がアップストリームに入ったときに前方ダウンストリーム有効ステージをラッチすることによって本当の潜在的な競合を回避する。さらに、通常非透過的なパイプラインで必要とされると思われるように、特定のステージ１３２−２、１３２−３、１３２−４、１３２−５に関するセットアップおよび保持時間要件にステージ論理遅延が準拠する場合、パイプライン１３０を通る長い経路および短い経路の遅延は、任意の長さにすることができる。
【００２８】
したがって、図９では、対応する有効ステージ・データ・ビットの設定と同時に、入力境界ステージ１３２−１に新しいデータ項目Ｂがラッチされたときに、第３のクロック・サイクルが始まる。しかし、プレースホルダの状態によってそこに示されている通り、データ項目Ａは中間ステージ１３２−３で現在有効であることが分かっているが、入力境界ステージ１３２−１はもはやデータ項目Ａを維持していない。したがって、どのステージにもラッチされていないので、データ項目Ａは瞬間的に完全に非同期かつ過渡的なものになる。ローカル・クロック１３６−３は、Ａを取り込み、安定状態に保持するために低下（drop）し、データ項目Ａに関する新しいアップストリーム境界を固定する。ローカル・クロック１３６−３がローの状態で、中間ステージ１３２−３は非透過的にゲート制御され、後続のクロック・サイクルで、データ項目Ｂがこの内部ステージ１３２−３に到達したことをステージ・データ有効データが示すまで、非透過状態のままになる。したがって、この第３のクロック・サイクルの終了時には、通常非透過的な入力境界ステージ１３２−１はデータ項目Ｂに関する状態ホルダになり、ゲート制御された非透過的中間ステージ１３２−３はデータ項目Ａに関する状態ホルダになる。中間ステージ１３２−２および１３２−４は透過状態のままになる。データ項目Ｂはステージ１３２−１と１３２−３との間のロジックを通って自由に伝搬することができ、データ項目Ａはステージ１３２−３と１３２−５との間のロジックを通って自由に伝搬することができ、すなわち、それぞれ透過的な中間ステージ１３２−２および１３２−４を通る短経路伝搬が可能である。
【００２９】
図１０に図示されている第４のクロック・サイクルでは、ステージは不変のままであり、すなわち、入力境界ステージ１３２−１および中間ステージ１３２−３はそれぞれデータ項目ＢおよびＡを保持して非透過状態のままであり、中間ステージ１３２−２および１３２−４は透過状態のままである。対応する有効ステージ・データ・ビットは、中間ステージ１３２−２および１３２−４に関連するプレースホルダ・ラッチまで、それぞれ１ステージずつ進む。その後、図１１に図示されている第５のクロック・サイクルでは、対応する各有効ステージ・データ・ビットは、データ項目Ｂ、Ａがそれぞれのダウンストリーム境界ステージ１３２−３および１３２−５に到達したことを示している。したがって、有効データはパイプライン出力ステージ１３２−５への入力で入手可能であり、そのステージは透過的にパルス出力され、データ項目Ａを取り込むために非透過状態に戻される。同時に、中間ラッチ１３２−３は透過モードに戻され、アップストリーム・データ項目Ｂを渡す。それぞれのプレースホルダ・ラッチ内の有効ステージ・データ・ビットは、データ項目Ｂが中間ステージ１３２−３内に存在することと、データ項目Ａが出力ステージ１３２−５で入手可能であることを示している。
【００３０】
その後、図１２に図示されている第６のクロック・サイクルでは、入力ステージ１３２−１にラッチされたデータ項目Ｂはパイプライン１３０内でローカルに非同期式に伝搬し、出力ステージ１３２−５はデータ項目Ａを保持し続ける。データ項目Ｂに対応する有効データ・ビットは、中間ステージ１３２−４内のプレースホルダ・ラッチにラッチされるので、パイプライン１３０を通ってその前進を続ける。最後に、データ項目Ａが出力ステージ１３２−５で停止されない場合、図１３に図示されている第７のクロック・サイクルでは、データ項目Ｂに関連する有効ビットが出力ステージ１３２−５に到達し、データ項目Ｂが出力ステージ１３２−５に到達したことを示す。出力ステージ１３２−５は透過的にパルス出力され、データ項目Ｂを取り込むために非透過状態に戻される。同時に、有効ステージ・データ・ビットはプレースホルダ・ラッチ内にラッチされ、データ項目Ｂが出力ステージ１３２−５で入手可能であることを示す。データ項目Ｂがパイプライン・セグメント１３０から出た後の次の後続クロック・サイクル（図示せず）では、パイプライン・セグメントは図６のように空であると見なすことができ、次のデータ項目（図示せず）がアップストリーム入力ステージ１３２−１に提示されるのを待つ。
【００３１】
概して、非透過状態ホルダ・ステージは、競合状態を回避するために、最適には、アップストリーム・データ項目がダウンストリーム・データ項目を上書きする可能性が存在する場合のみ、各アップストリーム・データ項目をダウンストリーム・データ項目から分離しなければならない。たとえば、循環パイプライン（図示せず）は、パイプライン内で循環する各データ項目Ａについて、少なくとも１つ、好ましくは１つのみの非透過状態ホルダ・ステージを含まなければならず、単一のデータ項目Ａの場合、非透過状態ホルダ・ステージはそのデータ項目をその末尾から分離する。非線形パイプライン・セグメントでは、データ項目は複数の状態ホルダ・ステージを有することができ、そのそれぞれがそのデータ項目の何らかの形式を保持する。状態ホルダ・ステージのいずれかが上書きされた場合、パイプラインのその部分のデータ項目のために新しい状態ホルダが設けられる。有利には、パイプラインを通って１対のデータ項目を同時に進めるために必要なステージのみがクロック制御されるので、各データ項目を進めるために各ステージをクロック制御する代わりに、データ競合を引き起こさずにステージごとのクロック制御が劇的に削減される。さらに、パイプライン・ステージを正しくゲート制御するために、比較的単純なロジックを使用することができる。
【００３２】
図１４は、通常非透過的な入力ステージ１４２−１と、通常透過的な２つの中間ステージ１４２−２、１４２−３と、通常非透過的な出力ステージ１４２−４とを有する、短い（２つの中間ステージ）パイプライン・セグメントの一例１４０に関する簡略実施例を示している。境界環境（入力または出力）データ・エッジ・インジケータは、Ｅ０およびＥ３として識別され、直前のセグメントからの境界データ・エッジ・インジケータはＥ−１として識別される。ステージ１４２−２、１４３−３に関する中間データ・エッジ・インジケータはそれぞれｖａｌｉｄT1およびｖａｌｉｄT2として識別される。中間パイプライン・ステージ１４２−２、１４２−３のそれぞれに関連するロジック１４４、１４６は、対応するステージがクロック制御モードに切り替わるべきかまたは透過状態のままでいるべきかを検出する。一般に、透過的なステージのうちの１つは、パイプラインの透過的なステージを通って同時に伝搬する２つのデータ項目を分離するためにクロック制御モードになっている。したがって、少なくとも２つのセグメント・プレースホルダ・ラッチに有効データ・ビットが提示されると、短いパイプライン・セグメント内の通常透過的な１つのステージはクロック制御されなければならない。したがって、この例の場合、ローカル・クロック・ロジック１４４、１４６と、インバータ１４８Ｉ、１４８Ｏは、各ステージで適切なクロック選択環境を提供し、すなわち、以下のようになる。
【００３３】
【数２】
2007536798.tif 000004
【００３４】
図面に表されているロジックは、例証のみのためのものであり、制限として意図されているわけではない。適切な同等のロジックまたは適切な制御であればどのようなものでも代用することができる。また、本明細書に示されている例のそれぞれでは、１つのセグメントに関する出力環境のステージ、たとえば、図３のセグメント１００のステージ１０２−（ｉ＋２）は、他のセグメントに関する入力環境の共通ステージ、たとえば、セグメント１４０内の１４２−１にすることができ、すなわち、ステージ１０２−（ｉ＋２）とステージ１４２−１は同じステージになる場合もある。
【００３５】
図１５〜図１６は、短い（２つの中間ステージ）パイプライン・セグメント、たとえば、図１４の１４０内の透過モードのクロック・ゲート制御をサポートする適切なローカル・クロック・バッファまたはローカル・クロック・ブロック（ＬＣＢ）の例を示している。図１５は、同一ブロックがまったく同じように表示されている図４の例１２０と実質的に同様の２フェーズ・クロック制御マスタ／スレーブ・パイプラインに関するクロック・ブロック・ロジック１５０を示している。この例では、単一のクロック・ゲート制御信号が透過信号（ｇｔ）および非透過信号（ｇｏ）に取って代わる。また、このクロック・ブロックは単一のマスタ・ラッチ１２０２を含むので、２入力ＮＡＮＤゲート１５２は、マスタ・ラッチ１２０２の出力と、インバータ１２０８からの反転グローバル・クロックとを結合する。マスタおよびスレーブ・ラッチ１２０２、１２０４は、ローカル・クロック上のグリッチを防止するためにクロック・ゲート制御信号をラッチする。マスタ１２０２とスレーブ１２０４の両方がローにラッチされると、両方の出力は透過性のためにハイ（論理１）に保持される。いずれか一方／両方がハイにラッチされると、グローバル・クロックはマスタおよびスレーブ・クロックとしてそのステージに移行し、マスタおよびスレーブ・ラッチを交互に非透過状態にする。
【００３６】
図１６は、パルスモード・パイプライン・ステージを駆動するためのパルス・クロック・ドライバ１６０を示しており、その場合、隣接するパイプライン・ステージ間のデータ競合を回避するためにステージは狭いパルスでクロック制御される。この例では、グローバル・クロックがインバータ１６２に提供される。インバータ１６２の出力は、直列インバータ遅延としての３つのインバータ１６４、１６６、１６８とＮＡＮＤゲート１７０とを含むパルス発生器への入力である。グローバル・クロックは、直列インバータ遅延によって遅延されて再反転され、その結果として、クロック・ブロックが非ゲート制御モードで動作する場合、ＮＡＮＤゲート１７０は、グローバル・クロックが立ち下がるたびに、３つのインバータ（１６４、１６６、１６８）分の長さのハイになるパルスを提供する。この例でも、単一のゲート信号がインバータ１７２を通ってラッチ１７４に提供され、それがパルス発生器からのクロック・パルスによってゲート制御される。ラッチ１７４の出力はＮＡＮＤゲート１７６内のパルス発生器からのクロック・パルスと結合される。ラッチ１７４がハイにラッチされると必ず、ＮＡＮＤゲート１７６によってパルス出力が提供される。したがって、透過モードでは、クロック・パルスの立ち下がりの直前に、クロック・ゲート制御信号がインバータ１７２に到着することができる。したがって、透過的なパイプライン・ステージでは、クロック・ゲート制御信号がパルスの終端に到着することができる。
【００３７】
パイプライン停止中に、停止されたパイプライン・セグメント、たとえば、マイクロプロセッサ内の実行ユニットは、停止状態が終了するまで、現行パイプライン・データ項目を保持する。たとえば、共用マイクロプロセッサ・バスへの同時書込みでは、実行ユニットが停止して、そのバスが使用可能になるまで待機することが必要になる可能性がある。このような停止中に、実行ユニットは、ダウンストリーム・データ項目をその出力ステージに保持し、アップストリーム・データ項目も停止しなければならない。このようなデータ保持は、選択的非透過モード・クロック・ゲート制御（すなわち、ステージを非透過モードにし、データをパイプライン内に保持すること）を使用するか、または出力を入力にフィードバックすることによるデータ再循環（data recirculation）により、たとえば、上述の通り、マルチプレクサにより、実施することができる。データ再循環は、クロック・ブロックがクロック制御モードおよび透過モードのみ、たとえば、図１４の２透過ステージ・パイプライン・セグメント１４０をサポートする場合に使用することができる。
【００３８】
図１７は、図１４の例１４０と実質的に同様の４つのステージ１８２−１、１８２−２、１８２−３、１８２−４を有し、ロジック・フォールディング（logic folding）１８４、１８６によって有効ステージ・データ信号上の最大負荷を削減し、さらに、その信号負荷をより均一に分散させる、短いパイプライン１８０の一例を示している。この例では、各プレースホルダ１８８−１、１８８−２、１８８−３、１８８−４の出力は、２以下のファンアウトを駆動する。フォールディングが可能である理由は、各データ項目がパイプラインの中間点を通過するときに、特定のデータ項目が現在存在するステージの代わりにその中間点にデータ項目を保持できることと、中間点にあるデータ項目が末端ステージに到達するのに要するものと同じかまたはそれより少ないクロック・サイクルで、パイプラインに入る任意の新しいデータ項目が入口点から中間点に伝搬することである。したがって、着信データ項目が中間点に伝搬すると、同時に、中間点に保持されているダウンストリーム・データ項目がパイプライン出力環境に伝搬する。特に、この例の折返し回顧ロジック（folded look behind logic）１８４、１８６は、アップストリームおよびダウンストリーム・パイプライン有効ステージ・データ信号に基づいて、ステージ１８２−１、１８２−２、１８２−３、１８２−４の範囲全体にわたるパイプラインの使用状況を判定する。
【００３９】
したがって、有利には、好ましい実施形態の折返し回顧ロジック（たとえば、１８４、１８６）は、いくつかのパイプライン・ステージにより有効ステージ・データ信号を配布することはなく、それは、さもなければ、回顧ロジック限界経路信号を作成する点まで信号伝搬を減速する可能性がある。フォールディングは、回顧制御ロジックに関する通常の配布遅延の懸念を改善しつつ、信号遅延を再配布し、各有効ステージ・データ信号が駆動しなければならないステージの数を削減するかまたは含むことができる。さらに、典型的な非折返しパイプラインでは、中間点の下流にあるラッチ・ステージは、中間点の上流にあるラッチ・ステージより頻繁にクロック制御される傾向がある。しかし、折返しパイプラインでは正反対が当てはまる。したがって、アップストリーム・ラッチ・ステージがダウンストリーム・ラッチ・ステージより少ないラッチを含むときにパイプライン・クロック電力をさらに削減するために、フォールディングを有利に使用することができる。
【００４０】
図１８〜図２０は、高周波乗算／加算累算（ＭＡＡＣ）ユニット２００と、ＭＡＡＣユニット２００に対して本発明の好ましい一実施形態による透過的なパイプライン方式を適用した場合の利点とを示している。この例では、図１８のＭＡＡＣ２００は、最終加算器を有する３２×３２固定小数点ブース・エンコード乗算器（fixed-point Booth encoded multiplier）である。図１９は、完全に非透過的なパイプライン方式と好ましい実施形態の透過的なパイプライン方式の場合の絶対クロック電力を比較する棒グラフの一例を示している。図２０は、通常透過的な中間ステージを有するＭＡＡＣユニット２００に関する絶対省電力極値（absolute power saving extreme）の一例を示している。ＭＡＡＣユニット２００は、乗算ステージ（multiply stage）２０８、２１０、２１２、２１４、２１６を通過する必要なしに加算命令が最終加算器（final adder）２０４、２０６に直接入ることができるようにする迂回経路（bypass path）２０２を含む。乗算累算命令は、転送経路（forwarding path）２１８により使用可能になる。ＭＡＡＣユニット２００は、７ステージのパイプライン２２０、２２２、２２４、２２６、２２８、２３０、２３２を含む。図１９および図２０に図示されている比較では、中間ステージ２２２、２２４、２２８、２３０は好ましい実施形態の例の場合に通常透過的であり、この好ましい実施形態の例は、すべてのステージ２２０、２２２、２２４、２２６、２２８、２３０、２３２が通常非透過的であって透過的にパルス出力される場合と比較される。制御は制御経路（control path）２３４で提供される。加算器迂回経路２０２、結果転送経路２１８、および制御経路２３４のそれぞれは、ラッチ２２２、２２４、２２８、および２３０が通常透過的であるか非透過的であるかにかかわらず非透過的であるステージ２３６、２３８、２４０、２４２、および２４４を含む。
【００４１】
図１９は、５つのデータ点についてクロック電力（clockpower）対スイッチ係数（switch factor）を比較する棒グラフを示し、各データ点の左側に通常非透過的な結果を示し、右側に好ましい実施形態の例を示している。この例の場合、最大相対クロック省電力（maximum relative clock power saving）は２０％というパイプライン利用率（pipeline utilization factor）（有効スイッチ係数（valid switching factor））のときに６０％でピークに達する。図２０は、データ入力スイッチ係数が曲線２５０で０％、曲線２５２で１００％であるときに透過的にクロック・ゲート制御されたパイプライン・ステージの省電力の絶対クロック省電力極値の比較を示しており、パイプラインの透過的なセグメント内の論理の深さ（logic depth）が増加した結果としてもたらされた最良および最悪の余分なグリッチ電力を示している。特に、最大絶対省電力は、５０％のパイプライン利用率のときに期待することができる。また、もたらされたグリッチ電力は、クロック省電力の１０％を上回るものになるとは予想されない。さらに、パイプライン利用率が増加すると、パイプライン内により多くのバックツーバック命令（back-to-back instruction）が存在し、より多くのパイプライン・ステージをクロック制御しなければならないので、パイプライン利用率が増加するにつれて、グリッチ電力は減少する。より多くのパイプライン・ステージがクロック制御されると、グリッチ電力は削減される。したがって、適度なグリッチ傾向を有するロジックの場合、透過的なパイプラインは常に、非透過的にクロック・ゲート制御されたパイプラインと同じくらい良好に機能するかまたはそれより良好に機能する。
【００４２】
したがって、有利には、透過的パイプライン方式は、動的クロック電力損を削減し、最適なクロック・ゲート制御を容易にする。透過的な中間パイプライン・ステージ内のデータ・レジスタは、通常、互いに干渉しないようにバックツーバック・データ項目を分離する場合のみ、クロック制御される。したがって、クロック電力は、クロック制御されないステージの場合に最小限になり、伝統的なパイプライン・クロック・ゲート制御技法より大幅に削減される。動的クロック電力損は、パイプライン利用率が２０〜６０％のときに４０〜６０％分、削減することができる。
【００４３】
また、緩和されたクロック制御要件により、たとえば、保持性の漏れ削減技法を使用して、十分長い期間の間、ローカル・クロックをゲート制御することによってローカル・クロック・ブロック（複数も可）を電源遮断することができる。任意選択で、追加のパイプライン・ステージ電力および遅延のコストが容認できる場合に、非透過的なパイプライン・ラッチのためにグリッチなしマルチプレクサ迂回経路を設けることもできる。しかし、透過的パイプライン方式は、マルチプレクサが少数で、分岐が少数またはまったくない線形パイプライン、とりわけ非常に高周波のパイプラインに特に適している。これは、より少ないデータ経路機能が１サイクルの結果を提供できるので、バブルは高周波マイクロプロセッサ・パイプラインの方がより一般的であるからである。線形パイプライン内のグリッチ電力の増加はかなり低く、典型的には、節約されたクロック電力の約１０％に制限することができる。この場合も、２０〜６０％の範囲内のパイプライン利用率が最も大きい省電力をもたらす。あるセグメントのすべてのステージをオフにゲート制御することにより、非常に多くのグリッチをもたらす可能性がある場合、または信号があるステージのはるか上流から発生するので有効ステージ・データ信号の到着がクロック・ゲート制御には遅すぎる可能性がある場合、パイプライン・ステージ（またはレジスタ）ラッチのサブセットを通常透過的なものとして選択することができる。
【００４４】
したがって、有利には、ステージは、パイプラインの動作周波数を低減せずに、サイクルごとにパイプラインの現行状態に動的に適合される。ラッチ・ステージは、パイプライン内の密接間隔のデータ項目同士を分離するために非透過的になり、さもなければ透過的になる。デフォルトでステージを透過的に保持することにより、時間（すなわち、クロック・サイクル）の点で十分に分離されたデータ項目は、ローカルで非同期であるが依然としてグローバルでは同期的なクロック・パルスなしにパイプラインを通って伝搬する。データ項目がパイプラインを通って伝搬するために必要なクロック・パルスの数がステージの数より少ない場合、通常透過的なステージはデータ競合を回避するためにのみ非透過的に切り替えられるので、削減された電力で複数のデータ項目が同時にパイプラインをトラバースすることができる。
【００４５】
好ましい諸実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の趣旨および範囲内の変更により本発明を実施できることを認識するであろう。
【図面の簡単な説明】
【００４６】
【図１】典型的な従来技術のＮ×Ｍパイプライン・レジスタ・クロスセクションの一例を通って伝搬するデータを示す図である。
【図２】図１に対応するタイミング図である。
【図３】好ましい一実施形態のＮ×Ｍパイプライン・クロスセクションの一例を示す図である。
【図４】Ｎステージ・パイプライン内の通常透過的な中間マスタおよびスレーブ・ステージをクロック制御するための適切な２フェーズ・ローカル・クロック・バッファの一例を示す図である。
【図５】好ましい一実施形態のパイプライン・セグメントをトラバースする２つのデータ項目に関するタイミング図の一例を示す図である。
【図６】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図７】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図８】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図９】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図１０】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図１１】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図１２】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図１３】好ましい一実施形態のパイプライン・セグメントの５つのステージをトラバースする２つのデータ項目を示す図である。
【図１４】通常非透過的な入力ステージと、通常透過的な２つの中間ステージと、通常非透過的な出力ステージとを有する、短い（２つの中間ステージ）パイプライン・セグメントの一例に関する簡略動作を示す図である。
【図１５】短い（２つの中間ステージ）パイプライン・セグメント内の透過モードのクロック・ゲート制御をサポートする適切なローカル・クロック・ブロック（ＬＣＢ）の例を示す図である。
【図１６】短い（２つの中間ステージ）パイプライン・セグメント内の透過モードのクロック・ゲート制御をサポートする適切なローカル・クロック・ブロック（ＬＣＢ）の例を示す図である。
【図１７】４つのステージを有し、ロジック・フォールディングによって有効ステージ・データ信号上の最大負荷を削減し、その信号負荷を均一に分散させる、短いパイプラインの一例を示す図である。
【図１８】高周波乗算／加算累算（ＭＡＡＣ）ユニットを示す図である。
【図１９】透過的なパイプライン方式をＭＡＡＣユニットに適用した場合と通常非透過的なパイプライン方式をＭＡＡＣユニットに適用した場合の比較を示す図である。
【図２０】透過的なパイプライン方式をＭＡＡＣユニットに適用した場合と通常非透過的なパイプライン方式をＭＡＡＣユニットに適用した場合の比較を示す図である。
【図１】
2007536798.tif 000017
【図２】
2007536798.tif 000018
【図３】
2007536798.tif 000019
【図４】
2007536798.tif 000020
【図５】
2007536798.tif 000021
【図６】
2007536798.tif 000022
【図７】
2007536798.tif 000023
【図８】
2007536798.tif 000024
【図９】
2007536798.tif 000025
【図１０】
2007536798.tif 000026
【図１１】
2007536798.tif 000027
【図１２】
2007536798.tif 000028
【図１３】
2007536798.tif 000029
【図１４】
2007536798.tif 000030
【図１５】
2007536798.tif 000031
【図１６】
2007536798.tif 000032
【図１７】
2007536798.tif 000033
【図１８】
2007536798.tif 000034
【図１９】
2007536798.tif 000035
【図２０】
2007536798.tif 000036
【国際調査報告】
2007536798.tif 000037