Via de dados
Abaixo está a via de dados que utilizaremos neste site.
Explicaremos seus componentes e funcionamento.
À primeira vista parece complicado. Podemos ver na figura os 3 barramentos. Um conjunto de registrados na vertical, os registradores que se comunicam com a MP: MAR e MBR, a ALU, deslocador, amux e latches.
Seu funcionamento é simples e encadeado. Explicaremos com mais detalhes os itens.
- Registradores do caminho de dados e suas funções:
·
PC: Contador de Programa (só utiliza os 12 LSB).
·
AC: Acumulador.
·
SP: Ponteiro de Pilha (só utiliza os 12 LSB).
·
IR: Registrador de Instrução.
·
TIR: Registrador de Instrução Temporário. Usado no processo
de decodificação de instrução.
·
0, +1, -1: Registradores que armazenam as constantes
numéricas 0, +1 e –1, respectivamente, expressas em 16 bits.
·
AMASK: Máscara usada para extrair o endereço (12 LSB) de
palavras de 16 bits.
AMASK = 0000 1111 1111 1111.
·
SMASK: Máscara usada para extrair operandos de 8 bits de
instruções que usam a pilha.
SMASK = 0000 0000 1111 1111.
·
A, B, C, D, E, F: seis Registradores de 16 bits de uso geral.
· Cada registrador tem saída para dois barramentos, A e B, através
ção de leitura correspondentes.
· Cada registrador é alimentado a partir da saída de um deslocador,
através de um barramento C, por meio de dois sinais: um de
seleção e outro de habilitação de escrita (ENC).
- Unidade Lógica Aritmética (ALU, ULA):
É a unidade central do processador, que realmente executa as operações aritméticas e lógicas referenciadas pelos opcodes (falaremos mais tarde destes).
Na figura ao lado temos uma ALU. Ela recebe os dados pelos barramentos A e B.
F0 e F1 determinam qual operação a ALU irá realizar. Observe a tabela abaixo:
F0 |
F1 |
Operação |
0 |
0 |
A + B |
0 |
1 |
A AND B |
1 |
0 |
A |
1 |
1 |
¬A |
A ALU pode também ter saídas de controle como indicado em N e Z. Onde testa se o bit mais significativo é negativo ou igual a zero.
F(A,B) representa a saída da operação.
- Deslocadores:
O resultado que sai da ALU -
F(A,B) - vai para o deslocador. O resultado pode ser deslocado de um bit à direita, 1 bit à esquerda ou não ser deslocado, conforme tabela abaixo:
S0 |
S1 |
Operação |
0 |
0 |
não desloca |
0 |
1 |
1 bit p/ esquerda |
1 |
0 |
1 bit p/ direita |
1 |
1 |
não usado |
Mas para que deslocar bits?
Bem, uma instrução corresponde a um conjunto de 0 e 1 que precisam ser decodificados. O processador precisa acessar cada bit do opcode. Daí então fazemos uso do deslocador para assim acessar todos os bits que interessam e saber qual instrução corresponde àquela seqüência de bits.
- AMUX:
Podemos observar que o AMUX está logo acima da ALU. Duas entradas remetem a ele: MBR e o dado vindo do barramento A, podemos dizer que ele serve justamente para controlar essa entrada na ALU, para não deixar que um dado venha do MBR e do Barramento A ao mesmo tempo. O Amux faz este controle através de um bit. Se o bit for 0, significa que o dado vem do latch A, se igual a 1, o dado vem do MBR.
Citamos aqui algumas vezes o MBR, MAR, mas não explicamos muito sobre eles, só falamos que eles tem algum relacionamento com a Memória Principal, vamos agora entender isto com mais detalhes:
- MAR (Memory Address Register):
Conhecido como Registrador de Endereços de memória. Ele serve apenas como saída de endereços.
- MBR (Memory Buffer Register):
Conhecido como Registrador de Dados de memória. O MBR serve tanto de entrada como de saída de DADOS da memória.
- Latches A e B:
Imaginem quarteirões, ruas, onde trafegam muitos carros. Agora imaginem essas ruas sem semáforos. Seria uma zona de carros, batidas e outros. É pra isso que serve o latch na via de dados. Os latches prendem os dados quem vêm dos barramentos e os envia para a ALU. Como o computador não pensa, precisamos de alguém pra controlar os dados, senão eles trafegariam sem parar pela via de dados.
As Microinstruções
Vimos aqui todos os componentes de uma via de dados, seus conceitos, características, mas o que exatamente compõe uma microinstrução? Como ela é? Vejamos...
Primeiramente é bom deixar claro que uma via de dados pode ser de vários tipos. Neste trabalho baseamo-nos na via de dados do livro do Tanembaum. Esta via em especial possui vários sinais, sendo eles:
· 16 sinais para ler a memória de rascunho pelo do barramento A.
· 16 sinais para ler a memória de rascunho pelo do barramento B.
· 16 sinais para escrever na memória de rascunho a partir do
barramento C.
· 1 sinal para habilitar escrita na memória de rascunho, ENC.
· 2 sinais para carregar os Latches A e B: LA e LB.
· 2 sinais para selecionar a função da ULA: F1, F0.
· 2 sinais para selecionar a função do Deslocador: S1, S0.
· 2 sinais para leitura e escrita do MBR: RD, WR.
· 4 sinais para controlar o MAR e o MBR
· 1 sinal para selecionar a entrada do multiplexador: AMUX.
Estes sinais devem ser codificados na microinstrução.
Com alguma lógica adicional é possível reduzir a microinstrução:
· Os sinais LA e LB não precisam ser codificados na microinstrução,
uma vez que devem ser aplicados sempre, qualquer que seja o
ciclo de máquina. Eles podem ser gerados diretamente, pelo
próprio hardware da Unidade de Controle.
· Os 48 sinais (16 + 16 + 16) de seleção de um registrador da
memória de rascunho para operação com os barramentos A, B ou
C podem ser codificados em campos de endereços A, B e C de 4
bits cada. Uma lógica adicional de decodificação será necessária.
· Desta maneira,
sobram 22 bits a codificar na microintrução.
Observe a imagem:
Note que surgiu o campo
COND não explicado anteriormente.
Num programa de computador, tem vezes que precisamos de condições, repetições ou simplesmente desviar.
Por exemplo:
SE a cor for vermelha então a fruta é um morango senão é um abacaxi.
Dependemos da cor para dizer ao usuário qual é a fruta. Então talvez o nosso programa não siga um passo-a-passo ordenado, talvez precisaremos pular uma instrução, testar uma condição, por isso precisamos do COND.
Como mostrado na figura o campo COND é composto de 2 bits, resultando em:
C0 |
C1 |
Operação |
0 |
0 |
não desvie |
0 |
1 |
desvie se N=1 |
1 |
0 |
desvie se Z = 1 |
1 |
1 |
desvie sempre |
Lembram do N e Z da ALU? Pois bem, é exatamente aí que eles entram! No teste da condição.
Abaixo está um exemplo de microprograma com o layout da microinstrução:
E o que é a tal unidade de controle? Vejamos...
Continua >>