FPGA開発日記

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

自作RISC-V CPUコア実装(データキャッシュバンク化の効果)

自作CPUの性能向上のために、これまで単一バンクだったデータキャッシュを作り変えてみよう。

バンク化の効果を確かめる。以下のようなプログラムを作ってLSUパイプラインの2つから別のバンクにアクセスをかけ、コンフリクトが発生するかどうかを確認する。

    .section    .text
_start:
    la      x1, data
    addi    x2, x1, 256/8
    li      x20, 500
loop:
    ld      x10,  0(x1)
    ld          x11,  0(x2)
    addi    x20, x20, -1
    bne     x20, zero, loop

#include "common_pkg.S"

    TEST_FINISH

バンク化する前と後で、LSUパイプラインの衝突が回避されていることが確認できた。

f:id:msyksphinz:20211114005807p:plain

ただし、全体の性能は大きく向上していない。これはつまりLSUの改善にフェッチ側はついて行けていないことを意味している。 フェッチ側は、たった3命令のループをストールなくフェッチできていない。 BTBによる予測はs0~s2で2サイクル必要なため、1サイクル余分に空いてしまうのだ。これを改善する必要があるように思える。