Como as BARRAS PCI / PCIe são configuradas para acessar a memória no dispositivo?

3 respostas

1

Sua interpretação da configuração da BAR está correta.

Então, como isso é diferente?

A memória / registradores do dispositivo geralmente é uma memória RAM especial, pode ser uma RAM bi-port (quando cada célula tem duas portas, uma está conectada ao barramento host, outra para o barramento interno do dispositivo, isso permite mais rápido e concorrente acesso de ambos os lados), pode ser um registrador ou mesmo diretamente algumas entradas ou saídas de um FPGA - Field-Programmable Gate Array que controla alguma lógica do dispositivo.

A RAM principal do sistema que um dispositivo pode acessar por meio do DMA na maioria das vezes tem uma designação completamente diferente. No caso mais comum, ele é usado como fonte de dados ou destino de dados para o dispositivo. Por exemplo, no caso da unidade de disco, essa memória será acessada pelo dispositivo para ler os dados ou para gravar esses dados na mídia. A localização de tais fontes e destinos não é limitada por buffers do sistema. Por exemplo, a paginação (troca e saída da memória virtual) é realizada diretamente para / do endereço da página física da página em questão.

O outro tipo possível de acesso DMA é quando o dispositivo solicita do sistema alguma área de memória para suas próprias necessidades. Um dos exemplos é um Adaptador de Vídeo Integrado que normalmente não tem sua própria RAM para manter a representação binária da imagem a ser exibida na tela. No entanto, este caso é muito parecido com a operação de gravação em disco. A única diferença é que é contínuo.

    
por 22.10.2012 / 10:40
1

BARs não são usadas para buffers de dispositivo na RAM do sistema e o dispositivo não solicita tais buffers via BARs. Em vez disso, a especificação da interface de registro do host do dispositivo incluirá uma provisão de que o host deve alocar um buffer de um determinado tamanho - ou um tamanho dentro de um intervalo especificado - e disponibilizá-lo para o dispositivo.

Em vez disso, o driver do host alocará um buffer da RAM do sistema e dirá ao dispositivo onde ele está (e, se não for de tamanho fixo, quão grande ele é), talvez simplesmente escrevendo o endereço em um registrador de dispositivo, talvez como parte de um protocolo mais complexo.

O dispositivo então acessa o buffer de RAM do sistema da mesma forma que acessaria os buffers associados às operações de E / S, iniciando as transações de leitura e gravação de memória direcionadas ao buffer.

    
por 19.02.2015 / 08:42
0

Os dispositivos PCI (e) não podem solicitar um buffer de memória do sistema dedicado, pelo menos não usando os métodos de configuração PCI (e) padrão (BARs). Os únicos dispositivos que geralmente fazem isso são GPUs integrados, e eles têm suporte especial no chipset da placa-mãe que reserva o buffer de memória, mas eles são entendidos e configurados apenas pelo BIOS do sistema.

    
por 10.01.2014 / 05:42