Unidade Funcional Intel Native Loopback Accelerator (AFU)
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
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
- O software inicializa a memória de status do dispositivo (DSM) para zero.
- O software grava o endereço DSM BASE no AFU. CSR Write(DSM_BASE_H), CSRWrite(DSM_BASE_L)
- O software prepara o buffer de memória de origem e destino. Esta preparação é específica para o teste.
- 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.
- O software configura os parâmetros de teste, como src, destaddress, csr_cfg, num lines e assim por diante.
- Software CSR escreve CSR_CTL[2:0]= 0x3. O AF inicia a execução do teste.
- 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 |