РЕКЛАМА
ИНФОРМАЦИЯ
ПОЛЕЗНЫЕ ССЫЛКИ
Futuremark Vantage: новый бесполезный тест

AMD Radeon HD 3870 и 3850: ответный удар

Rambler's Top100 Рейтинг@Mail.ru

ВИДЕОКАРТЫ

nVidia GeForce GTX 260 и 280: новое поколение видеокарт
Краткое содержание статьи: Мы так долго ждали этого события, и оно произошло: nVidia выпустила видеокарты на основе обновлённой архитектуры G8x под названием GTX 280 и GTX 260. Новинки оказались действительно весьма мощными, хотя ряд недостатков мы тоже обнаружили. Предлагаем ознакомиться с подробным обзором видеокарт и тестами.

nVidia GeForce GTX 260 и 280: новое поколение видеокарт


Редакция THG,  17 июня 2008
Назад
Вы читаете страницу 3 из 11
1 2 3 4 5 6 7 8 9 10 11
Далее


Архитектура в деталях

Архитектура SIMT?

Вы наверняка знакомы с терминами SIMD (одна инструкция, много данных) и MIMD (много инструкций, много данных), но в GT200 nVidia описывает мультипроцессоры шейдеров как "блоки SIMT". Чем же они являются на самом деле? Сокращение расшифровывается как Single Instruction Multiple Threads (одна инструкция, много потоков), и основное отличие от режима SIMD заключается в том, что обрабатываемые векторы не имеют чётко заданной ширины. При достаточном числе потоков процессор работает как скалярный. Чтобы разобраться, давайте вспомним, как блоки пиксельных шейдеров работали в предыдущих архитектурах.

Растеризатор генерирует квады - квадраты пикселей 2x2, где каждый пиксель задаётся вектором с четырьмя значениями с плавающей запятой одинарной точности (R, G, B, A) или (X, Y, Z, W) - наиболее часто используемый формат в 3D-вычислениях. Квады затем поступают в потоковые процессоры (ALU), которые работают в 16-канальном режиме SIMD, то есть одинаковая инструкция применяется ко всем 16 числам с плавающей запятой. Конечно, мы несколько всё упростили, но принцип понят можно; на самом деле у GeForce 6 и 7 есть режим co-issue для выполнения двух инструкций на вектор.

После G80 данный режим работы был изменён - растеризатор по-прежнему генерировал квады, которые записывались в буфер. Когда 8 квадов (32 пикселей, "warp" по терминологии CUDA) накапливались в буфере, они могли выполниться мультипроцессором в режиме SIMD. В чём разница? В том, как теперь организуются данные: вместо работы над четырьмя векторами по четыре операции с плавающей запятой, которые могут выглядеть, например, (R, G, B, A, R, G, B, A, R, G, B, A, R, G, B, A), мультипроцессор работает над векторами с 32 числами с плавающей запятой, каждое из которых представляет одинаковый компонент из 32 потоков: например, (R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R), затем (G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G) и т.д.

В программировании SIMD первое выравнивание данных называется AoS (Array Of Structures), а второе - SoA (Structure of Arrays). Вторая организация даёт более высокую производительность. Если будет достаточно данных для заполнения вектора, процессор, с точки зрения программиста, выглядит как скалярный блок, так как SIMD-блоки всегда используются на 100% независимо от ширины обрабатываемых данных. Следовательно, AoS достигает пиковой производительности, только в том случае, когда одинаковая инструкция накладывается на все четыре компонента каждого вектора.

Массив масштабируемых процессоров

nVidia GeForce GTX 260, 280

Нажмите на картинку для увеличения.

В архитектуре не произошло серьёзных изменений, она по-прежнему построена на так называемом nVidia массиве масштабируемых процессоров Scalable Processor Array (или Streaming Processor Array - "массив потоковых процессоров", в зависимости от того, кого вы будете спрашивать). G80 SPA организован следующим образом.

nVidia GeForce GTX 260, 280

Нажмите на картинку для увеличения.

Каждый из восьми TPC (Texture Processor Clusters, кластеры текстурных процессоров) оснащён текстурным блоком и двумя потоковыми мультипроцессорами Streaming Multiprocessors (SM). У GT200 nVidia увеличила число блоков TPC до 10, каждый по-прежнему оснащён текстурным блоком, но уже тремя мультипроцессорами.

nVidia GeForce GTX 260, 280

Нажмите на картинку для увеличения.

Это изменение свидетельствует об изменении ориентации современных шейдеров, акцент которых ставится на арифметические инструкции. Текстурные блоки каждого кластера TPC используют такую же модель, как у G84 и G92 - адресная мощность такая же, как и мощность фильтрации, в отличие от G80, где мощность фильтрации в два раза превышала адресную. Так, в простом режиме фильтрации текстур RGBA8, текстурные блоки G84/G92/GT200 в два раза производительнее G80. С более продвинутыми режимами фильтрации или текстурами RGBA16, изменение не влияет на результат.

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

