Inicio Actualidad La arquitectura del coprocesador: Una arquitectura de sistemas integrados para la creación...

La arquitectura del coprocesador: Una arquitectura de sistemas integrados para la creación rápida de prototipos

digikey
digikey

Por Noah Madinger, Colorado Electronic Product Design (CEPD)

Aunque es bien conocida por su rendimiento de procesamiento digital y su producción, la arquitectura de coprocesadores ofrece al diseñador de sistemas embebidos oportunidades para aplicar estrategias de gestión de proyectos, que mejoran tanto los costos de desarrollo como el tiempo de comercialización. Este artículo, centrado específicamente en la combinación de un microcontrolador discreto (MCU) y una matriz de puertas programables de campo discreta (FPGA), muestra cómo esta arquitectura se presta a un proceso de diseño eficiente e iterativo. Aprovechando las fuentes de investigación, los resultados empíricos y los estudios de casos, se exploran las ventajas de esta arquitectura y se ofrecen aplicaciones ejemplares. Al concluir este artículo, el diseñador de sistemas embebidos comprenderá mejor cuándo y cómo implementar esta versátil arquitectura de hardware

Introducción

El diseñador de sistemas embebidos se encuentra en una coyuntura de limitaciones de diseño, expectativas de rendimiento y preocupaciones de calendario y presupuesto. De hecho, incluso las contradicciones en las palabras y frases de moda de la gestión de proyectos moderna subrayan aún más la naturaleza precaria de esta función: «fracasar rápido»; «ser ágil»; «a prueba de futuro» y «ser disruptivo». La acrobacia que supone incluso tratar de satisfacer estas expectativas puede ser desgarradora y, sin embargo, se ha hablado de ellas y se siguen reforzando en el mercado. Lo que se necesita es un enfoque de diseño que permita implementar un proceso iterativo evolutivo, y al igual que con la mayoría de los sistemas integrados, comienza con la arquitectura de hardware.

La arquitectura de coprocesadores, una arquitectura de hardware conocida por combinar los puntos fuertes de las tecnologías de unidades de microcontroladores (MCU) y de matrices de puertas programables en campo (FPGA), puede ofrecer al diseñador de sistemas embebidos un proceso capaz de satisfacer incluso los requisitos más exigentes, y a la vez permite la flexibilidad necesaria para hacer frente a retos conocidos y desconocidos. Al proporcionar un hardware capaz de adaptarse de forma iterativa, el diseñador puede demostrar su progreso, alcanzar hitos críticos y aprovechar al máximo el proceso de creación rápida de prototipos.

Dentro de este proceso hay hitos clave del proyecto, cada uno con su propio valor añadido al esfuerzo de desarrollo. A lo largo de este artículo, se hará referencia a ellos con los siguientes términos: El hito de Procesamiento digital de señales con el Microcontrolador, el hito de Gestión del sistema con el Microcontrolador y el hito de Implementación del producto.

Como conclusión de este artículo, se demostrará que una arquitectura de hardware flexible puede ser más adecuada para el diseño de sistemas embebidos modernos que un enfoque más rígido. Además, este enfoque puede dar lugar a mejoras tanto en el coste del proyecto como en el tiempo de comercialización. Para defender esta posición se utilizarán argumentos, ejemplos proporcionados y estudios de casos. Al observar el valor de cada hito dentro de la flexibilidad de diseño que proporciona esta arquitectura, queda claro que una arquitectura de hardware adaptable es un poderoso motor para impulsar el diseño de sistemas embebidos.

Exploración de los puntos fuertes de la arquitectura de coprocesadores: flexibilidad de diseño y procesamiento de alto rendimiento

Una aplicación común para los diseños de FPGA es interconectar directamente con un convertidor analógico-digital (ADC) de alta velocidad. La señal se digitaliza, se lee en la FPGA y, a continuación, se aplican a esta señal algunos algoritmos del procesador digital de señales (DSP). Por último, el FPGA toma decisiones basadas en los resultados.

