データ表現と基数変換
计算机内での数字は通常 2 進数で扱われるが、他の進数系とも相互変換が可能である。
- 2 進数: 桁上げ位置によって $2^n$ の重みを持つ。小数点を含む場合、右側も同様に $2^{-n}$ で計算される。
- 任意進数: 八進数は 2 進数 3 桁に、十六進数は 4 桁に相当する変換ルールが使用される。
特定の 10 進数から他進数への変換には、基に対する逐次除算(短除法)を用いるのが一般的である。
[変換例:10 進数 73 → 2 進数]
73 ÷ 2 = 36 ... 余り 1 (LSB)
36 ÷ 2 = 18 ... 余り 0
18 ÷ 2 = 9 ... 余り 0
9 ÷ 2 = 4 ... 余り 1
4 ÷ 2 = 2 ... 余り 0
2 ÷ 2 = 1 ... 余り 0
1 ÷ 2 = 0 ... 余り 1 (MSB)
----------------------------------
結果:1001001
上位ビットを左側に配置して読み取る。この際、最低位のビットを LSB Least Significant Bit 、最高位を MSB Most Significant Bit と定義するのが通例である。
整数の符号付き表現形式
计算机において負数を扱う際、主に 8 ビット単位で使用される記述様式が存在する。
- 符号付き 2 進数(Sign-Magnitude): 最上位ビット(MSB)を符号ビットとし、0 が正、1 が負を意味する。
- 1 の補数(One's Complement): 負数の場合、符号ビット以外の桁を反転させる。
- 2 の補数(Two's Complement): 現在最も広く採用されている形式。符号ビット以外を反転後、全体に 1 を加算する。これにより加减算回路が一元化できる。
- 移碼(Excess Code / Offset Binary): 補数表現の符号ビットを反転させた形。指数部の符号判定などに利用される。
これらの変換ロジックを理解することで、機器レベルでの二値演算誤りを防止できる。
浮動小数点の数値範囲
非常に大きな数や極端に小さな数値を表現するために、科学技術計算向けに採用される方式がある。
N = 尾数 × 基数 ^ 指数
実装上の主な特徴:
- 浮動小数点演算フロー:対称化(階揃え)→ 演算実行 → 正規化。
- 階数部分の桁数:数値の表現可能な最大範囲を決定する。
- 尾数部分の桁数:数値の精度(有効数字)を決定する。
- 対称化ルール:小さい方の階数に合わせて、尾数をシフトし階数を合わせるのが原則。
一般的な規格では、階数部に移碼、尾数部に補数が用いられることが多い。
コンピュータシステムアーキテクチャ
従来の von Neumann 模型に基づく主要な構成要素は以下の通りである。
| 構成部 | 役割 |
|---|---|
| 演算器(ALU) | 四則演算および論理演算を実行。 |
| 制御ユニット | 命令の流れを制御し、同期信号を生成。 |
| レジスタ群 | 一時的なデータ格納と高速アクセスを行う。 (PC, IR, AC, DR など) |
| 主記憶装置 | RAM, ROM を含む。 |
CPU(Central Processing Unit)内部では、アドレスレジスタやプログラムカウンタ(PC)、インストラクションレジスタ(IR)などの専用レジスタがデータを管理している。
命令語とアドレス指定モード
マシン語は「オペランドフィールド」と「操作コードフィールド」から構成される基本単位である。
データの参照方法(アドレス指定モード)には以下のような種類がある。
- 即値(Immediate): 演算子が命令自体に含まれる。速度は速いが柔軟性に欠ける。
- 直接(Direct): 命令内にメモリアドレスが記述される。
- 間接(Indirect): 命令内の値が指すメモリ場所の中に実際のアドレスが含まれる。
- レジスタ(Register): レジスタ番号を指定し、その中の値を対象とする。
- レジスタ間接(Register Indirect): レジスタの内容をアドレスとして参照する。
プロセッサ設計アプローチ:CISC vs RISC
指令集アーキテクチャ(ISA)の設計哲学には大きく分けて 2 つのアプローチがある。
- CISC(Complex Instruction Set Computer)
- 指令の種類が多い。
- 複雑なアドレス指定をサポート。
- 命令周期が多様である。
- RISC(Reduced Instruction Set Computer)
- シンプルで短いサイクルの命令を採用。
- 命令を固定長に統一しやすいためパイプライン化に有利。
- 汎用レジスタ数を増やす傾向にある。
- ロードストア型アーキテクチャが主流。
パイプライン処理の性能評価
複数の命令の処理段階を並列化し、システムのスループットを向上させる技術である。
基本的な指標として以下が計算可能である。
- クロック時間: 各段の処理時間の中で最も長い時間を基準とする。
- 実行時間の公式: k 段のパイプラインで n 個の命令を処理する場合、初回の実行完了時間は全段分の合計時間であり、以降は 1 クロックずつ出力される。
具体的な算出式:
(ここで m は段数、n は命令数、t はステージ単体の遅延時間)
スループット TP = 命令総数 / 総実行時間
この手法により、単純逐次処理よりも効率的に処理量を増加させることができる。また、スケールアウトした超命令ワード(Super-pipelining)などによる拡張も存在する。
メモリ階層構造
コストパフォーマンスとアクセス速度のバランスを図るために、メモリは多層構造を形成する。
- 内部レジスタ: CPU 直結、最速だが容量最小。
- L1/L2 キャッシュ: SRAM 使用、頻繁にアクセスするデータを保持。
- メインメモリ(RAM): 大容量な DRAM を使用。
- 永続化ストレージ: ハードディスク、SSD、光学メディアなど。
下に行くほどアクセス時間が長く、容量が増大し、単価が低下する特性を持つ。この階層化により、システム全体のコストを抑制しつつ高速動作を実現している。