基本情報技術者

【基本情報技術者試験】パイプライン処理

2021年10月7日

今回のテーマはパイプライン処理です。
パイプライン?聞いたことがない言葉ですね。

問題

RISCプロセッサの5段パイプラインの命令実行制御の順序はどれか。ここで,このパイプラインのステージは次の五つとする。

① 書込み
② 実行とアドレス生成
③ 命令デコードとレジスタファイル読出し
④ 命令フェッチ
⑤ メモリアクセス

  • ア:③,④,②,⑤,①
  • イ:③,⑤,②,④,①
  • ウ:④,③,②,⑤,①
  • エ:④,⑤,③,②,①

基本情報技術者平成28年春期 午前問10

問題

スーパスカラの説明はどれか。

  • ア:処理すべきベクトルの長さがベクトルレジスタより長い場合,ベクトルレジスタの長さの組に分割して処理を繰り返す方式である。
  • イ:パイプラインを更に細分化することによって,高速化を図る方式である。
  • ウ:複数のパイプラインを用いて,同時に複数の命令を実行可能にすることによって,高速化を図る方式である。
  • エ:命令語を長く取り,一つの命令で複数の機能ユニットを同時に制御することによって,高速化を図る方式である。

基本情報技術者平成20年春期 午前問17

基本情報技術者試験や応用情報技術者試験で出題されるパイプライン処理の問題。パイプライン処理の動きを理解していないと難しく感じる問題ですが、パイプライン処理の動きを理解していればそこまで難しい問題ではありません。

本記事では、パイプライン処理について図解で分かりやすく解説していきます。

本記事で学べること

  • パイプライン処理について理解する
  • スーパーパイプラインスーパースカラVLIWについて理解する
  • 基本情報技術者試験の過去問の解き方を学ぶ

パイプライン処理

パイプライン処理は、CPU(プロセッサ)の性能を向上させるための技術のひとつであり、複数の命令を並行して実行するための方式です。

コンピュータは次のようなサイクル(段階)で命令を処理します。

段階処理内容
1命令の取り出し(命令フェッチ)
2命令の解読(デコード)
3対象データの読み出し(オペランドの読み出し)
4命令の実行
5結果の書き込み

スポンサーリンク

パイプライン処理ではなく、次のように命令をひとつずつ順番に処理していく方式だと、ひとつの命令が終わるまで次の命令を処理することができません。

逐次制御方式のイメージ例

上記のように命令をひとつずつ順番に処理していく方式を逐次制御方式(ちくじせいぎょほうしき)といいます。

この問題を解消したのがパイプライン処理です。

パイプライン処理は「F:命令の取り出し」「D:命令の解読」「O:対象データの読み出し」「E:命令の実行」「W:結果の書き込み」の各工程(段階)を流れ作業のように処理することで、複数の命令を効率よく実行する方式です。

次の図はパイプライン処理のイメージ例です。

パイプライン処理

ひとつの命令が終わるまで次の命令を実行できない逐次制御方式とは違い、パイプライン処理では段階ごとに制御できるため、命令1の「F」が終わったら、命令1の「D」~「W」の終了を待たずに、命令2の「F」を処理することができます。(命令1の「D」と命令2の「F」を並行して処理できる)

スーパーパイプライン

スーパーパイプラインは、パイプライン処理の段階を更に細分化することによって高速化を図る手法です。

以下はスーパーパイプラインのイメージ例です。(「F」を「F1」「F2」「F3」に細分化、「D」「O」「E」「W」も同様に細分化)

スーパーパイプライン

一般的なパイプライン処理は5段階前後で構成されることが多いが、スーパーパイプラインはより小さな処理単位に細分化され、10段階以上の工程に分解されます。

暗記ポイント

  • スーパーパイプライン:パイプライン処理の段階を更に細分化したもの

スーパースカラ

スーパースカラとは、パイプライン処理を行う回路を複数持つことで複数の命令を同時に実行する仕組みです。

通常はパイプライン処理を行う回路がひとつしかないが、スーパースカラではパイプライン処理を行う回路を複数持つことができます。回路を複数持つことで複数の命令を同時に実行することができます。

以下はスーパースカラのイメージ例です。パイプラインの実行ユニットを2つ持つ(※今回の例では回路2つ)ことで、同時に2つの命令を処理できます。

スーパーパイプライン

暗記ポイント

  • スーパースカラ:パイプライン処理を行う回路を複数持つことで複数の命令を同時に実行する仕組み

VLIW

