1 \documentclass[10pt]{book}
7 \renewcommand{\ttdefault}{cmtt}
8 \title{The FleetTwo Architecture Manual}
13 \section*{Data Formats}
15 \subsection*{Packet Destination Address (12 bits)}
17 These bits appear physically within the switch fabric, and have
18 ``address bit timing.'' The {\tt T} bit is the ``tokenhood'' bit; if
19 set, this packet represents a token and it does not cause the switch
20 fabric data latches to fire.
24 \bitheader[b]{37,47,48}\\
26 \bitbox{11}{Destination Address}
31 \subsection*{Data Word In Memory (37 bits)}
33 A word of memory is 37 bits wide. For convenience, we assume that the
34 memory word width is also the width of a pointer as well as the width
35 of all on-chip data item registers.
41 \bitbox{37}{Data Word}
45 \subsection*{Data Packet In Flight (49 bits)}
47 A {\it data packet} is a data item in the switch fabric, on its way to
52 \bitheader[b]{0,36,37,47,48}\\
54 \bitbox{11}{Destination Address}
55 \bitbox{37}{Data Word}
59 \subsection*{Instruction In Memory (37 bits)}
61 An instruction must be no wider than a memory word. The next section
62 explains the bits in greater detail.
66 \bitheader[b]{0,10,11,17,18-26,36}\\
68 \bitbox{11}{Instruction Register Address}
78 \bitbox{11}{Data/Token Destination}
82 \subsection*{Instruction Packet In Flight (49 bits)}
84 A {\it instruction packet} is an instruction in the instruction horn
85 (which may or may not be the same thing as the data horn), on its way
86 to some instruction register (BenkoBox).
90 \bitheader[b]{0,10,11,17,18-25,37,47,48}\\
92 \bitbox{11}{Instruction Register Address}
103 \bitbox{11}{Data/Token Destination}
110 \section*{Instruction Format Detail}
112 \setlength{\bitwidth}{5mm}
114 \begin{bytefield}{26}
115 \bitheader[b]{0,10,11,17,18-25}\\
131 \item [\tt K] ({\bf Kill}) if set, this instruction is a kill;
132 ignore all further directions below.
134 \item [\tt L] ({\bf Literal}) if set, use all bits below except
135 {\tt Count} (17 bits) as a literal, sign extend them,
136 and load into the data register; ignore all further
137 directions below except {\tt Count}.
139 \item [\tt Ti] ({\bf Token Input}) wait for a token and acknowledge
140 it; {\tt Ti}=1,{\tt Di}=1 is invalid on inbox
142 \item [\tt Di] ({\bf Data Input}) wait for a datum and acknowledge
145 \item [\tt Dc] ({\bf Data Capture}) capture (latch) a datum; {\tt
146 Di}=0,{\tt Dc}=1 is invalid. This bit is ignored if
147 the {\tt T} (token) bit is set on the incoming
150 \item [\tt Do] ({\bf Data Output}) emit a datum
152 \item [\tt To] ({\bf Token Output}) emit a token; {\tt To}=1,{\tt
153 Do}=1 is invalid on outbox
155 % \item [\tt Fi] ({\bf Final Iteration}) emit a token when {\tt
156 % Count=0} (ie the last iteration of a requeueing
157 % loop); {\tt Tl}=1,{\tt To}=1 is invalid.
159 \item [\tt Rq] ({\bf ReQueue}) if set, instructions having nonzero
160 count are ``Re-Queued'' in the instruction queue
161 after execution (see below); otherwise instructions
162 with nonzero count are executed again immediately.
164 \item [\tt C] ({\bf Count}) {\it After} executing:
166 if Count==0 { discard this instruction }
168 if Count<1111111 { decrement count }
170 put this instruction back into the instruction fifo
172 execute this instruction again
177 \item [\tt Dest] ({\bf Data/Token Destination})
178 Any packets (token or datum) emitted {\it to the switch fabric}
179 will be emitted with this address in the packet's destination
185 \item A "standing" instruction is encoded as {\tt Count}=$\text{\tt 1111111}_\text{two}$
187 \item A {\tt clog} is encoded as a "standing" {\tt nop} ({\tt Ti},
188 {\tt Di}, {\tt Dc}, {\tt Do}, {\tt To} all cleared)
190 \item An {\tt unclog} is encoded as {\tt K=1},{\tt Ti=1}