• Uma CPU de um microprocessador pode interpretar o conteúdo de uma palavra de memória como sendo o código de instrução. Mas pergunta-se: • Qual o número máximo ou mínimo de eventos lógicos que constituem uma instrução? • O que ocorre dentro de uma CPU durante a execução de uma instrução? • Qual o suporte lógico necessário à CPU? • Vamos examinar como a Unidade de Controle decodifica Unidade de Controle Prof. Eduardo Appel os códigos de instrução: [email protected] • A execução de uma instrução de qualquer microprocessador pode ser dividida em duas partes: a busca da instrução e a execução da instrução. Arquitetura e Organização de Computadores • A operação de busca de instrução é também conhecida por (instruction fetch). • Funcionamento da busca de instrução: a lógica da CPU envia o conteúdo do registro contador de programa + sinais apropriados. O resultado é que a lógica externa retorna o conteúdo de memória endereçado pelo PC. • Sob o ponto de vista de lógica externa, esta operação é uma simples leitura de memória. • Ao ser recebido pela CPU, o conteúdo é armazenado no registro de instrução e logo é interpretado como um código de instrução. Ou seja, o conteúdo do registro de Instrução é decodificado pela Unidade de Controle. • Enquanto a lógica externa está respondendo à busca de instrução, a CPU usa sua lógica interna para fazer PC=PC+1. Arquitetura e Organização de Computadores 3 • Registro Buffer: armazena os dados transitórios na CPU. Por exemplo: quando 2 bytes de dados são somados, a palavra de dados lida da memória para ser somada ao acumulador será armazenada temporariamente no registro buffer. Arquitetura e Organização de Computadores 4 • No exemplo anterior do programa de adição binária, vamos analisar a instrução 2. Buscar o conteúdo da palavra de dados (um byte endereçado pelo contador de dados e armazená-lo no acumulador) Sinais e temporização da busca de instrução • O primeiro passo ao se executar qualquer instrução é a busca da instrução (na verdade uma leitura em memória). É enviado o endereço de memória e é recebido uma palavra de dado como resposta. • Associado ao endereço deve ser enviado um sinal de controle READ, indicando que os dados devem entrar na CPU. Arquitetura e Organização de Computadores 2 5 Arquitetura e Organização de Computadores 6 1 Diferenças entre ciclos de busca de instruções e busca de dados 1. Mover o conteúdo do acumulador para a barra de dados • Busca de instrução: o endereço colocado nas linhas de endereços é o conteúdo do registro PC, durante a busca de dados, é o do contador de dados. • Durante o ciclo de busca de instrução, o dado de entrada (lido) é armazenado no registro de instrução. Durante o ciclo de busca de dados ele é armazenado no acumulador. • Analisaremos como procederíamos para realizar o complementar do conteúdo do acumulador. • Complementar o conteúdo do acumulador , requer cinco passos: Arquitetura e Organização de Computadores 7 2. Mover o conteúdo da barra de dados para o complementador Arquitetura e Organização de Computadores 8 3. Ativar a lógica do complementador 9 4. Mover o conteúdo do complementador para a barra de dados Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores 10 5. Mover o conteúdo da barra de dados para o acumulador 11 Arquitetura e Organização de Computadores 12 2 • Microinstrução: Cada um destes cinco passos são conhecidos como uma microinstrução. • Cada microinstrução é habilitada por um sinal vindo da Unidade de Controle. • A Unidade de Controle pode seqüencializar qualquer número de microinstruções para criar uma macroinstrução. • Macroinstrução: resposta aceita pela CPU a um código de instrução em linguagem Assembly. • Assembly: linguagem de máquina, constituída de códigos binários individualizados e associados a uma instrução. • No exemplo do complementar o conteúdo do acumulador, a Unidade de Controle precisa de cinco códigos binários, cada um disparando o sinal de controle apropriado (sinais). Arquitetura e Organização de Computadores • Microprograma: é a seqüência de códigos binários dentro de uma Unidade de Controle. • Microprogramação: é a geração da seqüência de códigos binários armazenados dentro da Unidade de Controle. • O programa em assembly é conhecido como sendo um macroprograma. • Cada código de instrução de um macroprograma inicia a execução de um microprograma interno na forma que está armazenado na Unidade de Controle. 13 Arquitetura e Organização de Computadores 14 Sinais de uma Unidade de Controle • Complexidade de Macroinstruções: a complexidade das operações associadas a qualquer macroinstrução é uma função direta do tamanho do microprograma cuja execução é disparada pela macroinstrução. • A Unidade de Controle de um microprocessador nada mais é do que um microprograma. Se o usuário for capaz de criar ou modificar o microprograma dentro da Unidade de Controle, então o microprocessador será microprogramável. • Os microprocessadores que permitem acesso à CPU mas não à Unidade de Controle, pode-se seqüencializar a lógica da CPU utilizando-se macroinstruções , chamadas coletivamente conjunto de instruções da linguagem assembly. Arquitetura e Organização de Computadores 15 Arquitetura e Organização de Computadores 16 Seleção do fluxo de dados quando C0=1 ou C1=1 Sinal C0 C1 C2 C3 C4 C5 C6 C7 C8 Write/ Read φ C, P, S, Z Função C0=0 C1=0 Nenhum dado é transferido de (ou para) a barra de dados nem para o registro de endereços. C0=1 C1=0 Dados movidos para a barra de dados ou registro de endereços. C0=0 C1=1 Dados movidos da barra de dados em registro de endereços C0=1 C1=1 Microinstrução será abortada na UC Quando C0=1 C1=0 ou C0=0 C1=1 estes quatro sinais são decodificados para selecionar o fluxo específico de dados. Estes três sinais são decodificados para selecionar as operações da ULA Conexões diretas dos pinos de saída para dois bits da UC Sinal de clock recebido pela Unidade de Controle Quatro bits de estado (flags) conectados a quatro bits de dados da UC Arquitetura e Organização de Computadores 17 C5 C4 C3 C2 Função 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 Acumulador ⇔ barra de dados Byte alto do contador de dados ⇔ barra de dados selecionada Byte baixo do contador de dados ⇔ barra de dados selecionada Byte alto do contador programa ⇔ barra de dados selecionada Byte baixo do contador programa ⇔ barra de dados selecionada Registro de instrução ⇔ barra de dados selecionada Registro de estado ⇔ barra de dados selecionada Deslocador ⇔ barra de dados selecionada Complementador ⇔ barra de dados selecionada Armazenadores da ULA ⇔ barra de dados selecionada Buffer da ULA ⇔ barra de dados selecionada Registro de dados ⇔ barra de dados selecionada Contador de dados ⇔ registro de endereços selecionado Contador de programa ⇔ registro de endereços selecionado Registro de dados ⇔ registrador buffer Não utilizado Arquitetura e Organização de Computadores 18 3 Sinais de seleção da ULA • Os sinais descritos nas tabelas não permitem que a (UC) realize todas as operações necessárias ao suporte de instruções em linguagem Assembly. • Nada foi dito como os sinais de controle READ / WRITE são gerados, ou como os flags de estado são manuseados. • Em relação aos sinais C 0 e C 1 , , se ambos forem iguais a 1; esta condição torna-se impossível de ser implementada, pois especifica a transferência de dados para as barras e das barras (nos dois sentidos) simultâneamente. C8 C7 C6 Função 0 0 0 Seleciona lógica do Deslocador 1 0 0 Seleciona lógica do Complementador 0 1 0 Seleciona lógica do Somador * 1 1 0 Seleciona lógica de AND (E) * 0 0 1 Seleciona lógica de OR (OU)* 1 0 1 Selciona lógica de XOR (OU-EXCLUSIVO)* 0 1 1 Incrementa armazenadores da ULA 1 1 1 Nenhuma operação da ULA * A operação é realizada com o conteúdo dos armazenadores (LATCHES) da ULA e o Registrador Buffer. O resultado aparece nos armazenadores da ULA (ou LATCHES DA ULA) Arquitetura e Organização de Computadores 19 • Se C 0 e C 1 forem ambos 1, os sinais restantes de C 2 a C 8 serão interpretados como especificando as seguintes classes de operações internas especiais à (UC). Arquitetura e Organização de Computadores C8 C7 C6 C5 C4 C3 0 C2 C1 1 Arquitetura e Organização de Computadores 1 Pula próxima microinstrução se estado = 1 1 = Especifica condições de estado do buffer de dados da UC 0 = Especifica configuração do estado da ULA Z S P 1 = Selecionado o estado, e deve ser testado para configuraçào de 1 0 = Não testa este estado C 21 3. Se C 2 e C 3 são 0 e 1; então a lógica da condição 2 descrita será repetida. Entretanto os flags de estado correspondente serão testados para o valor 0 como condição para pular a próxima microinstrução. 4. Se C 2 , C 3 e C 4 forem 1, 0 e 0 respectivamente, então C 5 , C 6 , C 7 e C 8 especificarão o estado de quatro sinais de controle que a unidade de controle deve colocar nos pinos de saída do chip. Assuma que C 8 especifica a condição do READ e C 7 a condição do WRITE. Esta condição pode ser ilustrada da seguinte maneira: C0 1 1. Se C 2 a C 8 estão todos em 0, então os flags de estado Z, S, P e C na ULA terão suas condições gravadas no buffer de dados da (UC). 2. Se C 2 e C 3 estão em 1, então C 5 , C 6 , C 7 e C 8 serão interpretados como correspondendo aos estados de Z, S, P e C respectivamente. Se C 4 for 0, são referenciadas as condições de estado na ULA; se C 4 for 1, são referenciadas as condições de estado armazenadas no buffer de dados da UC. C 5 , C 6 , C7 e C 8 serão testados para valor 1. Se for encontrado um 1, então o estado correspondente será testado. Se o estado correspondente tiver também o valor 1, então a próxima microinstrução não será executada. Esta utilização pode ser ilustrada da seguinte maneira: 20 Arquitetura e Organização de Computadores C8 C7 C6 C5 C4 0 C3 0 C2 1 22 C1 C0 1 1 Envia sinais de controle Não especificado Não especificado WRITE assume valor deste bit READ assume valor deste bit Arquitetura e Organização de Computadores 23 Arquitetura e Organização de Computadores 24 4 • Vamos criar alguns microprogramas. O primeiro a ser criado vai ser para a busca de uma instrução. • Vale lembrar que toda a execução de instrução começa com uma busca de instrução; portanto o microprograma de busca de instrução deve preceder qualquer outro microprograma que implemente a execução de uma instrução. • O microprograma da UC não representa dados numéricos ou códigos de instrução, portanto o número de bits da microinstrução é escolhido de acordo com a necessidade de projeto. Arquitetura e Organização de Computadores 66,7 nanosegundos. 15o • Se durante o passo do microprograma de busca de instrução, o código for carregado no registro de instrução por um código de instrução de complemento do Acumulador, então a lógica da unidade de controle irá desviar-se para a execução do seguinte microprograma: 27 C8 C7 C6 C5 C4 C3 C2 C1 C0 Função (a) Carrega a parte baixa do contador de dados 1 . . 14 15 Repete as microinstruções de 1 a 14 da busca de instrução 1 1 1 0 1 0 0 1 0 Move barra de dados para parte alta do contador de dados (b) Carrega parte alta do contador de dados 1 Repete as microinstruções de 1 a 14 da busca de instrução . . 14 15 Move barra de dados para parte baixa do 1 1 1 1 0 0 0 1 0 contador de dados (c) Carrega conteúdo da palavra de memória de dados endereçada para o acumulador Move contador de dados para registro de 1 1 1 1 0 0 1 1 0 1 endereços Coloca sinal de READ em verdade e WRITE 2 1 0 0 0 1 0 1 1 1 em falso Inclui 12 operações nulas para dar tempo à 1 1 1 0 0 0 0 0 0 3 lógica externa para buscar o dado . . 15 16 1 1 1 1 1 1 1 0 1 0 0 0 1 0 0 1 1 0 Move registro de dados p/ barra dados Move barra dados p/ acumulador Arquitetura e Organização de Computadores C8 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 C7 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 C6 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 C5 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 C4 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 C3 1 0 1 0 1 0 1 0 0 1 1 0 0 0 1 C2 1 1 0 1 1 1 0 0 1 1 1 1 0 1 0 C1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 C0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 Função Move PC para o registro de endereços Coloca READ (T) e WRITE (F) Move byte baixo do PC p/ barra dados Move barra de dados p/ latches da ULA Incrementa os latches da ULA Move latches da ULA p/ barra dados Move barra dados p/ byte baixo do PC Move byte alto do PC p/ barra dados Move barra de dados p/ latches da ULA Pula a próxima instrução se carry=0 Incrementa os latches da ULA Move latches da ULA p/ barra dados Move barra dados p/ byte alto do PC Move registro de dados p/ barra dados Move barra dados p/ registro de Instrução Arquitetura e Organização de Computadores 26 Microprograma de complemento do acumulador Núm Instr 1 2 3 4 5 C8 1 1 1 1 1 C7 1 1 0 1 1 C6 1 1 0 1 1 C5 0 0 1 0 0 C4 0 0 1 0 0 C3 0 0 1 0 0 C2 0 1 1 1 0 C1 0 1 0 0 1 C0 1 0 0 1 0 Função Move acumulador para barra de dados Move barra de dados para complementador Executa lógica do complementador Move complementador para barra de dados Move barra de dados para acumulador • Embora as 5 microinstruções acima possam ser executadas em 312.5 nanossegundos, a sincrronização do sistema exige no mínimo um período de clock para a execução de instruções; portanto o tempo que sobra é desperdiçado. Arquitetura e Organização de Computadores 28 Considerações Finais Leitura de Memória em 3 instruções Núm Instr Núm Instr 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 25 • A seqüência de 15 microinstruções que são executadas durante a busca de uma instrução, é executada em apenas um período de clock. Por exemplo: se o clock tem um período de 1seg, cada microinstrução será executada em Arquitetura e Organização de Computadores Microprograma de busca de instrução: 29 • Qual o número máximo ou mínimo de eventos lógicos que constituem uma instrução? – Depende da complexidade da instrução. Quanto mais complexa a instrução mais eventos lógicos estão associados. • O que ocorre dentro de uma CPU durante a execução de uma instrução? – Ocorre uma seqüência de eventos lógicos, disparados pela Unidade de Controle sob a forma de sinais de controle, associados às microinstruções. • Qual o suporte lógico necessário à CPU? – Registros especiais, lógica de geração de sinais de controle e lógica de seqüencialização de microinstruções. Arquitetura e Organização de Computadores 30 5