У графических карт есть собственные наборы инструкций?

Есть ли у графических карт собственные наборы инструкций? Я предполагаю, что они это делают, но мне было интересно, является ли он запатентованным или существует какой-то открытый стандарт.

Является ли каждая инструкция графического процессора предшествующей инструкцией процессора или она является бесшовной? То есть вызовы OpenGL или DirectX на уровне драйвера через процессор, который затем отправляет инструкцию GPU по шине или является более сложной.

Ответ 1

Да, да. AMD даже предоставляет спецификации вплоть до серии HD4000 на данный момент.

Посмотрите здесь: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf

Существует также проект с открытым исходным кодом под названием Nouveau, который выполняет обратную разработку наборов инструкций NV.

Обратите внимание, что у NVIDIA есть немного отличающаяся архитектура, чем у AMD, потому что они не используют VLIW, а скалярное выполнение (хотя несколько потоков дополнительно сгруппированы в так называемом Warp или Wavefront).

Также не каждый вызов OpenGL/Direct3D отображает "инструкцию GPU". Например, при привязке текстуры драйвер будет устанавливать только соответствующие аппаратные регистры, которые сообщают графическому процессору, какую текстурную память использовать для выборки.

Реальные программы запускаются только при выполнении шейдеров или ядер обработки потоков на графическом процессоре.

Ответ 2

В настоящее время на картах NVIDIA используется какой-то промежуточный ISA, называемый PTX. Вы можете прочитать об этом в этом документе:

PTX ISA 1.1

Программы PTX переводятся во время установки в целевой набор аппаратных команд.

Ответ 3

Да, у GPU есть свои собственные наборы инструкций. Команды GPU выполняются независимо от инструкций CPU.

Ответ 4

AMD Graphics Core Next (GCN)

https://en.wikipedia.org/wiki/Graphics_Core_Next

Первое поколение называется "Южные острова".

Страница вики ссылается на спецификации AMD, которые документируют ISA, например: http://developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf

Существует даже открытая RTL-реализация под названием MIAOW https://github.com/VerticalResearchGroup/miaow, хотя она, вероятно, нарушает некоторые IP-адреса, которые AMD пока просто предпочитает хранить молча (источник).

SPIR-V

https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation  является стандартным промежуточным языком Krhonos.

Вероятно, он спроектирован так, чтобы быть похожим на существующие ISA для графических процессоров, так что он будет более выполнимым и лучше адаптироваться, поэтому он должен дать хорошее представление о реальных ISA для графических процессоров.

И если этот стандарт действительно завоевывает популярность, как это, кажется, происходит из-за принятия в Vulkan и OpenCL 2.1, будущие реализации, скорее всего, будут предназначены для реализации, чтобы иметь более высокую производительность.

Как получить и изменить PTX

Как создать или манипулировать графическим ассемблером?

Связанный

https://computergraphics.stackexchange.com/questions/7809/what-does-gpu-assembly-look-like

Ответ 6

См.: Руководство по программированию CUDA Version 3.0

Вычислительная способность устройства определяется основным номером ревизии и незначительным номер версии.

Устройства с тем же самым основным номером ревизии имеют одну и ту же основную архитектуру. основной номер пересмотра устройств на основе архитектуры Fermi - 2. Приоритетные устройства все вычислительные возможности 1.x(их основной номер версии 1).

Небольшой номер версии соответствует постепенному улучшению ядра архитектура, возможно, включая новые функции.

Приложение A содержит списки всех устройств с поддержкой CUDA и их возможности вычислений. В приложении G приведены технические характеристики каждой вычислительной возможности.