/* 以下の回答は,個人的に解いたものであって,正解である保証はありません.解答の正しさについてはまったく保証しませんし,まったく責任を負いません */
同じ命令セットアーキテクチャで異なる実装について答えよ。
命令にはA,B,C,Dの4つのクラスがあり、それぞれCPIは次のとおりである。
Clock rate | CPI Class A | CPI Class B | CPI Class C | CPI Class D | |
---|---|---|---|---|---|
P1 | 1.5GHz | 1 | 2 | 3 | 4 |
P1 | 2 GHz | 2 | 2 | 2 | 2 |
1.4.1 個の命令をclass A:10%、Class B:20%、Class C:50%、Class D:20%とする。どちらの実装が速いか?
これ命令数を指定しなくても平均CPIでわかる気がする。
- P1 :
- P2 :
よって、1秒間に実行される命令は、
- P1 :
- P2 :
よって、P2のほうが2倍くらい速いことになる。
1.4.2 平均CPIはいくらか?
- P1 :
- P2 :
1.4.3 双方の必要なクロックサイクルを求めよ。
1.4.2より、CPIがわかっているので、
- P1 :
- P2 :
となる。そのまんますぎるか。
プログラム中の命令の個数を次の表に示す。
Arith | Store | Load | Branch | Total |
---|---|---|---|---|
500 | 50 | 100 | 50 | 700 |
1.4.4 Arith命令が1サイクル、LoadとStoreが5サイクル、Branchが2サイクル必要な場合、2GHzのプロセッサで実行したときに必要な実行時間を求めよ。
それぞれの命令の種類について、必要なクロックサイクルを求める。
よって、逆算すると、
]
1.4.5 プログラムのCPIを求めよ。
単純にそうクロック数を命令数で割って、
1.4.6 Load命令の数が半分に減ったすると、速度とCPIはどのようになるか?
それぞれの命令の種類について、必要なクロックサイクルを求める。
よって、逆算すると、
]
そして、CPIは、
このように、Load命令の数が減るとCPIが減る。これはLoad命令のCPIが平均CPIよりも大きいためであり、このような必要クロック数が大きな命令を削減することがプログラム開発の重要な課題となる。