トップ 新規 編集 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

MarssX86

[ソフトウェア]

MarssX86

スタートパック

MARSSx86

MARSSx86(バージョン0.4)にいくつか追加機能を入れたもの marss-3.tar.gz(12)

MARSSx86 with DRAMSim2版はこちらmarss.dramsim-1.tar.gz(17)

MARSSの中にDRAMSim2を組み込んであるので、sconsによるコンパイル時にdramsimオプションが不要

イメージファイルはwhitebaseの/mnt/iscsi/doc/os/qcow2フォルダ内にあります

  • -perfect-cache-all: すべてのキャッシュのヒット率を100%にする
  • -perfect-cache-l2: すべてのL2キャッシュのヒット率を100%にする
  • -perfect-cache-l3: すべてのL3キャッシュのヒット率を100%にする
  • -stopinsns-each: 各コアで均一の命令数を実行可能
  • util/create_checkpoints.py: マルチチェックポイントがとれる

など

MARSSx86ではpLRUというちょっと変わったLRUを使用しています。MARSSx86に対応した普通のLRUのソースコードを置いておきます。lru.cpp(12)このソースはptlsim/lib/logic.hにコピーして使用します。

スクリプトなど

  • checkpoint_after: N命令FastForwardした後、チェックポイントを取ってくれる

ソースコード: checkpoint_after.c(15)

使い方: ./checkpoint_after N snapshot; ./fibonacci; ./stop_sim
        N - 命令数(末尾にmを付けると100万,gを付けると10億になる:1m, 1gとか)
        snapshot - スナップショット名
  • create_checkpoints.py: マルチチェックポイントを取ってくれる

ソースコード: create_checkpoints.py(24)

使い方: util/create_checkpoints.py [options]
  Options:
    -h, --help                       ヘルプの表示
    -c COMBO, --combo=COMBO          ベンチマークの組み合わせ数
    -d, --command                    スナップショット作成時に実行されるコマンドを表示する
    -f FILE, --qemu_img=FILE         スナップショットを保存するイメージファイル
    -l, --list                       ベンチマークの一覧を表示する
    -m VM_MEMORY, --vmem=VM_MEMORY   シミュレーション時のVMメモリサイズ
    -n, --notrun                     実行せず終了する
  • job.sh: 近藤研クラスタへMARSSx86のジョブを投げてくれる

ソースコード: job.sh(13), 設定ファイルのサンプル: machine.cfg(12)

更新履歴

  • 2012/09/07 -stopinsns-eachを使用した時に、すべてのコアが命令終了する前にFast Forwardが終わってしまう現象を解決しました (marss-1.tar.gz(8))
  • 2012/09/11 exp/bench.shを追加。-pefect-cache-l2, -pefect-cache-l3を追加 (marss-2.tar.gz(16))
  • 2012/10/12 Fast Forward時に命令数が各コアに均等に分配されてない問題を解決しました (marss-3.tar.gz(12))

インストール方法

動作環境

MARSSx86シミュレータを実行するには以下の環境が必要(推奨?)です

  • CPU cores with a minimum 2GHz clock and 2GB RAM (4GB RAM is preferred)
  • C/C++ compiler, gcc or icc
  • SCons compilation tool minimum version 1.2 - SCons website
  • SDL Development Libraries (required for QEMU)

インストール

ここでのインストール作業はUbuntu11.10での場合です。インストール時、シミュレータのパラメータがいくつか決まります。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install g++ git zlib1g-dev scons vnc4server libsdl1.2-dev xorg-dev libcurl4-gnutls-dev libgnutls-dev
$ mkdir sim
$ cd sim
$ git clone git://github.com/avadhpatel/marss.git
$ cd marss
$ scons -Q [options]
 -j                  ???
 -c                  アンインストール
 c=[num]             コア数
 pretty=[num]        0でコンパイル時の情報を省略しない
 config=[filename]   マシンの設定ファイル(指定無しの場合config/default.conf)
 debug=[num]         1でデバッグモード

debug=1を引数に与えると、gdbなどを使ったデバッグ作業が行えます。デバッグ作業時には以下のコマンドが必要となります。

(gdb) handle SIGUSR1 SIGUSR2 nostop noprint

※近藤研独自のブランチはgit://blackbase.hpc.is.uec.ac.jp/marss.gitにあります

MARSSx86 with DRAMSim2の場合コンパイル時にエラーが出るので(2012年9月時点)、qemu/SConstructを以下のように修正する必要がある。

