Close

The train of thoughts and the red tail light

A project log for PEAC Pisano with End-Around Carry algorithm

Add X to Y and Y to X, says the song. And carry on.

Yann Guidon / YGDESYann Guidon / YGDES 07/23/2021 at 03:330 Comments

You might have guessed already that this post is not directly related to the main subject of this project but I'm not feeling (yet) the need to spin it off to a new separate project. So here it is: I think I have solved the problem with the "token ring".

A "ring" has been chosen for many reasons:

Now, if the basic idea of a ring bus or a token ring interco sounds simple and easy, the reality is much less so. In particular, classic ring networks use "slots" of fixed sizes so a data packet hops on the ring when one slot is free. For our jobs, this does not work as well because there are 2 sizes of packets:

Let's say we have a datapath with w bits, then there are already 6 types of packets, plus the empty type of packet. The ring is also synchronous to the main compute clock to keep things simple. And to keep up with 400MHz, they HAVE to  be simple.

The challenge is to insert the words in the shift register of the ring, without any risk of creating collisions, because a sender must look up to 4 previous units to see if they request to send data. This is not desirable and this has left me scratching my head for a long while...

The first inspiration was the token ring system but this couldn't work as is. The idea sounds good however and the trick is to adapt how the "token" is managed, to make sure there are no collisions. Anyway the principle remains the same: whichever node "has" the token can insert any stream of data on the ring.

The ring in fact is not one, it's open indeed (a bit like a JTAG scan chain):

so the classic "token ring" system must be adapted. The behaviour, nature and algorithm of the token is changed a bit...

The packet types could be encoded in additional 3 bits, representing:

000 : empty word
001 : token word
010 : write address word
011 : write Xinit word
100 : read address word
101 : read Xres word
110 : read cycle counter LSB
111 : read cycle counter MSB 

It's a lot for today, stay tune and come back tomorrow !

Discussions