Esta aplicación servirá de ejemplo a lo largo de este artículo. Además, la Figura 1 ilustra una arquitectura de coprocesador genérica, en la que la MCU y la FPGA están conectadas a través de la interfaz de memoria externa de la MCU. La FPGA se trata como si fuera una pieza de memoria estática de acceso aleatorio (SRAM) externa. Las señales vuelven a la MCU desde la FPGA y sirven como líneas de interrupción de hardware e indicadores de estado. Esto permite a la FPGA indicar estados críticos a la MCU, como comunicar que una conversión ADC está lista, o que se ha producido un fallo, o que ha ocurrido otro evento digno de mención.

Diagrama del coprocesador genéricoFigura 1: Diagrama genérico del coprocesador (MCU + FPGA). (Fuente de la imagen: CEPD)

Los puntos fuertes del enfoque del coprocesador probablemente se vean mejor en los resultados de cada uno de los hitos mencionados. El valor se evalúa no solo enumerando los logros de una tarea o fase, sino también evaluando la habilitación que estos logros permiten. Las respuestas a las siguientes preguntas ayudan a evaluar el valor global de los resultados de un hito:

  • ¿Puede continuar el progreso de otros miembros del equipo con mayor rapidez, al eliminarse las dependencias y los cuellos de botella del proyecto?
  • ¿Cómo permiten los logros del hito otras vías de ejecución paralela?

El procesamiento de la señal digital con el microcontrolador hito

Diagrama de arquitectura - procesamiento digital de señales con el microcontroladorFigura 2: Arquitectura – procesamiento digital de señales con el microcontrolador. (Fuente de la imagen: CEPD)

La primera etapa de desarrollo que permite esta arquitectura de hardware sitúa a la MCU en primer plano. En igualdad de condiciones, el desarrollo de la MCU y del software ejecutable requiere menos recursos y tiempo que el desarrollo de la FPGA y del lenguaje descriptivo del hardware (HDL). Así, al iniciar el desarrollo del producto con la MCU como procesador principal, los algoritmos pueden implementarse, probarse y validarse más rápidamente. Esto permite descubrir los errores algorítmicos y lógicos en una fase temprana del proceso de diseño, y también permite probar y validar partes importantes de la cadena de señales.

El papel de la FPGA en este hito inicial es servir de interfaz de recogida de datos de alta velocidad. Su tarea es canalizar de forma fiable los datos del ADC de alta velocidad, avisar a la MCU de que los datos están disponibles y presentar estos datos en la interfaz de memoria externa de la MCU. Aunque este papel no incluye la implementación de procesos DSP basados en HDL u otros algoritmos, es sin embargo muy crítico.

El desarrollo de la FPGA que se realiza en esta fase sienta las bases para el éxito final del producto, tanto en su desarrollo como en su lanzamiento al mercado. Al centrarse en la interfaz de bajo nivel, se puede dedicar el tiempo adecuado a probar estas operaciones esenciales. Solo una vez que la FPGA desempeñe de forma fiable y segura esta función de interfaz, podrá concluirse con seguridad este hito.

Los principales resultados de este hito inicial incluyen los siguientes beneficios:

  1. La ruta completa de la señal -todas las amplificaciones, atenuaciones y conversiones- habrá sido probada y validada.
  2. El tiempo y el esfuerzo de desarrollo del proyecto se habrán reducido al implementar inicialmente los algoritmos en software (C/C++); esto tiene un valor considerable para la dirección y otras partes interesadas, que deben ver la viabilidad de este proyecto antes de aprobar futuras fases de diseño.
  3. Las lecciones aprendidas de la implementación de los algoritmos en C/C++ serán directamente transferibles a las implementaciones en HDL – a través del uso de herramientas de software a HDL, por ejemplo, Xilinx HLS.

La gestión del sistema con el hito del microcontrolador

Diagrama de arquitectura - gestión del sistema con el microcontroladorFigura 3: Arquitectura – gestión del sistema con el microcontrolador. (Fuente de la imagen: CEPD)

La segunda etapa de desarrollo, que ofrece este enfoque de coprocesador, se define por el traslado de los procesos DSP y las implementaciones de algoritmos de la MCU a la FPGA. La FPGA sigue siendo responsable de la interfaz ADC de alta velocidad, sin embargo, al asumir estas otras funciones, la velocidad y el paralelismo que ofrece la FPGA se aprovechan al máximo. Además, a diferencia de la MCU, pueden implementarse múltiples instancias de los procesos DSP y canales de algoritmos, y ejecutarse simultáneamente.

