Placa de aceleração programável Intel FPGA D5005
Sobre este documento
Este documento descreve a implementação da Accelerator Functional Unit (AFU) de acesso direto à memória (DMA) e como construir o projeto para ser executado em hardware ou em simulação.
Público-alvo
O público-alvo inclui desenvolvedores de hardware ou software que exigem uma Função Aceleradora (AF) para armazenar dados em buffer localmente na memória conectada ao dispositivo Intel FPGA.
Convenções
Convenções de documentos
Convenção | Descrição |
# | Precede um comando que indica que o comando deve ser inserido como root. |
$ | Indica que um comando deve ser inserido como usuário. |
Esta fonte | Filenomes, comandos e palavras-chave são impressos nesta fonte. Linhas de comando longas são impressas nessa fonte. Embora longas linhas de comando possam passar para a próxima linha, o retorno não faz parte do comando; não aperte enter. |
Indica que o texto de espaço reservado que aparece entre os colchetes angulares deve ser substituído por um valor apropriado. Não insira os colchetes angulares. |
Siglas
Siglas
Siglas | Expansão | Descrição |
AF | Função do acelerador | Imagem compilada do Acelerador de Hardware implementado em lógica FPGA que acelera uma aplicação. |
AFU | Unidade Funcional do Acelerador | Acelerador de hardware implementado em lógica FPGA que descarrega uma operação computacional para uma aplicação da CPU para melhorar o desempenho. |
API | Interface de programação de aplicativos | Um conjunto de definições de sub-rotinas, protocolos e ferramentas para construir aplicativos de software. |
CCI-P | Interface de cache principal | CCI-P é a interface padrão que as AFUs usam para se comunicar com o host. |
DFH | Cabeçalho de recurso do dispositivo | Cria uma lista vinculada de cabeçalhos de recursos para fornecer uma maneira extensível de adicionar recursos. |
continuou… |
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Siglas | Expansão | Descrição |
FIM | Gerenciador de Interfaces FPGA | O hardware FPGA contendo a FPGA Interface Unit (FIU) e interfaces externas para memória, rede, etc.
A Função Aceleradora (AF) faz interface com o FIM em tempo de execução. |
FIU | Unidade de Interface FPGA | FIU é uma camada de interface de plataforma que atua como uma ponte entre interfaces de plataforma como PCIe*, UPI e interfaces do lado AFU, como CCI-P. |
MPF | Fábrica de propriedades de memória | O MPF é um Basic Building Block (BBB) que as AFUs podem usar para fornecer operações de modelagem de tráfego CCI-P para transações com a FIU. |
Glossário de aceleração
Acceleration Stack para CPU Intel® Xeon® com FPGAs Glossário
Prazo | Abreviação | Descrição |
Pilha de aceleração Intel® para CPU Intel Xeon® com FPGAs | Pilha de aceleração | Uma coleção de software, firmware e ferramentas que oferece conectividade otimizada para desempenho entre um Intel FPGA e um processador Intel Xeon. |
Placa de aceleração programável Intel FPGA | PAC Intel FPGA | Placa aceleradora PCIe FPGA.
Contém um FPGA Interface Manager (FIM) que emparelha com um processador Intel Xeon no barramento PCIe. |
- Guia do usuário da unidade funcional do acelerador DMA: Intel FPGA Programmable Acceleration Card D5005
Descrição do DMA AFU
Introdução
O acesso direto à memória (DMA) AFU example mostra como gerenciar as transferências de memória entre o processador host e o FPGA. Você pode integrar o DMA AFU em seu projeto para mover dados entre a memória do host e a memória local do FPGA. O DMA AFU compreende os seguintes submódulos:
- Bloco de construção básico de fábrica de propriedades de memória (MPF) (BBB)
- Interface de cache principal (CCI-P) para o adaptador mapeado em memória Avalon® (Avalon-MM)
- DMA Test System que contém o DMA BBB
Esses submódulos são descritos com mais detalhes no tópico Componentes de hardware DMA AFU abaixo.
Informações relacionadas
- Os componentes de hardware DMA AFU na página 6
- Especificações da Interface Avalon
Para obter mais informações sobre o protocolo Avalon-MM, incluindo diagramas de tempo para transações de leitura e gravação.
O pacote de software DMA AFU
A pilha de aceleração Intel para CPU Intel Xeon com pacote FPGAs file (*.tar.gz), inclui o DMA AFU example. Este example fornece um driver de espaço do usuário. O aplicativo host usa esse driver para que o DMA mova os dados entre o host e a memória FPGA. Os binários de hardware, fontes e o driver de espaço do usuário estão disponíveis no seguinte diretório: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu . Antes de experimentar o DMA AFU, você deve instalar o pacote de software Open Programmable Acceleration Engine (OPAE). Consulte Instalando o pacote de software OPAE no Guia de início rápido do Intel Acceleration Stack para Intel FPGA Programmable Acceleration Card D5005 para obter instruções de instalação. Este Guia de início rápido também inclui informações básicas sobre o Open Programmable Acceleration Engine (OPAE) e a configuração de uma AFU. Após instalar o pacote de software Open Programmable Acceleration Engine (OPAE), conformeample aplicativo host e o driver de espaço do usuário DMA AFU estão disponíveis no seguinte diretório: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw. Para executar o sample aplicativo host, fpga_dma_test em seu hardware Intel FPGA PAC D5005, consulte as etapas na seção Executando o DMA AFU Example. Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Informações relacionadas
- Guia de início rápido do Intel Acceleration Stack para Intel FPGA Programmable Acceleration Card D5005
- Instalando o pacote de software OPAE
Os componentes de hardware DMA AFU
O DMA AFU faz interface com a FPGA Interface Unit (FIU) e a memória FPGA. Consulte a FPGA Interface Manager Data Sheet para Intel FPGA Programmable Acceleration Card D5005 para especificações detalhadas da memória FPGA. O hardware atualmente disponível determina essa configuração de memória. Hardware futuro pode suportar diferentes configurações de memória. Você pode usar o DMA AFU para copiar dados entre os seguintes locais de origem e destino:
- O host para a memória FPGA do dispositivo
- Memória FPGA do dispositivo para o host
Um sistema Platform Designer, $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/TEST_dma/ /dma_test_system.qsys implementa a maior parte do DMA
- AFU. Parte do DMA AFU implementado no sistema Platform Designer pode ser encontrado no seguinte
localização:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/TEST_dma/ Você pode encontrar o DMA BBB no seguinte local:
- $OPAE_PLATFORM_ROOT/hw/samparquivos/dma_afu/hw/rtl/dma_bbb
Guia do usuário da unidade funcional do acelerador DMA: Intel FPGA Programmable Acceleration Card D5005
Diagrama de Blocos de Hardware DMA AFU
O DMA AFU inclui os seguintes módulos internos para interface com a FPGA Interface Unit (FIU):
- Lógica do Decodificador de E/S com Mapeamento de Memória (MMIO): detecta transações de leitura e gravação de MMIO e as separa do canal CCI-P RX 0 de onde elas chegam. Isso garante que o tráfego MMIO nunca atinja o MPF BBB e seja atendido por um canal de comando MMIO independente.
- Memory Properties Factory (MPF): Este módulo garante que as respostas de leitura do DMA retornem na ordem em que foram emitidas. O protocolo Avalon-MM exige que as respostas de leitura retornem na ordem correta.
- Adaptador CCI-P para Avalon-MM: Este módulo traduz entre as transações CCI-P e Avalon-MM, como segue:
- Adaptador CCI-P para Avalon-MMIO: Este caminho converte as transações CCI-P MMIO em transações Avalon-MM.
- Adaptador de host Avalon para CCI-P: esses caminhos criam caminhos separados somente leitura e somente gravação para o DMA acessar a memória do host.
- DMA Test System: Este módulo serve como um wrapper em torno do DMA BBB para expor os mestres de DMA ao restante da lógica na AFU. Ele fornece a interface entre o DMA BBB e o adaptador CCI-P para Avalon. Ele também fornece a interface entre o DMA BBB e os bancos FPGA SDRAM locais.
Informações relacionadas
FPGA Interface Manager Data Sheet para Intel FPGA Programmable Acceleration Card D5005
Sistema de teste DMA
O sistema de teste DMA conecta o DMA BBB ao restante do design do FPGA, incluindo a adaptação CCI-P e a memória local do FPGA.
Diagrama de Blocos do Sistema de Teste DMA
Este diagrama de blocos mostra os componentes internos do sistema de teste DMA. O sistema de teste DMA é mostrado como um bloco monolítico na Figura 1 na página 7.
O sistema de teste DMA inclui os seguintes módulos internos:
- Far Reach Bridge/Pipeline Bridge: Uma ponte de pipeline com latência ajustável incluída para controlar a topologia e melhorar o design Fmax.
- DMA AFU Device Feature Header (DFH): Este é um DFH para o DMA AFU. Este DFH aponta para o próximo DFH localizado no deslocamento 0x100 (DMA BBB DFH).
- Null DFH: Este componente encerra a lista vinculada DFH. Se você adicionar mais BBBs de DMA ao design, certifique-se de que o endereço base DFH nulo esteja localizado no final da lista vinculada DFH.
- MA Basic Building Block (BBB): Este bloco move os dados entre o host e a memória FPGA local. Ele também acessa a memória do host para acessar as cadeias de descritores.
DMA BBB
O subsistema DMA BBB transfere dados de endereços de origem para destino usando transações Avalon-MM. O driver DMA controla o DMA BBB acessando o registro de controle e status dos diversos componentes dentro do sistema. O driver DMA também controla o DMA BBB usando memória compartilhada para comunicar descritores de transferência. O DMA BBB acessa dados na memória FPGA no offset 0x0. O DMA BBB acessa dados e descritores na memória do host no deslocamento 0x1_0000_0000_0000.
Diagrama de blocos do DMA BBB Platform Designer
Este diagrama de blocos exclui alguns núcleos IP internos do Pipeline Bridge.
Guia do usuário da unidade funcional do acelerador DMA: Intel FPGA Programmable Acceleration Card D5005
Descrição do DMA AFU
Os componentes no DMA BBB Platform Designer implementam as seguintes funções:
- Ponte de Longo Alcance/Ponte de Oleoduto: Uma ponte de pipeline com latência ajustável incluída para controlar a topologia e melhorar o design Fmax.
- MA BBB DFH: Este é um cabeçalho de recurso do dispositivo para o DMA BBB. Este DFH aponta para o próximo DFH localizado no deslocamento 0x100 (Null DFH).
- Descritor Front-end: Responsável por buscar descritores e transferi-los para o Despachante. Quando uma transferência DMA é concluída, o frontend recebe a formação de status do Dispatcher e sobrescreve o descritor na memória do host.
- Expedidor: Este bloco agenda solicitações de transferências de DMA para o mestre de leitura e gravação.
- Leia Mestre: Este bloco é responsável por ler os dados da memória do host ou do FPGA local e enviá-los como dados de streaming para o Write Master.
- Escreva Mestre: Este bloco é responsável por receber os dados de streaming do Read Master e gravar o conteúdo na memória do host ou do FPGA local.
Cadastrar Mapa e Espaços de Endereçamento
O DMA AFU suporta duas memórias views: O DMA view e o anfitrião view. O DMA view suporta um espaço de endereço de 49 bits. A metade inferior do DMA view mapeia para a memória local do FPGA. A metade superior do DMA view mapeia para a memória do host. O host view inclui todos os registros acessíveis através de acessos MMIO, como as tabelas DFH, e os registros de controle/status dos vários núcleos IP usados dentro do DMA AFU. Os registros MMIO no DMA BBB e AFU suportam acesso de 32 e 64 bits. O DMA AFU não suporta acessos MMIO de 512 bits. Os acessos aos registradores do Dispatcher dentro do DMA BBB devem ser de 32 bits (o frontend do descritor implementa os registradores de 64 bits).
Mapa de Registro DMA AFU
O mapa de registro DMA AFU fornece os endereços absolutos de todos os locais dentro da unidade. Esses registradores estão no host view porque é apenas o host que pode acessá-los.
Mapa de memória DMA AFU
Deslocamentos de endereço de byte | Nome | Intervalo em Bytes | Descrição |
0x0 | DMA AFU DFH | 0x40 | Cabeçalho de recurso do dispositivo para o DMA AFU. O ID_L é definido como 0x9081f88b8f655caa e ID_H é definido como 0x331db30c988541ea. O DMA AFU DFH foi parametrizado para apontar para o deslocamento 0x100 para encontrar o próximo DFH (DMA BBB DFH). Você não deve modificar o endereço base do DMA AFU DFH, pois ele deve estar localizado no endereço 0x0 conforme definido pela especificação CCIP. |
0x100 | DMA BBB | 0x100 | Especifica o controle DMA BBB e a interface de registro de status. Você pode consultar o mapa de registro do DMA BBB para obter mais informações. Dentro do DMA BBB no deslocamento 0, o DMA BBB inclui seu próprio DFH. Este DFH foi definido para localizar o próximo DFH no deslocamento 0x100 (NULL DFH). Se você adicionar mais BBBs de DMA, afaste-os em 0x100 e certifique-se de que NULL DFH siga o último DMA em 0x100. |
0x200 | NULO DFH | 0x40 | Encerra a lista vinculada do DFH. O ID_L é definido como 0x90fe6aab12a0132f e ID_H é definido como 0xda1182b1b3444e23. O NULL DFH foi parametrizado para ser o último DFH em hardware. Por esta razão o NULL DFH está localizado no endereço 0x200. Se você adicionar BBBs de DMA adicionais ao sistema, precisará aumentar o endereço base NULL DFH adequadamente para que ele permaneça no endereço mais alto. O driver DMA e o aplicativo de teste não usam esse hardware. |
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Cadastrar Mapa e Espaços de Endereçamento
Mapa de Memória DMA BBB
Os seguintes endereços de byte são deslocamentos relativos do endereço base DMA BBB no sistema DMA AFU (0x100).
Deslocamentos de endereço de byte | Nome | Intervalo em Bytes | Descrição |
0x0 | DMA BBB DFH | 0x40 | Cabeçalho de recurso do dispositivo para o DMA AFU. O ID_L é definido como 0xa9149a35bace01ea e ID_H é definido como 0xef82def7f6ec40fc . O DMA BBB DFH foi parametrizado para apontar para 0x100 para o próximo deslocamento DFH. Este próximo deslocamento pode ser outro DMA BBB, outro DFH (não incluído neste design) ou o NULL DFH. |
0x40 | Expedidor | 0x40 | Porta de controle para o despachante. O driver DMA usa esse local para controlar o DMA ou consultar seu status. |
0x80 | Descritor Front-end | 0x40 | O frontend do descritor é um componente personalizado que lê os descritores da memória do host e sobrescreve o descritor quando a transferência DMA é concluída. O driver instrui o frontend onde o primeiro descritor reside na memória do host e, em seguida, o hardware do frontend se comunica com o driver principalmente por meio de descritores armazenados na memória do host. |
Espaço de Endereço DMA AFU
O host pode acessar os registros listados na Tabela 4 na página 12 e na Tabela 5 na página 13. O subsistema DMA BBB tem acesso ao espaço de endereço completo de 49 bits. A metade inferior deste espaço de endereçamento inclui as memórias FPGA locais. A metade superior desse espaço de endereço inclui a memória de endereço do host de 48 bits. A figura a seguir mostra o host e o DMA views de memória.
O DMA AFU e Host Views de Memória
Lista vinculada do cabeçalho de recurso do dispositivo
O design DMA AFU example contém três cabeçalhos de recursos do dispositivo (DFH) que formam uma lista vinculada. Esta lista encadeada permite que osample aplicativo para identificar o DMA AFU, bem como o driver para identificar o DMA BBB. A lista DFH inclui um NULL DFH no final. A inclusão do DFH nulo no final da lista vinculada permite que você adicione mais BBBs DMA ao seu design. Você simplesmente precisa mover o NULL DFH para um endereço após os outros BBBs. Cada DMA BBB espera que o próximo DFH esteja localizado a 0x100 bytes do endereço base do BBB. A figura a seguir mostra a lista encadeada para o projeto DMA AFU exampeu.
Cadastrar Mapa e Espaços de Endereçamento
Encadeamento do cabeçalho de recurso do dispositivo DMA AFU (DFH)
Modelo de programação de software
O DMA AFU inclui um driver de software que você pode usar em seu próprio aplicativo host. O fpga_dma.cpp e fpga_dma.h files localizados no seguinte local implementam o driver de software: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw Este driver suporta as seguintes funções:
API | Descrição |
fpgaCountDMAChannels | Verifica a cadeia de recursos do dispositivo em busca de BBBs de DMA e conta todos os canais disponíveis. |
fpgaDMAOpen | Abre um identificador para o canal DMA. |
fpgaDMAC Fechar | Fecha um identificador para o canal DMA. |
fpgaDMATransferInit | Inicializa um objeto que representa a transferência DMA. |
fpgaDMATransferReset | Redefine o objeto de atributo de transferência DMA para os valores padrão. |
fpgaDMATransferDestroy | Destrói o objeto de atributo de transferência DMA. |
fpgaDMATransferSetSrc | Define o endereço de origem da transferência. Este endereço deve ter 64 bytes alinhados. |
fpgaDMATransferSetDst | Define o endereço de destino da transferência. Este endereço deve ter 64 bytes alinhados. |
fpgaDMATransferSetLen | Define os comprimentos de transferência em bytes. Para transferências sem pacote, você deve definir o comprimento da transferência para um múltiplo de 64 bytes. Para transferências de pacotes, isso não é um requisito. |
fpgaDMATransferSetTransferType | Define o tipo de transferência. Os valores legais são:
• HOST_MM_TO_FPGA_MM = TX (Host para AFU) • FPGA_MM_TO_HOST_MM = RX (AFU para host) |
fpgaDMATransferSetTransferCallback | Registra o retorno de chamada para notificação na conclusão da transferência assíncrona. Se você especificar um retorno de chamada, fpgaDMATransfer retornará imediatamente (transferência assíncrona).
Se você não especificar um retorno de chamada, fpgaDMATransfer retornará após a conclusão da transferência (transferência síncrona/bloqueante). |
fpgaDMATransferSetLast | Indica a última transferência para que o DMA possa iniciar o processamento das transferências pré-buscadas. O valor padrão é 64 transferências no pipeline antes que o DMA comece a trabalhar nas transferências. |
fpgaDMATransfer | Executa uma transferência DMA. |
Para obter mais informações sobre a API, argumentos de entrada e saída, consulte o cabeçalho file localizado $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw/fpga_dma.hIntel Corporation. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Modelo de programação de software
Para saber mais sobre o modelo de uso do driver de software, consulte o README file localizado em $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/README.md
Executando DMA AFU Example
Antes de começar:
- Você deve estar familiarizado com o examples no Guia de início rápido do Intel Acceleration Stack para Intel FPGA Programmable Acceleration Card D5005.
- Você deve definir uma variável de ambiente. A variável de ambiente depende da versão do Intel Acceleration Stack que você está usando:
- Para a versão atual, defina a variável de ambiente para $OPAE_PLATFORM_ROOT
- Você deve instalar a biblioteca Intel Threading Building Blocks (TBB), pois o driver DMA depende dela.
- Você também deve configurar duas páginas enormes de 1 GB para executar o sampo aplicativo. $ sudo sh -c “echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/ nr_hugepages”
Execute as etapas a seguir para baixar o fluxo de bits da função de acelerador de DMA (AF), para criar o aplicativo e o driver e para executar o projeto exampem:
- Mude para o aplicativo DMA e diretório de driver: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
- Compile o driver e o aplicativo: make
- Baixe o fluxo de bits DMA AFU: sudo fpgasupdate ../bin/dma_afu_unsigned.gbs
- Execute o aplicativo host para gravar 100 MB em porções de 1 MB da memória do host para a memória do dispositivo FPGA e leia de volta: ./ fpga_dma_test -s 104857600 -p 1048576 -r mtom
Informações relacionadas
Guia de início rápido do Intel Acceleration Stack para Intel FPGA Programmable Acceleration Card D5005 Intel Corporation. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Compilando o DMA AFU Example
Para gerar um ambiente de compilação de síntese para compilar um AF, use o comando afu_synth_setup da seguinte maneira:
- Mude para o DMA AFU sampdiretório de arquivos: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Gere o diretório de construção do design: afu_synth_setup –source hw/rtl/filelist.txt build_synth
- No diretório de compilação de síntese gerado por afu_synth_setup, insira os seguintes comandos em uma janela de terminal para gerar um AF para a plataforma de hardware de destino: cd build_synth run.sh O script de geração de AF run.sh cria a imagem AF com a mesma base filenome como configuração de plataforma da AFU file (.json) com um sufixo .gbs no local:$OPAE_PLATFORM_ROOT/hw/samples/build_synth/dma_afu_s10.gbs Intel Corporation. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Simulando o AFU Example
A Intel recomenda que você consulte o Guia de início rápido do ambiente de simulação (ASE) Intel Accelerator Functional Unit (AFU) para o seu PAC Intel FPGA para se familiarizar com a simulação deamparquivos e para configurar seu ambiente. Antes de prosseguir com as etapas a seguir, verifique se a variável de ambiente OPAE_PLATFORM_ROOT está configurada para o diretório de instalação do SDK do OPAE. Conclua as etapas a seguir para configurar o simulador de hardware para o DMA AFU:
- Mude para o DMA AFU sampdiretório de arquivos: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Crie um ambiente ASE em um novo diretório e configure-o para simular um AFU: afu_sim_setup –source hw/rtl/filelist.txt build_ase_dir
- Mude para o diretório de compilação do ASE: cd build_ase_dir
- Compile o driver e o aplicativo: make
- Faça simulação: faça sim
Sample saída do simulador de hardware:
[SIM] ** ATENÇÃO : ANTES de executar o aplicativo ** [SIM] Defina env(ASE_WORKDIR) no terminal onde o aplicativo será executado (copiar e colar) => [SIM] $SHELL | Executar:[SIM] ———+—————————————————— [SIM] bash/zsh | export ASE_WORKDIR=$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/ase_mkdir/work [SIM] tcsh/csh | setenv ASE_WORKDIR $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/ase_mkdir/work [SIM] Para qualquer outro $SHELL, consulte seu administrador Linux [SIM] [SIM] Pronto para simulação… [SIM] Pressione CTRL-C para fechar o simulador…Conclua as etapas a seguir para compilar e executar o software DMA AFU no ambiente de simulação:
- Abra uma nova janela de terminal.
- Mude o diretório para: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes da Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Simulando o AFU Example
- Copie a string de configuração do ambiente (escolha a string apropriada para seu shell) das etapas acima na simulação de hardware para a janela do terminal. Veja as seguintes linhas no sample saída do simulador de hardware. [SIM] bash/zsh | export ASE_WORKDIR=$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/build_ase_dir/work [SIM] tcsh/csh | setenv ASE_WORKDIR $OPAE_PLATFORM_ROOT/hw/samparquivos/dma_afu/build_ase_dir/work
- Compile o software: $ make USE_ASE=1
- Execute o aplicativo host para gravar 4 KB em porções de 1 KB da memória do host de volta para a memória do dispositivo FPGA no modo de loopback: ./ fpga_dma_test -s 4096 -p 1024 -r mtom
Informações relacionadas
Guia de início rápido do usuário do ambiente de simulação (ASE) do Intel Accelerator Functional Unit (AFU)
Otimização para melhor desempenho de DMA
A implementação da otimização NUMA (non-uniform memory access) no fpga_dma_test.cpp permite que o processador acesse sua própria memória local mais rapidamente do que acessar a memória não local (memória local para outro processador). Uma configuração típica de NUMA é mostrada no diagrama abaixo. O acesso local representa o acesso de um núcleo à memória local para o mesmo núcleo. O acesso remoto ilustra o caminho percorrido quando um núcleo no Nó 0 acessa a memória que reside na memória local do Nó 1.
Configuração típica de NUMA
Use o código a seguir para implementar a otimização NUMA em seu aplicativo de teste:
// Configura a afinidade apropriada se solicitado if (cpu_affinity || memory_affinity) {unsigned dom = 0, bus = 0, dev = 0, func = 0; fpga_properties props;int retval; #if(FPGA_DMA_DEBUG)char str[4096]; #endifres = fpgaGetProperties(afc_token, &props); ON_ERR_GOTO(res, out_destroy_tok, “fpgaGetProperties”); res = fpgaPropertiesGetBus(props, (uint8_t *) & bus);ON_ERR_GOTO(res, out_destroy_tok, “fpgaPropertiesGetBus”); res = fpgaPropertiesGetDevice(props, (uint8_t *) & dev);ON_ERR_GOTO(res, out_destroy_tok, “fpgaPropertiesGetDevice”) res = fpgaPropertiesGetFunction(props, (uint8_t *) & func);ON_ERR_GOTO(res, out_destroy_tok, “fpgaPropertiesGetFunction”); // Localiza o dispositivo da topologia hwloc_topology_t topology; hwloc_topology_init(&topologia); hwloc_topology_set_flags(topologia, HWLOC_TOPOLOGY_FLAG_IO_DEVICES); Intel Corporation. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento, sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços. *Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Otimização para melhor desempenho de DMA
hwloc_topology_load(topologia); hwloc_obj_t obj = hwloc_get_pcidev_by_busid(topologia, dom, barramento, dev, func); hwloc_obj_t obj2 = hwloc_get_non_io_ancestor_obj(topologia, obj); #if (FPGA_DMA_DEBUG) hwloc_obj_type_snprintf(str, 4096, obj2, 1); printf(“%s\n”, str);hwloc_obj_attr_snprintf(str, 4096, obj2, ” :: “, 1); printf(“%s\n”, str); hwloc_bitmap_taskset_snprintf(str, 4096, obj2->cpuset); printf("CPUSET é %s\n", str); hwloc_bitmap_taskset_snprintf(str, 4096, obj2->nodeset); printf(“NODESET é %s\n”, str);#endif if (memory_affinity) { #if HWLOC_API_VERSION > 0x00020000 retval = hwloc_set_membind(topology, obj2->nodeset,HWLOC_MEMBIND_THREAD, HWLOC_MEMBIND_MIGRATE |HWLOC_MEMBIND_BYNODESET); #else retval =hwloc_set_membind_nodeset(topologia, obj2->nodeset, HWLOC_MEMBIND_THREAD,HWLOC_MEMBIND_MIGRATE); #endifON_ERR_GOTO(retval, out_destroy_tok, “hwloc_set_membind”); } if (cpu_affinity) { retval = hwloc_set_cpubind(topologia, obj2->cpuset, HWLOC_CPUBIND_STRICT); ON_ERR_GOTO(retval, out_destroy_tok, “hwloc_set_cpubind”); } }
Arquivos do Guia do Usuário da Unidade Funcional do Acelerador DMA
Versão da pilha de aceleração Intel | Guia do usuário (PDF) |
2.0 | Guia do Usuário da Unidade Funcional do Acelerador DMA (AFU) |
Histórico de revisão de documentos para o Guia do usuário da unidade funcional do acelerador de DMA
Versão do documento |
Aceleração Intel Versão da pilha |
Mudanças |
2020.08.03 |
2.0.1 (suportado com Intel
Quartus® Prime Pro Edition Edição 19.2) |
Corrigida a imagem AF file nome na seção Compilando o DMA AFU Example. |
2020.04.17 |
2.0.1 (suportado com Intel
Quartus Prime Pro Edition Edição 19.2) |
Corrigida uma declaração em Público-alvo seção. |
2020.02.20 |
2.0.1 (suportado com Intel
Quartus Prime Pro Edition Edição 19.2) |
Erro de digitação corrigido. |
2019.11.04 |
2.0.1 (suportado com Intel Quartus Prime Pro Edition Edição 19.2) |
• Substituído o fpgaconf por fpgasupdate ao configurar o FPGA com o AFU de pré-compilação na seção Executando o DMA AFU Example.
• Legenda adicionada Placa de aceleração programável Intel FPGA D5005 ao título do documento. • Adicionada a variável de ambiente $OPAE_PLATFORM_ROOT. • Seção modificada Modelo de programação de software para pequenas edições. • Nova seção adicionada Compilando o DMA AFU Example. • Seção modificada Otimização para melhor desempenho de DMA para pequenas edições. |
2019.08.05 |
2.0 (suportado com Intel
Quartus Prime Pro Edição 18.1.2) |
Lançamento inicial. |
Corporação Intel. Todos os direitos reservados. Intel, o logotipo Intel e outras marcas Intel são marcas comerciais da Intel Corporation ou de suas subsidiárias. A Intel garante o desempenho de seus produtos FPGA e semicondutores de acordo com as especificações atuais de acordo com a garantia padrão da Intel, mas se reserva o direito de fazer alterações em quaisquer produtos e serviços a qualquer momento sem aviso prévio. A Intel não assume nenhuma responsabilidade ou obrigação decorrente da aplicação ou uso de qualquer informação, produto ou serviço aqui descrito, exceto conforme expressamente acordado por escrito pela Intel. Os clientes Intel são aconselhados a obter a versão mais recente das especificações do dispositivo antes de confiar em qualquer informação publicada e antes de fazer pedidos de produtos ou serviços.
- Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
Documentos / Recursos
![]() |
Placa de aceleração programável Intel FPGA D5005 [pdf] Guia do Usuário Placa de aceleração programável FPGA, D5005, placa de aceleração programável FPGA D5005, unidade funcional do acelerador DMA |