Operação de Módulos de I/O
De acordo com a forma como a CPU se envolve na transferência dos dados, os módulos de I/O podem ser implementados de três maneiras básicas:
- I/O programado;
- I/O com Interrupções;
- I/O com Acesso Direto à Memória (DirectMemory Access - DMA).
I/O Programado
No modo I/O programado, os dados são trocados diretamente entre o processador
e o mó Operação de Módulos de I/O dulo de I/O e o processador deve executar um programa que verifique o
estado do módulo de I/O, preparando-o para a operação, enviando o comando
que deve ser executado e aguardando o resultado do comando para então efetuar
a transferência entre o módulo de I/O e algum registrador do processador. Neste
modo, o processador não pode executar outras tarefas enquanto aguarda a operação do módulo de I/O, e deverá permanecer em espera durante toda a operação
executada no periférico.
O módulo de I/O se relaciona com o processador por meio de comandos ou
códigos de controle transformados em sinais enviados ao módulo, que indica qual
operação deverá ser realizada. Normalmente os comandos do módulo de I/O têm
equivalência direta com as instruções do processador, facilitando sua operação
integrada.
Como é possível para um módulo de I/O controlar mais de um dispositivo
periférico, são associados endereços para cada um destes periféricos, de forma a
permitir sua operação individualizada. Existem duas formas para a interpretação
destes endereços por parte dos módulos de I/O quando há o compartilhamento
de barramentos do sistema:
a) Mapeada em Memória: o módulo de I/O opera dentro do espaço de endereçamento da memória, usando um conjunto de endereços reservados. Assim o processador trata os registradores de status e dados do módulo de I/O como posições
normais de memória utilizando operações de leitura e escrita;
b)Mapeada em I/O: existe um espaço de endereçamento independente para os
dispositivos de I/O, nos quais as portas de I/O passam a ser acessíveis apenas por
operações especiais de I/O. Utilizando esta forma há uma maior simplicidade e a
disponibilidade de um maior conjunto de instruções, embora haja um reduzido
espaço em memória devido à reserva de endereços para portas de I/O. Com esse
modo, há uma maior segurança nas operações e um maior espaço de endereçamento. Os microcomputadores IBM PC compatíveis são um exemplo desta utilização,
no caso, para enviar-se dados ao monitor de vídeo padrão do sistema devem ser
utilizados os endereços de I/O na faixa de 03D0h a03DFh, enquanto que o acesso
às placas de som tipo SoundBlaster devem usar o endereço 0220h.
I/O com interrupções
Para contornar o problema da espera ociosa do processador por operações nos
dispositivos periféricos, pode ser utilizado o mecanismo das interrupções, ou seja,
o I/O por meio de interrupções. A interrupção permite que um dispositivo ganhe
a atenção imediata do processador para concluir sua tarefa (DEITEL, 2005).
Assim, quando o processador envia um comando para o módulo de I/O, o
mesmo pode passar a executar outra tarefa, sem a necessidade de monitorar o
módulo acionado. Quando a operação for concluída, o módulo de I/O interrompe
o processador, acionando uma interrupção para requisitar a troca de dados com
o processador. O processador executa então a troca de dados, liberando o módulo
de I/O e retomando o processamento anterior (STALLINGS, 2002).
A operação de I/O com interrupções envolve:
a) O processador envia um comando ao módulo de I/O, que a realiza de modo
independente;
b) O processador passa a executar outra tarefa ou um outro processo;
c) Ao finalizar a operação requisitada, o módulo de I/O sinaliza uma interrupção
para o processador;
d) Ao término da instrução em execução, o processador verifica a sinalização de
uma interrupção, identificando o dispositivo que a originou e sinaliza enviando
um sinal de reconhecimento;
e) O processador salva o contexto da tarefa atual na pilha, preservando assim o
conteúdo do contador de programa e demais registradora;
f) O processador carrega o endereço da rotina de tratamento da interrupção detectada. Tais endereços são armazenados em uma região pré-determinada da memória,
denominada vetor de interrupções;
g) A rotina de tratamento da interrupção é executada e os dados são lidos do módulo de I/O para um registrador do processador e depois transferidos para uma
área de memória apropriada;
h) Finalizada a rotina de tratamento da interrupção, o processador restaura o contexto do processo que foi interrompido;
i) O processador retorna ao processamento da tarefa no ponto em que foi interrompida.
A operação de dispositivos de I/O utilizando interrupções permite que o processador continue executando enquanto o módulo de I/O realiza a operação solicitada,
melhorando o desempenho do sistema.
I/O com Acesso Direto à Memória (DMA)
As técnicas de I/O programado e I/O com interrupções possuem a desvantagem de
terem uma limitação da velocidade de transferência de dados, pois o processador
fica responsável por transferir os dados do módulo para a memória.
Para solucionar este problema foi desenvolvida uma outra técnica denominada
I/O com acesso direto à memória ou DMA (Direct Memory Access). Esta técnica
utiliza uma única interrupção para efetuar a transferência de um bloco de dados
diretamente entre o periférico e a memória primária, sem o envolvimento do processador, reduzindo a quantidade de operações necessárias e otimizando o processo.
Para isso, é necessária a existência de um módulo adicional, denominado controlador de DMA, cuja operação é (STALLINGS, 2002):
1. O processador envia comando de leitura ou escrita para controlador de DMA;
2. O processador continua seu trabalho enquanto DMA efetua a transferência de
dados do dispositivo de I/O;
3. Ao final da operação, o controlador de DMA aciona uma interrupção para sinalizar o término da operação;
4. O processador pode executar a rotina de tratamento da interrupção, processando
os dados lidos ou produzindo novos dados para serem escritos.
Este método é relativamente mais rápido do que o I/O programado ou I/O via
interrupções pois utiliza apenas uma única interrupção, liberando o processador
para executar outras tarefas e a transferência dos dados ocorre em bloco diretamente entre o periférico e a memória.
Comentários
Postar um comentário