Обзор микроархитектур современных десктопных процессоров. Часть 3
Страница 8. Процессоры AMD Athlon 64 / Opteron


 

Процессоры AMD Athlon 64 / Opteron

Следующий процессор компании Athlon 64 / Opteron (K8), увидевший свет в 2003 г., мало отличается от своего предшественника K7 по микроархитектуре. При его создании основной упор был сделан на две ключевые технологии: 64-битный режим целочисленной и адресной арифметики AMD64 (x86-64), и интегрированный контроллер оперативной памяти, встроенный в процессорный чип. Создание расширенной архитектуры x86-64 позволило снять ограничения по адресации памяти, сдерживающие развитие десктопных процессоров, а реализация встроенного контроллера существенно снизила латентность доступа к оперативной памяти, тем самым, дав значительный прирост в производительности на многих задачах. В дальнейшем архитектура x86-64 стала стандартной и была реализована в процессорах Intel P-4E и P8. Внедрение встроенного контроллера памяти в процессорах компании Intel также предполагается в ближайшие годы.

Помимо этих ключевых технологий, в процессоре K8 имеется ряд менее значимых отличий от K7:

  • усовершенствован декодер машинных инструкций, большинство «сложных» инструкций, порождающих 2 МОПа, переведены в разряд «простых»;
  • добавлены режимы SSE2 и (чуть позднее) SSE3;
  • несколько улучшена подсистема предсказания переходов;
  • увеличена длина очередей планировщика, проведены некоторые модификации в подсистеме внеочередного исполнения и в функциональных устройствах;
  • расширена шина L2-кэша и уменьшено время доступа;
  • обеспечено комплексирование в многопроцессорные конфигурации через интерфейс HyperTransport без использования внешней логики (чипсета);
  • реализована двухъядерность с раздельными L2-кэшами и общим контроллером памяти (в процессоре K8 X2).

Кроме перечисленного, можно подчеркнуть ещё несколько отличительных черт процессоров K7/K8, способствующих повышению их производительности:

  • частичное предекодирование инструкций перед помещением в I-кэш;
  • возможность выполнения двух загрузок из L1-кэша за такт;
  • малая длина конвейера непредсказанного перехода благодаря разделению подсистем целочисленно-адресной арифметики (ALU/AGU) и арифметики с плавающей точкой (FPU);
  • наличие трёх симметричных устройств для выполнения целочисленных и адресных операций ALU/AGU.

Однако в архитектуре процессора K8 имеется и ряд недостатков, часть из которых обусловлена базовыми ограничениями микроархитектуры:

  • статическое разбиение потока МОПов на группы по 3 элемента с привязкой очередей и функциональных устройств ALU/AGU к позициям этих элементов;
  • слабая система предсказания переходов, использующая устаревшие алгоритмы;
  • недостаточно совершенная аппаратная предвыборка из памяти;
  • отсутствие механизмов переупорядочения обращений к памяти;
  • взаимно эксклюзивная организация кэшей, ограничивающая скорость выборки из L2-кэша и увеличивающая время доступа;
  • недостаточная ассоциативность L1-кэшей, снижающая их эффективность.

В целом процессор K8 составил хорошую конкуренцию процессорам P-4 и P-4E. Благодаря меньшей длине конвейеров и более эффективной реализации многих инструкций он оказался не столь требователен к оптимизации кодов и в ряде применений имеет более высокую производительность. Особенно это относится к игровым программам и некоторым десктопным приложениям. В настоящее время производится перевод процессоров K8 на использование оперативной памяти DDR2, обладающей повышенной пропускной способностью. Этот переход позволит несколько повысить производительность, особенно для двухъядерных вариантов (K8 X2). Дополнительным достоинством нынешних вариантов процессоров K8 является относительно невысокое энергопотребление и тепловыделение (в сравнении с процессорами P-4).

Однако K8 значительно уступает новому процессору P8 (Intel Core), особенно игровых и десктопных применениях. Это отставание наиболее сильно заметно на тестовом наборе SPECint2000, а также (в меньшей степени) на наборе SPECfp2000. Превосходство процессора P8 в производительности обусловлено в первую очередь динамической организацией его архитектуры, имеющей увеличенную ширину запуска и обработки инструкций, полночастотным выполнением упакованных 128-битных операций SSE, увеличенным размером L2-кэша, более совершенным предсказателем переходов и улучшенной подсистемой предвыборки данных. Поскольку процессор P8 построен на примерно тех же фундаментальных архитектурных принципах, что и K8, и имеет сопоставимую с ним длину конвейера, он не обладает «недостатками» процессора P-4 и поэтому страдает от недостаточной оптимизации кодов не в большей степени, чем K8. Кроме того, процессор P8 имеет пониженное энергопотребление и улучшенные механизмы управления питанием.

В связи с появлением столь серьёзного конкурента, компания AMD объявила о планах создания к середине 2007 г. нового процессора с улучшенной и расширенной микроархитектурой, известного под названием K8L (Рис. 12).



Рис. 12

В целом новый процессор повторяет идеологию своего предшественника, однако имеет множество усовершенствований и отличительных признаков. Наиболее важными из них являются:

  • реализация полночастотного 128-битного режима выполнения упакованных операций SSE (в двух каналах исполнения);
  • увеличение ширины и пропускной способности доступа к L1-кэшу — теперь в каждом такте могут выполняться две 128-битные загрузки за такт либо одна загрузка и одна выгрузка (в процессоре P8 — только одна такая загрузка и одна выгрузка);
  • увеличение длины выборки из кэша инструкций до 32 байтов;
  • усовершенствование механизма предсказания переходов, добавление предсказателя косвенных переходов;
  • появление механизма внеочередной выборки данных из памяти;
  • некоторое расширение системы команд.

