Микроархитектура AMD Bobcat и её реализация в платформе Brazos

Часть 2 (статья одной страницей)




Экономия и авторазгон


Модель зависимости частоты ГП (МГц) от питающего напряжения (В).

Чип имеет две регулируемые силовые шины — VDD для x86-ядер и VDDNB для встроенного северного моста и ГП. Ядра Bobcat оптимизированы под напряжение 0,8–1,2 В, хотя как минимум среди первой ревизии были чипы с питанием 1,3 В, и даже в простое это напряжение не опускалось ниже 1,09 В. ГП, судя по предоставленному графику, может запитываться 0,65–1,3 вольтами, а на самом деле — 0,8–1 В с шагом 0,1. Хотя, если судить по официальным частотам, выше 0,9 В ни в одной модели эта шина подниматься не должна — если, конечно, график точен… Также есть две фиксированные линии для питания драйверов интерфейсных шин.

Как обычно для современных чипов, применяется концепция силовых островов — областей, подключенных к какой-либо силовой шине напрямую или через силовые ключи. Они применяются для x86-ядер, UVD, ГП и графического КП. Тут можно спросить — а зачем отключать и последний? Ведь даже при просмотре статичной картинки требуется выводить изображение на экран, читая его из видеобуфера в ОЗУ. Верно, но по меркам ЦП это происходит так редко (если группировать запросы), что в паузах между чтениями (а это 94% времени) и память, и её контроллер можно глубоко усыпить. Для x86-ядер процедура перехода в энергосостояние C6 («всё выключено») и пробуждения из него такая же, как у Llano, т. к. состояние ядра сохраняется в ОЗУ, а не специальной накристальной памяти (как у Atom).

Интересно, что для лучшей энергоэффективности при усыплении обоих x86-ядер шина их питания может быть снижена до 0, чтобы сэкономить даже на остаточных утечках, неизбежных и с выключенными силовыми ключами. Если и ГП спит, то это состояние называется Package C6 (т. е. C6 для всей микросхемы). Однако поднятие напряжения на целый вольт требует много времени, и если переходы в состояние «2-ядерного сна» слишком часты, то медленные пробуждения заметно замедляют реакцию ЦП. В этом случае силовой контроллер указывает регулятору напряжения снижать шину питания лишь до 0,45 В.

Интересно, что силовые ключи (основанные на p-канальных транзисторах) отключают именно шину напряжения, а не земли (как у Llano и Bulldozer), причины чего не объяснены. Силовая нагрузка подаётся через пару слоёв, где отдельно расположены горизонтальные и вертикальные дорожки (в проекции «сверху»). Для x86-ядер это 9-й и 10-й слои (т. е. самые верхние и толстые, пригодные для наибольшей плотности тока), а северный мост и ГП запитывается через 7-й и 8-й. Шины идут тройками — земля («ноль» или минус), подводная и коммутируемая (к ней подключена нагрузка). На некоторых из пересечений таких троек находятся транзисторы-ключи, соединяющие подводную и коммутируемую шины. Для x86-ядер ключей ≈30 000, а общая длина их затворов — около метра (бурные, продолжительные аплодисменты…). Правда, так устроено лишь над логикой, которую можно раздвинуть для помещения силовых ключей в наиболее удобном, шахматном порядке. У куда более высокоплотных массивов это не получится, поэтому там ключи расположены вдоль двух сторон одинарными или двойными рядами (в зависимости от длины массива).

Во избежание ошибок из-за помех по питанию, вызванных резкими перепадами напряжения при включении или отключении блоков, ключи организованы как «двойная гирлянда». Для каждого острова параллельно соединённые ключи делятся на два ряда — слаботочные (для инициации контакта со «средним» сопротивлением) и сильноточные (для устойчивого контакта с низким сопротивлением). В каждом ряду ключи срабатывают последовательно, чтобы плавно нарастить или снизить потребление. При включении сначала проходит активация слаботочных ключей, а после задаваемой паузы — сильноточных. При отключении — наоборот. Пауза программируется при заводской юстировке, исходя из возможностей конкретного экземпляра ЦП. Результат на примере подключения ГП таков: проседание напряжения — не более 2%, а совокупное сопротивление всех ключей — 600 мкОм. Пиковая плотность потребления тока на единицу площади питаемого участка — до 0,5 А/мм², чего хватит даже для жарких серверных ЦП. AMD указывает, что эта полезная схема применяется для шины VDDNB, промолчав про ключи для x86-ядер…


Ребята из AMD в очередной раз напакостили, перевернув кадр №4 — пришлось исправлять.

Выше приведено загадочное «меридианное фотонное излучение» (упоминание которого найдено лишь в документах по Llano и Bobcat) для четырёх состояний кристалла: всё включено (№1), одно ядро выключено (№2 и №3) и всё-что-можно выключено, т. е. «package C6» (№4). Тактирование полностью убрано, выдержка — 30 с, напряжение VDD — 1225 мВ для первых трёх случаев (снова попались на превышении заявленного диапазона 0,8–1,2 В) и 875 для №4, а VDDNB везде равно 875 мВ. На кадре №4 видны постоянно подключенные блоки: собственно северный мост, некоторые контроллеры внешних шин со своими драйверами, все внутричиповые шины и их порты для x86-ядер (где происходит преобразование частот и уровней напряжений для данных). Причём эти порты ярко светятся (т. е. много потребляют) даже у простаивающего ядра, если хоть одно активно (кадры №2 и №3).

Об экономии в L2 и прочих массивах сказано не было, но известно, что Intel со времён Pentium M применяет такой нехитрый приём: кэш L2 (тогда он был на 2 МБ) делится на 32 банка, каждый из которых имеет счётчик тактов, сбрасываемый при каждом обращении в этот банк. Если за определённый период в банк не было обращения, то счётчик переполняется, банк смывается в память, и питание от него отключается. (Правда, тут уместно спросить — если всё так, то чего же Intel молчит о том, что силовые ключи у неё давно есть, пусть лишь для одного кэша?..) Скорее всего, чтобы не пробуждать зря банк при редких доступах, при обращении (и промахе) в спящий банк сначала запускается счётчик, и если до его переполнения сюда обратятся ещё раз, то банк получит питание и начнёт накапливать данные от промахов. Возможно, в Bobcat применяется что-то похожее.

Ещё одно место приложения энергоэффективных технологий — буферы-защёлки, в т. ч. межстадийные. Внимательный Читатель вспомнит эту диаграмму из статьи о микроархитектуре ЦП VIA Nano, иллюстрирующую, что «в наиболее высокопроизводительных длинноконвейерных ЦП (типа IBM Power и Intel Pentium 4) почти половина мощности ядра уходит на буферы, срабатывающие каждый такт после каждой стадии, тогда как далеко не все транзисторы самих стадий работают в каждый момент даже при полной загрузке конвейера». Сегодня уже для любых процессоров надо оптимизировать число и потребление буферов, чтобы уложиться в температурный бюджет. Что AMD предлагает изменить? А ничего! Видимо, разработанный TSMC энергоэффективный техпроцесс настолько хорош, что для частот до 2 ГГц потребление невелико. Правда, 2 ГГц на этих транзисторах достичь не удаётся, поэтому некоторые изменения в буферах всё же произошли, и экономии они совсем не касаются — об этом чуть позже.

