Would splitting a packet into flits not end up taking more space in the network therefore limiting the number of packets that can be send at any point of time?
When transporting long messages with wormhole model, latency is almost entirely independent of network distance. This is because the "total latency" = "time for single flit to travel thru network" + "time for a flit to make a single hop" * "total number of flits". As the message size becomes large, the number of flits become large, and thus the second term above totally dominates the overall latency.
How do the body flits know to follow the head flit? I'm assuming it must be done by some form of additional communication across the network. Wouldn't this just exacerbate the issue of network congestion?
@grarawr I don't think splitting the packet into flits would take up more space in the network since the flits in the system add up to be roughly the same size in the packet. The difference would be in the granularity to which we send over the links.
Copied from Wikipedia
One thing special about wormhole flow control is the implementation of virtual channels:
A virtual channel holds the state needed to coordinate the handling of the flits of a packet over a channel. At a minimum, this state identifies the output channel of the current node for the next hop of the route and the state of the virtual channel (idle, waiting for resources, or active). The virtual channel may also include pointers to the flits of the packet that are buffered on the current node and the number of flit buffers available on the next node.
Does this mean that flits are used only in the Network on Chips and multiprocessor scenarios? It would be difficult to maintain this state otherwise without extra communication overhead (by again using packets, flits).
I initially didn't understand how wormhole flow control really worked until seeing the lecture video. The main difference between wormhole and cut-through is that wormhole aims to improve on the use of the buffer. For cut-through, with high-traffic, buffers may be completely filled up with pieces for one package, and it prevents other packages from moving forward. In this case, for wormhole flow control, each flit for a package only moves when its head moves. Also, seems like in each switch, there can only be one flit for that package. This allows the network to route more packages at a time without reducing to store and forward.
@teamG, given what you said, is there any reason one should choose cut-through instead of wormhole to send packets (besides the added complexity of dividing packets into flits)?
@teamG Then why we need to change the granularity of flow control? We can still use packet based flow control, but like wormwhole, the switch only forwards packet when the header packet has moved forward, and then there are atmost one packet for each message inside any router.
@RX, based on my limited knowledge about this, I'm not sure what the difference is. Perhaps someone who knows more can chime in. But the wikipedia article says that wormhole is actually sometimes called cut-through because of their similarities. I would imagine in your case if we send packets that way for cut-through, it's effectively like wormhole, because the pieces of packets won't be filling up entire buffers and blocking other packets from proceeding.
@grizt, I think in a network with low traffic, sending it using wormhole or cut-through will effectively be the same, since the buffers will never be full. So I think there is probably no point to break the packet into flits(which are smaller pieces than the pieces we send in the normal cut-through flow control). Someone do correct me if I'm wrong here, in that case, if we break the packet down into smaller pieces, wouldn't the overall latency of sending it using wormhole control be higher, since we have to send more pieces?
@pkoenig10 Communications only occur between two nodes. Concretely, if head is blocked, head will tell the body and the body will tell the tail. By this means, only a signal needs to be sent.
When talking about really long messages, does that refer to the message length being more than network distance?