if os.path.isdir(dramsim_path):
    env.Append(LINKFLAGS=('-ldramsim'))
    env.Append(LINKFLAGS=('-L%s' % dramsim_path));
    env.Append(LINKFLAGS=('-Wl,-rpath=%s' % dramsim_path))

もしかしたら必要

$ sed -i s/'sdl-config --cflags --libs --static-libs'/'sdl-config --cflags --libs'/ qemu/SConfigure

MARSSx86の使い方

とりあえず実行

sconsによるコンパイルが終了すると,qemuディレクトリの中にいくつかのバイナリが生成されます。

  • qemu-io (qemu上のIOをチェックする)
  • qemu-nbd (qcow2イメージをマウントする際に使用する)
  • qemu-img (スナップショットなど撮るときに使用する)
  • qemu-system-x86_64 (仮想マシン)

ここではqemu-system-x86_64について説明します。qemu-system-x86_64はマシンエミュレータであり、引数にイメージファイル(拡張子がimg,iso,qcow2などのファイル)を与えるとエミュレータが起動します。実行時のオプションはこのページの下部を参照してください。イメージファイルは自分でも作成できますが、MARSSx86のダウンロードページにおいて配布されています。ここではsplash.imgを使用します。

$ qemu/qemu-system-x86_64 splash.img

このコマンドでエミュレータを起動できます。エミュレータを停止したい時は、`ctrl+alt+2`を同時押しし、`quit`と入力します。

エミュレーションモードとシミュレーションモード

MARSSx86エミュレータには2つモードが用意されています。それはエミュレーションモードとシミュレーションモードです。(※本当にこの呼び方でいいかは分かりません)

エミュレーションモードはイメージファイルを仮想マシン上で実行しているときの状態です。「とりあえず実行」の節で説明したコマンドを打ち込んだ時にでてきたウィンドウはエミュレーションモードです。このモードではどの整数演算器がしようされたか、各コアのIPC(Instruction Per Cycles)はいくつか、などの詳しいことは分かりません。あくまで唯の仮想マシンです。

これに対して、シミュレーションモードは上記で述べたようなことを知ることができるモードです。このモードに切り替えるにはシグナルを送信してあげる必要があります。その方法はいくつかあります。一番よく使用するのが-simconfigオプションです。特にスナップショット(後述)を撮った際に使用します。simconfigオプション(コマンド)を使用するとシミュレーション時の設定を決めることができます。simconfigのオプションはこのページの下部を参照してください。

  • qemu-system-x86_64のオプションである-simconfigを使用し、ファイル内に`-run`もしくは`-fast-fwd-user-insns`と記述する
  • PTLCallライブラリを利用したシミュレーションモードに切り替えるプログラムを用いる
  • エミュレータ起動後に、`ctrl+alt+2`を同時押しし、`simconfig -run`と入力する

とりあえずシミュレーションしてみる

とりあえずシミュレーションしてみます。ここではコンパイル時にconfig/default.confを使用した場合を書きます。まず最初にシミュレーションの設定ファイル(sim.cfg)を書きます。

  • sim.cfg
# マシン構成
-machine single_core
# 100万命令(1m)だけシミュレート
-stopinsns 1m 
# シミュレーション時のログファイル名
-logfile test_fibonacci.log
# シミュレート結果のファイル名
-stats test_fibonacci.yaml

そして、実行へ

$ qemu/qemu-system-x86_64 splash.img -simconfig sim.cfg

エミュレータ実行後、ログイン。このMARSSx86のホームページで配布しているsplash.imgにはホームディレクトリにfibonacciというプログラムがあります。これをシミュレートしてみます。次のように入力するとシミュレーションモードに切り替わり、シミュレーションを開始します。

$ ./start_sim ; ./fibonacci ; ./stop_sim

100万命令実行後、MARSSx86は自動的に終了します。この時に、ディレクトリを見てみるとtest_fibonacci.logとtest_fibonacci.yamlというファイルが生成されています。これらのファイルの中にシミュレーション結果が記述されています。

設定ファイル

configディレクトリにマシンの設定ファイルがあります。ここではキャッシュ構成の設定などができます。ファイルの記述方法はhttp://marss86.org/~marss86/index.php/Machine_Configurationを参照してください

バッチファイル(util/run_bench.py)の使い方

util/run_bench.pyファイルは指定したイメージファイルのチェックポイントをすべて実行してくれるスクリプトです。細かなシミュレーション設定などもでき、シミュレーション終了後にメールで通知をすることもできます。スクリプト実行時に引数に実行したrun_configを指定する。