Все тонкости управления питанием доступны для ОС через драйвер, что даёт возможность настраивать баланс скорости и потребления в разных ситуациях (работа от сети, от свежих батарей или от севших…), а также оптимизировать настройки программным обновлением. Т. е. если ваш нетбук на платформе AMD маловато работает на одном заряде — обновление драйверов ЦП (теоретически) может отсрочить покупку более ёмкого аккумулятора. Впрочем, и сейчас есть чем похвастаться: при простое ЦП потребляет 3 Вт (причём разгон с «ленивых» 800 МГц до штатной частоты происходит только после исполнения миллионов команд), в состоянии «лёгкого сна» (C1 или C3) — 0,8 Вт, а полностью выключенный — 0,2 Вт. Но это всё равно больше, чем у Atom, даже если брать лишь его 2-е поколение: уже интегрированное, но ещё на 45 нм.

Кристалл

Параметры и блоки

Впервые в своей практике AMD стала производить ЦП не на своих заводах (пусть и бывших — с учётом выделения производственных мощностей в самостоятельную компанию GlobalFoundries), а на совсем чужих — компании TSMC, которая является крупнейшим в мире контрактным производителем микросхем (GF — третья). Возможно, инженеры подумали, что с затягиванием перехода на 32 нм в GF затягивать выход самого ЦП не обязательно — не зря же AMD теперь является бесфабричной компанией. Кроме того, TSMC известна своими оптимизациями техпроцессов под малое энергопотребление, что как раз кстати на фоне скромных результатов по этому пункту бывших фабрик AMD.

В общем, решено использовать «полушаг» на 40 нм. Ранее полушаги (расположенные между двумя стандартными технормами — в данном случае 45 и 32 нм) применялись в основном для памяти и прочих регулярных схем. Теперь же их всё чаще применяют для чипсетов и ГП. Кроме того, конкретно у ATI были давние связи с TSMC, выпускавшей все её ГП, так что не грех воспользоваться контактами и после слияния с AMD. Более того, т. к. большая часть чипа занята ГП, который к моменту окончания разработки уже выпускался на 40 нм в дискретном виде, логично и остальные части кристалла сделать на этом же процессе. Если точнее, TSMC для 40 нм предоставляет 10 слоёв медных проводников, обычный поликремниевый затвор (никаких новомодных HKMG) и обычную кремниевую пластину (а не SOI, как во всех ЦП AMD ранее). Интересно, что, как и в других мобильных ЦП AMD, тут отсутствует теплораспределительная крышка — радиатор непосредственно контактирует с тыльной стороной кристалла.


Вид кристалла с шариками припоя для монтажа на подложку. Наложены обозначения основных блоков. По ссылке — большая версия без обозначений. Виден верхний слой дорожек, перераспределяющих напряжение (большая часть выводов — силовые; сигнальные расположены над контроллерами интерфейсов). Диагональные дорожки от центра — верхний ярус тактораспределительного дерева. Ниже дан более привычный вид (повёрнут на 90°) — без шариков и нескольких верхних слоёв дорожек.




Раскладка блоков чипа делится на два уровня. Слева указан верхний: 2 ядра Bobcat с L2, их умножители (CK), графическая часть (gnb), северный мост (CNB) и набор интерфейсов. Внизу: CRTDAC — аналоговый для VGA, LVTMDP и TMDPA — два цифровых, DPLL — 2 тактовых генератора к последним. PA — видимо, силовой контроллер. Второй уровень — ядра x86 и ГП (показан справа). Расшифровку этих сокращений понять куда труднее, помимо очевидных: UVD, MC (графический ИКП), DC (контроллеры экранов) и SP (2 блока по 40 графических ФУ). CP — возможно, «коммуникационный процессор» (часть северного моста).

Ещё одна версия раскладки, в которой чуть ясней указаны периферийные блоки, и выделен белым центральный канал длиной 4,41 мм, разделяющий ГП пополам. Вдоль него проложены 1400 линий между северным мостом и x86-ядрами, лежащие на уровнях 2, 4 и 8 по горизонтали и 3 по вертикали. Поперёк проходит 21 000 дорожек ГП на уровнях 5 и 7 по вертикали и 8 по горизонтали. Нетрудно заметить, что слои металла чередуются по направлению дорожек.

Кристалл единственного вида упакован в корпус BGA-413 размером 19×19 мм. Размер собственно кристалла — 9,1×8,1 мм, площадь — 75 мм², TDP — до 18 Вт (в ранних документах сказано, что корпус выдерживает до 20 Вт). По мнению AMD, предыдущая мобильная платформа для той же производительности должна иметь ЦП класса Athlon II X2 (117 мм², до 25 Вт), северный мост (66 мм², 13 Вт) и отдельный ГП младшего класса (59 мм², 8 Вт). Выгода интеграции очевидна, хотя ядро Bobcat, конечно, не дотягивает по скорости не только до равночастотного K10, но и до K8.

Зато выиграть можно в т. ч. и по цене, частично определяемой площадью кристалла: на 75 мм² уместилось два x86-ядра по 4,9 мм² (плюс 3,1 для L2), 35 мм² занимают графика, контроллеры и генераторы частот, а 24 — драйверы шин. Для сравнения: площадь 2-ядерного Atom 2-го поколения (Pineview, 45-нанометровый техпроцесс) — 87 мм², одного его ядра — 9,7, а кэша L2 того же объёма — 4,4. Уменьшение до 40 нм в идеале дало бы сокращение этих величин лишь на 21%, а тут ядро и кэш в 1,5–2 раза меньше, и при большей скорости. AMD хвастается, что ядро Bobcat втрое меньше K8, даже если последнее уменьшить с родных 65 нм до 40 — притом, что производительность у Bobcat меньше всего на 10–20%.


ЦП платформы Brazos (слева), дискретный ГП (в центре) и 2-ядерный «Атлон» (справа). А ведь ещё нужен северный мост…

Кстати, на секунду представим себе, что будет в сравнении с K10. При очень приблизительном подсчёте оказывается, что пара ядер Bobcat с кэшами L2 и по площади (16 мм²), и по числу транзисторов (116 Мтр.) примерно равна ядру К10 с L2 на 1 МБ, изготовленному на общем техпроцессе. При этом пара «Бобкэтов» обгонит равночастотный K10 по скалярной производительности, сравняется по векторной в SP и вполовину отстанет по DP (которые в K10 также полноконвейерны). Впрочем, главный недостаток версии «K10 на 40 нм для планшетов» в том, что при избытке вычислительных мощностей внутри ядра нечего отключать от питания, а из двух ядер одно можно усыпить. Т. е. два маленьких, но по 3 рубля ватта, лучше одного большого, но по 8–10.

Транзисторы

