
集積回路設計において、ダイナミックロジック(またはクロックドロジックとも呼ばれる)は、組み合わせ論理回路、特に金属酸化膜半導体(MOS)技術で実装される回路の設計手法です。これは、浮遊容量とゲート容量に情報を一時的に保存することで、 いわゆるスタティックロジックと区別されます。[ 1 ] 1970年代に普及し、近年では高速デジタル電子機器、特に中央処理装置(CPU)の設計で再び注目を集めています。ダイナミックロジック回路は通常、スタティックロジック回路よりも高速で、必要な表面積も小さくなりますが、設計はより困難です。ダイナミックロジックはスタティックロジックよりも電圧遷移の平均レートが高いですが[ 2 ] 、遷移する容量負荷は小さいため[ 3 ] 、さまざまなトレードオフに応じて、ダイナミックロジックの全体的な消費電力は高くなる場合も低くなる場合もあります。特定のロジックファミリについて言及する場合、通常はダイナミックという形容詞で設計手法を区別できます。たとえば、ダイナミックCMOS [ 4 ]やダイナミックSOI設計などです。 [ 2 ]
動的論理は、容量上の電圧による動的状態記憶の使用に加えて、組み合わせ論理の実装においてクロック信号を使用するという点で、いわゆる静的論理と区別されます。クロック信号の通常の用途は、順序論理回路における遷移の同期です。組み合わせ論理のほとんどの実装では、クロック信号は必要ありません。組み合わせ回路を指すために使用される静的/動的という用語は、静的RAMと動的RAMなど、メモリデバイスを区別するために使用される形容詞の使用に関連しています。動的RAMは、定期的にリフレッシュする必要がある容量上の電圧として状態を動的に記憶します。しかし、使用方法にも違いがあります。動的論理と静的記憶を備えたシステムでは、クロックを適切な位相で停止できます。[ 5 ]
静的ロジックと動的ロジックの最大の違いは、動的ロジックではクロック信号を使用して組み合わせロジックを評価する点です。静的ロジックと呼ばれるほとんどのタイプのロジック設計では、出力をハイまたはローに駆動する何らかのメカニズムが常に存在します。TTLや従来のCMOSなど、多くの一般的なロジックスタイルでは、この原理は、出力と電源電圧またはグランドの間に常に低インピーダンスのDCパスが存在するという記述として言い換えることができます。補足として、トライステートバッファなどの高インピーダンス出力の場合は、もちろんこの定義に例外があります。ただし、このような場合でも、回路はより大きなシステム内で使用されることを想定しており、何らかのメカニズムが出力を駆動するため、静的ロジックとは区別されません。
対照的に、ダイナミックロジックでは、出力をハイまたはローに駆動するメカニズムが常に存在するわけではありません。この概念の最も一般的なバージョンでは、クロックサイクルの特定の期間に出力がハイまたはローに駆動されます。出力がアクティブに駆動されていない時間間隔では、浮遊容量によって、駆動されたレベルからある程度の許容範囲内のレベルが維持されます。
ダイナミックロジックでは、クロックサイクルのうち出力がアクティブに駆動されていない部分において、出力容量内の電荷が漏れ出して出力のデジタル状態が変化する前に、各ダイナミックゲートの出力状態が使用または更新されるのに十分な速さの最小クロックレートが必要です。
スタティックロジックには最小クロックレートがなく、クロックを無期限に停止させることができます。長時間何もしないことは特に役に立たないように思えるかもしれませんが、次の3つの利点があります。
システムを任意の時間一時停止できる機能は、CPU を非同期イベントに同期させるためにも使用できます。割り込み、ポーリング ループ、プロセッサのアイドル入力ピン (6502 の RDY など)、WAIT 入力などのプロセッサ バス サイクル拡張メカニズムなど、これを行うための他のメカニズムもありますが、ハードウェアを使用してクロックを静的コア CPU にゲートする方が、よりシンプルで、時間的に正確で、プログラム コード メモリを使用せず、待機中の CPU の電力消費もほとんどありません。基本的な設計では、待機を開始するには、CPU はレジスタに書き込み、バイナリ ラッチ ビットを設定します。このビットはプロセッサ クロックと AND または OR 演算され、プロセッサが停止します。周辺機器からの信号によってこのラッチがリセットされ、CPU の動作が再開されます。ハードウェア ロジックは、ラッチ出力の遷移によってクロック信号レベルが瞬時に変化し、通常よりも短いハイまたはローのクロック パルスが発生しないように、必要に応じてラッチ制御入力をゲートする必要があります。
特に、多くの一般的なCPUは動的ロジックを使用していますが、放射線耐性が高いため、宇宙衛星で使用できるのは静的コア(完全に静的な技術で設計されたCPU)のみです。[ 7 ]
適切に設計すれば、ダイナミックロジックはスタティックロジックの2倍以上の速度を実現できます。高速なNMOSトランジスタのみを使用するため、トランジスタのサイズ最適化が向上します。スタティックロジックは、容量負荷が2倍、しきい値が高く、ロジックに低速なPMOSトランジスタを使用するため、速度が遅くなります。ダイナミックロジックは扱いが難しい場合がありますが、処理速度の向上が必要な場合は唯一の選択肢となる可能性があります。 現在、 2GHzを超える速度で動作するほとんどの電子機器はダイナミックロジックを必要としますが、Intelなどの一部のメーカーは、消費電力を削減するために完全にスタティックロジックを使用したチップを設計しています。[ 8 ] 消費電力を削減すると、バッテリーや太陽電池アレイ(宇宙船など)などの限られた電源での動作時間が長くなるだけでなく、熱設計要件も軽減され、必要なヒートシンクやファンなどのサイズが小さくなり、結果としてシステムの重量とコストが削減されることに注意してください。
一般的に、ダイナミックロジックでは、任意の時点でスイッチングするトランジスタの数が大幅に増加するため、スタティックCMOSよりも消費電力が増加します。[ 8 ]ダイナミックロジックベースのシステムでは、いくつかの省電力技術を実装できます。さらに、各レールは任意の数のビットを伝送でき、電力を浪費するグリッチはありません。省電力クロックゲーティングと非同期技術は、ダイナミックロジックでははるかに自然です。
例として、CMOS NANDゲートの静的論理実装を考えてみましょう。

