ホーム第2章: 論理回路からCPUへ
第2章 4節

クロックと同期:記憶の回路

加算器によって、コンピュータは電気の力で計算できるようになりました。しかし、計算結果を一時的に保存しておいたり、次の計算の準備が整うまで待機したりするには、情報を「記憶」する機能が必要です。また、無数のゲートがバラバラの速度で動いては、データが壊れてしまいます。情報を覚え、タイミングを合わせるための仕組み「記憶の回路」と「クロック」について学びます。

1. 組み合わせ回路と順序回路の違い

これまで学んできた論理ゲートや加算器は、「現在の入力の値だけで、出力が一意に決まる」回路でした。これらを組み合わせ回路と呼びます。入力が変わると、出力も即座に(少しの物理的な遅延のあと)変化します。

しかし、コンピュータには「前の計算結果が 5 だった」という過去の状態を記憶する仕組みが必要です。このように、現在の入力だけでなく、過去の状態(記憶)も含めて出力が決定される回路を順序回路と呼びます。

2. 出力を入力に戻す「フィードバック」の魔法

論理ゲートだけでどうやって情報を記憶するのでしょうか。その秘密は、「出力された信号を、もう一度自分の入力に戻す(フィードバックする)」という構造にあります。

最も基本的な記憶回路であるSRラッチ(SR Latch)の動作を見てみましょう。SRラッチは、2つのNOR(またはNAND)ゲートの入出力を互い違いに交差させて繋ぎ合わせた構造をしています。

セット S リセット R NOR NOR 出力 Q 出力 Q'
図 2-6:互いの出力をフィードバックし合うSRラッチ回路の基本構造

この交差したフィードバック構造のおかげで、一度 S(セット) に 1 を入力して出力 Q を 1 にすると、その後 S を 0 に戻しても、回路自身のループによって 1 の状態が永久に保持され続けます。状態を消去(リセット)したいときは、R(リセット) に 1 を入力します。

このように、回路自身が現在の状態をぐるぐると循環させることで、外部からの電気信号が消えた後も「情報を覚え続ける」ことができます。

3. クロック(Clock):回路全体のメトロノーム

記憶回路ができたことで、コンピュータは一時的なデータを保存できるようになりました。しかし、ここで新たな問題が発生します。

半導体回路の動作速度は、周囲の温度や配線の長さ、不純物の量などによって、ほんの少しずつ異なります。 クロックがないと、あるゲートの計算が完了していないうちに、別の高速なゲートが次のデータを取り込んでしまい、計算結果がグチャグチャになってしまいます。

そこで、回路全体の動作のタイミングを合わせるために、「クロック信号(Clock)」と呼ばれる一定周期の電気的メトロノーム信号を導入します。

立ち上がりエッジ 立ち上がりエッジ 立ち上がりエッジ クロック信号(電圧の強弱)
図 2-7:0と1を繰り返すクロック信号と、同期の基準となる「立ち上がりエッジ」

すべての記憶回路は、「クロックが 0 から 1 に立ち上がった瞬間(立ち上がりエッジ)にのみ、新しい入力データを取り込んで記憶を更新する」というルールで動きます。この動作をする記憶回路をフリップフロップ(Flip-Flop)と呼びます。

クロック信号が立ち上がると、一斉にデータが次の記憶素子へと送り出されます。次の立ち上がりが来るまでの間(クロックの1周期の間)は、たとえ入力がどれだけ激しく揺れても、記憶素子の内容は変化しません。この待機時間の間に、各論理ゲートが落ち着いて計算を行い、安定した出力を準備することができるのです。

4. 「GHz(ギガヘルツ)」の正体

スマートフォンのカタログなどに「CPU動作周波数 3.2 GHz」といったスペックが書かれているのを見たことがあるでしょう。

この「ヘルツ(Hz)」という単位は、「1秒間にクロック信号が何回立ち上がるか」を示しています。

  • 1 Hz = 1秒間に1回立ち上がる
  • 1 MHz(メガヘルツ) = 1秒間に100万回立ち上がる
  • 1 GHz(ギガヘルツ) = 1秒間に10億回立ち上がる

つまり、3.2 GHzのCPUは、1秒間に32億回もクロックのメトロノームを刻み、回路全体で一斉にデータを次のステップへ進める計算を行っています。この周波数が高ければ高いほど、CPUは1秒間に多くの計算ステップを実行できるため、処理が高速になります。

しかし、クロックを早くしすぎると、今度は「論理ゲートの計算が完了する前に、次のクロックが来てしまいデータが壊れる(タイミングエラー)」が発生したり、電力が激しく消費されて発熱が限界に達したりします。これが、現代のCPUの周波数が4GHz〜5GHz付近で頭打ちになっている物理的な理由です。

次のセクションでは、ここまでに学んだ「計算回路(加算器)」と「記憶回路(フリップフロップ)」を組み合わせ、ついに自律してプログラムを実行する「CPUの全体像」を設計します。