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