Liberdade de vídeo: GPU RISC-V de código aberto introduzida



Uma GPU gratuita que não exige royalties e não há termos de uso é o sonho de muitos desenvolvedores. Agora é apresentado um projeto que é o início de muito trabalho na criação de GPUs totalmente abertas.



Este é um projeto desenvolvido por um grupo de entusiastas em conjunto com a Pixlica, o próprio projeto se chama RV64X. A principal tarefa da equipe é criar um conjunto adicional de instruções para gráficos 3D e processamento de dados multimídia. O resultado deve ser uma GPU que pode ser integrada livremente ao processador com base na arquitetura RISC-V.



O projeto é baseado em instruções vetoriais do ISA RISC-V. Eles foram estendidos com suporte para novos tipos de dados e extensões que são específicos para processamento gráfico. Em particular, são propostas operações adicionais para processamento de pixels (RGBA), pontos (XYZW), elementos de textura (UVW-texels), vetores (operações com 2-4 vetores), parâmetros de material, cálculo de iluminação, matemática transcendental, buffers de profundidade (Z - buffer) e buffers de quadro (Framebuffer).



O primeiro protótipo, segundo os desenvolvedores, foi projetado para uso apenas em microcontroladores, portanto, seu suporte é limitado apenas à API Vulkan. Mas, com o tempo, os desenvolvedores adicionarão suporte para OpenGL e DirectX.



A ideia por trás do novo projeto é a flexibilidade da arquitetura, que permite conectar extensões para resolver várias tarefas específicas, incluindo truncamento bifásico de cones, o uso de transformadas rápidas de Fourier para uma profundidade de cor arbitrária e a implementação de SLAM de hardware . O RV64X tem a capacidade de implementar estágios próprios para o pipeline computacional, bem como buffers geométricos, de pixel e de quadro. O projeto também oferece suporte à criação de seus próprios tessellators.



Os fabricantes, usando este projeto, têm a oportunidade de preparar chips projetados para diferentes tarefas. Ao mesmo tempo, RV64X é a base.



O conceito do projeto é um híbrido CPU-GPU ISA, que permite criar microcontroladores gráficos especializados e processadores multi-core que combinam núcleos de computação com blocos para realizar operações gráficas. O processador integrado com a GPU parecerá uma única unidade sem o bloco de vídeo sendo alocado. Ele é programado usando um conjunto unificado de instruções de 64 bits e um modelo SIMD para fornecer paralelismo em nível de dados.





Também podemos citar uma característica da arquitetura da nova GPU como o uso de um único modelo de memória tanto na CPU quanto na GPU, o que torna possível prescindir de mecanismos RPC / IPC adicionais para traduzir chamadas entre a memória da GPU e a CPU ao processar operações API 3D. Nesse caso, as operações gráficas padrão podem ser implementadas no nível do microcódigo. Oferece suporte à criação de sombreadores, rasterizadores e extensões personalizados para um melhor rastreamento.



Se necessário, os desenvolvedores podem implementar operações vetoriais para trabalhar com tarefas de simulação, projetos de visão computacional e aprendizado de máquina.



Quanto à implementação da arquitetura, inclui cache L1 de 32 KB para instruções e dados, 8 KB de SRAM para microcódigo, um decodificador de instrução, implementação de hardware de conjuntos de instruções RV32V e RV64X, um decodificador de instrução estendido especificado por microcódigo, unidade de lógica aritmética vetorial (ALU ), Um arquivo de registro de 136 bits com 1.024 elementos, uma unidade de função especial (SFU), uma unidade de textura e um framebuffer local configurável.






All Articles