CPUでよく聞くパイプラインとは?

こんにちは望月です。
今日は歯医者に行ってきました。
特に虫歯もなく、無事に終わりました。
甘いものが大好きなので少し不安でしたが、悪くなっていなくて一安心でした。

さて、今回はCPUの解説等でよく耳にする、パイプラインについて紹介したいと思います。
そもそもパイプラインとは何でしょか?
正式にはパイプライン処理と言うそうで、通常処理する情報がプロセッサーへと運ばれたとき、プロセッサーは、「読み込み」→「解釈」→「実行」→「結果」と言うように流れます。
しかし、これをいちいちやると結構時間がかかります。
そこで、ある程度情報が処理される過程で処理後を仮定し、各部署で先に処理をしておきます。すると本来の情報が各部署にたどり着いたとき、もう結果ができているのですぐ次にまわすことができ、結果としてかなり処理が高速化されます。
よくパイプラインの解説サイト等でベルトコンベアのようなものと言われるのはこのためです。

これは今説明したのを簡単な図にまとめたものです。
たとえば、「A,C,B,D」を「A,B,C,D」と並び替える処理がきたとしましょう。
パイプライン仕組み
この情報は上図のようにしょりされ、実際の処理が各部署へたどり着くときはすでに処理ができていて立ち止まることなく処理されていきます。
さっきちょこっとあげたベルトコンベアの例を車の場合で考えると、タイヤやドア、エンジンや内装と言った一つ一つの部品をあらかじめ作っておき、ベルトコンベアで運ばれてきた胴体に次々と部品をはめていくような感じです。
ちなみに、インテルCPUで採用されているハイパースレッディング(以下HT)は先読みによって何もすることの無くなった各部署にさらに次回ってくる情報を先に読み込ませておくことで、さらに処理を高速化する技術を言います。つまり、普段1コアでも2コアのように見えるPCの場合、パイプラインに空きが無ければ、1コアとしか認識されないことがあります。断言はできませんが、おそらくこれが原因だと思っています。

ではパイプラインに空きが無いというのはどういう状況なのでしょうか?
そのもっともたる理由は予測の失敗があります。
あくまでも予測で処理を進めていくため、予期せぬ事態に遭遇して予測した処理が実際の処理と異なってエラーとして処理されることがあります。こうした場合は再び処理しなおしたりするわけですが、そうするとHT搭載のCPUの場合パイプラインの空きが無くなるため、高速に処理するための機構が逆に遅くなってしまいます。
このため、本来HTは理論上では1コアあたり3スレッド以上にすることも可能ですが、2スレッドに抑えているとのことです。

最近のCPUはよく、省電力に目が行きますが、処理スピードの面ではこの予測ミスを減らせるように研究が進められています。
早くパイプラインの信頼性が今以上に向上して1コア4スレッドなんてモンスターコアを開発してほしいものですね!

注:パイプラインについては望月自信もよく分からないところがあるため間違った記述があるかも知れません。そのときは連絡をいただけると幸いです。

いかがでしたか?
今日はパイプラインについて解説させていただきました。
ではまたお会いしましょう!
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

よつや

Author:よつや
こんにちはよつやです。
主にPC関係の記事を書いていきます。
コメントやメッセージ大歓迎です。
相互リンクなども遠慮なくお申し付けください!

アクセスランキング
[ジャンルランキング]
コンピュータ
333位
アクセスランキングを見る>>

[サブジャンルランキング]
その他
70位
アクセスランキングを見る>>
twitter
カテゴリ
最新記事
RSSリンクの表示
最新コメント
最新トラックバック
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

リンク
検索フォーム
RSSリンクの表示
QRコード
QR