Lógica Externa à CPU Prof. Eduardo Appel Eng.MSc. appel@upf.tche.br Interfaceamento de memória Transferência de dados E/S programada E/S por interrupção Acesso direto à memória DMA Transferência de Dados A transferência de dados entre a lógica que faz parte do sistema do microcomputador e a lógica que está fora do sistema do microcomputador é chamada de ENTRADA/SAÍDA. Função da lógica de E/S: deve conter provisões para transferência de dados, mais os sinais de controle que identificam os eventos à medida que ocorrem. Maneiras para realizar uma transferência de dados: E/S programada; E/S por interrupção; Acesso Direto à Memória; 1 2 A maioria dos microprocessadores possui um sinal de controle por meio do qual a lógica externa pode exigir a atenção do microprocessador. Este sinal é chamado pedido de interrupção. Situação: sistema de microcomputador usado para controlar a temperatura de uma torneira. Programas envolvidos: AJUSTA (controla o fluxo de água quente), GRAVA (recebe dados do sensor de temperatura e interpreta estes dados para que representem a leitura de temperatura) Esquema da memória: 3 4 1
Esquema que permite o sensor de temperatura atrair a atenção do microprocessador: O sensor de temperatura envia um sinal de pedido de interrupção (INTERRUPT REQUEST - IREQ) ao microprocessador por meio de uma linha de controle da barra externa do sistema; O microprocessador tem a escolha de aceitar ou rejeitar um pedido de interrupção, gerando um sinal de reconhecimento de interrupção (INTERRUPT ACKNOWLEDGE - IACK) numa linha de controle da barra externa do sistema; O dispositivo externo usa o sinal de reconhecimento de interrupção como um habilitador (ENABLE), fazendo-o transmitir dados para a porta de E/S. O objetivo de qualquer interrupção é avisar ao microprocessador que ele precisa, por algum motivo, suspender tudo aquilo que estiver fazendo. O que acontece com os programas GRAVA e AJUSTA? 5 6 O que acontece com o programa que estava sendo executado? O programa antigo pode ter informações importantes nos flags de estado, no contador de dados, no acumulador, contador de programa. Estes dados serão destruídos com a execução do novo programa. Deve-se salvar o conteúdo de todos os registradores da CPU. Quando o programa novo termina sua execução, o valor salvo no PC é o endereço da instrução que iria ser executada quando o programa antigo foi interrompido. O que acontece com o programa que estava sendo executado?. 7 8 2
Onde o microprocessador pega o endereço do programa, o qual a lógica que interrompeu deseja que seja executado? Este endereço é denominado vetor de endereço de interrupção A cada vez que a UC recebe um pedido de interrupção (IREQ) e está pronta para atendê-lo, faz o seguinte: Envia o sinal de reconhecimento de interrupção (IACK) Salva o conteúdo dos Flags de Estado, do acumulador, do contador de dados e do contador de programa, ou permite ao programador fazê-lo Move o conteúdo do vetor de endereço de interrupção para o PC Representação interna do reconhecimento de interrupção 9 10 O que acontece se mais de um dispositivo externo solicitar um pedido de interrupção? A rotina de tratamento de interrupção terá que executar uma lógica apropriada para determinar qual dos dispositivos externos pediu a interrupção. Forma de implementação: todo dispositivo externo deve possuir um registro de estado. Neste registro deve ser setado um bit apropriado ao receber um reconhecimento de interrupção. O microprocessador lerá o registro de estado de todos os dispositivos externos para determinar qual recebeu o reconhecimento de interrupção. Polling: define-se como uma varredura feita pelo microprocessador nos dispositivos externos para descobrir através da leitura do registro de estado de cada um deles, se algum pediu uma interrupção ou se está disponível para transmissão/recepção de dados. 11 12 3
O método de identificação de pedido de interrupção por Polling é considerado obsoleto. O método mais popular de se identificar um dispositivo externo que pediu interrupção é ter o próprio dispositivo se identificando, transmitindo um número de identificação ou o próprio vetor de endereço de interrupção, após o reconhecimento de interrupção. Se o dispositivo que pediu interrupção transmitir um número de identificação, então o microprocessador usará este número para computar de alguma maneira o vetor de endereço de interrupção. O número de identificação é chamado código de seleção do dispositivo. O que acontece quando mais de um dispositivo externo pede uma interrupção ao mesmo tempo? Deverá existir um mecanismo de atribuir prioridades às interrrupções. 13 14 Esquema temporal de interrupções simultâneas. Acesso Direto à Memória (DMA) O DMA permite transferir dados entre as portas de E/S e a memória de forma mais rápida. O controlador de DMA toma o controle da barra externa do sistema e gera os sinais apropriados para realizar a transferência dos dados Controlador de DMA: desabilita o microprocessador e passa a simulá-lo. O controlador de DMA pode manipular o sinal de clock do microprocessador, ou poderá forçar o microprocessador a marcar tempo e flutuar suas conexões. 15 16 4
Acesso Direto à Memória (DMA) Acesso Direto à Memória (DMA) O controlador ADM deve desconectar o microprocessador da barra externa do sistema; mas também precisa forçar o microprocessador a marcar tempo. 17 18 Controlador de DMA genérico Registro de endereço:contém o endereço da próxima palavra de memória que será acessada, seja para leitura ou para escrita. Registro contador: contém o número de posições contíguas de memória que restam ser preenchidas durante uma operação de escrita, ou de onde os dados serão lidos numa operação de leitura. Registro de controle: identifica a direção do fluxo de dados. Inicia, para e controla as operações de DMA. Registro de estado: identifica o estado de qualquer operação DMA em processo 19 Considere os registros de um controlador DMA com os seguintes valores: Registro de Endereço: 0080 Registro Contador: 007F Registro de Controle: 03 Este exemplo especifica que um buffer de dados de 7FH bytes de extensão e originado na posição de memória 0080H deve ser preenchido com dados de um dispositivo externo usando-se acesso direto à memória. 20 5
Registro de controle: Colocando-se o valor 03H no registro de controle, é especificado que os dados serão enviados por um dispositivo externo, e a lógica de DMA é ativada. Para inicializar uma operação de DMA, o programa executado pelo microprocessador deverá realizar os seguintes passos: Transmitir um endereço de memória inicial para o Registro de Endereço do controlador de DMA. Transmitir uma contagem de palavras de memória para o Registro Contador do controlador de DMA. Transmitir um código de controle para o Registro de Controle. O código de controle deve identificar a direção da transferência de dados e deve ligar o dispositivo de DMA. 21 22 Formas de finalização de uma operação DMA: 23 24 6