FPGA開発日記

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

自作RISC-V CPUコア実装(RASの動作確認2)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードのボトルネックを解決した。 そうこうしているうちにいつの間にかRET命令のRAS予測が怪しくなってきているので修正しておきたい。 RASの修正を行って、簡単なテストケースならば想定通りに動作するようになったのだが、Dhrystoneではほとんど性能が向上しなかったので、もう少し複雑なテストケースでRASの動作を確認する。

func1func2で交互に呼び出しながらRASを埋めていくようにする。

0000000080000018 <func1>:
    80000018:   02050663                beqz    a0,80000044 <_func_fin1>
    8000001c:   fe010113                addi    sp,sp,-32 # 7ffe0 <_start-0x7ff80020>
    80000020:   00a13023                sd      a0,0(sp)
    80000024:   00113423                sd      ra,8(sp)
    80000028:   fff50513                addi    a0,a0,-1
    8000002c:   01c000ef                jal     ra,80000048 <func2>
    80000030:   00813083                ld      ra,8(sp)
    80000034:   00013683                ld      a3,0(sp)
    80000038:   02010113                addi    sp,sp,32
    8000003c:   00d50533                add     a0,a0,a3
    80000040:   00008067                ret

0000000080000044 <_func_fin1>:
    80000044:   00008067                ret

0000000080000048 <func2>:
    80000048:   02050663                beqz    a0,80000074 <_func_fin2>
    8000004c:   fe010113                addi    sp,sp,-32
    80000050:   00a13023                sd      a0,0(sp)
    80000054:   00113423                sd      ra,8(sp)
    80000058:   fff50513                addi    a0,a0,-1
    8000005c:   fbdff0ef                jal     ra,80000018 <func1>
    80000060:   00813083                ld      ra,8(sp)
    80000064:   00013683                ld      a3,0(sp)
    80000068:   02010113                addi    sp,sp,32
    8000006c:   00d50533                add     a0,a0,a3
    80000070:   00008067                ret

0000000080000074 <_func_fin2>:
    80000074:   00008067                ret

RASの積み上がり具合を確認していく。一応、積みあがっているように見える。

f:id:msyksphinz:20211230010725p:plain

ただし、予測器は殆どMispreditionを出している。これはどこかに不具合があるに違いない。