制御・演算・記憶・入力・出力の5つの装置がどのように連携してコンピュータが動くかを可視化します。
コンピュータは5つの基本装置で構成されています。入力装置(キーボード等)でデータを取り込み、記憶装置(メモリ)に保存し、制御装置の指示のもと演算装置(ALU)が計算し、出力装置(ディスプレイ等)で結果を表示します。この5つを5大装置(5大機能)と呼びます。
各装置の分類と役割を整理しておきましょう。たとえばマウスは入力装置、プリンタは出力装置、SSDは補助記憶装置です。上のツールでシナリオを切り替えると、5つの装置がどう連携するか動きで確認できます。
現代のコンピュータはすべてこの5大装置の原理で動いています。スマートフォンも、サーバーも、ゲーム機も、内部構造を分解すれば必ずこの5つの役割が見つかります。
制御装置はプログラムの命令を1つずつ読み取って解読し、他の装置に「何をするか」を指示する司令塔です。自分では計算しません。「メモリから値を取れ」「ALUで足し算しろ」「結果を書き戻せ」といった制御信号を出すのが役割です。
制御装置を構成する代表的な機器・回路は次のとおりです。プログラムカウンタ(PC)は次に実行する命令のアドレスを保持し、命令レジスタ(IR)はメモリから取り出した命令を一時保持し、命令デコーダが命令ビット列を解析して制御信号に変換します。さらにシーケンサ(タイミング制御回路)がクロックに合わせて実行タイミングを管理します。
これらの回路はすべてCPUチップ(Intel Core、AMD Ryzen、Apple Mシリーズなど)の内部に組み込まれています。後述の演算装置とセットで「CPU(中央処理装置)」と呼びます。
演算装置(ALU: Arithmetic Logic Unit)は、制御装置からの指示を受けて四則演算(+−×÷)や論理演算(AND/OR/NOT/XOR)、比較、シフトなどを実際に行う「計算機」です。2つのオペランド(入力値)を受け取り、結果と状態フラグ(ゼロ・キャリー・オーバーフロー等)を出力します。
ALUを構成する具体的な回路には、足し算を行う加算器(全加算器・桁上げ先見加算器)、ビットをずらすシフタ、大小を判定する比較器、AND/OR等を行う論理回路などがあります。また小数を扱うためのFPU(浮動小数点演算ユニット)も近年のCPUには内蔵されています。
身近な例ではPCのCPU(Intel、AMD、Apple M)内部のALUに加え、画像処理を並列に行うGPU(NVIDIA GeForce、AMD Radeon)には数千個の演算ユニットが搭載されています。AI処理用のNPU・TPUも巨大な演算装置の一種です。
記憶装置はプログラムやデータを保持する装置です。CPUに近いほど高速・小容量、遠いほど低速・大容量という記憶階層を構成し、大きく主記憶装置と補助記憶装置に分かれます。
主記憶(メインメモリ)はCPUが直接読み書きする高速メモリで、機器としてはDRAM(一般的なRAM、DDR4/DDR5)、SRAM(CPUキャッシュ用、L1/L2/L3)、起動プログラムを保持するROM(BIOS・ファームウェア)があります。電源を切ると内容が消える揮発性が特徴です(ROMを除く)。
補助記憶(ストレージ)は電源を切ってもデータが残る不揮発性の装置です。具体的な機器にはHDD(ハードディスク)、SSD(NANDフラッシュ)、USBメモリ・SDカード、光学ディスク(CD/DVD/Blu-ray)、磁気テープ(バックアップ用LTO)などがあります。
入力装置は外部からコンピュータにデータを取り込む装置です。人間の操作(タイピング・クリック・タッチ)や物理的な情報(音・光・温度)を電気信号に変換してCPUに渡します。
代表的な機器にはキーボード(文字入力)、マウス・トラックパッド(座標入力)、タッチパネル(スマホ・タブレット)、スキャナ・OCR(紙→デジタル)、マイク(音声入力)、Webカメラ・デジタルカメラ(映像入力)、ゲームコントローラ・ジョイスティックなどがあります。
業務用・IoT用途ではバーコードリーダー(POSレジ)、磁気カードリーダー(クレジット決済)、各種センサー(温度・加速度・GPS・指紋)、ペンタブ・デジタイザ(イラスト制作)など、用途に合わせた多様な入力機器が使われます。ネットワーク経由のデータ受信を担うNICも広い意味で入力装置の一種です。
出力装置はコンピュータの処理結果を外部に出す装置です。電気信号を人間が認識できる形(光・音・印刷物)に変換するのが役割です。
最も使われるのがディスプレイ(表示装置)で、方式は液晶(LCD)・有機EL(OLED)・プラズマ・古くはCRT(ブラウン管)などがあります。大画面ではプロジェクタ、印刷ではインクジェットプリンタ・レーザープリンタ・3Dプリンタが代表的です。
音声出力にはスピーカー・ヘッドホン・イヤホンが使われ、その他にプロッタ(大判図面印刷)、ファクシミリ(FAX送信)、振動モーター(スマホ・コントローラの触覚フィードバック)なども出力装置の一種です。ネットワーク経由のデータ送信を担うNICも広い意味で出力装置と言えます。
CPU(中央処理装置)は制御装置と演算装置を1つのチップにまとめたものです。制御装置はプログラムの命令を読み取り「次に何をするか」を決める司令塔で、演算装置(ALU: Arithmetic Logic Unit)は足し算・引き算・論理演算などを実際に行う計算機です。
たとえば「1+2」を計算する場合、制御装置が「メモリからデータを読め」「ALUで足し算しろ」と指示を出し、演算装置が実際に1+2=3を計算します。上のツールの「1+2を計算」シナリオでこの連携を1ステップずつ確認できます。
Intel Core i9やApple M3といった身近なCPUチップの中にも、制御装置と演算装置が入っています。つまり、CPUは制御装置と演算装置で構成されているのです。
| バスの種類 | 方向 | 運ぶもの | 具体例 |
|---|---|---|---|
| アドレスバス | CPU→メモリ | メモリの番地 | 「0x1000番地を読め」 |
| データバス | 双方向 | 実際のデータ | 「値は42です」 |
| 制御バス | 双方向 | 制御信号 | 「読み込みモード」 |
装置間をつなぐ配線をバスと呼びます。バスには3種類あり、アドレスバスは「どこの番地か」を指定し、データバスは実際のデータを運び、制御バスは「読むのか書くのか」などの指令を伝えます。
アドレスバスのビット幅が大きいほど扱えるメモリ空間が広くなります。たとえば32ビットアドレスバスなら2^32=約4GBまで、64ビットなら理論上16EB(エクサバイト)までのメモリを指定できます。
上のツールでステップを進めると、各ステップで使われるバスの種類が色分けで表示されます。データの流れ(青)、アドレスの指定(紫)、制御信号(赤)がどのタイミングで使われるか観察してみてください。
現在のほとんどのコンピュータはノイマン型と呼ばれるアーキテクチャを採用しています。その最大の特徴は「プログラム(命令)とデータを同じメモリに格納する」という点です。これをプログラム内蔵方式(stored-program concept)と呼びます。
プログラム内蔵方式のメリットは、プログラムを変えるだけでハードウェアを変更せずに別の処理ができることです。かつてのコンピュータ(ENIAC等)は配線を物理的に組み替える必要がありましたが、ノイマン型はメモリ上のプログラムを書き換えるだけで済みます。
一方、命令とデータが同じバスを共有するため「ノイマンボトルネック」という性能限界があります。CPUがメモリから命令を読むのとデータを読むのが同時にできないのです。この解決策がハーバードアーキテクチャ(後述)やキャッシュメモリです。
| 主記憶(RAM) | 補助記憶(HDD/SSD) | |
|---|---|---|
| 速度 | 高速(ナノ秒) | 低速(ミリ秒) |
| 容量 | 少ない(8〜64GB) | 大きい(256GB〜数TB) |
| 電源OFF | 消える(揮発性) | 残る(不揮発性) |
| 価格 | 高い | 安い |
| 用途 | 実行中のプログラム | ファイルの長期保存 |
記憶装置は主記憶装置(メインメモリ、RAM)と補助記憶装置(ハードディスク、SSD等)に大別されます。主記憶は高速だが電源を切ると内容が消え、補助記憶は遅いが電源を切っても内容が残ります。
CPUが直接読み書きできるのは主記憶だけです。補助記憶のデータを使いたい場合は、まず主記憶にコピー(ロード)してからCPUが処理します。上のツールの「ファイルを読む」シナリオでこの流れを確認できます。
コンピュータ内部には2つの異なる流れがあります。データの流れ(入力→記憶→演算→記憶→出力)と命令(制御信号)の流れ(記憶→制御装置→各装置への指示)です。制御装置自身はデータを加工しません。あくまで「いつ・どこで・何をするか」を指示するだけです。
「制御装置はデータを処理するか?」というと、答えはNoです。データの処理(計算)は演算装置が行い、制御装置は命令の解読と実行指示だけを担当します。
上のツールでステップを進めると、制御バス(赤い線)と データバス(青い線)が別のタイミングで使われていることがわかります。データの実体が動くステップと、制御信号だけが飛ぶステップを区別して観察してみてください。
| ノイマン型 | ハーバード型 | |
|---|---|---|
| メモリ構成 | 命令とデータが同一 | 命令用とデータ用が別々 |
| バス | 共有(1本) | 別々(2本) |
| 同時アクセス | 不可 | 可能(高速) |
| 回路規模 | 小さい | 大きい(コスト高) |
| 採用例 | 汎用PC | DSP、マイコン、CPUキャッシュ |
ハーバードアーキテクチャは命令用メモリとデータ用メモリを物理的に分離した設計です。命令フェッチとデータ読み書きを同時に行えるため高速ですが、回路が複雑でコストが高くなります。組込みマイコン(Arduino等)やDSP(デジタル信号処理)で採用されています。
現代のCPUは外見上はノイマン型ですが、内部のキャッシュメモリはL1命令キャッシュとL1データキャッシュに分かれた修正ハーバード方式を採用しています。両方の良いとこ取りをした設計です。
上のツールでシミュレーションした5大装置の連携はノイマン型の典型例です。命令とデータが同じメモリ(記憶装置)から読み出されている点に注目してください。