コンピュータシステムアーキテクチャとデータ表現の要点まとめ

データ表現と基数変換

计算机内での数字は通常 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 ビット単位で使用される記述様式が存在する。

  1. 符号付き 2 進数(Sign-Magnitude): 最上位ビット(MSB)を符号ビットとし、0 が正、1 が負を意味する。
  2. 1 の補数(One's Complement): 負数の場合、符号ビット以外の桁を反転させる。
  3. 2 の補数(Two's Complement): 現在最も広く採用されている形式。符号ビット以外を反転後、全体に 1 を加算する。これにより加减算回路が一元化できる。
  4. 移碼(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 クロックずつ出力される。

具体的な算出式:

T_总 = m × t + (n - 1) × t
(ここで m は段数、n は命令数、t はステージ単体の遅延時間)

スループット TP = 命令総数 / 総実行時間

この手法により、単純逐次処理よりも効率的に処理量を増加させることができる。また、スケールアウトした超命令ワード(Super-pipelining)などによる拡張も存在する。

メモリ階層構造

コストパフォーマンスとアクセス速度のバランスを図るために、メモリは多層構造を形成する。

  1. 内部レジスタ: CPU 直結、最速だが容量最小。
  2. L1/L2 キャッシュ: SRAM 使用、頻繁にアクセスするデータを保持。
  3. メインメモリ(RAM): 大容量な DRAM を使用。
  4. 永続化ストレージ: ハードディスク、SSD、光学メディアなど。

下に行くほどアクセス時間が長く、容量が増大し、単価が低下する特性を持つ。この階層化により、システム全体のコストを抑制しつつ高速動作を実現している。

タグ: データ表現,コンピュータ構造,補数,浮動小数点,アドレス指定,CISC,RISC,パイプライン,メモリ階層,キャッシーヒト率,命令セットアーキテクチャ

7月4日 20:33 投稿