Organização de Computadores Aula 23 Entrada e Saída (I/O) Rodrigo Hausen 03 de novembro de 2011 http://cuco.pro.br/ach2034 1/62
Apresentação 1. Bases Teóricas 2. Organização de computadores... 2.3. Estruturas de Interconexão 2.4. Sistema de Memórias 2.5. Subsistema de Entrada/Saída (I/O) Aula de hoje: Stallings (5a. Edição), 6.1. Dispositivos externos; 6.2. Módulos de E/S; 6.3. E/S programada; 6.4. E/S dirigida por interrupção 2/62
Entrada/Saída: Problemas Entrada/Saída = E/S = Input/Output = I/O 3/62
Entrada/Saída: Problemas Entrada/Saída = E/S = Input/Output = I/O Grande variedade de periféricos em uso Transmitem diferentes quantidades de dados Velocidades de transmissão e acesso diferentes Em formatos diferentes Todos os periféricos são mais lentos do que a CPU e memória principal (memória RAM) 4/62
Entrada/Saída: Problemas Entrada/Saída = E/S = Input/Output = I/O Grande variedade de periféricos em uso Transmitem diferentes quantidades de dados Velocidades de transmissão e acesso diferentes Em formatos diferentes Todos os periféricos são mais lentos do que a CPU e memória principal (memória RAM) Necessidade de módulos de I/O 5/62
Entrada/Saída: Problemas Entrada/Saída = E/S = Input/Output = I/O Grande variedade de periféricos em uso Transmitem diferentes quantidades de dados Velocidades de transmissão e acesso diferentes Em formatos diferentes Todos os periféricos são mais lentos do que a CPU e memória principal (memória RAM) Necessidade de módulos de I/O Circuitos lógicos que fazem a tradução entre os sinais elétricos apropriados à CPU/memória e o dispositivo Interface ao processador e memória principal através do barramento do sistema Interface para um ou mais dispositivos periféricos 6/62
Módulo de I/O: Modelo Genérico interface interna interface externa 7/62
Dispositivos Externos Para interação com o usuário (Human Interaction Devices): monitor de vídeo, impressora, teclado, mouse Para interação com outros dispositivos periféricos: fitas, discos, placa de captura de vídeo sensores de monitoramento e controle Para comunicação com dispositivos remotos: modem, placa de rede 8/62
Dispositivo Externo: Diagrama em Blocos Sinais de controle do módulo de I/O Sinais de estado p/ módulo de I/O Bits de dados de/para módulo de I/O Lógica de controle Buffer Transdutor Dados (esp. do dispositivo) de/para ambiente externo 9/62
Dispositivo Externo: Diagrama em Blocos Sinais de controle do módulo de I/O Sinais de estado p/ módulo de I/O Bits de dados de/para módulo de I/O Lógica de controle Buffer Transdutor determinam função a ser executada Dados (esp. do dispositivo) de/para ambiente externo 10/62
Dispositivo Externo: Diagrama em Blocos Sinais de controle do módulo de I/O Sinais de estado p/ módulo de I/O Bits de dados de/para módulo de I/O Lógica de controle Buffer Transdutor indicam o estado do dispositivo Dados (esp. do dispositivo) de/para ambiente externo 11/62
Dispositivo Externo: Diagrama em Blocos Sinais de controle do módulo de I/O Sinais de estado p/ módulo de I/O Bits de dados de/para módulo de I/O Lógica de controle Buffer Transdutor controla as operações do dispositivo Dados (esp. do dispositivo) de/para ambiente externo 12/62
Dispositivo Externo: Diagrama em Blocos Sinais de controle do módulo de I/O Sinais de estado p/ módulo de I/O Bits de dados de/para módulo de I/O Lógica de controle Buffer Transdutor converte sinais internos de/para formato adequado ao dispositivo Dados (esp. do dispositivo) de/para ambiente externo 13/62
Dispositivo Externo: Diagrama em Blocos Sinais de controle do módulo de I/O Sinais de estado p/ módulo de I/O Bits de dados de/para módulo de I/O Lógica de controle Buffer Transdutor área de armazenamento temporário de dados de/para dispositivo Dados (esp. do dispositivo) de/para ambiente externo 14/62
Dispositivo Externo: Diagrama em Blocos Sinais de controle do módulo de I/O Sinais de estado p/ módulo de I/O Bits de dados de/para módulo de I/O Lógica de controle Buffer Transdutor converte sinais internos de/para formato adequado ao dispositivo Dados (esp. do dispositivo) de/para ambiente externo 15/62
Módulo de I/O: Funções Controle e temporização Comunicação com a CPU Comunicação com o dispositivo Armazenamento temporário de dados (buffering) Detecção/correção de erros (opcional) 16/62
Controle e Temporização de I/O 1) CPU requisita estado do dispositivo ao módulo de I/O 2) Módulo de I/O retorna estado 3) Se estado = pronto CPU requisita transf. de dados enviando comando ao módulo de I/O 4) Módulo de I/O obtém uma unidade de dados do dispositivo 5) Dado é transferido do Módulo de I/O para CPU Variações para saída de dados, DMA, etc. 17/62
Comunicação com a CPU Decodificação de comandos: módulo de I/O aceita comandos através de sinais no barramento de controle Dados: transmitidos entre a CPU e o módulo de I/O pelo barramento de dados Informação de estado: comumente, pelo fato de periféricos serem lentos, é comum ter sinais do tipo ocupado (busy) ou pronto (ready). Reconhecimento de endereço: módulo de I/O deve reconhecer endereço único para cada periférico controlado por ele 18/62
Comunicação de um Módulo de I/O Comunicação com o dispositivo: comandos, informação de estado e dados Armazenamento temporário de dados (buffering): dados vêm da CPU/memória em alta velocidade (alta taxa de transferência) e precisam ser temporariamente armazenados pelo módulo de I/O para serem consumidos pelo dispositivo de acordo com a sua velocidade Detecção/correção de erros: responsável por reportar erros à CPU 19/62
Taxas de Transferência Típicas Memória típica (DDR2 PC3200, comum em 2011): 3200MB/s, aprox. 2.6 x 10 10 bps 20/62
Módulo de I/O: Diagrama 21/62
Módulo de I/O: Diagrama conexão com barr. do sistema 22/62
Módulo de I/O: Diagrama armazenamento temporário (buffering) 23/62
Módulo de I/O: Diagrama armazenam informs. de estado e controle 24/62
Módulo de I/O: Diagrama módulo deve reconhecer e gerar endereços para dispositivos controlados por ele 25/62
Módulo de I/O: Diagrama CPU: envia comandos para o módulo de I/O módulo: retorna sinais de estado e interrupção 26/62
Módulo de I/O: Diagrama interpreta comandos da CPU, envia sinais de controle para interfaces de dispositivos, retorna sinais de estado 27/62
Módulo de I/O: Diagrama cada dispositivo possui uma interface diferente, por possuir características diferentes 28/62
Decisões do Módulo de I/O Funções do módulo de I/O permitem à CPU ver o dispositivo de uma maneira simples Módulo de I/O pode ocultar detalhes do dispositivo de tal forma que a CPU pode operar o dispositivo em termos de operações simples de leitura e escrita. Temporização, formatos, etc. podem ser todos traduzidos e controlados automaticamente pelo módulo (ou não!) Módulo de I/O pode escolher deixar o trabalho de controlar um dispositivo visível à CPU: rebobinar uma fita, ejetar um disco, etc. 29/62
Técnicas de I/O I/O programada: CPU tem controle direto sobre a entrada/saída. Mais simples, mas consome mais tempo da CPU. 30/62
Técnicas de I/O I/O programada: CPU tem controle direto sobre a entrada/saída. Mais simples, mas consome mais tempo da CPU. I/O por interrupção: CPU delega parte do controle ao controlador (módulo) do dispositivo. Um pouco mais elaborada, consome menos tempo da CPU. 31/62
Técnicas de I/O I/O programada: CPU tem controle direto sobre a entrada/saída. Mais simples, mas consome mais tempo da CPU. I/O por interrupção: CPU delega parte do controle ao controlador (módulo) do dispositivo. Um pouco mais elaborada, consome menos tempo da CPU. I/O por processadores: CPU delega quase, ou totalmente, o controle da entrada/saída a um processador. DMA I/O por canais 32/62
I/O Programada CPU tem controle direto sobre a entrada/saída Verificando estado dos dispositivos Enviando comandos de leitura/escrita Transferindo dados CPU aguarda término da operação, informado pelo módulo de I/O Desperdiça tempo da CPU 33/62
I/O Programada 34/62
I/O Programada desperdício de tempo da CPU (busy wait) 35/62
I/O Programada desperdício de tempo da CPU (busy wait) note que o módulo de I/O não informa a CPU diretamente sobre o estado do dispositivo 36/62
Comandos de Entrada/Saída CPU fornece endereço Identifica módulo (e dispositivo se há mais de um por módulo) CPU fornece comando Controle diz ao módulo o que fazer ex.: ligar motor do disco rígido Teste - verifica estado do dispositivo ex.: está ligado? ocorreu erro? Leitura/escrita Módulo transfere dados através do buffer de/para o dispositivo 37/62
Endereçamento de Dispositivos Do ponto de vista da CPU, I/O programada é bem parecida com acesso à memória Cada dispositivo possui um identificador único (endereço) comandos da CPU fornecem identificadores necessários I/O mapeada em memória (memory-mapped I/O): Dispositivos de I/O e memória compartilham o mesmo espaço de endereçamento I/O independente (ou I/O por portas): Espaços de endereçamento isolados 38/62
I/O mapeada em Memória Dispositivos e memória compartilham o mesmo espaço de endereçamento isto não quer dizer que os dispositivos copiem os dados diretamente para a memória nem que a CPU os acesse através da memória Os registradores de estado e de dados de cada módulo de I/O são vistos como endereços, indistintamente dos endereços da memória principal Linhas de controle também compartilhadas, portanto não é possível ter um mesmo endereço disponível para acessar a memória e um dispositivo. Não são necessários comandos especiais para I/O Se já há uma vasta gama de comandos de acesso à memória, aumenta a flexibilidade de programação 39/62
I/O independente (I/O por portas) Espaços de endereçamento separados para dispositivos e memória Linhas de controle separadas para memória e dispositivos (podemos ter o mesmo número de endereço para uma posição de memória e um dispositivo) Necessidade de comandos especiais para I/O Ou implementa-se uma variedade maior de comandos (complicando o projeto da CPU), ou restringe-se a variedade de métodos de acesso (menor flexibilidade) Geralmente, são implementados registradores especiais na CPU para lidar com I/O PCs com processadores da família Intel 32/64 bits usam tanto I/O mapeada em memória quanto por portas. 40/62
I/O por Interrupção Evita desperdiçar o tempo da CPU (busy wait) com tarefas menos nobres Não é necessário colocar instruções no programa para que que a CPU fique constantemente verificando o estado do dispositivo Módulo de I/O interrompe a CPU quando pronto Necessário alterar o ciclo de instrução da CPU: ao final de cada ciclo, a CPU verifica as linhas de estado automaticamente e entra em tratamento de interrupção caso haja interrupção 41/62
I/O por Interrupção 42/62
Processamento de Interrupção Controlador de dispositivo ou outro dispositivo de hardware lança uma interrupção Processador termina execução da instrução atual Salva o resto do contexto (estado atual de execução do processo, como conteúdo de regs. de dados) Processador sinaliza reconhecimento da interrupção Processa interrupção (handler) Processador salva o contexto (copia estado do PC e registradores de estado/endereç. para memória) Processador carrega PC com novo valor, baseado no tipo de interrupção Restaura contexto do processo Restaura estado anterior do PC e de registradores de estado e endereçamento 43/62
Interrupções: Questões de Projeto Como identificar o módulo que solicitou a interrupção Como lidar com múltiplas interrupções? p. ex. Um handler de interrupção sendo interrompido 44/62
Identificação do Módulo Múltiplas linhas de interrupção: Número limitado de linhas Geralmente, diversos módulos conectados numa mesma linha Geralmente, em cada linha, usa-se uma técnica diversa: Identificação por software (software polling) Identificação por hardware (hardware polling ou daisy chaining) Arbitração do barramento (bus mastering) 45/62
Identificação por Software Software polling: o handler de interrupção pergunta a cada módulo de I/O qual dispositivo gerou a interrupção Alternativamente, handler pode ler registradores de estado de cada módulo. Handler chama outro handler específico para o dispositivo que gerou interrupção. Consome muito tempo da CPU. 46/62
Identificação por Hardware Também chamado daisy chain ou hardware poll Reconhecimento de interrupção é enviado a uma cadeia de dispositivos Módulo responsável coloca uma palavra no barramento, chamada vetor de interrupção, que consiste de um identificador (endereço) CPU usa esse vetor para identificar dispositivo e handler 47/62
Arbitração do Barramento Também utiliza interrupção vetorada O módulo primeiramente obtém o controle do barramento (tornando-se mestre), depois ativa a linha de interrupção CPU detecta a linha de interrupção, depois responde pela linha de barramento Módulo coloca seu byte de dados no barramento Usado nos barramentos de expansão PCI e SCSI Se diversas linhas de interrupção são utilizadas, a CPU utiliza a de maior prioridade comparação: na identificação por software, a ordem de pesquisa determina a prioridade; na identificação por hardware, a ordem de conexão determina prioridade. 48/62
Interrupções Múltiplas Cada linha de interrupção tem uma prioridade Interrupções em linhas com maior prioridade podem interromper interrupções em linhas com maior prioridade Se identificação é feita por arbitração do barramento, apenas o mestre atual pode gerar interrupção 49/62
... Exemplo: Barramento PC (legado) Processadores antigos da família 80x86 (do 8086 até o 80365) possuem apenas uma linha de interrupção (INTR) e uma linha de reconhecimento de interrupção (INTA) Sistemas baseados no 8086 usam controlador de interrupção 8259A, que tem 8 linhas de interrupção IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 50/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 1.1) 8259A recebe interrupções IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 51/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 1.2) 8259A determina prioridade IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 52/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 1.3) 8259A avisa a CPU (8086), colocando INTR em 1 IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 53/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 1.4) CPU reconhece, colocando INTA em 1 IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 54/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 1.5) 8259A coloca vetor correto no barramento de dados IRQ0 IRQ1 8259A 00000000 INTR INTA 8086 CPU IRQ7 barr. dados 55/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 1.6) CPU comunica-se diretamente com módulo de I/O para ler/escrever dados IRQ0 IRQ1 IRQ7 8259A barr. dados INTR INTA 8086 CPU end. ctrl.. 56/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 1.7) 8259A prepara-se para próxima interrupção IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 57/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 2.3) 8259A avisa a CPU (8086), colocando INTR em 1 IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 58/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 2.4) CPU reconhece, colocando INTA em 1 IRQ0 IRQ1 8259A INTR INTA 8086 CPU IRQ7 barr. dados 59/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 2.5) 8259A coloca vetor correto no barramento de dados IRQ0 IRQ1 8259A 00000001 INTR INTA 8086 CPU IRQ7 barr. dados 60/62
... Exemplo: Barramento PC (legado) Modo de funcionamento: 2.6) CPU comunica-se diretamente com módulo de I/O para ler/escrever dados IRQ0 IRQ1 IRQ7 8259A barr. dados INTR INTA 8086 CPU end. ctrl.. 61/62
Mais de 8 linhas de Interrupção 62/62