現在、私は秋の基本情報技術者試験に向けて勉強中です。
その中で、私が得た知識をまとめて記事にしています。
本記事のテーマ
【基本情報技術者になろう!】
・CPUの高速化
はじめに
複数の命令を並行して実行させることができれば、回路の遊び時間をなくし、処理効率を高めることができます。
並行命令の例として、レストランを想像してみましょう。注文をとってくる人がいて、その食材を用意する人がいて、出来上がった品を席まで運ぶ人がいて・・・という時に、1品ずつ席に運び終えるまで次の注文をとってくれないとしたらどうでしょうか?
非効率だなーと思いますよね。「この非効率で段取り力皆無」なことをしているのが、逐次制御方式として挙げている流れな訳です。
一人が同時に複数の注文を取るのは無理でしょうが、次から次へと注文をとっていくことはできるはずです。そうすれば、次の食材を用意する係りの人だって、次から次へと用意しておくことができるんです。
つまり、「複数命令を並行して実行」というのは、これと同じ事をあんたやりなさいよということなのです。そうすることで出番待ちしちゃっている無駄をなくし、全体の処理効率を高めることができる。この手法をパイプライン処理と呼びます。
ちなみに、命令実行手順の各段階のこと(FやDやOなどの1つの実行)をステージと呼びます。
パイプライン処理
実際のパイプライン処理の流れを見ていきます。
そんな感じでポンポン次の命令へと進むようにすると、全体は次の図のように並行して進むことになります。
ただし、次から次へと命令を先読みしていっているので、分岐命令などが出てきた場合は、先読み分が無駄になってしますことがあります。これを分岐ハザードと呼びます。
分岐予測と投機実行
処理の中には「Aの時は命令5を実行する」というように分岐条件が発生します。この時、分岐結果が明確になるまで、次の命令を処理開始できないため、パイプライン処理にとっての問題になります。
そこで、この分岐が実施されるのか、その場合の次の命令はどれかを予測することで、無駄な待ち時間を生じさせないようにします。これを分岐予測と言います。
その予測に基づいて、無駄になるかもしれないけど先に実行しておこう!と、分岐先の命令を実行開始する手法が投機実行です。
スーパーパイプラインとスーパスカラ
パイプライン処理による高速化をさらに推し進める手法として、スーパーパイプラインやスーパースカラがあります。
スーパーパイプライン
各ステージの中身をさらに細かいステージに分割することで、パイプライン処理の効率アップを図るものです。
スーパースカラ
パイプライン処理を行う回路を複数持たせることで、全く同時に複数の命令を実行できるようにしたものです。
CISCとRISC
ここではCPUのアーキテクチャについても軽く触れていきます。アーキテクチャというのは基本設計や設計思想という意味の言葉です。
CPUには。高機能な命令を持つCISC、単純な命令のみで構成されるRISCいう2つのアーキテクチャがあります。
CISC(Complex Instruction Set Computer)
CISCはCPUに高機能な命令を持たせることによって、1つの命令で複雑な処理を実現するアーキテクチャです。
RISC(Reduced Instruction Set Computer)
RISCはCPU内部に単純な命令しか持たない代わりに、それらをハードウェアのみで実装して、1つ1つの命令を高速に処理するアーキテクチャです。
以上でCPUの高速化技術の説明を終了します。
IPhoneやPS4などにも組み込まれているCPUはARM社のものですが、このCPUはRISCのCPUです。ARMはHuawaiとの取引を中止したことで話題になりました。(2019年5月23日現在)これからもARMのCPUはいろんなところで使われ続けると思いますので覚えておきましょう!
参考資料
・キタミ式イラストIT塾 基本情報技術者 平成31/01年