Sistemas Entrada/Saída
Organização e Arquitetura de Computadores
Alysson Filgueira Milanez
Na aula passada ...
2
Na aula passada ...
Sistemas de memória
3
Sistemas Entrada/Saída
4
Sistemas Entrada/Saída
A arquitetura de E/S de um computador constitui sua interface com o mundo exterior.
Ela é projetada para permitir um controle sistemático da interação com o mundo exterior e fornecer ao sistema operacional as informações de que ele necessita para gerenciar a atividade de E/S de maneira efetiva.
5
Sistemas Entrada/Saída
Existem três técnicas principais de E/S:
- na E/S programada, a E/S é efetuada sob controle direto e contínuo do programa que requisitou a operação de E/S;
- na E/S dirigida por interrupção, o programa envia um comando de E/S e então continua a execução de instruções até que ocorra uma interrupção gerada pelo hardware de E/S, que sinaliza o término da operação de E/S requerida;
6
Sistemas Entrada/Saída
- na técnica de acesso direto à memória (direct memory access - DMA), a E/S é controlada por um processador especializado de E/S, que se encarrega de transferir os blocos de dados.
7
Sistemas Entrada/Saída
Dois exemplos importantes de interfaces externas de E/S são as interfaces SCSI (small computer system interface - interface de sistemas de computação pequenos) e FireWire.
A SCSI é uma interface paralela para dispositivos externos e a FireWire é uma interface serial de alta velocidade.
8
Sistemas Entrada/Saída
Além do processador e da memória, um terceiro elemento fundamental de um sistema de computação é o conjunto de módulos de E/S.
Cada módulo se conecta com o barramento do sistema ou com o comutador central e controla um ou mais dispositivos periféricos.
9
Sistemas Entrada/Saída
Um módulo de E/S não é simplesmente um conjunto de conectores mecânicos que ligam um dispositivo ao barramento do sistema.
Ele contém certa 'inteligência', isto é, uma lógica dedicada a desempenhar a função de comunicação entre o periférico e o barramento.
10
Sistemas Entrada/Saída
Vocês podem se perguntar por que os periféricos não são diretamente conectados ao barramento do sistema.
Isso não ocorre pelos seguintes motivos:
- Existe uma grande variedade de periféricos, com diferentes mecanismos de operação. Seria impossível incorporar ao processador a lógica necessária para controlar vários dispositivos diferentes.
11
Sistemas Entrada/Saída
- Como a taxa de transferência de dados dos periféricos é, frequentemente, muito menor do que a taxa de transferência de dados da memória ou do processador, torna-se impraticável usar barramentos do sistema de alta velocidade para a comunicação direta com um periférico.
- Os periféricos usam frequentemente formatos de dados e tamanhos de palavras diferentes dos usados no computador no qual estão conectados.
12
Sistemas Entrada/Saída
Por essas razões, é requerido um módulo de E/S, que deve desempenhar duas funções principais (Figura 1):
13
Sistemas Entrada/Saída
Figura 1. Modelo geral de um módulo de E/S.
14
Dispositivos externos
15
Dispositivos externos
As operações de E/S são efetuadas por meio de grande variedade de dispositivos externos, que oferecem um meio para a troca de dados entre o ambiente externo e o computador.
Um dispositivo externo é conectado ao computador através de uma conexão de um módulo de E/S (Figura 1).
16
Dispositivos externos
Essa conexão é usada para a transferência de dados, informações de controle e informações de estado entre o módulo de E/S e o dispositivo externo.
Um dispositivo externo conectado a um módulo de E/S é frequentemente denominado dispositivo periférico ou, simplesmente, periférico.
17
Dispositivos externos
Os dispositivos externos podem ser classificados em três categorias:
- Dispositivos voltados para a comunicação com o usuário.
- Dispositivos voltados para a comunicação com a máquina.
- Dispositivos voltados para a comunicação com dispositivos remotos.
18
Dispositivos externos
Alguns exemplos de dispositivos voltados para a comunicação com o usuário são os terminais de vídeo (VDTs) e impressoras.
Dispositivos voltados para a comunicação com a máquina são, por exemplo, os discos magnéticos e os sistemas de fitas, e os sensores e os controladores usados em aplicações de robótica.
19
Dispositivos externos
Note que os sistemas de disco e de fita são vistos como dispositivos de E/S, ao passo que também podem ser vistos como dispositivos de memória.
Do ponto de vista funcional, esses dispositivos são parte da hierarquia de memória.
Do ponto de vista estrutural, eles são controlados por módulos de E/S.
20
Dispositivos externos
Os dispositivos voltados para a comunicação com dispositivos remotos possibilitam a um computador trocar dados com dispositivos remotos, que podem ser dispositivos voltados para a comunicação com o usuário, tal como um terminal, ou para a comunicação interna ou mesmo ser um outro computador.
21
Dispositivos externos
A Figura 2 mostra um modelo geral de um dispositivo externo.
A interface com o módulo de E/S é constituída de sinais de controle, dados e estado.
22
Dispositivos externos
Figura 2. Dispositivo externo.
23
Dispositivos externos
Os sinais de controle determinam a função a ser executada pelo dispositivo, tal como enviar dados para o módulo de E/S (INPUT ou READ), receber dados do módulo de E/S (OUTPUT ou WRITE), informar o estado do dispositivo ou desempenhar alguma função de controle particular do dispositivo (por exemplo, movimentar o cabeçote do disco para uma determinada posição).
24
Dispositivos externos
Os dados formam um conjunto de bits a serem enviados para/ recebidos do módulo de E/S.
Os sinais de estado indicam o estado do dispositivo.
Por exemplo, os sinais READY/NOT-READY indicam se o dispositivo está pronto ou não para efetuar uma transferência de dados.
25
Dispositivos externos
A lógica de controle associada ao dispositivo controla sua operação, em resposta a um comando recebido do módulo de E/S.
Um transdutor é usado para converter dados codificados como sinais elétricos para alguma outra forma de energia, em uma operação de saída, ou dessa outra forma de energia para sinais elétricos, em uma operação de entrada.
26
Dispositivos externos
Tipicamente, uma área de armazenamento temporário para os dados a serem transferidos entre o módulo de E/S e o ambiente externo é associada ao transdutor.
Essa área normalmente tem um tamanho de 8 ou 16 bits.
27
Módulos de E/S
28
Módulos de E/S
As funções mais importantes de um módulo de E/S podem ser divididas nas seguintes categorias:
- Controle e temporização
- Comunicação com o processador
- Comunicação com dispositivos
- Área de armazenamento temporário de dados
- Detecção de erros
29
Módulos de E/S
O processador pode comunicar-se a qualquer momento com um ou mais dispositivos externos, dependendo das necessidades de E/S do programa.
Os recursos internos do sistema, tais como a memória principal e o barramento, são compartilhados para a realização de diversas atividades, incluindo a E/S de dados.
30
Módulos de E/S
Por isso, um módulo de E/S inclui funções de controle e temporização, para controlar o fluxo de dados entre os recursos internos e os dispositivos externos.
31
Módulos de E/S
Por exemplo, o controle de transferência de dados de um dispositivo externo para o processador pode envolver a seguinte sequência de etapas:
1. O processador pergunta o estado do dispositivo de E/S a ele conectado ao módulo de E/S.
2. O módulo de E/S retorna o estado do dispositivo.
32
Módulos de E/S
3. Se o dispositivo estiver em operação e pronto para transmitir, o processador requisitará a transferência de dados, enviando um comando para o módulo de E/S.
4. O módulo de E/S obtém uma unidade de dados (por exemplo, 16 ou 32 bits) do dispositivo externo.
5. Os dados são transferidos do módulo de E/S para o processador.
33
Módulos de E/S
Se um barramento é usado pelo sistema, cada uma das interações entre o processador e o módulo de E/S envolve uma ou mais arbitrações do barramento.
O cenário simplificado descrito também ilustra que o módulo de E/S deve ser capaz de comunicar-se tanto com o processador quanto com o dispositivo externo.
34
Módulos de E/S
A comunicação com o processador envolve os seguintes tópicos:
- Decodificação de comando: o módulo de E/S recebe comandos do processador, enviados tipicamente como sinais, através do barramento de controle.
35
Módulos de E/S
Por exemplo, um módulo de E/S ao qual é conectada uma unidade de disco pode aceitar os seguintes comandos: leitura de setor, escrita de setor, busca de uma determinada trilha e pesquisa por um registro com um determinado identificador. No caso dos dois últimos comandos, um parâmetro é enviado através do barramento de dados.
36
Módulos de E/S
- Dados: os dados são transferidos entre o processador e o módulo de E/S através do barramento de dados.
- Informação de estado: como os periféricos são, em geral, muito lentos, é importante conhecer o estado do módulo de E/S. Por exemplo, em uma operação de leitura, o módulo de E/S pode muitas vezes não estar pronto para enviar os dados requeridos para o processador porque ainda está processando o comando de E/S anterior.
37
Módulos de E/S
Essa informação é enviada como um sinal de estado. Alguns sinais de estado comuns são BUSY (ocupado) e READY (pronto). Pode também haver sinais que especificam condições de erro.
- Reconhecimento de endereço: assim como cada palavra da memória, cada dispositivo de E/S tem um endereço. Dessa maneira, o módulo de E/S deve reconhecer um endereço distinto para cada periférico que ele controla.
38
Módulos de E/S
Por outro lado, um módulo de E/S deve ser também capaz de realizar comunicação com os dispositivos. Essa comunicação envolve comandos, informação de estado e dados.
39
Módulos de E/S
Uma tarefa essencial de um módulo de E/S é o armazenamento temporário de dados.
Enquanto a taxa de transferência de dados entre a memória principal e o processador é bastante alta, as taxas da maioria dos dispositivos periféricos são ordens de grandeza menores e compreendem uma ampla faixa de valores.
40
Módulos de E/S
41
Módulos de E/S
A transferência de dados da memória principal para o módulo de E/S é feita rapidamente.
Esses dados são temporariamente armazenados no módulo de E/S e, então, enviados para o dispositivo periférico em uma taxa adequada.
42
Módulos de E/S
Na transmissão em sentido oposto, os dados são também armazenados temporariamente no módulo de E/S, para não reter a memória em uma transferência de dados a baixa velocidade.
Dessa maneira, o módulo de E/S deve ser capaz de realizar operações tanto à velocidade da memória quanto à do dispositivo externo.
43
Módulos de E/S
Finalmente, um módulo de E/S frequentemente é responsável pela detecção de erros e pelo envio de informações de erro para o processador.
Possíveis erros incluem mau funcionamento mecânico ou elétrico sinalizado pelo dispositivo (por exemplo, uma falha de alimentação de papel na impressora ou uma trilha de disco defeituosa), assim como alterações no padrão de bits transmitido por um dispositivo para o módulo de E/S.
44
Módulos de E/S
Para detectar erros de transmissão, é usado algum tipo de código de detecção de erros.
Um exemplo comum é o uso de um bit de paridade em cada caractere de dados.
45
Módulos de E/S
Por exemplo, o código de um caractere ASCII ocupa 7 dos 8 bits de um byte e o valor atribuído ao oitavo bit é determinado de modo que o número total de 1s no byte seja par (paridade par) ou ímpar (paridade ímpar).
Quando um byte é recebido, o módulo de E/S verifica a paridade para determinar se ocorreu um erro.
46
Estrutura do módulo de E/S
47
Estrutura do módulo de E/S
A complexidade de um módulo de E/S e o número de dispositivos externos que ele controla variam consideravelmente.
Uma descrição bastante geral é apresentada a seguir.
A Figura 4 mostra um diagrama de blocos de um módulo de E/S genérico.
48
Estrutura do módulo de E/S
Figura 4. Diagrama de blocos de um módulo de E/S.
49
Estrutura do módulo de E/S
O módulo é conectado ao restante do computador por meio de um conjunto de linhas de sinal (por exemplo, as linhas do barramento do sistema).
Os dados transferidos desse módulo e para esse módulo são armazenados temporariamente em um ou mais registradores de dados.
50
Estrutura do módulo de E/S
Pode também haver um ou mais registradores de estado, que fornecem dados sobre o estado corrente.
Um registrador de estado pode também funcionar como registrador de controle, recebendo do processador informação de controle detalhada.
A lógica interna do módulo interage com o processador por meio de um conjunto de linhas de controle.
51
Estrutura do módulo de E/S
Essas linhas são usadas pelo processador para enviar comandos para o módulo de E/S.
Algumas linhas de controle podem ser usadas pelo módulo de E/S (por exemplo, para sinais de arbitração e de estado).
O módulo de E/S deve também ser capaz de reconhecer e gerar endereços associados aos dispositivos que ele controla.
52
Estrutura do módulo de E/S
Cada módulo de E/S tem um endereço distinto ou, caso ele controle mais de um dispositivo externo, um conjunto de endereços distintos.
Finalmente, o módulo de E/S contém um circuito lógico específico para a interface de cada dispositivo que ele controla.
53
Estrutura do módulo de E/S
O módulo de E/S tem como função fornecer ao processador uma visão simplificada de uma ampla gama de dispositivos.
Existe um grande espectro de capacidades que deve ser fornecido.
54
Estrutura do módulo de E/S
Ele pode esconder detalhes de temporização, de formatos e da operação eletromecânica de um dispositivo externo, permitindo ao processador operar em termos de comandos de leitura e escrita simples e, possivelmente, de comandos para abrir e fechar arquivos.
55
Estrutura do módulo de E/S
Um módulo de E/S, na sua forma mais simples. pode ainda deixar visível para o processador grande parte do trabalho do controle de dispositivos (por exemplo, rebobinar uma fita).
Um módulo de E/S que se encarrega da maior parte dos detalhes de processamento de E/S, apresentando uma interface de alto nível para o processador, é usualmente denominado canal de E/S ou processador de E/S.
56
Estrutura do módulo de E/S
Um módulo de E/S mais primitivo, que requer controle mais detalhado, é normalmente denominado controlador de E/S ou controlador de dispositivo.
Controladores de E/S são mais comuns em microcomputadores, enquanto canais de E/S são usados em computadores de grande porte.
57
E/S Programada
58
E/S Programada
Três técnicas diferentes podem ser usadas para a realização de operações de E/S.
Na E/S programada, os dados são transferidos entre o processador e o módulo de E/S.
O processador executa um programa e tem controle direto da operação de E/S, incluindo a detecção do estado do dispositivo, o envio de comandos de leitura ou escrita e a transferência de dados.
59
E/S Programada
Quando o processador envia um comando para o módulo de E/S, ele tem de esperar até que essa operação seja completada.
Se o processador for mais rápido que o módulo de E/S, essa espera representará um desperdício de tempo de processamento.
60
E/S Programada
Na E/S dirigida por interrupção, o processador envia um comando de E/S e continua a executar outras instruções, sendo interrompido pelo módulo de E/S quando este tiver completado seu trabalho.
Tanto na E/S programada quanto na E/S dirigida por interrupção, o processador é responsável por obter dados da memória principal, em uma operação de saída, e por armazenar dados na memória principal, em uma operação de entrada.
61
E/S Programada
A técnica alternativa é conhecida como acesso direto à memória (direct memory access - DMA).
Nesse caso, a transferência de dados entre o módulo de E/S e a memória principal é feita diretamente sem envolver o processador.
62
E/S Programada
A Tabela 1 relaciona essas três técnicas.
63
E/S Programada
Quando um programa está sendo executado pelo processador, a execução de uma instrução relacionada a E/S faz com que um comando seja enviado para o módulo de E/S apropriado.
Na E/S programada, o módulo de E/S executa a operação requisitada e sinaliza o término da operação carregando um valor apropriado no registrador de estado de E/S (figura 4).
64
E/S Programada
Nenhuma outra ação é executada pelo módulo de E/S para alertar o processador sobre o término da operação.
Em particular, o processador não é interrompido.
Portanto, é responsabilidade do processador verificar periodicamente o estado do módulo de E/S para determinar se a operação foi completada.
65
E/S Programada
Para explicar a técnica de E/S programada, descreveremos primeiramente os comandos de E/S enviados pelo processador para o módulo de E/S e, em seguida, as instruções de E/S executadas pelo processador.
66
E/S Programada
Comandos de E/S
67
E/S Programada - Comandos de E/S
Para executar uma instrução relacionada a E/S, o processador gera um comando de E/S e um endereço, que especifica um módulo de E/S e um dispositivo externo particular.
68
E/S Programada - Comandos de E/S
Quatro tipos de comandos podem ser enviados pelo processador para um módulo de E/S:
- Controle: usado para ativar um periférico e indicar uma ação a ser executada. Por exemplo, uma unidade de fita magnética pode receber um comando para que seja rebobinada ou a cabeça de leitura e gravação seja deslocada um registro para a frente. Esses comandos são característicos de cada tipo particular de dispositivo periférico.
69
E/S Programada - Comandos de E/S
- Teste: usado para testar várias condições de estado associadas a um módulo de E/S e seus periféricos. O processador precisa saber se o periférico requerido está ligado e se está disponível para uso. Além disso, precisa saber se a última operação de E/S foi completada e se houve algum erro.
70
E/S Programada - Comandos de E/S
- Leitura: faz com que o módulo de E/S obtenha um item de dado do periférico e o armazene em uma área de armazenamento temporário interna (representada, na Figura 4, como um registrador de dados). O processador poderá então obter esse item de dado solicitando ao módulo de E/S que o coloque no barramento de dados.
71
E/S Programada - Comandos de E/S
- Gravação: faz com que o módulo de E/S obtenha um item de dado (byte ou palavra) do barramento de dados e, em seguida, o transmita para o periférico.
72
E/S Programada - Comandos de E/S
A Figura 5 mostra um exemplo do uso de E/S programada para ler um bloco de dados de um dispositivo periférico para a memória.
Uma palavra é lida de cada vez.
73
E/S Programada - Comandos de E/S
Para cada palavra lida, o processador permanece em um ciclo de verificação de estado até que se determine que uma palavra está disponível no registrador de dados do módulo de E/S.
O fluxograma apresentado na figura assinala a principal desvantagem dessa técnica: é um processo que consome tempo do processador, mantendo-o desnecessariamente ocupado.
74
75
Figura 5
E/S Programada
Instruções de E/S
76
E/S Programada - Instruções de E/S
Na E/S programada, há uma estreita correspondência entre as instruções de E/S que o processador busca na memória e os comandos de E/S que ele envia para o módulo de E/S, para a execução dessas instruções.
Ou seja, as instruções são facilmente mapeadas em comandos de E/S e, frequentemente, temos uma simples relação de um para um.
77
E/S Programada - Instruções de E/S
A forma das instruções depende da maneira como os dispositivos externos são endereçados.
Tipicamente, há diversos dispositivos de E/S conectados ao sistema por meio de módulos de E/S.
A cada dispositivo é associado um identificador ou endereço distinto.
78
E/S Programada - Instruções de E/S
Quando o processador envia um comando de E/S, esse comando contém o endereço do dispositivo desejado.
Dessa maneira, cada módulo de E/S deve interpretar as linhas de endereço para determinar se o comando lhe é destinado.
79
E/S Programada - Instruções de E/S
Quando o processador, a memória principal e os módulos de E/S compartilham um barramento comum, dois modos de endereçamento diferentes podem ser usados: endereçamento mapeado na memória e endereçamento independente. Na E/S mapeada na memória, existe um único espaço de endereçamento para posições de memória e dispositivos de E/S.
80
E/S Programada - Instruções de E/S
Os registradores de dados e de estado dos módulos de E/S são vistos pelo processador como posições de memória, e as mesmas instruções de máquina são usadas para acessar a memória ou os dispositivos de E/S.
Por exemplo, com dez linhas de endereço, é possível obter uma combinação com um total de 210 = 1024 endereços de memória e de dispositivos de E/S.
81
E/S Programada - Instruções de E/S
Na E/S mapeada na memória, o barramento precisa ter apenas uma linha para leitura e uma linha para escrita.
Alternativamente, ele pode incluir, além das linhas de leitura e escrita, linhas de comando de entrada e saída.
Nesse caso, uma linha de comando especifica se um endereço corresponde a uma posição de memória ou a um dispositivo de E/S.
82
E/S Programada - Instruções de E/S
Qualquer endereço pode corresponder a uma posição de memória ou a um dispositivo de E/S.
Com dez linhas de endereço, o sistema pode incluir 1024 posições de memória e 1024 endereços de E/S.
Como o espaço de endereçamento de E/S é independente do espaço de endereçamento de memória, esse modo é denominado E/S independente.
83
E/S Programada - Instruções de E/S
A Figura 6 compara essas duas técnicas de E/S programada.
A Figura 6a mostra como pode ser a interface do programador para um dispositivo de entrada simples; tal como um teclado, pode aparecer para um programador usando E/S mapeada na memória.
Considere um endereço de 10 bits, uma memória com 512 bytes (endereços 0-511) e até 512 endereços de E/S (endereços 512-1023).
84
E/S Programada - Instruções de E/S
Dois desses endereços (516 e 517) são alocados para a entrada de dados a partir do teclado de um terminal particular.
O endereço 516 corresponde ao registrador de dados e o endereço 517, ao registrador de estado, que também funciona como registrador de controle para a recepção de comandos do processador.
85
E/S Programada - Instruções de E/S
O programa mostrado lê 1 byte de dados do teclado e armazena o valor lido no registrador AC (acumulador) do processador.
Note que o processador permanece em um laço de teste até que o byte de dados esteja disponível.
86
Figura 6. E/S mapeada na memória e E/S independente.
87
E/S Programada - Instruções de E/S
Na E/S independente (Figura 6b), o acesso às portas de E/S é feito por meio de comandos de E/S especiais, que ativam as linhas de comando de E/S do barramento.
Na maioria dos tipos de processador, há um conjunto relativamente grande de instruções que se referem à memória.
Na E/S independente, existe apenas um pequeno número de instruções de E/S.
88
E/S Programada - Instruções de E/S
Dessa maneira, o fato de o repertório grande de instruções existentes para acessar a memória poder também ser usado para E/S é uma vantagem da E/S mapeada na memória, possibilitando uma programação mais eficiente.
Uma desvantagem é que alguns endereços não podem ser usados para referência à memória, sendo associados a dispositivos de E/S.
89
E/S Programada - Instruções de E/S
Tanto a E/S mapeada na memória quanto a E/S independente são comuns.
90
E/S Dirigida por Interrupção
91
E/S Dirigida por Interrupção
O problema da E/S programada é que o processador tem de esperar um longo tempo até que o módulo de E/S requerido esteja pronto para receber ou enviar dados.
Enquanto espera, o processador tem de testar, continuamente, o estado do módulo de E/S.
92
E/S Dirigida por Interrupção
Como resultado, o desempenho global do sistema é severamente degradado.
Uma alternativa é o processador enviar um comando de E/S para um módulo e continuar a executar outras instruções.
O processador será interrompido pelo módulo de E/S quando este estiver pronto para trocar dados com o processador.
93
E/S Dirigida por Interrupção
O processador efetua então a transferência de dados, como na técnica anterior, e depois retoma o seu processamento original.
Vejamos como isso funciona, primeiramente do ponto de vista do módulo de E/S.
Em uma entrada de dados, o módulo de E/S recebe um comando READ (leitura) do processador.
94
E/S Dirigida por Interrupção
Então, lê o dado requerido do periférico especificado.
Quando esse dado estiver em seu registrador de dados, o módulo de E/S sinaliza a ocorrência de uma interrupção do processador por meio de uma linha de controle.
Ele então espera até que o dado lido seja solicitado pelo processador.
95
E/S Dirigida por Interrupção
Quando recebe essa requisição, ele coloca esse dado no barramento de dados e fica preparado para uma nova operação de E/S.
Do ponto de vista do processador, a entrada de dados é executada do seguinte modo.
96
E/S Dirigida por Interrupção
O processador envia um comando READ para o módulo de E/S e prossegue com a execução de outras instruções (por exemplo, de outros programas que estejam sendo executados simultaneamente).
No final de cada ciclo de instrução, ele verifica se existe alguma interrupção pendente.
97
E/S Dirigida por Interrupção
Quando detecta uma interrupção de E/S, ele salva o contexto do programa corrente (por exemplo, o contador de programa e demais registradores) e processa a interrupção, lendo a palavra de dados do módulo de E/S e armazenando-a na memória.
Restaura então o contexto do programa que foi interrompido (ou de algum outro programa) e reinicia sua execução.
98
E/S Dirigida por Interrupção
A E/S dirigida por interrupção é mais eficiente que a E/S programada, pois elimina ciclos de espera desnecessários.
No entanto, ela ainda consome muito tempo do processador, pois cada palavra de dados transferida do módulo de E/S para a memória, ou vice-versa, tem de passar pelo processador.
99
E/S Dirigida por Interrupção
Processamento de interrupção
100
E/S Dirigida por Interrupção - processamento de interrupção
Examinemos mais detalhadamente o papel do processador na E/S dirigida por interrupção.
A ocorrência de uma interrupção dispara certo número de eventos, tanto no hardware quanto no software do processador.
A Figura 7 mostra uma seqüência de eventos típica.
101
Figura 7. Processamento de interrupção simples.
102
E/S Dirigida por Interrupção - processamento de interrupção
Quando um dispositivo completa uma operação de E/S, ocorre a seguinte sequência de eventos de hardware:
1. O dispositivo envia um sinal de interrupção para o processador.
2. Antes de responder a essa interrupção, o processador termina a execução da instrução corrente.
103
E/S Dirigida por Interrupção - processamento de interrupção
3. O processador testa se existe uma interrupção pendente e, quando detectada, envia um sinal de reconhecimento para o dispositivo que enviou a interrupção. O recebimento desse sinal faz com que o dispositivo desative seu sinal de interrupção.
104
E/S Dirigida por Interrupção - processamento de interrupção
4. O processador agora se prepara para transferir o controle para a rotina de tratamento da interrupção. Primeiramente, ele armazena, para posterior recuperação, os dados necessários para retomar a execução do programa corrente a partir do ponto em que foi interrompida.
105
E/S Dirigida por Interrupção - processamento de interrupção
A informação mínima necessária consiste (a) no estado do processador, contido em um registrador denominado palavra de estado de programa (program status word - PSW), e (b) no endereço da próxima instrução a ser executada, contido no contador de programa (program counter - PC). Essas informações podem ser armazenadas na pilha de controle do sistema.
106
E/S Dirigida por Interrupção - processamento de interrupção
5. O processador carrega então o contador de programa com o endereço da rotina de tratamento de interrupção. Dependendo da arquitetura do computador e do projeto do sistema operacional, pode haver uma única rotina de tratamento de interrupção, ou uma rotina para cada tipo de interrupção, ou uma rotina para cada dispositivo e cada tipo de interrupção.
107
E/S Dirigida por Interrupção - processamento de interrupção
Se existir mais de uma rotina de tratamento de interrupção, o processador deve determinar qual deve ser chamada. Essa informação pode ser enviada junto com o sinal de interrupção original ou pode ser obtida pelo envio de uma requisição para o dispositivo que enviou a interrupção, que então responde com a informação necessária.
108
E/S Dirigida por Interrupção - processamento de interrupção
Uma vez que o contador de programa tenha sido carregado com o endereço da rotina de tratamento de interrupção, o processador reinicia o ciclo de execução de instruções, buscando a próxima instrução a ser executada.
Como a busca da instrução é baseada no conteúdo do contador de programa, o controle é transferido para a rotina de tratamento de interrupção.
109
E/S Dirigida por Interrupção - processamento de interrupção
A execução dessa rotina resulta nas seguintes operações:
6. Nesse ponto, os valores do contador de programa e do PSW do programa interrompido já terão sido devidamente armazenados na pilha do sistema para posterior restauração. Entretanto, outras informações que fazem parte do 'estado' do programa em execução também precisam ser guardadas.
110
E/S Dirigida por Interrupção - processamento de interrupção
Em particular, o conteúdo dos registradores do processador, uma vez que esses registradores podem ser usados pela rotina de tratamento de interrupção. Assim todos esses valores, além de outras informações de estado, precisam ser salvos. Tipicamente, a rotina de tratamento de interrupção começa armazenando o conteúdo de todos os registradores na pilha do sistema.
111
E/S Dirigida por Interrupção - processamento de interrupção
7. A rotina de tratamento de interrupção é então iniciada. O tratamento de interrupção inclui a verificação de informações de estado relacionadas à operação de E/S ou a outro evento que tenha causado a interrupção. Isso pode também envolver o envio de comandos adicionais ou de sinais de reconhecimento para o dispositivo de E/S.
8. Quando o processamento da interrupção é concluído, os valores anteriormente armazenados na pilha são restaurados nos registradores.
112
E/S Dirigida por Interrupção - processamento de interrupção
9. A última operação consiste em restaurar os conteúdos do PSW e do contador de programa. Com isso, a próxima instrução executada será uma instrução do programa previamente interrompido.
Note que é importante que todos os dados que caracterizam o estado do programa sejam salvos, para que seja possível retomar a execução desse programa posteriormente.
113
E/S Dirigida por Interrupção - processamento de interrupção
Isso porque uma interrupção não é uma rotina chamada pelo próprio programa.
Uma interrupção pode ocorrer a qualquer instante e, portanto, em qualquer ponto da execução de um programa de usuário. Sua ocorrência é imprevisível.
114
E/S Dirigida por Interrupção - processamento de interrupção
O programa que solicitou a operação de E/S ocasionando a interrupção pode não ter nada em comum com o programa que é interrompido, podendo até pertencer a um usuário diferente.
115
E/S Dirigida por Interrupção
Aspectos de projeto
116
E/S Dirigida por Interrupção - Aspectos de projeto
Duas questões de projeto devem ser consideradas na implementação de E/S dirigida por interrupção: primeira, como o processador determina, entre os vários módulos de E/S existentes, qual dispositivo enviou a interrupção, e segunda, quando ocorrerem várias interrupções, como o processador decide qual ele deve processar.
117
E/S Dirigida por Interrupção - Aspectos de projeto
Quatro tipos de técnicas são mais usadas para identificar o dispositivo que enviou uma interrupção:
- Múltiplas linhas de interrupção
- Identificação por software
- Daisy chain (identificação por hardware, vetorada)
- Arbitração do barramento (vetorada)
118
E/S Dirigida por Interrupção - Aspectos de projeto
Múltiplas linhas de interrupção entre o processador e os módulos de E/S. Entretanto, apenas um pequeno número de linhas do barramento, ou pinos do processador, pode ser usado para as linhas de interrupção. Por isso, mesmo nesse caso, é bem provável que diversos módulos de E/S sejam conectados a uma mesma linha.
119
E/S Dirigida por Interrupção - Aspectos de projeto
Identificação por software: Quando o processador detecta uma interrupção pendente, ele desvia a execução para uma rotina de tratamento de interrupção que interroga cada módulo de E/S para determinar qual deles causou a interrupção. A desvantagem da identificação por software é que consome muito tempo.
120
E/S Dirigida por Interrupção - Aspectos de projeto
Daisy chain: realiza a identificação por hardware, usando uma conexão entre os módulos e o processador, na forma de uma cadeia circular. Todos os módulos de E/S compartilham uma linha de requisição de interrupção comum. A linha de reconhecimento de interrupção é estruturada em uma cadeia circular. Quando o processador recebe um sinal de interrupção, ele envia um sinal de reconhecimento de interrupção, que se propaga por meio de uma série de módulos de E/S até chegar àquele que causou a interrupção.
121
E/S Dirigida por Interrupção - Aspectos de projeto
Arbitração do barramento: Para enviar um sinal de interrupção, o módulo de E/S precisa primeiramente obter o controle do barramento. Dessa maneira, apenas um módulo de E/S pode ativar a linha de interrupção de cada vez. Quando o processador detecta a interrupção, ele responde por meio da linha de reconhecimento de interrupção. Então, o módulo que causou a interrupção coloca seu vetor nas linhas de dados.
122
E/S Dirigida por Interrupção - Aspectos de projeto
As técnicas descritas anteriormente servem para identificar o módulo de E/S que causou uma interrupção, além de estabelecer prioridades para as interrupções pendentes.
Quando diversas linhas de interrupção são usadas, o processador seleciona a linha de maior prioridade. Na técnica de identificação por software, a ordem em que os módulos são interrogados determina suas prioridades.
123
E/S Dirigida por Interrupção - Aspectos de projeto
Da mesma maneira, a ordem dos módulos na conexão em cadeia circular, usada na técnica daisy chain, determina suas prioridades.
Finalmente, na técnica de arbitração do barramento, pode ser usado um esquema de prioridades.
124
Acesso Direto à Memória (DMA)
125
Acesso Direto à Memória (DMA)
Desvantagens da E/S programada e da E/S dirigida por Interrupção
A E/S dirigida por interrupção, embora mais eficiente que a E/S programada, ainda requer uma intervenção ativa do processador para transferir dados entre a memória e o módulo de E/S, e toda transferência é feita por um caminho que passa pelo processador.
126
Acesso Direto à Memória (DMA)
Desse modo, essas duas formas de E/S possuem duas desvantagens inerentes:
1. A taxa de transferência de E/S é limitada pela velocidade com que o processador pode testar e servir um dispositivo.
2. O processador se ocupa de gerenciar a transferência de dados de E/S. tendo de executar várias instruções a cada transferência.
127
Acesso Direto à Memória (DMA)
Essas duas desvantagens são, de certo modo, conflitantes.
Considere a transferência de um bloco de dados.
Na E/S programada, o processador é responsável pela E/S e pode transferir dados a uma taxa mais alta, à custa de não poder executar outras operações.
128
Acesso Direto à Memória (DMA)
Na E/S dirigida por interrupção, o processador fica, até certo ponto, liberado para executar outras operações, mas a preço de uma taxa de transferência de E/S mais baixa.
Contudo, ambos os métodos têm um impacto adverso tanto na atividade do processador quanto na taxa de transferência de E/S.
129
Acesso Direto à Memória (DMA)
Uma técnica mais eficiente para a transferência de grandes volumes de dados é a técnica de acesso direto à memória (DMA).
A técnica de DMA envolve um módulo adicional no barramento do sistema.
Esse módulo ou controlador de DMA (Figura 8) é capaz de imitar o processador e, de fato, controlar o sistema do processador.
130
Figura 8. Diagrama de blocos de um módulo DMA.
131
Acesso Direto à Memória (DMA)
Isso é necessário para que o módulo de DMA possa transferir dados diretamente de e para a memória por meio do barramento do sistema.
Para esse propósito, um módulo de DMA pode tanto usar o barramento apenas quando este não está sendo usado pelo processador quanto forçar o processador a suspender sua operação temporariamente.
132
Acesso Direto à Memória (DMA)
Essa última técnica é mais comum, sendo conhecida como roubo de ciclo, porque o módulo de DMA de fato rouba um ciclo de barramento do processador.
Quando o processador deseja ler ou escrever um bloco de dados, ele envia um comando ao módulo de DMA com as seguintes informações:
133
Acesso Direto à Memória (DMA)
- Indicação de operação de leitura ou de escrita, enviada pela linha de controle de leitura ou de escrita entre o processador e o módulo de DMA.
- O endereço do dispositivo de E/S envolvido, enviado nas linhas de dados.
- O endereço de memória para início de leitura ou escrita de dados, enviado pelas linhas de dados e armazenado pelo módulo de DMA no seu registrador de endereços.
134
Acesso Direto à Memória (DMA)
- Número de palavras a serem lidas ou escritas, também enviado pelas linhas de dados e armazenado no registrador contador de dados.
Depois de enviar o comando, o processador pode continuar executando outras instruções.
A execução da operação de E/S é delegada ao módulo de DMA.
135
Acesso Direto à Memória (DMA)
Ele transfere diretamente todo o bloco de dados, uma palavra de cada vez, diretamente de ou para a memória, sem a intervenção do processador.
Quando a transferência é concluída, o módulo de DMA envia um sinal de interrupção para o processador.
Dessa maneira, o processador é envolvido apenas no início e no fim da transferência do bloco de dados.
136
Acesso Direto à Memória (DMA)
O módulo de DMA então transfere uma palavra e retorna o controle para o processador.
Note que isso não é uma interrupção; o processador não tem de salvar o contexto e executar qualquer outra ação.
Ele apenas efetua uma pausa, com duração de um ciclo de barramento.
137
Acesso Direto à Memória (DMA)
O efeito global é tornar a execução de instruções um pouco mais lenta.
Entretanto, no caso de transferência de um bloco de palavras, a técnica de DMA é bem mais eficiente que a E/S dirigida por interrupção ou a E/ S programada.
O mecanismo de DMA pode ser configurado de diversos modos.
138
Acesso Direto à Memória (DMA)
Algumas possibilidades são mostradas na Figura 9.
No primeiro exemplo, todos os módulos de E/S compartilham o uso de um mesmo barramento do sistema.
O módulo de DMA atua como um processador substituto, usando E/S programada para transferir dados diretamente entre a memória e os módulos de E/S. Essa configuração, embora barata, é claramente ineficiente.
139
Figura 9. Configurações alternativas de DMA.
140
Acesso Direto à Memória (DMA)
Assim como no caso da E/S programada controlada por processador, a transferência de cada palavra consome dois ciclos de barramento.
O número de ciclos de barramento requeridos pode ser diminuído substancialmente com a integração das funções de acesso direto à memória e de E/S.
141
Acesso Direto à Memória (DMA)
Isso significa que deve existir um caminho entre o módulo de DMA e um ou mais módulos de E/S, independente do barramento do sistema.
A lógica de controle do DMA pode ser parte de um módulo de E/S ou ser um módulo separado que controla um ou mais módulos de E/S.
142
Acesso Direto à Memória (DMA)
Essa idéia pode ser aprimorada, com o uso de um barramento exclusivo para E/S, que conecta os módulos de E/S ao módulo de DMA.
Isso reduz para apenas um o número de interfaces de E/S do módulo de DMA e possibilita uma configuração que pode ser facilmente expandida.
143
Acesso Direto à Memória (DMA)
Nesses dois casos, o barramento do sistema, compartilhado entre o módulo de DMA, o processador e a memória, é usado pelo módulo de DMA apenas para trocar dados com a memória.
A transferência de dados entre o módulo de DMA e os módulos de E/S é feita fora do barramento do sistema.
144
Recursos extra
145
Vídeo aulas úteis
146
Referências
147
Livro(s) referência
A. Tanenbaum. Organização Estruturada de Computadores. Prentice Hall Brasil.
Capítulo 5.5.7
W. Stallings. Arquitetura e Organização de Computadores. SP. Prentice Hall.
Capítulo 6
M. A. Monteiro. Introdução à Organização de Computadores. ETC Editora.
Capítulo 10
148
Sistemas Entrada/Saída
Organização e Arquitetura de Computadores
Alysson Filgueira Milanez