プログラムカウンタ(PC)とクロックサイクルの物理学
数GHzで駆動する現代の超高速CPUも、本質的にはこの「STEPボタン」を1秒間に数十億回押しているに過ぎない
CoreWar(コアウォー)の世界へようこそ! 左側のパネルは、コンピュータのメモリ(記憶領域)の箱を上から順番に並べたものです。
現在、一番上の 0000 番地 の行が明るく光っています。これが「次に実行される命令の場所」を示す 実行ポインタ(プログラムカウンタ / PC) です。
🎯 やってみよう(編集不要) コードを書き換える必要はありません。 画面下部にあるコントローラーの [STEP](1歩進める)ボタン を 2回 押して、光っている実行ポインタが 0000 ➔ 0001 ➔ 0002 番地へと1行ずつ進む様子を観察しましょう!
1. 光る行の正体:プログラムカウンタ(PC)とは何か?
この最初の実験で、あなたは画面下部の [STEP] ボタンを2回クリックし、明るく光る行が 0000 番地から 0001 番地、そして 0002 番地へと1段ずつ降りていく様子を観察しました。この「今まさに実行しようとしているメモリの番地を指し示す光」こそが、コンピュータ科学において最も重要なレジスタである「プログラムカウンタ(Program Counter: PC)」、別名「命令ポインタ(Instruction Pointer: IP)」です。
私たちが普段使っているスマートフォンやPCの内部には、数十億個のトランジスタが集積されたCPU(中央演算処理装置)が搭載されています。一見すると魔法のように複雑な映像処理やAI推論を同時にこなしているように見えますが、その心臓部で行われていることは驚くほど単純です。CPUは「次にどの番地の命令を実行すべきか」というたった1つの番地番号をプログラムカウンタ(PC)に記憶しており、1ステップごとにその番地の箱を開けて命令を処理し、処理が終わるとPCの値を「+1(次の行)」へと進めているだけなのです。
[Cycle 0] PC = 0000 ──► [0000] ADD.AB #1, $2 (Execute & PC + 1)
[Cycle 1] PC = 0001 ──► [0001] ADD.AB #1, $1 (Execute & PC + 1)
[Cycle 2] PC = 0002 ──► [0002] DAT.F #0, #0 (Next up...)2. フェッチ・デコード・エグゼキュートの3拍子
あなたが [STEP] ボタンを1回押した瞬間、CoreWarの仮想計算機「MARS(Memory Array Redcode Simulator)」の内部では、現実のCPUと全く同じ「命令サイクル(Instruction Cycle)」という3段階のドラマが一瞬で実行されています。
第1段階は「フェッチ(Fetch:命令の取り出し)」です。CPUはプログラムカウンタ(PC)が指し示す 0000 番地のメモリ箱にアクセスし、そこに格納されている『ADD.AB #1, $2』という命令データを内部へ読み込みます。 第2段階は「デコード(Decode:命令の解読)」です。読み込んだデータが「足し算(ADD)であり、左の数値 #1 を、2つ下の箱($2)の右の部屋に足すのだな」と回路レベルで解釈します。 第3段階は「エグゼキュート(Execute:実行と書き戻し)」です。実際に算術論理演算装置(ALU)が計算を行い、0002 番地のデータを書き換え、最後にプログラムカウンタ(PC)を 0000 から 0001 へと1つ進めます。
この「フェッチ ➔ デコード ➔ エグゼキュート」の1周期を「1クロックサイクル(Cycle)」と呼びます。現代の3GHz(ギガヘルツ)のプロセッサとは、あなたが手動で押したこの [STEP] ボタンを、水晶振動子のメトロノームに合わせて「1秒間に30億回」という猛烈な速度で自動連打している機械に他なりません。
3. 時間を離散化する「STEP実行」とデバッグの科学
もしコンピュータが常に1秒間に数十億回ものスピードでしか動けなかったとしたら、人間はプログラムがなぜ動いているのか、あるいはなぜバグで壊れたのかを決して理解することはできないでしょう。そこでソフトウェア工学において発明されたのが、連続的に見える時間を「1サイクル単位の離散的なコマ送り」へと分解する「ステップ実行(Single-Stepping)」という手法です。
CoreWarのビバリウム(観察箱)において、この [STEP] ボタンはあなたの「時間顕微鏡」となります。これから先、自己複製する人工生命や、メモリ空間を飛び交う爆撃機、さらには自身のコードを動的に書き換える高度なプログラムに出会ったときも、決して慌てる必要はありません。[STEP] ボタンを押して時間を1サイクルずつ止め、「今、プログラムカウンタ(PC)はどこにあり、どの箱の数字をどう書き換えたのか」を観察すれば、どんなに複雑なアルゴリズムも100%確実に解剖・理解することができるのです。
🔒 MISSION CLEAR で講義ノートの全編が解放されます
上段の実験シミュレーターでミッションを達成すると自動的に全編がアンロックされます。(下のボタンから今すぐ全文を先に読むことも可能です)