Число экземпляров Виды транзисторов
Макросы 225 HVT, 40 нм 24,76%
Память 866 HVT, 42 нм 30,85%
Цепочки 2 473 912 SVT, 40 нм 21,94%
Логика 8 080 771 SVT, 42 нм 20,86%
Буферы-усилители 3 089 581 LVT, 40 нм 1,51%
Всего 13 645 355 LVT, 42 нм 0,01%
Битов памяти Число транзисторов
В ГП 10 559 376 Память 144 200 024
В x86-ядрах и L2 12 230 872 Логика 305 330 039
Всего 27 790 248 Ввод-вывод 1 828 283
Всего 451 358 346

Применены 3 вида транзисторов, отличающихся пороговым напряжением срабатывания: HVT, SVT и LVT — высокий, стандартный и низкий. При предельной температуре 105 °C утечка тока в LVT-транзисторах в ≈4 раза больше, чем в SVT, а у этих — в ≈3,5 раза больше, чем в HVT. Каждый вид дополнительно делится на два типа по длине канала: стандартная (около 40 нм) и увеличенная на 2 нм (этот тип позволяет чуть уменьшить утечку за счёт увеличения размера). Все функциональные блоки делятся на простые схемы («экземпляры»), в пределах которых применяются транзисторы лишь одного вида. Но ничто не бывает бесплатно: HVT — самые медленные (применяемые и для силовых ключей), SVT — среднескоростные (для ГП), а LVT — самые быстрые, используемые лишь в критических местах x86-ядер, где иначе не выжать даже скромные 2 ГГц. В частности, избежание использования LVT для экономии на утечках и привело к решению сделать массивы кэша L2 получастотными.

Большое внимание уделено тактированию. В чипе есть 16 рабочих частот, 10 сканирующих (применяемых при проверке монтажа ЦП на плату через интерфейс JTAG) и 11 отладочных (для фабричных тестов). Цифровой синтезатор частоты (DFS, ранее уже применялся в AMD Turion, то бишь в мобильных «Атлонах») генерирует 9 рабочих частот из 4-фазного опорного сигнала от системного умножителя частоты (PLL), причём при смене множителя не требуется задержка на аналоговую адаптацию (как у обычного PLL) — достаточно сменить схему цифрового коммутирования фаз. Этот умножитель получает внешнюю синхронизацию — базовый сигнал на 100 МГц или некий альтернативный тактовый генератор «DFT mode clock». Есть ещё 4 умножителя, 2 из которых, используемые для видеовыходов, также требуют дополнительное внешнее видеотактирование. Генерируемые частоты попадают в сети тактораспределения пяти разных видов — в основном это разные виды деревьев, но x86-ядра используют сеть с 6–8 «этажами» усилителей. Для точной синхронизации разных частот имеются программируемые линии задержки, срабатывающие с точностью в полтакта быстрейшей частоты.


Жёлтые дорожки (крестом в центре) — верхний ярус тактораспределительного дерева для ГП. Голубым и красным обозначен средний ярус. Для x86-ядер используется разряжённая сеть — зелёные и фиолетовые дорожки.

Обычный буферный (D-)триггер имеет 2-ступенчатый тип «мастер-помощник» (политкорректный советский перевод деспотичного оригинала master-slave), т. е. состоит из двух триггеров, срабатывающих в 1-й и 2-й полутакты. Схема компактна, в меру прожорлива, но не очень быстра, если её делать на энергоэффективных транзисторах (как в Bobcat). Поэтому был придуман куда более громоздкий (и даже более прожорливый!), но скоростной тип буферов — 3-стадийный (с задержкой в 3 FO4-вентиля), ассиметричный (переключения 0→1 и 1→0 занимают разное время), с коммутатором и предзарядом выходной линии. Достаточно было заменить на него 12,6% обычных буферов ядра (естественно, находящихся лишь на критических для распространения сигнала местах), чтобы получить подъём частотного потолка на 7% ценой увеличения площади на 2,06%. Неподготовленным читателям схему этого монстрика лучше рассматривать при поддержке нижней челюсти. :) Ну а вы, смельчаки, кто захотел ещё и понять, как он работает, — спрашивайте на форуме.

Ядро

Полюбовавшись кристаллом, приблизим x86-ядро (для наглядности обработанное поканальной нормализацией яркости). «Гвоздь программы» тут не количественный, а качественный: Bobcat — первое ядро AMD, сделанное с применением почти исключительно автоматизированных САПРов (HLS: high-level synthesis, высокоуровневый синтез схемы) и почти без ручной оптимизации логики (custom logic). Аналогию с программированием можно привести такую: HLS это использование библиотек и компиляторов, а ручная сборка блоков из транзисторов — кодирование на ассемблере. С железом — как и с программами: САПРы намного ускоряют работу, требуют меньше знаний всяких тонкостей, но часто выдают неоптимальный результат; ручная работа — долгий и дорогой эксклюзив. (Кстати, английская микроэлектронная терминология тоже использует термин SAPR, но с другой расшифровкой: synthesis auto place-and-route — синтез схемы с авторазмещением вентилей и авторазводкой их соединений.)

Эти две противоположности в чистом виде, разумеется, давно не применяются, а сосуществуют в виде смеси, но в случае Bobcat доля ручной работы почти нулевая. Борьба «САПРы против рук» ведётся давно, копий сломано много, а конкретно в AMD даже произошёл небольшой скандал. Причиной стало тесное интегрирование старой команды AMD и новой от только что купленной ATI, которое должно было позволить им использовать наработки друг друга — но это оказалось возможным только в рамках САПРов и крупных блоков. Дизайнер Cliff Maier, ранее работавший ещё над DEC Alpha (детальней об этом предшественнике «Атлонов» читайте в обзоре Llano в главе «Кристалл со странностями»), несколько лет назад (когда начались работы над Bobcat) покинул компанию, будучи несогласным с решением руководства положиться только на САПРы и не использовать ручную доводку даже критических частей ЦП.

По мнению инженера «старой школы» Клиффа Мэера, отказ от низкоуровневой оптимизации выдаёт на выходе чип, который на 20% больше и на 20% медленней. Насчёт частоты, возможно, и так (хотя ровно по такой же методике разрабатывался и вполне высокочастотный Bulldozer), но вот насчёт потерь в площади позволим не согласиться с уважаемым дизайнером. Кстати, аналогичное несогласие Мэеру высказал другой инженер на том же форуме сайта Mac Rumors. А дизайнеры самой AMD в докладе для конференции IEEE даже похвастались, что применение SAPR позволило обойтись меньшим числом инженеров и даже обогнать поставленные руководством сроки. Самое время вспомнить, что по времени Bobcat всё равно отстал от Atom на 3 года…


Раскладка ядра Bobcat на блоки. Жёлтые полосы — цепочки силовых ключей и, возможно, усилителей тактовых сигналов. Чёрные области в углах не использованы. (Ниже L2 также есть неиспользованная полоска, которую почему-то не видно тут.) Большое оранжевое пятно в центре и бордовое выше него, возможно, относятся к планировщику и логике управления FPU, хотя, судя по размерам тощего диспетчера (а в нём должен быть ROB!), сюда бы точнее подошёл именно он… Блоки справа вверху также не обозначены, но на увеличенной версии есть внутренние сокращения, намекающие на разные части контроллера L2.

