問題タブ [gem5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - デバイス/エミュレーターではなく、Android で sdcard イメージをループマウントする方法
Gingerbread を実行するために ARM フルシステム シミュレータ (gem5) を使用しています。Gingerbread の画像は gem5 の Web サイトから取得しましたが、標準です。関心のあるほとんどのアプリには sdcard が必要なので、Android イメージの init.rc ファイルに「mount -o loop /system/sdcard」を追加しました。シミュレートされたシステムを起動すると、アプリケーションはシステムに SD カードが存在しないと文句を言います。Gingerbread のマウント (ツールボックスまたはビジーボックスから) はループ マウント イメージ ファイルをサポートしていますか? このリンクを見ると、Gingerbread で使用されているbusyboxバージョンにはループのマウントに問題があるようですが、それが唯一の問題かどうかはわかりません。その場合、Android ファイルシステムの busybox バージョンを置き換えるにはどうすればよいですか? busybox バイナリを新しいものに置き換えることはできますか?
embedded - 組み込みシステムのリアルタイム スケジューリングを研究するためのツール
私は GEM5 ソフトウェア シミュレーターを使用して、使用したいスケジューリング アルゴリズムに従って Linux カーネルを変更する作業を行いました。いいえ、組み込みシステムに切り替えたいのですが、ターゲットはアルテラ FPGA (または任意のプラットフォーム) でのリアルタイム信号処理です。私はこの分野に不慣れで、このフォーラムで多くのトピックを読みましたが、いくつかの点についてまだ混乱しています。
- すべての組み込み RTOS はマルチコアをサポートしていますか? いいえ、より適切なものはどれですか? 組み込み Linux について聞いたことがありますが、明確な考えがありません。
- このフォーラムから学んだ並列プログラミング ライブラリについては、細かい粒度の posix スレッドの方が適しています。
- FPGA の選択は最終的なものではありません GEM5 のような組み込みシステム用の他のソフトウェア ツール シミュレーターがあるかどうか知りたいです。
c - cachegrind と callgrind を使用した異なる読み取り数と書き込み数
私は Cachegrind、Callgrind、Gem5 でいくつかの実験を行っています。アクセス数が、cachegrind の読み取り、callgrind の書き込み、および gem5 による読み取りと書き込みの両方としてカウントされていることに気付きました。
非常に簡単な例を見てみましょう:
私はコンパイルします:
gcc ex.c --static -o ex
基本的に、asmファイルによると、addl $1, -8(%rbp)
100,000回実行されます。読み取りと書き込みの両方であるため、100k の読み取りと 100k の書き込みを期待していました。ただし、cachegrind はそれらを読み取りとしてのみカウントし、callgrind は書き込みのみとしてカウントします。
-
誰かが私に合理的な説明をしてもらえますか? 実際には ~100k の読み取りと ~100k の書き込み (つまり、addl の 2 つのキャッシュ アクセス) があると考えるのは正しいでしょうか?
computer-architecture - gem5 キャッシュ統計 - リセットとダンプ
gem5 シミュレーターに慣れようとしています。まず、簡単なプログラムを作成しました
util/m5/m5op_x86.S でコンパイルし、次を使用して実行しました...
m5out/stats.txt は (とりわけ) を示しています...
空の関数が多くのヒットとミスを示しているのはなぜですか? ヒットとミスは libc が原因ですか? もしそうなら、m5_reset_stats() と m5_dump_stats() の目的は何ですか?
multicore - gem5 のマルチコア アーキテクチャで異なるプログラムを実行する
私はgem5で非常に新しいです。3 つの単純なプログラムを実行したいのですが、これらは他のプログラムとは異なります。マルチコア アーキテクチャでは、3 つの ARM コアを備えたシステムのように。cpu=2 の数を設定し、「;」を使用して 2 つのプログラムを分離します。:test1;test2 このコードを 2 つの ARM コアで試してみます
しかし、私はこのエラーを見ました:
どうやってやるの??
ubuntu - コンパイル中に間違った gcc バージョンが使用されました
大学の HPC に gem5-gpu をインストールしています。
私はすでに gcc/4.9.2 モジュールをロードしており、gcc -v も現在の gcc バージョンが 4.9.2 であることを示しています。
しかし、gem5-gpu をビルドしようとすると、エラーが発生します。
なぜこのような対立が生じるのでしょうか。
c - glibc のコンパイル時に mipsel-gcc によって生成される奇妙なロード命令
Gem 5 シミュレーターで実行される hello-world MIPS プログラムの一部を取得しようとしています。このプログラムは gcc 4.9.2 および glibc 2.19 (crosstool-ng によってビルド) でコンパイルされ、qemu では問題なく動作しますが、gem5 ではページ フォールト (アドレス 0 にアクセスしようとする) でクラッシュしました。
コードはかなり単純です。
file ./test
結果:
./test: ELF 32 ビット LSB 実行可能ファイル、MIPS、MIPS-I バージョン 1、静的にリンク、GNU/Linux 3.15.4 用、削除されていない
gdb でデバッグした後、ページ フォールトが_dl_setup_stack_chk_guard
glibc の関数によってトリガーされていることがわかりました。これは、関数_dl_random
によって渡されるvoid ポインターを受け入れます。ただし、私の知る限り、これらの関数はポインターを逆参照することはありませんが、メモリポインターが指すメモリから値をロードする命令が生成されました。一部のコードは理解に役立つ場合があります。__libc_start_main
NULL
_dl_random
関数内__libc_start_main
(マクロTHREAD_SET_STACK_GUARD
は設定されていません):
関数内_dl_setup_stack_chk_guard
(常にインライン化):
分解コード:
0x4a1858 (0x4a0000 + 6232)
のアドレスです_dl_random
0x4a1854 (0x4a0000 + 6228)
のアドレスです__stack_chk_guard
でページ フォールトが発生しました0x00400eb8
。0x00400eb8
命令と0x00400ebc
生成方法がよくわかりません。誰かがそれに光を当てることができますか?ありがとう。
gem5 - gem5 シミュレーション環境で時間を測定する最良の方法は何ですか?
gem5 シミュレーション環境で小さな行列乗算プログラムを実行していて、プログラムの実行時間を測定したいと考えています。プログラムは Fortran で書かれており、行列乗算ルーチンの前後で cpu_time を使用して時間を取得しています。しかし、gem5 環境で時間を測定するための他の良い方法はありますか?
gem5 - Gem5 の FS モードで統計情報の印刷を m5ops に関連付けるには?
SE モードでは、各統計出力を対応する m5op に関連付ける方がずっと簡単です。
ただし、複数(数十または数百) の統計情報がある FS モードでは、同じ「stats.txt」ファイルに出力されます。次のことをどのように識別できますか。
統計印刷のどれが何に対応していますか?
また
少なくとも、ユーザーによって呼び出された m5ops の続編である統計出力はどれですか?