principios da microprogramacao

28
Princípios da Microprogramação Princípios da Microprogramação Horizontal X Vertical Horizontal X Vertical Passaremos agora a discutir sobre dois conceitos relacionados à microprogramação Na microprogramação horizontal, a preocupação é exclusivamente com as portas lógicas Nada de sinais codificados para economia de bits: cada conjunto de sinais que sai do MIR controla de forma direta sua respectiva componente 1

Upload: marcelle-guine

Post on 21-Jun-2015

630 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Principios da microprogramacao

Princípios da MicroprogramaçãoPrincípios da Microprogramação

Horizontal X VerticalHorizontal X Vertical

Passaremos agora a discutir sobre dois conceitos relacionados à microprogramação

Na microprogramação horizontal, a preocupação é exclusivamente com as portas lógicas

Nada de sinais codificados para economia de bits: cada conjunto de sinais que sai do MIR controla de forma direta sua respectiva componente

1

Page 2: Principios da microprogramacao

Isto significa que as microinstruções em uma arquitetura assim teriam largura equivalente ao total de sinais de controle recebidos pelas componentes

2

...mas é claro que estaexplicação não deixounada muito claro

Page 3: Principios da microprogramacao

Usaremos um exemplo da máquina que projetamos anteriormente. Lembra-se do nosso MIR?

3

ULA

DES

MBR

MAR

RD

WR

EnC

CCOND

AMUX

B A

ADDR

Os campos A, B e C possuíam 4 bits cada, que passavam por decodificadores onde eram “transformados” em 16

Se tivéssemos usado, exclusivamente, microprogramação horizontal na arquitetura, cada um desses campos teria 16 bits. Isto aumentaria drasticamente a largura do MIR

Page 4: Principios da microprogramacao

Os campos ULA e DES também ficariam maiores. Os pares 00, 01, 10 e 11 também são codificações, as quais geram um conjunto de 4 bits que identificam qual a operação a ser realizada pela ULA ou pelo deslocador

No caso do deslocador, pode ser gerado um conjunto de 3 bits, já que o deslocador possui apenas 3 funções e o par 11 nunca ocorre

Assim, concluímos que o campo ULA passaria a ter 4 bits e o campo DES, 3 bits

4

Page 5: Principios da microprogramacao

É fácil perceber que seguir à riscao conceito de microprogramaçãohorizontal não teria sido a opçãomais inteligente para a nossa máquina,já que sempre optamos por tentar diminuir o tamanho da memória de controle e, assim, do MIR

Mas se quiséssemos ser ainda mais econômicos na largura das microinstruções (e do MIR, consequentemente) da arquitetura que projetamos, poderíamos aplicar o conceito de microprogramação vertical

5

Page 6: Principios da microprogramacao

A microprogramação vertical carrega uma ideia rigorosamente oposta à horizontal: encurtar ao máximo a largura das microinstruções, criando o máximo possível de codificações nos sinais

Diminuir o número de bits das microinstruções é geralmente uma ideia interessante. Vamos mostrar como ficaria nossa máquina se seguíssemos este princípio exclusivamente

Nosso MIR, que antes tinha 32 bits de largura, pode passar a ter apenas 12, como veremos a seguir

6

Page 7: Principios da microprogramacao

Com apenas 4 bits para OPCODE e 8 para operandos (4 para cada), é possível escrever um microprograma equivalente ao que vimos anteriormente

É claro que as restrições aumentam com esses cortes

Agora, só temos 2 operandos. Como saber onde o resultado será gravado?

A solução é guardar o resultado sempre no mesmo registrador de um dos operandos

7

OPCODEOPERANDO 1 OPERANDO 2

ADDR (endereço)

4 bits 4 bits 4 bits

Page 8: Principios da microprogramacao

Antes, podíamos fazer R3 ← R1 + R2. Agora, se queremos de fato guardar em R3 o resultado da soma dos valores de R1 e R2, precisamos fazerR1 ← R1 + R2; e depois R3 ← R1

Por este exemplo já foi possível perceber que o microprograma ficaria mais extenso do que aquele que fizemos anteriormente, mas isso é assunto para mais tarde

A seguir, será apresentada como ficaria nossa máquina em microprogramação vertical. Repare na presença de 3 novos elementos: OP, AND e NZ

8

Page 9: Principios da microprogramacao

9

Page 10: Principios da microprogramacao

