Enabling 1-byte xConnect headers

Technical questions regarding the XTC tools and programming with XMOS.
leobodnar
Member
Posts: 12
Joined: Mon May 07, 2018 9:26 am

Enabling 1-byte xConnect headers

Post by leobodnar »

Is there a simple way of enabling 1-byte headers globally for the whole system, say, via .xn file?
I am sending a lot of single-token packets and this would significantly improve the payload efficiency.
I assume link-booting is hardwired to expect 3-byte headers?
Leo
xCONNECT Architecture
2.1 Headers
When a circuit is opened to a channel-end on a remote tile, the xCORE will create a
header and transmit this header to the switch prior to transmitting the first token.
The header comprises either a single byte or three bytes. The latter is the default
mode, the former is an optimized mode for small systems. In order to select 1-byte
mode, all nodes in the system should be set to generate and expect 1-byte headers
by writing to the Switch configuration register of the node on all nodes.


User avatar
CousinItt
Respected Member
Posts: 360
Joined: Wed May 31, 2017 6:55 pm

Post by CousinItt »

The XN file specification doesn't seem to have anything that will support that. I am guessing the build process will decide how big the headers should be based on the 'size' of the system.

You can explicitly check and alter the switch configuration register in each node during initialisation: see read/write_sswitch_reg() in the xtc user guide. I assume you will need to follow it with a delay before using the links to ensure every node has done likewise.
leobodnar
Member
Posts: 12
Joined: Mon May 07, 2018 9:26 am

Post by leobodnar »

I don't think the compiler is smart enough to make the decision that the network system is finite and "small". In the end, channel resources can be reprogrammed dynamically and who knows what the switches topology beyond .xn definition might be.

I have a simple no-frills two packages, four tiles system and it still uses three byte headers. I will see if I can dedicate a token to let two sides agree to swith to 1-byte header mode after they have successfully exchanged it.
Leo