intel-LOGO

Unidade Funcional Intel Native Loopback Accelerator (AFU)

Intel-Native-Loopback-Accelerator-Functional-Unit-(AFU)-PRO

Sobre este documento

Convenções
Tabela 1. 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
Tabela 2. 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.
ASE Ambiente de Simulação AFU Ambiente de co-simulação que permite usar o mesmo aplicativo host e AF em um ambiente de simulação. O ASE faz parte do Intel® Acceleration Stack para FPGAs.
CCI-P Interface de cache principal CCI-P é a interface padrão que as AFUs usam para se comunicar com o host.
CL Linha de cache linha de cache de 64 bytes
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.
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.
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
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.
Mensagem Mensagem Mensagem – uma notificação de controle
NLB Loopback nativo O NLB executa leituras e gravações no link CCI-P para testar a conectividade e o rendimento.
RdLinha_I Linha de leitura inválida Solicitação de leitura de memória, com dica de cache FPGA definida como inválida. A linha não é armazenada em cache no FPGA, mas pode causar poluição do cache do FPGA.

Observação: O cache tag rastreia o status de todas as solicitações pendentes no Intel Ultra Path Interconnect (Intel UPI).

Portanto, mesmo que RdLine_I seja marcado como inválido após a conclusão, ele consome o cache tag temporariamente para rastrear o status da solicitação por UPI. Essa ação pode resultar na remoção de uma linha de cache, resultando em poluição do cache. o avançadotagO problema de usar RdLine_I é que ele não é rastreado pelo diretório da CPU; assim, evita espionagem da CPU.

RdLinha-S Ler Linha Compartilhada Solicitação de leitura de memória com dica de cache FPGA definida como compartilhada. É feita uma tentativa de mantê-lo no cache do FPGA em um estado compartilhado.
WrLine_I Linha de gravação inválida Solicitação de Gravação de Memória, com dica de cache FPGA definida como Inválida. A FIU grava os dados sem intenção de mantê-los no cache do FPGA.
WrLine_M Linha de Gravação Modificada Solicitação de gravação de memória, com a dica de cache do FPGA definida como Modificada. A FIU grava os dados e os deixa no cache do FPGA em um estado modificado.

Glossário de aceleração
Tabela 3. 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 (Intel FPGA PAC) PAC Intel FPGA Placa aceleradora PCIe FPGA. Contém um FPGA Interface Manager (FIM) que emparelha com um processador Intel Xeon no barramento PCIe.

A Unidade Funcional do Acelerador de Loopback Nativo (AFU)

Loopback nativo (NLB) AFU Overview

  • O NLBample AFUs compreendem um conjunto de Verilog e System Verilog files para testar leituras e gravações de memória, largura de banda e latência.
  • Este pacote inclui três AFUs que você pode construir a partir da mesma fonte RTL. Sua configuração do código-fonte RTL cria esses AFUs.

O NLB Sample Função de Acelerador (AF)
O $OPAE_PLATFORM_ROOT/hw/sampO diretório les armazena o código-fonte para os seguintes NLB sampas AFUs:

  • nlb_mode_0
  • nlb_mode_0_stp
  • nlb_mode_3

Observação: O $DCP_LOC/hw/sampo diretório les armazena os NLB sample código-fonte AFUs para o pacote de lançamento 1.0.

Para entender os NLBsampPara saber como construir a estrutura do código-fonte AFU, consulte um dos seguintes Guias de início rápido (dependendo de qual Intel FPGA PAC você está usando):

  • Se você estiver usando Intel PAC com Intel Arria® 10 GX FPGA, consulte o Intel Programmable Acceleration Card com Intel Arria 10 GX FPGA.
  • Se você estiver usando o Intel FPGA PAC D5005, consulte o Guia de início rápido da pilha de aceleração Intel para a placa de aceleração programável Intel FPGA D5005.

O pacote de lançamento fornece os seguintes três sampAFs:

  • Modo NLB 0 AF: requer o utilitário hello_fpga ou fpgadiag para executar o teste lpbk1.
  • Modo NLB 3 AF: requer o utilitário fpgadiag para executar os testes trupt, read e write.
  • Modo NLB 0 stp AF: requer o utilitário hello_fpga ou fpgadiag para executar o teste lpbak1.
    Observação: O nlb_mode_0_stp é o mesmo AFU que nlb_mode_0, mas com o recurso de depuração de toque de sinal ativado.
    Os utilitários fpgadiag e hello_fpga ajudam o AF apropriado a diagnosticar, testar e relatar o hardware FPGA.

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.

