architecture manual updates
authoradam <adam@megacz.com>
Tue, 7 Aug 2007 14:34:28 +0000 (15:34 +0100)
committeradam <adam@megacz.com>
Tue, 7 Aug 2007 14:34:28 +0000 (15:34 +0100)
doc/archman.tex

index 3741e34..3873c67 100644 (file)
@@ -1,5 +1,5 @@
-\documentclass[10pt]{book}
-\usepackage{amsmath}
+\documentclass[10pt,oneside]{book}
+\reversemarginpar 
 \usepackage{palatino}
 \usepackage{parskip}
 \usepackage{register}
@@ -8,6 +8,18 @@
 \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}
@@ -70,7 +82,7 @@ explains the bits in greater detail.
   \bitbox{1}{L} 
   \bitbox{1}{Ti} 
   \bitbox{1}{Di} 
-  \bitbox{1}{Ld} 
+  \bitbox{1}{Dc} 
   \bitbox{1}{Do} 
   \bitbox{1}{To} 
   \bitbox{1}{Rq} 
@@ -83,7 +95,7 @@ explains the bits in greater detail.
 
 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}
@@ -95,7 +107,7 @@ to some instruction register (BenkoBox).
   \bitbox{1}{L} 
   \bitbox{1}{Ti} 
   \bitbox{1}{Di} 
-  \bitbox{1}{Ld} 
+  \bitbox{1}{Dc} 
   \bitbox{1}{Do} 
   \bitbox{1}{To} 
   \bitbox{1}{Rq} 
@@ -107,86 +119,164 @@ to some instruction register (BenkoBox).
 
 \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}
+