Здравствуйте, koandrew, Вы писали:
_>>Вообще то динамическую загрузку нужного кода, в зависимости от типа процессора делали руками уже не первое десятилетие. ))) Ну а современные компиляторы позволяют решать эту задачу уже вообще автоматически. Например в GCC ты можешь указать в атрибутах функции набор нужных процессоров (например с SSE, с AVX и т.п.), под которые нужно её скомпилировать. В ответ на это компилятор сделает по одной бинарной версии функции под каждый процессор и плюс ещё собственно саму функцию (с нужным именем), представляющую собой форвард к нужной реализации. )
K>Очень херовый подход, т.к. совместимость только в обратную сторону. То есть перенести бинарь на платформу, которой не существовало в момент компиляции, невозможно.
Именно что происходит — собранное для i386 спокойно выполняется на KabyLake

а версия для SSE — на любом проце с SSE.
Другой вопрос, что подобный подход в принципе определён только в пределах одной базовой ISA.
K>Вот это и есть главная причина того, что развитие архитектуры процов буксует всеми колёсами.
Естественно, обеспечение совместимости с прошлыми решениями в какой-то мере препятствует созданию принципиально новых.
И в случае x86 это имеет, за счёт тандема Intel — Microsoft, особенно злокачественные формы.