Расширения процессора не используются?
От: wl. Россия  
Дата: 01.04.22 19:23
Оценка:
как известно, с новыми поколениями процессоров добавляются новые расширения, причем у AMD и Intel не совсем совпадают.
Однако, я как-то не встречал софта, который не запускается, к примеру на Intel 2-го поколения под Windows.
С другой стороны, игры для Sony PS4 используют расширения AMD, которых нет в Intel.
Как это вообще разруливается? Выполняются разные куски кода в зависимости от capabilities процессора, или просто компилируют код с наиболее общим набором команд?
Re: Расширения процессора не используются?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 01.04.22 19:30
Оценка:
Здравствуйте, wl., Вы писали:

wl.>не встречал софта, который не запускается, к примеру на Intel 2-го поколения под Windows.


Переберите с десяток любых звуковых или видеософтин — встретите.
Re: Расширения процессора не используются?
От: Sharowarsheg  
Дата: 01.04.22 19:50
Оценка: +1
Здравствуйте, wl., Вы писали:

wl.>Как это вообще разруливается? Выполняются разные куски кода в зависимости от capabilities процессора,


Да. Проверяешь, что есть у процессора, и в зависимости от этого вызываешь разные функции, или с новыми инструкциями, или с эмуляцией.
Re: Расширения процессора не используются?
От: kov_serg Россия  
Дата: 01.04.22 20:02
Оценка:
Здравствуйте, wl., Вы писали:

wl.>как известно, с новыми поколениями процессоров добавляются новые расширения, причем у AMD и Intel не совсем совпадают.

wl.>Однако, я как-то не встречал софта, который не запускается, к примеру на Intel 2-го поколения под Windows.
wl.>С другой стороны, игры для Sony PS4 используют расширения AMD, которых нет в Intel.
wl.>Как это вообще разруливается?
Самый простой вариант OpenCL. Он компилирует под целевую платформу по месту.
В линухе когда собирается из исходников, посто указывают -march=native, а там если есть оптимизации под конкретное железо, то используется оно (например)

wl.> Выполняются разные куски кода в зависимости от capabilities процессора, или просто компилируют код с наиболее общим набором команд?

либо оптимизированные функции под разные архитектуры и fallback на обычные. Но если платформа 64бит, оно как бы намекает что хотя бы SSE2 будет.
Re: Расширения процессора не используются?
От: CreatorCray  
Дата: 01.04.22 22:15
Оценка:
Здравствуйте, wl., Вы писали:

wl.>Как это вообще разруливается? Выполняются разные куски кода в зависимости от capabilities процессора, или просто компилируют код с наиболее общим набором команд?


Да давно уже доступна компиляция с опциональной поддержкой фич (у того же ICC есть /Qax<keyword>, например /QaxAVX).
При старте проги по CPUID выясняется какие опции поддерживаются и выставляются внутренние флаги по которым в критичных местах есть бранч на 2 или более веток кода: generic и оптимизированные под конкретный набор фич.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Расширения процессора не используются?
От: mike_rs Россия  
Дата: 04.04.22 08:06
Оценка:
Здравствуйте, wl., Вы писали:

wl.>как известно, с новыми поколениями процессоров добавляются новые расширения, причем у AMD и Intel не совсем совпадают.

wl.>Однако, я как-то не встречал софта, который не запускается, к примеру на Intel 2-го поколения под Windows.

потому что нормальный софт содержит несколько версий кода, оптимизированный под конкретную архитектуру + одну общую. В рантайме определяется тип железа и настраивается выполнение одной из этих веток. В самом хреновом случае будет работать generic ветка, самая тормозная.
Re: Расширения процессора не используются?
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.04.22 16:31
Оценка:
Здравствуйте, wl., Вы писали:

wl.>как известно, с новыми поколениями процессоров добавляются новые расширения, причем у AMD и Intel не совсем совпадают.

wl.>Однако, я как-то не встречал софта, который не запускается, к примеру на Intel 2-го поколения под Windows.
wl.>С другой стороны, игры для Sony PS4 используют расширения AMD, которых нет в Intel.
wl.>Как это вообще разруливается? Выполняются разные куски кода в зависимости от capabilities процессора, или просто компилируют код с наиболее общим набором команд?
И то, и другое, и третье.
1. Можно компилировать в безопасное подмножество.
2. Можно вкрячивать в мелкогранулярные функции ветвления по CPUID
3. Можно собирать относительно крупные блоки кода (вплоть до целой DLL) под конкретную архитектуру, и при запуске приложения выбирать, что грузить
4. Можно вообще выполнять JIT-компиляцию, опираясь на отдельные фичи процессора (или, теоретически, на тайминги конкретных команд.

Что-то вроде п.4 выполняется в проекте ATLAS: http://math-atlas.sourceforge.net/faq.html
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.