コンピュータの頭脳であるCPU(中央処理装置)は、命令を一つずつ順番に処理していると、どうしても「待ち時間」が多くなってしまい非効率に。
この「待ち時間」を減らして、CPUをもっと効率よく動かすために使われるのが パイプライン処理 という技術。
■ パイプライン処理とは?
パイプライン処理とは、命令の実行を「分業」させて並行で進める仕組み。
たとえば、次のようなステップに分けて処理を行う。
- 命令の取り出し
- 命令の解読
- データの読み出し
- 命令の実行
これらを同時進行で行うことで、全体の処理効率をアップさせる。
■ ただし課題も……分岐ハザードとは?
パイプライン処理では、命令をどんどん「先読み」して進めていく。
ところが、プログラムの中には「もし○○なら、△△へ進む」といった「分岐命令」があったりする。
このとき、先読みした命令が間違った分岐の方向に進んでいたら……?
せっかく先読みしていた分が ムダ になってしまう。。。これが 分岐ハザード 。
■ 解決策:分岐予測と投機実行
分岐ハザードを避けるために使われるのが「分岐予測」と「投機実行」。
- 分岐予測:次に進む道を予測しておく
- 投機実行:予測に基づいて命令を先に実行しておく
予測が当たれば効率UP、外れたらやり直しに。
つまり、「予測の精度」がCPUの性能に大きく関わるのです。
■ スーパーパイプラインとは?
パイプラインの1ステージをさらに細かく分けて、より効率的に処理する方法を スーパーパイプライン という。
1つの命令を処理する流れをさらに分業化することで、より多くの命令をスムーズに処理できる。
■ スーパースカラとは?
パイプライン自体を 複数 持たせて、複数の命令を同時に処理する方法。
これにより、同じ時間内により多くの命令を処理できるようになる。
■ CISCとRISC
CPUの設計思想には、大きく分けて以下の2つがある。
- CISC(Complex Instruction Set Computer)
高機能な命令を用意し、1つの命令で複雑な処理ができるようにするアプローチ。
→ 命令数は多いが、1命令で済むことも多い。 - RISC(Reduced Instruction Set Computer)
シンプルな命令だけを用意し、それを高速でたくさん実行することで処理を進めるアプローチ。
→ 命令は単純だが、とにかく速い。
コメント