Advertisement
Guest User

Что такое раскрытие потенциала видеокарт AMD или почему драйвера ни при чём

a guest
Sep 14th, 2020
3,186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.39 KB | None | 0 0
  1. Что такое раскрытие потенциала видеокарт AMD или почему драйвера ни при чём
  2.  
  3. С переходом на новые API Dx12 и Vulcan игроки заметили, что видеокарты AMD, в том числе старый GCN на 28 нм, получили бонус в производительности. В то же время видеокарты Nvidia старше Паскалей, наоборот, просели или в лучшем случае ничего не выиграли. Отсюда возникли мифы о неком потенциале AMD, который постепенно раскрывается с новыми драйверами, и о том, что Nvidia искусственно занижает производительность старых видеокарт чтобы разводить игроков на покупку новых. В этой заметке мы детально разберёмся, что скрывается за полумифическим потенциалом AMD и действительно ли Nvidia портит свои продукты.
  4.  
  5. В далёком 2007 году вышли первые видеокарты ATI с архитектурой TeraScale. В ней инженеры заложили направление развития, которому AMD следовала вплоть до выхода RDNA в 2019 году, а именно: максимальная вычислительная мощность чипа при данном числе транзисторов.
  6.  
  7. Архитектура TeraScale использовала VLIW5-инструкции (very long instruction word), то есть в одной длинной инструкции было сразу пять команд для пяти потоковых процессоров. Поэтому процессоры группировались по 5 в блоки SPU, которые собирались по 16 в SIMD-ядра. Каждое SIMD-ядро выполняло волну64 за 4 такта (64/16=4). Распараллеливание инструкций было переложено на компилятор, за счёт чего удалось значительно упростить управляющую обвязку ядер и разместить максимальное их количество на чипе. Проблема в том, VLIW5-инструкции не удавалось стабильно забивать командами. В среднем было задействовано 3,4 процессора из 5, то есть 68%.
  8.  
  9. В GCN инженеры отказались от VLIW и стали использовать более гибкие аппаратные планировщики, которые на ходу распределяли инструкции по SIMD-ядрам. Компилятор значительно упростился и в некоторых случаях видеокарту даже удавалось целиком загрузить. Однако для экономии каждые четыре SIMD-ядра по очереди обслуживались лишь одним планировщиком (для сравнения в Паскалях при том же числе потоковых процессоров планировщиков было вдвое больше, а в Тьюрингах в четыре раза больше). В играх длинные волны64 (у Nvidia они вдвое короче) часто забивались не полностью и часть потоковых процессоров простаивала, а для их дозагрузки приходилось ждать несколько тактов пока освободится планировщик. Это вело к неполной загрузке и большим задержкам.
  10.  
  11. Получается, с 2007 года и до появления RDNA в 2019 году видеокарты AMD хронически недогружались в играх. Это и есть тот самый нераскрытый потенциал. Теперь посмотрим, каким образом он раскрылся.
  12.  
  13. В Dx11 существовала лишь одна очередь команд для видеокарты. При её выполнении неизбежно возникали ситуации, когда основную работу выполняли блоки наложения текстур, ROPы и т.д., а потоковые процессоры простаивали. В Dx12 и Vulcan появилось несколько очередей инструкций разных типов. Теперь графический процессор мог одновременно выполнять инструкции из разных очередей чтобы его отдельные блоки не простаивали зря. В народе это называется асинхронными вычислениями, хотя строго говоря они не очень-то и асинхронные.
  14.  
  15. Инженеры AMD понимали, что GCN непросто нагрузить целиком, и с самого начала предусмотрели несколько движков (Multi-Engine в терминах Dx12). Они могут на уровне железа одновременно обрабатывать несколько очередей инструкций и раскидывать команды разным CU чтобы они меньше простаивали. В Dx11 их возможности никогда не использовались целиком, но с приходом Dx12 и Vulcan видеокарты AMD стали более равномерно нагружаться. Кроме того, GCN позволяет безболезненно менять контекст. Если CU ждёт результатов вычислений другого CU, то он может сохранить промежуточные данные и переключиться на другую задачу, а затем вернуться к первой. Наконец, GCN может менять приоритет вычислительных и графических задач устраняя узкие места, а RDNA научился полностью останавливать одну задачу в пользу другой. Поэтому видеокарты AMD с новыми API стали показывать себя лучше, ведь поддержка новомодных особенностей у них изначально была на уровне железа.
  16.  
  17. Что касается Nvidia, то она ещё в Кеплере отказалась от мощных аппаратных движков, переложив их работу на драйвер. Благодаря этому чипы стали проще и энергоэффективнее, и в эпоху Dx11 это работало хорошо. Однако младшие Кеплеры поддерживали только одну очередь инструкций. Только старшие Кеплеры (GTX 780/780 Ti и TITAN) и Максвеллы получили поддержку нескольких вычислительных очередей, да и то под проприетарным API CUDA. Динамическое изменение приоритета вычислений и графики завезли только в Максвелле, но так, что лучше бы не завозили. Если в GCN при смене контекста промежуточные данные сохранялись в кеше, то у Максвелла в оперативной памяти с чудовищными задержками.
  18.  
  19. Более-менее вменяемую поддержу Multi-Engine реализовали начиная с Паскалей. И то в Паскале число вычислительных и графических очередей ограничили 32, в то время как уже в GCN 1 поколения времён царя Гороха их было 64, а в следующем поколении вообще без ограничений. Поэтому Nvidia отключила поддержку асинхронных вычислений в Кеплерах и Максвеллах, драйвер попросту сливал несколько очередей инструкций в одну. В Паскале Multi-Engine работают, но толку от этого меньше, чем у AMD, и только Тьюринг действительно хорошо себя показывает в новых API.
  20.  
  21. Итого, видеокарты AMD хронически недогружались в эпоху Dx11, но новые API с помощью продвинутых движков смогли улучшить использование ресурсов чипа. Это и есть «раскрытие потенциала». А вот старые видеокарты Nvidia, заточенные под Dx11, на уровне железа не позволяют извлечь выгоду из нескольких очередей инструкций, поэтому с переходом на новые API они в лучшем случае показывают ту же производительность, а нередко даже просаживаются. Это и есть «занижение драйверами».
  22.  
  23. Не разобравшись в подобных тонкостях многие игроки сочинили себе сказки о драйверах, которые в одном случае стали лучше, а в другом намеренно хуже. Эти самые драйвера стали способом объяснить что угодно, совсем как фактор X в вялотекущей шизофрении. Обходите вялотекущих адептов секты свидетелей драйверов стороной.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement