Você está na página 1de 45

Entradas e Saídas

Arquitectura de Sistemas
Computacionais
Objectivos Gerais

 No final deste módulo os formandos


deverão conhecer a organização
lógica de um sistema computacional
Objectivos Específicos

 No final deste módulo os formandos


deverão ser capazes de:
 Identificar os componentes lógicos de um
sistema computacional
 Explicar a interligação entre estes
componentes
 Explicar o funcionamento interno destes
componentes
Entradas e Saídas
 De todos os grandes blocos que constituem
um sistema computacional, falta-nos ver
um: o sistema de entradas e saídas.

Entradas
Memória CPU e
Saídas

BARRAMENTO (Bus)
Entradas e Saídas
 Entradas e Saídas (abrev. E/S) ou, em
inglês, Input/Output (I/O)
 Tal como o nome indica, permite a entrada e a saída de
dados nos sistemas computacionais;
 Meios pelos quais é possível interagir com a máquina;
Como são ligados os dispositivos
de entrada e saída?
 Por meio, obviamente, de um barramento.

 É necessária, a maior parte das vezes, a presença


de uma placa controladora.

E/S

Placa
Memória CPU Control. discos Etc…
gráfica
Como são ligados os dispositivos
de entrada e saída?
 O CPU interage com os dispositivos de entrada e
saída por meio de operações de escrita e leitura, tal
como faz na memória.

 Os dispositivos de E/S possuem registos especiais


para interacção – escrita e leitura de dados,
configuração, etc.

 Torna-se claro que estes registos também têm que


ser endereçáveis!
Exemplo: os registos da porta
paralela

 As portas paralelas mais antigas eram comandadas


por apenas 3 registos de 8 bit cada:

 Data Port – O byte escrito para aqui “aparecia” nas linhas


de dados da porta;

 Status Port – O byte lido daqui continha informação das


linhas de estado vindas da impressora (busy,
acknowledge, paper out...) e se se havia gerado uma
interrupção;

 Control port – Permitia configuração da porta e manipular


linhas de controlo (strobe, select printer...)
Registos em geral
 O caso anterior é paradigmático no que toca ao tipo
de registos encontrados para E/S

 DADOS (data) – registos por onde se faz a entrada e


saída dos dados propriamente dita;

 ESTADO (status) – dá conhecimento acerca do estado do


periférico: se está pronto a receber/fornecer dados, se
houve erros, etc;

 CONTROLO (port) – configuração e manipulação:


velocidade, escrita/leitura, etc;
Endereçamento de entradas e
saídas (E/S)
 A leitura/escrita para os registos de E/S
não difere da leitura/escrita numa posição
de memória.
 Podem-se reservar alguns endereços de
“memória” que não são memória de todo, Memory
mas sim registos de E/S;
I/O
 Chama-se a isto E/S mapeadas em
memória – Memory-Mapped I/O
Memory
Endereçamento de entradas e
saídas (E/S)
 Noutras arquitecturas há um espaço de
endereçamento separado para entradas e saídas;

 Operações de leitura/escrita neste espaço de


endereçamento recorrem a instruções do CPU
distintas das usadas para memória;

 Chama-se a isto E/S isoladas – Isolated I/O

 Nota: um espaço de E/S isoladas pode coexistir


com mapeamento de memória! (ex: IBM-PC)
O bus ISA, novamente
 Acesso ao espaço de
endereçamento de memória
 Escrita
 Leitura
 Acesso ao espaço de
endereçamento de E/S
isoladas
 Escrita
 Leitura
Recursos usados por um
dispositivo de E/S
 Exemplo: porta paralela LPT1

 Endereços
usados
(intervalo)
Recursos usados por um
dispositivo de E/S
 Exemplo: placa gráfica
 Endereços
usados
(intervalo)
Isolated I/O
Memory-
mapped I/O
E/S programadas
- Programmed I/O (PIO)
 A maneira mais simples de fazer transferências
de dados é usando entradas e saídas
programadas (PIO – Programmed I/O)

 Neste método o CPU é o responsável por todas


as transações efectuadas
 “Lê aqui, escreve acolá”
Programmed I/O (PIO) com
polling
Início
 Todas as acções são
tomadas pelo CPU;
N
Periférico pronto?
 O CPU interroga
