FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

コンピュータの構成と設計4版:Exercise 1.3

/* 以下の回答は,個人的に解いたものであって,正解である保証はありません.解答の正しさについてはまったく保証しませんし,まったく責任を負いません */

次の表を見て問題にこたえよ。

Processor Clock rate CPI
P1 2 GHz 1.5
P2 1.5 GHz 1.0
P3 3 GHz 2.5

1.3.1 どのプロセッサが最も性能が高いか?
各プロセッサが1秒間にいくつ命令が実行できるかを計算する。

  • P1:2.0\times 1024\times 1024\times 1024\times 1.5=3000[MIPS]
  • P2:1.5\times 1024\times 1024\times 1024\times 1.0=1500[MIPS]
  • P3:3.0\times 1024\times 1024\times 1024\times 2.5=7500[MIPS]

よって、P3が最も性能が高い。

1.3.2 各プロセッサが10秒間動作した時の、サイクル数と命令数を計算せよ。
サイクル数は周波数\times10、命令数はサイクル数\timesCPIで計算できる。

  1. サイクル数
  • P1:2.0\times 1024\times 1024\times 1024\times 10=20000
  • P2:1.5\times 1024\times 1024\times 1024\times 10=15000
  • P3:3.0\times 1024\times 1024\times 1024\times 10=30000
  1. 命令数
  • P1:20000\times 1.5 = 30000
  • P2:15000\times 1.0 = 15000
  • P3:30000\times 2.5 = 75000

1.3.3 実行時間を30%削減する代わりに、CPIが20%増加するとする。これを実現するためにはクロック周波数をいくつにすればよいか?

CPIは次のように変化する。

P1 1.8
P2 1.2
P3 3.0

たとえば1秒間に実行できる命令数を考えると、これは1.3.1のとおりとなる。これを0.7秒まで縮めるために、方程式は次のようになる。

\text{Clock rate}\times{0.7}\times\text{CPI} = \text{No. of instructions}
これにより、各プロセッサのClock rateを求めると、

  • P1 : 2.49[GHz]
  • P2 : 1.87[GHz]
  • P3 : 3.74[GHz]

次の表を見て問題にこたえよ。

Processor Clock rate No.instructions Time
P1 2 GHz 20\times 10^9 7s
P2 1.5 GHz 30\times 10^9 10s
P3 3 GHz 90\times 10^9 9s

1.3.4 各プロセッサのIPCを求めよ
IPCは次の式で計算できる。
\frac{\text{No. instructions}}{\text{Clock rate}\times\text{Time}}

  • P1: \frac{20\times 10^9}{2\times 1024\times 1024\times 1024 \times 7} = 1.33
  • P2: \frac{30\times 10^9}{1.5\times 1024\times 1024\times 1024 \times 10} = 1.86
  • P3: \frac{90\times 10^9}{3\times 1024\times 1024\times 1024 \times 9} = 3.10

1.3.5 P2の実行時間をP1まで短縮するために必要なクロック周波数を求めよ。
単純に考えて、実行時間を\frac{7}{10}にしなければならないので、
1.5\times 1024\times 1024\times 1024 \times \frac{10}{7} = 2.14[GHz]

1.3.6 P2の実行時間をP3まで短縮するために必要な命令数を求めよ。
単純に考えて、命令数をを\frac{9}{10}にしなければならないので、
30\times 10^9\times 1024\times 1024\times 1024\times\frac{9}{10}=33.3\times 10^9