\documentclass[a4paper,12pt]{report}
\usepackage[portuges,brazil]{babel}
\usepackage{amssymb,amsmath,amsfonts}
\usepackage[latin1]{inputenc}
\usepackage{euler}
\usepackage{graphicx}
\usepackage[top=30mm,bottom=30mm,left=20mm,right=20mm]{geometry}
%\topmargin -2cm \oddsidemargin -0.5cm \textwidth 16,5cm
\textheight 25cm
\parindent=1cm
\newcommand{\portanto}{\ensuremath{. {}^. .\;}}
\newcommand{\talque}{ \, \mid \,}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\inteiros}{\mathbb{Z}}
\newcommand{\rac}{\mathbb{Q}}
\newcommand{\reais}{\mathbb{R}}
\newcommand{\complexos}{\mathbb{C}}
\pagestyle{empty}
\newcommand{\dmat}{\displaystyle}
\newcommand{\hsa}{\hspace{0.1cm}}
\newcommand{\hsb}{\hspace{0.25cm}}
\newcommand{\hsc}{\hspace{0.5cm}}
\newcommand{\hsd}{\hspace{0.75cm}}
\newcommand{\hse}{\hspace{1.0cm}}
\begin{document}
\noindent {\bf Universidade Católica Dom Bosco \\
              Curso de Engenharia de Computação \\
              Disciplina: Arquitetura de Computadores II\\
Professor: Ricardo Santos}\\

\centerline{\bf Simulado n$^{\textrm{\scriptsize
\b{o}}}$ 1 }

\small

\noindent
\begin{itemize}
\item[1)] Assinale a alternativa correta (V ou F)
\begin{itemize}
\item[( )] Uma das vantagens do projeto multiciclo em relação ao monociclo é a possibilidade de manter uma instrução na via de dados enquanto é ``realmente'' utilizada.
\item[( )] Na definição dos sinais de controle da via de dados monociclo, os sinais ``MemtoReg'' e ``MemRead'' poderiam ser unidos em um único sinal já que são utilizados apenas pela operação $lw$.
\item[( )] Na implementação de um processador MIPS, há sempre necessidade de um multiplexador antes do banco de registradores pois, esse multiplexador é o responsável por selecionar se o endereço apontado por $rs$ ou $rd$ será utilizado.
\item[( )] As operações aritméticas que manipulam imediatos, casos de $addi$ e $ori$, utilizam a unidade de extensão do sinal e a unidade de deslocamento à esquerda de 2 bits, uma vez que essas unidades realizam, respectivamente, a expansão de 16 para 32 bits e o alinhamento do número.
\item[( )] O sinal $PCWriteCond$ é habilitado em qualquer instrução de desvio condicional e não apenas na instrução $beq$.
\item[( )] A diferença entre um microcódigo vertical e um horizontal é que o primeiro é mais lento e utiliza menos memória enquanto o segundo é mais rápido mas utiliza mais memória.
\item[( )] A razão para a utilização de duas ``Dispatch ROM'' na UC do processador MIPS é possibilitar que as instruções sejam diferenciados de acordo com o seu tipo (R, I ou J).
\item[( )] O conteúdo (sem considerar sinais de controle) do registrador de pipeline $IF/ID$ é a instrução buscada na memória e o endereço do $PC$. Logo, o tamanho desse registrador é 8 bytes.
\item[( )] Duas instruções $a$ e $b$ com dependência de dados ($a$ depende de $b$), não necessitam utilizar a unidade de forwarding se $b$ estiver no estágio $WB$ e $a$ estiver no estágio $ID$.
%\item[( )] No projeto multiciclo, quando uma instrução $sw$ escreve o conteúdo de um registrador na memória, esse conteúdo será armazenado no registrador MDR (\textit{Memory Data Register}).
%\item[( )] Considere uma instrução $incr\underline{ }m$ que incrementa em uma unidade o conteúdo de um registrador e armazena o resultado na memória. O endereço de memória é obtido simplesmente pela expansão do valor imediato colocado na instrução e do deslocamento de 2 bits desse valor expandido. Para que essa instrução seja executada no processador MIPS, a MEF necessita de apenas uma alteração: uma nova arestado estado 6 para o estado 5.
\item[( )] Tomando como base a implementação em \textit{pipeline} do processador MIPS, não há possibilidade de colocar a detecção de hazard de controle antes do estágio $ID$.
%\item[( )] A diferença básica, em termos de área ocupada, de um PLA para uma ROM é que a PLA calcula o número de células tendo como base as entradas $\times$ o número de produtos, enquanto a ROM calcula o número de combinações possíveis a partir dos bits de entrada.
\end{itemize}