Basándose en la lección aprendida de la implementación de la MCU, el diseñador lleva esta confianza a este próximo hito. Las herramientas, como la mencionada Vivado HLS de Xilinx, proporcionan una traducción funcional del código C/C++ ejecutable a la HDL sintetizable. Ahora, las restricciones de temporización, los parámetros de proceso y otras preferencias del usuario todavía deben definirse e implementarse, sin embargo, la funcionalidad central se persigue y se traduce a la tela de la FPGA.

Para este hito, el papel de la MCU es el de gestor del sistema. La MCU monitorea, actualiza e informa los registros de estado y control dentro de la FPGA. Además, la MCU gestiona la interfaz de usuario (UI). Esta interfaz de usuario podría adoptar la forma de un servidor web al que se accede a través de una conexión ethernet o Wi-Fi, o podría ser una interfaz de pantalla táctil industrial que diera acceso a los usuarios en el punto de uso. La clave del nuevo y más refinado papel de la MCU es la siguiente: al ser liberada de las tareas de procesamiento intensivo, tanto la MCU como la FPGA se aprovechan ahora en tareas para las que son muy adecuadas.

Los principales resultados de este hito incluyen estos beneficios:

  1. La FPGA proporciona una ejecución rápida y paralela de los procesos DSP y de las implementaciones de algoritmos.La MCU proporciona una interfaz de usuario ágil y racionalizada y gestiona los procesos del producto.
  2. Al haberse desarrollado y validado primero en la MCU, se han mitigado los riesgos algorítmicos y estas mitigaciones se trasladan a la HDL sintetizable. Las herramientas, como Vivado HLS, facilitan este proceso de traducción. Además, los riesgos específicos de la FPGA pueden mitigarse mediante herramientas de simulación integradas, como la suite de diseño Vivado.
  3. Las partes interesadas no se exponen a un riesgo significativo al trasladar los procesos a la FPGA. Por el contrario, consiguen ver y disfrutar de las ventajas que proporciona la velocidad y el paralelismo de la FPGA. Se observan mejoras de rendimiento medibles y ahora se puede centrar la atención en preparar este diseño para su fabricación.

El hito de la implementación del producto

Con el procesamiento intensivo de los cálculos en la FPGA, y la MCU en la gestión del sistema y la interfaz de usuario, el producto está listo para la implementación. Ahora bien, este documento no aboga por dejar de lado las versiones Alfa y Beta; sin embargo, el énfasis de este hito son las capacidades que la arquitectura de coprocesadores proporciona a la implementación del producto.

Tanto la MCU como la FPGA son dispositivos actualizables sobre el terreno. Se han realizado varios avances para que las actualizaciones de la FPGA sean tan accesibles como las del software. Además, dado que la FPGA se encuentra dentro del espacio de memoria direccionable de la MCU, esta puede servir como punto de acceso para todo el sistema: recibiendo tanto actualizaciones para sí misma como para la FPGA. Las actualizaciones se pueden programar, distribuir y personalizar de forma condicional para cada usuario final. Por último, los registros de usuarios y casos de uso pueden mantenerse y asociarse a implementaciones de construcción específicas. A partir de estos conjuntos de datos, se puede seguir perfeccionando y mejorando el rendimiento incluso después de que el producto esté en el campo.

Tal vez los puntos fuertes de esta capacidad de actualización del sistema en su totalidad se pongan más de manifiesto que en las aplicaciones espaciales. Una vez lanzado el producto, el mantenimiento y las actualizaciones deben realizarse a distancia. Esto puede ser tan sencillo como cambiar las condiciones lógicas, o tan complicado como actualizar un esquema de modulación de las comunicaciones. La programabilidad que ofrecen las tecnologías FPGA y la arquitectura de coprocesadores pueden dar cabida a toda esta gama de capacidades, al tiempo que ofrecen opciones de componentes resistentes a la radiación.

