Transit Note #21

MBTA: Message Formats

Andre DeHon

Original Issue: June 1990

Last Updated: Tue Nov 9 13:01:26 EST 1993

Purpose

This note documents the format of data streams sent across the network between the network interfaces, net-in and net-out (tn24) (tn23). In essence, this document describes the transmission sequences for the network level transactions described in (tn19).

Message Components

The bytes of a network message can be classified as follows:

DST
destination node for network message
OP
operation to be performed ( e.g. read, write, noop)
ADDR
address for read or write operations
LEN
length of the data to be transferred by a read/write operation in words
DATA
data associated with message
CHKSUM
forward checksum on message components
CTRL
flow control information

Destination

The destination specifies the node in the network to which the network message is directed. This byte quantity is simply the high 8 address bits (ADDR) of the global shared memory address for memory operations. This byte is interpreted directly by the routing network as the routing byte.

N.B. This limits the number of nodes to 256. This should not pose any long term limitation since we will certainly have revised many of these details (including going to a larger address space) by the time we build a machine with more than 256 nodes.

Operations

Table provides a tentative encoding for operations. These operations correspond exactly to those suggested in (tn19). The operation encoding for an rop is passed straight through to the network processor. The processor then interprets this encoding to determine the exact function specified.

Address

For read and write operations, there will be three bytes of address to specify the address of data on the remote node.

Data

The data associated with each operation will be transmitted with each word broken into four byte chunks.

Length

For read and write operations, a length byte specifies the number of consecutive memory words to read or write.

Checksum

The integrity of each network transaction is verified with a forward checksum (tn6). The checksum is only a single byte wide. For the moment, we will consider generating this checksum using the same CRC checksum generator used by RN1 [Min90]. Since RN1 makes use of a 14-bit checksum instead of an 8-bit checksum, the forward checksum will utilize only bits 9:2 of the generated checksum.

Control

Often, the node may not be able to respond immediately to a network operation. When the node cannot supply the requested data to the source immediately, it must be capable of telling the source to wait. To allow this specification, two flow control signals are defined (see Table ). After an operation is requested, Wait will be transmitted to the source until the destination node can field a reply. Once ready to reply, the destination node sends continue to indicate that it has a response which will arrive immediately. Some operations require no data in a response. Ack provides a succeed/fail response to indicate the completion of such operations. Ack is used generically to refer to responses which can be ack_t or ack_f (see Table ).

RN1 messages

RN1 defines the message components shown below. The ninth bit shown here is the control bit. This bit is always high while RN1 is transmitting data and low when signalling occurs or no data is being transmitted [Min90].

ROUTE
desired routing direction ( ROUTE = 0b1aabbccdd ; where aa is a two bit quantity which specifies the desired output destination through the first router, bb is a similar quantity for the second router, etc.)
TURN
reverse the direction of a network connection ( DROP = 0x0FF)
DROP
drop a connection ( DROP = 0x000)
STATUS
status byte ( STATUS = 0b1aabbbbbb; where aa indicates the output port taken through the router and bbbbbb is the high 6 bits of RN1's 14 bit CRC checksum)
CHKSUM
checksum byte ( CHKSUM = 0b1cccccccc; where cccccccc is the low 8 bits of RN1's 14 bit CRC checksum)

Messages

This section describes the format of network transactions ((tn19)) using the components described in the previous sections.

Noop

Following is a noop operation sequence as seen from the interface between the sending node and the network. denotes the number of network stages.

This same sequence for a noop operation looks like the following from the interface between the network and receiving node.

Discussion

This sequence assumes a path is available on the first try through the network. If the transaction was blocked at some routing component in the network, a DROP would have been generated by the blocked router following its CHKSUM.

Note that the status/checksum pairs numbered 1 through come from the successive routers in the network. The status/checksum pair labeled comes from the network interface at the destination node. See (tn24) for a description of these status and checksum bytes.

A noop transaction should always succeed. Thus, the ACK should always be ACK_T.

Reset

A reset transaction looks very similar to a noop transaction.

From the interface between the network and receiving node, this reset sequence looks like:

Discussion

The ACK here indicates whether or not the processor succeeds in booting when reset. Consequently, the connection is held open sending WAIT signals while the processor goes through its boot sequence.

Read

A read transaction might proceed as follows:

From the interface between the network and receiving node, this read sequence looks like:

Discussion

The final checksum might appear a bit excessive. The connection integrity has been verified with the previous checksums. However, it is necessary to make completely certain that no glitches or faults occurred during the data transfer.

Write

A write transaction might proceed as follows:

From the interface between the network and receiving node, this write sequence looks like:

Discussion

The ack here may be unnecessary. It provides a final opportunity for the receiving node to indicate that it wasn't able to deal with the write transaction and the operation should be repeated.

It is necessary to specify the length ( LEN) of the data to be written in order to guarantee that faults in the network ( e.g. a control bit stuck asserted) don't cause a write operation to write over important data in the node's memory. A checksum is included immediately after the address and length specification to protect the receiving node's memory. This checksum comes before the data and is used to assure that the address and length have been received correctly before anything is overwritten in memory. This prevents transmission errors from overwriting random sections of a node's memory.

Rop

An rop transaction might proceed as follows:

From the interface between the network and receiving node, this rop sequence looks like:

Discussion

As in the case with the read operation, the inclusion of the last CHKSUM is useful to guarantee the integrity of data returned over the open connection.

This transaction should be capable of continuing to turn the connection around as many times as the software needs.

See Also...

References

DeH90a
Andre DeHon. Forward Checksum. Transit Note 6, MIT Artificial Intelligence Laboratory, May 1990. [tn6 HTML link] [tn6 FTP link].

DeH90b
Andre DeHon. MBTA: Modular Bootstrapping Transit Architecture. Transit Note 17, MIT Artificial Intelligence Laboratory, April 1990. [tn17 HTML link] [tn17 FTP link].

DeH90c
Andre DeHon. MBTA: Network Interface (input). Transit Note 24, MIT Artificial Intelligence Laboratory, July 1990. Obsolete; See Transit Note #31. [tn24 HTML link] [tn24 FTP link].

DeH90d
Andre DeHon. MBTA: Network Interface (output). Transit Note 23, MIT Artificial Intelligence Laboratory, July 1990. Obsolete; See Transit Note #31. [tn23 HTML link] [tn23 FTP link].

DeH90e
Andre DeHon. MBTA: Network Level Transactions. Transit Note 19, MIT Artificial Intelligence Laboratory, June 1990. [tn19 HTML link] [tn19 FTP link].

DeH90f
Andre DeHon. MBTA: Thoughts on Construction. Transit Note 18, MIT Artificial Intelligence Laboratory, June 1990. [tn18 HTML link] [tn18 FTP link].

DeH90g
Andre DeHon. T-Station: The MBTA Host Interface. Transit Note 20, MIT Artificial Intelligence Laboratory, June 1990. [tn20 HTML link] [tn20 FTP link].

DS90a
Andre DeHon and Thomas Simon. MBTA: Node Architecture. Transit Note 25, MIT Artificial Intelligence Laboratory, July 1990. [tn25 HTML link] [tn25 FTP link].

DS90b
Andre DeHon and Thomas Simon. MBTA: Node Architecture Selection. Transit Note 22, MIT Artificial Intelligence Laboratory, June 1990. [tn22 HTML link] [tn22 FTP link].

Min90
Henry Q. Minsky. RN1 Data Router. Transit Note 26, MIT Artificial Intelligence Laboratory, July 1990. [tn26 HTML link] [tn26 FTP link].

MIT Transit Project