Вторая группа изменений коснулась оптимизации графического процессора для работы на больших и очень больших тактовых частотах. Например, архитектура подсистемы памяти была полностью переделана для поддержки казавшейся невероятно быстрой видеопамяти - 1500 МГц GDDR3[И ведь это еще не предел - ходят вполне правдоподобные слухи, что R520 поддерживает не вышедшую пока в свет графическую оперативную память следующего поколения, GDDR4]. Вместо традиционной схемы с множеством текстурных модулей (TMU), централизованно подключавшихся к единому контроллеру оперативной памяти, который, в свою очередь, по широким шинам запрашивал данные из памяти и возвращал ответ по тем же каналам связи, по которым пришел запрос, ATI изобрела принципиально новую, кольцевую внутреннюю шину видеопамяти, «размазывающую» контроллер памяти едва ли не по всему графическому процессору. Идея в том, что вместо одного большого и сложного контроллера мы делаем до восьми маленьких контроллеров, каждый из которых контролирует только свой относительно небольшой кусочек видеопамяти. Причем он расположен в кристалле так, чтобы сравнительно узкую (32-разрядную) шину видеопамяти от него было удобнее разводить на печатной плате и тем самым сводить к минимуму помехи, обычно возникающие из-за несовершенства разводки. Вдобавок, небольшим контроллерам требуются небольшие же кэши данных, что позволяет отказаться от традиционных упрощенных и имеющих ряд недостатков кэшей прямого отображения и наборно-ассоциативных кэшей в пользу более сложных, но лишенных этого недостатка полностью ассоциативных кэшей.
Маленькие контроллеры (точнее, интерфейсы для подключения модулей памяти) объединяются очень быстрой внутренней двунаправленной кольцевой шиной (шириной 256 линий в каждом направлении для моделей с 256-разрядной основной шиной памяти и 128 линий - для более дешевых). На кольце имеется четыре «остановки» - точки подключения к внешних устройств. Например, для топовых R520 к каждой такой «остановке» подключено по два модуля памяти (шина памяти 2x32 разряда) и какая-то часть внутренних устройств процессора, расположенных поблизости. Каких? А неважно: какие было удобно подключить именно в этом месте, такие и подключили. Кроме того, по специальным простым управляющим шинам (по которым передаются только инструкции) каждая такая «остановка» подключена к «диспетчеру» - тому самому централизованному контроллеру памяти, который не занимается доставкой данных к исполнительным устройствам, а только «отдает распоряжения» и «присматривает» за тем, чтобы нужные данные прочитал нужный маленький контроллер и отправил их по кольцу до нужной «остановки», где их сможет снять само исполнительное устройство.
В результате мы не просто добиваемся более эффективного подключения внешних модулей памяти к кристаллу - мы устраняем хорошо знакомую системным администратором проблему «звездной» топологии, когда к центральному элементу системы - контроллеру памяти (а у сетевиков - к свитчу) сходится во-о-от такой пучок проводов, работать с которым очень неудобно. Теперь у нас есть одна простая и быстрая кольцевая шина, и устройства подключены к ней «распределенно», по маленьким, коротким и простым в разводке проводникам. А где простота - там и высокие тактовые частоты. Красиво, правда? А если добавить, что упростившийся контроллер памяти в R520 стал программируемым и его можно на лету программировать так, чтобы он обеспечивал наиболее эффективное распределение данных в видеопамяти для конкретной игрушки… В общем, перед нами еще одно изящное решение из разряда «одним махом семерых побивахом».
Третья группа усовершенствований в R520 - это «доводка» ранее существовавших элементов. Например, этот графический процессор хранит в своих кэшах сжатые данные, сжимая и разжимая их на лету. Обычно подобный подход применяется только для хранения данных в видеопамяти (поскольку позволяет записать намного больший объем информации), а в R520 разработчики ухитрились применить тот же принцип и для самих кэшей, что почти равнозначно увеличению их объема. До восьми штук доведено число вершинных процессоров. Значительно улучшены вычислительные устройства блока пиксельных шейдеров - в них вдвое увеличено число собственно «вычислялок», поэтому за один такт это устройство способно выполнять до пяти разных операций над пикселом (две векторные над 3-векторами, две скалярные и одну операцию условного перехода). Таким образом, ATI почти догнала по этому показателю nVidia, которая использует в одном пиксельном процессоре G70 один векторный (но умеющий выполнять две разные операции одновременно) и один скалярный ALU. Правда, у nVidia векторные ALU работают с векторами длины 4, а у ATI - только с 3-векторами, и если приходится вычислять четвертую компоненту, то приходится задействовать и скалярное ALU, однако в целом заметной разницы в играх между подходами обеих компаний быть не должно.