FPGA開発日記

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

RISC-VのアウトオブオーダプロセッサBOOMの構成について

BOOM(Berkeley Out-of-order Machine)には、基本的に以下の3種類の構成方式がある。

BOOMの情報源

情報源というか、githubくらいしか情報がないのである。

ucb-bar.github.io

f:id:msyksphinz:20180224000854p:plain

BOOMのデフォルトの3つの構成

ここでは、すべてBOOMv2をベースにして検証を行った。

  • BOOMConfig (MediumBOOMConfig) : 最も標準的な構成。2-Wide, 3-way Issue
  • MegaBOOMConfig : 最大構成。 4-Wide, 4-way Issue
  • SmallBOOMConfig : 最小構成。1-Wide, 1-way Issue

それぞれの構成でのコンポーネント

BOOMv2 の上記の構成でのコンポーネントを調査した。

といっても、Verilog-HDL生成時に表示されるログをはぎ取っただけである。

さらに、MegaBOOMConfig構成はなぜか途中でVerilog-HDLの生成に失敗してしまうので、ログを貼り付けただけでVerilog-HDLを論理合成施行することができていない。

MegaBOOMConfig BOOMConfig SmallBOOMConfig
Wide 4 2 1
Issue 4 3 1
ExeUnit ALU ALU ALU
FPU (Latency: 3) FPU (Latency: 3) FPU
Mul(Pipelined) Mul(Pipelined) Mul(Pipelined)
Div
FDiv/Fsqrt
ExeUnit ALU ALU
Div Div
FDiv/FSqrt FDiv/FSqrt
ExeUnit ALU
ExeUnit Mem Mem Mem
BROB 4 2 1
Size 32 24 24
Gshare Predictor 16kB 8kB 4kB
Machine Width 4 2 1
Rob Entries 128 48 24
Rob Rows 32 24 24
Rob Row size 5 5 5
log2UP(width) 2 1 1
log2Ceil(width) 2 1 0
FPU FFlag Ports 2 2 2
FPU Unit Enabled Enabled Enabled
VM Enabled Enabled Enabled
FDivSqrt Enabled Enabled Enabled
Fetch Width 4 2 1
Issue Width 4 3 1
ROB Size 128 48 24
Issue Window Size 28(Age-based Priority) 20(Age-based Priority) 12(Age-based Priority)
Load/Store Unit Size 32/32 16/16 8/8
Num Phys. REgisters 128 110 100
Max Branch Count 8 8 4
BTB Size 64 64 64
RAS Size 8 8 8
Num RF Read Ports 9 7 3
Num RF Write Ports 4 3 2
RF Cost(R+W)*(R+2W) 221 130 35
Num Slow Wakeup Ports 4 3 2
Num Fast Wakeup Ports 3 2 1
Num Bypass Ports 5 4 3

BOOMv2 の論理合成結果

MegaBOOMConfig以外の構成で論理合成を試行した。

+-----------------------------+---------------+------------+------------+---------+------+-------+--------+--------+--------------+
|        Instance             |  Module       | Total LUTs | Logic LUTs | LUTRAMs | SRLs |  FFs  | RAMB36 | RAMB18 | DSP48 Blocks |
+-----------------------------+---------------+------------+------------+---------+------+-------+--------+--------+--------------+
| Top  (SmallBOOMConfig)      |         (top) |      69191 |      67303 |    1868 |   20 | 25777 |     17 |     18 |           40 |
| Top  (BOOMConfig)           |         (top) |     311303 |     192866 |  118414 |   23 | 37753 |    128 |      0 |           40 |
+-----------------------------+---------------+------------+------------+---------+------+-------+--------+--------+--------------+

BOOMv1 の論理合成結果

4種類の構成でBOOMv1の面積を比較した。

Category SmallBOOMConfig BOOMConfig MediumBOOMConfig MegaBOOMConfig
LUT LUT6 34925 70200 70996 114319
Flop & Latch FDRE 24452 45688 41686 56547
LUT LUT5 13293 21625 19725 38964
LUT LUT3 7786 16952 19112 21369
LUT LUT4 5446 15346 11477 19964
Distributed Memory RAMD32 4120 11299 9697 17130
MuxFx MUXF7 4081 4144 4248 6720
LUT LUT2 3530 3992 3876 6592
MuxFx MUXF8 1810 3787 2902 3854
CarryLogic CARRY4 1270 2878 2414 2458
Distributed Memory RAMS32 1246 2425 2068 1963
LUT LUT1 803 1805 1801 1190
IO OBUF 526 868 876 1159
Flop & Latch FDSE 504 814 654 532
IO IBUF 394 526 526 526
Distributed Memory RAMD64E 84 394 394 394
Block Arithmetic DSP48E1 40 40 40 40
Distributed Memory SRL16E 39 33 28 34
Flop & Latch FDCE 33 31 27 28
Block Memory RAMB36E1 9 9 9 17
Block Memory RAMB18E1 8 8 8 8
Clock BUFG 1 1 1 1

f:id:msyksphinz:20180227005732p:plain