El último punto clave de este hito es la reducción progresiva de los costos. En esta etapa también pueden producirse reducciones de costes, cambios en la lista de materiales y otras optimizaciones. Durante las implantaciones sobre el terreno, puede descubrirse que el producto puede funcionar igual de bien con una MCU menos costosa o una FPGA menos capaz. Gracias al coprocesador, los diseñadores de arquitecturas no se ven obligados a utilizar componentes cuyas capacidades superan las necesidades de su aplicación. Además, si un componente deja de estar disponible, la arquitectura permite integrar nuevos componentes en el diseño. Este no es el caso de una arquitectura de un solo chip, de un sistema en un chip (SoC), o de un DSP o MCU de alto rendimiento que intente manejar todo el procesamiento del producto. La arquitectura del coprocesador es una buena mezcla de capacidad y flexibilidad que ofrece al diseñador más opciones y libertades tanto en las fases de desarrollo como en la salida al mercado.

Investigación de apoyo y estudios de casos relacionados

Ejemplo de comunicaciones por satélite

En resumen, el valor de un coprocesador es descargar la unidad de procesamiento primaria para que las tareas se ejecuten en el hardware, en el que se pueden aprovechar las aceleraciones y la racionalización. La ventaja de esta elección de diseño es un aumento neto de la velocidad y las capacidades de cálculo y, como se argumenta en este artículo, una reducción del costo y el tiempo de desarrollo. Quizá uno de los ámbitos más atractivos para estos beneficios sea el de los sistemas de comunicaciones espaciales.

En su publicación, FPGA based hardware as coprocessor, G. Prasad y N. Vasantha detallan cómo el procesamiento de datos dentro de una FPGA satisface las necesidades computacionales de los sistemas de comunicaciones por satélite sin los elevados costos de ingeniería no recurrentes (NRE) de los circuitos integrados de aplicación específica (ASIC) o las limitaciones específicas de la aplicación de un procesador de arquitectura dura. Tal y como se describió en el hito de Procesamiento digital de señales con el microcontrolador, su diseño comienza con el procesador de aplicaciones realizando la mayoría de los algoritmos de cálculo intensivo. Desde este punto de partida, identifican las secciones clave del software que consumen la mayor parte de los ciclos del reloj de la unidad central de procesamiento (CPU) y migran estas secciones a la implementación HDL. La representación gráfica es muy similar a la presentada hasta ahora, sin embargo, han optado por representar el Programa de aplicación como un bloque propio e independiente, ya que puede realizarse tanto en el Host (Procesador) como en el Hardware basado en la FPGA.

Imagen del ejemplo de arquitectura de coprocesador FPGA de infoentretenimiento 1Figura 4: Programa de aplicación, procesador anfitrión y hardware basado en FPGA – utilizado en el ejemplo de comunicaciones por satélite.

Al utilizar una interfaz de interconexión de componentes periféricos (PCI) y el acceso directo a la memoria (DMA) del procesador anfitrión, el rendimiento de los periféricos aumenta considerablemente. Esto se observa sobre todo en las mejoras del proceso de desandomización. Cuando este proceso se realizó en el software del procesador anfitrión, se produjo claramente un cuello de botella en la respuesta en tiempo real del sistema. Sin embargo, cuando se trasladó a la FPGA, se observaron las siguientes ventajas:

  • El proceso de derandomización se ejecuta en tiempo real sin provocar cuellos de botella
  • La sobrecarga computacional del procesador anfitrión se redujo significativamente y ahora podía desempeñar mejor la función de registro deseada.
  • El rendimiento total de todo el sistema se amplió.

Todo ello se consiguió sin los costos asociados a un ASIC y disfrutando de la flexibilidad de la lógica programable [5]. Las comunicaciones por satélite presentan retos considerables, y este enfoque puede cumplir con estos requisitos de forma verificable, y seguir proporcionando flexibilidad de diseño.

Ejemplo de infoentretenimiento en el automóvil

Los sistemas de entretenimiento de los automóviles son una característica distintiva para los consumidores más exigentes. A diferencia de la mayoría de la electrónica del automóvil, estos dispositivos son muy visibles y se espera que ofrezcan un tiempo de respuesta y un rendimiento excepcionales. Sin embargo, los diseñadores a menudo se ven apretados entre las necesidades actuales del diseño y la flexibilidad que requerirán las futuras características. En este ejemplo, se utilizarán las necesidades de implementación del procesamiento de señales y las comunicaciones inalámbricas para destacar los puntos fuertes de la arquitectura de hardware del coprocesador.