Figura 1. Loopback nativo (nlb_lpbk.sv) Wrapper de nível superior

Intel-Native-Loopback-Accelerator-Functional-Unit-(AFU)-1

Tabela 4. NLB Files

File Nome Descrição
nlb_lpbk.sv Wrapper de nível superior para NLB que instancia o solicitante e o árbitro.
árbitro.sv Instancia o AF de teste.
solicitante.sv Aceita solicitações do árbitro e formata as solicitações de acordo com a especificação CCI-P. Também implementa controle de fluxo.
nlb_csr.sv Implementa registros de controle e status (CSR) de leitura/gravação de 64 bits. Os registradores suportam leituras e gravações de 32 e 64 bits.
nlb_gram_sdp.sv Implementa uma RAM de porta dupla genérica com uma porta de gravação e uma porta de leitura.

NLB é uma implementação de referência de um AFU compatível com o Intel Acceleration Stack para Intel Xeon CPU com FPGAs Core Cache Interface (CCI-P) Reference Manual. A principal função do NLB é validar a conectividade do host usando diferentes padrões de acesso à memória. O NLB também mede a largura de banda e a latência de leitura/gravação. O teste de largura de banda tem as seguintes opções:

  • 100% lido
  • 100% escrito
  • 50% lê e 50% escreve

Informações relacionadas

  • Guia de início rápido da pilha de aceleração Intel para placa de aceleração programável Intel com Arria 10 GX FPGA
  • Pilha de aceleração para CPU Intel Xeon com FPGAs Core Cache Interface (CCI-P) Reference Manual
  • Guia de início rápido do Intel Acceleration Stack para Intel FPGA Programmable Acceleration Card D5005

Controle de Loopback Nativo e Descrições do Registro de Status
Tabela 5. Nomes, endereços e descrições de CSR

 Endereço de byte (OPAE) Palavra Endereço (CCI-P)  Acesso  Nome  Largura  Descrição
0x0000 0x0000 RO DFH 64 Cabeçalho de recurso do dispositivo AF.
0x0008 0x0002 RO AFU_ID_L 64 AF ID baixa.
0x0010 0x0004 RO AFU_ID_H 64 AF ID alto.
0x0018 0x0006 RSVD CSR_DFH_RSVD0 64 Obrigatório Reservado 0.
0x0020 0x0008 RO CSR_DFH_RSVD1 64 Obrigatório Reservado 1.
0x0100 0x0040 RW CSR_SCRATCHPAD0 64 Registro de rascunho 0.
0x0108 0x0042 RW CSR_SCRATCHPAD1 64 Registro de rascunho 2.
0x0110 0x0044 RW CSR_AFU_DSM_BASEL 32 Abaixe 32 bits do endereço base AF DSM. Os 6 bits inferiores são 4 × 00 porque o endereço está alinhado ao tamanho da linha de cache de 64 bytes.
0x0114 0x0045 RW CSR_AFU_DSM_BASE H 32 32 bits superiores do endereço base AF DSM.
0x0120 0x0048 RW CSR_SRC_ADDR 64 Endereço físico inicial para o buffer de origem. Todas as solicitações de leitura têm como alvo esta região.
0x0128 0x004A RW CSR_DST_ADDR 64 Endereço físico inicial para o buffer de destino. Todas as solicitações de gravação visam esta região
0x0130 0x004C RW CSR_NUM_LINES 32 Número de linhas de cache.
0x0138 0x004E RW CSR_CTL 32 Controla o fluxo do teste, inicia, para, força a conclusão.
0x0140 0x0050 RW CSR_CFG 32 Configura os parâmetros de teste.
0x0148 0x0052 RW CSR_INACT_THRESH 32 Limite de limite de inatividade.
0x0150 0x0054 RW CSR_INTERRUPT0 32 O SW aloca o ID APIC de interrupção e o vetor para o dispositivo.
Mapa de Deslocamento DSM
0x0040 0x0010 RO DSM_STATUS 32 Status do teste e registro de erros.

Tabela 6. Campos de bit CSR com Exampos
Esta tabela lista os campos de bit CSR que dependem do valor de CSR_NUM_LINES, . no example abaixo = 14.

Nome Campo de bits Acesso Descrição
CSR_SRC_ADDR [63:] RW O endereço alinhado de 2^(N+6)MB aponta para o início do buffer de leitura.
[-1:0] RW 0x0.
CSR_DST_ADDR [63:] RW O endereço alinhado de 2^(N+6)MB aponta para o início do buffer de gravação.
[-1:0] RW 0x0.
CSR_NUM_LINES [31:] RW 0x0.
continuou…
Nome Campo de bits Acesso Descrição
  [-1:0] RW Número de linhas de cache para ler ou gravar. Este limite pode ser diferente para cada AF de teste.

