Review Board 2.0.15


dev: enable support for pd-gem5 runs 0

Review Request #3025 - Created Aug. 10, 2015 and discarded - Latest diff uploaded

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.