On May 16, 2007, at 11:19 PM, Jiayuan wrote:

Thanks Gabe! So Alpha is the choice at this time.

But I'm still fuzzy on the CMP simulation with M5.

1. is it possible to simulate a CMP under SE mode? If so, do you have any example scripts on configuring the CMP architecture? (in configs/ example,
 se.py has only one SimpleCPU configured)
It is possible. If you look at our 00.hello-mp regression test you can get an idea of how a CMP would be setup. However, by default there isn't any sharing. Each core is executing a different process.

2. Since I have to run threads on this configuration with SE mode, I will
 need to implement some thread creation/termination primitives in the
 simulator. There might be other primitives as well. This may involve:
adding more ops to the ISA, adding a load balancer unit to the simulator that creates threads (allocate stack size, set per-thread stack pointers,
passing thread contexts). Would you please give some hints on how to
implement these in M5?
This will be very difficult to implement in M5. You'll have to pretty much re-implement the pthreads library as well as a process/context switcher and a scheduler. Why not just run a full-system simulation and use pthreads? * New instructions can be implemented as pseudo ops: src/sim/ pseudo_inst.* and src/arch/alpha/isa/decoder.isa * To add new syscalls have a look at src/arch/alpha/(linux|tru64)/* and kern/(tru64|linux)/* * Initial stacks and the like are created in src/sim/process.cc and src/arch/alpha/process.cc * We haven't implemented something like a scheduler, so there isn't a place for you to look at source code, but to implement it well you'll probably want some kind of interrupt to happen in the cpu's tick() loop and you can go off and save one threads state and restore a different ones. We do something like that for window traps on SPARC. (src/arch/sparc/faults.cc|process.cc)

3. How Flexible is the memory system? In se.py, private L1 caches are
specified, and I saw in BaseCPU.py that a private L2 cache can also be
added, but what if I want to have private L1 caches for each core and a
shared L2 cache?
That would work fine as well, but with 2.0b3 you can only have one level of coherence. By the time 2.0f is out that will be solved.
 4. How fast is M5? How many instructions can M5 run in one second on
average?
It completely depends on your memory system configuration, how many cpus you have and what kind of cpus you have as well as what hardware you're running it on. 64bit x86 machine tend to be significantly faster than 32bit ones.

5. Why the test case radix doesn't work under ALPHA_SE, and instead it
prints out:
warn: loadGlobalSymbols: bad symbol header magic on
tests/test-progs/radix/bin/radix
warn: Entering event queue @ 0.  Starting simulation...
warn: ignoring syscall sigprocmask(3, 18446744073709551615, ...)
warn: ignoring syscall sigprocmask(3, 0, ...)
warn: ignoring syscall sigaction(8, 4831387552, ...)
warn: ignoring syscall sigaction(11, 4831387552, ...)
warn: ignoring syscall sigaction(10, 4831387552, ...)
warn: ignoring syscall sigaction(4, 4831387552, ...)
warn: ignoring syscall sigaction(7, 4831387552, ...)
warn: ignoring syscall sigaction(6, 4831387552, ...)
warn: ignoring syscall sigaction(12, 4831387552, ...)
warn: ignoring syscall sigaction(5, 4831387552, ...)
warn: ignoring syscall sigaction(13, 4831387552, ...)
These warnings are normal. They are just informative, the benchmark is running.

Ali

 Thanks!

 Jiayuan



-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Tuesday, May 15, 2007 11:37 PM
To: M5 users mailing list; Jiayuan
Subject: Re: CMP simulation in SE mode + RE: [m5-users] question on test
code compilation

One thing I noticed is that you said you compiled your binaries on a
SunOS
machine. SPARC SE only supports Linux binaries at the moment, so you'll need
to
recompile. Also, SPARC support is not totally production ready right now, so
you
could quite possibly run into problems which are not your fault. If you need something that's very likely to work, I would recommend using Alpha. If you decide to use SPARC, please let us know of any bugs you might find and/or
fix.

Gabe

Quoting Jiayuan <[EMAIL PROTECTED]>:

Thanks a lot Steve!

I am trying to model a CMP architecture. I think at this stage, I will not model OS. I would prefer to run with syscall emulation mode. So I have two
following questions:

1. is it possible to simulate a CMP under SE mode? If so, do you have any example scripts on configuring the CMP architecture? (in configs/ example,
se.py has only one SimpleCPU configured)

2. Since I have to run threads on this configuration with SE mode, I will
need to implement some thread creation/termination primitives in the
simulator. There might be other primitives as well. This may involve:
adding
more ops to the ISA, adding a load balancer unit to the simulator that
creates threads (allocate stack size, set per-thread stack pointers,
passing
thread contexts). Would you please give some hints on how to implement
these
in M5?

Thanks!

Jiayuan

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:m5-users- [EMAIL PROTECTED] On
Behalf Of Steve Reinhardt
Sent: Tuesday, May 15, 2007 2:39 PM
To: M5 users mailing list
Subject: Re: [m5-users] question on test code compilation

M5 can run pthreads binaries in full-system mode, which means you're
restricted to Alpha for now.

There are directions on building a gcc-based cross compiler here:


http://www.m5sim.org/wiki/index.php/Using_linux- dist_to_Create_Disk_Images_a
nd_Kernels_for_M5

Note that you just need to follow the first section (on building the
cross compiler); the other parts on building a new kernel are
unnecessary if you're just compiling new applications.

Steve

Jiayuan Meng wrote:
Hi all,

I am a starter on M5, and I'm interested in simulating a multithreaded
program on a CMP architecture. My question is, can M5 run programs
written with pthreads? what crosscompiler do you recommend to compile C or C++ code on a x86 host to SPARC/ALPHA binaries that can be run on M5?

I tried to compile helloworld code on UltraSparc IIIi/SunOS using gcc version 3.3.6. However, the sparc binary generates faults when the code
is run on M5. Would you please give me some hints?

Thanks!

Jiayuan


-------------------------------------------------------------------- ----

_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users






_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users


_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

Reply via email to