Como um controlador DMA funciona?


14

Da Seção 5.1.4 Acesso direto à memória em sistemas operacionais modernos por Andrew S. Tanenbaum, Herbert Bos, 2014 ,

Para simplificar a explicação, assumimos que a CPU acessa todos os dispositivos e memória através de um único barramento do sistema que conecta a CPU, a memória e os dispositivos de E / S, conforme mostrado na Fig. 5-4.

insira a descrição da imagem aqui

  1. Para explicar como o DMA funciona, vamos primeiro ver como as leituras de disco ocorrem quando o DMA não é usado.

    • Primeiro, o controlador de disco lê o bloco (um ou mais setores) da unidade serialmente, pouco a pouco, até que todo o bloco esteja no buffer interno do controlador.
    • Em seguida, calcula a soma de verificação para verificar se nenhum erro de leitura ocorreu. Então o controlador causa uma interrupção. Quando o sistema operacional começa a funcionar, ele pode ler o bloco de disco do buffer do controlador, um byte ou uma palavra de cada vez, executando um loop, com cada iteração lendo um byte ou palavra de um registro do dispositivo do controlador e armazenando-o na memória principal.

    Q: na segunda etapa,

    • os dados não são transferidos " do buffer do controlador " para a memória principal? Por que diz " do buffer do controlador " e " de um registro de dispositivo do controlador "?

    • na segunda etapa, o controlador pode transferir dados do buffer para a memória principal, sem interromper a CPU e sem envolver novamente o SO?

  2. Quando o DMA é usado, o procedimento é diferente.

    • Primeiro, a CPU programa o controlador DMA, configurando seus registradores para saber o que transferir para onde (etapa 1 na Fig. 5-4).
      Ele também emite um comando para o controlador de disco, solicitando que ele leia os dados do disco em seu buffer interno e verifique a soma de verificação.
    • Quando dados válidos estão no buffer do controlador de disco, o DMA pode começar. O controlador DMA inicia a transferência emitindo uma solicitação de leitura pelo barramento para o controlador de disco (etapa 2). Essa solicitação de leitura se parece com qualquer outra solicitação de leitura e o controlador de disco não sabe (ou se importa) se veio da CPU ou de um controlador DMA. Normalmente, o endereço de memória para gravar está nas linhas de endereço do barramento, portanto, quando o controlador de disco busca a próxima palavra do buffer interno, ele sabe onde escrevê-la. A gravação na memória é outro ciclo de barramento padrão (etapa 3).
    • Quando a gravação é concluída, o controlador de disco envia um sinal de confirmação para o controlador DMA, também pelo barramento (etapa 4). O controlador DMA então incrementa o endereço de memória a ser usado e diminui a contagem de bytes. Se a contagem de bytes ainda for maior que 0, as etapas 2 a 4 serão repetidas até que a contagem atinja 0.
    • Nesse momento, o controlador DMA interrompe a CPU para informar que a transferência está concluída. Quando o sistema operacional é iniciado, ele não precisa copiar o bloco de disco na memória; já está lá.

    P: na segunda etapa, o controlador DMA solicita que o controlador de disco transfira dados do buffer do controlador de disco para a memória principal. Na primeira etapa, a CPU emite um comando para o controlador de disco, solicitando a leitura de dados do disco em seu buffer interno. Ao mesmo tempo, a CPU também pode solicitar ao controlador de disco que transfira dados do buffer do controlador de disco para a memória principal, quando o controlador de disco terminar de transferir dados do disco para o buffer do controlador de disco, para que não haja necessidade de Controlador DMA para dizer ao controlador de disco para transferir dados do buffer do controlador de disco para a memória principal? (Não consigo entender por que precisamos de um controlador DMA para transferência de dados entre o disco e a memória principal, portanto, acho que estou perdendo algo importante para entender a citação).

  3. Um controlador de dispositivo de um dispositivo controla o dispositivo e executa operações no dispositivo. Em que dispositivo um controlador DMA controla e executa operações?

Obrigado!


