読み込み中...
読み込み中...
読み込み中...
読み込み中...
読み込み中...
CPU(Central Processing Unit: 中央処理装置) は、コンピュータの「頭脳」にあたる部品です。プログラムの命令を1つずつ読み込み、解読し、実行することで、あらゆる計算や制御を行います。
CPU の内部は大きく3つの要素で構成されています。
| 構成要素 | 役割 |
|---|---|
| 制御装置 | メモリから命令を取り出し(フェッチ)、命令を解読(デコード)して各装置に制御信号を送る |
| 演算装置(ALU) | 算術演算(加減乗除)と論理演算(AND・OR・NOT 等)を実行する |
| レジスタ | CPU 内部の高速な小容量記憶装置。演算対象のデータや命令のアドレスを一時的に保持する |
| レジスタ名 | 略称 | 役割 |
|---|---|---|
| プログラムカウンタ | PC | 次に実行する命令のメモリアドレスを保持 |
| 命令レジスタ | IR | 現在実行中の命令を保持 |
| メモリアドレスレジスタ | MAR | アクセスするメモリのアドレスを保持 |
| メモリバッファレジスタ | MBR | メモリとの間でやり取りするデータを保持 |
| アキュムレータ | ACC | 演算結果を一時的に蓄積する |
| ベースレジスタ | BR | アドレス計算の基準値を保持 |
| インデックスレジスタ | IX | 配列アクセスなどで使うオフセット値を保持 |
| フラグレジスタ | FR | 演算結果の状態(ゼロ・負・オーバーフロー等)を保持 |
| スタックポインタ | SP | スタックの先頭アドレスを保持 |
CPU は以下の4つのステップを繰り返すことで、プログラムを実行します。
この一連のサイクルを 命令サイクル(マシンサイクル) と呼びます。
命令の中で、データの場所(オペランド)をどのように指定するかの方式です。FE 試験では6つの方式が頻出です。
| 方式 | 説明 | 有効アドレス |
|---|---|---|
| 即値アドレス指定 | 命令の中に直接データの値を埋め込む | ―(データそのもの) |
| 直接アドレス指定 | 命令のアドレス部がそのまま有効アドレス | 有効アドレス = アドレス部の値 |
| 間接アドレス指定 | アドレス部が指すメモリの中身が有効アドレス | 有効アドレス = メモリ[アドレス部の値] |
| インデックスアドレス指定 | アドレス部 + インデックスレジスタの値 | 有効アドレス = アドレス部 + IX |
| ベースアドレス指定 | アドレス部 + ベースレジスタの値 | 有効アドレス = アドレス部 + BR |
| 相対アドレス指定 | アドレス部 + プログラムカウンタの値 | 有効アドレス = アドレス部 + PC |
使い分けのポイント:
命令実行の4段階(フェッチ・デコード・実行・ストア)を 流れ作業 のように並行して行う高速化技法です。1つの命令がデコード段階に入ったら、すぐに次の命令のフェッチを開始します。
パイプラインなしでは4命令の実行に 4×4 = 16クロックかかりますが、パイプラインにより 4+3 = 7クロック で完了します。一般に、k ステージのパイプラインで n 個の命令を実行すると、所要クロック数は k + (n - 1) です。
パイプラインの流れが乱れる問題を ハザード と呼びます。
| ハザードの種類 | 原因 | 対策 |
|---|---|---|
| データハザード | 前の命令の結果を次の命令が参照する(データ依存) | フォワーディング(演算結果を直接次のステージに転送) |
| 制御ハザード | 分岐命令でジャンプ先が確定するまで次の命令が不明 | 分岐予測(過去の分岐パターンから予測して投機的に実行) |
| 構造ハザード | 同じハードウェア資源を複数の命令が同時に使おうとする | ハードウェアの多重化(メモリポートの増設等) |
分岐予測 は制御ハザードへの主要な対策で、予測が当たればパイプラインは乱れず、外れた場合は投機的に実行した結果を破棄(パイプラインフラッシュ)して正しい命令を再実行します。
CPU の命令セット設計には、大きく2つの思想があります。
| 項目 | CISC | RISC |
|---|---|---|
| 正式名称 | Complex Instruction Set Computer | Reduced Instruction Set Computer |
| 命令の種類 | 多い(数百種類) | 少ない(数十種類) |
| 命令の長さ | 可変長 | 固定長 |
| 1命令の実行クロック数 | 多い(命令によりばらつく) | 少ない(原則1クロック) |
| パイプライン効率 | 低い(命令長が不均一) | 高い(命令長が均一で扱いやすい) |
| 代表例 | x86(Intel / AMD) | ARM、RISC-V、MIPS |
| 技術 | 説明 |
|---|---|
| スーパースカラ | 複数のパイプラインを並列に備え、同時に複数の命令を実行する。ハードウェアが依存関係を動的に判断 |
| スーパーパイプライン | パイプラインの各ステージをさらに細分化し、クロック周波数を上げて高速化する |
| VLIW(Very Long Instruction Word) | コンパイラが同時実行可能な命令をまとめて1つの長い命令語に詰め込む。ハードウェアは単純で済む |
スーパースカラは ハードウェアが 並列性を見つけるのに対し、VLIW は コンパイラが 並列性を見つけるという違いがあります。
割込み とは、実行中のプログラムを一時中断し、優先度の高い処理を先に行う仕組みです。割込みがなければ、CPU は入出力の完了をひたすら待ち続ける(ビジーウェイト)ことになり、効率が大幅に低下します。
| 分類 | 種類 | 発生原因 |
|---|---|---|
| 内部割込み | プログラム割込み | ゼロ除算、オーバーフロー、不正命令など |
| SVC割込み(スーパバイザコール) | プログラムが OS の機能を呼び出すとき | |
| 外部割込み | 入出力割込み | I/O デバイスが処理完了を CPU に通知 |
| タイマ割込み | 一定時間ごとに発生し、OS のタスクスケジューリングに利用 | |
| マシンチェック割込み | ハードウェア障害の検出 |
CPU の処理速度を測る代表的な指標を押さえましょう。
| 指標 | 意味 | 単位 |
|---|---|---|
| クロック周波数 | 1秒間のクロック信号の回数。高いほど高速 | Hz(GHz = 10⁹ Hz) |
| CPI(Clocks Per Instruction) | 1命令あたりの平均クロック数。小さいほど高速 | クロック/命令 |
| MIPS(Million Instructions Per Second) | 1秒間に実行できる命令数(百万単位) | 百万命令/秒 |
| FLOPS(Floating-point Operations Per Second) | 1秒間に実行できる浮動小数点演算数。科学技術計算の指標 | FLOPS |
問題: クロック周波数 2GHz、CPI が 4 の CPU の MIPS 値は?
1クロックの時間 = 1 / (2 × 10⁹) = 0.5 × 10⁻⁹ 秒 = 0.5 ナノ秒
1命令の実行時間 = CPI × 1クロックの時間 = 4 × 0.5 × 10⁻⁹ = 2 × 10⁻⁹ 秒
1秒間に実行できる命令数 = 1 / (2 × 10⁻⁹) = 5 × 10⁸ = 500 × 10⁶
よって 500 MIPS
公式: MIPS = クロック周波数(MHz) / CPI = 2000 / 4 = 500 MIPS
ポイント
CPU は 制御装置 ・ 演算装置(ALU) ・ レジスタ で構成され、フェッチ→デコード→実行→ストアの命令サイクルを繰り返す。アドレス指定方式は即値・直接・間接・インデックス・ベース・相対の6種類。 パイプライン処理 で命令を流れ作業的に並行実行し、k ステージ × n 命令の所要クロックは k + (n-1)。ハザード(データ・制御・構造)がパイプラインを乱す原因となり、分岐予測やフォワーディングで対策する。CISC は命令が複雑で可変長、RISC は命令が単純で固定長。 スーパースカラ はハードウェアが、 VLIW はコンパイラが並列性を判断する。割込みは内部(プログラム・SVC)と外部(入出力・タイマ)に分類される。CPU 性能は MIPS = クロック周波数(MHz) / CPI で求める。
用語
コンピュータは、プログラムやデータを メモリ に格納して処理を行います。しかし、高速なメモリほど容量あたりのコストが高く、大容量にすることが難しいという問題があります。そこで、 速度 ・ 容量 ・ コスト のバランスを取るために、複数の種類のメモリを階層的に組み合わせて使います。これを メモリ階層 と呼びます。
上にいくほど 高速・小容量・高価格 、下にいくほど 低速・大容量・低価格 です。CPU が必要なデータはまずレジスタやキャッシュを探し、見つからなければ主記憶、さらに補助記憶へとアクセス範囲を広げていきます。
主記憶装置はCPUが直接アクセスできるメモリで、 RAM(Random Access Memory) と ROM(Read Only Memory) に大別されます。
電源を切るとデータが消える記憶装置です。
| 種類 | 特徴 | 用途 |
|---|---|---|
| SRAM(Static RAM) | フリップフロップで記憶。高速だが高価で集積度が低い。リフレッシュ不要 | キャッシュメモリ |
| DRAM(Dynamic RAM) | コンデンサの電荷で記憶。低速だが安価で大容量化が容易。定期的なリフレッシュが必要 | 主記憶(メインメモリ) |
DRAM はコンデンサの電荷が時間とともに放電するため、一定間隔で電荷を補充する リフレッシュ が必要です。このリフレッシュの間は読み書きができないため、SRAM よりアクセスが遅くなります。
現在のメインメモリには DDR SDRAM(Double Data Rate Synchronous DRAM) が使われています。クロック信号の立ち上がりと立ち下がりの両方でデータを転送するため、実効転送速度が2倍になります。
電源を切ってもデータが保持される記憶装置です。
| 種類 | 特徴 |
|---|---|
| マスクROM | 製造時にデータを書き込む。書き換え不可 |
| PROM | 一度だけ書き込み可能 |
| EPROM | 紫外線で消去して書き換え可能 |
| EEPROM | 電気的に消去して書き換え可能 |
| フラッシュメモリ | EEPROMの一種。ブロック単位で消去・書き換え。SSD や USB メモリに使用 |
CPU と主記憶の速度差を埋めるために設けられた高速な小容量メモリです。よく使うデータをキャッシュに置いておくことで、主記憶へのアクセス回数を減らし、全体の処理速度を向上させます。
キャッシュは多段構成が一般的です:
キャッシュにデータが見つかることを キャッシュヒット 、見つからないことを キャッシュミス と呼びます。
ヒット率 h = キャッシュヒット回数 / 全アクセス回数
実効アクセス時間 = h × キャッシュアクセス時間 + (1 - h) × 主記憶アクセス時間
問題: キャッシュのアクセス時間 10ナノ秒、主記憶のアクセス時間 60ナノ秒、ヒット率 0.9 のとき、実効アクセス時間は?
実効アクセス時間 = 0.9 × 10 + (1 - 0.9) × 60 = 9 + 6 = 15ナノ秒
キャッシュがなければ毎回 60ナノ秒かかるところ、キャッシュの導入で 15ナノ秒に短縮できました。ヒット率が高いほど実効アクセス時間は短くなります。
| 方式 | 動作 | 特徴 |
|---|---|---|
| ライトスルー | キャッシュと主記憶に同時に書き込む | データの一貫性が保たれるが、書き込みが遅い |
| ライトバック | キャッシュにだけ書き込み、追い出し時に主記憶に反映 | 書き込みが速いが、一貫性の管理が複雑 |
主記憶のデータをキャッシュのどの場所に格納するかを決める方式です。
| 方式 | 説明 | メリット | デメリット |
|---|---|---|---|
| ダイレクトマッピング | 主記憶の各ブロックが格納先のキャッシュラインが1つに固定 | 構造が単純で高速 | 同じラインに複数のブロックが競合しやすい |
| フルアソシアティブ | 主記憶のブロックをキャッシュのどのラインにでも格納可能 | 競合が起きにくい | 検索に全ラインとの比較が必要で回路が複雑 |
| セットアソシアティブ | キャッシュを複数のセットに分け、各ブロックの格納先セットは固定。セット内は任意のラインに格納可能 | ダイレクトとフルアソシアティブの中間的バランス | ― |
セットアソシアティブで、1セットあたりのライン数が n のものを n ウェイセットアソシアティブ と呼びます。n = 1 ならダイレクトマッピング、n = 全ライン数ならフルアソシアティブと等価です。現代の CPU では 4ウェイ〜16ウェイ のセットアソシアティブが一般的です。
キャッシュが満杯のとき、新しいデータを格納するために古いデータを追い出す必要があります。追い出すデータの選び方を 置換アルゴリズム と呼び、代表的なものに LRU(Least Recently Used: 最も長い間使われていないものを置換) や FIFO(First In First Out: 最も古く格納されたものを置換) があります。
仮想記憶(仮想メモリ) は、主記憶(物理メモリ)の容量を超えるプログラムを実行するための仕組みです。補助記憶(HDD や SSD)の一部を主記憶の拡張として使い、プログラムからは実際の物理メモリよりも大きなアドレス空間( 仮想アドレス空間 )が見えるようにします。
仮想アドレス空間と物理メモリをそれぞれ同じ大きさの固定長ブロックに分割します。仮想側のブロックを ページ 、物理側のブロックを ページフレーム と呼びます。一般的なページサイズは 4KB です。
仮想アドレスから物理アドレスへの変換には ページテーブル を使います。
| 用語 | 説明 |
|---|---|
| ページテーブル | 仮想ページ番号と物理ページフレーム番号の対応表 |
| TLB(Translation Lookaside Buffer) | ページテーブルのキャッシュ。アドレス変換を高速化する |
| ページフォールト | 参照したページが主記憶上にない場合に発生する割込み。OS が補助記憶からページを読み込む |
| ページイン(スワップイン) | 補助記憶から主記憶にページを読み込む操作 |
| ページアウト(スワップアウト) | 主記憶から補助記憶にページを退避する操作 |
| スラッシング | ページフォールトが頻発し、ページの入れ替えばかりで処理が進まなくなる現象 |
主記憶が満杯でページインが必要なとき、どのページを追い出すかを決めるアルゴリズムです。
| アルゴリズム | 方式 | 特徴 |
|---|---|---|
| FIFO | 最も古くページインされたページを置換 | 実装が簡単だが効率は低い |
| LRU | 最も長い間参照されていないページを置換 | 効率が高いが、参照時刻の記録にコストがかかる |
LRU は「最近使われたものはまたすぐ使われるだろう」という 時間的局所性 の考え方に基づいています。
メモリインターリーブ は、主記憶を複数の バンク(独立したメモリモジュール) に分割し、連続するアドレスを異なるバンクに交互に割り当てることで、アクセスを高速化する技法です。
| バンク0 | バンク1 | バンク2 | バンク3 |
|---|---|---|---|
| アドレス 0 | アドレス 1 | アドレス 2 | アドレス 3 |
| アドレス 4 | アドレス 5 | アドレス 6 | アドレス 7 |
| アドレス 8 | アドレス 9 | アドレス 10 | アドレス 11 |
プログラムは通常、連続したアドレスを順にアクセスします。1つのバンクがデータを出力している間に、次のバンクへのアクセスを開始できるため、 見かけ上のアクセス時間が短縮 されます。
たとえば4バンク構成で各バンクのアクセス時間が 40ナノ秒の場合、連続4アドレスの読み出しは、インターリーブなしでは 40 × 4 = 160ナノ秒かかりますが、インターリーブにより最初のアクセス 40ナノ秒 + 後続3回分のバス転送時間で済み、大幅に高速化されます。
ポイント
メモリ階層は上位ほど高速・小容量・高価格(レジスタ > キャッシュ > 主記憶 > 補助記憶)。主記憶の RAM は SRAM (高速・キャッシュ用)と DRAM (大容量・メインメモリ用)に分かれ、DRAM はリフレッシュが必要。キャッシュの 実効アクセス時間 = h × キャッシュ時間 + (1-h) × 主記憶時間。書き込み方式は ライトスルー (一貫性重視)と ライトバック (速度重視)。対応付けは ダイレクト ・ フルアソシアティブ ・ セットアソシアティブ の3方式。仮想記憶の ページング では、ページフォールト時に補助記憶からページを読み込む。ページ置換は FIFO と LRU が頻出。 メモリインターリーブ は複数バンクへの交互配置で連続アクセスを高速化する。
用語
コンピュータの各装置(CPU・メモリ・入出力デバイス)は バス と呼ばれる信号線の束で接続されています。バスはデータの通り道であり、コンピュータ内部の「道路」にあたります。
| バスの種類 | 役割 |
|---|---|
| データバス | CPU とメモリ・I/O デバイス間でデータを転送する。バス幅(ビット数)が大きいほど一度に多くのデータを送れる |
| アドレスバス | CPU がアクセスしたいメモリアドレスや I/O ポート番号を指定する。アドレスバスが n ビットなら 2ⁿ 個のアドレスを指定可能 |
| 制御バス | 読み書きの方向、割込み信号、クロック信号などの制御情報を伝える |
例: アドレスバスが 32ビットの場合、指定できるアドレス数は 2³² = 約43億 = 4GB です。これが 32ビット OS でメモリが最大4GB に制限される理由です。
バスは接続範囲によっても分類されます:
周辺機器をコンピュータに接続するための規格です。試験では各インターフェースの特徴と用途の対応が問われます。
| インターフェース | 特徴 |
|---|---|
| USB(Universal Serial Bus) | 汎用シリアルインターフェース。ホットプラグ対応。USB 2.0(480Mbps)、USB 3.0(5Gbps)、USB 3.2(20Gbps)、USB4(40Gbps)と高速化 |
| HDMI | 映像と音声をデジタルで1本のケーブルで伝送。ディスプレイ接続の標準 |
| DisplayPort | 高解像度・高リフレッシュレートに対応する映像出力規格。デイジーチェーン接続が可能 |
| Bluetooth | 短距離(約10m)の無線通信規格。キーボード・マウス・イヤホン等に使用。省電力版の BLE(Bluetooth Low Energy)もある |
| NFC(Near Field Communication) | 近距離(約10cm)の無線通信。交通系ICカードやスマートフォン決済に使用 |
| Wi-Fi(IEEE 802.11) | 無線LAN規格。Wi-Fi 6(IEEE 802.11ax)は最大9.6Gbps |
| SATA | HDD や SSD を接続するシリアルインターフェース。SATA III で最大 6Gbps |
| NVMe | SSD 向けの高速プロトコル。PCIe バスを直接利用し、SATA より大幅に高速 |
| IEEE 1394(FireWire) | AV機器向けのシリアルインターフェース。現在はUSBに置き換えが進む |
CPU と I/O デバイスの間でデータをやり取りする方法には、3つの方式があります。
| 方式 | 動作 | CPU効率 |
|---|---|---|
| プログラム制御(ポーリング) | CPU が I/O デバイスの状態を定期的に確認し、準備ができたらデータを転送 | 低い(CPU がビジーウェイトで待機) |
| 割込み制御 | I/O デバイスが準備完了を割込みで CPU に通知。CPU は通知を受けるまで他の処理を実行可能 | 中程度(転送自体は CPU が行う) |
| DMA(Direct Memory Access) | DMA コントローラがCPUを介さずに、I/O デバイスと主記憶の間で直接データを転送 | 高い(CPU はデータ転送に関与しない) |
DMA の流れ:
DMA では転送中に DMA コントローラがバスを占有するため、CPU のメモリアクセスが一時的にブロックされます。この現象を サイクルスチール と呼びます。
電源を切ってもデータを保持できる大容量の記憶装置です。
磁性体を塗布した円盤(プラッタ)を高速回転させ、磁気ヘッドでデータを読み書きします。
アクセス時間 = シーク時間 + 回転待ち時間 + データ転送時間
フラッシュメモリを使用した記憶装置です。HDD と比べて以下の特徴があります:
複数のディスクを組み合わせて、性能向上や耐障害性を実現する技術です。
| RAIDレベル | 構成 | 特徴 | 最低台数 |
|---|---|---|---|
| RAID 0(ストライピング) | データを複数ディスクに分散して書き込み | 読み書きが高速。冗長性なし(1台でも故障すると全データ消失) | 2 |
| RAID 1(ミラーリング) | 同じデータを2台のディスクに書き込み | 1台が故障してもデータは安全。容量効率は50% | 2 |
| RAID 5 | データとパリティを3台以上に分散 | 1台まで故障に耐えられる。容量効率は (n-1)/n | 3 |
| RAID 6 | データと二重パリティを4台以上に分散 | 2台まで故障に耐えられる。容量効率は (n-2)/n | 4 |
| RAID 10(1+0) | ミラーリング(RAID 1)した組をストライピング(RAID 0) | 高速性と耐障害性の両立。容量効率は50% | 4 |
RAID 5 の パリティ は、他のディスクのデータから障害ディスクのデータを復元するための冗長情報です。パリティを特定のディスクに集中させず分散配置することで、書き込み時のボトルネックを防ぎます。
| 装置 | 説明 |
|---|---|
| キーボード | 文字・数値・コマンドを入力する最も基本的な入力装置 |
| マウス | 画面上のポインタを操作するポインティングデバイス |
| タッチパネル | 画面に直接触れて操作。抵抗膜方式、静電容量方式など。スマートフォンは静電容量方式 |
| スキャナ | 紙の文書や画像を読み取ってデジタルデータに変換 |
| OCR(光学文字認識) | 印刷・手書き文字を読み取り、テキストデータに変換する技術 |
| OMR(光学マーク認識) | マークシートの塗りつぶしを読み取る技術。試験の採点に使用 |
| バーコードリーダー | JAN コード等のバーコードを読み取る装置 |
| QRコードリーダー | 2次元コード(QRコード)を読み取る装置 |
| 装置 | 説明 |
|---|---|
| ディスプレイ | 映像を表示する出力装置。液晶(LCD)、有機EL(OLED)が主流 |
| プリンタ | データを紙に印刷する装置。レーザプリンタ(トナー)、インクジェットプリンタ(インク)が一般的 |
| プロジェクタ | 映像を大画面に投影する装置 |
ディスプレイの性能を表す主要な指標を整理します。
| 指標 | 説明 |
|---|---|
| 解像度 | 画面を構成する画素(ピクセル)の数。横×縦で表す(例: 1920×1080 = フルHD) |
| 色深度(ビット深度) | 1画素あたりの色情報のビット数。24ビット(フルカラー)= 約1677万色 |
| リフレッシュレート | 1秒間に画面を書き換える回数。単位は Hz。60Hz なら1秒に60回更新 |
| 応答速度 | 画素の色が変化するのにかかる時間。単位は ms。小さいほど残像が少ない |
| 画素ピッチ(ドットピッチ) | 隣接する画素間の距離。小さいほど高精細 |
ディスプレイに表示するデータを保持する専用メモリ( VRAM: Video RAM )の必要容量を計算できるようにしましょう。
VRAM容量 = 横の画素数 × 縦の画素数 × 色深度(ビット) / 8(バイト変換)
計算例: 解像度 1920×1080、色深度 24ビットの場合
VRAM容量 = 1920 × 1080 × 24 / 8 = 1920 × 1080 × 3 = 6,220,800バイト ≒ 約5.93MB
| 解像度 | 名称 | 画素数 |
|---|---|---|
| 1280×720 | HD(720p) | 約92万 |
| 1920×1080 | フルHD(1080p) | 約207万 |
| 2560×1440 | WQHD(1440p) | 約369万 |
| 3840×2160 | 4K UHD(2160p) | 約829万 |
ポイント
バスは データバス ・ アドレスバス ・ 制御バス の3種類で構成される。アドレスバスが n ビットなら 2ⁿ 個のアドレスを指定可能。入出力制御は プログラム制御 (ポーリング、CPU 効率低い)→ 割込み制御 → DMA (CPU を介さず直接転送、最も効率的)の順に改善される。補助記憶では HDD のアクセス時間 = シーク時間 + 回転待ち時間 + 転送時間。RAID は RAID 0 (高速・冗長性なし)、 RAID 1 (ミラーリング)、 RAID 5 (パリティ分散、1台耐障害)が頻出。VRAM 容量 = 横画素数 × 縦画素数 × 色深度 / 8 で計算する。
用語