Но вернёмся к чипу — в отличие от «квадратно-гнездового» метода стыковки блоков, привычного по всем остальным ЦП, в ядре Bobcat границы между логическими блоками едва видны и чётко прочерчены лишь на официальной карте. (Матрицы, разумеется, видны отлично.) Амёбообразные очертания являются характерным признаком автоматической оптимизации в масштабах всего ядра, чего ранее не делалось просто по причине исключительно больших вычислительных затрат (детальней об этом читайте в 3-й части обзора Atom). Сегодня же, благодаря более мощным серверам, обновившимся библиотекам IP-блоков и продвинутым алгоритмам САПРов можно получить результат, близкий к профессиональной ручной работе, только выглядящий совершенно по-другому. Примерно так же выглядят границы блоков у процессоров архитектуры ARM — потому что эта компания поставляет конечным производителям описания ядер, из которых они потом синтезируются под конкретный техпроцесс.

Например, то, что для человека должно быть регулярной структурой (скажем, матричный умножитель), для алгоритма оптимизации — просто набор логических вентилей, которые не обязательно располагать какой-либо матрицей. В результате привычные блоки могут оказаться хитрозакрученными и даже разделёнными на части (как целочисленный тракт). Состоят они из «логических экземпляров», которых всего в ядре набирается 1,1 млн. Не считая L2 и его тегов (это отдельная от ядра «плитка»), РФ и мелких буферов (тут это тоже «логика»), также есть 35 массивов семи видов. С ними связано не меньше любопытного, и это не только уже проведённый нами анализ размеров структур предсказателя.

Аккуратный подсчёт даёт 8 видов массивов, а не 7 (яркие полоски вдоль краёв — входящие в блок обслуживающие схемы, в т. ч. логика). Сумма 35 получается так: L1D разбит на 4 блока по 8 КБ, для кэша L1I, «редкого» BTB и TLB L2D использовано 10 массивов по 4 КБ (6+3+1), а остальные блоки имеют массивы на 2 КБ (кроме крошечного TLB L1D для 8 больших страниц). TLB L2D, как видно, расположен впритык к LSU, а потому его задержка в ≈7 тактов странна — такие массивы используются и в кэше L1I, который сам по себе срабатывает всего за 2 такта.

Кстати, о нём: L1I почему-то создан из массивов аж трёх видов — 6 по 4 КБ (на фото вытянуты горизонтально и разбиты посредине на два полумассива), 2 по 2 КБ (аналогичное разбиение) и ещё 2 очень похожих блока, но с другой «сервисной полоской» (зеркально отражены от предыдущей пары). Зачем было так выделять эту четверть кэша вместо ещё пары массивов по 4 КБ? Если бы L1I был 4-путным, то можно было предположить, что один из путей особо выделен, но для 2-путного кэша разбиение может быть только по номерам наборов, т. е. по кускам физических адресов кода. Это бессмысленно для экономии энергии и площади; может быть, чуть уменьшается время распространения сигнала из этого угла кэша до логики?..

Сравнение двух трактов показывает, что векторный физически вдвое шире целого — как во всех «больших» ЦП Intel, где векторный тракт ограничен длиной, а не шириной. Там это объясняется тем, целочисленная и вещественная части со своими РФ и ФУ совершенно отдельны (не считая Sandy Bridge, где всё несколько сложнее), хотя архитектурно относятся к регистрам xmm и ФУ для команд SSE. Если тут объяснение то же, то оказывается, что вместо 128-битного тракта присутствует 2 64-битных с разными ФУ. Доказательство чему наличие задержки в 1 такт на срабатывание междоменного шлюза — выходит, что домен тут это не просто группа ФУ на общем тракте, а отдельный тракт. Кроме того, один из них чуть длиннее другого — видимо, вещественный, т. к. в нём куда более «толстые» ФУ.

Антураж

Модели

Итак, что мы видим из таблиц по Bobcat-содержащим APU в Википедии? Что за прошедший с анонса год число моделей оказалось весьма мало (изначально их было лишь 4), что даже хорошо — вроде бы не запутаешься. Читатели прошлого Фелидариума уже коварно потирают руки, однако имена моделей, в отличие от большинства других процессорных номенклатур, вполне удобны хотя бы отсутствием исключений. Но сначала надо познакомиться со словарём кодовых названий платформ: и AMD, и Intel обожают использовать кодовые слова почти для всего, над чем они работают, так что ликбез не помешает.

Итак, Fusion (парадигма «слияния» x86- и графических ядер на кристалле) содержит в себе настольные платформы Lynx и Sabine, отданные ЦП Llano, и ультрамобильную платформу Brazos, где применяются ядра Bobcat. Причём под «ультрамобильными» понимаются в т. ч. неттопы, но не смартфоны. У Brazos имеются 4 применения и 4 ряда ЦП: Zacate (ряд E для неттопов), Ontario (C для нетбуков), Desna (Z для планшетов) и встроенный Brazos-T (T или G-T — причём этих ЦП имеется 10 моделей, а остальных трёх в сумме — 9). Их общие параметры приведены в таблице.

Ряд Число
x86-ядер
Часто́ты, МГц Память
DDR3
TDP,
Вт
x86 ГП
E 1, 2 1300–1650 488–508 1066 или 1333 18
C 1000–1200 276 1066 9
Z 2 1000 4,5–5,9
T…E 280 6,4
T…L 1, 2 800–1400 нет ГП 1066 или 1333 5–18
T…R 1 1000–1500 280–500 5,5–18
T…N 2 1000–1650 280–520 9–18

Ожидаемая технология Turbo Core присутствует всего в четырёх моделях, включая две «потребительские»: E-450 умеет разгонять ГП с 508 МГц до 600, а C-60 — с 276 до 400. Последний также ускоряет и x86-ядра — с 1000 до… И вот тут поджидает очередной сюрприз: по показаниям утилит вроде CPU-Z частота 1333,(3) МГц получена умножениям базовых 100 МГц на коэффициент 13,(3). Но умножители частоты имеют целые или полуцелые коэффициенты (последний тут применяется лишь в модели E-450, где он равен 16,5), но никак не кратные трети. Умножение на 13,(3) можно получить по формуле 100:3·40, но коэффициент 40 сложно достижим, учитывая напряжение питания и потребление PLL. Остаётся предположить, что новый цифровой синтезатор частоты умеет так манипулировать 4-фазным опорным сигналом, что на выходе может получиться и частота, кратная 1/3 входной. Кстати, заметно, что часто́ты ГП имеют квант всего 4 МГц — вот с каким малым шагом синтезатор умеет устанавливать этот параметр.

