Как вычислительная система выбирает какой набор инструкций использовать для исполнения кода? Рассмотрим архитектуру x86, ОС Windows.
Программа, написанная и скомпилированная один раз, может выполняться на процессорах с разными наборами инструкций и на разных версиях Windows.
Но как определяется, с помощью какого набора инструкций будет выполнятся эта программа? Т.е. какие исполнительные блоки задействовать.
Из статьи понял, что компилятор добавляет условия, как выполнять программу, согласно наличию наборов инструкций. Исполняемая программа проверяет перед каждым запуском эти условия и выбирает лучшие инструкции из тех, которые есть. Но этот пример для самой ОС. Для программ это работает так же?
Обязательно ли в самом коде программы задавать, что необходимо произвести работу с помощью определенных инструкций? Может ли, например, для быстрой обработки массива данных с плавающей запятой компилятор сам задать использование векторной обработки?

21 Авг 2019 в 06:48
200 +1
0
Ответы
1

В случае x86 архитектуры, компилятор обычно генерирует исполняемый код, который содержит набор инструкций, подходящий для выполнения на широком спектре процессоров x86, начиная с более старых версий и заканчивая самыми новыми. Это делается для обеспечения обратной совместимости программы с разными версиями процессоров.

Однако, для улучшения производительности в некоторых случаях компилятор может включать оптимизации, которые используют специфические инструкции для определенных процессоров. Например, можно использовать SIMD инструкции для ускорения обработки массивов данных. Такие оптимизации, как правило, включаются при задании определенных флагов компилятору или при использовании специальных директив.

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

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

20 Апр в 13:13
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир