Unidad funcional del acelerador de bucle invertido nativo (AFU) de Intel
Acerca de este documento
Convenciones
Tabla 1. Convenciones de documentos
Convención | Descripción |
# | Precede a un comando que indica que el comando debe ingresarse como root. |
$ | Indica que se debe ingresar un comando como usuario. |
esta fuente | FileLos nombres, comandos y palabras clave se imprimen en esta fuente. Las líneas de comando largas están impresas en esta fuente. Aunque las líneas de comando largas pueden pasar a la siguiente línea, el retorno no es parte del comando; no presione enter. |
Indica que el texto del marcador de posición que aparece entre los corchetes angulares debe reemplazarse con un valor apropiado. No introduzca los corchetes angulares. |
Acrónimos
Tabla 2. Acrónimos
Acrónimos | Expansión | Descripción |
AF | Función de acelerador | Imagen compilada de acelerador de hardware implementada en lógica FPGA que acelera una aplicación. |
AFU | Unidad Funcional Acelerador | Acelerador de hardware implementado en lógica FPGA que descarga una operación computacional para una aplicación desde la CPU para mejorar el rendimiento. |
API | Interfaz de programación de aplicaciones | Un conjunto de definiciones de subrutinas, protocolos y herramientas para crear aplicaciones de software. |
Plaza bursátil norteamericana | Entorno de simulación AFU | Entorno de cosimulación que le permite utilizar la misma aplicación host y AF en un entorno de simulación. ASE es parte de Intel® Acceleration Stack para FPGA. |
CCI-P | Interfaz de caché central | CCI-P es la interfaz estándar que utilizan las AFU para comunicarse con el host. |
CL | Línea de caché | Línea de caché de 64 bytes |
DFH | Encabezado de función del dispositivo | Crea una lista vinculada de encabezados de funciones para proporcionar una forma extensible de agregar funciones. |
FIM | Administrador de interfaz FPGA | El hardware FPGA que contiene la Unidad de interfaz FPGA (FIU) e interfaces externas para memoria, redes, etc.
La función de acelerador (AF) interactúa con el FIM en tiempo de ejecución. |
UIF | Unidad de interfaz FPGA | FIU es una capa de interfaz de plataforma que actúa como puente entre interfaces de plataforma como PCIe*, UPI e interfaces del lado AFU como CCI-P. |
continuado… |
Corporación Intel. Reservados todos los derechos. Intel, el logotipo de Intel y otras marcas de Intel son marcas comerciales de Intel Corporation o sus subsidiarias. Intel garantiza el rendimiento de sus productos semiconductores y FPGA según las especificaciones actuales de acuerdo con la garantía estándar de Intel, pero se reserva el derecho de realizar cambios en cualquier producto y servicio en cualquier momento sin previo aviso. Intel no asume ninguna responsabilidad que surja de la aplicación o el uso de cualquier información, producto o servicio descrito en este documento, excepto que Intel lo acuerde expresamente por escrito. Se recomienda a los clientes de Intel que obtengan la última versión de las especificaciones del dispositivo antes de confiar en cualquier información publicada y antes de realizar pedidos de productos o servicios. *Otros nombres y marcas pueden reclamarse como propiedad de otros.
Acrónimos | Expansión | Descripción |
MPF | Fábrica de propiedades de memoria | El MPF es un bloque de construcción básico (BBB) que las AFU pueden utilizar para proporcionar operaciones de configuración de tráfico CCI-P para transacciones con la UIF. |
mensaje | Mensaje | Mensaje: una notificación de control |
Liga Nacional de Fútbol Americano | Bucle invertido nativo | El NLB realiza lecturas y escrituras en el enlace CCI-P para probar la conectividad y el rendimiento. |
RdLine_I | Leer línea no válida | Solicitud de lectura de memoria, con la sugerencia de caché FPGA configurada como no válida. La línea no se almacena en caché en la FPGA, pero puede causar contaminación en la caché de la FPGA.
Nota: El caché tag rastrea el estado de la solicitud de todas las solicitudes pendientes en Intel Ultra Path Interconnect (Intel UPI). Por lo tanto, aunque RdLine_I se marca como no válido al finalizar, consume el caché tag temporalmente para rastrear el estado de la solicitud a través de UPI. Esta acción puede resultar en el desalojo de una línea de caché, lo que resulta en contaminación de caché. el avancetagLa ventaja de usar RdLine_I es que no es rastreado por el directorio de la CPU; por lo tanto, evita el espionaje desde la CPU. |
RdLine-S | Leer línea compartida | Solicitud de lectura de memoria con sugerencia de caché FPGA configurada como compartida. Se intenta mantenerlo en la caché de la FPGA en un estado compartido. |
WrLine_I | Línea de escritura no válida | Solicitud de escritura en memoria, con la sugerencia de caché FPGA configurada como no válida. La UIF escribe los datos sin intención de mantenerlos en la caché de la FPGA. |
WrLine_M | Escribir línea modificada | Solicitud de escritura en memoria, con la sugerencia de caché FPGA configurada en Modificado. La UIF escribe los datos y los deja en el caché de la FPGA en un estado modificado. |
Glosario de aceleración
Tabla 3. Pila de aceleración para CPU Intel Xeon® con FPGA Glosario
Término | Abreviatura | Descripción |
Intel Acceleration Stack para CPU Intel Xeon® con FPGA | Pila de aceleración | Una colección de software, firmware y herramientas que proporciona conectividad con rendimiento optimizado entre una FPGA Intel y un procesador Intel Xeon. |
Tarjeta de aceleración programable Intel FPGA (Intel FPGA PAC) | Intel FPGAPAC | Tarjeta aceleradora PCIe FPGA. Contiene un administrador de interfaz FPGA (FIM) que se empareja con un procesador Intel Xeon a través del bus PCIe. |
La unidad funcional del acelerador de bucle invertido nativo (AFU)
AFU de bucle invertido nativo (NLB) terminadoview
- La NLBampLas AFU comprenden un conjunto de Verilog y System Verilog files para probar lecturas y escrituras de memoria, ancho de banda y latencia.
- Este paquete incluye tres AFU que puede crear desde la misma fuente RTL. Su configuración del código fuente RTL crea estas AFU.
El NLB SampFunción del acelerador (AF)
El $OPAE_PLATFORM_ROOT/hw/sampEl directorio les almacena el código fuente de los siguientes NLB.amplas AFU:
- nlb_mode_0
- nlb_mode_0_stp
- nlb_mode_3
Nota: El $DCP_LOC/hw/sampEl directorio les almacena los NLB s.ampEl código fuente de AFU para el paquete de versión 1.0.
Para entender las NLBampPara conocer la estructura del código fuente de AFU y cómo crearlo, consulte una de las siguientes guías de inicio rápido (según el Intel FPGA PAC que esté utilizando):
- Si está utilizando Intel PAC con Intel Arria® 10 GX FPGA, consulte la Tarjeta de aceleración programable Intel con Intel Arria 10 GX FPGA.
- Si está utilizando Intel FPGA PAC D5005, consulte la Guía de inicio rápido de Intel Acceleration Stack para la tarjeta de aceleración programable Intel FPGA D5005.
El paquete de lanzamiento proporciona los tres siguientesamplos AF:
- Modo NLB 0 AF: requiere la utilidad hello_fpga o fpgadiag para realizar la prueba lpbk1.
- NLB modo 3 AF: requiere la utilidad fpgadiag para realizar las pruebas trupt, lectura y escritura.
- Modo NLB 0 stp AF: requiere la utilidad hello_fpga o fpgadiag para realizar la prueba lpbak1.
Nota: nlb_mode_0_stp es la misma AFU que nlb_mode_0 pero con la función de depuración Signal Tap habilitada.
Las utilidades fpgadiag y hello_fpga ayudan al AF apropiado a diagnosticar, probar e informar sobre el hardware FPGA.
Corporación Intel. Reservados todos los derechos. Intel, el logotipo de Intel y otras marcas de Intel son marcas comerciales de Intel Corporation o sus subsidiarias. Intel garantiza el rendimiento de sus productos semiconductores y FPGA según las especificaciones actuales de acuerdo con la garantía estándar de Intel, pero se reserva el derecho de realizar cambios en cualquier producto y servicio en cualquier momento sin previo aviso. Intel no asume ninguna responsabilidad que surja de la aplicación o el uso de cualquier información, producto o servicio descrito en este documento, excepto que Intel lo acuerde expresamente por escrito. Se recomienda a los clientes de Intel que obtengan la última versión de las especificaciones del dispositivo antes de confiar en cualquier información publicada y antes de realizar pedidos de productos o servicios. *Otros nombres y marcas pueden reclamarse como propiedad de otros.
Figura 1. Contenedor de nivel superior de bucle invertido nativo (nlb_lpbk.sv)
Cuadro 4. NLB Files
File Nombre | Descripción |
nlb_lpbk.sv | Contenedor de nivel superior para NLB que crea una instancia del solicitante y del árbitro. |
árbitro.sv | Crea una instancia de la prueba AF. |
solicitante.sv | Acepta solicitudes del árbitro y formatea las solicitudes de acuerdo con la especificación CCI-P. También implementa control de flujo. |
nlb_csr.sv | Implementa registros de control y estado (CSR) de lectura/escritura de 64 bits. Los registros admiten lecturas y escrituras de 32 y 64 bits. |
nlb_gram_sdp.sv | Implementa una RAM genérica de doble puerto con un puerto de escritura y un puerto de lectura. |
NLB es una implementación de referencia de una AFU compatible con Intel Acceleration Stack para CPU Intel Xeon con el Manual de referencia de la interfaz de caché central (CCI-P) de FPGA. La función principal de NLB es validar la conectividad del host utilizando diferentes patrones de acceso a la memoria. NLB también mide el ancho de banda y la latencia de lectura/escritura. La prueba de ancho de banda tiene las siguientes opciones:
- 100% leído
- 100% escribir
- 50% lee y 50% escribe
Información relacionada
- Guía de inicio rápido de Intel Acceleration Stack para la tarjeta de aceleración programable Intel con FPGA Arria 10 GX
- Manual de referencia de la pila de aceleración para CPU Intel Xeon con interfaz de caché central FPGA (CCI-P)
- Guía de inicio rápido de Intel Acceleration Stack para la tarjeta de aceleración programable Intel FPGA D5005
Descripciones de registro de estado y control de loopback nativo
Tabla 5. Nombres, direcciones y descripciones de los CSR
Dirección de byte (OPAE) | Palabra Dirección (CCI-P) | Acceso | Nombre | Ancho | Descripción |
0x0000 | 0x0000 | RO | DFH | 64 | Encabezado de función del dispositivo AF. |
0x0008 | 0x0002 | RO | AFU_ID_L | 64 | ID AF baja. |
0x0010 | 0x0004 | RO | AFU_ID_H | 64 | ID AF alta. |
0x0018 | 0x0006 | Reservado | CSR_DFH_RSVD0 | 64 | Obligatorio Reservado 0. |
0x0020 | 0x0008 | RO | CSR_DFH_RSVD1 | 64 | Obligatorio Reservado 1. |
0x0100 | 0x0040 | RW | CSR_SCRATCHPAD0 | 64 | Registro del bloc de notas 0. |
0x0108 | 0x0042 | RW | CSR_SCRATCHPAD1 | 64 | Registro del bloc de notas 2. |
0x0110 | 0x0044 | RW | CSR_AFU_DSM_BASEL | 32 | Menos de 32 bits de dirección base de AF DSM. Los 6 bits inferiores son 4×00 porque la dirección está alineada con el tamaño de línea de caché de 64 bytes. |
0x0114 | 0x0045 | RW | CSR_AFU_DSM_BASEH | 32 | 32 bits superiores de la dirección base de AF DSM. |
0x0120 | 0x0048 | RW | CSR_SRC_ADDR | 64 | Dirección física inicial para el búfer de origen. Todas las solicitudes de lectura se dirigen a esta región. |
0x0128 | 0x004A | RW | CSR_DST_ADDR | 64 | Dirección física inicial para el búfer de destino. Todas las solicitudes de escritura se dirigen a esta región. |
0x0130 | 0x004C | RW | CSR_NUM_LINES | 32 | Número de líneas de caché. |
0x0138 | 0x004E | RW | CSR_CTL | 32 | Controla el flujo de la prueba, inicia, detiene y fuerza la finalización. |
0x0140 | 0x0050 | RW | CSR_CFG | 32 | Configura los parámetros de prueba. |
0x0148 | 0x0052 | RW | CSR_INACT_THRESH | 32 | Límite del umbral de inactividad. |
0x0150 | 0x0054 | RW | CSR_INTERRUPT0 | 32 | El software asigna el ID y el vector de APIC de interrupción al dispositivo. |
Mapa de compensación DSM | |||||
0x0040 | 0x0010 | RO | DSM_STATUS | 32 | Estado de la prueba y registro de errores. |
Tabla 6. Campos de bits CSR con ExampLos
Esta tabla enumera los campos de bits CSR que dependen del valor de CSR_NUM_LINES, . en el example debajo = 14.
Nombre | Campo de bits | Acceso | Descripción |
CSR_SRC_ADDR | [63:] | RW | La dirección alineada de 2^(N+6)MB apunta al inicio del búfer de lectura. |
[-1:0] | RW | 0x0. | |
CSR_DST_ADDR | [63:] | RW | La dirección alineada de 2^(N+6)MB apunta al inicio del búfer de escritura. |
[-1:0] | RW | 0x0. | |
CSR_NUM_LINES | [31:] | RW | 0x0. |
continuado… |
Nombre | Campo de bits | Acceso | Descripción |
[-1:0] | RW | Número de líneas de caché para leer o escribir. Este umbral puede ser diferente para cada AF de prueba.
Nota: Asegúrese de que los buffers de origen y destino sean lo suficientemente grandes para acomodar el líneas de caché. CSR_NUM_LINES debe ser menor o igual que . |
|
Para los siguientes valores, supongamos =14. Luego, CSR_SRC_ADDR y CSR_DST_ADDR aceptan 2^20 (0x100000). | |||
CSR_SRC_ADDR | [31:14] | RW | Dirección alineada de 1 MB. |
[13:0] | RW | 0x0. | |
CSR_DST_ADDR | [31:14] | RW | Dirección alineada de 1 MB. |
[13:0] | RW | 0x0. | |
CSR_NUM_LINES | [31:14] | RW | 0x0. |
[13:0] | RW | Número de líneas de caché para leer o escribir. Este umbral puede ser diferente para cada AF de prueba.
Nota: Asegúrese de que los buffers de origen y destino sean lo suficientemente grandes para acomodar el líneas de caché. |
Tabla 7. Campos de bits CSR adicionales
Nombre | Campo de bits | Acceso | Descripción |
CSR_CTL | [31:3] | RW | Reservado. |
[2] | RW | Forzar la finalización de la prueba. Escribe el indicador de finalización de la prueba y otros contadores de rendimiento en csr_stat. Después de forzar la finalización de la prueba, el estado del hardware es idéntico al de una finalización de prueba no forzada. | |
[1] | RW | Inicia la ejecución de la prueba. | |
[0] | RW | Reinicio de prueba baja activa. Cuando es bajo, todos los parámetros de configuración cambian a sus valores predeterminados. | |
CSR_CFG | [29] | RW | cr_interrupt_testmode prueba las interrupciones. Genera una interrupción al final de cada prueba. |
[28] | RW | cr_interrupt_on_error envía una interrupción cuando se produce un error | |
detección. | |||
[27:20] | RW | cr_test_cfg configura el comportamiento de cada modo de prueba. | |
[13:12] | RW | cr_chsel selecciona el canal virtual. | |
[10:9] | RW | cr_rdsel configura el tipo de solicitud de lectura. Las codificaciones tienen la | |
siguientes valores válidos: | |||
• 1'b00: RdLine_S | |||
• 2'b01: RdLine_I | |||
• 2'b11: Modo mixto | |||
[8] | RW | cr_delay_en permite la inserción de retrasos aleatorios entre solicitudes. | |
[6:5] | RW | Configura el modo de prueba, cr_multiCL-len. Los valores válidos son 0,1 y 3. | |
[4:2] | RW | cr_mode, configura el modo de prueba. Son válidos los siguientes valores: | |
• 3: LPBK000 | |||
• 3'b001: Leer | |||
• 3'b010: escribir | |||
• 3'b011: TRPUT | |||
continuado… |
Nombre | Campo de bits | Acceso | Descripción |
Para obtener más información sobre el modo de prueba, consulte la Modos de prueba tema a continuación. | |||
[1] | RW | c_cont selecciona la renovación de la prueba o la finalización de la prueba.
• Cuando 1'b0, la prueba termina. Actualiza el estado CSR cuando Se alcanzó el recuento CSR_NUM_LINES. • Cuando es 1'b1, la prueba pasa a la dirección inicial después de alcanzar el recuento CSR_NUM_LINES. En el modo de reinversión, la prueba finaliza sólo en caso de error. |
|
[0] | RW | cr_wrthru_en cambia entre los tipos de solicitud WrLine_I y Wrline_M.
• 1'b0: WrLine_M • 1'b1: WrLine_I |
|
CSR_INACT_THRESHOLD | [31:0] | RW | Límite del umbral de inactividad. Detecta la duración de las paradas durante una ejecución de prueba. Cuenta el número de ciclos inactivos consecutivos. Si la inactividad cuenta
> CSR_INACT_THRESHOLD, no se envían solicitudes, no se reciben respuestas recibido y se establece la señal inact_timeout. Escribir 1 en CSR_CTL[1] activa este contador. |
CSR_INTERRUPT0 | [23:16] | RW | El número de vector de interrupción para el dispositivo. |
[15:0] | RW | apic_id es el APIC OD para el dispositivo. | |
DSM_STATUS | [511:256] | RO | Error en el modo de prueba del formulario de volcado. |
[255:224] | RO | Fin de arriba. | |
[223:192] | RO | Empiece por arriba. | |
[191:160] | RO | Número de escrituras. | |
[159:128] | RO | Número de lecturas. | |
[127:64] | RO | Número de relojes. | |
[63:32] | RO | Registro de errores de prueba. | |
[31:16] | RO | Compara e intercambia contadores de éxito. | |
[15:1] | RO | ID único para cada escritura de estado de DSM. | |
[0] | RO | Bandera de finalización de la prueba. |
Modos de prueba
CSR_CFG[4:2] configura el modo de prueba. Están disponibles las siguientes cuatro pruebas:
- LPBK1: Esta es una prueba de copia de memoria. El AF copia CSR_NUM_LINES del búfer de origen al búfer de destino. Al finalizar la prueba, el software compara los buffers de origen y destino.
- Leer: Esta prueba enfatiza la ruta de lectura y mide el ancho de banda o la latencia de lectura. El AF lee CSR_NUM_LINES a partir de CSR_SRC_ADDR. Esta es sólo una prueba de ancho de banda o latencia. No verifica los datos leídos.
- Escribir: Esta prueba enfatiza la ruta de escritura y mide el ancho de banda o la latencia de escritura. El AF lee CSR_NUM_LINES a partir de CSR_SRC_ADDR. Esta es sólo una prueba de ancho de banda o latencia. No verifica los datos escritos.
- TRPUESTA: Esta prueba combina las lecturas y escrituras. Lee CSR_NUM_LINES a partir de la ubicación CSR_SRC_ADDR y escribe CSR_NUM_LINES en CSR_SRC_ADDR. También mide el ancho de banda de lectura y escritura. Esta prueba no verifica los datos. Las lecturas y escrituras no tienen dependencias.
La siguiente tabla muestra las codificaciones CSR_CFG para las cuatro pruebas. Esta tabla establece y CSR_NUM_LINES, =14. Puede cambiar la cantidad de líneas de caché actualizando el registro CSR_NUM_LINES.
Tabla 8. Modos de prueba
Diagnóstico FPGA: fpgadiag
La utilidad fpgadiag incluye varias pruebas para diagnosticar, probar e informar sobre el hardware FPGA. Utilice la utilidad fpgadiag para ejecutar todos los modos de prueba. Para obtener más información sobre el uso de la utilidad fpgadiag, consulte la sección fpgadiag en la Guía de herramientas del motor abierto de aceleración programable (OPAE).
NLB Modo0 Hello_FPGA Flujo de prueba
- El software inicializa la memoria de estado del dispositivo (DSM) a cero.
- El software escribe la dirección BASE DSM en la AFU. Escritura CSR (DSM_BASE_H), Escritura CSRW (DSM_BASE_L)
- El software prepara el buffer de memoria de origen y destino. Esta preparación es específica para la prueba.
- El software escribe CSR_CTL[2:0]= 0x1. Esta escritura saca la prueba del modo de reinicio y la pone en modo de configuración. La configuración solo puede continuar cuando CSR_CTL[0]=1 y CSR_CTL[1]=1.
- El software configura los parámetros de prueba, como src, destaddress, csr_cfg, num lines, etc.
- La CSR del software escribe CSR_CTL[2:0]= 0x3. El AF comienza la ejecución de la prueba.
- Finalización de la prueba:
- El hardware se completa cuando la prueba finaliza o detecta un error. Al finalizar, el hardware AF actualiza DSM_STATUS. El software sondea DSM_STATUS[31:0]==1 para detectar la finalización de la prueba.
- El software puede forzar la finalización de la prueba escribiendo CSR CSR_CTL[2:0]=0x7. Actualizaciones de AF de hardware DSM_STATUS.
Historial de revisión de documentos para la guía del usuario de la unidad funcional del acelerador de bucle invertido (AFU) nativo
Versión del documento | Aceleración de Intel Versión de pila | Cambios |
2019.08.05 | 2.0 (compatible con Intel
Edición Quartus Prime Pro 18.1.2) y 1.2 (compatible con Intel Quartus Prime Pro Edición 17.1.1) |
Se agregó soporte para la plataforma Intel FPGA PAC D5005 en la versión actual. |
2018.12.04 | 1.2 (compatible con Intel
Quartus® Prime Pro Edición 17.1.1) |
Lanzamiento de mantenimiento. |
2018.08.06 | 1.1 (compatible con Intel
Edición Quartus Prime Pro 17.1.1) y 1.0 (compatible con Intel Quartus Prime Pro Edición 17.0.0) |
Se actualizó la ubicación del código fuente de los NLB.amplas AFU en El NLB SampFunción del acelerador (AF) sección. |
2018.04.11 | 1.0 (compatible con Intel
Quartus Prime Pro Edición 17.0.0) |
Lanzamiento inicial. |
Corporación Intel. Reservados todos los derechos. Intel, el logotipo de Intel y otras marcas de Intel son marcas comerciales de Intel Corporation o sus subsidiarias. Intel garantiza el rendimiento de sus productos semiconductores y FPGA según las especificaciones actuales de acuerdo con la garantía estándar de Intel, pero se reserva el derecho de realizar cambios en cualquier producto y servicio en cualquier momento sin previo aviso. Intel no asume ninguna responsabilidad que surja de la aplicación o el uso de cualquier información, producto o servicio descrito en este documento, excepto que Intel lo acuerde expresamente por escrito. Se recomienda a los clientes de Intel que obtengan la última versión de las especificaciones del dispositivo antes de confiar en cualquier información publicada y antes de realizar pedidos de productos o servicios. *Otros nombres y marcas pueden reclamarse como propiedad de otros.
Documentos / Recursos
![]() |
Unidad funcional del acelerador de bucle invertido nativo (AFU) de Intel [pdf] Guía del usuario Unidad funcional del acelerador de bucle invertido nativo AFU, bucle invertido nativo, unidad funcional del acelerador AFU, unidad funcional AFU |