-\documentclass[10pt]{book}
-\usepackage{amsmath}
+\documentclass[10pt,oneside]{book}
+\reversemarginpar
\usepackage{palatino}
\usepackage{parskip}
\usepackage{register}
\title{The FleetTwo Architecture Manual}
\begin{document}
\maketitle
+\pagebreak
+\section*{Glossary}
+
+Port\\
+Inlet\\
+Outlet\\
+Pump\\
+Packet\\
+Data Item\\
+Opcode Port\\
+Bypass\\
+
\pagebreak
\section*{Data Formats}
\bitbox{1}{L}
\bitbox{1}{Ti}
\bitbox{1}{Di}
- \bitbox{1}{Ld}
+ \bitbox{1}{Dc}
\bitbox{1}{Do}
\bitbox{1}{To}
\bitbox{1}{Rq}
A {\it instruction packet} is an instruction in the instruction horn
(which may or may not be the same thing as the data horn), on its way
-to some instruction register (BenkoBox).
+to some instruction register (Valve).
{\tt\tiny
\begin{bytefield}{49}
\bitbox{1}{L}
\bitbox{1}{Ti}
\bitbox{1}{Di}
- \bitbox{1}{Ld}
+ \bitbox{1}{Dc}
\bitbox{1}{Do}
\bitbox{1}{To}
\bitbox{1}{Rq}
\pagebreak
-\section*{Instruction Format Detail}
+\section*{Instruction Formats}
+
+Instructions can be grouped into two categories: {\it killing}
+instructions, which are acted upon as soon as they leave the
+instruction horn, and {\it executing} instructions, which pass through
+the instruction queue before being acted upon.
+
+Blank fields below are reserved for future use and must be set to
+zero.
+
+Note that the arbiter is requested whenever {\it any of the first
+ three bits is {\tt 1}}. If the arbiter is not requested,
+
+
\setlength{\bitwidth}{5mm}
+
+\subsection*{Killing Instructions}
+
+Kill (kill anything other than a Clog)
+
{\tt
\begin{bytefield}{26}
- \bitheader[b]{0,10,11,17,18-25}\\
- \bitbox{1}{K}
- \bitbox{1}{L}
+ \bitheader[b]{0,6,7,20-25}\\
+ \bitbox{1}{0}
+ \bitbox{1}{0}
+ \bitbox{1}{1}
+ \bitbox{1}{0}
+ \bitbox{1}{1}
+ \bitbox{14}{}
+ \bitbox{7}{Count}
+\end{bytefield}}
+
+UnClog (kill a Clog)
+
+{\tt
+\begin{bytefield}{26}
+ \bitheader[b]{0,20-25}\\
+ \bitbox{1}{0}
+ \bitbox{1}{0}
+ \bitbox{1}{0}
+ \bitbox{1}{1}
+ \bitbox{1}{0}
+ \bitbox{21}{}
+\end{bytefield}}
+
+\subsection*{Executing Instructions}
+Clog
+
+{\tt
+\begin{bytefield}{26}
+ \bitheader[b]{0,20-25}\\
+ \bitbox{1}{0}
+ \bitbox{1}{0}
+ \bitbox{1}{1}
+ \bitbox{1}{0}
+ \bitbox{1}{0}
+ \bitbox{21}{}
+\end{bytefield}}
+
+Literal (sign extended, implicit {\tt Rq=1})
+
+{\tt
+\begin{bytefield}{26}
+ \bitheader[b]{0,6,7,23-25}\\
+ \bitbox{1}{0}
+ \bitbox{1}{1}
+ \bitbox{17}{Literal}
+ \bitbox{7}{Count}
+\end{bytefield}}
+
+
+Normal
+
+{\tt
+\begin{bytefield}{26}
+ \bitheader[b]{0,6,7,17-25}\\
+ \bitbox{1}{1}
\bitbox{1}{Ti}
\bitbox{1}{Di}
- \bitbox{1}{Ld}
+ \bitbox{1}{Dc}
\bitbox{1}{Do}
\bitbox{1}{To}
\bitbox{1}{Rq}
- \bitbox{7}{C}
+ \bitbox{1}{Ig}
\bitbox{11}{Dest}
-\end{bytefield}
-}
+ \bitbox{7}{Count}
+\end{bytefield}}
+
-\begin{itemize}
- \item [\tt K] ({\bf Kill}) if set, this instruction is a kill;
- ignore all further directions below.
- \item [\tt L] ({\bf Literal}) if set, use all bits below except
- {\tt Count} (17 bits) as a literal, sign extend them,
- and load into the data register; ignore all further
- directions below except {\tt Count}.
+\pagebreak
+\subsection*{Field Descriptions}
+{\tt
+\begin{bytefield}{26}
+ \bitheader[b]{0,6,7,16-25}\\
+ \bitbox{1}{0}
+ \bitbox{1}{Ti}
+ \bitbox{1}{Di}
+ \bitbox{1}{Dc}
+ \bitbox{1}{Do}
+ \bitbox{1}{To}
+ \bitbox{1}{Rq}
+ \bitbox{1}{Ig}
+ \bitbox{11}{Dest}
+ \bitbox{7}{Count}
+\end{bytefield}
+}
- \item [\tt Ti] ({\bf Token Input}) wait for a token and acknowledge
- it; {\tt Ti}=1,{\tt Di}=1 is invalid on inbox
+\begin{itemize}
- \item [\tt Di] ({\bf Data Input}) wait for a datum and acknowledge
- it
+ \item [\tt Ti] ({\bf Token Input}) wait for a token and accept
+ it\footnote{{\tt Ti}=1,{\tt Di}=1 is invalid on inbox.}
- \item [\tt Dc] ({\bf Data Capture}) capture (latch) a datum; {\tt
- Di}=0,{\tt Dc}=1 is invalid. This bit is ignored if
- the {\tt T} (token) bit is set on the incoming
- packet.
+ \item [\tt Di] ({\bf Data Input}) wait for a datum and accept it.
- \item [\tt Do] ({\bf Data Output}) emit a datum
+ \item [\tt Dc] ({\bf Data Capture}) capture (latch) the accepted
+ datum. This bit is ignored if the incoming packet is
+ a token. \footnote{ Note that {\tt Di}=0,{\tt Dc}=1
+ is meaningless and therefore reserved for other
+ uses.}
- \item [\tt To] ({\bf Token Output}) emit a token; {\tt To}=1,{\tt
- Do}=1 is invalid on outbox
+ \item [\tt Do] ({\bf Data Output}) emit a datum.
-% \item [\tt Fi] ({\bf Final Iteration}) emit a token when {\tt
-% Count=0} (ie the last iteration of a requeueing
-% loop); {\tt Tl}=1,{\tt To}=1 is invalid.
+ \item [\tt To] ({\bf Token Output}) emit a token.\footnote{ {\tt To}=1,{\tt
+ Do}=1 is invalid on outbox.}
\item [\tt Rq] ({\bf ReQueue}) if set, instructions having nonzero
- count are ``Re-Queued'' in the instruction queue
- after execution (see below); otherwise instructions
- with nonzero count are executed again immediately.
+ count are ``Re-Queued'' rather than RePeated. See
+ {\tt Count} for more detail. \footnote{ An
+ instruction {\it in memory} may not have {\tt
+ Rq=1,Count=0} (use {\tt Rq=0,Count=0})}
+
+ \item [\tt Ig] ({\bf Ignore Until Last Iteration}) ignore this
+ instruction until its {\tt Count=0} \footnote{{\tt
+ Rq}=0,{\tt Ig}=1 is invalid}
- \item [\tt C] ({\bf Count}) {\it After} executing:
+ \item [\tt Count] ({\bf Count}) {\it After} executing:
\begin{verbatim}
-if Count==0 { discard this instruction }
-else {
- if Count<1111111 { decrement count }
- if Rq=1 and L=0 {
+if (Count==0) {
+ discard this instruction
+} else {
+ if Count<1111111 {
+ decrement count
+ }
+ if Rq=1 or Literal {
put this instruction back into the instruction fifo
} else {
execute this instruction again
}
}
-\end{verbatim}
+\end{verbatim}
+Note how a ``standing'' instruction is encoded as {\tt Count=1111111}
\item [\tt Dest] ({\bf Data/Token Destination})
- Any packets (token or datum) emitted {\it to the switch fabric}
- will be emitted with this address in the packet's destination
- field.
-\end{itemize}
-
-\subsection*{Notes}
-\begin{itemize}
-\item A "standing" instruction is encoded as {\tt Count}=$\text{\tt 1111111}_\text{two}$
-
-\item A {\tt clog} is encoded as a "standing" {\tt nop} ({\tt Ti},
- {\tt Di}, {\tt Dc}, {\tt Do}, {\tt To} all cleared)
-
-\item An {\tt unclog} is encoded as {\tt K=1},{\tt Ti=1}
+ This field is copied into the address portion of any outgoing
+ packet ({\tt Do} on an outbox or {\tt To}).
\end{itemize}
+