Coder Social home page Coder Social logo

avadhpatel / marss Goto Github PK

View Code? Open in Web Editor NEW
126.0 18.0 63.0 17.17 MB

PTLsim and QEMU based Computer Architecture Research Simulator

Home Page: http://www.marss86.org

Python 1.94% Shell 0.11% C 83.68% C++ 12.43% Perl 0.41% Haxe 0.71% Objective-C 0.16% Assembly 0.38% Makefile 0.18% GDB 0.01%

marss's Introduction

MARSS-x86 : Micro-Architecture & System Simulator for x86
=========================================================

Copyright 2010 Avadh Patel (apatel @ cs.binghamton.edu)

Marss-x86 is a simulation tool for x86-64 based Computing Systems.  It is based
on two independent open-source projects QEMU (http://www.qemu.org/) and
PTLsim (http://www.ptlsim.org/).  Marss-x86 is developed at Computer
Architecture Group of SUNY Binghamton by Avadh Patel and other group Members.

You can find out more details about Marss go to (http://www.marss86.org/). 


System Requirements
-------------------
To compile Marss on your system, you will need following:
* 2.5GHz CPU with minimum 2GB RAM (4GB Preferred)
* Standard C++ compiler, like g++ or icc
* SCons tool for compiling Marss (Minimum version 1.2.0)
* SDL Development Libraries (Required for QEMU)


Compiling
---------
If you don't have SCons install, install it using your stanard application
installation program like apt-get or yum.

Once you have SCons install go to Marss directory and give following command:

    $ scons -Q 

Default compile disables debugging and logging functionalities, to compile with
logging functions enable give following command:

    $ scons -Q debug=1

Default compile process compile simulator for single-core configuration.  To
compile Marss for Multi-Core SMP configuration give following command:

    $ scons -Q c=[num_cores]

To clean your compilation:

    $ scons -Q -c

Running
-------
After successfull compilation, to run Marss you have to be in the root of Marss
source directory.  Then give the following command:

    $ qemu/qemu-system-x86_64 -m [memory_size] [path-to-qemu-disk-image]

You can use all the regular QEMU command here, like start VM window in VNC give
'vnc :10' etc.  Once the system is booted, you can switch to Monitor mode using
'Ctrl-Alt-2' key and give following command to switch to simulation mode:

    (qemu) simconfig -run -stopinsns 100m -stats [stats-file-name]

You can also save simulation configuration parameters into a config file and
pass that as argument when you start qemu with '-simconfig' option.

    $ qemu/qemu-system-x86_64 -m [memory_size] [path-to-qemu-disk-image] -simconfig [simulator-config-file]

To get the list of available simulation options give following command:

    (qemu) simconfig

It will print all the simulation options on STDOUT.


For more information on using and modifying Marss please visit our website :
    http://www.marss86.org/

Happy Hacking.

marss's People

Contributors

avadhpatel avatar dramninjasumd avatar fitzfitsahero avatar furatafram avatar grimreaper avatar stefanneumann avatar tj90241 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

marss's Issues

illegal instruction

I use the same compiler to compile SPEC 2006 and SPEC 2017. SPEC 2006 can run on ubuntu-natty.qcow2, but SPEC 2017 cannot and it outputs "Illegal instruction". Why ?

int 000::ReorderBufferEntry Aborted (core dumped)

When I excuted ./start_sim with kernel version 2.6.32, qemu worked well.

but I try to excute ./start_sim with kernel version 3.15, qemu is Aaborted.

/home/ychoijy/marss.dramsim/qemu/qemu-system-x86_64 -m 4096 -kernel /home/ychoijy/linux-3.15.3/arch/x86/boot/bzImage -initrd /home/ychoijy/image/ramdisk.img -append "root=/dev/ram init=/bin/ash" -L /home/ychoijy/marss.dramsim/qemu/pc-bios/ -simconfig /home/ychoijy/marss.dramsim/simconfig


PTLCALL type PTLCALL_ENQUEUE
MARSSx86::Command received : -run
== Loading device model file '/home/ychoijy/DRAMSim2/ini/my_dram.ini' ==
== Loading system model file '/home/ychoijy/DRAMSim2/system.ini' ==
===== MemorySystem 0 =====
CH. 0 TOTAL_STORAGE : 4096MB | 64 Ranks | 4 Devices per rank
Completed 0 cycles, 0 commits: 0 Hz, 0 insns/sec: rip 00000000004013aewriting vis file to /home/ychoijy/DRAMSim2/results/benchmark/my_dram/4GB.1Ch.64R.scheme2.open_page.32TQ.32CQ.RtB.pRank.vis
DRAMSim2 Clock Frequency =666666666Hz, CPU Clock Frequency=2700000000Hz
Completed 42000 cycles, 4848 commits: 208144 Hz, 24025 insns/sec: rip ffffffff81099cb5
qemu-system-x86_64: ptlsim/build/core/ooo-core/ooo-pipe.cpp:2109: int ooo::ReorderBufferEntry::commit(): Assertion `physreg->data' failed. Aborted (core dumped)


I don't know why qemu is aborted.

please help me. thank you.

Output files empty

Hopefully last issue,
I am running the run_bench.py script after creating the parsec-2.1 checkpoints with create_checkpoints.py. The problem is that the benchmarks are running very quickly and the .out and .yml files for each are blank which makes me think that there is something I am missing. Any advice would be appreciated

Changing Memory Access Algorithm

I am attempting to compare the performance of the same hardware model using different memory access algorithms but am having difficulty finding where in the code the default one is defined. If anyone could point me in the right direction I would really appreciate it.

TLB hit/miss modeling

MARSS does not simulate the TLB hit/misses. It must include TLB simulation to achieve better simulation accuracy.

Integrate MARSSX86 With DRAMSim2 on Cigwin

Dears,

Im trying from a while to integrate the MARSS with DRAMSIM2. It gives the below error even after installing gcc 4.5.3 (x86_64-w64-mingw32-gcc-4.5.3.exe). Is there any solution ?

scons dramsim=/cygdrive/c/users/ahmed/Downloads/DRAMSIM/DRAMSim2
scons: Reading SConscript files ...
running with -j16
Checking whether the C++ compiler worksyes
yes
ERROR: Marss does not support 32 bit x86 machine.
ERROR: Please compile/run Marss on 64 bit x86 machine.

scons: *** Return of non-existent variable ''ret_str''
File "/cygdrive/c/users/ahmed/downloads/DRAMSIM/marss.dramsim/qemu/SConfigure", line 32, in exit_with_error

Android-x86 on Marss - Pipeline deadlocked

I ran into an issue of pipeline deadlock when I was running my Android-x86 image on Marss. The way to reproduce the error is as follows.

Here is my marss and qemu version info:

$ git clone git://github.com/avadhpatel/marss.git
$ cd marss
$ git show --summary
commit 49fda4a45e5b29c7e05b9e456228a4d016831484
Merge: 6cf2d32 4ce18f7
Author: Brendan Fitzgerald <[email protected]>
Date: Tue Aug 20 10:30:37 2013 -0700

Merge pull request #34 from dramninjasUMD/master

Build # of cores string with preprocessor

lines 1-9/9 (END)

$ scons c=1 debug=2
$ ./qemu/qemu-system-x86_64 -version
QEMU emulator version 0.14.1, Copyright (c) 2003-2008 Fabrice Bellard

And we can start the simulation:

(1) $ ./qemu/qemu-system-x86_64 -m 4096 -hda ../path-to-disk/android-64.img -usbdevice mouse -usbdevice keyboard

I am using a customized Android-x86 image (You can download it here: https://www.dropbox.com/s/m83kei9zga82c35/android-64.img). Enter the debug mode which is non-graphical (during the booting you need to type "exit" to continue booting), here is the kernel info of this image:

# uname -a
Linux (none) 3.0.36-android-x86-eeepc+ #1 SMP PREEMPT Tue Aug 27 21:27:01 EDT 2013 x86_64 GNU/Linux

(2) I want to simulate this command:

# am start -a android.intent.action.Main -n com.android.calculator2/.Calculator

If there is GUI, then after this command, the Calculator app would be launched. Without graphics, nothing will happen. So now we add start_sim before this command and try to simulate it.

Switch to the qemu terminal (Ctrl+Alt+2), and type
(qemu) simconfig -machine single_core

Then switch back to the Android terminal (Ctrl+Alt+1), type
# cd /data/marss/
# ./start_sim ; am start -a android.intent.action.Main -com.android.calculator2/.Calculator ; ./kill_sim

(I compiled start_sim/kill_sim statically from the source code provided on Marss website. )

(3) The simulation starts:
Switching to simulation

And in my original terminal I can see the Completed Cycles scrolling down...

After a while, the simulation gets stuck and my original terminal's output stops on this line:
...
Completed 24021000 cycles, 1774788 commits: 54459 Hz, 51483
Completed 24034000 cycles, 1786064 commits: 59305 Hz, 51441
Completed 24045000 cycles, 1797644 commits: 51526 Hz, 54243insns/sec: rip ffffffff81026c57

And then after a while qemu exits:
...
Completed 24021000 cycles, 1774788 commits: 54459 Hz, 51483
Completed 24034000 cycles, 1786064 commits: 59305 Hz, 51441
Completed 24045000 cycles, 1797644 commits: 51526 Hz, 54243
qemu-system-x86_64: ptlsim/build/core/ooo-core/ooo.cpp:929: bool ooo::OooCore::runcycle(void*): Assertion 0' failed. Aborted`

If we look at the code ooo.cpp:929, we can see that the issue is still caused by "the pipeline could be deadlocked" but this information was not printed out to the terminal.

Compiling with g++ 4.6.3 and kernel 3.13 doesn't work

papamoose@grackle:~/grackle/marss$ cat /proc/cpuinfo | grep 'model name' | head -n1
model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz

papamoose@grackle:/grackle$ uname -a
Linux grackle 3.13.0-34-generic #60
precise1-Ubuntu SMP Wed Aug 13 15:55:33 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

papamoose@grackle:/grackle$ gcc --version
gcc (Ubuntu/Linaro 4.6.4-1ubuntu1
12.04) 4.6.4

...

papamoose@grackle:~/grackle$ git clone https://github.com/avadhpatel/marss.git
Cloning into 'marss'...
remote: Counting objects: 11798, done.
remote: Total 11798 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (11798/11798), 14.47 MiB | 4.39 MiB/s, done.
Resolving deltas: 100% (7980/7980), done.

papamoose@grackle:~/grackle$ cd marss/

papamoose@grackle:~/grackle/marss$ scons -Q
running with -j9
Machine 'shared_l2' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'shared_l2'.
Machine 'ooo_2_th' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'ooo_2_th'.
Machine 'moesi_private_L2' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'moesi_private_L2'.
Machine 'private_L2' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'private_L2'.
Plugins found :
Creating ==> ptlsim/build/cache/cacheTypes.h
Creating ==> ptlsim/build/cache/cacheTypes.cpp
Creating ==> ptlsim/build/core/atom-core/atom_atom.h
Compiling :: ptlsim/build/core/basecore.cpp ==> ptlsim/build/core/basecore.o
Compiling :: ptlsim/build/core/branchpred.cpp ==> ptlsim/build/core/branchpred.o
Creating ==> ptlsim/build/core/ooo-core/ooo_ooo.h
Creating ==> ptlsim/build/core/ooo-core/ooo_ooo_2.h
Creating ==> ptlsim/build/core/ooo-core/ooo_xeon.h
Compiling :: ptlsim/build/lib/bson/bson.c ==> ptlsim/build/lib/bson/bson.o
Compiling :: ptlsim/build/core/atom-core/atomcore.cpp ==> ptlsim/build/core/atom-core/atomcore_atom.o
... lots of things compiling
... until
/tmp/cc5fH3VH.s: Assembler messages:
/tmp/cc5fH3VH.s:2440: Error: no such instruction: vfnmadd312sd 56(%rsp),%xmm0,%xmm1' /tmp/cc5fH3VH.s:15318: Error: no such instruction:vfmadd312sd .LC1(%rip),%xmm1,%xmm0'
scons: *** [qemu/target-i386/op_helper.o] Error 1


Yet it compiles fine on a system with the following specs:

papamoose@hester:~$ cat /proc/cpuinfo | grep 'model name' | head -n1
model name : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz

papamoose@hester:$ uname -a
Linux hester 3.8.0-30-generic #44
precise1-Ubuntu SMP Fri Aug 23 18:32:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

papamoose@hester:~$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
...

This (https://www.mail-archive.com/[email protected]/msg04714.html) seems to be a similar issue.

Not all is lost though. I happen to have g++-4.8 installed on all my systems as well, so I set the line:
'base_env['CXX'] = "g++"' to 'base_env['CXX'] = "g++-4.8"' and it seems to have compiled, though with a lot more warnings.

EDIT: Using g++-4.8 does seem to do the trick.

Error compiling marss

I tried compiling marss using the command : scons -Q -j4 . But I am stuck with this error.

/bin/sh: 1: sdl-config: not found
ERROR: SDL library not found
Package gnutls was not found in the pkg-config search path.
Perhaps you should add the directory containing `gnutls.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gnutls' found
VNC TLS support not found, TLS support disabled
/bin/sh: 1: curl-config: not found
Warning: QEMU requires SDL or Cocoa for GUI output.
can't find SDL or cocoa support so use VNC or curses interface
AttributeError: 'NoneType' object has no attribute 'group':
File "/home/saideepak/marss/SConstruct", line 139:
ptlsim_lib = SConscript(ptl_compile_script)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 614:
return method(*args, **kw)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 551:
return _SConscript(self.fs, *files, *subst_kw)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 256:
call_stack[-1].globals)
File "/home/saideepak/marss/ptlsim/SConstruct", line 38:
GCC_MAJOR_MINOR_VERSION = re.match(r'\d
.\d+',GCC_VERSION).group() #e.g. returns 4.2 for 4.2.2

Even though I installed sdl-libraries. I still get the same error. Any help?

Job balance among cores

Thank you for your efforts on this simulator. It is very useful. However, I found that jobs are not equally distributed among cores. For example, I run 4 threads among 4 cores. I found that 1 or 2 cores are often not used to run my programs. If I am lucky, all 4 cores are used, but it happens not that often. Could you tell me what I missed and why it happens? And how can I fix it?

One example is as follows. As you can see ooo_0 didn't run user programs at all.

user.base_machine.ooo_0_0.thread0.commit.ipc = 0
user.base_machine.ooo_1_1.thread0.commit.ipc = 0.634201
user.base_machine.ooo_2_2.thread0.commit.ipc = 0.648642
user.base_machine.ooo_3_3.thread0.commit.ipc = 0.639732
kernel.base_machine.ooo_0_0.thread0.commit.ipc = 0.0147105
kernel.base_machine.ooo_1_1.thread0.commit.ipc = 0.173759
kernel.base_machine.ooo_2_2.thread0.commit.ipc = 0.565157
kernel.base_machine.ooo_3_3.thread0.commit.ipc = 0.173546
total.base_machine.ooo_0_0.thread0.commit.ipc = 0.0147105
total.base_machine.ooo_1_1.thread0.commit.ipc = 0.502229
total.base_machine.ooo_2_2.thread0.commit.ipc = 0.641751
total.base_machine.ooo_3_3.thread0.commit.ipc = 0.503832

About the inclusivity of the caches

Hi,

Are the caches in marssx86 by default inclusive? Is there any way I could change the inclusivity of the caches if they are not?

Thanks for your time.

Saideepak

Some experience running xv6 on Marss??

This might be a winner for teaching. Both Xv6 and PTLsim are nifty but great for class-ro0m. Although gem5/linux might be more advanced but both are way overkill for this purpose. With this mindset I tried to run both with no success. xv6 x86_64 implementation enter in panic with:

qemu/qemu-system-x86_64 -m 256 -nographic -hdb fs.img xv6.img
xv6...
acpi: cpu#0 apicid 0
acpi: cpu#1 apicid 1
acpi: ioapic#0 @fec00000 id=2 base=0

cpu0: starting xv6

ioapicinit: id isn't equal to ioapicid; not a MP
cpu1: starting
cpu0: starting
pid 1 initcode: trap 14 err 4 on cpu 1 eip 0x0 addr 0xe000--kill proc
cpu1: panic: init exiting

There is any experience on this? ioapicinit xv6 error seems a bit scary. Makes sense to keep exploring this path or is better to take some alternate route. I have little experience with MARSS, so any suggestion will be welcomed...

Simulator aborting some times

Hi,

When ever I start to run a program in the simulation, sometimes it runs fine and sometimes it gets aborted due to some assertion failing. There are 2-3 errors because of which my simulation aborts. It runs fine if I try to repeat the execution. Is this a common issue with the simulator?. Or is it because of the modifications which I made to the simulator. If this is the case, why is it running fine sometimes? Any ideas on the reason for aborts.

Thanks for your time and any comments are welcome.
Regards,
Saideepak.

Is it possible to add a syscall/instruction/pseudo-instruction?

Hi,

Is it possible to add a syscall/instruction/pseudo-instruction to the simulator? I have to set a bit in the simulator from the program using this instruction. If yes, could you please shed some light on how to do this?

Thanks for your time and any comments are welcome.
Regards,
Saideepak.

about the Return Address Stack(RAS)

Hi. I have some questions about the RAS.

It seems the RAS is shared between OS and user program, and I wonder if it is shared between different threads. If it is, then if I configure a single core with 1 thread in config/default.conf

    min_contexts: 1
    max_contexts: 1

can this guarantee that the RAS is only occupied by one program at runtime?

And for multiple threads, how can I save/restore the RAS when context switch? Modify OS or MARSSx86?

If it is not shared, where is the code that saves/restores the RAS when context switch?

Unable to successfully run scons due to undefined reference to BIT in kvm.c

I have a problem while trying to run step 2 of the MARSSx86+DRAMSim2 configuration (Go into the marss folder and type scons dramsim=/full/path/to/DRAMSim2). I have successfully resolved all previous dependency issues by installing necessary packages.

I get an undefined reference to BIT in kvm.c

john@abcd:~/marss.dramsim$ scons dramsim=/home/john/DRAMSim2
scons: Reading SConscript files ...
running with -j5
Checking whether the C++ compiler works(cached) yes
no
yes
yes
no
Checking for C library z... (cached) yes
yes
Checking for C library X11... (cached) yes
yes
Checking for C library vdeplug... (cached) no
no
Checking for C library curses... (cached) yes
Checking for C library pthread... (cached) yes
yes
Checking for C library fdt... (cached) no
yes
yes
yes
no
yes
yes
yes
yes
yes
yes
Checking for C header file signal.h... (cached) yes
Checking for C header file time.h... (cached) yes
Checking for C library rt... (cached) yes
Checking for C function fdatasync()... (cached) yes
yes
yes
yes
yes
Checking for C library attr... (cached) no
yes
yes
yes
Checking for C library sasl... (cached) no
Checking for C header file byteswap.h... (cached) yes
Checking for C header file machine/bswap.h... (cached) no
Machine 'shared_l2' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'shared_l2'.
Machine 'ooo_2_th' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'ooo_2_th'.
Machine 'moesi_private_L2' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'moesi_private_L2'.
Machine 'private_L2' requires minimum of 2 contexts while you are compiling with 1 contexts. Skipping this machine 'private_L2'.
Plugins found :
scons: done reading SConscript files.
scons: Building targets ...
Linking Program ==> qemu/qemu-system-x86_64
qemu/libqemu_common.a(misc.o): In function slirp_connection_info': misc.c:(.text+0x917): warning: memset used with constant zero length parameter; this could be due to transposed parameters qemu/target-i386/kvm.o: In functionkvm_arch_init_vcpu':
kvm.c:(.text+0x1ed6): undefined reference to BIT' kvm.c:(.text+0x1ee5): undefined reference toBIT'
kvm.c:(.text+0x1f60): undefined reference to BIT' kvm.c:(.text+0x2111): undefined reference toBIT'
kvm.c:(.text+0x2181): undefined reference to BIT' qemu/target-i386/kvm.o:kvm.c:(.text+0x21f1): more undefined references toBIT' follow
collect2: error: ld returned 1 exit status
scons: *** [qemu/qemu-system-x86_64] Error 1
scons: building terminated because of errors.

Infinite loop of TLB miss

Scenario:

  • There are many uops that contains load/store to memory address. If the load and store addresses are in different pages and if both the pages have the same index to tlb page then there is a recursive page faults which will cause the simulator to go in infinite loop.

Suggested solution:
Modify the QEMU interface of tlb_fill and cpu_x86_handle_mmu_fault to have an option to return without causing actual page fault. Then modify the ptlsim to have two levels of page fault handling:
- In first level we try to fill the tlb and on success we don't flush pipeline but just replay the uop that caused the fault. But on failure we move to second level of page fault.
- In second level call the tlb_fill to cause the page fault which will change the execution to kernel mode.

Use MARSS's cache module separately

I'm wondering if the cache module can be used separately on some other platforms (if those platforms support an external module. e.g. Synposis Processor Designer, etc.) or it is only applicable in MARSS full-system simulator.

Thanks,
-Amir

Error when building with debug enabled

When trying to build with the debug flag enabled I am getting this error:
error: use of deleted function 'YAML::Emitter& YAML::Emitter::operator=(const YAML::Emitter&)'
in ptlsim/build/tests/stats-tests.cpp, I am unsure if this is why I am getting no output to my stats file but I feel like this is a problem. Any advice on how to solve this issue would be appreciated.

is the get_virtual_address function deprecated?

In the mail list I see using get_virtual_address function to get the virtual address, but I cannot find this function in the definition of MemoryRequest.

So, how can I get the virtual address?
This question also refers to my post on the mail list which started by Wenjie Liu.
Thanks.

Marss86 + V8 JavaScript engine

There is a strange behaviour executing V8 engine on marss86. Specifically, the problem is that the inline caches of V8 don't work properly at the simulation mode (At emulation time it works well!). Which kind of applications are not supported by marss?

batch runs

After simulating bzip in ubuntu-natty.qcow2 successfully, I try to run it in batch mode. Checkpoint has been created for bzip, but the command ./util/run_bench.py -d run bzip
outputs the following message and halted.
Reading config file /home/xqz/link/marss/util/util.cfg
Checkpoints: ['bzip']
simconfig: -logfile %(out_dir)s/%(bench)s.log
-stats %(out_dir)s/%(bench)s.yml
-machine xqz
%(default_simconfig)s
Total run configurations: 1
1 parallel simulation instances will be run.
All files will be saved in: run
Checkpoint bzip
All Threads are started
simconfig: -logfile /home/xqz/link/marss/run/bzip.log
-stats /home/xqz/link/marss/run/bzip.yml
-machine xqz
-kill-after-run -quiet
Config file written
Starting Checkpoint: bzip
Command: /home/xqz/link/marss/qemu/qemu-system-x86_64 -m 4G -serial pty -nographic -drive cache=unsafe,file=/home/xqz/link/marss/myfile/ubuntu-natty.qcow2 -simconfig /home/xqz/link/marss/run/bzip.simcfg -loadvm bzip -snapshot
char device redirected to /dev/pts/0

^CWriting to output file completed
Writing to stdout completed
Traceback (most recent call last):
File "./util/run_bench.py", line 420, in <module>
th.join()
File "/usr/lib/python2.7/threading.py", line 940, in join
self.__block.wait()
File "/usr/lib/python2.7/threading.py", line 340, in wait
waiter.acquire()
KeyboardInterrupt

Did I miss anything?

Multiple virtual addresses have same physical address

Hi all,

I was analyzing some virtual addresses and their corresponding physical addresses. Surprisingly, sometimes, the same virtual address is translated to different physical addresses. Also, sometimes, different virtual addresses are translated to the same physical address. I am quite confused here. Can anyone explain what's happening here?
I am displaying my findings here:

same virtual to different physical-
7f7073bf5000 1171f97f0
7f7073bf5000 116c05e08
7f7073bf5000 116db8ce8
7f7073bf5000 117124fa8

Different virtual to same physical(the virtual addresses correspond to different pages here, but they are getting translated to same physical)-
7f7073bef000 1bac000
7f7073bf0000 1bac000
7f7073bf1000 1bac000
7f7073bf2000 1bac000
7f7073bf3000 1bac000
7f7073bf4000 1bac000
7f7073bf5000 1bac000
7f7073bf6000 1bac000

Any comments are welcome.
Thanks in advance.

Regards,
Saideepak.

machine configuration

I don't know how to configure the simulated CPU with a 64-entry instructions TLB and 64-entry data TLB.

Besides, I try to configure it with a 96-entry issue queue, and add the following code in conf/ooo_core.conf

core:
ooo:
base: ooo
params:
ISSUE_Q_SIZE: 96

But an error occurs when simulating ls command:

qemu-system-x86_64: ptlsim/build/core/ooo-core/ooo-exec.cpp:186: bool ooo::IssueQueue<size, operandcount>::insert(ooo::IssueQueue<size, operandcount>::tag_t, const tag_t*, const tag_t*) [with int size = 96; int operandcount = 4; ooo::IssueQueue<size, operandcount>::tag_t = short unsigned int]: Assertion `!bit(valid, slot)' failed.

It seems 96 entries are too large. Any suggestions would be appreciated.

Trouble understanding the stats

Hi,

I can see that there is separate stats section for the user, kernel and also a section for the total stats. What I don't understand is why these stats are repeated once again? I can see that the two sets only differ in run_seconds, cycles_per_sec and commits_per_sec and everything else is same. Can anyone explain the reason for the second set(user, kernel and total) of stats?
FYI: I am simulating an ooo core with 2 threads

Thanks for your time and any comments are welcome.
Regards,
Saideepak.

Add option to not-cache the memory requests

There are many cases where request to memory subsystem should not be cached in L1/L2/L3 caches. Current MARSS does not provide this feature.

Add an option in MemoryRequest to enable/disable caching of requested line.

MARSS +DRAMSim2

Dears,

Iam working on RTS memory scheduling research. I finished my work on DRAMSim and need to integrate my work to MARSS. I applied every thing in the below link

https://github.com/dramninjasUMD/DRAMSim2/wiki/MARSSx86-with-DRAMSim2

and checked that DRAMSim is attached to QEMU

$ ldd qemu/qemu-system-x86_64 | grep dramsim

    libdramsim.so =>/home/ashafik/NEW_20140724/marwdram/DR/DRAMSim2/libdramsim.so (0x00007ff995859000)

And run the simulation by the following command, I didnt find any result either dramsim.log in marss directory or vis file in results directory in dramsim. Kindly advice

qemu/qemu-system-x86_64 -m 2048

Launching QEMU in monitor mode

  1. I'm unable to enter QEMU's monitor mode after booting & logging into the new kernel by pressing Ctrl+Alt+2. There is no response. So I have to first launch QEMU using:
    qemu-system-x86_64 -m 1024 -hda ~/full_system_images/ubuntu-natty.qcow2 -k en-us -curses -monitor telnet:127.0.0.1:1234, server, nowait

And then in a new terminal I have to
telnet 127.0.0.1 1234

This launches the monitor console. But even this approach throws issues like 'socket not available' sometimes.

Is there a way to use Ctrl+Alt+2 to launch QEMU?

I'm Tight VNC Viewer to connect to a remote desktop. The host environment is as follows:
3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

  1. The monitor mode fails to recognize simconfig. It gives an error message
    unknown command: 'simconfig'

Small bug related to architectural register write stats

In ooo-pipe.cpp::ReorderBufferEntry::commit() I have found a small bug.

if likely (archdest_can_commit[uop.rd]) {
    thread.commitrrt[uop.rd]->uncommitref(uop.rd, thread.threadid);
    thread.commitrrt[uop.rd] = physreg;
    thread.commitrrt[uop.rd]->addcommitref(uop.rd, thread.threadid);

    if likely (uop.rd < ARCHREG_COUNT) {
        ctx.set_reg(uop.rd, physreg->data);
    }

    if unlikely (opclassof(uop.opcode) == OPCLASS_FP)
        thread.thread_stats.fp_reg_writes++;
    else
        thread.thread_stats.reg_writes++;

    thread.thread_stats.physreg_reads[physreg->rfid]++;

    physreg->rob = NULL;
}

This line

if unlikely (opclassof(uop.opcode) == OPCLASS_FP)

should be changed to

if unlikely (isclass(uop.opcode, OPCLASS_FP))

How to use the debug statements?

Hi,

I have compiled marss with the debug option. I could see some statements like " memdebug( ... ) " which I think will help in debugging. How can I use those? Is there any option that I should provide while running. I couldn't get much help from the site. Can anyone help? Any comments are welcome, thanks for your time.

Saideepak

Disk Image Issue

I'm not sure if this should go here but I couldn't find another place to post.
I am trying to run marss with the parsecROI.img file from the Disk Images page on the Marssx86 site. When I attempt to build the parsec-2.1 benchmarks with parsecmgmt I get:
env: /usr/bin/make: No such file or directory
and the build fails. Has anyone else run into this problem and if so is there a known solution?

Thanks and if I am missing something simple I sincerely apologize for cluttering up this page.

Marss with Xen

I am faced with a problem that the Marss86 is not working properly with Xen hypervisor.
I have tried to setup Xen on the customized disk, which is based on ubuntu 10.04-server(64bit) and kernel 2.6.32.40, to simulate system virtualization.

Fortunately, the system works well without any issues in emulation mode(QEMU).
However, when I change the mode from emulation to simulation, the simulation is not working well.
I just tried to simulate 'ls' shell command. ( $] ./start_sim; ls; ./stop_sim )
I attached the error message below.


qemu-system-x86_64: ptlsim/build/core/ooo-core/ooo-pipe.cpp:2109: int ooo::ReorderBufferEntry::commit(): Assertion `physreg->data' failed.

Aborted (core dumped)

I configured shared_l2 as a machine type, but the xeon_single_core also shows same problem.
When I boot the native system(non-virtualized), I have no problem simulating the 'ls' command.

So, I think the problem is not related to the customized disk.
When booting xen+dom0(virtualized), the problem occurs.

Is there anyone who experience the same or similar issues?
Any suggestions would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.