FPGA開発日記

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

2023-07-01から1ヶ月間の記事一覧

GAP Benchmarkの各プログラムの構成について (bfs.cc)

GAP Benchmarkの各プログラムの中身を調べている。まずはbfsから。 bfs : Breath First Search ./bfs -f benchmark/graphs/kron.sg -n64 > benchmark/out/bfs-kron.out fでグラフをロードする。nはトライアルの数。 start_vertex()は-1が設定されるっぽい。 …

GAP Benchmarkの各プログラムの構成について

gap.cs.berkeley.edu github.com bfs : Breath First Search 幅優先探索(Breadth-First Search: BFS)は、探索元の頂点を始点とする探索順序である。BFSは次の深さに移る前に、現在の深さ(ソース頂点からの距離)にあるすべての頂点を走査する。BFSは非常…

qemu-riscvはファイルの読み書きができない?

久しぶりにQEMUで遊んでいたのだけれども、RISC-V版のユーザモードQEMU(qemu-riscv64)で遊んでいると、どうもファイルの読み書きができないっぽい? 追記:これはlinux版gccでビルドするとうまくいくことが分かった。 riscv64-unknown-linux-gnu-gcc -static…

GAP BenchmarkのRISC-V環境でのシミュレーションを試す

gap.cs.berkeley.edu github.com RISC-V でのGAP Benchmark Suiteを実行する GAPベンチマークをRISC-V向けにコンパイルしたのはいいのだが、いくつかのベンチマークではSpike上で実行することができない。 spike --isa=rv64gcv pk ./bfs -f benchmark/graphs…

GAP BenchmarkのRISC-V環境でのコンパイル方法

gap.cs.berkeley.edu github.com RISC-V でのGAP Benchmark Suiteのコンパイル方法 RISC-V向けにコンパイルするためには、コンパイルオプションを以下のように変更する。 $ CXX=riscv64-unknown-elf-g++ make PAR_FLAG= ただし、Spikeで実行しようとするとど…

gem5 101 Homeworkをやってみる (3. 周波数の変更)

gem5への理解を深めるために、以下のネット上に公開されている課題をやってみようと思う。 www.gem5.org 周波数を変更して、シミュレーション時間に変化があるかを観察する。周波数の設定には--cpu-clockオプションを使う。 ../gem5_myriscvx/build/RISCV/ge…

gem5 101 Homeworkをやってみる (2. 各モデルのサイクル数調査)

gem5への理解を深めるために、以下のネット上に公開されている課題をやってみようと思う。 www.gem5.org 次に、少し小さなサイクル数で、各CPUモデルでのサイクル数を調査する。 TimingSimpleCPU、MinorCPU、DerivO3CPUを比較する。TimingSimpleCPUはステッ…

SniperのPrefetcherのアルゴリズムについて調査する

SniperのPrefetcherについて調査する。 SniperのPrefetcherは、ベースになるPrefetcherクラスとそれを派生する形で各種プリフェッチャが定義されている。 sniper/common/core/memory_subsystem/parametric_dram_directory_msi/prefetcher.h class Prefetcher…

gem5 101 Homeworkをやってみる (1. 単純な実験)

gem5への理解を深めるために、以下のネット上に公開されている課題をやってみようと思う。 www.gem5.org まずは、エラトステネスの篩を実装して、コンパイルして実行してみる。 エラトステネスの篩の実装を忘れてしまったので、とりあえずネット上のソースコ…

GAP Benchmarkについて調べる

gap.cs.berkeley.edu github.com GAPベンチマーク・スイートは、評価の標準化によってグラフ処理研究を支援することを目的としている。 グラフ処理評価の差異を少なくすることで、異なる研究努力の比較や改善の定量化が容易になる。 このベンチマークは、グ…

Gem5のチュートリアル "Learning Gem5"をやってみる(17. gem5が提供するキャッシュ・コヒーレンス・プロトコル・プラットフォームrubyについて)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com Rubyは、詳細なキャッシュメモリとキャッシュコヒーレンスモデル、および詳細なネットワークモデル(Garnet)を提…

Gem5のチュートリアル "Learning Gem5"をやってみる(16. SimpleCacheの実装2)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com キャッシュのコンフィグレーションファイルを作成する 最後に、キャッシュを使用する新しいPython設定スクリプトを…

Gem5のチュートリアル "Learning Gem5"をやってみる(15. SimpleCacheの実装)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com 本節では、前回作成したメモリ・オブジェクトを継承してキャッシュの論理を追加する。 大まかな作業工程は以下のよ…

Gem5のチュートリアル "Learning Gem5"をやってみる(14. SimpleMemobjの実装を噛み砕く2)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org SimpleMemobjを使った簡単なブリッジの実装が良く分からなかったので、もう一度よく読みなおしてみることにした。 gem5記事一覧インデックス msyksphinz.hatenablog.com …

Gem5のチュートリアル "Learning Gem5"をやってみる(15. SimpleMemobjの実装を噛み砕く)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org SimpleMemobjを使った簡単なブリッジの実装が良く分からなかったので、もう一度よく読みなおしてみることにした。 gem5記事一覧インデックス msyksphinz.hatenablog.com …

Complexity-Effective Superscalar Processors を読む

内容的に興味があったので、以下の論文をざっと読んでみた。 Complexity-effective superscalar processors ACM SIGARCH Computer Architecture News ,Volume 25, Issue 2, May 1997, pp 206–218 https://dl.acm.org/doi/10.1145/384286.264201 論文の概要:…

Gem5のチュートリアル "Learning Gem5"をやってみる(14. メモリシステムへのSimpleMemobjの作成)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com リクエスト受信の実装 recvTimingReqの実装はより複雑である。SimpleMemobjがリクエストを受信できるかどうかをチ…

Gem5のチュートリアル "Learning Gem5"をやってみる(13. メモリシステムへのSimpleMemobjの作成)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com 単純なメモリ・オブジェクトの例 このセクションでは、単純なメモリ・オブジェクトを作る。最初は、単純にCPU側(…

gem5の--debug-helpオプションについて

gem5にはデバッグ用の多くのオプションがあり、非常に細粒度にログを出力することができる。gem5の--debug-helpでオプション一覧を表示することができる。 gem5.opt --debug-help 出力は以下のようになった。いくつかのオプションをまとめて指定することがで…

gem5のデバッグ情報を深堀する

例えば、gem5でのシミュレーション結果、以下のようなパイプライン情報を取得したものとする。 このような、s4580 で示されるlw命令がどのように動作しているのかを見てみたい。ログを取得することでその動作の詳細を確認できる。 まず、命令の動作記録を確…

Gem5のチュートリアル "Learning Gem5"をやってみる(12. メモリシステムへのSimObjectの作成)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com この章では、CPUとメモリバスの間に位置するシンプルなメモリ・オブジェクトを作成する。次の章では、この単純なメ…

Fetch Directed Prefetchingの論文を読む

色々分け合ってプリフェッチの論文を読んでいる。 https://ieeexplore.ieee.org/document/809439 arxiv.org Fetch Directed Instruction Prefetchingは、命令のプリフェッチのための機能。 FDP : Fetch Directed Prefetching FDIP : Fetch Directed Instruct…

Gem5のチュートリアル "Learning Gem5"をやってみる(11. SimObjectへのパラメータの追加)

gem5を構成するSimObjectを追加するためのチュートリアルをやってみる。 www.gem5.org gem5記事一覧インデックス msyksphinz.hatenablog.com gem5のPythonインターフェースの最も強力な部分の1つは、Pythonからgem5のC++オブジェクトにパラメータを渡す機能…