詳しい使い方はutil/READMEもしくはhttp://marss86.org/~marss86/index.php/Batch_Runsを参照してください。

使い方: util/run_bench.py [options] run_config
  • サンプルの設定ファイル(perとgccという名前で作ったチェックポイントからシミュレーション開始)
[DEFAULT]
marss_dir = /home/user/marss
util_dir = /home/user/marss/util
img_dir = /home/user/Images
qemu_bin = %(marss_dir)s/qemu/qemu-system-x86_64
default_simconfig = -kill-after-run -quiet
[email]
xoauth = xoauth.txt
to = user@gmail.com
[suite spec2006]
checkpoints = per, gcc
[run spec2006]
suite = spec2006
images = %(img_dir)s/ubuntu-natty.qcow2
memory = 4G
simconfig = -logfile %(out_dir)s/%(bench)s.log
 -stats %(out_dir)s/%(bench)s.yaml
 -machine single_core
 -stopinsns 1m
 -run
 %(default_simconfig)s    

イメージへのファイルのマウント

自分で作成したプログラムやベンチマークをイメージファイルに保存したいときがあります。そんな時のためのテクニックです。

イメージファイルを持っている場合 ex) hoge.img

sudo は省略します。ここではraw の場合だけ書いておきます。

  • 最初にイメージのファイルフォーマットを調べる
$ qemu/qemu-img info parsecROI.img
image: hoge.img
file format: raw
virtual size: 4.7GB (5000000000 bytes)
disk size: 4.7GB
  • イメージファイルをマウントします。
$ kpartx -a hoge.img
$ mount -o loop /dev/mapper/[your_loopback_device] /mnt

[your_loopback_device]は私の環境だとloop@p1@ とかになってました。

  • /mnt にイメージがマウントされるので、必要なファイルを適当な場所に入れます。
  • イメージのアンマウント
$ umount /mnt
$ kpartx -d hoge.img
loop deleted : /dev/loop0

これで完成です。

qcow2をマウント

通常qcow2をマウントすることができません。しかし、qemu-nbdを用いてマウントする方法があります。

適当なnbdに接続し、マウント

$ sudo modprobe nbd
$ sudo qemu-nbd --connect=/dev/nbd0 splash.qcow2
$ sudo mount /dev/nbd0 /mnt

ファイルシステムが分からなかったらfdiskで調べる

$ sudo fdisk /dev/nbd0

最後に切断する

$ sudo umount /mnt
$ sudo qemu-nbd --disconnect /dev/nbd0

スナップショットの取り方

スナップショットとはエミュレータのマシン状態を保存しておき、後でそこから実行することができる機能です。ここではのスナップショットの撮り方について説明します。

imgファイル(raw)ではスナップショットを取れません。そこでimgファイルをqcow2ファイルに変換する必要があります。ここではxxx.imgをxxx.qcow2に変換しています。

$ qemu/qemu-img convert -O qcow2 -f raw xxx.img xxx.qcow2

qemu起動。perlbenchプログラムのスナップショットを取るときは以下のように

$ qemu/qemu-system-x86_64 -m 1023 xxx.qcow2
(qemu)$ ./create_checkpoint perlbench; ./perlbench checkspam.pl 2500 5 25 11 150 1 1 1 1

チェックポイントが取れたら、確認

$ qemu/qemu-img info xxx.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 3.8G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         perlbench              279M 2012-05-08 15:07:49   00:07:34.238

スナップショットを取った場所から実行したい場合は、引数にsnapshot=onとloadvmをつける。simconfigをつけると実行される

例)
$ qemu/qemu-system-x86_64 -m 1023 -drive file=xxx.qcow2,snapshot=on -loadvm perlbench -simconfig sim.cfg
sim.cfg
-run
-stopinsns 10m
-stats hoge.yaml
-machine single_core
-quiet
-kill-after-run

オートログイン

http://marss86.org/~marss86/index.php/QEMU_Tips

create_checkpoint.py などを使ってチェックポイントの作成をする際には必要!

カスタムディスクの作り方

※Ubuntu11.10でのやり方ですimgファイルをどこからダウンロードしてなくても、自分で0から作ることができます。まずubuntu-vm-builderをインストールする

$ sudo apt-get install ubuntu-vm-builder

ubuntu-vm-builderを使ってイメージの作成

$ cd ~
$ sudo ubuntu-vm-builder kvm natty --arch amd64 --mem 1023 --mirror=http://jp.archive.ubuntu.com/ubuntu 
# kvmの所はqemuでも良いみたい(未調査
# nattyはubuntu11のコードネーム

