From: adam Date: Tue, 7 Aug 2007 14:34:28 +0000 (+0100) Subject: architecture manual updates X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=a7e3baff7d4ed86cba74efc1883259ae22fc14c6;p=fleet.git architecture manual updates --- diff --git a/doc/archman.tex b/doc/archman.tex index 3741e34..3873c67 100644 --- a/doc/archman.tex +++ b/doc/archman.tex @@ -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} +