From f1e8bb25ff87da8e80a76755f1eba53e9007c86e Mon Sep 17 00:00:00 2001 From: Martin Perner Date: Thu, 11 Nov 2010 13:07:10 +0100 Subject: [PATCH] block: stufen => stages, usw dos2unix :) umlaut => \"umlaut --- 4_block/block.tex | 56 ++++++++-------- 4_block/blockdesc.tex | 96 ++++++++++++++-------------- 4_block/common.sty | 144 +++++++++++++++++++++--------------------- 3 files changed, 148 insertions(+), 148 deletions(-) diff --git a/4_block/block.tex b/4_block/block.tex index d8edaeb..7572ddd 100644 --- a/4_block/block.tex +++ b/4_block/block.tex @@ -1,28 +1,28 @@ -\documentclass[a4paper,12pt]{scrartcl} -\usepackage{common} -\begin{document} -\allauthors - -\title{Blockdiagramm \\Deep Thought} -\titlehead{Vienna University of Technology \hfill WS~2010} -\subject{Computer Architecture Labor\"ubung} -\date{\today} -\publishers{Gruppe 1} - -\maketitle -\newpage -\tableofcontents -\newpage - -\newcommand{\abbildung}[5]{ - \begin{figure}[H] - \centering - \includegraphics[width=#4,angle=#5]{#1} - \caption{#2} - \label{#3} - \end{figure} -} - -\input{blockdesc} - -\end{document} +\documentclass[a4paper,12pt]{scrartcl} +\usepackage{common} +\begin{document} +\allauthors + +\title{Blockdiagramm \\``Deep Thought''} +\titlehead{Vienna University of Technology \hfill WS~2010} +\subject{Computer Architecture Labor\"ubung} +\date{\today} +\publishers{Gruppe 1} + +\maketitle +\newpage +\tableofcontents +\newpage + +\newcommand{\abbildung}[5]{ + \begin{figure}[H] + \centering + \includegraphics[width=#4,angle=#5]{#1} + \caption{#2} + \label{#3} + \end{figure} +} + +\input{blockdesc} + +\end{document} diff --git a/4_block/blockdesc.tex b/4_block/blockdesc.tex index 342a95d..3dcf71e 100644 --- a/4_block/blockdesc.tex +++ b/4_block/blockdesc.tex @@ -1,48 +1,48 @@ -\section{Allgemein} -%\abbildung{pipeline.png}{so schaut unsre Architektur aus}{fig:pipeline}{1.4\textwidth}{90} -\abbildung{pipeline.png}{Schematische Darstellung der Pipeline}{fig:pipeline}{0.95\textheight}{90} %0.95 weil sonst warning! -Die Pipeline gliedert sich in 4 getrennte Stufen. Jene sind Fetch, Decode, Execute und Writeback. -\section{Fetch-Stage} -Die Aufgaben der Fetch-Stage sind relativ simple in -\begin{itemize} - \item Anlegen der Instruktionsadresse an den Instruktions-Speicherbus. Daraufhin erhält die Decode-Stage die gewünschte Instruktion im nächsten Zyklus. - \item Die Instruktionsadresse ist entweder der inkrementierte Programmcounter, Jump-Result oder das Ergebnis der statischen Branchprediction -\end{itemize} -gegliedert. -\section{Decode-Stage} -Die Aufgaben der Decode-Stage fallen schon etwas komplexer aus und sind in -\begin{itemize} - \item Decodieren der dichten Instruktion in eine aufgespaltene Form. - \item Laden der Operanden aus dem Registerfile und übergeben der jeweiligen Adressen. - \item Laden von Immediates in die Operanden. - \item Evaluierung der Branchprediction. Rückführung der statischen Sprungadresse - und NOP insertion falls die ALU/Writeback springt. -\end{itemize} -gegliedert. -\section{Execute-Stage} -Neben den Berechnungen beinhaltet diese Stufe auch die Forward-Unit welche s\"amtlichen -Konflikte behandelt. -\begin{itemize} - \item Ausführung der einzelnen Instruktionen auf die Operanden - \item Signalisieren eines Sprungs (ret vs. jmp). Jumpadresse kommt entweder vom Datenbus oder aus dem ALU-Ergebnis. - \item Signalisieren eines Registerschreibzugriffs, wobei dieses Ergebnis wieder vom Result oder Datenbus kommt. - \item Ansprechen des Datenbusses (RAM, Extension-Module, read, write) und des Statuswortes sowie des Stackpointers. -\end{itemize} - - -Die Forward-Unit muss sämtliche Konflikte behandeln und veraltete Operanden durch die letzten Ergebnisse ersetzen. Sie besteht aus -\begin{itemize} - \item 2-Register um \"Anderungskonflikte an Registern zu l\"osen. - \item Zusammensetzen eines dieser zwei Register mit dem Wert vom Datenbus (load byte etc.). -\end{itemize} - -Die Extensionmodule werden vom Prozessor aus wie der Speicher behandelt. Jedes Modul besitzt einen spezifischen Adressbereich. -Ein eigener Controller mapped die Adressbereiche auf die Extensionmodule und leitet die entsprechenden Daten über ein Register auf das Modul weiter. -Beim Lesezugriff auf einen dieser Speicherbereiche legt das Extensionmodul einen Zyklus sp\"ater seinen Output auf den Datenbus. - - -\section{Writeback-Stage} - -Die Writeback stage übernimmt die Werte aus dem Ergebnisregister der Alu oder aus der Forwardunit(Registerzusammensetzung) und schreibt diese in das Registerfile zurück. -Des weiteren kann die ALU das Jump Result nicht direkt an die Decode stage zurückgeben, da dieses erst im Folgezyklus vorhanden ist (im Falle eines branch-returns). -Somit muss dies auch von der Writeback Stage erledigt werden. \ No newline at end of file +\section{Allgemein} +%\abbildung{pipeline.png}{so schaut unsre Architektur aus}{fig:pipeline}{1.4\textwidth}{90} +\abbildung{pipeline.png}{Schematische Darstellung der Pipeline}{fig:pipeline}{0.95\textheight}{90} %0.95 weil sonst warning! +Die Pipeline gliedert sich in 4 getrennte Stages. Jene sind Fetch, Decode, Execute und Writeback. +\section{Fetch-Stage} +Die Aufgaben der Fetch-Stage sind relativ simple in +\begin{itemize} + \item Anlegen der Instruktionsadresse an den Instruktions-Speicherbus. Daraufhin erh\"alt die Decode-Stage die gew\"unschte Instruktion im n\"achsten Zyklus. + \item Die Instruktionsadresse ist entweder der inkrementierte Programmcounter, Jump-Result oder das Ergebnis der statischen Branchprediction +\end{itemize} +gegliedert. +\section{Decode-Stage} +Die Aufgaben der Decode-Stage fallen schon etwas komplexer aus und sind in +\begin{itemize} + \item Decodieren der dichten Instruktion in eine aufgespaltene Form. + \item Laden der Operanden aus dem Registerfile und \"ubergeben der jeweiligen Adressen. + \item Laden von Immediates in die Operanden. + \item Evaluierung der Branchprediction. R\"uckf\"uhrung der statischen Sprungadresse + und NOP insertion falls die ALU/Writeback springt. +\end{itemize} +gegliedert. +\section{Execute-Stage} +Neben den Berechnungen beinhaltet diese Stage auch die Forward-Unit welche s\"amtlichen +Konflikte behandelt. +\begin{itemize} + \item Ausf\"uhrung der einzelnen Instruktionen auf die Operanden + \item Signalisieren eines Sprungs (ret vs. jmp). Die Jumpadresse kommt entweder vom Datenbus oder aus dem ALU-Ergebnis. + \item Signalisieren eines Registerschreibzugriffs, wobei dieses Ergebnis wieder vom Result oder Datenbus kommt. + \item Ansprechen des Datenbusses (RAM, Extension-Module, read, write) und des Statuswortes sowie des Stackpointers. +\end{itemize} + + +Die Forward-Unit muss s\"amtliche Konflikte behandeln und veraltete Operanden durch die letzten Ergebnisse ersetzen. Sie besteht aus +\begin{itemize} + \item 2-Register um \"Anderungskonflikte an Registern zu l\"osen. + \item Zusammensetzen eines dieser zwei Register mit dem Wert vom Datenbus (load byte etc.). +\end{itemize} + +Die Extensionmodule werden vom Prozessor aus wie der Speicher behandelt. Jedes Modul besitzt einen spezifischen Adressbereich. +Ein eigener Controller mapped die Adressbereiche auf die Extensionmodule und leitet die entsprechenden Daten \"uber ein Register auf das Modul weiter. +Beim Lesezugriff auf einen dieser Speicherbereiche legt das Extensionmodul einen Zyklus sp\"ater seinen Output auf den Datenbus. + + +\section{Writeback-Stage} + +Die Writeback-Stage \"ubernimmt die Werte aus dem Ergebnisregister der ALU oder aus der Forward-Unit (Registerzusammensetzung) und schreibt diese in das Registerfile zur\"uck. +Des weiteren kann die ALU das Jump Result nicht direkt an die Decode-Stage zur\"uckgeben, da dieses erst im Folgezyklus vorhanden ist (im Falle eines branch-returns). +Somit muss dies auch von der Writeback-Stage erledigt werden. diff --git a/4_block/common.sty b/4_block/common.sty index e156ba4..7d23c5a 100644 --- a/4_block/common.sty +++ b/4_block/common.sty @@ -1,72 +1,72 @@ -\usepackage{graphicx} -\usepackage{amsmath} -\usepackage{hyperref} -\usepackage{url} -\usepackage{color} -\usepackage[latin1]{inputenc} -\usepackage{listings} -%\usepackage{ngerman} - -\usepackage{longtable} - -%used for coloring of instr. -\usepackage{colortbl} - -\definecolor{title}{rgb}{0.86,0.86,0.86} -\definecolor{bit}{rgb}{0.8,0.86,0.8} -\definecolor{bitval}{rgb}{0.8,0.8,0.8} -\definecolor{names}{rgb}{0.86,0.93,0.86} - -\arrayrulecolor{black} - - -% put footnotes below floats -% this is a good idea if the table for the cmp looks bad on top of page -\usepackage{fnpos} -\makeFNbelow - - -\lstset{% -basicstyle=\footnotesize, -frame=single, -breaklines=true, -tabsize=4 -} - -\newcommand{\insertemail}[1]{\href{mailto:#1}{#1}} - -\newcommand{\longcomment}[1]{} - -\newcommand{\addauthor}[3]{ - #1 {\small (#2)}\\{\small\insertemail{#3}} -} - -\newcommand{\todo}[1]{ - \large\textcolor{red}{TODO: #1} -} - -\lstset{% - basicstyle=\footnotesize, - frame=single, - breaklines=true, - tabsize=4 -} - -\newcommand{\listingS}[2] { - %wtf, no "Assembler" exists?? - %\lstinputlisting[language=Assembler,caption=#1]{#2} - \lstinputlisting[caption=#1]{#2} -} -\newcommand{\listingC}[2] { - \lstinputlisting[language=C,caption=#1]{#2} -} - -\newcommand{\allauthors}{ - \author{ - \addauthor{Markus Hofst\"atter}{0725034}{markus.manrow@gmx.at}\and - \addauthor{Martin Perner}{0725782}{e0725782@student.tuwien.ac.at}\and - \addauthor{Stefan Rebernig}{0726283}{stefan.rebernig@gmail.com}\and - \addauthor{Manfred Schwarz}{0725898}{e0725898@student.tuwien.ac.at}\and - \addauthor{Bernhard Urban}{0725771}{lewurm@gmail.com} - } -} +\usepackage{graphicx} +\usepackage{amsmath} +\usepackage{hyperref} +\usepackage{url} +\usepackage{color} +\usepackage[latin1]{inputenc} +\usepackage{listings} +\usepackage{ngerman} + +\usepackage{longtable} + +%used for coloring of instr. +\usepackage{colortbl} + +\definecolor{title}{rgb}{0.86,0.86,0.86} +\definecolor{bit}{rgb}{0.8,0.86,0.8} +\definecolor{bitval}{rgb}{0.8,0.8,0.8} +\definecolor{names}{rgb}{0.86,0.93,0.86} + +\arrayrulecolor{black} + + +% put footnotes below floats +% this is a good idea if the table for the cmp looks bad on top of page +\usepackage{fnpos} +\makeFNbelow + + +\lstset{% +basicstyle=\footnotesize, +frame=single, +breaklines=true, +tabsize=4 +} + +\newcommand{\insertemail}[1]{\href{mailto:#1}{#1}} + +\newcommand{\longcomment}[1]{} + +\newcommand{\addauthor}[3]{ + #1 {\small (#2)}\\{\small\insertemail{#3}} +} + +\newcommand{\todo}[1]{ + \large\textcolor{red}{TODO: #1} +} + +\lstset{% + basicstyle=\footnotesize, + frame=single, + breaklines=true, + tabsize=4 +} + +\newcommand{\listingS}[2] { + %wtf, no "Assembler" exists?? + %\lstinputlisting[language=Assembler,caption=#1]{#2} + \lstinputlisting[caption=#1]{#2} +} +\newcommand{\listingC}[2] { + \lstinputlisting[language=C,caption=#1]{#2} +} + +\newcommand{\allauthors}{ + \author{ + \addauthor{Markus Hofst\"atter}{0725034}{markus.manrow@gmx.at}\and + \addauthor{Martin Perner}{0725782}{e0725782@student.tuwien.ac.at}\and + \addauthor{Stefan Rebernig}{0726283}{stefan.rebernig@gmail.com}\and + \addauthor{Manfred Schwarz}{0725898}{e0725898@student.tuwien.ac.at}\and + \addauthor{Bernhard Urban}{0725771}{lewurm@gmail.com} + } +} -- 2.25.1