1. ハードウェア
    1. ハードウェアとは
    2. コンピュータを構成する機械。

    3. プロセッサ(処理装置)
      1. アーキテクチャ
        • ワイヤードロジック方式
        •  命令をすべてハードウェア(論理ゲートフリップフロップ)で実現する。マイクロプログラム方式と比べて高速。柔軟性に欠け、プロセッサーの規模が大きくなりやすい。

        • マイクロプログラム方式
        •  命令を論理ゲートやフリップフロップよりも単純な命令(マイクロプログラム)で表す。ワイヤードロジック方式と比べて柔軟に命令の修正ができる。

         上記の方式によりプロセッサが実行可能になる命令を命令セットと呼ぶ。これによりプロセッサは以下に分類される。

        • RISC
        •  使用頻度の高い最小限の命令だけで命令セットを構成。通常はワイヤードロジックが採用される。

        • CISC
        •  複雑で高機能な命令セットで構成される。通常はマイクロプログラム方式が採用される。

      2. 性能評価
      3.  プロセッサの命令実行は一定間隔で発生するデジタル信号とシンクロして行われる。この同期信号をクロックと呼び、1秒間に発生するクロックの数をクロック周波数と呼ぶ。この逆数を求めればクロックサイクル…1クロック当たりの所要時間(ナノ秒)が導き出される。

        クロックサイクル = 1 ÷ クロック周波数 × 10-9

         命令セットを実行するために必要なクロック数をCPI(Cycles Per Instruction)と呼ぶ。プロセッサに実装された各命令セットはそれぞれ必要なクロック数が異なるため、各命令セットのCPIを求めただけではプロセッサのCPIは決まらない。このため、各命令セットのCPIと出現確立により平均値を導き出し、それをプロセッサのCPI平均値とする。この際に用いられる各命令セットの出現確立表を命令ミックスと呼ぶ。

        例)命令ミックス(クロック周波数400MHzの場合)
        命令の種類 CPI 出現確率
        四則演算 12 0.4
        条件分岐 18 0.2
        論理演算 16 0.2

        プロセッサのCPI平均値 = Σ(CPI × 出現確立)

        = 12×0.4 + 18×0.2 + 16×0.2
        = 4.8 + 3.6 + 3.2
        = 11.6

         プロセッサの性能評価指標としては1秒間に実行できる命令セット数の平均値を100万単位で表したMIPS(Million Instructions Second)と同じく1秒間に実行できる浮動小数点数演算の回数を表したFLOPS(主に科学技術計算用のコンピュータで用いる)がある。

        MIPS = クロック周波数 ÷ CPI平均値 ÷ 106

      4. 高速化技術
        • マルチプロセッサ
        •  プロセッサは並行処理を実現することにより高速化が可能。並行処理をどのように実現するかでプロセッサは分類される。

          • SISD(Single Instruction Stream / Single Data Stream)
          •  単一の命令とデータを処理する。プロセッサは単体。

          • SIMD(Single Intsruction Stream / Multiple Data Stream)
          •  単一の命令で複数のデータを処理する。プロセッサは単体だが演算装置は複数あり、制御装置がコントロールする。

          • MIMD(Multiple Intsruction Stream / Multiple Data Stream)
          •  複数の命令で複数のデータを処理する。プロセッサは複数。

           複数のプロセッサを並行処理させるマルチプロセッサはMIMDにあたる。プロセッサのコア(演算装置)を複数持ち、キャッシュメモリを各コアで共有しながら並行処理を実現したプロセッサをマルチコアプロセッサと呼ぶ。

        • パイプライン
        • 命令パイプラインは命令を並列に処理するための技術。命令を「フェッチ」、「デコード」、「オペランドのアドレス計算」、「オペランドのデコード」、「実行」、「ライトバック」のステージに分割して必要な処理時間(ピッチ)を割り当てる。同時に実行できる命令の数をパイプラインの深さと呼ぶ。パイプラインは処理を並列化することで次に実行する命令をあらかじめ読み込んで(フェッチ)おくことで、連続した命令の実行をスムーズにする。ただし、プログラムの条件分岐などであらかじめ読み込んだ命令が利用されないとなると、パイプラインが乱れることがある(制御ハザード)。このパイプラインを実行するユニットをプロセッサ内に複数持つことでパイプラインそのものを並列実行することをスーパースカラと呼ぶ。

        • VLIW(Very Long Insyruction Word)
        •  同時に実行可能な複数の命令をまとめて長形式命令を生成し、これを複数の演算ユニットで実行する。

      5. アムダールの法則
      6.  プロセッサを高速化しただけではハードウェア全体の処理が高速化するとは限らない。このため、速度向上比を求めて高速化の限界を割り出す。

        速度向上比
        = 1 ÷ (高速化率 ÷ 高速化倍数 + 非高速化率)
        = 1 ÷ (高速化率 ÷ 高速化倍数 + (1 - 高速化率))

    4. メモリ(主記憶装置)
      1. 集積回路(IC)
        • バイポーラ型
        •  バイポーラトランジスタ(双極キャリアをもつ最も一般的な半導体素子)を用いる。CMOSと比較して高速だが、集積度が低く(記憶容量が小さい)相対的に消費電力や製造コストが高い。

        • CMOS型
        •  PMOSとNMOSトランジスタを組み合わせて用いる。バイポーラと比較して低速だが、集積度が高く(記憶容量が大きい)相対的に消費電力や製造コストが低い。

      2. RAMとROM
        • RAM(Random Access Memory)
        •  データの読み出し、書き込みが可能なメモリ。主記憶装置やキャッシュメモリとして利用される。電流が遮断されると記憶内容を失う。

          • DRAM(Dynamic RAM)
          •  主に主記憶に用いられる。トランジスタを用いるため、リフレッシュ(データの再書き込み)が必要。このためアクセス速度が遅く、製造コストは低い。

          • SRAM(Static RAM)
          •  主にキャッシュメモリに用いられる。フリップフロップ回路(論理回路)を用いるためリフレッシュが不要。このためアクセス速度は高いが製造コストも高くなる。

        • ROM(Read Only Memory)
        •  データの読み出しのみ可能なメモリ。マザーボード等の制御プログラムの格納用に用いられる。電流が遮断されても記憶内容を保持する。

      3. ECC(Error Check and Correct)メモリ
      4.  2ビットの誤りを検出し、1ビットの誤りを訂正するハミング符号を実装するメモリ。

      5. 高速化技術
        • キャッシュメモリ
        •  上記のアムダールの法則により、プロセッサの処理速度を向上してもメモリの処理速度を向上しないとコンピュータ全体の処理速度は向上しないことが知られている。メインメモリに一般的に用いられるDRAMは安価だが処理速度が遅いため、処理装置と主記憶装置の間に高速、小容量のメモリを配置して利用頻度の高いデータやプログラムを配置しておく。これがキャッシュメモリである。

          • 局所参照性
          •  ループ処理などが繰返しあることでプログラムの限られた箇所を頻繁に参照する性質のこと。この箇所を高速なメモリに保持する(キャッシュ)ことでメモリの高速化を図る。条件分岐やサブルーチンが多いプログラムは参照先が細分化されるため局所参照性が低下する。

          • 動作原理
          •  主記憶およびキャッシュをブロックと呼ばれる単位で管理し、ブロック内の特定のアドレスが参照されるとブロックごとキャッシュメモリにブロック転送する。プロセッサがメモリアクセスするにあたり、このキャッシュがあれば高速にメモリアクセスすることができ、なければ主記憶からブロック転送する。キャッシュメモリがいっぱいであれば、主記憶にいずれかのブロックをブロック転送して空き容量を確保する。
             メモリアクセスの際、キャッシュにアクセスの対象となるブロックが存在することをヒットするといい、ヒットする確率のことをヒット率と呼ぶ。上記の局所参照性が低いプログラムの場合はこのヒット率が低下する傾向にある。

          • 実行アクセス時間
          •  主記憶にヒットしない時間とキャッシュメモリにヒットする時間の和を求める。

            実行アクセス時間 = (1 - ヒット率) × 主記憶アクセス時間 + ヒット率 × キャッシュメモリアクセス時間

          • コヒーレンシ(同一性)
          •  キャッシュを命令キャッシュデータキャッシュの2種類に分けることを2Wayキャッシュと呼ぶ。命令キャッシュは処理の実行で内容が変更されることはないがデータキャッシュはその可能性があるため主記憶とのコヒーレンシ(同一性)を保つ制御をする必要がある。

            • ライトスルー方式
            •  キャッシュの内容変更時に主記憶の該当ブロックにも反映される方式。アクセス時間が低下する。

            • ライトバック方式
            •  キャッシュメモリから主記憶にブロック転送することで主記憶に反映させる方式。キャッシュメモリがいっぱいになり、追い出されるタイミングでのみ主記憶に反映されるためアクセス時間は最小で済むが、キャッシュメモリと主記憶の内容にタイムラグが生じる。

          • 割り付け方式
          •  キャッシュメモリのどの位置にブロックを格納するかを決める方式。

            • ダイレクトマッピング方式
            •  主記憶のブロックと対になるブロックをキャッシュメモリにも設定し、配置位置があらかじめ決まっている方式。

            • フルアソシエイティブ方式
            •  キャッシュメモリの任意の位置にブロックを配置する方式。主記憶とキャッシュメモリそれぞれの位置の対応は別途関連付けを記憶するメモリで行う。

            • セットアソシエイティブ方式
            •  ブロックを複数まとめたセット単位で管理しこのセットはダイレクトマッピング、セット内のブロックはフルアソシエイティブで配置する。

        • メモリインターリーブ
        • メモリインターリーブはメモリの並列処理技術。メモリをいくつかの区画(バンク)に分けて、このバンクを並列にアクセスすることでアクセス時間の高速化を図る。

    5. I/O(入出力)
    6.  I/O(Input/Output)とはコンピュータへのデータの入出力を指す。コンピュータはI/Oにより外部の情報を受け取り、これを処理して結果を外部に発信する。

      1. バス
      2.  コンピュータの各構成機器をつなぐ伝送路をバスと呼ぶ。この中でもプロセッサ内の各ユニットをつなぐバスを内部バス。プロセッサと他のユニットをつなぐバスを外部バスと呼ぶ。外部バスの中でもメモリなどと接続する高速なシステムバスと入出力機器と接続する低速な入出力バスに分かれる。バスの転送速度は転送方式によって左右される。パラレルバスは複数ビットを並列に転送し、シリアルバスは1ビットづつ直列に転送する。パラレルバスを採用したバスには「PCI(パソコン標準)」、「AGP(グラフィックカード)」、「VME(ワークステーション,計測器)」があったが、シリアルバスのほうがクロック数の向上に伴い高速化し、仕組みも単純でコスト面でも優れていることから「PCIe(PCI,AGPの後継)」はシリアルバスを転送方式に採用している。

      3. システムバス入出力制御方式
      4.  プロセッサとメモリなどをつなぐシステムバスには以下のような制御方式がある。

        • プログラム制御方式
        •  プロセッサが直接制御する方式。プロセッサに負荷がかかる。

        • DMA制御方式
        •  DMAコントローラと呼ばれる転送専用のユニットが制御する。

        • チャネル制御方式
        •  チャネルと呼ばれる、専用のデバイスを用いて制御する。

      5. 入出力バスインターフェース
      6.  外部機器と接続する入出力バスのインターフェースは規格化されている。代表的なものに以下のようなものがある。

        主な入出力インターフェース規格
        名称 転送方式 転送速度 詳細
        RS-232C シリアル 115.2kビット/秒 旧世代の主要な規格
        ATA-4 パラレル 33.3Mバイト/秒 汎用パラレルインターフェース
        シリアルATA シリアル 1.5Gビット/秒 シリアルインターフェースのATA
        SCSI パラレル 5Mバイト/秒 ハードディスクとの接続に利用
        USB シリアル 12M~5Gビット/秒 主要なシリアルインターフェース
        IEEE1394 シリアル 100M~3.2Gビット/秒 AV機器との接続に利用

    7. ハードディスク(補助記憶装置)
      • 磁気ディスク
      •  磁気のS極、N極の違いによりビット列を設定する仕組みの記憶装置。アクセスは磁気ヘッドで対象のセクタの磁気を受けることで行う。1バイトあたりの製造コストが安い。

      • SSD(Solid State Drive)
      •  フラッシュメモリを用いた記憶装置。磁気ディスクに比べて1バイト当たりの製造コストが高いが、高速にアクセスできる。