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