10分程すると~/ubuntu-kvmが作られている。中にはrun.shとxxx.qcow2という2つのファイルがある。qcow2がイメージファイル

ここでのビルドに失敗する人は/usr/lib/python2.7/dist-packages/VMBuilder/plugins/ubuntu/dapper.py"内にあるunmount_devメソッド(118行目)を次のように変更する

def unmount_dev(self):
    self.context.cancel_cleanup(self.unmount_dev)
    run_cmd('sleep', '10'); // <--- add this line.
    run_cmd('umount', '%s/dev' % self.context.chroot_dir)

ログイン名とパスワードは両方"ubuntu"

カスタムディスクのマウント

他にもやり方があるとは思うけど一応

まずqcow2イメージをrawに変換してからマウントする

$ qemu/qemu-img convert -O raw -f qcow2 xxx.qcow2 xxx.img
$ sudo mount -o loop,offset=32256 xxx.img /mnt

メモ

(qemu) ./creating_checkpoint fibonacci; ./fibonacci
(qemu) snapshot_blkdev [drive] [imgfile]
$ qemu/qemu-system-x86_64 -m 1024 -drive file=image/splash.qcow2,snapshot=on -serial pty -loadvm fibo -simconfig sim.cfg -nographic
$ sudo ubuntu-vm-builder kvm natty --arch amd64 --mem 1023 --mirror=http://jp.archive.ubuntu.com/ubuntu -c ~/sample.cfg  
$ sudo mount -o loop,offset=32256 rawimage.img /mnt/tmp-img
$ qemu/qemu-img convert -O qcow2 -f raw hoge.img hoge.qcow2
  • マルチスレッドで実行したい時は、-threaded-simオプションをつける (mt-simブランチ)
  • チェックポイント作成時よりも少ないメモリで実行するとエラーが出る
  • perfect_cache, verify_cacheは将来的に廃止される
  • MARSSx86は実行時にメモリを大量に利用するので、複数起動させるとメモリ不足で落ちる(特に近藤研クラスタでやってはだめ)
  • 複数のプログラムを同時に別々のコアで実行するには、以下のようにする(コア0と1でfibonacciを同時実行)
$ taskset -c 0 ./fibonacci & taskset -c 1 ./fibonacci &
  • -corefreqオプションを使用しないと実験マシンのコア周波数をデフォルト値として使用するので、注意!(クラスタなどで実験する時に実験結果が変わってきてしまう)
  • コア数が8より大きい場合、仕様上シミュレーションを行えない(2013年2月現在)

qemu-system-x86_64のオプション一覧

usage: qemu [options] [disk_image]
  
'disk_image' is a raw hard disk image for IDE hard disk 0
  
Standard options:
  -h or -help     display this help and exit
  -version        display version information and exit
  -M machine      select emulated machine (-M ? for list)
  -cpu cpu        select CPU (-cpu ? for list)
  -simconfig config.file-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
  -fda/-fdb file  use 'file' as floppy disk 0/1 image
  -hda/-hdb file  use 'file' as IDE hard disk 0/1 image
  -hdc/-hdd file  use 'file' as IDE hard disk 2/3 image
  -cdrom file     use 'file' as IDE cdrom image (cdrom is ide1 master)
  -drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
      [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
      [,cache=writethrough|writeback|none|unsafe][,format=f]
      [,serial=s][,addr=A][,id=name][,aio=threads|native]
      [,readonly=on|off]
               use 'file' as a drive image
  -set group.id.arg=value
               set <arg> parameter for item <id> of type <group>
               i.e. -set drive.$id.file=/path/to/image
  -global driver.property=value
               set a global default for a driver property
  -mtdblock file  use 'file' as on-board Flash memory image
  -sd file        use 'file' as SecureDigital card image
  -pflash file    use 'file' as a parallel flash image
  -boot [order=drives][,once=drives][,menu=on|off]
               'drives': floppy (a), hard disk (c), CD-ROM (d), network (n) 
  -snapshot       write to temporary files instead of disk image files
  -m megs         set virtual RAM size to megs MB [default=128]
  -mem-path FILE  provide backing storage for guest RAM 
  -mem-prealloc   preallocate guest memory (use with -mem-path)
  -k language     use keyboard layout (for example 'fr' for French)
  -audio-help     print list of audio drivers and their options
  -soundhw c1,... enable audio support
               and only specified sound cards (comma separated list)
               use -soundhw ? to get the list of supported cards
               use -soundhw all to enable all of them
  -usb            enable the USB driver (will be the default soon)
  -usbdevice name add the host or guest USB device 'name'
  -device driver[,prop[=value][,...]]
               add device (based on driver)
               prop=value,... sets driver properties
               use -device ? to print all possible drivers
               use -device driver,? to print all possible properties
i386 target only:
  -win2k-hack     use it when installing Windows 2000 to avoid a disk full bug 
  -no-fd-bootchk  disable boot signature checking for floppy disks
  -no-acpi        disable ACPI
  -no-hpet        disable HPET
  -balloon none   disable balloon device
  -balloon virtio[,addr=str]
               enable virtio balloon device (default)
  -acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]
               ACPI table description
  -smbios file=binary
               load SMBIOS entry from binary file
  -smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
               specify SMBIOS type 0 fields
  -smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
             [,uuid=uuid][,sku=str][,family=str]
               specify SMBIOS type 1 fields
