こんにちは😀
今回は、CPUの高速化をはかる技術に関してまとめました。
CPUの高速化は、複数の命令を並行して実行させることができれば処理効率を高めることができます。
複数の命令を並行実行させるということは、出番待ちしている無駄をなくす必要があります。
これを実現する手法にパイプライン処理があります。
パイプライン処理とは
例えば、
処理Aが命令①の取り出しを行います。
次に、処理Aが命令①の作業を処理Bにバトンタッチします。
処理Aは命令②の処理に移ります。
処理Bが命令①の処理が終了したら、作業を処理Cにバトンタッチします。
処理Bは命令②に移り、処理Aは命令③に移ります。
このように複数の処理が、並行して次の命令へと進む手法をパイプライン処理と言います。
パイプライン処理は次から次へと命令を先読みしているので、分岐命令などが出てきた場合は、先読み分が無駄になってしまうことがあります。
このようなパイプライン処理の乱れをハザードと言います。
分岐命令に起因する制御ハザード、
ハードウェアの競合に起因する構造ハザード、
後続の命令で用いるデータが、他の命令の結果待ちになるデータハザードがあります。
分岐予測と投機実行とは
分岐を実施する際に、次の命令はどれかを予測することで、無駄な待ち時間を生じさせないようにすることを、分岐予測と言います。
その予測に基づいて、分岐先の命令を実行開始する手法を投機実行と言います。
スーパーパイプラインとは
パイプライン処理による高速化をされに推し進める手法として、スーパーパイプラインがあります。
各ステージの中身をさらに細かいステージに分割することで、パイプライン処理の効率向上をはかります。
スーパースカラとは
また、スーパースカラもパイプライン処理による高速化の手法になります。
パイプライン処理を行う回路を複数持たせることで、全く同時に複数の命令を実行できるようにしたものです。
VLIWとは
スーパースカラとは異なり、ソフトウェア処理に重点を置いた高速化手法をVLIW(Very Long Instruction Word)と言います。
VLIWは、同時に実行可能な複数の動作をまとめて1つの命令にすることで、複数の命令を同時に実行させる手法です。
今回の一言・・・
作成したシステムを効率良く動かすためにも今回の高速化技術を知っておくといいと感じました。
負荷のかからないシステム設計にも意識していきたいと思います。
ここまで読んでくれてありがとう。
では、また次回。
コメント