:: Organização de Computadores II ::






Instruções de entrada/saída

Vamos aqui apresentar três esquemas de E/S. São eles:
1. E/S programada com espera ocupada
2. E/S acionada por interrupção
3. E/S com acesso direto à memória

O esquema de E/S programada é utilizado em alguns microprocessadores mais simples, estes têm uma única instrução de entrada e uma única instrução de saída.
Cada uma destas instruções seleciona um dos dispositivos de E/S. Um único caractere é transferido entre um registrador situado na CPU e o dispositivo de E/S selecionado. O precessador deve executar uma instrução explicita para cada e todo caractere recebido ou enviado.

Figura 5.41

O registrador de status de teclado tem 2 bits que são usados e 6 bits que não são usados. O bit mais à esquerda (7) é colocado em 1 ao chegar um caractere. Se o software colocar em 1 o bit 6, uma interrupção é gerada, de outra forma não o é. Ao usar E/S programada, para entrada, a CPU normalmente fica em loop lendo repetidamente o registrador de status do teclado, esperando o bit 7 para continuar.
Quando isto acontece, o software lê o registrador buffer do teclado para obter o caractere. A leitura do registrador de dados to teclado faz com que o bit de pronto (ready) vá para 0. A saída é feita de forma semelhante.
A principal desvantagem da E/S programada é que a CPU gasta a maior parte de seu tempo em loop, esperando um dispositivo ficar pronto, isto torna o processo dispendioso.
Uma maneira de se livrar da espera ocupada é fazer com que a CPU ao iniciar um dispositivo de E/S informe-o para gerar uma interrupção quando estiver terminado. Isto é feito. Ligando o bit de habilita interrupção em um registrador de dispositivo, o software pode pedir ao hardware para enviar um sinal quando a E/S estiver terminada.
O problema é que se requer uma interrupção para cada caractere transmitido. Processar uma interrupção é caro. Necessitamos então de uma maneira de nos livrarmos da maioria das interrupções.
A solução seria acrescentarmos uma nova pastilha, controlador de DMA (acesso direto à memória) para o sistema, com acesso direto ao barramento.
A pastilha DMA possui (pelo menos) quatro registradores internamente, todos os quais podem ser carregados pelo software em execução na CPU. O primeiro deles contém o endereço de memória a ser lido ou escrrito. O segundo contém o contador de quantos bytes (ou palavras) devem ser transferidos(as). O terceiro especifica o numero do dispositivo ou endereço do espaço de E/S a ser usado. O quarto informa se os dados devem ser lidos ou escritos no dispositivo de E/S.
Apesar do DMA aliviar enormemente a CPU da carga de E/S, o processo tem alguns custos. Se um dispositivo de alta velocidade, tal como um disco, estiver sendo executado pelo DMA serão necessários muitos ciclos de barramento, tanto para referências a memória quanto para referências a dispositivos. Durante estes ciclos, a CPU terá de esperar (o controlador de DMA possui sempre prioridade de uso do barramento à da CPU, pois os dispositivos de E/S freqüentemente não podem tolerar atrasos). O processo de se ter um controlador de DMA tomando ciclos de barramento da CPU é denominado roubo de ciclos. De qualquer forma o ganho de não se ter de tratar uma interrupção a cada byte (ou palavra) transferido de longe compensa a perda resultante dos roubos de ciclos. O DMA é o método normal de se fazer E/S em todos os computadores.
Voltar