AMD сознательно ушла из сегмента высокопроизводительных процессоров. У неё сейчас нет продуктов способных конкурировать по производительности с процессорами Intel и нет ресурсов такие процессоры создать.
Это, безусловно, огорчает, поскольку Intel становится абсолютным монополистом. Со всеми вытекающими...
Но, давайте смотреть объективно:
Сравним то, что называют "ядром" маркетологи AMD с настоящим процессорным ядром Intel.
Во-первых, "ядро" AMD содержит только 4 исполнительных устройства (два арифметико-логических и два устройства генерации адресов, которые используются для выполнения операций чтения/записи ОЗУ. С промежуточным попаданием в кэш, разумеется). Ядро Intel имеет 6 исполнительных устройств.
Уже по одной этой причине процессоры Intel оказываются более производительными - сравните пропускную способность 6-типолосного шоссе с шоссе имеющим только 4 полосы.
Но этого мало. Сами устройства Intel гораздо более универсальны. Поступающий поток микрокоманд может быть распределен по большому числу исполнительных устройств, независимо от того, какие именно это микрокоманды.
Исполнительные устройства "ядра" AMD гораздо более специализированы, поэтому добиться их равномерной загрузки значительно более тяжело. Результат вполне предсказуем - IPC (количество выполненных команд за такт) у процессоров AMD значительно ниже, чем у Intel. AMD пытается компенсировать недостатки дизайна своих процессоров повышенной тактовой частотой, но ресурсов для повышения тактовой частоты у неё также нет.
Вспомните, что процессоры AMD по-прежнему выпускаются по 32-нм технологии, в то время как Intel давно освоила 22-нм процесс и в следующем году планирует начать переход на 14-нм.
Но и это еще не всё. Дополнительная проблема процессоров AMD состоит в том, что их исполнительные устройства могут работать только с целочисленными операндами. Никакой плавающей арифметики нет и в помине.
Как же тогда выполняются операции с плавающей точкой? Очень просто. В модуле (который является подлинной минимальной независимой частью архитектуры процессора) помимо двух "недоядер" имеется сопроцессор для выполнения операций с плавающей точкой. Вспоминаете Intel 80486? Да-да. Мы снова вернулись в 1989-ый год.
Только в то время каждый i486 (кроме SX) имел собственный математический сопроцессор, а теперь доступ с этому сопроцессору разделяется между двумя "ядрами" модуля. Нужно ли говорить, что росту производительности это ничуть не способствует? Этот сопроцессор имеет два 128-миразрядных исполнительных устройства.
К чему я это говорю? К тому, что процессор не обеспечивает полноценной поддержки набора команд AVX.
Три исполнительных устройства процессоров Intel обеспечивают выполнение операций с 256-тиразрядными операндами. В процессоре AMD оба исполнительных устройства с плавающей точкой должны быть задействованы для выполнения команды набора AVX.
Результат - ядро Intel выполняет две AVX команды за такт, "ядро" AMD выполняет одну за два такта. Разница в четыре раза.
На сегодняшний день эта разница не так заметна - ни одна игра пока этот набор команд не поддерживает. Но ведь всё изменится со временем, правда?
Я проверял скорость работы кода некоторых benchmark'ов, компилируя их сначала с поддержкой SSE, потом AVX. Разница составляла почти два раза.
Теперь можно вернуться к вопросу, почему, говоря о ядре процессора AMD, я всё время беру это слово в кавычки.
Причина проста - подлинные ядра должны быть независимы друг от друга. Как два разных шоссе, у которых пропускная способность одного не зависит от загруженности другого.
В процессорах AMD такое требование применимо только к модулям. Модуль подобен дороге, в некоторый момент раздваивающейся на два шоссе, которые в конце снова сливаются.
В результате шоссе не являются независимыми. Если одно шоссе забито машинами, то забиты и съезды с него. И подъезды к нему. А подъезды и съезды, позволю напомнить, у двух ядер модуля общие.
Можно много еще рассказывать (одно только описание процессора производителем представляет собой более 5000 страниц документации) о таких вещах как LSD (нет-нет! Это не то, что я нанюхался. Это всего лишь loop stream detector), который появился в core 2, был существенно улучшен в core i и позволяет исполнять короткие циклы, вообще не задействуя конвейер команд.
Можно рассказать о не слишком удачной архитектуре кэш-памяти AMD, которая при формально большом объеме обладает значительно более низкой эффективностью (самый забавный момент был, когда оказавшись не в состоянии решить проблему с когерентностью кэша 1-го уровня "Бульдозера" его включили режиме "write-through", а не "write-back". Который в последний раз встречался всё в том же 80486 образца 1989 года).
Ну и так далее. Я хочу подчеркнуть, что я не против компании AMD как таковой. Напротив, я искренне хочу, чтобы они начали выпускать конкурентоспособные продукты. Во всем спектре CPU, а не в нескольких ограниченных областях. Мне отнюдь не нравится монополия Intel. Но какой смысл себя обманывать? AMD держится только за счет хорошего видеоядра и низких цен. Но эти же низкие цены вынуждают фирму сворачивать разработки новых продуктов. На исследования просто нет денег. Почему AMD именно сейчас (в конце прошлого года) купила лицензию на производство процессоров ARM архитектуры? Потому что их разработка значительно дешевле. Этот их ход как-то не внушает оптимизма...