Guest User

GCN vs RDNA

a guest
Aug 19th, 2020
552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.04 KB | None | 0 0
  1. GCN vs RDNA
  2.  
  3. Значительную часть современной видеокарты занимает куча потоковых процессоров (CUDA-ядра у Nvidia), выполняющих арифметические операции с числами. На картах AMD с архитектурой GCN потоковые процессоры (далее ALU) объединяются по 64 штуки в вычислительные блоки (далее CU). В каждом CU есть планировщик, который загружает ALU работой, а также кеш-память для хранения данных.
  4.  
  5. Во множестве вычислительных задач требуется производить одну и ту же операцию над массивом чисел, поэтому одна инструкция загружает сразу несколько ALU, а данные идут на обработку потоками. В GCN одна инструкция работает с 64 потоками и называется волной (wave64). В случае, если многопоточность не требуется, в CU есть скалярный блок.
  6.  
  7. Итак, у нас есть wave64 и CU с 64 ALU. Логично сразу загрузить CU одной волной и получить результат через один такт. Но GCN работает иначе. В каждом CU 64 ALU разделены на четыре группы по 16 ALU, которые называются SIMD16. Каждый SIMD16 выполняет одну wave64 за четыре такта, поэтому один CU выполняет четыре wave64 за четыре такта, в среднем одну волну за такт. Планировщик в CU только один, поэтому он загружает работой четыре SIMD16 по очереди.
  8.  
  9. Этот подход оказался малоудачным для игр. Во-первых, для полной загрузки CU обязательно нужно четыре wave64, а в играх это далеко не всегда так. Во-вторых, не каждой инструкции нужно загружать сразу 64 ALU. Но даже при 32 или 48 потоках мы всё равно загружаем один SIMD16 на четыре такта, поэтому новым потокам придётся подождать. В-третьих, простаивающий CU целиком загружается за 4 такта, ведь четвёртый SIMD16 начнёт работу с опозданием в три такта. Отсюда высокие задержки и трудности в равномерной загрузке всех ALU, а в итоге плохая производительность при высоком тепловыделении.
  10.  
  11. Значит ли это, что GCN - плохая архитектура и ей пора на покой? Нет. Выполнение wave64 за 4 такта было выбрано для того, чтобы CU успел получить новые данные из внешней памяти. Иначе придётся раздувать кеш, а на это нужно много транзисторов. Кроме того, в каждом CU с четырьмя wave64 работает всего лишь один планировщик, а это тоже экономия. GCN позволяет уместить максимум ALU при имеющемся транзисторном бюджете и получить очень высокую производительность в вычислениях. Например, в RX 560 3 млрд транзисторов и 1024 ALU, а в GTX 1050 Ti 3,3 млрд транзисторов и всего лишь 768 CUDA-ядер. За это видеокарты AMD очень полюбили майнеры.
  12.  
  13. Для своего времени GCN была гибкой и удачной архитектурой. Если Nvidia оптимизировала архитектуры отдельно для игр и отдельно для вычислений, то AMD обошлась одной универсальной архитектурой и успешно конкурировала на двух фронтах. Однако с Maxwell и Pascal в играх GCN конкурировать уже не смог, его превосходство в вычислениях мало использовалось. Поэтому AMD решила создать отдельную архитектуру RDNA для игр, а параллельно развивать GCN для вычислений.
  14.  
  15. https://3dnews.ru/assets/external/illustrations/2019/07/07/990341/gcn_vs_rdna_cu.png
  16. https://3dnews.ru/assets/external/illustrations/2019/07/07/990341/wave32_vs_wave64.png
  17. https://3dnews.ru/assets/external/illustrations/2019/07/07/990341/caches_1.png
  18.  
  19. В RDNA CU из 64 ALU делится на два SIMD32, по 32 ALU в каждом, причём у каждого SIMD32 есть свой планировщик, скалярных блоков тоже стало два. В дополнение к wave64 появились вдвое более короткие wave32. Теперь каждый SIMD32 выполняет wave32 за один такт или wave64 за два такта. Как следствие, задержки снизились до четырёх раз, а CU можно сразу целиком загрузить и получить результат вычислений уже через один такт. Производительность на такт возрастает до четырёх раз, ALU загружаются более равномерно, а при той же производительности в играх снижается энергопотребление.
  20.  
  21. Благодаря двум типам волн RDNA не только эффективно выполняет старый код для GCN, но и хорошо работает с играми под GeForce, поскольку Nvidia тоже использует wave32. Однако из-за уменьшения задержек пришлось значительно увеличить регистры и кеш, иначе очень быстро выполнив вычисления ALU будут простаивать в ожидании новых данных. Кроме того, транзисторы потребовались для вдвое большего числа планировщиков. Поэтому у видеокарт RDNA значительно меньше ALU по сравнению с GCN. Например, у чипа RX 5500 XT 6,4 млрд транзисторов и 1408 ALU, а у RX 580 5,7 млрд транзисторов и 2304 ALU (для сравнения, у GTX 1660 6,6 млрд транзисторов при 1408 CUDA-ярдах, что очень близко к RX 5500 XT). Даже при росте частот вычислительная мощность снизилась, поэтому майнеры продолжают скупать старые Полярисы. Зато в играх RX 580 уступает RX 5500 XT несмотря на огромную разницу в 896 ALU. Конечно, свою роль сыграл и новый техпроцесс, но даже на старых 14 нм мы бы получили ощутимый прирост производительности в играх при том же энергопотреблении.
  22.  
  23. В целом, RDNA стала ближе к архитектуре Nvidia, а Turing сделал шаг в сторону AMD. Обе фирмы идут к золотой середине, упростив жизнь программистам и игрокам.
Add Comment
Please, Sign In to add comment