dev: enable support for pd-gem5 runs 0
Review Request #3025 - Created Aug. 10, 2015 and discarded
| Information | |
|---|---|
| Mohammad Alian | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
changesets:
11016:4e5fcc7544ad "dev: enable support for pd-gem5 runs"
This patch modifies existing gem5 interface modules to enable
parallel/distributed simulation of a cluster using multiple gem5 processes.
Each separate gem5 process can communicate/synchronized with another gem5
process using ethertap interface.
First, a client/server like socket connection is introduced by modifying
socket.cc/hh (ListenSocket for server connection, ConnectSocket for client
connection). We utilize these sockets in ethertap.cc/hh to seamlessly
interconnect several gem5 processes together. ListenSocket objects are
instantioated for tap interfaces of the gem5 process which aims to
simulate a switch box. ConnectSocket is used for tap interface of fullsystem
nodes.
gem5 processes are synchronized using fix quantum synchronization approach.
Sync messages are sent/received through the same socket connection.
At the start of simulation, a sendSync event is scheduled at each ethertap
interface of switch process, while a recvSync event is scheduled at ethertap
interface of full-system nodes. When switch sends out a sync message to the
peer node ethertap interface, it will schedule a recvSync for that ethertap
interface at curTick() + syncQuantum. On the other side, ehtertap interface
of nodes will schedule a sendSync event at curTick() + syncQuantum on the
reception of a sync message. This loop continues and synchronous simulation
goes on.