Поддержка DDR-1333 взамен DDR-1066 в свежевыпущенных моделях серии E особой роли для x86-производительности не играет, а вот ГП, куда более жадному до ПСП, весьма поможет. 3 модели T…L не имеют ГП: надо же куда-то девать те кристаллы, где фатальные дефекты при тестировании обнаружены именно в нём — и это будут встроенные компьютеры, которым графика ни к чему. Кроме того, для особой экономии некоторые встроенные модели поддерживают память типа LV-DDR3 вместо обычной, но только для 1066 МГц (изначально и для этого типа заявляли о 1333 МГц). Странно, что это же не сказано хотя бы об особо экономном ряде Z. Не исключено, что на деле поддержка есть в нём, но AMD не всегда аккуратно публикует описания…

Дело, впрочем, не только в описаниях — и вот тут снова начинается странный бардак. Как видно по таблице в Википедии, встроенные модели вскоре после объявления были перевыпущены под теми же именами, но с заметно лучшими характеристиками. Может быть, потому что первые версии почти не покупались?.. Например «новая» модель T24L получила на 200 МГц больше частоты x86, T40N — авторазгон для ГП (есть подозрения, что и для x86), T48N — +20 МГц для ГП, T52N — более скоростную память, а T56N — +50 МГц для x86, память и авторазгон. Такая вот подковёрная раздача «встроенных слонов».

Соперники

Все модели ЦП с Bobcat можно разделить по TDP на три группы: 18, 9 и <7 Вт. 18 это горячо в сравнении с самыми крутыми «Атомами» — например, 2-ядерный «нетбуковый» N570 на 1,67 ГГц потребляет скромные 8,5 Вт, «неттоповый» D525 на 1,83 — 13 Вт, а недавно выпущенный 32-нанометровый D2700 (2133 МГц для x86-ядер 640 для обновлённой графики) — 10. Причём линейка Cedarview благодаря своим частотам уже может поспорить с Zacate по производительности и даже местами выиграть. Правда, графика даже после обновления железа в подмётке не годится даже миниатюрным Radeon (о видеодрайверах Intel умолчим с прискорбным выражением лица). Тем более, что при реальных замерах на чисто процессорных задачах 2 ядра Bobcat (на частоте 1,6 ГГц) и ИКП потребляли как раз те же 10 Вт.

Изначально AMD сравнивала модель E-350 с Turion Neo X2 L625 (65-нанометровый техпроцесс, 2 ядра K8 с 512 КБ L2 в каждом, 1,6 ГГц и 18 Вт TDP), указывая, что равночастотный E-350 всего на 11% медленнее, получая за те же ватты и меньшие деньги северный мост с новым ГП в придачу. А как выглядит расклад сил, если сравнить с соперниками, вышедшими в 2011 г.?

Месяц
2011 г.
ЦП Частота
ядер, ГГц
Наиболь-
ший кэш
ГП: тип и
частота, МГц
TDP,
Вт
Технорма,
нм
Январь Turion II Neo K685 1,8 2×1 МБ L2 Нет 15 45
Athlon II Neo K345¹ 1,4 12
Февраль Core i7-2637M 1,7+1,1 4 МБ L3 HD3000, 350–1000 17 32
Июнь Core i7-2677M 1,8+1,1 HD3000, 350–1200
Ноябрь Atom D2700 2,13 2×0,5 МБ L2 GMA 3650, ?–640 10
Декабрь Celeron 807UE (1 ядро) 1 1 МБ L3 HD, 350–800
4-й квартал VIA Nano X2 (E) U4025 1,2+0,266? 2×1 МБ L2 Нет 18 (13?)² 40
¹ — 64-битный FPU.
² — в скобках указан предположительный параметр для встроенной (E) версии ЦП. Северный мост чипсета VX900 потребляет 4,5 Вт, а южный — 1,5 Вт.

Core i7 можно убрать сразу — они в разы выше по скорости, но и по цене (оба — 317 долларов). Лучшие модели серии i5 тоже дороги — 250 долларов. D2700 уже обсудили выше, но и VIA Nano (кстати, производимые той же TSMC и на том же техпроцессе) после обновления кое-где оказываются соперниками. Требуя 3, а не 2 микросхемы для построения полной системы, за 19–24 Вт (смотря каким цифрам верить) VIA предлагает среднюю скорость в x86 (по меркам компактных систем) и графику Chrome9 HD уровня 2-го (но не 3-го) поколения Atom. У Zacate всё новее и быстрее, но часть рынка встроенных систем (где VIA ныне только и сильна) новые Nano всё же отожмут. В эту же нишу метит Celeron 807UE, но его одному ядру (пусть и архитектуры Sandy Bridge, но без AVX и Hyper-Threading), одному гигагерцу, одному мегабайту L3 и одному каналу ИКП не управиться с E-350 (а то и C-60). Про графику тоже ясно.

Главные вопросы — о внутренней конкуренции. Во-первых, выделяется разница между вышеупомянутыми Turion II Neo и Athlon II Neo: +400 МГц и полноценный FPU ценой лишних 3 Вт. Учитывая разницу в производительности до двух раз (в векторном коде, не налегающем на кэш), Athlon II Neo кажется либо слишком медленным, либо слишком прожорливым. И вот что интересно — сколько бы потерял Bobcat при той же частоте, если бы вместо 64-битного FPU был бы 128-битный? Кажется, что всего 1–2 ватта. Ну, частоту бы немного снизили взамен — зачем же было так экономить?..

Тем не менее, даже Athlon II Neo оказывается конкурентом, ведь 128-битный FPU это хоть и главное, но не единственное отличие K10 от K8: при частоте на 200 МГц ниже, чем у E-350, его скорость может быть выше, ведь у него вдвое больший L2. Даже с 12 ваттами, плюс сколько-то (кто-нибудь знает цифру?..) для северного моста 880M получится (вероятно) примерно те же 18 Вт. Да, E-350 компактней и дешевле пары микросхем, да и графика получше, но осадок остаётся — скорость и потребление всё же важней размеров и цены, и по первым параметрам даже урезанный K10 на своих 45 нм вполне ещё «тянет». Кстати, о ценах: полгода назад отдельно взятый C-50 оценивался в 55–60 долларов, а плата с E-350 — в ≈100 долларов.

С нижней границей диапазона TDP тоже не всё гладко. Новые Atom N2600 на 3,5 Вт выдают 1,6 ГГц для x86 и 400 МГц для ГП, а N2600 на 6,5 Вт — 1,87 ГГц и 640 МГц. Цены Intel установила также очень конкурентные. Против них выступает модель Z-01, недавно обновлённая до Z-03 (в ней отключены ненужные там контроллеры VGA и PCIe): 1 ГГц и 276 МГц при 5,9 ваттах (Z-03 — 4,5). Встроенные версии T имеют минимальный TDP в 5 Вт для 1-ядерной модели T24L (без ГП) и 6,5 Вт для T40E — обе на 1 ГГц. Как видно, AMD уж было переплюнула извечного соперника в энергоэффективности и скорости одновременно (в рамках ультрамобильных ЦП), как тот выкатил новые версии «Атомов» и снова оказался на коне.