Кроме того, изменилась структура и внешние интерфейсы процессора. Теперь базовый вариант содержит 4 процессорных ядра, имеющих раздельные L2-кэши по 512 Кбайт и общий кэш 3-го уровня размером 2 Мбайта (в последующих версиях процессора L3-кэш увеличится). Коммуникационные интерфейсы HyperTransport, используемые для ввода-вывода и для объединения в многопроцессорную систему с общей памятью, перешли на стандарт HT-3.0, обеспечивающий повышенную скорость обменов и улучшенную функциональность. Максимальная частота интерфейсов выросла до 2.6 ГГц, а пиковая скорость передачи данных - до 10.4 Гбайт/с (в каждом направлении). Число интерфейсов увеличилось с трёх до четырёх, что позволяет реализовывать полносвязные системы из 4 процессоров (сокетов) и повысить степень интеграции систем из 8 процессоров (сокетов).

В остальном микроархитектура процессора K8L повторяет архитектуру K8: сохранилась ширина выборки и обработки инструкций, равная трём, по-прежнему производится разбиение потока МОПов на группы по 3 элемента со статической привязкой очередей и устройств ALU/AGU к позициям этих элементов, не претерпела особых изменений система внеочередного исполнения операций (с разделением на подсистемы ALU/AGU и FPU). Также нет упоминаний о том, увеличилась ли ассоциативность кэшей 1-го уровня (увеличение уровня ассоциативности с 2 до 4 позволило бы заметно повысить эффективность использования этих кэшей).

Таким образом, новый процессор сохранил ряд недостатков предыдущей архитектуры. Также неоднозначным является решение уменьшить размер L2-кэша у каждого ядра до 512 Кбайт и объединить ядра на следующем, третьем уровне кэша. Размер L3-кэша (2 Мбайта) тоже весьма невелик — правда, он, по всей вероятности, реализован эксклюзивно по отношению к L2-кэшам, и поэтому его эффективный размер при тяжёлой нагрузке может увеличиться на сумму размеров L2-кэшей (то есть до 4 Мбайт).

Самым принципиальным отличием процессорного ядра K8L от ядра K8 является удвоение скорости работы блока арифметики с плавающей точкой (для упакованных режимов SSE). Идея введения полночастотной 128-битной обработки SSE-регистров витала в воздухе в течение ряда лет и рассматривалась как естественный путь развития микроархитектуры процессора K8. И, наконец, она будет реализована — правда, лишь через год после внедрения этой идеи в процессор Intel Core (P8).

Упомянутые выше недостатки и ограничения микроархитектуры K8L (в первую очередь невысокая ширина обработки и недостаточно «динамическая» реализация целочисленной арифметики ALU в сочетании с относительно небольшим размером кэшей верхних уровней) не позволят новому процессору превзойти конкурирующую архитектуру Intel Core (P8) на целочисленных и игровых применениях — так что для таких задач следует ожидать отставания в производительности. Однако на ряде применений с активным использованием арифметики с плавающей точкой процессор K8L может достойно противостоять конкуренту, а в ряде случаев и превосходить его. Небольшое превосходство на таких задачах может быть обеспечено благодаря высокой эффективности встроенного контроллера памяти и большему размеру L1-кэша в сочетании с возможностью выполнять до двух загрузок из кэша за такт. Эти факторы позволят компенсировать общие недостатки архитектуры на достаточно регулярных кодах. Например, на задаче перемножения больших матриц можно ожидать достижения производительности на уровне 85% от пиковой, против оценки на уровне 80% для процессора P8 (при одинаковой тактовой частоте и сопоставимых размерах кэшей верхних уровней). Также можно ожидать паритета или небольшого превосходства процессора K8L на наборе тестов SPECfp2000.

К сожалению, в нынешней архитектуре x86 отсутствуют адекватные средства для работы с не выровненными операндами в упакованном режиме SSE2, что затрудняет использование этого режима для обработки групп массивов, не выровненных друг относительно друга с 16-байтной кратностью. Данное ограничение снижает вычислительный потенциал обеих конкурирующих архитектур — и P8, и K8L. Появление таких средств в будущих расширениях режима SSE создало бы дополнительную интригу и позволило бы более отчётливо выявить резервы каждой архитектуры.

Таким образом, противостояние процессоров компаний Intel и AMD в настоящее время перешло из плоскости войны революционных концепций и новаций (P-4 против K7/K8) в плоскость борьбы эволюционных расширений и реализаций (P8 против K8/K8L). В рамках этого противостояния компания AMD, безусловно, должна будет разработать новую, продвинутую микроархитектуру, более широкую и динамическую по своей природе. В сочетании с удачными наработками из предыдущих поколений процессоров (гибкий механизм предварительного декодирования инструкций, эффективные функциональные устройства, широкий доступ к L1-кэшам, низколатентный встроенный контроллер памяти и быстрые интерфейсы HyperTransport) это позволит будущей архитектуре достигнуть всестороннего паритета либо превосходства над процессорами конкурента.

 
« Предыдущая статья   Следующая статья »