スポンサーリンク

【応用情報技術者試験】コンピュータ構成要素とハードウェアを学ぼう!     ~第2章~CPUの設計と高速化

CPUの設計と高速化は、命令セット(CISC/RISC)パイプライン処理による並列化、微細化(ムーアの法則)による物理的距離短縮、キャッシュメモリの活用、そしてマルチコア化などの技術を組み合わせ、クロック周波数向上と並行して「1クロックあたりの処理効率」を高めることで実現されます。

画像参照:https://dosparaplus.com/library/details/000548.html

クロック周波数

クロック周波数とは、コンピューターなどの電子機器内部で、処理のタイミングを合わせるための「基準となる信号(クロック信号)」が1秒間に発生する回数で、「Hz(ヘルツ)」単位で表されます。この数値が高いほど、同じ時間内でより多くの処理を行えるため、処理能力(性能)が高いことを意味します。CPUの性能を示す重要な指標の一つで、GHz(ギガヘルツ)やMHz(メガヘルツ)で表記され、3.0GHzなら1秒間に約30億回の信号が出ている計算になります。 

ポイント

  • 意味: 処理のテンポ、または「1秒間に何回信号を発信するか」の回数。
  • 単位: Hz(ヘルツ)、MHz(メガヘルツ)、GHz(ギガヘルツ)。
  • 性能: 数値が大きいほど処理が速く、高性能。
  • : 1GHzは1秒間に10億回の信号。
  • 役割: CPUなどの部品が同期して動作するための基準となる。 

補足

  • クロック信号: 高電圧と低電圧が一定のリズムで切り替わる信号で、水晶振動子などで発生させます。
  • 性能の比較: クロック周波数だけでなく、コア数(CPUの処理を行う部品の数)や内部構造も性能に影響するため、周波数だけで単純比較できない場合もあります。 

CISCとRISC

CISC(複雑命令セットコンピュータ)とRISC(縮小命令セットコンピュータ)はCPUの命令セット設計思想で、CISCは1つの命令で複雑な処理をこなしてプログラムを短くするのに対し、RISCは単純な命令のみで高速に実行(1命令1クロックを目指す)し、高速処理と電力効率を高める設計です。現在では両者の設計が融合したハイブリッド型(x86、ARMなど)が主流ですが、基本は「複雑な命令」か「単純な命令」かの違いで、用途に応じて使い分けられます。 

CISC

  • 特徴: 1つの命令で複数の処理(メモリへのアクセスや演算など)をまとめて実行できる。
  • 目的: 命令数を減らし、短いプログラムで多くの処理を行うことで、プログラムの可読性や開発効率を向上させる。
  • : Intelのx86系(PCなどで広く使われる)。 

RISC

  • 特徴: 命令の種類を減らし、1つ1つは単純な処理のみを行う。固定長の命令で高速実行(パイプライン処理)し、電力効率が良い。
  • 目的: 命令の単純化により、CPUの高速化と省電力化を実現する。
  • : ARM(スマートフォンなど)や、MIPS、SPARCなど。 

現在の状況

  • 単純な優劣ではなく、両者の良い点を組み合わせたハイブリッド型が主流。
  • CISCプロセッサも内部でRISC的な単純命令に変換して実行したり、RISCも複雑な命令を追加したりしており、両者の境界は曖昧になっています。

パイプライン

パイプライン処理とは、CPUなどの処理を「命令の読み込み」「解読」「実行」「書き込み」といった複数の工程(ステージ)に分割し、それぞれを並行して行うことで、単位時間あたりの処理量(スループット)を向上させる技術です。自動車の組立ラインのように、前の命令の工程が済んだら、次の命令の工程をすぐに開始するため、複数の命令を同時に処理でき、システム全体の処理速度が向上します。 

仕組み

  • 工程の分割: 1つの命令の処理を、「命令の取り出し(Fetch)」「命令の解読(Decode)」「データ読み出し(Operand Fetch)」「実行(Execute)」「結果書き込み(Write back)」などのステージに分割します。
  • 並行処理: ある命令の「解読」が終わったら、次の命令の「読み込み」を開始します。このように各ステージを独立させ、次の命令の処理を前倒しで進めることで、複数の命令が同時に処理状態になります。
  • スループットの向上: 1つの命令の完了時間は短縮されませんが、最終的に多くの命令をより短時間で処理できるようになります(例: 3台の自動車を3時間でなく、6時間で完成させる)。 

  • CPUの命令実行: CPU内部で命令を高速化するために使われます。
  • シェルスクリプト(UNIX/Linux)command1 | command2 | command3 のように、コマンドの出力を次のコマンドの入力に直接渡すことで、連続処理を効率化します。
  • メール送信(SMTP): 複数のコマンド(MAIL, RCPT, DATAなど)をまとめて一度に送ることで、通信のオーバーヘッドを削減します。 