Даже ARM подтягивается — недавно анонсированное ядро Cortex A15 сильно выделяется на фоне доселе немощных собратьев по архитектуре: 3-путный конвейер (ранее — 2-путный), внеочерёдное исполнение, поддержка половинной точности (HP) для вещественных чисел (видимо, аналог CVT16 для x86), ECC для кэшей данных (даже L1), до 1 МБ L2 на ядро (вдвое больше, чем было), 40-битная физическая адресация (ранее — 32-битная), виртуализация и до 4-х ЦП в системе. Первые 4-ядерные SoC с A15 выйдут в ближайший год, конкурируя со всеми игроками стана x86.

Чипсеты

Как и с почти всеми современными чипсетами, в данном случае речь идёт о южном мосте под названием Fusion Controller Hub (FCH) серии Hudson. Все, кроме одного, имеют корпус FCBGA-605 размером 23×23 мм и изготовлены по 65-нанометровой технологии. Из 10 выпускаемых или анонсированных видов Hudson 5 предназначены для Brazos. Примечания к таблице в Википедии вот какие:

  • все виды имеют встроенный тактовый генератор (для базовой частоты) и поддержку UEFI-биоса;
  • D1 (он же A45) предназначен не только для платформы Lynx (точнее, Value Lynx), но и для Zacate; его потребление — 5 Вт;
  • M1 (он же A50M, подробней описан в нашей статье) сделан для Ontario; его TDP — 2,7–4,7 Вт (зависит от числа и типа подключенных устройств);
  • M2T (он же A55T) — не только для Brazos-T, но и Desna; помимо указанных отличий от A45, у него лишь 2 канала звука, зато добавлены контроллер SD-карт, порт контроллера WiFi и поддержка AOAC (Always on, always connected — возможность пробуждения из глубокого сна для постоянно подключенных к сети устройств); этот чип подключен к ЦП лишь по двум полосам шины UMI (из 4) и на половинной частоте, имеет размеры 19×19 мм и потребляет 1 Вт;
  • M3L (он же A68M) выпущен на замену M1;
  • E1 (он же A55E) также применим для Brazos-T.

Перспективы

Сначала укажем, что AMD хочет улучшить и внедрить во всех APU вообще:

  • новые x86-ядра Jaguar (вместе с Bobcat они теперь почти официально называются «семейство кошачьих» — Cat family);
  • меньший техпроцесс;
  • более тесное управление питанием и более точный авторазгон с учётом потребностей и x86-, и графической частей; сейчас Turbo Core для x86 работает лишь при простое одного ядра и вне зависимости от загрузки ГП, поднимая частоту на фиксированный шаг — простейшая схема, пройденная Intel 4 года назад;
  • новое поколение ГП с лучшей поддержкой GPGPU (вычислений общего вида с использованием шейдерных ФУ);
  • общее адресное пространство для x86 и ГП — когерентность, виртуальная память и переключение контекста задач будут доступны и ГП; включает в себя когерентность для PCIe и подключенной к нему видеокарты.

Обломы

Громадье планов споткнулось о реальность. Изначально на 2012 г. AMD планировала заменить платформу Brazos на Deccan, а линейки Zacate и Ontario — на Krishna и Wichita. Этим ЦП полагалось иметь до 4 ядер и встроенный южный мост типа Hudson D2 (причём не вторым кристаллом в корпусе, а именно вместе с ЦП). Но осенью 2011 г. объявили, что быстрое развёртывание 28-нанометрового техпроцесса на GF не получается; срочно переносить чип обратно на TSMC (где на этом процессе сейчас выпускаются новые дискретные ГП той же AMD; точнее, вроде бы выпускаются — см. ниже) почему-то не стали и просто отменили планы. Вместо Deccan во втором квартале 2012 г. предлагается Brazos 2.0, причём до конца года старшие модели, возможно, частично подменят устаревшие Llano серий E2 и даже A4.

Названия этих моделей будут начинаться с E1 или E2 и содержать 4 цифры. 40 нм по прежнему не позволят разместить более двух ядер, но ГП всё равно обновится до HD 7000 (это не новая архитектура GCN, а предыдущая VLIW4). Часто́ты и x86-ядер, и ГП чуть повысятся. Блок ULV получит поддержку MVC (Multiview Video Coding — декодирование стереопары) и SAMU (аппаратная дешифровка) для проигрывания 3D Bluray. ИКП станет понимать DDR3-1600, а также (на меньшей частоте) особо экономную ULV DDR3. TDP останется на том же уровне, хотя есть слухи о появлении 7-ваттовых 2-ядерных версий. Чипсеты Hudson D2 и D3L также останутся внешними (теперь — в корпусе BGA-656), но некоторые модели ЦП, возможно, перейдут на корпус FT2 для монтажа припоем, хотя планшетная Z-серия будет использовать нынешний FT1. Также предполагается, что у новых ЦП Z-серии (бывшие Hondo, теперь — Brazos-T) TDP опустится ниже 4,5 Вт (после перехода на 28 нм эта цифра может быть и 2 Вт).

В 2013 г. нас ждут Kabini и Temash: это уже полноценные SoC — APU (с новыми ядрами Jaguar и графикой GCN) и FCH на 28-нанометровом кристалле. Более того, AMD недавно сообщила, что в некоторые модели могут быть встроены IP-блоки других компаний. Intel давно опробовала эту тактику, используя купленные у Imagination Technologies ГП серии PowerVR SGX (их же покупает и Apple). А в прошлом году была выпущена целая линейка Intel Atom с кодовым именем Stellarton (серия E6x5C), включающая рядом с кристаллом ЦП программируемую вентильную матрицу (FPGA) производства Altera, применяемую (в виде отдельных микросхем) в узкоспециализированных устройствах, а также в исследованиях и разработке новой техники.

Фраза «вроде бы выпускаются» насчёт 28-нанометровых чипов объясняется недавними слухами о том, что в середине февраля TSMC полностью остановила производство всех 28-нанометровых чипов на 4–5 недель, чтобы сделать срочные поправки к техпроцессу, видимо связанные с низким выходом годных. Вообще, остановка столь массового производства это чрезвычайный аврал, который за всю историю отдельно взятого завода не должен произойти ни разу. В итоге получается, что AMD теперь не на кого положиться в деле надёжного выпуска 28-нанометровых чипов (и ЦП, и ГП), что совсем не поможет в конкурентной борьбе с Intel, только что выпустившей ЦП Ivy Bridge по 22-нанометровой технологии. Дополнение: только что стало известно, что AMD почти наверняка решила выпускать все свои 28 нм чипы на GF — не в последнюю очередь из-за вышеописанного затыка у TSMC.

Впрочем, проблемы с реализацией всего вышеперечисленного могут оказаться не только технические, временны́е и финансовые. В течение 2011 г. из AMD ушли несколько высокопоставленных сотрудников, включая CEO Дёрка Мэера, а в ноябре даже стало известно о целом проекте «Project WIN»: аудит и «оптимизация расходов» для «уменьшения влияния бюрократии на инновации». В результате 10–12% рядовых сотрудников уже тогда потеряли работу, и прежде всего это были разработчики ЦП. Из-за этого, как тогда стало известно, пришлось замораживать некий готовившийся к анонсу ЦП, т. к. делавшая его команда целиком перекочевала в другую компанию. Возможно, эта «оптимизация инноваций» и была главной причиной отмены Deccan.