Observação: Certifique-se de que os buffers de origem e destino sejam grandes o suficiente para acomodar o linhas de cache.

CSR_NUM_LINES deve ser menor ou igual a .

Para os seguintes valores, assuma =14. Então, CSR_SRC_ADDR e CSR_DST_ADDR aceitam 2^20 (0x100000).
CSR_SRC_ADDR [31:14] RW Endereço alinhado de 1 MB.
[13:0] RW 0x0.
CSR_DST_ADDR [31:14] RW Endereço alinhado de 1 MB.
[13:0] RW 0x0.
CSR_NUM_LINES [31:14] RW 0x0.
[13:0] RW Número de linhas de cache para ler ou gravar. Este limite pode ser diferente para cada AF de teste.

Observação: Certifique-se de que os buffers de origem e destino sejam grandes o suficiente para acomodar o linhas de cache.

Tabela 7. Campos adicionais de bit CSR

Nome Campo de bits Acesso Descrição
CSR_CTL [31:3] RW Reservado.
[2] RW Forçar a conclusão do teste. Grava o sinalizador de conclusão de teste e outros contadores de desempenho em csr_stat. Depois de forçar a conclusão do teste, o estado do hardware é idêntico a uma conclusão de teste não forçada.
[1] RW Inicia a execução do teste.
[0] RW Reset de teste baixo ativo. Quando baixo, todos os parâmetros de configuração mudam para seus valores padrão.
CSR_CFG [29] RW cr_interrupt_testmode testa interrupções. Gera uma interrupção ao final de cada teste.
  [28] RW cr_interrupt_on_error envia uma interrupção quando ocorre um erro
      detecção.
  [27:20] RW cr_test_cfg configura o comportamento de cada modo de teste.
  [13:12] RW cr_chsel seleciona o canal virtual.
  [10:9] RW cr_rdsel configura o tipo de solicitação de leitura. As codificações têm a
      seguintes valores válidos:
      • 1'b00: RdLine_S
      • 2'b01: RdLine_I
      • 2'b11: modo misto
  [8] RW cr_delay_en permite a inserção aleatória de atraso entre as solicitações.
  [6:5] RW Configura o modo de teste, cr_multiCL-len. Os valores válidos são 0,1 e 3.
  [4:2] RW cr_mode, configura o modo de teste. Os seguintes valores são válidos:
      • 3'b000: LPBK1
      • 3'b001: Ler
      • 3'b010: Escrever
      • 3'b011: TRPUT
continuou…
Nome Campo de bits Acesso Descrição
      Para obter mais informações sobre o modo de teste, consulte o Modos de teste tópico abaixo.
[1] RW c_cont seleciona rollover de teste ou finalização de teste.

• Quando 1'b0, o teste termina. Atualiza o status CSR quando

A contagem de CSR_NUM_LINES foi atingida.

• Quando 1'b1, o teste passa para o endereço inicial após atingir a contagem CSR_NUM_LINES. No modo rollover, o teste termina apenas em caso de erro.

[0] RW cr_wrthru_en alterna entre os tipos de solicitação WrLine_I e Wrline_M.

• 1'b0: WrLine_M

• 1'b1: WrLine_I

CSR_INACT_THRESHOLD [31:0] RW Limite de limite de inatividade. Detecta a duração das paradas durante uma execução de teste. Conta o número de ciclos inativos consecutivos. Se a contagem de inatividade

> CSR_INACT_THRESHOLD, nenhuma requisição é enviada, nenhuma resposta é

recebido e o sinal inact_timeout é definido. Gravar 1 em CSR_CTL[1] ativa esse contador.

CSR_INTERRUPT0 [23:16] RW O número do vetor de interrupção para o dispositivo.
[15:0] RW apic_id é o APIC OD para o dispositivo.
DSM_STATUS [511:256] RO Formulário de despejo de erro Modo de teste.
[255:224] RO Despesas Finais.
[223:192] RO Comece Sobrecarga.
[191:160] RO Número de gravações.
[159:128] RO Número de leituras.
[127:64] RO Número de relógios.
[63:32] RO Registro de erro de teste.
[31:16] RO Compare e troque o contador de sucesso.
[15:1] RO ID exclusivo para cada gravação de status DSM.
[0] RO Sinalizador de conclusão do teste.