Recordando: os dados de entrada são sempre carregados dos registradores no subciclo 2, e o resultado é salvo em um deles no subciclo 4

Já que agora temos 2 operandos e um deles será ao mesmo tempo um dado de entrada e o destino do resultado, o bloco AND se faz necessário para ativar cada barramento no subciclo correto

Pelo esquema apresentado alguns slides atrás, vimos que os 2 operandos da microinstrução pode também ser usado como um endereço. Isto significa que não podemos ter endereço e operandos em uma mesma microinstrução

10

Page 11: Principios da microprogramacao

Para começo de conversa, já podemos com isso adiantar que não é possível testar se o resultado de uma operação da ULA é maior, igual ou menor que 0, em apenas uma microinstrução

Precisamos portanto armazenar os bits N e Z liberados pela ULA, para que eles possam ser avaliados no ciclo seguinte. É aí que entra NZ, que nada mais é do que um registrador que armazena estes dois bits

Resta falar sobre OP, a mais importante das 3 inéditas componentes em nossa nova máquina

11

Page 12: Principios da microprogramacao

Para cada combinação de OPCODE (16 possíveis, já que são 4 bits), são gerados 13 bits que controlam a lógica de microssequenciamento (componente usada na avaliação dos bits N e Z), a ULA, o deslocador, o registrador NZ, o AMUX, os registradores MBR e MAR, e os sinais RD e WR; 2 bits para os 3 primeiros e um bit para os outros

O problema é que quem está projetando a máquina precisa construir todo um circuito que gere os bits de controle corretos para cada OPCODE

12

Page 13: Principios da microprogramacao

Exemplificando: suponha que as combinações OPCODE para as instruções que iniciam as operações de leitura e escrita (portanto, envolvem a ativação do MAR) sejam 1000 e 1001

Tudo o que sabemos é: A combinação de OPCODE 1000 gera o bit 1 para MAR A combinação de OPCODE 1001 gera o bit 1 para MAR As demais combinações geram o bit 0 para MAR

Temos então uma tabela que contém os bits de entrada e também os bits de saída

13

Page 14: Principios da microprogramacao

14

A B C D S

0 0 0 0 0

0 0 0 1 0

0 0 1 0 0

0 0 1 1 0

0 1 0 0 0

0 1 0 1 0

0 1 1 0 0

0 1 1 1 0

1 0 0 0 1

1 0 0 1 1

1 0 1 0 0

1 0 1 1 0

1 1 0 0 0

1 1 0 1 0

1 1 1 0 0

1 1 1 1 0

A, B, C e D seguem a ordem do bit mais significativo para o menos significativo, e S é a saída A partir daí, basta utilizar os conhecimentos da disciplina de Circuitos Digitais para montar um circuito apropriado

Page 15: Principios da microprogramacao

Da tabela, obtemos (A.B.C.D) + (A.B.C.D), que pode ser simplificado em A.B.C

Com isso, já temos projetado o circuito que, recebendo os bits de OPCODE, gera o bit de controle apropriado para MAR. Os circuitos que vão gerar os outros 12 bits de controle são construídos utilizando o mesmo raciocínio deste exemplo

Enfim, o bloco OP nada mais é do que o conjunto de todos estes circuitos. Como chegar em cada um deles não é relevante para os nossos estudos

15

Page 16: Principios da microprogramacao

Para efeitos de comparação, vamos supor que fosse ser executado em nossa máquina original um microprograma de 80 instruções, lembrando que na máquina original uma microinstrução tinha 32 bits de largura, enquanto na que acabamos de projetar, uma microinstrução possui 12 bits

16

80 instruções

Muito provavelmente,mais de 80 instruções

Page 17: Principios da microprogramacao

Como já foi dito, as restrições causadas pela fixação da largura de OPCODE em 4 fazem com que uma função desempenhada por uma microinstrução em nossa primeira máquina necessite de mais de uma microinstrução na nova arquitetura (operar na ULA e depois avaliar o resultado, por exemplo)

Assim, podemos saber qual das duas máquinas será mais econômica através de um cálculo bastante simples

O microprograma que ocupar menos “volume” na memória de controle determinará a resposta

17

Page 18: Principios da microprogramacao

Por “volume”, entende-se a largura de cada microinstrução multiplicada pelo total de microinstruções

Na máquina original, ocupou-se um volume de 80 x 32 = 2560 bits. Se fizermos:

