Organização de Computadores Aula 28 Operação da Unidade de Controle Rodrigo Hausen 17 de novembro de 2011 http://cuco.pro.br/ach2034 Rodrigo Hausen - OCD 1/44 Apresentação 1. Bases Teóricas ● 2. Organização de computadores – ... – 2.6. Conjunto de Instruções – 2.7. Estrutura e Função da CPU – 2.8. Operação da Unidade de Controle – 2.9. Controle Microprogramado ● ● Aula de hoje: Stallings (5a. Edição), Capítulo 14 Rodrigo Hausen - OCD 2/44 Microoperações Execução de programa: sequência de ciclos de instrução (fetch-decode-execute-store) Cada ciclo tem diversos passos, as microoperações: ● ● – – – – – – ● ● Busca instrução: MAR←PC, MBR←Mem[MAR], IR←MBR, PC←PC+1 Decodificação instrução: depende do conteúdo do IR Cálculo endereço(s) de operando(s): MAR←calcula endereço a partir do IR, etc. Busca operando(s): MBR←Mem[MAR], Reg←MBR, etc. Executa instrução: depende da instrução Cálculo endereço(s) de operando(s) destino, etc. Cada passo é muito simples (por isso, o micro-) Passos indivisíveis: operações atômicas da CPU Rodrigo Hausen - OCD 3/44 Elementos da Execução de um Programa Execução de Programa Rodrigo Hausen - OCD 4/44 Elementos da Execução de um Programa Execução de Programa Ciclo de Instrução Rodrigo Hausen - OCD 5/44 Elementos da Execução de um Programa Execução de Programa Ciclo de Instrução Rodrigo Hausen - OCD Ciclo de Instrução 6/44 Elementos da Execução de um Programa Execução de Programa Ciclo de Instrução Rodrigo Hausen - OCD Ciclo de Instrução Ciclo de Instrução 7/44 Elementos da Execução de um Programa Execução de Programa Ciclo de Instrução Rodrigo Hausen - OCD Ciclo de Instrução Ciclo de Instrução 8/44 Elementos da Execução de um Programa Execução de Programa Ciclo de Instrução Busca Rodrigo Hausen - OCD Ciclo de Instrução Proc.Indireção Execução Ciclo de Instrução Proc. Interrup. 9/44 Elementos da Execução de um Programa Execução de Programa Ciclo de Instrução Busca μOP μOP Rodrigo Hausen - OCD μOP Ciclo de Instrução Proc.Indireção μOP Execução Ciclo de Instrução Proc. Interrup. μOP 10/44 Busca de Instrução: 4 registradores Memory Address Register (MAR) – Conectado ao barramento de endereço do sistema – Especifica o endereço para a operação de leitura ou escrita ● Memory Buffer Register (MBR) – Conectado ao barramento de dados do sistema – Armazena os dados recém-lidos ou a serem escritos ● Program Counter (PC) – Armazena o endereço da próxima instrução a ser lida ● Instruction Register (IR) – Armazena a última instrução lida ● Rodrigo Hausen - OCD 11/44 Sequência de Busca ● ● ● ● ● ● ● ● Endereço da próxima instrução está no PC Endereço (MAR) é colocado no barramento do sistema Unidade de Controle envia comando de leitura p/ mem. Resultado (dado da memória) aparece no barr. de dados Dado do barramento de dados é colocado no MBR PC incrementado de 1 (pode ser feito em paralelo com leitura de dado da memória) Dado (instrução) copiado do MBR ao IR MBR está livre para outras operações Rodrigo Hausen - OCD 12/44 Sequência de Busca usando RTN ● RTN = Register Transfer Notation = Notação de Transferência de Registrador t1: MAR ← PC t2: MBR ← Memória[MAR], PC ← PC +1 t3: IR ← MBR ● tx = unidade de tempo/ciclo do clock Rodrigo Hausen - OCD 13/44 Sequência de Busca usando RTN ● RTN = Register Transfer Notation = Notação de Transferência de Registrador t1: MAR ← PC t2: MBR ← Memória[MAR], PC ← PC +1 t3: IR ← MBR OU t1: MAR ← PC t2: MBR ← Memória[MAR] t3: PC ← PC +1, IR ← MBR Rodrigo Hausen - OCD 14/44 Regras para Agrupamento de Microoperações 1) Sequência apropriada deve ser seguida – MAR ← PC deve preceder MBR ← Memória[MAR] 2) Conflitos devem ser evitados – Não pode escrever e ler o mesmo registrador ao mesmo tempo ex. MBR ← Memória[MAR] e IR ← MBR não podem estar no mesmo ciclo Observe também: PC ← PC+1 envolve adição. Pode usar a ULA, ou pode ser feita por um circuito independente. Algumas operações da ULA podem necessitar de microoperações adicionais (p. ex. multiplicação de números em ponto flutuante) ● – – Rodrigo Hausen - OCD 15/44 Subciclo de Proc. End. Indireto n-1 IR opcode x y y-1 end. indireto operando 1 end. indireto operando 2 z k 0 end. indireto operando N t1: MAR ← IRx … IRy (campo de endereço do IR) t2: MBR ← Memória[MAR] t3: IRx … IRy ← MBRendereço (parte do MBR contendo end.) ● MBR conterá um endereço ● IR está agora no mesmo estado caso estivéssemos usando endereçamento direto ● Consequência: geralmente, campos de endereço do IR precisam ter tamanho suficiente para endereçar diretamente toda a memória principal. Rodrigo Hausen - OCD 16/44 Subciclo de Proc. Interrupção Executado após o subciclo execute/store. ● Primeiramente, verifica se ocorreu interrupção. Se ocorreu, executa as seguintes microoperações: t1: MBR ← PC t2: MAR ← End. de Salvamento, PC ← End. do handler t3: Memória[MAR] ← MBR ● End. de salvamento geralmente é topo da pilha (em SP). Neste caso, necessita de mais uma microop SP ← SP − 1 ● Isto é o mínimo indispensável: – podem ser necessárias microoperações adicionais para obter o endereço do handler – N.B. salvar o resto do contexto é atribuição do handler de interrupção, não das microoperações. ● Rodrigo Hausen - OCD 17/44 Subciclo de Execução: Exemplo 1 ● As microoperações no subciclo de execução variam muito de instrução para instrução. Rodrigo Hausen - OCD 18/44 Subciclo de Execução: Exemplo 1 ● ● As microoperações no subciclo de execução variam muito de instrução para instrução. Para a instrução ADD R1, X – adiciona conteúdo da po-sição de memória X ao registrador R1, resultado em R1. t1: MAR ← IRendereço (campo de endereço do IR) t2: MBR ← Memória[MAR] t3: R1 ← R1 + MBR (por meio da ULA) Rodrigo Hausen - OCD 19/44 Subciclo de Execução: Exemplo 1 ● ● ● As microoperações no subciclo de execução variam muito de instrução para instrução. Para a instrução ADD R1, X – adiciona conteúdo da po-sição de memória X ao registrador R1, resultado em R1. t1: MAR ← IRx … IRy (campo de endereço do IR) t2: MBR ← Memória[MAR] t3: R1 ← R1 + MBR (por meio da ULA) Note que, neste caso, não pode haver sobreposição das microoperações Rodrigo Hausen - OCD 20/44 Subciclo de Execução: Exemplo 1 ● ● ● ● As microoperações no subciclo de execução variam muito de instrução para instrução. Para a instrução ADD R1, X – adiciona conteúdo da po-sição de memória X ao registrador R1, resultado em R1. t1: MAR ← IRx … IRy (campo de endereço do IR) t2: MBR ← Memória[MAR] t3: R1 ← R1 + MBR (por meio da ULA) Note que, neste caso, não pode haver sobreposição das microoperações Observe que a operação de soma depende da organização interna da ULA. P. ex. em uma ULA que possui um registrador de saída RULAout: t3: RULAout ← R1 + MBR t4: R1 ← RULAout Rodrigo Hausen - OCD 21/44 Subciclo de Execução: Exemplo 2 ● ISZ X – Increment and Skip if Zero (incremente o conteúdo da posição de memória X e pule próxima instrução se result. da última operação foi zero) t1: MAR ← IRendereço t2: MBR ← Memória[MAR] t3: MBR ← MBR+1 t4: Memória[MAR] ← MBR, IF (MBR == 0) then PC ← PC + 1 ● ● Ação condicional: a UC verifica e, caso a condição seja verdadeira, executa a ação (incrementar o PC) em uma única microooperação Como MBR só está sendo lido no if e na cópia do seu valor para a memória, pode haver sobreposição. Rodrigo Hausen - OCD 22/44 UC: Requisitos funcionais ● ● Após decompor o ciclo de instrução em operações elementares, precisamos definir o que a Unidade de Controle deve fazer para que elas sejam seguidas. Três passos para caracterizar a UC: 1) Definir os elementos básicos do processador 2) Descrever as microoperações que o processador executa 3) Determinar as funções que a UC deve realizar para que as microoperações sejam seguidas Rodrigo Hausen - OCD 23/44 Passo 1: Elementos Básicos do Processador ● Minimamente: ● ULA ● Registradores ● Caminhos de dados internos ● Caminhos de dados externos ● Unidade de Controle Rodrigo Hausen - OCD 24/44 Passo 2: Tipos de Microoperações ● Pelos exemplos vistos anteriormente, é suficiente categorizar as microoperações em: 1)Transferência de dado entre registradores 2)Transferência de dado de registrador para o exterior (p. ex. barramento do sistema) 3)Transferência de dado do exterior para registrador 4)Execução de operação lógica ou aritmética, usando registradores como fonte e destino. Rodrigo Hausen - OCD 25/44 Passo 3: Funções da Unidade de Controle ● ● ● ● Duas tarefas básicas. Sequenciamento: – Faz com que a CPU siga as microoperações passo a passo Execução – Executa, efetivamente, cada microoperação Regidas e executadas por meio de sinais de controle. Rodrigo Hausen - OCD 26/44 Sinais de Controle Clock – Uma microoperação (ou conjunto de microoperações simultâneas) por ciclo de clock. ● do Registrador de Instrução – Opcode da instrução atual – Determina quais microinstruções executar e sua ordem ● Flags – Estado da CPU – Resultados de operações anteriores ● do Barramento de Controle – Interrupções – Reconhecimento de sinais de controle originários da CPU (acknowledgments) ● Rodrigo Hausen - OCD 27/44 Sinais de controle para componentes internos à CPU Unidade de Controle Sinais de controle do barramento do sistema Barramento de Controle Modelo de uma UC Sinais de controle para barramento do sistema Rodrigo Hausen - OCD 28/44 Sinais de Controle – Saída ● ● Dentro da CPU – Causam movimento de dados – Activam funções específicas Através do barramento de controle do sistema – Para a memória principal – Para módulos de entrada/saída Rodrigo Hausen - OCD 29/44 Controle de Leitura/Escrita ● ● As operações de leitura/escrita em registradores podem ser pensadas como operações de “abertura” e “fechamento” de portas (gates). Um registrador tem 2 gates, um de saída (leitura) e um de entrada (escrita). Rwrite Rread R ● A operação (leitura/escrita) pode ser controlada por meio de sinais nos gates. Rodrigo Hausen - OCD 30/44 Controle de Leitura/Escrita ● ● As operações de leitura/escrita em registradores podem ser pensadas como operações de “abertura” e “fechamento” de portas (gates). Um registrador tem 2 gates, um de saída (leitura) e um de entrada (escrita). 1 = Rwrite Rread = 0 R escrita no registrador ● A operação (leitura/escrita) pode ser controlada por meio de sinais nos gates. Rodrigo Hausen - OCD 31/44 Controle de Leitura/Escrita ● ● As operações de leitura/escrita em registradores podem ser pensadas como operações de “abertura” e “fechamento” de portas (gates). Um registrador tem 2 gates, um de saída (leitura) e um de entrada (escrita). 0 = Rwrite Rread = 1 R leitura do registrador ● A operação (leitura/escrita) pode ser controlada por meio de sinais nos gates. Rodrigo Hausen - OCD 32/44 Controle de Leitura/Escrita ● ● As operações de leitura/escrita em registradores podem ser pensadas como operações de “abertura” e “fechamento” de portas (gates). Um registrador tem 2 gates, um de saída (leitura) e um de entrada (escrita). 0 = Rwrite Rread = 0 R registrador desabilitado ● A operação (leitura/escrita) pode ser controlada por meio de sinais nos gates. Rodrigo Hausen - OCD 33/44 Organização Interna da CPU ● ● ● ● Geralmente, um único barramento interno Os gates controlam o movimento de dados de/para o barramento interno Sinais de controle controlam a transferência de dados de/para o barramento do sistema Registradores temporários para o funcionamento adequado da ULA: RULAin e RULAout (obs.: na figura 14.6 são os registradores Y e Z) Rodrigo Hausen - OCD 34/44 CPU com Barramento Interno Único Rin ULA Rout Rodrigo Hausen - OCD 35/44 Sequência de Sinais de Controle: Exemplo Busca de instrução: ● t1: MAR ← PC – UC abre gate de leitura do PC e gate de escrita do MAR Rin ULA Rout Rodrigo Hausen - OCD 36/44 Sequência de Sinais de Controle: Exemplo Memory READ Busca de instrução: t1: MAR ← PC – UC abre gate de leitura do PC e gate de escrita do MAR ● t2: MBR ← Memória[MAR] – UC abre gate de leitura do MAR, gate de escrita do MBR p/ barr. do sistema e manda comando de leitura para memória ● Rin ULA Rout Rodrigo Hausen - OCD 37/44 Sequência de Sinais de Controle: Exemplo Busca de instrução: t1: MAR ← PC – UC abre gate de leitura do PC e gate de escrita do MAR ● t2: MBR ← Memória[MAR] – UC abre gate de leitura do MAR, gate de escrita do MBR p/ barr. do sistema e manda comando de leitura para memória ● t3: IR ← MBR – UC abre gate de leitura do MBR p/ barr. interno e gate de escrita do IR ● Rodrigo Hausen - OCD Rin ULA Rout 38/44 UC calcula Funções Lógicas! Cada sinal de controle é função lógica dos bits do IR, das flags, e do tempo de execução atual (um número binário que depende do clock) Sinais de controle para componentes internos à CPU Unidade de Controle contador Rodrigo Hausen - OCD Sinais de controle do barramento do sistema Sinais de controle para barramento do sistema Barramento de Controle ● 39/44 Controle Hardwired ● ● ● ● Como cada sinal de controle é função lógica variáveis booleanas, podemos criar circuitos digitais combinacionais que calculem essas funções lógicas. Essa abordagem usando apenas circuitos digitais, não reprogramáveis, é chamada “hardwired” Entradas: bits do barramento de controle, flags, registrador de instrução, bits do gerador de temporização (um contador binário que tem como entrada o clock) Saídas: sinais binários de controle para os gates dos registradores, para a ULA, e para as linhas de controle do barramento do sistema. Rodrigo Hausen - OCD 40/44 Controle Hardwired: Entradas ● ● ● Flags e bits do barramento de controle – Cada bit tem um significado Registrador de Instrução (IR) – Opcode causa sinais de controle diferentes para cada instrução – Lógica diferente para cada opcode – Geralmente, a lógica é facilitada colocando-se um decodificador entre o IR e a UC – decodificador: n bits de entrada e 2n bits de saída Clock – Coloca-se um contador entre o clock e a UC (chamado gerador de temporização) Rodrigo Hausen - OCD 41/44 UC com Entradas Decodificadas Flags and control bus signals Rodrigo Hausen - OCD 42/44 Controle Hardwired: Problemas Lógica complexa de sequenciamento e de implementação das microoperações Difícil de projetar e de testar Projeto inflexível ● ● ● – Dificuldade de implementar novas instruções ● – ● E se houver um erro de projeto? Só pode ser corrigido alterando-se o circuito! Como geralmente hoje os circuitos são integrados (sem possibilidade de alterá-los), o único jeito de corrigir um erro seria trocar o processador Seria necessário trocar o processador. E se pudéssemos programar as microoperações? – Yes, we can! Isso se chama controle microprogramado. Rodrigo Hausen - OCD 43/44 Para Casa ● ● ● ● Ler o capítulo 14 (a subseção sobre o Intel 8085 é para ser lida como cultura geral, para fixar os conceitos) Exercícios: fazer do 14.1 ao 14.5 (todos os exercícios do capítulo na 5a. edição) Fazer leitura de familiarização do cap. 15 (próxima aula) LEMBREM DE PREPARAR A FOLHA DE CONSULTA PARA A P2! Vejam as condições nos slides da aula 27. Rodrigo Hausen - OCD 44/44