Чем отличаются драйверы графического процессора от других драйверов устройств, что позволяет оптимизировать производительность?

12

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

Имея это в виду, почему мы никогда не слышали о настройке драйверов процессоров AMD или Intel для определенного приложения, версии Windows или чего-то еще?

Луис
источник
1
Относительно VTC: это не является двусмысленным. Существуют конкретные рассуждения относительно того, что настраивается и почему, с драйверами GPU (и CPU).
Бен Ричардс
1
Производители процессоров выпускают обновления. См., Например, downloadcenter.intel.com/… (нажмите на прошивку в крайнем правом углу)
derobert
@derobert - Интересно, что Intel не собирается повторять фиаско Pentium. Однако эти обновления предназначены для микрокода процессора и не являются «драйверами процессора». Микрокод выполняется на более низком уровне, чем машинный код ядра и файлы .exe .
опилки
@sawdust Микрокод ЦП (по крайней мере частично) отвечает за преобразование инструкций x86, которые ЦП получает, в фактические операции, которые он выполняет. Так что на самом деле это немного похоже на графические драйверы. Конечно, Intel заботится намного больше о правильности , чем NVIDIA делает, поэтому их обновления, вероятно , в основном исправления ошибок.
Дероберт

Ответы:

13

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

Графический процессор - очень сложная часть схемы. Он существует для разгрузки определенных задач, которые занимают очень много времени на процессоре. Они получают наборы данных и инструкции о том, что делать с этими данными. Графический процессор должен иметь возможность упорядочивать данные в удобной для пользователя форме и интерпретировать инструкции, чтобы указывать, что делать. Затем он должен выполнить ряд математических операций с данными. После этого он должен заново упорядочить данные и отправить результаты обратно в операционную систему после завершения. Это очень упрощенное описание конвейера компьютерной графики . Есть несколько шагов, которые необходимо выполнить, прежде чем данные будут готовы для программы.

Теперь, поскольку графический процессор должен принимать наборы инструкций и реализовывать очень сложные математические операции в оборудовании, будут определенные вещи, которые, как известно, будут выполняться быстрее или медленнее по этому конвейеру. Частью написания драйвера для устройства является интерпретация данных и инструкций, отправляемых на устройство, перевод их так, чтобы устройство могло их понять. Когда драйвер делает это, он может принять решение о том, как отправить данные на устройство, чтобы задачи выполнялись в кратчайшие сроки. Тем не менее, драйвер, как правило, не очень много информации о том, что программа, которую он обслуживает, делает. Все, что он получает от программы, это вызовы API («нарисовать линию», «закрасить точку», «заштриховать треугольник» и т. Д.). Таким образом, предположения, которые он может сделать, не очень хороши.

Когда AMD или nVidia выпускают обновление драйвера, которое содержит улучшения производительности для определенных игр, это означает, что драйвер будет определять, что игра называет графическим оборудованием, и будет иметь ряд жестко закодированных предположений, которые известны о том, как игра реализованы. Возможно, в игре много текстурных изображений, которые нужно быстро поменять местами в памяти или из памяти, или что она смешивает много цветов на лету для получения определенных световых эффектов. Обычно игра будет реализовывать небольшие программы (так называемые «шейдеры»), которые описывают, как выполнять эти вычисления, и они будут отправлены в GPU для выполнения. Если водитель знает, как игра использует аппаратное обеспечение, он может организовать данные и выбрать наборы инструкций, которые выполняют требуемую задачу таким образом, чтобы повысить пропускную способность и эффективность.

Однако иногда после отгрузки продукта могут быть обнаружены ошибки в некоторой части графического процессора. Это может быть достаточно неясным, чтобы быть пропущенным при проверке, когда проектировался чип, но может оказаться, что это вызывает некоторое ошибочное или нежелательное поведение (или даже сбой) в конкретной игре, которая поражает его. В этом случае драйвер обнаружит это ошибочное состояние и обойдет его, либо выгрузив некоторые вычисления на сторону ЦП, либо изменив способ подачи данных в графический процессор, чтобы он не входил в это состояние. Они, опять же, будут выпущены в виде обновлений драйверов.

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

