Entradas/Saídas. Programação por interrupções Programação da porta série Recepção Concorrência no acesso a recursos Programação por DMA



Documentos relacionados
Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Sistemas de armazenamento

Sistemas Operacionais Gerência de Dispositivos

RAID Redundat Arrays of Inexpensive Disks

Entradas/Saídas. Programação por espera activa Programação por interrupções

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

Arquitetura de Computadores. Tipos de Instruções

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Memória Secundária. Prof. Valeria M. Bastos 18/06/2012 Prof. Antonio Carlos Gay Thomé

Dispositivos de Entrada e Saída

Sistemas Operativos. Sumário. Estruturas de sistemas de computação. ! Operação de um sistema de computação. ! Estruturas de E/S

SISTEMAS INFORMÁTICOS

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Arquitetura de um Computador

Prof. Sandrina Correia

Sistemas Operacionais: Sistema de Arquivos

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Sistemas Operativos I

EA960 Redundância e Confiabilidade: RAID

Conceitos Básicos. Conceitos Básicos Memória

Arquitetura e Organização de Computadores

Organização e Arquitetura de Computadores

Arquitectura dos processadores

BARRAMENTO DO SISTEMA

Estruturas do Sistema de Computação

PROCESSAMENTO DE DADOS

Memória principal; Unidade de Controle U C P. Unidade Lógica e Aritmética

Arquitectura de Computadores II. Interface com Periféricos

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Introdução aos Computadores

Sistemas Operacionais

Figura 1 - O computador

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I: MEMÓRIA EXTERNA RAÍ ALVES TAMARINDO RAI.TAMARINDO@UNIVASF.EDU.BR

Introdução à Organização de Computadores Memória Secundária

Dispositivos de Armazenamento em massa. José Roberto B. Gimenez

Fundamentos de Sistemas Operacionais

Primeiros "computadores" digitais. Execução de um programa. Consolas. Primórdios dos computadores. Memória interna. Computadores com memória interna

Cristiano Sebolão Nº Pedro Arcão Nº João Marques Nº 27228

ENTRADA E SAÍDA DE DADOS

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

MEMÓRIA. A memória do computador pode ser dividida em duas categorias:

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

RAID. Propõe o aumento da confiabilidade e desempenho do armazenamento em disco. RAID (Redundant Array of Independent Disks )

Introdução à Organização de Computadores Memória Secundária

28/9/2010. Unidade de Controle Funcionamento e Implementação

Sistemas Operacionais

Sistemas Operacionais

Introdução aos Sistemas Operativos

Organização e Arquitetura de Computadores I

Se ouço esqueço, se vejo recordo, se faço aprendo

Programador/a de Informática

Introdução a Informática. Prof.: Roberto Franciscatto

Conjunto organizado de informações da mesma natureza, agrupadas numa unidade independente de processamento informático

Organização de Computadores 1

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Modelo Genérico de Módulo de E/S Grande variedade de periféricos

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

William Stallings Arquitetura e Organização de Computadores 8 a Edição

3. Arquitetura Básica do Computador

Arquitetura e Organização de Computadores I

Motivação. Sumário. Hierarquia de Memória. Como registramos nossas histórias (num contexto amplo)?

RAID 1. RAID 0 2. RAID 1

ARQUITETURA DE COMPUTADORES

Níveis de RAID - RAID 0

Binária. Introdução à Informática. Introdução à Informática. Introdução à Informática. Introdução à Informática. Bit. Introdução à Informática

Dispositivos de Armazenamento. Prof. Flávio Humberto Cabral Nunes

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

O que é RAID? Tipos de RAID:

Tecnologia da Informação. Prof Odilon Zappe Jr

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

AVALIAÇÃO À DISTÂNCIA 1 GABARITO

Tecnologia de armazenamento Intel (Intel RST) RAID 0, 1, 5, 10, Matrix RAID, RAID -Pronto

Escola Secundária de Emídio Navarro

Sistemas Operacionais

Setores Trilhas. Espaço entre setores Espaço entre trilhas

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 03 Conceitos de Hardware e Software parte 01. Cursos de Computação

INFORMÁTICA PARA GESTÃO I Curso Superior de Gestão de Marketing

Sistemas Operacionais Entrada / Saída. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)

Acetatos de apoio às aulas teóricas

