Block: First version
authorStefan <stefan@ubuntu.ubuntu-domain>
Wed, 10 Nov 2010 10:15:12 +0000 (11:15 +0100)
committerStefan <stefan@ubuntu.ubuntu-domain>
Wed, 10 Nov 2010 10:15:12 +0000 (11:15 +0100)
4_block/Deep Thought.vsd [new file with mode: 0644]
4_block/Makefile [new file with mode: 0644]
4_block/block.tex [new file with mode: 0644]
4_block/blockdesc.tex [new file with mode: 0644]
4_block/common.sty [new file with mode: 0644]
4_block/pipeline.png [new file with mode: 0644]

diff --git a/4_block/Deep Thought.vsd b/4_block/Deep Thought.vsd
new file mode 100644 (file)
index 0000000..7b3aab5
Binary files /dev/null and b/4_block/Deep Thought.vsd differ
diff --git a/4_block/Makefile b/4_block/Makefile
new file mode 100644 (file)
index 0000000..4df2863
--- /dev/null
@@ -0,0 +1,22 @@
+SHELL := bash
+
+FILES  = block.tex blockdesc.tex pipeline.png
+FILES += Makefile
+TARGET = block.pdf
+
+PDFGEN = pdflatex --jobname=$(basename $@) $<
+
+all: $(TARGET)
+
+$(TARGET): $(FILES) $(ISA_BUILD)
+       $(PDFGEN)
+       $(PDFGEN)
+       $(PDFGEN)
+
+%.tex: %.ptex gentex.pl
+       ./gentex.pl $<
+
+.PHONY: clean
+
+clan:
+       rm -fr *.aux *.log *.dvi *.pdf *.toc
diff --git a/4_block/block.tex b/4_block/block.tex
new file mode 100644 (file)
index 0000000..c0007d5
--- /dev/null
@@ -0,0 +1,28 @@
+\documentclass[a4paper,12pt]{scrartcl}\r
+\usepackage{common}\r
+\begin{document}\r
+\allauthors\r
+\r
+\title{Instruction Set Comparison}\r
+\titlehead{Vienna University of Technology \hfill WS~2010}\r
+\subject{Computer Architecture Labor\"ubung}\r
+\date{\today}\r
+\publishers{Gruppe 1}\r
+\r
+\maketitle\r
+\newpage\r
+\tableofcontents\r
+\newpage\r
+\r
+\newcommand{\abbildung}[5]{\r
+       \begin{figure}[H]\r
+         \centering\r
+         \includegraphics[width=#4,angle=#5]{#1}\r
+         \caption{#2}\r
+         \label{#3}\r
+       \end{figure}\r
+}\r
+\r
+\input{blockdesc}\r
+\r
+\end{document}\r
diff --git a/4_block/blockdesc.tex b/4_block/blockdesc.tex
new file mode 100644 (file)
index 0000000..342a95d
--- /dev/null
@@ -0,0 +1,48 @@
+\section{Allgemein}\r
+%\abbildung{pipeline.png}{so schaut unsre Architektur aus}{fig:pipeline}{1.4\textwidth}{90}\r
+\abbildung{pipeline.png}{Schematische Darstellung der Pipeline}{fig:pipeline}{0.95\textheight}{90} %0.95 weil sonst warning!\r
+Die Pipeline gliedert sich in 4 getrennte Stufen. Jene sind Fetch, Decode, Execute und Writeback.\r
+\section{Fetch-Stage}\r
+Die Aufgaben der Fetch-Stage sind relativ simple in\r
+\begin{itemize}\r
+       \item Anlegen der Instruktionsadresse an den Instruktions-Speicherbus. Daraufhin erhält die Decode-Stage die gewünschte Instruktion im nächsten Zyklus.\r
+       \item Die Instruktionsadresse ist entweder der inkrementierte Programmcounter, Jump-Result oder das Ergebnis der statischen Branchprediction\r
+\end{itemize}\r
+gegliedert.\r
+\section{Decode-Stage}\r
+Die Aufgaben der Decode-Stage fallen schon etwas komplexer aus und sind in\r
+\begin{itemize}\r
+       \item Decodieren der dichten Instruktion in eine aufgespaltene Form.\r
+       \item Laden der Operanden aus dem Registerfile und übergeben der jeweiligen Adressen.\r
+       \item Laden von Immediates in die Operanden.\r
+       \item   Evaluierung der Branchprediction. Rückführung der statischen Sprungadresse\r
+                               und NOP insertion falls die ALU/Writeback springt.\r
+\end{itemize}\r
+gegliedert.\r
+\section{Execute-Stage}\r
+Neben den Berechnungen beinhaltet diese Stufe auch die Forward-Unit welche s\"amtlichen\r
+Konflikte behandelt.\r
+\begin{itemize}\r
+       \item Ausführung der einzelnen Instruktionen auf die Operanden\r
+       \item Signalisieren eines Sprungs (ret vs. jmp). Jumpadresse kommt entweder vom Datenbus oder aus dem ALU-Ergebnis.\r
+       \item Signalisieren eines Registerschreibzugriffs, wobei dieses Ergebnis wieder vom Result oder Datenbus kommt.\r
+       \item   Ansprechen des Datenbusses (RAM, Extension-Module, read, write) und des Statuswortes sowie des Stackpointers.\r
+\end{itemize}\r
+\r
+\r
+Die Forward-Unit muss sämtliche Konflikte behandeln und veraltete Operanden durch die letzten Ergebnisse ersetzen. Sie besteht aus\r
+\begin{itemize}\r
+       \item 2-Register um \"Anderungskonflikte an Registern zu l\"osen.\r
+       \item   Zusammensetzen eines dieser zwei Register mit dem Wert vom Datenbus (load byte etc.).\r
+\end{itemize}\r
+\r
+Die Extensionmodule werden vom Prozessor aus wie der Speicher behandelt. Jedes Modul besitzt einen spezifischen Adressbereich.\r
+Ein eigener Controller mapped die Adressbereiche auf die Extensionmodule und leitet die entsprechenden Daten über ein Register auf das Modul weiter. \r
+Beim Lesezugriff auf einen dieser Speicherbereiche legt das Extensionmodul einen Zyklus sp\"ater seinen Output auf den Datenbus. \r
+\r
+\r
+\section{Writeback-Stage}\r
+\r
+Die Writeback stage übernimmt die Werte aus dem Ergebnisregister der Alu oder aus der Forwardunit(Registerzusammensetzung) und schreibt diese in das Registerfile zurück. \r
+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).\r
+Somit muss dies auch von der Writeback Stage erledigt werden.
\ No newline at end of file
diff --git a/4_block/common.sty b/4_block/common.sty
new file mode 100644 (file)
index 0000000..e156ba4
--- /dev/null
@@ -0,0 +1,72 @@
+\usepackage{graphicx}\r
+\usepackage{amsmath}\r
+\usepackage{hyperref}\r
+\usepackage{url}\r
+\usepackage{color}\r
+\usepackage[latin1]{inputenc}\r
+\usepackage{listings}\r
+%\usepackage{ngerman}\r
+\r
+\usepackage{longtable}\r
+\r
+%used for coloring of instr.\r
+\usepackage{colortbl}\r
+\r
+\definecolor{title}{rgb}{0.86,0.86,0.86}\r
+\definecolor{bit}{rgb}{0.8,0.86,0.8}\r
+\definecolor{bitval}{rgb}{0.8,0.8,0.8}\r
+\definecolor{names}{rgb}{0.86,0.93,0.86}\r
+\r
+\arrayrulecolor{black}\r
+\r
+\r
+% put footnotes below floats\r
+% this is a good idea if the table for the cmp looks bad on top of page\r
+\usepackage{fnpos}\r
+\makeFNbelow\r
+\r
+\r
+\lstset{%\r
+basicstyle=\footnotesize,\r
+frame=single,\r
+breaklines=true,\r
+tabsize=4\r
+}\r
+\r
+\newcommand{\insertemail}[1]{\href{mailto:#1}{#1}}\r
+\r
+\newcommand{\longcomment}[1]{}\r
+\r
+\newcommand{\addauthor}[3]{\r
+       #1 {\small (#2)}\\{\small\insertemail{#3}}\r
+}\r
+\r
+\newcommand{\todo}[1]{\r
+       \large\textcolor{red}{TODO: #1}\r
+}\r
+\r
+\lstset{%\r
+       basicstyle=\footnotesize,\r
+       frame=single,\r
+       breaklines=true,\r
+       tabsize=4\r
+}\r
+\r
+\newcommand{\listingS}[2] {\r
+       %wtf, no "Assembler" exists??\r
+       %\lstinputlisting[language=Assembler,caption=#1]{#2}\r
+       \lstinputlisting[caption=#1]{#2}\r
+}\r
+\newcommand{\listingC}[2] {\r
+       \lstinputlisting[language=C,caption=#1]{#2}\r
+}\r
+\r
+\newcommand{\allauthors}{\r
+       \author{\r
+               \addauthor{Markus Hofst\"atter}{0725034}{markus.manrow@gmx.at}\and\r
+               \addauthor{Martin Perner}{0725782}{e0725782@student.tuwien.ac.at}\and\r
+               \addauthor{Stefan Rebernig}{0726283}{stefan.rebernig@gmail.com}\and\r
+               \addauthor{Manfred Schwarz}{0725898}{e0725898@student.tuwien.ac.at}\and\r
+               \addauthor{Bernhard Urban}{0725771}{lewurm@gmail.com}\r
+       }\r
+}\r
diff --git a/4_block/pipeline.png b/4_block/pipeline.png
new file mode 100644 (file)
index 0000000..b65b240
Binary files /dev/null and b/4_block/pipeline.png differ