メリットと注意点

  • メリット: 処理の高速化、スループットの向上。
  • 注意点:
    • 1つの命令にかかる時間(レイテンシ)は長くなる場合がある。
    • パイプラインの段数(ステージ数)を増やすと、より多くのリソースが必要になる。
    • 前の命令の処理が完了するまで次の命令に進めない「依存関係」が発生すると、パイプラインが停止し効率が落ちる(ハザードと呼ばれる)。 

ハザード

ハザードとは、命令の依存関係や資源の競合、分岐命令によってパイプライン処理が中断・遅延する状態を指し、主にデータハザード(データ依存)構造ハザード(資源競合)制御ハザード(分岐)の3種類に分類され、これらを解決するためにフォワーディングや分岐予測などの技術が用いられます。 

3つの主要なハザード

  1. データハザード
    • 原因: 後続の命令が、先行する命令の実行結果(データ)をまだ利用できない状態で読み出そうとすることで発生します。
    • : 命令Aで計算した値を命令Bが使おうとするが、命令Aの書き込みが終わっていない。
    • 対策: フォワーディング(計算結果をパイプラインの早い段階で横流しする)やパイプラインインターロック(ストールさせる)。
  2. 構造ハザード
    • 原因: 異なる命令が同じハードウェア資源(メモリやレジスタなど)を同時に使用しようとすることで発生する資源の競合です。
    • : 命令フェッチとデータアクセスが同じメモリを同時に要求する。
    • 対策: 資源を増やす、パイプラインのステージを細分化する(例:IDとWBを分割)、命令実行順序の最適化。
  3. 制御ハザード
    • 原因: 条件分岐命令の実行によって次に実行すべき命令が確定しないため、パイプラインに投入済みの無関係な命令を無駄にしてしまうことで発生します。
    • : 分岐命令の結果(真/偽)がわかるまで、後続の命令(分岐先/分岐しない先)が読めない。
    • 対策: 分岐予測(結果を予測して実行する)、分岐遅延スロット(分岐命令の次の命令スロットを無駄にしない)。 

ハザード解決のまとめ

  • データハザード: フォワーディング、インターロック、命令スケジューリング(コンパイラによる)。
  • 構造ハザード: ハードウェアの設計改善(資源の分離・増加)、命令スケジューリング。
  • 制御ハザード: 分岐予測、分岐遅延スロット。 

これらのハザードを効果的に処理することで、パイプライン処理の効率(スループット)が向上し、CPUの高速化に貢献します。 

マルチコアプロセッサ

マルチコアプロセッサとは、1つのCPUパッケージ内に2つ以上の処理コア(演算装置)を搭載したプロセッサのことで、複数の処理を同時に並列実行することで、消費電力と発熱を抑えつつ性能向上を実現します。2コアはデュアルコア、4コアはクアッドコアと呼ばれ、現代のパソコンやスマートフォンに広く普及しており、動画再生やゲーム、複数のアプリケーションの同時利用などで高い効果を発揮します。

仕組みと特徴

  • 並列処理:複数のコアがそれぞれ独立して異なるタスクを実行できるため、マルチタスク性能が向上し、システムの応答性が高まります。
  • 性能向上の手段:クロック周波数を上げると発熱と消費電力が増大する問題に対し、コア数を増やすことで性能向上を図るアプローチです。
  • 効率的な電力消費:各コアは低速で動作し、必要に応じてコア数を調整できるため、シングルコアを高クロックで動かすより電力効率が良い場合があります。
  • 単一タスクの性能:1つのプログラム(シングルスレッド)の実行速度を劇的に向上させるものではありませんが、OSやバックグラウンド処理との並行で全体の効率が上がります。
  • コア数の呼称:2コアならデュアルコア、4コアならクアッドコア、6コアならヘキサコア、8コアならオクタコアなどと呼ばれます。

メリット・デメリット

  • メリット:複数のアプリケーションを同時に快適に使える、動画編集やゲームなど負荷の高い作業がスムーズになる、電力効率が良い場合がある。
  • デメリット:コア間の通信によるオーバーヘッド(遅延)が発生する、コア数が増えるとチップサイズやコストが上がる傾向がある。

登場の背景

動画再生やグラフィック処理の需要増に対し、シングルコアCPUのクロック周波数向上には限界があったため、2000年代初頭から本格的に導入が始まりました。

コメント