Arquitetura de Computadores Unidade de Controle Controle Microprogramado Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO UC Microprogramada Na unidade de controle microprogramada, na qual a lógica da unidade de controle especificada através de um microprograma Um microprograma é composto por uma sequência de instruções de uma linguagem de microoperação Circuito lógico, relativamente simples, deve desempenhar duas tarefas: Seguir uma sequência de microinstruções; Gerar sinais de controle para executar cada microinstrução; 2 UC Microprogramada Microarquitetura da UC Idéia surgida da década de 50 (Wilkes, 1951) para evitar a complexidade da implementação em hardware Começou a ser adotado comercialmente na década seguinte, na família 360 da IBM Uma sequência de instruções de uma linguagem de microprogramação é chamada de microprograma ou firmware um meio-termo entre hardware (mais difícil de implementar) e software (mais fácil de escrever um programa) 3 4 1
Implementação da UC microprogramada Essencialmente, a tarefa da unidade de controle é gerar um conjunto de sinais de controle Para cada microoperação, cada linha de controle que sai da UC pode estar ativada ou desativada, representadas por um bit, 0 ou 1 Desta forma, são construídas palavras de controle, onde cada bit representa uma linha de controle; cada microoperação pode ser representada por um padrão distinto de bits na palavra de controle 5 Formato de microinstrução horizontal Endereço de microinstrução Condição de desvio (incondicional, zero, overflow, bit de indireção) Sinais de controle do barramento de sistema Sinais de controle internos da CPU 6 Microinstrução horizontal Existe um bit para cada linha de controle interna do processador e um bit para cada linha de controle do barramento de sistema Campo de condição: indica a condição sob a qual deve ser efetuado o desvio Campo de endereço da microinstrução: indica o endereço da microinstrução a ser executada, caso o desvio seja efetuado 7 Microinstrução horizontal Execução da microinstrução: São ativadas todas as linhas indicadas por um bit de valor 1 (as demais são deixadas inativas). Os sinais de controle resultantes fazem com que uma ou mais microoperações sejam executadas; Se a condição especificada no campo de condição for falsa, é executada a próxima microinstrução da sequência; Se a condição for verdadeira, a próxima microinstrução a ser executada será aquela no campo de endereço. 8 2
Memória de controle As microinstruções são armazenadas em uma memória de controle, onde são executadas sequencialmente Cada rotina termina com um desvio, que indica para onde ir em seguida Existe uma rotina especial do ciclo de execução (destacada no exemplo a seguir), que tem o propósito de indicar qual das rotinas de instrução de máquina (AND, ADD, ) deve ser executada em seguida, dependendo do código de operação corrente 9 Organização da memória de controle Desvie para ciclo de indireção ou de execução Desvie para ciclo de execução Desvie para ciclo de busca Desvie para rotina do código de operação Desvie para ciclo de busca ou de interrupção Desvie para ciclo de busca ou de interrrupção Rotina do ciclo de busca Rotina do ciclo de indireção Rotina do ciclo de interrupção Início da rotina do ciclo de execução Rotina da operação AND Rotina da operação ADD 10 Elementos da UC microprogramada Memória de controle: mantém o conjunto de microinstruções Estrutura da UC Registrador de endereço de controle (ou registrador buffer de controle): contém o endereço da próxima microinstrução a ser lida Registrador de microinstrução: armazena a microinstrução lida da memória de controle A posição mais à esquerda deste processador é conectada às linhas de controle que saem da UC. Desta forma, ler uma microinstrução da memória é o mesmo que executar esta instrução 11 12 3
Elementos da UC microprogramada Formato de microinstrução vertical Unidade de sequenciamento: carrega o registrador de endereço de controle e envia um comando de leitura para a memória de controle Decodificadores: na entrada e saída da UC. Suas funções são: O superior traduz o código de operação do IR em um endereço na memória de controle O inferior é usado somente para microinstruções verticais, traduzindo o código de cada ação a ser efetuada em sinais de controle individuais Endereço de microinstrução Condição de desvio (incondicional, zero, overflow, bit de indireção) Códigos de função 13 14 Microinstruções verticais Em microinstruções verticais, é utilizado um código para cada ação a ser efetuada, e o decodificador traduz esse código em sinais de controle individuais Desta forma, microinstruções verticais são mais compactas (menor número de bits) do que as microinstruções horizontais, porém, há um pequeno custo computacional devido a lógica e tempo de atraso necessários pela decodificação Funcionamento da UC O funcionamento da UC envolve os seguintes passos: 1. Para a execução de uma microinstrução, a unid. lógica de sequenciamento envia um comando de leitura para a memória de controle; 2. A palavra cujo endereço é especificado no registrado de endereço de controle é lida para o registrador de microinstrução; 15 16 4
Funcionamento da UC 3. O conteúdo do registrador de microinstrução gera os sinais de controle e a informação sobre o próximo endereço para a unidade lógica de sequenciamento 4. A unidade lógica de sequenciamento carrega o novo endereço no registrador de endereço de controle, com base na informação de próximo endereço obtida no registrador de microinstrução e nos bits de condição da ULA Todos estes passos ocorrem durante um ciclo de clock 17 Estados das microinstruções O ciclo de microinstrução é constituído de duas etapas: Busca: geração de um endereço de microinstrução Execução: geração dos sinais de controle; alguns sinais controlam pontos internos do processador, enquanto outros vão para o barramento de controle ou outra interface externa No projeto de uma UC, estas características devem ser consideradas em conjunto, pois afetam o formato das microinstruções e a temporização da UC. 18 Aspectos da microprogramação para UC Vantagens: Simplifica o projeto da unidade de controle; Torna o projeto mais barato e menos sujeito a erros; Os decodificadores e a unidade lógica de sequenciamento possuem uma lógica muito simples; Desvantagem: Um pouco mais lenta do que uma UC implementada em hardware; OBS.: RISC costumam utilizar UC implementadas em hardware, devido aos seus formatos de instruções mais simples 19 Endereço das microinstruções Durante a execução de um microprograma, a geração do endereço da próxima microinstrução a ser executada pode ser feita das seguintes formas: Determinado pelo registrador de instrução; ocorre uma vez por ciclo, após a busca da instrução. O próximo endereço da sequência; a mais comum na maioria dos projetos. Um endereço de desvio, condicionais ou incondicionais 20 5
Sequenciamento de microinstruções O projeto de uma técnica de sequenciamento de microinstruções envolve dois fatores: O tamanho das microinstruções; Através da redução do tamanho necessário da memória de controle, o custo do componenete é reduzido; O tempo de geração de endereços; Reduz o tempo de execução de microinstruções; Técnicas de Sequenciamento Através dos bits de condição e do conteúdo do registrador da instrução atual, deve ser gerado o endereço da próxima microinstrução a ser executada na memória de controle. As categorias de microinstruções são baseadas no formato da informação de endereço na microinstrução, podendo ser: Dois campos de endereço; Um único campo de endereço; Formato variável. 21 22 Sequenciamento com dois campos de endereço Execução de microinstruções Trata-se do evento básico de um processador microprogramado Cada ciclo é constituído de duas partes: busca (determinada pela geração de um endereço de microinstrução) e a execução em si. A execução consiste basicamente na geração de sinais de controle, alguns para controlar pontos internos do processador e outros são enviados para o barramento de controle ou alguma outra interface externa. 23 24 6