VLIW(Very Long Instruction Word)とは、依存関係のない複数の命令をひとつの複合命令として同時に実行させる手法です。

以下はVLIWのイメージ例です。本来は別々に実行される4つの命令をひとつの命令として実行します。

VLIWのイメージ例

例えば、32ビット長の命令を4つ同時に投入・実行できる128ビット長の実行ユニットを搭載するVLIWプロセッサでは、プログラムを4命令ずつ一度に実行することができます。

VLIWは命令長を揃える必要があるため、複数の命令をひとつにまとめた結果が規定の長さに満たない場合は、NOP命令(No Operation)で埋めます。(NOP命令は「何もしない」という意味で、NOP命令が増えるほど効率が落ちる)

VLIWのNOP

暗記ポイント

  • VLIW:依存関係のない複数の命令をひとつの複合命令として同時に実行させる手法

基本情報技術者試験 過去問の解説

スポンサーリンク

基本情報技術者平成28年春期 午前問10

問題

RISCプロセッサの5段パイプラインの命令実行制御の順序はどれか。ここで,このパイプラインのステージは次の五つとする。

① 書込み
② 実行とアドレス生成
③ 命令デコードとレジスタファイル読出し
④ 命令フェッチ
⑤ メモリアクセス

  • ア:③,④,②,⑤,①
  • イ:③,⑤,②,④,①
  • ウ:④,③,②,⑤,①
  • エ:④,⑤,③,②,①

基本情報技術者平成28年春期 午前問10

コンピュータは、次のようなサイクルで命令を処理していきます。

  1. 命令の取り出し(命令フェッチ)
  2. 命令の解読(デコード)
  3. 対象データの読み出し(オペランドの読み出し)
  4. 命令の実行
  5. 結果の書き込み

設問の①~⑤を上記のサイクルにあてはめてみます。

① 書込み → 5. 結果の書き込み
② 実行とアドレス生成 → 4. 命令の実行
③ 命令デコードとレジスタファイル読出し → 2. 命令の解読(デコード)、3. 対象データの読み出し
④ 命令フェッチ → 1. 命令の取り出し(命令フェッチ)
⑤ メモリアクセス →

上記より④ → ③ → ② → ① の順番となり、この時点で解答の「ア」と「イ」は④ → ③ → ② → ① の順番になっていないので不正解なのがわかります。

あとは残りは⑤がどの位置に入るかを考えます。

残りの解答「ウ」と「エ」を見てみると、「⑤メモリアクセス」が入る可能性があるのは「③ 命令デコードとレジスタファイル読出し」の前か「① 書込み」の前です。

ここで設問の③をみると「③ 命令デコードとレジスタファイル読出し」と2つの操作が書かれており、命令デコードした後、対象データをメモリではなくレジスタファイルから読み取ることがわかります。(メモリアクセスは書込み目的のためと考えられる)

上記の理由より「⑤ メモリアクセス」は「① 書込み」の前に挿入し「④,③,②,⑤,①」の「ウ」が正解です。

基本情報技術者平成20年春期 午前問17

問題

スーパスカラの説明はどれか。

ア:処理すべきベクトルの長さがベクトルレジスタより長い場合,ベクトルレジスタの長さの組に分割して処理を繰り返す方式である。
イ:パイプラインを更に細分化することによって,高速化を図る方式である。
ウ:複数のパイプラインを用いて,同時に複数の命令を実行可能にすることによって,高速化を図る方式である。
エ:命令語を長く取り,一つの命令で複数の機能ユニットを同時に制御することによって,高速化を図る方式である。

基本情報技術者平成20年春期 午前問17

スーパースカラとは、パイプライン処理を行う回路を複数持つことで複数の命令を同時に実行する仕組みです。

スーパースカラの説明として正しいのはどれか、解答のア~エを順番に確認していきます。

■解答ア

処理すべきベクトルの長さがベクトルレジスタより長い場合,ベクトルレジスタの長さの組に分割して処理を繰り返す方式である。

ベクトル処理方式の説明なので不正解

■解答イ

パイプラインを更に細分化することによって,高速化を図る方式である。

スーパーパイプラインの説明なので不正解

■解答ウ

複数のパイプラインを用いて,同時に複数の命令を実行可能にすることによって,高速化を図る方式である。

スーパースカラの説明なので正解

■解答エ

命令語を長く取り,一つの命令で複数の機能ユニットを同時に制御することによって,高速化を図る方式である。

VLIW(Very Long Instruction Word)の説明なので不正解

helpful