Una de las arquitecturas de sistemas de entretenimiento para automóviles más utilizadas fue publicada por la corporación Delphi Delco Electronics Systems. Esta arquitectura empleaba una MCU SH-4 con un ASIC complementario, el periférico HD64404 Amanda de Hitachi. Esta arquitectura satisfacía más del 75% de las funciones básicas de entretenimiento del mercado de la automoción; sin embargo, carecía de capacidad para abordar aplicaciones de procesamiento de vídeo y comunicaciones inalámbricas. Al incluir una FPGA en esta arquitectura existente, se puede añadir más flexibilidad y capacidad a este enfoque de diseño ya existente.

Imagen del ejemplo de arquitectura de coprocesador FPGA de infoentretenimiento 2Figura 5: Ejemplo de arquitectura de coprocesador FPGA de infoentretenimiento 1.

La arquitectura de la Figura 5 es adecuada tanto para el procesamiento de video como para la gestión de las comunicaciones inalámbricas. Al trasladar las funcionalidades del DSP a la FPGA, el procesador Amanda puede desempeñar una función de gestión del sistema y queda liberado para implementar una pila de comunicaciones inalámbricas. Como tanto la Amanda como la FPGA tienen acceso a la memoria externa, los datos pueden intercambiarse rápidamente entre los procesadores y componentes del sistema.

Imagen del ejemplo de arquitectura de coprocesador FPGA de infoentretenimiento 2Figura 6: Ejemplo de arquitectura de coprocesador FPGA de infoentretenimiento 2.

El segundo infoentretenimiento de la Figura 6 destaca la capacidad de la FPGA para abordar tanto los datos analógicos entrantes de alta velocidad como el manejo de la compresión y codificación necesarias para las aplicaciones de vídeo. De hecho, toda esta funcionalidad puede introducirse en la FPGA y, mediante el uso del procesamiento en paralelo, puede abordarse en tiempo real.

Al incluir una FPGA dentro de una arquitectura de hardware existente, se puede combinar el rendimiento probado del hardware existente con la flexibilidad y la garantía de futuro. Incluso dentro de los sistemas existentes, la arquitectura de coprocesadores ofrece opciones a los diseñadores, que de otro modo no estarían disponibles [6].

Ventajas de la creación rápida de prototipos

En el fondo, el proceso de creación rápida de prototipos se esfuerza por abarcar una cantidad considerable de área de desarrollo de productos mediante la ejecución de tareas en paralelo, la identificación rápida de «errores» y problemas de diseño, y la validación de rutas de datos y señales, especialmente las que se encuentran dentro de la ruta crítica de un proyecto. Sin embargo, para que este proceso produzca realmente resultados ágiles y eficientes, debe haber suficiente experiencia en las áreas del proyecto requeridas.

Tradicionalmente, esto significa que debe haber un ingeniero de hardware, un ingeniero de software embebido o DSP y un ingeniero de HDL. Ahora hay muchos profesionales interdisciplinares que pueden desempeñar varias funciones, pero la coordinación de estos esfuerzos sigue suponiendo una importante carga de trabajo.

En su artículo, An FPGA based rapid prototyping platform for wavelet coprocessors, los autores promueven la idea de que el uso de una arquitectura de coprocesadores permite que un solo ingeniero de DSP cumpla todas estas funciones, de forma eficiente y eficaz. Para este estudio, el equipo comenzó a diseñar y simular la funcionalidad DSP deseada dentro de la herramienta Simulink de MATLAB. Esto sirvió para dos funciones principales, ya que, 1) verificó el rendimiento deseado a través de la simulación, y 2) sirvió como una línea de base con la que las futuras opciones de diseño podrían ser comparadas y referenciadas.

Tras la simulación, se identificaron las funcionalidades críticas y se dividieron en diferentes núcleos, que son componentes y procesadores de núcleo blando que pueden sintetizarse en una FPGA. El paso más importante durante este trabajo fue definir la interfaz entre estos núcleos y componentes y comparar el rendimiento del intercambio de datos con el rendimiento deseado y simulado. Este proceso de diseño está estrechamente alineado con el flujo de diseño de Xilinx para los sistemas embebidos y se resume en la Figura 7 a continuación.