(polls) a cada S
momento o periférico
acerca do seu estado Envia dados
(livre para receber
dados, pronto a N
Terminou?
fornecer dados,...)
S
Fim
Programmed I/O (PIO) com
polling
 Vantagens: Início
 Simplicidade de
funcionamento;

 Não necessita de hardware


extra; N
Periférico pronto?
 Desvantagens
 Tem o CPU ocupado com S
esta tarefa; Envia dados
 O CPU, tipicamente muito
mais rápido, passa a maior N
parte do tempo no ciclo Terminou?
assinalado a não fazer nada
(busy waiting).
S
Fim
Programmed I/O (PIO) com
interrupções

 Neste método, o periférico gera uma


interrupção por forma a assinalar um
evento

 Exemplo: chegada de dados, livre para


receber dados, etc...

 Evita-se assim o polling constante e a


respectiva perda de tempo associada.
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 Programa  Interrupt handler – é
 ... chamado de cada vez
 Copia os dados a que o periférico está
enviar para uma área disponível para
de memória receber mais dados
denominada buffer
 Verifica se há mais
 Activa o interrupt dados a enviar
handler daquele  Se sim, envia o bloco
periférico de dados seguinte;
 Envia um comando de  Retorna, devolvendo o
escrita. controlo ao programa
 Continua, interrompido.
“esquecendo-se” da
tarefa de enviar os
dados;
 ...
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 Exemplo: enviar dois blocos de
bytes para a impressora
buffer (memória)

interrupt handler

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 O programa que deseja imprimir
copia os dados para o buffer
buffer (memória)

interrupt handler

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 Programa activa o interrupt handler
e envia o primeiro bloco de bytes
buffer (memória)

interrupt handler

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 Programa (e CPU!) entretido com outras tarefas
úteis (área preenchida), enquanto impressora
"digere" o primeiro bloco de bytes
buffer (memória)

interrupt handler

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 Impressora pronta a receber mais
bytes: gera interrupção e o controlo
passa para o interrupt handler
buffer (memória)

interrupt handler

interrupção

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 O interrupt handler fornece outro bloco
de bytes à impressora e rapidamente
retorna ao programa interrompido
buffer (memória)

interrupt handler

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 Programa faz mais trabalho útil
(área preenchida), e depois a
impressora gera nova interrupção
buffer (memória)

interrupt handler
interrupção

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita
 O handler verifica que não há mais
dados a enviar e simplesmente
retorna ao programa principal.
buffer (memória)

interrupt handler

programa
Programmed I/O (PIO) com
interrupções – exemplo de escrita

 Conclusão: o CPU foi continuando a


trabalhar noutras tarefas
 Desapareceu o busy-waiting
 Interrompido apenas por curtos periodos
estritamente necessários

programa
DMA – Direct Memory Access
(acesso directo à memória)

 Melhor ainda do que interromper o


programa em execução de tempos a
tempos é não o interromper (quase) nunca;

 Para tal usa-se um mecanismo de DMA


(acesso directo à memória)
DMA – Direct Memory Access
(acesso directo à memória)
 Para tal, é preciso um hardware espedífico: o
controlador de DMA;

 O controlador de DMA acaba por ser um


“empregado” a quem é entregue a tarefa de fazer a
transferência de um bloco de dados;

 Note que este mecanismo é empregue para


transferências razoavelmente grandes – acessos a
discos rígidos ou diskettes
DMA – Direct Memory Access
Sequência de passos

 O CPU “dá instruções” ao controlador de


DMA da tarefa a desempenhar:
 Origem, destino e quantidade de dados;

 O controlador de DMA faz a transferência


dos dados
 Como?
DMA – Direct Memory Access
Sequência de passos
 Como o controlador de DMA faz a
transferência
 Note que o controlador tem capacidade de se
tornar um bus master (“senhor do barramento”).
 Pede a concessão do bus e, quando concedido
(pelo mecanismo de arbitragem), faz uma
transferência propriamente dita, repetindo isto
quantas vezes forem necessárias até se
esgotarem os dados;
 Por fim, o controlador de DMA gera uma
interrupção indicando ao Sist. Operativo o
fim da transferência;
DMA – Direct
Memory
Access
Sequência de
passos
DMA – Direct Memory Access
 Vantagens
 Liberta o CPU do trabalho de transferir ele
mesmo os dados, sendo necessária a sua
intervenção apenas no princípio e no fim;
DMA – Direct Memory Access
 Desvantagens
 Necessita de hardware extra;

 O DMA concorre com o CPU pelo acesso à memória,