Linux/Multiboot boot specific:
  -kernel bzImage use 'bzImage' as kernel image
  -append cmdline use 'cmdline' as kernel command line
  -initrd file    use 'file' as initial ram disk
Debug/Expert options:
  -serial dev     redirect the serial port to char device 'dev'
  -parallel dev   redirect the parallel port to char device 'dev'
  -monitor dev    redirect the monitor to char device 'dev'
  -qmp dev        like -monitor but opens in 'control' mode
  -mon chardev=[name][,mode=readline|control][,default]
  -debugcon dev   redirect the debug console to char device 'dev'
  -pidfile file   write PID to 'file'
  -singlestep     always run in singlestep mode
  -S              freeze CPU at startup (use 'c' to start execution)
  -gdb dev        wait for gdb connection on 'dev'
  -s              shorthand for -gdb tcp::1234
  -d item1,...    output log to /tmp/qemu.log (use -d ? for a list of log items)
  -hdachs c,h,s[,t]
               force hard disk 0 physical geometry and the optional BIOS
               translation (t=none or lba) (usually qemu can guess them)
  -L path         set the directory for the BIOS, VGA BIOS and keymaps
  -bios file      set the filename for the BIOS
  -enable-kvm     enable KVM full virtualization support
  -xen-domid id   specify xen guest domain id
  -xen-create     create domain using xen hypercalls, bypassing xend
               warning: should not be used when xend is in use 
  -xen-attach     attach to existing xen domain
               xend will use this when starting qemu
  -no-reboot      exit instead of rebooting
  -no-shutdown    stop before shutdown
  -loadvm [tag|id]
               start right away with a saved state (loadvm in monitor)
  -daemonize      daemonize QEMU after initializing
  -option-rom rom load a file, rom, into the option ROM space
  -clock          force the use of the given methods for timer alarm.
               To see what timers are available use -clock ?
  -rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]
               set the RTC base and clock, enable drift fix for clock ticks (x86 only)
  -icount [N|auto]
               enable virtual instruction counter with 2^N clock ticks per 
               instruction
  -watchdog i6300esb|ib700
               enable virtual hardware watchdog [default=none]
  -watchdog-action reset|shutdown|poweroff|pause|debug|none
               action when watchdog fires [default=reset]
  -echr chr       set terminal escape character instead of ctrl-a
  -virtioconsole c
               set virtio console
  -show-cursor    show cursor
  -tb-size n      set TB size
  -incoming p     prepare for incoming migration, listen on port p
  -nodefaults     don't create default devices
  -chroot dir     chroot to dir just before starting the VM
  -runas user     change to user id user just before starting the VM
  -prom-env variable=value
               set OpenBIOS nvram variables
  -semihosting    semihosting mode
  -old-param      old param mode
  -readconfig <file>
  -writeconfig <file>
               read/write config file
  -nodefconfig
               do not load default config files at startup
During emulation, the following keys are useful:
  ctrl-alt-f      toggle full screen
  ctrl-alt-n      switch to virtual console 'n' 
  ctrl-alt        toggle mouse and keyboard grab

simconfigのオプション一覧

日本語化してくれる方募集中

PTLmon Control:
 -help                Print this message [enabled]
Action (specify only one):
 -run                 Run under simulation [disabled]
 -stop                Stop current simulation run and wait for command [disabled]
 -kill                Kill PTLsim inside domain (and ptlmon), then shutdown domain [disabled]
 -flush               Flush all queued commands, stop the current simulation run and wait [disabled]
