edubun
日本語

CPUがしていること

3 GHzのプロセッサーは1秒に30億回刻み、1回の刻みは3分の1ナノ秒ごとです。

コンピューターの授業を思いうかべましょう。(これは作り話の場面です。)黒板に番号のついた箱が16個描かれ、どの箱にも8ビットが書かれています。3人の生徒がCPUの役をします。1人はPCと書かれたカード、1人はIRと書かれたカード、1人はACCと書かれたカードを持ちます。PCのカードには0とあります。IRの生徒は箱0まで歩いていき、そこにある0001 1110を写します。PCの生徒はカードを1に書きかえます。クラスは壁の表で最初の4ビットを調べます。0001はLOADという意味です。最後の4ビット1110は14です。そこでACCの生徒は箱14まで行き、そこにある7を写します。それから、箱1からまた同じことが始まります。

箱1にはADD 15とあるので、ACCは7 + 5 = 12になります。箱2にはSTORE 13とあり、ACCの生徒は箱13に12を書きます。箱3にはHALTとあり、全員が席に着きます。動きは全部で12回でした。3人のうちだれも、このプログラムが「7と5を足す」ものだと知る必要はありませんでした。1人1人が小さな規則を1つずつ守っただけです。箱がメモリ、カードがレジスタ、壁の表がデコーダーです。本物のCPUも同じしくみで、それを1秒に何十億回もくり返しています。そして中のだれも、やはりプログラムを理解してはいません。

同じ短いループを、1秒に何十億回も

ゲートは足したり、比べたり、選んだりできますが、何を、どの順で、どの数でするのかを指示するものが必要です。それが中央処理装置、CPUの仕事です。CPUは1つの短いループをくり返します。プログラムカウンター(PC)は次の命令のアドレスを持っています。フェッチ:CPUはPCが指すセルを命令レジスタ(IR)に読みこみ、PCを1つ進めます。デコード:制御回路がオペコードのビットを見て、正しい経路を用意します。たとえばADDなら加算器をつなぎます。実行:仕事が行われます。数が読みこまれたり、足されたり、書きこまれたり、あるいはPCが変えられてプログラムが別の場所へジャンプしたりします。そしてループがまた始まります。JZという命令はアキュムレーターが0のときだけジャンプします。この1種類のジャンプだけで、プログラムは判断とくり返しができるようになります。

読み込み中

ドラッグで回転、スクロールまたはピンチで拡大・縮小。

セル0から3のプログラムは、7(セル14)と5(セル15)を足し、12をセル13に書きこみます。「ステップ」を押して1段階ずつ進め、PC、IR、ACCを見てみましょう。4つの命令で12段階かかります。次に4 × 3を選びましょう。ループで4を3回足してかけ算をします。または「カウントダウン」を選びましょう。

シーンは、クラスが演じたのと同じプログラムを実行します。「ステップ」を押すと、PC、IR、ACCがカードとまったく同じように変わります。LOAD 14、次にADD 15、STORE 13、HALTで、3段階ずつの命令が4つ、全部で12段階です。かけ算のプログラムも同じ少数の命令を使いますが、セル15のカウンターが0になるまでに、JZとJUMPがPCを2回0へ戻すので、72段階で24個の命令を実行します。足し算の6倍の命令数です。

プログラムは数と同じメモリにある

黒板では、命令と数の7と5が同じ列の箱に入っていました。これは偶然ではありません。1945年6月、ジョン・フォン・ノイマンは「EDVACに関する報告書の第一草稿」を書き、命令をデータと同じメモリに置くコンピューターを説明しました。それ以来、ほとんどすべてのコンピューターがこの方式で動いています。命令は、ビットがいくつかの欄に分かれた数にすぎません。このおもちゃのコンピューターでは、どのセルにも8ビットが入ります。最初の4ビットが何をするか(オペコード)、最後の4ビットがどのセルを使うか(アドレス)を表します。0001はLOADなので、0001 1110は「LOAD 14」、つまりセル14の数をアキュムレーター(CPUの作業用レジスタ)に写すという意味です。

ループの速さ

