Unidade de Controle Microprogramada 1 UC Microprogramada UC Microprogramada ! Sinais de controle são gerados por um programa (flexibilidade, mesmo hw) em vez de diretamente a partir de portas lógicas com na UC Hardwired ! Elementos básicos Ø Palavra de controle: sequência de bits que representam os diversos sinais de controle Ø Microrotina: sequência de palavras de controle que constitui uma instrução de máquina Ø Microinstrução: uma determinada palavra de controle dentro de uma microrotina Ø Memória de controle: memória onde são armazenadas todas as microinstruções de todas as microrotinas 2 UC Microprogramada Microrotina 3 UC Microprogramada Princípio de funcionamento ! A UC pode gerar os sinais de controle, lendo sequencialmente as palavras de controle da microrotina correspondente que ficam armazenadas na memória de controle Organização básica de uma UC microprogramada Usado para ler sequencialmente as Control Word (CW) 4 UC Microprogramada Princípio de funcionamento ! A partir do código da instrução, o gerador de endereço inicial carrega o µPC com o endereço de início da microrotina na memória de controle ! O relógio (Clock) incrementa o µPC para gerar os próximos sinais de controle Contador de microprograma Organização básica de uma UC microprogramada 5 UC Microprogramada Suporte à execução condicional ! A organização básica da UC microprogramada deve ser alterada para introduzir verificações a códigos de condição e flags de estado ! Conj. de microinstruções expandido p/ incluir microinstruções de desvio Novo PC Teste de N códigos de condição 6 UC Microprogramada Suporte à execução condicional ! Além do endereço de desvio, as microinstruções devem indicar quais códigos de condição e flags de estado devem ser testados 7 UC Microprogramada Situações de modificação do µPC ! A cada execução de uma microinstrução Ø O µPC é incrementado pelo relógio (clock) ! Quando a microinstrução “End” é encontrada Ø O µPC é zerado (reset) ! Quando uma nova instrução é carregada no RI Ø O µPC é carregado com o endereço de início da microrotina associada àquela instrução ! Quando uma microinstrução de desvio é encontrada e a condição de desvio é satisfeita Ø O µPC é carregado com o endereço de desvio 8 UC Microprogramada Agrupando as microinstruções ! Microinstruções podem ser implementadas de forma direta associandose um bit da palavra de controle para cada sinal de controle ! Esta abordagem resulta em microinstruções longas Ø Em uma CPU de um barramento e quatro registradores de uso geral pode-se chegar a palavras de controle com 42 bits de comprimento Ø Poucos bits são ligados em cada microinstrução, resultando em uma memória de controle esparsamente preenchida ! O tamanho das microinstruções pode ser reduzido através do agrupamento de sinais de controle Ø Muitos sinais não são necessariamente simultâneos 9 UC Microprogramada Agrupando as microinstruções ! Os sinais de controle mutuamente exclusivos são agrupados e codificados usando uma quantidade menor de bits Ø Ex.: uma ALU com 16 funções (soma, subtr.,..., and, xor) requer 4 bits para codificar a operação desejada Ø No máximo 1 elemento da CPU de um barramento pode colocar seu conteúdo no barramento por vez ! O agrupamento de bits reduz o tamanho da memória de controle mas requer hardware decodificador adicional Ø Custo é recompensado por reduzir o número de bits em cada microinstrução, resultando no menor armazenamento de controle 10 Possível organização: 20 bits e 42 sinais Exemplo parcial de uma microinstrução codificada em campos 11 UC Microprogramada Uso eficiente da memória de controle ! Desenvolver uma microrotina para cada instrução de máquina torna-se simples a partir da estrutura de UC microprogramada vista, mas apresenta duas desvantagens: Ø Uma microrotina separada para cada instrução de máquina e seus diversos modos de endereçamento requer muito espaço na memória de controle e um grande número de microinstruções, além de duplicação de partes comuns Ø Tentar compartilhar as partes comuns do código implica em inserir muitas instruções de desvio, o que deixa a execução lenta 12 UC Microprogramada Considere a seguinte instrução de máquina: ADD Rsrc, Rdst ! Soma o conteúdo do operando fonte (Rsrc) com o conteúdo do operando destino (Rdst) e armazena o resultado no operando destino Ø O operando fonte pode ser especificado nos seguintes modos de endereçamento § Registrador (operando disponível no registrador: mov ax, bx) § Autoincremento (endereço do registrador e incrementa: [R4]+ ) § Autodecremento (decrementa e endereço do registrador: -[R4] ) § Indexado ( X[R] ou seja Aef = X + R ) Ø É possível ocorrer ainda a forma de acesso indireto em todos estes modos (modo “ponteiro”): add [a], R ou add [R1], R2 13 Busca Representação octal de 3 bits Fluxograma Bit-ORing (p/ modo de endereçamento) Programmable Logic Array Bit-ORing (p/ tipo de endereçamento) Indireto Direto Indireto ou direto? Bit-ORing Usa porta OR p/ alterar o bit menos significativo do endereço 14 ADD (Rsrc)+, Rdst 11: 10: 01: 00: Indexado Autodecremento Autoincremento Modo Registrador 0: Direto 1: Indireto 24 = 16 registradores gerais Registrado indireto Atribuído diretamente Obs.: para melhor entendimento, estão sendo mostrados sinais efetivos ao invés de padrões de bits 15 11: 10: 01: 00: ADD (Rsrc)+, Rdst Indexado Autodecremento Autoincremento Modo Registrador 0: Direto 1: Indireto diretamente Base 83 = 512 Base 10 Posição em µPC à 8 7 6 5 4 3 2 1 0 1 7 0 0 0 1 1 1 1 0 0 0 1 7 1 0 0 1 1 1 1 0 0 1 64 32 16 8 4 2 1 = 120 121 = Valor do bit binário à X Base 29 = 512 256 128 1 0 1 65 0 0 1 0 0 0 0 0 1 1 1 1 73 0 0 1 0 0 1 0 0 1 1 2 1 0 0 1 0 1 0 0 0 1 1 4 1 97 0 0 1 1 0 0 0 0 1 1 6 1 113 0 0 1 1 1 0 0 0 1 = 81 Endereço 101 é obtido através de PLA = 16 UC Microprogramada Redução do número de desvios no microprograma ! Conforme visto, o número de desvios internos ao microprograma pode ser muito elevado causando perda de eficiência da arquitetura ! Reavaliando o modelo de UC microprogramada visto percebe-se que o tratamento de desvios é necessário em função da existência do µPC ! Uma alternativa mais poderosa seria eliminar o µPC, incluindo um campo de endereço como parte de toda microinstrução ! O µPC é substituído por registrador de endereços de microinstruções (µAR) que armazena endereço da próxima microinstrução a ser buscada 17 UC Microprogramada Exemplo de UC microprogramada com campo de próximo endereço 18 UC Microprogramada F0: Endereço da próxima instrução com 8 bits O sinal END, que era usado para iniciar µPC, é substituído pelo endereço 0008 em starting address (F0) Bit-ORing F10: ORmode (modo de endereçamento) F11: ORindsrc (tipo de endereçamento) Microrotinas 19 UC Microprogramada Diagrama detalhado do circuito que gera os sinais de controle Os sinais de controle podem ser decodificados a partir dos campos de microinstrução e usados para controlar a sequência de passos Rdst e Rsrc de entrada e saída são decodificados para os 16 registradores 20