Кстати, Внимательный Читатель несколькими страницами выше дёргал нас за рукав, рассматривая левую часть рисунка с сетью тактирования, где должны располагаться ядра Bobcat. И что мы там видим? Да их 4! Выходит, что к началу 2012 г. (когда подготовили доклад с этой иллюстрацией) 4-ядерный Deccan уже детально просчитывался (хотя в других местах чипа изменений не видно). И всё это улетело в мусор.

В общем, если такие кадровые потери в AMD будут продолжаться, то будущие чипы просто некому будет делать. Кроме того, возможно, что между выходами Brazos 2.0 и «Brazos 3.0» (кодовое имя этой платформы пока неизвестно) пройдёт меньше года. Вероятно, крупные OEM-фирмы не будут ничего выпускать на такой короткоживущей платформе (слишком мало времени для возврата вложений), решив дождаться сразу версии 3.0. И тогда даже хороший процессор будет лежать на складах.

Что делать, и кто виноват нам поможет?

Предчувствуя нехорошее, представитель AMD в январе 2011 г. сделал малозамеченное заявление о том, что теперь компания изжила привычную парадигму «AMD против Intel» и приспосабливается к новому времени. Какому? За последние годы на рынке массовых процессоров стало больше игроков, и все новички производят ЦП архитектуры ARM. Причём, в отличие от гигантов x86-архитектур, эти фирмы (тоже, кстати, далеко не малые) не очень кичатся многоядерностью и гигагерцами. Тем не менее, платформа ARM всё больше завоёвывает место под солнцем.

Одновременно поднимается голова у гетерогенных вычислений, где ядра разного вида (например x86 и ГП) могут работать над одной задачей — именно к этому AMD стремится на всех парах. Но не только AMD производит ГП (в т. ч. для мобильных SoC) — таких компаний множество, что усиливает конкуренцию. Продажи настольных ПК почти не растут, бум ноутбуков тоже прошёл, зато на подъёме популярность смартфонов и планшетов, но там x86 не ждут. Большинство ОС (и даже, впервые, Windows 8) будут совместимы в т. ч. с ARM, которая в мобильном сегменте — как дома. Более того, большинству покупателей этой техники плевать, что там внутри — только ради надписи «Intel Inside» или «AMD Fusion» ничего покупать не будут.

Вывод AMD: надо больше обращать внимание не на шаги конкурентов, готовя противодействия, а на требования пользователей — а они чётко показывают, какая архитектура больше всего им нравится в самом аппетитном сегодня компьютерном сегменте. Но вместо боданий с ARM AMD решила объединить с ней усилия (интересно, против кого?..), о чём было заявлено летом 2011 г. Точнее, планируется создание «виртуальной ISA» — платформо-независимой архитектуры FSA (Fusion System Architecture), которая могла бы исполнять программу на любом доступном виде вычислительных ядер с максимальным параллелизмом и «разделением труда».

Промежуточный код перед выполнением переведётся на машинные языки физических ядер (на манер исполнения байт-кода Java) с поправками и перестановками доступов к памяти и прочими требованиями целевых архитектур. Для упрощения жизни программистам в исходный язык (а им может быть обычный C++) будут добавлены конструкции для параллелизма, многозадачности, обработки исключений, виртуальных функций и памяти, вызовов ОС, отладки и пр. — и всё это должно исполняться на железе любого типа. Разумеется, на аппаратном уровне (например, в ИКП и шинах) также будут сделаны изменения для универсализации.

Что мешало сделать это до сих пор? Исключительная сложность современных компьютеров. Надо помнить и понимать устройство ядер с внеочерёдным исполнением, многопоточностью и кучей других «ускорялок», оптимизацию под многоядерность (с учётом конфликтов доступа к разделяемым ресурсам), а теперь — и программирование ГП для GPGPU. При этом ГП не менее сложны, чем x86-часть, но хуже описаны и имеют менее развитые программные инструменты. В результате оптимизация под гетерогенные многоядерные системы превращается для разработчиков в поток споров, проб и ошибок. В конце концов программисты либо получают не то, что хотели, либо бросают дело на полдороге — и в обоих случаях винят производителей железа.

AMD пытается упростить ситуацию, создав стандарт абстракции эффективного программирования чего-угодно на чём-угодно. Для этого впервые раскрываются (заплатившим лицензию партнёрам) интерфейсы не только до и для ЦП, но и внутри него — между крупными IP-блоками. Разумеется, спецификации и детали будут контролироваться AMD как интегратором — тем более, что у неё уже сейчас есть многое из нужного (ядра, шины, ISA и протоколы), но для x86. Чтобы получить бо́льшую долю в мобильном рынке, AMD намекает на сближение ISA x86, ARM и разных ГП для упрощения задачи программистам, получая, как минимум, совместное проживание этих ядер на чипе с общими ресурсами и исполняемым кодом. И такое сближение, собственно, и составляет суть объявленной, но незамеченной революции.

И тут как раз пригождается то, что ядра Bobcat синтезированы SAPR-инструментами: не имея ручных оптимизаций под конкретный техпроцесс, их описания на стандартных языках (Verilog и VHDL) можно передать любому партнёру, чтобы наладить совместный чип на любом фабе — как это сейчас происходит с ядрами ARM. Например, возможно появление ЦП с ядрами Cortex A15 и ГП Radeon. Выходит, что AMD давно вынашивала вышеозначенные планы, и ядро Bobcat является лишь их началом. Хорошо бы теперь не растерять запал по дороге…

Масла в огонь подливает недавний слух о том, что AMD может купить компанию MIPS Technologies, владеющую правами на одноимённую (и давно известную) архитектуру. MIPS хорошо развита, давно (в отличие от ARM) имеет 64-битные, векторные и многопоточные расширения, и её часто изучают в ВУЗах по всему миру. Сегодня реализации MIPS используются прежде всего в микроконтроллерах, сетевом оборудовании и в игровых консолях Sony PlayStation 2 и PlayStation Portable. Есть даже ЦП российского производства: серия КОМДИВ-32/64/128 для военно-космических применений (в т. ч. радиационно-стойкие), а также гетерогенно многоядерные МУЛЬТИКОР с DSP-ядрами (тоже явно не гражданские). В 1990-х гг. MIPS широко использовалась многими компаниями в т. ч. для ПК и суперкомпьютеров. Во второй половине 1990-х гг. каждым третьим производимым ЦП был MIPS-процессор.

