![]()
Позже, несомненно, появятся новые референсные конфигурации и новые карты от ATI. А пока отметим некую задержку, практически до декабря, с доступностью продуктов на базе RV530 (чип разрабатывался несколько позже R520 и несет в себе некоторые черты будущего R580, отсюда, видимо, и сдвиг с массовым производством), и задержку с доступностью самого старшего продукта линейки — X1800 XT — явление скажем так досадное, и намекающее на то, что на данный момент целый месяц этот самый быстрый ускоритель будет скорее пресс-картой (ведь обозреватели свои карты получили к анонсу) и призван конкурировать с G70 в обзорах, а не на полках магазинов. Возможно, опять-таки, виной тому выход годных чипов, или иные соображения, но ранее 5 ноября мы в магазинах эту карту не увидим. Учитывая высокий конкурентный потенциал RV530 и шансы 1800XT более-менее заметно обойти GeForce 7800 GTX, можно только посетовать на эти задержки — было бы лучше, если бы все продукты новой линейки, давно ожидаемой поклонниками ATI, появились в продаже уже сейчас. Архитектура R520В этот раз мы не будем приводить собственную схему, а возьмем схему из материалов ATI — так как она в этот раз отличается похвальной детализацией и отображает все необходимые нам моменты. Давайте посмотрим внимательно: ![]() Архитектура вершинных процессоровВ наличии 8 одинаковых вершинных процессоров (на схеме они скрыты в блоке Vertex Shader Processors), соответствующих SM3 требованиям и построенных по стандартной для ATI схеме 3+1 (ALU каждого вершинного процессора может исполнять две разные операции одновременно, над тремя компонентами вектора и четвертой компонентой или скаляром). Фактически, вершинные процессоры стали очень похожими на то, что мы видели в NV4X и G70 но без возможности выборки значений из текстур. За единственным исключением — там была схема 4+1 (за такт обрабатывался четырехкомпонентный вектор и скаляр), а тут 3+1. Потенциально схема, примененная в G70, чуть более производительна, но реальная разница может быть практически не заметна, тем более в наше время, когда вершинные процессоры редко бывают узким местом во время рендеринга. Позже мы внимательно исследуем (в том числе практически) вопрос реализации и эффективности доступа к текстурам из вершинных процессоров ATI. Архитектура пиксельной частиА вот тут и кроется все самое интересное. Посмотрите на схему выше — в отличие от NVIDIA, текстурные модули вынесены за общий конвейер, и архитектуру чипа можно назвать распределенной. Здесь нет общего длинного конвейера, по которому крутятся колесом квады, как в случае NVIDIA, совершенно отдельно существует текстурная часть — блоки генерации текстурных координат и доступа к текстурам и сами TMU, а отдельно — пиксельные процессоры, выполняющие арифметические и другие операции и наборы регистров сданными. Такая схема имеет свои плюсы и минусы. Основной минус — она хорошо годится для механизма фаз, когда сперва идет интенсивная выборка текстур, а потом вычисления над ними (шейдеры 1.X и старые программы со стадиями), но чревата неоправданными задержками при зависимых выборках текстур, которые достаточно часто встречаются в современных шейдерах 2.X и 3.0. Представьте себе сами — одна команда доступа к текстуре реально вызывает длительную операцию, занимающую много тактов, и все это время вычислительный шейдерный процессор должен ждать? Не тут-то было — ATI достаточно элегантно решает этот вопрос! Причем решение универсально, оно не только эффективно исполняет зависимые выборки, но и повышает по сравнению с подходом NVIDIA КПД работы пиксельной части на шейдерах с условиями и переходами. ATI называет эту технологию гипертредингом. Итак, как это все работает? Магический ящик под названием Ultra Threading Dispatch Processor дирижирует исполнением — одновременно в обработке находится 512 квадов, каждый из которых может быть на разных стадиях исполнения шейдера. Вместе с каждым квадом хранится его текущее состояние, текущая команда шейдера, значения ранее проверенных условий (информация о текущей ветке условного перехода). В чипах NVIDIA квады идут по кругу, один за другим, и максимум, что возможно — пропуск квадов, не подпадающих под текущую ветку условия. В R520 работа организована по иному — наш магический ящик постоянно проверяет наличие свободных ресурсов (будь то текстурные блоки или пиксельные) и направляет стоящие на очереди квады в освободившиеся устройства. Если квад не прошел проверку на условие и не должен обрабатываться той или иной частью шейдера, то он не будет болтаться по кругу, занимая место и время, вместе с другими квадами, которые нуждаются в обработке. Он просто пропустит те команды, которые ему не нужны и не будет занимать работой текстурный или пиксельный блок. Если квад ждет данных из текстурного блока — он пропустит вперед другие квады, которые пока загрузят пиксельные вычислительные блоки. Таким образом, единым подходом убивается сразу два зайца — скрывается латентность доступа к текстурам и эффективно используются вычислительные и текстурные ресурсы во время исполнения шейдеров с условиями и переходами. Эффективность обоих моментов напрямую зависит от числа квадов, которые может удержать в обработке наш магический ящик. И 512 выглядит вполне солидным набором (за такт мы можем получить текстуры для 4 квадов и обработать в пиксельных процессорах 4 квада, таким образом, до 8 квадов находятся в обработке каждый такт, а остальные ждут своей очереди или данных из текстурных блоков). Несомненно, этот блок достаточно сложный, и логика согласования и дирижирования этим набором квадов составляет значительную часть чипа, возможно, сравнимую с текстурными и пиксельными процессорами. Тем более, что наборы регистров с данными фактически относятся и к этому блоку — их должно быть очень много, чтобы эффективно хранить все промежуточные вычисления для 512 квадов, ожидающих своей очереди. Теперь подробнее о пиксельных процессорах и ALU.
Как мы уже видели, пиксельные процессоры сгруппированы по 4 — то есть фактически мы имеем не 16 отдельных процессоров, а 4 процессора квадов, обрабатывающих за один такт 4 пикселя. Каждый такой процессор квадов состоит из следующего набора блоков: ![]() и может выполнить за такт над четырьмя пикселями следующий набор операций:
Кроме того, не забываем, что кроме этих пяти операций, параллельно может происходить операция адресации текстуры, то есть запроса данных из TMU. Таким образом, в случае оптимального кода шейдера мы получаем пиковую производительность в 6 операций за такт, что (в принципе) сравнимо с G70, если учесть разницу в архитектурных подходах к исполнению ветвлений. Но, схема, примененная ATI, как мы уже отмечали, более эффективно справляется с переходами. В практических тестах мы проверим это предположение. Интересно, что ATI верна своему подходу 3+1 (могут быть исполнены две разные операции, одна над тремя компонентами вектора, вторая над скаляром, который является четвертой). В большинстве случаев подход NVIDIA (2+2 или 3+1 по выбору) можно считать более эффективным, однако на типичных графических задачах эта разница будет сказываться очень слабо. Еще один важный момент новой архитектуры — кэширование сжатых данных — как данные глубины и буфера кадра, так и текстурные данные хранятся в КЭШах чипа в сжатом виде и распаковываются и запаковываются на лету, по мере доступа к ним из соответствующих блоков. Таким образом, эффективность кэширования возрастает, можно считать, что объем КЭШей виртуально увеличился в несколько раз. Логично предположить, что такая архитектура, с разделенными текстурными и пиксельными блоками, может очень хорошо масштабироваться: ![]() Как мы видим, RV530 и RV515 построены по той же самой схеме. В RV515 остался только один квад — это упрощает многие аспекты, в том числе и для магического ящика дирижера. В RV530 ситуация сложнее — там три пиксельных процессора квада, но только один текстурный блок. То есть мы имеем 12 пиксельных процессоров и 4 TMU, пусть и используемых оптимальным путем, практически без простоев. Разумеется, в случае простых шейдеров без сложных вычислений, пиксельные процессоры будут простаивать, ожидая текстурные данные, но современные шейдеры, на которые и нацелен этот чип, зачастую производят заметный объем вычислений (5-8 команд) на один доступ к текстуре, и тогда такая схема будет оправданной. Судя по всему, число транзисторов, потраченное на текстурную часть чипа, больше, чем в случае пиксельных ALU, и потому такой дисбаланс оказался оправданным с точки зрения разработчиков из ATI. Фактически, отказ от 6-8 текстурных блоков и позволил сделать 12 (а не 8 или 4) пиксельных процессора при сохранении той же сложности чипа. Насколько это оправдано на практике — зависит от эффективности текстурных блоков ATI (на которую разработчики компании, видимо, очень полагаются), от эффективности работы диспетчера-дирижера и от соотношения различных команд в исполняемых шейдерах. Гадать сложно, и мы проверим этот аспект в практической секции, с помощью различных тестов. Пока же заинтригуем читателей постановкой вопроса — был ли такой ход ATI оправданным, и как это скажется на конкуренции с NVIDIA, особенно в свете скорого появления 12 конвейерного варианта G70 (G72). Об интерфейсах выводаНовые ускорители поддерживают HDCP формат на оба DVI интерфейса, а старшие модели на базе R520 способны выводить на DVI разъемы и HDMI (High Definition Media Interface, интерфейс для вывода изображения и звука на цифровые кинотеатры и другие аудио-видео воспроизводящие устройства нового поколения, подробнее о распространенных интерфейсах можно прочитать в нашем предварительном материале о R520). Выводы
|
| | Комментарии? Поправки? Дополнения? anvakams@ixbt.com
| ![]()
|