\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: Tópicos Avançados em Sistemas de Computação\\
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 de um processador \textit{pipelined}  em relação a um processador  monociclo é a possibilidade de manter uma instrução na via de dados enquanto é ``realmente'' utilizada.
\item[( )] A diferença básica entre uma política de atualização \textit{write-through} e a política \textit{write-back} é que a primeira atualiza a memória principal apenas quando a linha da cache é atualizada enquanto que a segunda atualiza a memória somente quando o programa é finalizado.
\item[( )] Em uma arquitetura de fluxo de dados, as instruções não necessitam manter informações sobre a origem dos operandos mas apenas sobre a operação que deve ser realizada e o destino dos resultados.  
\item[( )] Uma das restrições para a utilização de máquinas de fluxo de dados é a necessidade de ordenar a execução das  operações de memória, em contraposição ao modelo de fluxo de dados original que permite que as operações sejam executadas assim que os operandos estão disponíveis. 
\item[( )] Considerando o processador MIPS com pipelines, 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[( )] Uma das vantagens da política de atualização \textit{write-back} sobre a \textit{write-through} é que ela (\textit{write-back}) absorve várias escritas para uma mesma linha da cache e, com isso, minimiza o tráfego no barramento Cache-Memória.
\item[( )] Sobre os protocolos MSI e MESI, a verificação de uma mensagem BusRdX no barramento e a ação de Flush, seguida por uma mudança de estado, ocorre apenas quando um processador, no estado S, deseja fazer uma escrita na cache.
\item[( )] De maneira resumida, a vantagem da estratégia de protocolos de coerência de caches baseados em diretórios é possibilitar que a coerência das caches seja mantida centralizada enquanto que nos protocolos de \textit{snooping} essa coerência é sempre distribuída.
\item[( )] Estações de Reserva funcionam como buffers para armazenamento das instruções já executadas cujo \textit{commit} ainda não foi efetivado. Essas estações são empregadas em arquiteturas superscalares.
\item[( )] A execução de instruções RISC está atrelada a arquiteturas com escalonamento estático como as máquinas VLIW enquanto que máquinas com escalonamento dinâmico, como as superscalares, buscam, decodificam e executam instruções CISC.
\end{itemize}


\item[2)] Sobre o código a seguir, responda:
\begin{itemize}
\item[a)] Indique onde ocorre \textit{stall} nas instruções a seguir e reordene-as de maneira a reduzir esses \textit{stalls}. 
\item[b)] Se considerarmos que não há \textit{stall} na instrução de desvio condicional, como ficaria o código?
\item[c)] Se a arquitetura possui recursos para predicação e especulação de instruções de \textit{load}, o desempenho poderia ser melhorado? Como?
\end{itemize}

\begin{verbatim}
0    addi $t2, $zero, 10
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)] Mostre que, para um sistema de interconexão baseado em hipercubo cujo grau $g$ de cada nó é 3, $g(i)=3,\forall i\in N, N=\#$ de nós do hipercubo, o diâmetro também é 3. 

\item[4)] Baseando-se na Figura do sistema de interconexão MIN, mostre o caminho seguido para a comunicação entre os nós $010\rightarrow 111$ e $110\rightarrow 000$. Qual a latência de pior caso, considerando o número de switches entre os nós de origem e destino, para uma rede com $N$ nós? 
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=1]{MIN.eps}
\caption{Multistage Interconnection Network}\label{Fig:Datapath}
\end{center}
\end{figure}

\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} (proc. R3000).  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]$.

\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.9]{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}