この回路は論理関数を実装しています
AとBの両方がハイの場合、出力はローにプルダウンされます。AまたはBのいずれかがローの場合、出力はハイにプルダウンされます。出力は常にローまたはハイのいずれかにプルダウンされます。
次に、同じ論理関数の動的論理実装について考えてみましょう。

動的論理回路は2つのフェーズを必要とします。クロックがローのときの第1フェーズはセットアップフェーズまたはプリチャージフェーズと呼ばれ、クロックがハイのときの第2フェーズは評価フェーズと呼ばれます。セットアップフェーズでは、出力は無条件にハイに駆動されます(入力AとBの値に関係なく)。このゲートの負荷容量を表すコンデンサが充電されます。下部のトランジスタはオフになっているため、このフェーズでは出力をローに駆動することはできません。
評価フェーズ中は、クロックはハイレベルです。AとBもハイレベルの場合、出力はローレベルにプルダウンされます。そうでない場合、出力はハイレベルのままです(負荷容量のため)。
動的ロジックには、静的ロジックにはないいくつかの潜在的な問題点があります。例えば、クロック速度が遅すぎると、出力が急速に減衰してしまい、実用的ではありません。また、出力は各クロックサイクルの一部でしか有効ではないため、接続されたデバイスは、出力が有効なときに同期的にサンプリングする必要があります。
また、AとBの両方がハイで出力がローの場合、回路はクロックサイクルごとにVddからグランドへコンデンサ負荷1個分の電荷をポンプで送ります。これは、各クロックサイクルでコンデンサをまず充電し、次に放電することによって行われます。このため、出力が高インピーダンスに接続されている回路は、静的バージョン(理論的には出力以外では電流が流れないはず)よりも効率が悪くなります。また、AとBの入力が一定で両方ともハイの場合、動的NANDゲートは正しく動作している限り、クロックレートに比例して電力を消費します。負荷容量を低く保つことで、電力消費を最小限に抑えることができます。しかし、これは最大サイクル時間を短縮し、より高い最小クロック周波数を必要とします。そして、周波数が高くなると、前述の関係で消費電力が増加します。したがって、両方の入力がハイの場合のアイドル電力消費を、クロック速度と負荷容量の平衡から導かれる一定の制限以下に抑えることは不可能です。
よく用いられる実装方法として、ドミノロジックがある。
一般的な参考文献