Parece que seu entendimento é baseado no Bus Mastering, que eu acho que é mais moderno do que o conceito de DMA descrito nesse livro. O conceito de DMA no livro é mais primitivo.
rwong

Eu adicionei o diagrama para um modelo simplificado que o livro usa.
Tim

A seta 3 no diagrama parece não corresponder à descrição do texto ... parabéns. Para determinar qual está correto, será necessário o diagrama de tempo do barramento para a etapa 3. Mais importante, é preciso descobrir qual dispositivo é responsável por reter o sinal de dados na etapa 3. O controlador de disco envia os dados para o controlador DMA primeiro e depois o controlador DMA repete os dados (colocando sua própria tensão no barramento) ) para a memória?
Rwong

O "Confirmar" na etapa 4 também é suspeito. O DMA já não sabe o número de bytes a serem copiados?
rwong

Não sei como esclarecer. Quais livros sobre OS e arquitetura você estudou ou acha que são os melhores?
Tim

Respostas:


7

Q1

Na primeira etapa, NÃO estamos usando DMA, portanto o conteúdo do controlador de disco é lido peça por peça pelo processador. É claro que o processador (assumindo que os dados serão realmente usados ​​para algo e não apenas sendo jogados fora) os armazenará na memória do sistema.

O buffer nesse caso é uma parte da memória no próprio disco rígido (controlador) e o dispositivo controlador registra um registro de controle do próprio disco rígido (controlador).

Não envolver o SO (ou outro software) exigiria algum tipo de operação de DMA, e a seção de texto que você está discutindo nesta parte da sua pergunta NÃO está usando o DMA. Então, não, não vai acontecer assim neste caso.

Q2

Portanto, o objetivo de um controlador DMA é "executar a tarefa tediosa de armazenar coisas do buffer interno do dispositivo na memória principal". A CPU funcionará com o controlador DMA e o dispositivo de disco. Se o disco pudesse fazer isso sozinho, não haveria necessidade de um controlador DMA.

E, de fato, em sistemas modernos, o recurso DMA geralmente é incorporado ao próprio controlador de disco rígido, no sentido de que o controlador possui recursos de "masterização de barramento", o que significa que o próprio controlador É o controlador DMA do dispositivo. No entanto, olhar para eles como dois dispositivos separados torna todo o conceito de DMA um pouco menos difícil de entender.

Q3 (tipo de)

Se você pensa no disco rígido como a pilha de tijolos que acabou de ser entregue no canteiro de obras, e o processador é o pedreiro que coloca os tijolos para construir a casa. O controlador DMA é o trabalhador que carrega os tijolos da pilha de tijolos para onde eles são necessários para o pedreiro, o que significa que o pedreiro pode se concentrar em fazer o trabalho real de colocar tijolos (que é um trabalho qualificado, se você já experimentou) você mesmo) e o simples trabalho de "buscar e transportar" pode ser realizado por um trabalhador menos qualificado.

Evidência anedótica: Quando soube pela primeira vez sobre a transferência de DMA do disco para a memória, era mais ou menos em 1997, quando os controladores IDE começaram a usar o DMA, e era necessário obter um driver "controlador da placa-mãe IDE" para permitir que o IDE fizesse DMA e naquele momento , a leitura no disco rígido levaria cerca de 6 a 10% do tempo da CPU, enquanto o DMA na mesma configuração usaria cerca de 1% do tempo da CPU. Antes desse período, apenas sistemas sofisticados com controladores de disco SCSI usariam o DMA.


5

Esta não é uma resposta; é um pedido de esclarecimento que é longo demais para caber nos comentários.

