200 likes | 351 Views
ARQUITETURA DE COMPUTADORES II. Modos de Transferência Acesso Direto à Memória (DMA). Prof. César Augusto M. Marcon. 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
E N D
ARQUITETURA DE COMPUTADORES II Modos de TransferênciaAcesso Direto à Memória (DMA) Prof. César Augusto M. Marcon
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
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
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
Arquitetura Exemplo de DMATransferê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
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
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 = 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
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
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
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
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
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
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 16.7 MBps (Mega bytes por segundo) • Ultra DMA 1 25.0 MBps • Ultra DMA 2 33.3 MBps • Ultra DMA 3 44.4 MBps • Ultra DMA 4 66.7 MBps • Ultra DMA 5 100.0 MBps • Ultra DMA 6 133.0 MBps
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
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?
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 = 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 = 2 K = 2.000 Tempo total = 2.000 * (20 us + 10 us) = 2.000 * 30 us = 60 ms A cada segundo o DMA consome 1000 ms 100% 60 ms X X = 6 % da CPU
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?
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 * 1.000 * 1.000 B * 80 ns = 40 ms CONCLUSÃO: Para este caso, não é interessante utilizar DMA
Exercícios • (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.
Resposta de Exercícios • (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