“estorvando-o”, perdendo assim alguma vantagem deste
mecanismo
 Mais uma vez, a “cache” evita que o CPU esteja sempre a
recorrer à DRAM, aliviando este problema;

 É preciso muito cuidado com:


 Memória virtual: traduzir correctamente os endereços;
 Consistência entre DRAM e “cache”, não vá o CPU ler
informação da cache entretanto modificada na DRAM pelo
DMA ou vice-versa;
O DMA no IBM-PC
 O DMA foi uma característica
desde logo implementada nos
primeiros PC’s
 Havia um circuito integrado dedicado a
isso: o Intel 8237, controlador de DMA
de quatro canais.
 Sinais referentes ao DMA aparecem
no barramento ISA:
 Linhas DRQ (setas “a cheio”) – DMA
Request (pedido de DMA);
 Linhas DACK (setas pontilhadas) –
DMA Acknowledge – concessão de
DMA;
O DMA no IBM-PC
 Quando o barramento ISA foi
aumentado para 16 bit, foi
acrescentado mais um controlador de
DMA em cascata com o existente:
 Assim, o segundo controlador usava
um canal do já existente, perfazendo
um total de 4+4-1=7 canais
disponíveis;
O DMA no IBM-PC
 Um canal de DMA é, portanto, um
recurso atribuído a um dispositivo

 Tal como as linhas de interrupções


 A partilha de um canal de DMA pode gerar
conflitos;

 Antigamente era necessário configurar


com jumpers qual o canal de DMA usado
por um dado dispositivo;
O DMA no IBM-PC
O DMA no IBM-PC
 O mecanismo de DMA standard dos PC’s foi ignorado
pelos discos IDE durante muito tempo, usando-se antes
Programmed I/O (PIO);

 Razão? Tal como muitas coisas nos PC’s, o DMA


standard rapidamente se tornou obsoleto, sendo muito
lento para o exigido para um disco IDE mesmo dos mais
primitivos!
 Por razões de compatibilidade com material anterior, o
mecanismo de DMA existente não podia ser alterado.
Nota-se, no slide anterior, que ainda é suficientemente
bom para uma drive de diskettes (algumas dezenas de
KBytes por segundo);
O DMA no IBM-PC
 O DMA chegou aos discos IDE quando os
próprios discos passaram a ter integrados
neles próprios um controlador de DMA – Discos
Ultra DMA;

 A outra opção
é PIO apenas
O DMA no IBM-PC
 Ao longo dos tempos tanto os métodos de
transferência PIO como Ultra DMA foram sofrendo
evoluções, sendo conhecidos como
 PIO Mode 0 até PIO Mode 4;
 Ultra DMA Mode 1, Ultra DMA Mode 2…

Cycle Time Maximum Transfer


Defining Standard
PIO Mode (nanoseconds) Rate (MB/s)

Mode 0 600 3.3 ATA

Mode 1 383 5.2 ATA

Mode 2 240 8.3 ATA

Mode 3 180 11.1 ATA-2

Mode 4 120 16.7 ATA-2


O DMA no IBM-PC
Cycle
Maximum
Time
Ultra DMA Transfer Rate Defining Standard
(nanose
Mode (MB/s)
conds)

Mode 0 240 16.7 ATA/ATAPI-4

Mode 1 160 25.0 ATA/ATAPI-4

Mode 2 120 33.3 ATA/ATAPI-4

Mode 3 90 44.4 ATA/ATAPI-5

Mode 4 60 66.7 ATA/ATAPI-5

Mode 5 40 100.0 ATA/ATAPI-6?


Bibliografia
 William Stallings, “Computer Organization and
Architecture – Designing for Performance”,
Prentice-Hall, USA

 David A. Patterson, John, L. Hennessy,


“Computer Organization & Design – The
Hardware/Software Interface”, Morgan
Kaufmann Publishers

 James Goodman, Karen Miller, “A


Programmer’s View of Computer Architecture”,
Saunders College Publishing, USA
Agradecimentos

Na elaboração destes acetatos foram utilizados


conteúdos de anos anteriores da disciplina de
Arquitectura de Sistemas Computacionais
leccionados pelo Prof. Ricardo Abreu e Prof.
Miguel Bergano ao CET de IMRSI da Escola
Superior de Tecnologia e Gestão de Águeda (ano
lectivo 2009/2010).