第7回分

分岐予測と投機的実行ではどちらがよいか?

分岐命令時にパイプラインの乱れをおさえる工夫としては実際どちらのほうが多く使われていますか?

パイプラインの仕様効率と、必要な回路規模のトレードオフですので、 どちらをとるか、というところでしょうか。

投機的実行は同時に実行する分、逆に時間がかかりそうな気がしますがどれだけ速いですか?

パイプラインで投機的実行は無駄な処理が毎回入ってしまうが、無駄をしても速いほうがメリットが大きいか?

投機的実行では、同時に両方の可能性をやっておいて、正しかったほうを続ける、 という方法ですから、普通のやり方よりも時間がかかることはないです。

分岐予測、投機的実行はいつなされるか?分岐命令のFがされたあとですか?

Dの段でしょうね。 Dで分岐命令であることが判明した後、でしょう。

パイプライン処理の中で2つの処理を同時に実行することは本当に可能か?

もちろん命令実行ユニットを2つ用意しておくことになります。 つまり部分的なマルチプロセッサですね。

パイプラインの乱れを抑える2種類の工夫はコンピュータの内部でどちらの方法がいいかと判断して使われているのか?それとも最初からどちらを使うか決められているのか?

プロセッサの設計時にアーキテクチャとして決めるもの、ですね。

投機的実行において分岐の真偽の2つのメモリにアクセスすることになるがその分の遅れや影響はでるのですか?

それはたしかにそうですね。

CISC,RISCのメリットデメリットがイメージしにくかったです。

改めて整理しておいてください。

CISCとRISCの長所をとりこんだMPUには短所はないのですか?

それがいわゆるCRISC、なんでしょうね。

RISCで命令数が少なくなるのはなぜか?

使える命令数を少なくしよう、という方針で設計するから、です。 または、それにより、命令デコーダの回路が簡略化できるから、です。

CISCで、メモリアクセスの回数が減るよりも回路が大規模化するほうが処理速度に影響が出るのはなぜか?

処理回路(命令実行ユニット)のクリティカルパスの遅延が増加し、 動作クロックが上げにくいから、ですね。

CRISCとスーパースケーラは原理的に同じことですか?

いえ、別の次元の概念です。 スーパースケーラでないCRISCもあります(単命令実行のみ)し、 逆もしかり、です。

CISCにおいてプログラムの短さをメリットにしてますが、最近のコンピュータでも短いプログラムは利点になるのですか?

プログラムを格納するのに必要なメモリの容量が少なくてすむ、というのは あまり魅力的なメリットではないかもしれませんが、 メモリアクセス数が減ることで、ノイマン型ボトルネックの解消、は 魅力的なメリットといえそうです。

固定長より可変長のほうが便利な気がするのですが、速度面以外ではどうなんでしょうか?

固定長のほうが命令デコーダの回路が簡略化でき、パイプラインが 乱れにくい、という点以外のメリットは少ないでしょうね。

メモリは1つしかなく、それを命令とプログラムメモリ(←データメモリのこと?)に分けるというのはどういうことでしょうか?

最初から順番に読み出していきますが、最初は必ず命令なので、 その命令がデータを必要としなければ、次は命令ですし、 データが必要ならば、必要な分だけデータを読んだ次は命令、というわけで、 頭から順番に読んでいくことで、その数値が命令かデータか、は 区別ができます。

主にプログラムの話だったと思いましたが、ハードのほうは何があるんですか?

ええと、ハードワイヤ方式、の話でしょうか? もしそうであれば、いわゆる順序回路以上のものはありません。
戻る