Arquitectura de Computadores

Sistemas Operacionais

Estrutura e funcionamento de um sistema informático

Capítulo 2. Noção de hardware. As componentes de um computador.

Programação de Sistemas

Informática Aplicada

Arquitetura de Computadores Arquitetura de entrada e saída

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Capítulo 4 Livro do Mário Monteiro Introdução Hierarquia de memória Memória Principal. Memória principal

Capítulo 5 Entrada/Saída

Estrutura de um Computador

Introdução à estrutura e funcionamento de um Sistema Informático

Dispositivos de Memória

DISCOS RÍGIDOS. O interior de um disco rígido

AULA TEÓRICA 2 Tema 2. Conceitos básicos de informática, computadores e tecnologias de informação. Sistemas de numeração (continuação)

Introdução às Tecnologias de Informação e Comunicação. Conceitos Introdutórios

Entrada e Saída. Prof. Leonardo Barreto Campos 1

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Transcrição:

Entradas/Saídas Programação por interrupções Programação da porta série Recepção Concorrência no acesso a recursos Programação por DMA

Relembrar a recepção com espera activa Para receber um byte pela porta série temos: unsigned char receive_serial( ) { unsigned char s; } do { s = // Conteúdo do registo de estado (LSR) } while ( /* bit RBR pronto de LSR == 0 */ ); return // Conteúdo do registo de dados a receber Arquitectura de Computadores (2008/2009): Entradas/Saídas 701

Recepção com interrupções Leitura de caracteres pelo programa Remover o byte mais antigo buffer Inserir na 1ª posição livre Rotina de tratamento da interrupção Byte Interrupção 12 (IRQ4) UART 1 A gerar interrupção quando RBR pronto Arquitectura de Computadores (2008/2009): Entradas/Saídas 702

Recepção com interrupções A rotina recv_serial lê o byte de um buffer Espera em ciclo (com as interrupções ligadas) que haja um elemento no buffer unsigned char receive_serial() { } while (/* buffer vazio */) ; // esperar // ler byte do buffer // retornar byte lido Arquitectura de Computadores (2008/2009): Entradas/Saídas 703

Recepção com interrupções A rotina de interrupções pode encontrar o buffer cheio Se tal acontece não pode ficar em espera activa (porquê?) perde-se o byte que chegou Rotina de tratamento de interrupções RBR pronto { if (/* buffer cheio */) /* Erro! Não há espaço no buffer mas não se pode esperar */ else { // ler byte da porta série // colocar byte no buffer } // Enviar EOI para o PIC } Arquitectura de Computadores (2008/2009): Entradas/Saídas 704

Características: Implementação do Buffer Zona de memória acessível ao programa e à rotina de tratamento da interrupção Pode ser indirectamente por exemplo: o programa recorre a chamadas ao sistema Capacidade suficiente para que o programa e o periférico trabalhem dessincronizados Não perder os dados que entram do periférico Manter o periférico ocupado com as saídas Operações de: por e tirar: bufput() e bufget() testar buffer vazio/cheio: bufempty() e buffull() Disciplina FIFO (First-In-First-Out) Arquitectura de Computadores (2008/2009): Entradas/Saídas 705

Buffer circular - exemplo unsigned char buffer[n]; int put = 0; // 1ª casa livre int get = 0; // casa ocupada há mais tempo int nc = 0; // nº de bytes no buffer void bufput (unsigned char c) { /* assume que buf não está cheio */ buffer[put] = c; put = (put + 1) % N; nc ++; } N-2 N-1 0 1 a' b' c' 2 get 3 put unsigned char bufget() { /* assume que buf não está vazio */ unsigned char x = buffer[get]; get = (get + 1) % N; nc --; return x; } int buffull() { return (nc == N); } int bufempty() { return (nc == 0); } Arquitectura de Computadores (2008/2009): Entradas/Saídas 706

Actualização do nº de bytes no buffer A rotina send_serial, ao usar a função bufput, incrementa o número de bytes no buffer: nc ++ Suponhamos que o compilador traduz para mov eax, [nc] inc eax mov [nc], eax A rotina de atendimento de interrupções de transmissão, ao usar a função bufget, decrementa o número de bytes no buffer: nc -- Suponhamos que o compilador traduz para mov eax, [nc] dec eax mov [nc], eax Arquitectura de Computadores (2008/2009): Entradas/Saídas 707

Actualização do nº de bytes no buffer Suponhamos que nc é 20 e que, enquanto a rotina send_serial deposita um carácter, ocorre uma interrupção motivada pelo facto do registo THR ter ficado vazio send_serial nc 20 19 21 Rotina de tratamento ; push regs mov eax, [nc] ; nc==20 inc eax mov [nc], eax ; nc==21 eax tem 21; Este valor é salvo mov eax,[nc] ;nc==20 dec eax mov [nc], eax ;nc==19 Restaura o valor de eax (21) ; pop regs iret Arquitectura de Computadores (2008/2009): Entradas/Saídas 708

Actualização do nº de bytes no buffer Após inserir um carácter e remover outro, nc deveria ter ficado com 20 Ficou com 21 o que é um erro que vai provocar problemas para o futuro nas chamadas de bufempty() e buffull() Isto aconteceu porque a acção de actualização da variável foi interrompida a meio e foi chamada uma rotina que actualiza a mesma variável race condition (corrida) Arquitectura de Computadores (2008/2009): Entradas/Saídas 709

Actualização do nº de bytes no buffer A variável nc é partilhada pela rotina send_serial/recv_serial e pela rotina de tratamento de interrupções. A sua actualização não pode ser interrompida constitui o que se chama uma secção crítica Para resolver isto é preciso alterar as rotinas para que não sejam interrompidas na alteração de nc: Por ex. usando as instruções máquina CLI e STI Assim garante-se que nc é actualizado correctamente Arquitectura de Computadores (2008/2009): Entradas/Saídas 710

Vantagens das interrupções: revisão O uso de interrupções permite sobrepor (overlap) a computação e a realização de entradas/saídas pelos periféricos Permitem adaptar a velocidade relativa de CPUs e periféricos, tirando melhor partido do CPU e dos periféricos Um computador que usa interrupções permite programar mais eficientemente as operações de entrada/saída e tem melhor desempenho do que um que não tem Arquitectura de Computadores (2008/2009): Entradas/Saídas 711

Transferências conduzidas por interrupções Nas transferências de dados para/dos periféricos, o CPU só está envolvido quando é realmente necessário executando o código da rotina de tratamento que faz IN/OUT desses bytes para o controlador do periférico Não existe CPU em espera Mas poderá ser melhor? Para periféricos orientados ao bloco, pedir logo a transferência do bloco completo de bytes, num único pedido ao controlador? Arquitectura de Computadores (2008/2009): Entradas/Saídas 712

Transferência de blocos de bytes Periféricos orientados ao bloco Exemplo: 512 bytes para enviar: enviar_bloco() por bloco no buffer ligar interrupções transferência RotinaServiço: envia próximo byte do buffer se último byte desligar interrupções transferência iret RotinaServiço é chamada 512 vezes Arquitectura de Computadores (2008/2009): Entradas/Saídas 713

Acesso directo à memória (DMA) As E/S usando interrupções ainda requerem uma intervenção activa do CPU CPU precisa de intervir muitas vezes para um bloco de dados A resposta a estes problemas é remeter para o hardware o papel desempenhado pela Rotina de Serviço Um novo dispositivo que permita transferências entre Memória e Controladores sem intervenção do CPU Acesso Directo à Memória (Direct Memory Access) Requer hardware extra com acesso ao bus: o controlador de DMA O controlador de DMA pode tomar conta do bus (bus master) e aceder à memória e ao periférico Arquitectura de Computadores (2008/2009): Entradas/Saídas 714

Controlador de DMA exemplo Registos de um controlador genérico: Endereço endereço de memória Contador número de bytes a transferir Canal DMA (DMA channel) identifica o periférico alvo Controlo comandos, por exemplo: sentido da transferência CPU Memória Controlador de DMA endereço contador canal DMA controlo selecção do periférico alvo da DMA (canal DMA) Controlador com DMA Periférico Interrupção Arquitectura de Computadores (2008/2009): Entradas/Saídas 715

Operação com DMA O CPU informa o controlador de DMA sobre a transferência pretendida: Leitura da memória ou escrita em memória Endereço (canal de DMA) do controlador do periférico Endereço do bloco de memória central onde estão / para onde vão os dados a transferir Número de bytes a transferir O CPU volta ao processamento O controlador de DMA trata da transferência O controlador de DMA envia uma interrupção quando termina toda a transferência (ou se erro) Arquitectura de Computadores (2008/2009): Entradas/Saídas 716

Custo das interrupções O progresso do programa só é parado durante a transferência CPU a 1GHz e rotina de tratamento com 100 instruções a 1 inst/hz 1000 transferências I/O (1000 bytes) 1000 interrupções 1000 rotinas de serviço Custa ao CPU: 1 000*100 = 100 000 Hz Por outro lado, 1GHz = 10^9 Hz = 10^9 ciclos do relógio por segundo Como a recepção de um byte são 100 ciclos No melhor dos casos transfere-se 10^9/100 = 10^7 = 10 Mbytes/s (mas depende também da velocidade do bus, periférico e memória) Arquitectura de Computadores (2008/2009): Entradas/Saídas 717

Transferência usando DMA Suponhamos que a preparação do DMA também "custa" 100 Hz Transferência de 1000bytes: Custa ao CPU: 100+100 = 200 Hz A taxa máxima de transferência depende do bus, memória, do controlador de DMA e do periférico Arquitectura de Computadores (2008/2009): Entradas/Saídas 718

Entradas/Saídas Exemplos de dispositivos de entrada/saída (periféricos) Discos duros Suportes ópticos Discos RAID

Exemplo:Teclado orientado ao byte De cada vez, o teclado, disponibiliza um byte com o carácter premido Podemos obter cada um desses bytes individualmente Podemos "ver" o teclado como um periférico de leitura que providencia uma sequência (stream) de bytes Arquitectura de Computadores (2008/2009): Entradas/Saídas 720

Exemplo: Discos orientados ao bloco A unidade de transferência é o sector (2KB, 4KB, etc.) Arquitectura de Computadores (2008/2009): Entradas/Saídas 721

Discos duros É normal que um disco seja constituído por vários discos colocados verticalmente. A distancia radial da cabeça ao centro denomina-se cilindro. Um disco com n níveis, terá 2*n cabeças e 2*n pistas (tracks) por cilindro. As tracks são divididas em sectores. Arquitectura de Computadores (2008/2009): Entradas/Saídas 722

Discos duros Para se realizar uma transmissão é necessário definir a track (ou a cabeça), o cilindro, o sector de início e quanta informação transmitir O tempo que leva a cabeça a colocar-se na track pretendida denomina-se seek time O tempo que leva a cabeça a posicionar-se sobre o sector pretendido denomina-se latência rotacional A soma do seek time e da latência dá o tempo de acesso Arquitectura de Computadores (2008/2009): Entradas/Saídas 723

Exemplo: ópticos orientados ao bloco A unidade de transferência é o sector de 2K Existem outros modos que definem outro tipo de sectores Arquitectura de Computadores (2008/2009): Entradas/Saídas 724

Suportes ópticos Uma única track em espiral, com baixos (pits) e altos (lands) A fronteiras dos pits alteram a intensidade da reflexão do laser na superfície do disco A mudança, ou ausência de mudança, de pit para land ou de land para pit são interpretadas como dígitos binários: A mudança de pit para land ou de land para pit 1 Ausência de mudança 0 Arquitectura de Computadores (2008/2009): Entradas/Saídas 725

Suportes ópticos: CD e DVD CD-ROM (Compact Disk Read Only Memory) e CD-RW (Compact Disk Read Write) até 742 MB DVD (Digital Versatile Disk) Um lado, uma camada Um lado, duas camadas Dois lados, uma camada Dois lados, duas camadas 4.7 GB 8.5 GB 9.5 GB 17 GB Arquitectura de Computadores (2008/2009): Entradas/Saídas 726

Suportes ópticos: Blue-ray Discos Blue-violet HD-DVD: NEC e Toshiba 15 GB (terminou em 2/2008) Blu-Ray: consórcio com Sony, Samsung, Pioneer Blu-ray: BD-Rom, BD-R (gravável), BD-RE (regravável) Um lado, uma camada Um lado, duas camadas Dois lados, uma camada Dois lados, duas camadas Protótipos Um lado, quatro camadas Um lado, apenas três camadas 25 GB 50 GB 50 GB 100 GB 100 GB 200 GB Tecnologia Durabis garante resistência a arranhões e gordura Arquitectura de Computadores (2008/2009): Entradas/Saídas 727

Discos RAID RAID (Redundant Array of Inexpensive Disks). Consiste na organização de vários discos num só disco lógico de alta capacidade e performance. Arrays de discos dividem os dados pelos vários discos e acedem à informação em paralelo para obter: Taxas de transferência melhores no acesso a grande quantidades de dados Taxas de I/O em acessos de pequena envergadura: atendimento de vários pedidos em simultâneo. A divisão dos dados garantem um balanceamento da carga ao longo dos discos. Evitando discrepâncias na quantidade de acessos a cada disco. Arquitectura de Computadores (2008/2009): Entradas/Saídas 728

Discos RAID No entanto, arrays de vários discos são mais vulneráveis a falhas Se o tempo médio de falhas de um disco for 500000 horas, para 100 discos temos 5000 horas: 500000/100 A solução passa por melhorar a tolerância a falhas Introdução de redundância dos dados Esta solução tem, no entanto, dois problemas Quando se realiza uma escrita é necessário alterar todas as cópias do dados Se o sistema crachar durante uma operação de I/O é difícil garantir a coerência dos dados Arquitectura de Computadores (2008/2009): Entradas/Saídas 729

Discos RAID Para se obter boas performances com uma array de discos é necessário ponderar 3 pontos: Maximizar o número de discos acedidos em paralelo. Minimizar o espaço em disco dedicado à redundância de dados. Minimizar o desperdício de tempo (overhead) causado pelos pontos anteriores. Tipos de arrays RAID RAID 0 a 6 Conjunções de vários tipos Exemplo: 0+1 Arquitectura de Computadores (2008/2009): Entradas/Saídas 730

Discos RAID RAID 0 (não redundante): sem redundância. Mais rápido Não tolerante a falhas. Usados em ambientes de supercomputação, onde o mais importante é a velocidade não a tolerância a falhas. Arquitectura de Computadores (2008/2009): Entradas/Saídas 731

Discos RAID RAID 1 (espelho): Para cada disco existe um outro que contém a sua cópia Implica duas escritas. A leitura pode ser optimizada, sendo o pedido encaminhado para o disco com menos pedidos e latência rotacional. Usado em bases de dados, onde a tolerância a falhas e a disponibilidade da informação é mais importante do que a eficiência do modo como os dados são guardados. Arquitectura de Computadores (2008/2009): Entradas/Saídas 732

Discos RAID RAID 2 (código de Hamming): Precisa de log 2 de discos de paridade Usa o código de Hamming para detectar se um disco falhou e qual foi esse disco Nunca foi lançado comercialmente RAID 3 (paridade bit-interleaved): 1 disco de paridade Nesta abordagem é mais fácil detectar qual o disco que falhou. Isso reflecte-se na existência de apenas de um disco de paridade. Para o array: 0 1 1 1 Temos como bit paridade 1 = 0 xor 1 xor 1 xor 1 Se o primeiro disco falhar os dados podem ser corrigidos aplicando novamente XORs: 1 xor 1 xor 1 xor 1 = 0. Arquitectura de Computadores (2008/2009): Entradas/Saídas 733

Discos RAID Arquitectura de Computadores (2008/2009): Entradas/Saídas 734

Discos RAID RAID 4 (paridade block-interleaved): semelhante ao anterior. A diferença está na unidade do interleaving, que passa do bit para um bloco de dados. Arquitectura de Computadores (2008/2009): Entradas/Saídas 735

Discos RAID RAID 5 (paridade block-interleaved distribuída): a informação da paridade é distribuída pelos vários discos. Elimina o problema do número de acessos ao disco de paridade. Arquitectura de Computadores (2008/2009): Entradas/Saídas 736

Discos RAID RAID 6 (redundância P+Q): usa dupla protecção Usa duas informações para cada bloco de dados P Paridade, Q Código de Reed-Soloman. Arquitectura de Computadores (2008/2009): Entradas/Saídas 737

Discos RAID RAID 10 ou 1+0 (divisão espelhada): combina o RAID 0 e o RAID 1. Os discos são espelhados em pares para se obter melhor performance Existem outras combinações: Raid 0+1 Raid 5+0 Arquitectura de Computadores (2008/2009): Entradas/Saídas 738