ARQUITETURA DE COMPUTADORES II
Modos de Transferência
Acesso Direto à Memória (DMA)
Prof. César Augusto M. Marcon
2 / 18
DMA – Acesso Direto à Memória
• Problema
– Interrupção não necessita que CPU aguarde por eventos
– Porém CPU é responsável por realizar transferência de dados
• Solução
– DMA
• Funcionamento
– Dispositivo controlador (DMA Controller - DMAC) é responsável pela
transferência de dados
• Características de funcionamento
– Mecanismos de interrupção continuam sendo utilizados
• Mas apenas no término de um evento de E/S, ou na ocorrência de erros
– Comparando com polling e interrupção, DMA deve ser utilizado para
interface de periféricos que necessitem de grande vazão
– Durante operação DMAC se torna mestre do barramento e controla
transferência entre E/S e Memória
3 / 18
DMA – Acesso Direto à Memória
• Considerações
– Se a CPU precisar do barramento durante o DMA, ocorrerá atraso,
uma vez que a memória está ocupada
– Utilizando caches no processador o desempenho irá melhorar, uma
vez que o processador não precisará aguardar pela liberação do
barramento
4 / 18
Passos Genéricos na Transferência com DMA
1. CPU programa DMAC com
–
–
–
–
Identificação do dispositivo que solicitou DMA
Operação a ser realizada no dispositivo (escrita/leitura)
Endereço origem e destino (da memória principal e do periférico)
Número de bytes a serem transmitidos
2. DMAC assume barramento, iniciando a operação
– Transferência inicia quando dado está disponível. O DMAC fornece o
endereço de leitura ou escrita. Se requisição necessitar mais de uma
transferência, o DMAC gera próximo endereço de memória
– Por meio deste mecanismo o DMA pode transferir milhares de bytes do entre
periférico e memória, sem interromper a CPU
3. Concluída transferência de DMA, DMAC interrompe CPU que
poderá verificar se operação foi realizada com sucesso examinando
memória ou interrogando DMAC
•
Uma vez programado DMAC, DMAC e CPU operam em paralelo
5 / 18
Arquitetura Exemplo de DMA
Transferência de Dados Exemplo
Para os dados irem de um dispositivo para
memória:
1.
2.
3.
4.
5.
6.
7.
8.
Dispositivo assinala DMAREQ
para o DMAC
DMAC assinala BUSREQ ao
micro-processador
Assim que possível, a CPU
assinala BUSACK
DMAC indica endereço para
escrever os dados no barramento
de endereço
DMAC assinala DMAACK para o
dispositivo e WRITE para a
memória
Dispositivo utiliza o barramento de
dados
DMAC libera DMAACK, o
endereço de barramento e
BUSREQ
CPU libera BUSACK e continua
executando instruções
6 / 18
Exercícios
1. Qual fração de tempo da CPU é consumida na operação
de DMA considerando as informações que seguem?
• CPU operando a 50 MHz
• HD transferindo dados a 2 MBps continuamente, utilizando DMA
• Duração da programação do controlador de DMA pela CPU necessita
1.000 ciclos de relógio
• Duração da rotina de interrupção para tratar término do DMA é de
500 ciclos de relógio
• Cada operação de transferência do disco manipula 4 KB
7 / 18
Solução de Exercício
1. Solução:
Freqüência de operação = 50 MHz
Período do relógio = 1 / 50 MHz = 20 ns
Ciclos para programação do DMAC = 1.000 ciclos
Tempo para programação do DMAC = 1.000 ciclos * 20 ns = 20 us
Ciclos para interrupção de DMA = 500 ciclos
Tempo para interrupção de DMA = 500 ciclos * 20 ns = 10 us
Taxa de transferência de dados do HD = 2 MBps
Volume de transferência por operação = 4 KB
Número de operações necessárias por segundo = 2 MB / 4 KB = 500
Tempo total = 500 * (20 us + 10 us) = 500 * 30 us = 15 ms
A cada segundo o DMA consome
1000 ms  100%
15 ms  X = 1,5 % da CPU
8 / 18
Exercícios
2. Quanto tempo de CPU consome a mesma transferência
de dados do problema anterior com as informações que
seguem?
• Supondo agora que o barramento de dados entre o HD e a CPU seja
de 32 bits
• A cada ciclo, a CPU consegue transferir um dado do HD para a
memória
9 / 18
Solução de Exercícios
2. Solução:
Período do relógio = 20 ns
Número de ciclos para transferir um dado = 1
Tempo para transferir um dado = 1 * 20 ns = 20 ns
Taxa de transferência de dados do HD = 2 MBps
Número de bytes de um dado = 32 / 8 = 4
Número de dados transferidos por segundo
= 2 MB / 4 B = 0,5 M
Tempo para transferir todos os bytes
= 0,5 M * 20 ns = 10 ms
CONCLUSÃO: Para este caso, não é interessante utilizar DMA, pois o tempo
para programá-lo somado ao de interrupção (15ms) é maior que o
consumido apenas pela CPU
10 / 18
Técnicas para Compartilhamento do Barramento
entre CPU e DMAC
• Halt (Transferência de Bloco)
– Método simples, onde DMAC suspende processador (ganha
barramento)
– Usa pino de HOLD
– CPU pode realizar operações que não fazem acesso ao barramento
– Passos
1.
2.
3.
4.
Uma vez programado DMAC, este envia sinal de HOLD para a CPU
CPU conclui instrução corrente e envia HOLDACK
DMAC recebendo HOLDACK tem acesso total ao barramento
Ao término da transferência DMAS remove HOLD
• Entrelaçado (interleaved)
– DMAC disputa barramento com CPU para fazer acesso à memória
– Controlador do barramento pode dar prioridade a CPU para evitar
atrasos
11 / 18
Técnicas para Compartilhamento do
Barramento entre CPU e DMAC
• Roubo de Ciclo (cycle stealing)
– Envia palavra a palavra (ou bloco a bloco)
– DMAC requer barramento e CPU entrega entre ciclos de máquina
– Passos
1.
2.
3.
4.
DMAC assincronamente requer barramento com DMAREQ
CPU termina ciclo corrente e envia DMAACK, liberando barramento
DMAC faz uma transferência e remove DMAREQ
Terminada TODA transferência, DMAC avisa CPU por interrupção
12 / 18
Estudos de Caso de DMA
•
DMA em PC (entre memória principal e placa de som) com 8237A
–
–
–
–
•
CPU programa DMAC
DMAC recebe da CPU sinal para iniciar DMA
DMAC realiza leitura na RAM e envia para a placa
CPU realiza em paralelo outras operações que não envolvam barramento
Antes de iniciar uma transferência é necessário definir
– Página da memória a ser utilizada
– Deslocamento na página
– Quantidade de dados a ser transferida
•
Limitações do DMA no PC
– Máximo 64 KB por vez (pois contador de bytes do DMAC contém 16 bits)
– Só pode transferir dentro da mesma página
– Velocidade: apenas 6 MHz (para a época do XT era suficiente), logo para
processador com mais de 200 MHz não faz sentido utilizar este padrão de
DMA
13 / 18
Estudos de Caso de DMA
•
Fast Multiword DMA
– Padrão de DMA permitido pelo chipset Triton da Intel que utiliza um modo de
transferência de dados entre disco rígido e memória
– Este modo transfere 48 bits por vez ao invés dos 16 bits originais
– Transferência pode chegar a 16,6 MB/s
•
Ultra DMA
– Transfere dados no modo de rajadas (burst mode)
– Desenvolvido pela Quantum Corporation e Intel para tornar-se um padrão da
indústria.
– Introduzido em computadores no final de 1997 com o objetivo de torná-lo um
padrão de interface para disco rígido
– Evoluiu conforme as interfaces ATA (AT Attachment)
•
•
•
•
•
•
•
Ultra DMA 0
Ultra DMA 1
Ultra DMA 2
Ultra DMA 3
Ultra DMA 4
Ultra DMA 5
Ultra DMA 6
16.7 MBps (Mega bytes por segundo)
25.0 MBps
33.3 MBps
44.4 MBps
66.7 MBps
100.0 MBps
133.0 MBps
14 / 18
Estudos de Caso de DMA
•
DMA no Cell
– Cell é um multiprocessador integrado em um único CI (MultiProcessor
System-on-Chip - MPSoC), composto por 9 processadores
– Desempenho chega a 200 GBps (Gigabytes por segundo)
– Transferência em um único bloco de até 16KBytes ou uma lista de 2 a 2048
blocos
– DMA no Cell suporta coerência de cache
15 / 18
Exercícios
1. Qual a principal aplicação do método de E/S tipo DMA? Mostre como um
dispositivo DMA pode ser programado para realizar a transferência entre
dispositivos
2. Em que casos a utilização do método de E/S tipo DMA é recomendada?
3. Explique o procedimento “roubo de ciclo” (ou cycle stealing) utilizado em
DMAs. Como ele pode ser otimizado?
16 / 18
Exercícios
5. Fazer um exercício que compare o uso do modo entrelaçado com o modo
por blocos em relação ao tempo para efetuar a transferência. Pode ser o
exercício 1 (Supor uma CPU operando a 50 MHz, com HD transferindo dados a
2 MBps continuamente, utilizando DMA. Se a duração da programação do controlador
de DMA pela CPU necessita 1.000 ciclos de clock, a duração da rotina de interrupção
para tratar término do DMA é de 500 ciclos de relógio, e cada operação de
transferência do disco manipula 4 KB, qual a fração de tempo da CPU é consumida na
operação?)
17 / 18
Exercícios
6. (POSCOMP 2011, Questão 40) O gerenciamento dos sistemas de entrada/saída
de dados é normalmente implementado em duas camadas: uma responsável pelo
controle do dispositivo e outra, pelo gerenciamento de entrada/saída. Por que isso
representa um projeto eficiente?
a) Porque permite o uso de duas linguagens de programação na sua
implementação, pois o controle do dispositivo exige a programação em linguagem
de máquina
b) Porque permite separar as operações de entrada das operações de saída de
dados
c) Porque permite o compartilhamento dos dispositivos de entrada/saída através
do gerenciamento de entrada/saída
d) Porque permite evitar o uso de DMA para a operação de entrada/saída
e) Porque permite separar características de hardware de características
funcionais do dispositivo de entrada/saída.
18 / 18
Resposta de Exercícios
6. (POSCOMP 2011, Questão 40) O gerenciamento dos sistemas de entrada/saída
de dados é normalmente implementado em duas camadas: uma responsável pelo
controle do dispositivo e outra, pelo gerenciamento de entrada/saída. Por que isso
representa um projeto eficiente?
a) Porque permite o uso de duas linguagens de programação na sua
implementação, pois o controle do dispositivo exige a programação em linguagem
de máquina
b) Porque permite separar as operações de entrada das operações de saída de
dados
c) Porque permite o compartilhamento dos dispositivos de entrada/saída através
do gerenciamento de entrada/saída
d) Porque permite evitar o uso de DMA para a operação de entrada/saída
e) Porque permite separar características de hardware de características
funcionais do dispositivo de entrada/saída
Download

Modos de Transferencia (DMA).