FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

自作CPUコアとBOOMv3のPPA(Performance, Power, Area)を比較する (5. BOOMv3と同じコンフィグレーションを作る)

今のところ自作CPUは面積が大きすぎる。Vivadoでの論理合成結果をもっと詳細に見ていくことにする。

ちょっと考え方を変えて、BOOMv3と同じキューやパイプライン数で、どの程度面積に違いが生じるのかを見ていくことにする。

BOOMv3のコンフィグレーションから読み取れるのは以下の値だ。MediumBoomConfigを参考にした。

  • ディスパッチ数:2
  • ALUパイプラインの数:2
  • LSUパイプラインの数:1
  • FPUパイプラインの数:1
  • ALUの発行キューの大きさ:各パイプラインで10
  • LSUの発行キューの大きさ:12
  • LDQの大きさ:16
  • STQの大きさ:16
  • MSHRの大きさ:2
  • ROBのエントリ数:32
  • 分岐命令の発行キューの大きさ:12
  • FPUの発行キューの大きさ:4

とまあ、この辺のコンフィグレーションをコピーして同じように論理合成をしてみる。

+----------------------------+--------+-------+-----------+-------+
|          Site Type         |  Used  | Fixed | Available | Util% |
+----------------------------+--------+-------+-----------+-------+
| CLB LUTs*                  | 153079 |     0 |    230400 | 66.44 |
|   LUT as Logic             | 150073 |     0 |    230400 | 65.14 |
|   LUT as Memory            |   3006 |     0 |    101760 |  2.95 |
|     LUT as Distributed RAM |   2844 |     0 |           |       |
|     LUT as Shift Register  |    162 |     0 |           |       |
| CLB Registers              |  77405 |     0 |    460800 | 16.80 |
|   Register as Flip Flop    |  77341 |     0 |    460800 | 16.78 |
|   Register as Latch        |     64 |     0 |    460800 |  0.01 |
| CARRY8                     |   1039 |     0 |     28800 |  3.61 |
| F7 Muxes                   |  11203 |     0 |    115200 |  9.72 |
| F8 Muxes                   |   1637 |     0 |     57600 |  2.84 |
| F9 Muxes                   |      0 |     0 |     28800 |  0.00 |
+----------------------------+--------+-------+-----------+-------+

一方で、BOOMv3の結果は以下。桁違いに違うわけではない。桁違いに違うのは性能のほうで、今の状態だとDhrystoneでもかなり性能に差が出る。 今のところ、フロントエンドに問題があるのは明らかなので、この辺を強化していかなければなるまい。

+----------------------------+--------+-------+-----------+-------+
|          Site Type         |  Used  | Fixed | Available | Util% |
+----------------------------+--------+-------+-----------+-------+
| CLB LUTs*                  | 136798 |     0 |    230400 | 59.37 |
|   LUT as Logic             | 131265 |     0 |    230400 | 56.97 |
|   LUT as Memory            |   5533 |     0 |    101760 |  5.44 |
|     LUT as Distributed RAM |   5500 |     0 |           |       |
|     LUT as Shift Register  |     33 |     0 |           |       |
| CLB Registers              |  67720 |     0 |    460800 | 14.70 |
|   Register as Flip Flop    |  67719 |     0 |    460800 | 14.70 |
|   Register as Latch        |      1 |     0 |    460800 | <0.01 |
| CARRY8                     |   1055 |     0 |     28800 |  3.66 |
| F7 Muxes                   |  11540 |     0 |    115200 | 10.02 |
| F8 Muxes                   |   2421 |     0 |     57600 |  4.20 |
| F9 Muxes                   |      0 |     0 |     28800 |  0.00 |
+----------------------------+--------+-------+-----------+-------+