Imagen del flujo de diseño de Xilinx Vivado HLSFigura 7: Flujo de diseño de la implementación.

Al dividir el sistema en núcleos sintetizables, el ingeniero de DSP puede centrarse en los aspectos más críticos de la cadena de procesamiento de señales. No necesita ser un experto en hardware o HDL para modificar, enrutar o implementar diferentes procesadores de núcleo blando o componentes dentro de la FPGA. Mientras el diseñador conozca la interfaz y los formatos de los datos, tendrá pleno control sobre las rutas de las señales y podrá perfeccionar el rendimiento del sistema.

Resultados empíricos: el caso de la transformada discreta del coseno

Los resultados empíricos no solo confirmaron la flexibilidad que ofrece la arquitectura de coprocesadores al diseñador de sistemas integrados, sino que también mostraron las opciones de mejora del rendimiento disponibles con las modernas herramientas FPGA. Las mejoras, como las que se mencionan a continuación, pueden no estar disponibles o tener menos impacto para otras arquitecturas de hardware. Se seleccionó la transformada discreta del coseno (DCT) por ser un algoritmo intensivo desde el punto de vista computacional, y su progresión desde una implementación basada en C hasta una implementación basada en HDL fue el núcleo de estos hallazgos. Se eligió la DCT porque este algoritmo se utiliza en el procesamiento digital de señales para el reconocimiento de patrones y el filtrado [8]. Los hallazgos empíricos se basaron en un ejercicio de laboratorio, que fue completado por el autor y sus colaboradores, para obtener la certificación Xilinx Alliance Partner para 2020 – 2021.

Para ello se utilizaron las siguientes herramientas y dispositivos:

  • Vivado HLS v2019
  • El dispositivo de evaluación y simulación fue el xczu7ev-ffvc1156-2-e

Comenzando con la implementación basada en C, el algoritmo DCT acepta dos matrices de números de 16 bits; la matriz «a» es la matriz de entrada a la DCT, y la matriz «b» es la matriz de salida de la DCT. El ancho de los datos (DW) se define, por tanto, como 16, y el número de elementos dentro de las matrices (N) es de 1024/DW, es decir, 64. Por último, el tamaño de la matriz DCT (DCT_SIZE) se establece en 8, lo que significa que se utiliza una matriz de 8 x 8.

Siguiendo la premisa de este artículo, la implementación del algoritmo basado en C permite al diseñador desarrollar y validar rápidamente la funcionalidad del algoritmo. Aunque es una consideración importante, esta validación da más importancia a la funcionalidad que al tiempo de ejecución. Esta ponderación está permitida, ya que la implementación final de este algoritmo será en una FPGA, donde la aceleración por hardware, el desenrollado de bucles y otras técnicas están fácilmente disponibles.

Imagen del flujo de diseño de Xilinx Vivado HLSFigura 8: Flujo de diseño HLS de Xilinx Vivado.

Una vez creado el código DCT dentro de la herramienta Vivado HLS como proyecto, el siguiente paso es comenzar a sintetizar el diseño para la implementación de la FPGA. Es en este siguiente paso donde se hacen más evidentes algunos de los beneficios más impactantes de trasladar la ejecución de un algoritmo de una MCU a una FPGA – como referencia este paso es equivalente al hito de Gestión del Sistema con el Microcontrolador comentado anteriormente.

Las herramientas modernas de FPGA permiten un conjunto de optimizaciones y mejoras que aumentan enormemente el rendimiento de los algoritmos complejos. Antes de analizar los resultados, hay que tener en cuenta algunos términos importantes:

  • Latencia – El número de ciclos de reloj necesarios para ejecutar todas las iteraciones del bucle [10]
  • Intervalo – El número de ciclos de reloj antes de que la siguiente iteración de un bucle comience a procesar datos [11]
  • BRAM – Memoria de acceso aleatorio en bloque
  • DSP48E – Diapositiva de procesamiento de señales digitales para la arquitectura UltraScale
  • FF – Flipflop
  • LUT – Look-up Table
  • URAM – Memoria de acceso aleatorio unificada (puede estar compuesta por un solo transistor)
