Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マイクロプロセッサの設計と実装実験成果スライド

Yuto Nakamura
December 23, 2022

 マイクロプロセッサの設計と実装実験成果スライド

Yuto Nakamura

December 23, 2022
Tweet

More Decks by Yuto Nakamura

Other Decks in Education

Transcript

  1. MICROPROCESSOR
    DESIGN &
    IMPLEMENTATION

    View Slide

  2. 実装方針
    ● 5段パイプライン
    ● 2bit分岐予測
    ● フォワーディング有り
    ● スーパースカラー
    ○ 2つ目のパイプライ
    ンは制約有り
    ○ ALU/Branch x 2
    ○ RegRead x 4
    2

    View Slide

  3. 第一世代
    2K performance run parameters for
    coremark.
    CoreMark Size : 666
    Total ticks : 1093050850
    Total time (secs): 13
    Iterations/Sec : 23
    Iterations : 300
    3
    ● 5サイクル化
    ● パイプライン化はしない
    ○ FDEMW -> FDEMW …
    ● 80Mhzで実機動作

    View Slide

  4. 第二世代
    2K performance run parameters for
    coremark.
    CoreMark Size : 666
    Total ticks : 2095233356
    Total time (secs): 17
    Iterations/Sec : 117
    Iterations : 2000
    4
    ● パイプライン化
    ● 常に分岐しない予測
    ○ ストールを短くする
    ○ ストールは addi x0, 0 で命令
    を差し替える
    ● メモリアドレス専用の加算機
    ● 123Mhzで実機動作
    D E M W
    F D X X X
    F X X X X
    F
    F D E M W

    View Slide

  5. 第三世代
    5
    ● 第二世代に分岐予測を足した
    ● 118Mhzで実機動作

    View Slide

  6. 第三世代
    2K performance run parameters for
    coremark.
    CoreMark Size : 666
    Total ticks : 1958052487
    Total time (secs): 15
    Iterations/Sec : 133
    Iterations : 2000
    6
    ● 第二世代に分岐予測を足した
    ● 118Mhzで実機動作
    ※2bit分岐予測でも2レベル適応型分岐予測でもCoremarkのスコアは変わらず🤔

    View Slide

  7. 第四世代
    7
    ● スーパースカラー化
    ● 以下のときは2つ目は実行しない
    ○ 1つ目が分岐予測のとき
    ○ メモリ命令のとき
    ○ 1つ目の命令とRAWハザード
    ○ 1つ目の命令とWAWハザード
    すべてのテストに通過したが
    CoreMarkは動作せず…
    参考:
    IntRegReg 47clock-> 35clock
    IntRegImm 48clock -> 31clock

    View Slide

  8. 困った事
    ● すべてのテストに通ってCoremarkのトレースが一致しても
    Coremark_for_Synthesisが動かないことがあった
    ○ Hardware counterの実装バグ
    ○ 自前でテストを書いて解決
    ● LoadAndStoreの仕様に気づくのに時間がかかる
    ● ALU内で >>> が想定動作をしない($signedつけてもダメ)
    ● vivadoのsimulationが結構な頻度で落ちる
    8

    View Slide

  9. やりたかったこと
    ● スーパースカラー化完遂
    ● メモリアライメントを無視した命令への対応 (公式曰くoptional)
    ● M命令、 FPU実装など…
    ● 公式テストの実行
    ○ https://github.com/riscv-software-src/riscv-tests
    ○ jalrはこれでテストしてみたがあってるかわからない
    (Privileged/CSR Instructionを実装していないため)
    9

    View Slide

  10. おわり
    10
    楽しかったです!!!

    View Slide