Antes que alguém possa responder a essa pergunta, é preciso explicar claramente a arquitetura do sistema de computador que está sendo discutida. Nomeadamente:

  • Quais são os sistemas de barramento envolvidos nesta descrição?

    • A maioria dos sistemas de computador possui um barramento de memória.
    • A maioria dos computadores também possui outros tipos de sistemas de barramento.
  • O IO do disco também passa pelo barramento de memória?

    • Em outras palavras, o disco usa as linhas de barramento de endereços para endereços e as linhas de barramento de dados para dados?
  • O controlador de disco vê o barramento de memória como ...

    • Um barramento de memória? Ou seja, pensa que está falando com um chip de memória; ou seja, RAS (strobe de acesso à linha), CAS (strobe de acesso à coluna), ...
    • Muito improvável - conversar com um chip de memória exige que você seja ultra-preciso quanto à emissão de comandos de acordo com o tempo de DRAM (latências) - alguns ciclos de clock muito cedo ou muito tarde, ocorrerá perda de dados.
  • Então ... o que o controlador de disco acha que o barramento "realmente é"?

  • Na maioria dos sistemas de computadores, existe um tipo de E / S chamado "Porta E / S".

    • A porta E / S pode pegar carona no barramento de memória ou pode ter outro barramento dedicado.
    • A característica distintiva da E / S de porta é que é possível concluir as coisas em um único (ou um número constante predefinido de) ciclo de barramento - não é necessário se preocupar com os perigos dos tempos de DRAM.
  • Nos sistemas mais avançados (bem, há duas décadas atrás), existem tipos mais novos de sistemas de barramento. Por exemplo, ISA, PCI, AGP, PCMCIA ... SCSI, ATA, SAS, SATA, FC-AL ...


Agora, com tantas incertezas levantadas sobre "o sistema de computador que está sendo discutido", você pode entender por que não receberá uma resposta clara para sua pergunta.

Sim, eu sei que se trata de um livro didático. Você tem uma cópia. Eu não. (Não está em casa - há um no escritório.) Portanto, se você precisar de uma resposta, precisará mostrar alguns diagramas e explicar como é o sistema de barramento do seu computador.


No final, porém:

  • Um DMA é um dispositivo programável. Ou seja, a CPU tem a responsabilidade final de informar ao DMA o que fazer. Obviamente, durante o intervalo de tempo em que o DMA assume o controle do sistema, a CPU coopera permitindo que o DMA execute o programa.

  • Sob o controle da CPU (e do sistema operacional que a executa), um DMA tem a capacidade de assumir o controle de um ou mais barramentos (plural) para facilitar a transferência de dados do controlador de disco para a memória principal.

  • Durante o período em que o DMA assume o barramento (plural), o DMA emitirá comandos sobre esse barramento - ou seja, no lugar de seu controlador habitual, ou seja, o DMA finge que está fazendo o trabalho da CPU.

  • Se a transferência de dados envolver dois barramentos diferentes, o DMA pode precisar fazer isso em um barramento diferente.

  • Para poder mover um número de bytes (palavras, etc.), o DMA contém um contador de loop para acompanhar a quantidade restante de dados a serem copiados.

  • Para poder gravar na memória principal, o DMA contém um registro de endereço de memória, programável pela CPU, para que a CPU possa informar ao DMA para onde gravar os dados.

  • Dependendo do design do barramento do sistema, o DMA pode ou não precisar lidar com os detalhes horríveis dos ciclos de tempo da DRAM.

  • Era uma vez, algum tempo após a invenção do DMA, alguns dispositivos periféricos começarem a pré-empacotar o DMA em seus controladores - isso é chamado de Bus Mastering . Ainda assim, se o DMA fica no pacote da CPU, na placa-mãe ou na placa de E / S, ele deve estar sob o controle (programação) da CPU, porque eles precisam negociar o acesso ao barramento do sistema (plural) e a memória principal.

  • Os sistemas de computadores modernos têm um subsistema dedicado chamado DRAM Controller. Se houver, é quase certo que este controlador DRAM também cumprirá a funcionalidade do DMA, ou seja, parece que é um "loop de cópia de bytes" programável e toda a complexidade mencionada está oculta dentro do silício do DRAM Controlador.


Se você achar muito confuso - também acho confuso - precisará de diagramas. Muitos diagramas. Diagramas de sistema. Diagramas de barramento. Diagramas de tempo. Diagramas de transição de estado. etc.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.