General Logging Control:
 -quiet               Do not print PTLsim system information banner [disabled]
 -logfile             Log filename (use /dev/fd/1 for stdout, /dev/fd/2 for stderr) [ptlsim.log]
 -loglevel            Log level (0 to 99) [0]
 -startlog            Start logging after iteration <startlog> [0]
 -startlogrip         Start logging after first translation of basic block starting at rip [18446744073709551615]
 -consolelog          Replicate log file messages to console [disabled]
 -logbufsize          Size of PTLsim ptl_logfile buffer (not related to -ringbuf) [524288]
 -logfilesize         Size of PTLsim ptl_logfile [67108864]
 -dump-state-now      Dump the event log ring buffer and internal state of the active core [disabled]
 -screenshot          Takes screenshot of VM window at the end of simulation []
 -log-user-only       Only log the user mode activities [disabled]
Statistics Database:
 -stats               Statistics data store hierarchy root []
 -yamlstats           Statistics data stores in YAML format []
 -snapshot-cycles     Take statistical snapshot and reset every <snapshot> cycles [inf]
 -snapshot-now        Take statistical snapshot immediately, using specified name []
 -time-stats-logfile  File to write time-series statistics (new) []
 -time-stats-period   Frequency of capturing time-stats (in cycles) [10000]
Trace Start/Stop Point:
 -startrip            Start at rip <startrip> [18446744073709551615]
 -fast-fwd-insns      Fast Fwd each CPU by <N> instructions [0]
 -fast-fwd-user-insns Fast Fwd each CPU by <N> user level instructions [0]
 -fast-fwd-checkpoint Create a checkpoint <chk-name> after fast-forwarding []
 -stopinsns           Stop after executing <stopinsns> user instructions [inf]
 -stopcycle           Stop after <stop> cycles [inf]
 -stopiter            Stop after <stop> iterations (does not apply to cycle-accurate cores) [inf]
 -stoprip             Stop before rip <stoprip> is translated for the first time [18446744073709551615]
 -stop-at-marker      Stop after PTLCALL_MARKER with marker X [inf]
 -stop-at-marker-hits Stop after PTLCALL_MARKER is called N times [inf]
 -stopinsns-rel       Stop after executing <stopinsns-rel> user instructions relative to start of current run [inf]
 -bbinsns             In final basic block, only translate <bbinsns> user instructions [65536]
 -flushevery          Flush the pipeline every N committed instructions [inf]
 -kill-after-run      Kill PTLsim after this run [disabled]
Event Trace Recording:
 -event-record        Save replayable events (interrupts, DMAs, etc) to this file []
 -event-record-stop   Stop recording events [disabled]
 -event-replay        Replay events (interrupts, DMAs, etc) to this file, starting at checkpoint []
Timers and Interrupts:
 -corefreq            Core clock frequency in Hz (default uses host system frequency) [2666000000]
Validation:
 -enable-checker      Enable emulation based checker [disabled]
 -checker-startrip    Start checker at specified RIP [18446744073709551615]
Out of Order Core (ooocore):
 -perfect-cache       Perfect cache performance: all loads and stores hit in L1 [disabled]
Miscellaneous:
 -dumpcode            Save page of user code at final rip to file <dumpcode> [test.dat]
 -dump-at-end         Set breakpoint and dump core before first instruction executed on return to native mode [disabled]
 -bbdump              Basic block cache dump filename []
 -verify-cache        run simulation with storing actual data in cache [disabled]
Core Configuration:
 -machine             Available Machine: single_core,  []
Memory Hierarchy Configuration:
bus configuration:
 -enable-mongo        Enable storing data to MongoDB serve [disabled]
 -mongo-server        Server Address running MongoDB [127.0.0.1]
 -mongo-port          MongoDB server's port address [27017]
 -bench-name          Benchmark Name added to database []
 -tags                tags added to database []
Unit Test Framework:
 -run-tests           Run Test cases [disabled]
options for tools/utilities:
 -execute-after-kill  Execute a shell command (on the host shell) after simulation receives kill signal []
Synchronization Options:
 -sync                Number of simulation cycles between synchronization [0]
Simpoint Options:
 -simpoint            Create simpoint based checkpoints from given 'simpoint' file []
 -simpoint-interval   Number of instructions in each interval [10000000]
 -simpoint-chk-name   Checkpoint name prefix [simpoint]

リンク

MARSSx86

Development of MARSSx86

MARSSx86 with DRAMSim2

ベンチマーク(SPEC CPU 2006)について

ベンチマークの動作チェック

その他