Бен Ричардс
источник
О том, как инженеры-водители понимают, как реализована игра, это заставляет задуматься, являются ли эти заставки Nvidia в некоторых играх чем-то большим, чем просто реклама.
Луи
2
@Louis Они не просто реклама. Это потому, что NVidia поддерживает особые отношения с некоторыми игровыми студиями и предлагает разработчикам помощь в оптимизации кода игры для графического оборудования NVidia. AMD тоже делает это (иногда вы можете увидеть логотип AMD в игре), но NVidia исторически имела гораздо большее присутствие.
Бен Ричардс
Читая это снова, я вижу, что это отличный ответ, и где стоит флажок. Хотелось бы, чтобы все ответы были такими учительными в своих объяснениях.
Луи
Вы бы интегрировали это ( больше чисел ) в качестве примера для другой награды?
Луи
10

«Драйверы ЦП» существуют редко и, конечно, не в качестве загружаемых модулей. Случайный «драйвер ЦП» был бы необходим для некоторого варианта многоядерного управления или обработки прерываний (например, для двухъядерных процессоров AMD требовался драйвер WinXP для полного использования). В противном случае большинство операционных систем сконфигурированы и созданы для прямого доступа к процессору. Если проблема возникает и является серьезной, то исправляется код ядра и выпускается обновление ядра.

GPU больше не просто периферия; они превратились в сопроцессоров. «Драйвер графического процессора» не только обеспечивает доступ к устройству, он включает алгоритмы обработки (т. Е. Графические подпрограммы) для графического процессора, упакованного в драйвере. Размер этих «драйверов» - это раздача / подсказка. Именно эти алгоритмы / подпрограммы улучшаются.

опилки
источник
2
Это объясняет, почему загрузка драйверов для моей карты превышает 200 МБ.
Луи
Я действительно сомневаюсь, что в этих драйверах есть код на 200 МБ . Я был бы удивлен, если бы это было больше, чем горстка MB относительно всех этих алгоритмов. >.>
user541686
1
@ Mehrdad из любопытства Я открыл установщик EXE с 7-zip для драйвера Nivida. папка Display.Driver имеет размер 147 МБ, есть один exe-файл, который составляет 31 МБ, каждый второй файл размером более 660 КБ является DLL.
Скотт Чемберлен
@ Скотт: Этот exe почти наверняка является архивом большего количества файлов, содержащих фактический код. Я ожидаю, что реальные файлы будут не более нескольких мегабайт ... по модулю любых ресурсов, которые они могут содержать, которые не являются кодом.
user541686 12.12.12
0

Это не только драйверы, но и сам графический процессор. GPU специализируется на различных типах вычислений (например, FFT) и манипулировании памятью. Он может работать параллельно для большинства поставленных задач и сделать его более эффективным, чем процессор общего назначения.

Обладая лучшими знаниями о запущенных программах, вы можете оптимизировать управление памятью или процессы вычислений для этих программ. Графический процессор очень универсален в том, как выполнять вычисления и манипулировать памятью, поэтому необходимо написать идеальную прошивку или драйвер. ;) Существует много возможностей для улучшений.

Большинство других устройств не так универсально в использовании. Большая часть оборудования на ПК должна работать в соответствии со своими спецификациями, следовать протоколам, поэтому драйвер не нуждается в оптимизации.

А, забыл про процессор. > _ <Процессор можно оптимизировать. Большинство новых моделей процессоров имеют программируемое встроенное ПО, но повышение производительности не стоит усилий. Он используется только для исправления ошибок в процессе сборки оборудования.

user178979
источник
«Большинство новых моделей процессоров имеют программируемую прошивку, - поясните пожалуйста.
Тим