Со временем вендоры [добавляли новые и новые инструкции][1] в процессоры, управляющие нашими ноутбуками, серверами, телефонами и многими другими устройствами. Добавление машинных инструкций, решающих конкретные вычислительные подзадачи, является хорошим способом улучшить производительность системы в целом, не усложняя конвейер и не пытаясь нарастить частоту до запредельных величин. Одна новая инструкция, выполняющая ту же операцию, что и несколько старых, позволяет неоднократно увеличить производительность решения заданной задачи.
Новые инструкций, такие как [Intel Software Guard Extensions (Intel SGX)][2] и [Intel Control-flow Enforcement Technology (Intel CET)][3], также способны предоставить абсолютно новую функциональность.
![][4]
Хороший вопрос заключается в том, как скоро новые инструкции, добавленные в архитектуру, достигают конечного пользователя. **Могут ли операционные системы и другие приложения воспользоваться новыми инструкциями**, принимая во внимание, что они, как правило, обеспечивают обратную совместимость и способность исполняться независимо от модели установленного процессора? Много лет назад использование новых инструкций достигалось с помощью пересборки программы под новую архитектуру и добавления проверок, предотвращающих запуск на старой аппаратуре и печатающих что-то вроде “sorry, this program is not supported on this hardware”.
Я воспользовался полноплатформенным симулятором [Wind River Simics][5], чтобы узнать, в какой степени современное программное обеспечение способно использовать новые инструкции, оставаясь при этом совместимым со старым оборудованием.
[Читать дальше →][6]
[1]:
https://en.wikipedia.org/wiki/X86_instruction_listings
[2]:
https://habrahabr.ru/company/intel/blog/312002/
[3]:
https://habrahabr.ru/company/eset/blog/303086/
[4]:
https://habrastorage.org/webt/pe/0g/bo/pe0gbovlwuiycx-kappcb5zafsg.jpeg
[5]:
https://habrahabr.ru/company/intel/blog/280838/
[6]:
https://habrahabr.ru/post/342282/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut