next up previous
Next: Indirect Network Module Up: Proteus Simulator Previous: Proteus Simulator

Direct Network Module

 

Proteus provides support for both exact and analytical simulation of direct networks (i.e., k-ary, n-cubes, rings, etc.) and purports to support an analytical model for an indirect network which was not readily apparent to us. In this section, the network simulator module that gives the most accurate information about network activity is described to prepare the reader for a discussion of the indirect network module developed during this project.

There are three types of requests used by the network module. The first is a send which signifies that a processor is ready to inject a message into the network. The second type of request is the route request, which computes the next node for a packet and computes the arrival time of that packet at that node. The arrival time is a function of the packet length, current contention (availability) on the channel, switch and wire delays. The last type of request is the receive request which occurs when a packet reaches its destination. It's primary tasks is to dispatch the packet to the message queue of the destination processor.

The most interesting of the three requests types is the route request. The discussion here applies equally to Section 2.2, since we used some of the same ideas. In order to accurately simulate an interconnection network, contention on a particular channel must be taken into account when routing a packet that needs to use that channel. Also, in real ICNs, packet incur a delay of several cycles while cutting through a switch. It can also incur a small latency while traversing a wire. How is the exact simulation done in Proteus' network module? The individual channels (both input and output) are time-stamped by Proteus.

  
Figure 1: Contention at the output port of a direct network switch

Figure 1 illustrates an example. If a packet has to be routed from processor P to OP (to which another processor is physically connected), it cannot be routed immediately to that port because it is being (solid line from IP to OP) used by another packet. So, the packet will see a delay of at least , where LENGTH is the length of the packet in flits, (flow control bits [3]. Thus the packet will reach its destination (once injected into the network) , where and are the wire and switch latencies respectively.

As stated in an earlier section, Proteus uses an event queue to to simulate the operation of the underlying machine (i.e., communication calls, shared memory accesses, context switches, etc.). Thus, the communication event types discussed above are scheduled on the queue to run at some future time, which is dependent on the traffic in the network. From the example, a receive event would be scheduled at time T to simulate the delay seen by a packet.

In order to facilitate the rapid development of a network module, many of the ideas used the supplied module were used to build our own.



next up previous
Next: Indirect Network Module Up: Proteus Simulator Previous: Proteus Simulator



Generated by latex2html-95.1
Thu Jun 1 21:05:27 EDT 1995