From 82f0d153d3b06b02962d783c979e22e5c81084c1 Mon Sep 17 00:00:00 2001 From: adam Date: Fri, 14 Nov 2008 09:54:40 -0800 Subject: [PATCH] 14-nov darcs-hash:20081114175440-5007d-02d257fbbf89da36fbe6a0897c24eda75a61240e.gz --- am33.tex | 87 +++++++++++++++++++++++++++++--------------------------------- 1 file changed, 41 insertions(+), 46 deletions(-) diff --git a/am33.tex b/am33.tex index 11f2503..45373b1 100644 --- a/am33.tex +++ b/am33.tex @@ -67,10 +67,13 @@ Changes: \begin{tabular}{rl} \color{red} +14-Nov +& \color{red} Roll back ``Distinguish {\tt Z}-flag from OLC=0'' \\ +& \color{red} Clarify what ``{\tt X-Extended}'' means \\ 07-Nov -& \color{red} Distinguish {\tt Z}-flag from OLC=0\\ -& \color{red} Add {\tt flush} instruction\\ -& \color{red} Change {\t I} bit from ``Interruptable'' to ``Immune''\\ +& Distinguish {\tt Z}-flag from OLC=0\\ +& Add {\tt flush} instruction\\ +& Change {\t I} bit from ``Interruptable'' to ``Immune''\\ 20-Sep & Update hatch description to match \href{http://fleet.cs.berkeley.edu/docs/people/ivan.e.sutherland/ies50-Requeue.State.Diagram.pdf}{IES50} \\ 28-Aug @@ -269,21 +272,6 @@ The diagram below shows an input dock for purposes of illustration: {\it an input dock} \end{center} -%\subsection{The Hatch} -% -%\color{red} -% -%Note the mux on the path between {\tt EF} (epilogue fifo) and {\tt IF} -%(instruction fifo); this is known as ``the hatch''. The exact -%behavior of the hatch is documented in -%\href{http://fleet.cs.berkeley.edu/docs/people/ivan.e.sutherland/ies50-Requeue.State.Diagram.pdf}{IES50}; -%a summary of its behavior is included below. -% -%When an instruction arrives at the epilogue fifo ({\tt EF}), it waits -%there until the hatch is in the unsealed state; the instruction then -%enters the instruction fifo. When an instruction emerges from the -%instruction fifo, it arrives at the ``on deck'' ({\tt OD}) stage, -%where it may execute. \color{black} \begin{center} @@ -326,9 +314,9 @@ All instruction words have the following format: \begin{itemize} -\item The {\tt I} bit stands for \color{red}{\tt Immune}\color{black}, +\item The {\tt I} bit stands for {\tt Immune}, and indicates if an instruction is - \color{red}immune\color{black}\ to torpedoes. This bit only appears + immune to torpedoes. This bit only appears in {\tt move} instructions. \item The {\tt OS} (``One Shot'') bit indicates whether or not this @@ -370,8 +358,8 @@ to {\tt 1}, {\it not to 0}). \color{black} \subsection{Flags and Predication} -The pump has \color{red}four\color{black}\ flags: {\tt A}, {\tt B}, -{\tt C}, \color{red}and {\tt Z}\color{black}. +The pump has four flags: {\tt A}, {\tt B}, +{\tt C}, and {\tt Z}. \begin{itemize} \item The {\tt A} and {\tt B} flags are general-purpose flags which @@ -396,9 +384,8 @@ The pump has \color{red}four\color{black}\ flags: {\tt A}, {\tt B}, \color{red} \item The {\tt Z} flag is known as the {\it zero} flag; it is set - whenever the {\tt OLC} is {\it decremented to zero} or a torpedo strikes, and is cleared - whenever the {\tt OLC} is loaded. Note that loading the {\tt OLC} - with zero will actually {\it clear} the {\tt Z} flag. + whenever the {\tt OLC} is zero, and is cleared whenever the {\tt + OLC} is nonzero. \color{black} @@ -413,13 +400,13 @@ order for an instruction to execute: \begin{center} \begin{tabular}{|r|l|}\hline Code & Execute if \\\hline -{\tt 000:} & \color{red}{\tt Z=0}\color{black}\ and {\tt A=0} \\ -{\tt 001:} & \color{red}{\tt Z=0}\color{black}\ and {\tt A=1} \\ -{\tt 010:} & \color{red}{\tt Z=0}\color{black}\ and {\tt B=0} \\ -{\tt 011:} & \color{red}{\tt Z=0}\color{black}\ and {\tt B=1} \\ +{\tt 000:} & {\tt Z=0}\ and {\tt A=0} \\ +{\tt 001:} & {\tt Z=0}\ and {\tt A=1} \\ +{\tt 010:} & {\tt Z=0}\ and {\tt B=0} \\ +{\tt 011:} & {\tt Z=0}\ and {\tt B=1} \\ {\tt 100:} & Unused \\ -{\tt 101:} & \color{red}{\tt Z=1}\color{black}\ \\ -{\tt 110:} & \color{red}{\tt Z=0}\color{black}\ \\ +{\tt 101:} & {\tt Z=1}\ \\ +{\tt 110:} & {\tt Z=0}\ \\ {\tt 111:} & always \\ \hline\end{tabular} \end{center} @@ -451,10 +438,10 @@ To avoid deadlock, the programmer must ensure that: \item If a requeueable instruction is preceded by a one-shot instruction or a {\tt tail}, then it must be the case that - \color{red}{\tt Z=0}\color{black}\ both before and after the first + {\tt Z=0} both before and after the first time that instruction executes. -\item If \color{red}{\tt Z=1}\color{black}, only a one-shot instruction may set it to a +\item If {\tt Z=1}, only a one-shot instruction may set it to a nonzero value. \end{itemize} @@ -470,7 +457,7 @@ The dock guarantees that: \item Once a {\tt tail} instruction reaches the hatch, no further instructions will be enqueued until a requeueable instruction - reaches the execution stage and \color{red}{\tt Z=1}\color{black}. + reaches the execution stage and {\tt Z=1}. \end{itemize} @@ -484,7 +471,7 @@ started: \item Requeueing: \begin{itemize} \item If the instruction on deck is a requeueable instruction - ({\tt OS=0}) and \color{red}{\tt Z=0}\color{black}, a copy of + ({\tt OS=0}) and {\tt Z=0}, a copy of the instruction is requeued. \end{itemize} @@ -495,9 +482,9 @@ started: section on predicates), do nothing. \item - {\it Otherwise} if the instruction is interruptible ({\tt I=\color{red}0\color{black}}) + {\it Otherwise} if the instruction is interruptible ({\tt I=0}) and a torpedo is present in the waiting area: consume the - torpedo, \color{red}set the {\tt Z} flag\color{black}\ and + torpedo, set the {\tt Z} flag and set the inner loop counter to one ({\tt ILC=1}). \item @@ -595,7 +582,6 @@ be set: Ti} is set. \end{itemize} -\color{red} The {\tt flush} instruction is a variant of {\tt move} which is valid only at input docks. It has the same effect as {\tt deliver}, except that it sets a special ``flushing'' indicator along with the data @@ -603,17 +589,14 @@ being delivered. \newcommand{\bitsFlush}{\setlength{\bitwidth}{5mm} {\tt -\color{red} \begin{bytefield}{26} \bitheader[b]{14-18}\\ - \bitbox[r]{7}{\raggedleft{\tt flush\ \ }} + \bitbox[r]{7}{\raggedleft{\tt flush}} \bitbox{1}{\tt 0} \color{black} -\color{red} \bitbox{1}{\tt 0} \bitbox{1}{\tt 1} \color{light} -\color{red} \bitbox{1}{\tt 0} \bitbox{1}{\tt 0} \bitbox{14}{} @@ -713,10 +696,16 @@ counter, outer loop counter, and data latch. \begin{bytefield}{26} \bitheader[b]{0,13-18}\\ - \bitbox[1]{6}{\raggedleft \footnotesize {\tt X-Extended Immediate}\to{\tt Data Latch}} + \bitbox[1]{6}{\raggedleft \footnotesize {\tt Sign-Extended Immediate}\to{\tt Data Latch}} \bitbox[r]{1}{} \bitbox{4}{\tt 0010\color{black}} - \bitbox{1}{\tt X} + \bitbox{1}{\begin{minipage}{0.5cm}{ +\begin{center} +\tt{\footnotesize{Si + +\vspace{-2mm}gn}} +\end{center}} +\end{minipage}} \bitbox{14}{\tt Immediate} \end{bytefield} @@ -741,7 +730,14 @@ The FleetTwo implementation is likely to have an unarchitected with the possibly-extended literal {\it at the time that the {\tt set} instruction comes on deck}. This latch is then copied into the data latch when a {\tt set Data Latch} instruction -executes\color{black}. +executes. + +\color{red} +The {\tt Sign-Extended Immediate} instruction copies the {\tt +Immediate} field into the least significant bits of the data latch. +All other bits of the data latch are filled with a copy of the +bit marked ``{\tt Sign}.'' +\color{black} Each of the {\tt nextA} and {\tt nextB} fields has the following structure, and indicates which old flag values should be logically @@ -986,7 +982,6 @@ instruction fifo. \hspace{-1cm}{\tt move}\\ \bitsMove -\color{red} \bitsFlush \color{black} -- 1.7.10.4