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

Postagens mais visitadas deste blog

Transferência de arquivo por FTP

TIPOS DE PROCESSOS

Tipos de Servidores