チップの中の回路が、クロックという共通の合図で動作をそろえる仕組みを説明する。記憶素子の間を信号が届く時間、動かせる速さの上限を決める最も遅い経路、クロックのずれと、タイミングを確かめる設計を扱う。
記憶素子の間の計算と、経路の長さ(模式図)
- クロックで動く回路次のクロックまでに結果が届く
- 経路の長さ最も遅い経路が上限を決める
図:左は、クロックで動く回路。記憶素子から出た値が計算の回路を通り、次のクロックで次の記憶素子に取り込まれる。右は、経路ごとの所要時間。最も遅い経路が、クロックの間隔の下限を決める。目盛りのない模式図、本サイトで作成回路は、共通の合図で動く
プロセッサーのような大きな回路では、非常に多くの部分が、順番を守って動く。もし各部分が、ばらばらの時刻で動くと、まだ計算が終わっていない値を、次の部分が読んでしまう。
そこで、多くのチップは、共通の合図を使って、動く時刻をそろえる。この合図が、クロックである。クロックは、一定の間隔で、入り切りを繰り返す信号である。このページでは、クロックを使って回路をそろえる仕組みと、そこで生じる制約を見ていく。
記憶素子と、組み合わせの回路
クロックで動く回路は、二つの部品からなる。一つは、値を覚える記憶素子である。記憶素子は、クロックが切り替わる瞬間に、入ってきた値を取り込み、次の切り替わりまで保つ。もう一つは、論理ゲートを組み合わせた、計算をする回路である。
動き方はこうである。クロックが切り替わると、記憶素子が値を取り込んで出力する。その値が、計算の回路を通って、結果が次の記憶素子の入口に届く。次にクロックが切り替わったとき、その結果が取り込まれる。これを繰り返して、計算が進む。
次の切り替わりまでに、間に合うか
ここで大事なのは、計算の回路を信号が通り抜けるのに、時間がかかることである。論理ゲートを通るたびに、少し遅れる。配線を伝わるのにも、時間がかかる。
結果が、次のクロックの切り替わりまでに、記憶素子の入口に届かなければ、間違った値を取り込んでしまう。したがって、クロックの間隔は、計算の回路で最も時間のかかる経路よりも、長くなければならない。この最も遅い経路を、クリティカルパスと呼ぶ。チップの速さの上限は、クリティカルパスが決める。速く動かしたければ、この経路を短くする設計が必要になる。
速すぎても、問題が起きる
逆に、信号が速く届きすぎても、問題が起きる。取り込みの直後に、次の値が届いてしまうと、取り込もうとしている値が壊れる。値を取り込んだあと、一定の時間は、入口の値が変わらないようにしておく必要がある。
つまり、信号の到着は、遅すぎても、速すぎても、いけない。設計では、どちらの条件も確かめる。速すぎる経路には、わざと遅らせる部品を入れて、間に合わせる場合がある。
クロックを、全体に配る
クロックの信号は、チップのあらゆる記憶素子に、同じ時刻に届くのが理想である。しかし、場所によって、配線の長さや、部品の性質が違うので、届く時刻には、わずかなずれが生じる。これを、クロックのずれと呼ぶ。
ずれを小さくするために、クロックの信号を、木の枝のように、均等に分けて配る構造が使われる。配線の長さをそろえ、途中に信号を強める部品を入れる。チップの上でクロックを配る作業は、設計の中でも、電力と時間に大きく関わる部分である。
タイミングを確かめる
配置と配線が決まると、設計の道具が、すべての経路について、信号が届く時刻を計算する。間に合わない経路や、速すぎる経路が見つかれば、部品の大きさを変えたり、配線をやり直したりして直す。
このページのまとめ
チップの回路は、クロックという共通の合図で、動く時刻をそろえる。計算の結果は、次のクロックまでに、次の記憶素子へ届かなければならない。最も遅い経路が、チップの速さの上限を決める。速すぎても問題が起きるので、設計では、どちらも確かめる。
理解度チェック
本文の内容から答えられる問いです。答えを選ぶと、正しいかどうかと解説が出ます。
問1
チップの動かせる速さの上限を決めるものはどれか。
答えと解説を見る
答え:1. 最も時間のかかる経路(クリティカルパス)
クロックの間隔は、最も時間のかかる経路より長くなければならない。この経路が速さの上限を決める。
問2
信号の到着について、正しい説明はどれか。
答えと解説を見る
答え:1. 遅すぎても、速すぎても、問題が起きる
遅いと次のクロックに間に合わず、速すぎると取り込み中の値が壊れる。どちらも確かめる。