Свободный 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) и настраиваемый локальный фреймбуфер.
beeruser
Это немного разные вещи.
«This is a very early spec in development, subject to change based on stakeholder and your input. We will have a discussion forum set up.
Immediate goal is to build a sample implementation»
Это вообще не имеет никакого смысла. В каких микроконтроллерах нужна 3D графика?
Там памяти-то десятки-сотни КБ от силы.
Чуваки, похоже, занимались графикой в начале 2000-х:
Vector/Matrix Processing: 2,3,4 components
– SetVec/SetMat
– Push/Pop (vec/mat)
– MatAddSub/MatMul
– VecMat/ScalarVec
– Dot/Cross
– Dist/Len
– Trans/Inv/Det/Norm
– Swz (swizzle components, bits)
– Lerp/Slerp
Современные GPU — скалярные. Там нет ничего подобного уже.
Ускоритель OpenGL :)
Pixel Instructions
– SetPix/ClrPix/GetPix
Texture Instructions
– TexEnv
– TexGen
Optional Graphics Instructions (micro-coded)
– ModelView
– Backface
– Lookat
– Proj
– Lit (a,d,s)
Это легаси хлам со старого OpenGL, которым никто давно не пользуется.
«RISC», ага.
Frame Buffer Instructions
– SetZ/ClrZ
– SetArea/ClrArea
– Sync/Scanout
– Compress/Decomp
– BitBlt
В современных GPU даже нет таких команд типа «очистить экран», bitblt (по крайней мере у AMD).
picul
anger32
Блиттер есть у многих GPU и сейчас: Intel, Vivante и др. Но это действительно не 3D, как заявляют разработчики.
DungeonLords
Приглашаю Вас к обсуждению вопроса вывода информации:
forum.milandr.ru/viewtopic.php?f=15&t=4259