A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modos de Transferência Acesso Direto à Memória (DMA)

Apresentações semelhantes


Apresentação em tema: "Modos de Transferência Acesso Direto à Memória (DMA)"— Transcrição da apresentação:

1 Modos de Transferência Acesso Direto à Memória (DMA)
ARQUITETURA DE COMPUTADORES II Modos de Transferência Acesso Direto à Memória (DMA) Prof. César Augusto M. Marcon

2 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 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 Passos Genéricos na Transferência com DMA
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 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 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 Arquitetura Exemplo de DMA Transferência de Dados Exemplo
Para os dados irem de um dispositivo para memória: 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 Exercícios 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 Solução de Exercício 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 = ciclos Tempo para programação do DMAC = 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 Exercícios 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 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 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 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 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 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 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 Estudos de Caso de DMA Fast Multiword DMA Ultra 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 MBps (Mega bytes por segundo) Ultra DMA MBps Ultra DMA MBps Ultra DMA MBps Ultra DMA MBps Ultra DMA MBps Ultra DMA MBps

14 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 Exercícios 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 Em que casos a utilização do método de E/S tipo DMA é recomendada? Explique o procedimento “roubo de ciclo” (ou cycle stealing) utilizado em DMAs. Como ele pode ser otimizado? 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?

16 Solução de Exercícios 4. RESPOSTA: Freqüência de operação = 50 MHz
Período do relógio = 1 / 50 MHz = 20 ns Ciclos para programação do DMAC = ciclos Tempo para programação do DMAC = 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 = 2 K = 2.000 Tempo total = * (20 us + 10 us) = * 30 us = 60 ms A cada segundo o DMA consome 1000 ms  100% 60 ms  X X = 6 % da CPU

17 Exercícios Supondo agora que o barramento de dados entre o HD e a CPU seja de 32 bits, e a cada 4 ciclos, a CPU consegue transferir um dado do HD para a memória, quanto tempo de CPU consumiria a mesma transferência de dados?

18 Solução de Exercícios 5. RESPOSTA: Período do clock = 20 ns
Número de ciclos para transferir um dado (32 bits) = 4 Tempo para transferir um dado (32 bits) = 4 * 20 ns = 80 ns Taxa de transferência de dados do HD = 2 MBps Número de dados necessários para transferência por segundo = 2 MB / 4 B = 0,5 M Tempo para transferir todos os bytes = 0,5 M * 80 ns = 0,5 * * B * 80 ns = 40 ms CONCLUSÃO: Para este caso, não é interessante utilizar DMA


Carregar ppt "Modos de Transferência Acesso Direto à Memória (DMA)"

Apresentações semelhantes


Anúncios Google