next up previous
Next: ``Timing'' da microinstrução em Up: Microprogramação Previous: Um exemplo de microarquitetura

Microinstrução

Para controlar o ``data path'' da microarquitetura do exemplo precisamos de 60 sinais:

Este último, $ENC$, é útil para indicar se o resultado calculado deve ou não ser carregado de volta para a memória rascunho.

Dados os 60 sinais, podemos realizar um ciclo do ``data path''. Um ciclo consiste em colocar valores dos registradores da memória rascunho nos barramentos $A$ e $B$, carga nos ``$A$ latch'' e ``$B$ latch'', realizaçaõ da operação pela ALU e depois shifter, e finalmente armazenamento do resultado de volta à memória rascunho ou $MBR$. Além disso, o $MAR$ pode também ser carregado e um ciclo de acesso de memória iniciado.

Em vez de usar 16 bits de controle para controlar o barramento $A$, podemos codificar com 4 bits cada uma das combinações e usar um decodificador para produzir os 16 sinais necessários. O mesmo pode ser feito em relação ao barramento $B$.

No caso do barramento $C$, em princípio, podemos querer carregar múltiplos registradores da memória rascunho (isto é, carregar o resultado obtido em vários registradores). Limitando, entretanto, a carga de no máximo um registrador, podemos também codificar o registrador desejado com 4 bits e usar um decodificador, como no caso dos barramentos $A$ e $B$. Economizamos assim $3\times12 = 36$ bits. Além disso, $L_0$ e $L_1$ serão fornecidos pelo sinal do relógio, como veremos, e dispensamos esses dois bits também. Reduzimos assim os 60 bits iniciais para 22 bits.

Uma microinstrução terá os 22 bits mais dois campos adicionais, denominados $COND$ e ADDR (a serem explicados adiante), dando um total de 32 bits, conforme a Figura [*].

Figure: Formato da micro-instrução
\begin{figure}
\vspace{2.5in}
\end{figure}


next up previous
Next: ``Timing'' da microinstrução em Up: Microprogramação Previous: Um exemplo de microarquitetura
Siang Wun Song
2001-09-19