Previous | Next --- Slide 45 of 51
Back to Lecture Thumbnails

Some advantages of Wormhole flow control are -

1) Compared to Cut-through flow control, Wormhole flow control makes better use of buffer space.

2) It can improve throughput as an entire packet does not need to be moved to the next node at each step.

More information can be found here.


How are packets different from flits?

Are flits just smaller packets that take up less buffer space?

Also, how is a packet broken down into flits? Will you need to create an additional header and tail for each flit that you make?


@dhua One difference, as illustrated in the next slide, is that while the head flit gets blocked the rest of the following flits from the same packet remain where they are, but for packet buffering all contents of a packet can be forwarded into the buffer where the head is blocked.


I was wondering why we don't just split a message directly into one long sequence of flits instead of splitting it into packets, and splitting the packets into flits.

The answer that I came up with is that we can send multiple packets in parallel across a network, but a sequence of flits has to be sent sequentially through the network. (But if a message is sent from one place to another, wouldn't all the packets take the same path, making parallelism less useful?)


@dhua, I think another good reason is to create a layer of abstraction. For example the Internet Protocol (IP) only worries about dealing with entire packets, and it doesn't care about how the packets are physically transported from one node to another. As a result the same IP implementation can be used with different link layer implementations.


I am confused about what is the difference between wormhole and cut-through? In the cut-through, if header is blocked, all followings are also blocked; which seems similar as head flit.

One possible difference I think of is packet-based routing does not explicit split packets into flits, the 'pieces' of a packet in packet-based routing are more like part of byte streams; while in flit-based routing, we literally sending flit by flit.



In cut-through routing, when the header is blocked (say at Switch A), the followings are still to be transported to Switch A. On the other hand, for wormhole model, if the header flit is blocked at Switch A, the followings do not move further until the header leaves Switch A. And, this is how wormhole model allows switches to have smaller buffer sizes. Does this make sense?


I'm a little confused about the name "wormhole". In my view, all the flits are always occupying a stable number of hops in the network, i.e. the number of flits minus 1. When the head flit stalls, the next flits will stop moving. So this worm doesn't seem elastic...


@Richard. See picture on next slide. The metaphor is that when the head flit makes a step forward, then all the flits can then follow. (Head inches forward, then rear)