Modos de teste
CSR_CFG[4:2] configura o modo de teste. Os quatro testes a seguir estão disponíveis:

  • LPBK1: Este é um teste de cópia de memória. O AF copia CSR_NUM_LINES do buffer de origem para o buffer de destino. Após a conclusão do teste, o software compara os buffers de origem e destino.
  • Ler: Este teste enfatiza o caminho de leitura e mede a largura de banda ou a latência de leitura. O AF lê CSR_NUM_LINES a partir do CSR_SRC_ADDR. Este é apenas um teste de largura de banda ou latência. Não verifica os dados lidos.
  • Escrever: Este teste enfatiza o caminho de gravação e mede a largura de banda ou latência de gravação. O AF lê CSR_NUM_LINES a partir do CSR_SRC_ADDR. Este é apenas um teste de largura de banda ou latência. Não verifica os dados escritos.
  • TRUT: Este teste combina as leituras e gravações. Ele lê CSR_NUM_LINES a partir do local CSR_SRC_ADDR e grava CSR_NUM_LINES em CSR_SRC_ADDR. Ele também mede a largura de banda de leitura e gravação. Este teste não verifica os dados. As leituras e gravações não têm dependências

A tabela a seguir mostra as codificações CSR_CFG para os quatro testes. Esta tabela define e CSR_NUM_LINES, =14. Você pode alterar o número de linhas de cache atualizando o registro CSR_NUM_LINES.

Tabela 8. Modos de teste

Diagnóstico FPGA: fpgadiag
O utilitário fpgadiag inclui vários testes para diagnosticar, testar e relatar o hardware FPGA. Use o utilitário fpgadiag para executar todos os modos de teste. Para obter mais informações sobre como usar o utilitário fpgadiag, consulte a seção fpgadiag no Guia de ferramentas do Open Programmable Acceleration Engine (OPAE).

Fluxo de teste NLB Mode0 Hello_FPGA

  1. O software inicializa a memória de status do dispositivo (DSM) para zero.
  2. O software grava o endereço DSM BASE no AFU. CSR Write(DSM_BASE_H), CSRWrite(DSM_BASE_L)
  3. O software prepara o buffer de memória de origem e destino. Esta preparação é específica para o teste.
  4. O software grava CSR_CTL[2:0]= 0x1. Essa gravação tira o teste da redefinição e o coloca no modo de configuração. A configuração pode continuar somente quando CSR_CTL[0]=1 & CSR_CTL[1]=1.
  5. O software configura os parâmetros de teste, como src, destaddress, csr_cfg, num lines e assim por diante.
  6. Software CSR escreve CSR_CTL[2:0]= 0x3. O AF inicia a execução do teste.
  7. Conclusão do teste:
    • O hardware é concluído quando o teste é concluído ou detecta um erro. Após a conclusão, o hardware AF atualiza DSM_STATUS. O software pesquisa DSM_STATUS[31:0]==1 para detectar a conclusão do teste.
    • O software pode forçar a conclusão do teste escrevendo CSR writes CSR_CTL[2:0]=0x7. AF de hardware atualiza DSM_STATUS.

Histórico de Revisão de Documentos para o Guia do Usuário da Unidade Funcional do Acelerador de Loopback Nativo (AFU)

Versão do documento Aceleração Intel Versão da pilha Mudanças
 2019.08.05 2.0 (suportado com Intel

Edição Quartus Prime Pro

18.1.2) e 1.2 (suportado com

Intel Quartus Prime Pro Edição 17.1.1)

Adicionado suporte para a plataforma Intel FPGA PAC D5005 na versão atual.
 2018.12.04 1.2 (suportado com Intel

Quartus® Prime Pro Edição 17.1.1)

Versão de manutenção.
  2018.08.06 1.1 (suportado com Intel

Edição Quartus Prime Pro

17.1.1) e 1.0 (suportado com

Intel Quartus Prime Pro Edição 17.0.0)

Atualizado o local do código-fonte para os NLB sample AFU em O NLB Sample Função de Acelerador (AF) seção.
 2018.04.11 1.0 (suportado com Intel

Quartus Prime Pro Edição 17.0.0)

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 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.

Documentos / Recursos

Unidade Funcional Intel Native Loopback Accelerator (AFU) [pdf] Guia do Usuário
Unidade funcional do acelerador de loopback nativo AFU, Loopback nativo, Unidade funcional do acelerador AFU, Unidade funcional AFU

Referências

Deixe um comentário

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados *