ENTRADA E SAÍDA DE DADOS Os dispositivos de um computador compartilham uma única via de comunicação BARRAMENTO. BARRAMENTO Elétrica/Mecânica + Protocolo. GERENCIAMENTO DE E/S O controle da troca de dados entre dois dispositivos pode ser feito basicamente de três formas: E/S programada (polling): o processador é responsável por determinar o estado do dispositivo, enviar os comandos de leitura ou escrita e por monitorar o término da transferência. E/S controlada por interrupção: o processador envia um comando de E/S e continua a executar outras instruções. O processador é interrompido pelo módulo de E/S quanto este tiver completado seu trabalho e transfere os dados para a memória. Acesso direto à memória (DMA): a transferência dos dados para a memória é controlada por um dispositivo especializado, sem envolver o processador.
E/S PROGRAMADA (POLLING) O processador envia um comando de E/S para o dispositivo. O processador fica monitorando o término da operação através do registrador de estado do dispositivo. O dispositivo sinaliza o término da operação carregando um valor apropriado no registrador de estado. O processador transfere o dado para a memória. E/S POR INTERRUPÇÃO E/S POR INTERRUPÇÃO O processador envia uma comando de E/S para o dispositivo, mas não fica monitorando o seu término. O processador continua a executar outras instruções enquanto o dispositivo realiza a operação de E/S. Após cada ciclo de instrução o processador verifica se existe alguma interrupção pendente. Ao terminar a tarefa, o dispositivo de E/S sinaliza (interrompe) o processador. O processador transfere o dado para a memória.
ACESSO DIRETO À MEMÓRIA (DMA) E/S programada e controlada por interrupção toda transferência de dados passa pelo processador. A técnica mais eficiente para a transferência de grandes volumes de dados é o DMA. É utilizado um circuito específico, chamada Controlador de DMA O Controlador realiza a transferência dos dados enquanto a CPU executa outras instruções. Ao terminar, o controlador interrompe a CPU. INTERRUPÇÕES As interrupções são um mecanismo que permite a um programa ou dispositivo externo interromper o fluxo normal de outro programa. A geração da interrupção pode ocorrer por software (interrupção de software) ou hardware (interrupção de hardware). Sistema Operacional Rotina p/ tratamento da Interrupção Controlador de Interrupção Interrupção por software Interrupção por hardware Requisição do Programa Hardware
CICLO DE INSTRUÇÕES DA CPU Interrupção INTERRUPÇÕES suspende a execução do programa normal e grava o estado do processador (PSW, CS e IP). Após a interrupção uma ISR (rotina de processamento da interrupção) é INTERRUPÇÃO chamada: para uma interrupção de hardware ISR a ISR comunica-se com o dispositivo e processa os dados retorna para o programa que executava quando ocorreu a interrupção para uma interrupção de software interrompe o programa e chama a ISR Redespachador restaura o estado anterior e retoma o processamento do programa anterior.
INTERRUPÇÃO DE HARDWARE Na família de PCs existem dois tipos de interrupções de hardware: interrupções MASCARÁVEIS (IRQs) e NÃO-MASCARÁVEIS. Uma interrupção é dita mascarável quanto ela pode ser desabilitada. As CPUs da Intel oferecem dois pinos que lidam com estas interrupções: INTR (Interrupt Request) para mascaráveis e NMI (Non Maskable Interrupts) para as não mascaráveis. As NMIs são usadas para alertar sobre situações catastróficas: erro de paridade na memória; erro de coprocessador (até 286); erro no canal de I/O (barramento ISA); erro ativado por dispositivos PCI (*SERR). INTERRUPÇÃO DE HARDWARE As interrupções mascaráveis (IRQs) são geradas pelos dispositivos de entrada e saída para sinalizar ao processador a conclusão de tarefas. Os processadores da Intel possuem apenas 1 linha de sinalização de interrupção, denominada INTR. Para possibilitar a ligação de vários dispositivos ao processador são utilizados dois circuitos Controladores de Interrupções Programáveis (PIC). Assim, é possível controlar até 16 IRQs diferentes.
INTERRUPÇÃO DE HARDWARE As IRQs possuem prioridades programáveis. A programação dos controladores é feita pela BIOS. Em geral as IRQs mais baixas possuem maior prioridade. Cada IRQ é associada a um evento de hardware e direciona para uma rotina de tratamento diferente. Recebe os pedidos de interrupção em um banco de 8 latches - IRR; O IMR é programado para habilitar ou desabilitar os pedidos de int. O resolutor de prioridades identifica qual interrupção deve ser atendida. A interrupção é enviada ao ISR para ser repassada à CPU. PIC BÁSICO
INTERRUPÇÃO DE HARDWARE A Intel reservou como pré-definidas as interrupções de 0 a 31. Entretanto, no projeto do 8086 foram utilizadas somente as de número 0 a 4. int 00 Divisão por 0 int 01 Execução passo a passo int 02 NMI Non maskable interrupt int 03 Breakpoint int 04 Overflow As interrupções não pré-definidas são as IRQs. TABELA DE VETORES DE INTERRUPÇÃO Vetores de Interrupção processador em modo-real são registros de endereços que informam à CPU onde encontrar as ISR; às interrupções são atribuídas um número de 0 a 255; os vetores de interrupção associados com cada número de interrupção são guardados na parte baixa da memória (os primeiros 1024 bytes) do PC, ocupando 4 bytes cada (int-0 0000:0000 à 0000:0003); a cada interrupção é associada uma tarefa predeterminada (ver tabela); no modo protegido, o endereço de cada sobrotina de tratamento é obtido diretamente, multiplicando-se o número da interrupção por 4.
TABELA DE VETORES DE INTERRUPÇÃO TRATAMENTO DAS INTERRUPÇÕES Quando ocorre uma interrupção de hardware o processador precisa determinar qual trecho de código lida com aquele hardware e iniciar a sua execução. Portanto, o tratamento de uma interrupção é simplesmente o processo de determinar o endereço de memória em que se localiza o código que lida com aquele hardware.
INTERRUPÇÃO DE SOFTWARE É a interrupção de um programa aplicativo que transfere controle para o kernel quando ele necessita executar funções de baixo-nível (kernel level) nas máquinas Intel ocorre quando o aplicativo executa uma instrução INT-n (16-39); esta instrução é formada por dois bytes: o primeiro contém o código da operação INT e o segundo o número da interrupção a ser executada; o nível de privilégio das interrupções de software é mais baixo dos que das de hardware (as interrupcões de hardware são mais importantes) No DOS a interrupção de software é executada pelo BIOS INTERRUPÇÕES NO MODO PROTEGIDO As CPUs que trabalham em modo protegido (80286 e posteriores) possuem um interação muito grande com o sistema operacional. O tratamento de interrupções nestes casos é realizado em parte pelo Sistema Operacional e em parte pelo processador. A identificação da rotina que trata as interrupções é feita através de uma Tabela de Descritores de Interrupção (IDT), criada pelo Sistema Operacional, e não mais pela IVT. Da mesma forma que na IVT, cada descritor de interrupção associa uma interrupção ao seu manipulador. A IDT pode ser armazenada em qualquer posição da memória.
INTERRUPÇÃO NO PCI-BUS Sinais de arbitragem (ligados ao árbitro-pci na ponte-norte) 4 interrupções Dispositivos ISA IRQ8 IRQ9(IRQ2) IRQ10 IRQ15 Controlador 8259A Secundário IRQ2 IRQ0 IRQ1 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 Controlador 8259A Primário INTA Dispositivos PCI INTA INTB INTA INTB INTC INTA Advanced Programmable Interrupt Controller CPU INTA INTB
INTERRUPÇÃO NO PCI-BUS a) Transição (edge-trigger) b) nível (level-triggered) TTL-driver. ISA TTL coletor-aberto. PCI O circuito da direita é característico do barramento ISA. Interrupção não compartilhável. O circuito da esquerda é típico da interrupção do PCI. Vários dispositivos podem compartilhar uma mesma interrupção. DMA Os métodos de gerenciamento de E/S programada e controlada por interrupção apresentam um inconveniente o processador ainda é o responsável por transferir os dados entre o dispositivo e a memória. Em transferências que envolvem um grande volume de dados o processador é muito requisitado para as operações de E/S queda na performance geral do computador. Exemplo: discos rígidos, adaptador de DVD, etc. Solução Acesso Direto à Memória (DMA).
DMA Através do controlador de DMA uma interface pode ler ou escrever diretamente na memória, SEM A INTERVENÇÃO DO PROCESSADOR. Durante a evolução da família de PCs surgiram três tipos de arquitetura de DMA: 1 controlador de DMA 8237: PC XT. Disponibilizava 4 canais de DMA 2 controladores 8237 em cascata: PC AT. Disponibilizavam 7 canais de DMA DMA via mestre do barramento. a partir do 80486 e da implementação da transferência em rajada. Operação de DMA (visão geral)
Nos PCs XT e AT até o 80386 cada dispositivo que realizava DMA tinha seu próprio par de linhas DRQ/*DACK. Portanto, cada um destes pares caracterizava um Canal de DMA. No PC AT foram utilizados 2 controladores em cascata, oferecendo 7 canais de DMA. Canais de DMA Controle das transferências Cada canal de DMA possui 16 registradores de controle. Os mais importantes para o controle das transferências são: registrador de endereço base; registrador de endereço corrente; contador base; contador corrente. Ao realizar uma transferência entre a memória e o dispositivo, a CPU informa ao controlador de DMA: o endereço do dispositivo envolvido na transferência; qual a operação a ser feita (entrada ou saída de dados); o endereço de memória inicial e a quantidade de dados a serem transmitidos.
Controle das transferências Ex.: supondo uma transferência de 10 dados do dispositivo de E/S para a memória, no endereço inicial 1700 (10). Estado inicial M Após 4 transferências M Estado final M END. BASE = 1700 END. BASE = 1700 END. BASE = 1700 END. CORRENTE = 1700 END. CORRENTE = 1704 END. CORRENTE = 1710 CONT. BASE = 9 CONT. BASE = 9 CONT. BASE = 9 CONT. CORRENTE = 9 M CONT. CORRENTE = 5 M CONT. CORRENTE = FFFF M Controle das transferências O número armazenado nos registradores de contagem é sempre igual ao número de dados a transferir menos 1. Número de transferências Valor a ser programado no contador 200 199 65536 65535 1 0 Quando o controlador de DMA faz a última transferência o Contador Corrente passa de 0000 para FFFF (16). Neste instante o controlador de DMA gera um sinal chamado TC (Terminal Count), que indica o término da transferência (interrompe o processador).
O mecanismo de DMA pode ser configurado de diversas maneiras: Configurações de DMA DMA via arbitragem do barramento DMA via arbitragem do barramento Usado nas arquiteturas mais modernas, o DMA via arbitragem do barramento envolve controladores mais evoluídos. O controlador passa a fazer requisições não mais diretamente ao processador, mas ao árbitro do barramento. Quando o árbitro libera o barramento o controlador tornase o seu mestre, colocando-se no lugar da CPU e realizando a transferência dos dados diretamente para a memória. Técnica utilizada no barramento PCI.