Latencia Intervalo
mín máx mín máx
Por defecto (solución 1) 2935 2935 2935 2935
Bucle interno de la tubería (solución 2) 1723 1723 1723 1723
Bucle exterior de la tubería (solución 3) 843 843 843 843
Partición de la matriz (solución 4) 477 477 477 477
Flujo de datos (solución 5) 476 476 343 343
En línea (solución 6) 463 463 98 98

Tabla 1: Resultados de la optimización de la ejecución del algoritmo FPGA (latencia e intervalo).

BRAM_18K DSP48E FF LUT URAM
Por defecto (solución 1) 5 1 246 964 0
Bucle interno de la tubería (solución 2) 5 1 223 1211 0
Bucle exterior de la tubería (solución 3) 5 8 516 1356 0
Partición de la matriz (solución 4) 3 8 862 1879 0
Flujo de datos (solución 5) 3 8 868 1654 0
En línea (solución 6) 3 16 1086 1462 0

Tabla 2: Resultados de la optimización de la ejecución del algoritmo FPGA (utilización de recursos).

Predeterminado

La configuración de optimización por defecto proviene del resultado inalterado de la traducción del algoritmo basado en C a HDL sintetizable. No hay optimizaciones habilitadas, y esto puede ser utilizado como una referencia de rendimiento para entender mejor las otras optimizaciones.

Bucle interno de la tubería

La directiva PIPELINE indica a Vivado HLS que desenrolle los bucles internos para que los nuevos datos puedan empezar a ser procesados mientras los datos existentes están todavía en el pipeline. Así, los nuevos datos no tienen que esperar a que se completen los existentes para poder empezar a procesarlos.

Bucle exterior de la tubería

Aplicando la directiva PIPELINE al bucle exterior, las operaciones del bucle exterior están ahora canalizadas. Sin embargo, las operaciones de los bucles internos se producen ahora de forma concurrente. Tanto la latencia como el tiempo de intervalo se reducen a la mitad aplicando esto directamente al bucle exterior.

Partición de la matriz

Esta directiva asigna el contenido de los bucles a arrays y así aplana todo el acceso a la memoria a elementos individuales dentro de estos arrays. Al hacer esto, se consume más RAM, pero de nuevo, el tiempo de ejecución de este algoritmo se reduce a la mitad.

Flujo de datos

Esta directiva permite al diseñador especificar el número objetivo de ciclos de reloj entre cada una de las lecturas de entrada. Esta directiva solo es compatible con la función de nivel superior. Solo los bucles y las funciones expuestas a este nivel se beneficiarán de esta directiva.

En línea

La directiva INLINE aplana todos los bucles, tanto los internos como los externos. Los procesos de fila y columna pueden ahora ejecutarse simultáneamente. El número de ciclos de reloj necesarios se mantiene al mínimo, aunque esto consuma más recursos de la FPGA.

Conclusión:

La arquitectura de hardware del coprocesador proporciona al diseñador de sistemas embebidos una plataforma de alto rendimiento que mantiene su flexibilidad de diseño a lo largo del desarrollo y del lanzamiento del producto. Al validar primero los algoritmos en C o C++, se pueden verificar los procesos, las rutas de datos y señales y la funcionalidad crítica en un tiempo relativamente corto. A continuación, al trasladar los algoritmos intensivos del procesador a la FPGA del coprocesador, el diseñador puede disfrutar de las ventajas de la aceleración del hardware y de un diseño más modular.

En caso de que las piezas queden obsoletas o se requieran optimizaciones, la misma arquitectura puede permitir estos cambios. Se pueden incorporar nuevos MCU y FPGA en el diseño, mientras que las interfaces pueden permanecer relativamente intactas. Además, como tanto la MCU como la FPGA se pueden actualizar sobre el terreno, los cambios y optimizaciones específicos del usuario se pueden aplicar sobre el terreno y de forma remota.

Para terminar, esta arquitectura combina la velocidad de desarrollo y la disponibilidad de una MCU con el rendimiento y la capacidad de expansión de una FPGA. Con optimizaciones y mejoras de rendimiento disponibles en cada paso de desarrollo, la arquitectura del coprocesador puede satisfacer las necesidades de los requisitos más exigentes, tanto para los diseños actuales como para los posteriores.

Fuente: https://www.digikey.com.mx/es/articles/the-co-processor-architecture-an-embedded-system-architecture-for-rapid-prototyping