パイプライン処理の基本を学ぶ

前回の勉強内容

ponsuke-tarou.hatenablog.com

今回の勉強内容 : パイプライン処理の基本を学ぶ

勉強のきっかけになった問題

スーパスカラの説明として、適切なものはどれか。

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

必ず受かる情報処理技術者試験-平成24年度春季-応用情報技術者-問題・解答11

パイプライン処理とは、マイクロプロセッサの高速化手法の一つです。

プロセッサ内での命令処理は、複数の段階を順次行います。

  • 処理の段階
    1. 命令の読み込み(フェッチ)
    2. 解釈(デコード)
    3. 実行(エグゼキュート)
    4. 結果の書き込み(ライトバック)

通常は、前の命令のサイクルが完全に終わらないと、次の命令を処理し始めることはできません。

http://mt-net.vis.ne.jp/images/501/FE2000S_18_a1.gif
パイプライン処理 [徹底研究!情報処理試験]

パイプライン処理は、各段階の処理を独立して動作させることで、前の命令のサイクルが終わる前に次の命令を処理し始められます。

http://mt-net.vis.ne.jp/images/501/FE2000S_18_a2.gif
パイプライン処理 [徹底研究!情報処理試験]

パイプライン処理には種類があります。

命令の処理を独立して実行できる工程に分割するのが、命令パイプラインです。
  • 英語 : pipeline processing

https://image.slidesharecdn.com/kagamicomput201514-150713021412-lva1-app6892/95/kagamicomput201514-14-638.jpg?cb=1436753672
kagami_comput2015_14

レンダリング処理の高速化に特化しているのが、グラフィックスパイプラインです。

3次元コンピュータグラフィックスで、3次元から2次元のデータを作る多段階の過程全体をパイプライン処理によって高速化しています。

https://game.watch.impress.co.jp/img/gmw/docs/590/700/ps_42_s.gif
西川善司の3Dゲームファンのための「プレイステーション 4」グラフィックス」講座(後編) - GAME Watch

命令パイプラインによる並列化と同じ方法でループ処理を最適化するのが、ソフトウェアパイプラインです。

アウト・オブ・オーダー実行*1に似ているものの、命令の並べ替えがCPU ではなくコンパイラで 行われる点に違いがあります。

http://my-web-site.iobb.net/~yuki/wp-content/uploads/2017/06/200612_dsp04_pipe.jpg
TI C64x DSPによる画像認識の最適化実装 | ある計算機屋さんの手帳

スーパースカラは、複数のパイプラインで並列に命令を処理できるようにする機構です。

並列実行可能な複数の命令を,複数の演算器(パイプライン)に振り分けることによって並列に実行する。
平成31年春期問8 スーパスカラの説明はどれか|応用情報技術者試験.com

https://ascii.jp/elem/000/000/555/555472/fig1_c_740x500.jpg
https://ascii.jp/elem/000/000/555/555471/

https://image.itmedia.co.jp/edn/articles/1702/24/tt170224MCUQA35_001.jpg
スーパースカラって何? (1/3) - EDN Japan

スーパーパイプラインは、パイプラインの段階を細分化して多くすることで並走できる命令数を増やします。

http://www.myelq.com/Glossary/Images/superpipeline.gif
スーパーパイプライン

https://img.atwikiimg.com/www38.atwiki.jp/hiropknot/attach/69/47/%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3.gif
コンピュータ構成要素 - hiropknot @ ウィキ - アットウィキ

http://www.ap-siken.com/kakomon/27_haru/img/09.gif
http://semirara.sota1235.net/general/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%82%B9%E3%82%AB%E3%83%A9

f:id:ponsuke_tarou:20190314233906p:plain
パイプライン制御方式
f:id:ponsuke_tarou:20190314231009p:plain
思い出の一枚

次回の勉強内容

ponsuke-tarou.hatenablog.com

*1:コンピュータのプロセッサー(CPU)が命令を処理するとき、規定の順番(操作手順)を守らないで実行するやりかた。命令を一時的に溜めておき、命令を細分化してできる作業から実行する方式。メリット:無駄な待ち時間が発生しないのでの作業を高速化できる。デメリット:作業の分割など手間のかかる作業が増えるので、処理工程は複雑になる