Архитектура x86 под угрозой вымирания

7 сентябрь, 2017 - 11:53Михаил Закусило

Не верьте тем, кто говорит о стабильности x86-архитектуры, одновременно надеясь на ее умеренную эволюцию. И с эволюцией по-разному, и о стабильности можно только мечтать: о проекте Itanium ни слова, а на совместимости с x86 первой крест поставила AMD. Я не о доминирующей сегодня системе команд AMD64, она же Intel EM64T. Я о принципах старта персональной платформы, которая в момент появления по эффекту была близка к праздничному фейерверку. Но, как говорится, недолго музыка...

Все это время Intel методично развивал процессорное хозяйство — сначала рост частот, затем — рост количества ядер, каналов памяти. Сокет за сокетом компания пришла к тому, что в самых многоядерных чипах предложила концепцию Cluster-on-Die, которая оказалась не готова к стремительному росту количества процессорных ядер.

На повестке дня новое веяние — 2D-mesh интерконнект для поддержки высокопроизводительных параллельных вычислений. Проблемы с этим у процессоров общего назначения возникли не сегодня, но благодаря крипто-валютчикам с особой остротой встала актуальность и неотвратимость архитектурной трансформации. В майнинге CPU выполняют роль «официанта», неспешно принимающего и раздающего блюда, приготовлением которых заняты многочисленные квалифицированные и высокооплачиваемые «повара» — видеокарты.

Вряд ли такое положение дел устраивает Intel. Обещания сделать доступными 512-битные вычисления не упредили ситуацию, а плетутся в ее хвосте. Но, похоже, Bootable Xeon Phi становится реальностью. На наших глазах разворачивается, как сейчас модно говорить, баттл между концепцией SIMD от Intel и ее соперником от NVIDIA — моделью SIMT. Вся разница в последней литере: Single Instruction Multiple — Data или Thread? Вот в чем вопрос.

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

Другой вопрос, как это все будет греться при экстремальных нагрузках? У AMD совсем недавно между строк пресс-релизов прозвучал тезис, что можно принести в жертву производительность одного отдельно взятого ядра (речь там шла про ARM), добиваясь его ничтожно малого теплорассеивания, если количество ядер возрастет многократно — в десятки, а то и в сотни раз. Оптимизацию вычислений при таком архитектурном подходе можно делегировать компилятору, как это ранее было сделано в Itanium, хотя на этом все аналогии с ним у ARM и заканчиваются.

Избежать «тепловой смерти» (будем реалистами — отложить апокалипсис x86) можно пожертвовав чем-то не главным. Как это было при переходе к 64-битной архитектуре: тогда пришлось отказаться от операций десятичной коррекции («отряд не заметил потери бойца»). На сей раз люстрация коснется MMX-операций. При наличии 512-битных регистров тянуть за собой воз совместимости с операциями, разрядность которых в 8 раз меньше не имеет смысла. Легкий налет иронии дает отсутствие значимого ПО для More Money eXtraction. Ну, у 1С точно нет оптимизации под MMX, а будет ли под AVX512 — это не моего ума дело.

Следующим в «расстрельном списке» идут операции с дорогими мне портами ввода-вывода. В свое время появление этой архитектурной новации выгодно отличало x86 от мастодонтов типа IBM/360. Но уже на заре Pentium-эры стало понятно, что IN/OUT не поспевают за эволюцией, оставаясь рудиментом и атавизмом. Когда для инициализации системной логики Intel предложил вместо портов технологию конфигурационных регистров в пространстве памяти (memory-mapped), стало понятно, что отказ от них — вопрос времени. Мало кто задумывался, правда, о том, что логичным финалом станет исчезновение портов и операций с ними (привет, совместимость).

Есть еще две группы инструкций, с которыми мы скоро распрощаемся насовсем. Вряд ли они на слуху у широкой публики, да и сказанного вполне достаточно для короткого вывода — балласт в x86 идет за борт полным ходом. «Хьюстон, у нас проблемы!»