80 x 32 > n x 12teremos n < 213, isto é, a máquina que acabamos de projetar será mais econômica caso o microprograma equivalente àquele de 80 instruções tenha menos de 213

E a tendência é que realmente tenha bem menos que 213 microinstruções

18

Page 19: Principios da microprogramacao

Então, toda máquina deve ser projetada seguindo à risca o princípio da microprogramação vertical?

Certamente não. Lembre-se de que cada microinstrução é, independente de sua largura, executada no tempo de um ciclo, que é fixo

Quanto mais microinstruções necessárias para executar uma função, mais lenta é a execução. Logo, a nossa primeira máquina é mais cara e mais rápida, enquanto a última é mais lenta, porém mais barata

19

Page 20: Principios da microprogramacao

NanoprogramaçãoNanoprogramação

Falando em economia, existe ainda outra forma de ocupar menos memória no armazenamento dos microprogramas, que deve ser discutida

Vimos que programas são sequências de instruções. É possível dividi-los em sequências e instruções

Vamos a seguir entender melhor esta jogada

20

Page 21: Principios da microprogramacao

Consideremos um microprograma que ocupa completamente esta memória de controle, isto é, possui h instruções de largura w

Podemos dividi-lo em duas partes:

21

Memória de Controleh

w

Page 22: Principios da microprogramacao

À esquerda, temos uma memória que armazena números binários que identificam cada instrução

As instruções completas são armazenadas na memória à direita, com a vantagem de cada uma aparecer apenas uma vez

22

1320125...

h

w

sequência na qualocorre cada instrução,identificada apenaspor um número

ABC...

cada instrução individualmente, todas distintas entre si(n instruções nototal)

Page 23: Principios da microprogramacao

Novamente, a melhor maneira de clarear tudo é ilustrando com um pequeno exemplo

Imagine o seguinte microprograma:

23

ABAAACDDBDCAACDB

A equivale a 01100101100101101001 B equivale a 10110110001000011011 C equivale a 11101000110100110000 D equivale a 00010110100101110010

Page 24: Principios da microprogramacao

Neste exemplo, w = 20 e h = 16, isto é, um total de 16 microinstruções onde a largura de cada uma é de 20 bits, totalizando 320 bits

Vamos agora dividir o microprograma. A parte à esquerda é o microprograma de fato, e à direita temos o nanoprograma, que guarda cada microinstrução diferente

Cada linha do microprograma passa a conter apenas o endereço da nanomemória no qual está a instrução que deveria estar naquele local do microprograma

24

Page 25: Principios da microprogramacao

25

00010000001011110111100000101101

h = 16

w = 20

01100101100101101001101101100010000110111110100011010011000000010110100101110010

00

011011

endereçosABAAACDDBDCAACDB

memória de controle

nanomemória

Page 26: Principios da microprogramacao

Vimos que cada linha da memória de controle passou a ter 2 bits apenas. Isto porque o microprograma tem, no total, 4 instruções diferentes, fazendo necessários log₂4 = 2 bits para representá-las. A quantidade de linhas é a mesma do microprograma original: 16

Portanto, a memória de controle passou a ter 16 x 2 = 32 bits ocupados

Já a nanomemória possui o total de instruções multiplicado pela largura das mesmas, o que totaliza 80 bits (4 x 20)

Dos 320 bits originais, o microprograma passou a ocupar apenas 32 + 80 = 112 bits! 26

Page 27: Principios da microprogramacao

De uma forma geral, temos: o microprograma original ocupa h.w bits a memória de controle após a divisão passa de h.w

para h.log₂n bits ocupados, onde n é o total de instruções diferentes do microprograma

a nanomemória introduzida tem n.w bits ocupados Em outras palavras, a nanoprogramação será

econômica sempre que a seguinte inequação for satisfeita:

h.w > h.log₂n + n.w

27

Page 28: Principios da microprogramacao

Observe que n aparece nos dois produtos à direita, sendo determinante na economia dos bits

Isso faz sentido porque, se houver muitas instruções diferentes em relação ao número de linhas no microprograma original, recorrer à nanoprogramação não será eficiente. A nanomemória terá um tamanho próximo ao tamanho que tinha a memória de controle antes da divisão

Tudo o que teríamos então seria uma memória parecida com a anterior, e mais uma outra contendo apenas referências para a nova memória

28