\item[2)] Indique onde ocorre \textit{stall} nas instruções a seguir e reordene-as de maneira a reduzir esses \textit{stalls}. Se considerarmos que não há \textit{stall} na instrução de desvio condicional, como ficaria o código?
\begin{verbatim}
4    lw $t3, $t0(0)
8    beq $t2, $t3, 1
12   add $t2, $t1, $t1
16   addi $t1, $t3,1 
20   addi $t0, $t0,2
24   st $t1, $t0(0)
\end{verbatim}

\item[3)] Considere a existência de uma pseudo-instrução $copy~rt,~rs(imm)$ que copia o conteúdo da posição de memória $rs+imm$ para a posição de memória indicada pelo conteúdo de $rt$. Essa pseudo-instrução seria traduzida em quais instruções? Quantos ciclos (na implementação multiciclo) levaria para ser executada?

\item[4)] Se acrescentarmos mais uma unidade de \textit{forwarding} na via de dados com pipelines do processador MIPS, entre os estágios $WB$ e $MEM$, essa unidade seria útil em qual(is) situação(ões). Exemplifique sua resposta.

\item[5)] Mostre o conteúdo (desconsidere sinais de controle) dos registradores de pipeline de acordo com o código a seguir, após cada ciclo de relógio. Mostre a execução até o estágio $EX$ da última instrução. Quando não for possível determinar o conteúdo, indique 1x11. Tome como base a via de dados com pipelines apresentada na Figura~\ref{Fig:Datapath}. Quando for apresentar o conteúdo de um registrador $rx$, a partir do banco de registradores, utilize a notação $R[rx]$. O conteúdo da ALU, a partir das entradas $rs$ e $rt$ para uma operação de soma, deve ser indicado como $ALU[[rs]+[rt]]$. O conteúdo da memória de dados, cujos operandos foram, por exemplo, $rs$ e $10$, deve ser $MEM[rs+10]$. O resultado de um FLUSH em um registrador é indicado como $0$.
\begin{verbatim}
4  lw $t0, $t1(10)
8  add $t2, $t2, $t0
12 add $t1$,$t2, $t0 
\end{verbatim} 

\begin{figure}[!ht]
\begin{center}
\includegraphics[scale=0.7]{Datapath_pipelined.eps}
\caption{Via de Dados com Pipelines}\label{Fig:Datapath}
\end{center}
\end{figure}

\end{itemize}
\end{document}
-----------------------------------------------------------

\documentclass[12pt,fleqn]{report}
\usepackage[brazil]{babel}
\usepackage{amssymb}
\usepackage{amsmath}
%\usepackage{amsfonts}
\topmargin -2cm \oddsidemargin .1cm \textwidth 15cm \textheight
26cm
\parindent=1cm
\newcommand{\portanto}{\ensuremath{. {}^. .\;}}
\newcommand{\talque}{ \, \mid \,}
\newcommand{\nat}{\mathbb{N}}
\newcommand{\inteiros}{\mathbb{Z}}
\newcommand{\rac}{\mathbb{Q}}
\newcommand{\reais}{\mathbb{R}}
\newcommand{\complexos}{\mathbb{C}}
\newcommand{\dmat}{\displaystyle}
\pagestyle{empty}
