Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

Simulator for Multicore

tsakunthala
Beginner
2,058 Views
Hi,
Is there any simulators available for Multicore processors? How can we simulate them and run?
0 Kudos
14 Replies
jimdempseyatthecove
Honored Contributor III
2,058 Views

It depends,

Hardware simulation (register level) is often only done by the manufacturer using something like Transmeta's Caruso with customized firmware.

Software simulation on the same system can be attained with a Virtualization systems. But most of these are setup to provide multiple seperate virtual systems and do not simulate a single system with multiple cores.

Most operating systemsdo permit multi-threading programs, which to some degree simulate a multi-processor system.

Older Intel processors with HT, to a limited extent, simulate a multi-core processor.

Jim Dempsey

0 Kudos
tsakunthala
Beginner
2,058 Views
Thanks for ur response sir..

We would like to do the software simulation of multi-core processors. I have certain doubts..

1. Can you please brief how the older Intel processors with HT or other processors can be used to simulate the multicore environment?

2. What about using the simulation tools like Superscalar simulator? Are there other such tools available to simulate multicore?

3. Is Linux the suitable OS to support simulation of multicore?

0 Kudos
jimdempseyatthecove
Honored Contributor III
2,058 Views

The simulation of Multi-Core processor, or simulation of any processor for that matter, is typically useful only by the manufacturer of the processor when they are testing archetectural features such as new instruction sets, or improved pipelining for "next generation" processors that are in the design phase.

Simulation of processors also serves purpose when a processor is no longer being manufactured and no spares are available. This is not the case with the multi-core processors.

For a end-user, the most suitable route is to purchase a system withthe Multi-Core Processor. This will be more cost effective than acquiring a simulation system (either hardware or software).

Jim Dempsey

0 Kudos
adimax24
Beginner
2,058 Views
I am doing Undergraduation in Computer Science and Engineeing from IIIT Hyderabad, India. I am in my 3rd year currently. A project of mine requires testing some parallel graph algorithms on hypothetical multi-core architectures. Hence I need a simulator which can simulate a large no. of cores.(16, 32 or more) Is there any tool by Intel which would help me to achieve the same. One of my seniors told me to use a virtualisation system "Simex" which is quite cumbersome. Hence i wanted to know whether there is an Intel or some other tool for it.
0 Kudos
TimP
Honored Contributor III
2,058 Views
To a limited degree, HyperThreading can represent application performance for multi-core. Current linux schedulers take better advantage of HT than did schedulers of the recent past. For example, I find that OpenMP benchmarks on Pentium D HT with 4 threads may show 50% increased performance over 2 threads, under SLES10 SP1.
As the commonly available Core 2 Quad "Kentsfield" CPUs sell for about $200 retail, and work as direct replacements in fairly cheap Core 2 Duo desktops, it seems unlikely you would want to invest a great deal of effort in more cumbersome ways of going about it.
0 Kudos
xraygenfit
Beginner
2,058 Views
If you are using OpenMP, which I would guess is the case, you can just set the number of threads to 16, 32, etc. The behavior will simulate a multicore system. Make sure you set the omp_num_threads function before calling your omp section
0 Kudos
jimdempseyatthecove
Honored Contributor III
2,058 Views

You will require the specification of the hypothetical multi-core architecture. This will include the instruction set, cache relationship(s), potentially memory bus configuration(s) and timing information. Instruction pipeline information and other internal features.

With this information at hand, you write what is called an emulator. You would choose a good language for the emulation, C++ (or C) would be a good choice.

You would define a class object that maintains the state of the virtual processor and instantiate as many such processor class objects as you wish to emulate in your simulation. The processor class objects would be initialized according to the level of detail you wish to emulate: e.g. does a processor have multiple cores, do cores within the same processor share the same cache (and how), how memory is shared between processors, etc...

Emulated instructions will likely be performedusing multiple time states with different instructions requiring different numbers of time states, and instructions within a core may be pipelined so more than one instruction in each processor core will be at various states of completion. You would likely have a synchronized time state between all processors but your simulation could permit skewing of the time states if you want to go to that extent in your simulation. Most multi-processors systems have something that is used as a master timing reference such as one timing source for the shared memory Front Side Bus. But this is dependent on your design of the hypothetical archetecture.

Writing such a simulator is a major project.

The next phase would be to adapt a compiler (Open Source C++ like GNU would be a likely candidate) such that it produces object code for this hypothetical processor. Then you would need to write (adapt) a Linker to construct a file containing an execuitable image.

You would also need to implement a rudimentary operating system within your virtual environment. Something like a BIOS. The simulation begins bypopulating some virtual memory with boot code and starts emulation. One of the first things in the emulated boot code is a BIOS call to load the test application. The test application makes BIOS calls to instantiate the additional processors and to start the interpretation.

This is a major undertaking.

Jim Dempsey

0 Kudos
jimdempseyatthecove
Honored Contributor III
2,058 Views

Additional information.

There is a class of processors that are used within embedded systems. Embedded processors are "simulated" withina programmabledevice (FPGA). A popular embeded processor is called ARMn (where n is a series number, e.g. ARM7). NIOS is another popular embedded processor. These embedded processors have C/C++ compilers and utilities. It is not unusual for an FPGA to contain multiple processors either running independently or running with shared memory.

The manufacturers of FPGA devices have development platforms such that you can simulate the FPGA totally with software on a PC. Therefore, it might be possible for you to piece together most of what you need by using components of an FPGA development platform.

Check with your Electrical Engineering department to see if they work with FPGA development systems, if so, ask for a demonstration.

Also note that in lieu of writing a software emulator of your hypothetical multi-processor archetecture you can construct the processor(s) within the FPGA or multiple FPGAs and have reasonably good fidelity in the emulation of your hypothetical system.

Jim Dempsey

0 Kudos
ketanm
Beginner
2,058 Views
One other possibility would be to work with other groups outside your university (may be IISc or TIFR etc.) which has some sort of super computing setup, which you can leverage.

That would help you focus on the problem you want to solve and improve there.

Ketan
0 Kudos
solange1234
Beginner
2,058 Views
Use simics: http://www.simics.net. They can simulate various systems, including multicore, the simulators are very easy to use and extend, you can install a real OS and run real programs on a simulator, and they have a wonderful support forum that can help you with any questions you have. Simics is a respected simulation engine in the research community.
0 Kudos
muktadir
Beginner
2,058 Views
Hi!

I need "Simex". Can you tell me where I can find it?
0 Kudos
ab_shaheen
Beginner
2,058 Views

hi i am a student form Egypt in computer engineering and want a multicore processor simulator source code in c++ language

from where can i get one like that?

thanks for your help and waiting for your reply

0 Kudos
Shashin_S_Intel
Employee
2,058 Views
hello
0 Kudos
jairajrao
Beginner
2,058 Views
Hello all,
Is there any Intel multi-core simulator similar to AMD SimNow? Please reply.
0 Kudos
Reply