El pasado 8 de junio, Francesc Moll profesor de la Universidad Politécnica de Cataluña, presentó en el RISC-V Summit Europe 2023 el poster Kameleon, a RISC-V based 2-core multi-accelerator academic SoC. El poster presenta en una vista rápida el SoC Kamaleon y sus componentes desarrollados en el marco del proyecto DRAC en el que participa el Barcelona Supercomputing Center, la Universitat de Barcelona, la Universitat Politècnica de Catalunya, la Universitat Autònoma de Barcelona y el Insitut de Microelectrònica de Barcelona.
Kameleon es un SoC basado en la ISA RISC-V. Integra dos núcleos, Sargantana y Lagarto KA. También cuenta con cuatro aceleradores: SAURIA, un acelerador para Deep Neutral Networks; PQC, un acelerador de cifrado para comunicaciones seguras; Picos, un programador de tareas acelerado por hardware y WFA, un acelerador de análisis genómico.
RISC-V es una arquitectura de conjunto de instrucciones de hardware libre basado en un diseño de tipo RISC que abre la posibilidad de diseñar procesadores para aplicaciones específicas basados en aceleradores que descargan de la CPU tareas específicas y complejas. El resultado es una mejora del rendimiento y la eficiencia de los sistemas informáticos. El SoC Kameleon es el resultado del proyecto de investigación DRAC en el que participan seis universidades y centros de investigación para implantar un ASIC multiacelerador basado en RISC-V. Kameleon cuenta con dos núcleos diferentes: uno fuera de orden (out-of-order) y otro en orden (in-order). Además, como resultado del proyecto se crearon tres aceleradores de dominios específicos: criptografía, genómica y navegación autónoma, y se añadió un cuarto acelerador para la programación de tareas. El proyecto culmina con el diseño físico del SoC que, además de la IP digital, incluye un PLL que genera un reloj de hasta 2 GHz y una interfaz Serdes de 4 canales y 8 Gbps a una FPGA.
La arquitectura del SoC Kameleon tiene dos núcleos y cuatro aceleradores, aunque no implementa la funcionalidad de doble núcleo: sólo un núcleo puede estar activo a la vez (a elegir por el usuario), y el núcleo activo no puede cambiarse mientras el SoC está encendido
A. Núcleo In-order
El núcleo en orden es un procesador RISC-V [1] de 64 bits en orden que integra la ISA RV64G. Cuenta con un pipeline de siete etapas altamente optimizado que puede alcanzar frecuencias de trabajo superiores a 1 GHz. También cuenta con una unidad de coma flotante (FPU) de doble precisión y una unidad SIMD (Single Instruction Multiple Data) de 128 bits que acelera las aplicaciones de dominios específicos. Este núcleo es capaz de alcanzar 2,44 CoreMark/MHz [2]. También ofrece un rendimiento comparable o incluso superior al de otros núcleos académicos de última generación en el conjunto de pruebas comparativas Autobench EEMBC [3]. Así pues, Sargantana lidera el espacio de los núcleos RISC-V diseñados académicamente.
B. Núcleo Out-of-Order
El núcleo OoO es un procesador fuera de orden de 64 bits bidireccional que soporta las extensiones I, M y A de la ISA RISC-V compuesto por un pipeline de diez ciclos que abarca las diferentes etapas de la implementación. La microarquitectura está formada por dos bloques principales: un front-end secuencial y un back-end fuera de orden. En el front-end, el núcleo obtiene y emite dos instrucciones cada ciclo de reloj y es capaz de ejecutar rutas de datos especulativas. En el back-end, las instrucciones enviadas se almacenan en diferentes colas de instrucciones, que pueden albergar hasta 32 instrucciones. El diseño de las colas se centra en reducir el consumo de energía. La ejecución de las instrucciones corre a cargo de distintas unidades funcionales combinadas con una técnica de lógica de bypass para difundir eficazmente los operadores de fuente de las instrucciones dependientes. El núcleo es capaz de alcanzar valores de rendimiento de 0,897 IPC para el benchmark RISC-V [4] y 0,988 IPC para el benchmark EEMBC [5].
C. Memoria caché
Ambos núcleos, Sargantana y Lagarto Ka, tienen acceso a las memorias caché L1 y L2. Cada núcleo tiene una caché individual de 48 kB (16 kB para instrucciones y 32 kB para datos). Y una memoria caché L2 compartida de 512 kB.
En cuanto a los cuatro aceleradores, estos pueden estar activos al mismo tiempo. El núcleo activo se comunicará con los aceleradores a través de las interfaces AXI Lite y AXI Full.
A. Acelerador de criptografía post cuántica (PQC)
El acelerador PQC es un módulo que acelera la CME [6] (Classic McEliece) KEM (Key Encapsulation Mechanism), concretamente sus funciones de cifrado y descifrado. El CME KEM funciona primeramente con el servidor generando un par de claves pública-secreta (PK, SK) utilizando el KEM. A continuación, el cliente, que posee la PK del servidor, la introduce en el algoritmo de encapsulación para producir una clave de sesión en texto plano y cifrado. Por último, el servidor recibe la clave de sesión cifrada y la descifra utilizando su propia SK y el algoritmo desencapsulación. Tras completar con éxito este protocolo, tanto el cliente como el servidor han establecido una clave de sesión común de forma segura y pueden seguir comunicándose mediante algoritmos de criptografía simétrica. La función del PQC es acelerar el cifrado de una clave de sesión en un texto cifrado por una de las partes, que posteriormente es descifrado por la otra parte en la clave de sesión mediante el algoritmo de descifrado.
B. Unidad tensorial de matriz sistólica para la aceleración de la inteligencia Artificial (SAURIA)
La conducción autónoma es uno de los principales retos actuales de la ingeniería y abarca muchos campos de investigación. A nivel algorítmico, los modelos más avanzados para la conducción autónoma se basan en Redes Neuronales Profundas (DNN) que logran una alta precisión de inferencia a costa de la complejidad computacional. Debido a esta alta complejidad computacional, se requieren aceleradores para obtener tiempos de respuesta aceptables. SAURIA es la solución de bajo consumo y alta eficiencia energética para acelerar cargas de trabajo DNN en el SoC Kameleon. Su diseño gira en torno a una arquitectura de matriz sistólica, que explota el paralelismo, la reutilización de datos y el pipelining para computar eficientemente multiplicaciones generales matriz-matriz. Con el fin de maximizar la eficiencia energética, se han empleado circuitos aritméticos aproximados en los elementos de procesamiento de la matriz sistólica, reduciendo el consumo de energía en un 30% sin degradación significativa del rendimiento de la DNN de detección de objetos YOLOv3 [7]. El acelerador SAURIA, que trabaja a 500 MHz, tiene un rendimiento máximo de 128 GFLOP/s y una eficiencia energética máxima de 1,41 TFLOP/sW.
C. Acelerador del Algoritmo de Alineamiento WaveFront (WFA)
El acelerador WFA es el primer acelerador para el alineamiento exacto por pares de secuencias largas de ADN basado en el Algoritmo de Alineamiento por Frente de Onda (WFA) [8]. Admite secuencias de hasta 10k bases y tasas de error de hasta el 10%. WFA acelera la alineación del ADN en el SoC Kameleon. Este acelerador proporcionó en las evaluaciones en un prototipo FPGA mejoras de rendimiento de hasta 1076× en comparación con la implementación de WFA en la CPU del chip. La presencia de un acelerador genómico en el SoC Kameleon aprovecha la funcionalidad del chip para analizar datos genómicos. Esto convierte al chip en una plataforma perfecta para aplicaciones genómicas, ya que elimina la necesidad de costosos aceleradores externos y sus complejidades de comunicación.
D. Programador de tareas acelerado por hardware (Picos)
Picos es una implementación hardware de un modelo de programación por tareas en tiempo de ejecución desarrollado en el grupo de modelos de programación del BSC. El objetivo principal es reducir la sobrecarga del tiempo de ejecución acelerando la programación de tareas (incluida la resolución de dependencias) y la sincronización de tareas (taskwait). Las tareas pueden ejecutarse en cualquier núcleo de procesamiento (CPU) o acelerador. Las tareas de CPU pueden ser cualquier trozo de código, mientras que las tareas de acelerador tienen que ser una ejecución de la aplicación implementada, con parámetros dados a través de una API personalizada. Picos es capaz de gestionar y controlar la ejecución de todos los aceleradores al mismo tiempo, incluyendo las tareas de la CPU. Además, las dependencias pueden declararse independientemente del objetivo (acelerador o CPU).
El diseño físico del SoC Kameleon se ha realizado utilizando la tecnología FDSOI de 22 nm de Globalfoundries. El diseño tiene un tamaño de tres por tres mm y 203 pines IO (120 pines de los cuales son para alimentación). El tamaño del diseño vino dictado por los requisitos de área para las IP que debía contener. La forma en que se han distribuido las IP de Kameleon se muestran en la "Figura 1". Ambos núcleos se han integrado en la misma IP y también aparecen dos IPs que no son núcleos ni aceleradores: Un PLL para generación de reloj y cuatro serializadores/deserializadores para la comunicación. Las IPs se han distribuido para dejar el área rectangular más grande posible a la IP de los núcleos, ya que fue la última en ser diseñada.
Al crear el diseño de este SoC, hemos demostrado la viabilidad de diseñar un SoC de código abierto/hardware abierto diseñado íntegramente por instituciones académicas y de investigación, que era el objetivo del proyecto. Actualmente, el diseño aún no se ha fabricado. Sin embargo, su funcionalidad ha sido probada mediante simulación, y es capaz de implementar la funcionalidad que proporcionan todas las IPs que lo componen, alcanzando frecuencias de trabajo de hasta 800 MHz.
REFERENCIAS
[1] The RISC-V foundation, “About RISC-V,” 2023.
[2] S. Gal-On and M. Levy, “Exploring coremark a benchmark maximizing simplicity and efficacy,” The Embedded Microprocessor Benchmark Consortium, 2012.
[3] J. Poovey, T. Conte, M. Levy, and S. Gal-On, “A Benchmark Characterization of the EEMBC Benchmark Suite,” IEEE Micro, vol. 29, pp. 18–29, 2009.
[4] R.-V. International, “RISC-V Benchmarks.” https://github.com/riscv-software-src/riscv-tests, 2023. [Accessed aug-2019].
[5] E. M. B. Consortium, “EEMBC AutoBench Performance Benchmark Suite.” https://www.eembc.org/autobench/, 2023. [Accessed march-2023].
[6] M. R. Albrecht, D. J. Bernstein, T. Chou, and C. C. et al., “Classic McEliece: conservative code-based cryptography,” 2020.
[7] J. Redmon and A. Farhadi, “YOLOv3: An Incremental Improvement,” CoRR, vol. abs/1804.02767, 2018.
[8] S. Marco-Sola, J. C. Moure, M. Moreto, and A. Espinosa, “Fast gapaffine pairwise alignment using the wavefront algorithm,” Bioinformatics, vol. 37, no. 4, pp. 456–463, 2021.