最近在研究gem5,nvmain, 并将nvmain集成到gem5里面,然后用基准测试spec cpu2006进行测试。之前一直找不到基准测包,现在终于找到了,在此写下实验过程。
我的系统是ubuntu,spec cpu 2006是cpu2006-1.2.iso镜像。
1. 解压cpu2006-1.2.iso
2 .安装spec cpu 2006
执行下面的命令:
./install.sh -d /home/jyf/download/speccpu2006
注意:/home/jyf/download/speccpu2006 是我电脑上的安装路径,可自定义。
3.运行shrc脚本
source shrc
4.修改配置文件
将config目录下的 Example-linux64-amd64-gcc41.cfg配置文件复制下,命名为gcc41.cfg,由于gem5运行spec需要静态可执行文件,所以将gcc41.cfg文件修改:
将
COPTIMIZE = -O2
CXXOPTIMIZE = -O2
FOPTIMIZE = -O2
改为
COPTIMIZE = -O2 -static
CXXOPTIMIZE = -O2 -static
FOPTIMIZE = -O2 -static
5.编译其中一个benchmark(这里是编译的gcc)
runspec –config=gcc41.cfg –action=build –tune=base gcc
若出现runspec找不到命令时,需要回退到spec的安装目录,即输入命令
.空格./shrc
注意:编译成功后会在bencuspec下的cpu2006下的403.gcc包里产生exe和build两个文件。
6.在gem5中用cpu 2006进行基准测试:
./build/X86/gem5.opt ./configs/example/se.py -c ../../speccpu2006/benchspec/CPU2006/450.soplex/exe/soplex_base.gcc41-64bit -o ../../speccpu2006/benchspec/CPU2006/450.soplex/data/test/input/test.mps
注意:
540.sople可以运行,运行结果在/home/jyf/download/gem_nvmain/gem5-master/m5out/stats.txt,但还是会提示:info: Increasing stack size by one page.
运行结果:
---------- Begin Simulation Statistics ----------
sim_seconds 0.051505 # Number of seconds simulated
sim_ticks 51505497500 # Number of ticks simulated
final_tick 51505497500 # Number of ticks from beginning of simulation (restored from checkpoints and never reset)
sim_freq 1000000000000 # Frequency of simulated ticks
host_inst_rate 1446792 # Simulator instruction rate (inst/s)
host_op_rate 2504656 # Simulator op (including micro ops) rate (op/s)
host_tick_rate 1490625852 # Simulator tick rate (ticks/s)
host_mem_usage 688560 # Number of bytes of host memory used
host_seconds 34.55 # Real time elapsed on the host
sim_insts 49990887 # Number of instructions simulated
sim_ops 86543190 # Number of ops (including micro ops) simulated
system.voltage_domain.voltage 1 # Voltage in Volts
system.clk_domain.clock 1000 # Clock period in ticks
system.mem_ctrls.pwrStateResidencyTicks::UNDEFINED 51505497500 # Cumulative time (in ticks) in various power states
system.mem_ctrls.bytes_read::cpu.inst 531676432 # Number of bytes read from this memory
system.mem_ctrls.bytes_read::cpu.data 74198617 # Number of bytes read from this memory
system.mem_ctrls.bytes_read::total 605875049 # Number of bytes read from this memory
system.mem_ctrls.bytes_inst_read::cpu.inst 531676432 # Number of instructions bytes read from this memory
system.mem_ctrls.bytes_inst_read::total 531676432 # Number of instructions bytes read from this memory
system.mem_ctrls.bytes_written::cpu.data 34023529 # Number of bytes written to this memory
system.mem_ctrls.bytes_written::total 34023529 # Number of bytes written to this memory
system.mem_ctrls.num_reads::cpu.inst 66459554 # Number of read requests responded to by this memory
system.mem_ctrls.num_reads::cpu.data 12371630 # Number of read requests responded to by this memory
system.mem_ctrls.num_reads::total 78831184 # Number of read requests responded to by this memory
system.mem_ctrls.num_writes::cpu.data 5590138 # Number of write requests responded to by this memory
system.mem_ctrls.num_writes::total 5590138 # Number of write requests responded to by this memory
system.mem_ctrls.bw_read::cpu.inst 10322712289 # Total read bandwidth from this memory (bytes/s)
system.mem_ctrls.bw_read::cpu.data 1440596065 # Total read bandwidth from this memory (bytes/s)
system.mem_ctrls.bw_read::total 11763308354 # Total read bandwidth from this memory (bytes/s)
system.mem_ctrls.bw_inst_read::cpu.inst 10322712289 # Instruction read bandwidth from this memory (bytes/s)
system.mem_ctrls.bw_inst_read::total 10322712289 # Instruction read bandwidth from this memory (bytes/s)
system.mem_ctrls.bw_write::cpu.data 660580533 # Write bandwidth from this memory (bytes/s)
system.mem_ctrls.bw_write::total 660580533 # Write bandwidth from this memory (bytes/s)
system.mem_ctrls.bw_total::cpu.inst 10322712289 # Total bandwidth to/from this memory (bytes/s)
system.mem_ctrls.bw_total::cpu.data 2101176598 # Total bandwidth to/from this memory (bytes/s)
system.mem_ctrls.bw_total::total 12423888887 # Total bandwidth to/from this memory (bytes/s)
system.mem_ctrls.readReqs 0 # Number of read requests accepted
system.mem_ctrls.writeReqs 0 # Number of write requests accepted
system.mem_ctrls.readBursts 0 # Number of DRAM read bursts, including those serviced by the write queue
system.mem_ctrls.writeBursts 0 # Number of DRAM write bursts, including those merged in the write queue
system.mem_ctrls.bytesReadDRAM 0 # Total number of bytes read from DRAM
system.mem_ctrls.bytesReadWrQ 0 # Total number of bytes read from write queue
system.mem_ctrls.bytesWritten 0 # Total number of bytes written to DRAM
system.mem_ctrls.bytesReadSys 0 # Total read bytes from the system interface side
system.mem_ctrls.bytesWrittenSys 0 # Total written bytes from the system interface side
system.mem_ctrls.servicedByWrQ 0 # Number of DRAM read bursts serviced by the write queue
system.mem_ctrls.mergedWrBursts 0 # Number of DRAM write bursts merged with an existing one
system.mem_ctrls.neitherReadNorWriteReqs 0 # Number of requests that are neither read nor write
system.mem_ctrls.perBankRdBursts::0 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::1 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::2 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::3 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::4 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::5 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::6 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::7 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::8 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::9 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::10 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::11 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::12 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::13 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::14 0 # Per bank write bursts
system.mem_ctrls.perBankRdBursts::15 0 # Per bank write bursts
system.mem_ctrls.perBankWrBursts::0 0 # Per bank write bursts
system.mem_ctrls.perBankWrBursts::1 0 # Per bank write bursts
system.mem_ctrls.perBankWrBursts::2 0 # Per bank write bursts
system.mem_ctrls.perBankWrBursts::3 0 # Per bank write bursts
system.mem_ctrls.perBankWrBursts::4 0