Массив масштабируемых процессоров

Переход с 64 на 80 текстурных блоков, с учётом разницы в частоте GPU, должен дать GTX 280 преимущество всего 11% над 9800 GTX. Но мы замерили 43% при использовании четырёх текстур и 118% при использовании двух! Улучшение в системе диспетчеризации вряд ли сможет объяснить разницу. Однако увеличение числа ROP (удвоение) тоже сыграло свою роль. В любом случае, вполне очевидно, что GTX 280 намного ближе к значениям теоретической скорости заполнения с одной или двумя текстурами (97%), чем 9800 GTX (между 80 и 91%), означая, что улучшения nVidia оправдали себя на практике. Как мы уже объясняли выше, плата AMD с двумя GPU, которая ещё и работает на более высоких тактовых частотах по сравнению с nVidia, всего на 32% уступает GTX 280 с четырьмя текстурами.

Теперь давайте посмотрим на результаты теста текстурирования RightMark3D 2.0 PS 4.0.

Массив масштабируемых процессоров

Результат первого теста шейдеров (Fur, мех) удивляет: 14% прирост, что немного, учитывая оптимизацию смешения, геометрических шейдеров и скорости заполнения, хотя всё зависит от реализации шейдеров. С другой стороны, 59% прирост в тесте Steep Parallax Mapping более впечатляет, на уровне с нашими ожиданиями.

Переработанные потоковые мультипроцессоры

Кроме увеличения числа, каждый мультипроцессор прошёл через несколько оптимизаций. Первая заключается в увеличении числа активных потоков на мультипроцессор - с 768 до 1 024 (с 24 32-поточных "варпов" до 32). Большее число потоков особенно полезно для компенсации задержек текстурных операций. В масштабах GPU мы получаем увеличение числа активных потоков с 12 288 до 30 720.

Число регистров на мультипроцессор удвоилось - с 8 192 до 16 384. С сопутствующим повышением числа потоков, число регистров, которые одновременно может использовать поток, увеличилось с 10 до 16. На G8x/G9x наш тестовый алгоритм использовал 67% вычислительных блоков; на GT200 это число должно быть 100%. Учитывая два текстурных блока, производительность должна быть существенно выше, чем у G80, которую мы тоже взяли для теста. К сожалению, CUDA 2.0 требует драйвер, который всё ещё находится в состоянии бета-версии, он не распознаёт GeForce 200 GTX. Когда в основной ветке драйверов появится поддержка, мы повторим тест.

nVidia GeForce GTX 260, 280

Нажмите на картинку для увеличения.

Это не единственное улучшение, которое nVidia сделала со своими мультипроцессорами: компания заявила об оптимизации режима dual-issue. Как вы помните со времён G80, мультипроцессоры предположительно позволяют выполнять две инструкции за такт: одну MAD и одну MUL с плавающей запятой. Мы упомянули "предположительно", поскольку в то время мы не смогли проверить это поведение в наших синтетических тестах - мы не знаем, с чем было связано это ограничение, с аппаратной поддержкой или с драйверами. Несколько месяцев спустя, после нескольких версий драйверов, мы знаем, что MUL не всегда легко отделить на G80, так что проблема, скорее всего, аппаратная.

Но как работает режим dual-issue? Во времена G80 nVidia не дала детали, но затем, изучая патент, мы узнали чуть больше о способе выполнения инструкций на мультипроцессорах. Начнём с того, что патент чётко выделяет, что мультипроцессоры могут запускать выполнение только одной инструкции на каждый такт GPU. Так где же знаменитый режим dual-issue? Фактически, он сводится к специализации "железа": одна инструкция использует два такта GPU (четыре такта потокового процессора/ALU), её можно применить к "варпу" (выполнение 32 потоков на 8-канальных блоках SIMD), но начало конвейера мультипроцессора может запускать выполнение только одной инструкции каждый такт, если они относятся к разным типам: MAD в одном случае, SFU в другом.

Кроме трансцендентных операций и интерполяции значений каждой вершины, SFU способны выполнять умножение с плавающей запятой. Чередуя выполнение инструкции MAD и MUL, можно получить "перехлёст" времени выполнения инструкций. Таким образом, каждый такт GPU даёт результат MAD или MUL в "варпе" - то есть 32 скалярных значения. По описанию nVidia можно ожидать, что вы получите MAD и MUL каждые два такта GPU. На самом деле, результат такой же, но с аппаратной точки зрения начало конвейера существенно упрощается, он поддерживает подачу инструкций на выполнение по одной каждый такт.