各段階は、一定の速さでオンとオフを切り替える電圧、クロック信号に合わせて進みます。3 GHzのクロックは1秒に3,000,000,000回刻むので、1回の刻みは1 ÷ 3,000,000,000秒、約0.333ナノ秒です。その間に光は約10センチメートルしか進めません。1回の刻みで1段階なら、おもちゃの7 + 5のプログラムを1秒に2.5億回実行できる数の刻みです。実際のプロセッサーは、おもちゃのように単純に1回の刻みで命令を1つずつ終えるわけではありません。いくつもの命令の段階を組み立てラインのように重ねて進め、これをパイプライン処理と呼びます。また、いまのチップには、コアと呼ばれる完全なプロセッサーがいくつも並んでいます。おもちゃにはそのどれもありません。だからこそ、手で追いかけられるのです。

オペコード名前すること
0000HALT停止
0001LOAD aACC = セル a
0010ADD aACC = ACC + セル a
0011SUB aACC = ACC − セル a
0100STORE aセル a = ACC
0101JUMP aPC = a
0110JZ aACC = 0ならPC = a
よくある間違い
  • 「PCは実行した命令の数を数えている」 PCは次の命令のアドレスを持っています。4 × 3のプログラムでは、PCは2回0へ戻されますが、終わった命令の数は24まで増え続けます。
  • 「CPUは人と同じようにプログラムを読む」 CPUは8ビットを読み、オペコードとアドレスに分け、そのオペコード用に決まった配線に従います。カードを持った生徒と同じく、プログラムが7と5を足すものだとは決して知りません。
  • 「GHzの数字が大きいほど、必ず速いコンピューターだ」 クロックが決めるのは段階が起こる頻度で、1回の刻みでどれだけ仕事をするかではありません。実際のチップは命令の段階を重ねて進め、コアもいくつかあるので、同じGHzの2つのチップでも、こなす仕事の量は大きくちがうことがあります。
先生からひとことシーンを見せる前に演じてみましょう。箱を16個描き、カードを3枚(PC、IR、ACC)配り、7 + 5のプログラムを1段階ずつ、クラスで段階の名前を声に出しながら進めます。学習者が迷うのは、PCがフェッチの間に進むことです。そのため、命令が実行されるときには、PCはもう次の命令を指しています。最初のフェッチのあとで止めて、PCに何と書いてあるかを聞きましょう。そうすればJUMPとJZは「PCのカードに新しい数を書く」こととして理解できます。演じるのがうまくいけば、シーンの「ステップ」ボタンもなじみのあるものに感じられます。
  1. 命令サイクルの段階を順に並べましょう。
  2. CPUがアドレス3の命令をフェッチします。フェッチの直後、PCはいくつですか?
  3. おもちゃのコンピューターで、0010 1111はどんな意味ですか?
    • ADD 15
    • LOAD 15
    • STORE 2
    • ADD 7
  4. LOAD 14を8ビットで書きましょう。
  5. クロックが3 GHzで動いています。1回の刻みは何ナノ秒ですか?(小数第3位まで)
  6. 7 + 5のプログラムは、HALTを含めていくつの命令を実行しますか?
  7. どの命令も3段階かかります。7 + 5のプログラムは何段階かかりますか?
  8. STORE 13は何をしますか?
    • アキュムレーターをセル13に写す
    • セル13をアキュムレーターに写す
    • アドレス13へジャンプする
    • アキュムレーターに13を足す
  9. カウントが0になるまでプログラムにループをくり返させる命令はどれですか?
    • JZ(0ならジャンプ)
    • STORE
    • HALT
    • LOAD
  10. フォン・ノイマンが「EDVACに関する報告書の第一草稿」を書いたのは何年ですか?
ポイント
  • プログラムは数として、データと同じメモリに記録される(フォン・ノイマン、1945年)。
  • CPUはフェッチ、デコード、実行をくり返す。PCは次の命令を指す。
  • 命令のビットはオペコードとアドレスに分かれる。
  • クロックが速さを決める。3 GHzなら0.333 nsごとに1回刻む。
このコースの出典 (9)
  • (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
  • Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
  • IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
  • IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
  • Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
  • Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
  • Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
  • abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
  • John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).

確認日: 2026-10-17