2023-03-01から1ヶ月間の記事一覧
ieeexplore.ieee.org IEEE Explorerにて、上記の論文が公開されていた。最近の命令拡張の動向についてあまりよく知らなかったので、せっかくなので読んでみることにした。 続き。 Section IV. Recent research on RISC-V ISA extension いくつかのシナリオに…
ieeexplore.ieee.org IEEE Explorerにて、上記の論文が公開されていた。最近の命令拡張の動向についてあまりよく知らなかったので、せっかくなので読んでみることにした。 続き。 Section I. Introduction Section II. RISC-V Application Embedded Micropro…
LiteXはSoCを半自動的に生成するための総合環境で、自作CPUのSoC生成環境もLiteXを使用している。 github.com 前回までで一応Vivadoの論理合成は走り始めたのだが、dtsが作れずに最後まで完走しない。 調査すると、RISC-Vの構成の場合はCLINTとPLICのメモリ…
ieeexplore.ieee.org IEEE Explorerにて、上記の論文が公開されていた。最近の命令拡張の動向についてあまりよく知らなかったので、せっかくなので読んでみることにした。 本論文のポイント:RISC-V ISA拡張に関する既存の研究について包括的なサーベイを提…
LiteXはSoCを半自動的に生成するための総合環境で、自作CPUのSoC生成環境もLiteXを使用している。 github.com 前回、自作CPU向けにビルドしたつもりが、VexRiscvをコンパイルしてしまっていた。 これを修正するためには、同時にsoc_linux.pyを修正する必要が…
LiteXはSoCを半自動的に生成するための総合環境で、自作CPUのSoC生成環境もLiteXを使用している。 github.com 前のエラーを回避するためには、リポジトリをアップデートすればいいかもしれない。 リポジトリをアップデートして、再度コマンドを実行してみた…
LiteXはSoCを半自動的に生成するための総合環境で、自作CPUのSoC生成環境もLiteXを使用している。 github.com まずはオリジナルのmake.pyを改造してやってみようと思う。ロードするCPUを変更する。 diff --git a/make.py b/make.py index f1a72956..3a939171…
TenstorrentのISSであるWhisperを使って、riscv_arch_testsのテストパタンがどのように動くのかを確認してみる。 使用環境はUbuntu-22.04 LTSである。 以下のパッケージをインストールする必要がある。 sudo apt install libboost-dev libboost-program-opti…
ずっと試してみたかった、Tenstorrentが公開したRISC-V検証パタンである riscv_arch_tests を試してみることにした。 自作CPUに適用して、さらなるバグが発見されることを期待している。 https://github.com/tenstorrent/riscv_arch_tests github.com テスト…
LLVM16が公開された。毎度毎度LLVMはバージョンが変わるたびにAPIの仕様が変わるので、自分の作ったLLVM本の実装が変わってしまう。 この修正が毎回大変なのだ。 releases.llvm.org 今回、とりあえずLLVM16のベースブランチに切り替えて作業をしてみる。 rel…
ずっと試してみたかった、Tenstorrentが公開したRISC-V検証パタンである riscv_arch_tests を試してみることにした。 自作CPUに適用して、さらなるバグが発見されることを期待している。 https://github.com/tenstorrent/riscv_arch_tests github.com 前回の…
ずっと試してみたかった、Tenstorrentが公開したRISC-V検証パタンである riscv_arch_tests を試してみることにした。 自作CPUに適用して、さらなるバグが発見されることを期待している。 https://github.com/tenstorrent/riscv_arch_tests github.com 前回の…
ずっと試してみたかった、Tenstorrentが公開したRISC-V検証パタンである riscv_arch_tests を試してみることにした。 自作CPUに適用して、さらなるバグが発見されることを期待している。 https://github.com/tenstorrent/riscv_arch_tests github.com とりあ…
ずっと試してみたかった、Tenstorrentが公開したRISC-V検証パタンである riscv_arch_tests を試してみることにした。 自作CPUに適用して、さらなるバグが発見されることを期待している。 https://github.com/tenstorrent/riscv_arch_tests github.com ”RISC-…
技術評論社が刊行している雑誌「Software Design」の2023年4月号は、CPUの特集です。 今回は私も少しだけお手伝いをさせていただきました。 全体的に基本的なCPUの話から、論理演算から始まるCPUの話、ISAの話、マイクロアーキテクチャの話、HPC向けSIMD命令…
LiteXはSoCを半自動的に生成するための総合環境で、自作CPUのSoC生成環境もLiteXを使用している。 github.com LiteXでのFPGA合成環境は情報があまりなく、まとめておきたいと思う。 先ずはサンプルプログラムを動かす。いろいろ調査した結果、以下の環境を利…
これは単純なメモだが、自作CPUの性能が落ちてしまっていて、どこがおかしいんだ?と思いながら見ていたが、どうやらもともと実装ミスがあるっぽい。 GShareの実装に論理的なミスがあったので修正する。 diff --git a/src/scariv_gshare.sv b/src/scariv_gsh…
LiteXはSoCを半自動的に生成するための総合環境で、自作CPUのSoC生成環境もLiteXを使用している。 github.com LiteXでのFPGA合成環境は情報があまりなく、まとめておきたいと思う。 先ずはサンプルプログラムを動かす。いろいろ調査した結果、以下の環境を利…
自作CPUのシミュレーション環境は、ローカルで作業する場合と強力なリモートサーバ上で作業する場合があるのだが、強力なサーバを使用する場合は必要なツールが入っていないことが多くて、Docker環境を構築してそちらで回すようにしている。 ただ、シミュレ…
Issue Unitの構成を変更する作業を進めている。 Issue Unitはこれまでシーケンシャル割り当て(Cyclic Queue)をしていたが、これをどこからでも割り当て・開放が可能なQueueに変更する。 Issue Unitの変更点を考えながら、いろいろと思いを巡らせている。特に…
RISC-VのISA拡張は、RV64IMAFDCなどの表記に応じてどのような命令がサポートされるのかが決まっている。 例えば、RV64IMAFDCはアトミック命令"A"をサポートしているが、RV64IMFDCはアトミック命令"A"をサポートしていない。 このような区別をするために、自…
Issue Unitの構成を変更する作業を進めている。 Issue Unitはこれまでシーケンシャル割り当て(Cyclic Queue)をしていたが、これをどこからでも割り当て・開放が可能なQueueに変更する。 最初は単純にエントリの割り当てを、空いているエントリから選んで使っ…
BOOMv3のIssue Unitの構成を読み解いて、自作CPUの性能向上の役に立てる。 github.com MSHRの構成についてみてみる。BOOMv3のMSHRはDCache内に接続されている。 val mshrs = Module(new BoomMSHRFile) mshrs.io.clear_all := io.lsu.force_order mshrs.io.br…
いろいろ文献を読んだりして、CPUの命令スケジューリング機構の様々な手法についてまとめる。 スケジューラ:フロントエンドパイプラインとバックエンドパイプラインの中間に位置し、命令の発行をつかさどる Wakeup Logic 命令間の依存関係を管理し、どの命…
BOOMv3のIssue Unitの構成を読み解いて、自作CPUの性能向上の役に立てる。 github.com いくつかのバリエーションがあるようだが正式に採用されているのはこのIssueUnitで、内部にはIssueSlotが複数定義されている。 //-------------------------------------…
BOOMと自作CPUの合成結果を比較して、ボトルネックになっている部分を調査したい。 命令バッファが完全なCAM構造になってしまっているので改善したい。RingFIFOを導入して、ヘッドのみデコードするように変更する。 ring_fifo_2ptr #(.T(scariv_ibuf_pkg::in…
BOOMv3のLSUの構成を読み解いて、自作CPUの性能向上の役に立てる。 github.com LSUと他のモジュールとの接続。 これはいろいろあるのだが、まずはコア本体との接続について。コア本体とのインタフェースはLSUExeIOに定義されている。 以下の信号の中で、req…