nVidia GeForce GTX 260, 280

Нажмите на картинку для увеличения.

То, что ограничивало подобную функцию на G8x/G9x, было исправлено на GT200? nVidia, к сожалению, не уточняет. Представители компании просто говорят о том, что они доработали такие блоки, как выделение регистров, планирование и запуск инструкций на выполнение. Но мы сделали предположение, близкое к реальности. Теперь давайте посмотрим, насколько изменения nVidia повлияли на практику - на синтетический тест GPUBench.

Переработанные потоковые мультипроцессоры

В целях сравнения мы добавили результаты 9800 GTX. На этот раз всё понятно: вы можете видеть более высокую скорость выполнения инструкций MUL по сравнению с инструкциями MAD. Но мы по-прежнему далеки от удвоения значений, примерно 32% по сравнению с MAD. Но и то хорошо. Следует отметить, что результаты для инструкций DP3 или DP4 не следует принимать во внимание, поскольку числа не были постоянными. То же самое касается инструкций POW, что, вероятно, связано с проблемой драйверов.

Последнее изменение, сделанное с потоковыми мультипроцессорами, касается поддержки двойной точности (64-битное число с плавающей запятой вместо 32-битного). Честно говоря, дополнительная точность редко используется в графических алгоритмах. Но, как мы знаем, GPGPU (использование GPU для расчётов) становится для nVidia всё более важным, и в некоторых научных приложениях двойная точность необходима.

nVidia - не первая компания, которая это заметила. Не так давно IBM модернизировала процессоры Cell, чтобы повысить производительность SPU на этом типе данных. По производительности, конечно, реализация GT200 оставляет желать лучшего - вычисления с плавающей запятой двойной точности реализованы на отдельном блоке потокового мультипроцессора. Блок позволяет выполнять одно вычисление MAD двойной точности за такт, что даёт пиковую производительность 1,296 x 10 (TPC) x 3 (SM) x 2 (Multiply+Add) = 77,78 Gflops, или где-то между 1/8 и 1/12 от производительности с одинарной точностью. AMD добавила такую же поддержку, используя одинаковые вычислительные блоки за несколько тактов, что дало ощутимо лучший результат - всего в два-четыре раза медленнее, чем расчёты с одинарной точностью.

ROP

Как мы уже говорили, число блоков растровых операций (ROP) увеличилось, но каких-либо новых функций мы не получили. Впрочем, стоит признать ROP у G8x уже довольно полные, с поддержкой 16- и 32-битных кадровых буферов с плавающей запятой со смешением и сглаживанием; сглаживание до 8x или 16x в режиме CSAA; Z-рендеринг в восемь раз быстрее и т.д. Вряд ли нужно что-то добавлять. Поэтому nVidia занялась оптимизацией производительности. Для смешения в кадровых буферах RGBA8 мы получили на G8x/G9x производительность, уменьшенную в два раза, с 12 пикселями на такт. У GT200 это ограничение было снято, а добавление 512-битной шины, с пропускной способностью больше 140 Гбайт/с, новые ROP могут сделать карты GeForce непобедимыми по пропускной способности. Ниже приведены результаты для пиксельного Z-заполнения.

ROP

По чистой производительности результаты не разочаровывают, мы поставили новый рекорд: 75 537 мегапикселей в секунду! Впрочем, значение всё же можно признать разочарованием в том отношении, что мы получили четырёхкратный, а не восьмикратный прирост базовой скорости заполнения. Для 9800 GTX мы получили 5,2 увеличение - чуть лучше, но, опять же, ниже теоретического значения.
Назад
Вы читаете страницу 3 из 11
1 2 3 4 5 6 7 8 9 10 11
Далее


СОДЕРЖАНИЕ

Отзывы о nVidia GeForce GTX 260, GTX 280 в Клубе экспертов THG [ 805 отзывов] Отзывы о nVidia GeForce GTX 260, GTX 280 в Клубе экспертов THG [ 805 отзывов]


РЕКЛАМА
РЕКОМЕНДУЕМ ПРОЧЕСТЬ!

История мейнфреймов: от Harvard Mark I до System z10 EC
Верите вы или нет, но были времена, когда компьютеры занимали целые комнаты. Сегодня вы работаете за небольшим персональным компьютером, но когда-то о таком можно было только мечтать. Предлагаем окунуться в историю и познакомиться с самыми знаковыми мейнфреймами за последние десятилетия.

Пятнадцать процессоров Intel x86, вошедших в историю
Компания Intel выпустила за годы существования немало процессоров x86, начиная с эпохи расцвета ПК, но не все из них оставили незабываемый след в истории. В нашей первой статье цикла мы рассмотрим пятнадцать наиболее любопытных и памятных процессоров Intel, от 8086 до Core 2 Duo.

ССЫЛКИ