2023-06-01から1ヶ月間の記事一覧
gem5のサイクル精度モデルについて理解したいので、O3CPUのドキュメントを読んでみることにする。 次に、メモリサブシステムについてドキュメントを読み進めていく。 www.gem5.org メモリ・アクセス・オーダリング 各CPUの読み込み・書き込みリクエストには…
gem5のサイクル精度モデルについて理解したいので、O3CPUのドキュメントを読んでみることにする。 次に、メモリサブシステムについてドキュメントを読み進めていく。 www.gem5.org 本ドキュメントでは、gem5のメモリサブシステムについて、CPUでの単純なメモ…
gem5のサイクル精度モデルについて理解したいので、O3CPUのドキュメントを読んでみることにする。 次に、メモリサブシステムについてドキュメントを読み進めていく。 www.gem5.org M5の新しいメモリーシステム(最初の2.0ベータリリースで導入)は、以下の目…
gem5のサイクル精度モデルについて理解したいので、O3CPUのドキュメントを読んでみることにする。 www.gem5.org 次はストア命令について。ソースコードを追いかけていく。 Store命令 Store命令の挙動は、コミット後から見て行こうと思う。 IEW::tick()->IEW:…
gem5のサイクル精度モデルについて理解したいので、O3CPUのドキュメントを読んでみることにする。 www.gem5.org ソースコードを読みながら、実際の流れをつかんでいこうと思う。 CPU::tick() CPU::tick()の内部で、各モジュールが1サイクルずつ動作している…
gem5のサイクル精度モデルについて理解したいので、O3CPUのドキュメントを読んでみることにする。 www.gem5.org パイプラインステージ Execute-in-executeモデル テンプレートポリシ ISA独立性 ThreadContextとの相互作用 O3CPUは、v2.0リリース用の新しい詳…
Gem5 の トライアル Gem5でのROI (Region of Interests) の設定方法 Gem5でのROI (Region of Interests) の設定方法 (2. マクロとしての定義) Gem5における詳細ログ出力方法 Learning gem5 Gem5のチュートリアル "Learning Gem5"をやってみる(Part-1) Gem5の…
gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com gem5はイベントドリブンのシミュレータである。本章では、イベントの作成とスケジューリングの方法を探る。hello-s…
gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org 前章で作成したSimObjectの標準出力をデバッグ機能に変更してみる。 gem5はprintfスタイルのトレース・デバッグ機能をサポートしており、これを使うためにはdebug flagを…
gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org Step.3 SimObject と C++ ファイルの登録 C++ ファイルをコンパイルし、Python ファイルを解析するためには、ビルドシステムにこれらのファイルについて知らせる必要があ…
gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5はSimpleObjectと呼ばれるSimObjectを持っているため、もう一つSimpleObjectを作成すると、コンパイル時に問題が発生する可能性がある。 殆ど多くのgem5はSimObject…
www.gem5.org x86向けに作成した簡単なコンフィグレーションスクリプトを、RISC-V向けに拡張する。 ドキュメントではARM向けになっているが、RISC-Vでやってみることにする。 RISC-Vバイナリのダウンロード mkdir -p cpu_tests/benchmarks/bin/riscv cd cpu_…
www.gem5.org se.py と fs.py の使用方法 ここでは、se.py と fs.py の使用方法と共通オプションについて議論する。フルシステムシミュレーションに関するより詳細な実行方法は、フルシステムシミュレーションの章を参照すること。ここでは、2つのファイルに…
www.gem5.org Gem5のデフォルト設定スクリプトの構成について。 シミュレーションする内容を十分に理解せずにこのスクリプトを使用することは危険であり、コンピュータアーキテクチャの研究をするときは、これらのスクリプトを完全に理解することが重要であ…
Gem5のシミュレーションにより生成されるログファイルについて確認する。 www.gem5.org シミュレーション終了後に、m5out ディレクトリに情報が出力される。 config.ini : シミュレーション向けに生成されたすべてのSimObjectのリストが、パラメータの値とと…
まだ途中ではあるが、Learning Gem5で作成したconfigスクリプトをRISC-V向けに改造したのでこれを動作させるテストをする。 RISC-V向けに改造といっても、CPUのタイプを変更するだけである。 msyksphinz.hatenablog.com # configs/learning_gem5/part1/simpl…
Gem5で、RISC-Vのプログラムをシミュレーションするための方法を調査している。まず、簡単なHello Worldプログラムを探して、これをコンパイルする方法を調査する。 まずは、hello_world向けのビルド環境があるので動かしてみることにする。 # gem5/tests/te…
msyksphinz.hatenablog.com Gem5には便利なデバッグオプションがいろいろ入っていることを知った。 ../../../../../../../build/ARM/gem5.opt \ --debug-flags=Exec,LSQUnit --outdir result --debug-file lsu.log \ ../../../../../../configs/example/se.p…
Gem5の勉強のために、チュートリアルを1からやってみることにした。 www.gem5.org さらに、システムが正しく動作するためにさらにいくつかのポートを接続する。 I/OコントローラをCPUとメモリバスに接続する必要がある。 メモリバスに対して特殊なポートを接…
Gem5の勉強のために、チュートリアルを1からやってみることにした。 www.gem5.org ビルドの方法 ビルドの方法は大体わかっている。RISC-V向けのシミュレーションのためには以下のコマンドでビルドする。 scons build/RISCV/gem5.opt このoptのオプションには…
サイクル精度シミュレータSniperで、サイクル計算中に細かな挙動を指定したくて、いろいろ試行錯誤している。 例えば、SpikeからSniperへ特定のシステムレジスタのアップデート情報を送りたいときにどうするか。 こういう時は、SIFTフォーマットのMagicコマ…
https://riseproject.dev/ riseproject.dev www.design-reuse.com 商用ソフトウェアにおけるRISC-Vの対応を加速するためのプロジェクト。以下のミッションが挙げられている。 RISC-Vのためのオープンソースソフトウェアの開発を加速する RISC-Vプラットフォ…
前々から存在は知っていて、今回正式に発表になったということで読んでいたのだけれども、 www.design-reuse.com www.design-reuse.com Semidynamicsは、RISC-V市場で最大かつ完全にカスタマイズ可能なベクターユニットを発表し、前例のないデータ処理のため…
とても分かりやすかったのでメモ: indoml.com
昨日いろいろ調べたサイクル精度シミュレータ上でネットワークが走っている問題は、どうもDRAMの設定のデフォルト値がそのようになっていて、Sniperの設定を以下のように変えればよいらしい。 [perf_model/dram] type = constant # DRAM performance model t…
サイクル精度シミュレータの挙動がわからな過ぎていろいろ調べていたのだけれども、そもそも基本的なSniperの仕組みで理解の足りていないところがあって、そういうところをひたすらまとめていくメモ。 誰かの役には立たないけれども、自分の役には立つかもし…
もちろん、NEONはSIMD命令でRVVはVector命令群なので目的も細かな仕様も異なるわけだけれども、命令の挙動として似ているものを対比してみる。 Coding for Neon developer.arm.com Unit-Stride Load 命令 RVV命令の場合はVLE.V 命令などがある。VLE8.V / VLE…
Newlibのマルチプラットフォームのライブラリってどうやって作っているのかと思っていろいろ見ていた。 ../configure --prefix=${RISCV} --target=riscv64-unknown-elf make -j$(nproc) 本質的には以下のようなパラメータからとってくるらしい。 /home/msyks…
FFTW3のビルドをいろいろ試行している。とりあえずC拡張を使いたくないのだが、GCCはCを除いたコンパイルをしてくれない。 Clangならば行ける気がしたので、試してみた。 git clone https://github.com/sh-zheng/fftw3.git fftw3-zheng cd fftw3-zheng ./boo…
自分用のメモ:大量のジョブを流した時に出力をまとめ上げたいときに使用する。 linuxjm.osdn.jp -O[type], --output-sync[=type] -j を使って複数ジョブを並行で実行する場合、それぞれのジョブからの出力をばらばらに行うのではなく、個々のジョブ出力を取…