Интересная для AMD часть этой истории начинается с того, что у компании уже были два продукта с архитектурой MIPS. Это используемая в телевизорах и приставок к ним SoC ATI Xilleon (позже — AMD Xilleon), которую (вследствие реструктуризации из-за нехватки денег) в 2008 г. AMD продала в Broadcom. А также SoC Alchemy, изначально разработанные одноимённой компанией и купленные в 2002 г. AMD. Но через 4 года продали и их. Сейчас они применяются в спутниковых навигаторах и мультимедийных плеерах. Если слух верен, то AMD придётся отбиваться от очевидных вопросов типа «а чем вы раньше думали?» и как-то совместить покупку MIPS, сотрудничество с ARM и собственные мобильные x86-изделия.

Выводы и пожелания

Итак, AMD впервые за многие годы сделала продукт, соревнующийся наравне с конкурентами в общей рыночной нише. Ну или почти — если учесть вышедшие одновременно или чуть позже процессоры конкурентов и некоторые свои же. Т. е. теперь конкуренция местами возможна уже по техническим характеристикам (скорости и потреблению), а не только в цене. Доказывают это цифры продаж: 30 млн. ЦП за 15 месяцев — рекорд для чипов AMD всех видов. Не удивительно, что планы настрогали такие, что фабы не справляются. Но могло ли получиться лучше? Учитывая всё вышесказанное, представим, что желательно дополнить и улучшить в грядущем через год Jaguar по сравнению с Bobcat.

Главное — обязательно удвоить ширину FPU до 128 бит. Это не только удвоит производительность, но и уполовинит нагрузку на планировщик и сократит размер микрокода. Представитель команды разработчиков пояснил, что половинный FPU является разменом скорости на экономию площади и энергии. Но если посмотреть на конкурентов, то окажется, что они все имеют что-то 128-битное: у Atom — АЛУ и вещественный сумматор, у Nano — всё, кроме делителя. У вышеупомянутого Cortex A15 DP-числа обрабатываются (в FMAC) всё ещё скалярно, а вот SP — 128-битными векторами.

Очевидно, что затрачиваемая энергия при обработке 128-битного вектора в 64-битном тракте окажется больше за счёт накладных расходов двух команд вместо одной (генерация второго мопа, переименование, размещение, планировка и отставка). Что касается площади, то внимательный взгляд на фото ядра показывает массу свободного места рядом с L1I — если бы последний расположили «вдоль стеночки» (т. е. как L1D, но в противоположном углу), то рядом оказалось бы свободное место для расширения FPU. По другую сторону место можно освободить переносом контроллера шины в пространство между половинами кэша L2 (как в банке L3 у Sandy Bridge).

Учитывая необходимость компактности, достаточно удвоить ширину обоих АЛУ и вещественного сумматора. Умножитель также нужен на 128 бит, но ставить второй такой же блок будет слишком расточительно по площади. Учитывая потребность прежде всего в SP-умножениях (именно для мобильных применений), можно было бы дополнить имеющийся EP-умножитель двумя SP-блоками, которые займут меньше места, но обеспечат скорость в 4 SP-умножения за такт, как и в A15. Однако мы не зря детально описали умножитель — матрица шириной 54 бита вместо двух на 27 позволила бы вычислять и DP-умножения, пусть и с пропуском в 2 такта. Выходит, что тогда уже выгодней к имеющемуся EP-умножителю добавить ещё один на 1 DP- или 2 SP-элемента.

Для большей экономии места можно сократить EP-умножитель до DP, пожертвовав поднабором x87, применение которого сегодня (при кросс-платформенности не только программ, но и ОС) окончательно потеряло смысл: на ARM и MIPS никакие 80 бит не ночевали, а поддерживать сохранение вещественного стека только для x86 никто не будет. Но т. к. x87 всё же изредка встречается в настольных программах (а неттопы — одна из целевых платформ), то достаточно будет иметь их программную эмуляцию драйвером ЦП. Это намного медленнее, но для крайне редких программ сойдёт и так, зато в FPU можно будет убрать лишние 20% транзисторов и дорожек тракта (упростив и его логику выкидыванием поддержки 3-го вида точности). Там же удаляем таблицы констант для трансцендентных функций (их со времён SSE2 считают программно — векторами через суммы рядов), а в декодере — массу микрокода для сложных вещественных команд.

Теперь добавим остальные пожелания:

  • Ускорить проблемные команды: PALIGNR, MASKMOV* и целое деление.
  • Расширить шину FPU–LSU до полнодуплексной на 16+16 байт, что должно дать возможность читать и писать по одному xmm-вектору за такт.
  • Удвоить ширину портов LSU до 16 байт и обеспечить 2-портовость большинстве случаев. Ещё лучше — обеспечить возможность 2 чтений за такт через многобанковость L1D, что также потребует реверсивности одной из полушин между LSU и трактами (2 чтения или чтение + запись). Также рекомендуется улучшить STLF и уменьшить штрафы при невыровненном доступе.
  • Уменьшить TLB L1I до тех же 40 страниц, что и TLB L1D, а TLB L2 сделать общим для обоих TLB L1. Так можно сэкономить место во фронте почти без потерь в скорости.
  • Подтянуть ПС L2 и ИКП ближе к пикам, в т. ч. для 1-поточной нагрузки — и по чтениям, и по записям.
  • Сделать L2, транслятор страниц и контроллер шины общими для пары ядер, запитав их отдельным набором силовых ключей. Это также позволит отключить часть кэша при фатальных дефектах в нём, не жертвуя одним из ядер. Такая же схема питания, тактирования и отбраковки принята для общего L3 у Sandy Bridge. Или вот SoC NVidia Tegra 2, весьма похожая на Zacate/Ontario (в т. ч. по целям экономии — ватты и миллиметры в ущерб скорости): 2 ядра ARM Cortex A9, те же частоты и размеры кэшей L1, но общий L2 на 1 МБ.
  • Внедрить самый современный авторазгон, как в «больших» ЦП Intel.

Думается, этих изменений хватит на то, чтобы новое ядро при чуть большей площади и потреблении стало куда быстрее, а именно такая комбинация и даёт возможность экономить ватты: быстрее закончим считать — быстрее перейдём в простой. Прочие возможности (добавление 3-го пути конвейера или гиперпоточности) слишком сложны и потребуют полной переделки ядра. Вместо этого при нехватке скорости можно просто удвоить их число, что и планируется. Ну а как выйдет на самом деле — узнаем через год.

Правда, если AMD снова не выпустит учебник по оптимизации (что куда проще разработки новой архитектуры), или выпустит, но опять с ошибками в цифрах, то любые полезные добавки снова будут недоиспользованы. И тогда, как уже бывало, снова окажется, что инженеры AMD разработали неплохой продукт, а маркетологи и менеджеры на ровном месте прострелили себе и коллегам коленки и упали, едва не догнав конкурента. Может, надо «оптимизировать» не инженеров, а руководство?..

Источники

По многочисленным просьбам некоторых лодырей с форума широких народных масс трудящихся и жаждущих истины, приводим список основных использованных источников — не считая тех, ссылки на которые уже даны выше. Остальные, коих десятки, поставляли лишь отдельные утверждения, причём часто противоречивые. После внимательного прочтения данной статьи этот список больше подойдёт не для реального использования, а просто ради демонстрации своей ненужности:




Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.