Свободный GPU, для которого не требуется отчислений и отсутствуют условия на использование — голубая мечта многих разработчиков. Сейчас представлен проект, который является началом большой работы по созданию полностью открытых GPU.
Речь идет о проекте, который развивает группа энтузиастов вместе с компанией Pixlica, сам проект называется RV64X. Основная задача команды — создание дополнительного набора инструкций для 3D-графики и обработки мультимедийных данных. В итоге должен получиться свободно интегрируемый в процессор GPU на базе архитектуры RISC-V.
Проект базируется на основе векторных инструкций из RISC-V ISA. Они расширены поддержкой новых типов данных и расширений, которые специфичны для обработки графики. В частности, предложены дополнительные операции для обработки пикселей (RGBA), точек (XYZW), текстурных элементов (UVW-текселей), векторов (операции с 2-4 векторами), параметров материалов, расчёта освещения, трансцендентной математики, буферов глубины (Z-buffer) и кадровых буферов (Framebuffer).
Первый прототип, по словам разработчиков, рассчитан на использование лишь в микроконтроллерах, так что его поддержка ограничена лишь API Vulkan. А вот со временем разработчики добавят поддержку OpenGL и DirectX.
Идея, которая легла в основу нового проекта — гибкость архитектуры, которая позволяет подключать расширения для решения разных специфических задач, включая двухфазовое усечение конусов, применение быстрых преобразований Фурье для произвольной глубины цвета и реализация аппаратных SLAM. У RV64X есть возможность реализации собственных стадий для вычислительного конвейера, а также геометрических, пиксельных и кадровых буферов. Также проект поддерживает создание собственных тесселяторов.
Производители, используя этот проект, имеют возможность готовить предназначенные для решения разных задач чипы. В то же время базой является именно RV64X.
Концепция проекта — гибридный CPU-GPU ISA, который позволяет создавать и специализированные графические микроконтроллеры, и многоядерные процессоры, которые комбинируют вычислительные ядра с блоками для выполнения графических операций. Процессор, интегрированный с GPU, будет выглядеть, как единый модуль, без выделения блока видео. Программируется он с использованием унифицированного набора 64-разрядных инструкций и модели SIMD для обеспечения параллелизма на уровне данных.
Можно также упомянуть такую особенность архитектуры нового GPU, как использование единой модели памяти как в CPU, так и в GPU, что дает возможность обойтись без дополнительных механизмов RPC/IPC для трансляции вызовов между памятью GPU и CPU при обработке операций 3D API. В этом случае стандартные графические операции можно реализовать на уровне микрокода. Поддерживается создание пользовательских шейдеров, растеризаторов и расширений для трассировки лучшей.
При необходимости разработчики смогут реализовать векторные операции для работы с задачами по симуляции, проектами компьютерного зрения и машинного обучения.
Что касается реализации архитектуры, то она включает 32KB кэш первого уровня для инструкций и данных, 8 KB памяти SRAM для микрокода, декодировщик инструкций, аппаратную реализацию наборов инструкций RV32V и RV64X, задаваемый через микрокод декодировщик расширенных инструкций, векторное арифметико-логическое устройство (ALU), 136-разрядный регистровый файл с 1024 элементами, блок для выполнения специальных операций (SFU, Special Function Unit), блок обработки текстур (Texture Unit) и настраиваемый локальный фреймбуфер.