RV64X, una GPU de código abierto basada en tecnologías RISC-V
Un grupo de entusiastas (con aportes de Pixilica), están desarrollando el proyecto RV64X, que tiene como objetivo crear un conjunto de instrucciones de procesamiento multimedia y gráficos 3D complementarios que se puede utilizar para integrar la funcionalidad de la GPU en los procesadores RISC-V.
El proyecto se posiciona como gratuito, no requiere regalías y no impone condiciones de uso, lo que permitirá crear GPU totalmente abiertas basadas en RV64X.
Pixilica se asocia con RV64X para proponer un nuevo conjunto de instrucciones gráficas diseñadas para gráficos 3D y procesamiento de medios. Puede ser un ISA CPU-GPU fusionado.
Estas nuevas instrucciones se basan en el conjunto de instrucciones de vector base RISC-V. Agregarán soporte para nuevos tipos de datos que son gráficos específicos como extensiones en capas en el espíritu del núcleo RISC-V ISA.
Sobre RV64X
RV64X se basa en las instrucciones vectoriales RISC-V ISA, que se mejoran con soporte para nuevos tipos de datos y extensiones específicas de gráficos.
Por ejemplo, se proponen operaciones adicionales para el procesamiento de píxeles (RGBA), puntos (xyzw), elementos de textura (UVW- Texels), vectores (operaciones con 2-4 elementos), parámetros de los materiales, los cálculos de la iluminación, las matemáticas trascendentales, tampones de profundidad (Z – búfer) y búfer de marco (Framebuffer).
El primer prototipo de GPU basado en RV64X está diseñado para su uso en microcontroladores y se limitará al soporte para la API de gráficos Vulkan, aun que con el tiempo, prometen agregar soporte para OpenGL y DirectX.
La principal motivación para el desarrollo es la necesidad de una arquitectura flexible que permita la conexión de extensiones para resolver eficazmente problemas específicos, como el truncamiento en dos fases de los conos, el uso de transformadas rápidas de Fourier para profundidades de color arbitrarias y la implementación de hardware SLAM.
Por ejemplo, RV64X permite la implementación de sus propias etapas para el pipeline computacional, búferes geométricos, de píxeles y de cuadros, así como la creación de sus propios tessellators.
Además se menciona que con RV64X, los fabricantes de chips podrán preparar las soluciones que necesitan basándose en la red troncal existente, centrándose en capacidades avanzadas, sin tener que perder tiempo en cosas comunes.
RV64X está evolucionando como un ISA híbrido CPU-GPU, lo que permite la creación de microcontroladores gráficos especializados y procesadores multinúcleo que combinan núcleos computacionales con bloques para realizar operaciones gráficas.
Un procesador que combina un núcleo RISC-V con un bloque de GPU parece una sola unidad (sin asignación explícita de GPU) y se programa utilizando un conjunto de instrucciones unificado de 64 bits y un modelo SIMD para el paralelismo de la capa de datos. La arquitectura RV64X está evolucionando con miras a una implementación compacta y eficiente que se pueda implementar sobre la base de FPGA y ASIC.
El movimiento de código abierto que transformó el desarrollo de software está ganando terreno entre los desarrolladores de hardware. Los primeros esfuerzos centrados en la arquitectura RISC-V están marcando el camino. Exploramos la promesa y las trampas del desarrollo de hardware abierto en nuestro próximo Proyecto especial de código abierto.
Entre las características de la arquitectura RV64X se encuentra el uso de un único modelo de memoria en la CPU y la GPU, lo que permite prescindir de mecanismos RPC/IPC adicionales para traducir llamadas entre la memoria de la GPU y la CPU cuando se procesan operaciones API 3D.
Las operaciones de gráficos estándar se pueden implementar a nivel de microcódigo. Se admite la creación de sombreadores personalizados, rasterizadores y extensiones de trazado de rayos. Además, las operaciones vectoriales se pueden implementar a nivel de microcódigo para resolver problemas de simulación, visión por computadora y aprendizaje automático.
La implementación de referencia RV64X incluye caché L1 de 32 KB para instrucciones y datos, SRAM de 8 KB para microcódigo, decodificador de instrucciones, implementación de hardware de conjuntos de instrucciones RV32V y RV64X, decodificador de instrucciones extendidas definido por microcódigo, unidad lógica aritmética vectorial (ALU), registro de 136 bits archivo con 1024 elementos, una Unidad de Función Especial (SFU), una Unidad de Textura y un framebuffer local configurable.
Finalmente, si quieres conocer más al respecto puedes consultar los detalles en la publicación original. El enlace es este.