2009-11-08 12 views
28

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

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

ответ

28

Да, они так делают. 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

PDF переехал здесь: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf – larsr

+0

Новым является то, что один: http: //amd-dev.wpengine.netdna-cdn. com/wordpress/media/2013/07/AMD_GCN3_Instruction_Set_Architecture.pdf – Simon

+0

http://developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf –

3

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

+0

OK, но как ОС знает это? Если ОС скомпилирована для x86, я понимаю, как она знает инструкции x86. Но если у системы есть карта ATI, как она знает, как использовать набор инструкций ATI? Выполняет ли процессор сначала вызов драйвера, который выполняет инструкцию opengl? Какова маршрутизация инструкций на соответствующий ресурс? – Matt

+7

@Matt: драйвер обрабатывает все это; Windows разговаривает с водителем определенным образом, и водитель говорит с GPU определенным образом. –

5

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

PTX ISA 1.1

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

+0

Как получить и изменить PTX: http://stackoverflow.com/questions/4660974/how-to-create-or-manipulate-gpu-ассемблер/43304961 # 43304961 –

2

См: CUDA Programming Guide Version 3.0

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

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

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

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

0

AMD графическое ядро ​​Следующий (GCN)

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

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

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

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

SPIR-V

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

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

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